appium-android-driver 5.10.4 → 5.11.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/build/lib/android-helpers.js +1 -1
  3. package/build/lib/android-helpers.js.map +1 -1
  4. package/build/lib/bootstrap.js +1 -1
  5. package/build/lib/bootstrap.js.map +1 -1
  6. package/build/lib/commands/actions.js +52 -1
  7. package/build/lib/commands/actions.js.map +1 -1
  8. package/build/lib/commands/alert.js +1 -1
  9. package/build/lib/commands/alert.js.map +1 -1
  10. package/build/lib/commands/app-management.js +1 -1
  11. package/build/lib/commands/app-management.js.map +1 -1
  12. package/build/lib/commands/context.js +1 -1
  13. package/build/lib/commands/context.js.map +1 -1
  14. package/build/lib/commands/execute.js +1 -1
  15. package/build/lib/commands/execute.js.map +1 -1
  16. package/build/lib/commands/file-actions.js +1 -1
  17. package/build/lib/commands/file-actions.js.map +1 -1
  18. package/build/lib/commands/find.js +1 -1
  19. package/build/lib/commands/find.js.map +1 -1
  20. package/build/lib/commands/general.js +1 -1
  21. package/build/lib/commands/general.js.map +1 -1
  22. package/build/lib/commands/ime.js +1 -1
  23. package/build/lib/commands/ime.js.map +1 -1
  24. package/build/lib/commands/index.js +1 -1
  25. package/build/lib/commands/index.js.map +1 -1
  26. package/build/lib/commands/intent.js +1 -1
  27. package/build/lib/commands/intent.js.map +1 -1
  28. package/build/lib/commands/keyboard.js +1 -1
  29. package/build/lib/commands/keyboard.js.map +1 -1
  30. package/build/lib/commands/log.js +1 -1
  31. package/build/lib/commands/log.js.map +1 -1
  32. package/build/lib/commands/media-projection.js +1 -1
  33. package/build/lib/commands/media-projection.js.map +1 -1
  34. package/build/lib/commands/network.js +6 -55
  35. package/build/lib/commands/network.js.map +1 -1
  36. package/build/lib/commands/performance.js +1 -1
  37. package/build/lib/commands/performance.js.map +1 -1
  38. package/build/lib/commands/permissions.js +1 -1
  39. package/build/lib/commands/permissions.js.map +1 -1
  40. package/build/lib/commands/recordscreen.js +1 -1
  41. package/build/lib/commands/recordscreen.js.map +1 -1
  42. package/build/lib/commands/streamscreen.js +1 -1
  43. package/build/lib/commands/streamscreen.js.map +1 -1
  44. package/build/lib/commands/touch.js +1 -1
  45. package/build/lib/commands/touch.js.map +1 -1
  46. package/build/lib/driver.js +1 -1
  47. package/build/lib/driver.js.map +1 -1
  48. package/build/lib/uiautomator.js +1 -1
  49. package/build/lib/uiautomator.js.map +1 -1
  50. package/build/lib/unlock-helpers.js +1 -1
  51. package/build/lib/unlock-helpers.js.map +1 -1
  52. package/build/lib/utils.js +1 -1
  53. package/build/lib/utils.js.map +1 -1
  54. package/build/lib/webview-helpers.js +1 -1
  55. package/build/lib/webview-helpers.js.map +1 -1
  56. package/lib/commands/actions.js +135 -0
  57. package/lib/commands/network.js +18 -90
  58. package/lib/utils.js +4 -3
  59. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"general.js","names":["_lodash","_interopRequireDefault","require","_androidHelpers","_support","_moment","_asyncbox","_driver","MOMENT_FORMAT_ISO8601","commands","helpers","extensions","exports","keys","_","isArray","join","params","text","replace","opts","unicodeKeyboard","doSendKeys","bootstrap","sendAction","getDeviceTime","format","log","debug","deviceTimestamp","adb","shell","trim","parsedTimestamp","moment","utc","isValid","warn","utcOffset","_tzm","mobileGetDeviceTime","getPageSource","back","openSettingsActivity","setting","appPackage","appActivity","getFocusedPackageAndActivity","waitForNotActivity","getWindowSize","getWindowRect","width","height","x","y","getCurrentActivity","getCurrentPackage","background","seconds","goToHome","sleepMs","thresholdMs","intervalMs","min","parseInt","progressCb","elapsedMs","progress","waitSecs","toFixed","progressPct","longSleep","args","_cachedActivityArgs","activateApp","ign","appWaitPackage","appWaitActivity","split","includes","pkg","activity","action","intentAction","category","intentCategory","flags","intentFlags","waitPkg","waitActivity","waitForLaunch","appWaitForLaunch","waitDuration","appWaitDuration","optionalIntentArguments","stopApp","user","userProfile","util","filterObject","JSON","stringify","startApp","getStrings","language","getDeviceLanguage","info","preprocessStringsMap","mapping","result","key","value","toPairs","isString","apkStrings","androidHelpers","pushStrings","launchApp","initAUT","startAUT","startActivity","dontStopAppOnReset","hasValue","reset","resetApp","Object","assign","fastReset","setContext","isChromeSession","startChromeSession","setUrl","uri","startUri","closeApp","forceStop","getDisplayDensity","out","val","isNaN","errorAndThrow","mobilePerformEditorAction","errors","InvalidArgumentError","performEditorAction","mobileGetNotifications","getNotifications","mobileListSms","getSmsList","mobileUnlock","type","strategy","timeoutMs","unlock","unlockKey","unlockType","unlockStrategy","unlockSuccessTimeout","_default","default"],"sources":["../../../lib/commands/general.js"],"sourcesContent":["import _ from 'lodash';\nimport androidHelpers from '../android-helpers';\nimport { util } from '@appium/support';\nimport moment from 'moment';\nimport { longSleep } from 'asyncbox';\nimport { errors } from 'appium/driver';\n\nconst MOMENT_FORMAT_ISO8601 = 'YYYY-MM-DDTHH:mm:ssZ';\n\nlet commands = {}, helpers = {}, extensions = {};\n\ncommands.keys = async function keys (keys) {\n // Protocol sends an array; rethink approach\n keys = _.isArray(keys) ? keys.join('') : keys;\n let params = {\n text: keys,\n replace: false\n };\n if (this.opts.unicodeKeyboard) {\n params.unicodeKeyboard = true;\n }\n await this.doSendKeys(params);\n};\n\ncommands.doSendKeys = async function doSendKeys (params) {\n return await this.bootstrap.sendAction('setText', params);\n};\n\n/**\n * Retrieves the current device's timestamp.\n *\n * @param {string} format - The set of format specifiers. Read\n * https://momentjs.com/docs/ to get the full list of supported\n * datetime format specifiers. The default format is\n * `YYYY-MM-DDTHH:mm:ssZ`, which complies to ISO-8601\n * @return {string} Formatted datetime string or the raw command output if formatting fails\n */\ncommands.getDeviceTime = async function getDeviceTime (format = MOMENT_FORMAT_ISO8601) {\n this.log.debug('Attempting to capture android device date and time. ' +\n `The format specifier is '${format}'`);\n const deviceTimestamp = (await this.adb.shell(['date', '+%Y-%m-%dT%T%z'])).trim();\n this.log.debug(`Got device timestamp: ${deviceTimestamp}`);\n const parsedTimestamp = moment.utc(deviceTimestamp, 'YYYY-MM-DDTHH:mm:ssZZ');\n if (!parsedTimestamp.isValid()) {\n this.log.warn('Cannot parse the returned timestamp. Returning as is');\n return deviceTimestamp;\n }\n return parsedTimestamp.utcOffset(parsedTimestamp._tzm || 0).format(format);\n};\n\n/**\n * @typedef {Object} DeviceTimeOptions\n * @property {string} format [YYYY-MM-DDTHH:mm:ssZ] - See getDeviceTime#format\n */\n\n/**\n * Retrieves the current device time\n *\n * @param {DeviceTimeOptions} opts\n * @return {string} Formatted datetime string or the raw command output if formatting fails\n */\ncommands.mobileGetDeviceTime = async function mobileGetDeviceTime (opts = {}) {\n return await this.getDeviceTime(opts.format);\n};\n\ncommands.getPageSource = async function getPageSource () {\n return await this.bootstrap.sendAction('source');\n};\n\ncommands.back = async function back () {\n return await this.bootstrap.sendAction('pressBack');\n};\n\ncommands.openSettingsActivity = async function openSettingsActivity (setting) {\n let {appPackage, appActivity} = await this.adb.getFocusedPackageAndActivity();\n await this.adb.shell(['am', 'start', '-a', `android.settings.${setting}`]);\n await this.adb.waitForNotActivity(appPackage, appActivity, 5000);\n};\n\ncommands.getWindowSize = async function getWindowSize () {\n return await this.bootstrap.sendAction('getDeviceSize');\n};\n\n// For W3C\ncommands.getWindowRect = async function getWindowRect () {\n const { width, height } = await this.getWindowSize();\n return {\n width,\n height,\n x: 0,\n y: 0\n };\n};\n\ncommands.getCurrentActivity = async function getCurrentActivity () {\n return (await this.adb.getFocusedPackageAndActivity()).appActivity;\n};\n\ncommands.getCurrentPackage = async function getCurrentPackage () {\n return (await this.adb.getFocusedPackageAndActivity()).appPackage;\n};\n\ncommands.background = async function background (seconds) {\n if (seconds < 0) {\n // if user passes in a negative seconds value, interpret that as the instruction\n // to not bring the app back at all\n await this.adb.goToHome();\n return true;\n }\n let {appPackage, appActivity} = await this.adb.getFocusedPackageAndActivity();\n await this.adb.goToHome();\n\n // people can wait for a long time, so to be safe let's use the longSleep function and log\n // progress periodically.\n const sleepMs = seconds * 1000;\n const thresholdMs = 30 * 1000; // use the spin-wait for anything over this threshold\n // for our spin interval, use 1% of the total wait time, but nothing bigger than 30s\n const intervalMs = _.min([30 * 1000, parseInt(sleepMs / 100, 10)]);\n const progressCb = ({elapsedMs, progress}) => {\n const waitSecs = (elapsedMs / 1000).toFixed(0);\n const progressPct = (progress * 100).toFixed(2);\n this.log.debug(`Waited ${waitSecs}s so far (${progressPct}%)`);\n };\n await longSleep(sleepMs, {thresholdMs, intervalMs, progressCb});\n\n let args;\n if (this._cachedActivityArgs && this._cachedActivityArgs[`${appPackage}/${appActivity}`]) {\n // the activity was started with `startActivity`, so use those args to restart\n args = this._cachedActivityArgs[`${appPackage}/${appActivity}`];\n } else {\n try {\n this.log.debug(`Activating app '${appPackage}' in order to restore it`);\n await this.activateApp(appPackage);\n return true;\n } catch (ign) {}\n args = ((appPackage === this.opts.appPackage && appActivity === this.opts.appActivity) ||\n (appPackage === this.opts.appWaitPackage && (this.opts.appWaitActivity || '').split(',').includes(appActivity)))\n ? {// the activity is the original session activity, so use the original args\n pkg: this.opts.appPackage,\n activity: this.opts.appActivity,\n action: this.opts.intentAction,\n category: this.opts.intentCategory,\n flags: this.opts.intentFlags,\n waitPkg: this.opts.appWaitPackage,\n waitActivity: this.opts.appWaitActivity,\n waitForLaunch: this.opts.appWaitForLaunch,\n waitDuration: this.opts.appWaitDuration,\n optionalIntentArguments: this.opts.optionalIntentArguments,\n stopApp: false,\n user: this.opts.userProfile}\n : {// the activity was started some other way, so use defaults\n pkg: appPackage,\n activity: appActivity,\n waitPkg: appPackage,\n waitActivity: appActivity,\n stopApp: false};\n }\n args = await util.filterObject(args);\n this.log.debug(`Bringing application back to foreground with arguments: ${JSON.stringify(args)}`);\n return await this.adb.startApp(args);\n};\n\ncommands.getStrings = async function getStrings (language) {\n if (!language) {\n language = await this.adb.getDeviceLanguage();\n this.log.info(`No language specified, returning strings for: ${language}`);\n }\n\n // Clients require the resulting mapping to have both keys\n // and values of type string\n const preprocessStringsMap = (mapping) => {\n const result = {};\n for (const [key, value] of _.toPairs(mapping)) {\n result[key] = _.isString(value) ? value : JSON.stringify(value);\n }\n return result;\n };\n\n if (this.apkStrings[language]) {\n // Return cached strings\n return preprocessStringsMap(this.apkStrings[language]);\n }\n\n this.apkStrings[language] = await androidHelpers.pushStrings(language, this.adb, this.opts);\n if (this.bootstrap) {\n // TODO: This is mutating the current language, but it's how appium currently works\n await this.bootstrap.sendAction('updateStrings');\n }\n\n return preprocessStringsMap(this.apkStrings[language]);\n};\n\ncommands.launchApp = async function launchApp () {\n await this.initAUT();\n await this.startAUT();\n};\n\ncommands.startActivity = async function startActivity (appPackage, appActivity,\n appWaitPackage, appWaitActivity, intentAction, intentCategory, intentFlags,\n optionalIntentArguments, dontStopAppOnReset) {\n this.log.debug(`Starting package '${appPackage}' and activity '${appActivity}'`);\n\n // dontStopAppOnReset is both an argument here, and a desired capability\n // if the argument is set, use it, otherwise use the cap\n if (!util.hasValue(dontStopAppOnReset)) {\n dontStopAppOnReset = !!this.opts.dontStopAppOnReset;\n }\n\n let args = {\n pkg: appPackage,\n activity: appActivity,\n waitPkg: appWaitPackage || appPackage,\n waitActivity: appWaitActivity || appActivity,\n action: intentAction,\n category: intentCategory,\n flags: intentFlags,\n optionalIntentArguments,\n stopApp: !dontStopAppOnReset\n };\n this._cachedActivityArgs = this._cachedActivityArgs || {};\n this._cachedActivityArgs[`${args.waitPkg}/${args.waitActivity}`] = args;\n await this.adb.startApp(args);\n};\n\ncommands.reset = async function reset () {\n await androidHelpers.resetApp(this.adb, Object.assign({}, this.opts, {fastReset: true}));\n // reset context since we don't know what kind on context we will end up after app launch.\n await this.setContext();\n return await this.isChromeSession ? this.startChromeSession() : this.startAUT();\n};\n\ncommands.startAUT = async function startAUT () {\n await this.adb.startApp({\n pkg: this.opts.appPackage,\n activity: this.opts.appActivity,\n action: this.opts.intentAction,\n category: this.opts.intentCategory,\n flags: this.opts.intentFlags,\n waitPkg: this.opts.appWaitPackage,\n waitActivity: this.opts.appWaitActivity,\n waitForLaunch: this.opts.appWaitForLaunch,\n waitDuration: this.opts.appWaitDuration,\n optionalIntentArguments: this.opts.optionalIntentArguments,\n stopApp: !this.opts.dontStopAppOnReset,\n user: this.opts.userProfile,\n });\n};\n\n// we override setUrl to take an android URI which can be used for deep-linking\n// inside an app, similar to starting an intent\ncommands.setUrl = async function setUrl (uri) {\n await this.adb.startUri(uri, this.opts.appPackage);\n};\n\n// closing app using force stop\ncommands.closeApp = async function closeApp () {\n await this.adb.forceStop(this.opts.appPackage);\n // reset context since we don't know what kind on context we will end up after app launch.\n await this.setContext();\n};\n\ncommands.getDisplayDensity = async function getDisplayDensity () {\n // first try the property for devices\n let out = await this.adb.shell(['getprop', 'ro.sf.lcd_density']);\n if (out) {\n let val = parseInt(out, 10);\n // if the value is NaN, try getting the emulator property\n if (!isNaN(val)) {\n return val;\n }\n this.log.debug(`Parsed density value was NaN: \"${out}\"`);\n }\n // fallback to trying property for emulators\n out = await this.adb.shell(['getprop', 'qemu.sf.lcd_density']);\n if (out) {\n let val = parseInt(out, 10);\n if (!isNaN(val)) {\n return val;\n }\n this.log.debug(`Parsed density value was NaN: \"${out}\"`);\n }\n // couldn't get anything, so error out\n this.log.errorAndThrow('Failed to get display density property.');\n};\n\ncommands.mobilePerformEditorAction = async function mobilePerformEditorAction (opts = {}) {\n const {action} = opts;\n if (!util.hasValue(action)) {\n throw new errors.InvalidArgumentError(`'action' argument is required`);\n }\n\n await this.adb.performEditorAction(action);\n};\n\n/**\n * Retrieves the list of recent system notifications.\n *\n * @returns {Object} See the documentation on `adb.getNotifications` for\n * more details\n */\ncommands.mobileGetNotifications = async function mobileGetNotifications () {\n return await this.adb.getNotifications();\n};\n\n/**\n * @typedef {Object} SmsListOptions\n * @property {number} max [100] - The maximum count of recent SMS messages\n * to retrieve\n */\n\n/**\n * Retrieves the list of recent SMS messages with their properties.\n *\n * @param {SmsListOptions} opts\n * @returns {Object} See the documentation on `adb.getSmsList` for\n * more details\n */\ncommands.mobileListSms = async function mobileListSms (opts = {}) {\n return await this.adb.getSmsList(opts);\n};\n\n/**\n * @typedef {Object} UnlockOptions\n * @property {string?} key The unlock key. The value of this key depends\n * on the actual unlock type and could be a pin/password/pattern value or\n * a biometric finger id.\n * If not provided then the corresponding value from session capabilities is used.\n * @property {string?} type The unlock type. The following unlock types\n * are supported: `pin`, `pinWithKeyEvent`, `password`, `pattern` and `fingerprint`.\n * If not provided then the corresponding value from session capabilities is used.\n * @property {string?} strategy Either 'locksettings' (default) or 'uiautomator'.\n * Setting it to 'uiautomator' will enforce the driver to avoid using special\n * ADB shortcuts in order to speed up the unlock procedure.\n * @property {number?} timeoutMs [2000] The maximum time in milliseconds\n * to wait until the screen gets unlocked\n */\n\n/**\n * Unlocks the device if it is locked. Noop if the device's screen is not locked.\n *\n * @param {UnlockOptions} opts\n * @throws {Error} if unlock operation fails or the provided\n * arguments are not valid\n */\ncommands.mobileUnlock = async function mobileUnlock (opts = {}) {\n const { key, type, strategy, timeoutMs } = opts;\n if (!key && !type) {\n await this.unlock();\n } else {\n await androidHelpers.unlock(this, this.adb, {\n unlockKey: key,\n unlockType: type,\n unlockStrategy: strategy,\n unlockSuccessTimeout: timeoutMs,\n });\n }\n};\n\nObject.assign(extensions, commands, helpers);\nexport { commands, helpers };\nexport default extensions;\n"],"mappings":"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"}
