appium-espresso-driver 2.25.2 → 2.25.4

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/CHANGELOG.md CHANGED
@@ -1,3 +1,17 @@
1
+ ## [2.25.4](https://github.com/appium/appium-espresso-driver/compare/v2.25.3...v2.25.4) (2023-08-25)
2
+
3
+
4
+ ### Miscellaneous Chores
5
+
6
+ * **deps-dev:** bump semantic-release from 20.1.3 to 21.1.0 ([#904](https://github.com/appium/appium-espresso-driver/issues/904)) ([a8d0354](https://github.com/appium/appium-espresso-driver/commit/a8d03541380b6e30e927b29409e8c9ca829cada5))
7
+
8
+ ## [2.25.3](https://github.com/appium/appium-espresso-driver/compare/v2.25.2...v2.25.3) (2023-08-21)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * do not reply error message in updateSettings to follow other drivers ([#902](https://github.com/appium/appium-espresso-driver/issues/902)) ([19f02cc](https://github.com/appium/appium-espresso-driver/commit/19f02cccb30252c8bced24c3da572454caccbab5))
14
+
1
15
  ## [2.25.2](https://github.com/appium/appium-espresso-driver/compare/v2.25.1...v2.25.2) (2023-08-17)
2
16
 
3
17
 
@@ -267,9 +267,14 @@ commands.mobileClickAction = async function mobileClickAction(opts = {}) {
267
267
  };
268
268
  commands.updateSettings = async function updateSettings(settings) {
269
269
  await this.settings.update(settings);
270
- await this.espresso.jwproxy.command(`/appium/settings`, 'POST', {
271
- settings
272
- });
270
+ try {
271
+ await this.espresso.jwproxy.command(`/appium/settings`, 'POST', {
272
+ settings
273
+ });
274
+ } catch (err) {
275
+ this.log.warn(`The espresso driver responded an error. Original error: ${err.message}`);
276
+ }
277
+ ;
273
278
  };
274
279
  commands.getSettings = async function getSettings() {
275
280
  const driverSettings = this.settings.getSettings();
@@ -322,4 +327,4 @@ commands.mobileDismissAutofill = async function mobileDismissAutofill(opts = {})
322
327
  Object.assign(extensions, commands, helpers);
323
328
  var _default = extensions;
324
329
  exports.default = _default;
325
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfc3VwcG9ydCIsIl92YWxpZGF0ZSIsIl9kcml2ZXIiLCJfdXRpbHMiLCJjb21tYW5kcyIsImhlbHBlcnMiLCJleHRlbnNpb25zIiwiZXhwb3J0cyIsInJlcXVpcmVPcHRpb25zIiwib3B0aW9ucyIsInJlcXVpcmVkT3B0aW9uTmFtZXMiLCJfIiwiaXNBcnJheSIsInByZXNlbnRPcHRpb25OYW1lcyIsImtleXMiLCJtaXNzaW5nT3B0aW9uTmFtZXMiLCJkaWZmZXJlbmNlIiwiaXNFbXB0eSIsIkVycm9yIiwiSlNPTiIsInN0cmluZ2lmeSIsImxhdW5jaEFwcCIsImVycm9ycyIsIlVuc3VwcG9ydGVkT3BlcmF0aW9uRXJyb3IiLCJjbG9zZUFwcCIsInJlc2V0IiwiZ2V0Q2xpcGJvYXJkIiwiYWRiIiwiZ2V0QXBpTGV2ZWwiLCJlc3ByZXNzbyIsImp3cHJveHkiLCJjb21tYW5kIiwibW9iaWxlUGVyZm9ybUVkaXRvckFjdGlvbiIsIm9wdHMiLCJhY3Rpb24iLCJtb2JpbGVTd2lwZSIsImRpcmVjdGlvbiIsImVsZW1lbnQiLCJzd2lwZXIiLCJzdGFydENvb3JkaW5hdGVzIiwiZW5kQ29vcmRpbmF0ZXMiLCJwcmVjaXNpb25EZXNjcmliZXIiLCJ1dGlsIiwidW53cmFwRWxlbWVudCIsIm1vYmlsZVByZXNzS2V5Iiwia2V5Y29kZSIsIm1ldGFzdGF0ZSIsImZsYWdzIiwiaXNMb25nUHJlc3MiLCJtb2JpbGVCYWNrZ3JvdW5kQXBwIiwic2Vjb25kcyIsImJhY2tncm91bmQiLCJtb2JpbGVHZXREZXZpY2VJbmZvIiwibW9iaWxlSXNUb2FzdFZpc2libGUiLCJ0ZXh0IiwiaXNSZWdleHAiLCJoYXNWYWx1ZSIsIkludmFsaWRBcmd1bWVudEVycm9yIiwibW9iaWxlT3BlbkRyYXdlciIsImdyYXZpdHkiLCJtb2JpbGVDbG9zZURyYXdlciIsIm1vYmlsZVNldERhdGUiLCJ5ZWFyIiwibW9udGhPZlllYXIiLCJkYXlPZk1vbnRoIiwibW9iaWxlU2V0VGltZSIsImhvdXJzIiwibWludXRlcyIsIm1vYmlsZU5hdmlnYXRlVG8iLCJtZW51SXRlbUlkIiwibWVudUl0ZW1JZEFzTnVtYmVyIiwicGFyc2VJbnQiLCJpc05hTiIsIm1vYmlsZVdlYkF0b21zIiwiZ2V0RGlzcGxheURlbnNpdHkiLCJtb2JpbGVTY3JvbGxUb1BhZ2UiLCJzY3JvbGxUb1R5cGVzIiwicmVzIiwidmFsaWRhdGUiLCJwcmVzZW5jZSIsInNjcm9sbFRvIiwiaW5jbHVzaW9uIiwid2l0aGluIiwibWVzc2FnZSIsImpvaW4iLCJzY3JvbGxUb1BhZ2UiLCJudW1lcmljYWxpdHkiLCJvbmx5SW50ZWdlciIsImdyZWF0ZXJUaGFuT3JFcXVhbFRvIiwic21vb3RoU2Nyb2xsIiwibG9nIiwid2FybiIsIm1vYmlsZUJhY2tkb29yIiwidGFyZ2V0IiwibWV0aG9kcyIsImVsZW1lbnRJZCIsInRhcmdldEVsZW1lbnQiLCJtb2JpbGVVaWF1dG9tYXRvciIsInN0cmF0ZWd5IiwibG9jYXRvciIsImluZGV4IiwibW9iaWxlVWlhdXRvbWF0b3JQYWdlU291cmNlIiwibW9iaWxlRmxhc2hFbGVtZW50IiwiZHVyYXRpb25NaWxsaXMiLCJyZXBlYXRDb3VudCIsIm1vYmlsZUNsaWNrQWN0aW9uIiwidGFwcGVyIiwiY29vcmRpbmF0ZXNQcm92aWRlciIsImlucHV0RGV2aWNlIiwiYnV0dG9uU3RhdGUiLCJ1cGRhdGVTZXR0aW5ncyIsInNldHRpbmdzIiwidXBkYXRlIiwiZ2V0U2V0dGluZ3MiLCJkcml2ZXJTZXR0aW5ncyIsInNlcnZlclNldHRpbmdzIiwic3VzcGVuZENocm9tZWRyaXZlclByb3h5IiwiY2hyb21lZHJpdmVyIiwicHJveHlSZXFSZXMiLCJiaW5kIiwicHJveHlDb21tYW5kIiwiandwUHJveHlBY3RpdmUiLCJtb2JpbGVTdGFydEFjdGl2aXR5IiwiYXBwUGFja2FnZSIsImNhcHMiLCJhcHBBY3Rpdml0eSIsImxvY2FsZSIsIm9wdGlvbmFsSW50ZW50QXJndW1lbnRzIiwib3B0aW9uYWxBY3Rpdml0eUFyZ3VtZW50cyIsInN0YXJ0QWN0aXZpdHkiLCJhcHBXYWl0UGFja2FnZSIsImFwcFdhaXRBY3Rpdml0eSIsInF1YWxpZnlBY3Rpdml0eU5hbWUiLCJkZWJ1ZyIsIndhaXRGb3JBY3Rpdml0eSIsIm1vYmlsZURpc21pc3NBdXRvZmlsbCIsIk9iamVjdCIsImFzc2lnbiIsIl9kZWZhdWx0IiwiZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9jb21tYW5kcy9nZW5lcmFsLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyB1dGlsIH0gZnJvbSAnYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IHZhbGlkYXRlIGZyb20gJ3ZhbGlkYXRlLmpzJztcbmltcG9ydCB7IGVycm9ycyB9IGZyb20gJ2FwcGl1bS9kcml2ZXInO1xuaW1wb3J0IHsgcXVhbGlmeUFjdGl2aXR5TmFtZSB9IGZyb20gJy4uL3V0aWxzJztcblxuY29uc3QgY29tbWFuZHMgPSB7fSwgaGVscGVycyA9IHt9LCBleHRlbnNpb25zID0ge307XG5cbmZ1bmN0aW9uIHJlcXVpcmVPcHRpb25zIChvcHRpb25zLCByZXF1aXJlZE9wdGlvbk5hbWVzKSB7XG4gIGlmICghXy5pc0FycmF5KHJlcXVpcmVkT3B0aW9uTmFtZXMpKSB7XG4gICAgcmVxdWlyZWRPcHRpb25OYW1lcyA9IFtyZXF1aXJlZE9wdGlvbk5hbWVzXTtcbiAgfVxuICBjb25zdCBwcmVzZW50T3B0aW9uTmFtZXMgPSBfLmtleXMob3B0aW9ucyk7XG4gIGNvbnN0IG1pc3NpbmdPcHRpb25OYW1lcyA9IF8uZGlmZmVyZW5jZShyZXF1aXJlZE9wdGlvbk5hbWVzLCBwcmVzZW50T3B0aW9uTmFtZXMpO1xuICBpZiAoXy5pc0VtcHR5KG1pc3NpbmdPcHRpb25OYW1lcykpIHtcbiAgICByZXR1cm4gb3B0aW9ucztcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBmb2xsb3dpbmcgb3B0aW9ucyBhcmUgcmVxdWlyZWQ6ICR7SlNPTi5zdHJpbmdpZnkobWlzc2luZ09wdGlvbk5hbWVzKX0uIGAgK1xuICAgIGBZb3UgaGF2ZSBvbmx5IHByb3ZpZGVkOiAke0pTT04uc3RyaW5naWZ5KHByZXNlbnRPcHRpb25OYW1lcyl9YCk7XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZXF1aXJlLWF3YWl0XG5jb21tYW5kcy5sYXVuY2hBcHAgPSBhc3luYyBmdW5jdGlvbiBsYXVuY2hBcHAgKCkge1xuICB0aHJvdyBuZXcgZXJyb3JzLlVuc3VwcG9ydGVkT3BlcmF0aW9uRXJyb3IoJ1BsZWFzZSBjcmVhdGUgYSBuZXcgc2Vzc2lvbiBpbiBvcmRlciB0byBsYXVuY2ggdGhlIGFwcGxpY2F0aW9uIHVuZGVyIHRlc3QnKTtcbn07XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZXF1aXJlLWF3YWl0XG5jb21tYW5kcy5jbG9zZUFwcCA9IGFzeW5jIGZ1bmN0aW9uIGNsb3NlQXBwICgpIHtcbiAgdGhyb3cgbmV3IGVycm9ycy5VbnN1cHBvcnRlZE9wZXJhdGlvbkVycm9yKCdQbGVhc2UgcXVpdCB0aGUgc2Vzc2lvbiBpbiBvcmRlciB0byBjbG9zZSB0aGUgYXBwbGljYXRpb24gdW5kZXIgdGVzdCcpO1xufTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlcXVpcmUtYXdhaXRcbmNvbW1hbmRzLnJlc2V0ID0gYXN5bmMgZnVuY3Rpb24gcmVzZXQgKCkge1xuICB0aHJvdyBuZXcgZXJyb3JzLlVuc3VwcG9ydGVkT3BlcmF0aW9uRXJyb3IoXG4gICAgJ1BsZWFzZSBxdWl0IHRoZSBzZXNzaW9uIGFuZCBjcmVhdGUgYSBuZXcgb25lICcgK1xuICAgICdpbiBvcmRlciB0byBjbG9zZSBhbmQgbGF1bmNoIHRoZSBhcHBsaWNhdGlvbiB1bmRlciB0ZXN0Jyk7XG59O1xuXG5jb21tYW5kcy5nZXRDbGlwYm9hcmQgPSBhc3luYyBmdW5jdGlvbiBnZXRDbGlwYm9hcmQgKCkge1xuICByZXR1cm4gKGF3YWl0IHRoaXMuYWRiLmdldEFwaUxldmVsKCkgPCAyOSlcbiAgICA/IChhd2FpdCB0aGlzLmVzcHJlc3NvLmp3cHJveHkuY29tbWFuZCgnL2FwcGl1bS9kZXZpY2UvZ2V0X2NsaXBib2FyZCcsICdQT1NUJywge30pKVxuICAgIDogKGF3YWl0IHRoaXMuYWRiLmdldENsaXBib2FyZCgpKTtcbn07XG5cbmNvbW1hbmRzLm1vYmlsZVBlcmZvcm1FZGl0b3JBY3Rpb24gPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVQZXJmb3JtRWRpdG9yQWN0aW9uIChvcHRzID0ge30pIHtcbiAgY29uc3Qge2FjdGlvbn0gPSByZXF1aXJlT3B0aW9ucyhvcHRzLCBbJ2FjdGlvbiddKTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuZXNwcmVzc28uandwcm94eS5jb21tYW5kKCcvYXBwaXVtL2RldmljZS9wZXJmb3JtX2VkaXRvcl9hY3Rpb24nLCAnUE9TVCcsIHthY3Rpb259KTtcbn07XG5cbmNvbW1hbmRzLm1vYmlsZVN3aXBlID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlU3dpcGUgKG9wdHMgPSB7fSkge1xuICBjb25zdCB7ZGlyZWN0aW9uLCBlbGVtZW50LCBzd2lwZXIsIHN0YXJ0Q29vcmRpbmF0ZXMsIGVuZENvb3JkaW5hdGVzLCBwcmVjaXNpb25EZXNjcmliZXJ9ID0gcmVxdWlyZU9wdGlvbnMob3B0cywgWydlbGVtZW50J10pO1xuICByZXR1cm4gYXdhaXQgdGhpcy5lc3ByZXNzby5qd3Byb3h5LmNvbW1hbmQoYC9hcHBpdW0vZXhlY3V0ZV9tb2JpbGUvJHt1dGlsLnVud3JhcEVsZW1lbnQoZWxlbWVudCl9L3N3aXBlYCwgJ1BPU1QnLCB7XG4gICAgZGlyZWN0aW9uLCBlbGVtZW50LCBzd2lwZXIsIHN0YXJ0Q29vcmRpbmF0ZXMsIGVuZENvb3JkaW5hdGVzLCBwcmVjaXNpb25EZXNjcmliZXJcbiAgfSk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFByZXNzS2V5T3B0aW9uc1xuICogQHByb3BlcnR5IHtudW1iZXJ9IGtleWNvZGUgQSB2YWxpZCBBbmRyb2lkIGtleSBjb2RlLiBTZWUgaHR0cHM6Ly9kZXZlbG9wZXIuYW5kcm9pZC5jb20vcmVmZXJlbmNlL2FuZHJvaWQvdmlldy9LZXlFdmVudFxuICogZm9yIHRoZSBsaXN0IG9mIGF2YWlsYWJsZSBrZXkgY29kZXNcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyP30gbWV0YXN0YXRlIEFuIGludGVnZXIgaW4gd2hpY2ggZWFjaCBiaXQgc2V0IHRvIDEgcmVwcmVzZW50cyBhIHByZXNzZWQgbWV0YSBrZXkuIFNlZVxuICogaHR0cHM6Ly9kZXZlbG9wZXIuYW5kcm9pZC5jb20vcmVmZXJlbmNlL2FuZHJvaWQvdmlldy9LZXlFdmVudCBmb3IgbW9yZSBkZXRhaWxzLlxuICogQHByb3BlcnR5IHtudW1iZXI/fSBmbGFncyBGbGFncyBmb3IgdGhlIHBhcnRpY3VsYXIga2V5IGV2ZW50LiBTZWVcbiAqIGh0dHBzOi8vZGV2ZWxvcGVyLmFuZHJvaWQuY29tL3JlZmVyZW5jZS9hbmRyb2lkL3ZpZXcvS2V5RXZlbnQgZm9yIG1vcmUgZGV0YWlscy5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gaXNMb25nUHJlc3MgW2ZhbHNlXSBXaGV0aGVyIHRvIGVtdWxhdGUgbG9uZyBrZXkgcHJlc3NcbiAqL1xuXG4vKipcbiAqIEVtdWxhdGVzIGtleSBwcmVzcyBldmVudC5cbiAqXG4gKiBAcGFyYW0ge1ByZXNzS2V5T3B0aW9uc30gb3B0c1xuICovXG5jb21tYW5kcy5tb2JpbGVQcmVzc0tleSA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVByZXNzS2V5IChvcHRzID0ge30pIHtcbiAgY29uc3Qge2tleWNvZGUsIG1ldGFzdGF0ZSwgZmxhZ3MsIGlzTG9uZ1ByZXNzfSA9IHJlcXVpcmVPcHRpb25zKG9wdHMsIFsna2V5Y29kZSddKTtcbiAgYXdhaXQgdGhpcy5lc3ByZXNzby5qd3Byb3h5LmNvbW1hbmQoYC9hcHBpdW0vZGV2aWNlLyR7aXNMb25nUHJlc3MgPyAnbG9uZ18nIDogJyd9cHJlc3Nfa2V5Y29kZWAsICdQT1NUJywge1xuICAgIGtleWNvZGUsIG1ldGFzdGF0ZSwgZmxhZ3NcbiAgfSk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IEJhY2tncm91bmRBcHBPcHRpb25zXG4gKiBAcHJvcGVydHkge251bWJlcj99IHNlY29uZHMgVGhlIGFtb3VudCBvZiBzZWNvbmRzIHRvIHdhaXQgYmV0d2VlbiBwdXR0aW5nIHRoZSBhcHAgdG8gYmFja2dyb3VuZCBhbmQgcmVzdG9yaW5nIGl0LlxuICogQW55IG5lZ2F0aXZlIHZhbHVlIG1lYW5zIHRvIG5vdCByZXN0b3JlIHRoZSBhcHAgYWZ0ZXIgcHV0dGluZyBpdCB0byB0aGUgYmFja2dyb3VuZCAodGhlIGRlZmF1bHQgYmVoYXZpb3IpLlxuICovXG5cbi8qKlxuICogUHV0cyB0aGUgYXBwIHVuZGVyIHRlc3QgdG8gdGhlIGJhY2tncm91bmRcbiAqIGFuZCB0aGVuIHJlc3RvcmVzIGl0IChpZiBuZWVkZWQpLiBUaGUgY2FsbCBpcyBibG9ja2luZyBpcyB0aGVcbiAqIGFwcCBuZWVkcyB0byBiZSByZXN0b3JlZCBhZnRlcndhcmRzLlxuICpcbiAqIEBwYXJhbSB7QmFja2dyb3VuZEFwcE9wdGlvbnN9IG9wdHNcbiAqL1xuY29tbWFuZHMubW9iaWxlQmFja2dyb3VuZEFwcCA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZUJhY2tncm91bmRBcHAgKG9wdHMgPSB7fSkge1xuICBjb25zdCB7c2Vjb25kcyA9IC0xfSA9IG9wdHM7XG4gIHJldHVybiBhd2FpdCB0aGlzLmJhY2tncm91bmQoc2Vjb25kcyk7XG59O1xuXG5jb21tYW5kcy5tb2JpbGVHZXREZXZpY2VJbmZvID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlR2V0RGV2aWNlSW5mbyAoKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLmVzcHJlc3NvLmp3cHJveHkuY29tbWFuZCgnL2FwcGl1bS9kZXZpY2UvaW5mbycsICdHRVQnKTtcbn07XG5cbmNvbW1hbmRzLm1vYmlsZUlzVG9hc3RWaXNpYmxlID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlSXNUb2FzdFZpc2libGUgKG9wdHMgPSB7fSkge1xuICBjb25zdCB7dGV4dCwgaXNSZWdleHB9ID0gb3B0cztcbiAgaWYgKCF1dGlsLmhhc1ZhbHVlKHRleHQpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihgJ3RleHQnIGFyZ3VtZW50IGlzIG1hbmRhdG9yeWApO1xuICB9XG4gIHJldHVybiBhd2FpdCB0aGlzLmVzcHJlc3NvLmp3cHJveHkuY29tbWFuZCgnL2FwcGl1bS9leGVjdXRlX21vYmlsZS9pc190b2FzdF9kaXNwbGF5ZWQnLCAnUE9TVCcsIHtcbiAgICB0ZXh0LFxuICAgIGlzUmVnZXhwLFxuICB9KTtcbn07XG5cbmNvbW1hbmRzLm1vYmlsZU9wZW5EcmF3ZXIgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVPcGVuRHJhd2VyIChvcHRzID0ge30pIHtcbiAgY29uc3Qge2VsZW1lbnQsIGdyYXZpdHl9ID0gcmVxdWlyZU9wdGlvbnMob3B0cywgWydlbGVtZW50J10pO1xuXG4gIHJldHVybiBhd2FpdCB0aGlzLmVzcHJlc3NvLmp3cHJveHkuY29tbWFuZChgL2FwcGl1bS9leGVjdXRlX21vYmlsZS8ke3V0aWwudW53cmFwRWxlbWVudChlbGVtZW50KX0vb3Blbl9kcmF3ZXJgLCAnUE9TVCcsIHtcbiAgICBncmF2aXR5XG4gIH0pO1xufTtcblxuY29tbWFuZHMubW9iaWxlQ2xvc2VEcmF3ZXIgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVDbG9zZURyYXdlciAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHtlbGVtZW50LCBncmF2aXR5fSA9IHJlcXVpcmVPcHRpb25zKG9wdHMsIFsnZWxlbWVudCddKTtcblxuICByZXR1cm4gYXdhaXQgdGhpcy5lc3ByZXNzby5qd3Byb3h5LmNvbW1hbmQoYC9hcHBpdW0vZXhlY3V0ZV9tb2JpbGUvJHt1dGlsLnVud3JhcEVsZW1lbnQoZWxlbWVudCl9L2Nsb3NlX2RyYXdlcmAsICdQT1NUJywge1xuICAgIGdyYXZpdHlcbiAgfSk7XG59O1xuXG5jb21tYW5kcy5tb2JpbGVTZXREYXRlID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlU2V0RGF0ZSAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHtlbGVtZW50LCB5ZWFyLCBtb250aE9mWWVhciwgZGF5T2ZNb250aH0gPSByZXF1aXJlT3B0aW9ucyhvcHRzLCBbJ2VsZW1lbnQnLCAneWVhcicsICdtb250aE9mWWVhcicsICdkYXlPZk1vbnRoJ10pO1xuXG4gIHJldHVybiBhd2FpdCB0aGlzLmVzcHJlc3NvLmp3cHJveHkuY29tbWFuZChgL2FwcGl1bS9leGVjdXRlX21vYmlsZS8ke3V0aWwudW53cmFwRWxlbWVudChlbGVtZW50KX0vc2V0X2RhdGVgLCAnUE9TVCcsIHtcbiAgICB5ZWFyLFxuICAgIG1vbnRoT2ZZZWFyLFxuICAgIGRheU9mTW9udGgsXG4gIH0pO1xufTtcblxuY29tbWFuZHMubW9iaWxlU2V0VGltZSA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVNldFRpbWUgKG9wdHMgPSB7fSkge1xuICBjb25zdCB7ZWxlbWVudCwgaG91cnMsIG1pbnV0ZXN9ID0gcmVxdWlyZU9wdGlvbnMob3B0cywgWydlbGVtZW50JywgJ2hvdXJzJywgJ21pbnV0ZXMnXSk7XG5cbiAgcmV0dXJuIGF3YWl0IHRoaXMuZXNwcmVzc28uandwcm94eS5jb21tYW5kKGAvYXBwaXVtL2V4ZWN1dGVfbW9iaWxlLyR7dXRpbC51bndyYXBFbGVtZW50KGVsZW1lbnQpfS9zZXRfdGltZWAsICdQT1NUJywge1xuICAgIGhvdXJzLFxuICAgIG1pbnV0ZXMsXG4gIH0pO1xufTtcblxuY29tbWFuZHMubW9iaWxlTmF2aWdhdGVUbyA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZU5hdmlnYXRlVG8gKG9wdHMgPSB7fSkge1xuICBsZXQge2VsZW1lbnQsIG1lbnVJdGVtSWR9ID0gcmVxdWlyZU9wdGlvbnMob3B0cywgWydtZW51SXRlbUlkJywgJ2VsZW1lbnQnXSk7XG5cbiAgbGV0IG1lbnVJdGVtSWRBc051bWJlciA9IHBhcnNlSW50KG1lbnVJdGVtSWQsIDEwKTtcbiAgaWYgKF8uaXNOYU4obWVudUl0ZW1JZEFzTnVtYmVyKSB8fCBtZW51SXRlbUlkQXNOdW1iZXIgPCAwKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihgJ21lbnVJdGVtSWQnIG11c3QgYmUgYSBub24tbmVnYXRpdmUgbnVtYmVyLiBGb3VuZCAke21lbnVJdGVtSWR9YCk7XG4gIH1cblxuICByZXR1cm4gYXdhaXQgdGhpcy5lc3ByZXNzby5qd3Byb3h5LmNvbW1hbmQoYC9hcHBpdW0vZXhlY3V0ZV9tb2JpbGUvJHt1dGlsLnVud3JhcEVsZW1lbnQoZWxlbWVudCl9L25hdmlnYXRlX3RvYCwgJ1BPU1QnLCB7XG4gICAgbWVudUl0ZW1JZFxuICB9KTtcbn07XG5cbi8qKlxuICogUnVucyBhIGNoYWluIG9mIEVzcHJlc3NvIHdlYiBhdG9tcyAoc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLmFuZHJvaWQuY29tL3RyYWluaW5nL3Rlc3RpbmcvZXNwcmVzc28vd2ViIGZvciByZWZlcmVuY2UpXG4gKlxuICogVGFrZXMgSlNPTiBvZiB0aGUgZm9ybVxuICpcbiAqIHtcbiAqICAgXCJ3ZWJ2aWV3RWxcIjogXCI8RUxFTUVOVF9JRD5cIiwgLy8gb3B0aW9uYWwgd2VidmlldyBlbGVtZW50IHRvIG9wZXJhdGUgb25cbiAqICAgXCJmb3JjZUphdmFzY3JpcHRFbmFibGVkXCI6IHRydWV8ZmFsc2UsIC8vIGlmIHdlYnZpZXcgZGlzYWJsZXMgamF2YXNjcmlwdCwgd2ViYXRvbXMgd29uJ3Qgd29yaywgdGhpcyBmb3JjZXMgaXRcbiAqICAgXCJtZXRob2RDaGFpblwiOiBbXG4gKiAgICAge1wibmFtZVwiOiBcIm1ldGhvZE5hbWVcIiwgXCJhdG9tXCI6IHtcIm5hbWVcIjogXCJhdG9tTmFtZVwiLCBcImFyZ3NcIjogW1wiYXJnMVwiLCBcImFyZzJcIiwgLi4uXX19LFxuICogICAgIC4uLlxuICogICBdXG4gKiB9XG4gKlxuICovXG5jb21tYW5kcy5tb2JpbGVXZWJBdG9tcyA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVdlYkF0b21zIChvcHRzID0ge30pIHtcbiAgb3B0cyA9IHJlcXVpcmVPcHRpb25zKG9wdHMsIFsnbWV0aG9kQ2hhaW4nXSk7XG4gIHJldHVybiBhd2FpdCB0aGlzLmVzcHJlc3NvLmp3cHJveHkuY29tbWFuZChgL2FwcGl1bS9leGVjdXRlX21vYmlsZS93ZWJfYXRvbXNgLCAnUE9TVCcsIG9wdHMpO1xufTtcblxuY29tbWFuZHMuZ2V0RGlzcGxheURlbnNpdHkgPSBhc3luYyBmdW5jdGlvbiBnZXREaXNwbGF5RGVuc2l0eSAoKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLmVzcHJlc3NvLmp3cHJveHkuY29tbWFuZCgnL2FwcGl1bS9kZXZpY2UvZGlzcGxheV9kZW5zaXR5JywgJ0dFVCcsIHt9KTtcbn07XG5cbmNvbW1hbmRzLm1vYmlsZVNjcm9sbFRvUGFnZSA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVNjcm9sbFRvUGFnZSAob3B0cyA9IHt9KSB7XG5cbiAgLy8gVmFsaWRhdGUgdGhlIHBhcmFtZXRlcnNcbiAgY29uc3Qgc2Nyb2xsVG9UeXBlcyA9IFsnZmlyc3QnLCAnbGFzdCcsICdsZWZ0JywgJ3JpZ2h0J107XG4gIGNvbnN0IHJlcyA9IHZhbGlkYXRlKG9wdHMsIHtcbiAgICBlbGVtZW50OiB7cHJlc2VuY2U6IHRydWV9LFxuICAgIHNjcm9sbFRvOiB7XG4gICAgICBpbmNsdXNpb246IHtcbiAgICAgICAgd2l0aGluOiBzY3JvbGxUb1R5cGVzLFxuICAgICAgICBtZXNzYWdlOiBgXCJzY3JvbGxUb1wiIG11c3QgYmUgb25lIG9mIFwiJHtzY3JvbGxUb1R5cGVzLmpvaW4oJywgJyl9XCIgZm91bmQgJyV7dmFsdWV9J2AsXG4gICAgICB9XG4gICAgfSxcbiAgICBzY3JvbGxUb1BhZ2U6IHtcbiAgICAgIG51bWVyaWNhbGl0eToge1xuICAgICAgICBvbmx5SW50ZWdlcjogdHJ1ZSxcbiAgICAgICAgZ3JlYXRlclRoYW5PckVxdWFsVG86IDAsXG4gICAgICAgIG1lc3NhZ2U6IGBcInNjcm9sbFRvUGFnZVwiIG11c3QgYmUgYSBub24tbmVnYXRpdmUgaW50ZWdlci4gRm91bmQgJyV7dmFsdWV9J2BcbiAgICAgIH0sXG4gICAgfSxcbiAgfSk7XG4gIGlmICh1dGlsLmhhc1ZhbHVlKHJlcykpIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRBcmd1bWVudEVycm9yKGBJbnZhbGlkIHNjcm9sbFRvIHBhcmFtZXRlcnM6ICR7SlNPTi5zdHJpbmdpZnkocmVzKX1gKTtcbiAgfVxuXG4gIGNvbnN0IHtlbGVtZW50LCBzY3JvbGxUbywgc2Nyb2xsVG9QYWdlLCBzbW9vdGhTY3JvbGx9ID0gb3B0cztcblxuICBpZiAodXRpbC5oYXNWYWx1ZShzY3JvbGxUbykgJiYgdXRpbC5oYXNWYWx1ZShzY3JvbGxUb1BhZ2UpKSB7XG4gICAgdGhpcy5sb2cud2FybihgJ3Njcm9sbFRvJyBhbmQgJ3Njcm9sbFRvUGFnZScgd2hlcmUgYm90aCBwcm92aWRlZC4gRGVmYXVsdGluZyB0byAnc2Nyb2xsVG8nYCk7XG4gIH1cblxuICByZXR1cm4gYXdhaXQgdGhpcy5lc3ByZXNzby5qd3Byb3h5LmNvbW1hbmQoYC9hcHBpdW0vZXhlY3V0ZV9tb2JpbGUvJHt1dGlsLnVud3JhcEVsZW1lbnQoZWxlbWVudCl9L3Njcm9sbF90b19wYWdlYCwgJ1BPU1QnLCB7XG4gICAgc2Nyb2xsVG8sXG4gICAgc2Nyb2xsVG9QYWdlLFxuICAgIHNtb290aFNjcm9sbCxcbiAgfSk7XG59O1xuXG5cbi8qKlxuICogIEFQSSB0byBpbnZva2UgbWV0aG9kcyBkZWZpbmVkIGluIEFuZHJvaWQgYXBwLlxuICpcbiAqICBFeGFtcGxlIGRhdGFcbiAqICB7XG4gKiAgIHRhcmdldDogJ2FjdGl2aXR5JyxcbiAqICAgbWV0aG9kczpcbiAqICAgICAgICAgW1xuICogICAgICAgICAgIHtcbiAqICAgICAgICAgICAgICAgbmFtZTogXCJzb21lTWV0aG9kXCIsXG4gKiAgICAgICAgICAgfSxcbiAqICAgICAgICAgICB7XG4gKiAgICAgICAgICAgICAgIG5hbWU6IFwiYW5vdGhlck1ldGhvZFwiLFxuICogICAgICAgICAgICAgICBhcmdzOlxuICogICAgICAgICAgICAgICAgICAgW1xuICogICAgICAgICAgICAgICAgICAgICAgIHt2YWx1ZTogXCJMb2xcIiwgdHlwZTogJ2phdmEubGFuZy5DaGFyU2VxdWVuY2UnfSxcbiAqICAgICAgICAgICAgICAgICAgICAgICB7dmFsdWU6IDEsIHR5cGU6ICdpbnQnfVxuICogICAgICAgICAgICAgICAgICAgXVxuICogICAgICAgICAgIH1cbiAqICAgICAgICAgXVxuICogfVxuICpcbiAqIEluIGFib3ZlIGV4YW1wbGUsIG1ldGhvZCBcInNvbWVNZXRob2RcIiB3aWxsIGJlIGludm9rZWQgb24gJ2FjdGl2aXR5Jy4gT24gdGhlIHJlc3VsdCwgXCJhbm90aGVyTWV0aG9kXCIgd2lsbCBiZSBpbnZva2VkXG4gKiAgXCJ0YXJnZXRcIiBjYW4gYmUgZWl0aGVyICdhY3Rpdml0eScsICdhcHBsaWNhdGlvbicgb3IgJ2VsZW1lbnQnXG4gKiAgSWYgdGFyZ2V0IGlzIHNldCB0byAnYXBwbGljYXRpb24nLCBtZXRob2RzIHdpbGwgYmUgaW52b2tlZCBvbiBhcHBsaWNhdGlvbiBjbGFzc1xuICogIElmIHRhcmdldCBpcyBzZXQgdG8gJ2FjdGl2aXR5JywgbWV0aG9kcyB3aWxsIGJlIGludm9rZWQgb24gY3VycmVudCBhY3Rpdml0eVxuICogIElmIHRhcmdldCBpcyBzZXQgdG8gJ2VsZW1lbnQnLCAnZWxlbWVudElkJyBtdXN0IGJlIHNwZWNpZmllZFxuICpcbiAqIC0gT25seSAnUHVibGljJyBtZXRob2RzIGNhbiBiZSBpbnZva2VkLiAoJ29wZW4nIG1vZGlmaXJlIGlzIG5lY2Vzc2FyeSBpbiBLb3RsaW4pXG4gKiAtIGZvbGxvd2luZyBwcmltaXRpdmUgdHlwZXMgYXJlIHN1cHBvcnRlZDogXCJpbnRcIiwgXCJib29sZWFuXCIsIFwiYnl0ZVwiLCBcInNob3J0XCIsIFwibG9uZ1wiLCBcImZsb2F0XCIsIFwiY2hhclwiXG4gKiAtICBOb24tcHJpbWl0aXZlIHR5cGVzIHdpdGggZnVsbHkgcXVhbGlmaWVkIG5hbWUgXCJqYXZhLmxhbmcuKlwiIGlzIGFsc28gc3VwcG9ydGVkOlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFZy4gXCJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlXCIsIFwiamF2YS5sYW5nLlN0cmluZ1wiLCBcImphdmEubGFuZy5JbnRlZ2VyXCIsIFwiamF2YS5sYW5nLkZsb2F0XCIsXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiamF2YS5sYW5nLkRvdWJsZVwiLCBcImphdmEubGFuZy5Cb29sZWFuXCIsIFwiamF2YS5sYW5nLkxvbmdcIiwgXCJqYXZhLmxhbmcuU2hvcnRcIixcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJqYXZhLmxhbmcuQ2hhcmFjdGVyXCIgZXRjLi4uXG4gKlxuICpcbiAqIEB0aHJvd3MgIHtFcnJvcn0gaWYgdGFyZ2V0IGlzIG5vdCAnYWN0aXZpdHknIG9yICdhcHBsaWNhdGlvbidcbiAqIEB0aHJvd3MgIHtFcnJvcn0gaWYgYSBtZXRob2QgaXMgbm90IGZvdW5kIHdpdGggZ2l2ZW4gYXJndW1lbnQgdHlwZXNcbiAqXG4gKiBAcmV0dXJuIHsqfSB0aGUgcmVzdWx0IG9mIHRoZSBsYXN0IG1ldGhvZCBpbiB0aGUgaW52b2NhdGlvbiBjaGFpbi4gSWYgbWV0aG9kIHJldHVybiB0eXBlIGlzIHZvaWQsIHRoZW4gXCI8Vk9JRD5cIiB3aWxsIGJlIHJldHVybmVkXG4gKlxuICovXG5jb21tYW5kcy5tb2JpbGVCYWNrZG9vciA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZUJhY2tkb29yIChvcHRzID0ge30pIHtcbiAgcmVxdWlyZU9wdGlvbnMob3B0cywgWyd0YXJnZXQnLCAnbWV0aG9kcyddKTtcbiAgY29uc3Qge3RhcmdldCwgbWV0aG9kc30gPSBvcHRzO1xuICBpZiAodGFyZ2V0ID09PSAnZWxlbWVudCcpIHtcbiAgICByZXF1aXJlT3B0aW9ucyhvcHRzLCBbJ2VsZW1lbnRJZCddKTtcbiAgfVxuICBjb25zdCB7ZWxlbWVudElkOiB0YXJnZXRFbGVtZW50fSA9IG9wdHM7XG4gIHJldHVybiBhd2FpdCB0aGlzLmVzcHJlc3NvLmp3cHJveHkuY29tbWFuZChgL2FwcGl1bS9leGVjdXRlX21vYmlsZS9iYWNrZG9vcmAsICdQT1NUJywge3RhcmdldCwgbWV0aG9kcywgdGFyZ2V0RWxlbWVudH0pO1xufTtcblxuLyoqXG4gKiAgRXhlY3V0ZSBVaUF1dG9tYXRvcjIgY29tbWFuZHMgdG8gZHJpdmUgb3V0IG9mIGFwcCBhcmVhcy5cbiAqICBzdHJhdGVneSBjYW4gYmUgb25lIG9mOiBcImNsYXp6XCIsIFwicmVzXCIsIFwidGV4dFwiLCBcInRleHRDb250YWluc1wiLCBcInRleHRFbmRzV2l0aFwiLCBcInRleHRTdGFydHNXaXRoXCIsXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkZXNjXCIsIFwiZGVzY0NvbnRhaW5zXCIsIFwiZGVzY0VuZHNXaXRoXCIsIFwiZGVzY1N0YXJ0c1dpdGhcIiwgXCJwa2dcIlxuICpcbiAqICBhY3Rpb24gY2FuIGJlIG9uZSBvZjogXCJjbGlja1wiLCBcImxvbmdDbGlja1wiLCBcImdldFRleHRcIiwgXCJnZXRDb250ZW50RGVzY3JpcHRpb25cIiwgXCJnZXRDbGFzc05hbWVcIixcbiAqICAgICAgICAgICAgICAgICAgICAgICAgXCJnZXRSZXNvdXJjZU5hbWVcIiwgXCJnZXRWaXNpYmxlQm91bmRzXCIsIFwiZ2V0VmlzaWJsZUNlbnRlclwiLCBcImdldEFwcGxpY2F0aW9uUGFja2FnZVwiLFxuICogICAgICAgICAgICAgICAgICAgICAgICBcImdldENoaWxkQ291bnRcIiwgXCJjbGVhclwiLCBcImlzQ2hlY2thYmxlXCIsIFwiaXNDaGVja2VkXCIsIFwiaXNDbGlja2FibGVcIiwgXCJpc0VuYWJsZWRcIixcbiAqICAgICAgICAgICAgICAgICAgICAgICAgXCJpc0ZvY3VzYWJsZVwiLCBcImlzRm9jdXNlZFwiLCBcImlzTG9uZ0NsaWNrYWJsZVwiLCBcImlzU2Nyb2xsYWJsZVwiLCBcImlzU2VsZWN0ZWRcIlxuICovXG5jb21tYW5kcy5tb2JpbGVVaWF1dG9tYXRvciA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVVpYXV0b21hdG9yIChvcHRzID0ge30pIHtcbiAgY29uc3Qge3N0cmF0ZWd5LCBsb2NhdG9yLCBhY3Rpb24sIGluZGV4fSA9IHJlcXVpcmVPcHRpb25zKG9wdHMsIFsnc3RyYXRlZ3knLCAnbG9jYXRvcicsICdhY3Rpb24nXSk7XG4gIHJldHVybiBhd2FpdCB0aGlzLmVzcHJlc3NvLmp3cHJveHkuY29tbWFuZChgL2FwcGl1bS9leGVjdXRlX21vYmlsZS91aWF1dG9tYXRvcmAsICdQT1NUJywge3N0cmF0ZWd5LCBsb2NhdG9yLCBpbmRleCwgYWN0aW9ufSk7XG59O1xuXG4vKipcbiAqICBFeGVjdXRlIFVpQXV0b21hdG9yMiBjb21tYW5kIHRvIHJldHVybiB0aGUgVUkgZHVtcCB3aGVuIEFVVCBpcyBpbiBiYWNrZ3JvdW5kLlxuICogQHRocm93cyAge0Vycm9yfSBpZiB1aWF1dG9tYXRvciB2aWV3IGR1bXAgaXMgdW5zdWNjZXNzZnVsXG4gKiBAcmV0dXJucyB7c3RyaW5nfSB1aWF1dG9tYXRvciBET00geG1sIGFzIHN0cmluZ1xuICovXG5jb21tYW5kcy5tb2JpbGVVaWF1dG9tYXRvclBhZ2VTb3VyY2UgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVVaWF1dG9tYXRvclBhZ2VTb3VyY2UgKCkge1xuICByZXR1cm4gYXdhaXQgdGhpcy5lc3ByZXNzby5qd3Byb3h5LmNvbW1hbmQoYC9hcHBpdW0vZXhlY3V0ZV9tb2JpbGUvdWlhdXRvbWF0b3JfcGFnZV9zb3VyY2VgLCAnR0VUJyk7XG59O1xuXG4vKipcbiAqICBGbGFzaCB0aGUgZWxlbWVudCB3aXRoIGdpdmVuIGlkLlxuICogIGR1cmF0aW9uTWlsbGlzIGFuZCByZXBlYXRDb3VudCBhcmUgb3B0aW9uYWxcbiAqXG4gKi9cbmNvbW1hbmRzLm1vYmlsZUZsYXNoRWxlbWVudCA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZUZsYXNoRWxlbWVudCAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHtlbGVtZW50fSA9IHJlcXVpcmVPcHRpb25zKG9wdHMsIFsnZWxlbWVudCddKTtcbiAgY29uc3Qge2R1cmF0aW9uTWlsbGlzLCByZXBlYXRDb3VudH0gPSBvcHRzO1xuICByZXR1cm4gYXdhaXQgdGhpcy5lc3ByZXNzby5qd3Byb3h5LmNvbW1hbmQoYC9hcHBpdW0vZXhlY3V0ZV9tb2JpbGUvJHt1dGlsLnVud3JhcEVsZW1lbnQoZWxlbWVudCl9L2ZsYXNoYCwgJ1BPU1QnLCB7XG4gICAgZHVyYXRpb25NaWxsaXMsXG4gICAgcmVwZWF0Q291bnRcbiAgfSk7XG59O1xuXG4vKipcbiAqIFBlcmZvcm0gYSAnR2VuZXJhbENsaWNrQWN0aW9uJyAoaHR0cHM6Ly9kZXZlbG9wZXIuYW5kcm9pZC5jb20vcmVmZXJlbmNlL2FuZHJvaWR4L3Rlc3QvZXNwcmVzc28vYWN0aW9uL0dlbmVyYWxDbGlja0FjdGlvbilcbiAqL1xuY29tbWFuZHMubW9iaWxlQ2xpY2tBY3Rpb24gPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVDbGlja0FjdGlvbiAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHtlbGVtZW50LCB0YXBwZXIsIGNvb3JkaW5hdGVzUHJvdmlkZXIsIHByZWNpc2lvbkRlc2NyaWJlcixcbiAgICAgICAgIGlucHV0RGV2aWNlLCBidXR0b25TdGF0ZX0gPSByZXF1aXJlT3B0aW9ucyhvcHRzLCBbJ2VsZW1lbnQnXSk7XG4gIHJldHVybiBhd2FpdCB0aGlzLmVzcHJlc3NvLmp3cHJveHkuY29tbWFuZChgL2FwcGl1bS9leGVjdXRlX21vYmlsZS8ke3V0aWwudW53cmFwRWxlbWVudChlbGVtZW50KX0vY2xpY2tfYWN0aW9uYCwgJ1BPU1QnLCB7XG4gICAgdGFwcGVyLCBjb29yZGluYXRlc1Byb3ZpZGVyLCBwcmVjaXNpb25EZXNjcmliZXIsIGlucHV0RGV2aWNlLCBidXR0b25TdGF0ZVxuICB9KTtcbn07XG5cbmNvbW1hbmRzLnVwZGF0ZVNldHRpbmdzID0gYXN5bmMgZnVuY3Rpb24gdXBkYXRlU2V0dGluZ3MgKHNldHRpbmdzKSB7XG4gIGF3YWl0IHRoaXMuc2V0dGluZ3MudXBkYXRlKHNldHRpbmdzKTtcbiAgYXdhaXQgdGhpcy5lc3ByZXNzby5qd3Byb3h5LmNvbW1hbmQoYC9hcHBpdW0vc2V0dGluZ3NgLCAnUE9TVCcsIHsgc2V0dGluZ3MgfSk7XG59O1xuXG5jb21tYW5kcy5nZXRTZXR0aW5ncyA9IGFzeW5jIGZ1bmN0aW9uIGdldFNldHRpbmdzICgpIHtcbiAgY29uc3QgZHJpdmVyU2V0dGluZ3MgPSB0aGlzLnNldHRpbmdzLmdldFNldHRpbmdzKCk7XG4gIGNvbnN0IHNlcnZlclNldHRpbmdzID0gYXdhaXQgdGhpcy5lc3ByZXNzby5qd3Byb3h5LmNvbW1hbmQoYC9hcHBpdW0vc2V0dGluZ3NgLCAnR0VUJyk7XG4gIHJldHVybiB7Li4uZHJpdmVyU2V0dGluZ3MsIC4uLnNlcnZlclNldHRpbmdzfTtcbn07XG5cbi8vIFN0b3AgcHJveHlpbmcgdG8gYW55IENocm9tZWRyaXZlciBhbmQgcmVkaXJlY3QgdG8gRXNwcmVzc29cbmhlbHBlcnMuc3VzcGVuZENocm9tZWRyaXZlclByb3h5ID0gZnVuY3Rpb24gc3VzcGVuZENocm9tZWRyaXZlclByb3h5ICgpIHtcbiAgdGhpcy5jaHJvbWVkcml2ZXIgPSBudWxsO1xuICB0aGlzLnByb3h5UmVxUmVzID0gdGhpcy5lc3ByZXNzby5wcm94eVJlcVJlcy5iaW5kKHRoaXMuZXNwcmVzc28pO1xuICB0aGlzLnByb3h5Q29tbWFuZCA9IHRoaXMuZXNwcmVzc28ucHJveHlDb21tYW5kLmJpbmQodGhpcy5lc3ByZXNzbyk7XG4gIHRoaXMuandwUHJveHlBY3RpdmUgPSB0cnVlO1xufTtcblxuLyoqXG4gKiAgU3RhcnRzIHRoZSBnaXZlbiBhY3Rpdml0eSB3aXRoIGludGVudCBvcHRpb25zLCBhY3Rpdml0eSBvcHRpb25zIGFuZCBsb2NhbGUuXG4gKiAgQWN0aXZpdHkgY291bGQgb25seSBiZSBleGVjdXRlZCBpbiBzY29wZSBvZiB0aGUgY3VycmVudCBhcHAgcGFja2FnZS5cbiAqXG4gKiAgYXBwQWN0aXZpdHkgaXMgbWFuZGF0b3J5XG4gKlxuICogIGxvY2FsZSwgb3B0aW9uYWxJbnRlbnRBcmd1bWVudHMsIG9wdGlvbmFsQWN0aXZpdHlBcmd1bWVudHMgYXJlIG9wdGlvbmFsXG4gKi9cbmNvbW1hbmRzLm1vYmlsZVN0YXJ0QWN0aXZpdHkgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVTdGFydEFjdGl2aXR5IChvcHRzID0ge30pIHtcbiAgY29uc3QgYXBwUGFja2FnZSA9IHRoaXMuY2Fwcy5hcHBQYWNrYWdlO1xuICBjb25zdCB7XG4gICAgYXBwQWN0aXZpdHksXG4gICAgbG9jYWxlLFxuICAgIG9wdGlvbmFsSW50ZW50QXJndW1lbnRzLFxuICAgIG9wdGlvbmFsQWN0aXZpdHlBcmd1bWVudHNcbiAgfSA9IHJlcXVpcmVPcHRpb25zKG9wdHMsIFsnYXBwQWN0aXZpdHknXSk7XG4gIHJldHVybiBhd2FpdCB0aGlzLmVzcHJlc3NvLmp3cHJveHkuY29tbWFuZChgL2FwcGl1bS9kZXZpY2Uvc3RhcnRfYWN0aXZpdHlgLCAnUE9TVCcsIHtcbiAgICBhcHBQYWNrYWdlLFxuICAgIGFwcEFjdGl2aXR5LFxuICAgIGxvY2FsZSxcbiAgICBvcHRpb25hbEludGVudEFyZ3VtZW50cyxcbiAgICBvcHRpb25hbEFjdGl2aXR5QXJndW1lbnRzXG4gIH0pO1xufTtcblxuY29tbWFuZHMuc3RhcnRBY3Rpdml0eSA9IGFzeW5jIGZ1bmN0aW9uIHN0YXJ0QWN0aXZpdHkgKGFwcFBhY2thZ2UsIGFwcEFjdGl2aXR5LFxuICBhcHBXYWl0UGFja2FnZSwgYXBwV2FpdEFjdGl2aXR5KSB7XG4gIC8vIGludGVudEFjdGlvbiwgaW50ZW50Q2F0ZWdvcnksIGludGVudEZsYWdzLCBvcHRpb25hbEludGVudEFyZ3VtZW50cywgZG9udFN0b3BBcHBPblJlc2V0XG4gIC8vIHBhcmFtZXRlcnMgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgRXNwcmVzc29cbiAgYXBwUGFja2FnZSA9IGFwcFBhY2thZ2UgfHwgdGhpcy5jYXBzLmFwcFBhY2thZ2U7XG4gIGFwcFdhaXRQYWNrYWdlID0gYXBwV2FpdFBhY2thZ2UgfHwgYXBwUGFja2FnZTtcbiAgYXBwQWN0aXZpdHkgPSBxdWFsaWZ5QWN0aXZpdHlOYW1lKGFwcEFjdGl2aXR5LCBhcHBQYWNrYWdlKTtcbiAgYXBwV2FpdEFjdGl2aXR5ID0gcXVhbGlmeUFjdGl2aXR5TmFtZShhcHBXYWl0QWN0aXZpdHkgfHwgYXBwQWN0aXZpdHksIGFwcFdhaXRQYWNrYWdlKTtcbiAgdGhpcy5sb2cuZGVidWcoYFN0YXJ0aW5nIGFjdGl2aXR5ICcke2FwcEFjdGl2aXR5fScgZm9yIHBhY2thZ2UgJyR7YXBwUGFja2FnZX0nYCk7XG4gIGF3YWl0IHRoaXMuZXNwcmVzc28uandwcm94eS5jb21tYW5kKGAvYXBwaXVtL2RldmljZS9zdGFydF9hY3Rpdml0eWAsICdQT1NUJywge1xuICAgIGFwcFBhY2thZ2UsXG4gICAgYXBwQWN0aXZpdHksXG4gIH0pO1xuICBhd2FpdCB0aGlzLmFkYi53YWl0Rm9yQWN0aXZpdHkoYXBwV2FpdFBhY2thZ2UsIGFwcFdhaXRBY3Rpdml0eSk7XG59O1xuXG5jb21tYW5kcy5tb2JpbGVEaXNtaXNzQXV0b2ZpbGwgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVEaXNtaXNzQXV0b2ZpbGwgKG9wdHMgPSB7fSkge1xuICBjb25zdCB7ZWxlbWVudH0gPSByZXF1aXJlT3B0aW9ucyhvcHRzLCBbJ2VsZW1lbnQnXSk7XG4gIGF3YWl0IHRoaXMuZXNwcmVzc28uandwcm94eS5jb21tYW5kKFxuICAgIGAvc2Vzc2lvbi86c2Vzc2lvbklkL2FwcGl1bS9leGVjdXRlX21vYmlsZS8ke3V0aWwudW53cmFwRWxlbWVudChlbGVtZW50KX0vZGlzbWlzc19hdXRvZmlsbGAsICdQT1NUJywge30pO1xufTtcblxuT2JqZWN0LmFzc2lnbihleHRlbnNpb25zLCBjb21tYW5kcywgaGVscGVycyk7XG5leHBvcnQgeyBjb21tYW5kcywgaGVscGVycyB9O1xuZXhwb3J0IGRlZmF1bHQgZXh0ZW5zaW9ucztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxJQUFBQSxPQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxRQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxTQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRyxPQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxNQUFBLEdBQUFKLE9BQUE7QUFFQSxNQUFNSyxRQUFRLEdBQUcsQ0FBQyxDQUFDO0VBQUVDLE9BQU8sR0FBRyxDQUFDLENBQUM7RUFBRUMsVUFBVSxHQUFHLENBQUMsQ0FBQztBQUFDQyxPQUFBLENBQUFGLE9BQUEsR0FBQUEsT0FBQTtBQUFBRSxPQUFBLENBQUFILFFBQUEsR0FBQUEsUUFBQTtBQUVuRCxTQUFTSSxjQUFjQSxDQUFFQyxPQUFPLEVBQUVDLG1CQUFtQixFQUFFO0VBQ3JELElBQUksQ0FBQ0MsZUFBQyxDQUFDQyxPQUFPLENBQUNGLG1CQUFtQixDQUFDLEVBQUU7SUFDbkNBLG1CQUFtQixHQUFHLENBQUNBLG1CQUFtQixDQUFDO0VBQzdDO0VBQ0EsTUFBTUcsa0JBQWtCLEdBQUdGLGVBQUMsQ0FBQ0csSUFBSSxDQUFDTCxPQUFPLENBQUM7RUFDMUMsTUFBTU0sa0JBQWtCLEdBQUdKLGVBQUMsQ0FBQ0ssVUFBVSxDQUFDTixtQkFBbUIsRUFBRUcsa0JBQWtCLENBQUM7RUFDaEYsSUFBSUYsZUFBQyxDQUFDTSxPQUFPLENBQUNGLGtCQUFrQixDQUFDLEVBQUU7SUFDakMsT0FBT04sT0FBTztFQUNoQjtFQUNBLE1BQU0sSUFBSVMsS0FBSyxDQUFFLHVDQUFzQ0MsSUFBSSxDQUFDQyxTQUFTLENBQUNMLGtCQUFrQixDQUFFLElBQUcsR0FDMUYs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
330
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfc3VwcG9ydCIsIl92YWxpZGF0ZSIsIl9kcml2ZXIiLCJfdXRpbHMiLCJjb21tYW5kcyIsImhlbHBlcnMiLCJleHRlbnNpb25zIiwiZXhwb3J0cyIsInJlcXVpcmVPcHRpb25zIiwib3B0aW9ucyIsInJlcXVpcmVkT3B0aW9uTmFtZXMiLCJfIiwiaXNBcnJheSIsInByZXNlbnRPcHRpb25OYW1lcyIsImtleXMiLCJtaXNzaW5nT3B0aW9uTmFtZXMiLCJkaWZmZXJlbmNlIiwiaXNFbXB0eSIsIkVycm9yIiwiSlNPTiIsInN0cmluZ2lmeSIsImxhdW5jaEFwcCIsImVycm9ycyIsIlVuc3VwcG9ydGVkT3BlcmF0aW9uRXJyb3IiLCJjbG9zZUFwcCIsInJlc2V0IiwiZ2V0Q2xpcGJvYXJkIiwiYWRiIiwiZ2V0QXBpTGV2ZWwiLCJlc3ByZXNzbyIsImp3cHJveHkiLCJjb21tYW5kIiwibW9iaWxlUGVyZm9ybUVkaXRvckFjdGlvbiIsIm9wdHMiLCJhY3Rpb24iLCJtb2JpbGVTd2lwZSIsImRpcmVjdGlvbiIsImVsZW1lbnQiLCJzd2lwZXIiLCJzdGFydENvb3JkaW5hdGVzIiwiZW5kQ29vcmRpbmF0ZXMiLCJwcmVjaXNpb25EZXNjcmliZXIiLCJ1dGlsIiwidW53cmFwRWxlbWVudCIsIm1vYmlsZVByZXNzS2V5Iiwia2V5Y29kZSIsIm1ldGFzdGF0ZSIsImZsYWdzIiwiaXNMb25nUHJlc3MiLCJtb2JpbGVCYWNrZ3JvdW5kQXBwIiwic2Vjb25kcyIsImJhY2tncm91bmQiLCJtb2JpbGVHZXREZXZpY2VJbmZvIiwibW9iaWxlSXNUb2FzdFZpc2libGUiLCJ0ZXh0IiwiaXNSZWdleHAiLCJoYXNWYWx1ZSIsIkludmFsaWRBcmd1bWVudEVycm9yIiwibW9iaWxlT3BlbkRyYXdlciIsImdyYXZpdHkiLCJtb2JpbGVDbG9zZURyYXdlciIsIm1vYmlsZVNldERhdGUiLCJ5ZWFyIiwibW9udGhPZlllYXIiLCJkYXlPZk1vbnRoIiwibW9iaWxlU2V0VGltZSIsImhvdXJzIiwibWludXRlcyIsIm1vYmlsZU5hdmlnYXRlVG8iLCJtZW51SXRlbUlkIiwibWVudUl0ZW1JZEFzTnVtYmVyIiwicGFyc2VJbnQiLCJpc05hTiIsIm1vYmlsZVdlYkF0b21zIiwiZ2V0RGlzcGxheURlbnNpdHkiLCJtb2JpbGVTY3JvbGxUb1BhZ2UiLCJzY3JvbGxUb1R5cGVzIiwicmVzIiwidmFsaWRhdGUiLCJwcmVzZW5jZSIsInNjcm9sbFRvIiwiaW5jbHVzaW9uIiwid2l0aGluIiwibWVzc2FnZSIsImpvaW4iLCJzY3JvbGxUb1BhZ2UiLCJudW1lcmljYWxpdHkiLCJvbmx5SW50ZWdlciIsImdyZWF0ZXJUaGFuT3JFcXVhbFRvIiwic21vb3RoU2Nyb2xsIiwibG9nIiwid2FybiIsIm1vYmlsZUJhY2tkb29yIiwidGFyZ2V0IiwibWV0aG9kcyIsImVsZW1lbnRJZCIsInRhcmdldEVsZW1lbnQiLCJtb2JpbGVVaWF1dG9tYXRvciIsInN0cmF0ZWd5IiwibG9jYXRvciIsImluZGV4IiwibW9iaWxlVWlhdXRvbWF0b3JQYWdlU291cmNlIiwibW9iaWxlRmxhc2hFbGVtZW50IiwiZHVyYXRpb25NaWxsaXMiLCJyZXBlYXRDb3VudCIsIm1vYmlsZUNsaWNrQWN0aW9uIiwidGFwcGVyIiwiY29vcmRpbmF0ZXNQcm92aWRlciIsImlucHV0RGV2aWNlIiwiYnV0dG9uU3RhdGUiLCJ1cGRhdGVTZXR0aW5ncyIsInNldHRpbmdzIiwidXBkYXRlIiwiZXJyIiwiZ2V0U2V0dGluZ3MiLCJkcml2ZXJTZXR0aW5ncyIsInNlcnZlclNldHRpbmdzIiwic3VzcGVuZENocm9tZWRyaXZlclByb3h5IiwiY2hyb21lZHJpdmVyIiwicHJveHlSZXFSZXMiLCJiaW5kIiwicHJveHlDb21tYW5kIiwiandwUHJveHlBY3RpdmUiLCJtb2JpbGVTdGFydEFjdGl2aXR5IiwiYXBwUGFja2FnZSIsImNhcHMiLCJhcHBBY3Rpdml0eSIsImxvY2FsZSIsIm9wdGlvbmFsSW50ZW50QXJndW1lbnRzIiwib3B0aW9uYWxBY3Rpdml0eUFyZ3VtZW50cyIsInN0YXJ0QWN0aXZpdHkiLCJhcHBXYWl0UGFja2FnZSIsImFwcFdhaXRBY3Rpdml0eSIsInF1YWxpZnlBY3Rpdml0eU5hbWUiLCJkZWJ1ZyIsIndhaXRGb3JBY3Rpdml0eSIsIm1vYmlsZURpc21pc3NBdXRvZmlsbCIsIk9iamVjdCIsImFzc2lnbiIsIl9kZWZhdWx0IiwiZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9jb21tYW5kcy9nZW5lcmFsLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyB1dGlsIH0gZnJvbSAnYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IHZhbGlkYXRlIGZyb20gJ3ZhbGlkYXRlLmpzJztcbmltcG9ydCB7IGVycm9ycyB9IGZyb20gJ2FwcGl1bS9kcml2ZXInO1xuaW1wb3J0IHsgcXVhbGlmeUFjdGl2aXR5TmFtZSB9IGZyb20gJy4uL3V0aWxzJztcblxuY29uc3QgY29tbWFuZHMgPSB7fSwgaGVscGVycyA9IHt9LCBleHRlbnNpb25zID0ge307XG5cbmZ1bmN0aW9uIHJlcXVpcmVPcHRpb25zIChvcHRpb25zLCByZXF1aXJlZE9wdGlvbk5hbWVzKSB7XG4gIGlmICghXy5pc0FycmF5KHJlcXVpcmVkT3B0aW9uTmFtZXMpKSB7XG4gICAgcmVxdWlyZWRPcHRpb25OYW1lcyA9IFtyZXF1aXJlZE9wdGlvbk5hbWVzXTtcbiAgfVxuICBjb25zdCBwcmVzZW50T3B0aW9uTmFtZXMgPSBfLmtleXMob3B0aW9ucyk7XG4gIGNvbnN0IG1pc3NpbmdPcHRpb25OYW1lcyA9IF8uZGlmZmVyZW5jZShyZXF1aXJlZE9wdGlvbk5hbWVzLCBwcmVzZW50T3B0aW9uTmFtZXMpO1xuICBpZiAoXy5pc0VtcHR5KG1pc3NpbmdPcHRpb25OYW1lcykpIHtcbiAgICByZXR1cm4gb3B0aW9ucztcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBmb2xsb3dpbmcgb3B0aW9ucyBhcmUgcmVxdWlyZWQ6ICR7SlNPTi5zdHJpbmdpZnkobWlzc2luZ09wdGlvbk5hbWVzKX0uIGAgK1xuICAgIGBZb3UgaGF2ZSBvbmx5IHByb3ZpZGVkOiAke0pTT04uc3RyaW5naWZ5KHByZXNlbnRPcHRpb25OYW1lcyl9YCk7XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZXF1aXJlLWF3YWl0XG5jb21tYW5kcy5sYXVuY2hBcHAgPSBhc3luYyBmdW5jdGlvbiBsYXVuY2hBcHAgKCkge1xuICB0aHJvdyBuZXcgZXJyb3JzLlVuc3VwcG9ydGVkT3BlcmF0aW9uRXJyb3IoJ1BsZWFzZSBjcmVhdGUgYSBuZXcgc2Vzc2lvbiBpbiBvcmRlciB0byBsYXVuY2ggdGhlIGFwcGxpY2F0aW9uIHVuZGVyIHRlc3QnKTtcbn07XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZXF1aXJlLWF3YWl0XG5jb21tYW5kcy5jbG9zZUFwcCA9IGFzeW5jIGZ1bmN0aW9uIGNsb3NlQXBwICgpIHtcbiAgdGhyb3cgbmV3IGVycm9ycy5VbnN1cHBvcnRlZE9wZXJhdGlvbkVycm9yKCdQbGVhc2UgcXVpdCB0aGUgc2Vzc2lvbiBpbiBvcmRlciB0byBjbG9zZSB0aGUgYXBwbGljYXRpb24gdW5kZXIgdGVzdCcpO1xufTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlcXVpcmUtYXdhaXRcbmNvbW1hbmRzLnJlc2V0ID0gYXN5bmMgZnVuY3Rpb24gcmVzZXQgKCkge1xuICB0aHJvdyBuZXcgZXJyb3JzLlVuc3VwcG9ydGVkT3BlcmF0aW9uRXJyb3IoXG4gICAgJ1BsZWFzZSBxdWl0IHRoZSBzZXNzaW9uIGFuZCBjcmVhdGUgYSBuZXcgb25lICcgK1xuICAgICdpbiBvcmRlciB0byBjbG9zZSBhbmQgbGF1bmNoIHRoZSBhcHBsaWNhdGlvbiB1bmRlciB0ZXN0Jyk7XG59O1xuXG5jb21tYW5kcy5nZXRDbGlwYm9hcmQgPSBhc3luYyBmdW5jdGlvbiBnZXRDbGlwYm9hcmQgKCkge1xuICByZXR1cm4gKGF3YWl0IHRoaXMuYWRiLmdldEFwaUxldmVsKCkgPCAyOSlcbiAgICA/IChhd2FpdCB0aGlzLmVzcHJlc3NvLmp3cHJveHkuY29tbWFuZCgnL2FwcGl1bS9kZXZpY2UvZ2V0X2NsaXBib2FyZCcsICdQT1NUJywge30pKVxuICAgIDogKGF3YWl0IHRoaXMuYWRiLmdldENsaXBib2FyZCgpKTtcbn07XG5cbmNvbW1hbmRzLm1vYmlsZVBlcmZvcm1FZGl0b3JBY3Rpb24gPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVQZXJmb3JtRWRpdG9yQWN0aW9uIChvcHRzID0ge30pIHtcbiAgY29uc3Qge2FjdGlvbn0gPSByZXF1aXJlT3B0aW9ucyhvcHRzLCBbJ2FjdGlvbiddKTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuZXNwcmVzc28uandwcm94eS5jb21tYW5kKCcvYXBwaXVtL2RldmljZS9wZXJmb3JtX2VkaXRvcl9hY3Rpb24nLCAnUE9TVCcsIHthY3Rpb259KTtcbn07XG5cbmNvbW1hbmRzLm1vYmlsZVN3aXBlID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlU3dpcGUgKG9wdHMgPSB7fSkge1xuICBjb25zdCB7ZGlyZWN0aW9uLCBlbGVtZW50LCBzd2lwZXIsIHN0YXJ0Q29vcmRpbmF0ZXMsIGVuZENvb3JkaW5hdGVzLCBwcmVjaXNpb25EZXNjcmliZXJ9ID0gcmVxdWlyZU9wdGlvbnMob3B0cywgWydlbGVtZW50J10pO1xuICByZXR1cm4gYXdhaXQgdGhpcy5lc3ByZXNzby5qd3Byb3h5LmNvbW1hbmQoYC9hcHBpdW0vZXhlY3V0ZV9tb2JpbGUvJHt1dGlsLnVud3JhcEVsZW1lbnQoZWxlbWVudCl9L3N3aXBlYCwgJ1BPU1QnLCB7XG4gICAgZGlyZWN0aW9uLCBlbGVtZW50LCBzd2lwZXIsIHN0YXJ0Q29vcmRpbmF0ZXMsIGVuZENvb3JkaW5hdGVzLCBwcmVjaXNpb25EZXNjcmliZXJcbiAgfSk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFByZXNzS2V5T3B0aW9uc1xuICogQHByb3BlcnR5IHtudW1iZXJ9IGtleWNvZGUgQSB2YWxpZCBBbmRyb2lkIGtleSBjb2RlLiBTZWUgaHR0cHM6Ly9kZXZlbG9wZXIuYW5kcm9pZC5jb20vcmVmZXJlbmNlL2FuZHJvaWQvdmlldy9LZXlFdmVudFxuICogZm9yIHRoZSBsaXN0IG9mIGF2YWlsYWJsZSBrZXkgY29kZXNcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyP30gbWV0YXN0YXRlIEFuIGludGVnZXIgaW4gd2hpY2ggZWFjaCBiaXQgc2V0IHRvIDEgcmVwcmVzZW50cyBhIHByZXNzZWQgbWV0YSBrZXkuIFNlZVxuICogaHR0cHM6Ly9kZXZlbG9wZXIuYW5kcm9pZC5jb20vcmVmZXJlbmNlL2FuZHJvaWQvdmlldy9LZXlFdmVudCBmb3IgbW9yZSBkZXRhaWxzLlxuICogQHByb3BlcnR5IHtudW1iZXI/fSBmbGFncyBGbGFncyBmb3IgdGhlIHBhcnRpY3VsYXIga2V5IGV2ZW50LiBTZWVcbiAqIGh0dHBzOi8vZGV2ZWxvcGVyLmFuZHJvaWQuY29tL3JlZmVyZW5jZS9hbmRyb2lkL3ZpZXcvS2V5RXZlbnQgZm9yIG1vcmUgZGV0YWlscy5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gaXNMb25nUHJlc3MgW2ZhbHNlXSBXaGV0aGVyIHRvIGVtdWxhdGUgbG9uZyBrZXkgcHJlc3NcbiAqL1xuXG4vKipcbiAqIEVtdWxhdGVzIGtleSBwcmVzcyBldmVudC5cbiAqXG4gKiBAcGFyYW0ge1ByZXNzS2V5T3B0aW9uc30gb3B0c1xuICovXG5jb21tYW5kcy5tb2JpbGVQcmVzc0tleSA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVByZXNzS2V5IChvcHRzID0ge30pIHtcbiAgY29uc3Qge2tleWNvZGUsIG1ldGFzdGF0ZSwgZmxhZ3MsIGlzTG9uZ1ByZXNzfSA9IHJlcXVpcmVPcHRpb25zKG9wdHMsIFsna2V5Y29kZSddKTtcbiAgYXdhaXQgdGhpcy5lc3ByZXNzby5qd3Byb3h5LmNvbW1hbmQoYC9hcHBpdW0vZGV2aWNlLyR7aXNMb25nUHJlc3MgPyAnbG9uZ18nIDogJyd9cHJlc3Nfa2V5Y29kZWAsICdQT1NUJywge1xuICAgIGtleWNvZGUsIG1ldGFzdGF0ZSwgZmxhZ3NcbiAgfSk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IEJhY2tncm91bmRBcHBPcHRpb25zXG4gKiBAcHJvcGVydHkge251bWJlcj99IHNlY29uZHMgVGhlIGFtb3VudCBvZiBzZWNvbmRzIHRvIHdhaXQgYmV0d2VlbiBwdXR0aW5nIHRoZSBhcHAgdG8gYmFja2dyb3VuZCBhbmQgcmVzdG9yaW5nIGl0LlxuICogQW55IG5lZ2F0aXZlIHZhbHVlIG1lYW5zIHRvIG5vdCByZXN0b3JlIHRoZSBhcHAgYWZ0ZXIgcHV0dGluZyBpdCB0byB0aGUgYmFja2dyb3VuZCAodGhlIGRlZmF1bHQgYmVoYXZpb3IpLlxuICovXG5cbi8qKlxuICogUHV0cyB0aGUgYXBwIHVuZGVyIHRlc3QgdG8gdGhlIGJhY2tncm91bmRcbiAqIGFuZCB0aGVuIHJlc3RvcmVzIGl0IChpZiBuZWVkZWQpLiBUaGUgY2FsbCBpcyBibG9ja2luZyBpcyB0aGVcbiAqIGFwcCBuZWVkcyB0byBiZSByZXN0b3JlZCBhZnRlcndhcmRzLlxuICpcbiAqIEBwYXJhbSB7QmFja2dyb3VuZEFwcE9wdGlvbnN9IG9wdHNcbiAqL1xuY29tbWFuZHMubW9iaWxlQmFja2dyb3VuZEFwcCA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZUJhY2tncm91bmRBcHAgKG9wdHMgPSB7fSkge1xuICBjb25zdCB7c2Vjb25kcyA9IC0xfSA9IG9wdHM7XG4gIHJldHVybiBhd2FpdCB0aGlzLmJhY2tncm91bmQoc2Vjb25kcyk7XG59O1xuXG5jb21tYW5kcy5tb2JpbGVHZXREZXZpY2VJbmZvID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlR2V0RGV2aWNlSW5mbyAoKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLmVzcHJlc3NvLmp3cHJveHkuY29tbWFuZCgnL2FwcGl1bS9kZXZpY2UvaW5mbycsICdHRVQnKTtcbn07XG5cbmNvbW1hbmRzLm1vYmlsZUlzVG9hc3RWaXNpYmxlID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlSXNUb2FzdFZpc2libGUgKG9wdHMgPSB7fSkge1xuICBjb25zdCB7dGV4dCwgaXNSZWdleHB9ID0gb3B0cztcbiAgaWYgKCF1dGlsLmhhc1ZhbHVlKHRleHQpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihgJ3RleHQnIGFyZ3VtZW50IGlzIG1hbmRhdG9yeWApO1xuICB9XG4gIHJldHVybiBhd2FpdCB0aGlzLmVzcHJlc3NvLmp3cHJveHkuY29tbWFuZCgnL2FwcGl1bS9leGVjdXRlX21vYmlsZS9pc190b2FzdF9kaXNwbGF5ZWQnLCAnUE9TVCcsIHtcbiAgICB0ZXh0LFxuICAgIGlzUmVnZXhwLFxuICB9KTtcbn07XG5cbmNvbW1hbmRzLm1vYmlsZU9wZW5EcmF3ZXIgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVPcGVuRHJhd2VyIChvcHRzID0ge30pIHtcbiAgY29uc3Qge2VsZW1lbnQsIGdyYXZpdHl9ID0gcmVxdWlyZU9wdGlvbnMob3B0cywgWydlbGVtZW50J10pO1xuXG4gIHJldHVybiBhd2FpdCB0aGlzLmVzcHJlc3NvLmp3cHJveHkuY29tbWFuZChgL2FwcGl1bS9leGVjdXRlX21vYmlsZS8ke3V0aWwudW53cmFwRWxlbWVudChlbGVtZW50KX0vb3Blbl9kcmF3ZXJgLCAnUE9TVCcsIHtcbiAgICBncmF2aXR5XG4gIH0pO1xufTtcblxuY29tbWFuZHMubW9iaWxlQ2xvc2VEcmF3ZXIgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVDbG9zZURyYXdlciAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHtlbGVtZW50LCBncmF2aXR5fSA9IHJlcXVpcmVPcHRpb25zKG9wdHMsIFsnZWxlbWVudCddKTtcblxuICByZXR1cm4gYXdhaXQgdGhpcy5lc3ByZXNzby5qd3Byb3h5LmNvbW1hbmQoYC9hcHBpdW0vZXhlY3V0ZV9tb2JpbGUvJHt1dGlsLnVud3JhcEVsZW1lbnQoZWxlbWVudCl9L2Nsb3NlX2RyYXdlcmAsICdQT1NUJywge1xuICAgIGdyYXZpdHlcbiAgfSk7XG59O1xuXG5jb21tYW5kcy5tb2JpbGVTZXREYXRlID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlU2V0RGF0ZSAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHtlbGVtZW50LCB5ZWFyLCBtb250aE9mWWVhciwgZGF5T2ZNb250aH0gPSByZXF1aXJlT3B0aW9ucyhvcHRzLCBbJ2VsZW1lbnQnLCAneWVhcicsICdtb250aE9mWWVhcicsICdkYXlPZk1vbnRoJ10pO1xuXG4gIHJldHVybiBhd2FpdCB0aGlzLmVzcHJlc3NvLmp3cHJveHkuY29tbWFuZChgL2FwcGl1bS9leGVjdXRlX21vYmlsZS8ke3V0aWwudW53cmFwRWxlbWVudChlbGVtZW50KX0vc2V0X2RhdGVgLCAnUE9TVCcsIHtcbiAgICB5ZWFyLFxuICAgIG1vbnRoT2ZZZWFyLFxuICAgIGRheU9mTW9udGgsXG4gIH0pO1xufTtcblxuY29tbWFuZHMubW9iaWxlU2V0VGltZSA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVNldFRpbWUgKG9wdHMgPSB7fSkge1xuICBjb25zdCB7ZWxlbWVudCwgaG91cnMsIG1pbnV0ZXN9ID0gcmVxdWlyZU9wdGlvbnMob3B0cywgWydlbGVtZW50JywgJ2hvdXJzJywgJ21pbnV0ZXMnXSk7XG5cbiAgcmV0dXJuIGF3YWl0IHRoaXMuZXNwcmVzc28uandwcm94eS5jb21tYW5kKGAvYXBwaXVtL2V4ZWN1dGVfbW9iaWxlLyR7dXRpbC51bndyYXBFbGVtZW50KGVsZW1lbnQpfS9zZXRfdGltZWAsICdQT1NUJywge1xuICAgIGhvdXJzLFxuICAgIG1pbnV0ZXMsXG4gIH0pO1xufTtcblxuY29tbWFuZHMubW9iaWxlTmF2aWdhdGVUbyA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZU5hdmlnYXRlVG8gKG9wdHMgPSB7fSkge1xuICBsZXQge2VsZW1lbnQsIG1lbnVJdGVtSWR9ID0gcmVxdWlyZU9wdGlvbnMob3B0cywgWydtZW51SXRlbUlkJywgJ2VsZW1lbnQnXSk7XG5cbiAgbGV0IG1lbnVJdGVtSWRBc051bWJlciA9IHBhcnNlSW50KG1lbnVJdGVtSWQsIDEwKTtcbiAgaWYgKF8uaXNOYU4obWVudUl0ZW1JZEFzTnVtYmVyKSB8fCBtZW51SXRlbUlkQXNOdW1iZXIgPCAwKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihgJ21lbnVJdGVtSWQnIG11c3QgYmUgYSBub24tbmVnYXRpdmUgbnVtYmVyLiBGb3VuZCAke21lbnVJdGVtSWR9YCk7XG4gIH1cblxuICByZXR1cm4gYXdhaXQgdGhpcy5lc3ByZXNzby5qd3Byb3h5LmNvbW1hbmQoYC9hcHBpdW0vZXhlY3V0ZV9tb2JpbGUvJHt1dGlsLnVud3JhcEVsZW1lbnQoZWxlbWVudCl9L25hdmlnYXRlX3RvYCwgJ1BPU1QnLCB7XG4gICAgbWVudUl0ZW1JZFxuICB9KTtcbn07XG5cbi8qKlxuICogUnVucyBhIGNoYWluIG9mIEVzcHJlc3NvIHdlYiBhdG9tcyAoc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLmFuZHJvaWQuY29tL3RyYWluaW5nL3Rlc3RpbmcvZXNwcmVzc28vd2ViIGZvciByZWZlcmVuY2UpXG4gKlxuICogVGFrZXMgSlNPTiBvZiB0aGUgZm9ybVxuICpcbiAqIHtcbiAqICAgXCJ3ZWJ2aWV3RWxcIjogXCI8RUxFTUVOVF9JRD5cIiwgLy8gb3B0aW9uYWwgd2VidmlldyBlbGVtZW50IHRvIG9wZXJhdGUgb25cbiAqICAgXCJmb3JjZUphdmFzY3JpcHRFbmFibGVkXCI6IHRydWV8ZmFsc2UsIC8vIGlmIHdlYnZpZXcgZGlzYWJsZXMgamF2YXNjcmlwdCwgd2ViYXRvbXMgd29uJ3Qgd29yaywgdGhpcyBmb3JjZXMgaXRcbiAqICAgXCJtZXRob2RDaGFpblwiOiBbXG4gKiAgICAge1wibmFtZVwiOiBcIm1ldGhvZE5hbWVcIiwgXCJhdG9tXCI6IHtcIm5hbWVcIjogXCJhdG9tTmFtZVwiLCBcImFyZ3NcIjogW1wiYXJnMVwiLCBcImFyZzJcIiwgLi4uXX19LFxuICogICAgIC4uLlxuICogICBdXG4gKiB9XG4gKlxuICovXG5jb21tYW5kcy5tb2JpbGVXZWJBdG9tcyA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVdlYkF0b21zIChvcHRzID0ge30pIHtcbiAgb3B0cyA9IHJlcXVpcmVPcHRpb25zKG9wdHMsIFsnbWV0aG9kQ2hhaW4nXSk7XG4gIHJldHVybiBhd2FpdCB0aGlzLmVzcHJlc3NvLmp3cHJveHkuY29tbWFuZChgL2FwcGl1bS9leGVjdXRlX21vYmlsZS93ZWJfYXRvbXNgLCAnUE9TVCcsIG9wdHMpO1xufTtcblxuY29tbWFuZHMuZ2V0RGlzcGxheURlbnNpdHkgPSBhc3luYyBmdW5jdGlvbiBnZXREaXNwbGF5RGVuc2l0eSAoKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLmVzcHJlc3NvLmp3cHJveHkuY29tbWFuZCgnL2FwcGl1bS9kZXZpY2UvZGlzcGxheV9kZW5zaXR5JywgJ0dFVCcsIHt9KTtcbn07XG5cbmNvbW1hbmRzLm1vYmlsZVNjcm9sbFRvUGFnZSA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVNjcm9sbFRvUGFnZSAob3B0cyA9IHt9KSB7XG5cbiAgLy8gVmFsaWRhdGUgdGhlIHBhcmFtZXRlcnNcbiAgY29uc3Qgc2Nyb2xsVG9UeXBlcyA9IFsnZmlyc3QnLCAnbGFzdCcsICdsZWZ0JywgJ3JpZ2h0J107XG4gIGNvbnN0IHJlcyA9IHZhbGlkYXRlKG9wdHMsIHtcbiAgICBlbGVtZW50OiB7cHJlc2VuY2U6IHRydWV9LFxuICAgIHNjcm9sbFRvOiB7XG4gICAgICBpbmNsdXNpb246IHtcbiAgICAgICAgd2l0aGluOiBzY3JvbGxUb1R5cGVzLFxuICAgICAgICBtZXNzYWdlOiBgXCJzY3JvbGxUb1wiIG11c3QgYmUgb25lIG9mIFwiJHtzY3JvbGxUb1R5cGVzLmpvaW4oJywgJyl9XCIgZm91bmQgJyV7dmFsdWV9J2AsXG4gICAgICB9XG4gICAgfSxcbiAgICBzY3JvbGxUb1BhZ2U6IHtcbiAgICAgIG51bWVyaWNhbGl0eToge1xuICAgICAgICBvbmx5SW50ZWdlcjogdHJ1ZSxcbiAgICAgICAgZ3JlYXRlclRoYW5PckVxdWFsVG86IDAsXG4gICAgICAgIG1lc3NhZ2U6IGBcInNjcm9sbFRvUGFnZVwiIG11c3QgYmUgYSBub24tbmVnYXRpdmUgaW50ZWdlci4gRm91bmQgJyV7dmFsdWV9J2BcbiAgICAgIH0sXG4gICAgfSxcbiAgfSk7XG4gIGlmICh1dGlsLmhhc1ZhbHVlKHJlcykpIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRBcmd1bWVudEVycm9yKGBJbnZhbGlkIHNjcm9sbFRvIHBhcmFtZXRlcnM6ICR7SlNPTi5zdHJpbmdpZnkocmVzKX1gKTtcbiAgfVxuXG4gIGNvbnN0IHtlbGVtZW50LCBzY3JvbGxUbywgc2Nyb2xsVG9QYWdlLCBzbW9vdGhTY3JvbGx9ID0gb3B0cztcblxuICBpZiAodXRpbC5oYXNWYWx1ZShzY3JvbGxUbykgJiYgdXRpbC5oYXNWYWx1ZShzY3JvbGxUb1BhZ2UpKSB7XG4gICAgdGhpcy5sb2cud2FybihgJ3Njcm9sbFRvJyBhbmQgJ3Njcm9sbFRvUGFnZScgd2hlcmUgYm90aCBwcm92aWRlZC4gRGVmYXVsdGluZyB0byAnc2Nyb2xsVG8nYCk7XG4gIH1cblxuICByZXR1cm4gYXdhaXQgdGhpcy5lc3ByZXNzby5qd3Byb3h5LmNvbW1hbmQoYC9hcHBpdW0vZXhlY3V0ZV9tb2JpbGUvJHt1dGlsLnVud3JhcEVsZW1lbnQoZWxlbWVudCl9L3Njcm9sbF90b19wYWdlYCwgJ1BPU1QnLCB7XG4gICAgc2Nyb2xsVG8sXG4gICAgc2Nyb2xsVG9QYWdlLFxuICAgIHNtb290aFNjcm9sbCxcbiAgfSk7XG59O1xuXG5cbi8qKlxuICogIEFQSSB0byBpbnZva2UgbWV0aG9kcyBkZWZpbmVkIGluIEFuZHJvaWQgYXBwLlxuICpcbiAqICBFeGFtcGxlIGRhdGFcbiAqICB7XG4gKiAgIHRhcmdldDogJ2FjdGl2aXR5JyxcbiAqICAgbWV0aG9kczpcbiAqICAgICAgICAgW1xuICogICAgICAgICAgIHtcbiAqICAgICAgICAgICAgICAgbmFtZTogXCJzb21lTWV0aG9kXCIsXG4gKiAgICAgICAgICAgfSxcbiAqICAgICAgICAgICB7XG4gKiAgICAgICAgICAgICAgIG5hbWU6IFwiYW5vdGhlck1ldGhvZFwiLFxuICogICAgICAgICAgICAgICBhcmdzOlxuICogICAgICAgICAgICAgICAgICAgW1xuICogICAgICAgICAgICAgICAgICAgICAgIHt2YWx1ZTogXCJMb2xcIiwgdHlwZTogJ2phdmEubGFuZy5DaGFyU2VxdWVuY2UnfSxcbiAqICAgICAgICAgICAgICAgICAgICAgICB7dmFsdWU6IDEsIHR5cGU6ICdpbnQnfVxuICogICAgICAgICAgICAgICAgICAgXVxuICogICAgICAgICAgIH1cbiAqICAgICAgICAgXVxuICogfVxuICpcbiAqIEluIGFib3ZlIGV4YW1wbGUsIG1ldGhvZCBcInNvbWVNZXRob2RcIiB3aWxsIGJlIGludm9rZWQgb24gJ2FjdGl2aXR5Jy4gT24gdGhlIHJlc3VsdCwgXCJhbm90aGVyTWV0aG9kXCIgd2lsbCBiZSBpbnZva2VkXG4gKiAgXCJ0YXJnZXRcIiBjYW4gYmUgZWl0aGVyICdhY3Rpdml0eScsICdhcHBsaWNhdGlvbicgb3IgJ2VsZW1lbnQnXG4gKiAgSWYgdGFyZ2V0IGlzIHNldCB0byAnYXBwbGljYXRpb24nLCBtZXRob2RzIHdpbGwgYmUgaW52b2tlZCBvbiBhcHBsaWNhdGlvbiBjbGFzc1xuICogIElmIHRhcmdldCBpcyBzZXQgdG8gJ2FjdGl2aXR5JywgbWV0aG9kcyB3aWxsIGJlIGludm9rZWQgb24gY3VycmVudCBhY3Rpdml0eVxuICogIElmIHRhcmdldCBpcyBzZXQgdG8gJ2VsZW1lbnQnLCAnZWxlbWVudElkJyBtdXN0IGJlIHNwZWNpZmllZFxuICpcbiAqIC0gT25seSAnUHVibGljJyBtZXRob2RzIGNhbiBiZSBpbnZva2VkLiAoJ29wZW4nIG1vZGlmaXJlIGlzIG5lY2Vzc2FyeSBpbiBLb3RsaW4pXG4gKiAtIGZvbGxvd2luZyBwcmltaXRpdmUgdHlwZXMgYXJlIHN1cHBvcnRlZDogXCJpbnRcIiwgXCJib29sZWFuXCIsIFwiYnl0ZVwiLCBcInNob3J0XCIsIFwibG9uZ1wiLCBcImZsb2F0XCIsIFwiY2hhclwiXG4gKiAtICBOb24tcHJpbWl0aXZlIHR5cGVzIHdpdGggZnVsbHkgcXVhbGlmaWVkIG5hbWUgXCJqYXZhLmxhbmcuKlwiIGlzIGFsc28gc3VwcG9ydGVkOlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFZy4gXCJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlXCIsIFwiamF2YS5sYW5nLlN0cmluZ1wiLCBcImphdmEubGFuZy5JbnRlZ2VyXCIsIFwiamF2YS5sYW5nLkZsb2F0XCIsXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiamF2YS5sYW5nLkRvdWJsZVwiLCBcImphdmEubGFuZy5Cb29sZWFuXCIsIFwiamF2YS5sYW5nLkxvbmdcIiwgXCJqYXZhLmxhbmcuU2hvcnRcIixcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJqYXZhLmxhbmcuQ2hhcmFjdGVyXCIgZXRjLi4uXG4gKlxuICpcbiAqIEB0aHJvd3MgIHtFcnJvcn0gaWYgdGFyZ2V0IGlzIG5vdCAnYWN0aXZpdHknIG9yICdhcHBsaWNhdGlvbidcbiAqIEB0aHJvd3MgIHtFcnJvcn0gaWYgYSBtZXRob2QgaXMgbm90IGZvdW5kIHdpdGggZ2l2ZW4gYXJndW1lbnQgdHlwZXNcbiAqXG4gKiBAcmV0dXJuIHsqfSB0aGUgcmVzdWx0IG9mIHRoZSBsYXN0IG1ldGhvZCBpbiB0aGUgaW52b2NhdGlvbiBjaGFpbi4gSWYgbWV0aG9kIHJldHVybiB0eXBlIGlzIHZvaWQsIHRoZW4gXCI8Vk9JRD5cIiB3aWxsIGJlIHJldHVybmVkXG4gKlxuICovXG5jb21tYW5kcy5tb2JpbGVCYWNrZG9vciA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZUJhY2tkb29yIChvcHRzID0ge30pIHtcbiAgcmVxdWlyZU9wdGlvbnMob3B0cywgWyd0YXJnZXQnLCAnbWV0aG9kcyddKTtcbiAgY29uc3Qge3RhcmdldCwgbWV0aG9kc30gPSBvcHRzO1xuICBpZiAodGFyZ2V0ID09PSAnZWxlbWVudCcpIHtcbiAgICByZXF1aXJlT3B0aW9ucyhvcHRzLCBbJ2VsZW1lbnRJZCddKTtcbiAgfVxuICBjb25zdCB7ZWxlbWVudElkOiB0YXJnZXRFbGVtZW50fSA9IG9wdHM7XG4gIHJldHVybiBhd2FpdCB0aGlzLmVzcHJlc3NvLmp3cHJveHkuY29tbWFuZChgL2FwcGl1bS9leGVjdXRlX21vYmlsZS9iYWNrZG9vcmAsICdQT1NUJywge3RhcmdldCwgbWV0aG9kcywgdGFyZ2V0RWxlbWVudH0pO1xufTtcblxuLyoqXG4gKiAgRXhlY3V0ZSBVaUF1dG9tYXRvcjIgY29tbWFuZHMgdG8gZHJpdmUgb3V0IG9mIGFwcCBhcmVhcy5cbiAqICBzdHJhdGVneSBjYW4gYmUgb25lIG9mOiBcImNsYXp6XCIsIFwicmVzXCIsIFwidGV4dFwiLCBcInRleHRDb250YWluc1wiLCBcInRleHRFbmRzV2l0aFwiLCBcInRleHRTdGFydHNXaXRoXCIsXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkZXNjXCIsIFwiZGVzY0NvbnRhaW5zXCIsIFwiZGVzY0VuZHNXaXRoXCIsIFwiZGVzY1N0YXJ0c1dpdGhcIiwgXCJwa2dcIlxuICpcbiAqICBhY3Rpb24gY2FuIGJlIG9uZSBvZjogXCJjbGlja1wiLCBcImxvbmdDbGlja1wiLCBcImdldFRleHRcIiwgXCJnZXRDb250ZW50RGVzY3JpcHRpb25cIiwgXCJnZXRDbGFzc05hbWVcIixcbiAqICAgICAgICAgICAgICAgICAgICAgICAgXCJnZXRSZXNvdXJjZU5hbWVcIiwgXCJnZXRWaXNpYmxlQm91bmRzXCIsIFwiZ2V0VmlzaWJsZUNlbnRlclwiLCBcImdldEFwcGxpY2F0aW9uUGFja2FnZVwiLFxuICogICAgICAgICAgICAgICAgICAgICAgICBcImdldENoaWxkQ291bnRcIiwgXCJjbGVhclwiLCBcImlzQ2hlY2thYmxlXCIsIFwiaXNDaGVja2VkXCIsIFwiaXNDbGlja2FibGVcIiwgXCJpc0VuYWJsZWRcIixcbiAqICAgICAgICAgICAgICAgICAgICAgICAgXCJpc0ZvY3VzYWJsZVwiLCBcImlzRm9jdXNlZFwiLCBcImlzTG9uZ0NsaWNrYWJsZVwiLCBcImlzU2Nyb2xsYWJsZVwiLCBcImlzU2VsZWN0ZWRcIlxuICovXG5jb21tYW5kcy5tb2JpbGVVaWF1dG9tYXRvciA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVVpYXV0b21hdG9yIChvcHRzID0ge30pIHtcbiAgY29uc3Qge3N0cmF0ZWd5LCBsb2NhdG9yLCBhY3Rpb24sIGluZGV4fSA9IHJlcXVpcmVPcHRpb25zKG9wdHMsIFsnc3RyYXRlZ3knLCAnbG9jYXRvcicsICdhY3Rpb24nXSk7XG4gIHJldHVybiBhd2FpdCB0aGlzLmVzcHJlc3NvLmp3cHJveHkuY29tbWFuZChgL2FwcGl1bS9leGVjdXRlX21vYmlsZS91aWF1dG9tYXRvcmAsICdQT1NUJywge3N0cmF0ZWd5LCBsb2NhdG9yLCBpbmRleCwgYWN0aW9ufSk7XG59O1xuXG4vKipcbiAqICBFeGVjdXRlIFVpQXV0b21hdG9yMiBjb21tYW5kIHRvIHJldHVybiB0aGUgVUkgZHVtcCB3aGVuIEFVVCBpcyBpbiBiYWNrZ3JvdW5kLlxuICogQHRocm93cyAge0Vycm9yfSBpZiB1aWF1dG9tYXRvciB2aWV3IGR1bXAgaXMgdW5zdWNjZXNzZnVsXG4gKiBAcmV0dXJucyB7c3RyaW5nfSB1aWF1dG9tYXRvciBET00geG1sIGFzIHN0cmluZ1xuICovXG5jb21tYW5kcy5tb2JpbGVVaWF1dG9tYXRvclBhZ2VTb3VyY2UgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVVaWF1dG9tYXRvclBhZ2VTb3VyY2UgKCkge1xuICByZXR1cm4gYXdhaXQgdGhpcy5lc3ByZXNzby5qd3Byb3h5LmNvbW1hbmQoYC9hcHBpdW0vZXhlY3V0ZV9tb2JpbGUvdWlhdXRvbWF0b3JfcGFnZV9zb3VyY2VgLCAnR0VUJyk7XG59O1xuXG4vKipcbiAqICBGbGFzaCB0aGUgZWxlbWVudCB3aXRoIGdpdmVuIGlkLlxuICogIGR1cmF0aW9uTWlsbGlzIGFuZCByZXBlYXRDb3VudCBhcmUgb3B0aW9uYWxcbiAqXG4gKi9cbmNvbW1hbmRzLm1vYmlsZUZsYXNoRWxlbWVudCA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZUZsYXNoRWxlbWVudCAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHtlbGVtZW50fSA9IHJlcXVpcmVPcHRpb25zKG9wdHMsIFsnZWxlbWVudCddKTtcbiAgY29uc3Qge2R1cmF0aW9uTWlsbGlzLCByZXBlYXRDb3VudH0gPSBvcHRzO1xuICByZXR1cm4gYXdhaXQgdGhpcy5lc3ByZXNzby5qd3Byb3h5LmNvbW1hbmQoYC9hcHBpdW0vZXhlY3V0ZV9tb2JpbGUvJHt1dGlsLnVud3JhcEVsZW1lbnQoZWxlbWVudCl9L2ZsYXNoYCwgJ1BPU1QnLCB7XG4gICAgZHVyYXRpb25NaWxsaXMsXG4gICAgcmVwZWF0Q291bnRcbiAgfSk7XG59O1xuXG4vKipcbiAqIFBlcmZvcm0gYSAnR2VuZXJhbENsaWNrQWN0aW9uJyAoaHR0cHM6Ly9kZXZlbG9wZXIuYW5kcm9pZC5jb20vcmVmZXJlbmNlL2FuZHJvaWR4L3Rlc3QvZXNwcmVzc28vYWN0aW9uL0dlbmVyYWxDbGlja0FjdGlvbilcbiAqL1xuY29tbWFuZHMubW9iaWxlQ2xpY2tBY3Rpb24gPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVDbGlja0FjdGlvbiAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHtlbGVtZW50LCB0YXBwZXIsIGNvb3JkaW5hdGVzUHJvdmlkZXIsIHByZWNpc2lvbkRlc2NyaWJlcixcbiAgICAgICAgIGlucHV0RGV2aWNlLCBidXR0b25TdGF0ZX0gPSByZXF1aXJlT3B0aW9ucyhvcHRzLCBbJ2VsZW1lbnQnXSk7XG4gIHJldHVybiBhd2FpdCB0aGlzLmVzcHJlc3NvLmp3cHJveHkuY29tbWFuZChgL2FwcGl1bS9leGVjdXRlX21vYmlsZS8ke3V0aWwudW53cmFwRWxlbWVudChlbGVtZW50KX0vY2xpY2tfYWN0aW9uYCwgJ1BPU1QnLCB7XG4gICAgdGFwcGVyLCBjb29yZGluYXRlc1Byb3ZpZGVyLCBwcmVjaXNpb25EZXNjcmliZXIsIGlucHV0RGV2aWNlLCBidXR0b25TdGF0ZVxuICB9KTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gU2V0dGluZ3NPcHRpb25zXG4gKiBAcHJvcGVydHkgeyFzdHJpbmd8bnVtYmVyfGJvb2xlYW59IE9iamVjdCBTZXR0aW5ncyBwYXJhbWV0ZXJzIHRoYXQgaXMgYXZhaWxhYmxlIGluXG4gKiBodHRwczovL2dpdGh1Yi5jb20vYXBwaXVtL2FwcGl1bS1lc3ByZXNzby1kcml2ZXIjc2V0dGluZ3MtYXBpIG9yIGVuYWJsZWQgcGx1Z2lucy5cbiAqL1xuXG4vKipcbiAqIEFwcGx5IHRoZSBnaXZlbiBzZXR0aW5ncyB0byB0aGUgZXNwcmVzc28gZHJpdmVyIGFuZCB0aGUgZXNwcmVzc28gc2VydmVyLlxuICogRXJyb3JzIGJ5IHRoZSBlc3ByZXNzbyBzZXJ2ZXIgd2lsbCBiZSBwcmludGVkIGFzIGxvZywgYnV0IGl0IGRvZXMgbm90IHJldHVybiBhbiBlcnJvciBtZXNzYWdlLlxuICogQHBhcmFtIHtTZXR0aW5nc09wdGlvbnN9IHNldHRpbmdzXG4gKi9cbmNvbW1hbmRzLnVwZGF0ZVNldHRpbmdzID0gYXN5bmMgZnVuY3Rpb24gdXBkYXRlU2V0dGluZ3MgKHNldHRpbmdzKSB7XG4gIGF3YWl0IHRoaXMuc2V0dGluZ3MudXBkYXRlKHNldHRpbmdzKTtcbiAgdHJ5IHtcbiAgICBhd2FpdCB0aGlzLmVzcHJlc3NvLmp3cHJveHkuY29tbWFuZChgL2FwcGl1bS9zZXR0aW5nc2AsICdQT1NUJywgeyBzZXR0aW5ncyB9KTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5sb2cud2FybihgVGhlIGVzcHJlc3NvIGRyaXZlciByZXNwb25kZWQgYW4gZXJyb3IuIE9yaWdpbmFsIGVycm9yOiAke2Vyci5tZXNzYWdlfWApO1xuICB9O1xufTtcblxuY29tbWFuZHMuZ2V0U2V0dGluZ3MgPSBhc3luYyBmdW5jdGlvbiBnZXRTZXR0aW5ncyAoKSB7XG4gIGNvbnN0IGRyaXZlclNldHRpbmdzID0gdGhpcy5zZXR0aW5ncy5nZXRTZXR0aW5ncygpO1xuICBjb25zdCBzZXJ2ZXJTZXR0aW5ncyA9IGF3YWl0IHRoaXMuZXNwcmVzc28uandwcm94eS5jb21tYW5kKGAvYXBwaXVtL3NldHRpbmdzYCwgJ0dFVCcpO1xuICByZXR1cm4gey4uLmRyaXZlclNldHRpbmdzLCAuLi5zZXJ2ZXJTZXR0aW5nc307XG59O1xuXG4vLyBTdG9wIHByb3h5aW5nIHRvIGFueSBDaHJvbWVkcml2ZXIgYW5kIHJlZGlyZWN0IHRvIEVzcHJlc3NvXG5oZWxwZXJzLnN1c3BlbmRDaHJvbWVkcml2ZXJQcm94eSA9IGZ1bmN0aW9uIHN1c3BlbmRDaHJvbWVkcml2ZXJQcm94eSAoKSB7XG4gIHRoaXMuY2hyb21lZHJpdmVyID0gbnVsbDtcbiAgdGhpcy5wcm94eVJlcVJlcyA9IHRoaXMuZXNwcmVzc28ucHJveHlSZXFSZXMuYmluZCh0aGlzLmVzcHJlc3NvKTtcbiAgdGhpcy5wcm94eUNvbW1hbmQgPSB0aGlzLmVzcHJlc3NvLnByb3h5Q29tbWFuZC5iaW5kKHRoaXMuZXNwcmVzc28pO1xuICB0aGlzLmp3cFByb3h5QWN0aXZlID0gdHJ1ZTtcbn07XG5cbi8qKlxuICogIFN0YXJ0cyB0aGUgZ2l2ZW4gYWN0aXZpdHkgd2l0aCBpbnRlbnQgb3B0aW9ucywgYWN0aXZpdHkgb3B0aW9ucyBhbmQgbG9jYWxlLlxuICogIEFjdGl2aXR5IGNvdWxkIG9ubHkgYmUgZXhlY3V0ZWQgaW4gc2NvcGUgb2YgdGhlIGN1cnJlbnQgYXBwIHBhY2thZ2UuXG4gKlxuICogIGFwcEFjdGl2aXR5IGlzIG1hbmRhdG9yeVxuICpcbiAqICBsb2NhbGUsIG9wdGlvbmFsSW50ZW50QXJndW1lbnRzLCBvcHRpb25hbEFjdGl2aXR5QXJndW1lbnRzIGFyZSBvcHRpb25hbFxuICovXG5jb21tYW5kcy5tb2JpbGVTdGFydEFjdGl2aXR5ID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlU3RhcnRBY3Rpdml0eSAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IGFwcFBhY2thZ2UgPSB0aGlzLmNhcHMuYXBwUGFja2FnZTtcbiAgY29uc3Qge1xuICAgIGFwcEFjdGl2aXR5LFxuICAgIGxvY2FsZSxcbiAgICBvcHRpb25hbEludGVudEFyZ3VtZW50cyxcbiAgICBvcHRpb25hbEFjdGl2aXR5QXJndW1lbnRzXG4gIH0gPSByZXF1aXJlT3B0aW9ucyhvcHRzLCBbJ2FwcEFjdGl2aXR5J10pO1xuICByZXR1cm4gYXdhaXQgdGhpcy5lc3ByZXNzby5qd3Byb3h5LmNvbW1hbmQoYC9hcHBpdW0vZGV2aWNlL3N0YXJ0X2FjdGl2aXR5YCwgJ1BPU1QnLCB7XG4gICAgYXBwUGFja2FnZSxcbiAgICBhcHBBY3Rpdml0eSxcbiAgICBsb2NhbGUsXG4gICAgb3B0aW9uYWxJbnRlbnRBcmd1bWVudHMsXG4gICAgb3B0aW9uYWxBY3Rpdml0eUFyZ3VtZW50c1xuICB9KTtcbn07XG5cbmNvbW1hbmRzLnN0YXJ0QWN0aXZpdHkgPSBhc3luYyBmdW5jdGlvbiBzdGFydEFjdGl2aXR5IChhcHBQYWNrYWdlLCBhcHBBY3Rpdml0eSxcbiAgYXBwV2FpdFBhY2thZ2UsIGFwcFdhaXRBY3Rpdml0eSkge1xuICAvLyBpbnRlbnRBY3Rpb24sIGludGVudENhdGVnb3J5LCBpbnRlbnRGbGFncywgb3B0aW9uYWxJbnRlbnRBcmd1bWVudHMsIGRvbnRTdG9wQXBwT25SZXNldFxuICAvLyBwYXJhbWV0ZXJzIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IEVzcHJlc3NvXG4gIGFwcFBhY2thZ2UgPSBhcHBQYWNrYWdlIHx8IHRoaXMuY2Fwcy5hcHBQYWNrYWdlO1xuICBhcHBXYWl0UGFja2FnZSA9IGFwcFdhaXRQYWNrYWdlIHx8IGFwcFBhY2thZ2U7XG4gIGFwcEFjdGl2aXR5ID0gcXVhbGlmeUFjdGl2aXR5TmFtZShhcHBBY3Rpdml0eSwgYXBwUGFja2FnZSk7XG4gIGFwcFdhaXRBY3Rpdml0eSA9IHF1YWxpZnlBY3Rpdml0eU5hbWUoYXBwV2FpdEFjdGl2aXR5IHx8IGFwcEFjdGl2aXR5LCBhcHBXYWl0UGFja2FnZSk7XG4gIHRoaXMubG9nLmRlYnVnKGBTdGFydGluZyBhY3Rpdml0eSAnJHthcHBBY3Rpdml0eX0nIGZvciBwYWNrYWdlICcke2FwcFBhY2thZ2V9J2ApO1xuICBhd2FpdCB0aGlzLmVzcHJlc3NvLmp3cHJveHkuY29tbWFuZChgL2FwcGl1bS9kZXZpY2Uvc3RhcnRfYWN0aXZpdHlgLCAnUE9TVCcsIHtcbiAgICBhcHBQYWNrYWdlLFxuICAgIGFwcEFjdGl2aXR5LFxuICB9KTtcbiAgYXdhaXQgdGhpcy5hZGIud2FpdEZvckFjdGl2aXR5KGFwcFdhaXRQYWNrYWdlLCBhcHBXYWl0QWN0aXZpdHkpO1xufTtcblxuY29tbWFuZHMubW9iaWxlRGlzbWlzc0F1dG9maWxsID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlRGlzbWlzc0F1dG9maWxsIChvcHRzID0ge30pIHtcbiAgY29uc3Qge2VsZW1lbnR9ID0gcmVxdWlyZU9wdGlvbnMob3B0cywgWydlbGVtZW50J10pO1xuICBhd2FpdCB0aGlzLmVzcHJlc3NvLmp3cHJveHkuY29tbWFuZChcbiAgICBgL3Nlc3Npb24vOnNlc3Npb25JZC9hcHBpdW0vZXhlY3V0ZV9tb2JpbGUvJHt1dGlsLnVud3JhcEVsZW1lbnQoZWxlbWVudCl9L2Rpc21pc3NfYXV0b2ZpbGxgLCAnUE9TVCcsIHt9KTtcbn07XG5cbk9iamVjdC5hc3NpZ24oZXh0ZW5zaW9ucywgY29tbWFuZHMsIGhlbHBlcnMpO1xuZXhwb3J0IHsgY29tbWFuZHMsIGhlbHBlcnMgfTtcbmV4cG9ydCBkZWZhdWx0IGV4dGVuc2lvbnM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsUUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsU0FBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUcsT0FBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksTUFBQSxHQUFB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
@@ -1 +1 @@
1
- {"version":3,"file":"general.js","names":["_lodash","_interopRequireDefault","require","_support","_validate","_driver","_utils","commands","helpers","extensions","exports","requireOptions","options","requiredOptionNames","_","isArray","presentOptionNames","keys","missingOptionNames","difference","isEmpty","Error","JSON","stringify","launchApp","errors","UnsupportedOperationError","closeApp","reset","getClipboard","adb","getApiLevel","espresso","jwproxy","command","mobilePerformEditorAction","opts","action","mobileSwipe","direction","element","swiper","startCoordinates","endCoordinates","precisionDescriber","util","unwrapElement","mobilePressKey","keycode","metastate","flags","isLongPress","mobileBackgroundApp","seconds","background","mobileGetDeviceInfo","mobileIsToastVisible","text","isRegexp","hasValue","InvalidArgumentError","mobileOpenDrawer","gravity","mobileCloseDrawer","mobileSetDate","year","monthOfYear","dayOfMonth","mobileSetTime","hours","minutes","mobileNavigateTo","menuItemId","menuItemIdAsNumber","parseInt","isNaN","mobileWebAtoms","getDisplayDensity","mobileScrollToPage","scrollToTypes","res","validate","presence","scrollTo","inclusion","within","message","join","scrollToPage","numericality","onlyInteger","greaterThanOrEqualTo","smoothScroll","log","warn","mobileBackdoor","target","methods","elementId","targetElement","mobileUiautomator","strategy","locator","index","mobileUiautomatorPageSource","mobileFlashElement","durationMillis","repeatCount","mobileClickAction","tapper","coordinatesProvider","inputDevice","buttonState","updateSettings","settings","update","getSettings","driverSettings","serverSettings","suspendChromedriverProxy","chromedriver","proxyReqRes","bind","proxyCommand","jwpProxyActive","mobileStartActivity","appPackage","caps","appActivity","locale","optionalIntentArguments","optionalActivityArguments","startActivity","appWaitPackage","appWaitActivity","qualifyActivityName","debug","waitForActivity","mobileDismissAutofill","Object","assign","_default","default"],"sources":["../../../lib/commands/general.js"],"sourcesContent":["import _ from 'lodash';\nimport { util } from 'appium/support';\nimport validate from 'validate.js';\nimport { errors } from 'appium/driver';\nimport { qualifyActivityName } from '../utils';\n\nconst commands = {}, helpers = {}, extensions = {};\n\nfunction requireOptions (options, requiredOptionNames) {\n if (!_.isArray(requiredOptionNames)) {\n requiredOptionNames = [requiredOptionNames];\n }\n const presentOptionNames = _.keys(options);\n const missingOptionNames = _.difference(requiredOptionNames, presentOptionNames);\n if (_.isEmpty(missingOptionNames)) {\n return options;\n }\n throw new Error(`The following options are required: ${JSON.stringify(missingOptionNames)}. ` +\n `You have only provided: ${JSON.stringify(presentOptionNames)}`);\n}\n\n// eslint-disable-next-line require-await\ncommands.launchApp = async function launchApp () {\n throw new errors.UnsupportedOperationError('Please create a new session in order to launch the application under test');\n};\n\n// eslint-disable-next-line require-await\ncommands.closeApp = async function closeApp () {\n throw new errors.UnsupportedOperationError('Please quit the session in order to close the application under test');\n};\n\n// eslint-disable-next-line require-await\ncommands.reset = async function reset () {\n throw new errors.UnsupportedOperationError(\n 'Please quit the session and create a new one ' +\n 'in order to close and launch the application under test');\n};\n\ncommands.getClipboard = async function getClipboard () {\n return (await this.adb.getApiLevel() < 29)\n ? (await this.espresso.jwproxy.command('/appium/device/get_clipboard', 'POST', {}))\n : (await this.adb.getClipboard());\n};\n\ncommands.mobilePerformEditorAction = async function mobilePerformEditorAction (opts = {}) {\n const {action} = requireOptions(opts, ['action']);\n return await this.espresso.jwproxy.command('/appium/device/perform_editor_action', 'POST', {action});\n};\n\ncommands.mobileSwipe = async function mobileSwipe (opts = {}) {\n const {direction, element, swiper, startCoordinates, endCoordinates, precisionDescriber} = requireOptions(opts, ['element']);\n return await this.espresso.jwproxy.command(`/appium/execute_mobile/${util.unwrapElement(element)}/swipe`, 'POST', {\n direction, element, swiper, startCoordinates, endCoordinates, precisionDescriber\n });\n};\n\n/**\n * @typedef {Object} PressKeyOptions\n * @property {number} keycode A valid Android key code. See https://developer.android.com/reference/android/view/KeyEvent\n * for the list of available key codes\n * @property {number?} metastate An integer in which each bit set to 1 represents a pressed meta key. See\n * https://developer.android.com/reference/android/view/KeyEvent for more details.\n * @property {number?} flags Flags for the particular key event. See\n * https://developer.android.com/reference/android/view/KeyEvent for more details.\n * @property {boolean} isLongPress [false] Whether to emulate long key press\n */\n\n/**\n * Emulates key press event.\n *\n * @param {PressKeyOptions} opts\n */\ncommands.mobilePressKey = async function mobilePressKey (opts = {}) {\n const {keycode, metastate, flags, isLongPress} = requireOptions(opts, ['keycode']);\n await this.espresso.jwproxy.command(`/appium/device/${isLongPress ? 'long_' : ''}press_keycode`, 'POST', {\n keycode, metastate, flags\n });\n};\n\n/**\n * @typedef {Object} BackgroundAppOptions\n * @property {number?} seconds The amount of seconds to wait between putting the app to background and restoring it.\n * Any negative value means to not restore the app after putting it to the background (the default behavior).\n */\n\n/**\n * Puts the app under test to the background\n * and then restores it (if needed). The call is blocking is the\n * app needs to be restored afterwards.\n *\n * @param {BackgroundAppOptions} opts\n */\ncommands.mobileBackgroundApp = async function mobileBackgroundApp (opts = {}) {\n const {seconds = -1} = opts;\n return await this.background(seconds);\n};\n\ncommands.mobileGetDeviceInfo = async function mobileGetDeviceInfo () {\n return await this.espresso.jwproxy.command('/appium/device/info', 'GET');\n};\n\ncommands.mobileIsToastVisible = async function mobileIsToastVisible (opts = {}) {\n const {text, isRegexp} = opts;\n if (!util.hasValue(text)) {\n throw new errors.InvalidArgumentError(`'text' argument is mandatory`);\n }\n return await this.espresso.jwproxy.command('/appium/execute_mobile/is_toast_displayed', 'POST', {\n text,\n isRegexp,\n });\n};\n\ncommands.mobileOpenDrawer = async function mobileOpenDrawer (opts = {}) {\n const {element, gravity} = requireOptions(opts, ['element']);\n\n return await this.espresso.jwproxy.command(`/appium/execute_mobile/${util.unwrapElement(element)}/open_drawer`, 'POST', {\n gravity\n });\n};\n\ncommands.mobileCloseDrawer = async function mobileCloseDrawer (opts = {}) {\n const {element, gravity} = requireOptions(opts, ['element']);\n\n return await this.espresso.jwproxy.command(`/appium/execute_mobile/${util.unwrapElement(element)}/close_drawer`, 'POST', {\n gravity\n });\n};\n\ncommands.mobileSetDate = async function mobileSetDate (opts = {}) {\n const {element, year, monthOfYear, dayOfMonth} = requireOptions(opts, ['element', 'year', 'monthOfYear', 'dayOfMonth']);\n\n return await this.espresso.jwproxy.command(`/appium/execute_mobile/${util.unwrapElement(element)}/set_date`, 'POST', {\n year,\n monthOfYear,\n dayOfMonth,\n });\n};\n\ncommands.mobileSetTime = async function mobileSetTime (opts = {}) {\n const {element, hours, minutes} = requireOptions(opts, ['element', 'hours', 'minutes']);\n\n return await this.espresso.jwproxy.command(`/appium/execute_mobile/${util.unwrapElement(element)}/set_time`, 'POST', {\n hours,\n minutes,\n });\n};\n\ncommands.mobileNavigateTo = async function mobileNavigateTo (opts = {}) {\n let {element, menuItemId} = requireOptions(opts, ['menuItemId', 'element']);\n\n let menuItemIdAsNumber = parseInt(menuItemId, 10);\n if (_.isNaN(menuItemIdAsNumber) || menuItemIdAsNumber < 0) {\n throw new errors.InvalidArgumentError(`'menuItemId' must be a non-negative number. Found ${menuItemId}`);\n }\n\n return await this.espresso.jwproxy.command(`/appium/execute_mobile/${util.unwrapElement(element)}/navigate_to`, 'POST', {\n menuItemId\n });\n};\n\n/**\n * Runs a chain of Espresso web atoms (see https://developer.android.com/training/testing/espresso/web for reference)\n *\n * Takes JSON of the form\n *\n * {\n * \"webviewEl\": \"<ELEMENT_ID>\", // optional webview element to operate on\n * \"forceJavascriptEnabled\": true|false, // if webview disables javascript, webatoms won't work, this forces it\n * \"methodChain\": [\n * {\"name\": \"methodName\", \"atom\": {\"name\": \"atomName\", \"args\": [\"arg1\", \"arg2\", ...]}},\n * ...\n * ]\n * }\n *\n */\ncommands.mobileWebAtoms = async function mobileWebAtoms (opts = {}) {\n opts = requireOptions(opts, ['methodChain']);\n return await this.espresso.jwproxy.command(`/appium/execute_mobile/web_atoms`, 'POST', opts);\n};\n\ncommands.getDisplayDensity = async function getDisplayDensity () {\n return await this.espresso.jwproxy.command('/appium/device/display_density', 'GET', {});\n};\n\ncommands.mobileScrollToPage = async function mobileScrollToPage (opts = {}) {\n\n // Validate the parameters\n const scrollToTypes = ['first', 'last', 'left', 'right'];\n const res = validate(opts, {\n element: {presence: true},\n scrollTo: {\n inclusion: {\n within: scrollToTypes,\n message: `\"scrollTo\" must be one of \"${scrollToTypes.join(', ')}\" found '%{value}'`,\n }\n },\n scrollToPage: {\n numericality: {\n onlyInteger: true,\n greaterThanOrEqualTo: 0,\n message: `\"scrollToPage\" must be a non-negative integer. Found '%{value}'`\n },\n },\n });\n if (util.hasValue(res)) {\n throw new errors.InvalidArgumentError(`Invalid scrollTo parameters: ${JSON.stringify(res)}`);\n }\n\n const {element, scrollTo, scrollToPage, smoothScroll} = opts;\n\n if (util.hasValue(scrollTo) && util.hasValue(scrollToPage)) {\n this.log.warn(`'scrollTo' and 'scrollToPage' where both provided. Defaulting to 'scrollTo'`);\n }\n\n return await this.espresso.jwproxy.command(`/appium/execute_mobile/${util.unwrapElement(element)}/scroll_to_page`, 'POST', {\n scrollTo,\n scrollToPage,\n smoothScroll,\n });\n};\n\n\n/**\n * API to invoke methods defined in Android app.\n *\n * Example data\n * {\n * target: 'activity',\n * methods:\n * [\n * {\n * name: \"someMethod\",\n * },\n * {\n * name: \"anotherMethod\",\n * args:\n * [\n * {value: \"Lol\", type: 'java.lang.CharSequence'},\n * {value: 1, type: 'int'}\n * ]\n * }\n * ]\n * }\n *\n * In above example, method \"someMethod\" will be invoked on 'activity'. On the result, \"anotherMethod\" will be invoked\n * \"target\" can be either 'activity', 'application' or 'element'\n * If target is set to 'application', methods will be invoked on application class\n * If target is set to 'activity', methods will be invoked on current activity\n * If target is set to 'element', 'elementId' must be specified\n *\n * - Only 'Public' methods can be invoked. ('open' modifire is necessary in Kotlin)\n * - following primitive types are supported: \"int\", \"boolean\", \"byte\", \"short\", \"long\", \"float\", \"char\"\n * - Non-primitive types with fully qualified name \"java.lang.*\" is also supported:\n * Eg. \"java.lang.CharSequence\", \"java.lang.String\", \"java.lang.Integer\", \"java.lang.Float\",\n * \"java.lang.Double\", \"java.lang.Boolean\", \"java.lang.Long\", \"java.lang.Short\",\n * \"java.lang.Character\" etc...\n *\n *\n * @throws {Error} if target is not 'activity' or 'application'\n * @throws {Error} if a method is not found with given argument types\n *\n * @return {*} the result of the last method in the invocation chain. If method return type is void, then \"<VOID>\" will be returned\n *\n */\ncommands.mobileBackdoor = async function mobileBackdoor (opts = {}) {\n requireOptions(opts, ['target', 'methods']);\n const {target, methods} = opts;\n if (target === 'element') {\n requireOptions(opts, ['elementId']);\n }\n const {elementId: targetElement} = opts;\n return await this.espresso.jwproxy.command(`/appium/execute_mobile/backdoor`, 'POST', {target, methods, targetElement});\n};\n\n/**\n * Execute UiAutomator2 commands to drive out of app areas.\n * strategy can be one of: \"clazz\", \"res\", \"text\", \"textContains\", \"textEndsWith\", \"textStartsWith\",\n * \"desc\", \"descContains\", \"descEndsWith\", \"descStartsWith\", \"pkg\"\n *\n * action can be one of: \"click\", \"longClick\", \"getText\", \"getContentDescription\", \"getClassName\",\n * \"getResourceName\", \"getVisibleBounds\", \"getVisibleCenter\", \"getApplicationPackage\",\n * \"getChildCount\", \"clear\", \"isCheckable\", \"isChecked\", \"isClickable\", \"isEnabled\",\n * \"isFocusable\", \"isFocused\", \"isLongClickable\", \"isScrollable\", \"isSelected\"\n */\ncommands.mobileUiautomator = async function mobileUiautomator (opts = {}) {\n const {strategy, locator, action, index} = requireOptions(opts, ['strategy', 'locator', 'action']);\n return await this.espresso.jwproxy.command(`/appium/execute_mobile/uiautomator`, 'POST', {strategy, locator, index, action});\n};\n\n/**\n * Execute UiAutomator2 command to return the UI dump when AUT is in background.\n * @throws {Error} if uiautomator view dump is unsuccessful\n * @returns {string} uiautomator DOM xml as string\n */\ncommands.mobileUiautomatorPageSource = async function mobileUiautomatorPageSource () {\n return await this.espresso.jwproxy.command(`/appium/execute_mobile/uiautomator_page_source`, 'GET');\n};\n\n/**\n * Flash the element with given id.\n * durationMillis and repeatCount are optional\n *\n */\ncommands.mobileFlashElement = async function mobileFlashElement (opts = {}) {\n const {element} = requireOptions(opts, ['element']);\n const {durationMillis, repeatCount} = opts;\n return await this.espresso.jwproxy.command(`/appium/execute_mobile/${util.unwrapElement(element)}/flash`, 'POST', {\n durationMillis,\n repeatCount\n });\n};\n\n/**\n * Perform a 'GeneralClickAction' (https://developer.android.com/reference/androidx/test/espresso/action/GeneralClickAction)\n */\ncommands.mobileClickAction = async function mobileClickAction (opts = {}) {\n const {element, tapper, coordinatesProvider, precisionDescriber,\n inputDevice, buttonState} = requireOptions(opts, ['element']);\n return await this.espresso.jwproxy.command(`/appium/execute_mobile/${util.unwrapElement(element)}/click_action`, 'POST', {\n tapper, coordinatesProvider, precisionDescriber, inputDevice, buttonState\n });\n};\n\ncommands.updateSettings = async function updateSettings (settings) {\n await this.settings.update(settings);\n await this.espresso.jwproxy.command(`/appium/settings`, 'POST', { settings });\n};\n\ncommands.getSettings = async function getSettings () {\n const driverSettings = this.settings.getSettings();\n const serverSettings = await this.espresso.jwproxy.command(`/appium/settings`, 'GET');\n return {...driverSettings, ...serverSettings};\n};\n\n// Stop proxying to any Chromedriver and redirect to Espresso\nhelpers.suspendChromedriverProxy = function suspendChromedriverProxy () {\n this.chromedriver = null;\n this.proxyReqRes = this.espresso.proxyReqRes.bind(this.espresso);\n this.proxyCommand = this.espresso.proxyCommand.bind(this.espresso);\n this.jwpProxyActive = true;\n};\n\n/**\n * Starts the given activity with intent options, activity options and locale.\n * Activity could only be executed in scope of the current app package.\n *\n * appActivity is mandatory\n *\n * locale, optionalIntentArguments, optionalActivityArguments are optional\n */\ncommands.mobileStartActivity = async function mobileStartActivity (opts = {}) {\n const appPackage = this.caps.appPackage;\n const {\n appActivity,\n locale,\n optionalIntentArguments,\n optionalActivityArguments\n } = requireOptions(opts, ['appActivity']);\n return await this.espresso.jwproxy.command(`/appium/device/start_activity`, 'POST', {\n appPackage,\n appActivity,\n locale,\n optionalIntentArguments,\n optionalActivityArguments\n });\n};\n\ncommands.startActivity = async function startActivity (appPackage, appActivity,\n appWaitPackage, appWaitActivity) {\n // intentAction, intentCategory, intentFlags, optionalIntentArguments, dontStopAppOnReset\n // parameters are not supported by Espresso\n appPackage = appPackage || this.caps.appPackage;\n appWaitPackage = appWaitPackage || appPackage;\n appActivity = qualifyActivityName(appActivity, appPackage);\n appWaitActivity = qualifyActivityName(appWaitActivity || appActivity, appWaitPackage);\n this.log.debug(`Starting activity '${appActivity}' for package '${appPackage}'`);\n await this.espresso.jwproxy.command(`/appium/device/start_activity`, 'POST', {\n appPackage,\n appActivity,\n });\n await this.adb.waitForActivity(appWaitPackage, appWaitActivity);\n};\n\ncommands.mobileDismissAutofill = async function mobileDismissAutofill (opts = {}) {\n const {element} = requireOptions(opts, ['element']);\n await this.espresso.jwproxy.command(\n `/session/:sessionId/appium/execute_mobile/${util.unwrapElement(element)}/dismiss_autofill`, 'POST', {});\n};\n\nObject.assign(extensions, commands, helpers);\nexport { commands, helpers };\nexport default extensions;\n"],"mappings":"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"}
1
+ {"version":3,"file":"general.js","names":["_lodash","_interopRequireDefault","require","_support","_validate","_driver","_utils","commands","helpers","extensions","exports","requireOptions","options","requiredOptionNames","_","isArray","presentOptionNames","keys","missingOptionNames","difference","isEmpty","Error","JSON","stringify","launchApp","errors","UnsupportedOperationError","closeApp","reset","getClipboard","adb","getApiLevel","espresso","jwproxy","command","mobilePerformEditorAction","opts","action","mobileSwipe","direction","element","swiper","startCoordinates","endCoordinates","precisionDescriber","util","unwrapElement","mobilePressKey","keycode","metastate","flags","isLongPress","mobileBackgroundApp","seconds","background","mobileGetDeviceInfo","mobileIsToastVisible","text","isRegexp","hasValue","InvalidArgumentError","mobileOpenDrawer","gravity","mobileCloseDrawer","mobileSetDate","year","monthOfYear","dayOfMonth","mobileSetTime","hours","minutes","mobileNavigateTo","menuItemId","menuItemIdAsNumber","parseInt","isNaN","mobileWebAtoms","getDisplayDensity","mobileScrollToPage","scrollToTypes","res","validate","presence","scrollTo","inclusion","within","message","join","scrollToPage","numericality","onlyInteger","greaterThanOrEqualTo","smoothScroll","log","warn","mobileBackdoor","target","methods","elementId","targetElement","mobileUiautomator","strategy","locator","index","mobileUiautomatorPageSource","mobileFlashElement","durationMillis","repeatCount","mobileClickAction","tapper","coordinatesProvider","inputDevice","buttonState","updateSettings","settings","update","err","getSettings","driverSettings","serverSettings","suspendChromedriverProxy","chromedriver","proxyReqRes","bind","proxyCommand","jwpProxyActive","mobileStartActivity","appPackage","caps","appActivity","locale","optionalIntentArguments","optionalActivityArguments","startActivity","appWaitPackage","appWaitActivity","qualifyActivityName","debug","waitForActivity","mobileDismissAutofill","Object","assign","_default","default"],"sources":["../../../lib/commands/general.js"],"sourcesContent":["import _ from 'lodash';\nimport { util } from 'appium/support';\nimport validate from 'validate.js';\nimport { errors } from 'appium/driver';\nimport { qualifyActivityName } from '../utils';\n\nconst commands = {}, helpers = {}, extensions = {};\n\nfunction requireOptions (options, requiredOptionNames) {\n if (!_.isArray(requiredOptionNames)) {\n requiredOptionNames = [requiredOptionNames];\n }\n const presentOptionNames = _.keys(options);\n const missingOptionNames = _.difference(requiredOptionNames, presentOptionNames);\n if (_.isEmpty(missingOptionNames)) {\n return options;\n }\n throw new Error(`The following options are required: ${JSON.stringify(missingOptionNames)}. ` +\n `You have only provided: ${JSON.stringify(presentOptionNames)}`);\n}\n\n// eslint-disable-next-line require-await\ncommands.launchApp = async function launchApp () {\n throw new errors.UnsupportedOperationError('Please create a new session in order to launch the application under test');\n};\n\n// eslint-disable-next-line require-await\ncommands.closeApp = async function closeApp () {\n throw new errors.UnsupportedOperationError('Please quit the session in order to close the application under test');\n};\n\n// eslint-disable-next-line require-await\ncommands.reset = async function reset () {\n throw new errors.UnsupportedOperationError(\n 'Please quit the session and create a new one ' +\n 'in order to close and launch the application under test');\n};\n\ncommands.getClipboard = async function getClipboard () {\n return (await this.adb.getApiLevel() < 29)\n ? (await this.espresso.jwproxy.command('/appium/device/get_clipboard', 'POST', {}))\n : (await this.adb.getClipboard());\n};\n\ncommands.mobilePerformEditorAction = async function mobilePerformEditorAction (opts = {}) {\n const {action} = requireOptions(opts, ['action']);\n return await this.espresso.jwproxy.command('/appium/device/perform_editor_action', 'POST', {action});\n};\n\ncommands.mobileSwipe = async function mobileSwipe (opts = {}) {\n const {direction, element, swiper, startCoordinates, endCoordinates, precisionDescriber} = requireOptions(opts, ['element']);\n return await this.espresso.jwproxy.command(`/appium/execute_mobile/${util.unwrapElement(element)}/swipe`, 'POST', {\n direction, element, swiper, startCoordinates, endCoordinates, precisionDescriber\n });\n};\n\n/**\n * @typedef {Object} PressKeyOptions\n * @property {number} keycode A valid Android key code. See https://developer.android.com/reference/android/view/KeyEvent\n * for the list of available key codes\n * @property {number?} metastate An integer in which each bit set to 1 represents a pressed meta key. See\n * https://developer.android.com/reference/android/view/KeyEvent for more details.\n * @property {number?} flags Flags for the particular key event. See\n * https://developer.android.com/reference/android/view/KeyEvent for more details.\n * @property {boolean} isLongPress [false] Whether to emulate long key press\n */\n\n/**\n * Emulates key press event.\n *\n * @param {PressKeyOptions} opts\n */\ncommands.mobilePressKey = async function mobilePressKey (opts = {}) {\n const {keycode, metastate, flags, isLongPress} = requireOptions(opts, ['keycode']);\n await this.espresso.jwproxy.command(`/appium/device/${isLongPress ? 'long_' : ''}press_keycode`, 'POST', {\n keycode, metastate, flags\n });\n};\n\n/**\n * @typedef {Object} BackgroundAppOptions\n * @property {number?} seconds The amount of seconds to wait between putting the app to background and restoring it.\n * Any negative value means to not restore the app after putting it to the background (the default behavior).\n */\n\n/**\n * Puts the app under test to the background\n * and then restores it (if needed). The call is blocking is the\n * app needs to be restored afterwards.\n *\n * @param {BackgroundAppOptions} opts\n */\ncommands.mobileBackgroundApp = async function mobileBackgroundApp (opts = {}) {\n const {seconds = -1} = opts;\n return await this.background(seconds);\n};\n\ncommands.mobileGetDeviceInfo = async function mobileGetDeviceInfo () {\n return await this.espresso.jwproxy.command('/appium/device/info', 'GET');\n};\n\ncommands.mobileIsToastVisible = async function mobileIsToastVisible (opts = {}) {\n const {text, isRegexp} = opts;\n if (!util.hasValue(text)) {\n throw new errors.InvalidArgumentError(`'text' argument is mandatory`);\n }\n return await this.espresso.jwproxy.command('/appium/execute_mobile/is_toast_displayed', 'POST', {\n text,\n isRegexp,\n });\n};\n\ncommands.mobileOpenDrawer = async function mobileOpenDrawer (opts = {}) {\n const {element, gravity} = requireOptions(opts, ['element']);\n\n return await this.espresso.jwproxy.command(`/appium/execute_mobile/${util.unwrapElement(element)}/open_drawer`, 'POST', {\n gravity\n });\n};\n\ncommands.mobileCloseDrawer = async function mobileCloseDrawer (opts = {}) {\n const {element, gravity} = requireOptions(opts, ['element']);\n\n return await this.espresso.jwproxy.command(`/appium/execute_mobile/${util.unwrapElement(element)}/close_drawer`, 'POST', {\n gravity\n });\n};\n\ncommands.mobileSetDate = async function mobileSetDate (opts = {}) {\n const {element, year, monthOfYear, dayOfMonth} = requireOptions(opts, ['element', 'year', 'monthOfYear', 'dayOfMonth']);\n\n return await this.espresso.jwproxy.command(`/appium/execute_mobile/${util.unwrapElement(element)}/set_date`, 'POST', {\n year,\n monthOfYear,\n dayOfMonth,\n });\n};\n\ncommands.mobileSetTime = async function mobileSetTime (opts = {}) {\n const {element, hours, minutes} = requireOptions(opts, ['element', 'hours', 'minutes']);\n\n return await this.espresso.jwproxy.command(`/appium/execute_mobile/${util.unwrapElement(element)}/set_time`, 'POST', {\n hours,\n minutes,\n });\n};\n\ncommands.mobileNavigateTo = async function mobileNavigateTo (opts = {}) {\n let {element, menuItemId} = requireOptions(opts, ['menuItemId', 'element']);\n\n let menuItemIdAsNumber = parseInt(menuItemId, 10);\n if (_.isNaN(menuItemIdAsNumber) || menuItemIdAsNumber < 0) {\n throw new errors.InvalidArgumentError(`'menuItemId' must be a non-negative number. Found ${menuItemId}`);\n }\n\n return await this.espresso.jwproxy.command(`/appium/execute_mobile/${util.unwrapElement(element)}/navigate_to`, 'POST', {\n menuItemId\n });\n};\n\n/**\n * Runs a chain of Espresso web atoms (see https://developer.android.com/training/testing/espresso/web for reference)\n *\n * Takes JSON of the form\n *\n * {\n * \"webviewEl\": \"<ELEMENT_ID>\", // optional webview element to operate on\n * \"forceJavascriptEnabled\": true|false, // if webview disables javascript, webatoms won't work, this forces it\n * \"methodChain\": [\n * {\"name\": \"methodName\", \"atom\": {\"name\": \"atomName\", \"args\": [\"arg1\", \"arg2\", ...]}},\n * ...\n * ]\n * }\n *\n */\ncommands.mobileWebAtoms = async function mobileWebAtoms (opts = {}) {\n opts = requireOptions(opts, ['methodChain']);\n return await this.espresso.jwproxy.command(`/appium/execute_mobile/web_atoms`, 'POST', opts);\n};\n\ncommands.getDisplayDensity = async function getDisplayDensity () {\n return await this.espresso.jwproxy.command('/appium/device/display_density', 'GET', {});\n};\n\ncommands.mobileScrollToPage = async function mobileScrollToPage (opts = {}) {\n\n // Validate the parameters\n const scrollToTypes = ['first', 'last', 'left', 'right'];\n const res = validate(opts, {\n element: {presence: true},\n scrollTo: {\n inclusion: {\n within: scrollToTypes,\n message: `\"scrollTo\" must be one of \"${scrollToTypes.join(', ')}\" found '%{value}'`,\n }\n },\n scrollToPage: {\n numericality: {\n onlyInteger: true,\n greaterThanOrEqualTo: 0,\n message: `\"scrollToPage\" must be a non-negative integer. Found '%{value}'`\n },\n },\n });\n if (util.hasValue(res)) {\n throw new errors.InvalidArgumentError(`Invalid scrollTo parameters: ${JSON.stringify(res)}`);\n }\n\n const {element, scrollTo, scrollToPage, smoothScroll} = opts;\n\n if (util.hasValue(scrollTo) && util.hasValue(scrollToPage)) {\n this.log.warn(`'scrollTo' and 'scrollToPage' where both provided. Defaulting to 'scrollTo'`);\n }\n\n return await this.espresso.jwproxy.command(`/appium/execute_mobile/${util.unwrapElement(element)}/scroll_to_page`, 'POST', {\n scrollTo,\n scrollToPage,\n smoothScroll,\n });\n};\n\n\n/**\n * API to invoke methods defined in Android app.\n *\n * Example data\n * {\n * target: 'activity',\n * methods:\n * [\n * {\n * name: \"someMethod\",\n * },\n * {\n * name: \"anotherMethod\",\n * args:\n * [\n * {value: \"Lol\", type: 'java.lang.CharSequence'},\n * {value: 1, type: 'int'}\n * ]\n * }\n * ]\n * }\n *\n * In above example, method \"someMethod\" will be invoked on 'activity'. On the result, \"anotherMethod\" will be invoked\n * \"target\" can be either 'activity', 'application' or 'element'\n * If target is set to 'application', methods will be invoked on application class\n * If target is set to 'activity', methods will be invoked on current activity\n * If target is set to 'element', 'elementId' must be specified\n *\n * - Only 'Public' methods can be invoked. ('open' modifire is necessary in Kotlin)\n * - following primitive types are supported: \"int\", \"boolean\", \"byte\", \"short\", \"long\", \"float\", \"char\"\n * - Non-primitive types with fully qualified name \"java.lang.*\" is also supported:\n * Eg. \"java.lang.CharSequence\", \"java.lang.String\", \"java.lang.Integer\", \"java.lang.Float\",\n * \"java.lang.Double\", \"java.lang.Boolean\", \"java.lang.Long\", \"java.lang.Short\",\n * \"java.lang.Character\" etc...\n *\n *\n * @throws {Error} if target is not 'activity' or 'application'\n * @throws {Error} if a method is not found with given argument types\n *\n * @return {*} the result of the last method in the invocation chain. If method return type is void, then \"<VOID>\" will be returned\n *\n */\ncommands.mobileBackdoor = async function mobileBackdoor (opts = {}) {\n requireOptions(opts, ['target', 'methods']);\n const {target, methods} = opts;\n if (target === 'element') {\n requireOptions(opts, ['elementId']);\n }\n const {elementId: targetElement} = opts;\n return await this.espresso.jwproxy.command(`/appium/execute_mobile/backdoor`, 'POST', {target, methods, targetElement});\n};\n\n/**\n * Execute UiAutomator2 commands to drive out of app areas.\n * strategy can be one of: \"clazz\", \"res\", \"text\", \"textContains\", \"textEndsWith\", \"textStartsWith\",\n * \"desc\", \"descContains\", \"descEndsWith\", \"descStartsWith\", \"pkg\"\n *\n * action can be one of: \"click\", \"longClick\", \"getText\", \"getContentDescription\", \"getClassName\",\n * \"getResourceName\", \"getVisibleBounds\", \"getVisibleCenter\", \"getApplicationPackage\",\n * \"getChildCount\", \"clear\", \"isCheckable\", \"isChecked\", \"isClickable\", \"isEnabled\",\n * \"isFocusable\", \"isFocused\", \"isLongClickable\", \"isScrollable\", \"isSelected\"\n */\ncommands.mobileUiautomator = async function mobileUiautomator (opts = {}) {\n const {strategy, locator, action, index} = requireOptions(opts, ['strategy', 'locator', 'action']);\n return await this.espresso.jwproxy.command(`/appium/execute_mobile/uiautomator`, 'POST', {strategy, locator, index, action});\n};\n\n/**\n * Execute UiAutomator2 command to return the UI dump when AUT is in background.\n * @throws {Error} if uiautomator view dump is unsuccessful\n * @returns {string} uiautomator DOM xml as string\n */\ncommands.mobileUiautomatorPageSource = async function mobileUiautomatorPageSource () {\n return await this.espresso.jwproxy.command(`/appium/execute_mobile/uiautomator_page_source`, 'GET');\n};\n\n/**\n * Flash the element with given id.\n * durationMillis and repeatCount are optional\n *\n */\ncommands.mobileFlashElement = async function mobileFlashElement (opts = {}) {\n const {element} = requireOptions(opts, ['element']);\n const {durationMillis, repeatCount} = opts;\n return await this.espresso.jwproxy.command(`/appium/execute_mobile/${util.unwrapElement(element)}/flash`, 'POST', {\n durationMillis,\n repeatCount\n });\n};\n\n/**\n * Perform a 'GeneralClickAction' (https://developer.android.com/reference/androidx/test/espresso/action/GeneralClickAction)\n */\ncommands.mobileClickAction = async function mobileClickAction (opts = {}) {\n const {element, tapper, coordinatesProvider, precisionDescriber,\n inputDevice, buttonState} = requireOptions(opts, ['element']);\n return await this.espresso.jwproxy.command(`/appium/execute_mobile/${util.unwrapElement(element)}/click_action`, 'POST', {\n tapper, coordinatesProvider, precisionDescriber, inputDevice, buttonState\n });\n};\n\n/**\n * @typedef {Object} SettingsOptions\n * @property {!string|number|boolean} Object Settings parameters that is available in\n * https://github.com/appium/appium-espresso-driver#settings-api or enabled plugins.\n */\n\n/**\n * Apply the given settings to the espresso driver and the espresso server.\n * Errors by the espresso server will be printed as log, but it does not return an error message.\n * @param {SettingsOptions} settings\n */\ncommands.updateSettings = async function updateSettings (settings) {\n await this.settings.update(settings);\n try {\n await this.espresso.jwproxy.command(`/appium/settings`, 'POST', { settings });\n } catch (err) {\n this.log.warn(`The espresso driver responded an error. Original error: ${err.message}`);\n };\n};\n\ncommands.getSettings = async function getSettings () {\n const driverSettings = this.settings.getSettings();\n const serverSettings = await this.espresso.jwproxy.command(`/appium/settings`, 'GET');\n return {...driverSettings, ...serverSettings};\n};\n\n// Stop proxying to any Chromedriver and redirect to Espresso\nhelpers.suspendChromedriverProxy = function suspendChromedriverProxy () {\n this.chromedriver = null;\n this.proxyReqRes = this.espresso.proxyReqRes.bind(this.espresso);\n this.proxyCommand = this.espresso.proxyCommand.bind(this.espresso);\n this.jwpProxyActive = true;\n};\n\n/**\n * Starts the given activity with intent options, activity options and locale.\n * Activity could only be executed in scope of the current app package.\n *\n * appActivity is mandatory\n *\n * locale, optionalIntentArguments, optionalActivityArguments are optional\n */\ncommands.mobileStartActivity = async function mobileStartActivity (opts = {}) {\n const appPackage = this.caps.appPackage;\n const {\n appActivity,\n locale,\n optionalIntentArguments,\n optionalActivityArguments\n } = requireOptions(opts, ['appActivity']);\n return await this.espresso.jwproxy.command(`/appium/device/start_activity`, 'POST', {\n appPackage,\n appActivity,\n locale,\n optionalIntentArguments,\n optionalActivityArguments\n });\n};\n\ncommands.startActivity = async function startActivity (appPackage, appActivity,\n appWaitPackage, appWaitActivity) {\n // intentAction, intentCategory, intentFlags, optionalIntentArguments, dontStopAppOnReset\n // parameters are not supported by Espresso\n appPackage = appPackage || this.caps.appPackage;\n appWaitPackage = appWaitPackage || appPackage;\n appActivity = qualifyActivityName(appActivity, appPackage);\n appWaitActivity = qualifyActivityName(appWaitActivity || appActivity, appWaitPackage);\n this.log.debug(`Starting activity '${appActivity}' for package '${appPackage}'`);\n await this.espresso.jwproxy.command(`/appium/device/start_activity`, 'POST', {\n appPackage,\n appActivity,\n });\n await this.adb.waitForActivity(appWaitPackage, appWaitActivity);\n};\n\ncommands.mobileDismissAutofill = async function mobileDismissAutofill (opts = {}) {\n const {element} = requireOptions(opts, ['element']);\n await this.espresso.jwproxy.command(\n `/session/:sessionId/appium/execute_mobile/${util.unwrapElement(element)}/dismiss_autofill`, 'POST', {});\n};\n\nObject.assign(extensions, commands, helpers);\nexport { commands, helpers };\nexport default extensions;\n"],"mappings":"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"}
@@ -321,9 +321,24 @@ commands.mobileClickAction = async function mobileClickAction (opts = {}) {
321
321
  });
322
322
  };
323
323
 
324
+ /**
325
+ * @typedef {Object} SettingsOptions
326
+ * @property {!string|number|boolean} Object Settings parameters that is available in
327
+ * https://github.com/appium/appium-espresso-driver#settings-api or enabled plugins.
328
+ */
329
+
330
+ /**
331
+ * Apply the given settings to the espresso driver and the espresso server.
332
+ * Errors by the espresso server will be printed as log, but it does not return an error message.
333
+ * @param {SettingsOptions} settings
334
+ */
324
335
  commands.updateSettings = async function updateSettings (settings) {
325
336
  await this.settings.update(settings);
326
- await this.espresso.jwproxy.command(`/appium/settings`, 'POST', { settings });
337
+ try {
338
+ await this.espresso.jwproxy.command(`/appium/settings`, 'POST', { settings });
339
+ } catch (err) {
340
+ this.log.warn(`The espresso driver responded an error. Original error: ${err.message}`);
341
+ };
327
342
  };
328
343
 
329
344
  commands.getSettings = async function getSettings () {
package/package.json CHANGED
@@ -7,7 +7,7 @@
7
7
  "automated testing",
8
8
  "android"
9
9
  ],
10
- "version": "2.25.2",
10
+ "version": "2.25.4",
11
11
  "author": "Appium Contributors",
12
12
  "license": "Apache-2.0",
13
13
  "repository": {
@@ -127,7 +127,7 @@
127
127
  "mocha": "^10.0.0",
128
128
  "pre-commit": "^1.2.2",
129
129
  "rimraf": "^5.0.0",
130
- "semantic-release": "^20.0.2",
130
+ "semantic-release": "^21.1.0",
131
131
  "sinon": "^15.0.0",
132
132
  "webdriverio": "^8.0.2",
133
133
  "xpath": "^0.x"
@@ -1,5 +0,0 @@
1
- distributionBase=GRADLE_USER_HOME
2
- distributionPath=wrapper/dists
3
- distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip
4
- zipStoreBase=GRADLE_USER_HOME
5
- zipStorePath=wrapper/dists