appium-xcuitest-driver 4.17.0 → 4.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 +14 -0
- package/build/index.js +1 -1
- package/build/lib/app-utils.js +1 -1
- package/build/lib/app-utils.js.map +1 -1
- package/build/lib/build-wda.js +1 -1
- package/build/lib/build-wda.js.map +1 -1
- package/build/lib/commands/activeAppInfo.js +1 -1
- package/build/lib/commands/activeAppInfo.js.map +1 -1
- package/build/lib/commands/alert.js +1 -1
- package/build/lib/commands/alert.js.map +1 -1
- package/build/lib/commands/app-management.js +1 -1
- package/build/lib/commands/app-management.js.map +1 -1
- package/build/lib/commands/appearance.js +1 -1
- package/build/lib/commands/appearance.js.map +1 -1
- package/build/lib/commands/battery.js +1 -1
- package/build/lib/commands/battery.js.map +1 -1
- package/build/lib/commands/biometric.js +1 -1
- package/build/lib/commands/biometric.js.map +1 -1
- package/build/lib/commands/certificate.js +1 -1
- package/build/lib/commands/certificate.js.map +1 -1
- package/build/lib/commands/clipboard.js +1 -1
- package/build/lib/commands/clipboard.js.map +1 -1
- package/build/lib/commands/condition.js +1 -1
- package/build/lib/commands/condition.js.map +1 -1
- package/build/lib/commands/context.js +1 -1
- package/build/lib/commands/context.js.map +1 -1
- package/build/lib/commands/cookies.js +1 -1
- package/build/lib/commands/cookies.js.map +1 -1
- package/build/lib/commands/deviceInfo.js +1 -1
- package/build/lib/commands/deviceInfo.js.map +1 -1
- package/build/lib/commands/element.js +1 -1
- package/build/lib/commands/element.js.map +1 -1
- package/build/lib/commands/execute.js +5 -2
- package/build/lib/commands/execute.js.map +1 -1
- package/build/lib/commands/file-movement.js +1 -1
- package/build/lib/commands/file-movement.js.map +1 -1
- package/build/lib/commands/find.js +1 -1
- package/build/lib/commands/find.js.map +1 -1
- package/build/lib/commands/general.js +1 -1
- package/build/lib/commands/general.js.map +1 -1
- package/build/lib/commands/geolocation.js +29 -0
- package/build/lib/commands/geolocation.js.map +1 -0
- package/build/lib/commands/gesture.js +1 -1
- package/build/lib/commands/gesture.js.map +1 -1
- package/build/lib/commands/index.js +3 -2
- package/build/lib/commands/index.js.map +1 -1
- package/build/lib/commands/iohid.js +1 -1
- package/build/lib/commands/iohid.js.map +1 -1
- package/build/lib/commands/keychains.js +1 -1
- package/build/lib/commands/keychains.js.map +1 -1
- package/build/lib/commands/localization.js +1 -1
- package/build/lib/commands/localization.js.map +1 -1
- package/build/lib/commands/location.js +1 -1
- package/build/lib/commands/location.js.map +1 -1
- package/build/lib/commands/lock.js +1 -1
- package/build/lib/commands/lock.js.map +1 -1
- package/build/lib/commands/log.js +1 -1
- package/build/lib/commands/log.js.map +1 -1
- package/build/lib/commands/navigation.js +1 -1
- package/build/lib/commands/navigation.js.map +1 -1
- package/build/lib/commands/notifications.js +1 -1
- package/build/lib/commands/notifications.js.map +1 -1
- package/build/lib/commands/pasteboard.js +1 -1
- package/build/lib/commands/pasteboard.js.map +1 -1
- package/build/lib/commands/pcap.js +1 -1
- package/build/lib/commands/pcap.js.map +1 -1
- package/build/lib/commands/performance.js +1 -1
- package/build/lib/commands/performance.js.map +1 -1
- package/build/lib/commands/permissions.js +1 -1
- package/build/lib/commands/permissions.js.map +1 -1
- package/build/lib/commands/proxy-helper.js +1 -1
- package/build/lib/commands/proxy-helper.js.map +1 -1
- package/build/lib/commands/record-audio.js +1 -1
- package/build/lib/commands/record-audio.js.map +1 -1
- package/build/lib/commands/recordscreen.js +1 -1
- package/build/lib/commands/recordscreen.js.map +1 -1
- package/build/lib/commands/screenshots.js +1 -1
- package/build/lib/commands/screenshots.js.map +1 -1
- package/build/lib/commands/source.js +1 -1
- package/build/lib/commands/source.js.map +1 -1
- package/build/lib/commands/timeouts.js +1 -1
- package/build/lib/commands/timeouts.js.map +1 -1
- package/build/lib/commands/web.js +1 -1
- package/build/lib/commands/web.js.map +1 -1
- package/build/lib/commands/xctest.js +1 -1
- package/build/lib/commands/xctest.js.map +1 -1
- package/build/lib/cookies.js +1 -1
- package/build/lib/cookies.js.map +1 -1
- package/build/lib/css-converter.js +1 -1
- package/build/lib/css-converter.js.map +1 -1
- package/build/lib/desired-caps.js +1 -1
- package/build/lib/desired-caps.js.map +1 -1
- package/build/lib/device-connections-factory.js +1 -1
- package/build/lib/device-connections-factory.js.map +1 -1
- package/build/lib/device-log/ios-crash-log.js +1 -1
- package/build/lib/device-log/ios-crash-log.js.map +1 -1
- package/build/lib/device-log/ios-device-log.js +1 -1
- package/build/lib/device-log/ios-device-log.js.map +1 -1
- package/build/lib/device-log/ios-log.js +1 -1
- package/build/lib/device-log/ios-log.js.map +1 -1
- package/build/lib/device-log/ios-performance-log.js +1 -1
- package/build/lib/device-log/ios-performance-log.js.map +1 -1
- package/build/lib/device-log/ios-simulator-log.js +1 -1
- package/build/lib/device-log/ios-simulator-log.js.map +1 -1
- package/build/lib/device-log/rotating-log.js +1 -1
- package/build/lib/device-log/rotating-log.js.map +1 -1
- package/build/lib/device-log/safari-console-log.js +1 -1
- package/build/lib/device-log/safari-console-log.js.map +1 -1
- package/build/lib/device-log/safari-network-log.js +1 -1
- package/build/lib/device-log/safari-network-log.js.map +1 -1
- package/build/lib/driver.js +1 -1
- package/build/lib/driver.js.map +1 -1
- package/build/lib/ios-deploy.js +1 -1
- package/build/lib/ios-deploy.js.map +1 -1
- package/build/lib/ios-fs-helpers.js +1 -1
- package/build/lib/ios-fs-helpers.js.map +1 -1
- package/build/lib/ios-generic-simulators.js +1 -1
- package/build/lib/ios-generic-simulators.js.map +1 -1
- package/build/lib/logger.js +1 -1
- package/build/lib/logger.js.map +1 -1
- package/build/lib/method-map.js +1 -1
- package/build/lib/method-map.js.map +1 -1
- package/build/lib/py-ios-device-client.js +1 -1
- package/build/lib/py-ios-device-client.js.map +1 -1
- package/build/lib/real-device-management.js +1 -1
- package/build/lib/real-device-management.js.map +1 -1
- package/build/lib/simulator-management.js +1 -1
- package/build/lib/simulator-management.js.map +1 -1
- package/build/lib/utils.js +1 -1
- package/build/lib/utils.js.map +1 -1
- package/lib/commands/execute.js +4 -0
- package/lib/commands/geolocation.js +48 -0
- package/lib/commands/index.js +2 -1
- package/npm-shrinkwrap.json +20 -13
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
## [4.18.0](https://github.com/appium/appium-xcuitest-driver/compare/v4.17.1...v4.18.0) (2023-02-20)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Features
|
|
5
|
+
|
|
6
|
+
* Add simulated geolocation extensions ([#1503](https://github.com/appium/appium-xcuitest-driver/issues/1503)) ([cfb149b](https://github.com/appium/appium-xcuitest-driver/commit/cfb149be26b6dfc55771e6b5159b14c127f88268))
|
|
7
|
+
|
|
8
|
+
## [4.17.1](https://github.com/appium/appium-xcuitest-driver/compare/v4.17.0...v4.17.1) (2023-02-20)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Miscellaneous Chores
|
|
12
|
+
|
|
13
|
+
* Bump pngjs from 6.0.0 to 7.0.0 ([#1504](https://github.com/appium/appium-xcuitest-driver/issues/1504)) ([e0bdc0b](https://github.com/appium/appium-xcuitest-driver/commit/e0bdc0b0ae18f6681ce9ca7f5328ec318061c724))
|
|
14
|
+
|
|
1
15
|
## [4.17.0](https://github.com/appium/appium-xcuitest-driver/compare/v4.16.13...v4.17.0) (2023-02-20)
|
|
2
16
|
|
|
3
17
|
|
package/build/index.js
CHANGED
|
@@ -14,4 +14,4 @@ require("source-map-support/register");
|
|
|
14
14
|
var _driver = require("./lib/driver");
|
|
15
15
|
var _default = _driver.XCUITestDriver;
|
|
16
16
|
exports.default = _default;
|
|
17
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
17
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZHJpdmVyIiwicmVxdWlyZSIsIl9kZWZhdWx0IiwiWENVSVRlc3REcml2ZXIiLCJleHBvcnRzIiwiZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uL2luZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIHRyYW5zcGlsZTptYWluXG5pbXBvcnQgeyBYQ1VJVGVzdERyaXZlciB9IGZyb20gJy4vbGliL2RyaXZlcic7XG5cbmV4cG9ydCB7IFhDVUlUZXN0RHJpdmVyIH07XG5leHBvcnQgZGVmYXVsdCBYQ1VJVGVzdERyaXZlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUNBLElBQUFBLE9BQUEsR0FBQUMsT0FBQTtBQUE4QyxJQUFBQyxRQUFBLEdBRy9CQyxzQkFBYztBQUFBQyxPQUFBLENBQUFDLE9BQUEsR0FBQUgsUUFBQSJ9
|
package/build/lib/app-utils.js
CHANGED
|
@@ -169,4 +169,4 @@ async function isolateAppBundle(appRoot) {
|
|
|
169
169
|
});
|
|
170
170
|
return dstRoot;
|
|
171
171
|
}
|
|
172
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTVFJJTkdTRElDVF9SRVNPVVJDRSIsIlNUUklOR1NfUkVTT1VSQ0UiLCJTQUZBUklfQlVORExFX0lEIiwiQVBQX0VYVCIsIklQQV9FWFQiLCJleHRyYWN0UGxpc3RFbnRyeSIsImFwcCIsImVudHJ5TmFtZSIsInBsaXN0UGF0aCIsInBhdGgiLCJyZXNvbHZlIiwicGxpc3QiLCJwYXJzZVBsaXN0RmlsZSIsImVyciIsIkVycm9yIiwiYmFzZW5hbWUiLCJtZXNzYWdlIiwiZXh0cmFjdEJ1bmRsZUlkIiwiYnVuZGxlSWQiLCJsb2ciLCJkZWJ1ZyIsImZldGNoU3VwcG9ydGVkQXBwUGxhdGZvcm1zIiwicmVzdWx0IiwiXyIsImlzQXJyYXkiLCJ3YXJuIiwidmVyaWZ5QXBwbGljYXRpb25QbGF0Zm9ybSIsImV4cGVjdGVkUGxhdGZvcm0iLCJzdXBwb3J0ZWRQbGF0Zm9ybXMiLCJKU09OIiwic3RyaW5naWZ5IiwiaXNTaW11bGF0b3IiLCJpc1R2T1MiLCJwcmVmaXgiLCJzdWZmaXgiLCJkc3RQbGF0Zm9ybSIsImluY2x1ZGVzIiwicmVhZFJlc291cmNlIiwicmVzb3VyY2VQYXRoIiwiZGF0YSIsImtleSIsInZhbHVlIiwidG9QYWlycyIsImlzU3RyaW5nIiwicGFyc2VMb2NhbGl6YWJsZVN0cmluZ3MiLCJvcHRzIiwibGFuZ3VhZ2UiLCJsb2NhbGl6YWJsZVN0cmluZ3NEaXIiLCJzdHJpbmdGaWxlIiwic3RyaWN0TW9kZSIsImluZm8iLCJscHJvalJvb3QiLCJzdWJmb2xkZXIiLCJmcyIsImV4aXN0cyIsInJlc291cmNlUGF0aHMiLCJkc3RQYXRoIiwicHVzaCIsImlzRW1wdHkiLCJyZXNvdXJjZUZpbGVzIiwicmVhZGRpciIsImZpbHRlciIsIm5hbWUiLCJzb21lIiwieCIsImVuZHNXaXRoIiwibWFwIiwibGVuZ3RoIiwicmVzdWx0U3RyaW5ncyIsInRvQWJzb2x1dGVQYXRoIiwicCIsImlzQWJzb2x1dGUiLCJwcm9jZXNzIiwiY3dkIiwidXRpbCIsImlzU3ViUGF0aCIsImtleXMiLCJtZXJnZSIsImUiLCJpc0FwcEJ1bmRsZSIsImFwcFBhdGgiLCJ0b0xvd2VyIiwic3RhdCIsImlzRGlyZWN0b3J5Iiwiam9pbiIsImZpbmRBcHBzIiwiYXJjaGl2ZVBhdGgiLCJhcHBFeHRlbnNpb25zIiwidXNlU3lzdGVtVW56aXBFbnYiLCJlbnYiLCJBUFBJVU1fUFJFRkVSX1NZU1RFTV9VTlpJUCIsInVzZVN5c3RlbVVuemlwIiwidG1wUm9vdCIsInRlbXBEaXIiLCJvcGVuRGlyIiwiemlwIiwiZXh0cmFjdEFsbFRvIiwiZ2xvYlBhdHRlcm4iLCJleHQiLCJyZXBsYWNlIiwic29ydGVkQnVuZGxlSXRlbXMiLCJnbG9iIiwic3RyaWN0Iiwic29ydCIsImEiLCJiIiwic3BsaXQiLCJzZXAiLCJpc29sYXRlQXBwQnVuZGxlIiwiYXBwUm9vdCIsImRzdFJvb3QiLCJtdiIsIm1rZGlycCJdLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9hcHAtdXRpbHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgcGxpc3QsIGZzLCB1dGlsLCB0ZW1wRGlyLCB6aXAgfSBmcm9tICdhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgbG9nIGZyb20gJy4vbG9nZ2VyLmpzJztcblxuY29uc3QgU1RSSU5HU0RJQ1RfUkVTT1VSQ0UgPSAnLnN0cmluZ3NkaWN0JztcbmNvbnN0IFNUUklOR1NfUkVTT1VSQ0UgPSAnLnN0cmluZ3MnO1xuY29uc3QgU0FGQVJJX0JVTkRMRV9JRCA9ICdjb20uYXBwbGUubW9iaWxlc2FmYXJpJztcbmNvbnN0IEFQUF9FWFQgPSAnLmFwcCc7XG5jb25zdCBJUEFfRVhUID0gJy5pcGEnO1xuXG5hc3luYyBmdW5jdGlvbiBleHRyYWN0UGxpc3RFbnRyeSAoYXBwLCBlbnRyeU5hbWUpIHtcbiAgY29uc3QgcGxpc3RQYXRoID0gcGF0aC5yZXNvbHZlKGFwcCwgJ0luZm8ucGxpc3QnKTtcbiAgdHJ5IHtcbiAgICByZXR1cm4gKGF3YWl0IHBsaXN0LnBhcnNlUGxpc3RGaWxlKHBsaXN0UGF0aCkpW2VudHJ5TmFtZV07XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IGV4dHJhY3QgSW5mby5wbGlzdCBmcm9tICcke3BhdGguYmFzZW5hbWUoYXBwKX0nOiAke2Vyci5tZXNzYWdlfWApO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGV4dHJhY3RCdW5kbGVJZCAoYXBwKSB7XG4gIGNvbnN0IGJ1bmRsZUlkID0gYXdhaXQgZXh0cmFjdFBsaXN0RW50cnkoYXBwLCAnQ0ZCdW5kbGVJZGVudGlmaWVyJyk7XG4gIGxvZy5kZWJ1ZyhgR2V0dGluZyBidW5kbGUgSUQgZnJvbSBhcHAgJyR7YXBwfSc6ICcke2J1bmRsZUlkfSdgKTtcbiAgcmV0dXJuIGJ1bmRsZUlkO1xufVxuXG5hc3luYyBmdW5jdGlvbiBmZXRjaFN1cHBvcnRlZEFwcFBsYXRmb3JtcyAoYXBwKSB7XG4gIHRyeSB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZXh0cmFjdFBsaXN0RW50cnkoYXBwLCAnQ0ZCdW5kbGVTdXBwb3J0ZWRQbGF0Zm9ybXMnKTtcbiAgICBpZiAoIV8uaXNBcnJheShyZXN1bHQpKSB7XG4gICAgICBsb2cud2FybihgJHtwYXRoLmJhc2VuYW1lKGFwcCl9JzogQ0ZCdW5kbGVTdXBwb3J0ZWRQbGF0Zm9ybXMgaXMgbm90IGEgdmFsaWQgbGlzdGApO1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBsb2cud2FybihcbiAgICAgIGBDYW5ub3QgZXh0cmFjdCB0aGUgbGlzdCBvZiBzdXBwb3J0ZWQgcGxhdGZvcm1zIGZyb20gJyR7cGF0aC5iYXNlbmFtZShhcHApfSc6ICR7ZXJyLm1lc3NhZ2V9YFxuICAgICk7XG4gICAgcmV0dXJuIFtdO1xuICB9XG59XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gUGxhdGZvcm1PcHRzXG4gKlxuICogQHByb3BlcnR5IHtib29sZWFufSBpc1NpbXVsYXRvciAtIFdoZXRoZXIgdGhlIGRlc3RpbmF0aW9uIHBsYXRmb3JtIGlzIGEgU2ltdWxhdG9yXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IGlzVHZPUyAtIFdoZXRoZXIgdGhlIGRlc3RpbmF0aW9uIHBsYXRmb3JtIGlzIGEgU2ltdWxhdG9yXG4gKi9cblxuLyoqXG4gKiBWZXJpZnkgd2hldGhlciB0aGUgZ2l2ZW4gYXBwbGljYXRpb24gaXMgY29tcGF0aWJsZSB0byB0aGVcbiAqIHBsYXRmb3JtIHdoZXJlIGl0IGlzIGdvaW5nIHRvIGJlIGluc3RhbGxlZCBhbmQgdGVzdGVkLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBhcHAgLSBUaGUgYWN0dWFsIHBhdGggdG8gdGhlIGFwcGxpY2F0aW9uIGJ1bmRsZVxuICogQHBhcmFtIHtQbGF0Zm9ybU9wdHN9IGV4cGVjdGVkUGxhdGZvcm1cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiBidW5kbGUgYXJjaGl0ZWN0dXJlIGRvZXMgbm90IG1hdGNoIHRoZSBleHBlY3RlZCBkZXZpY2UgYXJjaGl0ZWN0dXJlLlxuICovXG5hc3luYyBmdW5jdGlvbiB2ZXJpZnlBcHBsaWNhdGlvblBsYXRmb3JtIChhcHAsIGV4cGVjdGVkUGxhdGZvcm0pIHtcbiAgbG9nLmRlYnVnKCdWZXJpZnlpbmcgYXBwbGljYXRpb24gcGxhdGZvcm0nKTtcblxuICBjb25zdCBzdXBwb3J0ZWRQbGF0Zm9ybXMgPSBhd2FpdCBmZXRjaFN1cHBvcnRlZEFwcFBsYXRmb3JtcyhhcHApO1xuICBsb2cuZGVidWcoYENGQnVuZGxlU3VwcG9ydGVkUGxhdGZvcm1zOiAke0pTT04uc3RyaW5naWZ5KHN1cHBvcnRlZFBsYXRmb3Jtcyl9YCk7XG5cbiAgY29uc3Qge1xuICAgIGlzU2ltdWxhdG9yLFxuICAgIGlzVHZPUyxcbiAgfSA9IGV4cGVjdGVkUGxhdGZvcm07XG4gIGNvbnN0IHByZWZpeCA9IGlzVHZPUyA/ICdBcHBsZVRWJyA6ICdpUGhvbmUnO1xuICBjb25zdCBzdWZmaXggPSBpc1NpbXVsYXRvciA/ICdTaW11bGF0b3InIDogJ09TJztcbiAgY29uc3QgZHN0UGxhdGZvcm0gPSBgJHtwcmVmaXh9JHtzdWZmaXh9YDtcbiAgaWYgKCFzdXBwb3J0ZWRQbGF0Zm9ybXMuaW5jbHVkZXMoZHN0UGxhdGZvcm0pKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGAke2lzU2ltdWxhdG9yID8gJ1NpbXVsYXRvcicgOiAnUmVhbCBkZXZpY2UnfSBhcmNoaXRlY3R1cmUgaXMgdW5zdXBwb3J0ZWQgYnkgdGhlICcke2FwcH0nIGFwcGxpY2F0aW9uLiBgICtcbiAgICAgIGBNYWtlIHN1cmUgdGhlIGNvcnJlY3QgZGVwbG95bWVudCB0YXJnZXQgaGFzIGJlZW4gc2VsZWN0ZWQgZm9yIGl0cyBjb21waWxhdGlvbiBpbiBYY29kZS5gKTtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiByZWFkUmVzb3VyY2UgKHJlc291cmNlUGF0aCkge1xuICBjb25zdCBkYXRhID0gYXdhaXQgcGxpc3QucGFyc2VQbGlzdEZpbGUocmVzb3VyY2VQYXRoKTtcbiAgY29uc3QgcmVzdWx0ID0ge307XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIF8udG9QYWlycyhkYXRhKSkge1xuICAgIHJlc3VsdFtrZXldID0gXy5pc1N0cmluZyh2YWx1ZSkgPyB2YWx1ZSA6IEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5hc3luYyBmdW5jdGlvbiBwYXJzZUxvY2FsaXphYmxlU3RyaW5ncyAob3B0cykge1xuICBjb25zdCB7XG4gICAgYXBwLFxuICAgIGxhbmd1YWdlID0gJ2VuJyxcbiAgICBsb2NhbGl6YWJsZVN0cmluZ3NEaXIsXG4gICAgc3RyaW5nRmlsZSxcbiAgICBzdHJpY3RNb2RlLFxuICB9ID0gb3B0cztcblxuICBpZiAoIWFwcCkge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBgU3RyaW5ncyBleHRyYWN0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgaWYgJ2FwcCcgY2FwYWJpbGl0eSBpcyBub3Qgc2V0YDtcbiAgICBpZiAoc3RyaWN0TW9kZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH1cbiAgICBsb2cuaW5mbyhtZXNzYWdlKTtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICBsZXQgbHByb2pSb290O1xuICBmb3IgKGNvbnN0IHN1YmZvbGRlciBvZiBbYCR7bGFuZ3VhZ2V9Lmxwcm9qYCwgbG9jYWxpemFibGVTdHJpbmdzRGlyLCAnJ10pIHtcbiAgICBscHJvalJvb3QgPSBwYXRoLnJlc29sdmUoYXBwLCBzdWJmb2xkZXIpO1xuICAgIGlmIChhd2FpdCBmcy5leGlzdHMobHByb2pSb290KSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNvbnN0IG1lc3NhZ2UgPSBgTm8gJyR7bHByb2pSb290fScgcmVzb3VyY2VzIGZvbGRlciBoYXMgYmVlbiBmb3VuZGA7XG4gICAgaWYgKHN0cmljdE1vZGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICB9XG4gICAgbG9nLmRlYnVnKG1lc3NhZ2UpO1xuICB9XG4gIGxvZy5pbmZvKGBXaWxsIGV4dHJhY3QgcmVzb3VyY2Ugc3RyaW5ncyBmcm9tICcke2xwcm9qUm9vdH0nYCk7XG5cbiAgY29uc3QgcmVzb3VyY2VQYXRocyA9IFtdO1xuICBpZiAoc3RyaW5nRmlsZSkge1xuICAgIGNvbnN0IGRzdFBhdGggPSBwYXRoLnJlc29sdmUobHByb2pSb290LCBzdHJpbmdGaWxlKTtcbiAgICBpZiAoYXdhaXQgZnMuZXhpc3RzKGRzdFBhdGgpKSB7XG4gICAgICByZXNvdXJjZVBhdGhzLnB1c2goZHN0UGF0aCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgTm8gJyR7ZHN0UGF0aH0nIHJlc291cmNlIGZpbGUgaGFzIGJlZW4gZm91bmQgZm9yICcke2FwcH0nYDtcbiAgICAgIGlmIChzdHJpY3RNb2RlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICAgIH1cbiAgICAgIGxvZy5pbmZvKG1lc3NhZ2UpO1xuICAgICAgbG9nLmluZm8oYEdldHRpbmcgYWxsIHRoZSBhdmFpbGFibGUgc3RyaW5ncyBmcm9tICcke2xwcm9qUm9vdH0nYCk7XG4gICAgfVxuICB9XG5cbiAgaWYgKF8uaXNFbXB0eShyZXNvdXJjZVBhdGhzKSAmJiBhd2FpdCBmcy5leGlzdHMobHByb2pSb290KSkge1xuICAgIGNvbnN0IHJlc291cmNlRmlsZXMgPSAoYXdhaXQgZnMucmVhZGRpcihscHJvalJvb3QpKVxuICAgICAgLmZpbHRlcigobmFtZSkgPT4gXy5zb21lKFtTVFJJTkdTX1JFU09VUkNFLCBTVFJJTkdTRElDVF9SRVNPVVJDRV0sICh4KSA9PiBuYW1lLmVuZHNXaXRoKHgpKSlcbiAgICAgIC5tYXAoKG5hbWUpID0+IHBhdGgucmVzb2x2ZShscHJvalJvb3QsIG5hbWUpKTtcbiAgICByZXNvdXJjZVBhdGhzLnB1c2goLi4ucmVzb3VyY2VGaWxlcyk7XG4gIH1cbiAgbG9nLmluZm8oYEdvdCAke3Jlc291cmNlUGF0aHMubGVuZ3RofSByZXNvdXJjZSBmaWxlKHMpIGluICcke2xwcm9qUm9vdH0nYCk7XG5cbiAgaWYgKF8uaXNFbXB0eShyZXNvdXJjZVBhdGhzKSkge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIGNvbnN0IHJlc3VsdFN0cmluZ3MgPSB7fTtcbiAgY29uc3QgdG9BYnNvbHV0ZVBhdGggPSBmdW5jdGlvbiAocCkge1xuICAgIHJldHVybiBwYXRoLmlzQWJzb2x1dGUocCkgPyBwIDogcGF0aC5yZXNvbHZlKHByb2Nlc3MuY3dkKCksIHApO1xuICB9O1xuICBmb3IgKGNvbnN0IHJlc291cmNlUGF0aCBvZiByZXNvdXJjZVBhdGhzKSB7XG4gICAgaWYgKCF1dGlsLmlzU3ViUGF0aCh0b0Fic29sdXRlUGF0aChyZXNvdXJjZVBhdGgpLCB0b0Fic29sdXRlUGF0aChhcHApKSkge1xuICAgICAgLy8gc2VjdXJpdHkgcHJlY2F1dGlvblxuICAgICAgdGhyb3cgbmV3IEVycm9yKGAnJHtyZXNvdXJjZVBhdGh9JyBpcyBleHBlY3RlZCB0byBiZSBsb2NhdGVkIHVuZGVyICcke2FwcH0nYCk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVhZFJlc291cmNlKHJlc291cmNlUGF0aCk7XG4gICAgICBsb2cuZGVidWcoYFBhcnNlZCAke18ua2V5cyhkYXRhKS5sZW5ndGh9IHN0cmluZyhzKSBmcm9tICcke3Jlc291cmNlUGF0aH0nYCk7XG4gICAgICBfLm1lcmdlKHJlc3VsdFN0cmluZ3MsIGRhdGEpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGxvZy53YXJuKGBDYW5ub3QgcGFyc2UgJyR7cmVzb3VyY2VQYXRofScgcmVzb3VyY2UuIE9yaWdpbmFsIGVycm9yOiAke2UubWVzc2FnZX1gKTtcbiAgICB9XG4gIH1cblxuICBsb2cuaW5mbyhgR290ICR7Xy5rZXlzKHJlc3VsdFN0cmluZ3MpLmxlbmd0aH0gc3RyaW5nKHMpIGZyb20gJyR7bHByb2pSb290fSdgKTtcbiAgcmV0dXJuIHJlc3VsdFN0cmluZ3M7XG59XG5cbi8qKlxuICogQ2hlY2sgd2hldGhlciB0aGUgZ2l2ZW4gcGF0aCBvbiB0aGUgZmlsZSBzeXN0ZW0gcG9pbnRzIHRvIHRoZSAuYXBwIGJ1bmRsZSByb290XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGFwcFBhdGggUG9zc2libGUgLmFwcCBidW5kbGUgcm9vdFxuICogQHJldHVybnMge2Jvb2xlYW59IFdoZXRoZXIgdGhlIGdpdmVuIHBhdGggcG9pbnRzIHRvIGFuIC5hcHAgYnVuZGxlXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGlzQXBwQnVuZGxlIChhcHBQYXRoKSB7XG4gIHJldHVybiBfLmVuZHNXaXRoKF8udG9Mb3dlcihhcHBQYXRoKSwgQVBQX0VYVClcbiAgICAmJiAoYXdhaXQgZnMuc3RhdChhcHBQYXRoKSkuaXNEaXJlY3RvcnkoKVxuICAgICYmIGF3YWl0IGZzLmV4aXN0cyhwYXRoLmpvaW4oYXBwUGF0aCwgJ0luZm8ucGxpc3QnKSk7XG59XG5cbi8qKlxuICogRXh0cmFjdCB0aGUgZ2l2ZW4gYXJjaGl2ZSBhbmQgbG9va3MgZm9yIGl0ZW1zIHdpdGggZ2l2ZW4gZXh0ZW5zaW9ucyBpbiBpdFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBhcmNoaXZlUGF0aCBGdWxsIHBhdGggdG8gYSAuemlwIGFyY2hpdmVcbiAqIEBwYXJhbSB7QXJyYXk8c3RyaW5nPn0gYXBwRXh0ZW5zaW9ucyBMaXN0IG9mIG1hdGNoaW5nIGl0ZW0gZXh0ZW5zaW9uc1xuICogQHJldHVybnMge1tzdHJpbmcsIEFycmF5PFN0cmluZz5dfSBUdXBsZSwgd2hlcmUgdGhlIGZpcnN0IGVsZW1lbnQgcG9pbnRzIHRvXG4gKiBhIHRlbXBvcmFyeSBmb2xkZXIgcm9vdCB3aGVyZSB0aGUgYXJjaGl2ZSBoYXMgYmVlbiBleHRyYWN0ZWQgYW5kIHRoZSBzZWNvbmQgaXRlbVxuICogY29udGFpbnMgYSBsaXN0IG9mIHJlbGF0aXZlIHBhdGhzIHRvIG1hdGNoZWQgaXRlbXNcbiAqL1xuYXN5bmMgZnVuY3Rpb24gZmluZEFwcHMgKGFyY2hpdmVQYXRoLCBhcHBFeHRlbnNpb25zKSB7XG4gIGNvbnN0IHVzZVN5c3RlbVVuemlwRW52ID0gcHJvY2Vzcy5lbnYuQVBQSVVNX1BSRUZFUl9TWVNURU1fVU5aSVA7XG4gIGNvbnN0IHVzZVN5c3RlbVVuemlwID0gXy5pc0VtcHR5KHVzZVN5c3RlbVVuemlwRW52KVxuICAgIHx8ICFbJzAnLCAnZmFsc2UnXS5pbmNsdWRlcyhfLnRvTG93ZXIodXNlU3lzdGVtVW56aXBFbnYpKTtcbiAgY29uc3QgdG1wUm9vdCA9IGF3YWl0IHRlbXBEaXIub3BlbkRpcigpO1xuICBhd2FpdCB6aXAuZXh0cmFjdEFsbFRvKGFyY2hpdmVQYXRoLCB0bXBSb290LCB7dXNlU3lzdGVtVW56aXB9KTtcbiAgY29uc3QgZ2xvYlBhdHRlcm4gPSBgKiovKi4rKCR7YXBwRXh0ZW5zaW9ucy5tYXAoKGV4dCkgPT4gZXh0LnJlcGxhY2UoL15cXC4vLCAnJykpLmpvaW4oJ3wnKX0pYDtcbiAgY29uc3Qgc29ydGVkQnVuZGxlSXRlbXMgPSAoYXdhaXQgZnMuZ2xvYihnbG9iUGF0dGVybiwge1xuICAgIGN3ZDogdG1wUm9vdCxcbiAgICBzdHJpY3Q6IGZhbHNlLFxuICB9KSkuc29ydCgoYSwgYikgPT4gYS5zcGxpdChwYXRoLnNlcCkubGVuZ3RoIC0gYi5zcGxpdChwYXRoLnNlcCkubGVuZ3RoKTtcbiAgcmV0dXJuIFt0bXBSb290LCBzb3J0ZWRCdW5kbGVJdGVtc107XG59XG5cbi8qKlxuICogTW92ZXMgdGhlIGFwcGxpY2F0aW9uIGJ1bmRsZSB0byBhIG5ld2x5IGNyZWF0ZWQgdGVtcG9yYXJ5IGZvbGRlclxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBhcHBSb290IEZ1bGwgcGF0aCB0byB0aGUgLmFwcCBidW5kbGVcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBuZXcgcGF0aCB0byB0aGUgYXBwIGJ1bmRsZS5cbiAqIFRoZSBuYW1lIG9mIHRoZSBhcHAgYnVuZGxlIHJlbWFpbnMgdGhvdWdoXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGlzb2xhdGVBcHBCdW5kbGUgKGFwcFJvb3QpIHtcbiAgY29uc3QgdG1wUm9vdCA9IGF3YWl0IHRlbXBEaXIub3BlbkRpcigpO1xuICBjb25zdCBkc3RSb290ID0gcGF0aC5qb2luKHRtcFJvb3QsIHBhdGguYmFzZW5hbWUoYXBwUm9vdCkpO1xuICBhd2FpdCBmcy5tdihhcHBSb290LCBkc3RSb290LCB7bWtkaXJwOiB0cnVlfSk7XG4gIHJldHVybiBkc3RSb290O1xufVxuXG5leHBvcnQge1xuICBleHRyYWN0QnVuZGxlSWQsIHZlcmlmeUFwcGxpY2F0aW9uUGxhdGZvcm0sIHBhcnNlTG9jYWxpemFibGVTdHJpbmdzLFxuICBTQUZBUklfQlVORExFX0lELCBmZXRjaFN1cHBvcnRlZEFwcFBsYXRmb3JtcywgQVBQX0VYVCwgSVBBX0VY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
|
|
172
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfcGF0aCIsIl9zdXBwb3J0IiwiX2xvZ2dlciIsIlNUUklOR1NESUNUX1JFU09VUkNFIiwiU1RSSU5HU19SRVNPVVJDRSIsIlNBRkFSSV9CVU5ETEVfSUQiLCJleHBvcnRzIiwiQVBQX0VYVCIsIklQQV9FWFQiLCJleHRyYWN0UGxpc3RFbnRyeSIsImFwcCIsImVudHJ5TmFtZSIsInBsaXN0UGF0aCIsInBhdGgiLCJyZXNvbHZlIiwicGxpc3QiLCJwYXJzZVBsaXN0RmlsZSIsImVyciIsIkVycm9yIiwiYmFzZW5hbWUiLCJtZXNzYWdlIiwiZXh0cmFjdEJ1bmRsZUlkIiwiYnVuZGxlSWQiLCJsb2ciLCJkZWJ1ZyIsImZldGNoU3VwcG9ydGVkQXBwUGxhdGZvcm1zIiwicmVzdWx0IiwiXyIsImlzQXJyYXkiLCJ3YXJuIiwidmVyaWZ5QXBwbGljYXRpb25QbGF0Zm9ybSIsImV4cGVjdGVkUGxhdGZvcm0iLCJzdXBwb3J0ZWRQbGF0Zm9ybXMiLCJKU09OIiwic3RyaW5naWZ5IiwiaXNTaW11bGF0b3IiLCJpc1R2T1MiLCJwcmVmaXgiLCJzdWZmaXgiLCJkc3RQbGF0Zm9ybSIsImluY2x1ZGVzIiwicmVhZFJlc291cmNlIiwicmVzb3VyY2VQYXRoIiwiZGF0YSIsImtleSIsInZhbHVlIiwidG9QYWlycyIsImlzU3RyaW5nIiwicGFyc2VMb2NhbGl6YWJsZVN0cmluZ3MiLCJvcHRzIiwibGFuZ3VhZ2UiLCJsb2NhbGl6YWJsZVN0cmluZ3NEaXIiLCJzdHJpbmdGaWxlIiwic3RyaWN0TW9kZSIsImluZm8iLCJscHJvalJvb3QiLCJzdWJmb2xkZXIiLCJmcyIsImV4aXN0cyIsInJlc291cmNlUGF0aHMiLCJkc3RQYXRoIiwicHVzaCIsImlzRW1wdHkiLCJyZXNvdXJjZUZpbGVzIiwicmVhZGRpciIsImZpbHRlciIsIm5hbWUiLCJzb21lIiwieCIsImVuZHNXaXRoIiwibWFwIiwibGVuZ3RoIiwicmVzdWx0U3RyaW5ncyIsInRvQWJzb2x1dGVQYXRoIiwicCIsImlzQWJzb2x1dGUiLCJwcm9jZXNzIiwiY3dkIiwidXRpbCIsImlzU3ViUGF0aCIsImtleXMiLCJtZXJnZSIsImUiLCJpc0FwcEJ1bmRsZSIsImFwcFBhdGgiLCJ0b0xvd2VyIiwic3RhdCIsImlzRGlyZWN0b3J5Iiwiam9pbiIsImZpbmRBcHBzIiwiYXJjaGl2ZVBhdGgiLCJhcHBFeHRlbnNpb25zIiwidXNlU3lzdGVtVW56aXBFbnYiLCJlbnYiLCJBUFBJVU1fUFJFRkVSX1NZU1RFTV9VTlpJUCIsInVzZVN5c3RlbVVuemlwIiwidG1wUm9vdCIsInRlbXBEaXIiLCJvcGVuRGlyIiwiemlwIiwiZXh0cmFjdEFsbFRvIiwiZ2xvYlBhdHRlcm4iLCJleHQiLCJyZXBsYWNlIiwic29ydGVkQnVuZGxlSXRlbXMiLCJnbG9iIiwic3RyaWN0Iiwic29ydCIsImEiLCJiIiwic3BsaXQiLCJzZXAiLCJpc29sYXRlQXBwQnVuZGxlIiwiYXBwUm9vdCIsImRzdFJvb3QiLCJtdiIsIm1rZGlycCJdLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9hcHAtdXRpbHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgcGxpc3QsIGZzLCB1dGlsLCB0ZW1wRGlyLCB6aXAgfSBmcm9tICdhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgbG9nIGZyb20gJy4vbG9nZ2VyLmpzJztcblxuY29uc3QgU1RSSU5HU0RJQ1RfUkVTT1VSQ0UgPSAnLnN0cmluZ3NkaWN0JztcbmNvbnN0IFNUUklOR1NfUkVTT1VSQ0UgPSAnLnN0cmluZ3MnO1xuY29uc3QgU0FGQVJJX0JVTkRMRV9JRCA9ICdjb20uYXBwbGUubW9iaWxlc2FmYXJpJztcbmNvbnN0IEFQUF9FWFQgPSAnLmFwcCc7XG5jb25zdCBJUEFfRVhUID0gJy5pcGEnO1xuXG5hc3luYyBmdW5jdGlvbiBleHRyYWN0UGxpc3RFbnRyeSAoYXBwLCBlbnRyeU5hbWUpIHtcbiAgY29uc3QgcGxpc3RQYXRoID0gcGF0aC5yZXNvbHZlKGFwcCwgJ0luZm8ucGxpc3QnKTtcbiAgdHJ5IHtcbiAgICByZXR1cm4gKGF3YWl0IHBsaXN0LnBhcnNlUGxpc3RGaWxlKHBsaXN0UGF0aCkpW2VudHJ5TmFtZV07XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IGV4dHJhY3QgSW5mby5wbGlzdCBmcm9tICcke3BhdGguYmFzZW5hbWUoYXBwKX0nOiAke2Vyci5tZXNzYWdlfWApO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGV4dHJhY3RCdW5kbGVJZCAoYXBwKSB7XG4gIGNvbnN0IGJ1bmRsZUlkID0gYXdhaXQgZXh0cmFjdFBsaXN0RW50cnkoYXBwLCAnQ0ZCdW5kbGVJZGVudGlmaWVyJyk7XG4gIGxvZy5kZWJ1ZyhgR2V0dGluZyBidW5kbGUgSUQgZnJvbSBhcHAgJyR7YXBwfSc6ICcke2J1bmRsZUlkfSdgKTtcbiAgcmV0dXJuIGJ1bmRsZUlkO1xufVxuXG5hc3luYyBmdW5jdGlvbiBmZXRjaFN1cHBvcnRlZEFwcFBsYXRmb3JtcyAoYXBwKSB7XG4gIHRyeSB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZXh0cmFjdFBsaXN0RW50cnkoYXBwLCAnQ0ZCdW5kbGVTdXBwb3J0ZWRQbGF0Zm9ybXMnKTtcbiAgICBpZiAoIV8uaXNBcnJheShyZXN1bHQpKSB7XG4gICAgICBsb2cud2FybihgJHtwYXRoLmJhc2VuYW1lKGFwcCl9JzogQ0ZCdW5kbGVTdXBwb3J0ZWRQbGF0Zm9ybXMgaXMgbm90IGEgdmFsaWQgbGlzdGApO1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBsb2cud2FybihcbiAgICAgIGBDYW5ub3QgZXh0cmFjdCB0aGUgbGlzdCBvZiBzdXBwb3J0ZWQgcGxhdGZvcm1zIGZyb20gJyR7cGF0aC5iYXNlbmFtZShhcHApfSc6ICR7ZXJyLm1lc3NhZ2V9YFxuICAgICk7XG4gICAgcmV0dXJuIFtdO1xuICB9XG59XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gUGxhdGZvcm1PcHRzXG4gKlxuICogQHByb3BlcnR5IHtib29sZWFufSBpc1NpbXVsYXRvciAtIFdoZXRoZXIgdGhlIGRlc3RpbmF0aW9uIHBsYXRmb3JtIGlzIGEgU2ltdWxhdG9yXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IGlzVHZPUyAtIFdoZXRoZXIgdGhlIGRlc3RpbmF0aW9uIHBsYXRmb3JtIGlzIGEgU2ltdWxhdG9yXG4gKi9cblxuLyoqXG4gKiBWZXJpZnkgd2hldGhlciB0aGUgZ2l2ZW4gYXBwbGljYXRpb24gaXMgY29tcGF0aWJsZSB0byB0aGVcbiAqIHBsYXRmb3JtIHdoZXJlIGl0IGlzIGdvaW5nIHRvIGJlIGluc3RhbGxlZCBhbmQgdGVzdGVkLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBhcHAgLSBUaGUgYWN0dWFsIHBhdGggdG8gdGhlIGFwcGxpY2F0aW9uIGJ1bmRsZVxuICogQHBhcmFtIHtQbGF0Zm9ybU9wdHN9IGV4cGVjdGVkUGxhdGZvcm1cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiBidW5kbGUgYXJjaGl0ZWN0dXJlIGRvZXMgbm90IG1hdGNoIHRoZSBleHBlY3RlZCBkZXZpY2UgYXJjaGl0ZWN0dXJlLlxuICovXG5hc3luYyBmdW5jdGlvbiB2ZXJpZnlBcHBsaWNhdGlvblBsYXRmb3JtIChhcHAsIGV4cGVjdGVkUGxhdGZvcm0pIHtcbiAgbG9nLmRlYnVnKCdWZXJpZnlpbmcgYXBwbGljYXRpb24gcGxhdGZvcm0nKTtcblxuICBjb25zdCBzdXBwb3J0ZWRQbGF0Zm9ybXMgPSBhd2FpdCBmZXRjaFN1cHBvcnRlZEFwcFBsYXRmb3JtcyhhcHApO1xuICBsb2cuZGVidWcoYENGQnVuZGxlU3VwcG9ydGVkUGxhdGZvcm1zOiAke0pTT04uc3RyaW5naWZ5KHN1cHBvcnRlZFBsYXRmb3Jtcyl9YCk7XG5cbiAgY29uc3Qge1xuICAgIGlzU2ltdWxhdG9yLFxuICAgIGlzVHZPUyxcbiAgfSA9IGV4cGVjdGVkUGxhdGZvcm07XG4gIGNvbnN0IHByZWZpeCA9IGlzVHZPUyA/ICdBcHBsZVRWJyA6ICdpUGhvbmUnO1xuICBjb25zdCBzdWZmaXggPSBpc1NpbXVsYXRvciA/ICdTaW11bGF0b3InIDogJ09TJztcbiAgY29uc3QgZHN0UGxhdGZvcm0gPSBgJHtwcmVmaXh9JHtzdWZmaXh9YDtcbiAgaWYgKCFzdXBwb3J0ZWRQbGF0Zm9ybXMuaW5jbHVkZXMoZHN0UGxhdGZvcm0pKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGAke2lzU2ltdWxhdG9yID8gJ1NpbXVsYXRvcicgOiAnUmVhbCBkZXZpY2UnfSBhcmNoaXRlY3R1cmUgaXMgdW5zdXBwb3J0ZWQgYnkgdGhlICcke2FwcH0nIGFwcGxpY2F0aW9uLiBgICtcbiAgICAgIGBNYWtlIHN1cmUgdGhlIGNvcnJlY3QgZGVwbG95bWVudCB0YXJnZXQgaGFzIGJlZW4gc2VsZWN0ZWQgZm9yIGl0cyBjb21waWxhdGlvbiBpbiBYY29kZS5gKTtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiByZWFkUmVzb3VyY2UgKHJlc291cmNlUGF0aCkge1xuICBjb25zdCBkYXRhID0gYXdhaXQgcGxpc3QucGFyc2VQbGlzdEZpbGUocmVzb3VyY2VQYXRoKTtcbiAgY29uc3QgcmVzdWx0ID0ge307XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIF8udG9QYWlycyhkYXRhKSkge1xuICAgIHJlc3VsdFtrZXldID0gXy5pc1N0cmluZyh2YWx1ZSkgPyB2YWx1ZSA6IEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5hc3luYyBmdW5jdGlvbiBwYXJzZUxvY2FsaXphYmxlU3RyaW5ncyAob3B0cykge1xuICBjb25zdCB7XG4gICAgYXBwLFxuICAgIGxhbmd1YWdlID0gJ2VuJyxcbiAgICBsb2NhbGl6YWJsZVN0cmluZ3NEaXIsXG4gICAgc3RyaW5nRmlsZSxcbiAgICBzdHJpY3RNb2RlLFxuICB9ID0gb3B0cztcblxuICBpZiAoIWFwcCkge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBgU3RyaW5ncyBleHRyYWN0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgaWYgJ2FwcCcgY2FwYWJpbGl0eSBpcyBub3Qgc2V0YDtcbiAgICBpZiAoc3RyaWN0TW9kZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH1cbiAgICBsb2cuaW5mbyhtZXNzYWdlKTtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICBsZXQgbHByb2pSb290O1xuICBmb3IgKGNvbnN0IHN1YmZvbGRlciBvZiBbYCR7bGFuZ3VhZ2V9Lmxwcm9qYCwgbG9jYWxpemFibGVTdHJpbmdzRGlyLCAnJ10pIHtcbiAgICBscHJvalJvb3QgPSBwYXRoLnJlc29sdmUoYXBwLCBzdWJmb2xkZXIpO1xuICAgIGlmIChhd2FpdCBmcy5leGlzdHMobHByb2pSb290KSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNvbnN0IG1lc3NhZ2UgPSBgTm8gJyR7bHByb2pSb290fScgcmVzb3VyY2VzIGZvbGRlciBoYXMgYmVlbiBmb3VuZGA7XG4gICAgaWYgKHN0cmljdE1vZGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICB9XG4gICAgbG9nLmRlYnVnKG1lc3NhZ2UpO1xuICB9XG4gIGxvZy5pbmZvKGBXaWxsIGV4dHJhY3QgcmVzb3VyY2Ugc3RyaW5ncyBmcm9tICcke2xwcm9qUm9vdH0nYCk7XG5cbiAgY29uc3QgcmVzb3VyY2VQYXRocyA9IFtdO1xuICBpZiAoc3RyaW5nRmlsZSkge1xuICAgIGNvbnN0IGRzdFBhdGggPSBwYXRoLnJlc29sdmUobHByb2pSb290LCBzdHJpbmdGaWxlKTtcbiAgICBpZiAoYXdhaXQgZnMuZXhpc3RzKGRzdFBhdGgpKSB7XG4gICAgICByZXNvdXJjZVBhdGhzLnB1c2goZHN0UGF0aCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgTm8gJyR7ZHN0UGF0aH0nIHJlc291cmNlIGZpbGUgaGFzIGJlZW4gZm91bmQgZm9yICcke2FwcH0nYDtcbiAgICAgIGlmIChzdHJpY3RNb2RlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICAgIH1cbiAgICAgIGxvZy5pbmZvKG1lc3NhZ2UpO1xuICAgICAgbG9nLmluZm8oYEdldHRpbmcgYWxsIHRoZSBhdmFpbGFibGUgc3RyaW5ncyBmcm9tICcke2xwcm9qUm9vdH0nYCk7XG4gICAgfVxuICB9XG5cbiAgaWYgKF8uaXNFbXB0eShyZXNvdXJjZVBhdGhzKSAmJiBhd2FpdCBmcy5leGlzdHMobHByb2pSb290KSkge1xuICAgIGNvbnN0IHJlc291cmNlRmlsZXMgPSAoYXdhaXQgZnMucmVhZGRpcihscHJvalJvb3QpKVxuICAgICAgLmZpbHRlcigobmFtZSkgPT4gXy5zb21lKFtTVFJJTkdTX1JFU09VUkNFLCBTVFJJTkdTRElDVF9SRVNPVVJDRV0sICh4KSA9PiBuYW1lLmVuZHNXaXRoKHgpKSlcbiAgICAgIC5tYXAoKG5hbWUpID0+IHBhdGgucmVzb2x2ZShscHJvalJvb3QsIG5hbWUpKTtcbiAgICByZXNvdXJjZVBhdGhzLnB1c2goLi4ucmVzb3VyY2VGaWxlcyk7XG4gIH1cbiAgbG9nLmluZm8oYEdvdCAke3Jlc291cmNlUGF0aHMubGVuZ3RofSByZXNvdXJjZSBmaWxlKHMpIGluICcke2xwcm9qUm9vdH0nYCk7XG5cbiAgaWYgKF8uaXNFbXB0eShyZXNvdXJjZVBhdGhzKSkge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIGNvbnN0IHJlc3VsdFN0cmluZ3MgPSB7fTtcbiAgY29uc3QgdG9BYnNvbHV0ZVBhdGggPSBmdW5jdGlvbiAocCkge1xuICAgIHJldHVybiBwYXRoLmlzQWJzb2x1dGUocCkgPyBwIDogcGF0aC5yZXNvbHZlKHByb2Nlc3MuY3dkKCksIHApO1xuICB9O1xuICBmb3IgKGNvbnN0IHJlc291cmNlUGF0aCBvZiByZXNvdXJjZVBhdGhzKSB7XG4gICAgaWYgKCF1dGlsLmlzU3ViUGF0aCh0b0Fic29sdXRlUGF0aChyZXNvdXJjZVBhdGgpLCB0b0Fic29sdXRlUGF0aChhcHApKSkge1xuICAgICAgLy8gc2VjdXJpdHkgcHJlY2F1dGlvblxuICAgICAgdGhyb3cgbmV3IEVycm9yKGAnJHtyZXNvdXJjZVBhdGh9JyBpcyBleHBlY3RlZCB0byBiZSBsb2NhdGVkIHVuZGVyICcke2FwcH0nYCk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVhZFJlc291cmNlKHJlc291cmNlUGF0aCk7XG4gICAgICBsb2cuZGVidWcoYFBhcnNlZCAke18ua2V5cyhkYXRhKS5sZW5ndGh9IHN0cmluZyhzKSBmcm9tICcke3Jlc291cmNlUGF0aH0nYCk7XG4gICAgICBfLm1lcmdlKHJlc3VsdFN0cmluZ3MsIGRhdGEpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGxvZy53YXJuKGBDYW5ub3QgcGFyc2UgJyR7cmVzb3VyY2VQYXRofScgcmVzb3VyY2UuIE9yaWdpbmFsIGVycm9yOiAke2UubWVzc2FnZX1gKTtcbiAgICB9XG4gIH1cblxuICBsb2cuaW5mbyhgR290ICR7Xy5rZXlzKHJlc3VsdFN0cmluZ3MpLmxlbmd0aH0gc3RyaW5nKHMpIGZyb20gJyR7bHByb2pSb290fSdgKTtcbiAgcmV0dXJuIHJlc3VsdFN0cmluZ3M7XG59XG5cbi8qKlxuICogQ2hlY2sgd2hldGhlciB0aGUgZ2l2ZW4gcGF0aCBvbiB0aGUgZmlsZSBzeXN0ZW0gcG9pbnRzIHRvIHRoZSAuYXBwIGJ1bmRsZSByb290XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGFwcFBhdGggUG9zc2libGUgLmFwcCBidW5kbGUgcm9vdFxuICogQHJldHVybnMge2Jvb2xlYW59IFdoZXRoZXIgdGhlIGdpdmVuIHBhdGggcG9pbnRzIHRvIGFuIC5hcHAgYnVuZGxlXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGlzQXBwQnVuZGxlIChhcHBQYXRoKSB7XG4gIHJldHVybiBfLmVuZHNXaXRoKF8udG9Mb3dlcihhcHBQYXRoKSwgQVBQX0VYVClcbiAgICAmJiAoYXdhaXQgZnMuc3RhdChhcHBQYXRoKSkuaXNEaXJlY3RvcnkoKVxuICAgICYmIGF3YWl0IGZzLmV4aXN0cyhwYXRoLmpvaW4oYXBwUGF0aCwgJ0luZm8ucGxpc3QnKSk7XG59XG5cbi8qKlxuICogRXh0cmFjdCB0aGUgZ2l2ZW4gYXJjaGl2ZSBhbmQgbG9va3MgZm9yIGl0ZW1zIHdpdGggZ2l2ZW4gZXh0ZW5zaW9ucyBpbiBpdFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBhcmNoaXZlUGF0aCBGdWxsIHBhdGggdG8gYSAuemlwIGFyY2hpdmVcbiAqIEBwYXJhbSB7QXJyYXk8c3RyaW5nPn0gYXBwRXh0ZW5zaW9ucyBMaXN0IG9mIG1hdGNoaW5nIGl0ZW0gZXh0ZW5zaW9uc1xuICogQHJldHVybnMge1tzdHJpbmcsIEFycmF5PFN0cmluZz5dfSBUdXBsZSwgd2hlcmUgdGhlIGZpcnN0IGVsZW1lbnQgcG9pbnRzIHRvXG4gKiBhIHRlbXBvcmFyeSBmb2xkZXIgcm9vdCB3aGVyZSB0aGUgYXJjaGl2ZSBoYXMgYmVlbiBleHRyYWN0ZWQgYW5kIHRoZSBzZWNvbmQgaXRlbVxuICogY29udGFpbnMgYSBsaXN0IG9mIHJlbGF0aXZlIHBhdGhzIHRvIG1hdGNoZWQgaXRlbXNcbiAqL1xuYXN5bmMgZnVuY3Rpb24gZmluZEFwcHMgKGFyY2hpdmVQYXRoLCBhcHBFeHRlbnNpb25zKSB7XG4gIGNvbnN0IHVzZVN5c3RlbVVuemlwRW52ID0gcHJvY2Vzcy5lbnYuQVBQSVVNX1BSRUZFUl9TWVNURU1fVU5aSVA7XG4gIGNvbnN0IHVzZVN5c3RlbVVuemlwID0gXy5pc0VtcHR5KHVzZVN5c3RlbVVuemlwRW52KVxuICAgIHx8ICFbJzAnLCAnZmFsc2UnXS5pbmNsdWRlcyhfLnRvTG93ZXIodXNlU3lzdGVtVW56aXBFbnYpKTtcbiAgY29uc3QgdG1wUm9vdCA9IGF3YWl0IHRlbXBEaXIub3BlbkRpcigpO1xuICBhd2FpdCB6aXAuZXh0cmFjdEFsbFRvKGFyY2hpdmVQYXRoLCB0bXBSb290LCB7dXNlU3lzdGVtVW56aXB9KTtcbiAgY29uc3QgZ2xvYlBhdHRlcm4gPSBgKiovKi4rKCR7YXBwRXh0ZW5zaW9ucy5tYXAoKGV4dCkgPT4gZXh0LnJlcGxhY2UoL15cXC4vLCAnJykpLmpvaW4oJ3wnKX0pYDtcbiAgY29uc3Qgc29ydGVkQnVuZGxlSXRlbXMgPSAoYXdhaXQgZnMuZ2xvYihnbG9iUGF0dGVybiwge1xuICAgIGN3ZDogdG1wUm9vdCxcbiAgICBzdHJpY3Q6IGZhbHNlLFxuICB9KSkuc29ydCgoYSwgYikgPT4gYS5zcGxpdChwYXRoLnNlcCkubGVuZ3RoIC0gYi5zcGxpdChwYXRoLnNlcCkubGVuZ3RoKTtcbiAgcmV0dXJuIFt0bXBSb290LCBzb3J0ZWRCdW5kbGVJdGVtc107XG59XG5cbi8qKlxuICogTW92ZXMgdGhlIGFwcGxpY2F0aW9uIGJ1bmRsZSB0byBhIG5ld2x5IGNyZWF0ZWQgdGVtcG9yYXJ5IGZvbGRlclxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBhcHBSb290IEZ1bGwgcGF0aCB0byB0aGUgLmFwcCBidW5kbGVcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBuZXcgcGF0aCB0byB0aGUgYXBwIGJ1bmRsZS5cbiAqIFRoZSBuYW1lIG9mIHRoZSBhcHAgYnVuZGxlIHJlbWFpbnMgdGhvdWdoXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGlzb2xhdGVBcHBCdW5kbGUgKGFwcFJvb3QpIHtcbiAgY29uc3QgdG1wUm9vdCA9IGF3YWl0IHRlbXBEaXIub3BlbkRpcigpO1xuICBjb25zdCBkc3RSb290ID0gcGF0aC5qb2luKHRtcFJvb3QsIHBhdGguYmFzZW5hbWUoYXBwUm9vdCkpO1xuICBhd2FpdCBmcy5tdihhcHBSb290LCBkc3RSb290LCB7bWtkaXJwOiB0cnVlfSk7XG4gIHJldHVybiBkc3RSb290O1xufVxuXG5leHBvcnQge1xuICBleHRyYWN0QnVuZGxlSWQsIHZlcmlmeUFwcGxpY2F0aW9uUGxhdGZvcm0sIHBhcnNlTG9jYWxpemFibGVTdHJpbmdzLFxuICBTQUZBUklfQlVORExFX0lELCBmZXRjaFN1cHBvcnRlZEFwcFBsYXRmb3JtcywgQVBQX0VYVCwgSVBBX0VYVCxcbiAgaXNBcHBCdW5kbGUsIGZpbmRBcHBzLCBpc29sYXRlQXBwQnVuZGxlLFxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsS0FBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsUUFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsT0FBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBRUEsTUFBTUksb0JBQW9CLEdBQUcsY0FBYztBQUMzQyxNQUFNQyxnQkFBZ0IsR0FBRyxVQUFVO0FBQ25DLE1BQU1DLGdCQUFnQixHQUFHLHdCQUF3QjtBQUFDQyxPQUFBLENBQUFELGdCQUFBLEdBQUFBLGdCQUFBO0FBQ2xELE1BQU1FLE9BQU8sR0FBRyxNQUFNO0FBQUNELE9BQUEsQ0FBQUMsT0FBQSxHQUFBQSxPQUFBO0FBQ3ZCLE1BQU1DLE9BQU8sR0FBRyxNQUFNO0FBQUNGLE9BQUEsQ0FBQUUsT0FBQSxHQUFBQSxPQUFBO0FBRXZCLGVBQWVDLGlCQUFpQkEsQ0FBRUMsR0FBRyxFQUFFQyxTQUFTLEVBQUU7RUFDaEQsTUFBTUMsU0FBUyxHQUFHQyxhQUFJLENBQUNDLE9BQU8sQ0FBQ0osR0FBRyxFQUFFLFlBQVksQ0FBQztFQUNqRCxJQUFJO0lBQ0YsT0FBTyxDQUFDLE1BQU1LLGNBQUssQ0FBQ0MsY0FBYyxDQUFDSixTQUFTLENBQUMsRUFBRUQsU0FBUyxDQUFDO0VBQzNELENBQUMsQ0FBQyxPQUFPTSxHQUFHLEVBQUU7SUFDWixNQUFNLElBQUlDLEtBQUssQ0FBRSxzQ0FBcUNMLGFBQUksQ0FBQ00sUUFBUSxDQUFDVCxHQUFHLENBQUUsTUFBS08sR0FBRyxDQUFDRyxPQUFRLEVBQUMsQ0FBQztFQUM5RjtBQUNGO0FBRUEsZUFBZUMsZUFBZUEsQ0FBRVgsR0FBRyxFQUFFO0VBQ25DLE1BQU1ZLFFBQVEsR0FBRyxNQUFNYixpQkFBaUIsQ0FBQ0MsR0FBRyxFQUFFLG9CQUFvQixDQUFDO0VBQ25FYSxlQUFHLENBQUNDLEtBQUssQ0FBRSwrQkFBOEJkLEdBQUksT0FBTVksUUFBUyxHQUFFLENBQUM7RUFDL0QsT0FBT0EsUUFBUTtBQUNqQjtBQUVBLGVBQWVHLDBCQUEwQkEsQ0FBRWYsR0FBRyxFQUFFO0VBQzlDLElBQUk7SUFDRixNQUFNZ0IsTUFBTSxHQUFHLE1BQU1qQixpQkFBaUIsQ0FBQ0MsR0FBRyxFQUFFLDRCQUE0QixDQUFDO0lBQ3pFLElBQUksQ0FBQ2lCLGVBQUMsQ0FBQ0MsT0FBTyxDQUFDRixNQUFNLENBQUMsRUFBRTtNQUN0QkgsZUFBRyxDQUFDTSxJQUFJLENBQUUsR0FBRWhCLGFBQUksQ0FBQ00sUUFBUSxDQUFDVCxHQUFHLENBQUUsbURBQWtELENBQUM7TUFDbEYsT0FBTyxFQUFFO0lBQ1g7SUFDQSxPQUFPZ0IsTUFBTTtFQUNmLENBQUMsQ0FBQyxPQUFPVCxHQUFHLEVBQUU7SUFDWk0sZUFBRyxDQUFDTSxJQUFJLENBQ0wsd0RBQXVEaEIsYUFBSSxDQUFDTSxRQUFRLENBQUNULEdBQUcsQ0FBRSxNQUFLTyxHQUFHLENBQUNHLE9BQVEsRUFBQyxDQUM5RjtJQUNELE9BQU8sRUFBRTtFQUNYO0FBQ0Y7QUFpQkEsZUFBZVUseUJBQXlCQSxDQUFFcEIsR0FBRyxFQUFFcUIsZ0JBQWdCLEVBQUU7RUFDL0RSLGVBQUcsQ0FBQ0MsS0FBSyxDQUFDLGdDQUFnQyxDQUFDO0VBRTNDLE1BQU1RLGtCQUFrQixHQUFHLE1BQU1QLDBCQUEwQixDQUFDZixHQUFHLENBQUM7RUFDaEVhLGVBQUcsQ0FBQ0MsS0FBSyxDQUFFLCtCQUE4QlMsSUFBSSxDQUFDQyxTQUFTLENBQUNGLGtCQUFrQixDQUFFLEVBQUMsQ0FBQztFQUU5RSxNQUFNO0lBQ0pHLFdBQVc7SUFDWEM7RUFDRixDQUFDLEdBQUdMLGdCQUFnQjtFQUNwQixNQUFNTSxNQUFNLEdBQUdELE1BQU0sR0FBRyxTQUFTLEdBQUcsUUFBUTtFQUM1QyxNQUFNRSxNQUFNLEdBQUdILFdBQVcsR0FBRyxXQUFXLEdBQUcsSUFBSTtFQUMvQyxNQUFNSSxXQUFXLEdBQUksR0FBRUYsTUFBTyxHQUFFQyxNQUFPLEVBQUM7RUFDeEMsSUFBSSxDQUFDTixrQkFBa0IsQ0FBQ1EsUUFBUSxDQUFDRCxXQUFXLENBQUMsRUFBRTtJQUM3QyxNQUFNLElBQUlyQixLQUFLLENBQUUsR0FBRWlCLFdBQVcsR0FBRyxXQUFXLEdBQUcsYUFBYyx3Q0FBdUN6QixHQUFJLGlCQUFnQixHQUNySCx5RkFBd0YsQ0FBQztFQUM5RjtBQUNGO0FBRUEsZUFBZStCLFlBQVlBLENBQUVDLFlBQVksRUFBRTtFQUN6QyxNQUFNQyxJQUFJLEdBQUcsTUFBTTVCLGNBQUssQ0FBQ0MsY0FBYyxDQUFDMEIsWUFBWSxDQUFDO0VBQ3JELE1BQU1oQixNQUFNLEdBQUcsQ0FBQyxDQUFDO0VBQ2pCLEtBQUssTUFBTSxDQUFDa0IsR0FBRyxFQUFFQyxLQUFLLENBQUMsSUFBSWxCLGVBQUMsQ0FBQ21CLE9BQU8sQ0FBQ0gsSUFBSSxDQUFDLEVBQUU7SUFDMUNqQixNQUFNLENBQUNrQixHQUFHLENBQUMsR0FBR2pCLGVBQUMsQ0FBQ29CLFFBQVEsQ0FBQ0YsS0FBSyxDQUFDLEdBQUdBLEtBQUssR0FBR1osSUFBSSxDQUFDQyxTQUFTLENBQUNXLEtBQUssQ0FBQztFQUNqRTtFQUNBLE9BQU9uQixNQUFNO0FBQ2Y7QUFFQSxlQUFlc0IsdUJBQXVCQSxDQUFFQyxJQUFJLEVBQUU7RUFDNUMsTUFBTTtJQUNKdkMsR0FBRztJQUNId0MsUUFBUSxHQUFHLElBQUk7SUFDZkMscUJBQXFCO0lBQ3JCQyxVQUFVO0lBQ1ZDO0VBQ0YsQ0FBQyxHQUFHSixJQUFJO0VBRVIsSUFBSSxDQUFDdkMsR0FBRyxFQUFFO0lBQ1IsTUFBTVUsT0FBTyxHQUFJLG9FQUFtRTtJQUNwRixJQUFJaUMsVUFBVSxFQUFFO01BQ2QsTUFBTSxJQUFJbkMsS0FBSyxDQUFDRSxPQUFPLENBQUM7SUFDMUI7SUFDQUcsZUFBRyxDQUFDK0IsSUFBSSxDQUFDbEMsT0FBTyxDQUFDO0lBQ2pCLE9BQU8sQ0FBQyxDQUFDO0VBQ1g7RUFFQSxJQUFJbUMsU0FBUztFQUNiLEtBQUssTUFBTUMsU0FBUyxJQUFJLENBQUUsR0FBRU4sUUFBUyxRQUFPLEVBQUVDLHFCQUFxQixFQUFFLEVBQUUsQ0FBQyxFQUFFO0lBQ3hFSSxTQUFTLEdBQUcxQyxhQUFJLENBQUNDLE9BQU8sQ0FBQ0osR0FBRyxFQUFFOEMsU0FBUyxDQUFDO0lBQ3hDLElBQUksTUFBTUMsV0FBRSxDQUFDQyxNQUFNLENBQUNILFNBQVMsQ0FBQyxFQUFFO01BQzlCO0lBQ0Y7SUFDQSxNQUFNbkMsT0FBTyxHQUFJLE9BQU1tQyxTQUFVLG1DQUFrQztJQUNuRSxJQUFJRixVQUFVLEVBQUU7TUFDZCxNQUFNLElBQUluQyxLQUFLLENBQUNFLE9BQU8sQ0FBQztJQUMxQjtJQUNBRyxlQUFHLENBQUNDLEtBQUssQ0FBQ0osT0FBTyxDQUFDO0VBQ3BCO0VBQ0FHLGVBQUcsQ0FBQytCLElBQUksQ0FBRSx1Q0FBc0NDLFNBQVUsR0FBRSxDQUFDO0VBRTdELE1BQU1JLGFBQWEsR0FBRyxFQUFFO0VBQ3hCLElBQUlQLFVBQVUsRUFBRTtJQUNkLE1BQU1RLE9BQU8sR0FBRy9DLGFBQUksQ0FBQ0MsT0FBTyxDQUFDeUMsU0FBUyxFQUFFSCxVQUFVLENBQUM7SUFDbkQsSUFBSSxNQUFNSyxXQUFFLENBQUNDLE1BQU0sQ0FBQ0UsT0FBTyxDQUFDLEVBQUU7TUFDNUJELGFBQWEsQ0FBQ0UsSUFBSSxDQUFDRCxPQUFPLENBQUM7SUFDN0IsQ0FBQyxNQUFNO01BQ0wsTUFBTXhDLE9BQU8sR0FBSSxPQUFNd0MsT0FBUSx1Q0FBc0NsRCxHQUFJLEdBQUU7TUFDM0UsSUFBSTJDLFVBQVUsRUFBRTtRQUNkLE1BQU0sSUFBSW5DLEtBQUssQ0FBQ0UsT0FBTyxDQUFDO01BQzFCO01BQ0FHLGVBQUcsQ0FBQytCLElBQUksQ0FBQ2xDLE9BQU8sQ0FBQztNQUNqQkcsZUFBRyxDQUFDK0IsSUFBSSxDQUFFLDJDQUEwQ0MsU0FBVSxHQUFFLENBQUM7SUFDbkU7RUFDRjtFQUVBLElBQUk1QixlQUFDLENBQUNtQyxPQUFPLENBQUNILGFBQWEsQ0FBQyxLQUFJLE1BQU1GLFdBQUUsQ0FBQ0MsTUFBTSxDQUFDSCxTQUFTLENBQUMsR0FBRTtJQUMxRCxNQUFNUSxhQUFhLEdBQUcsQ0FBQyxNQUFNTixXQUFFLENBQUNPLE9BQU8sQ0FBQ1QsU0FBUyxDQUFDLEVBQy9DVSxNQUFNLENBQUVDLElBQUksSUFBS3ZDLGVBQUMsQ0FBQ3dDLElBQUksQ0FBQyxDQUFDL0QsZ0JBQWdCLEVBQUVELG9CQUFvQixDQUFDLEVBQUdpRSxDQUFDLElBQUtGLElBQUksQ0FBQ0csUUFBUSxDQUFDRCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQzNGRSxHQUFHLENBQUVKLElBQUksSUFBS3JELGFBQUksQ0FBQ0MsT0FBTyxDQUFDeUMsU0FBUyxFQUFFVyxJQUFJLENBQUMsQ0FBQztJQUMvQ1AsYUFBYSxDQUFDRSxJQUFJLENBQUMsR0FBR0UsYUFBYSxDQUFDO0VBQ3RDO0VBQ0F4QyxlQUFHLENBQUMrQixJQUFJLENBQUUsT0FBTUssYUFBYSxDQUFDWSxNQUFPLHlCQUF3QmhCLFNBQVUsR0FBRSxDQUFDO0VBRTFFLElBQUk1QixlQUFDLENBQUNtQyxPQUFPLENBQUNILGFBQWEsQ0FBQyxFQUFFO0lBQzVCLE9BQU8sQ0FBQyxDQUFDO0VBQ1g7RUFFQSxNQUFNYSxhQUFhLEdBQUcsQ0FBQyxDQUFDO0VBQ3hCLE1BQU1DLGNBQWMsR0FBRyxTQUFBQSxDQUFVQyxDQUFDLEVBQUU7SUFDbEMsT0FBTzdELGFBQUksQ0FBQzhELFVBQVUsQ0FBQ0QsQ0FBQyxDQUFDLEdBQUdBLENBQUMsR0FBRzdELGFBQUksQ0FBQ0MsT0FBTyxDQUFDOEQsT0FBTyxDQUFDQyxHQUFHLEVBQUUsRUFBRUgsQ0FBQyxDQUFDO0VBQ2hFLENBQUM7RUFDRCxLQUFLLE1BQU1oQyxZQUFZLElBQUlpQixhQUFhLEVBQUU7SUFDeEMsSUFBSSxDQUFDbUIsYUFBSSxDQUFDQyxTQUFTLENBQUNOLGNBQWMsQ0FBQy9CLFlBQVksQ0FBQyxFQUFFK0IsY0FBYyxDQUFDL0QsR0FBRyxDQUFDLENBQUMsRUFBRTtNQUV0RSxNQUFNLElBQUlRLEtBQUssQ0FBRSxJQUFHd0IsWUFBYSxzQ0FBcUNoQyxHQUFJLEdBQUUsQ0FBQztJQUMvRTtJQUNBLElBQUk7TUFDRixNQUFNaUMsSUFBSSxHQUFHLE1BQU1GLFlBQVksQ0FBQ0MsWUFBWSxDQUFDO01BQzdDbkIsZUFBRyxDQUFDQyxLQUFLLENBQUUsVUFBU0csZUFBQyxDQUFDcUQsSUFBSSxDQUFDckMsSUFBSSxDQUFDLENBQUM0QixNQUFPLG9CQUFtQjdCLFlBQWEsR0FBRSxDQUFDO01BQzNFZixlQUFDLENBQUNzRCxLQUFLLENBQUNULGFBQWEsRUFBRTdCLElBQUksQ0FBQztJQUM5QixDQUFDLENBQUMsT0FBT3VDLENBQUMsRUFBRTtNQUNWM0QsZUFBRyxDQUFDTSxJQUFJLENBQUUsaUJBQWdCYSxZQUFhLCtCQUE4QndDLENBQUMsQ0FBQzlELE9BQVEsRUFBQyxDQUFDO0lBQ25GO0VBQ0Y7RUFFQUcsZUFBRyxDQUFDK0IsSUFBSSxDQUFFLE9BQU0zQixlQUFDLENBQUNxRCxJQUFJLENBQUNSLGFBQWEsQ0FBQyxDQUFDRCxNQUFPLG9CQUFtQmhCLFNBQVUsR0FBRSxDQUFDO0VBQzdFLE9BQU9pQixhQUFhO0FBQ3RCO0FBUUEsZUFBZVcsV0FBV0EsQ0FBRUMsT0FBTyxFQUFFO0VBQ25DLE9BQU96RCxlQUFDLENBQUMwQyxRQUFRLENBQUMxQyxlQUFDLENBQUMwRCxPQUFPLENBQUNELE9BQU8sQ0FBQyxFQUFFN0UsT0FBTyxDQUFDLElBQ3pDLENBQUMsTUFBTWtELFdBQUUsQ0FBQzZCLElBQUksQ0FBQ0YsT0FBTyxDQUFDLEVBQUVHLFdBQVcsRUFBRSxLQUN0QyxNQUFNOUIsV0FBRSxDQUFDQyxNQUFNLENBQUM3QyxhQUFJLENBQUMyRSxJQUFJLENBQUNKLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQztBQUN4RDtBQVdBLGVBQWVLLFFBQVFBLENBQUVDLFdBQVcsRUFBRUMsYUFBYSxFQUFFO0VBQ25ELE1BQU1DLGlCQUFpQixHQUFHaEIsT0FBTyxDQUFDaUIsR0FBRyxDQUFDQywwQkFBMEI7RUFDaEUsTUFBTUMsY0FBYyxHQUFHcEUsZUFBQyxDQUFDbUMsT0FBTyxDQUFDOEIsaUJBQWlCLENBQUMsSUFDOUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQ3BELFFBQVEsQ0FBQ2IsZUFBQyxDQUFDMEQsT0FBTyxDQUFDTyxpQkFBaUIsQ0FBQyxDQUFDO0VBQzNELE1BQU1JLE9BQU8sR0FBRyxNQUFNQyxnQkFBTyxDQUFDQyxPQUFPLEVBQUU7RUFDdkMsTUFBTUMsWUFBRyxDQUFDQyxZQUFZLENBQUNWLFdBQVcsRUFBRU0sT0FBTyxFQUFFO0lBQUNEO0VBQWMsQ0FBQyxDQUFDO0VBQzlELE1BQU1NLFdBQVcsR0FBSSxVQUFTVixhQUFhLENBQUNyQixHQUFHLENBQUVnQyxHQUFHLElBQUtBLEdBQUcsQ0FBQ0MsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDZixJQUFJLENBQUMsR0FBRyxDQUFFLEdBQUU7RUFDN0YsTUFBTWdCLGlCQUFpQixHQUFHLENBQUMsTUFBTS9DLFdBQUUsQ0FBQ2dELElBQUksQ0FBQ0osV0FBVyxFQUFFO0lBQ3BEeEIsR0FBRyxFQUFFbUIsT0FBTztJQUNaVSxNQUFNLEVBQUU7RUFDVixDQUFDLENBQUMsRUFBRUMsSUFBSSxDQUFDLENBQUNDLENBQUMsRUFBRUMsQ0FBQyxLQUFLRCxDQUFDLENBQUNFLEtBQUssQ0FBQ2pHLGFBQUksQ0FBQ2tHLEdBQUcsQ0FBQyxDQUFDeEMsTUFBTSxHQUFHc0MsQ0FBQyxDQUFDQyxLQUFLLENBQUNqRyxhQUFJLENBQUNrRyxHQUFHLENBQUMsQ0FBQ3hDLE1BQU0sQ0FBQztFQUN2RSxPQUFPLENBQUN5QixPQUFPLEVBQUVRLGlCQUFpQixDQUFDO0FBQ3JDO0FBU0EsZUFBZVEsZ0JBQWdCQSxDQUFFQyxPQUFPLEVBQUU7RUFDeEMsTUFBTWpCLE9BQU8sR0FBRyxNQUFNQyxnQkFBTyxDQUFDQyxPQUFPLEVBQUU7RUFDdkMsTUFBTWdCLE9BQU8sR0FBR3JHLGFBQUksQ0FBQzJFLElBQUksQ0FBQ1EsT0FBTyxFQUFFbkYsYUFBSSxDQUFDTSxRQUFRLENBQUM4RixPQUFPLENBQUMsQ0FBQztFQUMxRCxNQUFNeEQsV0FBRSxDQUFDMEQsRUFBRSxDQUFDRixPQUFPLEVBQUVDLE9BQU8sRUFBRTtJQUFDRSxNQUFNLEVBQUU7RUFBSSxDQUFDLENBQUM7RUFDN0MsT0FBT0YsT0FBTztBQUNoQiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-utils.js","names":["STRINGSDICT_RESOURCE","STRINGS_RESOURCE","SAFARI_BUNDLE_ID","APP_EXT","IPA_EXT","extractPlistEntry","app","entryName","plistPath","path","resolve","plist","parsePlistFile","err","Error","basename","message","extractBundleId","bundleId","log","debug","fetchSupportedAppPlatforms","result","_","isArray","warn","verifyApplicationPlatform","expectedPlatform","supportedPlatforms","JSON","stringify","isSimulator","isTvOS","prefix","suffix","dstPlatform","includes","readResource","resourcePath","data","key","value","toPairs","isString","parseLocalizableStrings","opts","language","localizableStringsDir","stringFile","strictMode","info","lprojRoot","subfolder","fs","exists","resourcePaths","dstPath","push","isEmpty","resourceFiles","readdir","filter","name","some","x","endsWith","map","length","resultStrings","toAbsolutePath","p","isAbsolute","process","cwd","util","isSubPath","keys","merge","e","isAppBundle","appPath","toLower","stat","isDirectory","join","findApps","archivePath","appExtensions","useSystemUnzipEnv","env","APPIUM_PREFER_SYSTEM_UNZIP","useSystemUnzip","tmpRoot","tempDir","openDir","zip","extractAllTo","globPattern","ext","replace","sortedBundleItems","glob","strict","sort","a","b","split","sep","isolateAppBundle","appRoot","dstRoot","mv","mkdirp"],"sources":["../../lib/app-utils.js"],"sourcesContent":["import _ from 'lodash';\nimport path from 'path';\nimport { plist, fs, util, tempDir, zip } from 'appium/support';\nimport log from './logger.js';\n\nconst STRINGSDICT_RESOURCE = '.stringsdict';\nconst STRINGS_RESOURCE = '.strings';\nconst SAFARI_BUNDLE_ID = 'com.apple.mobilesafari';\nconst APP_EXT = '.app';\nconst IPA_EXT = '.ipa';\n\nasync function extractPlistEntry (app, entryName) {\n const plistPath = path.resolve(app, 'Info.plist');\n try {\n return (await plist.parsePlistFile(plistPath))[entryName];\n } catch (err) {\n throw new Error(`Could not extract Info.plist from '${path.basename(app)}': ${err.message}`);\n }\n}\n\nasync function extractBundleId (app) {\n const bundleId = await extractPlistEntry(app, 'CFBundleIdentifier');\n log.debug(`Getting bundle ID from app '${app}': '${bundleId}'`);\n return bundleId;\n}\n\nasync function fetchSupportedAppPlatforms (app) {\n try {\n const result = await extractPlistEntry(app, 'CFBundleSupportedPlatforms');\n if (!_.isArray(result)) {\n log.warn(`${path.basename(app)}': CFBundleSupportedPlatforms is not a valid list`);\n return [];\n }\n return result;\n } catch (err) {\n log.warn(\n `Cannot extract the list of supported platforms from '${path.basename(app)}': ${err.message}`\n );\n return [];\n }\n}\n\n/**\n * @typedef {Object} PlatformOpts\n *\n * @property {boolean} isSimulator - Whether the destination platform is a Simulator\n * @property {boolean} isTvOS - Whether the destination platform is a Simulator\n */\n\n/**\n * Verify whether the given application is compatible to the\n * platform where it is going to be installed and tested.\n *\n * @param {string} app - The actual path to the application bundle\n * @param {PlatformOpts} expectedPlatform\n * @throws {Error} If bundle architecture does not match the expected device architecture.\n */\nasync function verifyApplicationPlatform (app, expectedPlatform) {\n log.debug('Verifying application platform');\n\n const supportedPlatforms = await fetchSupportedAppPlatforms(app);\n log.debug(`CFBundleSupportedPlatforms: ${JSON.stringify(supportedPlatforms)}`);\n\n const {\n isSimulator,\n isTvOS,\n } = expectedPlatform;\n const prefix = isTvOS ? 'AppleTV' : 'iPhone';\n const suffix = isSimulator ? 'Simulator' : 'OS';\n const dstPlatform = `${prefix}${suffix}`;\n if (!supportedPlatforms.includes(dstPlatform)) {\n throw new Error(`${isSimulator ? 'Simulator' : 'Real device'} architecture is unsupported by the '${app}' application. ` +\n `Make sure the correct deployment target has been selected for its compilation in Xcode.`);\n }\n}\n\nasync function readResource (resourcePath) {\n const data = await plist.parsePlistFile(resourcePath);\n const result = {};\n for (const [key, value] of _.toPairs(data)) {\n result[key] = _.isString(value) ? value : JSON.stringify(value);\n }\n return result;\n}\n\nasync function parseLocalizableStrings (opts) {\n const {\n app,\n language = 'en',\n localizableStringsDir,\n stringFile,\n strictMode,\n } = opts;\n\n if (!app) {\n const message = `Strings extraction is not supported if 'app' capability is not set`;\n if (strictMode) {\n throw new Error(message);\n }\n log.info(message);\n return {};\n }\n\n let lprojRoot;\n for (const subfolder of [`${language}.lproj`, localizableStringsDir, '']) {\n lprojRoot = path.resolve(app, subfolder);\n if (await fs.exists(lprojRoot)) {\n break;\n }\n const message = `No '${lprojRoot}' resources folder has been found`;\n if (strictMode) {\n throw new Error(message);\n }\n log.debug(message);\n }\n log.info(`Will extract resource strings from '${lprojRoot}'`);\n\n const resourcePaths = [];\n if (stringFile) {\n const dstPath = path.resolve(lprojRoot, stringFile);\n if (await fs.exists(dstPath)) {\n resourcePaths.push(dstPath);\n } else {\n const message = `No '${dstPath}' resource file has been found for '${app}'`;\n if (strictMode) {\n throw new Error(message);\n }\n log.info(message);\n log.info(`Getting all the available strings from '${lprojRoot}'`);\n }\n }\n\n if (_.isEmpty(resourcePaths) && await fs.exists(lprojRoot)) {\n const resourceFiles = (await fs.readdir(lprojRoot))\n .filter((name) => _.some([STRINGS_RESOURCE, STRINGSDICT_RESOURCE], (x) => name.endsWith(x)))\n .map((name) => path.resolve(lprojRoot, name));\n resourcePaths.push(...resourceFiles);\n }\n log.info(`Got ${resourcePaths.length} resource file(s) in '${lprojRoot}'`);\n\n if (_.isEmpty(resourcePaths)) {\n return {};\n }\n\n const resultStrings = {};\n const toAbsolutePath = function (p) {\n return path.isAbsolute(p) ? p : path.resolve(process.cwd(), p);\n };\n for (const resourcePath of resourcePaths) {\n if (!util.isSubPath(toAbsolutePath(resourcePath), toAbsolutePath(app))) {\n // security precaution\n throw new Error(`'${resourcePath}' is expected to be located under '${app}'`);\n }\n try {\n const data = await readResource(resourcePath);\n log.debug(`Parsed ${_.keys(data).length} string(s) from '${resourcePath}'`);\n _.merge(resultStrings, data);\n } catch (e) {\n log.warn(`Cannot parse '${resourcePath}' resource. Original error: ${e.message}`);\n }\n }\n\n log.info(`Got ${_.keys(resultStrings).length} string(s) from '${lprojRoot}'`);\n return resultStrings;\n}\n\n/**\n * Check whether the given path on the file system points to the .app bundle root\n *\n * @param {string} appPath Possible .app bundle root\n * @returns {boolean} Whether the given path points to an .app bundle\n */\nasync function isAppBundle (appPath) {\n return _.endsWith(_.toLower(appPath), APP_EXT)\n && (await fs.stat(appPath)).isDirectory()\n && await fs.exists(path.join(appPath, 'Info.plist'));\n}\n\n/**\n * Extract the given archive and looks for items with given extensions in it\n *\n * @param {string} archivePath Full path to a .zip archive\n * @param {Array<string>} appExtensions List of matching item extensions\n * @returns {[string, Array<String>]} Tuple, where the first element points to\n * a temporary folder root where the archive has been extracted and the second item\n * contains a list of relative paths to matched items\n */\nasync function findApps (archivePath, appExtensions) {\n const useSystemUnzipEnv = process.env.APPIUM_PREFER_SYSTEM_UNZIP;\n const useSystemUnzip = _.isEmpty(useSystemUnzipEnv)\n || !['0', 'false'].includes(_.toLower(useSystemUnzipEnv));\n const tmpRoot = await tempDir.openDir();\n await zip.extractAllTo(archivePath, tmpRoot, {useSystemUnzip});\n const globPattern = `**/*.+(${appExtensions.map((ext) => ext.replace(/^\\./, '')).join('|')})`;\n const sortedBundleItems = (await fs.glob(globPattern, {\n cwd: tmpRoot,\n strict: false,\n })).sort((a, b) => a.split(path.sep).length - b.split(path.sep).length);\n return [tmpRoot, sortedBundleItems];\n}\n\n/**\n * Moves the application bundle to a newly created temporary folder\n *\n * @param {string} appRoot Full path to the .app bundle\n * @returns {string} The new path to the app bundle.\n * The name of the app bundle remains though\n */\nasync function isolateAppBundle (appRoot) {\n const tmpRoot = await tempDir.openDir();\n const dstRoot = path.join(tmpRoot, path.basename(appRoot));\n await fs.mv(appRoot, dstRoot, {mkdirp: true});\n return dstRoot;\n}\n\nexport {\n extractBundleId, verifyApplicationPlatform, parseLocalizableStrings,\n SAFARI_BUNDLE_ID, fetchSupportedAppPlatforms, APP_EXT, IPA_EXT,\n isAppBundle, findApps, isolateAppBundle,\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"app-utils.js","names":["_lodash","_interopRequireDefault","require","_path","_support","_logger","STRINGSDICT_RESOURCE","STRINGS_RESOURCE","SAFARI_BUNDLE_ID","exports","APP_EXT","IPA_EXT","extractPlistEntry","app","entryName","plistPath","path","resolve","plist","parsePlistFile","err","Error","basename","message","extractBundleId","bundleId","log","debug","fetchSupportedAppPlatforms","result","_","isArray","warn","verifyApplicationPlatform","expectedPlatform","supportedPlatforms","JSON","stringify","isSimulator","isTvOS","prefix","suffix","dstPlatform","includes","readResource","resourcePath","data","key","value","toPairs","isString","parseLocalizableStrings","opts","language","localizableStringsDir","stringFile","strictMode","info","lprojRoot","subfolder","fs","exists","resourcePaths","dstPath","push","isEmpty","resourceFiles","readdir","filter","name","some","x","endsWith","map","length","resultStrings","toAbsolutePath","p","isAbsolute","process","cwd","util","isSubPath","keys","merge","e","isAppBundle","appPath","toLower","stat","isDirectory","join","findApps","archivePath","appExtensions","useSystemUnzipEnv","env","APPIUM_PREFER_SYSTEM_UNZIP","useSystemUnzip","tmpRoot","tempDir","openDir","zip","extractAllTo","globPattern","ext","replace","sortedBundleItems","glob","strict","sort","a","b","split","sep","isolateAppBundle","appRoot","dstRoot","mv","mkdirp"],"sources":["../../lib/app-utils.js"],"sourcesContent":["import _ from 'lodash';\nimport path from 'path';\nimport { plist, fs, util, tempDir, zip } from 'appium/support';\nimport log from './logger.js';\n\nconst STRINGSDICT_RESOURCE = '.stringsdict';\nconst STRINGS_RESOURCE = '.strings';\nconst SAFARI_BUNDLE_ID = 'com.apple.mobilesafari';\nconst APP_EXT = '.app';\nconst IPA_EXT = '.ipa';\n\nasync function extractPlistEntry (app, entryName) {\n const plistPath = path.resolve(app, 'Info.plist');\n try {\n return (await plist.parsePlistFile(plistPath))[entryName];\n } catch (err) {\n throw new Error(`Could not extract Info.plist from '${path.basename(app)}': ${err.message}`);\n }\n}\n\nasync function extractBundleId (app) {\n const bundleId = await extractPlistEntry(app, 'CFBundleIdentifier');\n log.debug(`Getting bundle ID from app '${app}': '${bundleId}'`);\n return bundleId;\n}\n\nasync function fetchSupportedAppPlatforms (app) {\n try {\n const result = await extractPlistEntry(app, 'CFBundleSupportedPlatforms');\n if (!_.isArray(result)) {\n log.warn(`${path.basename(app)}': CFBundleSupportedPlatforms is not a valid list`);\n return [];\n }\n return result;\n } catch (err) {\n log.warn(\n `Cannot extract the list of supported platforms from '${path.basename(app)}': ${err.message}`\n );\n return [];\n }\n}\n\n/**\n * @typedef {Object} PlatformOpts\n *\n * @property {boolean} isSimulator - Whether the destination platform is a Simulator\n * @property {boolean} isTvOS - Whether the destination platform is a Simulator\n */\n\n/**\n * Verify whether the given application is compatible to the\n * platform where it is going to be installed and tested.\n *\n * @param {string} app - The actual path to the application bundle\n * @param {PlatformOpts} expectedPlatform\n * @throws {Error} If bundle architecture does not match the expected device architecture.\n */\nasync function verifyApplicationPlatform (app, expectedPlatform) {\n log.debug('Verifying application platform');\n\n const supportedPlatforms = await fetchSupportedAppPlatforms(app);\n log.debug(`CFBundleSupportedPlatforms: ${JSON.stringify(supportedPlatforms)}`);\n\n const {\n isSimulator,\n isTvOS,\n } = expectedPlatform;\n const prefix = isTvOS ? 'AppleTV' : 'iPhone';\n const suffix = isSimulator ? 'Simulator' : 'OS';\n const dstPlatform = `${prefix}${suffix}`;\n if (!supportedPlatforms.includes(dstPlatform)) {\n throw new Error(`${isSimulator ? 'Simulator' : 'Real device'} architecture is unsupported by the '${app}' application. ` +\n `Make sure the correct deployment target has been selected for its compilation in Xcode.`);\n }\n}\n\nasync function readResource (resourcePath) {\n const data = await plist.parsePlistFile(resourcePath);\n const result = {};\n for (const [key, value] of _.toPairs(data)) {\n result[key] = _.isString(value) ? value : JSON.stringify(value);\n }\n return result;\n}\n\nasync function parseLocalizableStrings (opts) {\n const {\n app,\n language = 'en',\n localizableStringsDir,\n stringFile,\n strictMode,\n } = opts;\n\n if (!app) {\n const message = `Strings extraction is not supported if 'app' capability is not set`;\n if (strictMode) {\n throw new Error(message);\n }\n log.info(message);\n return {};\n }\n\n let lprojRoot;\n for (const subfolder of [`${language}.lproj`, localizableStringsDir, '']) {\n lprojRoot = path.resolve(app, subfolder);\n if (await fs.exists(lprojRoot)) {\n break;\n }\n const message = `No '${lprojRoot}' resources folder has been found`;\n if (strictMode) {\n throw new Error(message);\n }\n log.debug(message);\n }\n log.info(`Will extract resource strings from '${lprojRoot}'`);\n\n const resourcePaths = [];\n if (stringFile) {\n const dstPath = path.resolve(lprojRoot, stringFile);\n if (await fs.exists(dstPath)) {\n resourcePaths.push(dstPath);\n } else {\n const message = `No '${dstPath}' resource file has been found for '${app}'`;\n if (strictMode) {\n throw new Error(message);\n }\n log.info(message);\n log.info(`Getting all the available strings from '${lprojRoot}'`);\n }\n }\n\n if (_.isEmpty(resourcePaths) && await fs.exists(lprojRoot)) {\n const resourceFiles = (await fs.readdir(lprojRoot))\n .filter((name) => _.some([STRINGS_RESOURCE, STRINGSDICT_RESOURCE], (x) => name.endsWith(x)))\n .map((name) => path.resolve(lprojRoot, name));\n resourcePaths.push(...resourceFiles);\n }\n log.info(`Got ${resourcePaths.length} resource file(s) in '${lprojRoot}'`);\n\n if (_.isEmpty(resourcePaths)) {\n return {};\n }\n\n const resultStrings = {};\n const toAbsolutePath = function (p) {\n return path.isAbsolute(p) ? p : path.resolve(process.cwd(), p);\n };\n for (const resourcePath of resourcePaths) {\n if (!util.isSubPath(toAbsolutePath(resourcePath), toAbsolutePath(app))) {\n // security precaution\n throw new Error(`'${resourcePath}' is expected to be located under '${app}'`);\n }\n try {\n const data = await readResource(resourcePath);\n log.debug(`Parsed ${_.keys(data).length} string(s) from '${resourcePath}'`);\n _.merge(resultStrings, data);\n } catch (e) {\n log.warn(`Cannot parse '${resourcePath}' resource. Original error: ${e.message}`);\n }\n }\n\n log.info(`Got ${_.keys(resultStrings).length} string(s) from '${lprojRoot}'`);\n return resultStrings;\n}\n\n/**\n * Check whether the given path on the file system points to the .app bundle root\n *\n * @param {string} appPath Possible .app bundle root\n * @returns {boolean} Whether the given path points to an .app bundle\n */\nasync function isAppBundle (appPath) {\n return _.endsWith(_.toLower(appPath), APP_EXT)\n && (await fs.stat(appPath)).isDirectory()\n && await fs.exists(path.join(appPath, 'Info.plist'));\n}\n\n/**\n * Extract the given archive and looks for items with given extensions in it\n *\n * @param {string} archivePath Full path to a .zip archive\n * @param {Array<string>} appExtensions List of matching item extensions\n * @returns {[string, Array<String>]} Tuple, where the first element points to\n * a temporary folder root where the archive has been extracted and the second item\n * contains a list of relative paths to matched items\n */\nasync function findApps (archivePath, appExtensions) {\n const useSystemUnzipEnv = process.env.APPIUM_PREFER_SYSTEM_UNZIP;\n const useSystemUnzip = _.isEmpty(useSystemUnzipEnv)\n || !['0', 'false'].includes(_.toLower(useSystemUnzipEnv));\n const tmpRoot = await tempDir.openDir();\n await zip.extractAllTo(archivePath, tmpRoot, {useSystemUnzip});\n const globPattern = `**/*.+(${appExtensions.map((ext) => ext.replace(/^\\./, '')).join('|')})`;\n const sortedBundleItems = (await fs.glob(globPattern, {\n cwd: tmpRoot,\n strict: false,\n })).sort((a, b) => a.split(path.sep).length - b.split(path.sep).length);\n return [tmpRoot, sortedBundleItems];\n}\n\n/**\n * Moves the application bundle to a newly created temporary folder\n *\n * @param {string} appRoot Full path to the .app bundle\n * @returns {string} The new path to the app bundle.\n * The name of the app bundle remains though\n */\nasync function isolateAppBundle (appRoot) {\n const tmpRoot = await tempDir.openDir();\n const dstRoot = path.join(tmpRoot, path.basename(appRoot));\n await fs.mv(appRoot, dstRoot, {mkdirp: true});\n return dstRoot;\n}\n\nexport {\n extractBundleId, verifyApplicationPlatform, parseLocalizableStrings,\n SAFARI_BUNDLE_ID, fetchSupportedAppPlatforms, APP_EXT, IPA_EXT,\n isAppBundle, findApps, isolateAppBundle,\n};\n"],"mappings":"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"}
|
package/build/lib/build-wda.js
CHANGED
|
@@ -31,4 +31,4 @@ if (require.main === module) {
|
|
|
31
31
|
}
|
|
32
32
|
var _default = build;
|
|
33
33
|
exports.default = _default;
|
|
34
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYXBwaXVtV2ViZHJpdmVyYWdlbnQiLCJyZXF1aXJlIiwiX3V0aWxzIiwiX3NpbXVsYXRvck1hbmFnZW1lbnQiLCJfYXN5bmNib3giLCJERUZBVUxUX1NJTV9OQU1FIiwiYnVpbGQiLCJ4Y29kZVZlcnNpb24iLCJnZXRBbmRDaGVja1hjb2RlVmVyc2lvbiIsImlvc1ZlcnNpb24iLCJnZXRBbmRDaGVja0lvc1Nka1ZlcnNpb24iLCJkZXZpY2VOYW1lIiwidHJhbnNsYXRlRGV2aWNlTmFtZSIsImRldmljZSIsImdldEV4aXN0aW5nU2ltIiwicGxhdGZvcm1WZXJzaW9uIiwid2RhIiwiV2ViRHJpdmVyQWdlbnQiLCJpb3NTZGtWZXJzaW9uIiwic2hvd1hjb2RlTG9nIiwieGNvZGVidWlsZCIsInN0YXJ0IiwibWFpbiIsIm1vZHVsZSIsImFzeW5jaWZ5IiwiX2RlZmF1bHQiLCJleHBvcnRzIiwiZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9idWlsZC13ZGEuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgV2ViRHJpdmVyQWdlbnQgfSBmcm9tICdhcHBpdW0td2ViZHJpdmVyYWdlbnQnO1xuaW1wb3J0IHsgdHJhbnNsYXRlRGV2aWNlTmFtZSwgZ2V0QW5kQ2hlY2tYY29kZVZlcnNpb24sIGdldEFuZENoZWNrSW9zU2RrVmVyc2lvbiB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgZ2V0RXhpc3RpbmdTaW0gfSBmcm9tICcuL3NpbXVsYXRvci1tYW5hZ2VtZW50JztcbmltcG9ydCB7IGFzeW5jaWZ5IH0gZnJvbSAnYXN5bmNib3gnO1xuXG5jb25zdCBERUZBVUxUX1NJTV9OQU1FID0gJ2lQaG9uZSAxMic7XG5cbi8vIFRPRE86IGFsbG93IHBhc3NpbmcgaW4gYWxsIHRoZSB2YXJpb3VzIGJ1aWxkIHBhcmFtcyBhcyBDTEkgYXJnc1xuYXN5bmMgZnVuY3Rpb24gYnVpbGQgKCkge1xuICBjb25zdCB4Y29kZVZlcnNpb24gPSBhd2FpdCBnZXRBbmRDaGVja1hjb2RlVmVyc2lvbigpO1xuICBjb25zdCBpb3NWZXJzaW9uID0gYXdhaXQgZ2V0QW5kQ2hlY2tJb3NTZGtWZXJzaW9uKCk7XG4gIGNvbnN0IGRldmljZU5hbWUgPSB0cmFuc2xhdGVEZXZpY2VOYW1lKGlvc1ZlcnNpb24sIERFRkFVTFRfU0lNX05BTUUpO1xuICBjb25zdCBkZXZpY2UgPSBhd2FpdCBnZXRFeGlzdGluZ1NpbSh7XG4gICAgcGxhdGZvcm1WZXJzaW9uOiBpb3NWZXJzaW9uLFxuICAgIGRldmljZU5hbWVcbiAgfSk7XG4gIGNvbnN0IHdkYSA9IG5ldyBXZWJEcml2ZXJBZ2VudCh4Y29kZVZlcnNpb24sIHtcbiAgICBpb3NTZGtWZXJzaW9uOiBpb3NWZXJzaW9uLFxuICAgIHBsYXRmb3JtVmVyc2lvbjogaW9zVmVyc2lvbixcbiAgICBzaG93WGNvZGVMb2c6IHRydWUsXG4gICAgZGV2aWNlLFxuICB9KTtcbiAgYXdhaXQgd2RhLnhjb2RlYnVpbGQuc3RhcnQodHJ1ZSk7XG59XG5cbmlmIChyZXF1aXJlLm1haW4gPT09IG1vZHVsZSkge1xuICBhc3luY2lmeShidWlsZCk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGJ1aWxkO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsSUFBQUEscUJBQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLE1BQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLG9CQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxTQUFBLEdBQUFILE9BQUE7QUFFQSxNQUFNSSxnQkFBZ0IsR0FBRyxXQUFXO0FBR3BDLGVBQWVDLEtBQUtBLENBQUEsRUFBSTtFQUN0QixNQUFNQyxZQUFZLEdBQUcsTUFBTSxJQUFBQyw4QkFBdUIsR0FBRTtFQUNwRCxNQUFNQyxVQUFVLEdBQUcsTUFBTSxJQUFBQywrQkFBd0IsR0FBRTtFQUNuRCxNQUFNQyxVQUFVLEdBQUcsSUFBQUMsMEJBQW1CLEVBQUNILFVBQVUsRUFBRUosZ0JBQWdCLENBQUM7RUFDcEUsTUFBTVEsTUFBTSxHQUFHLE1BQU0sSUFBQUMsbUNBQWMsRUFBQztJQUNsQ0MsZUFBZSxFQUFFTixVQUFVO0lBQzNCRTtFQUNGLENBQUMsQ0FBQztFQUNGLE1BQU1LLEdBQUcsR0FBRyxJQUFJQyxvQ0FBYyxDQUFDVixZQUFZLEVBQUU7SUFDM0NXLGFBQWEsRUFBRVQsVUFBVTtJQUN6Qk0sZUFBZSxFQUFFTixVQUFVO0lBQzNCVSxZQUFZLEVBQUUsSUFBSTtJQUNsQk47RUFDRixDQUFDLENBQUM7RUFDRixNQUFNRyxHQUFHLENBQUNJLFVBQVUsQ0FBQ0MsS0FBSyxDQUFDLElBQUksQ0FBQztBQUNsQztBQUVBLElBQUlwQixPQUFPLENBQUNxQixJQUFJLEtBQUtDLE1BQU0sRUFBRTtFQUMzQixJQUFBQyxrQkFBUSxFQUFDbEIsS0FBSyxDQUFDO0FBQ2pCO0FBQUMsSUFBQW1CLFFBQUEsR0FFY25CLEtBQUs7QUFBQW9CLE9BQUEsQ0FBQUMsT0FBQSxHQUFBRixRQUFBIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-wda.js","names":["DEFAULT_SIM_NAME","build","xcodeVersion","getAndCheckXcodeVersion","iosVersion","getAndCheckIosSdkVersion","deviceName","translateDeviceName","device","getExistingSim","platformVersion","wda","WebDriverAgent","iosSdkVersion","showXcodeLog","xcodebuild","start","
|
|
1
|
+
{"version":3,"file":"build-wda.js","names":["_appiumWebdriveragent","require","_utils","_simulatorManagement","_asyncbox","DEFAULT_SIM_NAME","build","xcodeVersion","getAndCheckXcodeVersion","iosVersion","getAndCheckIosSdkVersion","deviceName","translateDeviceName","device","getExistingSim","platformVersion","wda","WebDriverAgent","iosSdkVersion","showXcodeLog","xcodebuild","start","main","module","asyncify","_default","exports","default"],"sources":["../../lib/build-wda.js"],"sourcesContent":["import { WebDriverAgent } from 'appium-webdriveragent';\nimport { translateDeviceName, getAndCheckXcodeVersion, getAndCheckIosSdkVersion } from './utils';\nimport { getExistingSim } from './simulator-management';\nimport { asyncify } from 'asyncbox';\n\nconst DEFAULT_SIM_NAME = 'iPhone 12';\n\n// TODO: allow passing in all the various build params as CLI args\nasync function build () {\n const xcodeVersion = await getAndCheckXcodeVersion();\n const iosVersion = await getAndCheckIosSdkVersion();\n const deviceName = translateDeviceName(iosVersion, DEFAULT_SIM_NAME);\n const device = await getExistingSim({\n platformVersion: iosVersion,\n deviceName\n });\n const wda = new WebDriverAgent(xcodeVersion, {\n iosSdkVersion: iosVersion,\n platformVersion: iosVersion,\n showXcodeLog: true,\n device,\n });\n await wda.xcodebuild.start(true);\n}\n\nif (require.main === module) {\n asyncify(build);\n}\n\nexport default build;\n"],"mappings":";;;;;;;AAAA,IAAAA,qBAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,oBAAA,GAAAF,OAAA;AACA,IAAAG,SAAA,GAAAH,OAAA;AAEA,MAAMI,gBAAgB,GAAG,WAAW;AAGpC,eAAeC,KAAKA,CAAA,EAAI;EACtB,MAAMC,YAAY,GAAG,MAAM,IAAAC,8BAAuB,GAAE;EACpD,MAAMC,UAAU,GAAG,MAAM,IAAAC,+BAAwB,GAAE;EACnD,MAAMC,UAAU,GAAG,IAAAC,0BAAmB,EAACH,UAAU,EAAEJ,gBAAgB,CAAC;EACpE,MAAMQ,MAAM,GAAG,MAAM,IAAAC,mCAAc,EAAC;IAClCC,eAAe,EAAEN,UAAU;IAC3BE;EACF,CAAC,CAAC;EACF,MAAMK,GAAG,GAAG,IAAIC,oCAAc,CAACV,YAAY,EAAE;IAC3CW,aAAa,EAAET,UAAU;IACzBM,eAAe,EAAEN,UAAU;IAC3BU,YAAY,EAAE,IAAI;IAClBN;EACF,CAAC,CAAC;EACF,MAAMG,GAAG,CAACI,UAAU,CAACC,KAAK,CAAC,IAAI,CAAC;AAClC;AAEA,IAAIpB,OAAO,CAACqB,IAAI,KAAKC,MAAM,EAAE;EAC3B,IAAAC,kBAAQ,EAAClB,KAAK,CAAC;AACjB;AAAC,IAAAmB,QAAA,GAEcnB,KAAK;AAAAoB,OAAA,CAAAC,OAAA,GAAAF,QAAA"}
|
|
@@ -14,4 +14,4 @@ commands.mobileGetActiveAppInfo = async function mobileGetActiveAppInfo() {
|
|
|
14
14
|
Object.assign(extensions, commands);
|
|
15
15
|
var _default = extensions;
|
|
16
16
|
exports.default = _default;
|
|
17
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
17
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJleHRlbnNpb25zIiwiY29tbWFuZHMiLCJleHBvcnRzIiwibW9iaWxlR2V0QWN0aXZlQXBwSW5mbyIsInByb3h5Q29tbWFuZCIsIk9iamVjdCIsImFzc2lnbiIsIl9kZWZhdWx0IiwiZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9jb21tYW5kcy9hY3RpdmVBcHBJbmZvLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGV4dGVuc2lvbnMgPSB7fSwgY29tbWFuZHMgPSB7fTtcblxuLyoqXG4gKiBSZXR1cm5zIEFjdGl2ZUFwcCBpbmZvLlxuICpcbiAqIEByZXR1cm5zIHtPYmplY3R9IFRoZSByZXNwb25zZSBvZiBgL3dkYS9hY3RpdmVBcHBJbmZvJ2BcbiAqIEB0aHJvd3Mge0Vycm9yfSBpZiBhbiBlcnJvciByYWlzZWQgYnkgY29tbWFuZFxuICovXG5jb21tYW5kcy5tb2JpbGVHZXRBY3RpdmVBcHBJbmZvID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlR2V0QWN0aXZlQXBwSW5mbyAoKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLnByb3h5Q29tbWFuZCgnL3dkYS9hY3RpdmVBcHBJbmZvJywgJ0dFVCcpO1xufTtcblxuT2JqZWN0LmFzc2lnbihleHRlbnNpb25zLCBjb21tYW5kcyk7XG5leHBvcnQgeyBjb21tYW5kcyB9O1xuZXhwb3J0IGRlZmF1bHQgZXh0ZW5zaW9ucztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLE1BQU1BLFVBQVUsR0FBRyxDQUFDLENBQUM7RUFBRUMsUUFBUSxHQUFHLENBQUMsQ0FBQztBQUFDQyxPQUFBLENBQUFELFFBQUEsR0FBQUEsUUFBQTtBQVFyQ0EsUUFBUSxDQUFDRSxzQkFBc0IsR0FBRyxlQUFlQSxzQkFBc0JBLENBQUEsRUFBSTtFQUN6RSxPQUFPLE1BQU0sSUFBSSxDQUFDQyxZQUFZLENBQUMsb0JBQW9CLEVBQUUsS0FBSyxDQUFDO0FBQzdELENBQUM7QUFFREMsTUFBTSxDQUFDQyxNQUFNLENBQUNOLFVBQVUsRUFBRUMsUUFBUSxDQUFDO0FBQUMsSUFBQU0sUUFBQSxHQUVyQlAsVUFBVTtBQUFBRSxPQUFBLENBQUFNLE9BQUEsR0FBQUQsUUFBQSJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"activeAppInfo.js","names":["extensions","commands","mobileGetActiveAppInfo","proxyCommand","Object","assign"],"sources":["../../../lib/commands/activeAppInfo.js"],"sourcesContent":["const extensions = {}, commands = {};\n\n/**\n * Returns ActiveApp info.\n *\n * @returns {Object} The response of `/wda/activeAppInfo'`\n * @throws {Error} if an error raised by command\n */\ncommands.mobileGetActiveAppInfo = async function mobileGetActiveAppInfo () {\n return await this.proxyCommand('/wda/activeAppInfo', 'GET');\n};\n\nObject.assign(extensions, commands);\nexport { commands };\nexport default extensions;\n"],"mappings":";;;;;;;AAAA,MAAMA,UAAU,GAAG,CAAC,CAAC;EAAEC,QAAQ,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"activeAppInfo.js","names":["extensions","commands","exports","mobileGetActiveAppInfo","proxyCommand","Object","assign","_default","default"],"sources":["../../../lib/commands/activeAppInfo.js"],"sourcesContent":["const extensions = {}, commands = {};\n\n/**\n * Returns ActiveApp info.\n *\n * @returns {Object} The response of `/wda/activeAppInfo'`\n * @throws {Error} if an error raised by command\n */\ncommands.mobileGetActiveAppInfo = async function mobileGetActiveAppInfo () {\n return await this.proxyCommand('/wda/activeAppInfo', 'GET');\n};\n\nObject.assign(extensions, commands);\nexport { commands };\nexport default extensions;\n"],"mappings":";;;;;;;AAAA,MAAMA,UAAU,GAAG,CAAC,CAAC;EAAEC,QAAQ,GAAG,CAAC,CAAC;AAACC,OAAA,CAAAD,QAAA,GAAAA,QAAA;AAQrCA,QAAQ,CAACE,sBAAsB,GAAG,eAAeA,sBAAsBA,CAAA,EAAI;EACzE,OAAO,MAAM,IAAI,CAACC,YAAY,CAAC,oBAAoB,EAAE,KAAK,CAAC;AAC7D,CAAC;AAEDC,MAAM,CAACC,MAAM,CAACN,UAAU,EAAEC,QAAQ,CAAC;AAAC,IAAAM,QAAA,GAErBP,UAAU;AAAAE,OAAA,CAAAM,OAAA,GAAAD,QAAA"}
|
|
@@ -45,4 +45,4 @@ commands.mobileHandleAlert = async function mobileHandleAlert(opts = {}) {
|
|
|
45
45
|
};
|
|
46
46
|
var _default = commands;
|
|
47
47
|
exports.default = _default;
|
|
48
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
48
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kcyIsImV4cG9ydHMiLCJ0b0FsZXJ0UGFyYW1zIiwib3B0cyIsInBhcmFtcyIsImJ1dHRvbkxhYmVsIiwibmFtZSIsImdldEFsZXJ0VGV4dCIsInByb3h5Q29tbWFuZCIsInNldEFsZXJ0VGV4dCIsInZhbHVlIiwicG9zdEFjY2VwdEFsZXJ0IiwicG9zdERpc21pc3NBbGVydCIsImdldEFsZXJ0QnV0dG9ucyIsIm1vYmlsZUhhbmRsZUFsZXJ0IiwiYWN0aW9uIiwiRXJyb3IiLCJfZGVmYXVsdCIsImRlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvY29tbWFuZHMvYWxlcnQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgY29tbWFuZHMgPSB7fTtcblxuZnVuY3Rpb24gdG9BbGVydFBhcmFtcyAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHBhcmFtcyA9IHt9O1xuICBpZiAob3B0cy5idXR0b25MYWJlbCkge1xuICAgIHBhcmFtcy5uYW1lID0gb3B0cy5idXR0b25MYWJlbDtcbiAgfVxuICByZXR1cm4gcGFyYW1zO1xufVxuXG5jb21tYW5kcy5nZXRBbGVydFRleHQgPSBhc3luYyBmdW5jdGlvbiBnZXRBbGVydFRleHQgKCkge1xuICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQoJy9hbGVydC90ZXh0JywgJ0dFVCcpO1xufTtcblxuY29tbWFuZHMuc2V0QWxlcnRUZXh0ID0gYXN5bmMgZnVuY3Rpb24gc2V0QWxlcnRUZXh0ICh2YWx1ZSkge1xuICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQoJy9hbGVydC90ZXh0JywgJ1BPU1QnLCB7dmFsdWV9KTtcbn07XG5cbmNvbW1hbmRzLnBvc3RBY2NlcHRBbGVydCA9IGFzeW5jIGZ1bmN0aW9uIHBvc3RBY2NlcHRBbGVydCAob3B0cyA9IHt9KSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLnByb3h5Q29tbWFuZCgnL2FsZXJ0L2FjY2VwdCcsICdQT1NUJywgdG9BbGVydFBhcmFtcyhvcHRzKSk7XG59O1xuXG5jb21tYW5kcy5wb3N0RGlzbWlzc0FsZXJ0ID0gYXN5bmMgZnVuY3Rpb24gcG9zdERpc21pc3NBbGVydCAob3B0cyA9IHt9KSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLnByb3h5Q29tbWFuZCgnL2FsZXJ0L2Rpc21pc3MnLCAnUE9TVCcsIHRvQWxlcnRQYXJhbXMob3B0cykpO1xufTtcblxuY29tbWFuZHMuZ2V0QWxlcnRCdXR0b25zID0gYXN5bmMgZnVuY3Rpb24gZ2V0QWxlcnRCdXR0b25zICgpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlDb21tYW5kKCcvd2RhL2FsZXJ0L2J1dHRvbnMnLCAnR0VUJyk7XG59O1xuXG5jb21tYW5kcy5tb2JpbGVIYW5kbGVBbGVydCA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZUhhbmRsZUFsZXJ0IChvcHRzID0ge30pIHtcbiAgc3dpdGNoIChvcHRzLmFjdGlvbikge1xuICAgIGNhc2UgJ2FjY2VwdCc6XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5wb3N0QWNjZXB0QWxlcnQob3B0cyk7XG4gICAgY2FzZSAnZGlzbWlzcyc6XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5wb3N0RGlzbWlzc0FsZXJ0KG9wdHMpO1xuICAgIGNhc2UgJ2dldEJ1dHRvbnMnOlxuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0QWxlcnRCdXR0b25zKCk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlICdhY3Rpb24nIHZhbHVlIHNob3VsZCBiZSBlaXRoZXIgJ2FjY2VwdCcsICdkaXNtaXNzJyBvciAnZ2V0QnV0dG9ucycuIGAgK1xuICAgICAgICAgICAgICAgICAgICAgIGAnJHtvcHRzLmFjdGlvbn0nIGlzIHByb3ZpZGVkIGluc3RlYWQuYCk7XG4gIH1cbn07XG5cbmV4cG9ydCB7IGNvbW1hbmRzIH07XG5leHBvcnQgZGVmYXVsdCBjb21tYW5kcztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLE1BQU1BLFFBQVEsR0FBRyxDQUFDLENBQUM7QUFBQ0MsT0FBQSxDQUFBRCxRQUFBLEdBQUFBLFFBQUE7QUFFcEIsU0FBU0UsYUFBYUEsQ0FBRUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFO0VBQ2pDLE1BQU1DLE1BQU0sR0FBRyxDQUFDLENBQUM7RUFDakIsSUFBSUQsSUFBSSxDQUFDRSxXQUFXLEVBQUU7SUFDcEJELE1BQU0sQ0FBQ0UsSUFBSSxHQUFHSCxJQUFJLENBQUNFLFdBQVc7RUFDaEM7RUFDQSxPQUFPRCxNQUFNO0FBQ2Y7QUFFQUosUUFBUSxDQUFDTyxZQUFZLEdBQUcsZUFBZUEsWUFBWUEsQ0FBQSxFQUFJO0VBQ3JELE9BQU8sTUFBTSxJQUFJLENBQUNDLFlBQVksQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDO0FBQ3RELENBQUM7QUFFRFIsUUFBUSxDQUFDUyxZQUFZLEdBQUcsZUFBZUEsWUFBWUEsQ0FBRUMsS0FBSyxFQUFFO0VBQzFELE9BQU8sTUFBTSxJQUFJLENBQUNGLFlBQVksQ0FBQyxhQUFhLEVBQUUsTUFBTSxFQUFFO0lBQUNFO0VBQUssQ0FBQyxDQUFDO0FBQ2hFLENBQUM7QUFFRFYsUUFBUSxDQUFDVyxlQUFlLEdBQUcsZUFBZUEsZUFBZUEsQ0FBRVIsSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFO0VBQ3BFLE9BQU8sTUFBTSxJQUFJLENBQUNLLFlBQVksQ0FBQyxlQUFlLEVBQUUsTUFBTSxFQUFFTixhQUFhLENBQUNDLElBQUksQ0FBQyxDQUFDO0FBQzlFLENBQUM7QUFFREgsUUFBUSxDQUFDWSxnQkFBZ0IsR0FBRyxlQUFlQSxnQkFBZ0JBLENBQUVULElBQUksR0FBRyxDQUFDLENBQUMsRUFBRTtFQUN0RSxPQUFPLE1BQU0sSUFBSSxDQUFDSyxZQUFZLENBQUMsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFTixhQUFhLENBQUNDLElBQUksQ0FBQyxDQUFDO0FBQy9FLENBQUM7QUFFREgsUUFBUSxDQUFDYSxlQUFlLEdBQUcsZUFBZUEsZUFBZUEsQ0FBQSxFQUFJO0VBQzNELE9BQU8sTUFBTSxJQUFJLENBQUNMLFlBQVksQ0FBQyxvQkFBb0IsRUFBRSxLQUFLLENBQUM7QUFDN0QsQ0FBQztBQUVEUixRQUFRLENBQUNjLGlCQUFpQixHQUFHLGVBQWVBLGlCQUFpQkEsQ0FBRVgsSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFO0VBQ3hFLFFBQVFBLElBQUksQ0FBQ1ksTUFBTTtJQUNqQixLQUFLLFFBQVE7TUFDWCxPQUFPLE1BQU0sSUFBSSxDQUFDSixlQUFlLENBQUNSLElBQUksQ0FBQztJQUN6QyxLQUFLLFNBQVM7TUFDWixPQUFPLE1BQU0sSUFBSSxDQUFDUyxnQkFBZ0IsQ0FBQ1QsSUFBSSxDQUFDO0lBQzFDLEtBQUssWUFBWTtNQUNmLE9BQU8sTUFBTSxJQUFJLENBQUNVLGVBQWUsRUFBRTtJQUNyQztNQUNFLE1BQU0sSUFBSUcsS0FBSyxDQUFFLDJFQUEwRSxHQUMxRSxJQUFHYixJQUFJLENBQUNZLE1BQU8sd0JBQXVCLENBQUM7RUFBQztBQUUvRCxDQUFDO0FBQUMsSUFBQUUsUUFBQSxHQUdhakIsUUFBUTtBQUFBQyxPQUFBLENBQUFpQixPQUFBLEdBQUFELFFBQUEifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alert.js","names":["commands","toAlertParams","opts","params","buttonLabel","name","getAlertText","proxyCommand","setAlertText","value","postAcceptAlert","postDismissAlert","getAlertButtons","mobileHandleAlert","action","Error"],"sources":["../../../lib/commands/alert.js"],"sourcesContent":["const commands = {};\n\nfunction toAlertParams (opts = {}) {\n const params = {};\n if (opts.buttonLabel) {\n params.name = opts.buttonLabel;\n }\n return params;\n}\n\ncommands.getAlertText = async function getAlertText () {\n return await this.proxyCommand('/alert/text', 'GET');\n};\n\ncommands.setAlertText = async function setAlertText (value) {\n return await this.proxyCommand('/alert/text', 'POST', {value});\n};\n\ncommands.postAcceptAlert = async function postAcceptAlert (opts = {}) {\n return await this.proxyCommand('/alert/accept', 'POST', toAlertParams(opts));\n};\n\ncommands.postDismissAlert = async function postDismissAlert (opts = {}) {\n return await this.proxyCommand('/alert/dismiss', 'POST', toAlertParams(opts));\n};\n\ncommands.getAlertButtons = async function getAlertButtons () {\n return await this.proxyCommand('/wda/alert/buttons', 'GET');\n};\n\ncommands.mobileHandleAlert = async function mobileHandleAlert (opts = {}) {\n switch (opts.action) {\n case 'accept':\n return await this.postAcceptAlert(opts);\n case 'dismiss':\n return await this.postDismissAlert(opts);\n case 'getButtons':\n return await this.getAlertButtons();\n default:\n throw new Error(`The 'action' value should be either 'accept', 'dismiss' or 'getButtons'. ` +\n `'${opts.action}' is provided instead.`);\n }\n};\n\nexport { commands };\nexport default commands;\n"],"mappings":";;;;;;;AAAA,MAAMA,QAAQ,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"alert.js","names":["commands","exports","toAlertParams","opts","params","buttonLabel","name","getAlertText","proxyCommand","setAlertText","value","postAcceptAlert","postDismissAlert","getAlertButtons","mobileHandleAlert","action","Error","_default","default"],"sources":["../../../lib/commands/alert.js"],"sourcesContent":["const commands = {};\n\nfunction toAlertParams (opts = {}) {\n const params = {};\n if (opts.buttonLabel) {\n params.name = opts.buttonLabel;\n }\n return params;\n}\n\ncommands.getAlertText = async function getAlertText () {\n return await this.proxyCommand('/alert/text', 'GET');\n};\n\ncommands.setAlertText = async function setAlertText (value) {\n return await this.proxyCommand('/alert/text', 'POST', {value});\n};\n\ncommands.postAcceptAlert = async function postAcceptAlert (opts = {}) {\n return await this.proxyCommand('/alert/accept', 'POST', toAlertParams(opts));\n};\n\ncommands.postDismissAlert = async function postDismissAlert (opts = {}) {\n return await this.proxyCommand('/alert/dismiss', 'POST', toAlertParams(opts));\n};\n\ncommands.getAlertButtons = async function getAlertButtons () {\n return await this.proxyCommand('/wda/alert/buttons', 'GET');\n};\n\ncommands.mobileHandleAlert = async function mobileHandleAlert (opts = {}) {\n switch (opts.action) {\n case 'accept':\n return await this.postAcceptAlert(opts);\n case 'dismiss':\n return await this.postDismissAlert(opts);\n case 'getButtons':\n return await this.getAlertButtons();\n default:\n throw new Error(`The 'action' value should be either 'accept', 'dismiss' or 'getButtons'. ` +\n `'${opts.action}' is provided instead.`);\n }\n};\n\nexport { commands };\nexport default commands;\n"],"mappings":";;;;;;;AAAA,MAAMA,QAAQ,GAAG,CAAC,CAAC;AAACC,OAAA,CAAAD,QAAA,GAAAA,QAAA;AAEpB,SAASE,aAAaA,CAAEC,IAAI,GAAG,CAAC,CAAC,EAAE;EACjC,MAAMC,MAAM,GAAG,CAAC,CAAC;EACjB,IAAID,IAAI,CAACE,WAAW,EAAE;IACpBD,MAAM,CAACE,IAAI,GAAGH,IAAI,CAACE,WAAW;EAChC;EACA,OAAOD,MAAM;AACf;AAEAJ,QAAQ,CAACO,YAAY,GAAG,eAAeA,YAAYA,CAAA,EAAI;EACrD,OAAO,MAAM,IAAI,CAACC,YAAY,CAAC,aAAa,EAAE,KAAK,CAAC;AACtD,CAAC;AAEDR,QAAQ,CAACS,YAAY,GAAG,eAAeA,YAAYA,CAAEC,KAAK,EAAE;EAC1D,OAAO,MAAM,IAAI,CAACF,YAAY,CAAC,aAAa,EAAE,MAAM,EAAE;IAACE;EAAK,CAAC,CAAC;AAChE,CAAC;AAEDV,QAAQ,CAACW,eAAe,GAAG,eAAeA,eAAeA,CAAER,IAAI,GAAG,CAAC,CAAC,EAAE;EACpE,OAAO,MAAM,IAAI,CAACK,YAAY,CAAC,eAAe,EAAE,MAAM,EAAEN,aAAa,CAACC,IAAI,CAAC,CAAC;AAC9E,CAAC;AAEDH,QAAQ,CAACY,gBAAgB,GAAG,eAAeA,gBAAgBA,CAAET,IAAI,GAAG,CAAC,CAAC,EAAE;EACtE,OAAO,MAAM,IAAI,CAACK,YAAY,CAAC,gBAAgB,EAAE,MAAM,EAAEN,aAAa,CAACC,IAAI,CAAC,CAAC;AAC/E,CAAC;AAEDH,QAAQ,CAACa,eAAe,GAAG,eAAeA,eAAeA,CAAA,EAAI;EAC3D,OAAO,MAAM,IAAI,CAACL,YAAY,CAAC,oBAAoB,EAAE,KAAK,CAAC;AAC7D,CAAC;AAEDR,QAAQ,CAACc,iBAAiB,GAAG,eAAeA,iBAAiBA,CAAEX,IAAI,GAAG,CAAC,CAAC,EAAE;EACxE,QAAQA,IAAI,CAACY,MAAM;IACjB,KAAK,QAAQ;MACX,OAAO,MAAM,IAAI,CAACJ,eAAe,CAACR,IAAI,CAAC;IACzC,KAAK,SAAS;MACZ,OAAO,MAAM,IAAI,CAACS,gBAAgB,CAACT,IAAI,CAAC;IAC1C,KAAK,YAAY;MACf,OAAO,MAAM,IAAI,CAACU,eAAe,EAAE;IACrC;MACE,MAAM,IAAIG,KAAK,CAAE,2EAA0E,GAC1E,IAAGb,IAAI,CAACY,MAAO,wBAAuB,CAAC;EAAC;AAE/D,CAAC;AAAC,IAAAE,QAAA,GAGajB,QAAQ;AAAAC,OAAA,CAAAiB,OAAA,GAAAD,QAAA"}
|
|
@@ -127,4 +127,4 @@ commands.mobileListApps = async function mobileListApps(opts = {}) {
|
|
|
127
127
|
};
|
|
128
128
|
var _default = commands;
|
|
129
129
|
exports.default = _default;
|
|
130
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kcyIsInJlcXVpcmVPcHRpb25zIiwib3B0cyIsInJlcUtleXMiLCJrZXkiLCJfIiwiaXNTdHJpbmciLCJpc0VtcHR5IiwiZXJyb3JzIiwiSW52YWxpZEFyZ3VtZW50RXJyb3IiLCJtb2JpbGVJbnN0YWxsQXBwIiwiYXBwIiwidGltZW91dE1zIiwic3RyYXRlZ3kiLCJzcmNBcHBQYXRoIiwiaGVscGVycyIsImNvbmZpZ3VyZUFwcCIsImxvZyIsImluZm8iLCJpc1JlYWxEZXZpY2UiLCJkZXZpY2UiLCJ1ZGlkIiwiZnMiLCJleGlzdHMiLCJlcnJvckFuZFRocm93IiwiaW5zdGFsbEFwcCIsImFwcFB1c2hUaW1lb3V0IiwiYXBwSW5zdGFsbFN0cmF0ZWd5IiwibW9iaWxlSXNBcHBJbnN0YWxsZWQiLCJidW5kbGVJZCIsImluc3RhbGxlZCIsImlzQXBwSW5zdGFsbGVkIiwibW9iaWxlUmVtb3ZlQXBwIiwicmVtb3ZlQXBwIiwiZXJyIiwid2FybiIsIm1lc3NhZ2UiLCJtb2JpbGVMYXVuY2hBcHAiLCJsYXVuY2hPcHRpb25zIiwiYXJndW1lbnRzIiwiaXNBcnJheSIsImVudmlyb25tZW50IiwicHJveHlDb21tYW5kIiwibW9iaWxlVGVybWluYXRlQXBwIiwibW9iaWxlQWN0aXZhdGVBcHAiLCJtb2JpbGVLaWxsQXBwIiwiVW5zdXBwb3J0ZWRPcGVyYXRpb25FcnJvciIsInRlcm1pbmF0ZUFwcCIsIm1vYmlsZVF1ZXJ5QXBwU3RhdGUiLCJhcHBQYXRoIiwiaXNQbGFpbk9iamVjdCIsImFjdGl2YXRlQXBwIiwiT2JqZWN0IiwiYXNzaWduIiwicXVlcnlBcHBTdGF0ZSIsIm1vYmlsZUxpc3RBcHBzIiwiTm90SW1wbGVtZW50ZWRFcnJvciIsImFwcGxpY2F0aW9uVHlwZSIsInNlcnZpY2UiLCJzZXJ2aWNlcyIsInN0YXJ0SW5zdGFsbGF0aW9uUHJveHlTZXJ2aWNlIiwibGlzdEFwcGxpY2F0aW9ucyIsImNsb3NlIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL2NvbW1hbmRzL2FwcC1tYW5hZ2VtZW50LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBmcyB9IGZyb20gJ2FwcGl1bS9zdXBwb3J0JztcbmltcG9ydCB7IGVycm9ycyB9IGZyb20gJ2FwcGl1bS9kcml2ZXInO1xuaW1wb3J0IHsgc2VydmljZXMgfSBmcm9tICdhcHBpdW0taW9zLWRldmljZSc7XG5cbmNvbnN0IGNvbW1hbmRzID0ge307XG5cbmZ1bmN0aW9uIHJlcXVpcmVPcHRpb25zIChvcHRzID0ge30sIHJlcUtleXMgPSBbXSkge1xuICBmb3IgKGNvbnN0IGtleSBvZiByZXFLZXlzKSB7XG4gICAgaWYgKCFfLmlzU3RyaW5nKG9wdHNba2V5XSkgfHwgXy5pc0VtcHR5KG9wdHNba2V5XSkpIHtcbiAgICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZEFyZ3VtZW50RXJyb3IoXG4gICAgICAgIGAnJHtrZXl9JyBpcyBleHBlY3RlZCB0byBiZSBhIHZhbGlkIHN0cmluZy4gJyR7b3B0c1trZXldfScgaXMgZ2l2ZW4gaW5zdGVhZGBcbiAgICAgICk7XG4gICAgfVxuICB9XG4gIHJldHVybiBvcHRzO1xufVxuXG5jb21tYW5kcy5tb2JpbGVJbnN0YWxsQXBwID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlSW5zdGFsbEFwcCAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHsgYXBwLCB0aW1lb3V0TXMsIHN0cmF0ZWd5IH0gPSByZXF1aXJlT3B0aW9ucyhvcHRzLCBbJ2FwcCddKTtcbiAgY29uc3Qgc3JjQXBwUGF0aCA9IGF3YWl0IHRoaXMuaGVscGVycy5jb25maWd1cmVBcHAoYXBwLCAnLmFwcCcpO1xuICB0aGlzLmxvZy5pbmZvKGBJbnN0YWxsaW5nICcke3NyY0FwcFBhdGh9JyB0byB0aGUgJHt0aGlzLmlzUmVhbERldmljZSgpID8gJ3JlYWwgZGV2aWNlJyA6ICdTaW11bGF0b3InfSBgICtcbiAgICBgd2l0aCBVRElEICcke3RoaXMub3B0cy5kZXZpY2UudWRpZH0nYCk7XG4gIGlmICghYXdhaXQgZnMuZXhpc3RzKHNyY0FwcFBhdGgpKSB7XG4gICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdyhgVGhlIGFwcGxpY2F0aW9uIGF0ICcke3NyY0FwcFBhdGh9JyBkb2VzIG5vdCBleGlzdCBvciBpcyBub3QgYWNjZXNzaWJsZWApO1xuICB9XG4gIGF3YWl0IHRoaXMub3B0cy5kZXZpY2UuaW5zdGFsbEFwcChcbiAgICBzcmNBcHBQYXRoLCB0aW1lb3V0TXMgPz8gdGhpcy5vcHRzLmFwcFB1c2hUaW1lb3V0LCBzdHJhdGVneSA/PyB0aGlzLm9wdHMuYXBwSW5zdGFsbFN0cmF0ZWd5XG4gICk7XG4gIHRoaXMubG9nLmluZm8oYEluc3RhbGxhdGlvbiBvZiAnJHtzcmNBcHBQYXRofScgc3VjY2VlZGVkYCk7XG59O1xuXG5jb21tYW5kcy5tb2JpbGVJc0FwcEluc3RhbGxlZCA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZUlzQXBwSW5zdGFsbGVkIChvcHRzID0ge30pIHtcbiAgY29uc3Qge2J1bmRsZUlkfSA9IHJlcXVpcmVPcHRpb25zKG9wdHMsIFsnYnVuZGxlSWQnXSk7XG4gIGNvbnN0IGluc3RhbGxlZCA9IGF3YWl0IHRoaXMub3B0cy5kZXZpY2UuaXNBcHBJbnN0YWxsZWQoYnVuZGxlSWQpO1xuICB0aGlzLmxvZy5pbmZvKGBBcHAgJyR7YnVuZGxlSWR9JyBpcyR7aW5zdGFsbGVkID8gJycgOiAnIG5vdCd9IGluc3RhbGxlZGApO1xuICByZXR1cm4gaW5zdGFsbGVkO1xufTtcblxuY29tbWFuZHMubW9iaWxlUmVtb3ZlQXBwID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlUmVtb3ZlQXBwIChvcHRzID0ge30pIHtcbiAgY29uc3Qge2J1bmRsZUlkfSA9IHJlcXVpcmVPcHRpb25zKG9wdHMsIFsnYnVuZGxlSWQnXSk7XG4gIHRoaXMubG9nLmluZm8oYFVuaW5zdGFsbGluZyB0aGUgYXBwbGljYXRpb24gd2l0aCBidW5kbGUgaWRlbnRpZmllciAnJHtidW5kbGVJZH0nIGAgK1xuICAgIGBmcm9tIHRoZSAke3RoaXMuaXNSZWFsRGV2aWNlKCkgPyAncmVhbCBkZXZpY2UnIDogJ1NpbXVsYXRvcid9IHdpdGggVURJRCAnJHt0aGlzLm9wdHMuZGV2aWNlLnVkaWR9J2ApO1xuICB0cnkge1xuICAgIGF3YWl0IHRoaXMub3B0cy5kZXZpY2UucmVtb3ZlQXBwKGJ1bmRsZUlkKTtcbiAgICB0aGlzLmxvZy5pbmZvKGBSZW1vdmFsIG9mICcke2J1bmRsZUlkfScgc3VjY2VlZGVkYCk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMubG9nLndhcm4oYENhbm5vdCByZW1vdmUgJyR7YnVuZGxlSWR9Jy4gT3JpZ2luYWwgZXJyb3I6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59O1xuXG5jb21tYW5kcy5tb2JpbGVMYXVuY2hBcHAgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVMYXVuY2hBcHAgKG9wdHMgPSB7fSkge1xuICBjb25zdCBsYXVuY2hPcHRpb25zID0gcmVxdWlyZU9wdGlvbnMob3B0cywgWydidW5kbGVJZCddKTtcbiAgaWYgKG9wdHMuYXJndW1lbnRzKSB7XG4gICAgbGF1bmNoT3B0aW9ucy5hcmd1bWVudHMgPSBfLmlzQXJyYXkob3B0cy5hcmd1bWVudHMpID8gb3B0cy5hcmd1bWVudHMgOiBbb3B0cy5hcmd1bWVudHNdO1xuICB9XG4gIGlmIChvcHRzLmVudmlyb25tZW50KSB7XG4gICAgbGF1bmNoT3B0aW9ucy5lbnZpcm9ubWVudCA9IG9wdHMuZW52aXJvbm1lbnQ7XG4gIH1cbiAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlDb21tYW5kKCcvd2RhL2FwcHMvbGF1bmNoJywgJ1BPU1QnLCBsYXVuY2hPcHRpb25zKTtcbn07XG5cbmNvbW1hbmRzLm1vYmlsZVRlcm1pbmF0ZUFwcCA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVRlcm1pbmF0ZUFwcCAob3B0cyA9IHt9KSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLnByb3h5Q29tbWFuZCgnL3dkYS9hcHBzL3Rlcm1pbmF0ZScsICdQT1NUJywgcmVxdWlyZU9wdGlvbnMob3B0cywgWydidW5kbGVJZCddKSk7XG59O1xuXG5jb21tYW5kcy5tb2JpbGVBY3RpdmF0ZUFwcCA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZUFjdGl2YXRlQXBwIChvcHRzID0ge30pIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlDb21tYW5kKCcvd2RhL2FwcHMvYWN0aXZhdGUnLCAnUE9TVCcsIHJlcXVpcmVPcHRpb25zKG9wdHMsIFsnYnVuZGxlSWQnXSkpO1xufTtcblxuLyoqXG4gKiBLaWxsIHRoZSBnaXZlbiBidW5kbGUgaWQgcHJvY2VzcyB2aWEgaW5zdHJ1bWVudHMgc2VydmljZS5cbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9ZdWVDaGVuLUMvcHktaW9zLWRldmljZS9ibG9iLzUxZjQ2ODNjNWMzYzM4NWEwMTU4NThhZGEwN2E1ZjFjNjJkM2NmNTcvaW9zX2RldmljZS9jbGkvYmFzZS5weSNMMjIwXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBPcHRpb25zIHNldCwgd2hpY2ggbXVzdCBjb250YWluIGBidW5kbGVJZGAgcHJvcGVydHlcbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIHRydWUgaWYgdGhlIGJ1bmRsZSBpZCBwcm9jZXNzIHdhcyBraWxsZWQuIE90aGVyd2lzZSBmYWxzZS5cbiAqL1xuY29tbWFuZHMubW9iaWxlS2lsbEFwcCA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZUtpbGxBcHAgKG9wdHMgPSB7fSkge1xuICBpZiAoIXRoaXMuaXNSZWFsRGV2aWNlKCkpIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLlVuc3VwcG9ydGVkT3BlcmF0aW9uRXJyb3IoJ0EgcmVhbCBkZXZpY2UgaXMgcmVxdWlyZWQnKTtcbiAgfVxuXG4gIGNvbnN0IHtidW5kbGVJZH0gPSByZXF1aXJlT3B0aW9ucyhvcHRzLCBbJ2J1bmRsZUlkJ10pO1xuICByZXR1cm4gYXdhaXQgdGhpcy5vcHRzLmRldmljZS50ZXJtaW5hdGVBcHAoYnVuZGxlSWQpO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBjdXJyZW50IGFwcGxpY2F0aW9uIHN0YXRlXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBPcHRpb25zIHNldCwgd2hpY2ggbXVzdCBjb250YWluIGBidW5kbGVJZGAgcHJvcGVydHlcbiAqIEByZXR1cm5zIHtudW1iZXJ9IFRoZSBhY3R1YWwgYXBwbGljYXRpb24gc3RhdGUgY29kZS4gU2VlXG4gKiBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWFwcGxpY2F0aW9uc3RhdGU/bGFuZ3VhZ2U9b2JqY1xuICogdG8gZ2V0IHRoZSBsaXN0IG9mIHBvc3NpYmxlIHZhbHVlcy5cbiAqL1xuY29tbWFuZHMubW9iaWxlUXVlcnlBcHBTdGF0ZSA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVF1ZXJ5QXBwU3RhdGUgKG9wdHMgPSB7fSkge1xuICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQoJy93ZGEvYXBwcy9zdGF0ZScsICdQT1NUJywgcmVxdWlyZU9wdGlvbnMob3B0cywgWydidW5kbGVJZCddKSk7XG59O1xuXG5jb21tYW5kcy5pbnN0YWxsQXBwID0gYXN5bmMgZnVuY3Rpb24gaW5zdGFsbEFwcCAoYXBwUGF0aCwgb3B0cyA9IHt9KSB7XG4gIGF3YWl0IHRoaXMubW9iaWxlSW5zdGFsbEFwcCh7XG4gICAgLi4uKF8uaXNQbGFpbk9iamVjdChvcHRzKSA/IG9wdHMgOiB7fSksXG4gICAgYXBwOiBhcHBQYXRoLFxuICB9KTtcbn07XG5cbmNvbW1hbmRzLmFjdGl2YXRlQXBwID0gYXN5bmMgZnVuY3Rpb24gYWN0aXZhdGVBcHAgKGJ1bmRsZUlkLCBvcHRzID0ge30pIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMubW9iaWxlTGF1bmNoQXBwKE9iamVjdC5hc3NpZ24oe30sIG9wdHMsIHtidW5kbGVJZH0pKTtcbn07XG5cbmNvbW1hbmRzLmlzQXBwSW5zdGFsbGVkID0gYXN5bmMgZnVuY3Rpb24gaXNBcHBJbnN0YWxsZWQgKGJ1bmRsZUlkKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLm1vYmlsZUlzQXBwSW5zdGFsbGVkKHtidW5kbGVJZH0pO1xufTtcblxuY29tbWFuZHMudGVybWluYXRlQXBwID0gYXN5bmMgZnVuY3Rpb24gdGVybWluYXRlQXBwIChidW5kbGVJZCkge1xuICByZXR1cm4gYXdhaXQgdGhpcy5tb2JpbGVUZXJtaW5hdGVBcHAoe2J1bmRsZUlkfSk7XG59O1xuXG5jb21tYW5kcy5xdWVyeUFwcFN0YXRlID0gYXN5bmMgZnVuY3Rpb24gcXVlcnlBcHBTdGF0ZSAoYnVuZGxlSWQpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMubW9iaWxlUXVlcnlBcHBTdGF0ZSh7YnVuZGxlSWR9KTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gTGlzdEFwcHNPcHRpb25zXG4gKiBAcHJvcGVydHkgeydTeXN0ZW0nfCdVc2VyJ30gYXBwbGljYXRpb25UeXBlIFtVc2VyXSBUaGUgdHlwZSBvZiBhcHBsaWNhdGlvbnMgdG8gbGlzdFxuICovXG5cbi8qKlxuICogTGlzdCBhcHBsaWNhdGlvbnMgaW5zdGFsbGVkIG9uIHRoZSByZWFsIGRldmljZSB1bmRlciB0ZXN0XG4gKlxuICogQHBhcmFtIHtMaXN0QXBwc09wdGlvbnN9IG9wdHNcbiAqIEByZXR1cm5zIHtBcnJheTxPYmplY3Q+fSBBIGxpc3Qgb2YgYXBwcywgd2hlcmUgZWFjaCBpdGVtIGlzIGEgbWFwIHdoZXJlIGtleXMgYXJlXG4gKiBidW5kbGUgaWRlbnRpZmllcnMgYW5kIHZhbHVlcyBhcmUgbWFwcyBvZiBwbGF0Zm9ybS1zcGVjaWZpYyBhcHAgcHJvcGVydGllcy5cbiAqL1xuY29tbWFuZHMubW9iaWxlTGlzdEFwcHMgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVMaXN0QXBwcyAob3B0cyA9IHt9KSB7XG4gIGlmICghdGhpcy5pc1JlYWxEZXZpY2UoKSkge1xuICAgIHRocm93IG5ldyBlcnJvcnMuTm90SW1wbGVtZW50ZWRFcnJvcihgVGhpcyBleHRlbnNpb24gaXMgb25seSBzdXBwb3J0ZWQgb24gcmVhbCBkZXZpY2VzYCk7XG4gIH1cblxuICBjb25zdCB7XG4gICAgYXBwbGljYXRpb25UeXBlID0gJ1VzZXInLFxuICB9ID0gb3B0cztcbiAgY29uc3Qgc2VydmljZSA9IGF3YWl0IHNlcnZpY2VzLnN0YXJ0SW5zdGFsbGF0aW9uUHJveHlTZXJ2aWNlKHRoaXMub3B0cy5kZXZpY2UudWRpZCk7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IHNlcnZpY2UubGlzdEFwcGxpY2F0aW9ucyh7YXBwbGljYXRpb25UeXBlfSk7XG4gIH0gZmluYWxseSB7XG4gICAgc2VydmljZS5jbG9zZSgpO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjb21tYW5kcztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBLE1BQU1BLFFBQVEsR0FBRyxDQUFDLENBQUM7QUFFbkIsU0FBU0MsY0FBYyxDQUFFQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUVDLE9BQU8sR0FBRyxFQUFFLEVBQUU7RUFDaEQsS0FBSyxNQUFNQyxHQUFHLElBQUlELE9BQU8sRUFBRTtJQUN6QixJQUFJLENBQUNFLGVBQUMsQ0FBQ0MsUUFBUSxDQUFDSixJQUFJLENBQUNFLEdBQUcsQ0FBQyxDQUFDLElBQUlDLGVBQUMsQ0FBQ0UsT0FBTyxDQUFDTCxJQUFJLENBQUNFLEdBQUcsQ0FBQyxDQUFDLEVBQUU7TUFDbEQsTUFBTSxJQUFJSSxjQUFNLENBQUNDLG9CQUFvQixDQUNsQyxJQUFHTCxHQUFJLHdDQUF1Q0YsSUFBSSxDQUFDRSxHQUFHLENBQUUsb0JBQW1CLENBQzdFO0lBQ0g7RUFDRjtFQUNBLE9BQU9GLElBQUk7QUFDYjtBQUVBRixRQUFRLENBQUNVLGdCQUFnQixHQUFHLGVBQWVBLGdCQUFnQixDQUFFUixJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUU7RUFDdEUsTUFBTTtJ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
|
|
130
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfc3VwcG9ydCIsIl9kcml2ZXIiLCJfYXBwaXVtSW9zRGV2aWNlIiwiY29tbWFuZHMiLCJyZXF1aXJlT3B0aW9ucyIsIm9wdHMiLCJyZXFLZXlzIiwia2V5IiwiXyIsImlzU3RyaW5nIiwiaXNFbXB0eSIsImVycm9ycyIsIkludmFsaWRBcmd1bWVudEVycm9yIiwibW9iaWxlSW5zdGFsbEFwcCIsImFwcCIsInRpbWVvdXRNcyIsInN0cmF0ZWd5Iiwic3JjQXBwUGF0aCIsImhlbHBlcnMiLCJjb25maWd1cmVBcHAiLCJsb2ciLCJpbmZvIiwiaXNSZWFsRGV2aWNlIiwiZGV2aWNlIiwidWRpZCIsImZzIiwiZXhpc3RzIiwiZXJyb3JBbmRUaHJvdyIsImluc3RhbGxBcHAiLCJhcHBQdXNoVGltZW91dCIsImFwcEluc3RhbGxTdHJhdGVneSIsIm1vYmlsZUlzQXBwSW5zdGFsbGVkIiwiYnVuZGxlSWQiLCJpbnN0YWxsZWQiLCJpc0FwcEluc3RhbGxlZCIsIm1vYmlsZVJlbW92ZUFwcCIsInJlbW92ZUFwcCIsImVyciIsIndhcm4iLCJtZXNzYWdlIiwibW9iaWxlTGF1bmNoQXBwIiwibGF1bmNoT3B0aW9ucyIsImFyZ3VtZW50cyIsImlzQXJyYXkiLCJlbnZpcm9ubWVudCIsInByb3h5Q29tbWFuZCIsIm1vYmlsZVRlcm1pbmF0ZUFwcCIsIm1vYmlsZUFjdGl2YXRlQXBwIiwibW9iaWxlS2lsbEFwcCIsIlVuc3VwcG9ydGVkT3BlcmF0aW9uRXJyb3IiLCJ0ZXJtaW5hdGVBcHAiLCJtb2JpbGVRdWVyeUFwcFN0YXRlIiwiYXBwUGF0aCIsImlzUGxhaW5PYmplY3QiLCJhY3RpdmF0ZUFwcCIsIk9iamVjdCIsImFzc2lnbiIsInF1ZXJ5QXBwU3RhdGUiLCJtb2JpbGVMaXN0QXBwcyIsIk5vdEltcGxlbWVudGVkRXJyb3IiLCJhcHBsaWNhdGlvblR5cGUiLCJzZXJ2aWNlIiwic2VydmljZXMiLCJzdGFydEluc3RhbGxhdGlvblByb3h5U2VydmljZSIsImxpc3RBcHBsaWNhdGlvbnMiLCJjbG9zZSIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsImRlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvY29tbWFuZHMvYXBwLW1hbmFnZW1lbnQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGZzIH0gZnJvbSAnYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IHsgZXJyb3JzIH0gZnJvbSAnYXBwaXVtL2RyaXZlcic7XG5pbXBvcnQgeyBzZXJ2aWNlcyB9IGZyb20gJ2FwcGl1bS1pb3MtZGV2aWNlJztcblxuY29uc3QgY29tbWFuZHMgPSB7fTtcblxuZnVuY3Rpb24gcmVxdWlyZU9wdGlvbnMgKG9wdHMgPSB7fSwgcmVxS2V5cyA9IFtdKSB7XG4gIGZvciAoY29uc3Qga2V5IG9mIHJlcUtleXMpIHtcbiAgICBpZiAoIV8uaXNTdHJpbmcob3B0c1trZXldKSB8fCBfLmlzRW1wdHkob3B0c1trZXldKSkge1xuICAgICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihcbiAgICAgICAgYCcke2tleX0nIGlzIGV4cGVjdGVkIHRvIGJlIGEgdmFsaWQgc3RyaW5nLiAnJHtvcHRzW2tleV19JyBpcyBnaXZlbiBpbnN0ZWFkYFxuICAgICAgKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG9wdHM7XG59XG5cbmNvbW1hbmRzLm1vYmlsZUluc3RhbGxBcHAgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVJbnN0YWxsQXBwIChvcHRzID0ge30pIHtcbiAgY29uc3QgeyBhcHAsIHRpbWVvdXRNcywgc3RyYXRlZ3kgfSA9IHJlcXVpcmVPcHRpb25zKG9wdHMsIFsnYXBwJ10pO1xuICBjb25zdCBzcmNBcHBQYXRoID0gYXdhaXQgdGhpcy5oZWxwZXJzLmNvbmZpZ3VyZUFwcChhcHAsICcuYXBwJyk7XG4gIHRoaXMubG9nLmluZm8oYEluc3RhbGxpbmcgJyR7c3JjQXBwUGF0aH0nIHRvIHRoZSAke3RoaXMuaXNSZWFsRGV2aWNlKCkgPyAncmVhbCBkZXZpY2UnIDogJ1NpbXVsYXRvcid9IGAgK1xuICAgIGB3aXRoIFVESUQgJyR7dGhpcy5vcHRzLmRldmljZS51ZGlkfSdgKTtcbiAgaWYgKCFhd2FpdCBmcy5leGlzdHMoc3JjQXBwUGF0aCkpIHtcbiAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KGBUaGUgYXBwbGljYXRpb24gYXQgJyR7c3JjQXBwUGF0aH0nIGRvZXMgbm90IGV4aXN0IG9yIGlzIG5vdCBhY2Nlc3NpYmxlYCk7XG4gIH1cbiAgYXdhaXQgdGhpcy5vcHRzLmRldmljZS5pbnN0YWxsQXBwKFxuICAgIHNyY0FwcFBhdGgsIHRpbWVvdXRNcyA/PyB0aGlzLm9wdHMuYXBwUHVzaFRpbWVvdXQsIHN0cmF0ZWd5ID8/IHRoaXMub3B0cy5hcHBJbnN0YWxsU3RyYXRlZ3lcbiAgKTtcbiAgdGhpcy5sb2cuaW5mbyhgSW5zdGFsbGF0aW9uIG9mICcke3NyY0FwcFBhdGh9JyBzdWNjZWVkZWRgKTtcbn07XG5cbmNvbW1hbmRzLm1vYmlsZUlzQXBwSW5zdGFsbGVkID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlSXNBcHBJbnN0YWxsZWQgKG9wdHMgPSB7fSkge1xuICBjb25zdCB7YnVuZGxlSWR9ID0gcmVxdWlyZU9wdGlvbnMob3B0cywgWydidW5kbGVJZCddKTtcbiAgY29uc3QgaW5zdGFsbGVkID0gYXdhaXQgdGhpcy5vcHRzLmRldmljZS5pc0FwcEluc3RhbGxlZChidW5kbGVJZCk7XG4gIHRoaXMubG9nLmluZm8oYEFwcCAnJHtidW5kbGVJZH0nIGlzJHtpbnN0YWxsZWQgPyAnJyA6ICcgbm90J30gaW5zdGFsbGVkYCk7XG4gIHJldHVybiBpbnN0YWxsZWQ7XG59O1xuXG5jb21tYW5kcy5tb2JpbGVSZW1vdmVBcHAgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVSZW1vdmVBcHAgKG9wdHMgPSB7fSkge1xuICBjb25zdCB7YnVuZGxlSWR9ID0gcmVxdWlyZU9wdGlvbnMob3B0cywgWydidW5kbGVJZCddKTtcbiAgdGhpcy5sb2cuaW5mbyhgVW5pbnN0YWxsaW5nIHRoZSBhcHBsaWNhdGlvbiB3aXRoIGJ1bmRsZSBpZGVudGlmaWVyICcke2J1bmRsZUlkfScgYCArXG4gICAgYGZyb20gdGhlICR7dGhpcy5pc1JlYWxEZXZpY2UoKSA/ICdyZWFsIGRldmljZScgOiAnU2ltdWxhdG9yJ30gd2l0aCBVRElEICcke3RoaXMub3B0cy5kZXZpY2UudWRpZH0nYCk7XG4gIHRyeSB7XG4gICAgYXdhaXQgdGhpcy5vcHRzLmRldmljZS5yZW1vdmVBcHAoYnVuZGxlSWQpO1xuICAgIHRoaXMubG9nLmluZm8oYFJlbW92YWwgb2YgJyR7YnVuZGxlSWR9JyBzdWNjZWVkZWRgKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5sb2cud2FybihgQ2Fubm90IHJlbW92ZSAnJHtidW5kbGVJZH0nLiBPcmlnaW5hbCBlcnJvcjogJHtlcnIubWVzc2FnZX1gKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn07XG5cbmNvbW1hbmRzLm1vYmlsZUxhdW5jaEFwcCA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZUxhdW5jaEFwcCAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IGxhdW5jaE9wdGlvbnMgPSByZXF1aXJlT3B0aW9ucyhvcHRzLCBbJ2J1bmRsZUlkJ10pO1xuICBpZiAob3B0cy5hcmd1bWVudHMpIHtcbiAgICBsYXVuY2hPcHRpb25zLmFyZ3VtZW50cyA9IF8uaXNBcnJheShvcHRzLmFyZ3VtZW50cykgPyBvcHRzLmFyZ3VtZW50cyA6IFtvcHRzLmFyZ3VtZW50c107XG4gIH1cbiAgaWYgKG9wdHMuZW52aXJvbm1lbnQpIHtcbiAgICBsYXVuY2hPcHRpb25zLmVudmlyb25tZW50ID0gb3B0cy5lbnZpcm9ubWVudDtcbiAgfVxuICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQoJy93ZGEvYXBwcy9sYXVuY2gnLCAnUE9TVCcsIGxhdW5jaE9wdGlvbnMpO1xufTtcblxuY29tbWFuZHMubW9iaWxlVGVybWluYXRlQXBwID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlVGVybWluYXRlQXBwIChvcHRzID0ge30pIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlDb21tYW5kKCcvd2RhL2FwcHMvdGVybWluYXRlJywgJ1BPU1QnLCByZXF1aXJlT3B0aW9ucyhvcHRzLCBbJ2J1bmRsZUlkJ10pKTtcbn07XG5cbmNvbW1hbmRzLm1vYmlsZUFjdGl2YXRlQXBwID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlQWN0aXZhdGVBcHAgKG9wdHMgPSB7fSkge1xuICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQoJy93ZGEvYXBwcy9hY3RpdmF0ZScsICdQT1NUJywgcmVxdWlyZU9wdGlvbnMob3B0cywgWydidW5kbGVJZCddKSk7XG59O1xuXG4vKipcbiAqIEtpbGwgdGhlIGdpdmVuIGJ1bmRsZSBpZCBwcm9jZXNzIHZpYSBpbnN0cnVtZW50cyBzZXJ2aWNlLlxuICogaHR0cHM6Ly9naXRodWIuY29tL1l1ZUNoZW4tQy9weS1pb3MtZGV2aWNlL2Jsb2IvNTFmNDY4M2M1YzNjMzg1YTAxNTg1OGFkYTA3YTVmMWM2MmQzY2Y1Ny9pb3NfZGV2aWNlL2NsaS9iYXNlLnB5I0wyMjBcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIE9wdGlvbnMgc2V0LCB3aGljaCBtdXN0IGNvbnRhaW4gYGJ1bmRsZUlkYCBwcm9wZXJ0eVxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgdHJ1ZSBpZiB0aGUgYnVuZGxlIGlkIHByb2Nlc3Mgd2FzIGtpbGxlZC4gT3RoZXJ3aXNlIGZhbHNlLlxuICovXG5jb21tYW5kcy5tb2JpbGVLaWxsQXBwID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlS2lsbEFwcCAob3B0cyA9IHt9KSB7XG4gIGlmICghdGhpcy5pc1JlYWxEZXZpY2UoKSkge1xuICAgIHRocm93IG5ldyBlcnJvcnMuVW5zdXBwb3J0ZWRPcGVyYXRpb25FcnJvcignQSByZWFsIGRldmljZSBpcyByZXF1aXJlZCcpO1xuICB9XG5cbiAgY29uc3Qge2J1bmRsZUlkfSA9IHJlcXVpcmVPcHRpb25zKG9wdHMsIFsnYnVuZGxlSWQnXSk7XG4gIHJldHVybiBhd2FpdCB0aGlzLm9wdHMuZGV2aWNlLnRlcm1pbmF0ZUFwcChidW5kbGVJZCk7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGN1cnJlbnQgYXBwbGljYXRpb24gc3RhdGVcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIE9wdGlvbnMgc2V0LCB3aGljaCBtdXN0IGNvbnRhaW4gYGJ1bmRsZUlkYCBwcm9wZXJ0eVxuICogQHJldHVybnMge251bWJlcn0gVGhlIGFjdHVhbCBhcHBsaWNhdGlvbiBzdGF0ZSBjb2RlLiBTZWVcbiAqIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3VpYXBwbGljYXRpb25zdGF0ZT9sYW5ndWFnZT1vYmpjXG4gKiB0byBnZXQgdGhlIGxpc3Qgb2YgcG9zc2libGUgdmFsdWVzLlxuICovXG5jb21tYW5kcy5tb2JpbGVRdWVyeUFwcFN0YXRlID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlUXVlcnlBcHBTdGF0ZSAob3B0cyA9IHt9KSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLnByb3h5Q29tbWFuZCgnL3dkYS9hcHBzL3N0YXRlJywgJ1BPU1QnLCByZXF1aXJlT3B0aW9ucyhvcHRzLCBbJ2J1bmRsZUlkJ10pKTtcbn07XG5cbmNvbW1hbmRzLmluc3RhbGxBcHAgPSBhc3luYyBmdW5jdGlvbiBpbnN0YWxsQXBwIChhcHBQYXRoLCBvcHRzID0ge30pIHtcbiAgYXdhaXQgdGhpcy5tb2JpbGVJbnN0YWxsQXBwKHtcbiAgICAuLi4oXy5pc1BsYWluT2JqZWN0KG9wdHMpID8gb3B0cyA6IHt9KSxcbiAgICBhcHA6IGFwcFBhdGgsXG4gIH0pO1xufTtcblxuY29tbWFuZHMuYWN0aXZhdGVBcHAgPSBhc3luYyBmdW5jdGlvbiBhY3RpdmF0ZUFwcCAoYnVuZGxlSWQsIG9wdHMgPSB7fSkge1xuICByZXR1cm4gYXdhaXQgdGhpcy5tb2JpbGVMYXVuY2hBcHAoT2JqZWN0LmFzc2lnbih7fSwgb3B0cywge2J1bmRsZUlkfSkpO1xufTtcblxuY29tbWFuZHMuaXNBcHBJbnN0YWxsZWQgPSBhc3luYyBmdW5jdGlvbiBpc0FwcEluc3RhbGxlZCAoYnVuZGxlSWQpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMubW9iaWxlSXNBcHBJbnN0YWxsZWQoe2J1bmRsZUlkfSk7XG59O1xuXG5jb21tYW5kcy50ZXJtaW5hdGVBcHAgPSBhc3luYyBmdW5jdGlvbiB0ZXJtaW5hdGVBcHAgKGJ1bmRsZUlkKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLm1vYmlsZVRlcm1pbmF0ZUFwcCh7YnVuZGxlSWR9KTtcbn07XG5cbmNvbW1hbmRzLnF1ZXJ5QXBwU3RhdGUgPSBhc3luYyBmdW5jdGlvbiBxdWVyeUFwcFN0YXRlIChidW5kbGVJZCkge1xuICByZXR1cm4gYXdhaXQgdGhpcy5tb2JpbGVRdWVyeUFwcFN0YXRlKHtidW5kbGVJZH0pO1xufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBMaXN0QXBwc09wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7J1N5c3RlbSd8J1VzZXInfSBhcHBsaWNhdGlvblR5cGUgW1VzZXJdIFRoZSB0eXBlIG9mIGFwcGxpY2F0aW9ucyB0byBsaXN0XG4gKi9cblxuLyoqXG4gKiBMaXN0IGFwcGxpY2F0aW9ucyBpbnN0YWxsZWQgb24gdGhlIHJlYWwgZGV2aWNlIHVuZGVyIHRlc3RcbiAqXG4gKiBAcGFyYW0ge0xpc3RBcHBzT3B0aW9uc30gb3B0c1xuICogQHJldHVybnMge0FycmF5PE9iamVjdD59IEEgbGlzdCBvZiBhcHBzLCB3aGVyZSBlYWNoIGl0ZW0gaXMgYSBtYXAgd2hlcmUga2V5cyBhcmVcbiAqIGJ1bmRsZSBpZGVudGlmaWVycyBhbmQgdmFsdWVzIGFyZSBtYXBzIG9mIHBsYXRmb3JtLXNwZWNpZmljIGFwcCBwcm9wZXJ0aWVzLlxuICovXG5jb21tYW5kcy5tb2JpbGVMaXN0QXBwcyA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZUxpc3RBcHBzIChvcHRzID0ge30pIHtcbiAgaWYgKCF0aGlzLmlzUmVhbERldmljZSgpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5Ob3RJbXBsZW1lbnRlZEVycm9yKGBUaGlzIGV4dGVuc2lvbiBpcyBvbmx5IHN1cHBvcnRlZCBvbiByZWFsIGRldmljZXNgKTtcbiAgfVxuXG4gIGNvbnN0IHtcbiAgICBhcHBsaWNhdGlvblR5cGUgPSAnVXNlcicsXG4gIH0gPSBvcHRzO1xuICBjb25zdCBzZXJ2aWNlID0gYXdhaXQgc2VydmljZXMuc3RhcnRJbnN0YWxsYXRpb25Qcm94eVNlcnZpY2UodGhpcy5vcHRzLmRldmljZS51ZGlkKTtcbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgc2VydmljZS5saXN0QXBwbGljYXRpb25zKHthcHBsaWNhdGlvblR5cGV9KTtcbiAgfSBmaW5hbGx5IHtcbiAgICBzZXJ2aWNlLmNsb3NlKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNvbW1hbmRzO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFFBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLE9BQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLGdCQUFBLEdBQUFILE9BQUE7QUFFQSxNQUFNSSxRQUFRLEdBQUcsQ0FBQyxDQUFDO0FBRW5CLFNBQVNDLGNBQWNBLENBQUVDLElBQUksR0FBRyxDQUFDLENBQUMsRUFBRUMsT0FBTyxHQUFHLEVBQUUsRUFBRTtFQUNoRCxLQUFLLE1BQU1DLEdBQUcsSUFBSUQsT0FBTyxFQUFFO0lBQ3pCLElBQUksQ0FBQ0UsZUFBQyxDQUFDQyxRQUFRLENBQUNKLElBQUksQ0FBQ0UsR0FBRyxDQUFDLENBQUMsSUFBSUMsZUFBQyxDQUFDRSxPQUFPLENBQUNMLElBQUksQ0FBQ0UsR0FBRyxDQUFDLENB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-management.js","names":["commands","requireOptions","opts","reqKeys","key","_","isString","isEmpty","errors","InvalidArgumentError","mobileInstallApp","app","timeoutMs","strategy","srcAppPath","helpers","configureApp","log","info","isRealDevice","device","udid","fs","exists","errorAndThrow","installApp","appPushTimeout","appInstallStrategy","mobileIsAppInstalled","bundleId","installed","isAppInstalled","mobileRemoveApp","removeApp","err","warn","message","mobileLaunchApp","launchOptions","arguments","isArray","environment","proxyCommand","mobileTerminateApp","mobileActivateApp","mobileKillApp","UnsupportedOperationError","terminateApp","mobileQueryAppState","appPath","isPlainObject","activateApp","Object","assign","queryAppState","mobileListApps","NotImplementedError","applicationType","service","services","startInstallationProxyService","listApplications","close"],"sources":["../../../lib/commands/app-management.js"],"sourcesContent":["import _ from 'lodash';\nimport { fs } from 'appium/support';\nimport { errors } from 'appium/driver';\nimport { services } from 'appium-ios-device';\n\nconst commands = {};\n\nfunction requireOptions (opts = {}, reqKeys = []) {\n for (const key of reqKeys) {\n if (!_.isString(opts[key]) || _.isEmpty(opts[key])) {\n throw new errors.InvalidArgumentError(\n `'${key}' is expected to be a valid string. '${opts[key]}' is given instead`\n );\n }\n }\n return opts;\n}\n\ncommands.mobileInstallApp = async function mobileInstallApp (opts = {}) {\n const { app, timeoutMs, strategy } = requireOptions(opts, ['app']);\n const srcAppPath = await this.helpers.configureApp(app, '.app');\n this.log.info(`Installing '${srcAppPath}' to the ${this.isRealDevice() ? 'real device' : 'Simulator'} ` +\n `with UDID '${this.opts.device.udid}'`);\n if (!await fs.exists(srcAppPath)) {\n this.log.errorAndThrow(`The application at '${srcAppPath}' does not exist or is not accessible`);\n }\n await this.opts.device.installApp(\n srcAppPath, timeoutMs ?? this.opts.appPushTimeout, strategy ?? this.opts.appInstallStrategy\n );\n this.log.info(`Installation of '${srcAppPath}' succeeded`);\n};\n\ncommands.mobileIsAppInstalled = async function mobileIsAppInstalled (opts = {}) {\n const {bundleId} = requireOptions(opts, ['bundleId']);\n const installed = await this.opts.device.isAppInstalled(bundleId);\n this.log.info(`App '${bundleId}' is${installed ? '' : ' not'} installed`);\n return installed;\n};\n\ncommands.mobileRemoveApp = async function mobileRemoveApp (opts = {}) {\n const {bundleId} = requireOptions(opts, ['bundleId']);\n this.log.info(`Uninstalling the application with bundle identifier '${bundleId}' ` +\n `from the ${this.isRealDevice() ? 'real device' : 'Simulator'} with UDID '${this.opts.device.udid}'`);\n try {\n await this.opts.device.removeApp(bundleId);\n this.log.info(`Removal of '${bundleId}' succeeded`);\n return true;\n } catch (err) {\n this.log.warn(`Cannot remove '${bundleId}'. Original error: ${err.message}`);\n return false;\n }\n};\n\ncommands.mobileLaunchApp = async function mobileLaunchApp (opts = {}) {\n const launchOptions = requireOptions(opts, ['bundleId']);\n if (opts.arguments) {\n launchOptions.arguments = _.isArray(opts.arguments) ? opts.arguments : [opts.arguments];\n }\n if (opts.environment) {\n launchOptions.environment = opts.environment;\n }\n return await this.proxyCommand('/wda/apps/launch', 'POST', launchOptions);\n};\n\ncommands.mobileTerminateApp = async function mobileTerminateApp (opts = {}) {\n return await this.proxyCommand('/wda/apps/terminate', 'POST', requireOptions(opts, ['bundleId']));\n};\n\ncommands.mobileActivateApp = async function mobileActivateApp (opts = {}) {\n return await this.proxyCommand('/wda/apps/activate', 'POST', requireOptions(opts, ['bundleId']));\n};\n\n/**\n * Kill the given bundle id process via instruments service.\n * https://github.com/YueChen-C/py-ios-device/blob/51f4683c5c3c385a015858ada07a5f1c62d3cf57/ios_device/cli/base.py#L220\n *\n * @param {Object} opts - Options set, which must contain `bundleId` property\n * @returns {boolean} Returns true if the bundle id process was killed. Otherwise false.\n */\ncommands.mobileKillApp = async function mobileKillApp (opts = {}) {\n if (!this.isRealDevice()) {\n throw new errors.UnsupportedOperationError('A real device is required');\n }\n\n const {bundleId} = requireOptions(opts, ['bundleId']);\n return await this.opts.device.terminateApp(bundleId);\n};\n\n/**\n * Returns the current application state\n *\n * @param {Object} opts - Options set, which must contain `bundleId` property\n * @returns {number} The actual application state code. See\n * https://developer.apple.com/documentation/xctest/xcuiapplicationstate?language=objc\n * to get the list of possible values.\n */\ncommands.mobileQueryAppState = async function mobileQueryAppState (opts = {}) {\n return await this.proxyCommand('/wda/apps/state', 'POST', requireOptions(opts, ['bundleId']));\n};\n\ncommands.installApp = async function installApp (appPath, opts = {}) {\n await this.mobileInstallApp({\n ...(_.isPlainObject(opts) ? opts : {}),\n app: appPath,\n });\n};\n\ncommands.activateApp = async function activateApp (bundleId, opts = {}) {\n return await this.mobileLaunchApp(Object.assign({}, opts, {bundleId}));\n};\n\ncommands.isAppInstalled = async function isAppInstalled (bundleId) {\n return await this.mobileIsAppInstalled({bundleId});\n};\n\ncommands.terminateApp = async function terminateApp (bundleId) {\n return await this.mobileTerminateApp({bundleId});\n};\n\ncommands.queryAppState = async function queryAppState (bundleId) {\n return await this.mobileQueryAppState({bundleId});\n};\n\n/**\n * @typedef {Object} ListAppsOptions\n * @property {'System'|'User'} applicationType [User] The type of applications to list\n */\n\n/**\n * List applications installed on the real device under test\n *\n * @param {ListAppsOptions} opts\n * @returns {Array<Object>} A list of apps, where each item is a map where keys are\n * bundle identifiers and values are maps of platform-specific app properties.\n */\ncommands.mobileListApps = async function mobileListApps (opts = {}) {\n if (!this.isRealDevice()) {\n throw new errors.NotImplementedError(`This extension is only supported on real devices`);\n }\n\n const {\n applicationType = 'User',\n } = opts;\n const service = await services.startInstallationProxyService(this.opts.device.udid);\n try {\n return await service.listApplications({applicationType});\n } finally {\n service.close();\n }\n};\n\nexport default commands;\n"],"mappings":";;;;;;;;AAAA;AACA;AACA;AACA;AAEA,MAAMA,QAAQ,GAAG,CAAC,CAAC;AAEnB,SAASC,cAAc,CAAEC,IAAI,GAAG,CAAC,CAAC,EAAEC,OAAO,GAAG,EAAE,EAAE;EAChD,KAAK,MAAMC,GAAG,IAAID,OAAO,EAAE;IACzB,IAAI,CAACE,eAAC,CAACC,QAAQ,CAACJ,IAAI,CAACE,GAAG,CAAC,CAAC,IAAIC,eAAC,CAACE,OAAO,CAACL,IAAI,CAACE,GAAG,CAAC,CAAC,EAAE;MAClD,MAAM,IAAII,cAAM,CAACC,oBAAoB,CAClC,IAAGL,GAAI,wCAAuCF,IAAI,CAACE,GAAG,CAAE,oBAAmB,CAC7E;IACH;EACF;EACA,OAAOF,IAAI;AACb;AAEAF,QAAQ,CAACU,gBAAgB,GAAG,eAAeA,gBAAgB,CAAER,IAAI,GAAG,CAAC,CAAC,EAAE;EACtE,MAAM;IAAES,GAAG;IAAEC,SAAS;IAAEC;EAAS,CAAC,GAAGZ,cAAc,CAACC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC;EAClE,MAAMY,UAAU,GAAG,MAAM,IAAI,CAACC,OAAO,CAACC,YAAY,CAACL,GAAG,EAAE,MAAM,CAAC;EAC/D,IAAI,CAACM,GAAG,CAACC,IAAI,CAAE,eAAcJ,UAAW,YAAW,IAAI,CAACK,YAAY,EAAE,GAAG,aAAa,GAAG,WAAY,GAAE,GACpG,cAAa,IAAI,CAACjB,IAAI,CAACkB,MAAM,CAACC,IAAK,GAAE,CAAC;EACzC,IAAI,EAAC,MAAMC,WAAE,CAACC,MAAM,CAACT,UAAU,CAAC,GAAE;IAChC,IAAI,CAACG,GAAG,CAACO,aAAa,CAAE,uBAAsBV,UAAW,uCAAsC,CAAC;EAClG;EACA,MAAM,IAAI,CAACZ,IAAI,CAACkB,MAAM,CAACK,UAAU,CAC/BX,UAAU,EAAEF,SAAS,IAAI,IAAI,CAACV,IAAI,CAACwB,cAAc,EAAEb,QAAQ,IAAI,IAAI,CAACX,IAAI,CAACyB,kBAAkB,CAC5F;EACD,IAAI,CAACV,GAAG,CAACC,IAAI,CAAE,oBAAmBJ,UAAW,aAAY,CAAC;AAC5D,CAAC;AAEDd,QAAQ,CAAC4B,oBAAoB,GAAG,eAAeA,oBAAoB,CAAE1B,IAAI,GAAG,CAAC,CAAC,EAAE;EAC9E,MAAM;IAAC2B;EAAQ,CAAC,GAAG5B,cAAc,CAACC,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC;EACrD,MAAM4B,SAAS,GAAG,MAAM,IAAI,CAAC5B,IAAI,CAACkB,MAAM,CAACW,cAAc,CAACF,QAAQ,CAAC;EACjE,IAAI,CAACZ,GAAG,CAACC,IAAI,CAAE,QAAOW,QAAS,OAAMC,SAAS,GAAG,EAAE,GAAG,MAAO,YAAW,CAAC;EACzE,OAAOA,SAAS;AAClB,CAAC;AAED9B,QAAQ,CAACgC,eAAe,GAAG,eAAeA,eAAe,CAAE9B,IAAI,GAAG,CAAC,CAAC,EAAE;EACpE,MAAM;IAAC2B;EAAQ,CAAC,GAAG5B,cAAc,CAACC,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC;EACrD,IAAI,CAACe,GAAG,CAACC,IAAI,CAAE,wDAAuDW,QAAS,IAAG,GAC/E,YAAW,IAAI,CAACV,YAAY,EAAE,GAAG,aAAa,GAAG,WAAY,eAAc,IAAI,CAACjB,IAAI,CAACkB,MAAM,CAACC,IAAK,GAAE,CAAC;EACvG,IAAI;IACF,MAAM,IAAI,CAACnB,IAAI,CAACkB,MAAM,CAACa,SAAS,CAACJ,QAAQ,CAAC;IAC1C,IAAI,CAACZ,GAAG,CAACC,IAAI,CAAE,eAAcW,QAAS,aAAY,CAAC;IACnD,OAAO,IAAI;EACb,CAAC,CAAC,OAAOK,GAAG,EAAE;IACZ,IAAI,CAACjB,GAAG,CAACkB,IAAI,CAAE,kBAAiBN,QAAS,sBAAqBK,GAAG,CAACE,OAAQ,EAAC,CAAC;IAC5E,OAAO,KAAK;EACd;AACF,CAAC;AAEDpC,QAAQ,CAACqC,eAAe,GAAG,eAAeA,eAAe,CAAEnC,IAAI,GAAG,CAAC,CAAC,EAAE;EACpE,MAAMoC,aAAa,GAAGrC,cAAc,CAACC,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC;EACxD,IAAIA,IAAI,CAACqC,SAAS,EAAE;IAClBD,aAAa,CAACC,SAAS,GAAGlC,eAAC,CAACmC,OAAO,CAACtC,IAAI,CAACqC,SAAS,CAAC,GAAGrC,IAAI,CAACqC,SAAS,GAAG,CAACrC,IAAI,CAACqC,SAAS,CAAC;EACzF;EACA,IAAIrC,IAAI,CAACuC,WAAW,EAAE;IACpBH,aAAa,CAACG,WAAW,GAAGvC,IAAI,CAACuC,WAAW;EAC9C;EACA,OAAO,MAAM,IAAI,CAACC,YAAY,CAAC,kBAAkB,EAAE,MAAM,EAAEJ,aAAa,CAAC;AAC3E,CAAC;AAEDtC,QAAQ,CAAC2C,kBAAkB,GAAG,eAAeA,kBAAkB,CAAEzC,IAAI,GAAG,CAAC,CAAC,EAAE;EAC1E,OAAO,MAAM,IAAI,CAACwC,YAAY,CAAC,qBAAqB,EAAE,MAAM,EAAEzC,cAAc,CAACC,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;AACnG,CAAC;AAEDF,QAAQ,CAAC4C,iBAAiB,GAAG,eAAeA,iBAAiB,CAAE1C,IAAI,GAAG,CAAC,CAAC,EAAE;EACxE,OAAO,MAAM,IAAI,CAACwC,YAAY,CAAC,oBAAoB,EAAE,MAAM,EAAEzC,cAAc,CAACC,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;AAClG,CAAC;AASDF,QAAQ,CAAC6C,aAAa,GAAG,eAAeA,aAAa,CAAE3C,IAAI,GAAG,CAAC,CAAC,EAAE;EAChE,IAAI,CAAC,IAAI,CAACiB,YAAY,EAAE,EAAE;IACxB,MAAM,IAAIX,cAAM,CAACsC,yBAAyB,CAAC,2BAA2B,CAAC;EACzE;EAEA,MAAM;IAACjB;EAAQ,CAAC,GAAG5B,cAAc,CAACC,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC;EACrD,OAAO,MAAM,IAAI,CAACA,IAAI,CAACkB,MAAM,CAAC2B,YAAY,CAAClB,QAAQ,CAAC;AACtD,CAAC;AAUD7B,QAAQ,CAACgD,mBAAmB,GAAG,eAAeA,mBAAmB,CAAE9C,IAAI,GAAG,CAAC,CAAC,EAAE;EAC5E,OAAO,MAAM,IAAI,CAACwC,YAAY,CAAC,iBAAiB,EAAE,MAAM,EAAEzC,cAAc,CAACC,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;AAC/F,CAAC;AAEDF,QAAQ,CAACyB,UAAU,GAAG,eAAeA,UAAU,CAAEwB,OAAO,EAAE/C,IAAI,GAAG,CAAC,CAAC,EAAE;EACnE,MAAM,IAAI,CAACQ,gBAAgB,CAAC;IAC1B,IAAIL,eAAC,CAAC6C,aAAa,CAAChD,IAAI,CAAC,GAAGA,IAAI,GAAG,CAAC,CAAC,CAAC;IACtCS,GAAG,EAAEsC;EACP,CAAC,CAAC;AACJ,CAAC;AAEDjD,QAAQ,CAACmD,WAAW,GAAG,eAAeA,WAAW,CAAEtB,QAAQ,EAAE3B,IAAI,GAAG,CAAC,CAAC,EAAE;EACtE,OAAO,MAAM,IAAI,CAACmC,eAAe,CAACe,MAAM,CAACC,MAAM,CAAC,CAAC,CAAC,EAAEnD,IAAI,EAAE;IAAC2B;EAAQ,CAAC,CAAC,CAAC;AACxE,CAAC;AAED7B,QAAQ,CAAC+B,cAAc,GAAG,eAAeA,cAAc,CAAEF,QAAQ,EAAE;EACjE,OAAO,MAAM,IAAI,CAACD,oBAAoB,CAAC;IAACC;EAAQ,CAAC,CAAC;AACpD,CAAC;AAED7B,QAAQ,CAAC+C,YAAY,GAAG,eAAeA,YAAY,CAAElB,QAAQ,EAAE;EAC7D,OAAO,MAAM,IAAI,CAACc,kBAAkB,CAAC;IAACd;EAAQ,CAAC,CAAC;AAClD,CAAC;AAED7B,QAAQ,CAACsD,aAAa,GAAG,eAAeA,aAAa,CAAEzB,QAAQ,EAAE;EAC/D,OAAO,MAAM,IAAI,CAACmB,mBAAmB,CAAC;IAACnB;EAAQ,CAAC,CAAC;AACnD,CAAC;AAcD7B,QAAQ,CAACuD,cAAc,GAAG,eAAeA,cAAc,CAAErD,IAAI,GAAG,CAAC,CAAC,EAAE;EAClE,IAAI,CAAC,IAAI,CAACiB,YAAY,EAAE,EAAE;IACxB,MAAM,IAAIX,cAAM,CAACgD,mBAAmB,CAAE,kDAAiD,CAAC;EAC1F;EAEA,MAAM;IACJC,eAAe,GAAG;EACpB,CAAC,GAAGvD,IAAI;EACR,MAAMwD,OAAO,GAAG,MAAMC,yBAAQ,CAACC,6BAA6B,CAAC,IAAI,CAAC1D,IAAI,CAACkB,MAAM,CAACC,IAAI,CAAC;EACnF,IAAI;IACF,OAAO,MAAMqC,OAAO,CAACG,gBAAgB,CAAC;MAACJ;IAAe,CAAC,CAAC;EAC1D,CAAC,SAAS;IACRC,OAAO,CAACI,KAAK,EAAE;EACjB;AACF,CAAC;AAAC,eAEa9D,QAAQ;AAAA"}
|
|
1
|
+
{"version":3,"file":"app-management.js","names":["_lodash","_interopRequireDefault","require","_support","_driver","_appiumIosDevice","commands","requireOptions","opts","reqKeys","key","_","isString","isEmpty","errors","InvalidArgumentError","mobileInstallApp","app","timeoutMs","strategy","srcAppPath","helpers","configureApp","log","info","isRealDevice","device","udid","fs","exists","errorAndThrow","installApp","appPushTimeout","appInstallStrategy","mobileIsAppInstalled","bundleId","installed","isAppInstalled","mobileRemoveApp","removeApp","err","warn","message","mobileLaunchApp","launchOptions","arguments","isArray","environment","proxyCommand","mobileTerminateApp","mobileActivateApp","mobileKillApp","UnsupportedOperationError","terminateApp","mobileQueryAppState","appPath","isPlainObject","activateApp","Object","assign","queryAppState","mobileListApps","NotImplementedError","applicationType","service","services","startInstallationProxyService","listApplications","close","_default","exports","default"],"sources":["../../../lib/commands/app-management.js"],"sourcesContent":["import _ from 'lodash';\nimport { fs } from 'appium/support';\nimport { errors } from 'appium/driver';\nimport { services } from 'appium-ios-device';\n\nconst commands = {};\n\nfunction requireOptions (opts = {}, reqKeys = []) {\n for (const key of reqKeys) {\n if (!_.isString(opts[key]) || _.isEmpty(opts[key])) {\n throw new errors.InvalidArgumentError(\n `'${key}' is expected to be a valid string. '${opts[key]}' is given instead`\n );\n }\n }\n return opts;\n}\n\ncommands.mobileInstallApp = async function mobileInstallApp (opts = {}) {\n const { app, timeoutMs, strategy } = requireOptions(opts, ['app']);\n const srcAppPath = await this.helpers.configureApp(app, '.app');\n this.log.info(`Installing '${srcAppPath}' to the ${this.isRealDevice() ? 'real device' : 'Simulator'} ` +\n `with UDID '${this.opts.device.udid}'`);\n if (!await fs.exists(srcAppPath)) {\n this.log.errorAndThrow(`The application at '${srcAppPath}' does not exist or is not accessible`);\n }\n await this.opts.device.installApp(\n srcAppPath, timeoutMs ?? this.opts.appPushTimeout, strategy ?? this.opts.appInstallStrategy\n );\n this.log.info(`Installation of '${srcAppPath}' succeeded`);\n};\n\ncommands.mobileIsAppInstalled = async function mobileIsAppInstalled (opts = {}) {\n const {bundleId} = requireOptions(opts, ['bundleId']);\n const installed = await this.opts.device.isAppInstalled(bundleId);\n this.log.info(`App '${bundleId}' is${installed ? '' : ' not'} installed`);\n return installed;\n};\n\ncommands.mobileRemoveApp = async function mobileRemoveApp (opts = {}) {\n const {bundleId} = requireOptions(opts, ['bundleId']);\n this.log.info(`Uninstalling the application with bundle identifier '${bundleId}' ` +\n `from the ${this.isRealDevice() ? 'real device' : 'Simulator'} with UDID '${this.opts.device.udid}'`);\n try {\n await this.opts.device.removeApp(bundleId);\n this.log.info(`Removal of '${bundleId}' succeeded`);\n return true;\n } catch (err) {\n this.log.warn(`Cannot remove '${bundleId}'. Original error: ${err.message}`);\n return false;\n }\n};\n\ncommands.mobileLaunchApp = async function mobileLaunchApp (opts = {}) {\n const launchOptions = requireOptions(opts, ['bundleId']);\n if (opts.arguments) {\n launchOptions.arguments = _.isArray(opts.arguments) ? opts.arguments : [opts.arguments];\n }\n if (opts.environment) {\n launchOptions.environment = opts.environment;\n }\n return await this.proxyCommand('/wda/apps/launch', 'POST', launchOptions);\n};\n\ncommands.mobileTerminateApp = async function mobileTerminateApp (opts = {}) {\n return await this.proxyCommand('/wda/apps/terminate', 'POST', requireOptions(opts, ['bundleId']));\n};\n\ncommands.mobileActivateApp = async function mobileActivateApp (opts = {}) {\n return await this.proxyCommand('/wda/apps/activate', 'POST', requireOptions(opts, ['bundleId']));\n};\n\n/**\n * Kill the given bundle id process via instruments service.\n * https://github.com/YueChen-C/py-ios-device/blob/51f4683c5c3c385a015858ada07a5f1c62d3cf57/ios_device/cli/base.py#L220\n *\n * @param {Object} opts - Options set, which must contain `bundleId` property\n * @returns {boolean} Returns true if the bundle id process was killed. Otherwise false.\n */\ncommands.mobileKillApp = async function mobileKillApp (opts = {}) {\n if (!this.isRealDevice()) {\n throw new errors.UnsupportedOperationError('A real device is required');\n }\n\n const {bundleId} = requireOptions(opts, ['bundleId']);\n return await this.opts.device.terminateApp(bundleId);\n};\n\n/**\n * Returns the current application state\n *\n * @param {Object} opts - Options set, which must contain `bundleId` property\n * @returns {number} The actual application state code. See\n * https://developer.apple.com/documentation/xctest/xcuiapplicationstate?language=objc\n * to get the list of possible values.\n */\ncommands.mobileQueryAppState = async function mobileQueryAppState (opts = {}) {\n return await this.proxyCommand('/wda/apps/state', 'POST', requireOptions(opts, ['bundleId']));\n};\n\ncommands.installApp = async function installApp (appPath, opts = {}) {\n await this.mobileInstallApp({\n ...(_.isPlainObject(opts) ? opts : {}),\n app: appPath,\n });\n};\n\ncommands.activateApp = async function activateApp (bundleId, opts = {}) {\n return await this.mobileLaunchApp(Object.assign({}, opts, {bundleId}));\n};\n\ncommands.isAppInstalled = async function isAppInstalled (bundleId) {\n return await this.mobileIsAppInstalled({bundleId});\n};\n\ncommands.terminateApp = async function terminateApp (bundleId) {\n return await this.mobileTerminateApp({bundleId});\n};\n\ncommands.queryAppState = async function queryAppState (bundleId) {\n return await this.mobileQueryAppState({bundleId});\n};\n\n/**\n * @typedef {Object} ListAppsOptions\n * @property {'System'|'User'} applicationType [User] The type of applications to list\n */\n\n/**\n * List applications installed on the real device under test\n *\n * @param {ListAppsOptions} opts\n * @returns {Array<Object>} A list of apps, where each item is a map where keys are\n * bundle identifiers and values are maps of platform-specific app properties.\n */\ncommands.mobileListApps = async function mobileListApps (opts = {}) {\n if (!this.isRealDevice()) {\n throw new errors.NotImplementedError(`This extension is only supported on real devices`);\n }\n\n const {\n applicationType = 'User',\n } = opts;\n const service = await services.startInstallationProxyService(this.opts.device.udid);\n try {\n return await service.listApplications({applicationType});\n } finally {\n service.close();\n }\n};\n\nexport default commands;\n"],"mappings":"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"}
|
|
@@ -57,4 +57,4 @@ commands.mobileGetAppearance = async function mobileGetAppearance() {
|
|
|
57
57
|
};
|
|
58
58
|
var _default = commands;
|
|
59
59
|
exports.default = _default;
|
|
60
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
60
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfc3VwcG9ydCIsImNvbW1hbmRzIiwiZXhwb3J0cyIsIm1vYmlsZVNldEFwcGVhcmFuY2UiLCJvcHRzIiwic3R5bGUiLCJpbmNsdWRlcyIsIl8iLCJ0b0xvd2VyIiwiRXJyb3IiLCJ1dGlsIiwiY29tcGFyZVZlcnNpb25zIiwicGxhdGZvcm1WZXJzaW9uIiwiaXNTaW11bGF0b3IiLCJkZXZpY2UiLCJzZXRBcHBlYXJhbmNlIiwiZSIsImxvZyIsImRlYnVnIiwic3RhY2siLCJwcm94eUNvbW1hbmQiLCJuYW1lIiwibW9iaWxlU2lyaUNvbW1hbmQiLCJ0ZXh0IiwibW9iaWxlR2V0QXBwZWFyYW5jZSIsImdldEFwcGVhcmFuY2UiLCJpZ24iLCJ1c2VySW50ZXJmYWNlU3R5bGUiLCJfZGVmYXVsdCIsImRlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvY29tbWFuZHMvYXBwZWFyYW5jZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgdXRpbCB9IGZyb20gJ2FwcGl1bS9zdXBwb3J0JztcblxuXG5jb25zdCBjb21tYW5kcyA9IHt9O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFNldEFwcGVhcmFuY2VPcHRpb25zXG4gKlxuICogQHByb3BlcnR5IHtzdHJpbmd9IHN0eWxlIC0gQ3VycmVudGx5IHR3byBzdHlsZXMgYXJlIHN1cHBvcnRlZDpcbiAqIC0gZGFya1xuICogLSBsaWdodFxuICovXG5cbi8qKlxuICogU2V0IHRoZSBkZXZpY2UncyBVSSBhcHBlYXJhbmNlIHN0eWxlXG4gKlxuICogQHNpbmNlIGlPUyAxMi4wXG4gKiBAcGFyYW0ge1NldEFwcGVhcmFuY2VPcHRpb25zfSBvcHRzXG4gKiBAdGhyb3dzIHtFcnJvcn0gaWYgdGhlIGN1cnJlbnQgcGxhdGZvcm0gZG9lcyBub3Qgc3VwcG9ydCBVSVxuICogYXBwZWFyYW5jZSBjaGFuZ2VzXG4gKi9cbmNvbW1hbmRzLm1vYmlsZVNldEFwcGVhcmFuY2UgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVTZXRBcHBlYXJhbmNlIChvcHRzID0ge30pIHtcbiAgY29uc3Qge1xuICAgIHN0eWxlLFxuICB9ID0gb3B0cztcbiAgaWYgKCFbJ2xpZ2h0JywgJ2RhcmsnXS5pbmNsdWRlcyhfLnRvTG93ZXIoc3R5bGUpKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgVGhlICdzdHlsZScgdmFsdWUgaXMgZXhwZWN0ZWQgdG8gZXF1YWwgZWl0aGVyICdsaWdodCcgb3IgJ2RhcmsnYCk7XG4gIH1cbiAgaWYgKHV0aWwuY29tcGFyZVZlcnNpb25zKHRoaXMub3B0cy5wbGF0Zm9ybVZlcnNpb24sICc8JywgJzEyLjAnKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignQ2hhbmdpbmcgYXBwZWFyYW5jZSBpcyBvbmx5IHN1cHBvcnRlZCBzaW5jZSBpT1MgMTInKTtcbiAgfVxuXG4gIGlmICh0aGlzLmlzU2ltdWxhdG9yKCkpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHZvaWQgKGF3YWl0IHRoaXMub3B0cy5kZXZpY2Uuc2V0QXBwZWFyYW5jZShzdHlsZSkpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMubG9nLmRlYnVnKGUuc3RhY2spO1xuICAgIH1cbiAgfVxuICB0cnkge1xuICAgIHJldHVybiB2b2lkIChhd2FpdCB0aGlzLnByb3h5Q29tbWFuZCgnL3dkYS9kZXZpY2UvYXBwZWFyYW5jZScsICdQT1NUJywge25hbWU6IHN0eWxlfSwgZmFsc2UpKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHRoaXMubG9nLmRlYnVnKGUuc3RhY2spO1xuICB9XG4gIC8vIEZhbGwgYmFjayB0byB0aGUgdWdseSBTaXJpIHdvcmthcm91bmQgaWYgdGhlIGN1cnJlbnQgU0RLIGlzIHRvbyBvbGRcbiAgYXdhaXQgdGhpcy5tb2JpbGVTaXJpQ29tbWFuZCh7XG4gICAgdGV4dDogYFR1cm4gJHtfLnRvTG93ZXIoc3R5bGUpID09PSAnZGFyaycgPyAnb24nIDogJ29mZid9IGRhcmsgbW9kZWAsXG4gIH0pO1xufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBBcHBlYXJhbmNlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gc3R5bGUgLSBUaGUgZGV2aWNlJ3MgVUkgYXBwZWFyYW5jZSB2YWx1ZS5cbiAqIFRoaXMgY291bGQgYmUgb25lIG9mOlxuICogLSBgbGlnaHRgXG4gKiAtIGBkYXJrYFxuICogLSBgdW5rbm93bmBcbiAqIC0gYHVuc3VwcG9ydGVkYFxuICovXG5cbi8qKlxuICogR2V0IHRoZSBkZXZpY2UncyBVSSBhcHBlYXJhbmNlIHN0eWxlLlxuICpcbiAqIEBzaW5jZSBYY29kZSBTREsgMTFcbiAqIEByZXR1cm5zIHtBcHBlYXJhbmNlfVxuICovXG5jb21tYW5kcy5tb2JpbGVHZXRBcHBlYXJhbmNlID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlR2V0QXBwZWFyYW5jZSAoKSB7XG4gIGlmICh1dGlsLmNvbXBhcmVWZXJzaW9ucyh0aGlzLm9wdHMucGxhdGZvcm1WZXJzaW9uLCAnPCcsICcxMi4wJykpIHtcbiAgICByZXR1cm4gJ3Vuc3VwcG9ydGVkJztcbiAgfVxuXG4gIGxldCBzdHlsZTtcbiAgaWYgKHRoaXMuaXNTaW11bGF0b3IoKSkge1xuICAgIHRyeSB7XG4gICAgICBzdHlsZSA9IGF3YWl0IHRoaXMub3B0cy5kZXZpY2UuZ2V0QXBwZWFyYW5jZSgpO1xuICAgIH0gY2F0Y2ggKGlnbikge31cbiAgfVxuICBpZiAoIXN0eWxlKSB7XG4gICAgc3R5bGUgPSAoYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQoJy93ZGEvZGV2aWNlL2luZm8nLCAnR0VUJykpLnVzZXJJbnRlcmZhY2VTdHlsZSB8fCAndW5rbm93bic7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBzdHlsZSxcbiAgfTtcbn07XG5cblxuZXhwb3J0IHsgY29tbWFuZHMgfTtcbmV4cG9ydCBkZWZhdWx0IGNvbW1hbmRzO1xuIl0s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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"appearance.js","names":["commands","mobileSetAppearance","opts","style","includes","_","toLower","Error","util","compareVersions","platformVersion","isSimulator","device","setAppearance","e","log","debug","stack","proxyCommand","name","mobileSiriCommand","text","mobileGetAppearance","getAppearance","ign","userInterfaceStyle"],"sources":["../../../lib/commands/appearance.js"],"sourcesContent":["import _ from 'lodash';\nimport { util } from 'appium/support';\n\n\nconst commands = {};\n\n/**\n * @typedef {Object} SetAppearanceOptions\n *\n * @property {string} style - Currently two styles are supported:\n * - dark\n * - light\n */\n\n/**\n * Set the device's UI appearance style\n *\n * @since iOS 12.0\n * @param {SetAppearanceOptions} opts\n * @throws {Error} if the current platform does not support UI\n * appearance changes\n */\ncommands.mobileSetAppearance = async function mobileSetAppearance (opts = {}) {\n const {\n style,\n } = opts;\n if (!['light', 'dark'].includes(_.toLower(style))) {\n throw new Error(`The 'style' value is expected to equal either 'light' or 'dark'`);\n }\n if (util.compareVersions(this.opts.platformVersion, '<', '12.0')) {\n throw new Error('Changing appearance is only supported since iOS 12');\n }\n\n if (this.isSimulator()) {\n try {\n return void (await this.opts.device.setAppearance(style));\n } catch (e) {\n this.log.debug(e.stack);\n }\n }\n try {\n return void (await this.proxyCommand('/wda/device/appearance', 'POST', {name: style}, false));\n } catch (e) {\n this.log.debug(e.stack);\n }\n // Fall back to the ugly Siri workaround if the current SDK is too old\n await this.mobileSiriCommand({\n text: `Turn ${_.toLower(style) === 'dark' ? 'on' : 'off'} dark mode`,\n });\n};\n\n/**\n * @typedef {Object} Appearance\n * @property {string} style - The device's UI appearance value.\n * This could be one of:\n * - `light`\n * - `dark`\n * - `unknown`\n * - `unsupported`\n */\n\n/**\n * Get the device's UI appearance style.\n *\n * @since Xcode SDK 11\n * @returns {Appearance}\n */\ncommands.mobileGetAppearance = async function mobileGetAppearance () {\n if (util.compareVersions(this.opts.platformVersion, '<', '12.0')) {\n return 'unsupported';\n }\n\n let style;\n if (this.isSimulator()) {\n try {\n style = await this.opts.device.getAppearance();\n } catch (ign) {}\n }\n if (!style) {\n style = (await this.proxyCommand('/wda/device/info', 'GET')).userInterfaceStyle || 'unknown';\n }\n return {\n style,\n };\n};\n\n\nexport { commands };\nexport default commands;\n"],"mappings":";;;;;;;;AAAA;AACA;AAGA,
|
|
1
|
+
{"version":3,"file":"appearance.js","names":["_lodash","_interopRequireDefault","require","_support","commands","exports","mobileSetAppearance","opts","style","includes","_","toLower","Error","util","compareVersions","platformVersion","isSimulator","device","setAppearance","e","log","debug","stack","proxyCommand","name","mobileSiriCommand","text","mobileGetAppearance","getAppearance","ign","userInterfaceStyle","_default","default"],"sources":["../../../lib/commands/appearance.js"],"sourcesContent":["import _ from 'lodash';\nimport { util } from 'appium/support';\n\n\nconst commands = {};\n\n/**\n * @typedef {Object} SetAppearanceOptions\n *\n * @property {string} style - Currently two styles are supported:\n * - dark\n * - light\n */\n\n/**\n * Set the device's UI appearance style\n *\n * @since iOS 12.0\n * @param {SetAppearanceOptions} opts\n * @throws {Error} if the current platform does not support UI\n * appearance changes\n */\ncommands.mobileSetAppearance = async function mobileSetAppearance (opts = {}) {\n const {\n style,\n } = opts;\n if (!['light', 'dark'].includes(_.toLower(style))) {\n throw new Error(`The 'style' value is expected to equal either 'light' or 'dark'`);\n }\n if (util.compareVersions(this.opts.platformVersion, '<', '12.0')) {\n throw new Error('Changing appearance is only supported since iOS 12');\n }\n\n if (this.isSimulator()) {\n try {\n return void (await this.opts.device.setAppearance(style));\n } catch (e) {\n this.log.debug(e.stack);\n }\n }\n try {\n return void (await this.proxyCommand('/wda/device/appearance', 'POST', {name: style}, false));\n } catch (e) {\n this.log.debug(e.stack);\n }\n // Fall back to the ugly Siri workaround if the current SDK is too old\n await this.mobileSiriCommand({\n text: `Turn ${_.toLower(style) === 'dark' ? 'on' : 'off'} dark mode`,\n });\n};\n\n/**\n * @typedef {Object} Appearance\n * @property {string} style - The device's UI appearance value.\n * This could be one of:\n * - `light`\n * - `dark`\n * - `unknown`\n * - `unsupported`\n */\n\n/**\n * Get the device's UI appearance style.\n *\n * @since Xcode SDK 11\n * @returns {Appearance}\n */\ncommands.mobileGetAppearance = async function mobileGetAppearance () {\n if (util.compareVersions(this.opts.platformVersion, '<', '12.0')) {\n return 'unsupported';\n }\n\n let style;\n if (this.isSimulator()) {\n try {\n style = await this.opts.device.getAppearance();\n } catch (ign) {}\n }\n if (!style) {\n style = (await this.proxyCommand('/wda/device/info', 'GET')).userInterfaceStyle || 'unknown';\n }\n return {\n style,\n };\n};\n\n\nexport { commands };\nexport default commands;\n"],"mappings":";;;;;;;;AAAA,IAAAA,OAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AAGA,MAAME,QAAQ,GAAG,CAAC,CAAC;AAACC,OAAA,CAAAD,QAAA,GAAAA,QAAA;AAkBpBA,QAAQ,CAACE,mBAAmB,GAAG,eAAeA,mBAAmBA,CAAEC,IAAI,GAAG,CAAC,CAAC,EAAE;EAC5E,MAAM;IACJC;EACF,CAAC,GAAGD,IAAI;EACR,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAACE,QAAQ,CAACC,eAAC,CAACC,OAAO,CAACH,KAAK,CAAC,CAAC,EAAE;IACjD,MAAM,IAAII,KAAK,CAAE,iEAAgE,CAAC;EACpF;EACA,IAAIC,aAAI,CAACC,eAAe,CAAC,IAAI,CAACP,IAAI,CAACQ,eAAe,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE;IAChE,MAAM,IAAIH,KAAK,CAAC,oDAAoD,CAAC;EACvE;EAEA,IAAI,IAAI,CAACI,WAAW,EAAE,EAAE;IACtB,IAAI;MACF,OAAO,MAAM,MAAM,IAAI,CAACT,IAAI,CAACU,MAAM,CAACC,aAAa,CAACV,KAAK,CAAC,CAAC;IAC3D,CAAC,CAAC,OAAOW,CAAC,EAAE;MACV,IAAI,CAACC,GAAG,CAACC,KAAK,CAACF,CAAC,CAACG,KAAK,CAAC;IACzB;EACF;EACA,IAAI;IACF,OAAO,MAAM,MAAM,IAAI,CAACC,YAAY,CAAC,wBAAwB,EAAE,MAAM,EAAE;MAACC,IAAI,EAAEhB;IAAK,CAAC,EAAE,KAAK,CAAC,CAAC;EAC/F,CAAC,CAAC,OAAOW,CAAC,EAAE;IACV,IAAI,CAACC,GAAG,CAACC,KAAK,CAACF,CAAC,CAACG,KAAK,CAAC;EACzB;EAEA,MAAM,IAAI,CAACG,iBAAiB,CAAC;IAC3BC,IAAI,EAAG,QAAOhB,eAAC,CAACC,OAAO,CAACH,KAAK,CAAC,KAAK,MAAM,GAAG,IAAI,GAAG,KAAM;EAC3D,CAAC,CAAC;AACJ,CAAC;AAkBDJ,QAAQ,CAACuB,mBAAmB,GAAG,eAAeA,mBAAmBA,CAAA,EAAI;EACnE,IAAId,aAAI,CAACC,eAAe,CAAC,IAAI,CAACP,IAAI,CAACQ,eAAe,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE;IAChE,OAAO,aAAa;EACtB;EAEA,IAAIP,KAAK;EACT,IAAI,IAAI,CAACQ,WAAW,EAAE,EAAE;IACtB,IAAI;MACFR,KAAK,GAAG,MAAM,IAAI,CAACD,IAAI,CAACU,MAAM,CAACW,aAAa,EAAE;IAChD,CAAC,CAAC,OAAOC,GAAG,EAAE,CAAC;EACjB;EACA,IAAI,CAACrB,KAAK,EAAE;IACVA,KAAK,GAAG,CAAC,MAAM,IAAI,CAACe,YAAY,CAAC,kBAAkB,EAAE,KAAK,CAAC,EAAEO,kBAAkB,IAAI,SAAS;EAC9F;EACA,OAAO;IACLtB;EACF,CAAC;AACH,CAAC;AAAC,IAAAuB,QAAA,GAIa3B,QAAQ;AAAAC,OAAA,CAAA2B,OAAA,GAAAD,QAAA"}
|
|
@@ -14,4 +14,4 @@ commands.mobileGetBatteryInfo = async function mobileGetBatteryInfo() {
|
|
|
14
14
|
Object.assign(extensions, commands);
|
|
15
15
|
var _default = extensions;
|
|
16
16
|
exports.default = _default;
|
|
17
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
17
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJleHRlbnNpb25zIiwiY29tbWFuZHMiLCJleHBvcnRzIiwibW9iaWxlR2V0QmF0dGVyeUluZm8iLCJwcm94eUNvbW1hbmQiLCJPYmplY3QiLCJhc3NpZ24iLCJfZGVmYXVsdCIsImRlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvY29tbWFuZHMvYmF0dGVyeS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJsZXQgZXh0ZW5zaW9ucyA9IHt9LCBjb21tYW5kcyA9IHt9O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IEJhdHRlcnlJbmZvXG4gKlxuICogQHByb3BlcnR5IHtudW1iZXJ9IGxldmVsIC0gQmF0dGVyeSBsZXZlbCBpbiByYW5nZSBbMC4wLCAxLjBdLCB3aGVyZVxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgMS4wIG1lYW5zIDEwMCUgY2hhcmdlLlxuICogQHByb3BlcnR5IHtudW1iZXJ9IHN0YXRlIC0gQmF0dGVyeSBzdGF0ZS4gVGhlIGZvbGxvd2luZyB2YWx1ZXMgYXJlIHBvc3NpYmxlOlxuICogICBVSURldmljZUJhdHRlcnlTdGF0ZVVua25vd24gPSAwXG4gKiAgIFVJRGV2aWNlQmF0dGVyeVN0YXRlVW5wbHVnZ2VkID0gMSAgLy8gb24gYmF0dGVyeSwgZGlzY2hhcmdpbmdcbiAqICAgVUlEZXZpY2VCYXR0ZXJ5U3RhdGVDaGFyZ2luZyA9IDIgICAvLyBwbHVnZ2VkIGluLCBsZXNzIHRoYW4gMTAwJVxuICogICBVSURldmljZUJhdHRlcnlTdGF0ZUZ1bGwgPSAzICAgICAgIC8vIHBsdWdnZWQgaW4sIGF0IDEwMCVcbiAqL1xuXG4vKipcbiAqIFJlYWRzIHRoZSBiYXR0ZXJ5IGluZm9ybWF0aW9uIGZyb20gdGhlIGRldmljZSB1bmRlciB0ZXN0LlxuICogVGhpcyBlbmRwb2ludCBvbmx5IHJldHVybnMgcmVsaWFibGUgcmVzdWx0IG9uIHJlYWwgZGV2aWNlcy5cbiAqXG4gKiBAcmV0dXJucyB7QmF0dGVyeUluZm99IFRoZSBhY3R1YWwgYmF0dGVyeSBpbmZvXG4gKi9cbmNvbW1hbmRzLm1vYmlsZUdldEJhdHRlcnlJbmZvID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlR2V0QmF0dGVyeUluZm8gKCkge1xuICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQoJy93ZGEvYmF0dGVyeUluZm8nLCAnR0VUJyk7XG59O1xuXG5PYmplY3QuYXNzaWduKGV4dGVuc2lvbnMsIGNvbW1hbmRzKTtcbmV4cG9ydCB7IGNvbW1hbmRzIH07XG5leHBvcnQgZGVmYXVsdCBleHRlbnNpb25zO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsSUFBSUEsVUFBVSxHQUFHLENBQUMsQ0FBQztFQUFFQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO0FBQUNDLE9BQUEsQ0FBQUQsUUFBQSxHQUFBQSxRQUFBO0FBb0JuQ0EsUUFBUSxDQUFDRSxvQkFBb0IsR0FBRyxlQUFlQSxvQkFBb0JBLENBQUEsRUFBSTtFQUNyRSxPQUFPLE1BQU0sSUFBSSxDQUFDQyxZQUFZLENBQUMsa0JBQWtCLEVBQUUsS0FBSyxDQUFDO0FBQzNELENBQUM7QUFFREMsTUFBTSxDQUFDQyxNQUFNLENBQUNOLFVBQVUsRUFBRUMsUUFBUSxDQUFDO0FBQUMsSUFBQU0sUUFBQSxHQUVyQlAsVUFBVTtBQUFBRSxPQUFBLENBQUFNLE9BQUEsR0FBQUQsUUFBQSJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"battery.js","names":["extensions","commands","mobileGetBatteryInfo","proxyCommand","Object","assign"],"sources":["../../../lib/commands/battery.js"],"sourcesContent":["let extensions = {}, commands = {};\n\n/**\n * @typedef {Object} BatteryInfo\n *\n * @property {number} level - Battery level in range [0.0, 1.0], where\n * 1.0 means 100% charge.\n * @property {number} state - Battery state. The following values are possible:\n * UIDeviceBatteryStateUnknown = 0\n * UIDeviceBatteryStateUnplugged = 1 // on battery, discharging\n * UIDeviceBatteryStateCharging = 2 // plugged in, less than 100%\n * UIDeviceBatteryStateFull = 3 // plugged in, at 100%\n */\n\n/**\n * Reads the battery information from the device under test.\n * This endpoint only returns reliable result on real devices.\n *\n * @returns {BatteryInfo} The actual battery info\n */\ncommands.mobileGetBatteryInfo = async function mobileGetBatteryInfo () {\n return await this.proxyCommand('/wda/batteryInfo', 'GET');\n};\n\nObject.assign(extensions, commands);\nexport { commands };\nexport default extensions;\n"],"mappings":";;;;;;;AAAA,IAAIA,UAAU,GAAG,CAAC,CAAC;EAAEC,QAAQ,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"battery.js","names":["extensions","commands","exports","mobileGetBatteryInfo","proxyCommand","Object","assign","_default","default"],"sources":["../../../lib/commands/battery.js"],"sourcesContent":["let extensions = {}, commands = {};\n\n/**\n * @typedef {Object} BatteryInfo\n *\n * @property {number} level - Battery level in range [0.0, 1.0], where\n * 1.0 means 100% charge.\n * @property {number} state - Battery state. The following values are possible:\n * UIDeviceBatteryStateUnknown = 0\n * UIDeviceBatteryStateUnplugged = 1 // on battery, discharging\n * UIDeviceBatteryStateCharging = 2 // plugged in, less than 100%\n * UIDeviceBatteryStateFull = 3 // plugged in, at 100%\n */\n\n/**\n * Reads the battery information from the device under test.\n * This endpoint only returns reliable result on real devices.\n *\n * @returns {BatteryInfo} The actual battery info\n */\ncommands.mobileGetBatteryInfo = async function mobileGetBatteryInfo () {\n return await this.proxyCommand('/wda/batteryInfo', 'GET');\n};\n\nObject.assign(extensions, commands);\nexport { commands };\nexport default extensions;\n"],"mappings":";;;;;;;AAAA,IAAIA,UAAU,GAAG,CAAC,CAAC;EAAEC,QAAQ,GAAG,CAAC,CAAC;AAACC,OAAA,CAAAD,QAAA,GAAAA,QAAA;AAoBnCA,QAAQ,CAACE,oBAAoB,GAAG,eAAeA,oBAAoBA,CAAA,EAAI;EACrE,OAAO,MAAM,IAAI,CAACC,YAAY,CAAC,kBAAkB,EAAE,KAAK,CAAC;AAC3D,CAAC;AAEDC,MAAM,CAACC,MAAM,CAACN,UAAU,EAAEC,QAAQ,CAAC;AAAC,IAAAM,QAAA,GAErBP,UAAU;AAAAE,OAAA,CAAAM,OAAA,GAAAD,QAAA"}
|
|
@@ -37,4 +37,4 @@ commands.mobileIsBiometricEnrolled = async function mobileIsBiometricEnrolled()
|
|
|
37
37
|
Object.assign(extensions, commands, helpers);
|
|
38
38
|
var _default = extensions;
|
|
39
39
|
exports.default = _default;
|
|
40
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
40
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kcyIsImhlbHBlcnMiLCJleHRlbnNpb25zIiwiZXhwb3J0cyIsImFzc2VydElzU2ltdWxhdG9yIiwiZHJpdmVyIiwiaXNTaW11bGF0b3IiLCJFcnJvciIsIm1vYmlsZUVucm9sbEJpb21ldHJpYyIsIm9wdHMiLCJpc0VuYWJsZWQiLCJkZXZpY2UiLCJlbnJvbGxCaW9tZXRyaWMiLCJtb2JpbGVTZW5kQmlvbWV0cmljTWF0Y2giLCJtYXRjaCIsInR5cGUiLCJzZW5kQmlvbWV0cmljTWF0Y2giLCJtb2JpbGVJc0Jpb21ldHJpY0Vucm9sbGVkIiwiaXNCaW9tZXRyaWNFbnJvbGxlZCIsIk9iamVjdCIsImFzc2lnbiIsIl9kZWZhdWx0IiwiZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9jb21tYW5kcy9iaW9tZXRyaWMuanMiXSwic291cmNlc0NvbnRlbnQiOlsibGV0IGNvbW1hbmRzID0ge30sIGhlbHBlcnMgPSB7fSwgZXh0ZW5zaW9ucyA9IHt9O1xuXG5mdW5jdGlvbiBhc3NlcnRJc1NpbXVsYXRvciAoZHJpdmVyKSB7XG4gIGlmICghZHJpdmVyLmlzU2ltdWxhdG9yKCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0Jpb21ldHJpYyBlbnJvbGxtZW50IGNhbiBvbmx5IGJlIHBlcmZvcm1lZCBvbiBTaW11bGF0b3InKTtcbiAgfVxufVxuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IEVucm9sbE9wdGlvbnNcbiAqXG4gKiBAcHJvcGVydHkgez9ib29sZWFufSBpc0VuYWJsZWQgW3RydWVdIC0gV2hldGhlciB0byBlbmFibGUvZGlzYWJsZSBiaW9tZXRyaWMgZW5yb2xsbWVudC5cbiAqL1xuXG4vKipcbiAqIEVucm9sbHMgYmlvbWV0cmljIGF1dGhlbnRpY2F0aW9uIG9uIFNpbXVsYXRvci5cbiAqXG4gKiBAcGFyYW0ge0Vucm9sbE9wdGlvbnN9IG9wdHMgLSBFbnJvbGxtZW50IG9wdGlvbnMuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgZW5yb2xsbWVudCBmYWlscyBvciB0aGUgZGV2aWNlIGlzIG5vdCBhIFNpbXVsYXRvci5cbiAqL1xuY29tbWFuZHMubW9iaWxlRW5yb2xsQmlvbWV0cmljID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlRW5yb2xsQmlvbWV0cmljIChvcHRzID0ge30pIHtcbiAgY29uc3Qge1xuICAgIGlzRW5hYmxlZCA9IHRydWUsXG4gIH0gPSBvcHRzO1xuXG4gIGFzc2VydElzU2ltdWxhdG9yKHRoaXMpO1xuXG4gIGF3YWl0IHRoaXMub3B0cy5kZXZpY2UuZW5yb2xsQmlvbWV0cmljKGlzRW5hYmxlZCk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IEJpb21ldHJpY01hdGNoT3B0aW9uc1xuICpcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gdHlwZSBbdG91Y2hJZF0gLSBUaGUgYmlvbWV0cmljIGZlYXR1cmUgbmFtZS5cbiAqIEBwcm9wZXJ0eSB7P2Jvb2xlYW59IG1hdGNoIFt0cnVlXSAtIFdoZXRoZXIgdG8gc2ltdWxhdGUgYmlvbWV0cmljIG1hdGNoIG9yIG5vbi1tYXRjaC5cbiAqL1xuXG4vKipcbiAqIEVtdWxhdGVzIGJpb21ldHJpYyBtYXRjaC9ub24tbWF0Y2ggZXZlbnQgb24gU2ltdWxhdG9yLlxuICogVGhlIGJpb21ldHJpYyBmZWF0dXJlIGlzIGV4cGVjdGVkIHRvIGJlIGFscmVhZHkgZW5yb2xsZWQgYmVmb3JlIGV4ZWN1dGluZyB0aGF0LlxuICpcbiAqIEBwYXJhbSB7QmlvbWV0cmljTWF0Y2hPcHRpb25zfSBvcHRzIC0gTWF0Y2hpbmcgb3B0aW9ucy5cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiBtYXRjaGluZyBmYWlscyBvciB0aGUgZGV2aWNlIGlzIG5vdCBhIFNpbXVsYXRvci5cbiAqL1xuY29tbWFuZHMubW9iaWxlU2VuZEJpb21ldHJpY01hdGNoID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlU2VuZEJpb21ldHJpY01hdGNoIChvcHRzID0ge30pIHtcbiAgY29uc3Qge1xuICAgIG1hdGNoID0gdHJ1ZSxcbiAgICB0eXBlID0gJ3RvdWNoSWQnLFxuICB9ID0gb3B0cztcblxuICBhc3NlcnRJc1NpbXVsYXRvcih0aGlzKTtcblxuICBhd2FpdCB0aGlzLm9wdHMuZGV2aWNlLnNlbmRCaW9tZXRyaWNNYXRjaChtYXRjaCwgdHlwZSk7XG59O1xuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIGJpb21ldHJpYyBpcyBjdXJyZW50bHkgZW5yb2xsZWQgb3Igbm90LlxuICpcbiAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgYmlvbWV0cmljIGlzIGVucm9sbGVkLlxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBkZXRlY3Rpb24gZmFpbHMgb3IgdGhlIGRldmljZSBpcyBub3QgYSBTaW11bGF0b3IuXG4gKi9cbmNvbW1hbmRzLm1vYmlsZUlzQmlvbWV0cmljRW5yb2xsZWQgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVJc0Jpb21ldHJpY0Vucm9sbGVkICgpIHtcbiAgYXNzZXJ0SXNTaW11bGF0b3IodGhpcyk7XG5cbiAgcmV0dXJuIGF3YWl0IHRoaXMub3B0cy5kZXZpY2UuaXNCaW9tZXRyaWNFbnJvbGxlZCgpO1xufTtcblxuT2JqZWN0LmFzc2lnbihleHRlbnNpb25zLCBjb21tYW5kcywgaGVscGVycyk7XG5leHBvcnQgeyBjb21tYW5kcywgaGVscGVycyB9O1xuZXhwb3J0IGRlZmF1bHQgZXh0ZW5zaW9ucztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLElBQUlBLFFBQVEsR0FBRyxDQUFDLENBQUM7RUFBRUMsT0FBTyxHQUFHLENBQUMsQ0FBQztFQUFFQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO0FBQUNDLE9BQUEsQ0FBQUYsT0FBQSxHQUFBQSxPQUFBO0FBQUFFLE9BQUEsQ0FBQUgsUUFBQSxHQUFBQSxRQUFBO0FBRWpELFNBQVNJLGlCQUFpQkEsQ0FBRUMsTUFBTSxFQUFFO0VBQ2xDLElBQUksQ0FBQ0EsTUFBTSxDQUFDQyxXQUFXLEVBQUUsRUFBRTtJQUN6QixNQUFNLElBQUlDLEtBQUssQ0FBQyx5REFBeUQsQ0FBQztFQUM1RTtBQUNGO0FBY0FQLFFBQVEsQ0FBQ1EscUJBQXFCLEdBQUcsZUFBZUEscUJBQXFCQSxDQUFFQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUU7RUFDaEYsTUFBTTtJQUNKQyxTQUFTLEdBQUc7RUFDZCxDQUFDLEdBQUdELElBQUk7RUFFUkwsaUJBQWlCLENBQUMsSUFBSSxDQUFDO0VBRXZCLE1BQU0sSUFBSSxDQUFDSyxJQUFJLENBQUNFLE1BQU0sQ0FBQ0MsZUFBZSxDQUFDRixTQUFTLENBQUM7QUFDbkQsQ0FBQztBQWdCRFYsUUFBUSxDQUFDYSx3QkFBd0IsR0FBRyxlQUFlQSx3QkFBd0JBLENBQUVKLElBQUksR0FBRyxDQUFDLENBQUMsRUFBRTtFQUN0RixNQUFNO0lBQ0pLLEtBQUssR0FBRyxJQUFJO0lBQ1pDLElBQUksR0FBRztFQUNULENBQUMsR0FBR04sSUFBSTtFQUVSTCxpQkFBaUIsQ0FBQyxJQUFJLENBQUM7RUFFdkIsTUFBTSxJQUFJLENBQUNLLElBQUksQ0FBQ0UsTUFBTSxDQUFDSyxrQkFBa0IsQ0FBQ0YsS0FBSyxFQUFFQyxJQUFJLENBQUM7QUFDeEQsQ0FBQztBQVFEZixRQUFRLENBQUNpQix5QkFBeUIsR0FBRyxlQUFlQSx5QkFBeUJBLENBQUEsRUFBSTtFQUMvRWIsaUJBQWlCLENBQUMsSUFBSSxDQUFDO0VBRXZCLE9BQU8sTUFBTSxJQUFJLENBQUNLLElBQUksQ0FBQ0UsTUFBTSxDQUFDTyxtQkFBbUIsRUFBRTtBQUNyRCxDQUFDO0FBRURDLE1BQU0sQ0FBQ0MsTUFBTSxDQUFDbEIsVUFBVSxFQUFFRixRQUFRLEVBQUVDLE9BQU8sQ0FBQztBQUFDLElBQUFvQixRQUFBLEdBRTlCbkIsVUFBVTtBQUFBQyxPQUFBLENBQUFtQixPQUFBLEdBQUFELFFBQUEifQ==
|