appium-uiautomator2-driver 2.17.0 → 2.18.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/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ ## [2.18.0](https://github.com/appium/appium-uiautomator2-driver/compare/v2.17.0...v2.18.0) (2023-04-20)
2
+
3
+
4
+ ### Features
5
+
6
+ * Add mobile methods for lock and isLocked ([#600](https://github.com/appium/appium-uiautomator2-driver/issues/600)) ([24e90b2](https://github.com/appium/appium-uiautomator2-driver/commit/24e90b217e0e2ab807184c9e28a82e55027e9e65))
7
+
1
8
  ## [2.17.0](https://github.com/appium/appium-uiautomator2-driver/compare/v2.16.0...v2.17.0) (2023-04-20)
2
9
 
3
10
 
package/README.md CHANGED
@@ -922,6 +922,16 @@ Name | Type | Required | Description | Example
922
922
  apks | Array<string> | yes | The path to APKs. Each path should be the full path to the apk to be installed, or an URL to a remote location. | `['/path/to/local.apk', 'https://github.com/appium/ruby_lib_core/blob/master/test/functional/app/api.apk.zip?raw=true']`
923
923
  options | object | no | Installation options. If you want enable `-g` option, you could specify that `{grantPermissions: true}`. `allowTestPackages` corresponds `-t`, `useSdcard` corresponds `-s`, `replace` corresponds `-r` (`-r` is enabled by default), `partialInstall` corresponds `-p`. | `{grantPermissions: true, partialInstall: true}`
924
924
 
925
+ ### mobile: lock
926
+
927
+ Lock the device (and optionally unlock it after a certain amount of time). Only simple (e.g. without a password) locks are supported.
928
+
929
+ #### Arguments
930
+
931
+ Name | Type | Required | Description | Example
932
+ --- | --- | --- | --- | ---
933
+ seconds | number|string | no | The number of seconds after which to unlock the device. Set to `0` or leave it empty to require manual unlock (e.g. do not block and automatically unlock afterwards). | 5
934
+
925
935
  ### mobile: unlock
926
936
 
927
937
  Unlocks the device if it is locked. Noop if the device's screen is not locked.
@@ -935,6 +945,14 @@ type | string | yes | The unlock type. See the documentation on [appium:unlockTy
935
945
  strategy | string | no | Unlock strategy. See the documentation on [appium:unlockStrategy](#device-locking) capability for more details | uiautomator
936
946
  timeoutMs | number | no | Unlock timeout. See the documentation on [appium:unlockSuccessTimeout](#device-locking) capability for more details | 5000
937
947
 
948
+ ### mobile: isLocked
949
+
950
+ Determine whether the device is locked.
951
+
952
+ #### Returned Result
953
+
954
+ Either `true` or `false`
955
+
938
956
  ### mobile: refreshGpsCache
939
957
 
940
958
  Sends a request to refresh the GPS cache on the device under test.
@@ -99,7 +99,9 @@ extensions.executeMobile = async function (mobileCommand, opts = {}) {
99
99
  getContexts: 'mobileGetContexts',
100
100
  getAppStrings: 'mobileGetAppStrings',
101
101
  installMultipleApks: 'mobileInstallMultipleApks',
102
+ lock: 'lock',
102
103
  unlock: 'mobileUnlock',
104
+ isLocked: 'isLocked',
103
105
  refreshGpsCache: 'mobileRefreshGpsCache',
104
106
  startMediaProjectionRecording: 'mobileStartMediaProjectionRecording',
105
107
  isMediaProjectionRecordingRunning: 'mobileIsMediaProjectionRecordingRunning',
@@ -182,4 +184,4 @@ commands.mobileInstallMultipleApks = async function (opts = {}) {
182
184
  Object.assign(extensions, commands, helpers);
183
185
  var _default = extensions;
184
186
  exports.default = _default;
185
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfYmx1ZWJpcmQiLCJfZHJpdmVyIiwiX2V4dGVuc2lvbnMiLCJleHRlbnNpb25zIiwiY29tbWFuZHMiLCJoZWxwZXJzIiwiZ2V0UGFnZVNvdXJjZSIsInVpYXV0b21hdG9yMiIsImp3cHJveHkiLCJjb21tYW5kIiwiZ2V0Q2xpcGJvYXJkIiwiYWRiIiwiZ2V0QXBpTGV2ZWwiLCJkb1NlbmRLZXlzIiwicGFyYW1zIiwia2V5ZXZlbnQiLCJrZXljb2RlIiwibWV0YXN0YXRlIiwibG9nIiwiZGVidWciLCJiYWNrIiwiZ2V0RGlzcGxheURlbnNpdHkiLCJnZXRXaW5kb3dTaXplIiwiZ2V0V2luZG93UmVjdCIsIndpZHRoIiwiaGVpZ2h0IiwieCIsInkiLCJleGVjdXRlTW9iaWxlIiwibW9iaWxlQ29tbWFuZCIsIm9wdHMiLCJtb2JpbGVDb21tYW5kc01hcHBpbmciLCJzaGVsbCIsImV4ZWNFbXVDb25zb2xlQ29tbWFuZCIsImRyYWdHZXN0dXJlIiwiZmxpbmdHZXN0dXJlIiwiZG91YmxlQ2xpY2tHZXN0dXJlIiwiY2xpY2tHZXN0dXJlIiwibG9uZ0NsaWNrR2VzdHVyZSIsInBpbmNoQ2xvc2VHZXN0dXJlIiwicGluY2hPcGVuR2VzdHVyZSIsInN3aXBlR2VzdHVyZSIsInNjcm9sbEdlc3R1cmUiLCJzY3JvbGxCYWNrVG8iLCJzY3JvbGwiLCJ2aWV3cG9ydFNjcmVlbnNob3QiLCJ2aWV3cG9ydFJlY3QiLCJkZWVwTGluayIsInN0YXJ0TG9nc0Jyb2FkY2FzdCIsInN0b3BMb2dzQnJvYWRjYXN0IiwiYWNjZXB0QWxlcnQiLCJkaXNtaXNzQWxlcnQiLCJiYXR0ZXJ5SW5mbyIsImRldmljZUluZm8iLCJnZXREZXZpY2VUaW1lIiwiY2hhbmdlUGVybWlzc2lvbnMiLCJnZXRQZXJtaXNzaW9ucyIsInBlcmZvcm1FZGl0b3JBY3Rpb24iLCJzdGFydFNjcmVlblN0cmVhbWluZyIsInN0b3BTY3JlZW5TdHJlYW1pbmciLCJnZXROb3RpZmljYXRpb25zIiwibGlzdFNtcyIsInR5cGUiLCJzZW5zb3JTZXQiLCJwdXNoRmlsZSIsInB1bGxGaWxlIiwicHVsbEZvbGRlciIsImRlbGV0ZUZpbGUiLCJpc0FwcEluc3RhbGxlZCIsInF1ZXJ5QXBwU3RhdGUiLCJhY3RpdmF0ZUFwcCIsInJlbW92ZUFwcCIsInRlcm1pbmF0ZUFwcCIsImluc3RhbGxBcHAiLCJjbGVhckFwcCIsInN0YXJ0QWN0aXZpdHkiLCJzdGFydFNlcnZpY2UiLCJzdG9wU2VydmljZSIsImJyb2FkY2FzdCIsImdldENvbnRleHRzIiwiZ2V0QXBwU3RyaW5ncyIsImluc3RhbGxNdWx0aXBsZUFwa3MiLCJ1bmxvY2siLCJyZWZyZXNoR3BzQ2FjaGUiLCJzdGFydE1lZGlhUHJvamVjdGlvblJlY29yZGluZyIsImlzTWVkaWFQcm9qZWN0aW9uUmVjb3JkaW5nUnVubmluZyIsInN0b3BNZWRpYVByb2plY3Rpb25SZWNvcmRpbmciLCJnZXRDb25uZWN0aXZpdHkiLCJzZXRDb25uZWN0aXZpdHkiLCJoaWRlS2V5Ym9hcmQiLCJpc0tleWJvYXJkU2hvd24iLCJwcmVzc0tleSIsIl8iLCJoYXMiLCJlcnJvcnMiLCJVbmtub3duQ29tbWFuZEVycm9yIiwia2V5cyIsIm1vYmlsZVZpZXdwb3J0U2NyZWVuc2hvdCIsImdldFZpZXdwb3J0U2NyZWVuc2hvdCIsIm1vYmlsZVZpZXdQb3J0UmVjdCIsImdldFZpZXdQb3J0UmVjdCIsInNldFVybCIsInVybCIsInN0YXJ0VXJpIiwiYXBwUGFja2FnZSIsIm1vYmlsZURlZXBMaW5rIiwicGFja2FnZSIsInBrZyIsIndhaXRGb3JMYXVuY2giLCJvcGVuTm90aWZpY2F0aW9ucyIsInVwZGF0ZVNldHRpbmdzIiwic2V0dGluZ3MiLCJ1cGRhdGUiLCJnZXRTZXR0aW5ncyIsImRyaXZlclNldHRpbmdzIiwic2VydmVyU2V0dGluZ3MiLCJ3cmFwQm9vdHN0cmFwRGlzY29ubmVjdCIsIndyYXBwZWQiLCJzdXNwZW5kQ2hyb21lZHJpdmVyUHJveHkiLCJjaHJvbWVkcml2ZXIiLCJwcm94eVJlcVJlcyIsImJpbmQiLCJwcm94eUNvbW1hbmQiLCJqd3BQcm94eUFjdGl2ZSIsIm1vYmlsZUdldERldmljZUluZm8iLCJtb2JpbGVUeXBlIiwidGV4dCIsImlzVW5kZWZpbmVkIiwiZXJyb3JBbmRUaHJvdyIsInR5cGVVbmljb2RlIiwibW9iaWxlSW5zdGFsbE11bHRpcGxlQXBrcyIsImlzQXJyYXkiLCJhcGtzIiwiaXNFbXB0eSIsIkludmFsaWRBcmd1bWVudEVycm9yIiwiQiIsImFsbCIsIm1hcCIsImFwcCIsImNvbmZpZ3VyZUFwcCIsIkFQS19FWFRFTlNJT04iLCJvcHRpb25zIiwiT2JqZWN0IiwiYXNzaWduIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwiZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9jb21tYW5kcy9nZW5lcmFsLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5pbXBvcnQgeyBlcnJvcnMgfSBmcm9tICdhcHBpdW0vZHJpdmVyJztcbmltcG9ydCB7IEFQS19FWFRFTlNJT04gfSBmcm9tICcuLi9leHRlbnNpb25zJztcblxubGV0IGV4dGVuc2lvbnMgPSB7fSxcbiAgICBjb21tYW5kcyA9IHt9LFxuICAgIGhlbHBlcnMgPSB7fTtcblxuY29tbWFuZHMuZ2V0UGFnZVNvdXJjZSA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZCgnL3NvdXJjZScsICdHRVQnLCB7fSk7XG59O1xuXG5jb21tYW5kcy5nZXRDbGlwYm9hcmQgPSBhc3luYyBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAoYXdhaXQgdGhpcy5hZGIuZ2V0QXBpTGV2ZWwoKSA8IDI5KVxuICAgID8gKGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZCgnL2FwcGl1bS9kZXZpY2UvZ2V0X2NsaXBib2FyZCcsICdQT1NUJywge30pKVxuICAgIDogKGF3YWl0IHRoaXMuYWRiLmdldENsaXBib2FyZCgpKTtcbn07XG5cbi8vIE5lZWQgdG8gb3ZlcnJpZGUgdGhpcyBmb3IgY29ycmVjdCB1bmljb2RlIHN1cHBvcnRcbmNvbW1hbmRzLmRvU2VuZEtleXMgPSBhc3luYyBmdW5jdGlvbiAocGFyYW1zKSB7XG4gIGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZCgnL2tleXMnLCAnUE9TVCcsIHBhcmFtcyk7XG59O1xuXG4vLyB1aWF1dG9tYXRvcjIgZG9lc24ndCBzdXBwb3J0IG1ldGFzdGF0ZSBmb3Iga2V5ZXZlbnRzXG5jb21tYW5kcy5rZXlldmVudCA9IGFzeW5jIGZ1bmN0aW9uIChrZXljb2RlLCBtZXRhc3RhdGUpIHtcbiAgdGhpcy5sb2cuZGVidWcoYElnbm9yaW5nIG1ldGFzdGF0ZSAke21ldGFzdGF0ZX1gKTtcbiAgYXdhaXQgdGhpcy5hZGIua2V5ZXZlbnQoa2V5Y29kZSk7XG59O1xuXG4vLyBVc2UgQURCIHNpbmNlIHdlIGRvbid0IGhhdmUgVWlBdXRvbWF0b3JcbmNvbW1hbmRzLmJhY2sgPSBhc3luYyBmdW5jdGlvbiAoKSB7XG4gIGF3YWl0IHRoaXMuYWRiLmtleWV2ZW50KDQpO1xufTtcblxuY29tbWFuZHMuZ2V0RGlzcGxheURlbnNpdHkgPSBhc3luYyBmdW5jdGlvbiBnZXREaXNwbGF5RGVuc2l0eSAoKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLnVpYXV0b21hdG9yMi5qd3Byb3h5LmNvbW1hbmQoJy9hcHBpdW0vZGV2aWNlL2Rpc3BsYXlfZGVuc2l0eScsICdHRVQnLCB7fSk7XG59O1xuXG4vLyBtZW1vaXplZCBpbiBjb25zdHJ1Y3RvclxuY29tbWFuZHMuZ2V0V2luZG93U2l6ZSA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZCgnL3dpbmRvdy9jdXJyZW50L3NpemUnLCAnR0VUJywge30pO1xufTtcblxuLy8gRm9yIFczQ1xuY29tbWFuZHMuZ2V0V2luZG93UmVjdCA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgY29uc3Qge3dpZHRoLCBoZWlnaHR9ID0gYXdhaXQgdGhpcy5nZXRXaW5kb3dTaXplKCk7XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHg6IDAsXG4gICAgeTogMCxcbiAgfTtcbn07XG5cbmV4dGVuc2lvbnMuZXhlY3V0ZU1vYmlsZSA9IGFzeW5jIGZ1bmN0aW9uIChtb2JpbGVDb21tYW5kLCBvcHRzID0ge30pIHtcbiAgY29uc3QgbW9iaWxlQ29tbWFuZHNNYXBwaW5nID0ge1xuICAgIHNoZWxsOiAnbW9iaWxlU2hlbGwnLFxuXG4gICAgZXhlY0VtdUNvbnNvbGVDb21tYW5kOiAnbW9iaWxlRXhlY0VtdUNvbnNvbGVDb21tYW5kJyxcblxuICAgIGRyYWdHZXN0dXJlOiAnbW9iaWxlRHJhZ0dlc3R1cmUnLFxuICAgIGZsaW5nR2VzdHVyZTogJ21vYmlsZUZsaW5nR2VzdHVyZScsXG4gICAgZG91YmxlQ2xpY2tHZXN0dXJlOiAnbW9iaWxlRG91YmxlQ2xpY2tHZXN0dXJlJyxcbiAgICBjbGlja0dlc3R1cmU6ICdtb2JpbGVDbGlja0dlc3R1cmUnLFxuICAgIGxvbmdDbGlja0dlc3R1cmU6ICdtb2JpbGVMb25nQ2xpY2tHZXN0dXJlJyxcbiAgICBwaW5jaENsb3NlR2VzdHVyZTogJ21vYmlsZVBpbmNoQ2xvc2VHZXN0dXJlJyxcbiAgICBwaW5jaE9wZW5HZXN0dXJlOiAnbW9iaWxlUGluY2hPcGVuR2VzdHVyZScsXG4gICAgc3dpcGVHZXN0dXJlOiAnbW9iaWxlU3dpcGVHZXN0dXJlJyxcbiAgICBzY3JvbGxHZXN0dXJlOiAnbW9iaWxlU2Nyb2xsR2VzdHVyZScsXG4gICAgc2Nyb2xsQmFja1RvOiAnbW9iaWxlU2Nyb2xsQmFja1RvJyxcbiAgICBzY3JvbGw6ICdtb2JpbGVTY3JvbGwnLFxuICAgIHZpZXdwb3J0U2NyZWVuc2hvdDogJ21vYmlsZVZpZXdwb3J0U2NyZWVuc2hvdCcsXG4gICAgdmlld3BvcnRSZWN0OiAnbW9iaWxlVmlld1BvcnRSZWN0JyxcblxuICAgIGRlZXBMaW5rOiAnbW9iaWxlRGVlcExpbmsnLFxuXG4gICAgc3RhcnRMb2dzQnJvYWRjYXN0OiAnbW9iaWxlU3RhcnRMb2dzQnJvYWRjYXN0JyxcbiAgICBzdG9wTG9nc0Jyb2FkY2FzdDogJ21vYmlsZVN0b3BMb2dzQnJvYWRjYXN0JyxcblxuICAgIGFjY2VwdEFsZXJ0OiAnbW9iaWxlQWNjZXB0QWxlcnQnLFxuICAgIGRpc21pc3NBbGVydDogJ21vYmlsZURpc21pc3NBbGVydCcsXG5cbiAgICBiYXR0ZXJ5SW5mbzogJ21vYmlsZUdldEJhdHRlcnlJbmZvJyxcblxuICAgIGRldmljZUluZm86ICdtb2JpbGVHZXREZXZpY2VJbmZvJyxcblxuICAgIGdldERldmljZVRpbWU6ICdtb2JpbGVHZXREZXZpY2VUaW1lJyxcblxuICAgIGNoYW5nZVBlcm1pc3Npb25zOiAnbW9iaWxlQ2hhbmdlUGVybWlzc2lvbnMnLFxuICAgIGdldFBlcm1pc3Npb25zOiAnbW9iaWxlR2V0UGVybWlzc2lvbnMnLFxuXG4gICAgcGVyZm9ybUVkaXRvckFjdGlvbjogJ21vYmlsZVBlcmZvcm1FZGl0b3JBY3Rpb24nLFxuXG4gICAgc3RhcnRTY3JlZW5TdHJlYW1pbmc6ICdtb2JpbGVTdGFydFNjcmVlblN0cmVhbWluZycsXG4gICAgc3RvcFNjcmVlblN0cmVhbWluZzogJ21vYmlsZVN0b3BTY3JlZW5TdHJlYW1pbmcnLFxuXG4gICAgZ2V0Tm90aWZpY2F0aW9uczogJ21vYmlsZUdldE5vdGlmaWNhdGlvbnMnLFxuXG4gICAgbGlzdFNtczogJ21vYmlsZUxpc3RTbXMnLFxuXG4gICAgdHlwZTogJ21vYmlsZVR5cGUnLFxuICAgIHNlbnNvclNldDogJ3NlbnNvclNldCcsXG5cbiAgICBwdXNoRmlsZTogJ21vYmlsZVB1c2hGaWxlJyxcbiAgICBwdWxsRmlsZTogJ21vYmlsZVB1bGxGaWxlJyxcbiAgICBwdWxsRm9sZGVyOiAnbW9iaWxlUHVsbEZvbGRlcicsXG4gICAgZGVsZXRlRmlsZTogJ21vYmlsZURlbGV0ZUZpbGUnLFxuXG4gICAgaXNBcHBJbnN0YWxsZWQ6ICdtb2JpbGVJc0FwcEluc3RhbGxlZCcsXG4gICAgcXVlcnlBcHBTdGF0ZTogJ21vYmlsZVF1ZXJ5QXBwU3RhdGUnLFxuICAgIGFjdGl2YXRlQXBwOiAnbW9iaWxlQWN0aXZhdGVBcHAnLFxuICAgIHJlbW92ZUFwcDogJ21vYmlsZVJlbW92ZUFwcCcsXG4gICAgdGVybWluYXRlQXBwOiAnbW9iaWxlVGVybWluYXRlQXBwJyxcbiAgICBpbnN0YWxsQXBwOiAnbW9iaWxlSW5zdGFsbEFwcCcsXG4gICAgY2xlYXJBcHA6ICdtb2JpbGVDbGVhckFwcCcsXG5cbiAgICBzdGFydEFjdGl2aXR5OiAnbW9iaWxlU3RhcnRBY3Rpdml0eScsXG4gICAgc3RhcnRTZXJ2aWNlOiAnbW9iaWxlU3RhcnRTZXJ2aWNlJyxcbiAgICBzdG9wU2VydmljZTogJ21vYmlsZVN0b3BTZXJ2aWNlJyxcbiAgICBicm9hZGNhc3Q6ICdtb2JpbGVCcm9hZGNhc3QnLFxuXG4gICAgZ2V0Q29udGV4dHM6ICdtb2JpbGVHZXRDb250ZXh0cycsXG5cbiAgICBnZXRBcHBTdHJpbmdzOiAnbW9iaWxlR2V0QXBwU3RyaW5ncycsXG5cbiAgICBpbnN0YWxsTXVsdGlwbGVBcGtzOiAnbW9iaWxlSW5zdGFsbE11bHRpcGxlQXBrcycsXG5cbiAgICB1bmxvY2s6ICdtb2JpbGVVbmxvY2snLFxuXG4gICAgcmVmcmVzaEdwc0NhY2hlOiAnbW9iaWxlUmVmcmVzaEdwc0NhY2hlJyxcblxuICAgIHN0YXJ0TWVkaWFQcm9qZWN0aW9uUmVjb3JkaW5nOiAnbW9iaWxlU3RhcnRNZWRpYVByb2plY3Rpb25SZWNvcmRpbmcnLFxuICAgIGlzTWVkaWFQcm9qZWN0aW9uUmVjb3JkaW5nUnVubmluZzogJ21vYmlsZUlzTWVkaWFQcm9qZWN0aW9uUmVjb3JkaW5nUnVubmluZycsXG4gICAgc3RvcE1lZGlhUHJvamVjdGlvblJlY29yZGluZzogJ21vYmlsZVN0b3BNZWRpYVByb2plY3Rpb25SZWNvcmRpbmcnLFxuXG4gICAgZ2V0Q29ubmVjdGl2aXR5OiAnbW9iaWxlR2V0Q29ubmVjdGl2aXR5JyxcbiAgICBzZXRDb25uZWN0aXZpdHk6ICdtb2JpbGVTZXRDb25uZWN0aXZpdHknLFxuXG4gICAgaGlkZUtleWJvYXJkOiAnbW9iaWxlSGlkZUtleWJvYXJkJyxcbiAgICBpc0tleWJvYXJkU2hvd246ICdpc0tleWJvYXJkU2hvd24nLFxuXG4gICAgcHJlc3NLZXk6ICdtb2JpbGVQcmVzc0tleScsXG4gIH07XG5cbiAgaWYgKCFfLmhhcyhtb2JpbGVDb21tYW5kc01hcHBpbmcsIG1vYmlsZUNvbW1hbmQpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5Vbmtub3duQ29tbWFuZEVycm9yKGBVbmtub3duIG1vYmlsZSBjb21tYW5kIFwiJHttb2JpbGVDb21tYW5kfVwiLiBgICtcbiAgICAgIGBPbmx5ICR7Xy5rZXlzKG1vYmlsZUNvbW1hbmRzTWFwcGluZyl9IGNvbW1hbmRzIGFyZSBzdXBwb3J0ZWQuYCk7XG4gIH1cbiAgcmV0dXJuIGF3YWl0IHRoaXNbbW9iaWxlQ29tbWFuZHNNYXBwaW5nW21vYmlsZUNvbW1hbmRdXShvcHRzKTtcbn07XG5cbmNvbW1hbmRzLm1vYmlsZVZpZXdwb3J0U2NyZWVuc2hvdCA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0Vmlld3BvcnRTY3JlZW5zaG90KCk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IFJlY3RhbmdsZVxuICogQHByb3BlcnR5IHtudW1iZXJ9IGxlZnQgLSBUaGUgbGVmdCBjb29yZGluYXRlIG9mIHRoZSBSZWN0YW5nbGUuXG4gKiBAcHJvcGVydHkge251bWJlcn0gdG9wIC0gVGhlIHRvcCBjb29yZGluYXRlIG9mIHRoZSBSZWN0YW5nbGUuXG4gKiBAcHJvcGVydHkge251bWJlcn0gd2lkdGggLSBUaGUgd2lkdGggb2YgUmVjdGFuZ2xlLlxuICogQHByb3BlcnR5IHtudW1iZXJ9IGhlaWdodCAtIFRoZSBoZWlnaHQgb2YgUmVjdGFuZ2xlLlxuICovXG5cbi8qKlxuICogUmV0dXJucyB0aGUgdmlld3BvcnQgY29vcmRpbmF0ZXMuXG4gKiBAcmV0dXJucyB7UmVjdGFuZ2xlfSBUaGUgdmlld3BvcnQgY29vcmRpbmF0ZXMuXG4gKi9cbmNvbW1hbmRzLm1vYmlsZVZpZXdQb3J0UmVjdCA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVZpZXdQb3J0UmVjdCAoKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLmdldFZpZXdQb3J0UmVjdCgpO1xufTtcblxuY29tbWFuZHMuc2V0VXJsID0gYXN5bmMgZnVuY3Rpb24gKHVybCkge1xuICBhd2FpdCB0aGlzLmFkYi5zdGFydFVyaSh1cmwsIHRoaXMub3B0cy5hcHBQYWNrYWdlKTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gRGVlcExpbmtPcHRzXG4gKiBAcHJvcGVydHkgeyFzdHJpbmd9IHVybCAtIFRoZSBuYW1lIG9mIFVSTCB0byBzdGFydC5cbiAqIEBwcm9wZXJ0eSB7IXN0cmluZ30gcGFja2FnZSAtIFRoZSBuYW1lIG9mIHRoZSBwYWNrYWdlIHRvIHN0YXJ0IHRoZSBVUkkgd2l0aC5cbiAqIEBwcm9wZXJ0eSB7P2Jvb2xlYW59IHdhaXRGb3JMYXVuY2ggW3RydWVdIC0gaWYgYGZhbHNlYCB0aGVuIGFkYiB3b24ndCB3YWl0XG4gKiBmb3IgdGhlIHN0YXJ0ZWQgYWN0aXZpdHkgdG8gcmV0dXJuIHRoZSBjb250cm9sXG4gKi9cblxuLyoqXG4gKiBTdGFydCBVUkwgdGhhdCB0YWtlIHVzZXJzIGRpcmVjdGx5IHRvIHNwZWNpZmljIGNvbnRlbnQgaW4gdGhlIGFwcFxuICogQHBhcmFtIHtEZWVwTGlua09wdHN9IG9wdHNcbiAqL1xuY29tbWFuZHMubW9iaWxlRGVlcExpbmsgPSBhc3luYyBmdW5jdGlvbiAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICB1cmwsXG4gICAgcGFja2FnZTogcGtnLFxuICAgIHdhaXRGb3JMYXVuY2gsXG4gIH0gPSBvcHRzO1xuICByZXR1cm4gYXdhaXQgdGhpcy5hZGIuc3RhcnRVcmkodXJsLCBwa2csIHsgd2FpdEZvckxhdW5jaCB9KTtcbn07XG5cbmNvbW1hbmRzLm9wZW5Ob3RpZmljYXRpb25zID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICByZXR1cm4gYXdhaXQgdGhpcy51aWF1dG9tYXRvcjIuandwcm94eS5jb21tYW5kKCcvYXBwaXVtL2RldmljZS9vcGVuX25vdGlmaWNhdGlvbnMnLCAnUE9TVCcsIHt9KTtcbn07XG5cbmNvbW1hbmRzLnVwZGF0ZVNldHRpbmdzID0gYXN5bmMgZnVuY3Rpb24gKHNldHRpbmdzKSB7XG4gIGF3YWl0IHRoaXMuc2V0dGluZ3MudXBkYXRlKHNldHRpbmdzKTtcbiAgYXdhaXQgdGhpcy51aWF1dG9tYXRvcjIuandwcm94eS5jb21tYW5kKCcvYXBwaXVtL3NldHRpbmdzJywgJ1BPU1QnLCB7c2V0dGluZ3N9KTtcbn07XG5cbmNvbW1hbmRzLmdldFNldHRpbmdzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICBjb25zdCBkcml2ZXJTZXR0aW5ncyA9IHRoaXMuc2V0dGluZ3MuZ2V0U2V0dGluZ3MoKTtcbiAgY29uc3Qgc2VydmVyU2V0dGluZ3MgPSBhd2FpdCB0aGlzLnVpYXV0b21hdG9yMi5qd3Byb3h5LmNvbW1hbmQoJy9hcHBpdW0vc2V0dGluZ3MnLCAnR0VUJyk7XG4gIHJldHVybiB7Li4uZHJpdmVyU2V0dGluZ3MsIC4uLnNlcnZlclNldHRpbmdzfTtcbn07XG5cbi8qKlxuICogT3ZlcnJpZGluZyBhcHBpdW0tYW5kcm9pZC1kcml2ZXIncyB3cmFwQm9vdHN0cmFwRGlzY29ubmVjdCxcbiAqIHVubGlrZSBpbiBhcHBpdW0tYW5kcm9pZC1kcml2ZXIgYXZvaWRpbmcgYWRiIHJlc3RhcnRpbmcgYXMgaXQgaW50ZXJuXG4gKiBraWxscyBVaUF1dG9tYXRvcjIgc2VydmVyIHJ1bm5pbmcgaW4gdGhlIGRldmljZS5cbiAqKi9cbmhlbHBlcnMud3JhcEJvb3RzdHJhcERpc2Nvbm5lY3QgPSBhc3luYyBmdW5jdGlvbiAod3JhcHBlZCkge1xuICBhd2FpdCB3cmFwcGVkKCk7XG59O1xuXG4vLyBTdG9wIHByb3h5aW5nIHRvIGFueSBDaHJvbWVkcml2ZXIgYW5kIHJlZGlyZWN0IHRvIHVpYXV0b21hdG9yMlxuaGVscGVycy5zdXNwZW5kQ2hyb21lZHJpdmVyUHJveHkgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuY2hyb21lZHJpdmVyID0gbnVsbDtcbiAgdGhpcy5wcm94eVJlcVJlcyA9IHRoaXMudWlhdXRvbWF0b3IyLnByb3h5UmVxUmVzLmJpbmQodGhpcy51aWF1dG9tYXRvcjIpO1xuICB0aGlzLnByb3h5Q29tbWFuZCA9IHRoaXMudWlhdXRvbWF0b3IyLnByb3h5Q29tbWFuZC5iaW5kKHRoaXMudWlhdXRvbWF0b3IyKTtcbiAgdGhpcy5qd3BQcm94eUFjdGl2ZSA9IHRydWU7XG59O1xuXG4vKipcbiAqIFRoZSBsaXN0IG9mIGF2YWlsYWJsZSBpbmZvIGVudHJpZXMgY2FuIGJlIGZvdW5kIGF0XG4gKiBodHRwczovL2dpdGh1Yi5jb20vYXBwaXVtL2FwcGl1bS11aWF1dG9tYXRvcjItc2VydmVyL2Jsb2IvbWFzdGVyL2FwcC9zcmMvbWFpbi9qYXZhL2lvL2FwcGl1bS91aWF1dG9tYXRvcjIvaGFuZGxlci9HZXREZXZpY2VJbmZvLmphdmFcbiAqL1xuY29tbWFuZHMubW9iaWxlR2V0RGV2aWNlSW5mbyA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZCgnL2FwcGl1bS9kZXZpY2UvaW5mbycsICdHRVQnKTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gVHlwaW5nT3B0aW9uc1xuICogQHByb3BlcnR5IHshc3RyaW5nfG51bWJlcnxib29sZWFufSB0ZXh0IC0gVGhlIHRleHQgdG8gdHlwZVxuICovXG5cbi8qKlxuICogVHlwZXMgdGhlIGdpdmVuIFVuaWNvZGUgc3RyaW5nLlxuICogSXQgaXMgZXhwZWN0ZWQgdGhhdCB0aGUgZm9jdXMgaXMgYWxyZWFkeSBwdXRcbiAqIHRvIHRoZSBkZXN0aW5hdGlvbiBpbnB1dCBmaWVsZCBiZWZvcmUgdGhpcyBtZXRob2QgaXMgY2FsbGVkLlxuICpcbiAqIEBwYXJhbSB7VHlwaW5nT3B0aW9uc30gb3B0c1xuICogQHJldHVybnMge2Jvb2xlYW59IGB0cnVlYCBpZiB0aGUgaW5wdXQgdGV4dCBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgc2VudCB0byBhZGJcbiAqIEB0aHJvd3Mge0Vycm9yfSBpZiBgdGV4dGAgcHJvcGVydHkgaGFzIG5vdCBiZWVuIHByb3ZpZGVkXG4gKi9cbmNvbW1hbmRzLm1vYmlsZVR5cGUgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVUeXBlIChvcHRzID0ge30pIHtcbiAgY29uc3Qge1xuICAgIHRleHQsXG4gIH0gPSBvcHRzO1xuICBpZiAoXy5pc1VuZGVmaW5lZCh0ZXh0KSkge1xuICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coYFRoZSAndGV4dCcgYXJndW1lbnQgaXMgbWFuZGF0b3J5YCk7XG4gIH1cbiAgcmV0dXJuIGF3YWl0IHRoaXMuYWRiLnR5cGVVbmljb2RlKHRleHQpO1xufTtcblxuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IEluc3RhbGxPcHRpb25zXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IGFsbG93VGVzdFBhY2thZ2VzIFtmYWxzZV0gLSBTZXQgdG8gdHJ1ZSBpbiBvcmRlciB0byBhbGxvdyB0ZXN0XG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrYWdlcyBpbnN0YWxsYXRpb24uXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IHVzZVNkY2FyZCBbZmFsc2VdIC0gU2V0IHRvIHRydWUgdG8gaW5zdGFsbCB0aGUgYXBwIG9uIHNkY2FyZFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RlYWQgb2YgdGhlIGRldmljZSBtZW1vcnkuXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IGdyYW50UGVybWlzc2lvbnMgW2ZhbHNlXSAtIFNldCB0byB0cnVlIGluIG9yZGVyIHRvIGdyYW50IGFsbCB0aGVcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVybWlzc2lvbnMgcmVxdWVzdGVkIGluIHRoZSBhcHBsaWNhdGlvbidzIG1hbmlmZXN0XG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9tYXRpY2FsbHkgYWZ0ZXIgdGhlIGluc3RhbGxhdGlvbiBpcyBjb21wbGV0ZWRcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZXIgQW5kcm9pZCA2Ky5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gcmVwbGFjZSBbdHJ1ZV0gLSBTZXQgaXQgdG8gZmFsc2UgaWYgeW91IGRvbid0IHdhbnRcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgYXBwbGljYXRpb24gdG8gYmUgdXBncmFkZWQvcmVpbnN0YWxsZWRcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBpdCBpcyBhbHJlYWR5IHByZXNlbnQgb24gdGhlIGRldmljZS5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gcGFydGlhbEluc3RhbGwgW2ZhbHNlXSAtIEluc3RhbGwgYXBrcyBwYXJ0aWFsbHkuIEl0IGlzIHVzZWQgZm9yICdpbnN0YWxsLW11bHRpcGxlJy5cbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHR0cHM6Ly9hbmRyb2lkLnN0YWNrZXhjaGFuZ2UuY29tL3F1ZXN0aW9ucy8xMTEwNjQvd2hhdC1pcy1hLXBhcnRpYWwtYXBwbGljYXRpb24taW5zdGFsbC12aWEtYWRiXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBJbnN0YWxsTXVsdGlwbGVBcGtzT3B0aW9uc1xuICogQHByb3BlcnR5IHtBcnJheTxzdHJpbmc+fSBhcGtzIC0gVGhlIGxpc3Qgb2YgQVBLcyB0byBpbnN0YWxsLiBFYWNoIEFQSyBzaG91bGQgYmUgYSBwYXRoIHRvIGEgYXBrXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciBkb3dubG9hZGFibGUgVVJMIGFzIEhUVFAvSFRUUFMuXG4gKiBAcHJvcGVydHkge0luc3RhbGxPcHRpb25zfSBvcHRpb25zXG4gKi9cblxuLyoqXG4gKiBJbnN0YWxsIG11bHRpcGxlIEFQS3Mgd2l0aCBgaW5zdGFsbC1tdWx0aXBsZWAgb3B0aW9uLlxuICpcbiAqIEBwYXJhbSB7SW5zdGFsbE11bHRpcGxlQXBrc09wdGlvbnN9IG9wdHNcbiAqIEB0aHJvd3Mge0Vycm9yfSBpZiBhbiBlcnJvciBvY2N1cmVkIHdoaWxlIGluc3RhbGxpbmcgdGhlIGdpdmVuIEFQS3MuXG4gKi9cbmNvbW1hbmRzLm1vYmlsZUluc3RhbGxNdWx0aXBsZUFwa3MgPSBhc3luYyBmdW5jdGlvbiAob3B0cyA9IHt9KSB7XG4gIGlmICghXy5pc0FycmF5KG9wdHMuYXBrcykgfHwgXy5pc0VtcHR5KG9wdHMuYXBrcykpIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRBcmd1bWVudEVycm9yKCdObyBhcGtzIGFyZSBnaXZlbiB0byBpbnN0YWxsJyk7XG4gIH1cbiAgY29uc3QgYXBrcyA9IGF3YWl0IEIuYWxsKG9wdHMuYXBrc1xuICAgIC5tYXAoKGFwcCkgPT4gdGhpcy5oZWxwZXJzLmNvbmZpZ3VyZUFwcChhcHAsIFtBUEtfRVhURU5TSU9OXSkpKTtcbiAgYXdhaXQgdGhpcy5hZGIuaW5zdGFsbE11bHRpcGxlQXBrcyhhcGtzLCBvcHRzLm9wdGlvbnMpO1xufTtcblxuT2JqZWN0LmFzc2lnbihleHRlbnNpb25zLCBjb21tYW5k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
187
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfYmx1ZWJpcmQiLCJfZHJpdmVyIiwiX2V4dGVuc2lvbnMiLCJleHRlbnNpb25zIiwiY29tbWFuZHMiLCJoZWxwZXJzIiwiZ2V0UGFnZVNvdXJjZSIsInVpYXV0b21hdG9yMiIsImp3cHJveHkiLCJjb21tYW5kIiwiZ2V0Q2xpcGJvYXJkIiwiYWRiIiwiZ2V0QXBpTGV2ZWwiLCJkb1NlbmRLZXlzIiwicGFyYW1zIiwia2V5ZXZlbnQiLCJrZXljb2RlIiwibWV0YXN0YXRlIiwibG9nIiwiZGVidWciLCJiYWNrIiwiZ2V0RGlzcGxheURlbnNpdHkiLCJnZXRXaW5kb3dTaXplIiwiZ2V0V2luZG93UmVjdCIsIndpZHRoIiwiaGVpZ2h0IiwieCIsInkiLCJleGVjdXRlTW9iaWxlIiwibW9iaWxlQ29tbWFuZCIsIm9wdHMiLCJtb2JpbGVDb21tYW5kc01hcHBpbmciLCJzaGVsbCIsImV4ZWNFbXVDb25zb2xlQ29tbWFuZCIsImRyYWdHZXN0dXJlIiwiZmxpbmdHZXN0dXJlIiwiZG91YmxlQ2xpY2tHZXN0dXJlIiwiY2xpY2tHZXN0dXJlIiwibG9uZ0NsaWNrR2VzdHVyZSIsInBpbmNoQ2xvc2VHZXN0dXJlIiwicGluY2hPcGVuR2VzdHVyZSIsInN3aXBlR2VzdHVyZSIsInNjcm9sbEdlc3R1cmUiLCJzY3JvbGxCYWNrVG8iLCJzY3JvbGwiLCJ2aWV3cG9ydFNjcmVlbnNob3QiLCJ2aWV3cG9ydFJlY3QiLCJkZWVwTGluayIsInN0YXJ0TG9nc0Jyb2FkY2FzdCIsInN0b3BMb2dzQnJvYWRjYXN0IiwiYWNjZXB0QWxlcnQiLCJkaXNtaXNzQWxlcnQiLCJiYXR0ZXJ5SW5mbyIsImRldmljZUluZm8iLCJnZXREZXZpY2VUaW1lIiwiY2hhbmdlUGVybWlzc2lvbnMiLCJnZXRQZXJtaXNzaW9ucyIsInBlcmZvcm1FZGl0b3JBY3Rpb24iLCJzdGFydFNjcmVlblN0cmVhbWluZyIsInN0b3BTY3JlZW5TdHJlYW1pbmciLCJnZXROb3RpZmljYXRpb25zIiwibGlzdFNtcyIsInR5cGUiLCJzZW5zb3JTZXQiLCJwdXNoRmlsZSIsInB1bGxGaWxlIiwicHVsbEZvbGRlciIsImRlbGV0ZUZpbGUiLCJpc0FwcEluc3RhbGxlZCIsInF1ZXJ5QXBwU3RhdGUiLCJhY3RpdmF0ZUFwcCIsInJlbW92ZUFwcCIsInRlcm1pbmF0ZUFwcCIsImluc3RhbGxBcHAiLCJjbGVhckFwcCIsInN0YXJ0QWN0aXZpdHkiLCJzdGFydFNlcnZpY2UiLCJzdG9wU2VydmljZSIsImJyb2FkY2FzdCIsImdldENvbnRleHRzIiwiZ2V0QXBwU3RyaW5ncyIsImluc3RhbGxNdWx0aXBsZUFwa3MiLCJsb2NrIiwidW5sb2NrIiwiaXNMb2NrZWQiLCJyZWZyZXNoR3BzQ2FjaGUiLCJzdGFydE1lZGlhUHJvamVjdGlvblJlY29yZGluZyIsImlzTWVkaWFQcm9qZWN0aW9uUmVjb3JkaW5nUnVubmluZyIsInN0b3BNZWRpYVByb2plY3Rpb25SZWNvcmRpbmciLCJnZXRDb25uZWN0aXZpdHkiLCJzZXRDb25uZWN0aXZpdHkiLCJoaWRlS2V5Ym9hcmQiLCJpc0tleWJvYXJkU2hvd24iLCJwcmVzc0tleSIsIl8iLCJoYXMiLCJlcnJvcnMiLCJVbmtub3duQ29tbWFuZEVycm9yIiwia2V5cyIsIm1vYmlsZVZpZXdwb3J0U2NyZWVuc2hvdCIsImdldFZpZXdwb3J0U2NyZWVuc2hvdCIsIm1vYmlsZVZpZXdQb3J0UmVjdCIsImdldFZpZXdQb3J0UmVjdCIsInNldFVybCIsInVybCIsInN0YXJ0VXJpIiwiYXBwUGFja2FnZSIsIm1vYmlsZURlZXBMaW5rIiwicGFja2FnZSIsInBrZyIsIndhaXRGb3JMYXVuY2giLCJvcGVuTm90aWZpY2F0aW9ucyIsInVwZGF0ZVNldHRpbmdzIiwic2V0dGluZ3MiLCJ1cGRhdGUiLCJnZXRTZXR0aW5ncyIsImRyaXZlclNldHRpbmdzIiwic2VydmVyU2V0dGluZ3MiLCJ3cmFwQm9vdHN0cmFwRGlzY29ubmVjdCIsIndyYXBwZWQiLCJzdXNwZW5kQ2hyb21lZHJpdmVyUHJveHkiLCJjaHJvbWVkcml2ZXIiLCJwcm94eVJlcVJlcyIsImJpbmQiLCJwcm94eUNvbW1hbmQiLCJqd3BQcm94eUFjdGl2ZSIsIm1vYmlsZUdldERldmljZUluZm8iLCJtb2JpbGVUeXBlIiwidGV4dCIsImlzVW5kZWZpbmVkIiwiZXJyb3JBbmRUaHJvdyIsInR5cGVVbmljb2RlIiwibW9iaWxlSW5zdGFsbE11bHRpcGxlQXBrcyIsImlzQXJyYXkiLCJhcGtzIiwiaXNFbXB0eSIsIkludmFsaWRBcmd1bWVudEVycm9yIiwiQiIsImFsbCIsIm1hcCIsImFwcCIsImNvbmZpZ3VyZUFwcCIsIkFQS19FWFRFTlNJT04iLCJvcHRpb25zIiwiT2JqZWN0IiwiYXNzaWduIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwiZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9jb21tYW5kcy9nZW5lcmFsLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5pbXBvcnQgeyBlcnJvcnMgfSBmcm9tICdhcHBpdW0vZHJpdmVyJztcbmltcG9ydCB7IEFQS19FWFRFTlNJT04gfSBmcm9tICcuLi9leHRlbnNpb25zJztcblxubGV0IGV4dGVuc2lvbnMgPSB7fSxcbiAgICBjb21tYW5kcyA9IHt9LFxuICAgIGhlbHBlcnMgPSB7fTtcblxuY29tbWFuZHMuZ2V0UGFnZVNvdXJjZSA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZCgnL3NvdXJjZScsICdHRVQnLCB7fSk7XG59O1xuXG5jb21tYW5kcy5nZXRDbGlwYm9hcmQgPSBhc3luYyBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAoYXdhaXQgdGhpcy5hZGIuZ2V0QXBpTGV2ZWwoKSA8IDI5KVxuICAgID8gKGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZCgnL2FwcGl1bS9kZXZpY2UvZ2V0X2NsaXBib2FyZCcsICdQT1NUJywge30pKVxuICAgIDogKGF3YWl0IHRoaXMuYWRiLmdldENsaXBib2FyZCgpKTtcbn07XG5cbi8vIE5lZWQgdG8gb3ZlcnJpZGUgdGhpcyBmb3IgY29ycmVjdCB1bmljb2RlIHN1cHBvcnRcbmNvbW1hbmRzLmRvU2VuZEtleXMgPSBhc3luYyBmdW5jdGlvbiAocGFyYW1zKSB7XG4gIGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZCgnL2tleXMnLCAnUE9TVCcsIHBhcmFtcyk7XG59O1xuXG4vLyB1aWF1dG9tYXRvcjIgZG9lc24ndCBzdXBwb3J0IG1ldGFzdGF0ZSBmb3Iga2V5ZXZlbnRzXG5jb21tYW5kcy5rZXlldmVudCA9IGFzeW5jIGZ1bmN0aW9uIChrZXljb2RlLCBtZXRhc3RhdGUpIHtcbiAgdGhpcy5sb2cuZGVidWcoYElnbm9yaW5nIG1ldGFzdGF0ZSAke21ldGFzdGF0ZX1gKTtcbiAgYXdhaXQgdGhpcy5hZGIua2V5ZXZlbnQoa2V5Y29kZSk7XG59O1xuXG4vLyBVc2UgQURCIHNpbmNlIHdlIGRvbid0IGhhdmUgVWlBdXRvbWF0b3JcbmNvbW1hbmRzLmJhY2sgPSBhc3luYyBmdW5jdGlvbiAoKSB7XG4gIGF3YWl0IHRoaXMuYWRiLmtleWV2ZW50KDQpO1xufTtcblxuY29tbWFuZHMuZ2V0RGlzcGxheURlbnNpdHkgPSBhc3luYyBmdW5jdGlvbiBnZXREaXNwbGF5RGVuc2l0eSAoKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLnVpYXV0b21hdG9yMi5qd3Byb3h5LmNvbW1hbmQoJy9hcHBpdW0vZGV2aWNlL2Rpc3BsYXlfZGVuc2l0eScsICdHRVQnLCB7fSk7XG59O1xuXG4vLyBtZW1vaXplZCBpbiBjb25zdHJ1Y3RvclxuY29tbWFuZHMuZ2V0V2luZG93U2l6ZSA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZCgnL3dpbmRvdy9jdXJyZW50L3NpemUnLCAnR0VUJywge30pO1xufTtcblxuLy8gRm9yIFczQ1xuY29tbWFuZHMuZ2V0V2luZG93UmVjdCA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgY29uc3Qge3dpZHRoLCBoZWlnaHR9ID0gYXdhaXQgdGhpcy5nZXRXaW5kb3dTaXplKCk7XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHg6IDAsXG4gICAgeTogMCxcbiAgfTtcbn07XG5cbmV4dGVuc2lvbnMuZXhlY3V0ZU1vYmlsZSA9IGFzeW5jIGZ1bmN0aW9uIChtb2JpbGVDb21tYW5kLCBvcHRzID0ge30pIHtcbiAgY29uc3QgbW9iaWxlQ29tbWFuZHNNYXBwaW5nID0ge1xuICAgIHNoZWxsOiAnbW9iaWxlU2hlbGwnLFxuXG4gICAgZXhlY0VtdUNvbnNvbGVDb21tYW5kOiAnbW9iaWxlRXhlY0VtdUNvbnNvbGVDb21tYW5kJyxcblxuICAgIGRyYWdHZXN0dXJlOiAnbW9iaWxlRHJhZ0dlc3R1cmUnLFxuICAgIGZsaW5nR2VzdHVyZTogJ21vYmlsZUZsaW5nR2VzdHVyZScsXG4gICAgZG91YmxlQ2xpY2tHZXN0dXJlOiAnbW9iaWxlRG91YmxlQ2xpY2tHZXN0dXJlJyxcbiAgICBjbGlja0dlc3R1cmU6ICdtb2JpbGVDbGlja0dlc3R1cmUnLFxuICAgIGxvbmdDbGlja0dlc3R1cmU6ICdtb2JpbGVMb25nQ2xpY2tHZXN0dXJlJyxcbiAgICBwaW5jaENsb3NlR2VzdHVyZTogJ21vYmlsZVBpbmNoQ2xvc2VHZXN0dXJlJyxcbiAgICBwaW5jaE9wZW5HZXN0dXJlOiAnbW9iaWxlUGluY2hPcGVuR2VzdHVyZScsXG4gICAgc3dpcGVHZXN0dXJlOiAnbW9iaWxlU3dpcGVHZXN0dXJlJyxcbiAgICBzY3JvbGxHZXN0dXJlOiAnbW9iaWxlU2Nyb2xsR2VzdHVyZScsXG4gICAgc2Nyb2xsQmFja1RvOiAnbW9iaWxlU2Nyb2xsQmFja1RvJyxcbiAgICBzY3JvbGw6ICdtb2JpbGVTY3JvbGwnLFxuICAgIHZpZXdwb3J0U2NyZWVuc2hvdDogJ21vYmlsZVZpZXdwb3J0U2NyZWVuc2hvdCcsXG4gICAgdmlld3BvcnRSZWN0OiAnbW9iaWxlVmlld1BvcnRSZWN0JyxcblxuICAgIGRlZXBMaW5rOiAnbW9iaWxlRGVlcExpbmsnLFxuXG4gICAgc3RhcnRMb2dzQnJvYWRjYXN0OiAnbW9iaWxlU3RhcnRMb2dzQnJvYWRjYXN0JyxcbiAgICBzdG9wTG9nc0Jyb2FkY2FzdDogJ21vYmlsZVN0b3BMb2dzQnJvYWRjYXN0JyxcblxuICAgIGFjY2VwdEFsZXJ0OiAnbW9iaWxlQWNjZXB0QWxlcnQnLFxuICAgIGRpc21pc3NBbGVydDogJ21vYmlsZURpc21pc3NBbGVydCcsXG5cbiAgICBiYXR0ZXJ5SW5mbzogJ21vYmlsZUdldEJhdHRlcnlJbmZvJyxcblxuICAgIGRldmljZUluZm86ICdtb2JpbGVHZXREZXZpY2VJbmZvJyxcblxuICAgIGdldERldmljZVRpbWU6ICdtb2JpbGVHZXREZXZpY2VUaW1lJyxcblxuICAgIGNoYW5nZVBlcm1pc3Npb25zOiAnbW9iaWxlQ2hhbmdlUGVybWlzc2lvbnMnLFxuICAgIGdldFBlcm1pc3Npb25zOiAnbW9iaWxlR2V0UGVybWlzc2lvbnMnLFxuXG4gICAgcGVyZm9ybUVkaXRvckFjdGlvbjogJ21vYmlsZVBlcmZvcm1FZGl0b3JBY3Rpb24nLFxuXG4gICAgc3RhcnRTY3JlZW5TdHJlYW1pbmc6ICdtb2JpbGVTdGFydFNjcmVlblN0cmVhbWluZycsXG4gICAgc3RvcFNjcmVlblN0cmVhbWluZzogJ21vYmlsZVN0b3BTY3JlZW5TdHJlYW1pbmcnLFxuXG4gICAgZ2V0Tm90aWZpY2F0aW9uczogJ21vYmlsZUdldE5vdGlmaWNhdGlvbnMnLFxuXG4gICAgbGlzdFNtczogJ21vYmlsZUxpc3RTbXMnLFxuXG4gICAgdHlwZTogJ21vYmlsZVR5cGUnLFxuICAgIHNlbnNvclNldDogJ3NlbnNvclNldCcsXG5cbiAgICBwdXNoRmlsZTogJ21vYmlsZVB1c2hGaWxlJyxcbiAgICBwdWxsRmlsZTogJ21vYmlsZVB1bGxGaWxlJyxcbiAgICBwdWxsRm9sZGVyOiAnbW9iaWxlUHVsbEZvbGRlcicsXG4gICAgZGVsZXRlRmlsZTogJ21vYmlsZURlbGV0ZUZpbGUnLFxuXG4gICAgaXNBcHBJbnN0YWxsZWQ6ICdtb2JpbGVJc0FwcEluc3RhbGxlZCcsXG4gICAgcXVlcnlBcHBTdGF0ZTogJ21vYmlsZVF1ZXJ5QXBwU3RhdGUnLFxuICAgIGFjdGl2YXRlQXBwOiAnbW9iaWxlQWN0aXZhdGVBcHAnLFxuICAgIHJlbW92ZUFwcDogJ21vYmlsZVJlbW92ZUFwcCcsXG4gICAgdGVybWluYXRlQXBwOiAnbW9iaWxlVGVybWluYXRlQXBwJyxcbiAgICBpbnN0YWxsQXBwOiAnbW9iaWxlSW5zdGFsbEFwcCcsXG4gICAgY2xlYXJBcHA6ICdtb2JpbGVDbGVhckFwcCcsXG5cbiAgICBzdGFydEFjdGl2aXR5OiAnbW9iaWxlU3RhcnRBY3Rpdml0eScsXG4gICAgc3RhcnRTZXJ2aWNlOiAnbW9iaWxlU3RhcnRTZXJ2aWNlJyxcbiAgICBzdG9wU2VydmljZTogJ21vYmlsZVN0b3BTZXJ2aWNlJyxcbiAgICBicm9hZGNhc3Q6ICdtb2JpbGVCcm9hZGNhc3QnLFxuXG4gICAgZ2V0Q29udGV4dHM6ICdtb2JpbGVHZXRDb250ZXh0cycsXG5cbiAgICBnZXRBcHBTdHJpbmdzOiAnbW9iaWxlR2V0QXBwU3RyaW5ncycsXG5cbiAgICBpbnN0YWxsTXVsdGlwbGVBcGtzOiAnbW9iaWxlSW5zdGFsbE11bHRpcGxlQXBrcycsXG5cbiAgICBsb2NrOiAnbG9jaycsXG4gICAgdW5sb2NrOiAnbW9iaWxlVW5sb2NrJyxcbiAgICBpc0xvY2tlZDogJ2lzTG9ja2VkJyxcblxuICAgIHJlZnJlc2hHcHNDYWNoZTogJ21vYmlsZVJlZnJlc2hHcHNDYWNoZScsXG5cbiAgICBzdGFydE1lZGlhUHJvamVjdGlvblJlY29yZGluZzogJ21vYmlsZVN0YXJ0TWVkaWFQcm9qZWN0aW9uUmVjb3JkaW5nJyxcbiAgICBpc01lZGlhUHJvamVjdGlvblJlY29yZGluZ1J1bm5pbmc6ICdtb2JpbGVJc01lZGlhUHJvamVjdGlvblJlY29yZGluZ1J1bm5pbmcnLFxuICAgIHN0b3BNZWRpYVByb2plY3Rpb25SZWNvcmRpbmc6ICdtb2JpbGVTdG9wTWVkaWFQcm9qZWN0aW9uUmVjb3JkaW5nJyxcblxuICAgIGdldENvbm5lY3Rpdml0eTogJ21vYmlsZUdldENvbm5lY3Rpdml0eScsXG4gICAgc2V0Q29ubmVjdGl2aXR5OiAnbW9iaWxlU2V0Q29ubmVjdGl2aXR5JyxcblxuICAgIGhpZGVLZXlib2FyZDogJ21vYmlsZUhpZGVLZXlib2FyZCcsXG4gICAgaXNLZXlib2FyZFNob3duOiAnaXNLZXlib2FyZFNob3duJyxcblxuICAgIHByZXNzS2V5OiAnbW9iaWxlUHJlc3NLZXknLFxuICB9O1xuXG4gIGlmICghXy5oYXMobW9iaWxlQ29tbWFuZHNNYXBwaW5nLCBtb2JpbGVDb21tYW5kKSkge1xuICAgIHRocm93IG5ldyBlcnJvcnMuVW5rbm93bkNvbW1hbmRFcnJvcihgVW5rbm93biBtb2JpbGUgY29tbWFuZCBcIiR7bW9iaWxlQ29tbWFuZH1cIi4gYCArXG4gICAgICBgT25seSAke18ua2V5cyhtb2JpbGVDb21tYW5kc01hcHBpbmcpfSBjb21tYW5kcyBhcmUgc3VwcG9ydGVkLmApO1xuICB9XG4gIHJldHVybiBhd2FpdCB0aGlzW21vYmlsZUNvbW1hbmRzTWFwcGluZ1ttb2JpbGVDb21tYW5kXV0ob3B0cyk7XG59O1xuXG5jb21tYW5kcy5tb2JpbGVWaWV3cG9ydFNjcmVlbnNob3QgPSBhc3luYyBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLmdldFZpZXdwb3J0U2NyZWVuc2hvdCgpO1xufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBSZWN0YW5nbGVcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBsZWZ0IC0gVGhlIGxlZnQgY29vcmRpbmF0ZSBvZiB0aGUgUmVjdGFuZ2xlLlxuICogQHByb3BlcnR5IHtudW1iZXJ9IHRvcCAtIFRoZSB0b3AgY29vcmRpbmF0ZSBvZiB0aGUgUmVjdGFuZ2xlLlxuICogQHByb3BlcnR5IHtudW1iZXJ9IHdpZHRoIC0gVGhlIHdpZHRoIG9mIFJlY3RhbmdsZS5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBoZWlnaHQgLSBUaGUgaGVpZ2h0IG9mIFJlY3RhbmdsZS5cbiAqL1xuXG4vKipcbiAqIFJldHVybnMgdGhlIHZpZXdwb3J0IGNvb3JkaW5hdGVzLlxuICogQHJldHVybnMge1JlY3RhbmdsZX0gVGhlIHZpZXdwb3J0IGNvb3JkaW5hdGVzLlxuICovXG5jb21tYW5kcy5tb2JpbGVWaWV3UG9ydFJlY3QgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVWaWV3UG9ydFJlY3QgKCkge1xuICByZXR1cm4gYXdhaXQgdGhpcy5nZXRWaWV3UG9ydFJlY3QoKTtcbn07XG5cbmNvbW1hbmRzLnNldFVybCA9IGFzeW5jIGZ1bmN0aW9uICh1cmwpIHtcbiAgYXdhaXQgdGhpcy5hZGIuc3RhcnRVcmkodXJsLCB0aGlzLm9wdHMuYXBwUGFja2FnZSk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IERlZXBMaW5rT3B0c1xuICogQHByb3BlcnR5IHshc3RyaW5nfSB1cmwgLSBUaGUgbmFtZSBvZiBVUkwgdG8gc3RhcnQuXG4gKiBAcHJvcGVydHkgeyFzdHJpbmd9IHBhY2thZ2UgLSBUaGUgbmFtZSBvZiB0aGUgcGFja2FnZSB0byBzdGFydCB0aGUgVVJJIHdpdGguXG4gKiBAcHJvcGVydHkgez9ib29sZWFufSB3YWl0Rm9yTGF1bmNoIFt0cnVlXSAtIGlmIGBmYWxzZWAgdGhlbiBhZGIgd29uJ3Qgd2FpdFxuICogZm9yIHRoZSBzdGFydGVkIGFjdGl2aXR5IHRvIHJldHVybiB0aGUgY29udHJvbFxuICovXG5cbi8qKlxuICogU3RhcnQgVVJMIHRoYXQgdGFrZSB1c2VycyBkaXJlY3RseSB0byBzcGVjaWZpYyBjb250ZW50IGluIHRoZSBhcHBcbiAqIEBwYXJhbSB7RGVlcExpbmtPcHRzfSBvcHRzXG4gKi9cbmNvbW1hbmRzLm1vYmlsZURlZXBMaW5rID0gYXN5bmMgZnVuY3Rpb24gKG9wdHMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgdXJsLFxuICAgIHBhY2thZ2U6IHBrZyxcbiAgICB3YWl0Rm9yTGF1bmNoLFxuICB9ID0gb3B0cztcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYWRiLnN0YXJ0VXJpKHVybCwgcGtnLCB7IHdhaXRGb3JMYXVuY2ggfSk7XG59O1xuXG5jb21tYW5kcy5vcGVuTm90aWZpY2F0aW9ucyA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZCgnL2FwcGl1bS9kZXZpY2Uvb3Blbl9ub3RpZmljYXRpb25zJywgJ1BPU1QnLCB7fSk7XG59O1xuXG5jb21tYW5kcy51cGRhdGVTZXR0aW5ncyA9IGFzeW5jIGZ1bmN0aW9uIChzZXR0aW5ncykge1xuICBhd2FpdCB0aGlzLnNldHRpbmdzLnVwZGF0ZShzZXR0aW5ncyk7XG4gIGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZCgnL2FwcGl1bS9zZXR0aW5ncycsICdQT1NUJywge3NldHRpbmdzfSk7XG59O1xuXG5jb21tYW5kcy5nZXRTZXR0aW5ncyA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgZHJpdmVyU2V0dGluZ3MgPSB0aGlzLnNldHRpbmdzLmdldFNldHRpbmdzKCk7XG4gIGNvbnN0IHNlcnZlclNldHRpbmdzID0gYXdhaXQgdGhpcy51aWF1dG9tYXRvcjIuandwcm94eS5jb21tYW5kKCcvYXBwaXVtL3NldHRpbmdzJywgJ0dFVCcpO1xuICByZXR1cm4gey4uLmRyaXZlclNldHRpbmdzLCAuLi5zZXJ2ZXJTZXR0aW5nc307XG59O1xuXG4vKipcbiAqIE92ZXJyaWRpbmcgYXBwaXVtLWFuZHJvaWQtZHJpdmVyJ3Mgd3JhcEJvb3RzdHJhcERpc2Nvbm5lY3QsXG4gKiB1bmxpa2UgaW4gYXBwaXVtLWFuZHJvaWQtZHJpdmVyIGF2b2lkaW5nIGFkYiByZXN0YXJ0aW5nIGFzIGl0IGludGVyblxuICoga2lsbHMgVWlBdXRvbWF0b3IyIHNlcnZlciBydW5uaW5nIGluIHRoZSBkZXZpY2UuXG4gKiovXG5oZWxwZXJzLndyYXBCb290c3RyYXBEaXNjb25uZWN0ID0gYXN5bmMgZnVuY3Rpb24gKHdyYXBwZWQpIHtcbiAgYXdhaXQgd3JhcHBlZCgpO1xufTtcblxuLy8gU3RvcCBwcm94eWluZyB0byBhbnkgQ2hyb21lZHJpdmVyIGFuZCByZWRpcmVjdCB0byB1aWF1dG9tYXRvcjJcbmhlbHBlcnMuc3VzcGVuZENocm9tZWRyaXZlclByb3h5ID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLmNocm9tZWRyaXZlciA9IG51bGw7XG4gIHRoaXMucHJveHlSZXFSZXMgPSB0aGlzLnVpYXV0b21hdG9yMi5wcm94eVJlcVJlcy5iaW5kKHRoaXMudWlhdXRvbWF0b3IyKTtcbiAgdGhpcy5wcm94eUNvbW1hbmQgPSB0aGlzLnVpYXV0b21hdG9yMi5wcm94eUNvbW1hbmQuYmluZCh0aGlzLnVpYXV0b21hdG9yMik7XG4gIHRoaXMuandwUHJveHlBY3RpdmUgPSB0cnVlO1xufTtcblxuLyoqXG4gKiBUaGUgbGlzdCBvZiBhdmFpbGFibGUgaW5mbyBlbnRyaWVzIGNhbiBiZSBmb3VuZCBhdFxuICogaHR0cHM6Ly9naXRodWIuY29tL2FwcGl1bS9hcHBpdW0tdWlhdXRvbWF0b3IyLXNlcnZlci9ibG9iL21hc3Rlci9hcHAvc3JjL21haW4vamF2YS9pby9hcHBpdW0vdWlhdXRvbWF0b3IyL2hhbmRsZXIvR2V0RGV2aWNlSW5mby5qYXZhXG4gKi9cbmNvbW1hbmRzLm1vYmlsZUdldERldmljZUluZm8gPSBhc3luYyBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLnVpYXV0b21hdG9yMi5qd3Byb3h5LmNvbW1hbmQoJy9hcHBpdW0vZGV2aWNlL2luZm8nLCAnR0VUJyk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFR5cGluZ09wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7IXN0cmluZ3xudW1iZXJ8Ym9vbGVhbn0gdGV4dCAtIFRoZSB0ZXh0IHRvIHR5cGVcbiAqL1xuXG4vKipcbiAqIFR5cGVzIHRoZSBnaXZlbiBVbmljb2RlIHN0cmluZy5cbiAqIEl0IGlzIGV4cGVjdGVkIHRoYXQgdGhlIGZvY3VzIGlzIGFscmVhZHkgcHV0XG4gKiB0byB0aGUgZGVzdGluYXRpb24gaW5wdXQgZmllbGQgYmVmb3JlIHRoaXMgbWV0aG9kIGlzIGNhbGxlZC5cbiAqXG4gKiBAcGFyYW0ge1R5cGluZ09wdGlvbnN9IG9wdHNcbiAqIEByZXR1cm5zIHtib29sZWFufSBgdHJ1ZWAgaWYgdGhlIGlucHV0IHRleHQgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IHNlbnQgdG8gYWRiXG4gKiBAdGhyb3dzIHtFcnJvcn0gaWYgYHRleHRgIHByb3BlcnR5IGhhcyBub3QgYmVlbiBwcm92aWRlZFxuICovXG5jb21tYW5kcy5tb2JpbGVUeXBlID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlVHlwZSAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICB0ZXh0LFxuICB9ID0gb3B0cztcbiAgaWYgKF8uaXNVbmRlZmluZWQodGV4dCkpIHtcbiAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KGBUaGUgJ3RleHQnIGFyZ3VtZW50IGlzIG1hbmRhdG9yeWApO1xuICB9XG4gIHJldHVybiBhd2FpdCB0aGlzLmFkYi50eXBlVW5pY29kZSh0ZXh0KTtcbn07XG5cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBJbnN0YWxsT3B0aW9uc1xuICogQHByb3BlcnR5IHtib29sZWFufSBhbGxvd1Rlc3RQYWNrYWdlcyBbZmFsc2VdIC0gU2V0IHRvIHRydWUgaW4gb3JkZXIgdG8gYWxsb3cgdGVzdFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFja2FnZXMgaW5zdGFsbGF0aW9uLlxuICogQHByb3BlcnR5IHtib29sZWFufSB1c2VTZGNhcmQgW2ZhbHNlXSAtIFNldCB0byB0cnVlIHRvIGluc3RhbGwgdGhlIGFwcCBvbiBzZGNhcmRcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0ZWFkIG9mIHRoZSBkZXZpY2UgbWVtb3J5LlxuICogQHByb3BlcnR5IHtib29sZWFufSBncmFudFBlcm1pc3Npb25zIFtmYWxzZV0gLSBTZXQgdG8gdHJ1ZSBpbiBvcmRlciB0byBncmFudCBhbGwgdGhlXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcm1pc3Npb25zIHJlcXVlc3RlZCBpbiB0aGUgYXBwbGljYXRpb24ncyBtYW5pZmVzdFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvbWF0aWNhbGx5IGFmdGVyIHRoZSBpbnN0YWxsYXRpb24gaXMgY29tcGxldGVkXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVyIEFuZHJvaWQgNisuXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IHJlcGxhY2UgW3RydWVdIC0gU2V0IGl0IHRvIGZhbHNlIGlmIHlvdSBkb24ndCB3YW50XG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGFwcGxpY2F0aW9uIHRvIGJlIHVwZ3JhZGVkL3JlaW5zdGFsbGVkXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXQgaXMgYWxyZWFkeSBwcmVzZW50IG9uIHRoZSBkZXZpY2UuXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IHBhcnRpYWxJbnN0YWxsIFtmYWxzZV0gLSBJbnN0YWxsIGFwa3MgcGFydGlhbGx5LiBJdCBpcyB1c2VkIGZvciAnaW5zdGFsbC1tdWx0aXBsZScuXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0dHBzOi8vYW5kcm9pZC5zdGFja2V4Y2hhbmdlLmNvbS9xdWVzdGlvbnMvMTExMDY0L3doYXQtaXMtYS1wYXJ0aWFsLWFwcGxpY2F0aW9uLWluc3RhbGwtdmlhLWFkYlxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gSW5zdGFsbE11bHRpcGxlQXBrc09wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7QXJyYXk8c3RyaW5nPn0gYXBrcyAtIFRoZSBsaXN0IG9mIEFQS3MgdG8gaW5zdGFsbC4gRWFjaCBBUEsgc2hvdWxkIGJlIGEgcGF0aCB0byBhIGFwa1xuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgZG93bmxvYWRhYmxlIFVSTCBhcyBIVFRQL0hUVFBTLlxuICogQHByb3BlcnR5IHtJbnN0YWxsT3B0aW9uc30gb3B0aW9uc1xuICovXG5cbi8qKlxuICogSW5zdGFsbCBtdWx0aXBsZSBBUEtzIHdpdGggYGluc3RhbGwtbXVsdGlwbGVgIG9wdGlvbi5cbiAqXG4gKiBAcGFyYW0ge0luc3RhbGxNdWx0aXBsZUFwa3NPcHRpb25zfSBvcHRzXG4gKiBAdGhyb3dzIHtFcnJvcn0gaWYgYW4gZXJyb3Igb2NjdXJlZCB3aGlsZSBpbnN0YWxsaW5nIHRoZSBnaXZlbiBBUEtzLlxuICovXG5jb21tYW5kcy5tb2JpbGVJbnN0YWxsTXVsdGlwbGVBcGtzID0gYXN5bmMgZnVuY3Rpb24gKG9wdHMgPSB7fSkge1xuICBpZiAoIV8uaXNBcnJheShvcHRzLmFwa3MpIHx8IF8uaXNFbXB0eShvcHRzLmFwa3MpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcignTm8gYXBrcyBhcmUgZ2l2ZW4gdG8gaW5zdGFsbCcpO1xuICB9XG4gIGNvbnN0IGFwa3MgPSBhd2FpdCBCLmFsbChvcHRzLmFwa3NcbiAgICAubWFwKChhcHApID0+IHRoaXMuaGVscGVycy5jb25maWd1cmVBcHAoYXBwLCBbQVBLX0VYVEVOU0lPTl0pKSk7XG4gIGF3YWl0IHRoaXMuYWRiLmluc3RhbGxNdWx0aXBsZUFwa3MoYXBrcywgb3B0cy5vcHRpb25zKTtcbn07XG5cbk9iamVjdC5hc3NpZ24oZXh0ZW5zaW9ucywgY29tbWFuZHMsIGhlbHBlcnMpO1xuXG5leHBvcnQgZGVmYXVsdCBleHRlbnNpb25zO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFNBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLE9BQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLFdBQUEsR0FBQUgsT0FBQTtBQUVBLElBQUlJLFVBQVUsR0FBRyxDQUFDLENBQUM7RUFDZkMsUUFBUSxHQUFHLENBQUMsQ0FBQztFQUNiQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO0FBRWhCRCxRQUFRLENBQUNFLGFBQWEsR0FBRyxrQkFBa0I7RUFDekMsT0FBTyxNQUFNLElBQUksQ0FBQ0MsWUFBWSxDQUFDQyxPQUFPLENBQUNDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3RFLENBQUM7QUFFREwsUUFBUSxDQUFDTSxZQUFZLEdBQUcsa0JBQWtCO0VBQ3hDLE9BQVEsT0FBTSxJQUFJLENBQUNDLEdBQUcsQ0FBQ0MsV0FBVyxFQUFFLElBQUcsRUFBRSxHQUNwQyxNQUFNLElBQUksQ0FBQ0wsWUFBWSxDQUFDQyxPQUFPLENBQUNDLE9BQU8sQ0FBQyw4QkFBOEIsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FDbkYsTUFBTSxJQUFJLENBQUNFLEdBQUcsQ0FBQ0QsWUFBWSxFQUFHO0FBQ3JDLENBQUM7QUFHRE4sUUFBUSxDQUFDUyxVQUFVLEdBQUcsZ0JBQWdCQyxNQUFNLEVBQUU7RUFDNUMsTUFBTSxJQUFJLENBQUNQLFlBQVksQ0FBQ0MsT0FBTyxDQUFDQyxPQUFPLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRUssTUFBTSxDQUFDO0FBQ2xFLENBQUM7QUFHRFYsUUFBUSxDQUFDVyxRQUFRLEdBQUcsZ0JBQWdCQyxP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
@@ -1 +1 @@
1
- {"version":3,"file":"general.js","names":["_lodash","_interopRequireDefault","require","_bluebird","_driver","_extensions","extensions","commands","helpers","getPageSource","uiautomator2","jwproxy","command","getClipboard","adb","getApiLevel","doSendKeys","params","keyevent","keycode","metastate","log","debug","back","getDisplayDensity","getWindowSize","getWindowRect","width","height","x","y","executeMobile","mobileCommand","opts","mobileCommandsMapping","shell","execEmuConsoleCommand","dragGesture","flingGesture","doubleClickGesture","clickGesture","longClickGesture","pinchCloseGesture","pinchOpenGesture","swipeGesture","scrollGesture","scrollBackTo","scroll","viewportScreenshot","viewportRect","deepLink","startLogsBroadcast","stopLogsBroadcast","acceptAlert","dismissAlert","batteryInfo","deviceInfo","getDeviceTime","changePermissions","getPermissions","performEditorAction","startScreenStreaming","stopScreenStreaming","getNotifications","listSms","type","sensorSet","pushFile","pullFile","pullFolder","deleteFile","isAppInstalled","queryAppState","activateApp","removeApp","terminateApp","installApp","clearApp","startActivity","startService","stopService","broadcast","getContexts","getAppStrings","installMultipleApks","unlock","refreshGpsCache","startMediaProjectionRecording","isMediaProjectionRecordingRunning","stopMediaProjectionRecording","getConnectivity","setConnectivity","hideKeyboard","isKeyboardShown","pressKey","_","has","errors","UnknownCommandError","keys","mobileViewportScreenshot","getViewportScreenshot","mobileViewPortRect","getViewPortRect","setUrl","url","startUri","appPackage","mobileDeepLink","package","pkg","waitForLaunch","openNotifications","updateSettings","settings","update","getSettings","driverSettings","serverSettings","wrapBootstrapDisconnect","wrapped","suspendChromedriverProxy","chromedriver","proxyReqRes","bind","proxyCommand","jwpProxyActive","mobileGetDeviceInfo","mobileType","text","isUndefined","errorAndThrow","typeUnicode","mobileInstallMultipleApks","isArray","apks","isEmpty","InvalidArgumentError","B","all","map","app","configureApp","APK_EXTENSION","options","Object","assign","_default","exports","default"],"sources":["../../../lib/commands/general.js"],"sourcesContent":["import _ from 'lodash';\nimport B from 'bluebird';\nimport { errors } from 'appium/driver';\nimport { APK_EXTENSION } from '../extensions';\n\nlet extensions = {},\n commands = {},\n helpers = {};\n\ncommands.getPageSource = async function () {\n return await this.uiautomator2.jwproxy.command('/source', 'GET', {});\n};\n\ncommands.getClipboard = async function () {\n return (await this.adb.getApiLevel() < 29)\n ? (await this.uiautomator2.jwproxy.command('/appium/device/get_clipboard', 'POST', {}))\n : (await this.adb.getClipboard());\n};\n\n// Need to override this for correct unicode support\ncommands.doSendKeys = async function (params) {\n await this.uiautomator2.jwproxy.command('/keys', 'POST', params);\n};\n\n// uiautomator2 doesn't support metastate for keyevents\ncommands.keyevent = async function (keycode, metastate) {\n this.log.debug(`Ignoring metastate ${metastate}`);\n await this.adb.keyevent(keycode);\n};\n\n// Use ADB since we don't have UiAutomator\ncommands.back = async function () {\n await this.adb.keyevent(4);\n};\n\ncommands.getDisplayDensity = async function getDisplayDensity () {\n return await this.uiautomator2.jwproxy.command('/appium/device/display_density', 'GET', {});\n};\n\n// memoized in constructor\ncommands.getWindowSize = async function () {\n return await this.uiautomator2.jwproxy.command('/window/current/size', 'GET', {});\n};\n\n// For W3C\ncommands.getWindowRect = async function () {\n const {width, height} = await this.getWindowSize();\n return {\n width,\n height,\n x: 0,\n y: 0,\n };\n};\n\nextensions.executeMobile = async function (mobileCommand, opts = {}) {\n const mobileCommandsMapping = {\n shell: 'mobileShell',\n\n execEmuConsoleCommand: 'mobileExecEmuConsoleCommand',\n\n dragGesture: 'mobileDragGesture',\n flingGesture: 'mobileFlingGesture',\n doubleClickGesture: 'mobileDoubleClickGesture',\n clickGesture: 'mobileClickGesture',\n longClickGesture: 'mobileLongClickGesture',\n pinchCloseGesture: 'mobilePinchCloseGesture',\n pinchOpenGesture: 'mobilePinchOpenGesture',\n swipeGesture: 'mobileSwipeGesture',\n scrollGesture: 'mobileScrollGesture',\n scrollBackTo: 'mobileScrollBackTo',\n scroll: 'mobileScroll',\n viewportScreenshot: 'mobileViewportScreenshot',\n viewportRect: 'mobileViewPortRect',\n\n deepLink: 'mobileDeepLink',\n\n startLogsBroadcast: 'mobileStartLogsBroadcast',\n stopLogsBroadcast: 'mobileStopLogsBroadcast',\n\n acceptAlert: 'mobileAcceptAlert',\n dismissAlert: 'mobileDismissAlert',\n\n batteryInfo: 'mobileGetBatteryInfo',\n\n deviceInfo: 'mobileGetDeviceInfo',\n\n getDeviceTime: 'mobileGetDeviceTime',\n\n changePermissions: 'mobileChangePermissions',\n getPermissions: 'mobileGetPermissions',\n\n performEditorAction: 'mobilePerformEditorAction',\n\n startScreenStreaming: 'mobileStartScreenStreaming',\n stopScreenStreaming: 'mobileStopScreenStreaming',\n\n getNotifications: 'mobileGetNotifications',\n\n listSms: 'mobileListSms',\n\n type: 'mobileType',\n sensorSet: 'sensorSet',\n\n pushFile: 'mobilePushFile',\n pullFile: 'mobilePullFile',\n pullFolder: 'mobilePullFolder',\n deleteFile: 'mobileDeleteFile',\n\n isAppInstalled: 'mobileIsAppInstalled',\n queryAppState: 'mobileQueryAppState',\n activateApp: 'mobileActivateApp',\n removeApp: 'mobileRemoveApp',\n terminateApp: 'mobileTerminateApp',\n installApp: 'mobileInstallApp',\n clearApp: 'mobileClearApp',\n\n startActivity: 'mobileStartActivity',\n startService: 'mobileStartService',\n stopService: 'mobileStopService',\n broadcast: 'mobileBroadcast',\n\n getContexts: 'mobileGetContexts',\n\n getAppStrings: 'mobileGetAppStrings',\n\n installMultipleApks: 'mobileInstallMultipleApks',\n\n unlock: 'mobileUnlock',\n\n refreshGpsCache: 'mobileRefreshGpsCache',\n\n startMediaProjectionRecording: 'mobileStartMediaProjectionRecording',\n isMediaProjectionRecordingRunning: 'mobileIsMediaProjectionRecordingRunning',\n stopMediaProjectionRecording: 'mobileStopMediaProjectionRecording',\n\n getConnectivity: 'mobileGetConnectivity',\n setConnectivity: 'mobileSetConnectivity',\n\n hideKeyboard: 'mobileHideKeyboard',\n isKeyboardShown: 'isKeyboardShown',\n\n pressKey: 'mobilePressKey',\n };\n\n if (!_.has(mobileCommandsMapping, mobileCommand)) {\n throw new errors.UnknownCommandError(`Unknown mobile command \"${mobileCommand}\". ` +\n `Only ${_.keys(mobileCommandsMapping)} commands are supported.`);\n }\n return await this[mobileCommandsMapping[mobileCommand]](opts);\n};\n\ncommands.mobileViewportScreenshot = async function () {\n return await this.getViewportScreenshot();\n};\n\n/**\n * @typedef {object} Rectangle\n * @property {number} left - The left coordinate of the Rectangle.\n * @property {number} top - The top coordinate of the Rectangle.\n * @property {number} width - The width of Rectangle.\n * @property {number} height - The height of Rectangle.\n */\n\n/**\n * Returns the viewport coordinates.\n * @returns {Rectangle} The viewport coordinates.\n */\ncommands.mobileViewPortRect = async function mobileViewPortRect () {\n return await this.getViewPortRect();\n};\n\ncommands.setUrl = async function (url) {\n await this.adb.startUri(url, this.opts.appPackage);\n};\n\n/**\n * @typedef {object} DeepLinkOpts\n * @property {!string} url - The name of URL to start.\n * @property {!string} package - The name of the package to start the URI with.\n * @property {?boolean} waitForLaunch [true] - if `false` then adb won't wait\n * for the started activity to return the control\n */\n\n/**\n * Start URL that take users directly to specific content in the app\n * @param {DeepLinkOpts} opts\n */\ncommands.mobileDeepLink = async function (opts = {}) {\n const {\n url,\n package: pkg,\n waitForLaunch,\n } = opts;\n return await this.adb.startUri(url, pkg, { waitForLaunch });\n};\n\ncommands.openNotifications = async function () {\n return await this.uiautomator2.jwproxy.command('/appium/device/open_notifications', 'POST', {});\n};\n\ncommands.updateSettings = async function (settings) {\n await this.settings.update(settings);\n await this.uiautomator2.jwproxy.command('/appium/settings', 'POST', {settings});\n};\n\ncommands.getSettings = async function () {\n const driverSettings = this.settings.getSettings();\n const serverSettings = await this.uiautomator2.jwproxy.command('/appium/settings', 'GET');\n return {...driverSettings, ...serverSettings};\n};\n\n/**\n * Overriding appium-android-driver's wrapBootstrapDisconnect,\n * unlike in appium-android-driver avoiding adb restarting as it intern\n * kills UiAutomator2 server running in the device.\n **/\nhelpers.wrapBootstrapDisconnect = async function (wrapped) {\n await wrapped();\n};\n\n// Stop proxying to any Chromedriver and redirect to uiautomator2\nhelpers.suspendChromedriverProxy = function () {\n this.chromedriver = null;\n this.proxyReqRes = this.uiautomator2.proxyReqRes.bind(this.uiautomator2);\n this.proxyCommand = this.uiautomator2.proxyCommand.bind(this.uiautomator2);\n this.jwpProxyActive = true;\n};\n\n/**\n * The list of available info entries can be found at\n * https://github.com/appium/appium-uiautomator2-server/blob/master/app/src/main/java/io/appium/uiautomator2/handler/GetDeviceInfo.java\n */\ncommands.mobileGetDeviceInfo = async function () {\n return await this.uiautomator2.jwproxy.command('/appium/device/info', 'GET');\n};\n\n/**\n * @typedef {Object} TypingOptions\n * @property {!string|number|boolean} text - The text to type\n */\n\n/**\n * Types the given Unicode string.\n * It is expected that the focus is already put\n * to the destination input field before this method is called.\n *\n * @param {TypingOptions} opts\n * @returns {boolean} `true` if the input text has been successfully sent to adb\n * @throws {Error} if `text` property has not been provided\n */\ncommands.mobileType = async function mobileType (opts = {}) {\n const {\n text,\n } = opts;\n if (_.isUndefined(text)) {\n this.log.errorAndThrow(`The 'text' argument is mandatory`);\n }\n return await this.adb.typeUnicode(text);\n};\n\n\n/**\n * @typedef {Object} InstallOptions\n * @property {boolean} allowTestPackages [false] - Set to true in order to allow test\n * packages installation.\n * @property {boolean} useSdcard [false] - Set to true to install the app on sdcard\n * instead of the device memory.\n * @property {boolean} grantPermissions [false] - Set to true in order to grant all the\n * permissions requested in the application's manifest\n * automatically after the installation is completed\n * under Android 6+.\n * @property {boolean} replace [true] - Set it to false if you don't want\n * the application to be upgraded/reinstalled\n * if it is already present on the device.\n * @property {boolean} partialInstall [false] - Install apks partially. It is used for 'install-multiple'.\n * https://android.stackexchange.com/questions/111064/what-is-a-partial-application-install-via-adb\n */\n\n/**\n * @typedef {Object} InstallMultipleApksOptions\n * @property {Array<string>} apks - The list of APKs to install. Each APK should be a path to a apk\n * or downloadable URL as HTTP/HTTPS.\n * @property {InstallOptions} options\n */\n\n/**\n * Install multiple APKs with `install-multiple` option.\n *\n * @param {InstallMultipleApksOptions} opts\n * @throws {Error} if an error occured while installing the given APKs.\n */\ncommands.mobileInstallMultipleApks = async function (opts = {}) {\n if (!_.isArray(opts.apks) || _.isEmpty(opts.apks)) {\n throw new errors.InvalidArgumentError('No apks are given to install');\n }\n const apks = await B.all(opts.apks\n .map((app) => this.helpers.configureApp(app, [APK_EXTENSION])));\n await this.adb.installMultipleApks(apks, opts.options);\n};\n\nObject.assign(extensions, commands, helpers);\n\nexport default extensions;\n"],"mappings":"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"}
1
+ {"version":3,"file":"general.js","names":["_lodash","_interopRequireDefault","require","_bluebird","_driver","_extensions","extensions","commands","helpers","getPageSource","uiautomator2","jwproxy","command","getClipboard","adb","getApiLevel","doSendKeys","params","keyevent","keycode","metastate","log","debug","back","getDisplayDensity","getWindowSize","getWindowRect","width","height","x","y","executeMobile","mobileCommand","opts","mobileCommandsMapping","shell","execEmuConsoleCommand","dragGesture","flingGesture","doubleClickGesture","clickGesture","longClickGesture","pinchCloseGesture","pinchOpenGesture","swipeGesture","scrollGesture","scrollBackTo","scroll","viewportScreenshot","viewportRect","deepLink","startLogsBroadcast","stopLogsBroadcast","acceptAlert","dismissAlert","batteryInfo","deviceInfo","getDeviceTime","changePermissions","getPermissions","performEditorAction","startScreenStreaming","stopScreenStreaming","getNotifications","listSms","type","sensorSet","pushFile","pullFile","pullFolder","deleteFile","isAppInstalled","queryAppState","activateApp","removeApp","terminateApp","installApp","clearApp","startActivity","startService","stopService","broadcast","getContexts","getAppStrings","installMultipleApks","lock","unlock","isLocked","refreshGpsCache","startMediaProjectionRecording","isMediaProjectionRecordingRunning","stopMediaProjectionRecording","getConnectivity","setConnectivity","hideKeyboard","isKeyboardShown","pressKey","_","has","errors","UnknownCommandError","keys","mobileViewportScreenshot","getViewportScreenshot","mobileViewPortRect","getViewPortRect","setUrl","url","startUri","appPackage","mobileDeepLink","package","pkg","waitForLaunch","openNotifications","updateSettings","settings","update","getSettings","driverSettings","serverSettings","wrapBootstrapDisconnect","wrapped","suspendChromedriverProxy","chromedriver","proxyReqRes","bind","proxyCommand","jwpProxyActive","mobileGetDeviceInfo","mobileType","text","isUndefined","errorAndThrow","typeUnicode","mobileInstallMultipleApks","isArray","apks","isEmpty","InvalidArgumentError","B","all","map","app","configureApp","APK_EXTENSION","options","Object","assign","_default","exports","default"],"sources":["../../../lib/commands/general.js"],"sourcesContent":["import _ from 'lodash';\nimport B from 'bluebird';\nimport { errors } from 'appium/driver';\nimport { APK_EXTENSION } from '../extensions';\n\nlet extensions = {},\n commands = {},\n helpers = {};\n\ncommands.getPageSource = async function () {\n return await this.uiautomator2.jwproxy.command('/source', 'GET', {});\n};\n\ncommands.getClipboard = async function () {\n return (await this.adb.getApiLevel() < 29)\n ? (await this.uiautomator2.jwproxy.command('/appium/device/get_clipboard', 'POST', {}))\n : (await this.adb.getClipboard());\n};\n\n// Need to override this for correct unicode support\ncommands.doSendKeys = async function (params) {\n await this.uiautomator2.jwproxy.command('/keys', 'POST', params);\n};\n\n// uiautomator2 doesn't support metastate for keyevents\ncommands.keyevent = async function (keycode, metastate) {\n this.log.debug(`Ignoring metastate ${metastate}`);\n await this.adb.keyevent(keycode);\n};\n\n// Use ADB since we don't have UiAutomator\ncommands.back = async function () {\n await this.adb.keyevent(4);\n};\n\ncommands.getDisplayDensity = async function getDisplayDensity () {\n return await this.uiautomator2.jwproxy.command('/appium/device/display_density', 'GET', {});\n};\n\n// memoized in constructor\ncommands.getWindowSize = async function () {\n return await this.uiautomator2.jwproxy.command('/window/current/size', 'GET', {});\n};\n\n// For W3C\ncommands.getWindowRect = async function () {\n const {width, height} = await this.getWindowSize();\n return {\n width,\n height,\n x: 0,\n y: 0,\n };\n};\n\nextensions.executeMobile = async function (mobileCommand, opts = {}) {\n const mobileCommandsMapping = {\n shell: 'mobileShell',\n\n execEmuConsoleCommand: 'mobileExecEmuConsoleCommand',\n\n dragGesture: 'mobileDragGesture',\n flingGesture: 'mobileFlingGesture',\n doubleClickGesture: 'mobileDoubleClickGesture',\n clickGesture: 'mobileClickGesture',\n longClickGesture: 'mobileLongClickGesture',\n pinchCloseGesture: 'mobilePinchCloseGesture',\n pinchOpenGesture: 'mobilePinchOpenGesture',\n swipeGesture: 'mobileSwipeGesture',\n scrollGesture: 'mobileScrollGesture',\n scrollBackTo: 'mobileScrollBackTo',\n scroll: 'mobileScroll',\n viewportScreenshot: 'mobileViewportScreenshot',\n viewportRect: 'mobileViewPortRect',\n\n deepLink: 'mobileDeepLink',\n\n startLogsBroadcast: 'mobileStartLogsBroadcast',\n stopLogsBroadcast: 'mobileStopLogsBroadcast',\n\n acceptAlert: 'mobileAcceptAlert',\n dismissAlert: 'mobileDismissAlert',\n\n batteryInfo: 'mobileGetBatteryInfo',\n\n deviceInfo: 'mobileGetDeviceInfo',\n\n getDeviceTime: 'mobileGetDeviceTime',\n\n changePermissions: 'mobileChangePermissions',\n getPermissions: 'mobileGetPermissions',\n\n performEditorAction: 'mobilePerformEditorAction',\n\n startScreenStreaming: 'mobileStartScreenStreaming',\n stopScreenStreaming: 'mobileStopScreenStreaming',\n\n getNotifications: 'mobileGetNotifications',\n\n listSms: 'mobileListSms',\n\n type: 'mobileType',\n sensorSet: 'sensorSet',\n\n pushFile: 'mobilePushFile',\n pullFile: 'mobilePullFile',\n pullFolder: 'mobilePullFolder',\n deleteFile: 'mobileDeleteFile',\n\n isAppInstalled: 'mobileIsAppInstalled',\n queryAppState: 'mobileQueryAppState',\n activateApp: 'mobileActivateApp',\n removeApp: 'mobileRemoveApp',\n terminateApp: 'mobileTerminateApp',\n installApp: 'mobileInstallApp',\n clearApp: 'mobileClearApp',\n\n startActivity: 'mobileStartActivity',\n startService: 'mobileStartService',\n stopService: 'mobileStopService',\n broadcast: 'mobileBroadcast',\n\n getContexts: 'mobileGetContexts',\n\n getAppStrings: 'mobileGetAppStrings',\n\n installMultipleApks: 'mobileInstallMultipleApks',\n\n lock: 'lock',\n unlock: 'mobileUnlock',\n isLocked: 'isLocked',\n\n refreshGpsCache: 'mobileRefreshGpsCache',\n\n startMediaProjectionRecording: 'mobileStartMediaProjectionRecording',\n isMediaProjectionRecordingRunning: 'mobileIsMediaProjectionRecordingRunning',\n stopMediaProjectionRecording: 'mobileStopMediaProjectionRecording',\n\n getConnectivity: 'mobileGetConnectivity',\n setConnectivity: 'mobileSetConnectivity',\n\n hideKeyboard: 'mobileHideKeyboard',\n isKeyboardShown: 'isKeyboardShown',\n\n pressKey: 'mobilePressKey',\n };\n\n if (!_.has(mobileCommandsMapping, mobileCommand)) {\n throw new errors.UnknownCommandError(`Unknown mobile command \"${mobileCommand}\". ` +\n `Only ${_.keys(mobileCommandsMapping)} commands are supported.`);\n }\n return await this[mobileCommandsMapping[mobileCommand]](opts);\n};\n\ncommands.mobileViewportScreenshot = async function () {\n return await this.getViewportScreenshot();\n};\n\n/**\n * @typedef {object} Rectangle\n * @property {number} left - The left coordinate of the Rectangle.\n * @property {number} top - The top coordinate of the Rectangle.\n * @property {number} width - The width of Rectangle.\n * @property {number} height - The height of Rectangle.\n */\n\n/**\n * Returns the viewport coordinates.\n * @returns {Rectangle} The viewport coordinates.\n */\ncommands.mobileViewPortRect = async function mobileViewPortRect () {\n return await this.getViewPortRect();\n};\n\ncommands.setUrl = async function (url) {\n await this.adb.startUri(url, this.opts.appPackage);\n};\n\n/**\n * @typedef {object} DeepLinkOpts\n * @property {!string} url - The name of URL to start.\n * @property {!string} package - The name of the package to start the URI with.\n * @property {?boolean} waitForLaunch [true] - if `false` then adb won't wait\n * for the started activity to return the control\n */\n\n/**\n * Start URL that take users directly to specific content in the app\n * @param {DeepLinkOpts} opts\n */\ncommands.mobileDeepLink = async function (opts = {}) {\n const {\n url,\n package: pkg,\n waitForLaunch,\n } = opts;\n return await this.adb.startUri(url, pkg, { waitForLaunch });\n};\n\ncommands.openNotifications = async function () {\n return await this.uiautomator2.jwproxy.command('/appium/device/open_notifications', 'POST', {});\n};\n\ncommands.updateSettings = async function (settings) {\n await this.settings.update(settings);\n await this.uiautomator2.jwproxy.command('/appium/settings', 'POST', {settings});\n};\n\ncommands.getSettings = async function () {\n const driverSettings = this.settings.getSettings();\n const serverSettings = await this.uiautomator2.jwproxy.command('/appium/settings', 'GET');\n return {...driverSettings, ...serverSettings};\n};\n\n/**\n * Overriding appium-android-driver's wrapBootstrapDisconnect,\n * unlike in appium-android-driver avoiding adb restarting as it intern\n * kills UiAutomator2 server running in the device.\n **/\nhelpers.wrapBootstrapDisconnect = async function (wrapped) {\n await wrapped();\n};\n\n// Stop proxying to any Chromedriver and redirect to uiautomator2\nhelpers.suspendChromedriverProxy = function () {\n this.chromedriver = null;\n this.proxyReqRes = this.uiautomator2.proxyReqRes.bind(this.uiautomator2);\n this.proxyCommand = this.uiautomator2.proxyCommand.bind(this.uiautomator2);\n this.jwpProxyActive = true;\n};\n\n/**\n * The list of available info entries can be found at\n * https://github.com/appium/appium-uiautomator2-server/blob/master/app/src/main/java/io/appium/uiautomator2/handler/GetDeviceInfo.java\n */\ncommands.mobileGetDeviceInfo = async function () {\n return await this.uiautomator2.jwproxy.command('/appium/device/info', 'GET');\n};\n\n/**\n * @typedef {Object} TypingOptions\n * @property {!string|number|boolean} text - The text to type\n */\n\n/**\n * Types the given Unicode string.\n * It is expected that the focus is already put\n * to the destination input field before this method is called.\n *\n * @param {TypingOptions} opts\n * @returns {boolean} `true` if the input text has been successfully sent to adb\n * @throws {Error} if `text` property has not been provided\n */\ncommands.mobileType = async function mobileType (opts = {}) {\n const {\n text,\n } = opts;\n if (_.isUndefined(text)) {\n this.log.errorAndThrow(`The 'text' argument is mandatory`);\n }\n return await this.adb.typeUnicode(text);\n};\n\n\n/**\n * @typedef {Object} InstallOptions\n * @property {boolean} allowTestPackages [false] - Set to true in order to allow test\n * packages installation.\n * @property {boolean} useSdcard [false] - Set to true to install the app on sdcard\n * instead of the device memory.\n * @property {boolean} grantPermissions [false] - Set to true in order to grant all the\n * permissions requested in the application's manifest\n * automatically after the installation is completed\n * under Android 6+.\n * @property {boolean} replace [true] - Set it to false if you don't want\n * the application to be upgraded/reinstalled\n * if it is already present on the device.\n * @property {boolean} partialInstall [false] - Install apks partially. It is used for 'install-multiple'.\n * https://android.stackexchange.com/questions/111064/what-is-a-partial-application-install-via-adb\n */\n\n/**\n * @typedef {Object} InstallMultipleApksOptions\n * @property {Array<string>} apks - The list of APKs to install. Each APK should be a path to a apk\n * or downloadable URL as HTTP/HTTPS.\n * @property {InstallOptions} options\n */\n\n/**\n * Install multiple APKs with `install-multiple` option.\n *\n * @param {InstallMultipleApksOptions} opts\n * @throws {Error} if an error occured while installing the given APKs.\n */\ncommands.mobileInstallMultipleApks = async function (opts = {}) {\n if (!_.isArray(opts.apks) || _.isEmpty(opts.apks)) {\n throw new errors.InvalidArgumentError('No apks are given to install');\n }\n const apks = await B.all(opts.apks\n .map((app) => this.helpers.configureApp(app, [APK_EXTENSION])));\n await this.adb.installMultipleApks(apks, opts.options);\n};\n\nObject.assign(extensions, commands, helpers);\n\nexport default extensions;\n"],"mappings":"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"}
@@ -126,7 +126,9 @@ extensions.executeMobile = async function (mobileCommand, opts = {}) {
126
126
 
127
127
  installMultipleApks: 'mobileInstallMultipleApks',
128
128
 
129
+ lock: 'lock',
129
130
  unlock: 'mobileUnlock',
131
+ isLocked: 'isLocked',
130
132
 
131
133
  refreshGpsCache: 'mobileRefreshGpsCache',
132
134
 
@@ -1,17 +1,17 @@
1
1
  {
2
2
  "name": "appium-uiautomator2-driver",
3
- "version": "2.17.0",
3
+ "version": "2.18.0",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "appium-uiautomator2-driver",
9
- "version": "2.17.0",
9
+ "version": "2.18.0",
10
10
  "license": "Apache-2.0",
11
11
  "dependencies": {
12
12
  "@babel/runtime": "^7.0.0",
13
13
  "appium-adb": "^9.11.0",
14
- "appium-android-driver": "^5.10.0",
14
+ "appium-android-driver": "^5.10.4",
15
15
  "appium-chromedriver": "^5.3.1",
16
16
  "appium-uiautomator2-server": "^5.7.2",
17
17
  "asyncbox": "^2.3.1",
@@ -1269,7 +1269,7 @@
1269
1269
  }
1270
1270
  },
1271
1271
  "node_modules/appium-android-driver": {
1272
- "version": "5.10.1",
1272
+ "version": "5.10.4",
1273
1273
  "license": "Apache-2.0",
1274
1274
  "dependencies": {
1275
1275
  "@babel/runtime": "^7.0.0",
package/package.json CHANGED
@@ -7,7 +7,7 @@
7
7
  "automated testing",
8
8
  "android"
9
9
  ],
10
- "version": "2.17.0",
10
+ "version": "2.18.0",
11
11
  "author": "Appium Contributors",
12
12
  "license": "Apache-2.0",
13
13
  "repository": {
@@ -58,7 +58,7 @@
58
58
  "dependencies": {
59
59
  "@babel/runtime": "^7.0.0",
60
60
  "appium-adb": "^9.11.0",
61
- "appium-android-driver": "^5.10.0",
61
+ "appium-android-driver": "^5.10.4",
62
62
  "appium-chromedriver": "^5.3.1",
63
63
  "appium-uiautomator2-server": "^5.7.2",
64
64
  "asyncbox": "^2.3.1",