appium-xcuitest-driver 3.59.2 → 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 +20 -0
- package/build/lib/commands/certificate.js +14 -1
- package/build/lib/commands/execute.js +4 -2
- package/build/lib/commands/index.js +4 -2
- package/build/lib/commands/pcap.js +170 -0
- package/build/lib/device-log/ios-crash-log.js +54 -12
- package/build/lib/driver.js +10 -4
- package/build/lib/py-ios-device-client.js +155 -0
- package/lib/commands/certificate.js +10 -0
- package/lib/commands/execute.js +3 -0
- package/lib/commands/index.js +2 -1
- package/lib/commands/pcap.js +167 -0
- package/lib/device-log/ios-crash-log.js +52 -12
- package/lib/driver.js +7 -2
- package/lib/py-ios-device-client.js +119 -0
- package/package.json +1 -1
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.
|
|
@@ -30,6 +30,8 @@ var _teen_process = require("teen_process");
|
|
|
30
30
|
|
|
31
31
|
var _portscanner = require("portscanner");
|
|
32
32
|
|
|
33
|
+
var _pyIosDeviceClient = _interopRequireDefault(require("../py-ios-device-client"));
|
|
34
|
+
|
|
33
35
|
let extensions = {},
|
|
34
36
|
commands = {};
|
|
35
37
|
exports.commands = commands;
|
|
@@ -281,6 +283,17 @@ commands.mobileInstallCertificate = async function mobileInstallCertificate(opts
|
|
|
281
283
|
|
|
282
284
|
_logger.default.info(`The certificate cannot be installed via CLI. ` + `Falling back to UI-based deployment`);
|
|
283
285
|
}
|
|
286
|
+
} else {
|
|
287
|
+
const client = new _pyIosDeviceClient.default(this.opts.udid);
|
|
288
|
+
|
|
289
|
+
if (await client.assertExists(false)) {
|
|
290
|
+
await client.installProfile({
|
|
291
|
+
payload: Buffer.from(content, 'base64')
|
|
292
|
+
});
|
|
293
|
+
return;
|
|
294
|
+
} else {
|
|
295
|
+
_logger.default.info('pyidevice is not installed on your system. ' + 'Falling back to the (slow) UI-based installation');
|
|
296
|
+
}
|
|
284
297
|
}
|
|
285
298
|
|
|
286
299
|
const tmpRoot = await _appiumSupport.tempDir.openDir();
|
|
@@ -387,4 +400,4 @@ var _default = extensions;
|
|
|
387
400
|
exports.default = _default;require('source-map-support').install();
|
|
388
401
|
|
|
389
402
|
|
|
390
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9jZXJ0aWZpY2F0ZS5qcyJdLCJuYW1lcyI6WyJleHRlbnNpb25zIiwiY29tbWFuZHMiLCJDT05GSUdfRVhURU5TSU9OIiwiSE9TVF9QT1JUX1JBTkdFIiwiVE1QU0VSVkVSX1NUQVJUVVBfVElNRU9VVCIsIlNldHRpbmdzIiwiR2VuZXJhbCIsInR5cGUiLCJ2YWx1ZSIsIlByb2ZpbGUiLCJBYm91dCIsIkNlcnRpZmljYXRlX1RydXN0X1NldHRpbmdzIiwiQnV0dG9uIiwiSW5zdGFsbCIsIkFsbG93IiwiRG9uZSIsIlJldHVybl90b19TZXR0aW5ncyIsIkFsZXJ0IiwiZXh0cmFjdENvbW1vbk5hbWUiLCJjZXJ0QnVmZmVyIiwidGVtcENlcnQiLCJ0ZW1wRGlyIiwib3BlbiIsInByZWZpeCIsInN1ZmZpeCIsImZzIiwid3JpdGVGaWxlIiwicGF0aCIsInN0ZG91dCIsInBhcnNlQ29tbW9uTmFtZSIsImVyciIsIkVycm9yIiwibWVzc2FnZSIsInJpbXJhZiIsIkxJQlJFX1NTTF9QQVRURVJOIiwiT1BFTl9TU0xfUEFUVEVSTiIsInN0cmluZ0NlcnRpZmljYXRlIiwicmVzdWx0IiwicmVkdWNlIiwiYWNjIiwiciIsIm1hdGNoIiwiZXhlYyIsInRvTW9iaWxlQ29uZmlnIiwiY29tbW9uTmFtZSIsImdldFVVSUQiLCJ1dGlsIiwidXVpZFY0IiwidG9VcHBlckNhc2UiLCJjb250ZW50VXVpZCIsIlBheWxvYWRDb250ZW50IiwiUGF5bG9hZENlcnRpZmljYXRlRmlsZU5hbWUiLCJQYXlsb2FkRGVzY3JpcHRpb24iLCJQYXlsb2FkRGlzcGxheU5hbWUiLCJQYXlsb2FkSWRlbnRpZmllciIsIlBheWxvYWRUeXBlIiwiUGF5bG9hZFVVSUQiLCJQYXlsb2FkVmVyc2lvbiIsIm9zIiwiaG9zdG5hbWUiLCJzcGxpdCIsIlBheWxvYWRSZW1vdmFsRGlzYWxsb3dlZCIsImNsaWNrRWxlbWVudCIsImRyaXZlciIsImxvY2F0b3IiLCJvcHRpb25zIiwiZWxlbWVudCIsInRpbWVvdXQiLCJza2lwSWZJbnZpc2libGUiLCJsb29rdXBEZWxheSIsImZpbmROYXRpdmVFbGVtZW50T3JFbGVtZW50cyIsIkpTT04iLCJzdHJpbmdpZnkiLCJuYXRpdmVDbGljayIsImluc3RhbGxQcmUxMjJDZXJ0aWZpY2F0ZSIsIkIiLCJkZWxheSIsInRydXN0Q2VydGlmaWNhdGVJblByZWZlcmVuY2VzIiwibmFtZSIsInN3aXRjaExvY2F0b3IiLCJtb2JpbGVTd2lwZSIsImRpcmVjdGlvbiIsInBvc3RBY2NlcHRBbGVydCIsImluc3RhbGxQb3N0MTIyQ2VydGlmaWNhdGUiLCJhY3RpdmF0ZUFwcCIsImlzQ2VydEZvdW5kIiwic3dpcGVOdW0iLCJtb2JpbGVJbnN0YWxsQ2VydGlmaWNhdGUiLCJvcHRzIiwiY29udGVudCIsImlzUm9vdCIsIl8iLCJpc0VtcHR5IiwiaXNTaW11bGF0b3IiLCJtZXRob2ROYW1lIiwiZGV2aWNlIiwic2ltY3RsIiwiQnVmZmVyIiwiZnJvbSIsInRvU3RyaW5nIiwicmF3IiwiZSIsImxvZyIsImRlYnVnIiwiaW5mbyIsInRtcFJvb3QiLCJvcGVuRGlyIiwidG1wUG9ydCIsImNvbmZpZ05hbWUiLCJjb25maWdQYXRoIiwicmVzb2x2ZSIsInRtcFNlcnZlciIsImh0dHAiLCJjcmVhdGVTZXJ2ZXIiLCJyZXMiLCJjb25maWdGaWxlIiwicmVhZEZpbGUiLCJlbmQiLCJjbiIsIm1vYmlsZUNvbmZpZyIsInBsaXN0IiwidXBkYXRlUGxpc3RGaWxlIiwiaG9zdCIsImNlcnRVcmwiLCJsaXN0ZW4iLCJpZ24iLCJ3YWl0TXMiLCJpbnRlcnZhbE1zIiwiaXNSZWFsRGV2aWNlIiwicHJveHlDb21tYW5kIiwidXJsIiwiaXNXZWJDb250ZXh0Iiwic2V0VXJsIiwib3BlblVybCIsImlzQ2VydEFscmVhZHlJbnN0YWxsZWQiLCJjb21wYXJlVmVyc2lvbnMiLCJwbGF0Zm9ybVZlcnNpb24iLCJidW5kbGVJZCIsIndhcm4iLCJ0b0luTWVtb3J5QmFzZTY0IiwiY2xvc2UiLCJP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ICdsb2Rhc2gnO1xuaW1wb3J0IHsgZnMsIHBsaXN0LCB0ZW1wRGlyLCB1dGlsIH0gZnJvbSAnYXBwaXVtLXN1cHBvcnQnO1xuaW1wb3J0IHsgcmV0cnlJbnRlcnZhbCwgcmV0cnksIHdhaXRGb3JDb25kaXRpb24gfSBmcm9tICdhc3luY2JveCc7XG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5pbXBvcnQgbG9nIGZyb20gJy4uL2xvZ2dlcic7XG5pbXBvcnQgb3MgZnJvbSAnb3MnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgaHR0cCBmcm9tICdodHRwJztcbmltcG9ydCB7IGV4ZWMgfSBmcm9tICd0ZWVuX3Byb2Nlc3MnO1xuaW1wb3J0IHsgZmluZEFQb3J0Tm90SW5Vc2UsIGNoZWNrUG9ydFN0YXR1cyB9IGZyb20gJ3BvcnRzY2FubmVyJztcblxubGV0IGV4dGVuc2lvbnMgPSB7fSwgY29tbWFuZHMgPSB7fTtcblxuY29uc3QgQ09ORklHX0VYVEVOU0lPTiA9ICdtb2JpbGVjb25maWcnO1xuY29uc3QgSE9TVF9QT1JUX1JBTkdFID0gWzM4MjAwLCAzODI5OV07XG5jb25zdCBUTVBTRVJWRVJfU1RBUlRVUF9USU1FT1VUID0gNTAwMDtcbmNvbnN0IFNldHRpbmdzID0ge1xuICBHZW5lcmFsOiB7XG4gICAgdHlwZTogJ2FjY2Vzc2liaWxpdHkgaWQnLFxuICAgIHZhbHVlOiAnR2VuZXJhbCcsXG4gIH0sXG4gIFByb2ZpbGU6IHtcbiAgICB0eXBlOiAnLWlvcyBwcmVkaWNhdGUgc3RyaW5nJyxcbiAgICB2YWx1ZTogYG5hbWUgQkVHSU5TV0lUSCAnUHJvZmlsZSdgLFxuICB9LFxuICBBYm91dDoge1xuICAgIHR5cGU6ICdhY2Nlc3NpYmlsaXR5IGlkJyxcbiAgICB2YWx1ZTogJ0Fib3V0JyxcbiAgfSxcbiAgQ2VydGlmaWNhdGVfVHJ1c3RfU2V0dGluZ3M6IHtcbiAgICB0eXBlOiAnYWNjZXNzaWJpbGl0eSBpZCcsXG4gICAgdmFsdWU6ICdDZXJ0aWZpY2F0ZSBUcnVzdCBTZXR0aW5ncycsXG4gIH0sXG59O1xuY29uc3QgQnV0dG9uID0ge1xuICBJbnN0YWxsOiB7XG4gICAgdHlwZTogJ2FjY2Vzc2liaWxpdHkgaWQnLFxuICAgIHZhbHVlOiAnSW5zdGFsbCcsXG4gIH0sXG4gIEFsbG93OiB7XG4gICAgdHlwZTogJ2FjY2Vzc2liaWxpdHkgaWQnLFxuICAgIHZhbHVlOiAnQWxsb3cnLFxuICB9LFxuICBEb25lOiB7XG4gICAgdHlwZTogJ2FjY2Vzc2liaWxpdHkgaWQnLFxuICAgIHZhbHVlOiAnRG9uZScsXG4gIH0sXG4gIFJldHVybl90b19TZXR0aW5nczoge1xuICAgIHR5cGU6ICdhY2Nlc3NpYmlsaXR5IGlkJyxcbiAgICB2YWx1ZTogJ1JldHVybiB0byBTZXR0aW5ncycsXG4gIH0sXG59O1xuY29uc3QgQWxlcnQgPSB7XG4gIEluc3RhbGw6IHtcbiAgICB0eXBlOiAnLWlvcyBjbGFzcyBjaGFpbicsXG4gICAgdmFsdWU6ICcqKi9YQ1VJRWxlbWVudFR5cGVBbnlbYHR5cGUgPT0gXFwnWENVSUVsZW1lbnRUeXBlQWxlcnRcXCcgT1IgdHlwZSA9PSBcXCdYQ1VJRWxlbWVudFR5cGVTaGVldFxcJ2BdLyoqL1hDVUlFbGVtZW50VHlwZUJ1dHRvbltgbGFiZWwgPT0gXFwnSW5zdGFsbFxcJ2BdJyxcbiAgfSxcbn07XG5cblxuYXN5bmMgZnVuY3Rpb24gZXh0cmFjdENvbW1vbk5hbWUgKGNlcnRCdWZmZXIpIHtcbiAgY29uc3QgdGVtcENlcnQgPSBhd2FpdCB0ZW1wRGlyLm9wZW4oe1xuICAgIHByZWZpeDogJ2NlcnQnLFxuICAgIHN1ZmZpeDogJy5jZXInXG4gIH0pO1xuICB0cnkge1xuICAgIGF3YWl0IGZzLndyaXRlRmlsZSh0ZW1wQ2VydC5wYXRoLCBjZXJ0QnVmZmVyKTtcbiAgICBjb25zdCB7c3Rkb3V0fSA9IGF3YWl0IGV4ZWMoJ29wZW5zc2wnLCBbJ3g1MDknLCAnLW5vb3V0JywgJy1zdWJqZWN0JywgJy1pbicsIHRlbXBDZXJ0LnBhdGhdKTtcbiAgICByZXR1cm4gcGFyc2VDb21tb25OYW1lKHN0ZG91dCk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IHBhcnNlIGNvbW1vbiBuYW1lIHZhbHVlIGZyb20gdGhlIGNlcnRpZmljYXRlLiBJcyBpdCB2YWxpZCBhbmQgYmFzZTY0LWVuY29kZWQ/IGAgK1xuICAgICAgICAgICAgICAgICAgICBgT3JpZ2luYWwgZXJyb3I6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gIH0gZmluYWxseSB7XG4gICAgYXdhaXQgZnMucmltcmFmKHRlbXBDZXJ0LnBhdGgpO1xuICB9XG59XG5cbmNvbnN0IExJQlJFX1NTTF9QQVRURVJOID0gL1xcL0NOPShbXlxcL10rKS87IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdXNlbGVzcy1lc2NhcGVcbmNvbnN0IE9QRU5fU1NMX1BBVFRFUk4gPSAvLFxcc0NOXFxzPVxccyhbXixdKykvO1xuXG5mdW5jdGlvbiBwYXJzZUNvbW1vbk5hbWUgKHN0cmluZ0NlcnRpZmljYXRlKSB7XG4gIGNvbnN0IHJlc3VsdCA9IFtMSUJSRV9TU0xfUEFUVEVSTiwgT1BFTl9TU0xfUEFUVEVSTl0ucmVkdWNlKChhY2MsIHIpID0+IHtcbiAgICBpZiAoYWNjKSB7XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH1cbiAgICBjb25zdCBtYXRjaCA9IHIuZXhlYyhzdHJpbmdDZXJ0aWZpY2F0ZSk7XG4gICAgcmV0dXJuIG1hdGNoICYmIG1hdGNoWzFdO1xuICB9LCBudWxsKTtcbiAgaWYgKCFyZXN1bHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZXJlIGlzIG5vIGNvbW1vbiBuYW1lIHZhbHVlIGluICcke3N0cmluZ0NlcnRpZmljYXRlfScgb3V0cHV0YCk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZXMgQXBwbGUncyBvdmVyLXRoZS1haXIgY29uZmlndXJhdGlvbiBwcm9maWxlXG4gKiBmb3IgY2VydGlmaWNhdGUgZGVwbG95bWVudCBiYXNlZCBvbiB0aGUgZ2l2ZW4gUEVNIGNlcnRpZmljYXRlIGNvbnRlbnQuXG4gKiBSZWFkIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9saWJyYXJ5L2NvbnRlbnQvZG9jdW1lbnRhdGlvbi9OZXR3b3JraW5nSW50ZXJuZXQvQ29uY2VwdHVhbC9pUGhvbmVPVEFDb25maWd1cmF0aW9uL0ludHJvZHVjdGlvbi9JbnRyb2R1Y3Rpb24uaHRtbFxuICogZm9yIG1vcmUgZGV0YWlscyBvbiBzdWNoIHByb2ZpbGVzLlxuICpcbiAqIEBwYXJhbSB7QnVmZmVyfSBjZXJ0QnVmZmVyIC0gVGhlIGFjdHVhbCBjb250ZW50IG9mIFBFTSBjZXJ0aWZpY2F0ZSBlbmNvZGVkIGludG8gTm9kZUpTIGJ1ZmZlclxuICogQHBhcmFtIHtzdHJpbmd9IGNvbW1vbk5hbWUgLSBDZXJ0aWZpY2F0ZSdzIGNvbW1vbiBuYW1lXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBUaGUgZW5jb2RlZCBzdHJ1Y3R1cmUgb2YgdGhlIGdpdmVuIGNlcnRpZmljYXRlLCB3aGljaCBpcyByZWFkeSB0byBiZSBwYXNzZWRcbiAqIGFzIGFuIGFyZ3VtZW50IHRvIHBsaXN0IGJ1aWxkZXJcbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgZ2l2ZW4gY2VydGlmaWNhdGUgY2Fubm90IGJlIHBhcnNlZFxuICovXG5mdW5jdGlvbiB0b01vYmlsZUNvbmZpZyAoY2VydEJ1ZmZlciwgY29tbW9uTmFtZSkge1xuICBjb25zdCBnZXRVVUlEID0gKCkgPT4gdXRpbC51dWlkVjQoKS50b1VwcGVyQ2FzZSgpO1xuICBjb25zdCBjb250ZW50VXVpZCA9IGdldFVVSUQoKTtcbiAgcmV0dXJuIHtcbiAgICBQYXlsb2FkQ29udGVudDogW3tcbiAgICAgIFBheWxvYWRDZXJ0aWZpY2F0ZUZpbGVOYW1lOiBgJHtjb21tb25OYW1lfS5jZXJgLFxuICAgICAgUGF5bG9hZENvbnRlbnQ6IGNlcnRCdWZmZXIsXG4gICAgICBQYXlsb2FkRGVzY3JpcHRpb246ICdBZGRzIGEgQ0Egcm9vdCBjZXJ0aWZpY2F0ZScsXG4gICAgICBQYXlsb2FkRGlzcGxheU5hbWU6IGNvbW1vbk5hbWUsXG4gICAgICBQYXlsb2FkSWRlbnRpZmllcjogYGNvbS5hcHBsZS5zZWN1cml0eS5yb290LiR7Y29udGVudFV1aWR9YCxcbiAgICAgIFBheWxvYWRUeXBlOiAnY29tLmFwcGxlLnNlY3VyaXR5LnJvb3QnLFxuICAgICAgUGF5bG9hZFVVSUQ6IGNvbnRlbnRVdWlkLFxuICAgICAgUGF5bG9hZFZlcnNpb246IDFcbiAgICB9XSxcbiAgICBQYXlsb2FkRGlzcGxheU5hbWU6IGNvbW1vbk5hbWUsXG4gICAgUGF5bG9hZElkZW50aWZpZXI6IGAke29zLmhvc3RuYW1lKCkuc3BsaXQoJy4nKVswXX0uJHtnZXRVVUlEKCl9YCxcbiAgICBQYXlsb2FkUmVtb3ZhbERpc2FsbG93ZWQ6IGZhbHNlLFxuICAgIFBheWxvYWRUeXBlOiAnQ29uZmlndXJhdGlvbicsXG4gICAgUGF5bG9hZFVVSUQ6IGdldFVVSUQoKSxcbiAgICBQYXlsb2FkVmVyc2lvbjogMVxuICB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBjbGlja0VsZW1lbnQgKGRyaXZlciwgbG9jYXRvciwgb3B0aW9ucyA9IHt9KSB7XG4gIGxldCBlbGVtZW50ID0gbnVsbDtcbiAgY29uc3Qge1xuICAgIHRpbWVvdXQgPSA1MDAwLFxuICAgIHNraXBJZkludmlzaWJsZSA9IGZhbHNlXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBsb29rdXBEZWxheSA9IDUwMDtcbiAgdHJ5IHtcbiAgICBlbGVtZW50ID0gYXdhaXQgcmV0cnlJbnRlcnZhbCh0aW1lb3V0IDwgbG9va3VwRGVsYXkgPyAxIDogdGltZW91dCAvIGxvb2t1cERlbGF5LCBsb29rdXBEZWxheSxcbiAgICAgICgpID0+IGRyaXZlci5maW5kTmF0aXZlRWxlbWVudE9yRWxlbWVudHMobG9jYXRvci50eXBlLCBsb2NhdG9yLnZhbHVlLCBmYWxzZSlcbiAgICApO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBpZiAoc2tpcElmSW52aXNpYmxlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGZpbmQgJHtKU09OLnN0cmluZ2lmeShsb2NhdG9yKX0gd2l0aGluICR7dGltZW91dH1tcyB0aW1lb3V0YCk7XG4gIH1cbiAgYXdhaXQgZHJpdmVyLm5hdGl2ZUNsaWNrKGVsZW1lbnQpO1xuICByZXR1cm4gdHJ1ZTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gaW5zdGFsbFByZTEyMkNlcnRpZmljYXRlIChkcml2ZXIpIHtcbiAgLy8gQWNjZXB0IFNhZmFyaSBhbGVydFxuICBhd2FpdCBjbGlja0VsZW1lbnQoZHJpdmVyLCBCdXR0b24uQWxsb3csIHtcbiAgICAvLyBjZXJ0aWZpY2F0ZSBsb2FkIG1pZ2h0IHRha2Ugc29tZSB0aW1lIG9uIHNsb3cgbWFjaGluZXNcbiAgICB0aW1lb3V0OiAxNTAwMCxcbiAgfSk7XG4gIC8vIFdhaXQgdW50aWwgUHJlZmVyZW5jZXMgYXJlIG9wZW5lZFxuICBhd2FpdCBCLmRlbGF5KDIwMDApO1xuXG4gIC8vIEdvIHRocm91Z2ggUHJlZmVyZW5jZXMgd2l6YXJkXG4gIGlmICghYXdhaXQgY2xpY2tFbGVtZW50KGRyaXZlciwgQnV0dG9uLkluc3RhbGwsIHtcbiAgICBza2lwSWZJbnZpc2libGU6IHRydWUsXG4gIH0pKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIC8vIFdlIG5lZWQgdG8gY2xpY2sgSW5zdGFsbCBidXR0b24gb24gdHdvIGRpZmZlcmVudCB0YWJzXG4gIC8vIFRoZSBzZWNvbmQgb25lIGNvbmZpcm1zIHRoZSBwcmV2aW91c1xuICBhd2FpdCBCLmRlbGF5KDE1MDApO1xuICBhd2FpdCBjbGlja0VsZW1lbnQoZHJpdmVyLCBCdXR0b24uSW5zdGFsbCk7XG4gIC8vIEFjY2VwdCBhbGVydFxuICBhd2FpdCBjbGlja0VsZW1lbnQoZHJpdmVyLCBBbGVydC5JbnN0YWxsKTtcbiAgLy8gRmluaXNoIGFkZGluZyBjZXJ0aWZpY2F0ZVxuICBhd2FpdCBjbGlja0VsZW1lbnQoZHJpdmVyLCBCdXR0b24uRG9uZSk7XG4gIHJldHVybiB0cnVlO1xufVxuXG5hc3luYyBmdW5jdGlvbiB0cnVzdENlcnRpZmljYXRlSW5QcmVmZXJlbmNlcyAoZHJpdmVyLCBuYW1lKSB7XG4gIGF3YWl0IGNsaWNrRWxlbWVudChkcml2ZXIsIFNldHRpbmdzLkdlbmVyYWwpO1xuICBhd2FpdCBjbGlja0VsZW1lbnQoZHJpdmVyLCBTZXR0aW5ncy5BYm91dCk7XG4gIGNvbnN0IHN3aXRjaExvY2F0b3IgPSB7XG4gICAgdHlwZTogJy1pb3MgY2xhc3MgY2hhaW4nLFxuICAgIHZhbHVlOiBgKiovWENVSUVsZW1lbnRUeXBlQ2VsbFtcXGBsYWJlbCA9PSAnJHtuYW1lfSdcXGBdLyoqL1hDVUlFbGVtZW50VHlwZVN3aXRjaGAsXG4gIH07XG4gIGF3YWl0IHJldHJ5KDUsIGFzeW5jICgpID0+IHtcbiAgICBhd2FpdCBkcml2ZXIubW9iaWxlU3dpcGUoe1xuICAgICAgZWxlbWVudDogYXdhaXQgZHJpdmVyLmZpbmROYXRpdmVFbGVtZW50T3JFbGVtZW50cygnY2xhc3MgbmFtZScsICdYQ1VJRWxlbWVudFR5cGVUYWJsZScsIGZhbHNlKSxcbiAgICAgIGRpcmVjdGlvbjogJ3VwJ1xuICAgIH0pO1xuICAgIGF3YWl0IGNsaWNrRWxlbWVudChkcml2ZXIsIFNldHRpbmdzLkNlcnRpZmljYXRlX1RydXN0X1NldHRpbmdzLCB7XG4gICAgICB0aW1lb3V0OiA1MDAsXG4gICAgfSk7XG5cbiAgICBhd2FpdCBkcml2ZXIuZmluZE5hdGl2ZUVsZW1lbnRPckVsZW1lbnRzKHN3aXRjaExvY2F0b3IudHlwZSwgc3dpdGNoTG9jYXRvci52YWx1ZSwgZmFsc2UpO1xuICB9KTtcbiAgLy8gT25seSBjbGljayB0aGUgc3dpdGNoIGlmIGl0IGlzIHNldCB0byBPZmZcbiAgaWYgKGF3YWl0IGNsaWNrRWxlbWVudChkcml2ZXIsIHtcbiAgICB0eXBlOiBzd2l0Y2hMb2NhdG9yLnR5cGUsXG4gICAgdmFsdWU6IGAke3N3aXRjaExvY2F0b3IudmFsdWV9W1xcYHZhbHVlID09ICcwJ1xcYF1gXG4gIH0sIHtcbiAgICB0aW1lb3V0OiAxMDAwLFxuICAgIHNraXBJZkludmlzaWJsZTogdHJ1ZSxcbiAgfSkpIHtcbiAgICBhd2FpdCBkcml2ZXIucG9zdEFjY2VwdEFsZXJ0KCk7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gaW5zdGFsbFBvc3QxMjJDZXJ0aWZpY2F0ZSAoZHJpdmVyLCBuYW1lKSB7XG4gIC8vIEFjY2VwdCBTYWZhcmkgYWxlcnRcbiAgYXdhaXQgY2xpY2tFbGVtZW50KGRyaXZlciwgQnV0dG9uLkFsbG93LCB7XG4gICAgLy8gY2VydGlmaWNhdGUgbG9hZCBtaWdodCB0YWtlIHNvbWUgdGltZSBvbiBzbG93IG1hY2hpbmVzXG4gICAgdGltZW91dDogMTUwMDAsXG4gIH0pO1xuICAvLyBXYWl0IGZvciB0aGUgc2Vjb25kIGFsZXJ0XG4gIGF3YWl0IEIuZGVsYXkoMjAwMCk7XG5cbiAgYXdhaXQgZHJpdmVyLnBvc3RBY2NlcHRBbGVydCgpO1xuICBhd2FpdCBkcml2ZXIuYWN0aXZhdGVBcHAoJ2NvbS5hcHBsZS5QcmVmZXJlbmNlcycpO1xuICBhd2FpdCBjbGlja0VsZW1lbnQoZHJpdmVyLCBTZXR0aW5ncy5HZW5lcmFsKTtcbiAgYXdhaXQgY2xpY2tFbGVtZW50KGRyaXZlciwgU2V0dGluZ3MuUHJvZmlsZSk7XG4gIC8vIFNlbGVjdCB0aGUgdGFyZ2V0IGNlcnRcbiAgbGV0IGlzQ2VydEZvdW5kID0gZmFsc2U7XG4gIGZvciAobGV0IHN3aXBlTnVtID0gMDsgc3dpcGVOdW0gPCA1OyArK3N3aXBlTnVtKSB7XG4gICAgaWYgKGF3YWl0IGNsaWNrRWxlbWVudChkcml2ZXIsIHtcbiAgICAgIHR5cGU6ICctaW9zIGNsYXNzIGNoYWluJyxcbiAgICAgIHZhbHVlOiBgKiovWENVSUVsZW1lbnRUeXBlQ2VsbFtcXGBsYWJlbCA9PSAnJHtuYW1lfSdcXGBdYCxcbiAgICB9LCB7XG4gICAgICB0aW1lb3V0OiA1MDAsXG4gICAgICBza2lwSWZJbnZpc2libGU6IHRydWUsXG4gICAgfSkpIHtcbiAgICAgIGlzQ2VydEZvdW5kID0gdHJ1ZTtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGF3YWl0IGRyaXZlci5tb2JpbGVTd2lwZSh7XG4gICAgICBlbGVtZW50OiBhd2FpdCBkcml2ZXIuZmluZE5hdGl2ZUVsZW1lbnRPckVsZW1lbnRzKCdjbGFzcyBuYW1lJywgJ1hDVUlFbGVtZW50VHlwZVRhYmxlJywgZmFsc2UpLFxuICAgICAgZGlyZWN0aW9uOiAndXAnXG4gICAgfSk7XG4gIH1cbiAgaWYgKCFpc0NlcnRGb3VuZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgJyR7bmFtZX0nIGNhbm5vdCBiZSBmb3VuZCBpbiB0aGUgY2VydGlmaWNhdGVzIGxpc3RgKTtcbiAgfVxuXG4gIC8vIEluc3RhbGwgb3B0aW9uIGlzIG9ubHkgdmlzaWJsZSBpZiB0aGUgY2VydCBpcyBub3QgaW5zdGFsbGVkIHlldFxuICBpZiAoIWF3YWl0IGNsaWNrRWxlbWVudChkcml2ZXIsIEJ1dHRvbi5JbnN0YWxsLCB7XG4gICAgc2tpcElmSW52aXNpYmxlOiB0cnVlLFxuICB9KSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBhd2FpdCBCLmRlbGF5KDE1MDApO1xuICAvLyBDb25maXJtIHVudHJ1c3RlZCBjZXJ0IGluc3RhbGxcbiAgYXdhaXQgY2xpY2tFbGVtZW50KGRyaXZlciwgQnV0dG9uLkluc3RhbGwpO1xuICAvLyBBY2NlcHQgYWxlcnRcbiAgYXdhaXQgY2xpY2tFbGVtZW50KGRyaXZlciwgQWxlcnQuSW5zdGFsbCk7XG4gIC8vIEZpbmlzaCBhZGRpbmcgY2VydGlmaWNhdGVcbiAgYXdhaXQgY2xpY2tFbGVtZW50KGRyaXZlciwgQnV0dG9uLkRvbmUpO1xuXG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IENlcnRpZmljYXRlSW5zdGFsbGF0aW9uT3B0aW9uc1xuICpcbiAqIEBwcm9wZXJ0eSB7IXN0cmluZ30gY29udGVudCAtIEJhc2U2NC1lbmNvZGVkIGNvbnRlbnQgb2YgdGhlIHB1YmxpYyBjZXJ0aWZpY2F0ZVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBjb21tb25OYW1lIC0gQ29tbW9uIG5hbWUgb2YgdGhlIGNlcnRpZmljYXRlLiBJZiB0aGlzIGlzIG5vdCBzZXRcbiAqIHRoZW4gdGhlIHNjcmlwdCB3aWxsIHRyeSB0byBwYXJzZSBpdCBmcm9tIHRoZSBnaXZlbiBjZXJ0aWZpY2F0ZSBjb250ZW50LlxuICogQHByb3BlcnR5IHs/Ym9vbGVhbn0gaXNSb290IFt0cnVlXSAtIFRoaXMgb3B0aW9uIGRlZmluZXMgd2hlcmUgdGhlIGNlcnRpZmljYXRlIHNob3VsZCBiZVxuICogaW5zdGFsbGVkIHRvOiBlaXRoZXIgVHJ1c3RlZCBSb290IFN0b3JlIChgdHJ1ZWAsIHRoZSBkZWZhdWx0IG9wdGlvbikgb3JcbiAqIHRoZSBLZXljaGFpbiAoYGZhbHNlYCkuIE9uIGVudmlyb25tZW50cyBvdGhlciB0aGFuIFhjb2RlIDExLjQrIFNpbXVsYXRvciB0aGlzXG4gKiBvcHRpb24gaXMgaWdub3JlZC5cbiAqL1xuXG4vKipcbiAqIEluc3RhbGxzIGEgY3VzdG9tIGNlcnRpZmljYXRlIG9udG8gdGhlIGRldmljZS5cbiAqIFNpbmNlIFhjb2RlIFNESyAxMS40IEFwcGxlIGhhcyBhZGRlZCBhIGRlZGljYXRlZCBzaW1jdGwgc3ViY29tbWFuZCB0byBxdWlja2x5IGhhbmRsZVxuICogY2VydGlmaWNhdGVzIG9uIFNpbXVsYXRvciBvdmVyIENMSS5cbiAqIE9uIHJlYWwgZGV2aWNlcyBvciBzaW11bGF0b3JzIGJlZm9yZSBYY29kZSAxMS40IFNES1xuICogQXBwbGUgcHJvdmlkZXMgbm8gb2ZmaWNpYWwgd2F5IHRvIGRvIGl0IHZpYSB0aGUgY29tbWFuZCBsaW5lLlxuICogSW4gc3VjaCBjYXNlIChhbmQgYWxzbyBhcyBhIGZhbGxiYWNrIGlmIENMSSBzZXR1cCBmYWlscylcbiAqIHRoaXMgbWV0aG9kIHRyaWVzIHRvIHdyYXAgdGhlIGNlcnRpZmljYXRlIGludG8gLm1vYmlsZWNvbmZpZyBmb3JtYXRcbiAqIGFuZCB0aGVuIGRlcGxveXMgdGhlIHdyYXBwZWQgZmlsZSB0byB0aGUgaW50ZXJuYWwgSFRUUCBzZXJ2ZXIsXG4gKiBzbyBvbmUgY2FuIG9wZW4gaXQgdmlhIG1vYmlsZSBTYWZhcmkuXG4gKiBUaGVuIHRoZSBhbGdvcml0aG0gZ29lcyB0aHJvdWdoIHRoZSBwcm9maWxlIGluc3RhbGxhdGlvbiBwcm9jZWR1cmUgYnlcbiAqIGNsaWNraW5nIHRoZSBuZWNlc3NhcnkgYnV0dG9ucyB1c2luZyBXZWJEcml2ZXJBZ2VudC5cbiAqXG4gKiBAcGFyYW0ge0NlcnRpZmljYXRlSW5zdGFsbGF0aW9uT3B0aW9uc30gb3B0c1xuICogQHJldHVybnMgez9zdHJpbmd9IFRoZSBjb250ZW50IG9mIHRoZSBnZW5lcmF0ZWQgLm1vYmlsZWNvbmZpZyBmaWxlIGFzXG4gKiBiYXNlNjQtZW5jb2RlZCBzdHJpbmcuIFRoaXMgY29uZmlnIG1pZ2h0IGJlIHVzZWZ1bCBmb3IgZGVidWdnaW5nIHB1cnBvc2VzLlxuICogSWYgdGhlIGNlcnRpZmljYXRlIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBzZXQgdmlhIENMSSB0aGVuIG5vdGhpbmcgaXMgcmV0dXJuZWQuXG4gKi9cbmNvbW1hbmRzLm1vYmlsZUluc3RhbGxDZXJ0aWZpY2F0ZSA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZUluc3RhbGxDZXJ0aWZpY2F0ZSAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBjb250ZW50LFxuICAgIGNvbW1vbk5hbWUsXG4gICAgaXNSb290ID0gdHJ1ZSxcbiAgfSA9IG9wdHM7XG4gIGlmIChfLmlzRW1wdHkoY29udGVudCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0NlcnRpZmljYXRlIGNvbnRlbnQgc2hvdWxkIG5vdCBiZSBlbXB0eScpO1xuICB9XG5cbiAgaWYgKHRoaXMuaXNTaW11bGF0b3IoKSkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBtZXRob2ROYW1lID0gaXNSb290ID8gJ2FkZFJvb3RDZXJ0aWZpY2F0ZScgOiAnYWRkQ2VydGlmaWNhdGUnO1xuICAgICAgYXdhaXQgdGhpcy5vcHRzLmRldmljZS5zaW1jdGxbbWV0aG9kTmFtZV0oXG4gICAgICAgIEJ1ZmZlci5mcm9tKGNvbnRlbnQsICdiYXNlNjQnKS50b1N0cmluZygpLCB7cmF3OiB0cnVlfVxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBsb2cuZGVidWcoZSk7XG4gICAgICBsb2cuaW5mbyhgVGhlIGNlcnRpZmljYXRlIGNhbm5vdCBiZSBpbnN0YWxsZWQgdmlhIENMSS4gYCArXG4gICAgICAgIGBGYWxsaW5nIGJhY2sgdG8gVUktYmFzZWQgZGVwbG95bWVudGApO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHRtcFJvb3QgPSBhd2FpdCB0ZW1wRGlyLm9wZW5EaXIoKTtcbiAgY29uc3QgdG1wUG9ydCA9IGF3YWl0IGZpbmRBUG9ydE5vdEluVXNlKEhPU1RfUE9SVF9SQU5HRVswXSwgSE9TVF9QT1JUX1JBTkdFWzFdKTtcbiAgY29uc3QgY29uZmlnTmFtZSA9IGBhcHBpdW0uJHtDT05GSUdfRVhURU5TSU9OfWA7XG4gIGNvbnN0IGNvbmZpZ1BhdGggPSBwYXRoLnJlc29sdmUodG1wUm9vdCwgY29uZmlnTmFtZSk7XG4gIGNvbnN0IHRtcFNlcnZlciA9IGh0dHAuY3JlYXRlU2VydmVyKGFzeW5jIGZ1bmN0aW9uIChfLCByZXMpIHtcbiAgICBjb25zdCBjb25maWdGaWxlID0gYXdhaXQgZnMucmVhZEZpbGUoY29uZmlnUGF0aCk7XG4gICAgcmVzLmVuZChjb25maWdGaWxlKTtcbiAgfSk7XG4gIHRyeSB7XG4gICAgY29uc3QgY2VydEJ1ZmZlciA9IEJ1ZmZlci5mcm9tKGNvbnRlbnQsICdiYXNlNjQnKTtcbiAgICBjb25zdCBjbiA9IGNvbW1vbk5hbWUgfHwgYXdhaXQgZXh0cmFjdENvbW1vbk5hbWUoY2VydEJ1ZmZlcik7XG4gICAgY29uc3QgbW9iaWxlQ29uZmlnID0gdG9Nb2JpbGVDb25maWcoY2VydEJ1ZmZlciwgY24pO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBwbGlzdC51cGRhdGVQbGlzdEZpbGUoY29uZmlnUGF0aCwgbW9iaWxlQ29uZmlnLCBmYWxzZSwgZmFsc2UpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3Qgc3RvcmUgdGhlIGdlbmVyYXRlZCBjb25maWcgYXMgJyR7Y29uZmlnUGF0aH0nLiBgICtcbiAgICAgICAgICAgICAgICAgICAgICBgT3JpZ2luYWwgZXJyb3I6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGhvc3QgPSBvcy5ob3N0bmFtZSgpO1xuICAgICAgY29uc3QgY2VydFVybCA9IGBodHRwOi8vJHtob3N0fToke3RtcFBvcnR9LyR7Y29uZmlnTmFtZX1gO1xuICAgICAgYXdhaXQgdG1wU2VydmVyLmxpc3Rlbih0bXBQb3J0KTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHdhaXRGb3JDb25kaXRpb24oYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gKGF3YWl0IGNoZWNrUG9ydFN0YXR1cyh0bXBQb3J0LCBob3N0KSkgPT09ICdvcGVuJztcbiAgICAgICAgICB9IGNhdGNoIChpZ24pIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sIHtcbiAgICAgICAgICB3YWl0TXM6IFRNUFNFUlZFUl9TVEFSVFVQX1RJTUVPVVQsXG4gICAgICAgICAgaW50ZXJ2YWxNczogMzAwLFxuICAgICAgICB9KTtcbiAgICAgICAgbG9nLmRlYnVnKGBUaGUgdGVtcG9yYXJ5IHdlYiBzZXJ2ZXIgaXMgcnVubmluZyBhdCBodHRwOi8vJHtob3N0fToke3RtcFBvcnR9YCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlIHRlbXBvcmFyeSB3ZWIgc2VydmVyIGNhbm5vdCBiZSBzdGFydGVkIGF0IGh0dHA6Ly8ke2hvc3R9OiR7dG1wUG9ydH0uYCk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5pc1JlYWxEZXZpY2UoKSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IHRoaXMucHJveHlDb21tYW5kKCcvdXJsJywgJ1BPU1QnLCB7dXJsOiBjZXJ0VXJsfSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIGlmICh0aGlzLmlzV2ViQ29udGV4dCgpKSB7XG4gICAgICAgICAgICAvLyBUaGUgY29tbWFuZCBhYm92ZSBkb2VzIG5vdCBhbHdheXMgd29yayBvbiByZWFsIGRldmljZXNcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc2V0VXJsKGNlcnRVcmwpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhd2FpdCB0aGlzLm9wdHMuZGV2aWNlLm9wZW5VcmwoY2VydFVybCk7XG4gICAgICB9XG5cbiAgICAgIGxldCBpc0NlcnRBbHJlYWR5SW5zdGFsbGVkID0gZmFsc2U7XG4gICAgICBpZiAodXRpbC5jb21wYXJlVmVyc2lvbnModGhpcy5vcHRzLnBsYXRmb3JtVmVyc2lvbiwgJz49JywgJzEyLjInKSkge1xuICAgICAgICBpZiAoYXdhaXQgaW5zdGFsbFBvc3QxMjJDZXJ0aWZpY2F0ZSh0aGlzLCBjbikpIHtcbiAgICAgICAgICBhd2FpdCBjbGlja0VsZW1lbnQodGhpcywgU2V0dGluZ3MuUHJvZmlsZSk7XG4gICAgICAgICAgYXdhaXQgdHJ1c3RDZXJ0aWZpY2F0ZUluUHJlZmVyZW5jZXModGhpcywgY24pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlzQ2VydEFscmVhZHlJbnN0YWxsZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoYXdhaXQgaW5zdGFsbFByZTEyMkNlcnRpZmljYXRlKHRoaXMpKSB7XG4gICAgICAgICAgYXdhaXQgY2xpY2tFbGVtZW50KHRoaXMsIEJ1dHRvbi5SZXR1cm5fdG9fU2V0dGluZ3MpO1xuICAgICAgICAgIGF3YWl0IHRydXN0Q2VydGlmaWNhdGVJblByZWZlcmVuY2VzKHRoaXMsIGNuKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpc0NlcnRBbHJlYWR5SW5zdGFsbGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGlzQ2VydEFscmVhZHlJbnN0YWxsZWQpIHtcbiAgICAgICAgbG9nLmluZm8oYEl0IGxvb2tzIGxpa2UgdGhlICcke2NufScgY2VydGlmaWNhdGUgaGFzIGJlZW4gYWxyZWFkeSBhZGRlZCB0byB0aGUgQ0Egcm9vdGApO1xuICAgICAgfVxuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAodGhpcy5vcHRzLmJ1bmRsZUlkKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5hY3RpdmF0ZUFwcCh0aGlzLm9wdHMuYnVuZGxlSWQpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgbG9nLndhcm4oYENhbm5vdCByZXN0b3JlIHRoZSBhcHBsaWNhdGlvbiAnJHt0aGlzLm9wdHMuYnVuZGxlSWR9Jy4gT3JpZ2luYWwgZXJyb3I6ICR7ZS5tZXNzYWdlfWApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIChhd2FpdCB1dGlsLnRvSW5NZW1vcnlCYXNlNjQoY29uZmlnUGF0aCkpLnRvU3RyaW5nKCk7XG4gIH0gZmluYWxseSB7XG4gICAgYXdhaXQgdG1wU2VydmVyLmNsb3NlKCk7XG4gICAgYXdhaXQgZnMucmltcmFmKHRtcFJvb3QpO1xuICB9XG59O1xuXG5PYmplY3QuYXNzaWduKGV4dGVuc2lvbnMsIGNvbW1hbmRzKTtcbmV4cG9ydCB7IGNvbW1hbmRzLCBwYXJzZUNvbW1vbk5hbWUgfTtcbmV4cG9ydCBkZWZhdWx0IGV4dGVuc2lvbnM7XG4iXSwiZmlsZSI6ImxpYi9jb21tYW5kcy9jZXJ0aWZpY2F0ZS5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
|
|
403
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9jZXJ0aWZpY2F0ZS5qcyJdLCJuYW1lcyI6WyJleHRlbnNpb25zIiwiY29tbWFuZHMiLCJDT05GSUdfRVhURU5TSU9OIiwiSE9TVF9QT1JUX1JBTkdFIiwiVE1QU0VSVkVSX1NUQVJUVVBfVElNRU9VVCIsIlNldHRpbmdzIiwiR2VuZXJhbCIsInR5cGUiLCJ2YWx1ZSIsIlByb2ZpbGUiLCJBYm91dCIsIkNlcnRpZmljYXRlX1RydXN0X1NldHRpbmdzIiwiQnV0dG9uIiwiSW5zdGFsbCIsIkFsbG93IiwiRG9uZSIsIlJldHVybl90b19TZXR0aW5ncyIsIkFsZXJ0IiwiZXh0cmFjdENvbW1vbk5hbWUiLCJjZXJ0QnVmZmVyIiwidGVtcENlcnQiLCJ0ZW1wRGlyIiwib3BlbiIsInByZWZpeCIsInN1ZmZpeCIsImZzIiwid3JpdGVGaWxlIiwicGF0aCIsInN0ZG91dCIsInBhcnNlQ29tbW9uTmFtZSIsImVyciIsIkVycm9yIiwibWVzc2FnZSIsInJpbXJhZiIsIkxJQlJFX1NTTF9QQVRURVJOIiwiT1BFTl9TU0xfUEFUVEVSTiIsInN0cmluZ0NlcnRpZmljYXRlIiwicmVzdWx0IiwicmVkdWNlIiwiYWNjIiwiciIsIm1hdGNoIiwiZXhlYyIsInRvTW9iaWxlQ29uZmlnIiwiY29tbW9uTmFtZSIsImdldFVVSUQiLCJ1dGlsIiwidXVpZFY0IiwidG9VcHBlckNhc2UiLCJjb250ZW50VXVpZCIsIlBheWxvYWRDb250ZW50IiwiUGF5bG9hZENlcnRpZmljYXRlRmlsZU5hbWUiLCJQYXlsb2FkRGVzY3JpcHRpb24iLCJQYXlsb2FkRGlzcGxheU5hbWUiLCJQYXlsb2FkSWRlbnRpZmllciIsIlBheWxvYWRUeXBlIiwiUGF5bG9hZFVVSUQiLCJQYXlsb2FkVmVyc2lvbiIsIm9zIiwiaG9zdG5hbWUiLCJzcGxpdCIsIlBheWxvYWRSZW1vdmFsRGlzYWxsb3dlZCIsImNsaWNrRWxlbWVudCIsImRyaXZlciIsImxvY2F0b3IiLCJvcHRpb25zIiwiZWxlbWVudCIsInRpbWVvdXQiLCJza2lwSWZJbnZpc2libGUiLCJsb29rdXBEZWxheSIsImZpbmROYXRpdmVFbGVtZW50T3JFbGVtZW50cyIsIkpTT04iLCJzdHJpbmdpZnkiLCJuYXRpdmVDbGljayIsImluc3RhbGxQcmUxMjJDZXJ0aWZpY2F0ZSIsIkIiLCJkZWxheSIsInRydXN0Q2VydGlmaWNhdGVJblByZWZlcmVuY2VzIiwibmFtZSIsInN3aXRjaExvY2F0b3IiLCJtb2JpbGVTd2lwZSIsImRpcmVjdGlvbiIsInBvc3RBY2NlcHRBbGVydCIsImluc3RhbGxQb3N0MTIyQ2VydGlmaWNhdGUiLCJhY3RpdmF0ZUFwcCIsImlzQ2VydEZvdW5kIiwic3dpcGVOdW0iLCJtb2JpbGVJbnN0YWxsQ2VydGlmaWNhdGUiLCJvcHRzIiwiY29udGVudCIsImlzUm9vdCIsIl8iLCJpc0VtcHR5IiwiaXNTaW11bGF0b3IiLCJtZXRob2ROYW1lIiwiZGV2aWNlIiwic2ltY3RsIiwiQnVmZmVyIiwiZnJvbSIsInRvU3RyaW5nIiwicmF3IiwiZSIsImxvZyIsImRlYnVnIiwiaW5mbyIsImNsaWVudCIsIlB5aWRldmljZSIsInVkaWQiLCJhc3NlcnRFeGlzdHMiLCJpbnN0YWxsUHJvZmlsZSIsInBheWxvYWQiLCJ0bXBSb290Iiwib3BlbkRpciIsInRtcFBvcnQiLCJjb25maWdOYW1lIiwiY29uZmlnUGF0aCIsInJlc29sdmUiLCJ0bXBTZXJ2ZXIiLCJodHRwIiwiY3JlYXRlU2VydmVyIiwicmVzIiwiY29uZmlnRmlsZSIsInJlYWRGaWxlIiwiZW5kIiwiY24iLCJtb2JpbGVDb25maWciLCJwbGlzdCIsInVwZGF0ZVBsaXN0RmlsZSIsImhvc3QiLCJjZXJ0VXJsIiwibGlzdGVuIiwiaWduIiwid2FpdE1zIiwiaW50ZXJ2YWxNcyIsImlzUmVhbERldmljZSIsInByb3h5Q29tbWFuZCIsInVybCIsImlzV2ViQ29udGV4dCIsInNldFVybCIsIm9wZW5VcmwiLCJpc0NlcnRBbHJlYWR5SW5zdGFsbGVkIiwiY29tcGFyZVZlcnNpb25zIiwicGxhdGZvcm1WZXJzaW9uIiwiYnVuZGxlSWQiLCJ3YXJuIiwidG9Jbk1lbW9yeUJhc2U2NCIsImNsb3NlIiwiT2JqZWN0IiwiYXNzaWduIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQSxJQUFJQSxVQUFVLEdBQUcsRUFBakI7QUFBQSxJQUFxQkMsUUFBUSxHQUFHLEVBQWhDOztBQUVBLE1BQU1DLGdCQUFnQixHQUFHLGNBQXpCO0FBQ0EsTUFBTUMsZUFBZSxHQUFHLENBQUMsS0FBRCxFQUFRLEtBQVIsQ0FBeEI7QUFDQSxNQUFNQyx5QkFBeUIsR0FBRyxJQUFsQztBQUNBLE1BQU1DLFFBQVEsR0FBRztBQUNmQyxFQUFBQSxPQUFPLEVBQUU7QUFDUEMsSUFBQUEsSUFBSSxFQUFFLGtCQURDO0FBRVBDLElBQUFBLEtBQUssRUFBRTtBQUZBLEdBRE07QUFLZkMsRUFBQUEsT0FBTyxFQUFFO0FBQ1BGLElBQUFBLElBQUksRUFBRSx1QkFEQztBQUVQQyxJQUFBQSxLQUFLLEVBQUc7QUFGRCxHQUxNO0FBU2ZFLEVBQUFBLEtBQUssRUFBRTtBQUNMSCxJQUFBQSxJQUFJLEVBQUUsa0JBREQ7QUFFTEMsSUFBQUEsS0FBSyxFQUFFO0FBRkYsR0FUUTtBQWFmRyxFQUFBQSwwQkFBMEIsRUFBRTtBQUMxQkosSUFBQUEsSUFBSSxFQUFFLGtCQURvQjtBQUUxQkMsSUFBQUEsS0FBSyxFQUFFO0FBRm1CO0FBYmIsQ0FBakI7QUFrQkEsTUFBTUksTUFBTSxHQUFHO0FBQ2JDLEVBQUFBLE9BQU8sRUFBRTtBQUNQTixJQUFBQSxJQUFJLEVBQUUsa0JBREM7QUFFUEMsSUFBQUEsS0FBSyxFQUFFO0FBRkEsR0FESTtBQUtiTSxFQUFBQSxLQUFLLEVBQUU7QUFDTFAsSUFBQUEsSUFBSSxFQUFFLGtCQUREO0FBRUxDLElBQUFBLEtBQUssRUFBRTtBQUZGLEdBTE07QUFTYk8sRUFBQUEsSUFBSSxFQUFFO0FBQ0pSLElBQUFBLElBQUksRUFBRSxrQkFERjtBQUVKQyxJQUFBQSxLQUFLLEVBQUU7QUFGSCxHQVRPO0FBYWJRLEVBQUFBLGtCQUFrQixFQUFFO0FBQ2xCVCxJQUFBQSxJQUFJLEVBQUUsa0JBRFk7QUFFbEJDLElBQUFBLEtBQUssRUFBRTtBQUZXO0FBYlAsQ0FBZjtBQWtCQSxNQUFNUyxLQUFLLEdBQUc7QUFDWkosRUFBQUEsT0FBTyxFQUFFO0FBQ1BOLElBQUFBLElBQUksRUFBRSxrQkFEQztBQUVQQyxJQUFBQSxLQUFLLEVBQUU7QUFGQTtBQURHLENBQWQ7O0FBUUEsZUFBZVUsaUJBQWYsQ0FBa0NDLFVBQWxDLEVBQThDO0FBQzVDLFFBQU1DLFFBQVEsR0FBRyxNQUFNQyx1QkFBUUMsSUFBUixDQUFhO0FBQ2xDQyxJQUFBQSxNQUFNLEVBQUUsTUFEMEI7QUFFbENDLElBQUFBLE1BQU0sRUFBRTtBQUYwQixHQUFiLENBQXZCOztBQUlBLE1BQUk7QUFDRixVQUFNQyxrQkFBR0MsU0FBSCxDQUFhTixRQUFRLENBQUNPLElBQXRCLEVBQTRCUixVQUE1QixDQUFOO0FBQ0EsVUFBTTtBQUFDUyxNQUFBQTtBQUFELFFBQVcsTUFBTSx3QkFBSyxTQUFMLEVBQWdCLENBQUMsTUFBRCxFQUFTLFFBQVQsRUFBbUIsVUFBbkIsRUFBK0IsS0FBL0IsRUFBc0NSLFFBQVEsQ0FBQ08sSUFBL0MsQ0FBaEIsQ0FBdkI7QUFDQSxXQUFPRSxlQUFlLENBQUNELE1BQUQsQ0FBdEI7QUFDRCxHQUpELENBSUUsT0FBT0UsR0FBUCxFQUFZO0FBQ1osVUFBTSxJQUFJQyxLQUFKLENBQVcsdUZBQUQsR0FDQyxtQkFBa0JELEdBQUcsQ0FBQ0UsT0FBUSxFQUR6QyxDQUFOO0FBRUQsR0FQRCxTQU9VO0FBQ1IsVUFBTVAsa0JBQUdRLE1BQUgsQ0FBVWIsUUFBUSxDQUFDTyxJQUFuQixDQUFOO0FBQ0Q7QUFDRjs7QUFFRCxNQUFNTyxpQkFBaUIsR0FBRyxlQUExQjtBQUNBLE1BQU1DLGdCQUFnQixHQUFHLG1CQUF6Qjs7QUFFQSxTQUFTTixlQUFULENBQTBCTyxpQkFBMUIsRUFBNkM7QUFDM0MsUUFBTUMsTUFBTSxHQUFHLENBQUNILGlCQUFELEVBQW9CQyxnQkFBcEIsRUFBc0NHLE1BQXRDLENBQTZDLENBQUNDLEdBQUQsRUFBTUMsQ0FBTixLQUFZO0FBQ3RFLFFBQUlELEdBQUosRUFBUztBQUNQLGFBQU9BLEdBQVA7QUFDRDs7QUFDRCxVQUFNRSxLQUFLLEdBQUdELENBQUMsQ0FBQ0UsSUFBRixDQUFPTixpQkFBUCxDQUFkO0FBQ0EsV0FBT0ssS0FBSyxJQUFJQSxLQUFLLENBQUMsQ0FBRCxDQUFyQjtBQUNELEdBTmMsRUFNWixJQU5ZLENBQWY7O0FBT0EsTUFBSSxDQUFDSixNQUFMLEVBQWE7QUFDWCxVQUFNLElBQUlOLEtBQUosQ0FBVyxxQ0FBb0NLLGlCQUFrQixVQUFqRSxDQUFOO0FBQ0Q7O0FBQ0QsU0FBT0MsTUFBUDtBQUNEOztBQWNELFNBQVNNLGNBQVQsQ0FBeUJ4QixVQUF6QixFQUFxQ3lCLFVBQXJDLEVBQWlEO0FBQy9DLFFBQU1DLE9BQU8sR0FBRyxNQUFNQyxvQkFBS0MsTUFBTCxHQUFjQyxXQUFkLEVBQXRCOztBQUNBLFFBQU1DLFdBQVcsR0FBR0osT0FBTyxFQUEzQjtBQUNBLFNBQU87QUFDTEssSUFBQUEsY0FBYyxFQUFFLENBQUM7QUFDZkMsTUFBQUEsMEJBQTBCLEVBQUcsR0FBRVAsVUFBVyxNQUQzQjtBQUVmTSxNQUFBQSxjQUFjLEVBQUUvQixVQUZEO0FBR2ZpQyxNQUFBQSxrQkFBa0IsRUFBRSw0QkFITDtBQUlmQyxNQUFBQSxrQkFBa0IsRUFBRVQsVUFKTDtBQUtmVSxNQUFBQSxpQkFBaUIsRUFBRywyQkFBMEJMLFdBQVksRUFMM0M7QUFNZk0sTUFBQUEsV0FBVyxFQUFFLHlCQU5FO0FBT2ZDLE1BQUFBLFdBQVcsRUFBRVAsV0FQRTtBQVFmUSxNQUFBQSxjQUFjLEVBQUU7QUFSRCxLQUFELENBRFg7QUFXTEosSUFBQUEsa0JBQWtCLEVBQUVULFVBWGY7QUFZTFUsSUFBQUEsaUJBQWlCLEVBQUcsR0FBRUksWUFBR0MsUUFBSCxHQUFjQyxLQUFkLENBQW9CLEdBQXBCLEVBQXlCLENBQXpCLENBQTRCLElBQUdmLE9BQU8sRUFBRyxFQVoxRDtBQWFMZ0IsSUFBQUEsd0JBQXdCLEVBQUUsS0FickI7QUFjTE4sSUFBQUEsV0FBVyxFQUFFLGVBZFI7QUFlTEMsSUFBQUEsV0FBVyxFQUFFWCxPQUFPLEVBZmY7QUFnQkxZLElBQUFBLGNBQWMsRUFBRTtBQWhCWCxHQUFQO0FBa0JEOztBQUVELGVBQWVLLFlBQWYsQ0FBNkJDLE1BQTdCLEVBQXFDQyxPQUFyQyxFQUE4Q0MsT0FBTyxHQUFHLEVBQXhELEVBQTREO0FBQzFELE1BQUlDLE9BQU8sR0FBRyxJQUFkO0FBQ0EsUUFBTTtBQUNKQyxJQUFBQSxPQUFPLEdBQUcsSUFETjtBQUVKQyxJQUFBQSxlQUFlLEdBQUc7QUFGZCxNQUdGSCxPQUhKO0FBSUEsUUFBTUksV0FBVyxHQUFHLEdBQXBCOztBQUNBLE1BQUk7QUFDRkgsSUFBQUEsT0FBTyxHQUFHLE1BQU0sNkJBQWNDLE9BQU8sR0FBR0UsV0FBVixHQUF3QixDQUF4QixHQUE0QkYsT0FBTyxHQUFHRSxXQUFwRCxFQUFpRUEsV0FBakUsRUFDZCxNQUFNTixNQUFNLENBQUNPLDJCQUFQLENBQW1DTixPQUFPLENBQUN6RCxJQUEzQyxFQUFpRHlELE9BQU8sQ0FBQ3hELEtBQXpELEVBQWdFLEtBQWhFLENBRFEsQ0FBaEI7QUFHRCxHQUpELENBSUUsT0FBT3NCLEdBQVAsRUFBWTtBQUNaLFFBQUlzQyxlQUFKLEVBQXFCO0FBQ25CLGFBQU8sS0FBUDtBQUNEOztBQUNELFVBQU0sSUFBSXJDLEtBQUosQ0FBVyxlQUFjd0MsSUFBSSxDQUFDQyxTQUFMLENBQWVSLE9BQWYsQ0FBd0IsV0FBVUcsT0FBUSxZQUFuRSxDQUFOO0FBQ0Q7O0FBQ0QsUUFBTUosTUFBTSxDQUFDVSxXQUFQLENBQW1CUCxPQUFuQixDQUFOO0FBQ0EsU0FBTyxJQUFQO0FBQ0Q7O0FBRUQsZUFBZVEsd0JBQWYsQ0FBeUNYLE1BQXpDLEVBQWlEO0FBRS9DLFFBQU1ELFlBQVksQ0FBQ0MsTUFBRCxFQUFTbkQsTUFBTSxDQUFDRSxLQUFoQixFQUF1QjtBQUV2Q3FELElBQUFBLE9BQU8sRUFBRTtBQUY4QixHQUF2QixDQUFsQjtBQUtBLFFBQU1RLGtCQUFFQyxLQUFGLENBQVEsSUFBUixDQUFOOztBQUdBLE1BQUksRUFBQyxNQUFNZCxZQUFZLENBQUNDLE1BQUQsRUFBU25ELE1BQU0sQ0FBQ0MsT0FBaEIsRUFBeUI7QUFDOUN1RCxJQUFBQSxlQUFlLEVBQUU7QUFENkIsR0FBekIsQ0FBbkIsQ0FBSixFQUVJO0FBQ0YsV0FBTyxLQUFQO0FBQ0Q7O0FBR0QsUUFBTU8sa0JBQUVDLEtBQUYsQ0FBUSxJQUFSLENBQU47QUFDQSxRQUFNZCxZQUFZLENBQUNDLE1BQUQsRUFBU25ELE1BQU0sQ0FBQ0MsT0FBaEIsQ0FBbEI7QUFFQSxRQUFNaUQsWUFBWSxDQUFDQyxNQUFELEVBQVM5QyxLQUFLLENBQUNKLE9BQWYsQ0FBbEI7QUFFQSxRQUFNaUQsWUFBWSxDQUFDQyxNQUFELEVBQVNuRCxNQUFNLENBQUNHLElBQWhCLENBQWxCO0FBQ0EsU0FBTyxJQUFQO0FBQ0Q7O0FBRUQsZUFBZThELDZCQUFmLENBQThDZCxNQUE5QyxFQUFzRGUsSUFBdEQsRUFBNEQ7QUFDMUQsUUFBTWhCLFlBQVksQ0FBQ0MsTUFBRCxFQUFTMUQsUUFBUSxDQUFDQyxPQUFsQixDQUFsQjtBQUNBLFFBQU13RCxZQUFZLENBQUNDLE1BQUQsRUFBUzFELFFBQVEsQ0FBQ0ssS0FBbEIsQ0FBbEI7QUFDQSxRQUFNcUUsYUFBYSxHQUFHO0FBQ3BCeEUsSUFBQUEsSUFBSSxFQUFFLGtCQURjO0FBRXBCQyxJQUFBQSxLQUFLLEVBQUcsc0NBQXFDc0UsSUFBSztBQUY5QixHQUF0QjtBQUlBLFFBQU0scUJBQU0sQ0FBTixFQUFTLFlBQVk7QUFDekIsVUFBTWYsTUFBTSxDQUFDaUIsV0FBUCxDQUFtQjtBQUN2QmQsTUFBQUEsT0FBTyxFQUFFLE1BQU1ILE1BQU0sQ0FBQ08sMkJBQVAsQ0FBbUMsWUFBbkMsRUFBaUQsc0JBQWpELEVBQXlFLEtBQXpFLENBRFE7QUFFdkJXLE1BQUFBLFNBQVMsRUFBRTtBQUZZLEtBQW5CLENBQU47QUFJQSxVQUFNbkIsWUFBWSxDQUFDQyxNQUFELEVBQVMxRCxRQUFRLENBQUNNLDBCQUFsQixFQUE4QztBQUM5RHdELE1BQUFBLE9BQU8sRUFBRTtBQURxRCxLQUE5QyxDQUFsQjtBQUlBLFVBQU1KLE1BQU0sQ0FBQ08sMkJBQVAsQ0FBbUNTLGFBQWEsQ0FBQ3hFLElBQWpELEVBQXVEd0UsYUFBYSxDQUFDdkUsS0FBckUsRUFBNEUsS0FBNUUsQ0FBTjtBQUNELEdBVkssQ0FBTjs7QUFZQSxNQUFJLE1BQU1zRCxZQUFZLENBQUNDLE1BQUQsRUFBUztBQUM3QnhELElBQUFBLElBQUksRUFBRXdFLGFBQWEsQ0FBQ3hFLElBRFM7QUFFN0JDLElBQUFBLEtBQUssRUFBRyxHQUFFdUUsYUFBYSxDQUFDdkUsS0FBTTtBQUZELEdBQVQsRUFHbkI7QUFDRDJELElBQUFBLE9BQU8sRUFBRSxJQURSO0FBRURDLElBQUFBLGVBQWUsRUFBRTtBQUZoQixHQUhtQixDQUF0QixFQU1JO0FBQ0YsVUFBTUwsTUFBTSxDQUFDbUIsZUFBUCxFQUFOO0FBQ0Q7QUFDRjs7QUFFRCxlQUFlQyx5QkFBZixDQUEwQ3BCLE1BQTFDLEVBQWtEZSxJQUFsRCxFQUF3RDtBQUV0RCxRQUFNaEIsWUFBWSxDQUFDQyxNQUFELEVBQVNuRCxNQUFNLENBQUNFLEtBQWhCLEVBQXVCO0FBRXZDcUQsSUFBQUEsT0FBTyxFQUFFO0FBRjhCLEdBQXZCLENBQWxCO0FBS0EsUUFBTVEsa0JBQUVDLEtBQUYsQ0FBUSxJQUFSLENBQU47QUFFQSxRQUFNYixNQUFNLENBQUNtQixlQUFQLEVBQU47QUFDQSxRQUFNbkIsTUFBTSxDQUFDcUIsV0FBUCxDQUFtQix1QkFBbkIsQ0FBTjtBQUNBLFFBQU10QixZQUFZLENBQUNDLE1BQUQsRUFBUzFELFFBQVEsQ0FBQ0MsT0FBbEIsQ0FBbEI7QUFDQSxRQUFNd0QsWUFBWSxDQUFDQyxNQUFELEVBQVMxRCxRQUFRLENBQUNJLE9BQWxCLENBQWxCO0FBRUEsTUFBSTRFLFdBQVcsR0FBRyxLQUFsQjs7QUFDQSxPQUFLLElBQUlDLFFBQVEsR0FBRyxDQUFwQixFQUF1QkEsUUFBUSxHQUFHLENBQWxDLEVBQXFDLEVBQUVBLFFBQXZDLEVBQWlEO0FBQy9DLFFBQUksTUFBTXhCLFlBQVksQ0FBQ0MsTUFBRCxFQUFTO0FBQzdCeEQsTUFBQUEsSUFBSSxFQUFFLGtCQUR1QjtBQUU3QkMsTUFBQUEsS0FBSyxFQUFHLHNDQUFxQ3NFLElBQUs7QUFGckIsS0FBVCxFQUduQjtBQUNEWCxNQUFBQSxPQUFPLEVBQUUsR0FEUjtBQUVEQyxNQUFBQSxlQUFlLEVBQUU7QUFGaEIsS0FIbUIsQ0FBdEIsRUFNSTtBQUNGaUIsTUFBQUEsV0FBVyxHQUFHLElBQWQ7QUFDQTtBQUNEOztBQUVELFVBQU10QixNQUFNLENBQUNpQixXQUFQLENBQW1CO0FBQ3ZCZCxNQUFBQSxPQUFPLEVBQUUsTUFBTUgsTUFBTSxDQUFDTywyQkFBUCxDQUFtQyxZQUFuQyxFQUFpRCxzQkFBakQsRUFBeUUsS0FBekUsQ0FEUTtBQUV2QlcsTUFBQUEsU0FBUyxFQUFFO0FBRlksS0FBbkIsQ0FBTjtBQUlEOztBQUNELE1BQUksQ0FBQ0ksV0FBTCxFQUFrQjtBQUNoQixVQUFNLElBQUl0RCxLQUFKLENBQVcsSUFBRytDLElBQUssNENBQW5CLENBQU47QUFDRDs7QUFHRCxNQUFJLEVBQUMsTUFBTWhCLFlBQVksQ0FBQ0MsTUFBRCxFQUFTbkQsTUFBTSxDQUFDQyxPQUFoQixFQUF5QjtBQUM5Q3VELElBQUFBLGVBQWUsRUFBRTtBQUQ2QixHQUF6QixDQUFuQixDQUFKLEVBRUk7QUFDRixXQUFPLEtBQVA7QUFDRDs7QUFDRCxRQUFNTyxrQkFBRUMsS0FBRixDQUFRLElBQVIsQ0FBTjtBQUVBLFFBQU1kLFlBQVksQ0FBQ0MsTUFBRCxFQUFTbkQsTUFBTSxDQUFDQyxPQUFoQixDQUFsQjtBQUVBLFFBQU1pRCxZQUFZLENBQUNDLE1BQUQsRUFBUzlDLEtBQUssQ0FBQ0osT0FBZixDQUFsQjtBQUVBLFFBQU1pRCxZQUFZLENBQUNDLE1BQUQsRUFBU25ELE1BQU0sQ0FBQ0csSUFBaEIsQ0FBbEI7QUFFQSxTQUFPLElBQVA7QUFDRDs7QUFnQ0RkLFFBQVEsQ0FBQ3NGLHdCQUFULEdBQW9DLGVBQWVBLHdCQUFmLENBQXlDQyxJQUFJLEdBQUcsRUFBaEQsRUFBb0Q7QUFDdEYsUUFBTTtBQUNKQyxJQUFBQSxPQURJO0FBRUo3QyxJQUFBQSxVQUZJO0FBR0o4QyxJQUFBQSxNQUFNLEdBQUc7QUFITCxNQUlGRixJQUpKOztBQUtBLE1BQUlHLGdCQUFFQyxPQUFGLENBQVVILE9BQVYsQ0FBSixFQUF3QjtBQUN0QixVQUFNLElBQUkxRCxLQUFKLENBQVUseUNBQVYsQ0FBTjtBQUNEOztBQUVELE1BQUksS0FBSzhELFdBQUwsRUFBSixFQUF3QjtBQUN0QixRQUFJO0FBQ0YsWUFBTUMsVUFBVSxHQUFHSixNQUFNLEdBQUcsb0JBQUgsR0FBMEIsZ0JBQW5EO0FBQ0EsWUFBTSxLQUFLRixJQUFMLENBQVVPLE1BQVYsQ0FBaUJDLE1BQWpCLENBQXdCRixVQUF4QixFQUNKRyxNQUFNLENBQUNDLElBQVAsQ0FBWVQsT0FBWixFQUFxQixRQUFyQixFQUErQlUsUUFBL0IsRUFESSxFQUN1QztBQUFDQyxRQUFBQSxHQUFHLEVBQUU7QUFBTixPQUR2QyxDQUFOO0FBR0E7QUFDRCxLQU5ELENBTUUsT0FBT0MsQ0FBUCxFQUFVO0FBQ1ZDLHNCQUFJQyxLQUFKLENBQVVGLENBQVY7O0FBQ0FDLHNCQUFJRSxJQUFKLENBQVUsK0NBQUQsR0FDTixxQ0FESDtBQUVEO0FBQ0YsR0FaRCxNQVlPO0FBQ0wsVUFBTUMsTUFBTSxHQUFHLElBQUlDLDBCQUFKLENBQWMsS0FBS2xCLElBQUwsQ0FBVW1CLElBQXhCLENBQWY7O0FBQ0EsUUFBSSxNQUFNRixNQUFNLENBQUNHLFlBQVAsQ0FBb0IsS0FBcEIsQ0FBVixFQUFzQztBQUNwQyxZQUFNSCxNQUFNLENBQUNJLGNBQVAsQ0FBc0I7QUFBQ0MsUUFBQUEsT0FBTyxFQUFFYixNQUFNLENBQUNDLElBQVAsQ0FBWVQsT0FBWixFQUFxQixRQUFyQjtBQUFWLE9BQXRCLENBQU47QUFDQTtBQUNELEtBSEQsTUFHTztBQUNMYSxzQkFBSUUsSUFBSixDQUFTLGdEQUNQLGtEQURGO0FBRUQ7QUFDRjs7QUFFRCxRQUFNTyxPQUFPLEdBQUcsTUFBTTFGLHVCQUFRMkYsT0FBUixFQUF0QjtBQUNBLFFBQU1DLE9BQU8sR0FBRyxNQUFNLG9DQUFrQjlHLGVBQWUsQ0FBQyxDQUFELENBQWpDLEVBQXNDQSxlQUFlLENBQUMsQ0FBRCxDQUFyRCxDQUF0QjtBQUNBLFFBQU0rRyxVQUFVLEdBQUksVUFBU2hILGdCQUFpQixFQUE5Qzs7QUFDQSxRQUFNaUgsVUFBVSxHQUFHeEYsY0FBS3lGLE9BQUwsQ0FBYUwsT0FBYixFQUFzQkcsVUFBdEIsQ0FBbkI7O0FBQ0EsUUFBTUcsU0FBUyxHQUFHQyxjQUFLQyxZQUFMLENBQWtCLGdCQUFnQjVCLENBQWhCLEVBQW1CNkIsR0FBbkIsRUFBd0I7QUFDMUQsVUFBTUMsVUFBVSxHQUFHLE1BQU1oRyxrQkFBR2lHLFFBQUgsQ0FBWVAsVUFBWixDQUF6QjtBQUNBSyxJQUFBQSxHQUFHLENBQUNHLEdBQUosQ0FBUUYsVUFBUjtBQUNELEdBSGlCLENBQWxCOztBQUlBLE1BQUk7QUFDRixVQUFNdEcsVUFBVSxHQUFHOEUsTUFBTSxDQUFDQyxJQUFQLENBQVlULE9BQVosRUFBcUIsUUFBckIsQ0FBbkI7QUFDQSxVQUFNbUMsRUFBRSxHQUFHaEYsVUFBVSxLQUFJLE1BQU0xQixpQkFBaUIsQ0FBQ0MsVUFBRCxDQUEzQixDQUFyQjtBQUNBLFVBQU0wRyxZQUFZLEdBQUdsRixjQUFjLENBQUN4QixVQUFELEVBQWF5RyxFQUFiLENBQW5DOztBQUNBLFFBQUk7QUFDRixZQUFNRSxxQkFBTUMsZUFBTixDQUFzQlosVUFBdEIsRUFBa0NVLFlBQWxDLEVBQWdELEtBQWhELEVBQXVELEtBQXZELENBQU47QUFDRCxLQUZELENBRUUsT0FBTy9GLEdBQVAsRUFBWTtBQUNaLFlBQU0sSUFBSUMsS0FBSixDQUFXLHlDQUF3Q29GLFVBQVcsS0FBcEQsR0FDQyxtQkFBa0JyRixHQUFHLENBQUNFLE9BQVEsRUFEekMsQ0FBTjtBQUVEOztBQUVELFFBQUk7QUFDRixZQUFNZ0csSUFBSSxHQUFHdEUsWUFBR0MsUUFBSCxFQUFiOztBQUNBLFlBQU1zRSxPQUFPLEdBQUksVUFBU0QsSUFBSyxJQUFHZixPQUFRLElBQUdDLFVBQVcsRUFBeEQ7QUFDQSxZQUFNRyxTQUFTLENBQUNhLE1BQVYsQ0FBaUJqQixPQUFqQixDQUFOOztBQUNBLFVBQUk7QUFDRixjQUFNLGdDQUFpQixZQUFZO0FBQ2pDLGNBQUk7QUFDRixtQkFBTyxDQUFDLE1BQU0sa0NBQWdCQSxPQUFoQixFQUF5QmUsSUFBekIsQ0FBUCxNQUEyQyxNQUFsRDtBQUNELFdBRkQsQ0FFRSxPQUFPRyxHQUFQLEVBQVk7QUFDWixtQkFBTyxLQUFQO0FBQ0Q7QUFDRixTQU5LLEVBTUg7QUFDREMsVUFBQUEsTUFBTSxFQUFFaEkseUJBRFA7QUFFRGlJLFVBQUFBLFVBQVUsRUFBRTtBQUZYLFNBTkcsQ0FBTjs7QUFVQS9CLHdCQUFJQyxLQUFKLENBQVcsaURBQWdEeUIsSUFBSyxJQUFHZixPQUFRLEVBQTNFO0FBQ0QsT0FaRCxDQVlFLE9BQU9aLENBQVAsRUFBVTtBQUNWLGNBQU0sSUFBSXRFLEtBQUosQ0FBVyx3REFBdURpRyxJQUFLLElBQUdmLE9BQVEsR0FBbEYsQ0FBTjtBQUNEOztBQUNELFVBQUksS0FBS3FCLFlBQUwsRUFBSixFQUF5QjtBQUN2QixZQUFJO0FBQ0YsZ0JBQU0sS0FBS0MsWUFBTCxDQUFrQixNQUFsQixFQUEwQixNQUExQixFQUFrQztBQUFDQyxZQUFBQSxHQUFHLEVBQUVQO0FBQU4sV0FBbEMsQ0FBTjtBQUNELFNBRkQsQ0FFRSxPQUFPbkcsR0FBUCxFQUFZO0FBQ1osY0FBSSxLQUFLMkcsWUFBTCxFQUFKLEVBQXlCO0FBRXZCLGtCQUFNLEtBQUtDLE1BQUwsQ0FBWVQsT0FBWixDQUFOO0FBQ0QsV0FIRCxNQUdPO0FBQ0wsa0JBQU1uRyxHQUFOO0FBQ0Q7QUFDRjtBQUNGLE9BWEQsTUFXTztBQUNMLGNBQU0sS0FBSzBELElBQUwsQ0FBVU8sTUFBVixDQUFpQjRDLE9BQWpCLENBQXlCVixPQUF6QixDQUFOO0FBQ0Q7O0FBRUQsVUFBSVcsc0JBQXNCLEdBQUcsS0FBN0I7O0FBQ0EsVUFBSTlGLG9CQUFLK0YsZUFBTCxDQUFxQixLQUFLckQsSUFBTCxDQUFVc0QsZUFBL0IsRUFBZ0QsSUFBaEQsRUFBc0QsTUFBdEQsQ0FBSixFQUFtRTtBQUNqRSxZQUFJLE1BQU0zRCx5QkFBeUIsQ0FBQyxJQUFELEVBQU95QyxFQUFQLENBQW5DLEVBQStDO0FBQzdDLGdCQUFNOUQsWUFBWSxDQUFDLElBQUQsRUFBT3pELFFBQVEsQ0FBQ0ksT0FBaEIsQ0FBbEI7QUFDQSxnQkFBTW9FLDZCQUE2QixDQUFDLElBQUQsRUFBTytDLEVBQVAsQ0FBbkM7QUFDRCxTQUhELE1BR087QUFDTGdCLFVBQUFBLHNCQUFzQixHQUFHLElBQXpCO0FBQ0Q7QUFDRixPQVBELE1BT087QUFDTCxZQUFJLE1BQU1sRSx3QkFBd0IsQ0FBQyxJQUFELENBQWxDLEVBQTBDO0FBQ3hDLGdCQUFNWixZQUFZLENBQUMsSUFBRCxFQUFPbEQsTUFBTSxDQUFDSSxrQkFBZCxDQUFsQjtBQUNBLGdCQUFNNkQsNkJBQTZCLENBQUMsSUFBRCxFQUFPK0MsRUFBUCxDQUFuQztBQUNELFNBSEQsTUFHTztBQUNMZ0IsVUFBQUEsc0JBQXNCLEdBQUcsSUFBekI7QUFDRDtBQUNGOztBQUNELFVBQUlBLHNCQUFKLEVBQTRCO0FBQzFCdEMsd0JBQUlFLElBQUosQ0FBVSxzQkFBcUJvQixFQUFHLHFEQUFsQztBQUNEO0FBQ0YsS0FyREQsU0FxRFU7QUFDUixVQUFJLEtBQUtwQyxJQUFMLENBQVV1RCxRQUFkLEVBQXdCO0FBQ3RCLFlBQUk7QUFDRixnQkFBTSxLQUFLM0QsV0FBTCxDQUFpQixLQUFLSSxJQUFMLENBQVV1RCxRQUEzQixDQUFOO0FBQ0QsU0FGRCxDQUVFLE9BQU8xQyxDQUFQLEVBQVU7QUFDVkMsMEJBQUkwQyxJQUFKLENBQVUsbUNBQWtDLEtBQUt4RCxJQUFMLENBQVV1RCxRQUFTLHNCQUFxQjFDLENBQUMsQ0FBQ3JFLE9BQVEsRUFBOUY7QUFDRDtBQUNGO0FBQ0Y7O0FBRUQsV0FBTyxDQUFDLE1BQU1jLG9CQUFLbUcsZ0JBQUwsQ0FBc0I5QixVQUF0QixDQUFQLEVBQTBDaEIsUUFBMUMsRUFBUDtBQUNELEdBM0VELFNBMkVVO0FBQ1IsVUFBTWtCLFNBQVMsQ0FBQzZCLEtBQVYsRUFBTjtBQUNBLFVBQU16SCxrQkFBR1EsTUFBSCxDQUFVOEUsT0FBVixDQUFOO0FBQ0Q7QUFDRixDQXhIRDs7QUEwSEFvQyxNQUFNLENBQUNDLE1BQVAsQ0FBY3BKLFVBQWQsRUFBMEJDLFFBQTFCO2VBRWVELFUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgZnMsIHBsaXN0LCB0ZW1wRGlyLCB1dGlsIH0gZnJvbSAnYXBwaXVtLXN1cHBvcnQnO1xuaW1wb3J0IHsgcmV0cnlJbnRlcnZhbCwgcmV0cnksIHdhaXRGb3JDb25kaXRpb24gfSBmcm9tICdhc3luY2JveCc7XG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5pbXBvcnQgbG9nIGZyb20gJy4uL2xvZ2dlcic7XG5pbXBvcnQgb3MgZnJvbSAnb3MnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgaHR0cCBmcm9tICdodHRwJztcbmltcG9ydCB7IGV4ZWMgfSBmcm9tICd0ZWVuX3Byb2Nlc3MnO1xuaW1wb3J0IHsgZmluZEFQb3J0Tm90SW5Vc2UsIGNoZWNrUG9ydFN0YXR1cyB9IGZyb20gJ3BvcnRzY2FubmVyJztcbmltcG9ydCBQeWlkZXZpY2UgZnJvbSAnLi4vcHktaW9zLWRldmljZS1jbGllbnQnO1xuXG5sZXQgZXh0ZW5zaW9ucyA9IHt9LCBjb21tYW5kcyA9IHt9O1xuXG5jb25zdCBDT05GSUdfRVhURU5TSU9OID0gJ21vYmlsZWNvbmZpZyc7XG5jb25zdCBIT1NUX1BPUlRfUkFOR0UgPSBbMzgyMDAsIDM4Mjk5XTtcbmNvbnN0IFRNUFNFUlZFUl9TVEFSVFVQX1RJTUVPVVQgPSA1MDAwO1xuY29uc3QgU2V0dGluZ3MgPSB7XG4gIEdlbmVyYWw6IHtcbiAgICB0eXBlOiAnYWNjZXNzaWJpbGl0eSBpZCcsXG4gICAgdmFsdWU6ICdHZW5lcmFsJyxcbiAgfSxcbiAgUHJvZmlsZToge1xuICAgIHR5cGU6ICctaW9zIHByZWRpY2F0ZSBzdHJpbmcnLFxuICAgIHZhbHVlOiBgbmFtZSBCRUdJTlNXSVRIICdQcm9maWxlJ2AsXG4gIH0sXG4gIEFib3V0OiB7XG4gICAgdHlwZTogJ2FjY2Vzc2liaWxpdHkgaWQnLFxuICAgIHZhbHVlOiAnQWJvdXQnLFxuICB9LFxuICBDZXJ0aWZpY2F0ZV9UcnVzdF9TZXR0aW5nczoge1xuICAgIHR5cGU6ICdhY2Nlc3NpYmlsaXR5IGlkJyxcbiAgICB2YWx1ZTogJ0NlcnRpZmljYXRlIFRydXN0IFNldHRpbmdzJyxcbiAgfSxcbn07XG5jb25zdCBCdXR0b24gPSB7XG4gIEluc3RhbGw6IHtcbiAgICB0eXBlOiAnYWNjZXNzaWJpbGl0eSBpZCcsXG4gICAgdmFsdWU6ICdJbnN0YWxsJyxcbiAgfSxcbiAgQWxsb3c6IHtcbiAgICB0eXBlOiAnYWNjZXNzaWJpbGl0eSBpZCcsXG4gICAgdmFsdWU6ICdBbGxvdycsXG4gIH0sXG4gIERvbmU6IHtcbiAgICB0eXBlOiAnYWNjZXNzaWJpbGl0eSBpZCcsXG4gICAgdmFsdWU6ICdEb25lJyxcbiAgfSxcbiAgUmV0dXJuX3RvX1NldHRpbmdzOiB7XG4gICAgdHlwZTogJ2FjY2Vzc2liaWxpdHkgaWQnLFxuICAgIHZhbHVlOiAnUmV0dXJuIHRvIFNldHRpbmdzJyxcbiAgfSxcbn07XG5jb25zdCBBbGVydCA9IHtcbiAgSW5zdGFsbDoge1xuICAgIHR5cGU6ICctaW9zIGNsYXNzIGNoYWluJyxcbiAgICB2YWx1ZTogJyoqL1hDVUlFbGVtZW50VHlwZUFueVtgdHlwZSA9PSBcXCdYQ1VJRWxlbWVudFR5cGVBbGVydFxcJyBPUiB0eXBlID09IFxcJ1hDVUlFbGVtZW50VHlwZVNoZWV0XFwnYF0vKiovWENVSUVsZW1lbnRUeXBlQnV0dG9uW2BsYWJlbCA9PSBcXCdJbnN0YWxsXFwnYF0nLFxuICB9LFxufTtcblxuXG5hc3luYyBmdW5jdGlvbiBleHRyYWN0Q29tbW9uTmFtZSAoY2VydEJ1ZmZlcikge1xuICBjb25zdCB0ZW1wQ2VydCA9IGF3YWl0IHRlbXBEaXIub3Blbih7XG4gICAgcHJlZml4OiAnY2VydCcsXG4gICAgc3VmZml4OiAnLmNlcidcbiAgfSk7XG4gIHRyeSB7XG4gICAgYXdhaXQgZnMud3JpdGVGaWxlKHRlbXBDZXJ0LnBhdGgsIGNlcnRCdWZmZXIpO1xuICAgIGNvbnN0IHtzdGRvdXR9ID0gYXdhaXQgZXhlYygnb3BlbnNzbCcsIFsneDUwOScsICctbm9vdXQnLCAnLXN1YmplY3QnLCAnLWluJywgdGVtcENlcnQucGF0aF0pO1xuICAgIHJldHVybiBwYXJzZUNvbW1vbk5hbWUoc3Rkb3V0KTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgcGFyc2UgY29tbW9uIG5hbWUgdmFsdWUgZnJvbSB0aGUgY2VydGlmaWNhdGUuIElzIGl0IHZhbGlkIGFuZCBiYXNlNjQtZW5jb2RlZD8gYCArXG4gICAgICAgICAgICAgICAgICAgIGBPcmlnaW5hbCBlcnJvcjogJHtlcnIubWVzc2FnZX1gKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBhd2FpdCBmcy5yaW1yYWYodGVtcENlcnQucGF0aCk7XG4gIH1cbn1cblxuY29uc3QgTElCUkVfU1NMX1BBVFRFUk4gPSAvXFwvQ049KFteXFwvXSspLzsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11c2VsZXNzLWVzY2FwZVxuY29uc3QgT1BFTl9TU0xfUEFUVEVSTiA9IC8sXFxzQ05cXHM9XFxzKFteLF0rKS87XG5cbmZ1bmN0aW9uIHBhcnNlQ29tbW9uTmFtZSAoc3RyaW5nQ2VydGlmaWNhdGUpIHtcbiAgY29uc3QgcmVzdWx0ID0gW0xJQlJFX1NTTF9QQVRURVJOLCBPUEVOX1NTTF9QQVRURVJOXS5yZWR1Y2UoKGFjYywgcikgPT4ge1xuICAgIGlmIChhY2MpIHtcbiAgICAgIHJldHVybiBhY2M7XG4gICAgfVxuICAgIGNvbnN0IG1hdGNoID0gci5leGVjKHN0cmluZ0NlcnRpZmljYXRlKTtcbiAgICByZXR1cm4gbWF0Y2ggJiYgbWF0Y2hbMV07XG4gIH0sIG51bGwpO1xuICBpZiAoIXJlc3VsdCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgVGhlcmUgaXMgbm8gY29tbW9uIG5hbWUgdmFsdWUgaW4gJyR7c3RyaW5nQ2VydGlmaWNhdGV9JyBvdXRwdXRgKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIEdlbmVyYXRlcyBBcHBsZSdzIG92ZXItdGhlLWFpciBjb25maWd1cmF0aW9uIHByb2ZpbGVcbiAqIGZvciBjZXJ0aWZpY2F0ZSBkZXBsb3ltZW50IGJhc2VkIG9uIHRoZSBnaXZlbiBQRU0gY2VydGlmaWNhdGUgY29udGVudC5cbiAqIFJlYWQgaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2xpYnJhcnkvY29udGVudC9kb2N1bWVudGF0aW9uL05ldHdvcmtpbmdJbnRlcm5ldC9Db25jZXB0dWFsL2lQaG9uZU9UQUNvbmZpZ3VyYXRpb24vSW50cm9kdWN0aW9uL0ludHJvZHVjdGlvbi5odG1sXG4gKiBmb3IgbW9yZSBkZXRhaWxzIG9uIHN1Y2ggcHJvZmlsZXMuXG4gKlxuICogQHBhcmFtIHtCdWZmZXJ9IGNlcnRCdWZmZXIgLSBUaGUgYWN0dWFsIGNvbnRlbnQgb2YgUEVNIGNlcnRpZmljYXRlIGVuY29kZWQgaW50byBOb2RlSlMgYnVmZmVyXG4gKiBAcGFyYW0ge3N0cmluZ30gY29tbW9uTmFtZSAtIENlcnRpZmljYXRlJ3MgY29tbW9uIG5hbWVcbiAqIEByZXR1cm5zIHtPYmplY3R9IFRoZSBlbmNvZGVkIHN0cnVjdHVyZSBvZiB0aGUgZ2l2ZW4gY2VydGlmaWNhdGUsIHdoaWNoIGlzIHJlYWR5IHRvIGJlIHBhc3NlZFxuICogYXMgYW4gYXJndW1lbnQgdG8gcGxpc3QgYnVpbGRlclxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBnaXZlbiBjZXJ0aWZpY2F0ZSBjYW5ub3QgYmUgcGFyc2VkXG4gKi9cbmZ1bmN0aW9uIHRvTW9iaWxlQ29uZmlnIChjZXJ0QnVmZmVyLCBjb21tb25OYW1lKSB7XG4gIGNvbnN0IGdldFVVSUQgPSAoKSA9PiB1dGlsLnV1aWRWNCgpLnRvVXBwZXJDYXNlKCk7XG4gIGNvbnN0IGNvbnRlbnRVdWlkID0gZ2V0VVVJRCgpO1xuICByZXR1cm4ge1xuICAgIFBheWxvYWRDb250ZW50OiBbe1xuICAgICAgUGF5bG9hZENlcnRpZmljYXRlRmlsZU5hbWU6IGAke2NvbW1vbk5hbWV9LmNlcmAsXG4gICAgICBQYXlsb2FkQ29udGVudDogY2VydEJ1ZmZlcixcbiAgICAgIFBheWxvYWREZXNjcmlwdGlvbjogJ0FkZHMgYSBDQSByb290IGNlcnRpZmljYXRlJyxcbiAgICAgIFBheWxvYWREaXNwbGF5TmFtZTogY29tbW9uTmFtZSxcbiAgICAgIFBheWxvYWRJZGVudGlmaWVyOiBgY29tLmFwcGxlLnNlY3VyaXR5LnJvb3QuJHtjb250ZW50VXVpZH1gLFxuICAgICAgUGF5bG9hZFR5cGU6ICdjb20uYXBwbGUuc2VjdXJpdHkucm9vdCcsXG4gICAgICBQYXlsb2FkVVVJRDogY29udGVudFV1aWQsXG4gICAgICBQYXlsb2FkVmVyc2lvbjogMVxuICAgIH1dLFxuICAgIFBheWxvYWREaXNwbGF5TmFtZTogY29tbW9uTmFtZSxcbiAgICBQYXlsb2FkSWRlbnRpZmllcjogYCR7b3MuaG9zdG5hbWUoKS5zcGxpdCgnLicpWzBdfS4ke2dldFVVSUQoKX1gLFxuICAgIFBheWxvYWRSZW1vdmFsRGlzYWxsb3dlZDogZmFsc2UsXG4gICAgUGF5bG9hZFR5cGU6ICdDb25maWd1cmF0aW9uJyxcbiAgICBQYXlsb2FkVVVJRDogZ2V0VVVJRCgpLFxuICAgIFBheWxvYWRWZXJzaW9uOiAxXG4gIH07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNsaWNrRWxlbWVudCAoZHJpdmVyLCBsb2NhdG9yLCBvcHRpb25zID0ge30pIHtcbiAgbGV0IGVsZW1lbnQgPSBudWxsO1xuICBjb25zdCB7XG4gICAgdGltZW91dCA9IDUwMDAsXG4gICAgc2tpcElmSW52aXNpYmxlID0gZmFsc2VcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGxvb2t1cERlbGF5ID0gNTAwO1xuICB0cnkge1xuICAgIGVsZW1lbnQgPSBhd2FpdCByZXRyeUludGVydmFsKHRpbWVvdXQgPCBsb29rdXBEZWxheSA/IDEgOiB0aW1lb3V0IC8gbG9va3VwRGVsYXksIGxvb2t1cERlbGF5LFxuICAgICAgKCkgPT4gZHJpdmVyLmZpbmROYXRpdmVFbGVtZW50T3JFbGVtZW50cyhsb2NhdG9yLnR5cGUsIGxvY2F0b3IudmFsdWUsIGZhbHNlKVxuICAgICk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGlmIChza2lwSWZJbnZpc2libGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZmluZCAke0pTT04uc3RyaW5naWZ5KGxvY2F0b3IpfSB3aXRoaW4gJHt0aW1lb3V0fW1zIHRpbWVvdXRgKTtcbiAgfVxuICBhd2FpdCBkcml2ZXIubmF0aXZlQ2xpY2soZWxlbWVudCk7XG4gIHJldHVybiB0cnVlO1xufVxuXG5hc3luYyBmdW5jdGlvbiBpbnN0YWxsUHJlMTIyQ2VydGlmaWNhdGUgKGRyaXZlcikge1xuICAvLyBBY2NlcHQgU2FmYXJpIGFsZXJ0XG4gIGF3YWl0IGNsaWNrRWxlbWVudChkcml2ZXIsIEJ1dHRvbi5BbGxvdywge1xuICAgIC8vIGNlcnRpZmljYXRlIGxvYWQgbWlnaHQgdGFrZSBzb21lIHRpbWUgb24gc2xvdyBtYWNoaW5lc1xuICAgIHRpbWVvdXQ6IDE1MDAwLFxuICB9KTtcbiAgLy8gV2FpdCB1bnRpbCBQcmVmZXJlbmNlcyBhcmUgb3BlbmVkXG4gIGF3YWl0IEIuZGVsYXkoMjAwMCk7XG5cbiAgLy8gR28gdGhyb3VnaCBQcmVmZXJlbmNlcyB3aXphcmRcbiAgaWYgKCFhd2FpdCBjbGlja0VsZW1lbnQoZHJpdmVyLCBCdXR0b24uSW5zdGFsbCwge1xuICAgIHNraXBJZkludmlzaWJsZTogdHJ1ZSxcbiAgfSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgLy8gV2UgbmVlZCB0byBjbGljayBJbnN0YWxsIGJ1dHRvbiBvbiB0d28gZGlmZmVyZW50IHRhYnNcbiAgLy8gVGhlIHNlY29uZCBvbmUgY29uZmlybXMgdGhlIHByZXZpb3VzXG4gIGF3YWl0IEIuZGVsYXkoMTUwMCk7XG4gIGF3YWl0IGNsaWNrRWxlbWVudChkcml2ZXIsIEJ1dHRvbi5JbnN0YWxsKTtcbiAgLy8gQWNjZXB0IGFsZXJ0XG4gIGF3YWl0IGNsaWNrRWxlbWVudChkcml2ZXIsIEFsZXJ0Lkluc3RhbGwpO1xuICAvLyBGaW5pc2ggYWRkaW5nIGNlcnRpZmljYXRlXG4gIGF3YWl0IGNsaWNrRWxlbWVudChkcml2ZXIsIEJ1dHRvbi5Eb25lKTtcbiAgcmV0dXJuIHRydWU7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHRydXN0Q2VydGlmaWNhdGVJblByZWZlcmVuY2VzIChkcml2ZXIsIG5hbWUpIHtcbiAgYXdhaXQgY2xpY2tFbGVtZW50KGRyaXZlciwgU2V0dGluZ3MuR2VuZXJhbCk7XG4gIGF3YWl0IGNsaWNrRWxlbWVudChkcml2ZXIsIFNldHRpbmdzLkFib3V0KTtcbiAgY29uc3Qgc3dpdGNoTG9jYXRvciA9IHtcbiAgICB0eXBlOiAnLWlvcyBjbGFzcyBjaGFpbicsXG4gICAgdmFsdWU6IGAqKi9YQ1VJRWxlbWVudFR5cGVDZWxsW1xcYGxhYmVsID09ICcke25hbWV9J1xcYF0vKiovWENVSUVsZW1lbnRUeXBlU3dpdGNoYCxcbiAgfTtcbiAgYXdhaXQgcmV0cnkoNSwgYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IGRyaXZlci5tb2JpbGVTd2lwZSh7XG4gICAgICBlbGVtZW50OiBhd2FpdCBkcml2ZXIuZmluZE5hdGl2ZUVsZW1lbnRPckVsZW1lbnRzKCdjbGFzcyBuYW1lJywgJ1hDVUlFbGVtZW50VHlwZVRhYmxlJywgZmFsc2UpLFxuICAgICAgZGlyZWN0aW9uOiAndXAnXG4gICAgfSk7XG4gICAgYXdhaXQgY2xpY2tFbGVtZW50KGRyaXZlciwgU2V0dGluZ3MuQ2VydGlmaWNhdGVfVHJ1c3RfU2V0dGluZ3MsIHtcbiAgICAgIHRpbWVvdXQ6IDUwMCxcbiAgICB9KTtcblxuICAgIGF3YWl0IGRyaXZlci5maW5kTmF0aXZlRWxlbWVudE9yRWxlbWVudHMoc3dpdGNoTG9jYXRvci50eXBlLCBzd2l0Y2hMb2NhdG9yLnZhbHVlLCBmYWxzZSk7XG4gIH0pO1xuICAvLyBPbmx5IGNsaWNrIHRoZSBzd2l0Y2ggaWYgaXQgaXMgc2V0IHRvIE9mZlxuICBpZiAoYXdhaXQgY2xpY2tFbGVtZW50KGRyaXZlciwge1xuICAgIHR5cGU6IHN3aXRjaExvY2F0b3IudHlwZSxcbiAgICB2YWx1ZTogYCR7c3dpdGNoTG9jYXRvci52YWx1ZX1bXFxgdmFsdWUgPT0gJzAnXFxgXWBcbiAgfSwge1xuICAgIHRpbWVvdXQ6IDEwMDAsXG4gICAgc2tpcElmSW52aXNpYmxlOiB0cnVlLFxuICB9KSkge1xuICAgIGF3YWl0IGRyaXZlci5wb3N0QWNjZXB0QWxlcnQoKTtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBpbnN0YWxsUG9zdDEyMkNlcnRpZmljYXRlIChkcml2ZXIsIG5hbWUpIHtcbiAgLy8gQWNjZXB0IFNhZmFyaSBhbGVydFxuICBhd2FpdCBjbGlja0VsZW1lbnQoZHJpdmVyLCBCdXR0b24uQWxsb3csIHtcbiAgICAvLyBjZXJ0aWZpY2F0ZSBsb2FkIG1pZ2h0IHRha2Ugc29tZSB0aW1lIG9uIHNsb3cgbWFjaGluZXNcbiAgICB0aW1lb3V0OiAxNTAwMCxcbiAgfSk7XG4gIC8vIFdhaXQgZm9yIHRoZSBzZWNvbmQgYWxlcnRcbiAgYXdhaXQgQi5kZWxheSgyMDAwKTtcblxuICBhd2FpdCBkcml2ZXIucG9zdEFjY2VwdEFsZXJ0KCk7XG4gIGF3YWl0IGRyaXZlci5hY3RpdmF0ZUFwcCgnY29tLmFwcGxlLlByZWZlcmVuY2VzJyk7XG4gIGF3YWl0IGNsaWNrRWxlbWVudChkcml2ZXIsIFNldHRpbmdzLkdlbmVyYWwpO1xuICBhd2FpdCBjbGlja0VsZW1lbnQoZHJpdmVyLCBTZXR0aW5ncy5Qcm9maWxlKTtcbiAgLy8gU2VsZWN0IHRoZSB0YXJnZXQgY2VydFxuICBsZXQgaXNDZXJ0Rm91bmQgPSBmYWxzZTtcbiAgZm9yIChsZXQgc3dpcGVOdW0gPSAwOyBzd2lwZU51bSA8IDU7ICsrc3dpcGVOdW0pIHtcbiAgICBpZiAoYXdhaXQgY2xpY2tFbGVtZW50KGRyaXZlciwge1xuICAgICAgdHlwZTogJy1pb3MgY2xhc3MgY2hhaW4nLFxuICAgICAgdmFsdWU6IGAqKi9YQ1VJRWxlbWVudFR5cGVDZWxsW1xcYGxhYmVsID09ICcke25hbWV9J1xcYF1gLFxuICAgIH0sIHtcbiAgICAgIHRpbWVvdXQ6IDUwMCxcbiAgICAgIHNraXBJZkludmlzaWJsZTogdHJ1ZSxcbiAgICB9KSkge1xuICAgICAgaXNDZXJ0Rm91bmQgPSB0cnVlO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgYXdhaXQgZHJpdmVyLm1vYmlsZVN3aXBlKHtcbiAgICAgIGVsZW1lbnQ6IGF3YWl0IGRyaXZlci5maW5kTmF0aXZlRWxlbWVudE9yRWxlbWVudHMoJ2NsYXNzIG5hbWUnLCAnWENVSUVsZW1lbnRUeXBlVGFibGUnLCBmYWxzZSksXG4gICAgICBkaXJlY3Rpb246ICd1cCdcbiAgICB9KTtcbiAgfVxuICBpZiAoIWlzQ2VydEZvdW5kKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGAnJHtuYW1lfScgY2Fubm90IGJlIGZvdW5kIGluIHRoZSBjZXJ0aWZpY2F0ZXMgbGlzdGApO1xuICB9XG5cbiAgLy8gSW5zdGFsbCBvcHRpb24gaXMgb25seSB2aXNpYmxlIGlmIHRoZSBjZXJ0IGlzIG5vdCBpbnN0YWxsZWQgeWV0XG4gIGlmICghYXdhaXQgY2xpY2tFbGVtZW50KGRyaXZlciwgQnV0dG9uLkluc3RhbGwsIHtcbiAgICBza2lwSWZJbnZpc2libGU6IHRydWUsXG4gIH0pKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGF3YWl0IEIuZGVsYXkoMTUwMCk7XG4gIC8vIENvbmZpcm0gdW50cnVzdGVkIGNlcnQgaW5zdGFsbFxuICBhd2FpdCBjbGlja0VsZW1lbnQoZHJpdmVyLCBCdXR0b24uSW5zdGFsbCk7XG4gIC8vIEFjY2VwdCBhbGVydFxuICBhd2FpdCBjbGlja0VsZW1lbnQoZHJpdmVyLCBBbGVydC5JbnN0YWxsKTtcbiAgLy8gRmluaXNoIGFkZGluZyBjZXJ0aWZpY2F0ZVxuICBhd2FpdCBjbGlja0VsZW1lbnQoZHJpdmVyLCBCdXR0b24uRG9uZSk7XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gQ2VydGlmaWNhdGVJbnN0YWxsYXRpb25PcHRpb25zXG4gKlxuICogQHByb3BlcnR5IHshc3RyaW5nfSBjb250ZW50IC0gQmFzZTY0LWVuY29kZWQgY29udGVudCBvZiB0aGUgcHVibGljIGNlcnRpZmljYXRlXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGNvbW1vbk5hbWUgLSBDb21tb24gbmFtZSBvZiB0aGUgY2VydGlmaWNhdGUuIElmIHRoaXMgaXMgbm90IHNldFxuICogdGhlbiB0aGUgc2NyaXB0IHdpbGwgdHJ5IHRvIHBhcnNlIGl0IGZyb20gdGhlIGdpdmVuIGNlcnRpZmljYXRlIGNvbnRlbnQuXG4gKiBAcHJvcGVydHkgez9ib29sZWFufSBpc1Jvb3QgW3RydWVdIC0gVGhpcyBvcHRpb24gZGVmaW5lcyB3aGVyZSB0aGUgY2VydGlmaWNhdGUgc2hvdWxkIGJlXG4gKiBpbnN0YWxsZWQgdG86IGVpdGhlciBUcnVzdGVkIFJvb3QgU3RvcmUgKGB0cnVlYCwgdGhlIGRlZmF1bHQgb3B0aW9uKSBvclxuICogdGhlIEtleWNoYWluIChgZmFsc2VgKS4gT24gZW52aXJvbm1lbnRzIG90aGVyIHRoYW4gWGNvZGUgMTEuNCsgU2ltdWxhdG9yIHRoaXNcbiAqIG9wdGlvbiBpcyBpZ25vcmVkLlxuICovXG5cbi8qKlxuICogSW5zdGFsbHMgYSBjdXN0b20gY2VydGlmaWNhdGUgb250byB0aGUgZGV2aWNlLlxuICogU2luY2UgWGNvZGUgU0RLIDExLjQgQXBwbGUgaGFzIGFkZGVkIGEgZGVkaWNhdGVkIHNpbWN0bCBzdWJjb21tYW5kIHRvIHF1aWNrbHkgaGFuZGxlXG4gKiBjZXJ0aWZpY2F0ZXMgb24gU2ltdWxhdG9yIG92ZXIgQ0xJLlxuICogT24gcmVhbCBkZXZpY2VzIG9yIHNpbXVsYXRvcnMgYmVmb3JlIFhjb2RlIDExLjQgU0RLXG4gKiBBcHBsZSBwcm92aWRlcyBubyBvZmZpY2lhbCB3YXkgdG8gZG8gaXQgdmlhIHRoZSBjb21tYW5kIGxpbmUuXG4gKiBJbiBzdWNoIGNhc2UgKGFuZCBhbHNvIGFzIGEgZmFsbGJhY2sgaWYgQ0xJIHNldHVwIGZhaWxzKVxuICogdGhpcyBtZXRob2QgdHJpZXMgdG8gd3JhcCB0aGUgY2VydGlmaWNhdGUgaW50byAubW9iaWxlY29uZmlnIGZvcm1hdFxuICogYW5kIHRoZW4gZGVwbG95cyB0aGUgd3JhcHBlZCBmaWxlIHRvIHRoZSBpbnRlcm5hbCBIVFRQIHNlcnZlcixcbiAqIHNvIG9uZSBjYW4gb3BlbiBpdCB2aWEgbW9iaWxlIFNhZmFyaS5cbiAqIFRoZW4gdGhlIGFsZ29yaXRobSBnb2VzIHRocm91Z2ggdGhlIHByb2ZpbGUgaW5zdGFsbGF0aW9uIHByb2NlZHVyZSBieVxuICogY2xpY2tpbmcgdGhlIG5lY2Vzc2FyeSBidXR0b25zIHVzaW5nIFdlYkRyaXZlckFnZW50LlxuICpcbiAqIEBwYXJhbSB7Q2VydGlmaWNhdGVJbnN0YWxsYXRpb25PcHRpb25zfSBvcHRzXG4gKiBAcmV0dXJucyB7P3N0cmluZ30gVGhlIGNvbnRlbnQgb2YgdGhlIGdlbmVyYXRlZCAubW9iaWxlY29uZmlnIGZpbGUgYXNcbiAqIGJhc2U2NC1lbmNvZGVkIHN0cmluZy4gVGhpcyBjb25maWcgbWlnaHQgYmUgdXNlZnVsIGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMuXG4gKiBJZiB0aGUgY2VydGlmaWNhdGUgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IHNldCB2aWEgQ0xJIHRoZW4gbm90aGluZyBpcyByZXR1cm5lZC5cbiAqL1xuY29tbWFuZHMubW9iaWxlSW5zdGFsbENlcnRpZmljYXRlID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlSW5zdGFsbENlcnRpZmljYXRlIChvcHRzID0ge30pIHtcbiAgY29uc3Qge1xuICAgIGNvbnRlbnQsXG4gICAgY29tbW9uTmFtZSxcbiAgICBpc1Jvb3QgPSB0cnVlLFxuICB9ID0gb3B0cztcbiAgaWYgKF8uaXNFbXB0eShjb250ZW50KSkge1xuICAgIHRocm93IG5ldyBFcnJvcignQ2VydGlmaWNhdGUgY29udGVudCBzaG91bGQgbm90IGJlIGVtcHR5Jyk7XG4gIH1cblxuICBpZiAodGhpcy5pc1NpbXVsYXRvcigpKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG1ldGhvZE5hbWUgPSBpc1Jvb3QgPyAnYWRkUm9vdENlcnRpZmljYXRlJyA6ICdhZGRDZXJ0aWZpY2F0ZSc7XG4gICAgICBhd2FpdCB0aGlzLm9wdHMuZGV2aWNlLnNpbWN0bFttZXRob2ROYW1lXShcbiAgICAgICAgQnVmZmVyLmZyb20oY29udGVudCwgJ2Jhc2U2NCcpLnRvU3RyaW5nKCksIHtyYXc6IHRydWV9XG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGxvZy5kZWJ1ZyhlKTtcbiAgICAgIGxvZy5pbmZvKGBUaGUgY2VydGlmaWNhdGUgY2Fubm90IGJlIGluc3RhbGxlZCB2aWEgQ0xJLiBgICtcbiAgICAgICAgYEZhbGxpbmcgYmFjayB0byBVSS1iYXNlZCBkZXBsb3ltZW50YCk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGNvbnN0IGNsaWVudCA9IG5ldyBQeWlkZXZpY2UodGhpcy5vcHRzLnVkaWQpO1xuICAgIGlmIChhd2FpdCBjbGllbnQuYXNzZXJ0RXhpc3RzKGZhbHNlKSkge1xuICAgICAgYXdhaXQgY2xpZW50Lmluc3RhbGxQcm9maWxlKHtwYXlsb2FkOiBCdWZmZXIuZnJvbShjb250ZW50LCAnYmFzZTY0Jyl9KTtcbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9nLmluZm8oJ3B5aWRldmljZSBpcyBub3QgaW5zdGFsbGVkIG9uIHlvdXIgc3lzdGVtLiAnICtcbiAgICAgICAgJ0ZhbGxpbmcgYmFjayB0byB0aGUgKHNsb3cpIFVJLWJhc2VkIGluc3RhbGxhdGlvbicpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHRtcFJvb3QgPSBhd2FpdCB0ZW1wRGlyLm9wZW5EaXIoKTtcbiAgY29uc3QgdG1wUG9ydCA9IGF3YWl0IGZpbmRBUG9ydE5vdEluVXNlKEhPU1RfUE9SVF9SQU5HRVswXSwgSE9TVF9QT1JUX1JBTkdFWzFdKTtcbiAgY29uc3QgY29uZmlnTmFtZSA9IGBhcHBpdW0uJHtDT05GSUdfRVhURU5TSU9OfWA7XG4gIGNvbnN0IGNvbmZpZ1BhdGggPSBwYXRoLnJlc29sdmUodG1wUm9vdCwgY29uZmlnTmFtZSk7XG4gIGNvbnN0IHRtcFNlcnZlciA9IGh0dHAuY3JlYXRlU2VydmVyKGFzeW5jIGZ1bmN0aW9uIChfLCByZXMpIHtcbiAgICBjb25zdCBjb25maWdGaWxlID0gYXdhaXQgZnMucmVhZEZpbGUoY29uZmlnUGF0aCk7XG4gICAgcmVzLmVuZChjb25maWdGaWxlKTtcbiAgfSk7XG4gIHRyeSB7XG4gICAgY29uc3QgY2VydEJ1ZmZlciA9IEJ1ZmZlci5mcm9tKGNvbnRlbnQsICdiYXNlNjQnKTtcbiAgICBjb25zdCBjbiA9IGNvbW1vbk5hbWUgfHwgYXdhaXQgZXh0cmFjdENvbW1vbk5hbWUoY2VydEJ1ZmZlcik7XG4gICAgY29uc3QgbW9iaWxlQ29uZmlnID0gdG9Nb2JpbGVDb25maWcoY2VydEJ1ZmZlciwgY24pO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBwbGlzdC51cGRhdGVQbGlzdEZpbGUoY29uZmlnUGF0aCwgbW9iaWxlQ29uZmlnLCBmYWxzZSwgZmFsc2UpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3Qgc3RvcmUgdGhlIGdlbmVyYXRlZCBjb25maWcgYXMgJyR7Y29uZmlnUGF0aH0nLiBgICtcbiAgICAgICAgICAgICAgICAgICAgICBgT3JpZ2luYWwgZXJyb3I6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGhvc3QgPSBvcy5ob3N0bmFtZSgpO1xuICAgICAgY29uc3QgY2VydFVybCA9IGBodHRwOi8vJHtob3N0fToke3RtcFBvcnR9LyR7Y29uZmlnTmFtZX1gO1xuICAgICAgYXdhaXQgdG1wU2VydmVyLmxpc3Rlbih0bXBQb3J0KTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHdhaXRGb3JDb25kaXRpb24oYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gKGF3YWl0IGNoZWNrUG9ydFN0YXR1cyh0bXBQb3J0LCBob3N0KSkgPT09ICdvcGVuJztcbiAgICAgICAgICB9IGNhdGNoIChpZ24pIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sIHtcbiAgICAgICAgICB3YWl0TXM6IFRNUFNFUlZFUl9TVEFSVFVQX1RJTUVPVVQsXG4gICAgICAgICAgaW50ZXJ2YWxNczogMzAwLFxuICAgICAgICB9KTtcbiAgICAgICAgbG9nLmRlYnVnKGBUaGUgdGVtcG9yYXJ5IHdlYiBzZXJ2ZXIgaXMgcnVubmluZyBhdCBodHRwOi8vJHtob3N0fToke3RtcFBvcnR9YCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlIHRlbXBvcmFyeSB3ZWIgc2VydmVyIGNhbm5vdCBiZSBzdGFydGVkIGF0IGh0dHA6Ly8ke2hvc3R9OiR7dG1wUG9ydH0uYCk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5pc1JlYWxEZXZpY2UoKSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IHRoaXMucHJveHlDb21tYW5kKCcvdXJsJywgJ1BPU1QnLCB7dXJsOiBjZXJ0VXJsfSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIGlmICh0aGlzLmlzV2ViQ29udGV4dCgpKSB7XG4gICAgICAgICAgICAvLyBUaGUgY29tbWFuZCBhYm92ZSBkb2VzIG5vdCBhbHdheXMgd29yayBvbiByZWFsIGRldmljZXNcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc2V0VXJsKGNlcnRVcmwpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhd2FpdCB0aGlzLm9wdHMuZGV2aWNlLm9wZW5VcmwoY2VydFVybCk7XG4gICAgICB9XG5cbiAgICAgIGxldCBpc0NlcnRBbHJlYWR5SW5zdGFsbGVkID0gZmFsc2U7XG4gICAgICBpZiAodXRpbC5jb21wYXJlVmVyc2lvbnModGhpcy5vcHRzLnBsYXRmb3JtVmVyc2lvbiwgJz49JywgJzEyLjInKSkge1xuICAgICAgICBpZiAoYXdhaXQgaW5zdGFsbFBvc3QxMjJDZXJ0aWZpY2F0ZSh0aGlzLCBjbikpIHtcbiAgICAgICAgICBhd2FpdCBjbGlja0VsZW1lbnQodGhpcywgU2V0dGluZ3MuUHJvZmlsZSk7XG4gICAgICAgICAgYXdhaXQgdHJ1c3RDZXJ0aWZpY2F0ZUluUHJlZmVyZW5jZXModGhpcywgY24pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlzQ2VydEFscmVhZHlJbnN0YWxsZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoYXdhaXQgaW5zdGFsbFByZTEyMkNlcnRpZmljYXRlKHRoaXMpKSB7XG4gICAgICAgICAgYXdhaXQgY2xpY2tFbGVtZW50KHRoaXMsIEJ1dHRvbi5SZXR1cm5fdG9fU2V0dGluZ3MpO1xuICAgICAgICAgIGF3YWl0IHRydXN0Q2VydGlmaWNhdGVJblByZWZlcmVuY2VzKHRoaXMsIGNuKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpc0NlcnRBbHJlYWR5SW5zdGFsbGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGlzQ2VydEFscmVhZHlJbnN0YWxsZWQpIHtcbiAgICAgICAgbG9nLmluZm8oYEl0IGxvb2tzIGxpa2UgdGhlICcke2NufScgY2VydGlmaWNhdGUgaGFzIGJlZW4gYWxyZWFkeSBhZGRlZCB0byB0aGUgQ0Egcm9vdGApO1xuICAgICAgfVxuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAodGhpcy5vcHRzLmJ1bmRsZUlkKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5hY3RpdmF0ZUFwcCh0aGlzLm9wdHMuYnVuZGxlSWQpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgbG9nLndhcm4oYENhbm5vdCByZXN0b3JlIHRoZSBhcHBsaWNhdGlvbiAnJHt0aGlzLm9wdHMuYnVuZGxlSWR9Jy4gT3JpZ2luYWwgZXJyb3I6ICR7ZS5tZXNzYWdlfWApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIChhd2FpdCB1dGlsLnRvSW5NZW1vcnlCYXNlNjQoY29uZmlnUGF0aCkpLnRvU3RyaW5nKCk7XG4gIH0gZmluYWxseSB7XG4gICAgYXdhaXQgdG1wU2VydmVyLmNsb3NlKCk7XG4gICAgYXdhaXQgZnMucmltcmFmKHRtcFJvb3QpO1xuICB9XG59O1xuXG5PYmplY3QuYXNzaWduKGV4dGVuc2lvbnMsIGNvbW1hbmRzKTtcbmV4cG9ydCB7IGNvbW1hbmRzLCBwYXJzZUNvbW1vbk5hbWUgfTtcbmV4cG9ydCBkZWZhdWx0IGV4dGVuc2lvbnM7XG4iXSwiZmlsZSI6ImxpYi9jb21tYW5kcy9jZXJ0aWZpY2F0ZS5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
|
|
@@ -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,
|
|
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9wY2FwLmpzIl0sIm5hbWVzIjpbIk1BWF9DQVBUVVJFX1RJTUVfU0VDIiwiREVGQVVMVF9DQVBUVVJFX1RJTUVfU0VDIiwiREVGQVVMVF9FWFQiLCJwY2FwTG9nZ2VyIiwibG9nZ2VyIiwiZ2V0TG9nZ2VyIiwiY29tbWFuZHMiLCJUcmFmZmljQ2FwdHVyZSIsImNvbnN0cnVjdG9yIiwidWRpZCIsInJlc3VsdFBhdGgiLCJtYWluUHJvY2VzcyIsInN0YXJ0IiwidGltZW91dFNlY29uZHMiLCJQeWlkZXZpY2UiLCJjb2xsZWN0UGNhcCIsIm9uIiwic3Rkb3V0Iiwic3RkZXJyIiwiaW5mbyIsImxvZyIsInNldFRpbWVvdXQiLCJpbnRlcnJ1cHQiLCJvbmNlIiwiY29kZSIsInNpZ25hbCIsImRlYnVnIiwiaXNDYXB0dXJpbmciLCJpc1J1bm5pbmciLCJmb3JjZSIsImludGVycnVwdFByb21pc2UiLCJzdG9wIiwiZSIsIndhcm4iLCJtZXNzYWdlIiwiZmluaXNoIiwiY2xlYW51cCIsImZzIiwiZXhpc3RzIiwicmltcmFmIiwibW9iaWxlU3RhcnRQY2FwIiwib3B0aW9ucyIsImlzU2ltdWxhdG9yIiwiZXJyb3JBbmRUaHJvdyIsInRpbWVMaW1pdFNlYyIsImZvcmNlUmVzdGFydCIsIl90cmFmZmljQ2FwdHVyZSIsInRlbXBEaXIiLCJwYXRoIiwicHJlZml4IiwidXRpbCIsInV1aWRWNCIsInN1YnN0cmluZyIsInN1ZmZpeCIsInRyYWZmaWNDb2xsZWN0b3IiLCJvcHRzIiwiZGV2aWNlIiwicGFyc2VJbnQiLCJpc05hTiIsIm1vYmlsZVN0b3BQY2FwIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLE1BQU1BLG9CQUFvQixHQUFHLEtBQUssRUFBTCxHQUFVLEVBQXZDO0FBQ0EsTUFBTUMsd0JBQXdCLEdBQUcsS0FBSyxDQUF0QztBQUNBLE1BQU1DLFdBQVcsR0FBRyxPQUFwQjs7QUFDQSxNQUFNQyxVQUFVLEdBQUdDLHNCQUFPQyxTQUFQLENBQWlCLE9BQWpCLENBQW5COztBQUVBLE1BQU1DLFFBQVEsR0FBRyxFQUFqQjs7O0FBR0EsTUFBTUMsY0FBTixDQUFxQjtBQUNuQkMsRUFBQUEsV0FBVyxDQUFFQyxJQUFGLEVBQVFDLFVBQVIsRUFBb0I7QUFDN0IsU0FBS0QsSUFBTCxHQUFZQSxJQUFaO0FBQ0EsU0FBS0MsVUFBTCxHQUFrQkEsVUFBbEI7QUFDQSxTQUFLQyxXQUFMLEdBQW1CLElBQW5CO0FBQ0Q7O0FBRVUsUUFBTEMsS0FBSyxDQUFFQyxjQUFGLEVBQWtCO0FBQzNCLFNBQUtGLFdBQUwsR0FBbUIsTUFBTSxJQUFJRywwQkFBSixDQUFjLEtBQUtMLElBQW5CLEVBQXlCTSxXQUF6QixDQUFxQyxLQUFLTCxVQUExQyxDQUF6QjtBQUNBLFNBQUtDLFdBQUwsQ0FBaUJLLEVBQWpCLENBQW9CLFFBQXBCLEVBQThCLENBQUNDLE1BQUQsRUFBU0MsTUFBVCxLQUFvQjtBQUNoRCxVQUFJQSxNQUFKLEVBQVk7QUFDVmYsUUFBQUEsVUFBVSxDQUFDZ0IsSUFBWCxDQUFpQixHQUFFRCxNQUFPLEVBQTFCO0FBQ0Q7QUFDRixLQUpEOztBQUtBRSxvQkFBSUQsSUFBSixDQUFVLDJEQUEwRCxLQUFLVixJQUFLLEtBQXJFLEdBQ04sbUJBQWtCSSxjQUFlLEdBRHBDOztBQUVBUSxJQUFBQSxVQUFVLENBQUMsWUFBWSxNQUFNLEtBQUtDLFNBQUwsRUFBbkIsRUFBcUNULGNBQWMsR0FBRyxJQUF0RCxDQUFWO0FBQ0EsU0FBS0YsV0FBTCxDQUFpQlksSUFBakIsQ0FBc0IsTUFBdEIsRUFBOEIsQ0FBQ0MsSUFBRCxFQUFPQyxNQUFQLEtBQWtCO0FBQzlDTCxzQkFBSU0sS0FBSixDQUFXLDhDQUE2QyxLQUFLakIsSUFBSyxlQUF4RCxHQUNQLGFBQVllLElBQUssWUFBV0MsTUFBTyxFQUR0QztBQUVELEtBSEQ7QUFJRDs7QUFFREUsRUFBQUEsV0FBVyxHQUFJO0FBQUE7O0FBQ2IsV0FBTyxDQUFDLHVCQUFFLEtBQUtoQixXQUFQLDhDQUFFLGtCQUFrQmlCLFNBQXBCLENBQVI7QUFDRDs7QUFFYyxRQUFUTixTQUFTLENBQUVPLEtBQUssR0FBRyxLQUFWLEVBQWlCO0FBQzlCLFFBQUksS0FBS0YsV0FBTCxFQUFKLEVBQXdCO0FBQ3RCLFlBQU1HLGdCQUFnQixHQUFHLEtBQUtuQixXQUFMLENBQWlCb0IsSUFBakIsQ0FBc0JGLEtBQUssR0FBRyxTQUFILEdBQWUsUUFBMUMsQ0FBekI7QUFDQSxXQUFLbEIsV0FBTCxHQUFtQixJQUFuQjs7QUFDQSxVQUFJO0FBQ0YsY0FBTW1CLGdCQUFOO0FBQ0QsT0FGRCxDQUVFLE9BQU9FLENBQVAsRUFBVTtBQUNWWix3QkFBSWEsSUFBSixDQUFVLFVBQVNKLEtBQUssR0FBRyxXQUFILEdBQWlCLFdBQVksZ0NBQTVDLEdBQ04sbUJBQWtCRyxDQUFDLENBQUNFLE9BQVEsRUFEL0I7O0FBRUEsZUFBTyxLQUFQO0FBQ0Q7QUFDRjs7QUFFRCxXQUFPLElBQVA7QUFDRDs7QUFFVyxRQUFOQyxNQUFNLEdBQUk7QUFDZCxVQUFNLEtBQUtiLFNBQUwsRUFBTjtBQUNBLFdBQU8sS0FBS1osVUFBWjtBQUNEOztBQUVZLFFBQVAwQixPQUFPLEdBQUk7QUFDZixRQUFJLE1BQU1DLGtCQUFHQyxNQUFILENBQVUsS0FBSzVCLFVBQWYsQ0FBVixFQUFzQztBQUNwQyxZQUFNMkIsa0JBQUdFLE1BQUgsQ0FBVSxLQUFLN0IsVUFBZixDQUFOO0FBQ0Q7QUFDRjs7QUFwRGtCOztBQXVFckJKLFFBQVEsQ0FBQ2tDLGVBQVQsR0FBMkIsZUFBZUEsZUFBZixDQUFnQ0MsT0FBTyxHQUFHLEVBQTFDLEVBQThDO0FBQUE7O0FBQ3ZFLE1BQUksS0FBS0MsV0FBTCxFQUFKLEVBQXdCO0FBQ3RCdEIsb0JBQUl1QixhQUFKLENBQWtCLG9EQUFsQjtBQUNEOztBQUVELFFBQU07QUFDSkMsSUFBQUEsWUFBWSxHQUFHM0Msd0JBRFg7QUFFSjRDLElBQUFBO0FBRkksTUFHRkosT0FISjs7QUFLQSwrQkFBSSxLQUFLSyxlQUFULGtEQUFJLHNCQUFzQm5CLFdBQXRCLEVBQUosRUFBeUM7QUFDdkNQLG9CQUFJRCxJQUFKLENBQVUsNENBQVY7O0FBQ0EsUUFBSTBCLFlBQUosRUFBa0I7QUFDaEJ6QixzQkFBSUQsSUFBSixDQUFVLDBEQUFWOztBQUNBLFlBQU0sS0FBSzJCLGVBQUwsQ0FBcUJ4QixTQUFyQixDQUErQixJQUEvQixDQUFOO0FBQ0QsS0FIRCxNQUdPO0FBQ0xGLHNCQUFJRCxJQUFKLENBQVUsaUJBQUQsR0FDTix3RkFESDs7QUFFQTtBQUNEO0FBQ0Y7O0FBQ0QsTUFBSSxLQUFLMkIsZUFBVCxFQUEwQjtBQUN4QixVQUFNLEtBQUtBLGVBQUwsQ0FBcUJWLE9BQXJCLEVBQU47QUFDQSxTQUFLVSxlQUFMLEdBQXVCLElBQXZCO0FBQ0Q7O0FBRUQsUUFBTXBDLFVBQVUsR0FBRyxNQUFNcUMsdUJBQVFDLElBQVIsQ0FBYTtBQUNwQ0MsSUFBQUEsTUFBTSxFQUFHLFVBQVNDLG9CQUFLQyxNQUFMLEdBQWNDLFNBQWQsQ0FBd0IsQ0FBeEIsRUFBMkIsQ0FBM0IsQ0FBOEIsRUFEWjtBQUVwQ0MsSUFBQUEsTUFBTSxFQUFFbkQ7QUFGNEIsR0FBYixDQUF6QjtBQUtBLFFBQU1vRCxnQkFBZ0IsR0FBRyxJQUFJL0MsY0FBSixDQUFtQixLQUFLZ0QsSUFBTCxDQUFVQyxNQUFWLENBQWlCL0MsSUFBcEMsRUFBMENDLFVBQTFDLENBQXpCO0FBRUEsUUFBTUcsY0FBYyxHQUFHNEMsUUFBUSxDQUFDYixZQUFELEVBQWUsRUFBZixDQUEvQjs7QUFDQSxNQUFJYyxLQUFLLENBQUM3QyxjQUFELENBQUwsSUFBeUJBLGNBQWMsR0FBR2Isb0JBQTFDLElBQWtFYSxjQUFjLElBQUksQ0FBeEYsRUFBMkY7QUFDekZPLG9CQUFJdUIsYUFBSixDQUFtQiwrQ0FBOEMzQyxvQkFBcUIsYUFBcEUsR0FDZixpQkFBZ0I0QyxZQUFhLDRCQURoQztBQUVEOztBQUVELE1BQUk7QUFDRixVQUFNVSxnQkFBZ0IsQ0FBQzFDLEtBQWpCLENBQXVCQyxjQUF2QixDQUFOO0FBQ0QsR0FGRCxDQUVFLE9BQU9tQixDQUFQLEVBQVU7QUFDVixVQUFNc0IsZ0JBQWdCLENBQUNoQyxTQUFqQixDQUEyQixJQUEzQixDQUFOO0FBQ0EsVUFBTWdDLGdCQUFnQixDQUFDbEIsT0FBakIsRUFBTjtBQUNBLFVBQU1KLENBQU47QUFDRDs7QUFDRCxPQUFLYyxlQUFMLEdBQXVCUSxnQkFBdkI7QUFDRCxDQS9DRDs7QUEyREFoRCxRQUFRLENBQUNxRCxjQUFULEdBQTBCLGVBQWVBLGNBQWYsR0FBaUM7QUFDekQsTUFBSSxDQUFDLEtBQUtiLGVBQVYsRUFBMkI7QUFDekIxQixvQkFBSUQsSUFBSixDQUFTLDBFQUFUOztBQUNBLFdBQU8sRUFBUDtBQUNEOztBQUVELE1BQUlULFVBQUo7O0FBQ0EsTUFBSTtBQUNGQSxJQUFBQSxVQUFVLEdBQUcsTUFBTSxLQUFLb0MsZUFBTCxDQUFxQlgsTUFBckIsRUFBbkI7O0FBQ0EsUUFBSSxFQUFDLE1BQU1FLGtCQUFHQyxNQUFILENBQVU1QixVQUFWLENBQVAsQ0FBSixFQUFrQztBQUNoQ1Usc0JBQUl1QixhQUFKLENBQW1CLGlEQUFELEdBQ2YsMkNBQTBDakMsVUFBVyxHQUR4RDtBQUVEO0FBQ0YsR0FORCxDQU1FLE9BQU9zQixDQUFQLEVBQVU7QUFDVixVQUFNLEtBQUtjLGVBQUwsQ0FBcUJ4QixTQUFyQixDQUErQixJQUEvQixDQUFOO0FBQ0EsVUFBTSxLQUFLd0IsZUFBTCxDQUFxQlYsT0FBckIsRUFBTjtBQUNBLFNBQUtVLGVBQUwsR0FBdUIsSUFBdkI7QUFDQSxVQUFNZCxDQUFOO0FBQ0Q7O0FBQ0QsU0FBTyxNQUFNLGlDQUFxQnRCLFVBQXJCLENBQWI7QUFDRCxDQXBCRDs7ZUF1QmVKLFEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUHlpZGV2aWNlIGZyb20gJy4uL3B5LWlvcy1kZXZpY2UtY2xpZW50JztcbmltcG9ydCB7IGZzLCB0ZW1wRGlyLCBsb2dnZXIsIHV0aWwgfSBmcm9tICdhcHBpdW0tc3VwcG9ydCc7XG5pbXBvcnQgbG9nIGZyb20gJy4uL2xvZ2dlcic7XG5pbXBvcnQgeyBlbmNvZGVCYXNlNjRPclVwbG9hZCB9IGZyb20gJy4uL3V0aWxzJztcblxuY29uc3QgTUFYX0NBUFRVUkVfVElNRV9TRUMgPSA2MCAqIDYwICogMTI7XG5jb25zdCBERUZBVUxUX0NBUFRVUkVfVElNRV9TRUMgPSA2MCAqIDU7XG5jb25zdCBERUZBVUxUX0VYVCA9ICcucGNhcCc7XG5jb25zdCBwY2FwTG9nZ2VyID0gbG9nZ2VyLmdldExvZ2dlcigncGNhcGQnKTtcblxuY29uc3QgY29tbWFuZHMgPSB7fTtcblxuXG5jbGFzcyBUcmFmZmljQ2FwdHVyZSB7XG4gIGNvbnN0cnVjdG9yICh1ZGlkLCByZXN1bHRQYXRoKSB7XG4gICAgdGhpcy51ZGlkID0gdWRpZDtcbiAgICB0aGlzLnJlc3VsdFBhdGggPSByZXN1bHRQYXRoO1xuICAgIHRoaXMubWFpblByb2Nlc3MgPSBudWxsO1xuICB9XG5cbiAgYXN5bmMgc3RhcnQgKHRpbWVvdXRTZWNvbmRzKSB7XG4gICAgdGhpcy5tYWluUHJvY2VzcyA9IGF3YWl0IG5ldyBQeWlkZXZpY2UodGhpcy51ZGlkKS5jb2xsZWN0UGNhcCh0aGlzLnJlc3VsdFBhdGgpO1xuICAgIHRoaXMubWFpblByb2Nlc3Mub24oJ291dHB1dCcsIChzdGRvdXQsIHN0ZGVycikgPT4ge1xuICAgICAgaWYgKHN0ZGVycikge1xuICAgICAgICBwY2FwTG9nZ2VyLmluZm8oYCR7c3RkZXJyfWApO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGxvZy5pbmZvKGBTdGFydGluZyBuZXR3b3JrIHRyYWZmaWMgY2FwdHVyZSBzZXNzaW9uIG9uIHRoZSBkZXZpY2UgJyR7dGhpcy51ZGlkfScuIGAgK1xuICAgICAgYFdpbGwgdGltZW91dCBpbiAke3RpbWVvdXRTZWNvbmRzfXNgKTtcbiAgICBzZXRUaW1lb3V0KGFzeW5jICgpID0+IGF3YWl0IHRoaXMuaW50ZXJydXB0KCksIHRpbWVvdXRTZWNvbmRzICogMTAwMCk7XG4gICAgdGhpcy5tYWluUHJvY2Vzcy5vbmNlKCdleGl0JywgKGNvZGUsIHNpZ25hbCkgPT4ge1xuICAgICAgbG9nLmRlYnVnKGBUaGUgdHJhZmZpYyBjYXB0dXJlIHNlc3Npb24gb24gdGhlIGRldmljZSAnJHt0aGlzLnVkaWR9JyBoYXMgZXhpdGVkIGAgK1xuICAgICAgICBgd2l0aCBjb2RlICR7Y29kZX0sIHNpZ25hbCAke3NpZ25hbH1gKTtcbiAgICB9KTtcbiAgfVxuXG4gIGlzQ2FwdHVyaW5nICgpIHtcbiAgICByZXR1cm4gISEodGhpcy5tYWluUHJvY2Vzcz8uaXNSdW5uaW5nKTtcbiAgfVxuXG4gIGFzeW5jIGludGVycnVwdCAoZm9yY2UgPSBmYWxzZSkge1xuICAgIGlmICh0aGlzLmlzQ2FwdHVyaW5nKCkpIHtcbiAgICAgIGNvbnN0IGludGVycnVwdFByb21pc2UgPSB0aGlzLm1haW5Qcm9jZXNzLnN0b3AoZm9yY2UgPyAnU0lHVEVSTScgOiAnU0lHSU5UJyk7XG4gICAgICB0aGlzLm1haW5Qcm9jZXNzID0gbnVsbDtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGludGVycnVwdFByb21pc2U7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGxvZy53YXJuKGBDYW5ub3QgJHtmb3JjZSA/ICd0ZXJtaW5hdGUnIDogJ2ludGVycnVwdCd9IHRoZSB0cmFmZmljIGNhcHR1cmUgc2Vzc2lvbi4gYCArXG4gICAgICAgICAgYE9yaWdpbmFsIGVycm9yOiAke2UubWVzc2FnZX1gKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgYXN5bmMgZmluaXNoICgpIHtcbiAgICBhd2FpdCB0aGlzLmludGVycnVwdCgpO1xuICAgIHJldHVybiB0aGlzLnJlc3VsdFBhdGg7XG4gIH1cblxuICBhc3luYyBjbGVhbnVwICgpIHtcbiAgICBpZiAoYXdhaXQgZnMuZXhpc3RzKHRoaXMucmVzdWx0UGF0aCkpIHtcbiAgICAgIGF3YWl0IGZzLnJpbXJhZih0aGlzLnJlc3VsdFBhdGgpO1xuICAgIH1cbiAgfVxufVxuXG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gU3RhcnRDYXB0dXJlT3B0aW9uc1xuICpcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ3xudW1iZXJ9IHRpbWVMaW1pdFNlYyBbMTgwXSAtIFRoZSBtYXhpbXVtIHRyYWZmaWMgY2FwdHVyZSB0aW1lLCBpbiBzZWNvbmRzLlxuICogVGhlIGRlZmF1bHQgdmFsdWUgaXMgMTgwLCB0aGUgbWF4aW11bSB2YWx1ZSBpcyA0MzIwMCAoMTIgaG91cnMpLlxuICogQHByb3BlcnR5IHs/Ym9vbGVhbn0gZm9yY2VSZXN0YXJ0IFtmYWxzZV0gLSBXaGV0aGVyIHRvIHJlc3RhcnQgYXVkaW8gY2FwdHVyZSBwcm9jZXNzIGZvcmNlZnVsbHkgd2hlblxuICogc3RhcnRQY2FwIGlzIGNhbGxlZCAoYHRydWVgKSBvciBpZ25vcmUgdGhlIGNhbGwgdW50aWwgdGhlIGN1cnJlbnQgbmV0d29yayB0cmFmZmljIGNhcHR1cmUgaXMgY29tcGxldGVkLlxuICovXG5cbi8qKlxuICogUmVjb3JkcyB0aGUgZ2l2ZW4gbmV0d29yayB0cmFmZmljIGNhcHR1cmUgaW50byBhIC5wY2FwIGZpbGUuXG4gKlxuICogQHBhcmFtIHs/U3RhcnRDYXB0dXJlT3B0aW9uc30gb3B0aW9ucyAtIFRoZSBhdmFpbGFibGUgb3B0aW9ucy5cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiBuZXR3b3JrIHRyYWZmaWMgY2FwdHVyZSBoYXMgZmFpbGVkIHRvIHN0YXJ0LlxuICovXG5jb21tYW5kcy5tb2JpbGVTdGFydFBjYXAgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVTdGFydFBjYXAgKG9wdGlvbnMgPSB7fSkge1xuICBpZiAodGhpcy5pc1NpbXVsYXRvcigpKSB7XG4gICAgbG9nLmVycm9yQW5kVGhyb3coJ05ldHdvcmsgdHJhZmZpYyBjYXB0dXJlIG9ubHkgd29ya3Mgb24gcmVhbCBkZXZpY2VzJyk7XG4gIH1cblxuICBjb25zdCB7XG4gICAgdGltZUxpbWl0U2VjID0gREVGQVVMVF9DQVBUVVJFX1RJTUVfU0VDLFxuICAgIGZvcmNlUmVzdGFydCxcbiAgfSA9IG9wdGlvbnM7XG5cbiAgaWYgKHRoaXMuX3RyYWZmaWNDYXB0dXJlPy5pc0NhcHR1cmluZygpKSB7XG4gICAgbG9nLmluZm8oYFRoZXJlIGlzIGFuIGFjdGl2ZSB0cmFmZmljIGNhcHR1cmUgcHJvY2Vzc2ApO1xuICAgIGlmIChmb3JjZVJlc3RhcnQpIHtcbiAgICAgIGxvZy5pbmZvKGBTdG9wcGluZyBpdCBiZWNhdXNlICdmb3JjZVJlc3RhcnQnIG9wdGlvbiBpcyBzZXQgdG8gdHJ1ZWApO1xuICAgICAgYXdhaXQgdGhpcy5fdHJhZmZpY0NhcHR1cmUuaW50ZXJydXB0KHRydWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsb2cuaW5mbyhgRG9pbmcgbm90aGluZy4gYCArXG4gICAgICAgIGBTZXQgJ2ZvcmNlUmVzdGFydCcgb3B0aW9uIHRvIHRydWUgaWYgeW91J2QgbGlrZSB0byBzdGFydCBhIG5ldyB0cmFmZmljIGNhcHR1cmUgc2Vzc2lvbmApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuICBpZiAodGhpcy5fdHJhZmZpY0NhcHR1cmUpIHtcbiAgICBhd2FpdCB0aGlzLl90cmFmZmljQ2FwdHVyZS5jbGVhbnVwKCk7XG4gICAgdGhpcy5fdHJhZmZpY0NhcHR1cmUgPSBudWxsO1xuICB9XG5cbiAgY29uc3QgcmVzdWx0UGF0aCA9IGF3YWl0IHRlbXBEaXIucGF0aCh7XG4gICAgcHJlZml4OiBgYXBwaXVtXyR7dXRpbC51dWlkVjQoKS5zdWJzdHJpbmcoMCwgOCl9YCxcbiAgICBzdWZmaXg6IERFRkFVTFRfRVhULFxuICB9KTtcblxuICBjb25zdCB0cmFmZmljQ29sbGVjdG9yID0gbmV3IFRyYWZmaWNDYXB0dXJlKHRoaXMub3B0cy5kZXZpY2UudWRpZCwgcmVzdWx0UGF0aCk7XG5cbiAgY29uc3QgdGltZW91dFNlY29uZHMgPSBwYXJzZUludCh0aW1lTGltaXRTZWMsIDEwKTtcbiAgaWYgKGlzTmFOKHRpbWVvdXRTZWNvbmRzKSB8fCB0aW1lb3V0U2Vjb25kcyA+IE1BWF9DQVBUVVJFX1RJTUVfU0VDIHx8IHRpbWVvdXRTZWNvbmRzIDw9IDApIHtcbiAgICBsb2cuZXJyb3JBbmRUaHJvdyhgVGhlIHRpbWVMaW1pdFNlYyB2YWx1ZSBtdXN0IGJlIGluIHJhbmdlIFsxLCAke01BWF9DQVBUVVJFX1RJTUVfU0VDfV0gc2Vjb25kcy4gYCArXG4gICAgICBgVGhlIHZhbHVlIG9mICcke3RpbWVMaW1pdFNlY30nIGhhcyBiZWVuIHBhc3NlZCBpbnN0ZWFkLmApO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBhd2FpdCB0cmFmZmljQ29sbGVjdG9yLnN0YXJ0KHRpbWVvdXRTZWNvbmRzKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGF3YWl0IHRyYWZmaWNDb2xsZWN0b3IuaW50ZXJydXB0KHRydWUpO1xuICAgIGF3YWl0IHRyYWZmaWNDb2xsZWN0b3IuY2xlYW51cCgpO1xuICAgIHRocm93IGU7XG4gIH1cbiAgdGhpcy5fdHJhZmZpY0NhcHR1cmUgPSB0cmFmZmljQ29sbGVjdG9yO1xufTtcblxuLyoqXG4gKiBTdG9wIGNhcHR1cmUgb2YgdGhlIGRldmljZSBuZXR3b3JrIHRyYWZmaWMuIElmIG5vIHRyYWZmaWMgY2FwdHVyZSBwcm9jZXNzIGlzIHJ1bm5pbmcgdGhlblxuICogdGhlIGVuZHBvaW50IHdpbGwgdHJ5IHRvIGdldCB0aGUgcmVjZW50bHkgcmVjb3JkZWQgZmlsZS5cbiAqIElmIG5vIHByZXZpb3VzbHkgcmVjb3JkZWQgZmlsZSBpcyBmb3VuZCBhbmQgbm8gYWN0aXZlIHRyYWZmaWMgY2FwdHVyZVxuICogcHJvY2Vzc2VzIGFyZSBydW5uaW5nIHRoZW4gdGhlIG1ldGhvZCByZXR1cm5zIGFuIGVtcHR5IHN0cmluZy5cbiAqXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBCYXNlNjQtZW5jb2RlZCBjb250ZW50IG9mIHRoZSByZWNvcmRlZCBwY2FwIGZpbGUgb3IgYW5cbiAqIGVtcHR5IHN0cmluZyBpZiBubyB0cmFmZmljIGNhcHR1cmUgaGFzIGJlZW4gc3RhcnRlZCBiZWZvcmUuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlcmUgd2FzIGFuIGVycm9yIHdoaWxlIGdldHRpbmcgdGhlIGNhcHR1cmUgZmlsZS5cbiAqL1xuY29tbWFuZHMubW9iaWxlU3RvcFBjYXAgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVTdG9wUGNhcCAoKSB7XG4gIGlmICghdGhpcy5fdHJhZmZpY0NhcHR1cmUpIHtcbiAgICBsb2cuaW5mbygnTmV0d29yayB0cmFmZmljIGNvbGxlY3RvciBoYXMgbm90IGJlZW4gc3RhcnRlZC4gVGhlcmUgaXMgbm90aGluZyB0byBzdG9wJyk7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgbGV0IHJlc3VsdFBhdGg7XG4gIHRyeSB7XG4gICAgcmVzdWx0UGF0aCA9IGF3YWl0IHRoaXMuX3RyYWZmaWNDYXB0dXJlLmZpbmlzaCgpO1xuICAgIGlmICghYXdhaXQgZnMuZXhpc3RzKHJlc3VsdFBhdGgpKSB7XG4gICAgICBsb2cuZXJyb3JBbmRUaHJvdyhgVGhlIG5ldHdvcmsgdHJhZmZpYyBjYXB0dXJlIHV0aWxpdHkgaGFzIGZhaWxlZCBgICtcbiAgICAgICAgYHRvIHN0b3JlIHRoZSBhY3R1YWwgdHJhZmZpYyBjYXB0dXJlIGF0ICcke3Jlc3VsdFBhdGh9J2ApO1xuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICAgIGF3YWl0IHRoaXMuX3RyYWZmaWNDYXB0dXJlLmludGVycnVwdCh0cnVlKTtcbiAgICBhd2FpdCB0aGlzLl90cmFmZmljQ2FwdHVyZS5jbGVhbnVwKCk7XG4gICAgdGhpcy5fdHJhZmZpY0NhcHR1cmUgPSBudWxsO1xuICAgIHRocm93IGU7XG4gIH1cbiAgcmV0dXJuIGF3YWl0IGVuY29kZUJhc2U2NE9yVXBsb2FkKHJlc3VsdFBhdGgpO1xufTtcblxuZXhwb3J0IHsgY29tbWFuZHMgfTtcbmV4cG9ydCBkZWZhdWx0IGNvbW1hbmRzO1xuIl0sImZpbGUiOiJsaWIvY29tbWFuZHMvcGNhcC5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
|