textlane 0.3.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/actions/addon/resolve.d.ts +1 -0
- package/build/actions/addon/resolve.js +3 -2
- package/build/actions/libc/detect.d.ts +5 -0
- package/build/actions/libc/detect.js +11 -0
- package/build/actions/run/finish.d.ts +1 -1
- package/build/actions/run/finish.js +7 -3
- package/build/generated/html.d.ts +32 -0
- package/build/generated/html.js +1 -1
- package/build/generated/md.d.ts +52 -1
- package/build/generated/md.js +15 -3
- package/build/index.js +6 -1
- package/build/models/addon.d.ts +23 -17
- package/build/models/addon.js +1 -1
- package/build/models/file.d.ts +3 -2
- package/build/models/file.js +1 -1
- package/build/models/processor.d.ts +1 -1
- package/build/models/processor.js +35 -19
- package/build/settings.d.ts +3 -1
- package/build/settings.js +14 -3
- package/package.json +9 -7
- package/skills/textlane-usage/SKILL.md +6 -2
|
@@ -4,7 +4,8 @@ export function resolveAddon(props) {
|
|
|
4
4
|
const override = props.env[ADDON_ENV];
|
|
5
5
|
if (override)
|
|
6
6
|
return override;
|
|
7
|
-
const
|
|
7
|
+
const suffix = props.libc === "musl" ? "-musl" : "";
|
|
8
|
+
const key = `${props.platform}-${props.arch}${suffix}`;
|
|
8
9
|
const platform = PLATFORMS[key];
|
|
9
10
|
if (!platform) {
|
|
10
11
|
const supported = Object.keys(PLATFORMS).join(", ");
|
|
@@ -19,4 +20,4 @@ export function resolveAddon(props) {
|
|
|
19
20
|
`--no-optional / --omit=optional so the addon for ${key} comes along.`);
|
|
20
21
|
}
|
|
21
22
|
}
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2FjdGlvbnMvYWRkb24vcmVzb2x2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUV0RSwyRkFBMkY7QUFDM0YsTUFBTSxVQUFVLFlBQVksQ0FBQyxLQU01QjtJQUNDLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUE7SUFDckMsSUFBSSxRQUFRO1FBQUUsT0FBTyxRQUFRLENBQUE7SUFFN0IsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLElBQUksS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO0lBQ25ELE1BQU0sR0FBRyxHQUFHLEdBQUcsS0FBSyxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUMsSUFBSSxHQUFHLE1BQU0sRUFBRSxDQUFBO0lBQ3RELE1BQU0sUUFBUSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUMvQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDZCxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNuRCxNQUFNLElBQUksS0FBSyxDQUNiLEdBQUcsWUFBWSxxQkFBcUIsR0FBRyxnQkFBZ0IsU0FBUyxJQUFJO1lBQ2xFLE9BQU8sU0FBUyxrREFBa0QsQ0FDckUsQ0FBQTtJQUNILENBQUM7SUFDRCxJQUFJLENBQUM7UUFDSCxPQUFPLEtBQUssQ0FBQyxjQUFjLENBQUMsR0FBRyxRQUFRLENBQUMsV0FBVyxJQUFJLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFBO0lBQzFFLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxNQUFNLElBQUksS0FBSyxDQUNiLEdBQUcsUUFBUSxDQUFDLFdBQVcsZ0NBQWdDLFlBQVksV0FBVztZQUM1RSxvREFBb0QsR0FBRyxlQUFlLENBQ3pFLENBQUE7SUFDSCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFERE9OX0VOViwgUEFDS0FHRV9OQU1FLCBQTEFURk9STVMgfSBmcm9tIFwiLi4vLi4vc2V0dGluZ3MudHNcIlxuXG4vKiogRmluZCB0aGUgdGV4dGxhbmUgYWRkb246IHRoZSBlbnYgb3ZlcnJpZGUgZmlyc3QsIGVsc2UgdGhlIG1hdGNoaW5nIHBsYXRmb3JtIHBhY2thZ2UuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUFkZG9uKHByb3BzOiB7XG4gIHBsYXRmb3JtOiBzdHJpbmdcbiAgYXJjaDogc3RyaW5nXG4gIGxpYmM6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBlbnY6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZD5cbiAgcmVzb2x2ZVBhY2thZ2U6IChzcGVjaWZpZXI6IHN0cmluZykgPT4gc3RyaW5nXG59KSB7XG4gIGNvbnN0IG92ZXJyaWRlID0gcHJvcHMuZW52W0FERE9OX0VOVl1cbiAgaWYgKG92ZXJyaWRlKSByZXR1cm4gb3ZlcnJpZGVcblxuICBjb25zdCBzdWZmaXggPSBwcm9wcy5saWJjID09PSBcIm11c2xcIiA/IFwiLW11c2xcIiA6IFwiXCJcbiAgY29uc3Qga2V5ID0gYCR7cHJvcHMucGxhdGZvcm19LSR7cHJvcHMuYXJjaH0ke3N1ZmZpeH1gXG4gIGNvbnN0IHBsYXRmb3JtID0gUExBVEZPUk1TW2tleV1cbiAgaWYgKCFwbGF0Zm9ybSkge1xuICAgIGNvbnN0IHN1cHBvcnRlZCA9IE9iamVjdC5rZXlzKFBMQVRGT1JNUykuam9pbihcIiwgXCIpXG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYCR7UEFDS0FHRV9OQU1FfSBoYXMgbm8gYWRkb24gZm9yICR7a2V5fTsgc3VwcG9ydGVkOiAke3N1cHBvcnRlZH0uIGAgK1xuICAgICAgICBgU2V0ICR7QURET05fRU5WfSB0byBhbiBhZGRvbiBidWlsdCB3aXRoIGNhcmdvIHRvIGxvYWQgaXQgYW55d2F5LmAsXG4gICAgKVxuICB9XG4gIHRyeSB7XG4gICAgcmV0dXJuIHByb3BzLnJlc29sdmVQYWNrYWdlKGAke3BsYXRmb3JtLnBhY2thZ2VOYW1lfS8ke3BsYXRmb3JtLmFkZG9ufWApXG4gIH0gY2F0Y2gge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGAke3BsYXRmb3JtLnBhY2thZ2VOYW1lfSBpcyBub3QgaW5zdGFsbGVkLiBSZWluc3RhbGwgJHtQQUNLQUdFX05BTUV9IHdpdGhvdXQgYCArXG4gICAgICAgIGAtLW5vLW9wdGlvbmFsIC8gLS1vbWl0PW9wdGlvbmFsIHNvIHRoZSBhZGRvbiBmb3IgJHtrZXl9IGNvbWVzIGFsb25nLmAsXG4gICAgKVxuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/** The C library Node runs on under Linux: glibc when its report names a glibc, else musl. */
|
|
2
|
+
export function detectLibc(props) {
|
|
3
|
+
if (props.platform !== "linux")
|
|
4
|
+
return undefined;
|
|
5
|
+
const report = props.report();
|
|
6
|
+
const header = "header" in report ? report.header : undefined;
|
|
7
|
+
if (typeof header !== "object" || header === null)
|
|
8
|
+
return "glibc";
|
|
9
|
+
return "glibcVersionRuntime" in header && header.glibcVersionRuntime ? "glibc" : "musl";
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0ZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vYWN0aW9ucy9saWJjL2RldGVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw4RkFBOEY7QUFDOUYsTUFBTSxVQUFVLFVBQVUsQ0FBQyxLQUFpRDtJQUMxRSxJQUFJLEtBQUssQ0FBQyxRQUFRLEtBQUssT0FBTztRQUFFLE9BQU8sU0FBUyxDQUFBO0lBQ2hELE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQTtJQUM3QixNQUFNLE1BQU0sR0FBRyxRQUFRLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUE7SUFDN0QsSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLElBQUksTUFBTSxLQUFLLElBQUk7UUFBRSxPQUFPLE9BQU8sQ0FBQTtJQUNqRSxPQUFPLHFCQUFxQixJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFBO0FBQ3pGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogVGhlIEMgbGlicmFyeSBOb2RlIHJ1bnMgb24gdW5kZXIgTGludXg6IGdsaWJjIHdoZW4gaXRzIHJlcG9ydCBuYW1lcyBhIGdsaWJjLCBlbHNlIG11c2wuICovXG5leHBvcnQgZnVuY3Rpb24gZGV0ZWN0TGliYyhwcm9wczogeyBwbGF0Zm9ybTogc3RyaW5nOyByZXBvcnQ6ICgpID0+IG9iamVjdCB9KSB7XG4gIGlmIChwcm9wcy5wbGF0Zm9ybSAhPT0gXCJsaW51eFwiKSByZXR1cm4gdW5kZWZpbmVkXG4gIGNvbnN0IHJlcG9ydCA9IHByb3BzLnJlcG9ydCgpXG4gIGNvbnN0IGhlYWRlciA9IFwiaGVhZGVyXCIgaW4gcmVwb3J0ID8gcmVwb3J0LmhlYWRlciA6IHVuZGVmaW5lZFxuICBpZiAodHlwZW9mIGhlYWRlciAhPT0gXCJvYmplY3RcIiB8fCBoZWFkZXIgPT09IG51bGwpIHJldHVybiBcImdsaWJjXCJcbiAgcmV0dXJuIFwiZ2xpYmNWZXJzaW9uUnVudGltZVwiIGluIGhlYWRlciAmJiBoZWFkZXIuZ2xpYmNWZXJzaW9uUnVudGltZSA/IFwiZ2xpYmNcIiA6IFwibXVzbFwiXG59XG4iXX0=
|
|
@@ -4,7 +4,7 @@ import type { Host } from "../../models/host.ts";
|
|
|
4
4
|
/** Run the host plugins a native run pauses at until it finishes; under `sync`, a plugin
|
|
5
5
|
* finishing later fails with `async-in-sync`, as an asynchronous native stage does. */
|
|
6
6
|
export declare function finishRun(props: {
|
|
7
|
-
run: NativeRun
|
|
7
|
+
run: NativeRun;
|
|
8
8
|
hosts: Map<number, Host>;
|
|
9
9
|
file: HostFile;
|
|
10
10
|
sync: boolean;
|
|
@@ -6,7 +6,7 @@ export function finishRun(props) {
|
|
|
6
6
|
let sent = props.file.messages.length;
|
|
7
7
|
while (props.run.hosts().length > 0) {
|
|
8
8
|
mirrorMessages();
|
|
9
|
-
const tree = runHosts(props, props.run.hosts(), props.run.tree());
|
|
9
|
+
const tree = runHosts(props, props.run.hosts(), readTree(props.run.tree()));
|
|
10
10
|
if (isThenable(tree)) {
|
|
11
11
|
if (props.sync)
|
|
12
12
|
throw asyncError(props.call);
|
|
@@ -26,7 +26,7 @@ export function finishRun(props) {
|
|
|
26
26
|
sent = props.file.messages.length;
|
|
27
27
|
}
|
|
28
28
|
function resume(tree) {
|
|
29
|
-
props.run.resume(tree, props.file.messages.slice(sent).map(message => message.toJSON()));
|
|
29
|
+
props.run.resume(JSON.stringify(tree), props.file.messages.slice(sent).map(message => message.toJSON()));
|
|
30
30
|
sent = props.file.messages.length;
|
|
31
31
|
}
|
|
32
32
|
}
|
|
@@ -45,8 +45,12 @@ function runHosts(props, ids, tree) {
|
|
|
45
45
|
}
|
|
46
46
|
return tree;
|
|
47
47
|
}
|
|
48
|
+
function readTree(text) {
|
|
49
|
+
const tree = JSON.parse(text);
|
|
50
|
+
return tree;
|
|
51
|
+
}
|
|
48
52
|
function asyncError(call) {
|
|
49
53
|
const message = `\`${call}Sync\` finished async. Use \`${call}\` instead`;
|
|
50
54
|
return Object.assign(new Error(message), { code: "async-in-sync" });
|
|
51
55
|
}
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluaXNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vYWN0aW9ucy9ydW4vZmluaXNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBaUIsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFFbEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUV0RDt1RkFDdUY7QUFDdkYsTUFBTSxVQUFVLFNBQVMsQ0FBQyxLQU16QjtJQUNDLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQTtJQUNyQyxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3BDLGNBQWMsRUFBRSxDQUFBO1FBQ2hCLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFDM0UsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNyQixJQUFJLEtBQUssQ0FBQyxJQUFJO2dCQUFFLE1BQU0sVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUM1QyxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUN2QyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUE7Z0JBQ1osT0FBTyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUE7WUFDekIsQ0FBQyxDQUFDLENBQUE7UUFDSixDQUFDO1FBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ2QsQ0FBQztJQUVELHdGQUF3RjtJQUN4RixTQUFTLGNBQWM7UUFDckIsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDdkUsS0FBSyxNQUFNLE9BQU8sSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUMvQixLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO1FBQzdFLENBQUM7UUFDRCxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFBO0lBQ25DLENBQUM7SUFFRCxTQUFTLE1BQU0sQ0FBQyxJQUFVO1FBQ3hCLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUNkLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQ3BCLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FDakUsQ0FBQTtRQUNELElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUE7SUFDbkMsQ0FBQztBQUNILENBQUM7QUFFRCxTQUFTLFFBQVEsQ0FDZixLQUFnRixFQUNoRixHQUFhLEVBQ2IsSUFBVTtJQUVWLEtBQUssTUFBTSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxHQUFHLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztRQUN4QyxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxXQUFXLENBQUE7UUFDcEQsSUFBSSxDQUFDLFdBQVc7WUFBRSxTQUFRO1FBQzFCLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFBO1FBQ2hFLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDdkIsSUFBSSxLQUFLLENBQUMsSUFBSTtnQkFBRSxNQUFNLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDNUMsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFBO1FBQ3pFLENBQUM7UUFDRCxJQUFJLEdBQUcsTUFBTSxDQUFBO0lBQ2YsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFBO0FBQ2IsQ0FBQztBQUVELFNBQVMsUUFBUSxDQUFDLElBQVk7SUFDNUIsTUFBTSxJQUFJLEdBQVMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUNuQyxPQUFPLElBQUksQ0FBQTtBQUNiLENBQUM7QUFFRCxTQUFTLFVBQVUsQ0FBQyxJQUFZO0lBQzlCLE1BQU0sT0FBTyxHQUFHLEtBQUssSUFBSSxnQ0FBZ0MsSUFBSSxZQUFZLENBQUE7SUFDekUsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUE7QUFDckUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgTmF0aXZlUnVuIH0gZnJvbSBcIi4uLy4uL21vZGVscy9hZGRvbi50c1wiXG5pbXBvcnQgdHlwZSB7IE5vZGUgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL2ZpbGUudHNcIlxuaW1wb3J0IHsgdHlwZSBIb3N0RmlsZSwgSG9zdE1lc3NhZ2UgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL3ZmaWxlLnRzXCJcbmltcG9ydCB0eXBlIHsgSG9zdCB9IGZyb20gXCIuLi8uLi9tb2RlbHMvaG9zdC50c1wiXG5pbXBvcnQgeyBjYWxsSG9zdCwgaXNUaGVuYWJsZSB9IGZyb20gXCIuLi9ob3N0L2NhbGwudHNcIlxuXG4vKiogUnVuIHRoZSBob3N0IHBsdWdpbnMgYSBuYXRpdmUgcnVuIHBhdXNlcyBhdCB1bnRpbCBpdCBmaW5pc2hlczsgdW5kZXIgYHN5bmNgLCBhIHBsdWdpblxuICogZmluaXNoaW5nIGxhdGVyIGZhaWxzIHdpdGggYGFzeW5jLWluLXN5bmNgLCBhcyBhbiBhc3luY2hyb25vdXMgbmF0aXZlIHN0YWdlIGRvZXMuICovXG5leHBvcnQgZnVuY3Rpb24gZmluaXNoUnVuKHByb3BzOiB7XG4gIHJ1bjogTmF0aXZlUnVuXG4gIGhvc3RzOiBNYXA8bnVtYmVyLCBIb3N0PlxuICBmaWxlOiBIb3N0RmlsZVxuICBzeW5jOiBib29sZWFuXG4gIGNhbGw6IFwicnVuXCIgfCBcInByb2Nlc3NcIlxufSk6IHZvaWQgfCBQcm9taXNlPHZvaWQ+IHtcbiAgbGV0IHNlbnQgPSBwcm9wcy5maWxlLm1lc3NhZ2VzLmxlbmd0aFxuICB3aGlsZSAocHJvcHMucnVuLmhvc3RzKCkubGVuZ3RoID4gMCkge1xuICAgIG1pcnJvck1lc3NhZ2VzKClcbiAgICBjb25zdCB0cmVlID0gcnVuSG9zdHMocHJvcHMsIHByb3BzLnJ1bi5ob3N0cygpLCByZWFkVHJlZShwcm9wcy5ydW4udHJlZSgpKSlcbiAgICBpZiAoaXNUaGVuYWJsZSh0cmVlKSkge1xuICAgICAgaWYgKHByb3BzLnN5bmMpIHRocm93IGFzeW5jRXJyb3IocHJvcHMuY2FsbClcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodHJlZSkudGhlbih0cmVlID0+IHtcbiAgICAgICAgcmVzdW1lKHRyZWUpXG4gICAgICAgIHJldHVybiBmaW5pc2hSdW4ocHJvcHMpXG4gICAgICB9KVxuICAgIH1cbiAgICByZXN1bWUodHJlZSlcbiAgfVxuXG4gIC8vIGZpbGUubWVzc2FnZXMgZm9sbG93cyB0aGUgcnVuJ3M6IHdoYXQgbmF0aXZlIHN0YWdlcyByZXBvcnRlZCBzaW5jZSwgdGhlbiB0aGUgcGx1Z2lucydcbiAgZnVuY3Rpb24gbWlycm9yTWVzc2FnZXMoKSB7XG4gICAgY29uc3QgcmVwb3J0ZWQgPSBwcm9wcy5ydW4ubWVzc2FnZXMoKS5zbGljZShwcm9wcy5maWxlLm1lc3NhZ2VzLmxlbmd0aClcbiAgICBmb3IgKGNvbnN0IG1lc3NhZ2Ugb2YgcmVwb3J0ZWQpIHtcbiAgICAgIHByb3BzLmZpbGUubWVzc2FnZXMucHVzaChIb3N0TWVzc2FnZS5mcm9tTWVzc2FnZShtZXNzYWdlLCBwcm9wcy5maWxlLnBhdGgpKVxuICAgIH1cbiAgICBzZW50ID0gcHJvcHMuZmlsZS5tZXNzYWdlcy5sZW5ndGhcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlc3VtZSh0cmVlOiBOb2RlKSB7XG4gICAgcHJvcHMucnVuLnJlc3VtZShcbiAgICAgIEpTT04uc3RyaW5naWZ5KHRyZWUpLFxuICAgICAgcHJvcHMuZmlsZS5tZXNzYWdlcy5zbGljZShzZW50KS5tYXAobWVzc2FnZSA9PiBtZXNzYWdlLnRvSlNPTigpKSxcbiAgICApXG4gICAgc2VudCA9IHByb3BzLmZpbGUubWVzc2FnZXMubGVuZ3RoXG4gIH1cbn1cblxuZnVuY3Rpb24gcnVuSG9zdHMoXG4gIHByb3BzOiB7IGhvc3RzOiBNYXA8bnVtYmVyLCBIb3N0PjsgZmlsZTogSG9zdEZpbGU7IHN5bmM6IGJvb2xlYW47IGNhbGw6IHN0cmluZyB9LFxuICBpZHM6IG51bWJlcltdLFxuICB0cmVlOiBOb2RlLFxuKTogTm9kZSB8IFByb21pc2VMaWtlPE5vZGU+IHtcbiAgZm9yIChjb25zdCBbaW5kZXgsIGlkXSBvZiBpZHMuZW50cmllcygpKSB7XG4gICAgY29uc3QgdHJhbnNmb3JtZXIgPSBwcm9wcy5ob3N0cy5nZXQoaWQpPy50cmFuc2Zvcm1lclxuICAgIGlmICghdHJhbnNmb3JtZXIpIGNvbnRpbnVlXG4gICAgY29uc3QgcmVzdWx0ID0gY2FsbEhvc3QoeyB0cmFuc2Zvcm1lciwgdHJlZSwgZmlsZTogcHJvcHMuZmlsZSB9KVxuICAgIGlmIChpc1RoZW5hYmxlKHJlc3VsdCkpIHtcbiAgICAgIGlmIChwcm9wcy5zeW5jKSB0aHJvdyBhc3luY0Vycm9yKHByb3BzLmNhbGwpXG4gICAgICByZXR1cm4gcmVzdWx0LnRoZW4odHJlZSA9PiBydW5Ib3N0cyhwcm9wcywgaWRzLnNsaWNlKGluZGV4ICsgMSksIHRyZWUpKVxuICAgIH1cbiAgICB0cmVlID0gcmVzdWx0XG4gIH1cbiAgcmV0dXJuIHRyZWVcbn1cblxuZnVuY3Rpb24gcmVhZFRyZWUodGV4dDogc3RyaW5nKSB7XG4gIGNvbnN0IHRyZWU6IE5vZGUgPSBKU09OLnBhcnNlKHRleHQpXG4gIHJldHVybiB0cmVlXG59XG5cbmZ1bmN0aW9uIGFzeW5jRXJyb3IoY2FsbDogc3RyaW5nKSB7XG4gIGNvbnN0IG1lc3NhZ2UgPSBgXFxgJHtjYWxsfVN5bmNcXGAgZmluaXNoZWQgYXN5bmMuIFVzZSBcXGAke2NhbGx9XFxgIGluc3RlYWRgXG4gIHJldHVybiBPYmplY3QuYXNzaWduKG5ldyBFcnJvcihtZXNzYWdlKSwgeyBjb2RlOiBcImFzeW5jLWluLXN5bmNcIiB9KVxufVxuIl19
|
|
@@ -24,9 +24,18 @@ export interface FormatOptions {
|
|
|
24
24
|
indent?: Indent | null;
|
|
25
25
|
/** Indent the first level, usually `<html>`'s `head` and `body`; `true` when left out. */
|
|
26
26
|
indentInitial?: boolean | null;
|
|
27
|
+
/** Only collapse whitespace, as rehype-minify-whitespace does, adding no line endings or indentation; `{ newlines: true }` collapses a run holding a line ending to it. */
|
|
28
|
+
minify?: Minify | null;
|
|
27
29
|
}
|
|
28
30
|
/** One level of indentation. */
|
|
29
31
|
export type Indent = number | string;
|
|
32
|
+
/** `html.format`'s `minify`: on, or on with rehype-minify-whitespace's options. */
|
|
33
|
+
export type Minify = boolean | MinifyOptions;
|
|
34
|
+
/** rehype-minify-whitespace's options. */
|
|
35
|
+
export interface MinifyOptions {
|
|
36
|
+
/** Collapse a run of whitespace holding a line ending to a line ending, not a space. @default false */
|
|
37
|
+
newlines?: boolean;
|
|
38
|
+
}
|
|
30
39
|
/** `html.sanitize`: keep only what a schema allows; options: hast-util-sanitize's schema, where a field left out keeps the default schema's, which is GitHub's. */
|
|
31
40
|
export interface SanitizeOptions {
|
|
32
41
|
/** Keep comments. */
|
|
@@ -58,7 +67,30 @@ export type Primitive = boolean | number | string;
|
|
|
58
67
|
export interface SlugOptions {
|
|
59
68
|
/** Put before each id. @default "" */
|
|
60
69
|
prefix?: string;
|
|
70
|
+
/** Link each heading with an `id` to itself, as rehype-autolink-headings does: `true`, or its options. */
|
|
71
|
+
autolink?: Autolink | null;
|
|
72
|
+
}
|
|
73
|
+
/** `html.slug`'s `autolink`: on, or on with rehype-autolink-headings' options. */
|
|
74
|
+
export type Autolink = boolean | AutolinkOptions;
|
|
75
|
+
/** rehype-autolink-headings' options, JSON values only. */
|
|
76
|
+
export interface AutolinkOptions {
|
|
77
|
+
/** Where the link goes: in the heading first or last, around its content, or before or after it. */
|
|
78
|
+
behavior?: AutolinkBehavior;
|
|
79
|
+
/** The link's properties, as hast names them; `ariaHidden` and `tabIndex: -1` for `prepend` and `append` when left out. */
|
|
80
|
+
properties?: Record<string, unknown> | null;
|
|
81
|
+
/** hast content of the link, one node or a list; `<span class="icon icon-link">` when left out, except for `wrap`, which appends it to the heading's content. */
|
|
82
|
+
content?: unknown;
|
|
83
|
+
/** A hast element wrapping the heading and its link, for `before` and `after`. */
|
|
84
|
+
group?: unknown;
|
|
85
|
+
/** Properties set on each linked heading. */
|
|
86
|
+
headingProperties?: Record<string, unknown> | null;
|
|
87
|
+
/** The tag names of the headings to link; every heading when left out. */
|
|
88
|
+
test?: TagNames | null;
|
|
61
89
|
}
|
|
90
|
+
/** Where `autolink` puts each heading's link. */
|
|
91
|
+
export type AutolinkBehavior = "prepend" | "append" | "wrap" | "before" | "after";
|
|
92
|
+
/** One tag name or several. */
|
|
93
|
+
export type TagNames = string | string[];
|
|
62
94
|
/** `html.externalLinks`: `rel`, `target` and more on links to other sites, as rehype-external-links adds them; options named as it names them, JSON values only. */
|
|
63
95
|
export interface ExternalLinksOptions {
|
|
64
96
|
/** The `target` of each external link, such as `_blank`. */
|
package/build/generated/html.js
CHANGED
|
@@ -73,4 +73,4 @@ export function stringify(options) {
|
|
|
73
73
|
return { name: "html.stringify" };
|
|
74
74
|
return { name: "html.stringify", options };
|
|
75
75
|
}
|
|
76
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2dlbmVyYXRlZC9odG1sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtFQUErRTtBQXNPL0UsK0JBQStCO0FBQy9CLE1BQU0sVUFBVSxLQUFLLENBQUMsT0FBc0I7SUFDMUMsSUFBSSxPQUFPLEtBQUssU0FBUztRQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLENBQUE7SUFDeEQsT0FBTyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLENBQUE7QUFDeEMsQ0FBQztBQUVELDZCQUE2QjtBQUM3QixNQUFNLFVBQVUsR0FBRyxDQUFDLE9BQW9CO0lBQ3RDLElBQUksT0FBTyxLQUFLLFNBQVM7UUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFBO0lBQ3RELE9BQU8sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxDQUFBO0FBQ3RDLENBQUM7QUFFRCxnQ0FBZ0M7QUFDaEMsTUFBTSxVQUFVLE1BQU0sQ0FBQyxPQUF1QjtJQUM1QyxJQUFJLE9BQU8sS0FBSyxTQUFTO1FBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsQ0FBQTtJQUN6RCxPQUFPLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsQ0FBQTtBQUN6QyxDQUFDO0FBRUQsa0NBQWtDO0FBQ2xDLE1BQU0sVUFBVSxRQUFRLENBQUMsT0FBeUI7SUFDaEQsSUFBSSxPQUFPLEtBQUssU0FBUztRQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLENBQUE7SUFDM0QsT0FBTyxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLENBQUE7QUFDM0MsQ0FBQztBQUVELDhCQUE4QjtBQUM5QixNQUFNLFVBQVUsSUFBSSxDQUFDLE9BQXFCO0lBQ3hDLElBQUksT0FBTyxLQUFLLFNBQVM7UUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxDQUFBO0lBQ3ZELE9BQU8sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxDQUFBO0FBQ3ZDLENBQUM7QUFFRCx1Q0FBdUM7QUFDdkMsTUFBTSxVQUFVLGFBQWEsQ0FBQyxPQUE4QjtJQUMxRCxJQUFJLE9BQU8sS0FBSyxTQUFTO1FBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxvQkFBb0IsRUFBRSxDQUFBO0lBQ2hFLE9BQU8sRUFBRSxJQUFJLEVBQUUsb0JBQW9CLEVBQUUsT0FBTyxFQUFFLENBQUE7QUFDaEQsQ0FBQztBQUVELHNDQUFzQztBQUN0QyxNQUFNLFVBQVUsWUFBWTtJQUMxQixPQUFPLEVBQUUsSUFBSSxFQUFFLG1CQUFtQixFQUFFLENBQUE7QUFDdEMsQ0FBQztBQUVELG9DQUFvQztBQUNwQyxNQUFNLFVBQVUsVUFBVSxDQUFDLE9BQTJCO0lBQ3BELElBQUksT0FBTyxLQUFLLFNBQVM7UUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLENBQUE7SUFDN0QsT0FBTyxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsQ0FBQTtBQUM3QyxDQUFDO0FBRUQsbUNBQW1DO0FBQ25DLE1BQU0sVUFBVSxTQUFTLENBQUMsT0FBMEI7SUFDbEQsSUFBSSxPQUFPLEtBQUssU0FBUztRQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQTtJQUM1RCxPQUFPLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE9BQU8sRUFBRSxDQUFBO0FBQzVDLENBQUM7QUFFRCwrQkFBK0I7QUFDL0IsTUFBTSxVQUFVLEtBQUssQ0FBQyxPQUFzQjtJQUMxQyxJQUFJLE9BQU8sS0FBSyxTQUFTO1FBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsQ0FBQTtJQUN4RCxPQUFPLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsQ0FBQTtBQUN4QyxDQUFDO0FBRUQsb0NBQW9DO0FBQ3BDLE1BQU0sVUFBVSxVQUFVLENBQUMsT0FBMkI7SUFDcEQsSUFBSSxPQUFPLEtBQUssU0FBUztRQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQTtJQUM3RCxPQUFPLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLE9BQU8sRUFBRSxDQUFBO0FBQzdDLENBQUM7QUFFRCwyQ0FBMkM7QUFDM0MsTUFBTSxVQUFVLGlCQUFpQjtJQUMvQixPQUFPLEVBQUUsSUFBSSxFQUFFLHdCQUF3QixFQUFFLENBQUE7QUFDM0MsQ0FBQztBQUVELG1DQUFtQztBQUNuQyxNQUFNLFVBQVUsU0FBUyxDQUFDLE9BQTBCO0lBQ2xELElBQUksT0FBTyxLQUFLLFNBQVM7UUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLENBQUE7SUFDNUQsT0FBTyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsQ0FBQTtBQUM1QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gR2VuZXJhdGVkIGJ5IGBwbnBtIGdlbmVyYXRlOmJpbmRpbmdzYCBmcm9tIHRoZSBjcmF0ZSdzIHBsdWdpbnM7IGRvIG5vdCBlZGl0LlxuXG5pbXBvcnQgdHlwZSB7IFJvb3QgfSBmcm9tIFwiaGFzdFwiXG5pbXBvcnQgdHlwZSB7IFBhcnNlciwgUGx1Z2luIH0gZnJvbSBcIi4uL21vZGVscy9wbHVnaW4udHNcIlxuXG4vKiogYGh0bWwucGFyc2VgOiBIVE1MIGludG8gaGFzdDsgb3B0aW9ucyBuYW1lZCBhcyByZWh5cGUtcGFyc2UgbmFtZXMgdGhlbS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFyc2VPcHRpb25zIHtcbiAgLyoqIFBhcnNlIGEgZnJhZ21lbnQsIGFzIGluIGEgYHRlbXBsYXRlYCwgcmF0aGVyIHRoYW4gYSB3aG9sZSBkb2N1bWVudC4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgZnJhZ21lbnQ/OiBib29sZWFuXG4gIC8qKiBSZXBvcnQgcGFyc2UgZXJyb3JzIGFzIG1lc3NhZ2VzIG9uIHRoZSBmaWxlLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBlbWl0UGFyc2VFcnJvcnM/OiBib29sZWFuXG4gIC8qKiBBZGQgdGhlIHBvc2l0aW9ucyBvZiBvcGVuaW5nIGFuZCBjbG9zaW5nIHRhZ3MgYW5kIGF0dHJpYnV0ZXMgdG8gZWxlbWVudHMuIEBkZWZhdWx0IGZhbHNlICovXG4gIHZlcmJvc2U/OiBib29sZWFuXG59XG5cbi8qKiBgaHRtbC5yYXdgOiByZXBhcnNlIHJhdyBIVE1MIGFuZCBmaXggbmVzdGluZyB0aHJvdWdoIHRoZSBIVE1MIHBhcnNlcjsgb3B0aW9ucyBuYW1lZCBhcyBoYXN0LXV0aWwtcmF3IG5hbWVzIHRoZW0uICovXG5leHBvcnQgaW50ZXJmYWNlIFJhd09wdGlvbnMge1xuICAvKiogTm9kZSB0eXBlcywgdW5rbm93biB0byBoYXN0LCB0byBjb3B5IHRocm91Z2ggYXMgdGhleSBhcmU7IHRoZWlyIGNoaWxkcmVuIGFyZSByZXBhcnNlZCBvbiB0aGVpciBvd24uIEBkZWZhdWx0IFtdICovXG4gIHBhc3NUaHJvdWdoPzogc3RyaW5nW11cbiAgLyoqIEVzY2FwZSB0aGUgb3BlbmluZyBgPGAgb2YgdGhlIHRhZ3MgR0ZNJ3MgdGFnZmlsdGVyIGRpc2FsbG93cyBpbiByYXcgbm9kZXMuIEBkZWZhdWx0IGZhbHNlICovXG4gIHRhZ2ZpbHRlcj86IGJvb2xlYW5cbn1cblxuLyoqIGBodG1sLmZvcm1hdGA6IGluZGVudCBhbmQgY29sbGFwc2Ugd2hpdGVzcGFjZSBmb3IgcmVhZGFibGUgSFRNTDsgb3B0aW9ucyBuYW1lZCBhcyBoYXN0LXV0aWwtZm9ybWF0IG5hbWVzIHRoZW0uICovXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1hdE9wdGlvbnMge1xuICAvKiogVGFnIG5hbWVzIG9mIGVsZW1lbnRzIHRvIHB1dCBhIGJsYW5rIGxpbmUgYmV0d2Vlbiwgd2hlbiBib3RoIGFyZSBvbmUuIEBkZWZhdWx0IFtdICovXG4gIGJsYW5rcz86IHN0cmluZ1tdXG4gIC8qKiBPbmUgbGV2ZWwgb2YgaW5kZW50YXRpb246IGEgbnVtYmVyIG9mIHNwYWNlcyBvciB0aGUgdGV4dCBpdHNlbGY7IHR3byBzcGFjZXMgd2hlbiBsZWZ0IG91dC4gKi9cbiAgaW5kZW50PzogSW5kZW50IHwgbnVsbFxuICAvKiogSW5kZW50IHRoZSBmaXJzdCBsZXZlbCwgdXN1YWxseSBgPGh0bWw+YCdzIGBoZWFkYCBhbmQgYGJvZHlgOyBgdHJ1ZWAgd2hlbiBsZWZ0IG91dC4gKi9cbiAgaW5kZW50SW5pdGlhbD86IGJvb2xlYW4gfCBudWxsXG59XG5cbi8qKiBPbmUgbGV2ZWwgb2YgaW5kZW50YXRpb24uICovXG5leHBvcnQgdHlwZSBJbmRlbnQgPSBudW1iZXIgfCBzdHJpbmdcblxuLyoqIGBodG1sLnNhbml0aXplYDoga2VlcCBvbmx5IHdoYXQgYSBzY2hlbWEgYWxsb3dzOyBvcHRpb25zOiBoYXN0LXV0aWwtc2FuaXRpemUncyBzY2hlbWEsIHdoZXJlIGEgZmllbGQgbGVmdCBvdXQga2VlcHMgdGhlIGRlZmF1bHQgc2NoZW1hJ3MsIHdoaWNoIGlzIEdpdEh1YidzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBTYW5pdGl6ZU9wdGlvbnMge1xuICAvKiogS2VlcCBjb21tZW50cy4gKi9cbiAgYWxsb3dDb21tZW50cz86IGJvb2xlYW4gfCBudWxsXG4gIC8qKiBLZWVwIGRvY3R5cGVzLiAqL1xuICBhbGxvd0RvY3R5cGVzPzogYm9vbGVhbiB8IG51bGxcbiAgLyoqIEVsZW1lbnRzIGFsbG93ZWQgb25seSBpbnNpZGUgb25lIG9mIHRoZXNlIGFuY2VzdG9ycywgYnkgdGFnIG5hbWUuICovXG4gIGFuY2VzdG9ycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPiB8IG51bGxcbiAgLyoqIFByb3BlcnRpZXMgYWxsb3dlZCBwZXIgdGFnIG5hbWUsIGAqYCBmb3IgZXZlcnkgZWxlbWVudDsgYSBsaXN0IG5hbWVzIGEgcHJvcGVydHkgYW5kIHRoZSB2YWx1ZXMgaXQgbWF5IGhhdmUuICovXG4gIGF0dHJpYnV0ZXM/OiBSZWNvcmQ8c3RyaW5nLCBBdHRyaWJ1dGVEZWZpbml0aW9uW10+IHwgbnVsbFxuICAvKiogUHJvcGVydGllcyB3aG9zZSB2YWx1ZXMgZ2V0IGBjbG9iYmVyX3ByZWZpeGAsIHNvIHRoZXkgY2Fubm90IGNsb2JiZXIgZ2xvYmFscy4gKi9cbiAgY2xvYmJlcj86IHN0cmluZ1tdIHwgbnVsbFxuICAvKiogVGhlIHByZWZpeCBvZiBjbG9iYmVyZWQgdmFsdWVzLiAqL1xuICBjbG9iYmVyUHJlZml4Pzogc3RyaW5nIHwgbnVsbFxuICAvKiogVVJMIHByb3BlcnRpZXMgYW5kIHRoZSBwcm90b2NvbHMgdGhleSBtYXkgdXNlLiAqL1xuICBwcm90b2NvbHM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT4gfCBudWxsXG4gIC8qKiBQcm9wZXJ0aWVzIHNldCBvbiBlbGVtZW50cyB3aGF0ZXZlciB0aGV5IGhhZCwgYnkgdGFnIG5hbWUuICovXG4gIHJlcXVpcmVkPzogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgUHJpbWl0aXZlPj4gfCBudWxsXG4gIC8qKiBFbGVtZW50cyBkcm9wcGVkIHdpdGggdGhlaXIgY29udGVudCByYXRoZXIgdGhhbiB1bndyYXBwZWQuICovXG4gIHN0cmlwPzogc3RyaW5nW10gfCBudWxsXG4gIC8qKiBUaGUgZWxlbWVudHMga2VwdC4gKi9cbiAgdGFnTmFtZXM/OiBzdHJpbmdbXSB8IG51bGxcbn1cblxuLyoqIEEgcHJvcGVydHkgYSBzYW5pdGl6ZSBzY2hlbWEgYWxsb3dzOiBieSBuYW1lLCBvciBhIG5hbWUgYW5kIGl0cyBhbGxvd2VkIHZhbHVlcy4gKi9cbmV4cG9ydCB0eXBlIEF0dHJpYnV0ZURlZmluaXRpb24gPSBzdHJpbmcgfCBQcmltaXRpdmVbXVxuXG4vKiogQSBwcmltaXRpdmUgcHJvcGVydHkgdmFsdWUuICovXG5leHBvcnQgdHlwZSBQcmltaXRpdmUgPSBib29sZWFuIHwgbnVtYmVyIHwgc3RyaW5nXG5cbi8qKiBgaHRtbC5zbHVnYDogaWRzIG9uIGhlYWRpbmdzLCBmcm9tIHRoZWlyIHRleHQ7IG9wdGlvbnMgbmFtZWQgYXMgcmVoeXBlLXNsdWcgbmFtZXMgdGhlbS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2x1Z09wdGlvbnMge1xuICAvKiogUHV0IGJlZm9yZSBlYWNoIGlkLiBAZGVmYXVsdCBcIlwiICovXG4gIHByZWZpeD86IHN0cmluZ1xufVxuXG4vKiogYGh0bWwuZXh0ZXJuYWxMaW5rc2A6IGByZWxgLCBgdGFyZ2V0YCBhbmQgbW9yZSBvbiBsaW5rcyB0byBvdGhlciBzaXRlcywgYXMgcmVoeXBlLWV4dGVybmFsLWxpbmtzIGFkZHMgdGhlbTsgb3B0aW9ucyBuYW1lZCBhcyBpdCBuYW1lcyB0aGVtLCBKU09OIHZhbHVlcyBvbmx5LiAqL1xuZXhwb3J0IGludGVyZmFjZSBFeHRlcm5hbExpbmtzT3B0aW9ucyB7XG4gIC8qKiBUaGUgYHRhcmdldGAgb2YgZWFjaCBleHRlcm5hbCBsaW5rLCBzdWNoIGFzIGBfYmxhbmtgLiAqL1xuICB0YXJnZXQ/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBUaGUgYHJlbGAgb2YgZWFjaCBleHRlcm5hbCBsaW5rOiBhIGxpc3QsIG9yIHRva2VucyBzZXBhcmF0ZWQgYnkgd2hpdGUgc3BhY2U7IGBub2ZvbGxvd2Agd2hlbiBsZWZ0IG91dCBvciBlbXB0eSwgbm9uZSBmb3IgYW4gZW1wdHkgbGlzdC4gKi9cbiAgcmVsPzogVG9rZW5zIHwgbnVsbFxuICAvKiogVGhlIHByb3RvY29scyBvZiBhYnNvbHV0ZSBVUkxzIHRoYXQgY291bnQgYXMgZXh0ZXJuYWw7IGBodHRwYCBhbmQgYGh0dHBzYCB3aGVuIGxlZnQgb3V0LiBBIHByb3RvY29sLXJlbGF0aXZlIGAvL+KApmAgVVJMIGFsd2F5cyBjb3VudHMuICovXG4gIHByb3RvY29scz86IHN0cmluZ1tdIHwgbnVsbFxuICAvKiogTW9yZSBwcm9wZXJ0aWVzIGZvciBlYWNoIGV4dGVybmFsIGxpbmssIGFzIGhhc3QgbmFtZXMgdGhlbS4gKi9cbiAgcHJvcGVydGllcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgbnVsbFxuICAvKiogaGFzdCBjb250ZW50IGFwcGVuZGVkIHRvIGVhY2ggZXh0ZXJuYWwgbGluayBpbiBhIGA8c3Bhbj5gOiBvbmUgbm9kZSBvciBhIGxpc3QuICovXG4gIGNvbnRlbnQ/OiB1bmtub3duXG4gIC8qKiBUaGUgcHJvcGVydGllcyBvZiB0aGF0IGA8c3Bhbj5gLiAqL1xuICBjb250ZW50UHJvcGVydGllcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgbnVsbFxufVxuXG4vKiogVG9rZW5zOiBhIGxpc3QsIG9yIG9uZSBzdHJpbmcgb2YgdGhlbSBzZXBhcmF0ZWQgYnkgd2hpdGUgc3BhY2UuICovXG5leHBvcnQgdHlwZSBUb2tlbnMgPSBzdHJpbmcgfCBzdHJpbmdbXVxuXG4vKiogYGh0bWwuZXh0cmFjdFRvY2A6IHRoZSBoZWFkaW5ncywgbmVzdGVkIGJ5IHJhbmssIGFzIHRoZSBmaWxlJ3MgYGRhdGEudG9jYCwgYXMgQHN0ZWZhbnByb2JzdC9yZWh5cGUtZXh0cmFjdC10b2Mgc3RvcmVzIHRoZW0uICovXG5leHBvcnQgaW50ZXJmYWNlIEV4dHJhY3RUb2NPcHRpb25zIHtcbiAgLyoqIEF0dHJpYnV0ZXMsIHN1Y2ggYXMgYGRhdGEtdG9jLWhpZGRlbmAsIHRoYXQga2VlcCBhIGhlYWRpbmcgb3V0IG9mIHRoZSB0YWJsZSBvZiBjb250ZW50czsgd2hhdCB3b3VsZCBuZXN0IHVuZGVyIGl0IG5lc3RzIHVuZGVyIHRoZSBoZWFkaW5nIGJlZm9yZS4gQGRlZmF1bHQgW10gKi9cbiAgc2tpcD86IHN0cmluZ1tdXG59XG5cbi8qKiBgaHRtbC5oaWdobGlnaHRgOiBjb2RlIGJsb2NrcyBjb2xvcmVkIGFzIFNoaWtpIGNvbG9ycyB0aGVtLCBuYXRpdmVseSBieSBnaWFsbG87IG9wdGlvbnMgbmFtZWQgYXMgQHNoaWtpanMvcmVoeXBlIG5hbWVzIHRoZW0uICovXG5leHBvcnQgaW50ZXJmYWNlIEhpZ2hsaWdodE9wdGlvbnMge1xuICAvKiogVGhlIHRoZW1lIG9mIGVhY2ggY29sb3IgbW9kZSwgYGxpZ2h0YCBmaXJzdCwgYXMgYHtcImxpZ2h0XCI6IOKApiwgXCJkYXJrXCI6IOKApn1gLiAqL1xuICB0aGVtZXM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IG51bGxcbiAgLyoqIFRoZSBvbmUgdGhlbWUsIHdoZW4gYHRoZW1lc2AgaXMgbm90IGdpdmVuLiAqL1xuICB0aGVtZT86IHN0cmluZyB8IG51bGxcbiAgLyoqIFRoZSBsYW5ndWFnZSBvZiBhIGJsb2NrIHRoYXQgbmFtZXMgbm9uZTsgc3VjaCBhIGJsb2NrIGlzIGxlZnQgYWxvbmUgd2l0aG91dCBpdC4gKi9cbiAgZGVmYXVsdExhbmd1YWdlPzogc3RyaW5nIHwgbnVsbFxuICAvKiogVGhlIGxhbmd1YWdlIG9mIGEgYmxvY2sgbmFtaW5nIG9uZSBTaGlraSBkb2VzIG5vdCBrbm93OyBsZWZ0IGFsb25lIHdpdGhvdXQgaXQuICovXG4gIGZhbGxiYWNrTGFuZ3VhZ2U/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBDb2xvcnMgdG8gcmVwbGFjZSwgYnkgdGhlaXIgbG93ZXJjYXNlIHNwZWxsaW5nOiBhIGNvbG9yIGZvciBldmVyeSB0aGVtZSwgb3IgYSB0aGVtZSdzIG5hbWUgdG8gYSBtYXAgb2YgaXRzIG93bi4gKi9cbiAgY29sb3JSZXBsYWNlbWVudHM/OiBSZWNvcmQ8c3RyaW5nLCBDb2xvclJlcGxhY2VtZW50PlxuICAvKiogQWRkIGBsYW5ndWFnZS08bmFtZT5gIHRvIGVhY2ggaGlnaGxpZ2h0ZWQgYDxjb2RlPmAuIEBkZWZhdWx0IGZhbHNlICovXG4gIGFkZExhbmd1YWdlQ2xhc3M/OiBib29sZWFuXG4gIC8qKiBIaWdobGlnaHQgaW5saW5lIGNvZGUgdG9vLCBieSBob3cgaXQgbmFtZXMgaXRzIGxhbmd1YWdlOiBgdGFpbGluZy1jdXJseS1jb2xvbmAgcmVhZHMgYGAgYGEoKXs6anN9YCBgYC4gKi9cbiAgaW5saW5lPzogSW5saW5lQ29kZSB8IG51bGxcbiAgLyoqIFRoZSBgPHByZT5gIHByb3BlcnR5IHRoYXQgZ2V0cyBhIGJsb2NrJ3MgbWV0YSwgdGhlIHRleHQgYWZ0ZXIgaXRzIGxhbmd1YWdlOyB0aGUgSlNPTiBzdGFuZC1pbiBmb3IgYHBhcnNlTWV0YVN0cmluZzogbWV0YSA9PiAoeyBbbmFtZV06IG1ldGEgfSlgLiAqL1xuICBtZXRhUHJvcGVydHk/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBUaGUgdHJhbnNmb3JtZXJzIG9mIEBzaGlraWpzL3RyYW5zZm9ybWVycyB0byBydW4sIGluIG9yZGVyLCBieSBuYW1lIG9yIHdpdGggb3B0aW9ucy4gKi9cbiAgdHJhbnNmb3JtZXJzPzogSGlnaGxpZ2h0VHJhbnNmb3JtZXJbXVxuICAvKiogTGluZXMgYXQgbGVhc3QgdGhpcyBsb25nLCBpbiBVVEYtMTYgdW5pdHMsIGFyZSBsZWZ0IG9uZSBwbGFpbiB0b2tlbiBhcyBTaGlraSdzIG93biBvcHRpb24gbGVhdmVzIHRoZW07IDIsMDAwIHdoZW4gbGVmdCBvdXQsIHdoZXJlIFNoaWtpIGhhcyBubyBsaW1pdCwgc2luY2UgYSBncmFtbWFyJ3MgdGltZSBncm93cyB3aXRoIHRoZSBzcXVhcmUgb2YgYSBsaW5lJ3MgbGVuZ3RoLiBgMGAgbGlmdHMgaXQuICovXG4gIHRva2VuaXplTWF4TGluZUxlbmd0aD86IG51bWJlciB8IG51bGxcbn1cblxuLyoqIEEgcmVwbGFjZW1lbnQgY29sb3IsIG9yIGEgdGhlbWUncyBvd24gcmVwbGFjZW1lbnRzLiAqL1xuZXhwb3J0IHR5cGUgQ29sb3JSZXBsYWNlbWVudCA9IHN0cmluZyB8IFJlY29yZDxzdHJpbmcsIHN0cmluZz5cblxuLyoqIEhvdyBpbmxpbmUgY29kZSBuYW1lcyBpdHMgbGFuZ3VhZ2UuICovXG5leHBvcnQgdHlwZSBJbmxpbmVDb2RlID0gXCJ0YWlsaW5nLWN1cmx5LWNvbG9uXCJcblxuLyoqIEEgdHJhbnNmb3JtZXIgb2YgQHNoaWtpanMvdHJhbnNmb3JtZXJzOiBpdHMgbmFtZSBhbG9uZSwgb3IgaXRzIG5hbWUgYW5kIG9wdGlvbnMuICovXG5leHBvcnQgdHlwZSBIaWdobGlnaHRUcmFuc2Zvcm1lciA9IFRyYW5zZm9ybWVyTmFtZSB8IENvbmZpZ3VyZWRUcmFuc2Zvcm1lclxuXG4vKiogVGhlIHRyYW5zZm9ybWVycyBgaHRtbC5oaWdobGlnaHRgIHJ1bnMgbmF0aXZlbHkuICovXG5leHBvcnQgdHlwZSBUcmFuc2Zvcm1lck5hbWUgPSBcIm5vdGF0aW9uRGlmZlwiIHwgXCJub3RhdGlvbkZvY3VzXCIgfCBcIm5vdGF0aW9uSGlnaGxpZ2h0XCIgfCBcIm5vdGF0aW9uRXJyb3JMZXZlbFwiIHwgXCJtZXRhSGlnaGxpZ2h0XCIgfCBcIm1ldGFXb3JkSGlnaGxpZ2h0XCIgfCBcInJlbmRlckxpbmVOdW1iZXJcIlxuXG4vKiogQSB0cmFuc2Zvcm1lciB3aXRoIGl0cyBvcHRpb25zLCBhcyBAc2hpa2lqcy90cmFuc2Zvcm1lcnMgbmFtZXMgdGhlbS4gKi9cbmV4cG9ydCB0eXBlIENvbmZpZ3VyZWRUcmFuc2Zvcm1lciA9IHsgbmFtZTogXCJub3RhdGlvbkRpZmZcIjsgY2xhc3NMaW5lQWRkPzogQ2xhc3NlcyB8IG51bGw7IGNsYXNzTGluZVJlbW92ZT86IENsYXNzZXMgfCBudWxsOyBjbGFzc0FjdGl2ZVByZT86IENsYXNzZXMgfCBudWxsOyBjbGFzc0FjdGl2ZUNvZGU/OiBDbGFzc2VzIHwgbnVsbCB9IHwgeyBuYW1lOiBcIm5vdGF0aW9uRm9jdXNcIjsgY2xhc3NBY3RpdmVMaW5lPzogQ2xhc3NlcyB8IG51bGw7IGNsYXNzQWN0aXZlUHJlPzogQ2xhc3NlcyB8IG51bGw7IGNsYXNzQWN0aXZlQ29kZT86IENsYXNzZXMgfCBudWxsIH0gfCB7IG5hbWU6IFwibm90YXRpb25IaWdobGlnaHRcIjsgY2xhc3NBY3RpdmVMaW5lPzogQ2xhc3NlcyB8IG51bGw7IGNsYXNzQWN0aXZlUHJlPzogQ2xhc3NlcyB8IG51bGw7IGNsYXNzQWN0aXZlQ29kZT86IENsYXNzZXMgfCBudWxsIH0gfCB7IG5hbWU6IFwibm90YXRpb25FcnJvckxldmVsXCI7IGNsYXNzTWFwPzogUmVjb3JkPHN0cmluZywgQ2xhc3Nlcz4gfCBudWxsOyBjbGFzc0FjdGl2ZVByZT86IENsYXNzZXMgfCBudWxsOyBjbGFzc0FjdGl2ZUNvZGU/OiBDbGFzc2VzIHwgbnVsbCB9IHwgeyBuYW1lOiBcIm1ldGFIaWdobGlnaHRcIjsgY2xhc3NOYW1lPzogQ2xhc3NlcyB8IG51bGw7IHplcm9JbmRleGVkPzogYm9vbGVhbiB9IHwgeyBuYW1lOiBcIm1ldGFXb3JkSGlnaGxpZ2h0XCI7IGNsYXNzTmFtZT86IENsYXNzZXMgfCBudWxsIH0gfCB7IG5hbWU6IFwicmVuZGVyTGluZU51bWJlclwiOyBjbGFzc0xpbmVOdW1iZXI/OiBDbGFzc2VzIHwgbnVsbDsgc3RhcnQ/OiBudW1iZXIgfCBudWxsIH1cblxuLyoqIENsYXNzIG5hbWVzOiBhIGxpc3QsIG9yIG9uZSBzdHJpbmcgb2YgdGhlbSBzZXBhcmF0ZWQgYnkgd2hpdGUgc3BhY2UuICovXG5leHBvcnQgdHlwZSBDbGFzc2VzID0gc3RyaW5nIHwgc3RyaW5nW11cblxuLyoqIGBodG1sLmthdGV4YDogbWF0aCByZW5kZXJlZCBhcyByZWh5cGUta2F0ZXggcmVuZGVycyBpdCwgbmF0aXZlbHkgYnkga2F0ZXgtcnM7IG9wdGlvbnMgbmFtZWQgYXMgS2FUZVggbmFtZXMgdGhlbS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgS2F0ZXhPcHRpb25zIHtcbiAgLyoqIFRoZSBtYXJrdXAgdG8gd3JpdGUsIGJvdGggSFRNTCBhbmQgTWF0aE1MIGJ5IGRlZmF1bHQuICovXG4gIG91dHB1dD86IEthdGV4T3V0cHV0IHwgbnVsbFxuICAvKiogUHV0IGVxdWF0aW9uIG51bWJlcnMgb24gdGhlIGxlZnQuIEBkZWZhdWx0IGZhbHNlICovXG4gIGxlcW5vPzogYm9vbGVhblxuICAvKiogQWxpZ24gZGlzcGxheSBtYXRoIHRvIHRoZSBsZWZ0IGluc3RlYWQgb2YgY2VudGVyaW5nIGl0LiBAZGVmYXVsdCBmYWxzZSAqL1xuICBmbGVxbj86IGJvb2xlYW5cbiAgLyoqIFRoZSBjb2xvciBvZiBtYXRoIHRoYXQgZmFpbHMgdG8gcmVuZGVyLCBgI2NjMDAwMGAgYnkgZGVmYXVsdC4gKi9cbiAgZXJyb3JDb2xvcj86IHN0cmluZyB8IG51bGxcbiAgLyoqIE1hY3JvcyBieSBuYW1lLCBlYWNoIHRvIHRoZSBUZVggaXQgZXhwYW5kcyB0bywgYXMgYHtcIlxcXFxSUlwiOiBcIlxcXFxtYXRoYmJ7Un1cIn1gLiBAZGVmYXVsdCB7fSAqL1xuICBtYWNyb3M/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+XG4gIC8qKiBUaGUgdGhpbm5lc3QgYSBydWxlLCBzdWNoIGFzIGEgZnJhY3Rpb24gbGluZSwgaXMgZHJhd24sIGluIGVtcy4gKi9cbiAgbWluUnVsZVRoaWNrbmVzcz86IG51bWJlciB8IG51bGxcbiAgLyoqIExldCBgXFxjb2xvcmAgY29sb3IgdGhlIHRleHQgYWZ0ZXIgaXQsIGFzIExhVGVYIGRvZXMuIEBkZWZhdWx0IGZhbHNlICovXG4gIGNvbG9ySXNUZXh0Q29sb3I/OiBib29sZWFuXG4gIC8qKiBXaGF0IHRvIGRvIHdpdGggaW5wdXQgTGFUZVggd291bGQgcmVqZWN0OiBgdHJ1ZWAgb3IgYFwiZXJyb3JcImAgZmFpbHMgaXQsIGBcIndhcm5cImAgcHJpbnRzIGEgd2FybmluZywgYGZhbHNlYCBvciBgXCJpZ25vcmVcImAgKHRoZSBkZWZhdWx0KSBhY2NlcHRzIGl0LiAqL1xuICBzdHJpY3Q/OiBLYXRleFN0cmljdCB8IG51bGxcbiAgLyoqIEFsbG93IGNvbW1hbmRzIHRoYXQgY2FuIHJ1biB1bnRydXN0ZWQgaW5wdXQsIHN1Y2ggYXMgYFxcaHJlZmAgYW5kIGBcXGluY2x1ZGVncmFwaGljc2AuIEBkZWZhdWx0IGZhbHNlICovXG4gIHRydXN0PzogYm9vbGVhblxuICAvKiogVGhlIGxhcmdlc3QgYSB1c2VyLWdpdmVuIHNpemUgbWF5IGJlLCBpbiBlbXMuICovXG4gIG1heFNpemU/OiBudW1iZXIgfCBudWxsXG4gIC8qKiBIb3cgbWFueSBtYWNybyBleHBhbnNpb25zIG9uZSBmb3JtdWxhIG1heSB0YWtlLCAxMDAwIGJ5IGRlZmF1bHQuICovXG4gIG1heEV4cGFuZD86IG51bWJlciB8IG51bGxcbiAgLyoqIExldCBkZWZpbml0aW9ucyBzdWNoIGFzIGBcXGRlZmAgbGFzdCBwYXN0IHRoZSBmb3JtdWxhIHRoZXkgYXJlIGluLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBnbG9iYWxHcm91cD86IGJvb2xlYW5cbn1cblxuLyoqIFRoZSBtYXJrdXAgS2FUZVggd3JpdGVzLiAqL1xuZXhwb3J0IHR5cGUgS2F0ZXhPdXRwdXQgPSBcImh0bWxcIiB8IFwibWF0aG1sXCIgfCBcImh0bWxBbmRNYXRobWxcIlxuXG4vKiogSG93IHN0cmljdGx5IEthVGVYIGhvbGRzIGlucHV0IHRvIExhVGVYLiAqL1xuZXhwb3J0IHR5cGUgS2F0ZXhTdHJpY3QgPSBib29sZWFuIHwgS2F0ZXhTdHJpY3RNb2RlXG5cbi8qKiBPbmUgbGV2ZWwgb2YgS2FUZVgncyBzdHJpY3RuZXNzLiAqL1xuZXhwb3J0IHR5cGUgS2F0ZXhTdHJpY3RNb2RlID0gXCJpZ25vcmVcIiB8IFwid2FyblwiIHwgXCJlcnJvclwiXG5cbi8qKiBgaHRtbC50b01hcmtkb3duYDogaGFzdCBpbnRvIG1kYXN0OyBvcHRpb25zIG5hbWVkIGFzIGhhc3QtdXRpbC10by1tZGFzdCBuYW1lcyB0aGVtLiAqL1xuZXhwb3J0IGludGVyZmFjZSBUb01hcmtkb3duT3B0aW9ucyB7XG4gIC8qKiBXcmFwIGFsbCBwaHJhc2luZyBjb250ZW50IG9mIHRoZSByb290IGluIHBhcmFncmFwaHMsIGFzIGZvciBhIHdob2xlIGRvY3VtZW50LiBAZGVmYXVsdCBmYWxzZSAqL1xuICBkb2N1bWVudD86IGJvb2xlYW5cbiAgLyoqIENvbGxhcHNlIHdoaXRlc3BhY2UgaG9sZGluZyBhIGxpbmUgZW5kaW5nIHRvIHRoYXQgbGluZSBlbmRpbmcgaW5zdGVhZCBvZiBhIHNwYWNlLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBuZXdsaW5lcz86IGJvb2xlYW5cbiAgLyoqIFRoZSB0ZXh0IG9mIGEgY2hlY2tlZCBjaGVja2JveCBvciByYWRpbywgYFt4XWAgYnkgZGVmYXVsdC4gKi9cbiAgY2hlY2tlZD86IHN0cmluZyB8IG51bGxcbiAgLyoqIFRoZSB0ZXh0IG9mIGFuIHVuY2hlY2tlZCBjaGVja2JveCBvciByYWRpbywgYFsgXWAgYnkgZGVmYXVsdC4gKi9cbiAgdW5jaGVja2VkPzogc3RyaW5nIHwgbnVsbFxuICAvKiogVGhlIHF1b3RlcyBgPHE+YCB1c2VzLCBhbiBvcGVuaW5nIGFuZCBjbG9zaW5nIGNoYXJhY3RlciBlYWNoLCBhbHRlcm5hdGluZyBieSBob3cgZGVlcCBpdCBuZXN0czsgYFwiYCBieSBkZWZhdWx0LiAqL1xuICBxdW90ZXM/OiBzdHJpbmdbXSB8IG51bGxcbn1cblxuLyoqIGBodG1sLnN0cmluZ2lmeWA6IGhhc3QgaW50byBIVE1MOyBvcHRpb25zIG5hbWVkIGFzIGhhc3QtdXRpbC10by1odG1sIG5hbWVzIHRoZW0uICovXG5leHBvcnQgaW50ZXJmYWNlIFN0cmluZ2lmeU9wdGlvbnMge1xuICAvKiogV3JpdGUgcmF3IG5vZGVzIGFzIHRoZXkgYXJlIGluc3RlYWQgb2YgZXNjYXBpbmcgdGhlbS4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgYWxsb3dEYW5nZXJvdXNIdG1sPzogYm9vbGVhblxuICAvKiogTGVhdmUgY2hhcmFjdGVycyB0aGF0IGFyZSBvbmx5IGRhbmdlcm91cyBpbiBzb21lIGNvbnRleHRzLCBzdWNoIGFzIGBgIGAgYGAsIGFzIHRoZXkgYXJlLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBhbGxvd0Rhbmdlcm91c0NoYXJhY3RlcnM/OiBib29sZWFuXG4gIC8qKiBMZWF2ZSBjaGFyYWN0ZXJzIGFzIHRoZXkgYXJlIHdoZXJlIGJyb3dzZXJzIGFjY2VwdCB0aGVtIHRob3VnaCB0aGUgc3BlYyBkb2VzIG5vdC4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgYWxsb3dQYXJzZUVycm9ycz86IGJvb2xlYW5cbiAgLyoqIFdyaXRlIGNvbW1lbnRzIGFzIGJvZ3VzIGNvbW1lbnRzLCBgPD9hPmAuIEBkZWZhdWx0IGZhbHNlICovXG4gIGJvZ3VzQ29tbWVudHM/OiBib29sZWFuXG4gIC8qKiBDbG9zZSBlbXB0eSBmb3JlaWduIGVsZW1lbnRzLCBgPGEgLz5gLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBjbG9zZUVtcHR5RWxlbWVudHM/OiBib29sZWFuXG4gIC8qKiBDbG9zZSB2b2lkIGVsZW1lbnRzLCBgPGJyIC8+YC4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgY2xvc2VTZWxmQ2xvc2luZz86IGJvb2xlYW5cbiAgLyoqIFdyaXRlIGVtcHR5IGF0dHJpYnV0ZXMgYXMgYmFyZSBuYW1lcywgYGFgIHJhdGhlciB0aGFuIGBhPVwiXCJgLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBjb2xsYXBzZUVtcHR5QXR0cmlidXRlcz86IGJvb2xlYW5cbiAgLyoqIExlYXZlIG91dCB0YWdzIHRoZSBIVE1MIHNwZWMgbGV0cyBhIHBhcnNlciBpbXBseS4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgb21pdE9wdGlvbmFsVGFncz86IGJvb2xlYW5cbiAgLyoqIExlYXZlIGF0dHJpYnV0ZSB2YWx1ZXMgdW5xdW90ZWQgd2hlcmUgdGhhdCBpcyBzYWZlLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBwcmVmZXJVbnF1b3RlZD86IGJvb2xlYW5cbiAgLyoqIFRoZSBxdW90ZSBhdHRyaWJ1dGUgdmFsdWVzIGFyZSB3cmFwcGVkIGluOiBgXCJgIG9yIGAnYC4gKi9cbiAgcXVvdGU/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBVc2UgdGhlIG90aGVyIHF1b3RlIHdoZW4gdGhlIHZhbHVlIGhvbGRzIG1vcmUgb2YgdGhlIHByZWZlcnJlZCBvbmUuIEBkZWZhdWx0IGZhbHNlICovXG4gIHF1b3RlU21hcnQ/OiBib29sZWFuXG4gIC8qKiBUaGUgc3BhY2UgdGhlIHRyZWUgaXMgaW46IGBodG1sYCBvciBgc3ZnYC4gKi9cbiAgc3BhY2U/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBMZWF2ZSBvdXQgdGhlIHNwYWNlIGJldHdlZW4gcXVvdGVkIGF0dHJpYnV0ZXMuIEBkZWZhdWx0IGZhbHNlICovXG4gIHRpZ2h0QXR0cmlidXRlcz86IGJvb2xlYW5cbiAgLyoqIEpvaW4gY29tbWEtc2VwYXJhdGVkIHZhbHVlcyB3aXRoIGAsYCByYXRoZXIgdGhhbiBgLCBgLiBAZGVmYXVsdCBmYWxzZSAqL1xuICB0aWdodENvbW1hU2VwYXJhdGVkTGlzdHM/OiBib29sZWFuXG4gIC8qKiBXcml0ZSBgPCFkb2N0eXBlaHRtbD5gLiBAZGVmYXVsdCBmYWxzZSAqL1xuICB0aWdodERvY3R5cGU/OiBib29sZWFuXG4gIC8qKiBMZWF2ZSBvdXQgdGhlIHNwYWNlIGJlZm9yZSBgLz5gIHdoZW4gdGhlIGF0dHJpYnV0ZXMgYWxsb3cuIEBkZWZhdWx0IGZhbHNlICovXG4gIHRpZ2h0U2VsZkNsb3Npbmc/OiBib29sZWFuXG4gIC8qKiBXcml0ZSBgPCFET0NUWVBFIGh0bWw+YC4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgdXBwZXJEb2N0eXBlPzogYm9vbGVhblxuICAvKiogVGhlIHRhZyBuYW1lcyBvZiB2b2lkIGVsZW1lbnRzLCB3aGljaCBoYXZlIG5vIGNsb3NpbmcgdGFnLiAqL1xuICB2b2lkcz86IHN0cmluZ1tdIHwgbnVsbFxufVxuXG4vKiogVGhlIGBodG1sLnBhcnNlYCBwbHVnaW4uICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2Uob3B0aW9ucz86IFBhcnNlT3B0aW9ucyk6IFBsdWdpbjxcImh0bWwucGFyc2VcIiwgUGFyc2VPcHRpb25zPiAmIFBhcnNlcjxSb290PiB7XG4gIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiB7IG5hbWU6IFwiaHRtbC5wYXJzZVwiIH1cbiAgcmV0dXJuIHsgbmFtZTogXCJodG1sLnBhcnNlXCIsIG9wdGlvbnMgfVxufVxuXG4vKiogVGhlIGBodG1sLnJhd2AgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJhdyhvcHRpb25zPzogUmF3T3B0aW9ucyk6IFBsdWdpbjxcImh0bWwucmF3XCIsIFJhd09wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJodG1sLnJhd1wiIH1cbiAgcmV0dXJuIHsgbmFtZTogXCJodG1sLnJhd1wiLCBvcHRpb25zIH1cbn1cblxuLyoqIFRoZSBgaHRtbC5mb3JtYXRgIHBsdWdpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXQob3B0aW9ucz86IEZvcm1hdE9wdGlvbnMpOiBQbHVnaW48XCJodG1sLmZvcm1hdFwiLCBGb3JtYXRPcHRpb25zPiB7XG4gIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiB7IG5hbWU6IFwiaHRtbC5mb3JtYXRcIiB9XG4gIHJldHVybiB7IG5hbWU6IFwiaHRtbC5mb3JtYXRcIiwgb3B0aW9ucyB9XG59XG5cbi8qKiBUaGUgYGh0bWwuc2FuaXRpemVgIHBsdWdpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzYW5pdGl6ZShvcHRpb25zPzogU2FuaXRpemVPcHRpb25zKTogUGx1Z2luPFwiaHRtbC5zYW5pdGl6ZVwiLCBTYW5pdGl6ZU9wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJodG1sLnNhbml0aXplXCIgfVxuICByZXR1cm4geyBuYW1lOiBcImh0bWwuc2FuaXRpemVcIiwgb3B0aW9ucyB9XG59XG5cbi8qKiBUaGUgYGh0bWwuc2x1Z2AgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNsdWcob3B0aW9ucz86IFNsdWdPcHRpb25zKTogUGx1Z2luPFwiaHRtbC5zbHVnXCIsIFNsdWdPcHRpb25zPiB7XG4gIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiB7IG5hbWU6IFwiaHRtbC5zbHVnXCIgfVxuICByZXR1cm4geyBuYW1lOiBcImh0bWwuc2x1Z1wiLCBvcHRpb25zIH1cbn1cblxuLyoqIFRoZSBgaHRtbC5leHRlcm5hbExpbmtzYCBwbHVnaW4uICovXG5leHBvcnQgZnVuY3Rpb24gZXh0ZXJuYWxMaW5rcyhvcHRpb25zPzogRXh0ZXJuYWxMaW5rc09wdGlvbnMpOiBQbHVnaW48XCJodG1sLmV4dGVybmFsTGlua3NcIiwgRXh0ZXJuYWxMaW5rc09wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJodG1sLmV4dGVybmFsTGlua3NcIiB9XG4gIHJldHVybiB7IG5hbWU6IFwiaHRtbC5leHRlcm5hbExpbmtzXCIsIG9wdGlvbnMgfVxufVxuXG4vKiogVGhlIGBodG1sLnVud3JhcEltYWdlc2AgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVud3JhcEltYWdlcygpOiBQbHVnaW48XCJodG1sLnVud3JhcEltYWdlc1wiPiB7XG4gIHJldHVybiB7IG5hbWU6IFwiaHRtbC51bndyYXBJbWFnZXNcIiB9XG59XG5cbi8qKiBUaGUgYGh0bWwuZXh0cmFjdFRvY2AgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RUb2Mob3B0aW9ucz86IEV4dHJhY3RUb2NPcHRpb25zKTogUGx1Z2luPFwiaHRtbC5leHRyYWN0VG9jXCIsIEV4dHJhY3RUb2NPcHRpb25zPiB7XG4gIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiB7IG5hbWU6IFwiaHRtbC5leHRyYWN0VG9jXCIgfVxuICByZXR1cm4geyBuYW1lOiBcImh0bWwuZXh0cmFjdFRvY1wiLCBvcHRpb25zIH1cbn1cblxuLyoqIFRoZSBgaHRtbC5oaWdobGlnaHRgIHBsdWdpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoaWdobGlnaHQob3B0aW9ucz86IEhpZ2hsaWdodE9wdGlvbnMpOiBQbHVnaW48XCJodG1sLmhpZ2hsaWdodFwiLCBIaWdobGlnaHRPcHRpb25zPiB7XG4gIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiB7IG5hbWU6IFwiaHRtbC5oaWdobGlnaHRcIiB9XG4gIHJldHVybiB7IG5hbWU6IFwiaHRtbC5oaWdobGlnaHRcIiwgb3B0aW9ucyB9XG59XG5cbi8qKiBUaGUgYGh0bWwua2F0ZXhgIHBsdWdpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBrYXRleChvcHRpb25zPzogS2F0ZXhPcHRpb25zKTogUGx1Z2luPFwiaHRtbC5rYXRleFwiLCBLYXRleE9wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJodG1sLmthdGV4XCIgfVxuICByZXR1cm4geyBuYW1lOiBcImh0bWwua2F0ZXhcIiwgb3B0aW9ucyB9XG59XG5cbi8qKiBUaGUgYGh0bWwudG9NYXJrZG93bmAgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvTWFya2Rvd24ob3B0aW9ucz86IFRvTWFya2Rvd25PcHRpb25zKTogUGx1Z2luPFwiaHRtbC50b01hcmtkb3duXCIsIFRvTWFya2Rvd25PcHRpb25zPiB7XG4gIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiB7IG5hbWU6IFwiaHRtbC50b01hcmtkb3duXCIgfVxuICByZXR1cm4geyBuYW1lOiBcImh0bWwudG9NYXJrZG93blwiLCBvcHRpb25zIH1cbn1cblxuLyoqIFRoZSBgaHRtbC50b05hdHVyYWxMYW5ndWFnZWAgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvTmF0dXJhbExhbmd1YWdlKCk6IFBsdWdpbjxcImh0bWwudG9OYXR1cmFsTGFuZ3VhZ2VcIj4ge1xuICByZXR1cm4geyBuYW1lOiBcImh0bWwudG9OYXR1cmFsTGFuZ3VhZ2VcIiB9XG59XG5cbi8qKiBUaGUgYGh0bWwuc3RyaW5naWZ5YCBwbHVnaW4uICovXG5leHBvcnQgZnVuY3Rpb24gc3RyaW5naWZ5KG9wdGlvbnM/OiBTdHJpbmdpZnlPcHRpb25zKTogUGx1Z2luPFwiaHRtbC5zdHJpbmdpZnlcIiwgU3RyaW5naWZ5T3B0aW9ucz4ge1xuICBpZiAob3B0aW9ucyA9PT0gdW5kZWZpbmVkKSByZXR1cm4geyBuYW1lOiBcImh0bWwuc3RyaW5naWZ5XCIgfVxuICByZXR1cm4geyBuYW1lOiBcImh0bWwuc3RyaW5naWZ5XCIsIG9wdGlvbnMgfVxufVxuIl19
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2dlbmVyYXRlZC9odG1sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtFQUErRTtBQTRRL0UsK0JBQStCO0FBQy9CLE1BQU0sVUFBVSxLQUFLLENBQUMsT0FBc0I7SUFDMUMsSUFBSSxPQUFPLEtBQUssU0FBUztRQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLENBQUE7SUFDeEQsT0FBTyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLENBQUE7QUFDeEMsQ0FBQztBQUVELDZCQUE2QjtBQUM3QixNQUFNLFVBQVUsR0FBRyxDQUFDLE9BQW9CO0lBQ3RDLElBQUksT0FBTyxLQUFLLFNBQVM7UUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFBO0lBQ3RELE9BQU8sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxDQUFBO0FBQ3RDLENBQUM7QUFFRCxnQ0FBZ0M7QUFDaEMsTUFBTSxVQUFVLE1BQU0sQ0FBQyxPQUF1QjtJQUM1QyxJQUFJLE9BQU8sS0FBSyxTQUFTO1FBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsQ0FBQTtJQUN6RCxPQUFPLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsQ0FBQTtBQUN6QyxDQUFDO0FBRUQsa0NBQWtDO0FBQ2xDLE1BQU0sVUFBVSxRQUFRLENBQUMsT0FBeUI7SUFDaEQsSUFBSSxPQUFPLEtBQUssU0FBUztRQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLENBQUE7SUFDM0QsT0FBTyxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLENBQUE7QUFDM0MsQ0FBQztBQUVELDhCQUE4QjtBQUM5QixNQUFNLFVBQVUsSUFBSSxDQUFDLE9BQXFCO0lBQ3hDLElBQUksT0FBTyxLQUFLLFNBQVM7UUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxDQUFBO0lBQ3ZELE9BQU8sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxDQUFBO0FBQ3ZDLENBQUM7QUFFRCx1Q0FBdUM7QUFDdkMsTUFBTSxVQUFVLGFBQWEsQ0FBQyxPQUE4QjtJQUMxRCxJQUFJLE9BQU8sS0FBSyxTQUFTO1FBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxvQkFBb0IsRUFBRSxDQUFBO0lBQ2hFLE9BQU8sRUFBRSxJQUFJLEVBQUUsb0JBQW9CLEVBQUUsT0FBTyxFQUFFLENBQUE7QUFDaEQsQ0FBQztBQUVELHNDQUFzQztBQUN0QyxNQUFNLFVBQVUsWUFBWTtJQUMxQixPQUFPLEVBQUUsSUFBSSxFQUFFLG1CQUFtQixFQUFFLENBQUE7QUFDdEMsQ0FBQztBQUVELG9DQUFvQztBQUNwQyxNQUFNLFVBQVUsVUFBVSxDQUFDLE9BQTJCO0lBQ3BELElBQUksT0FBTyxLQUFLLFNBQVM7UUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLENBQUE7SUFDN0QsT0FBTyxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsQ0FBQTtBQUM3QyxDQUFDO0FBRUQsbUNBQW1DO0FBQ25DLE1BQU0sVUFBVSxTQUFTLENBQUMsT0FBMEI7SUFDbEQsSUFBSSxPQUFPLEtBQUssU0FBUztRQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQTtJQUM1RCxPQUFPLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE9BQU8sRUFBRSxDQUFBO0FBQzVDLENBQUM7QUFFRCwrQkFBK0I7QUFDL0IsTUFBTSxVQUFVLEtBQUssQ0FBQyxPQUFzQjtJQUMxQyxJQUFJLE9BQU8sS0FBSyxTQUFTO1FBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsQ0FBQTtJQUN4RCxPQUFPLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsQ0FBQTtBQUN4QyxDQUFDO0FBRUQsb0NBQW9DO0FBQ3BDLE1BQU0sVUFBVSxVQUFVLENBQUMsT0FBMkI7SUFDcEQsSUFBSSxPQUFPLEtBQUssU0FBUztRQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQTtJQUM3RCxPQUFPLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLE9BQU8sRUFBRSxDQUFBO0FBQzdDLENBQUM7QUFFRCwyQ0FBMkM7QUFDM0MsTUFBTSxVQUFVLGlCQUFpQjtJQUMvQixPQUFPLEVBQUUsSUFBSSxFQUFFLHdCQUF3QixFQUFFLENBQUE7QUFDM0MsQ0FBQztBQUVELG1DQUFtQztBQUNuQyxNQUFNLFVBQVUsU0FBUyxDQUFDLE9BQTBCO0lBQ2xELElBQUksT0FBTyxLQUFLLFNBQVM7UUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLENBQUE7SUFDNUQsT0FBTyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsQ0FBQTtBQUM1QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gR2VuZXJhdGVkIGJ5IGBwbnBtIGdlbmVyYXRlOmJpbmRpbmdzYCBmcm9tIHRoZSBjcmF0ZSdzIHBsdWdpbnM7IGRvIG5vdCBlZGl0LlxuXG5pbXBvcnQgdHlwZSB7IFJvb3QgfSBmcm9tIFwiaGFzdFwiXG5pbXBvcnQgdHlwZSB7IFBhcnNlciwgUGx1Z2luIH0gZnJvbSBcIi4uL21vZGVscy9wbHVnaW4udHNcIlxuXG4vKiogYGh0bWwucGFyc2VgOiBIVE1MIGludG8gaGFzdDsgb3B0aW9ucyBuYW1lZCBhcyByZWh5cGUtcGFyc2UgbmFtZXMgdGhlbS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFyc2VPcHRpb25zIHtcbiAgLyoqIFBhcnNlIGEgZnJhZ21lbnQsIGFzIGluIGEgYHRlbXBsYXRlYCwgcmF0aGVyIHRoYW4gYSB3aG9sZSBkb2N1bWVudC4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgZnJhZ21lbnQ/OiBib29sZWFuXG4gIC8qKiBSZXBvcnQgcGFyc2UgZXJyb3JzIGFzIG1lc3NhZ2VzIG9uIHRoZSBmaWxlLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBlbWl0UGFyc2VFcnJvcnM/OiBib29sZWFuXG4gIC8qKiBBZGQgdGhlIHBvc2l0aW9ucyBvZiBvcGVuaW5nIGFuZCBjbG9zaW5nIHRhZ3MgYW5kIGF0dHJpYnV0ZXMgdG8gZWxlbWVudHMuIEBkZWZhdWx0IGZhbHNlICovXG4gIHZlcmJvc2U/OiBib29sZWFuXG59XG5cbi8qKiBgaHRtbC5yYXdgOiByZXBhcnNlIHJhdyBIVE1MIGFuZCBmaXggbmVzdGluZyB0aHJvdWdoIHRoZSBIVE1MIHBhcnNlcjsgb3B0aW9ucyBuYW1lZCBhcyBoYXN0LXV0aWwtcmF3IG5hbWVzIHRoZW0uICovXG5leHBvcnQgaW50ZXJmYWNlIFJhd09wdGlvbnMge1xuICAvKiogTm9kZSB0eXBlcywgdW5rbm93biB0byBoYXN0LCB0byBjb3B5IHRocm91Z2ggYXMgdGhleSBhcmU7IHRoZWlyIGNoaWxkcmVuIGFyZSByZXBhcnNlZCBvbiB0aGVpciBvd24uIEBkZWZhdWx0IFtdICovXG4gIHBhc3NUaHJvdWdoPzogc3RyaW5nW11cbiAgLyoqIEVzY2FwZSB0aGUgb3BlbmluZyBgPGAgb2YgdGhlIHRhZ3MgR0ZNJ3MgdGFnZmlsdGVyIGRpc2FsbG93cyBpbiByYXcgbm9kZXMuIEBkZWZhdWx0IGZhbHNlICovXG4gIHRhZ2ZpbHRlcj86IGJvb2xlYW5cbn1cblxuLyoqIGBodG1sLmZvcm1hdGA6IGluZGVudCBhbmQgY29sbGFwc2Ugd2hpdGVzcGFjZSBmb3IgcmVhZGFibGUgSFRNTDsgb3B0aW9ucyBuYW1lZCBhcyBoYXN0LXV0aWwtZm9ybWF0IG5hbWVzIHRoZW0uICovXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1hdE9wdGlvbnMge1xuICAvKiogVGFnIG5hbWVzIG9mIGVsZW1lbnRzIHRvIHB1dCBhIGJsYW5rIGxpbmUgYmV0d2Vlbiwgd2hlbiBib3RoIGFyZSBvbmUuIEBkZWZhdWx0IFtdICovXG4gIGJsYW5rcz86IHN0cmluZ1tdXG4gIC8qKiBPbmUgbGV2ZWwgb2YgaW5kZW50YXRpb246IGEgbnVtYmVyIG9mIHNwYWNlcyBvciB0aGUgdGV4dCBpdHNlbGY7IHR3byBzcGFjZXMgd2hlbiBsZWZ0IG91dC4gKi9cbiAgaW5kZW50PzogSW5kZW50IHwgbnVsbFxuICAvKiogSW5kZW50IHRoZSBmaXJzdCBsZXZlbCwgdXN1YWxseSBgPGh0bWw+YCdzIGBoZWFkYCBhbmQgYGJvZHlgOyBgdHJ1ZWAgd2hlbiBsZWZ0IG91dC4gKi9cbiAgaW5kZW50SW5pdGlhbD86IGJvb2xlYW4gfCBudWxsXG4gIC8qKiBPbmx5IGNvbGxhcHNlIHdoaXRlc3BhY2UsIGFzIHJlaHlwZS1taW5pZnktd2hpdGVzcGFjZSBkb2VzLCBhZGRpbmcgbm8gbGluZSBlbmRpbmdzIG9yIGluZGVudGF0aW9uOyBgeyBuZXdsaW5lczogdHJ1ZSB9YCBjb2xsYXBzZXMgYSBydW4gaG9sZGluZyBhIGxpbmUgZW5kaW5nIHRvIGl0LiAqL1xuICBtaW5pZnk/OiBNaW5pZnkgfCBudWxsXG59XG5cbi8qKiBPbmUgbGV2ZWwgb2YgaW5kZW50YXRpb24uICovXG5leHBvcnQgdHlwZSBJbmRlbnQgPSBudW1iZXIgfCBzdHJpbmdcblxuLyoqIGBodG1sLmZvcm1hdGAncyBgbWluaWZ5YDogb24sIG9yIG9uIHdpdGggcmVoeXBlLW1pbmlmeS13aGl0ZXNwYWNlJ3Mgb3B0aW9ucy4gKi9cbmV4cG9ydCB0eXBlIE1pbmlmeSA9IGJvb2xlYW4gfCBNaW5pZnlPcHRpb25zXG5cbi8qKiByZWh5cGUtbWluaWZ5LXdoaXRlc3BhY2UncyBvcHRpb25zLiAqL1xuZXhwb3J0IGludGVyZmFjZSBNaW5pZnlPcHRpb25zIHtcbiAgLyoqIENvbGxhcHNlIGEgcnVuIG9mIHdoaXRlc3BhY2UgaG9sZGluZyBhIGxpbmUgZW5kaW5nIHRvIGEgbGluZSBlbmRpbmcsIG5vdCBhIHNwYWNlLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBuZXdsaW5lcz86IGJvb2xlYW5cbn1cblxuLyoqIGBodG1sLnNhbml0aXplYDoga2VlcCBvbmx5IHdoYXQgYSBzY2hlbWEgYWxsb3dzOyBvcHRpb25zOiBoYXN0LXV0aWwtc2FuaXRpemUncyBzY2hlbWEsIHdoZXJlIGEgZmllbGQgbGVmdCBvdXQga2VlcHMgdGhlIGRlZmF1bHQgc2NoZW1hJ3MsIHdoaWNoIGlzIEdpdEh1YidzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBTYW5pdGl6ZU9wdGlvbnMge1xuICAvKiogS2VlcCBjb21tZW50cy4gKi9cbiAgYWxsb3dDb21tZW50cz86IGJvb2xlYW4gfCBudWxsXG4gIC8qKiBLZWVwIGRvY3R5cGVzLiAqL1xuICBhbGxvd0RvY3R5cGVzPzogYm9vbGVhbiB8IG51bGxcbiAgLyoqIEVsZW1lbnRzIGFsbG93ZWQgb25seSBpbnNpZGUgb25lIG9mIHRoZXNlIGFuY2VzdG9ycywgYnkgdGFnIG5hbWUuICovXG4gIGFuY2VzdG9ycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPiB8IG51bGxcbiAgLyoqIFByb3BlcnRpZXMgYWxsb3dlZCBwZXIgdGFnIG5hbWUsIGAqYCBmb3IgZXZlcnkgZWxlbWVudDsgYSBsaXN0IG5hbWVzIGEgcHJvcGVydHkgYW5kIHRoZSB2YWx1ZXMgaXQgbWF5IGhhdmUuICovXG4gIGF0dHJpYnV0ZXM/OiBSZWNvcmQ8c3RyaW5nLCBBdHRyaWJ1dGVEZWZpbml0aW9uW10+IHwgbnVsbFxuICAvKiogUHJvcGVydGllcyB3aG9zZSB2YWx1ZXMgZ2V0IGBjbG9iYmVyX3ByZWZpeGAsIHNvIHRoZXkgY2Fubm90IGNsb2JiZXIgZ2xvYmFscy4gKi9cbiAgY2xvYmJlcj86IHN0cmluZ1tdIHwgbnVsbFxuICAvKiogVGhlIHByZWZpeCBvZiBjbG9iYmVyZWQgdmFsdWVzLiAqL1xuICBjbG9iYmVyUHJlZml4Pzogc3RyaW5nIHwgbnVsbFxuICAvKiogVVJMIHByb3BlcnRpZXMgYW5kIHRoZSBwcm90b2NvbHMgdGhleSBtYXkgdXNlLiAqL1xuICBwcm90b2NvbHM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT4gfCBudWxsXG4gIC8qKiBQcm9wZXJ0aWVzIHNldCBvbiBlbGVtZW50cyB3aGF0ZXZlciB0aGV5IGhhZCwgYnkgdGFnIG5hbWUuICovXG4gIHJlcXVpcmVkPzogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgUHJpbWl0aXZlPj4gfCBudWxsXG4gIC8qKiBFbGVtZW50cyBkcm9wcGVkIHdpdGggdGhlaXIgY29udGVudCByYXRoZXIgdGhhbiB1bndyYXBwZWQuICovXG4gIHN0cmlwPzogc3RyaW5nW10gfCBudWxsXG4gIC8qKiBUaGUgZWxlbWVudHMga2VwdC4gKi9cbiAgdGFnTmFtZXM/OiBzdHJpbmdbXSB8IG51bGxcbn1cblxuLyoqIEEgcHJvcGVydHkgYSBzYW5pdGl6ZSBzY2hlbWEgYWxsb3dzOiBieSBuYW1lLCBvciBhIG5hbWUgYW5kIGl0cyBhbGxvd2VkIHZhbHVlcy4gKi9cbmV4cG9ydCB0eXBlIEF0dHJpYnV0ZURlZmluaXRpb24gPSBzdHJpbmcgfCBQcmltaXRpdmVbXVxuXG4vKiogQSBwcmltaXRpdmUgcHJvcGVydHkgdmFsdWUuICovXG5leHBvcnQgdHlwZSBQcmltaXRpdmUgPSBib29sZWFuIHwgbnVtYmVyIHwgc3RyaW5nXG5cbi8qKiBgaHRtbC5zbHVnYDogaWRzIG9uIGhlYWRpbmdzLCBmcm9tIHRoZWlyIHRleHQ7IG9wdGlvbnMgbmFtZWQgYXMgcmVoeXBlLXNsdWcgbmFtZXMgdGhlbS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2x1Z09wdGlvbnMge1xuICAvKiogUHV0IGJlZm9yZSBlYWNoIGlkLiBAZGVmYXVsdCBcIlwiICovXG4gIHByZWZpeD86IHN0cmluZ1xuICAvKiogTGluayBlYWNoIGhlYWRpbmcgd2l0aCBhbiBgaWRgIHRvIGl0c2VsZiwgYXMgcmVoeXBlLWF1dG9saW5rLWhlYWRpbmdzIGRvZXM6IGB0cnVlYCwgb3IgaXRzIG9wdGlvbnMuICovXG4gIGF1dG9saW5rPzogQXV0b2xpbmsgfCBudWxsXG59XG5cbi8qKiBgaHRtbC5zbHVnYCdzIGBhdXRvbGlua2A6IG9uLCBvciBvbiB3aXRoIHJlaHlwZS1hdXRvbGluay1oZWFkaW5ncycgb3B0aW9ucy4gKi9cbmV4cG9ydCB0eXBlIEF1dG9saW5rID0gYm9vbGVhbiB8IEF1dG9saW5rT3B0aW9uc1xuXG4vKiogcmVoeXBlLWF1dG9saW5rLWhlYWRpbmdzJyBvcHRpb25zLCBKU09OIHZhbHVlcyBvbmx5LiAqL1xuZXhwb3J0IGludGVyZmFjZSBBdXRvbGlua09wdGlvbnMge1xuICAvKiogV2hlcmUgdGhlIGxpbmsgZ29lczogaW4gdGhlIGhlYWRpbmcgZmlyc3Qgb3IgbGFzdCwgYXJvdW5kIGl0cyBjb250ZW50LCBvciBiZWZvcmUgb3IgYWZ0ZXIgaXQuICovXG4gIGJlaGF2aW9yPzogQXV0b2xpbmtCZWhhdmlvclxuICAvKiogVGhlIGxpbmsncyBwcm9wZXJ0aWVzLCBhcyBoYXN0IG5hbWVzIHRoZW07IGBhcmlhSGlkZGVuYCBhbmQgYHRhYkluZGV4OiAtMWAgZm9yIGBwcmVwZW5kYCBhbmQgYGFwcGVuZGAgd2hlbiBsZWZ0IG91dC4gKi9cbiAgcHJvcGVydGllcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgbnVsbFxuICAvKiogaGFzdCBjb250ZW50IG9mIHRoZSBsaW5rLCBvbmUgbm9kZSBvciBhIGxpc3Q7IGA8c3BhbiBjbGFzcz1cImljb24gaWNvbi1saW5rXCI+YCB3aGVuIGxlZnQgb3V0LCBleGNlcHQgZm9yIGB3cmFwYCwgd2hpY2ggYXBwZW5kcyBpdCB0byB0aGUgaGVhZGluZydzIGNvbnRlbnQuICovXG4gIGNvbnRlbnQ/OiB1bmtub3duXG4gIC8qKiBBIGhhc3QgZWxlbWVudCB3cmFwcGluZyB0aGUgaGVhZGluZyBhbmQgaXRzIGxpbmssIGZvciBgYmVmb3JlYCBhbmQgYGFmdGVyYC4gKi9cbiAgZ3JvdXA/OiB1bmtub3duXG4gIC8qKiBQcm9wZXJ0aWVzIHNldCBvbiBlYWNoIGxpbmtlZCBoZWFkaW5nLiAqL1xuICBoZWFkaW5nUHJvcGVydGllcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgbnVsbFxuICAvKiogVGhlIHRhZyBuYW1lcyBvZiB0aGUgaGVhZGluZ3MgdG8gbGluazsgZXZlcnkgaGVhZGluZyB3aGVuIGxlZnQgb3V0LiAqL1xuICB0ZXN0PzogVGFnTmFtZXMgfCBudWxsXG59XG5cbi8qKiBXaGVyZSBgYXV0b2xpbmtgIHB1dHMgZWFjaCBoZWFkaW5nJ3MgbGluay4gKi9cbmV4cG9ydCB0eXBlIEF1dG9saW5rQmVoYXZpb3IgPSBcInByZXBlbmRcIiB8IFwiYXBwZW5kXCIgfCBcIndyYXBcIiB8IFwiYmVmb3JlXCIgfCBcImFmdGVyXCJcblxuLyoqIE9uZSB0YWcgbmFtZSBvciBzZXZlcmFsLiAqL1xuZXhwb3J0IHR5cGUgVGFnTmFtZXMgPSBzdHJpbmcgfCBzdHJpbmdbXVxuXG4vKiogYGh0bWwuZXh0ZXJuYWxMaW5rc2A6IGByZWxgLCBgdGFyZ2V0YCBhbmQgbW9yZSBvbiBsaW5rcyB0byBvdGhlciBzaXRlcywgYXMgcmVoeXBlLWV4dGVybmFsLWxpbmtzIGFkZHMgdGhlbTsgb3B0aW9ucyBuYW1lZCBhcyBpdCBuYW1lcyB0aGVtLCBKU09OIHZhbHVlcyBvbmx5LiAqL1xuZXhwb3J0IGludGVyZmFjZSBFeHRlcm5hbExpbmtzT3B0aW9ucyB7XG4gIC8qKiBUaGUgYHRhcmdldGAgb2YgZWFjaCBleHRlcm5hbCBsaW5rLCBzdWNoIGFzIGBfYmxhbmtgLiAqL1xuICB0YXJnZXQ/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBUaGUgYHJlbGAgb2YgZWFjaCBleHRlcm5hbCBsaW5rOiBhIGxpc3QsIG9yIHRva2VucyBzZXBhcmF0ZWQgYnkgd2hpdGUgc3BhY2U7IGBub2ZvbGxvd2Agd2hlbiBsZWZ0IG91dCBvciBlbXB0eSwgbm9uZSBmb3IgYW4gZW1wdHkgbGlzdC4gKi9cbiAgcmVsPzogVG9rZW5zIHwgbnVsbFxuICAvKiogVGhlIHByb3RvY29scyBvZiBhYnNvbHV0ZSBVUkxzIHRoYXQgY291bnQgYXMgZXh0ZXJuYWw7IGBodHRwYCBhbmQgYGh0dHBzYCB3aGVuIGxlZnQgb3V0LiBBIHByb3RvY29sLXJlbGF0aXZlIGAvL+KApmAgVVJMIGFsd2F5cyBjb3VudHMuICovXG4gIHByb3RvY29scz86IHN0cmluZ1tdIHwgbnVsbFxuICAvKiogTW9yZSBwcm9wZXJ0aWVzIGZvciBlYWNoIGV4dGVybmFsIGxpbmssIGFzIGhhc3QgbmFtZXMgdGhlbS4gKi9cbiAgcHJvcGVydGllcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgbnVsbFxuICAvKiogaGFzdCBjb250ZW50IGFwcGVuZGVkIHRvIGVhY2ggZXh0ZXJuYWwgbGluayBpbiBhIGA8c3Bhbj5gOiBvbmUgbm9kZSBvciBhIGxpc3QuICovXG4gIGNvbnRlbnQ/OiB1bmtub3duXG4gIC8qKiBUaGUgcHJvcGVydGllcyBvZiB0aGF0IGA8c3Bhbj5gLiAqL1xuICBjb250ZW50UHJvcGVydGllcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgbnVsbFxufVxuXG4vKiogVG9rZW5zOiBhIGxpc3QsIG9yIG9uZSBzdHJpbmcgb2YgdGhlbSBzZXBhcmF0ZWQgYnkgd2hpdGUgc3BhY2UuICovXG5leHBvcnQgdHlwZSBUb2tlbnMgPSBzdHJpbmcgfCBzdHJpbmdbXVxuXG4vKiogYGh0bWwuZXh0cmFjdFRvY2A6IHRoZSBoZWFkaW5ncywgbmVzdGVkIGJ5IHJhbmssIGFzIHRoZSBmaWxlJ3MgYGRhdGEudG9jYCwgYXMgQHN0ZWZhbnByb2JzdC9yZWh5cGUtZXh0cmFjdC10b2Mgc3RvcmVzIHRoZW0uICovXG5leHBvcnQgaW50ZXJmYWNlIEV4dHJhY3RUb2NPcHRpb25zIHtcbiAgLyoqIEF0dHJpYnV0ZXMsIHN1Y2ggYXMgYGRhdGEtdG9jLWhpZGRlbmAsIHRoYXQga2VlcCBhIGhlYWRpbmcgb3V0IG9mIHRoZSB0YWJsZSBvZiBjb250ZW50czsgd2hhdCB3b3VsZCBuZXN0IHVuZGVyIGl0IG5lc3RzIHVuZGVyIHRoZSBoZWFkaW5nIGJlZm9yZS4gQGRlZmF1bHQgW10gKi9cbiAgc2tpcD86IHN0cmluZ1tdXG59XG5cbi8qKiBgaHRtbC5oaWdobGlnaHRgOiBjb2RlIGJsb2NrcyBjb2xvcmVkIGFzIFNoaWtpIGNvbG9ycyB0aGVtLCBuYXRpdmVseSBieSBnaWFsbG87IG9wdGlvbnMgbmFtZWQgYXMgQHNoaWtpanMvcmVoeXBlIG5hbWVzIHRoZW0uICovXG5leHBvcnQgaW50ZXJmYWNlIEhpZ2hsaWdodE9wdGlvbnMge1xuICAvKiogVGhlIHRoZW1lIG9mIGVhY2ggY29sb3IgbW9kZSwgYGxpZ2h0YCBmaXJzdCwgYXMgYHtcImxpZ2h0XCI6IOKApiwgXCJkYXJrXCI6IOKApn1gLiAqL1xuICB0aGVtZXM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IG51bGxcbiAgLyoqIFRoZSBvbmUgdGhlbWUsIHdoZW4gYHRoZW1lc2AgaXMgbm90IGdpdmVuLiAqL1xuICB0aGVtZT86IHN0cmluZyB8IG51bGxcbiAgLyoqIFRoZSBsYW5ndWFnZSBvZiBhIGJsb2NrIHRoYXQgbmFtZXMgbm9uZTsgc3VjaCBhIGJsb2NrIGlzIGxlZnQgYWxvbmUgd2l0aG91dCBpdC4gKi9cbiAgZGVmYXVsdExhbmd1YWdlPzogc3RyaW5nIHwgbnVsbFxuICAvKiogVGhlIGxhbmd1YWdlIG9mIGEgYmxvY2sgbmFtaW5nIG9uZSBTaGlraSBkb2VzIG5vdCBrbm93OyBsZWZ0IGFsb25lIHdpdGhvdXQgaXQuICovXG4gIGZhbGxiYWNrTGFuZ3VhZ2U/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBDb2xvcnMgdG8gcmVwbGFjZSwgYnkgdGhlaXIgbG93ZXJjYXNlIHNwZWxsaW5nOiBhIGNvbG9yIGZvciBldmVyeSB0aGVtZSwgb3IgYSB0aGVtZSdzIG5hbWUgdG8gYSBtYXAgb2YgaXRzIG93bi4gKi9cbiAgY29sb3JSZXBsYWNlbWVudHM/OiBSZWNvcmQ8c3RyaW5nLCBDb2xvclJlcGxhY2VtZW50PlxuICAvKiogQWRkIGBsYW5ndWFnZS08bmFtZT5gIHRvIGVhY2ggaGlnaGxpZ2h0ZWQgYDxjb2RlPmAuIEBkZWZhdWx0IGZhbHNlICovXG4gIGFkZExhbmd1YWdlQ2xhc3M/OiBib29sZWFuXG4gIC8qKiBIaWdobGlnaHQgaW5saW5lIGNvZGUgdG9vLCBieSBob3cgaXQgbmFtZXMgaXRzIGxhbmd1YWdlOiBgdGFpbGluZy1jdXJseS1jb2xvbmAgcmVhZHMgYGAgYGEoKXs6anN9YCBgYC4gKi9cbiAgaW5saW5lPzogSW5saW5lQ29kZSB8IG51bGxcbiAgLyoqIFRoZSBgPHByZT5gIHByb3BlcnR5IHRoYXQgZ2V0cyBhIGJsb2NrJ3MgbWV0YSwgdGhlIHRleHQgYWZ0ZXIgaXRzIGxhbmd1YWdlOyB0aGUgSlNPTiBzdGFuZC1pbiBmb3IgYHBhcnNlTWV0YVN0cmluZzogbWV0YSA9PiAoeyBbbmFtZV06IG1ldGEgfSlgLiAqL1xuICBtZXRhUHJvcGVydHk/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBUaGUgdHJhbnNmb3JtZXJzIG9mIEBzaGlraWpzL3RyYW5zZm9ybWVycyB0byBydW4sIGluIG9yZGVyLCBieSBuYW1lIG9yIHdpdGggb3B0aW9ucy4gKi9cbiAgdHJhbnNmb3JtZXJzPzogSGlnaGxpZ2h0VHJhbnNmb3JtZXJbXVxuICAvKiogTGluZXMgYXQgbGVhc3QgdGhpcyBsb25nLCBpbiBVVEYtMTYgdW5pdHMsIGFyZSBsZWZ0IG9uZSBwbGFpbiB0b2tlbiBhcyBTaGlraSdzIG93biBvcHRpb24gbGVhdmVzIHRoZW07IDIsMDAwIHdoZW4gbGVmdCBvdXQsIHdoZXJlIFNoaWtpIGhhcyBubyBsaW1pdCwgc2luY2UgYSBncmFtbWFyJ3MgdGltZSBncm93cyB3aXRoIHRoZSBzcXVhcmUgb2YgYSBsaW5lJ3MgbGVuZ3RoLiBgMGAgbGlmdHMgaXQuICovXG4gIHRva2VuaXplTWF4TGluZUxlbmd0aD86IG51bWJlciB8IG51bGxcbn1cblxuLyoqIEEgcmVwbGFjZW1lbnQgY29sb3IsIG9yIGEgdGhlbWUncyBvd24gcmVwbGFjZW1lbnRzLiAqL1xuZXhwb3J0IHR5cGUgQ29sb3JSZXBsYWNlbWVudCA9IHN0cmluZyB8IFJlY29yZDxzdHJpbmcsIHN0cmluZz5cblxuLyoqIEhvdyBpbmxpbmUgY29kZSBuYW1lcyBpdHMgbGFuZ3VhZ2UuICovXG5leHBvcnQgdHlwZSBJbmxpbmVDb2RlID0gXCJ0YWlsaW5nLWN1cmx5LWNvbG9uXCJcblxuLyoqIEEgdHJhbnNmb3JtZXIgb2YgQHNoaWtpanMvdHJhbnNmb3JtZXJzOiBpdHMgbmFtZSBhbG9uZSwgb3IgaXRzIG5hbWUgYW5kIG9wdGlvbnMuICovXG5leHBvcnQgdHlwZSBIaWdobGlnaHRUcmFuc2Zvcm1lciA9IFRyYW5zZm9ybWVyTmFtZSB8IENvbmZpZ3VyZWRUcmFuc2Zvcm1lclxuXG4vKiogVGhlIHRyYW5zZm9ybWVycyBgaHRtbC5oaWdobGlnaHRgIHJ1bnMgbmF0aXZlbHkuICovXG5leHBvcnQgdHlwZSBUcmFuc2Zvcm1lck5hbWUgPSBcIm5vdGF0aW9uRGlmZlwiIHwgXCJub3RhdGlvbkZvY3VzXCIgfCBcIm5vdGF0aW9uSGlnaGxpZ2h0XCIgfCBcIm5vdGF0aW9uRXJyb3JMZXZlbFwiIHwgXCJtZXRhSGlnaGxpZ2h0XCIgfCBcIm1ldGFXb3JkSGlnaGxpZ2h0XCIgfCBcInJlbmRlckxpbmVOdW1iZXJcIlxuXG4vKiogQSB0cmFuc2Zvcm1lciB3aXRoIGl0cyBvcHRpb25zLCBhcyBAc2hpa2lqcy90cmFuc2Zvcm1lcnMgbmFtZXMgdGhlbS4gKi9cbmV4cG9ydCB0eXBlIENvbmZpZ3VyZWRUcmFuc2Zvcm1lciA9IHsgbmFtZTogXCJub3RhdGlvbkRpZmZcIjsgY2xhc3NMaW5lQWRkPzogQ2xhc3NlcyB8IG51bGw7IGNsYXNzTGluZVJlbW92ZT86IENsYXNzZXMgfCBudWxsOyBjbGFzc0FjdGl2ZVByZT86IENsYXNzZXMgfCBudWxsOyBjbGFzc0FjdGl2ZUNvZGU/OiBDbGFzc2VzIHwgbnVsbCB9IHwgeyBuYW1lOiBcIm5vdGF0aW9uRm9jdXNcIjsgY2xhc3NBY3RpdmVMaW5lPzogQ2xhc3NlcyB8IG51bGw7IGNsYXNzQWN0aXZlUHJlPzogQ2xhc3NlcyB8IG51bGw7IGNsYXNzQWN0aXZlQ29kZT86IENsYXNzZXMgfCBudWxsIH0gfCB7IG5hbWU6IFwibm90YXRpb25IaWdobGlnaHRcIjsgY2xhc3NBY3RpdmVMaW5lPzogQ2xhc3NlcyB8IG51bGw7IGNsYXNzQWN0aXZlUHJlPzogQ2xhc3NlcyB8IG51bGw7IGNsYXNzQWN0aXZlQ29kZT86IENsYXNzZXMgfCBudWxsIH0gfCB7IG5hbWU6IFwibm90YXRpb25FcnJvckxldmVsXCI7IGNsYXNzTWFwPzogUmVjb3JkPHN0cmluZywgQ2xhc3Nlcz4gfCBudWxsOyBjbGFzc0FjdGl2ZVByZT86IENsYXNzZXMgfCBudWxsOyBjbGFzc0FjdGl2ZUNvZGU/OiBDbGFzc2VzIHwgbnVsbCB9IHwgeyBuYW1lOiBcIm1ldGFIaWdobGlnaHRcIjsgY2xhc3NOYW1lPzogQ2xhc3NlcyB8IG51bGw7IHplcm9JbmRleGVkPzogYm9vbGVhbiB9IHwgeyBuYW1lOiBcIm1ldGFXb3JkSGlnaGxpZ2h0XCI7IGNsYXNzTmFtZT86IENsYXNzZXMgfCBudWxsIH0gfCB7IG5hbWU6IFwicmVuZGVyTGluZU51bWJlclwiOyBjbGFzc0xpbmVOdW1iZXI/OiBDbGFzc2VzIHwgbnVsbDsgc3RhcnQ/OiBudW1iZXIgfCBudWxsIH1cblxuLyoqIENsYXNzIG5hbWVzOiBhIGxpc3QsIG9yIG9uZSBzdHJpbmcgb2YgdGhlbSBzZXBhcmF0ZWQgYnkgd2hpdGUgc3BhY2UuICovXG5leHBvcnQgdHlwZSBDbGFzc2VzID0gc3RyaW5nIHwgc3RyaW5nW11cblxuLyoqIGBodG1sLmthdGV4YDogbWF0aCByZW5kZXJlZCBhcyByZWh5cGUta2F0ZXggcmVuZGVycyBpdCwgbmF0aXZlbHkgYnkga2F0ZXgtcnM7IG9wdGlvbnMgbmFtZWQgYXMgS2FUZVggbmFtZXMgdGhlbS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgS2F0ZXhPcHRpb25zIHtcbiAgLyoqIFRoZSBtYXJrdXAgdG8gd3JpdGUsIGJvdGggSFRNTCBhbmQgTWF0aE1MIGJ5IGRlZmF1bHQuICovXG4gIG91dHB1dD86IEthdGV4T3V0cHV0IHwgbnVsbFxuICAvKiogUHV0IGVxdWF0aW9uIG51bWJlcnMgb24gdGhlIGxlZnQuIEBkZWZhdWx0IGZhbHNlICovXG4gIGxlcW5vPzogYm9vbGVhblxuICAvKiogQWxpZ24gZGlzcGxheSBtYXRoIHRvIHRoZSBsZWZ0IGluc3RlYWQgb2YgY2VudGVyaW5nIGl0LiBAZGVmYXVsdCBmYWxzZSAqL1xuICBmbGVxbj86IGJvb2xlYW5cbiAgLyoqIFRoZSBjb2xvciBvZiBtYXRoIHRoYXQgZmFpbHMgdG8gcmVuZGVyLCBgI2NjMDAwMGAgYnkgZGVmYXVsdC4gKi9cbiAgZXJyb3JDb2xvcj86IHN0cmluZyB8IG51bGxcbiAgLyoqIE1hY3JvcyBieSBuYW1lLCBlYWNoIHRvIHRoZSBUZVggaXQgZXhwYW5kcyB0bywgYXMgYHtcIlxcXFxSUlwiOiBcIlxcXFxtYXRoYmJ7Un1cIn1gLiBAZGVmYXVsdCB7fSAqL1xuICBtYWNyb3M/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+XG4gIC8qKiBUaGUgdGhpbm5lc3QgYSBydWxlLCBzdWNoIGFzIGEgZnJhY3Rpb24gbGluZSwgaXMgZHJhd24sIGluIGVtcy4gKi9cbiAgbWluUnVsZVRoaWNrbmVzcz86IG51bWJlciB8IG51bGxcbiAgLyoqIExldCBgXFxjb2xvcmAgY29sb3IgdGhlIHRleHQgYWZ0ZXIgaXQsIGFzIExhVGVYIGRvZXMuIEBkZWZhdWx0IGZhbHNlICovXG4gIGNvbG9ySXNUZXh0Q29sb3I/OiBib29sZWFuXG4gIC8qKiBXaGF0IHRvIGRvIHdpdGggaW5wdXQgTGFUZVggd291bGQgcmVqZWN0OiBgdHJ1ZWAgb3IgYFwiZXJyb3JcImAgZmFpbHMgaXQsIGBcIndhcm5cImAgcHJpbnRzIGEgd2FybmluZywgYGZhbHNlYCBvciBgXCJpZ25vcmVcImAgKHRoZSBkZWZhdWx0KSBhY2NlcHRzIGl0LiAqL1xuICBzdHJpY3Q/OiBLYXRleFN0cmljdCB8IG51bGxcbiAgLyoqIEFsbG93IGNvbW1hbmRzIHRoYXQgY2FuIHJ1biB1bnRydXN0ZWQgaW5wdXQsIHN1Y2ggYXMgYFxcaHJlZmAgYW5kIGBcXGluY2x1ZGVncmFwaGljc2AuIEBkZWZhdWx0IGZhbHNlICovXG4gIHRydXN0PzogYm9vbGVhblxuICAvKiogVGhlIGxhcmdlc3QgYSB1c2VyLWdpdmVuIHNpemUgbWF5IGJlLCBpbiBlbXMuICovXG4gIG1heFNpemU/OiBudW1iZXIgfCBudWxsXG4gIC8qKiBIb3cgbWFueSBtYWNybyBleHBhbnNpb25zIG9uZSBmb3JtdWxhIG1heSB0YWtlLCAxMDAwIGJ5IGRlZmF1bHQuICovXG4gIG1heEV4cGFuZD86IG51bWJlciB8IG51bGxcbiAgLyoqIExldCBkZWZpbml0aW9ucyBzdWNoIGFzIGBcXGRlZmAgbGFzdCBwYXN0IHRoZSBmb3JtdWxhIHRoZXkgYXJlIGluLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBnbG9iYWxHcm91cD86IGJvb2xlYW5cbn1cblxuLyoqIFRoZSBtYXJrdXAgS2FUZVggd3JpdGVzLiAqL1xuZXhwb3J0IHR5cGUgS2F0ZXhPdXRwdXQgPSBcImh0bWxcIiB8IFwibWF0aG1sXCIgfCBcImh0bWxBbmRNYXRobWxcIlxuXG4vKiogSG93IHN0cmljdGx5IEthVGVYIGhvbGRzIGlucHV0IHRvIExhVGVYLiAqL1xuZXhwb3J0IHR5cGUgS2F0ZXhTdHJpY3QgPSBib29sZWFuIHwgS2F0ZXhTdHJpY3RNb2RlXG5cbi8qKiBPbmUgbGV2ZWwgb2YgS2FUZVgncyBzdHJpY3RuZXNzLiAqL1xuZXhwb3J0IHR5cGUgS2F0ZXhTdHJpY3RNb2RlID0gXCJpZ25vcmVcIiB8IFwid2FyblwiIHwgXCJlcnJvclwiXG5cbi8qKiBgaHRtbC50b01hcmtkb3duYDogaGFzdCBpbnRvIG1kYXN0OyBvcHRpb25zIG5hbWVkIGFzIGhhc3QtdXRpbC10by1tZGFzdCBuYW1lcyB0aGVtLiAqL1xuZXhwb3J0IGludGVyZmFjZSBUb01hcmtkb3duT3B0aW9ucyB7XG4gIC8qKiBXcmFwIGFsbCBwaHJhc2luZyBjb250ZW50IG9mIHRoZSByb290IGluIHBhcmFncmFwaHMsIGFzIGZvciBhIHdob2xlIGRvY3VtZW50LiBAZGVmYXVsdCBmYWxzZSAqL1xuICBkb2N1bWVudD86IGJvb2xlYW5cbiAgLyoqIENvbGxhcHNlIHdoaXRlc3BhY2UgaG9sZGluZyBhIGxpbmUgZW5kaW5nIHRvIHRoYXQgbGluZSBlbmRpbmcgaW5zdGVhZCBvZiBhIHNwYWNlLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBuZXdsaW5lcz86IGJvb2xlYW5cbiAgLyoqIFRoZSB0ZXh0IG9mIGEgY2hlY2tlZCBjaGVja2JveCBvciByYWRpbywgYFt4XWAgYnkgZGVmYXVsdC4gKi9cbiAgY2hlY2tlZD86IHN0cmluZyB8IG51bGxcbiAgLyoqIFRoZSB0ZXh0IG9mIGFuIHVuY2hlY2tlZCBjaGVja2JveCBvciByYWRpbywgYFsgXWAgYnkgZGVmYXVsdC4gKi9cbiAgdW5jaGVja2VkPzogc3RyaW5nIHwgbnVsbFxuICAvKiogVGhlIHF1b3RlcyBgPHE+YCB1c2VzLCBhbiBvcGVuaW5nIGFuZCBjbG9zaW5nIGNoYXJhY3RlciBlYWNoLCBhbHRlcm5hdGluZyBieSBob3cgZGVlcCBpdCBuZXN0czsgYFwiYCBieSBkZWZhdWx0LiAqL1xuICBxdW90ZXM/OiBzdHJpbmdbXSB8IG51bGxcbn1cblxuLyoqIGBodG1sLnN0cmluZ2lmeWA6IGhhc3QgaW50byBIVE1MOyBvcHRpb25zIG5hbWVkIGFzIGhhc3QtdXRpbC10by1odG1sIG5hbWVzIHRoZW0uICovXG5leHBvcnQgaW50ZXJmYWNlIFN0cmluZ2lmeU9wdGlvbnMge1xuICAvKiogV3JpdGUgcmF3IG5vZGVzIGFzIHRoZXkgYXJlIGluc3RlYWQgb2YgZXNjYXBpbmcgdGhlbS4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgYWxsb3dEYW5nZXJvdXNIdG1sPzogYm9vbGVhblxuICAvKiogTGVhdmUgY2hhcmFjdGVycyB0aGF0IGFyZSBvbmx5IGRhbmdlcm91cyBpbiBzb21lIGNvbnRleHRzLCBzdWNoIGFzIGBgIGAgYGAsIGFzIHRoZXkgYXJlLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBhbGxvd0Rhbmdlcm91c0NoYXJhY3RlcnM/OiBib29sZWFuXG4gIC8qKiBMZWF2ZSBjaGFyYWN0ZXJzIGFzIHRoZXkgYXJlIHdoZXJlIGJyb3dzZXJzIGFjY2VwdCB0aGVtIHRob3VnaCB0aGUgc3BlYyBkb2VzIG5vdC4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgYWxsb3dQYXJzZUVycm9ycz86IGJvb2xlYW5cbiAgLyoqIFdyaXRlIGNvbW1lbnRzIGFzIGJvZ3VzIGNvbW1lbnRzLCBgPD9hPmAuIEBkZWZhdWx0IGZhbHNlICovXG4gIGJvZ3VzQ29tbWVudHM/OiBib29sZWFuXG4gIC8qKiBDbG9zZSBlbXB0eSBmb3JlaWduIGVsZW1lbnRzLCBgPGEgLz5gLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBjbG9zZUVtcHR5RWxlbWVudHM/OiBib29sZWFuXG4gIC8qKiBDbG9zZSB2b2lkIGVsZW1lbnRzLCBgPGJyIC8+YC4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgY2xvc2VTZWxmQ2xvc2luZz86IGJvb2xlYW5cbiAgLyoqIFdyaXRlIGVtcHR5IGF0dHJpYnV0ZXMgYXMgYmFyZSBuYW1lcywgYGFgIHJhdGhlciB0aGFuIGBhPVwiXCJgLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBjb2xsYXBzZUVtcHR5QXR0cmlidXRlcz86IGJvb2xlYW5cbiAgLyoqIExlYXZlIG91dCB0YWdzIHRoZSBIVE1MIHNwZWMgbGV0cyBhIHBhcnNlciBpbXBseS4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgb21pdE9wdGlvbmFsVGFncz86IGJvb2xlYW5cbiAgLyoqIExlYXZlIGF0dHJpYnV0ZSB2YWx1ZXMgdW5xdW90ZWQgd2hlcmUgdGhhdCBpcyBzYWZlLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBwcmVmZXJVbnF1b3RlZD86IGJvb2xlYW5cbiAgLyoqIFRoZSBxdW90ZSBhdHRyaWJ1dGUgdmFsdWVzIGFyZSB3cmFwcGVkIGluOiBgXCJgIG9yIGAnYC4gKi9cbiAgcXVvdGU/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBVc2UgdGhlIG90aGVyIHF1b3RlIHdoZW4gdGhlIHZhbHVlIGhvbGRzIG1vcmUgb2YgdGhlIHByZWZlcnJlZCBvbmUuIEBkZWZhdWx0IGZhbHNlICovXG4gIHF1b3RlU21hcnQ/OiBib29sZWFuXG4gIC8qKiBUaGUgc3BhY2UgdGhlIHRyZWUgaXMgaW46IGBodG1sYCBvciBgc3ZnYC4gKi9cbiAgc3BhY2U/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBMZWF2ZSBvdXQgdGhlIHNwYWNlIGJldHdlZW4gcXVvdGVkIGF0dHJpYnV0ZXMuIEBkZWZhdWx0IGZhbHNlICovXG4gIHRpZ2h0QXR0cmlidXRlcz86IGJvb2xlYW5cbiAgLyoqIEpvaW4gY29tbWEtc2VwYXJhdGVkIHZhbHVlcyB3aXRoIGAsYCByYXRoZXIgdGhhbiBgLCBgLiBAZGVmYXVsdCBmYWxzZSAqL1xuICB0aWdodENvbW1hU2VwYXJhdGVkTGlzdHM/OiBib29sZWFuXG4gIC8qKiBXcml0ZSBgPCFkb2N0eXBlaHRtbD5gLiBAZGVmYXVsdCBmYWxzZSAqL1xuICB0aWdodERvY3R5cGU/OiBib29sZWFuXG4gIC8qKiBMZWF2ZSBvdXQgdGhlIHNwYWNlIGJlZm9yZSBgLz5gIHdoZW4gdGhlIGF0dHJpYnV0ZXMgYWxsb3cuIEBkZWZhdWx0IGZhbHNlICovXG4gIHRpZ2h0U2VsZkNsb3Npbmc/OiBib29sZWFuXG4gIC8qKiBXcml0ZSBgPCFET0NUWVBFIGh0bWw+YC4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgdXBwZXJEb2N0eXBlPzogYm9vbGVhblxuICAvKiogVGhlIHRhZyBuYW1lcyBvZiB2b2lkIGVsZW1lbnRzLCB3aGljaCBoYXZlIG5vIGNsb3NpbmcgdGFnLiAqL1xuICB2b2lkcz86IHN0cmluZ1tdIHwgbnVsbFxufVxuXG4vKiogVGhlIGBodG1sLnBhcnNlYCBwbHVnaW4uICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2Uob3B0aW9ucz86IFBhcnNlT3B0aW9ucyk6IFBsdWdpbjxcImh0bWwucGFyc2VcIiwgUGFyc2VPcHRpb25zPiAmIFBhcnNlcjxSb290PiB7XG4gIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiB7IG5hbWU6IFwiaHRtbC5wYXJzZVwiIH1cbiAgcmV0dXJuIHsgbmFtZTogXCJodG1sLnBhcnNlXCIsIG9wdGlvbnMgfVxufVxuXG4vKiogVGhlIGBodG1sLnJhd2AgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJhdyhvcHRpb25zPzogUmF3T3B0aW9ucyk6IFBsdWdpbjxcImh0bWwucmF3XCIsIFJhd09wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJodG1sLnJhd1wiIH1cbiAgcmV0dXJuIHsgbmFtZTogXCJodG1sLnJhd1wiLCBvcHRpb25zIH1cbn1cblxuLyoqIFRoZSBgaHRtbC5mb3JtYXRgIHBsdWdpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXQob3B0aW9ucz86IEZvcm1hdE9wdGlvbnMpOiBQbHVnaW48XCJodG1sLmZvcm1hdFwiLCBGb3JtYXRPcHRpb25zPiB7XG4gIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiB7IG5hbWU6IFwiaHRtbC5mb3JtYXRcIiB9XG4gIHJldHVybiB7IG5hbWU6IFwiaHRtbC5mb3JtYXRcIiwgb3B0aW9ucyB9XG59XG5cbi8qKiBUaGUgYGh0bWwuc2FuaXRpemVgIHBsdWdpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzYW5pdGl6ZShvcHRpb25zPzogU2FuaXRpemVPcHRpb25zKTogUGx1Z2luPFwiaHRtbC5zYW5pdGl6ZVwiLCBTYW5pdGl6ZU9wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJodG1sLnNhbml0aXplXCIgfVxuICByZXR1cm4geyBuYW1lOiBcImh0bWwuc2FuaXRpemVcIiwgb3B0aW9ucyB9XG59XG5cbi8qKiBUaGUgYGh0bWwuc2x1Z2AgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNsdWcob3B0aW9ucz86IFNsdWdPcHRpb25zKTogUGx1Z2luPFwiaHRtbC5zbHVnXCIsIFNsdWdPcHRpb25zPiB7XG4gIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiB7IG5hbWU6IFwiaHRtbC5zbHVnXCIgfVxuICByZXR1cm4geyBuYW1lOiBcImh0bWwuc2x1Z1wiLCBvcHRpb25zIH1cbn1cblxuLyoqIFRoZSBgaHRtbC5leHRlcm5hbExpbmtzYCBwbHVnaW4uICovXG5leHBvcnQgZnVuY3Rpb24gZXh0ZXJuYWxMaW5rcyhvcHRpb25zPzogRXh0ZXJuYWxMaW5rc09wdGlvbnMpOiBQbHVnaW48XCJodG1sLmV4dGVybmFsTGlua3NcIiwgRXh0ZXJuYWxMaW5rc09wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJodG1sLmV4dGVybmFsTGlua3NcIiB9XG4gIHJldHVybiB7IG5hbWU6IFwiaHRtbC5leHRlcm5hbExpbmtzXCIsIG9wdGlvbnMgfVxufVxuXG4vKiogVGhlIGBodG1sLnVud3JhcEltYWdlc2AgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVud3JhcEltYWdlcygpOiBQbHVnaW48XCJodG1sLnVud3JhcEltYWdlc1wiPiB7XG4gIHJldHVybiB7IG5hbWU6IFwiaHRtbC51bndyYXBJbWFnZXNcIiB9XG59XG5cbi8qKiBUaGUgYGh0bWwuZXh0cmFjdFRvY2AgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RUb2Mob3B0aW9ucz86IEV4dHJhY3RUb2NPcHRpb25zKTogUGx1Z2luPFwiaHRtbC5leHRyYWN0VG9jXCIsIEV4dHJhY3RUb2NPcHRpb25zPiB7XG4gIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiB7IG5hbWU6IFwiaHRtbC5leHRyYWN0VG9jXCIgfVxuICByZXR1cm4geyBuYW1lOiBcImh0bWwuZXh0cmFjdFRvY1wiLCBvcHRpb25zIH1cbn1cblxuLyoqIFRoZSBgaHRtbC5oaWdobGlnaHRgIHBsdWdpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoaWdobGlnaHQob3B0aW9ucz86IEhpZ2hsaWdodE9wdGlvbnMpOiBQbHVnaW48XCJodG1sLmhpZ2hsaWdodFwiLCBIaWdobGlnaHRPcHRpb25zPiB7XG4gIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiB7IG5hbWU6IFwiaHRtbC5oaWdobGlnaHRcIiB9XG4gIHJldHVybiB7IG5hbWU6IFwiaHRtbC5oaWdobGlnaHRcIiwgb3B0aW9ucyB9XG59XG5cbi8qKiBUaGUgYGh0bWwua2F0ZXhgIHBsdWdpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBrYXRleChvcHRpb25zPzogS2F0ZXhPcHRpb25zKTogUGx1Z2luPFwiaHRtbC5rYXRleFwiLCBLYXRleE9wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJodG1sLmthdGV4XCIgfVxuICByZXR1cm4geyBuYW1lOiBcImh0bWwua2F0ZXhcIiwgb3B0aW9ucyB9XG59XG5cbi8qKiBUaGUgYGh0bWwudG9NYXJrZG93bmAgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvTWFya2Rvd24ob3B0aW9ucz86IFRvTWFya2Rvd25PcHRpb25zKTogUGx1Z2luPFwiaHRtbC50b01hcmtkb3duXCIsIFRvTWFya2Rvd25PcHRpb25zPiB7XG4gIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiB7IG5hbWU6IFwiaHRtbC50b01hcmtkb3duXCIgfVxuICByZXR1cm4geyBuYW1lOiBcImh0bWwudG9NYXJrZG93blwiLCBvcHRpb25zIH1cbn1cblxuLyoqIFRoZSBgaHRtbC50b05hdHVyYWxMYW5ndWFnZWAgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvTmF0dXJhbExhbmd1YWdlKCk6IFBsdWdpbjxcImh0bWwudG9OYXR1cmFsTGFuZ3VhZ2VcIj4ge1xuICByZXR1cm4geyBuYW1lOiBcImh0bWwudG9OYXR1cmFsTGFuZ3VhZ2VcIiB9XG59XG5cbi8qKiBUaGUgYGh0bWwuc3RyaW5naWZ5YCBwbHVnaW4uICovXG5leHBvcnQgZnVuY3Rpb24gc3RyaW5naWZ5KG9wdGlvbnM/OiBTdHJpbmdpZnlPcHRpb25zKTogUGx1Z2luPFwiaHRtbC5zdHJpbmdpZnlcIiwgU3RyaW5naWZ5T3B0aW9ucz4ge1xuICBpZiAob3B0aW9ucyA9PT0gdW5kZWZpbmVkKSByZXR1cm4geyBuYW1lOiBcImh0bWwuc3RyaW5naWZ5XCIgfVxuICByZXR1cm4geyBuYW1lOiBcImh0bWwuc3RyaW5naWZ5XCIsIG9wdGlvbnMgfVxufVxuIl19
|
package/build/generated/md.d.ts
CHANGED
|
@@ -25,6 +25,19 @@ export interface GfmOptions {
|
|
|
25
25
|
tablePipeAlign?: boolean;
|
|
26
26
|
/** Write a footnote definition's first line blank when it holds flow content. @default false */
|
|
27
27
|
firstLineBlank?: boolean;
|
|
28
|
+
/** Render GitHub alerts, a block quote opening with `[!NOTE]`, as GitHub does, as remark-github-blockquote-alert does: `true`, or its options. */
|
|
29
|
+
alerts?: Alerts | null;
|
|
30
|
+
}
|
|
31
|
+
/** `md.gfm`'s `alerts`: on, or on with remark-github-blockquote-alert's options. */
|
|
32
|
+
export type Alerts = boolean | AlertsOptions;
|
|
33
|
+
/** remark-github-blockquote-alert's options. */
|
|
34
|
+
export interface AlertsOptions {
|
|
35
|
+
/** Read a title after the type, `[!NOTE/Read this]`, in place of the type's name. @default false */
|
|
36
|
+
legacyTitle?: boolean;
|
|
37
|
+
/** The tag name of the alert's element. @default "div" */
|
|
38
|
+
tagName?: string;
|
|
39
|
+
/** More classes for the alert's element, separated by spaces. @default "" */
|
|
40
|
+
classNames?: string;
|
|
28
41
|
}
|
|
29
42
|
/** `md.math`: math syntax, `$$` blocks and `$` text, read by `md.parse` and written by `md.stringify`; options named as remark-math names them. */
|
|
30
43
|
export interface MathOptions {
|
|
@@ -67,6 +80,38 @@ export interface FrontmatterSettings {
|
|
|
67
80
|
/** Remove the YAML frontmatter a document starts with from the tree. */
|
|
68
81
|
strip?: boolean;
|
|
69
82
|
}
|
|
83
|
+
/** `md.gemoji`: gemoji shortcodes, `:smile:`, into emoji, as remark-gemoji does; its options are remark-emoji's. */
|
|
84
|
+
export interface GemojiOptions {
|
|
85
|
+
/** Also turn emoticons such as `:)` and `:-(` into emoji, as remark-emoji does. @default false */
|
|
86
|
+
emoticon?: boolean;
|
|
87
|
+
/** Wrap each emoji in `<span role="img" aria-label="…">`, labelled with its name. @default false */
|
|
88
|
+
accessible?: boolean;
|
|
89
|
+
/** Put a space after each emoji. @default false */
|
|
90
|
+
padSpaceAfter?: boolean;
|
|
91
|
+
}
|
|
92
|
+
/** `md.smartypants`: straight quotes, dashes, dots and backticks in Markdown text into typographic ones, as remark-smartypants does; options as retext-smartypants takes them. */
|
|
93
|
+
export interface SmartypantsOptions {
|
|
94
|
+
/** Turn double backticks and double straight single quotes into double quotes; `all` turns single ones into single quotes too. */
|
|
95
|
+
backticks?: Backticks;
|
|
96
|
+
/** The closing quotes to use: `”` and `’` by default. */
|
|
97
|
+
closingQuotes?: QuoteCharacters | null;
|
|
98
|
+
/** Turn two dashes into an em dash; `oldschool` and `inverted` treat three too. */
|
|
99
|
+
dashes?: Dashes;
|
|
100
|
+
/** Turn three dots into an ellipsis, with spaces between them or without. */
|
|
101
|
+
ellipses?: Ellipses;
|
|
102
|
+
/** The opening quotes to use: `“` and `‘` by default. */
|
|
103
|
+
openingQuotes?: QuoteCharacters | null;
|
|
104
|
+
/** Turn straight quotes into smart ones. @default true */
|
|
105
|
+
quotes?: boolean | null;
|
|
106
|
+
}
|
|
107
|
+
export type Backticks = boolean | "all";
|
|
108
|
+
/** The quote characters to use for double and single quotes. */
|
|
109
|
+
export interface QuoteCharacters {
|
|
110
|
+
double: string;
|
|
111
|
+
single: string;
|
|
112
|
+
}
|
|
113
|
+
export type Dashes = boolean | "oldschool" | "inverted";
|
|
114
|
+
export type Ellipses = boolean | "spaced" | "unspaced";
|
|
70
115
|
/** `md.component`: directives, GitHub alerts and other nodes into MDX JSX elements, the components an MDX runtime renders, by declarative rules. */
|
|
71
116
|
export interface ComponentOptions {
|
|
72
117
|
/** Rules for directives; the first that matches a directive converts it. */
|
|
@@ -310,6 +355,8 @@ export interface UnsafePattern {
|
|
|
310
355
|
export interface ToHtmlOptions {
|
|
311
356
|
/** Keep raw HTML in the tree instead of dropping it. @default false */
|
|
312
357
|
allowDangerousHtml?: boolean;
|
|
358
|
+
/** Turn each line ending in text into a `<br>`, as remark-breaks does. @default false */
|
|
359
|
+
breaks?: boolean;
|
|
313
360
|
/** What footnote `id`s start with, so they cannot clobber the page's; `user-content-` when unset. */
|
|
314
361
|
clobberPrefix?: string | null;
|
|
315
362
|
/** The text of each footnote's back reference; `↩`, numbered from the second, when unset. */
|
|
@@ -353,8 +400,12 @@ export declare function math(options?: MathOptions): Plugin<"md.math", MathOptio
|
|
|
353
400
|
export declare function mdx(options?: MdxOptions): Plugin<"md.mdx", MdxOptions>;
|
|
354
401
|
/** The `md.frontmatter` plugin. */
|
|
355
402
|
export declare function frontmatter(options?: FrontmatterOptions): Plugin<"md.frontmatter", FrontmatterOptions>;
|
|
403
|
+
/** The `md.cjkFriendly` plugin. */
|
|
404
|
+
export declare function cjkFriendly(): Plugin<"md.cjkFriendly">;
|
|
356
405
|
/** The `md.gemoji` plugin. */
|
|
357
|
-
export declare function gemoji(): Plugin<"md.gemoji">;
|
|
406
|
+
export declare function gemoji(options?: GemojiOptions): Plugin<"md.gemoji", GemojiOptions>;
|
|
407
|
+
/** The `md.smartypants` plugin. */
|
|
408
|
+
export declare function smartypants(options?: SmartypantsOptions): Plugin<"md.smartypants", SmartypantsOptions>;
|
|
358
409
|
/** The `md.component` plugin. */
|
|
359
410
|
export declare function component(options?: ComponentOptions): Plugin<"md.component", ComponentOptions>;
|
|
360
411
|
/** The `md.packageCommand` plugin. */
|
package/build/generated/md.js
CHANGED
|
@@ -39,9 +39,21 @@ export function frontmatter(options) {
|
|
|
39
39
|
return { name: "md.frontmatter" };
|
|
40
40
|
return { name: "md.frontmatter", options };
|
|
41
41
|
}
|
|
42
|
+
/** The `md.cjkFriendly` plugin. */
|
|
43
|
+
export function cjkFriendly() {
|
|
44
|
+
return { name: "md.cjkFriendly" };
|
|
45
|
+
}
|
|
42
46
|
/** The `md.gemoji` plugin. */
|
|
43
|
-
export function gemoji() {
|
|
44
|
-
|
|
47
|
+
export function gemoji(options) {
|
|
48
|
+
if (options === undefined)
|
|
49
|
+
return { name: "md.gemoji" };
|
|
50
|
+
return { name: "md.gemoji", options };
|
|
51
|
+
}
|
|
52
|
+
/** The `md.smartypants` plugin. */
|
|
53
|
+
export function smartypants(options) {
|
|
54
|
+
if (options === undefined)
|
|
55
|
+
return { name: "md.smartypants" };
|
|
56
|
+
return { name: "md.smartypants", options };
|
|
45
57
|
}
|
|
46
58
|
/** The `md.component` plugin. */
|
|
47
59
|
export function component(options) {
|
|
@@ -103,4 +115,4 @@ export function toNaturalLanguage(options) {
|
|
|
103
115
|
return { name: "md.toNaturalLanguage" };
|
|
104
116
|
return { name: "md.toNaturalLanguage", options };
|
|
105
117
|
}
|
|
106
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9nZW5lcmF0ZWQvbWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0VBQStFO0FBNFgvRSw2QkFBNkI7QUFDN0IsTUFBTSxVQUFVLEtBQUssQ0FBQyxPQUFzQjtJQUMxQyxJQUFJLE9BQU8sS0FBSyxTQUFTO1FBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsQ0FBQTtJQUN0RCxPQUFPLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsQ0FBQTtBQUN0QyxDQUFDO0FBRUQsaUNBQWlDO0FBQ2pDLE1BQU0sVUFBVSxTQUFTLENBQUMsT0FBMEI7SUFDbEQsSUFBSSxPQUFPLEtBQUssU0FBUztRQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLENBQUE7SUFDMUQsT0FBTyxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLENBQUE7QUFDMUMsQ0FBQztBQUVELDJCQUEyQjtBQUMzQixNQUFNLFVBQVUsR0FBRyxDQUFDLE9BQW9CO0lBQ3RDLElBQUksT0FBTyxLQUFLLFNBQVM7UUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFBO0lBQ3BELE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFBO0FBQ3BDLENBQUM7QUFFRCxzQ0FBc0M7QUFDdEMsTUFBTSxVQUFVLGNBQWM7SUFDNUIsT0FBTyxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxDQUFBO0FBQ3RDLENBQUM7QUFFRCw0QkFBNEI7QUFDNUIsTUFBTSxVQUFVLElBQUksQ0FBQyxPQUFxQjtJQUN4QyxJQUFJLE9BQU8sS0FBSyxTQUFTO1FBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQTtJQUNyRCxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsQ0FBQTtBQUNyQyxDQUFDO0FBRUQsMkJBQTJCO0FBQzNCLE1BQU0sVUFBVSxHQUFHLENBQUMsT0FBb0I7SUFDdEMsSUFBSSxPQUFPLEtBQUssU0FBUztRQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUE7SUFDcEQsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLENBQUE7QUFDcEMsQ0FBQztBQUVELG1DQUFtQztBQUNuQyxNQUFNLFVBQVUsV0FBVyxDQUFDLE9BQTRCO0lBQ3RELElBQUksT0FBTyxLQUFLLFNBQVM7UUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLENBQUE7SUFDNUQsT0FBTyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsQ0FBQTtBQUM1QyxDQUFDO0FBRUQsOEJBQThCO0FBQzlCLE1BQU0sVUFBVSxNQUFNO0lBQ3BCLE9BQU8sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLENBQUE7QUFDOUIsQ0FBQztBQUVELGlDQUFpQztBQUNqQyxNQUFNLFVBQVUsU0FBUyxDQUFDLE9BQTBCO0lBQ2xELElBQUksT0FBTyxLQUFLLFNBQVM7UUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxDQUFBO0lBQzFELE9BQU8sRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLE9BQU8sRUFBRSxDQUFBO0FBQzFDLENBQUM7QUFFRCxzQ0FBc0M7QUFDdEMsTUFBTSxVQUFVLGNBQWMsQ0FBQyxPQUErQjtJQUM1RCxJQUFJLE9BQU8sS0FBSyxTQUFTO1FBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxDQUFBO0lBQy9ELE9BQU8sRUFBRSxJQUFJLEVBQUUsbUJBQW1CLEVBQUUsT0FBTyxFQUFFLENBQUE7QUFDL0MsQ0FBQztBQUVELGlDQUFpQztBQUNqQyxNQUFNLFVBQVUsU0FBUyxDQUFDLE9BQTBCO0lBQ2xELElBQUksT0FBTyxLQUFLLFNBQVM7UUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxDQUFBO0lBQzFELE9BQU8sRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLE9BQU8sRUFBRSxDQUFBO0FBQzFDLENBQUM7QUFFRCxtQ0FBbUM7QUFDbkMsTUFBTSxVQUFVLFdBQVcsQ0FBQyxPQUE0QjtJQUN0RCxJQUFJLE9BQU8sS0FBSyxTQUFTO1FBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxDQUFBO0lBQzVELE9BQU8sRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsT0FBTyxFQUFFLENBQUE7QUFDNUMsQ0FBQztBQUVELG9DQUFvQztBQUNwQyxNQUFNLFVBQVUsWUFBWSxDQUFDLE9BQTZCO0lBQ3hELElBQUksT0FBTyxLQUFLLFNBQVM7UUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLENBQUE7SUFDN0QsT0FBTyxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsQ0FBQTtBQUM3QyxDQUFDO0FBRUQsNkJBQTZCO0FBQzdCLE1BQU0sVUFBVSxLQUFLLENBQUMsT0FBc0I7SUFDMUMsSUFBSSxPQUFPLEtBQUssU0FBUztRQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLENBQUE7SUFDdEQsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLENBQUE7QUFDdEMsQ0FBQztBQUVELDJCQUEyQjtBQUMzQixNQUFNLFVBQVUsR0FBRyxDQUFDLE9BQW9CO0lBQ3RDLElBQUksT0FBTyxLQUFLLFNBQVM7UUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFBO0lBQ3BELE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFBO0FBQ3BDLENBQUM7QUFFRCxpQ0FBaUM7QUFDakMsTUFBTSxVQUFVLFNBQVMsQ0FBQyxPQUEwQjtJQUNsRCxJQUFJLE9BQU8sS0FBSyxTQUFTO1FBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsQ0FBQTtJQUMxRCxPQUFPLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxPQUFPLEVBQUUsQ0FBQTtBQUMxQyxDQUFDO0FBRUQsOEJBQThCO0FBQzlCLE1BQU0sVUFBVSxNQUFNLENBQUMsT0FBdUI7SUFDNUMsSUFBSSxPQUFPLEtBQUssU0FBUztRQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLENBQUE7SUFDdkQsT0FBTyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLENBQUE7QUFDdkMsQ0FBQztBQUVELHlDQUF5QztBQUN6QyxNQUFNLFVBQVUsaUJBQWlCLENBQUMsT0FBa0M7SUFDbEUsSUFBSSxPQUFPLEtBQUssU0FBUztRQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsc0JBQXNCLEVBQUUsQ0FBQTtJQUNsRSxPQUFPLEVBQUUsSUFBSSxFQUFFLHNCQUFzQixFQUFFLE9BQU8sRUFBRSxDQUFBO0FBQ2xELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBHZW5lcmF0ZWQgYnkgYHBucG0gZ2VuZXJhdGU6YmluZGluZ3NgIGZyb20gdGhlIGNyYXRlJ3MgcGx1Z2luczsgZG8gbm90IGVkaXQuXG5cbmltcG9ydCB0eXBlIHsgUm9vdCB9IGZyb20gXCJtZGFzdFwiXG5pbXBvcnQgdHlwZSB7IFBhcnNlciwgUGx1Z2luIH0gZnJvbSBcIi4uL21vZGVscy9wbHVnaW4udHNcIlxuXG4vKiogYG1kLnBhcnNlYDogTWFya2Rvd24gaW50byBtZGFzdC4gKi9cbmV4cG9ydCB0eXBlIFBhcnNlT3B0aW9ucyA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG5cbi8qKiBgbWQuZGlyZWN0aXZlYDogZ2VuZXJpYyBkaXJlY3RpdmVzLCBgOmFgLCBgOjpiYCBhbmQgYDo6OmNgLCByZWFkIGJ5IGBtZC5wYXJzZWAgYW5kIHdyaXR0ZW4gYnkgYG1kLnN0cmluZ2lmeWA7IG9wdGlvbnMgbmFtZWQgYXMgbWRhc3QtdXRpbC1kaXJlY3RpdmUncyBzZXJpYWxpemVyIG5hbWVzIHRoZW0uICovXG5leHBvcnQgaW50ZXJmYWNlIERpcmVjdGl2ZU9wdGlvbnMge1xuICAvKiogV3JpdGUgYW4gZW1wdHkgYXR0cmlidXRlIGFzIGl0cyBuYW1lIGFsb25lLCBge2F9YCwgcmF0aGVyIHRoYW4gYHthPVwiXCJ9YC4gQGRlZmF1bHQgdHJ1ZSAqL1xuICBjb2xsYXBzZUVtcHR5QXR0cmlidXRlcz86IGJvb2xlYW5cbiAgLyoqIFdyaXRlIGBpZGAgYW5kIGBjbGFzc2AgYXMgYCNhYCBhbmQgYC5iYCB3aGVyZSB0aGV5IGNhbiBiZS4gQGRlZmF1bHQgdHJ1ZSAqL1xuICBwcmVmZXJTaG9ydGN1dD86IGJvb2xlYW5cbiAgLyoqIExlYXZlIGF0dHJpYnV0ZSB2YWx1ZXMgdW5xdW90ZWQgd2hlcmUgdGhleSBjYW4gYmUuIEBkZWZhdWx0IGZhbHNlICovXG4gIHByZWZlclVucXVvdGVkPzogYm9vbGVhblxuICAvKiogVGhlIHF1b3RlIG9mIGF0dHJpYnV0ZSB2YWx1ZXM6IGBcImAgb3IgYCdgOyBgbWQuc3RyaW5naWZ5YCdzIGBxdW90ZWAgd2hlbiB1bnNldC4gKi9cbiAgcXVvdGU/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBVc2UgdGhlIG90aGVyIHF1b3RlIHdoZW4gdGhlIHByZWZlcnJlZCBvbmUgb2NjdXJzIG1vcmUgb2Z0ZW4gaW4gYSB2YWx1ZS4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgcXVvdGVTbWFydD86IGJvb2xlYW5cbn1cblxuLyoqIGBtZC5nZm1gOiBHaXRIdWIgRmxhdm9yZWQgTWFya2Rvd24ncyBzeW50YXgsIHJlYWQgYnkgYG1kLnBhcnNlYCBhbmQgd3JpdHRlbiBieSBgbWQuc3RyaW5naWZ5YDsgb3B0aW9ucyBuYW1lZCBhcyByZW1hcmstZ2ZtIG5hbWVzIHRoZW0uICovXG5leHBvcnQgaW50ZXJmYWNlIEdmbU9wdGlvbnMge1xuICAvKiogTGV0IG9uZSB0aWxkZSwgYH5hfmAsIGZvcm0gc3RyaWtldGhyb3VnaCwgYXMgd2VsbCBhcyB0d28uIEBkZWZhdWx0IHRydWUgKi9cbiAgc2luZ2xlVGlsZGU/OiBib29sZWFuXG4gIC8qKiBQYWQgdGFibGUgY2VsbHMgd2l0aCBhIHNwYWNlIG9uIGVhY2ggc2lkZSB3aGVuIHdyaXRpbmcgTWFya2Rvd24uIEBkZWZhdWx0IHRydWUgKi9cbiAgdGFibGVDZWxsUGFkZGluZz86IGJvb2xlYW5cbiAgLyoqIExpbmUgdXAgdGFibGUgcGlwZXMgd2hlbiB3cml0aW5nIE1hcmtkb3duLiBAZGVmYXVsdCB0cnVlICovXG4gIHRhYmxlUGlwZUFsaWduPzogYm9vbGVhblxuICAvKiogV3JpdGUgYSBmb290bm90ZSBkZWZpbml0aW9uJ3MgZmlyc3QgbGluZSBibGFuayB3aGVuIGl0IGhvbGRzIGZsb3cgY29udGVudC4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgZmlyc3RMaW5lQmxhbms/OiBib29sZWFuXG59XG5cbi8qKiBgbWQubWF0aGA6IG1hdGggc3ludGF4LCBgJCRgIGJsb2NrcyBhbmQgYCRgIHRleHQsIHJlYWQgYnkgYG1kLnBhcnNlYCBhbmQgd3JpdHRlbiBieSBgbWQuc3RyaW5naWZ5YDsgb3B0aW9ucyBuYW1lZCBhcyByZW1hcmstbWF0aCBuYW1lcyB0aGVtLiAqL1xuZXhwb3J0IGludGVyZmFjZSBNYXRoT3B0aW9ucyB7XG4gIC8qKiBMZXQgb25lIGRvbGxhciwgYCRhJGAsIGZvcm0gbWF0aCBpbiB0ZXh0LCBhcyB3ZWxsIGFzIHR3by4gQGRlZmF1bHQgdHJ1ZSAqL1xuICBzaW5nbGVEb2xsYXJUZXh0TWF0aD86IGJvb2xlYW5cbn1cblxuLyoqIGBtZC5tZHhgOiBNRFggc3ludGF4LCBKU1gsIGV4cHJlc3Npb25zIGFuZCBFU00sIHJlYWQgYnkgYG1kLnBhcnNlYCBhbmQgd3JpdHRlbiBieSBgbWQuc3RyaW5naWZ5YDsgaXQgdHVybnMgb2ZmIGluZGVudGVkIGNvZGUsIGF1dG9saW5rcyBhbmQgcmF3IEhUTUw7IG9wdGlvbnMgbmFtZWQgYXMgcmVtYXJrLW1keCBhbmQgbWRhc3QtdXRpbC1tZHgtanN4J3Mgc2VyaWFsaXplciBuYW1lIHRoZW0uICovXG5leHBvcnQgaW50ZXJmYWNlIE1keE9wdGlvbnMge1xuICAvKiogVGhlIHF1b3RlIG9mIEpTWCBhdHRyaWJ1dGUgdmFsdWVzOiBgXCJgICh3aGVuIHVuc2V0KSBvciBgJ2AuICovXG4gIHF1b3RlPzogc3RyaW5nIHwgbnVsbFxuICAvKiogVXNlIHRoZSBvdGhlciBxdW90ZSB3aGVuIHRoZSBwcmVmZXJyZWQgb25lIG9jY3VycyBtb3JlIG9mdGVuIGluIGEgdmFsdWUuIEBkZWZhdWx0IGZhbHNlICovXG4gIHF1b3RlU21hcnQ/OiBib29sZWFuXG4gIC8qKiBXcml0ZSBzZWxmLWNsb3NpbmcgdGFncyB3aXRob3V0IGEgc3BhY2UgYmVmb3JlIHRoZSBzbGFzaCwgYDxhLz5gLiBAZGVmYXVsdCBmYWxzZSAqL1xuICB0aWdodFNlbGZDbG9zaW5nPzogYm9vbGVhblxuICAvKiogVGhlIHdpZHRoIHBhc3Qgd2hpY2ggYSBmbG93IGVsZW1lbnQncyBhdHRyaWJ1dGVzIGdvIG9uIGxpbmVzIG9mIHRoZWlyIG93bi4gKi9cbiAgcHJpbnRXaWR0aD86IG51bWJlciB8IG51bGxcbn1cblxuLyoqIFRoZSBraW5kcyBvZiBtYXR0ZXIgdG8gcmVjb2duaXplLCBhcyByZW1hcmstZnJvbnRtYXR0ZXIgdGFrZXMgdGhlbSAoYSBwcmVzZXQsIGEgbWF0dGVyLCBvciBhIGxpc3Qgb2YgdGhlbTsgYHlhbWxgIHdoZW4gdW5zZXQpLCBvciB0ZXh0bGFuZSdzIG9wdGlvbnMgb2JqZWN0LiAqL1xuZXhwb3J0IHR5cGUgRnJvbnRtYXR0ZXJPcHRpb25zID0gXCJ5YW1sXCIgfCBcInRvbWxcIiB8IE1hdHRlciB8IChcInlhbWxcIiB8IFwidG9tbFwiIHwgTWF0dGVyKVtdIHwgRnJvbnRtYXR0ZXJTZXR0aW5nc1xuXG4vKiogT25lIGtpbmQgb2YgZnJvbnRtYXR0ZXI6IHRoZSBub2RlIGB0eXBlYCBpdCBiZWNvbWVzIGFuZCBpdHMgZmVuY2VzLCBhIGBtYXJrZXJgIHJlcGVhdGVkIHRocmVlIHRpbWVzIG9yIGEgd2hvbGUgYGZlbmNlYC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWF0dGVyIHtcbiAgdHlwZTogc3RyaW5nXG4gIG1hcmtlcj86IEZlbmNlXG4gIGZlbmNlPzogRmVuY2VcbiAgYW55d2hlcmU/OiBib29sZWFuXG59XG5cbi8qKiBEaWZmZXJlbnQgb3BlbmluZyBhbmQgY2xvc2luZyBmZW5jZXMuICovXG5leHBvcnQgaW50ZXJmYWNlIEZlbmNlUGFpciB7XG4gIG9wZW46IHN0cmluZ1xuICBjbG9zZTogc3RyaW5nXG59XG5cbi8qKiBBIGZlbmNlLCBvciBpdHMgb3BlbmluZyBhbmQgY2xvc2luZyBvbmVzLiAqL1xuZXhwb3J0IHR5cGUgRmVuY2UgPSBzdHJpbmcgfCBGZW5jZVBhaXJcblxuLyoqIHRleHRsYW5lJ3Mgb3B0aW9uczogdGhlIG1hdHRlcnMsIGFuZCB3aGF0IHRvIGRvIHdpdGggWUFNTCBmcm9udG1hdHRlci4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRnJvbnRtYXR0ZXJTZXR0aW5ncyB7XG4gIC8qKiBUaGUga2luZHMgb2YgbWF0dGVyIHRvIHJlY29nbml6ZSwgYXMgcmVtYXJrLWZyb250bWF0dGVyIHRha2VzIHRoZW07IGB5YW1sYCB3aGVuIHVuc2V0LiAqL1xuICBtYXR0ZXJzPzogXCJ5YW1sXCIgfCBcInRvbWxcIiB8IE1hdHRlciB8IChcInlhbWxcIiB8IFwidG9tbFwiIHwgTWF0dGVyKVtdXG4gIC8qKiBQYXJzZSB0aGUgWUFNTCBmcm9udG1hdHRlciBhIGRvY3VtZW50IHN0YXJ0cyB3aXRoIGludG8gYGZpbGUuZGF0YS5tYXR0ZXJgLCBge31gIHdoZW4gdGhlcmUgaXMgbm9uZSwgYXMgdmZpbGUtbWF0dGVyIGRvZXMuICovXG4gIGRhdGE/OiBib29sZWFuXG4gIC8qKiBSZW1vdmUgdGhlIFlBTUwgZnJvbnRtYXR0ZXIgYSBkb2N1bWVudCBzdGFydHMgd2l0aCBmcm9tIHRoZSB0cmVlLiAqL1xuICBzdHJpcD86IGJvb2xlYW5cbn1cblxuLyoqIGBtZC5jb21wb25lbnRgOiBkaXJlY3RpdmVzLCBHaXRIdWIgYWxlcnRzIGFuZCBvdGhlciBub2RlcyBpbnRvIE1EWCBKU1ggZWxlbWVudHMsIHRoZSBjb21wb25lbnRzIGFuIE1EWCBydW50aW1lIHJlbmRlcnMsIGJ5IGRlY2xhcmF0aXZlIHJ1bGVzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRPcHRpb25zIHtcbiAgLyoqIFJ1bGVzIGZvciBkaXJlY3RpdmVzOyB0aGUgZmlyc3QgdGhhdCBtYXRjaGVzIGEgZGlyZWN0aXZlIGNvbnZlcnRzIGl0LiAqL1xuICBkaXJlY3RpdmVzPzogRGlyZWN0aXZlUnVsZVtdXG4gIC8qKiBHaXRIdWIgYWxlcnRzLCBgPiBbIU5PVEVdYCwgaW50byBhIGNvbXBvbmVudC4gKi9cbiAgYWxlcnRzPzogQWxlcnRSdWxlIHwgbnVsbFxuICAvKiogTm9kZSB0eXBlcywgc3VjaCBhcyBgZGVmTGlzdGAsIGludG8gY29tcG9uZW50cyBrZWVwaW5nIHRoZWlyIGNoaWxkcmVuLiBAZGVmYXVsdCB7fSAqL1xuICBub2Rlcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz5cbiAgLyoqIFdoYXQgYmVjb21lcyBvZiBhIGRpcmVjdGl2ZSBubyBydWxlIGNvbnZlcnRzLiAqL1xuICB1bmtub3duRGlyZWN0aXZlcz86IFVua25vd25EaXJlY3RpdmVzXG4gIC8qKiBSdWxlcyBmb3IgZmVuY2VkIGNvZGU7IHRoZSBmaXJzdCB0aGF0IG1hdGNoZXMgYSBibG9jayBhcHBsaWVzLiAqL1xuICBjb2Rlcz86IENvZGVSdWxlW11cbn1cblxuLyoqIEhvdyBgbWQuY29tcG9uZW50YCB0dXJucyBtYXRjaGluZyBkaXJlY3RpdmVzIGludG8gb25lIGNvbXBvbmVudC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGlyZWN0aXZlUnVsZSB7XG4gIC8qKiBUaGUgZGlyZWN0aXZlJ3MgbmFtZSwgb3Igc2V2ZXJhbC4gKi9cbiAgbmFtZTogTmFtZXNcbiAgLyoqIFRoZSBraW5kIG9mIGRpcmVjdGl2ZTogYHRleHRgLCBgbGVhZmAgb3IgYGNvbnRhaW5lcmA7IGFueSB3aGVuIGxlZnQgb3V0LiAqL1xuICBraW5kPzogRGlyZWN0aXZlS2luZCB8IG51bGxcbiAgLyoqIEF0dHJpYnV0ZSB2YWx1ZXMgdGhlIGRpcmVjdGl2ZSBtdXN0IGhhdmUuIEBkZWZhdWx0IHt9ICovXG4gIHdoZXJlPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPlxuICAvKiogVGhlIGNvbXBvbmVudDogYSB0ZXh0IGVsZW1lbnQgZm9yIGEgdGV4dCBkaXJlY3RpdmUsIGVsc2UgYSBmbG93IGVsZW1lbnQuICovXG4gIGNvbXBvbmVudDogc3RyaW5nXG4gIC8qKiBUaGUgYXR0cmlidXRlIHRoYXQgZ2V0cyB0aGUgZGlyZWN0aXZlJ3MgbmFtZS4gKi9cbiAgbmFtZUFzPzogc3RyaW5nIHwgbnVsbFxuICAvKiogVGhlIGF0dHJpYnV0ZSB0aGF0IGdldHMgdGhlIGxhYmVsJ3MgdGV4dDogYSBjb250YWluZXIncyBsYWJlbCBwYXJhZ3JhcGggb3IgYSB0ZXh0IG9yIGxlYWYgZGlyZWN0aXZlJ3MgY29udGVudCwgd2hpY2ggaXMgdGhlbiBkcm9wcGVkLiAqL1xuICBsYWJlbEFzPzogc3RyaW5nIHwgbnVsbFxuICAvKiogVGhlIGxhYmVsJ3MgdGV4dCB3aGVuIHRoZXJlIGlzIG5vbmUuICovXG4gIGxhYmVsRGVmYXVsdD86IHN0cmluZyB8IG51bGxcbiAgLyoqIFRoZSBhdHRyaWJ1dGVzIHRvIGtlZXAsIGluIG9yZGVyOyBldmVyeSBvbmUsIGFzIHdyaXR0ZW4sIHdoZW4gbGVmdCBvdXQuICovXG4gIGF0dHJpYnV0ZXM/OiBBdHRyaWJ1dGVSdWxlW10gfCBudWxsXG4gIC8qKiBBdHRyaWJ1dGVzIHdpdGhvdXQgd2hpY2ggdGhlIGRpcmVjdGl2ZSBpcyBsZWZ0IHRvIGB1bmtub3duRGlyZWN0aXZlc2AuIEBkZWZhdWx0IFtdICovXG4gIHJlcXVpcmVkPzogc3RyaW5nW11cbiAgLyoqIFdyYXAgcnVucyBvZiBhZGphY2VudCBzaWJsaW5ncyB0aGlzIHJ1bGUgY29udmVydGVkIGluIGFub3RoZXIgY29tcG9uZW50LiAqL1xuICBncm91cD86IEdyb3VwUnVsZSB8IG51bGxcbiAgLyoqIFRoZSBhdHRyaWJ1dGUgdGhhdCBnZXRzIHRoZSBsaXN0cyBvZiBhIGNvbnRhaW5lciBkaXJlY3RpdmUgYXMgYSBmaWxlIHRyZWUsIEpTT04gaXRlbXMgYHtuYW1lLCB0eXBlLCBjb21tZW50PywgaGlnaGxpZ2h0ZWQ/LCBjaGlsZHJlbj99YDsgdGhlIGxpc3RzIGxlYXZlIGl0cyBjb250ZW50LiAqL1xuICB0cmVlQXM/OiBzdHJpbmcgfCBudWxsXG59XG5cbi8qKiBPbmUgbmFtZSBvciBzZXZlcmFsLiAqL1xuZXhwb3J0IHR5cGUgTmFtZXMgPSBzdHJpbmcgfCBzdHJpbmdbXVxuXG4vKiogQSBkaXJlY3RpdmUncyBraW5kLCBieSBob3cgbWFueSBjb2xvbnMgb3BlbiBpdC4gKi9cbmV4cG9ydCB0eXBlIERpcmVjdGl2ZUtpbmQgPSBcInRleHRcIiB8IFwibGVhZlwiIHwgXCJjb250YWluZXJcIlxuXG4vKiogQW4gYXR0cmlidXRlIHRvIGtlZXA6IGl0cyBuYW1lLCBvciBpdHMgbmFtZSB3aXRoIHdoYXQgdG8gY2FsbCBpdCBhbmQgYSBkZWZhdWx0LiAqL1xuZXhwb3J0IHR5cGUgQXR0cmlidXRlUnVsZSA9IHN0cmluZyB8IHsgbmFtZTogc3RyaW5nOyByZW5hbWU/OiBzdHJpbmcgfCBudWxsOyBkZWZhdWx0Pzogc3RyaW5nIHwgbnVsbCB9XG5cbi8qKiBUaGUgY29tcG9uZW50IHdyYXBwaW5nIGEgcnVuIG9mIGFkamFjZW50IHNpYmxpbmdzIG9uZSBydWxlIGNvbnZlcnRlZC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR3JvdXBSdWxlIHtcbiAgLyoqIFRoZSB3cmFwcGluZyBjb21wb25lbnQuICovXG4gIGNvbXBvbmVudDogc3RyaW5nXG4gIC8qKiBUaGUgc2hvcnRlc3QgcnVuIHdyYXBwZWQ7IDIgd2hlbiBsZWZ0IG91dC4gKi9cbiAgbWluPzogbnVtYmVyIHwgbnVsbFxuICAvKiogQXR0cmlidXRlcyB0aGUgd3JhcHBlciBjb3BpZXMgZnJvbSB0aGUgcnVuJ3MgZmlyc3QgZWxlbWVudC4gQGRlZmF1bHQgW10gKi9cbiAgaW5oZXJpdD86IHN0cmluZ1tdXG59XG5cbi8qKiBIb3cgYG1kLmNvbXBvbmVudGAgdHVybnMgR2l0SHViIGFsZXJ0cywgYSBibG9jayBxdW90ZSBvcGVuaW5nIHdpdGggYFshVFlQRV1gLCBpbnRvIGEgY29tcG9uZW50LiAqL1xuZXhwb3J0IGludGVyZmFjZSBBbGVydFJ1bGUge1xuICAvKiogVGhlIGNvbXBvbmVudCBhbiBhbGVydCBiZWNvbWVzLiAqL1xuICBjb21wb25lbnQ6IHN0cmluZ1xuICAvKiogVGhlIGF0dHJpYnV0ZSB0aGF0IGdldHMgdGhlIGFsZXJ0J3MgdHlwZS4gKi9cbiAgdHlwZUFzOiBzdHJpbmdcbiAgLyoqIEVhY2ggYWxlcnQgdHlwZSwgYXMgd3JpdHRlbiwgdG8gdGhlIHZhbHVlIG9mIGB0eXBlQXNgOyBvdGhlciB0eXBlcyBzdGF5IGJsb2NrIHF1b3Rlcy4gKi9cbiAgdHlwZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz5cbn1cblxuLyoqIFdoYXQgYG1kLmNvbXBvbmVudGAgZG9lcyB3aXRoIGEgZGlyZWN0aXZlIG5vIHJ1bGUgY29udmVydHMuICovXG5leHBvcnQgdHlwZSBVbmtub3duRGlyZWN0aXZlcyA9IFwia2VlcFwiIHwgXCJzb3VyY2VcIlxuXG4vKiogSG93IGBtZC5jb21wb25lbnRgIHR1cm5zIG1hdGNoaW5nIGNvZGUgYmxvY2tzIGludG8gYSBjb21wb25lbnQsIG9yIGdyb3VwcyB0aGVtLiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb2RlUnVsZSB7XG4gIC8qKiBUaGUgYmxvY2sncyBsYW5ndWFnZSwgb3Igc2V2ZXJhbDsgYW55IHdoZW4gbGVmdCBvdXQuICovXG4gIGxhbmc/OiBOYW1lcyB8IG51bGxcbiAgLyoqIEEgYGtleT1cInZhbHVlXCJgIHRoZSBibG9jaydzIG1ldGEgbXVzdCBob2xkLiAqL1xuICBtZXRhPzogc3RyaW5nIHwgbnVsbFxuICAvKiogVGhlIGNvbXBvbmVudCB0aGUgYmxvY2sgYmVjb21lczsgbGVmdCBvdXQsIHRoZSBibG9jayBzdGF5cyBjb2RlIGFuZCBvbmx5IGdyb3Vwcy4gKi9cbiAgY29tcG9uZW50Pzogc3RyaW5nIHwgbnVsbFxuICAvKiogVGhlIGF0dHJpYnV0ZSB0aGF0IGdldHMgdGhlIGNvZGU7IGxlZnQgb3V0LCB0aGUgY29kZSBpcyB0aGUgY29tcG9uZW50J3MgdGV4dC4gKi9cbiAgdmFsdWVBcz86IHN0cmluZyB8IG51bGxcbiAgLyoqIE1ldGEgYGtleT1cInZhbHVlXCJgIHBhaXJzIHRvIGtlZXAgYXMgYXR0cmlidXRlcywgaW4gb3JkZXIuICovXG4gIGF0dHJpYnV0ZXM/OiBBdHRyaWJ1dGVSdWxlW11cbiAgLyoqIFdyYXAgcnVucyBvZiBhZGphY2VudCBibG9ja3MgdGhpcyBydWxlIG1hdGNoZWQgaW4gYW5vdGhlciBjb21wb25lbnQuICovXG4gIGdyb3VwPzogQ29kZUdyb3VwUnVsZSB8IG51bGxcbn1cblxuLyoqIFRoZSBjb21wb25lbnQgd3JhcHBpbmcgYSBydW4gb2YgYWRqYWNlbnQgY29kZSBibG9ja3Mgb25lIHJ1bGUgbWF0Y2hlZDsgdGhlIG1ldGEga2V5cyBpdCByZWFkcyBhcmUgdGFrZW4gb3V0IG9mIGVhY2ggYmxvY2sncyBtZXRhLiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb2RlR3JvdXBSdWxlIHtcbiAgLyoqIFRoZSB3cmFwcGluZyBjb21wb25lbnQuICovXG4gIGNvbXBvbmVudDogc3RyaW5nXG4gIC8qKiBUaGUgc2hvcnRlc3QgcnVuIHdyYXBwZWQ7IDIgd2hlbiBsZWZ0IG91dC4gKi9cbiAgbWluPzogbnVtYmVyIHwgbnVsbFxuICAvKiogVGhlIGF0dHJpYnV0ZSB0aGF0IGdldHMgdGhlIHJ1bidzIHZhbHVlcyBvZiB0aGUgcnVsZSdzIGBtZXRhYCBrZXksIGFzIGEgSlNPTiBsaXN0LiAqL1xuICBjb2xsZWN0Pzogc3RyaW5nIHwgbnVsbFxuICAvKiogTWV0YSBrZXlzIHRoZSB3cmFwcGVyIGNvcGllcyBmcm9tIHRoZSBydW4ncyBmaXJzdCBibG9jayBhcyBhdHRyaWJ1dGVzLiBAZGVmYXVsdCBbXSAqL1xuICBpbmhlcml0Pzogc3RyaW5nW11cbn1cblxuLyoqIGBtZC5wYWNrYWdlQ29tbWFuZGA6IGEgZmVuY2VkIGJsb2NrIG9mIHBhY2thZ2UtbWFuYWdlciBjb21tYW5kcywgaXRzIGxhbmd1YWdlIG5hbWluZyB0aGUgZWNvc3lzdGVtIChgbnBtYCwgYHBpcGAsIGBjYXJnb2ApLCBpbnRvIG9uZSBjb21wb25lbnQgd2l0aCB0aGUgY29tbWFuZHMgY29udmVydGVkIGZvciBlYWNoIG1hbmFnZXIsIGFzIGBAZG9jdXNhdXJ1cy9yZW1hcmstcGx1Z2luLW5wbTJ5YXJuYCBkb2VzIGZvciBucG0uICovXG5leHBvcnQgaW50ZXJmYWNlIFBhY2thZ2VDb21tYW5kT3B0aW9ucyB7XG4gIC8qKiBUaGUgY29tcG9uZW50IGEgYmxvY2sgYmVjb21lczsgb25lIHN0cmluZyBhdHRyaWJ1dGUgcGVyIG1hbmFnZXIuIEBkZWZhdWx0IFwiUGFja2FnZVRhYnNcIiAqL1xuICBjb21wb25lbnQ/OiBzdHJpbmdcbiAgLyoqIEVhY2ggZWNvc3lzdGVtJ3MgbWFuYWdlcnMsIGluIGF0dHJpYnV0ZSBvcmRlcjsgYW4gZW1wdHkgbGlzdCBsZWF2ZXMgaXRzIGJsb2NrcyBjb2RlLiAqL1xuICBlY29zeXN0ZW1zPzogRWNvc3lzdGVtc1xufVxuXG4vKiogVGhlIG1hbmFnZXJzIGBtZC5wYWNrYWdlQ29tbWFuZGAgY29udmVydHMgZWFjaCBlY29zeXN0ZW0ncyBjb21tYW5kcyBmb3IuICovXG5leHBvcnQgaW50ZXJmYWNlIEVjb3N5c3RlbXMge1xuICAvKiogTWFuYWdlcnMgZm9yIGBucG1gIGJsb2NrcywgY29udmVydGVkIGFzIG5wbS10by15YXJuIGNvbnZlcnRzOyBucG0sIHBucG0sIHlhcm4gYW5kIGJ1biBieSBkZWZhdWx0LiAqL1xuICBucG0/OiBOcG1NYW5hZ2VyW11cbiAgLyoqIE1hbmFnZXJzIGZvciBgcGlwYCBibG9ja3M7IHBpcCwgdXYsIHBvZXRyeSBhbmQgcGRtIGJ5IGRlZmF1bHQuICovXG4gIHBpcD86IFBpcE1hbmFnZXJbXVxuICAvKiogTWFuYWdlcnMgZm9yIGBjYXJnb2AgYmxvY2tzOyBjYXJnbyBhbmQgY2FyZ28tYmluc3RhbGwgYnkgZGVmYXVsdC4gKi9cbiAgY2FyZ28/OiBDYXJnb01hbmFnZXJbXVxufVxuXG4vKiogQSBKYXZhU2NyaXB0IHBhY2thZ2UgbWFuYWdlciBhbiBgbnBtYCBjb21tYW5kIGNvbnZlcnRzIHRvLiAqL1xuZXhwb3J0IHR5cGUgTnBtTWFuYWdlciA9IFwibnBtXCIgfCBcInBucG1cIiB8IFwieWFyblwiIHwgXCJidW5cIiB8IFwiZGVub1wiIHwgXCJudWJcIlxuXG4vKiogQSBQeXRob24gcGFja2FnZSBtYW5hZ2VyIGEgYHBpcGAgY29tbWFuZCBjb252ZXJ0cyB0by4gKi9cbmV4cG9ydCB0eXBlIFBpcE1hbmFnZXIgPSBcInBpcFwiIHwgXCJ1dlwiIHwgXCJwb2V0cnlcIiB8IFwicGRtXCJcblxuLyoqIEEgUnVzdCBpbnN0YWxsZXIgYSBgY2FyZ29gIGNvbW1hbmQgY29udmVydHMgdG8uICovXG5leHBvcnQgdHlwZSBDYXJnb01hbmFnZXIgPSBcImNhcmdvXCIgfCBcImNhcmdvLWJpbnN0YWxsXCJcblxuLyoqIGBtZC5oZWFkaW5nSWRgOiBgeyNpZH1gIGF0IHRoZSBlbmQgb2YgYSBoZWFkaW5nLCBhZnRlciBhIHNwYWNlLCBhcyBpdHMgaWQsIGFzIHJlbWFyay1oZWFkaW5nLWlkIHJlYWRzIGl0OyBoZWFkaW5ncyB3aXRob3V0IG9uZSBrZWVwIG5vbmUuICovXG5leHBvcnQgaW50ZXJmYWNlIEhlYWRpbmdJZE9wdGlvbnMge1xuICAvKiogUmVhZCBhIHdob2xlIGF0dHJpYnV0ZSBsaXN0LCBgeyNpZCAuY2xhc3Mga2V5PXZhbHVlIGtleT1cInYgd1wifWAsIGFzIGRpcmVjdGl2ZXMgd3JpdGUgdGhlaXJzOiBjbGFzc2VzIGJlY29tZSBgY2xhc3NOYW1lYCBhbmQgb3RoZXIga2V5cyBwcm9wZXJ0aWVzLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBhdHRyaWJ1dGVzPzogYm9vbGVhblxuICAvKiogTGl0ZXJhbCBzdWZmaXhlcywgc3VjaCBhcyBgW3N0ZXBdYCwgc3RyaXBwZWQgZnJvbSBhIGhlYWRpbmcncyBlbmQgZm9yIHRoZSBhdHRyaWJ1dGVzIGVhY2ggbmFtZXMsIGEgdmFsdWUgb3IgYHRydWVgIGZvciBhIGJhcmUgb25lOiBge1wiW3N0ZXBdXCI6IHtcImRhdGEtc3RlcFwiOiB0cnVlfX1gLiAqL1xuICBtYXJrZXJzPzogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgTWFya2VyVmFsdWU+PlxufVxuXG4vKiogQW4gYXR0cmlidXRlIGEgaGVhZGluZyBtYXJrZXIgc2V0czogaXRzIHZhbHVlLCBvciBgdHJ1ZWAgZm9yIHRoZSBiYXJlIGF0dHJpYnV0ZS4gKi9cbmV4cG9ydCB0eXBlIE1hcmtlclZhbHVlID0gYm9vbGVhbiB8IHN0cmluZ1xuXG4vKiogYG1kLnBhdGhSZXdyaXRlYDogdGhlIFVSTHMgb2YgaW1hZ2VzLCBsaW5rcyBhbmQgZGVmaW5pdGlvbnMgYXMgYSBzaXRlIHNlcnZlcyB0aGVtOiByZWxhdGl2ZSBvbmVzIHJlc29sdmVkIGFnYWluc3QgdGhlIGZpbGUncyBwYXRoIGFuZCBtYWRlIHJvb3QtcmVsYXRpdmUsIGV2ZXJ5IHJvb3QtcmVsYXRpdmUgb25lIHVuZGVyIGBiYXNlYCwgYW5kIGxpbmtzIHRvIE1hcmtkb3duIGZpbGVzIHR1cm5lZCBpbnRvIHBhZ2UgVVJMcy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGF0aFJld3JpdGVPcHRpb25zIHtcbiAgLyoqIFRoZSBkaXJlY3RvcnkgVVJMcyBjb3VudCBmcm9tLCBhcyB0aGUgZmlsZSdzIHBhdGggc3BlbGxzIGl0OyB0aGUgcGF0aCdzIG93biBzdGFydGluZyBwb2ludCB3aGVuIGxlZnQgb3V0LiAqL1xuICByb290Pzogc3RyaW5nIHwgbnVsbFxuICAvKiogVGhlIFVSTCB0aGUgc2l0ZSBpcyBzZXJ2ZWQgYXQsIHN1Y2ggYXMgYC9kb2NzYCwgcHV0IGJlZm9yZSBldmVyeSByb290LXJlbGF0aXZlIFVSTCBvbmNlLiAqL1xuICBiYXNlPzogc3RyaW5nIHwgbnVsbFxuICAvKiogVGhlIG5vZGVzIHdob3NlIFVSTHMgYXJlIHJld3JpdHRlbjsgaW1hZ2VzLCBsaW5rcyBhbmQgZGVmaW5pdGlvbnMgd2hlbiBsZWZ0IG91dC4gKi9cbiAgbm9kZXM/OiBVcmxOb2RlW10gfCBudWxsXG4gIC8qKiBNYXJrZG93biBmaWxlcywgcmVsYXRpdmUgdG8gYHJvb3RgLCB0byB0aGUgVVJMIG9mIHRoZWlyIHBhZ2U7IGEgbGluayB0byBvbmUgb2YgdGhlbSB0YWtlcyBpdCwgYmVmb3JlIGBtYXJrZG93bkxpbmtzYCBhcHBsaWVzLiBAZGVmYXVsdCB7fSAqL1xuICBwYWdlcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz5cbiAgLyoqIEhvdyBhIGxpbmsgdG8gYSBNYXJrZG93biBmaWxlIG5vIHBhZ2UgbmFtZXMgYmVjb21lcyBhIFVSTC4gKi9cbiAgbWFya2Rvd25MaW5rcz86IE1hcmtkb3duTGlua3Ncbn1cblxuLyoqIEEgbm9kZSB3aXRoIGEgVVJMLiAqL1xuZXhwb3J0IHR5cGUgVXJsTm9kZSA9IFwiaW1hZ2VcIiB8IFwibGlua1wiIHwgXCJkZWZpbml0aW9uXCJcblxuLyoqIEhvdyBhIGxpbmsgdG8gYSBNYXJrZG93biBmaWxlIGJlY29tZXMgYSBVUkwuICovXG5leHBvcnQgdHlwZSBNYXJrZG93bkxpbmtzID0gXCJrZWVwXCIgfCBcImRpcmVjdG9yeVwiIHwgXCJodG1sXCJcblxuLyoqIGBtZC5zaGlmdEhlYWRpbmdgOiBldmVyeSBoZWFkaW5nJ3MgZGVwdGggbW92ZWQgYnkgYHNoaWZ0YCBhbmQga2VwdCB3aXRoaW4gMSB0byA2LCBhcyByZWh5cGUtc2hpZnQtaGVhZGluZyBtb3ZlcyBoYXN0J3MsIGFmdGVyIHRoZSBkb2N1bWVudCdzIHRpdGxlIGlzIGRyb3BwZWQgd2hlbiBhc2tlZC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2hpZnRIZWFkaW5nT3B0aW9ucyB7XG4gIC8qKiBUaGUgbGV2ZWxzIGFkZGVkIHRvIGVhY2ggaGVhZGluZydzIGRlcHRoOiBgLTFgIG1ha2VzIGFuIGgyIGFuIGgxLCBgMWAgYW4gaDEgYW4gaDIuIEBkZWZhdWx0IDAgKi9cbiAgc2hpZnQ/OiBudW1iZXJcbiAgLyoqIERyb3AgdGhlIGRvY3VtZW50J3MgZmlyc3Qgbm9kZSB3aGVuIGl0IGlzIGFuIGgxLCBsb29raW5nIHBhc3QgZnJvbnRtYXR0ZXIgYW5kIEVTTS4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgZHJvcFRpdGxlPzogYm9vbGVhblxufVxuXG4vKiogYG1kLnN0cmlwYDogbWRhc3QgZG93biB0byBpdHMgdGV4dCwgYXMgc3RyaXAtbWFya2Rvd24gZG9lczogY29kZSwgSFRNTCwgdGFibGVzIGFuZCB0aGUgbGlrZSBkcm9wcGVkLCBoZWFkaW5ncyBtYWRlIHBhcmFncmFwaHMsIGZvcm1hdHRpbmcgdW53cmFwcGVkLiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdHJpcE9wdGlvbnMge1xuICAvKiogTm9kZSB0eXBlcyB0byBsZWF2ZSBhcyB0aGV5IGFyZSwgc3VjaCBhcyBgaW5saW5lQ29kZWAuIEBkZWZhdWx0IFtdICovXG4gIGtlZXA/OiBzdHJpbmdbXVxuICAvKiogTm9kZSB0eXBlcyB0byBkcm9wLCBiZXNpZGVzIHRob3NlIHN0cmlwLW1hcmtkb3duIGRyb3BzLiBAZGVmYXVsdCBbXSAqL1xuICByZW1vdmU/OiBzdHJpbmdbXVxufVxuXG4vKiogYG1kLnRvY2A6IGEgdGFibGUgb2YgY29udGVudHMgdW5kZXIgdGhlIGZpcnN0IGhlYWRpbmcgbWF0Y2hpbmcgYGhlYWRpbmdgLCByZXBsYWNpbmcgd2hhdCBzYXQgYmV0d2VlbiBpdCBhbmQgdGhlIG5leHQgaGVhZGluZyBhcyBkZWVwIG9yIHNoYWxsb3dlciwgYXMgcmVtYXJrLXRvYyBtYWtlcyBpdC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVG9jT3B0aW9ucyB7XG4gIC8qKiBUaGUgaGVhZGluZyB0byBwdXQgdGhlIHRhYmxlIHVuZGVyLCBhcyBKYXZhU2NyaXB0IHJlZ3VsYXIgZXhwcmVzc2lvbiBzb3VyY2UgbWF0Y2hlZCBhZ2FpbnN0IGl0cyB3aG9sZSB0ZXh0LCBjYXNlLWluc2Vuc2l0aXZlbHk7IGAodGFibGVbIC1db2ZbIC1dKT9jb250ZW50cz98dG9jYCB3aGVuIHVuc2V0LiAqL1xuICBoZWFkaW5nPzogc3RyaW5nIHwgbnVsbFxuICAvKiogVGhlIGRlZXBlc3QgaGVhZGluZyByYW5rIHRvIGxpc3QsIDEgdG8gNi4gKi9cbiAgbWF4RGVwdGg/OiBudW1iZXIgfCBudWxsXG4gIC8qKiBUaGUgc2hhbGxvd2VzdCBoZWFkaW5nIHJhbmsgdG8gbGlzdCwgMSB0byA2LiAqL1xuICBtaW5EZXB0aD86IG51bWJlciB8IG51bGxcbiAgLyoqIEhlYWRpbmdzIHRvIGxlYXZlIG91dCwgYXMgSmF2YVNjcmlwdCByZWd1bGFyIGV4cHJlc3Npb24gc291cmNlIG1hdGNoZWQgYWdhaW5zdCB0aGVpciB3aG9sZSB0ZXh0LCBjYXNlLWluc2Vuc2l0aXZlbHkuICovXG4gIHNraXA/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBLZWVwIHRoZSBsaXN0IGNvbXBhY3QsIHdpdGhvdXQgYmxhbmsgbGluZXMgYmV0d2VlbiBpdGVtczsgYHRydWVgIHdoZW4gdW5zZXQuICovXG4gIHRpZ2h0PzogYm9vbGVhbiB8IG51bGxcbiAgLyoqIE51bWJlciB0aGUgbGlzdCBpbnN0ZWFkIG9mIGJ1bGxldGluZyBpdC4gKi9cbiAgb3JkZXJlZD86IGJvb2xlYW4gfCBudWxsXG4gIC8qKiBXaGF0IGVhY2ggbGluaydzIGZyYWdtZW50IHN0YXJ0cyB3aXRoLCBzdWNoIGFzIGB1c2VyLWNvbnRlbnQtYC4gKi9cbiAgcHJlZml4Pzogc3RyaW5nIHwgbnVsbFxuICAvKiogVGhlIHBhcmVudHMgd2hvc2UgaGVhZGluZ3MgYXJlIGxpc3RlZCwgYXMgYSB1bmlzdC11dGlsLWlzIHRlc3Q6IGEgbm9kZSB0eXBlLCBhbiBvYmplY3Qgb2YgZmllbGRzIGEgcGFyZW50IG11c3QgZXF1YWwsIG9yIGEgbGlzdCBvZiB0aGVzZTsgb25seSB0aGUgcm9vdCB3aGVuIHVuc2V0LiAqL1xuICBwYXJlbnRzPzogUGFyZW50VGVzdCB8IG51bGxcbn1cblxuLyoqIEEgdW5pc3QtdXRpbC1pcyB0ZXN0IG9mIGEgbm9kZSwgd3JpdHRlbiBhcyBKU09OOiBvbmUgY2hlY2ssIG9yIGEgbGlzdCBhbnkgb2Ygd2hpY2ggcGFzc2VzLiAqL1xuZXhwb3J0IHR5cGUgUGFyZW50VGVzdCA9IFBhcmVudENoZWNrIHwgUGFyZW50Q2hlY2tbXVxuXG4vKiogT25lIHVuaXN0LXV0aWwtaXMgY2hlY2s6IGEgbm9kZSB0eXBlLCBvciBmaWVsZHMgYSBub2RlIG11c3QgZXF1YWwuICovXG5leHBvcnQgdHlwZSBQYXJlbnRDaGVjayA9IHN0cmluZyB8IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG5cbi8qKiBgbWQuc3RyaW5naWZ5YDogbWRhc3QgaW50byBNYXJrZG93bjsgb3B0aW9ucyBuYW1lZCBhcyBtZGFzdC11dGlsLXRvLW1hcmtkb3duIG5hbWVzIHRoZW0uICovXG5leHBvcnQgaW50ZXJmYWNlIFN0cmluZ2lmeU9wdGlvbnMge1xuICAvKiogVGhlIG1hcmtlciBvZiB1bm9yZGVyZWQgbGlzdCBpdGVtczogYCpgLCBgK2Agb3IgYC1gLiAqL1xuICBidWxsZXQ/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBUaGUgbWFya2VyIG9mIG9yZGVyZWQgbGlzdCBpdGVtczogYC5gIG9yIGApYC4gKi9cbiAgYnVsbGV0T3JkZXJlZD86IHN0cmluZyB8IG51bGxcbiAgLyoqIFRoZSBtYXJrZXIgb2YgYSBsaXN0IHJpZ2h0IGFmdGVyIGEgbGlzdCB3aXRoIGBidWxsZXRgLiAqL1xuICBidWxsZXRPdGhlcj86IHN0cmluZyB8IG51bGxcbiAgLyoqIENsb3NlIEFUWCBoZWFkaW5ncyB3aXRoIGFzIG1hbnkgYCNgIGFzIHRoZXkgb3BlbiB3aXRoLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBjbG9zZUF0eD86IGJvb2xlYW5cbiAgLyoqIFRoZSBtYXJrZXIgb2YgZW1waGFzaXM6IGAqYCBvciBgX2AuICovXG4gIGVtcGhhc2lzPzogc3RyaW5nIHwgbnVsbFxuICAvKiogVGhlIG1hcmtlciBvZiBmZW5jZWQgY29kZTogYGAgYCBgYCBvciBgfmAuICovXG4gIGZlbmNlPzogc3RyaW5nIHwgbnVsbFxuICAvKiogRmVuY2UgY29kZTsgYGZhbHNlYCBpbmRlbnRzIGl0IHdoZXJlIGl0IGNhbi4gQGRlZmF1bHQgdHJ1ZSAqL1xuICBmZW5jZXM/OiBib29sZWFuXG4gIC8qKiBOdW1iZXIgb3JkZXJlZCBsaXN0IGl0ZW1zIHVwIGZyb20gYHN0YXJ0YC4gQGRlZmF1bHQgdHJ1ZSAqL1xuICBpbmNyZW1lbnRMaXN0TWFya2VyPzogYm9vbGVhblxuICAvKiogSG93IGxpc3QgaXRlbSBjb250ZW50IGlzIGluZGVudGVkOiBgb25lYCwgYHRhYmAgb3IgYG1peGVkYC4gKi9cbiAgbGlzdEl0ZW1JbmRlbnQ/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBUaGUgbWFya2VyIG9mIHRpdGxlczogYFwiYCBvciBgJ2AuICovXG4gIHF1b3RlPzogc3RyaW5nIHwgbnVsbFxuICAvKiogV3JpdGUgbGlua3MgYXMgcmVzb3VyY2VzIGV2ZW4gd2hlcmUgYW4gYXV0b2xpbmsgd291bGQgZG8uIEBkZWZhdWx0IGZhbHNlICovXG4gIHJlc291cmNlTGluaz86IGJvb2xlYW5cbiAgLyoqIFRoZSBtYXJrZXIgb2YgdGhlbWF0aWMgYnJlYWtzOiBgKmAsIGAtYCBvciBgX2AuICovXG4gIHJ1bGU/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBIb3cgbWFueSBtYXJrZXJzIGEgdGhlbWF0aWMgYnJlYWsgaGFzLCAzIG9yIG1vcmUuICovXG4gIHJ1bGVSZXBldGl0aW9uPzogbnVtYmVyIHwgbnVsbFxuICAvKiogUHV0IHNwYWNlcyBiZXR3ZWVuIHRoZSBtYXJrZXJzIG9mIGEgdGhlbWF0aWMgYnJlYWsuIEBkZWZhdWx0IGZhbHNlICovXG4gIHJ1bGVTcGFjZXM/OiBib29sZWFuXG4gIC8qKiBXcml0ZSBoZWFkaW5ncyBvZiByYW5rIDEgYW5kIDIgYXMgc2V0ZXh0IGhlYWRpbmdzLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBzZXRleHQ/OiBib29sZWFuXG4gIC8qKiBUaGUgbWFya2VyIG9mIHN0cm9uZzogYCpgIG9yIGBfYC4gKi9cbiAgc3Ryb25nPzogc3RyaW5nIHwgbnVsbFxuICAvKiogSm9pbiBkZWZpbml0aW9ucyB3aXRoIG5vIGJsYW5rIGxpbmUgYmV0d2VlbiB0aGVtLiBAZGVmYXVsdCBmYWxzZSAqL1xuICB0aWdodERlZmluaXRpb25zPzogYm9vbGVhblxuICAvKiogRXh0cmEgcGF0dGVybnMgb2YgY2hhcmFjdGVycyB0byBlc2NhcGUuICovXG4gIHVuc2FmZT86IFVuc2FmZVBhdHRlcm5bXVxufVxuXG4vKiogQSBjaGFyYWN0ZXIgdG8gZXNjYXBlIHdoZXJlIGl0IHdvdWxkIG90aGVyd2lzZSBzdGFydCBvciBlbmQgc3ludGF4LiAqL1xuZXhwb3J0IGludGVyZmFjZSBVbnNhZmVQYXR0ZXJuIHtcbiAgLyoqIFRoZSBjaGFyYWN0ZXIsIGVzY2FwZWQgYXMgYSByZWd1bGFyIGV4cHJlc3Npb24gd291bGQgbmVlZCBpdC4gQGRlZmF1bHQgXCJcIiAqL1xuICBjaGFyYWN0ZXI/OiBzdHJpbmdcbiAgLyoqIEEgcmVndWxhciBleHByZXNzaW9uIHRoYXQgbXVzdCBtYXRjaCByaWdodCBiZWZvcmUgdGhlIGNoYXJhY3Rlci4gKi9cbiAgYmVmb3JlPzogc3RyaW5nIHwgbnVsbFxuICAvKiogQSByZWd1bGFyIGV4cHJlc3Npb24gdGhhdCBtdXN0IG1hdGNoIHJpZ2h0IGFmdGVyIHRoZSBjaGFyYWN0ZXIuICovXG4gIGFmdGVyPzogc3RyaW5nIHwgbnVsbFxuICAvKiogT25seSBhdCB0aGUgc3RhcnQgb2YgYSBsaW5lLCBhZnRlciBhbnkgaW5kZW50LiBAZGVmYXVsdCBmYWxzZSAqL1xuICBhdEJyZWFrPzogYm9vbGVhblxuICAvKiogT25seSBpbnNpZGUgb25lIG9mIHRoZXNlIGNvbnN0cnVjdHMuICovXG4gIGluQ29uc3RydWN0PzogTmFtZXMgfCBudWxsXG4gIC8qKiBOZXZlciBpbnNpZGUgb25lIG9mIHRoZXNlIGNvbnN0cnVjdHMuICovXG4gIG5vdEluQ29uc3RydWN0PzogTmFtZXMgfCBudWxsXG4gIC8qKiBPbmx5IGF0IHRoZSBzdGFydCBvZiBhIG5vZGUgcmlnaHQgYWZ0ZXIgb25lIG9mIHRoZXNlIG5vZGUgdHlwZXMuICovXG4gIGJlZm9yZU5vZGU/OiBOYW1lcyB8IG51bGxcbiAgLyoqIE9ubHkgYXQgdGhlIGVuZCBvZiBhIG5vZGUgcmlnaHQgYmVmb3JlIG9uZSBvZiB0aGVzZSBub2RlIHR5cGVzLiAqL1xuICBhZnRlck5vZGU/OiBOYW1lcyB8IG51bGxcbiAgLyoqIFJlYWQgYGJlZm9yZWAgYW5kIGBhZnRlcmAgd2l0aCBVbmljb2RlIGNsYXNzZXMgc3VjaCBhcyBgXFxwe0x9YC4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgdW5pY29kZT86IGJvb2xlYW5cbn1cblxuLyoqIGBtZC50b0h0bWxgOiBtZGFzdCBpbnRvIGhhc3Q7IG9wdGlvbnMgbmFtZWQgYXMgcmVtYXJrLXJlaHlwZSBuYW1lcyB0aGVtLiAqL1xuZXhwb3J0IGludGVyZmFjZSBUb0h0bWxPcHRpb25zIHtcbiAgLyoqIEtlZXAgcmF3IEhUTUwgaW4gdGhlIHRyZWUgaW5zdGVhZCBvZiBkcm9wcGluZyBpdC4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgYWxsb3dEYW5nZXJvdXNIdG1sPzogYm9vbGVhblxuICAvKiogV2hhdCBmb290bm90ZSBgaWRgcyBzdGFydCB3aXRoLCBzbyB0aGV5IGNhbm5vdCBjbG9iYmVyIHRoZSBwYWdlJ3M7IGB1c2VyLWNvbnRlbnQtYCB3aGVuIHVuc2V0LiAqL1xuICBjbG9iYmVyUHJlZml4Pzogc3RyaW5nIHwgbnVsbFxuICAvKiogVGhlIHRleHQgb2YgZWFjaCBmb290bm90ZSdzIGJhY2sgcmVmZXJlbmNlOyBg4oapYCwgbnVtYmVyZWQgZnJvbSB0aGUgc2Vjb25kLCB3aGVuIHVuc2V0LiAqL1xuICBmb290bm90ZUJhY2tDb250ZW50Pzogc3RyaW5nIHwgbnVsbFxuICAvKiogVGhlIGBhcmlhLWxhYmVsYCBvZiBlYWNoIGZvb3Rub3RlJ3MgYmFjayByZWZlcmVuY2U7IGBCYWNrIHRvIHJlZmVyZW5jZSAxYCBhbmQgc28gb24gd2hlbiB1bnNldC4gKi9cbiAgZm9vdG5vdGVCYWNrTGFiZWw/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBUaGUgaGVhZGluZyBvZiB0aGUgZm9vdG5vdGVzIHNlY3Rpb247IGBGb290bm90ZXNgIHdoZW4gdW5zZXQuICovXG4gIGZvb3Rub3RlTGFiZWw/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBUaGUgdGFnIG5hbWUgb2YgdGhlIGZvb3Rub3RlcyBzZWN0aW9uJ3MgaGVhZGluZzsgYGgyYCB3aGVuIHVuc2V0LiAqL1xuICBmb290bm90ZUxhYmVsVGFnTmFtZT86IHN0cmluZyB8IG51bGxcbiAgLyoqIE5vZGUgdHlwZXMgd2l0aG91dCBhIGhhbmRsZXIgdG8gY29weSBpbnRvIGhhc3QgYXMgdGhleSBhcmUsIHRoZWlyIGNoaWxkcmVuIGNvbnZlcnRlZC4gQGRlZmF1bHQgW10gKi9cbiAgcGFzc1Rocm91Z2g/OiBzdHJpbmdbXVxuICAvKiogQW4gYGFyaWEtbGFiZWxgIGZvciBlYWNoIHRhc2stbGlzdCBjaGVja2JveCwgc28gc2NyZWVuIHJlYWRlcnMgbmFtZSBpdDsgbm9uZSB3aGVuIGxlZnQgb3V0LCBhcyByZW1hcmstcmVoeXBlIHdyaXRlcyBub25lLiAqL1xuICB0YXNrTGlzdExhYmVscz86IFRhc2tMaXN0TGFiZWxzIHwgbnVsbFxufVxuXG4vKiogVGhlIGxhYmVscyBvZiB0YXNrLWxpc3QgY2hlY2tib3hlcy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFza0xpc3RMYWJlbHMge1xuICAvKiogVGhlIGxhYmVsIG9mIGEgY2hlY2tlZCBib3gsIHN1Y2ggYXMgYENvbXBsZXRlZCB0YXNrYC4gKi9cbiAgY2hlY2tlZDogc3RyaW5nXG4gIC8qKiBUaGUgbGFiZWwgb2YgYW4gdW5jaGVja2VkIGJveCwgc3VjaCBhcyBgVGFza2AuICovXG4gIHVuY2hlY2tlZDogc3RyaW5nXG59XG5cbi8qKiBgbWQudG9OYXR1cmFsTGFuZ3VhZ2VgOiBtZGFzdCBpbnRvIG5sY3N0LCB0b2tlbml6ZWQgYnkgdGhlIHByb2Nlc3NvcidzIG5hdHVyYWwtbGFuZ3VhZ2UgcGFyc2VyOyBvcHRpb25zIG5hbWVkIGFzIHJlbWFyay1yZXRleHQgYW5kIG1kYXN0LXV0aWwtdG8tbmxjc3QgbmFtZSB0aGVtLiAqL1xuZXhwb3J0IGludGVyZmFjZSBUb05hdHVyYWxMYW5ndWFnZU9wdGlvbnMge1xuICAvKiogTm9kZSB0eXBlcyB0byBsZWF2ZSBvdXQsIGJlc2lkZXMgYHRhYmxlYCwgYHRhYmxlUm93YCBhbmQgYHRhYmxlQ2VsbGAuIEBkZWZhdWx0IFtdICovXG4gIGlnbm9yZT86IHN0cmluZ1tdXG4gIC8qKiBOb2RlIHR5cGVzIHRvIGtlZXAgYXMgb25lIGBTb3VyY2VOb2RlYCBvZiB0aGVpciBzb3VyY2UgdGV4dCwgYmVzaWRlcyBgaW5saW5lQ29kZWAuIEBkZWZhdWx0IFtdICovXG4gIHNvdXJjZT86IHN0cmluZ1tdXG59XG5cbi8qKiBUaGUgYG1kLnBhcnNlYCBwbHVnaW4uICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2Uob3B0aW9ucz86IFBhcnNlT3B0aW9ucyk6IFBsdWdpbjxcIm1kLnBhcnNlXCIsIFBhcnNlT3B0aW9ucz4gJiBQYXJzZXI8Um9vdD4ge1xuICBpZiAob3B0aW9ucyA9PT0gdW5kZWZpbmVkKSByZXR1cm4geyBuYW1lOiBcIm1kLnBhcnNlXCIgfVxuICByZXR1cm4geyBuYW1lOiBcIm1kLnBhcnNlXCIsIG9wdGlvbnMgfVxufVxuXG4vKiogVGhlIGBtZC5kaXJlY3RpdmVgIHBsdWdpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaXJlY3RpdmUob3B0aW9ucz86IERpcmVjdGl2ZU9wdGlvbnMpOiBQbHVnaW48XCJtZC5kaXJlY3RpdmVcIiwgRGlyZWN0aXZlT3B0aW9ucz4ge1xuICBpZiAob3B0aW9ucyA9PT0gdW5kZWZpbmVkKSByZXR1cm4geyBuYW1lOiBcIm1kLmRpcmVjdGl2ZVwiIH1cbiAgcmV0dXJuIHsgbmFtZTogXCJtZC5kaXJlY3RpdmVcIiwgb3B0aW9ucyB9XG59XG5cbi8qKiBUaGUgYG1kLmdmbWAgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdmbShvcHRpb25zPzogR2ZtT3B0aW9ucyk6IFBsdWdpbjxcIm1kLmdmbVwiLCBHZm1PcHRpb25zPiB7XG4gIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiB7IG5hbWU6IFwibWQuZ2ZtXCIgfVxuICByZXR1cm4geyBuYW1lOiBcIm1kLmdmbVwiLCBvcHRpb25zIH1cbn1cblxuLyoqIFRoZSBgbWQuZGVmaW5pdGlvbkxpc3RgIHBsdWdpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWZpbml0aW9uTGlzdCgpOiBQbHVnaW48XCJtZC5kZWZpbml0aW9uTGlzdFwiPiB7XG4gIHJldHVybiB7IG5hbWU6IFwibWQuZGVmaW5pdGlvbkxpc3RcIiB9XG59XG5cbi8qKiBUaGUgYG1kLm1hdGhgIHBsdWdpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXRoKG9wdGlvbnM/OiBNYXRoT3B0aW9ucyk6IFBsdWdpbjxcIm1kLm1hdGhcIiwgTWF0aE9wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJtZC5tYXRoXCIgfVxuICByZXR1cm4geyBuYW1lOiBcIm1kLm1hdGhcIiwgb3B0aW9ucyB9XG59XG5cbi8qKiBUaGUgYG1kLm1keGAgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1keChvcHRpb25zPzogTWR4T3B0aW9ucyk6IFBsdWdpbjxcIm1kLm1keFwiLCBNZHhPcHRpb25zPiB7XG4gIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiB7IG5hbWU6IFwibWQubWR4XCIgfVxuICByZXR1cm4geyBuYW1lOiBcIm1kLm1keFwiLCBvcHRpb25zIH1cbn1cblxuLyoqIFRoZSBgbWQuZnJvbnRtYXR0ZXJgIHBsdWdpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmcm9udG1hdHRlcihvcHRpb25zPzogRnJvbnRtYXR0ZXJPcHRpb25zKTogUGx1Z2luPFwibWQuZnJvbnRtYXR0ZXJcIiwgRnJvbnRtYXR0ZXJPcHRpb25zPiB7XG4gIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiB7IG5hbWU6IFwibWQuZnJvbnRtYXR0ZXJcIiB9XG4gIHJldHVybiB7IG5hbWU6IFwibWQuZnJvbnRtYXR0ZXJcIiwgb3B0aW9ucyB9XG59XG5cbi8qKiBUaGUgYG1kLmdlbW9qaWAgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbW9qaSgpOiBQbHVnaW48XCJtZC5nZW1vamlcIj4ge1xuICByZXR1cm4geyBuYW1lOiBcIm1kLmdlbW9qaVwiIH1cbn1cblxuLyoqIFRoZSBgbWQuY29tcG9uZW50YCBwbHVnaW4uICovXG5leHBvcnQgZnVuY3Rpb24gY29tcG9uZW50KG9wdGlvbnM/OiBDb21wb25lbnRPcHRpb25zKTogUGx1Z2luPFwibWQuY29tcG9uZW50XCIsIENvbXBvbmVudE9wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJtZC5jb21wb25lbnRcIiB9XG4gIHJldHVybiB7IG5hbWU6IFwibWQuY29tcG9uZW50XCIsIG9wdGlvbnMgfVxufVxuXG4vKiogVGhlIGBtZC5wYWNrYWdlQ29tbWFuZGAgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhY2thZ2VDb21tYW5kKG9wdGlvbnM/OiBQYWNrYWdlQ29tbWFuZE9wdGlvbnMpOiBQbHVnaW48XCJtZC5wYWNrYWdlQ29tbWFuZFwiLCBQYWNrYWdlQ29tbWFuZE9wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJtZC5wYWNrYWdlQ29tbWFuZFwiIH1cbiAgcmV0dXJuIHsgbmFtZTogXCJtZC5wYWNrYWdlQ29tbWFuZFwiLCBvcHRpb25zIH1cbn1cblxuLyoqIFRoZSBgbWQuaGVhZGluZ0lkYCBwbHVnaW4uICovXG5leHBvcnQgZnVuY3Rpb24gaGVhZGluZ0lkKG9wdGlvbnM/OiBIZWFkaW5nSWRPcHRpb25zKTogUGx1Z2luPFwibWQuaGVhZGluZ0lkXCIsIEhlYWRpbmdJZE9wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJtZC5oZWFkaW5nSWRcIiB9XG4gIHJldHVybiB7IG5hbWU6IFwibWQuaGVhZGluZ0lkXCIsIG9wdGlvbnMgfVxufVxuXG4vKiogVGhlIGBtZC5wYXRoUmV3cml0ZWAgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhdGhSZXdyaXRlKG9wdGlvbnM/OiBQYXRoUmV3cml0ZU9wdGlvbnMpOiBQbHVnaW48XCJtZC5wYXRoUmV3cml0ZVwiLCBQYXRoUmV3cml0ZU9wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJtZC5wYXRoUmV3cml0ZVwiIH1cbiAgcmV0dXJuIHsgbmFtZTogXCJtZC5wYXRoUmV3cml0ZVwiLCBvcHRpb25zIH1cbn1cblxuLyoqIFRoZSBgbWQuc2hpZnRIZWFkaW5nYCBwbHVnaW4uICovXG5leHBvcnQgZnVuY3Rpb24gc2hpZnRIZWFkaW5nKG9wdGlvbnM/OiBTaGlmdEhlYWRpbmdPcHRpb25zKTogUGx1Z2luPFwibWQuc2hpZnRIZWFkaW5nXCIsIFNoaWZ0SGVhZGluZ09wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJtZC5zaGlmdEhlYWRpbmdcIiB9XG4gIHJldHVybiB7IG5hbWU6IFwibWQuc2hpZnRIZWFkaW5nXCIsIG9wdGlvbnMgfVxufVxuXG4vKiogVGhlIGBtZC5zdHJpcGAgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0cmlwKG9wdGlvbnM/OiBTdHJpcE9wdGlvbnMpOiBQbHVnaW48XCJtZC5zdHJpcFwiLCBTdHJpcE9wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJtZC5zdHJpcFwiIH1cbiAgcmV0dXJuIHsgbmFtZTogXCJtZC5zdHJpcFwiLCBvcHRpb25zIH1cbn1cblxuLyoqIFRoZSBgbWQudG9jYCBwbHVnaW4uICovXG5leHBvcnQgZnVuY3Rpb24gdG9jKG9wdGlvbnM/OiBUb2NPcHRpb25zKTogUGx1Z2luPFwibWQudG9jXCIsIFRvY09wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJtZC50b2NcIiB9XG4gIHJldHVybiB7IG5hbWU6IFwibWQudG9jXCIsIG9wdGlvbnMgfVxufVxuXG4vKiogVGhlIGBtZC5zdHJpbmdpZnlgIHBsdWdpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmdpZnkob3B0aW9ucz86IFN0cmluZ2lmeU9wdGlvbnMpOiBQbHVnaW48XCJtZC5zdHJpbmdpZnlcIiwgU3RyaW5naWZ5T3B0aW9ucz4ge1xuICBpZiAob3B0aW9ucyA9PT0gdW5kZWZpbmVkKSByZXR1cm4geyBuYW1lOiBcIm1kLnN0cmluZ2lmeVwiIH1cbiAgcmV0dXJuIHsgbmFtZTogXCJtZC5zdHJpbmdpZnlcIiwgb3B0aW9ucyB9XG59XG5cbi8qKiBUaGUgYG1kLnRvSHRtbGAgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSHRtbChvcHRpb25zPzogVG9IdG1sT3B0aW9ucyk6IFBsdWdpbjxcIm1kLnRvSHRtbFwiLCBUb0h0bWxPcHRpb25zPiB7XG4gIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiB7IG5hbWU6IFwibWQudG9IdG1sXCIgfVxuICByZXR1cm4geyBuYW1lOiBcIm1kLnRvSHRtbFwiLCBvcHRpb25zIH1cbn1cblxuLyoqIFRoZSBgbWQudG9OYXR1cmFsTGFuZ3VhZ2VgIHBsdWdpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b05hdHVyYWxMYW5ndWFnZShvcHRpb25zPzogVG9OYXR1cmFsTGFuZ3VhZ2VPcHRpb25zKTogUGx1Z2luPFwibWQudG9OYXR1cmFsTGFuZ3VhZ2VcIiwgVG9OYXR1cmFsTGFuZ3VhZ2VPcHRpb25zPiB7XG4gIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiB7IG5hbWU6IFwibWQudG9OYXR1cmFsTGFuZ3VhZ2VcIiB9XG4gIHJldHVybiB7IG5hbWU6IFwibWQudG9OYXR1cmFsTGFuZ3VhZ2VcIiwgb3B0aW9ucyB9XG59XG4iXX0=
|
|
118
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9nZW5lcmF0ZWQvbWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0VBQStFO0FBbWIvRSw2QkFBNkI7QUFDN0IsTUFBTSxVQUFVLEtBQUssQ0FBQyxPQUFzQjtJQUMxQyxJQUFJLE9BQU8sS0FBSyxTQUFTO1FBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsQ0FBQTtJQUN0RCxPQUFPLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsQ0FBQTtBQUN0QyxDQUFDO0FBRUQsaUNBQWlDO0FBQ2pDLE1BQU0sVUFBVSxTQUFTLENBQUMsT0FBMEI7SUFDbEQsSUFBSSxPQUFPLEtBQUssU0FBUztRQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLENBQUE7SUFDMUQsT0FBTyxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLENBQUE7QUFDMUMsQ0FBQztBQUVELDJCQUEyQjtBQUMzQixNQUFNLFVBQVUsR0FBRyxDQUFDLE9BQW9CO0lBQ3RDLElBQUksT0FBTyxLQUFLLFNBQVM7UUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFBO0lBQ3BELE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFBO0FBQ3BDLENBQUM7QUFFRCxzQ0FBc0M7QUFDdEMsTUFBTSxVQUFVLGNBQWM7SUFDNUIsT0FBTyxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxDQUFBO0FBQ3RDLENBQUM7QUFFRCw0QkFBNEI7QUFDNUIsTUFBTSxVQUFVLElBQUksQ0FBQyxPQUFxQjtJQUN4QyxJQUFJLE9BQU8sS0FBSyxTQUFTO1FBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQTtJQUNyRCxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsQ0FBQTtBQUNyQyxDQUFDO0FBRUQsMkJB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QUUsQ0FBQTtBQUN0QyxDQUFDO0FBRUQsMkJBQTJCO0FBQzNCLE1BQU0sVUFBVSxHQUFHLENBQUMsT0FBb0I7SUFDdEMsSUFBSSxPQUFPLEtBQUssU0FBUztRQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUE7SUFDcEQsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLENBQUE7QUFDcEMsQ0FBQztBQUVELGlDQUFpQztBQUNqQyxNQUFNLFVBQVUsU0FBUyxDQUFDLE9BQTBCO0lBQ2xELElBQUksT0FBTyxLQUFLLFNBQVM7UUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxDQUFBO0lBQzFELE9BQU8sRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLE9BQU8sRUFBRSxDQUFBO0FBQzFDLENBQUM7QUFFRCw4QkFBOEI7QUFDOUIsTUFBTSxVQUFVLE1BQU0sQ0FBQyxPQUF1QjtJQUM1QyxJQUFJLE9BQU8sS0FBSyxTQUFTO1FBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsQ0FBQTtJQUN2RCxPQUFPLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsQ0FBQTtBQUN2QyxDQUFDO0FBRUQseUNBQXlDO0FBQ3pDLE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxPQUFrQztJQUNsRSxJQUFJLE9BQU8sS0FBSyxTQUFTO1FBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxzQkFBc0IsRUFBRSxDQUFBO0lBQ2xFLE9BQU8sRUFBRSxJQUFJLEVBQUUsc0JBQXNCLEVBQUUsT0FBTyxFQUFFLENBQUE7QUFDbEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEdlbmVyYXRlZCBieSBgcG5wbSBnZW5lcmF0ZTpiaW5kaW5nc2AgZnJvbSB0aGUgY3JhdGUncyBwbHVnaW5zOyBkbyBub3QgZWRpdC5cblxuaW1wb3J0IHR5cGUgeyBSb290IH0gZnJvbSBcIm1kYXN0XCJcbmltcG9ydCB0eXBlIHsgUGFyc2VyLCBQbHVnaW4gfSBmcm9tIFwiLi4vbW9kZWxzL3BsdWdpbi50c1wiXG5cbi8qKiBgbWQucGFyc2VgOiBNYXJrZG93biBpbnRvIG1kYXN0LiAqL1xuZXhwb3J0IHR5cGUgUGFyc2VPcHRpb25zID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj5cblxuLyoqIGBtZC5kaXJlY3RpdmVgOiBnZW5lcmljIGRpcmVjdGl2ZXMsIGA6YWAsIGA6OmJgIGFuZCBgOjo6Y2AsIHJlYWQgYnkgYG1kLnBhcnNlYCBhbmQgd3JpdHRlbiBieSBgbWQuc3RyaW5naWZ5YDsgb3B0aW9ucyBuYW1lZCBhcyBtZGFzdC11dGlsLWRpcmVjdGl2ZSdzIHNlcmlhbGl6ZXIgbmFtZXMgdGhlbS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGlyZWN0aXZlT3B0aW9ucyB7XG4gIC8qKiBXcml0ZSBhbiBlbXB0eSBhdHRyaWJ1dGUgYXMgaXRzIG5hbWUgYWxvbmUsIGB7YX1gLCByYXRoZXIgdGhhbiBge2E9XCJcIn1gLiBAZGVmYXVsdCB0cnVlICovXG4gIGNvbGxhcHNlRW1wdHlBdHRyaWJ1dGVzPzogYm9vbGVhblxuICAvKiogV3JpdGUgYGlkYCBhbmQgYGNsYXNzYCBhcyBgI2FgIGFuZCBgLmJgIHdoZXJlIHRoZXkgY2FuIGJlLiBAZGVmYXVsdCB0cnVlICovXG4gIHByZWZlclNob3J0Y3V0PzogYm9vbGVhblxuICAvKiogTGVhdmUgYXR0cmlidXRlIHZhbHVlcyB1bnF1b3RlZCB3aGVyZSB0aGV5IGNhbiBiZS4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgcHJlZmVyVW5xdW90ZWQ/OiBib29sZWFuXG4gIC8qKiBUaGUgcXVvdGUgb2YgYXR0cmlidXRlIHZhbHVlczogYFwiYCBvciBgJ2A7IGBtZC5zdHJpbmdpZnlgJ3MgYHF1b3RlYCB3aGVuIHVuc2V0LiAqL1xuICBxdW90ZT86IHN0cmluZyB8IG51bGxcbiAgLyoqIFVzZSB0aGUgb3RoZXIgcXVvdGUgd2hlbiB0aGUgcHJlZmVycmVkIG9uZSBvY2N1cnMgbW9yZSBvZnRlbiBpbiBhIHZhbHVlLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBxdW90ZVNtYXJ0PzogYm9vbGVhblxufVxuXG4vKiogYG1kLmdmbWA6IEdpdEh1YiBGbGF2b3JlZCBNYXJrZG93bidzIHN5bnRheCwgcmVhZCBieSBgbWQucGFyc2VgIGFuZCB3cml0dGVuIGJ5IGBtZC5zdHJpbmdpZnlgOyBvcHRpb25zIG5hbWVkIGFzIHJlbWFyay1nZm0gbmFtZXMgdGhlbS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2ZtT3B0aW9ucyB7XG4gIC8qKiBMZXQgb25lIHRpbGRlLCBgfmF+YCwgZm9ybSBzdHJpa2V0aHJvdWdoLCBhcyB3ZWxsIGFzIHR3by4gQGRlZmF1bHQgdHJ1ZSAqL1xuICBzaW5nbGVUaWxkZT86IGJvb2xlYW5cbiAgLyoqIFBhZCB0YWJsZSBjZWxscyB3aXRoIGEgc3BhY2Ugb24gZWFjaCBzaWRlIHdoZW4gd3JpdGluZyBNYXJrZG93bi4gQGRlZmF1bHQgdHJ1ZSAqL1xuICB0YWJsZUNlbGxQYWRkaW5nPzogYm9vbGVhblxuICAvKiogTGluZSB1cCB0YWJsZSBwaXBlcyB3aGVuIHdyaXRpbmcgTWFya2Rvd24uIEBkZWZhdWx0IHRydWUgKi9cbiAgdGFibGVQaXBlQWxpZ24/OiBib29sZWFuXG4gIC8qKiBXcml0ZSBhIGZvb3Rub3RlIGRlZmluaXRpb24ncyBmaXJzdCBsaW5lIGJsYW5rIHdoZW4gaXQgaG9sZHMgZmxvdyBjb250ZW50LiBAZGVmYXVsdCBmYWxzZSAqL1xuICBmaXJzdExpbmVCbGFuaz86IGJvb2xlYW5cbiAgLyoqIFJlbmRlciBHaXRIdWIgYWxlcnRzLCBhIGJsb2NrIHF1b3RlIG9wZW5pbmcgd2l0aCBgWyFOT1RFXWAsIGFzIEdpdEh1YiBkb2VzLCBhcyByZW1hcmstZ2l0aHViLWJsb2NrcXVvdGUtYWxlcnQgZG9lczogYHRydWVgLCBvciBpdHMgb3B0aW9ucy4gKi9cbiAgYWxlcnRzPzogQWxlcnRzIHwgbnVsbFxufVxuXG4vKiogYG1kLmdmbWAncyBgYWxlcnRzYDogb24sIG9yIG9uIHdpdGggcmVtYXJrLWdpdGh1Yi1ibG9ja3F1b3RlLWFsZXJ0J3Mgb3B0aW9ucy4gKi9cbmV4cG9ydCB0eXBlIEFsZXJ0cyA9IGJvb2xlYW4gfCBBbGVydHNPcHRpb25zXG5cbi8qKiByZW1hcmstZ2l0aHViLWJsb2NrcXVvdGUtYWxlcnQncyBvcHRpb25zLiAqL1xuZXhwb3J0IGludGVyZmFjZSBBbGVydHNPcHRpb25zIHtcbiAgLyoqIFJlYWQgYSB0aXRsZSBhZnRlciB0aGUgdHlwZSwgYFshTk9URS9SZWFkIHRoaXNdYCwgaW4gcGxhY2Ugb2YgdGhlIHR5cGUncyBuYW1lLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBsZWdhY3lUaXRsZT86IGJvb2xlYW5cbiAgLyoqIFRoZSB0YWcgbmFtZSBvZiB0aGUgYWxlcnQncyBlbGVtZW50LiBAZGVmYXVsdCBcImRpdlwiICovXG4gIHRhZ05hbWU/OiBzdHJpbmdcbiAgLyoqIE1vcmUgY2xhc3NlcyBmb3IgdGhlIGFsZXJ0J3MgZWxlbWVudCwgc2VwYXJhdGVkIGJ5IHNwYWNlcy4gQGRlZmF1bHQgXCJcIiAqL1xuICBjbGFzc05hbWVzPzogc3RyaW5nXG59XG5cbi8qKiBgbWQubWF0aGA6IG1hdGggc3ludGF4LCBgJCRgIGJsb2NrcyBhbmQgYCRgIHRleHQsIHJlYWQgYnkgYG1kLnBhcnNlYCBhbmQgd3JpdHRlbiBieSBgbWQuc3RyaW5naWZ5YDsgb3B0aW9ucyBuYW1lZCBhcyByZW1hcmstbWF0aCBuYW1lcyB0aGVtLiAqL1xuZXhwb3J0IGludGVyZmFjZSBNYXRoT3B0aW9ucyB7XG4gIC8qKiBMZXQgb25lIGRvbGxhciwgYCRhJGAsIGZvcm0gbWF0aCBpbiB0ZXh0LCBhcyB3ZWxsIGFzIHR3by4gQGRlZmF1bHQgdHJ1ZSAqL1xuICBzaW5nbGVEb2xsYXJUZXh0TWF0aD86IGJvb2xlYW5cbn1cblxuLyoqIGBtZC5tZHhgOiBNRFggc3ludGF4LCBKU1gsIGV4cHJlc3Npb25zIGFuZCBFU00sIHJlYWQgYnkgYG1kLnBhcnNlYCBhbmQgd3JpdHRlbiBieSBgbWQuc3RyaW5naWZ5YDsgaXQgdHVybnMgb2ZmIGluZGVudGVkIGNvZGUsIGF1dG9saW5rcyBhbmQgcmF3IEhUTUw7IG9wdGlvbnMgbmFtZWQgYXMgcmVtYXJrLW1keCBhbmQgbWRhc3QtdXRpbC1tZHgtanN4J3Mgc2VyaWFsaXplciBuYW1lIHRoZW0uICovXG5leHBvcnQgaW50ZXJmYWNlIE1keE9wdGlvbnMge1xuICAvKiogVGhlIHF1b3RlIG9mIEpTWCBhdHRyaWJ1dGUgdmFsdWVzOiBgXCJgICh3aGVuIHVuc2V0KSBvciBgJ2AuICovXG4gIHF1b3RlPzogc3RyaW5nIHwgbnVsbFxuICAvKiogVXNlIHRoZSBvdGhlciBxdW90ZSB3aGVuIHRoZSBwcmVmZXJyZWQgb25lIG9jY3VycyBtb3JlIG9mdGVuIGluIGEgdmFsdWUuIEBkZWZhdWx0IGZhbHNlICovXG4gIHF1b3RlU21hcnQ/OiBib29sZWFuXG4gIC8qKiBXcml0ZSBzZWxmLWNsb3NpbmcgdGFncyB3aXRob3V0IGEgc3BhY2UgYmVmb3JlIHRoZSBzbGFzaCwgYDxhLz5gLiBAZGVmYXVsdCBmYWxzZSAqL1xuICB0aWdodFNlbGZDbG9zaW5nPzogYm9vbGVhblxuICAvKiogVGhlIHdpZHRoIHBhc3Qgd2hpY2ggYSBmbG93IGVsZW1lbnQncyBhdHRyaWJ1dGVzIGdvIG9uIGxpbmVzIG9mIHRoZWlyIG93bi4gKi9cbiAgcHJpbnRXaWR0aD86IG51bWJlciB8IG51bGxcbn1cblxuLyoqIFRoZSBraW5kcyBvZiBtYXR0ZXIgdG8gcmVjb2duaXplLCBhcyByZW1hcmstZnJvbnRtYXR0ZXIgdGFrZXMgdGhlbSAoYSBwcmVzZXQsIGEgbWF0dGVyLCBvciBhIGxpc3Qgb2YgdGhlbTsgYHlhbWxgIHdoZW4gdW5zZXQpLCBvciB0ZXh0bGFuZSdzIG9wdGlvbnMgb2JqZWN0LiAqL1xuZXhwb3J0IHR5cGUgRnJvbnRtYXR0ZXJPcHRpb25zID0gXCJ5YW1sXCIgfCBcInRvbWxcIiB8IE1hdHRlciB8IChcInlhbWxcIiB8IFwidG9tbFwiIHwgTWF0dGVyKVtdIHwgRnJvbnRtYXR0ZXJTZXR0aW5nc1xuXG4vKiogT25lIGtpbmQgb2YgZnJvbnRtYXR0ZXI6IHRoZSBub2RlIGB0eXBlYCBpdCBiZWNvbWVzIGFuZCBpdHMgZmVuY2VzLCBhIGBtYXJrZXJgIHJlcGVhdGVkIHRocmVlIHRpbWVzIG9yIGEgd2hvbGUgYGZlbmNlYC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWF0dGVyIHtcbiAgdHlwZTogc3RyaW5nXG4gIG1hcmtlcj86IEZlbmNlXG4gIGZlbmNlPzogRmVuY2VcbiAgYW55d2hlcmU/OiBib29sZWFuXG59XG5cbi8qKiBEaWZmZXJlbnQgb3BlbmluZyBhbmQgY2xvc2luZyBmZW5jZXMuICovXG5leHBvcnQgaW50ZXJmYWNlIEZlbmNlUGFpciB7XG4gIG9wZW46IHN0cmluZ1xuICBjbG9zZTogc3RyaW5nXG59XG5cbi8qKiBBIGZlbmNlLCBvciBpdHMgb3BlbmluZyBhbmQgY2xvc2luZyBvbmVzLiAqL1xuZXhwb3J0IHR5cGUgRmVuY2UgPSBzdHJpbmcgfCBGZW5jZVBhaXJcblxuLyoqIHRleHRsYW5lJ3Mgb3B0aW9uczogdGhlIG1hdHRlcnMsIGFuZCB3aGF0IHRvIGRvIHdpdGggWUFNTCBmcm9udG1hdHRlci4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRnJvbnRtYXR0ZXJTZXR0aW5ncyB7XG4gIC8qKiBUaGUga2luZHMgb2YgbWF0dGVyIHRvIHJlY29nbml6ZSwgYXMgcmVtYXJrLWZyb250bWF0dGVyIHRha2VzIHRoZW07IGB5YW1sYCB3aGVuIHVuc2V0LiAqL1xuICBtYXR0ZXJzPzogXCJ5YW1sXCIgfCBcInRvbWxcIiB8IE1hdHRlciB8IChcInlhbWxcIiB8IFwidG9tbFwiIHwgTWF0dGVyKVtdXG4gIC8qKiBQYXJzZSB0aGUgWUFNTCBmcm9udG1hdHRlciBhIGRvY3VtZW50IHN0YXJ0cyB3aXRoIGludG8gYGZpbGUuZGF0YS5tYXR0ZXJgLCBge31gIHdoZW4gdGhlcmUgaXMgbm9uZSwgYXMgdmZpbGUtbWF0dGVyIGRvZXMuICovXG4gIGRhdGE/OiBib29sZWFuXG4gIC8qKiBSZW1vdmUgdGhlIFlBTUwgZnJvbnRtYXR0ZXIgYSBkb2N1bWVudCBzdGFydHMgd2l0aCBmcm9tIHRoZSB0cmVlLiAqL1xuICBzdHJpcD86IGJvb2xlYW5cbn1cblxuLyoqIGBtZC5nZW1vamlgOiBnZW1vamkgc2hvcnRjb2RlcywgYDpzbWlsZTpgLCBpbnRvIGVtb2ppLCBhcyByZW1hcmstZ2Vtb2ppIGRvZXM7IGl0cyBvcHRpb25zIGFyZSByZW1hcmstZW1vamkncy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2Vtb2ppT3B0aW9ucyB7XG4gIC8qKiBBbHNvIHR1cm4gZW1vdGljb25zIHN1Y2ggYXMgYDopYCBhbmQgYDotKGAgaW50byBlbW9qaSwgYXMgcmVtYXJrLWVtb2ppIGRvZXMuIEBkZWZhdWx0IGZhbHNlICovXG4gIGVtb3RpY29uPzogYm9vbGVhblxuICAvKiogV3JhcCBlYWNoIGVtb2ppIGluIGA8c3BhbiByb2xlPVwiaW1nXCIgYXJpYS1sYWJlbD1cIuKAplwiPmAsIGxhYmVsbGVkIHdpdGggaXRzIG5hbWUuIEBkZWZhdWx0IGZhbHNlICovXG4gIGFjY2Vzc2libGU/OiBib29sZWFuXG4gIC8qKiBQdXQgYSBzcGFjZSBhZnRlciBlYWNoIGVtb2ppLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBwYWRTcGFjZUFmdGVyPzogYm9vbGVhblxufVxuXG4vKiogYG1kLnNtYXJ0eXBhbnRzYDogc3RyYWlnaHQgcXVvdGVzLCBkYXNoZXMsIGRvdHMgYW5kIGJhY2t0aWNrcyBpbiBNYXJrZG93biB0ZXh0IGludG8gdHlwb2dyYXBoaWMgb25lcywgYXMgcmVtYXJrLXNtYXJ0eXBhbnRzIGRvZXM7IG9wdGlvbnMgYXMgcmV0ZXh0LXNtYXJ0eXBhbnRzIHRha2VzIHRoZW0uICovXG5leHBvcnQgaW50ZXJmYWNlIFNtYXJ0eXBhbnRzT3B0aW9ucyB7XG4gIC8qKiBUdXJuIGRvdWJsZSBiYWNrdGlja3MgYW5kIGRvdWJsZSBzdHJhaWdodCBzaW5nbGUgcXVvdGVzIGludG8gZG91YmxlIHF1b3RlczsgYGFsbGAgdHVybnMgc2luZ2xlIG9uZXMgaW50byBzaW5nbGUgcXVvdGVzIHRvby4gKi9cbiAgYmFja3RpY2tzPzogQmFja3RpY2tzXG4gIC8qKiBUaGUgY2xvc2luZyBxdW90ZXMgdG8gdXNlOiBg4oCdYCBhbmQgYOKAmWAgYnkgZGVmYXVsdC4gKi9cbiAgY2xvc2luZ1F1b3Rlcz86IFF1b3RlQ2hhcmFjdGVycyB8IG51bGxcbiAgLyoqIFR1cm4gdHdvIGRhc2hlcyBpbnRvIGFuIGVtIGRhc2g7IGBvbGRzY2hvb2xgIGFuZCBgaW52ZXJ0ZWRgIHRyZWF0IHRocmVlIHRvby4gKi9cbiAgZGFzaGVzPzogRGFzaGVzXG4gIC8qKiBUdXJuIHRocmVlIGRvdHMgaW50byBhbiBlbGxpcHNpcywgd2l0aCBzcGFjZXMgYmV0d2VlbiB0aGVtIG9yIHdpdGhvdXQuICovXG4gIGVsbGlwc2VzPzogRWxsaXBzZXNcbiAgLyoqIFRoZSBvcGVuaW5nIHF1b3RlcyB0byB1c2U6IGDigJxgIGFuZCBg4oCYYCBieSBkZWZhdWx0LiAqL1xuICBvcGVuaW5nUXVvdGVzPzogUXVvdGVDaGFyYWN0ZXJzIHwgbnVsbFxuICAvKiogVHVybiBzdHJhaWdodCBxdW90ZXMgaW50byBzbWFydCBvbmVzLiBAZGVmYXVsdCB0cnVlICovXG4gIHF1b3Rlcz86IGJvb2xlYW4gfCBudWxsXG59XG5cbmV4cG9ydCB0eXBlIEJhY2t0aWNrcyA9IGJvb2xlYW4gfCBcImFsbFwiXG5cbi8qKiBUaGUgcXVvdGUgY2hhcmFjdGVycyB0byB1c2UgZm9yIGRvdWJsZSBhbmQgc2luZ2xlIHF1b3Rlcy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUXVvdGVDaGFyYWN0ZXJzIHtcbiAgZG91YmxlOiBzdHJpbmdcbiAgc2luZ2xlOiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgRGFzaGVzID0gYm9vbGVhbiB8IFwib2xkc2Nob29sXCIgfCBcImludmVydGVkXCJcblxuZXhwb3J0IHR5cGUgRWxsaXBzZXMgPSBib29sZWFuIHwgXCJzcGFjZWRcIiB8IFwidW5zcGFjZWRcIlxuXG4vKiogYG1kLmNvbXBvbmVudGA6IGRpcmVjdGl2ZXMsIEdpdEh1YiBhbGVydHMgYW5kIG90aGVyIG5vZGVzIGludG8gTURYIEpTWCBlbGVtZW50cywgdGhlIGNvbXBvbmVudHMgYW4gTURYIHJ1bnRpbWUgcmVuZGVycywgYnkgZGVjbGFyYXRpdmUgcnVsZXMuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudE9wdGlvbnMge1xuICAvKiogUnVsZXMgZm9yIGRpcmVjdGl2ZXM7IHRoZSBmaXJzdCB0aGF0IG1hdGNoZXMgYSBkaXJlY3RpdmUgY29udmVydHMgaXQuICovXG4gIGRpcmVjdGl2ZXM/OiBEaXJlY3RpdmVSdWxlW11cbiAgLyoqIEdpdEh1YiBhbGVydHMsIGA+IFshTk9URV1gLCBpbnRvIGEgY29tcG9uZW50LiAqL1xuICBhbGVydHM/OiBBbGVydFJ1bGUgfCBudWxsXG4gIC8qKiBOb2RlIHR5cGVzLCBzdWNoIGFzIGBkZWZMaXN0YCwgaW50byBjb21wb25lbnRzIGtlZXBpbmcgdGhlaXIgY2hpbGRyZW4uIEBkZWZhdWx0IHt9ICovXG4gIG5vZGVzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPlxuICAvKiogV2hhdCBiZWNvbWVzIG9mIGEgZGlyZWN0aXZlIG5vIHJ1bGUgY29udmVydHMuICovXG4gIHVua25vd25EaXJlY3RpdmVzPzogVW5rbm93bkRpcmVjdGl2ZXNcbiAgLyoqIFJ1bGVzIGZvciBmZW5jZWQgY29kZTsgdGhlIGZpcnN0IHRoYXQgbWF0Y2hlcyBhIGJsb2NrIGFwcGxpZXMuICovXG4gIGNvZGVzPzogQ29kZVJ1bGVbXVxufVxuXG4vKiogSG93IGBtZC5jb21wb25lbnRgIHR1cm5zIG1hdGNoaW5nIGRpcmVjdGl2ZXMgaW50byBvbmUgY29tcG9uZW50LiAqL1xuZXhwb3J0IGludGVyZmFjZSBEaXJlY3RpdmVSdWxlIHtcbiAgLyoqIFRoZSBkaXJlY3RpdmUncyBuYW1lLCBvciBzZXZlcmFsLiAqL1xuICBuYW1lOiBOYW1lc1xuICAvKiogVGhlIGtpbmQgb2YgZGlyZWN0aXZlOiBgdGV4dGAsIGBsZWFmYCBvciBgY29udGFpbmVyYDsgYW55IHdoZW4gbGVmdCBvdXQuICovXG4gIGtpbmQ/OiBEaXJlY3RpdmVLaW5kIHwgbnVsbFxuICAvKiogQXR0cmlidXRlIHZhbHVlcyB0aGUgZGlyZWN0aXZlIG11c3QgaGF2ZS4gQGRlZmF1bHQge30gKi9cbiAgd2hlcmU/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+XG4gIC8qKiBUaGUgY29tcG9uZW50OiBhIHRleHQgZWxlbWVudCBmb3IgYSB0ZXh0IGRpcmVjdGl2ZSwgZWxzZSBhIGZsb3cgZWxlbWVudC4gKi9cbiAgY29tcG9uZW50OiBzdHJpbmdcbiAgLyoqIFRoZSBhdHRyaWJ1dGUgdGhhdCBnZXRzIHRoZSBkaXJlY3RpdmUncyBuYW1lLiAqL1xuICBuYW1lQXM/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBUaGUgYXR0cmlidXRlIHRoYXQgZ2V0cyB0aGUgbGFiZWwncyB0ZXh0OiBhIGNvbnRhaW5lcidzIGxhYmVsIHBhcmFncmFwaCBvciBhIHRleHQgb3IgbGVhZiBkaXJlY3RpdmUncyBjb250ZW50LCB3aGljaCBpcyB0aGVuIGRyb3BwZWQuICovXG4gIGxhYmVsQXM/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBUaGUgbGFiZWwncyB0ZXh0IHdoZW4gdGhlcmUgaXMgbm9uZS4gKi9cbiAgbGFiZWxEZWZhdWx0Pzogc3RyaW5nIHwgbnVsbFxuICAvKiogVGhlIGF0dHJpYnV0ZXMgdG8ga2VlcCwgaW4gb3JkZXI7IGV2ZXJ5IG9uZSwgYXMgd3JpdHRlbiwgd2hlbiBsZWZ0IG91dC4gKi9cbiAgYXR0cmlidXRlcz86IEF0dHJpYnV0ZVJ1bGVbXSB8IG51bGxcbiAgLyoqIEF0dHJpYnV0ZXMgd2l0aG91dCB3aGljaCB0aGUgZGlyZWN0aXZlIGlzIGxlZnQgdG8gYHVua25vd25EaXJlY3RpdmVzYC4gQGRlZmF1bHQgW10gKi9cbiAgcmVxdWlyZWQ/OiBzdHJpbmdbXVxuICAvKiogV3JhcCBydW5zIG9mIGFkamFjZW50IHNpYmxpbmdzIHRoaXMgcnVsZSBjb252ZXJ0ZWQgaW4gYW5vdGhlciBjb21wb25lbnQuICovXG4gIGdyb3VwPzogR3JvdXBSdWxlIHwgbnVsbFxuICAvKiogVGhlIGF0dHJpYnV0ZSB0aGF0IGdldHMgdGhlIGxpc3RzIG9mIGEgY29udGFpbmVyIGRpcmVjdGl2ZSBhcyBhIGZpbGUgdHJlZSwgSlNPTiBpdGVtcyBge25hbWUsIHR5cGUsIGNvbW1lbnQ/LCBoaWdobGlnaHRlZD8sIGNoaWxkcmVuP31gOyB0aGUgbGlzdHMgbGVhdmUgaXRzIGNvbnRlbnQuICovXG4gIHRyZWVBcz86IHN0cmluZyB8IG51bGxcbn1cblxuLyoqIE9uZSBuYW1lIG9yIHNldmVyYWwuICovXG5leHBvcnQgdHlwZSBOYW1lcyA9IHN0cmluZyB8IHN0cmluZ1tdXG5cbi8qKiBBIGRpcmVjdGl2ZSdzIGtpbmQsIGJ5IGhvdyBtYW55IGNvbG9ucyBvcGVuIGl0LiAqL1xuZXhwb3J0IHR5cGUgRGlyZWN0aXZlS2luZCA9IFwidGV4dFwiIHwgXCJsZWFmXCIgfCBcImNvbnRhaW5lclwiXG5cbi8qKiBBbiBhdHRyaWJ1dGUgdG8ga2VlcDogaXRzIG5hbWUsIG9yIGl0cyBuYW1lIHdpdGggd2hhdCB0byBjYWxsIGl0IGFuZCBhIGRlZmF1bHQuICovXG5leHBvcnQgdHlwZSBBdHRyaWJ1dGVSdWxlID0gc3RyaW5nIHwgeyBuYW1lOiBzdHJpbmc7IHJlbmFtZT86IHN0cmluZyB8IG51bGw7IGRlZmF1bHQ/OiBzdHJpbmcgfCBudWxsIH1cblxuLyoqIFRoZSBjb21wb25lbnQgd3JhcHBpbmcgYSBydW4gb2YgYWRqYWNlbnQgc2libGluZ3Mgb25lIHJ1bGUgY29udmVydGVkLiAqL1xuZXhwb3J0IGludGVyZmFjZSBHcm91cFJ1bGUge1xuICAvKiogVGhlIHdyYXBwaW5nIGNvbXBvbmVudC4gKi9cbiAgY29tcG9uZW50OiBzdHJpbmdcbiAgLyoqIFRoZSBzaG9ydGVzdCBydW4gd3JhcHBlZDsgMiB3aGVuIGxlZnQgb3V0LiAqL1xuICBtaW4/OiBudW1iZXIgfCBudWxsXG4gIC8qKiBBdHRyaWJ1dGVzIHRoZSB3cmFwcGVyIGNvcGllcyBmcm9tIHRoZSBydW4ncyBmaXJzdCBlbGVtZW50LiBAZGVmYXVsdCBbXSAqL1xuICBpbmhlcml0Pzogc3RyaW5nW11cbn1cblxuLyoqIEhvdyBgbWQuY29tcG9uZW50YCB0dXJucyBHaXRIdWIgYWxlcnRzLCBhIGJsb2NrIHF1b3RlIG9wZW5pbmcgd2l0aCBgWyFUWVBFXWAsIGludG8gYSBjb21wb25lbnQuICovXG5leHBvcnQgaW50ZXJmYWNlIEFsZXJ0UnVsZSB7XG4gIC8qKiBUaGUgY29tcG9uZW50IGFuIGFsZXJ0IGJlY29tZXMuICovXG4gIGNvbXBvbmVudDogc3RyaW5nXG4gIC8qKiBUaGUgYXR0cmlidXRlIHRoYXQgZ2V0cyB0aGUgYWxlcnQncyB0eXBlLiAqL1xuICB0eXBlQXM6IHN0cmluZ1xuICAvKiogRWFjaCBhbGVydCB0eXBlLCBhcyB3cml0dGVuLCB0byB0aGUgdmFsdWUgb2YgYHR5cGVBc2A7IG90aGVyIHR5cGVzIHN0YXkgYmxvY2sgcXVvdGVzLiAqL1xuICB0eXBlczogUmVjb3JkPHN0cmluZywgc3RyaW5nPlxufVxuXG4vKiogV2hhdCBgbWQuY29tcG9uZW50YCBkb2VzIHdpdGggYSBkaXJlY3RpdmUgbm8gcnVsZSBjb252ZXJ0cy4gKi9cbmV4cG9ydCB0eXBlIFVua25vd25EaXJlY3RpdmVzID0gXCJrZWVwXCIgfCBcInNvdXJjZVwiXG5cbi8qKiBIb3cgYG1kLmNvbXBvbmVudGAgdHVybnMgbWF0Y2hpbmcgY29kZSBibG9ja3MgaW50byBhIGNvbXBvbmVudCwgb3IgZ3JvdXBzIHRoZW0uICovXG5leHBvcnQgaW50ZXJmYWNlIENvZGVSdWxlIHtcbiAgLyoqIFRoZSBibG9jaydzIGxhbmd1YWdlLCBvciBzZXZlcmFsOyBhbnkgd2hlbiBsZWZ0IG91dC4gKi9cbiAgbGFuZz86IE5hbWVzIHwgbnVsbFxuICAvKiogQSBga2V5PVwidmFsdWVcImAgdGhlIGJsb2NrJ3MgbWV0YSBtdXN0IGhvbGQuICovXG4gIG1ldGE/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBUaGUgY29tcG9uZW50IHRoZSBibG9jayBiZWNvbWVzOyBsZWZ0IG91dCwgdGhlIGJsb2NrIHN0YXlzIGNvZGUgYW5kIG9ubHkgZ3JvdXBzLiAqL1xuICBjb21wb25lbnQ/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBUaGUgYXR0cmlidXRlIHRoYXQgZ2V0cyB0aGUgY29kZTsgbGVmdCBvdXQsIHRoZSBjb2RlIGlzIHRoZSBjb21wb25lbnQncyB0ZXh0LiAqL1xuICB2YWx1ZUFzPzogc3RyaW5nIHwgbnVsbFxuICAvKiogTWV0YSBga2V5PVwidmFsdWVcImAgcGFpcnMgdG8ga2VlcCBhcyBhdHRyaWJ1dGVzLCBpbiBvcmRlci4gKi9cbiAgYXR0cmlidXRlcz86IEF0dHJpYnV0ZVJ1bGVbXVxuICAvKiogV3JhcCBydW5zIG9mIGFkamFjZW50IGJsb2NrcyB0aGlzIHJ1bGUgbWF0Y2hlZCBpbiBhbm90aGVyIGNvbXBvbmVudC4gKi9cbiAgZ3JvdXA/OiBDb2RlR3JvdXBSdWxlIHwgbnVsbFxufVxuXG4vKiogVGhlIGNvbXBvbmVudCB3cmFwcGluZyBhIHJ1biBvZiBhZGphY2VudCBjb2RlIGJsb2NrcyBvbmUgcnVsZSBtYXRjaGVkOyB0aGUgbWV0YSBrZXlzIGl0IHJlYWRzIGFyZSB0YWtlbiBvdXQgb2YgZWFjaCBibG9jaydzIG1ldGEuICovXG5leHBvcnQgaW50ZXJmYWNlIENvZGVHcm91cFJ1bGUge1xuICAvKiogVGhlIHdyYXBwaW5nIGNvbXBvbmVudC4gKi9cbiAgY29tcG9uZW50OiBzdHJpbmdcbiAgLyoqIFRoZSBzaG9ydGVzdCBydW4gd3JhcHBlZDsgMiB3aGVuIGxlZnQgb3V0LiAqL1xuICBtaW4/OiBudW1iZXIgfCBudWxsXG4gIC8qKiBUaGUgYXR0cmlidXRlIHRoYXQgZ2V0cyB0aGUgcnVuJ3MgdmFsdWVzIG9mIHRoZSBydWxlJ3MgYG1ldGFgIGtleSwgYXMgYSBKU09OIGxpc3QuICovXG4gIGNvbGxlY3Q/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBNZXRhIGtleXMgdGhlIHdyYXBwZXIgY29waWVzIGZyb20gdGhlIHJ1bidzIGZpcnN0IGJsb2NrIGFzIGF0dHJpYnV0ZXMuIEBkZWZhdWx0IFtdICovXG4gIGluaGVyaXQ/OiBzdHJpbmdbXVxufVxuXG4vKiogYG1kLnBhY2thZ2VDb21tYW5kYDogYSBmZW5jZWQgYmxvY2sgb2YgcGFja2FnZS1tYW5hZ2VyIGNvbW1hbmRzLCBpdHMgbGFuZ3VhZ2UgbmFtaW5nIHRoZSBlY29zeXN0ZW0gKGBucG1gLCBgcGlwYCwgYGNhcmdvYCksIGludG8gb25lIGNvbXBvbmVudCB3aXRoIHRoZSBjb21tYW5kcyBjb252ZXJ0ZWQgZm9yIGVhY2ggbWFuYWdlciwgYXMgYEBkb2N1c2F1cnVzL3JlbWFyay1wbHVnaW4tbnBtMnlhcm5gIGRvZXMgZm9yIG5wbS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFja2FnZUNvbW1hbmRPcHRpb25zIHtcbiAgLyoqIFRoZSBjb21wb25lbnQgYSBibG9jayBiZWNvbWVzOyBvbmUgc3RyaW5nIGF0dHJpYnV0ZSBwZXIgbWFuYWdlci4gQGRlZmF1bHQgXCJQYWNrYWdlVGFic1wiICovXG4gIGNvbXBvbmVudD86IHN0cmluZ1xuICAvKiogRWFjaCBlY29zeXN0ZW0ncyBtYW5hZ2VycywgaW4gYXR0cmlidXRlIG9yZGVyOyBhbiBlbXB0eSBsaXN0IGxlYXZlcyBpdHMgYmxvY2tzIGNvZGUuICovXG4gIGVjb3N5c3RlbXM/OiBFY29zeXN0ZW1zXG59XG5cbi8qKiBUaGUgbWFuYWdlcnMgYG1kLnBhY2thZ2VDb21tYW5kYCBjb252ZXJ0cyBlYWNoIGVjb3N5c3RlbSdzIGNvbW1hbmRzIGZvci4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRWNvc3lzdGVtcyB7XG4gIC8qKiBNYW5hZ2VycyBmb3IgYG5wbWAgYmxvY2tzLCBjb252ZXJ0ZWQgYXMgbnBtLXRvLXlhcm4gY29udmVydHM7IG5wbSwgcG5wbSwgeWFybiBhbmQgYnVuIGJ5IGRlZmF1bHQuICovXG4gIG5wbT86IE5wbU1hbmFnZXJbXVxuICAvKiogTWFuYWdlcnMgZm9yIGBwaXBgIGJsb2NrczsgcGlwLCB1diwgcG9ldHJ5IGFuZCBwZG0gYnkgZGVmYXVsdC4gKi9cbiAgcGlwPzogUGlwTWFuYWdlcltdXG4gIC8qKiBNYW5hZ2VycyBmb3IgYGNhcmdvYCBibG9ja3M7IGNhcmdvIGFuZCBjYXJnby1iaW5zdGFsbCBieSBkZWZhdWx0LiAqL1xuICBjYXJnbz86IENhcmdvTWFuYWdlcltdXG59XG5cbi8qKiBBIEphdmFTY3JpcHQgcGFja2FnZSBtYW5hZ2VyIGFuIGBucG1gIGNvbW1hbmQgY29udmVydHMgdG8uICovXG5leHBvcnQgdHlwZSBOcG1NYW5hZ2VyID0gXCJucG1cIiB8IFwicG5wbVwiIHwgXCJ5YXJuXCIgfCBcImJ1blwiIHwgXCJkZW5vXCIgfCBcIm51YlwiXG5cbi8qKiBBIFB5dGhvbiBwYWNrYWdlIG1hbmFnZXIgYSBgcGlwYCBjb21tYW5kIGNvbnZlcnRzIHRvLiAqL1xuZXhwb3J0IHR5cGUgUGlwTWFuYWdlciA9IFwicGlwXCIgfCBcInV2XCIgfCBcInBvZXRyeVwiIHwgXCJwZG1cIlxuXG4vKiogQSBSdXN0IGluc3RhbGxlciBhIGBjYXJnb2AgY29tbWFuZCBjb252ZXJ0cyB0by4gKi9cbmV4cG9ydCB0eXBlIENhcmdvTWFuYWdlciA9IFwiY2FyZ29cIiB8IFwiY2FyZ28tYmluc3RhbGxcIlxuXG4vKiogYG1kLmhlYWRpbmdJZGA6IGB7I2lkfWAgYXQgdGhlIGVuZCBvZiBhIGhlYWRpbmcsIGFmdGVyIGEgc3BhY2UsIGFzIGl0cyBpZCwgYXMgcmVtYXJrLWhlYWRpbmctaWQgcmVhZHMgaXQ7IGhlYWRpbmdzIHdpdGhvdXQgb25lIGtlZXAgbm9uZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSGVhZGluZ0lkT3B0aW9ucyB7XG4gIC8qKiBSZWFkIGEgd2hvbGUgYXR0cmlidXRlIGxpc3QsIGB7I2lkIC5jbGFzcyBrZXk9dmFsdWUga2V5PVwidiB3XCJ9YCwgYXMgZGlyZWN0aXZlcyB3cml0ZSB0aGVpcnM6IGNsYXNzZXMgYmVjb21lIGBjbGFzc05hbWVgIGFuZCBvdGhlciBrZXlzIHByb3BlcnRpZXMuIEBkZWZhdWx0IGZhbHNlICovXG4gIGF0dHJpYnV0ZXM/OiBib29sZWFuXG4gIC8qKiBMaXRlcmFsIHN1ZmZpeGVzLCBzdWNoIGFzIGBbc3RlcF1gLCBzdHJpcHBlZCBmcm9tIGEgaGVhZGluZydzIGVuZCBmb3IgdGhlIGF0dHJpYnV0ZXMgZWFjaCBuYW1lcywgYSB2YWx1ZSBvciBgdHJ1ZWAgZm9yIGEgYmFyZSBvbmU6IGB7XCJbc3RlcF1cIjoge1wiZGF0YS1zdGVwXCI6IHRydWV9fWAuICovXG4gIG1hcmtlcnM/OiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBNYXJrZXJWYWx1ZT4+XG59XG5cbi8qKiBBbiBhdHRyaWJ1dGUgYSBoZWFkaW5nIG1hcmtlciBzZXRzOiBpdHMgdmFsdWUsIG9yIGB0cnVlYCBmb3IgdGhlIGJhcmUgYXR0cmlidXRlLiAqL1xuZXhwb3J0IHR5cGUgTWFya2VyVmFsdWUgPSBib29sZWFuIHwgc3RyaW5nXG5cbi8qKiBgbWQucGF0aFJld3JpdGVgOiB0aGUgVVJMcyBvZiBpbWFnZXMsIGxpbmtzIGFuZCBkZWZpbml0aW9ucyBhcyBhIHNpdGUgc2VydmVzIHRoZW06IHJlbGF0aXZlIG9uZXMgcmVzb2x2ZWQgYWdhaW5zdCB0aGUgZmlsZSdzIHBhdGggYW5kIG1hZGUgcm9vdC1yZWxhdGl2ZSwgZXZlcnkgcm9vdC1yZWxhdGl2ZSBvbmUgdW5kZXIgYGJhc2VgLCBhbmQgbGlua3MgdG8gTWFya2Rvd24gZmlsZXMgdHVybmVkIGludG8gcGFnZSBVUkxzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYXRoUmV3cml0ZU9wdGlvbnMge1xuICAvKiogVGhlIGRpcmVjdG9yeSBVUkxzIGNvdW50IGZyb20sIGFzIHRoZSBmaWxlJ3MgcGF0aCBzcGVsbHMgaXQ7IHRoZSBwYXRoJ3Mgb3duIHN0YXJ0aW5nIHBvaW50IHdoZW4gbGVmdCBvdXQuICovXG4gIHJvb3Q/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBUaGUgVVJMIHRoZSBzaXRlIGlzIHNlcnZlZCBhdCwgc3VjaCBhcyBgL2RvY3NgLCBwdXQgYmVmb3JlIGV2ZXJ5IHJvb3QtcmVsYXRpdmUgVVJMIG9uY2UuICovXG4gIGJhc2U/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBUaGUgbm9kZXMgd2hvc2UgVVJMcyBhcmUgcmV3cml0dGVuOyBpbWFnZXMsIGxpbmtzIGFuZCBkZWZpbml0aW9ucyB3aGVuIGxlZnQgb3V0LiAqL1xuICBub2Rlcz86IFVybE5vZGVbXSB8IG51bGxcbiAgLyoqIE1hcmtkb3duIGZpbGVzLCByZWxhdGl2ZSB0byBgcm9vdGAsIHRvIHRoZSBVUkwgb2YgdGhlaXIgcGFnZTsgYSBsaW5rIHRvIG9uZSBvZiB0aGVtIHRha2VzIGl0LCBiZWZvcmUgYG1hcmtkb3duTGlua3NgIGFwcGxpZXMuIEBkZWZhdWx0IHt9ICovXG4gIHBhZ2VzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPlxuICAvKiogSG93IGEgbGluayB0byBhIE1hcmtkb3duIGZpbGUgbm8gcGFnZSBuYW1lcyBiZWNvbWVzIGEgVVJMLiAqL1xuICBtYXJrZG93bkxpbmtzPzogTWFya2Rvd25MaW5rc1xufVxuXG4vKiogQSBub2RlIHdpdGggYSBVUkwuICovXG5leHBvcnQgdHlwZSBVcmxOb2RlID0gXCJpbWFnZVwiIHwgXCJsaW5rXCIgfCBcImRlZmluaXRpb25cIlxuXG4vKiogSG93IGEgbGluayB0byBhIE1hcmtkb3duIGZpbGUgYmVjb21lcyBhIFVSTC4gKi9cbmV4cG9ydCB0eXBlIE1hcmtkb3duTGlua3MgPSBcImtlZXBcIiB8IFwiZGlyZWN0b3J5XCIgfCBcImh0bWxcIlxuXG4vKiogYG1kLnNoaWZ0SGVhZGluZ2A6IGV2ZXJ5IGhlYWRpbmcncyBkZXB0aCBtb3ZlZCBieSBgc2hpZnRgIGFuZCBrZXB0IHdpdGhpbiAxIHRvIDYsIGFzIHJlaHlwZS1zaGlmdC1oZWFkaW5nIG1vdmVzIGhhc3QncywgYWZ0ZXIgdGhlIGRvY3VtZW50J3MgdGl0bGUgaXMgZHJvcHBlZCB3aGVuIGFza2VkLiAqL1xuZXhwb3J0IGludGVyZmFjZSBTaGlmdEhlYWRpbmdPcHRpb25zIHtcbiAgLyoqIFRoZSBsZXZlbHMgYWRkZWQgdG8gZWFjaCBoZWFkaW5nJ3MgZGVwdGg6IGAtMWAgbWFrZXMgYW4gaDIgYW4gaDEsIGAxYCBhbiBoMSBhbiBoMi4gQGRlZmF1bHQgMCAqL1xuICBzaGlmdD86IG51bWJlclxuICAvKiogRHJvcCB0aGUgZG9jdW1lbnQncyBmaXJzdCBub2RlIHdoZW4gaXQgaXMgYW4gaDEsIGxvb2tpbmcgcGFzdCBmcm9udG1hdHRlciBhbmQgRVNNLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBkcm9wVGl0bGU/OiBib29sZWFuXG59XG5cbi8qKiBgbWQuc3RyaXBgOiBtZGFzdCBkb3duIHRvIGl0cyB0ZXh0LCBhcyBzdHJpcC1tYXJrZG93biBkb2VzOiBjb2RlLCBIVE1MLCB0YWJsZXMgYW5kIHRoZSBsaWtlIGRyb3BwZWQsIGhlYWRpbmdzIG1hZGUgcGFyYWdyYXBocywgZm9ybWF0dGluZyB1bndyYXBwZWQuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0cmlwT3B0aW9ucyB7XG4gIC8qKiBOb2RlIHR5cGVzIHRvIGxlYXZlIGFzIHRoZXkgYXJlLCBzdWNoIGFzIGBpbmxpbmVDb2RlYC4gQGRlZmF1bHQgW10gKi9cbiAga2VlcD86IHN0cmluZ1tdXG4gIC8qKiBOb2RlIHR5cGVzIHRvIGRyb3AsIGJlc2lkZXMgdGhvc2Ugc3RyaXAtbWFya2Rvd24gZHJvcHMuIEBkZWZhdWx0IFtdICovXG4gIHJlbW92ZT86IHN0cmluZ1tdXG59XG5cbi8qKiBgbWQudG9jYDogYSB0YWJsZSBvZiBjb250ZW50cyB1bmRlciB0aGUgZmlyc3QgaGVhZGluZyBtYXRjaGluZyBgaGVhZGluZ2AsIHJlcGxhY2luZyB3aGF0IHNhdCBiZXR3ZWVuIGl0IGFuZCB0aGUgbmV4dCBoZWFkaW5nIGFzIGRlZXAgb3Igc2hhbGxvd2VyLCBhcyByZW1hcmstdG9jIG1ha2VzIGl0LiAqL1xuZXhwb3J0IGludGVyZmFjZSBUb2NPcHRpb25zIHtcbiAgLyoqIFRoZSBoZWFkaW5nIHRvIHB1dCB0aGUgdGFibGUgdW5kZXIsIGFzIEphdmFTY3JpcHQgcmVndWxhciBleHByZXNzaW9uIHNvdXJjZSBtYXRjaGVkIGFnYWluc3QgaXRzIHdob2xlIHRleHQsIGNhc2UtaW5zZW5zaXRpdmVseTsgYCh0YWJsZVsgLV1vZlsgLV0pP2NvbnRlbnRzP3x0b2NgIHdoZW4gdW5zZXQuICovXG4gIGhlYWRpbmc/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBUaGUgZGVlcGVzdCBoZWFkaW5nIHJhbmsgdG8gbGlzdCwgMSB0byA2LiAqL1xuICBtYXhEZXB0aD86IG51bWJlciB8IG51bGxcbiAgLyoqIFRoZSBzaGFsbG93ZXN0IGhlYWRpbmcgcmFuayB0byBsaXN0LCAxIHRvIDYuICovXG4gIG1pbkRlcHRoPzogbnVtYmVyIHwgbnVsbFxuICAvKiogSGVhZGluZ3MgdG8gbGVhdmUgb3V0LCBhcyBKYXZhU2NyaXB0IHJlZ3VsYXIgZXhwcmVzc2lvbiBzb3VyY2UgbWF0Y2hlZCBhZ2FpbnN0IHRoZWlyIHdob2xlIHRleHQsIGNhc2UtaW5zZW5zaXRpdmVseS4gKi9cbiAgc2tpcD86IHN0cmluZyB8IG51bGxcbiAgLyoqIEtlZXAgdGhlIGxpc3QgY29tcGFjdCwgd2l0aG91dCBibGFuayBsaW5lcyBiZXR3ZWVuIGl0ZW1zOyBgdHJ1ZWAgd2hlbiB1bnNldC4gKi9cbiAgdGlnaHQ/OiBib29sZWFuIHwgbnVsbFxuICAvKiogTnVtYmVyIHRoZSBsaXN0IGluc3RlYWQgb2YgYnVsbGV0aW5nIGl0LiAqL1xuICBvcmRlcmVkPzogYm9vbGVhbiB8IG51bGxcbiAgLyoqIFdoYXQgZWFjaCBsaW5rJ3MgZnJhZ21lbnQgc3RhcnRzIHdpdGgsIHN1Y2ggYXMgYHVzZXItY29udGVudC1gLiAqL1xuICBwcmVmaXg/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBUaGUgcGFyZW50cyB3aG9zZSBoZWFkaW5ncyBhcmUgbGlzdGVkLCBhcyBhIHVuaXN0LXV0aWwtaXMgdGVzdDogYSBub2RlIHR5cGUsIGFuIG9iamVjdCBvZiBmaWVsZHMgYSBwYXJlbnQgbXVzdCBlcXVhbCwgb3IgYSBsaXN0IG9mIHRoZXNlOyBvbmx5IHRoZSByb290IHdoZW4gdW5zZXQuICovXG4gIHBhcmVudHM/OiBQYXJlbnRUZXN0IHwgbnVsbFxufVxuXG4vKiogQSB1bmlzdC11dGlsLWlzIHRlc3Qgb2YgYSBub2RlLCB3cml0dGVuIGFzIEpTT046IG9uZSBjaGVjaywgb3IgYSBsaXN0IGFueSBvZiB3aGljaCBwYXNzZXMuICovXG5leHBvcnQgdHlwZSBQYXJlbnRUZXN0ID0gUGFyZW50Q2hlY2sgfCBQYXJlbnRDaGVja1tdXG5cbi8qKiBPbmUgdW5pc3QtdXRpbC1pcyBjaGVjazogYSBub2RlIHR5cGUsIG9yIGZpZWxkcyBhIG5vZGUgbXVzdCBlcXVhbC4gKi9cbmV4cG9ydCB0eXBlIFBhcmVudENoZWNrID0gc3RyaW5nIHwgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cblxuLyoqIGBtZC5zdHJpbmdpZnlgOiBtZGFzdCBpbnRvIE1hcmtkb3duOyBvcHRpb25zIG5hbWVkIGFzIG1kYXN0LXV0aWwtdG8tbWFya2Rvd24gbmFtZXMgdGhlbS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RyaW5naWZ5T3B0aW9ucyB7XG4gIC8qKiBUaGUgbWFya2VyIG9mIHVub3JkZXJlZCBsaXN0IGl0ZW1zOiBgKmAsIGArYCBvciBgLWAuICovXG4gIGJ1bGxldD86IHN0cmluZyB8IG51bGxcbiAgLyoqIFRoZSBtYXJrZXIgb2Ygb3JkZXJlZCBsaXN0IGl0ZW1zOiBgLmAgb3IgYClgLiAqL1xuICBidWxsZXRPcmRlcmVkPzogc3RyaW5nIHwgbnVsbFxuICAvKiogVGhlIG1hcmtlciBvZiBhIGxpc3QgcmlnaHQgYWZ0ZXIgYSBsaXN0IHdpdGggYGJ1bGxldGAuICovXG4gIGJ1bGxldE90aGVyPzogc3RyaW5nIHwgbnVsbFxuICAvKiogQ2xvc2UgQVRYIGhlYWRpbmdzIHdpdGggYXMgbWFueSBgI2AgYXMgdGhleSBvcGVuIHdpdGguIEBkZWZhdWx0IGZhbHNlICovXG4gIGNsb3NlQXR4PzogYm9vbGVhblxuICAvKiogVGhlIG1hcmtlciBvZiBlbXBoYXNpczogYCpgIG9yIGBfYC4gKi9cbiAgZW1waGFzaXM/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBUaGUgbWFya2VyIG9mIGZlbmNlZCBjb2RlOiBgYCBgIGBgIG9yIGB+YC4gKi9cbiAgZmVuY2U/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBGZW5jZSBjb2RlOyBgZmFsc2VgIGluZGVudHMgaXQgd2hlcmUgaXQgY2FuLiBAZGVmYXVsdCB0cnVlICovXG4gIGZlbmNlcz86IGJvb2xlYW5cbiAgLyoqIE51bWJlciBvcmRlcmVkIGxpc3QgaXRlbXMgdXAgZnJvbSBgc3RhcnRgLiBAZGVmYXVsdCB0cnVlICovXG4gIGluY3JlbWVudExpc3RNYXJrZXI/OiBib29sZWFuXG4gIC8qKiBIb3cgbGlzdCBpdGVtIGNvbnRlbnQgaXMgaW5kZW50ZWQ6IGBvbmVgLCBgdGFiYCBvciBgbWl4ZWRgLiAqL1xuICBsaXN0SXRlbUluZGVudD86IHN0cmluZyB8IG51bGxcbiAgLyoqIFRoZSBtYXJrZXIgb2YgdGl0bGVzOiBgXCJgIG9yIGAnYC4gKi9cbiAgcXVvdGU/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBXcml0ZSBsaW5rcyBhcyByZXNvdXJjZXMgZXZlbiB3aGVyZSBhbiBhdXRvbGluayB3b3VsZCBkby4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgcmVzb3VyY2VMaW5rPzogYm9vbGVhblxuICAvKiogVGhlIG1hcmtlciBvZiB0aGVtYXRpYyBicmVha3M6IGAqYCwgYC1gIG9yIGBfYC4gKi9cbiAgcnVsZT86IHN0cmluZyB8IG51bGxcbiAgLyoqIEhvdyBtYW55IG1hcmtlcnMgYSB0aGVtYXRpYyBicmVhayBoYXMsIDMgb3IgbW9yZS4gKi9cbiAgcnVsZVJlcGV0aXRpb24/OiBudW1iZXIgfCBudWxsXG4gIC8qKiBQdXQgc3BhY2VzIGJldHdlZW4gdGhlIG1hcmtlcnMgb2YgYSB0aGVtYXRpYyBicmVhay4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgcnVsZVNwYWNlcz86IGJvb2xlYW5cbiAgLyoqIFdyaXRlIGhlYWRpbmdzIG9mIHJhbmsgMSBhbmQgMiBhcyBzZXRleHQgaGVhZGluZ3MuIEBkZWZhdWx0IGZhbHNlICovXG4gIHNldGV4dD86IGJvb2xlYW5cbiAgLyoqIFRoZSBtYXJrZXIgb2Ygc3Ryb25nOiBgKmAgb3IgYF9gLiAqL1xuICBzdHJvbmc/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBKb2luIGRlZmluaXRpb25zIHdpdGggbm8gYmxhbmsgbGluZSBiZXR3ZWVuIHRoZW0uIEBkZWZhdWx0IGZhbHNlICovXG4gIHRpZ2h0RGVmaW5pdGlvbnM/OiBib29sZWFuXG4gIC8qKiBFeHRyYSBwYXR0ZXJucyBvZiBjaGFyYWN0ZXJzIHRvIGVzY2FwZS4gKi9cbiAgdW5zYWZlPzogVW5zYWZlUGF0dGVybltdXG59XG5cbi8qKiBBIGNoYXJhY3RlciB0byBlc2NhcGUgd2hlcmUgaXQgd291bGQgb3RoZXJ3aXNlIHN0YXJ0IG9yIGVuZCBzeW50YXguICovXG5leHBvcnQgaW50ZXJmYWNlIFVuc2FmZVBhdHRlcm4ge1xuICAvKiogVGhlIGNoYXJhY3RlciwgZXNjYXBlZCBhcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbiB3b3VsZCBuZWVkIGl0LiBAZGVmYXVsdCBcIlwiICovXG4gIGNoYXJhY3Rlcj86IHN0cmluZ1xuICAvKiogQSByZWd1bGFyIGV4cHJlc3Npb24gdGhhdCBtdXN0IG1hdGNoIHJpZ2h0IGJlZm9yZSB0aGUgY2hhcmFjdGVyLiAqL1xuICBiZWZvcmU/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBBIHJlZ3VsYXIgZXhwcmVzc2lvbiB0aGF0IG11c3QgbWF0Y2ggcmlnaHQgYWZ0ZXIgdGhlIGNoYXJhY3Rlci4gKi9cbiAgYWZ0ZXI/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBPbmx5IGF0IHRoZSBzdGFydCBvZiBhIGxpbmUsIGFmdGVyIGFueSBpbmRlbnQuIEBkZWZhdWx0IGZhbHNlICovXG4gIGF0QnJlYWs/OiBib29sZWFuXG4gIC8qKiBPbmx5IGluc2lkZSBvbmUgb2YgdGhlc2UgY29uc3RydWN0cy4gKi9cbiAgaW5Db25zdHJ1Y3Q/OiBOYW1lcyB8IG51bGxcbiAgLyoqIE5ldmVyIGluc2lkZSBvbmUgb2YgdGhlc2UgY29uc3RydWN0cy4gKi9cbiAgbm90SW5Db25zdHJ1Y3Q/OiBOYW1lcyB8IG51bGxcbiAgLyoqIE9ubHkgYXQgdGhlIHN0YXJ0IG9mIGEgbm9kZSByaWdodCBhZnRlciBvbmUgb2YgdGhlc2Ugbm9kZSB0eXBlcy4gKi9cbiAgYmVmb3JlTm9kZT86IE5hbWVzIHwgbnVsbFxuICAvKiogT25seSBhdCB0aGUgZW5kIG9mIGEgbm9kZSByaWdodCBiZWZvcmUgb25lIG9mIHRoZXNlIG5vZGUgdHlwZXMuICovXG4gIGFmdGVyTm9kZT86IE5hbWVzIHwgbnVsbFxuICAvKiogUmVhZCBgYmVmb3JlYCBhbmQgYGFmdGVyYCB3aXRoIFVuaWNvZGUgY2xhc3NlcyBzdWNoIGFzIGBcXHB7TH1gLiBAZGVmYXVsdCBmYWxzZSAqL1xuICB1bmljb2RlPzogYm9vbGVhblxufVxuXG4vKiogYG1kLnRvSHRtbGA6IG1kYXN0IGludG8gaGFzdDsgb3B0aW9ucyBuYW1lZCBhcyByZW1hcmstcmVoeXBlIG5hbWVzIHRoZW0uICovXG5leHBvcnQgaW50ZXJmYWNlIFRvSHRtbE9wdGlvbnMge1xuICAvKiogS2VlcCByYXcgSFRNTCBpbiB0aGUgdHJlZSBpbnN0ZWFkIG9mIGRyb3BwaW5nIGl0LiBAZGVmYXVsdCBmYWxzZSAqL1xuICBhbGxvd0Rhbmdlcm91c0h0bWw/OiBib29sZWFuXG4gIC8qKiBUdXJuIGVhY2ggbGluZSBlbmRpbmcgaW4gdGV4dCBpbnRvIGEgYDxicj5gLCBhcyByZW1hcmstYnJlYWtzIGRvZXMuIEBkZWZhdWx0IGZhbHNlICovXG4gIGJyZWFrcz86IGJvb2xlYW5cbiAgLyoqIFdoYXQgZm9vdG5vdGUgYGlkYHMgc3RhcnQgd2l0aCwgc28gdGhleSBjYW5ub3QgY2xvYmJlciB0aGUgcGFnZSdzOyBgdXNlci1jb250ZW50LWAgd2hlbiB1bnNldC4gKi9cbiAgY2xvYmJlclByZWZpeD86IHN0cmluZyB8IG51bGxcbiAgLyoqIFRoZSB0ZXh0IG9mIGVhY2ggZm9vdG5vdGUncyBiYWNrIHJlZmVyZW5jZTsgYOKGqWAsIG51bWJlcmVkIGZyb20gdGhlIHNlY29uZCwgd2hlbiB1bnNldC4gKi9cbiAgZm9vdG5vdGVCYWNrQ29udGVudD86IHN0cmluZyB8IG51bGxcbiAgLyoqIFRoZSBgYXJpYS1sYWJlbGAgb2YgZWFjaCBmb290bm90ZSdzIGJhY2sgcmVmZXJlbmNlOyBgQmFjayB0byByZWZlcmVuY2UgMWAgYW5kIHNvIG9uIHdoZW4gdW5zZXQuICovXG4gIGZvb3Rub3RlQmFja0xhYmVsPzogc3RyaW5nIHwgbnVsbFxuICAvKiogVGhlIGhlYWRpbmcgb2YgdGhlIGZvb3Rub3RlcyBzZWN0aW9uOyBgRm9vdG5vdGVzYCB3aGVuIHVuc2V0LiAqL1xuICBmb290bm90ZUxhYmVsPzogc3RyaW5nIHwgbnVsbFxuICAvKiogVGhlIHRhZyBuYW1lIG9mIHRoZSBmb290bm90ZXMgc2VjdGlvbidzIGhlYWRpbmc7IGBoMmAgd2hlbiB1bnNldC4gKi9cbiAgZm9vdG5vdGVMYWJlbFRhZ05hbWU/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBOb2RlIHR5cGVzIHdpdGhvdXQgYSBoYW5kbGVyIHRvIGNvcHkgaW50byBoYXN0IGFzIHRoZXkgYXJlLCB0aGVpciBjaGlsZHJlbiBjb252ZXJ0ZWQuIEBkZWZhdWx0IFtdICovXG4gIHBhc3NUaHJvdWdoPzogc3RyaW5nW11cbiAgLyoqIEFuIGBhcmlhLWxhYmVsYCBmb3IgZWFjaCB0YXNrLWxpc3QgY2hlY2tib3gsIHNvIHNjcmVlbiByZWFkZXJzIG5hbWUgaXQ7IG5vbmUgd2hlbiBsZWZ0IG91dCwgYXMgcmVtYXJrLXJlaHlwZSB3cml0ZXMgbm9uZS4gKi9cbiAgdGFza0xpc3RMYWJlbHM/OiBUYXNrTGlzdExhYmVscyB8IG51bGxcbn1cblxuLyoqIFRoZSBsYWJlbHMgb2YgdGFzay1saXN0IGNoZWNrYm94ZXMuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhc2tMaXN0TGFiZWxzIHtcbiAgLyoqIFRoZSBsYWJlbCBvZiBhIGNoZWNrZWQgYm94LCBzdWNoIGFzIGBDb21wbGV0ZWQgdGFza2AuICovXG4gIGNoZWNrZWQ6IHN0cmluZ1xuICAvKiogVGhlIGxhYmVsIG9mIGFuIHVuY2hlY2tlZCBib3gsIHN1Y2ggYXMgYFRhc2tgLiAqL1xuICB1bmNoZWNrZWQ6IHN0cmluZ1xufVxuXG4vKiogYG1kLnRvTmF0dXJhbExhbmd1YWdlYDogbWRhc3QgaW50byBubGNzdCwgdG9rZW5pemVkIGJ5IHRoZSBwcm9jZXNzb3IncyBuYXR1cmFsLWxhbmd1YWdlIHBhcnNlcjsgb3B0aW9ucyBuYW1lZCBhcyByZW1hcmstcmV0ZXh0IGFuZCBtZGFzdC11dGlsLXRvLW5sY3N0IG5hbWUgdGhlbS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVG9OYXR1cmFsTGFuZ3VhZ2VPcHRpb25zIHtcbiAgLyoqIE5vZGUgdHlwZXMgdG8gbGVhdmUgb3V0LCBiZXNpZGVzIGB0YWJsZWAsIGB0YWJsZVJvd2AgYW5kIGB0YWJsZUNlbGxgLiBAZGVmYXVsdCBbXSAqL1xuICBpZ25vcmU/OiBzdHJpbmdbXVxuICAvKiogTm9kZSB0eXBlcyB0byBrZWVwIGFzIG9uZSBgU291cmNlTm9kZWAgb2YgdGhlaXIgc291cmNlIHRleHQsIGJlc2lkZXMgYGlubGluZUNvZGVgLiBAZGVmYXVsdCBbXSAqL1xuICBzb3VyY2U/OiBzdHJpbmdbXVxufVxuXG4vKiogVGhlIGBtZC5wYXJzZWAgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlKG9wdGlvbnM/OiBQYXJzZU9wdGlvbnMpOiBQbHVnaW48XCJtZC5wYXJzZVwiLCBQYXJzZU9wdGlvbnM+ICYgUGFyc2VyPFJvb3Q+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJtZC5wYXJzZVwiIH1cbiAgcmV0dXJuIHsgbmFtZTogXCJtZC5wYXJzZVwiLCBvcHRpb25zIH1cbn1cblxuLyoqIFRoZSBgbWQuZGlyZWN0aXZlYCBwbHVnaW4uICovXG5leHBvcnQgZnVuY3Rpb24gZGlyZWN0aXZlKG9wdGlvbnM/OiBEaXJlY3RpdmVPcHRpb25zKTogUGx1Z2luPFwibWQuZGlyZWN0aXZlXCIsIERpcmVjdGl2ZU9wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJtZC5kaXJlY3RpdmVcIiB9XG4gIHJldHVybiB7IG5hbWU6IFwibWQuZGlyZWN0aXZlXCIsIG9wdGlvbnMgfVxufVxuXG4vKiogVGhlIGBtZC5nZm1gIHBsdWdpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZm0ob3B0aW9ucz86IEdmbU9wdGlvbnMpOiBQbHVnaW48XCJtZC5nZm1cIiwgR2ZtT3B0aW9ucz4ge1xuICBpZiAob3B0aW9ucyA9PT0gdW5kZWZpbmVkKSByZXR1cm4geyBuYW1lOiBcIm1kLmdmbVwiIH1cbiAgcmV0dXJuIHsgbmFtZTogXCJtZC5nZm1cIiwgb3B0aW9ucyB9XG59XG5cbi8qKiBUaGUgYG1kLmRlZmluaXRpb25MaXN0YCBwbHVnaW4uICovXG5leHBvcnQgZnVuY3Rpb24gZGVmaW5pdGlvbkxpc3QoKTogUGx1Z2luPFwibWQuZGVmaW5pdGlvbkxpc3RcIj4ge1xuICByZXR1cm4geyBuYW1lOiBcIm1kLmRlZmluaXRpb25MaXN0XCIgfVxufVxuXG4vKiogVGhlIGBtZC5tYXRoYCBwbHVnaW4uICovXG5leHBvcnQgZnVuY3Rpb24gbWF0aChvcHRpb25zPzogTWF0aE9wdGlvbnMpOiBQbHVnaW48XCJtZC5tYXRoXCIsIE1hdGhPcHRpb25zPiB7XG4gIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiB7IG5hbWU6IFwibWQubWF0aFwiIH1cbiAgcmV0dXJuIHsgbmFtZTogXCJtZC5tYXRoXCIsIG9wdGlvbnMgfVxufVxuXG4vKiogVGhlIGBtZC5tZHhgIHBsdWdpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZHgob3B0aW9ucz86IE1keE9wdGlvbnMpOiBQbHVnaW48XCJtZC5tZHhcIiwgTWR4T3B0aW9ucz4ge1xuICBpZiAob3B0aW9ucyA9PT0gdW5kZWZpbmVkKSByZXR1cm4geyBuYW1lOiBcIm1kLm1keFwiIH1cbiAgcmV0dXJuIHsgbmFtZTogXCJtZC5tZHhcIiwgb3B0aW9ucyB9XG59XG5cbi8qKiBUaGUgYG1kLmZyb250bWF0dGVyYCBwbHVnaW4uICovXG5leHBvcnQgZnVuY3Rpb24gZnJvbnRtYXR0ZXIob3B0aW9ucz86IEZyb250bWF0dGVyT3B0aW9ucyk6IFBsdWdpbjxcIm1kLmZyb250bWF0dGVyXCIsIEZyb250bWF0dGVyT3B0aW9ucz4ge1xuICBpZiAob3B0aW9ucyA9PT0gdW5kZWZpbmVkKSByZXR1cm4geyBuYW1lOiBcIm1kLmZyb250bWF0dGVyXCIgfVxuICByZXR1cm4geyBuYW1lOiBcIm1kLmZyb250bWF0dGVyXCIsIG9wdGlvbnMgfVxufVxuXG4vKiogVGhlIGBtZC5jamtGcmllbmRseWAgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNqa0ZyaWVuZGx5KCk6IFBsdWdpbjxcIm1kLmNqa0ZyaWVuZGx5XCI+IHtcbiAgcmV0dXJuIHsgbmFtZTogXCJtZC5jamtGcmllbmRseVwiIH1cbn1cblxuLyoqIFRoZSBgbWQuZ2Vtb2ppYCBwbHVnaW4uICovXG5leHBvcnQgZnVuY3Rpb24gZ2Vtb2ppKG9wdGlvbnM/OiBHZW1vamlPcHRpb25zKTogUGx1Z2luPFwibWQuZ2Vtb2ppXCIsIEdlbW9qaU9wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJtZC5nZW1vamlcIiB9XG4gIHJldHVybiB7IG5hbWU6IFwibWQuZ2Vtb2ppXCIsIG9wdGlvbnMgfVxufVxuXG4vKiogVGhlIGBtZC5zbWFydHlwYW50c2AgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNtYXJ0eXBhbnRzKG9wdGlvbnM/OiBTbWFydHlwYW50c09wdGlvbnMpOiBQbHVnaW48XCJtZC5zbWFydHlwYW50c1wiLCBTbWFydHlwYW50c09wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJtZC5zbWFydHlwYW50c1wiIH1cbiAgcmV0dXJuIHsgbmFtZTogXCJtZC5zbWFydHlwYW50c1wiLCBvcHRpb25zIH1cbn1cblxuLyoqIFRoZSBgbWQuY29tcG9uZW50YCBwbHVnaW4uICovXG5leHBvcnQgZnVuY3Rpb24gY29tcG9uZW50KG9wdGlvbnM/OiBDb21wb25lbnRPcHRpb25zKTogUGx1Z2luPFwibWQuY29tcG9uZW50XCIsIENvbXBvbmVudE9wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJtZC5jb21wb25lbnRcIiB9XG4gIHJldHVybiB7IG5hbWU6IFwibWQuY29tcG9uZW50XCIsIG9wdGlvbnMgfVxufVxuXG4vKiogVGhlIGBtZC5wYWNrYWdlQ29tbWFuZGAgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhY2thZ2VDb21tYW5kKG9wdGlvbnM/OiBQYWNrYWdlQ29tbWFuZE9wdGlvbnMpOiBQbHVnaW48XCJtZC5wYWNrYWdlQ29tbWFuZFwiLCBQYWNrYWdlQ29tbWFuZE9wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJtZC5wYWNrYWdlQ29tbWFuZFwiIH1cbiAgcmV0dXJuIHsgbmFtZTogXCJtZC5wYWNrYWdlQ29tbWFuZFwiLCBvcHRpb25zIH1cbn1cblxuLyoqIFRoZSBgbWQuaGVhZGluZ0lkYCBwbHVnaW4uICovXG5leHBvcnQgZnVuY3Rpb24gaGVhZGluZ0lkKG9wdGlvbnM/OiBIZWFkaW5nSWRPcHRpb25zKTogUGx1Z2luPFwibWQuaGVhZGluZ0lkXCIsIEhlYWRpbmdJZE9wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJtZC5oZWFkaW5nSWRcIiB9XG4gIHJldHVybiB7IG5hbWU6IFwibWQuaGVhZGluZ0lkXCIsIG9wdGlvbnMgfVxufVxuXG4vKiogVGhlIGBtZC5wYXRoUmV3cml0ZWAgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhdGhSZXdyaXRlKG9wdGlvbnM/OiBQYXRoUmV3cml0ZU9wdGlvbnMpOiBQbHVnaW48XCJtZC5wYXRoUmV3cml0ZVwiLCBQYXRoUmV3cml0ZU9wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJtZC5wYXRoUmV3cml0ZVwiIH1cbiAgcmV0dXJuIHsgbmFtZTogXCJtZC5wYXRoUmV3cml0ZVwiLCBvcHRpb25zIH1cbn1cblxuLyoqIFRoZSBgbWQuc2hpZnRIZWFkaW5nYCBwbHVnaW4uICovXG5leHBvcnQgZnVuY3Rpb24gc2hpZnRIZWFkaW5nKG9wdGlvbnM/OiBTaGlmdEhlYWRpbmdPcHRpb25zKTogUGx1Z2luPFwibWQuc2hpZnRIZWFkaW5nXCIsIFNoaWZ0SGVhZGluZ09wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJtZC5zaGlmdEhlYWRpbmdcIiB9XG4gIHJldHVybiB7IG5hbWU6IFwibWQuc2hpZnRIZWFkaW5nXCIsIG9wdGlvbnMgfVxufVxuXG4vKiogVGhlIGBtZC5zdHJpcGAgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0cmlwKG9wdGlvbnM/OiBTdHJpcE9wdGlvbnMpOiBQbHVnaW48XCJtZC5zdHJpcFwiLCBTdHJpcE9wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJtZC5zdHJpcFwiIH1cbiAgcmV0dXJuIHsgbmFtZTogXCJtZC5zdHJpcFwiLCBvcHRpb25zIH1cbn1cblxuLyoqIFRoZSBgbWQudG9jYCBwbHVnaW4uICovXG5leHBvcnQgZnVuY3Rpb24gdG9jKG9wdGlvbnM/OiBUb2NPcHRpb25zKTogUGx1Z2luPFwibWQudG9jXCIsIFRvY09wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJtZC50b2NcIiB9XG4gIHJldHVybiB7IG5hbWU6IFwibWQudG9jXCIsIG9wdGlvbnMgfVxufVxuXG4vKiogVGhlIGBtZC5zdHJpbmdpZnlgIHBsdWdpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmdpZnkob3B0aW9ucz86IFN0cmluZ2lmeU9wdGlvbnMpOiBQbHVnaW48XCJtZC5zdHJpbmdpZnlcIiwgU3RyaW5naWZ5T3B0aW9ucz4ge1xuICBpZiAob3B0aW9ucyA9PT0gdW5kZWZpbmVkKSByZXR1cm4geyBuYW1lOiBcIm1kLnN0cmluZ2lmeVwiIH1cbiAgcmV0dXJuIHsgbmFtZTogXCJtZC5zdHJpbmdpZnlcIiwgb3B0aW9ucyB9XG59XG5cbi8qKiBUaGUgYG1kLnRvSHRtbGAgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSHRtbChvcHRpb25zPzogVG9IdG1sT3B0aW9ucyk6IFBsdWdpbjxcIm1kLnRvSHRtbFwiLCBUb0h0bWxPcHRpb25zPiB7XG4gIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiB7IG5hbWU6IFwibWQudG9IdG1sXCIgfVxuICByZXR1cm4geyBuYW1lOiBcIm1kLnRvSHRtbFwiLCBvcHRpb25zIH1cbn1cblxuLyoqIFRoZSBgbWQudG9OYXR1cmFsTGFuZ3VhZ2VgIHBsdWdpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b05hdHVyYWxMYW5ndWFnZShvcHRpb25zPzogVG9OYXR1cmFsTGFuZ3VhZ2VPcHRpb25zKTogUGx1Z2luPFwibWQudG9OYXR1cmFsTGFuZ3VhZ2VcIiwgVG9OYXR1cmFsTGFuZ3VhZ2VPcHRpb25zPiB7XG4gIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiB7IG5hbWU6IFwibWQudG9OYXR1cmFsTGFuZ3VhZ2VcIiB9XG4gIHJldHVybiB7IG5hbWU6IFwibWQudG9OYXR1cmFsTGFuZ3VhZ2VcIiwgb3B0aW9ucyB9XG59XG4iXX0=
|
package/build/index.js
CHANGED
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
import { createRequire } from "node:module";
|
|
2
2
|
import { resolveAddon } from "./actions/addon/resolve.js";
|
|
3
|
+
import { detectLibc } from "./actions/libc/detect.js";
|
|
3
4
|
import { Processor } from "./models/processor.js";
|
|
4
5
|
export { Processor } from "./models/processor.js";
|
|
5
6
|
const require = createRequire(import.meta.url);
|
|
6
7
|
const addon = require(resolveAddon({
|
|
7
8
|
platform: process.platform,
|
|
8
9
|
arch: process.arch,
|
|
10
|
+
libc: detectLibc({
|
|
11
|
+
platform: process.platform,
|
|
12
|
+
report: () => process.report.getReport(),
|
|
13
|
+
}),
|
|
9
14
|
env: process.env,
|
|
10
15
|
resolvePackage: specifier => require.resolve(specifier),
|
|
11
16
|
}));
|
|
@@ -24,4 +29,4 @@ export const retainedMemory = addon.retainedMemory;
|
|
|
24
29
|
* default is 256 MB.
|
|
25
30
|
*/
|
|
26
31
|
export const setRetainedMemory = addon.setRetainedMemory;
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQzNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQTtBQUN6RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUE7QUFFckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBcUJqRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFFakQsTUFBTSxPQUFPLEdBQUcsYUFBYSxDQUFDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0FBRTlDLE1BQU0sS0FBSyxHQUFVLE9BQU8sQ0FDMUIsWUFBWSxDQUFDO0lBQ1gsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRO0lBQzFCLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTtJQUNsQixJQUFJLEVBQUUsVUFBVSxDQUFDO1FBQ2YsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRO1FBQzFCLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRTtLQUN6QyxDQUFDO0lBQ0YsR0FBRyxFQUFFLE9BQU8sQ0FBQyxHQUFHO0lBQ2hCLGNBQWMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDO0NBQ3hELENBQUMsQ0FDSCxDQUFBO0FBRUQsb0VBQW9FO0FBQ3BFLE1BQU0sVUFBVSxRQUFRO0lBQ3RCLE9BQU8sSUFBSSxTQUFTLENBQUMsSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQTtBQUM1QyxDQUFDO0FBRUQsMkRBQTJEO0FBQzNELE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFBO0FBRXBDLCtEQUErRDtBQUMvRCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQTtBQUU1QywyRkFBMkY7QUFDM0YsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLEtBQUssQ0FBQyxjQUFjLENBQUE7QUFFbEQ7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsS0FBSyxDQUFDLGlCQUFpQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlUmVxdWlyZSB9IGZyb20gXCJub2RlOm1vZHVsZVwiXG5pbXBvcnQgeyByZXNvbHZlQWRkb24gfSBmcm9tIFwiLi9hY3Rpb25zL2FkZG9uL3Jlc29sdmUudHNcIlxuaW1wb3J0IHsgZGV0ZWN0TGliYyB9IGZyb20gXCIuL2FjdGlvbnMvbGliYy9kZXRlY3QudHNcIlxuaW1wb3J0IHR5cGUgeyBBZGRvbiB9IGZyb20gXCIuL21vZGVscy9hZGRvbi50c1wiXG5pbXBvcnQgeyBQcm9jZXNzb3IgfSBmcm9tIFwiLi9tb2RlbHMvcHJvY2Vzc29yLnRzXCJcblxuZXhwb3J0IHR5cGUge1xuICBDb21wYXRpYmxlLFxuICBNZXNzYWdlLFxuICBNZXNzYWdlT3B0aW9ucyxcbiAgTm9kZSxcbiAgUGxhY2UsXG4gIFBvaW50LFxuICBWRmlsZSxcbn0gZnJvbSBcIi4vbW9kZWxzL2ZpbGUudHNcIlxuZXhwb3J0IHR5cGUge1xuICBBdHRhY2hlcixcbiAgUGx1Z2dhYmxlLFxuICBQbHVnZ2FibGVMaXN0LFxuICBQYXJzZXIsXG4gIFBsdWdpbixcbiAgUHJlc2V0LFxuICBUcmFuc2Zvcm1lcixcbn0gZnJvbSBcIi4vbW9kZWxzL3BsdWdpbi50c1wiXG5leHBvcnQgdHlwZSB7IEhvc3RGaWxlLCBIb3N0TWVzc2FnZSB9IGZyb20gXCIuL21vZGVscy92ZmlsZS50c1wiXG5leHBvcnQgeyBQcm9jZXNzb3IgfSBmcm9tIFwiLi9tb2RlbHMvcHJvY2Vzc29yLnRzXCJcblxuY29uc3QgcmVxdWlyZSA9IGNyZWF0ZVJlcXVpcmUoaW1wb3J0Lm1ldGEudXJsKVxuXG5jb25zdCBhZGRvbjogQWRkb24gPSByZXF1aXJlKFxuICByZXNvbHZlQWRkb24oe1xuICAgIHBsYXRmb3JtOiBwcm9jZXNzLnBsYXRmb3JtLFxuICAgIGFyY2g6IHByb2Nlc3MuYXJjaCxcbiAgICBsaWJjOiBkZXRlY3RMaWJjKHtcbiAgICAgIHBsYXRmb3JtOiBwcm9jZXNzLnBsYXRmb3JtLFxuICAgICAgcmVwb3J0OiAoKSA9PiBwcm9jZXNzLnJlcG9ydC5nZXRSZXBvcnQoKSxcbiAgICB9KSxcbiAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgIHJlc29sdmVQYWNrYWdlOiBzcGVjaWZpZXIgPT4gcmVxdWlyZS5yZXNvbHZlKHNwZWNpZmllciksXG4gIH0pLFxuKVxuXG4vKiogQSBuZXcgcHJvY2Vzc29yOiBhZGQgcGx1Z2lucyB3aXRoIGB1c2VgLCB0aGVuIGBwcm9jZXNzYCB0ZXh0LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRleHRsYW5lKCkge1xuICByZXR1cm4gbmV3IFByb2Nlc3NvcihuZXcgYWRkb24uUGlwZWxpbmUoKSlcbn1cblxuLyoqIFRoZSBwYWNrYWdlIHZlcnNpb24sIGFzIHRoZSBuYXRpdmUgY3JhdGUgcmVwb3J0cyBpdC4gKi9cbmV4cG9ydCBjb25zdCB2ZXJzaW9uID0gYWRkb24udmVyc2lvblxuXG4vKiogVGhlIG5hbWUgb2YgZXZlcnkgbmF0aXZlIHBsdWdpbiwgYXMgYSBwaXBlbGluZSBuYW1lcyBpdC4gKi9cbmV4cG9ydCBjb25zdCBwbHVnaW5OYW1lcyA9IGFkZG9uLnBsdWdpbk5hbWVzXG5cbi8qKiBUaGUgbW9zdCBtZW1vcnksIGluIGJ5dGVzLCBlYWNoIHRocmVhZCBrZWVwcyBhZnRlciBhIGRvY3VtZW50IHRvIHJldXNlIGZvciB0aGUgbmV4dC4gKi9cbmV4cG9ydCBjb25zdCByZXRhaW5lZE1lbW9yeSA9IGFkZG9uLnJldGFpbmVkTWVtb3J5XG5cbi8qKlxuICogQ2FwIHRoZSBtZW1vcnksIGluIGJ5dGVzLCBlYWNoIHRocmVhZCBrZWVwcyBhZnRlciBhIGRvY3VtZW50OyBgMGAga2VlcHMgbm9uZS4gVGhlXG4gKiBkZWZhdWx0IGlzIDI1NiBNQi5cbiAqL1xuZXhwb3J0IGNvbnN0IHNldFJldGFpbmVkTWVtb3J5ID0gYWRkb24uc2V0UmV0YWluZWRNZW1vcnlcbiJdfQ==
|
package/build/models/addon.d.ts
CHANGED
|
@@ -1,38 +1,44 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
export interface NativePipeline<Tree extends UnistNode = Node> {
|
|
1
|
+
import type { Message } from "./file.ts";
|
|
2
|
+
/** The crate's pipeline as the addon exposes it: values cross as JSON, trees as JSON text. */
|
|
3
|
+
export interface NativePipeline {
|
|
5
4
|
use(value: unknown, options?: unknown): void;
|
|
6
5
|
data(key?: string): unknown;
|
|
7
6
|
setData(key: string, value: unknown): void;
|
|
8
7
|
replaceData(data: Record<string, unknown>): void;
|
|
9
8
|
freeze(): void;
|
|
10
|
-
parse(text: string):
|
|
11
|
-
run(tree:
|
|
12
|
-
runSync(tree:
|
|
13
|
-
stringify(tree:
|
|
9
|
+
parse(text: string): string;
|
|
10
|
+
run(tree: string, value?: string): string;
|
|
11
|
+
runSync(tree: string, value?: string): string;
|
|
12
|
+
stringify(tree: string): string;
|
|
14
13
|
process(text: string, path?: string): Promise<ProcessOutcome>;
|
|
15
|
-
processSync(text: string, path?: string):
|
|
14
|
+
processSync(text: string, path?: string): NativeFile;
|
|
16
15
|
hosts(): number[];
|
|
17
|
-
startRun(tree:
|
|
18
|
-
startProcess(text: string, sync: boolean, path?: string): NativeRun
|
|
16
|
+
startRun(tree: string, value: string | undefined, sync: boolean): NativeRun;
|
|
17
|
+
startProcess(text: string, sync: boolean, path?: string): NativeRun;
|
|
19
18
|
}
|
|
20
19
|
/** What an async `process` settles with: the file, or the error the crate raised. */
|
|
21
20
|
export interface ProcessOutcome {
|
|
22
|
-
file?:
|
|
21
|
+
file?: NativeFile;
|
|
23
22
|
error?: {
|
|
24
23
|
code: string;
|
|
25
24
|
message: string;
|
|
26
25
|
};
|
|
27
26
|
}
|
|
28
|
-
/**
|
|
29
|
-
export interface
|
|
27
|
+
/** The file a native `process` gives back, its messages as the crate holds them. */
|
|
28
|
+
export interface NativeFile {
|
|
29
|
+
value: string;
|
|
30
|
+
messages: Message[];
|
|
31
|
+
data: Record<string, unknown>;
|
|
32
|
+
}
|
|
33
|
+
/** A run paused before host plugins until `resume`, then finished with `result`, as JSON
|
|
34
|
+
* text: the tree for a run, the file for a process. */
|
|
35
|
+
export interface NativeRun {
|
|
30
36
|
hosts(): number[];
|
|
31
|
-
tree():
|
|
37
|
+
tree(): string;
|
|
32
38
|
value(): string | null;
|
|
33
39
|
messages(): Message[];
|
|
34
|
-
resume(tree:
|
|
35
|
-
result():
|
|
40
|
+
resume(tree: string, messages: Message[]): void;
|
|
41
|
+
result(): string;
|
|
36
42
|
}
|
|
37
43
|
/** What the napi addon exports. */
|
|
38
44
|
export interface Addon {
|
package/build/models/addon.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9tb2RlbHMvYWRkb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgTWVzc2FnZSB9IGZyb20gXCIuL2ZpbGUudHNcIlxuXG4vKiogVGhlIGNyYXRlJ3MgcGlwZWxpbmUgYXMgdGhlIGFkZG9uIGV4cG9zZXMgaXQ6IHZhbHVlcyBjcm9zcyBhcyBKU09OLCB0cmVlcyBhcyBKU09OIHRleHQuICovXG5leHBvcnQgaW50ZXJmYWNlIE5hdGl2ZVBpcGVsaW5lIHtcbiAgdXNlKHZhbHVlOiB1bmtub3duLCBvcHRpb25zPzogdW5rbm93bik6IHZvaWRcbiAgZGF0YShrZXk/OiBzdHJpbmcpOiB1bmtub3duXG4gIHNldERhdGEoa2V5OiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKTogdm9pZFxuICByZXBsYWNlRGF0YShkYXRhOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IHZvaWRcbiAgZnJlZXplKCk6IHZvaWRcbiAgcGFyc2UodGV4dDogc3RyaW5nKTogc3RyaW5nXG4gIHJ1bih0cmVlOiBzdHJpbmcsIHZhbHVlPzogc3RyaW5nKTogc3RyaW5nXG4gIHJ1blN5bmModHJlZTogc3RyaW5nLCB2YWx1ZT86IHN0cmluZyk6IHN0cmluZ1xuICBzdHJpbmdpZnkodHJlZTogc3RyaW5nKTogc3RyaW5nXG4gIHByb2Nlc3ModGV4dDogc3RyaW5nLCBwYXRoPzogc3RyaW5nKTogUHJvbWlzZTxQcm9jZXNzT3V0Y29tZT5cbiAgcHJvY2Vzc1N5bmModGV4dDogc3RyaW5nLCBwYXRoPzogc3RyaW5nKTogTmF0aXZlRmlsZVxuICBob3N0cygpOiBudW1iZXJbXVxuICBzdGFydFJ1bih0cmVlOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQsIHN5bmM6IGJvb2xlYW4pOiBOYXRpdmVSdW5cbiAgc3RhcnRQcm9jZXNzKHRleHQ6IHN0cmluZywgc3luYzogYm9vbGVhbiwgcGF0aD86IHN0cmluZyk6IE5hdGl2ZVJ1blxufVxuXG4vKiogV2hhdCBhbiBhc3luYyBgcHJvY2Vzc2Agc2V0dGxlcyB3aXRoOiB0aGUgZmlsZSwgb3IgdGhlIGVycm9yIHRoZSBjcmF0ZSByYWlzZWQuICovXG5leHBvcnQgaW50ZXJmYWNlIFByb2Nlc3NPdXRjb21lIHtcbiAgZmlsZT86IE5hdGl2ZUZpbGVcbiAgZXJyb3I/OiB7IGNvZGU6IHN0cmluZzsgbWVzc2FnZTogc3RyaW5nIH1cbn1cblxuLyoqIFRoZSBmaWxlIGEgbmF0aXZlIGBwcm9jZXNzYCBnaXZlcyBiYWNrLCBpdHMgbWVzc2FnZXMgYXMgdGhlIGNyYXRlIGhvbGRzIHRoZW0uICovXG5leHBvcnQgaW50ZXJmYWNlIE5hdGl2ZUZpbGUge1xuICB2YWx1ZTogc3RyaW5nXG4gIG1lc3NhZ2VzOiBNZXNzYWdlW11cbiAgZGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbn1cblxuLyoqIEEgcnVuIHBhdXNlZCBiZWZvcmUgaG9zdCBwbHVnaW5zIHVudGlsIGByZXN1bWVgLCB0aGVuIGZpbmlzaGVkIHdpdGggYHJlc3VsdGAsIGFzIEpTT05cbiAqIHRleHQ6IHRoZSB0cmVlIGZvciBhIHJ1biwgdGhlIGZpbGUgZm9yIGEgcHJvY2Vzcy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmF0aXZlUnVuIHtcbiAgaG9zdHMoKTogbnVtYmVyW11cbiAgdHJlZSgpOiBzdHJpbmdcbiAgdmFsdWUoKTogc3RyaW5nIHwgbnVsbFxuICBtZXNzYWdlcygpOiBNZXNzYWdlW11cbiAgcmVzdW1lKHRyZWU6IHN0cmluZywgbWVzc2FnZXM6IE1lc3NhZ2VbXSk6IHZvaWRcbiAgcmVzdWx0KCk6IHN0cmluZ1xufVxuXG4vKiogV2hhdCB0aGUgbmFwaSBhZGRvbiBleHBvcnRzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBBZGRvbiB7XG4gIHZlcnNpb24oKTogc3RyaW5nXG4gIHBsdWdpbk5hbWVzKCk6IHN0cmluZ1tdXG4gIHJldGFpbmVkTWVtb3J5KCk6IG51bWJlclxuICBzZXRSZXRhaW5lZE1lbW9yeShieXRlczogbnVtYmVyKTogdm9pZFxuICBQaXBlbGluZTogbmV3ICgpID0+IE5hdGl2ZVBpcGVsaW5lXG59XG4iXX0=
|
package/build/models/file.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { HostMessage } from "./vfile.ts";
|
|
1
2
|
/** A unist node as JSON: what `parse` returns and `run` and `stringify` take. */
|
|
2
3
|
export interface Node {
|
|
3
4
|
type: string;
|
|
@@ -9,7 +10,7 @@ export interface Point {
|
|
|
9
10
|
column: number;
|
|
10
11
|
offset: number | null;
|
|
11
12
|
}
|
|
12
|
-
/** A diagnostic
|
|
13
|
+
/** A diagnostic as it crosses the addon: what a `HostMessage` is read from. */
|
|
13
14
|
export interface Message {
|
|
14
15
|
reason: string;
|
|
15
16
|
ruleId: string | null;
|
|
@@ -22,7 +23,7 @@ export interface Message {
|
|
|
22
23
|
/** What `process` gives back, as a vfile: the output, the messages and the file's data. */
|
|
23
24
|
export interface VFile {
|
|
24
25
|
value: string;
|
|
25
|
-
messages:
|
|
26
|
+
messages: HostMessage[];
|
|
26
27
|
data: Record<string, unknown>;
|
|
27
28
|
path?: string;
|
|
28
29
|
}
|
package/build/models/file.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL21vZGVscy9maWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEhvc3RNZXNzYWdlIH0gZnJvbSBcIi4vdmZpbGUudHNcIlxuXG4vKiogQSB1bmlzdCBub2RlIGFzIEpTT046IHdoYXQgYHBhcnNlYCByZXR1cm5zIGFuZCBgcnVuYCBhbmQgYHN0cmluZ2lmeWAgdGFrZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTm9kZSB7XG4gIHR5cGU6IHN0cmluZ1xuICBba2V5OiBzdHJpbmddOiB1bmtub3duXG59XG5cbi8qKiBPbmUgcGxhY2UgaW4gYSBmaWxlOiBhIDEtaW5kZXhlZCBsaW5lIGFuZCBjb2x1bW4gYW5kIGEgMC1pbmRleGVkIG9mZnNldCwgd2hlbiBrbm93bi4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG9pbnQge1xuICBsaW5lOiBudW1iZXJcbiAgY29sdW1uOiBudW1iZXJcbiAgb2Zmc2V0OiBudW1iZXIgfCBudWxsXG59XG5cbi8qKiBBIGRpYWdub3N0aWMgYXMgaXQgY3Jvc3NlcyB0aGUgYWRkb246IHdoYXQgYSBgSG9zdE1lc3NhZ2VgIGlzIHJlYWQgZnJvbS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWVzc2FnZSB7XG4gIHJlYXNvbjogc3RyaW5nXG4gIHJ1bGVJZDogc3RyaW5nIHwgbnVsbFxuICBzb3VyY2U6IHN0cmluZyB8IG51bGxcbiAgcGxhY2U6IHsgc3RhcnQ6IFBvaW50OyBlbmQ6IFBvaW50IH0gfCBudWxsXG59XG5cbi8qKiBXaGF0IGBwcm9jZXNzYCBnaXZlcyBiYWNrLCBhcyBhIHZmaWxlOiB0aGUgb3V0cHV0LCB0aGUgbWVzc2FnZXMgYW5kIHRoZSBmaWxlJ3MgZGF0YS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVkZpbGUge1xuICB2YWx1ZTogc3RyaW5nXG4gIG1lc3NhZ2VzOiBIb3N0TWVzc2FnZVtdXG4gIGRhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gIHBhdGg/OiBzdHJpbmdcbn1cblxuLyoqIEEgZG9jdW1lbnQ6IGl0cyB0ZXh0LCBvciBhIGZpbGUgaG9sZGluZyBpdCBhcyBgdmFsdWVgLCB3aXRoIGl0cyBwYXRoIHdoZW4ga25vd24uICovXG5leHBvcnQgdHlwZSBDb21wYXRpYmxlID0gc3RyaW5nIHwgeyB2YWx1ZTogc3RyaW5nOyBwYXRoPzogc3RyaW5nIH1cblxuLyoqIFdoZXJlIGEgbWVzc2FnZSBpczogYSBwb2ludCwgYSBwb3NpdGlvbiwgb3IgYSBub2RlIGhvbGRpbmcgb25lLiAqL1xuZXhwb3J0IHR5cGUgUGxhY2UgPVxuICB8IHsgbGluZTogbnVtYmVyOyBjb2x1bW46IG51bWJlcjsgb2Zmc2V0PzogbnVtYmVyIHwgbnVsbCB9XG4gIHwgeyBzdGFydDogUG9pbnQ7IGVuZDogUG9pbnQgfVxuICB8IHsgcG9zaXRpb24/OiB1bmtub3duIH1cblxuLyoqIFdoYXQgYG1lc3NhZ2VgIHRha2VzIGJlc2lkZXMgdGhlIHJlYXNvbiwgYXMgdmZpbGUtbWVzc2FnZSBuYW1lcyBpdC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWVzc2FnZU9wdGlvbnMge1xuICBhbmNlc3RvcnM/OiB1bmtub3duW11cbiAgY2F1c2U/OiB1bmtub3duXG4gIHBsYWNlPzogUGxhY2VcbiAgcnVsZUlkPzogc3RyaW5nXG4gIHNvdXJjZT86IHN0cmluZ1xufVxuIl19
|
|
@@ -8,7 +8,7 @@ import type { Parser, Pluggable, PluggableList, Preset } from "./plugin.ts";
|
|
|
8
8
|
*/
|
|
9
9
|
export declare class Processor<Tree extends UnistNode = Node> {
|
|
10
10
|
#private;
|
|
11
|
-
constructor(native: NativePipeline
|
|
11
|
+
constructor(native: NativePipeline);
|
|
12
12
|
/**
|
|
13
13
|
* Add a plugin, a list of them or a preset; a plugin used again is reconfigured. A
|
|
14
14
|
* JavaScript plugin is an attacher, called with the processor and its options at freeze.
|
|
@@ -3,7 +3,7 @@ import { isPlainObject, mergeOptions } from "../actions/options/merge.js";
|
|
|
3
3
|
import { mapPluggable } from "../actions/pluggable/map.js";
|
|
4
4
|
import { finishRun } from "../actions/run/finish.js";
|
|
5
5
|
import { isTransformer } from "../actions/transformer/check.js";
|
|
6
|
-
import { HostFile } from "./vfile.js";
|
|
6
|
+
import { HostFile, HostMessage } from "./vfile.js";
|
|
7
7
|
/**
|
|
8
8
|
* unified's processor over the native pipeline; every call is the crate's, except that
|
|
9
9
|
* JavaScript plugins run here when a run pauses before them.
|
|
@@ -47,7 +47,8 @@ export class Processor {
|
|
|
47
47
|
/** Parse a document into a tree. */
|
|
48
48
|
parse(document) {
|
|
49
49
|
this.#attach();
|
|
50
|
-
|
|
50
|
+
const tree = JSON.parse(this.#native.parse(readValue(document) ?? ""));
|
|
51
|
+
return tree;
|
|
51
52
|
}
|
|
52
53
|
/**
|
|
53
54
|
* Run the transforms, finishing asynchronous stages; `file`, the text `tree` was parsed
|
|
@@ -56,26 +57,26 @@ export class Processor {
|
|
|
56
57
|
async run(tree, file) {
|
|
57
58
|
const value = readValue(file);
|
|
58
59
|
if (!this.#attach())
|
|
59
|
-
return this.#native.run(tree, value);
|
|
60
|
-
const run = this.#native.startRun(tree, value, false);
|
|
60
|
+
return readNode(this.#native.run(JSON.stringify(tree), value));
|
|
61
|
+
const run = this.#native.startRun(JSON.stringify(tree), value, false);
|
|
61
62
|
const host = new HostFile({ value, path: readPath(file) });
|
|
62
63
|
await finishRun({ run, hosts: this.#hosts, file: host, sync: false, call: "run" });
|
|
63
|
-
return run.result();
|
|
64
|
+
return readNode(run.result());
|
|
64
65
|
}
|
|
65
66
|
/** Run the transforms; fails with `async-in-sync` on an asynchronous stage. */
|
|
66
67
|
runSync(tree, file) {
|
|
67
68
|
const value = readValue(file);
|
|
68
69
|
if (!this.#attach())
|
|
69
|
-
return this.#native.runSync(tree, value);
|
|
70
|
-
const run = this.#native.startRun(tree, value, true);
|
|
70
|
+
return readNode(this.#native.runSync(JSON.stringify(tree), value));
|
|
71
|
+
const run = this.#native.startRun(JSON.stringify(tree), value, true);
|
|
71
72
|
const host = new HostFile({ value, path: readPath(file) });
|
|
72
73
|
void finishRun({ run, hosts: this.#hosts, file: host, sync: true, call: "run" });
|
|
73
|
-
return run.result();
|
|
74
|
+
return readNode(run.result());
|
|
74
75
|
}
|
|
75
76
|
/** Compile a tree, running no transform. */
|
|
76
77
|
stringify(tree) {
|
|
77
78
|
this.#attach();
|
|
78
|
-
return this.#native.stringify(tree);
|
|
79
|
+
return this.#native.stringify(JSON.stringify(tree));
|
|
79
80
|
}
|
|
80
81
|
/** Parse, run and compile a document, finishing asynchronous stages. */
|
|
81
82
|
async process(document) {
|
|
@@ -87,22 +88,22 @@ export class Processor {
|
|
|
87
88
|
throw Object.assign(new Error(outcome.error.message), outcome.error);
|
|
88
89
|
if (!outcome.file)
|
|
89
90
|
throw new Error("process settled with neither a file nor an error");
|
|
90
|
-
return
|
|
91
|
+
return readResult(outcome.file, document);
|
|
91
92
|
}
|
|
92
93
|
const run = this.#native.startProcess(text, false, readPath(document));
|
|
93
94
|
const file = new HostFile({ value: run.value() ?? text, path: readPath(document) });
|
|
94
95
|
await finishRun({ run, hosts: this.#hosts, file, sync: false, call: "process" });
|
|
95
|
-
return
|
|
96
|
+
return readResult(readFile(run.result()), document, file);
|
|
96
97
|
}
|
|
97
98
|
/** Parse, run and compile a document; fails with `async-in-sync` on an asynchronous stage. */
|
|
98
99
|
processSync(document) {
|
|
99
100
|
const text = readValue(document) ?? "";
|
|
100
101
|
if (!this.#attach())
|
|
101
|
-
return
|
|
102
|
+
return readResult(this.#native.processSync(text, readPath(document)), document);
|
|
102
103
|
const run = this.#native.startProcess(text, true, readPath(document));
|
|
103
104
|
const file = new HostFile({ value: run.value() ?? text, path: readPath(document) });
|
|
104
105
|
void finishRun({ run, hosts: this.#hosts, file, sync: true, call: "process" });
|
|
105
|
-
return
|
|
106
|
+
return readResult(readFile(run.result()), document, file);
|
|
106
107
|
}
|
|
107
108
|
// Once only: `freeze` borrows the native pipeline mutably, which napi refuses while an
|
|
108
109
|
// async `process` still holds it
|
|
@@ -150,18 +151,33 @@ export class Processor {
|
|
|
150
151
|
return this.#native.hosts().length > 0;
|
|
151
152
|
}
|
|
152
153
|
}
|
|
154
|
+
function readNode(text) {
|
|
155
|
+
const node = JSON.parse(text);
|
|
156
|
+
return node;
|
|
157
|
+
}
|
|
158
|
+
function readFile(text) {
|
|
159
|
+
const file = JSON.parse(text);
|
|
160
|
+
return file;
|
|
161
|
+
}
|
|
153
162
|
function readValue(file) {
|
|
154
163
|
return typeof file === "string" ? file : file?.value;
|
|
155
164
|
}
|
|
156
165
|
function readPath(file) {
|
|
157
166
|
return typeof file === "string" ? undefined : file?.path;
|
|
158
167
|
}
|
|
159
|
-
//
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
}
|
|
163
|
-
function withPath(file, document) {
|
|
168
|
+
// The crate's messages start with the host file's, in order: the plugins' own objects
|
|
169
|
+
// stay, so `fatal`, `url` and `note` survive; native data first, plugins' data over it
|
|
170
|
+
function readResult(native, document, host) {
|
|
164
171
|
const path = readPath(document);
|
|
172
|
+
const known = host?.messages ?? [];
|
|
173
|
+
const reported = native.messages
|
|
174
|
+
.slice(known.length)
|
|
175
|
+
.map(message => HostMessage.fromMessage(message, path));
|
|
176
|
+
const file = {
|
|
177
|
+
value: native.value,
|
|
178
|
+
messages: [...known, ...reported],
|
|
179
|
+
data: { ...native.data, ...host?.data },
|
|
180
|
+
};
|
|
165
181
|
return path === undefined ? file : { ...file, path };
|
|
166
182
|
}
|
|
167
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzc29yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbW9kZWxzL3Byb2Nlc3Nvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sOEJBQThCLENBQUE7QUFDekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQTtBQUN6RSxPQUFPLEVBQWtCLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFBO0FBQzFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUE7QUFNL0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUVyQzs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sU0FBUztJQUNwQixPQUFPLENBQXNCO0lBQzdCLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBb0IsQ0FBQTtJQUNsQyxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQWdCLENBQUE7SUFDaEMsU0FBUyxHQUFHLEtBQUssQ0FBQTtJQUNqQixPQUFPLEdBQUcsS0FBSyxDQUFBO0lBRWYsWUFBWSxNQUE0QjtRQUN0QyxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQTtJQUN2QixDQUFDO0lBV0QsbUZBQW1GO0lBQ25GLEdBQUcsQ0FDRCxLQUE0RCxFQUM1RCxHQUFHLE9BQWtCO1FBRXJCLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDbEQsT0FBTyxJQUFJLENBQUE7UUFDYixDQUFDO1FBQ0QsTUFBTSxRQUFRLEdBQUcsQ0FBQyxRQUFrQixFQUFFLFVBQXFCLEVBQUUsRUFBRSxDQUM3RCxJQUFJ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ciB9IGZyb20gXCIuLi9hY3Rpb25zL2F0dGFjaGVyL2NoZWNrLnRzXCJcbmltcG9ydCB7IGlzUGxhaW5PYmplY3QsIG1lcmdlT3B0aW9ucyB9IGZyb20gXCIuLi9hY3Rpb25zL29wdGlvbnMvbWVyZ2UudHNcIlxuaW1wb3J0IHsgdHlwZSBIb3N0RW50cnksIG1hcFBsdWdnYWJsZSB9IGZyb20gXCIuLi9hY3Rpb25zL3BsdWdnYWJsZS9tYXAudHNcIlxuaW1wb3J0IHsgZmluaXNoUnVuIH0gZnJvbSBcIi4uL2FjdGlvbnMvcnVuL2ZpbmlzaC50c1wiXG5pbXBvcnQgeyBpc1RyYW5zZm9ybWVyIH0gZnJvbSBcIi4uL2FjdGlvbnMvdHJhbnNmb3JtZXIvY2hlY2sudHNcIlxuaW1wb3J0IHR5cGUgeyBOb2RlIGFzIFVuaXN0Tm9kZSB9IGZyb20gXCJ1bmlzdFwiXG5pbXBvcnQgdHlwZSB7IE5hdGl2ZVBpcGVsaW5lIH0gZnJvbSBcIi4vYWRkb24udHNcIlxuaW1wb3J0IHR5cGUgeyBDb21wYXRpYmxlLCBOb2RlLCBWRmlsZSB9IGZyb20gXCIuL2ZpbGUudHNcIlxuaW1wb3J0IHR5cGUgeyBIb3N0IH0gZnJvbSBcIi4vaG9zdC50c1wiXG5pbXBvcnQgdHlwZSB7IEF0dGFjaGVyLCBQYXJzZXIsIFBsdWdnYWJsZSwgUGx1Z2dhYmxlTGlzdCwgUHJlc2V0IH0gZnJvbSBcIi4vcGx1Z2luLnRzXCJcbmltcG9ydCB7IEhvc3RGaWxlIH0gZnJvbSBcIi4vdmZpbGUudHNcIlxuXG4vKipcbiAqIHVuaWZpZWQncyBwcm9jZXNzb3Igb3ZlciB0aGUgbmF0aXZlIHBpcGVsaW5lOyBldmVyeSBjYWxsIGlzIHRoZSBjcmF0ZSdzLCBleGNlcHQgdGhhdFxuICogSmF2YVNjcmlwdCBwbHVnaW5zIHJ1biBoZXJlIHdoZW4gYSBydW4gcGF1c2VzIGJlZm9yZSB0aGVtLlxuICovXG5leHBvcnQgY2xhc3MgUHJvY2Vzc29yPFRyZWUgZXh0ZW5kcyBVbmlzdE5vZGUgPSBOb2RlPiB7XG4gICNuYXRpdmU6IE5hdGl2ZVBpcGVsaW5lPFRyZWU+XG4gICNpZHMgPSBuZXcgTWFwPEF0dGFjaGVyLCBudW1iZXI+KClcbiAgI2hvc3RzID0gbmV3IE1hcDxudW1iZXIsIEhvc3Q+KClcbiAgI2F0dGFjaGVkID0gZmFsc2VcbiAgI2Zyb3plbiA9IGZhbHNlXG5cbiAgY29uc3RydWN0b3IobmF0aXZlOiBOYXRpdmVQaXBlbGluZTxUcmVlPikge1xuICAgIHRoaXMuI25hdGl2ZSA9IG5hdGl2ZVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIHBsdWdpbiwgYSBsaXN0IG9mIHRoZW0gb3IgYSBwcmVzZXQ7IGEgcGx1Z2luIHVzZWQgYWdhaW4gaXMgcmVjb25maWd1cmVkLiBBXG4gICAqIEphdmFTY3JpcHQgcGx1Z2luIGlzIGFuIGF0dGFjaGVyLCBjYWxsZWQgd2l0aCB0aGUgcHJvY2Vzc29yIGFuZCBpdHMgb3B0aW9ucyBhdCBmcmVlemUuXG4gICAqIEEgcGFyc2VyLCBzdWNoIGFzIGBtZC5wYXJzZSgpYCwgdHlwZXMgdGhlIHRyZWUgYHBhcnNlYCByZXR1cm5zLlxuICAgKi9cbiAgdXNlPFZhbHVlIGV4dGVuZHMgUGx1Z2dhYmxlIHwgUGx1Z2dhYmxlTGlzdCB8IFByZXNldCB8IG51bGwgfCB1bmRlZmluZWQ+KFxuICAgIHZhbHVlOiBWYWx1ZSxcbiAgICAuLi5vcHRpb25zOiB1bmtub3duW11cbiAgKTogUHJvY2Vzc29yPFBhcnNlZFRyZWU8VmFsdWUsIFRyZWU+PlxuICAvLyBhIHBhcnNlciByZXR5cGVzIHRoaXMgc2FtZSBwcm9jZXNzb3I6IHRoZSB0cmVlIGl0IHBhcnNlcyBsaXZlcyBpbiB0aGUgdHlwZSBhbG9uZVxuICB1c2UoXG4gICAgdmFsdWU6IFBsdWdnYWJsZSB8IFBsdWdnYWJsZUxpc3QgfCBQcmVzZXQgfCBudWxsIHwgdW5kZWZpbmVkLFxuICAgIC4uLm9wdGlvbnM6IHVua25vd25bXVxuICApOiBQcm9jZXNzb3I8VW5pc3ROb2RlPiB7XG4gICAgaWYgKGlzQXR0YWNoZXIodmFsdWUpKSB7XG4gICAgICB0aGlzLiNuYXRpdmUudXNlKFt0aGlzLiNyZWdpc3Rlcih2YWx1ZSwgb3B0aW9ucyldKVxuICAgICAgcmV0dXJuIHRoaXNcbiAgICB9XG4gICAgY29uc3QgcmVnaXN0ZXIgPSAoYXR0YWNoZXI6IEF0dGFjaGVyLCBwYXJhbWV0ZXJzOiB1bmtub3duW10pID0+XG4gICAgICB0aGlzLiNyZWdpc3RlcihhdHRhY2hlciwgcGFyYW1ldGVycylcbiAgICB0aGlzLiNuYXRpdmUudXNlKG1hcFBsdWdnYWJsZSh2YWx1ZSA/PyBudWxsLCByZWdpc3RlciksIG9wdGlvbnNbMF0pXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKiBBbGwgZGF0YSwgb3IgdGhlIHZhbHVlIHVuZGVyIGBrZXlgLiAqL1xuICBkYXRhKCk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gIGRhdGEoa2V5OiBzdHJpbmcpOiB1bmtub3duXG4gIC8qKiBTZXQgdGhlIHZhbHVlIHVuZGVyIGBrZXlgLCBvciByZXBsYWNlIGFsbCBkYXRhLiAqL1xuICBkYXRhKGtleTogc3RyaW5nLCB2YWx1ZTogdW5rbm93bik6IHRoaXNcbiAgZGF0YShkYXRhc2V0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IHRoaXNcbiAgZGF0YShrZXk/OiBzdHJpbmcgfCBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgLi4udmFsdWU6IHVua25vd25bXSkge1xuICAgIGlmICh0eXBlb2Yga2V5ID09PSBcIm9iamVjdFwiKSB7XG4gICAgICB0aGlzLiNuYXRpdmUucmVwbGFjZURhdGEoa2V5KVxuICAgICAgcmV0dXJuIHRoaXNcbiAgICB9XG4gICAgaWYgKGtleSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuI25hdGl2ZS5zZXREYXRhKGtleSwgdmFsdWVbMF0pXG4gICAgICByZXR1cm4gdGhpc1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy4jbmF0aXZlLmRhdGEoa2V5KVxuICB9XG5cbiAgLyoqIEF0dGFjaCBldmVyeSBwbHVnaW47IGxhdGVyIGB1c2VgIGFuZCBgZGF0YWAgc2V0dGVycyBmYWlsLiAqL1xuICBmcmVlemUoKSB7XG4gICAgdGhpcy4jYXR0YWNoKClcbiAgICB0aGlzLiNmcmVlemVOYXRpdmUoKVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKiogUGFyc2UgYSBkb2N1bWVudCBpbnRvIGEgdHJlZS4gKi9cbiAgcGFyc2UoZG9jdW1lbnQ6IENvbXBhdGlibGUpIHtcbiAgICB0aGlzLiNhdHRhY2goKVxuICAgIHJldHVybiB0aGlzLiNuYXRpdmUucGFyc2UocmVhZFZhbHVlKGRvY3VtZW50KSA/PyBcIlwiKVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1biB0aGUgdHJhbnNmb3JtcywgZmluaXNoaW5nIGFzeW5jaHJvbm91cyBzdGFnZXM7IGBmaWxlYCwgdGhlIHRleHQgYHRyZWVgIHdhcyBwYXJzZWRcbiAgICogZnJvbSwgbGV0cyBicmlkZ2VzIHJlYWQgaXQgYW5kIGtlZXBzIHBvc2l0aW9ucyBpbiB0aGUgcmVzdWx0LlxuICAgKi9cbiAgYXN5bmMgcnVuKHRyZWU6IFVuaXN0Tm9kZSwgZmlsZT86IENvbXBhdGlibGUpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHJlYWRWYWx1ZShmaWxlKVxuICAgIGlmICghdGhpcy4jYXR0YWNoKCkpIHJldHVybiB0aGlzLiNuYXRpdmUucnVuKHRyZWUsIHZhbHVlKVxuICAgIGNvbnN0IHJ1biA9IHRoaXMuI25hdGl2ZS5zdGFydFJ1bih0cmVlLCB2YWx1ZSwgZmFsc2UpXG4gICAgY29uc3QgaG9zdCA9IG5ldyBIb3N0RmlsZSh7IHZhbHVlLCBwYXRoOiByZWFkUGF0aChmaWxlKSB9KVxuICAgIGF3YWl0IGZpbmlzaFJ1bih7IHJ1biwgaG9zdHM6IHRoaXMuI2hvc3RzLCBmaWxlOiBob3N0LCBzeW5jOiBmYWxzZSwgY2FsbDogXCJydW5cIiB9KVxuICAgIHJldHVybiBydW4ucmVzdWx0KClcbiAgfVxuXG4gIC8qKiBSdW4gdGhlIHRyYW5zZm9ybXM7IGZhaWxzIHdpdGggYGFzeW5jLWluLXN5bmNgIG9uIGFuIGFzeW5jaHJvbm91cyBzdGFnZS4gKi9cbiAgcnVuU3luYyh0cmVlOiBVbmlzdE5vZGUsIGZpbGU/OiBDb21wYXRpYmxlKSB7XG4gICAgY29uc3QgdmFsdWUgPSByZWFkVmFsdWUoZmlsZSlcbiAgICBpZiAoIXRoaXMuI2F0dGFjaCgpKSByZXR1cm4gdGhpcy4jbmF0aXZlLnJ1blN5bmModHJlZSwgdmFsdWUpXG4gICAgY29uc3QgcnVuID0gdGhpcy4jbmF0aXZlLnN0YXJ0UnVuKHRyZWUsIHZhbHVlLCB0cnVlKVxuICAgIGNvbnN0IGhvc3QgPSBuZXcgSG9zdEZpbGUoeyB2YWx1ZSwgcGF0aDogcmVhZFBhdGgoZmlsZSkgfSlcbiAgICB2b2lkIGZpbmlzaFJ1bih7IHJ1biwgaG9zdHM6IHRoaXMuI2hvc3RzLCBmaWxlOiBob3N0LCBzeW5jOiB0cnVlLCBjYWxsOiBcInJ1blwiIH0pXG4gICAgcmV0dXJuIHJ1bi5yZXN1bHQoKVxuICB9XG5cbiAgLyoqIENvbXBpbGUgYSB0cmVlLCBydW5uaW5nIG5vIHRyYW5zZm9ybS4gKi9cbiAgc3RyaW5naWZ5KHRyZWU6IFVuaXN0Tm9kZSkge1xuICAgIHRoaXMuI2F0dGFjaCgpXG4gICAgcmV0dXJuIHRoaXMuI25hdGl2ZS5zdHJpbmdpZnkodHJlZSlcbiAgfVxuXG4gIC8qKiBQYXJzZSwgcnVuIGFuZCBjb21waWxlIGEgZG9jdW1lbnQsIGZpbmlzaGluZyBhc3luY2hyb25vdXMgc3RhZ2VzLiAqL1xuICBhc3luYyBwcm9jZXNzKGRvY3VtZW50OiBDb21wYXRpYmxlKTogUHJvbWlzZTxWRmlsZT4ge1xuICAgIGNvbnN0IHRleHQgPSByZWFkVmFsdWUoZG9jdW1lbnQpID8/IFwiXCJcbiAgICBpZiAoIXRoaXMuI2F0dGFjaCgpKSB7XG4gICAgICB0aGlzLiNmcmVlemVOYXRpdmUoKVxuICAgICAgY29uc3Qgb3V0Y29tZSA9IGF3YWl0IHRoaXMuI25hdGl2ZS5wcm9jZXNzKHRleHQsIHJlYWRQYXRoKGRvY3VtZW50KSlcbiAgICAgIGlmIChvdXRjb21lLmVycm9yKVxuICAgICAgICB0aHJvdyBPYmplY3QuYXNzaWduKG5ldyBFcnJvcihvdXRjb21lLmVycm9yLm1lc3NhZ2UpLCBvdXRjb21lLmVycm9yKVxuICAgICAgaWYgKCFvdXRjb21lLmZpbGUpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcInByb2Nlc3Mgc2V0dGxlZCB3aXRoIG5laXRoZXIgYSBmaWxlIG5vciBhbiBlcnJvclwiKVxuICAgICAgcmV0dXJuIHdpdGhQYXRoKG91dGNvbWUuZmlsZSwgZG9jdW1lbnQpXG4gICAgfVxuICAgIGNvbnN0IHJ1biA9IHRoaXMuI25hdGl2ZS5zdGFydFByb2Nlc3ModGV4dCwgZmFsc2UsIHJlYWRQYXRoKGRvY3VtZW50KSlcbiAgICBjb25zdCBmaWxlID0gbmV3IEhvc3RGaWxlKHsgdmFsdWU6IHJ1bi52YWx1ZSgpID8/IHRleHQsIHBhdGg6IHJlYWRQYXRoKGRvY3VtZW50KSB9KVxuICAgIGF3YWl0IGZpbmlzaFJ1bih7IHJ1biwgaG9zdHM6IHRoaXMuI2hvc3RzLCBmaWxlLCBzeW5jOiBmYWxzZSwgY2FsbDogXCJwcm9jZXNzXCIgfSlcbiAgICByZXR1cm4gd2l0aFBhdGgobWVyZ2VEYXRhKHJ1bi5yZXN1bHQoKSwgZmlsZS5kYXRhKSwgZG9jdW1lbnQpXG4gIH1cblxuICAvKiogUGFyc2UsIHJ1biBhbmQgY29tcGlsZSBhIGRvY3VtZW50OyBmYWlscyB3aXRoIGBhc3luYy1pbi1zeW5jYCBvbiBhbiBhc3luY2hyb25vdXMgc3RhZ2UuICovXG4gIHByb2Nlc3NTeW5jKGRvY3VtZW50OiBDb21wYXRpYmxlKTogVkZpbGUge1xuICAgIGNvbnN0IHRleHQgPSByZWFkVmFsdWUoZG9jdW1lbnQpID8/IFwiXCJcbiAgICBpZiAoIXRoaXMuI2F0dGFjaCgpKVxuICAgICAgcmV0dXJuIHdpdGhQYXRoKHRoaXMuI25hdGl2ZS5wcm9jZXNzU3luYyh0ZXh0LCByZWFkUGF0aChkb2N1bWVudCkpLCBkb2N1bWVudClcbiAgICBjb25zdCBydW4gPSB0aGlzLiNuYXRpdmUuc3RhcnRQcm9jZXNzKHRleHQsIHRydWUsIHJlYWRQYXRoKGRvY3VtZW50KSlcbiAgICBjb25zdCBmaWxlID0gbmV3IEhvc3RGaWxlKHsgdmFsdWU6IHJ1bi52YWx1ZSgpID8/IHRleHQsIHBhdGg6IHJlYWRQYXRoKGRvY3VtZW50KSB9KVxuICAgIHZvaWQgZmluaXNoUnVuKHsgcnVuLCBob3N0czogdGhpcy4jaG9zdHMsIGZpbGUsIHN5bmM6IHRydWUsIGNhbGw6IFwicHJvY2Vzc1wiIH0pXG4gICAgcmV0dXJuIHdpdGhQYXRoKG1lcmdlRGF0YShydW4ucmVzdWx0KCksIGZpbGUuZGF0YSksIGRvY3VtZW50KVxuICB9XG5cbiAgLy8gT25jZSBvbmx5OiBgZnJlZXplYCBib3Jyb3dzIHRoZSBuYXRpdmUgcGlwZWxpbmUgbXV0YWJseSwgd2hpY2ggbmFwaSByZWZ1c2VzIHdoaWxlIGFuXG4gIC8vIGFzeW5jIGBwcm9jZXNzYCBzdGlsbCBob2xkcyBpdFxuICAjZnJlZXplTmF0aXZlKCkge1xuICAgIGlmICh0aGlzLiNmcm96ZW4pIHJldHVyblxuICAgIHRoaXMuI2Zyb3plbiA9IHRydWVcbiAgICB0aGlzLiNuYXRpdmUuZnJlZXplKClcbiAgfVxuXG4gIC8vIHVuaWZpZWQncyBhZGRQbHVnaW46IHRoZSBzYW1lIGF0dGFjaGVyIGlzIG9uZSBwbHVnaW4sIGl0cyBvYmplY3Qgb3B0aW9ucyBtZXJnZWRcbiAgI3JlZ2lzdGVyKGF0dGFjaGVyOiBBdHRhY2hlciwgcGFyYW1ldGVyczogdW5rbm93bltdKTogSG9zdEVudHJ5IHtcbiAgICBsZXQgaWQgPSB0aGlzLiNpZHMuZ2V0KGF0dGFjaGVyKVxuICAgIGlmIChpZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZCA9IHRoaXMuI2lkcy5zaXplXG4gICAgICB0aGlzLiNpZHMuc2V0KGF0dGFjaGVyLCBpZClcbiAgICAgIHRoaXMuI2hvc3RzLnNldChpZCwgeyBhdHRhY2hlciwgcGFyYW1ldGVycyB9KVxuICAgICAgcmV0dXJuIFt7IGhvc3Q6IGlkIH0sIHBhcmFtZXRlcnNbMF0gIT09IGZhbHNlXVxuICAgIH1cbiAgICBjb25zdCBob3N0ID0gdGhpcy4jaG9zdHMuZ2V0KGlkKVxuICAgIGlmICghaG9zdCB8fCBwYXJhbWV0ZXJzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIFt7IGhvc3Q6IGlkIH1dXG4gICAgY29uc3QgW3ByaW1hcnksIC4uLnJlc3RdID0gcGFyYW1ldGVyc1xuICAgIGNvbnN0IG1lcmdlZCA9XG4gICAgICBpc1BsYWluT2JqZWN0KGhvc3QucGFyYW1ldGVyc1swXSkgJiYgaXNQbGFpbk9iamVjdChwcmltYXJ5KVxuICAgICAgICA/IG1lcmdlT3B0aW9ucyhob3N0LnBhcmFtZXRlcnNbMF0sIHByaW1hcnkpXG4gICAgICAgIDogcHJpbWFyeVxuICAgIGhvc3QucGFyYW1ldGVycyA9IFttZXJnZWQsIC4uLnJlc3RdXG4gICAgcmV0dXJuIFt7IGhvc3Q6IGlkIH0sIG1lcmdlZCAhPT0gZmFsc2VdXG4gIH1cblxuICAvLyBBdHRhY2hlcnMgcnVuIG9uY2UsIGJlZm9yZSB0aGUgbmF0aXZlIHBpcGVsaW5lIGZyZWV6ZXMsIHNvIHRoZXkgY2FuIHN0aWxsIHNldCBkYXRhO1xuICAvLyB3aGV0aGVyIGFueSBKYXZhU2NyaXB0IHBsdWdpbiBpcyBvbiBkZWNpZGVzIGlmIHJ1bnMgcGF1c2UgZm9yIHRoZW1cbiAgI2F0dGFjaCgpIHtcbiAgICBpZiAoIXRoaXMuI2F0dGFjaGVkKSB7XG4gICAgICB0aGlzLiNhdHRhY2hlZCA9IHRydWVcbiAgICAgIGZvciAoY29uc3QgaWQgb2YgdGhpcy4jbmF0aXZlLmhvc3RzKCkpIHtcbiAgICAgICAgY29uc3QgaG9zdCA9IHRoaXMuI2hvc3RzLmdldChpZClcbiAgICAgICAgaWYgKCFob3N0KSBjb250aW51ZVxuICAgICAgICBjb25zdCBbcHJpbWFyeSwgLi4ucmVzdF0gPSBob3N0LnBhcmFtZXRlcnNcbiAgICAgICAgY29uc3QgcGFyYW1ldGVycyA9IHByaW1hcnkgPT09IHRydWUgPyBbdW5kZWZpbmVkLCAuLi5yZXN0XSA6IGhvc3QucGFyYW1ldGVyc1xuICAgICAgICBjb25zdCB0cmFuc2Zvcm1lcjogdW5rbm93biA9IFJlZmxlY3QuYXBwbHkoaG9zdC5hdHRhY2hlciwgdGhpcywgcGFyYW1ldGVycylcbiAgICAgICAgaWYgKGlzVHJhbnNmb3JtZXIodHJhbnNmb3JtZXIpKSBob3N0LnRyYW5zZm9ybWVyID0gdHJhbnNmb3JtZXJcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuI25hdGl2ZS5ob3N0cygpLmxlbmd0aCA+IDBcbiAgfVxufVxuXG4vLyBBIHBsdWdpbiB3aXRob3V0IHRoZSBtYXJrZXIgaW5mZXJzIGB1bmtub3duYCBmcm9tIHRoZSBvcHRpb25hbCBrZXksIGtlZXBpbmcgdGhlIHRyZWVcbnR5cGUgUGFyc2VkVHJlZTxWYWx1ZSwgQ3VycmVudD4gPVxuICBWYWx1ZSBleHRlbmRzIFBhcnNlcjxpbmZlciBQYXJzZWQ+XG4gICAgPyBQYXJzZWQgZXh0ZW5kcyBVbmlzdE5vZGVcbiAgICAgID8gUGFyc2VkXG4gICAgICA6IEN1cnJlbnRcbiAgICA6IEN1cnJlbnRcblxuZnVuY3Rpb24gcmVhZFZhbHVlKGZpbGU6IENvbXBhdGlibGUgfCB1bmRlZmluZWQpIHtcbiAgcmV0dXJuIHR5cGVvZiBmaWxlID09PSBcInN0cmluZ1wiID8gZmlsZSA6IGZpbGU/LnZhbHVlXG59XG5cbmZ1bmN0aW9uIHJlYWRQYXRoKGZpbGU6IENvbXBhdGlibGUgfCB1bmRlZmluZWQpIHtcbiAgcmV0dXJuIHR5cGVvZiBmaWxlID09PSBcInN0cmluZ1wiID8gdW5kZWZpbmVkIDogZmlsZT8ucGF0aFxufVxuXG4vLyBOYXRpdmUgc3RhZ2VzJyBkYXRhIGZpcnN0LCB0aGVuIHdoYXQgSmF2YVNjcmlwdCBwbHVnaW5zIHN0b3JlZCBvdmVyIGl0XG5mdW5jdGlvbiBtZXJnZURhdGEocmVzdWx0OiBWRmlsZSwgZGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBWRmlsZSB7XG4gIHJldHVybiB7IC4uLnJlc3VsdCwgZGF0YTogeyAuLi5yZXN1bHQuZGF0YSwgLi4uZGF0YSB9IH1cbn1cblxuZnVuY3Rpb24gd2l0aFBhdGgoZmlsZTogVkZpbGUsIGRvY3VtZW50OiBDb21wYXRpYmxlKSB7XG4gIGNvbnN0IHBhdGggPSByZWFkUGF0aChkb2N1bWVudClcbiAgcmV0dXJuIHBhdGggPT09IHVuZGVmaW5lZCA/IGZpbGUgOiB7IC4uLmZpbGUsIHBhdGggfVxufVxuIl19
|
|
183
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzc29yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbW9kZWxzL3Byb2Nlc3Nvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sOEJBQThCLENBQUE7QUFDekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQTtBQUN6RSxPQUFPLEVBQWtCLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFBO0FBQzFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUE7QUFNL0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFFbEQ7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLFNBQVM7SUFDcEIsT0FBTyxDQUFnQjtJQUN2QixJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQW9CLENBQUE7SUFDbEMsTUFBTSxHQUFHLElBQUksR0FBRyxFQUFnQixDQUFBO0lBQ2hDLFNBQVMsR0FBRyxLQUFLLENBQUE7SUFDakIsT0FBTyxHQUFHLEtBQUssQ0FBQTtJQUVmLFlBQVksTUFBc0I7UUFDaEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUE7SUFDdkIsQ0FBQztJQVdELG1GQUFtRjtJQUNuRixHQUFHLENBQ0QsS0FBNEQsRUFDNUQsR0FBRyxPQUFrQjtRQUVyQixJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQ2xELE9BQU8sSUFBSSxDQUFBO1FBQ2IsQ0FBQztRQUNELE1BQU0sUUFBUSxHQUFHLENBQUMsUUFBa0IsRUFBRSxVQUFxQixFQUFFLEVBQUUs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LFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFBO0FBQzFELENBQUM7QUFFRCxzRkFBc0Y7QUFDdEYsdUZBQXVGO0FBQ3ZGLFNBQVMsVUFBVSxDQUFDLE1BQWtCLEVBQUUsUUFBb0IsRUFBRSxJQUFlO0lBQzNFLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUMvQixNQUFNLEtBQUssR0FBRyxJQUFJLEVBQUUsUUFBUSxJQUFJLEVBQUUsQ0FBQTtJQUNsQyxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUTtTQUM3QixLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztTQUNuQixHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ3pELE1BQU0sSUFBSSxHQUFVO1FBQ2xCLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSztRQUNuQixRQUFRLEVBQUUsQ0FBQyxHQUFHLEtBQUssRUFBRSxHQUFHLFFBQVEsQ0FBQztRQUNqQyxJQUFJLEVBQUUsRUFBRSxHQUFHLE1BQU0sQ0FBQyxJQUFJLEVBQUUsR0FBRyxJQUFJLEVBQUUsSUFBSSxFQUFFO0tBQ3hDLENBQUE7SUFDRCxPQUFPLElBQUksS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQTtBQUN0RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNBdHRhY2hlciB9IGZyb20gXCIuLi9hY3Rpb25zL2F0dGFjaGVyL2NoZWNrLnRzXCJcbmltcG9ydCB7IGlzUGxhaW5PYmplY3QsIG1lcmdlT3B0aW9ucyB9IGZyb20gXCIuLi9hY3Rpb25zL29wdGlvbnMvbWVyZ2UudHNcIlxuaW1wb3J0IHsgdHlwZSBIb3N0RW50cnksIG1hcFBsdWdnYWJsZSB9IGZyb20gXCIuLi9hY3Rpb25zL3BsdWdnYWJsZS9tYXAudHNcIlxuaW1wb3J0IHsgZmluaXNoUnVuIH0gZnJvbSBcIi4uL2FjdGlvbnMvcnVuL2ZpbmlzaC50c1wiXG5pbXBvcnQgeyBpc1RyYW5zZm9ybWVyIH0gZnJvbSBcIi4uL2FjdGlvbnMvdHJhbnNmb3JtZXIvY2hlY2sudHNcIlxuaW1wb3J0IHR5cGUgeyBOb2RlIGFzIFVuaXN0Tm9kZSB9IGZyb20gXCJ1bmlzdFwiXG5pbXBvcnQgdHlwZSB7IE5hdGl2ZUZpbGUsIE5hdGl2ZVBpcGVsaW5lIH0gZnJvbSBcIi4vYWRkb24udHNcIlxuaW1wb3J0IHR5cGUgeyBDb21wYXRpYmxlLCBOb2RlLCBWRmlsZSB9IGZyb20gXCIuL2ZpbGUudHNcIlxuaW1wb3J0IHR5cGUgeyBIb3N0IH0gZnJvbSBcIi4vaG9zdC50c1wiXG5pbXBvcnQgdHlwZSB7IEF0dGFjaGVyLCBQYXJzZXIsIFBsdWdnYWJsZSwgUGx1Z2dhYmxlTGlzdCwgUHJlc2V0IH0gZnJvbSBcIi4vcGx1Z2luLnRzXCJcbmltcG9ydCB7IEhvc3RGaWxlLCBIb3N0TWVzc2FnZSB9IGZyb20gXCIuL3ZmaWxlLnRzXCJcblxuLyoqXG4gKiB1bmlmaWVkJ3MgcHJvY2Vzc29yIG92ZXIgdGhlIG5hdGl2ZSBwaXBlbGluZTsgZXZlcnkgY2FsbCBpcyB0aGUgY3JhdGUncywgZXhjZXB0IHRoYXRcbiAqIEphdmFTY3JpcHQgcGx1Z2lucyBydW4gaGVyZSB3aGVuIGEgcnVuIHBhdXNlcyBiZWZvcmUgdGhlbS5cbiAqL1xuZXhwb3J0IGNsYXNzIFByb2Nlc3NvcjxUcmVlIGV4dGVuZHMgVW5pc3ROb2RlID0gTm9kZT4ge1xuICAjbmF0aXZlOiBOYXRpdmVQaXBlbGluZVxuICAjaWRzID0gbmV3IE1hcDxBdHRhY2hlciwgbnVtYmVyPigpXG4gICNob3N0cyA9IG5ldyBNYXA8bnVtYmVyLCBIb3N0PigpXG4gICNhdHRhY2hlZCA9IGZhbHNlXG4gICNmcm96ZW4gPSBmYWxzZVxuXG4gIGNvbnN0cnVjdG9yKG5hdGl2ZTogTmF0aXZlUGlwZWxpbmUpIHtcbiAgICB0aGlzLiNuYXRpdmUgPSBuYXRpdmVcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBwbHVnaW4sIGEgbGlzdCBvZiB0aGVtIG9yIGEgcHJlc2V0OyBhIHBsdWdpbiB1c2VkIGFnYWluIGlzIHJlY29uZmlndXJlZC4gQVxuICAgKiBKYXZhU2NyaXB0IHBsdWdpbiBpcyBhbiBhdHRhY2hlciwgY2FsbGVkIHdpdGggdGhlIHByb2Nlc3NvciBhbmQgaXRzIG9wdGlvbnMgYXQgZnJlZXplLlxuICAgKiBBIHBhcnNlciwgc3VjaCBhcyBgbWQucGFyc2UoKWAsIHR5cGVzIHRoZSB0cmVlIGBwYXJzZWAgcmV0dXJucy5cbiAgICovXG4gIHVzZTxWYWx1ZSBleHRlbmRzIFBsdWdnYWJsZSB8IFBsdWdnYWJsZUxpc3QgfCBQcmVzZXQgfCBudWxsIHwgdW5kZWZpbmVkPihcbiAgICB2YWx1ZTogVmFsdWUsXG4gICAgLi4ub3B0aW9uczogdW5rbm93bltdXG4gICk6IFByb2Nlc3NvcjxQYXJzZWRUcmVlPFZhbHVlLCBUcmVlPj5cbiAgLy8gYSBwYXJzZXIgcmV0eXBlcyB0aGlzIHNhbWUgcHJvY2Vzc29yOiB0aGUgdHJlZSBpdCBwYXJzZXMgbGl2ZXMgaW4gdGhlIHR5cGUgYWxvbmVcbiAgdXNlKFxuICAgIHZhbHVlOiBQbHVnZ2FibGUgfCBQbHVnZ2FibGVMaXN0IHwgUHJlc2V0IHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgICAuLi5vcHRpb25zOiB1bmtub3duW11cbiAgKTogUHJvY2Vzc29yPFVuaXN0Tm9kZT4ge1xuICAgIGlmIChpc0F0dGFjaGVyKHZhbHVlKSkge1xuICAgICAgdGhpcy4jbmF0aXZlLnVzZShbdGhpcy4jcmVnaXN0ZXIodmFsdWUsIG9wdGlvbnMpXSlcbiAgICAgIHJldHVybiB0aGlzXG4gICAgfVxuICAgIGNvbnN0IHJlZ2lzdGVyID0gKGF0dGFjaGVyOiBBdHRhY2hlciwgcGFyYW1ldGVyczogdW5rbm93bltdKSA9PlxuICAgICAgdGhpcy4jcmVnaXN0ZXIoYXR0YWNoZXIsIHBhcmFtZXRlcnMpXG4gICAgdGhpcy4jbmF0aXZlLnVzZShtYXBQbHVnZ2FibGUodmFsdWUgPz8gbnVsbCwgcmVnaXN0ZXIpLCBvcHRpb25zWzBdKVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKiogQWxsIGRhdGEsIG9yIHRoZSB2YWx1ZSB1bmRlciBga2V5YC4gKi9cbiAgZGF0YSgpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICBkYXRhKGtleTogc3RyaW5nKTogdW5rbm93blxuICAvKiogU2V0IHRoZSB2YWx1ZSB1bmRlciBga2V5YCwgb3IgcmVwbGFjZSBhbGwgZGF0YS4gKi9cbiAgZGF0YShrZXk6IHN0cmluZywgdmFsdWU6IHVua25vd24pOiB0aGlzXG4gIGRhdGEoZGF0YXNldDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiB0aGlzXG4gIGRhdGEoa2V5Pzogc3RyaW5nIHwgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIC4uLnZhbHVlOiB1bmtub3duW10pIHtcbiAgICBpZiAodHlwZW9mIGtleSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgdGhpcy4jbmF0aXZlLnJlcGxhY2VEYXRhKGtleSlcbiAgICAgIHJldHVybiB0aGlzXG4gICAgfVxuICAgIGlmIChrZXkgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLiNuYXRpdmUuc2V0RGF0YShrZXksIHZhbHVlWzBdKVxuICAgICAgcmV0dXJuIHRoaXNcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuI25hdGl2ZS5kYXRhKGtleSlcbiAgfVxuXG4gIC8qKiBBdHRhY2ggZXZlcnkgcGx1Z2luOyBsYXRlciBgdXNlYCBhbmQgYGRhdGFgIHNldHRlcnMgZmFpbC4gKi9cbiAgZnJlZXplKCkge1xuICAgIHRoaXMuI2F0dGFjaCgpXG4gICAgdGhpcy4jZnJlZXplTmF0aXZlKClcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqIFBhcnNlIGEgZG9jdW1lbnQgaW50byBhIHRyZWUuICovXG4gIHBhcnNlKGRvY3VtZW50OiBDb21wYXRpYmxlKSB7XG4gICAgdGhpcy4jYXR0YWNoKClcbiAgICBjb25zdCB0cmVlOiBUcmVlID0gSlNPTi5wYXJzZSh0aGlzLiNuYXRpdmUucGFyc2UocmVhZFZhbHVlKGRvY3VtZW50KSA/PyBcIlwiKSlcbiAgICByZXR1cm4gdHJlZVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1biB0aGUgdHJhbnNmb3JtcywgZmluaXNoaW5nIGFzeW5jaHJvbm91cyBzdGFnZXM7IGBmaWxlYCwgdGhlIHRleHQgYHRyZWVgIHdhcyBwYXJzZWRcbiAgICogZnJvbSwgbGV0cyBicmlkZ2VzIHJlYWQgaXQgYW5kIGtlZXBzIHBvc2l0aW9ucyBpbiB0aGUgcmVzdWx0LlxuICAgKi9cbiAgYXN5bmMgcnVuKHRyZWU6IFVuaXN0Tm9kZSwgZmlsZT86IENvbXBhdGlibGUpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHJlYWRWYWx1ZShmaWxlKVxuICAgIGlmICghdGhpcy4jYXR0YWNoKCkpIHJldHVybiByZWFkTm9kZSh0aGlzLiNuYXRpdmUucnVuKEpTT04uc3RyaW5naWZ5KHRyZWUpLCB2YWx1ZSkpXG4gICAgY29uc3QgcnVuID0gdGhpcy4jbmF0aXZlLnN0YXJ0UnVuKEpTT04uc3RyaW5naWZ5KHRyZWUpLCB2YWx1ZSwgZmFsc2UpXG4gICAgY29uc3QgaG9zdCA9IG5ldyBIb3N0RmlsZSh7IHZhbHVlLCBwYXRoOiByZWFkUGF0aChmaWxlKSB9KVxuICAgIGF3YWl0IGZpbmlzaFJ1bih7IHJ1biwgaG9zdHM6IHRoaXMuI2hvc3RzLCBmaWxlOiBob3N0LCBzeW5jOiBmYWxzZSwgY2FsbDogXCJydW5cIiB9KVxuICAgIHJldHVybiByZWFkTm9kZShydW4ucmVzdWx0KCkpXG4gIH1cblxuICAvKiogUnVuIHRoZSB0cmFuc2Zvcm1zOyBmYWlscyB3aXRoIGBhc3luYy1pbi1zeW5jYCBvbiBhbiBhc3luY2hyb25vdXMgc3RhZ2UuICovXG4gIHJ1blN5bmModHJlZTogVW5pc3ROb2RlLCBmaWxlPzogQ29tcGF0aWJsZSkge1xuICAgIGNvbnN0IHZhbHVlID0gcmVhZFZhbHVlKGZpbGUpXG4gICAgaWYgKCF0aGlzLiNhdHRhY2goKSlcbiAgICAgIHJldHVybiByZWFkTm9kZSh0aGlzLiNuYXRpdmUucnVuU3luYyhKU09OLnN0cmluZ2lmeSh0cmVlKSwgdmFsdWUpKVxuICAgIGNvbnN0IHJ1biA9IHRoaXMuI25hdGl2ZS5zdGFydFJ1bihKU09OLnN0cmluZ2lmeSh0cmVlKSwgdmFsdWUsIHRydWUpXG4gICAgY29uc3QgaG9zdCA9IG5ldyBIb3N0RmlsZSh7IHZhbHVlLCBwYXRoOiByZWFkUGF0aChmaWxlKSB9KVxuICAgIHZvaWQgZmluaXNoUnVuKHsgcnVuLCBob3N0czogdGhpcy4jaG9zdHMsIGZpbGU6IGhvc3QsIHN5bmM6IHRydWUsIGNhbGw6IFwicnVuXCIgfSlcbiAgICByZXR1cm4gcmVhZE5vZGUocnVuLnJlc3VsdCgpKVxuICB9XG5cbiAgLyoqIENvbXBpbGUgYSB0cmVlLCBydW5uaW5nIG5vIHRyYW5zZm9ybS4gKi9cbiAgc3RyaW5naWZ5KHRyZWU6IFVuaXN0Tm9kZSkge1xuICAgIHRoaXMuI2F0dGFjaCgpXG4gICAgcmV0dXJuIHRoaXMuI25hdGl2ZS5zdHJpbmdpZnkoSlNPTi5zdHJpbmdpZnkodHJlZSkpXG4gIH1cblxuICAvKiogUGFyc2UsIHJ1biBhbmQgY29tcGlsZSBhIGRvY3VtZW50LCBmaW5pc2hpbmcgYXN5bmNocm9ub3VzIHN0YWdlcy4gKi9cbiAgYXN5bmMgcHJvY2Vzcyhkb2N1bWVudDogQ29tcGF0aWJsZSk6IFByb21pc2U8VkZpbGU+IHtcbiAgICBjb25zdCB0ZXh0ID0gcmVhZFZhbHVlKGRvY3VtZW50KSA/PyBcIlwiXG4gICAgaWYgKCF0aGlzLiNhdHRhY2goKSkge1xuICAgICAgdGhpcy4jZnJlZXplTmF0aXZlKClcbiAgICAgIGNvbnN0IG91dGNvbWUgPSBhd2FpdCB0aGlzLiNuYXRpdmUucHJvY2Vzcyh0ZXh0LCByZWFkUGF0aChkb2N1bWVudCkpXG4gICAgICBpZiAob3V0Y29tZS5lcnJvcilcbiAgICAgICAgdGhyb3cgT2JqZWN0LmFzc2lnbihuZXcgRXJyb3Iob3V0Y29tZS5lcnJvci5tZXNzYWdlKSwgb3V0Y29tZS5lcnJvcilcbiAgICAgIGlmICghb3V0Y29tZS5maWxlKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJwcm9jZXNzIHNldHRsZWQgd2l0aCBuZWl0aGVyIGEgZmlsZSBub3IgYW4gZXJyb3JcIilcbiAgICAgIHJldHVybiByZWFkUmVzdWx0KG91dGNvbWUuZmlsZSwgZG9jdW1lbnQpXG4gICAgfVxuICAgIGNvbnN0IHJ1biA9IHRoaXMuI25hdGl2ZS5zdGFydFByb2Nlc3ModGV4dCwgZmFsc2UsIHJlYWRQYXRoKGRvY3VtZW50KSlcbiAgICBjb25zdCBmaWxlID0gbmV3IEhvc3RGaWxlKHsgdmFsdWU6IHJ1bi52YWx1ZSgpID8/IHRleHQsIHBhdGg6IHJlYWRQYXRoKGRvY3VtZW50KSB9KVxuICAgIGF3YWl0IGZpbmlzaFJ1bih7IHJ1biwgaG9zdHM6IHRoaXMuI2hvc3RzLCBmaWxlLCBzeW5jOiBmYWxzZSwgY2FsbDogXCJwcm9jZXNzXCIgfSlcbiAgICByZXR1cm4gcmVhZFJlc3VsdChyZWFkRmlsZShydW4ucmVzdWx0KCkpLCBkb2N1bWVudCwgZmlsZSlcbiAgfVxuXG4gIC8qKiBQYXJzZSwgcnVuIGFuZCBjb21waWxlIGEgZG9jdW1lbnQ7IGZhaWxzIHdpdGggYGFzeW5jLWluLXN5bmNgIG9uIGFuIGFzeW5jaHJvbm91cyBzdGFnZS4gKi9cbiAgcHJvY2Vzc1N5bmMoZG9jdW1lbnQ6IENvbXBhdGlibGUpOiBWRmlsZSB7XG4gICAgY29uc3QgdGV4dCA9IHJlYWRWYWx1ZShkb2N1bWVudCkgPz8gXCJcIlxuICAgIGlmICghdGhpcy4jYXR0YWNoKCkpXG4gICAgICByZXR1cm4gcmVhZFJlc3VsdCh0aGlzLiNuYXRpdmUucHJvY2Vzc1N5bmModGV4dCwgcmVhZFBhdGgoZG9jdW1lbnQpKSwgZG9jdW1lbnQpXG4gICAgY29uc3QgcnVuID0gdGhpcy4jbmF0aXZlLnN0YXJ0UHJvY2Vzcyh0ZXh0LCB0cnVlLCByZWFkUGF0aChkb2N1bWVudCkpXG4gICAgY29uc3QgZmlsZSA9IG5ldyBIb3N0RmlsZSh7IHZhbHVlOiBydW4udmFsdWUoKSA/PyB0ZXh0LCBwYXRoOiByZWFkUGF0aChkb2N1bWVudCkgfSlcbiAgICB2b2lkIGZpbmlzaFJ1bih7IHJ1biwgaG9zdHM6IHRoaXMuI2hvc3RzLCBmaWxlLCBzeW5jOiB0cnVlLCBjYWxsOiBcInByb2Nlc3NcIiB9KVxuICAgIHJldHVybiByZWFkUmVzdWx0KHJlYWRGaWxlKHJ1bi5yZXN1bHQoKSksIGRvY3VtZW50LCBmaWxlKVxuICB9XG5cbiAgLy8gT25jZSBvbmx5OiBgZnJlZXplYCBib3Jyb3dzIHRoZSBuYXRpdmUgcGlwZWxpbmUgbXV0YWJseSwgd2hpY2ggbmFwaSByZWZ1c2VzIHdoaWxlIGFuXG4gIC8vIGFzeW5jIGBwcm9jZXNzYCBzdGlsbCBob2xkcyBpdFxuICAjZnJlZXplTmF0aXZlKCkge1xuICAgIGlmICh0aGlzLiNmcm96ZW4pIHJldHVyblxuICAgIHRoaXMuI2Zyb3plbiA9IHRydWVcbiAgICB0aGlzLiNuYXRpdmUuZnJlZXplKClcbiAgfVxuXG4gIC8vIHVuaWZpZWQncyBhZGRQbHVnaW46IHRoZSBzYW1lIGF0dGFjaGVyIGlzIG9uZSBwbHVnaW4sIGl0cyBvYmplY3Qgb3B0aW9ucyBtZXJnZWRcbiAgI3JlZ2lzdGVyKGF0dGFjaGVyOiBBdHRhY2hlciwgcGFyYW1ldGVyczogdW5rbm93bltdKTogSG9zdEVudHJ5IHtcbiAgICBsZXQgaWQgPSB0aGlzLiNpZHMuZ2V0KGF0dGFjaGVyKVxuICAgIGlmIChpZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZCA9IHRoaXMuI2lkcy5zaXplXG4gICAgICB0aGlzLiNpZHMuc2V0KGF0dGFjaGVyLCBpZClcbiAgICAgIHRoaXMuI2hvc3RzLnNldChpZCwgeyBhdHRhY2hlciwgcGFyYW1ldGVycyB9KVxuICAgICAgcmV0dXJuIFt7IGhvc3Q6IGlkIH0sIHBhcmFtZXRlcnNbMF0gIT09IGZhbHNlXVxuICAgIH1cbiAgICBjb25zdCBob3N0ID0gdGhpcy4jaG9zdHMuZ2V0KGlkKVxuICAgIGlmICghaG9zdCB8fCBwYXJhbWV0ZXJzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIFt7IGhvc3Q6IGlkIH1dXG4gICAgY29uc3QgW3ByaW1hcnksIC4uLnJlc3RdID0gcGFyYW1ldGVyc1xuICAgIGNvbnN0IG1lcmdlZCA9XG4gICAgICBpc1BsYWluT2JqZWN0KGhvc3QucGFyYW1ldGVyc1swXSkgJiYgaXNQbGFpbk9iamVjdChwcmltYXJ5KVxuICAgICAgICA/IG1lcmdlT3B0aW9ucyhob3N0LnBhcmFtZXRlcnNbMF0sIHByaW1hcnkpXG4gICAgICAgIDogcHJpbWFyeVxuICAgIGhvc3QucGFyYW1ldGVycyA9IFttZXJnZWQsIC4uLnJlc3RdXG4gICAgcmV0dXJuIFt7IGhvc3Q6IGlkIH0sIG1lcmdlZCAhPT0gZmFsc2VdXG4gIH1cblxuICAvLyBBdHRhY2hlcnMgcnVuIG9uY2UsIGJlZm9yZSB0aGUgbmF0aXZlIHBpcGVsaW5lIGZyZWV6ZXMsIHNvIHRoZXkgY2FuIHN0aWxsIHNldCBkYXRhO1xuICAvLyB3aGV0aGVyIGFueSBKYXZhU2NyaXB0IHBsdWdpbiBpcyBvbiBkZWNpZGVzIGlmIHJ1bnMgcGF1c2UgZm9yIHRoZW1cbiAgI2F0dGFjaCgpIHtcbiAgICBpZiAoIXRoaXMuI2F0dGFjaGVkKSB7XG4gICAgICB0aGlzLiNhdHRhY2hlZCA9IHRydWVcbiAgICAgIGZvciAoY29uc3QgaWQgb2YgdGhpcy4jbmF0aXZlLmhvc3RzKCkpIHtcbiAgICAgICAgY29uc3QgaG9zdCA9IHRoaXMuI2hvc3RzLmdldChpZClcbiAgICAgICAgaWYgKCFob3N0KSBjb250aW51ZVxuICAgICAgICBjb25zdCBbcHJpbWFyeSwgLi4ucmVzdF0gPSBob3N0LnBhcmFtZXRlcnNcbiAgICAgICAgY29uc3QgcGFyYW1ldGVycyA9IHByaW1hcnkgPT09IHRydWUgPyBbdW5kZWZpbmVkLCAuLi5yZXN0XSA6IGhvc3QucGFyYW1ldGVyc1xuICAgICAgICBjb25zdCB0cmFuc2Zvcm1lcjogdW5rbm93biA9IFJlZmxlY3QuYXBwbHkoaG9zdC5hdHRhY2hlciwgdGhpcywgcGFyYW1ldGVycylcbiAgICAgICAgaWYgKGlzVHJhbnNmb3JtZXIodHJhbnNmb3JtZXIpKSBob3N0LnRyYW5zZm9ybWVyID0gdHJhbnNmb3JtZXJcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuI25hdGl2ZS5ob3N0cygpLmxlbmd0aCA+IDBcbiAgfVxufVxuXG4vLyBBIHBsdWdpbiB3aXRob3V0IHRoZSBtYXJrZXIgaW5mZXJzIGB1bmtub3duYCBmcm9tIHRoZSBvcHRpb25hbCBrZXksIGtlZXBpbmcgdGhlIHRyZWVcbnR5cGUgUGFyc2VkVHJlZTxWYWx1ZSwgQ3VycmVudD4gPVxuICBWYWx1ZSBleHRlbmRzIFBhcnNlcjxpbmZlciBQYXJzZWQ+XG4gICAgPyBQYXJzZWQgZXh0ZW5kcyBVbmlzdE5vZGVcbiAgICAgID8gUGFyc2VkXG4gICAgICA6IEN1cnJlbnRcbiAgICA6IEN1cnJlbnRcblxuZnVuY3Rpb24gcmVhZE5vZGUodGV4dDogc3RyaW5nKSB7XG4gIGNvbnN0IG5vZGU6IE5vZGUgPSBKU09OLnBhcnNlKHRleHQpXG4gIHJldHVybiBub2RlXG59XG5cbmZ1bmN0aW9uIHJlYWRGaWxlKHRleHQ6IHN0cmluZykge1xuICBjb25zdCBmaWxlOiBOYXRpdmVGaWxlID0gSlNPTi5wYXJzZSh0ZXh0KVxuICByZXR1cm4gZmlsZVxufVxuXG5mdW5jdGlvbiByZWFkVmFsdWUoZmlsZTogQ29tcGF0aWJsZSB8IHVuZGVmaW5lZCkge1xuICByZXR1cm4gdHlwZW9mIGZpbGUgPT09IFwic3RyaW5nXCIgPyBmaWxlIDogZmlsZT8udmFsdWVcbn1cblxuZnVuY3Rpb24gcmVhZFBhdGgoZmlsZTogQ29tcGF0aWJsZSB8IHVuZGVmaW5lZCkge1xuICByZXR1cm4gdHlwZW9mIGZpbGUgPT09IFwic3RyaW5nXCIgPyB1bmRlZmluZWQgOiBmaWxlPy5wYXRoXG59XG5cbi8vIFRoZSBjcmF0ZSdzIG1lc3NhZ2VzIHN0YXJ0IHdpdGggdGhlIGhvc3QgZmlsZSdzLCBpbiBvcmRlcjogdGhlIHBsdWdpbnMnIG93biBvYmplY3RzXG4vLyBzdGF5LCBzbyBgZmF0YWxgLCBgdXJsYCBhbmQgYG5vdGVgIHN1cnZpdmU7IG5hdGl2ZSBkYXRhIGZpcnN0LCBwbHVnaW5zJyBkYXRhIG92ZXIgaXRcbmZ1bmN0aW9uIHJlYWRSZXN1bHQobmF0aXZlOiBOYXRpdmVGaWxlLCBkb2N1bWVudDogQ29tcGF0aWJsZSwgaG9zdD86IEhvc3RGaWxlKTogVkZpbGUge1xuICBjb25zdCBwYXRoID0gcmVhZFBhdGgoZG9jdW1lbnQpXG4gIGNvbnN0IGtub3duID0gaG9zdD8ubWVzc2FnZXMgPz8gW11cbiAgY29uc3QgcmVwb3J0ZWQgPSBuYXRpdmUubWVzc2FnZXNcbiAgICAuc2xpY2Uoa25vd24ubGVuZ3RoKVxuICAgIC5tYXAobWVzc2FnZSA9PiBIb3N0TWVzc2FnZS5mcm9tTWVzc2FnZShtZXNzYWdlLCBwYXRoKSlcbiAgY29uc3QgZmlsZTogVkZpbGUgPSB7XG4gICAgdmFsdWU6IG5hdGl2ZS52YWx1ZSxcbiAgICBtZXNzYWdlczogWy4uLmtub3duLCAuLi5yZXBvcnRlZF0sXG4gICAgZGF0YTogeyAuLi5uYXRpdmUuZGF0YSwgLi4uaG9zdD8uZGF0YSB9LFxuICB9XG4gIHJldHVybiBwYXRoID09PSB1bmRlZmluZWQgPyBmaWxlIDogeyAuLi5maWxlLCBwYXRoIH1cbn1cbiJdfQ==
|
package/build/settings.d.ts
CHANGED
|
@@ -5,10 +5,12 @@ export interface Platform {
|
|
|
5
5
|
target: string;
|
|
6
6
|
/** The addon's file name at the package's root. */
|
|
7
7
|
addon: string;
|
|
8
|
+
/** The C library a Linux addon links against; npm skips the package on the other one. */
|
|
9
|
+
libc?: "glibc" | "musl";
|
|
8
10
|
}
|
|
9
11
|
/** The npm package users install; it pulls in the one platform package that matches. */
|
|
10
12
|
export declare const PACKAGE_NAME = "textlane";
|
|
11
13
|
/** An environment variable that points at an addon to load instead of the installed one. */
|
|
12
14
|
export declare const ADDON_ENV = "TEXTLANE_ADDON";
|
|
13
|
-
/** Every published platform, keyed by `${process.platform}-${process.arch}`. */
|
|
15
|
+
/** Every published platform, keyed by `${process.platform}-${process.arch}`, plus `-musl`. */
|
|
14
16
|
export declare const PLATFORMS: Record<string, Platform>;
|
package/build/settings.js
CHANGED
|
@@ -2,16 +2,27 @@
|
|
|
2
2
|
export const PACKAGE_NAME = "textlane";
|
|
3
3
|
/** An environment variable that points at an addon to load instead of the installed one. */
|
|
4
4
|
export const ADDON_ENV = "TEXTLANE_ADDON";
|
|
5
|
-
/** Every published platform, keyed by `${process.platform}-${process.arch}`. */
|
|
5
|
+
/** Every published platform, keyed by `${process.platform}-${process.arch}`, plus `-musl`. */
|
|
6
6
|
export const PLATFORMS = {
|
|
7
7
|
"linux-x64": createPlatform("linux-x64", "x86_64-unknown-linux-gnu"),
|
|
8
8
|
"linux-arm64": createPlatform("linux-arm64", "aarch64-unknown-linux-gnu"),
|
|
9
|
+
"linux-x64-musl": createPlatform("linux-x64-musl", "x86_64-unknown-linux-musl"),
|
|
10
|
+
"linux-arm64-musl": createPlatform("linux-arm64-musl", "aarch64-unknown-linux-musl"),
|
|
9
11
|
"darwin-x64": createPlatform("darwin-x64", "x86_64-apple-darwin"),
|
|
10
12
|
"darwin-arm64": createPlatform("darwin-arm64", "aarch64-apple-darwin"),
|
|
11
13
|
"win32-x64": createPlatform("win32-x64", "x86_64-pc-windows-msvc"),
|
|
12
14
|
"win32-arm64": createPlatform("win32-arm64", "aarch64-pc-windows-msvc"),
|
|
13
15
|
};
|
|
14
16
|
function createPlatform(key, target) {
|
|
15
|
-
|
|
17
|
+
const platform = {
|
|
18
|
+
packageName: `@textlane/${key}`,
|
|
19
|
+
target,
|
|
20
|
+
addon: "textlane.node",
|
|
21
|
+
};
|
|
22
|
+
if (target.endsWith("-linux-gnu"))
|
|
23
|
+
platform.libc = "glibc";
|
|
24
|
+
if (target.endsWith("-linux-musl"))
|
|
25
|
+
platform.libc = "musl";
|
|
26
|
+
return platform;
|
|
16
27
|
}
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zZXR0aW5ncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFXQSx3RkFBd0Y7QUFDeEYsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLFVBQVUsQ0FBQTtBQUV0Qyw0RkFBNEY7QUFDNUYsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLGdCQUFnQixDQUFBO0FBRXpDLDhGQUE4RjtBQUM5RixNQUFNLENBQUMsTUFBTSxTQUFTLEdBQTZCO0lBQ2pELFdBQVcsRUFBRSxjQUFjLENBQUMsV0FBVyxFQUFFLDBCQUEwQixDQUFDO0lBQ3BFLGFBQWEsRUFBRSxjQUFjLENBQUMsYUFBYSxFQUFFLDJCQUEyQixDQUFDO0lBQ3pFLGdCQUFnQixFQUFFLGNBQWMsQ0FBQyxnQkFBZ0IsRUFBRSwyQkFBMkIsQ0FBQztJQUMvRSxrQkFBa0IsRUFBRSxjQUFjLENBQUMsa0JBQWtCLEVBQUUsNEJBQTRCLENBQUM7SUFDcEYsWUFBWSxFQUFFLGNBQWMsQ0FBQyxZQUFZLEVBQUUscUJBQXFCLENBQUM7SUFDakUsY0FBYyxFQUFFLGNBQWMsQ0FBQyxjQUFjLEVBQUUsc0JBQXNCLENBQUM7SUFDdEUsV0FBVyxFQUFFLGNBQWMsQ0FBQyxXQUFXLEVBQUUsd0JBQXdCLENBQUM7SUFDbEUsYUFBYSxFQUFFLGNBQWMsQ0FBQyxhQUFhLEVBQUUseUJBQXlCLENBQUM7Q0FDeEUsQ0FBQTtBQUVELFNBQVMsY0FBYyxDQUFDLEdBQVcsRUFBRSxNQUFjO0lBQ2pELE1BQU0sUUFBUSxHQUFhO1FBQ3pCLFdBQVcsRUFBRSxhQUFhLEdBQUcsRUFBRTtRQUMvQixNQUFNO1FBQ04sS0FBSyxFQUFFLGVBQWU7S0FDdkIsQ0FBQTtJQUNELElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUM7UUFBRSxRQUFRLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQTtJQUMxRCxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDO1FBQUUsUUFBUSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUE7SUFDMUQsT0FBTyxRQUFRLENBQUE7QUFDakIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgUGxhdGZvcm0ge1xuICAvKiogVGhlIG5wbSBwYWNrYWdlIHRoYXQgY2FycmllcyB0aGlzIHBsYXRmb3JtJ3MgYWRkb24uICovXG4gIHBhY2thZ2VOYW1lOiBzdHJpbmdcbiAgLyoqIFRoZSBSdXN0IHRhcmdldCB0aGUgYWRkb24gaXMgY29tcGlsZWQgZm9yLiAqL1xuICB0YXJnZXQ6IHN0cmluZ1xuICAvKiogVGhlIGFkZG9uJ3MgZmlsZSBuYW1lIGF0IHRoZSBwYWNrYWdlJ3Mgcm9vdC4gKi9cbiAgYWRkb246IHN0cmluZ1xuICAvKiogVGhlIEMgbGlicmFyeSBhIExpbnV4IGFkZG9uIGxpbmtzIGFnYWluc3Q7IG5wbSBza2lwcyB0aGUgcGFja2FnZSBvbiB0aGUgb3RoZXIgb25lLiAqL1xuICBsaWJjPzogXCJnbGliY1wiIHwgXCJtdXNsXCJcbn1cblxuLyoqIFRoZSBucG0gcGFja2FnZSB1c2VycyBpbnN0YWxsOyBpdCBwdWxscyBpbiB0aGUgb25lIHBsYXRmb3JtIHBhY2thZ2UgdGhhdCBtYXRjaGVzLiAqL1xuZXhwb3J0IGNvbnN0IFBBQ0tBR0VfTkFNRSA9IFwidGV4dGxhbmVcIlxuXG4vKiogQW4gZW52aXJvbm1lbnQgdmFyaWFibGUgdGhhdCBwb2ludHMgYXQgYW4gYWRkb24gdG8gbG9hZCBpbnN0ZWFkIG9mIHRoZSBpbnN0YWxsZWQgb25lLiAqL1xuZXhwb3J0IGNvbnN0IEFERE9OX0VOViA9IFwiVEVYVExBTkVfQURET05cIlxuXG4vKiogRXZlcnkgcHVibGlzaGVkIHBsYXRmb3JtLCBrZXllZCBieSBgJHtwcm9jZXNzLnBsYXRmb3JtfS0ke3Byb2Nlc3MuYXJjaH1gLCBwbHVzIGAtbXVzbGAuICovXG5leHBvcnQgY29uc3QgUExBVEZPUk1TOiBSZWNvcmQ8c3RyaW5nLCBQbGF0Zm9ybT4gPSB7XG4gIFwibGludXgteDY0XCI6IGNyZWF0ZVBsYXRmb3JtKFwibGludXgteDY0XCIsIFwieDg2XzY0LXVua25vd24tbGludXgtZ251XCIpLFxuICBcImxpbnV4LWFybTY0XCI6IGNyZWF0ZVBsYXRmb3JtKFwibGludXgtYXJtNjRcIiwgXCJhYXJjaDY0LXVua25vd24tbGludXgtZ251XCIpLFxuICBcImxpbnV4LXg2NC1tdXNsXCI6IGNyZWF0ZVBsYXRmb3JtKFwibGludXgteDY0LW11c2xcIiwgXCJ4ODZfNjQtdW5rbm93bi1saW51eC1tdXNsXCIpLFxuICBcImxpbnV4LWFybTY0LW11c2xcIjogY3JlYXRlUGxhdGZvcm0oXCJsaW51eC1hcm02NC1tdXNsXCIsIFwiYWFyY2g2NC11bmtub3duLWxpbnV4LW11c2xcIiksXG4gIFwiZGFyd2luLXg2NFwiOiBjcmVhdGVQbGF0Zm9ybShcImRhcndpbi14NjRcIiwgXCJ4ODZfNjQtYXBwbGUtZGFyd2luXCIpLFxuICBcImRhcndpbi1hcm02NFwiOiBjcmVhdGVQbGF0Zm9ybShcImRhcndpbi1hcm02NFwiLCBcImFhcmNoNjQtYXBwbGUtZGFyd2luXCIpLFxuICBcIndpbjMyLXg2NFwiOiBjcmVhdGVQbGF0Zm9ybShcIndpbjMyLXg2NFwiLCBcIng4Nl82NC1wYy13aW5kb3dzLW1zdmNcIiksXG4gIFwid2luMzItYXJtNjRcIjogY3JlYXRlUGxhdGZvcm0oXCJ3aW4zMi1hcm02NFwiLCBcImFhcmNoNjQtcGMtd2luZG93cy1tc3ZjXCIpLFxufVxuXG5mdW5jdGlvbiBjcmVhdGVQbGF0Zm9ybShrZXk6IHN0cmluZywgdGFyZ2V0OiBzdHJpbmcpOiBQbGF0Zm9ybSB7XG4gIGNvbnN0IHBsYXRmb3JtOiBQbGF0Zm9ybSA9IHtcbiAgICBwYWNrYWdlTmFtZTogYEB0ZXh0bGFuZS8ke2tleX1gLFxuICAgIHRhcmdldCxcbiAgICBhZGRvbjogXCJ0ZXh0bGFuZS5ub2RlXCIsXG4gIH1cbiAgaWYgKHRhcmdldC5lbmRzV2l0aChcIi1saW51eC1nbnVcIikpIHBsYXRmb3JtLmxpYmMgPSBcImdsaWJjXCJcbiAgaWYgKHRhcmdldC5lbmRzV2l0aChcIi1saW51eC1tdXNsXCIpKSBwbGF0Zm9ybS5saWJjID0gXCJtdXNsXCJcbiAgcmV0dXJuIHBsYXRmb3JtXG59XG4iXX0=
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "textlane",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "Rust-native text processing pipeline — a unified replacement with native and JavaScript plugins",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ast",
|
|
@@ -41,11 +41,13 @@
|
|
|
41
41
|
"node": ">=20"
|
|
42
42
|
},
|
|
43
43
|
"optionalDependencies": {
|
|
44
|
-
"@textlane/linux-x64": "0.
|
|
45
|
-
"@textlane/linux-arm64": "0.
|
|
46
|
-
"@textlane/
|
|
47
|
-
"@textlane/
|
|
48
|
-
"@textlane/
|
|
49
|
-
"@textlane/
|
|
44
|
+
"@textlane/linux-x64": "0.5.0",
|
|
45
|
+
"@textlane/linux-arm64": "0.5.0",
|
|
46
|
+
"@textlane/linux-x64-musl": "0.5.0",
|
|
47
|
+
"@textlane/linux-arm64-musl": "0.5.0",
|
|
48
|
+
"@textlane/darwin-x64": "0.5.0",
|
|
49
|
+
"@textlane/darwin-arm64": "0.5.0",
|
|
50
|
+
"@textlane/win32-x64": "0.5.0",
|
|
51
|
+
"@textlane/win32-arm64": "0.5.0"
|
|
50
52
|
}
|
|
51
53
|
}
|
|
@@ -59,7 +59,7 @@ const file = await textlane()
|
|
|
59
59
|
.use(html.stringify({ allowDangerousHtml: true }))
|
|
60
60
|
.process("# hi")
|
|
61
61
|
file.value // "<h1>hi</h1>"
|
|
62
|
-
file.messages //
|
|
62
|
+
file.messages // vfile-messages: reason, ruleId, source, place, line, column, fatal
|
|
63
63
|
```
|
|
64
64
|
|
|
65
65
|
A domain function returns a descriptor, `{ name: "md.toHtml", options }`, typed from the
|
|
@@ -91,7 +91,11 @@ file["value"] # "<h1>hi</h1>"
|
|
|
91
91
|
Functions are snake_case (`md.to_html`, `nl.indefinite_article`); their options stay the
|
|
92
92
|
camelCase keys the plugin takes, typed as `TypedDict`s. `process(text)` and `run(tree)`
|
|
93
93
|
return directly; `await processor.aprocess(text)` and `await processor.arun(tree)` are their
|
|
94
|
-
coroutines. A file and a tree are dicts
|
|
94
|
+
coroutines. A file and a tree are dicts: after `use(md.parse())`, `html.parse()` or
|
|
95
|
+
`nl.parse()`, `parse` is typed as the `Root` of `textlane.mdast`, `textlane.hast` or
|
|
96
|
+
`textlane.nlcst`, `TypedDict`s named as `@types/mdast`, `hast` and `nlcst` name them (MDX's
|
|
97
|
+
`data.estree` as `textlane.estree.Program`); narrow by comparing `node["type"]`, since a
|
|
98
|
+
checker does not narrow on `"key" in node`. Without Python plugins, `process` releases the GIL:
|
|
95
99
|
process many documents through one frozen processor from a thread pool, or `asyncio.gather`
|
|
96
100
|
their `aprocess` calls.
|
|
97
101
|
|