appium-safari-driver 2.2.1 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/.eslintrc CHANGED
@@ -1,3 +1,3 @@
1
1
  {
2
- "extends": "appium"
2
+ "extends": "@appium/eslint-config-appium"
3
3
  }
package/README.md CHANGED
@@ -1,25 +1,27 @@
1
- appium-safari-driver
1
+ Appium Safari Driver
2
2
  ====
3
3
 
4
- This is Appium driver for automating Safari on [Mac OS X](https://developer.apple.com/documentation/webkit/testing_with_webdriver_in_safari?language=objc) and iOS [since version 13](https://webkit.org/blog/9395/webdriver-is-coming-to-safari-in-ios-13/).
4
+ This is Appium driver for automating Safari on [macOS](https://developer.apple.com/documentation/webkit/testing_with_webdriver_in_safari?language=objc) and iOS [since version 13](https://webkit.org/blog/9395/webdriver-is-coming-to-safari-in-ios-13/).
5
5
  The driver only supports Safari automation using [W3C WebDriver protocol](https://www.w3.org/TR/webdriver/).
6
6
  Under the hood this driver is a wrapper/proxy over Apple's `safaridriver` binary. Check the output of `man safaridriver` command to get more details on the supported features and possible pitfalls.
7
7
 
8
8
  ## Usage
9
9
 
10
- It is mandatory to run the `safaridriver --enable` command from the Mac OS terminal and provide your administrator password before any automated session will be executed.
10
+ It is mandatory to run the `safaridriver --enable` command from the macOS terminal and provide your administrator password before any automated session will be executed.
11
11
  In order to automate Safari on real devices it is also necessary to enable Remote Automation switch in `Settings → Safari → Advanced → Remote Automation` for these particular devices.
12
12
 
13
13
  Then you need to decide where the automated test is going to be executed. Safari driver supports the following target platforms:
14
- - Mac OS (High Sierra or newer)
14
+ - macOS (High Sierra or newer)
15
15
  - iOS Simulator (iOS version 13 or newer)
16
16
  - iOS Real Device (iOS version 13 or newer)
17
17
 
18
+ Since the version 3.0.0 this driver is only compatible with Appium 2. Use the `appium driver install safari` CLI command to add it to your server dist.
19
+
18
20
  Safari driver allows to define multiple criterions for platform selection and also to fine-tune your automation session properties. This could be done via the following session capabilities:
19
21
 
20
22
  Capability Name | Description
21
23
  --- | ---
22
- platformName | safaridriver binary can only create WebDriver sessions for desktop or mobile Safari and can only run on Mac OS. Value of platformName could equal to 'Mac' or 'iOS' in order to start Safari driver session for the corresponding platform. Values of platformName are compared case-insensitively.
24
+ platformName | safaridriver binary can only create WebDriver sessions for desktop or mobile Safari and can only run on macOS. Value of platformName could equal to 'Mac' or 'iOS' in order to start Safari driver session for the corresponding platform. Values of platformName are compared case-insensitively.
23
25
  automationName | Value of automationName must equal to 'Safari' in order to start Safari driver session. Values of automationName are compared case-insensitively.
24
26
  browserName | safaridriver can only create WebDriver sessions for Safari. Any value passed to this capability will be changed to 'Safari'.
25
27
  browserVersion | safaridriver will only create a session using hosts whose Safari version matches the value of browserVersion. Browser version numbers are prefix-matched. For example, if the value of browserVersion is '12', this will allow hosts with a Safari version of '12.0.1' or '12.1'.
package/build/index.js CHANGED
@@ -11,13 +11,13 @@ Object.defineProperty(exports, "SafariDriver", {
11
11
  return _driver.default;
12
12
  }
13
13
  });
14
+ exports.default = void 0;
14
15
  Object.defineProperty(exports, "startServer", {
15
16
  enumerable: true,
16
17
  get: function () {
17
18
  return _server.startServer;
18
19
  }
19
20
  });
20
- exports.default = void 0;
21
21
 
22
22
  require("source-map-support/register");
23
23
 
@@ -7,13 +7,13 @@ exports.default = exports.commands = void 0;
7
7
 
8
8
  require("source-map-support/register");
9
9
 
10
- var _appiumSupport = require("appium-support");
10
+ var _support = require("@appium/support");
11
11
 
12
12
  const commands = {};
13
13
  exports.commands = commands;
14
14
 
15
15
  commands.findElOrEls = async function findElOrEls(strategy, selector, mult, context) {
16
- context = _appiumSupport.util.unwrapElement(context);
16
+ context = _support.util.unwrapElement(context);
17
17
  const endpoint = `/element${context ? `/${context}/element` : ''}${mult ? 's' : ''}`;
18
18
  return await this.safari.proxy.command(endpoint, 'POST', {
19
19
  using: strategy,
@@ -25,4 +25,4 @@ var _default = commands;
25
25
  exports.default = _default;require('source-map-support').install();
26
26
 
27
27
 
28
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9maW5kLmpzIl0sIm5hbWVzIjpbImNvbW1hbmRzIiwiZmluZEVsT3JFbHMiLCJzdHJhdGVneSIsInNlbGVjdG9yIiwibXVsdCIsImNvbnRleHQiLCJ1dGlsIiwidW53cmFwRWxlbWVudCIsImVuZHBvaW50Iiwic2FmYXJpIiwicHJveHkiLCJjb21tYW5kIiwidXNpbmciLCJ2YWx1ZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBR0EsTUFBTUEsUUFBUSxHQUFHLEVBQWpCOzs7QUFHQUEsUUFBUSxDQUFDQyxXQUFULEdBQXVCLGVBQWVBLFdBQWYsQ0FBNEJDLFFBQTVCLEVBQXNDQyxRQUF0QyxFQUFnREMsSUFBaEQsRUFBc0RDLE9BQXRELEVBQStEO0FBQ3BGQSxFQUFBQSxPQUFPLEdBQUdDLG9CQUFLQyxhQUFMLENBQW1CRixPQUFuQixDQUFWO0FBQ0EsUUFBTUcsUUFBUSxHQUFJLFdBQVVILE9BQU8sR0FBSSxJQUFHQSxPQUFRLFVBQWYsR0FBMkIsRUFBRyxHQUFFRCxJQUFJLEdBQUcsR0FBSCxHQUFTLEVBQUcsRUFBbkY7QUFFQSxTQUFPLE1BQU0sS0FBS0ssTUFBTCxDQUFZQyxLQUFaLENBQWtCQyxPQUFsQixDQUEwQkgsUUFBMUIsRUFBb0MsTUFBcEMsRUFBNEM7QUFDdkRJLElBQUFBLEtBQUssRUFBRVYsUUFEZ0Q7QUFFdkRXLElBQUFBLEtBQUssRUFBRVY7QUFGZ0QsR0FBNUMsQ0FBYjtBQUlELENBUkQ7O2VBWWVILFEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1dGlsIH0gZnJvbSAnYXBwaXVtLXN1cHBvcnQnO1xuXG5cbmNvbnN0IGNvbW1hbmRzID0ge307XG5cbi8vIFRoaXMgaXMgbmVlZGVkIHRvIG1ha2UgbG9va3VwIGJ5IGltYWdlIHdvcmtpbmdcbmNvbW1hbmRzLmZpbmRFbE9yRWxzID0gYXN5bmMgZnVuY3Rpb24gZmluZEVsT3JFbHMgKHN0cmF0ZWd5LCBzZWxlY3RvciwgbXVsdCwgY29udGV4dCkge1xuICBjb250ZXh0ID0gdXRpbC51bndyYXBFbGVtZW50KGNvbnRleHQpO1xuICBjb25zdCBlbmRwb2ludCA9IGAvZWxlbWVudCR7Y29udGV4dCA/IGAvJHtjb250ZXh0fS9lbGVtZW50YCA6ICcnfSR7bXVsdCA/ICdzJyA6ICcnfWA7XG5cbiAgcmV0dXJuIGF3YWl0IHRoaXMuc2FmYXJpLnByb3h5LmNvbW1hbmQoZW5kcG9pbnQsICdQT1NUJywge1xuICAgIHVzaW5nOiBzdHJhdGVneSxcbiAgICB2YWx1ZTogc2VsZWN0b3IsXG4gIH0pO1xufTtcblxuXG5leHBvcnQgeyBjb21tYW5kcyB9O1xuZXhwb3J0IGRlZmF1bHQgY29tbWFuZHM7XG4iXSwiZmlsZSI6ImxpYi9jb21tYW5kcy9maW5kLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=
28
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9maW5kLmpzIl0sIm5hbWVzIjpbImNvbW1hbmRzIiwiZmluZEVsT3JFbHMiLCJzdHJhdGVneSIsInNlbGVjdG9yIiwibXVsdCIsImNvbnRleHQiLCJ1dGlsIiwidW53cmFwRWxlbWVudCIsImVuZHBvaW50Iiwic2FmYXJpIiwicHJveHkiLCJjb21tYW5kIiwidXNpbmciLCJ2YWx1ZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBR0EsTUFBTUEsUUFBUSxHQUFHLEVBQWpCOzs7QUFHQUEsUUFBUSxDQUFDQyxXQUFULEdBQXVCLGVBQWVBLFdBQWYsQ0FBNEJDLFFBQTVCLEVBQXNDQyxRQUF0QyxFQUFnREMsSUFBaEQsRUFBc0RDLE9BQXRELEVBQStEO0FBQ3BGQSxFQUFBQSxPQUFPLEdBQUdDLGNBQUtDLGFBQUwsQ0FBbUJGLE9BQW5CLENBQVY7QUFDQSxRQUFNRyxRQUFRLEdBQUksV0FBVUgsT0FBTyxHQUFJLElBQUdBLE9BQVEsVUFBZixHQUEyQixFQUFHLEdBQUVELElBQUksR0FBRyxHQUFILEdBQVMsRUFBRyxFQUFuRjtBQUVBLFNBQU8sTUFBTSxLQUFLSyxNQUFMLENBQVlDLEtBQVosQ0FBa0JDLE9BQWxCLENBQTBCSCxRQUExQixFQUFvQyxNQUFwQyxFQUE0QztBQUN2REksSUFBQUEsS0FBSyxFQUFFVixRQURnRDtBQUV2RFcsSUFBQUEsS0FBSyxFQUFFVjtBQUZnRCxHQUE1QyxDQUFiO0FBSUQsQ0FSRDs7ZUFZZUgsUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHV0aWwgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuXG5cbmNvbnN0IGNvbW1hbmRzID0ge307XG5cbi8vIFRoaXMgaXMgbmVlZGVkIHRvIG1ha2UgbG9va3VwIGJ5IGltYWdlIHdvcmtpbmdcbmNvbW1hbmRzLmZpbmRFbE9yRWxzID0gYXN5bmMgZnVuY3Rpb24gZmluZEVsT3JFbHMgKHN0cmF0ZWd5LCBzZWxlY3RvciwgbXVsdCwgY29udGV4dCkge1xuICBjb250ZXh0ID0gdXRpbC51bndyYXBFbGVtZW50KGNvbnRleHQpO1xuICBjb25zdCBlbmRwb2ludCA9IGAvZWxlbWVudCR7Y29udGV4dCA/IGAvJHtjb250ZXh0fS9lbGVtZW50YCA6ICcnfSR7bXVsdCA/ICdzJyA6ICcnfWA7XG5cbiAgcmV0dXJuIGF3YWl0IHRoaXMuc2FmYXJpLnByb3h5LmNvbW1hbmQoZW5kcG9pbnQsICdQT1NUJywge1xuICAgIHVzaW5nOiBzdHJhdGVneSxcbiAgICB2YWx1ZTogc2VsZWN0b3IsXG4gIH0pO1xufTtcblxuXG5leHBvcnQgeyBjb21tYW5kcyB9O1xuZXhwb3J0IGRlZmF1bHQgY29tbWFuZHM7XG4iXSwiZmlsZSI6ImxpYi9jb21tYW5kcy9maW5kLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=
@@ -11,7 +11,7 @@ require("source-map-support/register");
11
11
 
12
12
  var _lodash = _interopRequireDefault(require("lodash"));
13
13
 
14
- var _appiumSupport = require("appium-support");
14
+ var _support = require("@appium/support");
15
15
 
16
16
  var _asyncbox = require("asyncbox");
17
17
 
@@ -30,11 +30,11 @@ async function uploadRecordedMedia(localFile, remotePath = null, uploadOptions =
30
30
  if (_lodash.default.isEmpty(remotePath)) {
31
31
  const {
32
32
  size
33
- } = await _appiumSupport.fs.stat(localFile);
33
+ } = await _support.fs.stat(localFile);
34
34
 
35
- _logger.default.debug(`The size of the resulting screen recording is ${_appiumSupport.util.toReadableSizeString(size)}`);
35
+ _logger.default.debug(`The size of the resulting screen recording is ${_support.util.toReadableSizeString(size)}`);
36
36
 
37
- return (await _appiumSupport.util.toInMemoryBase64(localFile)).toString();
37
+ return (await _support.util.toInMemoryBase64(localFile)).toString();
38
38
  }
39
39
 
40
40
  const {
@@ -59,7 +59,7 @@ async function uploadRecordedMedia(localFile, remotePath = null, uploadOptions =
59
59
  };
60
60
  }
61
61
 
62
- await _appiumSupport.net.uploadFile(localFile, remotePath, options);
62
+ await _support.net.uploadFile(localFile, remotePath, options);
63
63
  return '';
64
64
  }
65
65
 
@@ -67,7 +67,7 @@ const VIDEO_FILES = new Set();
67
67
  process.on('exit', () => {
68
68
  for (const videoFile of VIDEO_FILES) {
69
69
  try {
70
- _appiumSupport.fs.rimrafSync(videoFile);
70
+ _support.fs.rimrafSync(videoFile);
71
71
  } catch (ign) {}
72
72
  }
73
73
  });
@@ -85,7 +85,7 @@ class ScreenRecorder {
85
85
  }
86
86
 
87
87
  async getVideoPath() {
88
- if (await _appiumSupport.fs.exists(this._videoPath)) {
88
+ if (await _support.fs.exists(this._videoPath)) {
89
89
  VIDEO_FILES.add(this._videoPath);
90
90
  return this._videoPath;
91
91
  }
@@ -96,7 +96,7 @@ class ScreenRecorder {
96
96
  get isRunning() {
97
97
  var _this$_process;
98
98
 
99
- return !!((_this$_process = this._process) === null || _this$_process === void 0 ? void 0 : _this$_process.isRunning);
99
+ return !!((_this$_process = this._process) !== null && _this$_process !== void 0 && _this$_process.isRunning);
100
100
  }
101
101
 
102
102
  async _enforceTermination() {
@@ -112,7 +112,7 @@ class ScreenRecorder {
112
112
  const videoPath = await this.getVideoPath();
113
113
 
114
114
  if (videoPath) {
115
- await _appiumSupport.fs.rimraf(videoPath);
115
+ await _support.fs.rimraf(videoPath);
116
116
  VIDEO_FILES.delete(videoPath);
117
117
  }
118
118
 
@@ -140,7 +140,7 @@ class ScreenRecorder {
140
140
  asynchronous: true
141
141
  });
142
142
 
143
- _logger.default.debug(`Starting video recording with arguments: ${_appiumSupport.util.quote(args)}`);
143
+ _logger.default.debug(`Starting video recording with arguments: ${_support.util.quote(args)}`);
144
144
 
145
145
  this._process.on('output', (stdout, stderr) => {
146
146
  const line = _lodash.default.trim(stdout || stderr);
@@ -262,7 +262,7 @@ commands.startRecordingScreen = async function startRecordingScreen(options = {}
262
262
  forceRestart = true
263
263
  } = options;
264
264
 
265
- if ((_this$_screenRecorder = this._screenRecorder) === null || _this$_screenRecorder === void 0 ? void 0 : _this$_screenRecorder.isRunning) {
265
+ if ((_this$_screenRecorder = this._screenRecorder) !== null && _this$_screenRecorder !== void 0 && _this$_screenRecorder.isRunning) {
266
266
  _logger.default.info('The screen recording is already running');
267
267
 
268
268
  if (!forceRestart) {
@@ -283,8 +283,8 @@ commands.startRecordingScreen = async function startRecordingScreen(options = {}
283
283
  throw new Error('Cannot determine Simulator UDID to record the video from. ' + 'Double check your session capabilities');
284
284
  }
285
285
 
286
- const videoPath = await _appiumSupport.tempDir.path({
287
- prefix: _appiumSupport.util.uuidV4().substring(0, 8),
286
+ const videoPath = await _support.tempDir.path({
287
+ prefix: _support.util.uuidV4().substring(0, 8),
288
288
  suffix: DEFAULT_EXT
289
289
  });
290
290
  this._screenRecorder = new ScreenRecorder(udid, videoPath, {
@@ -326,4 +326,4 @@ var _default = commands;
326
326
  exports.default = _default;require('source-map-support').install();
327
327
 
328
328
 
329
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9yZWNvcmQtc2NyZWVuLmpzIl0sIm5hbWVzIjpbImNvbW1hbmRzIiwiU1RBUlRVUF9JTlRFUlZBTF9NUyIsIlNUQVJUVVBfVElNRU9VVF9NUyIsIkRFRkFVTFRfVElNRV9MSU1JVF9NUyIsIlBST0NFU1NfU0hVVERPV05fVElNRU9VVF9NUyIsIkRFRkFVTFRfRVhUIiwidXBsb2FkUmVjb3JkZWRNZWRpYSIsImxvY2FsRmlsZSIsInJlbW90ZVBhdGgiLCJ1cGxvYWRPcHRpb25zIiwiXyIsImlzRW1wdHkiLCJzaXplIiwiZnMiLCJzdGF0IiwibG9nIiwiZGVidWciLCJ1dGlsIiwidG9SZWFkYWJsZVNpemVTdHJpbmciLCJ0b0luTWVtb3J5QmFzZTY0IiwidG9TdHJpbmciLCJ1c2VyIiwicGFzcyIsIm1ldGhvZCIsImhlYWRlcnMiLCJmaWxlRmllbGROYW1lIiwiZm9ybUZpZWxkcyIsIm9wdGlvbnMiLCJhdXRoIiwibmV0IiwidXBsb2FkRmlsZSIsIlZJREVPX0ZJTEVTIiwiU2V0IiwicHJvY2VzcyIsIm9uIiwidmlkZW9GaWxlIiwicmltcmFmU3luYyIsImlnbiIsIlNjcmVlblJlY29yZGVyIiwiY29uc3RydWN0b3IiLCJ1ZGlkIiwidmlkZW9QYXRoIiwib3B0cyIsIl9wcm9jZXNzIiwiX3VkaWQiLCJfdmlkZW9QYXRoIiwiX2NvZGVjIiwiY29kZWMiLCJfZGlzcGxheSIsImRpc3BsYXkiLCJfbWFzayIsIm1hc2siLCJfdGltZUxpbWl0TXMiLCJ0aW1lTGltaXQiLCJfdGltZXIiLCJnZXRWaWRlb1BhdGgiLCJleGlzdHMiLCJhZGQiLCJpc1J1bm5pbmciLCJfZW5mb3JjZVRlcm1pbmF0aW9uIiwic3RvcCIsInJpbXJhZiIsImRlbGV0ZSIsInN0YXJ0IiwiYXJncyIsInB1c2giLCJTaW1jdGwiLCJleGVjIiwiYXN5bmNocm9ub3VzIiwicXVvdGUiLCJzdGRvdXQiLCJzdGRlcnIiLCJsaW5lIiwidHJpbSIsInN1YnN0cmluZyIsIm9uY2UiLCJjb2RlIiwic2lnbmFsIiwid2FybiIsIkVycm9yIiwid2FpdE1zIiwiaW50ZXJ2YWxNcyIsImUiLCJlcnJvckFuZFRocm93Iiwic2V0VGltZW91dCIsImVycm9yIiwiaW5mbyIsImZvcmNlIiwiY2xlYXJUaW1lb3V0IiwiZXh0cmFjdFNpbXVsYXRvclVkaWQiLCJjYXBzIiwiYWxsRGV2aWNlcyIsImZsYXRNYXAiLCJ2YWx1ZXMiLCJnZXREZXZpY2VzIiwibmFtZSIsInN0YXRlIiwic2RrIiwidG9Mb3dlciIsInN0YXJ0UmVjb3JkaW5nU2NyZWVuIiwiZm9yY2VSZXN0YXJ0IiwiX3NjcmVlblJlY29yZGVyIiwidGVtcERpciIsInBhdGgiLCJwcmVmaXgiLCJ1dWlkVjQiLCJzdWZmaXgiLCJwYXJzZUludCIsInN0b3BSZWNvcmRpbmdTY3JlZW4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0EsTUFBTUEsUUFBUSxHQUFHLEVBQWpCO0FBRUEsTUFBTUMsbUJBQW1CLEdBQUcsR0FBNUI7QUFDQSxNQUFNQyxrQkFBa0IsR0FBRyxLQUFLLElBQWhDO0FBQ0EsTUFBTUMscUJBQXFCLEdBQUcsS0FBSyxFQUFMLEdBQVUsSUFBeEM7QUFDQSxNQUFNQywyQkFBMkIsR0FBRyxLQUFLLElBQXpDO0FBQ0EsTUFBTUMsV0FBVyxHQUFHLE1BQXBCOztBQUdBLGVBQWVDLG1CQUFmLENBQW9DQyxTQUFwQyxFQUErQ0MsVUFBVSxHQUFHLElBQTVELEVBQWtFQyxhQUFhLEdBQUcsRUFBbEYsRUFBc0Y7QUFDcEYsTUFBSUMsZ0JBQUVDLE9BQUYsQ0FBVUgsVUFBVixDQUFKLEVBQTJCO0FBQ3pCLFVBQU07QUFBQ0ksTUFBQUE7QUFBRCxRQUFTLE1BQU1DLGtCQUFHQyxJQUFILENBQVFQLFNBQVIsQ0FBckI7O0FBQ0FRLG9CQUFJQyxLQUFKLENBQVcsaURBQWdEQyxvQkFBS0Msb0JBQUwsQ0FBMEJOLElBQTFCLENBQWdDLEVBQTNGOztBQUNBLFdBQU8sQ0FBQyxNQUFN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Q0FBVSxxQ0FBVjs7QUFDQSxRQUFNeUIsU0FBUyxHQUFHLE1BQU0sS0FBSzRELGVBQUwsQ0FBcUJ6QyxJQUFyQixFQUF4Qjs7QUFDQSxNQUFJLENBQUNuQixTQUFMLEVBQWdCO0FBQ2QxQixvQkFBSXVFLElBQUosQ0FBUyxtREFBVDs7QUFDQSxXQUFPLEVBQVA7QUFDRDs7QUFDRCxTQUFPLE1BQU1oRixtQkFBbUIsQ0FBQ21DLFNBQUQsRUFBWWQsT0FBTyxDQUFDbkIsVUFBcEIsRUFBZ0NtQixPQUFoQyxDQUFoQztBQUNELENBYkQ7O2VBZWUzQixRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IHV0aWwsIGZzLCBuZXQsIHRlbXBEaXIgfSBmcm9tICdhcHBpdW0tc3VwcG9ydCc7XG5pbXBvcnQgeyB3YWl0Rm9yQ29uZGl0aW9uIH0gZnJvbSAnYXN5bmNib3gnO1xuaW1wb3J0IGxvZyBmcm9tICcuLi9sb2dnZXInO1xuaW1wb3J0IFNpbWN0bCBmcm9tICdub2RlLXNpbWN0bCc7XG5cblxuY29uc3QgY29tbWFuZHMgPSB7fTtcblxuY29uc3QgU1RBUlRVUF9JTlRFUlZBTF9NUyA9IDMwMDtcbmNvbnN0IFNUQVJUVVBfVElNRU9VVF9NUyA9IDEwICogMTAwMDtcbmNvbnN0IERFRkFVTFRfVElNRV9MSU1JVF9NUyA9IDYwICogMTAgKiAxMDAwOyAvLyAxMCBtaW51dGVzXG5jb25zdCBQUk9DRVNTX1NIVVRET1dOX1RJTUVPVVRfTVMgPSAxMCAqIDEwMDA7XG5jb25zdCBERUZBVUxUX0VYVCA9ICcubXA0JztcblxuXG5hc3luYyBmdW5jdGlvbiB1cGxvYWRSZWNvcmRlZE1lZGlhIChsb2NhbEZpbGUsIHJlbW90ZVBhdGggPSBudWxsLCB1cGxvYWRPcHRpb25zID0ge30pIHtcbiAgaWYgKF8uaXNFbXB0eShyZW1vdGVQYXRoKSkge1xuICAgIGNvbnN0IHtzaXplfSA9IGF3YWl0IGZzLnN0YXQobG9jYWxGaWxlKTtcbiAgICBsb2cuZGVidWcoYFRoZSBzaXplIG9mIHRoZSByZXN1bHRpbmcgc2NyZWVuIHJlY29yZGluZyBpcyAke3V0aWwudG9SZWFkYWJsZVNpemVTdHJpbmcoc2l6ZSl9YCk7XG4gICAgcmV0dXJuIChhd2FpdCB1dGlsLnRvSW5NZW1vcnlCYXNlNjQobG9jYWxGaWxlKSkudG9TdHJpbmcoKTtcbiAgfVxuXG4gIGNvbnN0IHt1c2VyLCBwYXNzLCBtZXRob2QsIGhlYWRlcnMsIGZpbGVGaWVsZE5hbWUsIGZvcm1GaWVsZHN9ID0gdXBsb2FkT3B0aW9ucztcbiAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICBtZXRob2Q6IG1ldGhvZCB8fCAnUFVUJyxcbiAgICBoZWFkZXJzLFxuICAgIGZpbGVGaWVsZE5hbWUsXG4gICAgZm9ybUZpZWxkcyxcbiAgfTtcbiAgaWYgKHVzZXIgJiYgcGFzcykge1xuICAgIG9wdGlvbnMuYXV0aCA9IHt1c2VyLCBwYXNzfTtcbiAgfVxuICBhd2FpdCBuZXQudXBsb2FkRmlsZShsb2NhbEZpbGUsIHJlbW90ZVBhdGgsIG9wdGlvbnMpO1xuICByZXR1cm4gJyc7XG59XG5cbmNvbnN0IFZJREVPX0ZJTEVTID0gbmV3IFNldCgpO1xucHJvY2Vzcy5vbignZXhpdCcsICgpID0+IHtcbiAgZm9yIChjb25zdCB2aWRlb0ZpbGUgb2YgVklERU9fRklMRVMpIHtcbiAgICB0cnkge1xuICAgICAgZnMucmltcmFmU3luYyh2aWRlb0ZpbGUpO1xuICAgIH0gY2F0Y2ggKGlnbikge31cbiAgfVxufSk7XG5cbmNsYXNzIFNjcmVlblJlY29yZGVyIHtcbiAgY29uc3RydWN0b3IgKHVkaWQsIHZpZGVvUGF0aCwgb3B0cyA9IHt9KSB7XG4gICAgdGhpcy5fcHJvY2VzcyA9IG51bGw7XG4gICAgdGhpcy5fdWRpZCA9IHVkaWQ7XG4gICAgdGhpcy5fdmlkZW9QYXRoID0gdmlkZW9QYXRoO1xuICAgIHRoaXMuX2NvZGVjID0gb3B0cy5jb2RlYztcbiAgICB0aGlzLl9kaXNwbGF5ID0gb3B0cy5kaXNwbGF5O1xuICAgIHRoaXMuX21hc2sgPSBvcHRzLm1hc2s7XG4gICAgdGhpcy5fdGltZUxpbWl0TXMgPSBvcHRzLnRpbWVMaW1pdCA+IDAgPyBvcHRzLnRpbWVMaW1pdCAqIDEwMDAgOiBERUZBVUxUX1RJTUVfTElNSVRfTVM7XG4gICAgdGhpcy5fdGltZXIgPSBudWxsO1xuICB9XG5cbiAgYXN5bmMgZ2V0VmlkZW9QYXRoICgpIHtcbiAgICBpZiAoYXdhaXQgZnMuZXhpc3RzKHRoaXMuX3ZpZGVvUGF0aCkpIHtcbiAgICAgIFZJREVPX0ZJTEVTLmFkZCh0aGlzLl92aWRlb1BhdGgpO1xuICAgICAgcmV0dXJuIHRoaXMuX3ZpZGVvUGF0aDtcbiAgICB9XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgZ2V0IGlzUnVubmluZyAoKSB7XG4gICAgcmV0dXJuICEhKHRoaXMuX3Byb2Nlc3M/LmlzUnVubmluZyk7XG4gIH1cblxuICBhc3luYyBfZW5mb3JjZVRlcm1pbmF0aW9uICgpIHtcbiAgICBpZiAodGhpcy5pc1J1bm5pbmcpIHtcbiAgICAgIGxvZy5kZWJ1ZygnRm9yY2Utc3RvcHBpbmcgdGhlIGN1cnJlbnRseSBydW5uaW5nIHZpZGVvIHJlY29yZGluZycpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgdGhpcy5fcHJvY2Vzcy5zdG9wKCdTSUdLSUxMJyk7XG4gICAgICB9IGNhdGNoIChpZ24pIHt9XG4gICAgfVxuICAgIHRoaXMuX3Byb2Nlc3MgPSBudWxsO1xuICAgIGNvbnN0IHZpZGVvUGF0aCA9IGF3YWl0IHRoaXMuZ2V0VmlkZW9QYXRoKCk7XG4gICAgaWYgKHZpZGVvUGF0aCkge1xuICAgICAgYXdhaXQgZnMucmltcmFmKHZpZGVvUGF0aCk7XG4gICAgICBWSURFT19GSUxFUy5kZWxldGUodmlkZW9QYXRoKTtcbiAgICB9XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgYXN5bmMgc3RhcnQgKCkge1xuICAgIGNvbnN0IGFyZ3MgPSBbXG4gICAgICB0aGlzLl91ZGlkLCAncmVjb3JkVmlkZW8nXG4gICAgXTtcbiAgICBpZiAodGhpcy5fZGlzcGxheSkge1xuICAgICAgYXJncy5wdXNoKCctLWRpc3BsYXknLCB0aGlzLl9kaXNwbGF5KTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX2NvZGVjKSB7XG4gICAgICBhcmdzLnB1c2goJy0tY29kZWMnLCB0aGlzLl9jb2RlYyk7XG4gICAgfVxuICAgIGlmICh0aGlzLl9tYXNrKSB7XG4gICAgICBhcmdzLnB1c2goJy0tbWFzaycsIHRoaXMuX21hc2spO1xuICAgIH1cbiAgICBhcmdzLnB1c2goJy0tZm9yY2UnLCB0aGlzLl92aWRlb1BhdGgpO1xuICAgIHRoaXMuX3Byb2Nlc3MgPSBhd2FpdCBuZXcgU2ltY3RsKCkuZXhlYygnaW8nLCB7XG4gICAgICBhcmdzLFxuICAgICAgYXN5bmNocm9ub3VzOiB0cnVlLFxuICAgIH0pO1xuICAgIGxvZy5kZWJ1ZyhgU3RhcnRpbmcgdmlkZW8gcmVjb3JkaW5nIHdpdGggYXJndW1lbnRzOiAke3V0aWwucXVvdGUoYXJncyl9YCk7XG4gICAgdGhpcy5fcHJvY2Vzcy5vbignb3V0cHV0JywgKHN0ZG91dCwgc3RkZXJyKSA9PiB7XG4gICAgICBjb25zdCBsaW5lID0gXy50cmltKHN0ZG91dCB8fCBzdGRlcnIpO1xuICAgICAgaWYgKGxpbmUpIHtcbiAgICAgICAgbG9nLmRlYnVnKGBbcmVjb3JkVmlkZW9AJHt0aGlzLl91ZGlkLnN1YnN0cmluZygwLCA4KX1dICR7bGluZX1gKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLl9wcm9jZXNzLm9uY2UoJ2V4aXQnLCBhc3luYyAoY29kZSwgc2lnbmFsKSA9PiB7XG4gICAgICB0aGlzLl9wcm9jZXNzID0gbnVsbDtcbiAgICAgIGlmIChjb2RlID09PSAwKSB7XG4gICAgICAgIGxvZy5kZWJ1ZygnU2NyZWVuIHJlY29yZGluZyBleGl0ZWQgd2l0aG91dCBlcnJvcnMnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGF3YWl0IHRoaXMuX2VuZm9yY2VUZXJtaW5hdGlvbigpO1xuICAgICAgICBsb2cud2FybihgU2NyZWVuIHJlY29yZGluZyBleGl0ZWQgd2l0aCBlcnJvciBjb2RlICR7Y29kZX0sIHNpZ25hbCAke3NpZ25hbH1gKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBhd2FpdCB0aGlzLl9wcm9jZXNzLnN0YXJ0KDApO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB3YWl0Rm9yQ29uZGl0aW9uKGFzeW5jICgpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLmlzUnVubmluZykge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcigpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAhIShhd2FpdCB0aGlzLmdldFZpZGVvUGF0aCgpKTtcbiAgICAgIH0sIHtcbiAgICAgICAgd2FpdE1zOiBTVEFSVFVQX1RJTUVPVVRfTVMsXG4gICAgICAgIGludGVydmFsTXM6IFNUQVJUVVBfSU5URVJWQUxfTVMsXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBhd2FpdCB0aGlzLl9lbmZvcmNlVGVybWluYXRpb24oKTtcbiAgICAgIGxvZy5lcnJvckFuZFRocm93KGBUaGUgZXhwZWN0ZWQgc2NyZWVuIHJlY29yZCBmaWxlICcke3RoaXMuX3ZpZGVvUGF0aH0nIGRvZXMgbm90IGV4aXN0IGFmdGVyICR7U1RBUlRVUF9USU1FT1VUX01TfW1zLiBgICtcbiAgICAgICAgYENoZWNrIHRoZSBzZXJ2ZXIgbG9nIGZvciBtb3JlIGRldGFpbHNgKTtcbiAgICB9XG4gICAgdGhpcy5fdGltZXIgPSBzZXRUaW1lb3V0KGFzeW5jICgpID0+IHtcbiAgICAgIGlmICh0aGlzLmlzUnVubmluZykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IHRoaXMuc3RvcCgpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgbG9nLmVycm9yKGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwgdGhpcy5fdGltZUxpbWl0TXMpO1xuICAgIGxvZy5pbmZvKGBUaGUgdmlkZW8gcmVjb3JkaW5nIGhhcyBzdGFydGVkLiBXaWxsIHRpbWVvdXQgaW4gJHt0aGlzLl90aW1lTGltaXRNc31tc2ApO1xuICB9XG5cbiAgYXN5bmMgc3RvcCAoZm9yY2UgPSBmYWxzZSkge1xuICAgIGlmICh0aGlzLl90aW1lcikge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX3RpbWVyKTtcbiAgICAgIHRoaXMuX3RpbWVyID0gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoZm9yY2UpIHtcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLl9lbmZvcmNlVGVybWluYXRpb24oKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuaXNSdW5uaW5nKSB7XG4gICAgICBsb2cuZGVidWcoJ1NjcmVlbiByZWNvcmRpbmcgaXMgbm90IHJ1bm5pbmcuIFJldHVybmluZyB0aGUgcmVjZW50bHkgcmVjb3JkZWQgdmlkZW8nKTtcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLmdldFZpZGVvUGF0aCgpO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLl9wcm9jZXNzLnN0b3AoJ1NJR0lOVCcsIFBST0NFU1NfU0hVVERPV05fVElNRU9VVF9NUyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgYXdhaXQgdGhpcy5fZW5mb3JjZVRlcm1pbmF0aW9uKCk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFNjcmVlbiByZWNvcmRpbmcgaGFzIGZhaWxlZCB0byBzdG9wIGFmdGVyICR7UFJPQ0VTU19TSFVURE9XTl9USU1FT1VUX01TfW1zYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0VmlkZW9QYXRoKCk7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gZXh0cmFjdFNpbXVsYXRvclVkaWQgKGNhcHMpIHtcbiAgaWYgKGNhcHNbJ3NhZmFyaTp1c2VTaW11bGF0b3InXSA9PT0gZmFsc2UpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IGFsbERldmljZXMgPSBfLmZsYXRNYXAoXy52YWx1ZXMoYXdhaXQgbmV3IFNpbWN0bCgpLmdldERldmljZXMobnVsbCwgJ2lPUycpKSk7XG4gIGZvciAoY29uc3Qge25hbWUsIHVkaWQsIHN0YXRlLCBzZGt9IG9mIGFsbERldmljZXMpIHtcbiAgICBpZiAoc3RhdGUgIT09ICdCb290ZWQnKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoXy50b0xvd2VyKGNhcHNbJ3NhZmFyaTpkZXZpY2VVRElEJ10pID09PSBfLnRvTG93ZXIodWRpZCkpIHtcbiAgICAgIHJldHVybiB1ZGlkO1xuICAgIH1cbiAgICBpZiAoXy50b0xvd2VyKGNhcHNbJ3NhZmFyaTpkZXZpY2VOYW1lJ10pID09PSBfLnRvTG93ZXIobmFtZSkgJiZcbiAgICAgIChjYXBzWydzYWZhcmk6cGxhdGZvcm1WZXJzaW9uJ10gJiYgY2Fwc1snc2FmYXJpOnBsYXRmb3JtVmVyc2lvbiddID09PSBzZGtcbiAgICAgICAgfHwgIWNhcHNbJ3NhZmFyaTpwbGF0Zm9ybVZlcnNpb24nXSkpIHtcbiAgICAgIHJldHVybiB1ZGlkO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gU3RhcnRSZWNvcmRpbmdPcHRpb25zXG4gKlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBjb2RlYyBbaGV2Y10gLSBTcGVjaWZpZXMgdGhlIGNvZGVjIHR5cGU6IFwiaDI2NFwiIG9yIFwiaGV2Y1wiXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGRpc3BsYXkgW2ludGVybmFsXSAtIFN1cHBvcnRzIFwiaW50ZXJuYWxcIiBvciBcImV4dGVybmFsXCIuIERlZmF1bHQgaXMgXCJpbnRlcm5hbFwiXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IG1hc2sgLSBGb3Igbm9uLXJlY3Rhbmd1bGFyIGRpc3BsYXlzLCBoYW5kbGUgdGhlIG1hc2sgYnkgcG9saWN5OlxuICogLSBpZ25vcmVkOiBUaGUgbWFzayBpcyBpZ25vcmVkIGFuZCB0aGUgdW5tYXNrZWQgZnJhbWVidWZmZXIgaXMgc2F2ZWQuXG4gKiAtIGFscGhhOiBOb3Qgc3VwcG9ydGVkLCBidXQgcmV0YWluZWQgZm9yIGNvbXBhdGliaWxpdHk7IHRoZSBtYXNrIGlzIHJlbmRlcmVkIGJsYWNrLlxuICogLSBibGFjazogVGhlIG1hc2sgaXMgcmVuZGVyZWQgYmxhY2suXG4gKiBAcHJvcGVydHkge3N0cmluZ3xudW1iZXJ9IHRpbWVMaW1pdCBbNjAwXSAtIFRoZSBtYXhpbXVtIHJlY29yZGluZyB0aW1lLCBpbiBzZWNvbmRzLiBUaGUgZGVmYXVsdFxuICogdmFsdWUgaXMgNjAwIHNlY29uZHMgKDEwIG1pbnV0ZXMpLlxuICogQHByb3BlcnR5IHtib29sZWFufSBmb3JjZVJlc3RhcnQgW3RydWVdIC0gV2hldGhlciB0byBpZ25vcmUgdGhlIGNhbGwgaWYgYSBzY3JlZW4gcmVjb3JkaW5nIGlzIGN1cnJlbnRseSBydW5uaW5nXG4gKiAoYGZhbHNlYCkgb3IgdG8gc3RhcnQgYSBuZXcgcmVjb3JkaW5nIGltbWVkaWF0ZWx5IGFuZCB0ZXJtaW5hdGUgdGhlIGV4aXN0aW5nIG9uZSBpZiBydW5uaW5nIChgdHJ1ZWApLlxuICovXG5cbi8qKlxuICogUmVjb3JkIHRoZSBTaW11bGF0b3IncyBkaXNwbGF5IGluIGJhY2tncm91bmQgd2hpbGUgdGhlIGF1dG9tYXRlZCB0ZXN0IGlzIHJ1bm5pbmcuXG4gKiBUaGlzIG1ldGhvZCB1c2VzIGB4Y3J1biBzaW1jdGwgaW8gcmVjb3JkVmlkZW9gIGhlbHBlciB1bmRlciB0aGUgaG9vZC5cbiAqIENoZWNrIHRoZSBvdXRwdXQgb2YgYHhjcnVuIHNpbWN0bCBpb2AgY29tbWFuZCBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIEBwYXJhbSB7P1N0YXJ0UmVjb3JkaW5nT3B0aW9uc30gb3B0aW9ucyAtIFRoZSBhdmFpbGFibGUgb3B0aW9ucy5cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiBzY3JlZW4gcmVjb3JkaW5nIGhhcyBmYWlsZWQgdG8gc3RhcnQgb3IgaXMgbm90IHN1cHBvcnRlZCBmb3IgdGhlIGRlc3RpbmF0aW9uIGRldmljZS5cbiAqL1xuY29tbWFuZHMuc3RhcnRSZWNvcmRpbmdTY3JlZW4gPSBhc3luYyBmdW5jdGlvbiBzdGFydFJlY29yZGluZ1NjcmVlbiAob3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICB0aW1lTGltaXQsXG4gICAgY29kZWMsXG4gICAgZGlzcGxheSxcbiAgICBtYXNrLFxuICAgIGZvcmNlUmVzdGFydCA9IHRydWUsXG4gIH0gPSBvcHRpb25zO1xuICBpZiAodGhpcy5fc2NyZWVuUmVjb3JkZXI/LmlzUnVubmluZykge1xuICAgIGxvZy5pbmZvKCdUaGUgc2NyZWVuIHJlY29yZGluZyBpcyBhbHJlYWR5IHJ1bm5pbmcnKTtcbiAgICBpZiAoIWZvcmNlUmVzdGFydCkge1xuICAgICAgbG9nLmluZm8oJ0RvaW5nIG5vdGhpbmcnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbG9nLmluZm8oJ0ZvcmNpbmcgdGhlIGFjdGl2ZSBzY3JlZW4gcmVjb3JkaW5nIHRvIHN0b3AnKTtcbiAgICBhd2FpdCB0aGlzLl9zY3JlZW5SZWNvcmRlci5zdG9wKHRydWUpO1xuICB9XG4gIHRoaXMuX3NjcmVlblJlY29yZGVyID0gbnVsbDtcblxuICBjb25zdCB1ZGlkID0gYXdhaXQgZXh0cmFjdFNpbXVsYXRvclVkaWQodGhpcy5jYXBzKTtcbiAgaWYgKCF1ZGlkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgZGV0ZXJtaW5lIFNpbXVsYXRvciBVRElEIHRvIHJlY29yZCB0aGUgdmlkZW8gZnJvbS4gJyArXG4gICAgICAnRG91YmxlIGNoZWNrIHlvdXIgc2Vzc2lvbiBjYXBhYmlsaXRpZXMnKTtcbiAgfVxuXG4gIGNvbnN0IHZpZGVvUGF0aCA9IGF3YWl0IHRlbXBEaXIucGF0aCh7XG4gICAgcHJlZml4OiB1dGlsLnV1aWRWNCgpLnN1YnN0cmluZygwLCA4KSxcbiAgICBzdWZmaXg6IERFRkFVTFRfRVhULFxuICB9KTtcbiAgdGhpcy5fc2NyZWVuUmVjb3JkZXIgPSBuZXcgU2NyZWVuUmVjb3JkZXIodWRpZCwgdmlkZW9QYXRoLCB7XG4gICAgdGltZUxpbWl0OiBwYXJzZUludCh0aW1lTGltaXQsIDEwKSxcbiAgICBjb2RlYyxcbiAgICBkaXNwbGF5LFxuICAgIG1hc2ssXG4gIH0pO1xuICB0cnkge1xuICAgIGF3YWl0IHRoaXMuX3NjcmVlblJlY29yZGVyLnN0YXJ0KCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aGlzLl9zY3JlZW5SZWNvcmRlciA9IG51bGw7XG4gICAgdGhyb3cgZTtcbiAgfVxufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBTdG9wUmVjb3JkaW5nT3B0aW9uc1xuICpcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gcmVtb3RlUGF0aCAtIFRoZSBwYXRoIHRvIHRoZSByZW1vdGUgbG9jYXRpb24sIHdoZXJlIHRoZSByZXN1bHRpbmcgdmlkZW8gc2hvdWxkIGJlIHVwbG9hZGVkLlxuICogVGhlIGZvbGxvd2luZyBwcm90b2NvbHMgYXJlIHN1cHBvcnRlZDogaHR0cC9odHRwcywgZnRwLlxuICogTnVsbCBvciBlbXB0eSBzdHJpbmcgdmFsdWUgKHRoZSBkZWZhdWx0IHNldHRpbmcpIG1lYW5zIHRoZSBjb250ZW50IG9mIHJlc3VsdGluZ1xuICogZmlsZSBzaG91bGQgYmUgZW5jb2RlZCBhcyBCYXNlNjQgYW5kIHBhc3NlZCBhcyB0aGUgZW5kcG9pbnQgcmVzcG9uc2UgdmFsdWUuXG4gKiBBbiBleGNlcHRpb24gd2lsbCBiZSB0aHJvd24gaWYgdGhlIGdlbmVyYXRlZCBtZWRpYSBmaWxlIGlzIHRvbyBiaWcgdG9cbiAqIGZpdCBpbnRvIHRoZSBhdmFpbGFibGUgcHJvY2VzcyBtZW1vcnkuXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHVzZXIgLSBUaGUgbmFtZSBvZiB0aGUgdXNlciBmb3IgdGhlIHJlbW90ZSBhdXRoZW50aWNhdGlvbi5cbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gcGFzcyAtIFRoZSBwYXNzd29yZCBmb3IgdGhlIHJlbW90ZSBhdXRoZW50aWNhdGlvbi5cbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gbWV0aG9kIC0gVGhlIGh0dHAgbXVsdGlwYXJ0IHVwbG9hZCBtZXRob2QgbmFtZS4gVGhlICdQVVQnIG9uZSBpcyB1c2VkIGJ5IGRlZmF1bHQuXG4gKiBAcHJvcGVydHkgez9PYmplY3R9IGhlYWRlcnMgLSBBZGRpdGlvbmFsIGhlYWRlcnMgbWFwcGluZyBmb3IgbXVsdGlwYXJ0IGh0dHAocykgdXBsb2Fkc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfSBmaWxlRmllbGROYW1lIFtmaWxlXSAtIFRoZSBuYW1lIG9mIHRoZSBmb3JtIGZpZWxkLCB3aGVyZSB0aGUgZmlsZSBjb250ZW50IEJMT0Igc2hvdWxkIGJlIHN0b3JlZCBmb3JcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBodHRwKHMpIHVwbG9hZHNcbiAqIEBwcm9wZXJ0eSB7P09iamVjdHxBcnJheTxQYWlyPn0gZm9ybUZpZWxkcyAtIEFkZGl0aW9uYWwgZm9ybSBmaWVsZHMgZm9yIG11bHRpcGFydCBodHRwKHMpIHVwbG9hZHNcbiAqL1xuXG4vKipcbiAqIFN0b3AgcmVjb3JkaW5nIHRoZSBzY3JlZW4uXG4gKiBJZiBubyBzY3JlZW4gcmVjb3JkaW5nIGhhcyBiZWVuIHN0YXJ0ZWQgYmVmb3JlIHRoZW4gdGhlIG1ldGhvZCByZXR1cm5zIGFuIGVtcHR5IHN0cmluZy5cbiAqXG4gKiBAcGFyYW0gez9TdG9wUmVjb3JkaW5nT3B0aW9uc30gb3B0aW9ucyAtIFRoZSBhdmFpbGFibGUgb3B0aW9ucy5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IEJhc2U2NC1lbmNvZGVkIGNvbnRlbnQgb2YgdGhlIHJlY29yZGVkIG1lZGlhIGZpbGUgaWYgJ3JlbW90ZVBhdGgnXG4gKiBwYXJhbWV0ZXIgaXMgZmFsc3kgb3IgYW4gZW1wdHkgc3RyaW5nLlxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZXJlIHdhcyBhbiBlcnJvciB3aGlsZSBnZXR0aW5nIHRoZSBuYW1lIG9mIGEgbWVkaWEgZmlsZVxuICogb3IgdGhlIGZpbGUgY29udGVudCBjYW5ub3QgYmUgdXBsb2FkZWQgdG8gdGhlIHJlbW90ZSBsb2NhdGlvblxuICogb3Igc2NyZWVuIHJlY29yZGluZyBpcyBub3Qgc3VwcG9ydGVkIG9uIHRoZSBkZXZpY2UgdW5kZXIgdGVzdC5cbiAqL1xuY29tbWFuZHMuc3RvcFJlY29yZGluZ1NjcmVlbiA9IGFzeW5jIGZ1bmN0aW9uIHN0b3BSZWNvcmRpbmdTY3JlZW4gKG9wdGlvbnMgPSB7fSkge1xuICBpZiAoIXRoaXMuX3NjcmVlblJlY29yZGVyKSB7XG4gICAgbG9nLmluZm8oJ05vIHNjcmVlbiByZWNvcmRpbmcgaGFzIGJlZW4gc3RhcnRlZC4gRG9pbmcgbm90aGluZycpO1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIGxvZy5kZWJ1ZygnUmV0cmlldmluZyB0aGUgcmVzdWx0aW5nIHZpZGVvIGRhdGEnKTtcbiAgY29uc3QgdmlkZW9QYXRoID0gYXdhaXQgdGhpcy5fc2NyZWVuUmVjb3JkZXIuc3RvcCgpO1xuICBpZiAoIXZpZGVvUGF0aCkge1xuICAgIGxvZy5pbmZvKCdObyB2aWRlbyBkYXRhIGlzIGZvdW5kLiBSZXR1cm5pbmcgYW4gZW1wdHkgc3RyaW5nJyk7XG4gICAgcmV0dXJuICcnO1xuICB9XG4gIHJldHVybiBhd2FpdCB1cGxvYWRSZWNvcmRlZE1lZGlhKHZpZGVvUGF0aCwgb3B0aW9ucy5yZW1vdGVQYXRoLCBvcHRpb25zKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNvbW1hbmRzO1xuIl0sImZpbGUiOiJsaWIvY29tbWFuZHMvcmVjb3JkLXNjcmVlbi5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
329
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9yZWNvcmQtc2NyZWVuLmpzIl0sIm5hbWVzIjpbImNvbW1hbmRzIiwiU1RBUlRVUF9JTlRFUlZBTF9NUyIsIlNUQVJUVVBfVElNRU9VVF9NUyIsIkRFRkFVTFRfVElNRV9MSU1JVF9NUyIsIlBST0NFU1NfU0hVVERPV05fVElNRU9VVF9NUyIsIkRFRkFVTFRfRVhUIiwidXBsb2FkUmVjb3JkZWRNZWRpYSIsImxvY2FsRmlsZSIsInJlbW90ZVBhdGgiLCJ1cGxvYWRPcHRpb25zIiwiXyIsImlzRW1wdHkiLCJzaXplIiwiZnMiLCJzdGF0IiwibG9nIiwiZGVidWciLCJ1dGlsIiwidG9SZWFkYWJsZVNpemVTdHJpbmciLCJ0b0luTWVtb3J5QmFzZTY0IiwidG9TdHJpbmciLCJ1c2VyIiwicGFzcyIsIm1ldGhvZCIsImhlYWRlcnMiLCJmaWxlRmllbGROYW1lIiwiZm9ybUZpZWxkcyIsIm9wdGlvbnMiLCJhdXRoIiwibmV0IiwidXBsb2FkRmlsZSIsIlZJREVPX0ZJTEVTIiwiU2V0IiwicHJvY2VzcyIsIm9uIiwidmlkZW9GaWxlIiwicmltcmFmU3luYyIsImlnbiIsIlNjcmVlblJlY29yZGVyIiwiY29uc3RydWN0b3IiLCJ1ZGlkIiwidmlkZW9QYXRoIiwib3B0cyIsIl9wcm9jZXNzIiwiX3VkaWQiLCJfdmlkZW9QYXRoIiwiX2NvZGVjIiwiY29kZWMiLCJfZGlzcGxheSIsImRpc3BsYXkiLCJfbWFzayIsIm1hc2siLCJfdGltZUxpbWl0TXMiLCJ0aW1lTGltaXQiLCJfdGltZXIiLCJnZXRWaWRlb1BhdGgiLCJleGlzdHMiLCJhZGQiLCJpc1J1bm5pbmciLCJfZW5mb3JjZVRlcm1pbmF0aW9uIiwic3RvcCIsInJpbXJhZiIsImRlbGV0ZSIsInN0YXJ0IiwiYXJncyIsInB1c2giLCJTaW1jdGwiLCJleGVjIiwiYXN5bmNocm9ub3VzIiwicXVvdGUiLCJzdGRvdXQiLCJzdGRlcnIiLCJsaW5lIiwidHJpbSIsInN1YnN0cmluZyIsIm9uY2UiLCJjb2RlIiwic2lnbmFsIiwid2FybiIsIkVycm9yIiwid2FpdE1zIiwiaW50ZXJ2YWxNcyIsImUiLCJlcnJvckFuZFRocm93Iiwic2V0VGltZW91dCIsImVycm9yIiwiaW5mbyIsImZvcmNlIiwiY2xlYXJUaW1lb3V0IiwiZXh0cmFjdFNpbXVsYXRvclVkaWQiLCJjYXBzIiwiYWxsRGV2aWNlcyIsImZsYXRNYXAiLCJ2YWx1ZXMiLCJnZXREZXZpY2VzIiwibmFtZSIsInN0YXRlIiwic2RrIiwidG9Mb3dlciIsInN0YXJ0UmVjb3JkaW5nU2NyZWVuIiwiZm9yY2VSZXN0YXJ0IiwiX3NjcmVlblJlY29yZGVyIiwidGVtcERpciIsInBhdGgiLCJwcmVmaXgiLCJ1dWlkVjQiLCJzdWZmaXgiLCJwYXJzZUludCIsInN0b3BSZWNvcmRpbmdTY3JlZW4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0EsTUFBTUEsUUFBUSxHQUFHLEVBQWpCO0FBRUEsTUFBTUMsbUJBQW1CLEdBQUcsR0FBNUI7QUFDQSxNQUFNQyxrQkFBa0IsR0FBRyxLQUFLLElBQWhDO0FBQ0EsTUFBTUMscUJBQXFCLEdBQUcsS0FBSyxFQUFMLEdBQVUsSUFBeEM7QUFDQSxNQUFNQywyQkFBMkIsR0FBRyxLQUFLLElBQXpDO0FBQ0EsTUFBTUMsV0FBVyxHQUFHLE1BQXBCOztBQUdBLGVBQWVDLG1CQUFmLENBQW9DQyxTQUFwQyxFQUErQ0MsVUFBVSxHQUFHLElBQTVELEVBQWtFQyxhQUFhLEdBQUcsRUFBbEYsRUFBc0Y7QUFDcEYsTUFBSUMsZ0JBQUVDLE9BQUYsQ0FBVUgsVUFBVixDQUFKLEVBQTJCO0FBQ3pCLFVBQU07QUFBQ0ksTUFBQUE7QUFBRCxRQUFTLE1BQU1DLFlBQUdDLElBQUgsQ0FBUVAsU0FBUixDQUFyQjs7QUFDQVEsb0JBQUlDLEtBQUosQ0FBVyxpREFBZ0RDLGNBQUtDLG9CQUFMLENBQTBCTixJQUExQixDQUFnQyxFQUEzRjs7QUFDQSxXQUFPLENBQUMsTUFBTUss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QVY7O0FBQ0EsUUFBTXlCLFNBQVMsR0FBRyxNQUFNLEtBQUs0RCxlQUFMLENBQXFCekMsSUFBckIsRUFBeEI7O0FBQ0EsTUFBSSxDQUFDbkIsU0FBTCxFQUFnQjtBQUNkMUIsb0JBQUl1RSxJQUFKLENBQVMsbURBQVQ7O0FBQ0EsV0FBTyxFQUFQO0FBQ0Q7O0FBQ0QsU0FBTyxNQUFNaEYsbUJBQW1CLENBQUNtQyxTQUFELEVBQVlkLE9BQU8sQ0FBQ25CLFVBQXBCLEVBQWdDbUIsT0FBaEMsQ0FBaEM7QUFDRCxDQWJEOztlQWVlM0IsUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyB1dGlsLCBmcywgbmV0LCB0ZW1wRGlyIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCB7IHdhaXRGb3JDb25kaXRpb24gfSBmcm9tICdhc3luY2JveCc7XG5pbXBvcnQgbG9nIGZyb20gJy4uL2xvZ2dlcic7XG5pbXBvcnQgU2ltY3RsIGZyb20gJ25vZGUtc2ltY3RsJztcblxuXG5jb25zdCBjb21tYW5kcyA9IHt9O1xuXG5jb25zdCBTVEFSVFVQX0lOVEVSVkFMX01TID0gMzAwO1xuY29uc3QgU1RBUlRVUF9USU1FT1VUX01TID0gMTAgKiAxMDAwO1xuY29uc3QgREVGQVVMVF9USU1FX0xJTUlUX01TID0gNjAgKiAxMCAqIDEwMDA7IC8vIDEwIG1pbnV0ZXNcbmNvbnN0IFBST0NFU1NfU0hVVERPV05fVElNRU9VVF9NUyA9IDEwICogMTAwMDtcbmNvbnN0IERFRkFVTFRfRVhUID0gJy5tcDQnO1xuXG5cbmFzeW5jIGZ1bmN0aW9uIHVwbG9hZFJlY29yZGVkTWVkaWEgKGxvY2FsRmlsZSwgcmVtb3RlUGF0aCA9IG51bGwsIHVwbG9hZE9wdGlvbnMgPSB7fSkge1xuICBpZiAoXy5pc0VtcHR5KHJlbW90ZVBhdGgpKSB7XG4gICAgY29uc3Qge3NpemV9ID0gYXdhaXQgZnMuc3RhdChsb2NhbEZpbGUpO1xuICAgIGxvZy5kZWJ1ZyhgVGhlIHNpemUgb2YgdGhlIHJlc3VsdGluZyBzY3JlZW4gcmVjb3JkaW5nIGlzICR7dXRpbC50b1JlYWRhYmxlU2l6ZVN0cmluZyhzaXplKX1gKTtcbiAgICByZXR1cm4gKGF3YWl0IHV0aWwudG9Jbk1lbW9yeUJhc2U2NChsb2NhbEZpbGUpKS50b1N0cmluZygpO1xuICB9XG5cbiAgY29uc3Qge3VzZXIsIHBhc3MsIG1ldGhvZCwgaGVhZGVycywgZmlsZUZpZWxkTmFtZSwgZm9ybUZpZWxkc30gPSB1cGxvYWRPcHRpb25zO1xuICBjb25zdCBvcHRpb25zID0ge1xuICAgIG1ldGhvZDogbWV0aG9kIHx8ICdQVVQnLFxuICAgIGhlYWRlcnMsXG4gICAgZmlsZUZpZWxkTmFtZSxcbiAgICBmb3JtRmllbGRzLFxuICB9O1xuICBpZiAodXNlciAmJiBwYXNzKSB7XG4gICAgb3B0aW9ucy5hdXRoID0ge3VzZXIsIHBhc3N9O1xuICB9XG4gIGF3YWl0IG5ldC51cGxvYWRGaWxlKGxvY2FsRmlsZSwgcmVtb3RlUGF0aCwgb3B0aW9ucyk7XG4gIHJldHVybiAnJztcbn1cblxuY29uc3QgVklERU9fRklMRVMgPSBuZXcgU2V0KCk7XG5wcm9jZXNzLm9uKCdleGl0JywgKCkgPT4ge1xuICBmb3IgKGNvbnN0IHZpZGVvRmlsZSBvZiBWSURFT19GSUxFUykge1xuICAgIHRyeSB7XG4gICAgICBmcy5yaW1yYWZTeW5jKHZpZGVvRmlsZSk7XG4gICAgfSBjYXRjaCAoaWduKSB7fVxuICB9XG59KTtcblxuY2xhc3MgU2NyZWVuUmVjb3JkZXIge1xuICBjb25zdHJ1Y3RvciAodWRpZCwgdmlkZW9QYXRoLCBvcHRzID0ge30pIHtcbiAgICB0aGlzLl9wcm9jZXNzID0gbnVsbDtcbiAgICB0aGlzLl91ZGlkID0gdWRpZDtcbiAgICB0aGlzLl92aWRlb1BhdGggPSB2aWRlb1BhdGg7XG4gICAgdGhpcy5fY29kZWMgPSBvcHRzLmNvZGVjO1xuICAgIHRoaXMuX2Rpc3BsYXkgPSBvcHRzLmRpc3BsYXk7XG4gICAgdGhpcy5fbWFzayA9IG9wdHMubWFzaztcbiAgICB0aGlzLl90aW1lTGltaXRNcyA9IG9wdHMudGltZUxpbWl0ID4gMCA/IG9wdHMudGltZUxpbWl0ICogMTAwMCA6IERFRkFVTFRfVElNRV9MSU1JVF9NUztcbiAgICB0aGlzLl90aW1lciA9IG51bGw7XG4gIH1cblxuICBhc3luYyBnZXRWaWRlb1BhdGggKCkge1xuICAgIGlmIChhd2FpdCBmcy5leGlzdHModGhpcy5fdmlkZW9QYXRoKSkge1xuICAgICAgVklERU9fRklMRVMuYWRkKHRoaXMuX3ZpZGVvUGF0aCk7XG4gICAgICByZXR1cm4gdGhpcy5fdmlkZW9QYXRoO1xuICAgIH1cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBnZXQgaXNSdW5uaW5nICgpIHtcbiAgICByZXR1cm4gISEodGhpcy5fcHJvY2Vzcz8uaXNSdW5uaW5nKTtcbiAgfVxuXG4gIGFzeW5jIF9lbmZvcmNlVGVybWluYXRpb24gKCkge1xuICAgIGlmICh0aGlzLmlzUnVubmluZykge1xuICAgICAgbG9nLmRlYnVnKCdGb3JjZS1zdG9wcGluZyB0aGUgY3VycmVudGx5IHJ1bm5pbmcgdmlkZW8gcmVjb3JkaW5nJyk7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCB0aGlzLl9wcm9jZXNzLnN0b3AoJ1NJR0tJTEwnKTtcbiAgICAgIH0gY2F0Y2ggKGlnbikge31cbiAgICB9XG4gICAgdGhpcy5fcHJvY2VzcyA9IG51bGw7XG4gICAgY29uc3QgdmlkZW9QYXRoID0gYXdhaXQgdGhpcy5nZXRWaWRlb1BhdGgoKTtcbiAgICBpZiAodmlkZW9QYXRoKSB7XG4gICAgICBhd2FpdCBmcy5yaW1yYWYodmlkZW9QYXRoKTtcbiAgICAgIFZJREVPX0ZJTEVTLmRlbGV0ZSh2aWRlb1BhdGgpO1xuICAgIH1cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBhc3luYyBzdGFydCAoKSB7XG4gICAgY29uc3QgYXJncyA9IFtcbiAgICAgIHRoaXMuX3VkaWQsICdyZWNvcmRWaWRlbydcbiAgICBdO1xuICAgIGlmICh0aGlzLl9kaXNwbGF5KSB7XG4gICAgICBhcmdzLnB1c2goJy0tZGlzcGxheScsIHRoaXMuX2Rpc3BsYXkpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fY29kZWMpIHtcbiAgICAgIGFyZ3MucHVzaCgnLS1jb2RlYycsIHRoaXMuX2NvZGVjKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX21hc2spIHtcbiAgICAgIGFyZ3MucHVzaCgnLS1tYXNrJywgdGhpcy5fbWFzayk7XG4gICAgfVxuICAgIGFyZ3MucHVzaCgnLS1mb3JjZScsIHRoaXMuX3ZpZGVvUGF0aCk7XG4gICAgdGhpcy5fcHJvY2VzcyA9IGF3YWl0IG5ldyBTaW1jdGwoKS5leGVjKCdpbycsIHtcbiAgICAgIGFyZ3MsXG4gICAgICBhc3luY2hyb25vdXM6IHRydWUsXG4gICAgfSk7XG4gICAgbG9nLmRlYnVnKGBTdGFydGluZyB2aWRlbyByZWNvcmRpbmcgd2l0aCBhcmd1bWVudHM6ICR7dXRpbC5xdW90ZShhcmdzKX1gKTtcbiAgICB0aGlzLl9wcm9jZXNzLm9uKCdvdXRwdXQnLCAoc3Rkb3V0LCBzdGRlcnIpID0+IHtcbiAgICAgIGNvbnN0IGxpbmUgPSBfLnRyaW0oc3Rkb3V0IHx8IHN0ZGVycik7XG4gICAgICBpZiAobGluZSkge1xuICAgICAgICBsb2cuZGVidWcoYFtyZWNvcmRWaWRlb0Ake3RoaXMuX3VkaWQuc3Vic3RyaW5nKDAsIDgpfV0gJHtsaW5lfWApO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuX3Byb2Nlc3Mub25jZSgnZXhpdCcsIGFzeW5jIChjb2RlLCBzaWduYWwpID0+IHtcbiAgICAgIHRoaXMuX3Byb2Nlc3MgPSBudWxsO1xuICAgICAgaWYgKGNvZGUgPT09IDApIHtcbiAgICAgICAgbG9nLmRlYnVnKCdTY3JlZW4gcmVjb3JkaW5nIGV4aXRlZCB3aXRob3V0IGVycm9ycycpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYXdhaXQgdGhpcy5fZW5mb3JjZVRlcm1pbmF0aW9uKCk7XG4gICAgICAgIGxvZy53YXJuKGBTY3JlZW4gcmVjb3JkaW5nIGV4aXRlZCB3aXRoIGVycm9yIGNvZGUgJHtjb2RlfSwgc2lnbmFsICR7c2lnbmFsfWApO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGF3YWl0IHRoaXMuX3Byb2Nlc3Muc3RhcnQoMCk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHdhaXRGb3JDb25kaXRpb24oYXN5bmMgKCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuaXNSdW5uaW5nKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICEhKGF3YWl0IHRoaXMuZ2V0VmlkZW9QYXRoKCkpO1xuICAgICAgfSwge1xuICAgICAgICB3YWl0TXM6IFNUQVJUVVBfVElNRU9VVF9NUyxcbiAgICAgICAgaW50ZXJ2YWxNczogU1RBUlRVUF9JTlRFUlZBTF9NUyxcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGF3YWl0IHRoaXMuX2VuZm9yY2VUZXJtaW5hdGlvbigpO1xuICAgICAgbG9nLmVycm9yQW5kVGhyb3coYFRoZSBleHBlY3RlZCBzY3JlZW4gcmVjb3JkIGZpbGUgJyR7dGhpcy5fdmlkZW9QYXRofScgZG9lcyBub3QgZXhpc3QgYWZ0ZXIgJHtTVEFSVFVQX1RJTUVPVVRfTVN9bXMuIGAgK1xuICAgICAgICBgQ2hlY2sgdGhlIHNlcnZlciBsb2cgZm9yIG1vcmUgZGV0YWlsc2ApO1xuICAgIH1cbiAgICB0aGlzLl90aW1lciA9IHNldFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuaXNSdW5uaW5nKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5zdG9wKCk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBsb2cuZXJyb3IoZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCB0aGlzLl90aW1lTGltaXRNcyk7XG4gICAgbG9nLmluZm8oYFRoZSB2aWRlbyByZWNvcmRpbmcgaGFzIHN0YXJ0ZWQuIFdpbGwgdGltZW91dCBpbiAke3RoaXMuX3RpbWVMaW1pdE1zfW1zYCk7XG4gIH1cblxuICBhc3luYyBzdG9wIChmb3JjZSA9IGZhbHNlKSB7XG4gICAgaWYgKHRoaXMuX3RpbWVyKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5fdGltZXIpO1xuICAgICAgdGhpcy5fdGltZXIgPSBudWxsO1xuICAgIH1cblxuICAgIGlmIChmb3JjZSkge1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuX2VuZm9yY2VUZXJtaW5hdGlvbigpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5pc1J1bm5pbmcpIHtcbiAgICAgIGxvZy5kZWJ1ZygnU2NyZWVuIHJlY29yZGluZyBpcyBub3QgcnVubmluZy4gUmV0dXJuaW5nIHRoZSByZWNlbnRseSByZWNvcmRlZCB2aWRlbycpO1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0VmlkZW9QYXRoKCk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMuX3Byb2Nlc3Muc3RvcCgnU0lHSU5UJywgUFJPQ0VTU19TSFVURE9XTl9USU1FT1VUX01TKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBhd2FpdCB0aGlzLl9lbmZvcmNlVGVybWluYXRpb24oKTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgU2NyZWVuIHJlY29yZGluZyBoYXMgZmFpbGVkIHRvIHN0b3AgYWZ0ZXIgJHtQUk9DRVNTX1NIVVRET1dOX1RJTUVPVVRfTVN9bXNgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5nZXRWaWRlb1BhdGgoKTtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBleHRyYWN0U2ltdWxhdG9yVWRpZCAoY2Fwcykge1xuICBpZiAoY2Fwc1snc2FmYXJpOnVzZVNpbXVsYXRvciddID09PSBmYWxzZSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgYWxsRGV2aWNlcyA9IF8uZmxhdE1hcChfLnZhbHVlcyhhd2FpdCBuZXcgU2ltY3RsKCkuZ2V0RGV2aWNlcyhudWxsLCAnaU9TJykpKTtcbiAgZm9yIChjb25zdCB7bmFtZSwgdWRpZCwgc3RhdGUsIHNka30gb2YgYWxsRGV2aWNlcykge1xuICAgIGlmIChzdGF0ZSAhPT0gJ0Jvb3RlZCcpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChfLnRvTG93ZXIoY2Fwc1snc2FmYXJpOmRldmljZVVESUQnXSkgPT09IF8udG9Mb3dlcih1ZGlkKSkge1xuICAgICAgcmV0dXJuIHVkaWQ7XG4gICAgfVxuICAgIGlmIChfLnRvTG93ZXIoY2Fwc1snc2FmYXJpOmRldmljZU5hbWUnXSkgPT09IF8udG9Mb3dlcihuYW1lKSAmJlxuICAgICAgKGNhcHNbJ3NhZmFyaTpwbGF0Zm9ybVZlcnNpb24nXSAmJiBjYXBzWydzYWZhcmk6cGxhdGZvcm1WZXJzaW9uJ10gPT09IHNka1xuICAgICAgICB8fCAhY2Fwc1snc2FmYXJpOnBsYXRmb3JtVmVyc2lvbiddKSkge1xuICAgICAgcmV0dXJuIHVkaWQ7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBTdGFydFJlY29yZGluZ09wdGlvbnNcbiAqXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGNvZGVjIFtoZXZjXSAtIFNwZWNpZmllcyB0aGUgY29kZWMgdHlwZTogXCJoMjY0XCIgb3IgXCJoZXZjXCJcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gZGlzcGxheSBbaW50ZXJuYWxdIC0gU3VwcG9ydHMgXCJpbnRlcm5hbFwiIG9yIFwiZXh0ZXJuYWxcIi4gRGVmYXVsdCBpcyBcImludGVybmFsXCJcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gbWFzayAtIEZvciBub24tcmVjdGFuZ3VsYXIgZGlzcGxheXMsIGhhbmRsZSB0aGUgbWFzayBieSBwb2xpY3k6XG4gKiAtIGlnbm9yZWQ6IFRoZSBtYXNrIGlzIGlnbm9yZWQgYW5kIHRoZSB1bm1hc2tlZCBmcmFtZWJ1ZmZlciBpcyBzYXZlZC5cbiAqIC0gYWxwaGE6IE5vdCBzdXBwb3J0ZWQsIGJ1dCByZXRhaW5lZCBmb3IgY29tcGF0aWJpbGl0eTsgdGhlIG1hc2sgaXMgcmVuZGVyZWQgYmxhY2suXG4gKiAtIGJsYWNrOiBUaGUgbWFzayBpcyByZW5kZXJlZCBibGFjay5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfG51bWJlcn0gdGltZUxpbWl0IFs2MDBdIC0gVGhlIG1heGltdW0gcmVjb3JkaW5nIHRpbWUsIGluIHNlY29uZHMuIFRoZSBkZWZhdWx0XG4gKiB2YWx1ZSBpcyA2MDAgc2Vjb25kcyAoMTAgbWludXRlcykuXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IGZvcmNlUmVzdGFydCBbdHJ1ZV0gLSBXaGV0aGVyIHRvIGlnbm9yZSB0aGUgY2FsbCBpZiBhIHNjcmVlbiByZWNvcmRpbmcgaXMgY3VycmVudGx5IHJ1bm5pbmdcbiAqIChgZmFsc2VgKSBvciB0byBzdGFydCBhIG5ldyByZWNvcmRpbmcgaW1tZWRpYXRlbHkgYW5kIHRlcm1pbmF0ZSB0aGUgZXhpc3Rpbmcgb25lIGlmIHJ1bm5pbmcgKGB0cnVlYCkuXG4gKi9cblxuLyoqXG4gKiBSZWNvcmQgdGhlIFNpbXVsYXRvcidzIGRpc3BsYXkgaW4gYmFja2dyb3VuZCB3aGlsZSB0aGUgYXV0b21hdGVkIHRlc3QgaXMgcnVubmluZy5cbiAqIFRoaXMgbWV0aG9kIHVzZXMgYHhjcnVuIHNpbWN0bCBpbyByZWNvcmRWaWRlb2AgaGVscGVyIHVuZGVyIHRoZSBob29kLlxuICogQ2hlY2sgdGhlIG91dHB1dCBvZiBgeGNydW4gc2ltY3RsIGlvYCBjb21tYW5kIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogQHBhcmFtIHs/U3RhcnRSZWNvcmRpbmdPcHRpb25zfSBvcHRpb25zIC0gVGhlIGF2YWlsYWJsZSBvcHRpb25zLlxuICogQHRocm93cyB7RXJyb3J9IElmIHNjcmVlbiByZWNvcmRpbmcgaGFzIGZhaWxlZCB0byBzdGFydCBvciBpcyBub3Qgc3VwcG9ydGVkIGZvciB0aGUgZGVzdGluYXRpb24gZGV2aWNlLlxuICovXG5jb21tYW5kcy5zdGFydFJlY29yZGluZ1NjcmVlbiA9IGFzeW5jIGZ1bmN0aW9uIHN0YXJ0UmVjb3JkaW5nU2NyZWVuIChvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIHRpbWVMaW1pdCxcbiAgICBjb2RlYyxcbiAgICBkaXNwbGF5LFxuICAgIG1hc2ssXG4gICAgZm9yY2VSZXN0YXJ0ID0gdHJ1ZSxcbiAgfSA9IG9wdGlvbnM7XG4gIGlmICh0aGlzLl9zY3JlZW5SZWNvcmRlcj8uaXNSdW5uaW5nKSB7XG4gICAgbG9nLmluZm8oJ1RoZSBzY3JlZW4gcmVjb3JkaW5nIGlzIGFscmVhZHkgcnVubmluZycpO1xuICAgIGlmICghZm9yY2VSZXN0YXJ0KSB7XG4gICAgICBsb2cuaW5mbygnRG9pbmcgbm90aGluZycpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsb2cuaW5mbygnRm9yY2luZyB0aGUgYWN0aXZlIHNjcmVlbiByZWNvcmRpbmcgdG8gc3RvcCcpO1xuICAgIGF3YWl0IHRoaXMuX3NjcmVlblJlY29yZGVyLnN0b3AodHJ1ZSk7XG4gIH1cbiAgdGhpcy5fc2NyZWVuUmVjb3JkZXIgPSBudWxsO1xuXG4gIGNvbnN0IHVkaWQgPSBhd2FpdCBleHRyYWN0U2ltdWxhdG9yVWRpZCh0aGlzLmNhcHMpO1xuICBpZiAoIXVkaWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBkZXRlcm1pbmUgU2ltdWxhdG9yIFVESUQgdG8gcmVjb3JkIHRoZSB2aWRlbyBmcm9tLiAnICtcbiAgICAgICdEb3VibGUgY2hlY2sgeW91ciBzZXNzaW9uIGNhcGFiaWxpdGllcycpO1xuICB9XG5cbiAgY29uc3QgdmlkZW9QYXRoID0gYXdhaXQgdGVtcERpci5wYXRoKHtcbiAgICBwcmVmaXg6IHV0aWwudXVpZFY0KCkuc3Vic3RyaW5nKDAsIDgpLFxuICAgIHN1ZmZpeDogREVGQVVMVF9FWFQsXG4gIH0pO1xuICB0aGlzLl9zY3JlZW5SZWNvcmRlciA9IG5ldyBTY3JlZW5SZWNvcmRlcih1ZGlkLCB2aWRlb1BhdGgsIHtcbiAgICB0aW1lTGltaXQ6IHBhcnNlSW50KHRpbWVMaW1pdCwgMTApLFxuICAgIGNvZGVjLFxuICAgIGRpc3BsYXksXG4gICAgbWFzayxcbiAgfSk7XG4gIHRyeSB7XG4gICAgYXdhaXQgdGhpcy5fc2NyZWVuUmVjb3JkZXIuc3RhcnQoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHRoaXMuX3NjcmVlblJlY29yZGVyID0gbnVsbDtcbiAgICB0aHJvdyBlO1xuICB9XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFN0b3BSZWNvcmRpbmdPcHRpb25zXG4gKlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSByZW1vdGVQYXRoIC0gVGhlIHBhdGggdG8gdGhlIHJlbW90ZSBsb2NhdGlvbiwgd2hlcmUgdGhlIHJlc3VsdGluZyB2aWRlbyBzaG91bGQgYmUgdXBsb2FkZWQuXG4gKiBUaGUgZm9sbG93aW5nIHByb3RvY29scyBhcmUgc3VwcG9ydGVkOiBodHRwL2h0dHBzLCBmdHAuXG4gKiBOdWxsIG9yIGVtcHR5IHN0cmluZyB2YWx1ZSAodGhlIGRlZmF1bHQgc2V0dGluZykgbWVhbnMgdGhlIGNvbnRlbnQgb2YgcmVzdWx0aW5nXG4gKiBmaWxlIHNob3VsZCBiZSBlbmNvZGVkIGFzIEJhc2U2NCBhbmQgcGFzc2VkIGFzIHRoZSBlbmRwb2ludCByZXNwb25zZSB2YWx1ZS5cbiAqIEFuIGV4Y2VwdGlvbiB3aWxsIGJlIHRocm93biBpZiB0aGUgZ2VuZXJhdGVkIG1lZGlhIGZpbGUgaXMgdG9vIGJpZyB0b1xuICogZml0IGludG8gdGhlIGF2YWlsYWJsZSBwcm9jZXNzIG1lbW9yeS5cbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gdXNlciAtIFRoZSBuYW1lIG9mIHRoZSB1c2VyIGZvciB0aGUgcmVtb3RlIGF1dGhlbnRpY2F0aW9uLlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBwYXNzIC0gVGhlIHBhc3N3b3JkIGZvciB0aGUgcmVtb3RlIGF1dGhlbnRpY2F0aW9uLlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBtZXRob2QgLSBUaGUgaHR0cCBtdWx0aXBhcnQgdXBsb2FkIG1ldGhvZCBuYW1lLiBUaGUgJ1BVVCcgb25lIGlzIHVzZWQgYnkgZGVmYXVsdC5cbiAqIEBwcm9wZXJ0eSB7P09iamVjdH0gaGVhZGVycyAtIEFkZGl0aW9uYWwgaGVhZGVycyBtYXBwaW5nIGZvciBtdWx0aXBhcnQgaHR0cChzKSB1cGxvYWRzXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGZpbGVGaWVsZE5hbWUgW2ZpbGVdIC0gVGhlIG5hbWUgb2YgdGhlIGZvcm0gZmllbGQsIHdoZXJlIHRoZSBmaWxlIGNvbnRlbnQgQkxPQiBzaG91bGQgYmUgc3RvcmVkIGZvclxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0dHAocykgdXBsb2Fkc1xuICogQHByb3BlcnR5IHs/T2JqZWN0fEFycmF5PFBhaXI+fSBmb3JtRmllbGRzIC0gQWRkaXRpb25hbCBmb3JtIGZpZWxkcyBmb3IgbXVsdGlwYXJ0IGh0dHAocykgdXBsb2Fkc1xuICovXG5cbi8qKlxuICogU3RvcCByZWNvcmRpbmcgdGhlIHNjcmVlbi5cbiAqIElmIG5vIHNjcmVlbiByZWNvcmRpbmcgaGFzIGJlZW4gc3RhcnRlZCBiZWZvcmUgdGhlbiB0aGUgbWV0aG9kIHJldHVybnMgYW4gZW1wdHkgc3RyaW5nLlxuICpcbiAqIEBwYXJhbSB7P1N0b3BSZWNvcmRpbmdPcHRpb25zfSBvcHRpb25zIC0gVGhlIGF2YWlsYWJsZSBvcHRpb25zLlxuICogQHJldHVybnMge3N0cmluZ30gQmFzZTY0LWVuY29kZWQgY29udGVudCBvZiB0aGUgcmVjb3JkZWQgbWVkaWEgZmlsZSBpZiAncmVtb3RlUGF0aCdcbiAqIHBhcmFtZXRlciBpcyBmYWxzeSBvciBhbiBlbXB0eSBzdHJpbmcuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlcmUgd2FzIGFuIGVycm9yIHdoaWxlIGdldHRpbmcgdGhlIG5hbWUgb2YgYSBtZWRpYSBmaWxlXG4gKiBvciB0aGUgZmlsZSBjb250ZW50IGNhbm5vdCBiZSB1cGxvYWRlZCB0byB0aGUgcmVtb3RlIGxvY2F0aW9uXG4gKiBvciBzY3JlZW4gcmVjb3JkaW5nIGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhlIGRldmljZSB1bmRlciB0ZXN0LlxuICovXG5jb21tYW5kcy5zdG9wUmVjb3JkaW5nU2NyZWVuID0gYXN5bmMgZnVuY3Rpb24gc3RvcFJlY29yZGluZ1NjcmVlbiAob3B0aW9ucyA9IHt9KSB7XG4gIGlmICghdGhpcy5fc2NyZWVuUmVjb3JkZXIpIHtcbiAgICBsb2cuaW5mbygnTm8gc2NyZWVuIHJlY29yZGluZyBoYXMgYmVlbiBzdGFydGVkLiBEb2luZyBub3RoaW5nJyk7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgbG9nLmRlYnVnKCdSZXRyaWV2aW5nIHRoZSByZXN1bHRpbmcgdmlkZW8gZGF0YScpO1xuICBjb25zdCB2aWRlb1BhdGggPSBhd2FpdCB0aGlzLl9zY3JlZW5SZWNvcmRlci5zdG9wKCk7XG4gIGlmICghdmlkZW9QYXRoKSB7XG4gICAgbG9nLmluZm8oJ05vIHZpZGVvIGRhdGEgaXMgZm91bmQuIFJldHVybmluZyBhbiBlbXB0eSBzdHJpbmcnKTtcbiAgICByZXR1cm4gJyc7XG4gIH1cbiAgcmV0dXJuIGF3YWl0IHVwbG9hZFJlY29yZGVkTWVkaWEodmlkZW9QYXRoLCBvcHRpb25zLnJlbW90ZVBhdGgsIG9wdGlvbnMpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY29tbWFuZHM7XG4iXSwiZmlsZSI6ImxpYi9jb21tYW5kcy9yZWNvcmQtc2NyZWVuLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=
@@ -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
  var _logger = _interopRequireDefault(require("./logger"));
17
17
 
@@ -25,7 +25,7 @@ var _utils = require("./utils");
25
25
 
26
26
  const NO_PROXY = [['GET', new RegExp('^/session/[^/]+/appium')], ['POST', new RegExp('^/session/[^/]+/appium')], ['POST', new RegExp('^/session/[^/]+/element/[^/]+/elements?$')], ['POST', new RegExp('^/session/[^/]+/elements?$')]];
27
27
 
28
- class SafariDriver extends _appiumBaseDriver.BaseDriver {
28
+ class SafariDriver extends _baseDriver.BaseDriver {
29
29
  constructor(opts = {}) {
30
30
  super(opts);
31
31
  this.desiredCapConstraints = _desiredCaps.desiredCapConstraints;
@@ -89,4 +89,4 @@ var _default = SafariDriver;
89
89
  exports.default = _default;require('source-map-support').install();
90
90
 
91
91
 
92
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9kcml2ZXIuanMiXSwibmFtZXMiOlsiTk9fUFJPWFkiLCJSZWdFeHAiLCJTYWZhcmlEcml2ZXIiLCJCYXNlRHJpdmVyIiwiY29uc3RydWN0b3IiLCJvcHRzIiwiZGVzaXJlZENhcENvbnN0cmFpbnRzIiwibG9jYXRvclN0cmF0ZWdpZXMiLCJyZXNldFN0YXRlIiwiY21kIiwiZm4iLCJfIiwidG9QYWlycyIsImNvbW1hbmRzIiwicHJvdG90eXBlIiwic2FmYXJpIiwicHJveHlSZXFSZXMiLCJpc1Byb3h5QWN0aXZlIiwiX3NjcmVlblJlY29yZGVyIiwicHJveHlBY3RpdmUiLCJnZXRQcm94eUF2b2lkTGlzdCIsImNhblByb3h5IiwiY3JlYXRlU2Vzc2lvbiIsImFyZ3MiLCJzZXNzaW9uSWQiLCJjYXBzIiwiU2FmYXJpRHJpdmVyU2VydmVyIiwic3RhcnQiLCJlIiwiZGVsZXRlU2Vzc2lvbiIsInByb3h5IiwiYmluZCIsImxvZyIsImluZm8iLCJzdG9wIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLE1BQU1BLFFBQVEsR0FBRyxDQUNmLENBQUMsS0FBRCxFQUFRLElBQUlDLE1BQUosQ0FBVyx3QkFBWCxDQUFSLENBRGUsRUFFZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsd0JBQVgsQ0FBVCxDQUZlLEVBR2YsQ0FBQyxNQUFELEVBQVMsSUFBSUEsTUFBSixDQUFXLDBDQUFYLENBQVQsQ0FIZSxFQUlmLENBQUMsTUFBRCxFQUFTLElBQUlBLE1BQUosQ0FBVyw0QkFBWCxDQUFULENBSmUsQ0FBakI7O0FBT0EsTUFBTUMsWUFBTixTQUEyQkMsNEJBQTNCLENBQXNDO0FBQ3BDQyxFQUFBQSxXQUFXLENBQUVDLElBQUksR0FBRyxFQUFULEVBQWE7QUFDdEIsVUFBTUEsSUFBTjtBQUNBLFNBQUtDLHFCQUFMLEdBQTZCQSxrQ0FBN0I7QUFDQSxTQUFLQyxpQkFBTCxHQUF5QixDQUN2QixPQUR1QixFQUV2QixVQUZ1QixFQUd2QixXQUh1QixFQUl2QixtQkFKdUIsRUFLdkIsY0FMdUIsRUFPdkIsSUFQdUIsRUFRdkIsTUFSdUIsQ0FBekI7QUFVQSxTQUFLQyxVQUFMOztBQUVBLFNBQUssTUFBTSxDQUFDQyxHQUFELEVBQU1DLEVBQU4sQ0FBWCxJQUF3QkMsZ0JBQUVDLE9BQUYsQ0FBVUMsY0FBVixDQUF4QixFQUE2QztBQUMzQ1gsTUFBQUEsWUFBWSxDQUFDWSxTQUFiLENBQXVCTCxHQUF2QixJQUE4QkMsRUFBOUI7QUFDRDtBQUNGOztBQUVERixFQUFBQSxVQUFVLEdBQUk7QUFDWixTQUFLTyxNQUFMLEdBQWMsSUFBZDtBQUNBLFNBQUtDLFdBQUwsR0FBbUIsSUFBbkI7QUFDQSxTQUFLQyxhQUFMLEdBQXFCLEtBQXJCO0FBQ0EsU0FBS0MsZUFBTCxHQUF1QixJQUF2QjtBQUNEOztBQUVEQyxFQUFBQSxXQUFXLEdBQUk7QUFDYixXQUFPLEtBQUtGLGFBQVo7QUFDRDs7QUFFREcsRUFBQUEsaUJBQWlCLEdBQUk7QUFDbkIsV0FBT3BCLFFBQVA7QUFDRDs7QUFFRHFCLEVBQUFBLFFBQVEsR0FBSTtBQUNWLFdBQU8sSUFBUDtBQUNEOztBQUVELFFBQU1DLGFBQU4sQ0FBcUIsR0FBR0MsSUFBeEIsRUFBOEI7QUFDNUIsVUFBTSxDQUFDQyxTQUFELEVBQVlDLElBQVosSUFBb0IsTUFBTSxNQUFNSCxhQUFOLENBQW9CLEdBQUdDLElBQXZCLENBQWhDO0FBQ0EsU0FBS1IsTUFBTCxHQUFjLElBQUlXLGVBQUosRUFBZDs7QUFDQSxRQUFJO0FBQ0YsWUFBTSxLQUFLWCxNQUFMLENBQVlZLEtBQVosQ0FBa0IsZ0NBQW9CRixJQUFwQixDQUFsQixDQUFOO0FBQ0QsS0FGRCxDQUVFLE9BQU9HLENBQVAsRUFBVTtBQUNWLFlBQU0sS0FBS0MsYUFBTCxFQUFOO0FBQ0EsWUFBTUQsQ0FBTjtBQUNEOztBQUNELFNBQUtaLFdBQUwsR0FBbUIsS0FBS0QsTUFBTCxDQUFZZSxLQUFaLENBQWtCZCxXQUFsQixDQUE4QmUsSUFBOUIsQ0FBbUMsS0FBS2hCLE1BQUwsQ0FBWWUsS0FBL0MsQ0FBbkI7QUFDQSxTQUFLYixhQUFMLEdBQXFCLElBQXJCO0FBQ0EsV0FBTyxDQUFDTyxTQUFELEVBQVlDLElBQVosQ0FBUDtBQUNEOztBQUVELFFBQU1JLGFBQU4sR0FBdUI7QUFBQTs7QUFDckJHLG9CQUFJQyxJQUFKLENBQVMsdUJBQVQ7O0FBQ0Esb0NBQU0sS0FBS2YsZUFBWCwwREFBTSxzQkFBc0JnQixJQUF0QixDQUEyQixJQUEzQixDQUFOO0FBQ0EsMkJBQU0sS0FBS25CLE1BQVgsaURBQU0sYUFBYW1CLElBQWIsRUFBTjtBQUNBLFNBQUsxQixVQUFMO0FBRUEsVUFBTSxNQUFNcUIsYUFBTixFQUFOO0FBQ0Q7O0FBN0RtQzs7ZUFnRXZCM0IsWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBCYXNlRHJpdmVyIH0gZnJvbSAnYXBwaXVtLWJhc2UtZHJpdmVyJztcbmltcG9ydCBsb2cgZnJvbSAnLi9sb2dnZXInO1xuaW1wb3J0IFNhZmFyaURyaXZlclNlcnZlciBmcm9tICcuL3NhZmFyaSc7XG5pbXBvcnQgeyBkZXNpcmVkQ2FwQ29uc3RyYWludHMgfSBmcm9tICcuL2Rlc2lyZWQtY2Fwcyc7XG5pbXBvcnQgY29tbWFuZHMgZnJvbSAnLi9jb21tYW5kcy9pbmRleCc7XG5pbXBvcnQgeyBmb3JtYXRDYXBzRm9yU2VydmVyIH0gZnJvbSAnLi91dGlscyc7XG5cbmNvbnN0IE5PX1BST1hZID0gW1xuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0nKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0nKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9lbGVtZW50L1teL10rL2VsZW1lbnRzPyQnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9lbGVtZW50cz8kJyldLFxuXTtcblxuY2xhc3MgU2FmYXJpRHJpdmVyIGV4dGVuZHMgQmFzZURyaXZlciB7XG4gIGNvbnN0cnVjdG9yIChvcHRzID0ge30pIHtcbiAgICBzdXBlcihvcHRzKTtcbiAgICB0aGlzLmRlc2lyZWRDYXBDb25zdHJhaW50cyA9IGRlc2lyZWRDYXBDb25zdHJhaW50cztcbiAgICB0aGlzLmxvY2F0b3JTdHJhdGVnaWVzID0gW1xuICAgICAgJ3hwYXRoJyxcbiAgICAgICd0YWcgbmFtZScsXG4gICAgICAnbGluayB0ZXh0JyxcbiAgICAgICdwYXJ0aWFsIGxpbmsgdGV4dCcsXG4gICAgICAnY3NzIHNlbGVjdG9yJyxcbiAgICAgIC8vIExldCB0aGVzZSB0d28gcmVhY2ggU2FmYXJpIERyaXZlciBhbmQgZmFpbCB0aGVyZSB3aXRoIGEgcHJvcGVyIGVycm9yIG1lc3NhZ2VcbiAgICAgICdpZCcsXG4gICAgICAnbmFtZScsXG4gICAgXTtcbiAgICB0aGlzLnJlc2V0U3RhdGUoKTtcblxuICAgIGZvciAoY29uc3QgW2NtZCwgZm5dIG9mIF8udG9QYWlycyhjb21tYW5kcykpIHtcbiAgICAgIFNhZmFyaURyaXZlci5wcm90b3R5cGVbY21kXSA9IGZuO1xuICAgIH1cbiAgfVxuXG4gIHJlc2V0U3RhdGUgKCkge1xuICAgIHRoaXMuc2FmYXJpID0gbnVsbDtcbiAgICB0aGlzLnByb3h5UmVxUmVzID0gbnVsbDtcbiAgICB0aGlzLmlzUHJveHlBY3RpdmUgPSBmYWxzZTtcbiAgICB0aGlzLl9zY3JlZW5SZWNvcmRlciA9IG51bGw7XG4gIH1cblxuICBwcm94eUFjdGl2ZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNQcm94eUFjdGl2ZTtcbiAgfVxuXG4gIGdldFByb3h5QXZvaWRMaXN0ICgpIHtcbiAgICByZXR1cm4gTk9fUFJPWFk7XG4gIH1cblxuICBjYW5Qcm94eSAoKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBhc3luYyBjcmVhdGVTZXNzaW9uICguLi5hcmdzKSB7XG4gICAgY29uc3QgW3Nlc3Npb25JZCwgY2Fwc10gPSBhd2FpdCBzdXBlci5jcmVhdGVTZXNzaW9uKC4uLmFyZ3MpO1xuICAgIHRoaXMuc2FmYXJpID0gbmV3IFNhZmFyaURyaXZlclNlcnZlcigpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLnNhZmFyaS5zdGFydChmb3JtYXRDYXBzRm9yU2VydmVyKGNhcHMpKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBhd2FpdCB0aGlzLmRlbGV0ZVNlc3Npb24oKTtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICAgIHRoaXMucHJveHlSZXFSZXMgPSB0aGlzLnNhZmFyaS5wcm94eS5wcm94eVJlcVJlcy5iaW5kKHRoaXMuc2FmYXJpLnByb3h5KTtcbiAgICB0aGlzLmlzUHJveHlBY3RpdmUgPSB0cnVlO1xuICAgIHJldHVybiBbc2Vzc2lvbklkLCBjYXBzXTtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZVNlc3Npb24gKCkge1xuICAgIGxvZy5pbmZvKCdFbmRpbmcgU2FmYXJpIHNlc3Npb24nKTtcbiAgICBhd2FpdCB0aGlzLl9zY3JlZW5SZWNvcmRlcj8uc3RvcCh0cnVlKTtcbiAgICBhd2FpdCB0aGlzLnNhZmFyaT8uc3RvcCgpO1xuICAgIHRoaXMucmVzZXRTdGF0ZSgpO1xuXG4gICAgYXdhaXQgc3VwZXIuZGVsZXRlU2Vzc2lvbigpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFNhZmFyaURyaXZlcjtcbiJdLCJmaWxlIjoibGliL2RyaXZlci5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLiJ9
92
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9kcml2ZXIuanMiXSwibmFtZXMiOlsiTk9fUFJPWFkiLCJSZWdFeHAiLCJTYWZhcmlEcml2ZXIiLCJCYXNlRHJpdmVyIiwiY29uc3RydWN0b3IiLCJvcHRzIiwiZGVzaXJlZENhcENvbnN0cmFpbnRzIiwibG9jYXRvclN0cmF0ZWdpZXMiLCJyZXNldFN0YXRlIiwiY21kIiwiZm4iLCJfIiwidG9QYWlycyIsImNvbW1hbmRzIiwicHJvdG90eXBlIiwic2FmYXJpIiwicHJveHlSZXFSZXMiLCJpc1Byb3h5QWN0aXZlIiwiX3NjcmVlblJlY29yZGVyIiwicHJveHlBY3RpdmUiLCJnZXRQcm94eUF2b2lkTGlzdCIsImNhblByb3h5IiwiY3JlYXRlU2Vzc2lvbiIsImFyZ3MiLCJzZXNzaW9uSWQiLCJjYXBzIiwiU2FmYXJpRHJpdmVyU2VydmVyIiwic3RhcnQiLCJlIiwiZGVsZXRlU2Vzc2lvbiIsInByb3h5IiwiYmluZCIsImxvZyIsImluZm8iLCJzdG9wIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLE1BQU1BLFFBQVEsR0FBRyxDQUNmLENBQUMsS0FBRCxFQUFRLElBQUlDLE1BQUosQ0FBVyx3QkFBWCxDQUFSLENBRGUsRUFFZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsd0JBQVgsQ0FBVCxDQUZlLEVBR2YsQ0FBQyxNQUFELEVBQVMsSUFBSUEsTUFBSixDQUFXLDBDQUFYLENBQVQsQ0FIZSxFQUlmLENBQUMsTUFBRCxFQUFTLElBQUlBLE1BQUosQ0FBVyw0QkFBWCxDQUFULENBSmUsQ0FBakI7O0FBT0EsTUFBTUMsWUFBTixTQUEyQkMsc0JBQTNCLENBQXNDO0FBQ3BDQyxFQUFBQSxXQUFXLENBQUVDLElBQUksR0FBRyxFQUFULEVBQWE7QUFDdEIsVUFBTUEsSUFBTjtBQUNBLFNBQUtDLHFCQUFMLEdBQTZCQSxrQ0FBN0I7QUFDQSxTQUFLQyxpQkFBTCxHQUF5QixDQUN2QixPQUR1QixFQUV2QixVQUZ1QixFQUd2QixXQUh1QixFQUl2QixtQkFKdUIsRUFLdkIsY0FMdUIsRUFPdkIsSUFQdUIsRUFRdkIsTUFSdUIsQ0FBekI7QUFVQSxTQUFLQyxVQUFMOztBQUVBLFNBQUssTUFBTSxDQUFDQyxHQUFELEVBQU1DLEVBQU4sQ0FBWCxJQUF3QkMsZ0JBQUVDLE9BQUYsQ0FBVUMsY0FBVixDQUF4QixFQUE2QztBQUMzQ1gsTUFBQUEsWUFBWSxDQUFDWSxTQUFiLENBQXVCTCxHQUF2QixJQUE4QkMsRUFBOUI7QUFDRDtBQUNGOztBQUVERixFQUFBQSxVQUFVLEdBQUk7QUFDWixTQUFLTyxNQUFMLEdBQWMsSUFBZDtBQUNBLFNBQUtDLFdBQUwsR0FBbUIsSUFBbkI7QUFDQSxTQUFLQyxhQUFMLEdBQXFCLEtBQXJCO0FBQ0EsU0FBS0MsZUFBTCxHQUF1QixJQUF2QjtBQUNEOztBQUVEQyxFQUFBQSxXQUFXLEdBQUk7QUFDYixXQUFPLEtBQUtGLGFBQVo7QUFDRDs7QUFFREcsRUFBQUEsaUJBQWlCLEdBQUk7QUFDbkIsV0FBT3BCLFFBQVA7QUFDRDs7QUFFRHFCLEVBQUFBLFFBQVEsR0FBSTtBQUNWLFdBQU8sSUFBUDtBQUNEOztBQUVrQixRQUFiQyxhQUFhLENBQUUsR0FBR0MsSUFBTCxFQUFXO0FBQzVCLFVBQU0sQ0FBQ0MsU0FBRCxFQUFZQyxJQUFaLElBQW9CLE1BQU0sTUFBTUgsYUFBTixDQUFvQixHQUFHQyxJQUF2QixDQUFoQztBQUNBLFNBQUtSLE1BQUwsR0FBYyxJQUFJVyxlQUFKLEVBQWQ7O0FBQ0EsUUFBSTtBQUNGLFlBQU0sS0FBS1gsTUFBTCxDQUFZWSxLQUFaLENBQWtCLGdDQUFvQkYsSUFBcEIsQ0FBbEIsQ0FBTjtBQUNELEtBRkQsQ0FFRSxPQUFPRyxDQUFQLEVBQVU7QUFDVixZQUFNLEtBQUtDLGFBQUwsRUFBTjtBQUNBLFlBQU1ELENBQU47QUFDRDs7QUFDRCxTQUFLWixXQUFMLEdBQW1CLEtBQUtELE1BQUwsQ0FBWWUsS0FBWixDQUFrQmQsV0FBbEIsQ0FBOEJlLElBQTlCLENBQW1DLEtBQUtoQixNQUFMLENBQVllLEtBQS9DLENBQW5CO0FBQ0EsU0FBS2IsYUFBTCxHQUFxQixJQUFyQjtBQUNBLFdBQU8sQ0FBQ08sU0FBRCxFQUFZQyxJQUFaLENBQVA7QUFDRDs7QUFFa0IsUUFBYkksYUFBYSxHQUFJO0FBQUE7O0FBQ3JCRyxvQkFBSUMsSUFBSixDQUFTLHVCQUFUOztBQUNBLG9DQUFNLEtBQUtmLGVBQVgsMERBQU0sc0JBQXNCZ0IsSUFBdEIsQ0FBMkIsSUFBM0IsQ0FBTjtBQUNBLDJCQUFNLEtBQUtuQixNQUFYLGlEQUFNLGFBQWFtQixJQUFiLEVBQU47QUFDQSxTQUFLMUIsVUFBTDtBQUVBLFVBQU0sTUFBTXFCLGFBQU4sRUFBTjtBQUNEOztBQTdEbUM7O2VBZ0V2QjNCLFkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgQmFzZURyaXZlciB9IGZyb20gJ0BhcHBpdW0vYmFzZS1kcml2ZXInO1xuaW1wb3J0IGxvZyBmcm9tICcuL2xvZ2dlcic7XG5pbXBvcnQgU2FmYXJpRHJpdmVyU2VydmVyIGZyb20gJy4vc2FmYXJpJztcbmltcG9ydCB7IGRlc2lyZWRDYXBDb25zdHJhaW50cyB9IGZyb20gJy4vZGVzaXJlZC1jYXBzJztcbmltcG9ydCBjb21tYW5kcyBmcm9tICcuL2NvbW1hbmRzL2luZGV4JztcbmltcG9ydCB7IGZvcm1hdENhcHNGb3JTZXJ2ZXIgfSBmcm9tICcuL3V0aWxzJztcblxuY29uc3QgTk9fUFJPWFkgPSBbXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2FwcGl1bScpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2FwcGl1bScpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2VsZW1lbnQvW14vXSsvZWxlbWVudHM/JCcpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2VsZW1lbnRzPyQnKV0sXG5dO1xuXG5jbGFzcyBTYWZhcmlEcml2ZXIgZXh0ZW5kcyBCYXNlRHJpdmVyIHtcbiAgY29uc3RydWN0b3IgKG9wdHMgPSB7fSkge1xuICAgIHN1cGVyKG9wdHMpO1xuICAgIHRoaXMuZGVzaXJlZENhcENvbnN0cmFpbnRzID0gZGVzaXJlZENhcENvbnN0cmFpbnRzO1xuICAgIHRoaXMubG9jYXRvclN0cmF0ZWdpZXMgPSBbXG4gICAgICAneHBhdGgnLFxuICAgICAgJ3RhZyBuYW1lJyxcbiAgICAgICdsaW5rIHRleHQnLFxuICAgICAgJ3BhcnRpYWwgbGluayB0ZXh0JyxcbiAgICAgICdjc3Mgc2VsZWN0b3InLFxuICAgICAgLy8gTGV0IHRoZXNlIHR3byByZWFjaCBTYWZhcmkgRHJpdmVyIGFuZCBmYWlsIHRoZXJlIHdpdGggYSBwcm9wZXIgZXJyb3IgbWVzc2FnZVxuICAgICAgJ2lkJyxcbiAgICAgICduYW1lJyxcbiAgICBdO1xuICAgIHRoaXMucmVzZXRTdGF0ZSgpO1xuXG4gICAgZm9yIChjb25zdCBbY21kLCBmbl0gb2YgXy50b1BhaXJzKGNvbW1hbmRzKSkge1xuICAgICAgU2FmYXJpRHJpdmVyLnByb3RvdHlwZVtjbWRdID0gZm47XG4gICAgfVxuICB9XG5cbiAgcmVzZXRTdGF0ZSAoKSB7XG4gICAgdGhpcy5zYWZhcmkgPSBudWxsO1xuICAgIHRoaXMucHJveHlSZXFSZXMgPSBudWxsO1xuICAgIHRoaXMuaXNQcm94eUFjdGl2ZSA9IGZhbHNlO1xuICAgIHRoaXMuX3NjcmVlblJlY29yZGVyID0gbnVsbDtcbiAgfVxuXG4gIHByb3h5QWN0aXZlICgpIHtcbiAgICByZXR1cm4gdGhpcy5pc1Byb3h5QWN0aXZlO1xuICB9XG5cbiAgZ2V0UHJveHlBdm9pZExpc3QgKCkge1xuICAgIHJldHVybiBOT19QUk9YWTtcbiAgfVxuXG4gIGNhblByb3h5ICgpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZVNlc3Npb24gKC4uLmFyZ3MpIHtcbiAgICBjb25zdCBbc2Vzc2lvbklkLCBjYXBzXSA9IGF3YWl0IHN1cGVyLmNyZWF0ZVNlc3Npb24oLi4uYXJncyk7XG4gICAgdGhpcy5zYWZhcmkgPSBuZXcgU2FmYXJpRHJpdmVyU2VydmVyKCk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMuc2FmYXJpLnN0YXJ0KGZvcm1hdENhcHNGb3JTZXJ2ZXIoY2FwcykpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGF3YWl0IHRoaXMuZGVsZXRlU2Vzc2lvbigpO1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gICAgdGhpcy5wcm94eVJlcVJlcyA9IHRoaXMuc2FmYXJpLnByb3h5LnByb3h5UmVxUmVzLmJpbmQodGhpcy5zYWZhcmkucHJveHkpO1xuICAgIHRoaXMuaXNQcm94eUFjdGl2ZSA9IHRydWU7XG4gICAgcmV0dXJuIFtzZXNzaW9uSWQsIGNhcHNdO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlU2Vzc2lvbiAoKSB7XG4gICAgbG9nLmluZm8oJ0VuZGluZyBTYWZhcmkgc2Vzc2lvbicpO1xuICAgIGF3YWl0IHRoaXMuX3NjcmVlblJlY29yZGVyPy5zdG9wKHRydWUpO1xuICAgIGF3YWl0IHRoaXMuc2FmYXJpPy5zdG9wKCk7XG4gICAgdGhpcy5yZXNldFN0YXRlKCk7XG5cbiAgICBhd2FpdCBzdXBlci5kZWxldGVTZXNzaW9uKCk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgU2FmYXJpRHJpdmVyO1xuIl0sImZpbGUiOiJsaWIvZHJpdmVyLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uIn0=
@@ -7,12 +7,12 @@ exports.default = void 0;
7
7
 
8
8
  require("source-map-support/register");
9
9
 
10
- var _appiumSupport = require("appium-support");
10
+ var _support = require("@appium/support");
11
11
 
12
- const log = _appiumSupport.logger.getLogger('Safari');
12
+ const log = _support.logger.getLogger('Safari');
13
13
 
14
14
  var _default = log;
15
15
  exports.default = _default;require('source-map-support').install();
16
16
 
17
17
 
18
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9sb2dnZXIuanMiXSwibmFtZXMiOlsibG9nIiwibG9nZ2VyIiwiZ2V0TG9nZ2VyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFFQSxNQUFNQSxHQUFHLEdBQUdDLHNCQUFPQyxTQUFQLENBQWlCLFFBQWpCLENBQVo7O2VBRWVGLEciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBsb2dnZXIgfSBmcm9tICdhcHBpdW0tc3VwcG9ydCc7XG5cbmNvbnN0IGxvZyA9IGxvZ2dlci5nZXRMb2dnZXIoJ1NhZmFyaScpO1xuXG5leHBvcnQgZGVmYXVsdCBsb2c7XG4iXSwiZmlsZSI6ImxpYi9sb2dnZXIuanMiLCJzb3VyY2VSb290IjoiLi4vLi4ifQ==
18
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9sb2dnZXIuanMiXSwibmFtZXMiOlsibG9nIiwibG9nZ2VyIiwiZ2V0TG9nZ2VyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFFQSxNQUFNQSxHQUFHLEdBQUdDLGdCQUFPQyxTQUFQLENBQWlCLFFBQWpCLENBQVo7O2VBRWVGLEciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBsb2dnZXIgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuXG5jb25zdCBsb2cgPSBsb2dnZXIuZ2V0TG9nZ2VyKCdTYWZhcmknKTtcblxuZXhwb3J0IGRlZmF1bHQgbG9nO1xuIl0sImZpbGUiOiJsaWIvbG9nZ2VyLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uIn0=
@@ -13,9 +13,9 @@ var _os = _interopRequireDefault(require("os"));
13
13
 
14
14
  var _path = _interopRequireDefault(require("path"));
15
15
 
16
- var _appiumBaseDriver = require("appium-base-driver");
16
+ var _baseDriver = require("@appium/base-driver");
17
17
 
18
- var _appiumSupport = require("appium-support");
18
+ var _support = require("@appium/support");
19
19
 
20
20
  var _teen_process = require("teen_process");
21
21
 
@@ -25,21 +25,21 @@ var _portscanner = require("portscanner");
25
25
 
26
26
  var _child_process = require("child_process");
27
27
 
28
- const log = _appiumSupport.logger.getLogger('SafariDriverServer');
28
+ const log = _support.logger.getLogger('SafariDriverServer');
29
29
 
30
30
  const SD_BINARY = 'safaridriver';
31
31
  const STARTUP_TIMEOUT = 10000;
32
32
  const SAFARI_PORT_RANGE = [5100, 5200];
33
33
 
34
- const SAFARI_SERVER_GUARD = _appiumSupport.util.getLockFileGuard(_path.default.resolve(_os.default.tmpdir(), 'safari_server_guard.lock'), {
34
+ const SAFARI_SERVER_GUARD = _support.util.getLockFileGuard(_path.default.resolve(_os.default.tmpdir(), 'safari_server_guard.lock'), {
35
35
  timeout: 5,
36
36
  tryRecovery: true
37
37
  });
38
38
 
39
- class SafariProxy extends _appiumBaseDriver.JWProxy {
39
+ class SafariProxy extends _baseDriver.JWProxy {
40
40
  async proxyCommand(url, method, body = null) {
41
41
  if (this.didProcessExit) {
42
- throw new _appiumBaseDriver.errors.InvalidContextError(`'${method} ${url}' cannot be proxied to Safari Driver server because ` + 'the process is not running (probably crashed). Check the server log for more details');
42
+ throw new _baseDriver.errors.InvalidContextError(`'${method} ${url}' cannot be proxied to Safari Driver server because ` + 'the process is not running (probably crashed). Check the server log for more details');
43
43
  }
44
44
 
45
45
  return await super.proxyCommand(url, method, body);
@@ -56,7 +56,7 @@ class SafariDriverProcess {
56
56
  get isRunning() {
57
57
  var _this$proc;
58
58
 
59
- return !!((_this$proc = this.proc) === null || _this$proc === void 0 ? void 0 : _this$proc.isRunning);
59
+ return !!((_this$proc = this.proc) !== null && _this$proc !== void 0 && _this$proc.isRunning);
60
60
  }
61
61
 
62
62
  async init() {
@@ -76,7 +76,7 @@ class SafariDriverProcess {
76
76
  let safariBin;
77
77
 
78
78
  try {
79
- safariBin = await _appiumSupport.fs.which(SD_BINARY);
79
+ safariBin = await _support.fs.which(SD_BINARY);
80
80
  } catch (e) {
81
81
  throw new Error(`${SD_BINARY} binary cannot be found in PATH. ` + `Please make sure it is present on your system`);
82
82
  }
@@ -179,7 +179,7 @@ class SafariDriverServer {
179
179
  return;
180
180
  }
181
181
 
182
- if ((_this$proxy = this.proxy) === null || _this$proxy === void 0 ? void 0 : _this$proxy.sessionId) {
182
+ if ((_this$proxy = this.proxy) !== null && _this$proxy !== void 0 && _this$proxy.sessionId) {
183
183
  try {
184
184
  await this.proxy.command(`/session/${this.proxy.sessionId}`, 'DELETE');
185
185
  } catch (e) {
@@ -194,4 +194,4 @@ var _default = SafariDriverServer;
194
194
  exports.default = _default;require('source-map-support').install();
195
195
 
196
196
 
197
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9zYWZhcmkuanMiXSwibmFtZXMiOlsibG9nIiwibG9nZ2VyIiwiZ2V0TG9nZ2VyIiwiU0RfQklOQVJZIiwiU1RBUlRVUF9USU1FT1VUIiwiU0FGQVJJX1BPUlRfUkFOR0UiLCJTQUZBUklfU0VSVkVSX0dVQVJEIiwidXRpbCIsImdldExvY2tGaWxlR3VhcmQiLCJwYXRoIiwicmVzb2x2ZSIsIm9zIiwidG1wZGlyIiwidGltZW91dCIsInRyeVJlY292ZXJ5IiwiU2FmYXJpUHJveHkiLCJKV1Byb3h5IiwicHJveHlDb21tYW5kIiwidXJsIiwibWV0aG9kIiwiYm9keSIsImRpZFByb2Nlc3NFeGl0IiwiZXJyb3JzIiwiSW52YWxpZENvbnRleHRFcnJvciIsIlNhZmFyaURyaXZlclByb2Nlc3MiLCJjb25zdHJ1Y3RvciIsInBvcnQiLCJwcm9jIiwiaXNSdW5uaW5nIiwiaW5pdCIsInN0YXJ0UG9ydCIsImVuZFBvcnQiLCJlIiwiRXJyb3IiLCJzYWZhcmlCaW4iLCJmcyIsIndoaWNoIiwiU3ViUHJvY2VzcyIsIm9uIiwic3Rkb3V0Iiwic3RkZXJyIiwibGluZSIsImRlYnVnIiwiY29kZSIsInNpZ25hbCIsImluZm8iLCJzdGFydCIsImtpbGwiLCJzdG9wIiwiaWduIiwiU0FGQVJJX0RSSVZFUl9QUk9DRVNTIiwicHJvY2VzcyIsIm9uY2UiLCJwaWQiLCJTYWZhcmlEcml2ZXJTZXJ2ZXIiLCJwcm94eSIsImNhcHMiLCJzZXJ2ZXIiLCJiYXNlIiwia2VlcEFsaXZlIiwiY29tbWFuZCIsImVyciIsIm1lc3NhZ2UiLCJ3YWl0TXMiLCJpbnRlcnZhbE1zIiwidGVzdCIsImNhcGFiaWxpdGllcyIsImZpcnN0TWF0Y2giLCJhbHdheXNNYXRjaCIsInNlc3Npb25JZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQSxNQUFNQSxHQUFHLEdBQUdDLHNCQUFPQyxTQUFQLENBQWlC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LEVBQUUsQ0FBQyxFQUFELENBREE7QUFFWkMsUUFBQUEsV0FBVyxFQUFFWjtBQUZEO0FBRDZCLEtBQXZDLENBQU47QUFNRDs7QUFFRCxRQUFNUixJQUFOLEdBQWM7QUFBQTs7QUFDWixRQUFJLENBQUMsS0FBS3BCLFNBQVYsRUFBcUI7QUFDbkI1QixNQUFBQSxHQUFHLENBQUM2QyxJQUFKLENBQVUsR0FBRTFDLFNBQVUsK0RBQXRCO0FBQ0E7QUFDRDs7QUFFRCx1QkFBSSxLQUFLb0QsS0FBVCxnREFBSSxZQUFZYyxTQUFoQixFQUEyQjtBQUN6QixVQUFJO0FBQ0YsY0FBTSxLQUFLZCxLQUFMLENBQVdLLE9BQVgsQ0FBb0IsWUFBVyxLQUFLTCxLQUFMLENBQVdjLFNBQVUsRUFBcEQsRUFBdUQsUUFBdkQsQ0FBTjtBQUNELE9BRkQsQ0FFRSxPQUFPckMsQ0FBUCxFQUFVO0FBQ1ZoQyxRQUFBQSxHQUFHLENBQUM2QyxJQUFKLENBQVUsR0FBRTFDLFNBQVUsK0NBQThDNkIsQ0FBQyxDQUFDOEIsT0FBUSxFQUE5RTtBQUNEO0FBQ0Y7QUFDRjs7QUF4RXNCOztlQTJFVlIsa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgb3MgZnJvbSAnb3MnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBKV1Byb3h5LCBlcnJvcnMgfSBmcm9tICdhcHBpdW0tYmFzZS1kcml2ZXInO1xuaW1wb3J0IHsgZnMsIGxvZ2dlciwgdXRpbCB9IGZyb20gJ2FwcGl1bS1zdXBwb3J0JztcbmltcG9ydCB7IFN1YlByb2Nlc3MgfSBmcm9tICd0ZWVuX3Byb2Nlc3MnO1xuaW1wb3J0IHsgd2FpdEZvckNvbmRpdGlvbiB9IGZyb20gJ2FzeW5jYm94JztcbmltcG9ydCB7IGZpbmRBUG9ydE5vdEluVXNlIH0gZnJvbSAncG9ydHNjYW5uZXInO1xuaW1wb3J0IHsgZXhlY1N5bmMgfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcblxuY29uc3QgbG9nID0gbG9nZ2VyLmdldExvZ2dlcignU2FmYXJpRHJpdmVyU2VydmVyJyk7XG5cbmNvbnN0IFNEX0JJTkFSWSA9ICdzYWZhcmlkcml2ZXInO1xuY29uc3QgU1RBUlRVUF9USU1FT1VUID0gMTAwMDA7IC8vIHNlY29uZHNcbmNvbnN0IFNBRkFSSV9QT1JUX1JBTkdFID0gWzUxMDAsIDUyMDBdO1xuLy8gVGhpcyBndWFyZCBpcyBuZWVkZWQgdG8gbWFrZSBzdXJlXG4vLyB3ZSBuZXZlciBydW4gbXVsdGlwbGUgU2FmYXJpIGRyaXZlciBwcm9jZXNzZXMgZm9yIHRoZSBzYW1lIEFwcGl1bSBwcm9jZXNzXG5jb25zdCBTQUZBUklfU0VSVkVSX0dVQVJEID0gdXRpbC5nZXRMb2NrRmlsZUd1YXJkKFxuICBwYXRoLnJlc29sdmUob3MudG1wZGlyKCksICdzYWZhcmlfc2VydmVyX2d1YXJkLmxvY2snKSxcbiAge3RpbWVvdXQ6IDUsIHRyeVJlY292ZXJ5OiB0cnVlfVxuKTtcblxuXG5jbGFzcyBTYWZhcmlQcm94eSBleHRlbmRzIEpXUHJveHkge1xuICBhc3luYyBwcm94eUNvbW1hbmQgKHVybCwgbWV0aG9kLCBib2R5ID0gbnVsbCkge1xuICAgIGlmICh0aGlzLmRpZFByb2Nlc3NFeGl0KSB7XG4gICAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRDb250ZXh0RXJyb3IoXG4gICAgICAgIGAnJHttZXRob2R9ICR7dXJsfScgY2Fubm90IGJlIHByb3hpZWQgdG8gU2FmYXJpIERyaXZlciBzZXJ2ZXIgYmVjYXVzZSBgICtcbiAgICAgICAgJ3RoZSBwcm9jZXNzIGlzIG5vdCBydW5uaW5nIChwcm9iYWJseSBjcmFzaGVkKS4gQ2hlY2sgdGhlIHNlcnZlciBsb2cgZm9yIG1vcmUgZGV0YWlscycpO1xuICAgIH1cbiAgICByZXR1cm4gYXdhaXQgc3VwZXIucHJveHlDb21tYW5kKHVybCwgbWV0aG9kLCBib2R5KTtcbiAgfVxufVxuXG5cbmNsYXNzIFNhZmFyaURyaXZlclByb2Nlc3Mge1xuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgdGhpcy5wb3J0ID0gbnVsbDtcbiAgICB0aGlzLnByb2MgPSBudWxsO1xuICB9XG5cbiAgZ2V0IGlzUnVubmluZyAoKSB7XG4gICAgcmV0dXJuICEhKHRoaXMucHJvYz8uaXNSdW5uaW5nKTtcbiAgfVxuXG4gIGFzeW5jIGluaXQgKCkge1xuICAgIGF3YWl0IFNBRkFSSV9TRVJWRVJfR1VBUkQoYXN5bmMgKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuaXNSdW5uaW5nKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgW3N0YXJ0UG9ydCwgZW5kUG9ydF0gPSBTQUZBUklfUE9SVF9SQU5HRTtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMucG9ydCA9IGF3YWl0IGZpbmRBUG9ydE5vdEluVXNlKHN0YXJ0UG9ydCwgZW5kUG9ydCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgQ2Fubm90IGZpbmQgYW55IGZyZWUgcG9ydCBpbiByYW5nZSAke3N0YXJ0UG9ydH0uLiR7ZW5kUG9ydH0uIGAgK1xuICAgICAgICAgIGBEb3VibGUgY2hlY2sgdGhlIHByb2Nlc3NlcyB0aGF0IGFyZSBsb2NraW5nIHBvcnRzIHdpdGhpbiB0aGlzIHJhbmdlIGFuZCB0ZXJtaW5hdGUgYCArXG4gICAgICAgICAgYHRoZXNlIHdoaWNoIGFyZSBub3QgbmVlZGVkIGFueW1vcmVgKTtcbiAgICAgIH1cblxuICAgICAgbGV0IHNhZmFyaUJpbjtcbiAgICAgIHRyeSB7XG4gICAgICAgIHNhZmFyaUJpbiA9IGF3YWl0IGZzLndoaWNoKFNEX0JJTkFSWSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgJHtTRF9CSU5BUll9IGJpbmFyeSBjYW5ub3QgYmUgZm91bmQgaW4gUEFUSC4gYCArXG4gICAgICAgICAgYFBsZWFzZSBtYWtlIHN1cmUgaXQgaXMgcHJlc2VudCBvbiB5b3VyIHN5c3RlbWApO1xuICAgICAgfVxuICAgICAgdGhpcy5wcm9jID0gbmV3IFN1YlByb2Nlc3Moc2FmYXJpQmluLCBbJy1wJywgdGhpcy5wb3J0LCAnLS1kaWFnbm9zZSddKTtcbiAgICAgIHRoaXMucHJvYy5vbignb3V0cHV0JywgKHN0ZG91dCwgc3RkZXJyKSA9PiB7XG4gICAgICAgIGNvbnN0IGxpbmUgPSBzdGRvdXQgfHwgc3RkZXJyO1xuICAgICAgICBsb2cuZGVidWcoYFske1NEX0JJTkFSWX1dICR7bGluZX1gKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5wcm9jLm9uKCdleGl0JywgKGNvZGUsIHNpZ25hbCkgPT4ge1xuICAgICAgICBsb2cuaW5mbyhgJHtTRF9CSU5BUll9IGhhcyBleGl0ZWQgd2l0aCBjb2RlICR7Y29kZX0sIHNpZ25hbCAke3NpZ25hbH1gKTtcbiAgICAgIH0pO1xuICAgICAgbG9nLmluZm8oYFN0YXJ0aW5nICcke3NhZmFyaUJpbn0nIG9uIHBvcnQgJHt0aGlzLnBvcnR9YCk7XG4gICAgICBhd2FpdCB0aGlzLnByb2Muc3RhcnQoMCk7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBraWxsICgpIHtcbiAgICBpZiAodGhpcy5pc1J1bm5pbmcpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHRoaXMucHJvYy5zdG9wKCdTSUdLSUxMJyk7XG4gICAgICB9IGNhdGNoIChpZ24pIHt9XG4gICAgfVxuICB9XG59XG5cbi8vIFNpbmdsZSBzZXJ2ZXIgcHJvY2VzcyBwZXIgQXBwaXVtIGluc3RhbmNlXG5jb25zdCBTQUZBUklfRFJJVkVSX1BST0NFU1MgPSBuZXcgU2FmYXJpRHJpdmVyUHJvY2VzcygpO1xucHJvY2Vzcy5vbmNlKCdleGl0JywgKCkgPT4ge1xuICBpZiAoU0FGQVJJX0RSSVZFUl9QUk9DRVNTLmlzUnVubmluZykge1xuICAgIHRyeSB7XG4gICAgICBleGVjU3luYyhga2lsbCAke1NBRkFSSV9EUklWRVJfUFJPQ0VTUy5wcm9jLnBpZH1gKTtcbiAgICB9IGNhdGNoIChpZ24pIHt9XG4gIH1cbn0pO1xuXG5jbGFzcyBTYWZhcmlEcml2ZXJTZXJ2ZXIge1xuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgdGhpcy5wcm94eSA9IG51bGw7XG4gIH1cblxuICBnZXQgaXNSdW5uaW5nICgpIHtcbiAgICByZXR1cm4gISEoU0FGQVJJX0RSSVZFUl9QUk9DRVNTLmlzUnVubmluZyk7XG4gIH1cblxuICBhc3luYyBzdGFydCAoY2Fwcykge1xuICAgIGF3YWl0IFNBRkFSSV9EUklWRVJfUFJPQ0VTUy5pbml0KCk7XG5cbiAgICB0aGlzLnByb3h5ID0gbmV3IFNhZmFyaVByb3h5KHtcbiAgICAgIHNlcnZlcjogJzEyNy4wLjAuMScsXG4gICAgICBwb3J0OiBTQUZBUklfRFJJVkVSX1BST0NFU1MucG9ydCxcbiAgICAgIGJhc2U6ICcnLFxuICAgICAga2VlcEFsaXZlOiB0cnVlLFxuICAgIH0pO1xuICAgIHRoaXMucHJveHkuZGlkUHJvY2Vzc0V4aXQgPSBmYWxzZTtcbiAgICBTQUZBUklfRFJJVkVSX1BST0NFU1MucHJvYy5vbignZXhpdCcsICgpID0+IHtcbiAgICAgIHRoaXMucHJveHkuZGlkUHJvY2Vzc0V4aXQgPSB0cnVlO1xuICAgIH0pO1xuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHdhaXRGb3JDb25kaXRpb24oYXN5bmMgKCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IHRoaXMucHJveHkuY29tbWFuZCgnL3N0YXR1cycsICdHRVQnKTtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgaWYgKHRoaXMucHJveHkuZGlkUHJvY2Vzc0V4aXQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnIubWVzc2FnZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSwge1xuICAgICAgICB3YWl0TXM6IFNUQVJUVVBfVElNRU9VVCxcbiAgICAgICAgaW50ZXJ2YWxNczogMTAwMCxcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlmICgvQ29uZGl0aW9uIHVubWV0Ly50ZXN0KGUubWVzc2FnZSkpIHtcbiAgICAgICAgaWYgKFNBRkFSSV9EUklWRVJfUFJPQ0VTUy5pc1J1bm5pbmcpIHtcbiAgICAgICAgICAvLyBhdm9pZCBcImZyb3plblwiIHByb2Nlc3NlcyxcbiAgICAgICAgICBhd2FpdCBTQUZBUklfRFJJVkVSX1BST0NFU1Mua2lsbCgpO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgU2FmYXJpIERyaXZlciBzZXJ2ZXIgaXMgbm90IGxpc3RlbmluZyB3aXRoaW4gJHtTVEFSVFVQX1RJTUVPVVR9bXMgdGltZW91dC4gYCArXG4gICAgICAgICAgYE1ha2Ugc3VyZSBpdCBoYXMgYmVlbiBleGVjdXRlZCBtYW51YWxseSBhdCBsZWFzdCBvbmNlIHdpdGggJy0tZW5hYmxlJyBjb21tYW5kIGxpbmUgYXJndW1lbnQuIGAgK1xuICAgICAgICAgIGBDaGVjayB0aGUgc2VydmVyIGxvZyBmb3IgbW9yZSBkZXRhaWxzYCk7XG4gICAgICB9XG4gICAgICB0aHJvdyBlO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMucHJveHkuY29tbWFuZCgnL3Nlc3Npb24nLCAnUE9TVCcsIHtcbiAgICAgIGNhcGFiaWxpdGllczoge1xuICAgICAgICBmaXJzdE1hdGNoOiBbe31dLFxuICAgICAgICBhbHdheXNNYXRjaDogY2FwcyxcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHN0b3AgKCkge1xuICAgIGlmICghdGhpcy5pc1J1bm5pbmcpIHtcbiAgICAgIGxvZy5pbmZvKGAke1NEX0JJTkFSWX0gc2Vzc2lvbiBjYW5ub3QgYmUgc3RvcHBlZCwgYmVjYXVzZSB0aGUgc2VydmVyIGlzIG5vdCBydW5uaW5nYCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucHJveHk/LnNlc3Npb25JZCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgdGhpcy5wcm94eS5jb21tYW5kKGAvc2Vzc2lvbi8ke3RoaXMucHJveHkuc2Vzc2lvbklkfWAsICdERUxFVEUnKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgbG9nLmluZm8oYCR7U0RfQklOQVJZfSBzZXNzaW9uIGNhbm5vdCBiZSBkZWxldGVkLiBPcmlnaW5hbCBlcnJvcjogJHtlLm1lc3NhZ2V9YCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFNhZmFyaURyaXZlclNlcnZlcjtcbiJdLCJmaWxlIjoibGliL3NhZmFyaS5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLiJ9
197
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9zYWZhcmkuanMiXSwibmFtZXMiOlsibG9nIiwibG9nZ2VyIiwiZ2V0TG9nZ2VyIiwiU0RfQklOQVJZIiwiU1RBUlRVUF9USU1FT1VUIiwiU0FGQVJJX1BPUlRfUkFOR0UiLCJTQUZBUklfU0VSVkVSX0dVQVJEIiwidXRpbCIsImdldExvY2tGaWxlR3VhcmQiLCJwYXRoIiwicmVzb2x2ZSIsIm9zIiwidG1wZGlyIiwidGltZW91dCIsInRyeVJlY292ZXJ5IiwiU2FmYXJpUHJveHkiLCJKV1Byb3h5IiwicHJveHlDb21tYW5kIiwidXJsIiwibWV0aG9kIiwiYm9keSIsImRpZFByb2Nlc3NFeGl0IiwiZXJyb3JzIiwiSW52YWxpZENvbnRleHRFcnJvciIsIlNhZmFyaURyaXZlclByb2Nlc3MiLCJjb25zdHJ1Y3RvciIsInBvcnQiLCJwcm9jIiwiaXNSdW5uaW5nIiwiaW5pdCIsInN0YXJ0UG9ydCIsImVuZFBvcnQiLCJlIiwiRXJyb3IiLCJzYWZhcmlCaW4iLCJmcyIsIndoaWNoIiwiU3ViUHJvY2VzcyIsIm9uIiwic3Rkb3V0Iiwic3RkZXJyIiwibGluZSIsImRlYnVnIiwiY29kZSIsInNpZ25hbCIsImluZm8iLCJzdGFydCIsImtpbGwiLCJzdG9wIiwiaWduIiwiU0FGQVJJX0RSSVZFUl9QUk9DRVNTIiwicHJvY2VzcyIsIm9uY2UiLCJwaWQiLCJTYWZhcmlEcml2ZXJTZXJ2ZXIiLCJwcm94eSIsImNhcHMiLCJzZXJ2ZXIiLCJiYXNlIiwia2VlcEFsaXZlIiwiY29tbWFuZCIsImVyciIsIm1lc3NhZ2UiLCJ3YWl0TXMiLCJpbnRlcnZhbE1zIiwidGVzdCIsImNhcGFiaWxpdGllcyIsImZpcnN0TWF0Y2giLCJhbHdheXNNYXRjaCIsInNlc3Npb25JZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQSxNQUFNQSxHQUFHLEdBQUdDLGdCQUFPQyxTQUFQLENBQWlC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RUFBRCxDQURBO0FBRVpDLFFBQUFBLFdBQVcsRUFBRVo7QUFGRDtBQUQ2QixLQUF2QyxDQUFOO0FBTUQ7O0FBRVMsUUFBSlIsSUFBSSxHQUFJO0FBQUE7O0FBQ1osUUFBSSxDQUFDLEtBQUtwQixTQUFWLEVBQXFCO0FBQ25CNUIsTUFBQUEsR0FBRyxDQUFDNkMsSUFBSixDQUFVLEdBQUUxQyxTQUFVLCtEQUF0QjtBQUNBO0FBQ0Q7O0FBRUQsdUJBQUksS0FBS29ELEtBQVQsd0NBQUksWUFBWWMsU0FBaEIsRUFBMkI7QUFDekIsVUFBSTtBQUNGLGNBQU0sS0FBS2QsS0FBTCxDQUFXSyxPQUFYLENBQW9CLFlBQVcsS0FBS0wsS0FBTCxDQUFXYyxTQUFVLEVBQXBELEVBQXVELFFBQXZELENBQU47QUFDRCxPQUZELENBRUUsT0FBT3JDLENBQVAsRUFBVTtBQUNWaEMsUUFBQUEsR0FBRyxDQUFDNkMsSUFBSixDQUFVLEdBQUUxQyxTQUFVLCtDQUE4QzZCLENBQUMsQ0FBQzhCLE9BQVEsRUFBOUU7QUFDRDtBQUNGO0FBQ0Y7O0FBeEVzQjs7ZUEyRVZSLGtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG9zIGZyb20gJ29zJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgSldQcm94eSwgZXJyb3JzIH0gZnJvbSAnQGFwcGl1bS9iYXNlLWRyaXZlcic7XG5pbXBvcnQgeyBmcywgbG9nZ2VyLCB1dGlsIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCB7IFN1YlByb2Nlc3MgfSBmcm9tICd0ZWVuX3Byb2Nlc3MnO1xuaW1wb3J0IHsgd2FpdEZvckNvbmRpdGlvbiB9IGZyb20gJ2FzeW5jYm94JztcbmltcG9ydCB7IGZpbmRBUG9ydE5vdEluVXNlIH0gZnJvbSAncG9ydHNjYW5uZXInO1xuaW1wb3J0IHsgZXhlY1N5bmMgfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcblxuY29uc3QgbG9nID0gbG9nZ2VyLmdldExvZ2dlcignU2FmYXJpRHJpdmVyU2VydmVyJyk7XG5cbmNvbnN0IFNEX0JJTkFSWSA9ICdzYWZhcmlkcml2ZXInO1xuY29uc3QgU1RBUlRVUF9USU1FT1VUID0gMTAwMDA7IC8vIHNlY29uZHNcbmNvbnN0IFNBRkFSSV9QT1JUX1JBTkdFID0gWzUxMDAsIDUyMDBdO1xuLy8gVGhpcyBndWFyZCBpcyBuZWVkZWQgdG8gbWFrZSBzdXJlXG4vLyB3ZSBuZXZlciBydW4gbXVsdGlwbGUgU2FmYXJpIGRyaXZlciBwcm9jZXNzZXMgZm9yIHRoZSBzYW1lIEFwcGl1bSBwcm9jZXNzXG5jb25zdCBTQUZBUklfU0VSVkVSX0dVQVJEID0gdXRpbC5nZXRMb2NrRmlsZUd1YXJkKFxuICBwYXRoLnJlc29sdmUob3MudG1wZGlyKCksICdzYWZhcmlfc2VydmVyX2d1YXJkLmxvY2snKSxcbiAge3RpbWVvdXQ6IDUsIHRyeVJlY292ZXJ5OiB0cnVlfVxuKTtcblxuXG5jbGFzcyBTYWZhcmlQcm94eSBleHRlbmRzIEpXUHJveHkge1xuICBhc3luYyBwcm94eUNvbW1hbmQgKHVybCwgbWV0aG9kLCBib2R5ID0gbnVsbCkge1xuICAgIGlmICh0aGlzLmRpZFByb2Nlc3NFeGl0KSB7XG4gICAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRDb250ZXh0RXJyb3IoXG4gICAgICAgIGAnJHttZXRob2R9ICR7dXJsfScgY2Fubm90IGJlIHByb3hpZWQgdG8gU2FmYXJpIERyaXZlciBzZXJ2ZXIgYmVjYXVzZSBgICtcbiAgICAgICAgJ3RoZSBwcm9jZXNzIGlzIG5vdCBydW5uaW5nIChwcm9iYWJseSBjcmFzaGVkKS4gQ2hlY2sgdGhlIHNlcnZlciBsb2cgZm9yIG1vcmUgZGV0YWlscycpO1xuICAgIH1cbiAgICByZXR1cm4gYXdhaXQgc3VwZXIucHJveHlDb21tYW5kKHVybCwgbWV0aG9kLCBib2R5KTtcbiAgfVxufVxuXG5cbmNsYXNzIFNhZmFyaURyaXZlclByb2Nlc3Mge1xuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgdGhpcy5wb3J0ID0gbnVsbDtcbiAgICB0aGlzLnByb2MgPSBudWxsO1xuICB9XG5cbiAgZ2V0IGlzUnVubmluZyAoKSB7XG4gICAgcmV0dXJuICEhKHRoaXMucHJvYz8uaXNSdW5uaW5nKTtcbiAgfVxuXG4gIGFzeW5jIGluaXQgKCkge1xuICAgIGF3YWl0IFNBRkFSSV9TRVJWRVJfR1VBUkQoYXN5bmMgKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuaXNSdW5uaW5nKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgW3N0YXJ0UG9ydCwgZW5kUG9ydF0gPSBTQUZBUklfUE9SVF9SQU5HRTtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMucG9ydCA9IGF3YWl0IGZpbmRBUG9ydE5vdEluVXNlKHN0YXJ0UG9ydCwgZW5kUG9ydCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgQ2Fubm90IGZpbmQgYW55IGZyZWUgcG9ydCBpbiByYW5nZSAke3N0YXJ0UG9ydH0uLiR7ZW5kUG9ydH0uIGAgK1xuICAgICAgICAgIGBEb3VibGUgY2hlY2sgdGhlIHByb2Nlc3NlcyB0aGF0IGFyZSBsb2NraW5nIHBvcnRzIHdpdGhpbiB0aGlzIHJhbmdlIGFuZCB0ZXJtaW5hdGUgYCArXG4gICAgICAgICAgYHRoZXNlIHdoaWNoIGFyZSBub3QgbmVlZGVkIGFueW1vcmVgKTtcbiAgICAgIH1cblxuICAgICAgbGV0IHNhZmFyaUJpbjtcbiAgICAgIHRyeSB7XG4gICAgICAgIHNhZmFyaUJpbiA9IGF3YWl0IGZzLndoaWNoKFNEX0JJTkFSWSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgJHtTRF9CSU5BUll9IGJpbmFyeSBjYW5ub3QgYmUgZm91bmQgaW4gUEFUSC4gYCArXG4gICAgICAgICAgYFBsZWFzZSBtYWtlIHN1cmUgaXQgaXMgcHJlc2VudCBvbiB5b3VyIHN5c3RlbWApO1xuICAgICAgfVxuICAgICAgdGhpcy5wcm9jID0gbmV3IFN1YlByb2Nlc3Moc2FmYXJpQmluLCBbJy1wJywgdGhpcy5wb3J0LCAnLS1kaWFnbm9zZSddKTtcbiAgICAgIHRoaXMucHJvYy5vbignb3V0cHV0JywgKHN0ZG91dCwgc3RkZXJyKSA9PiB7XG4gICAgICAgIGNvbnN0IGxpbmUgPSBzdGRvdXQgfHwgc3RkZXJyO1xuICAgICAgICBsb2cuZGVidWcoYFske1NEX0JJTkFSWX1dICR7bGluZX1gKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5wcm9jLm9uKCdleGl0JywgKGNvZGUsIHNpZ25hbCkgPT4ge1xuICAgICAgICBsb2cuaW5mbyhgJHtTRF9CSU5BUll9IGhhcyBleGl0ZWQgd2l0aCBjb2RlICR7Y29kZX0sIHNpZ25hbCAke3NpZ25hbH1gKTtcbiAgICAgIH0pO1xuICAgICAgbG9nLmluZm8oYFN0YXJ0aW5nICcke3NhZmFyaUJpbn0nIG9uIHBvcnQgJHt0aGlzLnBvcnR9YCk7XG4gICAgICBhd2FpdCB0aGlzLnByb2Muc3RhcnQoMCk7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBraWxsICgpIHtcbiAgICBpZiAodGhpcy5pc1J1bm5pbmcpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHRoaXMucHJvYy5zdG9wKCdTSUdLSUxMJyk7XG4gICAgICB9IGNhdGNoIChpZ24pIHt9XG4gICAgfVxuICB9XG59XG5cbi8vIFNpbmdsZSBzZXJ2ZXIgcHJvY2VzcyBwZXIgQXBwaXVtIGluc3RhbmNlXG5jb25zdCBTQUZBUklfRFJJVkVSX1BST0NFU1MgPSBuZXcgU2FmYXJpRHJpdmVyUHJvY2VzcygpO1xucHJvY2Vzcy5vbmNlKCdleGl0JywgKCkgPT4ge1xuICBpZiAoU0FGQVJJX0RSSVZFUl9QUk9DRVNTLmlzUnVubmluZykge1xuICAgIHRyeSB7XG4gICAgICBleGVjU3luYyhga2lsbCAke1NBRkFSSV9EUklWRVJfUFJPQ0VTUy5wcm9jLnBpZH1gKTtcbiAgICB9IGNhdGNoIChpZ24pIHt9XG4gIH1cbn0pO1xuXG5jbGFzcyBTYWZhcmlEcml2ZXJTZXJ2ZXIge1xuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgdGhpcy5wcm94eSA9IG51bGw7XG4gIH1cblxuICBnZXQgaXNSdW5uaW5nICgpIHtcbiAgICByZXR1cm4gISEoU0FGQVJJX0RSSVZFUl9QUk9DRVNTLmlzUnVubmluZyk7XG4gIH1cblxuICBhc3luYyBzdGFydCAoY2Fwcykge1xuICAgIGF3YWl0IFNBRkFSSV9EUklWRVJfUFJPQ0VTUy5pbml0KCk7XG5cbiAgICB0aGlzLnByb3h5ID0gbmV3IFNhZmFyaVByb3h5KHtcbiAgICAgIHNlcnZlcjogJzEyNy4wLjAuMScsXG4gICAgICBwb3J0OiBTQUZBUklfRFJJVkVSX1BST0NFU1MucG9ydCxcbiAgICAgIGJhc2U6ICcnLFxuICAgICAga2VlcEFsaXZlOiB0cnVlLFxuICAgIH0pO1xuICAgIHRoaXMucHJveHkuZGlkUHJvY2Vzc0V4aXQgPSBmYWxzZTtcbiAgICBTQUZBUklfRFJJVkVSX1BST0NFU1MucHJvYy5vbignZXhpdCcsICgpID0+IHtcbiAgICAgIHRoaXMucHJveHkuZGlkUHJvY2Vzc0V4aXQgPSB0cnVlO1xuICAgIH0pO1xuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHdhaXRGb3JDb25kaXRpb24oYXN5bmMgKCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IHRoaXMucHJveHkuY29tbWFuZCgnL3N0YXR1cycsICdHRVQnKTtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgaWYgKHRoaXMucHJveHkuZGlkUHJvY2Vzc0V4aXQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnIubWVzc2FnZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSwge1xuICAgICAgICB3YWl0TXM6IFNUQVJUVVBfVElNRU9VVCxcbiAgICAgICAgaW50ZXJ2YWxNczogMTAwMCxcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlmICgvQ29uZGl0aW9uIHVubWV0Ly50ZXN0KGUubWVzc2FnZSkpIHtcbiAgICAgICAgaWYgKFNBRkFSSV9EUklWRVJfUFJPQ0VTUy5pc1J1bm5pbmcpIHtcbiAgICAgICAgICAvLyBhdm9pZCBcImZyb3plblwiIHByb2Nlc3NlcyxcbiAgICAgICAgICBhd2FpdCBTQUZBUklfRFJJVkVSX1BST0NFU1Mua2lsbCgpO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgU2FmYXJpIERyaXZlciBzZXJ2ZXIgaXMgbm90IGxpc3RlbmluZyB3aXRoaW4gJHtTVEFSVFVQX1RJTUVPVVR9bXMgdGltZW91dC4gYCArXG4gICAgICAgICAgYE1ha2Ugc3VyZSBpdCBoYXMgYmVlbiBleGVjdXRlZCBtYW51YWxseSBhdCBsZWFzdCBvbmNlIHdpdGggJy0tZW5hYmxlJyBjb21tYW5kIGxpbmUgYXJndW1lbnQuIGAgK1xuICAgICAgICAgIGBDaGVjayB0aGUgc2VydmVyIGxvZyBmb3IgbW9yZSBkZXRhaWxzYCk7XG4gICAgICB9XG4gICAgICB0aHJvdyBlO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMucHJveHkuY29tbWFuZCgnL3Nlc3Npb24nLCAnUE9TVCcsIHtcbiAgICAgIGNhcGFiaWxpdGllczoge1xuICAgICAgICBmaXJzdE1hdGNoOiBbe31dLFxuICAgICAgICBhbHdheXNNYXRjaDogY2FwcyxcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHN0b3AgKCkge1xuICAgIGlmICghdGhpcy5pc1J1bm5pbmcpIHtcbiAgICAgIGxvZy5pbmZvKGAke1NEX0JJTkFSWX0gc2Vzc2lvbiBjYW5ub3QgYmUgc3RvcHBlZCwgYmVjYXVzZSB0aGUgc2VydmVyIGlzIG5vdCBydW5uaW5nYCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucHJveHk/LnNlc3Npb25JZCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgdGhpcy5wcm94eS5jb21tYW5kKGAvc2Vzc2lvbi8ke3RoaXMucHJveHkuc2Vzc2lvbklkfWAsICdERUxFVEUnKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgbG9nLmluZm8oYCR7U0RfQklOQVJZfSBzZXNzaW9uIGNhbm5vdCBiZSBkZWxldGVkLiBPcmlnaW5hbCBlcnJvcjogJHtlLm1lc3NhZ2V9YCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFNhZmFyaURyaXZlclNlcnZlcjtcbiJdLCJmaWxlIjoibGliL3NhZmFyaS5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLiJ9
@@ -11,7 +11,7 @@ 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
  var _driver = _interopRequireDefault(require("./driver"));
17
17
 
@@ -20,8 +20,8 @@ async function startServer(port, address) {
20
20
  port,
21
21
  address
22
22
  });
23
- let routeConfiguringFunction = (0, _appiumBaseDriver.routeConfiguringFunction)(d);
24
- let server = await (0, _appiumBaseDriver.server)({
23
+ let routeConfiguringFunction = (0, _baseDriver.routeConfiguringFunction)(d);
24
+ let server = await (0, _baseDriver.server)({
25
25
  routeConfiguringFunction,
26
26
  port,
27
27
  hostname: address
@@ -33,4 +33,4 @@ async function startServer(port, address) {
33
33
  }require('source-map-support').install();
34
34
 
35
35
 
36
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9zZXJ2ZXIuanMiXSwibmFtZXMiOlsic3RhcnRTZXJ2ZXIiLCJwb3J0IiwiYWRkcmVzcyIsImQiLCJTYWZhcmlEcml2ZXIiLCJyb3V0ZUNvbmZpZ3VyaW5nRnVuY3Rpb24iLCJzZXJ2ZXIiLCJob3N0bmFtZSIsImxvZyIsImluZm8iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBRUEsZUFBZUEsV0FBZixDQUE0QkMsSUFBNUIsRUFBa0NDLE9BQWxDLEVBQTJDO0FBQ3pDLE1BQUlDLENBQUMsR0FBRyxJQUFJQyxlQUFKLENBQWlCO0FBQUNILElBQUFBLElBQUQ7QUFBT0MsSUFBQUE7QUFBUCxHQUFqQixDQUFSO0FBQ0EsTUFBSUcsd0JBQXdCLEdBQUcsZ0RBQVdGLENBQVgsQ0FBL0I7QUFDQSxNQUFJRyxNQUFNLEdBQUcsTUFBTSw4QkFBVztBQUFDRCxJQUFBQSx3QkFBRDtBQUEyQkosSUFBQUEsSUFBM0I7QUFBaUNNLElBQUFBLFFBQVEsRUFBRUw7QUFBM0MsR0FBWCxDQUFuQjs7QUFDQU0sa0JBQUlDLElBQUosQ0FBVSwyQ0FBMENQLE9BQVEsSUFBR0QsSUFBSyxFQUFwRTs7QUFDQSxTQUFPSyxNQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbG9nIGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCB7IHNlcnZlciBhcyBiYXNlU2VydmVyLCByb3V0ZUNvbmZpZ3VyaW5nRnVuY3Rpb24gYXMgbWFrZVJvdXRlciB9IGZyb20gJ2FwcGl1bS1iYXNlLWRyaXZlcic7XG5pbXBvcnQgU2FmYXJpRHJpdmVyIGZyb20gJy4vZHJpdmVyJztcblxuYXN5bmMgZnVuY3Rpb24gc3RhcnRTZXJ2ZXIgKHBvcnQsIGFkZHJlc3MpIHtcbiAgbGV0IGQgPSBuZXcgU2FmYXJpRHJpdmVyKHtwb3J0LCBhZGRyZXNzfSk7XG4gIGxldCByb3V0ZUNvbmZpZ3VyaW5nRnVuY3Rpb24gPSBtYWtlUm91dGVyKGQpO1xuICBsZXQgc2VydmVyID0gYXdhaXQgYmFzZVNlcnZlcih7cm91dGVDb25maWd1cmluZ0Z1bmN0aW9uLCBwb3J0LCBob3N0bmFtZTogYWRkcmVzc30pO1xuICBsb2cuaW5mbyhgU2FmYXJpRHJpdmVyIHNlcnZlciBsaXN0ZW5pbmcgb24gaHR0cDovLyR7YWRkcmVzc306JHtwb3J0fWApO1xuICByZXR1cm4gc2VydmVyO1xufVxuXG5leHBvcnQgeyBzdGFydFNlcnZlciB9O1xuIl0sImZpbGUiOiJsaWIvc2VydmVyLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uIn0=
36
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9zZXJ2ZXIuanMiXSwibmFtZXMiOlsic3RhcnRTZXJ2ZXIiLCJwb3J0IiwiYWRkcmVzcyIsImQiLCJTYWZhcmlEcml2ZXIiLCJyb3V0ZUNvbmZpZ3VyaW5nRnVuY3Rpb24iLCJzZXJ2ZXIiLCJob3N0bmFtZSIsImxvZyIsImluZm8iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBR0E7O0FBRUEsZUFBZUEsV0FBZixDQUE0QkMsSUFBNUIsRUFBa0NDLE9BQWxDLEVBQTJDO0FBQ3pDLE1BQUlDLENBQUMsR0FBRyxJQUFJQyxlQUFKLENBQWlCO0FBQUNILElBQUFBLElBQUQ7QUFBT0MsSUFBQUE7QUFBUCxHQUFqQixDQUFSO0FBQ0EsTUFBSUcsd0JBQXdCLEdBQUcsMENBQVdGLENBQVgsQ0FBL0I7QUFDQSxNQUFJRyxNQUFNLEdBQUcsTUFBTSx3QkFBVztBQUFDRCxJQUFBQSx3QkFBRDtBQUEyQkosSUFBQUEsSUFBM0I7QUFBaUNNLElBQUFBLFFBQVEsRUFBRUw7QUFBM0MsR0FBWCxDQUFuQjs7QUFDQU0sa0JBQUlDLElBQUosQ0FBVSwyQ0FBMENQLE9BQVEsSUFBR0QsSUFBSyxFQUFwRTs7QUFDQSxTQUFPSyxNQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbG9nIGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCB7XG4gIHNlcnZlciBhcyBiYXNlU2VydmVyLCByb3V0ZUNvbmZpZ3VyaW5nRnVuY3Rpb24gYXMgbWFrZVJvdXRlclxufSBmcm9tICdAYXBwaXVtL2Jhc2UtZHJpdmVyJztcbmltcG9ydCBTYWZhcmlEcml2ZXIgZnJvbSAnLi9kcml2ZXInO1xuXG5hc3luYyBmdW5jdGlvbiBzdGFydFNlcnZlciAocG9ydCwgYWRkcmVzcykge1xuICBsZXQgZCA9IG5ldyBTYWZhcmlEcml2ZXIoe3BvcnQsIGFkZHJlc3N9KTtcbiAgbGV0IHJvdXRlQ29uZmlndXJpbmdGdW5jdGlvbiA9IG1ha2VSb3V0ZXIoZCk7XG4gIGxldCBzZXJ2ZXIgPSBhd2FpdCBiYXNlU2VydmVyKHtyb3V0ZUNvbmZpZ3VyaW5nRnVuY3Rpb24sIHBvcnQsIGhvc3RuYW1lOiBhZGRyZXNzfSk7XG4gIGxvZy5pbmZvKGBTYWZhcmlEcml2ZXIgc2VydmVyIGxpc3RlbmluZyBvbiBodHRwOi8vJHthZGRyZXNzfToke3BvcnR9YCk7XG4gIHJldHVybiBzZXJ2ZXI7XG59XG5cbmV4cG9ydCB7IHN0YXJ0U2VydmVyIH07XG4iXSwiZmlsZSI6ImxpYi9zZXJ2ZXIuanMiLCJzb3VyY2VSb290IjoiLi4vLi4ifQ==
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
 
5
5
  require("source-map-support/register");
6
6
 
7
- var _wd = _interopRequireDefault(require("wd"));
7
+ var _webdriverio = require("webdriverio");
8
8
 
9
9
  var _ = require("../..");
10
10
 
@@ -36,21 +36,24 @@ describe('Desktop SafariDriver', function () {
36
36
  }
37
37
  });
38
38
  beforeEach(async function () {
39
- driver = _wd.default.promiseChainRemote(_utils.HOST, _utils.PORT);
40
- await driver.init(CAPS);
39
+ driver = await (0, _webdriverio.remote)({
40
+ hostname: _utils.HOST,
41
+ port: _utils.PORT,
42
+ capabilities: CAPS
43
+ });
41
44
  });
42
45
  afterEach(async function () {
43
46
  if (driver) {
44
- await driver.quit();
47
+ await driver.deleteSession();
45
48
  driver = null;
46
49
  }
47
50
  });
48
51
  it('should start and stop a session', async function () {
49
- await driver.get('https://appium.io/');
50
- const button = await driver.elementByCss('#downloadLink');
51
- await button.text().should.eventually.eql('Download Appium');
52
+ await driver.url('https://appium.io/');
53
+ const button = await driver.$('#downloadLink');
54
+ await button.getText().should.eventually.eql('Download Appium');
52
55
  });
53
56
  });require('source-map-support').install();
54
57
 
55
58
 
56
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvZnVuY3Rpb25hbC9kZXNrdG9wLWRyaXZlci1lMmUtc3BlY3MuanMiXSwibmFtZXMiOlsiY2hhaSIsInNob3VsZCIsInVzZSIsImNoYWlBc1Byb21pc2VkIiwiQ0FQUyIsImJyb3dzZXJOYW1lIiwicGxhdGZvcm1OYW1lIiwiZGVzY3JpYmUiLCJ0aW1lb3V0IiwiTU9DSEFfVElNRU9VVCIsInNlcnZlciIsImRyaXZlciIsImJlZm9yZSIsIlBPUlQiLCJIT1NUIiwiYWZ0ZXIiLCJjbG9zZSIsImJlZm9yZUVhY2giLCJ3ZCIsInByb21pc2VDaGFpblJlbW90ZSIsImluaXQiLCJhZnRlckVhY2giLCJxdWl0IiwiaXQiLCJnZXQiLCJidXR0b24iLCJlbGVtZW50QnlDc3MiLCJ0ZXh0IiwiZXZlbnR1YWxseSIsImVxbCJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUFBLGNBQUtDLE1BQUw7O0FBQ0FELGNBQUtFLEdBQUwsQ0FBU0MsdUJBQVQ7O0FBR0EsTUFBTUMsSUFBSSxHQUFHO0FBQ1hDLEVBQUFBLFdBQVcsRUFBRSxjQURGO0FBRVhDLEVBQUFBLFlBQVksRUFBRTtBQUZILENBQWI7QUFLQUMsUUFBUSxDQUFDLHNCQUFELEVBQXlCLFlBQVk7QUFDM0MsT0FBS0MsT0FBTCxDQUFhQyxvQkFBYjtBQUVBLE1BQUlDLE1BQUo7QUFDQSxNQUFJQyxNQUFKO0FBQ0FDLEVBQUFBLE1BQU0sQ0FBQyxrQkFBa0I7QUFDdkJGLElBQUFBLE1BQU0sR0FBRyxNQUFNLG1CQUFZRyxXQUFaLEVBQWtCQyxXQUFsQixDQUFmO0FBQ0QsR0FGSyxDQUFOO0FBR0FDLEVBQUFBLEtBQUssQ0FBQyxrQkFBa0I7QUFDdEIsUUFBSUwsTUFBSixFQUFZO0FBQ1YsWUFBTUEsTUFBTSxDQUFDTSxLQUFQLEVBQU47QUFDQU4sTUFBQUEsTUFBTSxHQUFHLElBQVQ7QUFDRDtBQUNGLEdBTEksQ0FBTDtBQU1BTyxFQUFBQSxVQUFVLENBQUMsa0JBQWtCO0FBQzNCTixJQUFBQSxNQUFNLEdBQUdPLFlBQUdDLGtCQUFILENBQXNCTCxXQUF0QixFQUE0QkQsV0FBNUIsQ0FBVDtBQUNBLFVBQU1GLE1BQU0sQ0FBQ1MsSUFBUCxDQUFZaEIsSUFBWixDQUFOO0FBQ0QsR0FIUyxDQUFWO0FBSUFpQixFQUFBQSxTQUFTLENBQUMsa0JBQWtCO0FBQzFCLFFBQUlWLE1BQUosRUFBWTtBQUNWLFlBQU1BLE1BQU0sQ0FBQ1csSUFBUCxFQUFOO0FBQ0FYLE1BQUFBLE1BQU0sR0FBRyxJQUFUO0FBQ0Q7QUFDRixHQUxRLENBQVQ7QUFPQVksRUFBQUEsRUFBRSxDQUFDLGlDQUFELEVBQW9DLGtCQUFrQjtBQUN0RCxVQUFNWixNQUFNLENBQUNhLEdBQVAsQ0FBVyxvQkFBWCxDQUFOO0FBQ0EsVUFBTUMsTUFBTSxHQUFHLE1BQU1kLE1BQU0sQ0FBQ2UsWUFBUCxDQUFvQixlQUFwQixDQUFyQjtBQUNBLFVBQU1ELE1BQU0sQ0FBQ0UsSUFBUCxHQUFjMUIsTUFBZCxDQUFxQjJCLFVBQXJCLENBQWdDQyxHQUFoQyxDQUFvQyxpQkFBcEMsQ0FBTjtBQUNELEdBSkMsQ0FBRjtBQUtELENBOUJPLENBQVIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgd2QgZnJvbSAnd2QnO1xuaW1wb3J0IHsgc3RhcnRTZXJ2ZXIgfSBmcm9tICcuLi8uLic7XG5pbXBvcnQgY2hhaUFzUHJvbWlzZWQgZnJvbSAnY2hhaS1hcy1wcm9taXNlZCc7XG5pbXBvcnQgY2hhaSBmcm9tICdjaGFpJztcbmltcG9ydCB7IEhPU1QsIFBPUlQsIE1PQ0hBX1RJTUVPVVQgfSBmcm9tICcuLi91dGlscyc7XG5cbmNoYWkuc2hvdWxkKCk7XG5jaGFpLnVzZShjaGFpQXNQcm9taXNlZCk7XG5cblxuY29uc3QgQ0FQUyA9IHtcbiAgYnJvd3Nlck5hbWU6ICdBcHBpdW1TYWZhcmknLFxuICBwbGF0Zm9ybU5hbWU6ICdtYWMnLFxufTtcblxuZGVzY3JpYmUoJ0Rlc2t0b3AgU2FmYXJpRHJpdmVyJywgZnVuY3Rpb24gKCkge1xuICB0aGlzLnRpbWVvdXQoTU9DSEFfVElNRU9VVCk7XG5cbiAgbGV0IHNlcnZlcjtcbiAgbGV0IGRyaXZlcjtcbiAgYmVmb3JlKGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBzZXJ2ZXIgPSBhd2FpdCBzdGFydFNlcnZlcihQT1JULCBIT1NUKTtcbiAgfSk7XG4gIGFmdGVyKGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoc2VydmVyKSB7XG4gICAgICBhd2FpdCBzZXJ2ZXIuY2xvc2UoKTtcbiAgICAgIHNlcnZlciA9IG51bGw7XG4gICAgfVxuICB9KTtcbiAgYmVmb3JlRWFjaChhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgZHJpdmVyID0gd2QucHJvbWlzZUNoYWluUmVtb3RlKEhPU1QsIFBPUlQpO1xuICAgIGF3YWl0IGRyaXZlci5pbml0KENBUFMpO1xuICB9KTtcbiAgYWZ0ZXJFYWNoKGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoZHJpdmVyKSB7XG4gICAgICBhd2FpdCBkcml2ZXIucXVpdCgpO1xuICAgICAgZHJpdmVyID0gbnVsbDtcbiAgICB9XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgc3RhcnQgYW5kIHN0b3AgYSBzZXNzaW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGF3YWl0IGRyaXZlci5nZXQoJ2h0dHBzOi8vYXBwaXVtLmlvLycpO1xuICAgIGNvbnN0IGJ1dHRvbiA9IGF3YWl0IGRyaXZlci5lbGVtZW50QnlDc3MoJyNkb3dubG9hZExpbmsnKTtcbiAgICBhd2FpdCBidXR0b24udGV4dCgpLnNob3VsZC5ldmVudHVhbGx5LmVxbCgnRG93bmxvYWQgQXBwaXVtJyk7XG4gIH0pO1xufSk7XG5cblxuIl0sImZpbGUiOiJ0ZXN0L2Z1bmN0aW9uYWwvZGVza3RvcC1kcml2ZXItZTJlLXNwZWNzLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=
59
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvZnVuY3Rpb25hbC9kZXNrdG9wLWRyaXZlci1lMmUtc3BlY3MuanMiXSwibmFtZXMiOlsiY2hhaSIsInNob3VsZCIsInVzZSIsImNoYWlBc1Byb21pc2VkIiwiQ0FQUyIsImJyb3dzZXJOYW1lIiwicGxhdGZvcm1OYW1lIiwiZGVzY3JpYmUiLCJ0aW1lb3V0IiwiTU9DSEFfVElNRU9VVCIsInNlcnZlciIsImRyaXZlciIsImJlZm9yZSIsIlBPUlQiLCJIT1NUIiwiYWZ0ZXIiLCJjbG9zZSIsImJlZm9yZUVhY2giLCJob3N0bmFtZSIsInBvcnQiLCJjYXBhYmlsaXRpZXMiLCJhZnRlckVhY2giLCJkZWxldGVTZXNzaW9uIiwiaXQiLCJ1cmwiLCJidXR0b24iLCIkIiwiZ2V0VGV4dCIsImV2ZW50dWFsbHkiLCJlcWwiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBQSxjQUFLQyxNQUFMOztBQUNBRCxjQUFLRSxHQUFMLENBQVNDLHVCQUFUOztBQUdBLE1BQU1DLElBQUksR0FBRztBQUNYQyxFQUFBQSxXQUFXLEVBQUUsY0FERjtBQUVYQyxFQUFBQSxZQUFZLEVBQUU7QUFGSCxDQUFiO0FBS0FDLFFBQVEsQ0FBQyxzQkFBRCxFQUF5QixZQUFZO0FBQzNDLE9BQUtDLE9BQUwsQ0FBYUMsb0JBQWI7QUFFQSxNQUFJQyxNQUFKO0FBQ0EsTUFBSUMsTUFBSjtBQUNBQyxFQUFBQSxNQUFNLENBQUMsa0JBQWtCO0FBQ3ZCRixJQUFBQSxNQUFNLEdBQUcsTUFBTSxtQkFBWUcsV0FBWixFQUFrQkMsV0FBbEIsQ0FBZjtBQUNELEdBRkssQ0FBTjtBQUdBQyxFQUFBQSxLQUFLLENBQUMsa0JBQWtCO0FBQ3RCLFFBQUlMLE1BQUosRUFBWTtBQUNWLFlBQU1BLE1BQU0sQ0FBQ00sS0FBUCxFQUFOO0FBQ0FOLE1BQUFBLE1BQU0sR0FBRyxJQUFUO0FBQ0Q7QUFDRixHQUxJLENBQUw7QUFNQU8sRUFBQUEsVUFBVSxDQUFDLGtCQUFrQjtBQUMzQk4sSUFBQUEsTUFBTSxHQUFHLE1BQU0seUJBQU87QUFDcEJPLE1BQUFBLFFBQVEsRUFBRUosV0FEVTtBQUVwQkssTUFBQUEsSUFBSSxFQUFFTixXQUZjO0FBR3BCTyxNQUFBQSxZQUFZLEVBQUVoQjtBQUhNLEtBQVAsQ0FBZjtBQUtELEdBTlMsQ0FBVjtBQU9BaUIsRUFBQUEsU0FBUyxDQUFDLGtCQUFrQjtBQUMxQixRQUFJVixNQUFKLEVBQVk7QUFDVixZQUFNQSxNQUFNLENBQUNXLGFBQVAsRUFBTjtBQUNBWCxNQUFBQSxNQUFNLEdBQUcsSUFBVDtBQUNEO0FBQ0YsR0FMUSxDQUFUO0FBT0FZLEVBQUFBLEVBQUUsQ0FBQyxpQ0FBRCxFQUFvQyxrQkFBa0I7QUFDdEQsVUFBTVosTUFBTSxDQUFDYSxHQUFQLENBQVcsb0JBQVgsQ0FBTjtBQUNBLFVBQU1DLE1BQU0sR0FBRyxNQUFNZCxNQUFNLENBQUNlLENBQVAsQ0FBUyxlQUFULENBQXJCO0FBQ0EsVUFBTUQsTUFBTSxDQUFDRSxPQUFQLEdBQWlCMUIsTUFBakIsQ0FBd0IyQixVQUF4QixDQUFtQ0MsR0FBbkMsQ0FBdUMsaUJBQXZDLENBQU47QUFDRCxHQUpDLENBQUY7QUFLRCxDQWpDTyxDQUFSIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVtb3RlIH0gZnJvbSAnd2ViZHJpdmVyaW8nO1xuaW1wb3J0IHsgc3RhcnRTZXJ2ZXIgfSBmcm9tICcuLi8uLic7XG5pbXBvcnQgY2hhaUFzUHJvbWlzZWQgZnJvbSAnY2hhaS1hcy1wcm9taXNlZCc7XG5pbXBvcnQgY2hhaSBmcm9tICdjaGFpJztcbmltcG9ydCB7IEhPU1QsIFBPUlQsIE1PQ0hBX1RJTUVPVVQgfSBmcm9tICcuLi91dGlscyc7XG5cbmNoYWkuc2hvdWxkKCk7XG5jaGFpLnVzZShjaGFpQXNQcm9taXNlZCk7XG5cblxuY29uc3QgQ0FQUyA9IHtcbiAgYnJvd3Nlck5hbWU6ICdBcHBpdW1TYWZhcmknLFxuICBwbGF0Zm9ybU5hbWU6ICdtYWMnLFxufTtcblxuZGVzY3JpYmUoJ0Rlc2t0b3AgU2FmYXJpRHJpdmVyJywgZnVuY3Rpb24gKCkge1xuICB0aGlzLnRpbWVvdXQoTU9DSEFfVElNRU9VVCk7XG5cbiAgbGV0IHNlcnZlcjtcbiAgbGV0IGRyaXZlcjtcbiAgYmVmb3JlKGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBzZXJ2ZXIgPSBhd2FpdCBzdGFydFNlcnZlcihQT1JULCBIT1NUKTtcbiAgfSk7XG4gIGFmdGVyKGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoc2VydmVyKSB7XG4gICAgICBhd2FpdCBzZXJ2ZXIuY2xvc2UoKTtcbiAgICAgIHNlcnZlciA9IG51bGw7XG4gICAgfVxuICB9KTtcbiAgYmVmb3JlRWFjaChhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgZHJpdmVyID0gYXdhaXQgcmVtb3RlKHtcbiAgICAgIGhvc3RuYW1lOiBIT1NULFxuICAgICAgcG9ydDogUE9SVCxcbiAgICAgIGNhcGFiaWxpdGllczogQ0FQUyxcbiAgICB9KTtcbiAgfSk7XG4gIGFmdGVyRWFjaChhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKGRyaXZlcikge1xuICAgICAgYXdhaXQgZHJpdmVyLmRlbGV0ZVNlc3Npb24oKTtcbiAgICAgIGRyaXZlciA9IG51bGw7XG4gICAgfVxuICB9KTtcblxuICBpdCgnc2hvdWxkIHN0YXJ0IGFuZCBzdG9wIGEgc2Vzc2lvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBhd2FpdCBkcml2ZXIudXJsKCdodHRwczovL2FwcGl1bS5pby8nKTtcbiAgICBjb25zdCBidXR0b24gPSBhd2FpdCBkcml2ZXIuJCgnI2Rvd25sb2FkTGluaycpO1xuICAgIGF3YWl0IGJ1dHRvbi5nZXRUZXh0KCkuc2hvdWxkLmV2ZW50dWFsbHkuZXFsKCdEb3dubG9hZCBBcHBpdW0nKTtcbiAgfSk7XG59KTtcblxuXG4iXSwiZmlsZSI6InRlc3QvZnVuY3Rpb25hbC9kZXNrdG9wLWRyaXZlci1lMmUtc3BlY3MuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4ifQ==
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
 
5
5
  require("source-map-support/register");
6
6
 
7
- var _wd = _interopRequireDefault(require("wd"));
7
+ var _webdriverio = require("webdriverio");
8
8
 
9
9
  var _ = require("../..");
10
10
 
@@ -63,21 +63,24 @@ describe('Mobile SafariDriver', function () {
63
63
  }
64
64
  });
65
65
  beforeEach(async function () {
66
- driver = _wd.default.promiseChainRemote(_utils.HOST, _utils.PORT);
67
- await driver.init(CAPS);
66
+ driver = await (0, _webdriverio.remote)({
67
+ hostname: _utils.HOST,
68
+ port: _utils.PORT,
69
+ capabilities: CAPS
70
+ });
68
71
  });
69
72
  afterEach(async function () {
70
73
  if (driver) {
71
- await driver.quit();
74
+ await driver.deleteSession();
72
75
  driver = null;
73
76
  }
74
77
  });
75
78
  it('should start and stop a session', async function () {
76
- await driver.get('https://appium.io/');
77
- const button = await driver.elementByCss('#downloadLink');
78
- await button.text().should.eventually.eql('Download Appium');
79
+ await driver.url('https://appium.io/');
80
+ const button = await driver.$('#downloadLink');
81
+ await button.getText().should.eventually.eql('Download Appium');
79
82
  });
80
83
  });require('source-map-support').install();
81
84
 
82
85
 
83
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvZnVuY3Rpb25hbC9tb2JpbGUtZHJpdmVyLWUyZS1zcGVjcy5qcyJdLCJuYW1lcyI6WyJjaGFpIiwic2hvdWxkIiwidXNlIiwiY2hhaUFzUHJvbWlzZWQiLCJQTEFURk9STV9WRVJTSU9OIiwicHJvY2VzcyIsImVudiIsIkRFVklDRV9OQU1FIiwiQ0FQUyIsImJyb3dzZXJOYW1lIiwicGxhdGZvcm1OYW1lIiwiZGVzY3JpYmUiLCJ0aW1lb3V0IiwiTU9DSEFfVElNRU9VVCIsInNlcnZlciIsImRyaXZlciIsImJlZm9yZSIsIkNJIiwic2tpcCIsInNpbWN0bCIsIlNpbWN0bCIsImFsbERldmljZXMiLCJnZXREZXZpY2VzIiwiZGV2aWNlIiwiZmluZCIsIm5hbWUiLCJFcnJvciIsInN0YXRlIiwidWRpZCIsImJvb3REZXZpY2UiLCJzdGFydEJvb3RNb25pdG9yIiwiUE9SVCIsIkhPU1QiLCJhZnRlciIsImNsb3NlIiwiYmVmb3JlRWFjaCIsIndkIiwicHJvbWlzZUNoYWluUmVtb3RlIiwiaW5pdCIsImFmdGVyRWFjaCIsInF1aXQiLCJpdCIsImdldCIsImJ1dHRvbiIsImVsZW1lbnRCeUNzcyIsInRleHQiLCJldmVudHVhbGx5IiwiZXFsIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQUEsY0FBS0MsTUFBTDs7QUFDQUQsY0FBS0UsR0FBTCxDQUFTQyx1QkFBVDs7QUFFQSxNQUFNQyxnQkFBZ0IsR0FBR0MsT0FBTyxDQUFDQyxHQUFSLENBQVlGLGdCQUFaLElBQWdDLE1BQXpEO0FBQ0EsTUFBTUcsV0FBVyxHQUFHRixPQUFPLENBQUNDLEdBQVIsQ0FBWUMsV0FBWixJQUEyQixtQkFBL0M7QUFDQSxNQUFNQyxJQUFJLEdBQUc7QUFDWEMsRUFBQUEsV0FBVyxFQUFFLGNBREY7QUFFWEMsRUFBQUEsWUFBWSxFQUFFLEtBRkg7QUFHWCx5QkFBdUIsSUFIWjtBQUlYLDRCQUEwQk4sZ0JBSmY7QUFLWCx1QkFBcUJHO0FBTFYsQ0FBYjtBQVFBSSxRQUFRLENBQUMscUJBQUQsRUFBd0IsWUFBWTtBQUMxQyxPQUFLQyxPQUFMLENBQWFDLG9CQUFiO0FBRUEsTUFBSUMsTUFBSjtBQUNBLE1BQUlDLE1BQUo7QUFDQUMsRUFBQUEsTUFBTSxDQUFDLGtCQUFrQjtBQUN2QixRQUFJWCxPQUFPLENBQUNDLEdBQVIsQ0FBWVcsRUFBaEIsRUFBb0I7QUFJbEIsYUFBTyxLQUFLQyxJQUFMLEVBQVA7QUFDRDs7QUFHRCxVQUFNQyxNQUFNLEdBQUcsSUFBSUMsbUJBQUosRUFBZjtBQUNBLFVBQU1DLFVBQVUsR0FBRyxNQUFNRixNQUFNLENBQUNHLFVBQVAsQ0FBa0JsQixnQkFBbEIsRUFBb0MsS0FBcEMsQ0FBekI7QUFDQSxVQUFNbUIsTUFBTSxHQUFHRixVQUFVLENBQUNHLElBQVgsQ0FBZ0IsQ0FBQztBQUFDQyxNQUFBQTtBQUFELEtBQUQsS0FBWUEsSUFBSSxLQUFLbEIsV0FBckMsQ0FBZjs7QUFDQSxRQUFJLENBQUNnQixNQUFMLEVBQWE7QUFDWCxZQUFNLElBQUlHLEtBQUosQ0FBVyxnQkFBZW5CLFdBQVksZ0JBQWVILGdCQUFpQixHQUF0RSxDQUFOO0FBQ0Q7O0FBQ0QsUUFBSW1CLE1BQU0sQ0FBQ0ksS0FBUCxLQUFpQixRQUFyQixFQUErQjtBQUM3QlIsTUFBQUEsTUFBTSxDQUFDUyxJQUFQLEdBQWNMLE1BQU0sQ0FBQ0ssSUFBckI7QUFDQSxZQUFNVCxNQUFNLENBQUNVLFVBQVAsRUFBTjtBQUNBLFlBQU1WLE1BQU0sQ0FBQ1csZ0JBQVAsRUFBTjtBQUNEOztBQUVEaEIsSUFBQUEsTUFBTSxHQUFHLE1BQU0sbUJBQVlpQixXQUFaLEVBQWtCQyxXQUFsQixDQUFmO0FBQ0QsR0F0QkssQ0FBTjtBQXVCQUMsRUFBQUEsS0FBSyxDQUFDLGtCQUFrQjtBQUN0QixRQUFJbkIsTUFBSixFQUFZO0FBQ1YsWUFBTUEsTUFBTSxDQUFDb0IsS0FBUCxFQUFOO0FBQ0FwQixNQUFBQSxNQUFNLEdBQUcsSUFBVDtBQUNEO0FBQ0YsR0FMSSxDQUFMO0FBTUFxQixFQUFBQSxVQUFVLENBQUMsa0JBQWtCO0FBQzNCcEIsSUFBQUEsTUFBTSxHQUFHcUIsWUFBR0Msa0JBQUgsQ0FBc0JMLFdBQXRCLEVBQTRCRCxXQUE1QixDQUFUO0FBQ0EsVUFBTWhCLE1BQU0sQ0FBQ3VCLElBQVAsQ0FBWTlCLElBQVosQ0FBTjtBQUNELEdBSFMsQ0FBVjtBQUlBK0IsRUFBQUEsU0FBUyxDQUFDLGtCQUFrQjtBQUMxQixRQUFJeEIsTUFBSixFQUFZO0FBQ1YsWUFBTUEsTUFBTSxDQUFDeUIsSUFBUCxFQUFOO0FBQ0F6QixNQUFBQSxNQUFNLEdBQUcsSUFBVDtBQUNEO0FBQ0YsR0FMUSxDQUFUO0FBT0EwQixFQUFBQSxFQUFFLENBQUMsaUNBQUQsRUFBb0Msa0JBQWtCO0FBQ3RELFVBQU0xQixNQUFNLENBQUMyQixHQUFQLENBQVcsb0JBQVgsQ0FBTjtBQUNBLFVBQU1DLE1BQU0sR0FBRyxNQUFNNUIsTUFBTSxDQUFDNkIsWUFBUCxDQUFvQixlQUFwQixDQUFyQjtBQUNBLFVBQU1ELE1BQU0sQ0FBQ0UsSUFBUCxHQUFjNUMsTUFBZCxDQUFxQjZDLFVBQXJCLENBQWdDQyxHQUFoQyxDQUFvQyxpQkFBcEMsQ0FBTjtBQUNELEdBSkMsQ0FBRjtBQUtELENBbERPLENBQVIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgd2QgZnJvbSAnd2QnO1xuaW1wb3J0IHsgc3RhcnRTZXJ2ZXIgfSBmcm9tICcuLi8uLic7XG5pbXBvcnQgY2hhaUFzUHJvbWlzZWQgZnJvbSAnY2hhaS1hcy1wcm9taXNlZCc7XG5pbXBvcnQgY2hhaSBmcm9tICdjaGFpJztcbmltcG9ydCBTaW1jdGwgZnJvbSAnbm9kZS1zaW1jdGwnO1xuaW1wb3J0IHsgSE9TVCwgUE9SVCwgTU9DSEFfVElNRU9VVCB9IGZyb20gJy4uL3V0aWxzJztcblxuY2hhaS5zaG91bGQoKTtcbmNoYWkudXNlKGNoYWlBc1Byb21pc2VkKTtcblxuY29uc3QgUExBVEZPUk1fVkVSU0lPTiA9IHByb2Nlc3MuZW52LlBMQVRGT1JNX1ZFUlNJT04gfHwgJzE0LjEnO1xuY29uc3QgREVWSUNFX05BTUUgPSBwcm9jZXNzLmVudi5ERVZJQ0VfTkFNRSB8fCAnaVBob25lIDExIFBybyBNYXgnO1xuY29uc3QgQ0FQUyA9IHtcbiAgYnJvd3Nlck5hbWU6ICdBcHBpdW1TYWZhcmknLFxuICBwbGF0Zm9ybU5hbWU6ICdpb3MnLFxuICAnc2FmYXJpOnVzZVNpbXVsYXRvcic6IHRydWUsXG4gICdzYWZhcmk6cGxhdGZvcm1WZXJzaW9uJzogUExBVEZPUk1fVkVSU0lPTixcbiAgJ3NhZmFyaTpkZXZpY2VOYW1lJzogREVWSUNFX05BTUUsXG59O1xuXG5kZXNjcmliZSgnTW9iaWxlIFNhZmFyaURyaXZlcicsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy50aW1lb3V0KE1PQ0hBX1RJTUVPVVQpO1xuXG4gIGxldCBzZXJ2ZXI7XG4gIGxldCBkcml2ZXI7XG4gIGJlZm9yZShhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52LkNJKSB7XG4gICAgICAvLyBJbiBBenVyZSBDSSB0aGUgc3R1ZmYgdW5leHBlY3RlZGx5IGZhaWxzIHdpdGhcbiAgICAgIC8vIFwiVGhlIGRldmljZSBpcyBub3QgY29uZmlndXJlZCB0byBhbGxvdyByZW1vdGUgY29udHJvbCB2aWEgV2ViRHJpdmVyLiBUbyBmaXggdGhpcywgdG9nZ2xlICdBbGxvdyBSZW1vdGUgQXV0b21hdGlvbicgaW4gU2FmYXJpJ3Mgc2V0dGluZ3MgKFNldHRpbmdzIEFwcCA+IFNhZmFyaSA+IEFkdmFuY2VkKS5cIlxuICAgICAgLy8gZXJyb3JcbiAgICAgIHJldHVybiB0aGlzLnNraXAoKTtcbiAgICB9XG5cbiAgICAvLyBQcmVib290IFNpbXVsYXRvciB0byBhdm9pZCB1bmV4cGVjdGVkIHRpbWVvdXRzXG4gICAgY29uc3Qgc2ltY3RsID0gbmV3IFNpbWN0bCgpO1xuICAgIGNvbnN0IGFsbERldmljZXMgPSBhd2FpdCBzaW1jdGwuZ2V0RGV2aWNlcyhQTEFURk9STV9WRVJTSU9OLCAnaU9TJyk7XG4gICAgY29uc3QgZGV2aWNlID0gYWxsRGV2aWNlcy5maW5kKCh7bmFtZX0pID0+IG5hbWUgPT09IERFVklDRV9OQU1FKTtcbiAgICBpZiAoIWRldmljZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZmluZCAnJHtERVZJQ0VfTkFNRX0nIFNpbXVsYXRvciAoJHtQTEFURk9STV9WRVJTSU9OfSlgKTtcbiAgICB9XG4gICAgaWYgKGRldmljZS5zdGF0ZSAhPT0gJ0Jvb3RlZCcpIHtcbiAgICAgIHNpbWN0bC51ZGlkID0gZGV2aWNlLnVkaWQ7XG4gICAgICBhd2FpdCBzaW1jdGwuYm9vdERldmljZSgpO1xuICAgICAgYXdhaXQgc2ltY3RsLnN0YXJ0Qm9vdE1vbml0b3IoKTtcbiAgICB9XG5cbiAgICBzZXJ2ZXIgPSBhd2FpdCBzdGFydFNlcnZlcihQT1JULCBIT1NUKTtcbiAgfSk7XG4gIGFmdGVyKGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoc2VydmVyKSB7XG4gICAgICBhd2FpdCBzZXJ2ZXIuY2xvc2UoKTtcbiAgICAgIHNlcnZlciA9IG51bGw7XG4gICAgfVxuICB9KTtcbiAgYmVmb3JlRWFjaChhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgZHJpdmVyID0gd2QucHJvbWlzZUNoYWluUmVtb3RlKEhPU1QsIFBPUlQpO1xuICAgIGF3YWl0IGRyaXZlci5pbml0KENBUFMpO1xuICB9KTtcbiAgYWZ0ZXJFYWNoKGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoZHJpdmVyKSB7XG4gICAgICBhd2FpdCBkcml2ZXIucXVpdCgpO1xuICAgICAgZHJpdmVyID0gbnVsbDtcbiAgICB9XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgc3RhcnQgYW5kIHN0b3AgYSBzZXNzaW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGF3YWl0IGRyaXZlci5nZXQoJ2h0dHBzOi8vYXBwaXVtLmlvLycpO1xuICAgIGNvbnN0IGJ1dHRvbiA9IGF3YWl0IGRyaXZlci5lbGVtZW50QnlDc3MoJyNkb3dubG9hZExpbmsnKTtcbiAgICBhd2FpdCBidXR0b24udGV4dCgpLnNob3VsZC5ldmVudHVhbGx5LmVxbCgnRG93bmxvYWQgQXBwaXVtJyk7XG4gIH0pO1xufSk7XG5cblxuIl0sImZpbGUiOiJ0ZXN0L2Z1bmN0aW9uYWwvbW9iaWxlLWRyaXZlci1lMmUtc3BlY3MuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4ifQ==
86
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvZnVuY3Rpb25hbC9tb2JpbGUtZHJpdmVyLWUyZS1zcGVjcy5qcyJdLCJuYW1lcyI6WyJjaGFpIiwic2hvdWxkIiwidXNlIiwiY2hhaUFzUHJvbWlzZWQiLCJQTEFURk9STV9WRVJTSU9OIiwicHJvY2VzcyIsImVudiIsIkRFVklDRV9OQU1FIiwiQ0FQUyIsImJyb3dzZXJOYW1lIiwicGxhdGZvcm1OYW1lIiwiZGVzY3JpYmUiLCJ0aW1lb3V0IiwiTU9DSEFfVElNRU9VVCIsInNlcnZlciIsImRyaXZlciIsImJlZm9yZSIsIkNJIiwic2tpcCIsInNpbWN0bCIsIlNpbWN0bCIsImFsbERldmljZXMiLCJnZXREZXZpY2VzIiwiZGV2aWNlIiwiZmluZCIsIm5hbWUiLCJFcnJvciIsInN0YXRlIiwidWRpZCIsImJvb3REZXZpY2UiLCJzdGFydEJvb3RNb25pdG9yIiwiUE9SVCIsIkhPU1QiLCJhZnRlciIsImNsb3NlIiwiYmVmb3JlRWFjaCIsImhvc3RuYW1lIiwicG9ydCIsImNhcGFiaWxpdGllcyIsImFmdGVyRWFjaCIsImRlbGV0ZVNlc3Npb24iLCJpdCIsInVybCIsImJ1dHRvbiIsIiQiLCJnZXRUZXh0IiwiZXZlbnR1YWxseSIsImVxbCJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUFBLGNBQUtDLE1BQUw7O0FBQ0FELGNBQUtFLEdBQUwsQ0FBU0MsdUJBQVQ7O0FBRUEsTUFBTUMsZ0JBQWdCLEdBQUdDLE9BQU8sQ0FBQ0MsR0FBUixDQUFZRixnQkFBWixJQUFnQyxNQUF6RDtBQUNBLE1BQU1HLFdBQVcsR0FBR0YsT0FBTyxDQUFDQyxHQUFSLENBQVlDLFdBQVosSUFBMkIsbUJBQS9DO0FBQ0EsTUFBTUMsSUFBSSxHQUFHO0FBQ1hDLEVBQUFBLFdBQVcsRUFBRSxjQURGO0FBRVhDLEVBQUFBLFlBQVksRUFBRSxLQUZIO0FBR1gseUJBQXVCLElBSFo7QUFJWCw0QkFBMEJOLGdCQUpmO0FBS1gsdUJBQXFCRztBQUxWLENBQWI7QUFRQUksUUFBUSxDQUFDLHFCQUFELEVBQXdCLFlBQVk7QUFDMUMsT0FBS0MsT0FBTCxDQUFhQyxvQkFBYjtBQUVBLE1BQUlDLE1BQUo7QUFDQSxNQUFJQyxNQUFKO0FBQ0FDLEVBQUFBLE1BQU0sQ0FBQyxrQkFBa0I7QUFDdkIsUUFBSVgsT0FBTyxDQUFDQyxHQUFSLENBQVlXLEVBQWhCLEVBQW9CO0FBSWxCLGFBQU8sS0FBS0MsSUFBTCxFQUFQO0FBQ0Q7O0FBR0QsVUFBTUMsTUFBTSxHQUFHLElBQUlDLG1CQUFKLEVBQWY7QUFDQSxVQUFNQyxVQUFVLEdBQUcsTUFBTUYsTUFBTSxDQUFDRyxVQUFQLENBQWtCbEIsZ0JBQWxCLEVBQW9DLEtBQXBDLENBQXpCO0FBQ0EsVUFBTW1CLE1BQU0sR0FBR0YsVUFBVSxDQUFDRyxJQUFYLENBQWdCLENBQUM7QUFBQ0MsTUFBQUE7QUFBRCxLQUFELEtBQVlBLElBQUksS0FBS2xCLFdBQXJDLENBQWY7O0FBQ0EsUUFBSSxDQUFDZ0IsTUFBTCxFQUFhO0FBQ1gsWUFBTSxJQUFJRyxLQUFKLENBQVcsZ0JBQWVuQixXQUFZLGdCQUFlSCxnQkFBaUIsR0FBdEUsQ0FBTjtBQUNEOztBQUNELFFBQUltQixNQUFNLENBQUNJLEtBQVAsS0FBaUIsUUFBckIsRUFBK0I7QUFDN0JSLE1BQUFBLE1BQU0sQ0FBQ1MsSUFBUCxHQUFjTCxNQUFNLENBQUNLLElBQXJCO0FBQ0EsWUFBTVQsTUFBTSxDQUFDVSxVQUFQLEVBQU47QUFDQSxZQUFNVixNQUFNLENBQUNXLGdCQUFQLEVBQU47QUFDRDs7QUFFRGhCLElBQUFBLE1BQU0sR0FBRyxNQUFNLG1CQUFZaUIsV0FBWixFQUFrQkMsV0FBbEIsQ0FBZjtBQUNELEdBdEJLLENBQU47QUF1QkFDLEVBQUFBLEtBQUssQ0FBQyxrQkFBa0I7QUFDdEIsUUFBSW5CLE1BQUosRUFBWTtBQUNWLFlBQU1BLE1BQU0sQ0FBQ29CLEtBQVAsRUFBTjtBQUNBcEIsTUFBQUEsTUFBTSxHQUFHLElBQVQ7QUFDRDtBQUNGLEdBTEksQ0FBTDtBQU1BcUIsRUFBQUEsVUFBVSxDQUFDLGtCQUFrQjtBQUMzQnBCLElBQUFBLE1BQU0sR0FBRyxNQUFNLHlCQUFPO0FBQ3BCcUIsTUFBQUEsUUFBUSxFQUFFSixXQURVO0FBRXBCSyxNQUFBQSxJQUFJLEVBQUVOLFdBRmM7QUFHcEJPLE1BQUFBLFlBQVksRUFBRTlCO0FBSE0sS0FBUCxDQUFmO0FBS0QsR0FOUyxDQUFWO0FBT0ErQixFQUFBQSxTQUFTLENBQUMsa0JBQWtCO0FBQzFCLFFBQUl4QixNQUFKLEVBQVk7QUFDVixZQUFNQSxNQUFNLENBQUN5QixhQUFQLEVBQU47QUFDQXpCLE1BQUFBLE1BQU0sR0FBRyxJQUFUO0FBQ0Q7QUFDRixHQUxRLENBQVQ7QUFPQTBCLEVBQUFBLEVBQUUsQ0FBQyxpQ0FBRCxFQUFvQyxrQkFBa0I7QUFDdEQsVUFBTTFCLE1BQU0sQ0FBQzJCLEdBQVAsQ0FBVyxvQkFBWCxDQUFOO0FBQ0EsVUFBTUMsTUFBTSxHQUFHLE1BQU01QixNQUFNLENBQUM2QixDQUFQLENBQVMsZUFBVCxDQUFyQjtBQUNBLFVBQU1ELE1BQU0sQ0FBQ0UsT0FBUCxHQUFpQjVDLE1BQWpCLENBQXdCNkMsVUFBeEIsQ0FBbUNDLEdBQW5DLENBQXVDLGlCQUF2QyxDQUFOO0FBQ0QsR0FKQyxDQUFGO0FBS0QsQ0FyRE8sQ0FBUiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlbW90ZSB9IGZyb20gJ3dlYmRyaXZlcmlvJztcbmltcG9ydCB7IHN0YXJ0U2VydmVyIH0gZnJvbSAnLi4vLi4nO1xuaW1wb3J0IGNoYWlBc1Byb21pc2VkIGZyb20gJ2NoYWktYXMtcHJvbWlzZWQnO1xuaW1wb3J0IGNoYWkgZnJvbSAnY2hhaSc7XG5pbXBvcnQgU2ltY3RsIGZyb20gJ25vZGUtc2ltY3RsJztcbmltcG9ydCB7IEhPU1QsIFBPUlQsIE1PQ0hBX1RJTUVPVVQgfSBmcm9tICcuLi91dGlscyc7XG5cbmNoYWkuc2hvdWxkKCk7XG5jaGFpLnVzZShjaGFpQXNQcm9taXNlZCk7XG5cbmNvbnN0IFBMQVRGT1JNX1ZFUlNJT04gPSBwcm9jZXNzLmVudi5QTEFURk9STV9WRVJTSU9OIHx8ICcxNC4xJztcbmNvbnN0IERFVklDRV9OQU1FID0gcHJvY2Vzcy5lbnYuREVWSUNFX05BTUUgfHwgJ2lQaG9uZSAxMSBQcm8gTWF4JztcbmNvbnN0IENBUFMgPSB7XG4gIGJyb3dzZXJOYW1lOiAnQXBwaXVtU2FmYXJpJyxcbiAgcGxhdGZvcm1OYW1lOiAnaW9zJyxcbiAgJ3NhZmFyaTp1c2VTaW11bGF0b3InOiB0cnVlLFxuICAnc2FmYXJpOnBsYXRmb3JtVmVyc2lvbic6IFBMQVRGT1JNX1ZFUlNJT04sXG4gICdzYWZhcmk6ZGV2aWNlTmFtZSc6IERFVklDRV9OQU1FLFxufTtcblxuZGVzY3JpYmUoJ01vYmlsZSBTYWZhcmlEcml2ZXInLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMudGltZW91dChNT0NIQV9USU1FT1VUKTtcblxuICBsZXQgc2VydmVyO1xuICBsZXQgZHJpdmVyO1xuICBiZWZvcmUoYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGlmIChwcm9jZXNzLmVudi5DSSkge1xuICAgICAgLy8gSW4gQXp1cmUgQ0kgdGhlIHN0dWZmIHVuZXhwZWN0ZWRseSBmYWlscyB3aXRoXG4gICAgICAvLyBcIlRoZSBkZXZpY2UgaXMgbm90IGNvbmZpZ3VyZWQgdG8gYWxsb3cgcmVtb3RlIGNvbnRyb2wgdmlhIFdlYkRyaXZlci4gVG8gZml4IHRoaXMsIHRvZ2dsZSAnQWxsb3cgUmVtb3RlIEF1dG9tYXRpb24nIGluIFNhZmFyaSdzIHNldHRpbmdzIChTZXR0aW5ncyBBcHAgPiBTYWZhcmkgPiBBZHZhbmNlZCkuXCJcbiAgICAgIC8vIGVycm9yXG4gICAgICByZXR1cm4gdGhpcy5za2lwKCk7XG4gICAgfVxuXG4gICAgLy8gUHJlYm9vdCBTaW11bGF0b3IgdG8gYXZvaWQgdW5leHBlY3RlZCB0aW1lb3V0c1xuICAgIGNvbnN0IHNpbWN0bCA9IG5ldyBTaW1jdGwoKTtcbiAgICBjb25zdCBhbGxEZXZpY2VzID0gYXdhaXQgc2ltY3RsLmdldERldmljZXMoUExBVEZPUk1fVkVSU0lPTiwgJ2lPUycpO1xuICAgIGNvbnN0IGRldmljZSA9IGFsbERldmljZXMuZmluZCgoe25hbWV9KSA9PiBuYW1lID09PSBERVZJQ0VfTkFNRSk7XG4gICAgaWYgKCFkZXZpY2UpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGZpbmQgJyR7REVWSUNFX05BTUV9JyBTaW11bGF0b3IgKCR7UExBVEZPUk1fVkVSU0lPTn0pYCk7XG4gICAgfVxuICAgIGlmIChkZXZpY2Uuc3RhdGUgIT09ICdCb290ZWQnKSB7XG4gICAgICBzaW1jdGwudWRpZCA9IGRldmljZS51ZGlkO1xuICAgICAgYXdhaXQgc2ltY3RsLmJvb3REZXZpY2UoKTtcbiAgICAgIGF3YWl0IHNpbWN0bC5zdGFydEJvb3RNb25pdG9yKCk7XG4gICAgfVxuXG4gICAgc2VydmVyID0gYXdhaXQgc3RhcnRTZXJ2ZXIoUE9SVCwgSE9TVCk7XG4gIH0pO1xuICBhZnRlcihhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHNlcnZlcikge1xuICAgICAgYXdhaXQgc2VydmVyLmNsb3NlKCk7XG4gICAgICBzZXJ2ZXIgPSBudWxsO1xuICAgIH1cbiAgfSk7XG4gIGJlZm9yZUVhY2goYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGRyaXZlciA9IGF3YWl0IHJlbW90ZSh7XG4gICAgICBob3N0bmFtZTogSE9TVCxcbiAgICAgIHBvcnQ6IFBPUlQsXG4gICAgICBjYXBhYmlsaXRpZXM6IENBUFMsXG4gICAgfSk7XG4gIH0pO1xuICBhZnRlckVhY2goYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGlmIChkcml2ZXIpIHtcbiAgICAgIGF3YWl0IGRyaXZlci5kZWxldGVTZXNzaW9uKCk7XG4gICAgICBkcml2ZXIgPSBudWxsO1xuICAgIH1cbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBzdGFydCBhbmQgc3RvcCBhIHNlc3Npb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgYXdhaXQgZHJpdmVyLnVybCgnaHR0cHM6Ly9hcHBpdW0uaW8vJyk7XG4gICAgY29uc3QgYnV0dG9uID0gYXdhaXQgZHJpdmVyLiQoJyNkb3dubG9hZExpbmsnKTtcbiAgICBhd2FpdCBidXR0b24uZ2V0VGV4dCgpLnNob3VsZC5ldmVudHVhbGx5LmVxbCgnRG93bmxvYWQgQXBwaXVtJyk7XG4gIH0pO1xufSk7XG5cblxuIl0sImZpbGUiOiJ0ZXN0L2Z1bmN0aW9uYWwvbW9iaWxlLWRyaXZlci1lMmUtc3BlY3MuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4ifQ==
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.MOCHA_TIMEOUT = exports.PORT = exports.HOST = void 0;
6
+ exports.PORT = exports.MOCHA_TIMEOUT = exports.HOST = void 0;
7
7
 
8
8
  require("source-map-support/register");
9
9
 
package/gulpfile.js CHANGED
@@ -1,10 +1,11 @@
1
1
  'use strict';
2
2
 
3
3
  let gulp = require('gulp');
4
- let boilerplate = require('appium-gulp-plugins').boilerplate.use(gulp);
4
+ let boilerplate = require('@appium/gulp-plugins').boilerplate.use(gulp);
5
5
 
6
6
  boilerplate({
7
- build: 'appium-firefox-driver',
7
+ build: 'appium-safari-driver',
8
+ files: ['index.js', 'lib/**/*.js', 'test/**/*.js', '!gulpfile.js'],
8
9
  coverage: {
9
10
  files: ['./test/unit/**/*-specs.js', '!./test/functional/**'],
10
11
  verbose: true
@@ -1,4 +1,4 @@
1
- import { util } from 'appium-support';
1
+ import { util } from '@appium/support';
2
2
 
3
3
 
4
4
  const commands = {};
@@ -1,5 +1,5 @@
1
1
  import _ from 'lodash';
2
- import { util, fs, net, tempDir } from 'appium-support';
2
+ import { util, fs, net, tempDir } from '@appium/support';
3
3
  import { waitForCondition } from 'asyncbox';
4
4
  import log from '../logger';
5
5
  import Simctl from 'node-simctl';
package/lib/driver.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import _ from 'lodash';
2
- import { BaseDriver } from 'appium-base-driver';
2
+ import { BaseDriver } from '@appium/base-driver';
3
3
  import log from './logger';
4
4
  import SafariDriverServer from './safari';
5
5
  import { desiredCapConstraints } from './desired-caps';
package/lib/logger.js CHANGED
@@ -1,4 +1,4 @@
1
- import { logger } from 'appium-support';
1
+ import { logger } from '@appium/support';
2
2
 
3
3
  const log = logger.getLogger('Safari');
4
4
 
package/lib/safari.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import os from 'os';
2
2
  import path from 'path';
3
- import { JWProxy, errors } from 'appium-base-driver';
4
- import { fs, logger, util } from 'appium-support';
3
+ import { JWProxy, errors } from '@appium/base-driver';
4
+ import { fs, logger, util } from '@appium/support';
5
5
  import { SubProcess } from 'teen_process';
6
6
  import { waitForCondition } from 'asyncbox';
7
7
  import { findAPortNotInUse } from 'portscanner';
package/lib/server.js CHANGED
@@ -1,5 +1,7 @@
1
1
  import log from './logger';
2
- import { server as baseServer, routeConfiguringFunction as makeRouter } from 'appium-base-driver';
2
+ import {
3
+ server as baseServer, routeConfiguringFunction as makeRouter
4
+ } from '@appium/base-driver';
3
5
  import SafariDriver from './driver';
4
6
 
5
7
  async function startServer (port, address) {
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "appium",
6
6
  "safari"
7
7
  ],
8
- "version": "2.2.1",
8
+ "version": "3.0.0",
9
9
  "author": "appium",
10
10
  "license": "Apache-2.0",
11
11
  "repository": {
@@ -33,15 +33,15 @@
33
33
  "lib": "lib"
34
34
  },
35
35
  "dependencies": {
36
+ "@appium/base-driver": "^8.0.0",
37
+ "@appium/support": "^2.46.0",
36
38
  "@babel/runtime": "^7.0.0",
37
- "appium-base-driver": "^7.1.0",
38
- "appium-support": "^2.46.0",
39
39
  "asyncbox": "^2.0.2",
40
40
  "bluebird": "^3.5.1",
41
41
  "lodash": "^4.17.4",
42
42
  "node-simctl": "^6.4.0",
43
43
  "portscanner": "2.2.0",
44
- "source-map-support": "^0.5.5",
44
+ "source-map-support": "^0.x",
45
45
  "teen_process": "^1.15.0"
46
46
  },
47
47
  "scripts": {
@@ -63,14 +63,21 @@
63
63
  "precommit-test"
64
64
  ],
65
65
  "devDependencies": {
66
+ "@appium/gulp-plugins": "^6.0.0",
67
+ "@appium/eslint-config-appium": "^5.0.0",
68
+ "@babel/core": "^7.16.0",
69
+ "@babel/eslint-parser": "^7.16.3",
66
70
  "appium-gulp-plugins": "^5.4.0",
67
71
  "chai": "^4.1.2",
68
72
  "chai-as-promised": "^7.1.1",
69
- "eslint-config-appium": "^4.0.1",
73
+ "eslint": "^7.32.0",
74
+ "eslint-plugin-import": "^2.25.3",
75
+ "eslint-plugin-mocha": "^9.0.0",
76
+ "eslint-plugin-promise": "^6.0.0",
70
77
  "gulp": "^4.0.0",
71
- "mocha": "^8.0.1",
78
+ "mocha": "^9.0.0",
72
79
  "pre-commit": "^1.1.3",
73
- "sinon": "^10.0.0",
74
- "wd": "^1.5.0"
80
+ "sinon": "^12.0.0",
81
+ "webdriverio": "^7.0.0"
75
82
  }
76
83
  }
@@ -1,4 +1,4 @@
1
- import wd from 'wd';
1
+ import { remote } from 'webdriverio';
2
2
  import { startServer } from '../..';
3
3
  import chaiAsPromised from 'chai-as-promised';
4
4
  import chai from 'chai';
@@ -28,20 +28,23 @@ describe('Desktop SafariDriver', function () {
28
28
  }
29
29
  });
30
30
  beforeEach(async function () {
31
- driver = wd.promiseChainRemote(HOST, PORT);
32
- await driver.init(CAPS);
31
+ driver = await remote({
32
+ hostname: HOST,
33
+ port: PORT,
34
+ capabilities: CAPS,
35
+ });
33
36
  });
34
37
  afterEach(async function () {
35
38
  if (driver) {
36
- await driver.quit();
39
+ await driver.deleteSession();
37
40
  driver = null;
38
41
  }
39
42
  });
40
43
 
41
44
  it('should start and stop a session', async function () {
42
- await driver.get('https://appium.io/');
43
- const button = await driver.elementByCss('#downloadLink');
44
- await button.text().should.eventually.eql('Download Appium');
45
+ await driver.url('https://appium.io/');
46
+ const button = await driver.$('#downloadLink');
47
+ await button.getText().should.eventually.eql('Download Appium');
45
48
  });
46
49
  });
47
50
 
@@ -1,4 +1,4 @@
1
- import wd from 'wd';
1
+ import { remote } from 'webdriverio';
2
2
  import { startServer } from '../..';
3
3
  import chaiAsPromised from 'chai-as-promised';
4
4
  import chai from 'chai';
@@ -53,20 +53,23 @@ describe('Mobile SafariDriver', function () {
53
53
  }
54
54
  });
55
55
  beforeEach(async function () {
56
- driver = wd.promiseChainRemote(HOST, PORT);
57
- await driver.init(CAPS);
56
+ driver = await remote({
57
+ hostname: HOST,
58
+ port: PORT,
59
+ capabilities: CAPS,
60
+ });
58
61
  });
59
62
  afterEach(async function () {
60
63
  if (driver) {
61
- await driver.quit();
64
+ await driver.deleteSession();
62
65
  driver = null;
63
66
  }
64
67
  });
65
68
 
66
69
  it('should start and stop a session', async function () {
67
- await driver.get('https://appium.io/');
68
- const button = await driver.elementByCss('#downloadLink');
69
- await button.text().should.eventually.eql('Download Appium');
70
+ await driver.url('https://appium.io/');
71
+ const button = await driver.$('#downloadLink');
72
+ await button.getText().should.eventually.eql('Download Appium');
70
73
  });
71
74
  });
72
75