New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

cli-kit

Package Overview
Dependencies
Maintainers
1
Versions
107
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

cli-kit - npm Package Compare versions

Comparing version 1.11.3 to 1.11.4

4

CHANGELOG.md

@@ -0,1 +1,5 @@

# 1.11.4 (Apr 15, 2021)
* fix(command): Fixed custom help content for extensions.
# 1.11.3 (Apr 14, 2021)

@@ -2,0 +6,0 @@

76

dist/parser/command.js

@@ -49,2 +49,9 @@ "use strict";

/**
* Custom help header and footer content.
*
* @type {Object}
* @access private
*/
/**
* Constructs a command instance.

@@ -234,28 +241,2 @@ *

const help = {};
if (params.help) {
if (typeof params.help === 'string' || typeof params.help === 'function') {
help.header = params.help;
} else if (typeof params.help === 'object') {
if (params.help.header) {
if (typeof params.help.header === 'string' || typeof params.help.header === 'function') {
help.header = params.help.header;
} else {
throw _errors.default.INVALID_ARGUMENT('Expected help content header to be a string or function');
}
}
if (params.help.footer) {
if (typeof params.help.footer === 'string' || typeof params.help.footer === 'function') {
help.footer = params.help.footer;
} else {
throw _errors.default.INVALID_ARGUMENT('Expected help content footer to be a string or function');
}
}
} else {
throw _errors.default.INVALID_ARGUMENT('Expected help content to be a string, function, or object containing a header or footer');
}
}
params.name = name;

@@ -272,2 +253,4 @@ const args = m[2] && m[2].trim().split(/\s+/);

_defineProperty(this, "_help", {});
(0, _util.declareCLIKitClass)(this, 'Command');

@@ -287,3 +270,3 @@

this.clikitHelp = params.clikitHelp;
this.help = help;
this.help = params.help || {};
this.defaultCommand = params.defaultCommand;

@@ -391,2 +374,39 @@ this.hidden = !!params.hidden; // mix in any other custom props

/**
* Custom help header and footer content. A string, function, or object with `header` and
* `footer` properties may be used to set the `help` property, but the internal value will
* always be an object with `header` and `footer` properties.
*
* @type {Object}
* @access public
*/
get help() {
return this._help;
}
set help(value) {
if (typeof value === 'string' || typeof value === 'function') {
this._help.header = value;
} else if (typeof value === 'object') {
if (value.header) {
if (typeof value.header === 'string' || typeof value.header === 'function') {
this._help.header = value.header;
} else {
throw _errors.default.INVALID_ARGUMENT('Expected help content header to be a string or function');
}
}
if (value.footer) {
if (typeof value.footer === 'string' || typeof value.footer === 'function') {
this._help.footer = value.footer;
} else {
throw _errors.default.INVALID_ARGUMENT('Expected help content footer to be a string or function');
}
}
} else {
throw _errors.default.INVALID_ARGUMENT('Expected help content to be a string, function, or object containing a header or footer');
}
}
/**
* Returns the schema for this command and all child contexts.

@@ -408,2 +428,2 @@ *

exports.default = Command;
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhcnNlci9jb21tYW5kLmpzIl0sIm5hbWVzIjpbImxvZyIsImhpZ2hsaWdodCIsImRlYnVnIiwic3R5bGVzIiwiZm9ybWF0UmVnRXhwIiwibmFtZVJlZ0V4cCIsIkNvbW1hbmQiLCJDb250ZXh0IiwiY29uc3RydWN0b3IiLCJuYW1lIiwicGFyYW1zIiwicGF0aCIsImlzQWJzb2x1dGUiLCJmcyIsImV4aXN0c1N5bmMiLCJjdHgiLCJyZXF1aXJlIiwiRXJyb3IiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImVyciIsIkUiLCJJTlZBTElEX0NPTU1BTkQiLCJtZXNzYWdlIiwic2NvcGUiLCJ2YWx1ZSIsIklOVkFMSURfQVJHVU1FTlQiLCJmb3JtYXQiLCJ0cmltIiwibSIsIm1hdGNoIiwiYWN0aW9uIiwiYWxpYXNlcyIsIlNldCIsImFsaWFzIiwic3BsaXQiLCJuIiwiaW5jbHVkZXMiLCJhZGQiLCJBcnJheSIsImlzQXJyYXkiLCJjYWxsYmFjayIsInNjb3AiLCJkZWZhdWx0Q29tbWFuZCIsInVuZGVmaW5lZCIsImNsaWtpdCIsImhhcyIsInRpdGxlIiwidGVybWluYWwiLCJwYXJzZXIiLCJnZXQiLCJoZWxwQ29tbWFuZCIsImNtZCIsImNvbW1hbmRzIiwiY2FsbCIsIklOVkFMSURfQ0xJS0lUX09CSkVDVCIsImhlbHAiLCJoZWFkZXIiLCJmb290ZXIiLCJhcmdzIiwibGVuZ3RoIiwibG9va3VwIiwiX2FsaWFzZXMiLCJjcmVhdGVBbGlhc2VzIiwiY2xpa2l0SGVscCIsImhpZGRlbiIsImtleSIsIk9iamVjdCIsImVudHJpZXMiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsInZhbHVlcyIsInJlc3VsdCIsImZyb20iLCJhc3NpZ24iLCJhIiwiSU5WQUxJRF9BTElBUyIsInN1YnN0cmluZyIsImdlbmVyYXRlSGVscCIsIm9uIiwicmVzdWx0cyIsIm9wdHMiLCJzdHlsZSIsInNjaGVtYSIsImRlc2MiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7Ozs7O0FBRUEsTUFBTTtBQUFFQSxFQUFBQTtBQUFGLElBQVUsb0JBQU0saUJBQU4sQ0FBaEI7QUFDQSxNQUFNO0FBQUVDLEVBQUFBO0FBQUYsSUFBZ0JDLGVBQU1DLE1BQTVCO0FBRUEsTUFBTUMsWUFBWSxHQUFHLHVFQUFyQjtBQUNBLE1BQU1DLFVBQVUsR0FBRyx3QkFBbkI7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUNlLE1BQU1DLE9BQU4sU0FBc0JDLGdCQUF0QixDQUE4QjtBQUM1QztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBR0M7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0NDLEVBQUFBLFdBQVcsQ0FBQ0MsSUFBRCxFQUFPQyxNQUFNLEdBQUcsRUFBaEIsRUFBb0I7QUFDOUIsUUFBSUQsSUFBSSxJQUFJLE9BQU9BLElBQVAsS0FBZ0IsUUFBeEIsSUFBb0NFLGNBQUtDLFVBQUwsQ0FBZ0JILElBQWhCLENBQXBDLElBQTZESSxZQUFHQyxVQUFILENBQWNMLElBQWQsQ0FBakUsRUFBc0Y7QUFDckYsVUFBSU0sR0FBSjs7QUFDQSxVQUFJO0FBQ0hmLFFBQUFBLEdBQUcsQ0FBRSxhQUFZQyxTQUFTLENBQUNRLElBQUQsQ0FBTyxFQUE5QixDQUFIO0FBQ0FNLFFBQUFBLEdBQUcsR0FBR0MsT0FBTyxDQUFDUCxJQUFELENBQWI7O0FBQ0EsWUFBSSxDQUFDTSxHQUFELElBQVEsT0FBT0EsR0FBUCxLQUFlLFFBQTNCLEVBQXFDO0FBQ3BDLGdCQUFNLElBQUlFLEtBQUosQ0FBVSwrQkFBVixDQUFOO0FBQ0EsU0FMRSxDQU9IOzs7QUFDQSxZQUFJRixHQUFHLENBQUNHLFVBQVIsRUFBb0I7QUFDbkJILFVBQUFBLEdBQUcsR0FBR0EsR0FBRyxDQUFDSSxPQUFWO0FBQ0E7O0FBRUQsWUFBSSxDQUFDSixHQUFELElBQVEsT0FBT0EsR0FBUCxLQUFlLFFBQTNCLEVBQXFDO0FBQ3BDLGdCQUFNLElBQUlFLEtBQUosQ0FBVSwrQkFBVixDQUFOO0FBQ0E7O0FBRURSLFFBQUFBLElBQUksR0FBR00sR0FBRyxDQUFDTixJQUFYO0FBQ0FDLFFBQUFBLE1BQU0sR0FBR0ssR0FBVDtBQUNBLE9BbEJELENBa0JFLE9BQU9LLEdBQVAsRUFBWTtBQUNiLGNBQU1DLGdCQUFFQyxlQUFGLENBQW1CLGdCQUFlYixJQUFLLE1BQUtXLEdBQUcsQ0FBQ0csT0FBUSxFQUF4RCxFQUEyRDtBQUFFZCxVQUFBQSxJQUFJLEVBQUVBLElBQVI7QUFBY2UsVUFBQUEsS0FBSyxFQUFFLHFCQUFyQjtBQUE0Q0MsVUFBQUEsS0FBSyxFQUFFTDtBQUFuRCxTQUEzRCxDQUFOO0FBQ0E7QUFDRDs7QUFFRCxRQUFJLENBQUNYLElBQUQsSUFBUyxPQUFPQSxJQUFQLEtBQWdCLFFBQTdCLEVBQXVDO0FBQ3RDLFlBQU1ZLGdCQUFFSyxnQkFBRixDQUFtQixnREFBbkIsRUFBcUU7QUFBRWpCLFFBQUFBLElBQUksRUFBRSxNQUFSO0FBQWdCZSxRQUFBQSxLQUFLLEVBQUUscUJBQXZCO0FBQThDQyxRQUFBQSxLQUFLLEVBQUVoQjtBQUFyRCxPQUFyRSxDQUFOO0FBQ0EsS0E1QjZCLENBOEI5Qjs7O0FBQ0EsVUFBTWtCLE1BQU0sR0FBR2xCLElBQUksQ0FBQ21CLElBQUwsRUFBZjtBQUNBLFVBQU1DLENBQUMsR0FBR0YsTUFBTSxDQUFDRyxLQUFQLENBQWExQixZQUFiLENBQVY7O0FBQ0EsUUFBSSxDQUFDeUIsQ0FBRCxJQUFNLENBQUNBLENBQUMsQ0FBQyxDQUFELENBQVosRUFBaUI7QUFDaEIsWUFBTVIsZ0JBQUVLLGdCQUFGLENBQW1CLGdEQUFuQixFQUFxRTtBQUFFakIsUUFBQUEsSUFBSSxFQUFFLE1BQVI7QUFBZ0JlLFFBQUFBLEtBQUssRUFBRSxxQkFBdkI7QUFBOENDLFFBQUFBLEtBQUssRUFBRWhCO0FBQXJELE9BQXJFLENBQU47QUFDQTs7QUFFRCxRQUFJLE9BQU9DLE1BQVAsS0FBa0IsVUFBdEIsRUFBa0M7QUFDakNBLE1BQUFBLE1BQU0sR0FBRztBQUFFcUIsUUFBQUEsTUFBTSxFQUFFckI7QUFBVixPQUFUO0FBQ0EsS0F2QzZCLENBeUM5Qjs7O0FBQ0FELElBQUFBLElBQUksR0FBRyxJQUFQLENBMUM4QixDQTRDOUI7O0FBQ0EsVUFBTXVCLE9BQU8sR0FBRyxJQUFJQyxHQUFKLEVBQWhCOztBQUNBLFNBQUssSUFBSUMsS0FBVCxJQUFrQkwsQ0FBQyxDQUFDLENBQUQsQ0FBRCxDQUFLTSxLQUFMLENBQVcsR0FBWCxDQUFsQixFQUFtQztBQUNsQyxZQUFNQyxDQUFDLEdBQUdGLEtBQUssQ0FBQ0osS0FBTixDQUFZekIsVUFBWixDQUFWOztBQUNBLFVBQUksQ0FBQytCLENBQUwsRUFBUTtBQUNQLGNBQU1mLGdCQUFFSyxnQkFBRixDQUFtQiw4QkFBbkIsRUFBbUQ7QUFBRWpCLFVBQUFBLElBQUksRUFBRSxPQUFSO0FBQWlCZSxVQUFBQSxLQUFLLEVBQUUscUJBQXhCO0FBQStDQyxVQUFBQSxLQUFLLEVBQUVTO0FBQXRELFNBQW5ELENBQU47QUFDQTs7QUFDRCxVQUFJLENBQUNFLENBQUMsQ0FBQyxDQUFELENBQUQsQ0FBS0MsUUFBTCxDQUFjLEdBQWQsQ0FBRCxJQUF1QixDQUFDNUIsSUFBNUIsRUFBa0M7QUFDakNBLFFBQUFBLElBQUksR0FBRzJCLENBQUMsQ0FBQyxDQUFELENBQVI7QUFDQSxPQUZELE1BRU87QUFDTkosUUFBQUEsT0FBTyxDQUFDTSxHQUFSLENBQVlGLENBQUMsQ0FBQyxDQUFELENBQUQsQ0FBS0MsUUFBTCxDQUFjLEdBQWQsSUFBc0IsSUFBR0QsQ0FBQyxDQUFDLENBQUQsQ0FBSSxFQUE5QixHQUFrQ0EsQ0FBQyxDQUFDLENBQUQsQ0FBL0M7QUFDQTtBQUNEOztBQUVELFFBQUksQ0FBQzNCLElBQUwsRUFBVztBQUNWLFlBQU9ZLGdCQUFFSyxnQkFBRixDQUFtQix1RUFBbkIsRUFBNEY7QUFBRWpCLFFBQUFBLElBQUksRUFBRSxRQUFSO0FBQWtCZSxRQUFBQSxLQUFLLEVBQUUscUJBQXpCO0FBQWdEQyxRQUFBQSxLQUFLLEVBQUVFO0FBQXZELE9BQTVGLENBQVA7QUFDQTs7QUFFRCxRQUFJLENBQUNqQixNQUFELElBQVksT0FBT0EsTUFBUCxLQUFrQixRQUFsQixJQUE4QjZCLEtBQUssQ0FBQ0MsT0FBTixDQUFjOUIsTUFBZCxDQUE5QyxFQUFzRTtBQUNyRSxZQUFNVyxnQkFBRUssZ0JBQUYsQ0FBbUIsNkNBQW5CLEVBQWtFO0FBQUVqQixRQUFBQSxJQUFJLEVBQUUsUUFBUjtBQUFrQmUsUUFBQUEsS0FBSyxFQUFFLHFCQUF6QjtBQUFnREMsUUFBQUEsS0FBSyxFQUFFZjtBQUF2RCxPQUFsRSxDQUFOO0FBQ0E7O0FBRUQsUUFBSUEsTUFBTSxDQUFDK0IsUUFBUCxJQUFtQixPQUFPL0IsTUFBTSxDQUFDK0IsUUFBZCxLQUEyQixVQUFsRCxFQUE4RDtBQUM3RCxZQUFNcEIsZ0JBQUVLLGdCQUFGLENBQW1CLDRDQUFuQixFQUFpRTtBQUFFakIsUUFBQUEsSUFBSSxFQUFFLFVBQVI7QUFBb0JpQyxRQUFBQSxJQUFJLEVBQUUscUJBQTFCO0FBQWlEakIsUUFBQUEsS0FBSyxFQUFFZixNQUFNLENBQUMrQjtBQUEvRCxPQUFqRSxDQUFOO0FBQ0E7O0FBRUQsUUFBSS9CLE1BQU0sQ0FBQ2lDLGNBQVAsS0FBMEJDLFNBQTFCLEtBQXdDLENBQUNsQyxNQUFNLENBQUNpQyxjQUFSLElBQTJCLE9BQU9qQyxNQUFNLENBQUNpQyxjQUFkLEtBQWlDLFFBQWpDLElBQTZDLE9BQU9qQyxNQUFNLENBQUNpQyxjQUFkLEtBQWlDLFVBQWpKLENBQUosRUFBbUs7QUFDbEssWUFBTXRCLGdCQUFFSyxnQkFBRixDQUFtQixxREFBbkIsRUFBMEU7QUFBRWpCLFFBQUFBLElBQUksRUFBRSxnQkFBUjtBQUEwQmUsUUFBQUEsS0FBSyxFQUFFLHFCQUFqQztBQUF3REMsUUFBQUEsS0FBSyxFQUFFZixNQUFNLENBQUNpQztBQUF0RSxPQUExRSxDQUFOO0FBQ0E7O0FBRUQsUUFBSWpDLE1BQU0sQ0FBQ21DLE1BQVAsWUFBeUJaLEdBQTdCLEVBQWtDO0FBQ2pDO0FBQ0EsVUFBSXZCLE1BQU0sQ0FBQ21DLE1BQVAsQ0FBY0MsR0FBZCxDQUFrQixLQUFsQixDQUFKLEVBQThCO0FBQzdCO0FBQ0E7QUFDQSxZQUFJcEMsTUFBTSxDQUFDcUMsS0FBUCxLQUFpQixRQUFyQixFQUErQjtBQUM5QixpQkFBT3JDLE1BQU0sQ0FBQ3FDLEtBQWQ7QUFDQTs7QUFFRCxlQUFPckMsTUFBTSxDQUFDc0MsUUFBZCxDQVA2QixDQVM3QjtBQUNBOztBQUNBdEMsUUFBQUEsTUFBTSxDQUFDcUIsTUFBUCxHQUFnQixNQUFNa0IsTUFBTixJQUFnQjtBQUMvQixnQkFBTTtBQUFFTixZQUFBQTtBQUFGLGNBQXFCakMsTUFBM0I7O0FBQ0EsY0FBSWlDLGNBQWMsS0FBSyxNQUFuQixJQUE2QixLQUFLTyxHQUFMLENBQVMsTUFBVCxDQUFqQyxFQUFtRDtBQUNsRCxrQkFBTUMsY0FBWXBCLE1BQVosQ0FBbUJrQixNQUFuQixDQUFOO0FBQ0EsV0FGRCxNQUVPO0FBQ04sa0JBQU1HLEdBQUcsR0FBR1QsY0FBYyxJQUFJLEtBQUtVLFFBQUwsQ0FBY1YsY0FBZCxDQUE5Qjs7QUFDQSxnQkFBSVMsR0FBSixFQUFTO0FBQ1IscUJBQU9BLEdBQUcsQ0FBQ3JCLE1BQUosQ0FBV3VCLElBQVgsQ0FBZ0JGLEdBQWhCLEVBQXFCSCxNQUFyQixDQUFQO0FBQ0E7QUFDRDtBQUNELFNBVkQ7QUFXQSxPQXRCRCxNQXNCTyxJQUFJLENBQUN2QyxNQUFNLENBQUNtQyxNQUFQLENBQWNDLEdBQWQsQ0FBa0IsU0FBbEIsQ0FBTCxFQUFtQztBQUN6QztBQUNBLGNBQU16QixnQkFBRWtDLHFCQUFGLENBQXdCLHdEQUF4QixFQUFrRjtBQUFFOUMsVUFBQUEsSUFBSSxFQUFFLFFBQVI7QUFBa0JlLFVBQUFBLEtBQUssRUFBRSxxQkFBekI7QUFBZ0RDLFVBQUFBLEtBQUssRUFBRWYsTUFBTSxDQUFDbUM7QUFBOUQsU0FBbEYsQ0FBTjtBQUNBO0FBQ0Q7O0FBRUQsUUFBSW5DLE1BQU0sQ0FBQ3FCLE1BQVAsSUFBaUIsT0FBT3JCLE1BQU0sQ0FBQ3FCLE1BQWQsS0FBeUIsVUFBMUMsSUFBd0QsRUFBRXJCLE1BQU0sQ0FBQ3FCLE1BQVAsWUFBeUJ6QixPQUEzQixDQUE1RCxFQUFpRztBQUNoRyxZQUFNZSxnQkFBRUssZ0JBQUYsQ0FBbUIsOERBQW5CLEVBQW1GO0FBQUVqQixRQUFBQSxJQUFJLEVBQUUsUUFBUjtBQUFrQmUsUUFBQUEsS0FBSyxFQUFFLHFCQUF6QjtBQUFnREMsUUFBQUEsS0FBSyxFQUFFZixNQUFNLENBQUNxQjtBQUE5RCxPQUFuRixDQUFOO0FBQ0E7O0FBRUQsVUFBTXlCLElBQUksR0FBRyxFQUFiOztBQUNBLFFBQUk5QyxNQUFNLENBQUM4QyxJQUFYLEVBQWlCO0FBQ2hCLFVBQUksT0FBTzlDLE1BQU0sQ0FBQzhDLElBQWQsS0FBdUIsUUFBdkIsSUFBbUMsT0FBTzlDLE1BQU0sQ0FBQzhDLElBQWQsS0FBdUIsVUFBOUQsRUFBMEU7QUFDekVBLFFBQUFBLElBQUksQ0FBQ0MsTUFBTCxHQUFjL0MsTUFBTSxDQUFDOEMsSUFBckI7QUFDQSxPQUZELE1BRU8sSUFBSSxPQUFPOUMsTUFBTSxDQUFDOEMsSUFBZCxLQUF1QixRQUEzQixFQUFxQztBQUMzQyxZQUFJOUMsTUFBTSxDQUFDOEMsSUFBUCxDQUFZQyxNQUFoQixFQUF3QjtBQUN2QixjQUFJLE9BQU8vQyxNQUFNLENBQUM4QyxJQUFQLENBQVlDLE1BQW5CLEtBQThCLFFBQTlCLElBQTBDLE9BQU8vQyxNQUFNLENBQUM4QyxJQUFQLENBQVlDLE1BQW5CLEtBQThCLFVBQTVFLEVBQXdGO0FBQ3ZGRCxZQUFBQSxJQUFJLENBQUNDLE1BQUwsR0FBYy9DLE1BQU0sQ0FBQzhDLElBQVAsQ0FBWUMsTUFBMUI7QUFDQSxXQUZELE1BRU87QUFDTixrQkFBTXBDLGdCQUFFSyxnQkFBRixDQUFtQix5REFBbkIsQ0FBTjtBQUNBO0FBQ0Q7O0FBQ0QsWUFBSWhCLE1BQU0sQ0FBQzhDLElBQVAsQ0FBWUUsTUFBaEIsRUFBd0I7QUFDdkIsY0FBSSxPQUFPaEQsTUFBTSxDQUFDOEMsSUFBUCxDQUFZRSxNQUFuQixLQUE4QixRQUE5QixJQUEwQyxPQUFPaEQsTUFBTSxDQUFDOEMsSUFBUCxDQUFZRSxNQUFuQixLQUE4QixVQUE1RSxFQUF3RjtBQUN2RkYsWUFBQUEsSUFBSSxDQUFDRSxNQUFMLEdBQWNoRCxNQUFNLENBQUM4QyxJQUFQLENBQVlFLE1BQTFCO0FBQ0EsV0FGRCxNQUVPO0FBQ04sa0JBQU1yQyxnQkFBRUssZ0JBQUYsQ0FBbUIseURBQW5CLENBQU47QUFDQTtBQUNEO0FBQ0QsT0FmTSxNQWVBO0FBQ04sY0FBTUwsZ0JBQUVLLGdCQUFGLENBQW1CLHlGQUFuQixDQUFOO0FBQ0E7QUFDRDs7QUFFRGhCLElBQUFBLE1BQU0sQ0FBQ0QsSUFBUCxHQUFjQSxJQUFkO0FBRUEsVUFBTWtELElBQUksR0FBRzlCLENBQUMsQ0FBQyxDQUFELENBQUQsSUFBUUEsQ0FBQyxDQUFDLENBQUQsQ0FBRCxDQUFLRCxJQUFMLEdBQVlPLEtBQVosQ0FBa0IsS0FBbEIsQ0FBckI7O0FBQ0EsUUFBSXdCLElBQUosYUFBSUEsSUFBSixlQUFJQSxJQUFJLENBQUVDLE1BQVYsRUFBa0I7QUFDakJsRCxNQUFBQSxNQUFNLENBQUNpRCxJQUFQLEdBQWNqRCxNQUFNLENBQUNpRCxJQUFQLEdBQWMsQ0FBRSxHQUFHQSxJQUFMLEVBQVcsR0FBR2pELE1BQU0sQ0FBQ2lELElBQXJCLENBQWQsR0FBNENBLElBQTFEO0FBQ0E7O0FBRUQsVUFBTWpELE1BQU47O0FBM0k4QixzQ0E3QnBCLEVBNkJvQjs7QUE0STlCLGtDQUFtQixJQUFuQixFQUF5QixTQUF6Qjs7QUFFQSxRQUFJQSxNQUFNLENBQUNxQixNQUFYLEVBQW1CO0FBQ2xCLFdBQUtBLE1BQUwsR0FBY3JCLE1BQU0sQ0FBQ3FCLE1BQXJCO0FBQ0EsS0FGRCxNQUVPLElBQUksT0FBT3JCLE1BQU0sQ0FBQ2lDLGNBQWQsS0FBaUMsVUFBckMsRUFBaUQ7QUFDdkQsV0FBS1osTUFBTCxHQUFjckIsTUFBTSxDQUFDaUMsY0FBckI7QUFDQSxLQUZNLE1BRUEsSUFBSSxPQUFPakMsTUFBTSxDQUFDaUMsY0FBZCxLQUFpQyxRQUFyQyxFQUErQztBQUNyRCxXQUFLWixNQUFMLEdBQWMsS0FBSzhCLE1BQUwsQ0FBWVIsUUFBWixDQUFxQjNDLE1BQU0sQ0FBQ2lDLGNBQTVCLENBQWQ7QUFDQSxLQXBKNkIsQ0FzSjlCOzs7QUFDQSxTQUFLbUIsUUFBTCxHQUFzQixLQUFLQyxhQUFMLENBQW1CL0IsT0FBbkIsRUFBNEJ0QixNQUFNLENBQUNzQixPQUFuQyxDQUF0QjtBQUNBLFNBQUtTLFFBQUwsR0FBc0IvQixNQUFNLENBQUMrQixRQUE3QjtBQUNBLFNBQUt1QixVQUFMLEdBQXNCdEQsTUFBTSxDQUFDc0QsVUFBN0I7QUFDQSxTQUFLUixJQUFMLEdBQXNCQSxJQUF0QjtBQUNBLFNBQUtiLGNBQUwsR0FBc0JqQyxNQUFNLENBQUNpQyxjQUE3QjtBQUNBLFNBQUtzQixNQUFMLEdBQXNCLENBQUMsQ0FBQ3ZELE1BQU0sQ0FBQ3VELE1BQS9CLENBNUo4QixDQThKOUI7O0FBQ0EsU0FBSyxNQUFNLENBQUVDLEdBQUYsRUFBT3pDLEtBQVAsQ0FBWCxJQUE2QjBDLE1BQU0sQ0FBQ0MsT0FBUCxDQUFlMUQsTUFBZixDQUE3QixFQUFxRDtBQUNwRCxVQUFJLENBQUN5RCxNQUFNLENBQUNFLFNBQVAsQ0FBaUJDLGNBQWpCLENBQWdDaEIsSUFBaEMsQ0FBcUMsSUFBckMsRUFBMkNZLEdBQTNDLENBQUwsRUFBc0Q7QUFDckQsYUFBS0EsR0FBTCxJQUFZekMsS0FBWjtBQUNBO0FBQ0Q7QUFDRDtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ1ksTUFBUE8sT0FBTyxHQUFHO0FBQ2IsV0FBTyxLQUFLOEIsUUFBWjtBQUNBOztBQUVVLE1BQVA5QixPQUFPLENBQUNQLEtBQUQsRUFBUTtBQUNsQixTQUFLcUMsUUFBTCxHQUFnQixLQUFLQyxhQUFMLENBQW1CdEMsS0FBbkIsQ0FBaEI7QUFDQTtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQ3NDLEVBQUFBLGFBQWEsQ0FBQyxHQUFHUSxNQUFKLEVBQVk7QUFDeEIsVUFBTUMsTUFBTSxHQUFHLEVBQWY7O0FBRUEsU0FBSyxJQUFJL0MsS0FBVCxJQUFrQjhDLE1BQWxCLEVBQTBCO0FBQ3pCLFVBQUksQ0FBQzlDLEtBQUwsRUFBWTtBQUNYO0FBQ0E7O0FBRUQsVUFBSUEsS0FBSyxZQUFZUSxHQUFyQixFQUEwQjtBQUN6QlIsUUFBQUEsS0FBSyxHQUFHYyxLQUFLLENBQUNrQyxJQUFOLENBQVdoRCxLQUFYLENBQVI7QUFDQTs7QUFFRCxVQUFJLE9BQU9BLEtBQVAsS0FBaUIsUUFBakIsSUFBNkIsQ0FBQ2MsS0FBSyxDQUFDQyxPQUFOLENBQWNmLEtBQWQsQ0FBbEMsRUFBd0Q7QUFDdkQwQyxRQUFBQSxNQUFNLENBQUNPLE1BQVAsQ0FBY0YsTUFBZCxFQUFzQi9DLEtBQXRCO0FBQ0E7QUFDQTs7QUFFRCxVQUFJLENBQUNjLEtBQUssQ0FBQ0MsT0FBTixDQUFjZixLQUFkLENBQUwsRUFBMkI7QUFDMUJBLFFBQUFBLEtBQUssR0FBRyxDQUFFQSxLQUFGLENBQVI7QUFDQTs7QUFFRCxXQUFLLE1BQU1TLEtBQVgsSUFBb0JULEtBQXBCLEVBQTJCO0FBQzFCLFlBQUksQ0FBQ1MsS0FBRCxJQUFVLE9BQU9BLEtBQVAsS0FBaUIsUUFBL0IsRUFBeUM7QUFDeEMsZ0JBQU1iLGdCQUFFSyxnQkFBRixDQUFtQixvREFBbkIsRUFBeUU7QUFBRWpCLFlBQUFBLElBQUksRUFBRSxlQUFSO0FBQXlCZSxZQUFBQSxLQUFLLEVBQUUscUJBQWhDO0FBQXVEQyxZQUFBQSxLQUFLLEVBQUVTO0FBQTlELFdBQXpFLENBQU47QUFDQTs7QUFFRCxhQUFLLE1BQU15QyxDQUFYLElBQWdCekMsS0FBSyxDQUFDQyxLQUFOLENBQVksUUFBWixDQUFoQixFQUF1QztBQUN0QyxjQUFJd0MsQ0FBQyxLQUFLLEdBQVYsRUFBZTtBQUNkLGtCQUFNdEQsZ0JBQUV1RCxhQUFGLENBQWlCLDBCQUF5QjFDLEtBQU0sR0FBaEQsRUFBb0Q7QUFBRXpCLGNBQUFBLElBQUksRUFBRSxTQUFSO0FBQW1CZSxjQUFBQSxLQUFLLEVBQUUscUJBQTFCO0FBQWlEQyxjQUFBQSxLQUFLLEVBQUVTO0FBQXhELGFBQXBELENBQU47QUFDQTs7QUFDRCxjQUFJeUMsQ0FBQyxDQUFDLENBQUQsQ0FBRCxLQUFTLEdBQWIsRUFBa0I7QUFDakJILFlBQUFBLE1BQU0sQ0FBQ0csQ0FBQyxDQUFDRSxTQUFGLENBQVksQ0FBWixDQUFELENBQU4sR0FBeUIsUUFBekI7QUFDQSxXQUZELE1BRU87QUFDTkwsWUFBQUEsTUFBTSxDQUFDRyxDQUFELENBQU4sR0FBWSxTQUFaO0FBQ0E7QUFDRDtBQUNEO0FBQ0Q7O0FBRUQsV0FBT0gsTUFBUDtBQUNBO0FBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQ00sRUFBQUEsWUFBWSxHQUFHO0FBQ2QsU0FBS0MsRUFBTCxDQUFRLGNBQVIsRUFBd0IsT0FBT2hFLEdBQVAsRUFBWWlFLE9BQVosS0FBd0I7QUFDL0MsWUFBTUMsSUFBSSxHQUFHO0FBQ1pDLFFBQUFBLEtBQUssRUFBRWYsTUFBTSxDQUFDTyxNQUFQLENBQWMsRUFBZCxFQUFrQnhFLGVBQU1DLE1BQXhCLEVBQWdDLEtBQUsrQyxHQUFMLENBQVMsUUFBVCxDQUFoQztBQURLLE9BQWI7QUFHQThCLE1BQUFBLE9BQU8sQ0FBQ3ZCLE1BQVIsR0FBaUIsT0FBTyxLQUFLRCxJQUFMLENBQVVDLE1BQWpCLEtBQTRCLFVBQTVCLEdBQXlDLE1BQU0sS0FBS0QsSUFBTCxDQUFVQyxNQUFWLENBQWlCSCxJQUFqQixDQUFzQixJQUF0QixFQUE0QjJCLElBQTVCLENBQS9DLEdBQW1GLEtBQUt6QixJQUFMLENBQVVDLE1BQTlHO0FBQ0F1QixNQUFBQSxPQUFPLENBQUN0QixNQUFSLEdBQWlCLE9BQU8sS0FBS0YsSUFBTCxDQUFVRSxNQUFqQixLQUE0QixVQUE1QixHQUF5QyxNQUFNLEtBQUtGLElBQUwsQ0FBVUUsTUFBVixDQUFpQkosSUFBakIsQ0FBc0IsSUFBdEIsRUFBNEIyQixJQUE1QixDQUEvQyxHQUFtRixLQUFLekIsSUFBTCxDQUFVRSxNQUE5RztBQUNBLEtBTkQ7QUFRQSxXQUFPLE1BQU1vQixZQUFOLEVBQVA7QUFDQTtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0NLLEVBQUFBLE1BQU0sR0FBRztBQUNSLFdBQU87QUFDTkMsTUFBQUEsSUFBSSxFQUFFLEtBQUtBO0FBREwsS0FBUDtBQUdBOztBQXJTMkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ29udGV4dCBmcm9tICcuL2NvbnRleHQnO1xuaW1wb3J0IGRlYnVnIGZyb20gJy4uL2xpYi9kZWJ1Zyc7XG5pbXBvcnQgRSBmcm9tICcuLi9saWIvZXJyb3JzJztcbmltcG9ydCBmcyBmcm9tICdmcyc7XG5pbXBvcnQgaGVscENvbW1hbmQgZnJvbSAnLi4vY29tbWFuZHMvaGVscCc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcblxuaW1wb3J0IHsgZGVjbGFyZUNMSUtpdENsYXNzIH0gZnJvbSAnLi4vbGliL3V0aWwnO1xuXG5jb25zdCB7IGxvZyB9ID0gZGVidWcoJ2NsaS1raXQ6Y29tbWFuZCcpO1xuY29uc3QgeyBoaWdobGlnaHQgfSA9IGRlYnVnLnN0eWxlcztcblxuY29uc3QgZm9ybWF0UmVnRXhwID0gL14oW0AhIF0qW1xcdy1fXSsoPzpcXHMqLFxccypbQCEgXSpbXFx3LV9dKykqKSgoPzpcXHMqWzxbXVtcXHctX10rWz5cXF1dKSopPyQvO1xuY29uc3QgbmFtZVJlZ0V4cCA9IC9eKFtAISBdKikoW1xcdy1fXSspXFxzKiQvO1xuXG4vKipcbiAqIERlZmluZXMgYSBjb21tYW5kIGFuZCBpdHMgb3B0aW9ucyBhbmQgYXJndW1lbnRzLlxuICpcbiAqIEBleHRlbmRzIHtDb250ZXh0fVxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb21tYW5kIGV4dGVuZHMgQ29udGV4dCB7XG5cdC8qKlxuXHQgKiBJbnRlcm5hbCBvYmplY3QgZm9yIHRyYWNraW5nIGFsaWFzZXMuXG5cdCAqXG5cdCAqIEB0eXBlIHtPYmplY3R9XG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRfYWxpYXNlcyA9IHt9O1xuXG5cdC8qKlxuXHQgKiBDb25zdHJ1Y3RzIGEgY29tbWFuZCBpbnN0YW5jZS5cblx0ICpcblx0ICogQHBhcmFtIHtTdHJpbmd9IG5hbWUgLSBUaGUgY29tbWFuZCBuYW1lIG9yIGFic29sdXRlIHBhdGggdG8gYSBmaWxlLlxuXHQgKiBAcGFyYW0ge09iamVjdHxDTEl8Q29tbWFuZHxDb250ZXh0fEZ1bmN0aW9ufSBbcGFyYW1zXSAtIENvbW1hbmQgcGFyYW1ldGVycyBvciBhbiBhY3Rpb25cblx0ICogZnVuY3Rpb24uXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb258Q29tbWFuZH0gW3BhcmFtcy5hY3Rpb25dIC0gQSBmdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIGNvbW1hbmQgaXMgZm91bmQuXG5cdCAqIEBwYXJhbSB7U2V0LjxTdHJpbmc+fEFycmF5LjxTdHJpbmc+fFN0cmluZ3xPYmplY3R9IFtwYXJhbXMuYWxpYXNlc10gLSBBbiBhcnJheSBvZiBjb21tYW5kXG5cdCAqIGFsaWFzZXMuXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IFtwYXJhbXMuY2FsbGJhY2tdIC0gQSBmdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIGNvbW1hbmQgaGFzIGJlZW4gcGFyc2VkLlxuXHQgKiBAcGFyYW0ge1N0cmluZ3xGdW5jdGlvbn0gW3BhcmFtcy5kZWZhdWx0Q29tbWFuZF0gLSBUaGUgZGVmYXVsdCBjb21tYW5kIHRvIGV4ZWN1dGUgd2hlbiB0aGlzXG5cdCAqIGNvbW1hbmQgaGFzIG5vIGBhY3Rpb25gLiBXaGVuIHZhbHVlIGlzIGEgYFN0cmluZ2AsIGl0IGxvb2tzIHVwIHRoZSBzdWJjb21tYW5kIGFuZCBjYWxscyBpdC5cblx0ICogSWYgdmFsdWUgaXMgYSBgRnVuY3Rpb25gLCBpdCBzaW1wbHkgaW52b2tlcyBpdC5cblx0ICogQHBhcmFtIHtTdHJpbmd8RnVuY3Rpb258T2JqZWN0fSBbcGFyYW1zLmhlbHBdIC0gQWRkaXRpb25hbCBoZWxwIGNvbnRlbnQgdG8gZGlzcGxheSBvbiB0aGVcblx0ICogaGVscCBzY3JlZW4uIFdoZW4gbWF5IGJlIGFuIG9iamVjdCB3aXRoIHRoZSBwcm9wZXJ0aWVzIGBoZWFkZXJgIGFuZCBgZm9vdGVyYCB3aGljaCB2YWx1ZXNcblx0ICogdGhhdCBhcmUgZWl0aGVyIGEgc3RyaW5nIG9yIGFuIGFzeW5jIGZ1bmN0aW9uIHRoYXQgcmVzb2x2ZXMgYSBzdHJpbmcuIFdoZW4gdmFsdWUgaXMgYSBzdHJpbmdcblx0ICogb3IgZnVuY3Rpb24sIGl0IGlzIHRyYXNuZm9ybWVkIGludG8gYSBvYmplY3Qgd2l0aCB0aGUgdmFsdWUgYmVpbmcgdXNlZCBhcyB0aGUgaGVhZGVyLiBOb3RlXG5cdCAqIHRoYXQgdGhlIGNvbW1hbmQgZGVzY3JpcHRpb24gaXMgbm90IGRpc3BsYXllZCB3aGVuIGEgaGVhZGVyIG1lc3NhZ2UgaGFzIGJlZW4gZGVmaW5lZC5cblx0ICogQHBhcmFtIHtCb29sZWFufSBbcGFyYW1zLmhpZGRlbj1mYWxzZV0gLSBXaGVuIGB0cnVlYCwgdGhlIG9wdGlvbiBpcyBub3QgZGlzcGxheWVkIG9uIHRoZVxuXHQgKiBoZWxwIHNjcmVlbiBvciBhdXRvLXN1Z2dlc3QuXG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqXG5cdCAqIEBleGFtcGxlXG5cdCAqICAgbmV3IENvbW1hbmQoJ2ZvbycpXG5cdCAqICAgbmV3IENvbW1hbmQoJ2ZvbycsIHt9KVxuXHQgKiAgIG5ldyBDb21tYW5kKG5ldyBDb21tYW5kKCdmb28nKSlcblx0ICovXG5cdGNvbnN0cnVjdG9yKG5hbWUsIHBhcmFtcyA9IHt9KSB7XG5cdFx0aWYgKG5hbWUgJiYgdHlwZW9mIG5hbWUgPT09ICdzdHJpbmcnICYmIHBhdGguaXNBYnNvbHV0ZShuYW1lKSAmJiBmcy5leGlzdHNTeW5jKG5hbWUpKSB7XG5cdFx0XHRsZXQgY3R4O1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0bG9nKGBSZXF1aXJpbmcgJHtoaWdobGlnaHQobmFtZSl9YCk7XG5cdFx0XHRcdGN0eCA9IHJlcXVpcmUobmFtZSk7XG5cdFx0XHRcdGlmICghY3R4IHx8IHR5cGVvZiBjdHggIT09ICdvYmplY3QnKSB7XG5cdFx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKCdDb21tYW5kIG11c3QgZXhwb3J0IGFuIG9iamVjdCcpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gaWYgdGhpcyBpcyBhbiBFUzYgbW9kdWxlLCBncmFiIHRoZSBkZWZhdWx0IGV4cG9ydFxuXHRcdFx0XHRpZiAoY3R4Ll9fZXNNb2R1bGUpIHtcblx0XHRcdFx0XHRjdHggPSBjdHguZGVmYXVsdDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmICghY3R4IHx8IHR5cGVvZiBjdHggIT09ICdvYmplY3QnKSB7XG5cdFx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKCdDb21tYW5kIG11c3QgZXhwb3J0IGFuIG9iamVjdCcpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0bmFtZSA9IGN0eC5uYW1lO1xuXHRcdFx0XHRwYXJhbXMgPSBjdHg7XG5cdFx0XHR9IGNhdGNoIChlcnIpIHtcblx0XHRcdFx0dGhyb3cgRS5JTlZBTElEX0NPTU1BTkQoYEJhZCBjb21tYW5kIFwiJHtuYW1lfVwiOiAke2Vyci5tZXNzYWdlfWAsIHsgbmFtZTogbmFtZSwgc2NvcGU6ICdDb21tYW5kLmNvbnN0cnVjdG9yJywgdmFsdWU6IGVyciB9KTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAoIW5hbWUgfHwgdHlwZW9mIG5hbWUgIT09ICdzdHJpbmcnKSB7XG5cdFx0XHR0aHJvdyBFLklOVkFMSURfQVJHVU1FTlQoJ0V4cGVjdGVkIGNvbW1hbmQgbmFtZSB0byBiZSBhIG5vbi1lbXB0eSBzdHJpbmcnLCB7IG5hbWU6ICduYW1lJywgc2NvcGU6ICdDb21tYW5kLmNvbnN0cnVjdG9yJywgdmFsdWU6IG5hbWUgfSk7XG5cdFx0fVxuXG5cdFx0Ly8gcGFyc2UgdGhlIG5hbWUgYW5kIGNyZWF0ZSB0aGUgYWxpYXNlcyBhbmQgYXJnczogXCJscywgbGlzdCA8YmFyPlwiXG5cdFx0Y29uc3QgZm9ybWF0ID0gbmFtZS50cmltKCk7XG5cdFx0Y29uc3QgbSA9IGZvcm1hdC5tYXRjaChmb3JtYXRSZWdFeHApO1xuXHRcdGlmICghbSB8fCAhbVsxXSkge1xuXHRcdFx0dGhyb3cgRS5JTlZBTElEX0FSR1VNRU5UKCdFeHBlY3RlZCBjb21tYW5kIG5hbWUgdG8gYmUgYSBub24tZW1wdHkgc3RyaW5nJywgeyBuYW1lOiAnbmFtZScsIHNjb3BlOiAnQ29tbWFuZC5jb25zdHJ1Y3RvcicsIHZhbHVlOiBuYW1lIH0pO1xuXHRcdH1cblxuXHRcdGlmICh0eXBlb2YgcGFyYW1zID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRwYXJhbXMgPSB7IGFjdGlvbjogcGFyYW1zIH07XG5cdFx0fVxuXG5cdFx0Ly8gcmVzZXQgdGhlIG5hbWVcblx0XHRuYW1lID0gbnVsbDtcblxuXHRcdC8vIGdldCB0aGUgYWxpYXNlcyBmcm9tIHRoZSBmb3JtYXQgYW5kIGZpbmQgdGhlIGNvbW1hbmQgbmFtZVxuXHRcdGNvbnN0IGFsaWFzZXMgPSBuZXcgU2V0KCk7XG5cdFx0Zm9yIChsZXQgYWxpYXMgb2YgbVsxXS5zcGxpdCgnLCcpKSB7XG5cdFx0XHRjb25zdCBuID0gYWxpYXMubWF0Y2gobmFtZVJlZ0V4cCk7XG5cdFx0XHRpZiAoIW4pIHtcblx0XHRcdFx0dGhyb3cgRS5JTlZBTElEX0FSR1VNRU5UKCdJbnZhbGlkIGNvbW1hbmQgYWxpYXMgZm9ybWF0JywgeyBuYW1lOiAnYWxpYXMnLCBzY29wZTogJ0NvbW1hbmQuY29uc3RydWN0b3InLCB2YWx1ZTogYWxpYXMgfSk7XG5cdFx0XHR9XG5cdFx0XHRpZiAoIW5bMV0uaW5jbHVkZXMoJ0AnKSAmJiAhbmFtZSkge1xuXHRcdFx0XHRuYW1lID0gblsyXTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGFsaWFzZXMuYWRkKG5bMV0uaW5jbHVkZXMoJyEnKSA/IGAhJHtuWzJdfWAgOiBuWzJdKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAoIW5hbWUpIHtcblx0XHRcdHRocm93ICBFLklOVkFMSURfQVJHVU1FTlQoJ0V4cGVjdGVkIGNvbW1hbmQgbmFtZSBmb3JtYXQgdG8gY29udGFpbiBhdCBsZWFzdCBvbmUgbm9uLWFsaWFzZWQgbmFtZScsIHsgbmFtZTogJ2Zvcm1hdCcsIHNjb3BlOiAnQ29tbWFuZC5jb25zdHJ1Y3RvcicsIHZhbHVlOiBmb3JtYXQgfSk7XG5cdFx0fVxuXG5cdFx0aWYgKCFwYXJhbXMgfHwgKHR5cGVvZiBwYXJhbXMgIT09ICdvYmplY3QnIHx8IEFycmF5LmlzQXJyYXkocGFyYW1zKSkpIHtcblx0XHRcdHRocm93IEUuSU5WQUxJRF9BUkdVTUVOVCgnRXhwZWN0ZWQgY29tbWFuZCBwYXJhbWV0ZXJzIHRvIGJlIGFuIG9iamVjdCcsIHsgbmFtZTogJ3BhcmFtcycsIHNjb3BlOiAnQ29tbWFuZC5jb25zdHJ1Y3RvcicsIHZhbHVlOiBwYXJhbXMgfSk7XG5cdFx0fVxuXG5cdFx0aWYgKHBhcmFtcy5jYWxsYmFjayAmJiB0eXBlb2YgcGFyYW1zLmNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHR0aHJvdyBFLklOVkFMSURfQVJHVU1FTlQoJ0V4cGVjdGVkIGNvbW1hbmQgY2FsbGJhY2sgdG8gYmUgYSBmdW5jdGlvbicsIHsgbmFtZTogJ2NhbGxiYWNrJywgc2NvcDogJ0NvbW1hbmQuY29uc3RydWN0b3InLCB2YWx1ZTogcGFyYW1zLmNhbGxiYWNrIH0pO1xuXHRcdH1cblxuXHRcdGlmIChwYXJhbXMuZGVmYXVsdENvbW1hbmQgIT09IHVuZGVmaW5lZCAmJiAoIXBhcmFtcy5kZWZhdWx0Q29tbWFuZCB8fCAodHlwZW9mIHBhcmFtcy5kZWZhdWx0Q29tbWFuZCAhPT0gJ3N0cmluZycgJiYgdHlwZW9mIHBhcmFtcy5kZWZhdWx0Q29tbWFuZCAhPT0gJ2Z1bmN0aW9uJykpKSB7XG5cdFx0XHR0aHJvdyBFLklOVkFMSURfQVJHVU1FTlQoJ0V4cGVjdGVkIGRlZmF1bHQgY29tbWFuZCB0byBiZSBhIHN0cmluZyBvciBmdW5jdGlvbicsIHsgbmFtZTogJ2RlZmF1bHRDb21tYW5kJywgc2NvcGU6ICdDb21tYW5kLmNvbnN0cnVjdG9yJywgdmFsdWU6IHBhcmFtcy5kZWZhdWx0Q29tbWFuZCB9KTtcblx0XHR9XG5cblx0XHRpZiAocGFyYW1zLmNsaWtpdCBpbnN0YW5jZW9mIFNldCkge1xuXHRcdFx0Ly8gcGFyYW1zIGlzIGEgY2xpLWtpdCBvYmplY3Rcblx0XHRcdGlmIChwYXJhbXMuY2xpa2l0LmhhcygnQ0xJJykpIHtcblx0XHRcdFx0Ly8gc2luY2UgYSBjb21tYW5kIGNhbm5vdCBoYXZlIGEgdGl0bGUgXCJnbG9iYWxcIiAob25seSBhIGBDTElgIG9iamVjdCBjYW4gaGF2ZSB0aGF0KSxcblx0XHRcdFx0Ly8gd2UgbXVzdCBkZWxldGUgaXQgc28gdGhhdCB0aGUgdGl0bGUgaXMgcmVzZXQgdG8gdGhlIGNvbW1hbmQgbmFtZVxuXHRcdFx0XHRpZiAocGFyYW1zLnRpdGxlID09PSAnR2xvYmFsJykge1xuXHRcdFx0XHRcdGRlbGV0ZSBwYXJhbXMudGl0bGU7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRkZWxldGUgcGFyYW1zLnRlcm1pbmFsO1xuXG5cdFx0XHRcdC8vIGFkZCBhbiBhY3Rpb24gaGFuZGxlciB0aGF0IGVpdGVociBleGVjdXRlcyBhIHNwZWNpZmljIGNvbW1hbmQgb3IgdGhlIGhlbHAgZm9yXG5cdFx0XHRcdC8vIGZvciB0aGlzIGNvbW1hbmQgKGUuZy4gdGhpcyBjb21tYW5kIGlzIGFuIGV4dGVuc2lvbilcblx0XHRcdFx0cGFyYW1zLmFjdGlvbiA9IGFzeW5jIHBhcnNlciA9PiB7XG5cdFx0XHRcdFx0Y29uc3QgeyBkZWZhdWx0Q29tbWFuZCB9ID0gcGFyYW1zO1xuXHRcdFx0XHRcdGlmIChkZWZhdWx0Q29tbWFuZCA9PT0gJ2hlbHAnICYmIHRoaXMuZ2V0KCdoZWxwJykpIHtcblx0XHRcdFx0XHRcdGF3YWl0IGhlbHBDb21tYW5kLmFjdGlvbihwYXJzZXIpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRjb25zdCBjbWQgPSBkZWZhdWx0Q29tbWFuZCAmJiB0aGlzLmNvbW1hbmRzW2RlZmF1bHRDb21tYW5kXTtcblx0XHRcdFx0XHRcdGlmIChjbWQpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGNtZC5hY3Rpb24uY2FsbChjbWQsIHBhcnNlcik7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9O1xuXHRcdFx0fSBlbHNlIGlmICghcGFyYW1zLmNsaWtpdC5oYXMoJ0NvbW1hbmQnKSkge1xuXHRcdFx0XHQvLyBtdXN0IGJlIGEgY29tbWFuZCBvciBleHRlbnNpb25cblx0XHRcdFx0dGhyb3cgRS5JTlZBTElEX0NMSUtJVF9PQkpFQ1QoJ0V4cGVjdGVkIGNvbW1hbmQgb3B0aW9ucyB0byBiZSBhIENMSSBvciBDb21tYW5kIG9iamVjdCcsIHsgbmFtZTogJ2NsaWtpdCcsIHNjb3BlOiAnQ29tbWFuZC5jb25zdHJ1Y3RvcicsIHZhbHVlOiBwYXJhbXMuY2xpa2l0IH0pO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmIChwYXJhbXMuYWN0aW9uICYmIHR5cGVvZiBwYXJhbXMuYWN0aW9uICE9PSAnZnVuY3Rpb24nICYmICEocGFyYW1zLmFjdGlvbiBpbnN0YW5jZW9mIENvbW1hbmQpKSB7XG5cdFx0XHR0aHJvdyBFLklOVkFMSURfQVJHVU1FTlQoJ0V4cGVjdGVkIGNvbW1hbmQgYWN0aW9uIHRvIGJlIGEgZnVuY3Rpb24gb3IgQ29tbWFuZCBpbnN0YW5jZScsIHsgbmFtZTogJ2FjdGlvbicsIHNjb3BlOiAnQ29tbWFuZC5jb25zdHJ1Y3RvcicsIHZhbHVlOiBwYXJhbXMuYWN0aW9uIH0pO1xuXHRcdH1cblxuXHRcdGNvbnN0IGhlbHAgPSB7fTtcblx0XHRpZiAocGFyYW1zLmhlbHApIHtcblx0XHRcdGlmICh0eXBlb2YgcGFyYW1zLmhlbHAgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBwYXJhbXMuaGVscCA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0XHRoZWxwLmhlYWRlciA9IHBhcmFtcy5oZWxwO1xuXHRcdFx0fSBlbHNlIGlmICh0eXBlb2YgcGFyYW1zLmhlbHAgPT09ICdvYmplY3QnKSB7XG5cdFx0XHRcdGlmIChwYXJhbXMuaGVscC5oZWFkZXIpIHtcblx0XHRcdFx0XHRpZiAodHlwZW9mIHBhcmFtcy5oZWxwLmhlYWRlciA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHBhcmFtcy5oZWxwLmhlYWRlciA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0XHRcdFx0aGVscC5oZWFkZXIgPSBwYXJhbXMuaGVscC5oZWFkZXI7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHRocm93IEUuSU5WQUxJRF9BUkdVTUVOVCgnRXhwZWN0ZWQgaGVscCBjb250ZW50IGhlYWRlciB0byBiZSBhIHN0cmluZyBvciBmdW5jdGlvbicpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAocGFyYW1zLmhlbHAuZm9vdGVyKSB7XG5cdFx0XHRcdFx0aWYgKHR5cGVvZiBwYXJhbXMuaGVscC5mb290ZXIgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBwYXJhbXMuaGVscC5mb290ZXIgPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdFx0XHRcdGhlbHAuZm9vdGVyID0gcGFyYW1zLmhlbHAuZm9vdGVyO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHR0aHJvdyBFLklOVkFMSURfQVJHVU1FTlQoJ0V4cGVjdGVkIGhlbHAgY29udGVudCBmb290ZXIgdG8gYmUgYSBzdHJpbmcgb3IgZnVuY3Rpb24nKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRocm93IEUuSU5WQUxJRF9BUkdVTUVOVCgnRXhwZWN0ZWQgaGVscCBjb250ZW50IHRvIGJlIGEgc3RyaW5nLCBmdW5jdGlvbiwgb3Igb2JqZWN0IGNvbnRhaW5pbmcgYSBoZWFkZXIgb3IgZm9vdGVyJyk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cGFyYW1zLm5hbWUgPSBuYW1lO1xuXG5cdFx0Y29uc3QgYXJncyA9IG1bMl0gJiYgbVsyXS50cmltKCkuc3BsaXQoL1xccysvKTtcblx0XHRpZiAoYXJncz8ubGVuZ3RoKSB7XG5cdFx0XHRwYXJhbXMuYXJncyA9IHBhcmFtcy5hcmdzID8gWyAuLi5hcmdzLCAuLi5wYXJhbXMuYXJncyBdIDogYXJncztcblx0XHR9XG5cblx0XHRzdXBlcihwYXJhbXMpO1xuXHRcdGRlY2xhcmVDTElLaXRDbGFzcyh0aGlzLCAnQ29tbWFuZCcpO1xuXG5cdFx0aWYgKHBhcmFtcy5hY3Rpb24pIHtcblx0XHRcdHRoaXMuYWN0aW9uID0gcGFyYW1zLmFjdGlvbjtcblx0XHR9IGVsc2UgaWYgKHR5cGVvZiBwYXJhbXMuZGVmYXVsdENvbW1hbmQgPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdHRoaXMuYWN0aW9uID0gcGFyYW1zLmRlZmF1bHRDb21tYW5kO1xuXHRcdH0gZWxzZSBpZiAodHlwZW9mIHBhcmFtcy5kZWZhdWx0Q29tbWFuZCA9PT0gJ3N0cmluZycpIHtcblx0XHRcdHRoaXMuYWN0aW9uID0gdGhpcy5sb29rdXAuY29tbWFuZHNbcGFyYW1zLmRlZmF1bHRDb21tYW5kXTtcblx0XHR9XG5cblx0XHQvLyBtaXggYWxpYXNlcyBTZXQgd2l0aCBwYXJhbXMuYWxpYXNlc1xuXHRcdHRoaXMuX2FsaWFzZXMgICAgICAgPSB0aGlzLmNyZWF0ZUFsaWFzZXMoYWxpYXNlcywgcGFyYW1zLmFsaWFzZXMpO1xuXHRcdHRoaXMuY2FsbGJhY2sgICAgICAgPSBwYXJhbXMuY2FsbGJhY2s7XG5cdFx0dGhpcy5jbGlraXRIZWxwICAgICA9IHBhcmFtcy5jbGlraXRIZWxwO1xuXHRcdHRoaXMuaGVscCAgICAgICAgICAgPSBoZWxwO1xuXHRcdHRoaXMuZGVmYXVsdENvbW1hbmQgPSBwYXJhbXMuZGVmYXVsdENvbW1hbmQ7XG5cdFx0dGhpcy5oaWRkZW4gICAgICAgICA9ICEhcGFyYW1zLmhpZGRlbjtcblxuXHRcdC8vIG1peCBpbiBhbnkgb3RoZXIgY3VzdG9tIHByb3BzXG5cdFx0Zm9yIChjb25zdCBbIGtleSwgdmFsdWUgXSBvZiBPYmplY3QuZW50cmllcyhwYXJhbXMpKSB7XG5cdFx0XHRpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLCBrZXkpKSB7XG5cdFx0XHRcdHRoaXNba2V5XSA9IHZhbHVlO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBBIG1hcCBvZiBhbGlhc2VzIGFuIHdoZXRoZXIgdGhleSBhcmUgdmlzaWJsZS5cblx0ICpcblx0ICogQHR5cGUge09iamVjdH1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGdldCBhbGlhc2VzKCkge1xuXHRcdHJldHVybiB0aGlzLl9hbGlhc2VzO1xuXHR9XG5cblx0c2V0IGFsaWFzZXModmFsdWUpIHtcblx0XHR0aGlzLl9hbGlhc2VzID0gdGhpcy5jcmVhdGVBbGlhc2VzKHZhbHVlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBNZXJnZXMgbXVsdGlwbGUgYWxpYXMgY29uc3RydWN0cyBpbnRvIGEgc2luZ2xlIGFsaWFzIG9iamVjdC5cblx0ICpcblx0ICogQHBhcmFtIHsuLi5TZXQuPFN0cmluZz58QXJyYXkuPFN0cmluZz58U3RyaW5nfE9iamVjdH0gdmFsdWVzIC0gT25lIG9yIG1vcmUgYWxpYXMgdmFsdWVzLlxuXHQgKiBAcmV0dXJucyB7T2JqZWN0fVxuXHQgKiBAYWNjZXNzIHByaXZhdGVcblx0ICovXG5cdGNyZWF0ZUFsaWFzZXMoLi4udmFsdWVzKSB7XG5cdFx0Y29uc3QgcmVzdWx0ID0ge307XG5cblx0XHRmb3IgKGxldCB2YWx1ZSBvZiB2YWx1ZXMpIHtcblx0XHRcdGlmICghdmFsdWUpIHtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cblx0XHRcdGlmICh2YWx1ZSBpbnN0YW5jZW9mIFNldCkge1xuXHRcdFx0XHR2YWx1ZSA9IEFycmF5LmZyb20odmFsdWUpO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcblx0XHRcdFx0T2JqZWN0LmFzc2lnbihyZXN1bHQsIHZhbHVlKTtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cblx0XHRcdGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcblx0XHRcdFx0dmFsdWUgPSBbIHZhbHVlIF07XG5cdFx0XHR9XG5cblx0XHRcdGZvciAoY29uc3QgYWxpYXMgb2YgdmFsdWUpIHtcblx0XHRcdFx0aWYgKCFhbGlhcyB8fCB0eXBlb2YgYWxpYXMgIT09ICdzdHJpbmcnKSB7XG5cdFx0XHRcdFx0dGhyb3cgRS5JTlZBTElEX0FSR1VNRU5UKCdFeHBlY3RlZCBjb21tYW5kIGFsaWFzZXMgdG8gYmUgYW4gYXJyYXkgb2Ygc3RyaW5ncycsIHsgbmFtZTogJ2FsaWFzZXMuYWxpYXMnLCBzY29wZTogJ0NvbW1hbmQuY29uc3RydWN0b3InLCB2YWx1ZTogYWxpYXMgfSk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRmb3IgKGNvbnN0IGEgb2YgYWxpYXMuc3BsaXQoL1sgLHxdKy8pKSB7XG5cdFx0XHRcdFx0aWYgKGEgPT09ICchJykge1xuXHRcdFx0XHRcdFx0dGhyb3cgRS5JTlZBTElEX0FMSUFTKGBJbnZhbGlkIGNvbW1hbmQgYWxpYXMgXCIke2FsaWFzfVwiYCwgeyBuYW1lOiAnYWxpYXNlcycsIHNjb3BlOiAnQ29tbWFuZC5jb25zdHJ1Y3RvcicsIHZhbHVlOiBhbGlhcyB9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKGFbMF0gPT09ICchJykge1xuXHRcdFx0XHRcdFx0cmVzdWx0W2Euc3Vic3RyaW5nKDEpXSA9ICdoaWRkZW4nO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRyZXN1bHRbYV0gPSAndmlzaWJsZSc7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZW5kZXJzIHRoZSBoZWxwIHNjcmVlbiBmb3IgdGhpcyBjb250ZXh0IGluY2x1ZGluZyB0aGUgcGFyZW50IGNvbnRleHRzLlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7UHJvbWlzZTxPYmplY3Q+fVxuXHQgKiBAYWNjZXNzIHByaXZhdGVcblx0ICovXG5cdGdlbmVyYXRlSGVscCgpIHtcblx0XHR0aGlzLm9uKCdnZW5lcmF0ZUhlbHAnLCBhc3luYyAoY3R4LCByZXN1bHRzKSA9PiB7XG5cdFx0XHRjb25zdCBvcHRzID0ge1xuXHRcdFx0XHRzdHlsZTogT2JqZWN0LmFzc2lnbih7fSwgZGVidWcuc3R5bGVzLCB0aGlzLmdldCgnc3R5bGVzJykpXG5cdFx0XHR9O1xuXHRcdFx0cmVzdWx0cy5oZWFkZXIgPSB0eXBlb2YgdGhpcy5oZWxwLmhlYWRlciA9PT0gJ2Z1bmN0aW9uJyA/IGF3YWl0IHRoaXMuaGVscC5oZWFkZXIuY2FsbCh0aGlzLCBvcHRzKSA6IHRoaXMuaGVscC5oZWFkZXI7XG5cdFx0XHRyZXN1bHRzLmZvb3RlciA9IHR5cGVvZiB0aGlzLmhlbHAuZm9vdGVyID09PSAnZnVuY3Rpb24nID8gYXdhaXQgdGhpcy5oZWxwLmZvb3Rlci5jYWxsKHRoaXMsIG9wdHMpIDogdGhpcy5oZWxwLmZvb3Rlcjtcblx0XHR9KTtcblxuXHRcdHJldHVybiBzdXBlci5nZW5lcmF0ZUhlbHAoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBzY2hlbWEgZm9yIHRoaXMgY29tbWFuZCBhbmQgYWxsIGNoaWxkIGNvbnRleHRzLlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7T2JqZWN0fVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0c2NoZW1hKCkge1xuXHRcdHJldHVybiB7XG5cdFx0XHRkZXNjOiB0aGlzLmRlc2Ncblx0XHR9O1xuXHR9XG59XG4iXSwiZmlsZSI6InBhcnNlci9jb21tYW5kLmpzIn0=
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhcnNlci9jb21tYW5kLmpzIl0sIm5hbWVzIjpbImxvZyIsImhpZ2hsaWdodCIsImRlYnVnIiwic3R5bGVzIiwiZm9ybWF0UmVnRXhwIiwibmFtZVJlZ0V4cCIsIkNvbW1hbmQiLCJDb250ZXh0IiwiY29uc3RydWN0b3IiLCJuYW1lIiwicGFyYW1zIiwicGF0aCIsImlzQWJzb2x1dGUiLCJmcyIsImV4aXN0c1N5bmMiLCJjdHgiLCJyZXF1aXJlIiwiRXJyb3IiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImVyciIsIkUiLCJJTlZBTElEX0NPTU1BTkQiLCJtZXNzYWdlIiwic2NvcGUiLCJ2YWx1ZSIsIklOVkFMSURfQVJHVU1FTlQiLCJmb3JtYXQiLCJ0cmltIiwibSIsIm1hdGNoIiwiYWN0aW9uIiwiYWxpYXNlcyIsIlNldCIsImFsaWFzIiwic3BsaXQiLCJuIiwiaW5jbHVkZXMiLCJhZGQiLCJBcnJheSIsImlzQXJyYXkiLCJjYWxsYmFjayIsInNjb3AiLCJkZWZhdWx0Q29tbWFuZCIsInVuZGVmaW5lZCIsImNsaWtpdCIsImhhcyIsInRpdGxlIiwidGVybWluYWwiLCJwYXJzZXIiLCJnZXQiLCJoZWxwQ29tbWFuZCIsImNtZCIsImNvbW1hbmRzIiwiY2FsbCIsIklOVkFMSURfQ0xJS0lUX09CSkVDVCIsImFyZ3MiLCJsZW5ndGgiLCJsb29rdXAiLCJfYWxpYXNlcyIsImNyZWF0ZUFsaWFzZXMiLCJjbGlraXRIZWxwIiwiaGVscCIsImhpZGRlbiIsImtleSIsIk9iamVjdCIsImVudHJpZXMiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsInZhbHVlcyIsInJlc3VsdCIsImZyb20iLCJhc3NpZ24iLCJhIiwiSU5WQUxJRF9BTElBUyIsInN1YnN0cmluZyIsImdlbmVyYXRlSGVscCIsIm9uIiwicmVzdWx0cyIsIm9wdHMiLCJzdHlsZSIsImhlYWRlciIsImZvb3RlciIsIl9oZWxwIiwic2NoZW1hIiwiZGVzYyJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztB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RCxNQUFYLEdBQW9CekQsS0FBSyxDQUFDeUQsTUFBMUI7QUFDQSxTQUZELE1BRU87QUFDTixnQkFBTTdELGdCQUFFSyxnQkFBRixDQUFtQix5REFBbkIsQ0FBTjtBQUNBO0FBQ0Q7QUFDRCxLQWZNLE1BZUE7QUFDTixZQUFNTCxnQkFBRUssZ0JBQUYsQ0FBbUIseUZBQW5CLENBQU47QUFDQTtBQUNEO0FBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQzBELEVBQUFBLE1BQU0sR0FBRztBQUNSLFdBQU87QUFDTkMsTUFBQUEsSUFBSSxFQUFFLEtBQUtBO0FBREwsS0FBUDtBQUdBOztBQXhUMkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ29udGV4dCBmcm9tICcuL2NvbnRleHQnO1xuaW1wb3J0IGRlYnVnIGZyb20gJy4uL2xpYi9kZWJ1Zyc7XG5pbXBvcnQgRSBmcm9tICcuLi9saWIvZXJyb3JzJztcbmltcG9ydCBmcyBmcm9tICdmcyc7XG5pbXBvcnQgaGVscENvbW1hbmQgZnJvbSAnLi4vY29tbWFuZHMvaGVscCc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcblxuaW1wb3J0IHsgZGVjbGFyZUNMSUtpdENsYXNzIH0gZnJvbSAnLi4vbGliL3V0aWwnO1xuXG5jb25zdCB7IGxvZyB9ID0gZGVidWcoJ2NsaS1raXQ6Y29tbWFuZCcpO1xuY29uc3QgeyBoaWdobGlnaHQgfSA9IGRlYnVnLnN0eWxlcztcblxuY29uc3QgZm9ybWF0UmVnRXhwID0gL14oW0AhIF0qW1xcdy1fXSsoPzpcXHMqLFxccypbQCEgXSpbXFx3LV9dKykqKSgoPzpcXHMqWzxbXVtcXHctX10rWz5cXF1dKSopPyQvO1xuY29uc3QgbmFtZVJlZ0V4cCA9IC9eKFtAISBdKikoW1xcdy1fXSspXFxzKiQvO1xuXG4vKipcbiAqIERlZmluZXMgYSBjb21tYW5kIGFuZCBpdHMgb3B0aW9ucyBhbmQgYXJndW1lbnRzLlxuICpcbiAqIEBleHRlbmRzIHtDb250ZXh0fVxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb21tYW5kIGV4dGVuZHMgQ29udGV4dCB7XG5cdC8qKlxuXHQgKiBJbnRlcm5hbCBvYmplY3QgZm9yIHRyYWNraW5nIGFsaWFzZXMuXG5cdCAqXG5cdCAqIEB0eXBlIHtPYmplY3R9XG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRfYWxpYXNlcyA9IHt9O1xuXG5cdC8qKlxuXHQgKiBDdXN0b20gaGVscCBoZWFkZXIgYW5kIGZvb3RlciBjb250ZW50LlxuXHQgKlxuXHQgKiBAdHlwZSB7T2JqZWN0fVxuXHQgKiBAYWNjZXNzIHByaXZhdGVcblx0ICovXG5cdF9oZWxwID0ge307XG5cblx0LyoqXG5cdCAqIENvbnN0cnVjdHMgYSBjb21tYW5kIGluc3RhbmNlLlxuXHQgKlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gbmFtZSAtIFRoZSBjb21tYW5kIG5hbWUgb3IgYWJzb2x1dGUgcGF0aCB0byBhIGZpbGUuXG5cdCAqIEBwYXJhbSB7T2JqZWN0fENMSXxDb21tYW5kfENvbnRleHR8RnVuY3Rpb259IFtwYXJhbXNdIC0gQ29tbWFuZCBwYXJhbWV0ZXJzIG9yIGFuIGFjdGlvblxuXHQgKiBmdW5jdGlvbi5cblx0ICogQHBhcmFtIHtGdW5jdGlvbnxDb21tYW5kfSBbcGFyYW1zLmFjdGlvbl0gLSBBIGZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgY29tbWFuZCBpcyBmb3VuZC5cblx0ICogQHBhcmFtIHtTZXQuPFN0cmluZz58QXJyYXkuPFN0cmluZz58U3RyaW5nfE9iamVjdH0gW3BhcmFtcy5hbGlhc2VzXSAtIEFuIGFycmF5IG9mIGNvbW1hbmRcblx0ICogYWxpYXNlcy5cblx0ICogQHBhcmFtIHtGdW5jdGlvbn0gW3BhcmFtcy5jYWxsYmFja10gLSBBIGZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgY29tbWFuZCBoYXMgYmVlbiBwYXJzZWQuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfEZ1bmN0aW9ufSBbcGFyYW1zLmRlZmF1bHRDb21tYW5kXSAtIFRoZSBkZWZhdWx0IGNvbW1hbmQgdG8gZXhlY3V0ZSB3aGVuIHRoaXNcblx0ICogY29tbWFuZCBoYXMgbm8gYGFjdGlvbmAuIFdoZW4gdmFsdWUgaXMgYSBgU3RyaW5nYCwgaXQgbG9va3MgdXAgdGhlIHN1YmNvbW1hbmQgYW5kIGNhbGxzIGl0LlxuXHQgKiBJZiB2YWx1ZSBpcyBhIGBGdW5jdGlvbmAsIGl0IHNpbXBseSBpbnZva2VzIGl0LlxuXHQgKiBAcGFyYW0ge1N0cmluZ3xGdW5jdGlvbnxPYmplY3R9IFtwYXJhbXMuaGVscF0gLSBBZGRpdGlvbmFsIGhlbHAgY29udGVudCB0byBkaXNwbGF5IG9uIHRoZVxuXHQgKiBoZWxwIHNjcmVlbi4gV2hlbiBtYXkgYmUgYW4gb2JqZWN0IHdpdGggdGhlIHByb3BlcnRpZXMgYGhlYWRlcmAgYW5kIGBmb290ZXJgIHdoaWNoIHZhbHVlc1xuXHQgKiB0aGF0IGFyZSBlaXRoZXIgYSBzdHJpbmcgb3IgYW4gYXN5bmMgZnVuY3Rpb24gdGhhdCByZXNvbHZlcyBhIHN0cmluZy4gV2hlbiB2YWx1ZSBpcyBhIHN0cmluZ1xuXHQgKiBvciBmdW5jdGlvbiwgaXQgaXMgdHJhc25mb3JtZWQgaW50byBhIG9iamVjdCB3aXRoIHRoZSB2YWx1ZSBiZWluZyB1c2VkIGFzIHRoZSBoZWFkZXIuIE5vdGVcblx0ICogdGhhdCB0aGUgY29tbWFuZCBkZXNjcmlwdGlvbiBpcyBub3QgZGlzcGxheWVkIHdoZW4gYSBoZWFkZXIgbWVzc2FnZSBoYXMgYmVlbiBkZWZpbmVkLlxuXHQgKiBAcGFyYW0ge0Jvb2xlYW59IFtwYXJhbXMuaGlkZGVuPWZhbHNlXSAtIFdoZW4gYHRydWVgLCB0aGUgb3B0aW9uIGlzIG5vdCBkaXNwbGF5ZWQgb24gdGhlXG5cdCAqIGhlbHAgc2NyZWVuIG9yIGF1dG8tc3VnZ2VzdC5cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICpcblx0ICogQGV4YW1wbGVcblx0ICogICBuZXcgQ29tbWFuZCgnZm9vJylcblx0ICogICBuZXcgQ29tbWFuZCgnZm9vJywge30pXG5cdCAqICAgbmV3IENvbW1hbmQobmV3IENvbW1hbmQoJ2ZvbycpKVxuXHQgKi9cblx0Y29uc3RydWN0b3IobmFtZSwgcGFyYW1zID0ge30pIHtcblx0XHRpZiAobmFtZSAmJiB0eXBlb2YgbmFtZSA9PT0gJ3N0cmluZycgJiYgcGF0aC5pc0Fic29sdXRlKG5hbWUpICYmIGZzLmV4aXN0c1N5bmMobmFtZSkpIHtcblx0XHRcdGxldCBjdHg7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRsb2coYFJlcXVpcmluZyAke2hpZ2hsaWdodChuYW1lKX1gKTtcblx0XHRcdFx0Y3R4ID0gcmVxdWlyZShuYW1lKTtcblx0XHRcdFx0aWYgKCFjdHggfHwgdHlwZW9mIGN0eCAhPT0gJ29iamVjdCcpIHtcblx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ0NvbW1hbmQgbXVzdCBleHBvcnQgYW4gb2JqZWN0Jyk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBpZiB0aGlzIGlzIGFuIEVTNiBtb2R1bGUsIGdyYWIgdGhlIGRlZmF1bHQgZXhwb3J0XG5cdFx0XHRcdGlmIChjdHguX19lc01vZHVsZSkge1xuXHRcdFx0XHRcdGN0eCA9IGN0eC5kZWZhdWx0O1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKCFjdHggfHwgdHlwZW9mIGN0eCAhPT0gJ29iamVjdCcpIHtcblx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ0NvbW1hbmQgbXVzdCBleHBvcnQgYW4gb2JqZWN0Jyk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRuYW1lID0gY3R4Lm5hbWU7XG5cdFx0XHRcdHBhcmFtcyA9IGN0eDtcblx0XHRcdH0gY2F0Y2ggKGVycikge1xuXHRcdFx0XHR0aHJvdyBFLklOVkFMSURfQ09NTUFORChgQmFkIGNvbW1hbmQgXCIke25hbWV9XCI6ICR7ZXJyLm1lc3NhZ2V9YCwgeyBuYW1lOiBuYW1lLCBzY29wZTogJ0NvbW1hbmQuY29uc3RydWN0b3InLCB2YWx1ZTogZXJyIH0pO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICghbmFtZSB8fCB0eXBlb2YgbmFtZSAhPT0gJ3N0cmluZycpIHtcblx0XHRcdHRocm93IEUuSU5WQUxJRF9BUkdVTUVOVCgnRXhwZWN0ZWQgY29tbWFuZCBuYW1lIHRvIGJlIGEgbm9uLWVtcHR5IHN0cmluZycsIHsgbmFtZTogJ25hbWUnLCBzY29wZTogJ0NvbW1hbmQuY29uc3RydWN0b3InLCB2YWx1ZTogbmFtZSB9KTtcblx0XHR9XG5cblx0XHQvLyBwYXJzZSB0aGUgbmFtZSBhbmQgY3JlYXRlIHRoZSBhbGlhc2VzIGFuZCBhcmdzOiBcImxzLCBsaXN0IDxiYXI+XCJcblx0XHRjb25zdCBmb3JtYXQgPSBuYW1lLnRyaW0oKTtcblx0XHRjb25zdCBtID0gZm9ybWF0Lm1hdGNoKGZvcm1hdFJlZ0V4cCk7XG5cdFx0aWYgKCFtIHx8ICFtWzFdKSB7XG5cdFx0XHR0aHJvdyBFLklOVkFMSURfQVJHVU1FTlQoJ0V4cGVjdGVkIGNvbW1hbmQgbmFtZSB0byBiZSBhIG5vbi1lbXB0eSBzdHJpbmcnLCB7IG5hbWU6ICduYW1lJywgc2NvcGU6ICdDb21tYW5kLmNvbnN0cnVjdG9yJywgdmFsdWU6IG5hbWUgfSk7XG5cdFx0fVxuXG5cdFx0aWYgKHR5cGVvZiBwYXJhbXMgPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdHBhcmFtcyA9IHsgYWN0aW9uOiBwYXJhbXMgfTtcblx0XHR9XG5cblx0XHQvLyByZXNldCB0aGUgbmFtZVxuXHRcdG5hbWUgPSBudWxsO1xuXG5cdFx0Ly8gZ2V0IHRoZSBhbGlhc2VzIGZyb20gdGhlIGZvcm1hdCBhbmQgZmluZCB0aGUgY29tbWFuZCBuYW1lXG5cdFx0Y29uc3QgYWxpYXNlcyA9IG5ldyBTZXQoKTtcblx0XHRmb3IgKGxldCBhbGlhcyBvZiBtWzFdLnNwbGl0KCcsJykpIHtcblx0XHRcdGNvbnN0IG4gPSBhbGlhcy5tYXRjaChuYW1lUmVnRXhwKTtcblx0XHRcdGlmICghbikge1xuXHRcdFx0XHR0aHJvdyBFLklOVkFMSURfQVJHVU1FTlQoJ0ludmFsaWQgY29tbWFuZCBhbGlhcyBmb3JtYXQnLCB7IG5hbWU6ICdhbGlhcycsIHNjb3BlOiAnQ29tbWFuZC5jb25zdHJ1Y3RvcicsIHZhbHVlOiBhbGlhcyB9KTtcblx0XHRcdH1cblx0XHRcdGlmICghblsxXS5pbmNsdWRlcygnQCcpICYmICFuYW1lKSB7XG5cdFx0XHRcdG5hbWUgPSBuWzJdO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0YWxpYXNlcy5hZGQoblsxXS5pbmNsdWRlcygnIScpID8gYCEke25bMl19YCA6IG5bMl0pO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICghbmFtZSkge1xuXHRcdFx0dGhyb3cgIEUuSU5WQUxJRF9BUkdVTUVOVCgnRXhwZWN0ZWQgY29tbWFuZCBuYW1lIGZvcm1hdCB0byBjb250YWluIGF0IGxlYXN0IG9uZSBub24tYWxpYXNlZCBuYW1lJywgeyBuYW1lOiAnZm9ybWF0Jywgc2NvcGU6ICdDb21tYW5kLmNvbnN0cnVjdG9yJywgdmFsdWU6IGZvcm1hdCB9KTtcblx0XHR9XG5cblx0XHRpZiAoIXBhcmFtcyB8fCAodHlwZW9mIHBhcmFtcyAhPT0gJ29iamVjdCcgfHwgQXJyYXkuaXNBcnJheShwYXJhbXMpKSkge1xuXHRcdFx0dGhyb3cgRS5JTlZBTElEX0FSR1VNRU5UKCdFeHBlY3RlZCBjb21tYW5kIHBhcmFtZXRlcnMgdG8gYmUgYW4gb2JqZWN0JywgeyBuYW1lOiAncGFyYW1zJywgc2NvcGU6ICdDb21tYW5kLmNvbnN0cnVjdG9yJywgdmFsdWU6IHBhcmFtcyB9KTtcblx0XHR9XG5cblx0XHRpZiAocGFyYW1zLmNhbGxiYWNrICYmIHR5cGVvZiBwYXJhbXMuY2FsbGJhY2sgIT09ICdmdW5jdGlvbicpIHtcblx0XHRcdHRocm93IEUuSU5WQUxJRF9BUkdVTUVOVCgnRXhwZWN0ZWQgY29tbWFuZCBjYWxsYmFjayB0byBiZSBhIGZ1bmN0aW9uJywgeyBuYW1lOiAnY2FsbGJhY2snLCBzY29wOiAnQ29tbWFuZC5jb25zdHJ1Y3RvcicsIHZhbHVlOiBwYXJhbXMuY2FsbGJhY2sgfSk7XG5cdFx0fVxuXG5cdFx0aWYgKHBhcmFtcy5kZWZhdWx0Q29tbWFuZCAhPT0gdW5kZWZpbmVkICYmICghcGFyYW1zLmRlZmF1bHRDb21tYW5kIHx8ICh0eXBlb2YgcGFyYW1zLmRlZmF1bHRDb21tYW5kICE9PSAnc3RyaW5nJyAmJiB0eXBlb2YgcGFyYW1zLmRlZmF1bHRDb21tYW5kICE9PSAnZnVuY3Rpb24nKSkpIHtcblx0XHRcdHRocm93IEUuSU5WQUxJRF9BUkdVTUVOVCgnRXhwZWN0ZWQgZGVmYXVsdCBjb21tYW5kIHRvIGJlIGEgc3RyaW5nIG9yIGZ1bmN0aW9uJywgeyBuYW1lOiAnZGVmYXVsdENvbW1hbmQnLCBzY29wZTogJ0NvbW1hbmQuY29uc3RydWN0b3InLCB2YWx1ZTogcGFyYW1zLmRlZmF1bHRDb21tYW5kIH0pO1xuXHRcdH1cblxuXHRcdGlmIChwYXJhbXMuY2xpa2l0IGluc3RhbmNlb2YgU2V0KSB7XG5cdFx0XHQvLyBwYXJhbXMgaXMgYSBjbGkta2l0IG9iamVjdFxuXHRcdFx0aWYgKHBhcmFtcy5jbGlraXQuaGFzKCdDTEknKSkge1xuXHRcdFx0XHQvLyBzaW5jZSBhIGNvbW1hbmQgY2Fubm90IGhhdmUgYSB0aXRsZSBcImdsb2JhbFwiIChvbmx5IGEgYENMSWAgb2JqZWN0IGNhbiBoYXZlIHRoYXQpLFxuXHRcdFx0XHQvLyB3ZSBtdXN0IGRlbGV0ZSBpdCBzbyB0aGF0IHRoZSB0aXRsZSBpcyByZXNldCB0byB0aGUgY29tbWFuZCBuYW1lXG5cdFx0XHRcdGlmIChwYXJhbXMudGl0bGUgPT09ICdHbG9iYWwnKSB7XG5cdFx0XHRcdFx0ZGVsZXRlIHBhcmFtcy50aXRsZTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGRlbGV0ZSBwYXJhbXMudGVybWluYWw7XG5cblx0XHRcdFx0Ly8gYWRkIGFuIGFjdGlvbiBoYW5kbGVyIHRoYXQgZWl0ZWhyIGV4ZWN1dGVzIGEgc3BlY2lmaWMgY29tbWFuZCBvciB0aGUgaGVscCBmb3Jcblx0XHRcdFx0Ly8gZm9yIHRoaXMgY29tbWFuZCAoZS5nLiB0aGlzIGNvbW1hbmQgaXMgYW4gZXh0ZW5zaW9uKVxuXHRcdFx0XHRwYXJhbXMuYWN0aW9uID0gYXN5bmMgcGFyc2VyID0+IHtcblx0XHRcdFx0XHRjb25zdCB7IGRlZmF1bHRDb21tYW5kIH0gPSBwYXJhbXM7XG5cdFx0XHRcdFx0aWYgKGRlZmF1bHRDb21tYW5kID09PSAnaGVscCcgJiYgdGhpcy5nZXQoJ2hlbHAnKSkge1xuXHRcdFx0XHRcdFx0YXdhaXQgaGVscENvbW1hbmQuYWN0aW9uKHBhcnNlcik7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGNvbnN0IGNtZCA9IGRlZmF1bHRDb21tYW5kICYmIHRoaXMuY29tbWFuZHNbZGVmYXVsdENvbW1hbmRdO1xuXHRcdFx0XHRcdFx0aWYgKGNtZCkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gY21kLmFjdGlvbi5jYWxsKGNtZCwgcGFyc2VyKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH07XG5cdFx0XHR9IGVsc2UgaWYgKCFwYXJhbXMuY2xpa2l0LmhhcygnQ29tbWFuZCcpKSB7XG5cdFx0XHRcdC8vIG11c3QgYmUgYSBjb21tYW5kIG9yIGV4dGVuc2lvblxuXHRcdFx0XHR0aHJvdyBFLklOVkFMSURfQ0xJS0lUX09CSkVDVCgnRXhwZWN0ZWQgY29tbWFuZCBvcHRpb25zIHRvIGJlIGEgQ0xJIG9yIENvbW1hbmQgb2JqZWN0JywgeyBuYW1lOiAnY2xpa2l0Jywgc2NvcGU6ICdDb21tYW5kLmNvbnN0cnVjdG9yJywgdmFsdWU6IHBhcmFtcy5jbGlraXQgfSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKHBhcmFtcy5hY3Rpb24gJiYgdHlwZW9mIHBhcmFtcy5hY3Rpb24gIT09ICdmdW5jdGlvbicgJiYgIShwYXJhbXMuYWN0aW9uIGluc3RhbmNlb2YgQ29tbWFuZCkpIHtcblx0XHRcdHRocm93IEUuSU5WQUxJRF9BUkdVTUVOVCgnRXhwZWN0ZWQgY29tbWFuZCBhY3Rpb24gdG8gYmUgYSBmdW5jdGlvbiBvciBDb21tYW5kIGluc3RhbmNlJywgeyBuYW1lOiAnYWN0aW9uJywgc2NvcGU6ICdDb21tYW5kLmNvbnN0cnVjdG9yJywgdmFsdWU6IHBhcmFtcy5hY3Rpb24gfSk7XG5cdFx0fVxuXG5cdFx0cGFyYW1zLm5hbWUgPSBuYW1lO1xuXG5cdFx0Y29uc3QgYXJncyA9IG1bMl0gJiYgbVsyXS50cmltKCkuc3BsaXQoL1xccysvKTtcblx0XHRpZiAoYXJncz8ubGVuZ3RoKSB7XG5cdFx0XHRwYXJhbXMuYXJncyA9IHBhcmFtcy5hcmdzID8gWyAuLi5hcmdzLCAuLi5wYXJhbXMuYXJncyBdIDogYXJncztcblx0XHR9XG5cblx0XHRzdXBlcihwYXJhbXMpO1xuXHRcdGRlY2xhcmVDTElLaXRDbGFzcyh0aGlzLCAnQ29tbWFuZCcpO1xuXG5cdFx0aWYgKHBhcmFtcy5hY3Rpb24pIHtcblx0XHRcdHRoaXMuYWN0aW9uID0gcGFyYW1zLmFjdGlvbjtcblx0XHR9IGVsc2UgaWYgKHR5cGVvZiBwYXJhbXMuZGVmYXVsdENvbW1hbmQgPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdHRoaXMuYWN0aW9uID0gcGFyYW1zLmRlZmF1bHRDb21tYW5kO1xuXHRcdH0gZWxzZSBpZiAodHlwZW9mIHBhcmFtcy5kZWZhdWx0Q29tbWFuZCA9PT0gJ3N0cmluZycpIHtcblx0XHRcdHRoaXMuYWN0aW9uID0gdGhpcy5sb29rdXAuY29tbWFuZHNbcGFyYW1zLmRlZmF1bHRDb21tYW5kXTtcblx0XHR9XG5cblx0XHQvLyBtaXggYWxpYXNlcyBTZXQgd2l0aCBwYXJhbXMuYWxpYXNlc1xuXHRcdHRoaXMuX2FsaWFzZXMgICAgICAgPSB0aGlzLmNyZWF0ZUFsaWFzZXMoYWxpYXNlcywgcGFyYW1zLmFsaWFzZXMpO1xuXHRcdHRoaXMuY2FsbGJhY2sgICAgICAgPSBwYXJhbXMuY2FsbGJhY2s7XG5cdFx0dGhpcy5jbGlraXRIZWxwICAgICA9IHBhcmFtcy5jbGlraXRIZWxwO1xuXHRcdHRoaXMuaGVscCAgICAgICAgICAgPSBwYXJhbXMuaGVscCB8fCB7fTtcblx0XHR0aGlzLmRlZmF1bHRDb21tYW5kID0gcGFyYW1zLmRlZmF1bHRDb21tYW5kO1xuXHRcdHRoaXMuaGlkZGVuICAgICAgICAgPSAhIXBhcmFtcy5oaWRkZW47XG5cblx0XHQvLyBtaXggaW4gYW55IG90aGVyIGN1c3RvbSBwcm9wc1xuXHRcdGZvciAoY29uc3QgWyBrZXksIHZhbHVlIF0gb2YgT2JqZWN0LmVudHJpZXMocGFyYW1zKSkge1xuXHRcdFx0aWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcywga2V5KSkge1xuXHRcdFx0XHR0aGlzW2tleV0gPSB2YWx1ZTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQSBtYXAgb2YgYWxpYXNlcyBhbiB3aGV0aGVyIHRoZXkgYXJlIHZpc2libGUuXG5cdCAqXG5cdCAqIEB0eXBlIHtPYmplY3R9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRnZXQgYWxpYXNlcygpIHtcblx0XHRyZXR1cm4gdGhpcy5fYWxpYXNlcztcblx0fVxuXG5cdHNldCBhbGlhc2VzKHZhbHVlKSB7XG5cdFx0dGhpcy5fYWxpYXNlcyA9IHRoaXMuY3JlYXRlQWxpYXNlcyh2YWx1ZSk7XG5cdH1cblxuXHQvKipcblx0ICogTWVyZ2VzIG11bHRpcGxlIGFsaWFzIGNvbnN0cnVjdHMgaW50byBhIHNpbmdsZSBhbGlhcyBvYmplY3QuXG5cdCAqXG5cdCAqIEBwYXJhbSB7Li4uU2V0LjxTdHJpbmc+fEFycmF5LjxTdHJpbmc+fFN0cmluZ3xPYmplY3R9IHZhbHVlcyAtIE9uZSBvciBtb3JlIGFsaWFzIHZhbHVlcy5cblx0ICogQHJldHVybnMge09iamVjdH1cblx0ICogQGFjY2VzcyBwcml2YXRlXG5cdCAqL1xuXHRjcmVhdGVBbGlhc2VzKC4uLnZhbHVlcykge1xuXHRcdGNvbnN0IHJlc3VsdCA9IHt9O1xuXG5cdFx0Zm9yIChsZXQgdmFsdWUgb2YgdmFsdWVzKSB7XG5cdFx0XHRpZiAoIXZhbHVlKSB7XG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAodmFsdWUgaW5zdGFuY2VvZiBTZXQpIHtcblx0XHRcdFx0dmFsdWUgPSBBcnJheS5mcm9tKHZhbHVlKTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG5cdFx0XHRcdE9iamVjdC5hc3NpZ24ocmVzdWx0LCB2YWx1ZSk7XG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG5cdFx0XHRcdHZhbHVlID0gWyB2YWx1ZSBdO1xuXHRcdFx0fVxuXG5cdFx0XHRmb3IgKGNvbnN0IGFsaWFzIG9mIHZhbHVlKSB7XG5cdFx0XHRcdGlmICghYWxpYXMgfHwgdHlwZW9mIGFsaWFzICE9PSAnc3RyaW5nJykge1xuXHRcdFx0XHRcdHRocm93IEUuSU5WQUxJRF9BUkdVTUVOVCgnRXhwZWN0ZWQgY29tbWFuZCBhbGlhc2VzIHRvIGJlIGFuIGFycmF5IG9mIHN0cmluZ3MnLCB7IG5hbWU6ICdhbGlhc2VzLmFsaWFzJywgc2NvcGU6ICdDb21tYW5kLmNvbnN0cnVjdG9yJywgdmFsdWU6IGFsaWFzIH0pO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Zm9yIChjb25zdCBhIG9mIGFsaWFzLnNwbGl0KC9bICx8XSsvKSkge1xuXHRcdFx0XHRcdGlmIChhID09PSAnIScpIHtcblx0XHRcdFx0XHRcdHRocm93IEUuSU5WQUxJRF9BTElBUyhgSW52YWxpZCBjb21tYW5kIGFsaWFzIFwiJHthbGlhc31cImAsIHsgbmFtZTogJ2FsaWFzZXMnLCBzY29wZTogJ0NvbW1hbmQuY29uc3RydWN0b3InLCB2YWx1ZTogYWxpYXMgfSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmIChhWzBdID09PSAnIScpIHtcblx0XHRcdFx0XHRcdHJlc3VsdFthLnN1YnN0cmluZygxKV0gPSAnaGlkZGVuJztcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0cmVzdWx0W2FdID0gJ3Zpc2libGUnO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiByZXN1bHQ7XG5cdH1cblxuXHQvKipcblx0ICogUmVuZGVycyB0aGUgaGVscCBzY3JlZW4gZm9yIHRoaXMgY29udGV4dCBpbmNsdWRpbmcgdGhlIHBhcmVudCBjb250ZXh0cy5cblx0ICpcblx0ICogQHJldHVybnMge1Byb21pc2U8T2JqZWN0Pn1cblx0ICogQGFjY2VzcyBwcml2YXRlXG5cdCAqL1xuXHRnZW5lcmF0ZUhlbHAoKSB7XG5cdFx0dGhpcy5vbignZ2VuZXJhdGVIZWxwJywgYXN5bmMgKGN0eCwgcmVzdWx0cykgPT4ge1xuXHRcdFx0Y29uc3Qgb3B0cyA9IHtcblx0XHRcdFx0c3R5bGU6IE9iamVjdC5hc3NpZ24oe30sIGRlYnVnLnN0eWxlcywgdGhpcy5nZXQoJ3N0eWxlcycpKVxuXHRcdFx0fTtcblx0XHRcdHJlc3VsdHMuaGVhZGVyID0gdHlwZW9mIHRoaXMuaGVscC5oZWFkZXIgPT09ICdmdW5jdGlvbicgPyBhd2FpdCB0aGlzLmhlbHAuaGVhZGVyLmNhbGwodGhpcywgb3B0cykgOiB0aGlzLmhlbHAuaGVhZGVyO1xuXHRcdFx0cmVzdWx0cy5mb290ZXIgPSB0eXBlb2YgdGhpcy5oZWxwLmZvb3RlciA9PT0gJ2Z1bmN0aW9uJyA/IGF3YWl0IHRoaXMuaGVscC5mb290ZXIuY2FsbCh0aGlzLCBvcHRzKSA6IHRoaXMuaGVscC5mb290ZXI7XG5cdFx0fSk7XG5cblx0XHRyZXR1cm4gc3VwZXIuZ2VuZXJhdGVIZWxwKCk7XG5cdH1cblxuXHQvKipcblx0ICogQ3VzdG9tIGhlbHAgaGVhZGVyIGFuZCBmb290ZXIgY29udGVudC4gQSBzdHJpbmcsIGZ1bmN0aW9uLCBvciBvYmplY3Qgd2l0aCBgaGVhZGVyYCBhbmRcblx0ICogYGZvb3RlcmAgcHJvcGVydGllcyBtYXkgYmUgdXNlZCB0byBzZXQgdGhlIGBoZWxwYCBwcm9wZXJ0eSwgYnV0IHRoZSBpbnRlcm5hbCB2YWx1ZSB3aWxsXG5cdCAqIGFsd2F5cyBiZSBhbiBvYmplY3Qgd2l0aCBgaGVhZGVyYCBhbmQgYGZvb3RlcmAgcHJvcGVydGllcy5cblx0ICpcblx0ICogQHR5cGUge09iamVjdH1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGdldCBoZWxwKCkge1xuXHRcdHJldHVybiB0aGlzLl9oZWxwO1xuXHR9XG5cblx0c2V0IGhlbHAodmFsdWUpIHtcblx0XHRpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdHRoaXMuX2hlbHAuaGVhZGVyID0gdmFsdWU7XG5cdFx0fSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG5cdFx0XHRpZiAodmFsdWUuaGVhZGVyKSB7XG5cdFx0XHRcdGlmICh0eXBlb2YgdmFsdWUuaGVhZGVyID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdmFsdWUuaGVhZGVyID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRcdFx0dGhpcy5faGVscC5oZWFkZXIgPSB2YWx1ZS5oZWFkZXI7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dGhyb3cgRS5JTlZBTElEX0FSR1VNRU5UKCdFeHBlY3RlZCBoZWxwIGNvbnRlbnQgaGVhZGVyIHRvIGJlIGEgc3RyaW5nIG9yIGZ1bmN0aW9uJyk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmICh2YWx1ZS5mb290ZXIpIHtcblx0XHRcdFx0aWYgKHR5cGVvZiB2YWx1ZS5mb290ZXIgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB2YWx1ZS5mb290ZXIgPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdFx0XHR0aGlzLl9oZWxwLmZvb3RlciA9IHZhbHVlLmZvb3Rlcjtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR0aHJvdyBFLklOVkFMSURfQVJHVU1FTlQoJ0V4cGVjdGVkIGhlbHAgY29udGVudCBmb290ZXIgdG8gYmUgYSBzdHJpbmcgb3IgZnVuY3Rpb24nKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aHJvdyBFLklOVkFMSURfQVJHVU1FTlQoJ0V4cGVjdGVkIGhlbHAgY29udGVudCB0byBiZSBhIHN0cmluZywgZnVuY3Rpb24sIG9yIG9iamVjdCBjb250YWluaW5nIGEgaGVhZGVyIG9yIGZvb3RlcicpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBzY2hlbWEgZm9yIHRoaXMgY29tbWFuZCBhbmQgYWxsIGNoaWxkIGNvbnRleHRzLlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7T2JqZWN0fVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0c2NoZW1hKCkge1xuXHRcdHJldHVybiB7XG5cdFx0XHRkZXNjOiB0aGlzLmRlc2Ncblx0XHR9O1xuXHR9XG59XG4iXSwiZmlsZSI6InBhcnNlci9jb21tYW5kLmpzIn0=

@@ -343,2 +343,3 @@ "use strict";

this.defaultCommand = ctx.defaultCommand;
this.help = ctx.help || {};
this.remoteHelp = ctx.remoteHelp;

@@ -417,2 +418,2 @@ this.treatUnknownOptionsAsArguments = ctx.treatUnknownOptionsAsArguments;

exports.default = Extension;
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhcnNlci9leHRlbnNpb24uanMiXSwibmFtZXMiOlsibG9nIiwid2FybiIsImhpZ2hsaWdodCIsImRlYnVnIiwic3R5bGVzIiwibmFtZVJlZ0V4cCIsIkV4dGVuc2lvbiIsImNvbnN0cnVjdG9yIiwicGF0aE9yUGFyYW1zIiwicGFyYW1zIiwicGF0aCIsIkUiLCJJTlZBTElEX0FSR1VNRU5UIiwibmFtZSIsInNjb3BlIiwidmFsdWUiLCJleHBvcnRzIiwiZXhlIiwicmVnaXN0ZXJFeHRlbnNpb24iLCJhY3Rpb24iLCJfX2FyZ3YiLCJjbWQiLCJ0ZXJtaW5hbCIsIkFycmF5IiwiaXNBcnJheSIsIk5PX0VYRUNVVEFCTEUiLCJiaW4iLCJhcmdzIiwic2xpY2UiLCJwIiwiZmluZEluZGV4IiwiYXJnIiwidHlwZSIsImNvbW1hbmQiLCJpIiwibGVuIiwibGVuZ3RoIiwicHVzaCIsImFwcGx5IiwiaW5wdXQiLCJqb2luIiwiY2hpbGQiLCJ3aW5kb3dzSGlkZSIsInN0ZG91dCIsIm9uIiwiZGF0YSIsIndyaXRlIiwidG9TdHJpbmciLCJzdGRlcnIiLCJQcm9taXNlIiwicmVzb2x2ZSIsImNvZGUiLCJkZXNjIiwiZSIsInBrZyIsInJvb3QiLCJFcnJvciIsIklOVkFMSURfRVhURU5TSU9OIiwiSlNPTiIsInN0cmluZ2lmeSIsImpzb24iLCJtYWluIiwiYWxpYXNlcyIsIm0iLCJtYXRjaCIsImluY2x1ZGVzIiwicHJpbWFyeSIsIk9iamVjdCIsImVudHJpZXMiLCJwcm9jZXNzIiwiYXJndiIsImV4ZWNQYXRoIiwicmVxdWlyZSIsImRlc2NyaXB0aW9uIiwiX3BhdGgiLCJpc0Fic29sdXRlIiwia2V5cyIsImVyciIsInN0YWNrIiwiaW5kZXhPZiIsInN1YnN0cmluZyIsInRyaW0iLCJsaW5lIiwic3BsaXQiLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJtZXRhIiwiQ29tbWFuZCIsInBhcmVudCIsImFzc2lnbiIsImlzRXh0ZW5zaW9uIiwiY2xpa2l0IiwiaXNDTElLaXRFeHRlbnNpb24iLCJsb2FkIiwiY3R4IiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJtZXNzYWdlIiwiY2FtZWxDYXNlIiwiZGVmYXVsdENvbW1hbmQiLCJyZW1vdGVIZWxwIiwidHJlYXRVbmtub3duT3B0aW9uc0FzQXJndW1lbnRzIiwidmVyc2lvbiIsImluaXQiLCJiYW5uZXIiLCJjb21tYW5kcyIsImV4dGVuc2lvbnMiLCJvcHRpb25zIiwidGl0bGUiLCJ2ZXJzaW9uT3B0aW9uIiwibG9va3VwIiwibG9uZyIsImNhbGxiYWNrIiwiZXhpdENvZGUiLCJvcHRzIiwibmV4dCIsImdldCIsInBhcnNlciIsImRlZmNtZCIsImhlbHBDb21tYW5kIiwiYmluZCIsInNjaGVtYSJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBOztBQUNBOzs7O0FBRUEsTUFBTTtBQUFFQSxFQUFBQSxHQUFGO0FBQU9DLEVBQUFBO0FBQVAsSUFBZ0Isb0JBQU0sbUJBQU4sQ0FBdEI7QUFDQSxNQUFNO0FBQUVDLEVBQUFBO0FBQUYsSUFBZ0JDLGVBQU1DLE1BQTVCO0FBRUEsTUFBTUMsVUFBVSxHQUFHLHFCQUFuQjtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBQ2UsTUFBTUMsU0FBTixDQUFnQjtBQUM5QjtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQ0MsRUFBQUEsV0FBVyxDQUFDQyxZQUFELEVBQWVDLE1BQWYsRUFBdUI7QUFDakMsUUFBSUMsSUFBSSxHQUFHRixZQUFYOztBQUVBLFFBQUksT0FBT0UsSUFBUCxLQUFnQixRQUFoQixJQUE0QixDQUFDRCxNQUFqQyxFQUF5QztBQUN4Q0EsTUFBQUEsTUFBTSxHQUFHLEVBQVQ7QUFDQSxLQUZELE1BRU8sSUFBSUQsWUFBWSxJQUFJLE9BQU9BLFlBQVAsS0FBd0IsUUFBNUMsRUFBc0Q7QUFDNUQsT0FB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QUFLQSxNQUFMLEdBQWMsTUFBTW9HLE1BQU4sSUFBZ0I7QUFDN0IsZ0JBQUksS0FBS2xCLGNBQUwsS0FBd0IsTUFBeEIsSUFBa0MsQ0FBQyxLQUFLaUIsR0FBTCxDQUFTLE1BQVQsQ0FBdkMsRUFBeUQ7QUFDeEQsb0JBQU1FLE1BQU0sR0FBRyxLQUFLbkIsY0FBTCxJQUF1QixLQUFLTSxRQUFMLENBQWMsS0FBS04sY0FBbkIsQ0FBdEM7O0FBQ0Esa0JBQUltQixNQUFKLEVBQVk7QUFDWCx1QkFBTyxNQUFNQSxNQUFNLENBQUNyRyxNQUFQLENBQWNvRSxJQUFkLENBQW1CaUMsTUFBbkIsRUFBMkJELE1BQTNCLENBQWI7QUFDQTtBQUNEOztBQUNELG1CQUFPLE1BQU1FLGNBQVl0RyxNQUFaLENBQW1Cb0UsSUFBbkIsQ0FBd0JrQyxhQUF4QixFQUFxQ0YsTUFBckMsQ0FBYjtBQUNBLFdBUkQ7QUFTQTtBQUNELE9BeEVVLENBd0VURyxJQXhFUyxDQXdFSnJHLEdBeEVJLENBQVg7QUF5RUE7QUFDRDtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0NzRyxFQUFBQSxNQUFNLEdBQUc7QUFDUixXQUFPLEVBQ04sR0FBRyxNQUFNQSxNQURIO0FBRU5qSCxNQUFBQSxJQUFJLEVBQUUsS0FBS0E7QUFGTCxLQUFQO0FBSUE7O0FBcFQ2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDb21tYW5kIGZyb20gJy4vY29tbWFuZCc7XG5pbXBvcnQgZGVidWcgZnJvbSAnLi4vbGliL2RlYnVnJztcbmltcG9ydCBFIGZyb20gJy4uL2xpYi9lcnJvcnMnO1xuaW1wb3J0IGhlbHBDb21tYW5kIGZyb20gJy4uL2NvbW1hbmRzL2hlbHAnO1xuaW1wb3J0IF9wYXRoIGZyb20gJ3BhdGgnO1xuXG5pbXBvcnQgeyBkZWNsYXJlQ0xJS2l0Q2xhc3MsIGZpbGVuYW1lLCBmaW5kUGFja2FnZSwgaXNFeGVjdXRhYmxlIH0gZnJvbSAnLi4vbGliL3V0aWwnO1xuaW1wb3J0IHsgc3Bhd24gfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcblxuY29uc3QgeyBsb2csIHdhcm4gfSA9IGRlYnVnKCdjbGkta2l0OmV4dGVuc2lvbicpO1xuY29uc3QgeyBoaWdobGlnaHQgfSA9IGRlYnVnLnN0eWxlcztcblxuY29uc3QgbmFtZVJlZ0V4cCA9IC9eKD86KEBcXHcrKVxcLyk/KC4qKSQvO1xuXG4vKipcbiAqIERlZmluZXMgYSBuYW1lc3BhY2UgdGhhdCB3cmFwcyBhbiBleHRlcm5hbCBwcm9ncmFtIG9yIHNjcmlwdC5cbiAqXG4gKiBAZXh0ZW5kcyB7Q29tbWFuZH1cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRXh0ZW5zaW9uIHtcblx0LyoqXG5cdCAqIERldGVjdHMgdGhlIGV4dGVuc2lvbiBkZWZpbmVkIGluIHRoZSBzcGVjaWZpZWQgcGF0aCBhbmQgaW5pdGlhbGl6ZXMgaXQuXG5cdCAqXG5cdCAqIEBwYXJhbSB7U3RyaW5nfE9iamVjdH0gcGF0aE9yUGFyYW1zIC0gVGhlIHBhdGggdG8gdGhlIGV4dGVuc2lvbiBvciBhIHBhcmFtcyBvYmplY3QuIElmIHRoZVxuXHQgKiBwYXRoIGlzIGEgTm9kZS5qcyBwYWNrYWdlIHdpdGggYSBgcGFja2FnZS5qc29uYCBjb250YWluaW5nIGEgYFwiY2xpLWtpdFwiYCBwcm9wZXJ0eSwgaXQgd2lsbFxuXHQgKiBtZXJnZSB0aGUgZXh0ZXJuYWwgY2xpLWtpdCBjb250ZXh0IHRyZWUgaW50byB0aGlzIG5hbWVzcGFjZS5cblx0ICogQHBhcmFtIHtPYmplY3R9IFtwYXJhbXNdIC0gVmFyaW91cyBwYXJhbWV0ZXJzIHdoZW4gYGV4dGVuc2lvblBhdGhgIGlzIGEgYFN0cmluZ2AuXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBbcGFyYW1zLmV4cG9ydHNdIC0gQSBtYXAgb2YgZXhwb3J0ZWQgY29tbWFuZCBuYW1lcyB0byBkZXNjcmlwdG9ycyBjb250YWluaW5nXG5cdCAqIGBhbGlhc2VzYCwgYGRlc2NgLCBgZXhlYCwgYG1haW5gLCBhbmQgYG5hbWVgIHByb3BzLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW3BhcmFtcy5uYW1lXSAtIFRoZSBleHRlbnNpb24gbmFtZS4gSWYgbm90IHNldCwgaXQgd2lsbCBsb2FkIGl0IGZyb20gdGhlXG5cdCAqIGV4dGVuc2lvbidzIGBwYWNrYWdlLmpzb25gIG9yIHRoZSBmaWxlbmFtZS5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtwYXJhbXMucGF0aF0gLSBUaGUgcGF0aCB0byBhbiBleGVjdXRhYmxlLCBhIEphdmFTY3JpcHQgZmlsZSwgb3IgTm9kZS5qc1xuXHQgKiBwYWNrYWdlLlxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0Y29uc3RydWN0b3IocGF0aE9yUGFyYW1zLCBwYXJhbXMpIHtcblx0XHRsZXQgcGF0aCA9IHBhdGhPclBhcmFtcztcblxuXHRcdGlmICh0eXBlb2YgcGF0aCA9PT0gJ3N0cmluZycgJiYgIXBhcmFtcykge1xuXHRcdFx0cGFyYW1zID0ge307XG5cdFx0fSBlbHNlIGlmIChwYXRoT3JQYXJhbXMgJiYgdHlwZW9mIHBhdGhPclBhcmFtcyA9PT0gJ29iamVjdCcpIHtcblx0XHRcdCh7IHBhdGggfSA9IHBhcmFtcyA9IHBhdGhPclBhcmFtcyk7XG5cdFx0fVxuXG5cdFx0aWYgKCFwYXRoIHx8IHR5cGVvZiBwYXRoICE9PSAnc3RyaW5nJykge1xuXHRcdFx0dGhyb3cgRS5JTlZBTElEX0FSR1VNRU5UKCdFeHBlY3RlZCBhbiBleHRlbnNpb24gcGF0aCBvciBwYXJhbXMgb2JqZWN0JywgeyBuYW1lOiAncGF0aE9yUGFyYW1zJywgc2NvcGU6ICdFeHRlbnNpb24uY29uc3RydWN0b3InLCB2YWx1ZTogcGF0aE9yUGFyYW1zIH0pO1xuXHRcdH1cblxuXHRcdGlmICh0eXBlb2YgcGFyYW1zICE9PSAnb2JqZWN0Jykge1xuXHRcdFx0dGhyb3cgRS5JTlZBTElEX0FSR1VNRU5UKCdFeHBlY3RlZCBleHRlbnNpb24gcGFyYW1zIHRvIGJlIGFuIG9iamVjdCBvciBDb250ZXh0JywgeyBuYW1lOiAncGFyYW1zJywgc2NvcGU6ICdFeHRlbnNpb24uY29uc3RydWN0b3InLCB2YWx1ZTogcGFyYW1zIH0pO1xuXHRcdH1cblxuXHRcdHRoaXMuZXhwb3J0cyA9IHBhcmFtcy5leHBvcnRzIHx8IHt9O1xuXHRcdHRoaXMubmFtZSA9IHBhcmFtcy5uYW1lO1xuXHRcdHRoaXMucGF0aCA9IHBhdGg7XG5cblx0XHRpZiAodHlwZW9mIHRoaXMuZXhwb3J0cyAhPT0gJ29iamVjdCcpIHtcblx0XHRcdHRocm93IEUuSU5WQUxJRF9BUkdVTUVOVCgnRXhwZWN0ZWQgZXh0ZW5zaW9uIGV4cG9ydHMgdG8gYmUgYW4gb2JqZWN0JywgeyBuYW1lOiAncGFyYW1zLmV4cG9ydHMnLCBzY29wZTogJ0V4dGVuc2lvbi5jb25zdHJ1Y3RvcicsIHZhbHVlOiBwYXJhbXMuZXhwb3J0cyB9KTtcblx0XHR9XG5cblx0XHQvLyB3ZSBuZWVkIHRvIGRldGVybWluZSBpZiB0aGlzIGV4dGVuc2lvbiBpcyBhIGJpbmFyeSBvciBpZiBpdCdzIGEgTm9kZSBwYWNrYWdlXG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IGV4ZSA9IGlzRXhlY3V0YWJsZShwYXRoKTtcblx0XHRcdGlmICghdGhpcy5uYW1lKSB7XG5cdFx0XHRcdHRoaXMubmFtZSA9IGZpbGVuYW1lKGV4ZVswXSk7XG5cdFx0XHR9XG5cblx0XHRcdHRoaXMucmVnaXN0ZXJFeHRlbnNpb24odGhpcy5uYW1lLCB7IGV4ZSB9LCB7XG5cdFx0XHRcdGFjdGlvbjogYXN5bmMgKHsgX19hcmd2LCBjbWQsIHRlcm1pbmFsIH0pID0+IHtcblx0XHRcdFx0XHRpZiAoIUFycmF5LmlzQXJyYXkoZXhlKSkge1xuXHRcdFx0XHRcdFx0dGhyb3cgRS5OT19FWEVDVVRBQkxFKGBFeHRlbnNpb24gXCIke3RoaXMubmFtZX1cIiBoYXMgbm8gZXhlY3V0YWJsZSFgKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRjb25zdCBiaW4gPSBleGVbMF07XG5cdFx0XHRcdFx0Y29uc3QgYXJncyA9IGV4ZS5zbGljZSgxKTtcblx0XHRcdFx0XHRjb25zdCBwID0gX19hcmd2LmZpbmRJbmRleChhcmcgPT4gYXJnICYmIGFyZy50eXBlID09PSAnZXh0ZW5zaW9uJyAmJiBhcmcuY29tbWFuZCA9PT0gY21kKTtcblxuXHRcdFx0XHRcdGlmIChwICE9PSAtMSkge1xuXHRcdFx0XHRcdFx0Zm9yIChsZXQgaSA9IHAgKyAxLCBsZW4gPSBfX2FyZ3YubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcblx0XHRcdFx0XHRcdFx0YXJncy5wdXNoLmFwcGx5KGFyZ3MsIF9fYXJndltpXS5pbnB1dCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gc3Bhd24gdGhlIHByb2Nlc3Ncblx0XHRcdFx0XHRsb2coYFJ1bm5pbmc6ICR7aGlnaGxpZ2h0KGAke2Jpbn0gJHthcmdzLmpvaW4oJyAnKX1gKX1gKTtcblx0XHRcdFx0XHRjb25zdCBjaGlsZCA9IHNwYXduKGJpbiwgYXJncywgeyB3aW5kb3dzSGlkZTogdHJ1ZSB9KTtcblx0XHRcdFx0XHRjaGlsZC5zdGRvdXQub24oJ2RhdGEnLCBkYXRhID0+IHRlcm1pbmFsLnN0ZG91dC53cml0ZShkYXRhLnRvU3RyaW5nKCkpKTtcblx0XHRcdFx0XHRjaGlsZC5zdGRlcnIub24oJ2RhdGEnLCBkYXRhID0+IHRlcm1pbmFsLnN0ZGVyci53cml0ZShkYXRhLnRvU3RyaW5nKCkpKTtcblx0XHRcdFx0XHRhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IGNoaWxkLm9uKCdjbG9zZScsIChjb2RlID0gMCkgPT4gcmVzb2x2ZSh7IGNvZGUgfSkpKTtcblx0XHRcdFx0fSxcblx0XHRcdFx0ZGVzYzogcGFyYW1zLmRlc2Ncblx0XHRcdH0pO1xuXHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdC8vIG1heWJlIGEgTm9kZSBwYWNrYWdlP1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0bGV0IHBrZztcblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRwa2cgPSBmaW5kUGFja2FnZShwYXRoKTtcblx0XHRcdFx0XHRpZiAoIXBrZy5yb290KSB7XG5cdFx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdFx0XHR0aHJvdyBFLklOVkFMSURfRVhURU5TSU9OKGBJbnZhbGlkIGV4dGVuc2lvbjogVW5hYmxlIHRvIGZpbmQgZXhlY3V0YWJsZSwgc2NyaXB0LCBvciBwYWNrYWdlOiAke3R5cGVvZiBwYXRoID09PSAnc3RyaW5nJyA/IGBcIiR7cGF0aH1cImAgOiBKU09OLnN0cmluZ2lmeShwYXRoKX1gKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmICghdGhpcy5uYW1lKSB7XG5cdFx0XHRcdFx0dGhpcy5uYW1lID0gcGtnLmpzb24ubmFtZTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmICghdGhpcy5uYW1lKSB7XG5cdFx0XHRcdFx0dGhpcy5uYW1lID0gZmlsZW5hbWUocGF0aCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoIXBrZy5qc29uLmV4cG9ydHMgJiYgcGtnLm1haW4pIHtcblx0XHRcdFx0XHQvLyBsZWdhY3kgTm9kZS5qcyBleHRlbnNpb25cblx0XHRcdFx0XHRsZXQgeyBuYW1lIH0gPSB0aGlzO1xuXHRcdFx0XHRcdGNvbnN0IGFsaWFzZXMgPSBBcnJheS5pc0FycmF5KHBrZy5qc29uLmFsaWFzZXMpID8gcGtnLmpzb24uYWxpYXNlcyA6IFtdO1xuXG5cdFx0XHRcdFx0Ly8gaWYgdGhlIHBhY2thZ2UgbmFtZSBjb250YWlucyBhIHNjb3BlLCBhZGQgdGhlIHNjb3BlZCBwYWNrYWdlIG5hbWUgYXMgYSBoaWRkZW5cblx0XHRcdFx0XHQvLyBhbGlhcyBhbmQgc3RyaXAgdGhlIHNjb3BlIGZyb20gdGhlIG5hbWVcblx0XHRcdFx0XHRjb25zdCBtID0gbmFtZS5tYXRjaChuYW1lUmVnRXhwKTtcblx0XHRcdFx0XHRpZiAobSkge1xuXHRcdFx0XHRcdFx0YWxpYXNlcy5wdXNoKGAhJHtuYW1lfWApO1xuXHRcdFx0XHRcdFx0bmFtZSA9IG1bMl07XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gaWYgdGhlIG5hbWUgaXMgZGlmZmVyZW50IHRoYW4gdGhlIG9uZSBpbiB0aGUgcGFja2FnZS5qc29uLCBhZGQgaXQgdG8gdGhlIGFsaWFzZXNcblx0XHRcdFx0XHRpZiAobmFtZSAmJiBuYW1lICE9PSBwa2cuanNvbi5uYW1lICYmICFhbGlhc2VzLmluY2x1ZGVzKG5hbWUpKSB7XG5cdFx0XHRcdFx0XHRhbGlhc2VzLnB1c2gobmFtZSk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gaWYgdGhlIHBhY2thZ2UgaGFzIGEgYmluIHNjcmlwdCB0aGF0IG1hdGNoZXMgdGhlIHBhY2thZ2UgbmFtZSwgdGhlbiBhZGQgYW55IG90aGVyXG5cdFx0XHRcdFx0Ly8gYmluIG5hbWUgdGhhdCBhbGlhc2VzIHRoZSBwYWNrYWdlIG5hbWVkIGJpblxuXHRcdFx0XHRcdGlmIChwa2cuanNvbi5iaW4pIHtcblx0XHRcdFx0XHRcdGNvbnN0IHByaW1hcnkgPSBwa2cuanNvbi5iaW5bcGtnLmpzb24ubmFtZV07XG5cdFx0XHRcdFx0XHRmb3IgKGNvbnN0IFsgbmFtZSwgYmluIF0gb2YgT2JqZWN0LmVudHJpZXMocGtnLmpzb24uYmluKSkge1xuXHRcdFx0XHRcdFx0XHRpZiAoYmluID09PSBwcmltYXJ5ICYmICFhbGlhc2VzLmluY2x1ZGVzKG5hbWUpKSB7XG5cdFx0XHRcdFx0XHRcdFx0YWxpYXNlcy5wdXNoKG5hbWUpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0dGhpcy5yZWdpc3RlckV4dGVuc2lvbihuYW1lLCB7IHBrZyB9LCB7XG5cdFx0XHRcdFx0XHRhY3Rpb246IGFzeW5jICh7IF9fYXJndiwgY21kIH0pID0+IHtcblx0XHRcdFx0XHRcdFx0cHJvY2Vzcy5hcmd2ID0gW1xuXHRcdFx0XHRcdFx0XHRcdHByb2Nlc3MuZXhlY1BhdGgsXG5cdFx0XHRcdFx0XHRcdFx0cGtnLm1haW5cblx0XHRcdFx0XHRcdFx0XTtcblxuXHRcdFx0XHRcdFx0XHRjb25zdCBwID0gX19hcmd2LmZpbmRJbmRleChhcmcgPT4gYXJnICYmIGFyZy50eXBlID09PSAnZXh0ZW5zaW9uJyAmJiBhcmcuY29tbWFuZCA9PT0gY21kKTtcblx0XHRcdFx0XHRcdFx0aWYgKHAgIT09IC0xKSB7XG5cdFx0XHRcdFx0XHRcdFx0Zm9yIChsZXQgaSA9IHAgKyAxLCBsZW4gPSBfX2FyZ3YubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcblx0XHRcdFx0XHRcdFx0XHRcdHByb2Nlc3MuYXJndi5wdXNoLmFwcGx5KHByb2Nlc3MuYXJndiwgX19hcmd2W2ldLmlucHV0KTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRsb2coYFJlcXVpcmluZyAke2hpZ2hsaWdodChwa2cubWFpbil9YCk7XG5cdFx0XHRcdFx0XHRcdGxvZyhgQXJnczogJHtoaWdobGlnaHQocHJvY2Vzcy5hcmd2LmpvaW4oJyAnKSl9YCk7XG5cdFx0XHRcdFx0XHRcdHJlcXVpcmUocGtnLm1haW4pO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGFsaWFzZXMsXG5cdFx0XHRcdFx0XHRkZXNjOiBwa2cuanNvbi5kZXNjcmlwdGlvblxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9IGVsc2UgaWYgKHR5cGVvZiBwa2cuanNvbi5leHBvcnRzICE9PSAnb2JqZWN0Jykge1xuXHRcdFx0XHRcdHRocm93IEUuSU5WQUxJRF9FWFRFTlNJT04oJ0ludmFsaWQgZXh0ZW5zaW9uOiBFeHBlY3RlZCBleHBvcnRzIHRvIGJlIGFuIG9iamVjdCcsIHsgbmFtZTogJ3BrZy5qc29uLmV4cG9ydHMnLCBzY29wZTogJ0V4dGVuc2lvbi5jb25zdHJ1Y3RvcicsIHZhbHVlOiBwa2cuanNvbi5leHBvcnRzIH0pO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGZvciAoY29uc3QgWyBuYW1lLCBwYXJhbXMgXSBvZiBPYmplY3QuZW50cmllcyhwa2cuanNvbi5leHBvcnRzKSkge1xuXHRcdFx0XHRcdFx0aWYgKHBhcmFtcy5tYWluICYmICFfcGF0aC5pc0Fic29sdXRlKHBhcmFtcy5tYWluKSkge1xuXHRcdFx0XHRcdFx0XHRwYXJhbXMubWFpbiA9IF9wYXRoLnJlc29sdmUocGtnLnJvb3QsIHBhcmFtcy5tYWluKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHRoaXMucmVnaXN0ZXJFeHRlbnNpb24obmFtZSwge1xuXHRcdFx0XHRcdFx0XHRwa2c6IHtcblx0XHRcdFx0XHRcdFx0XHQuLi5wa2csXG5cdFx0XHRcdFx0XHRcdFx0Li4ucGFyYW1zXG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0sIHtcblx0XHRcdFx0XHRcdFx0ZGVzYzogcGtnLmpzb24uZGVzY3JpcHRpb24sXG5cdFx0XHRcdFx0XHRcdC4uLnBhcmFtc1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKCFPYmplY3Qua2V5cyh0aGlzLmV4cG9ydHMpLmxlbmd0aCkge1xuXHRcdFx0XHRcdHRocm93IEUuSU5WQUxJRF9FWFRFTlNJT04oYEludmFsaWQgZXh0ZW5zaW9uOiBVbmFibGUgdG8gZmluZCBleHRlbnNpb24ncyBtYWluIGZpbGU6ICR7dHlwZW9mIHBhdGggPT09ICdzdHJpbmcnID8gYFwiJHtwYXRofVwiYCA6IEpTT04uc3RyaW5naWZ5KHBhdGgpfWApO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdHRoaXMuZXJyID0gZTtcblx0XHRcdFx0d2FybihlKTtcblx0XHRcdFx0d2FybignRm91bmQgYmFkIGV4dGVuc2lvbiwgY3JlYXRpbmcgZXJyb3IgYWN0aW9uJyk7XG5cblx0XHRcdFx0dGhpcy5yZWdpc3RlckV4dGVuc2lvbih0aGlzLm5hbWUsIHt9LCB7XG5cdFx0XHRcdFx0YWN0aW9uOiAoeyB0ZXJtaW5hbCB9KSA9PiB7XG5cdFx0XHRcdFx0XHRjb25zdCB7IHN0ZGVyciB9ID0gdGVybWluYWw7XG5cdFx0XHRcdFx0XHRpZiAodGhpcy5lcnIpIHtcblx0XHRcdFx0XHRcdFx0bGV0IHsgc3RhY2sgfSA9IGU7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHAgPSBzdGFjay5pbmRleE9mKCdcXG5cXG4nKTtcblx0XHRcdFx0XHRcdFx0aWYgKHAgIT09IC0xKSB7XG5cdFx0XHRcdFx0XHRcdFx0c3RhY2sgPSBzdGFjay5zdWJzdHJpbmcoMCwgcCkudHJpbSgpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGZvciAoY29uc3QgbGluZSBvZiBzdGFjay5zcGxpdCgnXFxuJykpIHtcblx0XHRcdFx0XHRcdFx0XHRzdGRlcnIud3JpdGUoYCAgJHtsaW5lfVxcbmApO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRzdGRlcnIud3JpdGUoYEludmFsaWQgZXh0ZW5zaW9uOiAke3RoaXMubmFtZX1cXG5gKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGRlY2xhcmVDTElLaXRDbGFzcyh0aGlzLCAnRXh0ZW5zaW9uJyk7XG5cblx0XHQvLyBtaXggaW4gYW55IG90aGVyIGN1c3RvbSBwcm9wc1xuXHRcdGZvciAoY29uc3QgWyBrZXksIHZhbHVlIF0gb2YgT2JqZWN0LmVudHJpZXMocGFyYW1zKSkge1xuXHRcdFx0aWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcywga2V5KSkge1xuXHRcdFx0XHR0aGlzW2tleV0gPSB2YWx1ZTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogSW5pdGlhbGl6ZXMgYSBjb21tYW5kIHdpdGggdGhlIGV4dGVuc2lvbiBleHBvcnQgaW5mby5cblx0ICpcblx0ICogQHBhcmFtIHtTdHJpbmd9IG5hbWUgLSBUaGUgY29tbWFuZCBuYW1lLlxuXHQgKiBAcGFyYW0ge09iamVjdH0gbWV0YSAtIE1ldGFkYXRhIHRvIG1peCBpbnRvIHRoZSBjb21tYW5kIGluc3RhbmNlLlxuXHQgKiBAcGFyYW0ge09iamVjdH0gcGFyYW1zIC0gQ29tbWFuZCBzcGVjaWZpYyBjb25zdHJ1Y3RvciBwYXJhbWV0ZXJzLlxuXHQgKiBAYWNjZXNzIHByaXZhdGVcblx0ICovXG5cdHJlZ2lzdGVyRXh0ZW5zaW9uKG5hbWUsIG1ldGEsIHBhcmFtcykge1xuXHRcdGxvZyhgUmVnaXN0ZXJpbmcgZXh0ZW5zaW9uIGNvbW1hbmQ6ICR7aGlnaGxpZ2h0KGAke3RoaXMubmFtZX06JHtuYW1lfWApfWApO1xuXHRcdGNvbnN0IGNtZCA9IG5ldyBDb21tYW5kKG5hbWUsIHtcblx0XHRcdHBhcmVudDogdGhpcyxcblx0XHRcdC4uLnBhcmFtc1xuXHRcdH0pO1xuXHRcdHRoaXMuZXhwb3J0c1tuYW1lXSA9IE9iamVjdC5hc3NpZ24oY21kLCBtZXRhKTtcblx0XHRjbWQuaXNFeHRlbnNpb24gPSB0cnVlO1xuXG5cdFx0aWYgKG1ldGE/LnBrZz8uY2xpa2l0KSB7XG5cdFx0XHRjbWQuaXNDTElLaXRFeHRlbnNpb24gPSB0cnVlO1xuXG5cdFx0XHRjbWQubG9hZCA9IGFzeW5jIGZ1bmN0aW9uIGxvYWQoKSB7XG5cdFx0XHRcdGxvZyhgUmVxdWlyaW5nIGNsaS1raXQgZXh0ZW5zaW9uOiAke2hpZ2hsaWdodCh0aGlzLm5hbWUpfSAtPiAke2hpZ2hsaWdodChtZXRhLnBrZy5tYWluKX1gKTtcblx0XHRcdFx0bGV0IGN0eDtcblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRjdHggPSByZXF1aXJlKG1ldGEucGtnLm1haW4pO1xuXHRcdFx0XHRcdGlmICghY3R4IHx8ICh0eXBlb2YgY3R4ICE9PSAnb2JqZWN0JyAmJiB0eXBlb2YgY3R4ICE9PSAnZnVuY3Rpb24nKSkge1xuXHRcdFx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKCdFeHRlbnNpb24gbXVzdCBleHBvcnQgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uJyk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gaWYgdGhpcyBpcyBhbiBFUzYgbW9kdWxlLCBncmFiIHRoZSBkZWZhdWx0IGV4cG9ydFxuXHRcdFx0XHRcdGlmIChjdHguX19lc01vZHVsZSkge1xuXHRcdFx0XHRcdFx0Y3R4ID0gY3R4LmRlZmF1bHQ7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gaWYgdGhlIGV4cG9ydCB3YXMgYSBmdW5jdGlvbiwgY2FsbCBpdCBub3cgdG8gZ2V0IGl0cyBDTEkgZGVmaW5pdGlvblxuXHRcdFx0XHRcdGlmICh0eXBlb2YgY3R4ID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRcdFx0XHRjdHggPSBhd2FpdCBjdHgodGhpcyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmICghY3R4IHx8IHR5cGVvZiBjdHggIT09ICdvYmplY3QnKSB7XG5cdFx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ0V4dGVuc2lvbiBkb2VzIG5vdCByZXNvbHZlIGFuIG9iamVjdCcpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0XHRcdFx0dGhyb3cgRS5JTlZBTElEX0VYVEVOU0lPTihgQmFkIGV4dGVuc2lvbiBcIiR7dGhpcy5uYW1lfVwiOiAke2Vyci5tZXNzYWdlfWAsIHsgbmFtZTogdGhpcy5uYW1lLCBzY29wZTogJ0V4dGVuc2lvbi5sb2FkJywgdmFsdWU6IGVyciB9KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHRoaXMuYWxpYXNlcyAgICAgICAgICAgICAgICAgICAgICAgID0gY3R4LmFsaWFzZXM7XG5cdFx0XHRcdHRoaXMuY2FtZWxDYXNlICAgICAgICAgICAgICAgICAgICAgID0gY3R4LmNhbWVsQ2FzZTtcblx0XHRcdFx0dGhpcy5kZWZhdWx0Q29tbWFuZCAgICAgICAgICAgICAgICAgPSBjdHguZGVmYXVsdENvbW1hbmQ7XG5cdFx0XHRcdHRoaXMucmVtb3RlSGVscCAgICAgICAgICAgICAgICAgICAgID0gY3R4LnJlbW90ZUhlbHA7XG5cdFx0XHRcdHRoaXMudHJlYXRVbmtub3duT3B0aW9uc0FzQXJndW1lbnRzID0gY3R4LnRyZWF0VW5rbm93bk9wdGlvbnNBc0FyZ3VtZW50cztcblx0XHRcdFx0dGhpcy52ZXJzaW9uICAgICAgICAgICAgICAgICAgICAgICAgPSBjdHgudmVyc2lvbjtcblxuXHRcdFx0XHR0aGlzLmluaXQoe1xuXHRcdFx0XHRcdGFyZ3M6ICAgICAgIGN0eC5hcmdzLFxuXHRcdFx0XHRcdGJhbm5lcjogICAgIGN0eC5iYW5uZXIsXG5cdFx0XHRcdFx0Y29tbWFuZHM6ICAgY3R4LmNvbW1hbmRzLFxuXHRcdFx0XHRcdGRlc2M6ICAgICAgIHRoaXMuZGVzYyB8fCBjdHguZGVzYyxcblx0XHRcdFx0XHRleHRlbnNpb25zOiBjdHguZXh0ZW5zaW9ucyxcblx0XHRcdFx0XHRuYW1lOiAgICAgICB0aGlzLm5hbWUgfHwgY3R4Lm5hbWUsXG5cdFx0XHRcdFx0b3B0aW9uczogICAgY3R4Lm9wdGlvbnMsXG5cdFx0XHRcdFx0cGFyZW50OiAgICAgdGhpcy5wYXJlbnQsXG5cdFx0XHRcdFx0dGl0bGU6ICAgICAgY3R4LnRpdGxlICE9PSAnR2xvYmFsJyAmJiBjdHgudGl0bGUgfHwgdGhpcy5uYW1lXG5cdFx0XHRcdH0pO1xuXG5cdFx0XHRcdGNvbnN0IHZlcnNpb25PcHRpb24gPSB0aGlzLnZlcnNpb24gJiYgdGhpcy5sb29rdXAubG9uZy52ZXJzaW9uO1xuXHRcdFx0XHRpZiAodmVyc2lvbk9wdGlvbiAmJiB0eXBlb2YgdmVyc2lvbk9wdGlvbi5jYWxsYmFjayAhPT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0XHRcdHZlcnNpb25PcHRpb24uY2FsbGJhY2sgPSBhc3luYyAoeyBleGl0Q29kZSwgb3B0cywgbmV4dCB9KSA9PiB7XG5cdFx0XHRcdFx0XHRpZiAoYXdhaXQgbmV4dCgpKSB7XG5cdFx0XHRcdFx0XHRcdGxldCB7IHZlcnNpb24gfSA9IHRoaXM7XG5cdFx0XHRcdFx0XHRcdGlmICh0eXBlb2YgdmVyc2lvbiA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0XHRcdFx0XHRcdHZlcnNpb24gPSBhd2FpdCB2ZXJzaW9uKG9wdHMpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdChvcHRzLnRlcm1pbmFsIHx8IHRoaXMuZ2V0KCd0ZXJtaW5hbCcpKS5zdGRvdXQud3JpdGUoYCR7dmVyc2lvbn1cXG5gKTtcblx0XHRcdFx0XHRcdFx0ZXhpdENvZGUoMCk7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKHR5cGVvZiBjdHguYWN0aW9uID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRcdFx0dGhpcy5hY3Rpb24gPSBjdHguYWN0aW9uO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHRoaXMuYWN0aW9uID0gYXN5bmMgcGFyc2VyID0+IHtcblx0XHRcdFx0XHRcdGlmICh0aGlzLmRlZmF1bHRDb21tYW5kICE9PSAnaGVscCcgfHwgIXRoaXMuZ2V0KCdoZWxwJykpIHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgZGVmY21kID0gdGhpcy5kZWZhdWx0Q29tbWFuZCAmJiB0aGlzLmNvbW1hbmRzW3RoaXMuZGVmYXVsdENvbW1hbmRdO1xuXHRcdFx0XHRcdFx0XHRpZiAoZGVmY21kKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGF3YWl0IGRlZmNtZC5hY3Rpb24uY2FsbChkZWZjbWQsIHBhcnNlcik7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHJldHVybiBhd2FpdCBoZWxwQ29tbWFuZC5hY3Rpb24uY2FsbChoZWxwQ29tbWFuZCwgcGFyc2VyKTtcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9XG5cdFx0XHR9LmJpbmQoY21kKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgc2NoZW1hIGZvciB0aGlzIGV4dGVuc2lvbiBhbmQgYWxsIGNoaWxkIGNvbnRleHRzLlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7T2JqZWN0fVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0c2NoZW1hKCkge1xuXHRcdHJldHVybiB7XG5cdFx0XHQuLi5zdXBlci5zY2hlbWEsXG5cdFx0XHRwYXRoOiB0aGlzLnBhdGhcblx0XHR9O1xuXHR9XG59XG4iXSwiZmlsZSI6InBhcnNlci9leHRlbnNpb24uanMifQ==
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhcnNlci9leHRlbnNpb24uanMiXSwibmFtZXMiOlsibG9nIiwid2FybiIsImhpZ2hsaWdodCIsImRlYnVnIiwic3R5bGVzIiwibmFtZVJlZ0V4cCIsIkV4dGVuc2lvbiIsImNvbnN0cnVjdG9yIiwicGF0aE9yUGFyYW1zIiwicGFyYW1zIiwicGF0aCIsIkUiLCJJTlZBTElEX0FSR1VNRU5UIiwibmFtZSIsInNjb3BlIiwidmFsdWUiLCJleHBvcnRzIiwiZXhlIiwicmVnaXN0ZXJFeHRlbnNpb24iLCJhY3Rpb24iLCJfX2FyZ3YiLCJjbWQiLCJ0ZXJtaW5hbCIsIkFycmF5IiwiaXNBcnJheSIsIk5PX0VYRUNVVEFCTEUiLCJiaW4iLCJhcmdzIiwic2xpY2UiLCJwIiwiZmluZEluZGV4IiwiYXJnIiwidHlwZSIsImNvbW1hbmQiLCJpIiwibGVuIiwibGVuZ3RoIiwicHVzaCIsImFwcGx5IiwiaW5wdXQiLCJqb2luIiwiY2hpbGQiLCJ3aW5kb3dzSGlkZSIsInN0ZG91dCIsIm9uIiwiZGF0YSIsIndyaXRlIiwidG9TdHJpbmciLCJzdGRlcnIiLCJQcm9taXNlIiwicmVzb2x2ZSIsImNvZGUiLCJkZXNjIiwiZSIsInBrZyIsInJvb3QiLCJFcnJvciIsIklOVkFMSURfRVhURU5TSU9OIiwiSlNPTiIsInN0cmluZ2lmeSIsImpzb24iLCJtYWluIiwiYWxpYXNlcyIsIm0iLCJtYXRjaCIsImluY2x1ZGVzIiwicHJpbWFyeSIsIk9iamVjdCIsImVudHJpZXMiLCJwcm9jZXNzIiwiYXJndiIsImV4ZWNQYXRoIiwicmVxdWlyZSIsImRlc2NyaXB0aW9uIiwiX3BhdGgiLCJpc0Fic29sdXRlIiwia2V5cyIsImVyciIsInN0YWNrIiwiaW5kZXhPZiIsInN1YnN0cmluZyIsInRyaW0iLCJsaW5lIiwic3BsaXQiLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJtZXRhIiwiQ29tbWFuZCIsInBhcmVudCIsImFzc2lnbiIsImlzRXh0ZW5zaW9uIiwiY2xpa2l0IiwiaXNDTElLaXRFeHRlbnNpb24iLCJsb2FkIiwiY3R4IiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJtZXNzYWdlIiwiY2FtZWxDYXNlIiwiZGVmYXVsdENvbW1hbmQiLCJoZWxwIiwicmVtb3RlSGVscCIsInRyZWF0VW5rbm93bk9wdGlvbnNBc0FyZ3VtZW50cyIsInZlcnNpb24iLCJpbml0IiwiYmFubmVyIiwiY29tbWFuZHMiLCJleHRlbnNpb25zIiwib3B0aW9ucyIsInRpdGxlIiwidmVyc2lvbk9wdGlvbiIsImxvb2t1cCIsImxvbmciLCJjYWxsYmFjayIsImV4aXRDb2RlIiwib3B0cyIsIm5leHQiLCJnZXQiLCJwYXJzZXIiLCJkZWZjbWQiLCJoZWxwQ29tbWFuZCIsImJpbmQiLCJzY2hlbWEiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFDQTs7OztBQUVBLE1BQU07QUFBRUEsRUFBQUEsR0FBRjtBQUFPQyxFQUFBQTtBQUFQLElBQWdCLG9CQUFNLG1CQUFOLENBQXRCO0FBQ0EsTUFBTTtBQUFFQyxFQUFBQTtBQUFGLElBQWdCQyxlQUFNQyxNQUE1QjtBQUVBLE1BQU1DLFVBQVUsR0FBRyxxQkFBbkI7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUNlLE1BQU1DLFNBQU4sQ0FBZ0I7QUFDOUI7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0NDLEVBQUFBLFdBQVcsQ0FBQ0MsWUFBRCxFQUFlQyxNQUFmLEVBQXVCO0FBQ2pDLFFBQUlDLElBQUksR0FBR0YsWUFBWDs7QUFFQSxRQUFJLE9BQU9FLElBQVAsS0FBZ0IsUUFBaEIsSUFBNEIsQ0FBQ0QsTUFBakMsRUFBeUM7QUFDeENBLE1BQUFBLE1BQU0sR0FBRyxFQUFUO0FBQ0EsS0FGRCxNQUVPLElBQUlELFlBQVksSUFBSSxPQUFPQSxZQUFQLEtBQXdCLFFBQTVDLEVBQXNEO0FB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ZUFBS0EsTUFBTCxHQUFjNkUsR0FBRyxDQUFDN0UsTUFBbEI7QUFDQSxTQUZELE1BRU87QUFDTixlQUFLQSxNQUFMLEdBQWMsTUFBTXFHLE1BQU4sSUFBZ0I7QUFDN0IsZ0JBQUksS0FBS25CLGNBQUwsS0FBd0IsTUFBeEIsSUFBa0MsQ0FBQyxLQUFLa0IsR0FBTCxDQUFTLE1BQVQsQ0FBdkMsRUFBeUQ7QUFDeEQsb0JBQU1FLE1BQU0sR0FBRyxLQUFLcEIsY0FBTCxJQUF1QixLQUFLTyxRQUFMLENBQWMsS0FBS1AsY0FBbkIsQ0FBdEM7O0FBQ0Esa0JBQUlvQixNQUFKLEVBQVk7QUFDWCx1QkFBTyxNQUFNQSxNQUFNLENBQUN0RyxNQUFQLENBQWNvRSxJQUFkLENBQW1Ca0MsTUFBbkIsRUFBMkJELE1BQTNCLENBQWI7QUFDQTtBQUNEOztBQUNELG1CQUFPLE1BQU1FLGNBQVl2RyxNQUFaLENBQW1Cb0UsSUFBbkIsQ0FBd0JtQyxhQUF4QixFQUFxQ0YsTUFBckMsQ0FBYjtBQUNBLFdBUkQ7QUFTQTtBQUNELE9BekVVLENBeUVURyxJQXpFUyxDQXlFSnRHLEdBekVJLENBQVg7QUEwRUE7QUFDRDtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0N1RyxFQUFBQSxNQUFNLEdBQUc7QUFDUixXQUFPLEVBQ04sR0FBRyxNQUFNQSxNQURIO0FBRU5sSCxNQUFBQSxJQUFJLEVBQUUsS0FBS0E7QUFGTCxLQUFQO0FBSUE7O0FBclQ2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDb21tYW5kIGZyb20gJy4vY29tbWFuZCc7XG5pbXBvcnQgZGVidWcgZnJvbSAnLi4vbGliL2RlYnVnJztcbmltcG9ydCBFIGZyb20gJy4uL2xpYi9lcnJvcnMnO1xuaW1wb3J0IGhlbHBDb21tYW5kIGZyb20gJy4uL2NvbW1hbmRzL2hlbHAnO1xuaW1wb3J0IF9wYXRoIGZyb20gJ3BhdGgnO1xuXG5pbXBvcnQgeyBkZWNsYXJlQ0xJS2l0Q2xhc3MsIGZpbGVuYW1lLCBmaW5kUGFja2FnZSwgaXNFeGVjdXRhYmxlIH0gZnJvbSAnLi4vbGliL3V0aWwnO1xuaW1wb3J0IHsgc3Bhd24gfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcblxuY29uc3QgeyBsb2csIHdhcm4gfSA9IGRlYnVnKCdjbGkta2l0OmV4dGVuc2lvbicpO1xuY29uc3QgeyBoaWdobGlnaHQgfSA9IGRlYnVnLnN0eWxlcztcblxuY29uc3QgbmFtZVJlZ0V4cCA9IC9eKD86KEBcXHcrKVxcLyk/KC4qKSQvO1xuXG4vKipcbiAqIERlZmluZXMgYSBuYW1lc3BhY2UgdGhhdCB3cmFwcyBhbiBleHRlcm5hbCBwcm9ncmFtIG9yIHNjcmlwdC5cbiAqXG4gKiBAZXh0ZW5kcyB7Q29tbWFuZH1cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRXh0ZW5zaW9uIHtcblx0LyoqXG5cdCAqIERldGVjdHMgdGhlIGV4dGVuc2lvbiBkZWZpbmVkIGluIHRoZSBzcGVjaWZpZWQgcGF0aCBhbmQgaW5pdGlhbGl6ZXMgaXQuXG5cdCAqXG5cdCAqIEBwYXJhbSB7U3RyaW5nfE9iamVjdH0gcGF0aE9yUGFyYW1zIC0gVGhlIHBhdGggdG8gdGhlIGV4dGVuc2lvbiBvciBhIHBhcmFtcyBvYmplY3QuIElmIHRoZVxuXHQgKiBwYXRoIGlzIGEgTm9kZS5qcyBwYWNrYWdlIHdpdGggYSBgcGFja2FnZS5qc29uYCBjb250YWluaW5nIGEgYFwiY2xpLWtpdFwiYCBwcm9wZXJ0eSwgaXQgd2lsbFxuXHQgKiBtZXJnZSB0aGUgZXh0ZXJuYWwgY2xpLWtpdCBjb250ZXh0IHRyZWUgaW50byB0aGlzIG5hbWVzcGFjZS5cblx0ICogQHBhcmFtIHtPYmplY3R9IFtwYXJhbXNdIC0gVmFyaW91cyBwYXJhbWV0ZXJzIHdoZW4gYGV4dGVuc2lvblBhdGhgIGlzIGEgYFN0cmluZ2AuXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBbcGFyYW1zLmV4cG9ydHNdIC0gQSBtYXAgb2YgZXhwb3J0ZWQgY29tbWFuZCBuYW1lcyB0byBkZXNjcmlwdG9ycyBjb250YWluaW5nXG5cdCAqIGBhbGlhc2VzYCwgYGRlc2NgLCBgZXhlYCwgYG1haW5gLCBhbmQgYG5hbWVgIHByb3BzLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW3BhcmFtcy5uYW1lXSAtIFRoZSBleHRlbnNpb24gbmFtZS4gSWYgbm90IHNldCwgaXQgd2lsbCBsb2FkIGl0IGZyb20gdGhlXG5cdCAqIGV4dGVuc2lvbidzIGBwYWNrYWdlLmpzb25gIG9yIHRoZSBmaWxlbmFtZS5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtwYXJhbXMucGF0aF0gLSBUaGUgcGF0aCB0byBhbiBleGVjdXRhYmxlLCBhIEphdmFTY3JpcHQgZmlsZSwgb3IgTm9kZS5qc1xuXHQgKiBwYWNrYWdlLlxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0Y29uc3RydWN0b3IocGF0aE9yUGFyYW1zLCBwYXJhbXMpIHtcblx0XHRsZXQgcGF0aCA9IHBhdGhPclBhcmFtcztcblxuXHRcdGlmICh0eXBlb2YgcGF0aCA9PT0gJ3N0cmluZycgJiYgIXBhcmFtcykge1xuXHRcdFx0cGFyYW1zID0ge307XG5cdFx0fSBlbHNlIGlmIChwYXRoT3JQYXJhbXMgJiYgdHlwZW9mIHBhdGhPclBhcmFtcyA9PT0gJ29iamVjdCcpIHtcblx0XHRcdCh7IHBhdGggfSA9IHBhcmFtcyA9IHBhdGhPclBhcmFtcyk7XG5cdFx0fVxuXG5cdFx0aWYgKCFwYXRoIHx8IHR5cGVvZiBwYXRoICE9PSAnc3RyaW5nJykge1xuXHRcdFx0dGhyb3cgRS5JTlZBTElEX0FSR1VNRU5UKCdFeHBlY3RlZCBhbiBleHRlbnNpb24gcGF0aCBvciBwYXJhbXMgb2JqZWN0JywgeyBuYW1lOiAncGF0aE9yUGFyYW1zJywgc2NvcGU6ICdFeHRlbnNpb24uY29uc3RydWN0b3InLCB2YWx1ZTogcGF0aE9yUGFyYW1zIH0pO1xuXHRcdH1cblxuXHRcdGlmICh0eXBlb2YgcGFyYW1zICE9PSAnb2JqZWN0Jykge1xuXHRcdFx0dGhyb3cgRS5JTlZBTElEX0FSR1VNRU5UKCdFeHBlY3RlZCBleHRlbnNpb24gcGFyYW1zIHRvIGJlIGFuIG9iamVjdCBvciBDb250ZXh0JywgeyBuYW1lOiAncGFyYW1zJywgc2NvcGU6ICdFeHRlbnNpb24uY29uc3RydWN0b3InLCB2YWx1ZTogcGFyYW1zIH0pO1xuXHRcdH1cblxuXHRcdHRoaXMuZXhwb3J0cyA9IHBhcmFtcy5leHBvcnRzIHx8IHt9O1xuXHRcdHRoaXMubmFtZSA9IHBhcmFtcy5uYW1lO1xuXHRcdHRoaXMucGF0aCA9IHBhdGg7XG5cblx0XHRpZiAodHlwZW9mIHRoaXMuZXhwb3J0cyAhPT0gJ29iamVjdCcpIHtcblx0XHRcdHRocm93IEUuSU5WQUxJRF9BUkdVTUVOVCgnRXhwZWN0ZWQgZXh0ZW5zaW9uIGV4cG9ydHMgdG8gYmUgYW4gb2JqZWN0JywgeyBuYW1lOiAncGFyYW1zLmV4cG9ydHMnLCBzY29wZTogJ0V4dGVuc2lvbi5jb25zdHJ1Y3RvcicsIHZhbHVlOiBwYXJhbXMuZXhwb3J0cyB9KTtcblx0XHR9XG5cblx0XHQvLyB3ZSBuZWVkIHRvIGRldGVybWluZSBpZiB0aGlzIGV4dGVuc2lvbiBpcyBhIGJpbmFyeSBvciBpZiBpdCdzIGEgTm9kZSBwYWNrYWdlXG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IGV4ZSA9IGlzRXhlY3V0YWJsZShwYXRoKTtcblx0XHRcdGlmICghdGhpcy5uYW1lKSB7XG5cdFx0XHRcdHRoaXMubmFtZSA9IGZpbGVuYW1lKGV4ZVswXSk7XG5cdFx0XHR9XG5cblx0XHRcdHRoaXMucmVnaXN0ZXJFeHRlbnNpb24odGhpcy5uYW1lLCB7IGV4ZSB9LCB7XG5cdFx0XHRcdGFjdGlvbjogYXN5bmMgKHsgX19hcmd2LCBjbWQsIHRlcm1pbmFsIH0pID0+IHtcblx0XHRcdFx0XHRpZiAoIUFycmF5LmlzQXJyYXkoZXhlKSkge1xuXHRcdFx0XHRcdFx0dGhyb3cgRS5OT19FWEVDVVRBQkxFKGBFeHRlbnNpb24gXCIke3RoaXMubmFtZX1cIiBoYXMgbm8gZXhlY3V0YWJsZSFgKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRjb25zdCBiaW4gPSBleGVbMF07XG5cdFx0XHRcdFx0Y29uc3QgYXJncyA9IGV4ZS5zbGljZSgxKTtcblx0XHRcdFx0XHRjb25zdCBwID0gX19hcmd2LmZpbmRJbmRleChhcmcgPT4gYXJnICYmIGFyZy50eXBlID09PSAnZXh0ZW5zaW9uJyAmJiBhcmcuY29tbWFuZCA9PT0gY21kKTtcblxuXHRcdFx0XHRcdGlmIChwICE9PSAtMSkge1xuXHRcdFx0XHRcdFx0Zm9yIChsZXQgaSA9IHAgKyAxLCBsZW4gPSBfX2FyZ3YubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcblx0XHRcdFx0XHRcdFx0YXJncy5wdXNoLmFwcGx5KGFyZ3MsIF9fYXJndltpXS5pbnB1dCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gc3Bhd24gdGhlIHByb2Nlc3Ncblx0XHRcdFx0XHRsb2coYFJ1bm5pbmc6ICR7aGlnaGxpZ2h0KGAke2Jpbn0gJHthcmdzLmpvaW4oJyAnKX1gKX1gKTtcblx0XHRcdFx0XHRjb25zdCBjaGlsZCA9IHNwYXduKGJpbiwgYXJncywgeyB3aW5kb3dzSGlkZTogdHJ1ZSB9KTtcblx0XHRcdFx0XHRjaGlsZC5zdGRvdXQub24oJ2RhdGEnLCBkYXRhID0+IHRlcm1pbmFsLnN0ZG91dC53cml0ZShkYXRhLnRvU3RyaW5nKCkpKTtcblx0XHRcdFx0XHRjaGlsZC5zdGRlcnIub24oJ2RhdGEnLCBkYXRhID0+IHRlcm1pbmFsLnN0ZGVyci53cml0ZShkYXRhLnRvU3RyaW5nKCkpKTtcblx0XHRcdFx0XHRhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IGNoaWxkLm9uKCdjbG9zZScsIChjb2RlID0gMCkgPT4gcmVzb2x2ZSh7IGNvZGUgfSkpKTtcblx0XHRcdFx0fSxcblx0XHRcdFx0ZGVzYzogcGFyYW1zLmRlc2Ncblx0XHRcdH0pO1xuXHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdC8vIG1heWJlIGEgTm9kZSBwYWNrYWdlP1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0bGV0IHBrZztcblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRwa2cgPSBmaW5kUGFja2FnZShwYXRoKTtcblx0XHRcdFx0XHRpZiAoIXBrZy5yb290KSB7XG5cdFx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdFx0XHR0aHJvdyBFLklOVkFMSURfRVhURU5TSU9OKGBJbnZhbGlkIGV4dGVuc2lvbjogVW5hYmxlIHRvIGZpbmQgZXhlY3V0YWJsZSwgc2NyaXB0LCBvciBwYWNrYWdlOiAke3R5cGVvZiBwYXRoID09PSAnc3RyaW5nJyA/IGBcIiR7cGF0aH1cImAgOiBKU09OLnN0cmluZ2lmeShwYXRoKX1gKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmICghdGhpcy5uYW1lKSB7XG5cdFx0XHRcdFx0dGhpcy5uYW1lID0gcGtnLmpzb24ubmFtZTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmICghdGhpcy5uYW1lKSB7XG5cdFx0XHRcdFx0dGhpcy5uYW1lID0gZmlsZW5hbWUocGF0aCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoIXBrZy5qc29uLmV4cG9ydHMgJiYgcGtnLm1haW4pIHtcblx0XHRcdFx0XHQvLyBsZWdhY3kgTm9kZS5qcyBleHRlbnNpb25cblx0XHRcdFx0XHRsZXQgeyBuYW1lIH0gPSB0aGlzO1xuXHRcdFx0XHRcdGNvbnN0IGFsaWFzZXMgPSBBcnJheS5pc0FycmF5KHBrZy5qc29uLmFsaWFzZXMpID8gcGtnLmpzb24uYWxpYXNlcyA6IFtdO1xuXG5cdFx0XHRcdFx0Ly8gaWYgdGhlIHBhY2thZ2UgbmFtZSBjb250YWlucyBhIHNjb3BlLCBhZGQgdGhlIHNjb3BlZCBwYWNrYWdlIG5hbWUgYXMgYSBoaWRkZW5cblx0XHRcdFx0XHQvLyBhbGlhcyBhbmQgc3RyaXAgdGhlIHNjb3BlIGZyb20gdGhlIG5hbWVcblx0XHRcdFx0XHRjb25zdCBtID0gbmFtZS5tYXRjaChuYW1lUmVnRXhwKTtcblx0XHRcdFx0XHRpZiAobSkge1xuXHRcdFx0XHRcdFx0YWxpYXNlcy5wdXNoKGAhJHtuYW1lfWApO1xuXHRcdFx0XHRcdFx0bmFtZSA9IG1bMl07XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gaWYgdGhlIG5hbWUgaXMgZGlmZmVyZW50IHRoYW4gdGhlIG9uZSBpbiB0aGUgcGFja2FnZS5qc29uLCBhZGQgaXQgdG8gdGhlIGFsaWFzZXNcblx0XHRcdFx0XHRpZiAobmFtZSAmJiBuYW1lICE9PSBwa2cuanNvbi5uYW1lICYmICFhbGlhc2VzLmluY2x1ZGVzKG5hbWUpKSB7XG5cdFx0XHRcdFx0XHRhbGlhc2VzLnB1c2gobmFtZSk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gaWYgdGhlIHBhY2thZ2UgaGFzIGEgYmluIHNjcmlwdCB0aGF0IG1hdGNoZXMgdGhlIHBhY2thZ2UgbmFtZSwgdGhlbiBhZGQgYW55IG90aGVyXG5cdFx0XHRcdFx0Ly8gYmluIG5hbWUgdGhhdCBhbGlhc2VzIHRoZSBwYWNrYWdlIG5hbWVkIGJpblxuXHRcdFx0XHRcdGlmIChwa2cuanNvbi5iaW4pIHtcblx0XHRcdFx0XHRcdGNvbnN0IHByaW1hcnkgPSBwa2cuanNvbi5iaW5bcGtnLmpzb24ubmFtZV07XG5cdFx0XHRcdFx0XHRmb3IgKGNvbnN0IFsgbmFtZSwgYmluIF0gb2YgT2JqZWN0LmVudHJpZXMocGtnLmpzb24uYmluKSkge1xuXHRcdFx0XHRcdFx0XHRpZiAoYmluID09PSBwcmltYXJ5ICYmICFhbGlhc2VzLmluY2x1ZGVzKG5hbWUpKSB7XG5cdFx0XHRcdFx0XHRcdFx0YWxpYXNlcy5wdXNoKG5hbWUpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0dGhpcy5yZWdpc3RlckV4dGVuc2lvbihuYW1lLCB7IHBrZyB9LCB7XG5cdFx0XHRcdFx0XHRhY3Rpb246IGFzeW5jICh7IF9fYXJndiwgY21kIH0pID0+IHtcblx0XHRcdFx0XHRcdFx0cHJvY2Vzcy5hcmd2ID0gW1xuXHRcdFx0XHRcdFx0XHRcdHByb2Nlc3MuZXhlY1BhdGgsXG5cdFx0XHRcdFx0XHRcdFx0cGtnLm1haW5cblx0XHRcdFx0XHRcdFx0XTtcblxuXHRcdFx0XHRcdFx0XHRjb25zdCBwID0gX19hcmd2LmZpbmRJbmRleChhcmcgPT4gYXJnICYmIGFyZy50eXBlID09PSAnZXh0ZW5zaW9uJyAmJiBhcmcuY29tbWFuZCA9PT0gY21kKTtcblx0XHRcdFx0XHRcdFx0aWYgKHAgIT09IC0xKSB7XG5cdFx0XHRcdFx0XHRcdFx0Zm9yIChsZXQgaSA9IHAgKyAxLCBsZW4gPSBfX2FyZ3YubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcblx0XHRcdFx0XHRcdFx0XHRcdHByb2Nlc3MuYXJndi5wdXNoLmFwcGx5KHByb2Nlc3MuYXJndiwgX19hcmd2W2ldLmlucHV0KTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRsb2coYFJlcXVpcmluZyAke2hpZ2hsaWdodChwa2cubWFpbil9YCk7XG5cdFx0XHRcdFx0XHRcdGxvZyhgQXJnczogJHtoaWdobGlnaHQocHJvY2Vzcy5hcmd2LmpvaW4oJyAnKSl9YCk7XG5cdFx0XHRcdFx0XHRcdHJlcXVpcmUocGtnLm1haW4pO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGFsaWFzZXMsXG5cdFx0XHRcdFx0XHRkZXNjOiBwa2cuanNvbi5kZXNjcmlwdGlvblxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9IGVsc2UgaWYgKHR5cGVvZiBwa2cuanNvbi5leHBvcnRzICE9PSAnb2JqZWN0Jykge1xuXHRcdFx0XHRcdHRocm93IEUuSU5WQUxJRF9FWFRFTlNJT04oJ0ludmFsaWQgZXh0ZW5zaW9uOiBFeHBlY3RlZCBleHBvcnRzIHRvIGJlIGFuIG9iamVjdCcsIHsgbmFtZTogJ3BrZy5qc29uLmV4cG9ydHMnLCBzY29wZTogJ0V4dGVuc2lvbi5jb25zdHJ1Y3RvcicsIHZhbHVlOiBwa2cuanNvbi5leHBvcnRzIH0pO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGZvciAoY29uc3QgWyBuYW1lLCBwYXJhbXMgXSBvZiBPYmplY3QuZW50cmllcyhwa2cuanNvbi5leHBvcnRzKSkge1xuXHRcdFx0XHRcdFx0aWYgKHBhcmFtcy5tYWluICYmICFfcGF0aC5pc0Fic29sdXRlKHBhcmFtcy5tYWluKSkge1xuXHRcdFx0XHRcdFx0XHRwYXJhbXMubWFpbiA9IF9wYXRoLnJlc29sdmUocGtnLnJvb3QsIHBhcmFtcy5tYWluKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHRoaXMucmVnaXN0ZXJFeHRlbnNpb24obmFtZSwge1xuXHRcdFx0XHRcdFx0XHRwa2c6IHtcblx0XHRcdFx0XHRcdFx0XHQuLi5wa2csXG5cdFx0XHRcdFx0XHRcdFx0Li4ucGFyYW1zXG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0sIHtcblx0XHRcdFx0XHRcdFx0ZGVzYzogcGtnLmpzb24uZGVzY3JpcHRpb24sXG5cdFx0XHRcdFx0XHRcdC4uLnBhcmFtc1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKCFPYmplY3Qua2V5cyh0aGlzLmV4cG9ydHMpLmxlbmd0aCkge1xuXHRcdFx0XHRcdHRocm93IEUuSU5WQUxJRF9FWFRFTlNJT04oYEludmFsaWQgZXh0ZW5zaW9uOiBVbmFibGUgdG8gZmluZCBleHRlbnNpb24ncyBtYWluIGZpbGU6ICR7dHlwZW9mIHBhdGggPT09ICdzdHJpbmcnID8gYFwiJHtwYXRofVwiYCA6IEpTT04uc3RyaW5naWZ5KHBhdGgpfWApO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdHRoaXMuZXJyID0gZTtcblx0XHRcdFx0d2FybihlKTtcblx0XHRcdFx0d2FybignRm91bmQgYmFkIGV4dGVuc2lvbiwgY3JlYXRpbmcgZXJyb3IgYWN0aW9uJyk7XG5cblx0XHRcdFx0dGhpcy5yZWdpc3RlckV4dGVuc2lvbih0aGlzLm5hbWUsIHt9LCB7XG5cdFx0XHRcdFx0YWN0aW9uOiAoeyB0ZXJtaW5hbCB9KSA9PiB7XG5cdFx0XHRcdFx0XHRjb25zdCB7IHN0ZGVyciB9ID0gdGVybWluYWw7XG5cdFx0XHRcdFx0XHRpZiAodGhpcy5lcnIpIHtcblx0XHRcdFx0XHRcdFx0bGV0IHsgc3RhY2sgfSA9IGU7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHAgPSBzdGFjay5pbmRleE9mKCdcXG5cXG4nKTtcblx0XHRcdFx0XHRcdFx0aWYgKHAgIT09IC0xKSB7XG5cdFx0XHRcdFx0XHRcdFx0c3RhY2sgPSBzdGFjay5zdWJzdHJpbmcoMCwgcCkudHJpbSgpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGZvciAoY29uc3QgbGluZSBvZiBzdGFjay5zcGxpdCgnXFxuJykpIHtcblx0XHRcdFx0XHRcdFx0XHRzdGRlcnIud3JpdGUoYCAgJHtsaW5lfVxcbmApO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRzdGRlcnIud3JpdGUoYEludmFsaWQgZXh0ZW5zaW9uOiAke3RoaXMubmFtZX1cXG5gKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGRlY2xhcmVDTElLaXRDbGFzcyh0aGlzLCAnRXh0ZW5zaW9uJyk7XG5cblx0XHQvLyBtaXggaW4gYW55IG90aGVyIGN1c3RvbSBwcm9wc1xuXHRcdGZvciAoY29uc3QgWyBrZXksIHZhbHVlIF0gb2YgT2JqZWN0LmVudHJpZXMocGFyYW1zKSkge1xuXHRcdFx0aWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcywga2V5KSkge1xuXHRcdFx0XHR0aGlzW2tleV0gPSB2YWx1ZTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogSW5pdGlhbGl6ZXMgYSBjb21tYW5kIHdpdGggdGhlIGV4dGVuc2lvbiBleHBvcnQgaW5mby5cblx0ICpcblx0ICogQHBhcmFtIHtTdHJpbmd9IG5hbWUgLSBUaGUgY29tbWFuZCBuYW1lLlxuXHQgKiBAcGFyYW0ge09iamVjdH0gbWV0YSAtIE1ldGFkYXRhIHRvIG1peCBpbnRvIHRoZSBjb21tYW5kIGluc3RhbmNlLlxuXHQgKiBAcGFyYW0ge09iamVjdH0gcGFyYW1zIC0gQ29tbWFuZCBzcGVjaWZpYyBjb25zdHJ1Y3RvciBwYXJhbWV0ZXJzLlxuXHQgKiBAYWNjZXNzIHByaXZhdGVcblx0ICovXG5cdHJlZ2lzdGVyRXh0ZW5zaW9uKG5hbWUsIG1ldGEsIHBhcmFtcykge1xuXHRcdGxvZyhgUmVnaXN0ZXJpbmcgZXh0ZW5zaW9uIGNvbW1hbmQ6ICR7aGlnaGxpZ2h0KGAke3RoaXMubmFtZX06JHtuYW1lfWApfWApO1xuXHRcdGNvbnN0IGNtZCA9IG5ldyBDb21tYW5kKG5hbWUsIHtcblx0XHRcdHBhcmVudDogdGhpcyxcblx0XHRcdC4uLnBhcmFtc1xuXHRcdH0pO1xuXHRcdHRoaXMuZXhwb3J0c1tuYW1lXSA9IE9iamVjdC5hc3NpZ24oY21kLCBtZXRhKTtcblx0XHRjbWQuaXNFeHRlbnNpb24gPSB0cnVlO1xuXG5cdFx0aWYgKG1ldGE/LnBrZz8uY2xpa2l0KSB7XG5cdFx0XHRjbWQuaXNDTElLaXRFeHRlbnNpb24gPSB0cnVlO1xuXG5cdFx0XHRjbWQubG9hZCA9IGFzeW5jIGZ1bmN0aW9uIGxvYWQoKSB7XG5cdFx0XHRcdGxvZyhgUmVxdWlyaW5nIGNsaS1raXQgZXh0ZW5zaW9uOiAke2hpZ2hsaWdodCh0aGlzLm5hbWUpfSAtPiAke2hpZ2hsaWdodChtZXRhLnBrZy5tYWluKX1gKTtcblx0XHRcdFx0bGV0IGN0eDtcblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRjdHggPSByZXF1aXJlKG1ldGEucGtnLm1haW4pO1xuXHRcdFx0XHRcdGlmICghY3R4IHx8ICh0eXBlb2YgY3R4ICE9PSAnb2JqZWN0JyAmJiB0eXBlb2YgY3R4ICE9PSAnZnVuY3Rpb24nKSkge1xuXHRcdFx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKCdFeHRlbnNpb24gbXVzdCBleHBvcnQgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uJyk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gaWYgdGhpcyBpcyBhbiBFUzYgbW9kdWxlLCBncmFiIHRoZSBkZWZhdWx0IGV4cG9ydFxuXHRcdFx0XHRcdGlmIChjdHguX19lc01vZHVsZSkge1xuXHRcdFx0XHRcdFx0Y3R4ID0gY3R4LmRlZmF1bHQ7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gaWYgdGhlIGV4cG9ydCB3YXMgYSBmdW5jdGlvbiwgY2FsbCBpdCBub3cgdG8gZ2V0IGl0cyBDTEkgZGVmaW5pdGlvblxuXHRcdFx0XHRcdGlmICh0eXBlb2YgY3R4ID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRcdFx0XHRjdHggPSBhd2FpdCBjdHgodGhpcyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmICghY3R4IHx8IHR5cGVvZiBjdHggIT09ICdvYmplY3QnKSB7XG5cdFx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ0V4dGVuc2lvbiBkb2VzIG5vdCByZXNvbHZlIGFuIG9iamVjdCcpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0XHRcdFx0dGhyb3cgRS5JTlZBTElEX0VYVEVOU0lPTihgQmFkIGV4dGVuc2lvbiBcIiR7dGhpcy5uYW1lfVwiOiAke2Vyci5tZXNzYWdlfWAsIHsgbmFtZTogdGhpcy5uYW1lLCBzY29wZTogJ0V4dGVuc2lvbi5sb2FkJywgdmFsdWU6IGVyciB9KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHRoaXMuYWxpYXNlcyAgICAgICAgICAgICAgICAgICAgICAgID0gY3R4LmFsaWFzZXM7XG5cdFx0XHRcdHRoaXMuY2FtZWxDYXNlICAgICAgICAgICAgICAgICAgICAgID0gY3R4LmNhbWVsQ2FzZTtcblx0XHRcdFx0dGhpcy5kZWZhdWx0Q29tbWFuZCAgICAgICAgICAgICAgICAgPSBjdHguZGVmYXVsdENvbW1hbmQ7XG5cdFx0XHRcdHRoaXMuaGVscCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gY3R4LmhlbHAgfHwge307XG5cdFx0XHRcdHRoaXMucmVtb3RlSGVscCAgICAgICAgICAgICAgICAgICAgID0gY3R4LnJlbW90ZUhlbHA7XG5cdFx0XHRcdHRoaXMudHJlYXRVbmtub3duT3B0aW9uc0FzQXJndW1lbnRzID0gY3R4LnRyZWF0VW5rbm93bk9wdGlvbnNBc0FyZ3VtZW50cztcblx0XHRcdFx0dGhpcy52ZXJzaW9uICAgICAgICAgICAgICAgICAgICAgICAgPSBjdHgudmVyc2lvbjtcblxuXHRcdFx0XHR0aGlzLmluaXQoe1xuXHRcdFx0XHRcdGFyZ3M6ICAgICAgIGN0eC5hcmdzLFxuXHRcdFx0XHRcdGJhbm5lcjogICAgIGN0eC5iYW5uZXIsXG5cdFx0XHRcdFx0Y29tbWFuZHM6ICAgY3R4LmNvbW1hbmRzLFxuXHRcdFx0XHRcdGRlc2M6ICAgICAgIHRoaXMuZGVzYyB8fCBjdHguZGVzYyxcblx0XHRcdFx0XHRleHRlbnNpb25zOiBjdHguZXh0ZW5zaW9ucyxcblx0XHRcdFx0XHRuYW1lOiAgICAgICB0aGlzLm5hbWUgfHwgY3R4Lm5hbWUsXG5cdFx0XHRcdFx0b3B0aW9uczogICAgY3R4Lm9wdGlvbnMsXG5cdFx0XHRcdFx0cGFyZW50OiAgICAgdGhpcy5wYXJlbnQsXG5cdFx0XHRcdFx0dGl0bGU6ICAgICAgY3R4LnRpdGxlICE9PSAnR2xvYmFsJyAmJiBjdHgudGl0bGUgfHwgdGhpcy5uYW1lXG5cdFx0XHRcdH0pO1xuXG5cdFx0XHRcdGNvbnN0IHZlcnNpb25PcHRpb24gPSB0aGlzLnZlcnNpb24gJiYgdGhpcy5sb29rdXAubG9uZy52ZXJzaW9uO1xuXHRcdFx0XHRpZiAodmVyc2lvbk9wdGlvbiAmJiB0eXBlb2YgdmVyc2lvbk9wdGlvbi5jYWxsYmFjayAhPT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0XHRcdHZlcnNpb25PcHRpb24uY2FsbGJhY2sgPSBhc3luYyAoeyBleGl0Q29kZSwgb3B0cywgbmV4dCB9KSA9PiB7XG5cdFx0XHRcdFx0XHRpZiAoYXdhaXQgbmV4dCgpKSB7XG5cdFx0XHRcdFx0XHRcdGxldCB7IHZlcnNpb24gfSA9IHRoaXM7XG5cdFx0XHRcdFx0XHRcdGlmICh0eXBlb2YgdmVyc2lvbiA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0XHRcdFx0XHRcdHZlcnNpb24gPSBhd2FpdCB2ZXJzaW9uKG9wdHMpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdChvcHRzLnRlcm1pbmFsIHx8IHRoaXMuZ2V0KCd0ZXJtaW5hbCcpKS5zdGRvdXQud3JpdGUoYCR7dmVyc2lvbn1cXG5gKTtcblx0XHRcdFx0XHRcdFx0ZXhpdENvZGUoMCk7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKHR5cGVvZiBjdHguYWN0aW9uID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRcdFx0dGhpcy5hY3Rpb24gPSBjdHguYWN0aW9uO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHRoaXMuYWN0aW9uID0gYXN5bmMgcGFyc2VyID0+IHtcblx0XHRcdFx0XHRcdGlmICh0aGlzLmRlZmF1bHRDb21tYW5kICE9PSAnaGVscCcgfHwgIXRoaXMuZ2V0KCdoZWxwJykpIHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgZGVmY21kID0gdGhpcy5kZWZhdWx0Q29tbWFuZCAmJiB0aGlzLmNvbW1hbmRzW3RoaXMuZGVmYXVsdENvbW1hbmRdO1xuXHRcdFx0XHRcdFx0XHRpZiAoZGVmY21kKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGF3YWl0IGRlZmNtZC5hY3Rpb24uY2FsbChkZWZjbWQsIHBhcnNlcik7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHJldHVybiBhd2FpdCBoZWxwQ29tbWFuZC5hY3Rpb24uY2FsbChoZWxwQ29tbWFuZCwgcGFyc2VyKTtcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9XG5cdFx0XHR9LmJpbmQoY21kKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgc2NoZW1hIGZvciB0aGlzIGV4dGVuc2lvbiBhbmQgYWxsIGNoaWxkIGNvbnRleHRzLlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7T2JqZWN0fVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0c2NoZW1hKCkge1xuXHRcdHJldHVybiB7XG5cdFx0XHQuLi5zdXBlci5zY2hlbWEsXG5cdFx0XHRwYXRoOiB0aGlzLnBhdGhcblx0XHR9O1xuXHR9XG59XG4iXSwiZmlsZSI6InBhcnNlci9leHRlbnNpb24uanMifQ==
{
"name": "cli-kit",
"version": "1.11.3",
"version": "1.11.4",
"description": "Everything you need to create awesome command line interfaces",

@@ -5,0 +5,0 @@ "main": "./dist/index.js",

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc