appium-adb 8.14.0 → 8.16.2
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 +5 -3
- package/build/lib/adb.js +7 -3
- package/build/lib/logcat.js +1 -1
- package/build/lib/tools/adb-commands.js +21 -31
- package/build/lib/tools/apks-utils.js +34 -31
- package/build/lib/tools/index.js +10 -4
- package/build/lib/tools/keyboard-commands.js +71 -0
- package/build/lib/tools/lockmgmt.js +224 -0
- package/build/lib/tools/settings-client-commands.js +2 -2
- package/build/lib/tools/system-calls.js +4 -4
- package/lib/adb.js +2 -0
- package/lib/tools/adb-commands.js +27 -66
- package/lib/tools/apks-utils.js +62 -45
- package/lib/tools/index.js +4 -0
- package/lib/tools/keyboard-commands.js +64 -0
- package/lib/tools/lockmgmt.js +248 -0
- package/lib/tools/settings-client-commands.js +4 -3
- package/lib/tools/system-calls.js +3 -3
- package/package.json +1 -1
package/build/index.js
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
|
|
4
|
-
|
|
5
3
|
Object.defineProperty(exports, "__esModule", {
|
|
6
4
|
value: true
|
|
7
5
|
});
|
|
@@ -11,6 +9,10 @@ require("source-map-support/register");
|
|
|
11
9
|
|
|
12
10
|
var adb = _interopRequireWildcard(require("./lib/adb"));
|
|
13
11
|
|
|
12
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
13
|
+
|
|
14
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
15
|
+
|
|
14
16
|
const {
|
|
15
17
|
ADB,
|
|
16
18
|
DEFAULT_ADB_PORT,
|
|
@@ -25,4 +27,4 @@ var _default = ADB;
|
|
|
25
27
|
exports.default = _default;require('source-map-support').install();
|
|
26
28
|
|
|
27
29
|
|
|
28
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
30
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LmpzIl0sIm5hbWVzIjpbIkFEQiIsIkRFRkFVTFRfQURCX1BPUlQiLCJnZXRBbmRyb2lkQmluYXJ5UGF0aCIsImdldFNka1Jvb3RGcm9tRW52IiwiYWRiIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFFQTs7Ozs7O0FBRUEsTUFBTTtBQUNKQSxFQUFBQSxHQURJO0FBRUpDLEVBQUFBLGdCQUZJO0FBR0pDLEVBQUFBLG9CQUhJO0FBSUpDLEVBQUFBO0FBSkksSUFLRkMsR0FMSjs7Ozs7ZUFPZUosRyIsInNvdXJjZXNDb250ZW50IjpbIi8vIHRyYW5zcGlsZTptYWluXG5cbmltcG9ydCAqIGFzIGFkYiBmcm9tICcuL2xpYi9hZGInO1xuXG5jb25zdCB7XG4gIEFEQixcbiAgREVGQVVMVF9BREJfUE9SVCxcbiAgZ2V0QW5kcm9pZEJpbmFyeVBhdGgsXG4gIGdldFNka1Jvb3RGcm9tRW52XG59ID0gYWRiO1xuXG5leHBvcnQgZGVmYXVsdCBBREI7XG5leHBvcnQgeyBBREIsIERFRkFVTFRfQURCX1BPUlQsIGdldEFuZHJvaWRCaW5hcnlQYXRoLCBnZXRTZGtSb290RnJvbUVudiB9O1xuIl0sImZpbGUiOiJpbmRleC5qcyIsInNvdXJjZVJvb3QiOiIuLiJ9
|
package/build/lib/adb.js
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
|
|
4
|
-
|
|
5
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
6
4
|
|
|
7
5
|
Object.defineProperty(exports, "__esModule", {
|
|
@@ -33,6 +31,10 @@ var _helpers = require("./helpers");
|
|
|
33
31
|
|
|
34
32
|
var _logger = _interopRequireDefault(require("./logger.js"));
|
|
35
33
|
|
|
34
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
35
|
+
|
|
36
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
37
|
+
|
|
36
38
|
const DEFAULT_ADB_PORT = 5037;
|
|
37
39
|
exports.DEFAULT_ADB_PORT = DEFAULT_ADB_PORT;
|
|
38
40
|
const DEFAULT_OPTS = {
|
|
@@ -57,6 +59,7 @@ const DEFAULT_OPTS = {
|
|
|
57
59
|
suppressKillServer: null,
|
|
58
60
|
jars: {},
|
|
59
61
|
adbPort: DEFAULT_ADB_PORT,
|
|
62
|
+
adbHost: null,
|
|
60
63
|
adbExecTimeout: _helpers.DEFAULT_ADB_EXEC_TIMEOUT,
|
|
61
64
|
remoteAppsCacheLimit: 10,
|
|
62
65
|
buildToolsVersion: null,
|
|
@@ -72,6 +75,7 @@ class ADB {
|
|
|
72
75
|
|
|
73
76
|
if (opts.remoteAdbHost) {
|
|
74
77
|
this.executable.defaultArgs.push('-H', opts.remoteAdbHost);
|
|
78
|
+
this.adbHost = opts.remoteAdbHost;
|
|
75
79
|
}
|
|
76
80
|
|
|
77
81
|
if (opts.remoteAdbPort) {
|
|
@@ -107,4 +111,4 @@ var _default = ADB;
|
|
|
107
111
|
exports.default = _default;require('source-map-support').install();
|
|
108
112
|
|
|
109
113
|
|
|
110
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
114
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9hZGIuanMiXSwibmFtZXMiOlsiREVGQVVMVF9BREJfUE9SVCIsIkRFRkFVTFRfT1BUUyIsInNka1Jvb3QiLCJ1ZGlkIiwiYXBwRGV2aWNlUmVhZHlUaW1lb3V0IiwidXNlS2V5c3RvcmUiLCJrZXlzdG9yZVBhdGgiLCJrZXlzdG9yZVBhc3N3b3JkIiwia2V5QWxpYXMiLCJrZXlQYXNzd29yZCIsImV4ZWN1dGFibGUiLCJwYXRoIiwiZGVmYXVsdEFyZ3MiLCJ0bXBEaXIiLCJvcyIsInRtcGRpciIsImN1ckRldmljZUlkIiwiZW11bGF0b3JQb3J0IiwibG9nY2F0IiwiYmluYXJpZXMiLCJpbnN0cnVtZW50UHJvYyIsInN1cHByZXNzS2lsbFNlcnZlciIsImphcnMiLCJhZGJQb3J0IiwiYWRiSG9zdCIsImFkYkV4ZWNUaW1lb3V0IiwiREVGQVVMVF9BREJfRVhFQ19USU1FT1VUIiwicmVtb3RlQXBwc0NhY2hlTGltaXQiLCJidWlsZFRvb2xzVmVyc2lvbiIsImFsbG93T2ZmbGluZURldmljZXMiLCJhbGxvd0RlbGF5QWRiIiwiQURCIiwiY29uc3RydWN0b3IiLCJvcHRzIiwiT2JqZWN0IiwiYXNzaWduIiwiXyIsImRlZmF1bHRzRGVlcCIsImNsb25lRGVlcCIsInJlbW90ZUFkYkhvc3QiLCJwdXNoIiwicmVtb3RlQWRiUG9ydCIsImNyZWF0ZUFEQiIsImFkYiIsImdldEFkYldpdGhDb3JyZWN0QWRiUGF0aCIsImFkYkV4ZWMiLCJlIiwibG9nIiwid2FybiIsInN0ZGVyciIsIm1lc3NhZ2UiLCJmbk5hbWUiLCJmbiIsInRvUGFpcnMiLCJtZXRob2RzIiwicHJvdG90eXBlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUdBOzs7Ozs7QUFFQSxNQUFNQSxnQkFBZ0IsR0FBRyxJQUF6Qjs7QUFDQSxNQUFNQyxZQUFZLEdBQUc7QUFDbkJDLEVBQUFBLE9BQU8sRUFBRSxxQ0FBdUIsSUFEYjtB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d0JDLEVBQXhCO0FBQ0Q7O2VBRWNyQixHIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBvcyBmcm9tICdvcyc7XG5pbXBvcnQgbWV0aG9kcywgeyBnZXRBbmRyb2lkQmluYXJ5UGF0aCB9IGZyb20gJy4vdG9vbHMvaW5kZXguanMnO1xuaW1wb3J0IHtcbiAgREVGQVVMVF9BREJfRVhFQ19USU1FT1VULCByZXF1aXJlU2RrUm9vdCwgZ2V0U2RrUm9vdEZyb21FbnZcbn0gZnJvbSAnLi9oZWxwZXJzJztcbmltcG9ydCBsb2cgZnJvbSAnLi9sb2dnZXIuanMnO1xuXG5jb25zdCBERUZBVUxUX0FEQl9QT1JUID0gNTAzNztcbmNvbnN0IERFRkFVTFRfT1BUUyA9IHtcbiAgc2RrUm9vdDogZ2V0U2RrUm9vdEZyb21FbnYoKSB8fCBudWxsLFxuICB1ZGlkOiBudWxsLFxuICBhcHBEZXZpY2VSZWFkeVRpbWVvdXQ6IG51bGwsXG4gIHVzZUtleXN0b3JlOiBudWxsLFxuICBrZXlzdG9yZVBhdGg6IG51bGwsXG4gIGtleXN0b3JlUGFzc3dvcmQ6IG51bGwsXG4gIGtleUFsaWFzOiBudWxsLFxuICBrZXlQYXNzd29yZDogbnVsbCxcbiAgZXhlY3V0YWJsZToge3BhdGg6ICdhZGInLCBkZWZhdWx0QXJnczogW119LFxuICB0bXBEaXI6IG9zLnRtcGRpcigpLFxuICBjdXJEZXZpY2VJZDogbnVsbCxcbiAgZW11bGF0b3JQb3J0OiBudWxsLFxuICBsb2djYXQ6IG51bGwsXG4gIGJpbmFyaWVzOiB7fSxcbiAgaW5zdHJ1bWVudFByb2M6IG51bGwsXG4gIHN1cHByZXNzS2lsbFNlcnZlcjogbnVsbCxcbiAgamFyczoge30sXG4gIGFkYlBvcnQ6IERFRkFVTFRfQURCX1BPUlQsXG4gIGFkYkhvc3Q6IG51bGwsXG4gIGFkYkV4ZWNUaW1lb3V0OiBERUZBVUxUX0FEQl9FWEVDX1RJTUVPVVQsXG4gIHJlbW90ZUFwcHNDYWNoZUxpbWl0OiAxMCxcbiAgYnVpbGRUb29sc1ZlcnNpb246IG51bGwsXG4gIGFsbG93T2ZmbGluZURldmljZXM6IGZhbHNlLFxuICBhbGxvd0RlbGF5QWRiOiB0cnVlLFxufTtcblxuY2xhc3MgQURCIHtcbiAgY29uc3RydWN0b3IgKG9wdHMgPSB7fSkge1xuICAgIE9iamVjdC5hc3NpZ24odGhpcywgb3B0cyk7XG4gICAgXy5kZWZhdWx0c0RlZXAodGhpcywgXy5jbG9uZURlZXAoREVGQVVMVF9PUFRTKSk7XG5cbiAgICBpZiAob3B0cy5yZW1vdGVBZGJIb3N0KSB7XG4gICAgICB0aGlzLmV4ZWN1dGFibGUuZGVmYXVsdEFyZ3MucHVzaCgnLUgnLCBvcHRzLnJlbW90ZUFkYkhvc3QpO1xuICAgICAgdGhpcy5hZGJIb3N0ID0gb3B0cy5yZW1vdGVBZGJIb3N0O1xuICAgIH1cbiAgICAvLyBUT0RPIGZpZ3VyZSBvdXQgd2h5IHdlIGhhdmUgdGhpcyBvcHRpb24gYXMgaXQgZG9lcyBub3QgYXBwZWFyIHRvIGJlXG4gICAgLy8gdXNlZCBhbnl3aGVyZS4gUHJvYmFibHkgZGVwcmVjYXRlIGluIGZhdm9yIG9mIHNpbXBsZSBvcHRzLmFkYlBvcnRcbiAgICBpZiAob3B0cy5yZW1vdGVBZGJQb3J0KSB7XG4gICAgICB0aGlzLmFkYlBvcnQgPSBvcHRzLnJlbW90ZUFkYlBvcnQ7XG4gICAgfVxuICAgIHRoaXMuZXhlY3V0YWJsZS5kZWZhdWx0QXJncy5wdXNoKCctUCcsIHRoaXMuYWRiUG9ydCk7XG4gIH1cbn1cblxuQURCLmNyZWF0ZUFEQiA9IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUFEQiAob3B0cykge1xuICBjb25zdCBhZGIgPSBuZXcgQURCKG9wdHMpO1xuICBhZGIuc2RrUm9vdCA9IGF3YWl0IHJlcXVpcmVTZGtSb290KGFkYi5zZGtSb290KTtcbiAgYXdhaXQgYWRiLmdldEFkYldpdGhDb3JyZWN0QWRiUGF0aCgpO1xuICB0cnkge1xuICAgIGF3YWl0IGFkYi5hZGJFeGVjKFsnc3RhcnQtc2VydmVyJ10pO1xuICB9IGNhdGNoIChlKSB7XG4gICAgbG9nLndhcm4oZS5zdGRlcnIgfHwgZS5tZXNzYWdlKTtcbiAgfVxuICByZXR1cm4gYWRiO1xufTtcblxuLy8gYWRkIGFsbCB0aGUgbWV0aG9kcyB0byB0aGUgQURCIHByb3RvdHlwZVxuZm9yIChjb25zdCBbZm5OYW1lLCBmbl0gb2YgXy50b1BhaXJzKG1ldGhvZHMpKSB7XG4gIEFEQi5wcm90b3R5cGVbZm5OYW1lXSA9IGZuO1xufVxuXG5leHBvcnQgZGVmYXVsdCBBREI7XG5leHBvcnQgeyBBREIsIERFRkFVTFRfQURCX1BPUlQsIGdldEFuZHJvaWRCaW5hcnlQYXRoLCBnZXRTZGtSb290RnJvbUVudiB9O1xuIl0sImZpbGUiOiJsaWIvYWRiLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uIn0=
|
package/build/lib/logcat.js
CHANGED
|
@@ -218,4 +218,4 @@ var _default = Logcat;
|
|
|
218
218
|
exports.default = _default;require('source-map-support').install();
|
|
219
219
|
|
|
220
220
|
|
|
221
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9sb2djYXQuanMiXSwibmFtZXMiOlsiRXZlbnRFbWl0dGVyIiwiZXZlbnRzIiwibG9nIiwibG9nZ2VyIiwiZ2V0TG9nZ2VyIiwiTUFYX0JVRkZFUl9TSVpFIiwiTE9HQ0FUX1BST0NfU1RBUlRVUF9USU1FT1VUIiwiU1VQUE9SVEVEX0ZPUk1BVFMiLCJTVVBQT1JURURfUFJJT1JJVElFUyIsIkRFRkFVTFRfUFJJT1JJVFkiLCJERUZBVUxUX1RBRyIsIkRFRkFVTFRfRk9STUFUIiwicmVxdWlyZUZvcm1hdCIsImZvcm1hdCIsImluY2x1ZGVzIiwiaW5mbyIsInJlcXVpcmVTcGVjIiwic3BlYyIsInRhZyIsInByaW9yaXR5Iiwic3BsaXQiLCJyZXN1bHRUYWciLCJzb21lIiwicCIsIl8iLCJ0b0xvd2VyIiwiZm9ybWF0RmlsdGVyU3BlY3MiLCJmaWx0ZXJTcGVjcyIsImlzQXJyYXkiLCJmaWx0ZXIiLCJpc1N0cmluZyIsInN0YXJ0c1dpdGgiLCJtYXAiLCJMb2djYXQiLCJjb25zdHJ1Y3RvciIsIm9wdHMiLCJhZGIiLCJjbGVhckxvZ3MiLCJjbGVhckRldmljZUxvZ3NPblN0YXJ0IiwiZGVidWciLCJkZWJ1Z1RyYWNlIiwibWF4QnVmZmVyU2l6ZSIsImxvZ3MiLCJsb2dJZHhTaW5jZUxhc3RSZXF1ZXN0Iiwic3RhcnRDYXB0dXJlIiwic3RhcnRlZCIsIkIiLCJfcmVzb2x2ZSIsIl9yZWplY3QiLCJyZXNvbHZlIiwiYXJncyIsInJlamVjdCIsImNsZWFyIiwiY21kIiwiZGVmYXVsdEFyZ3MiLCJ1dGlsIiwicXVvdGUiLCJwYXRoIiwicHJvYyIsIlN1YlByb2Nlc3MiLCJvbiIsImNvZGUiLCJzaWduYWwiLCJlcnJvciIsIndhcm4iLCJsaW5lcyIsImxpbmUiLCJ0ZXN0IiwiRXJyb3IiLCJvdXRwdXRIYW5kbGVyIiwidHJpbSIsInN0YXJ0Iiwic2V0VGltZW91dCIsIm91dHB1dCIsInByZWZpeCIsImxlbmd0aCIsInNoaWZ0Iiwib3V0cHV0T2JqIiwidGltZXN0YW1wIiwiRGF0ZSIsIm5vdyIsImxldmVsIiwibWVzc2FnZSIsInB1c2giLCJlbWl0IiwiaXNUcmFjZSIsInN0b3BDYXB0dXJlIiwiaXNSdW5uaW5nIiwicmVtb3ZlQWxsTGlzdGVuZXJzIiwic3RvcCIsImdldExvZ3MiLCJyZXN1bHQiLCJzbGljZSIsImdldEFsbExvZ3MiLCJlcnIiLCJzdGRlcnIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBREEsTUFBTTtBQUFFQSxFQUFBQTtBQUFGLElBQW1CQyxlQUF6Qjs7QUFHQSxNQUFNQyxHQUFHLEdBQUdDLHNCQUFPQyxTQUFQLENBQWlCLFFBQWpCLENBQVo7O0FBQ0EsTUFBTUMsZUFBZSxHQUFHLEtBQXhCO0FBQ0EsTUFBTUMsMkJBQTJCLEdBQUcsS0FBcEM7QUFDQSxNQUFNQyxpQkFBaUIsR0FBRyxDQUFDLE9BQUQsRUFBVSxTQUFWLEVBQXFCLEtBQXJCLEVBQTRCLFFBQTVCLEVBQXNDLEtBQXRDLEVBQTZDLE1BQTdDLEVBQXFELFlBQXJELEVBQW1FLE1BQW5FLENBQTFCO0FBQ0EsTUFBTUMsb0JBQW9CLEdBQUcsQ0FBQyxHQUFELEVBQU0sR0FBTixFQUFXLEdBQVgsRUFBZ0IsR0FBaEIsRUFBcUIsR0FBckIsRUFBMEIsR0FBMUIsRUFBK0IsR0FBL0IsQ0FBN0I7QUFDQSxNQUFNQyxnQkFBZ0IsR0FBRyxHQUF6QjtBQUNBLE1BQU1DLFdBQVcsR0FBRyxHQUFwQjtBQUNBLE1BQU1DLGNBQWMsR0FBRyxZQUF2Qjs7QUFFQSxTQUFTQyxhQUFULENBQXdCQyxNQUF4QixFQUFnQztBQUM5QixNQUFJLENBQUNOLGlCQUFpQixDQUFDTyxRQUFsQixDQUEyQkQsTUFBM0IsQ0FBTCxFQUF5QztBQUN2Q1gsSUFBQUEsR0FBRyxDQUFDYSxJQUFKLENBQVUscUJBQW9CRixNQUFPLHVDQUFzQ04saUJBQWtCLEVBQTdGO0FBQ0FMLElBQUFBLEdBQUcsQ0FBQ2EsSUFBSixDQUFVLGtCQUFpQkosY0FBZSxHQUExQztBQUNBLFdBQU9BLGNBQVA7QUFDRDs7QUFDRCxTQUFPRSxNQUFQO0FBQ0Q7O0FBRUQsU0FBU0csV0FBVCxDQUFzQkMsSUFBdEIsRUFBNEI7QUFDMUIsUUFBTSxDQUFDQyxHQUFELEVBQU1DLFFBQU4sSUFBa0JGLElBQUksQ0FBQ0csS0FBTCxDQUFXLEdBQVgsQ0FBeEI7QUFDQSxNQUFJQyxTQUFTLEdBQUdILEdBQWhCOztBQUNBLE1BQUksQ0FBQ0csU0FBTCxFQUFnQjtBQUNkbkIsSUFBQUEsR0FBRyxDQUFDYSxJQUFKLENBQVUsMEJBQXlCRSxJQUFLLG1CQUF4QztBQUNBZixJQUFBQSxHQUFHLENBQUNhLElBQUosQ0FBVSxrQkFBaUJMLFdBQVksR0FBdkM7QUFDQVcsSUFBQUEsU0FBUyxHQUFHWCxXQUFaO0FBQ0Q7O0FBQ0QsTUFBSSxDQUFDUyxRQUFMLEVBQWU7QUFDYmpCLElBQUFBLEdBQUcsQ0FBQ2EsSUFBSixDQUFVLCtCQUE4QkUsSUFBSyxzQ0FBcUNSLGdCQUFpQixHQUFuRztBQUNBLFdBQVEsR0FBRVksU0FBVSxJQUFHWixnQkFBaUIsRUFBeEM7QUFDRDs7QUFDRCxNQUFJLENBQUNELG9CQUFvQixDQUFDYyxJQUFyQixDQUEyQkMsQ0FBRCxJQUFPQyxnQkFBRUMsT0FBRixDQUFVTixRQUFWLE1BQXdCSyxnQkFBRUMsT0FBRixDQUFVRixDQUFWLENBQXpELENBQUwsRUFBNkU7QUFDM0VyQixJQUFBQSxHQUFHLENBQUNhLElBQUosQ0FBVSwrQkFBOEJFLElBQUssdUNBQXNDVCxvQkFBcUIsRUFBeEc7QUFDQU4sSUFBQUEsR0FBRyxDQUFDYSxJQUFKLENBQVUsMEJBQXlCTixnQkFBaUIsR0FBcEQ7QUFDQSxXQUFRLEdBQUVZLFNBQVUsSUFBR1osZ0JBQWlCLEVBQXhDO0FBQ0Q7O0FBQ0QsU0FBT1EsSUFBUDtBQUNEOztBQUVELFNBQVNTLGlCQUFULENBQTRCQyxXQUE1QixFQUF5QztBQUN2QyxNQUFJLENBQUNILGdCQUFFSSxPQUFGLENBQVVELFdBQVYsQ0FBTCxFQUE2QjtBQUMzQkEsSUFBQUEsV0FBVyxHQUFHLENBQUNBLFdBQUQsQ0FBZDtBQUNEOztBQUNELFNBQU9BLFdBQVcsQ0FDZkUsTUFESSxDQUNJWixJQUFELElBQVVBLElBQUksSUFBSU8sZ0JBQUVNLFFBQUYsQ0FBV2IsSUFBWCxDQUFSLElBQTRCLENBQUNBLElBQUksQ0FBQ2MsVUFBTCxDQUFnQixHQUFoQixDQUQxQyxFQUVKQyxHQUZJLENBRUNmLElBQUQsSUFBVUEsSUFBSSxDQUFDSCxRQUFMLENBQWMsR0FBZCxJQUFxQkUsV0FBVyxDQUFDQyxJQUFELENBQWhDLEdBQXlDQSxJQUZuRCxDQUFQO0FBR0Q7O0FBR0QsTUFBTWdCLE1BQU4sU0FBcUJqQyxZQUFyQixDQUFrQztBQUNoQ2tDLEVBQUFBLFdBQVcsQ0FBRUMsSUFBSSxHQUFHLEVBQVQsRUFBYTtBQUN0QjtBQUNBLFNBQUtDLEdBQUwsR0FBV0QsSUFBSSxDQUFDQyxHQUFoQjtBQUNBLFNBQUtDLFNBQUwsR0FBaUJGLElBQUksQ0FBQ0csc0JBQUwsSUFBK0IsS0FBaEQ7QUFDQSxTQUFLQyxLQUFMLEdBQWFKLElBQUksQ0FBQ0ksS0FBbEI7QUFDQSxTQUFLQyxVQUFMLEdBQWtCTCxJQUFJLENBQUNLLFVBQXZCO0FBQ0EsU0FBS0MsYUFBTCxHQUFxQk4sSUFBSSxDQUFDTSxhQUFMLElBQXNCcEMsZUFBM0M7QUFDQSxTQUFLcUMsSUFBTCxHQUFZLEVBQVo7QUFDQSxTQUFLQyxzQkFBTCxHQUE4QixDQUE5QjtBQUNEOztBQUVELFFBQU1DLFlBQU4sQ0FBb0JULElBQUksR0FBRyxFQUEzQixFQUErQjtBQUM3QixRQUFJVSxPQUFPLEdBQUcsS0FBZDtBQUNBLFdBQU8sTUFBTSxJQUFJQyxpQkFBSixDQUFNLE9BQU9DLFFBQVAsRUFBaUJDLE9BQWpCLEtBQTZCO0FBQzlDLFlBQU1DLE9BQU8sR0FBRyxVQUFVLEdBQUdDLElBQWIsRUFBbUI7QUFDakNMLFFBQUFBLE9BQU8sR0FBRyxJQUFWOztBQUNBRSxRQUFBQSxRQUFRLENBQUMsR0FBR0csSUFBSixDQUFSO0FBQ0QsT0FIRDs7QUFJQSxZQUFNQyxNQUFNLEdBQUcsVUFBVSxHQUFHRCxJQUFiLEVBQW1CO0FBQ2hDTCxRQUFBQSxPQUFPLEdBQUcsSUFBVjs7QUFDQUcsUUFBQUEsT0FBTyxDQUFDLEdBQUdFLElBQUosQ0FBUDtBQUNELE9BSEQ7O0FBS0EsVUFBSSxLQUFLYixTQUFULEVBQW9CO0FBQ2xCLGNBQU0sS0FBS2UsS0FBTCxFQUFOO0FBQ0Q7O0FBRUQsWUFBTTtBQUNKdkMsUUFBQUEsTUFBTSxHQUFHRixjQURMO0FBRUpnQixRQUFBQSxXQUFXLEdBQUc7QUFGVixVQUdGUSxJQUhKO0FBSUEsWUFBTWtCLEdBQUcsR0FBRyxDQUNWLEdBQUcsS0FBS2pCLEdBQUwsQ0FBU2tCLFdBREYsRUFFVixRQUZVLEVBR1YsSUFIVSxFQUdKMUMsYUFBYSxDQUFDQyxNQUFELENBSFQsRUFJVixHQUFHYSxpQkFBaUIsQ0FBQ0MsV0FBRCxDQUpWLENBQVo7QUFNQXpCLE1BQUFBLEdBQUcsQ0FBQ3FDLEtBQUosQ0FBVyx1Q0FBc0NnQixvQkFBS0MsS0FBTCxDQUFXLENBQUMsS0FBS3BCLEdBQUwsQ0FBU3FCLElBQVYsRUFBZ0IsR0FBR0osR0FBbkIsQ0FBWCxDQUFvQyxFQUFyRjtBQUNBLFdBQUtLLElBQUwsR0FBWSxJQUFJQyx3QkFBSixDQUFlLEtBQUt2QixHQUFMLENBQVNxQixJQUF4QixFQUE4QkosR0FBOUIsQ0FBWjtBQUNBLFdBQUtLLElBQUwsQ0FBVUUsRUFBVixDQUFhLE1BQWIsRUFBcUIsQ0FBQ0MsSUFBRCxFQUFPQyxNQUFQLEtBQWtCO0FBQ3JDNUQsUUFBQUEsR0FBRyxDQUFDNkQsS0FBSixDQUFXLCtCQUE4QkYsSUFBSyxZQUFXQyxNQUFPLEVBQWhFO0FBQ0EsYUFBS0osSUFBTCxHQUFZLElBQVo7O0FBQ0EsWUFBSSxDQUFDYixPQUFMLEVBQWM7QUFDWjNDLFVBQUFBLEdBQUcsQ0FBQzhELElBQUosQ0FBUyxnQ0FBVDtBQUNBZixVQUFBQSxPQUFPO0FBQ1I7QUFDRixPQVBEO0FBUUEsV0FBS1MsSUFBTCxDQUFVRSxFQUFWLENBQWEsY0FBYixFQUE4QkssS0FBRCxJQUFXO0FBQ3RDLGFBQUssSUFBSUMsSUFBVCxJQUFpQkQsS0FBakIsRUFBd0I7QUFDdEIsY0FBSSxhQUFhRSxJQUFiLENBQWtCRCxJQUFsQixDQUFKLEVBQTZCO0FBQzNCaEUsWUFBQUEsR0FBRyxDQUFDNkQsS0FBSixDQUFVLGdDQUFWO0FBQ0FaLFlBQUFBLE1BQU0sQ0FBQyxJQUFJaUIsS0FBSixDQUFXLDJDQUEwQ0YsSUFBSyxFQUExRCxDQUFELENBQU47QUFDRDs7QUFDRCxlQUFLRyxhQUFMLENBQW1CN0MsZ0JBQUU4QyxJQUFGLENBQU9KLElBQVAsQ0FBbkIsRUFBaUMsVUFBakM7QUFDRDs7QUFDRGpCLFFBQUFBLE9BQU87QUFDUixPQVREO0FBVUEsV0FBS1MsSUFBTCxDQUFVRSxFQUFWLENBQWEsY0FBYixFQUE4QkssS0FBRCxJQUFXO0FBQ3RDaEIsUUFBQUEsT0FBTzs7QUFDUCxhQUFLLElBQUlpQixJQUFULElBQWlCRCxLQUFqQixFQUF3QjtBQUN0QixlQUFLSSxhQUFMLENBQW1CN0MsZ0JBQUU4QyxJQUFGLENBQU9KLElBQVAsQ0FBbkI7QUFDRDtBQUNGLE9BTEQ7QUFNQSxZQUFNLEtBQUtSLElBQUwsQ0FBVWEsS0FBVixDQUFnQixDQUFoQixDQUFOO0FBRUFDLE1BQUFBLFVBQVUsQ0FBQ3ZCLE9BQUQsRUFBVTNDLDJCQUFWLENBQVY7QUFDRCxLQXJEWSxDQUFiO0FBc0REOztBQUVEK0QsRUFBQUEsYUFBYSxDQUFFSSxNQUFGLEVBQVVDLE1BQU0sR0FBRyxFQUFuQixFQUF1QjtBQUNsQyxRQUFJLENBQUNELE1BQUwsRUFBYTtBQUNYO0FBQ0Q7O0FBRUQsUUFBSSxLQUFLL0IsSUFBTCxDQUFVaUMsTUFBVixJQUFvQixLQUFLbEMsYUFBN0IsRUFBNEM7QUFDMUMsV0FBS0MsSUFBTCxDQUFVa0MsS0FBVjs7QUFDQSxVQUFJLEtBQUtqQyxzQkFBTCxHQUE4QixDQUFsQyxFQUFxQztBQUNuQyxVQUFFLEtBQUtBLHNCQUFQO0FBQ0Q7QUFDRjs7QUFDRCxVQUFNa0MsU0FBUyxHQUFHO0FBQ2hCQyxNQUFBQSxTQUFTLEVBQUVDLElBQUksQ0FBQ0MsR0FBTCxFQURLO0FBRWhCQyxNQUFBQSxLQUFLLEVBQUUsS0FGUztBQUdoQkMsTUFBQUEsT0FBTyxFQUFFVDtBQUhPLEtBQWxCO0FBS0EsU0FBSy9CLElBQUwsQ0FBVXlDLElBQVYsQ0FBZU4sU0FBZjtBQUNBLFNBQUtPLElBQUwsQ0FBVSxRQUFWLEVBQW9CUCxTQUFwQjtBQUNBLFVBQU1RLE9BQU8sR0FBRyxXQUFXbEIsSUFBWCxDQUFnQk0sTUFBaEIsQ0FBaEI7O0FBQ0EsUUFBSSxLQUFLbEMsS0FBTCxLQUFlLENBQUM4QyxPQUFELElBQVksS0FBSzdDLFVBQWhDLENBQUosRUFBaUQ7QUFDL0N0QyxNQUFBQSxHQUFHLENBQUNxQyxLQUFKLENBQVVtQyxNQUFNLEdBQUdELE1BQW5CO0FBQ0Q7QUFDRjs7QUFFRCxRQUFNYSxXQUFOLEdBQXFCO0FBQ25CcEYsSUFBQUEsR0FBRyxDQUFDcUMsS0FBSixDQUFVLHlCQUFWOztBQUNBLFFBQUksQ0FBQyxLQUFLbUIsSUFBTixJQUFjLENBQUMsS0FBS0EsSUFBTCxDQUFVNkIsU0FBN0IsRUFBd0M7QUFDdENyRixNQUFBQSxHQUFHLENBQUNxQyxLQUFKLENBQVUsd0JBQVY7QUFDQSxXQUFLbUIsSUFBTCxHQUFZLElBQVo7QUFDQTtBQUNEOztBQUNELFNBQUtBLElBQUwsQ0FBVThCLGtCQUFWLENBQTZCLE1BQTdCO0FBQ0EsVUFBTSxLQUFLOUIsSUFBTCxDQUFVK0IsSUFBVixFQUFOO0FBQ0EsU0FBSy9CLElBQUwsR0FBWSxJQUFaO0FBQ0Q7O0FBRURnQyxFQUFBQSxPQUFPLEdBQUk7QUFDVCxRQUFJLEtBQUsvQyxzQkFBTCxHQUE4QixLQUFLRCxJQUFMLENBQVVpQyxNQUE1QyxFQUFvRDtBQUNsRCxZQUFNZ0IsTUFBTSxHQUFHLEtBQUtqRCxJQUFMLENBQVVrRCxLQUFWLENBQWdCLEtBQUtqRCxzQkFBckIsQ0FBZjtBQUNBLFdBQUtBLHNCQUFMLEdBQThCLEtBQUtELElBQUwsQ0FBVWlDLE1BQXhDO0FBQ0EsYUFBT2dCLE1BQVA7QUFDRDs7QUFDRCxXQUFPLEVBQVA7QUFDRDs7QUFFREUsRUFBQUEsVUFBVSxHQUFJO0FBQ1osV0FBTyxLQUFLbkQsSUFBWjtBQUNEOztBQUVELFFBQU1VLEtBQU4sR0FBZTtBQUNibEQsSUFBQUEsR0FBRyxDQUFDcUMsS0FBSixDQUFVLGtDQUFWOztBQUNBLFFBQUk7QUFDRixZQUFNVyxJQUFJLEdBQUcsQ0FBQyxHQUFHLEtBQUtkLEdBQUwsQ0FBU2tCLFdBQWIsRUFBMEIsUUFBMUIsRUFBb0MsSUFBcEMsQ0FBYjtBQUNBLFlBQU0sd0JBQUssS0FBS2xCLEdBQUwsQ0FBU3FCLElBQWQsRUFBb0JQLElBQXBCLENBQU47QUFDRCxLQUhELENBR0UsT0FBTzRDLEdBQVAsRUFBWTtBQUNaNUYsTUFBQUEsR0FBRyxDQUFDOEQsSUFBSixDQUFVLGdDQUErQjhCLEdBQUcsQ0FBQ0MsTUFBSixJQUFjRCxHQUFHLENBQUNaLE9BQVEsRUFBbkU7QUFDRDtBQUNGOztBQS9IK0I7O2VBa0luQmpELE0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgbG9nZ2VyLCB1dGlsIH0gZnJvbSAnYXBwaXVtLXN1cHBvcnQnO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0IGV2ZW50cyBmcm9tICdldmVudHMnO1xuY29uc3QgeyBFdmVudEVtaXR0ZXIgfSA9IGV2ZW50cztcbmltcG9ydCB7IFN1YlByb2Nlc3MsIGV4ZWMgfSBmcm9tICd0ZWVuX3Byb2Nlc3MnO1xuXG5jb25zdCBsb2cgPSBsb2dnZXIuZ2V0TG9nZ2VyKCdMb2djYXQnKTtcbmNvbnN0IE1BWF9CVUZGRVJfU0laRSA9IDEwMDAwO1xuY29uc3QgTE9HQ0FUX1BST0NfU1RBUlRVUF9USU1FT1VUID0gMTAwMDA7XG5jb25zdCBTVVBQT1JURURfRk9STUFUUyA9IFsnYnJpZWYnLCAncHJvY2VzcycsICd0YWcnLCAndGhyZWFkJywgJ3JhdycsICd0aW1lJywgJ3RocmVhZHRpbWUnLCAnbG9uZyddO1xuY29uc3QgU1VQUE9SVEVEX1BSSU9SSVRJRVMgPSBbJ3YnLCAnZCcsICdpJywgJ3cnLCAnZScsICdmJywgJ3MnXTtcbmNvbnN0IERFRkFVTFRfUFJJT1JJVFkgPSAndic7XG5jb25zdCBERUZBVUxUX1RBRyA9ICcqJztcbmNvbnN0IERFRkFVTFRfRk9STUFUID0gJ3RocmVhZHRpbWUnO1xuXG5mdW5jdGlvbiByZXF1aXJlRm9ybWF0IChmb3JtYXQpIHtcbiAgaWYgKCFTVVBQT1JURURfRk9STUFUUy5pbmNsdWRlcyhmb3JtYXQpKSB7XG4gICAgbG9nLmluZm8oYFRoZSBmb3JtYXQgdmFsdWUgJyR7Zm9ybWF0fScgaXMgdW5rbm93bi4gU3VwcG9ydGVkIHZhbHVlcyBhcmU6ICR7U1VQUE9SVEVEX0ZPUk1BVFN9YCk7XG4gICAgbG9nLmluZm8oYERlZmF1bHRpbmcgdG8gJyR7REVGQVVMVF9GT1JNQVR9J2ApO1xuICAgIHJldHVybiBERUZBVUxUX0ZPUk1BVDtcbiAgfVxuICByZXR1cm4gZm9ybWF0O1xufVxuXG5mdW5jdGlvbiByZXF1aXJlU3BlYyAoc3BlYykge1xuICBjb25zdCBbdGFnLCBwcmlvcml0eV0gPSBzcGVjLnNwbGl0KCc6Jyk7XG4gIGxldCByZXN1bHRUYWcgPSB0YWc7XG4gIGlmICghcmVzdWx0VGFnKSB7XG4gICAgbG9nLmluZm8oYFRoZSB0YWcgdmFsdWUgaW4gc3BlYyAnJHtzcGVjfScgY2Fubm90IGJlIGVtcHR5YCk7XG4gICAgbG9nLmluZm8oYERlZmF1bHRpbmcgdG8gJyR7REVGQVVMVF9UQUd9J2ApO1xuICAgIHJlc3VsdFRhZyA9IERFRkFVTFRfVEFHO1xuICB9XG4gIGlmICghcHJpb3JpdHkpIHtcbiAgICBsb2cuaW5mbyhgVGhlIHByaW9yaXR5IHZhbHVlIGluIHNwZWMgJyR7c3BlY30nIGlzIGVtcHR5LiBEZWZhdWx0aW5nIHRvIFZlcmJvc2UgKCR7REVGQVVMVF9QUklPUklUWX0pYCk7XG4gICAgcmV0dXJuIGAke3Jlc3VsdFRhZ306JHtERUZBVUxUX1BSSU9SSVRZfWA7XG4gIH1cbiAgaWYgKCFTVVBQT1JURURfUFJJT1JJVElFUy5zb21lKChwKSA9PiBfLnRvTG93ZXIocHJpb3JpdHkpID09PSBfLnRvTG93ZXIocCkpKSB7XG4gICAgbG9nLmluZm8oYFRoZSBwcmlvcml0eSB2YWx1ZSBpbiBzcGVjICcke3NwZWN9JyBpcyB1bmtub3duLiBTdXBwb3J0ZWQgdmFsdWVzIGFyZTogJHtTVVBQT1JURURfUFJJT1JJVElFU31gKTtcbiAgICBsb2cuaW5mbyhgRGVmYXVsdGluZyB0byBWZXJib3NlICgke0RFRkFVTFRfUFJJT1JJVFl9KWApO1xuICAgIHJldHVybiBgJHtyZXN1bHRUYWd9OiR7REVGQVVMVF9QUklPUklUWX1gO1xuICB9XG4gIHJldHVybiBzcGVjO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRGaWx0ZXJTcGVjcyAoZmlsdGVyU3BlY3MpIHtcbiAgaWYgKCFfLmlzQXJyYXkoZmlsdGVyU3BlY3MpKSB7XG4gICAgZmlsdGVyU3BlY3MgPSBbZmlsdGVyU3BlY3NdO1xuICB9XG4gIHJldHVybiBmaWx0ZXJTcGVjc1xuICAgIC5maWx0ZXIoKHNwZWMpID0+IHNwZWMgJiYgXy5pc1N0cmluZyhzcGVjKSAmJiAhc3BlYy5zdGFydHNXaXRoKCctJykpXG4gICAgLm1hcCgoc3BlYykgPT4gc3BlYy5pbmNsdWRlcygnOicpID8gcmVxdWlyZVNwZWMoc3BlYykgOiBzcGVjKTtcbn1cblxuXG5jbGFzcyBMb2djYXQgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvciAob3B0cyA9IHt9KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFkYiA9IG9wdHMuYWRiO1xuICAgIHRoaXMuY2xlYXJMb2dzID0gb3B0cy5jbGVhckRldmljZUxvZ3NPblN0YXJ0IHx8IGZhbHNlO1xuICAgIHRoaXMuZGVidWcgPSBvcHRzLmRlYnVnO1xuICAgIHRoaXMuZGVidWdUcmFjZSA9IG9wdHMuZGVidWdUcmFjZTtcbiAgICB0aGlzLm1heEJ1ZmZlclNpemUgPSBvcHRzLm1heEJ1ZmZlclNpemUgfHwgTUFYX0JVRkZFUl9TSVpFO1xuICAgIHRoaXMubG9ncyA9IFtdO1xuICAgIHRoaXMubG9nSWR4U2luY2VMYXN0UmVxdWVzdCA9IDA7XG4gIH1cblxuICBhc3luYyBzdGFydENhcHR1cmUgKG9wdHMgPSB7fSkge1xuICAgIGxldCBzdGFydGVkID0gZmFsc2U7XG4gICAgcmV0dXJuIGF3YWl0IG5ldyBCKGFzeW5jIChfcmVzb2x2ZSwgX3JlamVjdCkgPT4geyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHByb21pc2UvcGFyYW0tbmFtZXNcbiAgICAgIGNvbnN0IHJlc29sdmUgPSBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICBzdGFydGVkID0gdHJ1ZTtcbiAgICAgICAgX3Jlc29sdmUoLi4uYXJncyk7XG4gICAgICB9O1xuICAgICAgY29uc3QgcmVqZWN0ID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgc3RhcnRlZCA9IHRydWU7XG4gICAgICAgIF9yZWplY3QoLi4uYXJncyk7XG4gICAgICB9O1xuXG4gICAgICBpZiAodGhpcy5jbGVhckxvZ3MpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5jbGVhcigpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7XG4gICAgICAgIGZvcm1hdCA9IERFRkFVTFRfRk9STUFULFxuICAgICAgICBmaWx0ZXJTcGVjcyA9IFtdLFxuICAgICAgfSA9IG9wdHM7XG4gICAgICBjb25zdCBjbWQgPSBbXG4gICAgICAgIC4uLnRoaXMuYWRiLmRlZmF1bHRBcmdzLFxuICAgICAgICAnbG9nY2F0JyxcbiAgICAgICAgJy12JywgcmVxdWlyZUZvcm1hdChmb3JtYXQpLFxuICAgICAgICAuLi5mb3JtYXRGaWx0ZXJTcGVjcyhmaWx0ZXJTcGVjcyksXG4gICAgICBdO1xuICAgICAgbG9nLmRlYnVnKGBTdGFydGluZyBsb2dzIGNhcHR1cmUgd2l0aCBjb21tYW5kOiAke3V0aWwucXVvdGUoW3RoaXMuYWRiLnBhdGgsIC4uLmNtZF0pfWApO1xuICAgICAgdGhpcy5wcm9jID0gbmV3IFN1YlByb2Nlc3ModGhpcy5hZGIucGF0aCwgY21kKTtcbiAgICAgIHRoaXMucHJvYy5vbignZXhpdCcsIChjb2RlLCBzaWduYWwpID0+IHtcbiAgICAgICAgbG9nLmVycm9yKGBMb2djYXQgdGVybWluYXRlZCB3aXRoIGNvZGUgJHtjb2RlfSwgc2lnbmFsICR7c2lnbmFsfWApO1xuICAgICAgICB0aGlzLnByb2MgPSBudWxsO1xuICAgICAgICBpZiAoIXN0YXJ0ZWQpIHtcbiAgICAgICAgICBsb2cud2FybignTG9nY2F0IG5vdCBzdGFydGVkLiBDb250aW51aW5nJyk7XG4gICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHRoaXMucHJvYy5vbignbGluZXMtc3RkZXJyJywgKGxpbmVzKSA9PiB7XG4gICAgICAgIGZvciAobGV0IGxpbmUgb2YgbGluZXMpIHtcbiAgICAgICAgICBpZiAoL2V4ZWN2cFxcKFxcKS8udGVzdChsaW5lKSkge1xuICAgICAgICAgICAgbG9nLmVycm9yKCdMb2djYXQgcHJvY2VzcyBmYWlsZWQgdG8gc3RhcnQnKTtcbiAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoYExvZ2NhdCBwcm9jZXNzIGZhaWxlZCB0byBzdGFydC4gc3RkZXJyOiAke2xpbmV9YCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLm91dHB1dEhhbmRsZXIoXy50cmltKGxpbmUpLCAnU1RERVJSOiAnKTtcbiAgICAgICAgfVxuICAgICAgICByZXNvbHZlKCk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMucHJvYy5vbignbGluZXMtc3Rkb3V0JywgKGxpbmVzKSA9PiB7XG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgZm9yIChsZXQgbGluZSBvZiBsaW5lcykge1xuICAgICAgICAgIHRoaXMub3V0cHV0SGFuZGxlcihfLnRyaW0obGluZSkpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGF3YWl0IHRoaXMucHJvYy5zdGFydCgwKTtcbiAgICAgIC8vIHJlc29sdmUgYWZ0ZXIgYSB0aW1lb3V0LCBldmVuIGlmIG5vIG91dHB1dCB3YXMgcmVjb3JkZWRcbiAgICAgIHNldFRpbWVvdXQocmVzb2x2ZSwgTE9HQ0FUX1BST0NfU1RBUlRVUF9USU1FT1VUKTtcbiAgICB9KTtcbiAgfVxuXG4gIG91dHB1dEhhbmRsZXIgKG91dHB1dCwgcHJlZml4ID0gJycpIHtcbiAgICBpZiAoIW91dHB1dCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmxvZ3MubGVuZ3RoID49IHRoaXMubWF4QnVmZmVyU2l6ZSkge1xuICAgICAgdGhpcy5sb2dzLnNoaWZ0KCk7XG4gICAgICBpZiAodGhpcy5sb2dJZHhTaW5jZUxhc3RSZXF1ZXN0ID4gMCkge1xuICAgICAgICAtLXRoaXMubG9nSWR4U2luY2VMYXN0UmVxdWVzdDtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3Qgb3V0cHV0T2JqID0ge1xuICAgICAgdGltZXN0YW1wOiBEYXRlLm5vdygpLFxuICAgICAgbGV2ZWw6ICdBTEwnLFxuICAgICAgbWVzc2FnZTogb3V0cHV0LFxuICAgIH07XG4gICAgdGhpcy5sb2dzLnB1c2gob3V0cHV0T2JqKTtcbiAgICB0aGlzLmVtaXQoJ291dHB1dCcsIG91dHB1dE9iaik7XG4gICAgY29uc3QgaXNUcmFjZSA9IC9XXFwvVHJhY2UvLnRlc3Qob3V0cHV0KTtcbiAgICBpZiAodGhpcy5kZWJ1ZyAmJiAoIWlzVHJhY2UgfHwgdGhpcy5kZWJ1Z1RyYWNlKSkge1xuICAgICAgbG9nLmRlYnVnKHByZWZpeCArIG91dHB1dCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgc3RvcENhcHR1cmUgKCkge1xuICAgIGxvZy5kZWJ1ZygnU3RvcHBpbmcgbG9nY2F0IGNhcHR1cmUnKTtcbiAgICBpZiAoIXRoaXMucHJvYyB8fCAhdGhpcy5wcm9jLmlzUnVubmluZykge1xuICAgICAgbG9nLmRlYnVnKCdMb2djYXQgYWxyZWFkeSBzdG9wcGVkJyk7XG4gICAgICB0aGlzLnByb2MgPSBudWxsO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnByb2MucmVtb3ZlQWxsTGlzdGVuZXJzKCdleGl0Jyk7XG4gICAgYXdhaXQgdGhpcy5wcm9jLnN0b3AoKTtcbiAgICB0aGlzLnByb2MgPSBudWxsO1xuICB9XG5cbiAgZ2V0TG9ncyAoKSB7XG4gICAgaWYgKHRoaXMubG9nSWR4U2luY2VMYXN0UmVxdWVzdCA8IHRoaXMubG9ncy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMubG9ncy5zbGljZSh0aGlzLmxvZ0lkeFNpbmNlTGFzdFJlcXVlc3QpO1xuICAgICAgdGhpcy5sb2dJZHhTaW5jZUxhc3RSZXF1ZXN0ID0gdGhpcy5sb2dzLmxlbmd0aDtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGdldEFsbExvZ3MgKCkge1xuICAgIHJldHVybiB0aGlzLmxvZ3M7XG4gIH1cblxuICBhc3luYyBjbGVhciAoKSB7XG4gICAgbG9nLmRlYnVnKCdDbGVhcmluZyBsb2djYXQgbG9ncyBmcm9tIGRldmljZScpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBhcmdzID0gWy4uLnRoaXMuYWRiLmRlZmF1bHRBcmdzLCAnbG9nY2F0JywgJy1jJ107XG4gICAgICBhd2FpdCBleGVjKHRoaXMuYWRiLnBhdGgsIGFyZ3MpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgbG9nLndhcm4oYEZhaWxlZCB0byBjbGVhciBsb2djYXQgbG9nczogJHtlcnIuc3RkZXJyIHx8IGVyci5tZXNzYWdlfWApO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBMb2djYXQ7XG4iXSwiZmlsZSI6ImxpYi9sb2djYXQuanMiLCJzb3VyY2VSb290IjoiLi4vLi4ifQ==
|
|
221
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9sb2djYXQuanMiXSwibmFtZXMiOlsiRXZlbnRFbWl0dGVyIiwiZXZlbnRzIiwibG9nIiwibG9nZ2VyIiwiZ2V0TG9nZ2VyIiwiTUFYX0JVRkZFUl9TSVpFIiwiTE9HQ0FUX1BST0NfU1RBUlRVUF9USU1FT1VUIiwiU1VQUE9SVEVEX0ZPUk1BVFMiLCJTVVBQT1JURURfUFJJT1JJVElFUyIsIkRFRkFVTFRfUFJJT1JJVFkiLCJERUZBVUxUX1RBRyIsIkRFRkFVTFRfRk9STUFUIiwicmVxdWlyZUZvcm1hdCIsImZvcm1hdCIsImluY2x1ZGVzIiwiaW5mbyIsInJlcXVpcmVTcGVjIiwic3BlYyIsInRhZyIsInByaW9yaXR5Iiwic3BsaXQiLCJyZXN1bHRUYWciLCJzb21lIiwicCIsIl8iLCJ0b0xvd2VyIiwiZm9ybWF0RmlsdGVyU3BlY3MiLCJmaWx0ZXJTcGVjcyIsImlzQXJyYXkiLCJmaWx0ZXIiLCJpc1N0cmluZyIsInN0YXJ0c1dpdGgiLCJtYXAiLCJMb2djYXQiLCJjb25zdHJ1Y3RvciIsIm9wdHMiLCJhZGIiLCJjbGVhckxvZ3MiLCJjbGVhckRldmljZUxvZ3NPblN0YXJ0IiwiZGVidWciLCJkZWJ1Z1RyYWNlIiwibWF4QnVmZmVyU2l6ZSIsImxvZ3MiLCJsb2dJZHhTaW5jZUxhc3RSZXF1ZXN0Iiwic3RhcnRDYXB0dXJlIiwic3RhcnRlZCIsIkIiLCJfcmVzb2x2ZSIsIl9yZWplY3QiLCJyZXNvbHZlIiwiYXJncyIsInJlamVjdCIsImNsZWFyIiwiY21kIiwiZGVmYXVsdEFyZ3MiLCJ1dGlsIiwicXVvdGUiLCJwYXRoIiwicHJvYyIsIlN1YlByb2Nlc3MiLCJvbiIsImNvZGUiLCJzaWduYWwiLCJlcnJvciIsIndhcm4iLCJsaW5lcyIsImxpbmUiLCJ0ZXN0IiwiRXJyb3IiLCJvdXRwdXRIYW5kbGVyIiwidHJpbSIsInN0YXJ0Iiwic2V0VGltZW91dCIsIm91dHB1dCIsInByZWZpeCIsImxlbmd0aCIsInNoaWZ0Iiwib3V0cHV0T2JqIiwidGltZXN0YW1wIiwiRGF0ZSIsIm5vdyIsImxldmVsIiwibWVzc2FnZSIsInB1c2giLCJlbWl0IiwiaXNUcmFjZSIsInN0b3BDYXB0dXJlIiwiaXNSdW5uaW5nIiwicmVtb3ZlQWxsTGlzdGVuZXJzIiwic3RvcCIsImdldExvZ3MiLCJyZXN1bHQiLCJzbGljZSIsImdldEFsbExvZ3MiLCJlcnIiLCJzdGRlcnIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBREEsTUFBTTtBQUFFQSxFQUFBQTtBQUFGLElBQW1CQyxlQUF6Qjs7QUFHQSxNQUFNQyxHQUFHLEdBQUdDLHNCQUFPQyxTQUFQLENBQWlCLFFBQWpCLENBQVo7O0FBQ0EsTUFBTUMsZUFBZSxHQUFHLEtBQXhCO0FBQ0EsTUFBTUMsMkJBQTJCLEdBQUcsS0FBcEM7QUFDQSxNQUFNQyxpQkFBaUIsR0FBRyxDQUFDLE9BQUQsRUFBVSxTQUFWLEVBQXFCLEtBQXJCLEVBQTRCLFFBQTVCLEVBQXNDLEtBQXRDLEVBQTZDLE1BQTdDLEVBQXFELFlBQXJELEVBQW1FLE1BQW5FLENBQTFCO0FBQ0EsTUFBTUMsb0JBQW9CLEdBQUcsQ0FBQyxHQUFELEVBQU0sR0FBTixFQUFXLEdBQVgsRUFBZ0IsR0FBaEIsRUFBcUIsR0FBckIsRUFBMEIsR0FBMUIsRUFBK0IsR0FBL0IsQ0FBN0I7QUFDQSxNQUFNQyxnQkFBZ0IsR0FBRyxHQUF6QjtBQUNBLE1BQU1DLFdBQVcsR0FBRyxHQUFwQjtBQUNBLE1BQU1DLGNBQWMsR0FBRyxZQUF2Qjs7QUFFQSxTQUFTQyxhQUFULENBQXdCQyxNQUF4QixFQUFnQztBQUM5QixNQUFJLENBQUNOLGlCQUFpQixDQUFDTyxRQUFsQixDQUEyQkQsTUFBM0IsQ0FBTCxFQUF5QztBQUN2Q1gsSUFBQUEsR0FBRyxDQUFDYSxJQUFKLENBQVUscUJBQW9CRixNQUFPLHVDQUFzQ04saUJBQWtCLEVBQTdGO0FBQ0FMLElBQUFBLEdBQUcsQ0FBQ2EsSUFBSixDQUFVLGtCQUFpQkosY0FBZSxHQUExQztBQUNBLFdBQU9BLGNBQVA7QUFDRDs7QUFDRCxTQUFPRSxNQUFQO0FBQ0Q7O0FBRUQsU0FBU0csV0FBVCxDQUFzQkMsSUFBdEIsRUFBNEI7QUFDMUIsUUFBTSxDQUFDQyxHQUFELEVBQU1DLFFBQU4sSUFBa0JGLElBQUksQ0FBQ0csS0FBTCxDQUFXLEdBQVgsQ0FBeEI7QUFDQSxNQUFJQyxTQUFTLEdBQUdILEdBQWhCOztBQUNBLE1BQUksQ0FBQ0csU0FBTCxFQUFnQjtBQUNkbkIsSUFBQUEsR0FBRyxDQUFDYSxJQUFKLENBQVUsMEJBQXlCRSxJQUFLLG1CQUF4QztBQUNBZixJQUFBQSxHQUFHLENBQUNhLElBQUosQ0FBVSxrQkFBaUJMLFdBQVksR0FBdkM7QUFDQVcsSUFBQUEsU0FBUyxHQUFHWCxXQUFaO0FBQ0Q7O0FBQ0QsTUFBSSxDQUFDUyxRQUFMLEVBQWU7QUFDYmpCLElBQUFBLEdBQUcsQ0FBQ2EsSUFBSixDQUFVLCtCQUE4QkUsSUFBSyxzQ0FBcUNSLGdCQUFpQixHQUFuRztBQUNBLFdBQVEsR0FBRVksU0FBVSxJQUFHWixnQkFBaUIsRUFBeEM7QUFDRDs7QUFDRCxNQUFJLENBQUNELG9CQUFvQixDQUFDYyxJQUFyQixDQUEyQkMsQ0FBRCxJQUFPQyxnQkFBRUMsT0FBRixDQUFVTixRQUFWLE1BQXdCSyxnQkFBRUMsT0FBRixDQUFVRixDQUFWLENBQXpELENBQUwsRUFBNkU7QUFDM0VyQixJQUFBQSxHQUFHLENBQUNhLElBQUosQ0FBVSwrQkFBOEJFLElBQUssdUNBQXNDVCxvQkFBcUIsRUFBeEc7QUFDQU4sSUFBQUEsR0FBRyxDQUFDYSxJQUFKLENBQVUsMEJBQXlCTixnQkFBaUIsR0FBcEQ7QUFDQSxXQUFRLEdBQUVZLFNBQVUsSUFBR1osZ0JBQWlCLEVBQXhDO0FBQ0Q7O0FBQ0QsU0FBT1EsSUFBUDtBQUNEOztBQUVELFNBQVNTLGlCQUFULENBQTRCQyxXQUE1QixFQUF5QztBQUN2QyxNQUFJLENBQUNILGdCQUFFSSxPQUFGLENBQVVELFdBQVYsQ0FBTCxFQUE2QjtBQUMzQkEsSUFBQUEsV0FBVyxHQUFHLENBQUNBLFdBQUQsQ0FBZDtBQUNEOztBQUNELFNBQU9BLFdBQVcsQ0FDZkUsTUFESSxDQUNJWixJQUFELElBQVVBLElBQUksSUFBSU8sZ0JBQUVNLFFBQUYsQ0FBV2IsSUFBWCxDQUFSLElBQTRCLENBQUNBLElBQUksQ0FBQ2MsVUFBTCxDQUFnQixHQUFoQixDQUQxQyxFQUVKQyxHQUZJLENBRUNmLElBQUQsSUFBVUEsSUFBSSxDQUFDSCxRQUFMLENBQWMsR0FBZCxJQUFxQkUsV0FBVyxDQUFDQyxJQUFELENBQWhDLEdBQXlDQSxJQUZuRCxDQUFQO0FBR0Q7O0FBR0QsTUFBTWdCLE1BQU4sU0FBcUJqQyxZQUFyQixDQUFrQztBQUNoQ2tDLEVBQUFBLFdBQVcsQ0FBRUMsSUFBSSxHQUFHLEVBQVQsRUFBYTtBQUN0QjtBQUNBLFNBQUtDLEdBQUwsR0FBV0QsSUFBSSxDQUFDQyxHQUFoQjtBQUNBLFNBQUtDLFNBQUwsR0FBaUJGLElBQUksQ0FBQ0csc0JBQUwsSUFBK0IsS0FBaEQ7QUFDQSxTQUFLQyxLQUFMLEdBQWFKLElBQUksQ0FBQ0ksS0FBbEI7QUFDQSxTQUFLQyxVQUFMLEdBQWtCTCxJQUFJLENBQUNLLFVBQXZCO0FBQ0EsU0FBS0MsYUFBTCxHQUFxQk4sSUFBSSxDQUFDTSxhQUFMLElBQXNCcEMsZUFBM0M7QUFDQSxTQUFLcUMsSUFBTCxHQUFZLEVBQVo7QUFDQSxTQUFLQyxzQkFBTCxHQUE4QixDQUE5QjtBQUNEOztBQUVpQixRQUFaQyxZQUFZLENBQUVULElBQUksR0FBRyxFQUFULEVBQWE7QUFDN0IsUUFBSVUsT0FBTyxHQUFHLEtBQWQ7QUFDQSxXQUFPLE1BQU0sSUFBSUMsaUJBQUosQ0FBTSxPQUFPQyxRQUFQLEVBQWlCQyxPQUFqQixLQUE2QjtBQUM5QyxZQUFNQyxPQUFPLEdBQUcsVUFBVSxHQUFHQyxJQUFiLEVBQW1CO0FBQ2pDTCxRQUFBQSxPQUFPLEdBQUcsSUFBVjs7QUFDQUUsUUFBQUEsUUFBUSxDQUFDLEdBQUdHLElBQUosQ0FBUjtBQUNELE9BSEQ7O0FBSUEsWUFBTUMsTUFBTSxHQUFHLFVBQVUsR0FBR0QsSUFBYixFQUFtQjtBQUNoQ0wsUUFBQUEsT0FBTyxHQUFHLElBQVY7O0FBQ0FHLFFBQUFBLE9BQU8sQ0FBQyxHQUFHRSxJQUFKLENBQVA7QUFDRCxPQUhEOztBQUtBLFVBQUksS0FBS2IsU0FBVCxFQUFvQjtBQUNsQixjQUFNLEtBQUtlLEtBQUwsRUFBTjtBQUNEOztBQUVELFlBQU07QUFDSnZDLFFBQUFBLE1BQU0sR0FBR0YsY0FETDtBQUVKZ0IsUUFBQUEsV0FBVyxHQUFHO0FBRlYsVUFHRlEsSUFISjtBQUlBLFlBQU1rQixHQUFHLEdBQUcsQ0FDVixHQUFHLEtBQUtqQixHQUFMLENBQVNrQixXQURGLEVBRVYsUUFGVSxFQUdWLElBSFUsRUFHSjFDLGFBQWEsQ0FBQ0MsTUFBRCxDQUhULEVBSVYsR0FBR2EsaUJBQWlCLENBQUNDLFdBQUQsQ0FKVixDQUFaO0FBTUF6QixNQUFBQSxHQUFHLENBQUNxQyxLQUFKLENBQVcsdUNBQXNDZ0Isb0JBQUtDLEtBQUwsQ0FBVyxDQUFDLEtBQUtwQixHQUFMLENBQVNxQixJQUFWLEVBQWdCLEdBQUdKLEdBQW5CLENBQVgsQ0FBb0MsRUFBckY7QUFDQSxXQUFLSyxJQUFMLEdBQVksSUFBSUMsd0JBQUosQ0FBZSxLQUFLdkIsR0FBTCxDQUFTcUIsSUFBeEIsRUFBOEJKLEdBQTlCLENBQVo7QUFDQSxXQUFLSyxJQUFMLENBQVVFLEVBQVYsQ0FBYSxNQUFiLEVBQXFCLENBQUNDLElBQUQsRUFBT0MsTUFBUCxLQUFrQjtBQUNyQzVELFFBQUFBLEdBQUcsQ0FBQzZELEtBQUosQ0FBVywrQkFBOEJGLElBQUssWUFBV0MsTUFBTyxFQUFoRTtBQUNBLGFBQUtKLElBQUwsR0FBWSxJQUFaOztBQUNBLFlBQUksQ0FBQ2IsT0FBTCxFQUFjO0FBQ1ozQyxVQUFBQSxHQUFHLENBQUM4RCxJQUFKLENBQVMsZ0NBQVQ7QUFDQWYsVUFBQUEsT0FBTztBQUNSO0FBQ0YsT0FQRDtBQVFBLFdBQUtTLElBQUwsQ0FBVUUsRUFBVixDQUFhLGNBQWIsRUFBOEJLLEtBQUQsSUFBVztBQUN0QyxhQUFLLElBQUlDLElBQVQsSUFBaUJELEtBQWpCLEVBQXdCO0FBQ3RCLGNBQUksYUFBYUUsSUFBYixDQUFrQkQsSUFBbEIsQ0FBSixFQUE2QjtBQUMzQmhFLFlBQUFBLEdBQUcsQ0FBQzZELEtBQUosQ0FBVSxnQ0FBVjtBQUNBWixZQUFBQSxNQUFNLENBQUMsSUFBSWlCLEtBQUosQ0FBVywyQ0FBMENGLElBQUssRUFBMUQsQ0FBRCxDQUFOO0FBQ0Q7O0FBQ0QsZUFBS0csYUFBTCxDQUFtQjdDLGdCQUFFOEMsSUFBRixDQUFPSixJQUFQLENBQW5CLEVBQWlDLFVBQWpDO0FBQ0Q7O0FBQ0RqQixRQUFBQSxPQUFPO0FBQ1IsT0FURDtBQVVBLFdBQUtTLElBQUwsQ0FBVUUsRUFBVixDQUFhLGNBQWIsRUFBOEJLLEtBQUQsSUFBVztBQUN0Q2hCLFFBQUFBLE9BQU87O0FBQ1AsYUFBSyxJQUFJaUIsSUFBVCxJQUFpQkQsS0FBakIsRUFBd0I7QUFDdEIsZUFBS0ksYUFBTCxDQUFtQjdDLGdCQUFFOEMsSUFBRixDQUFPSixJQUFQLENBQW5CO0FBQ0Q7QUFDRixPQUxEO0FBTUEsWUFBTSxLQUFLUixJQUFMLENBQVVhLEtBQVYsQ0FBZ0IsQ0FBaEIsQ0FBTjtBQUVBQyxNQUFBQSxVQUFVLENBQUN2QixPQUFELEVBQVUzQywyQkFBVixDQUFWO0FBQ0QsS0FyRFksQ0FBYjtBQXNERDs7QUFFRCtELEVBQUFBLGFBQWEsQ0FBRUksTUFBRixFQUFVQyxNQUFNLEdBQUcsRUFBbkIsRUFBdUI7QUFDbEMsUUFBSSxDQUFDRCxNQUFMLEVBQWE7QUFDWDtBQUNEOztBQUVELFFBQUksS0FBSy9CLElBQUwsQ0FBVWlDLE1BQVYsSUFBb0IsS0FBS2xDLGFBQTdCLEVBQTRDO0FBQzFDLFdBQUtDLElBQUwsQ0FBVWtDLEtBQVY7O0FBQ0EsVUFBSSxLQUFLakMsc0JBQUwsR0FBOEIsQ0FBbEMsRUFBcUM7QUFDbkMsVUFBRSxLQUFLQSxzQkFBUDtBQUNEO0FBQ0Y7O0FBQ0QsVUFBTWtDLFNBQVMsR0FBRztBQUNoQkMsTUFBQUEsU0FBUyxFQUFFQyxJQUFJLENBQUNDLEdBQUwsRUFESztBQUVoQkMsTUFBQUEsS0FBSyxFQUFFLEtBRlM7QUFHaEJDLE1BQUFBLE9BQU8sRUFBRVQ7QUFITyxLQUFsQjtBQUtBLFNBQUsvQixJQUFMLENBQVV5QyxJQUFWLENBQWVOLFNBQWY7QUFDQSxTQUFLTyxJQUFMLENBQVUsUUFBVixFQUFvQlAsU0FBcEI7QUFDQSxVQUFNUSxPQUFPLEdBQUcsV0FBV2xCLElBQVgsQ0FBZ0JNLE1BQWhCLENBQWhCOztBQUNBLFFBQUksS0FBS2xDLEtBQUwsS0FBZSxDQUFDOEMsT0FBRCxJQUFZLEtBQUs3QyxVQUFoQyxDQUFKLEVBQWlEO0FBQy9DdEMsTUFBQUEsR0FBRyxDQUFDcUMsS0FBSixDQUFVbUMsTUFBTSxHQUFHRCxNQUFuQjtBQUNEO0FBQ0Y7O0FBRWdCLFFBQVhhLFdBQVcsR0FBSTtBQUNuQnBGLElBQUFBLEdBQUcsQ0FBQ3FDLEtBQUosQ0FBVSx5QkFBVjs7QUFDQSxRQUFJLENBQUMsS0FBS21CLElBQU4sSUFBYyxDQUFDLEtBQUtBLElBQUwsQ0FBVTZCLFNBQTdCLEVBQXdDO0FBQ3RDckYsTUFBQUEsR0FBRyxDQUFDcUMsS0FBSixDQUFVLHdCQUFWO0FBQ0EsV0FBS21CLElBQUwsR0FBWSxJQUFaO0FBQ0E7QUFDRDs7QUFDRCxTQUFLQSxJQUFMLENBQVU4QixrQkFBVixDQUE2QixNQUE3QjtBQUNBLFVBQU0sS0FBSzlCLElBQUwsQ0FBVStCLElBQVYsRUFBTjtBQUNBLFNBQUsvQixJQUFMLEdBQVksSUFBWjtBQUNEOztBQUVEZ0MsRUFBQUEsT0FBTyxHQUFJO0FBQ1QsUUFBSSxLQUFLL0Msc0JBQUwsR0FBOEIsS0FBS0QsSUFBTCxDQUFVaUMsTUFBNUMsRUFBb0Q7QUFDbEQsWUFBTWdCLE1BQU0sR0FBRyxLQUFLakQsSUFBTCxDQUFVa0QsS0FBVixDQUFnQixLQUFLakQsc0JBQXJCLENBQWY7QUFDQSxXQUFLQSxzQkFBTCxHQUE4QixLQUFLRCxJQUFMLENBQVVpQyxNQUF4QztBQUNBLGFBQU9nQixNQUFQO0FBQ0Q7O0FBQ0QsV0FBTyxFQUFQO0FBQ0Q7O0FBRURFLEVBQUFBLFVBQVUsR0FBSTtBQUNaLFdBQU8sS0FBS25ELElBQVo7QUFDRDs7QUFFVSxRQUFMVSxLQUFLLEdBQUk7QUFDYmxELElBQUFBLEdBQUcsQ0FBQ3FDLEtBQUosQ0FBVSxrQ0FBVjs7QUFDQSxRQUFJO0FBQ0YsWUFBTVcsSUFBSSxHQUFHLENBQUMsR0FBRyxLQUFLZCxHQUFMLENBQVNrQixXQUFiLEVBQTBCLFFBQTFCLEVBQW9DLElBQXBDLENBQWI7QUFDQSxZQUFNLHdCQUFLLEtBQUtsQixHQUFMLENBQVNxQixJQUFkLEVBQW9CUCxJQUFwQixDQUFOO0FBQ0QsS0FIRCxDQUdFLE9BQU80QyxHQUFQLEVBQVk7QUFDWjVGLE1BQUFBLEdBQUcsQ0FBQzhELElBQUosQ0FBVSxnQ0FBK0I4QixHQUFHLENBQUNDLE1BQUosSUFBY0QsR0FBRyxDQUFDWixPQUFRLEVBQW5FO0FBQ0Q7QUFDRjs7QUEvSCtCOztlQWtJbkJqRCxNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGxvZ2dlciwgdXRpbCB9IGZyb20gJ2FwcGl1bS1zdXBwb3J0JztcbmltcG9ydCBCIGZyb20gJ2JsdWViaXJkJztcbmltcG9ydCBldmVudHMgZnJvbSAnZXZlbnRzJztcbmNvbnN0IHsgRXZlbnRFbWl0dGVyIH0gPSBldmVudHM7XG5pbXBvcnQgeyBTdWJQcm9jZXNzLCBleGVjIH0gZnJvbSAndGVlbl9wcm9jZXNzJztcblxuY29uc3QgbG9nID0gbG9nZ2VyLmdldExvZ2dlcignTG9nY2F0Jyk7XG5jb25zdCBNQVhfQlVGRkVSX1NJWkUgPSAxMDAwMDtcbmNvbnN0IExPR0NBVF9QUk9DX1NUQVJUVVBfVElNRU9VVCA9IDEwMDAwO1xuY29uc3QgU1VQUE9SVEVEX0ZPUk1BVFMgPSBbJ2JyaWVmJywgJ3Byb2Nlc3MnLCAndGFnJywgJ3RocmVhZCcsICdyYXcnLCAndGltZScsICd0aHJlYWR0aW1lJywgJ2xvbmcnXTtcbmNvbnN0IFNVUFBPUlRFRF9QUklPUklUSUVTID0gWyd2JywgJ2QnLCAnaScsICd3JywgJ2UnLCAnZicsICdzJ107XG5jb25zdCBERUZBVUxUX1BSSU9SSVRZID0gJ3YnO1xuY29uc3QgREVGQVVMVF9UQUcgPSAnKic7XG5jb25zdCBERUZBVUxUX0ZPUk1BVCA9ICd0aHJlYWR0aW1lJztcblxuZnVuY3Rpb24gcmVxdWlyZUZvcm1hdCAoZm9ybWF0KSB7XG4gIGlmICghU1VQUE9SVEVEX0ZPUk1BVFMuaW5jbHVkZXMoZm9ybWF0KSkge1xuICAgIGxvZy5pbmZvKGBUaGUgZm9ybWF0IHZhbHVlICcke2Zvcm1hdH0nIGlzIHVua25vd24uIFN1cHBvcnRlZCB2YWx1ZXMgYXJlOiAke1NVUFBPUlRFRF9GT1JNQVRTfWApO1xuICAgIGxvZy5pbmZvKGBEZWZhdWx0aW5nIHRvICcke0RFRkFVTFRfRk9STUFUfSdgKTtcbiAgICByZXR1cm4gREVGQVVMVF9GT1JNQVQ7XG4gIH1cbiAgcmV0dXJuIGZvcm1hdDtcbn1cblxuZnVuY3Rpb24gcmVxdWlyZVNwZWMgKHNwZWMpIHtcbiAgY29uc3QgW3RhZywgcHJpb3JpdHldID0gc3BlYy5zcGxpdCgnOicpO1xuICBsZXQgcmVzdWx0VGFnID0gdGFnO1xuICBpZiAoIXJlc3VsdFRhZykge1xuICAgIGxvZy5pbmZvKGBUaGUgdGFnIHZhbHVlIGluIHNwZWMgJyR7c3BlY30nIGNhbm5vdCBiZSBlbXB0eWApO1xuICAgIGxvZy5pbmZvKGBEZWZhdWx0aW5nIHRvICcke0RFRkFVTFRfVEFHfSdgKTtcbiAgICByZXN1bHRUYWcgPSBERUZBVUxUX1RBRztcbiAgfVxuICBpZiAoIXByaW9yaXR5KSB7XG4gICAgbG9nLmluZm8oYFRoZSBwcmlvcml0eSB2YWx1ZSBpbiBzcGVjICcke3NwZWN9JyBpcyBlbXB0eS4gRGVmYXVsdGluZyB0byBWZXJib3NlICgke0RFRkFVTFRfUFJJT1JJVFl9KWApO1xuICAgIHJldHVybiBgJHtyZXN1bHRUYWd9OiR7REVGQVVMVF9QUklPUklUWX1gO1xuICB9XG4gIGlmICghU1VQUE9SVEVEX1BSSU9SSVRJRVMuc29tZSgocCkgPT4gXy50b0xvd2VyKHByaW9yaXR5KSA9PT0gXy50b0xvd2VyKHApKSkge1xuICAgIGxvZy5pbmZvKGBUaGUgcHJpb3JpdHkgdmFsdWUgaW4gc3BlYyAnJHtzcGVjfScgaXMgdW5rbm93bi4gU3VwcG9ydGVkIHZhbHVlcyBhcmU6ICR7U1VQUE9SVEVEX1BSSU9SSVRJRVN9YCk7XG4gICAgbG9nLmluZm8oYERlZmF1bHRpbmcgdG8gVmVyYm9zZSAoJHtERUZBVUxUX1BSSU9SSVRZfSlgKTtcbiAgICByZXR1cm4gYCR7cmVzdWx0VGFnfToke0RFRkFVTFRfUFJJT1JJVFl9YDtcbiAgfVxuICByZXR1cm4gc3BlYztcbn1cblxuZnVuY3Rpb24gZm9ybWF0RmlsdGVyU3BlY3MgKGZpbHRlclNwZWNzKSB7XG4gIGlmICghXy5pc0FycmF5KGZpbHRlclNwZWNzKSkge1xuICAgIGZpbHRlclNwZWNzID0gW2ZpbHRlclNwZWNzXTtcbiAgfVxuICByZXR1cm4gZmlsdGVyU3BlY3NcbiAgICAuZmlsdGVyKChzcGVjKSA9PiBzcGVjICYmIF8uaXNTdHJpbmcoc3BlYykgJiYgIXNwZWMuc3RhcnRzV2l0aCgnLScpKVxuICAgIC5tYXAoKHNwZWMpID0+IHNwZWMuaW5jbHVkZXMoJzonKSA/IHJlcXVpcmVTcGVjKHNwZWMpIDogc3BlYyk7XG59XG5cblxuY2xhc3MgTG9nY2F0IGV4dGVuZHMgRXZlbnRFbWl0dGVyIHtcbiAgY29uc3RydWN0b3IgKG9wdHMgPSB7fSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5hZGIgPSBvcHRzLmFkYjtcbiAgICB0aGlzLmNsZWFyTG9ncyA9IG9wdHMuY2xlYXJEZXZpY2VMb2dzT25TdGFydCB8fCBmYWxzZTtcbiAgICB0aGlzLmRlYnVnID0gb3B0cy5kZWJ1ZztcbiAgICB0aGlzLmRlYnVnVHJhY2UgPSBvcHRzLmRlYnVnVHJhY2U7XG4gICAgdGhpcy5tYXhCdWZmZXJTaXplID0gb3B0cy5tYXhCdWZmZXJTaXplIHx8IE1BWF9CVUZGRVJfU0laRTtcbiAgICB0aGlzLmxvZ3MgPSBbXTtcbiAgICB0aGlzLmxvZ0lkeFNpbmNlTGFzdFJlcXVlc3QgPSAwO1xuICB9XG5cbiAgYXN5bmMgc3RhcnRDYXB0dXJlIChvcHRzID0ge30pIHtcbiAgICBsZXQgc3RhcnRlZCA9IGZhbHNlO1xuICAgIHJldHVybiBhd2FpdCBuZXcgQihhc3luYyAoX3Jlc29sdmUsIF9yZWplY3QpID0+IHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBwcm9taXNlL3BhcmFtLW5hbWVzXG4gICAgICBjb25zdCByZXNvbHZlID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgc3RhcnRlZCA9IHRydWU7XG4gICAgICAgIF9yZXNvbHZlKC4uLmFyZ3MpO1xuICAgICAgfTtcbiAgICAgIGNvbnN0IHJlamVjdCA9IGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgICAgIHN0YXJ0ZWQgPSB0cnVlO1xuICAgICAgICBfcmVqZWN0KC4uLmFyZ3MpO1xuICAgICAgfTtcblxuICAgICAgaWYgKHRoaXMuY2xlYXJMb2dzKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuY2xlYXIoKTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qge1xuICAgICAgICBmb3JtYXQgPSBERUZBVUxUX0ZPUk1BVCxcbiAgICAgICAgZmlsdGVyU3BlY3MgPSBbXSxcbiAgICAgIH0gPSBvcHRzO1xuICAgICAgY29uc3QgY21kID0gW1xuICAgICAgICAuLi50aGlzLmFkYi5kZWZhdWx0QXJncyxcbiAgICAgICAgJ2xvZ2NhdCcsXG4gICAgICAgICctdicsIHJlcXVpcmVGb3JtYXQoZm9ybWF0KSxcbiAgICAgICAgLi4uZm9ybWF0RmlsdGVyU3BlY3MoZmlsdGVyU3BlY3MpLFxuICAgICAgXTtcbiAgICAgIGxvZy5kZWJ1ZyhgU3RhcnRpbmcgbG9ncyBjYXB0dXJlIHdpdGggY29tbWFuZDogJHt1dGlsLnF1b3RlKFt0aGlzLmFkYi5wYXRoLCAuLi5jbWRdKX1gKTtcbiAgICAgIHRoaXMucHJvYyA9IG5ldyBTdWJQcm9jZXNzKHRoaXMuYWRiLnBhdGgsIGNtZCk7XG4gICAgICB0aGlzLnByb2Mub24oJ2V4aXQnLCAoY29kZSwgc2lnbmFsKSA9PiB7XG4gICAgICAgIGxvZy5lcnJvcihgTG9nY2F0IHRlcm1pbmF0ZWQgd2l0aCBjb2RlICR7Y29kZX0sIHNpZ25hbCAke3NpZ25hbH1gKTtcbiAgICAgICAgdGhpcy5wcm9jID0gbnVsbDtcbiAgICAgICAgaWYgKCFzdGFydGVkKSB7XG4gICAgICAgICAgbG9nLndhcm4oJ0xvZ2NhdCBub3Qgc3RhcnRlZC4gQ29udGludWluZycpO1xuICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICB0aGlzLnByb2Mub24oJ2xpbmVzLXN0ZGVycicsIChsaW5lcykgPT4ge1xuICAgICAgICBmb3IgKGxldCBsaW5lIG9mIGxpbmVzKSB7XG4gICAgICAgICAgaWYgKC9leGVjdnBcXChcXCkvLnRlc3QobGluZSkpIHtcbiAgICAgICAgICAgIGxvZy5lcnJvcignTG9nY2F0IHByb2Nlc3MgZmFpbGVkIHRvIHN0YXJ0Jyk7XG4gICAgICAgICAgICByZWplY3QobmV3IEVycm9yKGBMb2djYXQgcHJvY2VzcyBmYWlsZWQgdG8gc3RhcnQuIHN0ZGVycjogJHtsaW5lfWApKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5vdXRwdXRIYW5kbGVyKF8udHJpbShsaW5lKSwgJ1NUREVSUjogJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLnByb2Mub24oJ2xpbmVzLXN0ZG91dCcsIChsaW5lcykgPT4ge1xuICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgIGZvciAobGV0IGxpbmUgb2YgbGluZXMpIHtcbiAgICAgICAgICB0aGlzLm91dHB1dEhhbmRsZXIoXy50cmltKGxpbmUpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBhd2FpdCB0aGlzLnByb2Muc3RhcnQoMCk7XG4gICAgICAvLyByZXNvbHZlIGFmdGVyIGEgdGltZW91dCwgZXZlbiBpZiBubyBvdXRwdXQgd2FzIHJlY29yZGVkXG4gICAgICBzZXRUaW1lb3V0KHJlc29sdmUsIExPR0NBVF9QUk9DX1NUQVJUVVBfVElNRU9VVCk7XG4gICAgfSk7XG4gIH1cblxuICBvdXRwdXRIYW5kbGVyIChvdXRwdXQsIHByZWZpeCA9ICcnKSB7XG4gICAgaWYgKCFvdXRwdXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5sb2dzLmxlbmd0aCA+PSB0aGlzLm1heEJ1ZmZlclNpemUpIHtcbiAgICAgIHRoaXMubG9ncy5zaGlmdCgpO1xuICAgICAgaWYgKHRoaXMubG9nSWR4U2luY2VMYXN0UmVxdWVzdCA+IDApIHtcbiAgICAgICAgLS10aGlzLmxvZ0lkeFNpbmNlTGFzdFJlcXVlc3Q7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IG91dHB1dE9iaiA9IHtcbiAgICAgIHRpbWVzdGFtcDogRGF0ZS5ub3coKSxcbiAgICAgIGxldmVsOiAnQUxMJyxcbiAgICAgIG1lc3NhZ2U6IG91dHB1dCxcbiAgICB9O1xuICAgIHRoaXMubG9ncy5wdXNoKG91dHB1dE9iaik7XG4gICAgdGhpcy5lbWl0KCdvdXRwdXQnLCBvdXRwdXRPYmopO1xuICAgIGNvbnN0IGlzVHJhY2UgPSAvV1xcL1RyYWNlLy50ZXN0KG91dHB1dCk7XG4gICAgaWYgKHRoaXMuZGVidWcgJiYgKCFpc1RyYWNlIHx8IHRoaXMuZGVidWdUcmFjZSkpIHtcbiAgICAgIGxvZy5kZWJ1ZyhwcmVmaXggKyBvdXRwdXQpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHN0b3BDYXB0dXJlICgpIHtcbiAgICBsb2cuZGVidWcoJ1N0b3BwaW5nIGxvZ2NhdCBjYXB0dXJlJyk7XG4gICAgaWYgKCF0aGlzLnByb2MgfHwgIXRoaXMucHJvYy5pc1J1bm5pbmcpIHtcbiAgICAgIGxvZy5kZWJ1ZygnTG9nY2F0IGFscmVhZHkgc3RvcHBlZCcpO1xuICAgICAgdGhpcy5wcm9jID0gbnVsbDtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5wcm9jLnJlbW92ZUFsbExpc3RlbmVycygnZXhpdCcpO1xuICAgIGF3YWl0IHRoaXMucHJvYy5zdG9wKCk7XG4gICAgdGhpcy5wcm9jID0gbnVsbDtcbiAgfVxuXG4gIGdldExvZ3MgKCkge1xuICAgIGlmICh0aGlzLmxvZ0lkeFNpbmNlTGFzdFJlcXVlc3QgPCB0aGlzLmxvZ3MubGVuZ3RoKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmxvZ3Muc2xpY2UodGhpcy5sb2dJZHhTaW5jZUxhc3RSZXF1ZXN0KTtcbiAgICAgIHRoaXMubG9nSWR4U2luY2VMYXN0UmVxdWVzdCA9IHRoaXMubG9ncy5sZW5ndGg7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICByZXR1cm4gW107XG4gIH1cblxuICBnZXRBbGxMb2dzICgpIHtcbiAgICByZXR1cm4gdGhpcy5sb2dzO1xuICB9XG5cbiAgYXN5bmMgY2xlYXIgKCkge1xuICAgIGxvZy5kZWJ1ZygnQ2xlYXJpbmcgbG9nY2F0IGxvZ3MgZnJvbSBkZXZpY2UnKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgYXJncyA9IFsuLi50aGlzLmFkYi5kZWZhdWx0QXJncywgJ2xvZ2NhdCcsICctYyddO1xuICAgICAgYXdhaXQgZXhlYyh0aGlzLmFkYi5wYXRoLCBhcmdzKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGxvZy53YXJuKGBGYWlsZWQgdG8gY2xlYXIgbG9nY2F0IGxvZ3M6ICR7ZXJyLnN0ZGVyciB8fCBlcnIubWVzc2FnZX1gKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTG9nY2F0O1xuIl0sImZpbGUiOiJsaWIvbG9nY2F0LmpzIiwic291cmNlUm9vdCI6Ii4uLy4uIn0=
|