projen
Version:
CDK for software projects
193 lines • 48.2 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.PyprojectTomlProjectDynamic = void 0;
exports.toJson_PyprojectToml = toJson_PyprojectToml;
exports.toJson_PyprojectTomlProject = toJson_PyprojectTomlProject;
exports.toJson_PyprojectTomlDependencyGroups = toJson_PyprojectTomlDependencyGroups;
exports.toJson_BuildSystem = toJson_BuildSystem;
exports.toJson_PyprojectTomlTool = toJson_PyprojectTomlTool;
exports.toJson_ProjectAuthor = toJson_ProjectAuthor;
/**
* Converts an object of type 'PyprojectToml' to JSON representation.
* @internal
*/
/* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
function toJson_PyprojectToml(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'project': toJson_PyprojectTomlProject(obj.project),
'dependency-groups': toJson_PyprojectTomlDependencyGroups(obj.dependencyGroups),
'build-system': toJson_BuildSystem(obj.buildSystem),
'tool': toJson_PyprojectTomlTool(obj.tool),
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
/**
* Converts an object of type 'PyprojectTomlProject' to JSON representation.
* @internal
*/
/* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
function toJson_PyprojectTomlProject(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'name': obj.name,
'version': obj.version,
'description': obj.description,
'readme': obj.readme,
'requires-python': obj.requiresPython,
'license': obj.license,
'license-files': obj.licenseFiles?.map(y => y),
'authors': obj.authors?.map(y => toJson_ProjectAuthor(y)),
'maintainers': obj.maintainers?.map(y => toJson_ProjectAuthor(y)),
'keywords': obj.keywords?.map(y => y),
'classifiers': obj.classifiers?.map(y => y),
'urls': ((obj.urls) === undefined) ? undefined : (Object.entries(obj.urls).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})),
'scripts': ((obj.scripts) === undefined) ? undefined : (Object.entries(obj.scripts).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})),
'gui-scripts': ((obj.guiScripts) === undefined) ? undefined : (Object.entries(obj.guiScripts).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})),
'entry-points': obj.entryPoints,
'dependencies': obj.dependencies?.map(y => y),
'optional-dependencies': obj.optionalDependencies,
'import-names': obj.importNames?.map(y => y),
'import-namespaces': obj.importNamespaces?.map(y => y),
'dynamic': obj.dynamic?.map(y => y),
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
/**
* Converts an object of type 'PyprojectTomlDependencyGroups' to JSON representation.
* @internal
*/
/* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
function toJson_PyprojectTomlDependencyGroups(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'dev': obj.dev?.map(y => y),
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
/**
* Converts an object of type 'BuildSystem' to JSON representation.
* @internal
*/
/* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
function toJson_BuildSystem(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'requires': obj.requires?.map(y => y),
'build-backend': obj.buildBackend,
'backend-path': obj.backendPath?.map(y => y),
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
/**
* Converts an object of type 'PyprojectTomlTool' to JSON representation.
* @internal
*/
/* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
function toJson_PyprojectTomlTool(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'black': obj.black,
'cibuildwheel': obj.cibuildwheel,
'fastapi': obj.fastapi,
'scheduled': obj.scheduled,
'mypy': obj.mypy,
'ruff': obj.ruff,
'ty': obj.ty,
'hatch': obj.hatch,
'maturin': obj.maturin,
'scikit-build': obj.scikitBuild,
'setuptools': obj.setuptools,
'setuptools_scm': obj.setuptoolsScm,
'pixi': obj.pixi,
'poe': obj.poe,
'poetry': obj.poetry,
'pdm': obj.pdm,
'pyright': obj.pyright,
'pytest': obj.pytest,
'repo-review': obj.repoReview,
'taskipy': obj.taskipy,
'tombi': obj.tombi,
'tox': obj.tox,
'uv': obj.uv,
'dfc': obj.dfc,
'docstring-format-checker': obj.docstringFormatChecker,
'quikrun': obj.quikrun,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
/**
* Converts an object of type 'ProjectAuthor' to JSON representation.
* @internal
*/
/* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
function toJson_ProjectAuthor(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'name': obj.name,
'email': obj.email,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
/* eslint-enable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
/**
* @schema PyprojectTomlProjectDynamic
*/
var PyprojectTomlProjectDynamic;
(function (PyprojectTomlProjectDynamic) {
/** version */
PyprojectTomlProjectDynamic["VERSION"] = "version";
/** description */
PyprojectTomlProjectDynamic["DESCRIPTION"] = "description";
/** readme */
PyprojectTomlProjectDynamic["README"] = "readme";
/** requires-python */
PyprojectTomlProjectDynamic["REQUIRES_HYPHEN_PYTHON"] = "requires-python";
/** license */
PyprojectTomlProjectDynamic["LICENSE"] = "license";
/** license-files */
PyprojectTomlProjectDynamic["LICENSE_HYPHEN_FILES"] = "license-files";
/** authors */
PyprojectTomlProjectDynamic["AUTHORS"] = "authors";
/** maintainers */
PyprojectTomlProjectDynamic["MAINTAINERS"] = "maintainers";
/** keywords */
PyprojectTomlProjectDynamic["KEYWORDS"] = "keywords";
/** classifiers */
PyprojectTomlProjectDynamic["CLASSIFIERS"] = "classifiers";
/** urls */
PyprojectTomlProjectDynamic["URLS"] = "urls";
/** scripts */
PyprojectTomlProjectDynamic["SCRIPTS"] = "scripts";
/** gui-scripts */
PyprojectTomlProjectDynamic["GUI_HYPHEN_SCRIPTS"] = "gui-scripts";
/** entry-points */
PyprojectTomlProjectDynamic["ENTRY_HYPHEN_POINTS"] = "entry-points";
/** dependencies */
PyprojectTomlProjectDynamic["DEPENDENCIES"] = "dependencies";
/** optional-dependencies */
PyprojectTomlProjectDynamic["OPTIONAL_HYPHEN_DEPENDENCIES"] = "optional-dependencies";
/** import-names */
PyprojectTomlProjectDynamic["IMPORT_HYPHEN_NAMES"] = "import-names";
/** import-namespaces */
PyprojectTomlProjectDynamic["IMPORT_HYPHEN_NAMESPACES"] = "import-namespaces";
})(PyprojectTomlProjectDynamic || (exports.PyprojectTomlProjectDynamic = PyprojectTomlProjectDynamic = {}));
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHlwcm9qZWN0LXRvbWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHl0aG9uL3B5cHJvamVjdC10b21sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQXdDQSxvREFVQztBQW1LRCxrRUEwQkM7QUFvQkQsb0ZBT0M7QUFvQ0QsZ0RBU0M7QUEwTkQsNERBZ0NDO0FBdUJELG9EQVFDO0FBN2lCRDs7O0dBR0c7QUFDSCxxRkFBcUY7QUFDckYsU0FBZ0Isb0JBQW9CLENBQUMsR0FBOEI7SUFDakUsSUFBSSxHQUFHLEtBQUssU0FBUyxFQUFFLENBQUM7UUFBQyxPQUFPLFNBQVMsQ0FBQztJQUFDLENBQUM7SUFDNUMsTUFBTSxNQUFNLEdBQUc7UUFDYixTQUFTLEVBQUUsMkJBQTJCLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQztRQUNuRCxtQkFBbUIsRUFBRSxvQ0FBb0MsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUM7UUFDL0UsY0FBYyxFQUFFLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUM7UUFDbkQsTUFBTSxFQUFFLHdCQUF3QixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUM7S0FDM0MsQ0FBQztJQUNGLDBCQUEwQjtJQUMxQixPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUMxRyxDQUFDO0FBOEpEOzs7R0FHRztBQUNILHFGQUFxRjtBQUNyRixTQUFnQiwyQkFBMkIsQ0FBQyxHQUFxQztJQUMvRSxJQUFJLEdBQUcsS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUFDLE9BQU8sU0FBUyxDQUFDO0lBQUMsQ0FBQztJQUM1QyxNQUFNLE1BQU0sR0FBRztRQUNiLE1BQU0sRUFBRSxHQUFHLENBQUMsSUFBSTtRQUNoQixTQUFTLEVBQUUsR0FBRyxDQUFDLE9BQU87UUFDdEIsYUFBYSxFQUFFLEdBQUcsQ0FBQyxXQUFXO1FBQzlCLFFBQVEsRUFBRSxHQUFHLENBQUMsTUFBTTtRQUNwQixpQkFBaUIsRUFBRSxHQUFHLENBQUMsY0FBYztRQUNyQyxTQUFTLEVBQUUsR0FBRyxDQUFDLE9BQU87UUFDdEIsZUFBZSxFQUFFLEdBQUcsQ0FBQyxZQUFZLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzlDLFNBQVMsRUFBRSxHQUFHLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pELGFBQWEsRUFBRSxHQUFHLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pFLFVBQVUsRUFBRSxHQUFHLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNyQyxhQUFhLEVBQUUsR0FBRyxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDM0MsTUFBTSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3JKLFNBQVMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM5SixhQUFhLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxD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RSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDMUcsQ0FBQztBQUNELG9GQUFvRjtBQUVwRjs7R0FFRztBQUNILElBQVksMkJBcUNYO0FBckNELFdBQVksMkJBQTJCO0lBQ3JDLGNBQWM7SUFDZCxrREFBbUIsQ0FBQTtJQUNuQixrQkFBa0I7SUFDbEIsMERBQTJCLENBQUE7SUFDM0IsYUFBYTtJQUNiLGdEQUFpQixDQUFBO0lBQ2pCLHNCQUFzQjtJQUN0Qix5RUFBMEMsQ0FBQTtJQUMxQyxjQUFjO0lBQ2Qsa0RBQW1CLENBQUE7SUFDbkIsb0JBQW9CO0lBQ3BCLHFFQUFzQyxDQUFBO0lBQ3RDLGNBQWM7SUFDZCxrREFBbUIsQ0FBQTtJQUNuQixrQkFBa0I7SUFDbEIsMERBQTJCLENBQUE7SUFDM0IsZUFBZTtJQUNmLG9EQUFxQixDQUFBO0lBQ3JCLGtCQUFrQjtJQUNsQiwwREFBMkIsQ0FBQTtJQUMzQixXQUFXO0lBQ1gsNENBQWEsQ0FBQTtJQUNiLGNBQWM7SUFDZCxrREFBbUIsQ0FBQTtJQUNuQixrQkFBa0I7SUFDbEIsaUVBQWtDLENBQUE7SUFDbEMsbUJBQW1CO0lBQ25CLG1FQUFvQyxDQUFBO0lBQ3BDLG1CQUFtQjtJQUNuQiw0REFBNkIsQ0FBQTtJQUM3Qiw0QkFBNEI7SUFDNUIscUZBQXNELENBQUE7SUFDdEQsbUJBQW1CO0lBQ25CLG1FQUFvQyxDQUFBO0lBQ3BDLHdCQUF3QjtJQUN4Qiw2RUFBOEMsQ0FBQTtBQUNoRCxDQUFDLEVBckNXLDJCQUEyQiwyQ0FBM0IsMkJBQTJCLFFBcUN0QyIsInNvdXJjZXNDb250ZW50IjpbIi8vIH5+IEdlbmVyYXRlZCBieSBwcm9qZW4uIFRvIG1vZGlmeSwgZWRpdCAucHJvamVucmMudHMgYW5kIHJ1biBcIm5vZGUgLi9wcm9qZW4uanNcIi5cbi8qKlxuICogQHNjaGVtYSBQeXByb2plY3RUb21sXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHlwcm9qZWN0VG9tbCB7XG4gIC8qKlxuICAgKiBUaGVyZSBhcmUgdGhyZWUga2luZHMgb2YgbWV0YWRhdGE6IF9zdGF0aWNfLCBfZHluYW1pY18sIGFuZCBfcGFydGlhbGx5IGR5bmFtaWNfLlxuICAgKiAtIFN0YXRpYyBtZXRhZGF0YSBpcyBsaXN0ZWQgaW4gdGhlIGBbcHJvamVjdF1gIHRhYmxlIGRpcmVjdGx5IGFuZCBjYW5ub3QgYmUgc3BlY2lmaWVkIG9yIGNoYW5nZWQgYnkgYSB0b29sLlxuICAgKiAtIER5bmFtaWMgbWV0YWRhdGEga2V5IG5hbWVzIGFyZSBsaXN0ZWQgaW5zaWRlIHRoZSBgZHluYW1pY2Aga2V5IGFuZCByZXByZXNlbnRzIG1ldGFkYXRhIHRoYXQgYSB0b29sIHdpbGwgbGF0ZXIgcHJvdmlkZS5cbiAgICogLSBQYXJ0aWFsbHkgZHluYW1pYyBtZXRhZGF0YSBpcyBzcGVjaWZpZWQgaW4gdGhlIGBbcHJvamVjdF1gIHRhYmxlIGFzIGEgbGlzdCBvciB0YWJsZSwgYW5kIGFsc28gbGlzdGVkIGluIGBkeW5hbWljYCwgYWxsb3dpbmcgdGhlIGJ1aWxkIGJhY2tlbmQgdG8gYWRkIGVudHJpZXMgYnV0IG5vdCBtb2RpZnkgb3IgcmVtb3ZlIGV4aXN0aW5nIG9uZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgUHlwcm9qZWN0VG9tbCNwcm9qZWN0XG4gICAqL1xuICByZWFkb25seSBwcm9qZWN0PzogUHlwcm9qZWN0VG9tbFByb2plY3Q7XG5cbiAgLyoqXG4gICAqIE5hbWVkIGdyb3VwcyBvZiBkZXBlbmRlbmNpZXMsIHNpbWlsYXIgdG8gYHJlcXVpcmVtZW50cy50eHRgIGZpbGVzLCB3aGljaCBsYXVuY2hlcnMsIElERXMsIGFuZCBvdGhlciB0b29scyBjYW4gZmluZCBhbmQgaWRlbnRpZnkgYnkgbmFtZS4gRWFjaCBpdGVtIGluIGBbZGVwZW5kZW5jeS1ncm91cHNdYCBpcyBkZWZpbmVkIGFzIG1hcHBpbmcgb2YgZ3JvdXAgbmFtZSB0byBsaXN0IG9mIFtkZXBlbmRlbmN5IHNwZWNpZmllcnNdKGh0dHBzOi8vcGFja2FnaW5nLnB5dGhvbi5vcmcvZW4vbGF0ZXN0L3NwZWNpZmljYXRpb25zL2RlcGVuZGVuY3ktc3BlY2lmaWVycy8pLlxuICAgKlxuICAgKiBAc2NoZW1hIFB5cHJvamVjdFRvbWwjZGVwZW5kZW5jeS1ncm91cHNcbiAgICovXG4gIHJlYWRvbmx5IGRlcGVuZGVuY3lHcm91cHM/OiBQeXByb2plY3RUb21sRGVwZW5kZW5jeUdyb3VwcztcblxuICAvKipcbiAgICogQHNjaGVtYSBQeXByb2plY3RUb21sI2J1aWxkLXN5c3RlbVxuICAgKi9cbiAgcmVhZG9ubHkgYnVpbGRTeXN0ZW0/OiBCdWlsZFN5c3RlbTtcblxuICAvKipcbiAgICogRXZlcnkgdG9vbCB0aGF0IGlzIHVzZWQgYnkgdGhlIHByb2plY3QgY2FuIGhhdmUgdXNlcnMgc3BlY2lmeSBjb25maWd1cmF0aW9uIGRhdGEgYXMgbG9uZyBhcyB0aGV5IHVzZSBhIHN1Yi10YWJsZSB3aXRoaW4gYFt0b29sXWAuIEdlbmVyYWxseSBhIHByb2plY3QgY2FuIHVzZSB0aGUgc3VidGFibGUgYHRvb2wuJE5BTUVgIGlmLCBhbmQgb25seSBpZiwgdGhleSBvd24gdGhlIGVudHJ5IGZvciBgJE5BTUVgIGluIHRoZSBDaGVlc2VzaG9wL1B5UEkuXG4gICAqXG4gICAqIEBzY2hlbWEgUHlwcm9qZWN0VG9tbCN0b29sXG4gICAqL1xuICByZWFkb25seSB0b29sPzogUHlwcm9qZWN0VG9tbFRvb2w7XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ1B5cHJvamVjdFRvbWwnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKiBAaW50ZXJuYWxcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9QeXByb2plY3RUb21sKG9iajogUHlwcm9qZWN0VG9tbCB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ3Byb2plY3QnOiB0b0pzb25fUHlwcm9qZWN0VG9tbFByb2plY3Qob2JqLnByb2plY3QpLFxuICAgICdkZXBlbmRlbmN5LWdyb3Vwcyc6IHRvSnNvbl9QeXByb2plY3RUb21sRGVwZW5kZW5jeUdyb3VwcyhvYmouZGVwZW5kZW5jeUdyb3VwcyksXG4gICAgJ2J1aWxkLXN5c3RlbSc6IHRvSnNvbl9CdWlsZFN5c3RlbShvYmouYnVpbGRTeXN0ZW0pLFxuICAgICd0b29sJzogdG9Kc29uX1B5cHJvamVjdFRvbWxUb29sKG9iai50b29sKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIFRoZXJlIGFyZSB0aHJlZSBraW5kcyBvZiBtZXRhZGF0YTogX3N0YXRpY18sIF9keW5hbWljXywgYW5kIF9wYXJ0aWFsbHkgZHluYW1pY18uXG4gKiAtIFN0YXRpYyBtZXRhZGF0YSBpcyBsaXN0ZWQgaW4gdGhlIGBbcHJvamVjdF1gIHRhYmxlIGRpcmVjdGx5IGFuZCBjYW5ub3QgYmUgc3BlY2lmaWVkIG9yIGNoYW5nZWQgYnkgYSB0b29sLlxuICogLSBEeW5hbWljIG1ldGFkYXRhIGtleSBuYW1lcyBhcmUgbGlzdGVkIGluc2lkZSB0aGUgYGR5bmFtaWNgIGtleSBhbmQgcmVwcmVzZW50cyBtZXRhZGF0YSB0aGF0IGEgdG9vbCB3aWxsIGxhdGVyIHByb3ZpZGUuXG4gKiAtIFBhcnRpYWxseSBkeW5hbWljIG1ldGFkYXRhIGlzIHNwZWNpZmllZCBpbiB0aGUgYFtwcm9qZWN0XWAgdGFibGUgYXMgYSBsaXN0IG9yIHRhYmxlLCBhbmQgYWxzbyBsaXN0ZWQgaW4gYGR5bmFtaWNgLCBhbGxvd2luZyB0aGUgYnVpbGQgYmFja2VuZCB0byBhZGQgZW50cmllcyBidXQgbm90IG1vZGlmeSBvciByZW1vdmUgZXhpc3Rpbmcgb25lcy5cbiAqXG4gKiBAc2NoZW1hIFB5cHJvamVjdFRvbWxQcm9qZWN0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHlwcm9qZWN0VG9tbFByb2plY3Qge1xuICAvKipcbiAgICogVmFsaWQgbmFtZSBjb25zaXN0cyBvbmx5IG9mIEFTQ0lJIGxldHRlcnMgYW5kIG51bWJlcnMsIHBlcmlvZCwgdW5kZXJzY29yZSBhbmQgaHlwaGVuLiBJdCBtdXN0IHN0YXJ0IGFuZCBlbmQgd2l0aCBhIGxldHRlciBvciBudW1iZXIuXG4gICAqXG4gICAqIEBzY2hlbWEgUHlwcm9qZWN0VG9tbFByb2plY3QjbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBWZXJzaW9uIG9mIHRoZSBwcm9qZWN0LCBhcyBkZWZpbmVkIGluIHRoZSBbVmVyc2lvbiBzcGVjaWZpZXIgc3BlY2lmaWNhdGlvbl0oaHR0cHM6Ly9wYWNrYWdpbmcucHl0aG9uLm9yZy9lbi9sYXRlc3Qvc3BlY2lmaWNhdGlvbnMvdmVyc2lvbi1zcGVjaWZpZXJzLyksIGFuZCBwcmVmZXJhYmx5IFthbHJlYWR5IG5vcm1hbGl6ZWRdKGh0dHBzOi8vcGFja2FnaW5nLnB5dGhvbi5vcmcvZW4vbGF0ZXN0L3NwZWNpZmljYXRpb25zL3ZlcnNpb24tc3BlY2lmaWVycy8jbm9ybWFsaXphdGlvbikuXG4gICAqXG4gICAqIEBzY2hlbWEgUHlwcm9qZWN0VG9tbFByb2plY3QjdmVyc2lvblxuICAgKi9cbiAgcmVhZG9ubHkgdmVyc2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogU3VtbWFyeSBkZXNjcmlwdGlvbiBvZiB0aGUgcHJvamVjdCBpbiBvbmUgbGluZS4gVG9vbHMgbWF5IG5vdCBhY2NlcHQgbXVsdGlwbGUgbGluZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgUHlwcm9qZWN0VG9tbFByb2plY3QjZGVzY3JpcHRpb25cbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBWYWx1ZSBjYW4gYmUgYSByZWxhdGl2ZSBwYXRoIHRvIHRleHQgLyBtYXJrZG93biAoYC5tZGAgc3VmZml4KSAvIHJlU3RydWN0dXJlZFRleHQgKGAucnN0YCBzdWZmaXgpIHJlYWRtZSBmaWxlLCBvciBhIHRhYmxlIHdpdGggZWl0aGVyOlxuICAgKiAtIGBmaWxlYCBrZXkgY29udGFpbmluZyBwYXRoIG9mIGFmb3JlbWVudGlvbmVkIHJlYWRtZSBmaWxlLCBvclxuICAgKiAtIGB0ZXh0YCBrZXkgY29udGFpbmluZyB0aGUgZnVsbCByZWFkbWUgdGV4dCBlbWJlZGRlZCBpbnNpZGUgYHB5cHJvamVjdC50b21sYC5cbiAgICpcbiAgICogQHNjaGVtYSBQeXByb2plY3RUb21sUHJvamVjdCNyZWFkbWVcbiAgICovXG4gIHJlYWRvbmx5IHJlYWRtZT86IGFueTtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBQeXRob24gdmVyc2lvbihzKSB0aGF0IHRoZSBkaXN0cmlidXRpb24gaXMgY29tcGF0aWJsZSB3aXRoLiBNdXN0IGJlIGluIHRoZSBmb3JtYXQgc3BlY2lmaWVkIGluIFtWZXJzaW9uIHNwZWNpZmllcnNdKGh0dHBzOi8vcGFja2FnaW5nLnB5dGhvbi5vcmcvZW4vbGF0ZXN0L3NwZWNpZmljYXRpb25zL3ZlcnNpb24tc3BlY2lmaWVycy8pLlxuICAgKlxuICAgKiBAc2NoZW1hIFB5cHJvamVjdFRvbWxQcm9qZWN0I3JlcXVpcmVzLXB5dGhvblxuICAgKi9cbiAgcmVhZG9ubHkgcmVxdWlyZXNQeXRob24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgc3RyaW5nIGNvbnRhaW5pbmcgYSB2YWxpZCBbU1BEWCBsaWNlbnNlIGV4cHJlc3Npb25dKGh0dHBzOi8vc3BkeC5naXRodWIuaW8vc3BkeC1zcGVjL3YyLjIuMi9TUERYLWxpY2Vuc2UtZXhwcmVzc2lvbnMvKSAocmVjb21tZW5kZWQpLCBvciBhIHRhYmxlIHdpdGggZWl0aGVyOlxuICAgKiAtIGBmaWxlYCBrZXkgc3BlY2lmeWluZyBhIHJlbGF0aXZlIHBhdGggdG8gYSBsaWNlbnNlIGZpbGUgKGRlcHJlY2F0ZWQgcGVyIFBFUCA2MzkpLCBvclxuICAgKiAtIGB0ZXh0YCBrZXkgY29udGFpbmluZyBmdWxsIGxpY2Vuc2UgY29udGVudCAoZGVwcmVjYXRlZCBwZXIgUEVQIDYzOSlcbiAgICpcbiAgICogQHNjaGVtYSBQeXByb2plY3RUb21sUHJvamVjdCNsaWNlbnNlXG4gICAqL1xuICByZWFkb25seSBsaWNlbnNlPzogYW55O1xuXG4gIC8qKlxuICAgKiBSZWxhdGl2ZSBwYXRocyBvciBnbG9icyB0byBwYXRocyBvZiBsaWNlbnNlIGZpbGVzLiBDYW4gYmUgYW4gZW1wdHkgbGlzdC5cbiAgICpcbiAgICogQHNjaGVtYSBQeXByb2plY3RUb21sUHJvamVjdCNsaWNlbnNlLWZpbGVzXG4gICAqL1xuICByZWFkb25seSBsaWNlbnNlRmlsZXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogUGVvcGxlIG9yIG9yZ2FuaXphdGlvbnMgY29uc2lkZXJlZCBhcyAnYXV0aG9ycycgb2YgdGhlIHByb2plY3QuIEVhY2ggYXV0aG9yIGlzIGEgdGFibGUgd2l0aCBgbmFtZWAga2V5LCBgZW1haWxgIGtleSwgb3IgYm90aC5cbiAgICpcbiAgICogQHNjaGVtYSBQeXByb2plY3RUb21sUHJvamVjdCNhdXRob3JzXG4gICAqL1xuICByZWFkb25seSBhdXRob3JzPzogUHJvamVjdEF1dGhvcltdO1xuXG4gIC8qKlxuICAgKiBQZW9wbGUgb3Igb3JnYW5pemF0aW9ucyBjb25zaWRlcmVkIGFzICdtYWludGFpbmVycycgb2YgdGhlIHByb2plY3QuIEVhY2ggbWFpbnRhaW5lciBpcyBhIHRhYmxlIHdpdGggYG5hbWVgIGtleSwgYGVtYWlsYCBrZXksIG9yIGJvdGguXG4gICAqXG4gICAqIEBzY2hlbWEgUHlwcm9qZWN0VG9tbFByb2plY3QjbWFpbnRhaW5lcnNcbiAgICovXG4gIHJlYWRvbmx5IG1haW50YWluZXJzPzogUHJvamVjdEF1dGhvcltdO1xuXG4gIC8qKlxuICAgKiBMaXN0IG9mIGtleXdvcmRzIG9yIHRhZ3MgdGhhdCBkZXNjcmliZSB0aGUgcHJvamVjdC4gVGhleSBjb3VsZCBiZSB1c2VkIGJ5IHNlYXJjaCBlbmdpbmVzIHRvIGNhdGVnb3JpemUgdGhlIHByb2plY3QuXG4gICAqXG4gICAqIEBzY2hlbWEgUHlwcm9qZWN0VG9tbFByb2plY3Qja2V5d29yZHNcbiAgICovXG4gIHJlYWRvbmx5IGtleXdvcmRzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIExpc3Qgb2YgW1Ryb3ZlIGNsYXNzaWZpZXJzXShodHRwczovL3B5cGkub3JnL2NsYXNzaWZpZXJzLykgdGhhdCBkZXNjcmliZSB0aGUgcHJvamVjdC4gUHlQSSB1c2UgdGhlIGNsYXNzaWZpZXJzIHRvIGNhdGVnb3JpemUgcHJvamVjdHMuXG4gICAqXG4gICAqIEBzY2hlbWEgUHlwcm9qZWN0VG9tbFByb2plY3QjY2xhc3NpZmllcnNcbiAgICovXG4gIHJlYWRvbmx5IGNsYXNzaWZpZXJzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRhYmxlIGNvbnNpc3Rpbmcgb25lIG9yIG11bHRpcGxlIGBsYWJlbDogVVJMYCBwYWlycy4gQ29tbW9uIGluZGV4ZXMgbGlrZSBQeVBJIHVzZXMgW3dlbGwta25vd24gUHJvamVjdCBVUkxzXShodHRwczovL3BhY2thZ2luZy5weXRob24ub3JnL2VuL2xhdGVzdC9zcGVjaWZpY2F0aW9ucy93ZWxsLWtub3duLXByb2plY3QtdXJscy8jd2VsbC1rbm93bi1sYWJlbHMpIHdoZW4gcHJlc2VudGluZyBwcm9qZWN0IHBhZ2VzLlxuICAgKlxuICAgKiBAc2NoZW1hIFB5cHJvamVjdFRvbWxQcm9qZWN0I3VybHNcbiAgICovXG4gIHJlYWRvbmx5IHVybHM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBUYWJsZSBvZiBbZW50cnkgcG9pbnRzXShodHRwczovL3BhY2thZ2luZy5weXRob24ub3JnL2VuL2xhdGVzdC9zcGVjaWZpY2F0aW9ucy9lbnRyeS1wb2ludHMvKSB0aGF0IGFsbG93cyBwYWNrYWdlIGluc3RhbGxlcnMgdG8gY3JlYXRlIGEgY29tbWFuZC1saW5lIHdyYXBwZXIgZm9yLiBFYWNoIGtleSBpcyB0aGUgbmFtZSBvZiB0aGUgc2NyaXB0IHRvIGJlIGNyZWF0ZWQsIGFuZCBlYWNoIHZhbHVlIGlzIHRoZSBmdW5jdGlvbiBvciBvYmplY3QgdG8gYWxsLCBpbiBmb3JtIG9mIGVpdGhlciBgaW1wb3J0YWJsZS5tb2R1bGVgIG9yIGBpbXBvcnRhYmxlLm1vZHVsZTpvYmplY3QuYXR0cmAuIFdpbmRvd3MgcGxhdGZvcm0gdHJlYXRzIGBjb25zb2xlX3NjcmlwdHNgIHNwZWNpYWxseSBpbiB0aGF0IHRoZXkgYXJlIHdyYXBwZWQgaW4gYSBjb25zb2xlIGV4ZWN1dGFibGUsIHNvIHRoZXkgYXJlIGF0dGFjaGVkIHRvIGEgY29uc29sZSBhbmQgY2FuIHVzZSBgc3lzLnN0ZGluYCwgYHN5cy5zdGRvdXRgIGFuZCBgc3lzLnN0ZGVycmAgZm9yIEkvTy5cbiAgICpcbiAgICogQHNjaGVtYSBQeXByb2plY3RUb21sUHJvamVjdCNzY3JpcHRzXG4gICAqL1xuICByZWFkb25seSBzY3JpcHRzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogVGFibGUgb2YgW2VudHJ5IHBvaW50c10oaHR0cHM6Ly9wYWNrYWdpbmcucHl0aG9uLm9yZy9lbi9sYXRlc3Qvc3BlY2lmaWNhdGlvbnMvZW50cnktcG9pbnRzLykgdGhhdCBhbGxvd3MgcGFja2FnZSBpbnN0YWxsZXJzIHRvIGNyZWF0ZSBhIEdVSSB3cmFwcGVyIGZvci4gRWFjaCBrZXkgaXMgdGhlIG5hbWUgb2YgdGhlIHNjcmlwdCB0byBiZSBjcmVhdGVkLCBhbmQgZWFjaCB2YWx1ZSBpcyB0aGUgZnVuY3Rpb24gb3Igb2JqZWN0IHRvIGFsbCwgaW4gZm9ybSBvZiBlaXRoZXIgYGltcG9ydGFibGUubW9kdWxlYCBvciBgaW1wb3J0YWJsZS5tb2R1bGU6b2JqZWN0LmF0dHJgLiBXaW5kb3dzIHBsYXRmb3JtIHRyZWF0cyBgZ3VpX3NjcmlwdHNgIHNwZWNpYWxseSBpbiB0aGF0IHRoZXkgYXJlIHdyYXBwZWQgaW4gYSBHVUkgZXhlY3V0YWJsZSwgc28gdGhleSBjYW4gYmUgc3RhcnRlZCB3aXRob3V0IGEgY29uc29sZSwgYnV0IGNhbm5vdCB1c2Ugc3RhbmRhcmQgc3RyZWFtcyB1bmxlc3MgYXBwbGljYXRpb24gY29kZSByZWRpcmVjdHMgdGhlbS5cbiAgICpcbiAgICogQHNjaGVtYSBQeXByb2plY3RUb21sUHJvamVjdCNndWktc2NyaXB0c1xuICAgKi9cbiAgcmVhZG9ubHkgZ3VpU2NyaXB0cz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIEV4dHJhIFtlbnRyeSBwb2ludCBncm91cHNdKGh0dHBzOi8vcGFja2FnaW5nLnB5dGhvbi5vcmcvZW4vbGF0ZXN0L3NwZWNpZmljYXRpb25zL2VudHJ5LXBvaW50cy8pIHRoYXQgYWxsb3cgYXBwbGljYXRpb25zIHRvIGxvYWQgcGx1Z2lucy4gRm9yIGV4YW1wbGUsIFB5Z21lbnRzIChhIHN5bnRheCBoaWdobGlnaHRpbmcgdG9vbCkgY2FuIHVzZSBhZGRpdGlvbmFsIHN0eWxlcyBmcm9tIHNlcGFyYXRlbHkgaW5zdGFsbGVkIHBhY2thZ2VzIHRocm91Z2ggYFtwcm9qZWN0LmVudHJ5LXBvaW50cy5cInB5Z21lbnRzLnN0eWxlc1wiXWAuIEVhY2gga2V5IGlzIHRoZSBuYW1lIG9mIHRoZSBlbnRyeS1wb2ludCBncm91cCwgYW5kIGVhY2ggdmFsdWUgaXMgYSB0YWJsZSBvZiBlbnRyeSBwb2ludHMuXG4gICAqXG4gICAqIEBzY2hlbWEgUHlwcm9qZWN0VG9tbFByb2plY3QjZW50cnktcG9pbnRzXG4gICAqL1xuICByZWFkb25seSBlbnRyeVBvaW50cz86IGFueTtcblxuICAvKipcbiAgICogQW4gYXJyYXkgb2YgW2RlcGVuZGVuY3kgc3BlY2lmaWVyXShodHRwczovL3BhY2thZ2luZy5weXRob24ub3JnL2VuL2xhdGVzdC9zcGVjaWZpY2F0aW9ucy9kZXBlbmRlbmN5LXNwZWNpZmllcnMvKSBzdHJpbmdzLCBlYWNoIHJlcHJlc2VudGluZyBhIG1hbmRhdG9yeSBkZXBlbmRlbnQgcGFja2FnZSBvZiB0aGUgcHJvamVjdC5cbiAgICpcbiAgICogQHNjaGVtYSBQeXByb2plY3RUb21sUHJvamVjdCNkZXBlbmRlbmNpZXNcbiAgICovXG4gIHJlYWRvbmx5IGRlcGVuZGVuY2llcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBFYWNoIGVudHJ5IGlzIGEga2V5L3ZhbHVlIHBhaXIsIHdpdGggdGhlIGtleSBzcGVjaWZ5aW5nIFtleHRyYSBmZWF0dXJlIG5hbWVdKGh0dHBzOi8vcGFja2FnaW5nLnB5dGhvbi5vcmcvZW4vbGF0ZXN0L3NwZWNpZmljYXRpb25zL2NvcmUtbWV0YWRhdGEvI3Byb3ZpZGVzLWV4dHJhLW11bHRpcGxlLXVzZSkgKHN1Y2ggYXMgYHNvY2tzYCBpbiBgcmVxdWVzdHNbc29ja3NdYCksIGFuZCB2YWx1ZSBpcyBhbiBhcnJheSBvZiBbZGVwZW5kZW5jeSBzcGVjaWZpZXJdKGh0dHBzOi8vcGFja2FnaW5nLnB5dGhvbi5vcmcvZW4vbGF0ZXN0L3NwZWNpZmljYXRpb25zL2RlcGVuZGVuY3ktc3BlY2lmaWVycy8pIHN0cmluZ3MuXG4gICAqXG4gICAqIEBzY2hlbWEgUHlwcm9qZWN0VG9tbFByb2plY3Qjb3B0aW9uYWwtZGVwZW5kZW5jaWVzXG4gICAqL1xuICByZWFkb25seSBvcHRpb25hbERlcGVuZGVuY2llcz86IGFueTtcblxuICAvKipcbiAgICogQW4gYXJyYXkgb2Ygc3RyaW5ncyBzcGVjaWZ5aW5nIHRoZSBpbXBvcnQgbmFtZXMgdGhhdCB0aGUgcHJvamVjdCBleGNsdXNpdmVseSBwcm92aWRlcyB3aGVuIGluc3RhbGxlZC5cbiAgICpcbiAgICogQHNjaGVtYSBQeXByb2plY3RUb21sUHJvamVjdCNpbXBvcnQtbmFtZXNcbiAgICovXG4gIHJlYWRvbmx5IGltcG9ydE5hbWVzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEFuIGFycmF5IG9mIHN0cmluZ3Mgc3BlY2lmeWluZyB0aGUgaW1wb3J0IG5hbWVzIHRoYXQgdGhlIHByb2plY3QgcHJvdmlkZXMgd2hlbiBpbnN0YWxsZWQsIGJ1dCBub3QgZXhjbHVzaXZlbHkuXG4gICAqXG4gICAqIEBzY2hlbWEgUHlwcm9qZWN0VG9tbFByb2plY3QjaW1wb3J0LW5hbWVzcGFjZXNcbiAgICovXG4gIHJlYWRvbmx5IGltcG9ydE5hbWVzcGFjZXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHdoaWNoIGtleXMgYXJlIGludGVudGlvbmFsbHkgdW5zcGVjaWZpZWQgdW5kZXIgYFtwcm9qZWN0XWAgdGFibGUgc28gYnVpbGQgYmFja2VuZCBjYW4vd2lsbCBwcm92aWRlIHN1Y2ggbWV0YWRhdGEgZHluYW1pY2FsbHkuIEVhY2gga2V5IG11c3QgYmUgbGlzdGVkIG9ubHkgb25jZS4gSXQgaXMgYW4gZXJyb3IgdG8gYm90aCBsaXN0IGEga2V5IGluIGBkeW5hbWljYCBhbmQgdXNlIHRoZSBrZXkgZGlyZWN0bHkgaW4gYFtwcm9qZWN0XWAgdW5sZXNzIHRoZSBrZXkgaXMgYSBsaXN0IG9yIHRhYmxlIHdpdGggYXJiaXRyYXJ5IGVudHJpZXMgKFBFUCA4MDgpLCBpbiB3aGljaCBjYXNlIHRoZSBidWlsZCBiYWNrZW5kIG1heSBleHRlbmQgaXQuXG4gICAqIE9uZSBvZiB0aGUgbW9zdCBjb21tb24gdXNhZ2UgaXMgYHZlcnNpb25gLCB3aGljaCBhbGxvd3MgYnVpbGQgYmFja2VuZCB0byByZXRyaWV2ZSBwcm9qZWN0IHZlcnNpb24gZnJvbSBzb3VyY2UgY29kZSBvciB2ZXJzaW9uIGNvbnRyb2wgc3lzdGVtIGluc3RlYWQgb2YgaGFyZGNvZGluZyBpdCBpbiBgcHlwcm9qZWN0LnRvbWxgLlxuICAgKlxuICAgKiBAc2NoZW1hIFB5cHJvamVjdFRvbWxQcm9qZWN0I2R5bmFtaWNcbiAgICovXG4gIHJlYWRvbmx5IGR5bmFtaWM/OiBQeXByb2plY3RUb21sUHJvamVjdER5bmFtaWNbXTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnUHlwcm9qZWN0VG9tbFByb2plY3QnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKiBAaW50ZXJuYWxcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9QeXByb2plY3RUb21sUHJvamVjdChvYmo6IFB5cHJvamVjdFRvbWxQcm9qZWN0IHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnbmFtZSc6IG9iai5uYW1lLFxuICAgICd2ZXJzaW9uJzogb2JqLnZlcnNpb24sXG4gICAgJ2Rlc2NyaXB0aW9uJzogb2JqLmRlc2NyaXB0aW9uLFxuICAgICdyZWFkbWUnOiBvYmoucmVhZG1lLFxuICAgICdyZXF1aXJlcy1weXRob24nOiBvYmoucmVxdWlyZXNQeXRob24sXG4gICAgJ2xpY2Vuc2UnOiBvYmoubGljZW5zZSxcbiAgICAnbGljZW5zZS1maWxlcyc6IG9iai5saWNlbnNlRmlsZXM/Lm1hcCh5ID0+IHkpLFxuICAgICdhdXRob3JzJzogb2JqLmF1dGhvcnM/Lm1hcCh5ID0+IHRvSnNvbl9Qcm9qZWN0QXV0aG9yKHkpKSxcbiAgICAnbWFpbnRhaW5lcnMnOiBvYmoubWFpbnRhaW5lcnM/Lm1hcCh5ID0+IHRvSnNvbl9Qcm9qZWN0QXV0aG9yKHkpKSxcbiAgICAna2V5d29yZHMnOiBvYmoua2V5d29yZHM/Lm1hcCh5ID0+IHkpLFxuICAgICdjbGFzc2lmaWVycyc6IG9iai5jbGFzc2lmaWVycz8ubWFwKHkgPT4geSksXG4gICAgJ3VybHMnOiAoKG9iai51cmxzKSA9PT0gdW5kZWZpbmVkKSA/IHVuZGVmaW5lZCA6IChPYmplY3QuZW50cmllcyhvYmoudXJscykucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KSksXG4gICAgJ3NjcmlwdHMnOiAoKG9iai5zY3JpcHRzKSA9PT0gdW5kZWZpbmVkKSA/IHVuZGVmaW5lZCA6IChPYmplY3QuZW50cmllcyhvYmouc2NyaXB0cykucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KSksXG4gICAgJ2d1aS1zY3JpcHRzJzogKChvYmouZ3VpU2NyaXB0cykgPT09IHVuZGVmaW5lZCkgPyB1bmRlZmluZWQgOiAoT2JqZWN0LmVudHJpZXMob2JqLmd1aVNjcmlwdHMpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSkpLFxuICAgICdlbnRyeS1wb2ludHMnOiBvYmouZW50cnlQb2ludHMsXG4gICAgJ2RlcGVuZGVuY2llcyc6IG9iai5kZXBlbmRlbmNpZXM/Lm1hcCh5ID0+IHkpLFxuICAgICdvcHRpb25hbC1kZXBlbmRlbmNpZXMnOiBvYmoub3B0aW9uYWxEZXBlbmRlbmNpZXMsXG4gICAgJ2ltcG9ydC1uYW1lcyc6IG9iai5pbXBvcnROYW1lcz8ubWFwKHkgPT4geSksXG4gICAgJ2ltcG9ydC1uYW1lc3BhY2VzJzogb2JqLmltcG9ydE5hbWVzcGFjZXM/Lm1hcCh5ID0+IHkpLFxuICAgICdkeW5hbWljJzogb2JqLmR5bmFtaWM/Lm1hcCh5ID0+IHkpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5cbi8qKlxuICogTmFtZWQgZ3JvdXBzIG9mIGRlcGVuZGVuY2llcywgc2ltaWxhciB0byBgcmVxdWlyZW1lbnRzLnR4dGAgZmlsZXMsIHdoaWNoIGxhdW5jaGVycywgSURFcywgYW5kIG90aGVyIHRvb2xzIGNhbiBmaW5kIGFuZCBpZGVudGlmeSBieSBuYW1lLiBFYWNoIGl0ZW0gaW4gYFtkZXBlbmRlbmN5LWdyb3Vwc11gIGlzIGRlZmluZWQgYXMgbWFwcGluZyBvZiBncm91cCBuYW1lIHRvIGxpc3Qgb2YgW2RlcGVuZGVuY3kgc3BlY2lmaWVyc10oaHR0cHM6Ly9wYWNrYWdpbmcucHl0aG9uLm9yZy9lbi9sYXRlc3Qvc3BlY2lmaWNhdGlvbnMvZGVwZW5kZW5jeS1zcGVjaWZpZXJzLykuXG4gKlxuICogQHNjaGVtYSBQeXByb2plY3RUb21sRGVwZW5kZW5jeUdyb3Vwc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFB5cHJvamVjdFRvbWxEZXBlbmRlbmN5R3JvdXBzIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgUHlwcm9qZWN0VG9tbERlcGVuZGVuY3lHcm91cHMjZGV2XG4gICAqL1xuICByZWFkb25seSBkZXY/OiBhbnlbXTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnUHlwcm9qZWN0VG9tbERlcGVuZGVuY3lHcm91cHMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKiBAaW50ZXJuYWxcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9QeXByb2plY3RUb21sRGVwZW5kZW5jeUdyb3VwcyhvYmo6IFB5cHJvamVjdFRvbWxEZXBlbmRlbmN5R3JvdXBzIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnZGV2Jzogb2JqLmRldj8ubWFwKHkgPT4geSksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBEZWNsYXJlcyBhbnkgUHl0aG9uIGxldmVsIGRlcGVuZGVuY2llcyB0aGF0IG11c3QgYmUgaW5zdGFsbGVkIGluIG9yZGVyIHRvIHJ1biB0aGUgcHJvamVjdOKAmXMgYnVpbGQgc3lzdGVtIHN1Y2Nlc3NmdWxseS5cbiAqXG4gKiBAc2NoZW1hIEJ1aWxkU3lzdGVtXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRTeXN0ZW0ge1xuICAvKipcbiAgICogTGlzdCBvZiBzdHJpbmdzIGZvbGxvd2luZyB0aGUgdmVyc2lvbiBzcGVjaWZpZXIgc3BlY2lmaWNhdGlvbiwgcmVwcmVzZW50aW5nIGRlcGVuZGVuY2llcyByZXF1aXJlZCB0byBleGVjdXRlIHRoZSBidWlsZCBzeXN0ZW0uXG4gICAqXG4gICAqIEBzY2hlbWEgQnVpbGRTeXN0ZW0jcmVxdWlyZXNcbiAgICovXG4gIHJlYWRvbmx5IHJlcXVpcmVzOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogU3RyaW5nIGlzIGZvcm1hdHRlZCBmb2xsb3dpbmcgdGhlIHNhbWUgYG1vZHVsZTpvYmplY3RgIHN5bnRheCBhcyBhIGBzZXR1cHRvb2xzYCBlbnRyeSBwb2ludC4gSXTigJlzIGFsc28gbGVnYWwgdG8gbGVhdmUgb3V0IHRoZSBgOm9iamVjdGAgcGFydC5cbiAgICpcbiAgICogQHNjaGVtYSBCdWlsZFN5c3RlbSNidWlsZC1iYWNrZW5kXG4gICAqL1xuICByZWFkb25seSBidWlsZEJhY2tlbmQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIGxpc3Qgb2YgZGlyZWN0b3JpZXMgdG8gcHJlcGVuZCB0byBgc3lzLnBhdGhgIHdoZW4gbG9hZGluZyB0aGUgYnVpbGQgYmFja2VuZCwgcmVsYXRpdmUgdG8gcHJvamVjdCByb290XG4gICAqXG4gICAqIEBzY2hlbWEgQnVpbGRTeXN0ZW0jYmFja2VuZC1wYXRoXG4gICAqL1xuICByZWFkb25seSBiYWNrZW5kUGF0aD86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdCdWlsZFN5c3RlbScgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqIEBpbnRlcm5hbFxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0J1aWxkU3lzdGVtKG9iajogQnVpbGRTeXN0ZW0gfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdyZXF1aXJlcyc6IG9iai5yZXF1aXJlcz8ubWFwKHkgPT4geSksXG4gICAgJ2J1aWxkLWJhY2tlbmQnOiBvYmouYnVpbGRCYWNrZW5kLFxuICAgICdiYWNrZW5kLXBhdGgnOiBvYmouYmFja2VuZFBhdGg/Lm1hcCh5ID0+IHkpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5cbi8qKlxuICogRXZlcnkgdG9vbCB0aGF0IGlzIHVzZWQgYnkgdGhlIHByb2plY3QgY2FuIGhhdmUgdXNlcnMgc3BlY2lmeSBjb25maWd1cmF0aW9uIGRhdGEgYXMgbG9uZyBhcyB0aGV5IHVzZSBhIHN1Yi10YWJsZSB3aXRoaW4gYFt0b29sXWAuIEdlbmVyYWxseSBhIHByb2plY3QgY2FuIHVzZSB0aGUgc3VidGFibGUgYHRvb2wuJE5BTUVgIGlmLCBhbmQgb25seSBpZiwgdGhleSBvd24gdGhlIGVudHJ5IGZvciBgJE5BTUVgIGluIHRoZSBDaGVlc2VzaG9wL1B5UEkuXG4gKlxuICogQHNjaGVtYSBQeXByb2plY3RUb21sVG9vbFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFB5cHJvamVjdFRvbWxUb29sIHtcbiAgLyoqXG4gICAqIFRoZSB1bmNvbXByb21pc2luZyBQeXRob24gY29kZSBmb3JtYXR0ZXIuXG4gICAqXG4gICAqIEBzY2hlbWEgUHlwcm9qZWN0VG9tbFRvb2wjYmxhY2tcbiAgICovXG4gIHJlYWRvbmx5IGJsYWNrPzogYW55O1xuXG4gIC8qKlxuICAgKiBCdWlsZCBQeXRob24gd2hlZWxzIGZvciBhbGwgcGxhdGZvcm1zLlxuICAgKlxuICAgKiBAc2NoZW1hIFB5cHJvamVjdFRvbWxUb29sI2NpYnVpbGR3aGVlbFxuICAgKi9cbiAgcmVhZG9ubHkgY2lidWlsZHdoZWVsPzogYW55O1xuXG4gIC8qKlxuICAgKiBGYXN0QVBJIHdlYiBmcmFtZXdvcmsgY29uZmlndXJhdGlvbi5cbiAgICpcbiAgICogQHNjaGVtYSBQeXByb2plY3RUb21sVG9vbCNmYXN0YXBpXG4gICAqL1xuICByZWFkb25seSBmYXN0YXBpPzogYW55O1xuXG4gIC8qKlxuICAgKiBTY2hlZHVsZWQgam9icyBpbiBQeXRob24ncyBgcHlwcm9qZWN0LnRvbWxgLlxuICAgKlxuICAgKiBUaGlzIGlzIGEgc3BlY2lmaWNhdGlvbiBmb3IgZGVjbGFyaW5nIHJlY3VycmluZyBzY2hlZHVsZWQgam9icyBpbiBQeXRob24gcHJvamVjdHMsIGluIGBweXByb2plY3QudG9tbGAuXG4gICAqXG4gICAqIEl0IGRlZmluZXMgaG93IGpvYnMgYXJlIGRlY2xhcmVkIGFuZCBob3cgcHJvdmlkZXJzIHdvdWxkIHJ1biB0aGVtLlxuICAgKlxuICAgKiBJdCBkb2VzIG5vdCBwcm92aWRlIGEgc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gZm9yIHJ1bm5pbmcgc2NoZWR1bGVkIGpvYnMsIGJlY2F1c2UgdGhhdCBpcyBwcm92aWRlciBzcGVjaWZpYy5cbiAgICpcbiAgICogRm9yIGV4YW1wbGUsIGEgZmlsZSBhdCBgYXBwL2pvYnMucHlgIGNvdWxkIGRlZmluZTpcbiAgICpcbiAgICogYGBgcHl0aG9uXG4gICAqIGRlZiBjbGVhbl9maWxlcygpOlxuICAgKiBwcmludChcIlJ1bm5pbmcgY2xlYW51cC4uLlwiKVxuICAgKiBgYGBcbiAgICpcbiAgICogWW91IGNvdWxkIGRlZmluZSBhIHNjaGVkdWxlZCBqb2IgdG8gcnVuIHRoYXQgZnVuY3Rpb24gb25jZSBwZXIgZGF5IHdpdGg6XG4gICAqXG4gICAqIGBgYHRvbWxcbiAgICogW3Rvb2wuc2NoZWR1bGVkLmNsZWFuLWZpbGVzXVxuICAgKiBldmVyeSA9IFwiZGF5XCJcbiAgICogZW50cnlwb2ludCA9IFwiYXBwLmpvYnM6Y2xlYW5fZmlsZXNcIlxuICAgKiBgYGBcbiAgICpcbiAgICogQHNjaGVtYSBQeXByb2plY3RUb21sVG9vbCNzY2hlZHVsZWRcbiAgICovXG4gIHJlYWRvbmx5IHNjaGVkdWxlZD86IGFueTtcblxuICAvKipcbiAgICogT3B0aW9uYWwgc3RhdGljIHR5cGluZyBmb3IgUHl0aG9uLlxuICAgKlxuICAgKiBAc2NoZW1hIFB5cHJvamVjdFRvbWxUb29sI215cHlcbiAgICovXG4gIHJlYWRvbmx5IG15cHk/OiBhbnk7XG5cbiAgLyoqXG4gICAqIEFuIGV4dHJlbWVseSBmYXN0IFB5dGhvbiBsaW50ZXIgYW5kIGZvcm1hdHRlciwgd3JpdHRlbiBpbiBSdXN0LlxuICAgKlxuICAgKiBAc2NoZW1hIFB5cHJvamVjdFRvbWxUb29sI3J1ZmZcbiAgICovXG4gIHJlYWRvbmx5IHJ1ZmY/OiBhbnk7XG5cbiAgLyoqXG4gICAqIEFuIGV4dHJlbWVseSBmYXN0IFB5dGhvbiB0eXBlIGNoZWNrZXIsIHdyaXR0ZW4gaW4gUnVzdC5cbiAgICpcbiAgICogQHNjaGVtYSBQeXByb2plY3RUb21sVG9vbCN0eVxuICAgKi9cbiAgcmVhZG9ubHkgdHk/OiBhbnk7XG5cbiAgLyoqXG4gICAqIE1vZGVybiwgZXh0ZW5zaWJsZSBQeXRob24gcHJvamVjdCBtYW5hZ2VtZW50LlxuICAgKlxuICAgKiBAc2NoZW1hIFB5cHJvamVjdFRvbWxUb29sI2hhdGNoXG4gICAqL1xuICByZWFkb25seSBoYXRjaD86IGFueTtcblxuICAvKipcbiAgICogQnVpbGQgYW5kIHB1Ymxpc2ggY3JhdGVzIHdpdGggcHlvMywgY2ZmaSBhbmQgdW5pZmZpIGJpbmRpbmdzIGFzIHdlbGwgYXMgcnVzdCBiaW5hcmllcyBhcyBweXRob24gcGFja2FnZXNcbiAgICpcbiAgICogQHNjaGVtYSBQeXByb2plY3RUb21sVG9vbCNtYXR1cmluXG4gICAqL1xuICByZWFkb25seSBtYXR1cmluPzogYW55O1xuXG4gIC8qKlxuICAgKiBJbXByb3ZlZCBidWlsZCBzeXN0ZW0gZ2VuZXJhdG9yIGZvciBQeXRob24gQy9DKysvRm9ydHJhbiBleHRlbnNpb25zXG4gICAqXG4gICAqIEBzY2hlbWEgUHlwcm9qZWN0VG9tbFRvb2wjc2Npa2l0LWJ1aWxkXG4gICAqL1xuICByZWFkb25seSBzY2lraXRCdWlsZD86IGFueTtcblxuICAvKipcbiAgICogRWFzaWx5IGRvd25sb2FkLCBidWlsZCwgaW5zdGFsbCwgdXBncmFkZSwgYW5kIHVuaW5zdGFsbCBQeXRob24gcGFja2FnZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgUHlwcm9qZWN0VG9tbFRvb2wjc2V0dXB0b29sc1xuICAgKi9cbiAgcmVhZG9ubHkgc2V0dXB0b29scz86IGFueTtcblxuICAvKipcbiAgICogTWFuYWdlIFB5dGhvbiBwYWNrYWdlIHZlcnNpb25zIHVzaW5nIFNDTSAoZS5nLiBHaXQpLlxuICAgKlxuICAgKiBAc2NoZW1hIFB5cHJvamVjdFRvbWxUb29sI3NldHVwdG9vbHNfc2NtXG4gICAqL1xuICByZWFkb25seSBzZXR1cHRvb2xzU2NtPzogYW55O1xuXG4gIC8qKlxuICAgKiBBIHBhY2thZ2UgbWFuYWdlciBhbmQgdGFzayBydW5uZXIuXG4gICAqXG4gICAqIEBzY2hlbWEgUHlwcm9qZWN0VG9tbFRvb2wjcGl4aVxuICAgKi9cbiAgcmVhZG9ubHkgcGl4aT86IGFueTtcblxuICAvKipcbiAgICogQSB0YXNrIHJ1bm5lciB0aGF0IHdvcmtzIHdlbGwgd2l0aCBgcHlwcm9qZWN0LnRvbWxgIGZpbGVzLlxuICAgKlxuICAgKiBAc2NoZW1hIFB5cHJvamVjdFRvbWxUb29sI3BvZVxuICAgKi9cbiAgcmVhZG9ubHkgcG9lPzogYW55O1xuXG4gIC8qKlxuICAgKiBQeXRob24gZGVwZW5kZW5jeSBtYW5hZ2VtZW50IGFuZCBwYWNrYWdpbmcgbWFkZSBlYXN5LlxuICAgKlxuICAgKiBAc2NoZW1hIFB5cHJvamVjdFRvbWxUb29sI3BvZXRyeVxuICAgKi9cbiAgcmVhZG9ubHkgcG9ldHJ5PzogYW55O1xuXG4gIC8qKlxuICAgKiBBIG1vZGVybiBQeXRob24gcGFja2FnZSBtYW5hZ2VyIHdpdGggUEVQIDYyMSBzdXBwb3J0LlxuICAgKlxuICAgKiBAc2NoZW1hIFB5cHJvamVjdFRvbWxUb29sI3BkbVxuICAgKi9cbiAgcmVhZG9ubHkgcGRtPzogYW55O1xuXG4gIC8qKlxuICAgKiBTdGF0aWMgdHlwZSBjaGVja2VyIGZvciBQeXRob24uXG4gICAqXG4gICAqIEBzY2hlbWEgUHlwcm9qZWN0VG9tbFRvb2wjcHlyaWdodFxuICAgKi9cbiAgcmVhZG9ubHkgcHlyaWdodD86IGFueTtcblxuICAvKipcbiAgICogU3RhbmRhcmRpemVkIGF1dG9tYXRlZCB0ZXN0aW5nIG9mIFB5dGhvbiBwYWNrYWdlc1xuICAgKlxuICAgKiBAc2NoZW1hIFB5cHJvamVjdFRvbWxUb29sI3B5dGVzdFxuICAgKi9cbiAgcmVhZG9ubHkgcHl0ZXN0PzogYW55O1xuXG4gIC8qKlxuICAgKiBSZXZpZXcgYSByZXBvc2l0b3J5IGZvciBiZXN0IHByYWN0aWNlcy5cbiAgICpcbiAgICogQHNjaGVtYSBQeXByb2plY3RUb21sVG9vbCNyZXBvLXJldmlld1xuICAgKi9cbiAgcmVhZG9ubHkgcmVwb1Jldmlldz86IGFueTtcblxuICAvKipcbiAgICogVGhlIGNvbXBsZW1lbnRhcnkgdGFzayBydW5uZXIgZm9yIHB5dGhvbi5cbiAgICpcbiAgICogQHNjaGVtYSBQeXByb2plY3RUb21sVG9vbCN0YXNraXB5XG4gICAqL1xuICByZWFkb25seSB0YXNraXB5PzogYW55O1xuXG4gIC8qKlxuICAgKiBUb21iaSBpcyBhIHRvb2xraXQgZm9yIFRPTUw7IHByb3ZpZGluZyBhIGZvcm1hdHRlci9saW50ZXIgYW5kIGxhbmd1YWdlIHNlcnZlclxuICAgKlxuICAgKiBAc2NoZW1hIFB5cHJvamVjdFRvbWxUb29sI3RvbWJpXG4gICAqL1xuICByZWFkb25seSB0b21iaT86IGFueTtcblxuICAvKipcbiAgICogU3RhbmRhcmRpemVkIGF1dG9tYXRlZCB0ZXN0aW5nIG9mIFB5dGhvbiBwYWNrYWdlc1xuICAgKlxuICAgKiBAc2NoZW1hIFB5cHJvamVjdFRvbWxUb29sI3RveFxuICAgKi9cbiAgcmVhZG9ubHkgdG94PzogYW55O1xuXG4gIC8qKlxuICAgKiBBbiBleHRyZW1lbHkgZmFzdCBQeXRob24gcGFja2FnZSBpbnN0YWxsZXIgYW5kIHJlc29sdmVyLCB3cml0dGVuIGluIFJ1c3QuXG4gICAqXG4gICAqIEBzY2hlbWEgUHlwcm9qZWN0VG9tbFRvb2wjdXZcbiAgICovXG4gIHJlYWRvbmx5IHV2PzogYW55O1xuXG4gIC8qKlxuICAgKiBBIENMSSB0b29sIHRvIGNoZWNrIGFuZCB2YWxpZGF0ZSBQeXRob24gZG9jc3RyaW5nIGZvcm1hdHRpbmcgYW5kIGNvbXBsZXRlbmVzc1xuICAgKlxuICAgKiBAc2NoZW1hIFB5cHJvamVjdFRvbWxUb29sI2RmY1xuICAgKi9cbiAgcmVhZG9ubHkgZGZjPzogYW55O1xuXG4gIC8qKlxuICAgKiBBIENMSSB0b29sIHRvIGNoZWNrIGFuZCB2YWxpZGF0ZSBQeXRob24gZG9jc3RyaW5nIGZvcm1hdHRpbmcgYW5kIGNvbXBsZXRlbmVzc1xuICAgKlxuICAgKiBAc2NoZW1hIFB5cHJvamVjdFRvbWxUb29sI2RvY3N0cmluZy1mb3JtYXQtY2hlY2tlclxuICAgKi9cbiAgcmVhZG9ubHkgZG9jc3RyaW5nRm9ybWF0Q2hlY2tlcj86IGFueTtcblxuICAvKipcbiAgICogQSBDTEkgdG9vbCB0byBydW4gY29kZSBmaWxlcyBpbnN0YW50bHkgd2l0aG91dCB0eXBpbmcgY29tcGxleCBjb21tYW5kcyBpbiB0ZXJtaW5hbC5cbiAgICpcbiAgICogQHNjaGVtYSBQeXByb2plY3RUb21sVG9vbCNxdWlrcnVuXG4gICAqL1xuICByZWFkb25seSBxdWlrcnVuPzogYW55O1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdQeXByb2plY3RUb21sVG9vbCcgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqIEBpbnRlcm5hbFxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX1B5cHJvamVjdFRvbWxUb29sKG9iajogUHlwcm9qZWN0VG9tbFRvb2wgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdibGFjayc6IG9iai5ibGFjayxcbiAgICAnY2lidWlsZHdoZWVsJzogb2JqLmNpYnVpbGR3aGVlbCxcbiAgICAnZmFzdGFwaSc6IG9iai5mYXN0YXBpLFxuICAgICdzY2hlZHVsZWQnOiBvYmouc2NoZWR1bGVkLFxuICAgICdteXB5Jzogb2JqLm15cHksXG4gICAgJ3J1ZmYnOiBvYmoucnVmZixcbiAgICAndHknOiBvYmoudHksXG4gICAgJ2hhdGNoJzogb2JqLmhhdGNoLFxuICAgICdtYXR1cmluJzogb2JqLm1hdHVyaW4sXG4gICAgJ3NjaWtpdC1idWlsZCc6IG9iai5zY2lraXRCdWlsZCxcbiAgICAnc2V0dXB0b29scyc6IG9iai5zZXR1cHRvb2xzLFxuICAgICdzZXR1cHRvb2xzX3NjbSc6IG9iai5zZXR1cHRvb2xzU2NtLFxuICAgICdwaXhpJzogb2JqLnBpeGksXG4gICAgJ3BvZSc6IG9iai5wb2UsXG4gICAgJ3BvZXRyeSc6IG9iai5wb2V0cnksXG4gICAgJ3BkbSc6IG9iai5wZG0sXG4gICAgJ3B5cmlnaHQnOiBvYmoucHlyaWdodCxcbiAgICAncHl0ZXN0Jzogb2JqLnB5dGVzdCxcbiAgICAncmVwby1yZXZpZXcnOiBvYmoucmVwb1JldmlldyxcbiAgICAndGFza2lweSc6IG9iai50YXNraXB5LFxuICAgICd0b21iaSc6IG9iai50b21iaSxcbiAgICAndG94Jzogb2JqLnRveCxcbiAgICAndXYnOiBvYmoudXYsXG4gICAgJ2RmYyc6IG9iai5kZmMsXG4gICAgJ2RvY3N0cmluZy1mb3JtYXQtY2hlY2tlcic6IG9iai5kb2NzdHJpbmdGb3JtYXRDaGVja2VyLFxuICAgICdxdWlrcnVuJzogb2JqLnF1aWtydW4sXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIHByb2plY3RBdXRob3JcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcm9qZWN0QXV0aG9yIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgcHJvamVjdEF1dGhvciNuYW1lXG4gICAqL1xuICByZWFkb25seSBuYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIHByb2plY3RBdXRob3IjZW1haWxcbiAgICovXG4gIHJlYWRvbmx5IGVtYWlsPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdQcm9qZWN0QXV0aG9yJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICogQGludGVybmFsXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fUHJvamVjdEF1dGhvcihvYmo6IFByb2plY3RBdXRob3IgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICduYW1lJzogb2JqLm5hbWUsXG4gICAgJ2VtYWlsJzogb2JqLmVtYWlsLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBQeXByb2plY3RUb21sUHJvamVjdER5bmFtaWNcbiAqL1xuZXhwb3J0IGVudW0gUHlwcm9qZWN0VG9tbFByb2plY3REeW5hbWljIHtcbiAgLyoqIHZlcnNpb24gKi9cbiAgVkVSU0lPTiA9IFwidmVyc2lvblwiLFxuICAvKiogZGVzY3JpcHRpb24gKi9cbiAgREVTQ1JJUFRJT04gPSBcImRlc2NyaXB0aW9uXCIsXG4gIC8qKiByZWFkbWUgKi9cbiAgUkVBRE1FID0gXCJyZWFkbWVcIixcbiAgLyoqIHJlcXVpcmVzLXB5dGhvbiAqL1xuICBSRVFVSVJFU19IWVBIRU5fUFlUSE9OID0gXCJyZXF1aXJlcy1weXRob25cIixcbiAgLyoqIGxpY2Vuc2UgKi9cbiAgTElDRU5TRSA9IFwibGljZW5zZVwiLFxuICAvKiogbGljZW5zZS1maWxlcyAqL1xuICBMSUNFTlNFX0hZUEhFTl9GSUxFUyA9IFwibGljZW5zZS1maWxlc1wiLFxuICAvKiogYXV0aG9ycyAqL1xuICBBVVRIT1JTID0gXCJhdXRob3JzXCIsXG4gIC8qKiBtYWludGFpbmVycyAqL1xuICBNQUlOVEFJTkVSUyA9IFwibWFpbnRhaW5lcnNcIixcbiAgLyoqIGtleXdvcmRzICovXG4gIEtFWVdPUkRTID0gXCJrZXl3b3Jkc1wiLFxuICAvKiogY2xhc3NpZmllcnMgKi9cbiAgQ0xBU1NJRklFUlMgPSBcImNsYXNzaWZpZXJzXCIsXG4gIC8qKiB1cmxzICovXG4gIFVSTFMgPSBcInVybHNcIixcbiAgLyoqIHNjcmlwdHMgKi9cbiAgU0NSSVBUUyA9IFwic2NyaXB0c1wiLFxuICAvKiogZ3VpLXNjcmlwdHMgKi9cbiAgR1VJX0hZUEhFTl9TQ1JJUFRTID0gXCJndWktc2NyaXB0c1wiLFxuICAvKiogZW50cnktcG9pbnRzICovXG4gIEVOVFJZX0hZUEhFTl9QT0lOVFMgPSBcImVudHJ5LXBvaW50c1wiLFxuICAvKiogZGVwZW5kZW5jaWVzICovXG4gIERFUEVOREVOQ0lFUyA9IFwiZGVwZW5kZW5jaWVzXCIsXG4gIC8qKiBvcHRpb25hbC1kZXBlbmRlbmNpZXMgKi9cbiAgT1BUSU9OQUxfSFlQSEVOX0RFUEVOREVOQ0lFUyA9IFwib3B0aW9uYWwtZGVwZW5kZW5jaWVzXCIsXG4gIC8qKiBpbXBvcnQtbmFtZXMgKi9cbiAgSU1QT1JUX0hZUEhFTl9OQU1FUyA9IFwiaW1wb3J0LW5hbWVzXCIsXG4gIC8qKiBpbXBvcnQtbmFtZXNwYWNlcyAqL1xuICBJTVBPUlRfSFlQSEVOX05BTUVTUEFDRVMgPSBcImltcG9ydC1uYW1lc3BhY2VzXCIsXG59XG4iXX0=