appium-uiautomator2-driver 2.22.1 → 2.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -0
- package/README.md +75 -0
- package/build/lib/commands/actions.js +1 -1
- package/build/lib/commands/actions.js.map +1 -1
- package/build/lib/commands/alert.js +1 -1
- package/build/lib/commands/alert.js.map +1 -1
- package/build/lib/commands/app-strings.js +1 -1
- package/build/lib/commands/app-strings.js.map +1 -1
- package/build/lib/commands/element.js +1 -1
- package/build/lib/commands/element.js.map +1 -1
- package/build/lib/commands/find.js +1 -1
- package/build/lib/commands/find.js.map +1 -1
- package/build/lib/commands/general.js +7 -2
- package/build/lib/commands/general.js.map +1 -1
- package/build/lib/commands/index.js +1 -1
- package/build/lib/commands/index.js.map +1 -1
- package/build/lib/commands/screenshot.js +1 -1
- package/build/lib/commands/screenshot.js.map +1 -1
- package/build/lib/commands/viewport.js +1 -1
- package/build/lib/commands/viewport.js.map +1 -1
- package/build/lib/css-converter.js +1 -1
- package/build/lib/css-converter.js.map +1 -1
- package/build/lib/desired-caps.js +1 -1
- package/build/lib/desired-caps.js.map +1 -1
- package/build/lib/driver.js +1 -1
- package/build/lib/driver.js.map +1 -1
- package/build/lib/helpers.js +1 -1
- package/build/lib/helpers.js.map +1 -1
- package/build/lib/uiautomator2.js +1 -1
- package/build/lib/uiautomator2.js.map +1 -1
- package/lib/commands/general.js +6 -0
- package/npm-shrinkwrap.json +281 -20
- package/package.json +3 -3
|
@@ -78,6 +78,7 @@ extensions.executeMobile = async function (mobileCommand, opts = {}) {
|
|
|
78
78
|
startScreenStreaming: 'mobileStartScreenStreaming',
|
|
79
79
|
stopScreenStreaming: 'mobileStopScreenStreaming',
|
|
80
80
|
getNotifications: 'mobileGetNotifications',
|
|
81
|
+
openNotifications: 'openNotifications',
|
|
81
82
|
listSms: 'mobileListSms',
|
|
82
83
|
type: 'mobileType',
|
|
83
84
|
replaceElementValue: 'mobileReplaceElementValue',
|
|
@@ -111,6 +112,8 @@ extensions.executeMobile = async function (mobileCommand, opts = {}) {
|
|
|
111
112
|
stopMediaProjectionRecording: 'mobileStopMediaProjectionRecording',
|
|
112
113
|
getConnectivity: 'mobileGetConnectivity',
|
|
113
114
|
setConnectivity: 'mobileSetConnectivity',
|
|
115
|
+
toggleGps: 'toggleLocationServices',
|
|
116
|
+
isGpsEnables: 'isLocationServicesEnabled',
|
|
114
117
|
hideKeyboard: 'mobileHideKeyboard',
|
|
115
118
|
isKeyboardShown: 'isKeyboardShown',
|
|
116
119
|
pressKey: 'mobilePressKey',
|
|
@@ -124,7 +127,9 @@ extensions.executeMobile = async function (mobileCommand, opts = {}) {
|
|
|
124
127
|
powerAc: 'mobilePowerAC',
|
|
125
128
|
powerCapacity: 'mobilePowerCapacity',
|
|
126
129
|
networkSpeed: 'mobileNetworkSpeed',
|
|
127
|
-
sensorSet: 'sensorSet'
|
|
130
|
+
sensorSet: 'sensorSet',
|
|
131
|
+
getPerformanceData: 'mobileGetPerformanceData',
|
|
132
|
+
getPerformanceDataTypes: 'getPerformanceDataTypes'
|
|
128
133
|
};
|
|
129
134
|
if (!_lodash.default.has(mobileCommandsMapping, mobileCommand)) {
|
|
130
135
|
throw new _driver.errors.UnknownCommandError(`Unknown mobile command "${mobileCommand}". ` + `Only ${_lodash.default.keys(mobileCommandsMapping)} commands are supported.`);
|
|
@@ -204,4 +209,4 @@ commands.mobileBackgroundApp = async function mobileBackgroundApp(opts = {}) {
|
|
|
204
209
|
Object.assign(extensions, commands, helpers);
|
|
205
210
|
var _default = extensions;
|
|
206
211
|
exports.default = _default;
|
|
207
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfYmx1ZWJpcmQiLCJfZHJpdmVyIiwiX2V4dGVuc2lvbnMiLCJleHRlbnNpb25zIiwiY29tbWFuZHMiLCJoZWxwZXJzIiwiZ2V0UGFnZVNvdXJjZSIsInVpYXV0b21hdG9yMiIsImp3cHJveHkiLCJjb21tYW5kIiwiZ2V0Q2xpcGJvYXJkIiwiYWRiIiwiZ2V0QXBpTGV2ZWwiLCJkb1NlbmRLZXlzIiwicGFyYW1zIiwia2V5ZXZlbnQiLCJrZXljb2RlIiwibWV0YXN0YXRlIiwibG9nIiwiZGVidWciLCJiYWNrIiwiZ2V0RGlzcGxheURlbnNpdHkiLCJnZXRXaW5kb3dTaXplIiwiZ2V0V2luZG93UmVjdCIsIndpZHRoIiwiaGVpZ2h0IiwieCIsInkiLCJleGVjdXRlTW9iaWxlIiwibW9iaWxlQ29tbWFuZCIsIm9wdHMiLCJtb2JpbGVDb21tYW5kc01hcHBpbmciLCJzaGVsbCIsImV4ZWNFbXVDb25zb2xlQ29tbWFuZCIsImRyYWdHZXN0dXJlIiwiZmxpbmdHZXN0dXJlIiwiZG91YmxlQ2xpY2tHZXN0dXJlIiwiY2xpY2tHZXN0dXJlIiwibG9uZ0NsaWNrR2VzdHVyZSIsInBpbmNoQ2xvc2VHZXN0dXJlIiwicGluY2hPcGVuR2VzdHVyZSIsInN3aXBlR2VzdHVyZSIsInNjcm9sbEdlc3R1cmUiLCJzY3JvbGxCYWNrVG8iLCJzY3JvbGwiLCJ2aWV3cG9ydFNjcmVlbnNob3QiLCJ2aWV3cG9ydFJlY3QiLCJkZWVwTGluayIsInN0YXJ0TG9nc0Jyb2FkY2FzdCIsInN0b3BMb2dzQnJvYWRjYXN0IiwiYWNjZXB0QWxlcnQiLCJkaXNtaXNzQWxlcnQiLCJiYXR0ZXJ5SW5mbyIsImRldmljZUluZm8iLCJnZXREZXZpY2VUaW1lIiwiY2hhbmdlUGVybWlzc2lvbnMiLCJnZXRQZXJtaXNzaW9ucyIsInBlcmZvcm1FZGl0b3JBY3Rpb24iLCJzdGFydFNjcmVlblN0cmVhbWluZyIsInN0b3BTY3JlZW5TdHJlYW1pbmciLCJnZXROb3RpZmljYXRpb25zIiwibGlzdFNtcyIsInR5cGUiLCJyZXBsYWNlRWxlbWVudFZhbHVlIiwicHVzaEZpbGUiLCJwdWxsRmlsZSIsInB1bGxGb2xkZXIiLCJkZWxldGVGaWxlIiwiaXNBcHBJbnN0YWxsZWQiLCJxdWVyeUFwcFN0YXRlIiwiYWN0aXZhdGVBcHAiLCJyZW1vdmVBcHAiLCJ0ZXJtaW5hdGVBcHAiLCJpbnN0YWxsQXBwIiwiY2xlYXJBcHAiLCJiYWNrZ3JvdW5kQXBwIiwiZ2V0Q3VycmVudEFjdGl2aXR5IiwiZ2V0Q3VycmVudFBhY2thZ2UiLCJzdGFydEFjdGl2aXR5Iiwic3RhcnRTZXJ2aWNlIiwic3RvcFNlcnZpY2UiLCJicm9hZGNhc3QiLCJnZXRDb250ZXh0cyIsImdldEFwcFN0cmluZ3MiLCJpbnN0YWxsTXVsdGlwbGVBcGtzIiwibG9jayIsInVubG9jayIsImlzTG9ja2VkIiwicmVmcmVzaEdwc0NhY2hlIiwic3RhcnRNZWRpYVByb2plY3Rpb25SZWNvcmRpbmciLCJpc01lZGlhUHJvamVjdGlvblJlY29yZGluZ1J1bm5pbmciLCJzdG9wTWVkaWFQcm9qZWN0aW9uUmVjb3JkaW5nIiwiZ2V0Q29ubmVjdGl2aXR5Iiwic2V0Q29ubmVjdGl2aXR5IiwiaGlkZUtleWJvYXJkIiwiaXNLZXlib2FyZFNob3duIiwicHJlc3NLZXkiLCJnZXRTeXN0ZW1CYXJzIiwiZmluZ2VycHJpbnQiLCJzZW5kU21zIiwiZ3NtQ2FsbCIsImdzbVNpZ25hbCIsImdzbVZvaWNlIiwicG93ZXJBYyIsInBvd2VyQ2FwYWNpdHkiLCJuZXR3b3JrU3BlZWQiLCJzZW5zb3JTZXQiLCJfIiwiaGFzIiwiZXJyb3JzIiwiVW5rbm93bkNvbW1hbmRFcnJvciIsImtleXMiLCJtb2JpbGVWaWV3cG9ydFNjcmVlbnNob3QiLCJnZXRWaWV3cG9ydFNjcmVlbnNob3QiLCJtb2JpbGVWaWV3UG9ydFJlY3QiLCJnZXRWaWV3UG9ydFJlY3QiLCJzZXRVcmwiLCJ1cmwiLCJzdGFydFVyaSIsImFwcFBhY2thZ2UiLCJtb2JpbGVEZWVwTGluayIsInBhY2thZ2UiLCJwa2ciLCJ3YWl0Rm9yTGF1bmNoIiwib3Blbk5vdGlmaWNhdGlvbnMiLCJ1cGRhdGVTZXR0aW5ncyIsInNldHRpbmdzIiwidXBkYXRlIiwiZ2V0U2V0dGluZ3MiLCJkcml2ZXJTZXR0aW5ncyIsInNlcnZlclNldHRpbmdzIiwid3JhcEJvb3RzdHJhcERpc2Nvbm5lY3QiLCJ3cmFwcGVkIiwic3VzcGVuZENocm9tZWRyaXZlclByb3h5IiwiY2hyb21lZHJpdmVyIiwicHJveHlSZXFSZXMiLCJiaW5kIiwicHJveHlDb21tYW5kIiwiandwUHJveHlBY3RpdmUiLCJtb2JpbGVHZXREZXZpY2VJbmZvIiwibW9iaWxlVHlwZSIsInRleHQiLCJpc1VuZGVmaW5lZCIsImVycm9yQW5kVGhyb3ciLCJ0eXBlVW5pY29kZSIsIm1vYmlsZUluc3RhbGxNdWx0aXBsZUFwa3MiLCJpc0FycmF5IiwiYXBrcyIsImlzRW1wdHkiLCJJbnZhbGlkQXJndW1lbnRFcnJvciIsIkIiLCJhbGwiLCJtYXAiLCJhcHAiLCJjb25maWd1cmVBcHAiLCJBUEtfRVhURU5TSU9OIiwib3B0aW9ucyIsIm1vYmlsZUJhY2tncm91bmRBcHAiLCJzZWNvbmRzIiwiYmFja2dyb3VuZCIsIk9iamVjdCIsImFzc2lnbiIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsImRlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvY29tbWFuZHMvZ2VuZXJhbC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0IHsgZXJyb3JzIH0gZnJvbSAnYXBwaXVtL2RyaXZlcic7XG5pbXBvcnQgeyBBUEtfRVhURU5TSU9OIH0gZnJvbSAnLi4vZXh0ZW5zaW9ucyc7XG5cbmxldCBleHRlbnNpb25zID0ge30sXG4gICAgY29tbWFuZHMgPSB7fSxcbiAgICBoZWxwZXJzID0ge307XG5cbmNvbW1hbmRzLmdldFBhZ2VTb3VyY2UgPSBhc3luYyBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLnVpYXV0b21hdG9yMi5qd3Byb3h5LmNvbW1hbmQoJy9zb3VyY2UnLCAnR0VUJywge30pO1xufTtcblxuY29tbWFuZHMuZ2V0Q2xpcGJvYXJkID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKGF3YWl0IHRoaXMuYWRiLmdldEFwaUxldmVsKCkgPCAyOSlcbiAgICA/IChhd2FpdCB0aGlzLnVpYXV0b21hdG9yMi5qd3Byb3h5LmNvbW1hbmQoJy9hcHBpdW0vZGV2aWNlL2dldF9jbGlwYm9hcmQnLCAnUE9TVCcsIHt9KSlcbiAgICA6IChhd2FpdCB0aGlzLmFkYi5nZXRDbGlwYm9hcmQoKSk7XG59O1xuXG4vLyBOZWVkIHRvIG92ZXJyaWRlIHRoaXMgZm9yIGNvcnJlY3QgdW5pY29kZSBzdXBwb3J0XG5jb21tYW5kcy5kb1NlbmRLZXlzID0gYXN5bmMgZnVuY3Rpb24gKHBhcmFtcykge1xuICBhd2FpdCB0aGlzLnVpYXV0b21hdG9yMi5qd3Byb3h5LmNvbW1hbmQoJy9rZXlzJywgJ1BPU1QnLCBwYXJhbXMpO1xufTtcblxuLy8gdWlhdXRvbWF0b3IyIGRvZXNuJ3Qgc3VwcG9ydCBtZXRhc3RhdGUgZm9yIGtleWV2ZW50c1xuY29tbWFuZHMua2V5ZXZlbnQgPSBhc3luYyBmdW5jdGlvbiAoa2V5Y29kZSwgbWV0YXN0YXRlKSB7XG4gIHRoaXMubG9nLmRlYnVnKGBJZ25vcmluZyBtZXRhc3RhdGUgJHttZXRhc3RhdGV9YCk7XG4gIGF3YWl0IHRoaXMuYWRiLmtleWV2ZW50KGtleWNvZGUpO1xufTtcblxuLy8gVXNlIEFEQiBzaW5jZSB3ZSBkb24ndCBoYXZlIFVpQXV0b21hdG9yXG5jb21tYW5kcy5iYWNrID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICBhd2FpdCB0aGlzLmFkYi5rZXlldmVudCg0KTtcbn07XG5cbmNvbW1hbmRzLmdldERpc3BsYXlEZW5zaXR5ID0gYXN5bmMgZnVuY3Rpb24gZ2V0RGlzcGxheURlbnNpdHkgKCkge1xuICByZXR1cm4gYXdhaXQgdGhpcy51aWF1dG9tYXRvcjIuandwcm94eS5jb21tYW5kKCcvYXBwaXVtL2RldmljZS9kaXNwbGF5X2RlbnNpdHknLCAnR0VUJywge30pO1xufTtcblxuLy8gbWVtb2l6ZWQgaW4gY29uc3RydWN0b3JcbmNvbW1hbmRzLmdldFdpbmRvd1NpemUgPSBhc3luYyBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLnVpYXV0b21hdG9yMi5qd3Byb3h5LmNvbW1hbmQoJy93aW5kb3cvY3VycmVudC9zaXplJywgJ0dFVCcsIHt9KTtcbn07XG5cbi8vIEZvciBXM0NcbmNvbW1hbmRzLmdldFdpbmRvd1JlY3QgPSBhc3luYyBmdW5jdGlvbiAoKSB7XG4gIGNvbnN0IHt3aWR0aCwgaGVpZ2h0fSA9IGF3YWl0IHRoaXMuZ2V0V2luZG93U2l6ZSgpO1xuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICB4OiAwLFxuICAgIHk6IDAsXG4gIH07XG59O1xuXG5leHRlbnNpb25zLmV4ZWN1dGVNb2JpbGUgPSBhc3luYyBmdW5jdGlvbiAobW9iaWxlQ29tbWFuZCwgb3B0cyA9IHt9KSB7XG4gIGNvbnN0IG1vYmlsZUNvbW1hbmRzTWFwcGluZyA9IHtcbiAgICBzaGVsbDogJ21vYmlsZVNoZWxsJyxcblxuICAgIGV4ZWNFbXVDb25zb2xlQ29tbWFuZDogJ21vYmlsZUV4ZWNFbXVDb25zb2xlQ29tbWFuZCcsXG5cbiAgICBkcmFnR2VzdHVyZTogJ21vYmlsZURyYWdHZXN0dXJlJyxcbiAgICBmbGluZ0dlc3R1cmU6ICdtb2JpbGVGbGluZ0dlc3R1cmUnLFxuICAgIGRvdWJsZUNsaWNrR2VzdHVyZTogJ21vYmlsZURvdWJsZUNsaWNrR2VzdHVyZScsXG4gICAgY2xpY2tHZXN0dXJlOiAnbW9iaWxlQ2xpY2tHZXN0dXJlJyxcbiAgICBsb25nQ2xpY2tHZXN0dXJlOiAnbW9iaWxlTG9uZ0NsaWNrR2VzdHVyZScsXG4gICAgcGluY2hDbG9zZUdlc3R1cmU6ICdtb2JpbGVQaW5jaENsb3NlR2VzdHVyZScsXG4gICAgcGluY2hPcGVuR2VzdHVyZTogJ21vYmlsZVBpbmNoT3Blbkdlc3R1cmUnLFxuICAgIHN3aXBlR2VzdHVyZTogJ21vYmlsZVN3aXBlR2VzdHVyZScsXG4gICAgc2Nyb2xsR2VzdHVyZTogJ21vYmlsZVNjcm9sbEdlc3R1cmUnLFxuICAgIHNjcm9sbEJhY2tUbzogJ21vYmlsZVNjcm9sbEJhY2tUbycsXG4gICAgc2Nyb2xsOiAnbW9iaWxlU2Nyb2xsJyxcbiAgICB2aWV3cG9ydFNjcmVlbnNob3Q6ICdtb2JpbGVWaWV3cG9ydFNjcmVlbnNob3QnLFxuICAgIHZpZXdwb3J0UmVjdDogJ21vYmlsZVZpZXdQb3J0UmVjdCcsXG5cbiAgICBkZWVwTGluazogJ21vYmlsZURlZXBMaW5rJyxcblxuICAgIHN0YXJ0TG9nc0Jyb2FkY2FzdDogJ21vYmlsZVN0YXJ0TG9nc0Jyb2FkY2FzdCcsXG4gICAgc3RvcExvZ3NCcm9hZGNhc3Q6ICdtb2JpbGVTdG9wTG9nc0Jyb2FkY2FzdCcsXG5cbiAgICBhY2NlcHRBbGVydDogJ21vYmlsZUFjY2VwdEFsZXJ0JyxcbiAgICBkaXNtaXNzQWxlcnQ6ICdtb2JpbGVEaXNtaXNzQWxlcnQnLFxuXG4gICAgYmF0dGVyeUluZm86ICdtb2JpbGVHZXRCYXR0ZXJ5SW5mbycsXG5cbiAgICBkZXZpY2VJbmZvOiAnbW9iaWxlR2V0RGV2aWNlSW5mbycsXG5cbiAgICBnZXREZXZpY2VUaW1lOiAnbW9iaWxlR2V0RGV2aWNlVGltZScsXG5cbiAgICBjaGFuZ2VQZXJtaXNzaW9uczogJ21vYmlsZUNoYW5nZVBlcm1pc3Npb25zJyxcbiAgICBnZXRQZXJtaXNzaW9uczogJ21vYmlsZUdldFBlcm1pc3Npb25zJyxcblxuICAgIHBlcmZvcm1FZGl0b3JBY3Rpb246ICdtb2JpbGVQZXJmb3JtRWRpdG9yQWN0aW9uJyxcblxuICAgIHN0YXJ0U2NyZWVuU3RyZWFtaW5nOiAnbW9iaWxlU3RhcnRTY3JlZW5TdHJlYW1pbmcnLFxuICAgIHN0b3BTY3JlZW5TdHJlYW1pbmc6ICdtb2JpbGVTdG9wU2NyZWVuU3RyZWFtaW5nJyxcblxuICAgIGdldE5vdGlmaWNhdGlvbnM6ICdtb2JpbGVHZXROb3RpZmljYXRpb25zJyxcblxuICAgIGxpc3RTbXM6ICdtb2JpbGVMaXN0U21zJyxcblxuICAgIHR5cGU6ICdtb2JpbGVUeXBlJyxcbiAgICByZXBsYWNlRWxlbWVudFZhbHVlOiAnbW9iaWxlUmVwbGFjZUVsZW1lbnRWYWx1ZScsXG5cbiAgICBwdXNoRmlsZTogJ21vYmlsZVB1c2hGaWxlJyxcbiAgICBwdWxsRmlsZTogJ21vYmlsZVB1bGxGaWxlJyxcbiAgICBwdWxsRm9sZGVyOiAnbW9iaWxlUHVsbEZvbGRlcicsXG4gICAgZGVsZXRlRmlsZTogJ21vYmlsZURlbGV0ZUZpbGUnLFxuXG4gICAgaXNBcHBJbnN0YWxsZWQ6ICdtb2JpbGVJc0FwcEluc3RhbGxlZCcsXG4gICAgcXVlcnlBcHBTdGF0ZTogJ21vYmlsZVF1ZXJ5QXBwU3RhdGUnLFxuICAgIGFjdGl2YXRlQXBwOiAnbW9iaWxlQWN0aXZhdGVBcHAnLFxuICAgIHJlbW92ZUFwcDogJ21vYmlsZVJlbW92ZUFwcCcsXG4gICAgdGVybWluYXRlQXBwOiAnbW9iaWxlVGVybWluYXRlQXBwJyxcbiAgICBpbnN0YWxsQXBwOiAnbW9iaWxlSW5zdGFsbEFwcCcsXG4gICAgY2xlYXJBcHA6ICdtb2JpbGVDbGVhckFwcCcsXG4gICAgYmFja2dyb3VuZEFwcDogJ21vYmlsZUJhY2tncm91bmRBcHAnLFxuICAgIGdldEN1cnJlbnRBY3Rpdml0eTogJ2dldEN1cnJlbnRBY3Rpdml0eScsXG4gICAgZ2V0Q3VycmVudFBhY2thZ2U6ICdnZXRDdXJyZW50UGFja2FnZScsXG5cbiAgICBzdGFydEFjdGl2aXR5OiAnbW9iaWxlU3RhcnRBY3Rpdml0eScsXG4gICAgc3RhcnRTZXJ2aWNlOiAnbW9iaWxlU3RhcnRTZXJ2aWNlJyxcbiAgICBzdG9wU2VydmljZTogJ21vYmlsZVN0b3BTZXJ2aWNlJyxcbiAgICBicm9hZGNhc3Q6ICdtb2JpbGVCcm9hZGNhc3QnLFxuXG4gICAgZ2V0Q29udGV4dHM6ICdtb2JpbGVHZXRDb250ZXh0cycsXG5cbiAgICBnZXRBcHBTdHJpbmdzOiAnbW9iaWxlR2V0QXBwU3RyaW5ncycsXG5cbiAgICBpbnN0YWxsTXVsdGlwbGVBcGtzOiAnbW9iaWxlSW5zdGFsbE11bHRpcGxlQXBrcycsXG5cbiAgICBsb2NrOiAnbG9jaycsXG4gICAgdW5sb2NrOiAnbW9iaWxlVW5sb2NrJyxcbiAgICBpc0xvY2tlZDogJ2lzTG9ja2VkJyxcblxuICAgIHJlZnJlc2hHcHNDYWNoZTogJ21vYmlsZVJlZnJlc2hHcHNDYWNoZScsXG5cbiAgICBzdGFydE1lZGlhUHJvamVjdGlvblJlY29yZGluZzogJ21vYmlsZVN0YXJ0TWVkaWFQcm9qZWN0aW9uUmVjb3JkaW5nJyxcbiAgICBpc01lZGlhUHJvamVjdGlvblJlY29yZGluZ1J1bm5pbmc6ICdtb2JpbGVJc01lZGlhUHJvamVjdGlvblJlY29yZGluZ1J1bm5pbmcnLFxuICAgIHN0b3BNZWRpYVByb2plY3Rpb25SZWNvcmRpbmc6ICdtb2JpbGVTdG9wTWVkaWFQcm9qZWN0aW9uUmVjb3JkaW5nJyxcblxuICAgIGdldENvbm5lY3Rpdml0eTogJ21vYmlsZUdldENvbm5lY3Rpdml0eScsXG4gICAgc2V0Q29ubmVjdGl2aXR5OiAnbW9iaWxlU2V0Q29ubmVjdGl2aXR5JyxcblxuICAgIGhpZGVLZXlib2FyZDogJ21vYmlsZUhpZGVLZXlib2FyZCcsXG4gICAgaXNLZXlib2FyZFNob3duOiAnaXNLZXlib2FyZFNob3duJyxcblxuICAgIHByZXNzS2V5OiAnbW9iaWxlUHJlc3NLZXknLFxuXG4gICAgZ2V0RGlzcGxheURlbnNpdHk6ICdnZXREaXNwbGF5RGVuc2l0eScsXG4gICAgZ2V0U3lzdGVtQmFyczogJ2dldFN5c3RlbUJhcnMnLFxuXG4gICAgZmluZ2VycHJpbnQ6ICdtb2JpbGVmaW5nZXJwcmludCcsXG4gICAgc2VuZFNtczogJ21vYmlsZVNlbmRTbXMnLFxuICAgIGdzbUNhbGw6ICdtb2JpbGVHc21DYWxsJyxcbiAgICBnc21TaWduYWw6ICdtb2JpbGVHc21TaWduYWwnLFxuICAgIGdzbVZvaWNlOiAnbW9iaWxlR3NtVm9pY2UnLFxuICAgIHBvd2VyQWM6ICdtb2JpbGVQb3dlckFDJyxcbiAgICBwb3dlckNhcGFjaXR5OiAnbW9iaWxlUG93ZXJDYXBhY2l0eScsXG4gICAgbmV0d29ya1NwZWVkOiAnbW9iaWxlTmV0d29ya1NwZWVkJyxcbiAgICBzZW5zb3JTZXQ6ICdzZW5zb3JTZXQnLFxuICB9O1xuXG4gIGlmICghXy5oYXMobW9iaWxlQ29tbWFuZHNNYXBwaW5nLCBtb2JpbGVDb21tYW5kKSkge1xuICAgIHRocm93IG5ldyBlcnJvcnMuVW5rbm93bkNvbW1hbmRFcnJvcihgVW5rbm93biBtb2JpbGUgY29tbWFuZCBcIiR7bW9iaWxlQ29tbWFuZH1cIi4gYCArXG4gICAgICBgT25seSAke18ua2V5cyhtb2JpbGVDb21tYW5kc01hcHBpbmcpfSBjb21tYW5kcyBhcmUgc3VwcG9ydGVkLmApO1xuICB9XG4gIHJldHVybiBhd2FpdCB0aGlzW21vYmlsZUNvbW1hbmRzTWFwcGluZ1ttb2JpbGVDb21tYW5kXV0ob3B0cyk7XG59O1xuXG5jb21tYW5kcy5tb2JpbGVWaWV3cG9ydFNjcmVlbnNob3QgPSBhc3luYyBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLmdldFZpZXdwb3J0U2NyZWVuc2hvdCgpO1xufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBSZWN0YW5nbGVcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBsZWZ0IC0gVGhlIGxlZnQgY29vcmRpbmF0ZSBvZiB0aGUgUmVjdGFuZ2xlLlxuICogQHByb3BlcnR5IHtudW1iZXJ9IHRvcCAtIFRoZSB0b3AgY29vcmRpbmF0ZSBvZiB0aGUgUmVjdGFuZ2xlLlxuICogQHByb3BlcnR5IHtudW1iZXJ9IHdpZHRoIC0gVGhlIHdpZHRoIG9mIFJlY3RhbmdsZS5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBoZWlnaHQgLSBUaGUgaGVpZ2h0IG9mIFJlY3RhbmdsZS5cbiAqL1xuXG4vKipcbiAqIFJldHVybnMgdGhlIHZpZXdwb3J0IGNvb3JkaW5hdGVzLlxuICogQHJldHVybnMge1JlY3RhbmdsZX0gVGhlIHZpZXdwb3J0IGNvb3JkaW5hdGVzLlxuICovXG5jb21tYW5kcy5tb2JpbGVWaWV3UG9ydFJlY3QgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVWaWV3UG9ydFJlY3QgKCkge1xuICByZXR1cm4gYXdhaXQgdGhpcy5nZXRWaWV3UG9ydFJlY3QoKTtcbn07XG5cbmNvbW1hbmRzLnNldFVybCA9IGFzeW5jIGZ1bmN0aW9uICh1cmwpIHtcbiAgYXdhaXQgdGhpcy5hZGIuc3RhcnRVcmkodXJsLCB0aGlzLm9wdHMuYXBwUGFja2FnZSk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IERlZXBMaW5rT3B0c1xuICogQHByb3BlcnR5IHshc3RyaW5nfSB1cmwgLSBUaGUgbmFtZSBvZiBVUkwgdG8gc3RhcnQuXG4gKiBAcHJvcGVydHkgeyFzdHJpbmd9IHBhY2thZ2UgLSBUaGUgbmFtZSBvZiB0aGUgcGFja2FnZSB0byBzdGFydCB0aGUgVVJJIHdpdGguXG4gKiBAcHJvcGVydHkgez9ib29sZWFufSB3YWl0Rm9yTGF1bmNoIFt0cnVlXSAtIGlmIGBmYWxzZWAgdGhlbiBhZGIgd29uJ3Qgd2FpdFxuICogZm9yIHRoZSBzdGFydGVkIGFjdGl2aXR5IHRvIHJldHVybiB0aGUgY29udHJvbFxuICovXG5cbi8qKlxuICogU3RhcnQgVVJMIHRoYXQgdGFrZSB1c2VycyBkaXJlY3RseSB0byBzcGVjaWZpYyBjb250ZW50IGluIHRoZSBhcHBcbiAqIEBwYXJhbSB7RGVlcExpbmtPcHRzfSBvcHRzXG4gKi9cbmNvbW1hbmRzLm1vYmlsZURlZXBMaW5rID0gYXN5bmMgZnVuY3Rpb24gKG9wdHMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgdXJsLFxuICAgIHBhY2thZ2U6IHBrZyxcbiAgICB3YWl0Rm9yTGF1bmNoLFxuICB9ID0gb3B0cztcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYWRiLnN0YXJ0VXJpKHVybCwgcGtnLCB7IHdhaXRGb3JMYXVuY2ggfSk7XG59O1xuXG5jb21tYW5kcy5vcGVuTm90aWZpY2F0aW9ucyA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZCgnL2FwcGl1bS9kZXZpY2Uvb3Blbl9ub3RpZmljYXRpb25zJywgJ1BPU1QnLCB7fSk7XG59O1xuXG5jb21tYW5kcy51cGRhdGVTZXR0aW5ncyA9IGFzeW5jIGZ1bmN0aW9uIChzZXR0aW5ncykge1xuICBhd2FpdCB0aGlzLnNldHRpbmdzLnVwZGF0ZShzZXR0aW5ncyk7XG4gIGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZCgnL2FwcGl1bS9zZXR0aW5ncycsICdQT1NUJywge3NldHRpbmdzfSk7XG59O1xuXG5jb21tYW5kcy5nZXRTZXR0aW5ncyA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgZHJpdmVyU2V0dGluZ3MgPSB0aGlzLnNldHRpbmdzLmdldFNldHRpbmdzKCk7XG4gIGNvbnN0IHNlcnZlclNldHRpbmdzID0gYXdhaXQgdGhpcy51aWF1dG9tYXRvcjIuandwcm94eS5jb21tYW5kKCcvYXBwaXVtL3NldHRpbmdzJywgJ0dFVCcpO1xuICByZXR1cm4gey4uLmRyaXZlclNldHRpbmdzLCAuLi5zZXJ2ZXJTZXR0aW5nc307XG59O1xuXG4vKipcbiAqIE92ZXJyaWRpbmcgYXBwaXVtLWFuZHJvaWQtZHJpdmVyJ3Mgd3JhcEJvb3RzdHJhcERpc2Nvbm5lY3QsXG4gKiB1bmxpa2UgaW4gYXBwaXVtLWFuZHJvaWQtZHJpdmVyIGF2b2lkaW5nIGFkYiByZXN0YXJ0aW5nIGFzIGl0IGludGVyblxuICoga2lsbHMgVWlBdXRvbWF0b3IyIHNlcnZlciBydW5uaW5nIGluIHRoZSBkZXZpY2UuXG4gKiovXG5oZWxwZXJzLndyYXBCb290c3RyYXBEaXNjb25uZWN0ID0gYXN5bmMgZnVuY3Rpb24gKHdyYXBwZWQpIHtcbiAgYXdhaXQgd3JhcHBlZCgpO1xufTtcblxuLy8gU3RvcCBwcm94eWluZyB0byBhbnkgQ2hyb21lZHJpdmVyIGFuZCByZWRpcmVjdCB0byB1aWF1dG9tYXRvcjJcbmhlbHBlcnMuc3VzcGVuZENocm9tZWRyaXZlclByb3h5ID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLmNocm9tZWRyaXZlciA9IG51bGw7XG4gIHRoaXMucHJveHlSZXFSZXMgPSB0aGlzLnVpYXV0b21hdG9yMi5wcm94eVJlcVJlcy5iaW5kKHRoaXMudWlhdXRvbWF0b3IyKTtcbiAgdGhpcy5wcm94eUNvbW1hbmQgPSB0aGlzLnVpYXV0b21hdG9yMi5wcm94eUNvbW1hbmQuYmluZCh0aGlzLnVpYXV0b21hdG9yMik7XG4gIHRoaXMuandwUHJveHlBY3RpdmUgPSB0cnVlO1xufTtcblxuLyoqXG4gKiBUaGUgbGlzdCBvZiBhdmFpbGFibGUgaW5mbyBlbnRyaWVzIGNhbiBiZSBmb3VuZCBhdFxuICogaHR0cHM6Ly9naXRodWIuY29tL2FwcGl1bS9hcHBpdW0tdWlhdXRvbWF0b3IyLXNlcnZlci9ibG9iL21hc3Rlci9hcHAvc3JjL21haW4vamF2YS9pby9hcHBpdW0vdWlhdXRvbWF0b3IyL2hhbmRsZXIvR2V0RGV2aWNlSW5mby5qYXZhXG4gKi9cbmNvbW1hbmRzLm1vYmlsZUdldERldmljZUluZm8gPSBhc3luYyBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLnVpYXV0b21hdG9yMi5qd3Byb3h5LmNvbW1hbmQoJy9hcHBpdW0vZGV2aWNlL2luZm8nLCAnR0VUJyk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFR5cGluZ09wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7IXN0cmluZ3xudW1iZXJ8Ym9vbGVhbn0gdGV4dCAtIFRoZSB0ZXh0IHRvIHR5cGVcbiAqL1xuXG4vKipcbiAqIFR5cGVzIHRoZSBnaXZlbiBVbmljb2RlIHN0cmluZy5cbiAqIEl0IGlzIGV4cGVjdGVkIHRoYXQgdGhlIGZvY3VzIGlzIGFscmVhZHkgcHV0XG4gKiB0byB0aGUgZGVzdGluYXRpb24gaW5wdXQgZmllbGQgYmVmb3JlIHRoaXMgbWV0aG9kIGlzIGNhbGxlZC5cbiAqXG4gKiBAcGFyYW0ge1R5cGluZ09wdGlvbnN9IG9wdHNcbiAqIEByZXR1cm5zIHtib29sZWFufSBgdHJ1ZWAgaWYgdGhlIGlucHV0IHRleHQgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IHNlbnQgdG8gYWRiXG4gKiBAdGhyb3dzIHtFcnJvcn0gaWYgYHRleHRgIHByb3BlcnR5IGhhcyBub3QgYmVlbiBwcm92aWRlZFxuICovXG5jb21tYW5kcy5tb2JpbGVUeXBlID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlVHlwZSAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICB0ZXh0LFxuICB9ID0gb3B0cztcbiAgaWYgKF8uaXNVbmRlZmluZWQodGV4dCkpIHtcbiAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KGBUaGUgJ3RleHQnIGFyZ3VtZW50IGlzIG1hbmRhdG9yeWApO1xuICB9XG4gIHJldHVybiBhd2FpdCB0aGlzLmFkYi50eXBlVW5pY29kZSh0ZXh0KTtcbn07XG5cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBJbnN0YWxsT3B0aW9uc1xuICogQHByb3BlcnR5IHtib29sZWFufSBhbGxvd1Rlc3RQYWNrYWdlcyBbZmFsc2VdIC0gU2V0IHRvIHRydWUgaW4gb3JkZXIgdG8gYWxsb3cgdGVzdFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFja2FnZXMgaW5zdGFsbGF0aW9uLlxuICogQHByb3BlcnR5IHtib29sZWFufSB1c2VTZGNhcmQgW2ZhbHNlXSAtIFNldCB0byB0cnVlIHRvIGluc3RhbGwgdGhlIGFwcCBvbiBzZGNhcmRcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0ZWFkIG9mIHRoZSBkZXZpY2UgbWVtb3J5LlxuICogQHByb3BlcnR5IHtib29sZWFufSBncmFudFBlcm1pc3Npb25zIFtmYWxzZV0gLSBTZXQgdG8gdHJ1ZSBpbiBvcmRlciB0byBncmFudCBhbGwgdGhlXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcm1pc3Npb25zIHJlcXVlc3RlZCBpbiB0aGUgYXBwbGljYXRpb24ncyBtYW5pZmVzdFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvbWF0aWNhbGx5IGFmdGVyIHRoZSBpbnN0YWxsYXRpb24gaXMgY29tcGxldGVkXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVyIEFuZHJvaWQgNisuXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IHJlcGxhY2UgW3RydWVdIC0gU2V0IGl0IHRvIGZhbHNlIGlmIHlvdSBkb24ndCB3YW50XG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGFwcGxpY2F0aW9uIHRvIGJlIHVwZ3JhZGVkL3JlaW5zdGFsbGVkXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXQgaXMgYWxyZWFkeSBwcmVzZW50IG9uIHRoZSBkZXZpY2UuXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IHBhcnRpYWxJbnN0YWxsIFtmYWxzZV0gLSBJbnN0YWxsIGFwa3MgcGFydGlhbGx5LiBJdCBpcyB1c2VkIGZvciAnaW5zdGFsbC1tdWx0aXBsZScuXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0dHBzOi8vYW5kcm9pZC5zdGFja2V4Y2hhbmdlLmNvbS9xdWVzdGlvbnMvMTExMDY0L3doYXQtaXMtYS1wYXJ0aWFsLWFwcGxpY2F0aW9uLWluc3RhbGwtdmlhLWFkYlxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gSW5zdGFsbE11bHRpcGxlQXBrc09wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7QXJyYXk8c3RyaW5nPn0gYXBrcyAtIFRoZSBsaXN0IG9mIEFQS3MgdG8gaW5zdGFsbC4gRWFjaCBBUEsgc2hvdWxkIGJlIGEgcGF0aCB0byBhIGFwa1xuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgZG93bmxvYWRhYmxlIFVSTCBhcyBIVFRQL0hUVFBTLlxuICogQHByb3BlcnR5IHtJbnN0YWxsT3B0aW9uc30gb3B0aW9uc1xuICovXG5cbi8qKlxuICogSW5zdGFsbCBtdWx0aXBsZSBBUEtzIHdpdGggYGluc3RhbGwtbXVsdGlwbGVgIG9wdGlvbi5cbiAqXG4gKiBAcGFyYW0ge0luc3RhbGxNdWx0aXBsZUFwa3NPcHRpb25zfSBvcHRzXG4gKiBAdGhyb3dzIHtFcnJvcn0gaWYgYW4gZXJyb3Igb2NjdXJlZCB3aGlsZSBpbnN0YWxsaW5nIHRoZSBnaXZlbiBBUEtzLlxuICovXG5jb21tYW5kcy5tb2JpbGVJbnN0YWxsTXVsdGlwbGVBcGtzID0gYXN5bmMgZnVuY3Rpb24gKG9wdHMgPSB7fSkge1xuICBpZiAoIV8uaXNBcnJheShvcHRzLmFwa3MpIHx8IF8uaXNFbXB0eShvcHRzLmFwa3MpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcignTm8gYXBrcyBhcmUgZ2l2ZW4gdG8gaW5zdGFsbCcpO1xuICB9XG4gIGNvbnN0IGFwa3MgPSBhd2FpdCBCLmFsbChvcHRzLmFwa3NcbiAgICAubWFwKChhcHApID0+IHRoaXMuaGVscGVycy5jb25maWd1cmVBcHAoYXBwLCBbQVBLX0VYVEVOU0lPTl0pKSk7XG4gIGF3YWl0IHRoaXMuYWRiLmluc3RhbGxNdWx0aXBsZUFwa3MoYXBrcywgb3B0cy5vcHRpb25zKTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gQmFja2dyb3VuZEFwcE9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBzZWNvbmRzIFRoZSBhbW91bnQgb2Ygc2Vjb25kcyB0byB3YWl0IGJldHdlZW5cbiAqIHB1dHRpbmcgdGhlIGFwcCB0byBiYWNrZ3JvdW5kIGFuZCByZXN0b3JpbmcgaXQuIEFueSBuZWdhdGl2ZSB2YWx1ZVxuICogbWVhbnMgdG8gbm90IHJlc3RvcmUgdGhlIGFwcCBhZnRlciBwdXR0aW5nIGl0IHRvIGJhY2tncm91bmQuXG4gKi9cblxuLyoqXG4gKiBQdXRzIHRoZSBhcHAgdG8gYmFja2dyb3VuZCBhbmQgd2FpdHMgdGhlIGdpdmVuIG51bWJlciBvZiBzZWNvbmRzIFRoZW4gcmVzdG9yZXMgdGhlIGFwcFxuICogaWYgbmVjZXNzYXJ5LiBUaGUgY2FsbCBpcyBibG9ja2luZy5cbiAqXG4gKiBAcGFyYW0ge0JhY2tncm91bmRBcHBPcHRpb25zfSBvcHRzXG4gKi9cbmNvbW1hbmRzLm1vYmlsZUJhY2tncm91bmRBcHAgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVCYWNrZ3JvdW5kQXBwIChvcHRzID0ge30pIHtcbiAgY29uc3Qge1xuICAgIHNlY29uZHMgPSAtMSxcbiAgfSA9IG9wdHM7XG4gIHJldHVybiBhd2FpdCB0aGlzLmJhY2tncm91bmQoc2Vjb25kcyk7XG59O1xuXG5PYmplY3QuYXNzaWduKGV4dGVuc2lvbnMsIGNvbW1hbmRzLCBoZWxwZXJzKTtcblxuZXhwb3J0IGRlZmF1bHQgZXh0ZW5zaW9ucztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxJQUFBQSxPQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxTQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRSxPQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxXQUFBLEdBQUFILE9BQUE7QUFFQSxJQUFJSSxVQUFVLEdBQUcsQ0FBQyxDQUFDO0VBQ2ZDLFFBQVEsR0FBRyxDQUFDLENBQUM7RUFDYkMsT0FBTyxHQUFHLENBQUMsQ0FBQztBQUVoQkQsUUFBUSxDQUFDRSxhQUFhLEdBQUcsa0JBQWtCO0VBQ3pD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
|
|
212
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfYmx1ZWJpcmQiLCJfZHJpdmVyIiwiX2V4dGVuc2lvbnMiLCJleHRlbnNpb25zIiwiY29tbWFuZHMiLCJoZWxwZXJzIiwiZ2V0UGFnZVNvdXJjZSIsInVpYXV0b21hdG9yMiIsImp3cHJveHkiLCJjb21tYW5kIiwiZ2V0Q2xpcGJvYXJkIiwiYWRiIiwiZ2V0QXBpTGV2ZWwiLCJkb1NlbmRLZXlzIiwicGFyYW1zIiwia2V5ZXZlbnQiLCJrZXljb2RlIiwibWV0YXN0YXRlIiwibG9nIiwiZGVidWciLCJiYWNrIiwiZ2V0RGlzcGxheURlbnNpdHkiLCJnZXRXaW5kb3dTaXplIiwiZ2V0V2luZG93UmVjdCIsIndpZHRoIiwiaGVpZ2h0IiwieCIsInkiLCJleGVjdXRlTW9iaWxlIiwibW9iaWxlQ29tbWFuZCIsIm9wdHMiLCJtb2JpbGVDb21tYW5kc01hcHBpbmciLCJzaGVsbCIsImV4ZWNFbXVDb25zb2xlQ29tbWFuZCIsImRyYWdHZXN0dXJlIiwiZmxpbmdHZXN0dXJlIiwiZG91YmxlQ2xpY2tHZXN0dXJlIiwiY2xpY2tHZXN0dXJlIiwibG9uZ0NsaWNrR2VzdHVyZSIsInBpbmNoQ2xvc2VHZXN0dXJlIiwicGluY2hPcGVuR2VzdHVyZSIsInN3aXBlR2VzdHVyZSIsInNjcm9sbEdlc3R1cmUiLCJzY3JvbGxCYWNrVG8iLCJzY3JvbGwiLCJ2aWV3cG9ydFNjcmVlbnNob3QiLCJ2aWV3cG9ydFJlY3QiLCJkZWVwTGluayIsInN0YXJ0TG9nc0Jyb2FkY2FzdCIsInN0b3BMb2dzQnJvYWRjYXN0IiwiYWNjZXB0QWxlcnQiLCJkaXNtaXNzQWxlcnQiLCJiYXR0ZXJ5SW5mbyIsImRldmljZUluZm8iLCJnZXREZXZpY2VUaW1lIiwiY2hhbmdlUGVybWlzc2lvbnMiLCJnZXRQZXJtaXNzaW9ucyIsInBlcmZvcm1FZGl0b3JBY3Rpb24iLCJzdGFydFNjcmVlblN0cmVhbWluZyIsInN0b3BTY3JlZW5TdHJlYW1pbmciLCJnZXROb3RpZmljYXRpb25zIiwib3Blbk5vdGlmaWNhdGlvbnMiLCJsaXN0U21zIiwidHlwZSIsInJlcGxhY2VFbGVtZW50VmFsdWUiLCJwdXNoRmlsZSIsInB1bGxGaWxlIiwicHVsbEZvbGRlciIsImRlbGV0ZUZpbGUiLCJpc0FwcEluc3RhbGxlZCIsInF1ZXJ5QXBwU3RhdGUiLCJhY3RpdmF0ZUFwcCIsInJlbW92ZUFwcCIsInRlcm1pbmF0ZUFwcCIsImluc3RhbGxBcHAiLCJjbGVhckFwcCIsImJhY2tncm91bmRBcHAiLCJnZXRDdXJyZW50QWN0aXZpdHkiLCJnZXRDdXJyZW50UGFja2FnZSIsInN0YXJ0QWN0aXZpdHkiLCJzdGFydFNlcnZpY2UiLCJzdG9wU2VydmljZSIsImJyb2FkY2FzdCIsImdldENvbnRleHRzIiwiZ2V0QXBwU3RyaW5ncyIsImluc3RhbGxNdWx0aXBsZUFwa3MiLCJsb2NrIiwidW5sb2NrIiwiaXNMb2NrZWQiLCJyZWZyZXNoR3BzQ2FjaGUiLCJzdGFydE1lZGlhUHJvamVjdGlvblJlY29yZGluZyIsImlzTWVkaWFQcm9qZWN0aW9uUmVjb3JkaW5nUnVubmluZyIsInN0b3BNZWRpYVByb2plY3Rpb25SZWNvcmRpbmciLCJnZXRDb25uZWN0aXZpdHkiLCJzZXRDb25uZWN0aXZpdHkiLCJ0b2dnbGVHcHMiLCJpc0dwc0VuYWJsZXMiLCJoaWRlS2V5Ym9hcmQiLCJpc0tleWJvYXJkU2hvd24iLCJwcmVzc0tleSIsImdldFN5c3RlbUJhcnMiLCJmaW5nZXJwcmludCIsInNlbmRTbXMiLCJnc21DYWxsIiwiZ3NtU2lnbmFsIiwiZ3NtVm9pY2UiLCJwb3dlckFjIiwicG93ZXJDYXBhY2l0eSIsIm5ldHdvcmtTcGVlZCIsInNlbnNvclNldCIsImdldFBlcmZvcm1hbmNlRGF0YSIsImdldFBlcmZvcm1hbmNlRGF0YVR5cGVzIiwiXyIsImhhcyIsImVycm9ycyIsIlVua25vd25Db21tYW5kRXJyb3IiLCJrZXlzIiwibW9iaWxlVmlld3BvcnRTY3JlZW5zaG90IiwiZ2V0Vmlld3BvcnRTY3JlZW5zaG90IiwibW9iaWxlVmlld1BvcnRSZWN0IiwiZ2V0Vmlld1BvcnRSZWN0Iiwic2V0VXJsIiwidXJsIiwic3RhcnRVcmkiLCJhcHBQYWNrYWdlIiwibW9iaWxlRGVlcExpbmsiLCJwYWNrYWdlIiwicGtnIiwid2FpdEZvckxhdW5jaCIsInVwZGF0ZVNldHRpbmdzIiwic2V0dGluZ3MiLCJ1cGRhdGUiLCJnZXRTZXR0aW5ncyIsImRyaXZlclNldHRpbmdzIiwic2VydmVyU2V0dGluZ3MiLCJ3cmFwQm9vdHN0cmFwRGlzY29ubmVjdCIsIndyYXBwZWQiLCJzdXNwZW5kQ2hyb21lZHJpdmVyUHJveHkiLCJjaHJvbWVkcml2ZXIiLCJwcm94eVJlcVJlcyIsImJpbmQiLCJwcm94eUNvbW1hbmQiLCJqd3BQcm94eUFjdGl2ZSIsIm1vYmlsZUdldERldmljZUluZm8iLCJtb2JpbGVUeXBlIiwidGV4dCIsImlzVW5kZWZpbmVkIiwiZXJyb3JBbmRUaHJvdyIsInR5cGVVbmljb2RlIiwibW9iaWxlSW5zdGFsbE11bHRpcGxlQXBrcyIsImlzQXJyYXkiLCJhcGtzIiwiaXNFbXB0eSIsIkludmFsaWRBcmd1bWVudEVycm9yIiwiQiIsImFsbCIsIm1hcCIsImFwcCIsImNvbmZpZ3VyZUFwcCIsIkFQS19FWFRFTlNJT04iLCJvcHRpb25zIiwibW9iaWxlQmFja2dyb3VuZEFwcCIsInNlY29uZHMiLCJiYWNrZ3JvdW5kIiwiT2JqZWN0IiwiYXNzaWduIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwiZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9jb21tYW5kcy9nZW5lcmFsLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5pbXBvcnQgeyBlcnJvcnMgfSBmcm9tICdhcHBpdW0vZHJpdmVyJztcbmltcG9ydCB7IEFQS19FWFRFTlNJT04gfSBmcm9tICcuLi9leHRlbnNpb25zJztcblxubGV0IGV4dGVuc2lvbnMgPSB7fSxcbiAgICBjb21tYW5kcyA9IHt9LFxuICAgIGhlbHBlcnMgPSB7fTtcblxuY29tbWFuZHMuZ2V0UGFnZVNvdXJjZSA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZCgnL3NvdXJjZScsICdHRVQnLCB7fSk7XG59O1xuXG5jb21tYW5kcy5nZXRDbGlwYm9hcmQgPSBhc3luYyBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAoYXdhaXQgdGhpcy5hZGIuZ2V0QXBpTGV2ZWwoKSA8IDI5KVxuICAgID8gKGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZCgnL2FwcGl1bS9kZXZpY2UvZ2V0X2NsaXBib2FyZCcsICdQT1NUJywge30pKVxuICAgIDogKGF3YWl0IHRoaXMuYWRiLmdldENsaXBib2FyZCgpKTtcbn07XG5cbi8vIE5lZWQgdG8gb3ZlcnJpZGUgdGhpcyBmb3IgY29ycmVjdCB1bmljb2RlIHN1cHBvcnRcbmNvbW1hbmRzLmRvU2VuZEtleXMgPSBhc3luYyBmdW5jdGlvbiAocGFyYW1zKSB7XG4gIGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZCgnL2tleXMnLCAnUE9TVCcsIHBhcmFtcyk7XG59O1xuXG4vLyB1aWF1dG9tYXRvcjIgZG9lc24ndCBzdXBwb3J0IG1ldGFzdGF0ZSBmb3Iga2V5ZXZlbnRzXG5jb21tYW5kcy5rZXlldmVudCA9IGFzeW5jIGZ1bmN0aW9uIChrZXljb2RlLCBtZXRhc3RhdGUpIHtcbiAgdGhpcy5sb2cuZGVidWcoYElnbm9yaW5nIG1ldGFzdGF0ZSAke21ldGFzdGF0ZX1gKTtcbiAgYXdhaXQgdGhpcy5hZGIua2V5ZXZlbnQoa2V5Y29kZSk7XG59O1xuXG4vLyBVc2UgQURCIHNpbmNlIHdlIGRvbid0IGhhdmUgVWlBdXRvbWF0b3JcbmNvbW1hbmRzLmJhY2sgPSBhc3luYyBmdW5jdGlvbiAoKSB7XG4gIGF3YWl0IHRoaXMuYWRiLmtleWV2ZW50KDQpO1xufTtcblxuY29tbWFuZHMuZ2V0RGlzcGxheURlbnNpdHkgPSBhc3luYyBmdW5jdGlvbiBnZXREaXNwbGF5RGVuc2l0eSAoKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLnVpYXV0b21hdG9yMi5qd3Byb3h5LmNvbW1hbmQoJy9hcHBpdW0vZGV2aWNlL2Rpc3BsYXlfZGVuc2l0eScsICdHRVQnLCB7fSk7XG59O1xuXG4vLyBtZW1vaXplZCBpbiBjb25zdHJ1Y3RvclxuY29tbWFuZHMuZ2V0V2luZG93U2l6ZSA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZCgnL3dpbmRvdy9jdXJyZW50L3NpemUnLCAnR0VUJywge30pO1xufTtcblxuLy8gRm9yIFczQ1xuY29tbWFuZHMuZ2V0V2luZG93UmVjdCA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgY29uc3Qge3dpZHRoLCBoZWlnaHR9ID0gYXdhaXQgdGhpcy5nZXRXaW5kb3dTaXplKCk7XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHg6IDAsXG4gICAgeTogMCxcbiAgfTtcbn07XG5cbmV4dGVuc2lvbnMuZXhlY3V0ZU1vYmlsZSA9IGFzeW5jIGZ1bmN0aW9uIChtb2JpbGVDb21tYW5kLCBvcHRzID0ge30pIHtcbiAgY29uc3QgbW9iaWxlQ29tbWFuZHNNYXBwaW5nID0ge1xuICAgIHNoZWxsOiAnbW9iaWxlU2hlbGwnLFxuXG4gICAgZXhlY0VtdUNvbnNvbGVDb21tYW5kOiAnbW9iaWxlRXhlY0VtdUNvbnNvbGVDb21tYW5kJyxcblxuICAgIGRyYWdHZXN0dXJlOiAnbW9iaWxlRHJhZ0dlc3R1cmUnLFxuICAgIGZsaW5nR2VzdHVyZTogJ21vYmlsZUZsaW5nR2VzdHVyZScsXG4gICAgZG91YmxlQ2xpY2tHZXN0dXJlOiAnbW9iaWxlRG91YmxlQ2xpY2tHZXN0dXJlJyxcbiAgICBjbGlja0dlc3R1cmU6ICdtb2JpbGVDbGlja0dlc3R1cmUnLFxuICAgIGxvbmdDbGlja0dlc3R1cmU6ICdtb2JpbGVMb25nQ2xpY2tHZXN0dXJlJyxcbiAgICBwaW5jaENsb3NlR2VzdHVyZTogJ21vYmlsZVBpbmNoQ2xvc2VHZXN0dXJlJyxcbiAgICBwaW5jaE9wZW5HZXN0dXJlOiAnbW9iaWxlUGluY2hPcGVuR2VzdHVyZScsXG4gICAgc3dpcGVHZXN0dXJlOiAnbW9iaWxlU3dpcGVHZXN0dXJlJyxcbiAgICBzY3JvbGxHZXN0dXJlOiAnbW9iaWxlU2Nyb2xsR2VzdHVyZScsXG4gICAgc2Nyb2xsQmFja1RvOiAnbW9iaWxlU2Nyb2xsQmFja1RvJyxcbiAgICBzY3JvbGw6ICdtb2JpbGVTY3JvbGwnLFxuICAgIHZpZXdwb3J0U2NyZWVuc2hvdDogJ21vYmlsZVZpZXdwb3J0U2NyZWVuc2hvdCcsXG4gICAgdmlld3BvcnRSZWN0OiAnbW9iaWxlVmlld1BvcnRSZWN0JyxcblxuICAgIGRlZXBMaW5rOiAnbW9iaWxlRGVlcExpbmsnLFxuXG4gICAgc3RhcnRMb2dzQnJvYWRjYXN0OiAnbW9iaWxlU3RhcnRMb2dzQnJvYWRjYXN0JyxcbiAgICBzdG9wTG9nc0Jyb2FkY2FzdDogJ21vYmlsZVN0b3BMb2dzQnJvYWRjYXN0JyxcblxuICAgIGFjY2VwdEFsZXJ0OiAnbW9iaWxlQWNjZXB0QWxlcnQnLFxuICAgIGRpc21pc3NBbGVydDogJ21vYmlsZURpc21pc3NBbGVydCcsXG5cbiAgICBiYXR0ZXJ5SW5mbzogJ21vYmlsZUdldEJhdHRlcnlJbmZvJyxcblxuICAgIGRldmljZUluZm86ICdtb2JpbGVHZXREZXZpY2VJbmZvJyxcblxuICAgIGdldERldmljZVRpbWU6ICdtb2JpbGVHZXREZXZpY2VUaW1lJyxcblxuICAgIGNoYW5nZVBlcm1pc3Npb25zOiAnbW9iaWxlQ2hhbmdlUGVybWlzc2lvbnMnLFxuICAgIGdldFBlcm1pc3Npb25zOiAnbW9iaWxlR2V0UGVybWlzc2lvbnMnLFxuXG4gICAgcGVyZm9ybUVkaXRvckFjdGlvbjogJ21vYmlsZVBlcmZvcm1FZGl0b3JBY3Rpb24nLFxuXG4gICAgc3RhcnRTY3JlZW5TdHJlYW1pbmc6ICdtb2JpbGVTdGFydFNjcmVlblN0cmVhbWluZycsXG4gICAgc3RvcFNjcmVlblN0cmVhbWluZzogJ21vYmlsZVN0b3BTY3JlZW5TdHJlYW1pbmcnLFxuXG4gICAgZ2V0Tm90aWZpY2F0aW9uczogJ21vYmlsZUdldE5vdGlmaWNhdGlvbnMnLFxuICAgIG9wZW5Ob3RpZmljYXRpb25zOiAnb3Blbk5vdGlmaWNhdGlvbnMnLFxuXG4gICAgbGlzdFNtczogJ21vYmlsZUxpc3RTbXMnLFxuXG4gICAgdHlwZTogJ21vYmlsZVR5cGUnLFxuICAgIHJlcGxhY2VFbGVtZW50VmFsdWU6ICdtb2JpbGVSZXBsYWNlRWxlbWVudFZhbHVlJyxcblxuICAgIHB1c2hGaWxlOiAnbW9iaWxlUHVzaEZpbGUnLFxuICAgIHB1bGxGaWxlOiAnbW9iaWxlUHVsbEZpbGUnLFxuICAgIHB1bGxGb2xkZXI6ICdtb2JpbGVQdWxsRm9sZGVyJyxcbiAgICBkZWxldGVGaWxlOiAnbW9iaWxlRGVsZXRlRmlsZScsXG5cbiAgICBpc0FwcEluc3RhbGxlZDogJ21vYmlsZUlzQXBwSW5zdGFsbGVkJyxcbiAgICBxdWVyeUFwcFN0YXRlOiAnbW9iaWxlUXVlcnlBcHBTdGF0ZScsXG4gICAgYWN0aXZhdGVBcHA6ICdtb2JpbGVBY3RpdmF0ZUFwcCcsXG4gICAgcmVtb3ZlQXBwOiAnbW9iaWxlUmVtb3ZlQXBwJyxcbiAgICB0ZXJtaW5hdGVBcHA6ICdtb2JpbGVUZXJtaW5hdGVBcHAnLFxuICAgIGluc3RhbGxBcHA6ICdtb2JpbGVJbnN0YWxsQXBwJyxcbiAgICBjbGVhckFwcDogJ21vYmlsZUNsZWFyQXBwJyxcbiAgICBiYWNrZ3JvdW5kQXBwOiAnbW9iaWxlQmFja2dyb3VuZEFwcCcsXG4gICAgZ2V0Q3VycmVudEFjdGl2aXR5OiAnZ2V0Q3VycmVudEFjdGl2aXR5JyxcbiAgICBnZXRDdXJyZW50UGFja2FnZTogJ2dldEN1cnJlbnRQYWNrYWdlJyxcblxuICAgIHN0YXJ0QWN0aXZpdHk6ICdtb2JpbGVTdGFydEFjdGl2aXR5JyxcbiAgICBzdGFydFNlcnZpY2U6ICdtb2JpbGVTdGFydFNlcnZpY2UnLFxuICAgIHN0b3BTZXJ2aWNlOiAnbW9iaWxlU3RvcFNlcnZpY2UnLFxuICAgIGJyb2FkY2FzdDogJ21vYmlsZUJyb2FkY2FzdCcsXG5cbiAgICBnZXRDb250ZXh0czogJ21vYmlsZUdldENvbnRleHRzJyxcblxuICAgIGdldEFwcFN0cmluZ3M6ICdtb2JpbGVHZXRBcHBTdHJpbmdzJyxcblxuICAgIGluc3RhbGxNdWx0aXBsZUFwa3M6ICdtb2JpbGVJbnN0YWxsTXVsdGlwbGVBcGtzJyxcblxuICAgIGxvY2s6ICdsb2NrJyxcbiAgICB1bmxvY2s6ICdtb2JpbGVVbmxvY2snLFxuICAgIGlzTG9ja2VkOiAnaXNMb2NrZWQnLFxuXG4gICAgcmVmcmVzaEdwc0NhY2hlOiAnbW9iaWxlUmVmcmVzaEdwc0NhY2hlJyxcblxuICAgIHN0YXJ0TWVkaWFQcm9qZWN0aW9uUmVjb3JkaW5nOiAnbW9iaWxlU3RhcnRNZWRpYVByb2plY3Rpb25SZWNvcmRpbmcnLFxuICAgIGlzTWVkaWFQcm9qZWN0aW9uUmVjb3JkaW5nUnVubmluZzogJ21vYmlsZUlzTWVkaWFQcm9qZWN0aW9uUmVjb3JkaW5nUnVubmluZycsXG4gICAgc3RvcE1lZGlhUHJvamVjdGlvblJlY29yZGluZzogJ21vYmlsZVN0b3BNZWRpYVByb2plY3Rpb25SZWNvcmRpbmcnLFxuXG4gICAgZ2V0Q29ubmVjdGl2aXR5OiAnbW9iaWxlR2V0Q29ubmVjdGl2aXR5JyxcbiAgICBzZXRDb25uZWN0aXZpdHk6ICdtb2JpbGVTZXRDb25uZWN0aXZpdHknLFxuICAgIHRvZ2dsZUdwczogJ3RvZ2dsZUxvY2F0aW9uU2VydmljZXMnLFxuICAgIGlzR3BzRW5hYmxlczogJ2lzTG9jYXRpb25TZXJ2aWNlc0VuYWJsZWQnLFxuXG4gICAgaGlkZUtleWJvYXJkOiAnbW9iaWxlSGlkZUtleWJvYXJkJyxcbiAgICBpc0tleWJvYXJkU2hvd246ICdpc0tleWJvYXJkU2hvd24nLFxuXG4gICAgcHJlc3NLZXk6ICdtb2JpbGVQcmVzc0tleScsXG5cbiAgICBnZXREaXNwbGF5RGVuc2l0eTogJ2dldERpc3BsYXlEZW5zaXR5JyxcbiAgICBnZXRTeXN0ZW1CYXJzOiAnZ2V0U3lzdGVtQmFycycsXG5cbiAgICBmaW5nZXJwcmludDogJ21vYmlsZWZpbmdlcnByaW50JyxcbiAgICBzZW5kU21zOiAnbW9iaWxlU2VuZFNtcycsXG4gICAgZ3NtQ2FsbDogJ21vYmlsZUdzbUNhbGwnLFxuICAgIGdzbVNpZ25hbDogJ21vYmlsZUdzbVNpZ25hbCcsXG4gICAgZ3NtVm9pY2U6ICdtb2JpbGVHc21Wb2ljZScsXG4gICAgcG93ZXJBYzogJ21vYmlsZVBvd2VyQUMnLFxuICAgIHBvd2VyQ2FwYWNpdHk6ICdtb2JpbGVQb3dlckNhcGFjaXR5JyxcbiAgICBuZXR3b3JrU3BlZWQ6ICdtb2JpbGVOZXR3b3JrU3BlZWQnLFxuICAgIHNlbnNvclNldDogJ3NlbnNvclNldCcsXG5cbiAgICBnZXRQZXJmb3JtYW5jZURhdGE6ICdtb2JpbGVHZXRQZXJmb3JtYW5jZURhdGEnLFxuICAgIGdldFBlcmZvcm1hbmNlRGF0YVR5cGVzOiAnZ2V0UGVyZm9ybWFuY2VEYXRhVHlwZXMnLFxuICB9O1xuXG4gIGlmICghXy5oYXMobW9iaWxlQ29tbWFuZHNNYXBwaW5nLCBtb2JpbGVDb21tYW5kKSkge1xuICAgIHRocm93IG5ldyBlcnJvcnMuVW5rbm93bkNvbW1hbmRFcnJvcihgVW5rbm93biBtb2JpbGUgY29tbWFuZCBcIiR7bW9iaWxlQ29tbWFuZH1cIi4gYCArXG4gICAgICBgT25seSAke18ua2V5cyhtb2JpbGVDb21tYW5kc01hcHBpbmcpfSBjb21tYW5kcyBhcmUgc3VwcG9ydGVkLmApO1xuICB9XG4gIHJldHVybiBhd2FpdCB0aGlzW21vYmlsZUNvbW1hbmRzTWFwcGluZ1ttb2JpbGVDb21tYW5kXV0ob3B0cyk7XG59O1xuXG5jb21tYW5kcy5tb2JpbGVWaWV3cG9ydFNjcmVlbnNob3QgPSBhc3luYyBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLmdldFZpZXdwb3J0U2NyZWVuc2hvdCgpO1xufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBSZWN0YW5nbGVcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBsZWZ0IC0gVGhlIGxlZnQgY29vcmRpbmF0ZSBvZiB0aGUgUmVjdGFuZ2xlLlxuICogQHByb3BlcnR5IHtudW1iZXJ9IHRvcCAtIFRoZSB0b3AgY29vcmRpbmF0ZSBvZiB0aGUgUmVjdGFuZ2xlLlxuICogQHByb3BlcnR5IHtudW1iZXJ9IHdpZHRoIC0gVGhlIHdpZHRoIG9mIFJlY3RhbmdsZS5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBoZWlnaHQgLSBUaGUgaGVpZ2h0IG9mIFJlY3RhbmdsZS5cbiAqL1xuXG4vKipcbiAqIFJldHVybnMgdGhlIHZpZXdwb3J0IGNvb3JkaW5hdGVzLlxuICogQHJldHVybnMge1JlY3RhbmdsZX0gVGhlIHZpZXdwb3J0IGNvb3JkaW5hdGVzLlxuICovXG5jb21tYW5kcy5tb2JpbGVWaWV3UG9ydFJlY3QgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVWaWV3UG9ydFJlY3QgKCkge1xuICByZXR1cm4gYXdhaXQgdGhpcy5nZXRWaWV3UG9ydFJlY3QoKTtcbn07XG5cbmNvbW1hbmRzLnNldFVybCA9IGFzeW5jIGZ1bmN0aW9uICh1cmwpIHtcbiAgYXdhaXQgdGhpcy5hZGIuc3RhcnRVcmkodXJsLCB0aGlzLm9wdHMuYXBwUGFja2FnZSk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IERlZXBMaW5rT3B0c1xuICogQHByb3BlcnR5IHshc3RyaW5nfSB1cmwgLSBUaGUgbmFtZSBvZiBVUkwgdG8gc3RhcnQuXG4gKiBAcHJvcGVydHkgeyFzdHJpbmd9IHBhY2thZ2UgLSBUaGUgbmFtZSBvZiB0aGUgcGFja2FnZSB0byBzdGFydCB0aGUgVVJJIHdpdGguXG4gKiBAcHJvcGVydHkgez9ib29sZWFufSB3YWl0Rm9yTGF1bmNoIFt0cnVlXSAtIGlmIGBmYWxzZWAgdGhlbiBhZGIgd29uJ3Qgd2FpdFxuICogZm9yIHRoZSBzdGFydGVkIGFjdGl2aXR5IHRvIHJldHVybiB0aGUgY29udHJvbFxuICovXG5cbi8qKlxuICogU3RhcnQgVVJMIHRoYXQgdGFrZSB1c2VycyBkaXJlY3RseSB0byBzcGVjaWZpYyBjb250ZW50IGluIHRoZSBhcHBcbiAqIEBwYXJhbSB7RGVlcExpbmtPcHRzfSBvcHRzXG4gKi9cbmNvbW1hbmRzLm1vYmlsZURlZXBMaW5rID0gYXN5bmMgZnVuY3Rpb24gKG9wdHMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgdXJsLFxuICAgIHBhY2thZ2U6IHBrZyxcbiAgICB3YWl0Rm9yTGF1bmNoLFxuICB9ID0gb3B0cztcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYWRiLnN0YXJ0VXJpKHVybCwgcGtnLCB7IHdhaXRGb3JMYXVuY2ggfSk7XG59O1xuXG5jb21tYW5kcy5vcGVuTm90aWZpY2F0aW9ucyA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZCgnL2FwcGl1bS9kZXZpY2Uvb3Blbl9ub3RpZmljYXRpb25zJywgJ1BPU1QnLCB7fSk7XG59O1xuXG5jb21tYW5kcy51cGRhdGVTZXR0aW5ncyA9IGFzeW5jIGZ1bmN0aW9uIChzZXR0aW5ncykge1xuICBhd2FpdCB0aGlzLnNldHRpbmdzLnVwZGF0ZShzZXR0aW5ncyk7XG4gIGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZCgnL2FwcGl1bS9zZXR0aW5ncycsICdQT1NUJywge3NldHRpbmdzfSk7XG59O1xuXG5jb21tYW5kcy5nZXRTZXR0aW5ncyA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgZHJpdmVyU2V0dGluZ3MgPSB0aGlzLnNldHRpbmdzLmdldFNldHRpbmdzKCk7XG4gIGNvbnN0IHNlcnZlclNldHRpbmdzID0gYXdhaXQgdGhpcy51aWF1dG9tYXRvcjIuandwcm94eS5jb21tYW5kKCcvYXBwaXVtL3NldHRpbmdzJywgJ0dFVCcpO1xuICByZXR1cm4gey4uLmRyaXZlclNldHRpbmdzLCAuLi5zZXJ2ZXJTZXR0aW5nc307XG59O1xuXG4vKipcbiAqIE92ZXJyaWRpbmcgYXBwaXVtLWFuZHJvaWQtZHJpdmVyJ3Mgd3JhcEJvb3RzdHJhcERpc2Nvbm5lY3QsXG4gKiB1bmxpa2UgaW4gYXBwaXVtLWFuZHJvaWQtZHJpdmVyIGF2b2lkaW5nIGFkYiByZXN0YXJ0aW5nIGFzIGl0IGludGVyblxuICoga2lsbHMgVWlBdXRvbWF0b3IyIHNlcnZlciBydW5uaW5nIGluIHRoZSBkZXZpY2UuXG4gKiovXG5oZWxwZXJzLndyYXBCb290c3RyYXBEaXNjb25uZWN0ID0gYXN5bmMgZnVuY3Rpb24gKHdyYXBwZWQpIHtcbiAgYXdhaXQgd3JhcHBlZCgpO1xufTtcblxuLy8gU3RvcCBwcm94eWluZyB0byBhbnkgQ2hyb21lZHJpdmVyIGFuZCByZWRpcmVjdCB0byB1aWF1dG9tYXRvcjJcbmhlbHBlcnMuc3VzcGVuZENocm9tZWRyaXZlclByb3h5ID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLmNocm9tZWRyaXZlciA9IG51bGw7XG4gIHRoaXMucHJveHlSZXFSZXMgPSB0aGlzLnVpYXV0b21hdG9yMi5wcm94eVJlcVJlcy5iaW5kKHRoaXMudWlhdXRvbWF0b3IyKTtcbiAgdGhpcy5wcm94eUNvbW1hbmQgPSB0aGlzLnVpYXV0b21hdG9yMi5wcm94eUNvbW1hbmQuYmluZCh0aGlzLnVpYXV0b21hdG9yMik7XG4gIHRoaXMuandwUHJveHlBY3RpdmUgPSB0cnVlO1xufTtcblxuLyoqXG4gKiBUaGUgbGlzdCBvZiBhdmFpbGFibGUgaW5mbyBlbnRyaWVzIGNhbiBiZSBmb3VuZCBhdFxuICogaHR0cHM6Ly9naXRodWIuY29tL2FwcGl1bS9hcHBpdW0tdWlhdXRvbWF0b3IyLXNlcnZlci9ibG9iL21hc3Rlci9hcHAvc3JjL21haW4vamF2YS9pby9hcHBpdW0vdWlhdXRvbWF0b3IyL2hhbmRsZXIvR2V0RGV2aWNlSW5mby5qYXZhXG4gKi9cbmNvbW1hbmRzLm1vYmlsZUdldERldmljZUluZm8gPSBhc3luYyBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLnVpYXV0b21hdG9yMi5qd3Byb3h5LmNvbW1hbmQoJy9hcHBpdW0vZGV2aWNlL2luZm8nLCAnR0VUJyk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFR5cGluZ09wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7IXN0cmluZ3xudW1iZXJ8Ym9vbGVhbn0gdGV4dCAtIFRoZSB0ZXh0IHRvIHR5cGVcbiAqL1xuXG4vKipcbiAqIFR5cGVzIHRoZSBnaXZlbiBVbmljb2RlIHN0cmluZy5cbiAqIEl0IGlzIGV4cGVjdGVkIHRoYXQgdGhlIGZvY3VzIGlzIGFscmVhZHkgcHV0XG4gKiB0byB0aGUgZGVzdGluYXRpb24gaW5wdXQgZmllbGQgYmVmb3JlIHRoaXMgbWV0aG9kIGlzIGNhbGxlZC5cbiAqXG4gKiBAcGFyYW0ge1R5cGluZ09wdGlvbnN9IG9wdHNcbiAqIEByZXR1cm5zIHtib29sZWFufSBgdHJ1ZWAgaWYgdGhlIGlucHV0IHRleHQgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IHNlbnQgdG8gYWRiXG4gKiBAdGhyb3dzIHtFcnJvcn0gaWYgYHRleHRgIHByb3BlcnR5IGhhcyBub3QgYmVlbiBwcm92aWRlZFxuICovXG5jb21tYW5kcy5tb2JpbGVUeXBlID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlVHlwZSAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICB0ZXh0LFxuICB9ID0gb3B0cztcbiAgaWYgKF8uaXNVbmRlZmluZWQodGV4dCkpIHtcbiAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KGBUaGUgJ3RleHQnIGFyZ3VtZW50IGlzIG1hbmRhdG9yeWApO1xuICB9XG4gIHJldHVybiBhd2FpdCB0aGlzLmFkYi50eXBlVW5pY29kZSh0ZXh0KTtcbn07XG5cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBJbnN0YWxsT3B0aW9uc1xuICogQHByb3BlcnR5IHtib29sZWFufSBhbGxvd1Rlc3RQYWNrYWdlcyBbZmFsc2VdIC0gU2V0IHRvIHRydWUgaW4gb3JkZXIgdG8gYWxsb3cgdGVzdFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFja2FnZXMgaW5zdGFsbGF0aW9uLlxuICogQHByb3BlcnR5IHtib29sZWFufSB1c2VTZGNhcmQgW2ZhbHNlXSAtIFNldCB0byB0cnVlIHRvIGluc3RhbGwgdGhlIGFwcCBvbiBzZGNhcmRcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0ZWFkIG9mIHRoZSBkZXZpY2UgbWVtb3J5LlxuICogQHByb3BlcnR5IHtib29sZWFufSBncmFudFBlcm1pc3Npb25zIFtmYWxzZV0gLSBTZXQgdG8gdHJ1ZSBpbiBvcmRlciB0byBncmFudCBhbGwgdGhlXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcm1pc3Npb25zIHJlcXVlc3RlZCBpbiB0aGUgYXBwbGljYXRpb24ncyBtYW5pZmVzdFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvbWF0aWNhbGx5IGFmdGVyIHRoZSBpbnN0YWxsYXRpb24gaXMgY29tcGxldGVkXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVyIEFuZHJvaWQgNisuXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IHJlcGxhY2UgW3RydWVdIC0gU2V0IGl0IHRvIGZhbHNlIGlmIHlvdSBkb24ndCB3YW50XG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGFwcGxpY2F0aW9uIHRvIGJlIHVwZ3JhZGVkL3JlaW5zdGFsbGVkXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXQgaXMgYWxyZWFkeSBwcmVzZW50IG9uIHRoZSBkZXZpY2UuXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IHBhcnRpYWxJbnN0YWxsIFtmYWxzZV0gLSBJbnN0YWxsIGFwa3MgcGFydGlhbGx5LiBJdCBpcyB1c2VkIGZvciAnaW5zdGFsbC1tdWx0aXBsZScuXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0dHBzOi8vYW5kcm9pZC5zdGFja2V4Y2hhbmdlLmNvbS9xdWVzdGlvbnMvMTExMDY0L3doYXQtaXMtYS1wYXJ0aWFsLWFwcGxpY2F0aW9uLWluc3RhbGwtdmlhLWFkYlxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gSW5zdGFsbE11bHRpcGxlQXBrc09wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7QXJyYXk8c3RyaW5nPn0gYXBrcyAtIFRoZSBsaXN0IG9mIEFQS3MgdG8gaW5zdGFsbC4gRWFjaCBBUEsgc2hvdWxkIGJlIGEgcGF0aCB0byBhIGFwa1xuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgZG93bmxvYWRhYmxlIFVSTCBhcyBIVFRQL0hUVFBTLlxuICogQHByb3BlcnR5IHtJbnN0YWxsT3B0aW9uc30gb3B0aW9uc1xuICovXG5cbi8qKlxuICogSW5zdGFsbCBtdWx0aXBsZSBBUEtzIHdpdGggYGluc3RhbGwtbXVsdGlwbGVgIG9wdGlvbi5cbiAqXG4gKiBAcGFyYW0ge0luc3RhbGxNdWx0aXBsZUFwa3NPcHRpb25zfSBvcHRzXG4gKiBAdGhyb3dzIHtFcnJvcn0gaWYgYW4gZXJyb3Igb2NjdXJlZCB3aGlsZSBpbnN0YWxsaW5nIHRoZSBnaXZlbiBBUEtzLlxuICovXG5jb21tYW5kcy5tb2JpbGVJbnN0YWxsTXVsdGlwbGVBcGtzID0gYXN5bmMgZnVuY3Rpb24gKG9wdHMgPSB7fSkge1xuICBpZiAoIV8uaXNBcnJheShvcHRzLmFwa3MpIHx8IF8uaXNFbXB0eShvcHRzLmFwa3MpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcignTm8gYXBrcyBhcmUgZ2l2ZW4gdG8gaW5zdGFsbCcpO1xuICB9XG4gIGNvbnN0IGFwa3MgPSBhd2FpdCBCLmFsbChvcHRzLmFwa3NcbiAgICAubWFwKChhcHApID0+IHRoaXMuaGVscGVycy5jb25maWd1cmVBcHAoYXBwLCBbQVBLX0VYVEVOU0lPTl0pKSk7XG4gIGF3YWl0IHRoaXMuYWRiLmluc3RhbGxNdWx0aXBsZUFwa3MoYXBrcywgb3B0cy5vcHRpb25zKTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gQmFja2dyb3VuZEFwcE9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBzZWNvbmRzIFRoZSBhbW91bnQgb2Ygc2Vjb25kcyB0byB3YWl0IGJldHdlZW5cbiAqIHB1dHRpbmcgdGhlIGFwcCB0byBiYWNrZ3JvdW5kIGFuZCByZXN0b3JpbmcgaXQuIEFueSBuZWdhdGl2ZSB2YWx1ZVxuICogbWVhbnMgdG8gbm90IHJlc3RvcmUgdGhlIGFwcCBhZnRlciBwdXR0aW5nIGl0IHRvIGJhY2tncm91bmQuXG4gKi9cblxuLyoqXG4gKiBQdXRzIHRoZSBhcHAgdG8gYmFja2dyb3VuZCBhbmQgd2FpdHMgdGhlIGdpdmVuIG51bWJlciBvZiBzZWNvbmRzIFRoZW4gcmVzdG9yZXMgdGhlIGFwcFxuICogaWYgbmVjZXNzYXJ5LiBUaGUgY2FsbCBpcyBibG9ja2luZy5cbiAqXG4gKiBAcGFyYW0ge0JhY2tncm91bmRBcHBPcHRpb25zfSBvcHRzXG4gKi9cbmNvbW1hbmRzLm1vYmlsZUJhY2tncm91bmRBcHAgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVCYWNrZ3JvdW5kQXBwIChvcHRzID0ge30pIHtcbiAgY29uc3Qge1xuICAgIHNlY29uZHMgPSAtMSxcbiAgfSA9IG9wdHM7XG4gIHJldHVybiBhd2FpdCB0aGlzLmJhY2tncm91bmQoc2Vjb25kcyk7XG59O1xuXG5PYmplY3QuYXNzaWduKGV4dGVuc2lvbnMsIGNvbW1hbmRz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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"general.js","names":["_lodash","_interopRequireDefault","require","_bluebird","_driver","_extensions","extensions","commands","helpers","getPageSource","uiautomator2","jwproxy","command","getClipboard","adb","getApiLevel","doSendKeys","params","keyevent","keycode","metastate","log","debug","back","getDisplayDensity","getWindowSize","getWindowRect","width","height","x","y","executeMobile","mobileCommand","opts","mobileCommandsMapping","shell","execEmuConsoleCommand","dragGesture","flingGesture","doubleClickGesture","clickGesture","longClickGesture","pinchCloseGesture","pinchOpenGesture","swipeGesture","scrollGesture","scrollBackTo","scroll","viewportScreenshot","viewportRect","deepLink","startLogsBroadcast","stopLogsBroadcast","acceptAlert","dismissAlert","batteryInfo","deviceInfo","getDeviceTime","changePermissions","getPermissions","performEditorAction","startScreenStreaming","stopScreenStreaming","getNotifications","listSms","type","replaceElementValue","pushFile","pullFile","pullFolder","deleteFile","isAppInstalled","queryAppState","activateApp","removeApp","terminateApp","installApp","clearApp","backgroundApp","getCurrentActivity","getCurrentPackage","startActivity","startService","stopService","broadcast","getContexts","getAppStrings","installMultipleApks","lock","unlock","isLocked","refreshGpsCache","startMediaProjectionRecording","isMediaProjectionRecordingRunning","stopMediaProjectionRecording","getConnectivity","setConnectivity","hideKeyboard","isKeyboardShown","pressKey","getSystemBars","fingerprint","sendSms","gsmCall","gsmSignal","gsmVoice","powerAc","powerCapacity","networkSpeed","sensorSet","_","has","errors","UnknownCommandError","keys","mobileViewportScreenshot","getViewportScreenshot","mobileViewPortRect","getViewPortRect","setUrl","url","startUri","appPackage","mobileDeepLink","package","pkg","waitForLaunch","openNotifications","updateSettings","settings","update","getSettings","driverSettings","serverSettings","wrapBootstrapDisconnect","wrapped","suspendChromedriverProxy","chromedriver","proxyReqRes","bind","proxyCommand","jwpProxyActive","mobileGetDeviceInfo","mobileType","text","isUndefined","errorAndThrow","typeUnicode","mobileInstallMultipleApks","isArray","apks","isEmpty","InvalidArgumentError","B","all","map","app","configureApp","APK_EXTENSION","options","mobileBackgroundApp","seconds","background","Object","assign","_default","exports","default"],"sources":["../../../lib/commands/general.js"],"sourcesContent":["import _ from 'lodash';\nimport B from 'bluebird';\nimport { errors } from 'appium/driver';\nimport { APK_EXTENSION } from '../extensions';\n\nlet extensions = {},\n commands = {},\n helpers = {};\n\ncommands.getPageSource = async function () {\n return await this.uiautomator2.jwproxy.command('/source', 'GET', {});\n};\n\ncommands.getClipboard = async function () {\n return (await this.adb.getApiLevel() < 29)\n ? (await this.uiautomator2.jwproxy.command('/appium/device/get_clipboard', 'POST', {}))\n : (await this.adb.getClipboard());\n};\n\n// Need to override this for correct unicode support\ncommands.doSendKeys = async function (params) {\n await this.uiautomator2.jwproxy.command('/keys', 'POST', params);\n};\n\n// uiautomator2 doesn't support metastate for keyevents\ncommands.keyevent = async function (keycode, metastate) {\n this.log.debug(`Ignoring metastate ${metastate}`);\n await this.adb.keyevent(keycode);\n};\n\n// Use ADB since we don't have UiAutomator\ncommands.back = async function () {\n await this.adb.keyevent(4);\n};\n\ncommands.getDisplayDensity = async function getDisplayDensity () {\n return await this.uiautomator2.jwproxy.command('/appium/device/display_density', 'GET', {});\n};\n\n// memoized in constructor\ncommands.getWindowSize = async function () {\n return await this.uiautomator2.jwproxy.command('/window/current/size', 'GET', {});\n};\n\n// For W3C\ncommands.getWindowRect = async function () {\n const {width, height} = await this.getWindowSize();\n return {\n width,\n height,\n x: 0,\n y: 0,\n };\n};\n\nextensions.executeMobile = async function (mobileCommand, opts = {}) {\n const mobileCommandsMapping = {\n shell: 'mobileShell',\n\n execEmuConsoleCommand: 'mobileExecEmuConsoleCommand',\n\n dragGesture: 'mobileDragGesture',\n flingGesture: 'mobileFlingGesture',\n doubleClickGesture: 'mobileDoubleClickGesture',\n clickGesture: 'mobileClickGesture',\n longClickGesture: 'mobileLongClickGesture',\n pinchCloseGesture: 'mobilePinchCloseGesture',\n pinchOpenGesture: 'mobilePinchOpenGesture',\n swipeGesture: 'mobileSwipeGesture',\n scrollGesture: 'mobileScrollGesture',\n scrollBackTo: 'mobileScrollBackTo',\n scroll: 'mobileScroll',\n viewportScreenshot: 'mobileViewportScreenshot',\n viewportRect: 'mobileViewPortRect',\n\n deepLink: 'mobileDeepLink',\n\n startLogsBroadcast: 'mobileStartLogsBroadcast',\n stopLogsBroadcast: 'mobileStopLogsBroadcast',\n\n acceptAlert: 'mobileAcceptAlert',\n dismissAlert: 'mobileDismissAlert',\n\n batteryInfo: 'mobileGetBatteryInfo',\n\n deviceInfo: 'mobileGetDeviceInfo',\n\n getDeviceTime: 'mobileGetDeviceTime',\n\n changePermissions: 'mobileChangePermissions',\n getPermissions: 'mobileGetPermissions',\n\n performEditorAction: 'mobilePerformEditorAction',\n\n startScreenStreaming: 'mobileStartScreenStreaming',\n stopScreenStreaming: 'mobileStopScreenStreaming',\n\n getNotifications: 'mobileGetNotifications',\n\n listSms: 'mobileListSms',\n\n type: 'mobileType',\n replaceElementValue: 'mobileReplaceElementValue',\n\n pushFile: 'mobilePushFile',\n pullFile: 'mobilePullFile',\n pullFolder: 'mobilePullFolder',\n deleteFile: 'mobileDeleteFile',\n\n isAppInstalled: 'mobileIsAppInstalled',\n queryAppState: 'mobileQueryAppState',\n activateApp: 'mobileActivateApp',\n removeApp: 'mobileRemoveApp',\n terminateApp: 'mobileTerminateApp',\n installApp: 'mobileInstallApp',\n clearApp: 'mobileClearApp',\n backgroundApp: 'mobileBackgroundApp',\n getCurrentActivity: 'getCurrentActivity',\n getCurrentPackage: 'getCurrentPackage',\n\n startActivity: 'mobileStartActivity',\n startService: 'mobileStartService',\n stopService: 'mobileStopService',\n broadcast: 'mobileBroadcast',\n\n getContexts: 'mobileGetContexts',\n\n getAppStrings: 'mobileGetAppStrings',\n\n installMultipleApks: 'mobileInstallMultipleApks',\n\n lock: 'lock',\n unlock: 'mobileUnlock',\n isLocked: 'isLocked',\n\n refreshGpsCache: 'mobileRefreshGpsCache',\n\n startMediaProjectionRecording: 'mobileStartMediaProjectionRecording',\n isMediaProjectionRecordingRunning: 'mobileIsMediaProjectionRecordingRunning',\n stopMediaProjectionRecording: 'mobileStopMediaProjectionRecording',\n\n getConnectivity: 'mobileGetConnectivity',\n setConnectivity: 'mobileSetConnectivity',\n\n hideKeyboard: 'mobileHideKeyboard',\n isKeyboardShown: 'isKeyboardShown',\n\n pressKey: 'mobilePressKey',\n\n getDisplayDensity: 'getDisplayDensity',\n getSystemBars: 'getSystemBars',\n\n fingerprint: 'mobilefingerprint',\n sendSms: 'mobileSendSms',\n gsmCall: 'mobileGsmCall',\n gsmSignal: 'mobileGsmSignal',\n gsmVoice: 'mobileGsmVoice',\n powerAc: 'mobilePowerAC',\n powerCapacity: 'mobilePowerCapacity',\n networkSpeed: 'mobileNetworkSpeed',\n sensorSet: 'sensorSet',\n };\n\n if (!_.has(mobileCommandsMapping, mobileCommand)) {\n throw new errors.UnknownCommandError(`Unknown mobile command \"${mobileCommand}\". ` +\n `Only ${_.keys(mobileCommandsMapping)} commands are supported.`);\n }\n return await this[mobileCommandsMapping[mobileCommand]](opts);\n};\n\ncommands.mobileViewportScreenshot = async function () {\n return await this.getViewportScreenshot();\n};\n\n/**\n * @typedef {object} Rectangle\n * @property {number} left - The left coordinate of the Rectangle.\n * @property {number} top - The top coordinate of the Rectangle.\n * @property {number} width - The width of Rectangle.\n * @property {number} height - The height of Rectangle.\n */\n\n/**\n * Returns the viewport coordinates.\n * @returns {Rectangle} The viewport coordinates.\n */\ncommands.mobileViewPortRect = async function mobileViewPortRect () {\n return await this.getViewPortRect();\n};\n\ncommands.setUrl = async function (url) {\n await this.adb.startUri(url, this.opts.appPackage);\n};\n\n/**\n * @typedef {object} DeepLinkOpts\n * @property {!string} url - The name of URL to start.\n * @property {!string} package - The name of the package to start the URI with.\n * @property {?boolean} waitForLaunch [true] - if `false` then adb won't wait\n * for the started activity to return the control\n */\n\n/**\n * Start URL that take users directly to specific content in the app\n * @param {DeepLinkOpts} opts\n */\ncommands.mobileDeepLink = async function (opts = {}) {\n const {\n url,\n package: pkg,\n waitForLaunch,\n } = opts;\n return await this.adb.startUri(url, pkg, { waitForLaunch });\n};\n\ncommands.openNotifications = async function () {\n return await this.uiautomator2.jwproxy.command('/appium/device/open_notifications', 'POST', {});\n};\n\ncommands.updateSettings = async function (settings) {\n await this.settings.update(settings);\n await this.uiautomator2.jwproxy.command('/appium/settings', 'POST', {settings});\n};\n\ncommands.getSettings = async function () {\n const driverSettings = this.settings.getSettings();\n const serverSettings = await this.uiautomator2.jwproxy.command('/appium/settings', 'GET');\n return {...driverSettings, ...serverSettings};\n};\n\n/**\n * Overriding appium-android-driver's wrapBootstrapDisconnect,\n * unlike in appium-android-driver avoiding adb restarting as it intern\n * kills UiAutomator2 server running in the device.\n **/\nhelpers.wrapBootstrapDisconnect = async function (wrapped) {\n await wrapped();\n};\n\n// Stop proxying to any Chromedriver and redirect to uiautomator2\nhelpers.suspendChromedriverProxy = function () {\n this.chromedriver = null;\n this.proxyReqRes = this.uiautomator2.proxyReqRes.bind(this.uiautomator2);\n this.proxyCommand = this.uiautomator2.proxyCommand.bind(this.uiautomator2);\n this.jwpProxyActive = true;\n};\n\n/**\n * The list of available info entries can be found at\n * https://github.com/appium/appium-uiautomator2-server/blob/master/app/src/main/java/io/appium/uiautomator2/handler/GetDeviceInfo.java\n */\ncommands.mobileGetDeviceInfo = async function () {\n return await this.uiautomator2.jwproxy.command('/appium/device/info', 'GET');\n};\n\n/**\n * @typedef {Object} TypingOptions\n * @property {!string|number|boolean} text - The text to type\n */\n\n/**\n * Types the given Unicode string.\n * It is expected that the focus is already put\n * to the destination input field before this method is called.\n *\n * @param {TypingOptions} opts\n * @returns {boolean} `true` if the input text has been successfully sent to adb\n * @throws {Error} if `text` property has not been provided\n */\ncommands.mobileType = async function mobileType (opts = {}) {\n const {\n text,\n } = opts;\n if (_.isUndefined(text)) {\n this.log.errorAndThrow(`The 'text' argument is mandatory`);\n }\n return await this.adb.typeUnicode(text);\n};\n\n\n/**\n * @typedef {Object} InstallOptions\n * @property {boolean} allowTestPackages [false] - Set to true in order to allow test\n * packages installation.\n * @property {boolean} useSdcard [false] - Set to true to install the app on sdcard\n * instead of the device memory.\n * @property {boolean} grantPermissions [false] - Set to true in order to grant all the\n * permissions requested in the application's manifest\n * automatically after the installation is completed\n * under Android 6+.\n * @property {boolean} replace [true] - Set it to false if you don't want\n * the application to be upgraded/reinstalled\n * if it is already present on the device.\n * @property {boolean} partialInstall [false] - Install apks partially. It is used for 'install-multiple'.\n * https://android.stackexchange.com/questions/111064/what-is-a-partial-application-install-via-adb\n */\n\n/**\n * @typedef {Object} InstallMultipleApksOptions\n * @property {Array<string>} apks - The list of APKs to install. Each APK should be a path to a apk\n * or downloadable URL as HTTP/HTTPS.\n * @property {InstallOptions} options\n */\n\n/**\n * Install multiple APKs with `install-multiple` option.\n *\n * @param {InstallMultipleApksOptions} opts\n * @throws {Error} if an error occured while installing the given APKs.\n */\ncommands.mobileInstallMultipleApks = async function (opts = {}) {\n if (!_.isArray(opts.apks) || _.isEmpty(opts.apks)) {\n throw new errors.InvalidArgumentError('No apks are given to install');\n }\n const apks = await B.all(opts.apks\n .map((app) => this.helpers.configureApp(app, [APK_EXTENSION])));\n await this.adb.installMultipleApks(apks, opts.options);\n};\n\n/**\n * @typedef {Object} BackgroundAppOptions\n * @property {number} seconds The amount of seconds to wait between\n * putting the app to background and restoring it. Any negative value\n * means to not restore the app after putting it to background.\n */\n\n/**\n * Puts the app to background and waits the given number of seconds Then restores the app\n * if necessary. The call is blocking.\n *\n * @param {BackgroundAppOptions} opts\n */\ncommands.mobileBackgroundApp = async function mobileBackgroundApp (opts = {}) {\n const {\n seconds = -1,\n } = opts;\n return await this.background(seconds);\n};\n\nObject.assign(extensions, commands, helpers);\n\nexport default extensions;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"general.js","names":["_lodash","_interopRequireDefault","require","_bluebird","_driver","_extensions","extensions","commands","helpers","getPageSource","uiautomator2","jwproxy","command","getClipboard","adb","getApiLevel","doSendKeys","params","keyevent","keycode","metastate","log","debug","back","getDisplayDensity","getWindowSize","getWindowRect","width","height","x","y","executeMobile","mobileCommand","opts","mobileCommandsMapping","shell","execEmuConsoleCommand","dragGesture","flingGesture","doubleClickGesture","clickGesture","longClickGesture","pinchCloseGesture","pinchOpenGesture","swipeGesture","scrollGesture","scrollBackTo","scroll","viewportScreenshot","viewportRect","deepLink","startLogsBroadcast","stopLogsBroadcast","acceptAlert","dismissAlert","batteryInfo","deviceInfo","getDeviceTime","changePermissions","getPermissions","performEditorAction","startScreenStreaming","stopScreenStreaming","getNotifications","openNotifications","listSms","type","replaceElementValue","pushFile","pullFile","pullFolder","deleteFile","isAppInstalled","queryAppState","activateApp","removeApp","terminateApp","installApp","clearApp","backgroundApp","getCurrentActivity","getCurrentPackage","startActivity","startService","stopService","broadcast","getContexts","getAppStrings","installMultipleApks","lock","unlock","isLocked","refreshGpsCache","startMediaProjectionRecording","isMediaProjectionRecordingRunning","stopMediaProjectionRecording","getConnectivity","setConnectivity","toggleGps","isGpsEnables","hideKeyboard","isKeyboardShown","pressKey","getSystemBars","fingerprint","sendSms","gsmCall","gsmSignal","gsmVoice","powerAc","powerCapacity","networkSpeed","sensorSet","getPerformanceData","getPerformanceDataTypes","_","has","errors","UnknownCommandError","keys","mobileViewportScreenshot","getViewportScreenshot","mobileViewPortRect","getViewPortRect","setUrl","url","startUri","appPackage","mobileDeepLink","package","pkg","waitForLaunch","updateSettings","settings","update","getSettings","driverSettings","serverSettings","wrapBootstrapDisconnect","wrapped","suspendChromedriverProxy","chromedriver","proxyReqRes","bind","proxyCommand","jwpProxyActive","mobileGetDeviceInfo","mobileType","text","isUndefined","errorAndThrow","typeUnicode","mobileInstallMultipleApks","isArray","apks","isEmpty","InvalidArgumentError","B","all","map","app","configureApp","APK_EXTENSION","options","mobileBackgroundApp","seconds","background","Object","assign","_default","exports","default"],"sources":["../../../lib/commands/general.js"],"sourcesContent":["import _ from 'lodash';\nimport B from 'bluebird';\nimport { errors } from 'appium/driver';\nimport { APK_EXTENSION } from '../extensions';\n\nlet extensions = {},\n commands = {},\n helpers = {};\n\ncommands.getPageSource = async function () {\n return await this.uiautomator2.jwproxy.command('/source', 'GET', {});\n};\n\ncommands.getClipboard = async function () {\n return (await this.adb.getApiLevel() < 29)\n ? (await this.uiautomator2.jwproxy.command('/appium/device/get_clipboard', 'POST', {}))\n : (await this.adb.getClipboard());\n};\n\n// Need to override this for correct unicode support\ncommands.doSendKeys = async function (params) {\n await this.uiautomator2.jwproxy.command('/keys', 'POST', params);\n};\n\n// uiautomator2 doesn't support metastate for keyevents\ncommands.keyevent = async function (keycode, metastate) {\n this.log.debug(`Ignoring metastate ${metastate}`);\n await this.adb.keyevent(keycode);\n};\n\n// Use ADB since we don't have UiAutomator\ncommands.back = async function () {\n await this.adb.keyevent(4);\n};\n\ncommands.getDisplayDensity = async function getDisplayDensity () {\n return await this.uiautomator2.jwproxy.command('/appium/device/display_density', 'GET', {});\n};\n\n// memoized in constructor\ncommands.getWindowSize = async function () {\n return await this.uiautomator2.jwproxy.command('/window/current/size', 'GET', {});\n};\n\n// For W3C\ncommands.getWindowRect = async function () {\n const {width, height} = await this.getWindowSize();\n return {\n width,\n height,\n x: 0,\n y: 0,\n };\n};\n\nextensions.executeMobile = async function (mobileCommand, opts = {}) {\n const mobileCommandsMapping = {\n shell: 'mobileShell',\n\n execEmuConsoleCommand: 'mobileExecEmuConsoleCommand',\n\n dragGesture: 'mobileDragGesture',\n flingGesture: 'mobileFlingGesture',\n doubleClickGesture: 'mobileDoubleClickGesture',\n clickGesture: 'mobileClickGesture',\n longClickGesture: 'mobileLongClickGesture',\n pinchCloseGesture: 'mobilePinchCloseGesture',\n pinchOpenGesture: 'mobilePinchOpenGesture',\n swipeGesture: 'mobileSwipeGesture',\n scrollGesture: 'mobileScrollGesture',\n scrollBackTo: 'mobileScrollBackTo',\n scroll: 'mobileScroll',\n viewportScreenshot: 'mobileViewportScreenshot',\n viewportRect: 'mobileViewPortRect',\n\n deepLink: 'mobileDeepLink',\n\n startLogsBroadcast: 'mobileStartLogsBroadcast',\n stopLogsBroadcast: 'mobileStopLogsBroadcast',\n\n acceptAlert: 'mobileAcceptAlert',\n dismissAlert: 'mobileDismissAlert',\n\n batteryInfo: 'mobileGetBatteryInfo',\n\n deviceInfo: 'mobileGetDeviceInfo',\n\n getDeviceTime: 'mobileGetDeviceTime',\n\n changePermissions: 'mobileChangePermissions',\n getPermissions: 'mobileGetPermissions',\n\n performEditorAction: 'mobilePerformEditorAction',\n\n startScreenStreaming: 'mobileStartScreenStreaming',\n stopScreenStreaming: 'mobileStopScreenStreaming',\n\n getNotifications: 'mobileGetNotifications',\n openNotifications: 'openNotifications',\n\n listSms: 'mobileListSms',\n\n type: 'mobileType',\n replaceElementValue: 'mobileReplaceElementValue',\n\n pushFile: 'mobilePushFile',\n pullFile: 'mobilePullFile',\n pullFolder: 'mobilePullFolder',\n deleteFile: 'mobileDeleteFile',\n\n isAppInstalled: 'mobileIsAppInstalled',\n queryAppState: 'mobileQueryAppState',\n activateApp: 'mobileActivateApp',\n removeApp: 'mobileRemoveApp',\n terminateApp: 'mobileTerminateApp',\n installApp: 'mobileInstallApp',\n clearApp: 'mobileClearApp',\n backgroundApp: 'mobileBackgroundApp',\n getCurrentActivity: 'getCurrentActivity',\n getCurrentPackage: 'getCurrentPackage',\n\n startActivity: 'mobileStartActivity',\n startService: 'mobileStartService',\n stopService: 'mobileStopService',\n broadcast: 'mobileBroadcast',\n\n getContexts: 'mobileGetContexts',\n\n getAppStrings: 'mobileGetAppStrings',\n\n installMultipleApks: 'mobileInstallMultipleApks',\n\n lock: 'lock',\n unlock: 'mobileUnlock',\n isLocked: 'isLocked',\n\n refreshGpsCache: 'mobileRefreshGpsCache',\n\n startMediaProjectionRecording: 'mobileStartMediaProjectionRecording',\n isMediaProjectionRecordingRunning: 'mobileIsMediaProjectionRecordingRunning',\n stopMediaProjectionRecording: 'mobileStopMediaProjectionRecording',\n\n getConnectivity: 'mobileGetConnectivity',\n setConnectivity: 'mobileSetConnectivity',\n toggleGps: 'toggleLocationServices',\n isGpsEnables: 'isLocationServicesEnabled',\n\n hideKeyboard: 'mobileHideKeyboard',\n isKeyboardShown: 'isKeyboardShown',\n\n pressKey: 'mobilePressKey',\n\n getDisplayDensity: 'getDisplayDensity',\n getSystemBars: 'getSystemBars',\n\n fingerprint: 'mobilefingerprint',\n sendSms: 'mobileSendSms',\n gsmCall: 'mobileGsmCall',\n gsmSignal: 'mobileGsmSignal',\n gsmVoice: 'mobileGsmVoice',\n powerAc: 'mobilePowerAC',\n powerCapacity: 'mobilePowerCapacity',\n networkSpeed: 'mobileNetworkSpeed',\n sensorSet: 'sensorSet',\n\n getPerformanceData: 'mobileGetPerformanceData',\n getPerformanceDataTypes: 'getPerformanceDataTypes',\n };\n\n if (!_.has(mobileCommandsMapping, mobileCommand)) {\n throw new errors.UnknownCommandError(`Unknown mobile command \"${mobileCommand}\". ` +\n `Only ${_.keys(mobileCommandsMapping)} commands are supported.`);\n }\n return await this[mobileCommandsMapping[mobileCommand]](opts);\n};\n\ncommands.mobileViewportScreenshot = async function () {\n return await this.getViewportScreenshot();\n};\n\n/**\n * @typedef {object} Rectangle\n * @property {number} left - The left coordinate of the Rectangle.\n * @property {number} top - The top coordinate of the Rectangle.\n * @property {number} width - The width of Rectangle.\n * @property {number} height - The height of Rectangle.\n */\n\n/**\n * Returns the viewport coordinates.\n * @returns {Rectangle} The viewport coordinates.\n */\ncommands.mobileViewPortRect = async function mobileViewPortRect () {\n return await this.getViewPortRect();\n};\n\ncommands.setUrl = async function (url) {\n await this.adb.startUri(url, this.opts.appPackage);\n};\n\n/**\n * @typedef {object} DeepLinkOpts\n * @property {!string} url - The name of URL to start.\n * @property {!string} package - The name of the package to start the URI with.\n * @property {?boolean} waitForLaunch [true] - if `false` then adb won't wait\n * for the started activity to return the control\n */\n\n/**\n * Start URL that take users directly to specific content in the app\n * @param {DeepLinkOpts} opts\n */\ncommands.mobileDeepLink = async function (opts = {}) {\n const {\n url,\n package: pkg,\n waitForLaunch,\n } = opts;\n return await this.adb.startUri(url, pkg, { waitForLaunch });\n};\n\ncommands.openNotifications = async function () {\n return await this.uiautomator2.jwproxy.command('/appium/device/open_notifications', 'POST', {});\n};\n\ncommands.updateSettings = async function (settings) {\n await this.settings.update(settings);\n await this.uiautomator2.jwproxy.command('/appium/settings', 'POST', {settings});\n};\n\ncommands.getSettings = async function () {\n const driverSettings = this.settings.getSettings();\n const serverSettings = await this.uiautomator2.jwproxy.command('/appium/settings', 'GET');\n return {...driverSettings, ...serverSettings};\n};\n\n/**\n * Overriding appium-android-driver's wrapBootstrapDisconnect,\n * unlike in appium-android-driver avoiding adb restarting as it intern\n * kills UiAutomator2 server running in the device.\n **/\nhelpers.wrapBootstrapDisconnect = async function (wrapped) {\n await wrapped();\n};\n\n// Stop proxying to any Chromedriver and redirect to uiautomator2\nhelpers.suspendChromedriverProxy = function () {\n this.chromedriver = null;\n this.proxyReqRes = this.uiautomator2.proxyReqRes.bind(this.uiautomator2);\n this.proxyCommand = this.uiautomator2.proxyCommand.bind(this.uiautomator2);\n this.jwpProxyActive = true;\n};\n\n/**\n * The list of available info entries can be found at\n * https://github.com/appium/appium-uiautomator2-server/blob/master/app/src/main/java/io/appium/uiautomator2/handler/GetDeviceInfo.java\n */\ncommands.mobileGetDeviceInfo = async function () {\n return await this.uiautomator2.jwproxy.command('/appium/device/info', 'GET');\n};\n\n/**\n * @typedef {Object} TypingOptions\n * @property {!string|number|boolean} text - The text to type\n */\n\n/**\n * Types the given Unicode string.\n * It is expected that the focus is already put\n * to the destination input field before this method is called.\n *\n * @param {TypingOptions} opts\n * @returns {boolean} `true` if the input text has been successfully sent to adb\n * @throws {Error} if `text` property has not been provided\n */\ncommands.mobileType = async function mobileType (opts = {}) {\n const {\n text,\n } = opts;\n if (_.isUndefined(text)) {\n this.log.errorAndThrow(`The 'text' argument is mandatory`);\n }\n return await this.adb.typeUnicode(text);\n};\n\n\n/**\n * @typedef {Object} InstallOptions\n * @property {boolean} allowTestPackages [false] - Set to true in order to allow test\n * packages installation.\n * @property {boolean} useSdcard [false] - Set to true to install the app on sdcard\n * instead of the device memory.\n * @property {boolean} grantPermissions [false] - Set to true in order to grant all the\n * permissions requested in the application's manifest\n * automatically after the installation is completed\n * under Android 6+.\n * @property {boolean} replace [true] - Set it to false if you don't want\n * the application to be upgraded/reinstalled\n * if it is already present on the device.\n * @property {boolean} partialInstall [false] - Install apks partially. It is used for 'install-multiple'.\n * https://android.stackexchange.com/questions/111064/what-is-a-partial-application-install-via-adb\n */\n\n/**\n * @typedef {Object} InstallMultipleApksOptions\n * @property {Array<string>} apks - The list of APKs to install. Each APK should be a path to a apk\n * or downloadable URL as HTTP/HTTPS.\n * @property {InstallOptions} options\n */\n\n/**\n * Install multiple APKs with `install-multiple` option.\n *\n * @param {InstallMultipleApksOptions} opts\n * @throws {Error} if an error occured while installing the given APKs.\n */\ncommands.mobileInstallMultipleApks = async function (opts = {}) {\n if (!_.isArray(opts.apks) || _.isEmpty(opts.apks)) {\n throw new errors.InvalidArgumentError('No apks are given to install');\n }\n const apks = await B.all(opts.apks\n .map((app) => this.helpers.configureApp(app, [APK_EXTENSION])));\n await this.adb.installMultipleApks(apks, opts.options);\n};\n\n/**\n * @typedef {Object} BackgroundAppOptions\n * @property {number} seconds The amount of seconds to wait between\n * putting the app to background and restoring it. Any negative value\n * means to not restore the app after putting it to background.\n */\n\n/**\n * Puts the app to background and waits the given number of seconds Then restores the app\n * if necessary. The call is blocking.\n *\n * @param {BackgroundAppOptions} opts\n */\ncommands.mobileBackgroundApp = async function mobileBackgroundApp (opts = {}) {\n const {\n seconds = -1,\n } = opts;\n return await this.background(seconds);\n};\n\nObject.assign(extensions, commands, helpers);\n\nexport default extensions;\n"],"mappings":"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"}
|
|
@@ -21,4 +21,4 @@ let commands = {};
|
|
|
21
21
|
Object.assign(commands, _alert.default, _find.default, _general.default, _touch.default, _actions.default, _element.default, _viewport.default, _screenshot.default, _battery.default, _gestures.default, _appStrings.default);
|
|
22
22
|
var _default = commands;
|
|
23
23
|
exports.default = _default;
|
|
24
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
24
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYWxlcnQiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9maW5kIiwiX2dlbmVyYWwiLCJfdG91Y2giLCJfZWxlbWVudCIsIl9hY3Rpb25zIiwiX3ZpZXdwb3J0IiwiX3NjcmVlbnNob3QiLCJfYmF0dGVyeSIsIl9nZXN0dXJlcyIsIl9hcHBTdHJpbmdzIiwiY29tbWFuZHMiLCJPYmplY3QiLCJhc3NpZ24iLCJhbGVydENtZHMiLCJmaW5kQ21kcyIsImdlbmVyYWxDbWRzIiwidG91Y2hDbWRzIiwiYWN0aW9uc0NtZHMiLCJlbGVtZW50Q21kcyIsInZpZXdwb3J0Q21kcyIsInNjcmVlbnNob3RDbWRzIiwiYmF0dGVyeUNtZHMiLCJnZXN0dXJlc0NtZHMiLCJhcHBTdHJpbmdzQ21kcyIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsImRlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvY29tbWFuZHMvaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFsZXJ0Q21kcyBmcm9tICcuL2FsZXJ0JztcbmltcG9ydCBmaW5kQ21kcyBmcm9tICcuL2ZpbmQnO1xuaW1wb3J0IGdlbmVyYWxDbWRzIGZyb20gJy4vZ2VuZXJhbCc7XG5pbXBvcnQgdG91Y2hDbWRzIGZyb20gJy4vdG91Y2gnO1xuaW1wb3J0IGVsZW1lbnRDbWRzIGZyb20gJy4vZWxlbWVudCc7XG5pbXBvcnQgYWN0aW9uc0NtZHMgZnJvbSAnLi9hY3Rpb25zJztcbmltcG9ydCB2aWV3cG9ydENtZHMgZnJvbSAnLi92aWV3cG9ydCc7XG5pbXBvcnQgc2NyZWVuc2hvdENtZHMgZnJvbSAnLi9zY3JlZW5zaG90JztcbmltcG9ydCBiYXR0ZXJ5Q21kcyBmcm9tICcuL2JhdHRlcnknO1xuaW1wb3J0IGdlc3R1cmVzQ21kcyBmcm9tICcuL2dlc3R1cmVzJztcbmltcG9ydCBhcHBTdHJpbmdzQ21kcyBmcm9tICcuL2FwcC1zdHJpbmdzJztcblxubGV0IGNvbW1hbmRzID0ge307XG5PYmplY3QuYXNzaWduKFxuICBjb21tYW5kcyxcbiAgYWxlcnRDbWRzLFxuICBmaW5kQ21kcyxcbiAgZ2VuZXJhbENtZHMsXG4gIHRvdWNoQ21kcyxcbiAgYWN0aW9uc0NtZHMsXG4gIGVsZW1lbnRDbWRzLFxuICB2aWV3cG9ydENtZHMsXG4gIHNjcmVlbnNob3RDbWRzLFxuICBiYXR0ZXJ5Q21kcyxcbiAgZ2VzdHVyZXNDbWRzLFxuICBhcHBTdHJpbmdzQ21kcyxcbiAgLy8gYWRkIG90aGVyIGNvbW1hbmQgdHlwZXMgaGVyZVxuKTtcblxuZXhwb3J0IGRlZmF1bHQgY29tbWFuZHM7XG5cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxLQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRSxRQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRyxNQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSSxRQUFBLEdBQUFMLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSyxRQUFBLEdBQUFOLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBTSxTQUFBLEdBQUFQLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBTyxXQUFBLEdBQUFSLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBUSxRQUFBLEdBQUFULHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBUyxTQUFBLEdBQUFWLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBVSxXQUFBLEdBQUFYLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFJVyxRQUFRLEdBQUcsQ0FBQyxDQUFDO0FBQ2pCQyxNQUFNLENBQUNDLE1BQU0sQ0FDWEYsUUFBUSxFQUNSRyxjQUFTLEVBQ1RDLGFBQVEsRUFDUkMsZ0JBQVcsRUFDWEMsY0FBUyxFQUNUQyxnQkFBVyxFQUNYQyxnQkFBVyxFQUNYQyxpQkFBWSxFQUNaQyxtQkFBYyxFQUNkQyxnQkFBVyxFQUNYQyxpQkFBWSxFQUNaQyxtQkFFRixDQUFDO0FBQUMsSUFBQUMsUUFBQSxHQUVhZCxRQUFRO0FBQUFlLE9BQUEsQ0FBQUMsT0FBQSxHQUFBRixRQUFBIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["_alert","_interopRequireDefault","require","_find","_general","_touch","_element","_actions","_viewport","_screenshot","_battery","_gestures","_appStrings","commands","Object","assign","alertCmds","findCmds","generalCmds","touchCmds","actionsCmds","elementCmds","viewportCmds","screenshotCmds","batteryCmds","gesturesCmds","appStringsCmds","_default","exports","default"],"sources":["../../../lib/commands/index.js"],"sourcesContent":["import alertCmds from './alert';\nimport findCmds from './find';\nimport generalCmds from './general';\nimport touchCmds from './touch';\nimport elementCmds from './element';\nimport actionsCmds from './actions';\nimport viewportCmds from './viewport';\nimport screenshotCmds from './screenshot';\nimport batteryCmds from './battery';\nimport gesturesCmds from './gestures';\nimport appStringsCmds from './app-strings';\n\nlet commands = {};\nObject.assign(\n commands,\n alertCmds,\n findCmds,\n generalCmds,\n touchCmds,\n actionsCmds,\n elementCmds,\n viewportCmds,\n screenshotCmds,\n batteryCmds,\n gesturesCmds,\n appStringsCmds,\n // add other command types here\n);\n\nexport default commands;\n\n"],"mappings":";;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,KAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,QAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,MAAA,GAAAJ,sBAAA,CAAAC,OAAA;AACA,IAAAI,QAAA,GAAAL,sBAAA,CAAAC,OAAA;AACA,IAAAK,QAAA,GAAAN,sBAAA,CAAAC,OAAA;AACA,IAAAM,SAAA,GAAAP,sBAAA,CAAAC,OAAA;AACA,IAAAO,WAAA,GAAAR,sBAAA,CAAAC,OAAA;AACA,IAAAQ,QAAA,GAAAT,sBAAA,CAAAC,OAAA;AACA,IAAAS,SAAA,GAAAV,sBAAA,CAAAC,OAAA;AACA,IAAAU,WAAA,GAAAX,sBAAA,CAAAC,OAAA;AAEA,IAAIW,QAAQ,GAAG,CAAC,CAAC;AACjBC,MAAM,CAACC,MAAM,CACXF,QAAQ,EACRG,cAAS,EACTC,aAAQ,EACRC,gBAAW,EACXC,cAAS,EACTC,gBAAW,EACXC,gBAAW,EACXC,iBAAY,EACZC,mBAAc,EACdC,gBAAW,EACXC,iBAAY,EACZC,
|
|
1
|
+
{"version":3,"file":"index.js","names":["_alert","_interopRequireDefault","require","_find","_general","_touch","_element","_actions","_viewport","_screenshot","_battery","_gestures","_appStrings","commands","Object","assign","alertCmds","findCmds","generalCmds","touchCmds","actionsCmds","elementCmds","viewportCmds","screenshotCmds","batteryCmds","gesturesCmds","appStringsCmds","_default","exports","default"],"sources":["../../../lib/commands/index.js"],"sourcesContent":["import alertCmds from './alert';\nimport findCmds from './find';\nimport generalCmds from './general';\nimport touchCmds from './touch';\nimport elementCmds from './element';\nimport actionsCmds from './actions';\nimport viewportCmds from './viewport';\nimport screenshotCmds from './screenshot';\nimport batteryCmds from './battery';\nimport gesturesCmds from './gestures';\nimport appStringsCmds from './app-strings';\n\nlet commands = {};\nObject.assign(\n commands,\n alertCmds,\n findCmds,\n generalCmds,\n touchCmds,\n actionsCmds,\n elementCmds,\n viewportCmds,\n screenshotCmds,\n batteryCmds,\n gesturesCmds,\n appStringsCmds,\n // add other command types here\n);\n\nexport default commands;\n\n"],"mappings":";;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,KAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,QAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,MAAA,GAAAJ,sBAAA,CAAAC,OAAA;AACA,IAAAI,QAAA,GAAAL,sBAAA,CAAAC,OAAA;AACA,IAAAK,QAAA,GAAAN,sBAAA,CAAAC,OAAA;AACA,IAAAM,SAAA,GAAAP,sBAAA,CAAAC,OAAA;AACA,IAAAO,WAAA,GAAAR,sBAAA,CAAAC,OAAA;AACA,IAAAQ,QAAA,GAAAT,sBAAA,CAAAC,OAAA;AACA,IAAAS,SAAA,GAAAV,sBAAA,CAAAC,OAAA;AACA,IAAAU,WAAA,GAAAX,sBAAA,CAAAC,OAAA;AAEA,IAAIW,QAAQ,GAAG,CAAC,CAAC;AACjBC,MAAM,CAACC,MAAM,CACXF,QAAQ,EACRG,cAAS,EACTC,aAAQ,EACRC,gBAAW,EACXC,cAAS,EACTC,gBAAW,EACXC,gBAAW,EACXC,iBAAY,EACZC,mBAAc,EACdC,gBAAW,EACXC,iBAAY,EACZC,mBAEF,CAAC;AAAC,IAAAC,QAAA,GAEad,QAAQ;AAAAe,OAAA,CAAAC,OAAA,GAAAF,QAAA"}
|
|
@@ -18,4 +18,4 @@ commands.getScreenshot = async function () {
|
|
|
18
18
|
};
|
|
19
19
|
var _default = commands;
|
|
20
20
|
exports.default = _default;
|
|
21
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
21
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kcyIsImdldFNjcmVlbnNob3QiLCJtanBlZ1N0cmVhbSIsImRhdGEiLCJsYXN0Q2h1bmtQTkdCYXNlNjQiLCJsb2ciLCJ3YXJuIiwidWlhdXRvbWF0b3IyIiwiandwcm94eSIsImNvbW1hbmQiLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJkZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL2NvbW1hbmRzL3NjcmVlbnNob3QuanMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgY29tbWFuZHMgPSB7fTtcblxuY29tbWFuZHMuZ2V0U2NyZWVuc2hvdCA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMubWpwZWdTdHJlYW0pIHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5tanBlZ1N0cmVhbS5sYXN0Q2h1bmtQTkdCYXNlNjQoKTtcbiAgICBpZiAoZGF0YSkge1xuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuICAgIHRoaXMubG9nLndhcm4oJ1RyaWVkIHRvIGdldCBzY3JlZW5zaG90IGZyb20gYWN0aXZlIE1KUEVHIHN0cmVhbSwgYnV0IHRoZXJlICcgK1xuICAgICAgJ3dhcyBubyBkYXRhIHlldC4gRmFsbGluZyBiYWNrIHRvIHJlZ3VsYXIgc2NyZWVuc2hvdCBtZXRob2RzLicpO1xuICB9XG4gIHJldHVybiBhd2FpdCB0aGlzLnVpYXV0b21hdG9yMi5qd3Byb3h5LmNvbW1hbmQoJy9zY3JlZW5zaG90JywgJ0dFVCcpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY29tbWFuZHM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxNQUFNQSxRQUFRLEdBQUcsQ0FBQyxDQUFDO0FBRW5CQSxRQUFRLENBQUNDLGFBQWEsR0FBRyxrQkFBa0I7RUFDekMsSUFBSSxJQUFJLENBQUNDLFdBQVcsRUFBRTtJQUNwQixNQUFNQyxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUNELFdBQVcsQ0FBQ0Usa0JBQWtCLENBQUMsQ0FBQztJQUN4RCxJQUFJRCxJQUFJLEVBQUU7TUFDUixPQUFPQSxJQUFJO0lBQ2I7SUFDQSxJQUFJLENBQUNFLEdBQUcsQ0FBQ0MsSUFBSSxDQUFDLDhEQUE4RCxHQUMxRSw4REFBOEQsQ0FBQztFQUNuRTtFQUNBLE9BQU8sTUFBTSxJQUFJLENBQUNDLFlBQVksQ0FBQ0MsT0FBTyxDQUFDQyxPQUFPLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQztBQUN0RSxDQUFDO0FBQUMsSUFBQUMsUUFBQSxHQUVhVixRQUFRO0FBQUFXLE9BQUEsQ0FBQUMsT0FBQSxHQUFBRixRQUFBIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"screenshot.js","names":["commands","getScreenshot","mjpegStream","data","lastChunkPNGBase64","log","warn","uiautomator2","jwproxy","command","_default","exports","default"],"sources":["../../../lib/commands/screenshot.js"],"sourcesContent":["const commands = {};\n\ncommands.getScreenshot = async function () {\n if (this.mjpegStream) {\n const data = await this.mjpegStream.lastChunkPNGBase64();\n if (data) {\n return data;\n }\n this.log.warn('Tried to get screenshot from active MJPEG stream, but there ' +\n 'was no data yet. Falling back to regular screenshot methods.');\n }\n return await this.uiautomator2.jwproxy.command('/screenshot', 'GET');\n};\n\nexport default commands;\n"],"mappings":";;;;;;;AAAA,MAAMA,QAAQ,GAAG,CAAC,CAAC;AAEnBA,QAAQ,CAACC,aAAa,GAAG,kBAAkB;EACzC,IAAI,IAAI,CAACC,WAAW,EAAE;IACpB,MAAMC,IAAI,GAAG,MAAM,IAAI,CAACD,WAAW,CAACE,kBAAkB,
|
|
1
|
+
{"version":3,"file":"screenshot.js","names":["commands","getScreenshot","mjpegStream","data","lastChunkPNGBase64","log","warn","uiautomator2","jwproxy","command","_default","exports","default"],"sources":["../../../lib/commands/screenshot.js"],"sourcesContent":["const commands = {};\n\ncommands.getScreenshot = async function () {\n if (this.mjpegStream) {\n const data = await this.mjpegStream.lastChunkPNGBase64();\n if (data) {\n return data;\n }\n this.log.warn('Tried to get screenshot from active MJPEG stream, but there ' +\n 'was no data yet. Falling back to regular screenshot methods.');\n }\n return await this.uiautomator2.jwproxy.command('/screenshot', 'GET');\n};\n\nexport default commands;\n"],"mappings":";;;;;;;AAAA,MAAMA,QAAQ,GAAG,CAAC,CAAC;AAEnBA,QAAQ,CAACC,aAAa,GAAG,kBAAkB;EACzC,IAAI,IAAI,CAACC,WAAW,EAAE;IACpB,MAAMC,IAAI,GAAG,MAAM,IAAI,CAACD,WAAW,CAACE,kBAAkB,CAAC,CAAC;IACxD,IAAID,IAAI,EAAE;MACR,OAAOA,IAAI;IACb;IACA,IAAI,CAACE,GAAG,CAACC,IAAI,CAAC,8DAA8D,GAC1E,8DAA8D,CAAC;EACnE;EACA,OAAO,MAAM,IAAI,CAACC,YAAY,CAACC,OAAO,CAACC,OAAO,CAAC,aAAa,EAAE,KAAK,CAAC;AACtE,CAAC;AAAC,IAAAC,QAAA,GAEaV,QAAQ;AAAAW,OAAA,CAAAC,OAAA,GAAAF,QAAA"}
|
|
@@ -36,4 +36,4 @@ commands.getViewPortRect = async function () {
|
|
|
36
36
|
Object.assign(extensions, commands);
|
|
37
37
|
var _default = extensions;
|
|
38
38
|
exports.default = _default;
|
|
39
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
39
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfc3VwcG9ydCIsInJlcXVpcmUiLCJleHRlbnNpb25zIiwiY29tbWFuZHMiLCJleHBvcnRzIiwiZ2V0U3RhdHVzQmFySGVpZ2h0Iiwic3RhdHVzQmFyIiwidWlhdXRvbWF0b3IyIiwiandwcm94eSIsImNvbW1hbmQiLCJnZXREZXZpY2VQaXhlbFJhdGlvIiwiZ2V0Vmlld3BvcnRTY3JlZW5zaG90Iiwic2NyZWVuc2hvdCIsImdldFNjcmVlbnNob3QiLCJyZWN0IiwiZ2V0Vmlld1BvcnRSZWN0IiwiaW1hZ2VVdGlsIiwiY3JvcEJhc2U2NEltYWdlIiwid2luZG93U2l6ZSIsImdldFdpbmRvd1NpemUiLCJzdGF0dXNCYXJIZWlnaHQiLCJsZWZ0IiwidG9wIiwid2lkdGgiLCJoZWlnaHQiLCJPYmplY3QiLCJhc3NpZ24iLCJfZGVmYXVsdCIsImRlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvY29tbWFuZHMvdmlld3BvcnQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW1hZ2VVdGlsIH0gZnJvbSAnYXBwaXVtL3N1cHBvcnQnO1xuXG5cbmxldCBleHRlbnNpb25zID0ge30sIGNvbW1hbmRzID0ge307XG5cbi8vIG1lbW9pemVkIGluIGNvbnN0cnVjdG9yXG5jb21tYW5kcy5nZXRTdGF0dXNCYXJIZWlnaHQgPSBhc3luYyBmdW5jdGlvbiAoKSB7XG4gIGNvbnN0IHtzdGF0dXNCYXJ9ID0gYXdhaXQgdGhpcy51aWF1dG9tYXRvcjIuandwcm94eS5jb21tYW5kKGAvYXBwaXVtL2RldmljZS9zeXN0ZW1fYmFyc2AsICdHRVQnLCB7fSk7XG4gIHJldHVybiBzdGF0dXNCYXI7XG59O1xuXG4vLyBtZW1vaXplZCBpbiBjb25zdHJ1Y3RvclxuY29tbWFuZHMuZ2V0RGV2aWNlUGl4ZWxSYXRpbyA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZCgnL2FwcGl1bS9kZXZpY2UvcGl4ZWxfcmF0aW8nLCAnR0VUJywge30pO1xufTtcblxuY29tbWFuZHMuZ2V0Vmlld3BvcnRTY3JlZW5zaG90ID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICBjb25zdCBzY3JlZW5zaG90ID0gYXdhaXQgdGhpcy5nZXRTY3JlZW5zaG90KCk7XG4gIGNvbnN0IHJlY3QgPSBhd2FpdCB0aGlzLmdldFZpZXdQb3J0UmVjdCgpO1xuICByZXR1cm4gYXdhaXQgaW1hZ2VVdGlsLmNyb3BCYXNlNjRJbWFnZShzY3JlZW5zaG90LCByZWN0KTtcbn07XG5cbmNvbW1hbmRzLmdldFZpZXdQb3J0UmVjdCA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgY29uc3Qgd2luZG93U2l6ZSA9IGF3YWl0IHRoaXMuZ2V0V2luZG93U2l6ZSgpO1xuICBjb25zdCBzdGF0dXNCYXJIZWlnaHQgPSBhd2FpdCB0aGlzLmdldFN0YXR1c0JhckhlaWdodCgpO1xuICAvLyBhbmRyb2lkIHJldHVybnMgdGhlIHVwc2NhbGVkIHdpbmRvdyBzaXplLCBzbyB0byBnZXQgdGhlIHRydWUgc2l6ZSBvZiB0aGVcbiAgLy8gcmVjdCB3ZSBoYXZlIHRvIGRvd25zY2FsZVxuICByZXR1cm4ge1xuICAgIGxlZnQ6IDAsXG4gICAgdG9wOiBzdGF0dXNCYXJIZWlnaHQsXG4gICAgd2lkdGg6IHdpbmRvd1NpemUud2lkdGgsXG4gICAgaGVpZ2h0OiB3aW5kb3dTaXplLmhlaWdodCAtIHN0YXR1c0JhckhlaWdodFxuICB9O1xufTtcblxuT2JqZWN0LmFzc2lnbihleHRlbnNpb25zLCBjb21tYW5kcyk7XG5leHBvcnQgeyBjb21tYW5kcyB9O1xuZXhwb3J0IGRlZmF1bHQgZXh0ZW5zaW9ucztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLElBQUFBLFFBQUEsR0FBQUMsT0FBQTtBQUdBLElBQUlDLFVBQVUsR0FBRyxDQUFDLENBQUM7RUFBRUMsUUFBUSxHQUFHLENBQUMsQ0FBQztBQUFDQyxPQUFBLENBQUFELFFBQUEsR0FBQUEsUUFBQTtBQUduQ0EsUUFBUSxDQUFDRSxrQkFBa0IsR0FBRyxrQkFBa0I7RUFDOUMsTUFBTTtJQUFDQztFQUFTLENBQUMsR0FBRyxNQUFNLElBQUksQ0FBQ0MsWUFBWSxDQUFDQyxPQUFPLENBQUNDLE9BQU8sQ0FBRSw0QkFBMkIsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7RUFDcEcsT0FBT0gsU0FBUztBQUNsQixDQUFDO0FBR0RILFFBQVEsQ0FBQ08sbUJBQW1CLEdBQUcsa0JBQWtCO0VBQy9DLE9BQU8sTUFBTSxJQUFJLENBQUNILFlBQVksQ0FBQ0MsT0FBTyxDQUFDQyxPQUFPLENBQUMsNEJBQTRCLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3pGLENBQUM7QUFFRE4sUUFBUSxDQUFDUSxxQkFBcUIsR0FBRyxrQkFBa0I7RUFDakQsTUFBTUMsVUFBVSxHQUFHLE1BQU0sSUFBSSxDQUFDQyxhQUFhLENBQUMsQ0FBQztFQUM3QyxNQUFNQyxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUNDLGVBQWUsQ0FBQyxDQUFDO0VBQ3pDLE9BQU8sTUFBTUMsa0JBQVMsQ0FBQ0MsZUFBZSxDQUFDTCxVQUFVLEVBQUVFLElBQUksQ0FBQztBQUMxRCxDQUFDO0FBRURYLFFBQVEsQ0FBQ1ksZUFBZSxHQUFHLGtCQUFrQjtFQUMzQyxNQUFNRyxVQUFVLEdBQUcsTUFBTSxJQUFJLENBQUNDLGFBQWEsQ0FBQyxDQUFDO0VBQzdDLE1BQU1DLGVBQWUsR0FBRyxNQUFNLElBQUksQ0FBQ2Ysa0JBQWtCLENBQUMsQ0FBQztFQUd2RCxPQUFPO0lBQ0xnQixJQUFJLEVBQUUsQ0FBQztJQUNQQyxHQUFHLEVBQUVGLGVBQWU7SUFDcEJHLEtBQUssRUFBRUwsVUFBVSxDQUFDSyxLQUFLO0lBQ3ZCQyxNQUFNLEVBQUVOLFVBQVUsQ0FBQ00sTUFBTSxHQUFHSjtFQUM5QixDQUFDO0FBQ0gsQ0FBQztBQUVESyxNQUFNLENBQUNDLE1BQU0sQ0FBQ3hCLFVBQVUsRUFBRUMsUUFBUSxDQUFDO0FBQUMsSUFBQXdCLFFBQUEsR0FFckJ6QixVQUFVO0FBQUFFLE9BQUEsQ0FBQXdCLE9BQUEsR0FBQUQsUUFBQSJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"viewport.js","names":["_support","require","extensions","commands","exports","getStatusBarHeight","statusBar","uiautomator2","jwproxy","command","getDevicePixelRatio","getViewportScreenshot","screenshot","getScreenshot","rect","getViewPortRect","imageUtil","cropBase64Image","windowSize","getWindowSize","statusBarHeight","left","top","width","height","Object","assign","_default","default"],"sources":["../../../lib/commands/viewport.js"],"sourcesContent":["import { imageUtil } from 'appium/support';\n\n\nlet extensions = {}, commands = {};\n\n// memoized in constructor\ncommands.getStatusBarHeight = async function () {\n const {statusBar} = await this.uiautomator2.jwproxy.command(`/appium/device/system_bars`, 'GET', {});\n return statusBar;\n};\n\n// memoized in constructor\ncommands.getDevicePixelRatio = async function () {\n return await this.uiautomator2.jwproxy.command('/appium/device/pixel_ratio', 'GET', {});\n};\n\ncommands.getViewportScreenshot = async function () {\n const screenshot = await this.getScreenshot();\n const rect = await this.getViewPortRect();\n return await imageUtil.cropBase64Image(screenshot, rect);\n};\n\ncommands.getViewPortRect = async function () {\n const windowSize = await this.getWindowSize();\n const statusBarHeight = await this.getStatusBarHeight();\n // android returns the upscaled window size, so to get the true size of the\n // rect we have to downscale\n return {\n left: 0,\n top: statusBarHeight,\n width: windowSize.width,\n height: windowSize.height - statusBarHeight\n };\n};\n\nObject.assign(extensions, commands);\nexport { commands };\nexport default extensions;\n"],"mappings":";;;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAGA,IAAIC,UAAU,GAAG,CAAC,CAAC;EAAEC,QAAQ,GAAG,CAAC,CAAC;AAACC,OAAA,CAAAD,QAAA,GAAAA,QAAA;AAGnCA,QAAQ,CAACE,kBAAkB,GAAG,kBAAkB;EAC9C,MAAM;IAACC;EAAS,CAAC,GAAG,MAAM,IAAI,CAACC,YAAY,CAACC,OAAO,CAACC,OAAO,CAAE,4BAA2B,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;EACpG,OAAOH,SAAS;AAClB,CAAC;AAGDH,QAAQ,CAACO,mBAAmB,GAAG,kBAAkB;EAC/C,OAAO,MAAM,IAAI,CAACH,YAAY,CAACC,OAAO,CAACC,OAAO,CAAC,4BAA4B,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzF,CAAC;AAEDN,QAAQ,CAACQ,qBAAqB,GAAG,kBAAkB;EACjD,MAAMC,UAAU,GAAG,MAAM,IAAI,CAACC,aAAa,
|
|
1
|
+
{"version":3,"file":"viewport.js","names":["_support","require","extensions","commands","exports","getStatusBarHeight","statusBar","uiautomator2","jwproxy","command","getDevicePixelRatio","getViewportScreenshot","screenshot","getScreenshot","rect","getViewPortRect","imageUtil","cropBase64Image","windowSize","getWindowSize","statusBarHeight","left","top","width","height","Object","assign","_default","default"],"sources":["../../../lib/commands/viewport.js"],"sourcesContent":["import { imageUtil } from 'appium/support';\n\n\nlet extensions = {}, commands = {};\n\n// memoized in constructor\ncommands.getStatusBarHeight = async function () {\n const {statusBar} = await this.uiautomator2.jwproxy.command(`/appium/device/system_bars`, 'GET', {});\n return statusBar;\n};\n\n// memoized in constructor\ncommands.getDevicePixelRatio = async function () {\n return await this.uiautomator2.jwproxy.command('/appium/device/pixel_ratio', 'GET', {});\n};\n\ncommands.getViewportScreenshot = async function () {\n const screenshot = await this.getScreenshot();\n const rect = await this.getViewPortRect();\n return await imageUtil.cropBase64Image(screenshot, rect);\n};\n\ncommands.getViewPortRect = async function () {\n const windowSize = await this.getWindowSize();\n const statusBarHeight = await this.getStatusBarHeight();\n // android returns the upscaled window size, so to get the true size of the\n // rect we have to downscale\n return {\n left: 0,\n top: statusBarHeight,\n width: windowSize.width,\n height: windowSize.height - statusBarHeight\n };\n};\n\nObject.assign(extensions, commands);\nexport { commands };\nexport default extensions;\n"],"mappings":";;;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAGA,IAAIC,UAAU,GAAG,CAAC,CAAC;EAAEC,QAAQ,GAAG,CAAC,CAAC;AAACC,OAAA,CAAAD,QAAA,GAAAA,QAAA;AAGnCA,QAAQ,CAACE,kBAAkB,GAAG,kBAAkB;EAC9C,MAAM;IAACC;EAAS,CAAC,GAAG,MAAM,IAAI,CAACC,YAAY,CAACC,OAAO,CAACC,OAAO,CAAE,4BAA2B,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;EACpG,OAAOH,SAAS;AAClB,CAAC;AAGDH,QAAQ,CAACO,mBAAmB,GAAG,kBAAkB;EAC/C,OAAO,MAAM,IAAI,CAACH,YAAY,CAACC,OAAO,CAACC,OAAO,CAAC,4BAA4B,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzF,CAAC;AAEDN,QAAQ,CAACQ,qBAAqB,GAAG,kBAAkB;EACjD,MAAMC,UAAU,GAAG,MAAM,IAAI,CAACC,aAAa,CAAC,CAAC;EAC7C,MAAMC,IAAI,GAAG,MAAM,IAAI,CAACC,eAAe,CAAC,CAAC;EACzC,OAAO,MAAMC,kBAAS,CAACC,eAAe,CAACL,UAAU,EAAEE,IAAI,CAAC;AAC1D,CAAC;AAEDX,QAAQ,CAACY,eAAe,GAAG,kBAAkB;EAC3C,MAAMG,UAAU,GAAG,MAAM,IAAI,CAACC,aAAa,CAAC,CAAC;EAC7C,MAAMC,eAAe,GAAG,MAAM,IAAI,CAACf,kBAAkB,CAAC,CAAC;EAGvD,OAAO;IACLgB,IAAI,EAAE,CAAC;IACPC,GAAG,EAAEF,eAAe;IACpBG,KAAK,EAAEL,UAAU,CAACK,KAAK;IACvBC,MAAM,EAAEN,UAAU,CAACM,MAAM,GAAGJ;EAC9B,CAAC;AACH,CAAC;AAEDK,MAAM,CAACC,MAAM,CAACxB,UAAU,EAAEC,QAAQ,CAAC;AAAC,IAAAwB,QAAA,GAErBzB,UAAU;AAAAE,OAAA,CAAAwB,OAAA,GAAAD,QAAA"}
|
|
@@ -178,4 +178,4 @@ class CssConverter {
|
|
|
178
178
|
}
|
|
179
179
|
var _default = CssConverter;
|
|
180
180
|
exports.default = _default;
|
|
181
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY3NzU2VsZWN0b3JQYXJzZXIiLCJyZXF1aXJlIiwiX2xvZGFzaCIsIl9kcml2ZXIiLCJwYXJzZXIiLCJDc3NTZWxlY3RvclBhcnNlciIsInJlZ2lzdGVyU2VsZWN0b3JQc2V1ZG9zIiwicmVnaXN0ZXJOZXN0aW5nT3BlcmF0b3JzIiwicmVnaXN0ZXJBdHRyRXF1YWxpdHlNb2RzIiwiZW5hYmxlU3Vic3RpdHV0ZXMiLCJSRVNPVVJDRV9JRCIsIklEX0xPQ0FUT1JfUEFUVEVSTiIsIkJPT0xFQU5fQVRUUlMiLCJOVU1FUklDX0FUVFJTIiwiU1RSX0FUVFJTIiwiQUxMX0FUVFJTIiwiQVRUUklCVVRFX0FMSUFTRVMiLCJ0b1NuYWtlQ2FzZSIsInN0ciIsInRva2VucyIsInNwbGl0IiwibWFwIiwiY2hhckF0IiwidG9VcHBlckNhc2UiLCJzbGljZSIsInRvTG93ZXJDYXNlIiwib3V0Iiwiam9pbiIsImFzc2VydEdldEJvb2wiLCJjc3MiLCJfY3NzJHZhbHVlIiwidmFsIiwidmFsdWUiLCJpbmNsdWRlcyIsIkVycm9yIiwibmFtZSIsImFzc2VydEdldEF0dHJOYW1lIiwiYXR0ck5hbWUiLCJvZmZpY2lhbEF0dHIiLCJhbGlhc0F0dHJzIiwiZ2V0V29yZE1hdGNoZXJSZWdleCIsIndvcmQiLCJlc2NhcGVSZWdFeHAiLCJDc3NDb252ZXJ0ZXIiLCJjb25zdHJ1Y3RvciIsInNlbGVjdG9yIiwicGtnIiwiZm9ybWF0SWRMb2NhdG9yIiwibG9jYXRvciIsInRlc3QiLCJwYXJzZUF0dHIiLCJjc3NBdHRyIiwidmFsdWVUeXBlIiwibWV0aG9kTmFtZSIsIm9wZXJhdG9yIiwicGFyc2VQc2V1ZG8iLCJjc3NQc2V1ZG8iLCJwc2V1ZG9OYW1lIiwicGFyc2VDc3NSdWxlIiwiY3NzUnVsZSIsIm5lc3RpbmdPcGVyYXRvciIsInVpQXV0b21hdG9yU2VsZWN0b3IiLCJ0YWdOYW1lIiwiYW5kcm9pZENsYXNzIiwiY2xhc3NOYW1lcyIsImNzc0NsYXNzTmFtZXMiLCJwdXNoIiwiaWQiLCJhdHRycyIsImF0dHIiLCJwc2V1ZG9zIiwicHNldWRvIiwicnVsZSIsInBhcnNlQ3NzT2JqZWN0IiwidHlwZSIsInNlbGVjdG9ycyIsInRvVWlBdXRvbWF0b3JTZWxlY3RvciIsImNzc09iaiIsInBhcnNlIiwiZSIsImVycm9ycyIsIkludmFsaWRTZWxlY3RvckVycm9yIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwiZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9jc3MtY29udmVydGVyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENzc1NlbGVjdG9yUGFyc2VyIH0gZnJvbSAnY3NzLXNlbGVjdG9yLXBhcnNlcic7XG5pbXBvcnQgeyBlc2NhcGVSZWdFeHAgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgZXJyb3JzIH0gZnJvbSAnYXBwaXVtL2RyaXZlcic7XG5cbmNvbnN0IHBhcnNlciA9IG5ldyBDc3NTZWxlY3RvclBhcnNlcigpO1xucGFyc2VyLnJlZ2lzdGVyU2VsZWN0b3JQc2V1ZG9zKCdoYXMnKTtcbnBhcnNlci5yZWdpc3Rlck5lc3RpbmdPcGVyYXRvcnMoJz4nLCAnKycsICd+Jyk7XG5wYXJzZXIucmVnaXN0ZXJBdHRyRXF1YWxpdHlNb2RzKCdeJywgJyQnLCAnKicsICd+Jyk7XG5wYXJzZXIuZW5hYmxlU3Vic3RpdHV0ZXMoKTtcblxuY29uc3QgUkVTT1VSQ0VfSUQgPSAncmVzb3VyY2UtaWQnO1xuY29uc3QgSURfTE9DQVRPUl9QQVRURVJOID0gL15bYS16QS1aX11bYS16QS1aMC05Ll9dKjppZFxcL1tcXFNdKyQvO1xuXG5jb25zdCBCT09MRUFOX0FUVFJTID0gW1xuICAnY2hlY2thYmxlJywgJ2NoZWNrZWQnLCAnY2xpY2thYmxlJywgJ2VuYWJsZWQnLCAnZm9jdXNhYmxlJyxcbiAgJ2ZvY3VzZWQnLCAnbG9uZy1jbGlja2FibGUnLCAnc2Nyb2xsYWJsZScsICdzZWxlY3RlZCcsXG5dO1xuXG5jb25zdCBOVU1FUklDX0FUVFJTID0gW1xuICAnaW5kZXgnLCAnaW5zdGFuY2UnLFxuXTtcblxuY29uc3QgU1RSX0FUVFJTID0gW1xuICAnZGVzY3JpcHRpb24nLCBSRVNPVVJDRV9JRCwgJ3RleHQnLCAnY2xhc3MtbmFtZScsICdwYWNrYWdlLW5hbWUnXG5dO1xuXG5jb25zdCBBTExfQVRUUlMgPSBbXG4gIC4uLkJPT0xFQU5fQVRUUlMsXG4gIC4uLk5VTUVSSUNfQVRUUlMsXG4gIC4uLlNUUl9BVFRSUyxcbl07XG5cbmNvbnN0IEFUVFJJQlVURV9BTElBU0VTID0gW1xuICBbUkVTT1VSQ0VfSUQsIFsnaWQnXV0sXG4gIFsnZGVzY3JpcHRpb24nLCBbXG4gICAgJ2NvbnRlbnQtZGVzY3JpcHRpb24nLCAnY29udGVudC1kZXNjJyxcbiAgICAnZGVzYycsICdhY2Nlc3NpYmlsaXR5LWlkJyxcbiAgXV0sXG4gIFsnaW5kZXgnLCBbJ250aC1jaGlsZCddXSxcbl07XG5cbi8qKlxuICogQ29udmVydCBoeXBoZW4gc2VwYXJhdGVkIHdvcmQgdG8gc25ha2UgY2FzZVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBoeXBoZW4gc2VwYXJhdGVkIHdvcmQgdHJhbnNsYXRlZCB0byBzbmFrZSBjYXNlXG4gKi9cbmZ1bmN0aW9uIHRvU25ha2VDYXNlIChzdHIpIHtcbiAgaWYgKCFzdHIpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cbiAgY29uc3QgdG9rZW5zID0gc3RyLnNwbGl0KCctJykubWFwKChzdHIpID0+IHN0ci5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHN0ci5zbGljZSgxKS50b0xvd2VyQ2FzZSgpKTtcbiAgY29uc3Qgb3V0ID0gdG9rZW5zLmpvaW4oJycpO1xuICByZXR1cm4gb3V0LmNoYXJBdCgwKS50b0xvd2VyQ2FzZSgpICsgb3V0LnNsaWNlKDEpO1xufVxuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IENzc05hbWVWYWx1ZU9iamVjdFxuICogQHByb3BlcnR5IHs/bmFtZX0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgQ1NTIG9iamVjdFxuICogQHByb3BlcnR5IHs/c3RyaW5nfSB2YWx1ZSBUaGUgdmFsdWUgb2YgdGhlIENTUyBvYmplY3RcbiAqL1xuXG4vKipcbiAqIEdldCB0aGUgYm9vbGVhbiBmcm9tIGEgQ1NTIG9iamVjdC4gSWYgZW1wdHksIHJldHVybiB0cnVlLiBJZiBub3QgdHJ1ZS9mYWxzZS9lbXB0eSwgdGhyb3cgZXhjZXB0aW9uXG4gKlxuICogQHBhcmFtIHtDc3NOYW1lVmFsdWVPYmplY3R9IGNzcyBBIENTUyBvYmplY3QgdGhhdCBoYXMgJ25hbWUnIGFuZCAndmFsdWUnXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBFaXRoZXIgJ3RydWUnIG9yICdmYWxzZScuIElmIHZhbHVlIGlzIGVtcHR5LCByZXR1cm4gJ3RydWUnXG4gKi9cbmZ1bmN0aW9uIGFzc2VydEdldEJvb2wgKGNzcykge1xuICBjb25zdCB2YWwgPSBjc3MudmFsdWU/LnRvTG93ZXJDYXNlKCkgfHwgJ3RydWUnOyAvLyBhbiBvbWl0dGVkIGJvb2xlYW4gYXR0cmlidXRlIG1lYW5zICd0cnVlJyAoZS5nLjogaW5wdXRbY2hlY2tlZF0gbWVhbnMgY2hlY2tlZCBpcyB0cnVlKVxuICBpZiAoWyd0cnVlJywgJ2ZhbHNlJ10uaW5jbHVkZXModmFsKSkge1xuICAgIHJldHVybiB2YWw7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKGAnJHtjc3MubmFtZX0nIG11c3QgYmUgdHJ1ZSwgZmFsc2Ugb3IgZW1wdHkuIEZvdW5kICcke2Nzcy52YWx1ZX0nYCk7XG59XG5cbi8qKlxuICogR2V0IHRoZSBjYW5vbmljYWwgZm9ybSBvZiBhIENTUyBhdHRyaWJ1dGUgbmFtZVxuICpcbiAqIENvbnZlcnRzIHRvIGxvd2VyY2FzZSBhbmQgaWYgYW4gYXR0cmlidXRlIG5hbWUgaXMgYW4gYWxpYXMgZm9yIHNvbWV0aGluZyBlbHNlLCByZXR1cm5cbiAqIHdoYXQgaXQgaXMgYW4gYWxpYXMgZm9yXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGNzcyBDU1Mgb2JqZWN0XG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgY2Fub25pY2FsIGF0dHJpYnV0ZSBuYW1lXG4gKi9cbmZ1bmN0aW9uIGFzc2VydEdldEF0dHJOYW1lIChjc3MpIHtcbiAgY29uc3QgYXR0ck5hbWUgPSBjc3MubmFtZS50b0xvd2VyQ2FzZSgpO1xuXG4gIC8vIENoZWNrIGlmIGl0J3Mgc3VwcG9ydGVkIGFuZCBpZiBpdCBpcywgcmV0dXJuIGl0XG4gIGlmIChBTExfQVRUUlMuaW5jbHVkZXMoYXR0ck5hbWUpKSB7XG4gICAgcmV0dXJuIGF0dHJOYW1lLnRvTG93ZXJDYXNlKCk7XG4gIH1cblxuICAvLyBJZiBhdHRyTmFtZSBpcyBhbiBhbGlhcyBmb3Igc29tZXRoaW5nIGVsc2UsIHJldHVybiB0aGF0XG4gIGZvciAoY29uc3QgW29mZmljaWFsQXR0ciwgYWxpYXNBdHRyc10gb2YgQVRUUklCVVRFX0FMSUFTRVMpIHtcbiAgICBpZiAoYWxpYXNBdHRycy5pbmNsdWRlcyhhdHRyTmFtZSkpIHtcbiAgICAgIHJldHVybiBvZmZpY2lhbEF0dHI7XG4gICAgfVxuICB9XG4gIHRocm93IG5ldyBFcnJvcihgJyR7YXR0ck5hbWV9JyBpcyBub3QgYSB2YWxpZCBhdHRyaWJ1dGUuIGAgK1xuICAgIGBTdXBwb3J0ZWQgYXR0cmlidXRlcyBhcmUgJyR7QUxMX0FUVFJTLmpvaW4oJywgJyl9J2ApO1xufVxuXG4vKipcbiAqIEdldCBhIHJlZ2V4IHRoYXQgbWF0Y2hlcyBhIHdob2xlIHdvcmQuIEZvciB0aGUgfj0gQ1NTIGF0dHJpYnV0ZSBzZWxlY3Rvci5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gd29yZFxuICogQHJldHVybnMge3N0cmluZ30gQSByZWdleCBcIndvcmRcIiBtYXRjaGVyXG4gKi9cbmZ1bmN0aW9uIGdldFdvcmRNYXRjaGVyUmVnZXggKHdvcmQpIHtcbiAgcmV0dXJuIGBcXFxcYihcXFxcdyoke2VzY2FwZVJlZ0V4cCh3b3JkKX1cXFxcdyopXFxcXGJgO1xufVxuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IENzc0F0dHJcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gdmFsdWVUeXBlIFR5cGUgb2YgYXR0cmlidXRlIChtdXN0IGJlIHN0cmluZyBvciBlbXB0eSlcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gdmFsdWUgVmFsdWUgb2YgdGhlIGF0dHJpYnV0ZVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBvcGVyYXRvciBUaGUgb3BlcmF0b3IgYmV0d2VlbiB2YWx1ZSBhbmQgdmFsdWUgdHlwZSAoPSwgKj0sICwgXj0sICQ9KVxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gQ3NzUnVsZVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBuZXN0aW5nT3BlcmF0b3IgVGhlIG5lc3Rpbmcgb3BlcmF0b3IgKGFrYTogY29tYmluYXRvciBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvQ1NTX1NlbGVjdG9ycylcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gdGFnTmFtZSBUaGUgdGFnIG5hbWUgKGFrYTogdHlwZSBzZWxlY3RvciBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvVHlwZV9zZWxlY3RvcnMpXG4gKiBAcHJvcGVydHkgez9zdHJpbmdbXX0gY2xhc3NOYW1lcyBBbiBhcnJheSBvZiBDU1MgY2xhc3MgbmFtZXNcbiAqIEBwcm9wZXJ0eSB7P0Nzc0F0dHJbXX0gYXR0cnMgQW4gYXJyYXkgb2YgQ1NTIGF0dHJpYnV0ZXNcbiAqIEBwcm9wZXJ0eSB7P0Nzc1BzZXVkb1tdfSBhdHRycyBBbiBhcnJheSBvZiBDU1MgcHNldWRvc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfSBpZCBDU1MgaWRlbnRpZmllclxuICogQHByb3BlcnR5IHs/Q3NzUnVsZX0gcnVsZSBBIGRlc2NlbmRhbnQgb2YgdGhpcyBDU1MgcnVsZVxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gQ3NzT2JqZWN0XG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHR5cGUgVHlwZSBvZiBDU1Mgb2JqZWN0LiAncnVsZScsICdydWxlc2V0JyBvciAnc2VsZWN0b3JzJ1xuICovXG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gQ3NzUHNldWRvXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHZhbHVlVHlwZSBUaGUgdHlwZSBvZiBDU1MgcHNldWRvIHNlbGVjdG9yIChodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9jc3Mtc2VsZWN0b3ItcGFyc2VyIGZvciByZWZlcmVuY2UpXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IG5hbWUgVGhlIG5hbWUgb2YgdGhlIHBzZXVkbyBzZWxlY3RvclxuICogQHByb3BlcnR5IHs/c3RyaW5nfSB2YWx1ZSBUaGUgdmFsdWUgb2YgdGhlIHBzZXVkbyBzZWxlY3RvclxuICovXG5cbmNsYXNzIENzc0NvbnZlcnRlciB7XG5cbiAgY29uc3RydWN0b3IgKHNlbGVjdG9yLCBwa2cpIHtcbiAgICB0aGlzLnNlbGVjdG9yID0gc2VsZWN0b3I7XG4gICAgdGhpcy5wa2cgPSBwa2c7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGA8cGtnTmFtZT46aWQvYCBwcmVmaXggdG8gYmVnaW5uaW5nIG9mIHN0cmluZyBpZiBpdCdzIG5vdCB0aGVyZSBhbHJlYWR5XG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBsb2NhdG9yIFRoZSBpbml0aWFsIGxvY2F0b3JcbiAgICogQHJldHVybnMge3N0cmluZ30gU3RyaW5nIHdpdGggYDxwa2dOYW1lPjppZC9gIHByZXBlbmRlZCAoaWYgaXQgd2Fzbid0IGFscmVhZHkpXG4gICAqL1xuICBmb3JtYXRJZExvY2F0b3IgKGxvY2F0b3IpIHtcbiAgICByZXR1cm4gSURfTE9DQVRPUl9QQVRURVJOLnRlc3QobG9jYXRvcilcbiAgICAgID8gbG9jYXRvclxuICAgICAgOiBgJHt0aGlzLnBrZyB8fCAnYW5kcm9pZCd9OmlkLyR7bG9jYXRvcn1gO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgYSBDU1MgYXR0cmlidXRlIGludG8gYSBVaVNlbGVjdG9yIG1ldGhvZCBjYWxsXG4gICAqXG4gICAqIEBwYXJhbSB7Q3NzQXR0cn0gY3NzQXR0ciBDU1MgYXR0cmlidXRlIG9iamVjdFxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBDU1MgYXR0cmlidXRlIHBhcnNlZCBhcyBVaVNlbGVjdG9yXG4gICAqL1xuICBwYXJzZUF0dHIgKGNzc0F0dHIpIHtcbiAgICBpZiAoY3NzQXR0ci52YWx1ZVR5cGUgJiYgY3NzQXR0ci52YWx1ZVR5cGUgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCcke2Nzc0F0dHIubmFtZX09JHtjc3NBdHRyLnZhbHVlfScgaXMgYW4gaW52YWxpZCBhdHRyaWJ1dGUuIGAgK1xuICAgICAgICBgT25seSAnc3RyaW5nJyBhbmQgZW1wdHkgYXR0cmlidXRlIHR5cGVzIGFyZSBzdXBwb3J0ZWQuIEZvdW5kICcke2Nzc0F0dHIudmFsdWVUeXBlfSdgKTtcbiAgICB9XG4gICAgY29uc3QgYXR0ck5hbWUgPSBhc3NlcnRHZXRBdHRyTmFtZShjc3NBdHRyKTtcbiAgICBjb25zdCBtZXRob2ROYW1lID0gdG9TbmFrZUNhc2UoYXR0ck5hbWUpO1xuXG4gICAgLy8gVmFsaWRhdGUgdGhhdCBpdCdzIGEgc3VwcG9ydGVkIGF0dHJpYnV0ZVxuICAgIGlmICghU1RSX0FUVFJTLmluY2x1ZGVzKGF0dHJOYW1lKSAmJiAhQk9PTEVBTl9BVFRSUy5pbmNsdWRlcyhhdHRyTmFtZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJyR7YXR0ck5hbWV9JyBpcyBub3Qgc3VwcG9ydGVkLiBTdXBwb3J0ZWQgYXR0cmlidXRlcyBhcmUgYCArXG4gICAgICAgIGAnJHtbLi4uU1RSX0FUVFJTLCAuLi5CT09MRUFOX0FUVFJTXS5qb2luKCcsICcpfSdgKTtcbiAgICB9XG5cbiAgICAvLyBQYXJzZSBib29sZWFuLCBpZiBpdCdzIGEgYm9vbGVhbiBhdHRyaWJ1dGVcbiAgICBpZiAoQk9PTEVBTl9BVFRSUy5pbmNsdWRlcyhhdHRyTmFtZSkpIHtcbiAgICAgIHJldHVybiBgLiR7bWV0aG9kTmFtZX0oJHthc3NlcnRHZXRCb29sKGNzc0F0dHIpfSlgO1xuICAgIH1cblxuICAgIC8vIE90aGVyd2lzZSBwYXJzZSBhcyBzdHJpbmdcbiAgICBsZXQgdmFsdWUgPSBjc3NBdHRyLnZhbHVlIHx8ICcnO1xuICAgIGlmIChhdHRyTmFtZSA9PT0gUkVTT1VSQ0VfSUQpIHtcbiAgICAgIHZhbHVlID0gdGhpcy5mb3JtYXRJZExvY2F0b3IodmFsdWUpO1xuICAgIH1cbiAgICBpZiAodmFsdWUgPT09ICcnKSB7XG4gICAgICByZXR1cm4gYC4ke21ldGhvZE5hbWV9TWF0Y2hlcyhcIlwiKWA7XG4gICAgfVxuXG4gICAgc3dpdGNoIChjc3NBdHRyLm9wZXJhdG9yKSB7XG4gICAgICBjYXNlICc9JzpcbiAgICAgICAgcmV0dXJuIGAuJHttZXRob2ROYW1lfShcIiR7dmFsdWV9XCIpYDtcbiAgICAgIGNhc2UgJyo9JzpcbiAgICAgICAgaWYgKFsnZGVzY3JpcHRpb24nLCAndGV4dCddLmluY2x1ZGVzKGF0dHJOYW1lKSkge1xuICAgICAgICAgIHJldHVybiBgLiR7bWV0aG9kTmFtZX1Db250YWlucyhcIiR7dmFsdWV9XCIpYDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYC4ke21ldGhvZE5hbWV9TWF0Y2hlcyhcIiR7ZXNjYXBlUmVnRXhwKHZhbHVlKX1cIilgO1xuICAgICAgY2FzZSAnXj0nOlxuICAgICAgICBpZiAoWydkZXNjcmlwdGlvbicsICd0ZXh0J10uaW5jbHVkZXMoYXR0ck5hbWUpKSB7XG4gICAgICAgICAgcmV0dXJuIGAuJHttZXRob2ROYW1lfVN0YXJ0c1dpdGgoXCIke3ZhbHVlfVwiKWA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGAuJHttZXRob2ROYW1lfU1hdGNoZXMoXCJeJHtlc2NhcGVSZWdFeHAodmFsdWUpfVwiKWA7XG4gICAgICBjYXNlICckPSc6XG4gICAgICAgIHJldHVybiBgLiR7bWV0aG9kTmFtZX1NYXRjaGVzKFwiJHtlc2NhcGVSZWdFeHAodmFsdWUpfSRcIilgO1xuICAgICAgY2FzZSAnfj0nOlxuICAgICAgICByZXR1cm4gYC4ke21ldGhvZE5hbWV9TWF0Y2hlcyhcIiR7Z2V0V29yZE1hdGNoZXJSZWdleCh2YWx1ZSl9XCIpYDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIC8vIFVucmVhY2hhYmxlLCBidXQgYWRkaW5nIGVycm9yIGluIGNhc2UgYSBuZXcgQ1NTIGF0dHJpYnV0ZSBpcyBhZGRlZC5cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBDU1MgYXR0cmlidXRlIG9wZXJhdG9yICcke2Nzc0F0dHIub3BlcmF0b3J9Jy4gYCArXG4gICAgICAgICAgYCAnPScsICcqPScsICdePScsICckPScgYW5kICd+PScgYXJlIHN1cHBvcnRlZC5gKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCBhIENTUyBwc2V1ZG8gY2xhc3MgdG8gYSBVaVNlbGVjdG9yXG4gICAqXG4gICAqIEBwYXJhbSB7Q3NzUHNldWRvfSBjc3NQc2V1ZG8gQ1NTIFBzZXVkbyBjbGFzc1xuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBQc2V1ZG8gc2VsZWN0b3IgcGFyc2VkIGFzIFVpU2VsZWN0b3JcbiAgICovXG4gIHBhcnNlUHNldWRvIChjc3NQc2V1ZG8pIHtcbiAgICBpZiAoY3NzUHNldWRvLnZhbHVlVHlwZSAmJiBjc3NQc2V1ZG8udmFsdWVUeXBlICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAnJHtjc3NQc2V1ZG8ubmFtZX09JHtjc3NQc2V1ZG8udmFsdWV9Jy4gYCArXG4gICAgICAgIGBVbnN1cHBvcnRlZCBjc3MgcHNldWRvIGNsYXNzIHZhbHVlIHR5cGU6ICcke2Nzc1BzZXVkby52YWx1ZVR5cGV9Jy4gT25seSAnc3RyaW5nJyB0eXBlIG9yIGVtcHR5IGlzIHN1cHBvcnRlZC5gKTtcbiAgICB9XG5cbiAgICBjb25zdCBwc2V1ZG9OYW1lID0gYXNzZXJ0R2V0QXR0ck5hbWUoY3NzUHNldWRvKTtcblxuICAgIGlmIChCT09MRUFOX0FUVFJTLmluY2x1ZGVzKHBzZXVkb05hbWUpKSB7XG4gICAgICByZXR1cm4gYC4ke3RvU25ha2VDYXNlKHBzZXVkb05hbWUpfSgke2Fzc2VydEdldEJvb2woY3NzUHNldWRvKX0pYDtcbiAgICB9XG5cbiAgICBpZiAoTlVNRVJJQ19BVFRSUy5pbmNsdWRlcyhwc2V1ZG9OYW1lKSkge1xuICAgICAgcmV0dXJuIGAuJHtwc2V1ZG9OYW1lfSgke2Nzc1BzZXVkby52YWx1ZX0pYDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCBhIENTUyBydWxlIHRvIGEgVWlTZWxlY3RvclxuICAgKiBAcGFyYW0ge0Nzc1J1bGV9IGNzc1J1bGUgQ1NTIHJ1bGUgZGVmaW5pdGlvblxuICAgKi9cbiAgcGFyc2VDc3NSdWxlIChjc3NSdWxlKSB7XG4gICAgY29uc3QgeyBuZXN0aW5nT3BlcmF0b3IgfSA9IGNzc1J1bGU7XG4gICAgaWYgKG5lc3RpbmdPcGVyYXRvciAmJiBuZXN0aW5nT3BlcmF0b3IgIT09ICcgJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAnJHtuZXN0aW5nT3BlcmF0b3J9JyBpcyBub3QgYSBzdXBwb3J0ZWQgY29tYmluYXRvci4gYCArXG4gICAgICAgIGBPbmx5IGNoaWxkIGNvbWJpbmF0b3IgKD4pIGFuZCBkZXNjZW5kYW50IGNvbWJpbmF0b3IgYXJlIHN1cHBvcnRlZC5gKTtcbiAgICB9XG5cbiAgICBsZXQgdWlBdXRvbWF0b3JTZWxlY3RvciA9ICduZXcgVWlTZWxlY3RvcigpJztcbiAgICBpZiAoY3NzUnVsZS50YWdOYW1lICYmIGNzc1J1bGUudGFnTmFtZSAhPT0gJyonKSB7XG4gICAgICBsZXQgYW5kcm9pZENsYXNzID0gW2Nzc1J1bGUudGFnTmFtZV07XG4gICAgICBpZiAoY3NzUnVsZS5jbGFzc05hbWVzKSB7XG4gICAgICAgIGZvciAoY29uc3QgY3NzQ2xhc3NOYW1lcyBvZiBjc3NSdWxlLmNsYXNzTmFtZXMpIHtcbiAgICAgICAgICBhbmRyb2lkQ2xhc3MucHVzaChjc3NDbGFzc05hbWVzKTtcbiAgICAgICAgfVxuICAgICAgICB1aUF1dG9tYXRvclNlbGVjdG9yICs9IGAuY2xhc3NOYW1lKFwiJHthbmRyb2lkQ2xhc3Muam9pbignLicpfVwiKWA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB1aUF1dG9tYXRvclNlbGVjdG9yICs9IGAuY2xhc3NOYW1lTWF0Y2hlcyhcIiR7Y3NzUnVsZS50YWdOYW1lfVwiKWA7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjc3NSdWxlLmNsYXNzTmFtZXMpIHtcbiAgICAgIHVpQXV0b21hdG9yU2VsZWN0b3IgKz0gYC5jbGFzc05hbWVNYXRjaGVzKFwiJHtjc3NSdWxlLmNsYXNzTmFtZXMuam9pbignXFxcXC4nKX1cIilgO1xuICAgIH1cbiAgICBpZiAoY3NzUnVsZS5pZCkge1xuICAgICAgdWlBdXRvbWF0b3JTZWxlY3RvciArPSBgLnJlc291cmNlSWQoXCIke3RoaXMuZm9ybWF0SWRMb2NhdG9yKGNzc1J1bGUuaWQpfVwiKWA7XG4gICAgfVxuICAgIGlmIChjc3NSdWxlLmF0dHJzKSB7XG4gICAgICBmb3IgKGNvbnN0IGF0dHIgb2YgY3NzUnVsZS5hdHRycykge1xuICAgICAgICB1aUF1dG9tYXRvclNlbGVjdG9yICs9IHRoaXMucGFyc2VBdHRyKGF0dHIpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoY3NzUnVsZS5wc2V1ZG9zKSB7XG4gICAgICBmb3IgKGNvbnN0IHBzZXVkbyBvZiBjc3NSdWxlLnBzZXVkb3MpIHtcbiAgICAgICAgdWlBdXRvbWF0b3JTZWxlY3RvciArPSB0aGlzLnBhcnNlUHNldWRvKHBzZXVkbyk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChjc3NSdWxlLnJ1bGUpIHtcbiAgICAgIHVpQXV0b21hdG9yU2VsZWN0b3IgKz0gYC5jaGlsZFNlbGVjdG9yKCR7dGhpcy5wYXJzZUNzc1J1bGUoY3NzUnVsZS5ydWxlKX0pYDtcbiAgICB9XG4gICAgcmV0dXJuIHVpQXV0b21hdG9yU2VsZWN0b3I7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCBDU1Mgb2JqZWN0IHRvIFVpQXV0b21hdG9yMiBzZWxlY3RvclxuICAgKiBAcGFyYW0ge0Nzc09iamVjdH0gY3NzIENTUyBvYmplY3RcbiAgICogQHJldHVybnMge3N0cmluZ30gVGhlIENTUyBvYmplY3QgcGFyc2VkIGFzIGEgVWlTZWxlY3RvclxuICAgKi9cbiAgcGFyc2VDc3NPYmplY3QgKGNzcykge1xuICAgIHN3aXRjaCAoY3NzLnR5cGUpIHtcbiAgICAgIGNhc2UgJ3J1bGUnOlxuICAgICAgICByZXR1cm4gdGhpcy5wYXJzZUNzc1J1bGUoY3NzKTtcbiAgICAgIGNhc2UgJ3J1bGVTZXQnOlxuICAgICAgICByZXR1cm4gdGhpcy5wYXJzZUNzc09iamVjdChjc3MucnVsZSk7XG4gICAgICBjYXNlICdzZWxlY3RvcnMnOlxuICAgICAgICByZXR1cm4gY3NzLnNlbGVjdG9ycy5tYXAoKHNlbGVjdG9yKSA9PiB0aGlzLnBhcnNlQ3NzT2JqZWN0KHNlbGVjdG9yKSkuam9pbignOyAnKTtcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgLy8gVGhpcyBpcyBuZXZlciByZWFjaGFibGUsIGJ1dCBpZiBpdCBldmVyIGlzIGRvIHRoaXMuXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVWlBdXRvbWF0b3IgZG9lcyBub3Qgc3VwcG9ydCAnJHtjc3MudHlwZX0nIGNzcy4gT25seSBzdXBwb3J0cyAncnVsZScsICdydWxlU2V0JywgJ3NlbGVjdG9ycycgYCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgYSBDU1Mgc2VsZWN0b3IgdG8gYSBVaUF1dG9tYXRvcjIgc2VsZWN0b3JcbiAgICpcbiAgICogQHJldHVybnMge3N0cmluZ30gVGhlIENTUyBzZWxlY3RvciBjb252ZXJ0ZWQgdG8gYSBVaVNlbGVjdG9yXG4gICAqL1xuICB0b1VpQXV0b21hdG9yU2VsZWN0b3IgKCkge1xuICAgIGxldCBjc3NPYmo7XG4gICAgdHJ5IHtcbiAgICAgIGNzc09iaiA9IHBhcnNlci5wYXJzZSh0aGlzLnNlbGVjdG9yKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRTZWxlY3RvckVycm9yKGBJbnZhbGlkIENTUyBzZWxlY3RvciAnJHt0aGlzLnNlbGVjdG9yfScuIFJlYXNvbjogJyR7ZX0nYCk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gdGhpcy5wYXJzZUNzc09iamVjdChjc3NPYmopO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZFNlbGVjdG9yRXJyb3IoYFVuc3VwcG9ydGVkIENTUyBzZWxlY3RvciAnJHt0aGlzLnNlbGVjdG9yfScuIFJlYXNvbjogJyR7ZX0nYCk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IENzc0NvbnZlcnRlcjsiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxJQUFBQSxrQkFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsT0FBQSxHQUFBRixPQUFBO0FBRUEsTUFBTUcsTUFBTSxHQUFHLElBQUlDLG9DQUFpQixFQUFFO0FBQ3RDRCxNQUFNLENBQUNFLHVCQUF1QixDQUFDLEtBQUssQ0FBQztBQUNyQ0YsTUFBTSxDQUFDRyx3QkFBd0IsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUM5Q0gsTUFBTSxDQUFDSSx3QkFBd0IsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkRKLE1BQU0sQ0FBQ0ssaUJBQWlCLEVBQUU7QUFFMUIsTUFBTUMsV0FBVyxHQUFHLGFBQWE7QUFDakMsTUFBTUMsa0JBQWtCLEdBQUcscUNBQXFDO0FBRWhFLE1BQU1DLGFBQWEsR0FBRyxDQUNwQixXQUFXLEVBQUUsU0FBUyxFQUFFLFdBQVcs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
|
|
181
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY3NzU2VsZWN0b3JQYXJzZXIiLCJyZXF1aXJlIiwiX2xvZGFzaCIsIl9kcml2ZXIiLCJwYXJzZXIiLCJDc3NTZWxlY3RvclBhcnNlciIsInJlZ2lzdGVyU2VsZWN0b3JQc2V1ZG9zIiwicmVnaXN0ZXJOZXN0aW5nT3BlcmF0b3JzIiwicmVnaXN0ZXJBdHRyRXF1YWxpdHlNb2RzIiwiZW5hYmxlU3Vic3RpdHV0ZXMiLCJSRVNPVVJDRV9JRCIsIklEX0xPQ0FUT1JfUEFUVEVSTiIsIkJPT0xFQU5fQVRUUlMiLCJOVU1FUklDX0FUVFJTIiwiU1RSX0FUVFJTIiwiQUxMX0FUVFJTIiwiQVRUUklCVVRFX0FMSUFTRVMiLCJ0b1NuYWtlQ2FzZSIsInN0ciIsInRva2VucyIsInNwbGl0IiwibWFwIiwiY2hhckF0IiwidG9VcHBlckNhc2UiLCJzbGljZSIsInRvTG93ZXJDYXNlIiwib3V0Iiwiam9pbiIsImFzc2VydEdldEJvb2wiLCJjc3MiLCJfY3NzJHZhbHVlIiwidmFsIiwidmFsdWUiLCJpbmNsdWRlcyIsIkVycm9yIiwibmFtZSIsImFzc2VydEdldEF0dHJOYW1lIiwiYXR0ck5hbWUiLCJvZmZpY2lhbEF0dHIiLCJhbGlhc0F0dHJzIiwiZ2V0V29yZE1hdGNoZXJSZWdleCIsIndvcmQiLCJlc2NhcGVSZWdFeHAiLCJDc3NDb252ZXJ0ZXIiLCJjb25zdHJ1Y3RvciIsInNlbGVjdG9yIiwicGtnIiwiZm9ybWF0SWRMb2NhdG9yIiwibG9jYXRvciIsInRlc3QiLCJwYXJzZUF0dHIiLCJjc3NBdHRyIiwidmFsdWVUeXBlIiwibWV0aG9kTmFtZSIsIm9wZXJhdG9yIiwicGFyc2VQc2V1ZG8iLCJjc3NQc2V1ZG8iLCJwc2V1ZG9OYW1lIiwicGFyc2VDc3NSdWxlIiwiY3NzUnVsZSIsIm5lc3RpbmdPcGVyYXRvciIsInVpQXV0b21hdG9yU2VsZWN0b3IiLCJ0YWdOYW1lIiwiYW5kcm9pZENsYXNzIiwiY2xhc3NOYW1lcyIsImNzc0NsYXNzTmFtZXMiLCJwdXNoIiwiaWQiLCJhdHRycyIsImF0dHIiLCJwc2V1ZG9zIiwicHNldWRvIiwicnVsZSIsInBhcnNlQ3NzT2JqZWN0IiwidHlwZSIsInNlbGVjdG9ycyIsInRvVWlBdXRvbWF0b3JTZWxlY3RvciIsImNzc09iaiIsInBhcnNlIiwiZSIsImVycm9ycyIsIkludmFsaWRTZWxlY3RvckVycm9yIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwiZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9jc3MtY29udmVydGVyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENzc1NlbGVjdG9yUGFyc2VyIH0gZnJvbSAnY3NzLXNlbGVjdG9yLXBhcnNlcic7XG5pbXBvcnQgeyBlc2NhcGVSZWdFeHAgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgZXJyb3JzIH0gZnJvbSAnYXBwaXVtL2RyaXZlcic7XG5cbmNvbnN0IHBhcnNlciA9IG5ldyBDc3NTZWxlY3RvclBhcnNlcigpO1xucGFyc2VyLnJlZ2lzdGVyU2VsZWN0b3JQc2V1ZG9zKCdoYXMnKTtcbnBhcnNlci5yZWdpc3Rlck5lc3RpbmdPcGVyYXRvcnMoJz4nLCAnKycsICd+Jyk7XG5wYXJzZXIucmVnaXN0ZXJBdHRyRXF1YWxpdHlNb2RzKCdeJywgJyQnLCAnKicsICd+Jyk7XG5wYXJzZXIuZW5hYmxlU3Vic3RpdHV0ZXMoKTtcblxuY29uc3QgUkVTT1VSQ0VfSUQgPSAncmVzb3VyY2UtaWQnO1xuY29uc3QgSURfTE9DQVRPUl9QQVRURVJOID0gL15bYS16QS1aX11bYS16QS1aMC05Ll9dKjppZFxcL1tcXFNdKyQvO1xuXG5jb25zdCBCT09MRUFOX0FUVFJTID0gW1xuICAnY2hlY2thYmxlJywgJ2NoZWNrZWQnLCAnY2xpY2thYmxlJywgJ2VuYWJsZWQnLCAnZm9jdXNhYmxlJyxcbiAgJ2ZvY3VzZWQnLCAnbG9uZy1jbGlja2FibGUnLCAnc2Nyb2xsYWJsZScsICdzZWxlY3RlZCcsXG5dO1xuXG5jb25zdCBOVU1FUklDX0FUVFJTID0gW1xuICAnaW5kZXgnLCAnaW5zdGFuY2UnLFxuXTtcblxuY29uc3QgU1RSX0FUVFJTID0gW1xuICAnZGVzY3JpcHRpb24nLCBSRVNPVVJDRV9JRCwgJ3RleHQnLCAnY2xhc3MtbmFtZScsICdwYWNrYWdlLW5hbWUnXG5dO1xuXG5jb25zdCBBTExfQVRUUlMgPSBbXG4gIC4uLkJPT0xFQU5fQVRUUlMsXG4gIC4uLk5VTUVSSUNfQVRUUlMsXG4gIC4uLlNUUl9BVFRSUyxcbl07XG5cbmNvbnN0IEFUVFJJQlVURV9BTElBU0VTID0gW1xuICBbUkVTT1VSQ0VfSUQsIFsnaWQnXV0sXG4gIFsnZGVzY3JpcHRpb24nLCBbXG4gICAgJ2NvbnRlbnQtZGVzY3JpcHRpb24nLCAnY29udGVudC1kZXNjJyxcbiAgICAnZGVzYycsICdhY2Nlc3NpYmlsaXR5LWlkJyxcbiAgXV0sXG4gIFsnaW5kZXgnLCBbJ250aC1jaGlsZCddXSxcbl07XG5cbi8qKlxuICogQ29udmVydCBoeXBoZW4gc2VwYXJhdGVkIHdvcmQgdG8gc25ha2UgY2FzZVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBoeXBoZW4gc2VwYXJhdGVkIHdvcmQgdHJhbnNsYXRlZCB0byBzbmFrZSBjYXNlXG4gKi9cbmZ1bmN0aW9uIHRvU25ha2VDYXNlIChzdHIpIHtcbiAgaWYgKCFzdHIpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cbiAgY29uc3QgdG9rZW5zID0gc3RyLnNwbGl0KCctJykubWFwKChzdHIpID0+IHN0ci5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHN0ci5zbGljZSgxKS50b0xvd2VyQ2FzZSgpKTtcbiAgY29uc3Qgb3V0ID0gdG9rZW5zLmpvaW4oJycpO1xuICByZXR1cm4gb3V0LmNoYXJBdCgwKS50b0xvd2VyQ2FzZSgpICsgb3V0LnNsaWNlKDEpO1xufVxuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IENzc05hbWVWYWx1ZU9iamVjdFxuICogQHByb3BlcnR5IHs/bmFtZX0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgQ1NTIG9iamVjdFxuICogQHByb3BlcnR5IHs/c3RyaW5nfSB2YWx1ZSBUaGUgdmFsdWUgb2YgdGhlIENTUyBvYmplY3RcbiAqL1xuXG4vKipcbiAqIEdldCB0aGUgYm9vbGVhbiBmcm9tIGEgQ1NTIG9iamVjdC4gSWYgZW1wdHksIHJldHVybiB0cnVlLiBJZiBub3QgdHJ1ZS9mYWxzZS9lbXB0eSwgdGhyb3cgZXhjZXB0aW9uXG4gKlxuICogQHBhcmFtIHtDc3NOYW1lVmFsdWVPYmplY3R9IGNzcyBBIENTUyBvYmplY3QgdGhhdCBoYXMgJ25hbWUnIGFuZCAndmFsdWUnXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBFaXRoZXIgJ3RydWUnIG9yICdmYWxzZScuIElmIHZhbHVlIGlzIGVtcHR5LCByZXR1cm4gJ3RydWUnXG4gKi9cbmZ1bmN0aW9uIGFzc2VydEdldEJvb2wgKGNzcykge1xuICBjb25zdCB2YWwgPSBjc3MudmFsdWU/LnRvTG93ZXJDYXNlKCkgfHwgJ3RydWUnOyAvLyBhbiBvbWl0dGVkIGJvb2xlYW4gYXR0cmlidXRlIG1lYW5zICd0cnVlJyAoZS5nLjogaW5wdXRbY2hlY2tlZF0gbWVhbnMgY2hlY2tlZCBpcyB0cnVlKVxuICBpZiAoWyd0cnVlJywgJ2ZhbHNlJ10uaW5jbHVkZXModmFsKSkge1xuICAgIHJldHVybiB2YWw7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKGAnJHtjc3MubmFtZX0nIG11c3QgYmUgdHJ1ZSwgZmFsc2Ugb3IgZW1wdHkuIEZvdW5kICcke2Nzcy52YWx1ZX0nYCk7XG59XG5cbi8qKlxuICogR2V0IHRoZSBjYW5vbmljYWwgZm9ybSBvZiBhIENTUyBhdHRyaWJ1dGUgbmFtZVxuICpcbiAqIENvbnZlcnRzIHRvIGxvd2VyY2FzZSBhbmQgaWYgYW4gYXR0cmlidXRlIG5hbWUgaXMgYW4gYWxpYXMgZm9yIHNvbWV0aGluZyBlbHNlLCByZXR1cm5cbiAqIHdoYXQgaXQgaXMgYW4gYWxpYXMgZm9yXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGNzcyBDU1Mgb2JqZWN0XG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgY2Fub25pY2FsIGF0dHJpYnV0ZSBuYW1lXG4gKi9cbmZ1bmN0aW9uIGFzc2VydEdldEF0dHJOYW1lIChjc3MpIHtcbiAgY29uc3QgYXR0ck5hbWUgPSBjc3MubmFtZS50b0xvd2VyQ2FzZSgpO1xuXG4gIC8vIENoZWNrIGlmIGl0J3Mgc3VwcG9ydGVkIGFuZCBpZiBpdCBpcywgcmV0dXJuIGl0XG4gIGlmIChBTExfQVRUUlMuaW5jbHVkZXMoYXR0ck5hbWUpKSB7XG4gICAgcmV0dXJuIGF0dHJOYW1lLnRvTG93ZXJDYXNlKCk7XG4gIH1cblxuICAvLyBJZiBhdHRyTmFtZSBpcyBhbiBhbGlhcyBmb3Igc29tZXRoaW5nIGVsc2UsIHJldHVybiB0aGF0XG4gIGZvciAoY29uc3QgW29mZmljaWFsQXR0ciwgYWxpYXNBdHRyc10gb2YgQVRUUklCVVRFX0FMSUFTRVMpIHtcbiAgICBpZiAoYWxpYXNBdHRycy5pbmNsdWRlcyhhdHRyTmFtZSkpIHtcbiAgICAgIHJldHVybiBvZmZpY2lhbEF0dHI7XG4gICAgfVxuICB9XG4gIHRocm93IG5ldyBFcnJvcihgJyR7YXR0ck5hbWV9JyBpcyBub3QgYSB2YWxpZCBhdHRyaWJ1dGUuIGAgK1xuICAgIGBTdXBwb3J0ZWQgYXR0cmlidXRlcyBhcmUgJyR7QUxMX0FUVFJTLmpvaW4oJywgJyl9J2ApO1xufVxuXG4vKipcbiAqIEdldCBhIHJlZ2V4IHRoYXQgbWF0Y2hlcyBhIHdob2xlIHdvcmQuIEZvciB0aGUgfj0gQ1NTIGF0dHJpYnV0ZSBzZWxlY3Rvci5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gd29yZFxuICogQHJldHVybnMge3N0cmluZ30gQSByZWdleCBcIndvcmRcIiBtYXRjaGVyXG4gKi9cbmZ1bmN0aW9uIGdldFdvcmRNYXRjaGVyUmVnZXggKHdvcmQpIHtcbiAgcmV0dXJuIGBcXFxcYihcXFxcdyoke2VzY2FwZVJlZ0V4cCh3b3JkKX1cXFxcdyopXFxcXGJgO1xufVxuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IENzc0F0dHJcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gdmFsdWVUeXBlIFR5cGUgb2YgYXR0cmlidXRlIChtdXN0IGJlIHN0cmluZyBvciBlbXB0eSlcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gdmFsdWUgVmFsdWUgb2YgdGhlIGF0dHJpYnV0ZVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBvcGVyYXRvciBUaGUgb3BlcmF0b3IgYmV0d2VlbiB2YWx1ZSBhbmQgdmFsdWUgdHlwZSAoPSwgKj0sICwgXj0sICQ9KVxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gQ3NzUnVsZVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBuZXN0aW5nT3BlcmF0b3IgVGhlIG5lc3Rpbmcgb3BlcmF0b3IgKGFrYTogY29tYmluYXRvciBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvQ1NTX1NlbGVjdG9ycylcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gdGFnTmFtZSBUaGUgdGFnIG5hbWUgKGFrYTogdHlwZSBzZWxlY3RvciBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvVHlwZV9zZWxlY3RvcnMpXG4gKiBAcHJvcGVydHkgez9zdHJpbmdbXX0gY2xhc3NOYW1lcyBBbiBhcnJheSBvZiBDU1MgY2xhc3MgbmFtZXNcbiAqIEBwcm9wZXJ0eSB7P0Nzc0F0dHJbXX0gYXR0cnMgQW4gYXJyYXkgb2YgQ1NTIGF0dHJpYnV0ZXNcbiAqIEBwcm9wZXJ0eSB7P0Nzc1BzZXVkb1tdfSBhdHRycyBBbiBhcnJheSBvZiBDU1MgcHNldWRvc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfSBpZCBDU1MgaWRlbnRpZmllclxuICogQHByb3BlcnR5IHs/Q3NzUnVsZX0gcnVsZSBBIGRlc2NlbmRhbnQgb2YgdGhpcyBDU1MgcnVsZVxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gQ3NzT2JqZWN0XG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHR5cGUgVHlwZSBvZiBDU1Mgb2JqZWN0LiAncnVsZScsICdydWxlc2V0JyBvciAnc2VsZWN0b3JzJ1xuICovXG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gQ3NzUHNldWRvXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHZhbHVlVHlwZSBUaGUgdHlwZSBvZiBDU1MgcHNldWRvIHNlbGVjdG9yIChodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9jc3Mtc2VsZWN0b3ItcGFyc2VyIGZvciByZWZlcmVuY2UpXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IG5hbWUgVGhlIG5hbWUgb2YgdGhlIHBzZXVkbyBzZWxlY3RvclxuICogQHByb3BlcnR5IHs/c3RyaW5nfSB2YWx1ZSBUaGUgdmFsdWUgb2YgdGhlIHBzZXVkbyBzZWxlY3RvclxuICovXG5cbmNsYXNzIENzc0NvbnZlcnRlciB7XG5cbiAgY29uc3RydWN0b3IgKHNlbGVjdG9yLCBwa2cpIHtcbiAgICB0aGlzLnNlbGVjdG9yID0gc2VsZWN0b3I7XG4gICAgdGhpcy5wa2cgPSBwa2c7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGA8cGtnTmFtZT46aWQvYCBwcmVmaXggdG8gYmVnaW5uaW5nIG9mIHN0cmluZyBpZiBpdCdzIG5vdCB0aGVyZSBhbHJlYWR5XG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBsb2NhdG9yIFRoZSBpbml0aWFsIGxvY2F0b3JcbiAgICogQHJldHVybnMge3N0cmluZ30gU3RyaW5nIHdpdGggYDxwa2dOYW1lPjppZC9gIHByZXBlbmRlZCAoaWYgaXQgd2Fzbid0IGFscmVhZHkpXG4gICAqL1xuICBmb3JtYXRJZExvY2F0b3IgKGxvY2F0b3IpIHtcbiAgICByZXR1cm4gSURfTE9DQVRPUl9QQVRURVJOLnRlc3QobG9jYXRvcilcbiAgICAgID8gbG9jYXRvclxuICAgICAgOiBgJHt0aGlzLnBrZyB8fCAnYW5kcm9pZCd9OmlkLyR7bG9jYXRvcn1gO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgYSBDU1MgYXR0cmlidXRlIGludG8gYSBVaVNlbGVjdG9yIG1ldGhvZCBjYWxsXG4gICAqXG4gICAqIEBwYXJhbSB7Q3NzQXR0cn0gY3NzQXR0ciBDU1MgYXR0cmlidXRlIG9iamVjdFxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBDU1MgYXR0cmlidXRlIHBhcnNlZCBhcyBVaVNlbGVjdG9yXG4gICAqL1xuICBwYXJzZUF0dHIgKGNzc0F0dHIpIHtcbiAgICBpZiAoY3NzQXR0ci52YWx1ZVR5cGUgJiYgY3NzQXR0ci52YWx1ZVR5cGUgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCcke2Nzc0F0dHIubmFtZX09JHtjc3NBdHRyLnZhbHVlfScgaXMgYW4gaW52YWxpZCBhdHRyaWJ1dGUuIGAgK1xuICAgICAgICBgT25seSAnc3RyaW5nJyBhbmQgZW1wdHkgYXR0cmlidXRlIHR5cGVzIGFyZSBzdXBwb3J0ZWQuIEZvdW5kICcke2Nzc0F0dHIudmFsdWVUeXBlfSdgKTtcbiAgICB9XG4gICAgY29uc3QgYXR0ck5hbWUgPSBhc3NlcnRHZXRBdHRyTmFtZShjc3NBdHRyKTtcbiAgICBjb25zdCBtZXRob2ROYW1lID0gdG9TbmFrZUNhc2UoYXR0ck5hbWUpO1xuXG4gICAgLy8gVmFsaWRhdGUgdGhhdCBpdCdzIGEgc3VwcG9ydGVkIGF0dHJpYnV0ZVxuICAgIGlmICghU1RSX0FUVFJTLmluY2x1ZGVzKGF0dHJOYW1lKSAmJiAhQk9PTEVBTl9BVFRSUy5pbmNsdWRlcyhhdHRyTmFtZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJyR7YXR0ck5hbWV9JyBpcyBub3Qgc3VwcG9ydGVkLiBTdXBwb3J0ZWQgYXR0cmlidXRlcyBhcmUgYCArXG4gICAgICAgIGAnJHtbLi4uU1RSX0FUVFJTLCAuLi5CT09MRUFOX0FUVFJTXS5qb2luKCcsICcpfSdgKTtcbiAgICB9XG5cbiAgICAvLyBQYXJzZSBib29sZWFuLCBpZiBpdCdzIGEgYm9vbGVhbiBhdHRyaWJ1dGVcbiAgICBpZiAoQk9PTEVBTl9BVFRSUy5pbmNsdWRlcyhhdHRyTmFtZSkpIHtcbiAgICAgIHJldHVybiBgLiR7bWV0aG9kTmFtZX0oJHthc3NlcnRHZXRCb29sKGNzc0F0dHIpfSlgO1xuICAgIH1cblxuICAgIC8vIE90aGVyd2lzZSBwYXJzZSBhcyBzdHJpbmdcbiAgICBsZXQgdmFsdWUgPSBjc3NBdHRyLnZhbHVlIHx8ICcnO1xuICAgIGlmIChhdHRyTmFtZSA9PT0gUkVTT1VSQ0VfSUQpIHtcbiAgICAgIHZhbHVlID0gdGhpcy5mb3JtYXRJZExvY2F0b3IodmFsdWUpO1xuICAgIH1cbiAgICBpZiAodmFsdWUgPT09ICcnKSB7XG4gICAgICByZXR1cm4gYC4ke21ldGhvZE5hbWV9TWF0Y2hlcyhcIlwiKWA7XG4gICAgfVxuXG4gICAgc3dpdGNoIChjc3NBdHRyLm9wZXJhdG9yKSB7XG4gICAgICBjYXNlICc9JzpcbiAgICAgICAgcmV0dXJuIGAuJHttZXRob2ROYW1lfShcIiR7dmFsdWV9XCIpYDtcbiAgICAgIGNhc2UgJyo9JzpcbiAgICAgICAgaWYgKFsnZGVzY3JpcHRpb24nLCAndGV4dCddLmluY2x1ZGVzKGF0dHJOYW1lKSkge1xuICAgICAgICAgIHJldHVybiBgLiR7bWV0aG9kTmFtZX1Db250YWlucyhcIiR7dmFsdWV9XCIpYDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYC4ke21ldGhvZE5hbWV9TWF0Y2hlcyhcIiR7ZXNjYXBlUmVnRXhwKHZhbHVlKX1cIilgO1xuICAgICAgY2FzZSAnXj0nOlxuICAgICAgICBpZiAoWydkZXNjcmlwdGlvbicsICd0ZXh0J10uaW5jbHVkZXMoYXR0ck5hbWUpKSB7XG4gICAgICAgICAgcmV0dXJuIGAuJHttZXRob2ROYW1lfVN0YXJ0c1dpdGgoXCIke3ZhbHVlfVwiKWA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGAuJHttZXRob2ROYW1lfU1hdGNoZXMoXCJeJHtlc2NhcGVSZWdFeHAodmFsdWUpfVwiKWA7XG4gICAgICBjYXNlICckPSc6XG4gICAgICAgIHJldHVybiBgLiR7bWV0aG9kTmFtZX1NYXRjaGVzKFwiJHtlc2NhcGVSZWdFeHAodmFsdWUpfSRcIilgO1xuICAgICAgY2FzZSAnfj0nOlxuICAgICAgICByZXR1cm4gYC4ke21ldGhvZE5hbWV9TWF0Y2hlcyhcIiR7Z2V0V29yZE1hdGNoZXJSZWdleCh2YWx1ZSl9XCIpYDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIC8vIFVucmVhY2hhYmxlLCBidXQgYWRkaW5nIGVycm9yIGluIGNhc2UgYSBuZXcgQ1NTIGF0dHJpYnV0ZSBpcyBhZGRlZC5cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBDU1MgYXR0cmlidXRlIG9wZXJhdG9yICcke2Nzc0F0dHIub3BlcmF0b3J9Jy4gYCArXG4gICAgICAgICAgYCAnPScsICcqPScsICdePScsICckPScgYW5kICd+PScgYXJlIHN1cHBvcnRlZC5gKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCBhIENTUyBwc2V1ZG8gY2xhc3MgdG8gYSBVaVNlbGVjdG9yXG4gICAqXG4gICAqIEBwYXJhbSB7Q3NzUHNldWRvfSBjc3NQc2V1ZG8gQ1NTIFBzZXVkbyBjbGFzc1xuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBQc2V1ZG8gc2VsZWN0b3IgcGFyc2VkIGFzIFVpU2VsZWN0b3JcbiAgICovXG4gIHBhcnNlUHNldWRvIChjc3NQc2V1ZG8pIHtcbiAgICBpZiAoY3NzUHNldWRvLnZhbHVlVHlwZSAmJiBjc3NQc2V1ZG8udmFsdWVUeXBlICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAnJHtjc3NQc2V1ZG8ubmFtZX09JHtjc3NQc2V1ZG8udmFsdWV9Jy4gYCArXG4gICAgICAgIGBVbnN1cHBvcnRlZCBjc3MgcHNldWRvIGNsYXNzIHZhbHVlIHR5cGU6ICcke2Nzc1BzZXVkby52YWx1ZVR5cGV9Jy4gT25seSAnc3RyaW5nJyB0eXBlIG9yIGVtcHR5IGlzIHN1cHBvcnRlZC5gKTtcbiAgICB9XG5cbiAgICBjb25zdCBwc2V1ZG9OYW1lID0gYXNzZXJ0R2V0QXR0ck5hbWUoY3NzUHNldWRvKTtcblxuICAgIGlmIChCT09MRUFOX0FUVFJTLmluY2x1ZGVzKHBzZXVkb05hbWUpKSB7XG4gICAgICByZXR1cm4gYC4ke3RvU25ha2VDYXNlKHBzZXVkb05hbWUpfSgke2Fzc2VydEdldEJvb2woY3NzUHNldWRvKX0pYDtcbiAgICB9XG5cbiAgICBpZiAoTlVNRVJJQ19BVFRSUy5pbmNsdWRlcyhwc2V1ZG9OYW1lKSkge1xuICAgICAgcmV0dXJuIGAuJHtwc2V1ZG9OYW1lfSgke2Nzc1BzZXVkby52YWx1ZX0pYDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCBhIENTUyBydWxlIHRvIGEgVWlTZWxlY3RvclxuICAgKiBAcGFyYW0ge0Nzc1J1bGV9IGNzc1J1bGUgQ1NTIHJ1bGUgZGVmaW5pdGlvblxuICAgKi9cbiAgcGFyc2VDc3NSdWxlIChjc3NSdWxlKSB7XG4gICAgY29uc3QgeyBuZXN0aW5nT3BlcmF0b3IgfSA9IGNzc1J1bGU7XG4gICAgaWYgKG5lc3RpbmdPcGVyYXRvciAmJiBuZXN0aW5nT3BlcmF0b3IgIT09ICcgJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAnJHtuZXN0aW5nT3BlcmF0b3J9JyBpcyBub3QgYSBzdXBwb3J0ZWQgY29tYmluYXRvci4gYCArXG4gICAgICAgIGBPbmx5IGNoaWxkIGNvbWJpbmF0b3IgKD4pIGFuZCBkZXNjZW5kYW50IGNvbWJpbmF0b3IgYXJlIHN1cHBvcnRlZC5gKTtcbiAgICB9XG5cbiAgICBsZXQgdWlBdXRvbWF0b3JTZWxlY3RvciA9ICduZXcgVWlTZWxlY3RvcigpJztcbiAgICBpZiAoY3NzUnVsZS50YWdOYW1lICYmIGNzc1J1bGUudGFnTmFtZSAhPT0gJyonKSB7XG4gICAgICBsZXQgYW5kcm9pZENsYXNzID0gW2Nzc1J1bGUudGFnTmFtZV07XG4gICAgICBpZiAoY3NzUnVsZS5jbGFzc05hbWVzKSB7XG4gICAgICAgIGZvciAoY29uc3QgY3NzQ2xhc3NOYW1lcyBvZiBjc3NSdWxlLmNsYXNzTmFtZXMpIHtcbiAgICAgICAgICBhbmRyb2lkQ2xhc3MucHVzaChjc3NDbGFzc05hbWVzKTtcbiAgICAgICAgfVxuICAgICAgICB1aUF1dG9tYXRvclNlbGVjdG9yICs9IGAuY2xhc3NOYW1lKFwiJHthbmRyb2lkQ2xhc3Muam9pbignLicpfVwiKWA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB1aUF1dG9tYXRvclNlbGVjdG9yICs9IGAuY2xhc3NOYW1lTWF0Y2hlcyhcIiR7Y3NzUnVsZS50YWdOYW1lfVwiKWA7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjc3NSdWxlLmNsYXNzTmFtZXMpIHtcbiAgICAgIHVpQXV0b21hdG9yU2VsZWN0b3IgKz0gYC5jbGFzc05hbWVNYXRjaGVzKFwiJHtjc3NSdWxlLmNsYXNzTmFtZXMuam9pbignXFxcXC4nKX1cIilgO1xuICAgIH1cbiAgICBpZiAoY3NzUnVsZS5pZCkge1xuICAgICAgdWlBdXRvbWF0b3JTZWxlY3RvciArPSBgLnJlc291cmNlSWQoXCIke3RoaXMuZm9ybWF0SWRMb2NhdG9yKGNzc1J1bGUuaWQpfVwiKWA7XG4gICAgfVxuICAgIGlmIChjc3NSdWxlLmF0dHJzKSB7XG4gICAgICBmb3IgKGNvbnN0IGF0dHIgb2YgY3NzUnVsZS5hdHRycykge1xuICAgICAgICB1aUF1dG9tYXRvclNlbGVjdG9yICs9IHRoaXMucGFyc2VBdHRyKGF0dHIpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoY3NzUnVsZS5wc2V1ZG9zKSB7XG4gICAgICBmb3IgKGNvbnN0IHBzZXVkbyBvZiBjc3NSdWxlLnBzZXVkb3MpIHtcbiAgICAgICAgdWlBdXRvbWF0b3JTZWxlY3RvciArPSB0aGlzLnBhcnNlUHNldWRvKHBzZXVkbyk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChjc3NSdWxlLnJ1bGUpIHtcbiAgICAgIHVpQXV0b21hdG9yU2VsZWN0b3IgKz0gYC5jaGlsZFNlbGVjdG9yKCR7dGhpcy5wYXJzZUNzc1J1bGUoY3NzUnVsZS5ydWxlKX0pYDtcbiAgICB9XG4gICAgcmV0dXJuIHVpQXV0b21hdG9yU2VsZWN0b3I7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCBDU1Mgb2JqZWN0IHRvIFVpQXV0b21hdG9yMiBzZWxlY3RvclxuICAgKiBAcGFyYW0ge0Nzc09iamVjdH0gY3NzIENTUyBvYmplY3RcbiAgICogQHJldHVybnMge3N0cmluZ30gVGhlIENTUyBvYmplY3QgcGFyc2VkIGFzIGEgVWlTZWxlY3RvclxuICAgKi9cbiAgcGFyc2VDc3NPYmplY3QgKGNzcykge1xuICAgIHN3aXRjaCAoY3NzLnR5cGUpIHtcbiAgICAgIGNhc2UgJ3J1bGUnOlxuICAgICAgICByZXR1cm4gdGhpcy5wYXJzZUNzc1J1bGUoY3NzKTtcbiAgICAgIGNhc2UgJ3J1bGVTZXQnOlxuICAgICAgICByZXR1cm4gdGhpcy5wYXJzZUNzc09iamVjdChjc3MucnVsZSk7XG4gICAgICBjYXNlICdzZWxlY3RvcnMnOlxuICAgICAgICByZXR1cm4gY3NzLnNlbGVjdG9ycy5tYXAoKHNlbGVjdG9yKSA9PiB0aGlzLnBhcnNlQ3NzT2JqZWN0KHNlbGVjdG9yKSkuam9pbignOyAnKTtcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgLy8gVGhpcyBpcyBuZXZlciByZWFjaGFibGUsIGJ1dCBpZiBpdCBldmVyIGlzIGRvIHRoaXMuXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVWlBdXRvbWF0b3IgZG9lcyBub3Qgc3VwcG9ydCAnJHtjc3MudHlwZX0nIGNzcy4gT25seSBzdXBwb3J0cyAncnVsZScsICdydWxlU2V0JywgJ3NlbGVjdG9ycycgYCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgYSBDU1Mgc2VsZWN0b3IgdG8gYSBVaUF1dG9tYXRvcjIgc2VsZWN0b3JcbiAgICpcbiAgICogQHJldHVybnMge3N0cmluZ30gVGhlIENTUyBzZWxlY3RvciBjb252ZXJ0ZWQgdG8gYSBVaVNlbGVjdG9yXG4gICAqL1xuICB0b1VpQXV0b21hdG9yU2VsZWN0b3IgKCkge1xuICAgIGxldCBjc3NPYmo7XG4gICAgdHJ5IHtcbiAgICAgIGNzc09iaiA9IHBhcnNlci5wYXJzZSh0aGlzLnNlbGVjdG9yKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRTZWxlY3RvckVycm9yKGBJbnZhbGlkIENTUyBzZWxlY3RvciAnJHt0aGlzLnNlbGVjdG9yfScuIFJlYXNvbjogJyR7ZX0nYCk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gdGhpcy5wYXJzZUNzc09iamVjdChjc3NPYmopO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZFNlbGVjdG9yRXJyb3IoYFVuc3VwcG9ydGVkIENTUyBzZWxlY3RvciAnJHt0aGlzLnNlbGVjdG9yfScuIFJlYXNvbjogJyR7ZX0nYCk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IENzc0NvbnZlcnRlcjsiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxJQUFBQSxrQkFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsT0FBQSxHQUFBRixPQUFBO0FBRUEsTUFBTUcsTUFBTSxHQUFHLElBQUlDLG9DQUFpQixDQUFDLENBQUM7QUFDdENELE1BQU0sQ0FBQ0UsdUJBQXVCLENBQUMsS0FBSyxDQUFDO0FBQ3JDRixNQUFNLENBQUNHLHdCQUF3QixDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQzlDSCxNQUFNLENBQUNJLHdCQUF3QixDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuREosTUFBTSxDQUFDSyxpQkFBaUIsQ0FBQyxDQUFDO0FBRTFCLE1BQU1DLFdBQVcsR0FBRyxhQUFhO0FBQ2pDLE1BQU1DLGtCQUFrQixHQUFHLHFDQUFxQztBQUVoRSxNQUFNQyxhQUFhLEdBQUcsQ0FDcEIsV0FBVyxFQUFFLFNBQVMs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
|