verdaccio 5.4.0 → 5.6.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/CHANGELOG.md +56 -0
- package/CODE_OF_CONDUCT.md +10 -10
- package/CONTRIBUTING.md +28 -27
- package/SECURITY.md +8 -9
- package/build/api/debug/index.js +1 -1
- package/build/api/endpoint/api/dist-tags.js +4 -4
- package/build/api/endpoint/api/package.js +3 -3
- package/build/api/endpoint/api/ping.js +1 -1
- package/build/api/endpoint/api/publish.js +11 -11
- package/build/api/endpoint/api/star.js +5 -5
- package/build/api/endpoint/api/stars.js +1 -1
- package/build/api/endpoint/api/user.js +6 -6
- package/build/api/endpoint/api/v1/index.js +1 -1
- package/build/api/endpoint/api/v1/profile.js +4 -4
- package/build/api/endpoint/api/v1/search.js +4 -4
- package/build/api/endpoint/api/v1/token.js +8 -8
- package/build/api/endpoint/api/whoami.js +1 -1
- package/build/api/endpoint/index.js +9 -9
- package/build/api/index.js +13 -13
- package/build/api/middleware.js +6 -6
- package/build/api/rate-limiter.js +3 -3
- package/build/api/web/api.js +3 -3
- package/build/api/web/endpoint/index.js +10 -4
- package/build/api/web/endpoint/package.js +9 -9
- package/build/api/web/endpoint/search.js +3 -3
- package/build/api/web/endpoint/user.js +4 -4
- package/build/api/web/html/renderHTML.js +13 -9
- package/build/api/web/html/template.js +1 -1
- package/build/api/web/index.js +10 -10
- package/build/config/env.js +1 -1
- package/build/index.js +1 -1
- package/build/lib/auth-utils.js +5 -5
- package/build/lib/auth.js +7 -17
- package/build/lib/bootstrap.js +8 -8
- package/build/lib/cli/cli.js +3 -3
- package/build/lib/cli/commands/info.js +3 -3
- package/build/lib/cli/commands/init.js +3 -3
- package/build/lib/cli/commands/version.js +1 -1
- package/build/lib/cli/utils.js +3 -3
- package/build/lib/config-path.js +3 -3
- package/build/lib/config-utils.js +3 -3
- package/build/lib/config.js +8 -32
- package/build/lib/crypto-utils.js +3 -3
- package/build/lib/local-storage.js +7 -15
- package/build/lib/logger/formatter/index.js +1 -1
- package/build/lib/logger/formatter/prettifier.js +3 -3
- package/build/lib/logger/levels.js +1 -1
- package/build/lib/logger/logger.js +10 -6
- package/build/lib/logger/utils.js +1 -1
- package/build/lib/metadata-utils.js +3 -3
- package/build/lib/notify/index.js +3 -3
- package/build/lib/notify/notify-request.js +5 -5
- package/build/lib/plugin-loader.js +4 -4
- package/build/lib/search.js +2 -6
- package/build/lib/storage-utils.js +3 -3
- package/build/lib/storage.js +10 -22
- package/build/lib/up-storage.js +9 -43
- package/build/lib/uplink-util.js +1 -1
- package/build/lib/utils.js +22 -13
- package/build/utils/user.js +1 -1
- package/conf/README.md +3 -3
- package/eslintrc.js +92 -92
- package/index.js +1 -1
- package/package.json +64 -63
- package/prettier.config.js +15 -0
- package/tsconfig.json +3 -10
- package/yarn-plugins/plugin-postinstall.js +10 -10
|
@@ -7,29 +7,27 @@ exports.default = void 0;
|
|
|
7
7
|
|
|
8
8
|
var _assert = _interopRequireDefault(require("assert"));
|
|
9
9
|
|
|
10
|
-
var _url = _interopRequireDefault(require("url"));
|
|
11
|
-
|
|
12
10
|
var _debug = _interopRequireDefault(require("debug"));
|
|
13
11
|
|
|
14
12
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
15
13
|
|
|
14
|
+
var _url = _interopRequireDefault(require("url"));
|
|
15
|
+
|
|
16
16
|
var _localStorage = _interopRequireDefault(require("@verdaccio/local-storage"));
|
|
17
17
|
|
|
18
18
|
var _streams = require("@verdaccio/streams");
|
|
19
19
|
|
|
20
20
|
var _pluginLoader = _interopRequireDefault(require("../lib/plugin-loader"));
|
|
21
21
|
|
|
22
|
-
var _utils = require("./utils");
|
|
23
|
-
|
|
24
|
-
var _storageUtils = require("./storage-utils");
|
|
25
|
-
|
|
26
22
|
var _constants = require("./constants");
|
|
27
23
|
|
|
28
24
|
var _cryptoUtils = require("./crypto-utils");
|
|
29
25
|
|
|
30
|
-
|
|
26
|
+
var _storageUtils = require("./storage-utils");
|
|
27
|
+
|
|
28
|
+
var _utils = require("./utils");
|
|
31
29
|
|
|
32
|
-
function
|
|
30
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
33
31
|
|
|
34
32
|
const debug = (0, _debug.default)('verdaccio:local-storage');
|
|
35
33
|
/**
|
|
@@ -38,12 +36,6 @@ const debug = (0, _debug.default)('verdaccio:local-storage');
|
|
|
38
36
|
|
|
39
37
|
class LocalStorage {
|
|
40
38
|
constructor(config, logger) {
|
|
41
|
-
_defineProperty(this, "config", void 0);
|
|
42
|
-
|
|
43
|
-
_defineProperty(this, "storagePlugin", void 0);
|
|
44
|
-
|
|
45
|
-
_defineProperty(this, "logger", void 0);
|
|
46
|
-
|
|
47
39
|
this.logger = logger;
|
|
48
40
|
this.config = config;
|
|
49
41
|
this.storagePlugin = this._loadStorage(config, logger);
|
|
@@ -904,4 +896,4 @@ class LocalStorage {
|
|
|
904
896
|
|
|
905
897
|
var _default = LocalStorage;
|
|
906
898
|
exports.default = _default;
|
|
907
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvbG9jYWwtc3RvcmFnZS50cyJdLCJuYW1lcyI6WyJkZWJ1ZyIsIkxvY2FsU3RvcmFnZSIsImNvbnN0cnVjdG9yIiwiY29uZmlnIiwibG9nZ2VyIiwic3RvcmFnZVBsdWdpbiIsIl9sb2FkU3RvcmFnZSIsImFkZFBhY2thZ2UiLCJuYW1lIiwicGtnIiwiY2FsbGJhY2siLCJzdG9yYWdlIiwiX2dldExvY2FsU3RvcmFnZSIsIl8iLCJpc05pbCIsIkVycm9yQ29kZSIsImdldE5vdEZvdW5kIiwiY3JlYXRlUGFja2FnZSIsImVyciIsImlzTnVsbCIsImNvZGUiLCJTVE9SQUdFIiwiRklMRV9FWElTVF9FUlJPUiIsIkhUVFBfU1RBVFVTIiwiQ09ORkxJQ1QiLCJnZXRDb25mbGljdCIsImxhdGVzdCIsInZlcnNpb25zIiwicmVtb3ZlUGFja2FnZSIsInJlYWRQYWNrYWdlIiwiZGF0YSIsIk5PX1NVQ0hfRklMRV9FUlJPUiIsIk5PVF9GT1VORCIsInJlbW92ZSIsInJlbW92ZUZhaWxlZCIsImVycm9yIiwiZ2V0QmFkRGF0YSIsIm1lc3NhZ2UiLCJkZWxldGVQYWNrYWdlIiwiUEFDS0FHRV9GSUxFX05BTUUiLCJhdHRhY2htZW50cyIsIk9iamVjdCIsImtleXMiLCJfYXR0YWNobWVudHMiLCJfZGVsZXRlQXR0YWNobWVudHMiLCJ1cGRhdGVWZXJzaW9ucyIsInBhY2thZ2VJbmZvIiwiX3JlYWRDcmVhdGVQYWNrYWdlIiwicGFja2FnZUxvY2FsSnNvbiIsImNoYW5nZSIsInJlYWRtZSIsInZlcnNpb25JZCIsInZlcnNpb24iLCJjb250cmlidXRvcnMiLCJkaXN0IiwidGFyYmFsbCIsInVybE9iamVjdCIsIlVybE5vZGUiLCJwYXJzZSIsImZpbGVuYW1lIiwicGF0aG5hbWUiLCJyZXBsYWNlIiwiX2Rpc3RmaWxlcyIsImhhc2giLCJ1cmwiLCJzaGEiLCJzaGFzdW0iLCJ1cExpbmsiLCJTeW1ib2wiLCJmb3IiLCJfdXBkYXRlVXBsaW5rVG9SZW1vdGVQcm90b2NvbCIsInRhZyIsIkRJU1RfVEFHUyIsInVwIiwiX3VwbGlua3MiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJuZWVkX2NoYW5nZSIsImV0YWciLCJmZXRjaGVkIiwiaXNFcXVhbCIsInRpbWUiLCJfd3JpdGVQYWNrYWdlIiwiYWRkVmVyc2lvbiIsIm1ldGFkYXRhIiwiX3VwZGF0ZVBhY2thZ2UiLCJjYiIsImhhc1ZlcnNpb24iLCJpc1N0cmluZyIsImVycm9yTWVzc2FnZSIsImdldEJhZFJlcXVlc3QiLCJjdXJyZW50RGF0ZSIsIkRhdGUiLCJ0b0lTT1N0cmluZyIsImNyZWF0ZWQiLCJhZGQiLCJhZGRGYWlsZWQiLCJtZXJnZVRhZ3MiLCJwa2dOYW1lIiwidGFncyIsIl9nZXRWZXJzaW9uTm90Rm91bmQiLCJBUElfRVJST1IiLCJWRVJTSU9OX05PVF9FWElTVCIsIl9nZXRGaWxlTm90QXZhaWxhYmxlIiwiY2hhbmdlUGFja2FnZSIsImluY29taW5nUGtnIiwicmV2aXNpb24iLCJsb2NhbERhdGEiLCJpbmNvbWluZ1ZlcnNpb24iLCJpbmZvIiwiZmlsZSIsImluY29taW5nRGVwcmVjYXRlZCIsImRlcHJlY2F0ZWQiLCJtb2RpZmllZCIsIlVTRVJTIiwicmVtb3ZlVGFyYmFsbCIsImFkZFRhcmJhbGwiLCJsZW5ndGgiLCJzaGFPbmVIYXNoIiwidXBsb2FkU3RyZWFtIiwiVXBsb2FkVGFyYmFsbCIsIl90cmFuc2Zvcm0iLCJhYm9ydCIsImRvbmUiLCJhcmdzIiwidXBkYXRlIiwiYXBwbGllZERhdGEiLCJhcHBseSIsInByb2Nlc3MiLCJuZXh0VGljayIsImVtaXQiLCJnZXRGb3JiaWRkZW4iLCJ3cml0ZVN0cmVhbSIsIndyaXRlVGFyYmFsbCIsIm9uIiwiZ2V0UGFja2FnZU1ldGFkYXRhIiwiX2VyciIsIl9yZXMiLCJ1cGRhdGVyIiwiZGlnZXN0IiwicGlwZSIsImdldFRhcmJhbGwiLCJfY3JlYXRlRmFpbHVyZVN0cmVhbVJlc3BvbnNlIiwiX3N0cmVhbVN1Y2Nlc3NSZWFkVGFyQmFsbCIsInN0cmVhbSIsIlJlYWRUYXJiYWxsIiwicmVhZFRhcmJhbGxTdHJlYW0iLCJyZWFkVGFyYmFsbCIsImU0MDQiLCJjb250ZW50IiwiX3JlYWRQYWNrYWdlIiwic2VhcmNoIiwic3RhcnRLZXkiLCJvcHRpb25zIiwib2JqZWN0TW9kZSIsIl9zZWFyY2hFYWNoUGFja2FnZSIsIml0ZW0iLCJwYXJzZUludCIsInJlc3VsdCIsInB1c2giLCJvbkVuZCIsImVuZCIsImdldFBhY2thZ2VTdG9yYWdlIiwiX2ludGVybmFsRXJyb3IiLCJvblBhY2thZ2UiLCJ3YXJuIiwidmFsaWRhdGVOYW1lIiwiX2NyZWF0ZU5ld1BhY2thZ2UiLCJnZXRJbnRlcm5hbEVycm9yIiwidXBkYXRlSGFuZGxlciIsInVwZGF0ZVBhY2thZ2UiLCJiaW5kIiwibm9ybWFsaXplUGFja2FnZSIsImpzb24iLCJzYXZlUGFja2FnZSIsIl9zZXREZWZhdWx0UmV2aXNpb24iLCJfcmV2IiwiREVGQVVMVF9SRVZJU0lPTiIsIl9kZWJ1ZyIsInVubGlua05leHQiLCJpc0VtcHR5IiwiYXR0YWNobWVudCIsInNoaWZ0IiwidXBMaW5rS2V5IiwidGFyYmFsbFVybCIsInVwbGlua1VybCIsInVwbGlua3MiLCJob3N0IiwicHJvdG9jb2wiLCJyZWdpc3RyeSIsImZvcm1hdCIsImdldFNlY3JldCIsInNlY3JldEtleSIsInNldFNlY3JldCIsImNoZWNrU2VjcmV0S2V5IiwiU3RvcmFnZSIsIl9sb2FkU3RvcmVQbHVnaW4iLCJMb2NhbERhdGFiYXNlIiwicGx1Z2luX3BhcmFtcyIsInBsdWdpbnMiLCJzdG9yZSIsInBsdWdpbiIsImhlYWQiLCJzYXZlVG9rZW4iLCJ0b2tlbiIsImlzRnVuY3Rpb24iLCJQcm9taXNlIiwicmVqZWN0IiwiZ2V0Q29kZSIsIlNFUlZJQ0VfVU5BVkFJTEFCTEUiLCJTVVBQT1JUX0VSUk9SUyIsIlBMVUdJTl9NSVNTSU5HX0lOVEVSRkFDRSIsImRlbGV0ZVRva2VuIiwidXNlciIsInRva2VuS2V5IiwicmVh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a00sT0FBVixDQUFrQjFMLHVCQUFZMkwsbUJBQTlCLEVBQW1EQywwQkFBZUMsd0JBQWxFLENBQWYsQ0FBUDtBQUNEOztBQUVELFdBQU8sS0FBSy9NLGFBQUwsQ0FBbUJ1TSxTQUFuQixDQUE2QkMsS0FBN0IsQ0FBUDtBQUNEOztBQUVNUSxFQUFBQSxXQUFXLENBQUNDLElBQUQsRUFBZUMsUUFBZixFQUErQztBQUMvRCxRQUFJMU0sZ0JBQUVpTSxVQUFGLENBQWEsS0FBS3pNLGFBQUwsQ0FBbUJnTixXQUFoQyxNQUFpRCxLQUFyRCxFQUE0RDtBQUMxRCxhQUFPTixPQUFPLENBQUNDLE1BQVIsQ0FBZWpNLGlCQUFVa00sT0FBVixDQUFrQjFMLHVCQUFZMkwsbUJBQTlCLEVBQW1EQywwQkFBZUMsd0JBQWxFLENBQWYsQ0FBUDtBQUNEOztBQUVELFdBQU8sS0FBSy9NLGFBQUwsQ0FBbUJnTixXQUFuQixDQUErQkMsSUFBL0IsRUFBcUNDLFFBQXJDLENBQVA7QUFDRDs7QUFFTUMsRUFBQUEsVUFBVSxDQUFDQyxNQUFELEVBQXdDO0FBQ3ZELFFBQUk1TSxnQkFBRWlNLFVBQUYsQ0FBYSxLQUFLek0sYUFBTCxDQUFtQm1OLFVBQWhDLE1BQWdELEtBQXBELEVBQTJEO0FBQ3pELGFBQU9ULE9BQU8sQ0FBQ0MsTUFBUixDQUFlak0saUJBQVVrTSxPQUFWLENBQWtCMUwsdUJBQVkyTCxtQkFBOUIsRUFBbURDLDBCQUFlQyx3QkFBbEUsQ0FBZixDQUFQO0FBQ0Q7O0FBRUQsV0FBTyxLQUFLL00sYUFBTCxDQUFtQm1OLFVBQW5CLENBQThCQyxNQUE5QixDQUFQO0FBQ0Q7O0FBdjBCb0M7O2VBMDBCeEJ4TixZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IFVybE5vZGUgZnJvbSAndXJsJztcbmltcG9ydCBidWlsRGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBMb2NhbERhdGFiYXNlIGZyb20gJ0B2ZXJkYWNjaW8vbG9jYWwtc3RvcmFnZSc7XG5pbXBvcnQgeyBVcGxvYWRUYXJiYWxsLCBSZWFkVGFyYmFsbCB9IGZyb20gJ0B2ZXJkYWNjaW8vc3RyZWFtcyc7XG5pbXBvcnQge1xuICBUb2tlbixcbiAgVG9rZW5GaWx0ZXIsXG4gIFBhY2thZ2UsXG4gIENvbmZpZyxcbiAgSVVwbG9hZFRhcmJhbGwsXG4gIElSZWFkVGFyYmFsbCxcbiAgTWVyZ2VUYWdzLFxuICBWZXJzaW9uLFxuICBEaXN0RmlsZSxcbiAgQ2FsbGJhY2ssXG4gIExvZ2dlcixcbiAgSVBsdWdpblN0b3JhZ2UsXG4gIElQYWNrYWdlU3RvcmFnZSxcbiAgQXV0aG9yLFxuICBDYWxsYmFja0FjdGlvbixcbiAgb25TZWFyY2hQYWNrYWdlLFxuICBvbkVuZFNlYXJjaFBhY2thZ2UsXG4gIFN0b3JhZ2VVcGRhdGVDYWxsYmFjayxcbn0gZnJvbSAnQHZlcmRhY2Npby90eXBlcyc7XG5pbXBvcnQgeyBWZXJkYWNjaW9FcnJvciB9IGZyb20gJ0B2ZXJkYWNjaW8vY29tbW9ucy1hcGknO1xuaW1wb3J0IGxvYWRQbHVnaW4gZnJvbSAnLi4vbGliL3BsdWdpbi1sb2FkZXInO1xuaW1wb3J0IHsgSVN0b3JhZ2UsIFN0cmluZ1ZhbHVlIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgRXJyb3JDb2RlLCBpc09iamVjdCwgZ2V0TGF0ZXN0VmVyc2lvbiwgdGFnVmVyc2lvbiwgdmFsaWRhdGVOYW1lIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBnZW5lcmF0ZVBhY2thZ2VUZW1wbGF0ZSwgbm9ybWFsaXplUGFja2FnZSwgZ2VuZXJhdGVSZXZpc2lvbiwgZ2V0TGF0ZXN0UmVhZG1lLCBjbGVhblVwUmVhZG1lLCBub3JtYWxpemVDb250cmlidXRvcnMgfSBmcm9tICcuL3N0b3JhZ2UtdXRpbHMnO1xuaW1wb3J0IHsgQVBJX0VSUk9SLCBESVNUX1RBR1MsIEhUVFBfU1RBVFVTLCBTVE9SQUdFLCBTVVBQT1JUX0VSUk9SUywgVVNFUlMgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBjcmVhdGVUYXJiYWxsSGFzaCB9IGZyb20gJy4vY3J5cHRvLXV0aWxzJztcbmltcG9ydCB7IHByZXBhcmVTZWFyY2hQYWNrYWdlIH0gZnJvbSAnLi9zdG9yYWdlLXV0aWxzJztcblxuY29uc3QgZGVidWcgPSBidWlsRGVidWcoJ3ZlcmRhY2Npbzpsb2NhbC1zdG9yYWdlJyk7XG4vKipcbiAqIEltcGxlbWVudHMgU3RvcmFnZSBpbnRlcmZhY2UgKHNhbWUgZm9yIHN0b3JhZ2UuanMsIGxvY2FsLXN0b3JhZ2UuanMsIHVwLXN0b3JhZ2UuanMpLlxuICovXG5jbGFzcyBMb2NhbFN0b3JhZ2UgaW1wbGVtZW50cyBJU3RvcmFnZSB7XG4gIHB1YmxpYyBjb25maWc6IENvbmZpZztcbiAgcHVibGljIHN0b3JhZ2VQbHVnaW46IElQbHVnaW5TdG9yYWdlPENvbmZpZz47XG4gIHB1YmxpYyBsb2dnZXI6IExvZ2dlcjtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoY29uZmlnOiBDb25maWcsIGxvZ2dlcjogTG9nZ2VyKSB7XG4gICAgdGhpcy5sb2dnZXIgPSBsb2dnZXI7XG4gICAgdGhpcy5jb25maWcgPSBjb25maWc7XG4gICAgdGhpcy5zdG9yYWdlUGx1Z2luID0gdGhpcy5fbG9hZFN0b3JhZ2UoY29uZmlnLCBsb2dnZXIpO1xuICB9XG5cbiAgcHVibGljIGFkZFBhY2thZ2UobmFtZTogc3RyaW5nLCBwa2c6IFBhY2thZ2UsIGNhbGxiYWNrOiBDYWxsYmFjayk6IHZvaWQge1xuICAgIGNvbnN0IHN0b3JhZ2U6IGFueSA9IHRoaXMuX2dldExvY2FsU3RvcmFnZShuYW1lKTtcblxuICAgIGlmIChfLmlzTmlsKHN0b3JhZ2UpKSB7XG4gICAgICByZXR1cm4gY2FsbGJhY2soRXJyb3JDb2RlLmdldE5vdEZvdW5kKCd0aGlzIHBhY2thZ2UgY2Fubm90IGJlIGFkZGVkJykpO1xuICAgIH1cblxuICAgIHN0b3JhZ2UuY3JlYXRlUGFja2FnZShuYW1lLCBnZW5lcmF0ZVBhY2thZ2VUZW1wbGF0ZShuYW1lKSwgKGVycikgPT4ge1xuICAgICAgLy8gRklYTUU6IGl0IHdpbGwgYmUgZml4ZWQgaGVyZSBodHRwczovL2dpdGh1Yi5jb20vdmVyZGFjY2lvL3ZlcmRhY2Npby9wdWxsLzEzNjBcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGlmIChfLmlzTnVsbChlcnIpID09PSBmYWxzZSAmJiAoZXJyLmNvZGUgPT09IFNUT1JBR0UuRklMRV9FWElTVF9FUlJPUiB8fCBlcnIuY29kZSA9PT0gSFRUUF9TVEFUVVMuQ09ORkxJQ1QpKSB7XG4gICAgICAgIHJldHVybiBjYWxsYmFjayhFcnJvckNvZGUuZ2V0Q29uZmxpY3QoKSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGxhdGVzdCA9IGdldExhdGVzdFZlcnNpb24ocGtnKTtcbiAgICAgIGlmIChfLmlzTmlsKGxhdGVzdCkgPT09IGZhbHNlICYmIHBrZy52ZXJzaW9uc1tsYXRlc3RdKSB7XG4gICAgICAgIHJldHVybiBjYWxsYmFjayhudWxsLCBwa2cudmVyc2lvbnNbbGF0ZXN0XSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjYWxsYmFjaygpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBwYWNrYWdlLlxuICAgKiBAcGFyYW0geyp9IG5hbWVcbiAgICogQHBhcmFtIHsqfSBjYWxsYmFja1xuICAgKiBAcmV0dXJuIHtGdW5jdGlvbn1cbiAgICovXG4gIHB1YmxpYyByZW1vdmVQYWNrYWdlKG5hbWU6IHN0cmluZywgY2FsbGJhY2s6IENhbGxiYWNrKTogdm9pZCB7XG4gICAgY29uc3Qgc3RvcmFnZTogYW55ID0gdGhpcy5fZ2V0TG9jYWxTdG9yYWdlKG5hbWUpO1xuICAgIGRlYnVnKCdbc3RvcmFnZV0gcmVtb3ZpbmcgcGFja2FnZSAlbycsIG5hbWUpO1xuICAgIGlmIChfLmlzTmlsKHN0b3JhZ2UpKSB7XG4gICAgICByZXR1cm4gY2FsbGJhY2soRXJyb3JDb2RlLmdldE5vdEZvdW5kKCkpO1xuICAgIH1cblxuICAgIHN0b3JhZ2UucmVhZFBhY2thZ2UobmFtZSwgKGVyciwgZGF0YTogUGFja2FnZSk6IHZvaWQgPT4ge1xuICAgICAgaWYgKF8uaXNOaWwoZXJyKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgaWYgKGVyci5jb2RlID09PSBTVE9SQUdFLk5PX1NVQ0hfRklMRV9FUlJPUiB8fCBlcnIuY29kZSA9PT0gSFRUUF9TVEFUVVMuTk9UX0ZPVU5EKSB7XG4gICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKEVycm9yQ29kZS5nZXROb3RGb3VuZCgpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY2FsbGJhY2soZXJyKTtcbiAgICAgIH1cblxuICAgICAgZGF0YSA9IG5vcm1hbGl6ZVBhY2thZ2UoZGF0YSk7XG5cbiAgICAgIHRoaXMuc3RvcmFnZVBsdWdpbi5yZW1vdmUobmFtZSwgKHJlbW92ZUZhaWxlZDogRXJyb3IpOiB2b2lkID0+IHtcbiAgICAgICAgaWYgKHJlbW92ZUZhaWxlZCkge1xuICAgICAgICAgIC8vIFRoaXMgd2lsbCBoYXBwZW4gd2hlbiBkYXRhYmFzZSBpcyBsb2NrZWRcbiAgICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcih7IG5hbWUgfSwgYFtzdG9yYWdlL3JlbW92ZVBhY2thZ2VdIHRoZSBkYXRhYmFzZSBpcyBsb2NrZWQsIHJlbW92ZWQgaGFzIGZhaWxlZCBmb3IgQHtuYW1lfWApO1xuICAgICAgICAgIHJldHVybiBjYWxsYmFjayhFcnJvckNvZGUuZ2V0QmFkRGF0YShyZW1vdmVGYWlsZWQubWVzc2FnZSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgc3RvcmFnZS5kZWxldGVQYWNrYWdlKFNUT1JBR0UuUEFDS0FHRV9GSUxFX05BTUUsIChlcnIpOiB2b2lkID0+IHtcbiAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soZXJyKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgYXR0YWNobWVudHMgPSBPYmplY3Qua2V5cyhkYXRhLl9hdHRhY2htZW50cyk7XG5cbiAgICAgICAgICB0aGlzLl9kZWxldGVBdHRhY2htZW50cyhzdG9yYWdlLCBhdHRhY2htZW50cywgY2FsbGJhY2spO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFN5bmNocm9uaXplIHJlbW90ZSBwYWNrYWdlIGluZm8gd2l0aCB0aGUgbG9jYWwgb25lXG4gICAqIEBwYXJhbSB7Kn0gbmFtZVxuICAgKiBAcGFyYW0geyp9IHBhY2thZ2VJbmZvXG4gICAqIEBwYXJhbSB7Kn0gY2FsbGJhY2tcbiAgICovXG4gIHB1YmxpYyB1cGRhdGVWZXJzaW9ucyhuYW1lOiBzdHJpbmcsIHBhY2thZ2VJbmZvOiBQYWNrYWdlLCBjYWxsYmFjazogQ2FsbGJhY2spOiB2b2lkIHtcbiAgICB0aGlzLl9yZWFkQ3JlYXRlUGFja2FnZShuYW1lLCAoZXJyLCBwYWNrYWdlTG9jYWxKc29uKTogdm9pZCA9PiB7XG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIHJldHVybiBjYWxsYmFjayhlcnIpO1xuICAgICAgfVxuXG4gICAgICBsZXQgY2hhbmdlID0gZmFsc2U7XG4gICAgICAvLyB1cGRhdGluZyByZWFkbWVcbiAgICAgIHBhY2thZ2VMb2NhbEpzb24ucmVhZG1lID0gZ2V0TGF0ZXN0UmVhZG1lKHBhY2thZ2VJbmZvKTtcbiAgICAgIGlmIChwYWNrYWdlSW5mby5yZWFkbWUgIT09IHBhY2thZ2VMb2NhbEpzb24ucmVhZG1lKSB7XG4gICAgICAgIGNoYW5nZSA9IHRydWU7XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IHZlcnNpb25JZCBpbiBwYWNrYWdlSW5mby52ZXJzaW9ucykge1xuICAgICAgICBpZiAoXy5pc05pbChwYWNrYWdlTG9jYWxKc29uLnZlcnNpb25zW3ZlcnNpb25JZF0pKSB7XG4gICAgICAgICAgbGV0IHZlcnNpb24gPSBwYWNrYWdlSW5mby52ZXJzaW9uc1t2ZXJzaW9uSWRdO1xuXG4gICAgICAgICAgLy8gd2UgZG9uJ3Qga2VlcCByZWFkbWUgZm9yIHBhY2thZ2UgdmVyc2lvbnMsXG4gICAgICAgICAgLy8gb25seSBvbmUgcmVhZG1lIHBlciBwYWNrYWdlXG4gICAgICAgICAgdmVyc2lvbiA9IGNsZWFuVXBSZWFkbWUodmVyc2lvbik7XG4gICAgICAgICAgdmVyc2lvbi5jb250cmlidXRvcnMgPSBub3JtYWxpemVDb250cmlidXRvcnModmVyc2lvbi5jb250cmlidXRvcnMgYXMgQXV0aG9yW10pO1xuXG4gICAgICAgICAgY2hhbmdlID0gdHJ1ZTtcbiAgICAgICAgICBwYWNrYWdlTG9jYWxKc29uLnZlcnNpb25zW3ZlcnNpb25JZF0gPSB2ZXJzaW9uO1xuXG4gICAgICAgICAgaWYgKHZlcnNpb24uZGlzdCAmJiB2ZXJzaW9uLmRpc3QudGFyYmFsbCkge1xuICAgICAgICAgICAgY29uc3QgdXJsT2JqZWN0OiBhbnkgPSBVcmxOb2RlLnBhcnNlKHZlcnNpb24uZGlzdC50YXJiYWxsKTtcbiAgICAgICAgICAgIGNvbnN0IGZpbGVuYW1lID0gdXJsT2JqZWN0LnBhdGhuYW1lLnJlcGxhY2UoL14uKlxcLy8sICcnKTtcblxuICAgICAgICAgICAgLy8gd2UgZG8gTk9UIG92ZXJ3cml0ZSBhbnkgZXhpc3RpbmcgcmVjb3Jkc1xuICAgICAgICAgICAgaWYgKF8uaXNOaWwocGFja2FnZUxvY2FsSnNvbi5fZGlzdGZpbGVzW2ZpbGVuYW1lXSkpIHtcbiAgICAgICAgICAgICAgY29uc3QgaGFzaDogRGlzdEZpbGUgPSAocGFja2FnZUxvY2FsSnNvbi5fZGlzdGZpbGVzW2ZpbGVuYW1lXSA9IHtcbiAgICAgICAgICAgICAgICB1cmw6IHZlcnNpb24uZGlzdC50YXJiYWxsLFxuICAgICAgICAgICAgICAgIHNoYTogdmVyc2lvbi5kaXN0LnNoYXN1bSxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIC8qIGVzbGludCBzcGFjZWQtY29tbWVudDogMCAqL1xuICAgICAgICAgICAgICAvLyAkRmxvd0ZpeE1lXG4gICAgICAgICAgICAgIGNvbnN0IHVwTGluazogc3RyaW5nID0gdmVyc2lvbltTeW1ib2wuZm9yKCdfX3ZlcmRhY2Npb191cGxpbmsnKV07XG5cbiAgICAgICAgICAgICAgaWYgKF8uaXNOaWwodXBMaW5rKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVVcGxpbmtUb1JlbW90ZVByb3RvY29sKGhhc2gsIHVwTGluayk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZm9yIChjb25zdCB0YWcgaW4gcGFja2FnZUluZm9bRElTVF9UQUdTXSkge1xuICAgICAgICBpZiAoIXBhY2thZ2VMb2NhbEpzb25bRElTVF9UQUdTXVt0YWddIHx8IHBhY2thZ2VMb2NhbEpzb25bRElTVF9UQUdTXVt0YWddICE9PSBwYWNrYWdlSW5mb1tESVNUX1RBR1NdW3RhZ10pIHtcbiAgICAgICAgICBjaGFuZ2UgPSB0cnVlO1xuICAgICAgICAgIHBhY2thZ2VMb2NhbEpzb25bRElTVF9UQUdTXVt0YWddID0gcGFja2FnZUluZm9bRElTVF9UQUdTXVt0YWddO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGZvciAoY29uc3QgdXAgaW4gcGFja2FnZUluZm8uX3VwbGlua3MpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChwYWNrYWdlSW5mby5fdXBsaW5rcywgdXApKSB7XG4gICAgICAgICAgY29uc3QgbmVlZF9jaGFuZ2UgPVxuICAgICAgICAgICAgIWlzT2JqZWN0KHBhY2thZ2VMb2NhbEpzb24uX3VwbGlua3NbdXBdKSB8fFxuICAgICAgICAgICAgcGFja2FnZUluZm8uX3VwbGlua3NbdXBdLmV0YWcgIT09IHBhY2thZ2VMb2NhbEpzb24uX3VwbGlua3NbdXBdLmV0YWcgfHxcbiAgICAgICAgICAgIHBhY2thZ2VJbmZvLl91cGxpbmtzW3VwXS5mZXRjaGVkICE9PSBwYWNrYWdlTG9jYWxKc29uLl91cGxpbmtzW3VwXS5mZXRjaGVkO1xuXG4gICAgICAgICAgaWYgKG5lZWRfY2hhbmdlKSB7XG4gICAgICAgICAgICBjaGFuZ2UgPSB0cnVlO1xuICAgICAgICAgICAgcGFja2FnZUxvY2FsSnNvbi5fdXBsaW5rc1t1cF0gPSBwYWNrYWdlSW5mby5fdXBsaW5rc1t1cF07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICgndGltZScgaW4gcGFja2FnZUluZm8gJiYgIV8uaXNFcXVhbChwYWNrYWdlTG9jYWxKc29uLnRpbWUsIHBhY2thZ2VJbmZvLnRpbWUpKSB7XG4gICAgICAgIHBhY2thZ2VMb2NhbEpzb24udGltZSA9IHBhY2thZ2VJbmZvLnRpbWU7XG4gICAgICAgIGNoYW5nZSA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChjaGFuZ2UpIHtcbiAgICAgICAgZGVidWcoJ3VwZGF0aW5nIHBhY2thZ2UgJW8gaW5mbycsIG5hbWUpO1xuICAgICAgICB0aGlzLl93cml0ZVBhY2thZ2UobmFtZSwgcGFja2FnZUxvY2FsSnNvbiwgZnVuY3Rpb24gKGVycik6IHZvaWQge1xuICAgICAgICAgIGNhbGxiYWNrKGVyciwgcGFja2FnZUxvY2FsSnNvbik7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2FsbGJhY2sobnVsbCwgcGFja2FnZUxvY2FsSnNvbik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgbmV3IHZlcnNpb24gdG8gYSBwcmV2aW91cyBsb2NhbCBwYWNrYWdlLlxuICAgKiBAcGFyYW0geyp9IG5hbWVcbiAgICogQHBhcmFtIHsqfSB2ZXJzaW9uXG4gICAqIEBwYXJhbSB7Kn0gbWV0YWRhdGFcbiAgICogQHBhcmFtIHsqfSB0YWdcbiAgICogQHBhcmFtIHsqfSBjYWxsYmFja1xuICAgKi9cbiAgcHVibGljIGFkZFZlcnNpb24obmFtZTogc3RyaW5nLCB2ZXJzaW9uOiBzdHJpbmcsIG1ldGFkYXRhOiBWZXJzaW9uLCB0YWc6IFN0cmluZ1ZhbHVlLCBjYWxsYmFjazogQ2FsbGJhY2tBY3Rpb24pOiB2b2lkIHtcbiAgICB0aGlzLl91cGRhdGVQYWNrYWdlKFxuICAgICAgbmFtZSxcbiAgICAgIChkYXRhLCBjYjogQ2FsbGJhY2spOiB2b2lkID0+IHtcbiAgICAgICAgLy8ga2VlcCBvbmx5IG9uZSByZWFkbWUgcGVyIHBhY2thZ2VcbiAgICAgICAgZGF0YS5yZWFkbWUgPSBtZXRhZGF0YS5yZWFkbWU7XG5cbiAgICAgICAgLy8gVE9ETzogbG9kYXNoIHJlbW92ZVxuICAgICAgICBtZXRhZGF0YSA9IGNsZWFuVXBSZWFkbWUobWV0YWRhdGEpO1xuICAgICAgICBtZXRhZGF0YS5jb250cmlidXRvcnMgPSBub3JtYWxpemVDb250cmlidXRvcnMobWV0YWRhdGEuY29udHJpYnV0b3JzIGFzIEF1dGhvcltdKTtcblxuICAgICAgICBjb25zdCBoYXNWZXJzaW9uID0gZGF0YS52ZXJzaW9uc1t2ZXJzaW9uXSAhPSBudWxsO1xuICAgICAgICBpZiAoaGFzVmVyc2lvbikge1xuICAgICAgICAgIHJldHVybiBjYihFcnJvckNvZGUuZ2V0Q29uZmxpY3QoKSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBpZiB1cGxvYWRlZCB0YXJiYWxsIGhhcyBhIGRpZmZlcmVudCBzaGFzdW0sIGl0J3MgdmVyeSBsaWtlbHkgdGhhdCB3ZSBoYXZlIHNvbWUga2luZCBvZiBlcnJvclxuICAgICAgICBpZiAoaXNPYmplY3QobWV0YWRhdGEuZGlzdCkgJiYgXy5pc1N0cmluZyhtZXRhZGF0YS5kaXN0LnRhcmJhbGwpKSB7XG4gICAgICAgICAgY29uc3QgdGFyYmFsbCA9IG1ldGFkYXRhLmRpc3QudGFyYmFsbC5yZXBsYWNlKC8uKlxcLy8sICcnKTtcblxuICAgICAgICAgIGlmIChpc09iamVjdChkYXRhLl9hdHRhY2htZW50c1t0YXJiYWxsXSkpIHtcbiAgICAgICAgICAgIGlmIChfLmlzTmlsKGRhdGEuX2F0dGFjaG1lbnRzW3RhcmJhbGxdLnNoYXN1bSkgPT09IGZhbHNlICYmIF8uaXNOaWwobWV0YWRhdGEuZGlzdC5zaGFzdW0pID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICBpZiAoZGF0YS5fYXR0YWNobWVudHNbdGFyYmFsbF0uc2hhc3VtICE9IG1ldGFkYXRhLmRpc3Quc2hhc3VtKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gYHNoYXN1bSBlcnJvciwgJHtkYXRhLl9hdHRhY2htZW50c1t0YXJiYWxsXS5zaGFzdW19ICE9ICR7bWV0YWRhdGEuZGlzdC5zaGFzdW19YDtcbiAgICAgICAgICAgICAgICByZXR1cm4gY2IoRXJyb3JDb2RlLmdldEJhZFJlcXVlc3QoZXJyb3JNZXNzYWdlKSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgY3VycmVudERhdGUgPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCk7XG5cbiAgICAgICAgICAgIC8vIHNvbWUgb2xkIHN0b3JhZ2UgZG8gbm90IGhhdmUgdGhpcyBmaWVsZCAjNzQwXG4gICAgICAgICAgICBpZiAoXy5pc05pbChkYXRhLnRpbWUpKSB7XG4gICAgICAgICAgICAgIGRhdGEudGltZSA9IHt9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBkYXRhLnRpbWVbJ21vZGlmaWVkJ10gPSBjdXJyZW50RGF0ZTtcblxuICAgICAgICAgICAgaWYgKCdjcmVhdGVkJyBpbiBkYXRhLnRpbWUgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgIGRhdGEudGltZS5jcmVhdGVkID0gY3VycmVudERhdGU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRhdGEudGltZVt2ZXJzaW9uXSA9IGN1cnJlbnREYXRlO1xuICAgICAgICAgICAgZGF0YS5fYXR0YWNobWVudHNbdGFyYmFsbF0udmVyc2lvbiA9IHZlcnNpb247XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZGF0YS52ZXJzaW9uc1t2ZXJzaW9uXSA9IG1ldGFkYXRhO1xuICAgICAgICB0YWdWZXJzaW9uKGRhdGEsIHZlcnNpb24sIHRhZyk7XG5cbiAgICAgICAgdGhpcy5zdG9yYWdlUGx1Z2luLmFkZChuYW1lLCAoYWRkRmFpbGVkKTogdm9pZCA9PiB7XG4gICAgICAgICAgaWYgKGFkZEZhaWxlZCkge1xuICAgICAgICAgICAgcmV0dXJuIGNiKEVycm9yQ29kZS5nZXRCYWREYXRhKGFkZEZhaWxlZC5tZXNzYWdlKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2IoKTtcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgY2FsbGJhY2tcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIE1lcmdlIGEgbmV3IGxpc3Qgb2YgdGFncyBmb3IgYSBsb2NhbCBwYWNrYWdlcyB3aXRoIHRoZSBleGlzdGluZyBvbmUuXG4gICAqIEBwYXJhbSB7Kn0gcGtnTmFtZVxuICAgKiBAcGFyYW0geyp9IHRhZ3NcbiAgICogQHBhcmFtIHsqfSBjYWxsYmFja1xuICAgKi9cbiAgcHVibGljIG1lcmdlVGFncyhwa2dOYW1lOiBzdHJpbmcsIHRhZ3M6IE1lcmdlVGFncywgY2FsbGJhY2s6IENhbGxiYWNrQWN0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5fdXBkYXRlUGFja2FnZShcbiAgICAgIHBrZ05hbWUsXG4gICAgICAoZGF0YSwgY2IpOiB2b2lkID0+IHtcbiAgICAgICAgLyogZXNsaW50IGd1YXJkLWZvci1pbjogMCAqL1xuICAgICAgICBmb3IgKGNvbnN0IHRhZyBpbiB0YWdzKSB7XG4gICAgICAgICAgLy8gdGhpcyBoYW5kbGUgZGlzdC10YWcgcm0gY29tbWFuZFxuICAgICAgICAgIGlmIChfLmlzTnVsbCh0YWdzW3RhZ10pKSB7XG4gICAgICAgICAgICBkZWxldGUgZGF0YVtESVNUX1RBR1NdW3RhZ107XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoXy5pc05pbChkYXRhLnZlcnNpb25zW3RhZ3NbdGFnXV0pKSB7XG4gICAgICAgICAgICByZXR1cm4gY2IodGhpcy5fZ2V0VmVyc2lvbk5vdEZvdW5kKCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCB2ZXJzaW9uOiBzdHJpbmcgPSB0YWdzW3RhZ107XG4gICAgICAgICAgdGFnVmVyc2lvbihkYXRhLCB2ZXJzaW9uLCB0YWcpO1xuICAgICAgICB9XG4gICAgICAgIGNiKG51bGwpO1xuICAgICAgfSxcbiAgICAgIGNhbGxiYWNrXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdmVyc2lvbiBub3QgZm91bmRcbiAgICogQHJldHVybiB7U3RyaW5nfVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBfZ2V0VmVyc2lvbk5vdEZvdW5kKCk6IFZlcmRhY2Npb0Vycm9yIHtcbiAgICByZXR1cm4gRXJyb3JDb2RlLmdldE5vdEZvdW5kKEFQSV9FUlJPUi5WRVJTSU9OX05PVF9FWElTVCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGZpbGUgbm8gYXZhaWxhYmxlXG4gICAqIEByZXR1cm4ge1N0cmluZ31cbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgX2dldEZpbGVOb3RBdmFpbGFibGUoKTogVmVyZGFjY2lvRXJyb3Ige1xuICAgIHJldHVybiBFcnJvckNvZGUuZ2V0Tm90Rm91bmQoJ25vIHN1Y2ggZmlsZSBhdmFpbGFibGUnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgdGhlIHBhY2thZ2UgbWV0YWRhdGEsIHRhZ3MgYW5kIGF0dGFjaG1lbnRzICh0YXJiYWxscykuXG4gICAqIE5vdGU6IEN1cnJlbnRseSBzdXBwb3J0cyB1bnB1Ymxpc2hpbmcgYW5kIGRlcHJlY2F0aW9uLlxuICAgKiBAcGFyYW0geyp9IG5hbWVcbiAgICogQHBhcmFtIHsqfSBpbmNvbWluZ1BrZ1xuICAgKiBAcGFyYW0geyp9IHJldmlzaW9uXG4gICAqIEBwYXJhbSB7Kn0gY2FsbGJhY2tcbiAgICogQHJldHVybiB7RnVuY3Rpb259XG4gICAqL1xuICBwdWJsaWMgY2hhbmdlUGFja2FnZShuYW1lOiBzdHJpbmcsIGluY29taW5nUGtnOiBQYWNrYWdlLCByZXZpc2lvbjogc3RyaW5nIHwgdm9pZCwgY2FsbGJhY2s6IENhbGxiYWNrKTogdm9pZCB7XG4gICAgaWYgKCFpc09iamVjdChpbmNvbWluZ1BrZy52ZXJzaW9ucykgfHwgIWlzT2JqZWN0KGluY29taW5nUGtnW0RJU1RfVEFHU10pKSB7XG4gICAgICB0aGlzLmxvZ2dlci5lcnJvcih7IG5hbWUgfSwgYGNoYW5nZVBhY2thZ2UgYmFkIGRhdGEgZm9yIEB7bmFtZX1gKTtcbiAgICAgIHJldHVybiBjYWxsYmFjayhFcnJvckNvZGUuZ2V0QmFkRGF0YSgpKTtcbiAgICB9XG4gICAgZGVidWcoJ2NoYW5nZVBhY2thZ2UgdWRhcHRpbmcgcGFja2FnZSBmb3IgJW8nLCBuYW1lKTtcbiAgICB0aGlzLl91cGRhdGVQYWNrYWdlKFxuICAgICAgbmFtZSxcbiAgICAgIChsb2NhbERhdGE6IFBhY2thZ2UsIGNiOiBDYWxsYmFja0FjdGlvbik6IHZvaWQgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IHZlcnNpb24gaW4gbG9jYWxEYXRhLnZlcnNpb25zKSB7XG4gICAgICAgICAgY29uc3QgaW5jb21pbmdWZXJzaW9uID0gaW5jb21pbmdQa2cudmVyc2lvbnNbdmVyc2lvbl07XG4gICAgICAgICAgaWYgKF8uaXNOaWwoaW5jb21pbmdWZXJzaW9uKSkge1xuICAgICAgICAgICAgdGhpcy5sb2dnZXIuaW5mbyh7IG5hbWU6IG5hbWUsIHZlcnNpb246IHZlcnNpb24gfSwgJ3VucHVibGlzaGluZyBAe25hbWV9QEB7dmVyc2lvbn0nKTtcblxuICAgICAgICAgICAgLy8gRklYTUU6IEkgcHJlZmVyIHJldHVybiBhIG5ldyBvYmplY3QgcmF0aGVyIG11dGF0ZSB0aGUgbWV0YWRhdGFcbiAgICAgICAgICAgIGRlbGV0ZSBsb2NhbERhdGEudmVyc2lvbnNbdmVyc2lvbl07XG4gICAgICAgICAgICBkZWxldGUgbG9jYWxEYXRhLnRpbWUhW3ZlcnNpb25dO1xuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZpbGUgaW4gbG9jYWxEYXRhLl9hdHRhY2htZW50cykge1xuICAgICAgICAgICAgICBpZiAobG9jYWxEYXRhLl9hdHRhY2htZW50c1tmaWxlXS52ZXJzaW9uID09PSB2ZXJzaW9uKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIGxvY2FsRGF0YS5fYXR0YWNobWVudHNbZmlsZV0udmVyc2lvbjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGluY29taW5nVmVyc2lvbiwgJ2RlcHJlY2F0ZWQnKSkge1xuICAgICAgICAgICAgY29uc3QgaW5jb21pbmdEZXByZWNhdGVkID0gaW5jb21pbmdWZXJzaW9uLmRlcHJlY2F0ZWQ7XG4gICAgICAgICAgICBpZiAoaW5jb21pbmdEZXByZWNhdGVkICE9IGxvY2FsRGF0YS52ZXJzaW9uc1t2ZXJzaW9uXS5kZXByZWNhdGVkKSB7XG4gICAgICAgICAgICAgIGlmICghaW5jb21pbmdEZXByZWNhdGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuaW5mbyh7IG5hbWU6IG5hbWUsIHZlcnNpb246IHZlcnNpb24gfSwgJ3VuZGVwcmVjYXRpbmcgQHtuYW1lfUBAe3ZlcnNpb259Jyk7XG4gICAgICAgICAgICAgICAgZGVsZXRlIGxvY2FsRGF0YS52ZXJzaW9uc1t2ZXJzaW9uXS5kZXByZWNhdGVkO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmluZm8oeyBuYW1lOiBuYW1lLCB2ZXJzaW9uOiB2ZXJzaW9uIH0sICdkZXByZWNhdGluZyBAe25hbWV9QEB7dmVyc2lvbn0nKTtcbiAgICAgICAgICAgICAgICBsb2NhbERhdGEudmVyc2lvbnNbdmVyc2lvbl0uZGVwcmVjYXRlZCA9IGluY29taW5nRGVwcmVjYXRlZDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBsb2NhbERhdGEudGltZSEubW9kaWZpZWQgPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgbG9jYWxEYXRhW1VTRVJTXSA9IGluY29taW5nUGtnW1VTRVJTXTtcbiAgICAgICAgbG9jYWxEYXRhW0RJU1RfVEFHU10gPSBpbmNvbWluZ1BrZ1tESVNUX1RBR1NdO1xuICAgICAgICBjYihudWxsKTtcbiAgICAgIH0sXG4gICAgICBmdW5jdGlvbiAoZXJyKTogdm9pZCB7XG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICByZXR1cm4gY2FsbGJhY2soZXJyKTtcbiAgICAgICAgfVxuICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgfVxuICAgICk7XG4gIH1cbiAgLyoqXG4gICAqIFJlbW92ZSBhIHRhcmJhbGwuXG4gICAqIEBwYXJhbSB7Kn0gbmFtZVxuICAgKiBAcGFyYW0geyp9IGZpbGVuYW1lXG4gICAqIEBwYXJhbSB7Kn0gcmV2aXNpb25cbiAgICogQHBhcmFtIHsqfSBjYWxsYmFja1xuICAgKi9cbiAgcHVibGljIHJlbW92ZVRhcmJhbGwobmFtZTogc3RyaW5nLCBmaWxlbmFtZTogc3RyaW5nLCByZXZpc2lvbjogc3RyaW5nLCBjYWxsYmFjazogQ2FsbGJhY2tBY3Rpb24pOiB2b2lkIHtcbiAgICBhc3NlcnQodmFsaWRhdGVOYW1lKGZpbGVuYW1lKSk7XG5cbiAgICB0aGlzLl91cGRhdGVQYWNrYWdlKFxuICAgICAgbmFtZSxcbiAgICAgIChkYXRhLCBjYik6IHZvaWQgPT4ge1xuICAgICAgICBpZiAoZGF0YS5fYXR0YWNobWVudHNbZmlsZW5hbWVdKSB7XG4gICAgICAgICAgZGVsZXRlIGRhdGEuX2F0dGFjaG1lbnRzW2ZpbGVuYW1lXTtcbiAgICAgICAgICBjYihudWxsKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjYih0aGlzLl9nZXRGaWxlTm90QXZhaWxhYmxlKCkpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgKGVycjogVmVyZGFjY2lvRXJyb3IpOiB2b2lkID0+IHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHJldHVybiBjYWxsYmFjayhlcnIpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHN0b3JhZ2UgPSB0aGlzLl9nZXRMb2NhbFN0b3JhZ2UobmFtZSk7XG5cbiAgICAgICAgaWYgKHN0b3JhZ2UpIHtcbiAgICAgICAgICBzdG9yYWdlLmRlbGV0ZVBhY2thZ2UoZmlsZW5hbWUsIGNhbGxiYWNrKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgdGFyYmFsbC5cbiAgICogQHBhcmFtIHtTdHJpbmd9IG5hbWVcbiAgICogQHBhcmFtIHtTdHJpbmd9IGZpbGVuYW1lXG4gICAqIEByZXR1cm4ge1N0cmVhbX1cbiAgICovXG4gIHB1YmxpYyBhZGRUYXJiYWxsKG5hbWU6IHN0cmluZywgZmlsZW5hbWU6IHN0cmluZyk6IElVcGxvYWRUYXJiYWxsIHtcbiAgICBhc3NlcnQodmFsaWRhdGVOYW1lKGZpbGVuYW1lKSk7XG5cbiAgICBsZXQgbGVuZ3RoID0gMDtcbiAgICBjb25zdCBzaGFPbmVIYXNoID0gY3JlYXRlVGFyYmFsbEhhc2goKTtcbiAgICBjb25zdCB1cGxvYWRTdHJlYW06IElVcGxvYWRUYXJiYWxsID0gbmV3IFVwbG9hZFRhcmJhbGwoe30pO1xuICAgIGNvbnN0IF90cmFuc2Zvcm0gPSB1cGxvYWRTdHJlYW0uX3RyYW5zZm9ybTtcbiAgICBjb25zdCBzdG9yYWdlID0gdGhpcy5fZ2V0TG9jYWxTdG9yYWdlKG5hbWUpO1xuXG4gICAgdXBsb2FkU3RyZWFtLmFib3J0ID0gZnVuY3Rpb24gKCk6IHZvaWQge307XG4gICAgdXBsb2FkU3RyZWFtLmRvbmUgPSBmdW5jdGlvbiAoKTogdm9pZCB7fTtcblxuICAgIHVwbG9hZFN0cmVhbS5fdHJhbnNmb3JtID0gZnVuY3Rpb24gKGRhdGEsIC4uLmFyZ3MpOiB2b2lkIHtcbiAgICAgIHNoYU9uZUhhc2gudXBkYXRlKGRhdGEpO1xuICAgICAgLy8gbWVhc3VyZSB0aGUgbGVuZ3RoIGZvciB2YWxpZGF0aW9uIHJlYXNvbnNcbiAgICAgIGxlbmd0aCArPSBkYXRhLmxlbmd0aDtcbiAgICAgIGNvbnN0IGFwcGxpZWREYXRhID0gW2RhdGEsIC4uLmFyZ3NdO1xuICAgICAgLy8gRklYTUU6IG5vdCBzdXJlIGFib3V0IHRoaXMgYXBwcm9hY2gsIHRzYyBjb21wbGFpbnNcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIF90cmFuc2Zvcm0uYXBwbHkodXBsb2FkU3RyZWFtLCBhcHBsaWVkRGF0YSk7XG4gICAgfTtcblxuICAgIGlmIChuYW1lID09PSAnX19wcm90b19fJykge1xuICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKTogdm9pZCA9PiB7XG4gICAgICAgIHVwbG9hZFN0cmVhbS5lbWl0KCdlcnJvcicsIEVycm9yQ29kZS5nZXRGb3JiaWRkZW4oKSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiB1cGxvYWRTdHJlYW07XG4gICAgfVxuXG4gICAgaWYgKCFzdG9yYWdlKSB7XG4gICAgICBwcm9jZXNzLm5leHRUaWNrKCgpOiB2b2lkID0+IHtcbiAgICAgICAgdXBsb2FkU3RyZWFtLmVtaXQoJ2Vycm9yJywgXCJjYW4ndCB1cGxvYWQgdGhpcyBwYWNrYWdlXCIpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gdXBsb2FkU3RyZWFtO1xuICAgIH1cblxuICAgIGNvbnN0IHdyaXRlU3RyZWFtOiBJVXBsb2FkVGFyYmFsbCA9IHN0b3JhZ2Uud3JpdGVUYXJiYWxsKGZpbGVuYW1lKTtcblxuICAgIHdyaXRlU3RyZWFtLm9uKCdlcnJvcicsIChlcnIpID0+IHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGlmIChlcnIuY29kZSA9PT0gU1RPUkFHRS5GSUxFX0VYSVNUX0VSUk9SIHx8IGVyci5jb2RlID09PSBIVFRQX1NUQVRVUy5DT05GTElDVCkge1xuICAgICAgICB1cGxvYWRTdHJlYW0uZW1pdCgnZXJyb3InLCBFcnJvckNvZGUuZ2V0Q29uZmxpY3QoKSk7XG4gICAgICAgIHVwbG9hZFN0cmVhbS5hYm9ydCgpO1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICB9IGVsc2UgaWYgKGVyci5jb2RlID09PSBTVE9SQUdFLk5PX1NVQ0hfRklMRV9FUlJPUiB8fCBlcnIuY29kZSA9PT0gSFRUUF9TVEFUVVMuTk9UX0ZPVU5EKSB7XG4gICAgICAgIC8vIGNoZWNrIGlmIHBhY2thZ2UgZXhpc3RzIHRvIHRocm93IGFuIGFwcHJvcHJpYXRlIG1lc3NhZ2VcbiAgICAgICAgdGhpcy5nZXRQYWNrYWdlTWV0YWRhdGEobmFtZSwgZnVuY3Rpb24gKF9lcnI6IFZlcmRhY2Npb0Vycm9yLCBfcmVzOiBQYWNrYWdlKTogdm9pZCB7XG4gICAgICAgICAgaWYgKF9lcnIpIHtcbiAgICAgICAgICAgIHVwbG9hZFN0cmVhbS5lbWl0KCdlcnJvcicsIF9lcnIpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB1cGxvYWRTdHJlYW0uZW1pdCgnZXJyb3InLCBlcnIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB1cGxvYWRTdHJlYW0uZW1pdCgnZXJyb3InLCBlcnIpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgd3JpdGVTdHJlYW0ub24oJ29wZW4nLCBmdW5jdGlvbiAoKTogdm9pZCB7XG4gICAgICAvLyByZS1lbWl0dGluZyBvcGVuIGJlY2F1c2UgaXQncyBoYW5kbGVkIGluIHN0b3JhZ2UuanNcbiAgICAgIHVwbG9hZFN0cmVhbS5lbWl0KCdvcGVuJyk7XG4gICAgfSk7XG5cbiAgICB3cml0ZVN0cmVhbS5vbignc3VjY2VzcycsICgpOiB2b2lkID0+IHtcbiAgICAgIHRoaXMuX3VwZGF0ZVBhY2thZ2UoXG4gICAgICAgIG5hbWUsXG4gICAgICAgIGZ1bmN0aW9uIHVwZGF0ZXIoZGF0YSwgY2IpOiB2b2lkIHtcbiAgICAgICAgICBkYXRhLl9hdHRhY2htZW50c1tmaWxlbmFtZV0gPSB7XG4gICAgICAgICAgICBzaGFzdW06IHNoYU9uZUhhc2guZGlnZXN0KCdoZXgnKSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGNiKG51bGwpO1xuICAgICAgICB9LFxuICAgICAgICBmdW5jdGlvbiAoZXJyKTogdm9pZCB7XG4gICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgdXBsb2FkU3RyZWFtLmVtaXQoJ2Vycm9yJywgZXJyKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdXBsb2FkU3RyZWFtLmVtaXQoJ3N1Y2Nlc3MnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICB1cGxvYWRTdHJlYW0uYWJvcnQgPSBmdW5jdGlvbiAoKTogdm9pZCB7XG4gICAgICB3cml0ZVN0cmVhbS5hYm9ydCgpO1xuICAgIH07XG5cbiAgICB1cGxvYWRTdHJlYW0uZG9uZSA9IGZ1bmN0aW9uICgpOiB2b2lkIHtcbiAgICAgIGlmICghbGVuZ3RoKSB7XG4gICAgICAgIHVwbG9hZFN0cmVhbS5lbWl0KCdlcnJvcicsIEVycm9yQ29kZS5nZXRCYWREYXRhKCdyZWZ1c2luZyB0byBhY2NlcHQgemVyby1sZW5ndGggZmlsZScpKTtcbiAgICAgICAgd3JpdGVTdHJlYW0uYWJvcnQoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHdyaXRlU3RyZWFtLmRvbmUoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdXBsb2FkU3RyZWFtLnBpcGUod3JpdGVTdHJlYW0pO1xuXG4gICAgcmV0dXJuIHVwbG9hZFN0cmVhbTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSB0YXJiYWxsLlxuICAgKiBAcGFyYW0geyp9IG5hbWVcbiAgICogQHBhcmFtIHsqfSBmaWxlbmFtZVxuICAgKiBAcmV0dXJuIHtSZWFkVGFyYmFsbH1cbiAgICovXG4gIHB1YmxpYyBnZXRUYXJiYWxsKG5hbWU6IHN0cmluZywgZmlsZW5hbWU6IHN0cmluZyk6IElSZWFkVGFyYmFsbCB7XG4gICAgYXNzZXJ0KHZhbGlkYXRlTmFtZShmaWxlbmFtZSkpO1xuXG4gICAgY29uc3Qgc3RvcmFnZTogSVBhY2thZ2VTdG9yYWdlID0gdGhpcy5fZ2V0TG9jYWxTdG9yYWdlKG5hbWUpO1xuXG4gICAgaWYgKF8uaXNOaWwoc3RvcmFnZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLl9jcmVhdGVGYWlsdXJlU3RyZWFtUmVzcG9uc2UoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fc3RyZWFtU3VjY2Vzc1JlYWRUYXJCYWxsKHN0b3JhZ2UsIGZpbGVuYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSBzdHJlYW0gdGhhdCBlbWl0cyBhIHJlYWQgZmFpbHVyZS5cbiAgICogQHByaXZhdGVcbiAgICogQHJldHVybiB7UmVhZFRhcmJhbGx9XG4gICAqL1xuICBwcml2YXRlIF9jcmVhdGVGYWlsdXJlU3RyZWFtUmVzcG9uc2UoKTogSVJlYWRUYXJiYWxsIHtcbiAgICBjb25zdCBzdHJlYW06IElSZWFkVGFyYmFsbCA9IG5ldyBSZWFkVGFyYmFsbCh7fSk7XG5cbiAgICBwcm9jZXNzLm5leHRUaWNrKCgpOiB2b2lkID0+IHtcbiAgICAgIHN0cmVhbS5lbWl0KCdlcnJvcicsIHRoaXMuX2dldEZpbGVOb3RBdmFpbGFibGUoKSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHN0cmVhbTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSBzdHJlYW0gdGhhdCBlbWl0cyB0aGUgdGFyYmFsbCBkYXRhXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBzdG9yYWdlXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBmaWxlbmFtZVxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcmV0dXJuIHtSZWFkVGFyYmFsbH1cbiAgICovXG4gIHByaXZhdGUgX3N0cmVhbVN1Y2Nlc3NSZWFkVGFyQmFsbChzdG9yYWdlOiBhbnksIGZpbGVuYW1lOiBzdHJpbmcpOiBJUmVhZFRhcmJhbGwge1xuICAgIGNvbnN0IHN0cmVhbTogSVJlYWRUYXJiYWxsID0gbmV3IFJlYWRUYXJiYWxsKHt9KTtcbiAgICBjb25zdCByZWFkVGFyYmFsbFN0cmVhbSA9IHN0b3JhZ2UucmVhZFRhcmJhbGwoZmlsZW5hbWUpO1xuICAgIGNvbnN0IGU0MDQgPSBFcnJvckNvZGUuZ2V0Tm90Rm91bmQ7XG5cbiAgICBzdHJlYW0uYWJvcnQgPSBmdW5jdGlvbiAoKTogdm9pZCB7XG4gICAgICBpZiAoXy5pc05pbChyZWFkVGFyYmFsbFN0cmVhbSkgPT09IGZhbHNlKSB7XG4gICAgICAgIHJlYWRUYXJiYWxsU3RyZWFtLmFib3J0KCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHJlYWRUYXJiYWxsU3RyZWFtLm9uKCdlcnJvcicsIGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGlmIChlcnIuY29kZSA9PT0gU1RPUkFHRS5OT19TVUNIX0ZJTEVfRVJST1IgfHwgZXJyLmNvZGUgPT09IEhUVFBfU1RBVFVTLk5PVF9GT1VORCkge1xuICAgICAgICBzdHJlYW0uZW1pdCgnZXJyb3InLCBlNDA0KCdubyBzdWNoIGZpbGUgYXZhaWxhYmxlJykpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RyZWFtLmVtaXQoJ2Vycm9yJywgZXJyKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJlYWRUYXJiYWxsU3RyZWFtLm9uKCdjb250ZW50LWxlbmd0aCcsIGZ1bmN0aW9uIChjb250ZW50KTogdm9pZCB7XG4gICAgICBzdHJlYW0uZW1pdCgnY29udGVudC1sZW5ndGgnLCBjb250ZW50KTtcbiAgICB9KTtcblxuICAgIHJlYWRUYXJiYWxsU3RyZWFtLm9uKCdvcGVuJywgZnVuY3Rpb24gKCk6IHZvaWQge1xuICAgICAgLy8gcmUtZW1pdHRpbmcgb3BlbiBiZWNhdXNlIGl0J3MgaGFuZGxlZCBpbiBzdG9yYWdlLmpzXG4gICAgICBzdHJlYW0uZW1pdCgnb3BlbicpO1xuICAgICAgcmVhZFRhcmJhbGxTdHJlYW0ucGlwZShzdHJlYW0pO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHN0cmVhbTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZSBhIHBhY2thZ2UgYnkgbmFtZS5cbiAgICogQHBhcmFtIHsqfSBuYW1lXG4gICAqIEBwYXJhbSB7Kn0gY2FsbGJhY2tcbiAgICogQHJldHVybiB7RnVuY3Rpb259XG4gICAqL1xuICBwdWJsaWMgZ2V0UGFja2FnZU1ldGFkYXRhKG5hbWU6IHN0cmluZywgY2FsbGJhY2s6IENhbGxiYWNrID0gKCk6IHZvaWQgPT4ge30pOiB2b2lkIHtcbiAgICBjb25zdCBzdG9yYWdlOiBJUGFja2FnZVN0b3JhZ2UgPSB0aGlzLl9nZXRMb2NhbFN0b3JhZ2UobmFtZSk7XG4gICAgaWYgKF8uaXNOaWwoc3RvcmFnZSkpIHtcbiAgICAgIHJldHVybiBjYWxsYmFjayhFcnJvckNvZGUuZ2V0Tm90Rm91bmQoKSk7XG4gICAgfVxuXG4gICAgdGhpcy5fcmVhZFBhY2thZ2UobmFtZSwgc3RvcmFnZSwgY2FsbGJhY2spO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlYXJjaCBhIGxvY2FsIHBhY2thZ2UuXG4gICAqIEBwYXJhbSB7Kn0gc3RhcnRLZXlcbiAgICogQHBhcmFtIHsqfSBvcHRpb25zXG4gICAqIEByZXR1cm4ge0Z1bmN0aW9ufVxuICAgKi9cbiAgcHVibGljIHNlYXJjaChzdGFydEtleTogc3RyaW5nLCBvcHRpb25zOiBhbnkpOiBJUmVhZFRhcmJhbGwge1xuICAgIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkVGFyYmFsbCh7IG9iamVjdE1vZGU6IHRydWUgfSk7XG5cbiAgICB0aGlzLl9zZWFyY2hFYWNoUGFja2FnZShcbiAgICAgIChpdGVtOiBQYWNrYWdlLCBjYjogQ2FsbGJhY2tBY3Rpb24pOiB2b2lkID0+IHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBpZiAoaXRlbS50aW1lID4gcGFyc2VJbnQoc3RhcnRLZXksIDEwKSkge1xuICAgICAgICAgIHRoaXMuZ2V0UGFja2FnZU1ldGFkYXRhKGl0ZW0ubmFtZSwgKGVycjogVmVyZGFjY2lvRXJyb3IsIGRhdGE6IFBhY2thZ2UpOiB2b2lkID0+IHtcbiAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGNiKGVycik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIGNvbnN0IHRpbWUgPSBuZXcgRGF0ZShpdGVtLnRpbWUpLnRvSVNPU3RyaW5nKCk7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBwcmVwYXJlU2VhcmNoUGFja2FnZShkYXRhLCB0aW1lKTtcbiAgICAgICAgICAgIGlmIChfLmlzTmlsKHJlc3VsdCkgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgIHN0cmVhbS5wdXNoKHJlc3VsdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYihudWxsKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjYihudWxsKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGZ1bmN0aW9uIG9uRW5kKGVycik6IHZvaWQge1xuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgc3RyZWFtLmVtaXQoJ2Vycm9yJywgZXJyKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgc3RyZWFtLmVuZCgpO1xuICAgICAgfVxuICAgICk7XG5cbiAgICByZXR1cm4gc3RyZWFtO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlIGEgd3JhcHBlciB0aGF0IHByb3ZpZGUgYWNjZXNzIHRvIHRoZSBwYWNrYWdlIGxvY2F0aW9uLlxuICAgKiBAcGFyYW0ge09iamVjdH0gcGtnTmFtZSBwYWNrYWdlIG5hbWUuXG4gICAqIEByZXR1cm4ge09iamVjdH1cbiAgICovXG4gIHByaXZhdGUgX2dldExvY2FsU3RvcmFnZShwa2dOYW1lOiBzdHJpbmcpOiBJUGFja2FnZVN0b3JhZ2Uge1xuICAgIHJldHVybiB0aGlzLnN0b3JhZ2VQbHVnaW4uZ2V0UGFja2FnZVN0b3JhZ2UocGtnTmFtZSk7XG4gIH1cblxuICAvKipcbiAgICogUmVhZCBhIGpzb24gZmlsZSBmcm9tIHN0b3JhZ2UuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBzdG9yYWdlXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrXG4gICAqL1xuICBwcml2YXRlIF9yZWFkUGFja2FnZShuYW1lOiBzdHJpbmcsIHN0b3JhZ2U6IGFueSwgY2FsbGJhY2s6IENhbGxiYWNrKTogdm9pZCB7XG4gICAgc3RvcmFnZS5yZWFkUGFja2FnZShuYW1lLCAoZXJyLCByZXN1bHQpOiB2b2lkID0+IHtcbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgaWYgKGVyci5jb2RlID09PSBTVE9SQUdFLk5PX1NVQ0hfRklMRV9FUlJPUiB8fCBlcnIuY29kZSA9PT0gSFRUUF9TVEFUVVMuTk9UX0ZPVU5EKSB7XG4gICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKEVycm9yQ29kZS5nZXROb3RGb3VuZCgpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY2FsbGJhY2sodGhpcy5faW50ZXJuYWxFcnJvcihlcnIsIFNUT1JBR0UuUEFDS0FHRV9GSUxFX05BTUUsICdlcnJvciByZWFkaW5nJykpO1xuICAgICAgfVxuXG4gICAgICBjYWxsYmFjayhlcnIsIG5vcm1hbGl6ZVBhY2thZ2UocmVzdWx0KSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogV2Fsa3MgdGhyb3VnaCBlYWNoIHBhY2thZ2UgYW5kIGNhbGxzIGBvbl9wYWNrYWdlYCBvbiB0aGVtLlxuICAgKiBAcGFyYW0geyp9IG9uUGFja2FnZVxuICAgKiBAcGFyYW0geyp9IG9uRW5kXG4gICAqL1xuICBwcml2YXRlIF9zZWFyY2hFYWNoUGFja2FnZShvblBhY2thZ2U6IG9uU2VhcmNoUGFja2FnZSwgb25FbmQ6IG9uRW5kU2VhcmNoUGFja2FnZSk6IHZvaWQge1xuICAgIC8vIHNhdmUgd2FpdCB3aGV0aGVyIHBsdWdpbiBzdGlsbCBkbyBub3Qgc3VwcG9ydCBzZWFyY2ggZnVuY3Rpb25hbGl0eVxuICAgIGlmIChfLmlzTmlsKHRoaXMuc3RvcmFnZVBsdWdpbi5zZWFyY2gpKSB7XG4gICAgICB0aGlzLmxvZ2dlci53YXJuKCdwbHVnaW4gc2VhcmNoIG5vdCBpbXBsZW1lbnRlZCB5ZXQnKTtcbiAgICAgIG9uRW5kKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3RvcmFnZVBsdWdpbi5zZWFyY2gob25QYWNrYWdlLCBvbkVuZCwgdmFsaWRhdGVOYW1lKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmUgZWl0aGVyIGEgcHJldmlvdXMgY3JlYXRlZCBsb2NhbCBwYWNrYWdlIG9yIGEgYm9pbGVycGxhdGUuXG4gICAqIEBwYXJhbSB7Kn0gcGtnTmFtZVxuICAgKiBAcGFyYW0geyp9IGNhbGxiYWNrXG4gICAqIEByZXR1cm4ge0Z1bmN0aW9ufVxuICAgKi9cbiAgcHJpdmF0ZSBfcmVhZENyZWF0ZVBhY2thZ2UocGtnTmFtZTogc3RyaW5nLCBjYWxsYmFjazogQ2FsbGJhY2spOiB2b2lkIHtcbiAgICBjb25zdCBzdG9yYWdlOiBhbnkgPSB0aGlzLl9nZXRMb2NhbFN0b3JhZ2UocGtnTmFtZSk7XG4gICAgaWYgKF8uaXNOaWwoc3RvcmFnZSkpIHtcbiAgICAgIHRoaXMuX2NyZWF0ZU5ld1BhY2thZ2UocGtnTmFtZSwgY2FsbGJhY2spO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHN0b3JhZ2UucmVhZFBhY2thZ2UocGtnTmFtZSwgKGVyciwgZGF0YSk6IHZvaWQgPT4ge1xuICAgICAgLy8gVE9ETzogcmFjZSBjb25kaXRpb25cbiAgICAgIGlmIChfLmlzTmlsKGVycikgPT09IGZhbHNlKSB7XG4gICAgICAgIGlmIChlcnIuY29kZSA9PT0gU1RPUkFHRS5OT19TVUNIX0ZJTEVfRVJST1IgfHwgZXJyLmNvZGUgPT09IEhUVFBfU1RBVFVTLk5PVF9GT1VORCkge1xuICAgICAgICAgIGRhdGEgPSBnZW5lcmF0ZVBhY2thZ2VUZW1wbGF0ZShwa2dOYW1lKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gY2FsbGJhY2sodGhpcy5faW50ZXJuYWxFcnJvcihlcnIsIFNUT1JBR0UuUEFDS0FHRV9GSUxFX05BTUUsICdlcnJvciByZWFkaW5nJykpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNhbGxiYWNrKG51bGwsIG5vcm1hbGl6ZVBhY2thZ2UoZGF0YSkpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfY3JlYXRlTmV3UGFja2FnZShuYW1lOiBzdHJpbmcsIGNhbGxiYWNrOiBDYWxsYmFjayk6IENhbGxiYWNrIHtcbiAgICByZXR1cm4gY2FsbGJhY2sobnVsbCwgbm9ybWFsaXplUGFja2FnZShnZW5lcmF0ZVBhY2thZ2VUZW1wbGF0ZShuYW1lKSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSBpbnRlcm5hbCBlcnJvclxuICAgKiBAcGFyYW0geyp9IGVyclxuICAgKiBAcGFyYW0geyp9IGZpbGVcbiAgICogQHBhcmFtIHsqfSBtZXNzYWdlXG4gICAqIEByZXR1cm4ge09iamVjdH0gRXJyb3IgaW5zdGFuY2VcbiAgICovXG4gIHByaXZhdGUgX2ludGVybmFsRXJyb3IoZXJyOiBzdHJpbmcsIGZpbGU6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nKTogVmVyZGFjY2lvRXJyb3Ige1xuICAgIHRoaXMubG9nZ2VyLmVycm9yKHsgZXJyOiBlcnIsIGZpbGU6IGZpbGUgfSwgYCR7bWVzc2FnZX0gIEB7ZmlsZX06IEB7IWVyci5tZXNzYWdlfWApO1xuXG4gICAgcmV0dXJuIEVycm9yQ29kZS5nZXRJbnRlcm5hbEVycm9yKCk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHsqfSBuYW1lIHBhY2thZ2UgbmFtZVxuICAgKiBAcGFyYW0geyp9IHVwZGF0ZUhhbmRsZXIgZnVuY3Rpb24ocGFja2FnZSwgY2IpIC0gdXBkYXRlIGZ1bmN0aW9uXG4gICAqIEBwYXJhbSB7Kn0gY2FsbGJhY2sgY2FsbGJhY2sgdGhhdCBnZXRzIGludm9rZWQgYWZ0ZXIgaXQncyBhbGwgdXBkYXRlZFxuICAgKiBAcmV0dXJuIHtGdW5jdGlvbn1cbiAgICovXG4gIHByaXZhdGUgX3VwZGF0ZVBhY2thZ2UobmFtZTogc3RyaW5nLCB1cGRhdGVIYW5kbGVyOiBTdG9yYWdlVXBkYXRlQ2FsbGJhY2ssIGNhbGxiYWNrOiBDYWxsYmFja0FjdGlvbik6IHZvaWQge1xuICAgIGNvbnN0IHN0b3JhZ2U6IElQYWNrYWdlU3RvcmFnZSA9IHRoaXMuX2dldExvY2FsU3RvcmFnZShuYW1lKTtcblxuICAgIGlmICghc3RvcmFnZSkge1xuICAgICAgcmV0dXJuIGNhbGxiYWNrKEVycm9yQ29kZS5nZXROb3RGb3VuZCgpKTtcbiAgICB9XG5cbiAgICBzdG9yYWdlLnVwZGF0ZVBhY2thZ2UobmFtZSwgdXBkYXRlSGFuZGxlciwgdGhpcy5fd3JpdGVQYWNrYWdlLmJpbmQodGhpcyksIG5vcm1hbGl6ZVBhY2thZ2UsIGNhbGxiYWNrKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgdGhlIHJldmlzaW9uIChfcmV2KSBzdHJpbmcgZm9yIGEgcGFja2FnZS5cbiAgICogQHBhcmFtIHsqfSBuYW1lXG4gICAqIEBwYXJhbSB7Kn0ganNvblxuICAgKiBAcGFyYW0geyp9IGNhbGxiYWNrXG4gICAqIEByZXR1cm4ge0Z1bmN0aW9ufVxuICAgKi9cbiAgcHJpdmF0ZSBfd3JpdGVQYWNrYWdlKG5hbWU6IHN0cmluZywganNvbjogUGFja2FnZSwgY2FsbGJhY2s6IENhbGxiYWNrKTogdm9pZCB7XG4gICAgY29uc3Qgc3RvcmFnZTogYW55ID0gdGhpcy5fZ2V0TG9jYWxTdG9yYWdlKG5hbWUpO1xuICAgIGlmIChfLmlzTmlsKHN0b3JhZ2UpKSB7XG4gICAgICByZXR1cm4gY2FsbGJhY2soKTtcbiAgICB9XG4gICAgc3RvcmFnZS5zYXZlUGFja2FnZShuYW1lLCB0aGlzLl9zZXREZWZhdWx0UmV2aXNpb24oanNvbiksIGNhbGxiYWNrKTtcbiAgfVxuXG4gIHByaXZhdGUgX3NldERlZmF1bHRSZXZpc2lvbihqc29uOiBQYWNrYWdlKTogUGFja2FnZSB7XG4gICAgLy8gY2FsY3VsYXRlIHJldmlzaW9uIGZyb20gY291Y2ggZGJcbiAgICBpZiAoXy5pc1N0cmluZyhqc29uLl9yZXYpID09PSBmYWxzZSkge1xuICAgICAganNvbi5fcmV2ID0gU1RPUkFHRS5ERUZBVUxUX1JFVklTSU9OO1xuICAgIH1cblxuICAgIC8vIHRoaXMgaXMgaW50ZW5kZWQgaW4gZGVidWcgbW9kZSB3ZSBkbyBub3Qgd2FudCBtb2RpZnkgdGhlIHN0b3JlIHJldmlzaW9uXG4gICAgaWYgKF8uaXNOaWwodGhpcy5jb25maWcuX2RlYnVnKSkge1xuICAgICAganNvbi5fcmV2ID0gZ2VuZXJhdGVSZXZpc2lvbihqc29uLl9yZXYpO1xuICAgIH1cblxuICAgIHJldHVybiBqc29uO1xuICB9XG5cbiAgcHJpdmF0ZSBfZGVsZXRlQXR0YWNobWVudHMoc3RvcmFnZTogYW55LCBhdHRhY2htZW50czogc3RyaW5nW10sIGNhbGxiYWNrOiBDYWxsYmFjayk6IHZvaWQge1xuICAgIGRlYnVnKCdbc3RvcmFnZS9fZGVsZXRlQXR0YWNobWVudHNdIGRlbGV0ZSBhdHRhY2htZW50cyB0b3RhbDogJW8nLCBhdHRhY2htZW50cz8ubGVuZ3RoKTtcbiAgICBjb25zdCB1bmxpbmtOZXh0ID0gZnVuY3Rpb24gKGNiKTogdm9pZCB7XG4gICAgICBpZiAoXy5pc0VtcHR5KGF0dGFjaG1lbnRzKSkge1xuICAgICAgICByZXR1cm4gY2IoKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgYXR0YWNobWVudCA9IGF0dGFjaG1lbnRzLnNoaWZ0KCk7XG4gICAgICBzdG9yYWdlLmRlbGV0ZVBhY2thZ2UoYXR0YWNobWVudCwgZnVuY3Rpb24gKCk6IHZvaWQge1xuICAgICAgICB1bmxpbmtOZXh0KGNiKTtcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICB1bmxpbmtOZXh0KGZ1bmN0aW9uICgpOiB2b2lkIHtcbiAgICAgIC8vIHRyeSB0byB1bmxpbmsgdGhlIGRpcmVjdG9yeSwgYnV0IGlnbm9yZSBlcnJvcnMgYmVjYXVzZSBpdCBjYW4gZmFpbFxuICAgICAgc3RvcmFnZS5yZW1vdmVQYWNrYWdlKGZ1bmN0aW9uIChlcnIpOiB2b2lkIHtcbiAgICAgICAgY2FsbGJhY2soZXJyKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuc3VyZSB0aGUgZGlzdCBmaWxlIHJlbWFpbnMgYXMgdGhlIHNhbWUgcHJvdG9jb2xcbiAgICogQHBhcmFtIHtPYmplY3R9IGhhc2ggbWV0YWRhdGFcbiAgICogQHBhcmFtIHtTdHJpbmd9IHVwTGlua0tleSByZWdpc3RyeSBrZXlcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgX3VwZGF0ZVVwbGlua1RvUmVtb3RlUHJvdG9jb2woaGFzaDogRGlzdEZpbGUsIHVwTGlua0tleTogc3RyaW5nKTogdm9pZCB7XG4gICAgLy8gaWYgd2UgZ290IHRoaXMgaW5mb3JtYXRpb24gZnJvbSBhIGtub3duIHJlZ2lzdHJ5LFxuICAgIC8vIHVzZSB0aGUgc2FtZSBwcm90b2NvbCBmb3IgdGhlIHRhcmJhbGxcbiAgICAvL1xuICAgIC8vIHNlZSBodHRwczovL2dpdGh1Yi5jb20vcmxpZHdrYS9zaW5vcGlhL2lzc3Vlcy8xNjZcbiAgICBjb25zdCB0YXJiYWxsVXJsOiBhbnkgPSBVcmxOb2RlLnBhcnNlKGhhc2gudXJsKTtcbiAgICBjb25zdCB1cGxpbmtVcmw6IGFueSA9IFVybE5vZGUucGFyc2UodGhpcy5jb25maWcudXBsaW5rc1t1cExpbmtLZXldLnVybCk7XG5cbiAgICBpZiAodXBsaW5rVXJsLmhvc3QgPT09IHRhcmJhbGxVcmwuaG9zdCkge1xuICAgICAgdGFyYmFsbFVybC5wcm90b2NvbCA9IHVwbGlua1VybC5wcm90b2NvbDtcbiAgICAgIGhhc2gucmVnaXN0cnkgPSB1cExpbmtLZXk7XG4gICAgICBoYXNoLnVybCA9IFVybE5vZGUuZm9ybWF0KHRhcmJhbGxVcmwpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRTZWNyZXQoY29uZmlnOiBDb25maWcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBzZWNyZXRLZXkgPSBhd2FpdCB0aGlzLnN0b3JhZ2VQbHVnaW4uZ2V0U2VjcmV0KCk7XG5cbiAgICByZXR1cm4gdGhpcy5zdG9yYWdlUGx1Z2luLnNldFNlY3JldChjb25maWcuY2hlY2tTZWNyZXRLZXkoc2VjcmV0S2V5KSk7XG4gIH1cblxuICBwcml2YXRlIF9sb2FkU3RvcmFnZShjb25maWc6IENvbmZpZywgbG9nZ2VyOiBMb2dnZXIpOiBJUGx1Z2luU3RvcmFnZTxDb25maWc+IHtcbiAgICBjb25zdCBTdG9yYWdlID0gdGhpcy5fbG9hZFN0b3JlUGx1Z2luKCk7XG5cbiAgICBpZiAoXy5pc05pbChTdG9yYWdlKSkge1xuICAgICAgYXNzZXJ0KHRoaXMuY29uZmlnLnN0b3JhZ2UsICdDT05GSUc6IHN0b3JhZ2UgcGF0aCBub3QgZGVmaW5lZCcpO1xuICAgICAgcmV0dXJuIG5ldyBMb2NhbERhdGFiYXNlKHRoaXMuY29uZmlnLCBsb2dnZXIpO1xuICAgIH1cbiAgICByZXR1cm4gU3RvcmFnZSBhcyBJUGx1Z2luU3RvcmFnZTxDb25maWc+O1xuICB9XG5cbiAgcHJpdmF0ZSBfbG9hZFN0b3JlUGx1Z2luKCk6IElQbHVnaW5TdG9yYWdlPENvbmZpZz4gfCB2b2lkIHtcbiAgICBjb25zdCBwbHVnaW5fcGFyYW1zID0ge1xuICAgICAgY29uZmlnOiB0aGlzLmNvbmZpZyxcbiAgICAgIGxvZ2dlcjogdGhpcy5sb2dnZXIsXG4gICAgfTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtbGVuXG4gICAgY29uc3QgcGx1Z2luczogSVBsdWdpblN0b3JhZ2U8Q29uZmlnPltdID0gbG9hZFBsdWdpbjxJUGx1Z2luU3RvcmFnZTxDb25maWc+PihcbiAgICAgIHRoaXMuY29uZmlnLFxuICAgICAgdGhpcy5jb25maWcuc3RvcmUsXG4gICAgICBwbHVnaW5fcGFyYW1zLFxuICAgICAgKHBsdWdpbik6IElQbHVnaW5TdG9yYWdlPENvbmZpZz4gPT4ge1xuICAgICAgICByZXR1cm4gcGx1Z2luLmdldFBhY2thZ2VTdG9yYWdlO1xuICAgICAgfVxuICAgICk7XG5cbiAgICByZXR1cm4gXy5oZWFkKHBsdWdpbnMpO1xuICB9XG5cbiAgcHVibGljIHNhdmVUb2tlbih0b2tlbjogVG9rZW4pOiBQcm9taXNlPGFueT4ge1xuICAgIGlmIChfLmlzRnVuY3Rpb24odGhpcy5zdG9yYWdlUGx1Z2luLnNhdmVUb2tlbikgPT09IGZhbHNlKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoRXJyb3JDb2RlLmdldENvZGUoSFRUUF9TVEFUVVMuU0VSVklDRV9VTkFWQUlMQUJMRSwgU1VQUE9SVF9FUlJPUlMuUExVR0lOX01JU1NJTkdfSU5URVJGQUNFKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RvcmFnZVBsdWdpbi5zYXZlVG9rZW4odG9rZW4pO1xuICB9XG5cbiAgcHVibGljIGRlbGV0ZVRva2VuKHVzZXI6IHN0cmluZywgdG9rZW5LZXk6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gICAgaWYgKF8uaXNGdW5jdGlvbih0aGlzLnN0b3JhZ2VQbHVnaW4uZGVsZXRlVG9rZW4pID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KEVycm9yQ29kZS5nZXRDb2RlKEhUVFBfU1RBVFVTLlNFUlZJQ0VfVU5BVkFJTEFCTEUsIFNVUFBPUlRfRVJST1JTLlBMVUdJTl9NSVNTSU5HX0lOVEVSRkFDRSkpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0b3JhZ2VQbHVnaW4uZGVsZXRlVG9rZW4odXNlciwgdG9rZW5LZXkpO1xuICB9XG5cbiAgcHVibGljIHJlYWRUb2tlbnMoZmlsdGVyOiBUb2tlbkZpbHRlcik6IFByb21pc2U8VG9rZW5bXT4ge1xuICAgIGlmIChfLmlzRnVuY3Rpb24odGhpcy5zdG9yYWdlUGx1Z2luLnJlYWRUb2tlbnMpID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KEVycm9yQ29kZS5nZXRDb2RlKEhUVFBfU1RBVFVTLlNFUlZJQ0VfVU5BVkFJTEFCTEUsIFNVUFBPUlRfRVJST1JTLlBMVUdJTl9NSVNTSU5HX0lOVEVSRkFDRSkpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0b3JhZ2VQbHVnaW4ucmVhZFRva2VucyhmaWx0ZXIpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IExvY2FsU3RvcmFnZTtcbiJdfQ==
|
|
899
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvbG9jYWwtc3RvcmFnZS50cyJdLCJuYW1lcyI6WyJkZWJ1ZyIsIkxvY2FsU3RvcmFnZSIsImNvbnN0cnVjdG9yIiwiY29uZmlnIiwibG9nZ2VyIiwic3RvcmFnZVBsdWdpbiIsIl9sb2FkU3RvcmFnZSIsImFkZFBhY2thZ2UiLCJuYW1lIiwicGtnIiwiY2FsbGJhY2siLCJzdG9yYWdlIiwiX2dldExvY2FsU3RvcmFnZSIsIl8iLCJpc05pbCIsIkVycm9yQ29kZSIsImdldE5vdEZvdW5kIiwiY3JlYXRlUGFja2FnZSIsImVyciIsImlzTnVsbCIsImNvZGUiLCJTVE9SQUdFIiwiRklMRV9FWElTVF9FUlJPUiIsIkhUVFBfU1RBVFVTIiwiQ09ORkxJQ1QiLCJnZXRDb25mbGljdCIsImxhdGVzdCIsInZlcnNpb25zIiwicmVtb3ZlUGFja2FnZSIsInJlYWRQYWNrYWdlIiwiZGF0YSIsIk5PX1NVQ0hfRklMRV9FUlJPUiIsIk5PVF9GT1VORCIsInJlbW92ZSIsInJlbW92ZUZhaWxlZCIsImVycm9yIiwiZ2V0QmFkRGF0YSIsIm1lc3NhZ2UiLCJkZWxldGVQYWNrYWdlIiwiUEFDS0FHRV9GSUxFX05BTUUiLCJhdHRhY2htZW50cyIsIk9iamVjdCIsImtleXMiLCJfYXR0YWNobWVudHMiLCJfZGVsZXRlQXR0YWNobWVudHMiLCJ1cGRhdGVWZXJzaW9ucyIsInBhY2thZ2VJbmZvIiwiX3JlYWRDcmVhdGVQYWNrYWdlIiwicGFja2FnZUxvY2FsSnNvbiIsImNoYW5nZSIsInJlYWRtZSIsInZlcnNpb25JZCIsInZlcnNpb24iLCJjb250cmlidXRvcnMiLCJkaXN0IiwidGFyYmFsbCIsInVybE9iamVjdCIsIlVybE5vZGUiLCJwYXJzZSIsImZpbGVuYW1lIiwicGF0aG5hbWUiLCJyZXBsYWNlIiwiX2Rpc3RmaWxlcyIsImhhc2giLCJ1cmwiLCJzaGEiLCJzaGFzdW0iLCJ1cExpbmsiLCJTeW1ib2wiLCJmb3IiLCJfdXBkYXRlVXBsaW5rVG9SZW1vdGVQcm90b2NvbCIsInRhZyIsIkRJU1RfVEFHUyIsInVwIiwiX3VwbGlua3MiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJuZWVkX2NoYW5nZSIsImV0YWciLCJmZXRjaGVkIiwiaXNFcXVhbCIsInRpbWUiLCJfd3JpdGVQYWNrYWdlIiwiYWRkVmVyc2lvbiIsIm1ldGFkYXRhIiwiX3VwZGF0ZVBhY2thZ2UiLCJjYiIsImhhc1ZlcnNpb24iLCJpc1N0cmluZyIsImVycm9yTWVzc2FnZSIsImdldEJhZFJlcXVlc3QiLCJjdXJyZW50RGF0ZSIsIkRhdGUiLCJ0b0lTT1N0cmluZyIsImNyZWF0ZWQiLCJhZGQiLCJhZGRGYWlsZWQiLCJtZXJnZVRhZ3MiLCJwa2dOYW1lIiwidGFncyIsIl9nZXRWZXJzaW9uTm90Rm91bmQiLCJBUElfRVJST1IiLCJWRVJTSU9OX05PVF9FWElTVCIsIl9nZXRGaWxlTm90QXZhaWxhYmxlIiwiY2hhbmdlUGFja2FnZSIsImluY29taW5nUGtnIiwicmV2aXNpb24iLCJsb2NhbERhdGEiLCJpbmNvbWluZ1ZlcnNpb24iLCJpbmZvIiwiZmlsZSIsImluY29taW5nRGVwcmVjYXRlZCIsImRlcHJlY2F0ZWQiLCJtb2RpZmllZCIsIlVTRVJTIiwicmVtb3ZlVGFyYmFsbCIsImFkZFRhcmJhbGwiLCJsZW5ndGgiLCJzaGFPbmVIYXNoIiwidXBsb2FkU3RyZWFtIiwiVXBsb2FkVGFyYmFsbCIsIl90cmFuc2Zvcm0iLCJhYm9ydCIsImRvbmUiLCJhcmdzIiwidXBkYXRlIiwiYXBwbGllZERhdGEiLCJhcHBseSIsInByb2Nlc3MiLCJuZXh0VGljayIsImVtaXQiLCJnZXRGb3JiaWRkZW4iLCJ3cml0ZVN0cmVhbSIsIndyaXRlVGFyYmFsbCIsIm9uIiwiZ2V0UGFja2FnZU1ldGFkYXRhIiwiX2VyciIsIl9yZXMiLCJ1cGRhdGVyIiwiZGlnZXN0IiwicGlwZSIsImdldFRhcmJhbGwiLCJfY3JlYXRlRmFpbHVyZVN0cmVhbVJlc3BvbnNlIiwiX3N0cmVhbVN1Y2Nlc3NSZWFkVGFyQmFsbCIsInN0cmVhbSIsIlJlYWRUYXJiYWxsIiwicmVhZFRhcmJhbGxTdHJlYW0iLCJyZWFkVGFyYmFsbCIsImU0MDQiLCJjb250ZW50IiwiX3JlYWRQYWNrYWdlIiwic2VhcmNoIiwic3RhcnRLZXkiLCJvcHRpb25zIiwib2JqZWN0TW9kZSIsIl9zZWFyY2hFYWNoUGFja2FnZSIsIml0ZW0iLCJwYXJzZUludCIsInJlc3VsdCIsInB1c2giLCJvbkVuZCIsImVuZCIsImdldFBhY2thZ2VTdG9yYWdlIiwiX2ludGVybmFsRXJyb3IiLCJvblBhY2thZ2UiLCJ3YXJuIiwidmFsaWRhdGVOYW1lIiwiX2NyZWF0ZU5ld1BhY2thZ2UiLCJnZXRJbnRlcm5hbEVycm9yIiwidXBkYXRlSGFuZGxlciIsInVwZGF0ZVBhY2thZ2UiLCJiaW5kIiwibm9ybWFsaXplUGFja2FnZSIsImpzb24iLCJzYXZlUGFja2FnZSIsIl9zZXREZWZhdWx0UmV2aXNpb24iLCJfcmV2IiwiREVGQVVMVF9SRVZJU0lPTiIsIl9kZWJ1ZyIsInVubGlua05leHQiLCJpc0VtcHR5IiwiYXR0YWNobWVudCIsInNoaWZ0IiwidXBMaW5rS2V5IiwidGFyYmFsbFVybCIsInVwbGlua1VybCIsInVwbGlua3MiLCJob3N0IiwicHJvdG9jb2wiLCJyZWdpc3RyeSIsImZvcm1hdCIsImdldFNlY3JldCIsInNlY3JldEtleSIsInNldFNlY3JldCIsImNoZWNrU2VjcmV0S2V5IiwiU3RvcmFnZSIsIl9sb2FkU3RvcmVQbHVnaW4iLCJMb2NhbERhdGFiYXNlIiwicGx1Z2luX3BhcmFtcyIsInBsdWdpbnMiLCJzdG9yZSIsInBsdWdpbiIsImhlYWQiLCJzYXZlVG9rZW4iLCJ0b2tlbiIsImlzRnVuY3Rpb24iLCJQcm9taXNlIiwicmVqZWN0IiwiZ2V0Q29kZSIsIlNFUlZJQ0VfVU5BVkFJTEFCTEUiLCJTVVBQT1JUX0VSUk9SUyIsIlBMVUdJTl9NSVNTSU5HX0lOVEVSRkFDRSIsImRlbGV0ZVRva2VuIiwidXNlciIsInRva2VuS2V5IiwicmVh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WTJMLG1CQUE5QixFQUFtREMsMEJBQWVDLHdCQUFsRSxDQUFmLENBQVA7QUFDRDs7QUFFRCxXQUFPLEtBQUsvTSxhQUFMLENBQW1CdU0sU0FBbkIsQ0FBNkJDLEtBQTdCLENBQVA7QUFDRDs7QUFFTVEsRUFBQUEsV0FBVyxDQUFDQyxJQUFELEVBQWVDLFFBQWYsRUFBK0M7QUFDL0QsUUFBSTFNLGdCQUFFaU0sVUFBRixDQUFhLEtBQUt6TSxhQUFMLENBQW1CZ04sV0FBaEMsTUFBaUQsS0FBckQsRUFBNEQ7QUFDMUQsYUFBT04sT0FBTyxDQUFDQyxNQUFSLENBQWVqTSxpQkFBVWtNLE9BQVYsQ0FBa0IxTCx1QkFBWTJMLG1CQUE5QixFQUFtREMsMEJBQWVDLHdCQUFsRSxDQUFmLENBQVA7QUFDRDs7QUFFRCxXQUFPLEtBQUsvTSxhQUFMLENBQW1CZ04sV0FBbkIsQ0FBK0JDLElBQS9CLEVBQXFDQyxRQUFyQyxDQUFQO0FBQ0Q7O0FBRU1DLEVBQUFBLFVBQVUsQ0FBQ0MsTUFBRCxFQUF3QztBQUN2RCxRQUFJNU0sZ0JBQUVpTSxVQUFGLENBQWEsS0FBS3pNLGFBQUwsQ0FBbUJtTixVQUFoQyxNQUFnRCxLQUFwRCxFQUEyRDtBQUN6RCxhQUFPVCxPQUFPLENBQUNDLE1BQVIsQ0FBZWpNLGlCQUFVa00sT0FBVixDQUFrQjFMLHVCQUFZMkwsbUJBQTlCLEVBQW1EQywwQkFBZUMsd0JBQWxFLENBQWYsQ0FBUDtBQUNEOztBQUVELFdBQU8sS0FBSy9NLGFBQUwsQ0FBbUJtTixVQUFuQixDQUE4QkMsTUFBOUIsQ0FBUDtBQUNEOztBQWwwQm9DOztlQXEwQnhCeE4sWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCBidWlsRGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBVcmxOb2RlIGZyb20gJ3VybCc7XG5cbmltcG9ydCB7IFZlcmRhY2Npb0Vycm9yIH0gZnJvbSAnQHZlcmRhY2Npby9jb21tb25zLWFwaSc7XG5pbXBvcnQgTG9jYWxEYXRhYmFzZSBmcm9tICdAdmVyZGFjY2lvL2xvY2FsLXN0b3JhZ2UnO1xuaW1wb3J0IHsgUmVhZFRhcmJhbGwsIFVwbG9hZFRhcmJhbGwgfSBmcm9tICdAdmVyZGFjY2lvL3N0cmVhbXMnO1xuaW1wb3J0IHtcbiAgQXV0aG9yLFxuICBDYWxsYmFjayxcbiAgQ2FsbGJhY2tBY3Rpb24sXG4gIENvbmZpZyxcbiAgRGlzdEZpbGUsXG4gIElQYWNrYWdlU3RvcmFnZSxcbiAgSVBsdWdpblN0b3JhZ2UsXG4gIElSZWFkVGFyYmFsbCxcbiAgSVVwbG9hZFRhcmJhbGwsXG4gIExvZ2dlcixcbiAgTWVyZ2VUYWdzLFxuICBQYWNrYWdlLFxuICBTdG9yYWdlVXBkYXRlQ2FsbGJhY2ssXG4gIFRva2VuLFxuICBUb2tlbkZpbHRlcixcbiAgVmVyc2lvbixcbiAgb25FbmRTZWFyY2hQYWNrYWdlLFxuICBvblNlYXJjaFBhY2thZ2UsXG59IGZyb20gJ0B2ZXJkYWNjaW8vdHlwZXMnO1xuXG5pbXBvcnQgeyBJU3RvcmFnZSwgU3RyaW5nVmFsdWUgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgbG9hZFBsdWdpbiBmcm9tICcuLi9saWIvcGx1Z2luLWxvYWRlcic7XG5pbXBvcnQgeyBBUElfRVJST1IsIERJU1RfVEFHUywgSFRUUF9TVEFUVVMsIFNUT1JBR0UsIFNVUFBPUlRfRVJST1JTLCBVU0VSUyB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IGNyZWF0ZVRhcmJhbGxIYXNoIH0gZnJvbSAnLi9jcnlwdG8tdXRpbHMnO1xuaW1wb3J0IHsgY2xlYW5VcFJlYWRtZSwgZ2VuZXJhdGVQYWNrYWdlVGVtcGxhdGUsIGdlbmVyYXRlUmV2aXNpb24sIGdldExhdGVzdFJlYWRtZSwgbm9ybWFsaXplQ29udHJpYnV0b3JzLCBub3JtYWxpemVQYWNrYWdlIH0gZnJvbSAnLi9zdG9yYWdlLXV0aWxzJztcbmltcG9ydCB7IHByZXBhcmVTZWFyY2hQYWNrYWdlIH0gZnJvbSAnLi9zdG9yYWdlLXV0aWxzJztcbmltcG9ydCB7IEVycm9yQ29kZSwgZ2V0TGF0ZXN0VmVyc2lvbiwgaXNPYmplY3QsIHRhZ1ZlcnNpb24sIHZhbGlkYXRlTmFtZSB9IGZyb20gJy4vdXRpbHMnO1xuXG5jb25zdCBkZWJ1ZyA9IGJ1aWxEZWJ1ZygndmVyZGFjY2lvOmxvY2FsLXN0b3JhZ2UnKTtcbi8qKlxuICogSW1wbGVtZW50cyBTdG9yYWdlIGludGVyZmFjZSAoc2FtZSBmb3Igc3RvcmFnZS5qcywgbG9jYWwtc3RvcmFnZS5qcywgdXAtc3RvcmFnZS5qcykuXG4gKi9cbmNsYXNzIExvY2FsU3RvcmFnZSBpbXBsZW1lbnRzIElTdG9yYWdlIHtcbiAgcHVibGljIGNvbmZpZzogQ29uZmlnO1xuICBwdWJsaWMgc3RvcmFnZVBsdWdpbjogSVBsdWdpblN0b3JhZ2U8Q29uZmlnPjtcbiAgcHVibGljIGxvZ2dlcjogTG9nZ2VyO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihjb25maWc6IENvbmZpZywgbG9nZ2VyOiBMb2dnZXIpIHtcbiAgICB0aGlzLmxvZ2dlciA9IGxvZ2dlcjtcbiAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcbiAgICB0aGlzLnN0b3JhZ2VQbHVnaW4gPSB0aGlzLl9sb2FkU3RvcmFnZShjb25maWcsIGxvZ2dlcik7XG4gIH1cblxuICBwdWJsaWMgYWRkUGFja2FnZShuYW1lOiBzdHJpbmcsIHBrZzogUGFja2FnZSwgY2FsbGJhY2s6IENhbGxiYWNrKTogdm9pZCB7XG4gICAgY29uc3Qgc3RvcmFnZTogYW55ID0gdGhpcy5fZ2V0TG9jYWxTdG9yYWdlKG5hbWUpO1xuXG4gICAgaWYgKF8uaXNOaWwoc3RvcmFnZSkpIHtcbiAgICAgIHJldHVybiBjYWxsYmFjayhFcnJvckNvZGUuZ2V0Tm90Rm91bmQoJ3RoaXMgcGFja2FnZSBjYW5ub3QgYmUgYWRkZWQnKSk7XG4gICAgfVxuXG4gICAgc3RvcmFnZS5jcmVhdGVQYWNrYWdlKG5hbWUsIGdlbmVyYXRlUGFja2FnZVRlbXBsYXRlKG5hbWUpLCAoZXJyKSA9PiB7XG4gICAgICAvLyBGSVhNRTogaXQgd2lsbCBiZSBmaXhlZCBoZXJlIGh0dHBzOi8vZ2l0aHViLmNvbS92ZXJkYWNjaW8vdmVyZGFjY2lvL3B1bGwvMTM2MFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgaWYgKF8uaXNOdWxsKGVycikgPT09IGZhbHNlICYmIChlcnIuY29kZSA9PT0gU1RPUkFHRS5GSUxFX0VYSVNUX0VSUk9SIHx8IGVyci5jb2RlID09PSBIVFRQX1NUQVRVUy5DT05GTElDVCkpIHtcbiAgICAgICAgcmV0dXJuIGNhbGxiYWNrKEVycm9yQ29kZS5nZXRDb25mbGljdCgpKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbGF0ZXN0ID0gZ2V0TGF0ZXN0VmVyc2lvbihwa2cpO1xuICAgICAgaWYgKF8uaXNOaWwobGF0ZXN0KSA9PT0gZmFsc2UgJiYgcGtnLnZlcnNpb25zW2xhdGVzdF0pIHtcbiAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG51bGwsIHBrZy52ZXJzaW9uc1tsYXRlc3RdKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNhbGxiYWNrKCk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIHBhY2thZ2UuXG4gICAqIEBwYXJhbSB7Kn0gbmFtZVxuICAgKiBAcGFyYW0geyp9IGNhbGxiYWNrXG4gICAqIEByZXR1cm4ge0Z1bmN0aW9ufVxuICAgKi9cbiAgcHVibGljIHJlbW92ZVBhY2thZ2UobmFtZTogc3RyaW5nLCBjYWxsYmFjazogQ2FsbGJhY2spOiB2b2lkIHtcbiAgICBjb25zdCBzdG9yYWdlOiBhbnkgPSB0aGlzLl9nZXRMb2NhbFN0b3JhZ2UobmFtZSk7XG4gICAgZGVidWcoJ1tzdG9yYWdlXSByZW1vdmluZyBwYWNrYWdlICVvJywgbmFtZSk7XG4gICAgaWYgKF8uaXNOaWwoc3RvcmFnZSkpIHtcbiAgICAgIHJldHVybiBjYWxsYmFjayhFcnJvckNvZGUuZ2V0Tm90Rm91bmQoKSk7XG4gICAgfVxuXG4gICAgc3RvcmFnZS5yZWFkUGFja2FnZShuYW1lLCAoZXJyLCBkYXRhOiBQYWNrYWdlKTogdm9pZCA9PiB7XG4gICAgICBpZiAoXy5pc05pbChlcnIpID09PSBmYWxzZSkge1xuICAgICAgICBpZiAoZXJyLmNvZGUgPT09IFNUT1JBR0UuTk9fU1VDSF9GSUxFX0VSUk9SIHx8IGVyci5jb2RlID09PSBIVFRQX1NUQVRVUy5OT1RfRk9VTkQpIHtcbiAgICAgICAgICByZXR1cm4gY2FsbGJhY2soRXJyb3JDb2RlLmdldE5vdEZvdW5kKCkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjYWxsYmFjayhlcnIpO1xuICAgICAgfVxuXG4gICAgICBkYXRhID0gbm9ybWFsaXplUGFja2FnZShkYXRhKTtcblxuICAgICAgdGhpcy5zdG9yYWdlUGx1Z2luLnJlbW92ZShuYW1lLCAocmVtb3ZlRmFpbGVkOiBFcnJvcik6IHZvaWQgPT4ge1xuICAgICAgICBpZiAocmVtb3ZlRmFpbGVkKSB7XG4gICAgICAgICAgLy8gVGhpcyB3aWxsIGhhcHBlbiB3aGVuIGRhdGFiYXNlIGlzIGxvY2tlZFxuICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKHsgbmFtZSB9LCBgW3N0b3JhZ2UvcmVtb3ZlUGFja2FnZV0gdGhlIGRhdGFiYXNlIGlzIGxvY2tlZCwgcmVtb3ZlZCBoYXMgZmFpbGVkIGZvciBAe25hbWV9YCk7XG4gICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKEVycm9yQ29kZS5nZXRCYWREYXRhKHJlbW92ZUZhaWxlZC5tZXNzYWdlKSk7XG4gICAgICAgIH1cblxuICAgICAgICBzdG9yYWdlLmRlbGV0ZVBhY2thZ2UoU1RPUkFHRS5QQUNLQUdFX0ZJTEVfTkFNRSwgKGVycik6IHZvaWQgPT4ge1xuICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhlcnIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBhdHRhY2htZW50cyA9IE9iamVjdC5rZXlzKGRhdGEuX2F0dGFjaG1lbnRzKTtcblxuICAgICAgICAgIHRoaXMuX2RlbGV0ZUF0dGFjaG1lbnRzKHN0b3JhZ2UsIGF0dGFjaG1lbnRzLCBjYWxsYmFjayk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU3luY2hyb25pemUgcmVtb3RlIHBhY2thZ2UgaW5mbyB3aXRoIHRoZSBsb2NhbCBvbmVcbiAgICogQHBhcmFtIHsqfSBuYW1lXG4gICAqIEBwYXJhbSB7Kn0gcGFja2FnZUluZm9cbiAgICogQHBhcmFtIHsqfSBjYWxsYmFja1xuICAgKi9cbiAgcHVibGljIHVwZGF0ZVZlcnNpb25zKG5hbWU6IHN0cmluZywgcGFja2FnZUluZm86IFBhY2thZ2UsIGNhbGxiYWNrOiBDYWxsYmFjayk6IHZvaWQge1xuICAgIHRoaXMuX3JlYWRDcmVhdGVQYWNrYWdlKG5hbWUsIChlcnIsIHBhY2thZ2VMb2NhbEpzb24pOiB2b2lkID0+IHtcbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGVycik7XG4gICAgICB9XG5cbiAgICAgIGxldCBjaGFuZ2UgPSBmYWxzZTtcbiAgICAgIC8vIHVwZGF0aW5nIHJlYWRtZVxuICAgICAgcGFja2FnZUxvY2FsSnNvbi5yZWFkbWUgPSBnZXRMYXRlc3RSZWFkbWUocGFja2FnZUluZm8pO1xuICAgICAgaWYgKHBhY2thZ2VJbmZvLnJlYWRtZSAhPT0gcGFja2FnZUxvY2FsSnNvbi5yZWFkbWUpIHtcbiAgICAgICAgY2hhbmdlID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGZvciAoY29uc3QgdmVyc2lvbklkIGluIHBhY2thZ2VJbmZvLnZlcnNpb25zKSB7XG4gICAgICAgIGlmIChfLmlzTmlsKHBhY2thZ2VMb2NhbEpzb24udmVyc2lvbnNbdmVyc2lvbklkXSkpIHtcbiAgICAgICAgICBsZXQgdmVyc2lvbiA9IHBhY2thZ2VJbmZvLnZlcnNpb25zW3ZlcnNpb25JZF07XG5cbiAgICAgICAgICAvLyB3ZSBkb24ndCBrZWVwIHJlYWRtZSBmb3IgcGFja2FnZSB2ZXJzaW9ucyxcbiAgICAgICAgICAvLyBvbmx5IG9uZSByZWFkbWUgcGVyIHBhY2thZ2VcbiAgICAgICAgICB2ZXJzaW9uID0gY2xlYW5VcFJlYWRtZSh2ZXJzaW9uKTtcbiAgICAgICAgICB2ZXJzaW9uLmNvbnRyaWJ1dG9ycyA9IG5vcm1hbGl6ZUNvbnRyaWJ1dG9ycyh2ZXJzaW9uLmNvbnRyaWJ1dG9ycyBhcyBBdXRob3JbXSk7XG5cbiAgICAgICAgICBjaGFuZ2UgPSB0cnVlO1xuICAgICAgICAgIHBhY2thZ2VMb2NhbEpzb24udmVyc2lvbnNbdmVyc2lvbklkXSA9IHZlcnNpb247XG5cbiAgICAgICAgICBpZiAodmVyc2lvbi5kaXN0ICYmIHZlcnNpb24uZGlzdC50YXJiYWxsKSB7XG4gICAgICAgICAgICBjb25zdCB1cmxPYmplY3Q6IGFueSA9IFVybE5vZGUucGFyc2UodmVyc2lvbi5kaXN0LnRhcmJhbGwpO1xuICAgICAgICAgICAgY29uc3QgZmlsZW5hbWUgPSB1cmxPYmplY3QucGF0aG5hbWUucmVwbGFjZSgvXi4qXFwvLywgJycpO1xuXG4gICAgICAgICAgICAvLyB3ZSBkbyBOT1Qgb3ZlcndyaXRlIGFueSBleGlzdGluZyByZWNvcmRzXG4gICAgICAgICAgICBpZiAoXy5pc05pbChwYWNrYWdlTG9jYWxKc29uLl9kaXN0ZmlsZXNbZmlsZW5hbWVdKSkge1xuICAgICAgICAgICAgICBjb25zdCBoYXNoOiBEaXN0RmlsZSA9IChwYWNrYWdlTG9jYWxKc29uLl9kaXN0ZmlsZXNbZmlsZW5hbWVdID0ge1xuICAgICAgICAgICAgICAgIHVybDogdmVyc2lvbi5kaXN0LnRhcmJhbGwsXG4gICAgICAgICAgICAgICAgc2hhOiB2ZXJzaW9uLmRpc3Quc2hhc3VtLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgLyogZXNsaW50IHNwYWNlZC1jb21tZW50OiAwICovXG4gICAgICAgICAgICAgIC8vICRGbG93Rml4TWVcbiAgICAgICAgICAgICAgY29uc3QgdXBMaW5rOiBzdHJpbmcgPSB2ZXJzaW9uW1N5bWJvbC5mb3IoJ19fdmVyZGFjY2lvX3VwbGluaycpXTtcblxuICAgICAgICAgICAgICBpZiAoXy5pc05pbCh1cExpbmspID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVVwbGlua1RvUmVtb3RlUHJvdG9jb2woaGFzaCwgdXBMaW5rKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBmb3IgKGNvbnN0IHRhZyBpbiBwYWNrYWdlSW5mb1tESVNUX1RBR1NdKSB7XG4gICAgICAgIGlmICghcGFja2FnZUxvY2FsSnNvbltESVNUX1RBR1NdW3RhZ10gfHwgcGFja2FnZUxvY2FsSnNvbltESVNUX1RBR1NdW3RhZ10gIT09IHBhY2thZ2VJbmZvW0RJU1RfVEFHU11bdGFnXSkge1xuICAgICAgICAgIGNoYW5nZSA9IHRydWU7XG4gICAgICAgICAgcGFja2FnZUxvY2FsSnNvbltESVNUX1RBR1NdW3RhZ10gPSBwYWNrYWdlSW5mb1tESVNUX1RBR1NdW3RhZ107XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZm9yIChjb25zdCB1cCBpbiBwYWNrYWdlSW5mby5fdXBsaW5rcykge1xuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHBhY2thZ2VJbmZvLl91cGxpbmtzLCB1cCkpIHtcbiAgICAgICAgICBjb25zdCBuZWVkX2NoYW5nZSA9XG4gICAgICAgICAgICAhaXNPYmplY3QocGFja2FnZUxvY2FsSnNvbi5fdXBsaW5rc1t1cF0pIHx8XG4gICAgICAgICAgICBwYWNrYWdlSW5mby5fdXBsaW5rc1t1cF0uZXRhZyAhPT0gcGFja2FnZUxvY2FsSnNvbi5fdXBsaW5rc1t1cF0uZXRhZyB8fFxuICAgICAgICAgICAgcGFja2FnZUluZm8uX3VwbGlua3NbdXBdLmZldGNoZWQgIT09IHBhY2thZ2VMb2NhbEpzb24uX3VwbGlua3NbdXBdLmZldGNoZWQ7XG5cbiAgICAgICAgICBpZiAobmVlZF9jaGFuZ2UpIHtcbiAgICAgICAgICAgIGNoYW5nZSA9IHRydWU7XG4gICAgICAgICAgICBwYWNrYWdlTG9jYWxKc29uLl91cGxpbmtzW3VwXSA9IHBhY2thZ2VJbmZvLl91cGxpbmtzW3VwXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCd0aW1lJyBpbiBwYWNrYWdlSW5mbyAmJiAhXy5pc0VxdWFsKHBhY2thZ2VMb2NhbEpzb24udGltZSwgcGFja2FnZUluZm8udGltZSkpIHtcbiAgICAgICAgcGFja2FnZUxvY2FsSnNvbi50aW1lID0gcGFja2FnZUluZm8udGltZTtcbiAgICAgICAgY2hhbmdlID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNoYW5nZSkge1xuICAgICAgICBkZWJ1ZygndXBkYXRpbmcgcGFja2FnZSAlbyBpbmZvJywgbmFtZSk7XG4gICAgICAgIHRoaXMuX3dyaXRlUGFja2FnZShuYW1lLCBwYWNrYWdlTG9jYWxKc29uLCBmdW5jdGlvbiAoZXJyKTogdm9pZCB7XG4gICAgICAgICAgY2FsbGJhY2soZXJyLCBwYWNrYWdlTG9jYWxKc29uKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjYWxsYmFjayhudWxsLCBwYWNrYWdlTG9jYWxKc29uKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBuZXcgdmVyc2lvbiB0byBhIHByZXZpb3VzIGxvY2FsIHBhY2thZ2UuXG4gICAqIEBwYXJhbSB7Kn0gbmFtZVxuICAgKiBAcGFyYW0geyp9IHZlcnNpb25cbiAgICogQHBhcmFtIHsqfSBtZXRhZGF0YVxuICAgKiBAcGFyYW0geyp9IHRhZ1xuICAgKiBAcGFyYW0geyp9IGNhbGxiYWNrXG4gICAqL1xuICBwdWJsaWMgYWRkVmVyc2lvbihuYW1lOiBzdHJpbmcsIHZlcnNpb246IHN0cmluZywgbWV0YWRhdGE6IFZlcnNpb24sIHRhZzogU3RyaW5nVmFsdWUsIGNhbGxiYWNrOiBDYWxsYmFja0FjdGlvbik6IHZvaWQge1xuICAgIHRoaXMuX3VwZGF0ZVBhY2thZ2UoXG4gICAgICBuYW1lLFxuICAgICAgKGRhdGEsIGNiOiBDYWxsYmFjayk6IHZvaWQgPT4ge1xuICAgICAgICAvLyBrZWVwIG9ubHkgb25lIHJlYWRtZSBwZXIgcGFja2FnZVxuICAgICAgICBkYXRhLnJlYWRtZSA9IG1ldGFkYXRhLnJlYWRtZTtcblxuICAgICAgICAvLyBUT0RPOiBsb2Rhc2ggcmVtb3ZlXG4gICAgICAgIG1ldGFkYXRhID0gY2xlYW5VcFJlYWRtZShtZXRhZGF0YSk7XG4gICAgICAgIG1ldGFkYXRhLmNvbnRyaWJ1dG9ycyA9IG5vcm1hbGl6ZUNvbnRyaWJ1dG9ycyhtZXRhZGF0YS5jb250cmlidXRvcnMgYXMgQXV0aG9yW10pO1xuXG4gICAgICAgIGNvbnN0IGhhc1ZlcnNpb24gPSBkYXRhLnZlcnNpb25zW3ZlcnNpb25dICE9IG51bGw7XG4gICAgICAgIGlmIChoYXNWZXJzaW9uKSB7XG4gICAgICAgICAgcmV0dXJuIGNiKEVycm9yQ29kZS5nZXRDb25mbGljdCgpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGlmIHVwbG9hZGVkIHRhcmJhbGwgaGFzIGEgZGlmZmVyZW50IHNoYXN1bSwgaXQncyB2ZXJ5IGxpa2VseSB0aGF0IHdlIGhhdmUgc29tZSBraW5kIG9mIGVycm9yXG4gICAgICAgIGlmIChpc09iamVjdChtZXRhZGF0YS5kaXN0KSAmJiBfLmlzU3RyaW5nKG1ldGFkYXRhLmRpc3QudGFyYmFsbCkpIHtcbiAgICAgICAgICBjb25zdCB0YXJiYWxsID0gbWV0YWRhdGEuZGlzdC50YXJiYWxsLnJlcGxhY2UoLy4qXFwvLywgJycpO1xuXG4gICAgICAgICAgaWYgKGlzT2JqZWN0KGRhdGEuX2F0dGFjaG1lbnRzW3RhcmJhbGxdKSkge1xuICAgICAgICAgICAgaWYgKF8uaXNOaWwoZGF0YS5fYXR0YWNobWVudHNbdGFyYmFsbF0uc2hhc3VtKSA9PT0gZmFsc2UgJiYgXy5pc05pbChtZXRhZGF0YS5kaXN0LnNoYXN1bSkgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgIGlmIChkYXRhLl9hdHRhY2htZW50c1t0YXJiYWxsXS5zaGFzdW0gIT0gbWV0YWRhdGEuZGlzdC5zaGFzdW0pIHtcbiAgICAgICAgICAgICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBgc2hhc3VtIGVycm9yLCAke2RhdGEuX2F0dGFjaG1lbnRzW3RhcmJhbGxdLnNoYXN1bX0gIT0gJHttZXRhZGF0YS5kaXN0LnNoYXN1bX1gO1xuICAgICAgICAgICAgICAgIHJldHVybiBjYihFcnJvckNvZGUuZ2V0QmFkUmVxdWVzdChlcnJvck1lc3NhZ2UpKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBjdXJyZW50RGF0ZSA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKTtcblxuICAgICAgICAgICAgLy8gc29tZSBvbGQgc3RvcmFnZSBkbyBub3QgaGF2ZSB0aGlzIGZpZWxkICM3NDBcbiAgICAgICAgICAgIGlmIChfLmlzTmlsKGRhdGEudGltZSkpIHtcbiAgICAgICAgICAgICAgZGF0YS50aW1lID0ge307XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRhdGEudGltZVsnbW9kaWZpZWQnXSA9IGN1cnJlbnREYXRlO1xuXG4gICAgICAgICAgICBpZiAoJ2NyZWF0ZWQnIGluIGRhdGEudGltZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgZGF0YS50aW1lLmNyZWF0ZWQgPSBjdXJyZW50RGF0ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZGF0YS50aW1lW3ZlcnNpb25dID0gY3VycmVudERhdGU7XG4gICAgICAgICAgICBkYXRhLl9hdHRhY2htZW50c1t0YXJiYWxsXS52ZXJzaW9uID0gdmVyc2lvbjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBkYXRhLnZlcnNpb25zW3ZlcnNpb25dID0gbWV0YWRhdGE7XG4gICAgICAgIHRhZ1ZlcnNpb24oZGF0YSwgdmVyc2lvbiwgdGFnKTtcblxuICAgICAgICB0aGlzLnN0b3JhZ2VQbHVnaW4uYWRkKG5hbWUsIChhZGRGYWlsZWQpOiB2b2lkID0+IHtcbiAgICAgICAgICBpZiAoYWRkRmFpbGVkKSB7XG4gICAgICAgICAgICByZXR1cm4gY2IoRXJyb3JDb2RlLmdldEJhZERhdGEoYWRkRmFpbGVkLm1lc3NhZ2UpKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYigpO1xuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICBjYWxsYmFja1xuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogTWVyZ2UgYSBuZXcgbGlzdCBvZiB0YWdzIGZvciBhIGxvY2FsIHBhY2thZ2VzIHdpdGggdGhlIGV4aXN0aW5nIG9uZS5cbiAgICogQHBhcmFtIHsqfSBwa2dOYW1lXG4gICAqIEBwYXJhbSB7Kn0gdGFnc1xuICAgKiBAcGFyYW0geyp9IGNhbGxiYWNrXG4gICAqL1xuICBwdWJsaWMgbWVyZ2VUYWdzKHBrZ05hbWU6IHN0cmluZywgdGFnczogTWVyZ2VUYWdzLCBjYWxsYmFjazogQ2FsbGJhY2tBY3Rpb24pOiB2b2lkIHtcbiAgICB0aGlzLl91cGRhdGVQYWNrYWdlKFxuICAgICAgcGtnTmFtZSxcbiAgICAgIChkYXRhLCBjYik6IHZvaWQgPT4ge1xuICAgICAgICAvKiBlc2xpbnQgZ3VhcmQtZm9yLWluOiAwICovXG4gICAgICAgIGZvciAoY29uc3QgdGFnIGluIHRhZ3MpIHtcbiAgICAgICAgICAvLyB0aGlzIGhhbmRsZSBkaXN0LXRhZyBybSBjb21tYW5kXG4gICAgICAgICAgaWYgKF8uaXNOdWxsKHRhZ3NbdGFnXSkpIHtcbiAgICAgICAgICAgIGRlbGV0ZSBkYXRhW0RJU1RfVEFHU11bdGFnXTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChfLmlzTmlsKGRhdGEudmVyc2lvbnNbdGFnc1t0YWddXSkpIHtcbiAgICAgICAgICAgIHJldHVybiBjYih0aGlzLl9nZXRWZXJzaW9uTm90Rm91bmQoKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHZlcnNpb246IHN0cmluZyA9IHRhZ3NbdGFnXTtcbiAgICAgICAgICB0YWdWZXJzaW9uKGRhdGEsIHZlcnNpb24sIHRhZyk7XG4gICAgICAgIH1cbiAgICAgICAgY2IobnVsbCk7XG4gICAgICB9LFxuICAgICAgY2FsbGJhY2tcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB2ZXJzaW9uIG5vdCBmb3VuZFxuICAgKiBAcmV0dXJuIHtTdHJpbmd9XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIF9nZXRWZXJzaW9uTm90Rm91bmQoKTogVmVyZGFjY2lvRXJyb3Ige1xuICAgIHJldHVybiBFcnJvckNvZGUuZ2V0Tm90Rm91bmQoQVBJX0VSUk9SLlZFUlNJT05fTk9UX0VYSVNUKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gZmlsZSBubyBhdmFpbGFibGVcbiAgICogQHJldHVybiB7U3RyaW5nfVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBfZ2V0RmlsZU5vdEF2YWlsYWJsZSgpOiBWZXJkYWNjaW9FcnJvciB7XG4gICAgcmV0dXJuIEVycm9yQ29kZS5nZXROb3RGb3VuZCgnbm8gc3VjaCBmaWxlIGF2YWlsYWJsZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB0aGUgcGFja2FnZSBtZXRhZGF0YSwgdGFncyBhbmQgYXR0YWNobWVudHMgKHRhcmJhbGxzKS5cbiAgICogTm90ZTogQ3VycmVudGx5IHN1cHBvcnRzIHVucHVibGlzaGluZyBhbmQgZGVwcmVjYXRpb24uXG4gICAqIEBwYXJhbSB7Kn0gbmFtZVxuICAgKiBAcGFyYW0geyp9IGluY29taW5nUGtnXG4gICAqIEBwYXJhbSB7Kn0gcmV2aXNpb25cbiAgICogQHBhcmFtIHsqfSBjYWxsYmFja1xuICAgKiBAcmV0dXJuIHtGdW5jdGlvbn1cbiAgICovXG4gIHB1YmxpYyBjaGFuZ2VQYWNrYWdlKG5hbWU6IHN0cmluZywgaW5jb21pbmdQa2c6IFBhY2thZ2UsIHJldmlzaW9uOiBzdHJpbmcgfCB2b2lkLCBjYWxsYmFjazogQ2FsbGJhY2spOiB2b2lkIHtcbiAgICBpZiAoIWlzT2JqZWN0KGluY29taW5nUGtnLnZlcnNpb25zKSB8fCAhaXNPYmplY3QoaW5jb21pbmdQa2dbRElTVF9UQUdTXSkpIHtcbiAgICAgIHRoaXMubG9nZ2VyLmVycm9yKHsgbmFtZSB9LCBgY2hhbmdlUGFja2FnZSBiYWQgZGF0YSBmb3IgQHtuYW1lfWApO1xuICAgICAgcmV0dXJuIGNhbGxiYWNrKEVycm9yQ29kZS5nZXRCYWREYXRhKCkpO1xuICAgIH1cbiAgICBkZWJ1ZygnY2hhbmdlUGFja2FnZSB1ZGFwdGluZyBwYWNrYWdlIGZvciAlbycsIG5hbWUpO1xuICAgIHRoaXMuX3VwZGF0ZVBhY2thZ2UoXG4gICAgICBuYW1lLFxuICAgICAgKGxvY2FsRGF0YTogUGFja2FnZSwgY2I6IENhbGxiYWNrQWN0aW9uKTogdm9pZCA9PiB7XG4gICAgICAgIGZvciAoY29uc3QgdmVyc2lvbiBpbiBsb2NhbERhdGEudmVyc2lvbnMpIHtcbiAgICAgICAgICBjb25zdCBpbmNvbWluZ1ZlcnNpb24gPSBpbmNvbWluZ1BrZy52ZXJzaW9uc1t2ZXJzaW9uXTtcbiAgICAgICAgICBpZiAoXy5pc05pbChpbmNvbWluZ1ZlcnNpb24pKSB7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlci5pbmZvKHsgbmFtZTogbmFtZSwgdmVyc2lvbjogdmVyc2lvbiB9LCAndW5wdWJsaXNoaW5nIEB7bmFtZX1AQHt2ZXJzaW9ufScpO1xuXG4gICAgICAgICAgICAvLyBGSVhNRTogSSBwcmVmZXIgcmV0dXJuIGEgbmV3IG9iamVjdCByYXRoZXIgbXV0YXRlIHRoZSBtZXRhZGF0YVxuICAgICAgICAgICAgZGVsZXRlIGxvY2FsRGF0YS52ZXJzaW9uc1t2ZXJzaW9uXTtcbiAgICAgICAgICAgIGRlbGV0ZSBsb2NhbERhdGEudGltZSFbdmVyc2lvbl07XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgZmlsZSBpbiBsb2NhbERhdGEuX2F0dGFjaG1lbnRzKSB7XG4gICAgICAgICAgICAgIGlmIChsb2NhbERhdGEuX2F0dGFjaG1lbnRzW2ZpbGVdLnZlcnNpb24gPT09IHZlcnNpb24pIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgbG9jYWxEYXRhLl9hdHRhY2htZW50c1tmaWxlXS52ZXJzaW9uO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoaW5jb21pbmdWZXJzaW9uLCAnZGVwcmVjYXRlZCcpKSB7XG4gICAgICAgICAgICBjb25zdCBpbmNvbWluZ0RlcHJlY2F0ZWQgPSBpbmNvbWluZ1ZlcnNpb24uZGVwcmVjYXRlZDtcbiAgICAgICAgICAgIGlmIChpbmNvbWluZ0RlcHJlY2F0ZWQgIT0gbG9jYWxEYXRhLnZlcnNpb25zW3ZlcnNpb25dLmRlcHJlY2F0ZWQpIHtcbiAgICAgICAgICAgICAgaWYgKCFpbmNvbWluZ0RlcHJlY2F0ZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5pbmZvKHsgbmFtZTogbmFtZSwgdmVyc2lvbjogdmVyc2lvbiB9LCAndW5kZXByZWNhdGluZyBAe25hbWV9QEB7dmVyc2lvbn0nKTtcbiAgICAgICAgICAgICAgICBkZWxldGUgbG9jYWxEYXRhLnZlcnNpb25zW3ZlcnNpb25dLmRlcHJlY2F0ZWQ7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuaW5mbyh7IG5hbWU6IG5hbWUsIHZlcnNpb246IHZlcnNpb24gfSwgJ2RlcHJlY2F0aW5nIEB7bmFtZX1AQHt2ZXJzaW9ufScpO1xuICAgICAgICAgICAgICAgIGxvY2FsRGF0YS52ZXJzaW9uc1t2ZXJzaW9uXS5kZXByZWNhdGVkID0gaW5jb21pbmdEZXByZWNhdGVkO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGxvY2FsRGF0YS50aW1lIS5tb2RpZmllZCA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBsb2NhbERhdGFbVVNFUlNdID0gaW5jb21pbmdQa2dbVVNFUlNdO1xuICAgICAgICBsb2NhbERhdGFbRElTVF9UQUdTXSA9IGluY29taW5nUGtnW0RJU1RfVEFHU107XG4gICAgICAgIGNiKG51bGwpO1xuICAgICAgfSxcbiAgICAgIGZ1bmN0aW9uIChlcnIpOiB2b2lkIHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHJldHVybiBjYWxsYmFjayhlcnIpO1xuICAgICAgICB9XG4gICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuICAvKipcbiAgICogUmVtb3ZlIGEgdGFyYmFsbC5cbiAgICogQHBhcmFtIHsqfSBuYW1lXG4gICAqIEBwYXJhbSB7Kn0gZmlsZW5hbWVcbiAgICogQHBhcmFtIHsqfSByZXZpc2lvblxuICAgKiBAcGFyYW0geyp9IGNhbGxiYWNrXG4gICAqL1xuICBwdWJsaWMgcmVtb3ZlVGFyYmFsbChuYW1lOiBzdHJpbmcsIGZpbGVuYW1lOiBzdHJpbmcsIHJldmlzaW9uOiBzdHJpbmcsIGNhbGxiYWNrOiBDYWxsYmFja0FjdGlvbik6IHZvaWQge1xuICAgIGFzc2VydCh2YWxpZGF0ZU5hbWUoZmlsZW5hbWUpKTtcblxuICAgIHRoaXMuX3VwZGF0ZVBhY2thZ2UoXG4gICAgICBuYW1lLFxuICAgICAgKGRhdGEsIGNiKTogdm9pZCA9PiB7XG4gICAgICAgIGlmIChkYXRhLl9hdHRhY2htZW50c1tmaWxlbmFtZV0pIHtcbiAgICAgICAgICBkZWxldGUgZGF0YS5fYXR0YWNobWVudHNbZmlsZW5hbWVdO1xuICAgICAgICAgIGNiKG51bGwpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNiKHRoaXMuX2dldEZpbGVOb3RBdmFpbGFibGUoKSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAoZXJyOiBWZXJkYWNjaW9FcnJvcik6IHZvaWQgPT4ge1xuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGVycik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3RvcmFnZSA9IHRoaXMuX2dldExvY2FsU3RvcmFnZShuYW1lKTtcblxuICAgICAgICBpZiAoc3RvcmFnZSkge1xuICAgICAgICAgIHN0b3JhZ2UuZGVsZXRlUGFja2FnZShmaWxlbmFtZSwgY2FsbGJhY2spO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSB0YXJiYWxsLlxuICAgKiBAcGFyYW0ge1N0cmluZ30gbmFtZVxuICAgKiBAcGFyYW0ge1N0cmluZ30gZmlsZW5hbWVcbiAgICogQHJldHVybiB7U3RyZWFtfVxuICAgKi9cbiAgcHVibGljIGFkZFRhcmJhbGwobmFtZTogc3RyaW5nLCBmaWxlbmFtZTogc3RyaW5nKTogSVVwbG9hZFRhcmJhbGwge1xuICAgIGFzc2VydCh2YWxpZGF0ZU5hbWUoZmlsZW5hbWUpKTtcblxuICAgIGxldCBsZW5ndGggPSAwO1xuICAgIGNvbnN0IHNoYU9uZUhhc2ggPSBjcmVhdGVUYXJiYWxsSGFzaCgpO1xuICAgIGNvbnN0IHVwbG9hZFN0cmVhbTogSVVwbG9hZFRhcmJhbGwgPSBuZXcgVXBsb2FkVGFyYmFsbCh7fSk7XG4gICAgY29uc3QgX3RyYW5zZm9ybSA9IHVwbG9hZFN0cmVhbS5fdHJhbnNmb3JtO1xuICAgIGNvbnN0IHN0b3JhZ2UgPSB0aGlzLl9nZXRMb2NhbFN0b3JhZ2UobmFtZSk7XG5cbiAgICB1cGxvYWRTdHJlYW0uYWJvcnQgPSBmdW5jdGlvbiAoKTogdm9pZCB7fTtcbiAgICB1cGxvYWRTdHJlYW0uZG9uZSA9IGZ1bmN0aW9uICgpOiB2b2lkIHt9O1xuXG4gICAgdXBsb2FkU3RyZWFtLl90cmFuc2Zvcm0gPSBmdW5jdGlvbiAoZGF0YSwgLi4uYXJncyk6IHZvaWQge1xuICAgICAgc2hhT25lSGFzaC51cGRhdGUoZGF0YSk7XG4gICAgICAvLyBtZWFzdXJlIHRoZSBsZW5ndGggZm9yIHZhbGlkYXRpb24gcmVhc29uc1xuICAgICAgbGVuZ3RoICs9IGRhdGEubGVuZ3RoO1xuICAgICAgY29uc3QgYXBwbGllZERhdGEgPSBbZGF0YSwgLi4uYXJnc107XG4gICAgICAvLyBGSVhNRTogbm90IHN1cmUgYWJvdXQgdGhpcyBhcHByb2FjaCwgdHNjIGNvbXBsYWluc1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgX3RyYW5zZm9ybS5hcHBseSh1cGxvYWRTdHJlYW0sIGFwcGxpZWREYXRhKTtcbiAgICB9O1xuXG4gICAgaWYgKG5hbWUgPT09ICdfX3Byb3RvX18nKSB7XG4gICAgICBwcm9jZXNzLm5leHRUaWNrKCgpOiB2b2lkID0+IHtcbiAgICAgICAgdXBsb2FkU3RyZWFtLmVtaXQoJ2Vycm9yJywgRXJyb3JDb2RlLmdldEZvcmJpZGRlbigpKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHVwbG9hZFN0cmVhbTtcbiAgICB9XG5cbiAgICBpZiAoIXN0b3JhZ2UpIHtcbiAgICAgIHByb2Nlc3MubmV4dFRpY2soKCk6IHZvaWQgPT4ge1xuICAgICAgICB1cGxvYWRTdHJlYW0uZW1pdCgnZXJyb3InLCBcImNhbid0IHVwbG9hZCB0aGlzIHBhY2thZ2VcIik7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiB1cGxvYWRTdHJlYW07XG4gICAgfVxuXG4gICAgY29uc3Qgd3JpdGVTdHJlYW06IElVcGxvYWRUYXJiYWxsID0gc3RvcmFnZS53cml0ZVRhcmJhbGwoZmlsZW5hbWUpO1xuXG4gICAgd3JpdGVTdHJlYW0ub24oJ2Vycm9yJywgKGVycikgPT4ge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgaWYgKGVyci5jb2RlID09PSBTVE9SQUdFLkZJTEVfRVhJU1RfRVJST1IgfHwgZXJyLmNvZGUgPT09IEhUVFBfU1RBVFVTLkNPTkZMSUNUKSB7XG4gICAgICAgIHVwbG9hZFN0cmVhbS5lbWl0KCdlcnJvcicsIEVycm9yQ29kZS5nZXRDb25mbGljdCgpKTtcbiAgICAgICAgdXBsb2FkU3RyZWFtLmFib3J0KCk7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIH0gZWxzZSBpZiAoZXJyLmNvZGUgPT09IFNUT1JBR0UuTk9fU1VDSF9GSUxFX0VSUk9SIHx8IGVyci5jb2RlID09PSBIVFRQX1NUQVRVUy5OT1RfRk9VTkQpIHtcbiAgICAgICAgLy8gY2hlY2sgaWYgcGFja2FnZSBleGlzdHMgdG8gdGhyb3cgYW4gYXBwcm9wcmlhdGUgbWVzc2FnZVxuICAgICAgICB0aGlzLmdldFBhY2thZ2VNZXRhZGF0YShuYW1lLCBmdW5jdGlvbiAoX2VycjogVmVyZGFjY2lvRXJyb3IsIF9yZXM6IFBhY2thZ2UpOiB2b2lkIHtcbiAgICAgICAgICBpZiAoX2Vycikge1xuICAgICAgICAgICAgdXBsb2FkU3RyZWFtLmVtaXQoJ2Vycm9yJywgX2Vycik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHVwbG9hZFN0cmVhbS5lbWl0KCdlcnJvcicsIGVycik7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHVwbG9hZFN0cmVhbS5lbWl0KCdlcnJvcicsIGVycik7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB3cml0ZVN0cmVhbS5vbignb3BlbicsIGZ1bmN0aW9uICgpOiB2b2lkIHtcbiAgICAgIC8vIHJlLWVtaXR0aW5nIG9wZW4gYmVjYXVzZSBpdCdzIGhhbmRsZWQgaW4gc3RvcmFnZS5qc1xuICAgICAgdXBsb2FkU3RyZWFtLmVtaXQoJ29wZW4nKTtcbiAgICB9KTtcblxuICAgIHdyaXRlU3RyZWFtLm9uKCdzdWNjZXNzJywgKCk6IHZvaWQgPT4ge1xuICAgICAgdGhpcy5fdXBkYXRlUGFja2FnZShcbiAgICAgICAgbmFtZSxcbiAgICAgICAgZnVuY3Rpb24gdXBkYXRlcihkYXRhLCBjYik6IHZvaWQge1xuICAgICAgICAgIGRhdGEuX2F0dGFjaG1lbnRzW2ZpbGVuYW1lXSA9IHtcbiAgICAgICAgICAgIHNoYXN1bTogc2hhT25lSGFzaC5kaWdlc3QoJ2hleCcpLFxuICAgICAgICAgIH07XG4gICAgICAgICAgY2IobnVsbCk7XG4gICAgICAgIH0sXG4gICAgICAgIGZ1bmN0aW9uIChlcnIpOiB2b2lkIHtcbiAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICB1cGxvYWRTdHJlYW0uZW1pdCgnZXJyb3InLCBlcnIpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB1cGxvYWRTdHJlYW0uZW1pdCgnc3VjY2VzcycpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIHVwbG9hZFN0cmVhbS5hYm9ydCA9IGZ1bmN0aW9uICgpOiB2b2lkIHtcbiAgICAgIHdyaXRlU3RyZWFtLmFib3J0KCk7XG4gICAgfTtcblxuICAgIHVwbG9hZFN0cmVhbS5kb25lID0gZnVuY3Rpb24gKCk6IHZvaWQge1xuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgdXBsb2FkU3RyZWFtLmVtaXQoJ2Vycm9yJywgRXJyb3JDb2RlLmdldEJhZERhdGEoJ3JlZnVzaW5nIHRvIGFjY2VwdCB6ZXJvLWxlbmd0aCBmaWxlJykpO1xuICAgICAgICB3cml0ZVN0cmVhbS5hYm9ydCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd3JpdGVTdHJlYW0uZG9uZSgpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB1cGxvYWRTdHJlYW0ucGlwZSh3cml0ZVN0cmVhbSk7XG5cbiAgICByZXR1cm4gdXBsb2FkU3RyZWFtO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhIHRhcmJhbGwuXG4gICAqIEBwYXJhbSB7Kn0gbmFtZVxuICAgKiBAcGFyYW0geyp9IGZpbGVuYW1lXG4gICAqIEByZXR1cm4ge1JlYWRUYXJiYWxsfVxuICAgKi9cbiAgcHVibGljIGdldFRhcmJhbGwobmFtZTogc3RyaW5nLCBmaWxlbmFtZTogc3RyaW5nKTogSVJlYWRUYXJiYWxsIHtcbiAgICBhc3NlcnQodmFsaWRhdGVOYW1lKGZpbGVuYW1lKSk7XG5cbiAgICBjb25zdCBzdG9yYWdlOiBJUGFja2FnZVN0b3JhZ2UgPSB0aGlzLl9nZXRMb2NhbFN0b3JhZ2UobmFtZSk7XG5cbiAgICBpZiAoXy5pc05pbChzdG9yYWdlKSkge1xuICAgICAgcmV0dXJuIHRoaXMuX2NyZWF0ZUZhaWx1cmVTdHJlYW1SZXNwb25zZSgpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9zdHJlYW1TdWNjZXNzUmVhZFRhckJhbGwoc3RvcmFnZSwgZmlsZW5hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIHN0cmVhbSB0aGF0IGVtaXRzIGEgcmVhZCBmYWlsdXJlLlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcmV0dXJuIHtSZWFkVGFyYmFsbH1cbiAgICovXG4gIHByaXZhdGUgX2NyZWF0ZUZhaWx1cmVTdHJlYW1SZXNwb25zZSgpOiBJUmVhZFRhcmJhbGwge1xuICAgIGNvbnN0IHN0cmVhbTogSVJlYWRUYXJiYWxsID0gbmV3IFJlYWRUYXJiYWxsKHt9KTtcblxuICAgIHByb2Nlc3MubmV4dFRpY2soKCk6IHZvaWQgPT4ge1xuICAgICAgc3RyZWFtLmVtaXQoJ2Vycm9yJywgdGhpcy5fZ2V0RmlsZU5vdEF2YWlsYWJsZSgpKTtcbiAgICB9KTtcbiAgICByZXR1cm4gc3RyZWFtO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIHN0cmVhbSB0aGF0IGVtaXRzIHRoZSB0YXJiYWxsIGRhdGFcbiAgICogQHBhcmFtIHtPYmplY3R9IHN0b3JhZ2VcbiAgICogQHBhcmFtIHtTdHJpbmd9IGZpbGVuYW1lXG4gICAqIEBwcml2YXRlXG4gICAqIEByZXR1cm4ge1JlYWRUYXJiYWxsfVxuICAgKi9cbiAgcHJpdmF0ZSBfc3RyZWFtU3VjY2Vzc1JlYWRUYXJCYWxsKHN0b3JhZ2U6IGFueSwgZmlsZW5hbWU6IHN0cmluZyk6IElSZWFkVGFyYmFsbCB7XG4gICAgY29uc3Qgc3RyZWFtOiBJUmVhZFRhcmJhbGwgPSBuZXcgUmVhZFRhcmJhbGwoe30pO1xuICAgIGNvbnN0IHJlYWRUYXJiYWxsU3RyZWFtID0gc3RvcmFnZS5yZWFkVGFyYmFsbChmaWxlbmFtZSk7XG4gICAgY29uc3QgZTQwNCA9IEVycm9yQ29kZS5nZXROb3RGb3VuZDtcblxuICAgIHN0cmVhbS5hYm9ydCA9IGZ1bmN0aW9uICgpOiB2b2lkIHtcbiAgICAgIGlmIChfLmlzTmlsKHJlYWRUYXJiYWxsU3RyZWFtKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgcmVhZFRhcmJhbGxTdHJlYW0uYWJvcnQoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgcmVhZFRhcmJhbGxTdHJlYW0ub24oJ2Vycm9yJywgZnVuY3Rpb24gKGVycikge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgaWYgKGVyci5jb2RlID09PSBTVE9SQUdFLk5PX1NVQ0hfRklMRV9FUlJPUiB8fCBlcnIuY29kZSA9PT0gSFRUUF9TVEFUVVMuTk9UX0ZPVU5EKSB7XG4gICAgICAgIHN0cmVhbS5lbWl0KCdlcnJvcicsIGU0MDQoJ25vIHN1Y2ggZmlsZSBhdmFpbGFibGUnKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdHJlYW0uZW1pdCgnZXJyb3InLCBlcnIpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmVhZFRhcmJhbGxTdHJlYW0ub24oJ2NvbnRlbnQtbGVuZ3RoJywgZnVuY3Rpb24gKGNvbnRlbnQpOiB2b2lkIHtcbiAgICAgIHN0cmVhbS5lbWl0KCdjb250ZW50LWxlbmd0aCcsIGNvbnRlbnQpO1xuICAgIH0pO1xuXG4gICAgcmVhZFRhcmJhbGxTdHJlYW0ub24oJ29wZW4nLCBmdW5jdGlvbiAoKTogdm9pZCB7XG4gICAgICAvLyByZS1lbWl0dGluZyBvcGVuIGJlY2F1c2UgaXQncyBoYW5kbGVkIGluIHN0b3JhZ2UuanNcbiAgICAgIHN0cmVhbS5lbWl0KCdvcGVuJyk7XG4gICAgICByZWFkVGFyYmFsbFN0cmVhbS5waXBlKHN0cmVhbSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gc3RyZWFtO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlIGEgcGFja2FnZSBieSBuYW1lLlxuICAgKiBAcGFyYW0geyp9IG5hbWVcbiAgICogQHBhcmFtIHsqfSBjYWxsYmFja1xuICAgKiBAcmV0dXJuIHtGdW5jdGlvbn1cbiAgICovXG4gIHB1YmxpYyBnZXRQYWNrYWdlTWV0YWRhdGEobmFtZTogc3RyaW5nLCBjYWxsYmFjazogQ2FsbGJhY2sgPSAoKTogdm9pZCA9PiB7fSk6IHZvaWQge1xuICAgIGNvbnN0IHN0b3JhZ2U6IElQYWNrYWdlU3RvcmFnZSA9IHRoaXMuX2dldExvY2FsU3RvcmFnZShuYW1lKTtcbiAgICBpZiAoXy5pc05pbChzdG9yYWdlKSkge1xuICAgICAgcmV0dXJuIGNhbGxiYWNrKEVycm9yQ29kZS5nZXROb3RGb3VuZCgpKTtcbiAgICB9XG5cbiAgICB0aGlzLl9yZWFkUGFja2FnZShuYW1lLCBzdG9yYWdlLCBjYWxsYmFjayk7XG4gIH1cblxuICAvKipcbiAgICogU2VhcmNoIGEgbG9jYWwgcGFja2FnZS5cbiAgICogQHBhcmFtIHsqfSBzdGFydEtleVxuICAgKiBAcGFyYW0geyp9IG9wdGlvbnNcbiAgICogQHJldHVybiB7RnVuY3Rpb259XG4gICAqL1xuICBwdWJsaWMgc2VhcmNoKHN0YXJ0S2V5OiBzdHJpbmcsIG9wdGlvbnM6IGFueSk6IElSZWFkVGFyYmFsbCB7XG4gICAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRUYXJiYWxsKHsgb2JqZWN0TW9kZTogdHJ1ZSB9KTtcblxuICAgIHRoaXMuX3NlYXJjaEVhY2hQYWNrYWdlKFxuICAgICAgKGl0ZW06IFBhY2thZ2UsIGNiOiBDYWxsYmFja0FjdGlvbik6IHZvaWQgPT4ge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGlmIChpdGVtLnRpbWUgPiBwYXJzZUludChzdGFydEtleSwgMTApKSB7XG4gICAgICAgICAgdGhpcy5nZXRQYWNrYWdlTWV0YWRhdGEoaXRlbS5uYW1lLCAoZXJyOiBWZXJkYWNjaW9FcnJvciwgZGF0YTogUGFja2FnZSk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgICByZXR1cm4gY2IoZXJyKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgY29uc3QgdGltZSA9IG5ldyBEYXRlKGl0ZW0udGltZSkudG9JU09TdHJpbmcoKTtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHByZXBhcmVTZWFyY2hQYWNrYWdlKGRhdGEsIHRpbWUpO1xuICAgICAgICAgICAgaWYgKF8uaXNOaWwocmVzdWx0KSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgc3RyZWFtLnB1c2gocmVzdWx0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNiKG51bGwpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNiKG51bGwpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZnVuY3Rpb24gb25FbmQoZXJyKTogdm9pZCB7XG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICBzdHJlYW0uZW1pdCgnZXJyb3InLCBlcnIpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBzdHJlYW0uZW5kKCk7XG4gICAgICB9XG4gICAgKTtcblxuICAgIHJldHVybiBzdHJlYW07XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmUgYSB3cmFwcGVyIHRoYXQgcHJvdmlkZSBhY2Nlc3MgdG8gdGhlIHBhY2thZ2UgbG9jYXRpb24uXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBwa2dOYW1lIHBhY2thZ2UgbmFtZS5cbiAgICogQHJldHVybiB7T2JqZWN0fVxuICAgKi9cbiAgcHJpdmF0ZSBfZ2V0TG9jYWxTdG9yYWdlKHBrZ05hbWU6IHN0cmluZyk6IElQYWNrYWdlU3RvcmFnZSB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmFnZVBsdWdpbi5nZXRQYWNrYWdlU3RvcmFnZShwa2dOYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWFkIGEganNvbiBmaWxlIGZyb20gc3RvcmFnZS5cbiAgICogQHBhcmFtIHtPYmplY3R9IHN0b3JhZ2VcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2tcbiAgICovXG4gIHByaXZhdGUgX3JlYWRQYWNrYWdlKG5hbWU6IHN0cmluZywgc3RvcmFnZTogYW55LCBjYWxsYmFjazogQ2FsbGJhY2spOiB2b2lkIHtcbiAgICBzdG9yYWdlLnJlYWRQYWNrYWdlKG5hbWUsIChlcnIsIHJlc3VsdCk6IHZvaWQgPT4ge1xuICAgICAgaWYgKGVycikge1xuICAgICAgICBpZiAoZXJyLmNvZGUgPT09IFNUT1JBR0UuTk9fU1VDSF9GSUxFX0VSUk9SIHx8IGVyci5jb2RlID09PSBIVFRQX1NUQVRVUy5OT1RfRk9VTkQpIHtcbiAgICAgICAgICByZXR1cm4gY2FsbGJhY2soRXJyb3JDb2RlLmdldE5vdEZvdW5kKCkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjYWxsYmFjayh0aGlzLl9pbnRlcm5hbEVycm9yKGVyciwgU1RPUkFHRS5QQUNLQUdFX0ZJTEVfTkFNRSwgJ2Vycm9yIHJlYWRpbmcnKSk7XG4gICAgICB9XG5cbiAgICAgIGNhbGxiYWNrKGVyciwgbm9ybWFsaXplUGFja2FnZShyZXN1bHQpKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXYWxrcyB0aHJvdWdoIGVhY2ggcGFja2FnZSBhbmQgY2FsbHMgYG9uX3BhY2thZ2VgIG9uIHRoZW0uXG4gICAqIEBwYXJhbSB7Kn0gb25QYWNrYWdlXG4gICAqIEBwYXJhbSB7Kn0gb25FbmRcbiAgICovXG4gIHByaXZhdGUgX3NlYXJjaEVhY2hQYWNrYWdlKG9uUGFja2FnZTogb25TZWFyY2hQYWNrYWdlLCBvbkVuZDogb25FbmRTZWFyY2hQYWNrYWdlKTogdm9pZCB7XG4gICAgLy8gc2F2ZSB3YWl0IHdoZXRoZXIgcGx1Z2luIHN0aWxsIGRvIG5vdCBzdXBwb3J0IHNlYXJjaCBmdW5jdGlvbmFsaXR5XG4gICAgaWYgKF8uaXNOaWwodGhpcy5zdG9yYWdlUGx1Z2luLnNlYXJjaCkpIHtcbiAgICAgIHRoaXMubG9nZ2VyLndhcm4oJ3BsdWdpbiBzZWFyY2ggbm90IGltcGxlbWVudGVkIHlldCcpO1xuICAgICAgb25FbmQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zdG9yYWdlUGx1Z2luLnNlYXJjaChvblBhY2thZ2UsIG9uRW5kLCB2YWxpZGF0ZU5hbWUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZSBlaXRoZXIgYSBwcmV2aW91cyBjcmVhdGVkIGxvY2FsIHBhY2thZ2Ugb3IgYSBib2lsZXJwbGF0ZS5cbiAgICogQHBhcmFtIHsqfSBwa2dOYW1lXG4gICAqIEBwYXJhbSB7Kn0gY2FsbGJhY2tcbiAgICogQHJldHVybiB7RnVuY3Rpb259XG4gICAqL1xuICBwcml2YXRlIF9yZWFkQ3JlYXRlUGFja2FnZShwa2dOYW1lOiBzdHJpbmcsIGNhbGxiYWNrOiBDYWxsYmFjayk6IHZvaWQge1xuICAgIGNvbnN0IHN0b3JhZ2U6IGFueSA9IHRoaXMuX2dldExvY2FsU3RvcmFnZShwa2dOYW1lKTtcbiAgICBpZiAoXy5pc05pbChzdG9yYWdlKSkge1xuICAgICAgdGhpcy5fY3JlYXRlTmV3UGFja2FnZShwa2dOYW1lLCBjYWxsYmFjayk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc3RvcmFnZS5yZWFkUGFja2FnZShwa2dOYW1lLCAoZXJyLCBkYXRhKTogdm9pZCA9PiB7XG4gICAgICAvLyBUT0RPOiByYWNlIGNvbmRpdGlvblxuICAgICAgaWYgKF8uaXNOaWwoZXJyKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgaWYgKGVyci5jb2RlID09PSBTVE9SQUdFLk5PX1NVQ0hfRklMRV9FUlJPUiB8fCBlcnIuY29kZSA9PT0gSFRUUF9TVEFUVVMuTk9UX0ZPVU5EKSB7XG4gICAgICAgICAgZGF0YSA9IGdlbmVyYXRlUGFja2FnZVRlbXBsYXRlKHBrZ05hbWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBjYWxsYmFjayh0aGlzLl9pbnRlcm5hbEVycm9yKGVyciwgU1RPUkFHRS5QQUNLQUdFX0ZJTEVfTkFNRSwgJ2Vycm9yIHJlYWRpbmcnKSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY2FsbGJhY2sobnVsbCwgbm9ybWFsaXplUGFja2FnZShkYXRhKSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9jcmVhdGVOZXdQYWNrYWdlKG5hbWU6IHN0cmluZywgY2FsbGJhY2s6IENhbGxiYWNrKTogQ2FsbGJhY2sge1xuICAgIHJldHVybiBjYWxsYmFjayhudWxsLCBub3JtYWxpemVQYWNrYWdlKGdlbmVyYXRlUGFja2FnZVRlbXBsYXRlKG5hbWUpKSk7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlIGludGVybmFsIGVycm9yXG4gICAqIEBwYXJhbSB7Kn0gZXJyXG4gICAqIEBwYXJhbSB7Kn0gZmlsZVxuICAgKiBAcGFyYW0geyp9IG1lc3NhZ2VcbiAgICogQHJldHVybiB7T2JqZWN0fSBFcnJvciBpbnN0YW5jZVxuICAgKi9cbiAgcHJpdmF0ZSBfaW50ZXJuYWxFcnJvcihlcnI6IHN0cmluZywgZmlsZTogc3RyaW5nLCBtZXNzYWdlOiBzdHJpbmcpOiBWZXJkYWNjaW9FcnJvciB7XG4gICAgdGhpcy5sb2dnZXIuZXJyb3IoeyBlcnI6IGVyciwgZmlsZTogZmlsZSB9LCBgJHttZXNzYWdlfSAgQHtmaWxlfTogQHshZXJyLm1lc3NhZ2V9YCk7XG5cbiAgICByZXR1cm4gRXJyb3JDb2RlLmdldEludGVybmFsRXJyb3IoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0geyp9IG5hbWUgcGFja2FnZSBuYW1lXG4gICAqIEBwYXJhbSB7Kn0gdXBkYXRlSGFuZGxlciBmdW5jdGlvbihwYWNrYWdlLCBjYikgLSB1cGRhdGUgZnVuY3Rpb25cbiAgICogQHBhcmFtIHsqfSBjYWxsYmFjayBjYWxsYmFjayB0aGF0IGdldHMgaW52b2tlZCBhZnRlciBpdCdzIGFsbCB1cGRhdGVkXG4gICAqIEByZXR1cm4ge0Z1bmN0aW9ufVxuICAgKi9cbiAgcHJpdmF0ZSBfdXBkYXRlUGFja2FnZShuYW1lOiBzdHJpbmcsIHVwZGF0ZUhhbmRsZXI6IFN0b3JhZ2VVcGRhdGVDYWxsYmFjaywgY2FsbGJhY2s6IENhbGxiYWNrQWN0aW9uKTogdm9pZCB7XG4gICAgY29uc3Qgc3RvcmFnZTogSVBhY2thZ2VTdG9yYWdlID0gdGhpcy5fZ2V0TG9jYWxTdG9yYWdlKG5hbWUpO1xuXG4gICAgaWYgKCFzdG9yYWdlKSB7XG4gICAgICByZXR1cm4gY2FsbGJhY2soRXJyb3JDb2RlLmdldE5vdEZvdW5kKCkpO1xuICAgIH1cblxuICAgIHN0b3JhZ2UudXBkYXRlUGFja2FnZShuYW1lLCB1cGRhdGVIYW5kbGVyLCB0aGlzLl93cml0ZVBhY2thZ2UuYmluZCh0aGlzKSwgbm9ybWFsaXplUGFja2FnZSwgY2FsbGJhY2spO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB0aGUgcmV2aXNpb24gKF9yZXYpIHN0cmluZyBmb3IgYSBwYWNrYWdlLlxuICAgKiBAcGFyYW0geyp9IG5hbWVcbiAgICogQHBhcmFtIHsqfSBqc29uXG4gICAqIEBwYXJhbSB7Kn0gY2FsbGJhY2tcbiAgICogQHJldHVybiB7RnVuY3Rpb259XG4gICAqL1xuICBwcml2YXRlIF93cml0ZVBhY2thZ2UobmFtZTogc3RyaW5nLCBqc29uOiBQYWNrYWdlLCBjYWxsYmFjazogQ2FsbGJhY2spOiB2b2lkIHtcbiAgICBjb25zdCBzdG9yYWdlOiBhbnkgPSB0aGlzLl9nZXRMb2NhbFN0b3JhZ2UobmFtZSk7XG4gICAgaWYgKF8uaXNOaWwoc3RvcmFnZSkpIHtcbiAgICAgIHJldHVybiBjYWxsYmFjaygpO1xuICAgIH1cbiAgICBzdG9yYWdlLnNhdmVQYWNrYWdlKG5hbWUsIHRoaXMuX3NldERlZmF1bHRSZXZpc2lvbihqc29uKSwgY2FsbGJhY2spO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0RGVmYXVsdFJldmlzaW9uKGpzb246IFBhY2thZ2UpOiBQYWNrYWdlIHtcbiAgICAvLyBjYWxjdWxhdGUgcmV2aXNpb24gZnJvbSBjb3VjaCBkYlxuICAgIGlmIChfLmlzU3RyaW5nKGpzb24uX3JldikgPT09IGZhbHNlKSB7XG4gICAgICBqc29uLl9yZXYgPSBTVE9SQUdFLkRFRkFVTFRfUkVWSVNJT047XG4gICAgfVxuXG4gICAgLy8gdGhpcyBpcyBpbnRlbmRlZCBpbiBkZWJ1ZyBtb2RlIHdlIGRvIG5vdCB3YW50IG1vZGlmeSB0aGUgc3RvcmUgcmV2aXNpb25cbiAgICBpZiAoXy5pc05pbCh0aGlzLmNvbmZpZy5fZGVidWcpKSB7XG4gICAgICBqc29uLl9yZXYgPSBnZW5lcmF0ZVJldmlzaW9uKGpzb24uX3Jldik7XG4gICAgfVxuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBwcml2YXRlIF9kZWxldGVBdHRhY2htZW50cyhzdG9yYWdlOiBhbnksIGF0dGFjaG1lbnRzOiBzdHJpbmdbXSwgY2FsbGJhY2s6IENhbGxiYWNrKTogdm9pZCB7XG4gICAgZGVidWcoJ1tzdG9yYWdlL19kZWxldGVBdHRhY2htZW50c10gZGVsZXRlIGF0dGFjaG1lbnRzIHRvdGFsOiAlbycsIGF0dGFjaG1lbnRzPy5sZW5ndGgpO1xuICAgIGNvbnN0IHVubGlua05leHQgPSBmdW5jdGlvbiAoY2IpOiB2b2lkIHtcbiAgICAgIGlmIChfLmlzRW1wdHkoYXR0YWNobWVudHMpKSB7XG4gICAgICAgIHJldHVybiBjYigpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBhdHRhY2htZW50ID0gYXR0YWNobWVudHMuc2hpZnQoKTtcbiAgICAgIHN0b3JhZ2UuZGVsZXRlUGFja2FnZShhdHRhY2htZW50LCBmdW5jdGlvbiAoKTogdm9pZCB7XG4gICAgICAgIHVubGlua05leHQoY2IpO1xuICAgICAgfSk7XG4gICAgfTtcblxuICAgIHVubGlua05leHQoZnVuY3Rpb24gKCk6IHZvaWQge1xuICAgICAgLy8gdHJ5IHRvIHVubGluayB0aGUgZGlyZWN0b3J5LCBidXQgaWdub3JlIGVycm9ycyBiZWNhdXNlIGl0IGNhbiBmYWlsXG4gICAgICBzdG9yYWdlLnJlbW92ZVBhY2thZ2UoZnVuY3Rpb24gKGVycik6IHZvaWQge1xuICAgICAgICBjYWxsYmFjayhlcnIpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRW5zdXJlIHRoZSBkaXN0IGZpbGUgcmVtYWlucyBhcyB0aGUgc2FtZSBwcm90b2NvbFxuICAgKiBAcGFyYW0ge09iamVjdH0gaGFzaCBtZXRhZGF0YVxuICAgKiBAcGFyYW0ge1N0cmluZ30gdXBMaW5rS2V5IHJlZ2lzdHJ5IGtleVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBfdXBkYXRlVXBsaW5rVG9SZW1vdGVQcm90b2NvbChoYXNoOiBEaXN0RmlsZSwgdXBMaW5rS2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAvLyBpZiB3ZSBnb3QgdGhpcyBpbmZvcm1hdGlvbiBmcm9tIGEga25vd24gcmVnaXN0cnksXG4gICAgLy8gdXNlIHRoZSBzYW1lIHByb3RvY29sIGZvciB0aGUgdGFyYmFsbFxuICAgIC8vXG4gICAgLy8gc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9ybGlkd2thL3Npbm9waWEvaXNzdWVzLzE2NlxuICAgIGNvbnN0IHRhcmJhbGxVcmw6IGFueSA9IFVybE5vZGUucGFyc2UoaGFzaC51cmwpO1xuICAgIGNvbnN0IHVwbGlua1VybDogYW55ID0gVXJsTm9kZS5wYXJzZSh0aGlzLmNvbmZpZy51cGxpbmtzW3VwTGlua0tleV0udXJsKTtcblxuICAgIGlmICh1cGxpbmtVcmwuaG9zdCA9PT0gdGFyYmFsbFVybC5ob3N0KSB7XG4gICAgICB0YXJiYWxsVXJsLnByb3RvY29sID0gdXBsaW5rVXJsLnByb3RvY29sO1xuICAgICAgaGFzaC5yZWdpc3RyeSA9IHVwTGlua0tleTtcbiAgICAgIGhhc2gudXJsID0gVXJsTm9kZS5mb3JtYXQodGFyYmFsbFVybCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFNlY3JldChjb25maWc6IENvbmZpZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHNlY3JldEtleSA9IGF3YWl0IHRoaXMuc3RvcmFnZVBsdWdpbi5nZXRTZWNyZXQoKTtcblxuICAgIHJldHVybiB0aGlzLnN0b3JhZ2VQbHVnaW4uc2V0U2VjcmV0KGNvbmZpZy5jaGVja1NlY3JldEtleShzZWNyZXRLZXkpKTtcbiAgfVxuXG4gIHByaXZhdGUgX2xvYWRTdG9yYWdlKGNvbmZpZzogQ29uZmlnLCBsb2dnZXI6IExvZ2dlcik6IElQbHVnaW5TdG9yYWdlPENvbmZpZz4ge1xuICAgIGNvbnN0IFN0b3JhZ2UgPSB0aGlzLl9sb2FkU3RvcmVQbHVnaW4oKTtcblxuICAgIGlmIChfLmlzTmlsKFN0b3JhZ2UpKSB7XG4gICAgICBhc3NlcnQodGhpcy5jb25maWcuc3RvcmFnZSwgJ0NPTkZJRzogc3RvcmFnZSBwYXRoIG5vdCBkZWZpbmVkJyk7XG4gICAgICByZXR1cm4gbmV3IExvY2FsRGF0YWJhc2UodGhpcy5jb25maWcsIGxvZ2dlcik7XG4gICAgfVxuICAgIHJldHVybiBTdG9yYWdlIGFzIElQbHVnaW5TdG9yYWdlPENvbmZpZz47XG4gIH1cblxuICBwcml2YXRlIF9sb2FkU3RvcmVQbHVnaW4oKTogSVBsdWdpblN0b3JhZ2U8Q29uZmlnPiB8IHZvaWQge1xuICAgIGNvbnN0IHBsdWdpbl9wYXJhbXMgPSB7XG4gICAgICBjb25maWc6IHRoaXMuY29uZmlnLFxuICAgICAgbG9nZ2VyOiB0aGlzLmxvZ2dlcixcbiAgICB9O1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cbiAgICBjb25zdCBwbHVnaW5zOiBJUGx1Z2luU3RvcmFnZTxDb25maWc+W10gPSBsb2FkUGx1Z2luPElQbHVnaW5TdG9yYWdlPENvbmZpZz4+KHRoaXMuY29uZmlnLCB0aGlzLmNvbmZpZy5zdG9yZSwgcGx1Z2luX3BhcmFtcywgKHBsdWdpbik6IElQbHVnaW5TdG9yYWdlPENvbmZpZz4gPT4ge1xuICAgICAgcmV0dXJuIHBsdWdpbi5nZXRQYWNrYWdlU3RvcmFnZTtcbiAgICB9KTtcblxuICAgIHJldHVybiBfLmhlYWQocGx1Z2lucyk7XG4gIH1cblxuICBwdWJsaWMgc2F2ZVRva2VuKHRva2VuOiBUb2tlbik6IFByb21pc2U8YW55PiB7XG4gICAgaWYgKF8uaXNGdW5jdGlvbih0aGlzLnN0b3JhZ2VQbHVnaW4uc2F2ZVRva2VuKSA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChFcnJvckNvZGUuZ2V0Q29kZShIVFRQX1NUQVRVUy5TRVJWSUNFX1VOQVZBSUxBQkxFLCBTVVBQT1JUX0VSUk9SUy5QTFVHSU5fTUlTU0lOR19JTlRFUkZBQ0UpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdG9yYWdlUGx1Z2luLnNhdmVUb2tlbih0b2tlbik7XG4gIH1cblxuICBwdWJsaWMgZGVsZXRlVG9rZW4odXNlcjogc3RyaW5nLCB0b2tlbktleTogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcbiAgICBpZiAoXy5pc0Z1bmN0aW9uKHRoaXMuc3RvcmFnZVBsdWdpbi5kZWxldGVUb2tlbikgPT09IGZhbHNlKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoRXJyb3JDb2RlLmdldENvZGUoSFRUUF9TVEFUVVMuU0VSVklDRV9VTkFWQUlMQUJMRSwgU1VQUE9SVF9FUlJPUlMuUExVR0lOX01JU1NJTkdfSU5URVJGQUNFKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RvcmFnZVBsdWdpbi5kZWxldGVUb2tlbih1c2VyLCB0b2tlbktleSk7XG4gIH1cblxuICBwdWJsaWMgcmVhZFRva2VucyhmaWx0ZXI6IFRva2VuRmlsdGVyKTogUHJvbWlzZTxUb2tlbltdPiB7XG4gICAgaWYgKF8uaXNGdW5jdGlvbih0aGlzLnN0b3JhZ2VQbHVnaW4ucmVhZFRva2VucykgPT09IGZhbHNlKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoRXJyb3JDb2RlLmdldENvZGUoSFRUUF9TVEFUVVMuU0VSVklDRV9VTkFWQUlMQUJMRSwgU1VQUE9SVF9FUlJPUlMuUExVR0lOX01JU1NJTkdfSU5URVJGQUNFKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RvcmFnZVBsdWdpbi5yZWFkVG9rZW5zKGZpbHRlcik7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTG9jYWxTdG9yYWdlO1xuIl19
|
|
@@ -14,4 +14,4 @@ module.exports = function prettyFactory(options) {
|
|
|
14
14
|
return (0, _prettifier.printMessage)(inputData, options, true) + breakLike;
|
|
15
15
|
};
|
|
16
16
|
};
|
|
17
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
17
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvbG9nZ2VyL2Zvcm1hdHRlci9pbmRleC50cyJdLCJuYW1lcyI6WyJtb2R1bGUiLCJleHBvcnRzIiwicHJldHR5RmFjdG9yeSIsIm9wdGlvbnMiLCJicmVha0xpa2UiLCJpbnB1dERhdGEiXSwibWFwcGluZ3MiOiI7O0FBQUE7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFFQUEsTUFBTSxDQUFDQyxPQUFQLEdBQWlCLFNBQVNDLGFBQVQsQ0FBdUJDLE9BQXZCLEVBQXNFO0FBQ3JGO0FBQ0EsUUFBTUMsU0FBUyxHQUFHLElBQWxCO0FBQ0EsU0FBUUMsU0FBRCxJQUF1QjtBQUM1QjtBQUNBLFdBQU8sOEJBQWFBLFNBQWIsRUFBd0JGLE9BQXhCLEVBQWlDLElBQWpDLElBQXlDQyxTQUFoRDtBQUNELEdBSEQ7QUFJRCxDQVBEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHJldHR5T3B0aW9uc0V4dGVuZGVkLCBwcmludE1lc3NhZ2UgfSBmcm9tICcuL3ByZXR0aWZpZXInO1xuXG5leHBvcnQgdHlwZSBQcmV0dHlGYWN0b3J5ID0gKHBhcmFtKSA9PiBzdHJpbmc7XG5cbi8qXG4gb3B0aW9ucyBlZzpcbiB7IG1lc3NhZ2VLZXk6ICdtc2cnLCBsZXZlbEZpcnN0OiB0cnVlLCBwcmV0dHlTdGFtcDogZmFsc2UgfVxuICovXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gcHJldHR5RmFjdG9yeShvcHRpb25zOiBQcmV0dHlPcHRpb25zRXh0ZW5kZWQpOiBQcmV0dHlGYWN0b3J5IHtcbiAgLy8gdGhlIGJyZWFrIGxpbmUgbXVzdCBoYXBwZW5zIGluIHRoZSBwcmV0dGlmeSBjb21wb25lbnRcbiAgY29uc3QgYnJlYWtMaWtlID0gJ1xcbic7XG4gIHJldHVybiAoaW5wdXREYXRhKTogc3RyaW5nID0+IHtcbiAgICAvLyBGSVhNRTogcmV2aWV3IGNvbG9ycyBieSBkZWZhdWx0IGlzIHRydWVcbiAgICByZXR1cm4gcHJpbnRNZXNzYWdlKGlucHV0RGF0YSwgb3B0aW9ucywgdHJ1ZSkgKyBicmVha0xpa2U7XG4gIH07XG59O1xuIl19
|
|
@@ -9,13 +9,13 @@ exports.formatLoggingDate = formatLoggingDate;
|
|
|
9
9
|
exports.isObject = isObject;
|
|
10
10
|
exports.printMessage = printMessage;
|
|
11
11
|
|
|
12
|
-
var
|
|
12
|
+
var _dayjs = _interopRequireDefault(require("dayjs"));
|
|
13
13
|
|
|
14
14
|
var _kleur = require("kleur");
|
|
15
15
|
|
|
16
16
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
17
17
|
|
|
18
|
-
var
|
|
18
|
+
var _util = require("util");
|
|
19
19
|
|
|
20
20
|
var _levels = require("../levels");
|
|
21
21
|
|
|
@@ -108,4 +108,4 @@ function printMessage(templateObjects, options, hasColors = true) {
|
|
|
108
108
|
const logMessage = getMessage(debugLevel, msg, sub, templateObjects, hasColors);
|
|
109
109
|
return prettyStamp ? formatLoggingDate(templateObjects.time, logMessage) : logMessage;
|
|
110
110
|
}
|
|
111
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
111
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvbG9nZ2VyL2Zvcm1hdHRlci9wcmV0dGlmaWVyLnRzIl0sIm5hbWVzIjpbIkNVU1RPTV9QQURfTEVOR1RIIiwiRk9STUFUX0RBVEUiLCJpc09iamVjdCIsIm9iaiIsIl8iLCJpc051bGwiLCJpc0FycmF5IiwiZm9ybWF0TG9nZ2luZ0RhdGUiLCJ0aW1lIiwibWVzc2FnZSIsInRpbWVGb3JtYXR0ZWQiLCJmb3JtYXQiLCJMRVZFTF9WQUxVRV9NQVgiLCJsIiwibGV2ZWxzQ29sb3JzIiwiTWF0aCIsIm1heCIsImxlbmd0aCIsIkVSUk9SX0ZMQUciLCJmaWxsSW5Nc2dUZW1wbGF0ZSIsIm1zZyIsInRlbXBsYXRlT3B0aW9ucyIsImNvbG9ycyIsInRlbXBsYXRlUmVnZXgiLCJyZXBsYWNlIiwibmFtZSIsInN0ciIsImlzRXJyb3IiLCJzdWJzdHIiLCJsaXN0QWNjZXNzb3JzIiwic3BsaXQiLCJwcm9wZXJ0eSIsImlkIiwiaW5jbHVkZXMiLCJ1bmRlZmluZWQiLCJnZXRNZXNzYWdlIiwiZGVidWdMZXZlbCIsInN1YiIsInRlbXBsYXRlT2JqZWN0cyIsImhhc0NvbG9ycyIsImZpbmFsTWVzc2FnZSIsInN1YlN5c3RlbVR5cGUiLCJzdWJTeXN0ZW1MZXZlbHMiLCJjb2xvciIsImxvZ1N0cmluZyIsInByaW50TWVzc2FnZSIsIm9wdGlvbnMiLCJwcmV0dHlTdGFtcCIsImxldmVsIiwibG9nTWVzc2FnZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFFQTs7QUFDQTs7OztBQUVPLE1BQU1BLGlCQUFpQixHQUFHLENBQTFCOztBQUNBLE1BQU1DLFdBQVcsR0FBRyxxQkFBcEI7OztBQUVBLFNBQVNDLFFBQVQsQ0FBa0JDLEdBQWxCLEVBQXlDO0FBQzlDLFNBQU9DLGdCQUFFRixRQUFGLENBQVdDLEdBQVgsS0FBbUJDLGdCQUFFQyxNQUFGLENBQVNGLEdBQVQsTUFBa0IsS0FBckMsSUFBOEND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LFNBQVIsQ0FBUDtBQUNEOztBQUNELFFBQU1BLFNBQVMsR0FBSSxHQUFFLHFCQUFTUixVQUFULEVBQXFCeEIsZUFBckIsQ0FBc0MsR0FBRTZCLGFBQWMsSUFBR0QsWUFBYSxFQUEzRjtBQUVBLFNBQU8scUJBQVNJLFNBQVQsQ0FBUDtBQUNEOztBQUVNLFNBQVNDLFlBQVQsQ0FBc0JQLGVBQXRCLEVBQXVEUSxPQUF2RCxFQUF1RlAsU0FBUyxHQUFHLElBQW5HLEVBQWlIO0FBQ3RILFFBQU07QUFBRVEsSUFBQUE7QUFBRixNQUFrQkQsT0FBeEI7QUFDQSxRQUFNO0FBQUVFLElBQUFBLEtBQUY7QUFBUzVCLElBQUFBLEdBQVQ7QUFBY2lCLElBQUFBO0FBQWQsTUFBc0JDLGVBQTVCO0FBQ0EsUUFBTUYsVUFBVSxHQUFHLDRCQUFlWSxLQUFmLENBQW5CO0FBQ0EsUUFBTUMsVUFBVSxHQUFHZCxVQUFVLENBQUNDLFVBQUQsRUFBYWhCLEdBQWIsRUFBa0JpQixHQUFsQixFQUF1QkMsZUFBdkIsRUFBd0NDLFNBQXhDLENBQTdCO0FBRUEsU0FBT1EsV0FBVyxHQUFHeEMsaUJBQWlCLENBQUMrQixlQUFlLENBQUM5QixJQUFqQixFQUFpQ3lDLFVBQWpDLENBQXBCLEdBQW1FQSxVQUFyRjtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRheWpzIGZyb20gJ2RheWpzJztcbmltcG9ydCB7IGdyZWVuLCByZWQsIHdoaXRlIH0gZnJvbSAna2xldXInO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IFByZXR0eU9wdGlvbnMgfSBmcm9tICdwaW5vJztcbmltcG9ydCB7IGluc3BlY3QgfSBmcm9tICd1dGlsJztcblxuaW1wb3J0IHsgTGV2ZWxDb2RlLCBjYWxjdWxhdGVMZXZlbCwgbGV2ZWxzQ29sb3JzLCBzdWJTeXN0ZW1MZXZlbHMgfSBmcm9tICcuLi9sZXZlbHMnO1xuaW1wb3J0IHsgcGFkTGVmdCwgcGFkUmlnaHQgfSBmcm9tICcuLi91dGlscyc7XG5cbmV4cG9ydCBjb25zdCBDVVNUT01fUEFEX0xFTkdUSCA9IDE7XG5leHBvcnQgY29uc3QgRk9STUFUX0RBVEUgPSAnWVlZWS1NTS1ERCBISDptbTpzcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBpc09iamVjdChvYmo6IHVua25vd24pOiBib29sZWFuIHtcbiAgcmV0dXJuIF8uaXNPYmplY3Qob2JqKSAmJiBfLmlzTnVsbChvYmopID09PSBmYWxzZSAmJiBfLmlzQXJyYXkob2JqKSA9PT0gZmFsc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRMb2dnaW5nRGF0ZSh0aW1lOiBudW1iZXIsIG1lc3NhZ2UpOiBzdHJpbmcge1xuICBjb25zdCB0aW1lRm9ybWF0dGVkID0gZGF5anModGltZSkuZm9ybWF0KEZPUk1BVF9EQVRFKTtcblxuICByZXR1cm4gYFske3RpbWVGb3JtYXR0ZWR9XSR7bWVzc2FnZX1gO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByZXR0eU9wdGlvbnNFeHRlbmRlZCBleHRlbmRzIFByZXR0eU9wdGlvbnMge1xuICBwcmV0dHlTdGFtcDogYm9vbGVhbjtcbn1cbmxldCBMRVZFTF9WQUxVRV9NQVggPSAwO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGd1YXJkLWZvci1pblxuZm9yIChjb25zdCBsIGluIGxldmVsc0NvbG9ycykge1xuICBMRVZFTF9WQUxVRV9NQVggPSBNYXRoLm1heChMRVZFTF9WQUxVRV9NQVgsIGwubGVuZ3RoKTtcbn1cblxuY29uc3QgRVJST1JfRkxBRyA9ICchJztcblxuZXhwb3J0IGludGVyZmFjZSBPYmplY3RUZW1wbGF0ZSB7XG4gIGxldmVsOiBMZXZlbENvZGU7XG4gIG1zZzogc3RyaW5nO1xuICBzdWI/OiBzdHJpbmc7XG4gIFtrZXk6IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IG9iamVjdCB8IG51bGwgfCB2b2lkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmlsbEluTXNnVGVtcGxhdGUobXNnLCB0ZW1wbGF0ZU9wdGlvbnM6IE9iamVjdFRlbXBsYXRlLCBjb2xvcnMpOiBzdHJpbmcge1xuICBjb25zdCB0ZW1wbGF0ZVJlZ2V4ID0gL0B7KCE/WyRBLVphLXpfXVskMC05QS1aYS16XFwuX10qKX0vZztcblxuICByZXR1cm4gbXNnLnJlcGxhY2UodGVtcGxhdGVSZWdleCwgKF8sIG5hbWUpOiBzdHJpbmcgPT4ge1xuICAgIGxldCBzdHIgPSB0ZW1wbGF0ZU9wdGlvbnM7XG4gICAgbGV0IGlzRXJyb3I7XG4gICAgaWYgKG5hbWVbMF0gPT09IEVSUk9SX0ZMQUcpIHtcbiAgICAgIG5hbWUgPSBuYW1lLnN1YnN0cigxKTtcbiAgICAgIGlzRXJyb3IgPSB0cnVlO1xuICAgIH1cblxuICAgIC8vIG9iamVjdCBjYW4gYmUgQHtmb28uYmFyLn1cbiAgICBjb25zdCBsaXN0QWNjZXNzb3JzID0gbmFtZS5zcGxpdCgnLicpO1xuICAgIGZvciAobGV0IHByb3BlcnR5ID0gMDsgcHJvcGVydHkgPCBsaXN0QWNjZXNzb3JzLmxlbmd0aDsgcHJvcGVydHkrKykge1xuICAgICAgY29uc3QgaWQgPSBsaXN0QWNjZXNzb3JzW3Byb3BlcnR5XTtcbiAgICAgIGlmIChpc09iamVjdChzdHIpKSB7XG4gICAgICAgIHN0ciA9IChzdHIgYXMgb2JqZWN0KVtpZF07XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBzdHIgPT09ICdzdHJpbmcnKSB7XG4gICAgICBpZiAoY29sb3JzID09PSBmYWxzZSB8fCAoc3RyIGFzIHN0cmluZykuaW5jbHVkZXMoJ1xcbicpKSB7XG4gICAgICAgIHJldHVybiBzdHI7XG4gICAgICB9IGVsc2UgaWYgKGlzRXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIHJlZChzdHIpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGdyZWVuKHN0cik7XG4gICAgfVxuXG4gICAgLy8gb2JqZWN0LCBzaG93SGlkZGVuLCBkZXB0aCwgY29sb3JzXG4gICAgcmV0dXJuIGluc3BlY3Qoc3RyLCB1bmRlZmluZWQsIG51bGwsIGNvbG9ycyk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBnZXRNZXNzYWdlKGRlYnVnTGV2ZWwsIG1zZywgc3ViLCB0ZW1wbGF0ZU9iamVjdHMsIGhhc0NvbG9ycykge1xuICBjb25zdCBmaW5hbE1lc3NhZ2UgPSBmaWxsSW5Nc2dUZW1wbGF0ZShtc2csIHRlbXBsYXRlT2JqZWN0cywgaGFzQ29sb3JzKTtcblxuICBjb25zdCBzdWJTeXN0ZW1UeXBlID0gc3ViU3lzdGVtTGV2ZWxzLmNvbG9yW3N1YiA/PyAnZGVmYXVsdCddO1xuICBpZiAoaGFzQ29sb3JzKSB7XG4gICAgY29uc3QgbG9nU3RyaW5nID0gYCR7bGV2ZWxzQ29sb3JzW2RlYnVnTGV2ZWxdKHBhZFJpZ2h0KGRlYnVnTGV2ZWwsIExFVkVMX1ZBTFVFX01BWCkpfSR7d2hpdGUoYCR7c3ViU3lzdGVtVHlwZX0gJHtmaW5hbE1lc3NhZ2V9YCl9YDtcblxuICAgIHJldHVybiBwYWRMZWZ0KGxvZ1N0cmluZyk7XG4gIH1cbiAgY29uc3QgbG9nU3RyaW5nID0gYCR7cGFkUmlnaHQoZGVidWdMZXZlbCwgTEVWRUxfVkFMVUVfTUFYKX0ke3N1YlN5c3RlbVR5cGV9ICR7ZmluYWxNZXNzYWdlfWA7XG5cbiAgcmV0dXJuIHBhZFJpZ2h0KGxvZ1N0cmluZyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmludE1lc3NhZ2UodGVtcGxhdGVPYmplY3RzOiBPYmplY3RUZW1wbGF0ZSwgb3B0aW9uczogUHJldHR5T3B0aW9uc0V4dGVuZGVkLCBoYXNDb2xvcnMgPSB0cnVlKTogc3RyaW5nIHtcbiAgY29uc3QgeyBwcmV0dHlTdGFtcCB9ID0gb3B0aW9ucztcbiAgY29uc3QgeyBsZXZlbCwgbXNnLCBzdWIgfSA9IHRlbXBsYXRlT2JqZWN0cztcbiAgY29uc3QgZGVidWdMZXZlbCA9IGNhbGN1bGF0ZUxldmVsKGxldmVsKTtcbiAgY29uc3QgbG9nTWVzc2FnZSA9IGdldE1lc3NhZ2UoZGVidWdMZXZlbCwgbXNnLCBzdWIsIHRlbXBsYXRlT2JqZWN0cywgaGFzQ29sb3JzKTtcblxuICByZXR1cm4gcHJldHR5U3RhbXAgPyBmb3JtYXRMb2dnaW5nRGF0ZSh0ZW1wbGF0ZU9iamVjdHMudGltZSBhcyBudW1iZXIsIGxvZ01lc3NhZ2UpIDogbG9nTWVzc2FnZTtcbn1cbiJdfQ==
|
|
@@ -70,4 +70,4 @@ const subSystemLevels = {
|
|
|
70
70
|
}
|
|
71
71
|
};
|
|
72
72
|
exports.subSystemLevels = subSystemLevels;
|
|
73
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
73
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvbG9nZ2VyL2xldmVscy50cyJdLCJuYW1lcyI6WyJjYWxjdWxhdGVMZXZlbCIsImxldmVsQ29kZSIsImxldmVsc0NvbG9ycyIsImZhdGFsIiwicmVkIiwiZXJyb3IiLCJ3YXJuIiwieWVsbG93IiwiaHR0cCIsIm1hZ2VudGEiLCJpbmZvIiwiY3lhbiIsImRlYnVnIiwiZ3JlZW4iLCJ0cmFjZSIsIndoaXRlIiwiQVJST1dTIiwic3ViU3lzdGVtTGV2ZWxzIiwiY29sb3IiLCJpbiIsIkxFRlQiLCJvdXQiLCJSSUdIVCIsImZzIiwiRVFVQUwiLCJkZWZhdWx0IiwiTkVVVFJBTCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTs7QUFNTyxTQUFTQSxjQUFULENBQXdCQyxTQUF4QixFQUF3RDtBQUM3RCxVQUFRLElBQVI7QUFDRSxTQUFLQSxTQUFTLEtBQUssRUFBbkI7QUFDRSxhQUFPLE9BQVA7O0FBQ0YsU0FBS0EsU0FBUyxLQUFLLEVBQW5CO0FBQ0UsYUFBTyxPQUFQOztBQUNGLFNBQUtBLFNBQVMsS0FBSyxFQUFuQjtBQUNFLGFBQU8sTUFBUDs7QUFDRixTQUFLQSxTQUFTLEtBQUssRUFBbkI7QUFDRSxhQUFPLE1BQVA7O0FBQ0YsU0FBS0EsU0FBUyxLQUFLLEVBQW5CO0FBQ0UsYUFBTyxNQUFQOztBQUNGLFNBQUtBLFNBQVMsS0FBSyxFQUFuQjtBQUNFLGFBQU8sT0FBUDs7QUFDRixTQUFLQSxTQUFTLEtBQUssRUFBbkI7QUFDRSxhQUFPLE9BQVA7O0FBQ0Y7QUFDRSxhQUFPLE9BQVA7QUFoQko7QUFrQkQ7O0FBRU0sTUFBTUMsWUFBWSxHQUFHO0FBQzFCQyxFQUFBQSxLQUFLLEVBQUVDLFVBRG1CO0FBRTFCQyxFQUFBQSxLQUFLLEVBQUVELFVBRm1CO0FBRzFCRSxFQUFBQSxJQUFJLEVBQUVDLGFBSG9CO0FBSTFCQyxFQUFBQSxJQUFJLEVBQUVDLGNBSm9CO0FBSzFCQyxFQUFBQSxJQUFJLEVBQUVDLFdBTG9CO0FBTTFCQyxFQUFBQSxLQUFLLEVBQUVDLFlBTm1CO0FBTzFCQyxFQUFBQSxLQUFLLEVBQUVDO0FBUG1CLENBQXJCOztJQVVGQyxNOztXQUFBQSxNO0FBQUFBLEVBQUFBLE07QUFBQUEsRUFBQUEsTTtBQUFBQSxFQUFBQSxNO0FBQUFBLEVBQUFBLE07R0FBQUEsTSxLQUFBQSxNOztBQU9FLE1BQU1DLGVBQWUsR0FBRztBQUM3QkMsRUFBQUEsS0FBSyxFQUFFO0FBQ0xDLElBQUFBLEVBQUUsRUFBRSxrQkFBTUgsTUFBTSxDQUFDSSxJQUFiLENBREM7QUFFTEMsSUFBQUEsR0FBRyxFQUFFLG1CQUFPTCxNQUFNLENBQUNNLEtBQWQsQ0FGQTtBQUdMQyxJQUFBQSxFQUFFLEVBQUUsa0JBQU1QLE1BQU0sQ0FBQ1EsS0FBYixDQUhDO0FBSUxDLElBQUFBLE9BQU8sRUFBRSxpQkFBS1QsTUFBTSxDQUFDVSxPQUFaO0FBSkosR0FEc0I7QUFPN0JYLEVBQUFBLEtBQUssRUFBRTtBQUNMSSxJQUFBQSxFQUFFLEVBQUVILE1BQU0sQ0FBQ0ksSUFETjtBQUVMQyxJQUFBQSxHQUFHLEVBQUVMLE1BQU0sQ0FBQ00sS0FGUDtBQUdMQyxJQUFBQSxFQUFFLEVBQUVQLE1BQU0sQ0FBQ1EsS0FITjtBQUlMQyxJQUFBQSxPQUFPLEVBQUVULE1BQU0sQ0FBQ1U7QUFKWDtBQVBzQixDQUF4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGJsYWNrLCBibHVlLCBjeWFuLCBncmVlbiwgbWFnZW50YSwgcmVkLCB3aGl0ZSwgeWVsbG93IH0gZnJvbSAna2xldXInO1xuXG5leHBvcnQgdHlwZSBMb2dMZXZlbCA9ICd0cmFjZScgfCAnZGVidWcnIHwgJ2luZm8nIHwgJ2h0dHAnIHwgJ3dhcm4nIHwgJ2Vycm9yJyB8ICdmYXRhbCc7XG5cbmV4cG9ydCB0eXBlIExldmVsQ29kZSA9IG51bWJlcjtcblxuZXhwb3J0IGZ1bmN0aW9uIGNhbGN1bGF0ZUxldmVsKGxldmVsQ29kZTogTGV2ZWxDb2RlKTogTG9nTGV2ZWwge1xuICBzd2l0Y2ggKHRydWUpIHtcbiAgICBjYXNlIGxldmVsQ29kZSA9PT0gMTA6XG4gICAgICByZXR1cm4gJ3RyYWNlJztcbiAgICBjYXNlIGxldmVsQ29kZSA9PT0gMjA6XG4gICAgICByZXR1cm4gJ2RlYnVnJztcbiAgICBjYXNlIGxldmVsQ29kZSA9PT0gMjU6XG4gICAgICByZXR1cm4gJ2h0dHAnO1xuICAgIGNhc2UgbGV2ZWxDb2RlID09PSAzMDpcbiAgICAgIHJldHVybiAnaW5mbyc7XG4gICAgY2FzZSBsZXZlbENvZGUgPT09IDQwOlxuICAgICAgcmV0dXJuICd3YXJuJztcbiAgICBjYXNlIGxldmVsQ29kZSA9PT0gNTA6XG4gICAgICByZXR1cm4gJ2Vycm9yJztcbiAgICBjYXNlIGxldmVsQ29kZSA9PT0gNjA6XG4gICAgICByZXR1cm4gJ2ZhdGFsJztcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuICdmYXRhbCc7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGxldmVsc0NvbG9ycyA9IHtcbiAgZmF0YWw6IHJlZCxcbiAgZXJyb3I6IHJlZCxcbiAgd2FybjogeWVsbG93LFxuICBodHRwOiBtYWdlbnRhLFxuICBpbmZvOiBjeWFuLFxuICBkZWJ1ZzogZ3JlZW4sXG4gIHRyYWNlOiB3aGl0ZSxcbn07XG5cbmVudW0gQVJST1dTIHtcbiAgTEVGVCA9ICc8LS0nLFxuICBSSUdIVCA9ICctLT4nLFxuICBFUVVBTCA9ICctPS0nLFxuICBORVVUUkFMID0gJy0tLScsXG59XG5cbmV4cG9ydCBjb25zdCBzdWJTeXN0ZW1MZXZlbHMgPSB7XG4gIGNvbG9yOiB7XG4gICAgaW46IGdyZWVuKEFSUk9XUy5MRUZUKSxcbiAgICBvdXQ6IHllbGxvdyhBUlJPV1MuUklHSFQpLFxuICAgIGZzOiBibGFjayhBUlJPV1MuRVFVQUwpLFxuICAgIGRlZmF1bHQ6IGJsdWUoQVJST1dTLk5FVVRSQUwpLFxuICB9LFxuICB3aGl0ZToge1xuICAgIGluOiBBUlJPV1MuTEVGVCxcbiAgICBvdXQ6IEFSUk9XUy5SSUdIVCxcbiAgICBmczogQVJST1dTLkVRVUFMLFxuICAgIGRlZmF1bHQ6IEFSUk9XUy5ORVVUUkFMLFxuICB9LFxufTtcbiJdfQ==
|
|
@@ -8,17 +8,17 @@ exports.getLogger = getLogger;
|
|
|
8
8
|
exports.logger = void 0;
|
|
9
9
|
exports.setup = setup;
|
|
10
10
|
|
|
11
|
-
var
|
|
11
|
+
var _debug = _interopRequireDefault(require("debug"));
|
|
12
12
|
|
|
13
13
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
14
14
|
|
|
15
|
-
var
|
|
15
|
+
var _pino = _interopRequireDefault(require("pino"));
|
|
16
16
|
|
|
17
17
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
18
18
|
|
|
19
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
19
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
20
20
|
|
|
21
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]
|
|
21
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
22
22
|
|
|
23
23
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
24
24
|
|
|
@@ -123,7 +123,11 @@ function setup(options = [DEFAULT_LOGGER_CONF]) {
|
|
|
123
123
|
|
|
124
124
|
if (loggerConfig.type === 'file') {
|
|
125
125
|
debug('logging file enabled');
|
|
126
|
-
|
|
126
|
+
|
|
127
|
+
const destination = _pino.default.destination(loggerConfig.path);
|
|
128
|
+
|
|
129
|
+
process.on('SIGUSR2', () => destination.reopen());
|
|
130
|
+
exports.logger = logger = createLogger(pinoConfig, destination, loggerConfig.format);
|
|
127
131
|
} else if (loggerConfig.type === 'rotating-file') {
|
|
128
132
|
process.emitWarning('rotating-file type is not longer supported, consider use [logrotate] instead');
|
|
129
133
|
debug('logging stdout enabled');
|
|
@@ -155,4 +159,4 @@ function setup(options = [DEFAULT_LOGGER_CONF]) {
|
|
|
155
159
|
process.on('SIGTERM', () => finalHandler(null, 'SIGTERM'));
|
|
156
160
|
}
|
|
157
161
|
}
|
|
158
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvbG9nZ2VyL2xvZ2dlci50cyJdLCJuYW1lcyI6WyJpc1Byb2QiLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJsb2dnZXIiLCJkZWJ1ZyIsIkRFRkFVTFRfTE9HX0ZPUk1BVCIsImNyZWF0ZUxvZ2dlciIsIm9wdGlvbnMiLCJsZXZlbCIsImRlc3RpbmF0aW9uIiwicGlubyIsImZvcm1hdCIsInByZXR0eVByaW50T3B0aW9ucyIsInN1cHByZXNzRmx1c2hTeW5jV2FybmluZyIsIl8iLCJpc05pbCIsInBpbm9Db25maWciLCJjdXN0b21MZXZlbHMiLCJodHRwIiwic2VyaWFsaXplcnMiLCJlcnIiLCJzdGRTZXJpYWxpemVycyIsInJlcSIsInJlcyIsIk9iamVjdCIsImFzc2lnbiIsInByZXR0eVByaW50IiwibGV2ZWxGaXJzdCIsInByZXR0eVN0YW1wIiwicHJldHRpZmllciIsInJlcXVpcmUiLCJERUJVRyIsIm9uIiwibHZsIiwidmFsIiwicHJldkx2bCIsInByZXZWYWwiLCJnZXRMb2dnZXIiLCJlbWl0V2FybmluZyIsIkRFRkFVTFRfTE9HR0VSX0NPTkYiLCJ0eXBlIiwic2V0dXAiLCJpc0xlZ2FjeUNvbmYiLCJBcnJheSIsImlzQXJyYXkiLCJkZXByZWNhdGVNZXNzYWdlIiwibG9nZ2VyQ29uZmlnIiwicGF0aCIsImZpbmFsSGFuZGxlciIsImZpbmFsIiwiZmluYWxMb2dnZXIiLCJldmVudCIsImluZm8iLCJlcnJvciIsImV4aXQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7OztBQUlBLFNBQVNBLE1BQVQsR0FBa0I7QUFDaEIsU0FBT0MsT0FBTyxDQUFDQyxHQUFSLENBQVlDLFFBQVosS0FBeUIsWUFBaEM7QUFDRDs7QUFFTSxJQUFJQyxNQUFKOztBQUNQLE1BQU1DLEtBQUssR0FBRyxvQkFBVyxrQkFBWCxDQUFkO0FBQ0EsTUFBTUMsa0JBQWtCLEdBQUdOLE1BQU0sS0FBSyxN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LFFBQVgsRUFBcUIsTUFBTWdCLFlBQVksQ0FBQyxJQUFELEVBQU8sUUFBUCxDQUF2QztBQUNBaEQsSUFBQUEsT0FBTyxDQUFDZ0MsRUFBUixDQUFXLFNBQVgsRUFBc0IsTUFBTWdCLFlBQVksQ0FBQyxJQUFELEVBQU8sU0FBUCxDQUF4QztBQUNBaEQsSUFBQUEsT0FBTyxDQUFDZ0MsRUFBUixDQUFXLFNBQVgsRUFBc0IsTUFBTWdCLFlBQVksQ0FBQyxJQUFELEVBQU8sU0FBUCxDQUF4QztBQUNEO0FBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGlubyBmcm9tICdwaW5vJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgYnVpbGREZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgeyB5ZWxsb3cgfSBmcm9tICdrbGV1cic7XG5pbXBvcnQgeyBwYWRMZWZ0IH0gZnJvbSAnLi91dGlscyc7XG5cbmZ1bmN0aW9uIGlzUHJvZCgpIHtcbiAgcmV0dXJuIHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbic7XG59XG5cbmV4cG9ydCBsZXQgbG9nZ2VyO1xuY29uc3QgZGVidWcgPSBidWlsZERlYnVnKCd2ZXJkYWNjaW86bG9nZ2VyJyk7XG5jb25zdCBERUZBVUxUX0xPR19GT1JNQVQgPSBpc1Byb2QoKSA/ICdqc29uJyA6ICdwcmV0dHknO1xuXG5leHBvcnQgdHlwZSBMb2dQbHVnaW4gPSB7XG4gIGRlc3Q6IHN0cmluZztcbiAgb3B0aW9ucz86IGFueVtdO1xufTtcblxuZXhwb3J0IHR5cGUgTG9nVHlwZSA9ICdmaWxlJyB8ICdzdGRvdXQnO1xuZXhwb3J0IHR5cGUgTG9nRm9ybWF0ID0gJ2pzb24nIHwgJ3ByZXR0eS10aW1lc3RhbXBlZCcgfCAncHJldHR5JztcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUxvZ2dlcihcbiAgb3B0aW9ucyA9IHtsZXZlbDogJ2h0dHAnfSxcbiAgZGVzdGluYXRpb24gPSBwaW5vLmRlc3RpbmF0aW9uKDEpLFxuICBmb3JtYXQ6IExvZ0Zvcm1hdCA9IERFRkFVTFRfTE9HX0ZPUk1BVCxcbiAgcHJldHR5UHJpbnRPcHRpb25zID0ge1xuICAgIC8vIHdlIGhpZGUgd2FybmluZyBzaW5jZSB0aGUgcHJldHRpZmllciBzaG91bGQgbm90IGJlIHVzZWQgaW4gcHJvZHVjdGlvblxuICAgIC8vIGh0dHBzOi8vZ2V0cGluby5pby8jL2RvY3MvcHJldHR5P2lkPXByZXR0aWZpZXItYXBpXG4gICAgc3VwcHJlc3NGbHVzaFN5bmNXYXJuaW5nOiB0cnVlLFxuICB9XG4pIHtcbiAgaWYgKF8uaXNOaWwoZm9ybWF0KSkge1xuICAgIGZvcm1hdCA9IERFRkFVTFRfTE9HX0ZPUk1BVDtcbiAgfVxuXG4gIGxldCBwaW5vQ29uZmlnID0ge1xuICAgIGN1c3RvbUxldmVsczoge1xuICAgICAgaHR0cDogMjUsXG4gICAgfSxcbiAgICAuLi5vcHRpb25zLFxuICAgIGxldmVsOiBvcHRpb25zLmxldmVsLFxuICAgIHNlcmlhbGl6ZXJzOiB7XG4gICAgICBlcnI6IHBpbm8uc3RkU2VyaWFsaXplcnMuZXJyLFxuICAgICAgcmVxOiBwaW5vLnN0ZFNlcmlhbGl6ZXJzLnJlcSxcbiAgICAgIHJlczogcGluby5zdGRTZXJpYWxpemVycy5yZXMsXG4gICAgfSxcbiAgfTtcblxuICBkZWJ1ZygnaGFzIHByZXR0aWZpZXI/ICVvJywgIWlzUHJvZCgpKTtcbiAgLy8gcHJldHR5IGxvZ3MgYXJlIG5vdCBhbGxvd2VkIGluIHByb2R1Y3Rpb24gZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnNcbiAgaWYgKChmb3JtYXQgPT09IERFRkFVTFRfTE9HX0ZPUk1BVCB8fCBmb3JtYXQgIT09ICdqc29uJykgJiYgaXNQcm9kKCkgPT09IGZhbHNlKSB7XG4gICAgcGlub0NvbmZpZyA9IE9iamVjdC5hc3NpZ24oe30sIHBpbm9Db25maWcsIHtcbiAgICAgIC8vIG1vcmUgaW5mb1xuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3Bpbm9qcy9waW5vLXByZXR0eS9pc3N1ZXMvMzdcbiAgICAgIHByZXR0eVByaW50OiB7XG4gICAgICAgIGxldmVsRmlyc3Q6IHRydWUsXG4gICAgICAgIHByZXR0eVN0YW1wOiBmb3JtYXQgPT09ICdwcmV0dHktdGltZXN0YW1wZWQnLFxuICAgICAgICAuLi5wcmV0dHlQcmludE9wdGlvbnMsXG4gICAgICB9LFxuICAgICAgcHJldHRpZmllcjogcmVxdWlyZSgnLi9mb3JtYXR0ZXInKSxcbiAgICB9KTtcbiAgfVxuICBjb25zdCBsb2dnZXIgPSBwaW5vKHBpbm9Db25maWcsIGRlc3RpbmF0aW9uKTtcblxuICBpZihwcm9jZXNzLmVudi5ERUJVRykge1xuICAgIGxvZ2dlci5vbignbGV2ZWwtY2hhbmdlJywgKGx2bCwgdmFsLCBwcmV2THZsLCBwcmV2VmFsKSA9PiB7XG4gICAgICBkZWJ1ZygnJXMgKCVkKSB3YXMgY2hhbmdlZCB0byAlcyAoJWQpJywgbHZsLCB2YWwsIHByZXZMdmwsIHByZXZWYWwpO1xuICAgIH0pXG4gIH1cblxuICByZXR1cm4gbG9nZ2VyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TG9nZ2VyKCkge1xuICBpZiAoXy5pc05pbChsb2dnZXIpKSB7XG4gICAgcHJvY2Vzcy5lbWl0V2FybmluZygnbG9nZ2VyIGlzIG5vdCBkZWZpbmVkJyk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgcmV0dXJuIGxvZ2dlcjtcbn1cblxuY29uc3QgREVGQVVMVF9MT0dHRVJfQ09ORjogTG9nZ2VyQ29uZmlnSXRlbSA9IHtcbiAgdHlwZTogJ3N0ZG91dCcsXG4gIGZvcm1hdDogJ3ByZXR0eScsXG4gIGxldmVsOiAnaHR0cCcsXG59O1xuXG5leHBvcnQgdHlwZSBMb2dnZXJDb25maWdJdGVtID0ge1xuICB0eXBlPzogTG9nVHlwZTtcbiAgcGx1Z2luPzogTG9nUGx1Z2luO1xuICBmb3JtYXQ/OiBMb2dGb3JtYXQ7XG4gIHBhdGg/OiBzdHJpbmc7XG4gIGxldmVsPzogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgTG9nZ2VyQ29uZmlnID0gTG9nZ2VyQ29uZmlnSXRlbVtdO1xuXG5leHBvcnQgZnVuY3Rpb24gc2V0dXAob3B0aW9uczogTG9nZ2VyQ29uZmlnIHwgTG9nZ2VyQ29uZmlnSXRlbSA9IFtERUZBVUxUX0xPR0dFUl9DT05GXSkge1xuICBkZWJ1Zygnc2V0dXAgbG9nZ2VyJyk7XG4gIGNvbnN0IGlzTGVnYWN5Q29uZiA9IEFycmF5LmlzQXJyYXkob3B0aW9ucyk7XG4gIGlmIChpc0xlZ2FjeUNvbmYpIHtcbiAgICBjb25zdCBkZXByZWNhdGVNZXNzYWdlID0gJ2RlcHJlY2F0ZTogbXVsdGlwbGUgbG9nZ2VyIGNvbmZpZ3VyYXRpb24gaXMgZGVwcmVjYXRlZCwgcGxlYXNlIGNoZWNrIHRoZSBtaWdyYXRpb24gZ3VpZGUuJztcbiAgICBwcm9jZXNzLmVtaXRXYXJuaW5nKGRlcHJlY2F0ZU1lc3NhZ2UpO1xuICB9XG5cbiAgLy8gdmVyZGFjY2lvIDUgZG9lcyBub3QgYWxsb3cgbXVsdGlwbGUgbG9nZ2VyIGNvbmZpZ3VyYXRpb25cbiAgLy8gYmFja3dhcmQgY29tcGF0aWJsZSwgcGljayBvbmx5IHRoZSBmaXJzdCBvcHRpb25cbiAgLy8gbmV4dCBtYWpvciB3aWxsIHRocm93biBhbiBlcnJvclxuICBsZXQgbG9nZ2VyQ29uZmlnID0gaXNMZWdhY3lDb25mID8gb3B0aW9uc1swXSA6IG9wdGlvbnM7XG4gIGlmICghbG9nZ2VyQ29uZmlnPy5sZXZlbCkge1xuICAgIGxvZ2dlckNvbmZpZyA9IE9iamVjdC5hc3NpZ24oe30sIHtcbiAgICAgIGxldmVsOiAnaHR0cCcsXG4gICAgfSwgbG9nZ2VyQ29uZmlnKTtcbiAgfVxuICBjb25zdCBwaW5vQ29uZmlnID0geyBsZXZlbDogbG9nZ2VyQ29uZmlnLmxldmVsIH07XG4gIGlmIChsb2dnZXJDb25maWcudHlwZSA9PT0gJ2ZpbGUnKSB7XG4gICAgZGVidWcoJ2xvZ2dpbmcgZmlsZSBlbmFibGVkJyk7XG4gICAgbG9nZ2VyID0gY3JlYXRlTG9nZ2VyKHBpbm9Db25maWcsIHBpbm8uZGVzdGluYXRpb24obG9nZ2VyQ29uZmlnLnBhdGgpLCBsb2dnZXJDb25maWcuZm9ybWF0KTtcbiAgfSBlbHNlIGlmIChsb2dnZXJDb25maWcudHlwZSA9PT0gJ3JvdGF0aW5nLWZpbGUnKSB7XG4gICAgcHJvY2Vzcy5lbWl0V2FybmluZygncm90YXRpbmctZmlsZSB0eXBlIGlzIG5vdCBsb25nZXIgc3VwcG9ydGVkLCBjb25zaWRlciB1c2UgW2xvZ3JvdGF0ZV0gaW5zdGVhZCcpO1xuICAgIGRlYnVnKCdsb2dnaW5nIHN0ZG91dCBlbmFibGVkJyk7XG4gICAgbG9nZ2VyID0gY3JlYXRlTG9nZ2VyKHBpbm9Db25maWcsIHBpbm8uZGVzdGluYXRpb24oMSksIGxvZ2dlckNvbmZpZy5mb3JtYXQpO1xuICB9IGVsc2Uge1xuICAgIGRlYnVnKCdsb2dnaW5nIHN0ZG91dCBlbmFibGVkJyk7XG4gICAgbG9nZ2VyID0gY3JlYXRlTG9nZ2VyKHBpbm9Db25maWcsIHBpbm8uZGVzdGluYXRpb24oMSksIGxvZ2dlckNvbmZpZy5mb3JtYXQpO1xuICB9XG5cbiAgaWYgKGlzUHJvZCgpKSB7XG4gICAgLy8gd2h5IG9ubHkgb24gcHJvZD8gaHR0cHM6Ly9naXRodWIuY29tL3Bpbm9qcy9waW5vL2lzc3Vlcy85MjAjaXNzdWVjb21tZW50LTcxMDgwNzY2N1xuICAgIGNvbnN0IGZpbmFsSGFuZGxlciA9IHBpbm8uZmluYWwobG9nZ2VyLCAoZXJyLCBmaW5hbExvZ2dlciwgZXZlbnQpID0+IHtcbiAgICAgIGZpbmFsTG9nZ2VyLmluZm8oYCR7ZXZlbnR9IGNhdWdodGApO1xuICAgICAgaWYgKGVycikge1xuICAgICAgICBmaW5hbExvZ2dlci5lcnJvcihlcnIsICdlcnJvciBjYXVzZWQgZXhpdCcpO1xuICAgICAgfVxuICAgICAgcHJvY2Vzcy5leGl0KGVyciA/IDEgOiAwKTtcbiAgICB9KTtcblxuICAgIHByb2Nlc3Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uJywgKGVycikgPT4gZmluYWxIYW5kbGVyKGVyciwgJ3VuY2F1Z2h0RXhjZXB0aW9uJykpO1xuICAgIHByb2Nlc3Mub24oJ3VuaGFuZGxlZFJlamVjdGlvbicsIChlcnIpID0+IGZpbmFsSGFuZGxlcihlcnIgYXMgRXJyb3IsICd1bmhhbmRsZWRSZWplY3Rpb24nKSk7XG4gICAgcHJvY2Vzcy5vbignYmVmb3JlRXhpdCcsICgpID0+IGZpbmFsSGFuZGxlcihudWxsLCAnYmVmb3JlRXhpdCcpKTtcbiAgICBwcm9jZXNzLm9uKCdleGl0JywgKCkgPT4gZmluYWxIYW5kbGVyKG51bGwsICdleGl0JykpO1xuICAgIHByb2Nlc3Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uJywgKGVycikgPT4gZmluYWxIYW5kbGVyKGVyciwgJ3VuY2F1Z2h0RXhjZXB0aW9uJykpO1xuICAgIHByb2Nlc3Mub24oJ1NJR0lOVCcsICgpID0+IGZpbmFsSGFuZGxlcihudWxsLCAnU0lHSU5UJykpO1xuICAgIHByb2Nlc3Mub24oJ1NJR1FVSVQnLCAoKSA9PiBmaW5hbEhhbmRsZXIobnVsbCwgJ1NJR1FVSVQnKSk7XG4gICAgcHJvY2Vzcy5vbignU0lHVEVSTScsICgpID0+IGZpbmFsSGFuZGxlcihudWxsLCAnU0lHVEVSTScpKTtcbiAgfVxufVxuIl19
|
|
162
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvbG9nZ2VyL2xvZ2dlci50cyJdLCJuYW1lcyI6WyJpc1Byb2QiLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJsb2dnZXIiLCJkZWJ1ZyIsIkRFRkFVTFRfTE9HX0ZPUk1BVCIsImNyZWF0ZUxvZ2dlciIsIm9wdGlvbnMiLCJsZXZlbCIsImRlc3RpbmF0aW9uIiwicGlubyIsImZvcm1hdCIsInByZXR0eVByaW50T3B0aW9ucyIsInN1cHByZXNzRmx1c2hTeW5jV2FybmluZyIsIl8iLCJpc05pbCIsInBpbm9Db25maWciLCJjdXN0b21MZXZlbHMiLCJodHRwIiwic2VyaWFsaXplcnMiLCJlcnIiLCJzdGRTZXJpYWxpemVycyIsInJlcSIsInJlcyIsIk9iamVjdCIsImFzc2lnbiIsInByZXR0eVByaW50IiwibGV2ZWxGaXJzdCIsInByZXR0eVN0YW1wIiwicHJldHRpZmllciIsInJlcXVpcmUiLCJERUJVRyIsIm9uIiwibHZsIiwidmFsIiwicHJldkx2bCIsInByZXZWYWwiLCJnZXRMb2dnZXIiLCJlbWl0V2FybmluZyIsIkRFRkFVTFRfTE9HR0VSX0NPTkYiLCJ0eXBlIiwic2V0dXAiLCJpc0xlZ2FjeUNvbmYiLCJBcnJheSIsImlzQXJyYXkiLCJkZXByZWNhdGVNZXNzYWdlIiwibG9nZ2VyQ29uZmlnIiwicGF0aCIsInJlb3BlbiIsImZpbmFsSGFuZGxlciIsImZpbmFsIiwiZmluYWxMb2dnZXIiLCJldmVudCIsImluZm8iLCJlcnJvciIsImV4aXQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFDQTs7Ozs7Ozs7OztBQUlBLFNBQVNBLE1BQVQsR0FBa0I7QUFDaEIsU0FBT0MsT0FBTyxDQUFDQyxHQUFSLENBQVlDLFFBQVosS0FBeUIsWUFBaEM7QUFDRDs7QUFFTSxJQUFJQyxNQUFKOztBQUNQLE1BQU1DLEtBQUssR0FBRyxvQkFBVyxrQkFBWCxDQUFkO0FBQ0EsTUFBTUMsa0JBQWtCLEdBQUdOLE1BQU0sS0FBSyxNQUFMLEdBQWMsUUFBL0M7O0FBVU8sU0FBU08sWUFBVCxDQUNMQyxPQUFPLEdBQUc7QUFBRUMsRUFBQUEsS0FBSyxFQUFFO0FBQVQsQ0FETCxFQUVMQyxXQUFXLEdBQUdDLGNBQUtELFdBQUwsQ0FBaUIsQ0FBakIsQ0FGVCxFQUdMRSxNQUFpQixHQUFHTixrQkFIZixFQUlMTyxrQkFBa0IsR0FBRztBQUNuQjtBQUNBO0FBQ0FDLEVBQUFBLHdCQUF3QixFQUFFO0FBSFAsQ0FKaEIsRUFTTDtBQUNBLE1BQUlDLGdCQUFFQyxLQUFGLENBQVFKLE1BQVIsQ0FBSixFQUFxQjtBQUNuQkEsSUFBQUEsTUFBTSxHQUFHTixrQkFBVDtBQUNEOztBQUVELE1BQUlXLFVBQVU7QUFDWkMsSUFBQUEsWUFBWSxFQUFFO0FBQ1pDLE1BQUFBLElBQUksRUFBRTtBQURNO0FBREYsS0FJVFgsT0FKUztBQUtaQyxJQUFBQSxLQUFLLEVBQUVELE9BQU8sQ0FBQ0MsS0FMSDtBQU1aVyxJQUFBQSxXQUFXLEVBQUU7QUFDWEMsTUFBQUEsR0FBRyxFQUFFVixjQUFLVyxjQUFMLENBQW9CRCxHQURkO0FBRVhFLE1BQUFBLEdBQUcsRUFBRVosY0FBS1csY0FBTCxDQUFvQkMsR0FGZDtBQUdYQyxNQUFBQSxHQUFHLEVBQUViLGNBQUtXLGNBQUwsQ0FBb0JFO0FBSGQ7QUFORCxJQUFkOztBQWFBbkIsRUFBQUEsS0FBSyxDQUFDLG9CQUFELEVBQXVCLENBQUNMLE1BQU0sRUFBOUIsQ0FBTCxDQWxCQSxDQW1CQTs7QUFDQSxNQUFJLENBQUNZLE1BQU0sS0FBS04sa0JBQVgsSUFBaUNNLE1BQU0sS0FBSyxNQUE3QyxLQUF3RFosTUFBTSxPQUFPLEtBQXpFLEVBQWdGO0FBQzlFaUIsSUFBQUEsVUFBVSxHQUFHUSxNQUFNLENBQUNDLE1BQVAsQ0FBYyxFQUFkLEVBQWtCVCxVQUFsQixFQUE4QjtBQUN6QztBQUNBO0FBQ0FVLE1BQUFBLFdBQVc7QUFDVEMsUUFBQUEsVUFBVSxFQUFFLElBREg7QUFFVEMsUUFBQUEsV0FBVyxFQUFFakIsTUFBTSxLQUFLO0FBRmYsU0FHTkMsa0JBSE0sQ0FIOEI7QUFRekNpQixNQUFBQSxVQUFVLEVBQUVDLE9BQU8sQ0FBQyxhQUFEO0FBUnNCLEtBQTlCLENBQWI7QUFVRDs7QUFDRCxRQUFNM0IsTUFBTSxHQUFHLG1CQUFLYSxVQUFMLEVBQWlCUCxXQUFqQixDQUFmOztBQUVBLE1BQUlULE9BQU8sQ0FBQ0MsR0FBUixDQUFZOEIsS0FBaEIsRUFBdUI7QUFDckI1QixJQUFBQSxNQUFNLENBQUM2QixFQUFQLENBQVUsY0FBVixFQUEwQixDQUFDQyxHQUFELEVBQU1DLEdBQU4sRUFBV0MsT0FBWCxFQUFvQkMsT0FBcEIsS0FBZ0M7QUFDeERoQyxNQUFBQSxLQUFLLENBQUMsZ0NBQUQsRUFBbUM2QixHQUFuQyxFQUF3Q0MsR0FBeEMsRUFBNkNDLE9BQTdDLEVBQXNEQyxPQUF0RCxDQUFMO0FBQ0QsS0FGRDtBQUdEOztBQUVELFNBQU9qQyxNQUFQO0FBQ0Q7O0FBRU0sU0FBU2tDLFNBQVQsR0FBcUI7QUFDMUIsTUFBSXZCLGdCQUFFQyxLQUFGLENBQVFaLE1BQVIsQ0FBSixFQUFxQjtBQUNuQkgsSUFBQUEsT0FBTyxDQUFDc0MsV0FBUixDQUFvQix1QkFBcEI7QUFDQTtBQUNEOztBQUVELFNBQU9uQyxNQUFQO0FBQ0Q7O0FBRUQsTUFBTW9DLG1CQUFxQyxHQUFHO0FBQzVDQyxFQUFBQSxJQUFJLEVBQUUsUUFEc0M7QUFFNUM3QixFQUFBQSxNQUFNLEVBQUUsUUFGb0M7QUFHNUNILEVBQUFBLEtBQUssRUFBRTtBQUhxQyxDQUE5Qzs7QUFnQk8sU0FBU2lDLEtBQVQsQ0FBZWxDLE9BQXdDLEdBQUcsQ0FBQ2dDLG1CQUFELENBQTFELEVBQWlGO0FBQUE7O0FBQ3RGbkMsRUFBQUEsS0FBSyxDQUFDLGNBQUQsQ0FBTDtBQUNBLFFBQU1zQyxZQUFZLEdBQUdDLEtBQUssQ0FBQ0MsT0FBTixDQUFjckMsT0FBZCxDQUFyQjs7QUFDQSxNQUFJbUMsWUFBSixFQUFrQjtBQUNoQixVQUFNRyxnQkFBZ0IsR0FBRywyRkFBekI7QUFDQTdDLElBQUFBLE9BQU8sQ0FBQ3NDLFdBQVIsQ0FBb0JPLGdCQUFwQjtBQUNELEdBTnFGLENBUXRGO0FBQ0E7QUFDQTs7O0FBQ0EsTUFBSUMsWUFBWSxHQUFHSixZQUFZLEdBQUduQyxPQUFPLENBQUMsQ0FBRCxDQUFWLEdBQWdCQSxPQUEvQzs7QUFDQSxNQUFJLG1CQUFDdUMsWUFBRCwwQ0FBQyxjQUFjdEMsS0FBZixDQUFKLEVBQTBCO0FBQ3hCc0MsSUFBQUEsWUFBWSxHQUFHdEIsTUFBTSxDQUFDQyxNQUFQLENBQ2IsRUFEYSxFQUViO0FBQ0VqQixNQUFBQSxLQUFLLEVBQUU7QUFEVCxLQUZhLEVBS2JzQyxZQUxhLENBQWY7QUFPRDs7QUFDRCxRQUFNOUIsVUFBVSxHQUFHO0FBQUVSLElBQUFBLEtBQUssRUFBRXNDLFlBQVksQ0FBQ3RDO0FBQXRCLEdBQW5COztBQUNBLE1BQUlzQyxZQUFZLENBQUNOLElBQWIsS0FBc0IsTUFBMUIsRUFBa0M7QUFDaENwQyxJQUFBQSxLQUFLLENBQUMsc0JBQUQsQ0FBTDs7QUFDQSxVQUFNSyxXQUFXLEdBQUdDLGNBQUtELFdBQUwsQ0FBaUJxQyxZQUFZLENBQUNDLElBQTlCLENBQXBCOztBQUNBL0MsSUFBQUEsT0FBTyxDQUFDZ0MsRUFBUixDQUFXLFNBQVgsRUFBc0IsTUFBTXZCLFdBQVcsQ0FBQ3VDLE1BQVosRUFBNUI7QUFDQSxxQkFBQTdDLE1BQU0sR0FBR0csWUFBWSxDQUFDVSxVQUFELEVBQWFQLFdBQWIsRUFBMEJxQyxZQUFZLENBQUNuQyxNQUF2QyxDQUFyQjtBQUNELEdBTEQsTUFLTyxJQUFJbUMsWUFBWSxDQUFDTixJQUFiLEtBQXNCLGVBQTFCLEVBQTJDO0FBQ2hEeEMsSUFBQUEsT0FBTyxDQUFDc0MsV0FBUixDQUFvQiw4RUFBcEI7QUFDQWxDLElBQUFBLEtBQUssQ0FBQyx3QkFBRCxDQUFMO0FBQ0EscUJBQUFELE1BQU0sR0FBR0csWUFBWSxDQUFDVSxVQUFELEVBQWFOLGNBQUtELFdBQUwsQ0FBaUIsQ0FBakIsQ0FBYixFQUFrQ3FDLFlBQVksQ0FBQ25DLE1BQS9DLENBQXJCO0FBQ0QsR0FKTSxNQUlBO0FBQ0xQLElBQUFBLEtBQUssQ0FBQyx3QkFBRCxDQUFMO0FBQ0EscUJBQUFELE1BQU0sR0FBR0csWUFBWSxDQUFDVSxVQUFELEVBQWFOLGNBQUtELFdBQUwsQ0FBaUIsQ0FBakIsQ0FBYixFQUFrQ3FDLFlBQVksQ0FBQ25DLE1BQS9DLENBQXJCO0FBQ0Q7O0FBRUQsTUFBSVosTUFBTSxFQUFWLEVBQWM7QUFDWjtBQUNBLFVBQU1rRCxZQUFZLEdBQUd2QyxjQUFLd0MsS0FBTCxDQUFXL0MsTUFBWCxFQUFtQixDQUFDaUIsR0FBRCxFQUFNK0IsV0FBTixFQUFtQkMsS0FBbkIsS0FBNkI7QUFDbkVELE1BQUFBLFdBQVcsQ0FBQ0UsSUFBWixDQUFrQixHQUFFRCxLQUFNLFNBQTFCOztBQUNBLFVBQUloQyxHQUFKLEVBQVM7QUFDUCtCLFFBQUFBLFdBQVcsQ0FBQ0csS0FBWixDQUFrQmxDLEdBQWxCLEVBQXVCLG1CQUF2QjtBQUNEOztBQUNEcEIsTUFBQUEsT0FBTyxDQUFDdUQsSUFBUixDQUFhbkMsR0FBRyxHQUFHLENBQUgsR0FBTyxDQUF2QjtBQUNELEtBTm9CLENBQXJCOztBQVFBcEIsSUFBQUEsT0FBTyxDQUFDZ0MsRUFBUixDQUFXLG1CQUFYLEVBQWlDWixHQUFELElBQVM2QixZQUFZLENBQUM3QixHQUFELEVBQU0sbUJBQU4sQ0FBckQ7QUFDQXBCLElBQUFBLE9BQU8sQ0FBQ2dDLEVBQVIsQ0FBVyxvQkFBWCxFQUFrQ1osR0FBRCxJQUFTNkIsWUFBWSxDQUFDN0IsR0FBRCxFQUFlLG9CQUFmLENBQXREO0FBQ0FwQixJQUFBQSxPQUFPLENBQUNnQyxFQUFSLENBQVcsWUFBWCxFQUF5QixNQUFNaUIsWUFBWSxDQUFDLElBQUQsRUFBTyxZQUFQLENBQTNDO0FBQ0FqRCxJQUFBQSxPQUFPLENBQUNnQyxFQUFSLENBQVcsTUFBWCxFQUFtQixNQUFNaUIsWUFBWSxDQUFDLElBQUQsRUFBTyxNQUFQLENBQXJDO0FBQ0FqRCxJQUFBQSxPQUFPLENBQUNnQyxFQUFSLENBQVcsbUJBQVgsRUFBaUNaLEdBQUQsSUFBUzZCLFlBQVksQ0FBQzdCLEdBQUQsRUFBTSxtQkFBTixDQUFyRDtBQUNBcEIsSUFBQUEsT0FBTyxDQUFDZ0MsRUFBUixDQUFXLFFBQVgsRUFBcUIsTUFBTWlCLFlBQVksQ0FBQyxJQUFELEVBQU8sUUFBUCxDQUF2QztBQUNBakQsSUFBQUEsT0FBTyxDQUFDZ0MsRUFBUixDQUFXLFNBQVgsRUFBc0IsTUFBTWlCLFlBQVksQ0FBQyxJQUFELEVBQU8sU0FBUCxDQUF4QztBQUNBakQsSUFBQUEsT0FBTyxDQUFDZ0MsRUFBUixDQUFXLFNBQVgsRUFBc0IsTUFBTWlCLFlBQVksQ0FBQyxJQUFELEVBQU8sU0FBUCxDQUF4QztBQUNEO0FBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYnVpbGREZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgeyB5ZWxsb3cgfSBmcm9tICdrbGV1cic7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHBpbm8gZnJvbSAncGlubyc7XG5cbmltcG9ydCB7IHBhZExlZnQgfSBmcm9tICcuL3V0aWxzJztcblxuZnVuY3Rpb24gaXNQcm9kKCkge1xuICByZXR1cm4gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJztcbn1cblxuZXhwb3J0IGxldCBsb2dnZXI7XG5jb25zdCBkZWJ1ZyA9IGJ1aWxkRGVidWcoJ3ZlcmRhY2Npbzpsb2dnZXInKTtcbmNvbnN0IERFRkFVTFRfTE9HX0ZPUk1BVCA9IGlzUHJvZCgpID8gJ2pzb24nIDogJ3ByZXR0eSc7XG5cbmV4cG9ydCB0eXBlIExvZ1BsdWdpbiA9IHtcbiAgZGVzdDogc3RyaW5nO1xuICBvcHRpb25zPzogYW55W107XG59O1xuXG5leHBvcnQgdHlwZSBMb2dUeXBlID0gJ2ZpbGUnIHwgJ3N0ZG91dCc7XG5leHBvcnQgdHlwZSBMb2dGb3JtYXQgPSAnanNvbicgfCAncHJldHR5LXRpbWVzdGFtcGVkJyB8ICdwcmV0dHknO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTG9nZ2VyKFxuICBvcHRpb25zID0geyBsZXZlbDogJ2h0dHAnIH0sXG4gIGRlc3RpbmF0aW9uID0gcGluby5kZXN0aW5hdGlvbigxKSxcbiAgZm9ybWF0OiBMb2dGb3JtYXQgPSBERUZBVUxUX0xPR19GT1JNQVQsXG4gIHByZXR0eVByaW50T3B0aW9ucyA9IHtcbiAgICAvLyB3ZSBoaWRlIHdhcm5pbmcgc2luY2UgdGhlIHByZXR0aWZpZXIgc2hvdWxkIG5vdCBiZSB1c2VkIGluIHByb2R1Y3Rpb25cbiAgICAvLyBodHRwczovL2dldHBpbm8uaW8vIy9kb2NzL3ByZXR0eT9pZD1wcmV0dGlmaWVyLWFwaVxuICAgIHN1cHByZXNzRmx1c2hTeW5jV2FybmluZzogdHJ1ZSxcbiAgfVxuKSB7XG4gIGlmIChfLmlzTmlsKGZvcm1hdCkpIHtcbiAgICBmb3JtYXQgPSBERUZBVUxUX0xPR19GT1JNQVQ7XG4gIH1cblxuICBsZXQgcGlub0NvbmZpZyA9IHtcbiAgICBjdXN0b21MZXZlbHM6IHtcbiAgICAgIGh0dHA6IDI1LFxuICAgIH0sXG4gICAgLi4ub3B0aW9ucyxcbiAgICBsZXZlbDogb3B0aW9ucy5sZXZlbCxcbiAgICBzZXJpYWxpemVyczoge1xuICAgICAgZXJyOiBwaW5vLnN0ZFNlcmlhbGl6ZXJzLmVycixcbiAgICAgIHJlcTogcGluby5zdGRTZXJpYWxpemVycy5yZXEsXG4gICAgICByZXM6IHBpbm8uc3RkU2VyaWFsaXplcnMucmVzLFxuICAgIH0sXG4gIH07XG5cbiAgZGVidWcoJ2hhcyBwcmV0dGlmaWVyPyAlbycsICFpc1Byb2QoKSk7XG4gIC8vIHByZXR0eSBsb2dzIGFyZSBub3QgYWxsb3dlZCBpbiBwcm9kdWN0aW9uIGZvciBwZXJmb3JtYW5jZSByZWFzb25zXG4gIGlmICgoZm9ybWF0ID09PSBERUZBVUxUX0xPR19GT1JNQVQgfHwgZm9ybWF0ICE9PSAnanNvbicpICYmIGlzUHJvZCgpID09PSBmYWxzZSkge1xuICAgIHBpbm9Db25maWcgPSBPYmplY3QuYXNzaWduKHt9LCBwaW5vQ29uZmlnLCB7XG4gICAgICAvLyBtb3JlIGluZm9cbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9waW5vanMvcGluby1wcmV0dHkvaXNzdWVzLzM3XG4gICAgICBwcmV0dHlQcmludDoge1xuICAgICAgICBsZXZlbEZpcnN0OiB0cnVlLFxuICAgICAgICBwcmV0dHlTdGFtcDogZm9ybWF0ID09PSAncHJldHR5LXRpbWVzdGFtcGVkJyxcbiAgICAgICAgLi4ucHJldHR5UHJpbnRPcHRpb25zLFxuICAgICAgfSxcbiAgICAgIHByZXR0aWZpZXI6IHJlcXVpcmUoJy4vZm9ybWF0dGVyJyksXG4gICAgfSk7XG4gIH1cbiAgY29uc3QgbG9nZ2VyID0gcGlubyhwaW5vQ29uZmlnLCBkZXN0aW5hdGlvbik7XG5cbiAgaWYgKHByb2Nlc3MuZW52LkRFQlVHKSB7XG4gICAgbG9nZ2VyLm9uKCdsZXZlbC1jaGFuZ2UnLCAobHZsLCB2YWwsIHByZXZMdmwsIHByZXZWYWwpID0+IHtcbiAgICAgIGRlYnVnKCclcyAoJWQpIHdhcyBjaGFuZ2VkIHRvICVzICglZCknLCBsdmwsIHZhbCwgcHJldkx2bCwgcHJldlZhbCk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gbG9nZ2VyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TG9nZ2VyKCkge1xuICBpZiAoXy5pc05pbChsb2dnZXIpKSB7XG4gICAgcHJvY2Vzcy5lbWl0V2FybmluZygnbG9nZ2VyIGlzIG5vdCBkZWZpbmVkJyk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgcmV0dXJuIGxvZ2dlcjtcbn1cblxuY29uc3QgREVGQVVMVF9MT0dHRVJfQ09ORjogTG9nZ2VyQ29uZmlnSXRlbSA9IHtcbiAgdHlwZTogJ3N0ZG91dCcsXG4gIGZvcm1hdDogJ3ByZXR0eScsXG4gIGxldmVsOiAnaHR0cCcsXG59O1xuXG5leHBvcnQgdHlwZSBMb2dnZXJDb25maWdJdGVtID0ge1xuICB0eXBlPzogTG9nVHlwZTtcbiAgcGx1Z2luPzogTG9nUGx1Z2luO1xuICBmb3JtYXQ/OiBMb2dGb3JtYXQ7XG4gIHBhdGg/OiBzdHJpbmc7XG4gIGxldmVsPzogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgTG9nZ2VyQ29uZmlnID0gTG9nZ2VyQ29uZmlnSXRlbVtdO1xuXG5leHBvcnQgZnVuY3Rpb24gc2V0dXAob3B0aW9uczogTG9nZ2VyQ29uZmlnIHwgTG9nZ2VyQ29uZmlnSXRlbSA9IFtERUZBVUxUX0xPR0dFUl9DT05GXSkge1xuICBkZWJ1Zygnc2V0dXAgbG9nZ2VyJyk7XG4gIGNvbnN0IGlzTGVnYWN5Q29uZiA9IEFycmF5LmlzQXJyYXkob3B0aW9ucyk7XG4gIGlmIChpc0xlZ2FjeUNvbmYpIHtcbiAgICBjb25zdCBkZXByZWNhdGVNZXNzYWdlID0gJ2RlcHJlY2F0ZTogbXVsdGlwbGUgbG9nZ2VyIGNvbmZpZ3VyYXRpb24gaXMgZGVwcmVjYXRlZCwgcGxlYXNlIGNoZWNrIHRoZSBtaWdyYXRpb24gZ3VpZGUuJztcbiAgICBwcm9jZXNzLmVtaXRXYXJuaW5nKGRlcHJlY2F0ZU1lc3NhZ2UpO1xuICB9XG5cbiAgLy8gdmVyZGFjY2lvIDUgZG9lcyBub3QgYWxsb3cgbXVsdGlwbGUgbG9nZ2VyIGNvbmZpZ3VyYXRpb25cbiAgLy8gYmFja3dhcmQgY29tcGF0aWJsZSwgcGljayBvbmx5IHRoZSBmaXJzdCBvcHRpb25cbiAgLy8gbmV4dCBtYWpvciB3aWxsIHRocm93biBhbiBlcnJvclxuICBsZXQgbG9nZ2VyQ29uZmlnID0gaXNMZWdhY3lDb25mID8gb3B0aW9uc1swXSA6IG9wdGlvbnM7XG4gIGlmICghbG9nZ2VyQ29uZmlnPy5sZXZlbCkge1xuICAgIGxvZ2dlckNvbmZpZyA9IE9iamVjdC5hc3NpZ24oXG4gICAgICB7fSxcbiAgICAgIHtcbiAgICAgICAgbGV2ZWw6ICdodHRwJyxcbiAgICAgIH0sXG4gICAgICBsb2dnZXJDb25maWdcbiAgICApO1xuICB9XG4gIGNvbnN0IHBpbm9Db25maWcgPSB7IGxldmVsOiBsb2dnZXJDb25maWcubGV2ZWwgfTtcbiAgaWYgKGxvZ2dlckNvbmZpZy50eXBlID09PSAnZmlsZScpIHtcbiAgICBkZWJ1ZygnbG9nZ2luZyBmaWxlIGVuYWJsZWQnKTtcbiAgICBjb25zdCBkZXN0aW5hdGlvbiA9IHBpbm8uZGVzdGluYXRpb24obG9nZ2VyQ29uZmlnLnBhdGgpO1xuICAgIHByb2Nlc3Mub24oJ1NJR1VTUjInLCAoKSA9PiBkZXN0aW5hdGlvbi5yZW9wZW4oKSk7XG4gICAgbG9nZ2VyID0gY3JlYXRlTG9nZ2VyKHBpbm9Db25maWcsIGRlc3RpbmF0aW9uLCBsb2dnZXJDb25maWcuZm9ybWF0KTtcbiAgfSBlbHNlIGlmIChsb2dnZXJDb25maWcudHlwZSA9PT0gJ3JvdGF0aW5nLWZpbGUnKSB7XG4gICAgcHJvY2Vzcy5lbWl0V2FybmluZygncm90YXRpbmctZmlsZSB0eXBlIGlzIG5vdCBsb25nZXIgc3VwcG9ydGVkLCBjb25zaWRlciB1c2UgW2xvZ3JvdGF0ZV0gaW5zdGVhZCcpO1xuICAgIGRlYnVnKCdsb2dnaW5nIHN0ZG91dCBlbmFibGVkJyk7XG4gICAgbG9nZ2VyID0gY3JlYXRlTG9nZ2VyKHBpbm9Db25maWcsIHBpbm8uZGVzdGluYXRpb24oMSksIGxvZ2dlckNvbmZpZy5mb3JtYXQpO1xuICB9IGVsc2Uge1xuICAgIGRlYnVnKCdsb2dnaW5nIHN0ZG91dCBlbmFibGVkJyk7XG4gICAgbG9nZ2VyID0gY3JlYXRlTG9nZ2VyKHBpbm9Db25maWcsIHBpbm8uZGVzdGluYXRpb24oMSksIGxvZ2dlckNvbmZpZy5mb3JtYXQpO1xuICB9XG5cbiAgaWYgKGlzUHJvZCgpKSB7XG4gICAgLy8gd2h5IG9ubHkgb24gcHJvZD8gaHR0cHM6Ly9naXRodWIuY29tL3Bpbm9qcy9waW5vL2lzc3Vlcy85MjAjaXNzdWVjb21tZW50LTcxMDgwNzY2N1xuICAgIGNvbnN0IGZpbmFsSGFuZGxlciA9IHBpbm8uZmluYWwobG9nZ2VyLCAoZXJyLCBmaW5hbExvZ2dlciwgZXZlbnQpID0+IHtcbiAgICAgIGZpbmFsTG9nZ2VyLmluZm8oYCR7ZXZlbnR9IGNhdWdodGApO1xuICAgICAgaWYgKGVycikge1xuICAgICAgICBmaW5hbExvZ2dlci5lcnJvcihlcnIsICdlcnJvciBjYXVzZWQgZXhpdCcpO1xuICAgICAgfVxuICAgICAgcHJvY2Vzcy5leGl0KGVyciA/IDEgOiAwKTtcbiAgICB9KTtcblxuICAgIHByb2Nlc3Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uJywgKGVycikgPT4gZmluYWxIYW5kbGVyKGVyciwgJ3VuY2F1Z2h0RXhjZXB0aW9uJykpO1xuICAgIHByb2Nlc3Mub24oJ3VuaGFuZGxlZFJlamVjdGlvbicsIChlcnIpID0+IGZpbmFsSGFuZGxlcihlcnIgYXMgRXJyb3IsICd1bmhhbmRsZWRSZWplY3Rpb24nKSk7XG4gICAgcHJvY2Vzcy5vbignYmVmb3JlRXhpdCcsICgpID0+IGZpbmFsSGFuZGxlcihudWxsLCAnYmVmb3JlRXhpdCcpKTtcbiAgICBwcm9jZXNzLm9uKCdleGl0JywgKCkgPT4gZmluYWxIYW5kbGVyKG51bGwsICdleGl0JykpO1xuICAgIHByb2Nlc3Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uJywgKGVycikgPT4gZmluYWxIYW5kbGVyKGVyciwgJ3VuY2F1Z2h0RXhjZXB0aW9uJykpO1xuICAgIHByb2Nlc3Mub24oJ1NJR0lOVCcsICgpID0+IGZpbmFsSGFuZGxlcihudWxsLCAnU0lHSU5UJykpO1xuICAgIHByb2Nlc3Mub24oJ1NJR1FVSVQnLCAoKSA9PiBmaW5hbEhhbmRsZXIobnVsbCwgJ1NJR1FVSVQnKSk7XG4gICAgcHJvY2Vzcy5vbignU0lHVEVSTScsICgpID0+IGZpbmFsSGFuZGxlcihudWxsLCAnU0lHVEVSTScpKTtcbiAgfVxufVxuIl19
|
|
@@ -28,4 +28,4 @@ function padLeft(message) {
|
|
|
28
28
|
function padRight(message, max = message.length + CUSTOM_PAD_LENGTH) {
|
|
29
29
|
return message.padEnd(max, ' ');
|
|
30
30
|
}
|
|
31
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
31
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvbG9nZ2VyL3V0aWxzLnRzIl0sIm5hbWVzIjpbIkZPUk1BVF9EQVRFIiwiQ1VTVE9NX1BBRF9MRU5HVEgiLCJmb3JtYXRMb2dnaW5nRGF0ZSIsInRpbWUiLCJmb3JtYXQiLCJwYWRMZWZ0IiwibWVzc2FnZSIsInBhZFN0YXJ0IiwibGVuZ3RoIiwicGFkUmlnaHQiLCJtYXgiLCJwYWRFbmQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTs7OztBQUVPLE1BQU1BLFdBQVcsR0FBRyxxQkFBcEI7O0FBQ0EsTUFBTUMsaUJBQWlCLEdBQUcsQ0FBMUI7OztBQUVBLFNBQVNDLGlCQUFULENBQTJCQyxJQUEzQixFQUFpRDtBQUN0RCxTQUFPLG9CQUFNQSxJQUFOLEVBQVlDLE1BQVosQ0FBbUJKLFdBQW5CLENBQVA7QUFDRDs7QUFFTSxTQUFTSyxPQUFULENBQWlCQyxPQUFqQixFQUFrQztBQUN2QyxTQUFPQSxPQUFPLENBQUNDLFFBQVIsQ0FBaUJELE9BQU8sQ0FBQ0UsTUFBUixHQUFpQlAsaUJBQWxDLEVBQXFELEdBQXJELENBQVA7QUFDRDs7QUFFTSxTQUFTUSxRQUFULENBQWtCSCxPQUFsQixFQUFtQ0ksR0FBRyxHQUFHSixPQUFPLENBQUNFLE1BQVIsR0FBaUJQLGlCQUExRCxFQUE2RTtBQUNsRixTQUFPSyxPQUFPLENBQUNLLE1BQVIsQ0FBZUQsR0FBZixFQUFvQixHQUFwQixDQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xuXG5leHBvcnQgY29uc3QgRk9STUFUX0RBVEUgPSAnWVlZWS1NTS1ERCBISDptbTpzcyc7XG5leHBvcnQgY29uc3QgQ1VTVE9NX1BBRF9MRU5HVEggPSAxO1xuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0TG9nZ2luZ0RhdGUodGltZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGRheWpzKHRpbWUpLmZvcm1hdChGT1JNQVRfREFURSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYWRMZWZ0KG1lc3NhZ2U6IHN0cmluZykge1xuICByZXR1cm4gbWVzc2FnZS5wYWRTdGFydChtZXNzYWdlLmxlbmd0aCArIENVU1RPTV9QQURfTEVOR1RILCAnICcpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFkUmlnaHQobWVzc2FnZTogc3RyaW5nLCBtYXggPSBtZXNzYWdlLmxlbmd0aCArIENVU1RPTV9QQURfTEVOR1RIKSB7XG4gIHJldHVybiBtZXNzYWdlLnBhZEVuZChtYXgsICcgJyk7XG59XG4iXX0=
|