appium-android-driver 5.0.15 → 5.1.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/build/index.js +2 -28
- package/build/lib/android-helpers.js +2 -2
- package/build/lib/bootstrap.js +6 -6
- package/build/lib/commands/actions.js +2 -2
- package/build/lib/commands/alert.js +6 -6
- package/build/lib/commands/app-management.js +4 -4
- package/build/lib/commands/context.js +4 -4
- package/build/lib/commands/element.js +2 -2
- package/build/lib/commands/emu-console.js +3 -3
- package/build/lib/commands/execute.js +5 -5
- package/build/lib/commands/file-actions.js +7 -7
- package/build/lib/commands/find.js +5 -5
- package/build/lib/commands/general.js +7 -7
- package/build/lib/commands/ime.js +3 -3
- package/build/lib/commands/intent.js +7 -7
- package/build/lib/commands/log.js +5 -5
- package/build/lib/commands/network.js +3 -3
- package/build/lib/commands/recordscreen.js +2 -2
- package/build/lib/commands/shell.js +4 -4
- package/build/lib/commands/streamscreen.js +2 -2
- package/build/lib/commands/touch.js +4 -4
- package/build/lib/driver.js +5 -5
- package/build/lib/logger.js +2 -2
- package/build/lib/uiautomator.js +2 -2
- package/build/lib/unlock-helpers.js +2 -2
- package/build/lib/webview-helpers.js +2 -2
- package/index.js +1 -26
- package/lib/android-helpers.js +1 -1
- package/lib/bootstrap.js +2 -2
- package/lib/commands/actions.js +1 -1
- package/lib/commands/alert.js +1 -1
- package/lib/commands/app-management.js +2 -2
- package/lib/commands/context.js +2 -2
- package/lib/commands/element.js +1 -1
- package/lib/commands/emu-console.js +1 -1
- package/lib/commands/execute.js +1 -1
- package/lib/commands/file-actions.js +2 -2
- package/lib/commands/find.js +2 -2
- package/lib/commands/general.js +2 -2
- package/lib/commands/ime.js +1 -1
- package/lib/commands/intent.js +1 -1
- package/lib/commands/log.js +1 -1
- package/lib/commands/network.js +1 -1
- package/lib/commands/recordscreen.js +1 -1
- package/lib/commands/shell.js +2 -2
- package/lib/commands/streamscreen.js +1 -1
- package/lib/commands/touch.js +2 -2
- package/lib/driver.js +2 -2
- package/lib/logger.js +1 -1
- package/lib/uiautomator.js +1 -1
- package/lib/unlock-helpers.js +1 -1
- package/lib/webview-helpers.js +1 -1
- package/package.json +5 -3
- package/build/lib/server.js +0 -34
- package/lib/server.js +0 -14
|
@@ -13,13 +13,13 @@ var _lodash = _interopRequireDefault(require("lodash"));
|
|
|
13
13
|
|
|
14
14
|
var _androidHelpers = _interopRequireDefault(require("../android-helpers"));
|
|
15
15
|
|
|
16
|
-
var _support = require("
|
|
16
|
+
var _support = require("appium/support");
|
|
17
17
|
|
|
18
18
|
var _moment = _interopRequireDefault(require("moment"));
|
|
19
19
|
|
|
20
20
|
var _asyncbox = require("asyncbox");
|
|
21
21
|
|
|
22
|
-
var
|
|
22
|
+
var _driver = require("appium/driver");
|
|
23
23
|
|
|
24
24
|
const MOMENT_FORMAT_ISO8601 = 'YYYY-MM-DDTHH:mm:ssZ';
|
|
25
25
|
let commands = {},
|
|
@@ -311,7 +311,7 @@ commands.mobilePerformEditorAction = async function mobilePerformEditorAction(op
|
|
|
311
311
|
} = opts;
|
|
312
312
|
|
|
313
313
|
if (!_support.util.hasValue(action)) {
|
|
314
|
-
throw new
|
|
314
|
+
throw new _driver.errors.InvalidArgumentError(`'action' argument is required`);
|
|
315
315
|
}
|
|
316
316
|
|
|
317
317
|
await this.adb.performEditorAction(action);
|
|
@@ -330,7 +330,7 @@ commands.mobileChangePermissions = async function mobileChangePermissions(opts =
|
|
|
330
330
|
} = opts;
|
|
331
331
|
|
|
332
332
|
if (!_support.util.hasValue(permissions)) {
|
|
333
|
-
throw new
|
|
333
|
+
throw new _driver.errors.InvalidArgumentError(`'permissions' argument is required`);
|
|
334
334
|
}
|
|
335
335
|
|
|
336
336
|
let actionFunc;
|
|
@@ -347,7 +347,7 @@ commands.mobileChangePermissions = async function mobileChangePermissions(opts =
|
|
|
347
347
|
break;
|
|
348
348
|
|
|
349
349
|
default:
|
|
350
|
-
throw new
|
|
350
|
+
throw new _driver.errors.InvalidArgumentError(`Unknown action '${action}'. ` + `Only ${JSON.stringify(_lodash.default.values(PERMISSION_ACTION))} actions are supported`);
|
|
351
351
|
}
|
|
352
352
|
|
|
353
353
|
for (const permission of _lodash.default.isArray(permissions) ? permissions : [permissions]) {
|
|
@@ -385,7 +385,7 @@ commands.mobileGetPermissions = async function mobileGetPermissions(opts = {}) {
|
|
|
385
385
|
break;
|
|
386
386
|
|
|
387
387
|
default:
|
|
388
|
-
throw new
|
|
388
|
+
throw new _driver.errors.InvalidArgumentError(`Unknown permissions type '${type}'. ` + `Only ${JSON.stringify(_lodash.default.values(PERMISSIONS_TYPE))} types are supported`);
|
|
389
389
|
}
|
|
390
390
|
|
|
391
391
|
return await actionFunc(appPackage);
|
|
@@ -419,4 +419,4 @@ var _default = extensions;
|
|
|
419
419
|
exports.default = _default;require('source-map-support').install();
|
|
420
420
|
|
|
421
421
|
|
|
422
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2dlbmVyYWwuanMiLCJuYW1lcyI6WyJNT01FTlRfRk9STUFUX0lTTzg2MDEiLCJjb21tYW5kcyIsImhlbHBlcnMiLCJleHRlbnNpb25zIiwia2V5cyIsIl8iLCJpc0FycmF5Iiwiam9pbiIsInBhcmFtcyIsInRleHQiLCJyZXBsYWNlIiwib3B0cyIsInVuaWNvZGVLZXlib2FyZCIsImRvU2VuZEtleXMiLCJib290c3RyYXAiLCJzZW5kQWN0aW9uIiwiZ2V0RGV2aWNlVGltZSIsImZvcm1hdCIsImxvZyIsImRlYnVnIiwiZGV2aWNlVGltZXN0YW1wIiwiYWRiIiwic2hlbGwiLCJ0cmltIiwicGFyc2VkVGltZXN0YW1wIiwibW9tZW50IiwidXRjIiwiaXNWYWxpZCIsIndhcm4iLCJ1dGNPZmZzZXQiLCJfdHptIiwibW9iaWxlR2V0RGV2aWNlVGltZSIsImdldFBhZ2VTb3VyY2UiLCJiYWNrIiwiaXNLZXlib2FyZFNob3duIiwiaXNTb2Z0S2V5Ym9hcmRQcmVzZW50IiwiaGlkZUtleWJvYXJkIiwib3BlblNldHRpbmdzQWN0aXZpdHkiLCJzZXR0aW5nIiwiYXBwUGFja2FnZSIsImFwcEFjdGl2aXR5IiwiZ2V0Rm9jdXNlZFBhY2thZ2VBbmRBY3Rpdml0eSIsIndhaXRGb3JOb3RBY3Rpdml0eSIsImdldFdpbmRvd1NpemUiLCJnZXRXaW5kb3dSZWN0Iiwid2lkdGgiLCJoZWlnaHQiLCJ4IiwieSIsImdldEN1cnJlbnRBY3Rpdml0eSIsImdldEN1cnJlbnRQYWNrYWdlIiwiYmFja2dyb3VuZCIsInNlY29uZHMiLCJnb1RvSG9tZSIsInNsZWVwTXMiLCJ0aHJlc2hvbGRNcyIsImludGVydmFsTXMiLCJtaW4iLCJwYXJzZUludCIsInByb2dyZXNzQ2IiLCJlbGFwc2VkTXMiLCJwcm9ncmVzcyIsIndhaXRTZWNzIiwidG9GaXhlZCIsInByb2dyZXNzUGN0IiwibG9uZ1NsZWVwIiwiYXJncyIsIl9jYWNoZWRBY3Rpdml0eUFyZ3MiLCJhY3RpdmF0ZUFwcCIsImlnbiIsImFwcFdhaXRQYWNrYWdlIiwiYXBwV2FpdEFjdGl2aXR5Iiwic3BsaXQiLCJpbmNsdWRlcyIsInBrZyIsImFjdGl2aXR5IiwiYWN0aW9uIiwiaW50ZW50QWN0aW9uIiwiY2F0ZWdvcnkiLCJpbnRlbnRDYXRlZ29yeSIsImZsYWdzIiwiaW50ZW50RmxhZ3MiLCJ3YWl0UGtnIiwid2FpdEFjdGl2aXR5Iiwid2FpdEZvckxhdW5jaCIsImFwcFdhaXRGb3JMYXVuY2giLCJ3YWl0RHVyYXRpb24iLCJhcHBXYWl0RHVyYXRpb24iLCJvcHRpb25hbEludGVudEFyZ3VtZW50cyIsInN0b3BBcHAiLCJ1c2VyIiwidXNlclByb2ZpbGUiLCJ1dGlsIiwiZmlsdGVyT2JqZWN0IiwiSlNPTiIsInN0cmluZ2lmeSIsInN0YXJ0QXBwIiwiZ2V0U3RyaW5ncyIsImxhbmd1YWdlIiwiZ2V0RGV2aWNlTGFuZ3VhZ2UiLCJpbmZvIiwicHJlcHJvY2Vzc1N0cmluZ3NNYXAiLCJtYXBwaW5nIiwicmVzdWx0Iiwia2V5IiwidmFsdWUiLCJ0b1BhaXJzIiwiaXNTdHJpbmciLCJhcGtTdHJpbmdzIiwiYW5kcm9pZEhlbHBlcnMiLCJwdXNoU3RyaW5ncyIsImxhdW5jaEFwcCIsImluaXRBVVQiLCJzdGFydEFVVCIsInN0YXJ0QWN0aXZpdHkiLCJkb250U3RvcEFwcE9uUmVzZXQiLCJoYXNWYWx1ZSIsInJlc2V0IiwicmVzZXRBcHAiLCJPYmplY3QiLCJhc3NpZ24iLCJmYXN0UmVzZXQiLCJzZXRDb250ZXh0IiwiaXNDaHJvbWVTZXNzaW9uIiwic3RhcnRDaHJvbWVTZXNzaW9uIiwic2V0VXJsIiwidXJpIiwic3RhcnRVcmkiLCJjbG9zZUFwcCIsImZvcmNlU3RvcCIsImdldERpc3BsYXlEZW5zaXR5Iiwib3V0IiwidmFsIiwiaXNOYU4iLCJlcnJvckFuZFRocm93IiwibW9iaWxlUGVyZm9ybUVkaXRvckFjdGlvbiIsImVycm9ycyIsIkludmFsaWRBcmd1bWVudEVycm9yIiwicGVyZm9ybUVkaXRvckFjdGlvbiIsIlBFUk1JU1NJT05fQUNUSU9OIiwiR1JBTlQiLCJSRVZPS0UiLCJtb2JpbGVDaGFuZ2VQZXJtaXNzaW9ucyIsInBlcm1pc3Npb25zIiwiYWN0aW9uRnVuYyIsInRvTG93ZXIiLCJwZXJtaXNzaW9uIiwiZ3JhbnRQZXJtaXNzaW9uIiwicmV2b2tlUGVybWlzc2lvbiIsInZhbHVlcyIsIlBFUk1JU1NJT05TX1RZUEUiLCJERU5JRUQiLCJHUkFOVEVEIiwiUkVRVUVTVEVEIiwibW9iaWxlR2V0UGVybWlzc2lvbnMiLCJ0eXBlIiwiZ2V0UmVxUGVybWlzc2lvbnMiLCJnZXRHcmFudGVkUGVybWlzc2lvbnMiLCJnZXREZW5pZWRQZXJtaXNzaW9ucyIsIm1vYmlsZUdldE5vdGlmaWNhdGlvbnMiLCJnZXROb3RpZmljYXRpb25zIiwibW9iaWxlTGlzdFNtcyIsImdldFNtc0xpc3QiLCJtb2JpbGVVbmxvY2siLCJzdHJhdGVneSIsInRpbWVvdXRNcyIsInVubG9jayIsInVubG9ja0tleSIsInVubG9ja1R5cGUiLCJ1bmxvY2tTdHJhdGVneSIsInVubG9ja1N1Y2Nlc3NUaW1lb3V0Il0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLiIsInNvdXJjZXMiOlsibGliL2NvbW1hbmRzL2dlbmVyYWwuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBhbmRyb2lkSGVscGVycyBmcm9tICcuLi9hbmRyb2lkLWhlbHBlcnMnO1xuaW1wb3J0IHsgdXRpbCB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBsb25nU2xlZXAgfSBmcm9tICdhc3luY2JveCc7XG5pbXBvcnQgeyBlcnJvcnMgfSBmcm9tICdAYXBwaXVtL2Jhc2UtZHJpdmVyJztcblxuY29uc3QgTU9NRU5UX0ZPUk1BVF9JU084NjAxID0gJ1lZWVktTU0tRERUSEg6bW06c3NaJztcblxubGV0IGNvbW1hbmRzID0ge30sIGhlbHBlcnMgPSB7fSwgZXh0ZW5zaW9ucyA9IHt9O1xuXG5jb21tYW5kcy5rZXlzID0gYXN5bmMgZnVuY3Rpb24ga2V5cyAoa2V5cykge1xuICAvLyBQcm90b2NvbCBzZW5kcyBhbiBhcnJheTsgcmV0aGluayBhcHByb2FjaFxuICBrZXlzID0gXy5pc0FycmF5KGtleXMpID8ga2V5cy5qb2luKCcnKSA6IGtleXM7XG4gIGxldCBwYXJhbXMgPSB7XG4gICAgdGV4dDoga2V5cyxcbiAgICByZXBsYWNlOiBmYWxzZVxuICB9O1xuICBpZiAodGhpcy5vcHRzLnVuaWNvZGVLZXlib2FyZCkge1xuICAgIHBhcmFtcy51bmljb2RlS2V5Ym9hcmQgPSB0cnVlO1xuICB9XG4gIGF3YWl0IHRoaXMuZG9TZW5kS2V5cyhwYXJhbXMpO1xufTtcblxuY29tbWFuZHMuZG9TZW5kS2V5cyA9IGFzeW5jIGZ1bmN0aW9uIGRvU2VuZEtleXMgKHBhcmFtcykge1xuICByZXR1cm4gYXdhaXQgdGhpcy5ib290c3RyYXAuc2VuZEFjdGlvbignc2V0VGV4dCcsIHBhcmFtcyk7XG59O1xuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgY3VycmVudCBkZXZpY2UncyB0aW1lc3RhbXAuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGZvcm1hdCAtIFRoZSBzZXQgb2YgZm9ybWF0IHNwZWNpZmllcnMuIFJlYWRcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICBodHRwczovL21vbWVudGpzLmNvbS9kb2NzLyB0byBnZXQgdGhlIGZ1bGwgbGlzdCBvZiBzdXBwb3J0ZWRcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRldGltZSBmb3JtYXQgc3BlY2lmaWVycy4gVGhlIGRlZmF1bHQgZm9ybWF0IGlzXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgYFlZWVktTU0tRERUSEg6bW06c3NaYCwgd2hpY2ggY29tcGxpZXMgdG8gSVNPLTg2MDFcbiAqIEByZXR1cm4ge3N0cmluZ30gRm9ybWF0dGVkIGRhdGV0aW1lIHN0cmluZyBvciB0aGUgcmF3IGNvbW1hbmQgb3V0cHV0IGlmIGZvcm1hdHRpbmcgZmFpbHNcbiAqL1xuY29tbWFuZHMuZ2V0RGV2aWNlVGltZSA9IGFzeW5jIGZ1bmN0aW9uIGdldERldmljZVRpbWUgKGZvcm1hdCA9IE1PTUVOVF9GT1JNQVRfSVNPODYwMSkge1xuICB0aGlzLmxvZy5kZWJ1ZygnQXR0ZW1wdGluZyB0byBjYXB0dXJlIGFuZHJvaWQgZGV2aWNlIGRhdGUgYW5kIHRpbWUuICcgK1xuICAgIGBUaGUgZm9ybWF0IHNwZWNpZmllciBpcyAnJHtmb3JtYXR9J2ApO1xuICBjb25zdCBkZXZpY2VUaW1lc3RhbXAgPSAoYXdhaXQgdGhpcy5hZGIuc2hlbGwoWydkYXRlJywgJyslWS0lbS0lZFQlVCV6J10pKS50cmltKCk7XG4gIHRoaXMubG9nLmRlYnVnKGBHb3QgZGV2aWNlIHRpbWVzdGFtcDogJHtkZXZpY2VUaW1lc3RhbXB9YCk7XG4gIGNvbnN0IHBhcnNlZFRpbWVzdGFtcCA9IG1vbWVudC51dGMoZGV2aWNlVGltZXN0YW1wLCAnWVlZWS1NTS1ERFRISDptbTpzc1paJyk7XG4gIGlmICghcGFyc2VkVGltZXN0YW1wLmlzVmFsaWQoKSkge1xuICAgIHRoaXMubG9nLndhcm4oJ0Nhbm5vdCBwYXJzZSB0aGUgcmV0dXJuZWQgdGltZXN0YW1wLiBSZXR1cm5pbmcgYXMgaXMnKTtcbiAgICByZXR1cm4gZGV2aWNlVGltZXN0YW1wO1xuICB9XG4gIHJldHVybiBwYXJzZWRUaW1lc3RhbXAudXRjT2Zmc2V0KHBhcnNlZFRpbWVzdGFtcC5fdHptIHx8IDApLmZvcm1hdChmb3JtYXQpO1xufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBEZXZpY2VUaW1lT3B0aW9uc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IGZvcm1hdCBbWVlZWS1NTS1ERFRISDptbTpzc1pdIC0gU2VlIGdldERldmljZVRpbWUjZm9ybWF0XG4gKi9cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIGN1cnJlbnQgZGV2aWNlIHRpbWVcbiAqXG4gKiBAcGFyYW0ge0RldmljZVRpbWVPcHRpb25zfSBvcHRzXG4gKiBAcmV0dXJuIHtzdHJpbmd9IEZvcm1hdHRlZCBkYXRldGltZSBzdHJpbmcgb3IgdGhlIHJhdyBjb21tYW5kIG91dHB1dCBpZiBmb3JtYXR0aW5nIGZhaWxzXG4gKi9cbmNvbW1hbmRzLm1vYmlsZUdldERldmljZVRpbWUgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVHZXREZXZpY2VUaW1lIChvcHRzID0ge30pIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0RGV2aWNlVGltZShvcHRzLmZvcm1hdCk7XG59O1xuXG5jb21tYW5kcy5nZXRQYWdlU291cmNlID0gYXN5bmMgZnVuY3Rpb24gZ2V0UGFnZVNvdXJjZSAoKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLmJvb3RzdHJhcC5zZW5kQWN0aW9uKCdzb3VyY2UnKTtcbn07XG5cbmNvbW1hbmRzLmJhY2sgPSBhc3luYyBmdW5jdGlvbiBiYWNrICgpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYm9vdHN0cmFwLnNlbmRBY3Rpb24oJ3ByZXNzQmFjaycpO1xufTtcblxuY29tbWFuZHMuaXNLZXlib2FyZFNob3duID0gYXN5bmMgZnVuY3Rpb24gaXNLZXlib2FyZFNob3duICgpIHtcbiAgY29uc3Qge2lzS2V5Ym9hcmRTaG93bn0gPSBhd2FpdCB0aGlzLmFkYi5pc1NvZnRLZXlib2FyZFByZXNlbnQoKTtcbiAgcmV0dXJuIGlzS2V5Ym9hcmRTaG93bjtcbn07XG5cbmNvbW1hbmRzLmhpZGVLZXlib2FyZCA9IGFzeW5jIGZ1bmN0aW9uIGhpZGVLZXlib2FyZCAoKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLmFkYi5oaWRlS2V5Ym9hcmQoKTtcbn07XG5cbmNvbW1hbmRzLm9wZW5TZXR0aW5nc0FjdGl2aXR5ID0gYXN5bmMgZnVuY3Rpb24gb3BlblNldHRpbmdzQWN0aXZpdHkgKHNldHRpbmcpIHtcbiAgbGV0IHthcHBQYWNrYWdlLCBhcHBBY3Rpdml0eX0gPSBhd2FpdCB0aGlzLmFkYi5nZXRGb2N1c2VkUGFja2FnZUFuZEFjdGl2aXR5KCk7XG4gIGF3YWl0IHRoaXMuYWRiLnNoZWxsKFsnYW0nLCAnc3RhcnQnLCAnLWEnLCBgYW5kcm9pZC5zZXR0aW5ncy4ke3NldHRpbmd9YF0pO1xuICBhd2FpdCB0aGlzLmFkYi53YWl0Rm9yTm90QWN0aXZpdHkoYXBwUGFja2FnZSwgYXBwQWN0aXZpdHksIDUwMDApO1xufTtcblxuY29tbWFuZHMuZ2V0V2luZG93U2l6ZSA9IGFzeW5jIGZ1bmN0aW9uIGdldFdpbmRvd1NpemUgKCkge1xuICByZXR1cm4gYXdhaXQgdGhpcy5ib290c3RyYXAuc2VuZEFjdGlvbignZ2V0RGV2aWNlU2l6ZScpO1xufTtcblxuLy8gRm9yIFczQ1xuY29tbWFuZHMuZ2V0V2luZG93UmVjdCA9IGFzeW5jIGZ1bmN0aW9uIGdldFdpbmRvd1JlY3QgKCkge1xuICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IGF3YWl0IHRoaXMuZ2V0V2luZG93U2l6ZSgpO1xuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICB4OiAwLFxuICAgIHk6IDBcbiAgfTtcbn07XG5cbmNvbW1hbmRzLmdldEN1cnJlbnRBY3Rpdml0eSA9IGFzeW5jIGZ1bmN0aW9uIGdldEN1cnJlbnRBY3Rpdml0eSAoKSB7XG4gIHJldHVybiAoYXdhaXQgdGhpcy5hZGIuZ2V0Rm9jdXNlZFBhY2thZ2VBbmRBY3Rpdml0eSgpKS5hcHBBY3Rpdml0eTtcbn07XG5cbmNvbW1hbmRzLmdldEN1cnJlbnRQYWNrYWdlID0gYXN5bmMgZnVuY3Rpb24gZ2V0Q3VycmVudFBhY2thZ2UgKCkge1xuICByZXR1cm4gKGF3YWl0IHRoaXMuYWRiLmdldEZvY3VzZWRQYWNrYWdlQW5kQWN0aXZpdHkoKSkuYXBwUGFja2FnZTtcbn07XG5cbmNvbW1hbmRzLmJhY2tncm91bmQgPSBhc3luYyBmdW5jdGlvbiBiYWNrZ3JvdW5kIChzZWNvbmRzKSB7XG4gIGlmIChzZWNvbmRzIDwgMCkge1xuICAgIC8vIGlmIHVzZXIgcGFzc2VzIGluIGEgbmVnYXRpdmUgc2Vjb25kcyB2YWx1ZSwgaW50ZXJwcmV0IHRoYXQgYXMgdGhlIGluc3RydWN0aW9uXG4gICAgLy8gdG8gbm90IGJyaW5nIHRoZSBhcHAgYmFjayBhdCBhbGxcbiAgICBhd2FpdCB0aGlzLmFkYi5nb1RvSG9tZSgpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGxldCB7YXBwUGFja2FnZSwgYXBwQWN0aXZpdHl9ID0gYXdhaXQgdGhpcy5hZGIuZ2V0Rm9jdXNlZFBhY2thZ2VBbmRBY3Rpdml0eSgpO1xuICBhd2FpdCB0aGlzLmFkYi5nb1RvSG9tZSgpO1xuXG4gIC8vIHBlb3BsZSBjYW4gd2FpdCBmb3IgYSBsb25nIHRpbWUsIHNvIHRvIGJlIHNhZmUgbGV0J3MgdXNlIHRoZSBsb25nU2xlZXAgZnVuY3Rpb24gYW5kIGxvZ1xuICAvLyBwcm9ncmVzcyBwZXJpb2RpY2FsbHkuXG4gIGNvbnN0IHNsZWVwTXMgPSBzZWNvbmRzICogMTAwMDtcbiAgY29uc3QgdGhyZXNob2xkTXMgPSAzMCAqIDEwMDA7IC8vIHVzZSB0aGUgc3Bpbi13YWl0IGZvciBhbnl0aGluZyBvdmVyIHRoaXMgdGhyZXNob2xkXG4gIC8vIGZvciBvdXIgc3BpbiBpbnRlcnZhbCwgdXNlIDElIG9mIHRoZSB0b3RhbCB3YWl0IHRpbWUsIGJ1dCBub3RoaW5nIGJpZ2dlciB0aGFuIDMwc1xuICBjb25zdCBpbnRlcnZhbE1zID0gXy5taW4oWzMwICogMTAwMCwgcGFyc2VJbnQoc2xlZXBNcyAvIDEwMCwgMTApXSk7XG4gIGNvbnN0IHByb2dyZXNzQ2IgPSAoe2VsYXBzZWRNcywgcHJvZ3Jlc3N9KSA9PiB7XG4gICAgY29uc3Qgd2FpdFNlY3MgPSAoZWxhcHNlZE1zIC8gMTAwMCkudG9GaXhlZCgwKTtcbiAgICBjb25zdCBwcm9ncmVzc1BjdCA9IChwcm9ncmVzcyAqIDEwMCkudG9GaXhlZCgyKTtcbiAgICB0aGlzLmxvZy5kZWJ1ZyhgV2FpdGVkICR7d2FpdFNlY3N9cyBzbyBmYXIgKCR7cHJvZ3Jlc3NQY3R9JSlgKTtcbiAgfTtcbiAgYXdhaXQgbG9uZ1NsZWVwKHNsZWVwTXMsIHt0aHJlc2hvbGRNcywgaW50ZXJ2YWxNcywgcHJvZ3Jlc3NDYn0pO1xuXG4gIGxldCBhcmdzO1xuICBpZiAodGhpcy5fY2FjaGVkQWN0aXZpdHlBcmdzICYmIHRoaXMuX2NhY2hlZEFjdGl2aXR5QXJnc1tgJHthcHBQYWNrYWdlfS8ke2FwcEFjdGl2aXR5fWBdKSB7XG4gICAgLy8gdGhlIGFjdGl2aXR5IHdhcyBzdGFydGVkIHdpdGggYHN0YXJ0QWN0aXZpdHlgLCBzbyB1c2UgdGhvc2UgYXJncyB0byByZXN0YXJ0XG4gICAgYXJncyA9IHRoaXMuX2NhY2hlZEFjdGl2aXR5QXJnc1tgJHthcHBQYWNrYWdlfS8ke2FwcEFjdGl2aXR5fWBdO1xuICB9IGVsc2Uge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmxvZy5kZWJ1ZyhgQWN0aXZhdGluZyBhcHAgJyR7YXBwUGFja2FnZX0nIGluIG9yZGVyIHRvIHJlc3RvcmUgaXRgKTtcbiAgICAgIGF3YWl0IHRoaXMuYWN0aXZhdGVBcHAoYXBwUGFja2FnZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChpZ24pIHt9XG4gICAgYXJncyA9ICgoYXBwUGFja2FnZSA9PT0gdGhpcy5vcHRzLmFwcFBhY2thZ2UgJiYgYXBwQWN0aXZpdHkgPT09IHRoaXMub3B0cy5hcHBBY3Rpdml0eSkgfHxcbiAgICAgICAgICAgIChhcHBQYWNrYWdlID09PSB0aGlzLm9wdHMuYXBwV2FpdFBhY2thZ2UgJiYgKHRoaXMub3B0cy5hcHBXYWl0QWN0aXZpdHkgfHwgJycpLnNwbGl0KCcsJykuaW5jbHVkZXMoYXBwQWN0aXZpdHkpKSlcbiAgICAgID8gey8vIHRoZSBhY3Rpdml0eSBpcyB0aGUgb3JpZ2luYWwgc2Vzc2lvbiBhY3Rpdml0eSwgc28gdXNlIHRoZSBvcmlnaW5hbCBhcmdzXG4gICAgICAgIHBrZzogdGhpcy5vcHRzLmFwcFBhY2thZ2UsXG4gICAgICAgIGFjdGl2aXR5OiB0aGlzLm9wdHMuYXBwQWN0aXZpdHksXG4gICAgICAgIGFjdGlvbjogdGhpcy5vcHRzLmludGVudEFjdGlvbixcbiAgICAgICAgY2F0ZWdvcnk6IHRoaXMub3B0cy5pbnRlbnRDYXRlZ29yeSxcbiAgICAgICAgZmxhZ3M6IHRoaXMub3B0cy5pbnRlbnRGbGFncyxcbiAgICAgICAgd2FpdFBrZzogdGhpcy5vcHRzLmFwcFdhaXRQYWNrYWdlLFxuICAgICAgICB3YWl0QWN0aXZpdHk6IHRoaXMub3B0cy5hcHBXYWl0QWN0aXZpdHksXG4gICAgICAgIHdhaXRGb3JMYXVuY2g6IHRoaXMub3B0cy5hcHBXYWl0Rm9yTGF1bmNoLFxuICAgICAgICB3YWl0RHVyYXRpb246IHRoaXMub3B0cy5hcHBXYWl0RHVyYXRpb24sXG4gICAgICAgIG9wdGlvbmFsSW50ZW50QXJndW1lbnRzOiB0aGlzLm9wdHMub3B0aW9uYWxJbnRlbnRBcmd1bWVudHMsXG4gICAgICAgIHN0b3BBcHA6IGZhbHNlLFxuICAgICAgICB1c2VyOiB0aGlzLm9wdHMudXNlclByb2ZpbGV9XG4gICAgICA6IHsvLyB0aGUgYWN0aXZpdHkgd2FzIHN0YXJ0ZWQgc29tZSBvdGhlciB3YXksIHNvIHVzZSBkZWZhdWx0c1xuICAgICAgICBwa2c6IGFwcFBhY2thZ2UsXG4gICAgICAgIGFjdGl2aXR5OiBhcHBBY3Rpdml0eSxcbiAgICAgICAgd2FpdFBrZzogYXBwUGFja2FnZSxcbiAgICAgICAgd2FpdEFjdGl2aXR5OiBhcHBBY3Rpdml0eSxcbiAgICAgICAgc3RvcEFwcDogZmFsc2V9O1xuICB9XG4gIGFyZ3MgPSBhd2FpdCB1dGlsLmZpbHRlck9iamVjdChhcmdzKTtcbiAgdGhpcy5sb2cuZGVidWcoYEJyaW5naW5nIGFwcGxpY2F0aW9uIGJhY2sgdG8gZm9yZWdyb3VuZCB3aXRoIGFyZ3VtZW50czogJHtKU09OLnN0cmluZ2lmeShhcmdzKX1gKTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYWRiLnN0YXJ0QXBwKGFyZ3MpO1xufTtcblxuY29tbWFuZHMuZ2V0U3RyaW5ncyA9IGFzeW5jIGZ1bmN0aW9uIGdldFN0cmluZ3MgKGxhbmd1YWdlKSB7XG4gIGlmICghbGFuZ3VhZ2UpIHtcbiAgICBsYW5ndWFnZSA9IGF3YWl0IHRoaXMuYWRiLmdldERldmljZUxhbmd1YWdlKCk7XG4gICAgdGhpcy5sb2cuaW5mbyhgTm8gbGFuZ3VhZ2Ugc3BlY2lmaWVkLCByZXR1cm5pbmcgc3RyaW5ncyBmb3I6ICR7bGFuZ3VhZ2V9YCk7XG4gIH1cblxuICAvLyBDbGllbnRzIHJlcXVpcmUgdGhlIHJlc3VsdGluZyBtYXBwaW5nIHRvIGhhdmUgYm90aCBrZXlzXG4gIC8vIGFuZCB2YWx1ZXMgb2YgdHlwZSBzdHJpbmdcbiAgY29uc3QgcHJlcHJvY2Vzc1N0cmluZ3NNYXAgPSAobWFwcGluZykgPT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIF8udG9QYWlycyhtYXBwaW5nKSkge1xuICAgICAgcmVzdWx0W2tleV0gPSBfLmlzU3RyaW5nKHZhbHVlKSA/IHZhbHVlIDogSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuXG4gIGlmICh0aGlzLmFwa1N0cmluZ3NbbGFuZ3VhZ2VdKSB7XG4gICAgLy8gUmV0dXJuIGNhY2hlZCBzdHJpbmdzXG4gICAgcmV0dXJuIHByZXByb2Nlc3NTdHJpbmdzTWFwKHRoaXMuYXBrU3RyaW5nc1tsYW5ndWFnZV0pO1xuICB9XG5cbiAgdGhpcy5hcGtTdHJpbmdzW2xhbmd1YWdlXSA9IGF3YWl0IGFuZHJvaWRIZWxwZXJzLnB1c2hTdHJpbmdzKGxhbmd1YWdlLCB0aGlzLmFkYiwgdGhpcy5vcHRzKTtcbiAgaWYgKHRoaXMuYm9vdHN0cmFwKSB7XG4gICAgLy8gVE9ETzogVGhpcyBpcyBtdXRhdGluZyB0aGUgY3VycmVudCBsYW5ndWFnZSwgYnV0IGl0J3MgaG93IGFwcGl1bSBjdXJyZW50bHkgd29ya3NcbiAgICBhd2FpdCB0aGlzLmJvb3RzdHJhcC5zZW5kQWN0aW9uKCd1cGRhdGVTdHJpbmdzJyk7XG4gIH1cblxuICByZXR1cm4gcHJlcHJvY2Vzc1N0cmluZ3NNYXAodGhpcy5hcGtTdHJpbmdzW2xhbmd1YWdlXSk7XG59O1xuXG5jb21tYW5kcy5sYXVuY2hBcHAgPSBhc3luYyBmdW5jdGlvbiBsYXVuY2hBcHAgKCkge1xuICBhd2FpdCB0aGlzLmluaXRBVVQoKTtcbiAgYXdhaXQgdGhpcy5zdGFydEFVVCgpO1xufTtcblxuY29tbWFuZHMuc3RhcnRBY3Rpdml0eSA9IGFzeW5jIGZ1bmN0aW9uIHN0YXJ0QWN0aXZpdHkgKGFwcFBhY2thZ2UsIGFwcEFjdGl2aXR5LFxuICBhcHBXYWl0UGFja2FnZSwgYXBwV2FpdEFjdGl2aXR5LCBpbnRlbnRBY3Rpb24sIGludGVudENhdGVnb3J5LCBpbnRlbnRGbGFncyxcbiAgb3B0aW9uYWxJbnRlbnRBcmd1bWVudHMsIGRvbnRTdG9wQXBwT25SZXNldCkge1xuICB0aGlzLmxvZy5kZWJ1ZyhgU3RhcnRpbmcgcGFja2FnZSAnJHthcHBQYWNrYWdlfScgYW5kIGFjdGl2aXR5ICcke2FwcEFjdGl2aXR5fSdgKTtcblxuICAvLyBkb250U3RvcEFwcE9uUmVzZXQgaXMgYm90aCBhbiBhcmd1bWVudCBoZXJlLCBhbmQgYSBkZXNpcmVkIGNhcGFiaWxpdHlcbiAgLy8gaWYgdGhlIGFyZ3VtZW50IGlzIHNldCwgdXNlIGl0LCBvdGhlcndpc2UgdXNlIHRoZSBjYXBcbiAgaWYgKCF1dGlsLmhhc1ZhbHVlKGRvbnRTdG9wQXBwT25SZXNldCkpIHtcbiAgICBkb250U3RvcEFwcE9uUmVzZXQgPSAhIXRoaXMub3B0cy5kb250U3RvcEFwcE9uUmVzZXQ7XG4gIH1cblxuICBsZXQgYXJncyA9IHtcbiAgICBwa2c6IGFwcFBhY2thZ2UsXG4gICAgYWN0aXZpdHk6IGFwcEFjdGl2aXR5LFxuICAgIHdhaXRQa2c6IGFwcFdhaXRQYWNrYWdlIHx8IGFwcFBhY2thZ2UsXG4gICAgd2FpdEFjdGl2aXR5OiBhcHBXYWl0QWN0aXZpdHkgfHwgYXBwQWN0aXZpdHksXG4gICAgYWN0aW9uOiBpbnRlbnRBY3Rpb24sXG4gICAgY2F0ZWdvcnk6IGludGVudENhdGVnb3J5LFxuICAgIGZsYWdzOiBpbnRlbnRGbGFncyxcbiAgICBvcHRpb25hbEludGVudEFyZ3VtZW50cyxcbiAgICBzdG9wQXBwOiAhZG9udFN0b3BBcHBPblJlc2V0XG4gIH07XG4gIHRoaXMuX2NhY2hlZEFjdGl2aXR5QXJncyA9IHRoaXMuX2NhY2hlZEFjdGl2aXR5QXJncyB8fCB7fTtcbiAgdGhpcy5fY2FjaGVkQWN0aXZpdHlBcmdzW2Ake2FyZ3Mud2FpdFBrZ30vJHthcmdzLndhaXRBY3Rpdml0eX1gXSA9IGFyZ3M7XG4gIGF3YWl0IHRoaXMuYWRiLnN0YXJ0QXBwKGFyZ3MpO1xufTtcblxuY29tbWFuZHMucmVzZXQgPSBhc3luYyBmdW5jdGlvbiByZXNldCAoKSB7XG4gIGF3YWl0IGFuZHJvaWRIZWxwZXJzLnJlc2V0QXBwKHRoaXMuYWRiLCBPYmplY3QuYXNzaWduKHt9LCB0aGlzLm9wdHMsIHtmYXN0UmVzZXQ6IHRydWV9KSk7XG4gIC8vIHJlc2V0IGNvbnRleHQgc2luY2Ugd2UgZG9uJ3Qga25vdyB3aGF0IGtpbmQgb24gY29udGV4dCB3ZSB3aWxsIGVuZCB1cCBhZnRlciBhcHAgbGF1bmNoLlxuICBhd2FpdCB0aGlzLnNldENvbnRleHQoKTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuaXNDaHJvbWVTZXNzaW9uID8gdGhpcy5zdGFydENocm9tZVNlc3Npb24oKSA6IHRoaXMuc3RhcnRBVVQoKTtcbn07XG5cbmNvbW1hbmRzLnN0YXJ0QVVUID0gYXN5bmMgZnVuY3Rpb24gc3RhcnRBVVQgKCkge1xuICBhd2FpdCB0aGlzLmFkYi5zdGFydEFwcCh7XG4gICAgcGtnOiB0aGlzLm9wdHMuYXBwUGFja2FnZSxcbiAgICBhY3Rpdml0eTogdGhpcy5vcHRzLmFwcEFjdGl2aXR5LFxuICAgIGFjdGlvbjogdGhpcy5vcHRzLmludGVudEFjdGlvbixcbiAgICBjYXRlZ29yeTogdGhpcy5vcHRzLmludGVudENhdGVnb3J5LFxuICAgIGZsYWdzOiB0aGlzLm9wdHMuaW50ZW50RmxhZ3MsXG4gICAgd2FpdFBrZzogdGhpcy5vcHRzLmFwcFdhaXRQYWNrYWdlLFxuICAgIHdhaXRBY3Rpdml0eTogdGhpcy5vcHRzLmFwcFdhaXRBY3Rpdml0eSxcbiAgICB3YWl0Rm9yTGF1bmNoOiB0aGlzLm9wdHMuYXBwV2FpdEZvckxhdW5jaCxcbiAgICB3YWl0RHVyYXRpb246IHRoaXMub3B0cy5hcHBXYWl0RHVyYXRpb24sXG4gICAgb3B0aW9uYWxJbnRlbnRBcmd1bWVudHM6IHRoaXMub3B0cy5vcHRpb25hbEludGVudEFyZ3VtZW50cyxcbiAgICBzdG9wQXBwOiAhdGhpcy5vcHRzLmRvbnRTdG9wQXBwT25SZXNldCxcbiAgICB1c2VyOiB0aGlzLm9wdHMudXNlclByb2ZpbGUsXG4gIH0pO1xufTtcblxuLy8gd2Ugb3ZlcnJpZGUgc2V0VXJsIHRvIHRha2UgYW4gYW5kcm9pZCBVUkkgd2hpY2ggY2FuIGJlIHVzZWQgZm9yIGRlZXAtbGlua2luZ1xuLy8gaW5zaWRlIGFuIGFwcCwgc2ltaWxhciB0byBzdGFydGluZyBhbiBpbnRlbnRcbmNvbW1hbmRzLnNldFVybCA9IGFzeW5jIGZ1bmN0aW9uIHNldFVybCAodXJpKSB7XG4gIGF3YWl0IHRoaXMuYWRiLnN0YXJ0VXJpKHVyaSwgdGhpcy5vcHRzLmFwcFBhY2thZ2UpO1xufTtcblxuLy8gY2xvc2luZyBhcHAgdXNpbmcgZm9yY2Ugc3RvcFxuY29tbWFuZHMuY2xvc2VBcHAgPSBhc3luYyBmdW5jdGlvbiBjbG9zZUFwcCAoKSB7XG4gIGF3YWl0IHRoaXMuYWRiLmZvcmNlU3RvcCh0aGlzLm9wdHMuYXBwUGFja2FnZSk7XG4gIC8vIHJlc2V0IGNvbnRleHQgc2luY2Ugd2UgZG9uJ3Qga25vdyB3aGF0IGtpbmQgb24gY29udGV4dCB3ZSB3aWxsIGVuZCB1cCBhZnRlciBhcHAgbGF1bmNoLlxuICBhd2FpdCB0aGlzLnNldENvbnRleHQoKTtcbn07XG5cbmNvbW1hbmRzLmdldERpc3BsYXlEZW5zaXR5ID0gYXN5bmMgZnVuY3Rpb24gZ2V0RGlzcGxheURlbnNpdHkgKCkge1xuICAvLyBmaXJzdCB0cnkgdGhlIHByb3BlcnR5IGZvciBkZXZpY2VzXG4gIGxldCBvdXQgPSBhd2FpdCB0aGlzLmFkYi5zaGVsbChbJ2dldHByb3AnLCAncm8uc2YubGNkX2RlbnNpdHknXSk7XG4gIGlmIChvdXQpIHtcbiAgICBsZXQgdmFsID0gcGFyc2VJbnQob3V0LCAxMCk7XG4gICAgLy8gaWYgdGhlIHZhbHVlIGlzIE5hTiwgdHJ5IGdldHRpbmcgdGhlIGVtdWxhdG9yIHByb3BlcnR5XG4gICAgaWYgKCFpc05hTih2YWwpKSB7XG4gICAgICByZXR1cm4gdmFsO1xuICAgIH1cbiAgICB0aGlzLmxvZy5kZWJ1ZyhgUGFyc2VkIGRlbnNpdHkgdmFsdWUgd2FzIE5hTjogXCIke291dH1cImApO1xuICB9XG4gIC8vIGZhbGxiYWNrIHRvIHRyeWluZyBwcm9wZXJ0eSBmb3IgZW11bGF0b3JzXG4gIG91dCA9IGF3YWl0IHRoaXMuYWRiLnNoZWxsKFsnZ2V0cHJvcCcsICdxZW11LnNmLmxjZF9kZW5zaXR5J10pO1xuICBpZiAob3V0KSB7XG4gICAgbGV0IHZhbCA9IHBhcnNlSW50KG91dCwgMTApO1xuICAgIGlmICghaXNOYU4odmFsKSkge1xuICAgICAgcmV0dXJuIHZhbDtcbiAgICB9XG4gICAgdGhpcy5sb2cuZGVidWcoYFBhcnNlZCBkZW5zaXR5IHZhbHVlIHdhcyBOYU46IFwiJHtvdXR9XCJgKTtcbiAgfVxuICAvLyBjb3VsZG4ndCBnZXQgYW55dGhpbmcsIHNvIGVycm9yIG91dFxuICB0aGlzLmxvZy5lcnJvckFuZFRocm93KCdGYWlsZWQgdG8gZ2V0IGRpc3BsYXkgZGVuc2l0eSBwcm9wZXJ0eS4nKTtcbn07XG5cbmNvbW1hbmRzLm1vYmlsZVBlcmZvcm1FZGl0b3JBY3Rpb24gPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVQZXJmb3JtRWRpdG9yQWN0aW9uIChvcHRzID0ge30pIHtcbiAgY29uc3Qge2FjdGlvbn0gPSBvcHRzO1xuICBpZiAoIXV0aWwuaGFzVmFsdWUoYWN0aW9uKSkge1xuICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZEFyZ3VtZW50RXJyb3IoYCdhY3Rpb24nIGFyZ3VtZW50IGlzIHJlcXVpcmVkYCk7XG4gIH1cblxuICBhd2FpdCB0aGlzLmFkYi5wZXJmb3JtRWRpdG9yQWN0aW9uKGFjdGlvbik7XG59O1xuXG5jb25zdCBQRVJNSVNTSU9OX0FDVElPTiA9IHtcbiAgR1JBTlQ6ICdncmFudCcsXG4gIFJFVk9LRTogJ3Jldm9rZScsXG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IENoYW5nZVBlcm1pc3Npb25zT3B0aW9uc1xuICogQHByb3BlcnR5IHshc3RyaW5nfEFycmF5PHN0cmluZz59IHBlcm1pc3Npb25zIC0gVGhlIGZ1bGwgbmFtZSBvZiB0aGUgcGVybWlzc2lvbiB0byBiZSBjaGFuZ2VkXG4gKiBvciBhIGxpc3Qgb2YgcGVybWlzc2lvbnMuIE1hbmRhdG9yeSBhcmd1bWVudC5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBhcHBQYWNrYWdlIFt0aGlzLm9wdHMuYXBwUGFja2FnZV0gLSBUaGUgYXBwbGljYXRpb24gcGFja2FnZSB0byBzZXQgY2hhbmdlXG4gKiBwZXJtaXNzaW9ucyBvbi4gRGVmYXVsdHMgdG8gdGhlIHBhY2thZ2UgbmFtZSB1bmRlciB0ZXN0LlxuICogQHByb3BlcnR5IHtzdHJpbmd9IGFjdGlvbiBbZ3JhbnRdIC0gT25lIG9mIGBQRVJNSVNTSU9OX0FDVElPTmAgdmFsdWVzXG4gKi9cblxuLyoqXG4gKiBDaGFuZ2VzIHBhY2thZ2UgcGVybWlzc2lvbnMgaW4gcnVudGltZS5cbiAqXG4gKiBAcGFyYW0gez9DaGFuZ2VQZXJtaXNzaW9uc09wdGlvbnN9IG9wdHMgLSBBdmFpbGFibGUgb3B0aW9ucyBtYXBwaW5nLlxuICogQHRocm93cyB7RXJyb3J9IGlmIHRoZXJlIHdhcyBhIGZhaWx1cmUgd2hpbGUgY2hhbmdpbmcgcGVybWlzc2lvbnNcbiAqL1xuY29tbWFuZHMubW9iaWxlQ2hhbmdlUGVybWlzc2lvbnMgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVDaGFuZ2VQZXJtaXNzaW9ucyAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBwZXJtaXNzaW9ucyxcbiAgICBhcHBQYWNrYWdlID0gdGhpcy5vcHRzLmFwcFBhY2thZ2UsXG4gICAgYWN0aW9uID0gUEVSTUlTU0lPTl9BQ1RJT04uR1JBTlQsXG4gIH0gPSBvcHRzO1xuICBpZiAoIXV0aWwuaGFzVmFsdWUocGVybWlzc2lvbnMpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihgJ3Blcm1pc3Npb25zJyBhcmd1bWVudCBpcyByZXF1aXJlZGApO1xuICB9XG5cbiAgbGV0IGFjdGlvbkZ1bmM7XG4gIHN3aXRjaCAoXy50b0xvd2VyKGFjdGlvbikpIHtcbiAgICBjYXNlIFBFUk1JU1NJT05fQUNUSU9OLkdSQU5UOlxuICAgICAgYWN0aW9uRnVuYyA9IChhcHBQYWNrYWdlLCBwZXJtaXNzaW9uKSA9PiB0aGlzLmFkYi5ncmFudFBlcm1pc3Npb24oYXBwUGFja2FnZSwgcGVybWlzc2lvbik7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFBFUk1JU1NJT05fQUNUSU9OLlJFVk9LRTpcbiAgICAgIGFjdGlvbkZ1bmMgPSAoYXBwUGFja2FnZSwgcGVybWlzc2lvbikgPT4gdGhpcy5hZGIucmV2b2tlUGVybWlzc2lvbihhcHBQYWNrYWdlLCBwZXJtaXNzaW9uKTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRBcmd1bWVudEVycm9yKGBVbmtub3duIGFjdGlvbiAnJHthY3Rpb259Jy4gYCArXG4gICAgICAgIGBPbmx5ICR7SlNPTi5zdHJpbmdpZnkoXy52YWx1ZXMoUEVSTUlTU0lPTl9BQ1RJT04pKX0gYWN0aW9ucyBhcmUgc3VwcG9ydGVkYCk7XG4gIH1cbiAgZm9yIChjb25zdCBwZXJtaXNzaW9uIG9mIChfLmlzQXJyYXkocGVybWlzc2lvbnMpID8gcGVybWlzc2lvbnMgOiBbcGVybWlzc2lvbnNdKSkge1xuICAgIGF3YWl0IGFjdGlvbkZ1bmMoYXBwUGFja2FnZSwgcGVybWlzc2lvbik7XG4gIH1cbn07XG5cbmNvbnN0IFBFUk1JU1NJT05TX1RZUEUgPSB7XG4gIERFTklFRDogJ2RlbmllZCcsXG4gIEdSQU5URUQ6ICdncmFudGVkJyxcbiAgUkVRVUVTVEVEOiAncmVxdWVzdGVkJyxcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gR2V0UGVybWlzc2lvbnNPcHRpb25zXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdHlwZSBbcmVxdWVzdGVkXSAtIE9uZSBvZiBwb3NzaWJsZSBwZXJtaXNzaW9uIHR5cGVzIHRvIGdldC5cbiAqIENhbiBiZSBhbnkgb2YgYFBFUk1JU1NJT05TX1RZUEVgIHZhbHVlcy5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBhcHBQYWNrYWdlIFt0aGlzLm9wdHMuYXBwUGFja2FnZV0gLSBUaGUgYXBwbGljYXRpb24gcGFja2FnZSB0byBzZXQgY2hhbmdlXG4gKiBwZXJtaXNzaW9ucyBvbi4gRGVmYXVsdHMgdG8gdGhlIHBhY2thZ2UgbmFtZSB1bmRlciB0ZXN0LlxuICovXG5cbi8qKlxuICogR2V0cyBydW50aW1lIHBlcm1pc3Npb25zIGxpc3QgZm9yIHRoZSBnaXZlbiBhcHBsaWNhdGlvbiBwYWNrYWdlLlxuICpcbiAqIEBwYXJhbSB7R2V0UGVybWlzc2lvbnNPcHRpb25zfSBvcHRzIC0gQXZhaWxhYmxlIG9wdGlvbnMgbWFwcGluZy5cbiAqIEByZXR1cm5zIHtBcnJheTxzdHJpbmc+fSBUaGUgbGlzdCBvZiByZXRyaWV2ZWQgcGVybWlzc2lvbnMgZm9yIHRoZSBnaXZlbiB0eXBlXG4gKiAoY2FuIGFsc28gYmUgZW1wdHkpLlxuICogQHRocm93cyB7RXJyb3J9IGlmIHRoZXJlIHdhcyBhbiBlcnJvciB3aGlsZSBnZXR0aW5nIHBlcm1pc3Npb25zLlxuICovXG5jb21tYW5kcy5tb2JpbGVHZXRQZXJtaXNzaW9ucyA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZUdldFBlcm1pc3Npb25zIChvcHRzID0ge30pIHtcbiAgY29uc3Qge1xuICAgIHR5cGUgPSBQRVJNSVNTSU9OU19UWVBFLlJFUVVFU1RFRCxcbiAgICBhcHBQYWNrYWdlID0gdGhpcy5vcHRzLmFwcFBhY2thZ2UsXG4gIH0gPSBvcHRzO1xuXG4gIGxldCBhY3Rpb25GdW5jO1xuICBzd2l0Y2ggKF8udG9Mb3dlcih0eXBlKSkge1xuICAgIGNhc2UgUEVSTUlTU0lPTlNfVFlQRS5SRVFVRVNURUQ6XG4gICAgICBhY3Rpb25GdW5jID0gKGFwcFBhY2thZ2UpID0+IHRoaXMuYWRiLmdldFJlcVBlcm1pc3Npb25zKGFwcFBhY2thZ2UpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBQRVJNSVNTSU9OU19UWVBFLkdSQU5URUQ6XG4gICAgICBhY3Rpb25GdW5jID0gKGFwcFBhY2thZ2UpID0+IHRoaXMuYWRiLmdldEdyYW50ZWRQZXJtaXNzaW9ucyhhcHBQYWNrYWdlKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgUEVSTUlTU0lPTlNfVFlQRS5ERU5JRUQ6XG4gICAgICBhY3Rpb25GdW5jID0gKGFwcFBhY2thZ2UpID0+IHRoaXMuYWRiLmdldERlbmllZFBlcm1pc3Npb25zKGFwcFBhY2thZ2UpO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZEFyZ3VtZW50RXJyb3IoYFVua25vd24gcGVybWlzc2lvbnMgdHlwZSAnJHt0eXBlfScuIGAgK1xuICAgICAgICBgT25seSAke0pTT04uc3RyaW5naWZ5KF8udmFsdWVzKFBFUk1JU1NJT05TX1RZUEUpKX0gdHlwZXMgYXJlIHN1cHBvcnRlZGApO1xuICB9XG4gIHJldHVybiBhd2FpdCBhY3Rpb25GdW5jKGFwcFBhY2thZ2UpO1xufTtcblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIGxpc3Qgb2YgcmVjZW50IHN5c3RlbSBub3RpZmljYXRpb25zLlxuICpcbiAqIEByZXR1cm5zIHtPYmplY3R9IFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBvbiBgYWRiLmdldE5vdGlmaWNhdGlvbnNgIGZvclxuICogbW9yZSBkZXRhaWxzXG4gKi9cbmNvbW1hbmRzLm1vYmlsZUdldE5vdGlmaWNhdGlvbnMgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVHZXROb3RpZmljYXRpb25zICgpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYWRiLmdldE5vdGlmaWNhdGlvbnMoKTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gU21zTGlzdE9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBtYXggWzEwMF0gLSBUaGUgbWF4aW11bSBjb3VudCBvZiByZWNlbnQgU01TIG1lc3NhZ2VzXG4gKiB0byByZXRyaWV2ZVxuICovXG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBsaXN0IG9mIHJlY2VudCBTTVMgbWVzc2FnZXMgd2l0aCB0aGVpciBwcm9wZXJ0aWVzLlxuICpcbiAqIEBwYXJhbSB7U21zTGlzdE9wdGlvbnN9IG9wdHNcbiAqIEByZXR1cm5zIHtPYmplY3R9IFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBvbiBgYWRiLmdldFNtc0xpc3RgIGZvclxuICogbW9yZSBkZXRhaWxzXG4gKi9cbmNvbW1hbmRzLm1vYmlsZUxpc3RTbXMgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVMaXN0U21zIChvcHRzID0ge30pIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYWRiLmdldFNtc0xpc3Qob3B0cyk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFVubG9ja09wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBrZXkgVGhlIHVubG9jayBrZXkuIFRoZSB2YWx1ZSBvZiB0aGlzIGtleSBkZXBlbmRzXG4gKiBvbiB0aGUgYWN0dWFsIHVubG9jayB0eXBlIGFuZCBjb3VsZCBiZSBhIHBpbi9wYXNzd29yZC9wYXR0ZXJuIHZhbHVlIG9yXG4gKiBhIGJpb21ldHJpYyBmaW5nZXIgaWQuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdHlwZSBUaGUgdW5sb2NrIHR5cGUuIFRoZSBmb2xsb3dpbmcgdW5sb2NrIHR5cGVzXG4gKiBhcmUgc3VwcG9ydGVkOiBgcGluYCwgYHBpbldpdGhLZXlFdmVudGAsIGBwYXNzd29yZGAsIGBwYXR0ZXJuYCBhbmQgYGZpbmdlcnByaW50YC5cbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gc3RyYXRlZ3kgRWl0aGVyICdsb2Nrc2V0dGluZ3MnIChkZWZhdWx0KSBvciAndWlhdXRvbWF0b3InLlxuICogU2V0dGluZyBpdCB0byAndWlhdXRvbWF0b3InIHdpbGwgZW5mb3JjZSB0aGUgZHJpdmVyIHRvIGF2b2lkIHVzaW5nIHNwZWNpYWxcbiAqIEFEQiBzaG9ydGN1dHMgaW4gb3JkZXIgdG8gc3BlZWQgdXAgdGhlIHVubG9jayBwcm9jZWR1cmUuXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IHRpbWVvdXRNcyBbMjAwMF0gVGhlIG1heGltdW0gdGltZSBpbiBtaWxsaXNlY29uZHNcbiAqIHRvIHdhaXQgdW50aWwgdGhlIHNjcmVlbiBnZXRzIHVubG9ja2VkXG4gKi9cblxuLyoqXG4gKiBVbmxvY2tzIHRoZSBkZXZpY2UgaWYgaXQgaXMgbG9ja2VkLiBOb29wIGlmIHRoZSBkZXZpY2UncyBzY3JlZW4gaXMgbm90IGxvY2tlZC5cbiAqXG4gKiBAcGFyYW0gez9VbmxvY2tPcHRpb25zfSBvcHRzXG4gKiBAdGhyb3dzIHtFcnJvcn0gaWYgdW5sb2NrIG9wZXJhdGlvbiBmYWlscyBvciB0aGUgcHJvdmlkZWRcbiAqIGFyZ3VtZW50cyBhcmUgbm90IHZhbGlkXG4gKi9cbmNvbW1hbmRzLm1vYmlsZVVubG9jayA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVVubG9jayAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHsga2V5LCB0eXBlLCBzdHJhdGVneSwgdGltZW91dE1zIH0gPSBvcHRzO1xuICBhd2FpdCBhbmRyb2lkSGVscGVycy51bmxvY2sodGhpcywgdGhpcy5hZGIsIHtcbiAgICB1bmxvY2tLZXk6IGtleSxcbiAgICB1bmxvY2tUeXBlOiB0eXBlLFxuICAgIHVubG9ja1N0cmF0ZWd5OiBzdHJhdGVneSxcbiAgICB1bmxvY2tTdWNjZXNzVGltZW91dDogdGltZW91dE1zLFxuICB9KTtcbn07XG5cbk9iamVjdC5hc3NpZ24oZXh0ZW5zaW9ucywgY29tbWFuZHMsIGhlbHBlcnMpO1xuZXhwb3J0IHsgY29tbWFuZHMsIGhlbHBlcnMgfTtcbmV4cG9ydCBkZWZhdWx0IGV4dGVuc2lvbnM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEscUJBQXFCLEdBQUcsc0JBQTlCO0FBRUEsSUFBSUMsUUFBUSxHQUFHLEVBQWY7QUFBQSxJQUFtQkMsT0FBTyxHQUFHLEVBQTdCO0FBQUEsSUFBaUNDLFVBQVUsR0FBRyxFQUE5Qzs7OztBQUVBRixRQUFRLENBQUNHLElBQVQsR0FBZ0IsZUFBZUEsSUFBZixDQUFxQkEsSUFBckIsRUFBMkI7RUFFekNBLElBQUksR0FBR0MsZUFBQSxDQUFFQyxPQUFGLENBQVVGLElBQVYsSUFBa0JBLElBQUksQ0FBQ0csSUFBTCxDQUFVLEVBQVYsQ0FBbEIsR0FBa0NILElBQXpDO0VBQ0EsSUFBSUksTUFBTSxHQUFHO0lBQ1hDLElBQUksRUFBRUwsSUFESztJQUVYTSxPQUFPLEVBQUU7RUFGRSxDQUFiOztFQUlBLElBQUksS0FBS0MsSUFBTCxDQUFVQyxlQUFkLEVBQStCO0lBQzdCSixNQUFNLENBQUNJLGVBQVAsR0FBeUIsSUFBekI7RUFDRDs7RUFDRCxNQUFNLEtBQUtDLFVBQUwsQ0FBZ0JMLE1BQWhCLENBQU47QUFDRCxDQVhEOztBQWFBUCxRQUFRLENBQUNZLFVBQVQsR0FBc0IsZUFBZUEsVUFBZixDQUEyQkwsTUFBM0IsRUFBbUM7RUFDdkQsT0FBTyxNQUFNLEtBQUtNLFNBQUwsQ0FBZUMsVUFBZixDQUEwQixTQUExQixFQUFxQ1AsTUFBckMsQ0FBYjtBQUNELENBRkQ7O0FB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
|
|
422
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2dlbmVyYWwuanMiLCJuYW1lcyI6WyJNT01FTlRfRk9STUFUX0lTTzg2MDEiLCJjb21tYW5kcyIsImhlbHBlcnMiLCJleHRlbnNpb25zIiwia2V5cyIsIl8iLCJpc0FycmF5Iiwiam9pbiIsInBhcmFtcyIsInRleHQiLCJyZXBsYWNlIiwib3B0cyIsInVuaWNvZGVLZXlib2FyZCIsImRvU2VuZEtleXMiLCJib290c3RyYXAiLCJzZW5kQWN0aW9uIiwiZ2V0RGV2aWNlVGltZSIsImZvcm1hdCIsImxvZyIsImRlYnVnIiwiZGV2aWNlVGltZXN0YW1wIiwiYWRiIiwic2hlbGwiLCJ0cmltIiwicGFyc2VkVGltZXN0YW1wIiwibW9tZW50IiwidXRjIiwiaXNWYWxpZCIsIndhcm4iLCJ1dGNPZmZzZXQiLCJfdHptIiwibW9iaWxlR2V0RGV2aWNlVGltZSIsImdldFBhZ2VTb3VyY2UiLCJiYWNrIiwiaXNLZXlib2FyZFNob3duIiwiaXNTb2Z0S2V5Ym9hcmRQcmVzZW50IiwiaGlkZUtleWJvYXJkIiwib3BlblNldHRpbmdzQWN0aXZpdHkiLCJzZXR0aW5nIiwiYXBwUGFja2FnZSIsImFwcEFjdGl2aXR5IiwiZ2V0Rm9jdXNlZFBhY2thZ2VBbmRBY3Rpdml0eSIsIndhaXRGb3JOb3RBY3Rpdml0eSIsImdldFdpbmRvd1NpemUiLCJnZXRXaW5kb3dSZWN0Iiwid2lkdGgiLCJoZWlnaHQiLCJ4IiwieSIsImdldEN1cnJlbnRBY3Rpdml0eSIsImdldEN1cnJlbnRQYWNrYWdlIiwiYmFja2dyb3VuZCIsInNlY29uZHMiLCJnb1RvSG9tZSIsInNsZWVwTXMiLCJ0aHJlc2hvbGRNcyIsImludGVydmFsTXMiLCJtaW4iLCJwYXJzZUludCIsInByb2dyZXNzQ2IiLCJlbGFwc2VkTXMiLCJwcm9ncmVzcyIsIndhaXRTZWNzIiwidG9GaXhlZCIsInByb2dyZXNzUGN0IiwibG9uZ1NsZWVwIiwiYXJncyIsIl9jYWNoZWRBY3Rpdml0eUFyZ3MiLCJhY3RpdmF0ZUFwcCIsImlnbiIsImFwcFdhaXRQYWNrYWdlIiwiYXBwV2FpdEFjdGl2aXR5Iiwic3BsaXQiLCJpbmNsdWRlcyIsInBrZyIsImFjdGl2aXR5IiwiYWN0aW9uIiwiaW50ZW50QWN0aW9uIiwiY2F0ZWdvcnkiLCJpbnRlbnRDYXRlZ29yeSIsImZsYWdzIiwiaW50ZW50RmxhZ3MiLCJ3YWl0UGtnIiwid2FpdEFjdGl2aXR5Iiwid2FpdEZvckxhdW5jaCIsImFwcFdhaXRGb3JMYXVuY2giLCJ3YWl0RHVyYXRpb24iLCJhcHBXYWl0RHVyYXRpb24iLCJvcHRpb25hbEludGVudEFyZ3VtZW50cyIsInN0b3BBcHAiLCJ1c2VyIiwidXNlclByb2ZpbGUiLCJ1dGlsIiwiZmlsdGVyT2JqZWN0IiwiSlNPTiIsInN0cmluZ2lmeSIsInN0YXJ0QXBwIiwiZ2V0U3RyaW5ncyIsImxhbmd1YWdlIiwiZ2V0RGV2aWNlTGFuZ3VhZ2UiLCJpbmZvIiwicHJlcHJvY2Vzc1N0cmluZ3NNYXAiLCJtYXBwaW5nIiwicmVzdWx0Iiwia2V5IiwidmFsdWUiLCJ0b1BhaXJzIiwiaXNTdHJpbmciLCJhcGtTdHJpbmdzIiwiYW5kcm9pZEhlbHBlcnMiLCJwdXNoU3RyaW5ncyIsImxhdW5jaEFwcCIsImluaXRBVVQiLCJzdGFydEFVVCIsInN0YXJ0QWN0aXZpdHkiLCJkb250U3RvcEFwcE9uUmVzZXQiLCJoYXNWYWx1ZSIsInJlc2V0IiwicmVzZXRBcHAiLCJPYmplY3QiLCJhc3NpZ24iLCJmYXN0UmVzZXQiLCJzZXRDb250ZXh0IiwiaXNDaHJvbWVTZXNzaW9uIiwic3RhcnRDaHJvbWVTZXNzaW9uIiwic2V0VXJsIiwidXJpIiwic3RhcnRVcmkiLCJjbG9zZUFwcCIsImZvcmNlU3RvcCIsImdldERpc3BsYXlEZW5zaXR5Iiwib3V0IiwidmFsIiwiaXNOYU4iLCJlcnJvckFuZFRocm93IiwibW9iaWxlUGVyZm9ybUVkaXRvckFjdGlvbiIsImVycm9ycyIsIkludmFsaWRBcmd1bWVudEVycm9yIiwicGVyZm9ybUVkaXRvckFjdGlvbiIsIlBFUk1JU1NJT05fQUNUSU9OIiwiR1JBTlQiLCJSRVZPS0UiLCJtb2JpbGVDaGFuZ2VQZXJtaXNzaW9ucyIsInBlcm1pc3Npb25zIiwiYWN0aW9uRnVuYyIsInRvTG93ZXIiLCJwZXJtaXNzaW9uIiwiZ3JhbnRQZXJtaXNzaW9uIiwicmV2b2tlUGVybWlzc2lvbiIsInZhbHVlcyIsIlBFUk1JU1NJT05TX1RZUEUiLCJERU5JRUQiLCJHUkFOVEVEIiwiUkVRVUVTVEVEIiwibW9iaWxlR2V0UGVybWlzc2lvbnMiLCJ0eXBlIiwiZ2V0UmVxUGVybWlzc2lvbnMiLCJnZXRHcmFudGVkUGVybWlzc2lvbnMiLCJnZXREZW5pZWRQZXJtaXNzaW9ucyIsIm1vYmlsZUdldE5vdGlmaWNhdGlvbnMiLCJnZXROb3RpZmljYXRpb25zIiwibW9iaWxlTGlzdFNtcyIsImdldFNtc0xpc3QiLCJtb2JpbGVVbmxvY2siLCJzdHJhdGVneSIsInRpbWVvdXRNcyIsInVubG9jayIsInVubG9ja0tleSIsInVubG9ja1R5cGUiLCJ1bmxvY2tTdHJhdGVneSIsInVubG9ja1N1Y2Nlc3NUaW1lb3V0Il0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLiIsInNvdXJjZXMiOlsibGliL2NvbW1hbmRzL2dlbmVyYWwuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBhbmRyb2lkSGVscGVycyBmcm9tICcuLi9hbmRyb2lkLWhlbHBlcnMnO1xuaW1wb3J0IHsgdXRpbCB9IGZyb20gJ2FwcGl1bS9zdXBwb3J0JztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IGxvbmdTbGVlcCB9IGZyb20gJ2FzeW5jYm94JztcbmltcG9ydCB7IGVycm9ycyB9IGZyb20gJ2FwcGl1bS9kcml2ZXInO1xuXG5jb25zdCBNT01FTlRfRk9STUFUX0lTTzg2MDEgPSAnWVlZWS1NTS1ERFRISDptbTpzc1onO1xuXG5sZXQgY29tbWFuZHMgPSB7fSwgaGVscGVycyA9IHt9LCBleHRlbnNpb25zID0ge307XG5cbmNvbW1hbmRzLmtleXMgPSBhc3luYyBmdW5jdGlvbiBrZXlzIChrZXlzKSB7XG4gIC8vIFByb3RvY29sIHNlbmRzIGFuIGFycmF5OyByZXRoaW5rIGFwcHJvYWNoXG4gIGtleXMgPSBfLmlzQXJyYXkoa2V5cykgPyBrZXlzLmpvaW4oJycpIDoga2V5cztcbiAgbGV0IHBhcmFtcyA9IHtcbiAgICB0ZXh0OiBrZXlzLFxuICAgIHJlcGxhY2U6IGZhbHNlXG4gIH07XG4gIGlmICh0aGlzLm9wdHMudW5pY29kZUtleWJvYXJkKSB7XG4gICAgcGFyYW1zLnVuaWNvZGVLZXlib2FyZCA9IHRydWU7XG4gIH1cbiAgYXdhaXQgdGhpcy5kb1NlbmRLZXlzKHBhcmFtcyk7XG59O1xuXG5jb21tYW5kcy5kb1NlbmRLZXlzID0gYXN5bmMgZnVuY3Rpb24gZG9TZW5kS2V5cyAocGFyYW1zKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLmJvb3RzdHJhcC5zZW5kQWN0aW9uKCdzZXRUZXh0JywgcGFyYW1zKTtcbn07XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBjdXJyZW50IGRldmljZSdzIHRpbWVzdGFtcC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gZm9ybWF0IC0gVGhlIHNldCBvZiBmb3JtYXQgc3BlY2lmaWVycy4gUmVhZFxuICogICAgICAgICAgICAgICAgICAgICAgICAgIGh0dHBzOi8vbW9tZW50anMuY29tL2RvY3MvIHRvIGdldCB0aGUgZnVsbCBsaXN0IG9mIHN1cHBvcnRlZFxuICogICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGV0aW1lIGZvcm1hdCBzcGVjaWZpZXJzLiBUaGUgZGVmYXVsdCBmb3JtYXQgaXNcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICBgWVlZWS1NTS1ERFRISDptbTpzc1pgLCB3aGljaCBjb21wbGllcyB0byBJU08tODYwMVxuICogQHJldHVybiB7c3RyaW5nfSBGb3JtYXR0ZWQgZGF0ZXRpbWUgc3RyaW5nIG9yIHRoZSByYXcgY29tbWFuZCBvdXRwdXQgaWYgZm9ybWF0dGluZyBmYWlsc1xuICovXG5jb21tYW5kcy5nZXREZXZpY2VUaW1lID0gYXN5bmMgZnVuY3Rpb24gZ2V0RGV2aWNlVGltZSAoZm9ybWF0ID0gTU9NRU5UX0ZPUk1BVF9JU084NjAxKSB7XG4gIHRoaXMubG9nLmRlYnVnKCdBdHRlbXB0aW5nIHRvIGNhcHR1cmUgYW5kcm9pZCBkZXZpY2UgZGF0ZSBhbmQgdGltZS4gJyArXG4gICAgYFRoZSBmb3JtYXQgc3BlY2lmaWVyIGlzICcke2Zvcm1hdH0nYCk7XG4gIGNvbnN0IGRldmljZVRpbWVzdGFtcCA9IChhd2FpdCB0aGlzLmFkYi5zaGVsbChbJ2RhdGUnLCAnKyVZLSVtLSVkVCVUJXonXSkpLnRyaW0oKTtcbiAgdGhpcy5sb2cuZGVidWcoYEdvdCBkZXZpY2UgdGltZXN0YW1wOiAke2RldmljZVRpbWVzdGFtcH1gKTtcbiAgY29uc3QgcGFyc2VkVGltZXN0YW1wID0gbW9tZW50LnV0YyhkZXZpY2VUaW1lc3RhbXAsICdZWVlZLU1NLUREVEhIOm1tOnNzWlonKTtcbiAgaWYgKCFwYXJzZWRUaW1lc3RhbXAuaXNWYWxpZCgpKSB7XG4gICAgdGhpcy5sb2cud2FybignQ2Fubm90IHBhcnNlIHRoZSByZXR1cm5lZCB0aW1lc3RhbXAuIFJldHVybmluZyBhcyBpcycpO1xuICAgIHJldHVybiBkZXZpY2VUaW1lc3RhbXA7XG4gIH1cbiAgcmV0dXJuIHBhcnNlZFRpbWVzdGFtcC51dGNPZmZzZXQocGFyc2VkVGltZXN0YW1wLl90em0gfHwgMCkuZm9ybWF0KGZvcm1hdCk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IERldmljZVRpbWVPcHRpb25zXG4gKiBAcHJvcGVydHkge3N0cmluZ30gZm9ybWF0IFtZWVlZLU1NLUREVEhIOm1tOnNzWl0gLSBTZWUgZ2V0RGV2aWNlVGltZSNmb3JtYXRcbiAqL1xuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgY3VycmVudCBkZXZpY2UgdGltZVxuICpcbiAqIEBwYXJhbSB7RGV2aWNlVGltZU9wdGlvbnN9IG9wdHNcbiAqIEByZXR1cm4ge3N0cmluZ30gRm9ybWF0dGVkIGRhdGV0aW1lIHN0cmluZyBvciB0aGUgcmF3IGNvbW1hbmQgb3V0cHV0IGlmIGZvcm1hdHRpbmcgZmFpbHNcbiAqL1xuY29tbWFuZHMubW9iaWxlR2V0RGV2aWNlVGltZSA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZUdldERldmljZVRpbWUgKG9wdHMgPSB7fSkge1xuICByZXR1cm4gYXdhaXQgdGhpcy5nZXREZXZpY2VUaW1lKG9wdHMuZm9ybWF0KTtcbn07XG5cbmNvbW1hbmRzLmdldFBhZ2VTb3VyY2UgPSBhc3luYyBmdW5jdGlvbiBnZXRQYWdlU291cmNlICgpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYm9vdHN0cmFwLnNlbmRBY3Rpb24oJ3NvdXJjZScpO1xufTtcblxuY29tbWFuZHMuYmFjayA9IGFzeW5jIGZ1bmN0aW9uIGJhY2sgKCkge1xuICByZXR1cm4gYXdhaXQgdGhpcy5ib290c3RyYXAuc2VuZEFjdGlvbigncHJlc3NCYWNrJyk7XG59O1xuXG5jb21tYW5kcy5pc0tleWJvYXJkU2hvd24gPSBhc3luYyBmdW5jdGlvbiBpc0tleWJvYXJkU2hvd24gKCkge1xuICBjb25zdCB7aXNLZXlib2FyZFNob3dufSA9IGF3YWl0IHRoaXMuYWRiLmlzU29mdEtleWJvYXJkUHJlc2VudCgpO1xuICByZXR1cm4gaXNLZXlib2FyZFNob3duO1xufTtcblxuY29tbWFuZHMuaGlkZUtleWJvYXJkID0gYXN5bmMgZnVuY3Rpb24gaGlkZUtleWJvYXJkICgpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYWRiLmhpZGVLZXlib2FyZCgpO1xufTtcblxuY29tbWFuZHMub3BlblNldHRpbmdzQWN0aXZpdHkgPSBhc3luYyBmdW5jdGlvbiBvcGVuU2V0dGluZ3NBY3Rpdml0eSAoc2V0dGluZykge1xuICBsZXQge2FwcFBhY2thZ2UsIGFwcEFjdGl2aXR5fSA9IGF3YWl0IHRoaXMuYWRiLmdldEZvY3VzZWRQYWNrYWdlQW5kQWN0aXZpdHkoKTtcbiAgYXdhaXQgdGhpcy5hZGIuc2hlbGwoWydhbScsICdzdGFydCcsICctYScsIGBhbmRyb2lkLnNldHRpbmdzLiR7c2V0dGluZ31gXSk7XG4gIGF3YWl0IHRoaXMuYWRiLndhaXRGb3JOb3RBY3Rpdml0eShhcHBQYWNrYWdlLCBhcHBBY3Rpdml0eSwgNTAwMCk7XG59O1xuXG5jb21tYW5kcy5nZXRXaW5kb3dTaXplID0gYXN5bmMgZnVuY3Rpb24gZ2V0V2luZG93U2l6ZSAoKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLmJvb3RzdHJhcC5zZW5kQWN0aW9uKCdnZXREZXZpY2VTaXplJyk7XG59O1xuXG4vLyBGb3IgVzNDXG5jb21tYW5kcy5nZXRXaW5kb3dSZWN0ID0gYXN5bmMgZnVuY3Rpb24gZ2V0V2luZG93UmVjdCAoKSB7XG4gIGNvbnN0IHsgd2lkdGgsIGhlaWdodCB9ID0gYXdhaXQgdGhpcy5nZXRXaW5kb3dTaXplKCk7XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHg6IDAsXG4gICAgeTogMFxuICB9O1xufTtcblxuY29tbWFuZHMuZ2V0Q3VycmVudEFjdGl2aXR5ID0gYXN5bmMgZnVuY3Rpb24gZ2V0Q3VycmVudEFjdGl2aXR5ICgpIHtcbiAgcmV0dXJuIChhd2FpdCB0aGlzLmFkYi5nZXRGb2N1c2VkUGFja2FnZUFuZEFjdGl2aXR5KCkpLmFwcEFjdGl2aXR5O1xufTtcblxuY29tbWFuZHMuZ2V0Q3VycmVudFBhY2thZ2UgPSBhc3luYyBmdW5jdGlvbiBnZXRDdXJyZW50UGFja2FnZSAoKSB7XG4gIHJldHVybiAoYXdhaXQgdGhpcy5hZGIuZ2V0Rm9jdXNlZFBhY2thZ2VBbmRBY3Rpdml0eSgpKS5hcHBQYWNrYWdlO1xufTtcblxuY29tbWFuZHMuYmFja2dyb3VuZCA9IGFzeW5jIGZ1bmN0aW9uIGJhY2tncm91bmQgKHNlY29uZHMpIHtcbiAgaWYgKHNlY29uZHMgPCAwKSB7XG4gICAgLy8gaWYgdXNlciBwYXNzZXMgaW4gYSBuZWdhdGl2ZSBzZWNvbmRzIHZhbHVlLCBpbnRlcnByZXQgdGhhdCBhcyB0aGUgaW5zdHJ1Y3Rpb25cbiAgICAvLyB0byBub3QgYnJpbmcgdGhlIGFwcCBiYWNrIGF0IGFsbFxuICAgIGF3YWl0IHRoaXMuYWRiLmdvVG9Ib21lKCk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgbGV0IHthcHBQYWNrYWdlLCBhcHBBY3Rpdml0eX0gPSBhd2FpdCB0aGlzLmFkYi5nZXRGb2N1c2VkUGFja2FnZUFuZEFjdGl2aXR5KCk7XG4gIGF3YWl0IHRoaXMuYWRiLmdvVG9Ib21lKCk7XG5cbiAgLy8gcGVvcGxlIGNhbiB3YWl0IGZvciBhIGxvbmcgdGltZSwgc28gdG8gYmUgc2FmZSBsZXQncyB1c2UgdGhlIGxvbmdTbGVlcCBmdW5jdGlvbiBhbmQgbG9nXG4gIC8vIHByb2dyZXNzIHBlcmlvZGljYWxseS5cbiAgY29uc3Qgc2xlZXBNcyA9IHNlY29uZHMgKiAxMDAwO1xuICBjb25zdCB0aHJlc2hvbGRNcyA9IDMwICogMTAwMDsgLy8gdXNlIHRoZSBzcGluLXdhaXQgZm9yIGFueXRoaW5nIG92ZXIgdGhpcyB0aHJlc2hvbGRcbiAgLy8gZm9yIG91ciBzcGluIGludGVydmFsLCB1c2UgMSUgb2YgdGhlIHRvdGFsIHdhaXQgdGltZSwgYnV0IG5vdGhpbmcgYmlnZ2VyIHRoYW4gMzBzXG4gIGNvbnN0IGludGVydmFsTXMgPSBfLm1pbihbMzAgKiAxMDAwLCBwYXJzZUludChzbGVlcE1zIC8gMTAwLCAxMCldKTtcbiAgY29uc3QgcHJvZ3Jlc3NDYiA9ICh7ZWxhcHNlZE1zLCBwcm9ncmVzc30pID0+IHtcbiAgICBjb25zdCB3YWl0U2VjcyA9IChlbGFwc2VkTXMgLyAxMDAwKS50b0ZpeGVkKDApO1xuICAgIGNvbnN0IHByb2dyZXNzUGN0ID0gKHByb2dyZXNzICogMTAwKS50b0ZpeGVkKDIpO1xuICAgIHRoaXMubG9nLmRlYnVnKGBXYWl0ZWQgJHt3YWl0U2Vjc31zIHNvIGZhciAoJHtwcm9ncmVzc1BjdH0lKWApO1xuICB9O1xuICBhd2FpdCBsb25nU2xlZXAoc2xlZXBNcywge3RocmVzaG9sZE1zLCBpbnRlcnZhbE1zLCBwcm9ncmVzc0NifSk7XG5cbiAgbGV0IGFyZ3M7XG4gIGlmICh0aGlzLl9jYWNoZWRBY3Rpdml0eUFyZ3MgJiYgdGhpcy5fY2FjaGVkQWN0aXZpdHlBcmdzW2Ake2FwcFBhY2thZ2V9LyR7YXBwQWN0aXZpdHl9YF0pIHtcbiAgICAvLyB0aGUgYWN0aXZpdHkgd2FzIHN0YXJ0ZWQgd2l0aCBgc3RhcnRBY3Rpdml0eWAsIHNvIHVzZSB0aG9zZSBhcmdzIHRvIHJlc3RhcnRcbiAgICBhcmdzID0gdGhpcy5fY2FjaGVkQWN0aXZpdHlBcmdzW2Ake2FwcFBhY2thZ2V9LyR7YXBwQWN0aXZpdHl9YF07XG4gIH0gZWxzZSB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMubG9nLmRlYnVnKGBBY3RpdmF0aW5nIGFwcCAnJHthcHBQYWNrYWdlfScgaW4gb3JkZXIgdG8gcmVzdG9yZSBpdGApO1xuICAgICAgYXdhaXQgdGhpcy5hY3RpdmF0ZUFwcChhcHBQYWNrYWdlKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGlnbikge31cbiAgICBhcmdzID0gKChhcHBQYWNrYWdlID09PSB0aGlzLm9wdHMuYXBwUGFja2FnZSAmJiBhcHBBY3Rpdml0eSA9PT0gdGhpcy5vcHRzLmFwcEFjdGl2aXR5KSB8fFxuICAgICAgICAgICAgKGFwcFBhY2thZ2UgPT09IHRoaXMub3B0cy5hcHBXYWl0UGFja2FnZSAmJiAodGhpcy5vcHRzLmFwcFdhaXRBY3Rpdml0eSB8fCAnJykuc3BsaXQoJywnKS5pbmNsdWRlcyhhcHBBY3Rpdml0eSkpKVxuICAgICAgPyB7Ly8gdGhlIGFjdGl2aXR5IGlzIHRoZSBvcmlnaW5hbCBzZXNzaW9uIGFjdGl2aXR5LCBzbyB1c2UgdGhlIG9yaWdpbmFsIGFyZ3NcbiAgICAgICAgcGtnOiB0aGlzLm9wdHMuYXBwUGFja2FnZSxcbiAgICAgICAgYWN0aXZpdHk6IHRoaXMub3B0cy5hcHBBY3Rpdml0eSxcbiAgICAgICAgYWN0aW9uOiB0aGlzLm9wdHMuaW50ZW50QWN0aW9uLFxuICAgICAgICBjYXRlZ29yeTogdGhpcy5vcHRzLmludGVudENhdGVnb3J5LFxuICAgICAgICBmbGFnczogdGhpcy5vcHRzLmludGVudEZsYWdzLFxuICAgICAgICB3YWl0UGtnOiB0aGlzLm9wdHMuYXBwV2FpdFBhY2thZ2UsXG4gICAgICAgIHdhaXRBY3Rpdml0eTogdGhpcy5vcHRzLmFwcFdhaXRBY3Rpdml0eSxcbiAgICAgICAgd2FpdEZvckxhdW5jaDogdGhpcy5vcHRzLmFwcFdhaXRGb3JMYXVuY2gsXG4gICAgICAgIHdhaXREdXJhdGlvbjogdGhpcy5vcHRzLmFwcFdhaXREdXJhdGlvbixcbiAgICAgICAgb3B0aW9uYWxJbnRlbnRBcmd1bWVudHM6IHRoaXMub3B0cy5vcHRpb25hbEludGVudEFyZ3VtZW50cyxcbiAgICAgICAgc3RvcEFwcDogZmFsc2UsXG4gICAgICAgIHVzZXI6IHRoaXMub3B0cy51c2VyUHJvZmlsZX1cbiAgICAgIDogey8vIHRoZSBhY3Rpdml0eSB3YXMgc3RhcnRlZCBzb21lIG90aGVyIHdheSwgc28gdXNlIGRlZmF1bHRzXG4gICAgICAgIHBrZzogYXBwUGFja2FnZSxcbiAgICAgICAgYWN0aXZpdHk6IGFwcEFjdGl2aXR5LFxuICAgICAgICB3YWl0UGtnOiBhcHBQYWNrYWdlLFxuICAgICAgICB3YWl0QWN0aXZpdHk6IGFwcEFjdGl2aXR5LFxuICAgICAgICBzdG9wQXBwOiBmYWxzZX07XG4gIH1cbiAgYXJncyA9IGF3YWl0IHV0aWwuZmlsdGVyT2JqZWN0KGFyZ3MpO1xuICB0aGlzLmxvZy5kZWJ1ZyhgQnJpbmdpbmcgYXBwbGljYXRpb24gYmFjayB0byBmb3JlZ3JvdW5kIHdpdGggYXJndW1lbnRzOiAke0pTT04uc3RyaW5naWZ5KGFyZ3MpfWApO1xuICByZXR1cm4gYXdhaXQgdGhpcy5hZGIuc3RhcnRBcHAoYXJncyk7XG59O1xuXG5jb21tYW5kcy5nZXRTdHJpbmdzID0gYXN5bmMgZnVuY3Rpb24gZ2V0U3RyaW5ncyAobGFuZ3VhZ2UpIHtcbiAgaWYgKCFsYW5ndWFnZSkge1xuICAgIGxhbmd1YWdlID0gYXdhaXQgdGhpcy5hZGIuZ2V0RGV2aWNlTGFuZ3VhZ2UoKTtcbiAgICB0aGlzLmxvZy5pbmZvKGBObyBsYW5ndWFnZSBzcGVjaWZpZWQsIHJldHVybmluZyBzdHJpbmdzIGZvcjogJHtsYW5ndWFnZX1gKTtcbiAgfVxuXG4gIC8vIENsaWVudHMgcmVxdWlyZSB0aGUgcmVzdWx0aW5nIG1hcHBpbmcgdG8gaGF2ZSBib3RoIGtleXNcbiAgLy8gYW5kIHZhbHVlcyBvZiB0eXBlIHN0cmluZ1xuICBjb25zdCBwcmVwcm9jZXNzU3RyaW5nc01hcCA9IChtYXBwaW5nKSA9PiB7XG4gICAgY29uc3QgcmVzdWx0ID0ge307XG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgXy50b1BhaXJzKG1hcHBpbmcpKSB7XG4gICAgICByZXN1bHRba2V5XSA9IF8uaXNTdHJpbmcodmFsdWUpID8gdmFsdWUgOiBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG5cbiAgaWYgKHRoaXMuYXBrU3RyaW5nc1tsYW5ndWFnZV0pIHtcbiAgICAvLyBSZXR1cm4gY2FjaGVkIHN0cmluZ3NcbiAgICByZXR1cm4gcHJlcHJvY2Vzc1N0cmluZ3NNYXAodGhpcy5hcGtTdHJpbmdzW2xhbmd1YWdlXSk7XG4gIH1cblxuICB0aGlzLmFwa1N0cmluZ3NbbGFuZ3VhZ2VdID0gYXdhaXQgYW5kcm9pZEhlbHBlcnMucHVzaFN0cmluZ3MobGFuZ3VhZ2UsIHRoaXMuYWRiLCB0aGlzLm9wdHMpO1xuICBpZiAodGhpcy5ib290c3RyYXApIHtcbiAgICAvLyBUT0RPOiBUaGlzIGlzIG11dGF0aW5nIHRoZSBjdXJyZW50IGxhbmd1YWdlLCBidXQgaXQncyBob3cgYXBwaXVtIGN1cnJlbnRseSB3b3Jrc1xuICAgIGF3YWl0IHRoaXMuYm9vdHN0cmFwLnNlbmRBY3Rpb24oJ3VwZGF0ZVN0cmluZ3MnKTtcbiAgfVxuXG4gIHJldHVybiBwcmVwcm9jZXNzU3RyaW5nc01hcCh0aGlzLmFwa1N0cmluZ3NbbGFuZ3VhZ2VdKTtcbn07XG5cbmNvbW1hbmRzLmxhdW5jaEFwcCA9IGFzeW5jIGZ1bmN0aW9uIGxhdW5jaEFwcCAoKSB7XG4gIGF3YWl0IHRoaXMuaW5pdEFVVCgpO1xuICBhd2FpdCB0aGlzLnN0YXJ0QVVUKCk7XG59O1xuXG5jb21tYW5kcy5zdGFydEFjdGl2aXR5ID0gYXN5bmMgZnVuY3Rpb24gc3RhcnRBY3Rpdml0eSAoYXBwUGFja2FnZSwgYXBwQWN0aXZpdHksXG4gIGFwcFdhaXRQYWNrYWdlLCBhcHBXYWl0QWN0aXZpdHksIGludGVudEFjdGlvbiwgaW50ZW50Q2F0ZWdvcnksIGludGVudEZsYWdzLFxuICBvcHRpb25hbEludGVudEFyZ3VtZW50cywgZG9udFN0b3BBcHBPblJlc2V0KSB7XG4gIHRoaXMubG9nLmRlYnVnKGBTdGFydGluZyBwYWNrYWdlICcke2FwcFBhY2thZ2V9JyBhbmQgYWN0aXZpdHkgJyR7YXBwQWN0aXZpdHl9J2ApO1xuXG4gIC8vIGRvbnRTdG9wQXBwT25SZXNldCBpcyBib3RoIGFuIGFyZ3VtZW50IGhlcmUsIGFuZCBhIGRlc2lyZWQgY2FwYWJpbGl0eVxuICAvLyBpZiB0aGUgYXJndW1lbnQgaXMgc2V0LCB1c2UgaXQsIG90aGVyd2lzZSB1c2UgdGhlIGNhcFxuICBpZiAoIXV0aWwuaGFzVmFsdWUoZG9udFN0b3BBcHBPblJlc2V0KSkge1xuICAgIGRvbnRTdG9wQXBwT25SZXNldCA9ICEhdGhpcy5vcHRzLmRvbnRTdG9wQXBwT25SZXNldDtcbiAgfVxuXG4gIGxldCBhcmdzID0ge1xuICAgIHBrZzogYXBwUGFja2FnZSxcbiAgICBhY3Rpdml0eTogYXBwQWN0aXZpdHksXG4gICAgd2FpdFBrZzogYXBwV2FpdFBhY2thZ2UgfHwgYXBwUGFja2FnZSxcbiAgICB3YWl0QWN0aXZpdHk6IGFwcFdhaXRBY3Rpdml0eSB8fCBhcHBBY3Rpdml0eSxcbiAgICBhY3Rpb246IGludGVudEFjdGlvbixcbiAgICBjYXRlZ29yeTogaW50ZW50Q2F0ZWdvcnksXG4gICAgZmxhZ3M6IGludGVudEZsYWdzLFxuICAgIG9wdGlvbmFsSW50ZW50QXJndW1lbnRzLFxuICAgIHN0b3BBcHA6ICFkb250U3RvcEFwcE9uUmVzZXRcbiAgfTtcbiAgdGhpcy5fY2FjaGVkQWN0aXZpdHlBcmdzID0gdGhpcy5fY2FjaGVkQWN0aXZpdHlBcmdzIHx8IHt9O1xuICB0aGlzLl9jYWNoZWRBY3Rpdml0eUFyZ3NbYCR7YXJncy53YWl0UGtnfS8ke2FyZ3Mud2FpdEFjdGl2aXR5fWBdID0gYXJncztcbiAgYXdhaXQgdGhpcy5hZGIuc3RhcnRBcHAoYXJncyk7XG59O1xuXG5jb21tYW5kcy5yZXNldCA9IGFzeW5jIGZ1bmN0aW9uIHJlc2V0ICgpIHtcbiAgYXdhaXQgYW5kcm9pZEhlbHBlcnMucmVzZXRBcHAodGhpcy5hZGIsIE9iamVjdC5hc3NpZ24oe30sIHRoaXMub3B0cywge2Zhc3RSZXNldDogdHJ1ZX0pKTtcbiAgLy8gcmVzZXQgY29udGV4dCBzaW5jZSB3ZSBkb24ndCBrbm93IHdoYXQga2luZCBvbiBjb250ZXh0IHdlIHdpbGwgZW5kIHVwIGFmdGVyIGFwcCBsYXVuY2guXG4gIGF3YWl0IHRoaXMuc2V0Q29udGV4dCgpO1xuICByZXR1cm4gYXdhaXQgdGhpcy5pc0Nocm9tZVNlc3Npb24gPyB0aGlzLnN0YXJ0Q2hyb21lU2Vzc2lvbigpIDogdGhpcy5zdGFydEFVVCgpO1xufTtcblxuY29tbWFuZHMuc3RhcnRBVVQgPSBhc3luYyBmdW5jdGlvbiBzdGFydEFVVCAoKSB7XG4gIGF3YWl0IHRoaXMuYWRiLnN0YXJ0QXBwKHtcbiAgICBwa2c6IHRoaXMub3B0cy5hcHBQYWNrYWdlLFxuICAgIGFjdGl2aXR5OiB0aGlzLm9wdHMuYXBwQWN0aXZpdHksXG4gICAgYWN0aW9uOiB0aGlzLm9wdHMuaW50ZW50QWN0aW9uLFxuICAgIGNhdGVnb3J5OiB0aGlzLm9wdHMuaW50ZW50Q2F0ZWdvcnksXG4gICAgZmxhZ3M6IHRoaXMub3B0cy5pbnRlbnRGbGFncyxcbiAgICB3YWl0UGtnOiB0aGlzLm9wdHMuYXBwV2FpdFBhY2thZ2UsXG4gICAgd2FpdEFjdGl2aXR5OiB0aGlzLm9wdHMuYXBwV2FpdEFjdGl2aXR5LFxuICAgIHdhaXRGb3JMYXVuY2g6IHRoaXMub3B0cy5hcHBXYWl0Rm9yTGF1bmNoLFxuICAgIHdhaXREdXJhdGlvbjogdGhpcy5vcHRzLmFwcFdhaXREdXJhdGlvbixcbiAgICBvcHRpb25hbEludGVudEFyZ3VtZW50czogdGhpcy5vcHRzLm9wdGlvbmFsSW50ZW50QXJndW1lbnRzLFxuICAgIHN0b3BBcHA6ICF0aGlzLm9wdHMuZG9udFN0b3BBcHBPblJlc2V0LFxuICAgIHVzZXI6IHRoaXMub3B0cy51c2VyUHJvZmlsZSxcbiAgfSk7XG59O1xuXG4vLyB3ZSBvdmVycmlkZSBzZXRVcmwgdG8gdGFrZSBhbiBhbmRyb2lkIFVSSSB3aGljaCBjYW4gYmUgdXNlZCBmb3IgZGVlcC1saW5raW5nXG4vLyBpbnNpZGUgYW4gYXBwLCBzaW1pbGFyIHRvIHN0YXJ0aW5nIGFuIGludGVudFxuY29tbWFuZHMuc2V0VXJsID0gYXN5bmMgZnVuY3Rpb24gc2V0VXJsICh1cmkpIHtcbiAgYXdhaXQgdGhpcy5hZGIuc3RhcnRVcmkodXJpLCB0aGlzLm9wdHMuYXBwUGFja2FnZSk7XG59O1xuXG4vLyBjbG9zaW5nIGFwcCB1c2luZyBmb3JjZSBzdG9wXG5jb21tYW5kcy5jbG9zZUFwcCA9IGFzeW5jIGZ1bmN0aW9uIGNsb3NlQXBwICgpIHtcbiAgYXdhaXQgdGhpcy5hZGIuZm9yY2VTdG9wKHRoaXMub3B0cy5hcHBQYWNrYWdlKTtcbiAgLy8gcmVzZXQgY29udGV4dCBzaW5jZSB3ZSBkb24ndCBrbm93IHdoYXQga2luZCBvbiBjb250ZXh0IHdlIHdpbGwgZW5kIHVwIGFmdGVyIGFwcCBsYXVuY2guXG4gIGF3YWl0IHRoaXMuc2V0Q29udGV4dCgpO1xufTtcblxuY29tbWFuZHMuZ2V0RGlzcGxheURlbnNpdHkgPSBhc3luYyBmdW5jdGlvbiBnZXREaXNwbGF5RGVuc2l0eSAoKSB7XG4gIC8vIGZpcnN0IHRyeSB0aGUgcHJvcGVydHkgZm9yIGRldmljZXNcbiAgbGV0IG91dCA9IGF3YWl0IHRoaXMuYWRiLnNoZWxsKFsnZ2V0cHJvcCcsICdyby5zZi5sY2RfZGVuc2l0eSddKTtcbiAgaWYgKG91dCkge1xuICAgIGxldCB2YWwgPSBwYXJzZUludChvdXQsIDEwKTtcbiAgICAvLyBpZiB0aGUgdmFsdWUgaXMgTmFOLCB0cnkgZ2V0dGluZyB0aGUgZW11bGF0b3IgcHJvcGVydHlcbiAgICBpZiAoIWlzTmFOKHZhbCkpIHtcbiAgICAgIHJldHVybiB2YWw7XG4gICAgfVxuICAgIHRoaXMubG9nLmRlYnVnKGBQYXJzZWQgZGVuc2l0eSB2YWx1ZSB3YXMgTmFOOiBcIiR7b3V0fVwiYCk7XG4gIH1cbiAgLy8gZmFsbGJhY2sgdG8gdHJ5aW5nIHByb3BlcnR5IGZvciBlbXVsYXRvcnNcbiAgb3V0ID0gYXdhaXQgdGhpcy5hZGIuc2hlbGwoWydnZXRwcm9wJywgJ3FlbXUuc2YubGNkX2RlbnNpdHknXSk7XG4gIGlmIChvdXQpIHtcbiAgICBsZXQgdmFsID0gcGFyc2VJbnQob3V0LCAxMCk7XG4gICAgaWYgKCFpc05hTih2YWwpKSB7XG4gICAgICByZXR1cm4gdmFsO1xuICAgIH1cbiAgICB0aGlzLmxvZy5kZWJ1ZyhgUGFyc2VkIGRlbnNpdHkgdmFsdWUgd2FzIE5hTjogXCIke291dH1cImApO1xuICB9XG4gIC8vIGNvdWxkbid0IGdldCBhbnl0aGluZywgc28gZXJyb3Igb3V0XG4gIHRoaXMubG9nLmVycm9yQW5kVGhyb3coJ0ZhaWxlZCB0byBnZXQgZGlzcGxheSBkZW5zaXR5IHByb3BlcnR5LicpO1xufTtcblxuY29tbWFuZHMubW9iaWxlUGVyZm9ybUVkaXRvckFjdGlvbiA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVBlcmZvcm1FZGl0b3JBY3Rpb24gKG9wdHMgPSB7fSkge1xuICBjb25zdCB7YWN0aW9ufSA9IG9wdHM7XG4gIGlmICghdXRpbC5oYXNWYWx1ZShhY3Rpb24pKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihgJ2FjdGlvbicgYXJndW1lbnQgaXMgcmVxdWlyZWRgKTtcbiAgfVxuXG4gIGF3YWl0IHRoaXMuYWRiLnBlcmZvcm1FZGl0b3JBY3Rpb24oYWN0aW9uKTtcbn07XG5cbmNvbnN0IFBFUk1JU1NJT05fQUNUSU9OID0ge1xuICBHUkFOVDogJ2dyYW50JyxcbiAgUkVWT0tFOiAncmV2b2tlJyxcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gQ2hhbmdlUGVybWlzc2lvbnNPcHRpb25zXG4gKiBAcHJvcGVydHkgeyFzdHJpbmd8QXJyYXk8c3RyaW5nPn0gcGVybWlzc2lvbnMgLSBUaGUgZnVsbCBuYW1lIG9mIHRoZSBwZXJtaXNzaW9uIHRvIGJlIGNoYW5nZWRcbiAqIG9yIGEgbGlzdCBvZiBwZXJtaXNzaW9ucy4gTWFuZGF0b3J5IGFyZ3VtZW50LlxuICogQHByb3BlcnR5IHtzdHJpbmd9IGFwcFBhY2thZ2UgW3RoaXMub3B0cy5hcHBQYWNrYWdlXSAtIFRoZSBhcHBsaWNhdGlvbiBwYWNrYWdlIHRvIHNldCBjaGFuZ2VcbiAqIHBlcm1pc3Npb25zIG9uLiBEZWZhdWx0cyB0byB0aGUgcGFja2FnZSBuYW1lIHVuZGVyIHRlc3QuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gYWN0aW9uIFtncmFudF0gLSBPbmUgb2YgYFBFUk1JU1NJT05fQUNUSU9OYCB2YWx1ZXNcbiAqL1xuXG4vKipcbiAqIENoYW5nZXMgcGFja2FnZSBwZXJtaXNzaW9ucyBpbiBydW50aW1lLlxuICpcbiAqIEBwYXJhbSB7P0NoYW5nZVBlcm1pc3Npb25zT3B0aW9uc30gb3B0cyAtIEF2YWlsYWJsZSBvcHRpb25zIG1hcHBpbmcuXG4gKiBAdGhyb3dzIHtFcnJvcn0gaWYgdGhlcmUgd2FzIGEgZmFpbHVyZSB3aGlsZSBjaGFuZ2luZyBwZXJtaXNzaW9uc1xuICovXG5jb21tYW5kcy5tb2JpbGVDaGFuZ2VQZXJtaXNzaW9ucyA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZUNoYW5nZVBlcm1pc3Npb25zIChvcHRzID0ge30pIHtcbiAgY29uc3Qge1xuICAgIHBlcm1pc3Npb25zLFxuICAgIGFwcFBhY2thZ2UgPSB0aGlzLm9wdHMuYXBwUGFja2FnZSxcbiAgICBhY3Rpb24gPSBQRVJNSVNTSU9OX0FDVElPTi5HUkFOVCxcbiAgfSA9IG9wdHM7XG4gIGlmICghdXRpbC5oYXNWYWx1ZShwZXJtaXNzaW9ucykpIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRBcmd1bWVudEVycm9yKGAncGVybWlzc2lvbnMnIGFyZ3VtZW50IGlzIHJlcXVpcmVkYCk7XG4gIH1cblxuICBsZXQgYWN0aW9uRnVuYztcbiAgc3dpdGNoIChfLnRvTG93ZXIoYWN0aW9uKSkge1xuICAgIGNhc2UgUEVSTUlTU0lPTl9BQ1RJT04uR1JBTlQ6XG4gICAgICBhY3Rpb25GdW5jID0gKGFwcFBhY2thZ2UsIHBlcm1pc3Npb24pID0+IHRoaXMuYWRiLmdyYW50UGVybWlzc2lvbihhcHBQYWNrYWdlLCBwZXJtaXNzaW9uKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgUEVSTUlTU0lPTl9BQ1RJT04uUkVWT0tFOlxuICAgICAgYWN0aW9uRnVuYyA9IChhcHBQYWNrYWdlLCBwZXJtaXNzaW9uKSA9PiB0aGlzLmFkYi5yZXZva2VQZXJtaXNzaW9uKGFwcFBhY2thZ2UsIHBlcm1pc3Npb24pO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZEFyZ3VtZW50RXJyb3IoYFVua25vd24gYWN0aW9uICcke2FjdGlvbn0nLiBgICtcbiAgICAgICAgYE9ubHkgJHtKU09OLnN0cmluZ2lmeShfLnZhbHVlcyhQRVJNSVNTSU9OX0FDVElPTikpfSBhY3Rpb25zIGFyZSBzdXBwb3J0ZWRgKTtcbiAgfVxuICBmb3IgKGNvbnN0IHBlcm1pc3Npb24gb2YgKF8uaXNBcnJheShwZXJtaXNzaW9ucykgPyBwZXJtaXNzaW9ucyA6IFtwZXJtaXNzaW9uc10pKSB7XG4gICAgYXdhaXQgYWN0aW9uRnVuYyhhcHBQYWNrYWdlLCBwZXJtaXNzaW9uKTtcbiAgfVxufTtcblxuY29uc3QgUEVSTUlTU0lPTlNfVFlQRSA9IHtcbiAgREVOSUVEOiAnZGVuaWVkJyxcbiAgR1JBTlRFRDogJ2dyYW50ZWQnLFxuICBSRVFVRVNURUQ6ICdyZXF1ZXN0ZWQnLFxufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBHZXRQZXJtaXNzaW9uc09wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSB0eXBlIFtyZXF1ZXN0ZWRdIC0gT25lIG9mIHBvc3NpYmxlIHBlcm1pc3Npb24gdHlwZXMgdG8gZ2V0LlxuICogQ2FuIGJlIGFueSBvZiBgUEVSTUlTU0lPTlNfVFlQRWAgdmFsdWVzLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IGFwcFBhY2thZ2UgW3RoaXMub3B0cy5hcHBQYWNrYWdlXSAtIFRoZSBhcHBsaWNhdGlvbiBwYWNrYWdlIHRvIHNldCBjaGFuZ2VcbiAqIHBlcm1pc3Npb25zIG9uLiBEZWZhdWx0cyB0byB0aGUgcGFja2FnZSBuYW1lIHVuZGVyIHRlc3QuXG4gKi9cblxuLyoqXG4gKiBHZXRzIHJ1bnRpbWUgcGVybWlzc2lvbnMgbGlzdCBmb3IgdGhlIGdpdmVuIGFwcGxpY2F0aW9uIHBhY2thZ2UuXG4gKlxuICogQHBhcmFtIHtHZXRQZXJtaXNzaW9uc09wdGlvbnN9IG9wdHMgLSBBdmFpbGFibGUgb3B0aW9ucyBtYXBwaW5nLlxuICogQHJldHVybnMge0FycmF5PHN0cmluZz59IFRoZSBsaXN0IG9mIHJldHJpZXZlZCBwZXJtaXNzaW9ucyBmb3IgdGhlIGdpdmVuIHR5cGVcbiAqIChjYW4gYWxzbyBiZSBlbXB0eSkuXG4gKiBAdGhyb3dzIHtFcnJvcn0gaWYgdGhlcmUgd2FzIGFuIGVycm9yIHdoaWxlIGdldHRpbmcgcGVybWlzc2lvbnMuXG4gKi9cbmNvbW1hbmRzLm1vYmlsZUdldFBlcm1pc3Npb25zID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlR2V0UGVybWlzc2lvbnMgKG9wdHMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgdHlwZSA9IFBFUk1JU1NJT05TX1RZUEUuUkVRVUVTVEVELFxuICAgIGFwcFBhY2thZ2UgPSB0aGlzLm9wdHMuYXBwUGFja2FnZSxcbiAgfSA9IG9wdHM7XG5cbiAgbGV0IGFjdGlvbkZ1bmM7XG4gIHN3aXRjaCAoXy50b0xvd2VyKHR5cGUpKSB7XG4gICAgY2FzZSBQRVJNSVNTSU9OU19UWVBFLlJFUVVFU1RFRDpcbiAgICAgIGFjdGlvbkZ1bmMgPSAoYXBwUGFja2FnZSkgPT4gdGhpcy5hZGIuZ2V0UmVxUGVybWlzc2lvbnMoYXBwUGFja2FnZSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFBFUk1JU1NJT05TX1RZUEUuR1JBTlRFRDpcbiAgICAgIGFjdGlvbkZ1bmMgPSAoYXBwUGFja2FnZSkgPT4gdGhpcy5hZGIuZ2V0R3JhbnRlZFBlcm1pc3Npb25zKGFwcFBhY2thZ2UpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBQRVJNSVNTSU9OU19UWVBFLkRFTklFRDpcbiAgICAgIGFjdGlvbkZ1bmMgPSAoYXBwUGFja2FnZSkgPT4gdGhpcy5hZGIuZ2V0RGVuaWVkUGVybWlzc2lvbnMoYXBwUGFja2FnZSk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihgVW5rbm93biBwZXJtaXNzaW9ucyB0eXBlICcke3R5cGV9Jy4gYCArXG4gICAgICAgIGBPbmx5ICR7SlNPTi5zdHJpbmdpZnkoXy52YWx1ZXMoUEVSTUlTU0lPTlNfVFlQRSkpfSB0eXBlcyBhcmUgc3VwcG9ydGVkYCk7XG4gIH1cbiAgcmV0dXJuIGF3YWl0IGFjdGlvbkZ1bmMoYXBwUGFja2FnZSk7XG59O1xuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgbGlzdCBvZiByZWNlbnQgc3lzdGVtIG5vdGlmaWNhdGlvbnMuXG4gKlxuICogQHJldHVybnMge09iamVjdH0gU2VlIHRoZSBkb2N1bWVudGF0aW9uIG9uIGBhZGIuZ2V0Tm90aWZpY2F0aW9uc2AgZm9yXG4gKiBtb3JlIGRldGFpbHNcbiAqL1xuY29tbWFuZHMubW9iaWxlR2V0Tm90aWZpY2F0aW9ucyA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZUdldE5vdGlmaWNhdGlvbnMgKCkge1xuICByZXR1cm4gYXdhaXQgdGhpcy5hZGIuZ2V0Tm90aWZpY2F0aW9ucygpO1xufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBTbXNMaXN0T3B0aW9uc1xuICogQHByb3BlcnR5IHtudW1iZXJ9IG1heCBbMTAwXSAtIFRoZSBtYXhpbXVtIGNvdW50IG9mIHJlY2VudCBTTVMgbWVzc2FnZXNcbiAqIHRvIHJldHJpZXZlXG4gKi9cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIGxpc3Qgb2YgcmVjZW50IFNNUyBtZXNzYWdlcyB3aXRoIHRoZWlyIHByb3BlcnRpZXMuXG4gKlxuICogQHBhcmFtIHtTbXNMaXN0T3B0aW9uc30gb3B0c1xuICogQHJldHVybnMge09iamVjdH0gU2VlIHRoZSBkb2N1bWVudGF0aW9uIG9uIGBhZGIuZ2V0U21zTGlzdGAgZm9yXG4gKiBtb3JlIGRldGFpbHNcbiAqL1xuY29tbWFuZHMubW9iaWxlTGlzdFNtcyA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZUxpc3RTbXMgKG9wdHMgPSB7fSkge1xuICByZXR1cm4gYXdhaXQgdGhpcy5hZGIuZ2V0U21zTGlzdChvcHRzKTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gVW5sb2NrT3B0aW9uc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IGtleSBUaGUgdW5sb2NrIGtleS4gVGhlIHZhbHVlIG9mIHRoaXMga2V5IGRlcGVuZHNcbiAqIG9uIHRoZSBhY3R1YWwgdW5sb2NrIHR5cGUgYW5kIGNvdWxkIGJlIGEgcGluL3Bhc3N3b3JkL3BhdHRlcm4gdmFsdWUgb3JcbiAqIGEgYmlvbWV0cmljIGZpbmdlciBpZC5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSB0eXBlIFRoZSB1bmxvY2sgdHlwZS4gVGhlIGZvbGxvd2luZyB1bmxvY2sgdHlwZXNcbiAqIGFyZSBzdXBwb3J0ZWQ6IGBwaW5gLCBgcGluV2l0aEtleUV2ZW50YCwgYHBhc3N3b3JkYCwgYHBhdHRlcm5gIGFuZCBgZmluZ2VycHJpbnRgLlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBzdHJhdGVneSBFaXRoZXIgJ2xvY2tzZXR0aW5ncycgKGRlZmF1bHQpIG9yICd1aWF1dG9tYXRvcicuXG4gKiBTZXR0aW5nIGl0IHRvICd1aWF1dG9tYXRvcicgd2lsbCBlbmZvcmNlIHRoZSBkcml2ZXIgdG8gYXZvaWQgdXNpbmcgc3BlY2lhbFxuICogQURCIHNob3J0Y3V0cyBpbiBvcmRlciB0byBzcGVlZCB1cCB0aGUgdW5sb2NrIHByb2NlZHVyZS5cbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0gdGltZW91dE1zIFsyMDAwXSBUaGUgbWF4aW11bSB0aW1lIGluIG1pbGxpc2Vjb25kc1xuICogdG8gd2FpdCB1bnRpbCB0aGUgc2NyZWVuIGdldHMgdW5sb2NrZWRcbiAqL1xuXG4vKipcbiAqIFVubG9ja3MgdGhlIGRldmljZSBpZiBpdCBpcyBsb2NrZWQuIE5vb3AgaWYgdGhlIGRldmljZSdzIHNjcmVlbiBpcyBub3QgbG9ja2VkLlxuICpcbiAqIEBwYXJhbSB7P1VubG9ja09wdGlvbnN9IG9wdHNcbiAqIEB0aHJvd3Mge0Vycm9yfSBpZiB1bmxvY2sgb3BlcmF0aW9uIGZhaWxzIG9yIHRoZSBwcm92aWRlZFxuICogYXJndW1lbnRzIGFyZSBub3QgdmFsaWRcbiAqL1xuY29tbWFuZHMubW9iaWxlVW5sb2NrID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlVW5sb2NrIChvcHRzID0ge30pIHtcbiAgY29uc3QgeyBrZXksIHR5cGUsIHN0cmF0ZWd5LCB0aW1lb3V0TXMgfSA9IG9wdHM7XG4gIGF3YWl0IGFuZHJvaWRIZWxwZXJzLnVubG9jayh0aGlzLCB0aGlzLmFkYiwge1xuICAgIHVubG9ja0tleToga2V5LFxuICAgIHVubG9ja1R5cGU6IHR5cGUsXG4gICAgdW5sb2NrU3RyYXRlZ3k6IHN0cmF0ZWd5LFxuICAgIHVubG9ja1N1Y2Nlc3NUaW1lb3V0OiB0aW1lb3V0TXMsXG4gIH0pO1xufTtcblxuT2JqZWN0LmFzc2lnbihleHRlbnNpb25zLCBjb21tYW5kcywgaGVscGVycyk7XG5leHBvcnQgeyBjb21tYW5kcywgaGVscGVycyB9O1xuZXhwb3J0IGRlZmF1bHQgZXh0ZW5zaW9ucztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQSxNQUFNQSxxQkFBcUIsR0FBRyxzQkFBOUI7QUFFQSxJQUFJQyxRQUFRLEdBQUcsRUFBZjtBQUFBLElBQW1CQyxPQUFPLEdBQUcsRUFBN0I7QUFBQSxJQUFpQ0MsVUFBVSxHQUFHLEVBQTlDOzs7O0FBRUFGLFFBQVEsQ0FBQ0csSUFBVCxHQUFnQixlQUFlQSxJQUFmLENBQXFCQSxJQUFyQixFQUEyQjtFQUV6Q0EsSUFBSSxHQUFHQyxlQUFBLENBQUVDLE9BQUYsQ0FBVUYsSUFBVixJQUFrQkEsSUFBSSxDQUFDRyxJQUFMLENBQVUsRUFBVixDQUFsQixHQUFrQ0gsSUFBekM7RUFDQSxJQUFJSSxNQUFNLEdBQUc7SUFDWEMsSUFBSSxFQUFFTCxJQURLO0lBRVhNLE9BQU8sRUFBRTtFQUZFLENBQWI7O0VBSUEsSUFBSSxLQUFLQyxJQUFMLENBQVVDLGVBQWQsRUFBK0I7SUFDN0JKLE1BQU0sQ0FBQ0ksZUFBUCxHQUF5QixJQUF6QjtFQUNEOztFQUNELE1BQU0sS0FBS0MsVUFBTCxDQUFnQkwsTUFBaEIsQ0FBTjtBQUNELENBWEQ7O0FBYUFQLFFBQVEsQ0FBQ1ksVUFBVCxHQUFzQixlQUFlQSxVQUFmLENBQTJCTCxNQUEzQixFQUFtQztFQUN2RCxPQUFPLE1BQU0sS0FBS00sU0FBTCxDQUFlQyxVQUFmLENBQTBCLFNBQTFCLEVBQXFDUCxNQUFyQyxDQUFiO0FBQ0QsQ0FGRDs7QUFhQVAsUUFB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
|
|
@@ -7,7 +7,7 @@ exports.helpers = exports.default = exports.commands = void 0;
|
|
|
7
7
|
|
|
8
8
|
require("source-map-support/register");
|
|
9
9
|
|
|
10
|
-
var
|
|
10
|
+
var _driver = require("appium/driver");
|
|
11
11
|
|
|
12
12
|
let commands = {},
|
|
13
13
|
helpers = {},
|
|
@@ -37,7 +37,7 @@ commands.activateIMEEngine = async function activateIMEEngine(imeId) {
|
|
|
37
37
|
|
|
38
38
|
if (availableEngines.indexOf(imeId) === -1) {
|
|
39
39
|
this.log.debug('IME not found, failing');
|
|
40
|
-
throw new
|
|
40
|
+
throw new _driver.errors.IMENotAvailableError();
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
this.log.debug('Found installed IME, attempting to activate');
|
|
@@ -56,4 +56,4 @@ var _default = extensions;
|
|
|
56
56
|
exports.default = _default;require('source-map-support').install();
|
|
57
57
|
|
|
58
58
|
|
|
59
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
59
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2ltZS5qcyIsIm5hbWVzIjpbImNvbW1hbmRzIiwiaGVscGVycyIsImV4dGVuc2lvbnMiLCJpc0lNRUFjdGl2YXRlZCIsImF2YWlsYWJsZUlNRUVuZ2luZXMiLCJsb2ciLCJkZWJ1ZyIsImVuZ2luZXMiLCJhZGIiLCJhdmFpbGFibGVJTUVzIiwiSlNPTiIsInN0cmluZ2lmeSIsImdldEFjdGl2ZUlNRUVuZ2luZSIsImRlZmF1bHRJTUUiLCJhY3RpdmF0ZUlNRUVuZ2luZSIsImltZUlkIiwiYXZhaWxhYmxlRW5naW5lcyIsImluZGV4T2YiLCJlcnJvcnMiLCJJTUVOb3RBdmFpbGFibGVFcnJvciIsImVuYWJsZUlNRSIsInNldElNRSIsImRlYWN0aXZhdGVJTUVFbmdpbmUiLCJjdXJyZW50RW5naW5lIiwiZGlzYWJsZUlNRSIsIk9iamVjdCIsImFzc2lnbiJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9pbWUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXJyb3JzIH0gZnJvbSAnYXBwaXVtL2RyaXZlcic7XG5cbmxldCBjb21tYW5kcyA9IHt9LCBoZWxwZXJzID0ge30sIGV4dGVuc2lvbnMgPSB7fTtcblxuY29tbWFuZHMuaXNJTUVBY3RpdmF0ZWQgPSBhc3luYyBmdW5jdGlvbiBpc0lNRUFjdGl2YXRlZCAoKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgcmVxdWlyZS1hd2FpdFxuICAvLyBJTUUgaXMgYWx3YXlzIGFjdGl2YXRlZCBvbiBBbmRyb2lkIGRldmljZXNcbiAgcmV0dXJuIHRydWU7XG59O1xuXG5jb21tYW5kcy5hdmFpbGFibGVJTUVFbmdpbmVzID0gYXN5bmMgZnVuY3Rpb24gYXZhaWxhYmxlSU1FRW5naW5lcyAoKSB7XG4gIHRoaXMubG9nLmRlYnVnKCdSZXRyaWV2aW5nIGF2YWlsYWJsZSBJTUVzJyk7XG4gIGxldCBlbmdpbmVzID0gYXdhaXQgdGhpcy5hZGIuYXZhaWxhYmxlSU1FcygpO1xuICB0aGlzLmxvZy5kZWJ1ZyhgRW5naW5lczogJHtKU09OLnN0cmluZ2lmeShlbmdpbmVzKX1gKTtcbiAgcmV0dXJuIGVuZ2luZXM7XG59O1xuXG5jb21tYW5kcy5nZXRBY3RpdmVJTUVFbmdpbmUgPSBhc3luYyBmdW5jdGlvbiBnZXRBY3RpdmVJTUVFbmdpbmUgKCkge1xuICB0aGlzLmxvZy5kZWJ1ZygnUmV0cmlldmluZyBjdXJyZW50IGRlZmF1bHQgSU1FJyk7XG4gIHJldHVybiBhd2FpdCB0aGlzLmFkYi5kZWZhdWx0SU1FKCk7XG59O1xuXG5jb21tYW5kcy5hY3RpdmF0ZUlNRUVuZ2luZSA9IGFzeW5jIGZ1bmN0aW9uIGFjdGl2YXRlSU1FRW5naW5lIChpbWVJZCkge1xuICB0aGlzLmxvZy5kZWJ1ZyhgQXR0ZW1wdGluZyB0byBhY3RpdmF0ZSBJTUUgJHtpbWVJZH1gKTtcbiAgbGV0IGF2YWlsYWJsZUVuZ2luZXMgPSBhd2FpdCB0aGlzLmFkYi5hdmFpbGFibGVJTUVzKCk7XG4gIGlmIChhdmFpbGFibGVFbmdpbmVzLmluZGV4T2YoaW1lSWQpID09PSAtMSkge1xuICAgIHRoaXMubG9nLmRlYnVnKCdJTUUgbm90IGZvdW5kLCBmYWlsaW5nJyk7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5JTUVOb3RBdmFpbGFibGVFcnJvcigpO1xuICB9XG4gIHRoaXMubG9nLmRlYnVnKCdGb3VuZCBpbnN0YWxsZWQgSU1FLCBhdHRlbXB0aW5nIHRvIGFjdGl2YXRlJyk7XG4gIGF3YWl0IHRoaXMuYWRiLmVuYWJsZUlNRShpbWVJZCk7XG4gIGF3YWl0IHRoaXMuYWRiLnNldElNRShpbWVJZCk7XG59O1xuXG5jb21tYW5kcy5kZWFjdGl2YXRlSU1FRW5naW5lID0gYXN5bmMgZnVuY3Rpb24gZGVhY3RpdmF0ZUlNRUVuZ2luZSAoKSB7XG4gIGxldCBjdXJyZW50RW5naW5lID0gYXdhaXQgdGhpcy5nZXRBY3RpdmVJTUVFbmdpbmUoKTtcbiAgdGhpcy5sb2cuZGVidWcoYEF0dGVtcHRpbmcgdG8gZGVhY3RpdmF0ZSAke2N1cnJlbnRFbmdpbmV9YCk7XG4gIGF3YWl0IHRoaXMuYWRiLmRpc2FibGVJTUUoY3VycmVudEVuZ2luZSk7XG59O1xuXG5PYmplY3QuYXNzaWduKGV4dGVuc2lvbnMsIGNvbW1hbmRzLCBoZWxwZXJzKTtcbmV4cG9ydCB7IGNvbW1hbmRzLCBoZWxwZXJzIH07XG5leHBvcnQgZGVmYXVsdCBleHRlbnNpb25zO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFFQSxJQUFJQSxRQUFRLEdBQUcsRUFBZjtBQUFBLElBQW1CQyxPQUFPLEdBQUcsRUFBN0I7QUFBQSxJQUFpQ0MsVUFBVSxHQUFHLEVBQTlDOzs7O0FBRUFGLFFBQVEsQ0FBQ0csY0FBVCxHQUEwQixlQUFlQSxjQUFmLEdBQWlDO0VBRXpELE9BQU8sSUFBUDtBQUNELENBSEQ7O0FBS0FILFFBQVEsQ0FBQ0ksbUJBQVQsR0FBK0IsZUFBZUEsbUJBQWYsR0FBc0M7RUFDbkUsS0FBS0MsR0FBTCxDQUFTQyxLQUFULENBQWUsMkJBQWY7RUFDQSxJQUFJQyxPQUFPLEdBQUcsTUFBTSxLQUFLQyxHQUFMLENBQVNDLGFBQVQsRUFBcEI7RUFDQSxLQUFLSixHQUFMLENBQVNDLEtBQVQsQ0FBZ0IsWUFBV0ksSUFBSSxDQUFDQyxTQUFMLENBQWVKLE9BQWYsQ0FBd0IsRUFBbkQ7RUFDQSxPQUFPQSxPQUFQO0FBQ0QsQ0FMRDs7QUFPQVAsUUFBUSxDQUFDWSxrQkFBVCxHQUE4QixlQUFlQSxrQkFBZixHQUFxQztFQUNqRSxLQUFLUCxHQUFMLENBQVNDLEtBQVQsQ0FBZSxnQ0FBZjtFQUNBLE9BQU8sTUFBTSxLQUFLRSxHQUFMLENBQVNLLFVBQVQsRUFBYjtBQUNELENBSEQ7O0FBS0FiLFFBQVEsQ0FBQ2MsaUJBQVQsR0FBNkIsZUFBZUEsaUJBQWYsQ0FBa0NDLEtBQWxDLEVBQXlDO0VBQ3BFLEtBQUtWLEdBQUwsQ0FBU0MsS0FBVCxDQUFnQiw4QkFBNkJTLEtBQU0sRUFBbkQ7RUFDQSxJQUFJQyxnQkFBZ0IsR0FBRyxNQUFNLEtBQUtSLEdBQUwsQ0FBU0MsYUFBVCxFQUE3Qjs7RUFDQSxJQUFJTyxnQkFBZ0IsQ0FBQ0MsT0FBakIsQ0FBeUJGLEtBQXpCLE1BQW9DLENBQUMsQ0FBekMsRUFBNEM7SUFDMUMsS0FBS1YsR0FBTCxDQUFTQyxLQUFULENBQWUsd0JBQWY7SUFDQSxNQUFNLElBQUlZLGNBQUEsQ0FBT0Msb0JBQVgsRUFBTjtFQUNEOztFQUNELEtBQUtkLEdBQUwsQ0FBU0MsS0FBVCxDQUFlLDZDQUFmO0VBQ0EsTUFBTSxLQUFLRSxHQUFMLENBQVNZLFNBQVQsQ0FBbUJMLEtBQW5CLENBQU47RUFDQSxNQUFNLEtBQUtQLEdBQUwsQ0FBU2EsTUFBVCxDQUFnQk4sS0FBaEIsQ0FBTjtBQUNELENBVkQ7O0FBWUFmLFFBQVEsQ0FBQ3NCLG1CQUFULEdBQStCLGVBQWVBLG1CQUFmLEdBQXNDO0VBQ25FLElBQUlDLGFBQWEsR0FBRyxNQUFNLEtBQUtYLGtCQUFMLEVBQTFCO0VBQ0EsS0FBS1AsR0FBTCxDQUFTQyxLQUFULENBQWdCLDRCQUEyQmlCLGFBQWMsRUFBekQ7RUFDQSxNQUFNLEtBQUtmLEdBQUwsQ0FBU2dCLFVBQVQsQ0FBb0JELGFBQXBCLENBQU47QUFDRCxDQUpEOztBQU1BRSxNQUFNLENBQUNDLE1BQVAsQ0FBY3hCLFVBQWQsRUFBMEJGLFFBQTFCLEVBQW9DQyxPQUFwQztlQUVlQyxVIn0=
|
|
@@ -11,7 +11,7 @@ require("source-map-support/register");
|
|
|
11
11
|
|
|
12
12
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
13
13
|
|
|
14
|
-
var
|
|
14
|
+
var _driver = require("appium/driver");
|
|
15
15
|
|
|
16
16
|
const NO_VALUE_ARG_TYPE = 'sn';
|
|
17
17
|
const SUPPORTED_EXTRA_TYPES = ['s', NO_VALUE_ARG_TYPE, 'z', 'i', 'l', 'f', 'u', 'cn', 'ia', 'ial', 'la', 'lal', 'fa', 'fal', 'sa', 'sal'];
|
|
@@ -71,28 +71,28 @@ function parseIntentSpec(opts = {}) {
|
|
|
71
71
|
|
|
72
72
|
if (extras) {
|
|
73
73
|
if (!_lodash.default.isArray(extras)) {
|
|
74
|
-
throw new
|
|
74
|
+
throw new _driver.errors.InvalidArgumentError(`'extras' must be an array`);
|
|
75
75
|
}
|
|
76
76
|
|
|
77
77
|
for (const item of extras) {
|
|
78
78
|
if (!_lodash.default.isArray(item)) {
|
|
79
|
-
throw new
|
|
79
|
+
throw new _driver.errors.InvalidArgumentError(`Extra argument '${item}' must be an array`);
|
|
80
80
|
}
|
|
81
81
|
|
|
82
82
|
const [type, key, value] = item;
|
|
83
83
|
|
|
84
84
|
if (!_lodash.default.includes(SUPPORTED_EXTRA_TYPES, type)) {
|
|
85
|
-
throw new
|
|
85
|
+
throw new _driver.errors.InvalidArgumentError(`Extra argument type '${type}' is not known. ` + `Supported intent argument types are: ${SUPPORTED_EXTRA_TYPES}`);
|
|
86
86
|
}
|
|
87
87
|
|
|
88
88
|
if (_lodash.default.isEmpty(key) || _lodash.default.isString(key) && _lodash.default.trim(key) === '') {
|
|
89
|
-
throw new
|
|
89
|
+
throw new _driver.errors.InvalidArgumentError(`Extra argument's key in '${JSON.stringify(item)}' must be a valid string identifier`);
|
|
90
90
|
}
|
|
91
91
|
|
|
92
92
|
if (type === NO_VALUE_ARG_TYPE) {
|
|
93
93
|
resultArgs.push(`--e${type}`, key);
|
|
94
94
|
} else if (_lodash.default.isUndefined(value)) {
|
|
95
|
-
throw new
|
|
95
|
+
throw new _driver.errors.InvalidArgumentError(`Intent argument type '${type}' in '${JSON.stringify(item)}' requires a ` + `valid value to be provided`);
|
|
96
96
|
} else {
|
|
97
97
|
resultArgs.push(`--e${type}`, key, value);
|
|
98
98
|
}
|
|
@@ -208,4 +208,4 @@ var _default = commands;
|
|
|
208
208
|
exports.default = _default;require('source-map-support').install();
|
|
209
209
|
|
|
210
210
|
|
|
211
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2ludGVudC5qcyIsIm5hbWVzIjpbIk5PX1ZBTFVFX0FSR19UWVBFIiwiU1VQUE9SVEVEX0VYVFJBX1RZUEVTIiwiQVBJX0xFVkVMX0FORFJPSURfOCIsImNvbW1hbmRzIiwicGFyc2VJbnRlbnRTcGVjIiwib3B0cyIsImludGVudCIsImFjdGlvbiIsInVyaSIsIm1pbWVUeXBlIiwiaWRlbnRpZmllciIsImNhdGVnb3JpZXMiLCJjb21wb25lbnQiLCJleHRyYXMiLCJmbGFncyIsInJlc3VsdEFyZ3MiLCJwdXNoIiwiXyIsImlzTmlsIiwiaXNBcnJheSIsImZsYXRNYXAiLCJtYXAiLCJjTmFtZSIsInBhY2thZ2UiLCJlcnJvcnMiLCJJbnZhbGlkQXJndW1lbnRFcnJvciIsIml0ZW0iLCJ0eXBlIiwia2V5IiwidmFsdWUiLCJpbmNsdWRlcyIsImlzRW1wdHkiLCJpc1N0cmluZyIsInRyaW0iLCJKU09OIiwic3RyaW5naWZ5IiwiaXNVbmRlZmluZWQiLCJtb2JpbGVTdGFydEFjdGl2aXR5IiwidXNlciIsIndhaXQiLCJzdG9wIiwid2luZG93aW5nTW9kZSIsImFjdGl2aXR5VHlwZSIsImRpc3BsYXkiLCJjbWQiLCJhZGIiLCJnZXRBcGlMZXZlbCIsInNoZWxsIiwibW9iaWxlQnJvYWRjYXN0IiwicmVjZWl2ZXJQZXJtaXNzaW9uIiwiYWxsb3dCYWNrZ3JvdW5kQWN0aXZpdHlTdGFydHMiLCJtb2JpbGVTdGFydFNlcnZpY2UiLCJmb3JlZ3JvdW5kIiwibW9iaWxlU3RvcFNlcnZpY2UiXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uIiwic291cmNlcyI6WyJsaWIvY29tbWFuZHMvaW50ZW50LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBlcnJvcnMgfSBmcm9tICdAYXBwaXVtL2Jhc2UtZHJpdmVyJztcblxuY29uc3QgTk9fVkFMVUVfQVJHX1RZUEUgPSAnc24nO1xuY29uc3QgU1VQUE9SVEVEX0VYVFJBX1RZUEVTID0gW1xuICAncycsIE5PX1ZBTFVFX0FSR19UWVBFLCAneicsICdpJywgJ2wnLCAnZicsICd1JywgJ2NuJyxcbiAgJ2lhJywgJ2lhbCcsICdsYScsICdsYWwnLCAnZmEnLCAnZmFsJywgJ3NhJywgJ3NhbCcsXG5dO1xuY29uc3QgQVBJX0xFVkVMX0FORFJPSURfOCA9IDI2O1xuXG5jb25zdCBjb21tYW5kcyA9IHt9O1xuXG5mdW5jdGlvbiBwYXJzZUludGVudFNwZWMgKG9wdHMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgaW50ZW50LFxuICAgIGFjdGlvbixcbiAgICB1cmksXG4gICAgbWltZVR5cGUsXG4gICAgaWRlbnRpZmllcixcbiAgICBjYXRlZ29yaWVzLFxuICAgIGNvbXBvbmVudCxcbiAgICBleHRyYXMsXG4gICAgZmxhZ3MsXG4gIH0gPSBvcHRzO1xuICBjb25zdCByZXN1bHRBcmdzID0gW107XG4gIGlmIChpbnRlbnQpIHtcbiAgICByZXN1bHRBcmdzLnB1c2goaW50ZW50KTtcbiAgfVxuICBpZiAoYWN0aW9uKSB7XG4gICAgcmVzdWx0QXJncy5wdXNoKCctYScsIGFjdGlvbik7XG4gIH1cbiAgaWYgKHVyaSkge1xuICAgIHJlc3VsdEFyZ3MucHVzaCgnLWQnLCB1cmkpO1xuICB9XG4gIGlmIChtaW1lVHlwZSkge1xuICAgIHJlc3VsdEFyZ3MucHVzaCgnLXQnLCBtaW1lVHlwZSk7XG4gIH1cbiAgaWYgKCFfLmlzTmlsKGlkZW50aWZpZXIpKSB7XG4gICAgcmVzdWx0QXJncy5wdXNoKCctaScsIGlkZW50aWZpZXIpO1xuICB9XG4gIGlmIChjYXRlZ29yaWVzKSB7XG4gICAgaWYgKF8uaXNBcnJheShjYXRlZ29yaWVzKSkge1xuICAgICAgcmVzdWx0QXJncy5wdXNoKC4uLihfLmZsYXRNYXAoY2F0ZWdvcmllcy5tYXAoKGNOYW1lKSA9PiBbJy1jJywgY05hbWVdKSkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0QXJncy5wdXNoKCctYycsIGNhdGVnb3JpZXMpO1xuICAgIH1cbiAgfVxuICBpZiAoY29tcG9uZW50KSB7XG4gICAgcmVzdWx0QXJncy5wdXNoKCctbicsIGNvbXBvbmVudCk7XG4gIH1cbiAgaWYgKG9wdHMucGFja2FnZSkge1xuICAgIHJlc3VsdEFyZ3MucHVzaCgnLXAnLCBvcHRzLnBhY2thZ2UpO1xuICB9XG4gIGlmIChleHRyYXMpIHtcbiAgICBpZiAoIV8uaXNBcnJheShleHRyYXMpKSB7XG4gICAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRBcmd1bWVudEVycm9yKGAnZXh0cmFzJyBtdXN0IGJlIGFuIGFycmF5YCk7XG4gICAgfVxuICAgIGZvciAoY29uc3QgaXRlbSBvZiBleHRyYXMpIHtcbiAgICAgIGlmICghXy5pc0FycmF5KGl0ZW0pKSB7XG4gICAgICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZEFyZ3VtZW50RXJyb3IoYEV4dHJhIGFyZ3VtZW50ICcke2l0ZW19JyBtdXN0IGJlIGFuIGFycmF5YCk7XG4gICAgICB9XG4gICAgICBjb25zdCBbdHlwZSwga2V5LCB2YWx1ZV0gPSBpdGVtO1xuICAgICAgaWYgKCFfLmluY2x1ZGVzKFNVUFBPUlRFRF9FWFRSQV9UWVBFUywgdHlwZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihcbiAgICAgICAgICBgRXh0cmEgYXJndW1lbnQgdHlwZSAnJHt0eXBlfScgaXMgbm90IGtub3duLiBgICtcbiAgICAgICAgICBgU3VwcG9ydGVkIGludGVudCBhcmd1bWVudCB0eXBlcyBhcmU6ICR7U1VQUE9SVEVEX0VYVFJBX1RZUEVTfWBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmIChfLmlzRW1wdHkoa2V5KSB8fCAoXy5pc1N0cmluZyhrZXkpICYmIF8udHJpbShrZXkpID09PSAnJykpIHtcbiAgICAgICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihcbiAgICAgICAgICBgRXh0cmEgYXJndW1lbnQncyBrZXkgaW4gJyR7SlNPTi5zdHJpbmdpZnkoaXRlbSl9JyBtdXN0IGJlIGEgdmFsaWQgc3RyaW5nIGlkZW50aWZpZXJgXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAodHlwZSA9PT0gTk9fVkFMVUVfQVJHX1RZUEUpIHtcbiAgICAgICAgcmVzdWx0QXJncy5wdXNoKGAtLWUke3R5cGV9YCwga2V5KTtcbiAgICAgIH0gZWxzZSBpZiAoXy5pc1VuZGVmaW5lZCh2YWx1ZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihcbiAgICAgICAgICBgSW50ZW50IGFyZ3VtZW50IHR5cGUgJyR7dHlwZX0nIGluICcke0pTT04uc3RyaW5naWZ5KGl0ZW0pfScgcmVxdWlyZXMgYSBgICtcbiAgICAgICAgICBgdmFsaWQgdmFsdWUgdG8gYmUgcHJvdmlkZWRgXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHRBcmdzLnB1c2goYC0tZSR7dHlwZX1gLCBrZXksIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKGZsYWdzKSB7XG4gICAgcmVzdWx0QXJncy5wdXNoKCctZicsIGZsYWdzKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0QXJncztcbn1cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBTdGFydEFjdGl2aXR5T3B0aW9uc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfG51bWJlcn0gdXNlciBbJ2N1cnJlbnQnXSAtIFRoZSB1c2VyIElEIGZvciB3aGljaCB0aGUgc2VydmljZSBpcyBzdGFydGVkLlxuICogVGhlIGBjdXJyZW50YCB1c2VyIGlkIGlzIHVzZWQgYnkgZGVmYXVsdFxuICogQHByb3BlcnR5IHs/Ym9vbGVhbn0gd2FpdCBbZmFsc2VdIC0gU2V0IGl0IHRvIGB0cnVlYCBpZiB5b3Ugd2FudCB0byBibG9jayB0aGUgbWV0aG9kIGNhbGxcbiAqIHVudGlsIHRoZSBhY3Rpdml0eSBtYW5hZ2VyJ3MgcHJvY2VzcyByZXR1cm5zIHRoZSBjb250cm9sIHRvIHRoZSBzeXN0ZW0uXG4gKiBAcHJvcGVydHkgez9ib29sZWFufSBzdG9wIFtmYWxzZV0gLSBTZXQgaXQgdG8gYHRydWVgIHRvIGZvcmNlIHN0b3AgdGhlIHRhcmdldFxuICogYXBwIGJlZm9yZSBzdGFydGluZyB0aGUgYWN0aXZpdHlcbiAqIEBwcm9wZXJ0eSB7P251bWJlcnxzdHJpbmd9IHdpbmRvd2luZ01vZGUgLSBUaGUgd2luZG93aW5nIG1vZGUgdG8gbGF1bmNoIHRoZSBhY3Rpdml0eSBpbnRvLlxuICogQ2hlY2sgaHR0cHM6Ly9hbmRyb2lkLmdvb2dsZXNvdXJjZS5jb20vcGxhdGZvcm0vZnJhbWV3b3Jrcy9iYXNlLysvbWFzdGVyL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9XaW5kb3dDb25maWd1cmF0aW9uLmphdmFcbiAqIGZvciBtb3JlIGRldGFpbHMgb24gcG9zc2libGUgd2luZG93aW5nIG1vZGVzIChjb25zdGFudHMgc3RhcnRpbmcgd2l0aCBgV0lORE9XSU5HX01PREVfYCkuXG4gKiBAcHJvcGVydHkgez9udW1iZXJ8c3RyaW5nfSBhY3Rpdml0eVR5cGUgLSBUaGUgYWN0aXZpdHkgdHlwZSB0byBsYXVuY2ggdGhlIGFjdGl2aXR5IGFzLlxuICogQ2hlY2sgaHR0cHM6Ly9hbmRyb2lkLmdvb2dsZXNvdXJjZS5jb20vcGxhdGZvcm0vZnJhbWV3b3Jrcy9iYXNlLysvbWFzdGVyL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9XaW5kb3dDb25maWd1cmF0aW9uLmphdmFcbiAqIGZvciBtb3JlIGRldGFpbHMgb24gcG9zc2libGUgYWN0aXZpdHkgdHlwZXMgKGNvbnN0YW50cyBzdGFydGluZyB3aXRoIGBBQ1RJVklUWV9UWVBFX2ApLlxuICogQHByb3BlcnR5IHs/bnVtYmVyfHN0cmluZ30gZGlzcGxheSAtIFRoZSBkaXNwbGF5IGlkZW50aWZpZXIgdG8gbGF1bmNoIHRoZSBhY3Rpdml0eSBpbnRvLlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBpbnRlbnQgLSBUaGUgbmFtZSBvZiB0aGUgYWN0aXZpdHkgaW50ZW50IHRvIHN0YXJ0LCBmb3IgZXhhbXBsZVxuICogYGNvbS5zb21lLnBhY2thZ2UubmFtZS8uWW91clNlcnZpY2VTdWJDbGFzc05hbWVgXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGFjdGlvbiAtIEFjdGlvbiBuYW1lXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHBhY2thZ2UgLSBQYWNrYWdlIG5hbWVcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gdXJpIC0gVW5pZmllZCByZXNvdXJjZSBpZGVudGlmaWVyXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IG1pbWVUeXBlIC0gTWltZSB0eXBlXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGlkZW50aWZpZXIgLSBPcHRpb25hbCBpZGVudGlmaWVyXG4gKiBAcHJvcGVydHkgez9zdHJpbmd8QXJyYXk8c3RyaW5nPn0gY2F0ZWdvcmllcyAtIE9uZSBvciBtb3JlIGNhdGVnb3J5IG5hbWVzXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGNvbXBvbmVudCAtIENvbXBvbmVudCBuYW1lXG4gKiBAcHJvcGVydHkge0FycmF5PHN0cmluZ3xBcnJheTxzdHJpbmc+Pn0gZXh0cmFzIC0gT3B0aW9uYWwgaW50ZW50IGFyZ3VtZW50cy4gTXVzdCBiZSByZXByZXNlbnRlZFxuICogYXMgYXJyYXkgb2YgYXJyYXlzLCB3aGVyZSBlYWNoIHN1YmFycmF5IGl0ZW0gY29udGFpbnMgdHdvIG9yIHRocmVlIHN0cmluZyBpdGVtczpcbiAqIHZhbHVlIHR5cGUsIGtleSBuYW1lIGFuZCB0aGUgdmFsdWUgaXRzZWxmLlxuICogU3VwcG9ydGVkIHZhbHVlIHR5cGVzIGFyZTpcbiAqIC0gczogc3RyaW5nLiBWYWx1ZSBtdXN0IGJlIGEgdmFsaWQgc3RyaW5nXG4gKiAtIHNuOiBudWxsLiBWYWx1ZSBpcyBpZ25vcmVkIGZvciB0aGlzIHR5cGVcbiAqIC0gejogYm9vbGVhbi4gVmFsdWUgbXVzdCBiZSBlaXRoZXIgYHRydWVgIG9yIGBmYWxzZWBcbiAqIC0gaTogaW50ZWdlci4gVmFsdWUgbXVzdCBiZSBhIHZhbGlkIDQtYnl0ZSBpbnRlZ2VyIG51bWJlclxuICogLSBsOiBsb25nLiBWYWx1ZSBtdXN0IGJlIGEgdmFsaWQgOC1ieXRlIGxvbmcgbnVtYmVyXG4gKiAtIGY6IGZsb2F0OiBWYWx1ZSBtdXN0IGJlIGEgdmFsaWQgZmxvYXQgbnVtYmVyXG4gKiAtIHU6IHVyaS4gVmFsdWUgbXVzdCBiZSBhIHZhbGlkIHVuaWZvcm0gcmVzb3VyY2UgaWRlbnRpZmllciBzdHJpbmdcbiAqIC0gY246IGNvbXBvbmVudCBuYW1lLiBWYWx1ZSBtdXN0IGJlIGEgdmFsaWQgY29tcG9uZW50IG5hbWUgc3RyaW5nXG4gKiAtIGlhOiBJbnRlZ2VyW10uIFZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2YgY29tbWEtc2VwYXJhdGVkIGludGVnZXJzXG4gKiAtIGlhbDogTGlzdDxJbnRlZ2VyPi4gVmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvZiBjb21tYS1zZXBhcmF0ZWQgaW50ZWdlcnNcbiAqIC0gbGE6IExvbmdbXS4gVmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvZiBjb21tYS1zZXBhcmF0ZWQgbG9uZyBudW1iZXJzXG4gKiAtIGxhbDogTGlzdDxMb25nPi4gVmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvZiBjb21tYS1zZXBhcmF0ZWQgbG9uZyBudW1iZXJzXG4gKiAtIGZhOiBGbG9hdFtdLiBWYWx1ZSBtdXN0IGJlIGEgc3RyaW5nIG9mIGNvbW1hLXNlcGFyYXRlZCBmbG9hdCBudW1iZXJzXG4gKiAtIGZhbDogTGlzdDxGbG9hdD4uIFZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2YgY29tbWEtc2VwYXJhdGVkIGZsb2F0IG51bWJlcnNcbiAqIC0gc2E6IFN0cmluZ1tdLiBWYWx1ZSBtdXN0IGJlIGNvbW1hLXNlcGFyYXRlZCBzdHJpbmdzLiBUbyBlbWJlZCBhIGNvbW1hIGludG8gYSBzdHJpbmcsXG4gKiBlc2NhcGUgaXQgdXNpbmcgXCJcXCxcIlxuICogLSBzYWw6IExpc3Q8U3RyaW5nPi4gVmFsdWUgbXVzdCBiZSBjb21tYS1zZXBhcmF0ZWQgc3RyaW5ncy4gVG8gZW1iZWQgYSBjb21tYSBpbnRvIGEgc3RyaW5nLFxuICogZXNjYXBlIGl0IHVzaW5nIFwiXFwsXCJcbiAqIEZvciBleGFtcGxlOiBbWydzJywgJ3Zhck5hbWUxJywgJ015IFN0cmluZzEnXSwgWydzJywgJ3Zhck5hbWUyJywgJ015IFN0cmluZzInXSwgWydpYScsICdhcnJOYW1lJywgJzEsMiwzLDQnXV1cbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gZmxhZ3MgLSBJbnRlbnQgc3RhcnR1cC1zcGVjaWZpYyBmbGFncyBhcyBhIGhleGFkZWNpbWFsIHN0cmluZy5cbiAqIFNlZSBodHRwczovL2RldmVsb3Blci5hbmRyb2lkLmNvbS9yZWZlcmVuY2UvYW5kcm9pZC9jb250ZW50L0ludGVudC5odG1sXG4gKiBmb3IgdGhlIGxpc3Qgb2YgYXZhaWxhYmxlIGZsYWcgdmFsdWVzIChjb25zdGFudHMgc3RhcnRpbmcgd2l0aCBGTEFHX0FDVElWSVRZXykuXG4gKiBGbGFnIHZhbHVlcyBjb3VsZCBiZSBtZXJnZWQgdXNpbmcgdGhlIGxvZ2ljYWwgJ29yJyBvcGVyYXRpb24uXG4gKiBGb3IgZXhhbXBsZSwgMHgxMDIwMDAwMCBpcyB0aGUgY29tYmluYXRpb24gb2YgdHdvIGZsYWdzOlxuICogMHgxMDAwMDAwMCBgRkxBR19BQ1RJVklUWV9ORVdfVEFTS2AgfCAweDAwMjAwMDAwIGBGTEFHX0FDVElWSVRZX1JFU0VUX1RBU0tfSUZfTkVFREVEYFxuICovXG5cbi8qKlxuICogU3RhcnRzIHRoZSBnaXZlbiBhY3Rpdml0eSBpbnRlbnQuXG4gKlxuICogQHBhcmFtIHtTdGFydEFjdGl2aXR5T3B0aW9uc30gb3B0c1xuICogQHJldHVybnMge3N0cmluZ30gVGhlIGNvbW1hbmQgb3V0cHV0XG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlcmUgd2FzIGEgZmFpbHVyZSB3aGlsZSBzdGFydGluZyB0aGUgYWN0aXZpdHlcbiAqIG9yIHJlcXVpcmVkIG9wdGlvbnMgYXJlIG1pc3NpbmdcbiAqL1xuY29tbWFuZHMubW9iaWxlU3RhcnRBY3Rpdml0eSA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVN0YXJ0QWN0aXZpdHkgKG9wdHMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgdXNlcixcbiAgICB3YWl0LFxuICAgIHN0b3AsXG4gICAgd2luZG93aW5nTW9kZSxcbiAgICBhY3Rpdml0eVR5cGUsXG4gICAgZGlzcGxheSxcbiAgfSA9IG9wdHM7XG4gIGNvbnN0IGNtZCA9IFtcbiAgICAnYW0nLCAoYXdhaXQgdGhpcy5hZGIuZ2V0QXBpTGV2ZWwoKSA8IEFQSV9MRVZFTF9BTkRST0lEXzgpID8gJ3N0YXJ0JyA6ICdzdGFydC1hY3Rpdml0eScsXG4gIF07XG4gIGlmICghXy5pc05pbCh1c2VyKSkge1xuICAgIGNtZC5wdXNoKCctLXVzZXInLCB1c2VyKTtcbiAgfVxuICBpZiAod2FpdCkge1xuICAgIGNtZC5wdXNoKCctVycpO1xuICB9XG4gIGlmIChzdG9wKSB7XG4gICAgY21kLnB1c2goJy1TJyk7XG4gIH1cbiAgaWYgKCFfLmlzTmlsKHdpbmRvd2luZ01vZGUpKSB7XG4gICAgY21kLnB1c2goJy0td2luZG93aW5nTW9kZScsIHdpbmRvd2luZ01vZGUpO1xuICB9XG4gIGlmICghXy5pc05pbChhY3Rpdml0eVR5cGUpKSB7XG4gICAgY21kLnB1c2goJy0tYWN0aXZpdHlUeXBlJywgYWN0aXZpdHlUeXBlKTtcbiAgfVxuICBpZiAoIV8uaXNOaWwoZGlzcGxheSkpIHtcbiAgICBjbWQucHVzaCgnLS1kaXNwbGF5JywgZGlzcGxheSk7XG4gIH1cbiAgY21kLnB1c2goLi4uKHBhcnNlSW50ZW50U3BlYyhvcHRzKSkpO1xuICByZXR1cm4gYXdhaXQgdGhpcy5hZGIuc2hlbGwoY21kKTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gQnJvYWRjYXN0T3B0aW9uc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfG51bWJlcn0gdXNlciBbJ2FsbCddIC0gVGhlIHVzZXIgSUQgZm9yIHdoaWNoIHRoZSBicm9hZGNhc3QgaXMgc2VudC5cbiAqIFRoZSBgY3VycmVudGAgYWxpYXMgYXNzdW1lcyB0aGUgY3VycmVudCB1c2VyIElELlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSByZWNlaXZlclBlcm1pc3Npb24gLSBSZXF1aXJlIHJlY2VpdmVyIHRvIGhvbGQgdGhlIGdpdmVuIHBlcm1pc3Npb24uXG4gKiBAcHJvcGVydHkgez9ib29sZWFufSBhbGxvd0JhY2tncm91bmRBY3Rpdml0eVN0YXJ0cyBbZmFsc2VdIC0gV2hldGhlciB0aGUgcmVjZWl2ZXIgbWF5XG4gKiBzdGFydCBhY3Rpdml0aWVzIGV2ZW4gaWYgaW4gdGhlIGJhY2tncm91bmQuXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGludGVudCAtIFRoZSBuYW1lIG9mIHRoZSBpbnRlbnQgdG8gYnJvYWRjYXN0IHRvLCBmb3IgZXhhbXBsZVxuICogYGNvbS5zb21lLnBhY2thZ2UubmFtZS8uWW91clNlcnZpY2VTdWJDbGFzc05hbWVgLlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBhY3Rpb24gLSBBY3Rpb24gbmFtZVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSB1cmkgLSBVbmlmaWVkIHJlc291cmNlIGlkZW50aWZpZXJcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gbWltZVR5cGUgLSBNaW1lIHR5cGVcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gaWRlbnRpZmllciAtIE9wdGlvbmFsIGlkZW50aWZpZXJcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ3xBcnJheTxzdHJpbmc+fSBjYXRlZ29yaWVzIC0gT25lIG9yIG1vcmUgY2F0ZWdvcnkgbmFtZXNcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gY29tcG9uZW50IC0gQ29tcG9uZW50IG5hbWVcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gcGFja2FnZSAtIFBhY2thZ2UgbmFtZVxuICogQHByb3BlcnR5IHtBcnJheTxBcnJheTxzdHJpbmc+Pn0gZXh0cmFzIC0gT3B0aW9uYWwgaW50ZW50IGFyZ3VtZW50cy5cbiAqIFNlZSBhYm92ZSBmb3IgdGhlIGRldGFpbGVkIGRlc2NyaXB0aW9uLlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBmbGFncyAtIEludGVudCBzdGFydHVwLXNwZWNpZmljIGZsYWdzIGFzIGEgaGV4YWRlY2ltYWwgc3RyaW5nLlxuICogU2VlIGFib3ZlIGZvciB0aGUgZGV0YWlsZWQgZGVzY3JpcHRpb24uXG4gKi9cblxuXG4vKipcbiAqIFNlbmQgYSBicm9hZGNhc3QgaW50ZW50LlxuICpcbiAqIEBwYXJhbSB7QnJvYWRjYXN0T3B0aW9uc30gb3B0c1xuICogQHJldHVybnMge3N0cmluZ30gVGhlIGNvbW1hbmQgb3V0cHV0XG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlcmUgd2FzIGEgZmFpbHVyZSB3aGlsZSBzdGFydGluZyB0aGUgYWN0aXZpdHlcbiAqIG9yIHJlcXVpcmVkIG9wdGlvbnMgYXJlIG1pc3NpbmdcbiAqL1xuY29tbWFuZHMubW9iaWxlQnJvYWRjYXN0ID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlQnJvYWRjYXN0IChvcHRzID0ge30pIHtcbiAgY29uc3Qge1xuICAgIHVzZXIsXG4gICAgcmVjZWl2ZXJQZXJtaXNzaW9uLFxuICAgIGFsbG93QmFja2dyb3VuZEFjdGl2aXR5U3RhcnRzLFxuICB9ID0gb3B0cztcbiAgY29uc3QgY21kID0gWydhbScsICdicm9hZGNhc3QnXTtcbiAgaWYgKCFfLmlzTmlsKHVzZXIpKSB7XG4gICAgY21kLnB1c2goJy0tdXNlcicsIHVzZXIpO1xuICB9XG4gIGlmIChyZWNlaXZlclBlcm1pc3Npb24pIHtcbiAgICBjbWQucHVzaCgnLS1yZWNlaXZlci1wZXJtaXNzaW9uJywgcmVjZWl2ZXJQZXJtaXNzaW9uKTtcbiAgfVxuICBpZiAoYWxsb3dCYWNrZ3JvdW5kQWN0aXZpdHlTdGFydHMpIHtcbiAgICBjbWQucHVzaCgnLS1hbGxvdy1iYWNrZ3JvdW5kLWFjdGl2aXR5LXN0YXJ0cycpO1xuICB9XG4gIGNtZC5wdXNoKC4uLihwYXJzZUludGVudFNwZWMob3B0cykpKTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYWRiLnNoZWxsKGNtZCk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFN0YXJ0U2VydmljZU9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ3xudW1iZXJ9IHVzZXIgWydjdXJyZW50J10gLSBUaGUgdXNlciBJRCBmb3Igd2hpY2ggdGhlIHNlcnZpY2UgaXMgc3RhcnRlZC5cbiAqIFRoZSBgY3VycmVudGAgdXNlciBpZCBpcyB1c2VkIGJ5IGRlZmF1bHRcbiAqIEBwcm9wZXJ0eSB7P2Jvb2xlYW59IGZvcmVncm91bmQgW2ZhbHNlXSAtIFNldCBpdCB0byBgdHJ1ZWAgaWYgeW91ciBzZXJ2aWNlIG11c3QgYmVcbiAqIHN0YXJ0ZWQgYXMgZm9yZWdyb3VuZCBzZXJ2aWNlLiBUaGlzIG9wdGlvbiBpcyBpZ25vcmVkIGlmIHRoZSBBUEkgbGV2ZWwgb2YgdGhlXG4gKiBkZXZpY2UgdW5kZXIgdGVzdCBpcyBiZWxvdyAyNiAoQW5kcm9pZCA4KS5cbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gaW50ZW50IC0gVGhlIG5hbWUgb2YgdGhlIHNlcnZpY2UgaW50ZW50IHRvIHN0YXJ0LCBmb3IgZXhhbXBsZVxuICogYGNvbS5zb21lLnBhY2thZ2UubmFtZS8uWW91clNlcnZpY2VTdWJDbGFzc05hbWVgLlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBhY3Rpb24gLSBBY3Rpb24gbmFtZVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSB1cmkgLSBVbmlmaWVkIHJlc291cmNlIGlkZW50aWZpZXJcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gbWltZVR5cGUgLSBNaW1lIHR5cGVcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gaWRlbnRpZmllciAtIE9wdGlvbmFsIGlkZW50aWZpZXJcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ3xBcnJheTxzdHJpbmc+fSBjYXRlZ29yaWVzIC0gT25lIG9yIG1vcmUgY2F0ZWdvcnkgbmFtZXNcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gY29tcG9uZW50IC0gQ29tcG9uZW50IG5hbWVcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gcGFja2FnZSAtIFBhY2thZ2UgbmFtZVxuICogQHByb3BlcnR5IHtBcnJheTxBcnJheTxzdHJpbmc+Pn0gZXh0cmFzIC0gT3B0aW9uYWwgaW50ZW50IGFyZ3VtZW50cy5cbiAqIFNlZSBhYm92ZSBmb3IgdGhlIGRldGFpbGVkIGRlc2NyaXB0aW9uLlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBmbGFncyAtIEludGVudCBzdGFydHVwLXNwZWNpZmljIGZsYWdzIGFzIGEgaGV4YWRlY2ltYWwgc3RyaW5nLlxuICogU2VlIGFib3ZlIGZvciB0aGUgZGV0YWlsZWQgZGVzY3JpcHRpb24uXG4gKi9cblxuLyoqXG4gKiBTdGFydHMgdGhlIGdpdmVuIHNlcnZpY2UgaW50ZW50LlxuICpcbiAqIEBwYXJhbSB7U3RhcnRTZXJ2aWNlT3B0aW9uc30gb3B0c1xuICogQHJldHVybnMge3N0cmluZ30gVGhlIGNvbW1hbmQgb3V0cHV0XG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlcmUgd2FzIGEgZmFpbHVyZSB3aGlsZSBzdGFydGluZyB0aGUgc2VydmljZVxuICogb3IgcmVxdWlyZWQgb3B0aW9ucyBhcmUgbWlzc2luZ1xuICovXG5jb21tYW5kcy5tb2JpbGVTdGFydFNlcnZpY2UgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVTdGFydFNlcnZpY2UgKG9wdHMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgdXNlcixcbiAgICBmb3JlZ3JvdW5kLFxuICB9ID0gb3B0cztcbiAgY29uc3QgY21kID0gWydhbSddO1xuICBpZiAoYXdhaXQgdGhpcy5hZGIuZ2V0QXBpTGV2ZWwoKSA8IEFQSV9MRVZFTF9BTkRST0lEXzgpIHtcbiAgICBjbWQucHVzaCgnc3RhcnRzZXJ2aWNlJyk7XG4gIH0gZWxzZSB7XG4gICAgY21kLnB1c2goZm9yZWdyb3VuZCA/ICdzdGFydC1mb3JlZ3JvdW5kLXNlcnZpY2UnIDogJ3N0YXJ0LXNlcnZpY2UnKTtcbiAgfVxuICBpZiAoIV8uaXNOaWwodXNlcikpIHtcbiAgICBjbWQucHVzaCgnLS11c2VyJywgdXNlcik7XG4gIH1cbiAgY21kLnB1c2goLi4uKHBhcnNlSW50ZW50U3BlYyhvcHRzKSkpO1xuICByZXR1cm4gYXdhaXQgdGhpcy5hZGIuc2hlbGwoY21kKTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gU3RvcFNlcnZpY2VPcHRpb25zXG4gKiBAcHJvcGVydHkge3N0cmluZ3xudW1iZXJ9IHVzZXIgWydjdXJyZW50J10gLSBUaGUgdXNlciBJRCBmb3Igd2hpY2ggdGhlIHNlcnZpY2UgaXMgcnVubmluZy5cbiAqIFRoZSBgY3VycmVudGAgdXNlciBpZCBpcyB1c2VkIGJ5IGRlZmF1bHRcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gaW50ZW50IC0gVGhlIG5hbWUgb2YgdGhlIHNlcnZpY2UgaW50ZW50IHRvIHN0b3AsIGZvciBleGFtcGxlXG4gKiBgY29tLnNvbWUucGFja2FnZS5uYW1lLy5Zb3VyU2VydmljZVN1YkNsYXNzTmFtZWAuXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGFjdGlvbiAtIEFjdGlvbiBuYW1lXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHVyaSAtIFVuaWZpZWQgcmVzb3VyY2UgaWRlbnRpZmllclxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBtaW1lVHlwZSAtIE1pbWUgdHlwZVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBpZGVudGlmaWVyIC0gT3B0aW9uYWwgaWRlbnRpZmllclxuICogQHByb3BlcnR5IHs/c3RyaW5nfEFycmF5PHN0cmluZz59IGNhdGVnb3JpZXMgLSBPbmUgb3IgbW9yZSBjYXRlZ29yeSBuYW1lc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfSBjb21wb25lbnQgLSBDb21wb25lbnQgbmFtZVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBwYWNrYWdlIC0gUGFja2FnZSBuYW1lXG4gKiBAcHJvcGVydHkge0FycmF5PEFycmF5PHN0cmluZz4+fSBleHRyYXMgLSBPcHRpb25hbCBpbnRlbnQgYXJndW1lbnRzLlxuICogU2VlIGFib3ZlIGZvciB0aGUgZGV0YWlsZWQgZGVzY3JpcHRpb24uXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGZsYWdzIC0gU2VlIGFib3ZlIGZvciB0aGUgZGV0YWlsZWQgZGVzY3JpcHRpb24uXG4gKi9cblxuLyoqXG4gKiBTdG9wcyB0aGUgZ2l2ZW4gc2VydmljZSBpbnRlbnQuXG4gKlxuICogQHBhcmFtIHtTdG9wU2VydmljZU9wdGlvbnN9IG9wdHNcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBjb21tYW5kIG91dHB1dFxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZXJlIHdhcyBhIGZhaWx1cmUgd2hpbGUgc3RvcHBpbmcgdGhlIHNlcnZpY2VcbiAqIG9yIHJlcXVpcmVkIG9wdGlvbnMgYXJlIG1pc3NpbmdcbiAqL1xuY29tbWFuZHMubW9iaWxlU3RvcFNlcnZpY2UgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVTdG9wU2VydmljZSAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICB1c2VyLFxuICB9ID0gb3B0cztcbiAgY29uc3QgY21kID0gW1xuICAgICdhbScsXG4gICAgKGF3YWl0IHRoaXMuYWRiLmdldEFwaUxldmVsKCkgPCBBUElfTEVWRUxfQU5EUk9JRF84KSA/ICdzdG9wc2VydmljZScgOiAnc3RvcC1zZXJ2aWNlJ1xuICBdO1xuICBpZiAoIV8uaXNOaWwodXNlcikpIHtcbiAgICBjbWQucHVzaCgnLS11c2VyJywgdXNlcik7XG4gIH1cbiAgY21kLnB1c2goLi4uKHBhcnNlSW50ZW50U3BlYyhvcHRzKSkpO1xuICByZXR1cm4gYXdhaXQgdGhpcy5hZGIuc2hlbGwoY21kKTtcbn07XG5cblxuZXhwb3J0IHsgY29tbWFuZHMgfTtcbmV4cG9ydCBkZWZhdWx0IGNvbW1hbmRzO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUVBLE1BQU1BLGlCQUFpQixHQUFHLElBQTFC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
|
|
211
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2ludGVudC5qcyIsIm5hbWVzIjpbIk5PX1ZBTFVFX0FSR19UWVBFIiwiU1VQUE9SVEVEX0VYVFJBX1RZUEVTIiwiQVBJX0xFVkVMX0FORFJPSURfOCIsImNvbW1hbmRzIiwicGFyc2VJbnRlbnRTcGVjIiwib3B0cyIsImludGVudCIsImFjdGlvbiIsInVyaSIsIm1pbWVUeXBlIiwiaWRlbnRpZmllciIsImNhdGVnb3JpZXMiLCJjb21wb25lbnQiLCJleHRyYXMiLCJmbGFncyIsInJlc3VsdEFyZ3MiLCJwdXNoIiwiXyIsImlzTmlsIiwiaXNBcnJheSIsImZsYXRNYXAiLCJtYXAiLCJjTmFtZSIsInBhY2thZ2UiLCJlcnJvcnMiLCJJbnZhbGlkQXJndW1lbnRFcnJvciIsIml0ZW0iLCJ0eXBlIiwia2V5IiwidmFsdWUiLCJpbmNsdWRlcyIsImlzRW1wdHkiLCJpc1N0cmluZyIsInRyaW0iLCJKU09OIiwic3RyaW5naWZ5IiwiaXNVbmRlZmluZWQiLCJtb2JpbGVTdGFydEFjdGl2aXR5IiwidXNlciIsIndhaXQiLCJzdG9wIiwid2luZG93aW5nTW9kZSIsImFjdGl2aXR5VHlwZSIsImRpc3BsYXkiLCJjbWQiLCJhZGIiLCJnZXRBcGlMZXZlbCIsInNoZWxsIiwibW9iaWxlQnJvYWRjYXN0IiwicmVjZWl2ZXJQZXJtaXNzaW9uIiwiYWxsb3dCYWNrZ3JvdW5kQWN0aXZpdHlTdGFydHMiLCJtb2JpbGVTdGFydFNlcnZpY2UiLCJmb3JlZ3JvdW5kIiwibW9iaWxlU3RvcFNlcnZpY2UiXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uIiwic291cmNlcyI6WyJsaWIvY29tbWFuZHMvaW50ZW50LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBlcnJvcnMgfSBmcm9tICdhcHBpdW0vZHJpdmVyJztcblxuY29uc3QgTk9fVkFMVUVfQVJHX1RZUEUgPSAnc24nO1xuY29uc3QgU1VQUE9SVEVEX0VYVFJBX1RZUEVTID0gW1xuICAncycsIE5PX1ZBTFVFX0FSR19UWVBFLCAneicsICdpJywgJ2wnLCAnZicsICd1JywgJ2NuJyxcbiAgJ2lhJywgJ2lhbCcsICdsYScsICdsYWwnLCAnZmEnLCAnZmFsJywgJ3NhJywgJ3NhbCcsXG5dO1xuY29uc3QgQVBJX0xFVkVMX0FORFJPSURfOCA9IDI2O1xuXG5jb25zdCBjb21tYW5kcyA9IHt9O1xuXG5mdW5jdGlvbiBwYXJzZUludGVudFNwZWMgKG9wdHMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgaW50ZW50LFxuICAgIGFjdGlvbixcbiAgICB1cmksXG4gICAgbWltZVR5cGUsXG4gICAgaWRlbnRpZmllcixcbiAgICBjYXRlZ29yaWVzLFxuICAgIGNvbXBvbmVudCxcbiAgICBleHRyYXMsXG4gICAgZmxhZ3MsXG4gIH0gPSBvcHRzO1xuICBjb25zdCByZXN1bHRBcmdzID0gW107XG4gIGlmIChpbnRlbnQpIHtcbiAgICByZXN1bHRBcmdzLnB1c2goaW50ZW50KTtcbiAgfVxuICBpZiAoYWN0aW9uKSB7XG4gICAgcmVzdWx0QXJncy5wdXNoKCctYScsIGFjdGlvbik7XG4gIH1cbiAgaWYgKHVyaSkge1xuICAgIHJlc3VsdEFyZ3MucHVzaCgnLWQnLCB1cmkpO1xuICB9XG4gIGlmIChtaW1lVHlwZSkge1xuICAgIHJlc3VsdEFyZ3MucHVzaCgnLXQnLCBtaW1lVHlwZSk7XG4gIH1cbiAgaWYgKCFfLmlzTmlsKGlkZW50aWZpZXIpKSB7XG4gICAgcmVzdWx0QXJncy5wdXNoKCctaScsIGlkZW50aWZpZXIpO1xuICB9XG4gIGlmIChjYXRlZ29yaWVzKSB7XG4gICAgaWYgKF8uaXNBcnJheShjYXRlZ29yaWVzKSkge1xuICAgICAgcmVzdWx0QXJncy5wdXNoKC4uLihfLmZsYXRNYXAoY2F0ZWdvcmllcy5tYXAoKGNOYW1lKSA9PiBbJy1jJywgY05hbWVdKSkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0QXJncy5wdXNoKCctYycsIGNhdGVnb3JpZXMpO1xuICAgIH1cbiAgfVxuICBpZiAoY29tcG9uZW50KSB7XG4gICAgcmVzdWx0QXJncy5wdXNoKCctbicsIGNvbXBvbmVudCk7XG4gIH1cbiAgaWYgKG9wdHMucGFja2FnZSkge1xuICAgIHJlc3VsdEFyZ3MucHVzaCgnLXAnLCBvcHRzLnBhY2thZ2UpO1xuICB9XG4gIGlmIChleHRyYXMpIHtcbiAgICBpZiAoIV8uaXNBcnJheShleHRyYXMpKSB7XG4gICAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRBcmd1bWVudEVycm9yKGAnZXh0cmFzJyBtdXN0IGJlIGFuIGFycmF5YCk7XG4gICAgfVxuICAgIGZvciAoY29uc3QgaXRlbSBvZiBleHRyYXMpIHtcbiAgICAgIGlmICghXy5pc0FycmF5KGl0ZW0pKSB7XG4gICAgICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZEFyZ3VtZW50RXJyb3IoYEV4dHJhIGFyZ3VtZW50ICcke2l0ZW19JyBtdXN0IGJlIGFuIGFycmF5YCk7XG4gICAgICB9XG4gICAgICBjb25zdCBbdHlwZSwga2V5LCB2YWx1ZV0gPSBpdGVtO1xuICAgICAgaWYgKCFfLmluY2x1ZGVzKFNVUFBPUlRFRF9FWFRSQV9UWVBFUywgdHlwZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihcbiAgICAgICAgICBgRXh0cmEgYXJndW1lbnQgdHlwZSAnJHt0eXBlfScgaXMgbm90IGtub3duLiBgICtcbiAgICAgICAgICBgU3VwcG9ydGVkIGludGVudCBhcmd1bWVudCB0eXBlcyBhcmU6ICR7U1VQUE9SVEVEX0VYVFJBX1RZUEVTfWBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmIChfLmlzRW1wdHkoa2V5KSB8fCAoXy5pc1N0cmluZyhrZXkpICYmIF8udHJpbShrZXkpID09PSAnJykpIHtcbiAgICAgICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihcbiAgICAgICAgICBgRXh0cmEgYXJndW1lbnQncyBrZXkgaW4gJyR7SlNPTi5zdHJpbmdpZnkoaXRlbSl9JyBtdXN0IGJlIGEgdmFsaWQgc3RyaW5nIGlkZW50aWZpZXJgXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAodHlwZSA9PT0gTk9fVkFMVUVfQVJHX1RZUEUpIHtcbiAgICAgICAgcmVzdWx0QXJncy5wdXNoKGAtLWUke3R5cGV9YCwga2V5KTtcbiAgICAgIH0gZWxzZSBpZiAoXy5pc1VuZGVmaW5lZCh2YWx1ZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihcbiAgICAgICAgICBgSW50ZW50IGFyZ3VtZW50IHR5cGUgJyR7dHlwZX0nIGluICcke0pTT04uc3RyaW5naWZ5KGl0ZW0pfScgcmVxdWlyZXMgYSBgICtcbiAgICAgICAgICBgdmFsaWQgdmFsdWUgdG8gYmUgcHJvdmlkZWRgXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHRBcmdzLnB1c2goYC0tZSR7dHlwZX1gLCBrZXksIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKGZsYWdzKSB7XG4gICAgcmVzdWx0QXJncy5wdXNoKCctZicsIGZsYWdzKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0QXJncztcbn1cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBTdGFydEFjdGl2aXR5T3B0aW9uc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfG51bWJlcn0gdXNlciBbJ2N1cnJlbnQnXSAtIFRoZSB1c2VyIElEIGZvciB3aGljaCB0aGUgc2VydmljZSBpcyBzdGFydGVkLlxuICogVGhlIGBjdXJyZW50YCB1c2VyIGlkIGlzIHVzZWQgYnkgZGVmYXVsdFxuICogQHByb3BlcnR5IHs/Ym9vbGVhbn0gd2FpdCBbZmFsc2VdIC0gU2V0IGl0IHRvIGB0cnVlYCBpZiB5b3Ugd2FudCB0byBibG9jayB0aGUgbWV0aG9kIGNhbGxcbiAqIHVudGlsIHRoZSBhY3Rpdml0eSBtYW5hZ2VyJ3MgcHJvY2VzcyByZXR1cm5zIHRoZSBjb250cm9sIHRvIHRoZSBzeXN0ZW0uXG4gKiBAcHJvcGVydHkgez9ib29sZWFufSBzdG9wIFtmYWxzZV0gLSBTZXQgaXQgdG8gYHRydWVgIHRvIGZvcmNlIHN0b3AgdGhlIHRhcmdldFxuICogYXBwIGJlZm9yZSBzdGFydGluZyB0aGUgYWN0aXZpdHlcbiAqIEBwcm9wZXJ0eSB7P251bWJlcnxzdHJpbmd9IHdpbmRvd2luZ01vZGUgLSBUaGUgd2luZG93aW5nIG1vZGUgdG8gbGF1bmNoIHRoZSBhY3Rpdml0eSBpbnRvLlxuICogQ2hlY2sgaHR0cHM6Ly9hbmRyb2lkLmdvb2dsZXNvdXJjZS5jb20vcGxhdGZvcm0vZnJhbWV3b3Jrcy9iYXNlLysvbWFzdGVyL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9XaW5kb3dDb25maWd1cmF0aW9uLmphdmFcbiAqIGZvciBtb3JlIGRldGFpbHMgb24gcG9zc2libGUgd2luZG93aW5nIG1vZGVzIChjb25zdGFudHMgc3RhcnRpbmcgd2l0aCBgV0lORE9XSU5HX01PREVfYCkuXG4gKiBAcHJvcGVydHkgez9udW1iZXJ8c3RyaW5nfSBhY3Rpdml0eVR5cGUgLSBUaGUgYWN0aXZpdHkgdHlwZSB0byBsYXVuY2ggdGhlIGFjdGl2aXR5IGFzLlxuICogQ2hlY2sgaHR0cHM6Ly9hbmRyb2lkLmdvb2dsZXNvdXJjZS5jb20vcGxhdGZvcm0vZnJhbWV3b3Jrcy9iYXNlLysvbWFzdGVyL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9XaW5kb3dDb25maWd1cmF0aW9uLmphdmFcbiAqIGZvciBtb3JlIGRldGFpbHMgb24gcG9zc2libGUgYWN0aXZpdHkgdHlwZXMgKGNvbnN0YW50cyBzdGFydGluZyB3aXRoIGBBQ1RJVklUWV9UWVBFX2ApLlxuICogQHByb3BlcnR5IHs/bnVtYmVyfHN0cmluZ30gZGlzcGxheSAtIFRoZSBkaXNwbGF5IGlkZW50aWZpZXIgdG8gbGF1bmNoIHRoZSBhY3Rpdml0eSBpbnRvLlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBpbnRlbnQgLSBUaGUgbmFtZSBvZiB0aGUgYWN0aXZpdHkgaW50ZW50IHRvIHN0YXJ0LCBmb3IgZXhhbXBsZVxuICogYGNvbS5zb21lLnBhY2thZ2UubmFtZS8uWW91clNlcnZpY2VTdWJDbGFzc05hbWVgXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGFjdGlvbiAtIEFjdGlvbiBuYW1lXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHBhY2thZ2UgLSBQYWNrYWdlIG5hbWVcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gdXJpIC0gVW5pZmllZCByZXNvdXJjZSBpZGVudGlmaWVyXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IG1pbWVUeXBlIC0gTWltZSB0eXBlXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGlkZW50aWZpZXIgLSBPcHRpb25hbCBpZGVudGlmaWVyXG4gKiBAcHJvcGVydHkgez9zdHJpbmd8QXJyYXk8c3RyaW5nPn0gY2F0ZWdvcmllcyAtIE9uZSBvciBtb3JlIGNhdGVnb3J5IG5hbWVzXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGNvbXBvbmVudCAtIENvbXBvbmVudCBuYW1lXG4gKiBAcHJvcGVydHkge0FycmF5PHN0cmluZ3xBcnJheTxzdHJpbmc+Pn0gZXh0cmFzIC0gT3B0aW9uYWwgaW50ZW50IGFyZ3VtZW50cy4gTXVzdCBiZSByZXByZXNlbnRlZFxuICogYXMgYXJyYXkgb2YgYXJyYXlzLCB3aGVyZSBlYWNoIHN1YmFycmF5IGl0ZW0gY29udGFpbnMgdHdvIG9yIHRocmVlIHN0cmluZyBpdGVtczpcbiAqIHZhbHVlIHR5cGUsIGtleSBuYW1lIGFuZCB0aGUgdmFsdWUgaXRzZWxmLlxuICogU3VwcG9ydGVkIHZhbHVlIHR5cGVzIGFyZTpcbiAqIC0gczogc3RyaW5nLiBWYWx1ZSBtdXN0IGJlIGEgdmFsaWQgc3RyaW5nXG4gKiAtIHNuOiBudWxsLiBWYWx1ZSBpcyBpZ25vcmVkIGZvciB0aGlzIHR5cGVcbiAqIC0gejogYm9vbGVhbi4gVmFsdWUgbXVzdCBiZSBlaXRoZXIgYHRydWVgIG9yIGBmYWxzZWBcbiAqIC0gaTogaW50ZWdlci4gVmFsdWUgbXVzdCBiZSBhIHZhbGlkIDQtYnl0ZSBpbnRlZ2VyIG51bWJlclxuICogLSBsOiBsb25nLiBWYWx1ZSBtdXN0IGJlIGEgdmFsaWQgOC1ieXRlIGxvbmcgbnVtYmVyXG4gKiAtIGY6IGZsb2F0OiBWYWx1ZSBtdXN0IGJlIGEgdmFsaWQgZmxvYXQgbnVtYmVyXG4gKiAtIHU6IHVyaS4gVmFsdWUgbXVzdCBiZSBhIHZhbGlkIHVuaWZvcm0gcmVzb3VyY2UgaWRlbnRpZmllciBzdHJpbmdcbiAqIC0gY246IGNvbXBvbmVudCBuYW1lLiBWYWx1ZSBtdXN0IGJlIGEgdmFsaWQgY29tcG9uZW50IG5hbWUgc3RyaW5nXG4gKiAtIGlhOiBJbnRlZ2VyW10uIFZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2YgY29tbWEtc2VwYXJhdGVkIGludGVnZXJzXG4gKiAtIGlhbDogTGlzdDxJbnRlZ2VyPi4gVmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvZiBjb21tYS1zZXBhcmF0ZWQgaW50ZWdlcnNcbiAqIC0gbGE6IExvbmdbXS4gVmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvZiBjb21tYS1zZXBhcmF0ZWQgbG9uZyBudW1iZXJzXG4gKiAtIGxhbDogTGlzdDxMb25nPi4gVmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvZiBjb21tYS1zZXBhcmF0ZWQgbG9uZyBudW1iZXJzXG4gKiAtIGZhOiBGbG9hdFtdLiBWYWx1ZSBtdXN0IGJlIGEgc3RyaW5nIG9mIGNvbW1hLXNlcGFyYXRlZCBmbG9hdCBudW1iZXJzXG4gKiAtIGZhbDogTGlzdDxGbG9hdD4uIFZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2YgY29tbWEtc2VwYXJhdGVkIGZsb2F0IG51bWJlcnNcbiAqIC0gc2E6IFN0cmluZ1tdLiBWYWx1ZSBtdXN0IGJlIGNvbW1hLXNlcGFyYXRlZCBzdHJpbmdzLiBUbyBlbWJlZCBhIGNvbW1hIGludG8gYSBzdHJpbmcsXG4gKiBlc2NhcGUgaXQgdXNpbmcgXCJcXCxcIlxuICogLSBzYWw6IExpc3Q8U3RyaW5nPi4gVmFsdWUgbXVzdCBiZSBjb21tYS1zZXBhcmF0ZWQgc3RyaW5ncy4gVG8gZW1iZWQgYSBjb21tYSBpbnRvIGEgc3RyaW5nLFxuICogZXNjYXBlIGl0IHVzaW5nIFwiXFwsXCJcbiAqIEZvciBleGFtcGxlOiBbWydzJywgJ3Zhck5hbWUxJywgJ015IFN0cmluZzEnXSwgWydzJywgJ3Zhck5hbWUyJywgJ015IFN0cmluZzInXSwgWydpYScsICdhcnJOYW1lJywgJzEsMiwzLDQnXV1cbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gZmxhZ3MgLSBJbnRlbnQgc3RhcnR1cC1zcGVjaWZpYyBmbGFncyBhcyBhIGhleGFkZWNpbWFsIHN0cmluZy5cbiAqIFNlZSBodHRwczovL2RldmVsb3Blci5hbmRyb2lkLmNvbS9yZWZlcmVuY2UvYW5kcm9pZC9jb250ZW50L0ludGVudC5odG1sXG4gKiBmb3IgdGhlIGxpc3Qgb2YgYXZhaWxhYmxlIGZsYWcgdmFsdWVzIChjb25zdGFudHMgc3RhcnRpbmcgd2l0aCBGTEFHX0FDVElWSVRZXykuXG4gKiBGbGFnIHZhbHVlcyBjb3VsZCBiZSBtZXJnZWQgdXNpbmcgdGhlIGxvZ2ljYWwgJ29yJyBvcGVyYXRpb24uXG4gKiBGb3IgZXhhbXBsZSwgMHgxMDIwMDAwMCBpcyB0aGUgY29tYmluYXRpb24gb2YgdHdvIGZsYWdzOlxuICogMHgxMDAwMDAwMCBgRkxBR19BQ1RJVklUWV9ORVdfVEFTS2AgfCAweDAwMjAwMDAwIGBGTEFHX0FDVElWSVRZX1JFU0VUX1RBU0tfSUZfTkVFREVEYFxuICovXG5cbi8qKlxuICogU3RhcnRzIHRoZSBnaXZlbiBhY3Rpdml0eSBpbnRlbnQuXG4gKlxuICogQHBhcmFtIHtTdGFydEFjdGl2aXR5T3B0aW9uc30gb3B0c1xuICogQHJldHVybnMge3N0cmluZ30gVGhlIGNvbW1hbmQgb3V0cHV0XG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlcmUgd2FzIGEgZmFpbHVyZSB3aGlsZSBzdGFydGluZyB0aGUgYWN0aXZpdHlcbiAqIG9yIHJlcXVpcmVkIG9wdGlvbnMgYXJlIG1pc3NpbmdcbiAqL1xuY29tbWFuZHMubW9iaWxlU3RhcnRBY3Rpdml0eSA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVN0YXJ0QWN0aXZpdHkgKG9wdHMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgdXNlcixcbiAgICB3YWl0LFxuICAgIHN0b3AsXG4gICAgd2luZG93aW5nTW9kZSxcbiAgICBhY3Rpdml0eVR5cGUsXG4gICAgZGlzcGxheSxcbiAgfSA9IG9wdHM7XG4gIGNvbnN0IGNtZCA9IFtcbiAgICAnYW0nLCAoYXdhaXQgdGhpcy5hZGIuZ2V0QXBpTGV2ZWwoKSA8IEFQSV9MRVZFTF9BTkRST0lEXzgpID8gJ3N0YXJ0JyA6ICdzdGFydC1hY3Rpdml0eScsXG4gIF07XG4gIGlmICghXy5pc05pbCh1c2VyKSkge1xuICAgIGNtZC5wdXNoKCctLXVzZXInLCB1c2VyKTtcbiAgfVxuICBpZiAod2FpdCkge1xuICAgIGNtZC5wdXNoKCctVycpO1xuICB9XG4gIGlmIChzdG9wKSB7XG4gICAgY21kLnB1c2goJy1TJyk7XG4gIH1cbiAgaWYgKCFfLmlzTmlsKHdpbmRvd2luZ01vZGUpKSB7XG4gICAgY21kLnB1c2goJy0td2luZG93aW5nTW9kZScsIHdpbmRvd2luZ01vZGUpO1xuICB9XG4gIGlmICghXy5pc05pbChhY3Rpdml0eVR5cGUpKSB7XG4gICAgY21kLnB1c2goJy0tYWN0aXZpdHlUeXBlJywgYWN0aXZpdHlUeXBlKTtcbiAgfVxuICBpZiAoIV8uaXNOaWwoZGlzcGxheSkpIHtcbiAgICBjbWQucHVzaCgnLS1kaXNwbGF5JywgZGlzcGxheSk7XG4gIH1cbiAgY21kLnB1c2goLi4uKHBhcnNlSW50ZW50U3BlYyhvcHRzKSkpO1xuICByZXR1cm4gYXdhaXQgdGhpcy5hZGIuc2hlbGwoY21kKTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gQnJvYWRjYXN0T3B0aW9uc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfG51bWJlcn0gdXNlciBbJ2FsbCddIC0gVGhlIHVzZXIgSUQgZm9yIHdoaWNoIHRoZSBicm9hZGNhc3QgaXMgc2VudC5cbiAqIFRoZSBgY3VycmVudGAgYWxpYXMgYXNzdW1lcyB0aGUgY3VycmVudCB1c2VyIElELlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSByZWNlaXZlclBlcm1pc3Npb24gLSBSZXF1aXJlIHJlY2VpdmVyIHRvIGhvbGQgdGhlIGdpdmVuIHBlcm1pc3Npb24uXG4gKiBAcHJvcGVydHkgez9ib29sZWFufSBhbGxvd0JhY2tncm91bmRBY3Rpdml0eVN0YXJ0cyBbZmFsc2VdIC0gV2hldGhlciB0aGUgcmVjZWl2ZXIgbWF5XG4gKiBzdGFydCBhY3Rpdml0aWVzIGV2ZW4gaWYgaW4gdGhlIGJhY2tncm91bmQuXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGludGVudCAtIFRoZSBuYW1lIG9mIHRoZSBpbnRlbnQgdG8gYnJvYWRjYXN0IHRvLCBmb3IgZXhhbXBsZVxuICogYGNvbS5zb21lLnBhY2thZ2UubmFtZS8uWW91clNlcnZpY2VTdWJDbGFzc05hbWVgLlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBhY3Rpb24gLSBBY3Rpb24gbmFtZVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSB1cmkgLSBVbmlmaWVkIHJlc291cmNlIGlkZW50aWZpZXJcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gbWltZVR5cGUgLSBNaW1lIHR5cGVcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gaWRlbnRpZmllciAtIE9wdGlvbmFsIGlkZW50aWZpZXJcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ3xBcnJheTxzdHJpbmc+fSBjYXRlZ29yaWVzIC0gT25lIG9yIG1vcmUgY2F0ZWdvcnkgbmFtZXNcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gY29tcG9uZW50IC0gQ29tcG9uZW50IG5hbWVcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gcGFja2FnZSAtIFBhY2thZ2UgbmFtZVxuICogQHByb3BlcnR5IHtBcnJheTxBcnJheTxzdHJpbmc+Pn0gZXh0cmFzIC0gT3B0aW9uYWwgaW50ZW50IGFyZ3VtZW50cy5cbiAqIFNlZSBhYm92ZSBmb3IgdGhlIGRldGFpbGVkIGRlc2NyaXB0aW9uLlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBmbGFncyAtIEludGVudCBzdGFydHVwLXNwZWNpZmljIGZsYWdzIGFzIGEgaGV4YWRlY2ltYWwgc3RyaW5nLlxuICogU2VlIGFib3ZlIGZvciB0aGUgZGV0YWlsZWQgZGVzY3JpcHRpb24uXG4gKi9cblxuXG4vKipcbiAqIFNlbmQgYSBicm9hZGNhc3QgaW50ZW50LlxuICpcbiAqIEBwYXJhbSB7QnJvYWRjYXN0T3B0aW9uc30gb3B0c1xuICogQHJldHVybnMge3N0cmluZ30gVGhlIGNvbW1hbmQgb3V0cHV0XG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlcmUgd2FzIGEgZmFpbHVyZSB3aGlsZSBzdGFydGluZyB0aGUgYWN0aXZpdHlcbiAqIG9yIHJlcXVpcmVkIG9wdGlvbnMgYXJlIG1pc3NpbmdcbiAqL1xuY29tbWFuZHMubW9iaWxlQnJvYWRjYXN0ID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlQnJvYWRjYXN0IChvcHRzID0ge30pIHtcbiAgY29uc3Qge1xuICAgIHVzZXIsXG4gICAgcmVjZWl2ZXJQZXJtaXNzaW9uLFxuICAgIGFsbG93QmFja2dyb3VuZEFjdGl2aXR5U3RhcnRzLFxuICB9ID0gb3B0cztcbiAgY29uc3QgY21kID0gWydhbScsICdicm9hZGNhc3QnXTtcbiAgaWYgKCFfLmlzTmlsKHVzZXIpKSB7XG4gICAgY21kLnB1c2goJy0tdXNlcicsIHVzZXIpO1xuICB9XG4gIGlmIChyZWNlaXZlclBlcm1pc3Npb24pIHtcbiAgICBjbWQucHVzaCgnLS1yZWNlaXZlci1wZXJtaXNzaW9uJywgcmVjZWl2ZXJQZXJtaXNzaW9uKTtcbiAgfVxuICBpZiAoYWxsb3dCYWNrZ3JvdW5kQWN0aXZpdHlTdGFydHMpIHtcbiAgICBjbWQucHVzaCgnLS1hbGxvdy1iYWNrZ3JvdW5kLWFjdGl2aXR5LXN0YXJ0cycpO1xuICB9XG4gIGNtZC5wdXNoKC4uLihwYXJzZUludGVudFNwZWMob3B0cykpKTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYWRiLnNoZWxsKGNtZCk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFN0YXJ0U2VydmljZU9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ3xudW1iZXJ9IHVzZXIgWydjdXJyZW50J10gLSBUaGUgdXNlciBJRCBmb3Igd2hpY2ggdGhlIHNlcnZpY2UgaXMgc3RhcnRlZC5cbiAqIFRoZSBgY3VycmVudGAgdXNlciBpZCBpcyB1c2VkIGJ5IGRlZmF1bHRcbiAqIEBwcm9wZXJ0eSB7P2Jvb2xlYW59IGZvcmVncm91bmQgW2ZhbHNlXSAtIFNldCBpdCB0byBgdHJ1ZWAgaWYgeW91ciBzZXJ2aWNlIG11c3QgYmVcbiAqIHN0YXJ0ZWQgYXMgZm9yZWdyb3VuZCBzZXJ2aWNlLiBUaGlzIG9wdGlvbiBpcyBpZ25vcmVkIGlmIHRoZSBBUEkgbGV2ZWwgb2YgdGhlXG4gKiBkZXZpY2UgdW5kZXIgdGVzdCBpcyBiZWxvdyAyNiAoQW5kcm9pZCA4KS5cbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gaW50ZW50IC0gVGhlIG5hbWUgb2YgdGhlIHNlcnZpY2UgaW50ZW50IHRvIHN0YXJ0LCBmb3IgZXhhbXBsZVxuICogYGNvbS5zb21lLnBhY2thZ2UubmFtZS8uWW91clNlcnZpY2VTdWJDbGFzc05hbWVgLlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBhY3Rpb24gLSBBY3Rpb24gbmFtZVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSB1cmkgLSBVbmlmaWVkIHJlc291cmNlIGlkZW50aWZpZXJcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gbWltZVR5cGUgLSBNaW1lIHR5cGVcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gaWRlbnRpZmllciAtIE9wdGlvbmFsIGlkZW50aWZpZXJcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ3xBcnJheTxzdHJpbmc+fSBjYXRlZ29yaWVzIC0gT25lIG9yIG1vcmUgY2F0ZWdvcnkgbmFtZXNcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gY29tcG9uZW50IC0gQ29tcG9uZW50IG5hbWVcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gcGFja2FnZSAtIFBhY2thZ2UgbmFtZVxuICogQHByb3BlcnR5IHtBcnJheTxBcnJheTxzdHJpbmc+Pn0gZXh0cmFzIC0gT3B0aW9uYWwgaW50ZW50IGFyZ3VtZW50cy5cbiAqIFNlZSBhYm92ZSBmb3IgdGhlIGRldGFpbGVkIGRlc2NyaXB0aW9uLlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBmbGFncyAtIEludGVudCBzdGFydHVwLXNwZWNpZmljIGZsYWdzIGFzIGEgaGV4YWRlY2ltYWwgc3RyaW5nLlxuICogU2VlIGFib3ZlIGZvciB0aGUgZGV0YWlsZWQgZGVzY3JpcHRpb24uXG4gKi9cblxuLyoqXG4gKiBTdGFydHMgdGhlIGdpdmVuIHNlcnZpY2UgaW50ZW50LlxuICpcbiAqIEBwYXJhbSB7U3RhcnRTZXJ2aWNlT3B0aW9uc30gb3B0c1xuICogQHJldHVybnMge3N0cmluZ30gVGhlIGNvbW1hbmQgb3V0cHV0XG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlcmUgd2FzIGEgZmFpbHVyZSB3aGlsZSBzdGFydGluZyB0aGUgc2VydmljZVxuICogb3IgcmVxdWlyZWQgb3B0aW9ucyBhcmUgbWlzc2luZ1xuICovXG5jb21tYW5kcy5tb2JpbGVTdGFydFNlcnZpY2UgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVTdGFydFNlcnZpY2UgKG9wdHMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgdXNlcixcbiAgICBmb3JlZ3JvdW5kLFxuICB9ID0gb3B0cztcbiAgY29uc3QgY21kID0gWydhbSddO1xuICBpZiAoYXdhaXQgdGhpcy5hZGIuZ2V0QXBpTGV2ZWwoKSA8IEFQSV9MRVZFTF9BTkRST0lEXzgpIHtcbiAgICBjbWQucHVzaCgnc3RhcnRzZXJ2aWNlJyk7XG4gIH0gZWxzZSB7XG4gICAgY21kLnB1c2goZm9yZWdyb3VuZCA/ICdzdGFydC1mb3JlZ3JvdW5kLXNlcnZpY2UnIDogJ3N0YXJ0LXNlcnZpY2UnKTtcbiAgfVxuICBpZiAoIV8uaXNOaWwodXNlcikpIHtcbiAgICBjbWQucHVzaCgnLS11c2VyJywgdXNlcik7XG4gIH1cbiAgY21kLnB1c2goLi4uKHBhcnNlSW50ZW50U3BlYyhvcHRzKSkpO1xuICByZXR1cm4gYXdhaXQgdGhpcy5hZGIuc2hlbGwoY21kKTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gU3RvcFNlcnZpY2VPcHRpb25zXG4gKiBAcHJvcGVydHkge3N0cmluZ3xudW1iZXJ9IHVzZXIgWydjdXJyZW50J10gLSBUaGUgdXNlciBJRCBmb3Igd2hpY2ggdGhlIHNlcnZpY2UgaXMgcnVubmluZy5cbiAqIFRoZSBgY3VycmVudGAgdXNlciBpZCBpcyB1c2VkIGJ5IGRlZmF1bHRcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gaW50ZW50IC0gVGhlIG5hbWUgb2YgdGhlIHNlcnZpY2UgaW50ZW50IHRvIHN0b3AsIGZvciBleGFtcGxlXG4gKiBgY29tLnNvbWUucGFja2FnZS5uYW1lLy5Zb3VyU2VydmljZVN1YkNsYXNzTmFtZWAuXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGFjdGlvbiAtIEFjdGlvbiBuYW1lXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHVyaSAtIFVuaWZpZWQgcmVzb3VyY2UgaWRlbnRpZmllclxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBtaW1lVHlwZSAtIE1pbWUgdHlwZVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBpZGVudGlmaWVyIC0gT3B0aW9uYWwgaWRlbnRpZmllclxuICogQHByb3BlcnR5IHs/c3RyaW5nfEFycmF5PHN0cmluZz59IGNhdGVnb3JpZXMgLSBPbmUgb3IgbW9yZSBjYXRlZ29yeSBuYW1lc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfSBjb21wb25lbnQgLSBDb21wb25lbnQgbmFtZVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBwYWNrYWdlIC0gUGFja2FnZSBuYW1lXG4gKiBAcHJvcGVydHkge0FycmF5PEFycmF5PHN0cmluZz4+fSBleHRyYXMgLSBPcHRpb25hbCBpbnRlbnQgYXJndW1lbnRzLlxuICogU2VlIGFib3ZlIGZvciB0aGUgZGV0YWlsZWQgZGVzY3JpcHRpb24uXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGZsYWdzIC0gU2VlIGFib3ZlIGZvciB0aGUgZGV0YWlsZWQgZGVzY3JpcHRpb24uXG4gKi9cblxuLyoqXG4gKiBTdG9wcyB0aGUgZ2l2ZW4gc2VydmljZSBpbnRlbnQuXG4gKlxuICogQHBhcmFtIHtTdG9wU2VydmljZU9wdGlvbnN9IG9wdHNcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBjb21tYW5kIG91dHB1dFxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZXJlIHdhcyBhIGZhaWx1cmUgd2hpbGUgc3RvcHBpbmcgdGhlIHNlcnZpY2VcbiAqIG9yIHJlcXVpcmVkIG9wdGlvbnMgYXJlIG1pc3NpbmdcbiAqL1xuY29tbWFuZHMubW9iaWxlU3RvcFNlcnZpY2UgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVTdG9wU2VydmljZSAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICB1c2VyLFxuICB9ID0gb3B0cztcbiAgY29uc3QgY21kID0gW1xuICAgICdhbScsXG4gICAgKGF3YWl0IHRoaXMuYWRiLmdldEFwaUxldmVsKCkgPCBBUElfTEVWRUxfQU5EUk9JRF84KSA/ICdzdG9wc2VydmljZScgOiAnc3RvcC1zZXJ2aWNlJ1xuICBdO1xuICBpZiAoIV8uaXNOaWwodXNlcikpIHtcbiAgICBjbWQucHVzaCgnLS11c2VyJywgdXNlcik7XG4gIH1cbiAgY21kLnB1c2goLi4uKHBhcnNlSW50ZW50U3BlYyhvcHRzKSkpO1xuICByZXR1cm4gYXdhaXQgdGhpcy5hZGIuc2hlbGwoY21kKTtcbn07XG5cblxuZXhwb3J0IHsgY29tbWFuZHMgfTtcbmV4cG9ydCBkZWZhdWx0IGNvbW1hbmRzO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUVBLE1BQU1BLGlCQUFpQixHQUFHLElBQTFCO0FBQ0Es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
|
|
@@ -17,7 +17,7 @@ var _lodash = _interopRequireDefault(require("lodash"));
|
|
|
17
17
|
|
|
18
18
|
var _ws = _interopRequireDefault(require("ws"));
|
|
19
19
|
|
|
20
|
-
var
|
|
20
|
+
var _driver = require("appium/driver");
|
|
21
21
|
|
|
22
22
|
const GET_SERVER_LOGS_FEATURE = 'get_server_logs';
|
|
23
23
|
let commands = {},
|
|
@@ -26,7 +26,7 @@ let commands = {},
|
|
|
26
26
|
exports.helpers = helpers;
|
|
27
27
|
exports.commands = commands;
|
|
28
28
|
|
|
29
|
-
const WEBSOCKET_ENDPOINT = sessionId => `${
|
|
29
|
+
const WEBSOCKET_ENDPOINT = sessionId => `${_driver.DEFAULT_WS_PATHNAME_PREFIX}/session/${sessionId}/appium/device/logcat`;
|
|
30
30
|
|
|
31
31
|
function toLogRecord(timestamp, level, message) {
|
|
32
32
|
return {
|
|
@@ -131,7 +131,7 @@ commands.mobileStopLogsBroadcast = async function mobileStopLogsBroadcast() {
|
|
|
131
131
|
};
|
|
132
132
|
|
|
133
133
|
commands.getLogTypes = async function getLogTypes() {
|
|
134
|
-
const nativeLogTypes = await
|
|
134
|
+
const nativeLogTypes = await _driver.BaseDriver.prototype.getLogTypes.call(this);
|
|
135
135
|
|
|
136
136
|
if (this.isWebContext()) {
|
|
137
137
|
const webLogTypes = await this.chromedriver.jwproxy.command('/log/types', 'GET');
|
|
@@ -148,7 +148,7 @@ commands.getLog = async function getLog(logType) {
|
|
|
148
148
|
});
|
|
149
149
|
}
|
|
150
150
|
|
|
151
|
-
return await
|
|
151
|
+
return await _driver.BaseDriver.prototype.getLog.call(this, logType);
|
|
152
152
|
};
|
|
153
153
|
|
|
154
154
|
Object.assign(extensions, commands, helpers);
|
|
@@ -156,4 +156,4 @@ var _default = extensions;
|
|
|
156
156
|
exports.default = _default;require('source-map-support').install();
|
|
157
157
|
|
|
158
158
|
|
|
159
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2xvZy5qcyIsIm5hbWVzIjpbIkdFVF9TRVJWRVJfTE9HU19GRUFUVVJFIiwiY29tbWFuZHMiLCJoZWxwZXJzIiwiZXh0ZW5zaW9ucyIsIldFQlNPQ0tFVF9FTkRQT0lOVCIsInNlc3Npb25JZCIsIkRFRkFVTFRfV1NfUEFUSE5BTUVfUFJFRklYIiwidG9Mb2dSZWNvcmQiLCJ0aW1lc3RhbXAiLCJsZXZlbCIsIm1lc3NhZ2UiLCJzdXBwb3J0ZWRMb2dUeXBlcyIsImxvZ2NhdCIsImRlc2NyaXB0aW9uIiwiZ2V0dGVyIiwic2VsZiIsImFkYiIsImdldExvZ2NhdExvZ3MiLCJidWdyZXBvcnQiLCJvdXRwdXQiLCJEYXRlIiwibm93Iiwic3BsaXQiLCJvcyIsIkVPTCIsIm1hcCIsIngiLCJzZXJ2ZXIiLCJlbnN1cmVGZWF0dXJlRW5hYmxlZCIsImxvZyIsInVud3JhcCIsInJlY29yZCIsIl8iLCJpc0VtcHR5IiwicHJlZml4IiwibW9iaWxlU3RhcnRMb2dzQnJvYWRjYXN0IiwicGF0aG5hbWUiLCJnZXRXZWJTb2NrZXRIYW5kbGVycyIsImRlYnVnIiwiaW5mbyIsIndzcyIsIldlYlNvY2tldCIsIlNlcnZlciIsIm5vU2VydmVyIiwib24iLCJ3cyIsInJlcSIsInJlbW90ZUlwIiwiaGVhZGVycyIsImNvbm5lY3Rpb24iLCJyZW1vdGVBZGRyZXNzIiwiX2xvZ2NhdFdlYnNvY2tldExpc3RlbmVyIiwibG9nUmVjb3JkIiwicmVhZHlTdGF0ZSIsIk9QRU4iLCJzZW5kIiwic2V0TG9nY2F0TGlzdGVuZXIiLCJjb2RlIiwicmVhc29uIiwicmVtb3ZlTG9nY2F0TGlzdGVuZXIiLCJpZ24iLCJjbG9zZU1zZyIsInRvU3RyaW5nIiwiYWRkV2ViU29ja2V0SGFuZGxlciIsIm1vYmlsZVN0b3BMb2dzQnJvYWRjYXN0IiwicmVtb3ZlV2ViU29ja2V0SGFuZGxlciIsImdldExvZ1R5cGVzIiwibmF0aXZlTG9nVHlwZXMiLCJCYXNlRHJpdmVyIiwicHJvdG90eXBlIiwiY2FsbCIsImlzV2ViQ29udGV4dCIsIndlYkxvZ1R5cGVzIiwiY2hyb21lZHJpdmVyIiwiandwcm94eSIsImNvbW1hbmQiLCJnZXRMb2ciLCJsb2dUeXBlIiwia2V5cyIsImluY2x1ZGVzIiwidHlwZSIsIk9iamVjdCIsImFzc2lnbiJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9sb2cuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGxvZyBmcm9tICcuLi9sb2dnZXInO1xuaW1wb3J0IG9zIGZyb20gJ29zJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgV2ViU29ja2V0IGZyb20gJ3dzJztcbmltcG9ydCB7IERFRkFVTFRfV1NfUEFUSE5BTUVfUFJFRklYLCBCYXNlRHJpdmVyIH0gZnJvbSAnQGFwcGl1bS9iYXNlLWRyaXZlcic7XG5cbmNvbnN0IEdFVF9TRVJWRVJfTE9HU19GRUFUVVJFID0gJ2dldF9zZXJ2ZXJfbG9ncyc7XG5cbmxldCBjb21tYW5kcyA9IHt9LCBoZWxwZXJzID0ge30sIGV4dGVuc2lvbnMgPSB7fTtcblxuY29uc3QgV0VCU09DS0VUX0VORFBPSU5UID0gKHNlc3Npb25JZCkgPT4gYCR7REVGQVVMVF9XU19QQVRITkFNRV9QUkVGSVh9L3Nlc3Npb24vJHtzZXNzaW9uSWR9L2FwcGl1bS9kZXZpY2UvbG9nY2F0YDtcblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL1NlbGVuaXVtSFEvc2VsZW5pdW0vYmxvYi8wZDQyNTY3NmIzYzlkZjI2MWRkNjQxOTE3Zjg2N2Q0ZDVjZTc3NzRkL2phdmEvY2xpZW50L3NyYy9vcmcvb3BlbnFhL3NlbGVuaXVtL2xvZ2dpbmcvTG9nRW50cnkuamF2YVxuZnVuY3Rpb24gdG9Mb2dSZWNvcmQgKHRpbWVzdGFtcCwgbGV2ZWwsIG1lc3NhZ2UpIHtcbiAgcmV0dXJuIHtcbiAgICB0aW1lc3RhbXAsXG4gICAgbGV2ZWwsXG4gICAgbWVzc2FnZSxcbiAgfTtcbn1cblxuZXh0ZW5zaW9ucy5zdXBwb3J0ZWRMb2dUeXBlcyA9IHtcbiAgbG9nY2F0OiB7XG4gICAgZGVzY3JpcHRpb246ICdMb2dzIGZvciBBbmRyb2lkIGFwcGxpY2F0aW9ucyBvbiByZWFsIGRldmljZSBhbmQgZW11bGF0b3JzIHZpYSBBREInLFxuICAgIGdldHRlcjogYXN5bmMgKHNlbGYpID0+IGF3YWl0IHNlbGYuYWRiLmdldExvZ2NhdExvZ3MoKSxcbiAgfSxcbiAgYnVncmVwb3J0OiB7XG4gICAgZGVzY3JpcHRpb246IGAnYWRiIGJ1Z3JlcG9ydCcgb3V0cHV0IGZvciBhZHZhbmNlZCBpc3N1ZXMgZGlhZ25vc3RpY2AsXG4gICAgZ2V0dGVyOiBhc3luYyAoc2VsZikgPT4ge1xuICAgICAgY29uc3Qgb3V0cHV0ID0gYXdhaXQgc2VsZi5hZGIuYnVncmVwb3J0KCk7XG4gICAgICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xuICAgICAgcmV0dXJuIG91dHB1dC5zcGxpdChvcy5FT0wpXG4gICAgICAgIC5tYXAoKHgpID0+IHRvTG9nUmVjb3JkKHRpbWVzdGFtcCwgJ0FMTCcsIHgpKTtcbiAgICB9LFxuICB9LFxuICBzZXJ2ZXI6IHtcbiAgICBkZXNjcmlwdGlvbjogJ0FwcGl1bSBzZXJ2ZXIgbG9ncycsXG4gICAgZ2V0dGVyOiAoc2VsZikgPT4ge1xuICAgICAgc2VsZi5lbnN1cmVGZWF0dXJlRW5hYmxlZChHRVRfU0VSVkVSX0xPR1NfRkVBVFVSRSk7XG4gICAgICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xuICAgICAgcmV0dXJuIGxvZy51bndyYXAoKS5yZWNvcmRcbiAgICAgICAgLm1hcCgoeCkgPT4gdG9Mb2dSZWNvcmQodGltZXN0YW1wLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQUxMJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXy5pc0VtcHR5KHgucHJlZml4KSA/IHgubWVzc2FnZSA6IGBbJHt4LnByZWZpeH1dICR7eC5tZXNzYWdlfWApXG4gICAgICAgICk7XG4gICAgfSxcbiAgfSxcbn07XG5cbi8qKlxuICogU3RhcnRzIEFuZHJvaWQgbG9nY2F0IGJyb2FkY2FzdCB3ZWJzb2NrZXQgb24gdGhlIHNhbWUgaG9zdCBhbmQgcG9ydFxuICogd2hlcmUgQXBwaXVtIHNlcnZlciBpcyBydW5uaW5nIGF0IGAvd3Mvc2Vzc2lvbi86c2Vzc2lvbklkOi9hcHBpdW0vbG9nY2F0YCBlbmRwb2ludC4gVGhlIG1ldGhvZFxuICogd2lsbCByZXR1cm4gaW1tZWRpYXRlbHkgaWYgdGhlIHdlYiBzb2NrZXQgaXMgYWxyZWFkeSBsaXN0ZW5pbmcuXG4gKlxuICogRWFjaCBjb25uZWN0ZWQgd2Vic29ja2V0IGxpc3RlbmVyIHdpbGwgcmVjZWl2ZSBsb2djYXQgbG9nIGxpbmVzXG4gKiBhcyBzb29uIGFzIHRoZXkgYXJlIHZpc2libGUgdG8gQXBwaXVtLlxuICovXG5jb21tYW5kcy5tb2JpbGVTdGFydExvZ3NCcm9hZGNhc3QgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVTdGFydExvZ3NCcm9hZGNhc3QgKCkge1xuICBjb25zdCBwYXRobmFtZSA9IFdFQlNPQ0tFVF9FTkRQT0lOVCh0aGlzLnNlc3Npb25JZCk7XG4gIGlmICghXy5pc0VtcHR5KGF3YWl0IHRoaXMuc2VydmVyLmdldFdlYlNvY2tldEhhbmRsZXJzKHBhdGhuYW1lKSkpIHtcbiAgICBsb2cuZGVidWcoYFRoZSBsb2djYXQgYnJvYWRjYXN0aW5nIHdlYiBzb2NrZXQgc2VydmVyIGlzIGFscmVhZHkgbGlzdGVuaW5nIGF0ICR7cGF0aG5hbWV9YCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgbG9nLmluZm8oYEFzc2lnbmluZyBsb2djYXQgYnJvYWRjYXN0aW5nIHdlYiBzb2NrZXQgc2VydmVyIHRvICR7cGF0aG5hbWV9YCk7XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWJzb2NrZXRzL3dzL2Jsb2IvbWFzdGVyL2RvYy93cy5tZFxuICBjb25zdCB3c3MgPSBuZXcgV2ViU29ja2V0LlNlcnZlcih7XG4gICAgbm9TZXJ2ZXI6IHRydWUsXG4gIH0pO1xuICB3c3Mub24oJ2Nvbm5lY3Rpb24nLCAod3MsIHJlcSkgPT4ge1xuICAgIGlmIChyZXEpIHtcbiAgICAgIGNvbnN0IHJlbW90ZUlwID0gXy5pc0VtcHR5KHJlcS5oZWFkZXJzWyd4LWZvcndhcmRlZC1mb3InXSlcbiAgICAgICAgPyByZXEuY29ubmVjdGlvbj8ucmVtb3RlQWRkcmVzc1xuICAgICAgICA6IHJlcS5oZWFkZXJzWyd4LWZvcndhcmRlZC1mb3InXTtcbiAgICAgIGxvZy5kZWJ1ZyhgRXN0YWJsaXNoZWQgYSBuZXcgbG9nY2F0IGxpc3RlbmVyIHdlYiBzb2NrZXQgY29ubmVjdGlvbiBmcm9tICR7cmVtb3RlSXB9YCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxvZy5kZWJ1ZygnRXN0YWJsaXNoZWQgYSBuZXcgbG9nY2F0IGxpc3RlbmVyIHdlYiBzb2NrZXQgY29ubmVjdGlvbicpO1xuICAgIH1cblxuICAgIGlmIChfLmlzRW1wdHkodGhpcy5fbG9nY2F0V2Vic29ja2V0TGlzdGVuZXIpKSB7XG4gICAgICB0aGlzLl9sb2djYXRXZWJzb2NrZXRMaXN0ZW5lciA9IChsb2dSZWNvcmQpID0+IHtcbiAgICAgICAgaWYgKHdzPy5yZWFkeVN0YXRlID09PSBXZWJTb2NrZXQuT1BFTikge1xuICAgICAgICAgIHdzLnNlbmQobG9nUmVjb3JkLm1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgICB0aGlzLmFkYi5zZXRMb2djYXRMaXN0ZW5lcih0aGlzLl9sb2djYXRXZWJzb2NrZXRMaXN0ZW5lcik7XG5cbiAgICB3cy5vbignY2xvc2UnLCAoY29kZSwgcmVhc29uKSA9PiB7XG4gICAgICBpZiAoIV8uaXNFbXB0eSh0aGlzLl9sb2djYXRXZWJzb2NrZXRMaXN0ZW5lcikpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB0aGlzLmFkYi5yZW1vdmVMb2djYXRMaXN0ZW5lcih0aGlzLl9sb2djYXRXZWJzb2NrZXRMaXN0ZW5lcik7XG4gICAgICAgIH0gY2F0Y2ggKGlnbikge31cbiAgICAgICAgdGhpcy5fbG9nY2F0V2Vic29ja2V0TGlzdGVuZXIgPSBudWxsO1xuICAgICAgfVxuXG4gICAgICBsZXQgY2xvc2VNc2cgPSAnTG9nY2F0IGxpc3RlbmVyIHdlYiBzb2NrZXQgaXMgY2xvc2VkLic7XG4gICAgICBpZiAoIV8uaXNFbXB0eShjb2RlKSkge1xuICAgICAgICBjbG9zZU1zZyArPSBgIENvZGU6ICR7Y29kZX0uYDtcbiAgICAgIH1cbiAgICAgIGlmICghXy5pc0VtcHR5KHJlYXNvbikpIHtcbiAgICAgICAgY2xvc2VNc2cgKz0gYCBSZWFzb246ICR7cmVhc29uLnRvU3RyaW5nKCl9LmA7XG4gICAgICB9XG4gICAgICBsb2cuZGVidWcoY2xvc2VNc2cpO1xuICAgIH0pO1xuICB9KTtcbiAgYXdhaXQgdGhpcy5zZXJ2ZXIuYWRkV2ViU29ja2V0SGFuZGxlcihwYXRobmFtZSwgd3NzKTtcbn07XG5cbi8qKlxuICogU3RvcHMgdGhlIHByZXZpb3VzbHkgc3RhcnRlZCBsb2djYXQgYnJvYWRjYXN0aW5nIHdlc29ja2V0IHNlcnZlci5cbiAqIFRoaXMgbWV0aG9kIHdpbGwgcmV0dXJuIGltbWVkaWF0ZWx5IGlmIG5vIHNlcnZlciBpcyBydW5uaW5nLlxuICovXG5jb21tYW5kcy5tb2JpbGVTdG9wTG9nc0Jyb2FkY2FzdCA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVN0b3BMb2dzQnJvYWRjYXN0ICgpIHtcbiAgY29uc3QgcGF0aG5hbWUgPSBXRUJTT0NLRVRfRU5EUE9JTlQodGhpcy5zZXNzaW9uSWQpO1xuICBpZiAoXy5pc0VtcHR5KGF3YWl0IHRoaXMuc2VydmVyLmdldFdlYlNvY2tldEhhbmRsZXJzKHBhdGhuYW1lKSkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBsb2cuZGVidWcoJ1N0b3BwaW5nIHRoZSBsb2djYXQgYnJvYWRjYXN0aW5nIHdlYiBzb2NrZXQgc2VydmVyJyk7XG4gIGF3YWl0IHRoaXMuc2VydmVyLnJlbW92ZVdlYlNvY2tldEhhbmRsZXIocGF0aG5hbWUpO1xufTtcblxuY29tbWFuZHMuZ2V0TG9nVHlwZXMgPSBhc3luYyBmdW5jdGlvbiBnZXRMb2dUeXBlcyAoKSB7XG4gIGNvbnN0IG5hdGl2ZUxvZ1R5cGVzID0gYXdhaXQgQmFzZURyaXZlci5wcm90b3R5cGUuZ2V0TG9nVHlwZXMuY2FsbCh0aGlzKTtcbiAgaWYgKHRoaXMuaXNXZWJDb250ZXh0KCkpIHtcbiAgICBjb25zdCB3ZWJMb2dUeXBlcyA9IGF3YWl0IHRoaXMuY2hyb21lZHJpdmVyLmp3cHJveHkuY29tbWFuZCgnL2xvZy90eXBlcycsICdHRVQnKTtcbiAgICByZXR1cm4gWy4uLm5hdGl2ZUxvZ1R5cGVzLCAuLi53ZWJMb2dUeXBlc107XG4gIH1cbiAgcmV0dXJuIG5hdGl2ZUxvZ1R5cGVzO1xufTtcblxuY29tbWFuZHMuZ2V0TG9nID0gYXN5bmMgZnVuY3Rpb24gZ2V0TG9nIChsb2dUeXBlKSB7XG4gIGlmICh0aGlzLmlzV2ViQ29udGV4dCgpICYmICFfLmtleXModGhpcy5zdXBwb3J0ZWRMb2dUeXBlcykuaW5jbHVkZXMobG9nVHlwZSkpIHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5jaHJvbWVkcml2ZXIuandwcm94eS5jb21tYW5kKCcvbG9nJywgJ1BPU1QnLCB7dHlwZTogbG9nVHlwZX0pO1xuICB9XG4gIHJldHVybiBhd2FpdCBCYXNlRHJpdmVyLnByb3RvdHlwZS5nZXRMb2cuY2FsbCh0aGlzLCBsb2dUeXBlKTtcbn07XG5cbk9iamVjdC5hc3NpZ24oZXh0ZW5zaW9ucywgY29tbWFuZHMsIGhlbHBlcnMpO1xuZXhwb3J0IHsgY29tbWFuZHMsIGhlbHBlcnMgfTtcbmV4cG9ydCBkZWZhdWx0IGV4dGVuc2lvbnM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEsdUJBQXVCLEdBQUcsaUJBQWhDO0FBRUEsSUFBSUMsUUFBUSxHQUFHLEVBQWY7QUFBQSxJQUFtQkMsT0FBTyxH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
|
|
159
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2xvZy5qcyIsIm5hbWVzIjpbIkdFVF9TRVJWRVJfTE9HU19GRUFUVVJFIiwiY29tbWFuZHMiLCJoZWxwZXJzIiwiZXh0ZW5zaW9ucyIsIldFQlNPQ0tFVF9FTkRQT0lOVCIsInNlc3Npb25JZCIsIkRFRkFVTFRfV1NfUEFUSE5BTUVfUFJFRklYIiwidG9Mb2dSZWNvcmQiLCJ0aW1lc3RhbXAiLCJsZXZlbCIsIm1lc3NhZ2UiLCJzdXBwb3J0ZWRMb2dUeXBlcyIsImxvZ2NhdCIsImRlc2NyaXB0aW9uIiwiZ2V0dGVyIiwic2VsZiIsImFkYiIsImdldExvZ2NhdExvZ3MiLCJidWdyZXBvcnQiLCJvdXRwdXQiLCJEYXRlIiwibm93Iiwic3BsaXQiLCJvcyIsIkVPTCIsIm1hcCIsIngiLCJzZXJ2ZXIiLCJlbnN1cmVGZWF0dXJlRW5hYmxlZCIsImxvZyIsInVud3JhcCIsInJlY29yZCIsIl8iLCJpc0VtcHR5IiwicHJlZml4IiwibW9iaWxlU3RhcnRMb2dzQnJvYWRjYXN0IiwicGF0aG5hbWUiLCJnZXRXZWJTb2NrZXRIYW5kbGVycyIsImRlYnVnIiwiaW5mbyIsIndzcyIsIldlYlNvY2tldCIsIlNlcnZlciIsIm5vU2VydmVyIiwib24iLCJ3cyIsInJlcSIsInJlbW90ZUlwIiwiaGVhZGVycyIsImNvbm5lY3Rpb24iLCJyZW1vdGVBZGRyZXNzIiwiX2xvZ2NhdFdlYnNvY2tldExpc3RlbmVyIiwibG9nUmVjb3JkIiwicmVhZHlTdGF0ZSIsIk9QRU4iLCJzZW5kIiwic2V0TG9nY2F0TGlzdGVuZXIiLCJjb2RlIiwicmVhc29uIiwicmVtb3ZlTG9nY2F0TGlzdGVuZXIiLCJpZ24iLCJjbG9zZU1zZyIsInRvU3RyaW5nIiwiYWRkV2ViU29ja2V0SGFuZGxlciIsIm1vYmlsZVN0b3BMb2dzQnJvYWRjYXN0IiwicmVtb3ZlV2ViU29ja2V0SGFuZGxlciIsImdldExvZ1R5cGVzIiwibmF0aXZlTG9nVHlwZXMiLCJCYXNlRHJpdmVyIiwicHJvdG90eXBlIiwiY2FsbCIsImlzV2ViQ29udGV4dCIsIndlYkxvZ1R5cGVzIiwiY2hyb21lZHJpdmVyIiwiandwcm94eSIsImNvbW1hbmQiLCJnZXRMb2ciLCJsb2dUeXBlIiwia2V5cyIsImluY2x1ZGVzIiwidHlwZSIsIk9iamVjdCIsImFzc2lnbiJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9sb2cuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGxvZyBmcm9tICcuLi9sb2dnZXInO1xuaW1wb3J0IG9zIGZyb20gJ29zJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgV2ViU29ja2V0IGZyb20gJ3dzJztcbmltcG9ydCB7IERFRkFVTFRfV1NfUEFUSE5BTUVfUFJFRklYLCBCYXNlRHJpdmVyIH0gZnJvbSAnYXBwaXVtL2RyaXZlcic7XG5cbmNvbnN0IEdFVF9TRVJWRVJfTE9HU19GRUFUVVJFID0gJ2dldF9zZXJ2ZXJfbG9ncyc7XG5cbmxldCBjb21tYW5kcyA9IHt9LCBoZWxwZXJzID0ge30sIGV4dGVuc2lvbnMgPSB7fTtcblxuY29uc3QgV0VCU09DS0VUX0VORFBPSU5UID0gKHNlc3Npb25JZCkgPT4gYCR7REVGQVVMVF9XU19QQVRITkFNRV9QUkVGSVh9L3Nlc3Npb24vJHtzZXNzaW9uSWR9L2FwcGl1bS9kZXZpY2UvbG9nY2F0YDtcblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL1NlbGVuaXVtSFEvc2VsZW5pdW0vYmxvYi8wZDQyNTY3NmIzYzlkZjI2MWRkNjQxOTE3Zjg2N2Q0ZDVjZTc3NzRkL2phdmEvY2xpZW50L3NyYy9vcmcvb3BlbnFhL3NlbGVuaXVtL2xvZ2dpbmcvTG9nRW50cnkuamF2YVxuZnVuY3Rpb24gdG9Mb2dSZWNvcmQgKHRpbWVzdGFtcCwgbGV2ZWwsIG1lc3NhZ2UpIHtcbiAgcmV0dXJuIHtcbiAgICB0aW1lc3RhbXAsXG4gICAgbGV2ZWwsXG4gICAgbWVzc2FnZSxcbiAgfTtcbn1cblxuZXh0ZW5zaW9ucy5zdXBwb3J0ZWRMb2dUeXBlcyA9IHtcbiAgbG9nY2F0OiB7XG4gICAgZGVzY3JpcHRpb246ICdMb2dzIGZvciBBbmRyb2lkIGFwcGxpY2F0aW9ucyBvbiByZWFsIGRldmljZSBhbmQgZW11bGF0b3JzIHZpYSBBREInLFxuICAgIGdldHRlcjogYXN5bmMgKHNlbGYpID0+IGF3YWl0IHNlbGYuYWRiLmdldExvZ2NhdExvZ3MoKSxcbiAgfSxcbiAgYnVncmVwb3J0OiB7XG4gICAgZGVzY3JpcHRpb246IGAnYWRiIGJ1Z3JlcG9ydCcgb3V0cHV0IGZvciBhZHZhbmNlZCBpc3N1ZXMgZGlhZ25vc3RpY2AsXG4gICAgZ2V0dGVyOiBhc3luYyAoc2VsZikgPT4ge1xuICAgICAgY29uc3Qgb3V0cHV0ID0gYXdhaXQgc2VsZi5hZGIuYnVncmVwb3J0KCk7XG4gICAgICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xuICAgICAgcmV0dXJuIG91dHB1dC5zcGxpdChvcy5FT0wpXG4gICAgICAgIC5tYXAoKHgpID0+IHRvTG9nUmVjb3JkKHRpbWVzdGFtcCwgJ0FMTCcsIHgpKTtcbiAgICB9LFxuICB9LFxuICBzZXJ2ZXI6IHtcbiAgICBkZXNjcmlwdGlvbjogJ0FwcGl1bSBzZXJ2ZXIgbG9ncycsXG4gICAgZ2V0dGVyOiAoc2VsZikgPT4ge1xuICAgICAgc2VsZi5lbnN1cmVGZWF0dXJlRW5hYmxlZChHRVRfU0VSVkVSX0xPR1NfRkVBVFVSRSk7XG4gICAgICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xuICAgICAgcmV0dXJuIGxvZy51bndyYXAoKS5yZWNvcmRcbiAgICAgICAgLm1hcCgoeCkgPT4gdG9Mb2dSZWNvcmQodGltZXN0YW1wLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQUxMJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXy5pc0VtcHR5KHgucHJlZml4KSA/IHgubWVzc2FnZSA6IGBbJHt4LnByZWZpeH1dICR7eC5tZXNzYWdlfWApXG4gICAgICAgICk7XG4gICAgfSxcbiAgfSxcbn07XG5cbi8qKlxuICogU3RhcnRzIEFuZHJvaWQgbG9nY2F0IGJyb2FkY2FzdCB3ZWJzb2NrZXQgb24gdGhlIHNhbWUgaG9zdCBhbmQgcG9ydFxuICogd2hlcmUgQXBwaXVtIHNlcnZlciBpcyBydW5uaW5nIGF0IGAvd3Mvc2Vzc2lvbi86c2Vzc2lvbklkOi9hcHBpdW0vbG9nY2F0YCBlbmRwb2ludC4gVGhlIG1ldGhvZFxuICogd2lsbCByZXR1cm4gaW1tZWRpYXRlbHkgaWYgdGhlIHdlYiBzb2NrZXQgaXMgYWxyZWFkeSBsaXN0ZW5pbmcuXG4gKlxuICogRWFjaCBjb25uZWN0ZWQgd2Vic29ja2V0IGxpc3RlbmVyIHdpbGwgcmVjZWl2ZSBsb2djYXQgbG9nIGxpbmVzXG4gKiBhcyBzb29uIGFzIHRoZXkgYXJlIHZpc2libGUgdG8gQXBwaXVtLlxuICovXG5jb21tYW5kcy5tb2JpbGVTdGFydExvZ3NCcm9hZGNhc3QgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVTdGFydExvZ3NCcm9hZGNhc3QgKCkge1xuICBjb25zdCBwYXRobmFtZSA9IFdFQlNPQ0tFVF9FTkRQT0lOVCh0aGlzLnNlc3Npb25JZCk7XG4gIGlmICghXy5pc0VtcHR5KGF3YWl0IHRoaXMuc2VydmVyLmdldFdlYlNvY2tldEhhbmRsZXJzKHBhdGhuYW1lKSkpIHtcbiAgICBsb2cuZGVidWcoYFRoZSBsb2djYXQgYnJvYWRjYXN0aW5nIHdlYiBzb2NrZXQgc2VydmVyIGlzIGFscmVhZHkgbGlzdGVuaW5nIGF0ICR7cGF0aG5hbWV9YCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgbG9nLmluZm8oYEFzc2lnbmluZyBsb2djYXQgYnJvYWRjYXN0aW5nIHdlYiBzb2NrZXQgc2VydmVyIHRvICR7cGF0aG5hbWV9YCk7XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWJzb2NrZXRzL3dzL2Jsb2IvbWFzdGVyL2RvYy93cy5tZFxuICBjb25zdCB3c3MgPSBuZXcgV2ViU29ja2V0LlNlcnZlcih7XG4gICAgbm9TZXJ2ZXI6IHRydWUsXG4gIH0pO1xuICB3c3Mub24oJ2Nvbm5lY3Rpb24nLCAod3MsIHJlcSkgPT4ge1xuICAgIGlmIChyZXEpIHtcbiAgICAgIGNvbnN0IHJlbW90ZUlwID0gXy5pc0VtcHR5KHJlcS5oZWFkZXJzWyd4LWZvcndhcmRlZC1mb3InXSlcbiAgICAgICAgPyByZXEuY29ubmVjdGlvbj8ucmVtb3RlQWRkcmVzc1xuICAgICAgICA6IHJlcS5oZWFkZXJzWyd4LWZvcndhcmRlZC1mb3InXTtcbiAgICAgIGxvZy5kZWJ1ZyhgRXN0YWJsaXNoZWQgYSBuZXcgbG9nY2F0IGxpc3RlbmVyIHdlYiBzb2NrZXQgY29ubmVjdGlvbiBmcm9tICR7cmVtb3RlSXB9YCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxvZy5kZWJ1ZygnRXN0YWJsaXNoZWQgYSBuZXcgbG9nY2F0IGxpc3RlbmVyIHdlYiBzb2NrZXQgY29ubmVjdGlvbicpO1xuICAgIH1cblxuICAgIGlmIChfLmlzRW1wdHkodGhpcy5fbG9nY2F0V2Vic29ja2V0TGlzdGVuZXIpKSB7XG4gICAgICB0aGlzLl9sb2djYXRXZWJzb2NrZXRMaXN0ZW5lciA9IChsb2dSZWNvcmQpID0+IHtcbiAgICAgICAgaWYgKHdzPy5yZWFkeVN0YXRlID09PSBXZWJTb2NrZXQuT1BFTikge1xuICAgICAgICAgIHdzLnNlbmQobG9nUmVjb3JkLm1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgICB0aGlzLmFkYi5zZXRMb2djYXRMaXN0ZW5lcih0aGlzLl9sb2djYXRXZWJzb2NrZXRMaXN0ZW5lcik7XG5cbiAgICB3cy5vbignY2xvc2UnLCAoY29kZSwgcmVhc29uKSA9PiB7XG4gICAgICBpZiAoIV8uaXNFbXB0eSh0aGlzLl9sb2djYXRXZWJzb2NrZXRMaXN0ZW5lcikpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB0aGlzLmFkYi5yZW1vdmVMb2djYXRMaXN0ZW5lcih0aGlzLl9sb2djYXRXZWJzb2NrZXRMaXN0ZW5lcik7XG4gICAgICAgIH0gY2F0Y2ggKGlnbikge31cbiAgICAgICAgdGhpcy5fbG9nY2F0V2Vic29ja2V0TGlzdGVuZXIgPSBudWxsO1xuICAgICAgfVxuXG4gICAgICBsZXQgY2xvc2VNc2cgPSAnTG9nY2F0IGxpc3RlbmVyIHdlYiBzb2NrZXQgaXMgY2xvc2VkLic7XG4gICAgICBpZiAoIV8uaXNFbXB0eShjb2RlKSkge1xuICAgICAgICBjbG9zZU1zZyArPSBgIENvZGU6ICR7Y29kZX0uYDtcbiAgICAgIH1cbiAgICAgIGlmICghXy5pc0VtcHR5KHJlYXNvbikpIHtcbiAgICAgICAgY2xvc2VNc2cgKz0gYCBSZWFzb246ICR7cmVhc29uLnRvU3RyaW5nKCl9LmA7XG4gICAgICB9XG4gICAgICBsb2cuZGVidWcoY2xvc2VNc2cpO1xuICAgIH0pO1xuICB9KTtcbiAgYXdhaXQgdGhpcy5zZXJ2ZXIuYWRkV2ViU29ja2V0SGFuZGxlcihwYXRobmFtZSwgd3NzKTtcbn07XG5cbi8qKlxuICogU3RvcHMgdGhlIHByZXZpb3VzbHkgc3RhcnRlZCBsb2djYXQgYnJvYWRjYXN0aW5nIHdlc29ja2V0IHNlcnZlci5cbiAqIFRoaXMgbWV0aG9kIHdpbGwgcmV0dXJuIGltbWVkaWF0ZWx5IGlmIG5vIHNlcnZlciBpcyBydW5uaW5nLlxuICovXG5jb21tYW5kcy5tb2JpbGVTdG9wTG9nc0Jyb2FkY2FzdCA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVN0b3BMb2dzQnJvYWRjYXN0ICgpIHtcbiAgY29uc3QgcGF0aG5hbWUgPSBXRUJTT0NLRVRfRU5EUE9JTlQodGhpcy5zZXNzaW9uSWQpO1xuICBpZiAoXy5pc0VtcHR5KGF3YWl0IHRoaXMuc2VydmVyLmdldFdlYlNvY2tldEhhbmRsZXJzKHBhdGhuYW1lKSkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBsb2cuZGVidWcoJ1N0b3BwaW5nIHRoZSBsb2djYXQgYnJvYWRjYXN0aW5nIHdlYiBzb2NrZXQgc2VydmVyJyk7XG4gIGF3YWl0IHRoaXMuc2VydmVyLnJlbW92ZVdlYlNvY2tldEhhbmRsZXIocGF0aG5hbWUpO1xufTtcblxuY29tbWFuZHMuZ2V0TG9nVHlwZXMgPSBhc3luYyBmdW5jdGlvbiBnZXRMb2dUeXBlcyAoKSB7XG4gIGNvbnN0IG5hdGl2ZUxvZ1R5cGVzID0gYXdhaXQgQmFzZURyaXZlci5wcm90b3R5cGUuZ2V0TG9nVHlwZXMuY2FsbCh0aGlzKTtcbiAgaWYgKHRoaXMuaXNXZWJDb250ZXh0KCkpIHtcbiAgICBjb25zdCB3ZWJMb2dUeXBlcyA9IGF3YWl0IHRoaXMuY2hyb21lZHJpdmVyLmp3cHJveHkuY29tbWFuZCgnL2xvZy90eXBlcycsICdHRVQnKTtcbiAgICByZXR1cm4gWy4uLm5hdGl2ZUxvZ1R5cGVzLCAuLi53ZWJMb2dUeXBlc107XG4gIH1cbiAgcmV0dXJuIG5hdGl2ZUxvZ1R5cGVzO1xufTtcblxuY29tbWFuZHMuZ2V0TG9nID0gYXN5bmMgZnVuY3Rpb24gZ2V0TG9nIChsb2dUeXBlKSB7XG4gIGlmICh0aGlzLmlzV2ViQ29udGV4dCgpICYmICFfLmtleXModGhpcy5zdXBwb3J0ZWRMb2dUeXBlcykuaW5jbHVkZXMobG9nVHlwZSkpIHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5jaHJvbWVkcml2ZXIuandwcm94eS5jb21tYW5kKCcvbG9nJywgJ1BPU1QnLCB7dHlwZTogbG9nVHlwZX0pO1xuICB9XG4gIHJldHVybiBhd2FpdCBCYXNlRHJpdmVyLnByb3RvdHlwZS5nZXRMb2cuY2FsbCh0aGlzLCBsb2dUeXBlKTtcbn07XG5cbk9iamVjdC5hc3NpZ24oZXh0ZW5zaW9ucywgY29tbWFuZHMsIGhlbHBlcnMpO1xuZXhwb3J0IHsgY29tbWFuZHMsIGhlbHBlcnMgfTtcbmV4cG9ydCBkZWZhdWx0IGV4dGVuc2lvbnM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEsdUJBQXVCLEdBQUcsaUJBQWhDO0FBRUEsSUFBSUMsUUFBUSxHQUFHLEVBQWY7QUFBQSxJQUFtQkMsT0FBTyxHQUFHLEVB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
|