appium-xcuitest-driver 3.61.0 → 3.62.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/README.md CHANGED
@@ -886,6 +886,26 @@ Stops recording of the audio input. If no audio recording process is running the
886
886
 
887
887
  Base64-encoded content of the recorded media file or an empty string if no audio recording has been started before.
888
888
 
889
+ ### mobile: startPcap
890
+
891
+ Start mobile device network traffic capture. This extension only works if [py-ios-device](https://github.com/YueChen-C/py-ios-device) utility is installed on the server machine and only supports
892
+ real iOS devices.
893
+
894
+ #### Arguments
895
+
896
+ Name | Type | Required | Description | Example
897
+ --- | --- | --- | --- | ---
898
+ timeLimitSec | string or int | no | The maximum recording time, in seconds. The default value is `180`, the maximum value is `43200` (12 hours). | 60
899
+ forceRestart | boolean | no | Whether to restart traffic capture process forcefully when startPcap is called (`true`) or ignore the call until the current traffic capture is completed (`false`, the default value). | true
900
+
901
+ ### mobile: stopPcap
902
+
903
+ Stops network traffic capture. If no traffic capture process is running then the endpoint will try to get the recently recorded file. If no previously recorded file is found and no active traffic capture processes are running then the method returns an empty string.
904
+
905
+ #### Returned Result
906
+
907
+ Base64-encoded content of the traffic capture file (.pcap) or an empty string if no traffic capture has been started before. Netowrk capture files could be opened in [Wireshark](https://www.wireshark.org/) application.
908
+
889
909
  ### mobile: runXCTest
890
910
 
891
911
  Run a native XCTest script. Launches a subprocess that runs the XC Test and blocks until it is completed. Parses the stdout of the process and returns its result as an array. Facebook's [IDB](https://github.com/facebook/idb) tool is required to run such tests.
@@ -124,7 +124,9 @@ extensions.executeMobile = async function executeMobile(mobileCommand, opts = {}
124
124
  expectNotification: 'mobileExpectNotification',
125
125
  performIoHidEvent: 'mobilePerformIoHidEvent',
126
126
  configureLocalization: 'mobileConfigureLocalization',
127
- resetLocationService: 'mobileResetLocationService'
127
+ resetLocationService: 'mobileResetLocationService',
128
+ startPcap: 'mobileStartPcap',
129
+ stopPcap: 'mobileStopPcap'
128
130
  };
129
131
 
130
132
  if (!_lodash.default.has(commandMap, mobileCommand)) {
@@ -138,4 +140,4 @@ var _default = extensions;
138
140
  exports.default = _default;require('source-map-support').install();
139
141
 
140
142
 
141
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9leGVjdXRlLmpzIl0sIm5hbWVzIjpbImV4dGVuc2lvbnMiLCJyZWNlaXZlQXN5bmNSZXNwb25zZSIsInN0YXR1cyIsInZhbHVlIiwibG9nIiwiZGVidWciLCJKU09OIiwic3RyaW5naWZ5IiwidXRpbCIsImhhc1ZhbHVlIiwiYXN5bmNQcm9taXNlIiwid2FybiIsInJlamVjdCIsIm1lc3NhZ2UiLCJfIiwiaXNTdHJpbmciLCJlcnJvciIsInN0YWNrdHJhY2UiLCJyZXNvbHZlIiwiZXhlY3V0ZSIsInNjcmlwdCIsImFyZ3MiLCJtYXRjaCIsInJlcGxhY2UiLCJ0cmltIiwiZXhlY3V0ZU1vYmlsZSIsImlzQXJyYXkiLCJpc1dlYkNvbnRleHQiLCJjb252ZXJ0RWxlbWVudHNGb3JBdG9tcyIsInJlc3VsdCIsImV4ZWN1dGVBdG9tIiwiY2FjaGVXZWJFbGVtZW50cyIsImVycm9ycyIsIk5vdEltcGxlbWVudGVkRXJyb3IiLCJleGVjdXRlQXN5bmMiLCJhc3luY1dhaXRNcyIsInByb21pc2UiLCJyZW1vdGUiLCJleGVjdXRlQXRvbUFzeW5jIiwiY3VyV2ViRnJhbWVzIiwid2FpdEZvckF0b20iLCJtb2JpbGVDb21tYW5kIiwib3B0cyIsImNvbW1hbmRNYXAiLCJ0YXAiLCJzY3JvbGwiLCJzZWxlY3RQaWNrZXJXaGVlbFZhbHVlIiwic3dpcGUiLCJwaW5jaCIsImRvdWJsZVRhcCIsInR3b0ZpbmdlclRhcCIsInRhcFdpdGhOdW1iZXJPZlRhcHMiLCJ0b3VjaEFuZEhvbGQiLCJkcmFnRnJvbVRvRm9yRHVyYXRpb24iLCJyb3RhdGVFbGVtZW50IiwiYWxlcnQiLCJzZXRQYXN0ZWJvYXJkIiwiZ2V0UGFzdGVib2FyZCIsInNvdXJjZSIsImdldENvbnRleHRzIiwiaW5zdGFsbEFwcCIsImlzQXBwSW5zdGFsbGVkIiwicmVtb3ZlQXBwIiwibGF1bmNoQXBwIiwidGVybWluYXRlQXBwIiwicXVlcnlBcHBTdGF0ZSIsImFjdGl2YXRlQXBwIiwibGlzdEFwcHMiLCJ2aWV3cG9ydFNjcmVlbnNob3QiLCJ2aWV3cG9ydFJlY3QiLCJzdGFydFBlcmZSZWNvcmQiLCJzdG9wUGVyZlJlY29yZCIsImluc3RhbGxDZXJ0aWZpY2F0ZSIsInN0YXJ0TG9nc0Jyb2FkY2FzdCIsInN0b3BMb2dzQnJvYWRjYXN0IiwiYmF0dGVyeUluZm8iLCJkZXZpY2VJbmZvIiwiZ2V0RGV2aWNlVGltZSIsImFjdGl2ZUFwcEluZm8iLCJkZXZpY2VTY3JlZW5JbmZvIiwicHJlc3NCdXR0b24iLCJlbnJvbGxCaW9tZXRyaWMiLCJzZW5kQmlvbWV0cmljTWF0Y2giLCJpc0Jpb21ldHJpY0Vucm9sbGVkIiwiY2xlYXJLZXljaGFpbnMiLCJnZXRQZXJtaXNzaW9uIiwic2V0UGVybWlzc2lvbiIsInJlc2V0UGVybWlzc2lvbiIsImdldEFwcGVhcmFuY2UiLCJzZXRBcHBlYXJhbmNlIiwic2lyaUNvbW1hbmQiLCJkZWxldGVGaWxlIiwiZGVsZXRlRm9sZGVyIiwic3RhcnRBdWRpb1JlY29yZGluZyIsInN0b3BBdWRpb1JlY29yZGluZyIsInJ1blhDVGVzdCIsImluc3RhbGxYQ1Rlc3RCdW5kbGUiLCJsaXN0WENUZXN0QnVuZGxlcyIsImxpc3RYQ1Rlc3RzSW5UZXN0QnVuZGxlIiwicHVzaE5vdGlmaWNhdGlvbiIsImV4cGVjdE5vdGlmaWNhdGlvbiIsInBlcmZvcm1Jb0hpZEV2ZW50IiwiY29uZmlndXJlTG9jYWxpemF0aW9uIiwicmVzZXRMb2NhdGlvblNlcnZpY2UiLCJoYXMiLCJVbmtub3duQ29tbWFuZEVycm9yIiwia2V5cyIsImpvaW4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBR0E7O0FBQ0E7O0FBRUEsTUFBTUEsVUFBVSxHQUFHLEVBQW5COztBQUVBQSxVQUFVLENBQUNDLG9CQUFYLEdBQWtDLGVBQWVBLG9CQUFmLENBQXFDQyxNQUFyQyxFQUE2Q0MsS0FBN0MsRUFBb0Q7QUFDcEZDLGtCQUFJQyxLQUFKLENBQVcsNEJBQTJCQyxJQUFJLENBQUNDLFNB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QTlGRjtBQWdHakJDLElBQUFBLHFCQUFxQixFQUFFLDZCQWhHTjtBQWtHakJDLElBQUFBLG9CQUFvQixFQUFFO0FBbEdMLEdBQW5COztBQXFHQSxNQUFJLENBQUN6RixnQkFBRTBGLEdBQUYsQ0FBTTdELFVBQU4sRUFBa0JGLGFBQWxCLENBQUwsRUFBdUM7QUFDckMsVUFBTSxJQUFJVCx5QkFBT3lFLG1CQUFYLENBQWdDLDJCQUEwQmhFLGFBQWMsV0FBVTNCLGdCQUFFNEYsSUFBRixDQUFPL0QsVUFBUCxFQUFtQmdFLElBQW5CLENBQXdCLElBQXhCLENBQThCLDBCQUFoSCxDQUFOO0FBQ0Q7O0FBQ0QsU0FBTyxNQUFNLEtBQUtoRSxVQUFVLENBQUNGLGFBQUQsQ0FBZixFQUFnQ0MsSUFBaEMsQ0FBYjtBQUNELENBMUdEOztlQTRHZTFDLFUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHtcbiAgZXJyb3JzLCBlcnJvckZyb21Db2RlLCBlcnJvckZyb21XM0NKc29uQ29kZVxufSBmcm9tICdhcHBpdW0tYmFzZS1kcml2ZXInO1xuaW1wb3J0IGxvZyBmcm9tICcuLi9sb2dnZXInO1xuaW1wb3J0IHsgdXRpbCB9IGZyb20gJ2FwcGl1bS1zdXBwb3J0JztcblxuY29uc3QgZXh0ZW5zaW9ucyA9IHt9O1xuXG5leHRlbnNpb25zLnJlY2VpdmVBc3luY1Jlc3BvbnNlID0gYXN5bmMgZnVuY3Rpb24gcmVjZWl2ZUFzeW5jUmVzcG9uc2UgKHN0YXR1cywgdmFsdWUpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSByZXF1aXJlLWF3YWl0XG4gIGxvZy5kZWJ1ZyhgUmVjZWl2ZWQgYXN5bmMgcmVzcG9uc2U6ICR7SlNPTi5zdHJpbmdpZnkodmFsdWUpfWApO1xuICBpZiAoIXV0aWwuaGFzVmFsdWUodGhpcy5hc3luY1Byb21pc2UpKSB7XG4gICAgbG9nLndhcm4oYFJlY2VpdmVkIGFzeW5jIHJlc3BvbnNlIHdoZW4gd2Ugd2VyZSBub3QgZXhwZWN0aW5nIG9uZSEgYCArXG4gICAgICBgUmVzcG9uc2Ugd2FzOiAke0pTT04uc3RyaW5naWZ5KHZhbHVlKX1gKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAodXRpbC5oYXNWYWx1ZShzdGF0dXMpICYmIHN0YXR1cyAhPT0gMCkge1xuICAgIC8vIE1KU09OV1BcbiAgICByZXR1cm4gdGhpcy5hc3luY1Byb21pc2UucmVqZWN0KGVycm9yRnJvbUNvZGUoc3RhdHVzLCB2YWx1ZS5tZXNzYWdlKSk7XG4gIH1cbiAgaWYgKCF1dGlsLmhhc1ZhbHVlKHN0YXR1cykgJiYgdmFsdWUgJiYgXy5pc1N0cmluZyh2YWx1ZS5lcnJvcikpIHtcbiAgICAvLyBXM0NcbiAgICByZXR1cm4gdGhpcy5hc3luY1Byb21pc2UucmVqZWN0KGVycm9yRnJvbVczQ0pzb25Db2RlKHZhbHVlLmVycm9yLCB2YWx1ZS5tZXNzYWdlLCB2YWx1ZS5zdGFja3RyYWNlKSk7XG4gIH1cbiAgcmV0dXJuIHRoaXMuYXN5bmNQcm9taXNlLnJlc29sdmUodmFsdWUpO1xufTtcblxuZXh0ZW5zaW9ucy5leGVjdXRlID0gYXN5bmMgZnVuY3Rpb24gZXhlY3V0ZSAoc2NyaXB0LCBhcmdzKSB7XG4gIGlmIChzY3JpcHQubWF0Y2goL15tb2JpbGU6LykpIHtcbiAgICBzY3JpcHQgPSBzY3JpcHQucmVwbGFjZSgvXm1vYmlsZTovLCAnJykudHJpbSgpO1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmV4ZWN1dGVNb2JpbGUoc2NyaXB0LCBfLmlzQXJyYXkoYXJncykgPyBhcmdzWzBdIDogYXJncyk7XG4gIH0gZWxzZSBpZiAodGhpcy5pc1dlYkNvbnRleHQoKSkge1xuICAgIGFyZ3MgPSB0aGlzLmNvbnZlcnRFbGVtZW50c0ZvckF0b21zKGFyZ3MpO1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuZXhlY3V0ZUF0b20oJ2V4ZWN1dGVfc2NyaXB0JywgW3NjcmlwdCwgYXJnc10pO1xuICAgIHJldHVybiB0aGlzLmNhY2hlV2ViRWxlbWVudHMocmVzdWx0KTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLk5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgfVxufTtcblxuZXh0ZW5zaW9ucy5leGVjdXRlQXN5bmMgPSBhc3luYyBmdW5jdGlvbiBleGVjdXRlQXN5bmMgKHNjcmlwdCwgYXJncykge1xuICBpZiAoIXRoaXMuaXNXZWJDb250ZXh0KCkpIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLk5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgfVxuXG4gIGFyZ3MgPSB0aGlzLmNvbnZlcnRFbGVtZW50c0ZvckF0b21zKGFyZ3MpO1xuICB0aGlzLmFzeW5jV2FpdE1zID0gdGhpcy5hc3luY1dhaXRNcyB8fCAwO1xuICBjb25zdCBwcm9taXNlID0gdGhpcy5yZW1vdGUuZXhlY3V0ZUF0b21Bc3luYygnZXhlY3V0ZV9hc3luY19zY3JpcHQnLCBbc2NyaXB0LCBhcmdzLCB0aGlzLmFzeW5jV2FpdE1zXSwgdGhpcy5jdXJXZWJGcmFtZXMpO1xuICByZXR1cm4gYXdhaXQgdGhpcy53YWl0Rm9yQXRvbShwcm9taXNlKTtcbn07XG5cbmV4dGVuc2lvbnMuZXhlY3V0ZU1vYmlsZSA9IGFzeW5jIGZ1bmN0aW9uIGV4ZWN1dGVNb2JpbGUgKG1vYmlsZUNvbW1hbmQsIG9wdHMgPSB7fSkge1xuICBjb25zdCBjb21tYW5kTWFwID0ge1xuICAgIC8vcmVnaW9uIGdlc3R1cmVzIHN1cHBvcnRcbiAgICB0YXA6ICdtb2JpbGVUYXAnLFxuICAgIHNjcm9sbDogJ21vYmlsZVNjcm9sbCcsXG4gICAgc2VsZWN0UGlja2VyV2hlZWxWYWx1ZTogJ21vYmlsZVNlbGVjdFBpY2tlcldoZWVsVmFsdWUnLFxuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3VpZWxlbWVudC8xNjE4NjY4LXN3aXBlbGVmdD9sYW5ndWFnZT1vYmpjXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWllbGVtZW50LzE2MTg2NzQtc3dpcGVyaWdodD9sYW5ndWFnZT1vYmpjXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWllbGVtZW50LzE2MTg2Njctc3dpcGV1cD9sYW5ndWFnZT1vYmpjXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWllbGVtZW50LzE2MTg2NjQtc3dpcGVkb3duP2xhbmd1YWdlPW9iamNcbiAgICBzd2lwZTogJ21vYmlsZVN3aXBlJyxcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWVsZW1lbnQvMTYxODY2OS1waW5jaHdpdGhzY2FsZT9sYW5ndWFnZT1vYmpjXG4gICAgcGluY2g6ICdtb2JpbGVQaW5jaCcsXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWllbGVtZW50LzE2MTg2NzMtZG91YmxldGFwP2xhbmd1YWdlPW9iamNcbiAgICBkb3VibGVUYXA6ICdtb2JpbGVEb3VibGVUYXAnLFxuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3VpZWxlbWVudC8xNjE4Njc1LXR3b2ZpbmdlcnRhcD9sYW5ndWFnZT1vYmpjXG4gICAgdHdvRmluZ2VyVGFwOiAnbW9iaWxlVHdvRmluZ2VyVGFwJyxcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWVsZW1lbnQvMTYxODY3MS10YXB3aXRobnVtYmVyb2Z0YXBzP2xhbmd1YWdlPW9iamNcbiAgICB0YXBXaXRoTnVtYmVyT2ZUYXBzOiAnbW9iaWxlVGFwV2l0aE51bWJlck9mVGFwcycsXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWllbGVtZW50LzE2MTg2NjMtcHJlc3Nmb3JkdXJhdGlvbj9sYW5ndWFnZT1vYmpjXG4gICAgdG91Y2hBbmRIb2xkOiAnbW9iaWxlVG91Y2hBbmRIb2xkJyxcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWVsZW1lbnQvMTYxODY3MC1wcmVzc2ZvcmR1cmF0aW9uP2xhbmd1YWdlPW9iamNcbiAgICBkcmFnRnJvbVRvRm9yRHVyYXRpb246ICdtb2JpbGVEcmFnRnJvbVRvRm9yRHVyYXRpb24nLFxuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3VpZWxlbWVudC8xNjE4NjY1LXJvdGF0ZT9sYW5ndWFnZT1vYmpjXG4gICAgcm90YXRlRWxlbWVudDogJ21vYmlsZVJvdGF0ZUVsZW1lbnQnLFxuXG4gICAgLy9lbmRyZWdpb24gZ2VzdHVyZXMgc3VwcG9ydFxuICAgIGFsZXJ0OiAnbW9iaWxlSGFuZGxlQWxlcnQnLFxuXG4gICAgc2V0UGFzdGVib2FyZDogJ21vYmlsZVNldFBhc3RlYm9hcmQnLFxuICAgIGdldFBhc3RlYm9hcmQ6ICdtb2JpbGVHZXRQYXN0ZWJvYXJkJyxcblxuICAgIHNvdXJjZTogJ21vYmlsZUdldFNvdXJjZScsXG4gICAgZ2V0Q29udGV4dHM6ICdtb2JpbGVHZXRDb250ZXh0cycsXG5cbiAgICAvL3JlZ2lvbiBtdWx0aXBsZSBhcHBzIG1hbmFnZW1lbnRcbiAgICBpbnN0YWxsQXBwOiAnbW9iaWxlSW5zdGFsbEFwcCcsXG4gICAgaXNBcHBJbnN0YWxsZWQ6ICdtb2JpbGVJc0FwcEluc3RhbGxlZCcsXG4gICAgcmVtb3ZlQXBwOiAnbW9iaWxlUmVtb3ZlQXBwJyxcbiAgICBsYXVuY2hBcHA6ICdtb2JpbGVMYXVuY2hBcHAnLFxuICAgIHRlcm1pbmF0ZUFwcDogJ21vYmlsZVRlcm1pbmF0ZUFwcCcsXG4gICAgcXVlcnlBcHBTdGF0ZTogJ21vYmlsZVF1ZXJ5QXBwU3RhdGUnLFxuICAgIGFjdGl2YXRlQXBwOiAnbW9iaWxlQWN0aXZhdGVBcHAnLFxuICAgIGxpc3RBcHBzOiAnbW9iaWxlTGlzdEFwcHMnLFxuICAgIC8vZW5kcmVnaW9uIG11bHRpcGxlIGFwcHMgbWFuYWdlbWVudFxuXG4gICAgdmlld3BvcnRTY3JlZW5zaG90OiAnZ2V0Vmlld3BvcnRTY3JlZW5zaG90JyxcbiAgICB2aWV3cG9ydFJlY3Q6ICdnZXRWaWV3cG9ydFJlY3QnLFxuXG4gICAgc3RhcnRQZXJmUmVjb3JkOiAnbW9iaWxlU3RhcnRQZXJmUmVjb3JkJyxcbiAgICBzdG9wUGVyZlJlY29yZDogJ21vYmlsZVN0b3BQZXJmUmVjb3JkJyxcblxuICAgIGluc3RhbGxDZXJ0aWZpY2F0ZTogJ21vYmlsZUluc3RhbGxDZXJ0aWZpY2F0ZScsXG5cbiAgICBzdGFydExvZ3NCcm9hZGNhc3Q6ICdtb2JpbGVTdGFydExvZ3NCcm9hZGNhc3QnLFxuICAgIHN0b3BMb2dzQnJvYWRjYXN0OiAnbW9iaWxlU3RvcExvZ3NCcm9hZGNhc3QnLFxuXG4gICAgYmF0dGVyeUluZm86ICdtb2JpbGVHZXRCYXR0ZXJ5SW5mbycsXG4gICAgZGV2aWNlSW5mbzogJ21vYmlsZUdldERldmljZUluZm8nLFxuICAgIGdldERldmljZVRpbWU6ICdtb2JpbGVHZXREZXZpY2VUaW1lJyxcbiAgICBhY3RpdmVBcHBJbmZvOiAnbW9iaWxlR2V0QWN0aXZlQXBwSW5mbycsXG4gICAgZGV2aWNlU2NyZWVuSW5mbzogJ2dldFNjcmVlbkluZm8nLFxuXG4gICAgcHJlc3NCdXR0b246ICdtb2JpbGVQcmVzc0J1dHRvbicsXG5cbiAgICBlbnJvbGxCaW9tZXRyaWM6ICdtb2JpbGVFbnJvbGxCaW9tZXRyaWMnLFxuICAgIHNlbmRCaW9tZXRyaWNNYXRjaDogJ21vYmlsZVNlbmRCaW9tZXRyaWNNYXRjaCcsXG4gICAgaXNCaW9tZXRyaWNFbnJvbGxlZDogJ21vYmlsZUlzQmlvbWV0cmljRW5yb2xsZWQnLFxuXG4gICAgY2xlYXJLZXljaGFpbnM6ICdtb2JpbGVDbGVhcktleWNoYWlucycsXG5cbiAgICBnZXRQZXJtaXNzaW9uOiAnbW9iaWxlR2V0UGVybWlzc2lvbicsXG4gICAgc2V0UGVybWlzc2lvbjogJ21vYmlsZVNldFBlcm1pc3Npb25zJyxcbiAgICByZXNldFBlcm1pc3Npb246ICdtb2JpbGVSZXNldFBlcm1pc3Npb24nLFxuXG4gICAgZ2V0QXBwZWFyYW5jZTogJ21vYmlsZUdldEFwcGVhcmFuY2UnLFxuICAgIHNldEFwcGVhcmFuY2U6ICdtb2JpbGVTZXRBcHBlYXJhbmNlJyxcblxuICAgIHNpcmlDb21tYW5kOiAnbW9iaWxlU2lyaUNvbW1hbmQnLFxuXG4gICAgZGVsZXRlRmlsZTogJ21vYmlsZURlbGV0ZUZpbGUnLFxuICAgIGRlbGV0ZUZvbGRlcjogJ21vYmlsZURlbGV0ZUZvbGRlcicsXG5cbiAgICBzdGFydEF1ZGlvUmVjb3JkaW5nOiAnc3RhcnRBdWRpb1JlY29yZGluZycsXG4gICAgc3RvcEF1ZGlvUmVjb3JkaW5nOiAnc3RvcEF1ZGlvUmVjb3JkaW5nJyxcblxuICAgIC8vIFhDVGVzdFxuICAgIHJ1blhDVGVzdDogJ21vYmlsZVJ1blhDVGVzdCcsXG4gICAgaW5zdGFsbFhDVGVzdEJ1bmRsZTogJ21vYmlsZUluc3RhbGxYQ1Rlc3RCdW5kbGUnLFxuICAgIGxpc3RYQ1Rlc3RCdW5kbGVzOiAnbW9iaWxlTGlzdFhDVGVzdEJ1bmRsZXMnLFxuICAgIGxpc3RYQ1Rlc3RzSW5UZXN0QnVuZGxlOiAnbW9iaWxlTGlzdFhDVGVzdHNJblRlc3RCdW5kbGUnLFxuXG4gICAgcHVzaE5vdGlmaWNhdGlvbjogJ21vYmlsZVB1c2hOb3RpZmljYXRpb24nLFxuICAgIGV4cGVjdE5vdGlmaWNhdGlvbjogJ21vYmlsZUV4cGVjdE5vdGlmaWNhdGlvbicsXG5cbiAgICBwZXJmb3JtSW9IaWRFdmVudDogJ21vYmlsZVBlcmZvcm1Jb0hpZEV2ZW50JyxcblxuICAgIGNvbmZpZ3VyZUxvY2FsaXphdGlvbjogJ21vYmlsZUNvbmZpZ3VyZUxvY2FsaXphdGlvbicsXG5cbiAgICByZXNldExvY2F0aW9uU2VydmljZTogJ21vYmlsZVJlc2V0TG9jYXRpb25TZXJ2aWNlJyxcbiAgfTtcblxuICBpZiAoIV8uaGFzKGNvbW1hbmRNYXAsIG1vYmlsZUNvbW1hbmQpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5Vbmtub3duQ29tbWFuZEVycm9yKGBVbmtub3duIG1vYmlsZSBjb21tYW5kICcke21vYmlsZUNvbW1hbmR9Jy4gT25seSAke18ua2V5cyhjb21tYW5kTWFwKS5qb2luKCcsICcpfSBjb21tYW5kcyBhcmUgc3VwcG9ydGVkLmApO1xuICB9XG4gIHJldHVybiBhd2FpdCB0aGlzW2NvbW1hbmRNYXBbbW9iaWxlQ29tbWFuZF1dKG9wdHMpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgZXh0ZW5zaW9ucztcbiJdLCJmaWxlIjoibGliL2NvbW1hbmRzL2V4ZWN1dGUuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4ifQ==
143
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9leGVjdXRlLmpzIl0sIm5hbWVzIjpbImV4dGVuc2lvbnMiLCJyZWNlaXZlQXN5bmNSZXNwb25zZSIsInN0YXR1cyIsInZhbHVlIiwibG9nIiwiZGVidWciLCJKU09OIiwic3RyaW5naWZ5IiwidXRpbCIsImhhc1ZhbHVlIiwiYXN5bmNQcm9taXNlIiwid2FybiIsInJlamVjdCIsIm1lc3NhZ2UiLCJfIiwiaXNTdHJpbmciLCJlcnJvciIsInN0YWNrdHJhY2UiLCJyZXNvbHZlIiwiZXhlY3V0ZSIsInNjcmlwdCIsImFyZ3MiLCJtYXRjaCIsInJlcGxhY2UiLCJ0cmltIiwiZXhlY3V0ZU1vYmlsZSIsImlzQXJyYXkiLCJpc1dlYkNvbnRleHQiLCJjb252ZXJ0RWxlbWVudHNGb3JBdG9tcyIsInJlc3VsdCIsImV4ZWN1dGVBdG9tIiwiY2FjaGVXZWJFbGVtZW50cyIsImVycm9ycyIsIk5vdEltcGxlbWVudGVkRXJyb3IiLCJleGVjdXRlQXN5bmMiLCJhc3luY1dhaXRNcyIsInByb21pc2UiLCJyZW1vdGUiLCJleGVjdXRlQXRvbUFzeW5jIiwiY3VyV2ViRnJhbWVzIiwid2FpdEZvckF0b20iLCJtb2JpbGVDb21tYW5kIiwib3B0cyIsImNvbW1hbmRNYXAiLCJ0YXAiLCJzY3JvbGwiLCJzZWxlY3RQaWNrZXJXaGVlbFZhbHVlIiwic3dpcGUiLCJwaW5jaCIsImRvdWJsZVRhcCIsInR3b0ZpbmdlclRhcCIsInRhcFdpdGhOdW1iZXJPZlRhcHMiLCJ0b3VjaEFuZEhvbGQiLCJkcmFnRnJvbVRvRm9yRHVyYXRpb24iLCJyb3RhdGVFbGVtZW50IiwiYWxlcnQiLCJzZXRQYXN0ZWJvYXJkIiwiZ2V0UGFzdGVib2FyZCIsInNvdXJjZSIsImdldENvbnRleHRzIiwiaW5zdGFsbEFwcCIsImlzQXBwSW5zdGFsbGVkIiwicmVtb3ZlQXBwIiwibGF1bmNoQXBwIiwidGVybWluYXRlQXBwIiwicXVlcnlBcHBTdGF0ZSIsImFjdGl2YXRlQXBwIiwibGlzdEFwcHMiLCJ2aWV3cG9ydFNjcmVlbnNob3QiLCJ2aWV3cG9ydFJlY3QiLCJzdGFydFBlcmZSZWNvcmQiLCJzdG9wUGVyZlJlY29yZCIsImluc3RhbGxDZXJ0aWZpY2F0ZSIsInN0YXJ0TG9nc0Jyb2FkY2FzdCIsInN0b3BMb2dzQnJvYWRjYXN0IiwiYmF0dGVyeUluZm8iLCJkZXZpY2VJbmZvIiwiZ2V0RGV2aWNlVGltZSIsImFjdGl2ZUFwcEluZm8iLCJkZXZpY2VTY3JlZW5JbmZvIiwicHJlc3NCdXR0b24iLCJlbnJvbGxCaW9tZXRyaWMiLCJzZW5kQmlvbWV0cmljTWF0Y2giLCJpc0Jpb21ldHJpY0Vucm9sbGVkIiwiY2xlYXJLZXljaGFpbnMiLCJnZXRQZXJtaXNzaW9uIiwic2V0UGVybWlzc2lvbiIsInJlc2V0UGVybWlzc2lvbiIsImdldEFwcGVhcmFuY2UiLCJzZXRBcHBlYXJhbmNlIiwic2lyaUNvbW1hbmQiLCJkZWxldGVGaWxlIiwiZGVsZXRlRm9sZGVyIiwic3RhcnRBdWRpb1JlY29yZGluZyIsInN0b3BBdWRpb1JlY29yZGluZyIsInJ1blhDVGVzdCIsImluc3RhbGxYQ1Rlc3RCdW5kbGUiLCJsaXN0WENUZXN0QnVuZGxlcyIsImxpc3RYQ1Rlc3RzSW5UZXN0QnVuZGxlIiwicHVzaE5vdGlmaWNhdGlvbiIsImV4cGVjdE5vdGlmaWNhdGlvbiIsInBlcmZvcm1Jb0hpZEV2ZW50IiwiY29uZmlndXJlTG9jYWxpemF0aW9uIiwicmVzZXRMb2NhdGlvblNlcnZpY2UiLCJzdGFydFBjYXAiLCJzdG9wUGNhcCIsImhhcyIsIlVua25vd25Db21tYW5kRXJyb3IiLCJrZXlzIiwiam9pbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFHQTs7QUFDQTs7QUFFQSxNQUFNQSxVQUFVLEdBQUcsRUFBbkI7O0FBRUFBLFVBQVUsQ0FBQ0Msb0JBQVgsR0FBa0MsZUFBZUEsb0JBQWYsQ0FBcUNDLE1BQXJDLEVBQTZDQyxLQUE3QyxFQUFvRDtBQUNwRkMsa0JBQUlDLEtBQUosQ0FB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QkMsSUFBQUEsaUJBQWlCLEVBQUUseUJBOUZGO0FBZ0dqQkMsSUFBQUEscUJBQXFCLEVBQUUsNkJBaEdOO0FBa0dqQkMsSUFBQUEsb0JBQW9CLEVBQUUsNEJBbEdMO0FBb0dqQkMsSUFBQUEsU0FBUyxFQUFFLGlCQXBHTTtBQXFHakJDLElBQUFBLFFBQVEsRUFBRTtBQXJHTyxHQUFuQjs7QUF3R0EsTUFBSSxDQUFDM0YsZ0JBQUU0RixHQUFGLENBQU0vRCxVQUFOLEVBQWtCRixhQUFsQixDQUFMLEVBQXVDO0FBQ3JDLFVBQU0sSUFBSVQseUJBQU8yRSxtQkFBWCxDQUFnQywyQkFBMEJsRSxhQUFjLFdBQVUzQixnQkFBRThGLElBQUYsQ0FBT2pFLFVBQVAsRUFBbUJrRSxJQUFuQixDQUF3QixJQUF4QixDQUE4QiwwQkFBaEgsQ0FBTjtBQUNEOztBQUNELFNBQU8sTUFBTSxLQUFLbEUsVUFBVSxDQUFDRixhQUFELENBQWYsRUFBZ0NDLElBQWhDLENBQWI7QUFDRCxDQTdHRDs7ZUErR2UxQyxVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7XG4gIGVycm9ycywgZXJyb3JGcm9tQ29kZSwgZXJyb3JGcm9tVzNDSnNvbkNvZGVcbn0gZnJvbSAnYXBwaXVtLWJhc2UtZHJpdmVyJztcbmltcG9ydCBsb2cgZnJvbSAnLi4vbG9nZ2VyJztcbmltcG9ydCB7IHV0aWwgfSBmcm9tICdhcHBpdW0tc3VwcG9ydCc7XG5cbmNvbnN0IGV4dGVuc2lvbnMgPSB7fTtcblxuZXh0ZW5zaW9ucy5yZWNlaXZlQXN5bmNSZXNwb25zZSA9IGFzeW5jIGZ1bmN0aW9uIHJlY2VpdmVBc3luY1Jlc3BvbnNlIChzdGF0dXMsIHZhbHVlKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgcmVxdWlyZS1hd2FpdFxuICBsb2cuZGVidWcoYFJlY2VpdmVkIGFzeW5jIHJlc3BvbnNlOiAke0pTT04uc3RyaW5naWZ5KHZhbHVlKX1gKTtcbiAgaWYgKCF1dGlsLmhhc1ZhbHVlKHRoaXMuYXN5bmNQcm9taXNlKSkge1xuICAgIGxvZy53YXJuKGBSZWNlaXZlZCBhc3luYyByZXNwb25zZSB3aGVuIHdlIHdlcmUgbm90IGV4cGVjdGluZyBvbmUhIGAgK1xuICAgICAgYFJlc3BvbnNlIHdhczogJHtKU09OLnN0cmluZ2lmeSh2YWx1ZSl9YCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKHV0aWwuaGFzVmFsdWUoc3RhdHVzKSAmJiBzdGF0dXMgIT09IDApIHtcbiAgICAvLyBNSlNPTldQXG4gICAgcmV0dXJuIHRoaXMuYXN5bmNQcm9taXNlLnJlamVjdChlcnJvckZyb21Db2RlKHN0YXR1cywgdmFsdWUubWVzc2FnZSkpO1xuICB9XG4gIGlmICghdXRpbC5oYXNWYWx1ZShzdGF0dXMpICYmIHZhbHVlICYmIF8uaXNTdHJpbmcodmFsdWUuZXJyb3IpKSB7XG4gICAgLy8gVzNDXG4gICAgcmV0dXJuIHRoaXMuYXN5bmNQcm9taXNlLnJlamVjdChlcnJvckZyb21XM0NKc29uQ29kZSh2YWx1ZS5lcnJvciwgdmFsdWUubWVzc2FnZSwgdmFsdWUuc3RhY2t0cmFjZSkpO1xuICB9XG4gIHJldHVybiB0aGlzLmFzeW5jUHJvbWlzZS5yZXNvbHZlKHZhbHVlKTtcbn07XG5cbmV4dGVuc2lvbnMuZXhlY3V0ZSA9IGFzeW5jIGZ1bmN0aW9uIGV4ZWN1dGUgKHNjcmlwdCwgYXJncykge1xuICBpZiAoc2NyaXB0Lm1hdGNoKC9ebW9iaWxlOi8pKSB7XG4gICAgc2NyaXB0ID0gc2NyaXB0LnJlcGxhY2UoL15tb2JpbGU6LywgJycpLnRyaW0oKTtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5leGVjdXRlTW9iaWxlKHNjcmlwdCwgXy5pc0FycmF5KGFyZ3MpID8gYXJnc1swXSA6IGFyZ3MpO1xuICB9IGVsc2UgaWYgKHRoaXMuaXNXZWJDb250ZXh0KCkpIHtcbiAgICBhcmdzID0gdGhpcy5jb252ZXJ0RWxlbWVudHNGb3JBdG9tcyhhcmdzKTtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmV4ZWN1dGVBdG9tKCdleGVjdXRlX3NjcmlwdCcsIFtzY3JpcHQsIGFyZ3NdKTtcbiAgICByZXR1cm4gdGhpcy5jYWNoZVdlYkVsZW1lbnRzKHJlc3VsdCk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5Ob3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gIH1cbn07XG5cbmV4dGVuc2lvbnMuZXhlY3V0ZUFzeW5jID0gYXN5bmMgZnVuY3Rpb24gZXhlY3V0ZUFzeW5jIChzY3JpcHQsIGFyZ3MpIHtcbiAgaWYgKCF0aGlzLmlzV2ViQ29udGV4dCgpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5Ob3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gIH1cblxuICBhcmdzID0gdGhpcy5jb252ZXJ0RWxlbWVudHNGb3JBdG9tcyhhcmdzKTtcbiAgdGhpcy5hc3luY1dhaXRNcyA9IHRoaXMuYXN5bmNXYWl0TXMgfHwgMDtcbiAgY29uc3QgcHJvbWlzZSA9IHRoaXMucmVtb3RlLmV4ZWN1dGVBdG9tQXN5bmMoJ2V4ZWN1dGVfYXN5bmNfc2NyaXB0JywgW3NjcmlwdCwgYXJncywgdGhpcy5hc3luY1dhaXRNc10sIHRoaXMuY3VyV2ViRnJhbWVzKTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMud2FpdEZvckF0b20ocHJvbWlzZSk7XG59O1xuXG5leHRlbnNpb25zLmV4ZWN1dGVNb2JpbGUgPSBhc3luYyBmdW5jdGlvbiBleGVjdXRlTW9iaWxlIChtb2JpbGVDb21tYW5kLCBvcHRzID0ge30pIHtcbiAgY29uc3QgY29tbWFuZE1hcCA9IHtcbiAgICAvL3JlZ2lvbiBnZXN0dXJlcyBzdXBwb3J0XG4gICAgdGFwOiAnbW9iaWxlVGFwJyxcbiAgICBzY3JvbGw6ICdtb2JpbGVTY3JvbGwnLFxuICAgIHNlbGVjdFBpY2tlcldoZWVsVmFsdWU6ICdtb2JpbGVTZWxlY3RQaWNrZXJXaGVlbFZhbHVlJyxcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWVsZW1lbnQvMTYxODY2OC1zd2lwZWxlZnQ/bGFuZ3VhZ2U9b2JqY1xuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3VpZWxlbWVudC8xNjE4Njc0LXN3aXBlcmlnaHQ/bGFuZ3VhZ2U9b2JqY1xuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3VpZWxlbWVudC8xNjE4NjY3LXN3aXBldXA/bGFuZ3VhZ2U9b2JqY1xuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3VpZWxlbWVudC8xNjE4NjY0LXN3aXBlZG93bj9sYW5ndWFnZT1vYmpjXG4gICAgc3dpcGU6ICdtb2JpbGVTd2lwZScsXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWllbGVtZW50LzE2MTg2NjktcGluY2h3aXRoc2NhbGU/bGFuZ3VhZ2U9b2JqY1xuICAgIHBpbmNoOiAnbW9iaWxlUGluY2gnLFxuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3VpZWxlbWVudC8xNjE4NjczLWRvdWJsZXRhcD9sYW5ndWFnZT1vYmpjXG4gICAgZG91YmxlVGFwOiAnbW9iaWxlRG91YmxlVGFwJyxcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWVsZW1lbnQvMTYxODY3NS10d29maW5nZXJ0YXA/bGFuZ3VhZ2U9b2JqY1xuICAgIHR3b0ZpbmdlclRhcDogJ21vYmlsZVR3b0ZpbmdlclRhcCcsXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWllbGVtZW50LzE2MTg2NzEtdGFwd2l0aG51bWJlcm9mdGFwcz9sYW5ndWFnZT1vYmpjXG4gICAgdGFwV2l0aE51bWJlck9mVGFwczogJ21vYmlsZVRhcFdpdGhOdW1iZXJPZlRhcHMnLFxuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3VpZWxlbWVudC8xNjE4NjYzLXByZXNzZm9yZHVyYXRpb24/bGFuZ3VhZ2U9b2JqY1xuICAgIHRvdWNoQW5kSG9sZDogJ21vYmlsZVRvdWNoQW5kSG9sZCcsXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWllbGVtZW50LzE2MTg2NzAtcHJlc3Nmb3JkdXJhdGlvbj9sYW5ndWFnZT1vYmpjXG4gICAgZHJhZ0Zyb21Ub0ZvckR1cmF0aW9uOiAnbW9iaWxlRHJhZ0Zyb21Ub0ZvckR1cmF0aW9uJyxcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWVsZW1lbnQvMTYxODY2NS1yb3RhdGU/bGFuZ3VhZ2U9b2JqY1xuICAgIHJvdGF0ZUVsZW1lbnQ6ICdtb2JpbGVSb3RhdGVFbGVtZW50JyxcblxuICAgIC8vZW5kcmVnaW9uIGdlc3R1cmVzIHN1cHBvcnRcbiAgICBhbGVydDogJ21vYmlsZUhhbmRsZUFsZXJ0JyxcblxuICAgIHNldFBhc3RlYm9hcmQ6ICdtb2JpbGVTZXRQYXN0ZWJvYXJkJyxcbiAgICBnZXRQYXN0ZWJvYXJkOiAnbW9iaWxlR2V0UGFzdGVib2FyZCcsXG5cbiAgICBzb3VyY2U6ICdtb2JpbGVHZXRTb3VyY2UnLFxuICAgIGdldENvbnRleHRzOiAnbW9iaWxlR2V0Q29udGV4dHMnLFxuXG4gICAgLy9yZWdpb24gbXVsdGlwbGUgYXBwcyBtYW5hZ2VtZW50XG4gICAgaW5zdGFsbEFwcDogJ21vYmlsZUluc3RhbGxBcHAnLFxuICAgIGlzQXBwSW5zdGFsbGVkOiAnbW9iaWxlSXNBcHBJbnN0YWxsZWQnLFxuICAgIHJlbW92ZUFwcDogJ21vYmlsZVJlbW92ZUFwcCcsXG4gICAgbGF1bmNoQXBwOiAnbW9iaWxlTGF1bmNoQXBwJyxcbiAgICB0ZXJtaW5hdGVBcHA6ICdtb2JpbGVUZXJtaW5hdGVBcHAnLFxuICAgIHF1ZXJ5QXBwU3RhdGU6ICdtb2JpbGVRdWVyeUFwcFN0YXRlJyxcbiAgICBhY3RpdmF0ZUFwcDogJ21vYmlsZUFjdGl2YXRlQXBwJyxcbiAgICBsaXN0QXBwczogJ21vYmlsZUxpc3RBcHBzJyxcbiAgICAvL2VuZHJlZ2lvbiBtdWx0aXBsZSBhcHBzIG1hbmFnZW1lbnRcblxuICAgIHZpZXdwb3J0U2NyZWVuc2hvdDogJ2dldFZpZXdwb3J0U2NyZWVuc2hvdCcsXG4gICAgdmlld3BvcnRSZWN0OiAnZ2V0Vmlld3BvcnRSZWN0JyxcblxuICAgIHN0YXJ0UGVyZlJlY29yZDogJ21vYmlsZVN0YXJ0UGVyZlJlY29yZCcsXG4gICAgc3RvcFBlcmZSZWNvcmQ6ICdtb2JpbGVTdG9wUGVyZlJlY29yZCcsXG5cbiAgICBpbnN0YWxsQ2VydGlmaWNhdGU6ICdtb2JpbGVJbnN0YWxsQ2VydGlmaWNhdGUnLFxuXG4gICAgc3RhcnRMb2dzQnJvYWRjYXN0OiAnbW9iaWxlU3RhcnRMb2dzQnJvYWRjYXN0JyxcbiAgICBzdG9wTG9nc0Jyb2FkY2FzdDogJ21vYmlsZVN0b3BMb2dzQnJvYWRjYXN0JyxcblxuICAgIGJhdHRlcnlJbmZvOiAnbW9iaWxlR2V0QmF0dGVyeUluZm8nLFxuICAgIGRldmljZUluZm86ICdtb2JpbGVHZXREZXZpY2VJbmZvJyxcbiAgICBnZXREZXZpY2VUaW1lOiAnbW9iaWxlR2V0RGV2aWNlVGltZScsXG4gICAgYWN0aXZlQXBwSW5mbzogJ21vYmlsZUdldEFjdGl2ZUFwcEluZm8nLFxuICAgIGRldmljZVNjcmVlbkluZm86ICdnZXRTY3JlZW5JbmZvJyxcblxuICAgIHByZXNzQnV0dG9uOiAnbW9iaWxlUHJlc3NCdXR0b24nLFxuXG4gICAgZW5yb2xsQmlvbWV0cmljOiAnbW9iaWxlRW5yb2xsQmlvbWV0cmljJyxcbiAgICBzZW5kQmlvbWV0cmljTWF0Y2g6ICdtb2JpbGVTZW5kQmlvbWV0cmljTWF0Y2gnLFxuICAgIGlzQmlvbWV0cmljRW5yb2xsZWQ6ICdtb2JpbGVJc0Jpb21ldHJpY0Vucm9sbGVkJyxcblxuICAgIGNsZWFyS2V5Y2hhaW5zOiAnbW9iaWxlQ2xlYXJLZXljaGFpbnMnLFxuXG4gICAgZ2V0UGVybWlzc2lvbjogJ21vYmlsZUdldFBlcm1pc3Npb24nLFxuICAgIHNldFBlcm1pc3Npb246ICdtb2JpbGVTZXRQZXJtaXNzaW9ucycsXG4gICAgcmVzZXRQZXJtaXNzaW9uOiAnbW9iaWxlUmVzZXRQZXJtaXNzaW9uJyxcblxuICAgIGdldEFwcGVhcmFuY2U6ICdtb2JpbGVHZXRBcHBlYXJhbmNlJyxcbiAgICBzZXRBcHBlYXJhbmNlOiAnbW9iaWxlU2V0QXBwZWFyYW5jZScsXG5cbiAgICBzaXJpQ29tbWFuZDogJ21vYmlsZVNpcmlDb21tYW5kJyxcblxuICAgIGRlbGV0ZUZpbGU6ICdtb2JpbGVEZWxldGVGaWxlJyxcbiAgICBkZWxldGVGb2xkZXI6ICdtb2JpbGVEZWxldGVGb2xkZXInLFxuXG4gICAgc3RhcnRBdWRpb1JlY29yZGluZzogJ3N0YXJ0QXVkaW9SZWNvcmRpbmcnLFxuICAgIHN0b3BBdWRpb1JlY29yZGluZzogJ3N0b3BBdWRpb1JlY29yZGluZycsXG5cbiAgICAvLyBYQ1Rlc3RcbiAgICBydW5YQ1Rlc3Q6ICdtb2JpbGVSdW5YQ1Rlc3QnLFxuICAgIGluc3RhbGxYQ1Rlc3RCdW5kbGU6ICdtb2JpbGVJbnN0YWxsWENUZXN0QnVuZGxlJyxcbiAgICBsaXN0WENUZXN0QnVuZGxlczogJ21vYmlsZUxpc3RYQ1Rlc3RCdW5kbGVzJyxcbiAgICBsaXN0WENUZXN0c0luVGVzdEJ1bmRsZTogJ21vYmlsZUxpc3RYQ1Rlc3RzSW5UZXN0QnVuZGxlJyxcblxuICAgIHB1c2hOb3RpZmljYXRpb246ICdtb2JpbGVQdXNoTm90aWZpY2F0aW9uJyxcbiAgICBleHBlY3ROb3RpZmljYXRpb246ICdtb2JpbGVFeHBlY3ROb3RpZmljYXRpb24nLFxuXG4gICAgcGVyZm9ybUlvSGlkRXZlbnQ6ICdtb2JpbGVQZXJmb3JtSW9IaWRFdmVudCcsXG5cbiAgICBjb25maWd1cmVMb2NhbGl6YXRpb246ICdtb2JpbGVDb25maWd1cmVMb2NhbGl6YXRpb24nLFxuXG4gICAgcmVzZXRMb2NhdGlvblNlcnZpY2U6ICdtb2JpbGVSZXNldExvY2F0aW9uU2VydmljZScsXG5cbiAgICBzdGFydFBjYXA6ICdtb2JpbGVTdGFydFBjYXAnLFxuICAgIHN0b3BQY2FwOiAnbW9iaWxlU3RvcFBjYXAnLFxuICB9O1xuXG4gIGlmICghXy5oYXMoY29tbWFuZE1hcCwgbW9iaWxlQ29tbWFuZCkpIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLlVua25vd25Db21tYW5kRXJyb3IoYFVua25vd24gbW9iaWxlIGNvbW1hbmQgJyR7bW9iaWxlQ29tbWFuZH0nLiBPbmx5ICR7Xy5rZXlzKGNvbW1hbmRNYXApLmpvaW4oJywgJyl9IGNvbW1hbmRzIGFyZSBzdXBwb3J0ZWQuYCk7XG4gIH1cbiAgcmV0dXJuIGF3YWl0IHRoaXNbY29tbWFuZE1hcFttb2JpbGVDb21tYW5kXV0ob3B0cyk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBleHRlbnNpb25zO1xuIl0sImZpbGUiOiJsaWIvY29tbWFuZHMvZXhlY3V0ZS5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
@@ -81,10 +81,12 @@ var _iohid = _interopRequireDefault(require("./iohid"));
81
81
 
82
82
  var _localization = _interopRequireDefault(require("./localization"));
83
83
 
84
+ var _pcap = _interopRequireDefault(require("./pcap"));
85
+
84
86
  const commands = {};
85
- Object.assign(commands, _context.default, _execute.default, _gesture.default, _find.default, _proxyHelper.default, _source.default, _general.default, _log.default, _web.default, _timeouts.default, _navigation.default, _element.default, _fileMovement.default, _alert.default, _screenshots.default, _pasteboard.default, _location.default, _lock.default, _recordscreen.default, _appManagement.default, _performance.default, _clipboard.default, _certificate.default, _battery.default, _cookies.default, _biometric.default, _keychains.default, _permissions.default, _deviceInfo.default, _activeAppInfo.default, _recordAudio.default, _appearance.default, _xctest.default, _notifications.default, _iohid.default, _localization.default);
87
+ Object.assign(commands, _context.default, _execute.default, _gesture.default, _find.default, _proxyHelper.default, _source.default, _general.default, _log.default, _web.default, _timeouts.default, _navigation.default, _element.default, _fileMovement.default, _alert.default, _screenshots.default, _pasteboard.default, _location.default, _lock.default, _recordscreen.default, _appManagement.default, _performance.default, _clipboard.default, _certificate.default, _battery.default, _cookies.default, _biometric.default, _keychains.default, _permissions.default, _deviceInfo.default, _activeAppInfo.default, _recordAudio.default, _appearance.default, _xctest.default, _notifications.default, _iohid.default, _localization.default, _pcap.default);
86
88
  var _default = commands;
87
89
  exports.default = _default;require('source-map-support').install();
88
90
 
89
91
 
90
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9pbmRleC5qcyJdLCJuYW1lcyI6WyJjb21tYW5kcyIsIk9iamVjdCIsImFzc2lnbiIsImNvbnRleHRDb21tYW5kcyIsImV4ZWN1dGVFeHRlbnNpb25zIiwiZ2VzdHVyZUV4dGVuc2lvbnMiLCJmaW5kRXh0ZW5zaW9ucyIsInByb3h5SGVscGVyRXh0ZW5zaW9ucyIsInNvdXJjZUV4dGVuc2lvbnMiLCJnZW5lcmFsRXh0ZW5zaW9ucyIsImxvZ0V4dGVuc2lvbnMiLCJ3ZWJFeHRlbnNpb25zIiwidGltZW91dEV4dGVuc2lvbnMiLCJuYXZpZ2F0aW9uRXh0ZW5zaW9ucyIsImVsZW1lbnRFeHRlbnNpb25zIiwiZmlsZU1vdmVtZW50RXh0ZW5zaW9ucyIsImFsZXJ0RXh0ZW5zaW9ucyIsInNjcmVlbnNob3RFeHRlbnNpb25zIiwicGFzdGVib2FyZEV4dGVuc2lvbnMiLCJsb2NhdGlvbkV4dGVuc2lvbnMiLCJsb2NrRXh0ZW5zaW9ucyIsInJlY29yZFNjcmVlbkV4dGVuc2lvbnMiLCJhcHBNYW5hZ2VtZW50RXh0ZW5zaW9ucyIsInBlcmZvcm1hbmNlRXh0ZW5zaW9ucyIsImNsaXBib2FyZEV4dGVuc2lvbnMiLCJjZXJ0aWZpY2F0ZUV4dGVuc2lvbnMiLCJiYXR0ZXJ5RXh0ZW5zaW9ucyIsImNvb2tpZXNFeHRlbnNpb25zIiwiYmlvbWV0cmljRXh0ZW5zaW9ucyIsImtleWNoYWluc0V4dGVuc2lvbnMiLCJwZXJtaXNzaW9uc0V4dGVuc2lvbnMiLCJkZXZpY2VJbmZvRXh0ZW5zaW9ucyIsImFjdGl2ZUFwcEluZm9FeHRlbnNpb25zIiwicmVjb3JkQXVkaW9FeHRlbnNpb25zIiwiYXBwZWFyYW5jZUV4dGVuc2lvbnMiLCJ4Y3Rlc3RFeHRlbnNpb25zIiwibm90aWZpY2F0aW9uc0V4dGVuc2lvbnMiLCJpb2hpZEV4dGVuc2lvbnMiLCJsb2NhbGl6YXRpb25FeHRlbnNpb25zIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLE1BQU1BLFFBQVEsR0FBRyxFQUFqQjtBQUVBQyxNQUFNLENBQUNDLE1BQVAsQ0FBY0YsUUFBZCxFQUF3QkcsZ0JBQXhCLEVBQXlDQyxnQkFBekMsRUFDRUMsZ0JBREYsRUFDcUJDLGFBRHJCLEVBQ3FDQyxvQkFEckMsRUFDNERDLGVBRDVELEVBRUVDLGdCQUZGLEVBRXFCQyxZQUZyQixFQUVvQ0MsWUFGcEMsRUFFbURDLGlCQUZuRCxFQUdFQyxtQkFIRixFQUd3QkMsZ0JBSHhCLEVBRzJDQyxxQkFIM0MsRUFJRUMsY0FKRixFQUltQkMsb0JBSm5CLEVBSXlDQyxtQkFKekMsRUFJK0RDLGlCQUovRCxFQUtFQyxhQUxGLEVBS2tCQyxxQkFMbEIsRUFLMENDLHNCQUwxQyxFQUttRUMsb0JBTG5FLEVBTUVDLGtCQU5GLEVBTXVCQyxvQkFOdkIsRUFNOENDLGdCQU45QyxFQU1pRUMsZ0JBTmpFLEVBT0VDLGtCQVBGLEVBT3VCQyxrQkFQdkIsRUFPNENDLG9CQVA1QyxFQU9tRUMsbUJBUG5FLEVBUUVDLHNCQVJGLEVBUTJCQyxvQkFSM0IsRUFRa0RDLG1CQVJsRCxFQVF3RUMsZUFSeEUsRUFTRUMsc0JBVEYsRUFTMkJDLGNBVDNCLEVBUzRDQyxxQkFUNUM7ZUFZZXRDLFEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29udGV4dENvbW1hbmRzIGZyb20gJy4vY29udGV4dCc7XG5pbXBvcnQgZXhlY3V0ZUV4dGVuc2lvbnMgZnJvbSAnLi9leGVjdXRlJztcbmltcG9ydCBnZXN0dXJlRXh0ZW5zaW9ucyBmcm9tICcuL2dlc3R1cmUnO1xuaW1wb3J0IGZpbmRFeHRlbnNpb25zIGZyb20gJy4vZmluZCc7XG5pbXBvcnQgcHJveHlIZWxwZXJFeHRlbnNpb25zIGZyb20gJy4vcHJveHktaGVscGVyJztcbmltcG9ydCBhbGVydEV4dGVuc2lvbnMgZnJvbSAnLi9hbGVydCc7XG5pbXBvcnQgc291cmNlRXh0ZW5zaW9ucyBmcm9tICcuL3NvdXJjZSc7XG5pbXBvcnQgZ2VuZXJhbEV4dGVuc2lvbnMgZnJvbSAnLi9nZW5lcmFsJztcbmltcG9ydCBsb2dFeHRlbnNpb25zIGZyb20gJy4vbG9nJztcbmltcG9ydCB3ZWJFeHRlbnNpb25zIGZyb20gJy4vd2ViJztcbmltcG9ydCB0aW1lb3V0RXh0ZW5zaW9ucyBmcm9tICcuL3RpbWVvdXRzJztcbmltcG9ydCBuYXZpZ2F0aW9uRXh0ZW5zaW9ucyBmcm9tICcuL25hdmlnYXRpb24nO1xuaW1wb3J0IGVsZW1lbnRFeHRlbnNpb25zIGZyb20gJy4vZWxlbWVudCc7XG5pbXBvcnQgZmlsZU1vdmVtZW50RXh0ZW5zaW9ucyBmcm9tICcuL2ZpbGUtbW92ZW1lbnQnO1xuaW1wb3J0IHNjcmVlbnNob3RFeHRlbnNpb25zIGZyb20gJy4vc2NyZWVuc2hvdHMnO1xuaW1wb3J0IHBhc3RlYm9hcmRFeHRlbnNpb25zIGZyb20gJy4vcGFzdGVib2FyZCc7XG5pbXBvcnQgbG9jYXRpb25FeHRlbnNpb25zIGZyb20gJy4vbG9jYXRpb24nO1xuaW1wb3J0IHJlY29yZEF1ZGlvRXh0ZW5zaW9ucyBmcm9tICcuL3JlY29yZC1hdWRpbyc7XG5pbXBvcnQgcmVjb3JkU2NyZWVuRXh0ZW5zaW9ucyBmcm9tICcuL3JlY29yZHNjcmVlbic7XG5pbXBvcnQgbG9ja0V4dGVuc2lvbnMgZnJvbSAnLi9sb2NrJztcbmltcG9ydCBhcHBNYW5hZ2VtZW50RXh0ZW5zaW9ucyBmcm9tICcuL2FwcC1tYW5hZ2VtZW50JztcbmltcG9ydCBwZXJmb3JtYW5jZUV4dGVuc2lvbnMgZnJvbSAnLi9wZXJmb3JtYW5jZSc7XG5pbXBvcnQgY2xpcGJvYXJkRXh0ZW5zaW9ucyBmcm9tICcuL2NsaXBib2FyZCc7XG5pbXBvcnQgY2VydGlmaWNhdGVFeHRlbnNpb25zIGZyb20gJy4vY2VydGlmaWNhdGUnO1xuaW1wb3J0IGJhdHRlcnlFeHRlbnNpb25zIGZyb20gJy4vYmF0dGVyeSc7XG5pbXBvcnQgZGV2aWNlSW5mb0V4dGVuc2lvbnMgZnJvbSAnLi9kZXZpY2VJbmZvJztcbmltcG9ydCBhY3RpdmVBcHBJbmZvRXh0ZW5zaW9ucyBmcm9tICcuL2FjdGl2ZUFwcEluZm8nO1xuaW1wb3J0IGNvb2tpZXNFeHRlbnNpb25zIGZyb20gJy4vY29va2llcyc7XG5pbXBvcnQgYmlvbWV0cmljRXh0ZW5zaW9ucyBmcm9tICcuL2Jpb21ldHJpYyc7XG5pbXBvcnQga2V5Y2hhaW5zRXh0ZW5zaW9ucyBmcm9tICcuL2tleWNoYWlucyc7XG5pbXBvcnQgcGVybWlzc2lvbnNFeHRlbnNpb25zIGZyb20gJy4vcGVybWlzc2lvbnMnO1xuaW1wb3J0IGFwcGVhcmFuY2VFeHRlbnNpb25zIGZyb20gJy4vYXBwZWFyYW5jZSc7XG5pbXBvcnQgeGN0ZXN0RXh0ZW5zaW9ucyBmcm9tICcuL3hjdGVzdCc7XG5pbXBvcnQgbm90aWZpY2F0aW9uc0V4dGVuc2lvbnMgZnJvbSAnLi9ub3RpZmljYXRpb25zJztcbmltcG9ydCBpb2hpZEV4dGVuc2lvbnMgZnJvbSAnLi9pb2hpZCc7XG5pbXBvcnQgbG9jYWxpemF0aW9uRXh0ZW5zaW9ucyBmcm9tICcuL2xvY2FsaXphdGlvbic7XG5cbmNvbnN0IGNvbW1hbmRzID0ge307XG5cbk9iamVjdC5hc3NpZ24oY29tbWFuZHMsIGNvbnRleHRDb21tYW5kcywgZXhlY3V0ZUV4dGVuc2lvbnMsXG4gIGdlc3R1cmVFeHRlbnNpb25zLCBmaW5kRXh0ZW5zaW9ucywgcHJveHlIZWxwZXJFeHRlbnNpb25zLCBzb3VyY2VFeHRlbnNpb25zLFxuICBnZW5lcmFsRXh0ZW5zaW9ucywgbG9nRXh0ZW5zaW9ucywgd2ViRXh0ZW5zaW9ucywgdGltZW91dEV4dGVuc2lvbnMsXG4gIG5hdmlnYXRpb25FeHRlbnNpb25zLCBlbGVtZW50RXh0ZW5zaW9ucywgZmlsZU1vdmVtZW50RXh0ZW5zaW9ucyxcbiAgYWxlcnRFeHRlbnNpb25zLCBzY3JlZW5zaG90RXh0ZW5zaW9ucywgcGFzdGVib2FyZEV4dGVuc2lvbnMsIGxvY2F0aW9uRXh0ZW5zaW9ucyxcbiAgbG9ja0V4dGVuc2lvbnMsIHJlY29yZFNjcmVlbkV4dGVuc2lvbnMsIGFwcE1hbmFnZW1lbnRFeHRlbnNpb25zLCBwZXJmb3JtYW5jZUV4dGVuc2lvbnMsXG4gIGNsaXBib2FyZEV4dGVuc2lvbnMsIGNlcnRpZmljYXRlRXh0ZW5zaW9ucywgYmF0dGVyeUV4dGVuc2lvbnMsIGNvb2tpZXNFeHRlbnNpb25zLFxuICBiaW9tZXRyaWNFeHRlbnNpb25zLCBrZXljaGFpbnNFeHRlbnNpb25zLCBwZXJtaXNzaW9uc0V4dGVuc2lvbnMsIGRldmljZUluZm9FeHRlbnNpb25zLFxuICBhY3RpdmVBcHBJbmZvRXh0ZW5zaW9ucywgcmVjb3JkQXVkaW9FeHRlbnNpb25zLCBhcHBlYXJhbmNlRXh0ZW5zaW9ucywgeGN0ZXN0RXh0ZW5zaW9ucyxcbiAgbm90aWZpY2F0aW9uc0V4dGVuc2lvbnMsIGlvaGlkRXh0ZW5zaW9ucywgbG9jYWxpemF0aW9uRXh0ZW5zaW9ucyxcbik7XG5cbmV4cG9ydCBkZWZhdWx0IGNvbW1hbmRzO1xuIl0sImZpbGUiOiJsaWIvY29tbWFuZHMvaW5kZXguanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4ifQ==
92
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9pbmRleC5qcyJdLCJuYW1lcyI6WyJjb21tYW5kcyIsIk9iamVjdCIsImFzc2lnbiIsImNvbnRleHRDb21tYW5kcyIsImV4ZWN1dGVFeHRlbnNpb25zIiwiZ2VzdHVyZUV4dGVuc2lvbnMiLCJmaW5kRXh0ZW5zaW9ucyIsInByb3h5SGVscGVyRXh0ZW5zaW9ucyIsInNvdXJjZUV4dGVuc2lvbnMiLCJnZW5lcmFsRXh0ZW5zaW9ucyIsImxvZ0V4dGVuc2lvbnMiLCJ3ZWJFeHRlbnNpb25zIiwidGltZW91dEV4dGVuc2lvbnMiLCJuYXZpZ2F0aW9uRXh0ZW5zaW9ucyIsImVsZW1lbnRFeHRlbnNpb25zIiwiZmlsZU1vdmVtZW50RXh0ZW5zaW9ucyIsImFsZXJ0RXh0ZW5zaW9ucyIsInNjcmVlbnNob3RFeHRlbnNpb25zIiwicGFzdGVib2FyZEV4dGVuc2lvbnMiLCJsb2NhdGlvbkV4dGVuc2lvbnMiLCJsb2NrRXh0ZW5zaW9ucyIsInJlY29yZFNjcmVlbkV4dGVuc2lvbnMiLCJhcHBNYW5hZ2VtZW50RXh0ZW5zaW9ucyIsInBlcmZvcm1hbmNlRXh0ZW5zaW9ucyIsImNsaXBib2FyZEV4dGVuc2lvbnMiLCJjZXJ0aWZpY2F0ZUV4dGVuc2lvbnMiLCJiYXR0ZXJ5RXh0ZW5zaW9ucyIsImNvb2tpZXNFeHRlbnNpb25zIiwiYmlvbWV0cmljRXh0ZW5zaW9ucyIsImtleWNoYWluc0V4dGVuc2lvbnMiLCJwZXJtaXNzaW9uc0V4dGVuc2lvbnMiLCJkZXZpY2VJbmZvRXh0ZW5zaW9ucyIsImFjdGl2ZUFwcEluZm9FeHRlbnNpb25zIiwicmVjb3JkQXVkaW9FeHRlbnNpb25zIiwiYXBwZWFyYW5jZUV4dGVuc2lvbnMiLCJ4Y3Rlc3RFeHRlbnNpb25zIiwibm90aWZpY2F0aW9uc0V4dGVuc2lvbnMiLCJpb2hpZEV4dGVuc2lvbnMiLCJsb2NhbGl6YXRpb25FeHRlbnNpb25zIiwicGNhcEV4dGVuc2lvbnMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEsUUFBUSxHQUFHLEVBQWpCO0FBRUFDLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjRixRQUFkLEVBQXdCRyxnQkFBeEIsRUFBeUNDLGdCQUF6QyxFQUNFQyxnQkFERixFQUNxQkMsYUFEckIsRUFDcUNDLG9CQURyQyxFQUM0REMsZUFENUQsRUFFRUMsZ0JBRkYsRUFFcUJDLFlBRnJCLEVBRW9DQyxZQUZwQyxFQUVtREMsaUJBRm5ELEVBR0VDLG1CQUhGLEVBR3dCQyxnQkFIeEIsRUFHMkNDLHFCQUgzQyxFQUlFQyxjQUpGLEVBSW1CQyxvQkFKbkIsRUFJeUNDLG1CQUp6QyxFQUkrREMsaUJBSi9ELEVBS0VDLGFBTEYsRUFLa0JDLHFCQUxsQixFQUswQ0Msc0JBTDFDLEVBS21FQyxvQkFMbkUsRUFNRUMsa0JBTkYsRUFNdUJDLG9CQU52QixFQU04Q0MsZ0JBTjlDLEVBTWlFQyxnQkFOakUsRUFPRUMsa0JBUEYsRUFPdUJDLGtCQVB2QixFQU80Q0Msb0JBUDVDLEVBT21FQyxtQkFQbkUsRUFRRUMsc0JBUkYsRUFRMkJDLG9CQVIzQixFQVFrREMsbUJBUmxELEVBUXdFQyxlQVJ4RSxFQVNFQyxzQkFURixFQVMyQkMsY0FUM0IsRUFTNENDLHFCQVQ1QyxFQVNvRUMsYUFUcEU7ZUFZZXZDLFEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29udGV4dENvbW1hbmRzIGZyb20gJy4vY29udGV4dCc7XG5pbXBvcnQgZXhlY3V0ZUV4dGVuc2lvbnMgZnJvbSAnLi9leGVjdXRlJztcbmltcG9ydCBnZXN0dXJlRXh0ZW5zaW9ucyBmcm9tICcuL2dlc3R1cmUnO1xuaW1wb3J0IGZpbmRFeHRlbnNpb25zIGZyb20gJy4vZmluZCc7XG5pbXBvcnQgcHJveHlIZWxwZXJFeHRlbnNpb25zIGZyb20gJy4vcHJveHktaGVscGVyJztcbmltcG9ydCBhbGVydEV4dGVuc2lvbnMgZnJvbSAnLi9hbGVydCc7XG5pbXBvcnQgc291cmNlRXh0ZW5zaW9ucyBmcm9tICcuL3NvdXJjZSc7XG5pbXBvcnQgZ2VuZXJhbEV4dGVuc2lvbnMgZnJvbSAnLi9nZW5lcmFsJztcbmltcG9ydCBsb2dFeHRlbnNpb25zIGZyb20gJy4vbG9nJztcbmltcG9ydCB3ZWJFeHRlbnNpb25zIGZyb20gJy4vd2ViJztcbmltcG9ydCB0aW1lb3V0RXh0ZW5zaW9ucyBmcm9tICcuL3RpbWVvdXRzJztcbmltcG9ydCBuYXZpZ2F0aW9uRXh0ZW5zaW9ucyBmcm9tICcuL25hdmlnYXRpb24nO1xuaW1wb3J0IGVsZW1lbnRFeHRlbnNpb25zIGZyb20gJy4vZWxlbWVudCc7XG5pbXBvcnQgZmlsZU1vdmVtZW50RXh0ZW5zaW9ucyBmcm9tICcuL2ZpbGUtbW92ZW1lbnQnO1xuaW1wb3J0IHNjcmVlbnNob3RFeHRlbnNpb25zIGZyb20gJy4vc2NyZWVuc2hvdHMnO1xuaW1wb3J0IHBhc3RlYm9hcmRFeHRlbnNpb25zIGZyb20gJy4vcGFzdGVib2FyZCc7XG5pbXBvcnQgbG9jYXRpb25FeHRlbnNpb25zIGZyb20gJy4vbG9jYXRpb24nO1xuaW1wb3J0IHJlY29yZEF1ZGlvRXh0ZW5zaW9ucyBmcm9tICcuL3JlY29yZC1hdWRpbyc7XG5pbXBvcnQgcmVjb3JkU2NyZWVuRXh0ZW5zaW9ucyBmcm9tICcuL3JlY29yZHNjcmVlbic7XG5pbXBvcnQgbG9ja0V4dGVuc2lvbnMgZnJvbSAnLi9sb2NrJztcbmltcG9ydCBhcHBNYW5hZ2VtZW50RXh0ZW5zaW9ucyBmcm9tICcuL2FwcC1tYW5hZ2VtZW50JztcbmltcG9ydCBwZXJmb3JtYW5jZUV4dGVuc2lvbnMgZnJvbSAnLi9wZXJmb3JtYW5jZSc7XG5pbXBvcnQgY2xpcGJvYXJkRXh0ZW5zaW9ucyBmcm9tICcuL2NsaXBib2FyZCc7XG5pbXBvcnQgY2VydGlmaWNhdGVFeHRlbnNpb25zIGZyb20gJy4vY2VydGlmaWNhdGUnO1xuaW1wb3J0IGJhdHRlcnlFeHRlbnNpb25zIGZyb20gJy4vYmF0dGVyeSc7XG5pbXBvcnQgZGV2aWNlSW5mb0V4dGVuc2lvbnMgZnJvbSAnLi9kZXZpY2VJbmZvJztcbmltcG9ydCBhY3RpdmVBcHBJbmZvRXh0ZW5zaW9ucyBmcm9tICcuL2FjdGl2ZUFwcEluZm8nO1xuaW1wb3J0IGNvb2tpZXNFeHRlbnNpb25zIGZyb20gJy4vY29va2llcyc7XG5pbXBvcnQgYmlvbWV0cmljRXh0ZW5zaW9ucyBmcm9tICcuL2Jpb21ldHJpYyc7XG5pbXBvcnQga2V5Y2hhaW5zRXh0ZW5zaW9ucyBmcm9tICcuL2tleWNoYWlucyc7XG5pbXBvcnQgcGVybWlzc2lvbnNFeHRlbnNpb25zIGZyb20gJy4vcGVybWlzc2lvbnMnO1xuaW1wb3J0IGFwcGVhcmFuY2VFeHRlbnNpb25zIGZyb20gJy4vYXBwZWFyYW5jZSc7XG5pbXBvcnQgeGN0ZXN0RXh0ZW5zaW9ucyBmcm9tICcuL3hjdGVzdCc7XG5pbXBvcnQgbm90aWZpY2F0aW9uc0V4dGVuc2lvbnMgZnJvbSAnLi9ub3RpZmljYXRpb25zJztcbmltcG9ydCBpb2hpZEV4dGVuc2lvbnMgZnJvbSAnLi9pb2hpZCc7XG5pbXBvcnQgbG9jYWxpemF0aW9uRXh0ZW5zaW9ucyBmcm9tICcuL2xvY2FsaXphdGlvbic7XG5pbXBvcnQgcGNhcEV4dGVuc2lvbnMgZnJvbSAnLi9wY2FwJztcblxuY29uc3QgY29tbWFuZHMgPSB7fTtcblxuT2JqZWN0LmFzc2lnbihjb21tYW5kcywgY29udGV4dENvbW1hbmRzLCBleGVjdXRlRXh0ZW5zaW9ucyxcbiAgZ2VzdHVyZUV4dGVuc2lvbnMsIGZpbmRFeHRlbnNpb25zLCBwcm94eUhlbHBlckV4dGVuc2lvbnMsIHNvdXJjZUV4dGVuc2lvbnMsXG4gIGdlbmVyYWxFeHRlbnNpb25zLCBsb2dFeHRlbnNpb25zLCB3ZWJFeHRlbnNpb25zLCB0aW1lb3V0RXh0ZW5zaW9ucyxcbiAgbmF2aWdhdGlvbkV4dGVuc2lvbnMsIGVsZW1lbnRFeHRlbnNpb25zLCBmaWxlTW92ZW1lbnRFeHRlbnNpb25zLFxuICBhbGVydEV4dGVuc2lvbnMsIHNjcmVlbnNob3RFeHRlbnNpb25zLCBwYXN0ZWJvYXJkRXh0ZW5zaW9ucywgbG9jYXRpb25FeHRlbnNpb25zLFxuICBsb2NrRXh0ZW5zaW9ucywgcmVjb3JkU2NyZWVuRXh0ZW5zaW9ucywgYXBwTWFuYWdlbWVudEV4dGVuc2lvbnMsIHBlcmZvcm1hbmNlRXh0ZW5zaW9ucyxcbiAgY2xpcGJvYXJkRXh0ZW5zaW9ucywgY2VydGlmaWNhdGVFeHRlbnNpb25zLCBiYXR0ZXJ5RXh0ZW5zaW9ucywgY29va2llc0V4dGVuc2lvbnMsXG4gIGJpb21ldHJpY0V4dGVuc2lvbnMsIGtleWNoYWluc0V4dGVuc2lvbnMsIHBlcm1pc3Npb25zRXh0ZW5zaW9ucywgZGV2aWNlSW5mb0V4dGVuc2lvbnMsXG4gIGFjdGl2ZUFwcEluZm9FeHRlbnNpb25zLCByZWNvcmRBdWRpb0V4dGVuc2lvbnMsIGFwcGVhcmFuY2VFeHRlbnNpb25zLCB4Y3Rlc3RFeHRlbnNpb25zLFxuICBub3RpZmljYXRpb25zRXh0ZW5zaW9ucywgaW9oaWRFeHRlbnNpb25zLCBsb2NhbGl6YXRpb25FeHRlbnNpb25zLCBwY2FwRXh0ZW5zaW9ucyxcbik7XG5cbmV4cG9ydCBkZWZhdWx0IGNvbW1hbmRzO1xuIl0sImZpbGUiOiJsaWIvY29tbWFuZHMvaW5kZXguanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4ifQ==
@@ -0,0 +1,170 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = exports.commands = void 0;
9
+
10
+ require("source-map-support/register");
11
+
12
+ var _pyIosDeviceClient = _interopRequireDefault(require("../py-ios-device-client"));
13
+
14
+ var _appiumSupport = require("appium-support");
15
+
16
+ var _logger = _interopRequireDefault(require("../logger"));
17
+
18
+ var _utils = require("../utils");
19
+
20
+ const MAX_CAPTURE_TIME_SEC = 60 * 60 * 12;
21
+ const DEFAULT_CAPTURE_TIME_SEC = 60 * 5;
22
+ const DEFAULT_EXT = '.pcap';
23
+
24
+ const pcapLogger = _appiumSupport.logger.getLogger('pcapd');
25
+
26
+ const commands = {};
27
+ exports.commands = commands;
28
+
29
+ class TrafficCapture {
30
+ constructor(udid, resultPath) {
31
+ this.udid = udid;
32
+ this.resultPath = resultPath;
33
+ this.mainProcess = null;
34
+ }
35
+
36
+ async start(timeoutSeconds) {
37
+ this.mainProcess = await new _pyIosDeviceClient.default(this.udid).collectPcap(this.resultPath);
38
+ this.mainProcess.on('output', (stdout, stderr) => {
39
+ if (stderr) {
40
+ pcapLogger.info(`${stderr}`);
41
+ }
42
+ });
43
+
44
+ _logger.default.info(`Starting network traffic capture session on the device '${this.udid}'. ` + `Will timeout in ${timeoutSeconds}s`);
45
+
46
+ setTimeout(async () => await this.interrupt(), timeoutSeconds * 1000);
47
+ this.mainProcess.once('exit', (code, signal) => {
48
+ _logger.default.debug(`The traffic capture session on the device '${this.udid}' has exited ` + `with code ${code}, signal ${signal}`);
49
+ });
50
+ }
51
+
52
+ isCapturing() {
53
+ var _this$mainProcess;
54
+
55
+ return !!((_this$mainProcess = this.mainProcess) !== null && _this$mainProcess !== void 0 && _this$mainProcess.isRunning);
56
+ }
57
+
58
+ async interrupt(force = false) {
59
+ if (this.isCapturing()) {
60
+ const interruptPromise = this.mainProcess.stop(force ? 'SIGTERM' : 'SIGINT');
61
+ this.mainProcess = null;
62
+
63
+ try {
64
+ await interruptPromise;
65
+ } catch (e) {
66
+ _logger.default.warn(`Cannot ${force ? 'terminate' : 'interrupt'} the traffic capture session. ` + `Original error: ${e.message}`);
67
+
68
+ return false;
69
+ }
70
+ }
71
+
72
+ return true;
73
+ }
74
+
75
+ async finish() {
76
+ await this.interrupt();
77
+ return this.resultPath;
78
+ }
79
+
80
+ async cleanup() {
81
+ if (await _appiumSupport.fs.exists(this.resultPath)) {
82
+ await _appiumSupport.fs.rimraf(this.resultPath);
83
+ }
84
+ }
85
+
86
+ }
87
+
88
+ commands.mobileStartPcap = async function mobileStartPcap(options = {}) {
89
+ var _this$_trafficCapture;
90
+
91
+ if (this.isSimulator()) {
92
+ _logger.default.errorAndThrow('Network traffic capture only works on real devices');
93
+ }
94
+
95
+ const {
96
+ timeLimitSec = DEFAULT_CAPTURE_TIME_SEC,
97
+ forceRestart
98
+ } = options;
99
+
100
+ if ((_this$_trafficCapture = this._trafficCapture) !== null && _this$_trafficCapture !== void 0 && _this$_trafficCapture.isCapturing()) {
101
+ _logger.default.info(`There is an active traffic capture process`);
102
+
103
+ if (forceRestart) {
104
+ _logger.default.info(`Stopping it because 'forceRestart' option is set to true`);
105
+
106
+ await this._trafficCapture.interrupt(true);
107
+ } else {
108
+ _logger.default.info(`Doing nothing. ` + `Set 'forceRestart' option to true if you'd like to start a new traffic capture session`);
109
+
110
+ return;
111
+ }
112
+ }
113
+
114
+ if (this._trafficCapture) {
115
+ await this._trafficCapture.cleanup();
116
+ this._trafficCapture = null;
117
+ }
118
+
119
+ const resultPath = await _appiumSupport.tempDir.path({
120
+ prefix: `appium_${_appiumSupport.util.uuidV4().substring(0, 8)}`,
121
+ suffix: DEFAULT_EXT
122
+ });
123
+ const trafficCollector = new TrafficCapture(this.opts.device.udid, resultPath);
124
+ const timeoutSeconds = parseInt(timeLimitSec, 10);
125
+
126
+ if (isNaN(timeoutSeconds) || timeoutSeconds > MAX_CAPTURE_TIME_SEC || timeoutSeconds <= 0) {
127
+ _logger.default.errorAndThrow(`The timeLimitSec value must be in range [1, ${MAX_CAPTURE_TIME_SEC}] seconds. ` + `The value of '${timeLimitSec}' has been passed instead.`);
128
+ }
129
+
130
+ try {
131
+ await trafficCollector.start(timeoutSeconds);
132
+ } catch (e) {
133
+ await trafficCollector.interrupt(true);
134
+ await trafficCollector.cleanup();
135
+ throw e;
136
+ }
137
+
138
+ this._trafficCapture = trafficCollector;
139
+ };
140
+
141
+ commands.mobileStopPcap = async function mobileStopPcap() {
142
+ if (!this._trafficCapture) {
143
+ _logger.default.info('Network traffic collector has not been started. There is nothing to stop');
144
+
145
+ return '';
146
+ }
147
+
148
+ let resultPath;
149
+
150
+ try {
151
+ resultPath = await this._trafficCapture.finish();
152
+
153
+ if (!(await _appiumSupport.fs.exists(resultPath))) {
154
+ _logger.default.errorAndThrow(`The network traffic capture utility has failed ` + `to store the actual traffic capture at '${resultPath}'`);
155
+ }
156
+ } catch (e) {
157
+ await this._trafficCapture.interrupt(true);
158
+ await this._trafficCapture.cleanup();
159
+ this._trafficCapture = null;
160
+ throw e;
161
+ }
162
+
163
+ return await (0, _utils.encodeBase64OrUpload)(resultPath);
164
+ };
165
+
166
+ var _default = commands;
167
+ exports.default = _default;require('source-map-support').install();
168
+
169
+
170
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9wY2FwLmpzIl0sIm5hbWVzIjpbIk1BWF9DQVBUVVJFX1RJTUVfU0VDIiwiREVGQVVMVF9DQVBUVVJFX1RJTUVfU0VDIiwiREVGQVVMVF9FWFQiLCJwY2FwTG9nZ2VyIiwibG9nZ2VyIiwiZ2V0TG9nZ2VyIiwiY29tbWFuZHMiLCJUcmFmZmljQ2FwdHVyZSIsImNvbnN0cnVjdG9yIiwidWRpZCIsInJlc3VsdFBhdGgiLCJtYWluUHJvY2VzcyIsInN0YXJ0IiwidGltZW91dFNlY29uZHMiLCJQeWlkZXZpY2UiLCJjb2xsZWN0UGNhcCIsIm9uIiwic3Rkb3V0Iiwic3RkZXJyIiwiaW5mbyIsImxvZyIsInNldFRpbWVvdXQiLCJpbnRlcnJ1cHQiLCJvbmNlIiwiY29kZSIsInNpZ25hbCIsImRlYnVnIiwiaXNDYXB0dXJpbmciLCJpc1J1bm5pbmciLCJmb3JjZSIsImludGVycnVwdFByb21pc2UiLCJzdG9wIiwiZSIsIndhcm4iLCJtZXNzYWdlIiwiZmluaXNoIiwiY2xlYW51cCIsImZzIiwiZXhpc3RzIiwicmltcmFmIiwibW9iaWxlU3RhcnRQY2FwIiwib3B0aW9ucyIsImlzU2ltdWxhdG9yIiwiZXJyb3JBbmRUaHJvdyIsInRpbWVMaW1pdFNlYyIsImZvcmNlUmVzdGFydCIsIl90cmFmZmljQ2FwdHVyZSIsInRlbXBEaXIiLCJwYXRoIiwicHJlZml4IiwidXRpbCIsInV1aWRWNCIsInN1YnN0cmluZyIsInN1ZmZpeCIsInRyYWZmaWNDb2xsZWN0b3IiLCJvcHRzIiwiZGV2aWNlIiwicGFyc2VJbnQiLCJpc05hTiIsIm1vYmlsZVN0b3BQY2FwIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLE1BQU1BLG9CQUFvQixHQUFHLEtBQUssRUFBTCxHQUFVLEVBQXZDO0FBQ0EsTUFBTUMsd0JBQXdCLEdBQUcsS0FBSyxDQUF0QztBQUNBLE1BQU1DLFdBQVcsR0FBRyxPQUFwQjs7QUFDQSxNQUFN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Q0QsR0FGRCxDQUVFLE9BQU9tQixDQUFQLEVBQVU7QUFDVixVQUFNc0IsZ0JBQWdCLENBQUNoQyxTQUFqQixDQUEyQixJQUEzQixDQUFOO0FBQ0EsVUFBTWdDLGdCQUFnQixDQUFDbEIsT0FBakIsRUFBTjtBQUNBLFVBQU1KLENBQU47QUFDRDs7QUFDRCxPQUFLYyxlQUFMLEdBQXVCUSxnQkFBdkI7QUFDRCxDQS9DRDs7QUEyREFoRCxRQUFRLENBQUNxRCxjQUFULEdBQTBCLGVBQWVBLGNBQWYsR0FBaUM7QUFDekQsTUFBSSxDQUFDLEtBQUtiLGVBQVYsRUFBMkI7QUFDekIxQixvQkFBSUQsSUFBSixDQUFTLDBFQUFUOztBQUNBLFdBQU8sRUFBUDtBQUNEOztBQUVELE1BQUlULFVBQUo7O0FBQ0EsTUFBSTtBQUNGQSxJQUFBQSxVQUFVLEdBQUcsTUFBTSxLQUFLb0MsZUFBTCxDQUFxQlgsTUFBckIsRUFBbkI7O0FBQ0EsUUFBSSxFQUFDLE1BQU1FLGtCQUFHQyxNQUFILENBQVU1QixVQUFWLENBQVAsQ0FBSixFQUFrQztBQUNoQ1Usc0JBQUl1QixhQUFKLENBQW1CLGlEQUFELEdBQ2YsMkNBQTBDakMsVUFBVyxHQUR4RDtBQUVEO0FBQ0YsR0FORCxDQU1FLE9BQU9zQixDQUFQLEVBQVU7QUFDVixVQUFNLEtBQUtjLGVBQUwsQ0FBcUJ4QixTQUFyQixDQUErQixJQUEvQixDQUFOO0FBQ0EsVUFBTSxLQUFLd0IsZUFBTCxDQUFxQlYsT0FBckIsRUFBTjtBQUNBLFNBQUtVLGVBQUwsR0FBdUIsSUFBdkI7QUFDQSxVQUFNZCxDQUFOO0FBQ0Q7O0FBQ0QsU0FBTyxNQUFNLGlDQUFxQnRCLFVBQXJCLENBQWI7QUFDRCxDQXBCRDs7ZUF1QmVKLFEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUHlpZGV2aWNlIGZyb20gJy4uL3B5LWlvcy1kZXZpY2UtY2xpZW50JztcbmltcG9ydCB7IGZzLCB0ZW1wRGlyLCBsb2dnZXIsIHV0aWwgfSBmcm9tICdhcHBpdW0tc3VwcG9ydCc7XG5pbXBvcnQgbG9nIGZyb20gJy4uL2xvZ2dlcic7XG5pbXBvcnQgeyBlbmNvZGVCYXNlNjRPclVwbG9hZCB9IGZyb20gJy4uL3V0aWxzJztcblxuY29uc3QgTUFYX0NBUFRVUkVfVElNRV9TRUMgPSA2MCAqIDYwICogMTI7XG5jb25zdCBERUZBVUxUX0NBUFRVUkVfVElNRV9TRUMgPSA2MCAqIDU7XG5jb25zdCBERUZBVUxUX0VYVCA9ICcucGNhcCc7XG5jb25zdCBwY2FwTG9nZ2VyID0gbG9nZ2VyLmdldExvZ2dlcigncGNhcGQnKTtcblxuY29uc3QgY29tbWFuZHMgPSB7fTtcblxuXG5jbGFzcyBUcmFmZmljQ2FwdHVyZSB7XG4gIGNvbnN0cnVjdG9yICh1ZGlkLCByZXN1bHRQYXRoKSB7XG4gICAgdGhpcy51ZGlkID0gdWRpZDtcbiAgICB0aGlzLnJlc3VsdFBhdGggPSByZXN1bHRQYXRoO1xuICAgIHRoaXMubWFpblByb2Nlc3MgPSBudWxsO1xuICB9XG5cbiAgYXN5bmMgc3RhcnQgKHRpbWVvdXRTZWNvbmRzKSB7XG4gICAgdGhpcy5tYWluUHJvY2VzcyA9IGF3YWl0IG5ldyBQeWlkZXZpY2UodGhpcy51ZGlkKS5jb2xsZWN0UGNhcCh0aGlzLnJlc3VsdFBhdGgpO1xuICAgIHRoaXMubWFpblByb2Nlc3Mub24oJ291dHB1dCcsIChzdGRvdXQsIHN0ZGVycikgPT4ge1xuICAgICAgaWYgKHN0ZGVycikge1xuICAgICAgICBwY2FwTG9nZ2VyLmluZm8oYCR7c3RkZXJyfWApO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGxvZy5pbmZvKGBTdGFydGluZyBuZXR3b3JrIHRyYWZmaWMgY2FwdHVyZSBzZXNzaW9uIG9uIHRoZSBkZXZpY2UgJyR7dGhpcy51ZGlkfScuIGAgK1xuICAgICAgYFdpbGwgdGltZW91dCBpbiAke3RpbWVvdXRTZWNvbmRzfXNgKTtcbiAgICBzZXRUaW1lb3V0KGFzeW5jICgpID0+IGF3YWl0IHRoaXMuaW50ZXJydXB0KCksIHRpbWVvdXRTZWNvbmRzICogMTAwMCk7XG4gICAgdGhpcy5tYWluUHJvY2Vzcy5vbmNlKCdleGl0JywgKGNvZGUsIHNpZ25hbCkgPT4ge1xuICAgICAgbG9nLmRlYnVnKGBUaGUgdHJhZmZpYyBjYXB0dXJlIHNlc3Npb24gb24gdGhlIGRldmljZSAnJHt0aGlzLnVkaWR9JyBoYXMgZXhpdGVkIGAgK1xuICAgICAgICBgd2l0aCBjb2RlICR7Y29kZX0sIHNpZ25hbCAke3NpZ25hbH1gKTtcbiAgICB9KTtcbiAgfVxuXG4gIGlzQ2FwdHVyaW5nICgpIHtcbiAgICByZXR1cm4gISEodGhpcy5tYWluUHJvY2Vzcz8uaXNSdW5uaW5nKTtcbiAgfVxuXG4gIGFzeW5jIGludGVycnVwdCAoZm9yY2UgPSBmYWxzZSkge1xuICAgIGlmICh0aGlzLmlzQ2FwdHVyaW5nKCkpIHtcbiAgICAgIGNvbnN0IGludGVycnVwdFByb21pc2UgPSB0aGlzLm1haW5Qcm9jZXNzLnN0b3AoZm9yY2UgPyAnU0lHVEVSTScgOiAnU0lHSU5UJyk7XG4gICAgICB0aGlzLm1haW5Qcm9jZXNzID0gbnVsbDtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGludGVycnVwdFByb21pc2U7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGxvZy53YXJuKGBDYW5ub3QgJHtmb3JjZSA/ICd0ZXJtaW5hdGUnIDogJ2ludGVycnVwdCd9IHRoZSB0cmFmZmljIGNhcHR1cmUgc2Vzc2lvbi4gYCArXG4gICAgICAgICAgYE9yaWdpbmFsIGVycm9yOiAke2UubWVzc2FnZX1gKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgYXN5bmMgZmluaXNoICgpIHtcbiAgICBhd2FpdCB0aGlzLmludGVycnVwdCgpO1xuICAgIHJldHVybiB0aGlzLnJlc3VsdFBhdGg7XG4gIH1cblxuICBhc3luYyBjbGVhbnVwICgpIHtcbiAgICBpZiAoYXdhaXQgZnMuZXhpc3RzKHRoaXMucmVzdWx0UGF0aCkpIHtcbiAgICAgIGF3YWl0IGZzLnJpbXJhZih0aGlzLnJlc3VsdFBhdGgpO1xuICAgIH1cbiAgfVxufVxuXG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gU3RhcnRDYXB0dXJlT3B0aW9uc1xuICpcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ3xudW1iZXJ9IHRpbWVMaW1pdFNlYyBbMTgwXSAtIFRoZSBtYXhpbXVtIHRyYWZmaWMgY2FwdHVyZSB0aW1lLCBpbiBzZWNvbmRzLlxuICogVGhlIGRlZmF1bHQgdmFsdWUgaXMgMTgwLCB0aGUgbWF4aW11bSB2YWx1ZSBpcyA0MzIwMCAoMTIgaG91cnMpLlxuICogQHByb3BlcnR5IHs/Ym9vbGVhbn0gZm9yY2VSZXN0YXJ0IFtmYWxzZV0gLSBXaGV0aGVyIHRvIHJlc3RhcnQgYXVkaW8gY2FwdHVyZSBwcm9jZXNzIGZvcmNlZnVsbHkgd2hlblxuICogc3RhcnRQY2FwIGlzIGNhbGxlZCAoYHRydWVgKSBvciBpZ25vcmUgdGhlIGNhbGwgdW50aWwgdGhlIGN1cnJlbnQgbmV0d29yayB0cmFmZmljIGNhcHR1cmUgaXMgY29tcGxldGVkLlxuICovXG5cbi8qKlxuICogUmVjb3JkcyB0aGUgZ2l2ZW4gbmV0d29yayB0cmFmZmljIGNhcHR1cmUgaW50byBhIC5wY2FwIGZpbGUuXG4gKlxuICogQHBhcmFtIHs/U3RhcnRDYXB0dXJlT3B0aW9uc30gb3B0aW9ucyAtIFRoZSBhdmFpbGFibGUgb3B0aW9ucy5cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiBuZXR3b3JrIHRyYWZmaWMgY2FwdHVyZSBoYXMgZmFpbGVkIHRvIHN0YXJ0LlxuICovXG5jb21tYW5kcy5tb2JpbGVTdGFydFBjYXAgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVTdGFydFBjYXAgKG9wdGlvbnMgPSB7fSkge1xuICBpZiAodGhpcy5pc1NpbXVsYXRvcigpKSB7XG4gICAgbG9nLmVycm9yQW5kVGhyb3coJ05ldHdvcmsgdHJhZmZpYyBjYXB0dXJlIG9ubHkgd29ya3Mgb24gcmVhbCBkZXZpY2VzJyk7XG4gIH1cblxuICBjb25zdCB7XG4gICAgdGltZUxpbWl0U2VjID0gREVGQVVMVF9DQVBUVVJFX1RJTUVfU0VDLFxuICAgIGZvcmNlUmVzdGFydCxcbiAgfSA9IG9wdGlvbnM7XG5cbiAgaWYgKHRoaXMuX3RyYWZmaWNDYXB0dXJlPy5pc0NhcHR1cmluZygpKSB7XG4gICAgbG9nLmluZm8oYFRoZXJlIGlzIGFuIGFjdGl2ZSB0cmFmZmljIGNhcHR1cmUgcHJvY2Vzc2ApO1xuICAgIGlmIChmb3JjZVJlc3RhcnQpIHtcbiAgICAgIGxvZy5pbmZvKGBTdG9wcGluZyBpdCBiZWNhdXNlICdmb3JjZVJlc3RhcnQnIG9wdGlvbiBpcyBzZXQgdG8gdHJ1ZWApO1xuICAgICAgYXdhaXQgdGhpcy5fdHJhZmZpY0NhcHR1cmUuaW50ZXJydXB0KHRydWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsb2cuaW5mbyhgRG9pbmcgbm90aGluZy4gYCArXG4gICAgICAgIGBTZXQgJ2ZvcmNlUmVzdGFydCcgb3B0aW9uIHRvIHRydWUgaWYgeW91J2QgbGlrZSB0byBzdGFydCBhIG5ldyB0cmFmZmljIGNhcHR1cmUgc2Vzc2lvbmApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuICBpZiAodGhpcy5fdHJhZmZpY0NhcHR1cmUpIHtcbiAgICBhd2FpdCB0aGlzLl90cmFmZmljQ2FwdHVyZS5jbGVhbnVwKCk7XG4gICAgdGhpcy5fdHJhZmZpY0NhcHR1cmUgPSBudWxsO1xuICB9XG5cbiAgY29uc3QgcmVzdWx0UGF0aCA9IGF3YWl0IHRlbXBEaXIucGF0aCh7XG4gICAgcHJlZml4OiBgYXBwaXVtXyR7dXRpbC51dWlkVjQoKS5zdWJzdHJpbmcoMCwgOCl9YCxcbiAgICBzdWZmaXg6IERFRkFVTFRfRVhULFxuICB9KTtcblxuICBjb25zdCB0cmFmZmljQ29sbGVjdG9yID0gbmV3IFRyYWZmaWNDYXB0dXJlKHRoaXMub3B0cy5kZXZpY2UudWRpZCwgcmVzdWx0UGF0aCk7XG5cbiAgY29uc3QgdGltZW91dFNlY29uZHMgPSBwYXJzZUludCh0aW1lTGltaXRTZWMsIDEwKTtcbiAgaWYgKGlzTmFOKHRpbWVvdXRTZWNvbmRzKSB8fCB0aW1lb3V0U2Vjb25kcyA+IE1BWF9DQVBUVVJFX1RJTUVfU0VDIHx8IHRpbWVvdXRTZWNvbmRzIDw9IDApIHtcbiAgICBsb2cuZXJyb3JBbmRUaHJvdyhgVGhlIHRpbWVMaW1pdFNlYyB2YWx1ZSBtdXN0IGJlIGluIHJhbmdlIFsxLCAke01BWF9DQVBUVVJFX1RJTUVfU0VDfV0gc2Vjb25kcy4gYCArXG4gICAgICBgVGhlIHZhbHVlIG9mICcke3RpbWVMaW1pdFNlY30nIGhhcyBiZWVuIHBhc3NlZCBpbnN0ZWFkLmApO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBhd2FpdCB0cmFmZmljQ29sbGVjdG9yLnN0YXJ0KHRpbWVvdXRTZWNvbmRzKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGF3YWl0IHRyYWZmaWNDb2xsZWN0b3IuaW50ZXJydXB0KHRydWUpO1xuICAgIGF3YWl0IHRyYWZmaWNDb2xsZWN0b3IuY2xlYW51cCgpO1xuICAgIHRocm93IGU7XG4gIH1cbiAgdGhpcy5fdHJhZmZpY0NhcHR1cmUgPSB0cmFmZmljQ29sbGVjdG9yO1xufTtcblxuLyoqXG4gKiBTdG9wIGNhcHR1cmUgb2YgdGhlIGRldmljZSBuZXR3b3JrIHRyYWZmaWMuIElmIG5vIHRyYWZmaWMgY2FwdHVyZSBwcm9jZXNzIGlzIHJ1bm5pbmcgdGhlblxuICogdGhlIGVuZHBvaW50IHdpbGwgdHJ5IHRvIGdldCB0aGUgcmVjZW50bHkgcmVjb3JkZWQgZmlsZS5cbiAqIElmIG5vIHByZXZpb3VzbHkgcmVjb3JkZWQgZmlsZSBpcyBmb3VuZCBhbmQgbm8gYWN0aXZlIHRyYWZmaWMgY2FwdHVyZVxuICogcHJvY2Vzc2VzIGFyZSBydW5uaW5nIHRoZW4gdGhlIG1ldGhvZCByZXR1cm5zIGFuIGVtcHR5IHN0cmluZy5cbiAqXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBCYXNlNjQtZW5jb2RlZCBjb250ZW50IG9mIHRoZSByZWNvcmRlZCBwY2FwIGZpbGUgb3IgYW5cbiAqIGVtcHR5IHN0cmluZyBpZiBubyB0cmFmZmljIGNhcHR1cmUgaGFzIGJlZW4gc3RhcnRlZCBiZWZvcmUuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlcmUgd2FzIGFuIGVycm9yIHdoaWxlIGdldHRpbmcgdGhlIGNhcHR1cmUgZmlsZS5cbiAqL1xuY29tbWFuZHMubW9iaWxlU3RvcFBjYXAgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVTdG9wUGNhcCAoKSB7XG4gIGlmICghdGhpcy5fdHJhZmZpY0NhcHR1cmUpIHtcbiAgICBsb2cuaW5mbygnTmV0d29yayB0cmFmZmljIGNvbGxlY3RvciBoYXMgbm90IGJlZW4gc3RhcnRlZC4gVGhlcmUgaXMgbm90aGluZyB0byBzdG9wJyk7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgbGV0IHJlc3VsdFBhdGg7XG4gIHRyeSB7XG4gICAgcmVzdWx0UGF0aCA9IGF3YWl0IHRoaXMuX3RyYWZmaWNDYXB0dXJlLmZpbmlzaCgpO1xuICAgIGlmICghYXdhaXQgZnMuZXhpc3RzKHJlc3VsdFBhdGgpKSB7XG4gICAgICBsb2cuZXJyb3JBbmRUaHJvdyhgVGhlIG5ldHdvcmsgdHJhZmZpYyBjYXB0dXJlIHV0aWxpdHkgaGFzIGZhaWxlZCBgICtcbiAgICAgICAgYHRvIHN0b3JlIHRoZSBhY3R1YWwgdHJhZmZpYyBjYXB0dXJlIGF0ICcke3Jlc3VsdFBhdGh9J2ApO1xuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICAgIGF3YWl0IHRoaXMuX3RyYWZmaWNDYXB0dXJlLmludGVycnVwdCh0cnVlKTtcbiAgICBhd2FpdCB0aGlzLl90cmFmZmljQ2FwdHVyZS5jbGVhbnVwKCk7XG4gICAgdGhpcy5fdHJhZmZpY0NhcHR1cmUgPSBudWxsO1xuICAgIHRocm93IGU7XG4gIH1cbiAgcmV0dXJuIGF3YWl0IGVuY29kZUJhc2U2NE9yVXBsb2FkKHJlc3VsdFBhdGgpO1xufTtcblxuZXhwb3J0IHsgY29tbWFuZHMgfTtcbmV4cG9ydCBkZWZhdWx0IGNvbW1hbmRzO1xuIl0sImZpbGUiOiJsaWIvY29tbWFuZHMvcGNhcC5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9