appium-adb 8.18.0 → 9.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -2
- package/build/index.js +1 -1
- package/build/lib/adb.js +1 -1
- package/build/lib/helpers.js +54 -49
- package/build/lib/logcat.js +4 -4
- package/build/lib/logger.js +3 -3
- package/build/lib/tools/aab-utils.js +157 -0
- package/build/lib/tools/adb-commands.js +11 -11
- package/build/lib/tools/adb-emu-commands.js +7 -7
- package/build/lib/tools/android-manifest.js +13 -13
- package/build/lib/tools/apk-signing.js +27 -22
- package/build/lib/tools/apk-utils.js +13 -13
- package/build/lib/tools/apks-utils.js +13 -14
- package/build/lib/tools/index.js +5 -3
- package/build/lib/tools/lockmgmt.js +3 -3
- package/build/lib/tools/settings-client-commands.js +7 -7
- package/build/lib/tools/system-calls.js +27 -27
- package/lib/helpers.js +1 -1
- package/lib/logcat.js +1 -1
- package/lib/logger.js +1 -1
- package/lib/tools/aab-utils.js +158 -0
- package/lib/tools/adb-commands.js +1 -1
- package/lib/tools/adb-emu-commands.js +1 -1
- package/lib/tools/android-manifest.js +1 -1
- package/lib/tools/apk-signing.js +4 -4
- package/lib/tools/apk-utils.js +6 -7
- package/lib/tools/apks-utils.js +6 -6
- package/lib/tools/index.js +2 -0
- package/lib/tools/lockmgmt.js +1 -1
- package/lib/tools/settings-client-commands.js +1 -1
- package/lib/tools/system-calls.js +1 -1
- package/package.json +12 -8
- package/lib/.DS_Store +0 -0
|
@@ -17,7 +17,7 @@ var _path = _interopRequireDefault(require("path"));
|
|
|
17
17
|
|
|
18
18
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
19
19
|
|
|
20
|
-
var
|
|
20
|
+
var _support = require("@appium/support");
|
|
21
21
|
|
|
22
22
|
var _lruCache = _interopRequireDefault(require("lru-cache"));
|
|
23
23
|
|
|
@@ -33,22 +33,23 @@ const LANGUAGE_APK = lang => `base-${lang}.apk`;
|
|
|
33
33
|
|
|
34
34
|
const APKS_CACHE = new _lruCache.default({
|
|
35
35
|
max: 10,
|
|
36
|
-
dispose: (apksHash, extractedFilesRoot) =>
|
|
36
|
+
dispose: (apksHash, extractedFilesRoot) => _support.fs.rimraf(extractedFilesRoot)
|
|
37
37
|
});
|
|
38
38
|
const APKS_CACHE_GUARD = new _asyncLock.default();
|
|
39
39
|
const BUNDLETOOL_TIMEOUT_MS = 4 * 60 * 1000;
|
|
40
|
+
const apksUtilsMethods = {};
|
|
40
41
|
process.on('exit', () => {
|
|
41
|
-
if (APKS_CACHE.
|
|
42
|
+
if (!APKS_CACHE.size) {
|
|
42
43
|
return;
|
|
43
44
|
}
|
|
44
45
|
|
|
45
|
-
const paths = APKS_CACHE.values();
|
|
46
|
+
const paths = [...APKS_CACHE.values()];
|
|
46
47
|
|
|
47
|
-
_logger.default.debug(`Performing cleanup of ${paths.length} cached .apks ` +
|
|
48
|
+
_logger.default.debug(`Performing cleanup of ${paths.length} cached .apks ` + _support.util.pluralize('package', paths.length));
|
|
48
49
|
|
|
49
50
|
for (const appPath of paths) {
|
|
50
51
|
try {
|
|
51
|
-
|
|
52
|
+
_support.fs.rimrafSync(appPath);
|
|
52
53
|
} catch (e) {
|
|
53
54
|
_logger.default.warn(e.message);
|
|
54
55
|
}
|
|
@@ -61,21 +62,21 @@ async function extractFromApks(apks, dstPath) {
|
|
|
61
62
|
}
|
|
62
63
|
|
|
63
64
|
return await APKS_CACHE_GUARD.acquire(apks, async () => {
|
|
64
|
-
const apksHash = await
|
|
65
|
+
const apksHash = await _support.fs.hash(apks);
|
|
65
66
|
|
|
66
67
|
_logger.default.debug(`Calculated '${apks}' hash: ${apksHash}`);
|
|
67
68
|
|
|
68
69
|
if (APKS_CACHE.has(apksHash)) {
|
|
69
70
|
const resultPath = _path.default.resolve(APKS_CACHE.get(apksHash), ...dstPath);
|
|
70
71
|
|
|
71
|
-
if (await
|
|
72
|
+
if (await _support.fs.exists(resultPath)) {
|
|
72
73
|
return resultPath;
|
|
73
74
|
}
|
|
74
75
|
|
|
75
76
|
APKS_CACHE.del(apksHash);
|
|
76
77
|
}
|
|
77
78
|
|
|
78
|
-
const tmpRoot = await
|
|
79
|
+
const tmpRoot = await _support.tempDir.openDir();
|
|
79
80
|
|
|
80
81
|
_logger.default.debug(`Unpacking application bundle at '${apks}' to '${tmpRoot}'`);
|
|
81
82
|
|
|
@@ -83,7 +84,7 @@ async function extractFromApks(apks, dstPath) {
|
|
|
83
84
|
|
|
84
85
|
const resultPath = _path.default.resolve(tmpRoot, ...dstPath);
|
|
85
86
|
|
|
86
|
-
if (!(await
|
|
87
|
+
if (!(await _support.fs.exists(resultPath))) {
|
|
87
88
|
throw new Error(`${dstPath.join(_path.default.sep)} cannot be found in '${apks}' bundle. ` + `Does the archive contain a valid application bundle?`);
|
|
88
89
|
}
|
|
89
90
|
|
|
@@ -92,8 +93,6 @@ async function extractFromApks(apks, dstPath) {
|
|
|
92
93
|
});
|
|
93
94
|
}
|
|
94
95
|
|
|
95
|
-
let apksUtilsMethods = {};
|
|
96
|
-
|
|
97
96
|
apksUtilsMethods.execBundletool = async function execBundletool(args, errorMsg) {
|
|
98
97
|
await this.initBundletool();
|
|
99
98
|
args = ['-jar', this.binaries.bundletool, ...args];
|
|
@@ -209,7 +208,7 @@ apksUtilsMethods.extractLanguageApk = async function extractLanguageApk(apks, la
|
|
|
209
208
|
return await this.extractBaseApk(apks);
|
|
210
209
|
};
|
|
211
210
|
|
|
212
|
-
apksUtilsMethods.isTestPackageOnlyError = function (output) {
|
|
211
|
+
apksUtilsMethods.isTestPackageOnlyError = function isTestPackageOnlyError(output) {
|
|
213
212
|
return /\[INSTALL_FAILED_TEST_ONLY\]/.test(output);
|
|
214
213
|
};
|
|
215
214
|
|
|
@@ -217,4 +216,4 @@ var _default = apksUtilsMethods;
|
|
|
217
216
|
exports.default = _default;require('source-map-support').install();
|
|
218
217
|
|
|
219
218
|
|
|
220
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi90b29scy9hcGtzLXV0aWxzLmpzIl0sIm5hbWVzIjpbIkJBU0VfQVBLIiwiTEFOR1VBR0VfQVBLIiwibGFuZyIsIkFQS1NfQ0FDSEUiLCJMUlUiLCJtYXgiLCJkaXNwb3NlIiwiYXBrc0hhc2giLCJleHRyYWN0ZWRGaWxlc1Jvb3QiLCJmcyIsInJpbXJhZiIsIkFQS1NfQ0FDSEVfR1VBUkQiLCJBc3luY0xvY2siLCJCVU5ETEVUT09MX1RJTUVPVVRfTVMiLCJwcm9jZXNzIiwib24iLCJpdGVtQ291bnQiLCJwYXRocyIsInZhbHVlcyIsImxvZyIsImRlYnVnIiwibGVuZ3RoIiwidXRpbCIsInBsdXJhbGl6ZSIsImFwcFBhdGgiLCJyaW1yYWZTeW5jIiwiZSIsIndhcm4iLCJtZXNzYWdlIiwiZXh0cmFjdEZyb21BcGtzIiwiYXBrcyIsImRzdFBhdGgiLCJfIiwiaXNBcnJheSIsImFjcXVpcmUiLCJoYXNoIiwiaGFzIiwicmVzdWx0UGF0aCIsInBhdGgiLCJyZXNvbHZlIiwiZ2V0IiwiZXhpc3RzIiwiZGVsIiwidG1wUm9vdCIsInRlbXBEaXIiLCJvcGVuRGlyIiwiRXJyb3IiLCJqb2luIiwic2VwIiwic2V0IiwiYXBrc1V0aWxzTWV0aG9kcyIsImV4ZWNCdW5kbGV0b29sIiwiYXJncyIsImVycm9yTXNnIiwiaW5pdEJ1bmRsZXRvb2wiLCJiaW5hcmllcyIsImJ1bmRsZXRvb2wiLCJlbnYiLCJhZGJQb3J0IiwiQU5EUk9JRF9BREJfU0VSVkVSX1BPUlQiLCJhZGJIb3N0IiwiQU5EUk9JRF9BREJfU0VSVkVSX0hPU1QiLCJKU09OIiwic3RyaW5naWZ5Iiwic3Rkb3V0IiwidGltZW91dCIsInRydW5jYXRlIiwic3RkZXJyIiwiZ2V0RGV2aWNlU3BlYyIsInNwZWNMb2NhdGlvbiIsImV4ZWN1dGFibGUiLCJjdXJEZXZpY2VJZCIsImluc3RhbGxNdWx0aXBsZUFwa3MiLCJhcGtQYXRoc1RvSW5zdGFsbCIsIm9wdGlvbnMiLCJpbnN0YWxsQXJncyIsImdldEFwaUxldmVsIiwiYWRiRXhlYyIsInRpbWVvdXRDYXBOYW1lIiwiaW5zdGFsbEFwa3MiLCJncmFudFBlcm1pc3Npb25zIiwiYWxsb3dUZXN0UGFja2FnZXMiLCJBUEtTX0lOU1RBTExfVElNRU9VVCIsInB1c2giLCJ0YXNrcyIsImJhc2VuYW1lIiwiZ2V0QXBrSW5mbyIsImFwa0luZm8iLCJCIiwiYWxsIiwiZ3JhbnRBbGxQZXJtaXNzaW9ucyIsIm5hbWUiLCJleHRyYWN0QmFzZUFwayIsImV4dHJhY3RMYW5ndWFnZUFwayIsImxhbmd1YWdlIiwiaW5mbyIsImRlZmF1bHRMYW5ndWFnZXMiLCJpZ24iLCJpc1Rlc3RQYWNrYWdlT25seUVycm9yIiwib3V0cHV0IiwidGVzdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFHQTs7QUFDQTs7QUFFQSxNQUFNQSxRQUFRLEdBQUcsaUJBQWpCOztBQUNBLE1BQU1DLFlBQVksR0FBSUMsSUFBRCxJQUFXLFFBQU9BLElBQUssTUFBNUM7O0FBQ0EsTUFBTUMsVUFBVSxHQUFHLElBQUlDLGlCQUFKLENBQVE7QUFDekJDLEVBQUFBLEdBQUcsRUFBRSxFQURvQjtBQUV6QkMsRUFBQUEsT0FBTyxFQUFFLENBQUNDLFFBQUQsRUFBV0Msa0JBQVgsS0FBa0NDLGtCQUFHQyxNQUFILENBQVVGLGtCQUFWO0FBRmxCLENBQVIsQ0FBbkI7QUFJQSxNQUFNRyxnQkFBZ0IsR0FBRyxJQUFJQyxrQkFBSixFQUF6QjtBQUNBLE1BQU1DLHFCQUFxQixHQUFHLElBQUksRUFBSixHQUFTLElBQXZDO0FBRUFDLE9BQU8sQ0FBQ0MsRUFBUixDQUFXLE1BQVgsRUFBbUIsTUFBTTtBQUN2QixNQUFJWixVQUFVLENBQUNhLFNBQVgsS0FBeUIsQ0FBN0IsRUFBZ0M7QUFDOUI7QUFDRDs7QUFFRCxRQUFNQyxLQUFLLEdBQUdkLFVBQVUsQ0FBQ2UsTUFBWCxFQUFkOztBQUNBQyxrQkFBSUMsS0FBSixDQUFXLHlCQUF3Qkgs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LE9BQUssTUFBTTlGLElBQVgsSUFBbUI4RixnQkFBbkIsRUFBcUM7QUFDbkMsUUFBSTtBQUNGLGFBQU8sTUFBTW5FLGVBQWUsQ0FBQ0MsSUFBRCxFQUFPLENBQUMsUUFBRCxFQUFXN0IsWUFBWSxDQUFDQyxJQUFELENBQXZCLENBQVAsQ0FBNUI7QUFDRCxLQUZELENBRUUsT0FBTytGLEdBQVAsRUFBWSxDQUFFO0FBQ2pCOztBQUVEOUUsa0JBQUk0RSxJQUFKLENBQVUsdURBQXNEakMsSUFBSSxDQUFDQyxTQUFMLENBQWVpQyxnQkFBZixDQUFpQyxJQUF4RixHQUNOLGlDQURIOztBQUVBLFNBQU8sTUFBTSxLQUFLSixjQUFMLENBQW9COUQsSUFBcEIsQ0FBYjtBQUNELENBdEJEOztBQXdCQW9CLGdCQUFnQixDQUFDZ0Qsc0JBQWpCLEdBQTBDLFVBQVVDLE1BQVYsRUFBa0I7QUFDMUQsU0FBTywrQkFBK0JDLElBQS9CLENBQW9DRCxNQUFwQyxDQUFQO0FBQ0QsQ0FGRDs7ZUFJZWpELGdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXhlYyB9IGZyb20gJ3RlZW5fcHJvY2Vzcyc7XG5pbXBvcnQgbG9nIGZyb20gJy4uL2xvZ2dlci5qcyc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBmcywgdGVtcERpciwgdXRpbCB9IGZyb20gJ2FwcGl1bS1zdXBwb3J0JztcbmltcG9ydCBMUlUgZnJvbSAnbHJ1LWNhY2hlJztcbmltcG9ydCB7XG4gIGdldEphdmFGb3JPcywgdW56aXBGaWxlLCBidWlsZEluc3RhbGxBcmdzLCBBUEtTX0lOU1RBTExfVElNRU9VVFxufSBmcm9tICcuLi9oZWxwZXJzLmpzJztcbmltcG9ydCBBc3luY0xvY2sgZnJvbSAnYXN5bmMtbG9jayc7XG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5cbmNvbnN0IEJBU0VfQVBLID0gJ2Jhc2UtbWFzdGVyLmFwayc7XG5jb25zdCBMQU5HVUFHRV9BUEsgPSAobGFuZykgPT4gYGJhc2UtJHtsYW5nfS5hcGtgO1xuY29uc3QgQVBLU19DQUNIRSA9IG5ldyBMUlUoe1xuICBtYXg6IDEwLFxuICBkaXNwb3NlOiAoYXBrc0hhc2gsIGV4dHJhY3RlZEZpbGVzUm9vdCkgPT4gZnMucmltcmFmKGV4dHJhY3RlZEZpbGVzUm9vdCksXG59KTtcbmNvbnN0IEFQS1NfQ0FDSEVfR1VBUkQgPSBuZXcgQXN5bmNMb2NrKCk7XG5jb25zdCBCVU5ETEVUT09MX1RJTUVPVVRfTVMgPSA0ICogNjAgKiAxMDAwO1xuXG5wcm9jZXNzLm9uKCdleGl0JywgKCkgPT4ge1xuICBpZiAoQVBLU19DQUNIRS5pdGVtQ291bnQgPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBwYXRocyA9IEFQS1NfQ0FDSEUudmFsdWVzKCk7XG4gIGxvZy5kZWJ1ZyhgUGVyZm9ybWluZyBjbGVhbnVwIG9mICR7cGF0aHMubGVuZ3RofSBjYWNoZWQgLmFwa3MgYCArXG4gICAgdXRpbC5wbHVyYWxpemUoJ3BhY2thZ2UnLCBwYXRocy5sZW5ndGgpKTtcbiAgZm9yIChjb25zdCBhcHBQYXRoIG9mIHBhdGhzKSB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIEFzeW5jaHJvbm91cyBjYWxscyBhcmUgbm90IHN1cHBvcnRlZCBpbiBvbkV4aXQgaGFuZGxlclxuICAgICAgZnMucmltcmFmU3luYyhhcHBQYXRoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBsb2cud2FybihlLm1lc3NhZ2UpO1xuICAgIH1cbiAgfVxufSk7XG5cbi8qKlxuICogRXh0cmFjdHMgdGhlIHBhcnRpY3VsYXIgYXBrcyBwYWNrYWdlIGludG8gYSB0ZW1wb3JhcnkgZm9sZGVyLFxuICogZmluZHMgYW5kIHJldHVybnMgdGhlIGZ1bGwgcGF0aCB0byB0aGUgZmlsZSBjb250YWluZWQgaW4gdGhpcyBhcGsuXG4gKiBUaGUgcmVzdWx0aW5nIHRlbXBvcmFyeSBwYXRoLCB3aGVyZSB0aGUgLmFwa3MgZmlsZSBoYXMgYmVlbiBleHRyYWN0ZWQsXG4gKiB3aWxsIGJlIHN0b3JlZCBpbnRvIHRoZSBpbnRlcm5hbCBMUlUgY2FjaGUgZm9yIGJldHRlciBwZXJmb3JtYW5jZS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYXBrcyAtIFRoZSBmdWxsIHBhdGggdG8gdGhlIC5hcGtzIGZpbGVcbiAqIEBwYXJhbSB7c3RyaW5nfEFycmF5PFN0cmluZz59IGRzdFBhdGggLSBUaGUgcmVsYXRpdmUgcGF0aCB0byB0aGUgZGVzdGluYXRpb24gZmlsZSxcbiAqIHdoaWNoIGlzIGdvaW5nIHRvIGJlIGV4dHJhY3RlZCwgd2hlcmUgZWFjaCBwYXRoIGNvbXBvbmVudCBpcyBhbiBhcnJheSBpdGVtXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBGdWxsIHBhdGggdG8gdGhlIGV4dHJhY3RlZCBmaWxlXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIHJlcXVlc3RlZCBpdGVtIGRvZXMgbm90IGV4aXN0IGluIHRoZSBleHRyYWN0ZWQgYXJjaGl2ZSBvciB0aGUgcHJvdmlkZXNcbiAqIGFwa3MgZmlsZSBpcyBub3QgYSB2YWxpZCBidW5kbGVcbiAqL1xuYXN5bmMgZnVuY3Rpb24gZXh0cmFjdEZyb21BcGtzIChhcGtzLCBkc3RQYXRoKSB7XG4gIGlmICghXy5pc0FycmF5KGRzdFBhdGgpKSB7XG4gICAgZHN0UGF0aCA9IFtkc3RQYXRoXTtcbiAgfVxuXG4gIHJldHVybiBhd2FpdCBBUEtTX0NBQ0hFX0dVQVJELmFjcXVpcmUoYXBrcywgYXN5bmMgKCkgPT4ge1xuICAgIC8vIEl0IG1pZ2h0IGJlIHRoYXQgdGhlIG9yaWdpbmFsIGZpbGUgaGFzIGJlZW4gcmVwbGFjZWQsXG4gICAgLy8gc28gd2UgbmVlZCB0byBrZWVwIHRoZSBoYXNoIHN1bXMgaW5zdGVhZCBvZiB0aGUgYWN0dWFsIGZpbGUgcGF0aHNcbiAgICAvLyBhcyBjYWNoaW5nIGtleXNcbiAgICBjb25zdCBhcGtzSGFzaCA9IGF3YWl0IGZzLmhhc2goYXBrcyk7XG4gICAgbG9nLmRlYnVnKGBDYWxjdWxhdGVkICcke2Fwa3N9JyBoYXNoOiAke2Fwa3NIYXNofWApO1xuXG4gICAgaWYgKEFQS1NfQ0FDSEUuaGFzKGFwa3NIYXNoKSkge1xuICAgICAgY29uc3QgcmVzdWx0UGF0aCA9IHBhdGgucmVzb2x2ZShBUEtTX0NBQ0hFLmdldChhcGtzSGFzaCksIC4uLmRzdFBhdGgpO1xuICAgICAgaWYgKGF3YWl0IGZzLmV4aXN0cyhyZXN1bHRQYXRoKSkge1xuICAgICAgICByZXR1cm4gcmVzdWx0UGF0aDtcbiAgICAgIH1cbiAgICAgIEFQS1NfQ0FDSEUuZGVsKGFwa3NIYXNoKTtcbiAgICB9XG5cbiAgICBjb25zdCB0bXBSb290ID0gYXdhaXQgdGVtcERpci5vcGVuRGlyKCk7XG4gICAgbG9nLmRlYnVnKGBVbnBhY2tpbmcgYXBwbGljYXRpb24gYnVuZGxlIGF0ICcke2Fwa3N9JyB0byAnJHt0bXBSb290fSdgKTtcbiAgICBhd2FpdCB1bnppcEZpbGUoYXBrcywgdG1wUm9vdCk7XG4gICAgY29uc3QgcmVzdWx0UGF0aCA9IHBhdGgucmVzb2x2ZSh0bXBSb290LCAuLi5kc3RQYXRoKTtcbiAgICBpZiAoIWF3YWl0IGZzLmV4aXN0cyhyZXN1bHRQYXRoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAke2RzdFBhdGguam9pbihwYXRoLnNlcCl9IGNhbm5vdCBiZSBmb3VuZCBpbiAnJHthcGtzfScgYnVuZGxlLiBgICtcbiAgICAgICAgYERvZXMgdGhlIGFyY2hpdmUgY29udGFpbiBhIHZhbGlkIGFwcGxpY2F0aW9uIGJ1bmRsZT9gKTtcbiAgICB9XG4gICAgQVBLU19DQUNIRS5zZXQoYXBrc0hhc2gsIHRtcFJvb3QpO1xuICAgIHJldHVybiByZXN1bHRQYXRoO1xuICB9KTtcbn1cblxubGV0IGFwa3NVdGlsc01ldGhvZHMgPSB7fTtcblxuLyoqXG4gKiBFeGVjdXRlcyBidW5kbGV0b29sIHV0aWxpdHkgd2l0aCBnaXZlbiBhcmd1bWVudHMgYW5kIHJldHVybnMgdGhlIGFjdHVhbCBzdGRvdXRcbiAqXG4gKiBAcGFyYW0ge0FycmF5PFN0cmluZz59IGFyZ3MgLSB0aGUgbGlzdCBvZiBidW5kbGV0b29sIGFyZ3VtZW50c1xuICogQHBhcmFtIHtzdHJpbmd9IGVycm9yTXNnIC0gVGhlIGN1c3RvbWl6ZWQgZXJyb3IgbWVzc2FnZSBzdHJpbmdcbiAqIEByZXR1cm5zIHtzdHJpbmd9IHRoZSBhY3R1YWwgY29tbWFuZCBzdGRvdXRcbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiBidW5kbGV0b29sIGphciBkb2VzIG5vdCBleGlzdCBpbiBQQVRIIG9yIHRoZXJlIHdhcyBhbiBlcnJvciB3aGlsZVxuICogZXhlY3V0aW5nIGl0XG4gKi9cbmFwa3NVdGlsc01ldGhvZHMuZXhlY0J1bmRsZXRvb2wgPSBhc3luYyBmdW5jdGlvbiBleGVjQnVuZGxldG9vbCAoYXJncywgZXJyb3JNc2cpIHtcbiAgYXdhaXQgdGhpcy5pbml0QnVuZGxldG9vbCgpO1xuICBhcmdzID0gW1xuICAgICctamFyJywgdGhpcy5iaW5hcmllcy5idW5kbGV0b29sLFxuICAgIC4uLmFyZ3NcbiAgXTtcbiAgY29uc3QgZW52ID0gcHJvY2Vzcy5lbnY7XG4gIGlmICh0aGlzLmFkYlBvcnQpIHtcbiAgICBlbnYuQU5EUk9JRF9BREJfU0VSVkVSX1BPUlQgPSBgJHt0aGlzLmFkYlBvcnR9YDtcbiAgfVxuICBpZiAodGhpcy5hZGJIb3N0KSB7XG4gICAgZW52LkFORFJPSURfQURCX1NFUlZFUl9IT1NUID0gdGhpcy5hZGJIb3N0O1xuICB9XG4gIGxvZy5kZWJ1ZyhgRXhlY3V0aW5nIGJ1bmRsZXRvb2wgd2l0aCBhcmd1bWVudHM6ICR7SlNPTi5zdHJpbmdpZnkoYXJncyl9YCk7XG4gIGxldCBzdGRvdXQ7XG4gIHRyeSB7XG4gICAgKHtzdGRvdXR9ID0gYXdhaXQgZXhlYyhhd2FpdCBnZXRKYXZhRm9yT3MoKSwgYXJncywge1xuICAgICAgZW52LFxuICAgICAgdGltZW91dDogQlVORExFVE9PTF9USU1FT1VUX01TLFxuICAgIH0pKTtcbiAgICBsb2cuZGVidWcoYENvbW1hbmQgc3Rkb3V0OiAke18udHJ1bmNhdGUoc3Rkb3V0LCB7bGVuZ3RoOiAzMDB9KX1gKTtcbiAgICByZXR1cm4gc3Rkb3V0O1xuICB9IGNhdGNoIChlKSB7XG4gICAgaWYgKGUuc3Rkb3V0KSB7XG4gICAgICBsb2cuZGVidWcoYENvbW1hbmQgc3Rkb3V0OiAke2Uuc3Rkb3V0fWApO1xuICAgIH1cbiAgICBpZiAoZS5zdGRlcnIpIHtcbiAgICAgIGxvZy5kZWJ1ZyhgQ29tbWFuZCBzdGRlcnI6ICR7ZS5zdGRlcnJ9YCk7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihgJHtlcnJvck1zZ30uIE9yaWdpbmFsIGVycm9yOiAke2UubWVzc2FnZX1gKTtcbiAgfVxufTtcblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3BlY0xvY2F0aW9uIC0gVGhlIGZ1bGwgcGF0aCB0byB0aGUgZ2VuZXJhdGVkIGRldmljZSBzcGVjIGxvY2F0aW9uXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgc2FtZSBgc3BlY0xvY2F0aW9uYCB2YWx1ZVxuICogQHRocm93cyB7RXJyb3J9IElmIGl0IGlzIG5vdCBwb3NzaWJsZSB0byByZXRyaWV2ZSB0aGUgc3BlYyBmb3IgdGhlIGN1cnJlbnQgZGV2aWNlXG4gKi9cbmFwa3NVdGlsc01ldGhvZHMuZ2V0RGV2aWNlU3BlYyA9IGFzeW5jIGZ1bmN0aW9uIGdldERldmljZVNwZWMgKHNwZWNMb2NhdGlvbikge1xuICBjb25zdCBhcmdzID0gW1xuICAgICdnZXQtZGV2aWNlLXNwZWMnLFxuICAgICctLWFkYicsIHRoaXMuZXhlY3V0YWJsZS5wYXRoLFxuICAgICctLWRldmljZS1pZCcsIHRoaXMuY3VyRGV2aWNlSWQsXG4gICAgJy0tb3V0cHV0Jywgc3BlY0xvY2F0aW9uLFxuICBdO1xuICBsb2cuZGVidWcoYEdldHRpbmcgdGhlIHNwZWMgZm9yIHRoZSBkZXZpY2UgJyR7dGhpcy5jdXJEZXZpY2VJZH0nYCk7XG4gIGF3YWl0IHRoaXMuZXhlY0J1bmRsZXRvb2woYXJncywgJ0Nhbm5vdCByZXRyaWV2ZSB0aGUgZGV2aWNlIHNwZWMnKTtcbiAgcmV0dXJuIHNwZWNMb2NhdGlvbjtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gSW5zdGFsbE11bHRpcGxlQXBrc09wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7P251bWJlcnxzdHJpbmd9IHRpbWVvdXQgWzIwMDAwXSAtIFRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIHdhaXQgdW50aWxcbiAqIHRoZSBpbnN0YWxsYXRpb24gaXMgY29tcGxldGVkXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdGltZW91dENhcE5hbWUgW2FuZHJvaWRJbnN0YWxsVGltZW91dF0gLSBUaGUgdGltZW91dCBvcHRpb24gbmFtZVxuICogdXNlcnMgY2FuIGluY3JlYXNlIHRoZSB0aW1lb3V0LlxuICogQHByb3BlcnR5IHtib29sZWFufSBhbGxvd1Rlc3RQYWNrYWdlcyBbZmFsc2VdIC0gU2V0IHRvIHRydWUgaW4gb3JkZXIgdG8gYWxsb3cgdGVzdFxuICogcGFja2FnZXMgaW5zdGFsbGF0aW9uLlxuICogQHByb3BlcnR5IHtib29sZWFufSB1c2VTZGNhcmQgW2ZhbHNlXSAtIFNldCB0byB0cnVlIHRvIGluc3RhbGwgdGhlIGFwcCBvbiBzZGNhcmRcbiAqIGluc3RlYWQgb2YgdGhlIGRldmljZSBtZW1vcnkuXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IGdyYW50UGVybWlzc2lvbnMgW2ZhbHNlXSAtIFNldCB0byB0cnVlIGluIG9yZGVyIHRvIGdyYW50IGFsbCB0aGVcbiAqIHBlcm1pc3Npb25zIHJlcXVlc3RlZCBpbiB0aGUgYXBwbGljYXRpb24ncyBtYW5pZmVzdCBhdXRvbWF0aWNhbGx5IGFmdGVyIHRoZSBpbnN0YWxsYXRpb25cbiAqIGlzIGNvbXBsZXRlZCB1bmRlciBBbmRyb2lkIDYrLlxuICogQHByb3BlcnR5IHtib29sZWFufSBwYXJ0aWFsSW5zdGFsbCBbZmFsc2VdIC0gSW5zdGFsbCBhcGtzIHBhcnRpYWxseS4gSXQgaXMgdXNlZCBmb3IgJ2luc3RhbGwtbXVsdGlwbGUnLlxuICogaHR0cHM6Ly9hbmRyb2lkLnN0YWNrZXhjaGFuZ2UuY29tL3F1ZXN0aW9ucy8xMTEwNjQvd2hhdC1pcy1hLXBhcnRpYWwtYXBwbGljYXRpb24taW5zdGFsbC12aWEtYWRiXG4gKi9cblxuLyoqXG4gKiBJbnN0YWxscyB0aGUgZ2l2ZW4gYXBrcyBpbnRvIHRoZSBkZXZpY2UgdW5kZXIgdGVzdFxuICpcbiAqIEBwYXJhbSB7QXJyYXk8c3RyaW5nPn0gYXBrUGF0aHNUb0luc3RhbGwgLSBUaGUgZnVsbCBwYXRocyB0byBpbnN0YWxsIGFwa3NcbiAqIEBwYXJhbSB7P2luc3RhbGxNdWx0aXBsZUFwa3NPcHRpb25zfSBvcHRpb25zIC0gSW5zdGFsbGF0aW9uIG9wdGlvbnNcbiAqL1xuYXBrc1V0aWxzTWV0aG9kcy5pbnN0YWxsTXVsdGlwbGVBcGtzID0gYXN5bmMgZnVuY3Rpb24gaW5zdGFsbE11bHRpcGxlQXBrcyAoYXBrUGF0aHNUb0luc3RhbGwsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCBpbnN0YWxsQXJncyA9IGJ1aWxkSW5zdGFsbEFyZ3MoYXdhaXQgdGhpcy5nZXRBcGlMZXZlbCgpLCBvcHRpb25zKTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYWRiRXhlYyhbJ2luc3RhbGwtbXVsdGlwbGUnLCAuLi5pbnN0YWxsQXJncywgLi4uYXBrUGF0aHNUb0luc3RhbGxdLCB7XG4gICAgdGltZW91dDogb3B0aW9ucy50aW1lb3V0LFxuICAgIHRpbWVvdXRDYXBOYW1lOiBvcHRpb25zLnRpbWVvdXRDYXBOYW1lLFxuICB9KTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gSW5zdGFsbEFwa3NPcHRpb25zXG4gKiBAcHJvcGVydHkgez9udW1iZXJ8c3RyaW5nfSB0aW1lb3V0IFsxMjAwMDBdIC0gVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gd2FpdCB1bnRpbFxuICogdGhlIGluc3RhbGxhdGlvbiBpcyBjb21wbGV0ZWRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSB0aW1lb3V0Q2FwTmFtZSBbYW5kcm9pZEluc3RhbGxUaW1lb3V0XSAtIFRoZSB0aW1lb3V0IG9wdGlvbiBuYW1lXG4gKiB1c2VycyBjYW4gaW5jcmVhc2UgdGhlIHRpbWVvdXQuXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IGFsbG93VGVzdFBhY2thZ2VzIFtmYWxzZV0gLSBTZXQgdG8gdHJ1ZSBpbiBvcmRlciB0byBhbGxvdyB0ZXN0XG4gKiBwYWNrYWdlcyBpbnN0YWxsYXRpb24uXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IGdyYW50UGVybWlzc2lvbnMgW2ZhbHNlXSAtIFNldCB0byB0cnVlIGluIG9yZGVyIHRvIGdyYW50IGFsbCB0aGVcbiAqIHBlcm1pc3Npb25zIHJlcXVlc3RlZCBpbiB0aGUgYXBwbGljYXRpb24ncyBtYW5pZmVzdCBhdXRvbWF0aWNhbGx5IGFmdGVyIHRoZSBpbnN0YWxsYXRpb25cbiAqIGlzIGNvbXBsZXRlZCB1bmRlciBBbmRyb2lkIDYrLlxuICovXG5cbi8qKlxuICogSW5zdGFsbHMgdGhlIGdpdmVuIC5hcGtzIHBhY2thZ2UgaW50byB0aGUgZGV2aWNlIHVuZGVyIHRlc3RcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYXBrcyAtIFRoZSBmdWxsIHBhdGggdG8gdGhlIC5hcGtzIGZpbGVcbiAqIEBwYXJhbSB7P0luc3RhbGxBcGtzT3B0aW9uc30gb3B0aW9ucyAtIEluc3RhbGxhdGlvbiBvcHRpb25zXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIC5hcGtzIGJ1bmRsZSBjYW5ub3QgYmUgaW5zdGFsbGVkXG4gKi9cbmFwa3NVdGlsc01ldGhvZHMuaW5zdGFsbEFwa3MgPSBhc3luYyBmdW5jdGlvbiBpbnN0YWxsQXBrcyAoYXBrcywgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBncmFudFBlcm1pc3Npb25zLFxuICAgIGFsbG93VGVzdFBhY2thZ2VzLFxuICAgIHRpbWVvdXQsXG4gIH0gPSBvcHRpb25zO1xuXG4gIGNvbnN0IGFyZ3MgPSBbXG4gICAgJ2luc3RhbGwtYXBrcycsXG4gICAgJy0tYWRiJywgdGhpcy5leGVjdXRhYmxlLnBhdGgsXG4gICAgJy0tYXBrcycsIGFwa3MsXG4gICAgJy0tdGltZW91dC1taWxsaXMnLCB0aW1lb3V0IHx8IEFQS1NfSU5TVEFMTF9USU1FT1VULFxuICAgICctLWRldmljZS1pZCcsIHRoaXMuY3VyRGV2aWNlSWQsXG4gIF07XG4gIGlmIChhbGxvd1Rlc3RQYWNrYWdlcykge1xuICAgIGFyZ3MucHVzaCgnLS1hbGxvdy10ZXN0LW9ubHknKTtcbiAgfVxuICBjb25zdCB0YXNrcyA9IFtcbiAgICB0aGlzLmV4ZWNCdW5kbGV0b29sKGFyZ3MsIGBDYW5ub3QgaW5zdGFsbCAnJHtwYXRoLmJhc2VuYW1lKGFwa3MpfScgdG8gdGhlIGRldmljZSAke3RoaXMuY3VyRGV2aWNlSWR9YClcbiAgXTtcbiAgaWYgKGdyYW50UGVybWlzc2lvbnMpIHtcbiAgICB0YXNrcy5wdXNoKHRoaXMuZ2V0QXBrSW5mbyhhcGtzKSk7XG4gIH1cbiAgY29uc3QgWywgYXBrSW5mb10gPSBhd2FpdCBCLmFsbCh0YXNrcyk7XG4gIGlmIChncmFudFBlcm1pc3Npb25zICYmIGFwa0luZm8pIHtcbiAgICAvLyBUT0RPOiBTaW1wbGlmeSBpdCBhZnRlciBodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2J1bmRsZXRvb2wvaXNzdWVzLzI0NiBpcyBpbXBsZW1lbnRlZFxuICAgIGF3YWl0IHRoaXMuZ3JhbnRBbGxQZXJtaXNzaW9ucyhhcGtJbmZvLm5hbWUpO1xuICB9XG59O1xuXG4vKipcbiAqIEV4dHJhY3RzIGFuZCByZXR1cm5zIHRoZSBmdWxsIHBhdGggdG8gdGhlIG1hc3RlciAuYXBrIGZpbGUgaW5zaWRlIHRoZSBidW5kbGUuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGFwa3MgLSBUaGUgZnVsbCBwYXRoIHRvIHRoZSAuYXBrcyBmaWxlXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgZnVsbCBwYXRoIHRvIHRoZSBtYXN0ZXIgYnVuZGxlIC5hcGtcbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGVyZSB3YXMgYW4gZXJyb3Igd2hpbGUgZXh0cmFjdGluZy9maW5kaW5nIHRoZSBmaWxlXG4gKi9cbmFwa3NVdGlsc01ldGhvZHMuZXh0cmFjdEJhc2VBcGsgPSBhc3luYyBmdW5jdGlvbiBleHRyYWN0QmFzZUFwayAoYXBrcykge1xuICByZXR1cm4gYXdhaXQgZXh0cmFjdEZyb21BcGtzKGFwa3MsIFsnc3BsaXRzJywgQkFTRV9BUEtdKTtcbn07XG5cbi8qKlxuICogRXh0cmFjdHMgYW5kIHJldHVybnMgdGhlIGZ1bGwgcGF0aCB0byB0aGUgLmFwaywgd2hpY2ggY29udGFpbnMgdGhlIGNvcnJlc3BvbmRpbmdcbiAqIHJlc291cmNlcyBmb3IgdGhlIGdpdmVuIGxhbmd1YWdlIGluIHRoZSAuYXBrcyBidW5kbGUuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGFwa3MgLSBUaGUgZnVsbCBwYXRoIHRvIHRoZSAuYXBrcyBmaWxlXG4gKiBAcGFyYW0gez9zdHJpbmd9IGxhbmd1YWdlIC0gVGhlIGxhbmd1YWdlIGFiYnJldmlhdGlvbi4gVGhlIGRlZmF1bHQgbGFuZ3VhZ2UgaXNcbiAqIGdvaW5nIHRvIGJlIHNlbGVjdGVkIGlmIGl0IGlzIG5vdCBzZXQuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgZnVsbCBwYXRoIHRvIHRoZSBjb3JyZXNwb25kaW5nIGxhbmd1YWdlIC5hcGsgb3IgdGhlIG1hc3RlciAuYXBrXG4gKiBpZiBsYW5ndWFnZSBzcGxpdCBpcyBub3QgZW5hYmxlZCBmb3IgdGhlIGJ1bmRsZS5cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGVyZSB3YXMgYW4gZXJyb3Igd2hpbGUgZXh0cmFjdGluZy9maW5kaW5nIHRoZSBmaWxlXG4gKi9cbmFwa3NVdGlsc01ldGhvZHMuZXh0cmFjdExhbmd1YWdlQXBrID0gYXN5bmMgZnVuY3Rpb24gZXh0cmFjdExhbmd1YWdlQXBrIChhcGtzLCBsYW5ndWFnZSA9IG51bGwpIHtcbiAgaWYgKGxhbmd1YWdlKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCBleHRyYWN0RnJvbUFwa3MoYXBrcywgWydzcGxpdHMnLCBMQU5HVUFHRV9BUEsobGFuZ3VhZ2UpXSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgbG9nLmRlYnVnKGUubWVzc2FnZSk7XG4gICAgICBsb2cuaW5mbyhgQXNzdW1pbmcgdGhhdCBzcGxpdHRpbmcgYnkgbGFuZ3VhZ2UgaXMgbm90IGVuYWJsZWQgZm9yIHRoZSAnJHthcGtzfScgYnVuZGxlIGAgK1xuICAgICAgICBgYW5kIHJldHVybmluZyB0aGUgbWFpbiBhcGsgaW5zdGVhZGApO1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZXh0cmFjdEJhc2VBcGsoYXBrcyk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgZGVmYXVsdExhbmd1YWdlcyA9IFsnZW4nLCAnZW5fdXMnXTtcbiAgZm9yIChjb25zdCBsYW5nIG9mIGRlZmF1bHRMYW5ndWFnZXMpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGF3YWl0IGV4dHJhY3RGcm9tQXBrcyhhcGtzLCBbJ3NwbGl0cycsIExBTkdVQUdFX0FQSyhsYW5nKV0pO1xuICAgIH0gY2F0Y2ggKGlnbikge31cbiAgfVxuXG4gIGxvZy5pbmZvKGBDYW5ub3QgZmluZCBhbnkgc3BsaXQgYXBrIGZvciB0aGUgZGVmYXVsdCBsYW5ndWFnZXMgJHtKU09OLnN0cmluZ2lmeShkZWZhdWx0TGFuZ3VhZ2VzKX0uIGAgK1xuICAgIGBSZXR1cm5pbmcgdGhlIG1haW4gYXBrIGluc3RlYWQuYCk7XG4gIHJldHVybiBhd2FpdCB0aGlzLmV4dHJhY3RCYXNlQXBrKGFwa3MpO1xufTtcblxuYXBrc1V0aWxzTWV0aG9kcy5pc1Rlc3RQYWNrYWdlT25seUVycm9yID0gZnVuY3Rpb24gKG91dHB1dCkge1xuICByZXR1cm4gL1xcW0lOU1RBTExfRkFJTEVEX1RFU1RfT05MWVxcXS8udGVzdChvdXRwdXQpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgYXBrc1V0aWxzTWV0aG9kcztcbiJdLCJmaWxlIjoibGliL3Rvb2xzL2Fwa3MtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4ifQ==
|
|
219
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi90b29scy9hcGtzLXV0aWxzLmpzIl0sIm5hbWVzIjpbIkJBU0VfQVBLIiwiTEFOR1VBR0VfQVBLIiwibGFuZyIsIkFQS1NfQ0FDSEUiLCJMUlUiLCJtYXgiLCJkaXNwb3NlIiwiYXBrc0hhc2giLCJleHRyYWN0ZWRGaWxlc1Jvb3QiLCJmcyIsInJpbXJhZiIsIkFQS1NfQ0FDSEVfR1VBUkQiLCJBc3luY0xvY2siLCJCVU5ETEVUT09MX1RJTUVPVVRfTVMiLCJhcGtzVXRpbHNNZXRob2RzIiwicHJvY2VzcyIsIm9uIiwic2l6ZSIsInBhdGhzIiwidmFsdWVzIiwibG9nIiwiZGVidWciLCJsZW5ndGgiLCJ1dGlsIiwicGx1cmFsaXplIiwiYXBwUGF0aCIsInJpbXJhZlN5bmMiLCJlIiwid2FybiIsIm1lc3NhZ2UiLCJleHRyYWN0RnJvbUFwa3MiLCJhcGtzIiwiZHN0UGF0aCIsIl8iLCJpc0FycmF5IiwiYWNxdWlyZSIsImhhc2giLCJoYXMiLCJyZXN1bHRQYXRoIiwicGF0aCIsInJlc29sdmUiLCJnZXQiLCJleGlzdHMiLCJkZWwiLCJ0bXBSb290IiwidGVtcERpciIsIm9wZW5EaXIiLCJFcnJvciIsImpvaW4iLCJzZXAiLCJzZXQiLCJleGVjQnVuZGxldG9vbCIsImFyZ3MiLCJlcnJvck1zZyIsImluaXRCdW5kbGV0b29sIiwiYmluYXJpZXMiLCJidW5kbGV0b29sIiwiZW52IiwiYWRiUG9ydCIsIkFORFJPSURfQURCX1NFUlZFUl9QT1JUIiwiYWRiSG9zdCIsIkFORFJPSURfQURCX1NFUlZFUl9IT1NUIiwiSlNPTiIsInN0cmluZ2lmeSIsInN0ZG91dCIsInRpbWVvdXQiLCJ0cnVuY2F0ZSIsInN0ZGVyciIsImdldERldmljZVNwZWMiLCJzcGVjTG9jYXRpb24iLCJleGVjdXRhYmxlIiwiY3VyRGV2aWNlSWQiLCJpbnN0YWxsTXVsdGlwbGVBcGtzIiwiYXBrUGF0aHNUb0luc3RhbGwiLCJvcHRpb25zIiwiaW5zdGFsbEFyZ3MiLCJnZXRBcGlMZXZlbCIsImFkYkV4ZWMiLCJ0aW1lb3V0Q2FwTmFtZSIsImluc3RhbGxBcGtzIiwiZ3JhbnRQZXJtaXNzaW9ucyIsImFsbG93VGVzdFBhY2thZ2VzIiwiQVBLU19JTlNUQUxMX1RJTUVPVVQiLCJwdXNoIiwidGFza3MiLCJiYXNlbmFtZSIsImdldEFwa0luZm8iLCJhcGtJbmZvIiwiQiIsImFsbCIsImdyYW50QWxsUGVybWlzc2lvbnMiLCJuYW1lIiwiZXh0cmFjdEJhc2VBcGsiLCJleHRyYWN0TGFuZ3VhZ2VBcGsiLCJsYW5ndWFnZSIsImluZm8iLCJkZWZhdWx0TGFuZ3VhZ2VzIiwiaWduIiwiaXNUZXN0UGFja2FnZU9ubHlFcnJvciIsIm91dHB1dCIsInRlc3QiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0E7O0FBQ0E7O0FBRUEsTUFBTUEsUUFBUSxHQUFHLGlCQUFqQjs7QUFDQSxNQUFNQyxZQUFZLEdBQUlDLElBQUQsSUFBVyxRQUFPQSxJQUFLLE1BQTVDOztBQUNBLE1BQU1DLFVBQVUsR0FBRyxJQUFJQyxpQkFBSixDQUFRO0FBQ3pCQyxFQUFBQSxHQUFHLEVBQUUsRUFEb0I7QUFFekJDLEVBQUFBLE9BQU8sRUFBRSxDQUFDQyxRQUFELEVBQVdDLGtCQUFYLEtBQWtDQyxZQUFHQyxNQUFILENBQVVGLGtCQUFWO0FBRmxCLENBQVIsQ0FBbkI7QUFJQSxNQUFNRyxnQkFBZ0IsR0FBRyxJQUFJQyxrQkFBSixFQUF6QjtBQUNBLE1BQU1DLHFCQUFxQixHQUFHLElBQUksRUFBSixHQUFTLElBQXZDO0FBRUEsTUFBTUMsZ0JBQWdCLEdBQUcsRUFBekI7QUFFQUMsT0FBTyxDQUFDQyxFQUFSLENBQVcsTUFBWCxFQUFtQixNQUFNO0FBQ3ZCLE1BQUksQ0FBQ2IsVUFBVSxDQUFDYyxJQUFoQixFQUFzQjtBQUNwQjtBQUNEOztBQUVELFFBQU1DLEtBQUssR0FBRyxDQUFDLEdBQUdmLFVBQVUsQ0FBQ2dCLE1BQVgsRUFBSixDQUFkOztBQUNBQyxrQkFBSUMsS0FBSixDQUFXLHlCQUF3QkgsS0FBSyxDQUFDSSxNQUFPLGdCQUF0QyxHQUNSQyxjQUFLQyxTQUFMLENBQWUsU0FBZixFQUEwQk4sS0FBSyxDQUFDSSxNQUFoQyxDQURGOztBQUVBLE9BQUssTUFBTUcsT0FBWCxJQUFzQlAsS0FBdEIsRUFBNkI7QUFDM0IsUUFBSTtBQUVGVCxrQkFBR2lCLFVBQUgsQ0FBY0QsT0FBZDtBQUNELEtBSEQsQ0FHRSxPQUFPRSxDQUFQLEVBQVU7QUFDVlAsc0JBQUlRLElBQUosQ0FBU0QsQ0FBQyxDQUFDRSxPQUFYO0FBQ0Q7QUFDRjtBQUNGLENBaEJEOztBQStCQSxlQUFlQyxlQUFmLENBQWdDQyxJQUFoQyxFQUFzQ0MsT0FBdEMsRUFBK0M7QUFDN0MsTUFBSSxDQUFDQyxnQkFBRUMsT0FBRixDQUFVRixPQUFWLENBQUwsRUFBeUI7QUFDdkJBLElBQUFBLE9BQU8sR0FBRyxDQUFDQSxPQUFELENBQVY7QUFDRDs7QUFFRCxTQUFPLE1BQU1yQixnQkFBZ0IsQ0FBQ3dCLE9BQWpCLENBQXlCSixJQUF6QixFQUErQixZQUFZO0FBSXRELFVBQU14QixRQUFRLEdBQUcsTUFBTUUsWUFBRzJCLElBQUgsQ0FBUUwsSUFBUixDQUF2Qjs7QUFDQVgsb0JBQUlDLEtBQUosQ0FBVyxlQUFjVSxJQUFLLFdBQVV4QixRQUFTLEVBQWpEOztBQUVBLFFBQUlKLFVBQVUsQ0FBQ2tDLEdBQVgsQ0FBZTlCLFFBQWYsQ0FBSixFQUE4QjtBQUM1QixZQUFNK0IsVUFBVSxHQUFHQyxjQUFLQyxPQUFMLENBQWFyQyxVQUFVLENBQUNzQyxHQUFYLENBQWVsQyxRQUFmLENBQWIsRUFBdUMsR0FBR3lCLE9BQTFDLENBQW5COztBQUNBLFVBQUksTUFBTXZCLFlBQUdpQyxNQUFILENBQVVKLFVBQVYsQ0FBVixFQUFpQztBQUMvQixlQUFPQSxVQUFQO0FBQ0Q7O0FBQ0RuQyxNQUFBQSxVQUFVLENBQUN3QyxHQUFYLENBQWVwQyxRQUFmO0FBQ0Q7O0FBRUQsVUFBTXFDLE9BQU8sR0FBRyxNQUFNQyxpQkFBUUMsT0FBUixFQUF0Qjs7QUFDQTFCLG9CQUFJQyxLQUFKLENBQVcsb0NBQW1DVSxJQUFLLFNBQVFhLE9BQVEsR0FBbkU7O0FBQ0EsVUFBTSx3QkFBVWIsSUFBVixFQUFnQmEsT0FBaEIsQ0FBTjs7QUFDQSxVQUFNTixVQUFVLEdBQUdDLGNBQUtDLE9BQUwsQ0FBYUksT0FBYixFQUFzQixHQUFHWixPQUF6QixDQUFuQjs7QUFDQSxRQUFJLEVBQUMsTUFBTXZCLFlBQUdpQyxNQUFILENBQVVKLFVBQVYsQ0FBUCxDQUFKLEVBQWtDO0FBQ2hDLFlBQU0sSUFBSVMsS0FBSixDQUFXLEdBQUVmLE9BQU8sQ0FBQ2dCLElBQVIsQ0FBYVQsY0FBS1UsR0FBbEIsQ0FBdUIsd0JBQXVCbEIsSUFBSyxZQUF0RCxHQUNiLHNEQURHLENBQU47QUFFRDs7QUFDRDVCLElBQUFBLFVBQVUsQ0FBQytDLEdBQVgsQ0FBZTNDLFFBQWYsRUFBeUJxQyxPQUF6QjtBQUNBLFdBQU9OLFVBQVA7QUFDRCxHQXpCWSxDQUFiO0FBMEJEOztBQVdEeEIsZ0JBQWdCLENBQUNxQyxjQUFqQixHQUFrQyxlQUFlQSxjQUFmLENBQStCQyxJQUEvQixFQUFxQ0MsUUFBckMsRUFBK0M7QUFDL0UsUUFBTSxLQUFLQyxjQUFMLEVBQU47QUFDQUYsRUFBQUEsSUFBSSxHQUFHLENBQ0wsTUFESyxFQUNHLEtBQUtHLFFBQUwsQ0FBY0MsVUFEakIsRUFFTCxHQUFHSixJQUZFLENBQVA7QUFJQSxRQUFNSyxHQUFHLEdBQUcxQyxPQUFPLENBQUMwQyxHQUFwQjs7QUFDQSxNQUFJLEtBQUtDLE9BQVQsRUFBa0I7QUFDaEJELElBQUFBLEdBQUcsQ0FBQ0UsdUJBQUosR0FBK0IsR0FBRSxLQUFLRCxPQUFRLEVBQTlDO0FBQ0Q7O0FBQ0QsTUFBSSxLQUFLRSxPQUFULEVBQWtCO0FBQ2hCSCxJQUFBQSxHQUFHLENBQUNJLHVCQUFKLEdBQThCLEtBQUtELE9BQW5DO0FBQ0Q7O0FBQ0R4QyxrQkFBSUMsS0FBSixDQUFXLHdDQUF1Q3lDLElBQUksQ0FBQ0MsU0FBTCxDQUFlWCxJQUFmLENBQXFCLEVBQXZFOztBQUNBLE1BQUlZLE1BQUo7O0FBQ0EsTUFBSTtBQUNGLEtBQUM7QUFBQ0EsTUFBQUE7QUFBRCxRQUFXLE1BQU0sd0JBQUssTUFBTSw0QkFBWCxFQUEyQlosSUFBM0IsRUFBaUM7QUFDakRLLE1BQUFBLEdBRGlEO0FBRWpEUSxNQUFBQSxPQUFPLEVBQUVwRDtBQUZ3QyxLQUFqQyxDQUFsQjs7QUFJQU8sb0JBQUlDLEtBQUosQ0FBVyxtQkFBa0JZLGdCQUFFaUMsUUFBRixDQUFXRixNQUFYLEVBQW1CO0FBQUMxQyxNQUFBQSxNQUFNLEVBQUU7QUFBVCxLQUFuQixDQUFrQyxFQUEvRDs7QUFDQSxXQUFPMEMsTUFBUDtBQUNELEdBUEQsQ0FPRSxPQUFPckMsQ0FBUCxFQUFVO0FBQ1YsUUFBSUEsQ0FBQyxDQUFDcUMsTUFBTixFQUFjO0FBQ1o1QyxzQkFBSUMsS0FBSixDQUFXLG1CQUFrQk0sQ0FBQyxDQUFDcUMsTUFBTyxFQUF0QztBQUNEOztBQUNELFFBQUlyQyxDQUFDLENBQUN3QyxNQUFOLEVBQWM7QUFDWi9DLHNCQUFJQyxLQUFKLENBQVcsbUJBQWtCTSxDQUFDLENBQUN3QyxNQUFPLEVBQXRDO0FBQ0Q7O0FBQ0QsVUFBTSxJQUFJcEIsS0FBSixDQUFXLEdBQUVNLFFBQVMscUJBQW9CMUIsQ0FBQyxDQUFDRSxPQUFRLEVBQXBELENBQU47QUFDRDtBQUNGLENBL0JEOztBQXNDQWYsZ0JBQWdCLENBQUNzRCxhQUFqQixHQUFpQyxlQUFlQSxhQUFmLENBQThCQyxZQUE5QixFQUE0QztBQUMzRSxRQUFNakIsSUFBSSxHQUFHLENBQ1gsaUJBRFcsRUFFWCxPQUZXLEVBRUYsS0FBS2tCLFVBQUwsQ0FBZ0IvQixJQUZkLEVBR1gsYUFIVyxFQUdJLEtBQUtnQyxXQUhULEVBSVgsVUFKVyxFQUlDRixZQUpELENBQWI7O0FBTUFqRCxrQkFBSUMsS0FBSixDQUFXLG9DQUFtQyxLQUFLa0QsV0FBWSxHQUEvRDs7QUFDQSxRQUFNLEtBQUtwQixjQUFMLENBQW9CQyxJQUFwQixFQUEwQixpQ0FBMUIsQ0FBTjtBQUNBLFNBQU9pQixZQUFQO0FBQ0QsQ0FWRDs7QUFtQ0F2RCxnQkFBZ0IsQ0FBQzBELG1CQUFqQixHQUF1QyxlQUFlQSxtQkFBZixDQUFvQ0MsaUJBQXBDLEVBQXVEQyxPQUFPLEdBQUcsRUFBakUsRUFBcUU7QUFDMUcsUUFBTUMsV0FBVyxHQUFHLCtCQUFpQixNQUFNLEtBQUtDLFdBQUwsRUFBdkIsRUFBMkNGLE9BQTNDLENBQXBCO0FBQ0EsU0FBTyxNQUFNLEtBQUtHLE9BQUwsQ0FBYSxDQUFDLGtCQUFELEVBQXFCLEdBQUdGLFdBQXhCLEVBQXFDLEdBQUdGLGlCQUF4QyxDQUFiLEVBQXlFO0FBQ3BGUixJQUFBQSxPQUFPLEVBQUVTLE9BQU8sQ0FBQ1QsT0FEbUU7QUFFcEZhLElBQUFBLGNBQWMsRUFBRUosT0FBTyxDQUFDSTtBQUY0RCxHQUF6RSxDQUFiO0FBSUQsQ0FORDs7QUE0QkFoRSxnQkFBZ0IsQ0FBQ2lFLFdBQWpCLEdBQStCLGVBQWVBLFdBQWYsQ0FBNEJoRCxJQUE1QixFQUFrQzJDLE9BQU8sR0FBRyxFQUE1QyxFQUFnRDtBQUM3RSxRQUFNO0FBQ0pNLElBQUFBLGdCQURJO0FBRUpDLElBQUFBLGlCQUZJO0FBR0poQixJQUFBQTtBQUhJLE1BSUZTLE9BSko7QUFNQSxRQUFNdEIsSUFBSSxHQUFHLENBQ1gsY0FEVyxFQUVYLE9BRlcsRUFFRixLQUFLa0IsVUFBTCxDQUFnQi9CLElBRmQsRUFHWCxRQUhXLEVBR0RSLElBSEMsRUFJWCxrQkFKVyxFQUlTa0MsT0FBTyxJQUFJaUIsNkJBSnBCLEVBS1gsYUFMVyxFQUtJLEtBQUtYLFdBTFQsQ0FBYjs7QUFPQSxNQUFJVSxpQkFBSixFQUF1QjtBQUNyQjdCLElBQUFBLElBQUksQ0FBQytCLElBQUwsQ0FBVSxtQkFBVjtBQUNEOztBQUNELFFBQU1DLEtBQUssR0FBRyxDQUNaLEtBQUtqQyxjQUFMLENBQW9CQyxJQUFwQixFQUEyQixtQkFBa0JiLGNBQUs4QyxRQUFMLENBQWN0RCxJQUFkLENBQW9CLG1CQUFrQixLQUFLd0MsV0FBWSxFQUFwRyxDQURZLENBQWQ7O0FBR0EsTUFBSVMsZ0JBQUosRUFBc0I7QUFDcEJJLElBQUFBLEtBQUssQ0FBQ0QsSUFBTixDQUFXLEtBQUtHLFVBQUwsQ0FBZ0J2RCxJQUFoQixDQUFYO0FBQ0Q7O0FBQ0QsUUFBTSxHQUFHd0QsT0FBSCxJQUFjLE1BQU1DLGtCQUFFQyxHQUFGLENBQU1MLEtBQU4sQ0FBMUI7O0FBQ0EsTUFBSUosZ0JBQWdCLElBQUlPLE9BQXhCLEVBQWlDO0FBRS9CLFVBQU0sS0FBS0csbUJBQUwsQ0FBeUJILE9BQU8sQ0FBQ0ksSUFBakMsQ0FBTjtBQUNEO0FBQ0YsQ0E1QkQ7O0FBcUNBN0UsZ0JBQWdCLENBQUM4RSxjQUFqQixHQUFrQyxlQUFlQSxjQUFmLENBQStCN0QsSUFBL0IsRUFBcUM7QUFDckUsU0FBTyxNQUFNRCxlQUFlLENBQUNDLElBQUQsRUFBTyxDQUFDLFFBQUQsRUFBVy9CLFFBQVgsQ0FBUCxDQUE1QjtBQUNELENBRkQ7O0FBZUFjLGdCQUFnQixDQUFDK0Usa0JBQWpCLEdBQXNDLGVBQWVBLGtCQUFmLENBQW1DOUQsSUFBbkMsRUFBeUMrRCxRQUFRLEdBQUcsSUFBcEQsRUFBMEQ7QUFDOUYsTUFBSUEsUUFBSixFQUFjO0FBQ1osUUFBSTtBQUNGLGFBQU8sTUFBTWhFLGVBQWUsQ0FBQ0MsSUFBRCxFQUFPLENBQUMsUUFBRCxFQUFXOUIsWUFBWSxDQUFDNkYsUUFBRCxDQUF2QixDQUFQLENBQTVCO0FBQ0QsS0FGRCxDQUVFLE9BQU9uRSxDQUFQLEVBQVU7QUFDVlAsc0JBQUlDLEtBQUosQ0FBVU0sQ0FBQyxDQUFDRSxPQUFaOztBQUNBVCxzQkFBSTJFLElBQUosQ0FBVSwrREFBOERoRSxJQUFLLFdBQXBFLEdBQ04sb0NBREg7O0FBRUEsYUFBTyxNQUFNLEtBQUs2RCxjQUFMLENBQW9CN0QsSUFBcEIsQ0FBYjtBQUNEO0FBQ0Y7O0FBRUQsUUFBTWlFLGdCQUFnQixHQUFHLENBQUMsSUFBRCxFQUFPLE9BQVAsQ0FBekI7O0FBQ0EsT0FBSyxNQUFNOUYsSUFBWCxJQUFtQjhGLGdCQUFuQixFQUFxQztBQUNuQyxRQUFJO0FBQ0YsYUFBTyxNQUFNbEUsZUFBZSxDQUFDQyxJQUFELEVBQU8sQ0FBQyxRQUFELEVBQVc5QixZQUFZLENBQUNDLElBQUQsQ0FBdkIsQ0FBUCxDQUE1QjtBQUNELEtBRkQsQ0FFRSxPQUFPK0YsR0FBUCxFQUFZLENBQUU7QUFDakI7O0FBRUQ3RSxrQkFBSTJFLElBQUosQ0FBVSx1REFBc0RqQyxJQUFJLENBQUNDLFNBQUwsQ0FBZWlDLGdCQUFmLENBQWlDLElBQXhGLEdBQ04saUNBREg7O0FBRUEsU0FBTyxNQUFNLEtBQUtKLGNBQUwsQ0FBb0I3RCxJQUFwQixDQUFiO0FBQ0QsQ0F0QkQ7O0FBd0JBakIsZ0JBQWdCLENBQUNvRixzQkFBakIsR0FBMEMsU0FBU0Esc0JBQVQsQ0FBaUNDLE1BQWpDLEVBQXlDO0FBQ2pGLFNBQU8sK0JBQStCQyxJQUEvQixDQUFvQ0QsTUFBcEMsQ0FBUDtBQUNELENBRkQ7O2VBSWVyRixnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4ZWMgfSBmcm9tICd0ZWVuX3Byb2Nlc3MnO1xuaW1wb3J0IGxvZyBmcm9tICcuLi9sb2dnZXIuanMnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgZnMsIHRlbXBEaXIsIHV0aWwgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IExSVSBmcm9tICdscnUtY2FjaGUnO1xuaW1wb3J0IHtcbiAgZ2V0SmF2YUZvck9zLCB1bnppcEZpbGUsIGJ1aWxkSW5zdGFsbEFyZ3MsIEFQS1NfSU5TVEFMTF9USU1FT1VUXG59IGZyb20gJy4uL2hlbHBlcnMuanMnO1xuaW1wb3J0IEFzeW5jTG9jayBmcm9tICdhc3luYy1sb2NrJztcbmltcG9ydCBCIGZyb20gJ2JsdWViaXJkJztcblxuY29uc3QgQkFTRV9BUEsgPSAnYmFzZS1tYXN0ZXIuYXBrJztcbmNvbnN0IExBTkdVQUdFX0FQSyA9IChsYW5nKSA9PiBgYmFzZS0ke2xhbmd9LmFwa2A7XG5jb25zdCBBUEtTX0NBQ0hFID0gbmV3IExSVSh7XG4gIG1heDogMTAsXG4gIGRpc3Bvc2U6IChhcGtzSGFzaCwgZXh0cmFjdGVkRmlsZXNSb290KSA9PiBmcy5yaW1yYWYoZXh0cmFjdGVkRmlsZXNSb290KSxcbn0pO1xuY29uc3QgQVBLU19DQUNIRV9HVUFSRCA9IG5ldyBBc3luY0xvY2soKTtcbmNvbnN0IEJVTkRMRVRPT0xfVElNRU9VVF9NUyA9IDQgKiA2MCAqIDEwMDA7XG5cbmNvbnN0IGFwa3NVdGlsc01ldGhvZHMgPSB7fTtcblxucHJvY2Vzcy5vbignZXhpdCcsICgpID0+IHtcbiAgaWYgKCFBUEtTX0NBQ0hFLnNpemUpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBwYXRocyA9IFsuLi5BUEtTX0NBQ0hFLnZhbHVlcygpXTtcbiAgbG9nLmRlYnVnKGBQZXJmb3JtaW5nIGNsZWFudXAgb2YgJHtwYXRocy5sZW5ndGh9IGNhY2hlZCAuYXBrcyBgICtcbiAgICB1dGlsLnBsdXJhbGl6ZSgncGFja2FnZScsIHBhdGhzLmxlbmd0aCkpO1xuICBmb3IgKGNvbnN0IGFwcFBhdGggb2YgcGF0aHMpIHtcbiAgICB0cnkge1xuICAgICAgLy8gQXN5bmNocm9ub3VzIGNhbGxzIGFyZSBub3Qgc3VwcG9ydGVkIGluIG9uRXhpdCBoYW5kbGVyXG4gICAgICBmcy5yaW1yYWZTeW5jKGFwcFBhdGgpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGxvZy53YXJuKGUubWVzc2FnZSk7XG4gICAgfVxuICB9XG59KTtcblxuLyoqXG4gKiBFeHRyYWN0cyB0aGUgcGFydGljdWxhciBhcGtzIHBhY2thZ2UgaW50byBhIHRlbXBvcmFyeSBmb2xkZXIsXG4gKiBmaW5kcyBhbmQgcmV0dXJucyB0aGUgZnVsbCBwYXRoIHRvIHRoZSBmaWxlIGNvbnRhaW5lZCBpbiB0aGlzIGFway5cbiAqIFRoZSByZXN1bHRpbmcgdGVtcG9yYXJ5IHBhdGgsIHdoZXJlIHRoZSAuYXBrcyBmaWxlIGhhcyBiZWVuIGV4dHJhY3RlZCxcbiAqIHdpbGwgYmUgc3RvcmVkIGludG8gdGhlIGludGVybmFsIExSVSBjYWNoZSBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBhcGtzIC0gVGhlIGZ1bGwgcGF0aCB0byB0aGUgLmFwa3MgZmlsZVxuICogQHBhcmFtIHtzdHJpbmd8QXJyYXk8U3RyaW5nPn0gZHN0UGF0aCAtIFRoZSByZWxhdGl2ZSBwYXRoIHRvIHRoZSBkZXN0aW5hdGlvbiBmaWxlLFxuICogd2hpY2ggaXMgZ29pbmcgdG8gYmUgZXh0cmFjdGVkLCB3aGVyZSBlYWNoIHBhdGggY29tcG9uZW50IGlzIGFuIGFycmF5IGl0ZW1cbiAqIEByZXR1cm5zIHtzdHJpbmd9IEZ1bGwgcGF0aCB0byB0aGUgZXh0cmFjdGVkIGZpbGVcbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgcmVxdWVzdGVkIGl0ZW0gZG9lcyBub3QgZXhpc3QgaW4gdGhlIGV4dHJhY3RlZCBhcmNoaXZlIG9yIHRoZSBwcm92aWRlc1xuICogYXBrcyBmaWxlIGlzIG5vdCBhIHZhbGlkIGJ1bmRsZVxuICovXG5hc3luYyBmdW5jdGlvbiBleHRyYWN0RnJvbUFwa3MgKGFwa3MsIGRzdFBhdGgpIHtcbiAgaWYgKCFfLmlzQXJyYXkoZHN0UGF0aCkpIHtcbiAgICBkc3RQYXRoID0gW2RzdFBhdGhdO1xuICB9XG5cbiAgcmV0dXJuIGF3YWl0IEFQS1NfQ0FDSEVfR1VBUkQuYWNxdWlyZShhcGtzLCBhc3luYyAoKSA9PiB7XG4gICAgLy8gSXQgbWlnaHQgYmUgdGhhdCB0aGUgb3JpZ2luYWwgZmlsZSBoYXMgYmVlbiByZXBsYWNlZCxcbiAgICAvLyBzbyB3ZSBuZWVkIHRvIGtlZXAgdGhlIGhhc2ggc3VtcyBpbnN0ZWFkIG9mIHRoZSBhY3R1YWwgZmlsZSBwYXRoc1xuICAgIC8vIGFzIGNhY2hpbmcga2V5c1xuICAgIGNvbnN0IGFwa3NIYXNoID0gYXdhaXQgZnMuaGFzaChhcGtzKTtcbiAgICBsb2cuZGVidWcoYENhbGN1bGF0ZWQgJyR7YXBrc30nIGhhc2g6ICR7YXBrc0hhc2h9YCk7XG5cbiAgICBpZiAoQVBLU19DQUNIRS5oYXMoYXBrc0hhc2gpKSB7XG4gICAgICBjb25zdCByZXN1bHRQYXRoID0gcGF0aC5yZXNvbHZlKEFQS1NfQ0FDSEUuZ2V0KGFwa3NIYXNoKSwgLi4uZHN0UGF0aCk7XG4gICAgICBpZiAoYXdhaXQgZnMuZXhpc3RzKHJlc3VsdFBhdGgpKSB7XG4gICAgICAgIHJldHVybiByZXN1bHRQYXRoO1xuICAgICAgfVxuICAgICAgQVBLU19DQUNIRS5kZWwoYXBrc0hhc2gpO1xuICAgIH1cblxuICAgIGNvbnN0IHRtcFJvb3QgPSBhd2FpdCB0ZW1wRGlyLm9wZW5EaXIoKTtcbiAgICBsb2cuZGVidWcoYFVucGFja2luZyBhcHBsaWNhdGlvbiBidW5kbGUgYXQgJyR7YXBrc30nIHRvICcke3RtcFJvb3R9J2ApO1xuICAgIGF3YWl0IHVuemlwRmlsZShhcGtzLCB0bXBSb290KTtcbiAgICBjb25zdCByZXN1bHRQYXRoID0gcGF0aC5yZXNvbHZlKHRtcFJvb3QsIC4uLmRzdFBhdGgpO1xuICAgIGlmICghYXdhaXQgZnMuZXhpc3RzKHJlc3VsdFBhdGgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7ZHN0UGF0aC5qb2luKHBhdGguc2VwKX0gY2Fubm90IGJlIGZvdW5kIGluICcke2Fwa3N9JyBidW5kbGUuIGAgK1xuICAgICAgICBgRG9lcyB0aGUgYXJjaGl2ZSBjb250YWluIGEgdmFsaWQgYXBwbGljYXRpb24gYnVuZGxlP2ApO1xuICAgIH1cbiAgICBBUEtTX0NBQ0hFLnNldChhcGtzSGFzaCwgdG1wUm9vdCk7XG4gICAgcmV0dXJuIHJlc3VsdFBhdGg7XG4gIH0pO1xufVxuXG4vKipcbiAqIEV4ZWN1dGVzIGJ1bmRsZXRvb2wgdXRpbGl0eSB3aXRoIGdpdmVuIGFyZ3VtZW50cyBhbmQgcmV0dXJucyB0aGUgYWN0dWFsIHN0ZG91dFxuICpcbiAqIEBwYXJhbSB7QXJyYXk8U3RyaW5nPn0gYXJncyAtIHRoZSBsaXN0IG9mIGJ1bmRsZXRvb2wgYXJndW1lbnRzXG4gKiBAcGFyYW0ge3N0cmluZ30gZXJyb3JNc2cgLSBUaGUgY3VzdG9taXplZCBlcnJvciBtZXNzYWdlIHN0cmluZ1xuICogQHJldHVybnMge3N0cmluZ30gdGhlIGFjdHVhbCBjb21tYW5kIHN0ZG91dFxuICogQHRocm93cyB7RXJyb3J9IElmIGJ1bmRsZXRvb2wgamFyIGRvZXMgbm90IGV4aXN0IGluIFBBVEggb3IgdGhlcmUgd2FzIGFuIGVycm9yIHdoaWxlXG4gKiBleGVjdXRpbmcgaXRcbiAqL1xuYXBrc1V0aWxzTWV0aG9kcy5leGVjQnVuZGxldG9vbCA9IGFzeW5jIGZ1bmN0aW9uIGV4ZWNCdW5kbGV0b29sIChhcmdzLCBlcnJvck1zZykge1xuICBhd2FpdCB0aGlzLmluaXRCdW5kbGV0b29sKCk7XG4gIGFyZ3MgPSBbXG4gICAgJy1qYXInLCB0aGlzLmJpbmFyaWVzLmJ1bmRsZXRvb2wsXG4gICAgLi4uYXJnc1xuICBdO1xuICBjb25zdCBlbnYgPSBwcm9jZXNzLmVudjtcbiAgaWYgKHRoaXMuYWRiUG9ydCkge1xuICAgIGVudi5BTkRST0lEX0FEQl9TRVJWRVJfUE9SVCA9IGAke3RoaXMuYWRiUG9ydH1gO1xuICB9XG4gIGlmICh0aGlzLmFkYkhvc3QpIHtcbiAgICBlbnYuQU5EUk9JRF9BREJfU0VSVkVSX0hPU1QgPSB0aGlzLmFkYkhvc3Q7XG4gIH1cbiAgbG9nLmRlYnVnKGBFeGVjdXRpbmcgYnVuZGxldG9vbCB3aXRoIGFyZ3VtZW50czogJHtKU09OLnN0cmluZ2lmeShhcmdzKX1gKTtcbiAgbGV0IHN0ZG91dDtcbiAgdHJ5IHtcbiAgICAoe3N0ZG91dH0gPSBhd2FpdCBleGVjKGF3YWl0IGdldEphdmFGb3JPcygpLCBhcmdzLCB7XG4gICAgICBlbnYsXG4gICAgICB0aW1lb3V0OiBCVU5ETEVUT09MX1RJTUVPVVRfTVMsXG4gICAgfSkpO1xuICAgIGxvZy5kZWJ1ZyhgQ29tbWFuZCBzdGRvdXQ6ICR7Xy50cnVuY2F0ZShzdGRvdXQsIHtsZW5ndGg6IDMwMH0pfWApO1xuICAgIHJldHVybiBzdGRvdXQ7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoZS5zdGRvdXQpIHtcbiAgICAgIGxvZy5kZWJ1ZyhgQ29tbWFuZCBzdGRvdXQ6ICR7ZS5zdGRvdXR9YCk7XG4gICAgfVxuICAgIGlmIChlLnN0ZGVycikge1xuICAgICAgbG9nLmRlYnVnKGBDb21tYW5kIHN0ZGVycjogJHtlLnN0ZGVycn1gKTtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKGAke2Vycm9yTXNnfS4gT3JpZ2luYWwgZXJyb3I6ICR7ZS5tZXNzYWdlfWApO1xuICB9XG59O1xuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSBzcGVjTG9jYXRpb24gLSBUaGUgZnVsbCBwYXRoIHRvIHRoZSBnZW5lcmF0ZWQgZGV2aWNlIHNwZWMgbG9jYXRpb25cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBzYW1lIGBzcGVjTG9jYXRpb25gIHZhbHVlXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgaXQgaXMgbm90IHBvc3NpYmxlIHRvIHJldHJpZXZlIHRoZSBzcGVjIGZvciB0aGUgY3VycmVudCBkZXZpY2VcbiAqL1xuYXBrc1V0aWxzTWV0aG9kcy5nZXREZXZpY2VTcGVjID0gYXN5bmMgZnVuY3Rpb24gZ2V0RGV2aWNlU3BlYyAoc3BlY0xvY2F0aW9uKSB7XG4gIGNvbnN0IGFyZ3MgPSBbXG4gICAgJ2dldC1kZXZpY2Utc3BlYycsXG4gICAgJy0tYWRiJywgdGhpcy5leGVjdXRhYmxlLnBhdGgsXG4gICAgJy0tZGV2aWNlLWlkJywgdGhpcy5jdXJEZXZpY2VJZCxcbiAgICAnLS1vdXRwdXQnLCBzcGVjTG9jYXRpb24sXG4gIF07XG4gIGxvZy5kZWJ1ZyhgR2V0dGluZyB0aGUgc3BlYyBmb3IgdGhlIGRldmljZSAnJHt0aGlzLmN1ckRldmljZUlkfSdgKTtcbiAgYXdhaXQgdGhpcy5leGVjQnVuZGxldG9vbChhcmdzLCAnQ2Fubm90IHJldHJpZXZlIHRoZSBkZXZpY2Ugc3BlYycpO1xuICByZXR1cm4gc3BlY0xvY2F0aW9uO1xufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBJbnN0YWxsTXVsdGlwbGVBcGtzT3B0aW9uc1xuICogQHByb3BlcnR5IHs/bnVtYmVyfHN0cmluZ30gdGltZW91dCBbMjAwMDBdIC0gVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gd2FpdCB1bnRpbFxuICogdGhlIGluc3RhbGxhdGlvbiBpcyBjb21wbGV0ZWRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSB0aW1lb3V0Q2FwTmFtZSBbYW5kcm9pZEluc3RhbGxUaW1lb3V0XSAtIFRoZSB0aW1lb3V0IG9wdGlvbiBuYW1lXG4gKiB1c2VycyBjYW4gaW5jcmVhc2UgdGhlIHRpbWVvdXQuXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IGFsbG93VGVzdFBhY2thZ2VzIFtmYWxzZV0gLSBTZXQgdG8gdHJ1ZSBpbiBvcmRlciB0byBhbGxvdyB0ZXN0XG4gKiBwYWNrYWdlcyBpbnN0YWxsYXRpb24uXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IHVzZVNkY2FyZCBbZmFsc2VdIC0gU2V0IHRvIHRydWUgdG8gaW5zdGFsbCB0aGUgYXBwIG9uIHNkY2FyZFxuICogaW5zdGVhZCBvZiB0aGUgZGV2aWNlIG1lbW9yeS5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gZ3JhbnRQZXJtaXNzaW9ucyBbZmFsc2VdIC0gU2V0IHRvIHRydWUgaW4gb3JkZXIgdG8gZ3JhbnQgYWxsIHRoZVxuICogcGVybWlzc2lvbnMgcmVxdWVzdGVkIGluIHRoZSBhcHBsaWNhdGlvbidzIG1hbmlmZXN0IGF1dG9tYXRpY2FsbHkgYWZ0ZXIgdGhlIGluc3RhbGxhdGlvblxuICogaXMgY29tcGxldGVkIHVuZGVyIEFuZHJvaWQgNisuXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IHBhcnRpYWxJbnN0YWxsIFtmYWxzZV0gLSBJbnN0YWxsIGFwa3MgcGFydGlhbGx5LiBJdCBpcyB1c2VkIGZvciAnaW5zdGFsbC1tdWx0aXBsZScuXG4gKiBodHRwczovL2FuZHJvaWQuc3RhY2tleGNoYW5nZS5jb20vcXVlc3Rpb25zLzExMTA2NC93aGF0LWlzLWEtcGFydGlhbC1hcHBsaWNhdGlvbi1pbnN0YWxsLXZpYS1hZGJcbiAqL1xuXG4vKipcbiAqIEluc3RhbGxzIHRoZSBnaXZlbiBhcGtzIGludG8gdGhlIGRldmljZSB1bmRlciB0ZXN0XG4gKlxuICogQHBhcmFtIHtBcnJheTxzdHJpbmc+fSBhcGtQYXRoc1RvSW5zdGFsbCAtIFRoZSBmdWxsIHBhdGhzIHRvIGluc3RhbGwgYXBrc1xuICogQHBhcmFtIHs/aW5zdGFsbE11bHRpcGxlQXBrc09wdGlvbnN9IG9wdGlvbnMgLSBJbnN0YWxsYXRpb24gb3B0aW9uc1xuICovXG5hcGtzVXRpbHNNZXRob2RzLmluc3RhbGxNdWx0aXBsZUFwa3MgPSBhc3luYyBmdW5jdGlvbiBpbnN0YWxsTXVsdGlwbGVBcGtzIChhcGtQYXRoc1RvSW5zdGFsbCwgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IGluc3RhbGxBcmdzID0gYnVpbGRJbnN0YWxsQXJncyhhd2FpdCB0aGlzLmdldEFwaUxldmVsKCksIG9wdGlvbnMpO1xuICByZXR1cm4gYXdhaXQgdGhpcy5hZGJFeGVjKFsnaW5zdGFsbC1tdWx0aXBsZScsIC4uLmluc3RhbGxBcmdzLCAuLi5hcGtQYXRoc1RvSW5zdGFsbF0sIHtcbiAgICB0aW1lb3V0OiBvcHRpb25zLnRpbWVvdXQsXG4gICAgdGltZW91dENhcE5hbWU6IG9wdGlvbnMudGltZW91dENhcE5hbWUsXG4gIH0pO1xufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBJbnN0YWxsQXBrc09wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7P251bWJlcnxzdHJpbmd9IHRpbWVvdXQgWzEyMDAwMF0gLSBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byB3YWl0IHVudGlsXG4gKiB0aGUgaW5zdGFsbGF0aW9uIGlzIGNvbXBsZXRlZFxuICogQHByb3BlcnR5IHtzdHJpbmd9IHRpbWVvdXRDYXBOYW1lIFthbmRyb2lkSW5zdGFsbFRpbWVvdXRdIC0gVGhlIHRpbWVvdXQgb3B0aW9uIG5hbWVcbiAqIHVzZXJzIGNhbiBpbmNyZWFzZSB0aGUgdGltZW91dC5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gYWxsb3dUZXN0UGFja2FnZXMgW2ZhbHNlXSAtIFNldCB0byB0cnVlIGluIG9yZGVyIHRvIGFsbG93IHRlc3RcbiAqIHBhY2thZ2VzIGluc3RhbGxhdGlvbi5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gZ3JhbnRQZXJtaXNzaW9ucyBbZmFsc2VdIC0gU2V0IHRvIHRydWUgaW4gb3JkZXIgdG8gZ3JhbnQgYWxsIHRoZVxuICogcGVybWlzc2lvbnMgcmVxdWVzdGVkIGluIHRoZSBhcHBsaWNhdGlvbidzIG1hbmlmZXN0IGF1dG9tYXRpY2FsbHkgYWZ0ZXIgdGhlIGluc3RhbGxhdGlvblxuICogaXMgY29tcGxldGVkIHVuZGVyIEFuZHJvaWQgNisuXG4gKi9cblxuLyoqXG4gKiBJbnN0YWxscyB0aGUgZ2l2ZW4gLmFwa3MgcGFja2FnZSBpbnRvIHRoZSBkZXZpY2UgdW5kZXIgdGVzdFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBhcGtzIC0gVGhlIGZ1bGwgcGF0aCB0byB0aGUgLmFwa3MgZmlsZVxuICogQHBhcmFtIHs/SW5zdGFsbEFwa3NPcHRpb25zfSBvcHRpb25zIC0gSW5zdGFsbGF0aW9uIG9wdGlvbnNcbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgLmFwa3MgYnVuZGxlIGNhbm5vdCBiZSBpbnN0YWxsZWRcbiAqL1xuYXBrc1V0aWxzTWV0aG9kcy5pbnN0YWxsQXBrcyA9IGFzeW5jIGZ1bmN0aW9uIGluc3RhbGxBcGtzIChhcGtzLCBvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIGdyYW50UGVybWlzc2lvbnMsXG4gICAgYWxsb3dUZXN0UGFja2FnZXMsXG4gICAgdGltZW91dCxcbiAgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3QgYXJncyA9IFtcbiAgICAnaW5zdGFsbC1hcGtzJyxcbiAgICAnLS1hZGInLCB0aGlzLmV4ZWN1dGFibGUucGF0aCxcbiAgICAnLS1hcGtzJywgYXBrcyxcbiAgICAnLS10aW1lb3V0LW1pbGxpcycsIHRpbWVvdXQgfHwgQVBLU19JTlNUQUxMX1RJTUVPVVQsXG4gICAgJy0tZGV2aWNlLWlkJywgdGhpcy5jdXJEZXZpY2VJZCxcbiAgXTtcbiAgaWYgKGFsbG93VGVzdFBhY2thZ2VzKSB7XG4gICAgYXJncy5wdXNoKCctLWFsbG93LXRlc3Qtb25seScpO1xuICB9XG4gIGNvbnN0IHRhc2tzID0gW1xuICAgIHRoaXMuZXhlY0J1bmRsZXRvb2woYXJncywgYENhbm5vdCBpbnN0YWxsICcke3BhdGguYmFzZW5hbWUoYXBrcyl9JyB0byB0aGUgZGV2aWNlICR7dGhpcy5jdXJEZXZpY2VJZH1gKVxuICBdO1xuICBpZiAoZ3JhbnRQZXJtaXNzaW9ucykge1xuICAgIHRhc2tzLnB1c2godGhpcy5nZXRBcGtJbmZvKGFwa3MpKTtcbiAgfVxuICBjb25zdCBbLCBhcGtJbmZvXSA9IGF3YWl0IEIuYWxsKHRhc2tzKTtcbiAgaWYgKGdyYW50UGVybWlzc2lvbnMgJiYgYXBrSW5mbykge1xuICAgIC8vIFRPRE86IFNpbXBsaWZ5IGl0IGFmdGVyIGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvYnVuZGxldG9vbC9pc3N1ZXMvMjQ2IGlzIGltcGxlbWVudGVkXG4gICAgYXdhaXQgdGhpcy5ncmFudEFsbFBlcm1pc3Npb25zKGFwa0luZm8ubmFtZSk7XG4gIH1cbn07XG5cbi8qKlxuICogRXh0cmFjdHMgYW5kIHJldHVybnMgdGhlIGZ1bGwgcGF0aCB0byB0aGUgbWFzdGVyIC5hcGsgZmlsZSBpbnNpZGUgdGhlIGJ1bmRsZS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYXBrcyAtIFRoZSBmdWxsIHBhdGggdG8gdGhlIC5hcGtzIGZpbGVcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBmdWxsIHBhdGggdG8gdGhlIG1hc3RlciBidW5kbGUgLmFwa1xuICogQHRocm93cyB7RXJyb3J9IElmIHRoZXJlIHdhcyBhbiBlcnJvciB3aGlsZSBleHRyYWN0aW5nL2ZpbmRpbmcgdGhlIGZpbGVcbiAqL1xuYXBrc1V0aWxzTWV0aG9kcy5leHRyYWN0QmFzZUFwayA9IGFzeW5jIGZ1bmN0aW9uIGV4dHJhY3RCYXNlQXBrIChhcGtzKSB7XG4gIHJldHVybiBhd2FpdCBleHRyYWN0RnJvbUFwa3MoYXBrcywgWydzcGxpdHMnLCBCQVNFX0FQS10pO1xufTtcblxuLyoqXG4gKiBFeHRyYWN0cyBhbmQgcmV0dXJucyB0aGUgZnVsbCBwYXRoIHRvIHRoZSAuYXBrLCB3aGljaCBjb250YWlucyB0aGUgY29ycmVzcG9uZGluZ1xuICogcmVzb3VyY2VzIGZvciB0aGUgZ2l2ZW4gbGFuZ3VhZ2UgaW4gdGhlIC5hcGtzIGJ1bmRsZS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYXBrcyAtIFRoZSBmdWxsIHBhdGggdG8gdGhlIC5hcGtzIGZpbGVcbiAqIEBwYXJhbSB7P3N0cmluZ30gbGFuZ3VhZ2UgLSBUaGUgbGFuZ3VhZ2UgYWJicmV2aWF0aW9uLiBUaGUgZGVmYXVsdCBsYW5ndWFnZSBpc1xuICogZ29pbmcgdG8gYmUgc2VsZWN0ZWQgaWYgaXQgaXMgbm90IHNldC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBmdWxsIHBhdGggdG8gdGhlIGNvcnJlc3BvbmRpbmcgbGFuZ3VhZ2UgLmFwayBvciB0aGUgbWFzdGVyIC5hcGtcbiAqIGlmIGxhbmd1YWdlIHNwbGl0IGlzIG5vdCBlbmFibGVkIGZvciB0aGUgYnVuZGxlLlxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZXJlIHdhcyBhbiBlcnJvciB3aGlsZSBleHRyYWN0aW5nL2ZpbmRpbmcgdGhlIGZpbGVcbiAqL1xuYXBrc1V0aWxzTWV0aG9kcy5leHRyYWN0TGFuZ3VhZ2VBcGsgPSBhc3luYyBmdW5jdGlvbiBleHRyYWN0TGFuZ3VhZ2VBcGsgKGFwa3MsIGxhbmd1YWdlID0gbnVsbCkge1xuICBpZiAobGFuZ3VhZ2UpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGF3YWl0IGV4dHJhY3RGcm9tQXBrcyhhcGtzLCBbJ3NwbGl0cycsIExBTkdVQUdFX0FQSyhsYW5ndWFnZSldKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBsb2cuZGVidWcoZS5tZXNzYWdlKTtcbiAgICAgIGxvZy5pbmZvKGBBc3N1bWluZyB0aGF0IHNwbGl0dGluZyBieSBsYW5ndWFnZSBpcyBub3QgZW5hYmxlZCBmb3IgdGhlICcke2Fwa3N9JyBidW5kbGUgYCArXG4gICAgICAgIGBhbmQgcmV0dXJuaW5nIHRoZSBtYWluIGFwayBpbnN0ZWFkYCk7XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5leHRyYWN0QmFzZUFwayhhcGtzKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBkZWZhdWx0TGFuZ3VhZ2VzID0gWydlbicsICdlbl91cyddO1xuICBmb3IgKGNvbnN0IGxhbmcgb2YgZGVmYXVsdExhbmd1YWdlcykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYXdhaXQgZXh0cmFjdEZyb21BcGtzKGFwa3MsIFsnc3BsaXRzJywgTEFOR1VBR0VfQVBLKGxhbmcpXSk7XG4gICAgfSBjYXRjaCAoaWduKSB7fVxuICB9XG5cbiAgbG9nLmluZm8oYENhbm5vdCBmaW5kIGFueSBzcGxpdCBhcGsgZm9yIHRoZSBkZWZhdWx0IGxhbmd1YWdlcyAke0pTT04uc3RyaW5naWZ5KGRlZmF1bHRMYW5ndWFnZXMpfS4gYCArXG4gICAgYFJldHVybmluZyB0aGUgbWFpbiBhcGsgaW5zdGVhZC5gKTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuZXh0cmFjdEJhc2VBcGsoYXBrcyk7XG59O1xuXG5hcGtzVXRpbHNNZXRob2RzLmlzVGVzdFBhY2thZ2VPbmx5RXJyb3IgPSBmdW5jdGlvbiBpc1Rlc3RQYWNrYWdlT25seUVycm9yIChvdXRwdXQpIHtcbiAgcmV0dXJuIC9cXFtJTlNUQUxMX0ZBSUxFRF9URVNUX09OTFlcXF0vLnRlc3Qob3V0cHV0KTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGFwa3NVdGlsc01ldGhvZHM7XG4iXSwiZmlsZSI6ImxpYi90b29scy9hcGtzLXV0aWxzLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=
|
package/build/lib/tools/index.js
CHANGED
|
@@ -5,13 +5,13 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
+
exports.default = void 0;
|
|
8
9
|
Object.defineProperty(exports, "getAndroidBinaryPath", {
|
|
9
10
|
enumerable: true,
|
|
10
11
|
get: function () {
|
|
11
12
|
return _systemCalls.getAndroidBinaryPath;
|
|
12
13
|
}
|
|
13
14
|
});
|
|
14
|
-
exports.default = void 0;
|
|
15
15
|
|
|
16
16
|
require("source-map-support/register");
|
|
17
17
|
|
|
@@ -27,6 +27,8 @@ var _apkUtils = _interopRequireDefault(require("./apk-utils.js"));
|
|
|
27
27
|
|
|
28
28
|
var _apksUtils = _interopRequireDefault(require("./apks-utils.js"));
|
|
29
29
|
|
|
30
|
+
var _aabUtils = _interopRequireDefault(require("./aab-utils.js"));
|
|
31
|
+
|
|
30
32
|
var _adbEmuCommands = _interopRequireDefault(require("./adb-emu-commands.js"));
|
|
31
33
|
|
|
32
34
|
var _settingsClientCommands = _interopRequireDefault(require("./settings-client-commands"));
|
|
@@ -39,9 +41,9 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
|
|
|
39
41
|
|
|
40
42
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
41
43
|
|
|
42
|
-
Object.assign(_adbCommands.default, _androidManifest.default, _systemCalls.default, _adbEmuCommands.default, _apkSigning.default, _apkUtils.default, _apksUtils.default, _settingsClientCommands.default, _lockmgmt.default, _keyboardCommands.default);
|
|
44
|
+
Object.assign(_adbCommands.default, _androidManifest.default, _systemCalls.default, _adbEmuCommands.default, _apkSigning.default, _apkUtils.default, _apksUtils.default, _aabUtils.default, _settingsClientCommands.default, _lockmgmt.default, _keyboardCommands.default);
|
|
43
45
|
var _default = _adbCommands.default;
|
|
44
46
|
exports.default = _default;require('source-map-support').install();
|
|
45
47
|
|
|
46
48
|
|
|
47
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
49
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi90b29scy9pbmRleC5qcyJdLCJuYW1lcyI6WyJPYmplY3QiLCJhc3NpZ24iLCJtZXRob2RzIiwibWFuaWZlc3RNZXRob2RzIiwic3lzdGVtQ2FsbE1ldGhvZHMiLCJlbXVNZXRob2RzIiwiYXBrU2lnbmluZ01ldGhvZHMiLCJhcGtVdGlsc01ldGhvZHMiLCJhcGtzVXRpbHNNZXRob2RzIiwiYWFiVXRpbHNNZXRob2RzIiwic2V0dGluZ3NDbGllbnRDb21tYW5kcyIsImxvY2tNYW5hZ2VtZW50Q29tbWFuZHMiLCJrZXlib2FyZENvbW1hbmRzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7QUFFQUEsTUFBTSxDQUFDQyxNQUFQLENBQ0lDLG9CQURKLEVBRUlDLHdCQUZKLEVBR0lDLG9CQUhKLEVBSUlDLHVCQUpKLEVBS0lDLG1CQUxKLEVBTUlDLGlCQU5KLEVBT0lDLGtCQVBKLEVBUUlDLGlCQVJKLEVBU0lDLCtCQVRKLEVBVUlDLGlCQVZKLEVBV0lDLHlCQVhKO2VBY2VWLG9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1ldGhvZHMgZnJvbSAnLi9hZGItY29tbWFuZHMuanMnO1xuaW1wb3J0IG1hbmlmZXN0TWV0aG9kcyBmcm9tICcuL2FuZHJvaWQtbWFuaWZlc3QuanMnO1xuaW1wb3J0IHN5c3RlbUNhbGxNZXRob2RzLCB7IGdldEFuZHJvaWRCaW5hcnlQYXRoIH0gZnJvbSAnLi9zeXN0ZW0tY2FsbHMuanMnO1xuaW1wb3J0IGFwa1NpZ25pbmdNZXRob2RzIGZyb20gJy4vYXBrLXNpZ25pbmcuanMnO1xuaW1wb3J0IGFwa1V0aWxzTWV0aG9kcyBmcm9tICcuL2Fway11dGlscy5qcyc7XG5pbXBvcnQgYXBrc1V0aWxzTWV0aG9kcyBmcm9tICcuL2Fwa3MtdXRpbHMuanMnO1xuaW1wb3J0IGFhYlV0aWxzTWV0aG9kcyBmcm9tICcuL2FhYi11dGlscy5qcyc7XG5pbXBvcnQgZW11TWV0aG9kcyBmcm9tICcuL2FkYi1lbXUtY29tbWFuZHMuanMnO1xuaW1wb3J0IHNldHRpbmdzQ2xpZW50Q29tbWFuZHMgZnJvbSAnLi9zZXR0aW5ncy1jbGllbnQtY29tbWFuZHMnO1xuaW1wb3J0IGxvY2tNYW5hZ2VtZW50Q29tbWFuZHMgZnJvbSAnLi9sb2NrbWdtdCc7XG5pbXBvcnQga2V5Ym9hcmRDb21tYW5kcyBmcm9tICcuL2tleWJvYXJkLWNvbW1hbmRzJztcblxuT2JqZWN0LmFzc2lnbihcbiAgICBtZXRob2RzLFxuICAgIG1hbmlmZXN0TWV0aG9kcyxcbiAgICBzeXN0ZW1DYWxsTWV0aG9kcyxcbiAgICBlbXVNZXRob2RzLFxuICAgIGFwa1NpZ25pbmdNZXRob2RzLFxuICAgIGFwa1V0aWxzTWV0aG9kcyxcbiAgICBhcGtzVXRpbHNNZXRob2RzLFxuICAgIGFhYlV0aWxzTWV0aG9kcyxcbiAgICBzZXR0aW5nc0NsaWVudENvbW1hbmRzLFxuICAgIGxvY2tNYW5hZ2VtZW50Q29tbWFuZHMsXG4gICAga2V5Ym9hcmRDb21tYW5kcyxcbik7XG5cbmV4cG9ydCBkZWZhdWx0IG1ldGhvZHM7XG5leHBvcnQgeyBnZXRBbmRyb2lkQmluYXJ5UGF0aCB9O1xuIl0sImZpbGUiOiJsaWIvdG9vbHMvaW5kZXguanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4ifQ==
|
|
@@ -15,7 +15,7 @@ var _path = _interopRequireDefault(require("path"));
|
|
|
15
15
|
|
|
16
16
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
17
17
|
|
|
18
|
-
var
|
|
18
|
+
var _support = require("@appium/support");
|
|
19
19
|
|
|
20
20
|
var _helpers = require("../helpers.js");
|
|
21
21
|
|
|
@@ -175,7 +175,7 @@ lockManagementMethods.isScreenLocked = async function isScreenLocked() {
|
|
|
175
175
|
|
|
176
176
|
_logger.default.debug(`Writing dumpsys output to ${dumpsysFile}`);
|
|
177
177
|
|
|
178
|
-
await
|
|
178
|
+
await _support.fs.writeFile(dumpsysFile, stdout);
|
|
179
179
|
}
|
|
180
180
|
|
|
181
181
|
return (0, _helpers.isShowingLockscreen)(stdout) || (0, _helpers.isCurrentFocusOnKeyguard)(stdout) || !(0, _helpers.isScreenOnFully)(stdout);
|
|
@@ -221,4 +221,4 @@ var _default = lockManagementMethods;
|
|
|
221
221
|
exports.default = _default;require('source-map-support').install();
|
|
222
222
|
|
|
223
223
|
|
|
224
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi90b29scy9sb2NrbWdtdC5qcyJdLCJuYW1lcyI6WyJsb2NrTWFuYWdlbWVudE1ldGhvZHMiLCJDUkVERU5USUFMX0NBTk5PVF9CRV9OVUxMX09SX0VNUFRZX0VSUk9SIiwiQ1JFREVOVElBTF9ESURfTk9UX01BVENIX0VSUk9SIiwiU1VQUE9SVEVEX0xPQ0tfQ1JFREVOVElBTF9UWVBFUyIsIktFWUNPREVfUE9XRVIiLCJLRVlDT0RFX1dBS0VVUCIsIkhJREVfS0VZQk9BUkRfV0FJVF9USU1FIiwiYnVpbGRDb21tYW5kIiwidmVyYiIsIm9sZENyZWRlbnRpYWwiLCJhcmdzIiwiY21kIiwiXyIsImlzRW1wdHkiLCJwdXNoIiwic3dpcGVVcCIsImFkYiIsIm91dHB1dCIsInNoZWxsIiwiZGltZW5zaW9uc01hdGNoIiwiZXhlYyIsIkVycm9yIiwiZGlzcGxheVdpZHRoIiwicGFyc2VJbnQiLCJkaXNwbGF5SGVpZ2h0IiwieDAiLCJ5MCIsIngxIiwieTEiLCJtYXAiLCJjIiwiTWF0aCIsInRydW5jIiwiaXNMb2NrTWFuYWdlbWVudFN1cHBvcnRlZCIsImlzQm9vbGVhbiIsIl9pc0xvY2tNYW5hZ2VtZW50U3VwcG9ydGVkIiwicGFzc0ZsYWciLCJpZ24iLCJpbmNsdWRlcyIsImxvZyIsImRlYnVnIiwidmVyaWZ5TG9ja0NyZWRlbnRpYWwiLCJjcmVkZW50aWFsIiwic3Rkb3V0Iiwic3RkZXJyIiwib3V0cHV0Rm9ybWF0IiwiRVhFQ19PVVRQVVRfRk9STUFUIiwiRlVMTCIsInNvbWUiLCJ4IiwiZSIsIm1lc3NhZ2UiLCJjbGVhckxvY2tDcmVkZW50aWFsIiwiaXNMb2NrRW5hYmxlZCIsInRlc3QiLCJzZXRMb2NrQ3JlZGVudGlhbCIsImNyZWRlbnRpYWxUeXBlIiwiaXNJbnRlZ2VyIiwiaXNTY3JlZW5Mb2NrZWQiLCJwcm9jZXNzIiwiZW52IiwiQVBQSVVNX0xPR19EVU1QU1lTIiwiZHVtcHN5c0ZpbGUiLCJwYXRoIiwicmVzb2x2ZSIsImN3ZCIsImZzIiwid3JpdGVGaWxlIiwiZGlzbWlzc0tleWd1YXJkIiwiaW5mbyIsImN5Y2xlV2FrZVVwIiwiZ2V0QXBpTGV2ZWwiLCJoaWRlS2V5Ym9hcmQiLCJCIiwiZGVsYXkiLCJiYWNrIiwia2V5ZXZlbnQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0E7O0FBRUEsTUFBTUEscUJBQXFCLEdBQUcsRUFBOUI7QUFFQSxNQUFNQyx3Q0FBd0MsR0FBSSxtQ0FBbEQ7QUFDQSxNQUFNQyw4QkFBOEIsR0FBSSxjQUF4QztBQUNBLE1BQU1DLCtCQUErQixHQUFHLENBQUMsVUFBRCxFQUFhLEtBQWIsRUFBb0IsU0FBcEIsQ0FBeEM7QUFDQSxNQUFNQyxhQUFhLEdBQUcsRUFBdEI7QUFDQSxNQUFNQyxjQUFjLEdBQUcsR0FBdkI7QUFDQSxNQUFNQyx1QkFBdUIsR0FBRyxHQUFoQzs7QUFFQSxTQUFTQyxZQUFULENBQXVCQyxJQUF2QixFQUE2QkMsYUFBYSxHQUFHLElBQTdDLEVBQW1ELEdBQUdDLElBQXRELEVBQTREO0FBQzFELFFBQU1DLEdBQUcsR0FBRyxDQUFDLGNBQUQsRUFBaUJILElBQWpCLENBQVo7O0FBQ0EsTUFBSSxDQUFDSSxnQkFBRUMsT0FBRixDQUFVSixhQUFWLENBQUwsRUFBK0I7QUFDN0JFLElBQUFBLEdBQUcsQ0FBQ0csSUFBSixDQUFTLE9BQVQsRUFBa0JMLGFBQWxCO0FBQ0Q7O0FBQ0QsTUFBSSxDQUFDRyxnQkFBRUMsT0FBRixDQUFVSCxJQUFWLENBQUwsRUFBc0I7QUFDcEJDLElBQUFBLEdBQUcsQ0FBQ0csSUFBSixDQUFTLEdBQUdKLElBQVo7QUFDRDs7QUFDRCxTQUFPQyxHQUFQO0FBQ0Q7O0FBRUQsZUFBZUksT0FBZixDQUF3QkMsR0FBeEIsRUFBNkI7QUFDM0IsUUFBTUMsTUFBTSxHQUFHLE1BQU1ELEdBQUcsQ0FBQ0UsS0FBSixDQUFVLENBQUMsU0FBRCxFQUFZLFFBQVosQ0FBVixDQUFyQjtBQUNBLFFBQU1DLGVBQWUsR0FBRyxtQkFBbUJDLElBQW5CLENBQXdCSCxNQUF4QixDQUF4Qjs7QUFDQSxNQUFJLENBQUNFLGVBQUwsRUFBc0I7QUFDcEIsVUFBTSxJQUFJRSxLQUFKLENBQVUsa0NBQVYsQ0FBTjtBQUNEOztBQUNELFFBQU1DLFlBQVksR0FBR0MsUUFBUSxDQUFDSixlQUFlLENBQUMsQ0FBRCxDQUFoQixFQUFxQixFQUFyQixDQUE3QjtBQUNBLFFBQU1LLGFBQWEsR0FBR0QsUUFBUSxDQUFDSixlQUFlLENBQUMsQ0FBRCxDQUFoQixFQUFxQixFQUFyQixDQUE5QjtBQUNBLFFBQU1NLEVBQUUsR0FBR0gsWUFBWSxHQUFHLENBQTFCO0FBQ0EsUUFBTUksRUFBRSxHQUFHRixhQUFhLEdBQUcsQ0FBaEIsR0FBb0IsQ0FBL0I7QUFDQSxRQUFNRyxFQUFFLEdBQUdGLEVBQVg7QUFDQSxRQUFNRyxFQUFFLEdBQUdKLGFBQWEsR0FBRyxDQUEzQjtBQUNBLFFBQU1SLEdBQUcsQ0FBQ0UsS0FBSixDQUFVLENBQ2QsT0FEYyxFQUNMLGFBREssRUFDVSxPQURWLEVBRWQsR0FBSSxDQUFDTyxFQUFELEVBQUtDLEVBQUwsRUFBU0MsRUFBVCxFQUFhQyxFQUFiLEVBQWlCQyxHQUFqQixDQUFzQkMsQ0FBRCxJQUFPQyxJQUFJLENBQUNDLEtBQUwsQ0FBV0YsQ0FBWCxDQUE1QixDQUZVLENBQVYsQ0FBTjtBQUlEOztBQVFEOUIscUJBQXFCLENBQUNpQyx5QkFBdEIsR0FBa0QsZUFBZUEseUJBQWYsR0FBNEM7QUFDNUYsTUFBSSxDQUFDckIsZ0JBQUVzQixTQUFGLENBQVksS0FBS0MsMEJBQWpCLENBQUwsRUFBbUQ7QUFDakQsVUFBTUMsUUFBUSxHQUFHLFVBQWpCO0FBQ0EsUUFBSW5CLE1BQU0sR0FBRyxFQUFiOztBQUNBLFFBQUk7QUFDRkEsTUFBQUEsTUFBTSxHQUFHLE1BQU0sS0FBS0MsS0FBTCxDQUFXLENBQUUsNkJBQTRCa0IsUUFBUyxFQUF2QyxDQUFYLENBQWY7QUFDRCxLQUZELENBRUUsT0FBT0MsR0FBUCxFQUFZLENBQUU7O0FBQ2hCLFNBQUtGLDBCQUFMLEdBQWtDdkIsZ0JBQUUwQixRQUFGLENBQVdyQixNQUFYLEVBQW1CbUIsUUFBbkIsQ0FBbEM7O0FBQ0FHLG9CQUFJQyxLQUFKLENBQVcsdUNBQUQsR0FDUCxHQUFFLEtBQUtMLDBCQUFMLEdBQWtDLEVBQWxDLEdBQXVDLE1BQU8sV0FEbkQ7QUFFRDs7QUFDRCxTQUFPLEtBQUtBLDBCQUFaO0FBQ0QsQ0FaRDs7QUEwQkFuQyxxQkFBcUIsQ0FBQ3lDLG9CQUF0QixHQUE2QyxlQUFlQSxvQkFBZixDQUFxQ0MsVUFBVSxHQUFHLElBQWxELEVBQXdEO0FBQ25HLE1BQUk7QUFDRixVQUFNO0FBQUNDLE1BQUFBLE1BQUQ7QUFBU0MsTUFBQUE7QUFBVCxRQUFtQixNQUFNLEtBQUsxQixLQUFMLENBQVdYLFlBQVksQ0FBQyxRQUFELEVBQVdtQyxVQUFYLENBQXZCLEVBQStDO0FBQzVFRyxNQUFBQSxZQUFZLEVBQUUsS0FBS0Msa0JBQUwsQ0FBd0JDO0FBRHNDLEtBQS9DLENBQS9COztBQUdBLFFBQUluQyxnQkFBRTBCLFFBQUYsQ0FBV0ssTUFBWCxFQUFtQix1QkFBbkIsQ0FBSixFQUFpRDtBQUMvQyxhQUFPLElBQVA7QUFDRDs7QUFDRCxRQUFJLENBQUUsY0FBRixFQUFpQjFDLHdDQUFqQixFQUNDK0MsSUFERCxDQUNPQyxDQUFELElBQU9yQyxnQkFBRTBCLFFBQUYsQ0FBV00sTUFBTSxJQUFJRCxNQUFyQixFQUE2Qk0sQ0FBN0IsQ0FEYixDQUFKLEVBQ21EO0FBQ2pELGFBQU8sS0FBUDtBQUNEOztBQUNELFVBQU0sSUFBSTVCLEtBQUosQ0FBVXVCLE1BQU0sSUFBSUQsTUFBcEIsQ0FBTjtBQUNELEdBWkQsQ0FZRSxPQUFPTyxDQUFQLEVBQVU7QUFDVixVQUFNLElBQUk3QixLQUFKLENBQVcsOENBQUQsR0FDYixtQkFBa0I2QixDQUFDLENBQUNOLE1BQUYsSUFBWU0sQ0FBQyxDQUFDUCxNQUFkLElBQXdCTyxDQUFDLENBQUNDLE9BQVEsRUFEakQsQ0FBTjtBQUVEO0FBQ0YsQ0FqQkQ7O0FBK0JBbkQscUJBQXFCLENBQUNvRCxtQkFBdEIsR0FBNEMsZUFBZUEsbUJBQWYsQ0FBb0NWLFVBQVUsR0FBRyxJQUFqRCxFQUF1RDtBQUNqRyxNQUFJO0FBQ0YsVUFBTTtBQUFDQyxNQUFBQSxNQUFEO0FBQVNDLE1BQUFBO0FBQVQsUUFBbUIsTUFBTSxLQUFLMUIsS0FBTCxDQUFXWCxZQUFZLENBQUMsT0FBRCxFQUFVbUMsVUFBVixDQUF2QixFQUE4QztBQUMzRUcsTUFBQUEsWUFBWSxFQUFFLEtBQUtDLGtCQUFMLENBQXdCQztBQURxQyxLQUE5QyxDQUEvQjs7QUFHQSxRQUFJLENBQUMsQ0FBQyxzQkFBRCxFQUF5Qix5QkFBekIsRUFDQUMsSUFEQSxDQUNNQyxDQUFELElBQU9yQyxnQkFBRTBCLFFBQUYsQ0FBV00sTUFBTSxJQUFJRCxNQUFyQixFQUE2Qk0sQ0FBN0IsQ0FEWixDQUFMLEVBQ21EO0FBQ2pELFlBQU0sSUFBSTVCLEtBQUosQ0FBVXVCLE1BQU0sSUFBSUQsTUFBcEIsQ0FBTjtBQUNEO0FBQ0YsR0FSRCxDQVFFLE9BQU9PLENBQVAsRUFBVTtBQUNWLFVBQU0sSUFBSTdCLEtBQUosQ0FBVyx1Q0FBRCxHQUNiLG1CQUFrQjZCLENBQUMsQ0FBQ04sTUFBRixJQUFZTSxDQUFDLENBQUNQLE1BQWQsSUFBd0JPLENBQUMsQ0FBQ0MsT0FBUSxFQURqRCxDQUFOO0FBRUQ7QUFDRixDQWJEOztBQXNCQW5ELHFCQUFxQixDQUFDcUQsYUFBdEIsR0FBc0MsZUFBZUEsYUFBZixHQUFnQztBQUNwRSxNQUFJO0FBQ0YsVUFBTTtBQUFDVixNQUFBQSxNQUFEO0FBQVNDLE1BQUFBO0FBQVQsUUFBbUIsTUFBTSxLQUFLMUIsS0FBTCxDQUFXWCxZQUFZLENBQUMsY0FBRCxDQUF2QixFQUF5QztBQUN0RXNDLE1BQUFBLFlBQVksRUFBRSxLQUFLQyxrQkFBTCxDQUF3QkM7QUFEZ0MsS0FBekMsQ0FBL0I7O0FBR0EsUUFBSSxZQUFZTyxJQUFaLENBQWlCWCxNQUFqQixLQUNHLENBQUN6Qyw4QkFBRCxFQUFpQ0Qsd0NBQWpDLEVBQTJFK0MsSUFBM0UsQ0FDQUMsQ0FBRCxJQUFPckMsZ0JBQUUwQixRQUFGLENBQVdNLE1BQU0sSUFBSUQsTUFBckIsRUFBNkJNLENBQTdCLENBRE4sQ0FEUCxFQUUrQztBQUM3QyxhQUFPLElBQVA7QUFDRDs7QUFDRCxRQUFJLFdBQVdLLElBQVgsQ0FBZ0JYLE1BQWhCLENBQUosRUFBNkI7QUFDM0IsYUFBTyxLQUFQO0FBQ0Q7O0FBQ0QsVUFBTSxJQUFJdEIsS0FBSixDQUFVdUIsTUFBTSxJQUFJRCxNQUFwQixDQUFOO0FBQ0QsR0FiRCxDQWFFLE9BQU9PLENBQVAsRUFBVTtBQUNWLFVBQU0sSUFBSTdCLEtBQUosQ0FBVywyREFBMEQ2QixDQUFDLENBQUNDLE9BQVEsRUFBL0UsQ0FBTjtBQUNEO0FBQ0YsQ0FqQkQ7O0FBb0NBbkQscUJBQXFCLENBQUN1RCxpQkFBdEIsR0FBMEMsZUFBZUEsaUJBQWYsQ0FDeENDLGNBRHdDLEVBQ3hCZCxVQUR3QixFQUNaakMsYUFBYSxHQUFHLElBREosRUFDVTtBQUNsRCxNQUFJLENBQUNOLCtCQUErQixDQUFDbUMsUUFBaEMsQ0FBeUNrQixjQUF6QyxDQUFMLEVBQStEO0FBQzdELFVBQU0sSUFBSW5DLEtBQUosQ0FBVyxnQ0FBK0JtQyxjQUFlLGdCQUEvQyxHQUNiLHNEQUFxRHJELCtCQUFnQyxFQURsRixDQUFOO0FBRUQ7O0FBQ0QsTUFBSVMsZ0JBQUVDLE9BQUYsQ0FBVTZCLFVBQVYsS0FBeUIsQ0FBQzlCLGdCQUFFNkMsU0FBRixDQUFZZixVQUFaLENBQTlCLEVBQXVEO0FBQ3JELFVBQU0sSUFBSXJCLEtBQUosQ0FBVSx3Q0FBVixDQUFOO0FBQ0Q7O0FBQ0QsUUFBTVYsR0FBRyxHQUFHSixZQUFZLENBQUUsT0FBTWlELGNBQWUsRUFBdkIsRUFBMEIvQyxhQUExQixFQUF5Q2lDLFVBQXpDLENBQXhCOztBQUNBLE1BQUk7QUFDRixVQUFNO0FBQUNDLE1BQUFBLE1BQUQ7QUFBU0MsTUFBQUE7QUFBVCxRQUFtQixNQUFNLEtBQUsxQixLQUFMLENBQVdQLEdBQVgsRUFBZ0I7QUFDN0NrQyxNQUFBQSxZQUFZLEVBQUUsS0FBS0Msa0JBQUwsQ0FBd0JDO0FBRE8sS0FBaEIsQ0FBL0I7O0FBR0EsUUFBSSxDQUFDbkMsZ0JBQUUwQixRQUFGLENBQVdLLE1BQVgsRUFBbUIsUUFBbkIsQ0FBTCxFQUFtQztBQUNqQyxZQUFNLElBQUl0QixLQUFKLENBQVV1QixNQUFNLElBQUlELE1BQXBCLENBQU47QUFDRDtBQUNGLEdBUEQsQ0FPRSxPQUFPTyxDQUFQLEVBQVU7QUFDVixVQUFNLElBQUk3QixLQUFKLENBQVcsMEJBQXlCbUMsY0FBZSxzQkFBekMsR0FDYixtQkFBa0JOLENBQUMsQ0FBQ04sTUFBRixJQUFZTSxDQUFDLENBQUNQLE1BQWQsSUFBd0JPLENBQUMsQ0FBQ0MsT0FBUSxFQURqRCxDQUFOO0FBRUQ7QUFDRixDQXJCRDs7QUE0QkFuRCxxQkFBcUIsQ0FBQzBELGNBQXRCLEdBQXVDLGVBQWVBLGNBQWYsR0FBaUM7QUFDdEUsUUFBTWYsTUFBTSxHQUFHLE1BQU0sS0FBS3pCLEtBQUwsQ0FBVyxDQUFDLFNBQUQsRUFBWSxRQUFaLENBQVgsQ0FBckI7O0FBQ0EsTUFBSXlDLE9BQU8sQ0FBQ0MsR0FBUixDQUFZQyxrQkFBaEIsRUFBb0M7QUFHbEMsVUFBTUMsV0FBVyxHQUFHQyxjQUFLQyxPQUFMLENBQWFMLE9BQU8sQ0FBQ00sR0FBUixFQUFiLEVBQTRCLGFBQTVCLENBQXBCOztBQUNBMUIsb0JBQUlDLEtBQUosQ0FBVyw2QkFBNEJzQixXQUFZLEVBQW5EOztBQUNBLFVBQU1JLGtCQUFHQyxTQUFILENBQWFMLFdBQWIsRUFBMEJuQixNQUExQixDQUFOO0FBQ0Q7O0FBQ0QsU0FBTyxrQ0FBb0JBLE1BQXBCLEtBQStCLHVDQUF5QkEsTUFBekIsQ0FBL0IsSUFBbUUsQ0FBQyw4QkFBZ0JBLE1BQWhCLENBQTNFO0FBQ0QsQ0FWRDs7QUFlQTNDLHFCQUFxQixDQUFDb0UsZUFBdEIsR0FBd0MsZUFBZUEsZUFBZixHQUFrQztBQUN4RTdCLGtCQUFJOEIsSUFBSixDQUFTLDhDQUFUOztBQUdBLFFBQU0sS0FBS0MsV0FBTCxFQUFOOztBQUVBLE1BQUksT0FBTSxLQUFLQyxXQUFMLEVBQU4sSUFBMkIsRUFBL0IsRUFBbUM7QUFDakMsVUFBTSxLQUFLckQsS0FBTCxDQUFXLENBQUMsSUFBRCxFQUFPLGtCQUFQLENBQVgsQ0FBTjtBQUNBO0FBQ0Q7O0FBRUQsUUFBTXlCLE1BQU0sR0FBRyxNQUFNLEtBQUt6QixLQUFMLENBQVcsQ0FBQyxTQUFELEVBQVksUUFBWixFQUFzQixTQUF0QixDQUFYLENBQXJCOztBQUNBLE1BQUksQ0FBQyx1Q0FBeUJ5QixNQUF6QixDQUFMLEVBQXVDO0FBQ3JDSixvQkFBSUMsS0FBSixDQUFVLG1DQUFWOztBQUNBO0FBQ0Q7O0FBRURELGtCQUFJQyxLQUFKLENBQVUsb0NBQVY7O0FBQ0EsTUFBSSxNQUFNLEtBQUtnQyxZQUFMLEVBQVYsRUFBK0I7QUFDN0IsVUFBTUMsa0JBQUVDLEtBQUYsQ0FBUXBFLHVCQUFSLENBQU47QUFDRDs7QUFDRGlDLGtCQUFJQyxLQUFKLENBQVUsK0NBQVY7O0FBQ0EsUUFBTSxLQUFLdEIsS0FBTCxDQUFXLENBQUMsU0FBRCxFQUFZLE1BQVosRUFBb0IsY0FBcEIsRUFBb0MsR0FBcEMsQ0FBWCxDQUFOO0FBQ0EsUUFBTSxLQUFLeUQsSUFBTCxFQUFOO0FBQ0EsUUFBTTVELE9BQU8sQ0FBQyxJQUFELENBQWI7QUFDRCxDQXpCRDs7QUErQkFmLHFCQUFxQixDQUFDc0UsV0FBdEIsR0FBb0MsZUFBZUEsV0FBZixHQUE4QjtBQUNoRSxRQUFNLEtBQUtNLFFBQUwsQ0FBY3hFLGFBQWQsQ0FBTjtBQUNBLFFBQU0sS0FBS3dFLFFBQUwsQ0FBY3ZFLGNBQWQsQ0FBTjtBQUNELENBSEQ7O2VBS2VMLHFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGxvZyBmcm9tICcuLi9sb2dnZXIuanMnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgZnMgfSBmcm9tICdhcHBpdW0tc3VwcG9ydCc7XG5pbXBvcnQge1xuICBpc1Nob3dpbmdMb2Nrc2NyZWVuLCBpc0N1cnJlbnRGb2N1c09uS2V5Z3VhcmQsIGlzU2NyZWVuT25GdWxseSxcbn0gZnJvbSAnLi4vaGVscGVycy5qcyc7XG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5cbmNvbnN0IGxvY2tNYW5hZ2VtZW50TWV0aG9kcyA9IHt9O1xuXG5jb25zdCBDUkVERU5USUFMX0NBTk5PVF9CRV9OVUxMX09SX0VNUFRZX0VSUk9SID0gYENyZWRlbnRpYWwgY2FuJ3QgYmUgbnVsbCBvciBlbXB0eWA7XG5jb25zdCBDUkVERU5USUFMX0RJRF9OT1RfTUFUQ0hfRVJST1IgPSBgZGlkbid0IG1hdGNoYDtcbmNvbnN0IFNVUFBPUlRFRF9MT0NLX0NSRURFTlRJQUxfVFlQRVMgPSBbJ3Bhc3N3b3JkJywgJ3BpbicsICdwYXR0ZXJuJ107XG5jb25zdCBLRVlDT0RFX1BPV0VSID0gMjY7XG5jb25zdCBLRVlDT0RFX1dBS0VVUCA9IDIyNDsgLy8gd29ya3Mgb3ZlciBBUEkgTGV2ZWwgMjBcbmNvbnN0IEhJREVfS0VZQk9BUkRfV0FJVF9USU1FID0gMTAwO1xuXG5mdW5jdGlvbiBidWlsZENvbW1hbmQgKHZlcmIsIG9sZENyZWRlbnRpYWwgPSBudWxsLCAuLi5hcmdzKSB7XG4gIGNvbnN0IGNtZCA9IFsnbG9ja3NldHRpbmdzJywgdmVyYl07XG4gIGlmICghXy5pc0VtcHR5KG9sZENyZWRlbnRpYWwpKSB7XG4gICAgY21kLnB1c2goJy0tb2xkJywgb2xkQ3JlZGVudGlhbCk7XG4gIH1cbiAgaWYgKCFfLmlzRW1wdHkoYXJncykpIHtcbiAgICBjbWQucHVzaCguLi5hcmdzKTtcbiAgfVxuICByZXR1cm4gY21kO1xufVxuXG5hc3luYyBmdW5jdGlvbiBzd2lwZVVwIChhZGIpIHtcbiAgY29uc3Qgb3V0cHV0ID0gYXdhaXQgYWRiLnNoZWxsKFsnZHVtcHN5cycsICd3aW5kb3cnXSk7XG4gIGNvbnN0IGRpbWVuc2lvbnNNYXRjaCA9IC9pbml0PShcXGQrKXgoXFxkKykvLmV4ZWMob3V0cHV0KTtcbiAgaWYgKCFkaW1lbnNpb25zTWF0Y2gpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCByZXRyaWV2ZSB0aGUgZGlzcGxheSBzaXplJyk7XG4gIH1cbiAgY29uc3QgZGlzcGxheVdpZHRoID0gcGFyc2VJbnQoZGltZW5zaW9uc01hdGNoWzFdLCAxMCk7XG4gIGNvbnN0IGRpc3BsYXlIZWlnaHQgPSBwYXJzZUludChkaW1lbnNpb25zTWF0Y2hbMl0sIDEwKTtcbiAgY29uc3QgeDAgPSBkaXNwbGF5V2lkdGggLyAyO1xuICBjb25zdCB5MCA9IGRpc3BsYXlIZWlnaHQgLyA1ICogNDtcbiAgY29uc3QgeDEgPSB4MDtcbiAgY29uc3QgeTEgPSBkaXNwbGF5SGVpZ2h0IC8gNTtcbiAgYXdhaXQgYWRiLnNoZWxsKFtcbiAgICAnaW5wdXQnLCAndG91Y2hzY3JlZW4nLCAnc3dpcGUnLFxuICAgIC4uLihbeDAsIHkwLCB4MSwgeTFdLm1hcCgoYykgPT4gTWF0aC50cnVuYyhjKSkpXG4gIF0pO1xufVxuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgdGhlIGRldmljZSBzdXBwb3J0cyBsb2NrIHNldHRpbmdzIG1hbmFnZW1lbnQgd2l0aCBgbG9ja3NldHRpbmdzYFxuICogY29tbWFuZCBsaW5lIHRvb2wuIFRoaXMgdG9vbCBoYXMgYmVlbiBhZGRlZCB0byBBbmRyb2lkIHRvb2xzZXQgc2luY2UgIEFQSSAyNyBPcmVvXG4gKlxuICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgbWFuYWdlbWVudCBpcyBzdXBwb3J0ZWQuIFRoZSByZXN1bHQgaXMgY2FjaGVkIHBlciBBREIgaW5zdGFuY2VcbiAqL1xubG9ja01hbmFnZW1lbnRNZXRob2RzLmlzTG9ja01hbmFnZW1lbnRTdXBwb3J0ZWQgPSBhc3luYyBmdW5jdGlvbiBpc0xvY2tNYW5hZ2VtZW50U3VwcG9ydGVkICgpIHtcbiAgaWYgKCFfLmlzQm9vbGVhbih0aGlzLl9pc0xvY2tNYW5hZ2VtZW50U3VwcG9ydGVkKSkge1xuICAgIGNvbnN0IHBhc3NGbGFnID0gJ19fUEFTU19fJztcbiAgICBsZXQgb3V0cHV0ID0gJyc7XG4gICAgdHJ5IHtcbiAgICAgIG91dHB1dCA9IGF3YWl0IHRoaXMuc2hlbGwoW2Bsb2Nrc2V0dGluZ3MgaGVscCAmJiBlY2hvICR7cGFzc0ZsYWd9YF0pO1xuICAgIH0gY2F0Y2ggKGlnbikge31cbiAgICB0aGlzLl9pc0xvY2tNYW5hZ2VtZW50U3VwcG9ydGVkID0gXy5pbmNsdWRlcyhvdXRwdXQsIHBhc3NGbGFnKTtcbiAgICBsb2cuZGVidWcoYEV4dGVuZGVkIGxvY2sgc2V0dGluZ3MgbWFuYWdlbWVudCBpcyBgICtcbiAgICAgIGAke3RoaXMuX2lzTG9ja01hbmFnZW1lbnRTdXBwb3J0ZWQgPyAnJyA6ICdub3QgJ31zdXBwb3J0ZWRgKTtcbiAgfVxuICByZXR1cm4gdGhpcy5faXNMb2NrTWFuYWdlbWVudFN1cHBvcnRlZDtcbn07XG5cbi8qKlxuICogQ2hlY2sgd2hldGhlciB0aGUgZ2l2ZW4gY3JlZGVudGlhbCBpcyBtYXRjaGVzIHRvIHRoZSBjdXJyZW50bHkgc2V0IG9uZS5cbiAqXG4gKiBAcGFyYW0gez9zdHJpbmd9IGNyZWRlbnRpYWwgW251bGxdIFRoZSBjcmVkZW50aWFsIHZhbHVlLiBJdCBjb3VsZCBiZSBlaXRoZXJcbiAqIHBpbiwgcGFzc3dvcmQgb3IgYSBwYXR0ZXJuLiBBIHBhdHRlcm4gaXMgc3BlY2lmaWVkIGJ5IGEgbm9uLXNlcGFyYXRlZCBsaXN0XG4gKiBvZiBudW1iZXJzIHRoYXQgaW5kZXggdGhlIGNlbGwgb24gdGhlIHBhdHRlcm4gaW4gYSAxLWJhc2VkIG1hbm5lciBpbiBsZWZ0XG4gKiB0byByaWdodCBhbmQgdG9wIHRvIGJvdHRvbSBvcmRlciwgaS5lLiB0aGUgdG9wLWxlZnQgY2VsbCBpcyBpbmRleGVkIHdpdGggMSxcbiAqIHdoZXJlYXMgdGhlIGJvdHRvbS1yaWdodCBjZWxsIGlzIGluZGV4ZWQgd2l0aCA5LiBFeGFtcGxlOiAxMjM0LlxuICogbnVsbC9lbXB0eSB2YWx1ZSBhc3N1bWVzIHRoZSBkZXZpY2UgaGFzIG5vIGxvY2sgY3VycmVudGx5IHNldC5cbiAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgdGhlIGdpdmVuIGNyZWRlbnRpYWwgbWF0Y2hlcyB0byB0aGUgZGV2aWNlJ3Mgb25lXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIHZlcmlmaWNhdGlvbiBmYWNlcyBhbiB1bmV4cGVjdGVkIGVycm9yXG4gKi9cbmxvY2tNYW5hZ2VtZW50TWV0aG9kcy52ZXJpZnlMb2NrQ3JlZGVudGlhbCA9IGFzeW5jIGZ1bmN0aW9uIHZlcmlmeUxvY2tDcmVkZW50aWFsIChjcmVkZW50aWFsID0gbnVsbCkge1xuICB0cnkge1xuICAgIGNvbnN0IHtzdGRvdXQsIHN0ZGVycn0gPSBhd2FpdCB0aGlzLnNoZWxsKGJ1aWxkQ29tbWFuZCgndmVyaWZ5JywgY3JlZGVudGlhbCksIHtcbiAgICAgIG91dHB1dEZvcm1hdDogdGhpcy5FWEVDX09VVFBVVF9GT1JNQVQuRlVMTFxuICAgIH0pO1xuICAgIGlmIChfLmluY2x1ZGVzKHN0ZG91dCwgJ3ZlcmlmaWVkIHN1Y2Nlc3NmdWxseScpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKFtgZGlkbid0IG1hdGNoYCwgQ1JFREVOVElBTF9DQU5OT1RfQkVfTlVMTF9PUl9FTVBUWV9FUlJPUl1cbiAgICAgICAgLnNvbWUoKHgpID0+IF8uaW5jbHVkZXMoc3RkZXJyIHx8IHN0ZG91dCwgeCkpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihzdGRlcnIgfHwgc3Rkb3V0KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgRGV2aWNlIGxvY2sgY3JlZGVudGlhbCB2ZXJpZmljYXRpb24gZmFpbGVkLiBgICtcbiAgICAgIGBPcmlnaW5hbCBlcnJvcjogJHtlLnN0ZGVyciB8fCBlLnN0ZG91dCB8fCBlLm1lc3NhZ2V9YCk7XG4gIH1cbn07XG5cbi8qKlxuICogQ2xlYXJzIGN1cnJlbnQgbG9jayBjcmVkZW50aWFscy4gVXN1YWxseSBpdCB0YWtlcyBzZXZlcmFsIHNlY29uZHMgZm9yIGEgZGV2aWNlIHRvXG4gKiBzeW5jIHRoZSBjcmVkZW50aWFsIHN0YXRlIGFmdGVyIHRoaXMgbWV0aG9kIHJldHVybnMuXG4gKlxuICogQHBhcmFtIHs/c3RyaW5nfSBjcmVkZW50aWFsIFtudWxsXSBUaGUgY3JlZGVudGlhbCB2YWx1ZS4gSXQgY291bGQgYmUgZWl0aGVyXG4gKiBwaW4sIHBhc3N3b3JkIG9yIGEgcGF0dGVybi4gQSBwYXR0ZXJuIGlzIHNwZWNpZmllZCBieSBhIG5vbi1zZXBhcmF0ZWQgbGlzdFxuICogb2YgbnVtYmVycyB0aGF0IGluZGV4IHRoZSBjZWxsIG9uIHRoZSBwYXR0ZXJuIGluIGEgMS1iYXNlZCBtYW5uZXIgaW4gbGVmdFxuICogdG8gcmlnaHQgYW5kIHRvcCB0byBib3R0b20gb3JkZXIsIGkuZS4gdGhlIHRvcC1sZWZ0IGNlbGwgaXMgaW5kZXhlZCB3aXRoIDEsXG4gKiB3aGVyZWFzIHRoZSBib3R0b20tcmlnaHQgY2VsbCBpcyBpbmRleGVkIHdpdGggOS4gRXhhbXBsZTogMTIzNC5cbiAqIG51bGwvZW1wdHkgdmFsdWUgYXNzdW1lcyB0aGUgZGV2aWNlIGhhcyBubyBsb2NrIGN1cnJlbnRseSBzZXQuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgb3BlcmF0aW9uIGZhY2VzIGFuIHVuZXhwZWN0ZWQgZXJyb3JcbiAqL1xubG9ja01hbmFnZW1lbnRNZXRob2RzLmNsZWFyTG9ja0NyZWRlbnRpYWwgPSBhc3luYyBmdW5jdGlvbiBjbGVhckxvY2tDcmVkZW50aWFsIChjcmVkZW50aWFsID0gbnVsbCkge1xuICB0cnkge1xuICAgIGNvbnN0IHtzdGRvdXQsIHN0ZGVycn0gPSBhd2FpdCB0aGlzLnNoZWxsKGJ1aWxkQ29tbWFuZCgnY2xlYXInLCBjcmVkZW50aWFsKSwge1xuICAgICAgb3V0cHV0Rm9ybWF0OiB0aGlzLkVYRUNfT1VUUFVUX0ZPUk1BVC5GVUxMXG4gICAgfSk7XG4gICAgaWYgKCFbJ3VzZXIgaGFzIG5vIHBhc3N3b3JkJywgJ0xvY2sgY3JlZGVudGlhbCBjbGVhcmVkJ11cbiAgICAgICAgLnNvbWUoKHgpID0+IF8uaW5jbHVkZXMoc3RkZXJyIHx8IHN0ZG91dCwgeCkpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3Ioc3RkZXJyIHx8IHN0ZG91dCk7XG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgY2xlYXIgZGV2aWNlIGxvY2sgY3JlZGVudGlhbC4gYCArXG4gICAgICBgT3JpZ2luYWwgZXJyb3I6ICR7ZS5zdGRlcnIgfHwgZS5zdGRvdXQgfHwgZS5tZXNzYWdlfWApO1xuICB9XG59O1xuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIHRoZSBkZXZpY2UgaXMgbG9ja2VkIHdpdGggYSBjcmVkZW50aWFsIChlaXRoZXIgcGluIG9yIGEgcGFzc3dvcmRcbiAqIG9yIGEgcGF0dGVybikuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IGB0cnVlYCBpZiB0aGUgZGV2aWNlIGlzIGxvY2tlZFxuICogQHRocm93cyB7RXJyb3J9IElmIG9wZXJhdGlvbiBmYWNlcyBhbiB1bmV4cGVjdGVkIGVycm9yXG4gKi9cbmxvY2tNYW5hZ2VtZW50TWV0aG9kcy5pc0xvY2tFbmFibGVkID0gYXN5bmMgZnVuY3Rpb24gaXNMb2NrRW5hYmxlZCAoKSB7XG4gIHRyeSB7XG4gICAgY29uc3Qge3N0ZG91dCwgc3RkZXJyfSA9IGF3YWl0IHRoaXMuc2hlbGwoYnVpbGRDb21tYW5kKCdnZXQtZGlzYWJsZWQnKSwge1xuICAgICAgb3V0cHV0Rm9ybWF0OiB0aGlzLkVYRUNfT1VUUFVUX0ZPUk1BVC5GVUxMXG4gICAgfSk7XG4gICAgaWYgKC9cXGJmYWxzZVxcYi8udGVzdChzdGRvdXQpXG4gICAgICAgIHx8IFtDUkVERU5USUFMX0RJRF9OT1RfTUFUQ0hfRVJST1IsIENSRURFTlRJQUxfQ0FOTk9UX0JFX05VTExfT1JfRU1QVFlfRVJST1JdLnNvbWUoXG4gICAgICAgICAgKHgpID0+IF8uaW5jbHVkZXMoc3RkZXJyIHx8IHN0ZG91dCwgeCkpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKC9cXGJ0cnVlXFxiLy50ZXN0KHN0ZG91dCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKHN0ZGVyciB8fCBzdGRvdXQpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgY2hlY2sgaWYgZGV2aWNlIGxvY2sgaXMgZW5hYmxlZC4gT3JpZ2luYWwgZXJyb3I6ICR7ZS5tZXNzYWdlfWApO1xuICB9XG59O1xuXG4vKipcbiAqIFNldHMgdGhlIGRldmljZSBsb2NrLlxuICpcbiAqIEBwYXJhbSB7IXN0cmluZ30gY3JlZGVudGlhbFR5cGUgT25lIG9mOiBwYXNzd29yZCwgcGluLCBwYXR0ZXJuLlxuICogQHBhcmFtIHshc3RyaW5nfSBjcmVkZW50aWFsIEEgbm9uLWVtcHR5IGNyZWRlbnRpYWwgdmFsdWUgdG8gYmUgc2V0LlxuICogTWFrZSBzdXJlIHlvdXIgbmV3IGNyZWRlbnRpYWwgbWF0Y2hlcyB0byB0aGUgYWN0dWFsIHN5c3RlbSBzZWN1cml0eSByZXF1aXJlbWVudHMsXG4gKiBlLmcuIGEgbWluaW11bSBwYXNzd29yZCBsZW5ndGguIEEgcGF0dGVybiBpcyBzcGVjaWZpZWQgYnkgYSBub24tc2VwYXJhdGVkIGxpc3RcbiAqIG9mIG51bWJlcnMgdGhhdCBpbmRleCB0aGUgY2VsbCBvbiB0aGUgcGF0dGVybiBpbiBhIDEtYmFzZWQgbWFubmVyIGluIGxlZnRcbiAqIHRvIHJpZ2h0IGFuZCB0b3AgdG8gYm90dG9tIG9yZGVyLCBpLmUuIHRoZSB0b3AtbGVmdCBjZWxsIGlzIGluZGV4ZWQgd2l0aCAxLFxuICogd2hlcmVhcyB0aGUgYm90dG9tLXJpZ2h0IGNlbGwgaXMgaW5kZXhlZCB3aXRoIDkuIEV4YW1wbGU6IDEyMzQuXG4gKiBAcGFyYW0gez9zdHJpbmd9IG9sZENyZWRlbnRpYWwgW251bGxdIEFuIG9sZCBjcmVkZW50aWFsIHN0cmluZy5cbiAqIEl0IGlzIG9ubHkgcmVxdWlyZWQgdG8gYmUgc2V0IGluIGNhc2UgeW91IG5lZWQgdG8gY2hhbmdlIHRoZSBjdXJyZW50XG4gKiBjcmVkZW50aWFsIHJhdGhlciB0aGFuIHRvIHNldCBhIG5ldyBvbmUuIFNldHRpbmcgaXQgdG8gYSB3cm9uZyB2YWx1ZSB3aWxsXG4gKiBtYWtlIHRoaXMgbWV0aG9kIHRvIGZhaWwgYW5kIHRocm93IGFuIGV4Y2VwdGlvbi5cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGVyZSB3YXMgYSBmYWlsdXJlIHdoaWxlIHZlcmlmeWluZyBpbnB1dCBhcmd1bWVudHMgb3Igc2V0dGluZ1xuICogdGhlIGNyZWRlbnRpYWxcbiAqL1xubG9ja01hbmFnZW1lbnRNZXRob2RzLnNldExvY2tDcmVkZW50aWFsID0gYXN5bmMgZnVuY3Rpb24gc2V0TG9ja0NyZWRlbnRpYWwgKFxuICBjcmVkZW50aWFsVHlwZSwgY3JlZGVudGlhbCwgb2xkQ3JlZGVudGlhbCA9IG51bGwpIHtcbiAgaWYgKCFTVVBQT1JURURfTE9DS19DUkVERU5USUFMX1RZUEVTLmluY2x1ZGVzKGNyZWRlbnRpYWxUeXBlKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgRGV2aWNlIGxvY2sgY3JlZGVudGlhbCB0eXBlICcke2NyZWRlbnRpYWxUeXBlfScgaXMgdW5rbm93bi4gYCArXG4gICAgICBgT25seSB0aGUgZm9sbG93aW5nIGNyZWRlbnRpYWwgdHlwZXMgYXJlIHN1cHBvcnRlZDogJHtTVVBQT1JURURfTE9DS19DUkVERU5USUFMX1RZUEVTfWApO1xuICB9XG4gIGlmIChfLmlzRW1wdHkoY3JlZGVudGlhbCkgJiYgIV8uaXNJbnRlZ2VyKGNyZWRlbnRpYWwpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdEZXZpY2UgbG9jayBjcmVkZW50aWFsIGNhbm5vdCBiZSBlbXB0eScpO1xuICB9XG4gIGNvbnN0IGNtZCA9IGJ1aWxkQ29tbWFuZChgc2V0LSR7Y3JlZGVudGlhbFR5cGV9YCwgb2xkQ3JlZGVudGlhbCwgY3JlZGVudGlhbCk7XG4gIHRyeSB7XG4gICAgY29uc3Qge3N0ZG91dCwgc3RkZXJyfSA9IGF3YWl0IHRoaXMuc2hlbGwoY21kLCB7XG4gICAgICBvdXRwdXRGb3JtYXQ6IHRoaXMuRVhFQ19PVVRQVVRfRk9STUFULkZVTExcbiAgICB9KTtcbiAgICBpZiAoIV8uaW5jbHVkZXMoc3Rkb3V0LCAnc2V0IHRvJykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihzdGRlcnIgfHwgc3Rkb3V0KTtcbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFNldHRpbmcgb2YgZGV2aWNlIGxvY2sgJHtjcmVkZW50aWFsVHlwZX0gY3JlZGVudGlhbCBmYWlsZWQuIGAgK1xuICAgICAgYE9yaWdpbmFsIGVycm9yOiAke2Uuc3RkZXJyIHx8IGUuc3Rkb3V0IHx8IGUubWVzc2FnZX1gKTtcbiAgfVxufTtcblxuLyoqXG4gKiBSZXRyaWV2ZSB0aGUgc2NyZWVuIGxvY2sgc3RhdGUgb2YgdGhlIGRldmljZSB1bmRlciB0ZXN0LlxuICpcbiAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgdGhlIGRldmljZSBpcyBsb2NrZWQuXG4gKi9cbmxvY2tNYW5hZ2VtZW50TWV0aG9kcy5pc1NjcmVlbkxvY2tlZCA9IGFzeW5jIGZ1bmN0aW9uIGlzU2NyZWVuTG9ja2VkICgpIHtcbiAgY29uc3Qgc3Rkb3V0ID0gYXdhaXQgdGhpcy5zaGVsbChbJ2R1bXBzeXMnLCAnd2luZG93J10pO1xuICBpZiAocHJvY2Vzcy5lbnYuQVBQSVVNX0xPR19EVU1QU1lTKSB7XG4gICAgLy8gb3B0aW9uYWwgZGVidWdnaW5nXG4gICAgLy8gaWYgdGhlIG1ldGhvZCBpcyBub3Qgd29ya2luZywgdHVybiBpdCBvbiBhbmQgc2VuZCB1cyB0aGUgb3V0cHV0XG4gICAgY29uc3QgZHVtcHN5c0ZpbGUgPSBwYXRoLnJlc29sdmUocHJvY2Vzcy5jd2QoKSwgJ2R1bXBzeXMubG9nJyk7XG4gICAgbG9nLmRlYnVnKGBXcml0aW5nIGR1bXBzeXMgb3V0cHV0IHRvICR7ZHVtcHN5c0ZpbGV9YCk7XG4gICAgYXdhaXQgZnMud3JpdGVGaWxlKGR1bXBzeXNGaWxlLCBzdGRvdXQpO1xuICB9XG4gIHJldHVybiBpc1Nob3dpbmdMb2Nrc2NyZWVuKHN0ZG91dCkgfHwgaXNDdXJyZW50Rm9jdXNPbktleWd1YXJkKHN0ZG91dCkgfHwgIWlzU2NyZWVuT25GdWxseShzdGRvdXQpO1xufTtcblxuLyoqXG4gKiBEaXNtaXNzZXMga2V5Z3VhcmQgb3ZlcmxheS5cbiAqL1xubG9ja01hbmFnZW1lbnRNZXRob2RzLmRpc21pc3NLZXlndWFyZCA9IGFzeW5jIGZ1bmN0aW9uIGRpc21pc3NLZXlndWFyZCAoKSB7XG4gIGxvZy5pbmZvKCdXYWtpbmcgdXAgdGhlIGRldmljZSB0byBkaXNtaXNzIHRoZSBrZXlndWFyZCcpO1xuICAvLyBTY3JlZW4gb2ZmIG9uY2UgdG8gZm9yY2UgcHJlLWlucHV0dGVkIHRleHQgZmllbGQgY2xlYW4gYWZ0ZXIgd2FrZS11cFxuICAvLyBKdXN0IHNjcmVlbiBvbiBpZiB0aGUgc2NyZWVuIGRlZmF1bHRzIG9mZlxuICBhd2FpdCB0aGlzLmN5Y2xlV2FrZVVwKCk7XG5cbiAgaWYgKGF3YWl0IHRoaXMuZ2V0QXBpTGV2ZWwoKSA+IDIxKSB7XG4gICAgYXdhaXQgdGhpcy5zaGVsbChbJ3dtJywgJ2Rpc21pc3Mta2V5Z3VhcmQnXSk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3Qgc3Rkb3V0ID0gYXdhaXQgdGhpcy5zaGVsbChbJ2R1bXBzeXMnLCAnd2luZG93JywgJ3dpbmRvd3MnXSk7XG4gIGlmICghaXNDdXJyZW50Rm9jdXNPbktleWd1YXJkKHN0ZG91dCkpIHtcbiAgICBsb2cuZGVidWcoJ1RoZSBrZXlndWFyZCBzZWVtcyB0byBiZSBpbmFjdGl2ZScpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGxvZy5kZWJ1ZygnU3dpcGluZyB1cCB0byBkaXNtaXNzIHRoZSBrZXlndWFyZCcpO1xuICBpZiAoYXdhaXQgdGhpcy5oaWRlS2V5Ym9hcmQoKSkge1xuICAgIGF3YWl0IEIuZGVsYXkoSElERV9LRVlCT0FSRF9XQUlUX1RJTUUpO1xuICB9XG4gIGxvZy5kZWJ1ZygnRGlzbWlzc2luZyBub3RpZmljYXRpb25zIGZyb20gdGhlIHVubG9jayB2aWV3Jyk7XG4gIGF3YWl0IHRoaXMuc2hlbGwoWydzZXJ2aWNlJywgJ2NhbGwnLCAnbm90aWZpY2F0aW9uJywgJzEnXSk7XG4gIGF3YWl0IHRoaXMuYmFjaygpO1xuICBhd2FpdCBzd2lwZVVwKHRoaXMpO1xufTtcblxuLyoqXG4gKiBQcmVzc2VzIHRoZSBjb3JyZXNwb25kaW5nIGtleSBjb21iaW5hdGlvbiB0byBtYWtlIHN1cmUgdGhlIGRldmljZSdzIHNjcmVlblxuICogaXMgbm90IHR1cm5lZCBvZmYgYW5kIGlzIGxvY2tlZCBpZiB0aGUgbGF0dGVyIGlzIGVuYWJsZWQuXG4gKi9cbmxvY2tNYW5hZ2VtZW50TWV0aG9kcy5jeWNsZVdha2VVcCA9IGFzeW5jIGZ1bmN0aW9uIGN5Y2xlV2FrZVVwICgpIHtcbiAgYXdhaXQgdGhpcy5rZXlldmVudChLRVlDT0RFX1BPV0VSKTtcbiAgYXdhaXQgdGhpcy5rZXlldmVudChLRVlDT0RFX1dBS0VVUCk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBsb2NrTWFuYWdlbWVudE1ldGhvZHM7XG4iXSwiZmlsZSI6ImxpYi90b29scy9sb2NrbWdtdC5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
|
|
224
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi90b29scy9sb2NrbWdtdC5qcyJdLCJuYW1lcyI6WyJsb2NrTWFuYWdlbWVudE1ldGhvZHMiLCJDUkVERU5USUFMX0NBTk5PVF9CRV9OVUxMX09SX0VNUFRZX0VSUk9SIiwiQ1JFREVOVElBTF9ESURfTk9UX01BVENIX0VSUk9SIiwiU1VQUE9SVEVEX0xPQ0tfQ1JFREVOVElBTF9UWVBFUyIsIktFWUNPREVfUE9XRVIiLCJLRVlDT0RFX1dBS0VVUCIsIkhJREVfS0VZQk9BUkRfV0FJVF9USU1FIiwiYnVpbGRDb21tYW5kIiwidmVyYiIsIm9sZENyZWRlbnRpYWwiLCJhcmdzIiwiY21kIiwiXyIsImlzRW1wdHkiLCJwdXNoIiwic3dpcGVVcCIsImFkYiIsIm91dHB1dCIsInNoZWxsIiwiZGltZW5zaW9uc01hdGNoIiwiZXhlYyIsIkVycm9yIiwiZGlzcGxheVdpZHRoIiwicGFyc2VJbnQiLCJkaXNwbGF5SGVpZ2h0IiwieDAiLCJ5MCIsIngxIiwieTEiLCJtYXAiLCJjIiwiTWF0aCIsInRydW5jIiwiaXNMb2NrTWFuYWdlbWVudFN1cHBvcnRlZCIsImlzQm9vbGVhbiIsIl9pc0xvY2tNYW5hZ2VtZW50U3VwcG9ydGVkIiwicGFzc0ZsYWciLCJpZ24iLCJpbmNsdWRlcyIsImxvZyIsImRlYnVnIiwidmVyaWZ5TG9ja0NyZWRlbnRpYWwiLCJjcmVkZW50aWFsIiwic3Rkb3V0Iiwic3RkZXJyIiwib3V0cHV0Rm9ybWF0IiwiRVhFQ19PVVRQVVRfRk9STUFUIiwiRlVMTCIsInNvbWUiLCJ4IiwiZSIsIm1lc3NhZ2UiLCJjbGVhckxvY2tDcmVkZW50aWFsIiwiaXNMb2NrRW5hYmxlZCIsInRlc3QiLCJzZXRMb2NrQ3JlZGVudGlhbCIsImNyZWRlbnRpYWxUeXBlIiwiaXNJbnRlZ2VyIiwiaXNTY3JlZW5Mb2NrZWQiLCJwcm9jZXNzIiwiZW52IiwiQVBQSVVNX0xPR19EVU1QU1lTIiwiZHVtcHN5c0ZpbGUiLCJwYXRoIiwicmVzb2x2ZSIsImN3ZCIsImZzIiwid3JpdGVGaWxlIiwiZGlzbWlzc0tleWd1YXJkIiwiaW5mbyIsImN5Y2xlV2FrZVVwIiwiZ2V0QXBpTGV2ZWwiLCJoaWRlS2V5Ym9hcmQiLCJCIiwiZGVsYXkiLCJiYWNrIiwia2V5ZXZlbnQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0E7O0FBRUEsTUFBTUEscUJBQXFCLEdBQUcsRUFBOUI7QUFFQSxNQUFNQyx3Q0FBd0MsR0FBSSxtQ0FBbEQ7QUFDQSxNQUFNQyw4QkFBOEIsR0FBSSxjQUF4QztBQUNBLE1BQU1DLCtCQUErQixHQUFHLENBQUMsVUFBRCxFQUFhLEtBQWIsRUFBb0IsU0FBcEIsQ0FBeEM7QUFDQSxNQUFNQyxhQUFhLEdBQUcsRUFBdEI7QUFDQSxNQUFNQyxjQUFjLEdBQUcsR0FBdkI7QUFDQSxNQUFNQyx1QkFBdUIsR0FBRyxHQUFoQzs7QUFFQSxTQUFTQyxZQUFULENBQXVCQyxJQUF2QixFQUE2QkMsYUFBYSxHQUFHLElBQTdDLEVBQW1ELEdBQUdDLElBQXRELEVBQTREO0FBQzFELFFBQU1DLEdBQUcsR0FBRyxDQUFDLGNBQUQsRUFBaUJILElBQWpCLENBQVo7O0FBQ0EsTUFBSSxDQUFDSSxnQkFBRUMsT0FBRixDQUFVSixhQUFWLENBQUwsRUFBK0I7QUFDN0JFLElBQUFBLEdBQUcsQ0FBQ0csSUFBSixDQUFTLE9BQVQsRUFBa0JMLGFBQWxCO0FBQ0Q7O0FBQ0QsTUFBSSxDQUFDRyxnQkFBRUMsT0FBRixDQUFVSCxJQUFWLENBQUwsRUFBc0I7QUFDcEJDLElBQUFBLEdBQUcsQ0FBQ0csSUFBSixDQUFTLEdBQUdKLElBQVo7QUFDRDs7QUFDRCxTQUFPQyxHQUFQO0FBQ0Q7O0FBRUQsZUFBZUksT0FBZixDQUF3QkMsR0FBeEIsRUFBNkI7QUFDM0IsUUFBTUMsTUFBTSxHQUFHLE1BQU1ELEdBQUcsQ0FBQ0UsS0FBSixDQUFVLENBQUMsU0FBRCxFQUFZLFFBQVosQ0FBVixDQUFyQjtBQUNBLFFBQU1DLGVBQWUsR0FBRyxtQkFBbUJDLElBQW5CLENBQXdCSCxNQUF4QixDQUF4Qjs7QUFDQSxNQUFJLENBQUNFLGVBQUwsRUFBc0I7QUFDcEIsVUFBTSxJQUFJRSxLQUFKLENBQVUsa0NBQVYsQ0FBTjtBQUNEOztBQUNELFFBQU1DLFlBQVksR0FBR0MsUUFBUSxDQUFDSixlQUFlLENBQUMsQ0FBRCxDQUFoQixFQUFxQixFQUFyQixDQUE3QjtBQUNBLFFBQU1LLGFBQWEsR0FBR0QsUUFBUSxDQUFDSixlQUFlLENBQUMsQ0FBRCxDQUFoQixFQUFxQixFQUFyQixDQUE5QjtBQUNBLFFBQU1NLEVBQUUsR0FBR0gsWUFBWSxHQUFHLENBQTFCO0FBQ0EsUUFBTUksRUFBRSxHQUFHRixhQUFhLEdBQUcsQ0FBaEIsR0FBb0IsQ0FBL0I7QUFDQSxRQUFNRyxFQUFFLEdBQUdGLEVBQVg7QUFDQSxRQUFNRyxFQUFFLEdBQUdKLGFBQWEsR0FBRyxDQUEzQjtBQUNBLFFBQU1SLEdBQUcsQ0FBQ0UsS0FBSixDQUFVLENBQ2QsT0FEYyxFQUNMLGFBREssRUFDVSxPQURWLEVBRWQsR0FBSSxDQUFDTyxFQUFELEVBQUtDLEVBQUwsRUFBU0MsRUFBVCxFQUFhQyxFQUFiLEVBQWlCQyxHQUFqQixDQUFzQkMsQ0FBRCxJQUFPQyxJQUFJLENBQUNDLEtBQUwsQ0FBV0YsQ0FBWCxDQUE1QixDQUZVLENBQVYsQ0FBTjtBQUlEOztBQVFEOUIscUJBQXFCLENBQUNpQyx5QkFBdEIsR0FBa0QsZUFBZUEseUJBQWYsR0FBNEM7QUFDNUYsTUFBSSxDQUFDckIsZ0JBQUVzQixTQUFGLENBQVksS0FBS0MsMEJBQWpCLENBQUwsRUFBbUQ7QUFDakQsVUFBTUMsUUFBUSxHQUFHLFVBQWpCO0FBQ0EsUUFBSW5CLE1BQU0sR0FBRyxFQUFiOztBQUNBLFFBQUk7QUFDRkEsTUFBQUEsTUFBTSxHQUFHLE1BQU0sS0FBS0MsS0FBTCxDQUFXLENBQUUsNkJBQTRCa0IsUUFBUyxFQUF2QyxDQUFYLENBQWY7QUFDRCxLQUZELENBRUUsT0FBT0MsR0FBUCxFQUFZLENBQUU7O0FBQ2hCLFNBQUtGLDBCQUFMLEdBQWtDdkIsZ0JBQUUwQixRQUFGLENBQVdyQixNQUFYLEVBQW1CbUIsUUFBbkIsQ0FBbEM7O0FBQ0FHLG9CQUFJQyxLQUFKLENBQVcsdUNBQUQsR0FDUCxHQUFFLEtBQUtMLDBCQUFMLEdBQWtDLEVBQWxDLEdBQXVDLE1BQU8sV0FEbkQ7QUFFRDs7QUFDRCxTQUFPLEtBQUtBLDBCQUFaO0FBQ0QsQ0FaRDs7QUEwQkFuQyxxQkFBcUIsQ0FBQ3lDLG9CQUF0QixHQUE2QyxlQUFlQSxvQkFBZixDQUFxQ0MsVUFBVSxHQUFHLElBQWxELEVBQXdEO0FBQ25HLE1BQUk7QUFDRixVQUFNO0FBQUNDLE1BQUFBLE1BQUQ7QUFBU0MsTUFBQUE7QUFBVCxRQUFtQixNQUFNLEtBQUsxQixLQUFMLENBQVdYLFlBQVksQ0FBQyxRQUFELEVBQVdtQyxVQUFYLENBQXZCLEVBQStDO0FBQzVFRyxNQUFBQSxZQUFZLEVBQUUsS0FBS0Msa0JBQUwsQ0FBd0JDO0FBRHNDLEtBQS9DLENBQS9COztBQUdBLFFBQUluQyxnQkFBRTBCLFFBQUYsQ0FBV0ssTUFBWCxFQUFtQix1QkFBbkIsQ0FBSixFQUFpRDtBQUMvQyxhQUFPLElBQVA7QUFDRDs7QUFDRCxRQUFJLENBQUUsY0FBRixFQUFpQjFDLHdDQUFqQixFQUNDK0MsSUFERCxDQUNPQyxDQUFELElBQU9yQyxnQkFBRTBCLFFBQUYsQ0FBV00sTUFBTSxJQUFJRCxNQUFyQixFQUE2Qk0sQ0FBN0IsQ0FEYixDQUFKLEVBQ21EO0FBQ2pELGFBQU8sS0FBUDtBQUNEOztBQUNELFVBQU0sSUFBSTVCLEtBQUosQ0FBVXVCLE1BQU0sSUFBSUQsTUFBcEIsQ0FBTjtBQUNELEdBWkQsQ0FZRSxPQUFPTyxDQUFQLEVBQVU7QUFDVixVQUFNLElBQUk3QixLQUFKLENBQVcsOENBQUQsR0FDYixtQkFBa0I2QixDQUFDLENBQUNOLE1BQUYsSUFBWU0sQ0FBQyxDQUFDUCxNQUFkLElBQXdCTyxDQUFDLENBQUNDLE9BQVEsRUFEakQsQ0FBTjtBQUVEO0FBQ0YsQ0FqQkQ7O0FBK0JBbkQscUJBQXFCLENBQUNvRCxtQkFBdEIsR0FBNEMsZUFBZUEsbUJBQWYsQ0FBb0NWLFVBQVUsR0FBRyxJQUFqRCxFQUF1RDtBQUNqRyxNQUFJO0FBQ0YsVUFBTTtBQUFDQyxNQUFBQSxNQUFEO0FBQVNDLE1BQUFBO0FBQVQsUUFBbUIsTUFBTSxLQUFLMUIsS0FBTCxDQUFXWCxZQUFZLENBQUMsT0FBRCxFQUFVbUMsVUFBVixDQUF2QixFQUE4QztBQUMzRUcsTUFBQUEsWUFBWSxFQUFFLEtBQUtDLGtCQUFMLENBQXdCQztBQURxQyxLQUE5QyxDQUEvQjs7QUFHQSxRQUFJLENBQUMsQ0FBQyxzQkFBRCxFQUF5Qix5QkFBekIsRUFDQUMsSUFEQSxDQUNNQyxDQUFELElBQU9yQyxnQkFBRTBCLFFBQUYsQ0FBV00sTUFBTSxJQUFJRCxNQUFyQixFQUE2Qk0sQ0FBN0IsQ0FEWixDQUFMLEVBQ21EO0FBQ2pELFlBQU0sSUFBSTVCLEtBQUosQ0FBVXVCLE1BQU0sSUFBSUQsTUFBcEIsQ0FBTjtBQUNEO0FBQ0YsR0FSRCxDQVFFLE9BQU9PLENBQVAsRUFBVTtBQUNWLFVBQU0sSUFBSTdCLEtBQUosQ0FBVyx1Q0FBRCxHQUNiLG1CQUFrQjZCLENBQUMsQ0FBQ04sTUFBRixJQUFZTSxDQUFDLENBQUNQLE1BQWQsSUFBd0JPLENBQUMsQ0FBQ0MsT0FBUSxFQURqRCxDQUFOO0FBRUQ7QUFDRixDQWJEOztBQXNCQW5ELHFCQUFxQixDQUFDcUQsYUFBdEIsR0FBc0MsZUFBZUEsYUFBZixHQUFnQztBQUNwRSxNQUFJO0FBQ0YsVUFBTTtBQUFDVixNQUFBQSxNQUFEO0FBQVNDLE1BQUFBO0FBQVQsUUFBbUIsTUFBTSxLQUFLMUIsS0FBTCxDQUFXWCxZQUFZLENBQUMsY0FBRCxDQUF2QixFQUF5QztBQUN0RXNDLE1BQUFBLFlBQVksRUFBRSxLQUFLQyxrQkFBTCxDQUF3QkM7QUFEZ0MsS0FBekMsQ0FBL0I7O0FBR0EsUUFBSSxZQUFZTyxJQUFaLENBQWlCWCxNQUFqQixLQUNHLENBQUN6Qyw4QkFBRCxFQUFpQ0Qsd0NBQWpDLEVBQTJFK0MsSUFBM0UsQ0FDQUMsQ0FBRCxJQUFPckMsZ0JBQUUwQixRQUFGLENBQVdNLE1BQU0sSUFBSUQsTUFBckIsRUFBNkJNLENBQTdCLENBRE4sQ0FEUCxFQUUrQztBQUM3QyxhQUFPLElBQVA7QUFDRDs7QUFDRCxRQUFJLFdBQVdLLElBQVgsQ0FBZ0JYLE1BQWhCLENBQUosRUFBNkI7QUFDM0IsYUFBTyxLQUFQO0FBQ0Q7O0FBQ0QsVUFBTSxJQUFJdEIsS0FBSixDQUFVdUIsTUFBTSxJQUFJRCxNQUFwQixDQUFOO0FBQ0QsR0FiRCxDQWFFLE9BQU9PLENBQVAsRUFBVTtBQUNWLFVBQU0sSUFBSTdCLEtBQUosQ0FBVywyREFBMEQ2QixDQUFDLENBQUNDLE9BQVEsRUFBL0UsQ0FBTjtBQUNEO0FBQ0YsQ0FqQkQ7O0FBb0NBbkQscUJBQXFCLENBQUN1RCxpQkFBdEIsR0FBMEMsZUFBZUEsaUJBQWYsQ0FDeENDLGNBRHdDLEVBQ3hCZCxVQUR3QixFQUNaakMsYUFBYSxHQUFHLElBREosRUFDVTtBQUNsRCxNQUFJLENBQUNOLCtCQUErQixDQUFDbUMsUUFBaEMsQ0FBeUNrQixjQUF6QyxDQUFMLEVBQStEO0FBQzdELFVBQU0sSUFBSW5DLEtBQUosQ0FBVyxnQ0FBK0JtQyxjQUFlLGdCQUEvQyxHQUNiLHNEQUFxRHJELCtCQUFnQyxFQURsRixDQUFOO0FBRUQ7O0FBQ0QsTUFBSVMsZ0JBQUVDLE9BQUYsQ0FBVTZCLFVBQVYsS0FBeUIsQ0FBQzlCLGdCQUFFNkMsU0FBRixDQUFZZixVQUFaLENBQTlCLEVBQXVEO0FBQ3JELFVBQU0sSUFBSXJCLEtBQUosQ0FBVSx3Q0FBVixDQUFOO0FBQ0Q7O0FBQ0QsUUFBTVYsR0FBRyxHQUFHSixZQUFZLENBQUUsT0FBTWlELGNBQWUsRUFBdkIsRUFBMEIvQyxhQUExQixFQUF5Q2lDLFVBQXpDLENBQXhCOztBQUNBLE1BQUk7QUFDRixVQUFNO0FBQUNDLE1BQUFBLE1BQUQ7QUFBU0MsTUFBQUE7QUFBVCxRQUFtQixNQUFNLEtBQUsxQixLQUFMLENBQVdQLEdBQVgsRUFBZ0I7QUFDN0NrQyxNQUFBQSxZQUFZLEVBQUUsS0FBS0Msa0JBQUwsQ0FBd0JDO0FBRE8sS0FBaEIsQ0FBL0I7O0FBR0EsUUFBSSxDQUFDbkMsZ0JBQUUwQixRQUFGLENBQVdLLE1BQVgsRUFBbUIsUUFBbkIsQ0FBTCxFQUFtQztBQUNqQyxZQUFNLElBQUl0QixLQUFKLENBQVV1QixNQUFNLElBQUlELE1BQXBCLENBQU47QUFDRDtBQUNGLEdBUEQsQ0FPRSxPQUFPTyxDQUFQLEVBQVU7QUFDVixVQUFNLElBQUk3QixLQUFKLENBQVcsMEJBQXlCbUMsY0FBZSxzQkFBekMsR0FDYixtQkFBa0JOLENBQUMsQ0FBQ04sTUFBRixJQUFZTSxDQUFDLENBQUNQLE1BQWQsSUFBd0JPLENBQUMsQ0FBQ0MsT0FBUSxFQURqRCxDQUFOO0FBRUQ7QUFDRixDQXJCRDs7QUE0QkFuRCxxQkFBcUIsQ0FBQzBELGNBQXRCLEdBQXVDLGVBQWVBLGNBQWYsR0FBaUM7QUFDdEUsUUFBTWYsTUFBTSxHQUFHLE1BQU0sS0FBS3pCLEtBQUwsQ0FBVyxDQUFDLFNBQUQsRUFBWSxRQUFaLENBQVgsQ0FBckI7O0FBQ0EsTUFBSXlDLE9BQU8sQ0FBQ0MsR0FBUixDQUFZQyxrQkFBaEIsRUFBb0M7QUFHbEMsVUFBTUMsV0FBVyxHQUFHQyxjQUFLQyxPQUFMLENBQWFMLE9BQU8sQ0FBQ00sR0FBUixFQUFiLEVBQTRCLGFBQTVCLENBQXBCOztBQUNBMUIsb0JBQUlDLEtBQUosQ0FBVyw2QkFBNEJzQixXQUFZLEVBQW5EOztBQUNBLFVBQU1JLFlBQUdDLFNBQUgsQ0FBYUwsV0FBYixFQUEwQm5CLE1BQTFCLENBQU47QUFDRDs7QUFDRCxTQUFPLGtDQUFvQkEsTUFBcEIsS0FBK0IsdUNBQXlCQSxNQUF6QixDQUEvQixJQUFtRSxDQUFDLDhCQUFnQkEsTUFBaEIsQ0FBM0U7QUFDRCxDQVZEOztBQWVBM0MscUJBQXFCLENBQUNvRSxlQUF0QixHQUF3QyxlQUFlQSxlQUFmLEdBQWtDO0FBQ3hFN0Isa0JBQUk4QixJQUFKLENBQVMsOENBQVQ7O0FBR0EsUUFBTSxLQUFLQyxXQUFMLEVBQU47O0FBRUEsTUFBSSxPQUFNLEtBQUtDLFdBQUwsRUFBTixJQUEyQixFQUEvQixFQUFtQztBQUNqQyxVQUFNLEtBQUtyRCxLQUFMLENBQVcsQ0FBQyxJQUFELEVBQU8sa0JBQVAsQ0FBWCxDQUFOO0FBQ0E7QUFDRDs7QUFFRCxRQUFNeUIsTUFBTSxHQUFHLE1BQU0sS0FBS3pCLEtBQUwsQ0FBVyxDQUFDLFNBQUQsRUFBWSxRQUFaLEVBQXNCLFNBQXRCLENBQVgsQ0FBckI7O0FBQ0EsTUFBSSxDQUFDLHVDQUF5QnlCLE1BQXpCLENBQUwsRUFBdUM7QUFDckNKLG9CQUFJQyxLQUFKLENBQVUsbUNBQVY7O0FBQ0E7QUFDRDs7QUFFREQsa0JBQUlDLEtBQUosQ0FBVSxvQ0FBVjs7QUFDQSxNQUFJLE1BQU0sS0FBS2dDLFlBQUwsRUFBVixFQUErQjtBQUM3QixVQUFNQyxrQkFBRUMsS0FBRixDQUFRcEUsdUJBQVIsQ0FBTjtBQUNEOztBQUNEaUMsa0JBQUlDLEtBQUosQ0FBVSwrQ0FBVjs7QUFDQSxRQUFNLEtBQUt0QixLQUFMLENBQVcsQ0FBQyxTQUFELEVBQVksTUFBWixFQUFvQixjQUFwQixFQUFvQyxHQUFwQyxDQUFYLENBQU47QUFDQSxRQUFNLEtBQUt5RCxJQUFMLEVBQU47QUFDQSxRQUFNNUQsT0FBTyxDQUFDLElBQUQsQ0FBYjtBQUNELENBekJEOztBQStCQWYscUJBQXFCLENBQUNzRSxXQUF0QixHQUFvQyxlQUFlQSxXQUFmLEdBQThCO0FBQ2hFLFFBQU0sS0FBS00sUUFBTCxDQUFjeEUsYUFBZCxDQUFOO0FBQ0EsUUFBTSxLQUFLd0UsUUFBTCxDQUFjdkUsY0FBZCxDQUFOO0FBQ0QsQ0FIRDs7ZUFLZUwscUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbG9nIGZyb20gJy4uL2xvZ2dlci5qcyc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBmcyB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQge1xuICBpc1Nob3dpbmdMb2Nrc2NyZWVuLCBpc0N1cnJlbnRGb2N1c09uS2V5Z3VhcmQsIGlzU2NyZWVuT25GdWxseSxcbn0gZnJvbSAnLi4vaGVscGVycy5qcyc7XG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5cbmNvbnN0IGxvY2tNYW5hZ2VtZW50TWV0aG9kcyA9IHt9O1xuXG5jb25zdCBDUkVERU5USUFMX0NBTk5PVF9CRV9OVUxMX09SX0VNUFRZX0VSUk9SID0gYENyZWRlbnRpYWwgY2FuJ3QgYmUgbnVsbCBvciBlbXB0eWA7XG5jb25zdCBDUkVERU5USUFMX0RJRF9OT1RfTUFUQ0hfRVJST1IgPSBgZGlkbid0IG1hdGNoYDtcbmNvbnN0IFNVUFBPUlRFRF9MT0NLX0NSRURFTlRJQUxfVFlQRVMgPSBbJ3Bhc3N3b3JkJywgJ3BpbicsICdwYXR0ZXJuJ107XG5jb25zdCBLRVlDT0RFX1BPV0VSID0gMjY7XG5jb25zdCBLRVlDT0RFX1dBS0VVUCA9IDIyNDsgLy8gd29ya3Mgb3ZlciBBUEkgTGV2ZWwgMjBcbmNvbnN0IEhJREVfS0VZQk9BUkRfV0FJVF9USU1FID0gMTAwO1xuXG5mdW5jdGlvbiBidWlsZENvbW1hbmQgKHZlcmIsIG9sZENyZWRlbnRpYWwgPSBudWxsLCAuLi5hcmdzKSB7XG4gIGNvbnN0IGNtZCA9IFsnbG9ja3NldHRpbmdzJywgdmVyYl07XG4gIGlmICghXy5pc0VtcHR5KG9sZENyZWRlbnRpYWwpKSB7XG4gICAgY21kLnB1c2goJy0tb2xkJywgb2xkQ3JlZGVudGlhbCk7XG4gIH1cbiAgaWYgKCFfLmlzRW1wdHkoYXJncykpIHtcbiAgICBjbWQucHVzaCguLi5hcmdzKTtcbiAgfVxuICByZXR1cm4gY21kO1xufVxuXG5hc3luYyBmdW5jdGlvbiBzd2lwZVVwIChhZGIpIHtcbiAgY29uc3Qgb3V0cHV0ID0gYXdhaXQgYWRiLnNoZWxsKFsnZHVtcHN5cycsICd3aW5kb3cnXSk7XG4gIGNvbnN0IGRpbWVuc2lvbnNNYXRjaCA9IC9pbml0PShcXGQrKXgoXFxkKykvLmV4ZWMob3V0cHV0KTtcbiAgaWYgKCFkaW1lbnNpb25zTWF0Y2gpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCByZXRyaWV2ZSB0aGUgZGlzcGxheSBzaXplJyk7XG4gIH1cbiAgY29uc3QgZGlzcGxheVdpZHRoID0gcGFyc2VJbnQoZGltZW5zaW9uc01hdGNoWzFdLCAxMCk7XG4gIGNvbnN0IGRpc3BsYXlIZWlnaHQgPSBwYXJzZUludChkaW1lbnNpb25zTWF0Y2hbMl0sIDEwKTtcbiAgY29uc3QgeDAgPSBkaXNwbGF5V2lkdGggLyAyO1xuICBjb25zdCB5MCA9IGRpc3BsYXlIZWlnaHQgLyA1ICogNDtcbiAgY29uc3QgeDEgPSB4MDtcbiAgY29uc3QgeTEgPSBkaXNwbGF5SGVpZ2h0IC8gNTtcbiAgYXdhaXQgYWRiLnNoZWxsKFtcbiAgICAnaW5wdXQnLCAndG91Y2hzY3JlZW4nLCAnc3dpcGUnLFxuICAgIC4uLihbeDAsIHkwLCB4MSwgeTFdLm1hcCgoYykgPT4gTWF0aC50cnVuYyhjKSkpXG4gIF0pO1xufVxuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgdGhlIGRldmljZSBzdXBwb3J0cyBsb2NrIHNldHRpbmdzIG1hbmFnZW1lbnQgd2l0aCBgbG9ja3NldHRpbmdzYFxuICogY29tbWFuZCBsaW5lIHRvb2wuIFRoaXMgdG9vbCBoYXMgYmVlbiBhZGRlZCB0byBBbmRyb2lkIHRvb2xzZXQgc2luY2UgIEFQSSAyNyBPcmVvXG4gKlxuICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgbWFuYWdlbWVudCBpcyBzdXBwb3J0ZWQuIFRoZSByZXN1bHQgaXMgY2FjaGVkIHBlciBBREIgaW5zdGFuY2VcbiAqL1xubG9ja01hbmFnZW1lbnRNZXRob2RzLmlzTG9ja01hbmFnZW1lbnRTdXBwb3J0ZWQgPSBhc3luYyBmdW5jdGlvbiBpc0xvY2tNYW5hZ2VtZW50U3VwcG9ydGVkICgpIHtcbiAgaWYgKCFfLmlzQm9vbGVhbih0aGlzLl9pc0xvY2tNYW5hZ2VtZW50U3VwcG9ydGVkKSkge1xuICAgIGNvbnN0IHBhc3NGbGFnID0gJ19fUEFTU19fJztcbiAgICBsZXQgb3V0cHV0ID0gJyc7XG4gICAgdHJ5IHtcbiAgICAgIG91dHB1dCA9IGF3YWl0IHRoaXMuc2hlbGwoW2Bsb2Nrc2V0dGluZ3MgaGVscCAmJiBlY2hvICR7cGFzc0ZsYWd9YF0pO1xuICAgIH0gY2F0Y2ggKGlnbikge31cbiAgICB0aGlzLl9pc0xvY2tNYW5hZ2VtZW50U3VwcG9ydGVkID0gXy5pbmNsdWRlcyhvdXRwdXQsIHBhc3NGbGFnKTtcbiAgICBsb2cuZGVidWcoYEV4dGVuZGVkIGxvY2sgc2V0dGluZ3MgbWFuYWdlbWVudCBpcyBgICtcbiAgICAgIGAke3RoaXMuX2lzTG9ja01hbmFnZW1lbnRTdXBwb3J0ZWQgPyAnJyA6ICdub3QgJ31zdXBwb3J0ZWRgKTtcbiAgfVxuICByZXR1cm4gdGhpcy5faXNMb2NrTWFuYWdlbWVudFN1cHBvcnRlZDtcbn07XG5cbi8qKlxuICogQ2hlY2sgd2hldGhlciB0aGUgZ2l2ZW4gY3JlZGVudGlhbCBpcyBtYXRjaGVzIHRvIHRoZSBjdXJyZW50bHkgc2V0IG9uZS5cbiAqXG4gKiBAcGFyYW0gez9zdHJpbmd9IGNyZWRlbnRpYWwgW251bGxdIFRoZSBjcmVkZW50aWFsIHZhbHVlLiBJdCBjb3VsZCBiZSBlaXRoZXJcbiAqIHBpbiwgcGFzc3dvcmQgb3IgYSBwYXR0ZXJuLiBBIHBhdHRlcm4gaXMgc3BlY2lmaWVkIGJ5IGEgbm9uLXNlcGFyYXRlZCBsaXN0XG4gKiBvZiBudW1iZXJzIHRoYXQgaW5kZXggdGhlIGNlbGwgb24gdGhlIHBhdHRlcm4gaW4gYSAxLWJhc2VkIG1hbm5lciBpbiBsZWZ0XG4gKiB0byByaWdodCBhbmQgdG9wIHRvIGJvdHRvbSBvcmRlciwgaS5lLiB0aGUgdG9wLWxlZnQgY2VsbCBpcyBpbmRleGVkIHdpdGggMSxcbiAqIHdoZXJlYXMgdGhlIGJvdHRvbS1yaWdodCBjZWxsIGlzIGluZGV4ZWQgd2l0aCA5LiBFeGFtcGxlOiAxMjM0LlxuICogbnVsbC9lbXB0eSB2YWx1ZSBhc3N1bWVzIHRoZSBkZXZpY2UgaGFzIG5vIGxvY2sgY3VycmVudGx5IHNldC5cbiAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgdGhlIGdpdmVuIGNyZWRlbnRpYWwgbWF0Y2hlcyB0byB0aGUgZGV2aWNlJ3Mgb25lXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIHZlcmlmaWNhdGlvbiBmYWNlcyBhbiB1bmV4cGVjdGVkIGVycm9yXG4gKi9cbmxvY2tNYW5hZ2VtZW50TWV0aG9kcy52ZXJpZnlMb2NrQ3JlZGVudGlhbCA9IGFzeW5jIGZ1bmN0aW9uIHZlcmlmeUxvY2tDcmVkZW50aWFsIChjcmVkZW50aWFsID0gbnVsbCkge1xuICB0cnkge1xuICAgIGNvbnN0IHtzdGRvdXQsIHN0ZGVycn0gPSBhd2FpdCB0aGlzLnNoZWxsKGJ1aWxkQ29tbWFuZCgndmVyaWZ5JywgY3JlZGVudGlhbCksIHtcbiAgICAgIG91dHB1dEZvcm1hdDogdGhpcy5FWEVDX09VVFBVVF9GT1JNQVQuRlVMTFxuICAgIH0pO1xuICAgIGlmIChfLmluY2x1ZGVzKHN0ZG91dCwgJ3ZlcmlmaWVkIHN1Y2Nlc3NmdWxseScpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKFtgZGlkbid0IG1hdGNoYCwgQ1JFREVOVElBTF9DQU5OT1RfQkVfTlVMTF9PUl9FTVBUWV9FUlJPUl1cbiAgICAgICAgLnNvbWUoKHgpID0+IF8uaW5jbHVkZXMoc3RkZXJyIHx8IHN0ZG91dCwgeCkpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihzdGRlcnIgfHwgc3Rkb3V0KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgRGV2aWNlIGxvY2sgY3JlZGVudGlhbCB2ZXJpZmljYXRpb24gZmFpbGVkLiBgICtcbiAgICAgIGBPcmlnaW5hbCBlcnJvcjogJHtlLnN0ZGVyciB8fCBlLnN0ZG91dCB8fCBlLm1lc3NhZ2V9YCk7XG4gIH1cbn07XG5cbi8qKlxuICogQ2xlYXJzIGN1cnJlbnQgbG9jayBjcmVkZW50aWFscy4gVXN1YWxseSBpdCB0YWtlcyBzZXZlcmFsIHNlY29uZHMgZm9yIGEgZGV2aWNlIHRvXG4gKiBzeW5jIHRoZSBjcmVkZW50aWFsIHN0YXRlIGFmdGVyIHRoaXMgbWV0aG9kIHJldHVybnMuXG4gKlxuICogQHBhcmFtIHs/c3RyaW5nfSBjcmVkZW50aWFsIFtudWxsXSBUaGUgY3JlZGVudGlhbCB2YWx1ZS4gSXQgY291bGQgYmUgZWl0aGVyXG4gKiBwaW4sIHBhc3N3b3JkIG9yIGEgcGF0dGVybi4gQSBwYXR0ZXJuIGlzIHNwZWNpZmllZCBieSBhIG5vbi1zZXBhcmF0ZWQgbGlzdFxuICogb2YgbnVtYmVycyB0aGF0IGluZGV4IHRoZSBjZWxsIG9uIHRoZSBwYXR0ZXJuIGluIGEgMS1iYXNlZCBtYW5uZXIgaW4gbGVmdFxuICogdG8gcmlnaHQgYW5kIHRvcCB0byBib3R0b20gb3JkZXIsIGkuZS4gdGhlIHRvcC1sZWZ0IGNlbGwgaXMgaW5kZXhlZCB3aXRoIDEsXG4gKiB3aGVyZWFzIHRoZSBib3R0b20tcmlnaHQgY2VsbCBpcyBpbmRleGVkIHdpdGggOS4gRXhhbXBsZTogMTIzNC5cbiAqIG51bGwvZW1wdHkgdmFsdWUgYXNzdW1lcyB0aGUgZGV2aWNlIGhhcyBubyBsb2NrIGN1cnJlbnRseSBzZXQuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgb3BlcmF0aW9uIGZhY2VzIGFuIHVuZXhwZWN0ZWQgZXJyb3JcbiAqL1xubG9ja01hbmFnZW1lbnRNZXRob2RzLmNsZWFyTG9ja0NyZWRlbnRpYWwgPSBhc3luYyBmdW5jdGlvbiBjbGVhckxvY2tDcmVkZW50aWFsIChjcmVkZW50aWFsID0gbnVsbCkge1xuICB0cnkge1xuICAgIGNvbnN0IHtzdGRvdXQsIHN0ZGVycn0gPSBhd2FpdCB0aGlzLnNoZWxsKGJ1aWxkQ29tbWFuZCgnY2xlYXInLCBjcmVkZW50aWFsKSwge1xuICAgICAgb3V0cHV0Rm9ybWF0OiB0aGlzLkVYRUNfT1VUUFVUX0ZPUk1BVC5GVUxMXG4gICAgfSk7XG4gICAgaWYgKCFbJ3VzZXIgaGFzIG5vIHBhc3N3b3JkJywgJ0xvY2sgY3JlZGVudGlhbCBjbGVhcmVkJ11cbiAgICAgICAgLnNvbWUoKHgpID0+IF8uaW5jbHVkZXMoc3RkZXJyIHx8IHN0ZG91dCwgeCkpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3Ioc3RkZXJyIHx8IHN0ZG91dCk7XG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgY2xlYXIgZGV2aWNlIGxvY2sgY3JlZGVudGlhbC4gYCArXG4gICAgICBgT3JpZ2luYWwgZXJyb3I6ICR7ZS5zdGRlcnIgfHwgZS5zdGRvdXQgfHwgZS5tZXNzYWdlfWApO1xuICB9XG59O1xuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIHRoZSBkZXZpY2UgaXMgbG9ja2VkIHdpdGggYSBjcmVkZW50aWFsIChlaXRoZXIgcGluIG9yIGEgcGFzc3dvcmRcbiAqIG9yIGEgcGF0dGVybikuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IGB0cnVlYCBpZiB0aGUgZGV2aWNlIGlzIGxvY2tlZFxuICogQHRocm93cyB7RXJyb3J9IElmIG9wZXJhdGlvbiBmYWNlcyBhbiB1bmV4cGVjdGVkIGVycm9yXG4gKi9cbmxvY2tNYW5hZ2VtZW50TWV0aG9kcy5pc0xvY2tFbmFibGVkID0gYXN5bmMgZnVuY3Rpb24gaXNMb2NrRW5hYmxlZCAoKSB7XG4gIHRyeSB7XG4gICAgY29uc3Qge3N0ZG91dCwgc3RkZXJyfSA9IGF3YWl0IHRoaXMuc2hlbGwoYnVpbGRDb21tYW5kKCdnZXQtZGlzYWJsZWQnKSwge1xuICAgICAgb3V0cHV0Rm9ybWF0OiB0aGlzLkVYRUNfT1VUUFVUX0ZPUk1BVC5GVUxMXG4gICAgfSk7XG4gICAgaWYgKC9cXGJmYWxzZVxcYi8udGVzdChzdGRvdXQpXG4gICAgICAgIHx8IFtDUkVERU5USUFMX0RJRF9OT1RfTUFUQ0hfRVJST1IsIENSRURFTlRJQUxfQ0FOTk9UX0JFX05VTExfT1JfRU1QVFlfRVJST1JdLnNvbWUoXG4gICAgICAgICAgKHgpID0+IF8uaW5jbHVkZXMoc3RkZXJyIHx8IHN0ZG91dCwgeCkpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKC9cXGJ0cnVlXFxiLy50ZXN0KHN0ZG91dCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKHN0ZGVyciB8fCBzdGRvdXQpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgY2hlY2sgaWYgZGV2aWNlIGxvY2sgaXMgZW5hYmxlZC4gT3JpZ2luYWwgZXJyb3I6ICR7ZS5tZXNzYWdlfWApO1xuICB9XG59O1xuXG4vKipcbiAqIFNldHMgdGhlIGRldmljZSBsb2NrLlxuICpcbiAqIEBwYXJhbSB7IXN0cmluZ30gY3JlZGVudGlhbFR5cGUgT25lIG9mOiBwYXNzd29yZCwgcGluLCBwYXR0ZXJuLlxuICogQHBhcmFtIHshc3RyaW5nfSBjcmVkZW50aWFsIEEgbm9uLWVtcHR5IGNyZWRlbnRpYWwgdmFsdWUgdG8gYmUgc2V0LlxuICogTWFrZSBzdXJlIHlvdXIgbmV3IGNyZWRlbnRpYWwgbWF0Y2hlcyB0byB0aGUgYWN0dWFsIHN5c3RlbSBzZWN1cml0eSByZXF1aXJlbWVudHMsXG4gKiBlLmcuIGEgbWluaW11bSBwYXNzd29yZCBsZW5ndGguIEEgcGF0dGVybiBpcyBzcGVjaWZpZWQgYnkgYSBub24tc2VwYXJhdGVkIGxpc3RcbiAqIG9mIG51bWJlcnMgdGhhdCBpbmRleCB0aGUgY2VsbCBvbiB0aGUgcGF0dGVybiBpbiBhIDEtYmFzZWQgbWFubmVyIGluIGxlZnRcbiAqIHRvIHJpZ2h0IGFuZCB0b3AgdG8gYm90dG9tIG9yZGVyLCBpLmUuIHRoZSB0b3AtbGVmdCBjZWxsIGlzIGluZGV4ZWQgd2l0aCAxLFxuICogd2hlcmVhcyB0aGUgYm90dG9tLXJpZ2h0IGNlbGwgaXMgaW5kZXhlZCB3aXRoIDkuIEV4YW1wbGU6IDEyMzQuXG4gKiBAcGFyYW0gez9zdHJpbmd9IG9sZENyZWRlbnRpYWwgW251bGxdIEFuIG9sZCBjcmVkZW50aWFsIHN0cmluZy5cbiAqIEl0IGlzIG9ubHkgcmVxdWlyZWQgdG8gYmUgc2V0IGluIGNhc2UgeW91IG5lZWQgdG8gY2hhbmdlIHRoZSBjdXJyZW50XG4gKiBjcmVkZW50aWFsIHJhdGhlciB0aGFuIHRvIHNldCBhIG5ldyBvbmUuIFNldHRpbmcgaXQgdG8gYSB3cm9uZyB2YWx1ZSB3aWxsXG4gKiBtYWtlIHRoaXMgbWV0aG9kIHRvIGZhaWwgYW5kIHRocm93IGFuIGV4Y2VwdGlvbi5cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGVyZSB3YXMgYSBmYWlsdXJlIHdoaWxlIHZlcmlmeWluZyBpbnB1dCBhcmd1bWVudHMgb3Igc2V0dGluZ1xuICogdGhlIGNyZWRlbnRpYWxcbiAqL1xubG9ja01hbmFnZW1lbnRNZXRob2RzLnNldExvY2tDcmVkZW50aWFsID0gYXN5bmMgZnVuY3Rpb24gc2V0TG9ja0NyZWRlbnRpYWwgKFxuICBjcmVkZW50aWFsVHlwZSwgY3JlZGVudGlhbCwgb2xkQ3JlZGVudGlhbCA9IG51bGwpIHtcbiAgaWYgKCFTVVBQT1JURURfTE9DS19DUkVERU5USUFMX1RZUEVTLmluY2x1ZGVzKGNyZWRlbnRpYWxUeXBlKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgRGV2aWNlIGxvY2sgY3JlZGVudGlhbCB0eXBlICcke2NyZWRlbnRpYWxUeXBlfScgaXMgdW5rbm93bi4gYCArXG4gICAgICBgT25seSB0aGUgZm9sbG93aW5nIGNyZWRlbnRpYWwgdHlwZXMgYXJlIHN1cHBvcnRlZDogJHtTVVBQT1JURURfTE9DS19DUkVERU5USUFMX1RZUEVTfWApO1xuICB9XG4gIGlmIChfLmlzRW1wdHkoY3JlZGVudGlhbCkgJiYgIV8uaXNJbnRlZ2VyKGNyZWRlbnRpYWwpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdEZXZpY2UgbG9jayBjcmVkZW50aWFsIGNhbm5vdCBiZSBlbXB0eScpO1xuICB9XG4gIGNvbnN0IGNtZCA9IGJ1aWxkQ29tbWFuZChgc2V0LSR7Y3JlZGVudGlhbFR5cGV9YCwgb2xkQ3JlZGVudGlhbCwgY3JlZGVudGlhbCk7XG4gIHRyeSB7XG4gICAgY29uc3Qge3N0ZG91dCwgc3RkZXJyfSA9IGF3YWl0IHRoaXMuc2hlbGwoY21kLCB7XG4gICAgICBvdXRwdXRGb3JtYXQ6IHRoaXMuRVhFQ19PVVRQVVRfRk9STUFULkZVTExcbiAgICB9KTtcbiAgICBpZiAoIV8uaW5jbHVkZXMoc3Rkb3V0LCAnc2V0IHRvJykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihzdGRlcnIgfHwgc3Rkb3V0KTtcbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFNldHRpbmcgb2YgZGV2aWNlIGxvY2sgJHtjcmVkZW50aWFsVHlwZX0gY3JlZGVudGlhbCBmYWlsZWQuIGAgK1xuICAgICAgYE9yaWdpbmFsIGVycm9yOiAke2Uuc3RkZXJyIHx8IGUuc3Rkb3V0IHx8IGUubWVzc2FnZX1gKTtcbiAgfVxufTtcblxuLyoqXG4gKiBSZXRyaWV2ZSB0aGUgc2NyZWVuIGxvY2sgc3RhdGUgb2YgdGhlIGRldmljZSB1bmRlciB0ZXN0LlxuICpcbiAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgdGhlIGRldmljZSBpcyBsb2NrZWQuXG4gKi9cbmxvY2tNYW5hZ2VtZW50TWV0aG9kcy5pc1NjcmVlbkxvY2tlZCA9IGFzeW5jIGZ1bmN0aW9uIGlzU2NyZWVuTG9ja2VkICgpIHtcbiAgY29uc3Qgc3Rkb3V0ID0gYXdhaXQgdGhpcy5zaGVsbChbJ2R1bXBzeXMnLCAnd2luZG93J10pO1xuICBpZiAocHJvY2Vzcy5lbnYuQVBQSVVNX0xPR19EVU1QU1lTKSB7XG4gICAgLy8gb3B0aW9uYWwgZGVidWdnaW5nXG4gICAgLy8gaWYgdGhlIG1ldGhvZCBpcyBub3Qgd29ya2luZywgdHVybiBpdCBvbiBhbmQgc2VuZCB1cyB0aGUgb3V0cHV0XG4gICAgY29uc3QgZHVtcHN5c0ZpbGUgPSBwYXRoLnJlc29sdmUocHJvY2Vzcy5jd2QoKSwgJ2R1bXBzeXMubG9nJyk7XG4gICAgbG9nLmRlYnVnKGBXcml0aW5nIGR1bXBzeXMgb3V0cHV0IHRvICR7ZHVtcHN5c0ZpbGV9YCk7XG4gICAgYXdhaXQgZnMud3JpdGVGaWxlKGR1bXBzeXNGaWxlLCBzdGRvdXQpO1xuICB9XG4gIHJldHVybiBpc1Nob3dpbmdMb2Nrc2NyZWVuKHN0ZG91dCkgfHwgaXNDdXJyZW50Rm9jdXNPbktleWd1YXJkKHN0ZG91dCkgfHwgIWlzU2NyZWVuT25GdWxseShzdGRvdXQpO1xufTtcblxuLyoqXG4gKiBEaXNtaXNzZXMga2V5Z3VhcmQgb3ZlcmxheS5cbiAqL1xubG9ja01hbmFnZW1lbnRNZXRob2RzLmRpc21pc3NLZXlndWFyZCA9IGFzeW5jIGZ1bmN0aW9uIGRpc21pc3NLZXlndWFyZCAoKSB7XG4gIGxvZy5pbmZvKCdXYWtpbmcgdXAgdGhlIGRldmljZSB0byBkaXNtaXNzIHRoZSBrZXlndWFyZCcpO1xuICAvLyBTY3JlZW4gb2ZmIG9uY2UgdG8gZm9yY2UgcHJlLWlucHV0dGVkIHRleHQgZmllbGQgY2xlYW4gYWZ0ZXIgd2FrZS11cFxuICAvLyBKdXN0IHNjcmVlbiBvbiBpZiB0aGUgc2NyZWVuIGRlZmF1bHRzIG9mZlxuICBhd2FpdCB0aGlzLmN5Y2xlV2FrZVVwKCk7XG5cbiAgaWYgKGF3YWl0IHRoaXMuZ2V0QXBpTGV2ZWwoKSA+IDIxKSB7XG4gICAgYXdhaXQgdGhpcy5zaGVsbChbJ3dtJywgJ2Rpc21pc3Mta2V5Z3VhcmQnXSk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3Qgc3Rkb3V0ID0gYXdhaXQgdGhpcy5zaGVsbChbJ2R1bXBzeXMnLCAnd2luZG93JywgJ3dpbmRvd3MnXSk7XG4gIGlmICghaXNDdXJyZW50Rm9jdXNPbktleWd1YXJkKHN0ZG91dCkpIHtcbiAgICBsb2cuZGVidWcoJ1RoZSBrZXlndWFyZCBzZWVtcyB0byBiZSBpbmFjdGl2ZScpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGxvZy5kZWJ1ZygnU3dpcGluZyB1cCB0byBkaXNtaXNzIHRoZSBrZXlndWFyZCcpO1xuICBpZiAoYXdhaXQgdGhpcy5oaWRlS2V5Ym9hcmQoKSkge1xuICAgIGF3YWl0IEIuZGVsYXkoSElERV9LRVlCT0FSRF9XQUlUX1RJTUUpO1xuICB9XG4gIGxvZy5kZWJ1ZygnRGlzbWlzc2luZyBub3RpZmljYXRpb25zIGZyb20gdGhlIHVubG9jayB2aWV3Jyk7XG4gIGF3YWl0IHRoaXMuc2hlbGwoWydzZXJ2aWNlJywgJ2NhbGwnLCAnbm90aWZpY2F0aW9uJywgJzEnXSk7XG4gIGF3YWl0IHRoaXMuYmFjaygpO1xuICBhd2FpdCBzd2lwZVVwKHRoaXMpO1xufTtcblxuLyoqXG4gKiBQcmVzc2VzIHRoZSBjb3JyZXNwb25kaW5nIGtleSBjb21iaW5hdGlvbiB0byBtYWtlIHN1cmUgdGhlIGRldmljZSdzIHNjcmVlblxuICogaXMgbm90IHR1cm5lZCBvZmYgYW5kIGlzIGxvY2tlZCBpZiB0aGUgbGF0dGVyIGlzIGVuYWJsZWQuXG4gKi9cbmxvY2tNYW5hZ2VtZW50TWV0aG9kcy5jeWNsZVdha2VVcCA9IGFzeW5jIGZ1bmN0aW9uIGN5Y2xlV2FrZVVwICgpIHtcbiAgYXdhaXQgdGhpcy5rZXlldmVudChLRVlDT0RFX1BPV0VSKTtcbiAgYXdhaXQgdGhpcy5rZXlldmVudChLRVlDT0RFX1dBS0VVUCk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBsb2NrTWFuYWdlbWVudE1ldGhvZHM7XG4iXSwiZmlsZSI6ImxpYi90b29scy9sb2NrbWdtdC5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
|