1
+ {"version":3,"file":"general.js","names":["_lodash","_interopRequireDefault","require","_androidHelpers","_support","_moment","_asyncbox","_driver","MOMENT_FORMAT_ISO8601","commands","helpers","extensions","exports","keys","_","isArray","join","params","text","replace","opts","unicodeKeyboard","doSendKeys","bootstrap","sendAction","getDeviceTime","format","log","debug","deviceTimestamp","adb","shell","trim","parsedTimestamp","moment","utc","isValid","warn","utcOffset","_tzm","mobileGetDeviceTime","getPageSource","back","openSettingsActivity","setting","appPackage","appActivity","getFocusedPackageAndActivity","waitForNotActivity","getWindowSize","getWindowRect","width","height","x","y","getCurrentActivity","getCurrentPackage","background","seconds","goToHome","sleepMs","thresholdMs","intervalMs","min","parseInt","progressCb","elapsedMs","progress","waitSecs","toFixed","progressPct","longSleep","args","_cachedActivityArgs","activateApp","ign","appWaitPackage","appWaitActivity","split","includes","pkg","activity","action","intentAction","category","intentCategory","flags","intentFlags","waitPkg","waitActivity","waitForLaunch","appWaitForLaunch","waitDuration","appWaitDuration","optionalIntentArguments","stopApp","user","userProfile","util","filterObject","JSON","stringify","startApp","getStrings","language","getDeviceLanguage","info","preprocessStringsMap","mapping","result","key","value","toPairs","isString","apkStrings","androidHelpers","pushStrings","launchApp","initAUT","startAUT","startActivity","dontStopAppOnReset","hasValue","reset","resetApp","Object","assign","fastReset","setContext","isChromeSession","startChromeSession","setUrl","uri","startUri","closeApp","forceStop","getDisplayDensity","out","val","isNaN","errorAndThrow","mobilePerformEditorAction","errors","InvalidArgumentError","performEditorAction","mobileGetNotifications","getNotifications","mobileListSms","getSmsList","mobileUnlock","type","strategy","timeoutMs","unlock","unlockKey","unlockType","unlockStrategy","unlockSuccessTimeout","_default","default"],"sources":["../../../lib/commands/general.js"],"sourcesContent":["import _ from 'lodash';\nimport androidHelpers from '../android-helpers';\nimport { util } from '@appium/support';\nimport moment from 'moment';\nimport { longSleep } from 'asyncbox';\nimport { errors } from 'appium/driver';\n\nconst MOMENT_FORMAT_ISO8601 = 'YYYY-MM-DDTHH:mm:ssZ';\n\nlet commands = {}, helpers = {}, extensions = {};\n\ncommands.keys = async function keys (keys) {\n // Protocol sends an array; rethink approach\n keys = _.isArray(keys) ? keys.join('') : keys;\n let params = {\n text: keys,\n replace: false\n };\n if (this.opts.unicodeKeyboard) {\n params.unicodeKeyboard = true;\n }\n await this.doSendKeys(params);\n};\n\ncommands.doSendKeys = async function doSendKeys (params) {\n return await this.bootstrap.sendAction('setText', params);\n};\n\n/**\n * Retrieves the current device's timestamp.\n *\n * @param {string} format - The set of format specifiers. Read\n * https://momentjs.com/docs/ to get the full list of supported\n * datetime format specifiers. The default format is\n * `YYYY-MM-DDTHH:mm:ssZ`, which complies to ISO-8601\n * @return {string} Formatted datetime string or the raw command output if formatting fails\n */\ncommands.getDeviceTime = async function getDeviceTime (format = MOMENT_FORMAT_ISO8601) {\n this.log.debug('Attempting to capture android device date and time. ' +\n `The format specifier is '${format}'`);\n const deviceTimestamp = (await this.adb.shell(['date', '+%Y-%m-%dT%T%z'])).trim();\n this.log.debug(`Got device timestamp: ${deviceTimestamp}`);\n const parsedTimestamp = moment.utc(deviceTimestamp, 'YYYY-MM-DDTHH:mm:ssZZ');\n if (!parsedTimestamp.isValid()) {\n this.log.warn('Cannot parse the returned timestamp. Returning as is');\n return deviceTimestamp;\n }\n return parsedTimestamp.utcOffset(parsedTimestamp._tzm || 0).format(format);\n};\n\n/**\n * @typedef {Object} DeviceTimeOptions\n * @property {string} format [YYYY-MM-DDTHH:mm:ssZ] - See getDeviceTime#format\n */\n\n/**\n * Retrieves the current device time\n *\n * @param {DeviceTimeOptions} opts\n * @return {string} Formatted datetime string or the raw command output if formatting fails\n */\ncommands.mobileGetDeviceTime = async function mobileGetDeviceTime (opts = {}) {\n return await this.getDeviceTime(opts.format);\n};\n\ncommands.getPageSource = async function getPageSource () {\n return await this.bootstrap.sendAction('source');\n};\n\ncommands.back = async function back () {\n return await this.bootstrap.sendAction('pressBack');\n};\n\ncommands.openSettingsActivity = async function openSettingsActivity (setting) {\n let {appPackage, appActivity} = await this.adb.getFocusedPackageAndActivity();\n await this.adb.shell(['am', 'start', '-a', `android.settings.${setting}`]);\n await this.adb.waitForNotActivity(appPackage, appActivity, 5000);\n};\n\ncommands.getWindowSize = async function getWindowSize () {\n return await this.bootstrap.sendAction('getDeviceSize');\n};\n\n// For W3C\ncommands.getWindowRect = async function getWindowRect () {\n const { width, height } = await this.getWindowSize();\n return {\n width,\n height,\n x: 0,\n y: 0\n };\n};\n\ncommands.getCurrentActivity = async function getCurrentActivity () {\n return (await this.adb.getFocusedPackageAndActivity()).appActivity;\n};\n\ncommands.getCurrentPackage = async function getCurrentPackage () {\n return (await this.adb.getFocusedPackageAndActivity()).appPackage;\n};\n\ncommands.background = async function background (seconds) {\n if (seconds < 0) {\n // if user passes in a negative seconds value, interpret that as the instruction\n // to not bring the app back at all\n await this.adb.goToHome();\n return true;\n }\n let {appPackage, appActivity} = await this.adb.getFocusedPackageAndActivity();\n await this.adb.goToHome();\n\n // people can wait for a long time, so to be safe let's use the longSleep function and log\n // progress periodically.\n const sleepMs = seconds * 1000;\n const thresholdMs = 30 * 1000; // use the spin-wait for anything over this threshold\n // for our spin interval, use 1% of the total wait time, but nothing bigger than 30s\n const intervalMs = _.min([30 * 1000, parseInt(sleepMs / 100, 10)]);\n const progressCb = ({elapsedMs, progress}) => {\n const waitSecs = (elapsedMs / 1000).toFixed(0);\n const progressPct = (progress * 100).toFixed(2);\n this.log.debug(`Waited ${waitSecs}s so far (${progressPct}%)`);\n };\n await longSleep(sleepMs, {thresholdMs, intervalMs, progressCb});\n\n let args;\n if (this._cachedActivityArgs && this._cachedActivityArgs[`${appPackage}/${appActivity}`]) {\n // the activity was started with `startActivity`, so use those args to restart\n args = this._cachedActivityArgs[`${appPackage}/${appActivity}`];\n } else {\n try {\n this.log.debug(`Activating app '${appPackage}' in order to restore it`);\n await this.activateApp(appPackage);\n return true;\n } catch (ign) {}\n args = ((appPackage === this.opts.appPackage && appActivity === this.opts.appActivity) ||\n (appPackage === this.opts.appWaitPackage && (this.opts.appWaitActivity || '').split(',').includes(appActivity)))\n ? {// the activity is the original session activity, so use the original args\n pkg: this.opts.appPackage,\n activity: this.opts.appActivity,\n action: this.opts.intentAction,\n category: this.opts.intentCategory,\n flags: this.opts.intentFlags,\n waitPkg: this.opts.appWaitPackage,\n waitActivity: this.opts.appWaitActivity,\n waitForLaunch: this.opts.appWaitForLaunch,\n waitDuration: this.opts.appWaitDuration,\n optionalIntentArguments: this.opts.optionalIntentArguments,\n stopApp: false,\n user: this.opts.userProfile}\n : {// the activity was started some other way, so use defaults\n pkg: appPackage,\n activity: appActivity,\n waitPkg: appPackage,\n waitActivity: appActivity,\n stopApp: false};\n }\n args = await util.filterObject(args);\n this.log.debug(`Bringing application back to foreground with arguments: ${JSON.stringify(args)}`);\n return await this.adb.startApp(args);\n};\n\ncommands.getStrings = async function getStrings (language) {\n if (!language) {\n language = await this.adb.getDeviceLanguage();\n this.log.info(`No language specified, returning strings for: ${language}`);\n }\n\n // Clients require the resulting mapping to have both keys\n // and values of type string\n const preprocessStringsMap = (mapping) => {\n const result = {};\n for (const [key, value] of _.toPairs(mapping)) {\n result[key] = _.isString(value) ? value : JSON.stringify(value);\n }\n return result;\n };\n\n if (this.apkStrings[language]) {\n // Return cached strings\n return preprocessStringsMap(this.apkStrings[language]);\n }\n\n this.apkStrings[language] = await androidHelpers.pushStrings(language, this.adb, this.opts);\n if (this.bootstrap) {\n // TODO: This is mutating the current language, but it's how appium currently works\n await this.bootstrap.sendAction('updateStrings');\n }\n\n return preprocessStringsMap(this.apkStrings[language]);\n};\n\ncommands.launchApp = async function launchApp () {\n await this.initAUT();\n await this.startAUT();\n};\n\ncommands.startActivity = async function startActivity (appPackage, appActivity,\n appWaitPackage, appWaitActivity, intentAction, intentCategory, intentFlags,\n optionalIntentArguments, dontStopAppOnReset) {\n this.log.debug(`Starting package '${appPackage}' and activity '${appActivity}'`);\n\n // dontStopAppOnReset is both an argument here, and a desired capability\n // if the argument is set, use it, otherwise use the cap\n if (!util.hasValue(dontStopAppOnReset)) {\n dontStopAppOnReset = !!this.opts.dontStopAppOnReset;\n }\n\n let args = {\n pkg: appPackage,\n activity: appActivity,\n waitPkg: appWaitPackage || appPackage,\n waitActivity: appWaitActivity || appActivity,\n action: intentAction,\n category: intentCategory,\n flags: intentFlags,\n optionalIntentArguments,\n stopApp: !dontStopAppOnReset\n };\n this._cachedActivityArgs = this._cachedActivityArgs || {};\n this._cachedActivityArgs[`${args.waitPkg}/${args.waitActivity}`] = args;\n await this.adb.startApp(args);\n};\n\ncommands.reset = async function reset () {\n await androidHelpers.resetApp(this.adb, Object.assign({}, this.opts, {fastReset: true}));\n // reset context since we don't know what kind on context we will end up after app launch.\n await this.setContext();\n return await this.isChromeSession ? this.startChromeSession() : this.startAUT();\n};\n\ncommands.startAUT = async function startAUT () {\n await this.adb.startApp({\n pkg: this.opts.appPackage,\n activity: this.opts.appActivity,\n action: this.opts.intentAction,\n category: this.opts.intentCategory,\n flags: this.opts.intentFlags,\n waitPkg: this.opts.appWaitPackage,\n waitActivity: this.opts.appWaitActivity,\n waitForLaunch: this.opts.appWaitForLaunch,\n waitDuration: this.opts.appWaitDuration,\n optionalIntentArguments: this.opts.optionalIntentArguments,\n stopApp: !this.opts.dontStopAppOnReset,\n user: this.opts.userProfile,\n });\n};\n\n// we override setUrl to take an android URI which can be used for deep-linking\n// inside an app, similar to starting an intent\ncommands.setUrl = async function setUrl (uri) {\n await this.adb.startUri(uri, this.opts.appPackage);\n};\n\n// closing app using force stop\ncommands.closeApp = async function closeApp () {\n await this.adb.forceStop(this.opts.appPackage);\n // reset context since we don't know what kind on context we will end up after app launch.\n await this.setContext();\n};\n\ncommands.getDisplayDensity = async function getDisplayDensity () {\n // first try the property for devices\n let out = await this.adb.shell(['getprop', 'ro.sf.lcd_density']);\n if (out) {\n let val = parseInt(out, 10);\n // if the value is NaN, try getting the emulator property\n if (!isNaN(val)) {\n return val;\n }\n this.log.debug(`Parsed density value was NaN: \"${out}\"`);\n }\n // fallback to trying property for emulators\n out = await this.adb.shell(['getprop', 'qemu.sf.lcd_density']);\n if (out) {\n let val = parseInt(out, 10);\n if (!isNaN(val)) {\n return val;\n }\n this.log.debug(`Parsed density value was NaN: \"${out}\"`);\n }\n // couldn't get anything, so error out\n this.log.errorAndThrow('Failed to get display density property.');\n};\n\ncommands.mobilePerformEditorAction = async function mobilePerformEditorAction (opts = {}) {\n const {action} = opts;\n if (!util.hasValue(action)) {\n throw new errors.InvalidArgumentError(`'action' argument is required`);\n }\n\n await this.adb.performEditorAction(action);\n};\n\n/**\n * Retrieves the list of recent system notifications.\n *\n * @returns {Object} See the documentation on `adb.getNotifications` for\n * more details\n */\ncommands.mobileGetNotifications = async function mobileGetNotifications () {\n return await this.adb.getNotifications();\n};\n\n/**\n * @typedef {Object} SmsListOptions\n * @property {number} max [100] - The maximum count of recent SMS messages\n * to retrieve\n */\n\n/**\n * Retrieves the list of recent SMS messages with their properties.\n *\n * @param {SmsListOptions} opts\n * @returns {Object} See the documentation on `adb.getSmsList` for\n * more details\n */\ncommands.mobileListSms = async function mobileListSms (opts = {}) {\n return await this.adb.getSmsList(opts);\n};\n\n/**\n * @typedef {Object} UnlockOptions\n * @property {string?} key The unlock key. The value of this key depends\n * on the actual unlock type and could be a pin/password/pattern value or\n * a biometric finger id.\n * If not provided then the corresponding value from session capabilities is used.\n * @property {string?} type The unlock type. The following unlock types\n * are supported: `pin`, `pinWithKeyEvent`, `password`, `pattern` and `fingerprint`.\n * If not provided then the corresponding value from session capabilities is used.\n * @property {string?} strategy Either 'locksettings' (default) or 'uiautomator'.\n * Setting it to 'uiautomator' will enforce the driver to avoid using special\n * ADB shortcuts in order to speed up the unlock procedure.\n * @property {number?} timeoutMs [2000] The maximum time in milliseconds\n * to wait until the screen gets unlocked\n */\n\n/**\n * Unlocks the device if it is locked. Noop if the device's screen is not locked.\n *\n * @param {UnlockOptions} opts\n * @throws {Error} if unlock operation fails or the provided\n * arguments are not valid\n */\ncommands.mobileUnlock = async function mobileUnlock (opts = {}) {\n const { key, type, strategy, timeoutMs } = opts;\n if (!key && !type) {\n await this.unlock();\n } else {\n await androidHelpers.unlock(this, this.adb, {\n unlockKey: key,\n unlockType: type,\n unlockStrategy: strategy,\n unlockSuccessTimeout: timeoutMs,\n });\n }\n};\n\nObject.assign(extensions, commands, helpers);\nexport { commands, helpers };\nexport default extensions;\n"],"mappings":"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"}
@@ -43,4 +43,4 @@ commands.deactivateIMEEngine = async function deactivateIMEEngine() {
43
43
  Object.assign(extensions, commands, helpers);
44
44
  var _default = extensions;
45
45
  exports.default = _default;
46
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZHJpdmVyIiwicmVxdWlyZSIsImNvbW1hbmRzIiwiaGVscGVycyIsImV4dGVuc2lvbnMiLCJleHBvcnRzIiwiaXNJTUVBY3RpdmF0ZWQiLCJhdmFpbGFibGVJTUVFbmdpbmVzIiwibG9nIiwiZGVidWciLCJlbmdpbmVzIiwiYWRiIiwiYXZhaWxhYmxlSU1FcyIsIkpTT04iLCJzdHJpbmdpZnkiLCJnZXRBY3RpdmVJTUVFbmdpbmUiLCJkZWZhdWx0SU1FIiwiYWN0aXZhdGVJTUVFbmdpbmUiLCJpbWVJZCIsImF2YWlsYWJsZUVuZ2luZXMiLCJpbmRleE9mIiwiZXJyb3JzIiwiSU1FTm90QXZhaWxhYmxlRXJyb3IiLCJlbmFibGVJTUUiLCJzZXRJTUUiLCJkZWFjdGl2YXRlSU1FRW5naW5lIiwiY3VycmVudEVuZ2luZSIsImRpc2FibGVJTUUiLCJPYmplY3QiLCJhc3NpZ24iLCJfZGVmYXVsdCIsImRlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvY29tbWFuZHMvaW1lLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGVycm9ycyB9IGZyb20gJ2FwcGl1bS9kcml2ZXInO1xuXG5sZXQgY29tbWFuZHMgPSB7fSwgaGVscGVycyA9IHt9LCBleHRlbnNpb25zID0ge307XG5cbmNvbW1hbmRzLmlzSU1FQWN0aXZhdGVkID0gYXN5bmMgZnVuY3Rpb24gaXNJTUVBY3RpdmF0ZWQgKCkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHJlcXVpcmUtYXdhaXRcbiAgLy8gSU1FIGlzIGFsd2F5cyBhY3RpdmF0ZWQgb24gQW5kcm9pZCBkZXZpY2VzXG4gIHJldHVybiB0cnVlO1xufTtcblxuY29tbWFuZHMuYXZhaWxhYmxlSU1FRW5naW5lcyA9IGFzeW5jIGZ1bmN0aW9uIGF2YWlsYWJsZUlNRUVuZ2luZXMgKCkge1xuICB0aGlzLmxvZy5kZWJ1ZygnUmV0cmlldmluZyBhdmFpbGFibGUgSU1FcycpO1xuICBsZXQgZW5naW5lcyA9IGF3YWl0IHRoaXMuYWRiLmF2YWlsYWJsZUlNRXMoKTtcbiAgdGhpcy5sb2cuZGVidWcoYEVuZ2luZXM6ICR7SlNPTi5zdHJpbmdpZnkoZW5naW5lcyl9YCk7XG4gIHJldHVybiBlbmdpbmVzO1xufTtcblxuY29tbWFuZHMuZ2V0QWN0aXZlSU1FRW5naW5lID0gYXN5bmMgZnVuY3Rpb24gZ2V0QWN0aXZlSU1FRW5naW5lICgpIHtcbiAgdGhpcy5sb2cuZGVidWcoJ1JldHJpZXZpbmcgY3VycmVudCBkZWZhdWx0IElNRScpO1xuICByZXR1cm4gYXdhaXQgdGhpcy5hZGIuZGVmYXVsdElNRSgpO1xufTtcblxuY29tbWFuZHMuYWN0aXZhdGVJTUVFbmdpbmUgPSBhc3luYyBmdW5jdGlvbiBhY3RpdmF0ZUlNRUVuZ2luZSAoaW1lSWQpIHtcbiAgdGhpcy5sb2cuZGVidWcoYEF0dGVtcHRpbmcgdG8gYWN0aXZhdGUgSU1FICR7aW1lSWR9YCk7XG4gIGxldCBhdmFpbGFibGVFbmdpbmVzID0gYXdhaXQgdGhpcy5hZGIuYXZhaWxhYmxlSU1FcygpO1xuICBpZiAoYXZhaWxhYmxlRW5naW5lcy5pbmRleE9mKGltZUlkKSA9PT0gLTEpIHtcbiAgICB0aGlzLmxvZy5kZWJ1ZygnSU1FIG5vdCBmb3VuZCwgZmFpbGluZycpO1xuICAgIHRocm93IG5ldyBlcnJvcnMuSU1FTm90QXZhaWxhYmxlRXJyb3IoKTtcbiAgfVxuICB0aGlzLmxvZy5kZWJ1ZygnRm91bmQgaW5zdGFsbGVkIElNRSwgYXR0ZW1wdGluZyB0byBhY3RpdmF0ZScpO1xuICBhd2FpdCB0aGlzLmFkYi5lbmFibGVJTUUoaW1lSWQpO1xuICBhd2FpdCB0aGlzLmFkYi5zZXRJTUUoaW1lSWQpO1xufTtcblxuY29tbWFuZHMuZGVhY3RpdmF0ZUlNRUVuZ2luZSA9IGFzeW5jIGZ1bmN0aW9uIGRlYWN0aXZhdGVJTUVFbmdpbmUgKCkge1xuICBsZXQgY3VycmVudEVuZ2luZSA9IGF3YWl0IHRoaXMuZ2V0QWN0aXZlSU1FRW5naW5lKCk7XG4gIHRoaXMubG9nLmRlYnVnKGBBdHRlbXB0aW5nIHRvIGRlYWN0aXZhdGUgJHtjdXJyZW50RW5naW5lfWApO1xuICBhd2FpdCB0aGlzLmFkYi5kaXNhYmxlSU1FKGN1cnJlbnRFbmdpbmUpO1xufTtcblxuT2JqZWN0LmFzc2lnbihleHRlbnNpb25zLCBjb21tYW5kcywgaGVscGVycyk7XG5leHBvcnQgeyBjb21tYW5kcywgaGVscGVycyB9O1xuZXhwb3J0IGRlZmF1bHQgZXh0ZW5zaW9ucztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsT0FBQTtBQUVBLElBQUlDLFFBQVEsR0FBRyxDQUFDLENBQUM7RUFBRUMsT0FBTyxHQUFHLENBQUMsQ0FBQztFQUFFQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO0FBQUNDLE9BQUEsQ0FBQUYsT0FBQSxHQUFBQSxPQUFBO0FBQUFFLE9BQUEsQ0FBQUgsUUFBQSxHQUFBQSxRQUFBO0FBRWpEQSxRQUFRLENBQUNJLGNBQWMsR0FBRyxlQUFlQSxjQUFjQSxDQUFBLEVBQUk7RUFFekQsT0FBTyxJQUFJO0FBQ2IsQ0FBQztBQUVESixRQUFRLENBQUNLLG1CQUFtQixHQUFHLGVBQWVBLG1CQUFtQkEsQ0FBQSxFQUFJO0VBQ25FLElBQUksQ0FBQ0MsR0FBRyxDQUFDQyxLQUFLLENBQUMsMkJBQTJCLENBQUM7RUFDM0MsSUFBSUMsT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDQyxHQUFHLENBQUNDLGFBQWEsRUFBRTtFQUM1QyxJQUFJLENBQUNKLEdBQUcsQ0FBQ0MsS0FBSyxDQUFFLFlBQVdJLElBQUksQ0FBQ0MsU0FBUyxDQUFDSixPQUFPLENBQUUsRUFBQyxDQUFDO0VBQ3JELE9BQU9BLE9BQU87QUFDaEIsQ0FBQztBQUVEUixRQUFRLENBQUNhLGtCQUFrQixHQUFHLGVBQWVBLGtCQUFrQkEsQ0FBQSxFQUFJO0VBQ2pFLElBQUksQ0FBQ1AsR0FBRyxDQUFDQyxLQUFLLENBQUMsZ0NBQWdDLENBQUM7RUFDaEQsT0FBTyxNQUFNLElBQUksQ0FBQ0UsR0FBRyxDQUFDSyxVQUFVLEVBQUU7QUFDcEMsQ0FBQztBQUVEZCxRQUFRLENBQUNlLGlCQUFpQixHQUFHLGVBQWVBLGlCQUFpQkEsQ0FBRUMsS0FBSyxFQUFFO0VBQ3BFLElBQUksQ0FBQ1YsR0FBRyxDQUFDQyxLQUFLLENBQUUsOEJBQTZCUyxLQUFNLEVBQUMsQ0FBQztFQUNyRCxJQUFJQyxnQkFBZ0IsR0FBRyxNQUFNLElBQUksQ0FBQ1IsR0FBRyxDQUFDQyxhQUFhLEVBQUU7RUFDckQsSUFBSU8sZ0JBQWdCLENBQUNDLE9BQU8sQ0FBQ0YsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7SUFDMUMsSUFBSSxDQUFDVixHQUFHLENBQUNDLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQztJQUN4QyxNQUFNLElBQUlZLGNBQU0sQ0FBQ0Msb0JBQW9CLEVBQUU7RUFDekM7RUFDQSxJQUFJLENBQUNkLEdBQUcsQ0FBQ0MsS0FBSyxDQUFDLDZDQUE2QyxDQUFDO0VBQzdELE1BQU0sSUFBSSxDQUFDRSxHQUFHLENBQUNZLFNBQVMsQ0FBQ0wsS0FBSyxDQUFDO0VBQy9CLE1BQU0sSUFBSSxDQUFDUCxHQUFHLENBQUNhLE1BQU0sQ0FBQ04sS0FBSyxDQUFDO0FBQzlCLENBQUM7QUFFRGhCLFFBQVEsQ0FBQ3VCLG1CQUFtQixHQUFHLGVBQWVBLG1CQUFtQkEsQ0FBQSxFQUFJO0VBQ25FLElBQUlDLGFBQWEsR0FBRyxNQUFNLElBQUksQ0FBQ1gsa0JBQWtCLEVBQUU7RUFDbkQsSUFBSSxDQUFDUCxHQUFHLENBQUNDLEtBQUssQ0FBRSw0QkFBMkJpQixhQUFjLEVBQUMsQ0FBQztFQUMzRCxNQUFNLElBQUksQ0FBQ2YsR0FBRyxDQUFDZ0IsVUFBVSxDQUFDRCxhQUFhLENBQUM7QUFDMUMsQ0FBQztBQUVERSxNQUFNLENBQUNDLE1BQU0sQ0FBQ3pCLFVBQVUsRUFBRUYsUUFBUSxFQUFFQyxPQUFPLENBQUM7QUFBQyxJQUFBMkIsUUFBQSxHQUU5QjFCLFVBQVU7QUFBQUMsT0FBQSxDQUFBMEIsT0FBQSxHQUFBRCxRQUFBIn0=
46
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZHJpdmVyIiwicmVxdWlyZSIsImNvbW1hbmRzIiwiaGVscGVycyIsImV4dGVuc2lvbnMiLCJleHBvcnRzIiwiaXNJTUVBY3RpdmF0ZWQiLCJhdmFpbGFibGVJTUVFbmdpbmVzIiwibG9nIiwiZGVidWciLCJlbmdpbmVzIiwiYWRiIiwiYXZhaWxhYmxlSU1FcyIsIkpTT04iLCJzdHJpbmdpZnkiLCJnZXRBY3RpdmVJTUVFbmdpbmUiLCJkZWZhdWx0SU1FIiwiYWN0aXZhdGVJTUVFbmdpbmUiLCJpbWVJZCIsImF2YWlsYWJsZUVuZ2luZXMiLCJpbmRleE9mIiwiZXJyb3JzIiwiSU1FTm90QXZhaWxhYmxlRXJyb3IiLCJlbmFibGVJTUUiLCJzZXRJTUUiLCJkZWFjdGl2YXRlSU1FRW5naW5lIiwiY3VycmVudEVuZ2luZSIsImRpc2FibGVJTUUiLCJPYmplY3QiLCJhc3NpZ24iLCJfZGVmYXVsdCIsImRlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvY29tbWFuZHMvaW1lLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGVycm9ycyB9IGZyb20gJ2FwcGl1bS9kcml2ZXInO1xuXG5sZXQgY29tbWFuZHMgPSB7fSwgaGVscGVycyA9IHt9LCBleHRlbnNpb25zID0ge307XG5cbmNvbW1hbmRzLmlzSU1FQWN0aXZhdGVkID0gYXN5bmMgZnVuY3Rpb24gaXNJTUVBY3RpdmF0ZWQgKCkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHJlcXVpcmUtYXdhaXRcbiAgLy8gSU1FIGlzIGFsd2F5cyBhY3RpdmF0ZWQgb24gQW5kcm9pZCBkZXZpY2VzXG4gIHJldHVybiB0cnVlO1xufTtcblxuY29tbWFuZHMuYXZhaWxhYmxlSU1FRW5naW5lcyA9IGFzeW5jIGZ1bmN0aW9uIGF2YWlsYWJsZUlNRUVuZ2luZXMgKCkge1xuICB0aGlzLmxvZy5kZWJ1ZygnUmV0cmlldmluZyBhdmFpbGFibGUgSU1FcycpO1xuICBsZXQgZW5naW5lcyA9IGF3YWl0IHRoaXMuYWRiLmF2YWlsYWJsZUlNRXMoKTtcbiAgdGhpcy5sb2cuZGVidWcoYEVuZ2luZXM6ICR7SlNPTi5zdHJpbmdpZnkoZW5naW5lcyl9YCk7XG4gIHJldHVybiBlbmdpbmVzO1xufTtcblxuY29tbWFuZHMuZ2V0QWN0aXZlSU1FRW5naW5lID0gYXN5bmMgZnVuY3Rpb24gZ2V0QWN0aXZlSU1FRW5naW5lICgpIHtcbiAgdGhpcy5sb2cuZGVidWcoJ1JldHJpZXZpbmcgY3VycmVudCBkZWZhdWx0IElNRScpO1xuICByZXR1cm4gYXdhaXQgdGhpcy5hZGIuZGVmYXVsdElNRSgpO1xufTtcblxuY29tbWFuZHMuYWN0aXZhdGVJTUVFbmdpbmUgPSBhc3luYyBmdW5jdGlvbiBhY3RpdmF0ZUlNRUVuZ2luZSAoaW1lSWQpIHtcbiAgdGhpcy5sb2cuZGVidWcoYEF0dGVtcHRpbmcgdG8gYWN0aXZhdGUgSU1FICR7aW1lSWR9YCk7XG4gIGxldCBhdmFpbGFibGVFbmdpbmVzID0gYXdhaXQgdGhpcy5hZGIuYXZhaWxhYmxlSU1FcygpO1xuICBpZiAoYXZhaWxhYmxlRW5naW5lcy5pbmRleE9mKGltZUlkKSA9PT0gLTEpIHtcbiAgICB0aGlzLmxvZy5kZWJ1ZygnSU1FIG5vdCBmb3VuZCwgZmFpbGluZycpO1xuICAgIHRocm93IG5ldyBlcnJvcnMuSU1FTm90QXZhaWxhYmxlRXJyb3IoKTtcbiAgfVxuICB0aGlzLmxvZy5kZWJ1ZygnRm91bmQgaW5zdGFsbGVkIElNRSwgYXR0ZW1wdGluZyB0byBhY3RpdmF0ZScpO1xuICBhd2FpdCB0aGlzLmFkYi5lbmFibGVJTUUoaW1lSWQpO1xuICBhd2FpdCB0aGlzLmFkYi5zZXRJTUUoaW1lSWQpO1xufTtcblxuY29tbWFuZHMuZGVhY3RpdmF0ZUlNRUVuZ2luZSA9IGFzeW5jIGZ1bmN0aW9uIGRlYWN0aXZhdGVJTUVFbmdpbmUgKCkge1xuICBsZXQgY3VycmVudEVuZ2luZSA9IGF3YWl0IHRoaXMuZ2V0QWN0aXZlSU1FRW5naW5lKCk7XG4gIHRoaXMubG9nLmRlYnVnKGBBdHRlbXB0aW5nIHRvIGRlYWN0aXZhdGUgJHtjdXJyZW50RW5naW5lfWApO1xuICBhd2FpdCB0aGlzLmFkYi5kaXNhYmxlSU1FKGN1cnJlbnRFbmdpbmUpO1xufTtcblxuT2JqZWN0LmFzc2lnbihleHRlbnNpb25zLCBjb21tYW5kcywgaGVscGVycyk7XG5leHBvcnQgeyBjb21tYW5kcywgaGVscGVycyB9O1xuZXhwb3J0IGRlZmF1bHQgZXh0ZW5zaW9ucztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsT0FBQTtBQUVBLElBQUlDLFFBQVEsR0FBRyxDQUFDLENBQUM7RUFBRUMsT0FBTyxHQUFHLENBQUMsQ0FBQztFQUFFQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO0FBQUNDLE9BQUEsQ0FBQUYsT0FBQSxHQUFBQSxPQUFBO0FBQUFFLE9BQUEsQ0FBQUgsUUFBQSxHQUFBQSxRQUFBO0FBRWpEQSxRQUFRLENBQUNJLGNBQWMsR0FBRyxlQUFlQSxjQUFjQSxDQUFBLEVBQUk7RUFFekQsT0FBTyxJQUFJO0FBQ2IsQ0FBQztBQUVESixRQUFRLENBQUNLLG1CQUFtQixHQUFHLGVBQWVBLG1CQUFtQkEsQ0FBQSxFQUFJO0VBQ25FLElBQUksQ0FBQ0MsR0FBRyxDQUFDQyxLQUFLLENBQUMsMkJBQTJCLENBQUM7RUFDM0MsSUFBSUMsT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDQyxHQUFHLENBQUNDLGFBQWEsQ0FBQyxDQUFDO0VBQzVDLElBQUksQ0FBQ0osR0FBRyxDQUFDQyxLQUFLLENBQUUsWUFBV0ksSUFBSSxDQUFDQyxTQUFTLENBQUNKLE9BQU8sQ0FBRSxFQUFDLENBQUM7RUFDckQsT0FBT0EsT0FBTztBQUNoQixDQUFDO0FBRURSLFFBQVEsQ0FBQ2Esa0JBQWtCLEdBQUcsZUFBZUEsa0JBQWtCQSxDQUFBLEVBQUk7RUFDakUsSUFBSSxDQUFDUCxHQUFHLENBQUNDLEtBQUssQ0FBQyxnQ0FBZ0MsQ0FBQztFQUNoRCxPQUFPLE1BQU0sSUFBSSxDQUFDRSxHQUFHLENBQUNLLFVBQVUsQ0FBQyxDQUFDO0FBQ3BDLENBQUM7QUFFRGQsUUFBUSxDQUFDZSxpQkFBaUIsR0FBRyxlQUFlQSxpQkFBaUJBLENBQUVDLEtBQUssRUFBRTtFQUNwRSxJQUFJLENBQUNWLEdBQUcsQ0FBQ0MsS0FBSyxDQUFFLDhCQUE2QlMsS0FBTSxFQUFDLENBQUM7RUFDckQsSUFBSUMsZ0JBQWdCLEdBQUcsTUFBTSxJQUFJLENBQUNSLEdBQUcsQ0FBQ0MsYUFBYSxDQUFDLENBQUM7RUFDckQsSUFBSU8sZ0JBQWdCLENBQUNDLE9BQU8sQ0FBQ0YsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7SUFDMUMsSUFBSSxDQUFDVixHQUFHLENBQUNDLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQztJQUN4QyxNQUFNLElBQUlZLGNBQU0sQ0FBQ0Msb0JBQW9CLENBQUMsQ0FBQztFQUN6QztFQUNBLElBQUksQ0FBQ2QsR0FBRyxDQUFDQyxLQUFLLENBQUMsNkNBQTZDLENBQUM7RUFDN0QsTUFBTSxJQUFJLENBQUNFLEdBQUcsQ0FBQ1ksU0FBUyxDQUFDTCxLQUFLLENBQUM7RUFDL0IsTUFBTSxJQUFJLENBQUNQLEdBQUcsQ0FBQ2EsTUFBTSxDQUFDTixLQUFLLENBQUM7QUFDOUIsQ0FBQztBQUVEaEIsUUFBUSxDQUFDdUIsbUJBQW1CLEdBQUcsZUFBZUEsbUJBQW1CQSxDQUFBLEVBQUk7RUFDbkUsSUFBSUMsYUFBYSxHQUFHLE1BQU0sSUFBSSxDQUFDWCxrQkFBa0IsQ0FBQyxDQUFDO0VBQ25ELElBQUksQ0FBQ1AsR0FBRyxDQUFDQyxLQUFLLENBQUUsNEJBQTJCaUIsYUFBYyxFQUFDLENBQUM7RUFDM0QsTUFBTSxJQUFJLENBQUNmLEdBQUcsQ0FBQ2dCLFVBQVUsQ0FBQ0QsYUFBYSxDQUFDO0FBQzFDLENBQUM7QUFFREUsTUFBTSxDQUFDQyxNQUFNLENBQUN6QixVQUFVLEVBQUVGLFFBQVEsRUFBRUMsT0FBTyxDQUFDO0FBQUMsSUFBQTJCLFFBQUEsR0FFOUIxQixVQUFVO0FBQUFDLE9BQUEsQ0FBQTBCLE9BQUEsR0FBQUQsUUFBQSJ9
@@ -1 +1 @@
1
- {"version":3,"file":"ime.js","names":["_driver","require","commands","helpers","extensions","exports","isIMEActivated","availableIMEEngines","log","debug","engines","adb","availableIMEs","JSON","stringify","getActiveIMEEngine","defaultIME","activateIMEEngine","imeId","availableEngines","indexOf","errors","IMENotAvailableError","enableIME","setIME","deactivateIMEEngine","currentEngine","disableIME","Object","assign","_default","default"],"sources":["../../../lib/commands/ime.js"],"sourcesContent":["import { errors } from 'appium/driver';\n\nlet commands = {}, helpers = {}, extensions = {};\n\ncommands.isIMEActivated = async function isIMEActivated () { // eslint-disable-line require-await\n // IME is always activated on Android devices\n return true;\n};\n\ncommands.availableIMEEngines = async function availableIMEEngines () {\n this.log.debug('Retrieving available IMEs');\n let engines = await this.adb.availableIMEs();\n this.log.debug(`Engines: ${JSON.stringify(engines)}`);\n return engines;\n};\n\ncommands.getActiveIMEEngine = async function getActiveIMEEngine () {\n this.log.debug('Retrieving current default IME');\n return await this.adb.defaultIME();\n};\n\ncommands.activateIMEEngine = async function activateIMEEngine (imeId) {\n this.log.debug(`Attempting to activate IME ${imeId}`);\n let availableEngines = await this.adb.availableIMEs();\n if (availableEngines.indexOf(imeId) === -1) {\n this.log.debug('IME not found, failing');\n throw new errors.IMENotAvailableError();\n }\n this.log.debug('Found installed IME, attempting to activate');\n await this.adb.enableIME(imeId);\n await this.adb.setIME(imeId);\n};\n\ncommands.deactivateIMEEngine = async function deactivateIMEEngine () {\n let currentEngine = await this.getActiveIMEEngine();\n this.log.debug(`Attempting to deactivate ${currentEngine}`);\n await this.adb.disableIME(currentEngine);\n};\n\nObject.assign(extensions, commands, helpers);\nexport { commands, helpers };\nexport default extensions;\n"],"mappings":";;;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAEA,IAAIC,QAAQ,GAAG,CAAC,CAAC;EAAEC,OAAO,GAAG,CAAC,CAAC;EAAEC,UAAU,GAAG,CAAC,CAAC;AAACC,OAAA,CAAAF,OAAA,GAAAA,OAAA;AAAAE,OAAA,CAAAH,QAAA,GAAAA,QAAA;AAEjDA,QAAQ,CAACI,cAAc,GAAG,eAAeA,cAAcA,CAAA,EAAI;EAEzD,OAAO,IAAI;AACb,CAAC;AAEDJ,QAAQ,CAACK,mBAAmB,GAAG,eAAeA,mBAAmBA,CAAA,EAAI;EACnE,IAAI,CAACC,GAAG,CAACC,KAAK,CAAC,2BAA2B,CAAC;EAC3C,IAAIC,OAAO,GAAG,MAAM,IAAI,CAACC,GAAG,CAACC,aAAa,EAAE;EAC5C,IAAI,CAACJ,GAAG,CAACC,KAAK,CAAE,YAAWI,IAAI,CAACC,SAAS,CAACJ,OAAO,CAAE,EAAC,CAAC;EACrD,OAAOA,OAAO;AAChB,CAAC;AAEDR,QAAQ,CAACa,kBAAkB,GAAG,eAAeA,kBAAkBA,CAAA,EAAI;EACjE,IAAI,CAACP,GAAG,CAACC,KAAK,CAAC,gCAAgC,CAAC;EAChD,OAAO,MAAM,IAAI,CAACE,GAAG,CAACK,UAAU,EAAE;AACpC,CAAC;AAEDd,QAAQ,CAACe,iBAAiB,GAAG,eAAeA,iBAAiBA,CAAEC,KAAK,EAAE;EACpE,IAAI,CAACV,GAAG,CAACC,KAAK,CAAE,8BAA6BS,KAAM,EAAC,CAAC;EACrD,IAAIC,gBAAgB,GAAG,MAAM,IAAI,CAACR,GAAG,CAACC,aAAa,EAAE;EACrD,IAAIO,gBAAgB,CAACC,OAAO,CAACF,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE;IAC1C,IAAI,CAACV,GAAG,CAACC,KAAK,CAAC,wBAAwB,CAAC;IACxC,MAAM,IAAIY,cAAM,CAACC,oBAAoB,EAAE;EACzC;EACA,IAAI,CAACd,GAAG,CAACC,KAAK,CAAC,6CAA6C,CAAC;EAC7D,MAAM,IAAI,CAACE,GAAG,CAACY,SAAS,CAACL,KAAK,CAAC;EAC/B,MAAM,IAAI,CAACP,GAAG,CAACa,MAAM,CAACN,KAAK,CAAC;AAC9B,CAAC;AAEDhB,QAAQ,CAACuB,mBAAmB,GAAG,eAAeA,mBAAmBA,CAAA,EAAI;EACnE,IAAIC,aAAa,GAAG,MAAM,IAAI,CAACX,kBAAkB,EAAE;EACnD,IAAI,CAACP,GAAG,CAACC,KAAK,CAAE,4BAA2BiB,aAAc,EAAC,CAAC;EAC3D,MAAM,IAAI,CAACf,GAAG,CAACgB,UAAU,CAACD,aAAa,CAAC;AAC1C,CAAC;AAEDE,MAAM,CAACC,MAAM,CAACzB,UAAU,EAAEF,QAAQ,EAAEC,OAAO,CAAC;AAAC,IAAA2B,QAAA,GAE9B1B,UAAU;AAAAC,OAAA,CAAA0B,OAAA,GAAAD,QAAA"}
1
+ {"version":3,"file":"ime.js","names":["_driver","require","commands","helpers","extensions","exports","isIMEActivated","availableIMEEngines","log","debug","engines","adb","availableIMEs","JSON","stringify","getActiveIMEEngine","defaultIME","activateIMEEngine","imeId","availableEngines","indexOf","errors","IMENotAvailableError","enableIME","setIME","deactivateIMEEngine","currentEngine","disableIME","Object","assign","_default","default"],"sources":["../../../lib/commands/ime.js"],"sourcesContent":["import { errors } from 'appium/driver';\n\nlet commands = {}, helpers = {}, extensions = {};\n\ncommands.isIMEActivated = async function isIMEActivated () { // eslint-disable-line require-await\n // IME is always activated on Android devices\n return true;\n};\n\ncommands.availableIMEEngines = async function availableIMEEngines () {\n this.log.debug('Retrieving available IMEs');\n let engines = await this.adb.availableIMEs();\n this.log.debug(`Engines: ${JSON.stringify(engines)}`);\n return engines;\n};\n\ncommands.getActiveIMEEngine = async function getActiveIMEEngine () {\n this.log.debug('Retrieving current default IME');\n return await this.adb.defaultIME();\n};\n\ncommands.activateIMEEngine = async function activateIMEEngine (imeId) {\n this.log.debug(`Attempting to activate IME ${imeId}`);\n let availableEngines = await this.adb.availableIMEs();\n if (availableEngines.indexOf(imeId) === -1) {\n this.log.debug('IME not found, failing');\n throw new errors.IMENotAvailableError();\n }\n this.log.debug('Found installed IME, attempting to activate');\n await this.adb.enableIME(imeId);\n await this.adb.setIME(imeId);\n};\n\ncommands.deactivateIMEEngine = async function deactivateIMEEngine () {\n let currentEngine = await this.getActiveIMEEngine();\n this.log.debug(`Attempting to deactivate ${currentEngine}`);\n await this.adb.disableIME(currentEngine);\n};\n\nObject.assign(extensions, commands, helpers);\nexport { commands, helpers };\nexport default extensions;\n"],"mappings":";;;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAEA,IAAIC,QAAQ,GAAG,CAAC,CAAC;EAAEC,OAAO,GAAG,CAAC,CAAC;EAAEC,UAAU,GAAG,CAAC,CAAC;AAACC,OAAA,CAAAF,OAAA,GAAAA,OAAA;AAAAE,OAAA,CAAAH,QAAA,GAAAA,QAAA;AAEjDA,QAAQ,CAACI,cAAc,GAAG,eAAeA,cAAcA,CAAA,EAAI;EAEzD,OAAO,IAAI;AACb,CAAC;AAEDJ,QAAQ,CAACK,mBAAmB,GAAG,eAAeA,mBAAmBA,CAAA,EAAI;EACnE,IAAI,CAACC,GAAG,CAACC,KAAK,CAAC,2BAA2B,CAAC;EAC3C,IAAIC,OAAO,GAAG,MAAM,IAAI,CAACC,GAAG,CAACC,aAAa,CAAC,CAAC;EAC5C,IAAI,CAACJ,GAAG,CAACC,KAAK,CAAE,YAAWI,IAAI,CAACC,SAAS,CAACJ,OAAO,CAAE,EAAC,CAAC;EACrD,OAAOA,OAAO;AAChB,CAAC;AAEDR,QAAQ,CAACa,kBAAkB,GAAG,eAAeA,kBAAkBA,CAAA,EAAI;EACjE,IAAI,CAACP,GAAG,CAACC,KAAK,CAAC,gCAAgC,CAAC;EAChD,OAAO,MAAM,IAAI,CAACE,GAAG,CAACK,UAAU,CAAC,CAAC;AACpC,CAAC;AAEDd,QAAQ,CAACe,iBAAiB,GAAG,eAAeA,iBAAiBA,CAAEC,KAAK,EAAE;EACpE,IAAI,CAACV,GAAG,CAACC,KAAK,CAAE,8BAA6BS,KAAM,EAAC,CAAC;EACrD,IAAIC,gBAAgB,GAAG,MAAM,IAAI,CAACR,GAAG,CAACC,aAAa,CAAC,CAAC;EACrD,IAAIO,gBAAgB,CAACC,OAAO,CAACF,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE;IAC1C,IAAI,CAACV,GAAG,CAACC,KAAK,CAAC,wBAAwB,CAAC;IACxC,MAAM,IAAIY,cAAM,CAACC,oBAAoB,CAAC,CAAC;EACzC;EACA,IAAI,CAACd,GAAG,CAACC,KAAK,CAAC,6CAA6C,CAAC;EAC7D,MAAM,IAAI,CAACE,GAAG,CAACY,SAAS,CAACL,KAAK,CAAC;EAC/B,MAAM,IAAI,CAACP,GAAG,CAACa,MAAM,CAACN,KAAK,CAAC;AAC9B,CAAC;AAEDhB,QAAQ,CAACuB,mBAAmB,GAAG,eAAeA,mBAAmBA,CAAA,EAAI;EACnE,IAAIC,aAAa,GAAG,MAAM,IAAI,CAACX,kBAAkB,CAAC,CAAC;EACnD,IAAI,CAACP,GAAG,CAACC,KAAK,CAAE,4BAA2BiB,aAAc,EAAC,CAAC;EAC3D,MAAM,IAAI,CAACf,GAAG,CAACgB,UAAU,CAACD,aAAa,CAAC;AAC1C,CAAC;AAEDE,MAAM,CAACC,MAAM,CAACzB,UAAU,EAAEF,QAAQ,EAAEC,OAAO,CAAC;AAAC,IAAA2B,QAAA,GAE9B1B,UAAU;AAAAC,OAAA,CAAA0B,OAAA,GAAAD,QAAA"}
@@ -35,4 +35,4 @@ exports.commands = commands;
35
35
  Object.assign(commands, _find.default, _general.default, _alert.default, _element.default, _context.default, _actions.default, _touch.default, _ime.default, _network.default, _coverage.default, _recordscreen.default, _intent.default, _streamscreen.default, _performance.default, _execute.default, _shell.default, _emuConsole.default, _systemBars.default, _appManagement.default, _fileActions.default, _log.default, _mediaProjection.default, _permissions.default, _keyboard.default);
36
36
  var _default = commands;
37
37
  exports.default = _default;
38
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZmluZCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2dlbmVyYWwiLCJfYWxlcnQiLCJfZWxlbWVudCIsIl9jb250ZXh0IiwiX2FjdGlvbnMiLCJfdG91Y2giLCJfaW1lIiwiX25ldHdvcmsiLCJfY292ZXJhZ2UiLCJfcmVjb3Jkc2NyZWVuIiwiX3N0cmVhbXNjcmVlbiIsIl9wZXJmb3JtYW5jZSIsIl9leGVjdXRlIiwiX3NoZWxsIiwiX2VtdUNvbnNvbGUiLCJfZmlsZUFjdGlvbnMiLCJfYXBwTWFuYWdlbWVudCIsIl9pbnRlbnQiLCJfc3lzdGVtQmFycyIsIl9sb2ciLCJfbWVkaWFQcm9qZWN0aW9uIiwiX3Blcm1pc3Npb25zIiwiX2tleWJvYXJkIiwiY29tbWFuZHMiLCJleHBvcnRzIiwiT2JqZWN0IiwiYXNzaWduIiwiZmluZENtZHMiLCJnZW5lcmFsQ21kcyIsImFsZXJ0Q21kcyIsImVsZW1lbnRDbWRzIiwiY29udGV4dENtZHMiLCJhY3Rpb25DbWRzIiwidG91Y2hDbWRzIiwiaW1lQ21kcyIsIm5ldHdvcmtDbWRzIiwiY292ZXJhZ2VDbWRzIiwicmVjb3Jkc2NyZWVuQ21kcyIsImludGVudENtZHMiLCJzY3JlZW5TdHJlYW1DbWRzIiwicGVyZm9ybWFuY2VDbWRzIiwiZXhlY3V0ZUNtZHMiLCJzaGVsbENtZHMiLCJlbXVDb25zb2xlQ21kcyIsInN5c3RlbUJhcnNDbWRzIiwiYXBwTWFuYWdlbWVudENtZHMiLCJmaWxlQWN0aW9uc0NtZHMiLCJsb2dDbWRzIiwibWVkaWFQcm9qZWN0aW9uQ21kcyIsInBlcm1pc3Npb25zQ21kcyIsImtleWJvYXJkQ21kcyIsIl9kZWZhdWx0IiwiZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9jb21tYW5kcy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZmluZENtZHMgZnJvbSAnLi9maW5kJztcbmltcG9ydCBnZW5lcmFsQ21kcyBmcm9tICcuL2dlbmVyYWwnO1xuaW1wb3J0IGFsZXJ0Q21kcyBmcm9tICcuL2FsZXJ0JztcbmltcG9ydCBlbGVtZW50Q21kcyBmcm9tICcuL2VsZW1lbnQnO1xuaW1wb3J0IGNvbnRleHRDbWRzIGZyb20gJy4vY29udGV4dCc7XG5pbXBvcnQgYWN0aW9uQ21kcyBmcm9tICcuL2FjdGlvbnMnO1xuaW1wb3J0IHRvdWNoQ21kcyBmcm9tICcuL3RvdWNoJztcbmltcG9ydCBpbWVDbWRzIGZyb20gJy4vaW1lJztcbmltcG9ydCBuZXR3b3JrQ21kcyBmcm9tICcuL25ldHdvcmsnO1xuaW1wb3J0IGNvdmVyYWdlQ21kcyBmcm9tICcuL2NvdmVyYWdlJztcbmltcG9ydCByZWNvcmRzY3JlZW5DbWRzIGZyb20gJy4vcmVjb3Jkc2NyZWVuJztcbmltcG9ydCBzY3JlZW5TdHJlYW1DbWRzIGZyb20gJy4vc3RyZWFtc2NyZWVuJztcbmltcG9ydCBwZXJmb3JtYW5jZUNtZHMgZnJvbSAnLi9wZXJmb3JtYW5jZSc7XG5pbXBvcnQgZXhlY3V0ZUNtZHMgZnJvbSAnLi9leGVjdXRlJztcbmltcG9ydCBzaGVsbENtZHMgZnJvbSAnLi9zaGVsbCc7XG5pbXBvcnQgZW11Q29uc29sZUNtZHMgZnJvbSAnLi9lbXUtY29uc29sZSc7XG5pbXBvcnQgZmlsZUFjdGlvbnNDbWRzIGZyb20gJy4vZmlsZS1hY3Rpb25zJztcbmltcG9ydCBhcHBNYW5hZ2VtZW50Q21kcyBmcm9tICcuL2FwcC1tYW5hZ2VtZW50JztcbmltcG9ydCBpbnRlbnRDbWRzIGZyb20gJy4vaW50ZW50JztcbmltcG9ydCBzeXN0ZW1CYXJzQ21kcyBmcm9tICcuL3N5c3RlbS1iYXJzJztcbmltcG9ydCBsb2dDbWRzIGZyb20gJy4vbG9nJztcbmltcG9ydCBtZWRpYVByb2plY3Rpb25DbWRzIGZyb20gJy4vbWVkaWEtcHJvamVjdGlvbic7XG5pbXBvcnQgcGVybWlzc2lvbnNDbWRzIGZyb20gJy4vcGVybWlzc2lvbnMnO1xuaW1wb3J0IGtleWJvYXJkQ21kcyBmcm9tICcuL2tleWJvYXJkJztcblxuXG5sZXQgY29tbWFuZHMgPSB7fTtcbk9iamVjdC5hc3NpZ24oXG4gIGNvbW1hbmRzLFxuICBmaW5kQ21kcyxcbiAgZ2VuZXJhbENtZHMsXG4gIGFsZXJ0Q21kcyxcbiAgZWxlbWVudENtZHMsXG4gIGNvbnRleHRDbWRzLFxuICBhY3Rpb25DbWRzLFxuICB0b3VjaENtZHMsXG4gIGltZUNtZHMsXG4gIG5ldHdvcmtDbWRzLFxuICBjb3ZlcmFnZUNtZHMsXG4gIHJlY29yZHNjcmVlbkNtZHMsXG4gIGludGVudENtZHMsXG4gIHNjcmVlblN0cmVhbUNtZHMsXG4gIHBlcmZvcm1hbmNlQ21kcyxcbiAgZXhlY3V0ZUNtZHMsXG4gIHNoZWxsQ21kcyxcbiAgZW11Q29uc29sZUNtZHMsXG4gIHN5c3RlbUJhcnNDbWRzLFxuICBhcHBNYW5hZ2VtZW50Q21kcyxcbiAgZmlsZUFjdGlvbnNDbWRzLFxuICBsb2dDbWRzLFxuICBtZWRpYVByb2plY3Rpb25DbWRzLFxuICBwZXJtaXNzaW9uc0NtZHMsXG4gIGtleWJvYXJkQ21kcyxcbiAgLy8gYWRkIG90aGVyIGNvbW1hbmQgdHlwZXMgaGVyZVxuKTtcblxuZXhwb3J0IHsgY29tbWFuZHMgfTtcbmV4cG9ydCBkZWZhdWx0IGNvbW1hbmRzO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLElBQUFBLEtBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFFBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLE1BQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLFFBQUEsR0FBQUosc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFJLFFBQUEsR0FBQUwsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFLLFFBQUEsR0FBQU4sc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFNLE1BQUEsR0FBQVAsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFPLElBQUEsR0FBQVIsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFRLFFBQUEsR0FBQVQsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFTLFNBQUEsR0FBQVYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFVLGFBQUEsR0FBQVgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFXLGFBQUEsR0FBQVosc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFZLFlBQUEsR0FBQWIsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFhLFFBQUEsR0FBQWQsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFjLE1BQUEsR0FBQWYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFlLFdBQUEsR0FBQWhCLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBZ0IsWUFBQSxHQUFBakIsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFpQixjQUFBLEdBQUFsQixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQWtCLE9BQUEsR0FBQW5CLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBbUIsV0FBQSxHQUFBcEIsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFvQixJQUFBLEdBQUFyQixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQXFCLGdCQUFBLEdBQUF0QixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQXNCLFlBQUEsR0FBQXZCLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBdUIsU0FBQSxHQUFBeEIsc0JBQUEsQ0FBQUMsT0FBQTtBQUdBLElBQUl3QixRQUFRLEdBQUcsQ0FBQyxDQUFDO0FBQUNDLE9BQUEsQ0FBQUQsUUFBQSxHQUFBQSxRQUFBO0FBQ2xCRSxNQUFNLENBQUNDLE1BQU0sQ0FDWEgsUUFBUSxFQUNSSSxhQUFRLEVBQ1JDLGdCQUFXLEVBQ1hDLGNBQVMsRUFDVEMsZ0JBQVcsRUFDWEMsZ0JBQVcsRUFDWEMsZ0JBQVUsRUFDVkMsY0FBUyxFQUNUQyxZQUFPLEVBQ1BDLGdCQUFXLEVBQ1hDLGlCQUFZLEVBQ1pDLHFCQUFnQixFQUNoQkMsZUFBVSxFQUNWQyxxQkFBZ0IsRUFDaEJDLG9CQUFlLEVBQ2ZDLGdCQUFXLEVBQ1hDLGNBQVMsRUFDVEMsbUJBQWMsRUFDZEMsbUJBQWMsRUFDZEMsc0JBQWlCLEVBQ2pCQyxvQkFBZSxFQUNmQyxZQUFPLEVBQ1BDLHdCQUFtQixFQUNuQkMsb0JBQWUsRUFDZkMsaUJBQVksQ0FFYjtBQUFDLElBQUFDLFFBQUEsR0FHYTVCLFFBQVE7QUFBQUMsT0FBQSxDQUFBNEIsT0FBQSxHQUFBRCxRQUFBIn0=
38
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZmluZCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2dlbmVyYWwiLCJfYWxlcnQiLCJfZWxlbWVudCIsIl9jb250ZXh0IiwiX2FjdGlvbnMiLCJfdG91Y2giLCJfaW1lIiwiX25ldHdvcmsiLCJfY292ZXJhZ2UiLCJfcmVjb3Jkc2NyZWVuIiwiX3N0cmVhbXNjcmVlbiIsIl9wZXJmb3JtYW5jZSIsIl9leGVjdXRlIiwiX3NoZWxsIiwiX2VtdUNvbnNvbGUiLCJfZmlsZUFjdGlvbnMiLCJfYXBwTWFuYWdlbWVudCIsIl9pbnRlbnQiLCJfc3lzdGVtQmFycyIsIl9sb2ciLCJfbWVkaWFQcm9qZWN0aW9uIiwiX3Blcm1pc3Npb25zIiwiX2tleWJvYXJkIiwiY29tbWFuZHMiLCJleHBvcnRzIiwiT2JqZWN0IiwiYXNzaWduIiwiZmluZENtZHMiLCJnZW5lcmFsQ21kcyIsImFsZXJ0Q21kcyIsImVsZW1lbnRDbWRzIiwiY29udGV4dENtZHMiLCJhY3Rpb25DbWRzIiwidG91Y2hDbWRzIiwiaW1lQ21kcyIsIm5ldHdvcmtDbWRzIiwiY292ZXJhZ2VDbWRzIiwicmVjb3Jkc2NyZWVuQ21kcyIsImludGVudENtZHMiLCJzY3JlZW5TdHJlYW1DbWRzIiwicGVyZm9ybWFuY2VDbWRzIiwiZXhlY3V0ZUNtZHMiLCJzaGVsbENtZHMiLCJlbXVDb25zb2xlQ21kcyIsInN5c3RlbUJhcnNDbWRzIiwiYXBwTWFuYWdlbWVudENtZHMiLCJmaWxlQWN0aW9uc0NtZHMiLCJsb2dDbWRzIiwibWVkaWFQcm9qZWN0aW9uQ21kcyIsInBlcm1pc3Npb25zQ21kcyIsImtleWJvYXJkQ21kcyIsIl9kZWZhdWx0IiwiZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9jb21tYW5kcy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZmluZENtZHMgZnJvbSAnLi9maW5kJztcbmltcG9ydCBnZW5lcmFsQ21kcyBmcm9tICcuL2dlbmVyYWwnO1xuaW1wb3J0IGFsZXJ0Q21kcyBmcm9tICcuL2FsZXJ0JztcbmltcG9ydCBlbGVtZW50Q21kcyBmcm9tICcuL2VsZW1lbnQnO1xuaW1wb3J0IGNvbnRleHRDbWRzIGZyb20gJy4vY29udGV4dCc7XG5pbXBvcnQgYWN0aW9uQ21kcyBmcm9tICcuL2FjdGlvbnMnO1xuaW1wb3J0IHRvdWNoQ21kcyBmcm9tICcuL3RvdWNoJztcbmltcG9ydCBpbWVDbWRzIGZyb20gJy4vaW1lJztcbmltcG9ydCBuZXR3b3JrQ21kcyBmcm9tICcuL25ldHdvcmsnO1xuaW1wb3J0IGNvdmVyYWdlQ21kcyBmcm9tICcuL2NvdmVyYWdlJztcbmltcG9ydCByZWNvcmRzY3JlZW5DbWRzIGZyb20gJy4vcmVjb3Jkc2NyZWVuJztcbmltcG9ydCBzY3JlZW5TdHJlYW1DbWRzIGZyb20gJy4vc3RyZWFtc2NyZWVuJztcbmltcG9ydCBwZXJmb3JtYW5jZUNtZHMgZnJvbSAnLi9wZXJmb3JtYW5jZSc7XG5pbXBvcnQgZXhlY3V0ZUNtZHMgZnJvbSAnLi9leGVjdXRlJztcbmltcG9ydCBzaGVsbENtZHMgZnJvbSAnLi9zaGVsbCc7XG5pbXBvcnQgZW11Q29uc29sZUNtZHMgZnJvbSAnLi9lbXUtY29uc29sZSc7XG5pbXBvcnQgZmlsZUFjdGlvbnNDbWRzIGZyb20gJy4vZmlsZS1hY3Rpb25zJztcbmltcG9ydCBhcHBNYW5hZ2VtZW50Q21kcyBmcm9tICcuL2FwcC1tYW5hZ2VtZW50JztcbmltcG9ydCBpbnRlbnRDbWRzIGZyb20gJy4vaW50ZW50JztcbmltcG9ydCBzeXN0ZW1CYXJzQ21kcyBmcm9tICcuL3N5c3RlbS1iYXJzJztcbmltcG9ydCBsb2dDbWRzIGZyb20gJy4vbG9nJztcbmltcG9ydCBtZWRpYVByb2plY3Rpb25DbWRzIGZyb20gJy4vbWVkaWEtcHJvamVjdGlvbic7XG5pbXBvcnQgcGVybWlzc2lvbnNDbWRzIGZyb20gJy4vcGVybWlzc2lvbnMnO1xuaW1wb3J0IGtleWJvYXJkQ21kcyBmcm9tICcuL2tleWJvYXJkJztcblxuXG5sZXQgY29tbWFuZHMgPSB7fTtcbk9iamVjdC5hc3NpZ24oXG4gIGNvbW1hbmRzLFxuICBmaW5kQ21kcyxcbiAgZ2VuZXJhbENtZHMsXG4gIGFsZXJ0Q21kcyxcbiAgZWxlbWVudENtZHMsXG4gIGNvbnRleHRDbWRzLFxuICBhY3Rpb25DbWRzLFxuICB0b3VjaENtZHMsXG4gIGltZUNtZHMsXG4gIG5ldHdvcmtDbWRzLFxuICBjb3ZlcmFnZUNtZHMsXG4gIHJlY29yZHNjcmVlbkNtZHMsXG4gIGludGVudENtZHMsXG4gIHNjcmVlblN0cmVhbUNtZHMsXG4gIHBlcmZvcm1hbmNlQ21kcyxcbiAgZXhlY3V0ZUNtZHMsXG4gIHNoZWxsQ21kcyxcbiAgZW11Q29uc29sZUNtZHMsXG4gIHN5c3RlbUJhcnNDbWRzLFxuICBhcHBNYW5hZ2VtZW50Q21kcyxcbiAgZmlsZUFjdGlvbnNDbWRzLFxuICBsb2dDbWRzLFxuICBtZWRpYVByb2plY3Rpb25DbWRzLFxuICBwZXJtaXNzaW9uc0NtZHMsXG4gIGtleWJvYXJkQ21kcyxcbiAgLy8gYWRkIG90aGVyIGNvbW1hbmQgdHlwZXMgaGVyZVxuKTtcblxuZXhwb3J0IHsgY29tbWFuZHMgfTtcbmV4cG9ydCBkZWZhdWx0IGNvbW1hbmRzO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLElBQUFBLEtBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFFBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLE1BQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLFFBQUEsR0FBQUosc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFJLFFBQUEsR0FBQUwsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFLLFFBQUEsR0FBQU4sc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFNLE1BQUEsR0FBQVAsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFPLElBQUEsR0FBQVIsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFRLFFBQUEsR0FBQVQsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFTLFNBQUEsR0FBQVYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFVLGFBQUEsR0FBQVgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFXLGFBQUEsR0FBQVosc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFZLFlBQUEsR0FBQWIsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFhLFFBQUEsR0FBQWQsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFjLE1BQUEsR0FBQWYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFlLFdBQUEsR0FBQWhCLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBZ0IsWUFBQSxHQUFBakIsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFpQixjQUFBLEdBQUFsQixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQWtCLE9BQUEsR0FBQW5CLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBbUIsV0FBQSxHQUFBcEIsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFvQixJQUFBLEdBQUFyQixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQXFCLGdCQUFBLEdBQUF0QixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQXNCLFlBQUEsR0FBQXZCLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBdUIsU0FBQSxHQUFBeEIsc0JBQUEsQ0FBQUMsT0FBQTtBQUdBLElBQUl3QixRQUFRLEdBQUcsQ0FBQyxDQUFDO0FBQUNDLE9BQUEsQ0FBQUQsUUFBQSxHQUFBQSxRQUFBO0FBQ2xCRSxNQUFNLENBQUNDLE1BQU0sQ0FDWEgsUUFBUSxFQUNSSSxhQUFRLEVBQ1JDLGdCQUFXLEVBQ1hDLGNBQVMsRUFDVEMsZ0JBQVcsRUFDWEMsZ0JBQVcsRUFDWEMsZ0JBQVUsRUFDVkMsY0FBUyxFQUNUQyxZQUFPLEVBQ1BDLGdCQUFXLEVBQ1hDLGlCQUFZLEVBQ1pDLHFCQUFnQixFQUNoQkMsZUFBVSxFQUNWQyxxQkFBZ0IsRUFDaEJDLG9CQUFlLEVBQ2ZDLGdCQUFXLEVBQ1hDLGNBQVMsRUFDVEMsbUJBQWMsRUFDZEMsbUJBQWMsRUFDZEMsc0JBQWlCLEVBQ2pCQyxvQkFBZSxFQUNmQyxZQUFPLEVBQ1BDLHdCQUFtQixFQUNuQkMsb0JBQWUsRUFDZkMsaUJBRUYsQ0FBQztBQUFDLElBQUFDLFFBQUEsR0FHYTVCLFFBQVE7QUFBQUMsT0FBQSxDQUFBNEIsT0FBQSxHQUFBRCxRQUFBIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_find","_interopRequireDefault","require","_general","_alert","_element","_context","_actions","_touch","_ime","_network","_coverage","_recordscreen","_streamscreen","_performance","_execute","_shell","_emuConsole","_fileActions","_appManagement","_intent","_systemBars","_log","_mediaProjection","_permissions","_keyboard","commands","exports","Object","assign","findCmds","generalCmds","alertCmds","elementCmds","contextCmds","actionCmds","touchCmds","imeCmds","networkCmds","coverageCmds","recordscreenCmds","intentCmds","screenStreamCmds","performanceCmds","executeCmds","shellCmds","emuConsoleCmds","systemBarsCmds","appManagementCmds","fileActionsCmds","logCmds","mediaProjectionCmds","permissionsCmds","keyboardCmds","_default","default"],"sources":["../../../lib/commands/index.js"],"sourcesContent":["import findCmds from './find';\nimport generalCmds from './general';\nimport alertCmds from './alert';\nimport elementCmds from './element';\nimport contextCmds from './context';\nimport actionCmds from './actions';\nimport touchCmds from './touch';\nimport imeCmds from './ime';\nimport networkCmds from './network';\nimport coverageCmds from './coverage';\nimport recordscreenCmds from './recordscreen';\nimport screenStreamCmds from './streamscreen';\nimport performanceCmds from './performance';\nimport executeCmds from './execute';\nimport shellCmds from './shell';\nimport emuConsoleCmds from './emu-console';\nimport fileActionsCmds from './file-actions';\nimport appManagementCmds from './app-management';\nimport intentCmds from './intent';\nimport systemBarsCmds from './system-bars';\nimport logCmds from './log';\nimport mediaProjectionCmds from './media-projection';\nimport permissionsCmds from './permissions';\nimport keyboardCmds from './keyboard';\n\n\nlet commands = {};\nObject.assign(\n commands,\n findCmds,\n generalCmds,\n alertCmds,\n elementCmds,\n contextCmds,\n actionCmds,\n touchCmds,\n imeCmds,\n networkCmds,\n coverageCmds,\n recordscreenCmds,\n intentCmds,\n screenStreamCmds,\n performanceCmds,\n executeCmds,\n shellCmds,\n emuConsoleCmds,\n systemBarsCmds,\n appManagementCmds,\n fileActionsCmds,\n logCmds,\n mediaProjectionCmds,\n permissionsCmds,\n keyboardCmds,\n // add other command types here\n);\n\nexport { commands };\nexport default commands;\n"],"mappings":";;;;;;;;AAAA,IAAAA,KAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,QAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,MAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,QAAA,GAAAJ,sBAAA,CAAAC,OAAA;AACA,IAAAI,QAAA,GAAAL,sBAAA,CAAAC,OAAA;AACA,IAAAK,QAAA,GAAAN,sBAAA,CAAAC,OAAA;AACA,IAAAM,MAAA,GAAAP,sBAAA,CAAAC,OAAA;AACA,IAAAO,IAAA,GAAAR,sBAAA,CAAAC,OAAA;AACA,IAAAQ,QAAA,GAAAT,sBAAA,CAAAC,OAAA;AACA,IAAAS,SAAA,GAAAV,sBAAA,CAAAC,OAAA;AACA,IAAAU,aAAA,GAAAX,sBAAA,CAAAC,OAAA;AACA,IAAAW,aAAA,GAAAZ,sBAAA,CAAAC,OAAA;AACA,IAAAY,YAAA,GAAAb,sBAAA,CAAAC,OAAA;AACA,IAAAa,QAAA,GAAAd,sBAAA,CAAAC,OAAA;AACA,IAAAc,MAAA,GAAAf,sBAAA,CAAAC,OAAA;AACA,IAAAe,WAAA,GAAAhB,sBAAA,CAAAC,OAAA;AACA,IAAAgB,YAAA,GAAAjB,sBAAA,CAAAC,OAAA;AACA,IAAAiB,cAAA,GAAAlB,sBAAA,CAAAC,OAAA;AACA,IAAAkB,OAAA,GAAAnB,sBAAA,CAAAC,OAAA;AACA,IAAAmB,WAAA,GAAApB,sBAAA,CAAAC,OAAA;AACA,IAAAoB,IAAA,GAAArB,sBAAA,CAAAC,OAAA;AACA,IAAAqB,gBAAA,GAAAtB,sBAAA,CAAAC,OAAA;AACA,IAAAsB,YAAA,GAAAvB,sBAAA,CAAAC,OAAA;AACA,IAAAuB,SAAA,GAAAxB,sBAAA,CAAAC,OAAA;AAGA,IAAIwB,QAAQ,GAAG,CAAC,CAAC;AAACC,OAAA,CAAAD,QAAA,GAAAA,QAAA;AAClBE,MAAM,CAACC,MAAM,CACXH,QAAQ,EACRI,aAAQ,EACRC,gBAAW,EACXC,cAAS,EACTC,gBAAW,EACXC,gBAAW,EACXC,gBAAU,EACVC,cAAS,EACTC,YAAO,EACPC,gBAAW,EACXC,iBAAY,EACZC,qBAAgB,EAChBC,eAAU,EACVC,qBAAgB,EAChBC,oBAAe,EACfC,gBAAW,EACXC,cAAS,EACTC,mBAAc,EACdC,mBAAc,EACdC,sBAAiB,EACjBC,oBAAe,EACfC,YAAO,EACPC,wBAAmB,EACnBC,oBAAe,EACfC,iBAAY,CAEb;AAAC,IAAAC,QAAA,GAGa5B,QAAQ;AAAAC,OAAA,CAAA4B,OAAA,GAAAD,QAAA"}
1
+ {"version":3,"file":"index.js","names":["_find","_interopRequireDefault","require","_general","_alert","_element","_context","_actions","_touch","_ime","_network","_coverage","_recordscreen","_streamscreen","_performance","_execute","_shell","_emuConsole","_fileActions","_appManagement","_intent","_systemBars","_log","_mediaProjection","_permissions","_keyboard","commands","exports","Object","assign","findCmds","generalCmds","alertCmds","elementCmds","contextCmds","actionCmds","touchCmds","imeCmds","networkCmds","coverageCmds","recordscreenCmds","intentCmds","screenStreamCmds","performanceCmds","executeCmds","shellCmds","emuConsoleCmds","systemBarsCmds","appManagementCmds","fileActionsCmds","logCmds","mediaProjectionCmds","permissionsCmds","keyboardCmds","_default","default"],"sources":["../../../lib/commands/index.js"],"sourcesContent":["import findCmds from './find';\nimport generalCmds from './general';\nimport alertCmds from './alert';\nimport elementCmds from './element';\nimport contextCmds from './context';\nimport actionCmds from './actions';\nimport touchCmds from './touch';\nimport imeCmds from './ime';\nimport networkCmds from './network';\nimport coverageCmds from './coverage';\nimport recordscreenCmds from './recordscreen';\nimport screenStreamCmds from './streamscreen';\nimport performanceCmds from './performance';\nimport executeCmds from './execute';\nimport shellCmds from './shell';\nimport emuConsoleCmds from './emu-console';\nimport fileActionsCmds from './file-actions';\nimport appManagementCmds from './app-management';\nimport intentCmds from './intent';\nimport systemBarsCmds from './system-bars';\nimport logCmds from './log';\nimport mediaProjectionCmds from './media-projection';\nimport permissionsCmds from './permissions';\nimport keyboardCmds from './keyboard';\n\n\nlet commands = {};\nObject.assign(\n commands,\n findCmds,\n generalCmds,\n alertCmds,\n elementCmds,\n contextCmds,\n actionCmds,\n touchCmds,\n imeCmds,\n networkCmds,\n coverageCmds,\n recordscreenCmds,\n intentCmds,\n screenStreamCmds,\n performanceCmds,\n executeCmds,\n shellCmds,\n emuConsoleCmds,\n systemBarsCmds,\n appManagementCmds,\n fileActionsCmds,\n logCmds,\n mediaProjectionCmds,\n permissionsCmds,\n keyboardCmds,\n // add other command types here\n);\n\nexport { commands };\nexport default commands;\n"],"mappings":";;;;;;;;AAAA,IAAAA,KAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,QAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,MAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,QAAA,GAAAJ,sBAAA,CAAAC,OAAA;AACA,IAAAI,QAAA,GAAAL,sBAAA,CAAAC,OAAA;AACA,IAAAK,QAAA,GAAAN,sBAAA,CAAAC,OAAA;AACA,IAAAM,MAAA,GAAAP,sBAAA,CAAAC,OAAA;AACA,IAAAO,IAAA,GAAAR,sBAAA,CAAAC,OAAA;AACA,IAAAQ,QAAA,GAAAT,sBAAA,CAAAC,OAAA;AACA,IAAAS,SAAA,GAAAV,sBAAA,CAAAC,OAAA;AACA,IAAAU,aAAA,GAAAX,sBAAA,CAAAC,OAAA;AACA,IAAAW,aAAA,GAAAZ,sBAAA,CAAAC,OAAA;AACA,IAAAY,YAAA,GAAAb,sBAAA,CAAAC,OAAA;AACA,IAAAa,QAAA,GAAAd,sBAAA,CAAAC,OAAA;AACA,IAAAc,MAAA,GAAAf,sBAAA,CAAAC,OAAA;AACA,IAAAe,WAAA,GAAAhB,sBAAA,CAAAC,OAAA;AACA,IAAAgB,YAAA,GAAAjB,sBAAA,CAAAC,OAAA;AACA,IAAAiB,cAAA,GAAAlB,sBAAA,CAAAC,OAAA;AACA,IAAAkB,OAAA,GAAAnB,sBAAA,CAAAC,OAAA;AACA,IAAAmB,WAAA,GAAApB,sBAAA,CAAAC,OAAA;AACA,IAAAoB,IAAA,GAAArB,sBAAA,CAAAC,OAAA;AACA,IAAAqB,gBAAA,GAAAtB,sBAAA,CAAAC,OAAA;AACA,IAAAsB,YAAA,GAAAvB,sBAAA,CAAAC,OAAA;AACA,IAAAuB,SAAA,GAAAxB,sBAAA,CAAAC,OAAA;AAGA,IAAIwB,QAAQ,GAAG,CAAC,CAAC;AAACC,OAAA,CAAAD,QAAA,GAAAA,QAAA;AAClBE,MAAM,CAACC,MAAM,CACXH,QAAQ,EACRI,aAAQ,EACRC,gBAAW,EACXC,cAAS,EACTC,gBAAW,EACXC,gBAAW,EACXC,gBAAU,EACVC,cAAS,EACTC,YAAO,EACPC,gBAAW,EACXC,iBAAY,EACZC,qBAAgB,EAChBC,eAAU,EACVC,qBAAgB,EAChBC,oBAAe,EACfC,gBAAW,EACXC,cAAS,EACTC,mBAAc,EACdC,mBAAc,EACdC,sBAAiB,EACjBC,oBAAe,EACfC,YAAO,EACPC,wBAAmB,EACnBC,oBAAe,EACfC,iBAEF,CAAC;AAAC,IAAAC,QAAA,GAGa5B,QAAQ;AAAAC,OAAA,CAAA4B,OAAA,GAAAD,QAAA"}
@@ -163,4 +163,4 @@ commands.mobileStopService = async function mobileStopService(opts = {}) {
163
163
  };
164
164
  var _default = commands;
165
165
  exports.default = _default;
166
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfZHJpdmVyIiwiTk9fVkFMVUVfQVJHX1RZUEUiLCJTVVBQT1JURURfRVhUUkFfVFlQRVMiLCJBUElfTEVWRUxfQU5EUk9JRF84IiwiY29tbWFuZHMiLCJleHBvcnRzIiwicGFyc2VJbnRlbnRTcGVjIiwib3B0cyIsImludGVudCIsImFjdGlvbiIsInVyaSIsIm1pbWVUeXBlIiwiaWRlbnRpZmllciIsImNhdGVnb3JpZXMiLCJjb21wb25lbnQiLCJleHRyYXMiLCJmbGFncyIsInJlc3VsdEFyZ3MiLCJwdXNoIiwiXyIsImlzTmlsIiwiaXNBcnJheSIsImZsYXRNYXAiLCJtYXAiLCJjTmFtZSIsInBhY2thZ2UiLCJlcnJvcnMiLCJJbnZhbGlkQXJndW1lbnRFcnJvciIsIml0ZW0iLCJ0eXBlIiwia2V5IiwidmFsdWUiLCJpbmNsdWRlcyIsImlzRW1wdHkiLCJpc1N0cmluZyIsInRyaW0iLCJKU09OIiwic3RyaW5naWZ5IiwiaXNVbmRlZmluZWQiLCJtb2JpbGVTdGFydEFjdGl2aXR5IiwidXNlciIsIndhaXQiLCJzdG9wIiwid2luZG93aW5nTW9kZSIsImFjdGl2aXR5VHlwZSIsImRpc3BsYXkiLCJjbWQiLCJhZGIiLCJnZXRBcGlMZXZlbCIsInNoZWxsIiwibW9iaWxlQnJvYWRjYXN0IiwicmVjZWl2ZXJQZXJtaXNzaW9uIiwiYWxsb3dCYWNrZ3JvdW5kQWN0aXZpdHlTdGFydHMiLCJtb2JpbGVTdGFydFNlcnZpY2UiLCJmb3JlZ3JvdW5kIiwibW9iaWxlU3RvcFNlcnZpY2UiLCJfZGVmYXVsdCIsImRlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvY29tbWFuZHMvaW50ZW50LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBlcnJvcnMgfSBmcm9tICdhcHBpdW0vZHJpdmVyJztcblxuY29uc3QgTk9fVkFMVUVfQVJHX1RZUEUgPSAnc24nO1xuY29uc3QgU1VQUE9SVEVEX0VYVFJBX1RZUEVTID0gW1xuICAncycsIE5PX1ZBTFVFX0FSR19UWVBFLCAneicsICdpJywgJ2wnLCAnZicsICd1JywgJ2NuJyxcbiAgJ2lhJywgJ2lhbCcsICdsYScsICdsYWwnLCAnZmEnLCAnZmFsJywgJ3NhJywgJ3NhbCcsXG5dO1xuY29uc3QgQVBJX0xFVkVMX0FORFJPSURfOCA9IDI2O1xuXG5jb25zdCBjb21tYW5kcyA9IHt9O1xuXG5mdW5jdGlvbiBwYXJzZUludGVudFNwZWMgKG9wdHMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgaW50ZW50LFxuICAgIGFjdGlvbixcbiAgICB1cmksXG4gICAgbWltZVR5cGUsXG4gICAgaWRlbnRpZmllcixcbiAgICBjYXRlZ29yaWVzLFxuICAgIGNvbXBvbmVudCxcbiAgICBleHRyYXMsXG4gICAgZmxhZ3MsXG4gIH0gPSBvcHRzO1xuICBjb25zdCByZXN1bHRBcmdzID0gW107XG4gIGlmIChpbnRlbnQpIHtcbiAgICByZXN1bHRBcmdzLnB1c2goaW50ZW50KTtcbiAgfVxuICBpZiAoYWN0aW9uKSB7XG4gICAgcmVzdWx0QXJncy5wdXNoKCctYScsIGFjdGlvbik7XG4gIH1cbiAgaWYgKHVyaSkge1xuICAgIHJlc3VsdEFyZ3MucHVzaCgnLWQnLCB1cmkpO1xuICB9XG4gIGlmIChtaW1lVHlwZSkge1xuICAgIHJlc3VsdEFyZ3MucHVzaCgnLXQnLCBtaW1lVHlwZSk7XG4gIH1cbiAgaWYgKCFfLmlzTmlsKGlkZW50aWZpZXIpKSB7XG4gICAgcmVzdWx0QXJncy5wdXNoKCctaScsIGlkZW50aWZpZXIpO1xuICB9XG4gIGlmIChjYXRlZ29yaWVzKSB7XG4gICAgaWYgKF8uaXNBcnJheShjYXRlZ29yaWVzKSkge1xuICAgICAgcmVzdWx0QXJncy5wdXNoKC4uLihfLmZsYXRNYXAoY2F0ZWdvcmllcy5tYXAoKGNOYW1lKSA9PiBbJy1jJywgY05hbWVdKSkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0QXJncy5wdXNoKCctYycsIGNhdGVnb3JpZXMpO1xuICAgIH1cbiAgfVxuICBpZiAoY29tcG9uZW50KSB7XG4gICAgcmVzdWx0QXJncy5wdXNoKCctbicsIGNvbXBvbmVudCk7XG4gIH1cbiAgaWYgKG9wdHMucGFja2FnZSkge1xuICAgIHJlc3VsdEFyZ3MucHVzaCgnLXAnLCBvcHRzLnBhY2thZ2UpO1xuICB9XG4gIGlmIChleHRyYXMpIHtcbiAgICBpZiAoIV8uaXNBcnJheShleHRyYXMpKSB7XG4gICAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRBcmd1bWVudEVycm9yKGAnZXh0cmFzJyBtdXN0IGJlIGFuIGFycmF5YCk7XG4gICAgfVxuICAgIGZvciAoY29uc3QgaXRlbSBvZiBleHRyYXMpIHtcbiAgICAgIGlmICghXy5pc0FycmF5KGl0ZW0pKSB7XG4gICAgICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZEFyZ3VtZW50RXJyb3IoYEV4dHJhIGFyZ3VtZW50ICcke2l0ZW19JyBtdXN0IGJlIGFuIGFycmF5YCk7XG4gICAgICB9XG4gICAgICBjb25zdCBbdHlwZSwga2V5LCB2YWx1ZV0gPSBpdGVtO1xuICAgICAgaWYgKCFfLmluY2x1ZGVzKFNVUFBPUlRFRF9FWFRSQV9UWVBFUywgdHlwZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihcbiAgICAgICAgICBgRXh0cmEgYXJndW1lbnQgdHlwZSAnJHt0eXBlfScgaXMgbm90IGtub3duLiBgICtcbiAgICAgICAgICBgU3VwcG9ydGVkIGludGVudCBhcmd1bWVudCB0eXBlcyBhcmU6ICR7U1VQUE9SVEVEX0VYVFJBX1RZUEVTfWBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmIChfLmlzRW1wdHkoa2V5KSB8fCAoXy5pc1N0cmluZyhrZXkpICYmIF8udHJpbShrZXkpID09PSAnJykpIHtcbiAgICAgICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihcbiAgICAgICAgICBgRXh0cmEgYXJndW1lbnQncyBrZXkgaW4gJyR7SlNPTi5zdHJpbmdpZnkoaXRlbSl9JyBtdXN0IGJlIGEgdmFsaWQgc3RyaW5nIGlkZW50aWZpZXJgXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAodHlwZSA9PT0gTk9fVkFMVUVfQVJHX1RZUEUpIHtcbiAgICAgICAgcmVzdWx0QXJncy5wdXNoKGAtLWUke3R5cGV9YCwga2V5KTtcbiAgICAgIH0gZWxzZSBpZiAoXy5pc1VuZGVmaW5lZCh2YWx1ZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihcbiAgICAgICAgICBgSW50ZW50IGFyZ3VtZW50IHR5cGUgJyR7dHlwZX0nIGluICcke0pTT04uc3RyaW5naWZ5KGl0ZW0pfScgcmVxdWlyZXMgYSBgICtcbiAgICAgICAgICBgdmFsaWQgdmFsdWUgdG8gYmUgcHJvdmlkZWRgXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHRBcmdzLnB1c2goYC0tZSR7dHlwZX1gLCBrZXksIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKGZsYWdzKSB7XG4gICAgcmVzdWx0QXJncy5wdXNoKCctZicsIGZsYWdzKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0QXJncztcbn1cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBTdGFydEFjdGl2aXR5T3B0aW9uc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfG51bWJlcn0gdXNlciBbJ2N1cnJlbnQnXSAtIFRoZSB1c2VyIElEIGZvciB3aGljaCB0aGUgc2VydmljZSBpcyBzdGFydGVkLlxuICogVGhlIGBjdXJyZW50YCB1c2VyIGlkIGlzIHVzZWQgYnkgZGVmYXVsdFxuICogQHByb3BlcnR5IHs/Ym9vbGVhbn0gd2FpdCBbZmFsc2VdIC0gU2V0IGl0IHRvIGB0cnVlYCBpZiB5b3Ugd2FudCB0byBibG9jayB0aGUgbWV0aG9kIGNhbGxcbiAqIHVudGlsIHRoZSBhY3Rpdml0eSBtYW5hZ2VyJ3MgcHJvY2VzcyByZXR1cm5zIHRoZSBjb250cm9sIHRvIHRoZSBzeXN0ZW0uXG4gKiBAcHJvcGVydHkgez9ib29sZWFufSBzdG9wIFtmYWxzZV0gLSBTZXQgaXQgdG8gYHRydWVgIHRvIGZvcmNlIHN0b3AgdGhlIHRhcmdldFxuICogYXBwIGJlZm9yZSBzdGFydGluZyB0aGUgYWN0aXZpdHlcbiAqIEBwcm9wZXJ0eSB7P251bWJlcnxzdHJpbmd9IHdpbmRvd2luZ01vZGUgLSBUaGUgd2luZG93aW5nIG1vZGUgdG8gbGF1bmNoIHRoZSBhY3Rpdml0eSBpbnRvLlxuICogQ2hlY2sgaHR0cHM6Ly9hbmRyb2lkLmdvb2dsZXNvdXJjZS5jb20vcGxhdGZvcm0vZnJhbWV3b3Jrcy9iYXNlLysvbWFzdGVyL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9XaW5kb3dDb25maWd1cmF0aW9uLmphdmFcbiAqIGZvciBtb3JlIGRldGFpbHMgb24gcG9zc2libGUgd2luZG93aW5nIG1vZGVzIChjb25zdGFudHMgc3RhcnRpbmcgd2l0aCBgV0lORE9XSU5HX01PREVfYCkuXG4gKiBAcHJvcGVydHkgez9udW1iZXJ8c3RyaW5nfSBhY3Rpdml0eVR5cGUgLSBUaGUgYWN0aXZpdHkgdHlwZSB0byBsYXVuY2ggdGhlIGFjdGl2aXR5IGFzLlxuICogQ2hlY2sgaHR0cHM6Ly9hbmRyb2lkLmdvb2dsZXNvdXJjZS5jb20vcGxhdGZvcm0vZnJhbWV3b3Jrcy9iYXNlLysvbWFzdGVyL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9XaW5kb3dDb25maWd1cmF0aW9uLmphdmFcbiAqIGZvciBtb3JlIGRldGFpbHMgb24gcG9zc2libGUgYWN0aXZpdHkgdHlwZXMgKGNvbnN0YW50cyBzdGFydGluZyB3aXRoIGBBQ1RJVklUWV9UWVBFX2ApLlxuICogQHByb3BlcnR5IHs/bnVtYmVyfHN0cmluZ30gZGlzcGxheSAtIFRoZSBkaXNwbGF5IGlkZW50aWZpZXIgdG8gbGF1bmNoIHRoZSBhY3Rpdml0eSBpbnRvLlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBpbnRlbnQgLSBUaGUgbmFtZSBvZiB0aGUgYWN0aXZpdHkgaW50ZW50IHRvIHN0YXJ0LCBmb3IgZXhhbXBsZVxuICogYGNvbS5zb21lLnBhY2thZ2UubmFtZS8uWW91clNlcnZpY2VTdWJDbGFzc05hbWVgXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGFjdGlvbiAtIEFjdGlvbiBuYW1lXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHBhY2thZ2UgLSBQYWNrYWdlIG5hbWVcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gdXJpIC0gVW5pZmllZCByZXNvdXJjZSBpZGVudGlmaWVyXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IG1pbWVUeXBlIC0gTWltZSB0eXBlXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGlkZW50aWZpZXIgLSBPcHRpb25hbCBpZGVudGlmaWVyXG4gKiBAcHJvcGVydHkgez9zdHJpbmd8QXJyYXk8c3RyaW5nPn0gY2F0ZWdvcmllcyAtIE9uZSBvciBtb3JlIGNhdGVnb3J5IG5hbWVzXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGNvbXBvbmVudCAtIENvbXBvbmVudCBuYW1lXG4gKiBAcHJvcGVydHkge0FycmF5PHN0cmluZ3xBcnJheTxzdHJpbmc+Pn0gZXh0cmFzIC0gT3B0aW9uYWwgaW50ZW50IGFyZ3VtZW50cy4gTXVzdCBiZSByZXByZXNlbnRlZFxuICogYXMgYXJyYXkgb2YgYXJyYXlzLCB3aGVyZSBlYWNoIHN1YmFycmF5IGl0ZW0gY29udGFpbnMgdHdvIG9yIHRocmVlIHN0cmluZyBpdGVtczpcbiAqIHZhbHVlIHR5cGUsIGtleSBuYW1lIGFuZCB0aGUgdmFsdWUgaXRzZWxmLlxuICogU3VwcG9ydGVkIHZhbHVlIHR5cGVzIGFyZTpcbiAqIC0gczogc3RyaW5nLiBWYWx1ZSBtdXN0IGJlIGEgdmFsaWQgc3RyaW5nXG4gKiAtIHNuOiBudWxsLiBWYWx1ZSBpcyBpZ25vcmVkIGZvciB0aGlzIHR5cGVcbiAqIC0gejogYm9vbGVhbi4gVmFsdWUgbXVzdCBiZSBlaXRoZXIgYHRydWVgIG9yIGBmYWxzZWBcbiAqIC0gaTogaW50ZWdlci4gVmFsdWUgbXVzdCBiZSBhIHZhbGlkIDQtYnl0ZSBpbnRlZ2VyIG51bWJlclxuICogLSBsOiBsb25nLiBWYWx1ZSBtdXN0IGJlIGEgdmFsaWQgOC1ieXRlIGxvbmcgbnVtYmVyXG4gKiAtIGY6IGZsb2F0OiBWYWx1ZSBtdXN0IGJlIGEgdmFsaWQgZmxvYXQgbnVtYmVyXG4gKiAtIHU6IHVyaS4gVmFsdWUgbXVzdCBiZSBhIHZhbGlkIHVuaWZvcm0gcmVzb3VyY2UgaWRlbnRpZmllciBzdHJpbmdcbiAqIC0gY246IGNvbXBvbmVudCBuYW1lLiBWYWx1ZSBtdXN0IGJlIGEgdmFsaWQgY29tcG9uZW50IG5hbWUgc3RyaW5nXG4gKiAtIGlhOiBJbnRlZ2VyW10uIFZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2YgY29tbWEtc2VwYXJhdGVkIGludGVnZXJzXG4gKiAtIGlhbDogTGlzdDxJbnRlZ2VyPi4gVmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvZiBjb21tYS1zZXBhcmF0ZWQgaW50ZWdlcnNcbiAqIC0gbGE6IExvbmdbXS4gVmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvZiBjb21tYS1zZXBhcmF0ZWQgbG9uZyBudW1iZXJzXG4gKiAtIGxhbDogTGlzdDxMb25nPi4gVmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvZiBjb21tYS1zZXBhcmF0ZWQgbG9uZyBudW1iZXJzXG4gKiAtIGZhOiBGbG9hdFtdLiBWYWx1ZSBtdXN0IGJlIGEgc3RyaW5nIG9mIGNvbW1hLXNlcGFyYXRlZCBmbG9hdCBudW1iZXJzXG4gKiAtIGZhbDogTGlzdDxGbG9hdD4uIFZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2YgY29tbWEtc2VwYXJhdGVkIGZsb2F0IG51bWJlcnNcbiAqIC0gc2E6IFN0cmluZ1tdLiBWYWx1ZSBtdXN0IGJlIGNvbW1hLXNlcGFyYXRlZCBzdHJpbmdzLiBUbyBlbWJlZCBhIGNvbW1hIGludG8gYSBzdHJpbmcsXG4gKiBlc2NhcGUgaXQgdXNpbmcgXCJcXCxcIlxuICogLSBzYWw6IExpc3Q8U3RyaW5nPi4gVmFsdWUgbXVzdCBiZSBjb21tYS1zZXBhcmF0ZWQgc3RyaW5ncy4gVG8gZW1iZWQgYSBjb21tYSBpbnRvIGEgc3RyaW5nLFxuICogZXNjYXBlIGl0IHVzaW5nIFwiXFwsXCJcbiAqIEZvciBleGFtcGxlOiBbWydzJywgJ3Zhck5hbWUxJywgJ015IFN0cmluZzEnXSwgWydzJywgJ3Zhck5hbWUyJywgJ015IFN0cmluZzInXSwgWydpYScsICdhcnJOYW1lJywgJzEsMiwzLDQnXV1cbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gZmxhZ3MgLSBJbnRlbnQgc3RhcnR1cC1zcGVjaWZpYyBmbGFncyBhcyBhIGhleGFkZWNpbWFsIHN0cmluZy5cbiAqIFNlZSBodHRwczovL2RldmVsb3Blci5hbmRyb2lkLmNvbS9yZWZlcmVuY2UvYW5kcm9pZC9jb250ZW50L0ludGVudC5odG1sXG4gKiBmb3IgdGhlIGxpc3Qgb2YgYXZhaWxhYmxlIGZsYWcgdmFsdWVzIChjb25zdGFudHMgc3RhcnRpbmcgd2l0aCBGTEFHX0FDVElWSVRZXykuXG4gKiBGbGFnIHZhbHVlcyBjb3VsZCBiZSBtZXJnZWQgdXNpbmcgdGhlIGxvZ2ljYWwgJ29yJyBvcGVyYXRpb24uXG4gKiBGb3IgZXhhbXBsZSwgMHgxMDIwMDAwMCBpcyB0aGUgY29tYmluYXRpb24gb2YgdHdvIGZsYWdzOlxuICogMHgxMDAwMDAwMCBgRkxBR19BQ1RJVklUWV9ORVdfVEFTS2AgfCAweDAwMjAwMDAwIGBGTEFHX0FDVElWSVRZX1JFU0VUX1RBU0tfSUZfTkVFREVEYFxuICovXG5cbi8qKlxuICogU3RhcnRzIHRoZSBnaXZlbiBhY3Rpdml0eSBpbnRlbnQuXG4gKlxuICogQHBhcmFtIHtTdGFydEFjdGl2aXR5T3B0aW9uc30gb3B0c1xuICogQHJldHVybnMge3N0cmluZ30gVGhlIGNvbW1hbmQgb3V0cHV0XG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlcmUgd2FzIGEgZmFpbHVyZSB3aGlsZSBzdGFydGluZyB0aGUgYWN0aXZpdHlcbiAqIG9yIHJlcXVpcmVkIG9wdGlvbnMgYXJlIG1pc3NpbmdcbiAqL1xuY29tbWFuZHMubW9iaWxlU3RhcnRBY3Rpdml0eSA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVN0YXJ0QWN0aXZpdHkgKG9wdHMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgdXNlcixcbiAgICB3YWl0LFxuICAgIHN0b3AsXG4gICAgd2luZG93aW5nTW9kZSxcbiAgICBhY3Rpdml0eVR5cGUsXG4gICAgZGlzcGxheSxcbiAgfSA9IG9wdHM7XG4gIGNvbnN0IGNtZCA9IFtcbiAgICAnYW0nLCAoYXdhaXQgdGhpcy5hZGIuZ2V0QXBpTGV2ZWwoKSA8IEFQSV9MRVZFTF9BTkRST0lEXzgpID8gJ3N0YXJ0JyA6ICdzdGFydC1hY3Rpdml0eScsXG4gIF07XG4gIGlmICghXy5pc05pbCh1c2VyKSkge1xuICAgIGNtZC5wdXNoKCctLXVzZXInLCB1c2VyKTtcbiAgfVxuICBpZiAod2FpdCkge1xuICAgIGNtZC5wdXNoKCctVycpO1xuICB9XG4gIGlmIChzdG9wKSB7XG4gICAgY21kLnB1c2goJy1TJyk7XG4gIH1cbiAgaWYgKCFfLmlzTmlsKHdpbmRvd2luZ01vZGUpKSB7XG4gICAgY21kLnB1c2goJy0td2luZG93aW5nTW9kZScsIHdpbmRvd2luZ01vZGUpO1xuICB9XG4gIGlmICghXy5pc05pbChhY3Rpdml0eVR5cGUpKSB7XG4gICAgY21kLnB1c2goJy0tYWN0aXZpdHlUeXBlJywgYWN0aXZpdHlUeXBlKTtcbiAgfVxuICBpZiAoIV8uaXNOaWwoZGlzcGxheSkpIHtcbiAgICBjbWQucHVzaCgnLS1kaXNwbGF5JywgZGlzcGxheSk7XG4gIH1cbiAgY21kLnB1c2goLi4uKHBhcnNlSW50ZW50U3BlYyhvcHRzKSkpO1xuICByZXR1cm4gYXdhaXQgdGhpcy5hZGIuc2hlbGwoY21kKTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gQnJvYWRjYXN0T3B0aW9uc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfG51bWJlcn0gdXNlciBbJ2FsbCddIC0gVGhlIHVzZXIgSUQgZm9yIHdoaWNoIHRoZSBicm9hZGNhc3QgaXMgc2VudC5cbiAqIFRoZSBgY3VycmVudGAgYWxpYXMgYXNzdW1lcyB0aGUgY3VycmVudCB1c2VyIElELlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSByZWNlaXZlclBlcm1pc3Npb24gLSBSZXF1aXJlIHJlY2VpdmVyIHRvIGhvbGQgdGhlIGdpdmVuIHBlcm1pc3Npb24uXG4gKiBAcHJvcGVydHkgez9ib29sZWFufSBhbGxvd0JhY2tncm91bmRBY3Rpdml0eVN0YXJ0cyBbZmFsc2VdIC0gV2hldGhlciB0aGUgcmVjZWl2ZXIgbWF5XG4gKiBzdGFydCBhY3Rpdml0aWVzIGV2ZW4gaWYgaW4gdGhlIGJhY2tncm91bmQuXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGludGVudCAtIFRoZSBuYW1lIG9mIHRoZSBpbnRlbnQgdG8gYnJvYWRjYXN0IHRvLCBmb3IgZXhhbXBsZVxuICogYGNvbS5zb21lLnBhY2thZ2UubmFtZS8uWW91clNlcnZpY2VTdWJDbGFzc05hbWVgLlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBhY3Rpb24gLSBBY3Rpb24gbmFtZVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSB1cmkgLSBVbmlmaWVkIHJlc291cmNlIGlkZW50aWZpZXJcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gbWltZVR5cGUgLSBNaW1lIHR5cGVcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gaWRlbnRpZmllciAtIE9wdGlvbmFsIGlkZW50aWZpZXJcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ3xBcnJheTxzdHJpbmc+fSBjYXRlZ29yaWVzIC0gT25lIG9yIG1vcmUgY2F0ZWdvcnkgbmFtZXNcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gY29tcG9uZW50IC0gQ29tcG9uZW50IG5hbWVcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gcGFja2FnZSAtIFBhY2thZ2UgbmFtZVxuICogQHByb3BlcnR5IHtBcnJheTxBcnJheTxzdHJpbmc+Pn0gZXh0cmFzIC0gT3B0aW9uYWwgaW50ZW50IGFyZ3VtZW50cy5cbiAqIFNlZSBhYm92ZSBmb3IgdGhlIGRldGFpbGVkIGRlc2NyaXB0aW9uLlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBmbGFncyAtIEludGVudCBzdGFydHVwLXNwZWNpZmljIGZsYWdzIGFzIGEgaGV4YWRlY2ltYWwgc3RyaW5nLlxuICogU2VlIGFib3ZlIGZvciB0aGUgZGV0YWlsZWQgZGVzY3JpcHRpb24uXG4gKi9cblxuXG4vKipcbiAqIFNlbmQgYSBicm9hZGNhc3QgaW50ZW50LlxuICpcbiAqIEBwYXJhbSB7QnJvYWRjYXN0T3B0aW9uc30gb3B0c1xuICogQHJldHVybnMge3N0cmluZ30gVGhlIGNvbW1hbmQgb3V0cHV0XG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlcmUgd2FzIGEgZmFpbHVyZSB3aGlsZSBzdGFydGluZyB0aGUgYWN0aXZpdHlcbiAqIG9yIHJlcXVpcmVkIG9wdGlvbnMgYXJlIG1pc3NpbmdcbiAqL1xuY29tbWFuZHMubW9iaWxlQnJvYWRjYXN0ID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlQnJvYWRjYXN0IChvcHRzID0ge30pIHtcbiAgY29uc3Qge1xuICAgIHVzZXIsXG4gICAgcmVjZWl2ZXJQZXJtaXNzaW9uLFxuICAgIGFsbG93QmFja2dyb3VuZEFjdGl2aXR5U3RhcnRzLFxuICB9ID0gb3B0cztcbiAgY29uc3QgY21kID0gWydhbScsICdicm9hZGNhc3QnXTtcbiAgaWYgKCFfLmlzTmlsKHVzZXIpKSB7XG4gICAgY21kLnB1c2goJy0tdXNlcicsIHVzZXIpO1xuICB9XG4gIGlmIChyZWNlaXZlclBlcm1pc3Npb24pIHtcbiAgICBjbWQucHVzaCgnLS1yZWNlaXZlci1wZXJtaXNzaW9uJywgcmVjZWl2ZXJQZXJtaXNzaW9uKTtcbiAgfVxuICBpZiAoYWxsb3dCYWNrZ3JvdW5kQWN0aXZpdHlTdGFydHMpIHtcbiAgICBjbWQucHVzaCgnLS1hbGxvdy1iYWNrZ3JvdW5kLWFjdGl2aXR5LXN0YXJ0cycpO1xuICB9XG4gIGNtZC5wdXNoKC4uLihwYXJzZUludGVudFNwZWMob3B0cykpKTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYWRiLnNoZWxsKGNtZCk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFN0YXJ0U2VydmljZU9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ3xudW1iZXJ9IHVzZXIgWydjdXJyZW50J10gLSBUaGUgdXNlciBJRCBmb3Igd2hpY2ggdGhlIHNlcnZpY2UgaXMgc3RhcnRlZC5cbiAqIFRoZSBgY3VycmVudGAgdXNlciBpZCBpcyB1c2VkIGJ5IGRlZmF1bHRcbiAqIEBwcm9wZXJ0eSB7P2Jvb2xlYW59IGZvcmVncm91bmQgW2ZhbHNlXSAtIFNldCBpdCB0byBgdHJ1ZWAgaWYgeW91ciBzZXJ2aWNlIG11c3QgYmVcbiAqIHN0YXJ0ZWQgYXMgZm9yZWdyb3VuZCBzZXJ2aWNlLiBUaGlzIG9wdGlvbiBpcyBpZ25vcmVkIGlmIHRoZSBBUEkgbGV2ZWwgb2YgdGhlXG4gKiBkZXZpY2UgdW5kZXIgdGVzdCBpcyBiZWxvdyAyNiAoQW5kcm9pZCA4KS5cbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gaW50ZW50IC0gVGhlIG5hbWUgb2YgdGhlIHNlcnZpY2UgaW50ZW50IHRvIHN0YXJ0LCBmb3IgZXhhbXBsZVxuICogYGNvbS5zb21lLnBhY2thZ2UubmFtZS8uWW91clNlcnZpY2VTdWJDbGFzc05hbWVgLlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBhY3Rpb24gLSBBY3Rpb24gbmFtZVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSB1cmkgLSBVbmlmaWVkIHJlc291cmNlIGlkZW50aWZpZXJcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gbWltZVR5cGUgLSBNaW1lIHR5cGVcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gaWRlbnRpZmllciAtIE9wdGlvbmFsIGlkZW50aWZpZXJcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ3xBcnJheTxzdHJpbmc+fSBjYXRlZ29yaWVzIC0gT25lIG9yIG1vcmUgY2F0ZWdvcnkgbmFtZXNcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gY29tcG9uZW50IC0gQ29tcG9uZW50IG5hbWVcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gcGFja2FnZSAtIFBhY2thZ2UgbmFtZVxuICogQHByb3BlcnR5IHtBcnJheTxBcnJheTxzdHJpbmc+Pn0gZXh0cmFzIC0gT3B0aW9uYWwgaW50ZW50IGFyZ3VtZW50cy5cbiAqIFNlZSBhYm92ZSBmb3IgdGhlIGRldGFpbGVkIGRlc2NyaXB0aW9uLlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBmbGFncyAtIEludGVudCBzdGFydHVwLXNwZWNpZmljIGZsYWdzIGFzIGEgaGV4YWRlY2ltYWwgc3RyaW5nLlxuICogU2VlIGFib3ZlIGZvciB0aGUgZGV0YWlsZWQgZGVzY3JpcHRpb24uXG4gKi9cblxuLyoqXG4gKiBTdGFydHMgdGhlIGdpdmVuIHNlcnZpY2UgaW50ZW50LlxuICpcbiAqIEBwYXJhbSB7U3RhcnRTZXJ2aWNlT3B0aW9uc30gb3B0c1xuICogQHJldHVybnMge3N0cmluZ30gVGhlIGNvbW1hbmQgb3V0cHV0XG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlcmUgd2FzIGEgZmFpbHVyZSB3aGlsZSBzdGFydGluZyB0aGUgc2VydmljZVxuICogb3IgcmVxdWlyZWQgb3B0aW9ucyBhcmUgbWlzc2luZ1xuICovXG5jb21tYW5kcy5tb2JpbGVTdGFydFNlcnZpY2UgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVTdGFydFNlcnZpY2UgKG9wdHMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgdXNlcixcbiAgICBmb3JlZ3JvdW5kLFxuICB9ID0gb3B0cztcbiAgY29uc3QgY21kID0gWydhbSddO1xuICBpZiAoYXdhaXQgdGhpcy5hZGIuZ2V0QXBpTGV2ZWwoKSA8IEFQSV9MRVZFTF9BTkRST0lEXzgpIHtcbiAgICBjbWQucHVzaCgnc3RhcnRzZXJ2aWNlJyk7XG4gIH0gZWxzZSB7XG4gICAgY21kLnB1c2goZm9yZWdyb3VuZCA/ICdzdGFydC1mb3JlZ3JvdW5kLXNlcnZpY2UnIDogJ3N0YXJ0LXNlcnZpY2UnKTtcbiAgfVxuICBpZiAoIV8uaXNOaWwodXNlcikpIHtcbiAgICBjbWQucHVzaCgnLS11c2VyJywgdXNlcik7XG4gIH1cbiAgY21kLnB1c2goLi4uKHBhcnNlSW50ZW50U3BlYyhvcHRzKSkpO1xuICByZXR1cm4gYXdhaXQgdGhpcy5hZGIuc2hlbGwoY21kKTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gU3RvcFNlcnZpY2VPcHRpb25zXG4gKiBAcHJvcGVydHkge3N0cmluZ3xudW1iZXJ9IHVzZXIgWydjdXJyZW50J10gLSBUaGUgdXNlciBJRCBmb3Igd2hpY2ggdGhlIHNlcnZpY2UgaXMgcnVubmluZy5cbiAqIFRoZSBgY3VycmVudGAgdXNlciBpZCBpcyB1c2VkIGJ5IGRlZmF1bHRcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gaW50ZW50IC0gVGhlIG5hbWUgb2YgdGhlIHNlcnZpY2UgaW50ZW50IHRvIHN0b3AsIGZvciBleGFtcGxlXG4gKiBgY29tLnNvbWUucGFja2FnZS5uYW1lLy5Zb3VyU2VydmljZVN1YkNsYXNzTmFtZWAuXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGFjdGlvbiAtIEFjdGlvbiBuYW1lXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHVyaSAtIFVuaWZpZWQgcmVzb3VyY2UgaWRlbnRpZmllclxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBtaW1lVHlwZSAtIE1pbWUgdHlwZVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBpZGVudGlmaWVyIC0gT3B0aW9uYWwgaWRlbnRpZmllclxuICogQHByb3BlcnR5IHs/c3RyaW5nfEFycmF5PHN0cmluZz59IGNhdGVnb3JpZXMgLSBPbmUgb3IgbW9yZSBjYXRlZ29yeSBuYW1lc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfSBjb21wb25lbnQgLSBDb21wb25lbnQgbmFtZVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBwYWNrYWdlIC0gUGFja2FnZSBuYW1lXG4gKiBAcHJvcGVydHkge0FycmF5PEFycmF5PHN0cmluZz4+fSBleHRyYXMgLSBPcHRpb25hbCBpbnRlbnQgYXJndW1lbnRzLlxuICogU2VlIGFib3ZlIGZvciB0aGUgZGV0YWlsZWQgZGVzY3JpcHRpb24uXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGZsYWdzIC0gU2VlIGFib3ZlIGZvciB0aGUgZGV0YWlsZWQgZGVzY3JpcHRpb24uXG4gKi9cblxuLyoqXG4gKiBTdG9wcyB0aGUgZ2l2ZW4gc2VydmljZSBpbnRlbnQuXG4gKlxuICogQHBhcmFtIHtTdG9wU2VydmljZU9wdGlvbnN9IG9wdHNcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBjb21tYW5kIG91dHB1dFxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZXJlIHdhcyBhIGZhaWx1cmUgd2hpbGUgc3RvcHBpbmcgdGhlIHNlcnZpY2VcbiAqIG9yIHJlcXVpcmVkIG9wdGlvbnMgYXJlIG1pc3NpbmdcbiAqL1xuY29tbWFuZHMubW9iaWxlU3RvcFNlcnZpY2UgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVTdG9wU2VydmljZSAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICB1c2VyLFxuICB9ID0gb3B0cztcbiAgY29uc3QgY21kID0gW1xuICAgICdhbScsXG4gICAgKGF3YWl0IHRoaXMuYWRiLmdldEFwaUxldmVsKCkgPCBBUElfTEVWRUxfQU5EUk9JRF84KSA/ICdzdG9wc2VydmljZScgOiAnc3RvcC1zZXJ2aWNlJ1xuICBdO1xuICBpZiAoIV8uaXNOaWwodXNlcikpIHtcbiAgICBjbWQucHVzaCgnLS11c2VyJywgdXNlcik7XG4gIH1cbiAgY21kLnB1c2goLi4uKHBhcnNlSW50ZW50U3BlYyhvcHRzKSkpO1xuICByZXR1cm4gYXdhaXQgdGhpcy5hZGIuc2hlbGwoY21kKTtcbn07XG5cblxuZXhwb3J0IHsgY29tbWFuZHMgfTtcbmV4cG9ydCBkZWZhdWx0IGNvbW1hbmRzO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLElBQUFB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
166
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfZHJpdmVyIiwiTk9fVkFMVUVfQVJHX1RZUEUiLCJTVVBQT1JURURfRVhUUkFfVFlQRVMiLCJBUElfTEVWRUxfQU5EUk9JRF84IiwiY29tbWFuZHMiLCJleHBvcnRzIiwicGFyc2VJbnRlbnRTcGVjIiwib3B0cyIsImludGVudCIsImFjdGlvbiIsInVyaSIsIm1pbWVUeXBlIiwiaWRlbnRpZmllciIsImNhdGVnb3JpZXMiLCJjb21wb25lbnQiLCJleHRyYXMiLCJmbGFncyIsInJlc3VsdEFyZ3MiLCJwdXNoIiwiXyIsImlzTmlsIiwiaXNBcnJheSIsImZsYXRNYXAiLCJtYXAiLCJjTmFtZSIsInBhY2thZ2UiLCJlcnJvcnMiLCJJbnZhbGlkQXJndW1lbnRFcnJvciIsIml0ZW0iLCJ0eXBlIiwia2V5IiwidmFsdWUiLCJpbmNsdWRlcyIsImlzRW1wdHkiLCJpc1N0cmluZyIsInRyaW0iLCJKU09OIiwic3RyaW5naWZ5IiwiaXNVbmRlZmluZWQiLCJtb2JpbGVTdGFydEFjdGl2aXR5IiwidXNlciIsIndhaXQiLCJzdG9wIiwid2luZG93aW5nTW9kZSIsImFjdGl2aXR5VHlwZSIsImRpc3BsYXkiLCJjbWQiLCJhZGIiLCJnZXRBcGlMZXZlbCIsInNoZWxsIiwibW9iaWxlQnJvYWRjYXN0IiwicmVjZWl2ZXJQZXJtaXNzaW9uIiwiYWxsb3dCYWNrZ3JvdW5kQWN0aXZpdHlTdGFydHMiLCJtb2JpbGVTdGFydFNlcnZpY2UiLCJmb3JlZ3JvdW5kIiwibW9iaWxlU3RvcFNlcnZpY2UiLCJfZGVmYXVsdCIsImRlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvY29tbWFuZHMvaW50ZW50LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBlcnJvcnMgfSBmcm9tICdhcHBpdW0vZHJpdmVyJztcblxuY29uc3QgTk9fVkFMVUVfQVJHX1RZUEUgPSAnc24nO1xuY29uc3QgU1VQUE9SVEVEX0VYVFJBX1RZUEVTID0gW1xuICAncycsIE5PX1ZBTFVFX0FSR19UWVBFLCAneicsICdpJywgJ2wnLCAnZicsICd1JywgJ2NuJyxcbiAgJ2lhJywgJ2lhbCcsICdsYScsICdsYWwnLCAnZmEnLCAnZmFsJywgJ3NhJywgJ3NhbCcsXG5dO1xuY29uc3QgQVBJX0xFVkVMX0FORFJPSURfOCA9IDI2O1xuXG5jb25zdCBjb21tYW5kcyA9IHt9O1xuXG5mdW5jdGlvbiBwYXJzZUludGVudFNwZWMgKG9wdHMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgaW50ZW50LFxuICAgIGFjdGlvbixcbiAgICB1cmksXG4gICAgbWltZVR5cGUsXG4gICAgaWRlbnRpZmllcixcbiAgICBjYXRlZ29yaWVzLFxuICAgIGNvbXBvbmVudCxcbiAgICBleHRyYXMsXG4gICAgZmxhZ3MsXG4gIH0gPSBvcHRzO1xuICBjb25zdCByZXN1bHRBcmdzID0gW107XG4gIGlmIChpbnRlbnQpIHtcbiAgICByZXN1bHRBcmdzLnB1c2goaW50ZW50KTtcbiAgfVxuICBpZiAoYWN0aW9uKSB7XG4gICAgcmVzdWx0QXJncy5wdXNoKCctYScsIGFjdGlvbik7XG4gIH1cbiAgaWYgKHVyaSkge1xuICAgIHJlc3VsdEFyZ3MucHVzaCgnLWQnLCB1cmkpO1xuICB9XG4gIGlmIChtaW1lVHlwZSkge1xuICAgIHJlc3VsdEFyZ3MucHVzaCgnLXQnLCBtaW1lVHlwZSk7XG4gIH1cbiAgaWYgKCFfLmlzTmlsKGlkZW50aWZpZXIpKSB7XG4gICAgcmVzdWx0QXJncy5wdXNoKCctaScsIGlkZW50aWZpZXIpO1xuICB9XG4gIGlmIChjYXRlZ29yaWVzKSB7XG4gICAgaWYgKF8uaXNBcnJheShjYXRlZ29yaWVzKSkge1xuICAgICAgcmVzdWx0QXJncy5wdXNoKC4uLihfLmZsYXRNYXAoY2F0ZWdvcmllcy5tYXAoKGNOYW1lKSA9PiBbJy1jJywgY05hbWVdKSkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0QXJncy5wdXNoKCctYycsIGNhdGVnb3JpZXMpO1xuICAgIH1cbiAgfVxuICBpZiAoY29tcG9uZW50KSB7XG4gICAgcmVzdWx0QXJncy5wdXNoKCctbicsIGNvbXBvbmVudCk7XG4gIH1cbiAgaWYgKG9wdHMucGFja2FnZSkge1xuICAgIHJlc3VsdEFyZ3MucHVzaCgnLXAnLCBvcHRzLnBhY2thZ2UpO1xuICB9XG4gIGlmIChleHRyYXMpIHtcbiAgICBpZiAoIV8uaXNBcnJheShleHRyYXMpKSB7XG4gICAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRBcmd1bWVudEVycm9yKGAnZXh0cmFzJyBtdXN0IGJlIGFuIGFycmF5YCk7XG4gICAgfVxuICAgIGZvciAoY29uc3QgaXRlbSBvZiBleHRyYXMpIHtcbiAgICAgIGlmICghXy5pc0FycmF5KGl0ZW0pKSB7XG4gICAgICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZEFyZ3VtZW50RXJyb3IoYEV4dHJhIGFyZ3VtZW50ICcke2l0ZW19JyBtdXN0IGJlIGFuIGFycmF5YCk7XG4gICAgICB9XG4gICAgICBjb25zdCBbdHlwZSwga2V5LCB2YWx1ZV0gPSBpdGVtO1xuICAgICAgaWYgKCFfLmluY2x1ZGVzKFNVUFBPUlRFRF9FWFRSQV9UWVBFUywgdHlwZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihcbiAgICAgICAgICBgRXh0cmEgYXJndW1lbnQgdHlwZSAnJHt0eXBlfScgaXMgbm90IGtub3duLiBgICtcbiAgICAgICAgICBgU3VwcG9ydGVkIGludGVudCBhcmd1bWVudCB0eXBlcyBhcmU6ICR7U1VQUE9SVEVEX0VYVFJBX1RZUEVTfWBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmIChfLmlzRW1wdHkoa2V5KSB8fCAoXy5pc1N0cmluZyhrZXkpICYmIF8udHJpbShrZXkpID09PSAnJykpIHtcbiAgICAgICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihcbiAgICAgICAgICBgRXh0cmEgYXJndW1lbnQncyBrZXkgaW4gJyR7SlNPTi5zdHJpbmdpZnkoaXRlbSl9JyBtdXN0IGJlIGEgdmFsaWQgc3RyaW5nIGlkZW50aWZpZXJgXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAodHlwZSA9PT0gTk9fVkFMVUVfQVJHX1RZUEUpIHtcbiAgICAgICAgcmVzdWx0QXJncy5wdXNoKGAtLWUke3R5cGV9YCwga2V5KTtcbiAgICAgIH0gZWxzZSBpZiAoXy5pc1VuZGVmaW5lZCh2YWx1ZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihcbiAgICAgICAgICBgSW50ZW50IGFyZ3VtZW50IHR5cGUgJyR7dHlwZX0nIGluICcke0pTT04uc3RyaW5naWZ5KGl0ZW0pfScgcmVxdWlyZXMgYSBgICtcbiAgICAgICAgICBgdmFsaWQgdmFsdWUgdG8gYmUgcHJvdmlkZWRgXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHRBcmdzLnB1c2goYC0tZSR7dHlwZX1gLCBrZXksIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKGZsYWdzKSB7XG4gICAgcmVzdWx0QXJncy5wdXNoKCctZicsIGZsYWdzKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0QXJncztcbn1cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBTdGFydEFjdGl2aXR5T3B0aW9uc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfG51bWJlcn0gdXNlciBbJ2N1cnJlbnQnXSAtIFRoZSB1c2VyIElEIGZvciB3aGljaCB0aGUgc2VydmljZSBpcyBzdGFydGVkLlxuICogVGhlIGBjdXJyZW50YCB1c2VyIGlkIGlzIHVzZWQgYnkgZGVmYXVsdFxuICogQHByb3BlcnR5IHs/Ym9vbGVhbn0gd2FpdCBbZmFsc2VdIC0gU2V0IGl0IHRvIGB0cnVlYCBpZiB5b3Ugd2FudCB0byBibG9jayB0aGUgbWV0aG9kIGNhbGxcbiAqIHVudGlsIHRoZSBhY3Rpdml0eSBtYW5hZ2VyJ3MgcHJvY2VzcyByZXR1cm5zIHRoZSBjb250cm9sIHRvIHRoZSBzeXN0ZW0uXG4gKiBAcHJvcGVydHkgez9ib29sZWFufSBzdG9wIFtmYWxzZV0gLSBTZXQgaXQgdG8gYHRydWVgIHRvIGZvcmNlIHN0b3AgdGhlIHRhcmdldFxuICogYXBwIGJlZm9yZSBzdGFydGluZyB0aGUgYWN0aXZpdHlcbiAqIEBwcm9wZXJ0eSB7P251bWJlcnxzdHJpbmd9IHdpbmRvd2luZ01vZGUgLSBUaGUgd2luZG93aW5nIG1vZGUgdG8gbGF1bmNoIHRoZSBhY3Rpdml0eSBpbnRvLlxuICogQ2hlY2sgaHR0cHM6Ly9hbmRyb2lkLmdvb2dsZXNvdXJjZS5jb20vcGxhdGZvcm0vZnJhbWV3b3Jrcy9iYXNlLysvbWFzdGVyL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9XaW5kb3dDb25maWd1cmF0aW9uLmphdmFcbiAqIGZvciBtb3JlIGRldGFpbHMgb24gcG9zc2libGUgd2luZG93aW5nIG1vZGVzIChjb25zdGFudHMgc3RhcnRpbmcgd2l0aCBgV0lORE9XSU5HX01PREVfYCkuXG4gKiBAcHJvcGVydHkgez9udW1iZXJ8c3RyaW5nfSBhY3Rpdml0eVR5cGUgLSBUaGUgYWN0aXZpdHkgdHlwZSB0byBsYXVuY2ggdGhlIGFjdGl2aXR5IGFzLlxuICogQ2hlY2sgaHR0cHM6Ly9hbmRyb2lkLmdvb2dsZXNvdXJjZS5jb20vcGxhdGZvcm0vZnJhbWV3b3Jrcy9iYXNlLysvbWFzdGVyL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9XaW5kb3dDb25maWd1cmF0aW9uLmphdmFcbiAqIGZvciBtb3JlIGRldGFpbHMgb24gcG9zc2libGUgYWN0aXZpdHkgdHlwZXMgKGNvbnN0YW50cyBzdGFydGluZyB3aXRoIGBBQ1RJVklUWV9UWVBFX2ApLlxuICogQHByb3BlcnR5IHs/bnVtYmVyfHN0cmluZ30gZGlzcGxheSAtIFRoZSBkaXNwbGF5IGlkZW50aWZpZXIgdG8gbGF1bmNoIHRoZSBhY3Rpdml0eSBpbnRvLlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBpbnRlbnQgLSBUaGUgbmFtZSBvZiB0aGUgYWN0aXZpdHkgaW50ZW50IHRvIHN0YXJ0LCBmb3IgZXhhbXBsZVxuICogYGNvbS5zb21lLnBhY2thZ2UubmFtZS8uWW91clNlcnZpY2VTdWJDbGFzc05hbWVgXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGFjdGlvbiAtIEFjdGlvbiBuYW1lXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHBhY2thZ2UgLSBQYWNrYWdlIG5hbWVcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gdXJpIC0gVW5pZmllZCByZXNvdXJjZSBpZGVudGlmaWVyXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IG1pbWVUeXBlIC0gTWltZSB0eXBlXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGlkZW50aWZpZXIgLSBPcHRpb25hbCBpZGVudGlmaWVyXG4gKiBAcHJvcGVydHkgez9zdHJpbmd8QXJyYXk8c3RyaW5nPn0gY2F0ZWdvcmllcyAtIE9uZSBvciBtb3JlIGNhdGVnb3J5IG5hbWVzXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGNvbXBvbmVudCAtIENvbXBvbmVudCBuYW1lXG4gKiBAcHJvcGVydHkge0FycmF5PHN0cmluZ3xBcnJheTxzdHJpbmc+Pn0gZXh0cmFzIC0gT3B0aW9uYWwgaW50ZW50IGFyZ3VtZW50cy4gTXVzdCBiZSByZXByZXNlbnRlZFxuICogYXMgYXJyYXkgb2YgYXJyYXlzLCB3aGVyZSBlYWNoIHN1YmFycmF5IGl0ZW0gY29udGFpbnMgdHdvIG9yIHRocmVlIHN0cmluZyBpdGVtczpcbiAqIHZhbHVlIHR5cGUsIGtleSBuYW1lIGFuZCB0aGUgdmFsdWUgaXRzZWxmLlxuICogU3VwcG9ydGVkIHZhbHVlIHR5cGVzIGFyZTpcbiAqIC0gczogc3RyaW5nLiBWYWx1ZSBtdXN0IGJlIGEgdmFsaWQgc3RyaW5nXG4gKiAtIHNuOiBudWxsLiBWYWx1ZSBpcyBpZ25vcmVkIGZvciB0aGlzIHR5cGVcbiAqIC0gejogYm9vbGVhbi4gVmFsdWUgbXVzdCBiZSBlaXRoZXIgYHRydWVgIG9yIGBmYWxzZWBcbiAqIC0gaTogaW50ZWdlci4gVmFsdWUgbXVzdCBiZSBhIHZhbGlkIDQtYnl0ZSBpbnRlZ2VyIG51bWJlclxuICogLSBsOiBsb25nLiBWYWx1ZSBtdXN0IGJlIGEgdmFsaWQgOC1ieXRlIGxvbmcgbnVtYmVyXG4gKiAtIGY6IGZsb2F0OiBWYWx1ZSBtdXN0IGJlIGEgdmFsaWQgZmxvYXQgbnVtYmVyXG4gKiAtIHU6IHVyaS4gVmFsdWUgbXVzdCBiZSBhIHZhbGlkIHVuaWZvcm0gcmVzb3VyY2UgaWRlbnRpZmllciBzdHJpbmdcbiAqIC0gY246IGNvbXBvbmVudCBuYW1lLiBWYWx1ZSBtdXN0IGJlIGEgdmFsaWQgY29tcG9uZW50IG5hbWUgc3RyaW5nXG4gKiAtIGlhOiBJbnRlZ2VyW10uIFZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2YgY29tbWEtc2VwYXJhdGVkIGludGVnZXJzXG4gKiAtIGlhbDogTGlzdDxJbnRlZ2VyPi4gVmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvZiBjb21tYS1zZXBhcmF0ZWQgaW50ZWdlcnNcbiAqIC0gbGE6IExvbmdbXS4gVmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvZiBjb21tYS1zZXBhcmF0ZWQgbG9uZyBudW1iZXJzXG4gKiAtIGxhbDogTGlzdDxMb25nPi4gVmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvZiBjb21tYS1zZXBhcmF0ZWQgbG9uZyBudW1iZXJzXG4gKiAtIGZhOiBGbG9hdFtdLiBWYWx1ZSBtdXN0IGJlIGEgc3RyaW5nIG9mIGNvbW1hLXNlcGFyYXRlZCBmbG9hdCBudW1iZXJzXG4gKiAtIGZhbDogTGlzdDxGbG9hdD4uIFZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2YgY29tbWEtc2VwYXJhdGVkIGZsb2F0IG51bWJlcnNcbiAqIC0gc2E6IFN0cmluZ1tdLiBWYWx1ZSBtdXN0IGJlIGNvbW1hLXNlcGFyYXRlZCBzdHJpbmdzLiBUbyBlbWJlZCBhIGNvbW1hIGludG8gYSBzdHJpbmcsXG4gKiBlc2NhcGUgaXQgdXNpbmcgXCJcXCxcIlxuICogLSBzYWw6IExpc3Q8U3RyaW5nPi4gVmFsdWUgbXVzdCBiZSBjb21tYS1zZXBhcmF0ZWQgc3RyaW5ncy4gVG8gZW1iZWQgYSBjb21tYSBpbnRvIGEgc3RyaW5nLFxuICogZXNjYXBlIGl0IHVzaW5nIFwiXFwsXCJcbiAqIEZvciBleGFtcGxlOiBbWydzJywgJ3Zhck5hbWUxJywgJ015IFN0cmluZzEnXSwgWydzJywgJ3Zhck5hbWUyJywgJ015IFN0cmluZzInXSwgWydpYScsICdhcnJOYW1lJywgJzEsMiwzLDQnXV1cbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gZmxhZ3MgLSBJbnRlbnQgc3RhcnR1cC1zcGVjaWZpYyBmbGFncyBhcyBhIGhleGFkZWNpbWFsIHN0cmluZy5cbiAqIFNlZSBodHRwczovL2RldmVsb3Blci5hbmRyb2lkLmNvbS9yZWZlcmVuY2UvYW5kcm9pZC9jb250ZW50L0ludGVudC5odG1sXG4gKiBmb3IgdGhlIGxpc3Qgb2YgYXZhaWxhYmxlIGZsYWcgdmFsdWVzIChjb25zdGFudHMgc3RhcnRpbmcgd2l0aCBGTEFHX0FDVElWSVRZXykuXG4gKiBGbGFnIHZhbHVlcyBjb3VsZCBiZSBtZXJnZWQgdXNpbmcgdGhlIGxvZ2ljYWwgJ29yJyBvcGVyYXRpb24uXG4gKiBGb3IgZXhhbXBsZSwgMHgxMDIwMDAwMCBpcyB0aGUgY29tYmluYXRpb24gb2YgdHdvIGZsYWdzOlxuICogMHgxMDAwMDAwMCBgRkxBR19BQ1RJVklUWV9ORVdfVEFTS2AgfCAweDAwMjAwMDAwIGBGTEFHX0FDVElWSVRZX1JFU0VUX1RBU0tfSUZfTkVFREVEYFxuICovXG5cbi8qKlxuICogU3RhcnRzIHRoZSBnaXZlbiBhY3Rpdml0eSBpbnRlbnQuXG4gKlxuICogQHBhcmFtIHtTdGFydEFjdGl2aXR5T3B0aW9uc30gb3B0c1xuICogQHJldHVybnMge3N0cmluZ30gVGhlIGNvbW1hbmQgb3V0cHV0XG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlcmUgd2FzIGEgZmFpbHVyZSB3aGlsZSBzdGFydGluZyB0aGUgYWN0aXZpdHlcbiAqIG9yIHJlcXVpcmVkIG9wdGlvbnMgYXJlIG1pc3NpbmdcbiAqL1xuY29tbWFuZHMubW9iaWxlU3RhcnRBY3Rpdml0eSA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVN0YXJ0QWN0aXZpdHkgKG9wdHMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgdXNlcixcbiAgICB3YWl0LFxuICAgIHN0b3AsXG4gICAgd2luZG93aW5nTW9kZSxcbiAgICBhY3Rpdml0eVR5cGUsXG4gICAgZGlzcGxheSxcbiAgfSA9IG9wdHM7XG4gIGNvbnN0IGNtZCA9IFtcbiAgICAnYW0nLCAoYXdhaXQgdGhpcy5hZGIuZ2V0QXBpTGV2ZWwoKSA8IEFQSV9MRVZFTF9BTkRST0lEXzgpID8gJ3N0YXJ0JyA6ICdzdGFydC1hY3Rpdml0eScsXG4gIF07XG4gIGlmICghXy5pc05pbCh1c2VyKSkge1xuICAgIGNtZC5wdXNoKCctLXVzZXInLCB1c2VyKTtcbiAgfVxuICBpZiAod2FpdCkge1xuICAgIGNtZC5wdXNoKCctVycpO1xuICB9XG4gIGlmIChzdG9wKSB7XG4gICAgY21kLnB1c2goJy1TJyk7XG4gIH1cbiAgaWYgKCFfLmlzTmlsKHdpbmRvd2luZ01vZGUpKSB7XG4gICAgY21kLnB1c2goJy0td2luZG93aW5nTW9kZScsIHdpbmRvd2luZ01vZGUpO1xuICB9XG4gIGlmICghXy5pc05pbChhY3Rpdml0eVR5cGUpKSB7XG4gICAgY21kLnB1c2goJy0tYWN0aXZpdHlUeXBlJywgYWN0aXZpdHlUeXBlKTtcbiAgfVxuICBpZiAoIV8uaXNOaWwoZGlzcGxheSkpIHtcbiAgICBjbWQucHVzaCgnLS1kaXNwbGF5JywgZGlzcGxheSk7XG4gIH1cbiAgY21kLnB1c2goLi4uKHBhcnNlSW50ZW50U3BlYyhvcHRzKSkpO1xuICByZXR1cm4gYXdhaXQgdGhpcy5hZGIuc2hlbGwoY21kKTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gQnJvYWRjYXN0T3B0aW9uc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfG51bWJlcn0gdXNlciBbJ2FsbCddIC0gVGhlIHVzZXIgSUQgZm9yIHdoaWNoIHRoZSBicm9hZGNhc3QgaXMgc2VudC5cbiAqIFRoZSBgY3VycmVudGAgYWxpYXMgYXNzdW1lcyB0aGUgY3VycmVudCB1c2VyIElELlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSByZWNlaXZlclBlcm1pc3Npb24gLSBSZXF1aXJlIHJlY2VpdmVyIHRvIGhvbGQgdGhlIGdpdmVuIHBlcm1pc3Npb24uXG4gKiBAcHJvcGVydHkgez9ib29sZWFufSBhbGxvd0JhY2tncm91bmRBY3Rpdml0eVN0YXJ0cyBbZmFsc2VdIC0gV2hldGhlciB0aGUgcmVjZWl2ZXIgbWF5XG4gKiBzdGFydCBhY3Rpdml0aWVzIGV2ZW4gaWYgaW4gdGhlIGJhY2tncm91bmQuXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGludGVudCAtIFRoZSBuYW1lIG9mIHRoZSBpbnRlbnQgdG8gYnJvYWRjYXN0IHRvLCBmb3IgZXhhbXBsZVxuICogYGNvbS5zb21lLnBhY2thZ2UubmFtZS8uWW91clNlcnZpY2VTdWJDbGFzc05hbWVgLlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBhY3Rpb24gLSBBY3Rpb24gbmFtZVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSB1cmkgLSBVbmlmaWVkIHJlc291cmNlIGlkZW50aWZpZXJcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gbWltZVR5cGUgLSBNaW1lIHR5cGVcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gaWRlbnRpZmllciAtIE9wdGlvbmFsIGlkZW50aWZpZXJcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ3xBcnJheTxzdHJpbmc+fSBjYXRlZ29yaWVzIC0gT25lIG9yIG1vcmUgY2F0ZWdvcnkgbmFtZXNcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gY29tcG9uZW50IC0gQ29tcG9uZW50IG5hbWVcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gcGFja2FnZSAtIFBhY2thZ2UgbmFtZVxuICogQHByb3BlcnR5IHtBcnJheTxBcnJheTxzdHJpbmc+Pn0gZXh0cmFzIC0gT3B0aW9uYWwgaW50ZW50IGFyZ3VtZW50cy5cbiAqIFNlZSBhYm92ZSBmb3IgdGhlIGRldGFpbGVkIGRlc2NyaXB0aW9uLlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBmbGFncyAtIEludGVudCBzdGFydHVwLXNwZWNpZmljIGZsYWdzIGFzIGEgaGV4YWRlY2ltYWwgc3RyaW5nLlxuICogU2VlIGFib3ZlIGZvciB0aGUgZGV0YWlsZWQgZGVzY3JpcHRpb24uXG4gKi9cblxuXG4vKipcbiAqIFNlbmQgYSBicm9hZGNhc3QgaW50ZW50LlxuICpcbiAqIEBwYXJhbSB7QnJvYWRjYXN0T3B0aW9uc30gb3B0c1xuICogQHJldHVybnMge3N0cmluZ30gVGhlIGNvbW1hbmQgb3V0cHV0XG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlcmUgd2FzIGEgZmFpbHVyZSB3aGlsZSBzdGFydGluZyB0aGUgYWN0aXZpdHlcbiAqIG9yIHJlcXVpcmVkIG9wdGlvbnMgYXJlIG1pc3NpbmdcbiAqL1xuY29tbWFuZHMubW9iaWxlQnJvYWRjYXN0ID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlQnJvYWRjYXN0IChvcHRzID0ge30pIHtcbiAgY29uc3Qge1xuICAgIHVzZXIsXG4gICAgcmVjZWl2ZXJQZXJtaXNzaW9uLFxuICAgIGFsbG93QmFja2dyb3VuZEFjdGl2aXR5U3RhcnRzLFxuICB9ID0gb3B0cztcbiAgY29uc3QgY21kID0gWydhbScsICdicm9hZGNhc3QnXTtcbiAgaWYgKCFfLmlzTmlsKHVzZXIpKSB7XG4gICAgY21kLnB1c2goJy0tdXNlcicsIHVzZXIpO1xuICB9XG4gIGlmIChyZWNlaXZlclBlcm1pc3Npb24pIHtcbiAgICBjbWQucHVzaCgnLS1yZWNlaXZlci1wZXJtaXNzaW9uJywgcmVjZWl2ZXJQZXJtaXNzaW9uKTtcbiAgfVxuICBpZiAoYWxsb3dCYWNrZ3JvdW5kQWN0aXZpdHlTdGFydHMpIHtcbiAgICBjbWQucHVzaCgnLS1hbGxvdy1iYWNrZ3JvdW5kLWFjdGl2aXR5LXN0YXJ0cycpO1xuICB9XG4gIGNtZC5wdXNoKC4uLihwYXJzZUludGVudFNwZWMob3B0cykpKTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYWRiLnNoZWxsKGNtZCk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFN0YXJ0U2VydmljZU9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ3xudW1iZXJ9IHVzZXIgWydjdXJyZW50J10gLSBUaGUgdXNlciBJRCBmb3Igd2hpY2ggdGhlIHNlcnZpY2UgaXMgc3RhcnRlZC5cbiAqIFRoZSBgY3VycmVudGAgdXNlciBpZCBpcyB1c2VkIGJ5IGRlZmF1bHRcbiAqIEBwcm9wZXJ0eSB7P2Jvb2xlYW59IGZvcmVncm91bmQgW2ZhbHNlXSAtIFNldCBpdCB0byBgdHJ1ZWAgaWYgeW91ciBzZXJ2aWNlIG11c3QgYmVcbiAqIHN0YXJ0ZWQgYXMgZm9yZWdyb3VuZCBzZXJ2aWNlLiBUaGlzIG9wdGlvbiBpcyBpZ25vcmVkIGlmIHRoZSBBUEkgbGV2ZWwgb2YgdGhlXG4gKiBkZXZpY2UgdW5kZXIgdGVzdCBpcyBiZWxvdyAyNiAoQW5kcm9pZCA4KS5cbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gaW50ZW50IC0gVGhlIG5hbWUgb2YgdGhlIHNlcnZpY2UgaW50ZW50IHRvIHN0YXJ0LCBmb3IgZXhhbXBsZVxuICogYGNvbS5zb21lLnBhY2thZ2UubmFtZS8uWW91clNlcnZpY2VTdWJDbGFzc05hbWVgLlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBhY3Rpb24gLSBBY3Rpb24gbmFtZVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSB1cmkgLSBVbmlmaWVkIHJlc291cmNlIGlkZW50aWZpZXJcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gbWltZVR5cGUgLSBNaW1lIHR5cGVcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gaWRlbnRpZmllciAtIE9wdGlvbmFsIGlkZW50aWZpZXJcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ3xBcnJheTxzdHJpbmc+fSBjYXRlZ29yaWVzIC0gT25lIG9yIG1vcmUgY2F0ZWdvcnkgbmFtZXNcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gY29tcG9uZW50IC0gQ29tcG9uZW50IG5hbWVcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gcGFja2FnZSAtIFBhY2thZ2UgbmFtZVxuICogQHByb3BlcnR5IHtBcnJheTxBcnJheTxzdHJpbmc+Pn0gZXh0cmFzIC0gT3B0aW9uYWwgaW50ZW50IGFyZ3VtZW50cy5cbiAqIFNlZSBhYm92ZSBmb3IgdGhlIGRldGFpbGVkIGRlc2NyaXB0aW9uLlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBmbGFncyAtIEludGVudCBzdGFydHVwLXNwZWNpZmljIGZsYWdzIGFzIGEgaGV4YWRlY2ltYWwgc3RyaW5nLlxuICogU2VlIGFib3ZlIGZvciB0aGUgZGV0YWlsZWQgZGVzY3JpcHRpb24uXG4gKi9cblxuLyoqXG4gKiBTdGFydHMgdGhlIGdpdmVuIHNlcnZpY2UgaW50ZW50LlxuICpcbiAqIEBwYXJhbSB7U3RhcnRTZXJ2aWNlT3B0aW9uc30gb3B0c1xuICogQHJldHVybnMge3N0cmluZ30gVGhlIGNvbW1hbmQgb3V0cHV0XG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlcmUgd2FzIGEgZmFpbHVyZSB3aGlsZSBzdGFydGluZyB0aGUgc2VydmljZVxuICogb3IgcmVxdWlyZWQgb3B0aW9ucyBhcmUgbWlzc2luZ1xuICovXG5jb21tYW5kcy5tb2JpbGVTdGFydFNlcnZpY2UgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVTdGFydFNlcnZpY2UgKG9wdHMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgdXNlcixcbiAgICBmb3JlZ3JvdW5kLFxuICB9ID0gb3B0cztcbiAgY29uc3QgY21kID0gWydhbSddO1xuICBpZiAoYXdhaXQgdGhpcy5hZGIuZ2V0QXBpTGV2ZWwoKSA8IEFQSV9MRVZFTF9BTkRST0lEXzgpIHtcbiAgICBjbWQucHVzaCgnc3RhcnRzZXJ2aWNlJyk7XG4gIH0gZWxzZSB7XG4gICAgY21kLnB1c2goZm9yZWdyb3VuZCA/ICdzdGFydC1mb3JlZ3JvdW5kLXNlcnZpY2UnIDogJ3N0YXJ0LXNlcnZpY2UnKTtcbiAgfVxuICBpZiAoIV8uaXNOaWwodXNlcikpIHtcbiAgICBjbWQucHVzaCgnLS11c2VyJywgdXNlcik7XG4gIH1cbiAgY21kLnB1c2goLi4uKHBhcnNlSW50ZW50U3BlYyhvcHRzKSkpO1xuICByZXR1cm4gYXdhaXQgdGhpcy5hZGIuc2hlbGwoY21kKTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gU3RvcFNlcnZpY2VPcHRpb25zXG4gKiBAcHJvcGVydHkge3N0cmluZ3xudW1iZXJ9IHVzZXIgWydjdXJyZW50J10gLSBUaGUgdXNlciBJRCBmb3Igd2hpY2ggdGhlIHNlcnZpY2UgaXMgcnVubmluZy5cbiAqIFRoZSBgY3VycmVudGAgdXNlciBpZCBpcyB1c2VkIGJ5IGRlZmF1bHRcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gaW50ZW50IC0gVGhlIG5hbWUgb2YgdGhlIHNlcnZpY2UgaW50ZW50IHRvIHN0b3AsIGZvciBleGFtcGxlXG4gKiBgY29tLnNvbWUucGFja2FnZS5uYW1lLy5Zb3VyU2VydmljZVN1YkNsYXNzTmFtZWAuXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGFjdGlvbiAtIEFjdGlvbiBuYW1lXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHVyaSAtIFVuaWZpZWQgcmVzb3VyY2UgaWRlbnRpZmllclxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBtaW1lVHlwZSAtIE1pbWUgdHlwZVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBpZGVudGlmaWVyIC0gT3B0aW9uYWwgaWRlbnRpZmllclxuICogQHByb3BlcnR5IHs/c3RyaW5nfEFycmF5PHN0cmluZz59IGNhdGVnb3JpZXMgLSBPbmUgb3IgbW9yZSBjYXRlZ29yeSBuYW1lc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfSBjb21wb25lbnQgLSBDb21wb25lbnQgbmFtZVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBwYWNrYWdlIC0gUGFja2FnZSBuYW1lXG4gKiBAcHJvcGVydHkge0FycmF5PEFycmF5PHN0cmluZz4+fSBleHRyYXMgLSBPcHRpb25hbCBpbnRlbnQgYXJndW1lbnRzLlxuICogU2VlIGFib3ZlIGZvciB0aGUgZGV0YWlsZWQgZGVzY3JpcHRpb24uXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGZsYWdzIC0gU2VlIGFib3ZlIGZvciB0aGUgZGV0YWlsZWQgZGVzY3JpcHRpb24uXG4gKi9cblxuLyoqXG4gKiBTdG9wcyB0aGUgZ2l2ZW4gc2VydmljZSBpbnRlbnQuXG4gKlxuICogQHBhcmFtIHtTdG9wU2VydmljZU9wdGlvbnN9IG9wdHNcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBjb21tYW5kIG91dHB1dFxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZXJlIHdhcyBhIGZhaWx1cmUgd2hpbGUgc3RvcHBpbmcgdGhlIHNlcnZpY2VcbiAqIG9yIHJlcXVpcmVkIG9wdGlvbnMgYXJlIG1pc3NpbmdcbiAqL1xuY29tbWFuZHMubW9iaWxlU3RvcFNlcnZpY2UgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVTdG9wU2VydmljZSAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICB1c2VyLFxuICB9ID0gb3B0cztcbiAgY29uc3QgY21kID0gW1xuICAgICdhbScsXG4gICAgKGF3YWl0IHRoaXMuYWRiLmdldEFwaUxldmVsKCkgPCBBUElfTEVWRUxfQU5EUk9JRF84KSA/ICdzdG9wc2VydmljZScgOiAnc3RvcC1zZXJ2aWNlJ1xuICBdO1xuICBpZiAoIV8uaXNOaWwodXNlcikpIHtcbiAgICBjbWQucHVzaCgnLS11c2VyJywgdXNlcik7XG4gIH1cbiAgY21kLnB1c2goLi4uKHBhcnNlSW50ZW50U3BlYyhvcHRzKSkpO1xuICByZXR1cm4gYXdhaXQgdGhpcy5hZGIuc2hlbGwoY21kKTtcbn07XG5cblxuZXhwb3J0IHsgY29tbWFuZHMgfTtcbmV4cG9ydCBkZWZhdWx0IGNvbW1hbmRzO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE9BQUEsR0FBQUQsT0FBQTtBQUVBLE1BQU1FLGlCQUFpQixHQUFHLElBQUk7QUFDOUIsTUFBTUMscUJBQXFCLEdBQUcsQ0FDNUIsR0FBRyxFQUFFRCxpQkFBaUIsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFDckQsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FDbkQ7QUFDRCxNQUFNRSxtQkFBbUIsR0FBRyxFQUFFO0FBRTlCLE1BQU1DLFFBQVEsR0FBRyxDQUFDLENBQUM7QUFBQ0MsT0FBQSxDQUFBRCxRQUFBLEdBQUFBLFFBQUE7QUFFcEIsU0FBU0UsZUFBZUEsQ0FBRUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFO0VBQ25DLE1BQU07SUFDSkMsTUFBTTtJQUNOQyxNQUFNO0lBQ05DLEdBQUc7SUFDSEMsUUFBUTtJQUNSQyxVQUFVO0lBQ1ZDLFVBQVU7SUFDVkMsU0FBUztJQUNUQyxNQUFNO0lBQ05DO0VBQ0YsQ0FBQyxHQUFHVCxJQUFJO0VBQ1IsTUFBTVUsVUFBVSxHQUFHLEVBQUU7RUFDckIsSUFBSVQsTUFBTSxFQUFFO0lBQ1ZTLFVBQVUsQ0FBQ0MsSUFBSSxDQUFDVixNQUFNLENBQUM7RUFDekI7RUFDQSxJQUFJQyxNQUFNLEVBQUU7SUFDVlEsVUFBVSxDQUFDQyxJQUFJLENBQUMsSUFBSSxFQUFFVCxNQUFNLENBQUM7RUFDL0I7RUFDQSxJQUFJQyxHQUFHLEVBQUU7SUFDUE8sVUFBVSxDQUFDQyxJQUFJLENBQUMsSUFBSSxFQUFFUixHQUFHLENBQUM7RUFDNUI7RUFDQSxJQUFJQyxRQUFRLEVBQUU7SUFDWk0sVUFBVSxDQUFDQyxJQUFJLENBQUMsSUFBSSxFQUFFUCxRQUFRLENBQUM7RUFDakM7RUFDQSxJQUFJLENBQUNRLGVBQUMsQ0FBQ0MsS0FBSyxDQUFDUixVQUFVLENBQUMsRUFBRTtJQUN4QkssVUFBVSxDQUFDQyxJQUFJLENBQUMsSUFBSSxFQUFFTixVQUFVLENBQUM7RUFDbkM7RUFDQSxJQUFJQyxVQUFVLEVBQUU7SUFDZCxJQUFJTSxlQUFDLENBQUNFLE9BQU8sQ0FBQ1IsVUFBVSxDQUFDLEVBQUU7TUFDekJJLFVBQVUsQ0FBQ0MsSUFBSSxDQUFDLEdBQUlDLGVBQUMsQ0FBQ0csT0FBTyxDQUFDVCxVQUFVLENBQUNVLEdBQUcsQ0FBRUMsS0FBSyxJQUFLLENBQUMsSUFBSSxFQUFFQSxLQUFLLENBQUMsQ0FBQyxDQUFFLENBQUM7SUFDM0UsQ0FBQyxNQUFNO01BQ0xQLFVBQVUsQ0FBQ0MsSUFBSSxDQUFDLElBQUksRUFBRUwsVUFBVSxDQUFDO0lBQ25DO0VBQ0Y7RUFDQSxJQUFJQyxTQUFTLEVBQUU7SUFDYkcsVUFBVSxDQUFDQyxJQUFJLENBQUMsSUFBSSxFQUFFSixTQUFTLENBQUM7RUFDbEM7RUFDQSxJQUFJUCxJQUFJLENBQUNrQixPQUFPLEVBQUU7SUFDaEJSLFVBQVUsQ0FBQ0MsSUFBSSxDQUFDLElBQUksRUFBRVgsSUFBSSxDQUFDa0IsT0FBTyxDQUFDO0VBQ3JDO0VBQ0EsSUFBSVYsTUFBTSxFQUFFO0lBQ1YsSUFBSSxDQUFDSSxlQUFDLENBQUNFLE9BQU8sQ0FBQ04sTUFBTSxDQUFDLEVBQUU7TUFDdEIsTUFBTSxJQUFJVyxjQUFNLENBQUNDLG9CQUFvQixDQUFFLDJCQUEwQixDQUFDO0lBQ3BFO0lBQ0EsS0FBSyxNQUFNQyxJQUFJLElBQUliLE1BQU0sRUFBRTtNQUN6QixJQUFJLENBQUNJLGVBQUMsQ0FBQ0UsT0FBTyxDQUFDTyxJQUFJLENBQUMsRUFBRTtRQUNwQixNQUFNLElBQUlGLGNBQU0sQ0FBQ0Msb0JBQW9CLENBQUUsbUJBQWtCQyxJQUFLLG9CQUFtQixDQUFDO01BQ3BGO01BQ0EsTUFBTSxDQUFDQyxJQUFJLEVBQUVDLEdBQUcsRUFBRUMsS0FBSyxDQUFDLEdBQUdILElBQUk7TUFDL0IsSUFBSSxDQUFDVCxlQUFDLENBQUNhLFFBQVEsQ0FBQzlCLHFCQUFxQixFQUFFMkIsSUFBSSxDQUFDLEVBQUU7UUFDNUMsTUFBTSxJQUFJSCxjQUFNLENBQUNDLG9CQUFvQixDQUNsQyx3QkFBdUJFLElBQUssa0JBQWlCLEdBQzdDLHdDQUF1QzNCLHFCQUFzQixFQUNoRSxDQUFDO01BQ0g7TUFDQSxJQUFJaUIsZUFBQyxDQUFDYyxPQUFPLENBQUNILEdBQUcsQ0FBQyxJQUFLWCxlQUFDLENBQUNlLFFBQVEsQ0FBQ0osR0FBRyxDQUFDLElBQUlYLGVBQUMsQ0FBQ2dCLElBQUksQ0FBQ0wsR0FBRyxDQUFDLEtBQUssRUFBRyxFQUFFO1FBQzdELE1BQU0sSUFBSUosY0FBTSxDQUFDQyxvQkFBb0IsQ0FDbEMsNEJBQTJCUyxJQUFJLENBQUNDLFNBQVMsQ0FBQ1QsSUFBSSxDQUFFLHFDQUNuRCxDQUFDO01BQ0g7TUFDQSxJQUFJQyxJQUFJLEtBQUs1QixpQkFBaUIsRUFBRTtRQUM5QmdCLFVBQVUsQ0FBQ0MsSUFBSSxDQUFFLE1BQUtXLElBQUssRUFBQyxFQUFFQyxHQUFHLENBQUM7TUFDcEMsQ0FBQyxNQUFNLElBQUlYLGVBQUMsQ0FBQ21CLFdBQVcsQ0FBQ1AsS0FBSyxDQUFDLEVBQUU7UUFDL0IsTUFBTSxJQUFJTCxjQUFNLENBQUNDLG9CQUFvQixDQUNsQyx5QkFBd0JFLElBQUssU0FBUU8sSUFBSSxDQUFDQyxTQUFTLENBQUNULElBQUksQ0FBRSxlQUFjLEdBQ3hFLDRCQUNILENBQUM7TUFDSCxDQUFDLE1BQU07UUFDTFgsVUFBVSxDQUFDQyxJQUFJLENBQUUsTUFBS1csSUFBSyxFQUFDLEVBQUVDLEdBQUcsRUFBRUMsS0FBSyxDQUFDO01BQzNDO0lBQ0Y7RUFDRjtFQUNBLElBQUlmLEtBQUssRUFBRTtJQUNUQyxVQUFVLENBQUNDLElBQUksQ0FBQyxJQUFJLEVBQUVGLEtBQUssQ0FBQztFQUM5QjtFQUNBLE9BQU9DLFVBQVU7QUFDbkI7QUFpRUFiLFFBQVEsQ0FBQ21DLG1CQUFtQixHQUFHLGVBQWVBLG1CQUFtQkEsQ0FBRWhDLElBQUksR0FBRyxDQUFDLENBQUMsRUFBRTtFQUM1RSxNQUFNO0lBQ0ppQyxJQUFJO0lBQ0pDLElBQUk7SUFDSkMsSUFBSTtJQUNKQyxhQUFhO0lBQ2JDLFlBQVk7SUFDWkM7RUFDRixDQUFDLEdBQUd0QyxJQUFJO0VBQ1IsTUFBTXVDLEdBQUcsR0FBRyxDQUNWLElBQUksRUFBRyxPQUFNLElBQUksQ0FBQ0MsR0FBRyxDQUFDQyxXQUFXLENBQUMsQ0FBQyxJQUFHN0MsbUJBQW1CLEdBQUksT0FBTyxHQUFHLGdCQUFnQixDQUN4RjtFQUNELElBQUksQ0FBQ2dCLGVBQUMsQ0FBQ0MsS0FBSyxDQUFDb0IsSUFBSSxDQUFDLEVBQUU7SUFDbEJNLEdBQUcsQ0FBQzVCLElBQUksQ0FBQyxRQUFRLEVBQUVzQixJQUFJLENBQUM7RUFDMUI7RUFDQSxJQUFJQyxJQUFJLEVBQUU7SUFDUkssR0FBRyxDQUFDNUIsSUFBSSxDQUFDLElBQUksQ0FBQztFQUNoQjtFQUNBLElBQUl3QixJQUFJLEVBQUU7SUFDUkksR0FBRyxDQUFDNUIsSUFBSSxDQUFDLElBQUksQ0FBQztFQUNoQjtFQUNBLElBQUksQ0FBQ0MsZUFBQyxDQUFDQyxLQUFLLENBQUN1QixhQUFhLENBQUMsRUFBRTtJQUMzQkcsR0FBRyxDQUFDNUIsSUFBSSxDQUFDLGlCQUFpQixFQUFFeUIsYUFBYSxDQUFDO0VBQzVDO0VBQ0EsSUFBSSxDQUFDeEIsZUFBQyxDQUFDQyxLQUFLLENBQUN3QixZQUFZLENBQUMsRUFBRTtJQUMxQkUsR0FBRyxDQUFDNUIsSUFBSSxDQUFDLGdCQUFnQixFQUFFMEIsWUFBWSxDQUFDO0VBQzFDO0VBQ0EsSUFBSSxDQUFDekIsZUFBQyxDQUFDQyxLQUFLLENBQUN5QixPQUFPLENBQUMsRUFBRTtJQUNyQkMsR0FBRyxDQUFDNUIsSUFBSSxDQUFDLFdBQVcsRUFBRTJCLE9BQU8sQ0FBQztFQUNoQztFQUNBQyxHQUFHLENBQUM1QixJQUFJLENBQUMsR0FBSVosZUFBZSxDQUFDQyxJQUFJLENBQUUsQ0FBQztFQUNwQyxPQUFPLE1BQU0sSUFBSSxDQUFDd0MsR0FBRyxDQUFDRSxLQUFLLENBQUNILEdBQUcsQ0FBQztBQUNsQyxDQUFDO0FBaUNEMUMsUUFBUSxDQUFDOEMsZUFBZSxHQUFHLGVBQWVBLGVBQWVBLENBQUUzQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUU7RUFDcEUsTUFBTTtJQUNKaUMsSUFBSTtJQUNKVyxrQkFBa0I7SUFDbEJDO0VBQ0YsQ0FBQyxHQUFHN0MsSUFBSTtFQUNSLE1BQU11QyxHQUFHLEdBQUcsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDO0VBQy9CLElBQUksQ0FBQzNCLGVBQUMsQ0FBQ0MsS0FBSyxDQUFDb0IsSUFBSSxDQUFDLEVBQUU7SUFDbEJNLEdBQUcsQ0FBQzVCLElBQUksQ0FBQyxRQUFRLEVBQUVzQixJQUFJLENBQUM7RUFDMUI7RUFDQSxJQUFJVyxrQkFBa0IsRUFBRTtJQUN0QkwsR0FBRyxDQUFDNUIsSUFBSSxDQUFDLHVCQUF1QixFQUFFaUMsa0JBQWtCLENBQUM7RUFDdkQ7RUFDQSxJQUFJQyw2QkFBNkIsRUFBRTtJQUNqQ04sR0FBRyxDQUFDNUIsSUFBSSxDQUFDLG9DQUFvQyxDQUFDO0VBQ2hEO0VBQ0E0QixHQUFHLENBQUM1QixJQUFJLENBQUMsR0FBSVosZUFBZSxDQUFDQyxJQUFJLENBQUUsQ0FBQztFQUNwQyxPQUFPLE1BQU0sSUFBSSxDQUFDd0MsR0FBRyxDQUFDRSxLQUFLLENBQUNILEdBQUcsQ0FBQztBQUNsQyxDQUFDO0FBZ0NEMUMsUUFBUSxDQUFDaUQsa0JBQWtCLEdBQUcsZUFBZUEsa0JBQWtCQSxDQUFFOUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFO0VBQzFFLE1BQU07SUFDSmlDLElBQUk7SUFDSmM7RUFDRixDQUFDLEdBQUcvQyxJQUFJO0VBQ1IsTUFBTXVDLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQztFQUNsQixJQUFJLE9BQU0sSUFBSSxDQUFDQyxHQUFHLENBQUNDLFdBQVcsQ0FBQyxDQUFDLElBQUc3QyxtQkFBbUIsRUFBRTtJQUN0RDJDLEdBQUcsQ0FBQzVCLElBQUksQ0FBQyxjQUFjLENBQUM7RUFDMUIsQ0FBQyxNQUFNO0lBQ0w0QixHQUFHLENBQUM1QixJQUFJLENBQUNvQyxVQUFVLEdBQUcsMEJBQTBCLEdBQUcsZUFBZSxDQUFDO0VBQ3JFO0VBQ0EsSUFBSSxDQUFDbkMsZUFBQyxDQUFDQyxLQUFLLENBQUNvQixJQUFJLENBQUMsRUFBRTtJQUNsQk0sR0FBRyxDQUFDNUIsSUFBSSxDQUFDLFFBQVEsRUFBRXNCLElBQUksQ0FBQztFQUMxQjtFQUNBTSxHQUFHLENBQUM1QixJQUFJLENBQUMsR0FBSVosZUFBZSxDQUFDQyxJQUFJLENBQUUsQ0FBQztFQUNwQyxPQUFPLE1BQU0sSUFBSSxDQUFDd0MsR0FBRyxDQUFDRSxLQUFLLENBQUNILEdBQUcsQ0FBQztBQUNsQyxDQUFDO0FBNEJEMUMsUUFBUSxDQUFDbUQsaUJBQWlCLEdBQUcsZUFBZUEsaUJBQWlCQSxDQUFFaEQsSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFO0VBQ3hFLE1BQU07SUFDSmlDO0VBQ0YsQ0FBQyxHQUFHakMsSUFBSTtFQUNSLE1BQU11QyxHQUFHLEdBQUcsQ0FDVixJQUFJLEVBQ0gsT0FBTSxJQUFJLENBQUNDLEdBQUcsQ0FBQ0MsV0FBVyxDQUFDLENBQUMsSUFBRzdDLG1CQUFtQixHQUFJLGFBQWEsR0FBRyxjQUFjLENBQ3RGO0VBQ0QsSUFBSSxDQUFDZ0IsZUFBQyxDQUFDQyxLQUFLLENBQUNvQixJQUFJLENBQUMsRUFBRTtJQUNsQk0sR0FBRyxDQUFDNUIsSUFBSSxDQUFDLFFBQVEsRUFBRXNCLElBQUksQ0FBQztFQUMxQjtFQUNBTSxHQUFHLENBQUM1QixJQUFJLENBQUMsR0FBSVosZUFBZSxDQUFDQyxJQUFJLENBQUUsQ0FBQztFQUNwQyxPQUFPLE1BQU0sSUFBSSxDQUFDd0MsR0FBRyxDQUFDRSxLQUFLLENBQUNILEdBQUcsQ0FBQztBQUNsQyxDQUFDO0FBQUMsSUFBQVUsUUFBQSxHQUlhcEQsUUFBUTtBQUFBQyxPQUFBLENBQUFvRCxPQUFBLEdBQUFELFFBQUEifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"intent.js","names":["_lodash","_interopRequireDefault","require","_driver","NO_VALUE_ARG_TYPE","SUPPORTED_EXTRA_TYPES","API_LEVEL_ANDROID_8","commands","exports","parseIntentSpec","opts","intent","action","uri","mimeType","identifier","categories","component","extras","flags","resultArgs","push","_","isNil","isArray","flatMap","map","cName","package","errors","InvalidArgumentError","item","type","key","value","includes","isEmpty","isString","trim","JSON","stringify","isUndefined","mobileStartActivity","user","wait","stop","windowingMode","activityType","display","cmd","adb","getApiLevel","shell","mobileBroadcast","receiverPermission","allowBackgroundActivityStarts","mobileStartService","foreground","mobileStopService","_default","default"],"sources":["../../../lib/commands/intent.js"],"sourcesContent":["import _ from 'lodash';\nimport { errors } from 'appium/driver';\n\nconst NO_VALUE_ARG_TYPE = 'sn';\nconst SUPPORTED_EXTRA_TYPES = [\n 's', NO_VALUE_ARG_TYPE, 'z', 'i', 'l', 'f', 'u', 'cn',\n 'ia', 'ial', 'la', 'lal', 'fa', 'fal', 'sa', 'sal',\n];\nconst API_LEVEL_ANDROID_8 = 26;\n\nconst commands = {};\n\nfunction parseIntentSpec (opts = {}) {\n const {\n intent,\n action,\n uri,\n mimeType,\n identifier,\n categories,\n component,\n extras,\n flags,\n } = opts;\n const resultArgs = [];\n if (intent) {\n resultArgs.push(intent);\n }\n if (action) {\n resultArgs.push('-a', action);\n }\n if (uri) {\n resultArgs.push('-d', uri);\n }\n if (mimeType) {\n resultArgs.push('-t', mimeType);\n }\n if (!_.isNil(identifier)) {\n resultArgs.push('-i', identifier);\n }\n if (categories) {\n if (_.isArray(categories)) {\n resultArgs.push(...(_.flatMap(categories.map((cName) => ['-c', cName]))));\n } else {\n resultArgs.push('-c', categories);\n }\n }\n if (component) {\n resultArgs.push('-n', component);\n }\n if (opts.package) {\n resultArgs.push('-p', opts.package);\n }\n if (extras) {\n if (!_.isArray(extras)) {\n throw new errors.InvalidArgumentError(`'extras' must be an array`);\n }\n for (const item of extras) {\n if (!_.isArray(item)) {\n throw new errors.InvalidArgumentError(`Extra argument '${item}' must be an array`);\n }\n const [type, key, value] = item;\n if (!_.includes(SUPPORTED_EXTRA_TYPES, type)) {\n throw new errors.InvalidArgumentError(\n `Extra argument type '${type}' is not known. ` +\n `Supported intent argument types are: ${SUPPORTED_EXTRA_TYPES}`\n );\n }\n if (_.isEmpty(key) || (_.isString(key) && _.trim(key) === '')) {\n throw new errors.InvalidArgumentError(\n `Extra argument's key in '${JSON.stringify(item)}' must be a valid string identifier`\n );\n }\n if (type === NO_VALUE_ARG_TYPE) {\n resultArgs.push(`--e${type}`, key);\n } else if (_.isUndefined(value)) {\n throw new errors.InvalidArgumentError(\n `Intent argument type '${type}' in '${JSON.stringify(item)}' requires a ` +\n `valid value to be provided`\n );\n } else {\n resultArgs.push(`--e${type}`, key, value);\n }\n }\n }\n if (flags) {\n resultArgs.push('-f', flags);\n }\n return resultArgs;\n}\n\n/**\n * @typedef {Object} StartActivityOptions\n * @property {?string|number} user ['current'] - The user ID for which the service is started.\n * The `current` user id is used by default\n * @property {?boolean} wait [false] - Set it to `true` if you want to block the method call\n * until the activity manager's process returns the control to the system.\n * @property {?boolean} stop [false] - Set it to `true` to force stop the target\n * app before starting the activity\n * @property {?number|string} windowingMode - The windowing mode to launch the activity into.\n * Check https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/app/WindowConfiguration.java\n * for more details on possible windowing modes (constants starting with `WINDOWING_MODE_`).\n * @property {?number|string} activityType - The activity type to launch the activity as.\n * Check https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/app/WindowConfiguration.java\n * for more details on possible activity types (constants starting with `ACTIVITY_TYPE_`).\n * @property {?number|string} display - The display identifier to launch the activity into.\n * @property {?string} intent - The name of the activity intent to start, for example\n * `com.some.package.name/.YourServiceSubClassName`\n * @property {?string} action - Action name\n * @property {?string} package - Package name\n * @property {?string} uri - Unified resource identifier\n * @property {?string} mimeType - Mime type\n * @property {?string} identifier - Optional identifier\n * @property {?string|Array<string>} categories - One or more category names\n * @property {?string} component - Component name\n * @property {Array<string|Array<string>>} extras - Optional intent arguments. Must be represented\n * as array of arrays, where each subarray item contains two or three string items:\n * value type, key name and the value itself.\n * Supported value types are:\n * - s: string. Value must be a valid string\n * - sn: null. Value is ignored for this type\n * - z: boolean. Value must be either `true` or `false`\n * - i: integer. Value must be a valid 4-byte integer number\n * - l: long. Value must be a valid 8-byte long number\n * - f: float: Value must be a valid float number\n * - u: uri. Value must be a valid uniform resource identifier string\n * - cn: component name. Value must be a valid component name string\n * - ia: Integer[]. Value must be a string of comma-separated integers\n * - ial: List<Integer>. Value must be a string of comma-separated integers\n * - la: Long[]. Value must be a string of comma-separated long numbers\n * - lal: List<Long>. Value must be a string of comma-separated long numbers\n * - fa: Float[]. Value must be a string of comma-separated float numbers\n * - fal: List<Float>. Value must be a string of comma-separated float numbers\n * - sa: String[]. Value must be comma-separated strings. To embed a comma into a string,\n * escape it using \"\\,\"\n * - sal: List<String>. Value must be comma-separated strings. To embed a comma into a string,\n * escape it using \"\\,\"\n * For example: [['s', 'varName1', 'My String1'], ['s', 'varName2', 'My String2'], ['ia', 'arrName', '1,2,3,4']]\n * @property {?string} flags - Intent startup-specific flags as a hexadecimal string.\n * See https://developer.android.com/reference/android/content/Intent.html\n * for the list of available flag values (constants starting with FLAG_ACTIVITY_).\n * Flag values could be merged using the logical 'or' operation.\n * For example, 0x10200000 is the combination of two flags:\n * 0x10000000 `FLAG_ACTIVITY_NEW_TASK` | 0x00200000 `FLAG_ACTIVITY_RESET_TASK_IF_NEEDED`\n */\n\n/**\n * Starts the given activity intent.\n *\n * @param {StartActivityOptions} opts\n * @returns {string} The command output\n * @throws {Error} If there was a failure while starting the activity\n * or required options are missing\n */\ncommands.mobileStartActivity = async function mobileStartActivity (opts = {}) {\n const {\n user,\n wait,\n stop,\n windowingMode,\n activityType,\n display,\n } = opts;\n const cmd = [\n 'am', (await this.adb.getApiLevel() < API_LEVEL_ANDROID_8) ? 'start' : 'start-activity',\n ];\n if (!_.isNil(user)) {\n cmd.push('--user', user);\n }\n if (wait) {\n cmd.push('-W');\n }\n if (stop) {\n cmd.push('-S');\n }\n if (!_.isNil(windowingMode)) {\n cmd.push('--windowingMode', windowingMode);\n }\n if (!_.isNil(activityType)) {\n cmd.push('--activityType', activityType);\n }\n if (!_.isNil(display)) {\n cmd.push('--display', display);\n }\n cmd.push(...(parseIntentSpec(opts)));\n return await this.adb.shell(cmd);\n};\n\n/**\n * @typedef {Object} BroadcastOptions\n * @property {?string|number} user ['all'] - The user ID for which the broadcast is sent.\n * The `current` alias assumes the current user ID.\n * @property {?string} receiverPermission - Require receiver to hold the given permission.\n * @property {?boolean} allowBackgroundActivityStarts [false] - Whether the receiver may\n * start activities even if in the background.\n * @property {?string} intent - The name of the intent to broadcast to, for example\n * `com.some.package.name/.YourServiceSubClassName`.\n * @property {?string} action - Action name\n * @property {?string} uri - Unified resource identifier\n * @property {?string} mimeType - Mime type\n * @property {?string} identifier - Optional identifier\n * @property {?string|Array<string>} categories - One or more category names\n * @property {?string} component - Component name\n * @property {?string} package - Package name\n * @property {Array<Array<string>>} extras - Optional intent arguments.\n * See above for the detailed description.\n * @property {?string} flags - Intent startup-specific flags as a hexadecimal string.\n * See above for the detailed description.\n */\n\n\n/**\n * Send a broadcast intent.\n *\n * @param {BroadcastOptions} opts\n * @returns {string} The command output\n * @throws {Error} If there was a failure while starting the activity\n * or required options are missing\n */\ncommands.mobileBroadcast = async function mobileBroadcast (opts = {}) {\n const {\n user,\n receiverPermission,\n allowBackgroundActivityStarts,\n } = opts;\n const cmd = ['am', 'broadcast'];\n if (!_.isNil(user)) {\n cmd.push('--user', user);\n }\n if (receiverPermission) {\n cmd.push('--receiver-permission', receiverPermission);\n }\n if (allowBackgroundActivityStarts) {\n cmd.push('--allow-background-activity-starts');\n }\n cmd.push(...(parseIntentSpec(opts)));\n return await this.adb.shell(cmd);\n};\n\n/**\n * @typedef {Object} StartServiceOptions\n * @property {?string|number} user ['current'] - The user ID for which the service is started.\n * The `current` user id is used by default\n * @property {?boolean} foreground [false] - Set it to `true` if your service must be\n * started as foreground service. This option is ignored if the API level of the\n * device under test is below 26 (Android 8).\n * @property {?string} intent - The name of the service intent to start, for example\n * `com.some.package.name/.YourServiceSubClassName`.\n * @property {?string} action - Action name\n * @property {?string} uri - Unified resource identifier\n * @property {?string} mimeType - Mime type\n * @property {?string} identifier - Optional identifier\n * @property {?string|Array<string>} categories - One or more category names\n * @property {?string} component - Component name\n * @property {?string} package - Package name\n * @property {Array<Array<string>>} extras - Optional intent arguments.\n * See above for the detailed description.\n * @property {?string} flags - Intent startup-specific flags as a hexadecimal string.\n * See above for the detailed description.\n */\n\n/**\n * Starts the given service intent.\n *\n * @param {StartServiceOptions} opts\n * @returns {string} The command output\n * @throws {Error} If there was a failure while starting the service\n * or required options are missing\n */\ncommands.mobileStartService = async function mobileStartService (opts = {}) {\n const {\n user,\n foreground,\n } = opts;\n const cmd = ['am'];\n if (await this.adb.getApiLevel() < API_LEVEL_ANDROID_8) {\n cmd.push('startservice');\n } else {\n cmd.push(foreground ? 'start-foreground-service' : 'start-service');\n }\n if (!_.isNil(user)) {\n cmd.push('--user', user);\n }\n cmd.push(...(parseIntentSpec(opts)));\n return await this.adb.shell(cmd);\n};\n\n/**\n * @typedef {Object} StopServiceOptions\n * @property {string|number} user ['current'] - The user ID for which the service is running.\n * The `current` user id is used by default\n * @property {?string} intent - The name of the service intent to stop, for example\n * `com.some.package.name/.YourServiceSubClassName`.\n * @property {?string} action - Action name\n * @property {?string} uri - Unified resource identifier\n * @property {?string} mimeType - Mime type\n * @property {?string} identifier - Optional identifier\n * @property {?string|Array<string>} categories - One or more category names\n * @property {?string} component - Component name\n * @property {?string} package - Package name\n * @property {Array<Array<string>>} extras - Optional intent arguments.\n * See above for the detailed description.\n * @property {?string} flags - See above for the detailed description.\n */\n\n/**\n * Stops the given service intent.\n *\n * @param {StopServiceOptions} opts\n * @returns {string} The command output\n * @throws {Error} If there was a failure while stopping the service\n * or required options are missing\n */\ncommands.mobileStopService = async function mobileStopService (opts = {}) {\n const {\n user,\n } = opts;\n const cmd = [\n 'am',\n (await this.adb.getApiLevel() < API_LEVEL_ANDROID_8) ? 'stopservice' : 'stop-service'\n ];\n if (!_.isNil(user)) {\n cmd.push('--user', user);\n }\n cmd.push(...(parseIntentSpec(opts)));\n return await this.adb.shell(cmd);\n};\n\n\nexport { commands };\nexport default commands;\n"],"mappings":"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"}
1
+ {"version":3,"file":"intent.js","names":["_lodash","_interopRequireDefault","require","_driver","NO_VALUE_ARG_TYPE","SUPPORTED_EXTRA_TYPES","API_LEVEL_ANDROID_8","commands","exports","parseIntentSpec","opts","intent","action","uri","mimeType","identifier","categories","component","extras","flags","resultArgs","push","_","isNil","isArray","flatMap","map","cName","package","errors","InvalidArgumentError","item","type","key","value","includes","isEmpty","isString","trim","JSON","stringify","isUndefined","mobileStartActivity","user","wait","stop","windowingMode","activityType","display","cmd","adb","getApiLevel","shell","mobileBroadcast","receiverPermission","allowBackgroundActivityStarts","mobileStartService","foreground","mobileStopService","_default","default"],"sources":["../../../lib/commands/intent.js"],"sourcesContent":["import _ from 'lodash';\nimport { errors } from 'appium/driver';\n\nconst NO_VALUE_ARG_TYPE = 'sn';\nconst SUPPORTED_EXTRA_TYPES = [\n 's', NO_VALUE_ARG_TYPE, 'z', 'i', 'l', 'f', 'u', 'cn',\n 'ia', 'ial', 'la', 'lal', 'fa', 'fal', 'sa', 'sal',\n];\nconst API_LEVEL_ANDROID_8 = 26;\n\nconst commands = {};\n\nfunction parseIntentSpec (opts = {}) {\n const {\n intent,\n action,\n uri,\n mimeType,\n identifier,\n categories,\n component,\n extras,\n flags,\n } = opts;\n const resultArgs = [];\n if (intent) {\n resultArgs.push(intent);\n }\n if (action) {\n resultArgs.push('-a', action);\n }\n if (uri) {\n resultArgs.push('-d', uri);\n }\n if (mimeType) {\n resultArgs.push('-t', mimeType);\n }\n if (!_.isNil(identifier)) {\n resultArgs.push('-i', identifier);\n }\n if (categories) {\n if (_.isArray(categories)) {\n resultArgs.push(...(_.flatMap(categories.map((cName) => ['-c', cName]))));\n } else {\n resultArgs.push('-c', categories);\n }\n }\n if (component) {\n resultArgs.push('-n', component);\n }\n if (opts.package) {\n resultArgs.push('-p', opts.package);\n }\n if (extras) {\n if (!_.isArray(extras)) {\n throw new errors.InvalidArgumentError(`'extras' must be an array`);\n }\n for (const item of extras) {\n if (!_.isArray(item)) {\n throw new errors.InvalidArgumentError(`Extra argument '${item}' must be an array`);\n }\n const [type, key, value] = item;\n if (!_.includes(SUPPORTED_EXTRA_TYPES, type)) {\n throw new errors.InvalidArgumentError(\n `Extra argument type '${type}' is not known. ` +\n `Supported intent argument types are: ${SUPPORTED_EXTRA_TYPES}`\n );\n }\n if (_.isEmpty(key) || (_.isString(key) && _.trim(key) === '')) {\n throw new errors.InvalidArgumentError(\n `Extra argument's key in '${JSON.stringify(item)}' must be a valid string identifier`\n );\n }\n if (type === NO_VALUE_ARG_TYPE) {\n resultArgs.push(`--e${type}`, key);\n } else if (_.isUndefined(value)) {\n throw new errors.InvalidArgumentError(\n `Intent argument type '${type}' in '${JSON.stringify(item)}' requires a ` +\n `valid value to be provided`\n );\n } else {\n resultArgs.push(`--e${type}`, key, value);\n }\n }\n }\n if (flags) {\n resultArgs.push('-f', flags);\n }\n return resultArgs;\n}\n\n/**\n * @typedef {Object} StartActivityOptions\n * @property {?string|number} user ['current'] - The user ID for which the service is started.\n * The `current` user id is used by default\n * @property {?boolean} wait [false] - Set it to `true` if you want to block the method call\n * until the activity manager's process returns the control to the system.\n * @property {?boolean} stop [false] - Set it to `true` to force stop the target\n * app before starting the activity\n * @property {?number|string} windowingMode - The windowing mode to launch the activity into.\n * Check https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/app/WindowConfiguration.java\n * for more details on possible windowing modes (constants starting with `WINDOWING_MODE_`).\n * @property {?number|string} activityType - The activity type to launch the activity as.\n * Check https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/app/WindowConfiguration.java\n * for more details on possible activity types (constants starting with `ACTIVITY_TYPE_`).\n * @property {?number|string} display - The display identifier to launch the activity into.\n * @property {?string} intent - The name of the activity intent to start, for example\n * `com.some.package.name/.YourServiceSubClassName`\n * @property {?string} action - Action name\n * @property {?string} package - Package name\n * @property {?string} uri - Unified resource identifier\n * @property {?string} mimeType - Mime type\n * @property {?string} identifier - Optional identifier\n * @property {?string|Array<string>} categories - One or more category names\n * @property {?string} component - Component name\n * @property {Array<string|Array<string>>} extras - Optional intent arguments. Must be represented\n * as array of arrays, where each subarray item contains two or three string items:\n * value type, key name and the value itself.\n * Supported value types are:\n * - s: string. Value must be a valid string\n * - sn: null. Value is ignored for this type\n * - z: boolean. Value must be either `true` or `false`\n * - i: integer. Value must be a valid 4-byte integer number\n * - l: long. Value must be a valid 8-byte long number\n * - f: float: Value must be a valid float number\n * - u: uri. Value must be a valid uniform resource identifier string\n * - cn: component name. Value must be a valid component name string\n * - ia: Integer[]. Value must be a string of comma-separated integers\n * - ial: List<Integer>. Value must be a string of comma-separated integers\n * - la: Long[]. Value must be a string of comma-separated long numbers\n * - lal: List<Long>. Value must be a string of comma-separated long numbers\n * - fa: Float[]. Value must be a string of comma-separated float numbers\n * - fal: List<Float>. Value must be a string of comma-separated float numbers\n * - sa: String[]. Value must be comma-separated strings. To embed a comma into a string,\n * escape it using \"\\,\"\n * - sal: List<String>. Value must be comma-separated strings. To embed a comma into a string,\n * escape it using \"\\,\"\n * For example: [['s', 'varName1', 'My String1'], ['s', 'varName2', 'My String2'], ['ia', 'arrName', '1,2,3,4']]\n * @property {?string} flags - Intent startup-specific flags as a hexadecimal string.\n * See https://developer.android.com/reference/android/content/Intent.html\n * for the list of available flag values (constants starting with FLAG_ACTIVITY_).\n * Flag values could be merged using the logical 'or' operation.\n * For example, 0x10200000 is the combination of two flags:\n * 0x10000000 `FLAG_ACTIVITY_NEW_TASK` | 0x00200000 `FLAG_ACTIVITY_RESET_TASK_IF_NEEDED`\n */\n\n/**\n * Starts the given activity intent.\n *\n * @param {StartActivityOptions} opts\n * @returns {string} The command output\n * @throws {Error} If there was a failure while starting the activity\n * or required options are missing\n */\ncommands.mobileStartActivity = async function mobileStartActivity (opts = {}) {\n const {\n user,\n wait,\n stop,\n windowingMode,\n activityType,\n display,\n } = opts;\n const cmd = [\n 'am', (await this.adb.getApiLevel() < API_LEVEL_ANDROID_8) ? 'start' : 'start-activity',\n ];\n if (!_.isNil(user)) {\n cmd.push('--user', user);\n }\n if (wait) {\n cmd.push('-W');\n }\n if (stop) {\n cmd.push('-S');\n }\n if (!_.isNil(windowingMode)) {\n cmd.push('--windowingMode', windowingMode);\n }\n if (!_.isNil(activityType)) {\n cmd.push('--activityType', activityType);\n }\n if (!_.isNil(display)) {\n cmd.push('--display', display);\n }\n cmd.push(...(parseIntentSpec(opts)));\n return await this.adb.shell(cmd);\n};\n\n/**\n * @typedef {Object} BroadcastOptions\n * @property {?string|number} user ['all'] - The user ID for which the broadcast is sent.\n * The `current` alias assumes the current user ID.\n * @property {?string} receiverPermission - Require receiver to hold the given permission.\n * @property {?boolean} allowBackgroundActivityStarts [false] - Whether the receiver may\n * start activities even if in the background.\n * @property {?string} intent - The name of the intent to broadcast to, for example\n * `com.some.package.name/.YourServiceSubClassName`.\n * @property {?string} action - Action name\n * @property {?string} uri - Unified resource identifier\n * @property {?string} mimeType - Mime type\n * @property {?string} identifier - Optional identifier\n * @property {?string|Array<string>} categories - One or more category names\n * @property {?string} component - Component name\n * @property {?string} package - Package name\n * @property {Array<Array<string>>} extras - Optional intent arguments.\n * See above for the detailed description.\n * @property {?string} flags - Intent startup-specific flags as a hexadecimal string.\n * See above for the detailed description.\n */\n\n\n/**\n * Send a broadcast intent.\n *\n * @param {BroadcastOptions} opts\n * @returns {string} The command output\n * @throws {Error} If there was a failure while starting the activity\n * or required options are missing\n */\ncommands.mobileBroadcast = async function mobileBroadcast (opts = {}) {\n const {\n user,\n receiverPermission,\n allowBackgroundActivityStarts,\n } = opts;\n const cmd = ['am', 'broadcast'];\n if (!_.isNil(user)) {\n cmd.push('--user', user);\n }\n if (receiverPermission) {\n cmd.push('--receiver-permission', receiverPermission);\n }\n if (allowBackgroundActivityStarts) {\n cmd.push('--allow-background-activity-starts');\n }\n cmd.push(...(parseIntentSpec(opts)));\n return await this.adb.shell(cmd);\n};\n\n/**\n * @typedef {Object} StartServiceOptions\n * @property {?string|number} user ['current'] - The user ID for which the service is started.\n * The `current` user id is used by default\n * @property {?boolean} foreground [false] - Set it to `true` if your service must be\n * started as foreground service. This option is ignored if the API level of the\n * device under test is below 26 (Android 8).\n * @property {?string} intent - The name of the service intent to start, for example\n * `com.some.package.name/.YourServiceSubClassName`.\n * @property {?string} action - Action name\n * @property {?string} uri - Unified resource identifier\n * @property {?string} mimeType - Mime type\n * @property {?string} identifier - Optional identifier\n * @property {?string|Array<string>} categories - One or more category names\n * @property {?string} component - Component name\n * @property {?string} package - Package name\n * @property {Array<Array<string>>} extras - Optional intent arguments.\n * See above for the detailed description.\n * @property {?string} flags - Intent startup-specific flags as a hexadecimal string.\n * See above for the detailed description.\n */\n\n/**\n * Starts the given service intent.\n *\n * @param {StartServiceOptions} opts\n * @returns {string} The command output\n * @throws {Error} If there was a failure while starting the service\n * or required options are missing\n */\ncommands.mobileStartService = async function mobileStartService (opts = {}) {\n const {\n user,\n foreground,\n } = opts;\n const cmd = ['am'];\n if (await this.adb.getApiLevel() < API_LEVEL_ANDROID_8) {\n cmd.push('startservice');\n } else {\n cmd.push(foreground ? 'start-foreground-service' : 'start-service');\n }\n if (!_.isNil(user)) {\n cmd.push('--user', user);\n }\n cmd.push(...(parseIntentSpec(opts)));\n return await this.adb.shell(cmd);\n};\n\n/**\n * @typedef {Object} StopServiceOptions\n * @property {string|number} user ['current'] - The user ID for which the service is running.\n * The `current` user id is used by default\n * @property {?string} intent - The name of the service intent to stop, for example\n * `com.some.package.name/.YourServiceSubClassName`.\n * @property {?string} action - Action name\n * @property {?string} uri - Unified resource identifier\n * @property {?string} mimeType - Mime type\n * @property {?string} identifier - Optional identifier\n * @property {?string|Array<string>} categories - One or more category names\n * @property {?string} component - Component name\n * @property {?string} package - Package name\n * @property {Array<Array<string>>} extras - Optional intent arguments.\n * See above for the detailed description.\n * @property {?string} flags - See above for the detailed description.\n */\n\n/**\n * Stops the given service intent.\n *\n * @param {StopServiceOptions} opts\n * @returns {string} The command output\n * @throws {Error} If there was a failure while stopping the service\n * or required options are missing\n */\ncommands.mobileStopService = async function mobileStopService (opts = {}) {\n const {\n user,\n } = opts;\n const cmd = [\n 'am',\n (await this.adb.getApiLevel() < API_LEVEL_ANDROID_8) ? 'stopservice' : 'stop-service'\n ];\n if (!_.isNil(user)) {\n cmd.push('--user', user);\n }\n cmd.push(...(parseIntentSpec(opts)));\n return await this.adb.shell(cmd);\n};\n\n\nexport { commands };\nexport default commands;\n"],"mappings":"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"}
@@ -17,4 +17,4 @@ commands.isKeyboardShown = async function isKeyboardShown() {
17
17
  };
18
18
  var _default = commands;
19
19
  exports.default = _default;
20
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kcyIsImhpZGVLZXlib2FyZCIsImFkYiIsImlzS2V5Ym9hcmRTaG93biIsImlzU29mdEtleWJvYXJkUHJlc2VudCIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsImRlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvY29tbWFuZHMva2V5Ym9hcmQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgY29tbWFuZHMgPSB7fTtcblxuY29tbWFuZHMuaGlkZUtleWJvYXJkID0gYXN5bmMgZnVuY3Rpb24gaGlkZUtleWJvYXJkICgpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYWRiLmhpZGVLZXlib2FyZCgpO1xufTtcblxuY29tbWFuZHMuaXNLZXlib2FyZFNob3duID0gYXN5bmMgZnVuY3Rpb24gaXNLZXlib2FyZFNob3duICgpIHtcbiAgY29uc3Qge2lzS2V5Ym9hcmRTaG93bn0gPSBhd2FpdCB0aGlzLmFkYi5pc1NvZnRLZXlib2FyZFByZXNlbnQoKTtcbiAgcmV0dXJuIGlzS2V5Ym9hcmRTaG93bjtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNvbW1hbmRzO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsTUFBTUEsUUFBUSxHQUFHLENBQUMsQ0FBQztBQUVuQkEsUUFBUSxDQUFDQyxZQUFZLEdBQUcsZUFBZUEsWUFBWUEsQ0FBQSxFQUFJO0VBQ3JELE9BQU8sTUFBTSxJQUFJLENBQUNDLEdBQUcsQ0FBQ0QsWUFBWSxFQUFFO0FBQ3RDLENBQUM7QUFFREQsUUFBUSxDQUFDRyxlQUFlLEdBQUcsZUFBZUEsZUFBZUEsQ0FBQSxFQUFJO0VBQzNELE1BQU07SUFBQ0E7RUFBZSxDQUFDLEdBQUcsTUFBTSxJQUFJLENBQUNELEdBQUcsQ0FBQ0UscUJBQXFCLEVBQUU7RUFDaEUsT0FBT0QsZUFBZTtBQUN4QixDQUFDO0FBQUMsSUFBQUUsUUFBQSxHQUVhTCxRQUFRO0FBQUFNLE9BQUEsQ0FBQUMsT0FBQSxHQUFBRixRQUFBIn0=
20
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kcyIsImhpZGVLZXlib2FyZCIsImFkYiIsImlzS2V5Ym9hcmRTaG93biIsImlzU29mdEtleWJvYXJkUHJlc2VudCIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsImRlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvY29tbWFuZHMva2V5Ym9hcmQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgY29tbWFuZHMgPSB7fTtcblxuY29tbWFuZHMuaGlkZUtleWJvYXJkID0gYXN5bmMgZnVuY3Rpb24gaGlkZUtleWJvYXJkICgpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYWRiLmhpZGVLZXlib2FyZCgpO1xufTtcblxuY29tbWFuZHMuaXNLZXlib2FyZFNob3duID0gYXN5bmMgZnVuY3Rpb24gaXNLZXlib2FyZFNob3duICgpIHtcbiAgY29uc3Qge2lzS2V5Ym9hcmRTaG93bn0gPSBhd2FpdCB0aGlzLmFkYi5pc1NvZnRLZXlib2FyZFByZXNlbnQoKTtcbiAgcmV0dXJuIGlzS2V5Ym9hcmRTaG93bjtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNvbW1hbmRzO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsTUFBTUEsUUFBUSxHQUFHLENBQUMsQ0FBQztBQUVuQkEsUUFBUSxDQUFDQyxZQUFZLEdBQUcsZUFBZUEsWUFBWUEsQ0FBQSxFQUFJO0VBQ3JELE9BQU8sTUFBTSxJQUFJLENBQUNDLEdBQUcsQ0FBQ0QsWUFBWSxDQUFDLENBQUM7QUFDdEMsQ0FBQztBQUVERCxRQUFRLENBQUNHLGVBQWUsR0FBRyxlQUFlQSxlQUFlQSxDQUFBLEVBQUk7RUFDM0QsTUFBTTtJQUFDQTtFQUFlLENBQUMsR0FBRyxNQUFNLElBQUksQ0FBQ0QsR0FBRyxDQUFDRSxxQkFBcUIsQ0FBQyxDQUFDO0VBQ2hFLE9BQU9ELGVBQWU7QUFDeEIsQ0FBQztBQUFDLElBQUFFLFFBQUEsR0FFYUwsUUFBUTtBQUFBTSxPQUFBLENBQUFDLE9BQUEsR0FBQUYsUUFBQSJ9
@@ -1 +1 @@
1
- {"version":3,"file":"keyboard.js","names":["commands","hideKeyboard","adb","isKeyboardShown","isSoftKeyboardPresent","_default","exports","default"],"sources":["../../../lib/commands/keyboard.js"],"sourcesContent":["const commands = {};\n\ncommands.hideKeyboard = async function hideKeyboard () {\n return await this.adb.hideKeyboard();\n};\n\ncommands.isKeyboardShown = async function isKeyboardShown () {\n const {isKeyboardShown} = await this.adb.isSoftKeyboardPresent();\n return isKeyboardShown;\n};\n\nexport default commands;\n"],"mappings":";;;;;;;AAAA,MAAMA,QAAQ,GAAG,CAAC,CAAC;AAEnBA,QAAQ,CAACC,YAAY,GAAG,eAAeA,YAAYA,CAAA,EAAI;EACrD,OAAO,MAAM,IAAI,CAACC,GAAG,CAACD,YAAY,EAAE;AACtC,CAAC;AAEDD,QAAQ,CAACG,eAAe,GAAG,eAAeA,eAAeA,CAAA,EAAI;EAC3D,MAAM;IAACA;EAAe,CAAC,GAAG,MAAM,IAAI,CAACD,GAAG,CAACE,qBAAqB,EAAE;EAChE,OAAOD,eAAe;AACxB,CAAC;AAAC,IAAAE,QAAA,GAEaL,QAAQ;AAAAM,OAAA,CAAAC,OAAA,GAAAF,QAAA"}
1
+ {"version":3,"file":"keyboard.js","names":["commands","hideKeyboard","adb","isKeyboardShown","isSoftKeyboardPresent","_default","exports","default"],"sources":["../../../lib/commands/keyboard.js"],"sourcesContent":["const commands = {};\n\ncommands.hideKeyboard = async function hideKeyboard () {\n return await this.adb.hideKeyboard();\n};\n\ncommands.isKeyboardShown = async function isKeyboardShown () {\n const {isKeyboardShown} = await this.adb.isSoftKeyboardPresent();\n return isKeyboardShown;\n};\n\nexport default commands;\n"],"mappings":";;;;;;;AAAA,MAAMA,QAAQ,GAAG,CAAC,CAAC;AAEnBA,QAAQ,CAACC,YAAY,GAAG,eAAeA,YAAYA,CAAA,EAAI;EACrD,OAAO,MAAM,IAAI,CAACC,GAAG,CAACD,YAAY,CAAC,CAAC;AACtC,CAAC;AAEDD,QAAQ,CAACG,eAAe,GAAG,eAAeA,eAAeA,CAAA,EAAI;EAC3D,MAAM;IAACA;EAAe,CAAC,GAAG,MAAM,IAAI,CAACD,GAAG,CAACE,qBAAqB,CAAC,CAAC;EAChE,OAAOD,eAAe;AACxB,CAAC;AAAC,IAAAE,QAAA,GAEaL,QAAQ;AAAAM,OAAA,CAAAC,OAAA,GAAAF,QAAA"}
@@ -119,4 +119,4 @@ commands.getLog = async function getLog(logType) {
119
119
  Object.assign(extensions, commands, helpers);
120
120
  var _default = extensions;
121
121
  exports.default = _default;
122
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9nZ2VyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfb3MiLCJfbG9kYXNoIiwiX3dzIiwiX2RyaXZlciIsIkdFVF9TRVJWRVJfTE9HU19GRUFUVVJFIiwiY29tbWFuZHMiLCJoZWxwZXJzIiwiZXh0ZW5zaW9ucyIsImV4cG9ydHMiLCJXRUJTT0NLRVRfRU5EUE9JTlQiLCJzZXNzaW9uSWQiLCJERUZBVUxUX1dTX1BBVEhOQU1FX1BSRUZJWCIsInRvTG9nUmVjb3JkIiwidGltZXN0YW1wIiwibGV2ZWwiLCJtZXNzYWdlIiwic3VwcG9ydGVkTG9nVHlwZXMiLCJsb2djYXQiLCJkZXNjcmlwdGlvbiIsImdldHRlciIsInNlbGYiLCJhZGIiLCJnZXRMb2djYXRMb2dzIiwiYnVncmVwb3J0Iiwib3V0cHV0IiwiRGF0ZSIsIm5vdyIsInNwbGl0Iiwib3MiLCJFT0wiLCJtYXAiLCJ4Iiwic2VydmVyIiwiZW5zdXJlRmVhdHVyZUVuYWJsZWQiLCJsb2ciLCJ1bndyYXAiLCJyZWNvcmQiLCJfIiwiaXNFbXB0eSIsInByZWZpeCIsIm1vYmlsZVN0YXJ0TG9nc0Jyb2FkY2FzdCIsInBhdGhuYW1lIiwiZ2V0V2ViU29ja2V0SGFuZGxlcnMiLCJkZWJ1ZyIsImluZm8iLCJKU09OIiwic3RyaW5naWZ5IiwiYWRkcmVzcyIsIndzcyIsIldlYlNvY2tldCIsIlNlcnZlciIsIm5vU2VydmVyIiwib24iLCJ3cyIsInJlcSIsIl9yZXEkY29ubmVjdGlvbiIsInJlbW90ZUlwIiwiaGVhZGVycyIsImNvbm5lY3Rpb24iLCJyZW1vdGVBZGRyZXNzIiwiX2xvZ2NhdFdlYnNvY2tldExpc3RlbmVyIiwibG9nUmVjb3JkIiwicmVhZHlTdGF0ZSIsIk9QRU4iLCJzZW5kIiwic2V0TG9nY2F0TGlzdGVuZXIiLCJjb2RlIiwicmVhc29uIiwicmVtb3ZlTG9nY2F0TGlzdGVuZXIiLCJpZ24iLCJjbG9zZU1zZyIsInRvU3RyaW5nIiwiYWRkV2ViU29ja2V0SGFuZGxlciIsIm1vYmlsZVN0b3BMb2dzQnJvYWRjYXN0IiwicmVtb3ZlV2ViU29ja2V0SGFuZGxlciIsImdldExvZ1R5cGVzIiwibmF0aXZlTG9nVHlwZXMiLCJCYXNlRHJpdmVyIiwicHJvdG90eXBlIiwiY2FsbCIsImlzV2ViQ29udGV4dCIsIndlYkxvZ1R5cGVzIiwiY2hyb21lZHJpdmVyIiwiandwcm94eSIsImNvbW1hbmQiLCJnZXRMb2ciLCJsb2dUeXBlIiwia2V5cyIsImluY2x1ZGVzIiwidHlwZSIsIk9iamVjdCIsImFzc2lnbiIsIl9kZWZhdWx0IiwiZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9jb21tYW5kcy9sb2cuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGxvZyBmcm9tICcuLi9sb2dnZXInO1xuaW1wb3J0IG9zIGZyb20gJ29zJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgV2ViU29ja2V0IGZyb20gJ3dzJztcbmltcG9ydCB7IERFRkFVTFRfV1NfUEFUSE5BTUVfUFJFRklYLCBCYXNlRHJpdmVyIH0gZnJvbSAnYXBwaXVtL2RyaXZlcic7XG5cbmNvbnN0IEdFVF9TRVJWRVJfTE9HU19GRUFUVVJFID0gJ2dldF9zZXJ2ZXJfbG9ncyc7XG5cbmxldCBjb21tYW5kcyA9IHt9LCBoZWxwZXJzID0ge30sIGV4dGVuc2lvbnMgPSB7fTtcblxuY29uc3QgV0VCU09DS0VUX0VORFBPSU5UID0gKHNlc3Npb25JZCkgPT4gYCR7REVGQVVMVF9XU19QQVRITkFNRV9QUkVGSVh9L3Nlc3Npb24vJHtzZXNzaW9uSWR9L2FwcGl1bS9kZXZpY2UvbG9nY2F0YDtcblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL1NlbGVuaXVtSFEvc2VsZW5pdW0vYmxvYi8wZDQyNTY3NmIzYzlkZjI2MWRkNjQxOTE3Zjg2N2Q0ZDVjZTc3NzRkL2phdmEvY2xpZW50L3NyYy9vcmcvb3BlbnFhL3NlbGVuaXVtL2xvZ2dpbmcvTG9nRW50cnkuamF2YVxuZnVuY3Rpb24gdG9Mb2dSZWNvcmQgKHRpbWVzdGFtcCwgbGV2ZWwsIG1lc3NhZ2UpIHtcbiAgcmV0dXJuIHtcbiAgICB0aW1lc3RhbXAsXG4gICAgbGV2ZWwsXG4gICAgbWVzc2FnZSxcbiAgfTtcbn1cblxuZXh0ZW5zaW9ucy5zdXBwb3J0ZWRMb2dUeXBlcyA9IHtcbiAgbG9nY2F0OiB7XG4gICAgZGVzY3JpcHRpb246ICdMb2dzIGZvciBBbmRyb2lkIGFwcGxpY2F0aW9ucyBvbiByZWFsIGRldmljZSBhbmQgZW11bGF0b3JzIHZpYSBBREInLFxuICAgIGdldHRlcjogYXN5bmMgKHNlbGYpID0+IGF3YWl0IHNlbGYuYWRiLmdldExvZ2NhdExvZ3MoKSxcbiAgfSxcbiAgYnVncmVwb3J0OiB7XG4gICAgZGVzY3JpcHRpb246IGAnYWRiIGJ1Z3JlcG9ydCcgb3V0cHV0IGZvciBhZHZhbmNlZCBpc3N1ZXMgZGlhZ25vc3RpY2AsXG4gICAgZ2V0dGVyOiBhc3luYyAoc2VsZikgPT4ge1xuICAgICAgY29uc3Qgb3V0cHV0ID0gYXdhaXQgc2VsZi5hZGIuYnVncmVwb3J0KCk7XG4gICAgICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xuICAgICAgcmV0dXJuIG91dHB1dC5zcGxpdChvcy5FT0wpXG4gICAgICAgIC5tYXAoKHgpID0+IHRvTG9nUmVjb3JkKHRpbWVzdGFtcCwgJ0FMTCcsIHgpKTtcbiAgICB9LFxuICB9LFxuICBzZXJ2ZXI6IHtcbiAgICBkZXNjcmlwdGlvbjogJ0FwcGl1bSBzZXJ2ZXIgbG9ncycsXG4gICAgZ2V0dGVyOiAoc2VsZikgPT4ge1xuICAgICAgc2VsZi5lbnN1cmVGZWF0dXJlRW5hYmxlZChHRVRfU0VSVkVSX0xPR1NfRkVBVFVSRSk7XG4gICAgICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xuICAgICAgcmV0dXJuIGxvZy51bndyYXAoKS5yZWNvcmRcbiAgICAgICAgLm1hcCgoeCkgPT4gdG9Mb2dSZWNvcmQodGltZXN0YW1wLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQUxMJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXy5pc0VtcHR5KHgucHJlZml4KSA/IHgubWVzc2FnZSA6IGBbJHt4LnByZWZpeH1dICR7eC5tZXNzYWdlfWApXG4gICAgICAgICk7XG4gICAgfSxcbiAgfSxcbn07XG5cbi8qKlxuICogU3RhcnRzIEFuZHJvaWQgbG9nY2F0IGJyb2FkY2FzdCB3ZWJzb2NrZXQgb24gdGhlIHNhbWUgaG9zdCBhbmQgcG9ydFxuICogd2hlcmUgQXBwaXVtIHNlcnZlciBpcyBydW5uaW5nIGF0IGAvd3Mvc2Vzc2lvbi86c2Vzc2lvbklkOi9hcHBpdW0vbG9nY2F0YCBlbmRwb2ludC4gVGhlIG1ldGhvZFxuICogd2lsbCByZXR1cm4gaW1tZWRpYXRlbHkgaWYgdGhlIHdlYiBzb2NrZXQgaXMgYWxyZWFkeSBsaXN0ZW5pbmcuXG4gKlxuICogRWFjaCBjb25uZWN0ZWQgd2Vic29ja2V0IGxpc3RlbmVyIHdpbGwgcmVjZWl2ZSBsb2djYXQgbG9nIGxpbmVzXG4gKiBhcyBzb29uIGFzIHRoZXkgYXJlIHZpc2libGUgdG8gQXBwaXVtLlxuICovXG5jb21tYW5kcy5tb2JpbGVTdGFydExvZ3NCcm9hZGNhc3QgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVTdGFydExvZ3NCcm9hZGNhc3QgKCkge1xuICBjb25zdCBwYXRobmFtZSA9IFdFQlNPQ0tFVF9FTkRQT0lOVCh0aGlzLnNlc3Npb25JZCk7XG4gIGlmICghXy5pc0VtcHR5KGF3YWl0IHRoaXMuc2VydmVyLmdldFdlYlNvY2tldEhhbmRsZXJzKHBhdGhuYW1lKSkpIHtcbiAgICBsb2cuZGVidWcoYFRoZSBsb2djYXQgYnJvYWRjYXN0aW5nIHdlYiBzb2NrZXQgc2VydmVyIGlzIGFscmVhZHkgbGlzdGVuaW5nIGF0ICR7cGF0aG5hbWV9YCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgbG9nLmluZm8oYFN0YXJ0aW5nIGxvZ2NhdCBicm9hZGNhc3Rpbmcgb24gd2ViIHNvY2tldCBzZXJ2ZXIgYCArXG4gICAgYCR7SlNPTi5zdHJpbmdpZnkodGhpcy5zZXJ2ZXIuYWRkcmVzcygpKX0gdG8gJHtwYXRobmFtZX1gKTtcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3dlYnNvY2tldHMvd3MvYmxvYi9tYXN0ZXIvZG9jL3dzLm1kXG4gIGNvbnN0IHdzcyA9IG5ldyBXZWJTb2NrZXQuU2VydmVyKHtcbiAgICBub1NlcnZlcjogdHJ1ZSxcbiAgfSk7XG4gIHdzcy5vbignY29ubmVjdGlvbicsICh3cywgcmVxKSA9PiB7XG4gICAgaWYgKHJlcSkge1xuICAgICAgY29uc3QgcmVtb3RlSXAgPSBfLmlzRW1wdHkocmVxLmhlYWRlcnNbJ3gtZm9yd2FyZGVkLWZvciddKVxuICAgICAgICA/IHJlcS5jb25uZWN0aW9uPy5yZW1vdGVBZGRyZXNzXG4gICAgICAgIDogcmVxLmhlYWRlcnNbJ3gtZm9yd2FyZGVkLWZvciddO1xuICAgICAgbG9nLmRlYnVnKGBFc3RhYmxpc2hlZCBhIG5ldyBsb2djYXQgbGlzdGVuZXIgd2ViIHNvY2tldCBjb25uZWN0aW9uIGZyb20gJHtyZW1vdGVJcH1gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9nLmRlYnVnKCdFc3RhYmxpc2hlZCBhIG5ldyBsb2djYXQgbGlzdGVuZXIgd2ViIHNvY2tldCBjb25uZWN0aW9uJyk7XG4gICAgfVxuXG4gICAgaWYgKF8uaXNFbXB0eSh0aGlzLl9sb2djYXRXZWJzb2NrZXRMaXN0ZW5lcikpIHtcbiAgICAgIHRoaXMuX2xvZ2NhdFdlYnNvY2tldExpc3RlbmVyID0gKGxvZ1JlY29yZCkgPT4ge1xuICAgICAgICBpZiAod3M/LnJlYWR5U3RhdGUgPT09IFdlYlNvY2tldC5PUEVOKSB7XG4gICAgICAgICAgd3Muc2VuZChsb2dSZWNvcmQubWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICAgIHRoaXMuYWRiLnNldExvZ2NhdExpc3RlbmVyKHRoaXMuX2xvZ2NhdFdlYnNvY2tldExpc3RlbmVyKTtcblxuICAgIHdzLm9uKCdjbG9zZScsIChjb2RlLCByZWFzb24pID0+IHtcbiAgICAgIGlmICghXy5pc0VtcHR5KHRoaXMuX2xvZ2NhdFdlYnNvY2tldExpc3RlbmVyKSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHRoaXMuYWRiLnJlbW92ZUxvZ2NhdExpc3RlbmVyKHRoaXMuX2xvZ2NhdFdlYnNvY2tldExpc3RlbmVyKTtcbiAgICAgICAgfSBjYXRjaCAoaWduKSB7fVxuICAgICAgICB0aGlzLl9sb2djYXRXZWJzb2NrZXRMaXN0ZW5lciA9IG51bGw7XG4gICAgICB9XG5cbiAgICAgIGxldCBjbG9zZU1zZyA9ICdMb2djYXQgbGlzdGVuZXIgd2ViIHNvY2tldCBpcyBjbG9zZWQuJztcbiAgICAgIGlmICghXy5pc0VtcHR5KGNvZGUpKSB7XG4gICAgICAgIGNsb3NlTXNnICs9IGAgQ29kZTogJHtjb2RlfS5gO1xuICAgICAgfVxuICAgICAgaWYgKCFfLmlzRW1wdHkocmVhc29uKSkge1xuICAgICAgICBjbG9zZU1zZyArPSBgIFJlYXNvbjogJHtyZWFzb24udG9TdHJpbmcoKX0uYDtcbiAgICAgIH1cbiAgICAgIGxvZy5kZWJ1ZyhjbG9zZU1zZyk7XG4gICAgfSk7XG4gIH0pO1xuICBhd2FpdCB0aGlzLnNlcnZlci5hZGRXZWJTb2NrZXRIYW5kbGVyKHBhdGhuYW1lLCB3c3MpO1xufTtcblxuLyoqXG4gKiBTdG9wcyB0aGUgcHJldmlvdXNseSBzdGFydGVkIGxvZ2NhdCBicm9hZGNhc3Rpbmcgd2Vzb2NrZXQgc2VydmVyLlxuICogVGhpcyBtZXRob2Qgd2lsbCByZXR1cm4gaW1tZWRpYXRlbHkgaWYgbm8gc2VydmVyIGlzIHJ1bm5pbmcuXG4gKi9cbmNvbW1hbmRzLm1vYmlsZVN0b3BMb2dzQnJvYWRjYXN0ID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlU3RvcExvZ3NCcm9hZGNhc3QgKCkge1xuICBjb25zdCBwYXRobmFtZSA9IFdFQlNPQ0tFVF9FTkRQT0lOVCh0aGlzLnNlc3Npb25JZCk7XG4gIGlmIChfLmlzRW1wdHkoYXdhaXQgdGhpcy5zZXJ2ZXIuZ2V0V2ViU29ja2V0SGFuZGxlcnMocGF0aG5hbWUpKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGxvZy5kZWJ1ZyhgU3RvcHBpbmcgbG9nY2F0IGJyb2FkY2FzdGluZyBvbiB3ZWIgc29ja2V0IHNlcnZlciBgICtcbiAgICBgJHtKU09OLnN0cmluZ2lmeSh0aGlzLnNlcnZlci5hZGRyZXNzKCkpfSB0byAke3BhdGhuYW1lfWApO1xuICBhd2FpdCB0aGlzLnNlcnZlci5yZW1vdmVXZWJTb2NrZXRIYW5kbGVyKHBhdGhuYW1lKTtcbn07XG5cbmNvbW1hbmRzLmdldExvZ1R5cGVzID0gYXN5bmMgZnVuY3Rpb24gZ2V0TG9nVHlwZXMgKCkge1xuICBjb25zdCBuYXRpdmVMb2dUeXBlcyA9IGF3YWl0IEJhc2VEcml2ZXIucHJvdG90eXBlLmdldExvZ1R5cGVzLmNhbGwodGhpcyk7XG4gIGlmICh0aGlzLmlzV2ViQ29udGV4dCgpKSB7XG4gICAgY29uc3Qgd2ViTG9nVHlwZXMgPSBhd2FpdCB0aGlzLmNocm9tZWRyaXZlci5qd3Byb3h5LmNvbW1hbmQoJy9sb2cvdHlwZXMnLCAnR0VUJyk7XG4gICAgcmV0dXJuIFsuLi5uYXRpdmVMb2dUeXBlcywgLi4ud2ViTG9nVHlwZXNdO1xuICB9XG4gIHJldHVybiBuYXRpdmVMb2dUeXBlcztcbn07XG5cbmNvbW1hbmRzLmdldExvZyA9IGFzeW5jIGZ1bmN0aW9uIGdldExvZyAobG9nVHlwZSkge1xuICBpZiAodGhpcy5pc1dlYkNvbnRleHQoKSAmJiAhXy5rZXlzKHRoaXMuc3VwcG9ydGVkTG9nVHlwZXMpLmluY2x1ZGVzKGxvZ1R5cGUpKSB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuY2hyb21lZHJpdmVyLmp3cHJveHkuY29tbWFuZCgnL2xvZycsICdQT1NUJywge3R5cGU6IGxvZ1R5cGV9KTtcbiAgfVxuICByZXR1cm4gYXdhaXQgQmFzZURyaXZlci5wcm90b3R5cGUuZ2V0TG9nLmNhbGwodGhpcywgbG9nVHlwZSk7XG59O1xuXG5PYmplY3QuYXNzaWduKGV4dGVuc2lvbnMsIGNvbW1hbmRzLCBoZWxwZXJzKTtcbmV4cG9ydCB7IGNvbW1hbmRzLCBoZWxwZXJzIH07XG5leHBvcnQgZGVmYXVsdCBleHRlbnNpb25zO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLEdBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLE9BQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLEdBQUEsR0FBQUosc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFJLE9BQUEsR0FBQUosT0FBQTtBQUVBLE1BQU1LLHVCQUF1QixHQUFHLGlCQUFpQjtBQUVqRCxJQUFJQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO0VBQUVDLE9BQU8sR0FBRyxDQUFDLENBQUM7RUFBRUMsVUFBVSxHQUFHLENBQUMsQ0FBQztBQUFDQyxPQUFBLENBQUFGLE9BQUEsR0FBQUEsT0FBQTtBQUFBRSxPQUFBLENBQUFILFFBQUEsR0FBQUEsUUFBQTtBQUVqRCxNQUFNSSxrQkFBa0IsR0FBSUMsU0FBUyxJQUFNLEdBQUVDLGtDQUEyQixZQUFXRCxTQUFVLHVCQUFzQjtBQUduSCxTQUFTRSxXQUFXQSxDQUFFQyxTQUFTLEVBQUVDLEtBQUssRUFBRUMsT0FBTyxFQUFFO0VBQy9DLE9BQU87SUFDTEYsU0FBUztJQUNUQyxLQUFLO0lBQ0xDO0VBQ0YsQ0FBQztBQUNIO0FBRUFSLFVBQVUsQ0FBQ1MsaUJBQWlCLEdBQUc7RUFDN0JDLE1BQU0sRUFBRTtJQUNOQyxXQUFXLEVBQUUsb0VBQW9FO0lBQ2pGQyxNQUFNLEVBQUUsTUFBT0MsSUFBSSxJQUFLLE1BQU1BLElBQUksQ0FBQ0MsR0FBRyxDQUFDQyxhQUFhO0VBQ3RELENBQUM7RUFDREMsU0FBUyxFQUFFO0lBQ1RMLFdBQVcsRUFBRyx1REFBc0Q7SUFDcEVDLE1BQU0sRUFBRSxNQUFPQyxJQUFJLElBQUs7TUFDdEIsTUFBTUksTUFBTSxHQUFHLE1BQU1K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
122
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9nZ2VyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfb3MiLCJfbG9kYXNoIiwiX3dzIiwiX2RyaXZlciIsIkdFVF9TRVJWRVJfTE9HU19GRUFUVVJFIiwiY29tbWFuZHMiLCJoZWxwZXJzIiwiZXh0ZW5zaW9ucyIsImV4cG9ydHMiLCJXRUJTT0NLRVRfRU5EUE9JTlQiLCJzZXNzaW9uSWQiLCJERUZBVUxUX1dTX1BBVEhOQU1FX1BSRUZJWCIsInRvTG9nUmVjb3JkIiwidGltZXN0YW1wIiwibGV2ZWwiLCJtZXNzYWdlIiwic3VwcG9ydGVkTG9nVHlwZXMiLCJsb2djYXQiLCJkZXNjcmlwdGlvbiIsImdldHRlciIsInNlbGYiLCJhZGIiLCJnZXRMb2djYXRMb2dzIiwiYnVncmVwb3J0Iiwib3V0cHV0IiwiRGF0ZSIsIm5vdyIsInNwbGl0Iiwib3MiLCJFT0wiLCJtYXAiLCJ4Iiwic2VydmVyIiwiZW5zdXJlRmVhdHVyZUVuYWJsZWQiLCJsb2ciLCJ1bndyYXAiLCJyZWNvcmQiLCJfIiwiaXNFbXB0eSIsInByZWZpeCIsIm1vYmlsZVN0YXJ0TG9nc0Jyb2FkY2FzdCIsInBhdGhuYW1lIiwiZ2V0V2ViU29ja2V0SGFuZGxlcnMiLCJkZWJ1ZyIsImluZm8iLCJKU09OIiwic3RyaW5naWZ5IiwiYWRkcmVzcyIsIndzcyIsIldlYlNvY2tldCIsIlNlcnZlciIsIm5vU2VydmVyIiwib24iLCJ3cyIsInJlcSIsIl9yZXEkY29ubmVjdGlvbiIsInJlbW90ZUlwIiwiaGVhZGVycyIsImNvbm5lY3Rpb24iLCJyZW1vdGVBZGRyZXNzIiwiX2xvZ2NhdFdlYnNvY2tldExpc3RlbmVyIiwibG9nUmVjb3JkIiwicmVhZHlTdGF0ZSIsIk9QRU4iLCJzZW5kIiwic2V0TG9nY2F0TGlzdGVuZXIiLCJjb2RlIiwicmVhc29uIiwicmVtb3ZlTG9nY2F0TGlzdGVuZXIiLCJpZ24iLCJjbG9zZU1zZyIsInRvU3RyaW5nIiwiYWRkV2ViU29ja2V0SGFuZGxlciIsIm1vYmlsZVN0b3BMb2dzQnJvYWRjYXN0IiwicmVtb3ZlV2ViU29ja2V0SGFuZGxlciIsImdldExvZ1R5cGVzIiwibmF0aXZlTG9nVHlwZXMiLCJCYXNlRHJpdmVyIiwicHJvdG90eXBlIiwiY2FsbCIsImlzV2ViQ29udGV4dCIsIndlYkxvZ1R5cGVzIiwiY2hyb21lZHJpdmVyIiwiandwcm94eSIsImNvbW1hbmQiLCJnZXRMb2ciLCJsb2dUeXBlIiwia2V5cyIsImluY2x1ZGVzIiwidHlwZSIsIk9iamVjdCIsImFzc2lnbiIsIl9kZWZhdWx0IiwiZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9jb21tYW5kcy9sb2cuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGxvZyBmcm9tICcuLi9sb2dnZXInO1xuaW1wb3J0IG9zIGZyb20gJ29zJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgV2ViU29ja2V0IGZyb20gJ3dzJztcbmltcG9ydCB7IERFRkFVTFRfV1NfUEFUSE5BTUVfUFJFRklYLCBCYXNlRHJpdmVyIH0gZnJvbSAnYXBwaXVtL2RyaXZlcic7XG5cbmNvbnN0IEdFVF9TRVJWRVJfTE9HU19GRUFUVVJFID0gJ2dldF9zZXJ2ZXJfbG9ncyc7XG5cbmxldCBjb21tYW5kcyA9IHt9LCBoZWxwZXJzID0ge30sIGV4dGVuc2lvbnMgPSB7fTtcblxuY29uc3QgV0VCU09DS0VUX0VORFBPSU5UID0gKHNlc3Npb25JZCkgPT4gYCR7REVGQVVMVF9XU19QQVRITkFNRV9QUkVGSVh9L3Nlc3Npb24vJHtzZXNzaW9uSWR9L2FwcGl1bS9kZXZpY2UvbG9nY2F0YDtcblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL1NlbGVuaXVtSFEvc2VsZW5pdW0vYmxvYi8wZDQyNTY3NmIzYzlkZjI2MWRkNjQxOTE3Zjg2N2Q0ZDVjZTc3NzRkL2phdmEvY2xpZW50L3NyYy9vcmcvb3BlbnFhL3NlbGVuaXVtL2xvZ2dpbmcvTG9nRW50cnkuamF2YVxuZnVuY3Rpb24gdG9Mb2dSZWNvcmQgKHRpbWVzdGFtcCwgbGV2ZWwsIG1lc3NhZ2UpIHtcbiAgcmV0dXJuIHtcbiAgICB0aW1lc3RhbXAsXG4gICAgbGV2ZWwsXG4gICAgbWVzc2FnZSxcbiAgfTtcbn1cblxuZXh0ZW5zaW9ucy5zdXBwb3J0ZWRMb2dUeXBlcyA9IHtcbiAgbG9nY2F0OiB7XG4gICAgZGVzY3JpcHRpb246ICdMb2dzIGZvciBBbmRyb2lkIGFwcGxpY2F0aW9ucyBvbiByZWFsIGRldmljZSBhbmQgZW11bGF0b3JzIHZpYSBBREInLFxuICAgIGdldHRlcjogYXN5bmMgKHNlbGYpID0+IGF3YWl0IHNlbGYuYWRiLmdldExvZ2NhdExvZ3MoKSxcbiAgfSxcbiAgYnVncmVwb3J0OiB7XG4gICAgZGVzY3JpcHRpb246IGAnYWRiIGJ1Z3JlcG9ydCcgb3V0cHV0IGZvciBhZHZhbmNlZCBpc3N1ZXMgZGlhZ25vc3RpY2AsXG4gICAgZ2V0dGVyOiBhc3luYyAoc2VsZikgPT4ge1xuICAgICAgY29uc3Qgb3V0cHV0ID0gYXdhaXQgc2VsZi5hZGIuYnVncmVwb3J0KCk7XG4gICAgICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xuICAgICAgcmV0dXJuIG91dHB1dC5zcGxpdChvcy5FT0wpXG4gICAgICAgIC5tYXAoKHgpID0+IHRvTG9nUmVjb3JkKHRpbWVzdGFtcCwgJ0FMTCcsIHgpKTtcbiAgICB9LFxuICB9LFxuICBzZXJ2ZXI6IHtcbiAgICBkZXNjcmlwdGlvbjogJ0FwcGl1bSBzZXJ2ZXIgbG9ncycsXG4gICAgZ2V0dGVyOiAoc2VsZikgPT4ge1xuICAgICAgc2VsZi5lbnN1cmVGZWF0dXJlRW5hYmxlZChHRVRfU0VSVkVSX0xPR1NfRkVBVFVSRSk7XG4gICAgICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xuICAgICAgcmV0dXJuIGxvZy51bndyYXAoKS5yZWNvcmRcbiAgICAgICAgLm1hcCgoeCkgPT4gdG9Mb2dSZWNvcmQodGltZXN0YW1wLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQUxMJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXy5pc0VtcHR5KHgucHJlZml4KSA/IHgubWVzc2FnZSA6IGBbJHt4LnByZWZpeH1dICR7eC5tZXNzYWdlfWApXG4gICAgICAgICk7XG4gICAgfSxcbiAgfSxcbn07XG5cbi8qKlxuICogU3RhcnRzIEFuZHJvaWQgbG9nY2F0IGJyb2FkY2FzdCB3ZWJzb2NrZXQgb24gdGhlIHNhbWUgaG9zdCBhbmQgcG9ydFxuICogd2hlcmUgQXBwaXVtIHNlcnZlciBpcyBydW5uaW5nIGF0IGAvd3Mvc2Vzc2lvbi86c2Vzc2lvbklkOi9hcHBpdW0vbG9nY2F0YCBlbmRwb2ludC4gVGhlIG1ldGhvZFxuICogd2lsbCByZXR1cm4gaW1tZWRpYXRlbHkgaWYgdGhlIHdlYiBzb2NrZXQgaXMgYWxyZWFkeSBsaXN0ZW5pbmcuXG4gKlxuICogRWFjaCBjb25uZWN0ZWQgd2Vic29ja2V0IGxpc3RlbmVyIHdpbGwgcmVjZWl2ZSBsb2djYXQgbG9nIGxpbmVzXG4gKiBhcyBzb29uIGFzIHRoZXkgYXJlIHZpc2libGUgdG8gQXBwaXVtLlxuICovXG5jb21tYW5kcy5tb2JpbGVTdGFydExvZ3NCcm9hZGNhc3QgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVTdGFydExvZ3NCcm9hZGNhc3QgKCkge1xuICBjb25zdCBwYXRobmFtZSA9IFdFQlNPQ0tFVF9FTkRQT0lOVCh0aGlzLnNlc3Npb25JZCk7XG4gIGlmICghXy5pc0VtcHR5KGF3YWl0IHRoaXMuc2VydmVyLmdldFdlYlNvY2tldEhhbmRsZXJzKHBhdGhuYW1lKSkpIHtcbiAgICBsb2cuZGVidWcoYFRoZSBsb2djYXQgYnJvYWRjYXN0aW5nIHdlYiBzb2NrZXQgc2VydmVyIGlzIGFscmVhZHkgbGlzdGVuaW5nIGF0ICR7cGF0aG5hbWV9YCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgbG9nLmluZm8oYFN0YXJ0aW5nIGxvZ2NhdCBicm9hZGNhc3Rpbmcgb24gd2ViIHNvY2tldCBzZXJ2ZXIgYCArXG4gICAgYCR7SlNPTi5zdHJpbmdpZnkodGhpcy5zZXJ2ZXIuYWRkcmVzcygpKX0gdG8gJHtwYXRobmFtZX1gKTtcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3dlYnNvY2tldHMvd3MvYmxvYi9tYXN0ZXIvZG9jL3dzLm1kXG4gIGNvbnN0IHdzcyA9IG5ldyBXZWJTb2NrZXQuU2VydmVyKHtcbiAgICBub1NlcnZlcjogdHJ1ZSxcbiAgfSk7XG4gIHdzcy5vbignY29ubmVjdGlvbicsICh3cywgcmVxKSA9PiB7XG4gICAgaWYgKHJlcSkge1xuICAgICAgY29uc3QgcmVtb3RlSXAgPSBfLmlzRW1wdHkocmVxLmhlYWRlcnNbJ3gtZm9yd2FyZGVkLWZvciddKVxuICAgICAgICA/IHJlcS5jb25uZWN0aW9uPy5yZW1vdGVBZGRyZXNzXG4gICAgICAgIDogcmVxLmhlYWRlcnNbJ3gtZm9yd2FyZGVkLWZvciddO1xuICAgICAgbG9nLmRlYnVnKGBFc3RhYmxpc2hlZCBhIG5ldyBsb2djYXQgbGlzdGVuZXIgd2ViIHNvY2tldCBjb25uZWN0aW9uIGZyb20gJHtyZW1vdGVJcH1gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9nLmRlYnVnKCdFc3RhYmxpc2hlZCBhIG5ldyBsb2djYXQgbGlzdGVuZXIgd2ViIHNvY2tldCBjb25uZWN0aW9uJyk7XG4gICAgfVxuXG4gICAgaWYgKF8uaXNFbXB0eSh0aGlzLl9sb2djYXRXZWJzb2NrZXRMaXN0ZW5lcikpIHtcbiAgICAgIHRoaXMuX2xvZ2NhdFdlYnNvY2tldExpc3RlbmVyID0gKGxvZ1JlY29yZCkgPT4ge1xuICAgICAgICBpZiAod3M/LnJlYWR5U3RhdGUgPT09IFdlYlNvY2tldC5PUEVOKSB7XG4gICAgICAgICAgd3Muc2VuZChsb2dSZWNvcmQubWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICAgIHRoaXMuYWRiLnNldExvZ2NhdExpc3RlbmVyKHRoaXMuX2xvZ2NhdFdlYnNvY2tldExpc3RlbmVyKTtcblxuICAgIHdzLm9uKCdjbG9zZScsIChjb2RlLCByZWFzb24pID0+IHtcbiAgICAgIGlmICghXy5pc0VtcHR5KHRoaXMuX2xvZ2NhdFdlYnNvY2tldExpc3RlbmVyKSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHRoaXMuYWRiLnJlbW92ZUxvZ2NhdExpc3RlbmVyKHRoaXMuX2xvZ2NhdFdlYnNvY2tldExpc3RlbmVyKTtcbiAgICAgICAgfSBjYXRjaCAoaWduKSB7fVxuICAgICAgICB0aGlzLl9sb2djYXRXZWJzb2NrZXRMaXN0ZW5lciA9IG51bGw7XG4gICAgICB9XG5cbiAgICAgIGxldCBjbG9zZU1zZyA9ICdMb2djYXQgbGlzdGVuZXIgd2ViIHNvY2tldCBpcyBjbG9zZWQuJztcbiAgICAgIGlmICghXy5pc0VtcHR5KGNvZGUpKSB7XG4gICAgICAgIGNsb3NlTXNnICs9IGAgQ29kZTogJHtjb2RlfS5gO1xuICAgICAgfVxuICAgICAgaWYgKCFfLmlzRW1wdHkocmVhc29uKSkge1xuICAgICAgICBjbG9zZU1zZyArPSBgIFJlYXNvbjogJHtyZWFzb24udG9TdHJpbmcoKX0uYDtcbiAgICAgIH1cbiAgICAgIGxvZy5kZWJ1ZyhjbG9zZU1zZyk7XG4gICAgfSk7XG4gIH0pO1xuICBhd2FpdCB0aGlzLnNlcnZlci5hZGRXZWJTb2NrZXRIYW5kbGVyKHBhdGhuYW1lLCB3c3MpO1xufTtcblxuLyoqXG4gKiBTdG9wcyB0aGUgcHJldmlvdXNseSBzdGFydGVkIGxvZ2NhdCBicm9hZGNhc3Rpbmcgd2Vzb2NrZXQgc2VydmVyLlxuICogVGhpcyBtZXRob2Qgd2lsbCByZXR1cm4gaW1tZWRpYXRlbHkgaWYgbm8gc2VydmVyIGlzIHJ1bm5pbmcuXG4gKi9cbmNvbW1hbmRzLm1vYmlsZVN0b3BMb2dzQnJvYWRjYXN0ID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlU3RvcExvZ3NCcm9hZGNhc3QgKCkge1xuICBjb25zdCBwYXRobmFtZSA9IFdFQlNPQ0tFVF9FTkRQT0lOVCh0aGlzLnNlc3Npb25JZCk7XG4gIGlmIChfLmlzRW1wdHkoYXdhaXQgdGhpcy5zZXJ2ZXIuZ2V0V2ViU29ja2V0SGFuZGxlcnMocGF0aG5hbWUpKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGxvZy5kZWJ1ZyhgU3RvcHBpbmcgbG9nY2F0IGJyb2FkY2FzdGluZyBvbiB3ZWIgc29ja2V0IHNlcnZlciBgICtcbiAgICBgJHtKU09OLnN0cmluZ2lmeSh0aGlzLnNlcnZlci5hZGRyZXNzKCkpfSB0byAke3BhdGhuYW1lfWApO1xuICBhd2FpdCB0aGlzLnNlcnZlci5yZW1vdmVXZWJTb2NrZXRIYW5kbGVyKHBhdGhuYW1lKTtcbn07XG5cbmNvbW1hbmRzLmdldExvZ1R5cGVzID0gYXN5bmMgZnVuY3Rpb24gZ2V0TG9nVHlwZXMgKCkge1xuICBjb25zdCBuYXRpdmVMb2dUeXBlcyA9IGF3YWl0IEJhc2VEcml2ZXIucHJvdG90eXBlLmdldExvZ1R5cGVzLmNhbGwodGhpcyk7XG4gIGlmICh0aGlzLmlzV2ViQ29udGV4dCgpKSB7XG4gICAgY29uc3Qgd2ViTG9nVHlwZXMgPSBhd2FpdCB0aGlzLmNocm9tZWRyaXZlci5qd3Byb3h5LmNvbW1hbmQoJy9sb2cvdHlwZXMnLCAnR0VUJyk7XG4gICAgcmV0dXJuIFsuLi5uYXRpdmVMb2dUeXBlcywgLi4ud2ViTG9nVHlwZXNdO1xuICB9XG4gIHJldHVybiBuYXRpdmVMb2dUeXBlcztcbn07XG5cbmNvbW1hbmRzLmdldExvZyA9IGFzeW5jIGZ1bmN0aW9uIGdldExvZyAobG9nVHlwZSkge1xuICBpZiAodGhpcy5pc1dlYkNvbnRleHQoKSAmJiAhXy5rZXlzKHRoaXMuc3VwcG9ydGVkTG9nVHlwZXMpLmluY2x1ZGVzKGxvZ1R5cGUpKSB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuY2hyb21lZHJpdmVyLmp3cHJveHkuY29tbWFuZCgnL2xvZycsICdQT1NUJywge3R5cGU6IGxvZ1R5cGV9KTtcbiAgfVxuICByZXR1cm4gYXdhaXQgQmFzZURyaXZlci5wcm90b3R5cGUuZ2V0TG9nLmNhbGwodGhpcywgbG9nVHlwZSk7XG59O1xuXG5PYmplY3QuYXNzaWduKGV4dGVuc2lvbnMsIGNvbW1hbmRzLCBoZWxwZXJzKTtcbmV4cG9ydCB7IGNvbW1hbmRzLCBoZWxwZXJzIH07XG5leHBvcnQgZGVmYXVsdCBleHRlbnNpb25zO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLEdBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLE9BQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLEdBQUEsR0FBQUosc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFJLE9BQUEsR0FBQUosT0FBQTtBQUVBLE1BQU1LLHVCQUF1QixHQUFHLGlCQUFpQjtBQUVqRCxJQUFJQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO0VBQUVDLE9BQU8sR0FBRyxDQUFDLENBQUM7RUFBRUMsVUFBVSxHQUFHLENBQUMsQ0FBQztBQUFDQyxPQUFBLENBQUFGLE9BQUEsR0FBQUEsT0FBQTtBQUFBRSxPQUFBLENBQUFILFFBQUEsR0FBQUEsUUFBQTtBQUVqRCxNQUFNSSxrQkFBa0IsR0FBSUMsU0FBUyxJQUFNLEdBQUVDLGtDQUEyQixZQUFXRCxTQUFVLHVCQUFzQjtBQUduSCxTQUFTRSxXQUFXQSxDQUFFQyxTQUFTLEVBQUVDLEtBQUssRUFBRUMsT0FBTyxFQUFFO0VBQy9DLE9BQU87SUFDTEYsU0FBUztJQUNUQyxLQUFLO0lBQ0xDO0VBQ0YsQ0FBQztBQUNIO0FBRUFSLFVBQVUsQ0FBQ1MsaUJBQWlCLEdBQUc7RUFDN0JDLE1BQU0sRUFBRTtJQUNOQyxXQUFXLEVBQUUsb0VBQW9FO0lBQ2pGQyxNQUFNLEVBQUUsTUFBT0MsSUFBSSxJQUFLLE1BQU1BLElBQUksQ0FBQ0MsR0FBRyxDQUFDQyxhQUFhLENBQUM7RUFDdkQsQ0FBQztFQUNEQyxTQUFTLEVBQUU7SUFDVEwsV0FBVyxFQUFHLHVEQUFzRDtJQUNwRUMsTUFBTSxFQUFFLE1BQU9DLElBQUksSUFBSztNQUN0QixNQUFNSSxNQUFNLEdBQUcs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