appium-xcuitest-driver 4.9.0 → 4.10.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +32 -1
- package/build/lib/commands/certificate.js +17 -1
- package/build/lib/commands/execute.js +2 -1
- package/build/lib/device-log/ios-crash-log.js +2 -2
- package/lib/commands/certificate.js +21 -0
- package/lib/commands/execute.js +1 -0
- package/lib/device-log/ios-crash-log.js +2 -1
- package/npm-shrinkwrap.json +404 -179
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -617,6 +617,37 @@ isRoot | boolean | no | This option defines where the certificate should be inst
|
|
|
617
617
|
|
|
618
618
|
The content of the generated .mobileconfig file as base64-encoded string. This config might be useful for debugging purposes. If the certificate has been successfully set via CLI then nothing is returned.
|
|
619
619
|
|
|
620
|
+
### mobile: listCertificates
|
|
621
|
+
|
|
622
|
+
Lists installed certificates for real devices only if [py-ios-device](https://github.com/YueChen-C/py-ios-device) tool is available on the server machine since driver version 4.10.0.
|
|
623
|
+
|
|
624
|
+
#### Returned Result
|
|
625
|
+
|
|
626
|
+
Returns map of certificates installed on the real device. The response looks like:
|
|
627
|
+
|
|
628
|
+
```json
|
|
629
|
+
{
|
|
630
|
+
'OrderedIdentifiers': ['com.orgname.profile.mdmprofile'],
|
|
631
|
+
'ProfileManifest': {
|
|
632
|
+
'com.orgname.profile.mdmprofile': {
|
|
633
|
+
'Description': 'MDM Profile',
|
|
634
|
+
'IsActive': True
|
|
635
|
+
}
|
|
636
|
+
},
|
|
637
|
+
'ProfileMetadata': {
|
|
638
|
+
'com.orgname.profile.mdmprofile': {
|
|
639
|
+
'PayloadDescription': 'MDM Profile for testing,
|
|
640
|
+
'PayloadDisplayName': 'MDM Profile',
|
|
641
|
+
'PayloadOrganization': 'My Org, Inc.',
|
|
642
|
+
'PayloadRemovalDisallowed': False,
|
|
643
|
+
'PayloadUUID': '9ab3fa27-cc45-4c23-a94a-714686397a86',
|
|
644
|
+
'PayloadVersion': 1
|
|
645
|
+
}
|
|
646
|
+
},
|
|
647
|
+
'Status': 'Acknowledged'
|
|
648
|
+
}
|
|
649
|
+
```
|
|
650
|
+
|
|
620
651
|
### mobile: startLogsBroadcast
|
|
621
652
|
|
|
622
653
|
Starts iOS system logs broadcast websocket on the same host and port where Appium server is running at `/ws/session/:sessionId:/appium/syslog` endpoint. The method will return immediately if the web socket is already listening.
|
|
@@ -848,7 +879,7 @@ Deletes the given file from the device under test.
|
|
|
848
879
|
|
|
849
880
|
Name | Type | Required | Description | Example
|
|
850
881
|
--- | --- | --- | --- | ---
|
|
851
|
-
remotePath | string | yes | The path to an existing remote file on the device. This variable can be prefixed with bundle id, so then the file will be
|
|
882
|
+
remotePath | string | yes | The path to an existing remote file on the device. This variable can be prefixed with bundle id, so then the file will be deleted from the corresponding application container instead of the default media folder. Use `@<app_bundle_id>:<optional_container_type>/<path_to_the_file_or_folder_inside_container>` format to delete a file or a folder from an application container of the given type. The only supported container type is 'documents'. If the container type is not set explicitly for a bundle id, then the default application container is going to be mounted (aka --container ifuse argument) e.g. If `@com.myapp.bla:documents/111.png` is provided, `On My iPhone/<app name>` in Files app will be mounted to the host machine. `@com.myapp.bla:documents/` means `On My iPhone/<app name>`. | @com.mycompany.myapp:documents/myfile.txt
|
|
852
883
|
|
|
853
884
|
### mobile: deleteFolder
|
|
854
885
|
|
|
@@ -30,6 +30,8 @@ var _portscanner = require("portscanner");
|
|
|
30
30
|
|
|
31
31
|
var _pyIosDeviceClient = _interopRequireDefault(require("../py-ios-device-client"));
|
|
32
32
|
|
|
33
|
+
var _driver = require("appium/driver");
|
|
34
|
+
|
|
33
35
|
let extensions = {},
|
|
34
36
|
commands = {};
|
|
35
37
|
exports.commands = commands;
|
|
@@ -391,9 +393,23 @@ commands.mobileInstallCertificate = async function mobileInstallCertificate(opts
|
|
|
391
393
|
}
|
|
392
394
|
};
|
|
393
395
|
|
|
396
|
+
commands.mobileListCertificates = async function mobileListCertificates() {
|
|
397
|
+
if (!this.isRealDevice()) {
|
|
398
|
+
throw new _driver.errors.NotImplementedError('This extension is only supported on real devices');
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
const client = new _pyIosDeviceClient.default(this.opts.udid);
|
|
402
|
+
|
|
403
|
+
if (await client.assertExists(false)) {
|
|
404
|
+
return await client.listProfiles();
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
throw new Error('pyidevice is not installed on your system, command cannot be executed.');
|
|
408
|
+
};
|
|
409
|
+
|
|
394
410
|
Object.assign(extensions, commands);
|
|
395
411
|
var _default = extensions;
|
|
396
412
|
exports.default = _default;require('source-map-support').install();
|
|
397
413
|
|
|
398
414
|
|
|
399
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2NlcnRpZmljYXRlLmpzIiwibmFtZXMiOlsiZXh0ZW5zaW9ucyIsImNvbW1hbmRzIiwiQ09ORklHX0VYVEVOU0lPTiIsIkhPU1RfUE9SVF9SQU5HRSIsIlRNUFNFUlZFUl9TVEFSVFVQX1RJTUVPVVQiLCJTZXR0aW5ncyIsIkdlbmVyYWwiLCJ0eXBlIiwidmFsdWUiLCJQcm9maWxlIiwiQWJvdXQiLCJDZXJ0aWZpY2F0ZV9UcnVzdF9TZXR0aW5ncyIsIkJ1dHRvbiIsIkluc3RhbGwiLCJBbGxvdyIsIkRvbmUiLCJSZXR1cm5fdG9fU2V0dGluZ3MiLCJBbGVydCIsImV4dHJhY3RDb21tb25OYW1lIiwiY2VydEJ1ZmZlciIsInRlbXBDZXJ0IiwidGVtcERpciIsIm9wZW4iLCJwcmVmaXgiLCJzdWZmaXgiLCJmcyIsIndyaXRlRmlsZSIsInBhdGgiLCJzdGRvdXQiLCJleGVjIiwicGFyc2VDb21tb25OYW1lIiwiZXJyIiwiRXJyb3IiLCJtZXNzYWdlIiwicmltcmFmIiwiTElCUkVfU1NMX1BBVFRFUk4iLCJPUEVOX1NTTF9QQVRURVJOIiwic3RyaW5nQ2VydGlmaWNhdGUiLCJyZXN1bHQiLCJyZWR1Y2UiLCJhY2MiLCJyIiwibWF0Y2giLCJ0b01vYmlsZUNvbmZpZyIsImNvbW1vbk5hbWUiLCJnZXRVVUlEIiwidXRpbCIsInV1aWRWNCIsInRvVXBwZXJDYXNlIiwiY29udGVudFV1aWQiLCJQYXlsb2FkQ29udGVudCIsIlBheWxvYWRDZXJ0aWZpY2F0ZUZpbGVOYW1lIiwiUGF5bG9hZERlc2NyaXB0aW9uIiwiUGF5bG9hZERpc3BsYXlOYW1lIiwiUGF5bG9hZElkZW50aWZpZXIiLCJQYXlsb2FkVHlwZSIsIlBheWxvYWRVVUlEIiwiUGF5bG9hZFZlcnNpb24iLCJvcyIsImhvc3RuYW1lIiwic3BsaXQiLCJQYXlsb2FkUmVtb3ZhbERpc2FsbG93ZWQiLCJjbGlja0VsZW1lbnQiLCJkcml2ZXIiLCJsb2NhdG9yIiwib3B0aW9ucyIsImVsZW1lbnQiLCJ0aW1lb3V0Iiwic2tpcElmSW52aXNpYmxlIiwibG9va3VwRGVsYXkiLCJyZXRyeUludGVydmFsIiwiZmluZE5hdGl2ZUVsZW1lbnRPckVsZW1lbnRzIiwiSlNPTiIsInN0cmluZ2lmeSIsIm5hdGl2ZUNsaWNrIiwiaW5zdGFsbFByZTEyMkNlcnRpZmljYXRlIiwiQiIsImRlbGF5IiwidHJ1c3RDZXJ0aWZpY2F0ZUluUHJlZmVyZW5jZXMiLCJuYW1lIiwic3dpdGNoTG9jYXRvciIsInJldHJ5IiwibW9iaWxlU3dpcGUiLCJkaXJlY3Rpb24iLCJwb3N0QWNjZXB0QWxlcnQiLCJpbnN0YWxsUG9zdDEyMkNlcnRpZmljYXRlIiwiYWN0aXZhdGVBcHAiLCJpc0NlcnRGb3VuZCIsInN3aXBlTnVtIiwibW9iaWxlSW5zdGFsbENlcnRpZmljYXRlIiwib3B0cyIsImNvbnRlbnQiLCJpc1Jvb3QiLCJfIiwiaXNFbXB0eSIsImlzU2ltdWxhdG9yIiwibWV0aG9kTmFtZSIsImRldmljZSIsInNpbWN0bCIsIkJ1ZmZlciIsImZyb20iLCJ0b1N0cmluZyIsInJhdyIsImUiLCJsb2ciLCJkZWJ1ZyIsImluZm8iLCJjbGllbnQiLCJQeWlkZXZpY2UiLCJ1ZGlkIiwiYXNzZXJ0RXhpc3RzIiwiaW5zdGFsbFByb2ZpbGUiLCJwYXlsb2FkIiwidG1wUm9vdCIsIm9wZW5EaXIiLCJ0bXBQb3J0IiwiZmluZEFQb3J0Tm90SW5Vc2UiLCJjb25maWdOYW1lIiwiY29uZmlnUGF0aCIsInJlc29sdmUiLCJ0bXBTZXJ2ZXIiLCJodHRwIiwiY3JlYXRlU2VydmVyIiwicmVzIiwiY29uZmlnRmlsZSIsInJlYWRGaWxlIiwiZW5kIiwiY24iLCJtb2JpbGVDb25maWciLCJwbGlzdCIsInVwZGF0ZVBsaXN0RmlsZSIsImhvc3QiLCJjZXJ0VXJsIiwibGlzdGVuIiwid2FpdEZvckNvbmRpdGlvbiIsImNoZWNrUG9ydFN0YXR1cyIsImlnbiIsIndhaXRNcyIsImludGVydmFsTXMiLCJpc1JlYWxEZXZpY2UiLCJwcm94eUNvbW1hbmQiLCJ1cmwiLCJpc1dlYkNvbnRleHQiLCJzZXRVcmwiLCJvcGVuVXJsIiwiaXNDZXJ0QWxyZWFkeUluc3RhbGxlZCIsImNvbXBhcmVWZXJzaW9ucyIsInBsYXRmb3JtVmVyc2lvbiIsImJ1bmRsZUlkIiwid2FybiIsInRvSW5NZW1vcnlCYXNlNjQiLCJjbG9zZSIsIk9iamVjdCIsImFzc2lnbiJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9jZXJ0aWZpY2F0ZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgZnMsIHBsaXN0LCB0ZW1wRGlyLCB1dGlsIH0gZnJvbSAnYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IHsgcmV0cnlJbnRlcnZhbCwgcmV0cnksIHdhaXRGb3JDb25kaXRpb24gfSBmcm9tICdhc3luY2JveCc7XG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5pbXBvcnQgb3MgZnJvbSAnb3MnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgaHR0cCBmcm9tICdodHRwJztcbmltcG9ydCB7IGV4ZWMgfSBmcm9tICd0ZWVuX3Byb2Nlc3MnO1xuaW1wb3J0IHsgZmluZEFQb3J0Tm90SW5Vc2UsIGNoZWNrUG9ydFN0YXR1cyB9IGZyb20gJ3BvcnRzY2FubmVyJztcbmltcG9ydCBQeWlkZXZpY2UgZnJvbSAnLi4vcHktaW9zLWRldmljZS1jbGllbnQnO1xuXG5sZXQgZXh0ZW5zaW9ucyA9IHt9LCBjb21tYW5kcyA9IHt9O1xuXG5jb25zdCBDT05GSUdfRVhURU5TSU9OID0gJ21vYmlsZWNvbmZpZyc7XG5jb25zdCBIT1NUX1BPUlRfUkFOR0UgPSBbMzgyMDAsIDM4Mjk5XTtcbmNvbnN0IFRNUFNFUlZFUl9TVEFSVFVQX1RJTUVPVVQgPSA1MDAwO1xuY29uc3QgU2V0dGluZ3MgPSB7XG4gIEdlbmVyYWw6IHtcbiAgICB0eXBlOiAnYWNjZXNzaWJpbGl0eSBpZCcsXG4gICAgdmFsdWU6ICdHZW5lcmFsJyxcbiAgfSxcbiAgUHJvZmlsZToge1xuICAgIHR5cGU6ICctaW9zIHByZWRpY2F0ZSBzdHJpbmcnLFxuICAgIHZhbHVlOiBgbmFtZSBCRUdJTlNXSVRIICdQcm9maWxlJ2AsXG4gIH0sXG4gIEFib3V0OiB7XG4gICAgdHlwZTogJ2FjY2Vzc2liaWxpdHkgaWQnLFxuICAgIHZhbHVlOiAnQWJvdXQnLFxuICB9LFxuICBDZXJ0aWZpY2F0ZV9UcnVzdF9TZXR0aW5nczoge1xuICAgIHR5cGU6ICdhY2Nlc3NpYmlsaXR5IGlkJyxcbiAgICB2YWx1ZTogJ0NlcnRpZmljYXRlIFRydXN0IFNldHRpbmdzJyxcbiAgfSxcbn07XG5jb25zdCBCdXR0b24gPSB7XG4gIEluc3RhbGw6IHtcbiAgICB0eXBlOiAnYWNjZXNzaWJpbGl0eSBpZCcsXG4gICAgdmFsdWU6ICdJbnN0YWxsJyxcbiAgfSxcbiAgQWxsb3c6IHtcbiAgICB0eXBlOiAnYWNjZXNzaWJpbGl0eSBpZCcsXG4gICAgdmFsdWU6ICdBbGxvdycsXG4gIH0sXG4gIERvbmU6IHtcbiAgICB0eXBlOiAnYWNjZXNzaWJpbGl0eSBpZCcsXG4gICAgdmFsdWU6ICdEb25lJyxcbiAgfSxcbiAgUmV0dXJuX3RvX1NldHRpbmdzOiB7XG4gICAgdHlwZTogJ2FjY2Vzc2liaWxpdHkgaWQnLFxuICAgIHZhbHVlOiAnUmV0dXJuIHRvIFNldHRpbmdzJyxcbiAgfSxcbn07XG5jb25zdCBBbGVydCA9IHtcbiAgSW5zdGFsbDoge1xuICAgIHR5cGU6ICctaW9zIGNsYXNzIGNoYWluJyxcbiAgICB2YWx1ZTogJyoqL1hDVUlFbGVtZW50VHlwZUFueVtgdHlwZSA9PSBcXCdYQ1VJRWxlbWVudFR5cGVBbGVydFxcJyBPUiB0eXBlID09IFxcJ1hDVUlFbGVtZW50VHlwZVNoZWV0XFwnYF0vKiovWENVSUVsZW1lbnRUeXBlQnV0dG9uW2BsYWJlbCA9PSBcXCdJbnN0YWxsXFwnYF0nLFxuICB9LFxufTtcblxuXG5hc3luYyBmdW5jdGlvbiBleHRyYWN0Q29tbW9uTmFtZSAoY2VydEJ1ZmZlcikge1xuICBjb25zdCB0ZW1wQ2VydCA9IGF3YWl0IHRlbXBEaXIub3Blbih7XG4gICAgcHJlZml4OiAnY2VydCcsXG4gICAgc3VmZml4OiAnLmNlcidcbiAgfSk7XG4gIHRyeSB7XG4gICAgYXdhaXQgZnMud3JpdGVGaWxlKHRlbXBDZXJ0LnBhdGgsIGNlcnRCdWZmZXIpO1xuICAgIGNvbnN0IHtzdGRvdXR9ID0gYXdhaXQgZXhlYygnb3BlbnNzbCcsIFsneDUwOScsICctbm9vdXQnLCAnLXN1YmplY3QnLCAnLWluJywgdGVtcENlcnQucGF0aF0pO1xuICAgIHJldHVybiBwYXJzZUNvbW1vbk5hbWUoc3Rkb3V0KTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgcGFyc2UgY29tbW9uIG5hbWUgdmFsdWUgZnJvbSB0aGUgY2VydGlmaWNhdGUuIElzIGl0IHZhbGlkIGFuZCBiYXNlNjQtZW5jb2RlZD8gYCArXG4gICAgICAgICAgICAgICAgICAgIGBPcmlnaW5hbCBlcnJvcjogJHtlcnIubWVzc2FnZX1gKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBhd2FpdCBmcy5yaW1yYWYodGVtcENlcnQucGF0aCk7XG4gIH1cbn1cblxuY29uc3QgTElCUkVfU1NMX1BBVFRFUk4gPSAvXFwvQ049KFteXFwvXSspLzsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11c2VsZXNzLWVzY2FwZVxuY29uc3QgT1BFTl9TU0xfUEFUVEVSTiA9IC8sXFxzQ05cXHM9XFxzKFteLF0rKS87XG5cbmZ1bmN0aW9uIHBhcnNlQ29tbW9uTmFtZSAoc3RyaW5nQ2VydGlmaWNhdGUpIHtcbiAgY29uc3QgcmVzdWx0ID0gW0xJQlJFX1NTTF9QQVRURVJOLCBPUEVOX1NTTF9QQVRURVJOXS5yZWR1Y2UoKGFjYywgcikgPT4ge1xuICAgIGlmIChhY2MpIHtcbiAgICAgIHJldHVybiBhY2M7XG4gICAgfVxuICAgIGNvbnN0IG1hdGNoID0gci5leGVjKHN0cmluZ0NlcnRpZmljYXRlKTtcbiAgICByZXR1cm4gbWF0Y2ggJiYgbWF0Y2hbMV07XG4gIH0sIG51bGwpO1xuICBpZiAoIXJlc3VsdCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgVGhlcmUgaXMgbm8gY29tbW9uIG5hbWUgdmFsdWUgaW4gJyR7c3RyaW5nQ2VydGlmaWNhdGV9JyBvdXRwdXRgKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIEdlbmVyYXRlcyBBcHBsZSdzIG92ZXItdGhlLWFpciBjb25maWd1cmF0aW9uIHByb2ZpbGVcbiAqIGZvciBjZXJ0aWZpY2F0ZSBkZXBsb3ltZW50IGJhc2VkIG9uIHRoZSBnaXZlbiBQRU0gY2VydGlmaWNhdGUgY29udGVudC5cbiAqIFJlYWQgaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2xpYnJhcnkvY29udGVudC9kb2N1bWVudGF0aW9uL05ldHdvcmtpbmdJbnRlcm5ldC9Db25jZXB0dWFsL2lQaG9uZU9UQUNvbmZpZ3VyYXRpb24vSW50cm9kdWN0aW9uL0ludHJvZHVjdGlvbi5odG1sXG4gKiBmb3IgbW9yZSBkZXRhaWxzIG9uIHN1Y2ggcHJvZmlsZXMuXG4gKlxuICogQHBhcmFtIHtCdWZmZXJ9IGNlcnRCdWZmZXIgLSBUaGUgYWN0dWFsIGNvbnRlbnQgb2YgUEVNIGNlcnRpZmljYXRlIGVuY29kZWQgaW50byBOb2RlSlMgYnVmZmVyXG4gKiBAcGFyYW0ge3N0cmluZ30gY29tbW9uTmFtZSAtIENlcnRpZmljYXRlJ3MgY29tbW9uIG5hbWVcbiAqIEByZXR1cm5zIHtPYmplY3R9IFRoZSBlbmNvZGVkIHN0cnVjdHVyZSBvZiB0aGUgZ2l2ZW4gY2VydGlmaWNhdGUsIHdoaWNoIGlzIHJlYWR5IHRvIGJlIHBhc3NlZFxuICogYXMgYW4gYXJndW1lbnQgdG8gcGxpc3QgYnVpbGRlclxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBnaXZlbiBjZXJ0aWZpY2F0ZSBjYW5ub3QgYmUgcGFyc2VkXG4gKi9cbmZ1bmN0aW9uIHRvTW9iaWxlQ29uZmlnIChjZXJ0QnVmZmVyLCBjb21tb25OYW1lKSB7XG4gIGNvbnN0IGdldFVVSUQgPSAoKSA9PiB1dGlsLnV1aWRWNCgpLnRvVXBwZXJDYXNlKCk7XG4gIGNvbnN0IGNvbnRlbnRVdWlkID0gZ2V0VVVJRCgpO1xuICByZXR1cm4ge1xuICAgIFBheWxvYWRDb250ZW50OiBbe1xuICAgICAgUGF5bG9hZENlcnRpZmljYXRlRmlsZU5hbWU6IGAke2NvbW1vbk5hbWV9LmNlcmAsXG4gICAgICBQYXlsb2FkQ29udGVudDogY2VydEJ1ZmZlcixcbiAgICAgIFBheWxvYWREZXNjcmlwdGlvbjogJ0FkZHMgYSBDQSByb290IGNlcnRpZmljYXRlJyxcbiAgICAgIFBheWxvYWREaXNwbGF5TmFtZTogY29tbW9uTmFtZSxcbiAgICAgIFBheWxvYWRJZGVudGlmaWVyOiBgY29tLmFwcGxlLnNlY3VyaXR5LnJvb3QuJHtjb250ZW50VXVpZH1gLFxuICAgICAgUGF5bG9hZFR5cGU6ICdjb20uYXBwbGUuc2VjdXJpdHkucm9vdCcsXG4gICAgICBQYXlsb2FkVVVJRDogY29udGVudFV1aWQsXG4gICAgICBQYXlsb2FkVmVyc2lvbjogMVxuICAgIH1dLFxuICAgIFBheWxvYWREaXNwbGF5TmFtZTogY29tbW9uTmFtZSxcbiAgICBQYXlsb2FkSWRlbnRpZmllcjogYCR7b3MuaG9zdG5hbWUoKS5zcGxpdCgnLicpWzBdfS4ke2dldFVVSUQoKX1gLFxuICAgIFBheWxvYWRSZW1vdmFsRGlzYWxsb3dlZDogZmFsc2UsXG4gICAgUGF5bG9hZFR5cGU6ICdDb25maWd1cmF0aW9uJyxcbiAgICBQYXlsb2FkVVVJRDogZ2V0VVVJRCgpLFxuICAgIFBheWxvYWRWZXJzaW9uOiAxXG4gIH07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNsaWNrRWxlbWVudCAoZHJpdmVyLCBsb2NhdG9yLCBvcHRpb25zID0ge30pIHtcbiAgbGV0IGVsZW1lbnQgPSBudWxsO1xuICBjb25zdCB7XG4gICAgdGltZW91dCA9IDUwMDAsXG4gICAgc2tpcElmSW52aXNpYmxlID0gZmFsc2VcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGxvb2t1cERlbGF5ID0gNTAwO1xuICB0cnkge1xuICAgIGVsZW1lbnQgPSBhd2FpdCByZXRyeUludGVydmFsKHRpbWVvdXQgPCBsb29rdXBEZWxheSA/IDEgOiB0aW1lb3V0IC8gbG9va3VwRGVsYXksIGxvb2t1cERlbGF5LFxuICAgICAgKCkgPT4gZHJpdmVyLmZpbmROYXRpdmVFbGVtZW50T3JFbGVtZW50cyhsb2NhdG9yLnR5cGUsIGxvY2F0b3IudmFsdWUsIGZhbHNlKVxuICAgICk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGlmIChza2lwSWZJbnZpc2libGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZmluZCAke0pTT04uc3RyaW5naWZ5KGxvY2F0b3IpfSB3aXRoaW4gJHt0aW1lb3V0fW1zIHRpbWVvdXRgKTtcbiAgfVxuICBhd2FpdCBkcml2ZXIubmF0aXZlQ2xpY2soZWxlbWVudCk7XG4gIHJldHVybiB0cnVlO1xufVxuXG5hc3luYyBmdW5jdGlvbiBpbnN0YWxsUHJlMTIyQ2VydGlmaWNhdGUgKGRyaXZlcikge1xuICAvLyBBY2NlcHQgU2FmYXJpIGFsZXJ0XG4gIGF3YWl0IGNsaWNrRWxlbWVudChkcml2ZXIsIEJ1dHRvbi5BbGxvdywge1xuICAgIC8vIGNlcnRpZmljYXRlIGxvYWQgbWlnaHQgdGFrZSBzb21lIHRpbWUgb24gc2xvdyBtYWNoaW5lc1xuICAgIHRpbWVvdXQ6IDE1MDAwLFxuICB9KTtcbiAgLy8gV2FpdCB1bnRpbCBQcmVmZXJlbmNlcyBhcmUgb3BlbmVkXG4gIGF3YWl0IEIuZGVsYXkoMjAwMCk7XG5cbiAgLy8gR28gdGhyb3VnaCBQcmVmZXJlbmNlcyB3aXphcmRcbiAgaWYgKCFhd2FpdCBjbGlja0VsZW1lbnQoZHJpdmVyLCBCdXR0b24uSW5zdGFsbCwge1xuICAgIHNraXBJZkludmlzaWJsZTogdHJ1ZSxcbiAgfSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgLy8gV2UgbmVlZCB0byBjbGljayBJbnN0YWxsIGJ1dHRvbiBvbiB0d28gZGlmZmVyZW50IHRhYnNcbiAgLy8gVGhlIHNlY29uZCBvbmUgY29uZmlybXMgdGhlIHByZXZpb3VzXG4gIGF3YWl0IEIuZGVsYXkoMTUwMCk7XG4gIGF3YWl0IGNsaWNrRWxlbWVudChkcml2ZXIsIEJ1dHRvbi5JbnN0YWxsKTtcbiAgLy8gQWNjZXB0IGFsZXJ0XG4gIGF3YWl0IGNsaWNrRWxlbWVudChkcml2ZXIsIEFsZXJ0Lkluc3RhbGwpO1xuICAvLyBGaW5pc2ggYWRkaW5nIGNlcnRpZmljYXRlXG4gIGF3YWl0IGNsaWNrRWxlbWVudChkcml2ZXIsIEJ1dHRvbi5Eb25lKTtcbiAgcmV0dXJuIHRydWU7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHRydXN0Q2VydGlmaWNhdGVJblByZWZlcmVuY2VzIChkcml2ZXIsIG5hbWUpIHtcbiAgYXdhaXQgY2xpY2tFbGVtZW50KGRyaXZlciwgU2V0dGluZ3MuR2VuZXJhbCk7XG4gIGF3YWl0IGNsaWNrRWxlbWVudChkcml2ZXIsIFNldHRpbmdzLkFib3V0KTtcbiAgY29uc3Qgc3dpdGNoTG9jYXRvciA9IHtcbiAgICB0eXBlOiAnLWlvcyBjbGFzcyBjaGFpbicsXG4gICAgdmFsdWU6IGAqKi9YQ1VJRWxlbWVudFR5cGVDZWxsW1xcYGxhYmVsID09ICcke25hbWV9J1xcYF0vKiovWENVSUVsZW1lbnRUeXBlU3dpdGNoYCxcbiAgfTtcbiAgYXdhaXQgcmV0cnkoNSwgYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IGRyaXZlci5tb2JpbGVTd2lwZSh7XG4gICAgICBlbGVtZW50OiBhd2FpdCBkcml2ZXIuZmluZE5hdGl2ZUVsZW1lbnRPckVsZW1lbnRzKCdjbGFzcyBuYW1lJywgJ1hDVUlFbGVtZW50VHlwZVRhYmxlJywgZmFsc2UpLFxuICAgICAgZGlyZWN0aW9uOiAndXAnXG4gICAgfSk7XG4gICAgYXdhaXQgY2xpY2tFbGVtZW50KGRyaXZlciwgU2V0dGluZ3MuQ2VydGlmaWNhdGVfVHJ1c3RfU2V0dGluZ3MsIHtcbiAgICAgIHRpbWVvdXQ6IDUwMCxcbiAgICB9KTtcblxuICAgIGF3YWl0IGRyaXZlci5maW5kTmF0aXZlRWxlbWVudE9yRWxlbWVudHMoc3dpdGNoTG9jYXRvci50eXBlLCBzd2l0Y2hMb2NhdG9yLnZhbHVlLCBmYWxzZSk7XG4gIH0pO1xuICAvLyBPbmx5IGNsaWNrIHRoZSBzd2l0Y2ggaWYgaXQgaXMgc2V0IHRvIE9mZlxuICBpZiAoYXdhaXQgY2xpY2tFbGVtZW50KGRyaXZlciwge1xuICAgIHR5cGU6IHN3aXRjaExvY2F0b3IudHlwZSxcbiAgICB2YWx1ZTogYCR7c3dpdGNoTG9jYXRvci52YWx1ZX1bXFxgdmFsdWUgPT0gJzAnXFxgXWBcbiAgfSwge1xuICAgIHRpbWVvdXQ6IDEwMDAsXG4gICAgc2tpcElmSW52aXNpYmxlOiB0cnVlLFxuICB9KSkge1xuICAgIGF3YWl0IGRyaXZlci5wb3N0QWNjZXB0QWxlcnQoKTtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBpbnN0YWxsUG9zdDEyMkNlcnRpZmljYXRlIChkcml2ZXIsIG5hbWUpIHtcbiAgLy8gQWNjZXB0IFNhZmFyaSBhbGVydFxuICBhd2FpdCBjbGlja0VsZW1lbnQoZHJpdmVyLCBCdXR0b24uQWxsb3csIHtcbiAgICAvLyBjZXJ0aWZpY2F0ZSBsb2FkIG1pZ2h0IHRha2Ugc29tZSB0aW1lIG9uIHNsb3cgbWFjaGluZXNcbiAgICB0aW1lb3V0OiAxNTAwMCxcbiAgfSk7XG4gIC8vIFdhaXQgZm9yIHRoZSBzZWNvbmQgYWxlcnRcbiAgYXdhaXQgQi5kZWxheSgyMDAwKTtcblxuICBhd2FpdCBkcml2ZXIucG9zdEFjY2VwdEFsZXJ0KCk7XG4gIGF3YWl0IGRyaXZlci5hY3RpdmF0ZUFwcCgnY29tLmFwcGxlLlByZWZlcmVuY2VzJyk7XG4gIGF3YWl0IGNsaWNrRWxlbWVudChkcml2ZXIsIFNldHRpbmdzLkdlbmVyYWwpO1xuICBhd2FpdCBjbGlja0VsZW1lbnQoZHJpdmVyLCBTZXR0aW5ncy5Qcm9maWxlKTtcbiAgLy8gU2VsZWN0IHRoZSB0YXJnZXQgY2VydFxuICBsZXQgaXNDZXJ0Rm91bmQgPSBmYWxzZTtcbiAgZm9yIChsZXQgc3dpcGVOdW0gPSAwOyBzd2lwZU51bSA8IDU7ICsrc3dpcGVOdW0pIHtcbiAgICBpZiAoYXdhaXQgY2xpY2tFbGVtZW50KGRyaXZlciwge1xuICAgICAgdHlwZTogJy1pb3MgY2xhc3MgY2hhaW4nLFxuICAgICAgdmFsdWU6IGAqKi9YQ1VJRWxlbWVudFR5cGVDZWxsW1xcYGxhYmVsID09ICcke25hbWV9J1xcYF1gLFxuICAgIH0sIHtcbiAgICAgIHRpbWVvdXQ6IDUwMCxcbiAgICAgIHNraXBJZkludmlzaWJsZTogdHJ1ZSxcbiAgICB9KSkge1xuICAgICAgaXNDZXJ0Rm91bmQgPSB0cnVlO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgYXdhaXQgZHJpdmVyLm1vYmlsZVN3aXBlKHtcbiAgICAgIGVsZW1lbnQ6IGF3YWl0IGRyaXZlci5maW5kTmF0aXZlRWxlbWVudE9yRWxlbWVudHMoJ2NsYXNzIG5hbWUnLCAnWENVSUVsZW1lbnRUeXBlVGFibGUnLCBmYWxzZSksXG4gICAgICBkaXJlY3Rpb246ICd1cCdcbiAgICB9KTtcbiAgfVxuICBpZiAoIWlzQ2VydEZvdW5kKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGAnJHtuYW1lfScgY2Fubm90IGJlIGZvdW5kIGluIHRoZSBjZXJ0aWZpY2F0ZXMgbGlzdGApO1xuICB9XG5cbiAgLy8gSW5zdGFsbCBvcHRpb24gaXMgb25seSB2aXNpYmxlIGlmIHRoZSBjZXJ0IGlzIG5vdCBpbnN0YWxsZWQgeWV0XG4gIGlmICghYXdhaXQgY2xpY2tFbGVtZW50KGRyaXZlciwgQnV0dG9uLkluc3RhbGwsIHtcbiAgICBza2lwSWZJbnZpc2libGU6IHRydWUsXG4gIH0pKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGF3YWl0IEIuZGVsYXkoMTUwMCk7XG4gIC8vIENvbmZpcm0gdW50cnVzdGVkIGNlcnQgaW5zdGFsbFxuICBhd2FpdCBjbGlja0VsZW1lbnQoZHJpdmVyLCBCdXR0b24uSW5zdGFsbCk7XG4gIC8vIEFjY2VwdCBhbGVydFxuICBhd2FpdCBjbGlja0VsZW1lbnQoZHJpdmVyLCBBbGVydC5JbnN0YWxsKTtcbiAgLy8gRmluaXNoIGFkZGluZyBjZXJ0aWZpY2F0ZVxuICBhd2FpdCBjbGlja0VsZW1lbnQoZHJpdmVyLCBCdXR0b24uRG9uZSk7XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gQ2VydGlmaWNhdGVJbnN0YWxsYXRpb25PcHRpb25zXG4gKlxuICogQHByb3BlcnR5IHshc3RyaW5nfSBjb250ZW50IC0gQmFzZTY0LWVuY29kZWQgY29udGVudCBvZiB0aGUgcHVibGljIGNlcnRpZmljYXRlXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGNvbW1vbk5hbWUgLSBDb21tb24gbmFtZSBvZiB0aGUgY2VydGlmaWNhdGUuIElmIHRoaXMgaXMgbm90IHNldFxuICogdGhlbiB0aGUgc2NyaXB0IHdpbGwgdHJ5IHRvIHBhcnNlIGl0IGZyb20gdGhlIGdpdmVuIGNlcnRpZmljYXRlIGNvbnRlbnQuXG4gKiBAcHJvcGVydHkgez9ib29sZWFufSBpc1Jvb3QgW3RydWVdIC0gVGhpcyBvcHRpb24gZGVmaW5lcyB3aGVyZSB0aGUgY2VydGlmaWNhdGUgc2hvdWxkIGJlXG4gKiBpbnN0YWxsZWQgdG86IGVpdGhlciBUcnVzdGVkIFJvb3QgU3RvcmUgKGB0cnVlYCwgdGhlIGRlZmF1bHQgb3B0aW9uKSBvclxuICogdGhlIEtleWNoYWluIChgZmFsc2VgKS4gT24gZW52aXJvbm1lbnRzIG90aGVyIHRoYW4gWGNvZGUgMTEuNCsgU2ltdWxhdG9yIHRoaXNcbiAqIG9wdGlvbiBpcyBpZ25vcmVkLlxuICovXG5cbi8qKlxuICogSW5zdGFsbHMgYSBjdXN0b20gY2VydGlmaWNhdGUgb250byB0aGUgZGV2aWNlLlxuICogU2luY2UgWGNvZGUgU0RLIDExLjQgQXBwbGUgaGFzIGFkZGVkIGEgZGVkaWNhdGVkIHNpbWN0bCBzdWJjb21tYW5kIHRvIHF1aWNrbHkgaGFuZGxlXG4gKiBjZXJ0aWZpY2F0ZXMgb24gU2ltdWxhdG9yIG92ZXIgQ0xJLlxuICogT24gcmVhbCBkZXZpY2VzIG9yIHNpbXVsYXRvcnMgYmVmb3JlIFhjb2RlIDExLjQgU0RLXG4gKiBBcHBsZSBwcm92aWRlcyBubyBvZmZpY2lhbCB3YXkgdG8gZG8gaXQgdmlhIHRoZSBjb21tYW5kIGxpbmUuXG4gKiBJbiBzdWNoIGNhc2UgKGFuZCBhbHNvIGFzIGEgZmFsbGJhY2sgaWYgQ0xJIHNldHVwIGZhaWxzKVxuICogdGhpcyBtZXRob2QgdHJpZXMgdG8gd3JhcCB0aGUgY2VydGlmaWNhdGUgaW50byAubW9iaWxlY29uZmlnIGZvcm1hdFxuICogYW5kIHRoZW4gZGVwbG95cyB0aGUgd3JhcHBlZCBmaWxlIHRvIHRoZSBpbnRlcm5hbCBIVFRQIHNlcnZlcixcbiAqIHNvIG9uZSBjYW4gb3BlbiBpdCB2aWEgbW9iaWxlIFNhZmFyaS5cbiAqIFRoZW4gdGhlIGFsZ29yaXRobSBnb2VzIHRocm91Z2ggdGhlIHByb2ZpbGUgaW5zdGFsbGF0aW9uIHByb2NlZHVyZSBieVxuICogY2xpY2tpbmcgdGhlIG5lY2Vzc2FyeSBidXR0b25zIHVzaW5nIFdlYkRyaXZlckFnZW50LlxuICpcbiAqIEBwYXJhbSB7Q2VydGlmaWNhdGVJbnN0YWxsYXRpb25PcHRpb25zfSBvcHRzXG4gKiBAcmV0dXJucyB7P3N0cmluZ30gVGhlIGNvbnRlbnQgb2YgdGhlIGdlbmVyYXRlZCAubW9iaWxlY29uZmlnIGZpbGUgYXNcbiAqIGJhc2U2NC1lbmNvZGVkIHN0cmluZy4gVGhpcyBjb25maWcgbWlnaHQgYmUgdXNlZnVsIGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMuXG4gKiBJZiB0aGUgY2VydGlmaWNhdGUgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IHNldCB2aWEgQ0xJIHRoZW4gbm90aGluZyBpcyByZXR1cm5lZC5cbiAqL1xuY29tbWFuZHMubW9iaWxlSW5zdGFsbENlcnRpZmljYXRlID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlSW5zdGFsbENlcnRpZmljYXRlIChvcHRzID0ge30pIHtcbiAgY29uc3Qge1xuICAgIGNvbnRlbnQsXG4gICAgY29tbW9uTmFtZSxcbiAgICBpc1Jvb3QgPSB0cnVlLFxuICB9ID0gb3B0cztcbiAgaWYgKF8uaXNFbXB0eShjb250ZW50KSkge1xuICAgIHRocm93IG5ldyBFcnJvcignQ2VydGlmaWNhdGUgY29udGVudCBzaG91bGQgbm90IGJlIGVtcHR5Jyk7XG4gIH1cblxuICBpZiAodGhpcy5pc1NpbXVsYXRvcigpKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG1ldGhvZE5hbWUgPSBpc1Jvb3QgPyAnYWRkUm9vdENlcnRpZmljYXRlJyA6ICdhZGRDZXJ0aWZpY2F0ZSc7XG4gICAgICBhd2FpdCB0aGlzLm9wdHMuZGV2aWNlLnNpbWN0bFttZXRob2ROYW1lXShcbiAgICAgICAgQnVmZmVyLmZyb20oY29udGVudCwgJ2Jhc2U2NCcpLnRvU3RyaW5nKCksIHtyYXc6IHRydWV9XG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMubG9nLmRlYnVnKGUpO1xuICAgICAgdGhpcy5sb2cuaW5mbyhgVGhlIGNlcnRpZmljYXRlIGNhbm5vdCBiZSBpbnN0YWxsZWQgdmlhIENMSS4gYCArXG4gICAgICAgIGBGYWxsaW5nIGJhY2sgdG8gVUktYmFzZWQgZGVwbG95bWVudGApO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBjb25zdCBjbGllbnQgPSBuZXcgUHlpZGV2aWNlKHRoaXMub3B0cy51ZGlkKTtcbiAgICBpZiAoYXdhaXQgY2xpZW50LmFzc2VydEV4aXN0cyhmYWxzZSkpIHtcbiAgICAgIGF3YWl0IGNsaWVudC5pbnN0YWxsUHJvZmlsZSh7cGF5bG9hZDogQnVmZmVyLmZyb20oY29udGVudCwgJ2Jhc2U2NCcpfSk7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubG9nLmluZm8oJ3B5aWRldmljZSBpcyBub3QgaW5zdGFsbGVkIG9uIHlvdXIgc3lzdGVtLiAnICtcbiAgICAgICAgJ0ZhbGxpbmcgYmFjayB0byB0aGUgKHNsb3cpIFVJLWJhc2VkIGluc3RhbGxhdGlvbicpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHRtcFJvb3QgPSBhd2FpdCB0ZW1wRGlyLm9wZW5EaXIoKTtcbiAgY29uc3QgdG1wUG9ydCA9IGF3YWl0IGZpbmRBUG9ydE5vdEluVXNlKEhPU1RfUE9SVF9SQU5HRVswXSwgSE9TVF9QT1JUX1JBTkdFWzFdKTtcbiAgY29uc3QgY29uZmlnTmFtZSA9IGBhcHBpdW0uJHtDT05GSUdfRVhURU5TSU9OfWA7XG4gIGNvbnN0IGNvbmZpZ1BhdGggPSBwYXRoLnJlc29sdmUodG1wUm9vdCwgY29uZmlnTmFtZSk7XG4gIGNvbnN0IHRtcFNlcnZlciA9IGh0dHAuY3JlYXRlU2VydmVyKGFzeW5jIGZ1bmN0aW9uIChfLCByZXMpIHtcbiAgICBjb25zdCBjb25maWdGaWxlID0gYXdhaXQgZnMucmVhZEZpbGUoY29uZmlnUGF0aCk7XG4gICAgcmVzLmVuZChjb25maWdGaWxlKTtcbiAgfSk7XG4gIHRyeSB7XG4gICAgY29uc3QgY2VydEJ1ZmZlciA9IEJ1ZmZlci5mcm9tKGNvbnRlbnQsICdiYXNlNjQnKTtcbiAgICBjb25zdCBjbiA9IGNvbW1vbk5hbWUgfHwgYXdhaXQgZXh0cmFjdENvbW1vbk5hbWUoY2VydEJ1ZmZlcik7XG4gICAgY29uc3QgbW9iaWxlQ29uZmlnID0gdG9Nb2JpbGVDb25maWcoY2VydEJ1ZmZlciwgY24pO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBwbGlzdC51cGRhdGVQbGlzdEZpbGUoY29uZmlnUGF0aCwgbW9iaWxlQ29uZmlnLCBmYWxzZSwgZmFsc2UpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3Qgc3RvcmUgdGhlIGdlbmVyYXRlZCBjb25maWcgYXMgJyR7Y29uZmlnUGF0aH0nLiBgICtcbiAgICAgICAgICAgICAgICAgICAgICBgT3JpZ2luYWwgZXJyb3I6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGhvc3QgPSBvcy5ob3N0bmFtZSgpO1xuICAgICAgY29uc3QgY2VydFVybCA9IGBodHRwOi8vJHtob3N0fToke3RtcFBvcnR9LyR7Y29uZmlnTmFtZX1gO1xuICAgICAgYXdhaXQgdG1wU2VydmVyLmxpc3Rlbih0bXBQb3J0KTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHdhaXRGb3JDb25kaXRpb24oYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gKGF3YWl0IGNoZWNrUG9ydFN0YXR1cyh0bXBQb3J0LCBob3N0KSkgPT09ICdvcGVuJztcbiAgICAgICAgICB9IGNhdGNoIChpZ24pIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sIHtcbiAgICAgICAgICB3YWl0TXM6IFRNUFNFUlZFUl9TVEFSVFVQX1RJTUVPVVQsXG4gICAgICAgICAgaW50ZXJ2YWxNczogMzAwLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5sb2cuZGVidWcoYFRoZSB0ZW1wb3Jhcnkgd2ViIHNlcnZlciBpcyBydW5uaW5nIGF0IGh0dHA6Ly8ke2hvc3R9OiR7dG1wUG9ydH1gKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgdGVtcG9yYXJ5IHdlYiBzZXJ2ZXIgY2Fubm90IGJlIHN0YXJ0ZWQgYXQgaHR0cDovLyR7aG9zdH06JHt0bXBQb3J0fS5gKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmlzUmVhbERldmljZSgpKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQoJy91cmwnLCAnUE9TVCcsIHt1cmw6IGNlcnRVcmx9KTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgaWYgKHRoaXMuaXNXZWJDb250ZXh0KCkpIHtcbiAgICAgICAgICAgIC8vIFRoZSBjb21tYW5kIGFib3ZlIGRvZXMgbm90IGFsd2F5cyB3b3JrIG9uIHJlYWwgZGV2aWNlc1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5zZXRVcmwoY2VydFVybCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGF3YWl0IHRoaXMub3B0cy5kZXZpY2Uub3BlblVybChjZXJ0VXJsKTtcbiAgICAgIH1cblxuICAgICAgbGV0IGlzQ2VydEFscmVhZHlJbnN0YWxsZWQgPSBmYWxzZTtcbiAgICAgIGlmICh1dGlsLmNvbXBhcmVWZXJzaW9ucyh0aGlzLm9wdHMucGxhdGZvcm1WZXJzaW9uLCAnPj0nLCAnMTIuMicpKSB7XG4gICAgICAgIGlmIChhd2FpdCBpbnN0YWxsUG9zdDEyMkNlcnRpZmljYXRlKHRoaXMsIGNuKSkge1xuICAgICAgICAgIGF3YWl0IGNsaWNrRWxlbWVudCh0aGlzLCBTZXR0aW5ncy5Qcm9maWxlKTtcbiAgICAgICAgICBhd2FpdCB0cnVzdENlcnRpZmljYXRlSW5QcmVmZXJlbmNlcyh0aGlzLCBjbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXNDZXJ0QWxyZWFkeUluc3RhbGxlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChhd2FpdCBpbnN0YWxsUHJlMTIyQ2VydGlmaWNhdGUodGhpcykpIHtcbiAgICAgICAgICBhd2FpdCBjbGlja0VsZW1lbnQodGhpcywgQnV0dG9uLlJldHVybl90b19TZXR0aW5ncyk7XG4gICAgICAgICAgYXdhaXQgdHJ1c3RDZXJ0aWZpY2F0ZUluUHJlZmVyZW5jZXModGhpcywgY24pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlzQ2VydEFscmVhZHlJbnN0YWxsZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoaXNDZXJ0QWxyZWFkeUluc3RhbGxlZCkge1xuICAgICAgICB0aGlzLmxvZy5pbmZvKGBJdCBsb29rcyBsaWtlIHRoZSAnJHtjbn0nIGNlcnRpZmljYXRlIGhhcyBiZWVuIGFscmVhZHkgYWRkZWQgdG8gdGhlIENBIHJvb3RgKTtcbiAgICAgIH1cbiAgICB9IGZpbmFsbHkge1xuICAgICAgaWYgKHRoaXMub3B0cy5idW5kbGVJZCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IHRoaXMuYWN0aXZhdGVBcHAodGhpcy5vcHRzLmJ1bmRsZUlkKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIHRoaXMubG9nLndhcm4oYENhbm5vdCByZXN0b3JlIHRoZSBhcHBsaWNhdGlvbiAnJHt0aGlzLm9wdHMuYnVuZGxlSWR9Jy4gT3JpZ2luYWwgZXJyb3I6ICR7ZS5tZXNzYWdlfWApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIChhd2FpdCB1dGlsLnRvSW5NZW1vcnlCYXNlNjQoY29uZmlnUGF0aCkpLnRvU3RyaW5nKCk7XG4gIH0gZmluYWxseSB7XG4gICAgYXdhaXQgdG1wU2VydmVyLmNsb3NlKCk7XG4gICAgYXdhaXQgZnMucmltcmFmKHRtcFJvb3QpO1xuICB9XG59O1xuXG5PYmplY3QuYXNzaWduKGV4dGVuc2lvbnMsIGNvbW1hbmRzKTtcbmV4cG9ydCB7IGNvbW1hbmRzLCBwYXJzZUNvbW1vbk5hbWUgfTtcbmV4cG9ydCBkZWZhdWx0IGV4dGVuc2lvbnM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLElBQUlBLFVBQVUsR0FBRyxFQUFqQjtBQUFBLElBQXFCQyxRQUFRLEdBQUcsRUFBaEM7O0FBRUEsTUFBTUMsZ0JBQWdCLEdBQUcsY0FB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
|
|
415
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2NlcnRpZmljYXRlLmpzIiwibmFtZXMiOlsiZXh0ZW5zaW9ucyIsImNvbW1hbmRzIiwiQ09ORklHX0VYVEVOU0lPTiIsIkhPU1RfUE9SVF9SQU5HRSIsIlRNUFNFUlZFUl9TVEFSVFVQX1RJTUVPVVQiLCJTZXR0aW5ncyIsIkdlbmVyYWwiLCJ0eXBlIiwidmFsdWUiLCJQcm9maWxlIiwiQWJvdXQiLCJDZXJ0aWZpY2F0ZV9UcnVzdF9TZXR0aW5ncyIsIkJ1dHRvbiIsIkluc3RhbGwiLCJBbGxvdyIsIkRvbmUiLCJSZXR1cm5fdG9fU2V0dGluZ3MiLCJBbGVydCIsImV4dHJhY3RDb21tb25OYW1lIiwiY2VydEJ1ZmZlciIsInRlbXBDZXJ0IiwidGVtcERpciIsIm9wZW4iLCJwcmVmaXgiLCJzdWZmaXgiLCJmcyIsIndyaXRlRmlsZSIsInBhdGgiLCJzdGRvdXQiLCJleGVjIiwicGFyc2VDb21tb25OYW1lIiwiZXJyIiwiRXJyb3IiLCJtZXNzYWdlIiwicmltcmFmIiwiTElCUkVfU1NMX1BBVFRFUk4iLCJPUEVOX1NTTF9QQVRURVJOIiwic3RyaW5nQ2VydGlmaWNhdGUiLCJyZXN1bHQiLCJyZWR1Y2UiLCJhY2MiLCJyIiwibWF0Y2giLCJ0b01vYmlsZUNvbmZpZyIsImNvbW1vbk5hbWUiLCJnZXRVVUlEIiwidXRpbCIsInV1aWRWNCIsInRvVXBwZXJDYXNlIiwiY29udGVudFV1aWQiLCJQYXlsb2FkQ29udGVudCIsIlBheWxvYWRDZXJ0aWZpY2F0ZUZpbGVOYW1lIiwiUGF5bG9hZERlc2NyaXB0aW9uIiwiUGF5bG9hZERpc3BsYXlOYW1lIiwiUGF5bG9hZElkZW50aWZpZXIiLCJQYXlsb2FkVHlwZSIsIlBheWxvYWRVVUlEIiwiUGF5bG9hZFZlcnNpb24iLCJvcyIsImhvc3RuYW1lIiwic3BsaXQiLCJQYXlsb2FkUmVtb3ZhbERpc2FsbG93ZWQiLCJjbGlja0VsZW1lbnQiLCJkcml2ZXIiLCJsb2NhdG9yIiwib3B0aW9ucyIsImVsZW1lbnQiLCJ0aW1lb3V0Iiwic2tpcElmSW52aXNpYmxlIiwibG9va3VwRGVsYXkiLCJyZXRyeUludGVydmFsIiwiZmluZE5hdGl2ZUVsZW1lbnRPckVsZW1lbnRzIiwiSlNPTiIsInN0cmluZ2lmeSIsIm5hdGl2ZUNsaWNrIiwiaW5zdGFsbFByZTEyMkNlcnRpZmljYXRlIiwiQiIsImRlbGF5IiwidHJ1c3RDZXJ0aWZpY2F0ZUluUHJlZmVyZW5jZXMiLCJuYW1lIiwic3dpdGNoTG9jYXRvciIsInJldHJ5IiwibW9iaWxlU3dpcGUiLCJkaXJlY3Rpb24iLCJwb3N0QWNjZXB0QWxlcnQiLCJpbnN0YWxsUG9zdDEyMkNlcnRpZmljYXRlIiwiYWN0aXZhdGVBcHAiLCJpc0NlcnRGb3VuZCIsInN3aXBlTnVtIiwibW9iaWxlSW5zdGFsbENlcnRpZmljYXRlIiwib3B0cyIsImNvbnRlbnQiLCJpc1Jvb3QiLCJfIiwiaXNFbXB0eSIsImlzU2ltdWxhdG9yIiwibWV0aG9kTmFtZSIsImRldmljZSIsInNpbWN0bCIsIkJ1ZmZlciIsImZyb20iLCJ0b1N0cmluZyIsInJhdyIsImUiLCJsb2ciLCJkZWJ1ZyIsImluZm8iLCJjbGllbnQiLCJQeWlkZXZpY2UiLCJ1ZGlkIiwiYXNzZXJ0RXhpc3RzIiwiaW5zdGFsbFByb2ZpbGUiLCJwYXlsb2FkIiwidG1wUm9vdCIsIm9wZW5EaXIiLCJ0bXBQb3J0IiwiZmluZEFQb3J0Tm90SW5Vc2UiLCJjb25maWdOYW1lIiwiY29uZmlnUGF0aCIsInJlc29sdmUiLCJ0bXBTZXJ2ZXIiLCJodHRwIiwiY3JlYXRlU2VydmVyIiwicmVzIiwiY29uZmlnRmlsZSIsInJlYWRGaWxlIiwiZW5kIiwiY24iLCJtb2JpbGVDb25maWciLCJwbGlzdCIsInVwZGF0ZVBsaXN0RmlsZSIsImhvc3QiLCJjZXJ0VXJsIiwibGlzdGVuIiwid2FpdEZvckNvbmRpdGlvbiIsImNoZWNrUG9ydFN0YXR1cyIsImlnbiIsIndhaXRNcyIsImludGVydmFsTXMiLCJpc1JlYWxEZXZpY2UiLCJwcm94eUNvbW1hbmQiLCJ1cmwiLCJpc1dlYkNvbnRleHQiLCJzZXRVcmwiLCJvcGVuVXJsIiwiaXNDZXJ0QWxyZWFkeUluc3RhbGxlZCIsImNvbXBhcmVWZXJzaW9ucyIsInBsYXRmb3JtVmVyc2lvbiIsImJ1bmRsZUlkIiwid2FybiIsInRvSW5NZW1vcnlCYXNlNjQiLCJjbG9zZSIsIm1vYmlsZUxpc3RDZXJ0aWZpY2F0ZXMiLCJlcnJvcnMiLCJOb3RJbXBsZW1lbnRlZEVycm9yIiwibGlzdFByb2ZpbGVzIiwiT2JqZWN0IiwiYXNzaWduIl0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLiIsInNvdXJjZXMiOlsibGliL2NvbW1hbmRzL2NlcnRpZmljYXRlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBmcywgcGxpc3QsIHRlbXBEaXIsIHV0aWwgfSBmcm9tICdhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgeyByZXRyeUludGVydmFsLCByZXRyeSwgd2FpdEZvckNvbmRpdGlvbiB9IGZyb20gJ2FzeW5jYm94JztcbmltcG9ydCBCIGZyb20gJ2JsdWViaXJkJztcbmltcG9ydCBvcyBmcm9tICdvcyc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBodHRwIGZyb20gJ2h0dHAnO1xuaW1wb3J0IHsgZXhlYyB9IGZyb20gJ3RlZW5fcHJvY2Vzcyc7XG5pbXBvcnQgeyBmaW5kQVBvcnROb3RJblVzZSwgY2hlY2tQb3J0U3RhdHVzIH0gZnJvbSAncG9ydHNjYW5uZXInO1xuaW1wb3J0IFB5aWRldmljZSBmcm9tICcuLi9weS1pb3MtZGV2aWNlLWNsaWVudCc7XG5pbXBvcnQgeyBlcnJvcnMgfSBmcm9tICdhcHBpdW0vZHJpdmVyJztcblxubGV0IGV4dGVuc2lvbnMgPSB7fSwgY29tbWFuZHMgPSB7fTtcblxuY29uc3QgQ09ORklHX0VYVEVOU0lPTiA9ICdtb2JpbGVjb25maWcnO1xuY29uc3QgSE9TVF9QT1JUX1JBTkdFID0gWzM4MjAwLCAzODI5OV07XG5jb25zdCBUTVBTRVJWRVJfU1RBUlRVUF9USU1FT1VUID0gNTAwMDtcbmNvbnN0IFNldHRpbmdzID0ge1xuICBHZW5lcmFsOiB7XG4gICAgdHlwZTogJ2FjY2Vzc2liaWxpdHkgaWQnLFxuICAgIHZhbHVlOiAnR2VuZXJhbCcsXG4gIH0sXG4gIFByb2ZpbGU6IHtcbiAgICB0eXBlOiAnLWlvcyBwcmVkaWNhdGUgc3RyaW5nJyxcbiAgICB2YWx1ZTogYG5hbWUgQkVHSU5TV0lUSCAnUHJvZmlsZSdgLFxuICB9LFxuICBBYm91dDoge1xuICAgIHR5cGU6ICdhY2Nlc3NpYmlsaXR5IGlkJyxcbiAgICB2YWx1ZTogJ0Fib3V0JyxcbiAgfSxcbiAgQ2VydGlmaWNhdGVfVHJ1c3RfU2V0dGluZ3M6IHtcbiAgICB0eXBlOiAnYWNjZXNzaWJpbGl0eSBpZCcsXG4gICAgdmFsdWU6ICdDZXJ0aWZpY2F0ZSBUcnVzdCBTZXR0aW5ncycsXG4gIH0sXG59O1xuY29uc3QgQnV0dG9uID0ge1xuICBJbnN0YWxsOiB7XG4gICAgdHlwZTogJ2FjY2Vzc2liaWxpdHkgaWQnLFxuICAgIHZhbHVlOiAnSW5zdGFsbCcsXG4gIH0sXG4gIEFsbG93OiB7XG4gICAgdHlwZTogJ2FjY2Vzc2liaWxpdHkgaWQnLFxuICAgIHZhbHVlOiAnQWxsb3cnLFxuICB9LFxuICBEb25lOiB7XG4gICAgdHlwZTogJ2FjY2Vzc2liaWxpdHkgaWQnLFxuICAgIHZhbHVlOiAnRG9uZScsXG4gIH0sXG4gIFJldHVybl90b19TZXR0aW5nczoge1xuICAgIHR5cGU6ICdhY2Nlc3NpYmlsaXR5IGlkJyxcbiAgICB2YWx1ZTogJ1JldHVybiB0byBTZXR0aW5ncycsXG4gIH0sXG59O1xuY29uc3QgQWxlcnQgPSB7XG4gIEluc3RhbGw6IHtcbiAgICB0eXBlOiAnLWlvcyBjbGFzcyBjaGFpbicsXG4gICAgdmFsdWU6ICcqKi9YQ1VJRWxlbWVudFR5cGVBbnlbYHR5cGUgPT0gXFwnWENVSUVsZW1lbnRUeXBlQWxlcnRcXCcgT1IgdHlwZSA9PSBcXCdYQ1VJRWxlbWVudFR5cGVTaGVldFxcJ2BdLyoqL1hDVUlFbGVtZW50VHlwZUJ1dHRvbltgbGFiZWwgPT0gXFwnSW5zdGFsbFxcJ2BdJyxcbiAgfSxcbn07XG5cblxuYXN5bmMgZnVuY3Rpb24gZXh0cmFjdENvbW1vbk5hbWUgKGNlcnRCdWZmZXIpIHtcbiAgY29uc3QgdGVtcENlcnQgPSBhd2FpdCB0ZW1wRGlyLm9wZW4oe1xuICAgIHByZWZpeDogJ2NlcnQnLFxuICAgIHN1ZmZpeDogJy5jZXInXG4gIH0pO1xuICB0cnkge1xuICAgIGF3YWl0IGZzLndyaXRlRmlsZSh0ZW1wQ2VydC5wYXRoLCBjZXJ0QnVmZmVyKTtcbiAgICBjb25zdCB7c3Rkb3V0fSA9IGF3YWl0IGV4ZWMoJ29wZW5zc2wnLCBbJ3g1MDknLCAnLW5vb3V0JywgJy1zdWJqZWN0JywgJy1pbicsIHRlbXBDZXJ0LnBhdGhdKTtcbiAgICByZXR1cm4gcGFyc2VDb21tb25OYW1lKHN0ZG91dCk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IHBhcnNlIGNvbW1vbiBuYW1lIHZhbHVlIGZyb20gdGhlIGNlcnRpZmljYXRlLiBJcyBpdCB2YWxpZCBhbmQgYmFzZTY0LWVuY29kZWQ/IGAgK1xuICAgICAgICAgICAgICAgICAgICBgT3JpZ2luYWwgZXJyb3I6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gIH0gZmluYWxseSB7XG4gICAgYXdhaXQgZnMucmltcmFmKHRlbXBDZXJ0LnBhdGgpO1xuICB9XG59XG5cbmNvbnN0IExJQlJFX1NTTF9QQVRURVJOID0gL1xcL0NOPShbXlxcL10rKS87IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdXNlbGVzcy1lc2NhcGVcbmNvbnN0IE9QRU5fU1NMX1BBVFRFUk4gPSAvLFxcc0NOXFxzPVxccyhbXixdKykvO1xuXG5mdW5jdGlvbiBwYXJzZUNvbW1vbk5hbWUgKHN0cmluZ0NlcnRpZmljYXRlKSB7XG4gIGNvbnN0IHJlc3VsdCA9IFtMSUJSRV9TU0xfUEFUVEVSTiwgT1BFTl9TU0xfUEFUVEVSTl0ucmVkdWNlKChhY2MsIHIpID0+IHtcbiAgICBpZiAoYWNjKSB7XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH1cbiAgICBjb25zdCBtYXRjaCA9IHIuZXhlYyhzdHJpbmdDZXJ0aWZpY2F0ZSk7XG4gICAgcmV0dXJuIG1hdGNoICYmIG1hdGNoWzFdO1xuICB9LCBudWxsKTtcbiAgaWYgKCFyZXN1bHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZXJlIGlzIG5vIGNvbW1vbiBuYW1lIHZhbHVlIGluICcke3N0cmluZ0NlcnRpZmljYXRlfScgb3V0cHV0YCk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZXMgQXBwbGUncyBvdmVyLXRoZS1haXIgY29uZmlndXJhdGlvbiBwcm9maWxlXG4gKiBmb3IgY2VydGlmaWNhdGUgZGVwbG95bWVudCBiYXNlZCBvbiB0aGUgZ2l2ZW4gUEVNIGNlcnRpZmljYXRlIGNvbnRlbnQuXG4gKiBSZWFkIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9saWJyYXJ5L2NvbnRlbnQvZG9jdW1lbnRhdGlvbi9OZXR3b3JraW5nSW50ZXJuZXQvQ29uY2VwdHVhbC9pUGhvbmVPVEFDb25maWd1cmF0aW9uL0ludHJvZHVjdGlvbi9JbnRyb2R1Y3Rpb24uaHRtbFxuICogZm9yIG1vcmUgZGV0YWlscyBvbiBzdWNoIHByb2ZpbGVzLlxuICpcbiAqIEBwYXJhbSB7QnVmZmVyfSBjZXJ0QnVmZmVyIC0gVGhlIGFjdHVhbCBjb250ZW50IG9mIFBFTSBjZXJ0aWZpY2F0ZSBlbmNvZGVkIGludG8gTm9kZUpTIGJ1ZmZlclxuICogQHBhcmFtIHtzdHJpbmd9IGNvbW1vbk5hbWUgLSBDZXJ0aWZpY2F0ZSdzIGNvbW1vbiBuYW1lXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBUaGUgZW5jb2RlZCBzdHJ1Y3R1cmUgb2YgdGhlIGdpdmVuIGNlcnRpZmljYXRlLCB3aGljaCBpcyByZWFkeSB0byBiZSBwYXNzZWRcbiAqIGFzIGFuIGFyZ3VtZW50IHRvIHBsaXN0IGJ1aWxkZXJcbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgZ2l2ZW4gY2VydGlmaWNhdGUgY2Fubm90IGJlIHBhcnNlZFxuICovXG5mdW5jdGlvbiB0b01vYmlsZUNvbmZpZyAoY2VydEJ1ZmZlciwgY29tbW9uTmFtZSkge1xuICBjb25zdCBnZXRVVUlEID0gKCkgPT4gdXRpbC51dWlkVjQoKS50b1VwcGVyQ2FzZSgpO1xuICBjb25zdCBjb250ZW50VXVpZCA9IGdldFVVSUQoKTtcbiAgcmV0dXJuIHtcbiAgICBQYXlsb2FkQ29udGVudDogW3tcbiAgICAgIFBheWxvYWRDZXJ0aWZpY2F0ZUZpbGVOYW1lOiBgJHtjb21tb25OYW1lfS5jZXJgLFxuICAgICAgUGF5bG9hZENvbnRlbnQ6IGNlcnRCdWZmZXIsXG4gICAgICBQYXlsb2FkRGVzY3JpcHRpb246ICdBZGRzIGEgQ0Egcm9vdCBjZXJ0aWZpY2F0ZScsXG4gICAgICBQYXlsb2FkRGlzcGxheU5hbWU6IGNvbW1vbk5hbWUsXG4gICAgICBQYXlsb2FkSWRlbnRpZmllcjogYGNvbS5hcHBsZS5zZWN1cml0eS5yb290LiR7Y29udGVudFV1aWR9YCxcbiAgICAgIFBheWxvYWRUeXBlOiAnY29tLmFwcGxlLnNlY3VyaXR5LnJvb3QnLFxuICAgICAgUGF5bG9hZFVVSUQ6IGNvbnRlbnRVdWlkLFxuICAgICAgUGF5bG9hZFZlcnNpb246IDFcbiAgICB9XSxcbiAgICBQYXlsb2FkRGlzcGxheU5hbWU6IGNvbW1vbk5hbWUsXG4gICAgUGF5bG9hZElkZW50aWZpZXI6IGAke29zLmhvc3RuYW1lKCkuc3BsaXQoJy4nKVswXX0uJHtnZXRVVUlEKCl9YCxcbiAgICBQYXlsb2FkUmVtb3ZhbERpc2FsbG93ZWQ6IGZhbHNlLFxuICAgIFBheWxvYWRUeXBlOiAnQ29uZmlndXJhdGlvbicsXG4gICAgUGF5bG9hZFVVSUQ6IGdldFVVSUQoKSxcbiAgICBQYXlsb2FkVmVyc2lvbjogMVxuICB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBjbGlja0VsZW1lbnQgKGRyaXZlciwgbG9jYXRvciwgb3B0aW9ucyA9IHt9KSB7XG4gIGxldCBlbGVtZW50ID0gbnVsbDtcbiAgY29uc3Qge1xuICAgIHRpbWVvdXQgPSA1MDAwLFxuICAgIHNraXBJZkludmlzaWJsZSA9IGZhbHNlXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBsb29rdXBEZWxheSA9IDUwMDtcbiAgdHJ5IHtcbiAgICBlbGVtZW50ID0gYXdhaXQgcmV0cnlJbnRlcnZhbCh0aW1lb3V0IDwgbG9va3VwRGVsYXkgPyAxIDogdGltZW91dCAvIGxvb2t1cERlbGF5LCBsb29rdXBEZWxheSxcbiAgICAgICgpID0+IGRyaXZlci5maW5kTmF0aXZlRWxlbWVudE9yRWxlbWVudHMobG9jYXRvci50eXBlLCBsb2NhdG9yLnZhbHVlLCBmYWxzZSlcbiAgICApO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBpZiAoc2tpcElmSW52aXNpYmxlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGZpbmQgJHtKU09OLnN0cmluZ2lmeShsb2NhdG9yKX0gd2l0aGluICR7dGltZW91dH1tcyB0aW1lb3V0YCk7XG4gIH1cbiAgYXdhaXQgZHJpdmVyLm5hdGl2ZUNsaWNrKGVsZW1lbnQpO1xuICByZXR1cm4gdHJ1ZTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gaW5zdGFsbFByZTEyMkNlcnRpZmljYXRlIChkcml2ZXIpIHtcbiAgLy8gQWNjZXB0IFNhZmFyaSBhbGVydFxuICBhd2FpdCBjbGlja0VsZW1lbnQoZHJpdmVyLCBCdXR0b24uQWxsb3csIHtcbiAgICAvLyBjZXJ0aWZpY2F0ZSBsb2FkIG1pZ2h0IHRha2Ugc29tZSB0aW1lIG9uIHNsb3cgbWFjaGluZXNcbiAgICB0aW1lb3V0OiAxNTAwMCxcbiAgfSk7XG4gIC8vIFdhaXQgdW50aWwgUHJlZmVyZW5jZXMgYXJlIG9wZW5lZFxuICBhd2FpdCBCLmRlbGF5KDIwMDApO1xuXG4gIC8vIEdvIHRocm91Z2ggUHJlZmVyZW5jZXMgd2l6YXJkXG4gIGlmICghYXdhaXQgY2xpY2tFbGVtZW50KGRyaXZlciwgQnV0dG9uLkluc3RhbGwsIHtcbiAgICBza2lwSWZJbnZpc2libGU6IHRydWUsXG4gIH0pKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIC8vIFdlIG5lZWQgdG8gY2xpY2sgSW5zdGFsbCBidXR0b24gb24gdHdvIGRpZmZlcmVudCB0YWJzXG4gIC8vIFRoZSBzZWNvbmQgb25lIGNvbmZpcm1zIHRoZSBwcmV2aW91c1xuICBhd2FpdCBCLmRlbGF5KDE1MDApO1xuICBhd2FpdCBjbGlja0VsZW1lbnQoZHJpdmVyLCBCdXR0b24uSW5zdGFsbCk7XG4gIC8vIEFjY2VwdCBhbGVydFxuICBhd2FpdCBjbGlja0VsZW1lbnQoZHJpdmVyLCBBbGVydC5JbnN0YWxsKTtcbiAgLy8gRmluaXNoIGFkZGluZyBjZXJ0aWZpY2F0ZVxuICBhd2FpdCBjbGlja0VsZW1lbnQoZHJpdmVyLCBCdXR0b24uRG9uZSk7XG4gIHJldHVybiB0cnVlO1xufVxuXG5hc3luYyBmdW5jdGlvbiB0cnVzdENlcnRpZmljYXRlSW5QcmVmZXJlbmNlcyAoZHJpdmVyLCBuYW1lKSB7XG4gIGF3YWl0IGNsaWNrRWxlbWVudChkcml2ZXIsIFNldHRpbmdzLkdlbmVyYWwpO1xuICBhd2FpdCBjbGlja0VsZW1lbnQoZHJpdmVyLCBTZXR0aW5ncy5BYm91dCk7XG4gIGNvbnN0IHN3aXRjaExvY2F0b3IgPSB7XG4gICAgdHlwZTogJy1pb3MgY2xhc3MgY2hhaW4nLFxuICAgIHZhbHVlOiBgKiovWENVSUVsZW1lbnRUeXBlQ2VsbFtcXGBsYWJlbCA9PSAnJHtuYW1lfSdcXGBdLyoqL1hDVUlFbGVtZW50VHlwZVN3aXRjaGAsXG4gIH07XG4gIGF3YWl0IHJldHJ5KDUsIGFzeW5jICgpID0+IHtcbiAgICBhd2FpdCBkcml2ZXIubW9iaWxlU3dpcGUoe1xuICAgICAgZWxlbWVudDogYXdhaXQgZHJpdmVyLmZpbmROYXRpdmVFbGVtZW50T3JFbGVtZW50cygnY2xhc3MgbmFtZScsICdYQ1VJRWxlbWVudFR5cGVUYWJsZScsIGZhbHNlKSxcbiAgICAgIGRpcmVjdGlvbjogJ3VwJ1xuICAgIH0pO1xuICAgIGF3YWl0IGNsaWNrRWxlbWVudChkcml2ZXIsIFNldHRpbmdzLkNlcnRpZmljYXRlX1RydXN0X1NldHRpbmdzLCB7XG4gICAgICB0aW1lb3V0OiA1MDAsXG4gICAgfSk7XG5cbiAgICBhd2FpdCBkcml2ZXIuZmluZE5hdGl2ZUVsZW1lbnRPckVsZW1lbnRzKHN3aXRjaExvY2F0b3IudHlwZSwgc3dpdGNoTG9jYXRvci52YWx1ZSwgZmFsc2UpO1xuICB9KTtcbiAgLy8gT25seSBjbGljayB0aGUgc3dpdGNoIGlmIGl0IGlzIHNldCB0byBPZmZcbiAgaWYgKGF3YWl0IGNsaWNrRWxlbWVudChkcml2ZXIsIHtcbiAgICB0eXBlOiBzd2l0Y2hMb2NhdG9yLnR5cGUsXG4gICAgdmFsdWU6IGAke3N3aXRjaExvY2F0b3IudmFsdWV9W1xcYHZhbHVlID09ICcwJ1xcYF1gXG4gIH0sIHtcbiAgICB0aW1lb3V0OiAxMDAwLFxuICAgIHNraXBJZkludmlzaWJsZTogdHJ1ZSxcbiAgfSkpIHtcbiAgICBhd2FpdCBkcml2ZXIucG9zdEFjY2VwdEFsZXJ0KCk7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gaW5zdGFsbFBvc3QxMjJDZXJ0aWZpY2F0ZSAoZHJpdmVyLCBuYW1lKSB7XG4gIC8vIEFjY2VwdCBTYWZhcmkgYWxlcnRcbiAgYXdhaXQgY2xpY2tFbGVtZW50KGRyaXZlciwgQnV0dG9uLkFsbG93LCB7XG4gICAgLy8gY2VydGlmaWNhdGUgbG9hZCBtaWdodCB0YWtlIHNvbWUgdGltZSBvbiBzbG93IG1hY2hpbmVzXG4gICAgdGltZW91dDogMTUwMDAsXG4gIH0pO1xuICAvLyBXYWl0IGZvciB0aGUgc2Vjb25kIGFsZXJ0XG4gIGF3YWl0IEIuZGVsYXkoMjAwMCk7XG5cbiAgYXdhaXQgZHJpdmVyLnBvc3RBY2NlcHRBbGVydCgpO1xuICBhd2FpdCBkcml2ZXIuYWN0aXZhdGVBcHAoJ2NvbS5hcHBsZS5QcmVmZXJlbmNlcycpO1xuICBhd2FpdCBjbGlja0VsZW1lbnQoZHJpdmVyLCBTZXR0aW5ncy5HZW5lcmFsKTtcbiAgYXdhaXQgY2xpY2tFbGVtZW50KGRyaXZlciwgU2V0dGluZ3MuUHJvZmlsZSk7XG4gIC8vIFNlbGVjdCB0aGUgdGFyZ2V0IGNlcnRcbiAgbGV0IGlzQ2VydEZvdW5kID0gZmFsc2U7XG4gIGZvciAobGV0IHN3aXBlTnVtID0gMDsgc3dpcGVOdW0gPCA1OyArK3N3aXBlTnVtKSB7XG4gICAgaWYgKGF3YWl0IGNsaWNrRWxlbWVudChkcml2ZXIsIHtcbiAgICAgIHR5cGU6ICctaW9zIGNsYXNzIGNoYWluJyxcbiAgICAgIHZhbHVlOiBgKiovWENVSUVsZW1lbnRUeXBlQ2VsbFtcXGBsYWJlbCA9PSAnJHtuYW1lfSdcXGBdYCxcbiAgICB9LCB7XG4gICAgICB0aW1lb3V0OiA1MDAsXG4gICAgICBza2lwSWZJbnZpc2libGU6IHRydWUsXG4gICAgfSkpIHtcbiAgICAgIGlzQ2VydEZvdW5kID0gdHJ1ZTtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGF3YWl0IGRyaXZlci5tb2JpbGVTd2lwZSh7XG4gICAgICBlbGVtZW50OiBhd2FpdCBkcml2ZXIuZmluZE5hdGl2ZUVsZW1lbnRPckVsZW1lbnRzKCdjbGFzcyBuYW1lJywgJ1hDVUlFbGVtZW50VHlwZVRhYmxlJywgZmFsc2UpLFxuICAgICAgZGlyZWN0aW9uOiAndXAnXG4gICAgfSk7XG4gIH1cbiAgaWYgKCFpc0NlcnRGb3VuZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgJyR7bmFtZX0nIGNhbm5vdCBiZSBmb3VuZCBpbiB0aGUgY2VydGlmaWNhdGVzIGxpc3RgKTtcbiAgfVxuXG4gIC8vIEluc3RhbGwgb3B0aW9uIGlzIG9ubHkgdmlzaWJsZSBpZiB0aGUgY2VydCBpcyBub3QgaW5zdGFsbGVkIHlldFxuICBpZiAoIWF3YWl0IGNsaWNrRWxlbWVudChkcml2ZXIsIEJ1dHRvbi5JbnN0YWxsLCB7XG4gICAgc2tpcElmSW52aXNpYmxlOiB0cnVlLFxuICB9KSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBhd2FpdCBCLmRlbGF5KDE1MDApO1xuICAvLyBDb25maXJtIHVudHJ1c3RlZCBjZXJ0IGluc3RhbGxcbiAgYXdhaXQgY2xpY2tFbGVtZW50KGRyaXZlciwgQnV0dG9uLkluc3RhbGwpO1xuICAvLyBBY2NlcHQgYWxlcnRcbiAgYXdhaXQgY2xpY2tFbGVtZW50KGRyaXZlciwgQWxlcnQuSW5zdGFsbCk7XG4gIC8vIEZpbmlzaCBhZGRpbmcgY2VydGlmaWNhdGVcbiAgYXdhaXQgY2xpY2tFbGVtZW50KGRyaXZlciwgQnV0dG9uLkRvbmUpO1xuXG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IENlcnRpZmljYXRlSW5zdGFsbGF0aW9uT3B0aW9uc1xuICpcbiAqIEBwcm9wZXJ0eSB7IXN0cmluZ30gY29udGVudCAtIEJhc2U2NC1lbmNvZGVkIGNvbnRlbnQgb2YgdGhlIHB1YmxpYyBjZXJ0aWZpY2F0ZVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBjb21tb25OYW1lIC0gQ29tbW9uIG5hbWUgb2YgdGhlIGNlcnRpZmljYXRlLiBJZiB0aGlzIGlzIG5vdCBzZXRcbiAqIHRoZW4gdGhlIHNjcmlwdCB3aWxsIHRyeSB0byBwYXJzZSBpdCBmcm9tIHRoZSBnaXZlbiBjZXJ0aWZpY2F0ZSBjb250ZW50LlxuICogQHByb3BlcnR5IHs/Ym9vbGVhbn0gaXNSb290IFt0cnVlXSAtIFRoaXMgb3B0aW9uIGRlZmluZXMgd2hlcmUgdGhlIGNlcnRpZmljYXRlIHNob3VsZCBiZVxuICogaW5zdGFsbGVkIHRvOiBlaXRoZXIgVHJ1c3RlZCBSb290IFN0b3JlIChgdHJ1ZWAsIHRoZSBkZWZhdWx0IG9wdGlvbikgb3JcbiAqIHRoZSBLZXljaGFpbiAoYGZhbHNlYCkuIE9uIGVudmlyb25tZW50cyBvdGhlciB0aGFuIFhjb2RlIDExLjQrIFNpbXVsYXRvciB0aGlzXG4gKiBvcHRpb24gaXMgaWdub3JlZC5cbiAqL1xuXG4vKipcbiAqIEluc3RhbGxzIGEgY3VzdG9tIGNlcnRpZmljYXRlIG9udG8gdGhlIGRldmljZS5cbiAqIFNpbmNlIFhjb2RlIFNESyAxMS40IEFwcGxlIGhhcyBhZGRlZCBhIGRlZGljYXRlZCBzaW1jdGwgc3ViY29tbWFuZCB0byBxdWlja2x5IGhhbmRsZVxuICogY2VydGlmaWNhdGVzIG9uIFNpbXVsYXRvciBvdmVyIENMSS5cbiAqIE9uIHJlYWwgZGV2aWNlcyBvciBzaW11bGF0b3JzIGJlZm9yZSBYY29kZSAxMS40IFNES1xuICogQXBwbGUgcHJvdmlkZXMgbm8gb2ZmaWNpYWwgd2F5IHRvIGRvIGl0IHZpYSB0aGUgY29tbWFuZCBsaW5lLlxuICogSW4gc3VjaCBjYXNlIChhbmQgYWxzbyBhcyBhIGZhbGxiYWNrIGlmIENMSSBzZXR1cCBmYWlscylcbiAqIHRoaXMgbWV0aG9kIHRyaWVzIHRvIHdyYXAgdGhlIGNlcnRpZmljYXRlIGludG8gLm1vYmlsZWNvbmZpZyBmb3JtYXRcbiAqIGFuZCB0aGVuIGRlcGxveXMgdGhlIHdyYXBwZWQgZmlsZSB0byB0aGUgaW50ZXJuYWwgSFRUUCBzZXJ2ZXIsXG4gKiBzbyBvbmUgY2FuIG9wZW4gaXQgdmlhIG1vYmlsZSBTYWZhcmkuXG4gKiBUaGVuIHRoZSBhbGdvcml0aG0gZ29lcyB0aHJvdWdoIHRoZSBwcm9maWxlIGluc3RhbGxhdGlvbiBwcm9jZWR1cmUgYnlcbiAqIGNsaWNraW5nIHRoZSBuZWNlc3NhcnkgYnV0dG9ucyB1c2luZyBXZWJEcml2ZXJBZ2VudC5cbiAqXG4gKiBAcGFyYW0ge0NlcnRpZmljYXRlSW5zdGFsbGF0aW9uT3B0aW9uc30gb3B0c1xuICogQHJldHVybnMgez9zdHJpbmd9IFRoZSBjb250ZW50IG9mIHRoZSBnZW5lcmF0ZWQgLm1vYmlsZWNvbmZpZyBmaWxlIGFzXG4gKiBiYXNlNjQtZW5jb2RlZCBzdHJpbmcuIFRoaXMgY29uZmlnIG1pZ2h0IGJlIHVzZWZ1bCBmb3IgZGVidWdnaW5nIHB1cnBvc2VzLlxuICogSWYgdGhlIGNlcnRpZmljYXRlIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBzZXQgdmlhIENMSSB0aGVuIG5vdGhpbmcgaXMgcmV0dXJuZWQuXG4gKi9cbmNvbW1hbmRzLm1vYmlsZUluc3RhbGxDZXJ0aWZpY2F0ZSA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZUluc3RhbGxDZXJ0aWZpY2F0ZSAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBjb250ZW50LFxuICAgIGNvbW1vbk5hbWUsXG4gICAgaXNSb290ID0gdHJ1ZSxcbiAgfSA9IG9wdHM7XG4gIGlmIChfLmlzRW1wdHkoY29udGVudCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0NlcnRpZmljYXRlIGNvbnRlbnQgc2hvdWxkIG5vdCBiZSBlbXB0eScpO1xuICB9XG5cbiAgaWYgKHRoaXMuaXNTaW11bGF0b3IoKSkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBtZXRob2ROYW1lID0gaXNSb290ID8gJ2FkZFJvb3RDZXJ0aWZpY2F0ZScgOiAnYWRkQ2VydGlmaWNhdGUnO1xuICAgICAgYXdhaXQgdGhpcy5vcHRzLmRldmljZS5zaW1jdGxbbWV0aG9kTmFtZV0oXG4gICAgICAgIEJ1ZmZlci5mcm9tKGNvbnRlbnQsICdiYXNlNjQnKS50b1N0cmluZygpLCB7cmF3OiB0cnVlfVxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLmxvZy5kZWJ1ZyhlKTtcbiAgICAgIHRoaXMubG9nLmluZm8oYFRoZSBjZXJ0aWZpY2F0ZSBjYW5ub3QgYmUgaW5zdGFsbGVkIHZpYSBDTEkuIGAgK1xuICAgICAgICBgRmFsbGluZyBiYWNrIHRvIFVJLWJhc2VkIGRlcGxveW1lbnRgKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgY2xpZW50ID0gbmV3IFB5aWRldmljZSh0aGlzLm9wdHMudWRpZCk7XG4gICAgaWYgKGF3YWl0IGNsaWVudC5hc3NlcnRFeGlzdHMoZmFsc2UpKSB7XG4gICAgICBhd2FpdCBjbGllbnQuaW5zdGFsbFByb2ZpbGUoe3BheWxvYWQ6IEJ1ZmZlci5mcm9tKGNvbnRlbnQsICdiYXNlNjQnKX0pO1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxvZy5pbmZvKCdweWlkZXZpY2UgaXMgbm90IGluc3RhbGxlZCBvbiB5b3VyIHN5c3RlbS4gJyArXG4gICAgICAgICdGYWxsaW5nIGJhY2sgdG8gdGhlIChzbG93KSBVSS1iYXNlZCBpbnN0YWxsYXRpb24nKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCB0bXBSb290ID0gYXdhaXQgdGVtcERpci5vcGVuRGlyKCk7XG4gIGNvbnN0IHRtcFBvcnQgPSBhd2FpdCBmaW5kQVBvcnROb3RJblVzZShIT1NUX1BPUlRfUkFOR0VbMF0sIEhPU1RfUE9SVF9SQU5HRVsxXSk7XG4gIGNvbnN0IGNvbmZpZ05hbWUgPSBgYXBwaXVtLiR7Q09ORklHX0VYVEVOU0lPTn1gO1xuICBjb25zdCBjb25maWdQYXRoID0gcGF0aC5yZXNvbHZlKHRtcFJvb3QsIGNvbmZpZ05hbWUpO1xuICBjb25zdCB0bXBTZXJ2ZXIgPSBodHRwLmNyZWF0ZVNlcnZlcihhc3luYyBmdW5jdGlvbiAoXywgcmVzKSB7XG4gICAgY29uc3QgY29uZmlnRmlsZSA9IGF3YWl0IGZzLnJlYWRGaWxlKGNvbmZpZ1BhdGgpO1xuICAgIHJlcy5lbmQoY29uZmlnRmlsZSk7XG4gIH0pO1xuICB0cnkge1xuICAgIGNvbnN0IGNlcnRCdWZmZXIgPSBCdWZmZXIuZnJvbShjb250ZW50LCAnYmFzZTY0Jyk7XG4gICAgY29uc3QgY24gPSBjb21tb25OYW1lIHx8IGF3YWl0IGV4dHJhY3RDb21tb25OYW1lKGNlcnRCdWZmZXIpO1xuICAgIGNvbnN0IG1vYmlsZUNvbmZpZyA9IHRvTW9iaWxlQ29uZmlnKGNlcnRCdWZmZXIsIGNuKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgcGxpc3QudXBkYXRlUGxpc3RGaWxlKGNvbmZpZ1BhdGgsIG1vYmlsZUNvbmZpZywgZmFsc2UsIGZhbHNlKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IHN0b3JlIHRoZSBnZW5lcmF0ZWQgY29uZmlnIGFzICcke2NvbmZpZ1BhdGh9Jy4gYCArXG4gICAgICAgICAgICAgICAgICAgICAgYE9yaWdpbmFsIGVycm9yOiAke2Vyci5tZXNzYWdlfWApO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBob3N0ID0gb3MuaG9zdG5hbWUoKTtcbiAgICAgIGNvbnN0IGNlcnRVcmwgPSBgaHR0cDovLyR7aG9zdH06JHt0bXBQb3J0fS8ke2NvbmZpZ05hbWV9YDtcbiAgICAgIGF3YWl0IHRtcFNlcnZlci5saXN0ZW4odG1wUG9ydCk7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCB3YWl0Rm9yQ29uZGl0aW9uKGFzeW5jICgpID0+IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIChhd2FpdCBjaGVja1BvcnRTdGF0dXModG1wUG9ydCwgaG9zdCkpID09PSAnb3Blbic7XG4gICAgICAgICAgfSBjYXRjaCAoaWduKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9LCB7XG4gICAgICAgICAgd2FpdE1zOiBUTVBTRVJWRVJfU1RBUlRVUF9USU1FT1VULFxuICAgICAgICAgIGludGVydmFsTXM6IDMwMCxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMubG9nLmRlYnVnKGBUaGUgdGVtcG9yYXJ5IHdlYiBzZXJ2ZXIgaXMgcnVubmluZyBhdCBodHRwOi8vJHtob3N0fToke3RtcFBvcnR9YCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlIHRlbXBvcmFyeSB3ZWIgc2VydmVyIGNhbm5vdCBiZSBzdGFydGVkIGF0IGh0dHA6Ly8ke2hvc3R9OiR7dG1wUG9ydH0uYCk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5pc1JlYWxEZXZpY2UoKSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IHRoaXMucHJveHlDb21tYW5kKCcvdXJsJywgJ1BPU1QnLCB7dXJsOiBjZXJ0VXJsfSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIGlmICh0aGlzLmlzV2ViQ29udGV4dCgpKSB7XG4gICAgICAgICAgICAvLyBUaGUgY29tbWFuZCBhYm92ZSBkb2VzIG5vdCBhbHdheXMgd29yayBvbiByZWFsIGRldmljZXNcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc2V0VXJsKGNlcnRVcmwpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhd2FpdCB0aGlzLm9wdHMuZGV2aWNlLm9wZW5VcmwoY2VydFVybCk7XG4gICAgICB9XG5cbiAgICAgIGxldCBpc0NlcnRBbHJlYWR5SW5zdGFsbGVkID0gZmFsc2U7XG4gICAgICBpZiAodXRpbC5jb21wYXJlVmVyc2lvbnModGhpcy5vcHRzLnBsYXRmb3JtVmVyc2lvbiwgJz49JywgJzEyLjInKSkge1xuICAgICAgICBpZiAoYXdhaXQgaW5zdGFsbFBvc3QxMjJDZXJ0aWZpY2F0ZSh0aGlzLCBjbikpIHtcbiAgICAgICAgICBhd2FpdCBjbGlja0VsZW1lbnQodGhpcywgU2V0dGluZ3MuUHJvZmlsZSk7XG4gICAgICAgICAgYXdhaXQgdHJ1c3RDZXJ0aWZpY2F0ZUluUHJlZmVyZW5jZXModGhpcywgY24pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlzQ2VydEFscmVhZHlJbnN0YWxsZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoYXdhaXQgaW5zdGFsbFByZTEyMkNlcnRpZmljYXRlKHRoaXMpKSB7XG4gICAgICAgICAgYXdhaXQgY2xpY2tFbGVtZW50KHRoaXMsIEJ1dHRvbi5SZXR1cm5fdG9fU2V0dGluZ3MpO1xuICAgICAgICAgIGF3YWl0IHRydXN0Q2VydGlmaWNhdGVJblByZWZlcmVuY2VzKHRoaXMsIGNuKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpc0NlcnRBbHJlYWR5SW5zdGFsbGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGlzQ2VydEFscmVhZHlJbnN0YWxsZWQpIHtcbiAgICAgICAgdGhpcy5sb2cuaW5mbyhgSXQgbG9va3MgbGlrZSB0aGUgJyR7Y259JyBjZXJ0aWZpY2F0ZSBoYXMgYmVlbiBhbHJlYWR5IGFkZGVkIHRvIHRoZSBDQSByb290YCk7XG4gICAgICB9XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmICh0aGlzLm9wdHMuYnVuZGxlSWQpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCB0aGlzLmFjdGl2YXRlQXBwKHRoaXMub3B0cy5idW5kbGVJZCk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICB0aGlzLmxvZy53YXJuKGBDYW5ub3QgcmVzdG9yZSB0aGUgYXBwbGljYXRpb24gJyR7dGhpcy5vcHRzLmJ1bmRsZUlkfScuIE9yaWdpbmFsIGVycm9yOiAke2UubWVzc2FnZX1gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiAoYXdhaXQgdXRpbC50b0luTWVtb3J5QmFzZTY0KGNvbmZpZ1BhdGgpKS50b1N0cmluZygpO1xuICB9IGZpbmFsbHkge1xuICAgIGF3YWl0IHRtcFNlcnZlci5jbG9zZSgpO1xuICAgIGF3YWl0IGZzLnJpbXJhZih0bXBSb290KTtcbiAgfVxufTtcblxuLyoqXG4gKiBMaXN0cyBpbnN0YWxsZWQgY2VydGlmaWNhdGVzIGZvciByZWFsIGRldmljZXMgb25seVxuICogaWYgW3B5LWlvcy1kZXZpY2VdKGh0dHBzOi8vZ2l0aHViLmNvbS9ZdWVDaGVuLUMvcHktaW9zLWRldmljZSkgdG9vbFxuICogaXMgYXZhaWxhYmxlIG9uIHRoZSBzZXJ2ZXIgbWFjaGluZS5cbiAqXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIG1hcCBvZiBjZXJ0aWZpY2F0ZXMgaW5zdGFsbGVkIG9uIHRoZSByZWFsIGRldmljZVxuICogQHRocm93cyB7RXJyb3J9IElmIGF0dGVtcHRpbmcgdG8gbGlzdCBjZXJ0aWZpY2F0ZXMgZm9yIHNpbXVsYXRlZCBkZXZpY2Ugb3IgaWYgcHktaW9zLWRldmljZVxuICogaXMgbm90IGluc3RhbGxlZFxuICovXG5jb21tYW5kcy5tb2JpbGVMaXN0Q2VydGlmaWNhdGVzID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlTGlzdENlcnRpZmljYXRlcyAoKSB7XG4gIGlmICghdGhpcy5pc1JlYWxEZXZpY2UoKSkge1xuICAgIHRocm93IG5ldyBlcnJvcnMuTm90SW1wbGVtZW50ZWRFcnJvcignVGhpcyBleHRlbnNpb24gaXMgb25seSBzdXBwb3J0ZWQgb24gcmVhbCBkZXZpY2VzJyk7XG4gIH1cbiAgY29uc3QgY2xpZW50ID0gbmV3IFB5aWRldmljZSh0aGlzLm9wdHMudWRpZCk7XG4gIGlmIChhd2FpdCBjbGllbnQuYXNzZXJ0RXhpc3RzKGZhbHNlKSkge1xuICAgIHJldHVybiBhd2FpdCBjbGllbnQubGlzdFByb2ZpbGVzKCk7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKCdweWlkZXZpY2UgaXMgbm90IGluc3RhbGxlZCBvbiB5b3VyIHN5c3RlbSwgY29tbWFuZCBjYW5ub3QgYmUgZXhlY3V0ZWQuJyk7XG59O1xuXG5PYmplY3QuYXNzaWduKGV4dGVuc2lvbnMsIGNvbW1hbmRzKTtcbmV4cG9ydCB7IGNvbW1hbmRzLCBwYXJzZUNvbW1vbk5hbWUgfTtcbmV4cG9ydCBkZWZhdWx0IGV4dGVuc2lvbnM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLElBQUlBLFVBQVUsR0FBRyxFQUFqQjtBQUFBLElBQXFCQyxR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
|
|
@@ -94,6 +94,7 @@ extensions.executeMobile = async function executeMobile(mobileCommand, opts = {}
|
|
|
94
94
|
startPerfRecord: 'mobileStartPerfRecord',
|
|
95
95
|
stopPerfRecord: 'mobileStopPerfRecord',
|
|
96
96
|
installCertificate: 'mobileInstallCertificate',
|
|
97
|
+
listCertificates: 'mobileListCertificates',
|
|
97
98
|
startLogsBroadcast: 'mobileStartLogsBroadcast',
|
|
98
99
|
stopLogsBroadcast: 'mobileStopLogsBroadcast',
|
|
99
100
|
batteryInfo: 'mobileGetBatteryInfo',
|
|
@@ -143,4 +144,4 @@ var _default = extensions;
|
|
|
143
144
|
exports.default = _default;require('source-map-support').install();
|
|
144
145
|
|
|
145
146
|
|
|
146
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2V4ZWN1dGUuanMiLCJuYW1lcyI6WyJleHRlbnNpb25zIiwicmVjZWl2ZUFzeW5jUmVzcG9uc2UiLCJzdGF0dXMiLCJ2YWx1ZSIsImxvZyIsImRlYnVnIiwiSlNPTiIsInN0cmluZ2lmeSIsInV0aWwiLCJoYXNWYWx1ZSIsImFzeW5jUHJvbWlzZSIsIndhcm4iLCJyZWplY3QiLCJlcnJvckZyb21Db2RlIiwibWVzc2FnZSIsIl8iLCJpc1N0cmluZyIsImVycm9yIiwiZXJyb3JGcm9tVzNDSnNvbkNvZGUiLCJzdGFja3RyYWNlIiwicmVzb2x2ZSIsImV4ZWN1dGUiLCJzY3JpcHQiLCJhcmdzIiwibWF0Y2giLCJyZXBsYWNlIiwidHJpbSIsImV4ZWN1dGVNb2JpbGUiLCJpc0FycmF5IiwiaXNXZWJDb250ZXh0IiwiY29udmVydEVsZW1lbnRzRm9yQXRvbXMiLCJyZXN1bHQiLCJleGVjdXRlQXRvbSIsImNhY2hlV2ViRWxlbWVudHMiLCJlcnJvcnMiLCJOb3RJbXBsZW1lbnRlZEVycm9yIiwiZXhlY3V0ZUFzeW5jIiwiYXN5bmNXYWl0TXMiLCJwcm9taXNlIiwicmVtb3RlIiwiZXhlY3V0ZUF0b21Bc3luYyIsImN1cldlYkZyYW1lcyIsIndhaXRGb3JBdG9tIiwibW9iaWxlQ29tbWFuZCIsIm9wdHMiLCJjb21tYW5kTWFwIiwidGFwIiwic2Nyb2xsIiwic2VsZWN0UGlja2VyV2hlZWxWYWx1ZSIsInN3aXBlIiwicGluY2giLCJkb3VibGVUYXAiLCJ0d29GaW5nZXJUYXAiLCJ0YXBXaXRoTnVtYmVyT2ZUYXBzIiwidG91Y2hBbmRIb2xkIiwiZHJhZ0Zyb21Ub0ZvckR1cmF0aW9uIiwicm90YXRlRWxlbWVudCIsImZvcmNlUHJlc3MiLCJzY3JvbGxUb0VsZW1lbnQiLCJhbGVydCIsInNldFBhc3RlYm9hcmQiLCJnZXRQYXN0ZWJvYXJkIiwic291cmNlIiwiZ2V0Q29udGV4dHMiLCJpbnN0YWxsQXBwIiwiaXNBcHBJbnN0YWxsZWQiLCJyZW1vdmVBcHAiLCJsYXVuY2hBcHAiLCJ0ZXJtaW5hdGVBcHAiLCJraWxsQXBwIiwicXVlcnlBcHBTdGF0ZSIsImFjdGl2YXRlQXBwIiwibGlzdEFwcHMiLCJ2aWV3cG9ydFNjcmVlbnNob3QiLCJ2aWV3cG9ydFJlY3QiLCJzdGFydFBlcmZSZWNvcmQiLCJzdG9wUGVyZlJlY29yZCIsImluc3RhbGxDZXJ0aWZpY2F0ZSIsInN0YXJ0TG9nc0Jyb2FkY2FzdCIsInN0b3BMb2dzQnJvYWRjYXN0IiwiYmF0dGVyeUluZm8iLCJkZXZpY2VJbmZvIiwiZ2V0RGV2aWNlVGltZSIsImFjdGl2ZUFwcEluZm8iLCJkZXZpY2VTY3JlZW5JbmZvIiwicHJlc3NCdXR0b24iLCJlbnJvbGxCaW9tZXRyaWMiLCJzZW5kQmlvbWV0cmljTWF0Y2giLCJpc0Jpb21ldHJpY0Vucm9sbGVkIiwiY2xlYXJLZXljaGFpbnMiLCJnZXRQZXJtaXNzaW9uIiwic2V0UGVybWlzc2lvbiIsInJlc2V0UGVybWlzc2lvbiIsImdldEFwcGVhcmFuY2UiLCJzZXRBcHBlYXJhbmNlIiwic2lyaUNvbW1hbmQiLCJkZWxldGVGaWxlIiwiZGVsZXRlRm9sZGVyIiwic3RhcnRBdWRpb1JlY29yZGluZyIsInN0b3BBdWRpb1JlY29yZGluZyIsInJ1blhDVGVzdCIsImluc3RhbGxYQ1Rlc3RCdW5kbGUiLCJsaXN0WENUZXN0QnVuZGxlcyIsImxpc3RYQ1Rlc3RzSW5UZXN0QnVuZGxlIiwicHVzaE5vdGlmaWNhdGlvbiIsImV4cGVjdE5vdGlmaWNhdGlvbiIsInBlcmZvcm1Jb0hpZEV2ZW50IiwiY29uZmlndXJlTG9jYWxpemF0aW9uIiwicmVzZXRMb2NhdGlvblNlcnZpY2UiLCJzdGFydFBjYXAiLCJzdG9wUGNhcCIsImxpc3RDb25kaXRpb25JbmR1Y2VycyIsImVuYWJsZUNvbmRpdGlvbkluZHVjZXIiLCJkaXNhYmxlQ29uZGl0aW9uSW5kdWNlciIsImhhcyIsIlVua25vd25Db21tYW5kRXJyb3IiLCJrZXlzIiwiam9pbiJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9leGVjdXRlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQge1xuICBlcnJvcnMsIGVycm9yRnJvbUNvZGUsIGVycm9yRnJvbVczQ0pzb25Db2RlXG59IGZyb20gJ2FwcGl1bS9kcml2ZXInO1xuaW1wb3J0IHsgdXRpbCB9IGZyb20gJ2FwcGl1bS9zdXBwb3J0JztcblxuY29uc3QgZXh0ZW5zaW9ucyA9IHt9O1xuXG5leHRlbnNpb25zLnJlY2VpdmVBc3luY1Jlc3BvbnNlID0gYXN5bmMgZnVuY3Rpb24gcmVjZWl2ZUFzeW5jUmVzcG9uc2UgKHN0YXR1cywgdmFsdWUpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSByZXF1aXJlLWF3YWl0XG4gIHRoaXMubG9nLmRlYnVnKGBSZWNlaXZlZCBhc3luYyByZXNwb25zZTogJHtKU09OLnN0cmluZ2lmeSh2YWx1ZSl9YCk7XG4gIGlmICghdXRpbC5oYXNWYWx1ZSh0aGlzLmFzeW5jUHJvbWlzZSkpIHtcbiAgICB0aGlzLmxvZy53YXJuKGBSZWNlaXZlZCBhc3luYyByZXNwb25zZSB3aGVuIHdlIHdlcmUgbm90IGV4cGVjdGluZyBvbmUhIGAgK1xuICAgICAgYFJlc3BvbnNlIHdhczogJHtKU09OLnN0cmluZ2lmeSh2YWx1ZSl9YCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKHV0aWwuaGFzVmFsdWUoc3RhdHVzKSAmJiBzdGF0dXMgIT09IDApIHtcbiAgICAvLyBNSlNPTldQXG4gICAgcmV0dXJuIHRoaXMuYXN5bmNQcm9taXNlLnJlamVjdChlcnJvckZyb21Db2RlKHN0YXR1cywgdmFsdWUubWVzc2FnZSkpO1xuICB9XG4gIGlmICghdXRpbC5oYXNWYWx1ZShzdGF0dXMpICYmIHZhbHVlICYmIF8uaXNTdHJpbmcodmFsdWUuZXJyb3IpKSB7XG4gICAgLy8gVzNDXG4gICAgcmV0dXJuIHRoaXMuYXN5bmNQcm9taXNlLnJlamVjdChlcnJvckZyb21XM0NKc29uQ29kZSh2YWx1ZS5lcnJvciwgdmFsdWUubWVzc2FnZSwgdmFsdWUuc3RhY2t0cmFjZSkpO1xuICB9XG4gIHJldHVybiB0aGlzLmFzeW5jUHJvbWlzZS5yZXNvbHZlKHZhbHVlKTtcbn07XG5cbmV4dGVuc2lvbnMuZXhlY3V0ZSA9IGFzeW5jIGZ1bmN0aW9uIGV4ZWN1dGUgKHNjcmlwdCwgYXJncykge1xuICBpZiAoc2NyaXB0Lm1hdGNoKC9ebW9iaWxlOi8pKSB7XG4gICAgc2NyaXB0ID0gc2NyaXB0LnJlcGxhY2UoL15tb2JpbGU6LywgJycpLnRyaW0oKTtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5leGVjdXRlTW9iaWxlKHNjcmlwdCwgXy5pc0FycmF5KGFyZ3MpID8gYXJnc1swXSA6IGFyZ3MpO1xuICB9IGVsc2UgaWYgKHRoaXMuaXNXZWJDb250ZXh0KCkpIHtcbiAgICBhcmdzID0gdGhpcy5jb252ZXJ0RWxlbWVudHNGb3JBdG9tcyhhcmdzKTtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmV4ZWN1dGVBdG9tKCdleGVjdXRlX3NjcmlwdCcsIFtzY3JpcHQsIGFyZ3NdKTtcbiAgICByZXR1cm4gdGhpcy5jYWNoZVdlYkVsZW1lbnRzKHJlc3VsdCk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5Ob3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gIH1cbn07XG5cbmV4dGVuc2lvbnMuZXhlY3V0ZUFzeW5jID0gYXN5bmMgZnVuY3Rpb24gZXhlY3V0ZUFzeW5jIChzY3JpcHQsIGFyZ3MpIHtcbiAgaWYgKCF0aGlzLmlzV2ViQ29udGV4dCgpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5Ob3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gIH1cblxuICBhcmdzID0gdGhpcy5jb252ZXJ0RWxlbWVudHNGb3JBdG9tcyhhcmdzKTtcbiAgdGhpcy5hc3luY1dhaXRNcyA9IHRoaXMuYXN5bmNXYWl0TXMgfHwgMDtcbiAgY29uc3QgcHJvbWlzZSA9IHRoaXMucmVtb3RlLmV4ZWN1dGVBdG9tQXN5bmMoJ2V4ZWN1dGVfYXN5bmNfc2NyaXB0JywgW1xuICAgIHNjcmlwdCwgYXJncywgdGhpcy5hc3luY1dhaXRNc1xuICBdLCB0aGlzLmN1cldlYkZyYW1lcyk7XG4gIHJldHVybiB0aGlzLmNhY2hlV2ViRWxlbWVudHMoYXdhaXQgdGhpcy53YWl0Rm9yQXRvbShwcm9taXNlKSk7XG59O1xuXG5leHRlbnNpb25zLmV4ZWN1dGVNb2JpbGUgPSBhc3luYyBmdW5jdGlvbiBleGVjdXRlTW9iaWxlIChtb2JpbGVDb21tYW5kLCBvcHRzID0ge30pIHtcbiAgY29uc3QgY29tbWFuZE1hcCA9IHtcbiAgICAvL3JlZ2lvbiBnZXN0dXJlcyBzdXBwb3J0XG4gICAgdGFwOiAnbW9iaWxlVGFwJyxcbiAgICBzY3JvbGw6ICdtb2JpbGVTY3JvbGwnLFxuICAgIHNlbGVjdFBpY2tlcldoZWVsVmFsdWU6ICdtb2JpbGVTZWxlY3RQaWNrZXJXaGVlbFZhbHVlJyxcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWVsZW1lbnQvMTYxODY2OC1zd2lwZWxlZnQ/bGFuZ3VhZ2U9b2JqY1xuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3VpZWxlbWVudC8xNjE4Njc0LXN3aXBlcmlnaHQ/bGFuZ3VhZ2U9b2JqY1xuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3VpZWxlbWVudC8xNjE4NjY3LXN3aXBldXA/bGFuZ3VhZ2U9b2JqY1xuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3VpZWxlbWVudC8xNjE4NjY0LXN3aXBlZG93bj9sYW5ndWFnZT1vYmpjXG4gICAgc3dpcGU6ICdtb2JpbGVTd2lwZScsXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWllbGVtZW50LzE2MTg2NjktcGluY2h3aXRoc2NhbGU/bGFuZ3VhZ2U9b2JqY1xuICAgIHBpbmNoOiAnbW9iaWxlUGluY2gnLFxuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3VpZWxlbWVudC8xNjE4NjczLWRvdWJsZXRhcD9sYW5ndWFnZT1vYmpjXG4gICAgZG91YmxlVGFwOiAnbW9iaWxlRG91YmxlVGFwJyxcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWVsZW1lbnQvMTYxODY3NS10d29maW5nZXJ0YXA/bGFuZ3VhZ2U9b2JqY1xuICAgIHR3b0ZpbmdlclRhcDogJ21vYmlsZVR3b0ZpbmdlclRhcCcsXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWllbGVtZW50LzE2MTg2NzEtdGFwd2l0aG51bWJlcm9mdGFwcz9sYW5ndWFnZT1vYmpjXG4gICAgdGFwV2l0aE51bWJlck9mVGFwczogJ21vYmlsZVRhcFdpdGhOdW1iZXJPZlRhcHMnLFxuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3VpZWxlbWVudC8xNjE4NjYzLXByZXNzZm9yZHVyYXRpb24/bGFuZ3VhZ2U9b2JqY1xuICAgIHRvdWNoQW5kSG9sZDogJ21vYmlsZVRvdWNoQW5kSG9sZCcsXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWllbGVtZW50LzE2MTg2NzAtcHJlc3Nmb3JkdXJhdGlvbj9sYW5ndWFnZT1vYmpjXG4gICAgZHJhZ0Zyb21Ub0ZvckR1cmF0aW9uOiAnbW9iaWxlRHJhZ0Zyb21Ub0ZvckR1cmF0aW9uJyxcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWVsZW1lbnQvMTYxODY2NS1yb3RhdGU/bGFuZ3VhZ2U9b2JqY1xuICAgIHJvdGF0ZUVsZW1lbnQ6ICdtb2JpbGVSb3RhdGVFbGVtZW50JyxcbiAgICBmb3JjZVByZXNzOiAnbW9iaWxlRm9yY2VQcmVzcycsXG4gICAgc2Nyb2xsVG9FbGVtZW50OiAnbW9iaWxlU2Nyb2xsVG9FbGVtZW50JyxcblxuICAgIC8vZW5kcmVnaW9uIGdlc3R1cmVzIHN1cHBvcnRcbiAgICBhbGVydDogJ21vYmlsZUhhbmRsZUFsZXJ0JyxcblxuICAgIHNldFBhc3RlYm9hcmQ6ICdtb2JpbGVTZXRQYXN0ZWJvYXJkJyxcbiAgICBnZXRQYXN0ZWJvYXJkOiAnbW9iaWxlR2V0UGFzdGVib2FyZCcsXG5cbiAgICBzb3VyY2U6ICdtb2JpbGVHZXRTb3VyY2UnLFxuICAgIGdldENvbnRleHRzOiAnbW9iaWxlR2V0Q29udGV4dHMnLFxuXG4gICAgLy9yZWdpb24gbXVsdGlwbGUgYXBwcyBtYW5hZ2VtZW50XG4gICAgaW5zdGFsbEFwcDogJ21vYmlsZUluc3RhbGxBcHAnLFxuICAgIGlzQXBwSW5zdGFsbGVkOiAnbW9iaWxlSXNBcHBJbnN0YWxsZWQnLFxuICAgIHJlbW92ZUFwcDogJ21vYmlsZVJlbW92ZUFwcCcsXG4gICAgbGF1bmNoQXBwOiAnbW9iaWxlTGF1bmNoQXBwJyxcbiAgICB0ZXJtaW5hdGVBcHA6ICdtb2JpbGVUZXJtaW5hdGVBcHAnLFxuICAgIGtpbGxBcHA6ICdtb2JpbGVLaWxsQXBwJyxcbiAgICBxdWVyeUFwcFN0YXRlOiAnbW9iaWxlUXVlcnlBcHBTdGF0ZScsXG4gICAgYWN0aXZhdGVBcHA6ICdtb2JpbGVBY3RpdmF0ZUFwcCcsXG4gICAgbGlzdEFwcHM6ICdtb2JpbGVMaXN0QXBwcycsXG4gICAgLy9lbmRyZWdpb24gbXVsdGlwbGUgYXBwcyBtYW5hZ2VtZW50XG5cbiAgICB2aWV3cG9ydFNjcmVlbnNob3Q6ICdnZXRWaWV3cG9ydFNjcmVlbnNob3QnLFxuICAgIHZpZXdwb3J0UmVjdDogJ2dldFZpZXdwb3J0UmVjdCcsXG5cbiAgICBzdGFydFBlcmZSZWNvcmQ6ICdtb2JpbGVTdGFydFBlcmZSZWNvcmQnLFxuICAgIHN0b3BQZXJmUmVjb3JkOiAnbW9iaWxlU3RvcFBlcmZSZWNvcmQnLFxuXG4gICAgaW5zdGFsbENlcnRpZmljYXRlOiAnbW9iaWxlSW5zdGFsbENlcnRpZmljYXRlJyxcblxuICAgIHN0YXJ0TG9nc0Jyb2FkY2FzdDogJ21vYmlsZVN0YXJ0TG9nc0Jyb2FkY2FzdCcsXG4gICAgc3RvcExvZ3NCcm9hZGNhc3Q6ICdtb2JpbGVTdG9wTG9nc0Jyb2FkY2FzdCcsXG5cbiAgICBiYXR0ZXJ5SW5mbzogJ21vYmlsZUdldEJhdHRlcnlJbmZvJyxcbiAgICBkZXZpY2VJbmZvOiAnbW9iaWxlR2V0RGV2aWNlSW5mbycsXG4gICAgZ2V0RGV2aWNlVGltZTogJ21vYmlsZUdldERldmljZVRpbWUnLFxuICAgIGFjdGl2ZUFwcEluZm86ICdtb2JpbGVHZXRBY3RpdmVBcHBJbmZvJyxcbiAgICBkZXZpY2VTY3JlZW5JbmZvOiAnZ2V0U2NyZWVuSW5mbycsXG5cbiAgICBwcmVzc0J1dHRvbjogJ21vYmlsZVByZXNzQnV0dG9uJyxcblxuICAgIGVucm9sbEJpb21ldHJpYzogJ21vYmlsZUVucm9sbEJpb21ldHJpYycsXG4gICAgc2VuZEJpb21ldHJpY01hdGNoOiAnbW9iaWxlU2VuZEJpb21ldHJpY01hdGNoJyxcbiAgICBpc0Jpb21ldHJpY0Vucm9sbGVkOiAnbW9iaWxlSXNCaW9tZXRyaWNFbnJvbGxlZCcsXG5cbiAgICBjbGVhcktleWNoYWluczogJ21vYmlsZUNsZWFyS2V5Y2hhaW5zJyxcblxuICAgIGdldFBlcm1pc3Npb246ICdtb2JpbGVHZXRQZXJtaXNzaW9uJyxcbiAgICBzZXRQZXJtaXNzaW9uOiAnbW9iaWxlU2V0UGVybWlzc2lvbnMnLFxuICAgIHJlc2V0UGVybWlzc2lvbjogJ21vYmlsZVJlc2V0UGVybWlzc2lvbicsXG5cbiAgICBnZXRBcHBlYXJhbmNlOiAnbW9iaWxlR2V0QXBwZWFyYW5jZScsXG4gICAgc2V0QXBwZWFyYW5jZTogJ21vYmlsZVNldEFwcGVhcmFuY2UnLFxuXG4gICAgc2lyaUNvbW1hbmQ6ICdtb2JpbGVTaXJpQ29tbWFuZCcsXG5cbiAgICBkZWxldGVGaWxlOiAnbW9iaWxlRGVsZXRlRmlsZScsXG4gICAgZGVsZXRlRm9sZGVyOiAnbW9iaWxlRGVsZXRlRm9sZGVyJyxcblxuICAgIHN0YXJ0QXVkaW9SZWNvcmRpbmc6ICdzdGFydEF1ZGlvUmVjb3JkaW5nJyxcbiAgICBzdG9wQXVkaW9SZWNvcmRpbmc6ICdzdG9wQXVkaW9SZWNvcmRpbmcnLFxuXG4gICAgLy8gWENUZXN0XG4gICAgcnVuWENUZXN0OiAnbW9iaWxlUnVuWENUZXN0JyxcbiAgICBpbnN0YWxsWENUZXN0QnVuZGxlOiAnbW9iaWxlSW5zdGFsbFhDVGVzdEJ1bmRsZScsXG4gICAgbGlzdFhDVGVzdEJ1bmRsZXM6ICdtb2JpbGVMaXN0WENUZXN0QnVuZGxlcycsXG4gICAgbGlzdFhDVGVzdHNJblRlc3RCdW5kbGU6ICdtb2JpbGVMaXN0WENUZXN0c0luVGVzdEJ1bmRsZScsXG5cbiAgICBwdXNoTm90aWZpY2F0aW9uOiAnbW9iaWxlUHVzaE5vdGlmaWNhdGlvbicsXG4gICAgZXhwZWN0Tm90aWZpY2F0aW9uOiAnbW9iaWxlRXhwZWN0Tm90aWZpY2F0aW9uJyxcblxuICAgIHBlcmZvcm1Jb0hpZEV2ZW50OiAnbW9iaWxlUGVyZm9ybUlvSGlkRXZlbnQnLFxuXG4gICAgY29uZmlndXJlTG9jYWxpemF0aW9uOiAnbW9iaWxlQ29uZmlndXJlTG9jYWxpemF0aW9uJyxcblxuICAgIHJlc2V0TG9jYXRpb25TZXJ2aWNlOiAnbW9iaWxlUmVzZXRMb2NhdGlvblNlcnZpY2UnLFxuXG4gICAgc3RhcnRQY2FwOiAnbW9iaWxlU3RhcnRQY2FwJyxcbiAgICBzdG9wUGNhcDogJ21vYmlsZVN0b3BQY2FwJyxcbiAgICBsaXN0Q29uZGl0aW9uSW5kdWNlcnM6ICdtb2JpbGVMaXN0Q29uZGl0aW9uSW5kdWNlcnMnLFxuICAgIGVuYWJsZUNvbmRpdGlvbkluZHVjZXI6ICdtb2JpbGVFbmFibGVDb25kaXRpb25JbmR1Y2VyJyxcbiAgICBkaXNhYmxlQ29uZGl0aW9uSW5kdWNlcjogJ21vYmlsZURpc2FibGVDb25kaXRpb25JbmR1Y2VyJyxcbiAgfTtcblxuICBpZiAoIV8uaGFzKGNvbW1hbmRNYXAsIG1vYmlsZUNvbW1hbmQpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5Vbmtub3duQ29tbWFuZEVycm9yKGBVbmtub3duIG1vYmlsZSBjb21tYW5kICcke21vYmlsZUNvbW1hbmR9Jy4gT25seSAke18ua2V5cyhjb21tYW5kTWFwKS5qb2luKCcsICcpfSBjb21tYW5kcyBhcmUgc3VwcG9ydGVkLmApO1xuICB9XG4gIHJldHVybiBhd2FpdCB0aGlzW2NvbW1hbmRNYXBbbW9iaWxlQ29tbWFuZF1dKG9wdHMpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgZXh0ZW5zaW9ucztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFHQTs7QUFFQSxNQUFNQSxVQUFVLEdBQUcsRUFBbkI7O0FBRUFBLFVBQVUsQ0FBQ0Msb0JBQVgsR0FBa0MsZUFBZUEsb0JBQWYsQ0FBcUNDLE1BQXJDLEVBQTZDQyxLQUE3QyxFQUFvRDtFQUNwRixLQUFLQyxHQUFMLENBQVNDLEtBQVQsQ0FBZ0IsNEJBQTJCQyxJQUFJLENBQUNDLFNBQUwsQ0FBZUosS0FBZixDQUFzQixFQUFqRTs7RUFDQSxJQUFJLENBQUNLLGFBQUEsQ0FBS0MsUUFBTCxDQUFjLEtBQUtDLFlBQW5CLENBQUwsRUFBdUM7SUFDckMsS0FBS04sR0FBTCxDQUFTTyxJQUFULENBQWUsMERBQUQsR0FDWCxpQkFBZ0JMLElBQUksQ0FBQ0MsU0FBTCxDQUFlSixLQUFmLENBQXNCLEVBRHpDO0lBRUE7RUFDRDs7RUFFRCxJQUFJSyxhQUFBLENBQUtDLFFBQUwsQ0FBY1AsTUFBZCxLQUF5QkEsTUFBTSxLQUFLLENBQXhDLEVBQTJDO0lBRXpDLE9BQU8sS0FBS1EsWUFB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
|
|
147
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2V4ZWN1dGUuanMiLCJuYW1lcyI6WyJleHRlbnNpb25zIiwicmVjZWl2ZUFzeW5jUmVzcG9uc2UiLCJzdGF0dXMiLCJ2YWx1ZSIsImxvZyIsImRlYnVnIiwiSlNPTiIsInN0cmluZ2lmeSIsInV0aWwiLCJoYXNWYWx1ZSIsImFzeW5jUHJvbWlzZSIsIndhcm4iLCJyZWplY3QiLCJlcnJvckZyb21Db2RlIiwibWVzc2FnZSIsIl8iLCJpc1N0cmluZyIsImVycm9yIiwiZXJyb3JGcm9tVzNDSnNvbkNvZGUiLCJzdGFja3RyYWNlIiwicmVzb2x2ZSIsImV4ZWN1dGUiLCJzY3JpcHQiLCJhcmdzIiwibWF0Y2giLCJyZXBsYWNlIiwidHJpbSIsImV4ZWN1dGVNb2JpbGUiLCJpc0FycmF5IiwiaXNXZWJDb250ZXh0IiwiY29udmVydEVsZW1lbnRzRm9yQXRvbXMiLCJyZXN1bHQiLCJleGVjdXRlQXRvbSIsImNhY2hlV2ViRWxlbWVudHMiLCJlcnJvcnMiLCJOb3RJbXBsZW1lbnRlZEVycm9yIiwiZXhlY3V0ZUFzeW5jIiwiYXN5bmNXYWl0TXMiLCJwcm9taXNlIiwicmVtb3RlIiwiZXhlY3V0ZUF0b21Bc3luYyIsImN1cldlYkZyYW1lcyIsIndhaXRGb3JBdG9tIiwibW9iaWxlQ29tbWFuZCIsIm9wdHMiLCJjb21tYW5kTWFwIiwidGFwIiwic2Nyb2xsIiwic2VsZWN0UGlja2VyV2hlZWxWYWx1ZSIsInN3aXBlIiwicGluY2giLCJkb3VibGVUYXAiLCJ0d29GaW5nZXJUYXAiLCJ0YXBXaXRoTnVtYmVyT2ZUYXBzIiwidG91Y2hBbmRIb2xkIiwiZHJhZ0Zyb21Ub0ZvckR1cmF0aW9uIiwicm90YXRlRWxlbWVudCIsImZvcmNlUHJlc3MiLCJzY3JvbGxUb0VsZW1lbnQiLCJhbGVydCIsInNldFBhc3RlYm9hcmQiLCJnZXRQYXN0ZWJvYXJkIiwic291cmNlIiwiZ2V0Q29udGV4dHMiLCJpbnN0YWxsQXBwIiwiaXNBcHBJbnN0YWxsZWQiLCJyZW1vdmVBcHAiLCJsYXVuY2hBcHAiLCJ0ZXJtaW5hdGVBcHAiLCJraWxsQXBwIiwicXVlcnlBcHBTdGF0ZSIsImFjdGl2YXRlQXBwIiwibGlzdEFwcHMiLCJ2aWV3cG9ydFNjcmVlbnNob3QiLCJ2aWV3cG9ydFJlY3QiLCJzdGFydFBlcmZSZWNvcmQiLCJzdG9wUGVyZlJlY29yZCIsImluc3RhbGxDZXJ0aWZpY2F0ZSIsImxpc3RDZXJ0aWZpY2F0ZXMiLCJzdGFydExvZ3NCcm9hZGNhc3QiLCJzdG9wTG9nc0Jyb2FkY2FzdCIsImJhdHRlcnlJbmZvIiwiZGV2aWNlSW5mbyIsImdldERldmljZVRpbWUiLCJhY3RpdmVBcHBJbmZvIiwiZGV2aWNlU2NyZWVuSW5mbyIsInByZXNzQnV0dG9uIiwiZW5yb2xsQmlvbWV0cmljIiwic2VuZEJpb21ldHJpY01hdGNoIiwiaXNCaW9tZXRyaWNFbnJvbGxlZCIsImNsZWFyS2V5Y2hhaW5zIiwiZ2V0UGVybWlzc2lvbiIsInNldFBlcm1pc3Npb24iLCJyZXNldFBlcm1pc3Npb24iLCJnZXRBcHBlYXJhbmNlIiwic2V0QXBwZWFyYW5jZSIsInNpcmlDb21tYW5kIiwiZGVsZXRlRmlsZSIsImRlbGV0ZUZvbGRlciIsInN0YXJ0QXVkaW9SZWNvcmRpbmciLCJzdG9wQXVkaW9SZWNvcmRpbmciLCJydW5YQ1Rlc3QiLCJpbnN0YWxsWENUZXN0QnVuZGxlIiwibGlzdFhDVGVzdEJ1bmRsZXMiLCJsaXN0WENUZXN0c0luVGVzdEJ1bmRsZSIsInB1c2hOb3RpZmljYXRpb24iLCJleHBlY3ROb3RpZmljYXRpb24iLCJwZXJmb3JtSW9IaWRFdmVudCIsImNvbmZpZ3VyZUxvY2FsaXphdGlvbiIsInJlc2V0TG9jYXRpb25TZXJ2aWNlIiwic3RhcnRQY2FwIiwic3RvcFBjYXAiLCJsaXN0Q29uZGl0aW9uSW5kdWNlcnMiLCJlbmFibGVDb25kaXRpb25JbmR1Y2VyIiwiZGlzYWJsZUNvbmRpdGlvbkluZHVjZXIiLCJoYXMiLCJVbmtub3duQ29tbWFuZEVycm9yIiwia2V5cyIsImpvaW4iXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uIiwic291cmNlcyI6WyJsaWIvY29tbWFuZHMvZXhlY3V0ZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHtcbiAgZXJyb3JzLCBlcnJvckZyb21Db2RlLCBlcnJvckZyb21XM0NKc29uQ29kZVxufSBmcm9tICdhcHBpdW0vZHJpdmVyJztcbmltcG9ydCB7IHV0aWwgfSBmcm9tICdhcHBpdW0vc3VwcG9ydCc7XG5cbmNvbnN0IGV4dGVuc2lvbnMgPSB7fTtcblxuZXh0ZW5zaW9ucy5yZWNlaXZlQXN5bmNSZXNwb25zZSA9IGFzeW5jIGZ1bmN0aW9uIHJlY2VpdmVBc3luY1Jlc3BvbnNlIChzdGF0dXMsIHZhbHVlKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgcmVxdWlyZS1hd2FpdFxuICB0aGlzLmxvZy5kZWJ1ZyhgUmVjZWl2ZWQgYXN5bmMgcmVzcG9uc2U6ICR7SlNPTi5zdHJpbmdpZnkodmFsdWUpfWApO1xuICBpZiAoIXV0aWwuaGFzVmFsdWUodGhpcy5hc3luY1Byb21pc2UpKSB7XG4gICAgdGhpcy5sb2cud2FybihgUmVjZWl2ZWQgYXN5bmMgcmVzcG9uc2Ugd2hlbiB3ZSB3ZXJlIG5vdCBleHBlY3Rpbmcgb25lISBgICtcbiAgICAgIGBSZXNwb25zZSB3YXM6ICR7SlNPTi5zdHJpbmdpZnkodmFsdWUpfWApO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmICh1dGlsLmhhc1ZhbHVlKHN0YXR1cykgJiYgc3RhdHVzICE9PSAwKSB7XG4gICAgLy8gTUpTT05XUFxuICAgIHJldHVybiB0aGlzLmFzeW5jUHJvbWlzZS5yZWplY3QoZXJyb3JGcm9tQ29kZShzdGF0dXMsIHZhbHVlLm1lc3NhZ2UpKTtcbiAgfVxuICBpZiAoIXV0aWwuaGFzVmFsdWUoc3RhdHVzKSAmJiB2YWx1ZSAmJiBfLmlzU3RyaW5nKHZhbHVlLmVycm9yKSkge1xuICAgIC8vIFczQ1xuICAgIHJldHVybiB0aGlzLmFzeW5jUHJvbWlzZS5yZWplY3QoZXJyb3JGcm9tVzNDSnNvbkNvZGUodmFsdWUuZXJyb3IsIHZhbHVlLm1lc3NhZ2UsIHZhbHVlLnN0YWNrdHJhY2UpKTtcbiAgfVxuICByZXR1cm4gdGhpcy5hc3luY1Byb21pc2UucmVzb2x2ZSh2YWx1ZSk7XG59O1xuXG5leHRlbnNpb25zLmV4ZWN1dGUgPSBhc3luYyBmdW5jdGlvbiBleGVjdXRlIChzY3JpcHQsIGFyZ3MpIHtcbiAgaWYgKHNjcmlwdC5tYXRjaCgvXm1vYmlsZTovKSkge1xuICAgIHNjcmlwdCA9IHNjcmlwdC5yZXBsYWNlKC9ebW9iaWxlOi8sICcnKS50cmltKCk7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZXhlY3V0ZU1vYmlsZShzY3JpcHQsIF8uaXNBcnJheShhcmdzKSA/IGFyZ3NbMF0gOiBhcmdzKTtcbiAgfSBlbHNlIGlmICh0aGlzLmlzV2ViQ29udGV4dCgpKSB7XG4gICAgYXJncyA9IHRoaXMuY29udmVydEVsZW1lbnRzRm9yQXRvbXMoYXJncyk7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5leGVjdXRlQXRvbSgnZXhlY3V0ZV9zY3JpcHQnLCBbc2NyaXB0LCBhcmdzXSk7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVXZWJFbGVtZW50cyhyZXN1bHQpO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBlcnJvcnMuTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICB9XG59O1xuXG5leHRlbnNpb25zLmV4ZWN1dGVBc3luYyA9IGFzeW5jIGZ1bmN0aW9uIGV4ZWN1dGVBc3luYyAoc2NyaXB0LCBhcmdzKSB7XG4gIGlmICghdGhpcy5pc1dlYkNvbnRleHQoKSkge1xuICAgIHRocm93IG5ldyBlcnJvcnMuTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICB9XG5cbiAgYXJncyA9IHRoaXMuY29udmVydEVsZW1lbnRzRm9yQXRvbXMoYXJncyk7XG4gIHRoaXMuYXN5bmNXYWl0TXMgPSB0aGlzLmFzeW5jV2FpdE1zIHx8IDA7XG4gIGNvbnN0IHByb21pc2UgPSB0aGlzLnJlbW90ZS5leGVjdXRlQXRvbUFzeW5jKCdleGVjdXRlX2FzeW5jX3NjcmlwdCcsIFtcbiAgICBzY3JpcHQsIGFyZ3MsIHRoaXMuYXN5bmNXYWl0TXNcbiAgXSwgdGhpcy5jdXJXZWJGcmFtZXMpO1xuICByZXR1cm4gdGhpcy5jYWNoZVdlYkVsZW1lbnRzKGF3YWl0IHRoaXMud2FpdEZvckF0b20ocHJvbWlzZSkpO1xufTtcblxuZXh0ZW5zaW9ucy5leGVjdXRlTW9iaWxlID0gYXN5bmMgZnVuY3Rpb24gZXhlY3V0ZU1vYmlsZSAobW9iaWxlQ29tbWFuZCwgb3B0cyA9IHt9KSB7XG4gIGNvbnN0IGNvbW1hbmRNYXAgPSB7XG4gICAgLy9yZWdpb24gZ2VzdHVyZXMgc3VwcG9ydFxuICAgIHRhcDogJ21vYmlsZVRhcCcsXG4gICAgc2Nyb2xsOiAnbW9iaWxlU2Nyb2xsJyxcbiAgICBzZWxlY3RQaWNrZXJXaGVlbFZhbHVlOiAnbW9iaWxlU2VsZWN0UGlja2VyV2hlZWxWYWx1ZScsXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWllbGVtZW50LzE2MTg2Njgtc3dpcGVsZWZ0P2xhbmd1YWdlPW9iamNcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWVsZW1lbnQvMTYxODY3NC1zd2lwZXJpZ2h0P2xhbmd1YWdlPW9iamNcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWVsZW1lbnQvMTYxODY2Ny1zd2lwZXVwP2xhbmd1YWdlPW9iamNcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWVsZW1lbnQvMTYxODY2NC1zd2lwZWRvd24/bGFuZ3VhZ2U9b2JqY1xuICAgIHN3aXBlOiAnbW9iaWxlU3dpcGUnLFxuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3VpZWxlbWVudC8xNjE4NjY5LXBpbmNod2l0aHNjYWxlP2xhbmd1YWdlPW9iamNcbiAgICBwaW5jaDogJ21vYmlsZVBpbmNoJyxcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWVsZW1lbnQvMTYxODY3My1kb3VibGV0YXA/bGFuZ3VhZ2U9b2JqY1xuICAgIGRvdWJsZVRhcDogJ21vYmlsZURvdWJsZVRhcCcsXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWllbGVtZW50LzE2MTg2NzUtdHdvZmluZ2VydGFwP2xhbmd1YWdlPW9iamNcbiAgICB0d29GaW5nZXJUYXA6ICdtb2JpbGVUd29GaW5nZXJUYXAnLFxuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3VpZWxlbWVudC8xNjE4NjcxLXRhcHdpdGhudW1iZXJvZnRhcHM/bGFuZ3VhZ2U9b2JqY1xuICAgIHRhcFdpdGhOdW1iZXJPZlRhcHM6ICdtb2JpbGVUYXBXaXRoTnVtYmVyT2ZUYXBzJyxcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWVsZW1lbnQvMTYxODY2My1wcmVzc2ZvcmR1cmF0aW9uP2xhbmd1YWdlPW9iamNcbiAgICB0b3VjaEFuZEhvbGQ6ICdtb2JpbGVUb3VjaEFuZEhvbGQnLFxuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3VpZWxlbWVudC8xNjE4NjcwLXByZXNzZm9yZHVyYXRpb24/bGFuZ3VhZ2U9b2JqY1xuICAgIGRyYWdGcm9tVG9Gb3JEdXJhdGlvbjogJ21vYmlsZURyYWdGcm9tVG9Gb3JEdXJhdGlvbicsXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWllbGVtZW50LzE2MTg2NjUtcm90YXRlP2xhbmd1YWdlPW9iamNcbiAgICByb3RhdGVFbGVtZW50OiAnbW9iaWxlUm90YXRlRWxlbWVudCcsXG4gICAgZm9yY2VQcmVzczogJ21vYmlsZUZvcmNlUHJlc3MnLFxuICAgIHNjcm9sbFRvRWxlbWVudDogJ21vYmlsZVNjcm9sbFRvRWxlbWVudCcsXG5cbiAgICAvL2VuZHJlZ2lvbiBnZXN0dXJlcyBzdXBwb3J0XG4gICAgYWxlcnQ6ICdtb2JpbGVIYW5kbGVBbGVydCcsXG5cbiAgICBzZXRQYXN0ZWJvYXJkOiAnbW9iaWxlU2V0UGFzdGVib2FyZCcsXG4gICAgZ2V0UGFzdGVib2FyZDogJ21vYmlsZUdldFBhc3RlYm9hcmQnLFxuXG4gICAgc291cmNlOiAnbW9iaWxlR2V0U291cmNlJyxcbiAgICBnZXRDb250ZXh0czogJ21vYmlsZUdldENvbnRleHRzJyxcblxuICAgIC8vcmVnaW9uIG11bHRpcGxlIGFwcHMgbWFuYWdlbWVudFxuICAgIGluc3RhbGxBcHA6ICdtb2JpbGVJbnN0YWxsQXBwJyxcbiAgICBpc0FwcEluc3RhbGxlZDogJ21vYmlsZUlzQXBwSW5zdGFsbGVkJyxcbiAgICByZW1vdmVBcHA6ICdtb2JpbGVSZW1vdmVBcHAnLFxuICAgIGxhdW5jaEFwcDogJ21vYmlsZUxhdW5jaEFwcCcsXG4gICAgdGVybWluYXRlQXBwOiAnbW9iaWxlVGVybWluYXRlQXBwJyxcbiAgICBraWxsQXBwOiAnbW9iaWxlS2lsbEFwcCcsXG4gICAgcXVlcnlBcHBTdGF0ZTogJ21vYmlsZVF1ZXJ5QXBwU3RhdGUnLFxuICAgIGFjdGl2YXRlQXBwOiAnbW9iaWxlQWN0aXZhdGVBcHAnLFxuICAgIGxpc3RBcHBzOiAnbW9iaWxlTGlzdEFwcHMnLFxuICAgIC8vZW5kcmVnaW9uIG11bHRpcGxlIGFwcHMgbWFuYWdlbWVudFxuXG4gICAgdmlld3BvcnRTY3JlZW5zaG90OiAnZ2V0Vmlld3BvcnRTY3JlZW5zaG90JyxcbiAgICB2aWV3cG9ydFJlY3Q6ICdnZXRWaWV3cG9ydFJlY3QnLFxuXG4gICAgc3RhcnRQZXJmUmVjb3JkOiAnbW9iaWxlU3RhcnRQZXJmUmVjb3JkJyxcbiAgICBzdG9wUGVyZlJlY29yZDogJ21vYmlsZVN0b3BQZXJmUmVjb3JkJyxcblxuICAgIGluc3RhbGxDZXJ0aWZpY2F0ZTogJ21vYmlsZUluc3RhbGxDZXJ0aWZpY2F0ZScsXG4gICAgbGlzdENlcnRpZmljYXRlczogJ21vYmlsZUxpc3RDZXJ0aWZpY2F0ZXMnLFxuXG4gICAgc3RhcnRMb2dzQnJvYWRjYXN0OiAnbW9iaWxlU3RhcnRMb2dzQnJvYWRjYXN0JyxcbiAgICBzdG9wTG9nc0Jyb2FkY2FzdDogJ21vYmlsZVN0b3BMb2dzQnJvYWRjYXN0JyxcblxuICAgIGJhdHRlcnlJbmZvOiAnbW9iaWxlR2V0QmF0dGVyeUluZm8nLFxuICAgIGRldmljZUluZm86ICdtb2JpbGVHZXREZXZpY2VJbmZvJyxcbiAgICBnZXREZXZpY2VUaW1lOiAnbW9iaWxlR2V0RGV2aWNlVGltZScsXG4gICAgYWN0aXZlQXBwSW5mbzogJ21vYmlsZUdldEFjdGl2ZUFwcEluZm8nLFxuICAgIGRldmljZVNjcmVlbkluZm86ICdnZXRTY3JlZW5JbmZvJyxcblxuICAgIHByZXNzQnV0dG9uOiAnbW9iaWxlUHJlc3NCdXR0b24nLFxuXG4gICAgZW5yb2xsQmlvbWV0cmljOiAnbW9iaWxlRW5yb2xsQmlvbWV0cmljJyxcbiAgICBzZW5kQmlvbWV0cmljTWF0Y2g6ICdtb2JpbGVTZW5kQmlvbWV0cmljTWF0Y2gnLFxuICAgIGlzQmlvbWV0cmljRW5yb2xsZWQ6ICdtb2JpbGVJc0Jpb21ldHJpY0Vucm9sbGVkJyxcblxuICAgIGNsZWFyS2V5Y2hhaW5zOiAnbW9iaWxlQ2xlYXJLZXljaGFpbnMnLFxuXG4gICAgZ2V0UGVybWlzc2lvbjogJ21vYmlsZUdldFBlcm1pc3Npb24nLFxuICAgIHNldFBlcm1pc3Npb246ICdtb2JpbGVTZXRQZXJtaXNzaW9ucycsXG4gICAgcmVzZXRQZXJtaXNzaW9uOiAnbW9iaWxlUmVzZXRQZXJtaXNzaW9uJyxcblxuICAgIGdldEFwcGVhcmFuY2U6ICdtb2JpbGVHZXRBcHBlYXJhbmNlJyxcbiAgICBzZXRBcHBlYXJhbmNlOiAnbW9iaWxlU2V0QXBwZWFyYW5jZScsXG5cbiAgICBzaXJpQ29tbWFuZDogJ21vYmlsZVNpcmlDb21tYW5kJyxcblxuICAgIGRlbGV0ZUZpbGU6ICdtb2JpbGVEZWxldGVGaWxlJyxcbiAgICBkZWxldGVGb2xkZXI6ICdtb2JpbGVEZWxldGVGb2xkZXInLFxuXG4gICAgc3RhcnRBdWRpb1JlY29yZGluZzogJ3N0YXJ0QXVkaW9SZWNvcmRpbmcnLFxuICAgIHN0b3BBdWRpb1JlY29yZGluZzogJ3N0b3BBdWRpb1JlY29yZGluZycsXG5cbiAgICAvLyBYQ1Rlc3RcbiAgICBydW5YQ1Rlc3Q6ICdtb2JpbGVSdW5YQ1Rlc3QnLFxuICAgIGluc3RhbGxYQ1Rlc3RCdW5kbGU6ICdtb2JpbGVJbnN0YWxsWENUZXN0QnVuZGxlJyxcbiAgICBsaXN0WENUZXN0QnVuZGxlczogJ21vYmlsZUxpc3RYQ1Rlc3RCdW5kbGVzJyxcbiAgICBsaXN0WENUZXN0c0luVGVzdEJ1bmRsZTogJ21vYmlsZUxpc3RYQ1Rlc3RzSW5UZXN0QnVuZGxlJyxcblxuICAgIHB1c2hOb3RpZmljYXRpb246ICdtb2JpbGVQdXNoTm90aWZpY2F0aW9uJyxcbiAgICBleHBlY3ROb3RpZmljYXRpb246ICdtb2JpbGVFeHBlY3ROb3RpZmljYXRpb24nLFxuXG4gICAgcGVyZm9ybUlvSGlkRXZlbnQ6ICdtb2JpbGVQZXJmb3JtSW9IaWRFdmVudCcsXG5cbiAgICBjb25maWd1cmVMb2NhbGl6YXRpb246ICdtb2JpbGVDb25maWd1cmVMb2NhbGl6YXRpb24nLFxuXG4gICAgcmVzZXRMb2NhdGlvblNlcnZpY2U6ICdtb2JpbGVSZXNldExvY2F0aW9uU2VydmljZScsXG5cbiAgICBzdGFydFBjYXA6ICdtb2JpbGVTdGFydFBjYXAnLFxuICAgIHN0b3BQY2FwOiAnbW9iaWxlU3RvcFBjYXAnLFxuICAgIGxpc3RDb25kaXRpb25JbmR1Y2VyczogJ21vYmlsZUxpc3RDb25kaXRpb25JbmR1Y2VycycsXG4gICAgZW5hYmxlQ29uZGl0aW9uSW5kdWNlcjogJ21vYmlsZUVuYWJsZUNvbmRpdGlvbkluZHVjZXInLFxuICAgIGRpc2FibGVDb25kaXRpb25JbmR1Y2VyOiAnbW9iaWxlRGlzYWJsZUNvbmRpdGlvbkluZHVjZXInLFxuICB9O1xuXG4gIGlmICghXy5oYXMoY29tbWFuZE1hcCwgbW9iaWxlQ29tbWFuZCkpIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLlVua25vd25Db21tYW5kRXJyb3IoYFVua25vd24gbW9iaWxlIGNvbW1hbmQgJyR7bW9iaWxlQ29tbWFuZH0nLiBPbmx5ICR7Xy5rZXlzKGNvbW1hbmRNYXApLmpvaW4oJywgJyl9IGNvbW1hbmRzIGFyZSBzdXBwb3J0ZWQuYCk7XG4gIH1cbiAgcmV0dXJuIGF3YWl0IHRoaXNbY29tbWFuZE1hcFttb2JpbGVDb21tYW5kXV0ob3B0cyk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBleHRlbnNpb25zO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUdBOztBQUVBLE1BQU1BLFVBQVUsR0FBRyxFQUFuQjs7QUFFQUEsVUFBVSxDQUFDQyxvQkFBWCxHQUFrQyxlQUFlQSxvQkFBZixDQUFxQ0MsTUFBckMsRUFBNkNDLEtBQTdDLEVBQW9EO0VBQ3BGLEtBQUtDLEdBQUwsQ0FBU0MsS0FBVCxDQUFnQiw0QkFBMkJDLElBQUksQ0FBQ0MsU0FBTCxDQUFlSixLQUFmLENBQXNCLEVBQWpFOztFQUNBLElBQUksQ0FBQ0ssYUFBQSxDQUFLQyxRQUFMLENBQWMsS0FBS0MsWUFBbkIsQ0FBTCxFQUF1QztJQUNyQyxLQUFLTixHQUFMLENBQVNPLElBQVQsQ0FBZSwwREFBRCxHQUNYLGlCQUFnQkwsSUFBSSxDQUFDQyxTQUFMLENBQWVKLEtBQWYsQ0FBc0IsRUFEekM7SUFFQTtFQUNEOztFQUVELElBQUlLLGFBQUEsQ0FB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
|
|
@@ -69,7 +69,7 @@ class IOSCrashLog {
|
|
|
69
69
|
return [];
|
|
70
70
|
}
|
|
71
71
|
|
|
72
|
-
const foundFiles = await _support.fs.glob(`${this.logDir}
|
|
72
|
+
const foundFiles = await _support.fs.glob(`${this.logDir}/**/*.+(crash|ips)`, {
|
|
73
73
|
strict: false
|
|
74
74
|
});
|
|
75
75
|
return await _bluebird.default.filter(foundFiles, async x => {
|
|
@@ -147,4 +147,4 @@ var _default = IOSCrashLog;
|
|
|
147
147
|
exports.default = _default;require('source-map-support').install();
|
|
148
148
|
|
|
149
149
|
|
|
150
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2RldmljZS1sb2cvaW9zLWNyYXNoLWxvZy5qcyIsIm5hbWVzIjpbIlJFQUxfREVWSUNFX01BR0lDIiwiTUFHSUNfU0VQIiwiSU9TQ3Jhc2hMb2ciLCJjb25zdHJ1Y3RvciIsIm9wdHMiLCJ1ZGlkIiwicHlpZGV2aWNlQ2xpZW50IiwiUHlpZGV2aWNlIiwibG9nRGlyIiwicGF0aCIsInJlc29sdmUiLCJwcm9jZXNzIiwiZW52IiwiSE9NRSIsInByZXZMb2dzIiwibG9nc1NpbmNlTGFzdFJlcXVlc3QiLCJwaG9uZU5hbWUiLCJzaW0iLCJfZ2F0aGVyRnJvbVJlYWxEZXZpY2UiLCJhc3NlcnRFeGlzdHMiLCJsaXN0Q3Jhc2hlcyIsIm1hcCIsIngiLCJjcmFzaExvZ3NSb290IiwidXRpbGl0aWVzIiwiZ2V0RGV2aWNlTmFtZSIsImZzIiwiZXhpc3RzIiwibG9nIiwiZGVidWciLCJmb3VuZEZpbGVzIiwiZ2xvYiIsInN0cmljdCIsIl9nYXRoZXJGcm9tU2ltdWxhdG9yIiwiQiIsImZpbHRlciIsImNvbnRlbnQiLCJyZWFkRmlsZSIsInRvVXBwZXJDYXNlIiwiaW5jbHVkZXMiLCJlcnIiLCJnZXRDcmFzaGVzIiwic3RhcnRDYXB0dXJlIiwic3RvcENhcHR1cmUiLCJnZXRMb2dzIiwiY3Jhc2hGaWxlcyIsImRpZmYiLCJfIiwiZGlmZmVyZW5jZSIsInVuaW9uIiwiZmlsZXNUb0pTT04iLCJnZXRBbGxMb2dzIiwibG9nRmlsZXMiLCJwYXRocyIsInRtcFJvb3QiLCJ0ZW1wRGlyIiwib3BlbkRpciIsImZ1bGxQYXRoIiwiZmlsZU5hbWUiLCJsYXN0Iiwic3BsaXQiLCJleHBvcnRDcmFzaCIsImUiLCJ3YXJuIiwibWVzc2FnZSIsImpvaW4iLCJzdGF0IiwidGltZXN0YW1wIiwiY3RpbWUiLCJnZXRUaW1lIiwibGV2ZWwiLCJCb29sZWFuIiwicmltcmFmIl0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLiIsInNvdXJjZXMiOlsibGliL2RldmljZS1sb2cvaW9zLWNyYXNoLWxvZy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmcywgdGVtcERpciB9IGZyb20gJ2FwcGl1bS9zdXBwb3J0JztcbmltcG9ydCBCIGZyb20gJ2JsdWViaXJkJztcbmltcG9ydCBsb2cgZnJvbSAnLi4vbG9nZ2VyJztcbmltcG9ydCB7IHV0aWxpdGllcyB9IGZyb20gJ2FwcGl1bS1pb3MtZGV2aWNlJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBQeWlkZXZpY2UgZnJvbSAnLi4vcHktaW9zLWRldmljZS1jbGllbnQnO1xuXG5jb25zdCBSRUFMX0RFVklDRV9NQUdJQyA9ICczNjIwYmJiMC1mYjlmLTRiNjItYTY2OC04OTZmMmVkYzRkODgnO1xuY29uc3QgTUFHSUNfU0VQID0gJy8nO1xuXG5cbmNsYXNzIElPU0NyYXNoTG9nIHtcbiAgY29uc3RydWN0b3IgKG9wdHMgPSB7fSkge1xuICAgIHRoaXMudWRpZCA9IG9wdHMudWRpZDtcbiAgICB0aGlzLnB5aWRldmljZUNsaWVudCA9IHRoaXMudWRpZCA/IG5ldyBQeWlkZXZpY2UodGhpcy51ZGlkKSA6IG51bGw7XG4gICAgY29uc3QgbG9nRGlyID0gb3B0cy51ZGlkXG4gICAgICA/IHBhdGgucmVzb2x2ZShwcm9jZXNzLmVudi5IT01FLCAnTGlicmFyeScsICdMb2dzJywgJ0NyYXNoUmVwb3J0ZXInLCAnTW9iaWxlRGV2aWNlJylcbiAgICAgIDogcGF0aC5yZXNvbHZlKHByb2Nlc3MuZW52LkhPTUUsICdMaWJyYXJ5JywgJ0xvZ3MnLCAnRGlhZ25vc3RpY1JlcG9ydHMnKTtcbiAgICB0aGlzLmxvZ0RpciA9IGxvZ0RpclxuICAgICAgfHwgcGF0aC5yZXNvbHZlKHByb2Nlc3MuZW52LkhPTUUgfHwgJy8nLCAnTGlicmFyeScsICdMb2dzJywgJ0RpYWdub3N0aWNSZXBvcnRzJyk7XG4gICAgdGhpcy5wcmV2TG9ncyA9IFtdO1xuICAgIHRoaXMubG9nc1NpbmNlTGFzdFJlcXVlc3QgPSBbXTtcbiAgICB0aGlzLnBob25lTmFtZSA9IG51bGw7XG4gICAgdGhpcy5zaW0gPSBvcHRzLnNpbTtcbiAgfVxuXG4gIGFzeW5jIF9nYXRoZXJGcm9tUmVhbERldmljZSAoKSB7XG4gICAgaWYgKGF3YWl0IHRoaXMucHlpZGV2aWNlQ2xpZW50LmFzc2VydEV4aXN0cyhmYWxzZSkpIHtcbiAgICAgIHJldHVybiAoYXdhaXQgdGhpcy5weWlkZXZpY2VDbGllbnQubGlzdENyYXNoZXMoKSlcbiAgICAgICAgLm1hcCgoeCkgPT4gYCR7UkVBTF9ERVZJQ0VfTUFHSUN9JHtNQUdJQ19TRVB9JHt4fWApO1xuICAgIH1cblxuICAgIGxldCBjcmFzaExvZ3NSb290ID0gdGhpcy5sb2dEaXI7XG4gICAgaWYgKHRoaXMudWRpZCkge1xuICAgICAgdGhpcy5waG9uZU5hbWUgPSB0aGlzLnBob25lTmFtZSB8fCBhd2FpdCB1dGlsaXRpZXMuZ2V0RGV2aWNlTmFtZSh0aGlzLnVkaWQpO1xuICAgICAgY3Jhc2hMb2dzUm9vdCA9IHBhdGgucmVzb2x2ZShjcmFzaExvZ3NSb290LCB0aGlzLnBob25lTmFtZSk7XG4gICAgfVxuICAgIGlmICghYXdhaXQgZnMuZXhpc3RzKGNyYXNoTG9nc1Jvb3QpKSB7XG4gICAgICBsb2cuZGVidWcoYENyYXNoIHJlcG9ydHMgcm9vdCAnJHtjcmFzaExvZ3NSb290fScgZG9lcyBub3QgZXhpc3QuIEdvdCBub3RoaW5nIHRvIGdhdGhlci5gKTtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgY29uc3QgZm91bmRGaWxlcyA9IGF3YWl0IGZzLmdsb2IoYCR7Y3Jhc2hMb2dzUm9vdH0vKiovKi5jcmFzaGAsIHtcbiAgICAgIHN0cmljdDogZmFsc2VcbiAgICB9KTtcbiAgICByZXR1cm4gZm91bmRGaWxlcztcbiAgfVxuXG4gIGFzeW5jIF9nYXRoZXJGcm9tU2ltdWxhdG9yICgpIHtcbiAgICBpZiAoIWF3YWl0IGZzLmV4aXN0cyh0aGlzLmxvZ0RpcikpIHtcbiAgICAgIGxvZy5kZWJ1ZyhgQ3Jhc2ggcmVwb3J0cyByb290ICcke3RoaXMubG9nRGlyfScgZG9lcyBub3QgZXhpc3QuIEdvdCBub3RoaW5nIHRvIGdhdGhlci5gKTtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgY29uc3QgZm91bmRGaWxlcyA9IGF3YWl0IGZzLmdsb2IoYCR7dGhpcy5sb2dEaXJ9LyoqLyouY3Jhc2hgLCB7XG4gICAgICBzdHJpY3Q6IGZhbHNlXG4gICAgfSk7XG4gICAgLy8gRm9yIFNpbXVsYXRvciBvbmx5IGluY2x1ZGUgZmlsZXMsIHRoYXQgY29udGFpbiBjdXJyZW50IFVESURcbiAgICByZXR1cm4gYXdhaXQgQi5maWx0ZXIoZm91bmRGaWxlcywgYXN5bmMgKHgpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCBmcy5yZWFkRmlsZSh4LCAndXRmOCcpO1xuICAgICAgICByZXR1cm4gY29udGVudC50b1VwcGVyQ2FzZSgpLmluY2x1ZGVzKHRoaXMuc2ltLnVkaWQudG9VcHBlckNhc2UoKSk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgZ2V0Q3Jhc2hlcyAoKSB7XG4gICAgcmV0dXJuIHRoaXMudWRpZFxuICAgICAgPyBhd2FpdCB0aGlzLl9nYXRoZXJGcm9tUmVhbERldmljZSgpXG4gICAgICA6IGF3YWl0IHRoaXMuX2dhdGhlckZyb21TaW11bGF0b3IoKTtcbiAgfVxuXG4gIGFzeW5jIHN0YXJ0Q2FwdHVyZSAoKSB7XG4gICAgdGhpcy5wcmV2TG9ncyA9IGF3YWl0IHRoaXMuZ2V0Q3Jhc2hlcygpO1xuICB9XG5cbiAgYXN5bmMgc3RvcENhcHR1cmUgKCkge1xuICAgIC8vIG5lZWRlZCBmb3IgY29uc2lzdGVudCBBUEkgd2l0aCBvdGhlciBsb2dzXG4gIH1cblxuICBhc3luYyBnZXRMb2dzICgpIHtcbiAgICBsZXQgY3Jhc2hGaWxlcyA9IGF3YWl0IHRoaXMuZ2V0Q3Jhc2hlcygpO1xuICAgIGxldCBkaWZmID0gXy5kaWZmZXJlbmNlKGNyYXNoRmlsZXMsIHRoaXMucHJldkxvZ3MsIHRoaXMubG9nc1NpbmNlTGFzdFJlcXVlc3QpO1xuICAgIHRoaXMubG9nc1NpbmNlTGFzdFJlcXVlc3QgPSBfLnVuaW9uKHRoaXMubG9nc1NpbmNlTGFzdFJlcXVlc3QsIGRpZmYpO1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmZpbGVzVG9KU09OKGRpZmYpO1xuICB9XG5cbiAgYXN5bmMgZ2V0QWxsTG9ncyAoKSB7XG4gICAgbGV0IGNyYXNoRmlsZXMgPSBhd2FpdCB0aGlzLmdldENyYXNoZXMoKTtcbiAgICBsZXQgbG9nRmlsZXMgPSBfLmRpZmZlcmVuY2UoY3Jhc2hGaWxlcywgdGhpcy5wcmV2TG9ncyk7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZmlsZXNUb0pTT04obG9nRmlsZXMpO1xuICB9XG5cbiAgYXN5bmMgZmlsZXNUb0pTT04gKHBhdGhzKSB7XG4gICAgY29uc3QgdG1wUm9vdCA9IGF3YWl0IHRlbXBEaXIub3BlbkRpcigpO1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gKGF3YWl0IEIubWFwKHBhdGhzLCBhc3luYyAoZnVsbFBhdGgpID0+IHtcbiAgICAgICAgaWYgKF8uaW5jbHVkZXMoZnVsbFBhdGgsIFJFQUxfREVWSUNFX01BR0lDKSkge1xuICAgICAgICAgIGNvbnN0IGZpbGVOYW1lID0gXy5sYXN0KGZ1bGxQYXRoLnNwbGl0KE1BR0lDX1NFUCkpO1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnB5aWRldmljZUNsaWVudC5leHBvcnRDcmFzaChmaWxlTmFtZSwgdG1wUm9vdCk7XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgbG9nLndhcm4oYENhbm5vdCBleHBvcnQgdGhlIGNyYXNoIHJlcG9ydCAnJHtmaWxlTmFtZX0nLiBTa2lwcGluZyBpdC4gYCArXG4gICAgICAgICAgICAgIGBPcmlnaW5hbCBlcnJvcjogJHtlLm1lc3NhZ2V9YCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGZ1bGxQYXRoID0gcGF0aC5qb2luKHRtcFJvb3QsIGZpbGVOYW1lKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzdGF0ID0gYXdhaXQgZnMuc3RhdChmdWxsUGF0aCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdGltZXN0YW1wOiBzdGF0LmN0aW1lLmdldFRpbWUoKSxcbiAgICAgICAgICBsZXZlbDogJ0FMTCcsXG4gICAgICAgICAgbWVzc2FnZTogYXdhaXQgZnMucmVhZEZpbGUoZnVsbFBhdGgsICd1dGY4JylcbiAgICAgICAgfTtcbiAgICAgIH0pKS5maWx0ZXIoQm9vbGVhbik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGF3YWl0IGZzLnJpbXJhZih0bXBSb290KTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IHsgSU9TQ3Jhc2hMb2cgfTtcbmV4cG9ydCBkZWZhdWx0IElPU0NyYXNoTG9nO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLE1BQU1BLGlCQUFpQixHQUFHLHNDQUExQjtBQUNBLE1BQU1DLFNBQVMsR0FBRyxHQUFsQjs7QUFHQSxNQUFNQyxXQUFOLENBQWtCO0VBQ2hCQyxXQUFXLENBQUVDLElBQUksR0FBRyxFQUFULEVBQWE7SUFDdEIsS0FBS0MsSUFBTCxHQUFZRCxJQUFJLENBQUNDLElBQWpCO0lBQ0EsS0FBS0MsZUFBTCxHQUF1QixLQUFLRCxJQUFMLEdBQVksSUFBSUUsMEJBQUosQ0FBYyxLQUFLRixJQUFuQixDQUFaLEdBQXVDLElBQTlEO0lBQ0EsTUFBTUcsTUFBTSxHQUFHSixJQUFJLENBQUNDLElBQUwsR0FDWEksYUFBQSxDQUFLQyxPQUFMLENBQWFDLE9BQU8sQ0FBQ0MsR0FBUixDQUFZQyxJQUF6QixFQUErQixTQUEvQixFQUEwQyxNQUExQyxF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
|
|
150
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2RldmljZS1sb2cvaW9zLWNyYXNoLWxvZy5qcyIsIm5hbWVzIjpbIlJFQUxfREVWSUNFX01BR0lDIiwiTUFHSUNfU0VQIiwiSU9TQ3Jhc2hMb2ciLCJjb25zdHJ1Y3RvciIsIm9wdHMiLCJ1ZGlkIiwicHlpZGV2aWNlQ2xpZW50IiwiUHlpZGV2aWNlIiwibG9nRGlyIiwicGF0aCIsInJlc29sdmUiLCJwcm9jZXNzIiwiZW52IiwiSE9NRSIsInByZXZMb2dzIiwibG9nc1NpbmNlTGFzdFJlcXVlc3QiLCJwaG9uZU5hbWUiLCJzaW0iLCJfZ2F0aGVyRnJvbVJlYWxEZXZpY2UiLCJhc3NlcnRFeGlzdHMiLCJsaXN0Q3Jhc2hlcyIsIm1hcCIsIngiLCJjcmFzaExvZ3NSb290IiwidXRpbGl0aWVzIiwiZ2V0RGV2aWNlTmFtZSIsImZzIiwiZXhpc3RzIiwibG9nIiwiZGVidWciLCJmb3VuZEZpbGVzIiwiZ2xvYiIsInN0cmljdCIsIl9nYXRoZXJGcm9tU2ltdWxhdG9yIiwiQiIsImZpbHRlciIsImNvbnRlbnQiLCJyZWFkRmlsZSIsInRvVXBwZXJDYXNlIiwiaW5jbHVkZXMiLCJlcnIiLCJnZXRDcmFzaGVzIiwic3RhcnRDYXB0dXJlIiwic3RvcENhcHR1cmUiLCJnZXRMb2dzIiwiY3Jhc2hGaWxlcyIsImRpZmYiLCJfIiwiZGlmZmVyZW5jZSIsInVuaW9uIiwiZmlsZXNUb0pTT04iLCJnZXRBbGxMb2dzIiwibG9nRmlsZXMiLCJwYXRocyIsInRtcFJvb3QiLCJ0ZW1wRGlyIiwib3BlbkRpciIsImZ1bGxQYXRoIiwiZmlsZU5hbWUiLCJsYXN0Iiwic3BsaXQiLCJleHBvcnRDcmFzaCIsImUiLCJ3YXJuIiwibWVzc2FnZSIsImpvaW4iLCJzdGF0IiwidGltZXN0YW1wIiwiY3RpbWUiLCJnZXRUaW1lIiwibGV2ZWwiLCJCb29sZWFuIiwicmltcmFmIl0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLiIsInNvdXJjZXMiOlsibGliL2RldmljZS1sb2cvaW9zLWNyYXNoLWxvZy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmcywgdGVtcERpciB9IGZyb20gJ2FwcGl1bS9zdXBwb3J0JztcbmltcG9ydCBCIGZyb20gJ2JsdWViaXJkJztcbmltcG9ydCBsb2cgZnJvbSAnLi4vbG9nZ2VyJztcbmltcG9ydCB7IHV0aWxpdGllcyB9IGZyb20gJ2FwcGl1bS1pb3MtZGV2aWNlJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBQeWlkZXZpY2UgZnJvbSAnLi4vcHktaW9zLWRldmljZS1jbGllbnQnO1xuXG5jb25zdCBSRUFMX0RFVklDRV9NQUdJQyA9ICczNjIwYmJiMC1mYjlmLTRiNjItYTY2OC04OTZmMmVkYzRkODgnO1xuY29uc3QgTUFHSUNfU0VQID0gJy8nO1xuXG5cbmNsYXNzIElPU0NyYXNoTG9nIHtcbiAgY29uc3RydWN0b3IgKG9wdHMgPSB7fSkge1xuICAgIHRoaXMudWRpZCA9IG9wdHMudWRpZDtcbiAgICB0aGlzLnB5aWRldmljZUNsaWVudCA9IHRoaXMudWRpZCA/IG5ldyBQeWlkZXZpY2UodGhpcy51ZGlkKSA6IG51bGw7XG4gICAgY29uc3QgbG9nRGlyID0gb3B0cy51ZGlkXG4gICAgICA/IHBhdGgucmVzb2x2ZShwcm9jZXNzLmVudi5IT01FLCAnTGlicmFyeScsICdMb2dzJywgJ0NyYXNoUmVwb3J0ZXInLCAnTW9iaWxlRGV2aWNlJylcbiAgICAgIDogcGF0aC5yZXNvbHZlKHByb2Nlc3MuZW52LkhPTUUsICdMaWJyYXJ5JywgJ0xvZ3MnLCAnRGlhZ25vc3RpY1JlcG9ydHMnKTtcbiAgICB0aGlzLmxvZ0RpciA9IGxvZ0RpclxuICAgICAgfHwgcGF0aC5yZXNvbHZlKHByb2Nlc3MuZW52LkhPTUUgfHwgJy8nLCAnTGlicmFyeScsICdMb2dzJywgJ0RpYWdub3N0aWNSZXBvcnRzJyk7XG4gICAgdGhpcy5wcmV2TG9ncyA9IFtdO1xuICAgIHRoaXMubG9nc1NpbmNlTGFzdFJlcXVlc3QgPSBbXTtcbiAgICB0aGlzLnBob25lTmFtZSA9IG51bGw7XG4gICAgdGhpcy5zaW0gPSBvcHRzLnNpbTtcbiAgfVxuXG4gIGFzeW5jIF9nYXRoZXJGcm9tUmVhbERldmljZSAoKSB7XG4gICAgaWYgKGF3YWl0IHRoaXMucHlpZGV2aWNlQ2xpZW50LmFzc2VydEV4aXN0cyhmYWxzZSkpIHtcbiAgICAgIHJldHVybiAoYXdhaXQgdGhpcy5weWlkZXZpY2VDbGllbnQubGlzdENyYXNoZXMoKSlcbiAgICAgICAgLm1hcCgoeCkgPT4gYCR7UkVBTF9ERVZJQ0VfTUFHSUN9JHtNQUdJQ19TRVB9JHt4fWApO1xuICAgIH1cblxuICAgIGxldCBjcmFzaExvZ3NSb290ID0gdGhpcy5sb2dEaXI7XG4gICAgaWYgKHRoaXMudWRpZCkge1xuICAgICAgdGhpcy5waG9uZU5hbWUgPSB0aGlzLnBob25lTmFtZSB8fCBhd2FpdCB1dGlsaXRpZXMuZ2V0RGV2aWNlTmFtZSh0aGlzLnVkaWQpO1xuICAgICAgY3Jhc2hMb2dzUm9vdCA9IHBhdGgucmVzb2x2ZShjcmFzaExvZ3NSb290LCB0aGlzLnBob25lTmFtZSk7XG4gICAgfVxuICAgIGlmICghYXdhaXQgZnMuZXhpc3RzKGNyYXNoTG9nc1Jvb3QpKSB7XG4gICAgICBsb2cuZGVidWcoYENyYXNoIHJlcG9ydHMgcm9vdCAnJHtjcmFzaExvZ3NSb290fScgZG9lcyBub3QgZXhpc3QuIEdvdCBub3RoaW5nIHRvIGdhdGhlci5gKTtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgY29uc3QgZm91bmRGaWxlcyA9IGF3YWl0IGZzLmdsb2IoYCR7Y3Jhc2hMb2dzUm9vdH0vKiovKi5jcmFzaGAsIHtcbiAgICAgIHN0cmljdDogZmFsc2VcbiAgICB9KTtcbiAgICByZXR1cm4gZm91bmRGaWxlcztcbiAgfVxuXG4gIGFzeW5jIF9nYXRoZXJGcm9tU2ltdWxhdG9yICgpIHtcbiAgICBpZiAoIWF3YWl0IGZzLmV4aXN0cyh0aGlzLmxvZ0RpcikpIHtcbiAgICAgIGxvZy5kZWJ1ZyhgQ3Jhc2ggcmVwb3J0cyByb290ICcke3RoaXMubG9nRGlyfScgZG9lcyBub3QgZXhpc3QuIEdvdCBub3RoaW5nIHRvIGdhdGhlci5gKTtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgLy8gVGhlIGZpbGUgZm9ybWF0IGhhcyBiZWVuIGNoYW5nZWQgZnJvbSAnLmNyYXNoJyB0byAnLmlwcycgc2luY2UgTW9udGVyZXkuXG4gICAgY29uc3QgZm91bmRGaWxlcyA9IGF3YWl0IGZzLmdsb2IoYCR7dGhpcy5sb2dEaXJ9LyoqLyouKyhjcmFzaHxpcHMpYCwge1xuICAgICAgc3RyaWN0OiBmYWxzZVxuICAgIH0pO1xuICAgIC8vIEZvciBTaW11bGF0b3Igb25seSBpbmNsdWRlIGZpbGVzLCB0aGF0IGNvbnRhaW4gY3VycmVudCBVRElEXG4gICAgcmV0dXJuIGF3YWl0IEIuZmlsdGVyKGZvdW5kRmlsZXMsIGFzeW5jICh4KSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgZnMucmVhZEZpbGUoeCwgJ3V0ZjgnKTtcbiAgICAgICAgcmV0dXJuIGNvbnRlbnQudG9VcHBlckNhc2UoKS5pbmNsdWRlcyh0aGlzLnNpbS51ZGlkLnRvVXBwZXJDYXNlKCkpO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGdldENyYXNoZXMgKCkge1xuICAgIHJldHVybiB0aGlzLnVkaWRcbiAgICAgID8gYXdhaXQgdGhpcy5fZ2F0aGVyRnJvbVJlYWxEZXZpY2UoKVxuICAgICAgOiBhd2FpdCB0aGlzLl9nYXRoZXJGcm9tU2ltdWxhdG9yKCk7XG4gIH1cblxuICBhc3luYyBzdGFydENhcHR1cmUgKCkge1xuICAgIHRoaXMucHJldkxvZ3MgPSBhd2FpdCB0aGlzLmdldENyYXNoZXMoKTtcbiAgfVxuXG4gIGFzeW5jIHN0b3BDYXB0dXJlICgpIHtcbiAgICAvLyBuZWVkZWQgZm9yIGNvbnNpc3RlbnQgQVBJIHdpdGggb3RoZXIgbG9nc1xuICB9XG5cbiAgYXN5bmMgZ2V0TG9ncyAoKSB7XG4gICAgbGV0IGNyYXNoRmlsZXMgPSBhd2FpdCB0aGlzLmdldENyYXNoZXMoKTtcbiAgICBsZXQgZGlmZiA9IF8uZGlmZmVyZW5jZShjcmFzaEZpbGVzLCB0aGlzLnByZXZMb2dzLCB0aGlzLmxvZ3NTaW5jZUxhc3RSZXF1ZXN0KTtcbiAgICB0aGlzLmxvZ3NTaW5jZUxhc3RSZXF1ZXN0ID0gXy51bmlvbih0aGlzLmxvZ3NTaW5jZUxhc3RSZXF1ZXN0LCBkaWZmKTtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5maWxlc1RvSlNPTihkaWZmKTtcbiAgfVxuXG4gIGFzeW5jIGdldEFsbExvZ3MgKCkge1xuICAgIGxldCBjcmFzaEZpbGVzID0gYXdhaXQgdGhpcy5nZXRDcmFzaGVzKCk7XG4gICAgbGV0IGxvZ0ZpbGVzID0gXy5kaWZmZXJlbmNlKGNyYXNoRmlsZXMsIHRoaXMucHJldkxvZ3MpO1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmZpbGVzVG9KU09OKGxvZ0ZpbGVzKTtcbiAgfVxuXG4gIGFzeW5jIGZpbGVzVG9KU09OIChwYXRocykge1xuICAgIGNvbnN0IHRtcFJvb3QgPSBhd2FpdCB0ZW1wRGlyLm9wZW5EaXIoKTtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIChhd2FpdCBCLm1hcChwYXRocywgYXN5bmMgKGZ1bGxQYXRoKSA9PiB7XG4gICAgICAgIGlmIChfLmluY2x1ZGVzKGZ1bGxQYXRoLCBSRUFMX0RFVklDRV9NQUdJQykpIHtcbiAgICAgICAgICBjb25zdCBmaWxlTmFtZSA9IF8ubGFzdChmdWxsUGF0aC5zcGxpdChNQUdJQ19TRVApKTtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5weWlkZXZpY2VDbGllbnQuZXhwb3J0Q3Jhc2goZmlsZU5hbWUsIHRtcFJvb3QpO1xuICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGxvZy53YXJuKGBDYW5ub3QgZXhwb3J0IHRoZSBjcmFzaCByZXBvcnQgJyR7ZmlsZU5hbWV9Jy4gU2tpcHBpbmcgaXQuIGAgK1xuICAgICAgICAgICAgICBgT3JpZ2luYWwgZXJyb3I6ICR7ZS5tZXNzYWdlfWApO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBmdWxsUGF0aCA9IHBhdGguam9pbih0bXBSb290LCBmaWxlTmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3RhdCA9IGF3YWl0IGZzLnN0YXQoZnVsbFBhdGgpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHRpbWVzdGFtcDogc3RhdC5jdGltZS5nZXRUaW1lKCksXG4gICAgICAgICAgbGV2ZWw6ICdBTEwnLFxuICAgICAgICAgIG1lc3NhZ2U6IGF3YWl0IGZzLnJlYWRGaWxlKGZ1bGxQYXRoLCAndXRmOCcpXG4gICAgICAgIH07XG4gICAgICB9KSkuZmlsdGVyKEJvb2xlYW4pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBhd2FpdCBmcy5yaW1yYWYodG1wUm9vdCk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCB7IElPU0NyYXNoTG9nIH07XG5leHBvcnQgZGVmYXVsdCBJT1NDcmFzaExvZztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQSxNQUFNQSxpQkFBaUIsR0FBRyxzQ0FBMUI7QUFDQSxNQUFNQyxTQUFTLEdBQUcsR0FBbEI7O0FBR0EsTUFBTUMsV0FBTixDQUFrQjtFQUNoQkMsV0FBVyxDQUFFQyxJQUFJLEdBQUcsRUFBVCxFQUFhO0lBQ3RCLEtBQUtDLElBQUwsR0FBWUQsSUFBSSxDQUFDQyxJQUFqQjtJQUNBLEtBQUtDLGVBQUwsR0FBdUIsS0FBS0QsSUFBTCxHQUFZLElBQUlFLDBCQUFKLENBQWMsS0FBS0YsSUFBbkIsQ0FBWixHQUF1QyxJQUE5RDtJQUNBLE1BQU1HLE1BQU0sR0FBR0osSUFBSSxDQUFD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
|
|
@@ -8,6 +8,7 @@ import http from 'http';
|
|
|
8
8
|
import { exec } from 'teen_process';
|
|
9
9
|
import { findAPortNotInUse, checkPortStatus } from 'portscanner';
|
|
10
10
|
import Pyidevice from '../py-ios-device-client';
|
|
11
|
+
import { errors } from 'appium/driver';
|
|
11
12
|
|
|
12
13
|
let extensions = {}, commands = {};
|
|
13
14
|
|
|
@@ -409,6 +410,26 @@ commands.mobileInstallCertificate = async function mobileInstallCertificate (opt
|
|
|
409
410
|
}
|
|
410
411
|
};
|
|
411
412
|
|
|
413
|
+
/**
|
|
414
|
+
* Lists installed certificates for real devices only
|
|
415
|
+
* if [py-ios-device](https://github.com/YueChen-C/py-ios-device) tool
|
|
416
|
+
* is available on the server machine.
|
|
417
|
+
*
|
|
418
|
+
* @returns {Object} Returns map of certificates installed on the real device
|
|
419
|
+
* @throws {Error} If attempting to list certificates for simulated device or if py-ios-device
|
|
420
|
+
* is not installed
|
|
421
|
+
*/
|
|
422
|
+
commands.mobileListCertificates = async function mobileListCertificates () {
|
|
423
|
+
if (!this.isRealDevice()) {
|
|
424
|
+
throw new errors.NotImplementedError('This extension is only supported on real devices');
|
|
425
|
+
}
|
|
426
|
+
const client = new Pyidevice(this.opts.udid);
|
|
427
|
+
if (await client.assertExists(false)) {
|
|
428
|
+
return await client.listProfiles();
|
|
429
|
+
}
|
|
430
|
+
throw new Error('pyidevice is not installed on your system, command cannot be executed.');
|
|
431
|
+
};
|
|
432
|
+
|
|
412
433
|
Object.assign(extensions, commands);
|
|
413
434
|
export { commands, parseCommonName };
|
|
414
435
|
export default extensions;
|
package/lib/commands/execute.js
CHANGED
|
@@ -107,6 +107,7 @@ extensions.executeMobile = async function executeMobile (mobileCommand, opts = {
|
|
|
107
107
|
stopPerfRecord: 'mobileStopPerfRecord',
|
|
108
108
|
|
|
109
109
|
installCertificate: 'mobileInstallCertificate',
|
|
110
|
+
listCertificates: 'mobileListCertificates',
|
|
110
111
|
|
|
111
112
|
startLogsBroadcast: 'mobileStartLogsBroadcast',
|
|
112
113
|
stopLogsBroadcast: 'mobileStopLogsBroadcast',
|
|
@@ -51,7 +51,8 @@ class IOSCrashLog {
|
|
|
51
51
|
log.debug(`Crash reports root '${this.logDir}' does not exist. Got nothing to gather.`);
|
|
52
52
|
return [];
|
|
53
53
|
}
|
|
54
|
-
|
|
54
|
+
// The file format has been changed from '.crash' to '.ips' since Monterey.
|
|
55
|
+
const foundFiles = await fs.glob(`${this.logDir}/**/*.+(crash|ips)`, {
|
|
55
56
|
strict: false
|
|
56
57
|
});
|
|
57
58
|
// For Simulator only include files, that contain current UDID
|