textlane 0.1.0 → 0.2.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.
@@ -75,6 +75,11 @@ export interface ExternalLinksOptions {
75
75
  }
76
76
  /** Tokens: a list, or one string of them separated by white space. */
77
77
  export type Tokens = string | string[];
78
+ /** `html.extractToc`: the headings, nested by rank, as the file's `data.toc`, as @stefanprobst/rehype-extract-toc stores them. */
79
+ export interface ExtractTocOptions {
80
+ /** Attributes, such as `data-toc-hidden`, that keep a heading out of the table of contents; what would nest under it nests under the heading before. @default [] */
81
+ skip?: string[];
82
+ }
78
83
  /** `html.highlight`: code blocks colored as Shiki colors them, natively by giallo; options named as @shikijs/rehype names them. */
79
84
  export interface HighlightOptions {
80
85
  /** The theme of each color mode, `light` first, as `{"light": …, "dark": …}`. */
@@ -95,6 +100,8 @@ export interface HighlightOptions {
95
100
  metaProperty?: string | null;
96
101
  /** The transformers of @shikijs/transformers to run, in order, by name or with options. */
97
102
  transformers?: HighlightTransformer[];
103
+ /** Lines at least this long, in UTF-16 units, are left one plain token as Shiki's own option leaves them; 2,000 when left out, where Shiki has no limit, since a grammar's time grows with the square of a line's length. `0` lifts it. */
104
+ tokenizeMaxLineLength?: number | null;
98
105
  }
99
106
  /** A replacement color, or a theme's own replacements. */
100
107
  export type ColorReplacement = string | Record<string, string>;
@@ -103,7 +110,7 @@ export type InlineCode = "tailing-curly-colon";
103
110
  /** A transformer of @shikijs/transformers: its name alone, or its name and options. */
104
111
  export type HighlightTransformer = TransformerName | ConfiguredTransformer;
105
112
  /** The transformers `html.highlight` runs natively. */
106
- export type TransformerName = "notationDiff" | "notationFocus" | "notationHighlight" | "notationErrorLevel" | "metaHighlight" | "renderLineNumber";
113
+ export type TransformerName = "notationDiff" | "notationFocus" | "notationHighlight" | "notationErrorLevel" | "metaHighlight" | "metaWordHighlight" | "renderLineNumber";
107
114
  /** A transformer with its options, as @shikijs/transformers names them. */
108
115
  export type ConfiguredTransformer = {
109
116
  name: "notationDiff";
@@ -130,6 +137,9 @@ export type ConfiguredTransformer = {
130
137
  name: "metaHighlight";
131
138
  className?: Classes | null;
132
139
  zeroIndexed?: boolean;
140
+ } | {
141
+ name: "metaWordHighlight";
142
+ className?: Classes | null;
133
143
  } | {
134
144
  name: "renderLineNumber";
135
145
  classLineNumber?: Classes | null;
@@ -237,7 +247,7 @@ export declare function externalLinks(options?: ExternalLinksOptions): Plugin<"h
237
247
  /** The `html.unwrapImages` plugin. */
238
248
  export declare function unwrapImages(): Plugin<"html.unwrapImages">;
239
249
  /** The `html.extractToc` plugin. */
240
- export declare function extractToc(): Plugin<"html.extractToc">;
250
+ export declare function extractToc(options?: ExtractTocOptions): Plugin<"html.extractToc", ExtractTocOptions>;
241
251
  /** The `html.highlight` plugin. */
242
252
  export declare function highlight(options?: HighlightOptions): Plugin<"html.highlight", HighlightOptions>;
243
253
  /** The `html.katex` plugin. */
@@ -40,8 +40,10 @@ export function unwrapImages() {
40
40
  return { name: "html.unwrapImages" };
41
41
  }
42
42
  /** The `html.extractToc` plugin. */
43
- export function extractToc() {
44
- return { name: "html.extractToc" };
43
+ export function extractToc(options) {
44
+ if (options === undefined)
45
+ return { name: "html.extractToc" };
46
+ return { name: "html.extractToc", options };
45
47
  }
46
48
  /** The `html.highlight` plugin. */
47
49
  export function highlight(options) {
@@ -71,4 +73,4 @@ export function stringify(options) {
71
73
  return { name: "html.stringify" };
72
74
  return { name: "html.stringify", options };
73
75
  }
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2dlbmVyYXRlZC9odG1sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtFQUErRTtBQTZOL0UsK0JBQStCO0FBQy9CLE1BQU0sVUFBVSxLQUFLLENBQUMsT0FBc0I7SUFDMUMsSUFBSSxPQUFPLEtBQUssU0FBUztRQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLENBQUE7SUFDeEQsT0FBTyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLENBQUE7QUFDeEMsQ0FBQztBQUVELDZCQUE2QjtBQUM3QixNQUFNLFVBQVUsR0FBRyxDQUFDLE9BQW9CO0lBQ3RDLElBQUksT0FBTyxLQUFLLFNBQVM7UUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFBO0lBQ3RELE9BQU8sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxDQUFBO0FBQ3RDLENBQUM7QUFFRCxnQ0FBZ0M7QUFDaEMsTUFBTSxVQUFVLE1BQU0sQ0FBQyxPQUF1QjtJQUM1QyxJQUFJLE9BQU8sS0FBSyxTQUFTO1FBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsQ0FBQTtJQUN6RCxPQUFPLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsQ0FBQTtBQUN6QyxDQUFDO0FBRUQsa0NBQWtDO0FBQ2xDLE1BQU0sVUFBVSxRQUFRLENBQUMsT0FBeUI7SUFDaEQsSUFBSSxPQUFPLEtBQUssU0FBUztRQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLENBQUE7SUFDM0QsT0FBTyxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLENBQUE7QUFDM0MsQ0FBQztBQUVELDhCQUE4QjtBQUM5QixNQUFNLFVBQVUsSUFBSSxDQUFDLE9BQXFCO0lBQ3hDLElBQUksT0FBTyxLQUFLLFNBQVM7UUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxDQUFBO0lBQ3ZELE9BQU8sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxDQUFBO0FBQ3ZDLENBQUM7QUFFRCx1Q0FBdUM7QUFDdkMsTUFBTSxVQUFVLGFBQWEsQ0FBQyxPQUE4QjtJQUMxRCxJQUFJLE9BQU8sS0FBSyxTQUFTO1FBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxvQkFBb0IsRUFBRSxDQUFBO0lBQ2hFLE9BQU8sRUFBRSxJQUFJLEVBQUUsb0JBQW9CLEVBQUUsT0FBTyxFQUFFLENBQUE7QUFDaEQsQ0FBQztBQUVELHNDQUFzQztBQUN0QyxNQUFNLFVBQVUsWUFBWTtJQUMxQixPQUFPLEVBQUUsSUFBSSxFQUFFLG1CQUFtQixFQUFFLENBQUE7QUFDdEMsQ0FBQztBQUVELG9DQUFvQztBQUNwQyxNQUFNLFVBQVUsVUFBVTtJQUN4QixPQUFPLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLENBQUE7QUFDcEMsQ0FBQztBQUVELG1DQUFtQztBQUNuQyxNQUFNLFVBQVUsU0FBUyxDQUFDLE9BQTBCO0lBQ2xELElBQUksT0FBTyxLQUFLLFNBQVM7UUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLENBQUE7SUFDNUQsT0FBTyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsQ0FBQTtBQUM1QyxDQUFDO0FBRUQsK0JBQStCO0FBQy9CLE1BQU0sVUFBVSxLQUFLLENBQUMsT0FBc0I7SUFDMUMsSUFBSSxPQUFPLEtBQUssU0FBUztRQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLENBQUE7SUFDeEQsT0FBTyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLENBQUE7QUFDeEMsQ0FBQztBQUVELG9DQUFvQztBQUNwQyxNQUFNLFVBQVUsVUFBVSxDQUFDLE9BQTJCO0lBQ3BELElBQUksT0FBTyxLQUFLLFNBQVM7UUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLENBQUE7SUFDN0QsT0FBTyxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsQ0FBQTtBQUM3QyxDQUFDO0FBRUQsMkNBQTJDO0FBQzNDLE1BQU0sVUFBVSxpQkFBaUI7SUFDL0IsT0FBTyxFQUFFLElBQUksRUFBRSx3QkFBd0IsRUFBRSxDQUFBO0FBQzNDLENBQUM7QUFFRCxtQ0FBbUM7QUFDbkMsTUFBTSxVQUFVLFNBQVMsQ0FBQyxPQUEwQjtJQUNsRCxJQUFJLE9BQU8sS0FBSyxTQUFTO1FBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxDQUFBO0lBQzVELE9BQU8sRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsT0FBTyxFQUFFLENBQUE7QUFDNUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEdlbmVyYXRlZCBieSBgcG5wbSBnZW5lcmF0ZTpiaW5kaW5nc2AgZnJvbSB0aGUgY3JhdGUncyBwbHVnaW5zOyBkbyBub3QgZWRpdC5cblxuaW1wb3J0IHR5cGUgeyBQbHVnaW4gfSBmcm9tIFwiLi4vbW9kZWxzL3BsdWdpbi50c1wiXG5cbi8qKiBgaHRtbC5wYXJzZWA6IEhUTUwgaW50byBoYXN0OyBvcHRpb25zIG5hbWVkIGFzIHJlaHlwZS1wYXJzZSBuYW1lcyB0aGVtLiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYXJzZU9wdGlvbnMge1xuICAvKiogUGFyc2UgYSBmcmFnbWVudCwgYXMgaW4gYSBgdGVtcGxhdGVgLCByYXRoZXIgdGhhbiBhIHdob2xlIGRvY3VtZW50LiBAZGVmYXVsdCBmYWxzZSAqL1xuICBmcmFnbWVudD86IGJvb2xlYW5cbiAgLyoqIFJlcG9ydCBwYXJzZSBlcnJvcnMgYXMgbWVzc2FnZXMgb24gdGhlIGZpbGUuIEBkZWZhdWx0IGZhbHNlICovXG4gIGVtaXRQYXJzZUVycm9ycz86IGJvb2xlYW5cbiAgLyoqIEFkZCB0aGUgcG9zaXRpb25zIG9mIG9wZW5pbmcgYW5kIGNsb3NpbmcgdGFncyBhbmQgYXR0cmlidXRlcyB0byBlbGVtZW50cy4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgdmVyYm9zZT86IGJvb2xlYW5cbn1cblxuLyoqIGBodG1sLnJhd2A6IHJlcGFyc2UgcmF3IEhUTUwgYW5kIGZpeCBuZXN0aW5nIHRocm91Z2ggdGhlIEhUTUwgcGFyc2VyOyBvcHRpb25zIG5hbWVkIGFzIGhhc3QtdXRpbC1yYXcgbmFtZXMgdGhlbS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmF3T3B0aW9ucyB7XG4gIC8qKiBOb2RlIHR5cGVzLCB1bmtub3duIHRvIGhhc3QsIHRvIGNvcHkgdGhyb3VnaCBhcyB0aGV5IGFyZTsgdGhlaXIgY2hpbGRyZW4gYXJlIHJlcGFyc2VkIG9uIHRoZWlyIG93bi4gQGRlZmF1bHQgW10gKi9cbiAgcGFzc1Rocm91Z2g/OiBzdHJpbmdbXVxuICAvKiogRXNjYXBlIHRoZSBvcGVuaW5nIGA8YCBvZiB0aGUgdGFncyBHRk0ncyB0YWdmaWx0ZXIgZGlzYWxsb3dzIGluIHJhdyBub2Rlcy4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgdGFnZmlsdGVyPzogYm9vbGVhblxufVxuXG4vKiogYGh0bWwuZm9ybWF0YDogaW5kZW50IGFuZCBjb2xsYXBzZSB3aGl0ZXNwYWNlIGZvciByZWFkYWJsZSBIVE1MOyBvcHRpb25zIG5hbWVkIGFzIGhhc3QtdXRpbC1mb3JtYXQgbmFtZXMgdGhlbS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRm9ybWF0T3B0aW9ucyB7XG4gIC8qKiBUYWcgbmFtZXMgb2YgZWxlbWVudHMgdG8gcHV0IGEgYmxhbmsgbGluZSBiZXR3ZWVuLCB3aGVuIGJvdGggYXJlIG9uZS4gQGRlZmF1bHQgW10gKi9cbiAgYmxhbmtzPzogc3RyaW5nW11cbiAgLyoqIE9uZSBsZXZlbCBvZiBpbmRlbnRhdGlvbjogYSBudW1iZXIgb2Ygc3BhY2VzIG9yIHRoZSB0ZXh0IGl0c2VsZjsgdHdvIHNwYWNlcyB3aGVuIGxlZnQgb3V0LiAqL1xuICBpbmRlbnQ/OiBJbmRlbnQgfCBudWxsXG4gIC8qKiBJbmRlbnQgdGhlIGZpcnN0IGxldmVsLCB1c3VhbGx5IGA8aHRtbD5gJ3MgYGhlYWRgIGFuZCBgYm9keWA7IGB0cnVlYCB3aGVuIGxlZnQgb3V0LiAqL1xuICBpbmRlbnRJbml0aWFsPzogYm9vbGVhbiB8IG51bGxcbn1cblxuLyoqIE9uZSBsZXZlbCBvZiBpbmRlbnRhdGlvbi4gKi9cbmV4cG9ydCB0eXBlIEluZGVudCA9IG51bWJlciB8IHN0cmluZ1xuXG4vKiogYGh0bWwuc2FuaXRpemVgOiBrZWVwIG9ubHkgd2hhdCBhIHNjaGVtYSBhbGxvd3M7IG9wdGlvbnM6IGhhc3QtdXRpbC1zYW5pdGl6ZSdzIHNjaGVtYSwgd2hlcmUgYSBmaWVsZCBsZWZ0IG91dCBrZWVwcyB0aGUgZGVmYXVsdCBzY2hlbWEncywgd2hpY2ggaXMgR2l0SHViJ3MuICovXG5leHBvcnQgaW50ZXJmYWNlIFNhbml0aXplT3B0aW9ucyB7XG4gIC8qKiBLZWVwIGNvbW1lbnRzLiAqL1xuICBhbGxvd0NvbW1lbnRzPzogYm9vbGVhbiB8IG51bGxcbiAgLyoqIEtlZXAgZG9jdHlwZXMuICovXG4gIGFsbG93RG9jdHlwZXM/OiBib29sZWFuIHwgbnVsbFxuICAvKiogRWxlbWVudHMgYWxsb3dlZCBvbmx5IGluc2lkZSBvbmUgb2YgdGhlc2UgYW5jZXN0b3JzLCBieSB0YWcgbmFtZS4gKi9cbiAgYW5jZXN0b3JzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nW10+IHwgbnVsbFxuICAvKiogUHJvcGVydGllcyBhbGxvd2VkIHBlciB0YWcgbmFtZSwgYCpgIGZvciBldmVyeSBlbGVtZW50OyBhIGxpc3QgbmFtZXMgYSBwcm9wZXJ0eSBhbmQgdGhlIHZhbHVlcyBpdCBtYXkgaGF2ZS4gKi9cbiAgYXR0cmlidXRlcz86IFJlY29yZDxzdHJpbmcsIEF0dHJpYnV0ZURlZmluaXRpb25bXT4gfCBudWxsXG4gIC8qKiBQcm9wZXJ0aWVzIHdob3NlIHZhbHVlcyBnZXQgYGNsb2JiZXJfcHJlZml4YCwgc28gdGhleSBjYW5ub3QgY2xvYmJlciBnbG9iYWxzLiAqL1xuICBjbG9iYmVyPzogc3RyaW5nW10gfCBudWxsXG4gIC8qKiBUaGUgcHJlZml4IG9mIGNsb2JiZXJlZCB2YWx1ZXMuICovXG4gIGNsb2JiZXJQcmVmaXg/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBVUkwgcHJvcGVydGllcyBhbmQgdGhlIHByb3RvY29scyB0aGV5IG1heSB1c2UuICovXG4gIHByb3RvY29scz86IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPiB8IG51bGxcbiAgLyoqIFByb3BlcnRpZXMgc2V0IG9uIGVsZW1lbnRzIHdoYXRldmVyIHRoZXkgaGFkLCBieSB0YWcgbmFtZS4gKi9cbiAgcmVxdWlyZWQ/OiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBQcmltaXRpdmU+PiB8IG51bGxcbiAgLyoqIEVsZW1lbnRzIGRyb3BwZWQgd2l0aCB0aGVpciBjb250ZW50IHJhdGhlciB0aGFuIHVud3JhcHBlZC4gKi9cbiAgc3RyaXA/OiBzdHJpbmdbXSB8IG51bGxcbiAgLyoqIFRoZSBlbGVtZW50cyBrZXB0LiAqL1xuICB0YWdOYW1lcz86IHN0cmluZ1tdIHwgbnVsbFxufVxuXG4vKiogQSBwcm9wZXJ0eSBhIHNhbml0aXplIHNjaGVtYSBhbGxvd3M6IGJ5IG5hbWUsIG9yIGEgbmFtZSBhbmQgaXRzIGFsbG93ZWQgdmFsdWVzLiAqL1xuZXhwb3J0IHR5cGUgQXR0cmlidXRlRGVmaW5pdGlvbiA9IHN0cmluZyB8IFByaW1pdGl2ZVtdXG5cbi8qKiBBIHByaW1pdGl2ZSBwcm9wZXJ0eSB2YWx1ZS4gKi9cbmV4cG9ydCB0eXBlIFByaW1pdGl2ZSA9IGJvb2xlYW4gfCBudW1iZXIgfCBzdHJpbmdcblxuLyoqIGBodG1sLnNsdWdgOiBpZHMgb24gaGVhZGluZ3MsIGZyb20gdGhlaXIgdGV4dDsgb3B0aW9ucyBuYW1lZCBhcyByZWh5cGUtc2x1ZyBuYW1lcyB0aGVtLiAqL1xuZXhwb3J0IGludGVyZmFjZSBTbHVnT3B0aW9ucyB7XG4gIC8qKiBQdXQgYmVmb3JlIGVhY2ggaWQuIEBkZWZhdWx0IFwiXCIgKi9cbiAgcHJlZml4Pzogc3RyaW5nXG59XG5cbi8qKiBgaHRtbC5leHRlcm5hbExpbmtzYDogYHJlbGAsIGB0YXJnZXRgIGFuZCBtb3JlIG9uIGxpbmtzIHRvIG90aGVyIHNpdGVzLCBhcyByZWh5cGUtZXh0ZXJuYWwtbGlua3MgYWRkcyB0aGVtOyBvcHRpb25zIG5hbWVkIGFzIGl0IG5hbWVzIHRoZW0sIEpTT04gdmFsdWVzIG9ubHkuICovXG5leHBvcnQgaW50ZXJmYWNlIEV4dGVybmFsTGlua3NPcHRpb25zIHtcbiAgLyoqIFRoZSBgdGFyZ2V0YCBvZiBlYWNoIGV4dGVybmFsIGxpbmssIHN1Y2ggYXMgYF9ibGFua2AuICovXG4gIHRhcmdldD86IHN0cmluZyB8IG51bGxcbiAgLyoqIFRoZSBgcmVsYCBvZiBlYWNoIGV4dGVybmFsIGxpbms6IGEgbGlzdCwgb3IgdG9rZW5zIHNlcGFyYXRlZCBieSB3aGl0ZSBzcGFjZTsgYG5vZm9sbG93YCB3aGVuIGxlZnQgb3V0IG9yIGVtcHR5LCBub25lIGZvciBhbiBlbXB0eSBsaXN0LiAqL1xuICByZWw/OiBUb2tlbnMgfCBudWxsXG4gIC8qKiBUaGUgcHJvdG9jb2xzIG9mIGFic29sdXRlIFVSTHMgdGhhdCBjb3VudCBhcyBleHRlcm5hbDsgYGh0dHBgIGFuZCBgaHR0cHNgIHdoZW4gbGVmdCBvdXQuIEEgcHJvdG9jb2wtcmVsYXRpdmUgYC8v4oCmYCBVUkwgYWx3YXlzIGNvdW50cy4gKi9cbiAgcHJvdG9jb2xzPzogc3RyaW5nW10gfCBudWxsXG4gIC8qKiBNb3JlIHByb3BlcnRpZXMgZm9yIGVhY2ggZXh0ZXJuYWwgbGluaywgYXMgaGFzdCBuYW1lcyB0aGVtLiAqL1xuICBwcm9wZXJ0aWVzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCBudWxsXG4gIC8qKiBoYXN0IGNvbnRlbnQgYXBwZW5kZWQgdG8gZWFjaCBleHRlcm5hbCBsaW5rIGluIGEgYDxzcGFuPmA6IG9uZSBub2RlIG9yIGEgbGlzdC4gKi9cbiAgY29udGVudD86IHVua25vd25cbiAgLyoqIFRoZSBwcm9wZXJ0aWVzIG9mIHRoYXQgYDxzcGFuPmAuICovXG4gIGNvbnRlbnRQcm9wZXJ0aWVzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCBudWxsXG59XG5cbi8qKiBUb2tlbnM6IGEgbGlzdCwgb3Igb25lIHN0cmluZyBvZiB0aGVtIHNlcGFyYXRlZCBieSB3aGl0ZSBzcGFjZS4gKi9cbmV4cG9ydCB0eXBlIFRva2VucyA9IHN0cmluZyB8IHN0cmluZ1tdXG5cbi8qKiBgaHRtbC5oaWdobGlnaHRgOiBjb2RlIGJsb2NrcyBjb2xvcmVkIGFzIFNoaWtpIGNvbG9ycyB0aGVtLCBuYXRpdmVseSBieSBnaWFsbG87IG9wdGlvbnMgbmFtZWQgYXMgQHNoaWtpanMvcmVoeXBlIG5hbWVzIHRoZW0uICovXG5leHBvcnQgaW50ZXJmYWNlIEhpZ2hsaWdodE9wdGlvbnMge1xuICAvKiogVGhlIHRoZW1lIG9mIGVhY2ggY29sb3IgbW9kZSwgYGxpZ2h0YCBmaXJzdCwgYXMgYHtcImxpZ2h0XCI6IOKApiwgXCJkYXJrXCI6IOKApn1gLiAqL1xuICB0aGVtZXM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IG51bGxcbiAgLyoqIFRoZSBvbmUgdGhlbWUsIHdoZW4gYHRoZW1lc2AgaXMgbm90IGdpdmVuLiAqL1xuICB0aGVtZT86IHN0cmluZyB8IG51bGxcbiAgLyoqIFRoZSBsYW5ndWFnZSBvZiBhIGJsb2NrIHRoYXQgbmFtZXMgbm9uZTsgc3VjaCBhIGJsb2NrIGlzIGxlZnQgYWxvbmUgd2l0aG91dCBpdC4gKi9cbiAgZGVmYXVsdExhbmd1YWdlPzogc3RyaW5nIHwgbnVsbFxuICAvKiogVGhlIGxhbmd1YWdlIG9mIGEgYmxvY2sgbmFtaW5nIG9uZSBTaGlraSBkb2VzIG5vdCBrbm93OyBsZWZ0IGFsb25lIHdpdGhvdXQgaXQuICovXG4gIGZhbGxiYWNrTGFuZ3VhZ2U/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBDb2xvcnMgdG8gcmVwbGFjZSwgYnkgdGhlaXIgbG93ZXJjYXNlIHNwZWxsaW5nOiBhIGNvbG9yIGZvciBldmVyeSB0aGVtZSwgb3IgYSB0aGVtZSdzIG5hbWUgdG8gYSBtYXAgb2YgaXRzIG93bi4gKi9cbiAgY29sb3JSZXBsYWNlbWVudHM/OiBSZWNvcmQ8c3RyaW5nLCBDb2xvclJlcGxhY2VtZW50PlxuICAvKiogQWRkIGBsYW5ndWFnZS08bmFtZT5gIHRvIGVhY2ggaGlnaGxpZ2h0ZWQgYDxjb2RlPmAuIEBkZWZhdWx0IGZhbHNlICovXG4gIGFkZExhbmd1YWdlQ2xhc3M/OiBib29sZWFuXG4gIC8qKiBIaWdobGlnaHQgaW5saW5lIGNvZGUgdG9vLCBieSBob3cgaXQgbmFtZXMgaXRzIGxhbmd1YWdlOiBgdGFpbGluZy1jdXJseS1jb2xvbmAgcmVhZHMgYGAgYGEoKXs6anN9YCBgYC4gKi9cbiAgaW5saW5lPzogSW5saW5lQ29kZSB8IG51bGxcbiAgLyoqIFRoZSBgPHByZT5gIHByb3BlcnR5IHRoYXQgZ2V0cyBhIGJsb2NrJ3MgbWV0YSwgdGhlIHRleHQgYWZ0ZXIgaXRzIGxhbmd1YWdlOyB0aGUgSlNPTiBzdGFuZC1pbiBmb3IgYHBhcnNlTWV0YVN0cmluZzogbWV0YSA9PiAoeyBbbmFtZV06IG1ldGEgfSlgLiAqL1xuICBtZXRhUHJvcGVydHk/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBUaGUgdHJhbnNmb3JtZXJzIG9mIEBzaGlraWpzL3RyYW5zZm9ybWVycyB0byBydW4sIGluIG9yZGVyLCBieSBuYW1lIG9yIHdpdGggb3B0aW9ucy4gKi9cbiAgdHJhbnNmb3JtZXJzPzogSGlnaGxpZ2h0VHJhbnNmb3JtZXJbXVxufVxuXG4vKiogQSByZXBsYWNlbWVudCBjb2xvciwgb3IgYSB0aGVtZSdzIG93biByZXBsYWNlbWVudHMuICovXG5leHBvcnQgdHlwZSBDb2xvclJlcGxhY2VtZW50ID0gc3RyaW5nIHwgUmVjb3JkPHN0cmluZywgc3RyaW5nPlxuXG4vKiogSG93IGlubGluZSBjb2RlIG5hbWVzIGl0cyBsYW5ndWFnZS4gKi9cbmV4cG9ydCB0eXBlIElubGluZUNvZGUgPSBcInRhaWxpbmctY3VybHktY29sb25cIlxuXG4vKiogQSB0cmFuc2Zvcm1lciBvZiBAc2hpa2lqcy90cmFuc2Zvcm1lcnM6IGl0cyBuYW1lIGFsb25lLCBvciBpdHMgbmFtZSBhbmQgb3B0aW9ucy4gKi9cbmV4cG9ydCB0eXBlIEhpZ2hsaWdodFRyYW5zZm9ybWVyID0gVHJhbnNmb3JtZXJOYW1lIHwgQ29uZmlndXJlZFRyYW5zZm9ybWVyXG5cbi8qKiBUaGUgdHJhbnNmb3JtZXJzIGBodG1sLmhpZ2hsaWdodGAgcnVucyBuYXRpdmVseS4gKi9cbmV4cG9ydCB0eXBlIFRyYW5zZm9ybWVyTmFtZSA9IFwibm90YXRpb25EaWZmXCIgfCBcIm5vdGF0aW9uRm9jdXNcIiB8IFwibm90YXRpb25IaWdobGlnaHRcIiB8IFwibm90YXRpb25FcnJvckxldmVsXCIgfCBcIm1ldGFIaWdobGlnaHRcIiB8IFwicmVuZGVyTGluZU51bWJlclwiXG5cbi8qKiBBIHRyYW5zZm9ybWVyIHdpdGggaXRzIG9wdGlvbnMsIGFzIEBzaGlraWpzL3RyYW5zZm9ybWVycyBuYW1lcyB0aGVtLiAqL1xuZXhwb3J0IHR5cGUgQ29uZmlndXJlZFRyYW5zZm9ybWVyID0geyBuYW1lOiBcIm5vdGF0aW9uRGlmZlwiOyBjbGFzc0xpbmVBZGQ/OiBDbGFzc2VzIHwgbnVsbDsgY2xhc3NMaW5lUmVtb3ZlPzogQ2xhc3NlcyB8IG51bGw7IGNsYXNzQWN0aXZlUHJlPzogQ2xhc3NlcyB8IG51bGw7IGNsYXNzQWN0aXZlQ29kZT86IENsYXNzZXMgfCBudWxsIH0gfCB7IG5hbWU6IFwibm90YXRpb25Gb2N1c1wiOyBjbGFzc0FjdGl2ZUxpbmU/OiBDbGFzc2VzIHwgbnVsbDsgY2xhc3NBY3RpdmVQcmU/OiBDbGFzc2VzIHwgbnVsbDsgY2xhc3NBY3RpdmVDb2RlPzogQ2xhc3NlcyB8IG51bGwgfSB8IHsgbmFtZTogXCJub3RhdGlvbkhpZ2hsaWdodFwiOyBjbGFzc0FjdGl2ZUxpbmU/OiBDbGFzc2VzIHwgbnVsbDsgY2xhc3NBY3RpdmVQcmU/OiBDbGFzc2VzIHwgbnVsbDsgY2xhc3NBY3RpdmVDb2RlPzogQ2xhc3NlcyB8IG51bGwgfSB8IHsgbmFtZTogXCJub3RhdGlvbkVycm9yTGV2ZWxcIjsgY2xhc3NNYXA/OiBSZWNvcmQ8c3RyaW5nLCBDbGFzc2VzPiB8IG51bGw7IGNsYXNzQWN0aXZlUHJlPzogQ2xhc3NlcyB8IG51bGw7IGNsYXNzQWN0aXZlQ29kZT86IENsYXNzZXMgfCBudWxsIH0gfCB7IG5hbWU6IFwibWV0YUhpZ2hsaWdodFwiOyBjbGFzc05hbWU/OiBDbGFzc2VzIHwgbnVsbDsgemVyb0luZGV4ZWQ/OiBib29sZWFuIH0gfCB7IG5hbWU6IFwicmVuZGVyTGluZU51bWJlclwiOyBjbGFzc0xpbmVOdW1iZXI/OiBDbGFzc2VzIHwgbnVsbDsgc3RhcnQ/OiBudW1iZXIgfCBudWxsIH1cblxuLyoqIENsYXNzIG5hbWVzOiBhIGxpc3QsIG9yIG9uZSBzdHJpbmcgb2YgdGhlbSBzZXBhcmF0ZWQgYnkgd2hpdGUgc3BhY2UuICovXG5leHBvcnQgdHlwZSBDbGFzc2VzID0gc3RyaW5nIHwgc3RyaW5nW11cblxuLyoqIGBodG1sLmthdGV4YDogbWF0aCByZW5kZXJlZCBhcyByZWh5cGUta2F0ZXggcmVuZGVycyBpdCwgbmF0aXZlbHkgYnkga2F0ZXgtcnM7IG9wdGlvbnMgbmFtZWQgYXMgS2FUZVggbmFtZXMgdGhlbS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgS2F0ZXhPcHRpb25zIHtcbiAgLyoqIFRoZSBtYXJrdXAgdG8gd3JpdGUsIGJvdGggSFRNTCBhbmQgTWF0aE1MIGJ5IGRlZmF1bHQuICovXG4gIG91dHB1dD86IEthdGV4T3V0cHV0IHwgbnVsbFxuICAvKiogUHV0IGVxdWF0aW9uIG51bWJlcnMgb24gdGhlIGxlZnQuIEBkZWZhdWx0IGZhbHNlICovXG4gIGxlcW5vPzogYm9vbGVhblxuICAvKiogQWxpZ24gZGlzcGxheSBtYXRoIHRvIHRoZSBsZWZ0IGluc3RlYWQgb2YgY2VudGVyaW5nIGl0LiBAZGVmYXVsdCBmYWxzZSAqL1xuICBmbGVxbj86IGJvb2xlYW5cbiAgLyoqIFRoZSBjb2xvciBvZiBtYXRoIHRoYXQgZmFpbHMgdG8gcmVuZGVyLCBgI2NjMDAwMGAgYnkgZGVmYXVsdC4gKi9cbiAgZXJyb3JDb2xvcj86IHN0cmluZyB8IG51bGxcbiAgLyoqIE1hY3JvcyBieSBuYW1lLCBlYWNoIHRvIHRoZSBUZVggaXQgZXhwYW5kcyB0bywgYXMgYHtcIlxcXFxSUlwiOiBcIlxcXFxtYXRoYmJ7Un1cIn1gLiBAZGVmYXVsdCB7fSAqL1xuICBtYWNyb3M/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+XG4gIC8qKiBUaGUgdGhpbm5lc3QgYSBydWxlLCBzdWNoIGFzIGEgZnJhY3Rpb24gbGluZSwgaXMgZHJhd24sIGluIGVtcy4gKi9cbiAgbWluUnVsZVRoaWNrbmVzcz86IG51bWJlciB8IG51bGxcbiAgLyoqIExldCBgXFxjb2xvcmAgY29sb3IgdGhlIHRleHQgYWZ0ZXIgaXQsIGFzIExhVGVYIGRvZXMuIEBkZWZhdWx0IGZhbHNlICovXG4gIGNvbG9ySXNUZXh0Q29sb3I/OiBib29sZWFuXG4gIC8qKiBXaGF0IHRvIGRvIHdpdGggaW5wdXQgTGFUZVggd291bGQgcmVqZWN0OiBgdHJ1ZWAgb3IgYFwiZXJyb3JcImAgZmFpbHMgaXQsIGBcIndhcm5cImAgcHJpbnRzIGEgd2FybmluZywgYGZhbHNlYCBvciBgXCJpZ25vcmVcImAgKHRoZSBkZWZhdWx0KSBhY2NlcHRzIGl0LiAqL1xuICBzdHJpY3Q/OiBLYXRleFN0cmljdCB8IG51bGxcbiAgLyoqIEFsbG93IGNvbW1hbmRzIHRoYXQgY2FuIHJ1biB1bnRydXN0ZWQgaW5wdXQsIHN1Y2ggYXMgYFxcaHJlZmAgYW5kIGBcXGluY2x1ZGVncmFwaGljc2AuIEBkZWZhdWx0IGZhbHNlICovXG4gIHRydXN0PzogYm9vbGVhblxuICAvKiogVGhlIGxhcmdlc3QgYSB1c2VyLWdpdmVuIHNpemUgbWF5IGJlLCBpbiBlbXMuICovXG4gIG1heFNpemU/OiBudW1iZXIgfCBudWxsXG4gIC8qKiBIb3cgbWFueSBtYWNybyBleHBhbnNpb25zIG9uZSBmb3JtdWxhIG1heSB0YWtlLCAxMDAwIGJ5IGRlZmF1bHQuICovXG4gIG1heEV4cGFuZD86IG51bWJlciB8IG51bGxcbiAgLyoqIExldCBkZWZpbml0aW9ucyBzdWNoIGFzIGBcXGRlZmAgbGFzdCBwYXN0IHRoZSBmb3JtdWxhIHRoZXkgYXJlIGluLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBnbG9iYWxHcm91cD86IGJvb2xlYW5cbn1cblxuLyoqIFRoZSBtYXJrdXAgS2FUZVggd3JpdGVzLiAqL1xuZXhwb3J0IHR5cGUgS2F0ZXhPdXRwdXQgPSBcImh0bWxcIiB8IFwibWF0aG1sXCIgfCBcImh0bWxBbmRNYXRobWxcIlxuXG4vKiogSG93IHN0cmljdGx5IEthVGVYIGhvbGRzIGlucHV0IHRvIExhVGVYLiAqL1xuZXhwb3J0IHR5cGUgS2F0ZXhTdHJpY3QgPSBib29sZWFuIHwgS2F0ZXhTdHJpY3RNb2RlXG5cbi8qKiBPbmUgbGV2ZWwgb2YgS2FUZVgncyBzdHJpY3RuZXNzLiAqL1xuZXhwb3J0IHR5cGUgS2F0ZXhTdHJpY3RNb2RlID0gXCJpZ25vcmVcIiB8IFwid2FyblwiIHwgXCJlcnJvclwiXG5cbi8qKiBgaHRtbC50b01hcmtkb3duYDogaGFzdCBpbnRvIG1kYXN0OyBvcHRpb25zIG5hbWVkIGFzIGhhc3QtdXRpbC10by1tZGFzdCBuYW1lcyB0aGVtLiAqL1xuZXhwb3J0IGludGVyZmFjZSBUb01hcmtkb3duT3B0aW9ucyB7XG4gIC8qKiBXcmFwIGFsbCBwaHJhc2luZyBjb250ZW50IG9mIHRoZSByb290IGluIHBhcmFncmFwaHMsIGFzIGZvciBhIHdob2xlIGRvY3VtZW50LiBAZGVmYXVsdCBmYWxzZSAqL1xuICBkb2N1bWVudD86IGJvb2xlYW5cbiAgLyoqIENvbGxhcHNlIHdoaXRlc3BhY2UgaG9sZGluZyBhIGxpbmUgZW5kaW5nIHRvIHRoYXQgbGluZSBlbmRpbmcgaW5zdGVhZCBvZiBhIHNwYWNlLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBuZXdsaW5lcz86IGJvb2xlYW5cbiAgLyoqIFRoZSB0ZXh0IG9mIGEgY2hlY2tlZCBjaGVja2JveCBvciByYWRpbywgYFt4XWAgYnkgZGVmYXVsdC4gKi9cbiAgY2hlY2tlZD86IHN0cmluZyB8IG51bGxcbiAgLyoqIFRoZSB0ZXh0IG9mIGFuIHVuY2hlY2tlZCBjaGVja2JveCBvciByYWRpbywgYFsgXWAgYnkgZGVmYXVsdC4gKi9cbiAgdW5jaGVja2VkPzogc3RyaW5nIHwgbnVsbFxuICAvKiogVGhlIHF1b3RlcyBgPHE+YCB1c2VzLCBhbiBvcGVuaW5nIGFuZCBjbG9zaW5nIGNoYXJhY3RlciBlYWNoLCBhbHRlcm5hdGluZyBieSBob3cgZGVlcCBpdCBuZXN0czsgYFwiYCBieSBkZWZhdWx0LiAqL1xuICBxdW90ZXM/OiBzdHJpbmdbXSB8IG51bGxcbn1cblxuLyoqIGBodG1sLnN0cmluZ2lmeWA6IGhhc3QgaW50byBIVE1MOyBvcHRpb25zIG5hbWVkIGFzIGhhc3QtdXRpbC10by1odG1sIG5hbWVzIHRoZW0uICovXG5leHBvcnQgaW50ZXJmYWNlIFN0cmluZ2lmeU9wdGlvbnMge1xuICAvKiogV3JpdGUgcmF3IG5vZGVzIGFzIHRoZXkgYXJlIGluc3RlYWQgb2YgZXNjYXBpbmcgdGhlbS4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgYWxsb3dEYW5nZXJvdXNIdG1sPzogYm9vbGVhblxuICAvKiogTGVhdmUgY2hhcmFjdGVycyB0aGF0IGFyZSBvbmx5IGRhbmdlcm91cyBpbiBzb21lIGNvbnRleHRzLCBzdWNoIGFzIGBgIGAgYGAsIGFzIHRoZXkgYXJlLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBhbGxvd0Rhbmdlcm91c0NoYXJhY3RlcnM/OiBib29sZWFuXG4gIC8qKiBMZWF2ZSBjaGFyYWN0ZXJzIGFzIHRoZXkgYXJlIHdoZXJlIGJyb3dzZXJzIGFjY2VwdCB0aGVtIHRob3VnaCB0aGUgc3BlYyBkb2VzIG5vdC4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgYWxsb3dQYXJzZUVycm9ycz86IGJvb2xlYW5cbiAgLyoqIFdyaXRlIGNvbW1lbnRzIGFzIGJvZ3VzIGNvbW1lbnRzLCBgPD9hPmAuIEBkZWZhdWx0IGZhbHNlICovXG4gIGJvZ3VzQ29tbWVudHM/OiBib29sZWFuXG4gIC8qKiBDbG9zZSBlbXB0eSBmb3JlaWduIGVsZW1lbnRzLCBgPGEgLz5gLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBjbG9zZUVtcHR5RWxlbWVudHM/OiBib29sZWFuXG4gIC8qKiBDbG9zZSB2b2lkIGVsZW1lbnRzLCBgPGJyIC8+YC4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgY2xvc2VTZWxmQ2xvc2luZz86IGJvb2xlYW5cbiAgLyoqIFdyaXRlIGVtcHR5IGF0dHJpYnV0ZXMgYXMgYmFyZSBuYW1lcywgYGFgIHJhdGhlciB0aGFuIGBhPVwiXCJgLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBjb2xsYXBzZUVtcHR5QXR0cmlidXRlcz86IGJvb2xlYW5cbiAgLyoqIExlYXZlIG91dCB0YWdzIHRoZSBIVE1MIHNwZWMgbGV0cyBhIHBhcnNlciBpbXBseS4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgb21pdE9wdGlvbmFsVGFncz86IGJvb2xlYW5cbiAgLyoqIExlYXZlIGF0dHJpYnV0ZSB2YWx1ZXMgdW5xdW90ZWQgd2hlcmUgdGhhdCBpcyBzYWZlLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBwcmVmZXJVbnF1b3RlZD86IGJvb2xlYW5cbiAgLyoqIFRoZSBxdW90ZSBhdHRyaWJ1dGUgdmFsdWVzIGFyZSB3cmFwcGVkIGluOiBgXCJgIG9yIGAnYC4gKi9cbiAgcXVvdGU/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBVc2UgdGhlIG90aGVyIHF1b3RlIHdoZW4gdGhlIHZhbHVlIGhvbGRzIG1vcmUgb2YgdGhlIHByZWZlcnJlZCBvbmUuIEBkZWZhdWx0IGZhbHNlICovXG4gIHF1b3RlU21hcnQ/OiBib29sZWFuXG4gIC8qKiBUaGUgc3BhY2UgdGhlIHRyZWUgaXMgaW46IGBodG1sYCBvciBgc3ZnYC4gKi9cbiAgc3BhY2U/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBMZWF2ZSBvdXQgdGhlIHNwYWNlIGJldHdlZW4gcXVvdGVkIGF0dHJpYnV0ZXMuIEBkZWZhdWx0IGZhbHNlICovXG4gIHRpZ2h0QXR0cmlidXRlcz86IGJvb2xlYW5cbiAgLyoqIEpvaW4gY29tbWEtc2VwYXJhdGVkIHZhbHVlcyB3aXRoIGAsYCByYXRoZXIgdGhhbiBgLCBgLiBAZGVmYXVsdCBmYWxzZSAqL1xuICB0aWdodENvbW1hU2VwYXJhdGVkTGlzdHM/OiBib29sZWFuXG4gIC8qKiBXcml0ZSBgPCFkb2N0eXBlaHRtbD5gLiBAZGVmYXVsdCBmYWxzZSAqL1xuICB0aWdodERvY3R5cGU/OiBib29sZWFuXG4gIC8qKiBMZWF2ZSBvdXQgdGhlIHNwYWNlIGJlZm9yZSBgLz5gIHdoZW4gdGhlIGF0dHJpYnV0ZXMgYWxsb3cuIEBkZWZhdWx0IGZhbHNlICovXG4gIHRpZ2h0U2VsZkNsb3Npbmc/OiBib29sZWFuXG4gIC8qKiBXcml0ZSBgPCFET0NUWVBFIGh0bWw+YC4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgdXBwZXJEb2N0eXBlPzogYm9vbGVhblxuICAvKiogVGhlIHRhZyBuYW1lcyBvZiB2b2lkIGVsZW1lbnRzLCB3aGljaCBoYXZlIG5vIGNsb3NpbmcgdGFnLiAqL1xuICB2b2lkcz86IHN0cmluZ1tdIHwgbnVsbFxufVxuXG4vKiogVGhlIGBodG1sLnBhcnNlYCBwbHVnaW4uICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2Uob3B0aW9ucz86IFBhcnNlT3B0aW9ucyk6IFBsdWdpbjxcImh0bWwucGFyc2VcIiwgUGFyc2VPcHRpb25zPiB7XG4gIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiB7IG5hbWU6IFwiaHRtbC5wYXJzZVwiIH1cbiAgcmV0dXJuIHsgbmFtZTogXCJodG1sLnBhcnNlXCIsIG9wdGlvbnMgfVxufVxuXG4vKiogVGhlIGBodG1sLnJhd2AgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJhdyhvcHRpb25zPzogUmF3T3B0aW9ucyk6IFBsdWdpbjxcImh0bWwucmF3XCIsIFJhd09wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJodG1sLnJhd1wiIH1cbiAgcmV0dXJuIHsgbmFtZTogXCJodG1sLnJhd1wiLCBvcHRpb25zIH1cbn1cblxuLyoqIFRoZSBgaHRtbC5mb3JtYXRgIHBsdWdpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXQob3B0aW9ucz86IEZvcm1hdE9wdGlvbnMpOiBQbHVnaW48XCJodG1sLmZvcm1hdFwiLCBGb3JtYXRPcHRpb25zPiB7XG4gIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiB7IG5hbWU6IFwiaHRtbC5mb3JtYXRcIiB9XG4gIHJldHVybiB7IG5hbWU6IFwiaHRtbC5mb3JtYXRcIiwgb3B0aW9ucyB9XG59XG5cbi8qKiBUaGUgYGh0bWwuc2FuaXRpemVgIHBsdWdpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzYW5pdGl6ZShvcHRpb25zPzogU2FuaXRpemVPcHRpb25zKTogUGx1Z2luPFwiaHRtbC5zYW5pdGl6ZVwiLCBTYW5pdGl6ZU9wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJodG1sLnNhbml0aXplXCIgfVxuICByZXR1cm4geyBuYW1lOiBcImh0bWwuc2FuaXRpemVcIiwgb3B0aW9ucyB9XG59XG5cbi8qKiBUaGUgYGh0bWwuc2x1Z2AgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNsdWcob3B0aW9ucz86IFNsdWdPcHRpb25zKTogUGx1Z2luPFwiaHRtbC5zbHVnXCIsIFNsdWdPcHRpb25zPiB7XG4gIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiB7IG5hbWU6IFwiaHRtbC5zbHVnXCIgfVxuICByZXR1cm4geyBuYW1lOiBcImh0bWwuc2x1Z1wiLCBvcHRpb25zIH1cbn1cblxuLyoqIFRoZSBgaHRtbC5leHRlcm5hbExpbmtzYCBwbHVnaW4uICovXG5leHBvcnQgZnVuY3Rpb24gZXh0ZXJuYWxMaW5rcyhvcHRpb25zPzogRXh0ZXJuYWxMaW5rc09wdGlvbnMpOiBQbHVnaW48XCJodG1sLmV4dGVybmFsTGlua3NcIiwgRXh0ZXJuYWxMaW5rc09wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJodG1sLmV4dGVybmFsTGlua3NcIiB9XG4gIHJldHVybiB7IG5hbWU6IFwiaHRtbC5leHRlcm5hbExpbmtzXCIsIG9wdGlvbnMgfVxufVxuXG4vKiogVGhlIGBodG1sLnVud3JhcEltYWdlc2AgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVud3JhcEltYWdlcygpOiBQbHVnaW48XCJodG1sLnVud3JhcEltYWdlc1wiPiB7XG4gIHJldHVybiB7IG5hbWU6IFwiaHRtbC51bndyYXBJbWFnZXNcIiB9XG59XG5cbi8qKiBUaGUgYGh0bWwuZXh0cmFjdFRvY2AgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RUb2MoKTogUGx1Z2luPFwiaHRtbC5leHRyYWN0VG9jXCI+IHtcbiAgcmV0dXJuIHsgbmFtZTogXCJodG1sLmV4dHJhY3RUb2NcIiB9XG59XG5cbi8qKiBUaGUgYGh0bWwuaGlnaGxpZ2h0YCBwbHVnaW4uICovXG5leHBvcnQgZnVuY3Rpb24gaGlnaGxpZ2h0KG9wdGlvbnM/OiBIaWdobGlnaHRPcHRpb25zKTogUGx1Z2luPFwiaHRtbC5oaWdobGlnaHRcIiwgSGlnaGxpZ2h0T3B0aW9ucz4ge1xuICBpZiAob3B0aW9ucyA9PT0gdW5kZWZpbmVkKSByZXR1cm4geyBuYW1lOiBcImh0bWwuaGlnaGxpZ2h0XCIgfVxuICByZXR1cm4geyBuYW1lOiBcImh0bWwuaGlnaGxpZ2h0XCIsIG9wdGlvbnMgfVxufVxuXG4vKiogVGhlIGBodG1sLmthdGV4YCBwbHVnaW4uICovXG5leHBvcnQgZnVuY3Rpb24ga2F0ZXgob3B0aW9ucz86IEthdGV4T3B0aW9ucyk6IFBsdWdpbjxcImh0bWwua2F0ZXhcIiwgS2F0ZXhPcHRpb25zPiB7XG4gIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiB7IG5hbWU6IFwiaHRtbC5rYXRleFwiIH1cbiAgcmV0dXJuIHsgbmFtZTogXCJodG1sLmthdGV4XCIsIG9wdGlvbnMgfVxufVxuXG4vKiogVGhlIGBodG1sLnRvTWFya2Rvd25gIHBsdWdpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b01hcmtkb3duKG9wdGlvbnM/OiBUb01hcmtkb3duT3B0aW9ucyk6IFBsdWdpbjxcImh0bWwudG9NYXJrZG93blwiLCBUb01hcmtkb3duT3B0aW9ucz4ge1xuICBpZiAob3B0aW9ucyA9PT0gdW5kZWZpbmVkKSByZXR1cm4geyBuYW1lOiBcImh0bWwudG9NYXJrZG93blwiIH1cbiAgcmV0dXJuIHsgbmFtZTogXCJodG1sLnRvTWFya2Rvd25cIiwgb3B0aW9ucyB9XG59XG5cbi8qKiBUaGUgYGh0bWwudG9OYXR1cmFsTGFuZ3VhZ2VgIHBsdWdpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b05hdHVyYWxMYW5ndWFnZSgpOiBQbHVnaW48XCJodG1sLnRvTmF0dXJhbExhbmd1YWdlXCI+IHtcbiAgcmV0dXJuIHsgbmFtZTogXCJodG1sLnRvTmF0dXJhbExhbmd1YWdlXCIgfVxufVxuXG4vKiogVGhlIGBodG1sLnN0cmluZ2lmeWAgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZ2lmeShvcHRpb25zPzogU3RyaW5naWZ5T3B0aW9ucyk6IFBsdWdpbjxcImh0bWwuc3RyaW5naWZ5XCIsIFN0cmluZ2lmeU9wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJodG1sLnN0cmluZ2lmeVwiIH1cbiAgcmV0dXJuIHsgbmFtZTogXCJodG1sLnN0cmluZ2lmeVwiLCBvcHRpb25zIH1cbn1cbiJdfQ==
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2dlbmVyYXRlZC9odG1sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtFQUErRTtBQXFPL0UsK0JBQStCO0FBQy9CLE1BQU0sVUFBVSxLQUFLLENBQUMsT0FBc0I7SUFDMUMsSUFBSSxPQUFPLEtBQUssU0FBUztRQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLENBQUE7SUFDeEQsT0FBTyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLENBQUE7QUFDeEMsQ0FBQztBQUVELDZCQUE2QjtBQUM3QixNQUFNLFVBQVUsR0FBRyxDQUFDLE9BQW9CO0lBQ3RDLElBQUksT0FBTyxLQUFLLFNBQVM7UUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFBO0lBQ3RELE9BQU8sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxDQUFBO0FBQ3RDLENBQUM7QUFFRCxnQ0FBZ0M7QUFDaEMsTUFBTSxVQUFVLE1BQU0sQ0FBQyxPQUF1QjtJQUM1QyxJQUFJLE9BQU8sS0FBSyxTQUFTO1FBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsQ0FBQTtJQUN6RCxPQUFPLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsQ0FBQTtBQUN6QyxDQUFDO0FBRUQsa0NBQWtDO0FBQ2xDLE1BQU0sVUFBVSxRQUFRLENBQUMsT0FBeUI7SUFDaEQsSUFBSSxPQUFPLEtBQUssU0FBUztRQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLENBQUE7SUFDM0QsT0FBTyxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLENBQUE7QUFDM0MsQ0FBQztBQUVELDhCQUE4QjtBQUM5QixNQUFNLFVBQVUsSUFBSSxDQUFDLE9BQXFCO0lBQ3hDLElBQUksT0FBTyxLQUFLLFNBQVM7UUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxDQUFBO0lBQ3ZELE9BQU8sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxDQUFBO0FBQ3ZDLENBQUM7QUFFRCx1Q0FBdUM7QUFDdkMsTUFBTSxVQUFVLGFBQWEsQ0FBQyxPQUE4QjtJQUMxRCxJQUFJLE9BQU8sS0FBSyxTQUFTO1FBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxvQkFBb0IsRUFBRSxDQUFBO0lBQ2hFLE9BQU8sRUFBRSxJQUFJLEVBQUUsb0JBQW9CLEVBQUUsT0FBTyxFQUFFLENBQUE7QUFDaEQsQ0FBQztBQUVELHNDQUFzQztBQUN0QyxNQUFNLFVBQVUsWUFBWTtJQUMxQixPQUFPLEVBQUUsSUFBSSxFQUFFLG1CQUFtQixFQUFFLENBQUE7QUFDdEMsQ0FBQztBQUVELG9DQUFvQztBQUNwQyxNQUFNLFVBQVUsVUFBVSxDQUFDLE9BQTJCO0lBQ3BELElBQUksT0FBTyxLQUFLLFNBQVM7UUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLENBQUE7SUFDN0QsT0FBTyxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsQ0FBQTtBQUM3QyxDQUFDO0FBRUQsbUNBQW1DO0FBQ25DLE1BQU0sVUFBVSxTQUFTLENBQUMsT0FBMEI7SUFDbEQsSUFBSSxPQUFPLEtBQUssU0FBUztRQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQTtJQUM1RCxPQUFPLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE9BQU8sRUFBRSxDQUFBO0FBQzVDLENBQUM7QUFFRCwrQkFBK0I7QUFDL0IsTUFBTSxVQUFVLEtBQUssQ0FBQyxPQUFzQjtJQUMxQyxJQUFJLE9BQU8sS0FBSyxTQUFTO1FBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsQ0FBQTtJQUN4RCxPQUFPLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsQ0FBQTtBQUN4QyxDQUFDO0FBRUQsb0NBQW9DO0FBQ3BDLE1BQU0sVUFBVSxVQUFVLENBQUMsT0FBMkI7SUFDcEQsSUFBSSxPQUFPLEtBQUssU0FBUztRQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQTtJQUM3RCxPQUFPLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLE9BQU8sRUFBRSxDQUFBO0FBQzdDLENBQUM7QUFFRCwyQ0FBMkM7QUFDM0MsTUFBTSxVQUFVLGlCQUFpQjtJQUMvQixPQUFPLEVBQUUsSUFBSSxFQUFFLHdCQUF3QixFQUFFLENBQUE7QUFDM0MsQ0FBQztBQUVELG1DQUFtQztBQUNuQyxNQUFNLFVBQVUsU0FBUyxDQUFDLE9BQTBCO0lBQ2xELElBQUksT0FBTyxLQUFLLFNBQVM7UUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLENBQUE7SUFDNUQsT0FBTyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsQ0FBQTtBQUM1QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gR2VuZXJhdGVkIGJ5IGBwbnBtIGdlbmVyYXRlOmJpbmRpbmdzYCBmcm9tIHRoZSBjcmF0ZSdzIHBsdWdpbnM7IGRvIG5vdCBlZGl0LlxuXG5pbXBvcnQgdHlwZSB7IFBsdWdpbiB9IGZyb20gXCIuLi9tb2RlbHMvcGx1Z2luLnRzXCJcblxuLyoqIGBodG1sLnBhcnNlYDogSFRNTCBpbnRvIGhhc3Q7IG9wdGlvbnMgbmFtZWQgYXMgcmVoeXBlLXBhcnNlIG5hbWVzIHRoZW0uICovXG5leHBvcnQgaW50ZXJmYWNlIFBhcnNlT3B0aW9ucyB7XG4gIC8qKiBQYXJzZSBhIGZyYWdtZW50LCBhcyBpbiBhIGB0ZW1wbGF0ZWAsIHJhdGhlciB0aGFuIGEgd2hvbGUgZG9jdW1lbnQuIEBkZWZhdWx0IGZhbHNlICovXG4gIGZyYWdtZW50PzogYm9vbGVhblxuICAvKiogUmVwb3J0IHBhcnNlIGVycm9ycyBhcyBtZXNzYWdlcyBvbiB0aGUgZmlsZS4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgZW1pdFBhcnNlRXJyb3JzPzogYm9vbGVhblxuICAvKiogQWRkIHRoZSBwb3NpdGlvbnMgb2Ygb3BlbmluZyBhbmQgY2xvc2luZyB0YWdzIGFuZCBhdHRyaWJ1dGVzIHRvIGVsZW1lbnRzLiBAZGVmYXVsdCBmYWxzZSAqL1xuICB2ZXJib3NlPzogYm9vbGVhblxufVxuXG4vKiogYGh0bWwucmF3YDogcmVwYXJzZSByYXcgSFRNTCBhbmQgZml4IG5lc3RpbmcgdGhyb3VnaCB0aGUgSFRNTCBwYXJzZXI7IG9wdGlvbnMgbmFtZWQgYXMgaGFzdC11dGlsLXJhdyBuYW1lcyB0aGVtLiAqL1xuZXhwb3J0IGludGVyZmFjZSBSYXdPcHRpb25zIHtcbiAgLyoqIE5vZGUgdHlwZXMsIHVua25vd24gdG8gaGFzdCwgdG8gY29weSB0aHJvdWdoIGFzIHRoZXkgYXJlOyB0aGVpciBjaGlsZHJlbiBhcmUgcmVwYXJzZWQgb24gdGhlaXIgb3duLiBAZGVmYXVsdCBbXSAqL1xuICBwYXNzVGhyb3VnaD86IHN0cmluZ1tdXG4gIC8qKiBFc2NhcGUgdGhlIG9wZW5pbmcgYDxgIG9mIHRoZSB0YWdzIEdGTSdzIHRhZ2ZpbHRlciBkaXNhbGxvd3MgaW4gcmF3IG5vZGVzLiBAZGVmYXVsdCBmYWxzZSAqL1xuICB0YWdmaWx0ZXI/OiBib29sZWFuXG59XG5cbi8qKiBgaHRtbC5mb3JtYXRgOiBpbmRlbnQgYW5kIGNvbGxhcHNlIHdoaXRlc3BhY2UgZm9yIHJlYWRhYmxlIEhUTUw7IG9wdGlvbnMgbmFtZWQgYXMgaGFzdC11dGlsLWZvcm1hdCBuYW1lcyB0aGVtLiAqL1xuZXhwb3J0IGludGVyZmFjZSBGb3JtYXRPcHRpb25zIHtcbiAgLyoqIFRhZyBuYW1lcyBvZiBlbGVtZW50cyB0byBwdXQgYSBibGFuayBsaW5lIGJldHdlZW4sIHdoZW4gYm90aCBhcmUgb25lLiBAZGVmYXVsdCBbXSAqL1xuICBibGFua3M/OiBzdHJpbmdbXVxuICAvKiogT25lIGxldmVsIG9mIGluZGVudGF0aW9uOiBhIG51bWJlciBvZiBzcGFjZXMgb3IgdGhlIHRleHQgaXRzZWxmOyB0d28gc3BhY2VzIHdoZW4gbGVmdCBvdXQuICovXG4gIGluZGVudD86IEluZGVudCB8IG51bGxcbiAgLyoqIEluZGVudCB0aGUgZmlyc3QgbGV2ZWwsIHVzdWFsbHkgYDxodG1sPmAncyBgaGVhZGAgYW5kIGBib2R5YDsgYHRydWVgIHdoZW4gbGVmdCBvdXQuICovXG4gIGluZGVudEluaXRpYWw/OiBib29sZWFuIHwgbnVsbFxufVxuXG4vKiogT25lIGxldmVsIG9mIGluZGVudGF0aW9uLiAqL1xuZXhwb3J0IHR5cGUgSW5kZW50ID0gbnVtYmVyIHwgc3RyaW5nXG5cbi8qKiBgaHRtbC5zYW5pdGl6ZWA6IGtlZXAgb25seSB3aGF0IGEgc2NoZW1hIGFsbG93czsgb3B0aW9uczogaGFzdC11dGlsLXNhbml0aXplJ3Mgc2NoZW1hLCB3aGVyZSBhIGZpZWxkIGxlZnQgb3V0IGtlZXBzIHRoZSBkZWZhdWx0IHNjaGVtYSdzLCB3aGljaCBpcyBHaXRIdWIncy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2FuaXRpemVPcHRpb25zIHtcbiAgLyoqIEtlZXAgY29tbWVudHMuICovXG4gIGFsbG93Q29tbWVudHM/OiBib29sZWFuIHwgbnVsbFxuICAvKiogS2VlcCBkb2N0eXBlcy4gKi9cbiAgYWxsb3dEb2N0eXBlcz86IGJvb2xlYW4gfCBudWxsXG4gIC8qKiBFbGVtZW50cyBhbGxvd2VkIG9ubHkgaW5zaWRlIG9uZSBvZiB0aGVzZSBhbmNlc3RvcnMsIGJ5IHRhZyBuYW1lLiAqL1xuICBhbmNlc3RvcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT4gfCBudWxsXG4gIC8qKiBQcm9wZXJ0aWVzIGFsbG93ZWQgcGVyIHRhZyBuYW1lLCBgKmAgZm9yIGV2ZXJ5IGVsZW1lbnQ7IGEgbGlzdCBuYW1lcyBhIHByb3BlcnR5IGFuZCB0aGUgdmFsdWVzIGl0IG1heSBoYXZlLiAqL1xuICBhdHRyaWJ1dGVzPzogUmVjb3JkPHN0cmluZywgQXR0cmlidXRlRGVmaW5pdGlvbltdPiB8IG51bGxcbiAgLyoqIFByb3BlcnRpZXMgd2hvc2UgdmFsdWVzIGdldCBgY2xvYmJlcl9wcmVmaXhgLCBzbyB0aGV5IGNhbm5vdCBjbG9iYmVyIGdsb2JhbHMuICovXG4gIGNsb2JiZXI/OiBzdHJpbmdbXSB8IG51bGxcbiAgLyoqIFRoZSBwcmVmaXggb2YgY2xvYmJlcmVkIHZhbHVlcy4gKi9cbiAgY2xvYmJlclByZWZpeD86IHN0cmluZyB8IG51bGxcbiAgLyoqIFVSTCBwcm9wZXJ0aWVzIGFuZCB0aGUgcHJvdG9jb2xzIHRoZXkgbWF5IHVzZS4gKi9cbiAgcHJvdG9jb2xzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nW10+IHwgbnVsbFxuICAvKiogUHJvcGVydGllcyBzZXQgb24gZWxlbWVudHMgd2hhdGV2ZXIgdGhleSBoYWQsIGJ5IHRhZyBuYW1lLiAqL1xuICByZXF1aXJlZD86IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIFByaW1pdGl2ZT4+IHwgbnVsbFxuICAvKiogRWxlbWVudHMgZHJvcHBlZCB3aXRoIHRoZWlyIGNvbnRlbnQgcmF0aGVyIHRoYW4gdW53cmFwcGVkLiAqL1xuICBzdHJpcD86IHN0cmluZ1tdIHwgbnVsbFxuICAvKiogVGhlIGVsZW1lbnRzIGtlcHQuICovXG4gIHRhZ05hbWVzPzogc3RyaW5nW10gfCBudWxsXG59XG5cbi8qKiBBIHByb3BlcnR5IGEgc2FuaXRpemUgc2NoZW1hIGFsbG93czogYnkgbmFtZSwgb3IgYSBuYW1lIGFuZCBpdHMgYWxsb3dlZCB2YWx1ZXMuICovXG5leHBvcnQgdHlwZSBBdHRyaWJ1dGVEZWZpbml0aW9uID0gc3RyaW5nIHwgUHJpbWl0aXZlW11cblxuLyoqIEEgcHJpbWl0aXZlIHByb3BlcnR5IHZhbHVlLiAqL1xuZXhwb3J0IHR5cGUgUHJpbWl0aXZlID0gYm9vbGVhbiB8IG51bWJlciB8IHN0cmluZ1xuXG4vKiogYGh0bWwuc2x1Z2A6IGlkcyBvbiBoZWFkaW5ncywgZnJvbSB0aGVpciB0ZXh0OyBvcHRpb25zIG5hbWVkIGFzIHJlaHlwZS1zbHVnIG5hbWVzIHRoZW0uICovXG5leHBvcnQgaW50ZXJmYWNlIFNsdWdPcHRpb25zIHtcbiAgLyoqIFB1dCBiZWZvcmUgZWFjaCBpZC4gQGRlZmF1bHQgXCJcIiAqL1xuICBwcmVmaXg/OiBzdHJpbmdcbn1cblxuLyoqIGBodG1sLmV4dGVybmFsTGlua3NgOiBgcmVsYCwgYHRhcmdldGAgYW5kIG1vcmUgb24gbGlua3MgdG8gb3RoZXIgc2l0ZXMsIGFzIHJlaHlwZS1leHRlcm5hbC1saW5rcyBhZGRzIHRoZW07IG9wdGlvbnMgbmFtZWQgYXMgaXQgbmFtZXMgdGhlbSwgSlNPTiB2YWx1ZXMgb25seS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXh0ZXJuYWxMaW5rc09wdGlvbnMge1xuICAvKiogVGhlIGB0YXJnZXRgIG9mIGVhY2ggZXh0ZXJuYWwgbGluaywgc3VjaCBhcyBgX2JsYW5rYC4gKi9cbiAgdGFyZ2V0Pzogc3RyaW5nIHwgbnVsbFxuICAvKiogVGhlIGByZWxgIG9mIGVhY2ggZXh0ZXJuYWwgbGluazogYSBsaXN0LCBvciB0b2tlbnMgc2VwYXJhdGVkIGJ5IHdoaXRlIHNwYWNlOyBgbm9mb2xsb3dgIHdoZW4gbGVmdCBvdXQgb3IgZW1wdHksIG5vbmUgZm9yIGFuIGVtcHR5IGxpc3QuICovXG4gIHJlbD86IFRva2VucyB8IG51bGxcbiAgLyoqIFRoZSBwcm90b2NvbHMgb2YgYWJzb2x1dGUgVVJMcyB0aGF0IGNvdW50IGFzIGV4dGVybmFsOyBgaHR0cGAgYW5kIGBodHRwc2Agd2hlbiBsZWZ0IG91dC4gQSBwcm90b2NvbC1yZWxhdGl2ZSBgLy/igKZgIFVSTCBhbHdheXMgY291bnRzLiAqL1xuICBwcm90b2NvbHM/OiBzdHJpbmdbXSB8IG51bGxcbiAgLyoqIE1vcmUgcHJvcGVydGllcyBmb3IgZWFjaCBleHRlcm5hbCBsaW5rLCBhcyBoYXN0IG5hbWVzIHRoZW0uICovXG4gIHByb3BlcnRpZXM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IG51bGxcbiAgLyoqIGhhc3QgY29udGVudCBhcHBlbmRlZCB0byBlYWNoIGV4dGVybmFsIGxpbmsgaW4gYSBgPHNwYW4+YDogb25lIG5vZGUgb3IgYSBsaXN0LiAqL1xuICBjb250ZW50PzogdW5rbm93blxuICAvKiogVGhlIHByb3BlcnRpZXMgb2YgdGhhdCBgPHNwYW4+YC4gKi9cbiAgY29udGVudFByb3BlcnRpZXM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IG51bGxcbn1cblxuLyoqIFRva2VuczogYSBsaXN0LCBvciBvbmUgc3RyaW5nIG9mIHRoZW0gc2VwYXJhdGVkIGJ5IHdoaXRlIHNwYWNlLiAqL1xuZXhwb3J0IHR5cGUgVG9rZW5zID0gc3RyaW5nIHwgc3RyaW5nW11cblxuLyoqIGBodG1sLmV4dHJhY3RUb2NgOiB0aGUgaGVhZGluZ3MsIG5lc3RlZCBieSByYW5rLCBhcyB0aGUgZmlsZSdzIGBkYXRhLnRvY2AsIGFzIEBzdGVmYW5wcm9ic3QvcmVoeXBlLWV4dHJhY3QtdG9jIHN0b3JlcyB0aGVtLiAqL1xuZXhwb3J0IGludGVyZmFjZSBFeHRyYWN0VG9jT3B0aW9ucyB7XG4gIC8qKiBBdHRyaWJ1dGVzLCBzdWNoIGFzIGBkYXRhLXRvYy1oaWRkZW5gLCB0aGF0IGtlZXAgYSBoZWFkaW5nIG91dCBvZiB0aGUgdGFibGUgb2YgY29udGVudHM7IHdoYXQgd291bGQgbmVzdCB1bmRlciBpdCBuZXN0cyB1bmRlciB0aGUgaGVhZGluZyBiZWZvcmUuIEBkZWZhdWx0IFtdICovXG4gIHNraXA/OiBzdHJpbmdbXVxufVxuXG4vKiogYGh0bWwuaGlnaGxpZ2h0YDogY29kZSBibG9ja3MgY29sb3JlZCBhcyBTaGlraSBjb2xvcnMgdGhlbSwgbmF0aXZlbHkgYnkgZ2lhbGxvOyBvcHRpb25zIG5hbWVkIGFzIEBzaGlraWpzL3JlaHlwZSBuYW1lcyB0aGVtLiAqL1xuZXhwb3J0IGludGVyZmFjZSBIaWdobGlnaHRPcHRpb25zIHtcbiAgLyoqIFRoZSB0aGVtZSBvZiBlYWNoIGNvbG9yIG1vZGUsIGBsaWdodGAgZmlyc3QsIGFzIGB7XCJsaWdodFwiOiDigKYsIFwiZGFya1wiOiDigKZ9YC4gKi9cbiAgdGhlbWVzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCBudWxsXG4gIC8qKiBUaGUgb25lIHRoZW1lLCB3aGVuIGB0aGVtZXNgIGlzIG5vdCBnaXZlbi4gKi9cbiAgdGhlbWU/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBUaGUgbGFuZ3VhZ2Ugb2YgYSBibG9jayB0aGF0IG5hbWVzIG5vbmU7IHN1Y2ggYSBibG9jayBpcyBsZWZ0IGFsb25lIHdpdGhvdXQgaXQuICovXG4gIGRlZmF1bHRMYW5ndWFnZT86IHN0cmluZyB8IG51bGxcbiAgLyoqIFRoZSBsYW5ndWFnZSBvZiBhIGJsb2NrIG5hbWluZyBvbmUgU2hpa2kgZG9lcyBub3Qga25vdzsgbGVmdCBhbG9uZSB3aXRob3V0IGl0LiAqL1xuICBmYWxsYmFja0xhbmd1YWdlPzogc3RyaW5nIHwgbnVsbFxuICAvKiogQ29sb3JzIHRvIHJlcGxhY2UsIGJ5IHRoZWlyIGxvd2VyY2FzZSBzcGVsbGluZzogYSBjb2xvciBmb3IgZXZlcnkgdGhlbWUsIG9yIGEgdGhlbWUncyBuYW1lIHRvIGEgbWFwIG9mIGl0cyBvd24uICovXG4gIGNvbG9yUmVwbGFjZW1lbnRzPzogUmVjb3JkPHN0cmluZywgQ29sb3JSZXBsYWNlbWVudD5cbiAgLyoqIEFkZCBgbGFuZ3VhZ2UtPG5hbWU+YCB0byBlYWNoIGhpZ2hsaWdodGVkIGA8Y29kZT5gLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBhZGRMYW5ndWFnZUNsYXNzPzogYm9vbGVhblxuICAvKiogSGlnaGxpZ2h0IGlubGluZSBjb2RlIHRvbywgYnkgaG93IGl0IG5hbWVzIGl0cyBsYW5ndWFnZTogYHRhaWxpbmctY3VybHktY29sb25gIHJlYWRzIGBgIGBhKCl7OmpzfWAgYGAuICovXG4gIGlubGluZT86IElubGluZUNvZGUgfCBudWxsXG4gIC8qKiBUaGUgYDxwcmU+YCBwcm9wZXJ0eSB0aGF0IGdldHMgYSBibG9jaydzIG1ldGEsIHRoZSB0ZXh0IGFmdGVyIGl0cyBsYW5ndWFnZTsgdGhlIEpTT04gc3RhbmQtaW4gZm9yIGBwYXJzZU1ldGFTdHJpbmc6IG1ldGEgPT4gKHsgW25hbWVdOiBtZXRhIH0pYC4gKi9cbiAgbWV0YVByb3BlcnR5Pzogc3RyaW5nIHwgbnVsbFxuICAvKiogVGhlIHRyYW5zZm9ybWVycyBvZiBAc2hpa2lqcy90cmFuc2Zvcm1lcnMgdG8gcnVuLCBpbiBvcmRlciwgYnkgbmFtZSBvciB3aXRoIG9wdGlvbnMuICovXG4gIHRyYW5zZm9ybWVycz86IEhpZ2hsaWdodFRyYW5zZm9ybWVyW11cbiAgLyoqIExpbmVzIGF0IGxlYXN0IHRoaXMgbG9uZywgaW4gVVRGLTE2IHVuaXRzLCBhcmUgbGVmdCBvbmUgcGxhaW4gdG9rZW4gYXMgU2hpa2kncyBvd24gb3B0aW9uIGxlYXZlcyB0aGVtOyAyLDAwMCB3aGVuIGxlZnQgb3V0LCB3aGVyZSBTaGlraSBoYXMgbm8gbGltaXQsIHNpbmNlIGEgZ3JhbW1hcidzIHRpbWUgZ3Jvd3Mgd2l0aCB0aGUgc3F1YXJlIG9mIGEgbGluZSdzIGxlbmd0aC4gYDBgIGxpZnRzIGl0LiAqL1xuICB0b2tlbml6ZU1heExpbmVMZW5ndGg/OiBudW1iZXIgfCBudWxsXG59XG5cbi8qKiBBIHJlcGxhY2VtZW50IGNvbG9yLCBvciBhIHRoZW1lJ3Mgb3duIHJlcGxhY2VtZW50cy4gKi9cbmV4cG9ydCB0eXBlIENvbG9yUmVwbGFjZW1lbnQgPSBzdHJpbmcgfCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+XG5cbi8qKiBIb3cgaW5saW5lIGNvZGUgbmFtZXMgaXRzIGxhbmd1YWdlLiAqL1xuZXhwb3J0IHR5cGUgSW5saW5lQ29kZSA9IFwidGFpbGluZy1jdXJseS1jb2xvblwiXG5cbi8qKiBBIHRyYW5zZm9ybWVyIG9mIEBzaGlraWpzL3RyYW5zZm9ybWVyczogaXRzIG5hbWUgYWxvbmUsIG9yIGl0cyBuYW1lIGFuZCBvcHRpb25zLiAqL1xuZXhwb3J0IHR5cGUgSGlnaGxpZ2h0VHJhbnNmb3JtZXIgPSBUcmFuc2Zvcm1lck5hbWUgfCBDb25maWd1cmVkVHJhbnNmb3JtZXJcblxuLyoqIFRoZSB0cmFuc2Zvcm1lcnMgYGh0bWwuaGlnaGxpZ2h0YCBydW5zIG5hdGl2ZWx5LiAqL1xuZXhwb3J0IHR5cGUgVHJhbnNmb3JtZXJOYW1lID0gXCJub3RhdGlvbkRpZmZcIiB8IFwibm90YXRpb25Gb2N1c1wiIHwgXCJub3RhdGlvbkhpZ2hsaWdodFwiIHwgXCJub3RhdGlvbkVycm9yTGV2ZWxcIiB8IFwibWV0YUhpZ2hsaWdodFwiIHwgXCJtZXRhV29yZEhpZ2hsaWdodFwiIHwgXCJyZW5kZXJMaW5lTnVtYmVyXCJcblxuLyoqIEEgdHJhbnNmb3JtZXIgd2l0aCBpdHMgb3B0aW9ucywgYXMgQHNoaWtpanMvdHJhbnNmb3JtZXJzIG5hbWVzIHRoZW0uICovXG5leHBvcnQgdHlwZSBDb25maWd1cmVkVHJhbnNmb3JtZXIgPSB7IG5hbWU6IFwibm90YXRpb25EaWZmXCI7IGNsYXNzTGluZUFkZD86IENsYXNzZXMgfCBudWxsOyBjbGFzc0xpbmVSZW1vdmU/OiBDbGFzc2VzIHwgbnVsbDsgY2xhc3NBY3RpdmVQcmU/OiBDbGFzc2VzIHwgbnVsbDsgY2xhc3NBY3RpdmVDb2RlPzogQ2xhc3NlcyB8IG51bGwgfSB8IHsgbmFtZTogXCJub3RhdGlvbkZvY3VzXCI7IGNsYXNzQWN0aXZlTGluZT86IENsYXNzZXMgfCBudWxsOyBjbGFzc0FjdGl2ZVByZT86IENsYXNzZXMgfCBudWxsOyBjbGFzc0FjdGl2ZUNvZGU/OiBDbGFzc2VzIHwgbnVsbCB9IHwgeyBuYW1lOiBcIm5vdGF0aW9uSGlnaGxpZ2h0XCI7IGNsYXNzQWN0aXZlTGluZT86IENsYXNzZXMgfCBudWxsOyBjbGFzc0FjdGl2ZVByZT86IENsYXNzZXMgfCBudWxsOyBjbGFzc0FjdGl2ZUNvZGU/OiBDbGFzc2VzIHwgbnVsbCB9IHwgeyBuYW1lOiBcIm5vdGF0aW9uRXJyb3JMZXZlbFwiOyBjbGFzc01hcD86IFJlY29yZDxzdHJpbmcsIENsYXNzZXM+IHwgbnVsbDsgY2xhc3NBY3RpdmVQcmU/OiBDbGFzc2VzIHwgbnVsbDsgY2xhc3NBY3RpdmVDb2RlPzogQ2xhc3NlcyB8IG51bGwgfSB8IHsgbmFtZTogXCJtZXRhSGlnaGxpZ2h0XCI7IGNsYXNzTmFtZT86IENsYXNzZXMgfCBudWxsOyB6ZXJvSW5kZXhlZD86IGJvb2xlYW4gfSB8IHsgbmFtZTogXCJtZXRhV29yZEhpZ2hsaWdodFwiOyBjbGFzc05hbWU/OiBDbGFzc2VzIHwgbnVsbCB9IHwgeyBuYW1lOiBcInJlbmRlckxpbmVOdW1iZXJcIjsgY2xhc3NMaW5lTnVtYmVyPzogQ2xhc3NlcyB8IG51bGw7IHN0YXJ0PzogbnVtYmVyIHwgbnVsbCB9XG5cbi8qKiBDbGFzcyBuYW1lczogYSBsaXN0LCBvciBvbmUgc3RyaW5nIG9mIHRoZW0gc2VwYXJhdGVkIGJ5IHdoaXRlIHNwYWNlLiAqL1xuZXhwb3J0IHR5cGUgQ2xhc3NlcyA9IHN0cmluZyB8IHN0cmluZ1tdXG5cbi8qKiBgaHRtbC5rYXRleGA6IG1hdGggcmVuZGVyZWQgYXMgcmVoeXBlLWthdGV4IHJlbmRlcnMgaXQsIG5hdGl2ZWx5IGJ5IGthdGV4LXJzOyBvcHRpb25zIG5hbWVkIGFzIEthVGVYIG5hbWVzIHRoZW0uICovXG5leHBvcnQgaW50ZXJmYWNlIEthdGV4T3B0aW9ucyB7XG4gIC8qKiBUaGUgbWFya3VwIHRvIHdyaXRlLCBib3RoIEhUTUwgYW5kIE1hdGhNTCBieSBkZWZhdWx0LiAqL1xuICBvdXRwdXQ/OiBLYXRleE91dHB1dCB8IG51bGxcbiAgLyoqIFB1dCBlcXVhdGlvbiBudW1iZXJzIG9uIHRoZSBsZWZ0LiBAZGVmYXVsdCBmYWxzZSAqL1xuICBsZXFubz86IGJvb2xlYW5cbiAgLyoqIEFsaWduIGRpc3BsYXkgbWF0aCB0byB0aGUgbGVmdCBpbnN0ZWFkIG9mIGNlbnRlcmluZyBpdC4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgZmxlcW4/OiBib29sZWFuXG4gIC8qKiBUaGUgY29sb3Igb2YgbWF0aCB0aGF0IGZhaWxzIHRvIHJlbmRlciwgYCNjYzAwMDBgIGJ5IGRlZmF1bHQuICovXG4gIGVycm9yQ29sb3I/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBNYWNyb3MgYnkgbmFtZSwgZWFjaCB0byB0aGUgVGVYIGl0IGV4cGFuZHMgdG8sIGFzIGB7XCJcXFxcUlJcIjogXCJcXFxcbWF0aGJie1J9XCJ9YC4gQGRlZmF1bHQge30gKi9cbiAgbWFjcm9zPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPlxuICAvKiogVGhlIHRoaW5uZXN0IGEgcnVsZSwgc3VjaCBhcyBhIGZyYWN0aW9uIGxpbmUsIGlzIGRyYXduLCBpbiBlbXMuICovXG4gIG1pblJ1bGVUaGlja25lc3M/OiBudW1iZXIgfCBudWxsXG4gIC8qKiBMZXQgYFxcY29sb3JgIGNvbG9yIHRoZSB0ZXh0IGFmdGVyIGl0LCBhcyBMYVRlWCBkb2VzLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBjb2xvcklzVGV4dENvbG9yPzogYm9vbGVhblxuICAvKiogV2hhdCB0byBkbyB3aXRoIGlucHV0IExhVGVYIHdvdWxkIHJlamVjdDogYHRydWVgIG9yIGBcImVycm9yXCJgIGZhaWxzIGl0LCBgXCJ3YXJuXCJgIHByaW50cyBhIHdhcm5pbmcsIGBmYWxzZWAgb3IgYFwiaWdub3JlXCJgICh0aGUgZGVmYXVsdCkgYWNjZXB0cyBpdC4gKi9cbiAgc3RyaWN0PzogS2F0ZXhTdHJpY3QgfCBudWxsXG4gIC8qKiBBbGxvdyBjb21tYW5kcyB0aGF0IGNhbiBydW4gdW50cnVzdGVkIGlucHV0LCBzdWNoIGFzIGBcXGhyZWZgIGFuZCBgXFxpbmNsdWRlZ3JhcGhpY3NgLiBAZGVmYXVsdCBmYWxzZSAqL1xuICB0cnVzdD86IGJvb2xlYW5cbiAgLyoqIFRoZSBsYXJnZXN0IGEgdXNlci1naXZlbiBzaXplIG1heSBiZSwgaW4gZW1zLiAqL1xuICBtYXhTaXplPzogbnVtYmVyIHwgbnVsbFxuICAvKiogSG93IG1hbnkgbWFjcm8gZXhwYW5zaW9ucyBvbmUgZm9ybXVsYSBtYXkgdGFrZSwgMTAwMCBieSBkZWZhdWx0LiAqL1xuICBtYXhFeHBhbmQ/OiBudW1iZXIgfCBudWxsXG4gIC8qKiBMZXQgZGVmaW5pdGlvbnMgc3VjaCBhcyBgXFxkZWZgIGxhc3QgcGFzdCB0aGUgZm9ybXVsYSB0aGV5IGFyZSBpbi4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgZ2xvYmFsR3JvdXA/OiBib29sZWFuXG59XG5cbi8qKiBUaGUgbWFya3VwIEthVGVYIHdyaXRlcy4gKi9cbmV4cG9ydCB0eXBlIEthdGV4T3V0cHV0ID0gXCJodG1sXCIgfCBcIm1hdGhtbFwiIHwgXCJodG1sQW5kTWF0aG1sXCJcblxuLyoqIEhvdyBzdHJpY3RseSBLYVRlWCBob2xkcyBpbnB1dCB0byBMYVRlWC4gKi9cbmV4cG9ydCB0eXBlIEthdGV4U3RyaWN0ID0gYm9vbGVhbiB8IEthdGV4U3RyaWN0TW9kZVxuXG4vKiogT25lIGxldmVsIG9mIEthVGVYJ3Mgc3RyaWN0bmVzcy4gKi9cbmV4cG9ydCB0eXBlIEthdGV4U3RyaWN0TW9kZSA9IFwiaWdub3JlXCIgfCBcIndhcm5cIiB8IFwiZXJyb3JcIlxuXG4vKiogYGh0bWwudG9NYXJrZG93bmA6IGhhc3QgaW50byBtZGFzdDsgb3B0aW9ucyBuYW1lZCBhcyBoYXN0LXV0aWwtdG8tbWRhc3QgbmFtZXMgdGhlbS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVG9NYXJrZG93bk9wdGlvbnMge1xuICAvKiogV3JhcCBhbGwgcGhyYXNpbmcgY29udGVudCBvZiB0aGUgcm9vdCBpbiBwYXJhZ3JhcGhzLCBhcyBmb3IgYSB3aG9sZSBkb2N1bWVudC4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgZG9jdW1lbnQ/OiBib29sZWFuXG4gIC8qKiBDb2xsYXBzZSB3aGl0ZXNwYWNlIGhvbGRpbmcgYSBsaW5lIGVuZGluZyB0byB0aGF0IGxpbmUgZW5kaW5nIGluc3RlYWQgb2YgYSBzcGFjZS4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgbmV3bGluZXM/OiBib29sZWFuXG4gIC8qKiBUaGUgdGV4dCBvZiBhIGNoZWNrZWQgY2hlY2tib3ggb3IgcmFkaW8sIGBbeF1gIGJ5IGRlZmF1bHQuICovXG4gIGNoZWNrZWQ/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBUaGUgdGV4dCBvZiBhbiB1bmNoZWNrZWQgY2hlY2tib3ggb3IgcmFkaW8sIGBbIF1gIGJ5IGRlZmF1bHQuICovXG4gIHVuY2hlY2tlZD86IHN0cmluZyB8IG51bGxcbiAgLyoqIFRoZSBxdW90ZXMgYDxxPmAgdXNlcywgYW4gb3BlbmluZyBhbmQgY2xvc2luZyBjaGFyYWN0ZXIgZWFjaCwgYWx0ZXJuYXRpbmcgYnkgaG93IGRlZXAgaXQgbmVzdHM7IGBcImAgYnkgZGVmYXVsdC4gKi9cbiAgcXVvdGVzPzogc3RyaW5nW10gfCBudWxsXG59XG5cbi8qKiBgaHRtbC5zdHJpbmdpZnlgOiBoYXN0IGludG8gSFRNTDsgb3B0aW9ucyBuYW1lZCBhcyBoYXN0LXV0aWwtdG8taHRtbCBuYW1lcyB0aGVtLiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdHJpbmdpZnlPcHRpb25zIHtcbiAgLyoqIFdyaXRlIHJhdyBub2RlcyBhcyB0aGV5IGFyZSBpbnN0ZWFkIG9mIGVzY2FwaW5nIHRoZW0uIEBkZWZhdWx0IGZhbHNlICovXG4gIGFsbG93RGFuZ2Vyb3VzSHRtbD86IGJvb2xlYW5cbiAgLyoqIExlYXZlIGNoYXJhY3RlcnMgdGhhdCBhcmUgb25seSBkYW5nZXJvdXMgaW4gc29tZSBjb250ZXh0cywgc3VjaCBhcyBgYCBgIGBgLCBhcyB0aGV5IGFyZS4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgYWxsb3dEYW5nZXJvdXNDaGFyYWN0ZXJzPzogYm9vbGVhblxuICAvKiogTGVhdmUgY2hhcmFjdGVycyBhcyB0aGV5IGFyZSB3aGVyZSBicm93c2VycyBhY2NlcHQgdGhlbSB0aG91Z2ggdGhlIHNwZWMgZG9lcyBub3QuIEBkZWZhdWx0IGZhbHNlICovXG4gIGFsbG93UGFyc2VFcnJvcnM/OiBib29sZWFuXG4gIC8qKiBXcml0ZSBjb21tZW50cyBhcyBib2d1cyBjb21tZW50cywgYDw/YT5gLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBib2d1c0NvbW1lbnRzPzogYm9vbGVhblxuICAvKiogQ2xvc2UgZW1wdHkgZm9yZWlnbiBlbGVtZW50cywgYDxhIC8+YC4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgY2xvc2VFbXB0eUVsZW1lbnRzPzogYm9vbGVhblxuICAvKiogQ2xvc2Ugdm9pZCBlbGVtZW50cywgYDxiciAvPmAuIEBkZWZhdWx0IGZhbHNlICovXG4gIGNsb3NlU2VsZkNsb3Npbmc/OiBib29sZWFuXG4gIC8qKiBXcml0ZSBlbXB0eSBhdHRyaWJ1dGVzIGFzIGJhcmUgbmFtZXMsIGBhYCByYXRoZXIgdGhhbiBgYT1cIlwiYC4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgY29sbGFwc2VFbXB0eUF0dHJpYnV0ZXM/OiBib29sZWFuXG4gIC8qKiBMZWF2ZSBvdXQgdGFncyB0aGUgSFRNTCBzcGVjIGxldHMgYSBwYXJzZXIgaW1wbHkuIEBkZWZhdWx0IGZhbHNlICovXG4gIG9taXRPcHRpb25hbFRhZ3M/OiBib29sZWFuXG4gIC8qKiBMZWF2ZSBhdHRyaWJ1dGUgdmFsdWVzIHVucXVvdGVkIHdoZXJlIHRoYXQgaXMgc2FmZS4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgcHJlZmVyVW5xdW90ZWQ/OiBib29sZWFuXG4gIC8qKiBUaGUgcXVvdGUgYXR0cmlidXRlIHZhbHVlcyBhcmUgd3JhcHBlZCBpbjogYFwiYCBvciBgJ2AuICovXG4gIHF1b3RlPzogc3RyaW5nIHwgbnVsbFxuICAvKiogVXNlIHRoZSBvdGhlciBxdW90ZSB3aGVuIHRoZSB2YWx1ZSBob2xkcyBtb3JlIG9mIHRoZSBwcmVmZXJyZWQgb25lLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBxdW90ZVNtYXJ0PzogYm9vbGVhblxuICAvKiogVGhlIHNwYWNlIHRoZSB0cmVlIGlzIGluOiBgaHRtbGAgb3IgYHN2Z2AuICovXG4gIHNwYWNlPzogc3RyaW5nIHwgbnVsbFxuICAvKiogTGVhdmUgb3V0IHRoZSBzcGFjZSBiZXR3ZWVuIHF1b3RlZCBhdHRyaWJ1dGVzLiBAZGVmYXVsdCBmYWxzZSAqL1xuICB0aWdodEF0dHJpYnV0ZXM/OiBib29sZWFuXG4gIC8qKiBKb2luIGNvbW1hLXNlcGFyYXRlZCB2YWx1ZXMgd2l0aCBgLGAgcmF0aGVyIHRoYW4gYCwgYC4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgdGlnaHRDb21tYVNlcGFyYXRlZExpc3RzPzogYm9vbGVhblxuICAvKiogV3JpdGUgYDwhZG9jdHlwZWh0bWw+YC4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgdGlnaHREb2N0eXBlPzogYm9vbGVhblxuICAvKiogTGVhdmUgb3V0IHRoZSBzcGFjZSBiZWZvcmUgYC8+YCB3aGVuIHRoZSBhdHRyaWJ1dGVzIGFsbG93LiBAZGVmYXVsdCBmYWxzZSAqL1xuICB0aWdodFNlbGZDbG9zaW5nPzogYm9vbGVhblxuICAvKiogV3JpdGUgYDwhRE9DVFlQRSBodG1sPmAuIEBkZWZhdWx0IGZhbHNlICovXG4gIHVwcGVyRG9jdHlwZT86IGJvb2xlYW5cbiAgLyoqIFRoZSB0YWcgbmFtZXMgb2Ygdm9pZCBlbGVtZW50cywgd2hpY2ggaGF2ZSBubyBjbG9zaW5nIHRhZy4gKi9cbiAgdm9pZHM/OiBzdHJpbmdbXSB8IG51bGxcbn1cblxuLyoqIFRoZSBgaHRtbC5wYXJzZWAgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlKG9wdGlvbnM/OiBQYXJzZU9wdGlvbnMpOiBQbHVnaW48XCJodG1sLnBhcnNlXCIsIFBhcnNlT3B0aW9ucz4ge1xuICBpZiAob3B0aW9ucyA9PT0gdW5kZWZpbmVkKSByZXR1cm4geyBuYW1lOiBcImh0bWwucGFyc2VcIiB9XG4gIHJldHVybiB7IG5hbWU6IFwiaHRtbC5wYXJzZVwiLCBvcHRpb25zIH1cbn1cblxuLyoqIFRoZSBgaHRtbC5yYXdgIHBsdWdpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiByYXcob3B0aW9ucz86IFJhd09wdGlvbnMpOiBQbHVnaW48XCJodG1sLnJhd1wiLCBSYXdPcHRpb25zPiB7XG4gIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiB7IG5hbWU6IFwiaHRtbC5yYXdcIiB9XG4gIHJldHVybiB7IG5hbWU6IFwiaHRtbC5yYXdcIiwgb3B0aW9ucyB9XG59XG5cbi8qKiBUaGUgYGh0bWwuZm9ybWF0YCBwbHVnaW4uICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0KG9wdGlvbnM/OiBGb3JtYXRPcHRpb25zKTogUGx1Z2luPFwiaHRtbC5mb3JtYXRcIiwgRm9ybWF0T3B0aW9ucz4ge1xuICBpZiAob3B0aW9ucyA9PT0gdW5kZWZpbmVkKSByZXR1cm4geyBuYW1lOiBcImh0bWwuZm9ybWF0XCIgfVxuICByZXR1cm4geyBuYW1lOiBcImh0bWwuZm9ybWF0XCIsIG9wdGlvbnMgfVxufVxuXG4vKiogVGhlIGBodG1sLnNhbml0aXplYCBwbHVnaW4uICovXG5leHBvcnQgZnVuY3Rpb24gc2FuaXRpemUob3B0aW9ucz86IFNhbml0aXplT3B0aW9ucyk6IFBsdWdpbjxcImh0bWwuc2FuaXRpemVcIiwgU2FuaXRpemVPcHRpb25zPiB7XG4gIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiB7IG5hbWU6IFwiaHRtbC5zYW5pdGl6ZVwiIH1cbiAgcmV0dXJuIHsgbmFtZTogXCJodG1sLnNhbml0aXplXCIsIG9wdGlvbnMgfVxufVxuXG4vKiogVGhlIGBodG1sLnNsdWdgIHBsdWdpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzbHVnKG9wdGlvbnM/OiBTbHVnT3B0aW9ucyk6IFBsdWdpbjxcImh0bWwuc2x1Z1wiLCBTbHVnT3B0aW9ucz4ge1xuICBpZiAob3B0aW9ucyA9PT0gdW5kZWZpbmVkKSByZXR1cm4geyBuYW1lOiBcImh0bWwuc2x1Z1wiIH1cbiAgcmV0dXJuIHsgbmFtZTogXCJodG1sLnNsdWdcIiwgb3B0aW9ucyB9XG59XG5cbi8qKiBUaGUgYGh0bWwuZXh0ZXJuYWxMaW5rc2AgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4dGVybmFsTGlua3Mob3B0aW9ucz86IEV4dGVybmFsTGlua3NPcHRpb25zKTogUGx1Z2luPFwiaHRtbC5leHRlcm5hbExpbmtzXCIsIEV4dGVybmFsTGlua3NPcHRpb25zPiB7XG4gIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiB7IG5hbWU6IFwiaHRtbC5leHRlcm5hbExpbmtzXCIgfVxuICByZXR1cm4geyBuYW1lOiBcImh0bWwuZXh0ZXJuYWxMaW5rc1wiLCBvcHRpb25zIH1cbn1cblxuLyoqIFRoZSBgaHRtbC51bndyYXBJbWFnZXNgIHBsdWdpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1bndyYXBJbWFnZXMoKTogUGx1Z2luPFwiaHRtbC51bndyYXBJbWFnZXNcIj4ge1xuICByZXR1cm4geyBuYW1lOiBcImh0bWwudW53cmFwSW1hZ2VzXCIgfVxufVxuXG4vKiogVGhlIGBodG1sLmV4dHJhY3RUb2NgIHBsdWdpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0VG9jKG9wdGlvbnM/OiBFeHRyYWN0VG9jT3B0aW9ucyk6IFBsdWdpbjxcImh0bWwuZXh0cmFjdFRvY1wiLCBFeHRyYWN0VG9jT3B0aW9ucz4ge1xuICBpZiAob3B0aW9ucyA9PT0gdW5kZWZpbmVkKSByZXR1cm4geyBuYW1lOiBcImh0bWwuZXh0cmFjdFRvY1wiIH1cbiAgcmV0dXJuIHsgbmFtZTogXCJodG1sLmV4dHJhY3RUb2NcIiwgb3B0aW9ucyB9XG59XG5cbi8qKiBUaGUgYGh0bWwuaGlnaGxpZ2h0YCBwbHVnaW4uICovXG5leHBvcnQgZnVuY3Rpb24gaGlnaGxpZ2h0KG9wdGlvbnM/OiBIaWdobGlnaHRPcHRpb25zKTogUGx1Z2luPFwiaHRtbC5oaWdobGlnaHRcIiwgSGlnaGxpZ2h0T3B0aW9ucz4ge1xuICBpZiAob3B0aW9ucyA9PT0gdW5kZWZpbmVkKSByZXR1cm4geyBuYW1lOiBcImh0bWwuaGlnaGxpZ2h0XCIgfVxuICByZXR1cm4geyBuYW1lOiBcImh0bWwuaGlnaGxpZ2h0XCIsIG9wdGlvbnMgfVxufVxuXG4vKiogVGhlIGBodG1sLmthdGV4YCBwbHVnaW4uICovXG5leHBvcnQgZnVuY3Rpb24ga2F0ZXgob3B0aW9ucz86IEthdGV4T3B0aW9ucyk6IFBsdWdpbjxcImh0bWwua2F0ZXhcIiwgS2F0ZXhPcHRpb25zPiB7XG4gIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiB7IG5hbWU6IFwiaHRtbC5rYXRleFwiIH1cbiAgcmV0dXJuIHsgbmFtZTogXCJodG1sLmthdGV4XCIsIG9wdGlvbnMgfVxufVxuXG4vKiogVGhlIGBodG1sLnRvTWFya2Rvd25gIHBsdWdpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b01hcmtkb3duKG9wdGlvbnM/OiBUb01hcmtkb3duT3B0aW9ucyk6IFBsdWdpbjxcImh0bWwudG9NYXJrZG93blwiLCBUb01hcmtkb3duT3B0aW9ucz4ge1xuICBpZiAob3B0aW9ucyA9PT0gdW5kZWZpbmVkKSByZXR1cm4geyBuYW1lOiBcImh0bWwudG9NYXJrZG93blwiIH1cbiAgcmV0dXJuIHsgbmFtZTogXCJodG1sLnRvTWFya2Rvd25cIiwgb3B0aW9ucyB9XG59XG5cbi8qKiBUaGUgYGh0bWwudG9OYXR1cmFsTGFuZ3VhZ2VgIHBsdWdpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b05hdHVyYWxMYW5ndWFnZSgpOiBQbHVnaW48XCJodG1sLnRvTmF0dXJhbExhbmd1YWdlXCI+IHtcbiAgcmV0dXJuIHsgbmFtZTogXCJodG1sLnRvTmF0dXJhbExhbmd1YWdlXCIgfVxufVxuXG4vKiogVGhlIGBodG1sLnN0cmluZ2lmeWAgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZ2lmeShvcHRpb25zPzogU3RyaW5naWZ5T3B0aW9ucyk6IFBsdWdpbjxcImh0bWwuc3RyaW5naWZ5XCIsIFN0cmluZ2lmeU9wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJodG1sLnN0cmluZ2lmeVwiIH1cbiAgcmV0dXJuIHsgbmFtZTogXCJodG1sLnN0cmluZ2lmeVwiLCBvcHRpb25zIH1cbn1cbiJdfQ==
@@ -101,6 +101,8 @@ export interface DirectiveRule {
101
101
  required?: string[];
102
102
  /** Wrap runs of adjacent siblings this rule converted in another component. */
103
103
  group?: GroupRule | null;
104
+ /** The attribute that gets the lists of a container directive as a file tree, JSON items `{name, type, comment?, highlighted?, children?}`; the lists leave its content. */
105
+ treeAs?: string | null;
104
106
  }
105
107
  /** One name or several. */
106
108
  export type Names = string | string[];
@@ -184,7 +186,28 @@ export type CargoManager = "cargo" | "cargo-binstall";
184
186
  export interface HeadingIdOptions {
185
187
  /** Read a whole attribute list, `{#id .class key=value key="v w"}`, as directives write theirs: classes become `className` and other keys properties. @default false */
186
188
  attributes?: boolean;
189
+ /** Literal suffixes, such as `[step]`, stripped from a heading's end for the attributes each names, a value or `true` for a bare one: `{"[step]": {"data-step": true}}`. */
190
+ markers?: Record<string, Record<string, MarkerValue>>;
187
191
  }
192
+ /** An attribute a heading marker sets: its value, or `true` for the bare attribute. */
193
+ export type MarkerValue = boolean | string;
194
+ /** `md.pathRewrite`: the URLs of images, links and definitions as a site serves them: relative ones resolved against the file's path and made root-relative, every root-relative one under `base`, and links to Markdown files turned into page URLs. */
195
+ export interface PathRewriteOptions {
196
+ /** The directory URLs count from, as the file's path spells it; the path's own starting point when left out. */
197
+ root?: string | null;
198
+ /** The URL the site is served at, such as `/docs`, put before every root-relative URL once. */
199
+ base?: string | null;
200
+ /** The nodes whose URLs are rewritten; images, links and definitions when left out. */
201
+ nodes?: UrlNode[] | null;
202
+ /** Markdown files, relative to `root`, to the URL of their page; a link to one of them takes it, before `markdownLinks` applies. @default {} */
203
+ pages?: Record<string, string>;
204
+ /** How a link to a Markdown file no page names becomes a URL. */
205
+ markdownLinks?: MarkdownLinks;
206
+ }
207
+ /** A node with a URL. */
208
+ export type UrlNode = "image" | "link" | "definition";
209
+ /** How a link to a Markdown file becomes a URL. */
210
+ export type MarkdownLinks = "keep" | "directory" | "html";
188
211
  /** `md.strip`: mdast down to its text, as strip-markdown does: code, HTML, tables and the like dropped, headings made paragraphs, formatting unwrapped. */
189
212
  export interface StripOptions {
190
213
  /** Node types to leave as they are, such as `inlineCode`. @default [] */
@@ -291,6 +314,15 @@ export interface ToHtmlOptions {
291
314
  footnoteLabelTagName?: string | null;
292
315
  /** Node types without a handler to copy into hast as they are, their children converted. @default [] */
293
316
  passThrough?: string[];
317
+ /** An `aria-label` for each task-list checkbox, so screen readers name it; none when left out, as remark-rehype writes none. */
318
+ taskListLabels?: TaskListLabels | null;
319
+ }
320
+ /** The labels of task-list checkboxes. */
321
+ export interface TaskListLabels {
322
+ /** The label of a checked box, such as `Completed task`. */
323
+ checked: string;
324
+ /** The label of an unchecked box, such as `Task`. */
325
+ unchecked: string;
294
326
  }
295
327
  /** `md.toNaturalLanguage`: mdast into nlcst, tokenized by the processor's natural-language parser; options named as remark-retext and mdast-util-to-nlcst name them. */
296
328
  export interface ToNaturalLanguageOptions {
@@ -321,6 +353,8 @@ export declare function component(options?: ComponentOptions): Plugin<"md.compon
321
353
  export declare function packageCommand(options?: PackageCommandOptions): Plugin<"md.packageCommand", PackageCommandOptions>;
322
354
  /** The `md.headingId` plugin. */
323
355
  export declare function headingId(options?: HeadingIdOptions): Plugin<"md.headingId", HeadingIdOptions>;
356
+ /** The `md.pathRewrite` plugin. */
357
+ export declare function pathRewrite(options?: PathRewriteOptions): Plugin<"md.pathRewrite", PathRewriteOptions>;
324
358
  /** The `md.strip` plugin. */
325
359
  export declare function strip(options?: StripOptions): Plugin<"md.strip", StripOptions>;
326
360
  /** The `md.toc` plugin. */
@@ -61,6 +61,12 @@ export function headingId(options) {
61
61
  return { name: "md.headingId" };
62
62
  return { name: "md.headingId", options };
63
63
  }
64
+ /** The `md.pathRewrite` plugin. */
65
+ export function pathRewrite(options) {
66
+ if (options === undefined)
67
+ return { name: "md.pathRewrite" };
68
+ return { name: "md.pathRewrite", options };
69
+ }
64
70
  /** The `md.strip` plugin. */
65
71
  export function strip(options) {
66
72
  if (options === undefined)
@@ -91,4 +97,4 @@ export function toNaturalLanguage(options) {
91
97
  return { name: "md.toNaturalLanguage" };
92
98
  return { name: "md.toNaturalLanguage", options };
93
99
  }
94
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9nZW5lcmF0ZWQvbWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0VBQStFO0FBOFUvRSw2QkFBNkI7QUFDN0IsTUFBTSxVQUFVLEtBQUssQ0FBQyxPQUFzQjtJQUMxQyxJQUFJLE9BQU8sS0FBSyxTQUFTO1FBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsQ0FBQTtJQUN0RCxPQUFPLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsQ0FBQTtBQUN0QyxDQUFDO0FBRUQsaUNBQWlDO0FBQ2pDLE1BQU0sVUFBVSxTQUFTLENBQUMsT0FBMEI7SUFDbEQsSUFBSSxPQUFPLEtBQUssU0FBUztRQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLENBQUE7SUFDMUQsT0FBTyxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLENBQUE7QUFDMUMsQ0FBQztBQUVELDJCQUEyQjtBQUMzQixNQUFNLFVBQVUsR0FBRyxDQUFDLE9BQW9CO0lBQ3RDLElBQUksT0FBTyxLQUFLLFNBQVM7UUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFBO0lBQ3BELE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFBO0FBQ3BDLENBQUM7QUFFRCxzQ0FBc0M7QUFDdEMsTUFBTSxVQUFVLGNBQWM7SUFDNUIsT0FBTyxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxDQUFBO0FBQ3RDLENBQUM7QUFFRCw0QkFBNEI7QUFDNUIsTUFBTSxVQUFVLElBQUksQ0FBQyxPQUFxQjtJQUN4QyxJQUFJLE9BQU8sS0FBSyxTQUFTO1FBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQTtJQUNyRCxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsQ0FBQTtBQUNyQyxDQUFDO0FBRUQsMkJB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QUFDbEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEdlbmVyYXRlZCBieSBgcG5wbSBnZW5lcmF0ZTpiaW5kaW5nc2AgZnJvbSB0aGUgY3JhdGUncyBwbHVnaW5zOyBkbyBub3QgZWRpdC5cblxuaW1wb3J0IHR5cGUgeyBQbHVnaW4gfSBmcm9tIFwiLi4vbW9kZWxzL3BsdWdpbi50c1wiXG5cbi8qKiBgbWQucGFyc2VgOiBNYXJrZG93biBpbnRvIG1kYXN0LiAqL1xuZXhwb3J0IHR5cGUgUGFyc2VPcHRpb25zID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj5cblxuLyoqIGBtZC5kaXJlY3RpdmVgOiBnZW5lcmljIGRpcmVjdGl2ZXMsIGA6YWAsIGA6OmJgIGFuZCBgOjo6Y2AsIHJlYWQgYnkgYG1kLnBhcnNlYCBhbmQgd3JpdHRlbiBieSBgbWQuc3RyaW5naWZ5YDsgb3B0aW9ucyBuYW1lZCBhcyBtZGFzdC11dGlsLWRpcmVjdGl2ZSdzIHNlcmlhbGl6ZXIgbmFtZXMgdGhlbS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGlyZWN0aXZlT3B0aW9ucyB7XG4gIC8qKiBXcml0ZSBhbiBlbXB0eSBhdHRyaWJ1dGUgYXMgaXRzIG5hbWUgYWxvbmUsIGB7YX1gLCByYXRoZXIgdGhhbiBge2E9XCJcIn1gLiBAZGVmYXVsdCB0cnVlICovXG4gIGNvbGxhcHNlRW1wdHlBdHRyaWJ1dGVzPzogYm9vbGVhblxuICAvKiogV3JpdGUgYGlkYCBhbmQgYGNsYXNzYCBhcyBgI2FgIGFuZCBgLmJgIHdoZXJlIHRoZXkgY2FuIGJlLiBAZGVmYXVsdCB0cnVlICovXG4gIHByZWZlclNob3J0Y3V0PzogYm9vbGVhblxuICAvKiogTGVhdmUgYXR0cmlidXRlIHZhbHVlcyB1bnF1b3RlZCB3aGVyZSB0aGV5IGNhbiBiZS4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgcHJlZmVyVW5xdW90ZWQ/OiBib29sZWFuXG4gIC8qKiBUaGUgcXVvdGUgb2YgYXR0cmlidXRlIHZhbHVlczogYFwiYCBvciBgJ2A7IGBtZC5zdHJpbmdpZnlgJ3MgYHF1b3RlYCB3aGVuIHVuc2V0LiAqL1xuICBxdW90ZT86IHN0cmluZyB8IG51bGxcbiAgLyoqIFVzZSB0aGUgb3RoZXIgcXVvdGUgd2hlbiB0aGUgcHJlZmVycmVkIG9uZSBvY2N1cnMgbW9yZSBvZnRlbiBpbiBhIHZhbHVlLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBxdW90ZVNtYXJ0PzogYm9vbGVhblxufVxuXG4vKiogYG1kLmdmbWA6IEdpdEh1YiBGbGF2b3JlZCBNYXJrZG93bidzIHN5bnRheCwgcmVhZCBieSBgbWQucGFyc2VgIGFuZCB3cml0dGVuIGJ5IGBtZC5zdHJpbmdpZnlgOyBvcHRpb25zIG5hbWVkIGFzIHJlbWFyay1nZm0gbmFtZXMgdGhlbS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2ZtT3B0aW9ucyB7XG4gIC8qKiBMZXQgb25lIHRpbGRlLCBgfmF+YCwgZm9ybSBzdHJpa2V0aHJvdWdoLCBhcyB3ZWxsIGFzIHR3by4gQGRlZmF1bHQgdHJ1ZSAqL1xuICBzaW5nbGVUaWxkZT86IGJvb2xlYW5cbiAgLyoqIFBhZCB0YWJsZSBjZWxscyB3aXRoIGEgc3BhY2Ugb24gZWFjaCBzaWRlIHdoZW4gd3JpdGluZyBNYXJrZG93bi4gQGRlZmF1bHQgdHJ1ZSAqL1xuICB0YWJsZUNlbGxQYWRkaW5nPzogYm9vbGVhblxuICAvKiogTGluZSB1cCB0YWJsZSBwaXBlcyB3aGVuIHdyaXRpbmcgTWFya2Rvd24uIEBkZWZhdWx0IHRydWUgKi9cbiAgdGFibGVQaXBlQWxpZ24/OiBib29sZWFuXG4gIC8qKiBXcml0ZSBhIGZvb3Rub3RlIGRlZmluaXRpb24ncyBmaXJzdCBsaW5lIGJsYW5rIHdoZW4gaXQgaG9sZHMgZmxvdyBjb250ZW50LiBAZGVmYXVsdCBmYWxzZSAqL1xuICBmaXJzdExpbmVCbGFuaz86IGJvb2xlYW5cbn1cblxuLyoqIGBtZC5tYXRoYDogbWF0aCBzeW50YXgsIGAkJGAgYmxvY2tzIGFuZCBgJGAgdGV4dCwgcmVhZCBieSBgbWQucGFyc2VgIGFuZCB3cml0dGVuIGJ5IGBtZC5zdHJpbmdpZnlgOyBvcHRpb25zIG5hbWVkIGFzIHJlbWFyay1tYXRoIG5hbWVzIHRoZW0uICovXG5leHBvcnQgaW50ZXJmYWNlIE1hdGhPcHRpb25zIHtcbiAgLyoqIExldCBvbmUgZG9sbGFyLCBgJGEkYCwgZm9ybSBtYXRoIGluIHRleHQsIGFzIHdlbGwgYXMgdHdvLiBAZGVmYXVsdCB0cnVlICovXG4gIHNpbmdsZURvbGxhclRleHRNYXRoPzogYm9vbGVhblxufVxuXG4vKiogYG1kLm1keGA6IE1EWCBzeW50YXgsIEpTWCwgZXhwcmVzc2lvbnMgYW5kIEVTTSwgcmVhZCBieSBgbWQucGFyc2VgIGFuZCB3cml0dGVuIGJ5IGBtZC5zdHJpbmdpZnlgOyBpdCB0dXJucyBvZmYgaW5kZW50ZWQgY29kZSwgYXV0b2xpbmtzIGFuZCByYXcgSFRNTDsgb3B0aW9ucyBuYW1lZCBhcyByZW1hcmstbWR4IGFuZCBtZGFzdC11dGlsLW1keC1qc3gncyBzZXJpYWxpemVyIG5hbWUgdGhlbS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWR4T3B0aW9ucyB7XG4gIC8qKiBUaGUgcXVvdGUgb2YgSlNYIGF0dHJpYnV0ZSB2YWx1ZXM6IGBcImAgKHdoZW4gdW5zZXQpIG9yIGAnYC4gKi9cbiAgcXVvdGU/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBVc2UgdGhlIG90aGVyIHF1b3RlIHdoZW4gdGhlIHByZWZlcnJlZCBvbmUgb2NjdXJzIG1vcmUgb2Z0ZW4gaW4gYSB2YWx1ZS4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgcXVvdGVTbWFydD86IGJvb2xlYW5cbiAgLyoqIFdyaXRlIHNlbGYtY2xvc2luZyB0YWdzIHdpdGhvdXQgYSBzcGFjZSBiZWZvcmUgdGhlIHNsYXNoLCBgPGEvPmAuIEBkZWZhdWx0IGZhbHNlICovXG4gIHRpZ2h0U2VsZkNsb3Npbmc/OiBib29sZWFuXG4gIC8qKiBUaGUgd2lkdGggcGFzdCB3aGljaCBhIGZsb3cgZWxlbWVudCdzIGF0dHJpYnV0ZXMgZ28gb24gbGluZXMgb2YgdGhlaXIgb3duLiAqL1xuICBwcmludFdpZHRoPzogbnVtYmVyIHwgbnVsbFxufVxuXG4vKiogVGhlIGtpbmRzIG9mIG1hdHRlciB0byByZWNvZ25pemUsIGFzIHJlbWFyay1mcm9udG1hdHRlciB0YWtlcyB0aGVtIChhIHByZXNldCwgYSBtYXR0ZXIsIG9yIGEgbGlzdCBvZiB0aGVtOyBgeWFtbGAgd2hlbiB1bnNldCksIG9yIHRleHRsYW5lJ3Mgb3B0aW9ucyBvYmplY3QuICovXG5leHBvcnQgdHlwZSBGcm9udG1hdHRlck9wdGlvbnMgPSBcInlhbWxcIiB8IFwidG9tbFwiIHwgTWF0dGVyIHwgKFwieWFtbFwiIHwgXCJ0b21sXCIgfCBNYXR0ZXIpW10gfCBGcm9udG1hdHRlclNldHRpbmdzXG5cbi8qKiBPbmUga2luZCBvZiBmcm9udG1hdHRlcjogdGhlIG5vZGUgYHR5cGVgIGl0IGJlY29tZXMgYW5kIGl0cyBmZW5jZXMsIGEgYG1hcmtlcmAgcmVwZWF0ZWQgdGhyZWUgdGltZXMgb3IgYSB3aG9sZSBgZmVuY2VgLiAqL1xuZXhwb3J0IGludGVyZmFjZSBNYXR0ZXIge1xuICB0eXBlOiBzdHJpbmdcbiAgbWFya2VyPzogRmVuY2VcbiAgZmVuY2U/OiBGZW5jZVxuICBhbnl3aGVyZT86IGJvb2xlYW5cbn1cblxuLyoqIERpZmZlcmVudCBvcGVuaW5nIGFuZCBjbG9zaW5nIGZlbmNlcy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmVuY2VQYWlyIHtcbiAgb3Blbjogc3RyaW5nXG4gIGNsb3NlOiBzdHJpbmdcbn1cblxuLyoqIEEgZmVuY2UsIG9yIGl0cyBvcGVuaW5nIGFuZCBjbG9zaW5nIG9uZXMuICovXG5leHBvcnQgdHlwZSBGZW5jZSA9IHN0cmluZyB8IEZlbmNlUGFpclxuXG4vKiogdGV4dGxhbmUncyBvcHRpb25zOiB0aGUgbWF0dGVycywgYW5kIHdoYXQgdG8gZG8gd2l0aCBZQU1MIGZyb250bWF0dGVyLiAqL1xuZXhwb3J0IGludGVyZmFjZSBGcm9udG1hdHRlclNldHRpbmdzIHtcbiAgLyoqIFRoZSBraW5kcyBvZiBtYXR0ZXIgdG8gcmVjb2duaXplLCBhcyByZW1hcmstZnJvbnRtYXR0ZXIgdGFrZXMgdGhlbTsgYHlhbWxgIHdoZW4gdW5zZXQuICovXG4gIG1hdHRlcnM/OiBcInlhbWxcIiB8IFwidG9tbFwiIHwgTWF0dGVyIHwgKFwieWFtbFwiIHwgXCJ0b21sXCIgfCBNYXR0ZXIpW11cbiAgLyoqIFBhcnNlIHRoZSBZQU1MIGZyb250bWF0dGVyIGEgZG9jdW1lbnQgc3RhcnRzIHdpdGggaW50byBgZmlsZS5kYXRhLm1hdHRlcmAsIGB7fWAgd2hlbiB0aGVyZSBpcyBub25lLCBhcyB2ZmlsZS1tYXR0ZXIgZG9lcy4gKi9cbiAgZGF0YT86IGJvb2xlYW5cbiAgLyoqIFJlbW92ZSB0aGUgWUFNTCBmcm9udG1hdHRlciBhIGRvY3VtZW50IHN0YXJ0cyB3aXRoIGZyb20gdGhlIHRyZWUuICovXG4gIHN0cmlwPzogYm9vbGVhblxufVxuXG4vKiogYG1kLmNvbXBvbmVudGA6IGRpcmVjdGl2ZXMsIEdpdEh1YiBhbGVydHMgYW5kIG90aGVyIG5vZGVzIGludG8gTURYIEpTWCBlbGVtZW50cywgdGhlIGNvbXBvbmVudHMgYW4gTURYIHJ1bnRpbWUgcmVuZGVycywgYnkgZGVjbGFyYXRpdmUgcnVsZXMuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudE9wdGlvbnMge1xuICAvKiogUnVsZXMgZm9yIGRpcmVjdGl2ZXM7IHRoZSBmaXJzdCB0aGF0IG1hdGNoZXMgYSBkaXJlY3RpdmUgY29udmVydHMgaXQuICovXG4gIGRpcmVjdGl2ZXM/OiBEaXJlY3RpdmVSdWxlW11cbiAgLyoqIEdpdEh1YiBhbGVydHMsIGA+IFshTk9URV1gLCBpbnRvIGEgY29tcG9uZW50LiAqL1xuICBhbGVydHM/OiBBbGVydFJ1bGUgfCBudWxsXG4gIC8qKiBOb2RlIHR5cGVzLCBzdWNoIGFzIGBkZWZMaXN0YCwgaW50byBjb21wb25lbnRzIGtlZXBpbmcgdGhlaXIgY2hpbGRyZW4uIEBkZWZhdWx0IHt9ICovXG4gIG5vZGVzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPlxuICAvKiogV2hhdCBiZWNvbWVzIG9mIGEgZGlyZWN0aXZlIG5vIHJ1bGUgY29udmVydHMuICovXG4gIHVua25vd25EaXJlY3RpdmVzPzogVW5rbm93bkRpcmVjdGl2ZXNcbiAgLyoqIFJ1bGVzIGZvciBmZW5jZWQgY29kZTsgdGhlIGZpcnN0IHRoYXQgbWF0Y2hlcyBhIGJsb2NrIGFwcGxpZXMuICovXG4gIGNvZGVzPzogQ29kZVJ1bGVbXVxufVxuXG4vKiogSG93IGBtZC5jb21wb25lbnRgIHR1cm5zIG1hdGNoaW5nIGRpcmVjdGl2ZXMgaW50byBvbmUgY29tcG9uZW50LiAqL1xuZXhwb3J0IGludGVyZmFjZSBEaXJlY3RpdmVSdWxlIHtcbiAgLyoqIFRoZSBkaXJlY3RpdmUncyBuYW1lLCBvciBzZXZlcmFsLiAqL1xuICBuYW1lOiBOYW1lc1xuICAvKiogVGhlIGtpbmQgb2YgZGlyZWN0aXZlOiBgdGV4dGAsIGBsZWFmYCBvciBgY29udGFpbmVyYDsgYW55IHdoZW4gbGVmdCBvdXQuICovXG4gIGtpbmQ/OiBEaXJlY3RpdmVLaW5kIHwgbnVsbFxuICAvKiogQXR0cmlidXRlIHZhbHVlcyB0aGUgZGlyZWN0aXZlIG11c3QgaGF2ZS4gQGRlZmF1bHQge30gKi9cbiAgd2hlcmU/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+XG4gIC8qKiBUaGUgY29tcG9uZW50OiBhIHRleHQgZWxlbWVudCBmb3IgYSB0ZXh0IGRpcmVjdGl2ZSwgZWxzZSBhIGZsb3cgZWxlbWVudC4gKi9cbiAgY29tcG9uZW50OiBzdHJpbmdcbiAgLyoqIFRoZSBhdHRyaWJ1dGUgdGhhdCBnZXRzIHRoZSBkaXJlY3RpdmUncyBuYW1lLiAqL1xuICBuYW1lQXM/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBUaGUgYXR0cmlidXRlIHRoYXQgZ2V0cyB0aGUgbGFiZWwncyB0ZXh0OiBhIGNvbnRhaW5lcidzIGxhYmVsIHBhcmFncmFwaCBvciBhIHRleHQgb3IgbGVhZiBkaXJlY3RpdmUncyBjb250ZW50LCB3aGljaCBpcyB0aGVuIGRyb3BwZWQuICovXG4gIGxhYmVsQXM/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBUaGUgbGFiZWwncyB0ZXh0IHdoZW4gdGhlcmUgaXMgbm9uZS4gKi9cbiAgbGFiZWxEZWZhdWx0Pzogc3RyaW5nIHwgbnVsbFxuICAvKiogVGhlIGF0dHJpYnV0ZXMgdG8ga2VlcCwgaW4gb3JkZXI7IGV2ZXJ5IG9uZSwgYXMgd3JpdHRlbiwgd2hlbiBsZWZ0IG91dC4gKi9cbiAgYXR0cmlidXRlcz86IEF0dHJpYnV0ZVJ1bGVbXSB8IG51bGxcbiAgLyoqIEF0dHJpYnV0ZXMgd2l0aG91dCB3aGljaCB0aGUgZGlyZWN0aXZlIGlzIGxlZnQgdG8gYHVua25vd25EaXJlY3RpdmVzYC4gQGRlZmF1bHQgW10gKi9cbiAgcmVxdWlyZWQ/OiBzdHJpbmdbXVxuICAvKiogV3JhcCBydW5zIG9mIGFkamFjZW50IHNpYmxpbmdzIHRoaXMgcnVsZSBjb252ZXJ0ZWQgaW4gYW5vdGhlciBjb21wb25lbnQuICovXG4gIGdyb3VwPzogR3JvdXBSdWxlIHwgbnVsbFxufVxuXG4vKiogT25lIG5hbWUgb3Igc2V2ZXJhbC4gKi9cbmV4cG9ydCB0eXBlIE5hbWVzID0gc3RyaW5nIHwgc3RyaW5nW11cblxuLyoqIEEgZGlyZWN0aXZlJ3Mga2luZCwgYnkgaG93IG1hbnkgY29sb25zIG9wZW4gaXQuICovXG5leHBvcnQgdHlwZSBEaXJlY3RpdmVLaW5kID0gXCJ0ZXh0XCIgfCBcImxlYWZcIiB8IFwiY29udGFpbmVyXCJcblxuLyoqIEFuIGF0dHJpYnV0ZSB0byBrZWVwOiBpdHMgbmFtZSwgb3IgaXRzIG5hbWUgd2l0aCB3aGF0IHRvIGNhbGwgaXQgYW5kIGEgZGVmYXVsdC4gKi9cbmV4cG9ydCB0eXBlIEF0dHJpYnV0ZVJ1bGUgPSBzdHJpbmcgfCB7IG5hbWU6IHN0cmluZzsgcmVuYW1lPzogc3RyaW5nIHwgbnVsbDsgZGVmYXVsdD86IHN0cmluZyB8IG51bGwgfVxuXG4vKiogVGhlIGNvbXBvbmVudCB3cmFwcGluZyBhIHJ1biBvZiBhZGphY2VudCBzaWJsaW5ncyBvbmUgcnVsZSBjb252ZXJ0ZWQuICovXG5leHBvcnQgaW50ZXJmYWNlIEdyb3VwUnVsZSB7XG4gIC8qKiBUaGUgd3JhcHBpbmcgY29tcG9uZW50LiAqL1xuICBjb21wb25lbnQ6IHN0cmluZ1xuICAvKiogVGhlIHNob3J0ZXN0IHJ1biB3cmFwcGVkOyAyIHdoZW4gbGVmdCBvdXQuICovXG4gIG1pbj86IG51bWJlciB8IG51bGxcbiAgLyoqIEF0dHJpYnV0ZXMgdGhlIHdyYXBwZXIgY29waWVzIGZyb20gdGhlIHJ1bidzIGZpcnN0IGVsZW1lbnQuIEBkZWZhdWx0IFtdICovXG4gIGluaGVyaXQ/OiBzdHJpbmdbXVxufVxuXG4vKiogSG93IGBtZC5jb21wb25lbnRgIHR1cm5zIEdpdEh1YiBhbGVydHMsIGEgYmxvY2sgcXVvdGUgb3BlbmluZyB3aXRoIGBbIVRZUEVdYCwgaW50byBhIGNvbXBvbmVudC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWxlcnRSdWxlIHtcbiAgLyoqIFRoZSBjb21wb25lbnQgYW4gYWxlcnQgYmVjb21lcy4gKi9cbiAgY29tcG9uZW50OiBzdHJpbmdcbiAgLyoqIFRoZSBhdHRyaWJ1dGUgdGhhdCBnZXRzIHRoZSBhbGVydCdzIHR5cGUuICovXG4gIHR5cGVBczogc3RyaW5nXG4gIC8qKiBFYWNoIGFsZXJ0IHR5cGUsIGFzIHdyaXR0ZW4sIHRvIHRoZSB2YWx1ZSBvZiBgdHlwZUFzYDsgb3RoZXIgdHlwZXMgc3RheSBibG9jayBxdW90ZXMuICovXG4gIHR5cGVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+XG59XG5cbi8qKiBXaGF0IGBtZC5jb21wb25lbnRgIGRvZXMgd2l0aCBhIGRpcmVjdGl2ZSBubyBydWxlIGNvbnZlcnRzLiAqL1xuZXhwb3J0IHR5cGUgVW5rbm93bkRpcmVjdGl2ZXMgPSBcImtlZXBcIiB8IFwic291cmNlXCJcblxuLyoqIEhvdyBgbWQuY29tcG9uZW50YCB0dXJucyBtYXRjaGluZyBjb2RlIGJsb2NrcyBpbnRvIGEgY29tcG9uZW50LCBvciBncm91cHMgdGhlbS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29kZVJ1bGUge1xuICAvKiogVGhlIGJsb2NrJ3MgbGFuZ3VhZ2UsIG9yIHNldmVyYWw7IGFueSB3aGVuIGxlZnQgb3V0LiAqL1xuICBsYW5nPzogTmFtZXMgfCBudWxsXG4gIC8qKiBBIGBrZXk9XCJ2YWx1ZVwiYCB0aGUgYmxvY2sncyBtZXRhIG11c3QgaG9sZC4gKi9cbiAgbWV0YT86IHN0cmluZyB8IG51bGxcbiAgLyoqIFRoZSBjb21wb25lbnQgdGhlIGJsb2NrIGJlY29tZXM7IGxlZnQgb3V0LCB0aGUgYmxvY2sgc3RheXMgY29kZSBhbmQgb25seSBncm91cHMuICovXG4gIGNvbXBvbmVudD86IHN0cmluZyB8IG51bGxcbiAgLyoqIFRoZSBhdHRyaWJ1dGUgdGhhdCBnZXRzIHRoZSBjb2RlOyBsZWZ0IG91dCwgdGhlIGNvZGUgaXMgdGhlIGNvbXBvbmVudCdzIHRleHQuICovXG4gIHZhbHVlQXM/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBNZXRhIGBrZXk9XCJ2YWx1ZVwiYCBwYWlycyB0byBrZWVwIGFzIGF0dHJpYnV0ZXMsIGluIG9yZGVyLiAqL1xuICBhdHRyaWJ1dGVzPzogQXR0cmlidXRlUnVsZVtdXG4gIC8qKiBXcmFwIHJ1bnMgb2YgYWRqYWNlbnQgYmxvY2tzIHRoaXMgcnVsZSBtYXRjaGVkIGluIGFub3RoZXIgY29tcG9uZW50LiAqL1xuICBncm91cD86IENvZGVHcm91cFJ1bGUgfCBudWxsXG59XG5cbi8qKiBUaGUgY29tcG9uZW50IHdyYXBwaW5nIGEgcnVuIG9mIGFkamFjZW50IGNvZGUgYmxvY2tzIG9uZSBydWxlIG1hdGNoZWQ7IHRoZSBtZXRhIGtleXMgaXQgcmVhZHMgYXJlIHRha2VuIG91dCBvZiBlYWNoIGJsb2NrJ3MgbWV0YS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29kZUdyb3VwUnVsZSB7XG4gIC8qKiBUaGUgd3JhcHBpbmcgY29tcG9uZW50LiAqL1xuICBjb21wb25lbnQ6IHN0cmluZ1xuICAvKiogVGhlIHNob3J0ZXN0IHJ1biB3cmFwcGVkOyAyIHdoZW4gbGVmdCBvdXQuICovXG4gIG1pbj86IG51bWJlciB8IG51bGxcbiAgLyoqIFRoZSBhdHRyaWJ1dGUgdGhhdCBnZXRzIHRoZSBydW4ncyB2YWx1ZXMgb2YgdGhlIHJ1bGUncyBgbWV0YWAga2V5LCBhcyBhIEpTT04gbGlzdC4gKi9cbiAgY29sbGVjdD86IHN0cmluZyB8IG51bGxcbiAgLyoqIE1ldGEga2V5cyB0aGUgd3JhcHBlciBjb3BpZXMgZnJvbSB0aGUgcnVuJ3MgZmlyc3QgYmxvY2sgYXMgYXR0cmlidXRlcy4gQGRlZmF1bHQgW10gKi9cbiAgaW5oZXJpdD86IHN0cmluZ1tdXG59XG5cbi8qKiBgbWQucGFja2FnZUNvbW1hbmRgOiBhIGZlbmNlZCBibG9jayBvZiBwYWNrYWdlLW1hbmFnZXIgY29tbWFuZHMsIGl0cyBsYW5ndWFnZSBuYW1pbmcgdGhlIGVjb3N5c3RlbSAoYG5wbWAsIGBwaXBgLCBgY2FyZ29gKSwgaW50byBvbmUgY29tcG9uZW50IHdpdGggdGhlIGNvbW1hbmRzIGNvbnZlcnRlZCBmb3IgZWFjaCBtYW5hZ2VyLCBhcyBgQGRvY3VzYXVydXMvcmVtYXJrLXBsdWdpbi1ucG0yeWFybmAgZG9lcyBmb3IgbnBtLiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYWNrYWdlQ29tbWFuZE9wdGlvbnMge1xuICAvKiogVGhlIGNvbXBvbmVudCBhIGJsb2NrIGJlY29tZXM7IG9uZSBzdHJpbmcgYXR0cmlidXRlIHBlciBtYW5hZ2VyLiBAZGVmYXVsdCBcIlBhY2thZ2VUYWJzXCIgKi9cbiAgY29tcG9uZW50Pzogc3RyaW5nXG4gIC8qKiBFYWNoIGVjb3N5c3RlbSdzIG1hbmFnZXJzLCBpbiBhdHRyaWJ1dGUgb3JkZXI7IGFuIGVtcHR5IGxpc3QgbGVhdmVzIGl0cyBibG9ja3MgY29kZS4gKi9cbiAgZWNvc3lzdGVtcz86IEVjb3N5c3RlbXNcbn1cblxuLyoqIFRoZSBtYW5hZ2VycyBgbWQucGFja2FnZUNvbW1hbmRgIGNvbnZlcnRzIGVhY2ggZWNvc3lzdGVtJ3MgY29tbWFuZHMgZm9yLiAqL1xuZXhwb3J0IGludGVyZmFjZSBFY29zeXN0ZW1zIHtcbiAgLyoqIE1hbmFnZXJzIGZvciBgbnBtYCBibG9ja3MsIGNvbnZlcnRlZCBhcyBucG0tdG8teWFybiBjb252ZXJ0czsgbnBtLCBwbnBtLCB5YXJuIGFuZCBidW4gYnkgZGVmYXVsdC4gKi9cbiAgbnBtPzogTnBtTWFuYWdlcltdXG4gIC8qKiBNYW5hZ2VycyBmb3IgYHBpcGAgYmxvY2tzOyBwaXAsIHV2LCBwb2V0cnkgYW5kIHBkbSBieSBkZWZhdWx0LiAqL1xuICBwaXA/OiBQaXBNYW5hZ2VyW11cbiAgLyoqIE1hbmFnZXJzIGZvciBgY2FyZ29gIGJsb2NrczsgY2FyZ28gYW5kIGNhcmdvLWJpbnN0YWxsIGJ5IGRlZmF1bHQuICovXG4gIGNhcmdvPzogQ2FyZ29NYW5hZ2VyW11cbn1cblxuLyoqIEEgSmF2YVNjcmlwdCBwYWNrYWdlIG1hbmFnZXIgYW4gYG5wbWAgY29tbWFuZCBjb252ZXJ0cyB0by4gKi9cbmV4cG9ydCB0eXBlIE5wbU1hbmFnZXIgPSBcIm5wbVwiIHwgXCJwbnBtXCIgfCBcInlhcm5cIiB8IFwiYnVuXCIgfCBcImRlbm9cIiB8IFwibnViXCJcblxuLyoqIEEgUHl0aG9uIHBhY2thZ2UgbWFuYWdlciBhIGBwaXBgIGNvbW1hbmQgY29udmVydHMgdG8uICovXG5leHBvcnQgdHlwZSBQaXBNYW5hZ2VyID0gXCJwaXBcIiB8IFwidXZcIiB8IFwicG9ldHJ5XCIgfCBcInBkbVwiXG5cbi8qKiBBIFJ1c3QgaW5zdGFsbGVyIGEgYGNhcmdvYCBjb21tYW5kIGNvbnZlcnRzIHRvLiAqL1xuZXhwb3J0IHR5cGUgQ2FyZ29NYW5hZ2VyID0gXCJjYXJnb1wiIHwgXCJjYXJnby1iaW5zdGFsbFwiXG5cbi8qKiBgbWQuaGVhZGluZ0lkYDogYHsjaWR9YCBhdCB0aGUgZW5kIG9mIGEgaGVhZGluZywgYWZ0ZXIgYSBzcGFjZSwgYXMgaXRzIGlkLCBhcyByZW1hcmstaGVhZGluZy1pZCByZWFkcyBpdDsgaGVhZGluZ3Mgd2l0aG91dCBvbmUga2VlcCBub25lLiAqL1xuZXhwb3J0IGludGVyZmFjZSBIZWFkaW5nSWRPcHRpb25zIHtcbiAgLyoqIFJlYWQgYSB3aG9sZSBhdHRyaWJ1dGUgbGlzdCwgYHsjaWQgLmNsYXNzIGtleT12YWx1ZSBrZXk9XCJ2IHdcIn1gLCBhcyBkaXJlY3RpdmVzIHdyaXRlIHRoZWlyczogY2xhc3NlcyBiZWNvbWUgYGNsYXNzTmFtZWAgYW5kIG90aGVyIGtleXMgcHJvcGVydGllcy4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgYXR0cmlidXRlcz86IGJvb2xlYW5cbn1cblxuLyoqIGBtZC5zdHJpcGA6IG1kYXN0IGRvd24gdG8gaXRzIHRleHQsIGFzIHN0cmlwLW1hcmtkb3duIGRvZXM6IGNvZGUsIEhUTUwsIHRhYmxlcyBhbmQgdGhlIGxpa2UgZHJvcHBlZCwgaGVhZGluZ3MgbWFkZSBwYXJhZ3JhcGhzLCBmb3JtYXR0aW5nIHVud3JhcHBlZC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RyaXBPcHRpb25zIHtcbiAgLyoqIE5vZGUgdHlwZXMgdG8gbGVhdmUgYXMgdGhleSBhcmUsIHN1Y2ggYXMgYGlubGluZUNvZGVgLiBAZGVmYXVsdCBbXSAqL1xuICBrZWVwPzogc3RyaW5nW11cbiAgLyoqIE5vZGUgdHlwZXMgdG8gZHJvcCwgYmVzaWRlcyB0aG9zZSBzdHJpcC1tYXJrZG93biBkcm9wcy4gQGRlZmF1bHQgW10gKi9cbiAgcmVtb3ZlPzogc3RyaW5nW11cbn1cblxuLyoqIGBtZC50b2NgOiBhIHRhYmxlIG9mIGNvbnRlbnRzIHVuZGVyIHRoZSBmaXJzdCBoZWFkaW5nIG1hdGNoaW5nIGBoZWFkaW5nYCwgcmVwbGFjaW5nIHdoYXQgc2F0IGJldHdlZW4gaXQgYW5kIHRoZSBuZXh0IGhlYWRpbmcgYXMgZGVlcCBvciBzaGFsbG93ZXIsIGFzIHJlbWFyay10b2MgbWFrZXMgaXQuICovXG5leHBvcnQgaW50ZXJmYWNlIFRvY09wdGlvbnMge1xuICAvKiogVGhlIGhlYWRpbmcgdG8gcHV0IHRoZSB0YWJsZSB1bmRlciwgYXMgSmF2YVNjcmlwdCByZWd1bGFyIGV4cHJlc3Npb24gc291cmNlIG1hdGNoZWQgYWdhaW5zdCBpdHMgd2hvbGUgdGV4dCwgY2FzZS1pbnNlbnNpdGl2ZWx5OyBgKHRhYmxlWyAtXW9mWyAtXSk/Y29udGVudHM/fHRvY2Agd2hlbiB1bnNldC4gKi9cbiAgaGVhZGluZz86IHN0cmluZyB8IG51bGxcbiAgLyoqIFRoZSBkZWVwZXN0IGhlYWRpbmcgcmFuayB0byBsaXN0LCAxIHRvIDYuICovXG4gIG1heERlcHRoPzogbnVtYmVyIHwgbnVsbFxuICAvKiogVGhlIHNoYWxsb3dlc3QgaGVhZGluZyByYW5rIHRvIGxpc3QsIDEgdG8gNi4gKi9cbiAgbWluRGVwdGg/OiBudW1iZXIgfCBudWxsXG4gIC8qKiBIZWFkaW5ncyB0byBsZWF2ZSBvdXQsIGFzIEphdmFTY3JpcHQgcmVndWxhciBleHByZXNzaW9uIHNvdXJjZSBtYXRjaGVkIGFnYWluc3QgdGhlaXIgd2hvbGUgdGV4dCwgY2FzZS1pbnNlbnNpdGl2ZWx5LiAqL1xuICBza2lwPzogc3RyaW5nIHwgbnVsbFxuICAvKiogS2VlcCB0aGUgbGlzdCBjb21wYWN0LCB3aXRob3V0IGJsYW5rIGxpbmVzIGJldHdlZW4gaXRlbXM7IGB0cnVlYCB3aGVuIHVuc2V0LiAqL1xuICB0aWdodD86IGJvb2xlYW4gfCBudWxsXG4gIC8qKiBOdW1iZXIgdGhlIGxpc3QgaW5zdGVhZCBvZiBidWxsZXRpbmcgaXQuICovXG4gIG9yZGVyZWQ/OiBib29sZWFuIHwgbnVsbFxuICAvKiogV2hhdCBlYWNoIGxpbmsncyBmcmFnbWVudCBzdGFydHMgd2l0aCwgc3VjaCBhcyBgdXNlci1jb250ZW50LWAuICovXG4gIHByZWZpeD86IHN0cmluZyB8IG51bGxcbiAgLyoqIFRoZSBwYXJlbnRzIHdob3NlIGhlYWRpbmdzIGFyZSBsaXN0ZWQsIGFzIGEgdW5pc3QtdXRpbC1pcyB0ZXN0OiBhIG5vZGUgdHlwZSwgYW4gb2JqZWN0IG9mIGZpZWxkcyBhIHBhcmVudCBtdXN0IGVxdWFsLCBvciBhIGxpc3Qgb2YgdGhlc2U7IG9ubHkgdGhlIHJvb3Qgd2hlbiB1bnNldC4gKi9cbiAgcGFyZW50cz86IFBhcmVudFRlc3QgfCBudWxsXG59XG5cbi8qKiBBIHVuaXN0LXV0aWwtaXMgdGVzdCBvZiBhIG5vZGUsIHdyaXR0ZW4gYXMgSlNPTjogb25lIGNoZWNrLCBvciBhIGxpc3QgYW55IG9mIHdoaWNoIHBhc3Nlcy4gKi9cbmV4cG9ydCB0eXBlIFBhcmVudFRlc3QgPSBQYXJlbnRDaGVjayB8IFBhcmVudENoZWNrW11cblxuLyoqIE9uZSB1bmlzdC11dGlsLWlzIGNoZWNrOiBhIG5vZGUgdHlwZSwgb3IgZmllbGRzIGEgbm9kZSBtdXN0IGVxdWFsLiAqL1xuZXhwb3J0IHR5cGUgUGFyZW50Q2hlY2sgPSBzdHJpbmcgfCBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuXG4vKiogYG1kLnN0cmluZ2lmeWA6IG1kYXN0IGludG8gTWFya2Rvd247IG9wdGlvbnMgbmFtZWQgYXMgbWRhc3QtdXRpbC10by1tYXJrZG93biBuYW1lcyB0aGVtLiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdHJpbmdpZnlPcHRpb25zIHtcbiAgLyoqIFRoZSBtYXJrZXIgb2YgdW5vcmRlcmVkIGxpc3QgaXRlbXM6IGAqYCwgYCtgIG9yIGAtYC4gKi9cbiAgYnVsbGV0Pzogc3RyaW5nIHwgbnVsbFxuICAvKiogVGhlIG1hcmtlciBvZiBvcmRlcmVkIGxpc3QgaXRlbXM6IGAuYCBvciBgKWAuICovXG4gIGJ1bGxldE9yZGVyZWQ/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBUaGUgbWFya2VyIG9mIGEgbGlzdCByaWdodCBhZnRlciBhIGxpc3Qgd2l0aCBgYnVsbGV0YC4gKi9cbiAgYnVsbGV0T3RoZXI/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBDbG9zZSBBVFggaGVhZGluZ3Mgd2l0aCBhcyBtYW55IGAjYCBhcyB0aGV5IG9wZW4gd2l0aC4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgY2xvc2VBdHg/OiBib29sZWFuXG4gIC8qKiBUaGUgbWFya2VyIG9mIGVtcGhhc2lzOiBgKmAgb3IgYF9gLiAqL1xuICBlbXBoYXNpcz86IHN0cmluZyB8IG51bGxcbiAgLyoqIFRoZSBtYXJrZXIgb2YgZmVuY2VkIGNvZGU6IGBgIGAgYGAgb3IgYH5gLiAqL1xuICBmZW5jZT86IHN0cmluZyB8IG51bGxcbiAgLyoqIEZlbmNlIGNvZGU7IGBmYWxzZWAgaW5kZW50cyBpdCB3aGVyZSBpdCBjYW4uIEBkZWZhdWx0IHRydWUgKi9cbiAgZmVuY2VzPzogYm9vbGVhblxuICAvKiogTnVtYmVyIG9yZGVyZWQgbGlzdCBpdGVtcyB1cCBmcm9tIGBzdGFydGAuIEBkZWZhdWx0IHRydWUgKi9cbiAgaW5jcmVtZW50TGlzdE1hcmtlcj86IGJvb2xlYW5cbiAgLyoqIEhvdyBsaXN0IGl0ZW0gY29udGVudCBpcyBpbmRlbnRlZDogYG9uZWAsIGB0YWJgIG9yIGBtaXhlZGAuICovXG4gIGxpc3RJdGVtSW5kZW50Pzogc3RyaW5nIHwgbnVsbFxuICAvKiogVGhlIG1hcmtlciBvZiB0aXRsZXM6IGBcImAgb3IgYCdgLiAqL1xuICBxdW90ZT86IHN0cmluZyB8IG51bGxcbiAgLyoqIFdyaXRlIGxpbmtzIGFzIHJlc291cmNlcyBldmVuIHdoZXJlIGFuIGF1dG9saW5rIHdvdWxkIGRvLiBAZGVmYXVsdCBmYWxzZSAqL1xuICByZXNvdXJjZUxpbms/OiBib29sZWFuXG4gIC8qKiBUaGUgbWFya2VyIG9mIHRoZW1hdGljIGJyZWFrczogYCpgLCBgLWAgb3IgYF9gLiAqL1xuICBydWxlPzogc3RyaW5nIHwgbnVsbFxuICAvKiogSG93IG1hbnkgbWFya2VycyBhIHRoZW1hdGljIGJyZWFrIGhhcywgMyBvciBtb3JlLiAqL1xuICBydWxlUmVwZXRpdGlvbj86IG51bWJlciB8IG51bGxcbiAgLyoqIFB1dCBzcGFjZXMgYmV0d2VlbiB0aGUgbWFya2VycyBvZiBhIHRoZW1hdGljIGJyZWFrLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBydWxlU3BhY2VzPzogYm9vbGVhblxuICAvKiogV3JpdGUgaGVhZGluZ3Mgb2YgcmFuayAxIGFuZCAyIGFzIHNldGV4dCBoZWFkaW5ncy4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgc2V0ZXh0PzogYm9vbGVhblxuICAvKiogVGhlIG1hcmtlciBvZiBzdHJvbmc6IGAqYCBvciBgX2AuICovXG4gIHN0cm9uZz86IHN0cmluZyB8IG51bGxcbiAgLyoqIEpvaW4gZGVmaW5pdGlvbnMgd2l0aCBubyBibGFuayBsaW5lIGJldHdlZW4gdGhlbS4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgdGlnaHREZWZpbml0aW9ucz86IGJvb2xlYW5cbiAgLyoqIEV4dHJhIHBhdHRlcm5zIG9mIGNoYXJhY3RlcnMgdG8gZXNjYXBlLiAqL1xuICB1bnNhZmU/OiBVbnNhZmVQYXR0ZXJuW11cbn1cblxuLyoqIEEgY2hhcmFjdGVyIHRvIGVzY2FwZSB3aGVyZSBpdCB3b3VsZCBvdGhlcndpc2Ugc3RhcnQgb3IgZW5kIHN5bnRheC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVW5zYWZlUGF0dGVybiB7XG4gIC8qKiBUaGUgY2hhcmFjdGVyLCBlc2NhcGVkIGFzIGEgcmVndWxhciBleHByZXNzaW9uIHdvdWxkIG5lZWQgaXQuIEBkZWZhdWx0IFwiXCIgKi9cbiAgY2hhcmFjdGVyPzogc3RyaW5nXG4gIC8qKiBBIHJlZ3VsYXIgZXhwcmVzc2lvbiB0aGF0IG11c3QgbWF0Y2ggcmlnaHQgYmVmb3JlIHRoZSBjaGFyYWN0ZXIuICovXG4gIGJlZm9yZT86IHN0cmluZyB8IG51bGxcbiAgLyoqIEEgcmVndWxhciBleHByZXNzaW9uIHRoYXQgbXVzdCBtYXRjaCByaWdodCBhZnRlciB0aGUgY2hhcmFjdGVyLiAqL1xuICBhZnRlcj86IHN0cmluZyB8IG51bGxcbiAgLyoqIE9ubHkgYXQgdGhlIHN0YXJ0IG9mIGEgbGluZSwgYWZ0ZXIgYW55IGluZGVudC4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgYXRCcmVhaz86IGJvb2xlYW5cbiAgLyoqIE9ubHkgaW5zaWRlIG9uZSBvZiB0aGVzZSBjb25zdHJ1Y3RzLiAqL1xuICBpbkNvbnN0cnVjdD86IE5hbWVzIHwgbnVsbFxuICAvKiogTmV2ZXIgaW5zaWRlIG9uZSBvZiB0aGVzZSBjb25zdHJ1Y3RzLiAqL1xuICBub3RJbkNvbnN0cnVjdD86IE5hbWVzIHwgbnVsbFxuICAvKiogT25seSBhdCB0aGUgc3RhcnQgb2YgYSBub2RlIHJpZ2h0IGFmdGVyIG9uZSBvZiB0aGVzZSBub2RlIHR5cGVzLiAqL1xuICBiZWZvcmVOb2RlPzogTmFtZXMgfCBudWxsXG4gIC8qKiBPbmx5IGF0IHRoZSBlbmQgb2YgYSBub2RlIHJpZ2h0IGJlZm9yZSBvbmUgb2YgdGhlc2Ugbm9kZSB0eXBlcy4gKi9cbiAgYWZ0ZXJOb2RlPzogTmFtZXMgfCBudWxsXG4gIC8qKiBSZWFkIGBiZWZvcmVgIGFuZCBgYWZ0ZXJgIHdpdGggVW5pY29kZSBjbGFzc2VzIHN1Y2ggYXMgYFxccHtMfWAuIEBkZWZhdWx0IGZhbHNlICovXG4gIHVuaWNvZGU/OiBib29sZWFuXG59XG5cbi8qKiBgbWQudG9IdG1sYDogbWRhc3QgaW50byBoYXN0OyBvcHRpb25zIG5hbWVkIGFzIHJlbWFyay1yZWh5cGUgbmFtZXMgdGhlbS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVG9IdG1sT3B0aW9ucyB7XG4gIC8qKiBLZWVwIHJhdyBIVE1MIGluIHRoZSB0cmVlIGluc3RlYWQgb2YgZHJvcHBpbmcgaXQuIEBkZWZhdWx0IGZhbHNlICovXG4gIGFsbG93RGFuZ2Vyb3VzSHRtbD86IGJvb2xlYW5cbiAgLyoqIFdoYXQgZm9vdG5vdGUgYGlkYHMgc3RhcnQgd2l0aCwgc28gdGhleSBjYW5ub3QgY2xvYmJlciB0aGUgcGFnZSdzOyBgdXNlci1jb250ZW50LWAgd2hlbiB1bnNldC4gKi9cbiAgY2xvYmJlclByZWZpeD86IHN0cmluZyB8IG51bGxcbiAgLyoqIFRoZSB0ZXh0IG9mIGVhY2ggZm9vdG5vdGUncyBiYWNrIHJlZmVyZW5jZTsgYOKGqWAsIG51bWJlcmVkIGZyb20gdGhlIHNlY29uZCwgd2hlbiB1bnNldC4gKi9cbiAgZm9vdG5vdGVCYWNrQ29udGVudD86IHN0cmluZyB8IG51bGxcbiAgLyoqIFRoZSBgYXJpYS1sYWJlbGAgb2YgZWFjaCBmb290bm90ZSdzIGJhY2sgcmVmZXJlbmNlOyBgQmFjayB0byByZWZlcmVuY2UgMWAgYW5kIHNvIG9uIHdoZW4gdW5zZXQuICovXG4gIGZvb3Rub3RlQmFja0xhYmVsPzogc3RyaW5nIHwgbnVsbFxuICAvKiogVGhlIGhlYWRpbmcgb2YgdGhlIGZvb3Rub3RlcyBzZWN0aW9uOyBgRm9vdG5vdGVzYCB3aGVuIHVuc2V0LiAqL1xuICBmb290bm90ZUxhYmVsPzogc3RyaW5nIHwgbnVsbFxuICAvKiogVGhlIHRhZyBuYW1lIG9mIHRoZSBmb290bm90ZXMgc2VjdGlvbidzIGhlYWRpbmc7IGBoMmAgd2hlbiB1bnNldC4gKi9cbiAgZm9vdG5vdGVMYWJlbFRhZ05hbWU/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBOb2RlIHR5cGVzIHdpdGhvdXQgYSBoYW5kbGVyIHRvIGNvcHkgaW50byBoYXN0IGFzIHRoZXkgYXJlLCB0aGVpciBjaGlsZHJlbiBjb252ZXJ0ZWQuIEBkZWZhdWx0IFtdICovXG4gIHBhc3NUaHJvdWdoPzogc3RyaW5nW11cbn1cblxuLyoqIGBtZC50b05hdHVyYWxMYW5ndWFnZWA6IG1kYXN0IGludG8gbmxjc3QsIHRva2VuaXplZCBieSB0aGUgcHJvY2Vzc29yJ3MgbmF0dXJhbC1sYW5ndWFnZSBwYXJzZXI7IG9wdGlvbnMgbmFtZWQgYXMgcmVtYXJrLXJldGV4dCBhbmQgbWRhc3QtdXRpbC10by1ubGNzdCBuYW1lIHRoZW0uICovXG5leHBvcnQgaW50ZXJmYWNlIFRvTmF0dXJhbExhbmd1YWdlT3B0aW9ucyB7XG4gIC8qKiBOb2RlIHR5cGVzIHRvIGxlYXZlIG91dCwgYmVzaWRlcyBgdGFibGVgLCBgdGFibGVSb3dgIGFuZCBgdGFibGVDZWxsYC4gQGRlZmF1bHQgW10gKi9cbiAgaWdub3JlPzogc3RyaW5nW11cbiAgLyoqIE5vZGUgdHlwZXMgdG8ga2VlcCBhcyBvbmUgYFNvdXJjZU5vZGVgIG9mIHRoZWlyIHNvdXJjZSB0ZXh0LCBiZXNpZGVzIGBpbmxpbmVDb2RlYC4gQGRlZmF1bHQgW10gKi9cbiAgc291cmNlPzogc3RyaW5nW11cbn1cblxuLyoqIFRoZSBgbWQucGFyc2VgIHBsdWdpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZShvcHRpb25zPzogUGFyc2VPcHRpb25zKTogUGx1Z2luPFwibWQucGFyc2VcIiwgUGFyc2VPcHRpb25zPiB7XG4gIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiB7IG5hbWU6IFwibWQucGFyc2VcIiB9XG4gIHJldHVybiB7IG5hbWU6IFwibWQucGFyc2VcIiwgb3B0aW9ucyB9XG59XG5cbi8qKiBUaGUgYG1kLmRpcmVjdGl2ZWAgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRpcmVjdGl2ZShvcHRpb25zPzogRGlyZWN0aXZlT3B0aW9ucyk6IFBsdWdpbjxcIm1kLmRpcmVjdGl2ZVwiLCBEaXJlY3RpdmVPcHRpb25zPiB7XG4gIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiB7IG5hbWU6IFwibWQuZGlyZWN0aXZlXCIgfVxuICByZXR1cm4geyBuYW1lOiBcIm1kLmRpcmVjdGl2ZVwiLCBvcHRpb25zIH1cbn1cblxuLyoqIFRoZSBgbWQuZ2ZtYCBwbHVnaW4uICovXG5leHBvcnQgZnVuY3Rpb24gZ2ZtKG9wdGlvbnM/OiBHZm1PcHRpb25zKTogUGx1Z2luPFwibWQuZ2ZtXCIsIEdmbU9wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJtZC5nZm1cIiB9XG4gIHJldHVybiB7IG5hbWU6IFwibWQuZ2ZtXCIsIG9wdGlvbnMgfVxufVxuXG4vKiogVGhlIGBtZC5kZWZpbml0aW9uTGlzdGAgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlZmluaXRpb25MaXN0KCk6IFBsdWdpbjxcIm1kLmRlZmluaXRpb25MaXN0XCI+IHtcbiAgcmV0dXJuIHsgbmFtZTogXCJtZC5kZWZpbml0aW9uTGlzdFwiIH1cbn1cblxuLyoqIFRoZSBgbWQubWF0aGAgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hdGgob3B0aW9ucz86IE1hdGhPcHRpb25zKTogUGx1Z2luPFwibWQubWF0aFwiLCBNYXRoT3B0aW9ucz4ge1xuICBpZiAob3B0aW9ucyA9PT0gdW5kZWZpbmVkKSByZXR1cm4geyBuYW1lOiBcIm1kLm1hdGhcIiB9XG4gIHJldHVybiB7IG5hbWU6IFwibWQubWF0aFwiLCBvcHRpb25zIH1cbn1cblxuLyoqIFRoZSBgbWQubWR4YCBwbHVnaW4uICovXG5leHBvcnQgZnVuY3Rpb24gbWR4KG9wdGlvbnM/OiBNZHhPcHRpb25zKTogUGx1Z2luPFwibWQubWR4XCIsIE1keE9wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJtZC5tZHhcIiB9XG4gIHJldHVybiB7IG5hbWU6IFwibWQubWR4XCIsIG9wdGlvbnMgfVxufVxuXG4vKiogVGhlIGBtZC5mcm9udG1hdHRlcmAgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZyb250bWF0dGVyKG9wdGlvbnM/OiBGcm9udG1hdHRlck9wdGlvbnMpOiBQbHVnaW48XCJtZC5mcm9udG1hdHRlclwiLCBGcm9udG1hdHRlck9wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJtZC5mcm9udG1hdHRlclwiIH1cbiAgcmV0dXJuIHsgbmFtZTogXCJtZC5mcm9udG1hdHRlclwiLCBvcHRpb25zIH1cbn1cblxuLyoqIFRoZSBgbWQuZ2Vtb2ppYCBwbHVnaW4uICovXG5leHBvcnQgZnVuY3Rpb24gZ2Vtb2ppKCk6IFBsdWdpbjxcIm1kLmdlbW9qaVwiPiB7XG4gIHJldHVybiB7IG5hbWU6IFwibWQuZ2Vtb2ppXCIgfVxufVxuXG4vKiogVGhlIGBtZC5jb21wb25lbnRgIHBsdWdpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21wb25lbnQob3B0aW9ucz86IENvbXBvbmVudE9wdGlvbnMpOiBQbHVnaW48XCJtZC5jb21wb25lbnRcIiwgQ29tcG9uZW50T3B0aW9ucz4ge1xuICBpZiAob3B0aW9ucyA9PT0gdW5kZWZpbmVkKSByZXR1cm4geyBuYW1lOiBcIm1kLmNvbXBvbmVudFwiIH1cbiAgcmV0dXJuIHsgbmFtZTogXCJtZC5jb21wb25lbnRcIiwgb3B0aW9ucyB9XG59XG5cbi8qKiBUaGUgYG1kLnBhY2thZ2VDb21tYW5kYCBwbHVnaW4uICovXG5leHBvcnQgZnVuY3Rpb24gcGFja2FnZUNvbW1hbmQob3B0aW9ucz86IFBhY2thZ2VDb21tYW5kT3B0aW9ucyk6IFBsdWdpbjxcIm1kLnBhY2thZ2VDb21tYW5kXCIsIFBhY2thZ2VDb21tYW5kT3B0aW9ucz4ge1xuICBpZiAob3B0aW9ucyA9PT0gdW5kZWZpbmVkKSByZXR1cm4geyBuYW1lOiBcIm1kLnBhY2thZ2VDb21tYW5kXCIgfVxuICByZXR1cm4geyBuYW1lOiBcIm1kLnBhY2thZ2VDb21tYW5kXCIsIG9wdGlvbnMgfVxufVxuXG4vKiogVGhlIGBtZC5oZWFkaW5nSWRgIHBsdWdpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoZWFkaW5nSWQob3B0aW9ucz86IEhlYWRpbmdJZE9wdGlvbnMpOiBQbHVnaW48XCJtZC5oZWFkaW5nSWRcIiwgSGVhZGluZ0lkT3B0aW9ucz4ge1xuICBpZiAob3B0aW9ucyA9PT0gdW5kZWZpbmVkKSByZXR1cm4geyBuYW1lOiBcIm1kLmhlYWRpbmdJZFwiIH1cbiAgcmV0dXJuIHsgbmFtZTogXCJtZC5oZWFkaW5nSWRcIiwgb3B0aW9ucyB9XG59XG5cbi8qKiBUaGUgYG1kLnN0cmlwYCBwbHVnaW4uICovXG5leHBvcnQgZnVuY3Rpb24gc3RyaXAob3B0aW9ucz86IFN0cmlwT3B0aW9ucyk6IFBsdWdpbjxcIm1kLnN0cmlwXCIsIFN0cmlwT3B0aW9ucz4ge1xuICBpZiAob3B0aW9ucyA9PT0gdW5kZWZpbmVkKSByZXR1cm4geyBuYW1lOiBcIm1kLnN0cmlwXCIgfVxuICByZXR1cm4geyBuYW1lOiBcIm1kLnN0cmlwXCIsIG9wdGlvbnMgfVxufVxuXG4vKiogVGhlIGBtZC50b2NgIHBsdWdpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b2Mob3B0aW9ucz86IFRvY09wdGlvbnMpOiBQbHVnaW48XCJtZC50b2NcIiwgVG9jT3B0aW9ucz4ge1xuICBpZiAob3B0aW9ucyA9PT0gdW5kZWZpbmVkKSByZXR1cm4geyBuYW1lOiBcIm1kLnRvY1wiIH1cbiAgcmV0dXJuIHsgbmFtZTogXCJtZC50b2NcIiwgb3B0aW9ucyB9XG59XG5cbi8qKiBUaGUgYG1kLnN0cmluZ2lmeWAgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZ2lmeShvcHRpb25zPzogU3RyaW5naWZ5T3B0aW9ucyk6IFBsdWdpbjxcIm1kLnN0cmluZ2lmeVwiLCBTdHJpbmdpZnlPcHRpb25zPiB7XG4gIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiB7IG5hbWU6IFwibWQuc3RyaW5naWZ5XCIgfVxuICByZXR1cm4geyBuYW1lOiBcIm1kLnN0cmluZ2lmeVwiLCBvcHRpb25zIH1cbn1cblxuLyoqIFRoZSBgbWQudG9IdG1sYCBwbHVnaW4uICovXG5leHBvcnQgZnVuY3Rpb24gdG9IdG1sKG9wdGlvbnM/OiBUb0h0bWxPcHRpb25zKTogUGx1Z2luPFwibWQudG9IdG1sXCIsIFRvSHRtbE9wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJtZC50b0h0bWxcIiB9XG4gIHJldHVybiB7IG5hbWU6IFwibWQudG9IdG1sXCIsIG9wdGlvbnMgfVxufVxuXG4vKiogVGhlIGBtZC50b05hdHVyYWxMYW5ndWFnZWAgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvTmF0dXJhbExhbmd1YWdlKG9wdGlvbnM/OiBUb05hdHVyYWxMYW5ndWFnZU9wdGlvbnMpOiBQbHVnaW48XCJtZC50b05hdHVyYWxMYW5ndWFnZVwiLCBUb05hdHVyYWxMYW5ndWFnZU9wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJtZC50b05hdHVyYWxMYW5ndWFnZVwiIH1cbiAgcmV0dXJuIHsgbmFtZTogXCJtZC50b05hdHVyYWxMYW5ndWFnZVwiLCBvcHRpb25zIH1cbn1cbiJdfQ==
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9nZW5lcmF0ZWQvbWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0VBQStFO0FBbVgvRSw2QkFBNkI7QUFDN0IsTUFBTSxVQUFVLEtBQUssQ0FBQyxPQUFzQjtJQUMxQyxJQUFJLE9BQU8sS0FBSyxTQUFTO1FBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsQ0FBQTtJQUN0RCxPQUFPLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsQ0FBQTtBQUN0QyxDQUFDO0FBRUQsaUNBQWlDO0FBQ2pDLE1BQU0sVUFBVSxTQUFTLENBQUMsT0FBMEI7SUFDbEQsSUFBSSxPQUFPLEtBQUssU0FBUztRQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLENBQUE7SUFDMUQsT0FBTyxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLENBQUE7QUFDMUMsQ0FBQztBQUVELDJCQUEyQjtBQUMzQixNQUFNLFVBQVUsR0FBRyxDQUFDLE9BQW9CO0lBQ3RDLElBQUksT0FBTyxLQUFLLFNBQVM7UUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFBO0lBQ3BELE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFBO0FBQ3BDLENBQUM7QUFFRCxzQ0FBc0M7QUFDdEMsTUFBTSxVQUFVLGNBQWM7SUFDNUIsT0FBTyxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxDQUFBO0FBQ3RDLENBQUM7QUFFRCw0QkFBNEI7QUFDNUIsTUFBTSxVQUFVLElBQUksQ0FBQyxPQUFxQjtJQUN4QyxJQUFJLE9BQU8sS0FBSyxTQUFTO1FBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQTtJQUNyRCxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsQ0FBQTtBQUNyQyxDQUFDO0FBRUQsMkJB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Q3ZDLENBQUM7QUFFRCx5Q0FBeUM7QUFDekMsTUFBTSxVQUFVLGlCQUFpQixDQUFDLE9BQWtDO0lBQ2xFLElBQUksT0FBTyxLQUFLLFNBQVM7UUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLHNCQUFzQixFQUFFLENBQUE7SUFDbEUsT0FBTyxFQUFFLElBQUksRUFBRSxzQkFBc0IsRUFBRSxPQUFPLEVBQUUsQ0FBQTtBQUNsRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gR2VuZXJhdGVkIGJ5IGBwbnBtIGdlbmVyYXRlOmJpbmRpbmdzYCBmcm9tIHRoZSBjcmF0ZSdzIHBsdWdpbnM7IGRvIG5vdCBlZGl0LlxuXG5pbXBvcnQgdHlwZSB7IFBsdWdpbiB9IGZyb20gXCIuLi9tb2RlbHMvcGx1Z2luLnRzXCJcblxuLyoqIGBtZC5wYXJzZWA6IE1hcmtkb3duIGludG8gbWRhc3QuICovXG5leHBvcnQgdHlwZSBQYXJzZU9wdGlvbnMgPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuXG4vKiogYG1kLmRpcmVjdGl2ZWA6IGdlbmVyaWMgZGlyZWN0aXZlcywgYDphYCwgYDo6YmAgYW5kIGA6OjpjYCwgcmVhZCBieSBgbWQucGFyc2VgIGFuZCB3cml0dGVuIGJ5IGBtZC5zdHJpbmdpZnlgOyBvcHRpb25zIG5hbWVkIGFzIG1kYXN0LXV0aWwtZGlyZWN0aXZlJ3Mgc2VyaWFsaXplciBuYW1lcyB0aGVtLiAqL1xuZXhwb3J0IGludGVyZmFjZSBEaXJlY3RpdmVPcHRpb25zIHtcbiAgLyoqIFdyaXRlIGFuIGVtcHR5IGF0dHJpYnV0ZSBhcyBpdHMgbmFtZSBhbG9uZSwgYHthfWAsIHJhdGhlciB0aGFuIGB7YT1cIlwifWAuIEBkZWZhdWx0IHRydWUgKi9cbiAgY29sbGFwc2VFbXB0eUF0dHJpYnV0ZXM/OiBib29sZWFuXG4gIC8qKiBXcml0ZSBgaWRgIGFuZCBgY2xhc3NgIGFzIGAjYWAgYW5kIGAuYmAgd2hlcmUgdGhleSBjYW4gYmUuIEBkZWZhdWx0IHRydWUgKi9cbiAgcHJlZmVyU2hvcnRjdXQ/OiBib29sZWFuXG4gIC8qKiBMZWF2ZSBhdHRyaWJ1dGUgdmFsdWVzIHVucXVvdGVkIHdoZXJlIHRoZXkgY2FuIGJlLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBwcmVmZXJVbnF1b3RlZD86IGJvb2xlYW5cbiAgLyoqIFRoZSBxdW90ZSBvZiBhdHRyaWJ1dGUgdmFsdWVzOiBgXCJgIG9yIGAnYDsgYG1kLnN0cmluZ2lmeWAncyBgcXVvdGVgIHdoZW4gdW5zZXQuICovXG4gIHF1b3RlPzogc3RyaW5nIHwgbnVsbFxuICAvKiogVXNlIHRoZSBvdGhlciBxdW90ZSB3aGVuIHRoZSBwcmVmZXJyZWQgb25lIG9jY3VycyBtb3JlIG9mdGVuIGluIGEgdmFsdWUuIEBkZWZhdWx0IGZhbHNlICovXG4gIHF1b3RlU21hcnQ/OiBib29sZWFuXG59XG5cbi8qKiBgbWQuZ2ZtYDogR2l0SHViIEZsYXZvcmVkIE1hcmtkb3duJ3Mgc3ludGF4LCByZWFkIGJ5IGBtZC5wYXJzZWAgYW5kIHdyaXR0ZW4gYnkgYG1kLnN0cmluZ2lmeWA7IG9wdGlvbnMgbmFtZWQgYXMgcmVtYXJrLWdmbSBuYW1lcyB0aGVtLiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZm1PcHRpb25zIHtcbiAgLyoqIExldCBvbmUgdGlsZGUsIGB+YX5gLCBmb3JtIHN0cmlrZXRocm91Z2gsIGFzIHdlbGwgYXMgdHdvLiBAZGVmYXVsdCB0cnVlICovXG4gIHNpbmdsZVRpbGRlPzogYm9vbGVhblxuICAvKiogUGFkIHRhYmxlIGNlbGxzIHdpdGggYSBzcGFjZSBvbiBlYWNoIHNpZGUgd2hlbiB3cml0aW5nIE1hcmtkb3duLiBAZGVmYXVsdCB0cnVlICovXG4gIHRhYmxlQ2VsbFBhZGRpbmc/OiBib29sZWFuXG4gIC8qKiBMaW5lIHVwIHRhYmxlIHBpcGVzIHdoZW4gd3JpdGluZyBNYXJrZG93bi4gQGRlZmF1bHQgdHJ1ZSAqL1xuICB0YWJsZVBpcGVBbGlnbj86IGJvb2xlYW5cbiAgLyoqIFdyaXRlIGEgZm9vdG5vdGUgZGVmaW5pdGlvbidzIGZpcnN0IGxpbmUgYmxhbmsgd2hlbiBpdCBob2xkcyBmbG93IGNvbnRlbnQuIEBkZWZhdWx0IGZhbHNlICovXG4gIGZpcnN0TGluZUJsYW5rPzogYm9vbGVhblxufVxuXG4vKiogYG1kLm1hdGhgOiBtYXRoIHN5bnRheCwgYCQkYCBibG9ja3MgYW5kIGAkYCB0ZXh0LCByZWFkIGJ5IGBtZC5wYXJzZWAgYW5kIHdyaXR0ZW4gYnkgYG1kLnN0cmluZ2lmeWA7IG9wdGlvbnMgbmFtZWQgYXMgcmVtYXJrLW1hdGggbmFtZXMgdGhlbS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWF0aE9wdGlvbnMge1xuICAvKiogTGV0IG9uZSBkb2xsYXIsIGAkYSRgLCBmb3JtIG1hdGggaW4gdGV4dCwgYXMgd2VsbCBhcyB0d28uIEBkZWZhdWx0IHRydWUgKi9cbiAgc2luZ2xlRG9sbGFyVGV4dE1hdGg/OiBib29sZWFuXG59XG5cbi8qKiBgbWQubWR4YDogTURYIHN5bnRheCwgSlNYLCBleHByZXNzaW9ucyBhbmQgRVNNLCByZWFkIGJ5IGBtZC5wYXJzZWAgYW5kIHdyaXR0ZW4gYnkgYG1kLnN0cmluZ2lmeWA7IGl0IHR1cm5zIG9mZiBpbmRlbnRlZCBjb2RlLCBhdXRvbGlua3MgYW5kIHJhdyBIVE1MOyBvcHRpb25zIG5hbWVkIGFzIHJlbWFyay1tZHggYW5kIG1kYXN0LXV0aWwtbWR4LWpzeCdzIHNlcmlhbGl6ZXIgbmFtZSB0aGVtLiAqL1xuZXhwb3J0IGludGVyZmFjZSBNZHhPcHRpb25zIHtcbiAgLyoqIFRoZSBxdW90ZSBvZiBKU1ggYXR0cmlidXRlIHZhbHVlczogYFwiYCAod2hlbiB1bnNldCkgb3IgYCdgLiAqL1xuICBxdW90ZT86IHN0cmluZyB8IG51bGxcbiAgLyoqIFVzZSB0aGUgb3RoZXIgcXVvdGUgd2hlbiB0aGUgcHJlZmVycmVkIG9uZSBvY2N1cnMgbW9yZSBvZnRlbiBpbiBhIHZhbHVlLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBxdW90ZVNtYXJ0PzogYm9vbGVhblxuICAvKiogV3JpdGUgc2VsZi1jbG9zaW5nIHRhZ3Mgd2l0aG91dCBhIHNwYWNlIGJlZm9yZSB0aGUgc2xhc2gsIGA8YS8+YC4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgdGlnaHRTZWxmQ2xvc2luZz86IGJvb2xlYW5cbiAgLyoqIFRoZSB3aWR0aCBwYXN0IHdoaWNoIGEgZmxvdyBlbGVtZW50J3MgYXR0cmlidXRlcyBnbyBvbiBsaW5lcyBvZiB0aGVpciBvd24uICovXG4gIHByaW50V2lkdGg/OiBudW1iZXIgfCBudWxsXG59XG5cbi8qKiBUaGUga2luZHMgb2YgbWF0dGVyIHRvIHJlY29nbml6ZSwgYXMgcmVtYXJrLWZyb250bWF0dGVyIHRha2VzIHRoZW0gKGEgcHJlc2V0LCBhIG1hdHRlciwgb3IgYSBsaXN0IG9mIHRoZW07IGB5YW1sYCB3aGVuIHVuc2V0KSwgb3IgdGV4dGxhbmUncyBvcHRpb25zIG9iamVjdC4gKi9cbmV4cG9ydCB0eXBlIEZyb250bWF0dGVyT3B0aW9ucyA9IFwieWFtbFwiIHwgXCJ0b21sXCIgfCBNYXR0ZXIgfCAoXCJ5YW1sXCIgfCBcInRvbWxcIiB8IE1hdHRlcilbXSB8IEZyb250bWF0dGVyU2V0dGluZ3NcblxuLyoqIE9uZSBraW5kIG9mIGZyb250bWF0dGVyOiB0aGUgbm9kZSBgdHlwZWAgaXQgYmVjb21lcyBhbmQgaXRzIGZlbmNlcywgYSBgbWFya2VyYCByZXBlYXRlZCB0aHJlZSB0aW1lcyBvciBhIHdob2xlIGBmZW5jZWAuICovXG5leHBvcnQgaW50ZXJmYWNlIE1hdHRlciB7XG4gIHR5cGU6IHN0cmluZ1xuICBtYXJrZXI/OiBGZW5jZVxuICBmZW5jZT86IEZlbmNlXG4gIGFueXdoZXJlPzogYm9vbGVhblxufVxuXG4vKiogRGlmZmVyZW50IG9wZW5pbmcgYW5kIGNsb3NpbmcgZmVuY2VzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBGZW5jZVBhaXIge1xuICBvcGVuOiBzdHJpbmdcbiAgY2xvc2U6IHN0cmluZ1xufVxuXG4vKiogQSBmZW5jZSwgb3IgaXRzIG9wZW5pbmcgYW5kIGNsb3Npbmcgb25lcy4gKi9cbmV4cG9ydCB0eXBlIEZlbmNlID0gc3RyaW5nIHwgRmVuY2VQYWlyXG5cbi8qKiB0ZXh0bGFuZSdzIG9wdGlvbnM6IHRoZSBtYXR0ZXJzLCBhbmQgd2hhdCB0byBkbyB3aXRoIFlBTUwgZnJvbnRtYXR0ZXIuICovXG5leHBvcnQgaW50ZXJmYWNlIEZyb250bWF0dGVyU2V0dGluZ3Mge1xuICAvKiogVGhlIGtpbmRzIG9mIG1hdHRlciB0byByZWNvZ25pemUsIGFzIHJlbWFyay1mcm9udG1hdHRlciB0YWtlcyB0aGVtOyBgeWFtbGAgd2hlbiB1bnNldC4gKi9cbiAgbWF0dGVycz86IFwieWFtbFwiIHwgXCJ0b21sXCIgfCBNYXR0ZXIgfCAoXCJ5YW1sXCIgfCBcInRvbWxcIiB8IE1hdHRlcilbXVxuICAvKiogUGFyc2UgdGhlIFlBTUwgZnJvbnRtYXR0ZXIgYSBkb2N1bWVudCBzdGFydHMgd2l0aCBpbnRvIGBmaWxlLmRhdGEubWF0dGVyYCwgYHt9YCB3aGVuIHRoZXJlIGlzIG5vbmUsIGFzIHZmaWxlLW1hdHRlciBkb2VzLiAqL1xuICBkYXRhPzogYm9vbGVhblxuICAvKiogUmVtb3ZlIHRoZSBZQU1MIGZyb250bWF0dGVyIGEgZG9jdW1lbnQgc3RhcnRzIHdpdGggZnJvbSB0aGUgdHJlZS4gKi9cbiAgc3RyaXA/OiBib29sZWFuXG59XG5cbi8qKiBgbWQuY29tcG9uZW50YDogZGlyZWN0aXZlcywgR2l0SHViIGFsZXJ0cyBhbmQgb3RoZXIgbm9kZXMgaW50byBNRFggSlNYIGVsZW1lbnRzLCB0aGUgY29tcG9uZW50cyBhbiBNRFggcnVudGltZSByZW5kZXJzLCBieSBkZWNsYXJhdGl2ZSBydWxlcy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50T3B0aW9ucyB7XG4gIC8qKiBSdWxlcyBmb3IgZGlyZWN0aXZlczsgdGhlIGZpcnN0IHRoYXQgbWF0Y2hlcyBhIGRpcmVjdGl2ZSBjb252ZXJ0cyBpdC4gKi9cbiAgZGlyZWN0aXZlcz86IERpcmVjdGl2ZVJ1bGVbXVxuICAvKiogR2l0SHViIGFsZXJ0cywgYD4gWyFOT1RFXWAsIGludG8gYSBjb21wb25lbnQuICovXG4gIGFsZXJ0cz86IEFsZXJ0UnVsZSB8IG51bGxcbiAgLyoqIE5vZGUgdHlwZXMsIHN1Y2ggYXMgYGRlZkxpc3RgLCBpbnRvIGNvbXBvbmVudHMga2VlcGluZyB0aGVpciBjaGlsZHJlbi4gQGRlZmF1bHQge30gKi9cbiAgbm9kZXM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+XG4gIC8qKiBXaGF0IGJlY29tZXMgb2YgYSBkaXJlY3RpdmUgbm8gcnVsZSBjb252ZXJ0cy4gKi9cbiAgdW5rbm93bkRpcmVjdGl2ZXM/OiBVbmtub3duRGlyZWN0aXZlc1xuICAvKiogUnVsZXMgZm9yIGZlbmNlZCBjb2RlOyB0aGUgZmlyc3QgdGhhdCBtYXRjaGVzIGEgYmxvY2sgYXBwbGllcy4gKi9cbiAgY29kZXM/OiBDb2RlUnVsZVtdXG59XG5cbi8qKiBIb3cgYG1kLmNvbXBvbmVudGAgdHVybnMgbWF0Y2hpbmcgZGlyZWN0aXZlcyBpbnRvIG9uZSBjb21wb25lbnQuICovXG5leHBvcnQgaW50ZXJmYWNlIERpcmVjdGl2ZVJ1bGUge1xuICAvKiogVGhlIGRpcmVjdGl2ZSdzIG5hbWUsIG9yIHNldmVyYWwuICovXG4gIG5hbWU6IE5hbWVzXG4gIC8qKiBUaGUga2luZCBvZiBkaXJlY3RpdmU6IGB0ZXh0YCwgYGxlYWZgIG9yIGBjb250YWluZXJgOyBhbnkgd2hlbiBsZWZ0IG91dC4gKi9cbiAga2luZD86IERpcmVjdGl2ZUtpbmQgfCBudWxsXG4gIC8qKiBBdHRyaWJ1dGUgdmFsdWVzIHRoZSBkaXJlY3RpdmUgbXVzdCBoYXZlLiBAZGVmYXVsdCB7fSAqL1xuICB3aGVyZT86IFJlY29yZDxzdHJpbmcsIHN0cmluZz5cbiAgLyoqIFRoZSBjb21wb25lbnQ6IGEgdGV4dCBlbGVtZW50IGZvciBhIHRleHQgZGlyZWN0aXZlLCBlbHNlIGEgZmxvdyBlbGVtZW50LiAqL1xuICBjb21wb25lbnQ6IHN0cmluZ1xuICAvKiogVGhlIGF0dHJpYnV0ZSB0aGF0IGdldHMgdGhlIGRpcmVjdGl2ZSdzIG5hbWUuICovXG4gIG5hbWVBcz86IHN0cmluZyB8IG51bGxcbiAgLyoqIFRoZSBhdHRyaWJ1dGUgdGhhdCBnZXRzIHRoZSBsYWJlbCdzIHRleHQ6IGEgY29udGFpbmVyJ3MgbGFiZWwgcGFyYWdyYXBoIG9yIGEgdGV4dCBvciBsZWFmIGRpcmVjdGl2ZSdzIGNvbnRlbnQsIHdoaWNoIGlzIHRoZW4gZHJvcHBlZC4gKi9cbiAgbGFiZWxBcz86IHN0cmluZyB8IG51bGxcbiAgLyoqIFRoZSBsYWJlbCdzIHRleHQgd2hlbiB0aGVyZSBpcyBub25lLiAqL1xuICBsYWJlbERlZmF1bHQ/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBUaGUgYXR0cmlidXRlcyB0byBrZWVwLCBpbiBvcmRlcjsgZXZlcnkgb25lLCBhcyB3cml0dGVuLCB3aGVuIGxlZnQgb3V0LiAqL1xuICBhdHRyaWJ1dGVzPzogQXR0cmlidXRlUnVsZVtdIHwgbnVsbFxuICAvKiogQXR0cmlidXRlcyB3aXRob3V0IHdoaWNoIHRoZSBkaXJlY3RpdmUgaXMgbGVmdCB0byBgdW5rbm93bkRpcmVjdGl2ZXNgLiBAZGVmYXVsdCBbXSAqL1xuICByZXF1aXJlZD86IHN0cmluZ1tdXG4gIC8qKiBXcmFwIHJ1bnMgb2YgYWRqYWNlbnQgc2libGluZ3MgdGhpcyBydWxlIGNvbnZlcnRlZCBpbiBhbm90aGVyIGNvbXBvbmVudC4gKi9cbiAgZ3JvdXA/OiBHcm91cFJ1bGUgfCBudWxsXG4gIC8qKiBUaGUgYXR0cmlidXRlIHRoYXQgZ2V0cyB0aGUgbGlzdHMgb2YgYSBjb250YWluZXIgZGlyZWN0aXZlIGFzIGEgZmlsZSB0cmVlLCBKU09OIGl0ZW1zIGB7bmFtZSwgdHlwZSwgY29tbWVudD8sIGhpZ2hsaWdodGVkPywgY2hpbGRyZW4/fWA7IHRoZSBsaXN0cyBsZWF2ZSBpdHMgY29udGVudC4gKi9cbiAgdHJlZUFzPzogc3RyaW5nIHwgbnVsbFxufVxuXG4vKiogT25lIG5hbWUgb3Igc2V2ZXJhbC4gKi9cbmV4cG9ydCB0eXBlIE5hbWVzID0gc3RyaW5nIHwgc3RyaW5nW11cblxuLyoqIEEgZGlyZWN0aXZlJ3Mga2luZCwgYnkgaG93IG1hbnkgY29sb25zIG9wZW4gaXQuICovXG5leHBvcnQgdHlwZSBEaXJlY3RpdmVLaW5kID0gXCJ0ZXh0XCIgfCBcImxlYWZcIiB8IFwiY29udGFpbmVyXCJcblxuLyoqIEFuIGF0dHJpYnV0ZSB0byBrZWVwOiBpdHMgbmFtZSwgb3IgaXRzIG5hbWUgd2l0aCB3aGF0IHRvIGNhbGwgaXQgYW5kIGEgZGVmYXVsdC4gKi9cbmV4cG9ydCB0eXBlIEF0dHJpYnV0ZVJ1bGUgPSBzdHJpbmcgfCB7IG5hbWU6IHN0cmluZzsgcmVuYW1lPzogc3RyaW5nIHwgbnVsbDsgZGVmYXVsdD86IHN0cmluZyB8IG51bGwgfVxuXG4vKiogVGhlIGNvbXBvbmVudCB3cmFwcGluZyBhIHJ1biBvZiBhZGphY2VudCBzaWJsaW5ncyBvbmUgcnVsZSBjb252ZXJ0ZWQuICovXG5leHBvcnQgaW50ZXJmYWNlIEdyb3VwUnVsZSB7XG4gIC8qKiBUaGUgd3JhcHBpbmcgY29tcG9uZW50LiAqL1xuICBjb21wb25lbnQ6IHN0cmluZ1xuICAvKiogVGhlIHNob3J0ZXN0IHJ1biB3cmFwcGVkOyAyIHdoZW4gbGVmdCBvdXQuICovXG4gIG1pbj86IG51bWJlciB8IG51bGxcbiAgLyoqIEF0dHJpYnV0ZXMgdGhlIHdyYXBwZXIgY29waWVzIGZyb20gdGhlIHJ1bidzIGZpcnN0IGVsZW1lbnQuIEBkZWZhdWx0IFtdICovXG4gIGluaGVyaXQ/OiBzdHJpbmdbXVxufVxuXG4vKiogSG93IGBtZC5jb21wb25lbnRgIHR1cm5zIEdpdEh1YiBhbGVydHMsIGEgYmxvY2sgcXVvdGUgb3BlbmluZyB3aXRoIGBbIVRZUEVdYCwgaW50byBhIGNvbXBvbmVudC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWxlcnRSdWxlIHtcbiAgLyoqIFRoZSBjb21wb25lbnQgYW4gYWxlcnQgYmVjb21lcy4gKi9cbiAgY29tcG9uZW50OiBzdHJpbmdcbiAgLyoqIFRoZSBhdHRyaWJ1dGUgdGhhdCBnZXRzIHRoZSBhbGVydCdzIHR5cGUuICovXG4gIHR5cGVBczogc3RyaW5nXG4gIC8qKiBFYWNoIGFsZXJ0IHR5cGUsIGFzIHdyaXR0ZW4sIHRvIHRoZSB2YWx1ZSBvZiBgdHlwZUFzYDsgb3RoZXIgdHlwZXMgc3RheSBibG9jayBxdW90ZXMuICovXG4gIHR5cGVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+XG59XG5cbi8qKiBXaGF0IGBtZC5jb21wb25lbnRgIGRvZXMgd2l0aCBhIGRpcmVjdGl2ZSBubyBydWxlIGNvbnZlcnRzLiAqL1xuZXhwb3J0IHR5cGUgVW5rbm93bkRpcmVjdGl2ZXMgPSBcImtlZXBcIiB8IFwic291cmNlXCJcblxuLyoqIEhvdyBgbWQuY29tcG9uZW50YCB0dXJucyBtYXRjaGluZyBjb2RlIGJsb2NrcyBpbnRvIGEgY29tcG9uZW50LCBvciBncm91cHMgdGhlbS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29kZVJ1bGUge1xuICAvKiogVGhlIGJsb2NrJ3MgbGFuZ3VhZ2UsIG9yIHNldmVyYWw7IGFueSB3aGVuIGxlZnQgb3V0LiAqL1xuICBsYW5nPzogTmFtZXMgfCBudWxsXG4gIC8qKiBBIGBrZXk9XCJ2YWx1ZVwiYCB0aGUgYmxvY2sncyBtZXRhIG11c3QgaG9sZC4gKi9cbiAgbWV0YT86IHN0cmluZyB8IG51bGxcbiAgLyoqIFRoZSBjb21wb25lbnQgdGhlIGJsb2NrIGJlY29tZXM7IGxlZnQgb3V0LCB0aGUgYmxvY2sgc3RheXMgY29kZSBhbmQgb25seSBncm91cHMuICovXG4gIGNvbXBvbmVudD86IHN0cmluZyB8IG51bGxcbiAgLyoqIFRoZSBhdHRyaWJ1dGUgdGhhdCBnZXRzIHRoZSBjb2RlOyBsZWZ0IG91dCwgdGhlIGNvZGUgaXMgdGhlIGNvbXBvbmVudCdzIHRleHQuICovXG4gIHZhbHVlQXM/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBNZXRhIGBrZXk9XCJ2YWx1ZVwiYCBwYWlycyB0byBrZWVwIGFzIGF0dHJpYnV0ZXMsIGluIG9yZGVyLiAqL1xuICBhdHRyaWJ1dGVzPzogQXR0cmlidXRlUnVsZVtdXG4gIC8qKiBXcmFwIHJ1bnMgb2YgYWRqYWNlbnQgYmxvY2tzIHRoaXMgcnVsZSBtYXRjaGVkIGluIGFub3RoZXIgY29tcG9uZW50LiAqL1xuICBncm91cD86IENvZGVHcm91cFJ1bGUgfCBudWxsXG59XG5cbi8qKiBUaGUgY29tcG9uZW50IHdyYXBwaW5nIGEgcnVuIG9mIGFkamFjZW50IGNvZGUgYmxvY2tzIG9uZSBydWxlIG1hdGNoZWQ7IHRoZSBtZXRhIGtleXMgaXQgcmVhZHMgYXJlIHRha2VuIG91dCBvZiBlYWNoIGJsb2NrJ3MgbWV0YS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29kZUdyb3VwUnVsZSB7XG4gIC8qKiBUaGUgd3JhcHBpbmcgY29tcG9uZW50LiAqL1xuICBjb21wb25lbnQ6IHN0cmluZ1xuICAvKiogVGhlIHNob3J0ZXN0IHJ1biB3cmFwcGVkOyAyIHdoZW4gbGVmdCBvdXQuICovXG4gIG1pbj86IG51bWJlciB8IG51bGxcbiAgLyoqIFRoZSBhdHRyaWJ1dGUgdGhhdCBnZXRzIHRoZSBydW4ncyB2YWx1ZXMgb2YgdGhlIHJ1bGUncyBgbWV0YWAga2V5LCBhcyBhIEpTT04gbGlzdC4gKi9cbiAgY29sbGVjdD86IHN0cmluZyB8IG51bGxcbiAgLyoqIE1ldGEga2V5cyB0aGUgd3JhcHBlciBjb3BpZXMgZnJvbSB0aGUgcnVuJ3MgZmlyc3QgYmxvY2sgYXMgYXR0cmlidXRlcy4gQGRlZmF1bHQgW10gKi9cbiAgaW5oZXJpdD86IHN0cmluZ1tdXG59XG5cbi8qKiBgbWQucGFja2FnZUNvbW1hbmRgOiBhIGZlbmNlZCBibG9jayBvZiBwYWNrYWdlLW1hbmFnZXIgY29tbWFuZHMsIGl0cyBsYW5ndWFnZSBuYW1pbmcgdGhlIGVjb3N5c3RlbSAoYG5wbWAsIGBwaXBgLCBgY2FyZ29gKSwgaW50byBvbmUgY29tcG9uZW50IHdpdGggdGhlIGNvbW1hbmRzIGNvbnZlcnRlZCBmb3IgZWFjaCBtYW5hZ2VyLCBhcyBgQGRvY3VzYXVydXMvcmVtYXJrLXBsdWdpbi1ucG0yeWFybmAgZG9lcyBmb3IgbnBtLiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYWNrYWdlQ29tbWFuZE9wdGlvbnMge1xuICAvKiogVGhlIGNvbXBvbmVudCBhIGJsb2NrIGJlY29tZXM7IG9uZSBzdHJpbmcgYXR0cmlidXRlIHBlciBtYW5hZ2VyLiBAZGVmYXVsdCBcIlBhY2thZ2VUYWJzXCIgKi9cbiAgY29tcG9uZW50Pzogc3RyaW5nXG4gIC8qKiBFYWNoIGVjb3N5c3RlbSdzIG1hbmFnZXJzLCBpbiBhdHRyaWJ1dGUgb3JkZXI7IGFuIGVtcHR5IGxpc3QgbGVhdmVzIGl0cyBibG9ja3MgY29kZS4gKi9cbiAgZWNvc3lzdGVtcz86IEVjb3N5c3RlbXNcbn1cblxuLyoqIFRoZSBtYW5hZ2VycyBgbWQucGFja2FnZUNvbW1hbmRgIGNvbnZlcnRzIGVhY2ggZWNvc3lzdGVtJ3MgY29tbWFuZHMgZm9yLiAqL1xuZXhwb3J0IGludGVyZmFjZSBFY29zeXN0ZW1zIHtcbiAgLyoqIE1hbmFnZXJzIGZvciBgbnBtYCBibG9ja3MsIGNvbnZlcnRlZCBhcyBucG0tdG8teWFybiBjb252ZXJ0czsgbnBtLCBwbnBtLCB5YXJuIGFuZCBidW4gYnkgZGVmYXVsdC4gKi9cbiAgbnBtPzogTnBtTWFuYWdlcltdXG4gIC8qKiBNYW5hZ2VycyBmb3IgYHBpcGAgYmxvY2tzOyBwaXAsIHV2LCBwb2V0cnkgYW5kIHBkbSBieSBkZWZhdWx0LiAqL1xuICBwaXA/OiBQaXBNYW5hZ2VyW11cbiAgLyoqIE1hbmFnZXJzIGZvciBgY2FyZ29gIGJsb2NrczsgY2FyZ28gYW5kIGNhcmdvLWJpbnN0YWxsIGJ5IGRlZmF1bHQuICovXG4gIGNhcmdvPzogQ2FyZ29NYW5hZ2VyW11cbn1cblxuLyoqIEEgSmF2YVNjcmlwdCBwYWNrYWdlIG1hbmFnZXIgYW4gYG5wbWAgY29tbWFuZCBjb252ZXJ0cyB0by4gKi9cbmV4cG9ydCB0eXBlIE5wbU1hbmFnZXIgPSBcIm5wbVwiIHwgXCJwbnBtXCIgfCBcInlhcm5cIiB8IFwiYnVuXCIgfCBcImRlbm9cIiB8IFwibnViXCJcblxuLyoqIEEgUHl0aG9uIHBhY2thZ2UgbWFuYWdlciBhIGBwaXBgIGNvbW1hbmQgY29udmVydHMgdG8uICovXG5leHBvcnQgdHlwZSBQaXBNYW5hZ2VyID0gXCJwaXBcIiB8IFwidXZcIiB8IFwicG9ldHJ5XCIgfCBcInBkbVwiXG5cbi8qKiBBIFJ1c3QgaW5zdGFsbGVyIGEgYGNhcmdvYCBjb21tYW5kIGNvbnZlcnRzIHRvLiAqL1xuZXhwb3J0IHR5cGUgQ2FyZ29NYW5hZ2VyID0gXCJjYXJnb1wiIHwgXCJjYXJnby1iaW5zdGFsbFwiXG5cbi8qKiBgbWQuaGVhZGluZ0lkYDogYHsjaWR9YCBhdCB0aGUgZW5kIG9mIGEgaGVhZGluZywgYWZ0ZXIgYSBzcGFjZSwgYXMgaXRzIGlkLCBhcyByZW1hcmstaGVhZGluZy1pZCByZWFkcyBpdDsgaGVhZGluZ3Mgd2l0aG91dCBvbmUga2VlcCBub25lLiAqL1xuZXhwb3J0IGludGVyZmFjZSBIZWFkaW5nSWRPcHRpb25zIHtcbiAgLyoqIFJlYWQgYSB3aG9sZSBhdHRyaWJ1dGUgbGlzdCwgYHsjaWQgLmNsYXNzIGtleT12YWx1ZSBrZXk9XCJ2IHdcIn1gLCBhcyBkaXJlY3RpdmVzIHdyaXRlIHRoZWlyczogY2xhc3NlcyBiZWNvbWUgYGNsYXNzTmFtZWAgYW5kIG90aGVyIGtleXMgcHJvcGVydGllcy4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgYXR0cmlidXRlcz86IGJvb2xlYW5cbiAgLyoqIExpdGVyYWwgc3VmZml4ZXMsIHN1Y2ggYXMgYFtzdGVwXWAsIHN0cmlwcGVkIGZyb20gYSBoZWFkaW5nJ3MgZW5kIGZvciB0aGUgYXR0cmlidXRlcyBlYWNoIG5hbWVzLCBhIHZhbHVlIG9yIGB0cnVlYCBmb3IgYSBiYXJlIG9uZTogYHtcIltzdGVwXVwiOiB7XCJkYXRhLXN0ZXBcIjogdHJ1ZX19YC4gKi9cbiAgbWFya2Vycz86IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIE1hcmtlclZhbHVlPj5cbn1cblxuLyoqIEFuIGF0dHJpYnV0ZSBhIGhlYWRpbmcgbWFya2VyIHNldHM6IGl0cyB2YWx1ZSwgb3IgYHRydWVgIGZvciB0aGUgYmFyZSBhdHRyaWJ1dGUuICovXG5leHBvcnQgdHlwZSBNYXJrZXJWYWx1ZSA9IGJvb2xlYW4gfCBzdHJpbmdcblxuLyoqIGBtZC5wYXRoUmV3cml0ZWA6IHRoZSBVUkxzIG9mIGltYWdlcywgbGlua3MgYW5kIGRlZmluaXRpb25zIGFzIGEgc2l0ZSBzZXJ2ZXMgdGhlbTogcmVsYXRpdmUgb25lcyByZXNvbHZlZCBhZ2FpbnN0IHRoZSBmaWxlJ3MgcGF0aCBhbmQgbWFkZSByb290LXJlbGF0aXZlLCBldmVyeSByb290LXJlbGF0aXZlIG9uZSB1bmRlciBgYmFzZWAsIGFuZCBsaW5rcyB0byBNYXJrZG93biBmaWxlcyB0dXJuZWQgaW50byBwYWdlIFVSTHMuICovXG5leHBvcnQgaW50ZXJmYWNlIFBhdGhSZXdyaXRlT3B0aW9ucyB7XG4gIC8qKiBUaGUgZGlyZWN0b3J5IFVSTHMgY291bnQgZnJvbSwgYXMgdGhlIGZpbGUncyBwYXRoIHNwZWxscyBpdDsgdGhlIHBhdGgncyBvd24gc3RhcnRpbmcgcG9pbnQgd2hlbiBsZWZ0IG91dC4gKi9cbiAgcm9vdD86IHN0cmluZyB8IG51bGxcbiAgLyoqIFRoZSBVUkwgdGhlIHNpdGUgaXMgc2VydmVkIGF0LCBzdWNoIGFzIGAvZG9jc2AsIHB1dCBiZWZvcmUgZXZlcnkgcm9vdC1yZWxhdGl2ZSBVUkwgb25jZS4gKi9cbiAgYmFzZT86IHN0cmluZyB8IG51bGxcbiAgLyoqIFRoZSBub2RlcyB3aG9zZSBVUkxzIGFyZSByZXdyaXR0ZW47IGltYWdlcywgbGlua3MgYW5kIGRlZmluaXRpb25zIHdoZW4gbGVmdCBvdXQuICovXG4gIG5vZGVzPzogVXJsTm9kZVtdIHwgbnVsbFxuICAvKiogTWFya2Rvd24gZmlsZXMsIHJlbGF0aXZlIHRvIGByb290YCwgdG8gdGhlIFVSTCBvZiB0aGVpciBwYWdlOyBhIGxpbmsgdG8gb25lIG9mIHRoZW0gdGFrZXMgaXQsIGJlZm9yZSBgbWFya2Rvd25MaW5rc2AgYXBwbGllcy4gQGRlZmF1bHQge30gKi9cbiAgcGFnZXM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+XG4gIC8qKiBIb3cgYSBsaW5rIHRvIGEgTWFya2Rvd24gZmlsZSBubyBwYWdlIG5hbWVzIGJlY29tZXMgYSBVUkwuICovXG4gIG1hcmtkb3duTGlua3M/OiBNYXJrZG93bkxpbmtzXG59XG5cbi8qKiBBIG5vZGUgd2l0aCBhIFVSTC4gKi9cbmV4cG9ydCB0eXBlIFVybE5vZGUgPSBcImltYWdlXCIgfCBcImxpbmtcIiB8IFwiZGVmaW5pdGlvblwiXG5cbi8qKiBIb3cgYSBsaW5rIHRvIGEgTWFya2Rvd24gZmlsZSBiZWNvbWVzIGEgVVJMLiAqL1xuZXhwb3J0IHR5cGUgTWFya2Rvd25MaW5rcyA9IFwia2VlcFwiIHwgXCJkaXJlY3RvcnlcIiB8IFwiaHRtbFwiXG5cbi8qKiBgbWQuc3RyaXBgOiBtZGFzdCBkb3duIHRvIGl0cyB0ZXh0LCBhcyBzdHJpcC1tYXJrZG93biBkb2VzOiBjb2RlLCBIVE1MLCB0YWJsZXMgYW5kIHRoZSBsaWtlIGRyb3BwZWQsIGhlYWRpbmdzIG1hZGUgcGFyYWdyYXBocywgZm9ybWF0dGluZyB1bndyYXBwZWQuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0cmlwT3B0aW9ucyB7XG4gIC8qKiBOb2RlIHR5cGVzIHRvIGxlYXZlIGFzIHRoZXkgYXJlLCBzdWNoIGFzIGBpbmxpbmVDb2RlYC4gQGRlZmF1bHQgW10gKi9cbiAga2VlcD86IHN0cmluZ1tdXG4gIC8qKiBOb2RlIHR5cGVzIHRvIGRyb3AsIGJlc2lkZXMgdGhvc2Ugc3RyaXAtbWFya2Rvd24gZHJvcHMuIEBkZWZhdWx0IFtdICovXG4gIHJlbW92ZT86IHN0cmluZ1tdXG59XG5cbi8qKiBgbWQudG9jYDogYSB0YWJsZSBvZiBjb250ZW50cyB1bmRlciB0aGUgZmlyc3QgaGVhZGluZyBtYXRjaGluZyBgaGVhZGluZ2AsIHJlcGxhY2luZyB3aGF0IHNhdCBiZXR3ZWVuIGl0IGFuZCB0aGUgbmV4dCBoZWFkaW5nIGFzIGRlZXAgb3Igc2hhbGxvd2VyLCBhcyByZW1hcmstdG9jIG1ha2VzIGl0LiAqL1xuZXhwb3J0IGludGVyZmFjZSBUb2NPcHRpb25zIHtcbiAgLyoqIFRoZSBoZWFkaW5nIHRvIHB1dCB0aGUgdGFibGUgdW5kZXIsIGFzIEphdmFTY3JpcHQgcmVndWxhciBleHByZXNzaW9uIHNvdXJjZSBtYXRjaGVkIGFnYWluc3QgaXRzIHdob2xlIHRleHQsIGNhc2UtaW5zZW5zaXRpdmVseTsgYCh0YWJsZVsgLV1vZlsgLV0pP2NvbnRlbnRzP3x0b2NgIHdoZW4gdW5zZXQuICovXG4gIGhlYWRpbmc/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBUaGUgZGVlcGVzdCBoZWFkaW5nIHJhbmsgdG8gbGlzdCwgMSB0byA2LiAqL1xuICBtYXhEZXB0aD86IG51bWJlciB8IG51bGxcbiAgLyoqIFRoZSBzaGFsbG93ZXN0IGhlYWRpbmcgcmFuayB0byBsaXN0LCAxIHRvIDYuICovXG4gIG1pbkRlcHRoPzogbnVtYmVyIHwgbnVsbFxuICAvKiogSGVhZGluZ3MgdG8gbGVhdmUgb3V0LCBhcyBKYXZhU2NyaXB0IHJlZ3VsYXIgZXhwcmVzc2lvbiBzb3VyY2UgbWF0Y2hlZCBhZ2FpbnN0IHRoZWlyIHdob2xlIHRleHQsIGNhc2UtaW5zZW5zaXRpdmVseS4gKi9cbiAgc2tpcD86IHN0cmluZyB8IG51bGxcbiAgLyoqIEtlZXAgdGhlIGxpc3QgY29tcGFjdCwgd2l0aG91dCBibGFuayBsaW5lcyBiZXR3ZWVuIGl0ZW1zOyBgdHJ1ZWAgd2hlbiB1bnNldC4gKi9cbiAgdGlnaHQ/OiBib29sZWFuIHwgbnVsbFxuICAvKiogTnVtYmVyIHRoZSBsaXN0IGluc3RlYWQgb2YgYnVsbGV0aW5nIGl0LiAqL1xuICBvcmRlcmVkPzogYm9vbGVhbiB8IG51bGxcbiAgLyoqIFdoYXQgZWFjaCBsaW5rJ3MgZnJhZ21lbnQgc3RhcnRzIHdpdGgsIHN1Y2ggYXMgYHVzZXItY29udGVudC1gLiAqL1xuICBwcmVmaXg/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBUaGUgcGFyZW50cyB3aG9zZSBoZWFkaW5ncyBhcmUgbGlzdGVkLCBhcyBhIHVuaXN0LXV0aWwtaXMgdGVzdDogYSBub2RlIHR5cGUsIGFuIG9iamVjdCBvZiBmaWVsZHMgYSBwYXJlbnQgbXVzdCBlcXVhbCwgb3IgYSBsaXN0IG9mIHRoZXNlOyBvbmx5IHRoZSByb290IHdoZW4gdW5zZXQuICovXG4gIHBhcmVudHM/OiBQYXJlbnRUZXN0IHwgbnVsbFxufVxuXG4vKiogQSB1bmlzdC11dGlsLWlzIHRlc3Qgb2YgYSBub2RlLCB3cml0dGVuIGFzIEpTT046IG9uZSBjaGVjaywgb3IgYSBsaXN0IGFueSBvZiB3aGljaCBwYXNzZXMuICovXG5leHBvcnQgdHlwZSBQYXJlbnRUZXN0ID0gUGFyZW50Q2hlY2sgfCBQYXJlbnRDaGVja1tdXG5cbi8qKiBPbmUgdW5pc3QtdXRpbC1pcyBjaGVjazogYSBub2RlIHR5cGUsIG9yIGZpZWxkcyBhIG5vZGUgbXVzdCBlcXVhbC4gKi9cbmV4cG9ydCB0eXBlIFBhcmVudENoZWNrID0gc3RyaW5nIHwgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cblxuLyoqIGBtZC5zdHJpbmdpZnlgOiBtZGFzdCBpbnRvIE1hcmtkb3duOyBvcHRpb25zIG5hbWVkIGFzIG1kYXN0LXV0aWwtdG8tbWFya2Rvd24gbmFtZXMgdGhlbS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RyaW5naWZ5T3B0aW9ucyB7XG4gIC8qKiBUaGUgbWFya2VyIG9mIHVub3JkZXJlZCBsaXN0IGl0ZW1zOiBgKmAsIGArYCBvciBgLWAuICovXG4gIGJ1bGxldD86IHN0cmluZyB8IG51bGxcbiAgLyoqIFRoZSBtYXJrZXIgb2Ygb3JkZXJlZCBsaXN0IGl0ZW1zOiBgLmAgb3IgYClgLiAqL1xuICBidWxsZXRPcmRlcmVkPzogc3RyaW5nIHwgbnVsbFxuICAvKiogVGhlIG1hcmtlciBvZiBhIGxpc3QgcmlnaHQgYWZ0ZXIgYSBsaXN0IHdpdGggYGJ1bGxldGAuICovXG4gIGJ1bGxldE90aGVyPzogc3RyaW5nIHwgbnVsbFxuICAvKiogQ2xvc2UgQVRYIGhlYWRpbmdzIHdpdGggYXMgbWFueSBgI2AgYXMgdGhleSBvcGVuIHdpdGguIEBkZWZhdWx0IGZhbHNlICovXG4gIGNsb3NlQXR4PzogYm9vbGVhblxuICAvKiogVGhlIG1hcmtlciBvZiBlbXBoYXNpczogYCpgIG9yIGBfYC4gKi9cbiAgZW1waGFzaXM/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBUaGUgbWFya2VyIG9mIGZlbmNlZCBjb2RlOiBgYCBgIGBgIG9yIGB+YC4gKi9cbiAgZmVuY2U/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBGZW5jZSBjb2RlOyBgZmFsc2VgIGluZGVudHMgaXQgd2hlcmUgaXQgY2FuLiBAZGVmYXVsdCB0cnVlICovXG4gIGZlbmNlcz86IGJvb2xlYW5cbiAgLyoqIE51bWJlciBvcmRlcmVkIGxpc3QgaXRlbXMgdXAgZnJvbSBgc3RhcnRgLiBAZGVmYXVsdCB0cnVlICovXG4gIGluY3JlbWVudExpc3RNYXJrZXI/OiBib29sZWFuXG4gIC8qKiBIb3cgbGlzdCBpdGVtIGNvbnRlbnQgaXMgaW5kZW50ZWQ6IGBvbmVgLCBgdGFiYCBvciBgbWl4ZWRgLiAqL1xuICBsaXN0SXRlbUluZGVudD86IHN0cmluZyB8IG51bGxcbiAgLyoqIFRoZSBtYXJrZXIgb2YgdGl0bGVzOiBgXCJgIG9yIGAnYC4gKi9cbiAgcXVvdGU/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBXcml0ZSBsaW5rcyBhcyByZXNvdXJjZXMgZXZlbiB3aGVyZSBhbiBhdXRvbGluayB3b3VsZCBkby4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgcmVzb3VyY2VMaW5rPzogYm9vbGVhblxuICAvKiogVGhlIG1hcmtlciBvZiB0aGVtYXRpYyBicmVha3M6IGAqYCwgYC1gIG9yIGBfYC4gKi9cbiAgcnVsZT86IHN0cmluZyB8IG51bGxcbiAgLyoqIEhvdyBtYW55IG1hcmtlcnMgYSB0aGVtYXRpYyBicmVhayBoYXMsIDMgb3IgbW9yZS4gKi9cbiAgcnVsZVJlcGV0aXRpb24/OiBudW1iZXIgfCBudWxsXG4gIC8qKiBQdXQgc3BhY2VzIGJldHdlZW4gdGhlIG1hcmtlcnMgb2YgYSB0aGVtYXRpYyBicmVhay4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgcnVsZVNwYWNlcz86IGJvb2xlYW5cbiAgLyoqIFdyaXRlIGhlYWRpbmdzIG9mIHJhbmsgMSBhbmQgMiBhcyBzZXRleHQgaGVhZGluZ3MuIEBkZWZhdWx0IGZhbHNlICovXG4gIHNldGV4dD86IGJvb2xlYW5cbiAgLyoqIFRoZSBtYXJrZXIgb2Ygc3Ryb25nOiBgKmAgb3IgYF9gLiAqL1xuICBzdHJvbmc/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBKb2luIGRlZmluaXRpb25zIHdpdGggbm8gYmxhbmsgbGluZSBiZXR3ZWVuIHRoZW0uIEBkZWZhdWx0IGZhbHNlICovXG4gIHRpZ2h0RGVmaW5pdGlvbnM/OiBib29sZWFuXG4gIC8qKiBFeHRyYSBwYXR0ZXJucyBvZiBjaGFyYWN0ZXJzIHRvIGVzY2FwZS4gKi9cbiAgdW5zYWZlPzogVW5zYWZlUGF0dGVybltdXG59XG5cbi8qKiBBIGNoYXJhY3RlciB0byBlc2NhcGUgd2hlcmUgaXQgd291bGQgb3RoZXJ3aXNlIHN0YXJ0IG9yIGVuZCBzeW50YXguICovXG5leHBvcnQgaW50ZXJmYWNlIFVuc2FmZVBhdHRlcm4ge1xuICAvKiogVGhlIGNoYXJhY3RlciwgZXNjYXBlZCBhcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbiB3b3VsZCBuZWVkIGl0LiBAZGVmYXVsdCBcIlwiICovXG4gIGNoYXJhY3Rlcj86IHN0cmluZ1xuICAvKiogQSByZWd1bGFyIGV4cHJlc3Npb24gdGhhdCBtdXN0IG1hdGNoIHJpZ2h0IGJlZm9yZSB0aGUgY2hhcmFjdGVyLiAqL1xuICBiZWZvcmU/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBBIHJlZ3VsYXIgZXhwcmVzc2lvbiB0aGF0IG11c3QgbWF0Y2ggcmlnaHQgYWZ0ZXIgdGhlIGNoYXJhY3Rlci4gKi9cbiAgYWZ0ZXI/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBPbmx5IGF0IHRoZSBzdGFydCBvZiBhIGxpbmUsIGFmdGVyIGFueSBpbmRlbnQuIEBkZWZhdWx0IGZhbHNlICovXG4gIGF0QnJlYWs/OiBib29sZWFuXG4gIC8qKiBPbmx5IGluc2lkZSBvbmUgb2YgdGhlc2UgY29uc3RydWN0cy4gKi9cbiAgaW5Db25zdHJ1Y3Q/OiBOYW1lcyB8IG51bGxcbiAgLyoqIE5ldmVyIGluc2lkZSBvbmUgb2YgdGhlc2UgY29uc3RydWN0cy4gKi9cbiAgbm90SW5Db25zdHJ1Y3Q/OiBOYW1lcyB8IG51bGxcbiAgLyoqIE9ubHkgYXQgdGhlIHN0YXJ0IG9mIGEgbm9kZSByaWdodCBhZnRlciBvbmUgb2YgdGhlc2Ugbm9kZSB0eXBlcy4gKi9cbiAgYmVmb3JlTm9kZT86IE5hbWVzIHwgbnVsbFxuICAvKiogT25seSBhdCB0aGUgZW5kIG9mIGEgbm9kZSByaWdodCBiZWZvcmUgb25lIG9mIHRoZXNlIG5vZGUgdHlwZXMuICovXG4gIGFmdGVyTm9kZT86IE5hbWVzIHwgbnVsbFxuICAvKiogUmVhZCBgYmVmb3JlYCBhbmQgYGFmdGVyYCB3aXRoIFVuaWNvZGUgY2xhc3NlcyBzdWNoIGFzIGBcXHB7TH1gLiBAZGVmYXVsdCBmYWxzZSAqL1xuICB1bmljb2RlPzogYm9vbGVhblxufVxuXG4vKiogYG1kLnRvSHRtbGA6IG1kYXN0IGludG8gaGFzdDsgb3B0aW9ucyBuYW1lZCBhcyByZW1hcmstcmVoeXBlIG5hbWVzIHRoZW0uICovXG5leHBvcnQgaW50ZXJmYWNlIFRvSHRtbE9wdGlvbnMge1xuICAvKiogS2VlcCByYXcgSFRNTCBpbiB0aGUgdHJlZSBpbnN0ZWFkIG9mIGRyb3BwaW5nIGl0LiBAZGVmYXVsdCBmYWxzZSAqL1xuICBhbGxvd0Rhbmdlcm91c0h0bWw/OiBib29sZWFuXG4gIC8qKiBXaGF0IGZvb3Rub3RlIGBpZGBzIHN0YXJ0IHdpdGgsIHNvIHRoZXkgY2Fubm90IGNsb2JiZXIgdGhlIHBhZ2UnczsgYHVzZXItY29udGVudC1gIHdoZW4gdW5zZXQuICovXG4gIGNsb2JiZXJQcmVmaXg/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBUaGUgdGV4dCBvZiBlYWNoIGZvb3Rub3RlJ3MgYmFjayByZWZlcmVuY2U7IGDihqlgLCBudW1iZXJlZCBmcm9tIHRoZSBzZWNvbmQsIHdoZW4gdW5zZXQuICovXG4gIGZvb3Rub3RlQmFja0NvbnRlbnQ/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBUaGUgYGFyaWEtbGFiZWxgIG9mIGVhY2ggZm9vdG5vdGUncyBiYWNrIHJlZmVyZW5jZTsgYEJhY2sgdG8gcmVmZXJlbmNlIDFgIGFuZCBzbyBvbiB3aGVuIHVuc2V0LiAqL1xuICBmb290bm90ZUJhY2tMYWJlbD86IHN0cmluZyB8IG51bGxcbiAgLyoqIFRoZSBoZWFkaW5nIG9mIHRoZSBmb290bm90ZXMgc2VjdGlvbjsgYEZvb3Rub3Rlc2Agd2hlbiB1bnNldC4gKi9cbiAgZm9vdG5vdGVMYWJlbD86IHN0cmluZyB8IG51bGxcbiAgLyoqIFRoZSB0YWcgbmFtZSBvZiB0aGUgZm9vdG5vdGVzIHNlY3Rpb24ncyBoZWFkaW5nOyBgaDJgIHdoZW4gdW5zZXQuICovXG4gIGZvb3Rub3RlTGFiZWxUYWdOYW1lPzogc3RyaW5nIHwgbnVsbFxuICAvKiogTm9kZSB0eXBlcyB3aXRob3V0IGEgaGFuZGxlciB0byBjb3B5IGludG8gaGFzdCBhcyB0aGV5IGFyZSwgdGhlaXIgY2hpbGRyZW4gY29udmVydGVkLiBAZGVmYXVsdCBbXSAqL1xuICBwYXNzVGhyb3VnaD86IHN0cmluZ1tdXG4gIC8qKiBBbiBgYXJpYS1sYWJlbGAgZm9yIGVhY2ggdGFzay1saXN0IGNoZWNrYm94LCBzbyBzY3JlZW4gcmVhZGVycyBuYW1lIGl0OyBub25lIHdoZW4gbGVmdCBvdXQsIGFzIHJlbWFyay1yZWh5cGUgd3JpdGVzIG5vbmUuICovXG4gIHRhc2tMaXN0TGFiZWxzPzogVGFza0xpc3RMYWJlbHMgfCBudWxsXG59XG5cbi8qKiBUaGUgbGFiZWxzIG9mIHRhc2stbGlzdCBjaGVja2JveGVzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYXNrTGlzdExhYmVscyB7XG4gIC8qKiBUaGUgbGFiZWwgb2YgYSBjaGVja2VkIGJveCwgc3VjaCBhcyBgQ29tcGxldGVkIHRhc2tgLiAqL1xuICBjaGVja2VkOiBzdHJpbmdcbiAgLyoqIFRoZSBsYWJlbCBvZiBhbiB1bmNoZWNrZWQgYm94LCBzdWNoIGFzIGBUYXNrYC4gKi9cbiAgdW5jaGVja2VkOiBzdHJpbmdcbn1cblxuLyoqIGBtZC50b05hdHVyYWxMYW5ndWFnZWA6IG1kYXN0IGludG8gbmxjc3QsIHRva2VuaXplZCBieSB0aGUgcHJvY2Vzc29yJ3MgbmF0dXJhbC1sYW5ndWFnZSBwYXJzZXI7IG9wdGlvbnMgbmFtZWQgYXMgcmVtYXJrLXJldGV4dCBhbmQgbWRhc3QtdXRpbC10by1ubGNzdCBuYW1lIHRoZW0uICovXG5leHBvcnQgaW50ZXJmYWNlIFRvTmF0dXJhbExhbmd1YWdlT3B0aW9ucyB7XG4gIC8qKiBOb2RlIHR5cGVzIHRvIGxlYXZlIG91dCwgYmVzaWRlcyBgdGFibGVgLCBgdGFibGVSb3dgIGFuZCBgdGFibGVDZWxsYC4gQGRlZmF1bHQgW10gKi9cbiAgaWdub3JlPzogc3RyaW5nW11cbiAgLyoqIE5vZGUgdHlwZXMgdG8ga2VlcCBhcyBvbmUgYFNvdXJjZU5vZGVgIG9mIHRoZWlyIHNvdXJjZSB0ZXh0LCBiZXNpZGVzIGBpbmxpbmVDb2RlYC4gQGRlZmF1bHQgW10gKi9cbiAgc291cmNlPzogc3RyaW5nW11cbn1cblxuLyoqIFRoZSBgbWQucGFyc2VgIHBsdWdpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZShvcHRpb25zPzogUGFyc2VPcHRpb25zKTogUGx1Z2luPFwibWQucGFyc2VcIiwgUGFyc2VPcHRpb25zPiB7XG4gIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiB7IG5hbWU6IFwibWQucGFyc2VcIiB9XG4gIHJldHVybiB7IG5hbWU6IFwibWQucGFyc2VcIiwgb3B0aW9ucyB9XG59XG5cbi8qKiBUaGUgYG1kLmRpcmVjdGl2ZWAgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRpcmVjdGl2ZShvcHRpb25zPzogRGlyZWN0aXZlT3B0aW9ucyk6IFBsdWdpbjxcIm1kLmRpcmVjdGl2ZVwiLCBEaXJlY3RpdmVPcHRpb25zPiB7XG4gIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiB7IG5hbWU6IFwibWQuZGlyZWN0aXZlXCIgfVxuICByZXR1cm4geyBuYW1lOiBcIm1kLmRpcmVjdGl2ZVwiLCBvcHRpb25zIH1cbn1cblxuLyoqIFRoZSBgbWQuZ2ZtYCBwbHVnaW4uICovXG5leHBvcnQgZnVuY3Rpb24gZ2ZtKG9wdGlvbnM/OiBHZm1PcHRpb25zKTogUGx1Z2luPFwibWQuZ2ZtXCIsIEdmbU9wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJtZC5nZm1cIiB9XG4gIHJldHVybiB7IG5hbWU6IFwibWQuZ2ZtXCIsIG9wdGlvbnMgfVxufVxuXG4vKiogVGhlIGBtZC5kZWZpbml0aW9uTGlzdGAgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlZmluaXRpb25MaXN0KCk6IFBsdWdpbjxcIm1kLmRlZmluaXRpb25MaXN0XCI+IHtcbiAgcmV0dXJuIHsgbmFtZTogXCJtZC5kZWZpbml0aW9uTGlzdFwiIH1cbn1cblxuLyoqIFRoZSBgbWQubWF0aGAgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hdGgob3B0aW9ucz86IE1hdGhPcHRpb25zKTogUGx1Z2luPFwibWQubWF0aFwiLCBNYXRoT3B0aW9ucz4ge1xuICBpZiAob3B0aW9ucyA9PT0gdW5kZWZpbmVkKSByZXR1cm4geyBuYW1lOiBcIm1kLm1hdGhcIiB9XG4gIHJldHVybiB7IG5hbWU6IFwibWQubWF0aFwiLCBvcHRpb25zIH1cbn1cblxuLyoqIFRoZSBgbWQubWR4YCBwbHVnaW4uICovXG5leHBvcnQgZnVuY3Rpb24gbWR4KG9wdGlvbnM/OiBNZHhPcHRpb25zKTogUGx1Z2luPFwibWQubWR4XCIsIE1keE9wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJtZC5tZHhcIiB9XG4gIHJldHVybiB7IG5hbWU6IFwibWQubWR4XCIsIG9wdGlvbnMgfVxufVxuXG4vKiogVGhlIGBtZC5mcm9udG1hdHRlcmAgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZyb250bWF0dGVyKG9wdGlvbnM/OiBGcm9udG1hdHRlck9wdGlvbnMpOiBQbHVnaW48XCJtZC5mcm9udG1hdHRlclwiLCBGcm9udG1hdHRlck9wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJtZC5mcm9udG1hdHRlclwiIH1cbiAgcmV0dXJuIHsgbmFtZTogXCJtZC5mcm9udG1hdHRlclwiLCBvcHRpb25zIH1cbn1cblxuLyoqIFRoZSBgbWQuZ2Vtb2ppYCBwbHVnaW4uICovXG5leHBvcnQgZnVuY3Rpb24gZ2Vtb2ppKCk6IFBsdWdpbjxcIm1kLmdlbW9qaVwiPiB7XG4gIHJldHVybiB7IG5hbWU6IFwibWQuZ2Vtb2ppXCIgfVxufVxuXG4vKiogVGhlIGBtZC5jb21wb25lbnRgIHBsdWdpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21wb25lbnQob3B0aW9ucz86IENvbXBvbmVudE9wdGlvbnMpOiBQbHVnaW48XCJtZC5jb21wb25lbnRcIiwgQ29tcG9uZW50T3B0aW9ucz4ge1xuICBpZiAob3B0aW9ucyA9PT0gdW5kZWZpbmVkKSByZXR1cm4geyBuYW1lOiBcIm1kLmNvbXBvbmVudFwiIH1cbiAgcmV0dXJuIHsgbmFtZTogXCJtZC5jb21wb25lbnRcIiwgb3B0aW9ucyB9XG59XG5cbi8qKiBUaGUgYG1kLnBhY2thZ2VDb21tYW5kYCBwbHVnaW4uICovXG5leHBvcnQgZnVuY3Rpb24gcGFja2FnZUNvbW1hbmQob3B0aW9ucz86IFBhY2thZ2VDb21tYW5kT3B0aW9ucyk6IFBsdWdpbjxcIm1kLnBhY2thZ2VDb21tYW5kXCIsIFBhY2thZ2VDb21tYW5kT3B0aW9ucz4ge1xuICBpZiAob3B0aW9ucyA9PT0gdW5kZWZpbmVkKSByZXR1cm4geyBuYW1lOiBcIm1kLnBhY2thZ2VDb21tYW5kXCIgfVxuICByZXR1cm4geyBuYW1lOiBcIm1kLnBhY2thZ2VDb21tYW5kXCIsIG9wdGlvbnMgfVxufVxuXG4vKiogVGhlIGBtZC5oZWFkaW5nSWRgIHBsdWdpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoZWFkaW5nSWQob3B0aW9ucz86IEhlYWRpbmdJZE9wdGlvbnMpOiBQbHVnaW48XCJtZC5oZWFkaW5nSWRcIiwgSGVhZGluZ0lkT3B0aW9ucz4ge1xuICBpZiAob3B0aW9ucyA9PT0gdW5kZWZpbmVkKSByZXR1cm4geyBuYW1lOiBcIm1kLmhlYWRpbmdJZFwiIH1cbiAgcmV0dXJuIHsgbmFtZTogXCJtZC5oZWFkaW5nSWRcIiwgb3B0aW9ucyB9XG59XG5cbi8qKiBUaGUgYG1kLnBhdGhSZXdyaXRlYCBwbHVnaW4uICovXG5leHBvcnQgZnVuY3Rpb24gcGF0aFJld3JpdGUob3B0aW9ucz86IFBhdGhSZXdyaXRlT3B0aW9ucyk6IFBsdWdpbjxcIm1kLnBhdGhSZXdyaXRlXCIsIFBhdGhSZXdyaXRlT3B0aW9ucz4ge1xuICBpZiAob3B0aW9ucyA9PT0gdW5kZWZpbmVkKSByZXR1cm4geyBuYW1lOiBcIm1kLnBhdGhSZXdyaXRlXCIgfVxuICByZXR1cm4geyBuYW1lOiBcIm1kLnBhdGhSZXdyaXRlXCIsIG9wdGlvbnMgfVxufVxuXG4vKiogVGhlIGBtZC5zdHJpcGAgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0cmlwKG9wdGlvbnM/OiBTdHJpcE9wdGlvbnMpOiBQbHVnaW48XCJtZC5zdHJpcFwiLCBTdHJpcE9wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJtZC5zdHJpcFwiIH1cbiAgcmV0dXJuIHsgbmFtZTogXCJtZC5zdHJpcFwiLCBvcHRpb25zIH1cbn1cblxuLyoqIFRoZSBgbWQudG9jYCBwbHVnaW4uICovXG5leHBvcnQgZnVuY3Rpb24gdG9jKG9wdGlvbnM/OiBUb2NPcHRpb25zKTogUGx1Z2luPFwibWQudG9jXCIsIFRvY09wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJtZC50b2NcIiB9XG4gIHJldHVybiB7IG5hbWU6IFwibWQudG9jXCIsIG9wdGlvbnMgfVxufVxuXG4vKiogVGhlIGBtZC5zdHJpbmdpZnlgIHBsdWdpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmdpZnkob3B0aW9ucz86IFN0cmluZ2lmeU9wdGlvbnMpOiBQbHVnaW48XCJtZC5zdHJpbmdpZnlcIiwgU3RyaW5naWZ5T3B0aW9ucz4ge1xuICBpZiAob3B0aW9ucyA9PT0gdW5kZWZpbmVkKSByZXR1cm4geyBuYW1lOiBcIm1kLnN0cmluZ2lmeVwiIH1cbiAgcmV0dXJuIHsgbmFtZTogXCJtZC5zdHJpbmdpZnlcIiwgb3B0aW9ucyB9XG59XG5cbi8qKiBUaGUgYG1kLnRvSHRtbGAgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSHRtbChvcHRpb25zPzogVG9IdG1sT3B0aW9ucyk6IFBsdWdpbjxcIm1kLnRvSHRtbFwiLCBUb0h0bWxPcHRpb25zPiB7XG4gIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiB7IG5hbWU6IFwibWQudG9IdG1sXCIgfVxuICByZXR1cm4geyBuYW1lOiBcIm1kLnRvSHRtbFwiLCBvcHRpb25zIH1cbn1cblxuLyoqIFRoZSBgbWQudG9OYXR1cmFsTGFuZ3VhZ2VgIHBsdWdpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b05hdHVyYWxMYW5ndWFnZShvcHRpb25zPzogVG9OYXR1cmFsTGFuZ3VhZ2VPcHRpb25zKTogUGx1Z2luPFwibWQudG9OYXR1cmFsTGFuZ3VhZ2VcIiwgVG9OYXR1cmFsTGFuZ3VhZ2VPcHRpb25zPiB7XG4gIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiB7IG5hbWU6IFwibWQudG9OYXR1cmFsTGFuZ3VhZ2VcIiB9XG4gIHJldHVybiB7IG5hbWU6IFwibWQudG9OYXR1cmFsTGFuZ3VhZ2VcIiwgb3B0aW9ucyB9XG59XG4iXX0=
@@ -10,11 +10,11 @@ export interface NativePipeline {
10
10
  run(tree: Node, value?: string): Node;
11
11
  runSync(tree: Node, value?: string): Node;
12
12
  stringify(tree: Node): string;
13
- process(text: string): VFile;
14
- processSync(text: string): VFile;
13
+ process(text: string, path?: string): VFile;
14
+ processSync(text: string, path?: string): VFile;
15
15
  hosts(): number[];
16
16
  startRun(tree: Node, value: string | undefined, sync: boolean): NativeRun<Node>;
17
- startProcess(text: string, sync: boolean): NativeRun<VFile>;
17
+ startProcess(text: string, sync: boolean, path?: string): NativeRun<VFile>;
18
18
  }
19
19
  /** A run paused before host plugins until `resume`, then finished with `result`. */
20
20
  export interface NativeRun<Result> {
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9tb2RlbHMvYWRkb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgTWVzc2FnZSwgTm9kZSwgVkZpbGUgfSBmcm9tIFwiLi9maWxlLnRzXCJcblxuLyoqIFRoZSBjcmF0ZSdzIHBpcGVsaW5lIGFzIHRoZSBhZGRvbiBleHBvc2VzIGl0OiB2YWx1ZXMgY3Jvc3MgYXMgSlNPTi4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmF0aXZlUGlwZWxpbmUge1xuICB1c2UodmFsdWU6IHVua25vd24sIG9wdGlvbnM/OiB1bmtub3duKTogdm9pZFxuICBkYXRhKGtleT86IHN0cmluZyk6IHVua25vd25cbiAgc2V0RGF0YShrZXk6IHN0cmluZywgdmFsdWU6IHVua25vd24pOiB2b2lkXG4gIHJlcGxhY2VEYXRhKGRhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogdm9pZFxuICBmcmVlemUoKTogdm9pZFxuICBwYXJzZSh0ZXh0OiBzdHJpbmcpOiBOb2RlXG4gIHJ1bih0cmVlOiBOb2RlLCB2YWx1ZT86IHN0cmluZyk6IE5vZGVcbiAgcnVuU3luYyh0cmVlOiBOb2RlLCB2YWx1ZT86IHN0cmluZyk6IE5vZGVcbiAgc3RyaW5naWZ5KHRyZWU6IE5vZGUpOiBzdHJpbmdcbiAgcHJvY2Vzcyh0ZXh0OiBzdHJpbmcpOiBWRmlsZVxuICBwcm9jZXNzU3luYyh0ZXh0OiBzdHJpbmcpOiBWRmlsZVxuICBob3N0cygpOiBudW1iZXJbXVxuICBzdGFydFJ1bih0cmVlOiBOb2RlLCB2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkLCBzeW5jOiBib29sZWFuKTogTmF0aXZlUnVuPE5vZGU+XG4gIHN0YXJ0UHJvY2Vzcyh0ZXh0OiBzdHJpbmcsIHN5bmM6IGJvb2xlYW4pOiBOYXRpdmVSdW48VkZpbGU+XG59XG5cbi8qKiBBIHJ1biBwYXVzZWQgYmVmb3JlIGhvc3QgcGx1Z2lucyB1bnRpbCBgcmVzdW1lYCwgdGhlbiBmaW5pc2hlZCB3aXRoIGByZXN1bHRgLiAqL1xuZXhwb3J0IGludGVyZmFjZSBOYXRpdmVSdW48UmVzdWx0PiB7XG4gIGhvc3RzKCk6IG51bWJlcltdXG4gIHRyZWUoKTogTm9kZVxuICB2YWx1ZSgpOiBzdHJpbmcgfCBudWxsXG4gIG1lc3NhZ2VzKCk6IE1lc3NhZ2VbXVxuICByZXN1bWUodHJlZTogTm9kZSwgbWVzc2FnZXM6IE1lc3NhZ2VbXSk6IHZvaWRcbiAgcmVzdWx0KCk6IFJlc3VsdFxufVxuXG4vKiogV2hhdCB0aGUgbmFwaSBhZGRvbiBleHBvcnRzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBBZGRvbiB7XG4gIHZlcnNpb24oKTogc3RyaW5nXG4gIHBsdWdpbk5hbWVzKCk6IHN0cmluZ1tdXG4gIHJldGFpbmVkTWVtb3J5KCk6IG51bWJlclxuICBzZXRSZXRhaW5lZE1lbW9yeShieXRlczogbnVtYmVyKTogdm9pZFxuICBQaXBlbGluZTogbmV3ICgpID0+IE5hdGl2ZVBpcGVsaW5lXG59XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9tb2RlbHMvYWRkb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgTWVzc2FnZSwgTm9kZSwgVkZpbGUgfSBmcm9tIFwiLi9maWxlLnRzXCJcblxuLyoqIFRoZSBjcmF0ZSdzIHBpcGVsaW5lIGFzIHRoZSBhZGRvbiBleHBvc2VzIGl0OiB2YWx1ZXMgY3Jvc3MgYXMgSlNPTi4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmF0aXZlUGlwZWxpbmUge1xuICB1c2UodmFsdWU6IHVua25vd24sIG9wdGlvbnM/OiB1bmtub3duKTogdm9pZFxuICBkYXRhKGtleT86IHN0cmluZyk6IHVua25vd25cbiAgc2V0RGF0YShrZXk6IHN0cmluZywgdmFsdWU6IHVua25vd24pOiB2b2lkXG4gIHJlcGxhY2VEYXRhKGRhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogdm9pZFxuICBmcmVlemUoKTogdm9pZFxuICBwYXJzZSh0ZXh0OiBzdHJpbmcpOiBOb2RlXG4gIHJ1bih0cmVlOiBOb2RlLCB2YWx1ZT86IHN0cmluZyk6IE5vZGVcbiAgcnVuU3luYyh0cmVlOiBOb2RlLCB2YWx1ZT86IHN0cmluZyk6IE5vZGVcbiAgc3RyaW5naWZ5KHRyZWU6IE5vZGUpOiBzdHJpbmdcbiAgcHJvY2Vzcyh0ZXh0OiBzdHJpbmcsIHBhdGg/OiBzdHJpbmcpOiBWRmlsZVxuICBwcm9jZXNzU3luYyh0ZXh0OiBzdHJpbmcsIHBhdGg/OiBzdHJpbmcpOiBWRmlsZVxuICBob3N0cygpOiBudW1iZXJbXVxuICBzdGFydFJ1bih0cmVlOiBOb2RlLCB2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkLCBzeW5jOiBib29sZWFuKTogTmF0aXZlUnVuPE5vZGU+XG4gIHN0YXJ0UHJvY2Vzcyh0ZXh0OiBzdHJpbmcsIHN5bmM6IGJvb2xlYW4sIHBhdGg/OiBzdHJpbmcpOiBOYXRpdmVSdW48VkZpbGU+XG59XG5cbi8qKiBBIHJ1biBwYXVzZWQgYmVmb3JlIGhvc3QgcGx1Z2lucyB1bnRpbCBgcmVzdW1lYCwgdGhlbiBmaW5pc2hlZCB3aXRoIGByZXN1bHRgLiAqL1xuZXhwb3J0IGludGVyZmFjZSBOYXRpdmVSdW48UmVzdWx0PiB7XG4gIGhvc3RzKCk6IG51bWJlcltdXG4gIHRyZWUoKTogTm9kZVxuICB2YWx1ZSgpOiBzdHJpbmcgfCBudWxsXG4gIG1lc3NhZ2VzKCk6IE1lc3NhZ2VbXVxuICByZXN1bWUodHJlZTogTm9kZSwgbWVzc2FnZXM6IE1lc3NhZ2VbXSk6IHZvaWRcbiAgcmVzdWx0KCk6IFJlc3VsdFxufVxuXG4vKiogV2hhdCB0aGUgbmFwaSBhZGRvbiBleHBvcnRzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBBZGRvbiB7XG4gIHZlcnNpb24oKTogc3RyaW5nXG4gIHBsdWdpbk5hbWVzKCk6IHN0cmluZ1tdXG4gIHJldGFpbmVkTWVtb3J5KCk6IG51bWJlclxuICBzZXRSZXRhaW5lZE1lbW9yeShieXRlczogbnVtYmVyKTogdm9pZFxuICBQaXBlbGluZTogbmV3ICgpID0+IE5hdGl2ZVBpcGVsaW5lXG59XG4iXX0=
@@ -83,8 +83,8 @@ export class Processor {
83
83
  async process(document) {
84
84
  const text = readValue(document) ?? "";
85
85
  if (!this.#attach())
86
- return withPath(this.#native.process(text), document);
87
- const run = this.#native.startProcess(text, false);
86
+ return withPath(this.#native.process(text, readPath(document)), document);
87
+ const run = this.#native.startProcess(text, false, readPath(document));
88
88
  const file = new HostFile({ value: run.value() ?? text, path: readPath(document) });
89
89
  await finishRun({ run, hosts: this.#hosts, file, sync: false, call: "process" });
90
90
  return withPath(mergeData(run.result(), file.data), document);
@@ -93,8 +93,8 @@ export class Processor {
93
93
  processSync(document) {
94
94
  const text = readValue(document) ?? "";
95
95
  if (!this.#attach())
96
- return withPath(this.#native.processSync(text), document);
97
- const run = this.#native.startProcess(text, true);
96
+ return withPath(this.#native.processSync(text, readPath(document)), document);
97
+ const run = this.#native.startProcess(text, true, readPath(document));
98
98
  const file = new HostFile({ value: run.value() ?? text, path: readPath(document) });
99
99
  void finishRun({ run, hosts: this.#hosts, file, sync: true, call: "process" });
100
100
  return withPath(mergeData(run.result(), file.data), document);
@@ -151,4 +151,4 @@ function withPath(file, document) {
151
151
  const path = readPath(document);
152
152
  return path === undefined ? file : { ...file, path };
153
153
  }
154
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzc29yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbW9kZWxzL3Byb2Nlc3Nvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sOEJBQThCLENBQUE7QUFDekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQTtBQUN6RSxPQUFPLEVBQWtCLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFBO0FBQzFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUE7QUFLL0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUVyQzs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sU0FBUztJQUNwQixPQUFPLENBQWdCO0lBQ3ZCLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBb0IsQ0FBQTtJQUNsQyxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQWdCLENBQUE7SUFDaEMsU0FBUyxHQUFHLEtBQUssQ0FBQTtJQUVqQixZQUFZLE1BQXNCO1FBQ2hDLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFBO0lBQ3ZCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxHQUFHLENBQ0QsS0FBNEQsRUFDNUQsR0FBRyxPQUFrQjtRQUVyQixJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQ2xELE9BQU8sSUFBSSxDQUFBO1FBQ2IsQ0FBQztRQUNELE1BQU0sUUFBUSxHQUFHLENBQUMsUUFBa0IsRUFBRSxVQUFxQixFQUFFLEVBQUUsQ0FDN0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUs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RSxHQUFHLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLE1BQU0sQ0FBQyxJQUFJLEVBQUUsR0FBRyxJQUFJLEVBQUUsRUFBRSxDQUFBO0FBQ3pELENBQUM7QUFFRCxTQUFTLFFBQVEsQ0FBQyxJQUFXLEVBQUUsUUFBb0I7SUFDakQsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQy9CLE9BQU8sSUFBSSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFBO0FBQ3RELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc0F0dGFjaGVyIH0gZnJvbSBcIi4uL2FjdGlvbnMvYXR0YWNoZXIvY2hlY2sudHNcIlxuaW1wb3J0IHsgaXNQbGFpbk9iamVjdCwgbWVyZ2VPcHRpb25zIH0gZnJvbSBcIi4uL2FjdGlvbnMvb3B0aW9ucy9tZXJnZS50c1wiXG5pbXBvcnQgeyB0eXBlIEhvc3RFbnRyeSwgbWFwUGx1Z2dhYmxlIH0gZnJvbSBcIi4uL2FjdGlvbnMvcGx1Z2dhYmxlL21hcC50c1wiXG5pbXBvcnQgeyBmaW5pc2hSdW4gfSBmcm9tIFwiLi4vYWN0aW9ucy9ydW4vZmluaXNoLnRzXCJcbmltcG9ydCB7IGlzVHJhbnNmb3JtZXIgfSBmcm9tIFwiLi4vYWN0aW9ucy90cmFuc2Zvcm1lci9jaGVjay50c1wiXG5pbXBvcnQgdHlwZSB7IE5hdGl2ZVBpcGVsaW5lIH0gZnJvbSBcIi4vYWRkb24udHNcIlxuaW1wb3J0IHR5cGUgeyBDb21wYXRpYmxlLCBOb2RlLCBWRmlsZSB9IGZyb20gXCIuL2ZpbGUudHNcIlxuaW1wb3J0IHR5cGUgeyBIb3N0IH0gZnJvbSBcIi4vaG9zdC50c1wiXG5pbXBvcnQgdHlwZSB7IEF0dGFjaGVyLCBQbHVnZ2FibGUsIFBsdWdnYWJsZUxpc3QsIFByZXNldCB9IGZyb20gXCIuL3BsdWdpbi50c1wiXG5pbXBvcnQgeyBIb3N0RmlsZSB9IGZyb20gXCIuL3ZmaWxlLnRzXCJcblxuLyoqXG4gKiB1bmlmaWVkJ3MgcHJvY2Vzc29yIG92ZXIgdGhlIG5hdGl2ZSBwaXBlbGluZTsgZXZlcnkgY2FsbCBpcyB0aGUgY3JhdGUncywgZXhjZXB0IHRoYXRcbiAqIEphdmFTY3JpcHQgcGx1Z2lucyBydW4gaGVyZSB3aGVuIGEgcnVuIHBhdXNlcyBiZWZvcmUgdGhlbS5cbiAqL1xuZXhwb3J0IGNsYXNzIFByb2Nlc3NvciB7XG4gICNuYXRpdmU6IE5hdGl2ZVBpcGVsaW5lXG4gICNpZHMgPSBuZXcgTWFwPEF0dGFjaGVyLCBudW1iZXI+KClcbiAgI2hvc3RzID0gbmV3IE1hcDxudW1iZXIsIEhvc3Q+KClcbiAgI2F0dGFjaGVkID0gZmFsc2VcblxuICBjb25zdHJ1Y3RvcihuYXRpdmU6IE5hdGl2ZVBpcGVsaW5lKSB7XG4gICAgdGhpcy4jbmF0aXZlID0gbmF0aXZlXG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgcGx1Z2luLCBhIGxpc3Qgb2YgdGhlbSBvciBhIHByZXNldDsgYSBwbHVnaW4gdXNlZCBhZ2FpbiBpcyByZWNvbmZpZ3VyZWQuIEFcbiAgICogSmF2YVNjcmlwdCBwbHVnaW4gaXMgYW4gYXR0YWNoZXIsIGNhbGxlZCB3aXRoIHRoZSBwcm9jZXNzb3IgYW5kIGl0cyBvcHRpb25zIGF0IGZyZWV6ZS5cbiAgICovXG4gIHVzZShcbiAgICB2YWx1ZTogUGx1Z2dhYmxlIHwgUGx1Z2dhYmxlTGlzdCB8IFByZXNldCB8IG51bGwgfCB1bmRlZmluZWQsXG4gICAgLi4ub3B0aW9uczogdW5rbm93bltdXG4gICkge1xuICAgIGlmIChpc0F0dGFjaGVyKHZhbHVlKSkge1xuICAgICAgdGhpcy4jbmF0aXZlLnVzZShbdGhpcy4jcmVnaXN0ZXIodmFsdWUsIG9wdGlvbnMpXSlcbiAgICAgIHJldHVybiB0aGlzXG4gICAgfVxuICAgIGNvbnN0IHJlZ2lzdGVyID0gKGF0dGFjaGVyOiBBdHRhY2hlciwgcGFyYW1ldGVyczogdW5rbm93bltdKSA9PlxuICAgICAgdGhpcy4jcmVnaXN0ZXIoYXR0YWNoZXIsIHBhcmFtZXRlcnMpXG4gICAgdGhpcy4jbmF0aXZlLnVzZShtYXBQbHVnZ2FibGUodmFsdWUgPz8gbnVsbCwgcmVnaXN0ZXIpLCBvcHRpb25zWzBdKVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKiogQWxsIGRhdGEsIG9yIHRoZSB2YWx1ZSB1bmRlciBga2V5YC4gKi9cbiAgZGF0YSgpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICBkYXRhKGtleTogc3RyaW5nKTogdW5rbm93blxuICAvKiogU2V0IHRoZSB2YWx1ZSB1bmRlciBga2V5YCwgb3IgcmVwbGFjZSBhbGwgZGF0YS4gKi9cbiAgZGF0YShrZXk6IHN0cmluZywgdmFsdWU6IHVua25vd24pOiB0aGlzXG4gIGRhdGEoZGF0YXNldDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiB0aGlzXG4gIGRhdGEoa2V5Pzogc3RyaW5nIHwgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIC4uLnZhbHVlOiB1bmtub3duW10pIHtcbiAgICBpZiAodHlwZW9mIGtleSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgdGhpcy4jbmF0aXZlLnJlcGxhY2VEYXRhKGtleSlcbiAgICAgIHJldHVybiB0aGlzXG4gICAgfVxuICAgIGlmIChrZXkgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLiNuYXRpdmUuc2V0RGF0YShrZXksIHZhbHVlWzBdKVxuICAgICAgcmV0dXJuIHRoaXNcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuI25hdGl2ZS5kYXRhKGtleSlcbiAgfVxuXG4gIC8qKiBBdHRhY2ggZXZlcnkgcGx1Z2luOyBsYXRlciBgdXNlYCBhbmQgYGRhdGFgIHNldHRlcnMgZmFpbC4gKi9cbiAgZnJlZXplKCkge1xuICAgIHRoaXMuI2F0dGFjaCgpXG4gICAgdGhpcy4jbmF0aXZlLmZyZWV6ZSgpXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKiBQYXJzZSBhIGRvY3VtZW50IGludG8gYSB0cmVlLiAqL1xuICBwYXJzZShkb2N1bWVudDogQ29tcGF0aWJsZSkge1xuICAgIHRoaXMuI2F0dGFjaCgpXG4gICAgcmV0dXJuIHRoaXMuI25hdGl2ZS5wYXJzZShyZWFkVmFsdWUoZG9jdW1lbnQpID8/IFwiXCIpXG4gIH1cblxuICAvKipcbiAgICogUnVuIHRoZSB0cmFuc2Zvcm1zLCBmaW5pc2hpbmcgYXN5bmNocm9ub3VzIHN0YWdlczsgYGZpbGVgLCB0aGUgdGV4dCBgdHJlZWAgd2FzIHBhcnNlZFxuICAgKiBmcm9tLCBsZXRzIGJyaWRnZXMgcmVhZCBpdCBhbmQga2VlcHMgcG9zaXRpb25zIGluIHRoZSByZXN1bHQuXG4gICAqL1xuICBhc3luYyBydW4odHJlZTogTm9kZSwgZmlsZT86IENvbXBhdGlibGUpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHJlYWRWYWx1ZShmaWxlKVxuICAgIGlmICghdGhpcy4jYXR0YWNoKCkpIHJldHVybiB0aGlzLiNuYXRpdmUucnVuKHRyZWUsIHZhbHVlKVxuICAgIGNvbnN0IHJ1biA9IHRoaXMuI25hdGl2ZS5zdGFydFJ1bih0cmVlLCB2YWx1ZSwgZmFsc2UpXG4gICAgY29uc3QgaG9zdCA9IG5ldyBIb3N0RmlsZSh7IHZhbHVlLCBwYXRoOiByZWFkUGF0aChmaWxlKSB9KVxuICAgIGF3YWl0IGZpbmlzaFJ1bih7IHJ1biwgaG9zdHM6IHRoaXMuI2hvc3RzLCBmaWxlOiBob3N0LCBzeW5jOiBmYWxzZSwgY2FsbDogXCJydW5cIiB9KVxuICAgIHJldHVybiBydW4ucmVzdWx0KClcbiAgfVxuXG4gIC8qKiBSdW4gdGhlIHRyYW5zZm9ybXM7IGZhaWxzIHdpdGggYGFzeW5jLWluLXN5bmNgIG9uIGFuIGFzeW5jaHJvbm91cyBzdGFnZS4gKi9cbiAgcnVuU3luYyh0cmVlOiBOb2RlLCBmaWxlPzogQ29tcGF0aWJsZSkge1xuICAgIGNvbnN0IHZhbHVlID0gcmVhZFZhbHVlKGZpbGUpXG4gICAgaWYgKCF0aGlzLiNhdHRhY2goKSkgcmV0dXJuIHRoaXMuI25hdGl2ZS5ydW5TeW5jKHRyZWUsIHZhbHVlKVxuICAgIGNvbnN0IHJ1biA9IHRoaXMuI25hdGl2ZS5zdGFydFJ1bih0cmVlLCB2YWx1ZSwgdHJ1ZSlcbiAgICBjb25zdCBob3N0ID0gbmV3IEhvc3RGaWxlKHsgdmFsdWUsIHBhdGg6IHJlYWRQYXRoKGZpbGUpIH0pXG4gICAgdm9pZCBmaW5pc2hSdW4oeyBydW4sIGhvc3RzOiB0aGlzLiNob3N0cywgZmlsZTogaG9zdCwgc3luYzogdHJ1ZSwgY2FsbDogXCJydW5cIiB9KVxuICAgIHJldHVybiBydW4ucmVzdWx0KClcbiAgfVxuXG4gIC8qKiBDb21waWxlIGEgdHJlZSwgcnVubmluZyBubyB0cmFuc2Zvcm0uICovXG4gIHN0cmluZ2lmeSh0cmVlOiBOb2RlKSB7XG4gICAgdGhpcy4jYXR0YWNoKClcbiAgICByZXR1cm4gdGhpcy4jbmF0aXZlLnN0cmluZ2lmeSh0cmVlKVxuICB9XG5cbiAgLyoqIFBhcnNlLCBydW4gYW5kIGNvbXBpbGUgYSBkb2N1bWVudCwgZmluaXNoaW5nIGFzeW5jaHJvbm91cyBzdGFnZXMuICovXG4gIGFzeW5jIHByb2Nlc3MoZG9jdW1lbnQ6IENvbXBhdGlibGUpOiBQcm9taXNlPFZGaWxlPiB7XG4gICAgY29uc3QgdGV4dCA9IHJlYWRWYWx1ZShkb2N1bWVudCkgPz8gXCJcIlxuICAgIGlmICghdGhpcy4jYXR0YWNoKCkpIHJldHVybiB3aXRoUGF0aCh0aGlzLiNuYXRpdmUucHJvY2Vzcyh0ZXh0KSwgZG9jdW1lbnQpXG4gICAgY29uc3QgcnVuID0gdGhpcy4jbmF0aXZlLnN0YXJ0UHJvY2Vzcyh0ZXh0LCBmYWxzZSlcbiAgICBjb25zdCBmaWxlID0gbmV3IEhvc3RGaWxlKHsgdmFsdWU6IHJ1bi52YWx1ZSgpID8/IHRleHQsIHBhdGg6IHJlYWRQYXRoKGRvY3VtZW50KSB9KVxuICAgIGF3YWl0IGZpbmlzaFJ1bih7IHJ1biwgaG9zdHM6IHRoaXMuI2hvc3RzLCBmaWxlLCBzeW5jOiBmYWxzZSwgY2FsbDogXCJwcm9jZXNzXCIgfSlcbiAgICByZXR1cm4gd2l0aFBhdGgobWVyZ2VEYXRhKHJ1bi5yZXN1bHQoKSwgZmlsZS5kYXRhKSwgZG9jdW1lbnQpXG4gIH1cblxuICAvKiogUGFyc2UsIHJ1biBhbmQgY29tcGlsZSBhIGRvY3VtZW50OyBmYWlscyB3aXRoIGBhc3luYy1pbi1zeW5jYCBvbiBhbiBhc3luY2hyb25vdXMgc3RhZ2UuICovXG4gIHByb2Nlc3NTeW5jKGRvY3VtZW50OiBDb21wYXRpYmxlKTogVkZpbGUge1xuICAgIGNvbnN0IHRleHQgPSByZWFkVmFsdWUoZG9jdW1lbnQpID8/IFwiXCJcbiAgICBpZiAoIXRoaXMuI2F0dGFjaCgpKSByZXR1cm4gd2l0aFBhdGgodGhpcy4jbmF0aXZlLnByb2Nlc3NTeW5jKHRleHQpLCBkb2N1bWVudClcbiAgICBjb25zdCBydW4gPSB0aGlzLiNuYXRpdmUuc3RhcnRQcm9jZXNzKHRleHQsIHRydWUpXG4gICAgY29uc3QgZmlsZSA9IG5ldyBIb3N0RmlsZSh7IHZhbHVlOiBydW4udmFsdWUoKSA/PyB0ZXh0LCBwYXRoOiByZWFkUGF0aChkb2N1bWVudCkgfSlcbiAgICB2b2lkIGZpbmlzaFJ1bih7IHJ1biwgaG9zdHM6IHRoaXMuI2hvc3RzLCBmaWxlLCBzeW5jOiB0cnVlLCBjYWxsOiBcInByb2Nlc3NcIiB9KVxuICAgIHJldHVybiB3aXRoUGF0aChtZXJnZURhdGEocnVuLnJlc3VsdCgpLCBmaWxlLmRhdGEpLCBkb2N1bWVudClcbiAgfVxuXG4gIC8vIHVuaWZpZWQncyBhZGRQbHVnaW46IHRoZSBzYW1lIGF0dGFjaGVyIGlzIG9uZSBwbHVnaW4sIGl0cyBvYmplY3Qgb3B0aW9ucyBtZXJnZWRcbiAgI3JlZ2lzdGVyKGF0dGFjaGVyOiBBdHRhY2hlciwgcGFyYW1ldGVyczogdW5rbm93bltdKTogSG9zdEVudHJ5IHtcbiAgICBsZXQgaWQgPSB0aGlzLiNpZHMuZ2V0KGF0dGFjaGVyKVxuICAgIGlmIChpZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZCA9IHRoaXMuI2lkcy5zaXplXG4gICAgICB0aGlzLiNpZHMuc2V0KGF0dGFjaGVyLCBpZClcbiAgICAgIHRoaXMuI2hvc3RzLnNldChpZCwgeyBhdHRhY2hlciwgcGFyYW1ldGVycyB9KVxuICAgICAgcmV0dXJuIFt7IGhvc3Q6IGlkIH0sIHBhcmFtZXRlcnNbMF0gIT09IGZhbHNlXVxuICAgIH1cbiAgICBjb25zdCBob3N0ID0gdGhpcy4jaG9zdHMuZ2V0KGlkKVxuICAgIGlmICghaG9zdCB8fCBwYXJhbWV0ZXJzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIFt7IGhvc3Q6IGlkIH1dXG4gICAgY29uc3QgW3ByaW1hcnksIC4uLnJlc3RdID0gcGFyYW1ldGVyc1xuICAgIGNvbnN0IG1lcmdlZCA9XG4gICAgICBpc1BsYWluT2JqZWN0KGhvc3QucGFyYW1ldGVyc1swXSkgJiYgaXNQbGFpbk9iamVjdChwcmltYXJ5KVxuICAgICAgICA/IG1lcmdlT3B0aW9ucyhob3N0LnBhcmFtZXRlcnNbMF0sIHByaW1hcnkpXG4gICAgICAgIDogcHJpbWFyeVxuICAgIGhvc3QucGFyYW1ldGVycyA9IFttZXJnZWQsIC4uLnJlc3RdXG4gICAgcmV0dXJuIFt7IGhvc3Q6IGlkIH0sIG1lcmdlZCAhPT0gZmFsc2VdXG4gIH1cblxuICAvLyBBdHRhY2hlcnMgcnVuIG9uY2UsIGJlZm9yZSB0aGUgbmF0aXZlIHBpcGVsaW5lIGZyZWV6ZXMsIHNvIHRoZXkgY2FuIHN0aWxsIHNldCBkYXRhO1xuICAvLyB3aGV0aGVyIGFueSBKYXZhU2NyaXB0IHBsdWdpbiBpcyBvbiBkZWNpZGVzIGlmIHJ1bnMgcGF1c2UgZm9yIHRoZW1cbiAgI2F0dGFjaCgpIHtcbiAgICBpZiAoIXRoaXMuI2F0dGFjaGVkKSB7XG4gICAgICB0aGlzLiNhdHRhY2hlZCA9IHRydWVcbiAgICAgIGZvciAoY29uc3QgaWQgb2YgdGhpcy4jbmF0aXZlLmhvc3RzKCkpIHtcbiAgICAgICAgY29uc3QgaG9zdCA9IHRoaXMuI2hvc3RzLmdldChpZClcbiAgICAgICAgaWYgKCFob3N0KSBjb250aW51ZVxuICAgICAgICBjb25zdCBbcHJpbWFyeSwgLi4ucmVzdF0gPSBob3N0LnBhcmFtZXRlcnNcbiAgICAgICAgY29uc3QgcGFyYW1ldGVycyA9IHByaW1hcnkgPT09IHRydWUgPyBbdW5kZWZpbmVkLCAuLi5yZXN0XSA6IGhvc3QucGFyYW1ldGVyc1xuICAgICAgICBjb25zdCB0cmFuc2Zvcm1lcjogdW5rbm93biA9IFJlZmxlY3QuYXBwbHkoaG9zdC5hdHRhY2hlciwgdGhpcywgcGFyYW1ldGVycylcbiAgICAgICAgaWYgKGlzVHJhbnNmb3JtZXIodHJhbnNmb3JtZXIpKSBob3N0LnRyYW5zZm9ybWVyID0gdHJhbnNmb3JtZXJcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuI25hdGl2ZS5ob3N0cygpLmxlbmd0aCA+IDBcbiAgfVxufVxuXG5mdW5jdGlvbiByZWFkVmFsdWUoZmlsZTogQ29tcGF0aWJsZSB8IHVuZGVmaW5lZCkge1xuICByZXR1cm4gdHlwZW9mIGZpbGUgPT09IFwic3RyaW5nXCIgPyBmaWxlIDogZmlsZT8udmFsdWVcbn1cblxuZnVuY3Rpb24gcmVhZFBhdGgoZmlsZTogQ29tcGF0aWJsZSB8IHVuZGVmaW5lZCkge1xuICByZXR1cm4gdHlwZW9mIGZpbGUgPT09IFwic3RyaW5nXCIgPyB1bmRlZmluZWQgOiBmaWxlPy5wYXRoXG59XG5cbi8vIE5hdGl2ZSBzdGFnZXMnIGRhdGEgZmlyc3QsIHRoZW4gd2hhdCBKYXZhU2NyaXB0IHBsdWdpbnMgc3RvcmVkIG92ZXIgaXRcbmZ1bmN0aW9uIG1lcmdlRGF0YShyZXN1bHQ6IFZGaWxlLCBkYXRhOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IFZGaWxlIHtcbiAgcmV0dXJuIHsgLi4ucmVzdWx0LCBkYXRhOiB7IC4uLnJlc3VsdC5kYXRhLCAuLi5kYXRhIH0gfVxufVxuXG5mdW5jdGlvbiB3aXRoUGF0aChmaWxlOiBWRmlsZSwgZG9jdW1lbnQ6IENvbXBhdGlibGUpIHtcbiAgY29uc3QgcGF0aCA9IHJlYWRQYXRoKGRvY3VtZW50KVxuICByZXR1cm4gcGF0aCA9PT0gdW5kZWZpbmVkID8gZmlsZSA6IHsgLi4uZmlsZSwgcGF0aCB9XG59XG4iXX0=
154
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzc29yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbW9kZWxzL3Byb2Nlc3Nvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sOEJBQThCLENBQUE7QUFDekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQTtBQUN6RSxPQUFPLEVBQWtCLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFBO0FBQzFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUE7QUFLL0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUVyQzs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sU0FBUztJQUNwQixPQUFPLENBQWdCO0lBQ3ZCLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBb0IsQ0FBQTtJQUNsQyxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQWdCLENBQUE7SUFDaEMsU0FBUyxHQUFHLEtBQUssQ0FBQTtJQUVqQixZQUFZLE1BQXNCO1FBQ2hDLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFBO0lBQ3ZCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxHQUFHLENBQ0QsS0FBNEQsRUFDNUQsR0FBRyxPQUFrQjtRQUVyQixJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQ2xELE9BQU8sSUFBSSxDQUFBO1FBQ2IsQ0FBQztRQUNELE1BQU0sUUFBUSxHQUFHLENBQUMsUUFBa0IsRUFBRSxVQUFxQixFQUFFLEVBQUUsQ0FDN0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUs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QUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFBO0FBQzFELENBQUM7QUFFRCx5RUFBeUU7QUFDekUsU0FBUyxTQUFTLENBQUMsTUFBYSxFQUFFLElBQTZCO0lBQzdELE9BQU8sRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLE1BQU0sQ0FBQyxJQUFJLEVBQUUsR0FBRyxJQUFJLEVBQUUsRUFBRSxDQUFBO0FBQ3pELENBQUM7QUFFRCxTQUFTLFFBQVEsQ0FBQyxJQUFXLEVBQUUsUUFBb0I7SUFDakQsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQy9CLE9BQU8sSUFBSSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFBO0FBQ3RELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc0F0dGFjaGVyIH0gZnJvbSBcIi4uL2FjdGlvbnMvYXR0YWNoZXIvY2hlY2sudHNcIlxuaW1wb3J0IHsgaXNQbGFpbk9iamVjdCwgbWVyZ2VPcHRpb25zIH0gZnJvbSBcIi4uL2FjdGlvbnMvb3B0aW9ucy9tZXJnZS50c1wiXG5pbXBvcnQgeyB0eXBlIEhvc3RFbnRyeSwgbWFwUGx1Z2dhYmxlIH0gZnJvbSBcIi4uL2FjdGlvbnMvcGx1Z2dhYmxlL21hcC50c1wiXG5pbXBvcnQgeyBmaW5pc2hSdW4gfSBmcm9tIFwiLi4vYWN0aW9ucy9ydW4vZmluaXNoLnRzXCJcbmltcG9ydCB7IGlzVHJhbnNmb3JtZXIgfSBmcm9tIFwiLi4vYWN0aW9ucy90cmFuc2Zvcm1lci9jaGVjay50c1wiXG5pbXBvcnQgdHlwZSB7IE5hdGl2ZVBpcGVsaW5lIH0gZnJvbSBcIi4vYWRkb24udHNcIlxuaW1wb3J0IHR5cGUgeyBDb21wYXRpYmxlLCBOb2RlLCBWRmlsZSB9IGZyb20gXCIuL2ZpbGUudHNcIlxuaW1wb3J0IHR5cGUgeyBIb3N0IH0gZnJvbSBcIi4vaG9zdC50c1wiXG5pbXBvcnQgdHlwZSB7IEF0dGFjaGVyLCBQbHVnZ2FibGUsIFBsdWdnYWJsZUxpc3QsIFByZXNldCB9IGZyb20gXCIuL3BsdWdpbi50c1wiXG5pbXBvcnQgeyBIb3N0RmlsZSB9IGZyb20gXCIuL3ZmaWxlLnRzXCJcblxuLyoqXG4gKiB1bmlmaWVkJ3MgcHJvY2Vzc29yIG92ZXIgdGhlIG5hdGl2ZSBwaXBlbGluZTsgZXZlcnkgY2FsbCBpcyB0aGUgY3JhdGUncywgZXhjZXB0IHRoYXRcbiAqIEphdmFTY3JpcHQgcGx1Z2lucyBydW4gaGVyZSB3aGVuIGEgcnVuIHBhdXNlcyBiZWZvcmUgdGhlbS5cbiAqL1xuZXhwb3J0IGNsYXNzIFByb2Nlc3NvciB7XG4gICNuYXRpdmU6IE5hdGl2ZVBpcGVsaW5lXG4gICNpZHMgPSBuZXcgTWFwPEF0dGFjaGVyLCBudW1iZXI+KClcbiAgI2hvc3RzID0gbmV3IE1hcDxudW1iZXIsIEhvc3Q+KClcbiAgI2F0dGFjaGVkID0gZmFsc2VcblxuICBjb25zdHJ1Y3RvcihuYXRpdmU6IE5hdGl2ZVBpcGVsaW5lKSB7XG4gICAgdGhpcy4jbmF0aXZlID0gbmF0aXZlXG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgcGx1Z2luLCBhIGxpc3Qgb2YgdGhlbSBvciBhIHByZXNldDsgYSBwbHVnaW4gdXNlZCBhZ2FpbiBpcyByZWNvbmZpZ3VyZWQuIEFcbiAgICogSmF2YVNjcmlwdCBwbHVnaW4gaXMgYW4gYXR0YWNoZXIsIGNhbGxlZCB3aXRoIHRoZSBwcm9jZXNzb3IgYW5kIGl0cyBvcHRpb25zIGF0IGZyZWV6ZS5cbiAgICovXG4gIHVzZShcbiAgICB2YWx1ZTogUGx1Z2dhYmxlIHwgUGx1Z2dhYmxlTGlzdCB8IFByZXNldCB8IG51bGwgfCB1bmRlZmluZWQsXG4gICAgLi4ub3B0aW9uczogdW5rbm93bltdXG4gICkge1xuICAgIGlmIChpc0F0dGFjaGVyKHZhbHVlKSkge1xuICAgICAgdGhpcy4jbmF0aXZlLnVzZShbdGhpcy4jcmVnaXN0ZXIodmFsdWUsIG9wdGlvbnMpXSlcbiAgICAgIHJldHVybiB0aGlzXG4gICAgfVxuICAgIGNvbnN0IHJlZ2lzdGVyID0gKGF0dGFjaGVyOiBBdHRhY2hlciwgcGFyYW1ldGVyczogdW5rbm93bltdKSA9PlxuICAgICAgdGhpcy4jcmVnaXN0ZXIoYXR0YWNoZXIsIHBhcmFtZXRlcnMpXG4gICAgdGhpcy4jbmF0aXZlLnVzZShtYXBQbHVnZ2FibGUodmFsdWUgPz8gbnVsbCwgcmVnaXN0ZXIpLCBvcHRpb25zWzBdKVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKiogQWxsIGRhdGEsIG9yIHRoZSB2YWx1ZSB1bmRlciBga2V5YC4gKi9cbiAgZGF0YSgpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICBkYXRhKGtleTogc3RyaW5nKTogdW5rbm93blxuICAvKiogU2V0IHRoZSB2YWx1ZSB1bmRlciBga2V5YCwgb3IgcmVwbGFjZSBhbGwgZGF0YS4gKi9cbiAgZGF0YShrZXk6IHN0cmluZywgdmFsdWU6IHVua25vd24pOiB0aGlzXG4gIGRhdGEoZGF0YXNldDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiB0aGlzXG4gIGRhdGEoa2V5Pzogc3RyaW5nIHwgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIC4uLnZhbHVlOiB1bmtub3duW10pIHtcbiAgICBpZiAodHlwZW9mIGtleSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgdGhpcy4jbmF0aXZlLnJlcGxhY2VEYXRhKGtleSlcbiAgICAgIHJldHVybiB0aGlzXG4gICAgfVxuICAgIGlmIChrZXkgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLiNuYXRpdmUuc2V0RGF0YShrZXksIHZhbHVlWzBdKVxuICAgICAgcmV0dXJuIHRoaXNcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuI25hdGl2ZS5kYXRhKGtleSlcbiAgfVxuXG4gIC8qKiBBdHRhY2ggZXZlcnkgcGx1Z2luOyBsYXRlciBgdXNlYCBhbmQgYGRhdGFgIHNldHRlcnMgZmFpbC4gKi9cbiAgZnJlZXplKCkge1xuICAgIHRoaXMuI2F0dGFjaCgpXG4gICAgdGhpcy4jbmF0aXZlLmZyZWV6ZSgpXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKiBQYXJzZSBhIGRvY3VtZW50IGludG8gYSB0cmVlLiAqL1xuICBwYXJzZShkb2N1bWVudDogQ29tcGF0aWJsZSkge1xuICAgIHRoaXMuI2F0dGFjaCgpXG4gICAgcmV0dXJuIHRoaXMuI25hdGl2ZS5wYXJzZShyZWFkVmFsdWUoZG9jdW1lbnQpID8/IFwiXCIpXG4gIH1cblxuICAvKipcbiAgICogUnVuIHRoZSB0cmFuc2Zvcm1zLCBmaW5pc2hpbmcgYXN5bmNocm9ub3VzIHN0YWdlczsgYGZpbGVgLCB0aGUgdGV4dCBgdHJlZWAgd2FzIHBhcnNlZFxuICAgKiBmcm9tLCBsZXRzIGJyaWRnZXMgcmVhZCBpdCBhbmQga2VlcHMgcG9zaXRpb25zIGluIHRoZSByZXN1bHQuXG4gICAqL1xuICBhc3luYyBydW4odHJlZTogTm9kZSwgZmlsZT86IENvbXBhdGlibGUpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHJlYWRWYWx1ZShmaWxlKVxuICAgIGlmICghdGhpcy4jYXR0YWNoKCkpIHJldHVybiB0aGlzLiNuYXRpdmUucnVuKHRyZWUsIHZhbHVlKVxuICAgIGNvbnN0IHJ1biA9IHRoaXMuI25hdGl2ZS5zdGFydFJ1bih0cmVlLCB2YWx1ZSwgZmFsc2UpXG4gICAgY29uc3QgaG9zdCA9IG5ldyBIb3N0RmlsZSh7IHZhbHVlLCBwYXRoOiByZWFkUGF0aChmaWxlKSB9KVxuICAgIGF3YWl0IGZpbmlzaFJ1bih7IHJ1biwgaG9zdHM6IHRoaXMuI2hvc3RzLCBmaWxlOiBob3N0LCBzeW5jOiBmYWxzZSwgY2FsbDogXCJydW5cIiB9KVxuICAgIHJldHVybiBydW4ucmVzdWx0KClcbiAgfVxuXG4gIC8qKiBSdW4gdGhlIHRyYW5zZm9ybXM7IGZhaWxzIHdpdGggYGFzeW5jLWluLXN5bmNgIG9uIGFuIGFzeW5jaHJvbm91cyBzdGFnZS4gKi9cbiAgcnVuU3luYyh0cmVlOiBOb2RlLCBmaWxlPzogQ29tcGF0aWJsZSkge1xuICAgIGNvbnN0IHZhbHVlID0gcmVhZFZhbHVlKGZpbGUpXG4gICAgaWYgKCF0aGlzLiNhdHRhY2goKSkgcmV0dXJuIHRoaXMuI25hdGl2ZS5ydW5TeW5jKHRyZWUsIHZhbHVlKVxuICAgIGNvbnN0IHJ1biA9IHRoaXMuI25hdGl2ZS5zdGFydFJ1bih0cmVlLCB2YWx1ZSwgdHJ1ZSlcbiAgICBjb25zdCBob3N0ID0gbmV3IEhvc3RGaWxlKHsgdmFsdWUsIHBhdGg6IHJlYWRQYXRoKGZpbGUpIH0pXG4gICAgdm9pZCBmaW5pc2hSdW4oeyBydW4sIGhvc3RzOiB0aGlzLiNob3N0cywgZmlsZTogaG9zdCwgc3luYzogdHJ1ZSwgY2FsbDogXCJydW5cIiB9KVxuICAgIHJldHVybiBydW4ucmVzdWx0KClcbiAgfVxuXG4gIC8qKiBDb21waWxlIGEgdHJlZSwgcnVubmluZyBubyB0cmFuc2Zvcm0uICovXG4gIHN0cmluZ2lmeSh0cmVlOiBOb2RlKSB7XG4gICAgdGhpcy4jYXR0YWNoKClcbiAgICByZXR1cm4gdGhpcy4jbmF0aXZlLnN0cmluZ2lmeSh0cmVlKVxuICB9XG5cbiAgLyoqIFBhcnNlLCBydW4gYW5kIGNvbXBpbGUgYSBkb2N1bWVudCwgZmluaXNoaW5nIGFzeW5jaHJvbm91cyBzdGFnZXMuICovXG4gIGFzeW5jIHByb2Nlc3MoZG9jdW1lbnQ6IENvbXBhdGlibGUpOiBQcm9taXNlPFZGaWxlPiB7XG4gICAgY29uc3QgdGV4dCA9IHJlYWRWYWx1ZShkb2N1bWVudCkgPz8gXCJcIlxuICAgIGlmICghdGhpcy4jYXR0YWNoKCkpXG4gICAgICByZXR1cm4gd2l0aFBhdGgodGhpcy4jbmF0aXZlLnByb2Nlc3ModGV4dCwgcmVhZFBhdGgoZG9jdW1lbnQpKSwgZG9jdW1lbnQpXG4gICAgY29uc3QgcnVuID0gdGhpcy4jbmF0aXZlLnN0YXJ0UHJvY2Vzcyh0ZXh0LCBmYWxzZSwgcmVhZFBhdGgoZG9jdW1lbnQpKVxuICAgIGNvbnN0IGZpbGUgPSBuZXcgSG9zdEZpbGUoeyB2YWx1ZTogcnVuLnZhbHVlKCkgPz8gdGV4dCwgcGF0aDogcmVhZFBhdGgoZG9jdW1lbnQpIH0pXG4gICAgYXdhaXQgZmluaXNoUnVuKHsgcnVuLCBob3N0czogdGhpcy4jaG9zdHMsIGZpbGUsIHN5bmM6IGZhbHNlLCBjYWxsOiBcInByb2Nlc3NcIiB9KVxuICAgIHJldHVybiB3aXRoUGF0aChtZXJnZURhdGEocnVuLnJlc3VsdCgpLCBmaWxlLmRhdGEpLCBkb2N1bWVudClcbiAgfVxuXG4gIC8qKiBQYXJzZSwgcnVuIGFuZCBjb21waWxlIGEgZG9jdW1lbnQ7IGZhaWxzIHdpdGggYGFzeW5jLWluLXN5bmNgIG9uIGFuIGFzeW5jaHJvbm91cyBzdGFnZS4gKi9cbiAgcHJvY2Vzc1N5bmMoZG9jdW1lbnQ6IENvbXBhdGlibGUpOiBWRmlsZSB7XG4gICAgY29uc3QgdGV4dCA9IHJlYWRWYWx1ZShkb2N1bWVudCkgPz8gXCJcIlxuICAgIGlmICghdGhpcy4jYXR0YWNoKCkpXG4gICAgICByZXR1cm4gd2l0aFBhdGgodGhpcy4jbmF0aXZlLnByb2Nlc3NTeW5jKHRleHQsIHJlYWRQYXRoKGRvY3VtZW50KSksIGRvY3VtZW50KVxuICAgIGNvbnN0IHJ1biA9IHRoaXMuI25hdGl2ZS5zdGFydFByb2Nlc3ModGV4dCwgdHJ1ZSwgcmVhZFBhdGgoZG9jdW1lbnQpKVxuICAgIGNvbnN0IGZpbGUgPSBuZXcgSG9zdEZpbGUoeyB2YWx1ZTogcnVuLnZhbHVlKCkgPz8gdGV4dCwgcGF0aDogcmVhZFBhdGgoZG9jdW1lbnQpIH0pXG4gICAgdm9pZCBmaW5pc2hSdW4oeyBydW4sIGhvc3RzOiB0aGlzLiNob3N0cywgZmlsZSwgc3luYzogdHJ1ZSwgY2FsbDogXCJwcm9jZXNzXCIgfSlcbiAgICByZXR1cm4gd2l0aFBhdGgobWVyZ2VEYXRhKHJ1bi5yZXN1bHQoKSwgZmlsZS5kYXRhKSwgZG9jdW1lbnQpXG4gIH1cblxuICAvLyB1bmlmaWVkJ3MgYWRkUGx1Z2luOiB0aGUgc2FtZSBhdHRhY2hlciBpcyBvbmUgcGx1Z2luLCBpdHMgb2JqZWN0IG9wdGlvbnMgbWVyZ2VkXG4gICNyZWdpc3RlcihhdHRhY2hlcjogQXR0YWNoZXIsIHBhcmFtZXRlcnM6IHVua25vd25bXSk6IEhvc3RFbnRyeSB7XG4gICAgbGV0IGlkID0gdGhpcy4jaWRzLmdldChhdHRhY2hlcilcbiAgICBpZiAoaWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgaWQgPSB0aGlzLiNpZHMuc2l6ZVxuICAgICAgdGhpcy4jaWRzLnNldChhdHRhY2hlciwgaWQpXG4gICAgICB0aGlzLiNob3N0cy5zZXQoaWQsIHsgYXR0YWNoZXIsIHBhcmFtZXRlcnMgfSlcbiAgICAgIHJldHVybiBbeyBob3N0OiBpZCB9LCBwYXJhbWV0ZXJzWzBdICE9PSBmYWxzZV1cbiAgICB9XG4gICAgY29uc3QgaG9zdCA9IHRoaXMuI2hvc3RzLmdldChpZClcbiAgICBpZiAoIWhvc3QgfHwgcGFyYW1ldGVycy5sZW5ndGggPT09IDApIHJldHVybiBbeyBob3N0OiBpZCB9XVxuICAgIGNvbnN0IFtwcmltYXJ5LCAuLi5yZXN0XSA9IHBhcmFtZXRlcnNcbiAgICBjb25zdCBtZXJnZWQgPVxuICAgICAgaXNQbGFpbk9iamVjdChob3N0LnBhcmFtZXRlcnNbMF0pICYmIGlzUGxhaW5PYmplY3QocHJpbWFyeSlcbiAgICAgICAgPyBtZXJnZU9wdGlvbnMoaG9zdC5wYXJhbWV0ZXJzWzBdLCBwcmltYXJ5KVxuICAgICAgICA6IHByaW1hcnlcbiAgICBob3N0LnBhcmFtZXRlcnMgPSBbbWVyZ2VkLCAuLi5yZXN0XVxuICAgIHJldHVybiBbeyBob3N0OiBpZCB9LCBtZXJnZWQgIT09IGZhbHNlXVxuICB9XG5cbiAgLy8gQXR0YWNoZXJzIHJ1biBvbmNlLCBiZWZvcmUgdGhlIG5hdGl2ZSBwaXBlbGluZSBmcmVlemVzLCBzbyB0aGV5IGNhbiBzdGlsbCBzZXQgZGF0YTtcbiAgLy8gd2hldGhlciBhbnkgSmF2YVNjcmlwdCBwbHVnaW4gaXMgb24gZGVjaWRlcyBpZiBydW5zIHBhdXNlIGZvciB0aGVtXG4gICNhdHRhY2goKSB7XG4gICAgaWYgKCF0aGlzLiNhdHRhY2hlZCkge1xuICAgICAgdGhpcy4jYXR0YWNoZWQgPSB0cnVlXG4gICAgICBmb3IgKGNvbnN0IGlkIG9mIHRoaXMuI25hdGl2ZS5ob3N0cygpKSB7XG4gICAgICAgIGNvbnN0IGhvc3QgPSB0aGlzLiNob3N0cy5nZXQoaWQpXG4gICAgICAgIGlmICghaG9zdCkgY29udGludWVcbiAgICAgICAgY29uc3QgW3ByaW1hcnksIC4uLnJlc3RdID0gaG9zdC5wYXJhbWV0ZXJzXG4gICAgICAgIGNvbnN0IHBhcmFtZXRlcnMgPSBwcmltYXJ5ID09PSB0cnVlID8gW3VuZGVmaW5lZCwgLi4ucmVzdF0gOiBob3N0LnBhcmFtZXRlcnNcbiAgICAgICAgY29uc3QgdHJhbnNmb3JtZXI6IHVua25vd24gPSBSZWZsZWN0LmFwcGx5KGhvc3QuYXR0YWNoZXIsIHRoaXMsIHBhcmFtZXRlcnMpXG4gICAgICAgIGlmIChpc1RyYW5zZm9ybWVyKHRyYW5zZm9ybWVyKSkgaG9zdC50cmFuc2Zvcm1lciA9IHRyYW5zZm9ybWVyXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLiNuYXRpdmUuaG9zdHMoKS5sZW5ndGggPiAwXG4gIH1cbn1cblxuZnVuY3Rpb24gcmVhZFZhbHVlKGZpbGU6IENvbXBhdGlibGUgfCB1bmRlZmluZWQpIHtcbiAgcmV0dXJuIHR5cGVvZiBmaWxlID09PSBcInN0cmluZ1wiID8gZmlsZSA6IGZpbGU/LnZhbHVlXG59XG5cbmZ1bmN0aW9uIHJlYWRQYXRoKGZpbGU6IENvbXBhdGlibGUgfCB1bmRlZmluZWQpIHtcbiAgcmV0dXJuIHR5cGVvZiBmaWxlID09PSBcInN0cmluZ1wiID8gdW5kZWZpbmVkIDogZmlsZT8ucGF0aFxufVxuXG4vLyBOYXRpdmUgc3RhZ2VzJyBkYXRhIGZpcnN0LCB0aGVuIHdoYXQgSmF2YVNjcmlwdCBwbHVnaW5zIHN0b3JlZCBvdmVyIGl0XG5mdW5jdGlvbiBtZXJnZURhdGEocmVzdWx0OiBWRmlsZSwgZGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBWRmlsZSB7XG4gIHJldHVybiB7IC4uLnJlc3VsdCwgZGF0YTogeyAuLi5yZXN1bHQuZGF0YSwgLi4uZGF0YSB9IH1cbn1cblxuZnVuY3Rpb24gd2l0aFBhdGgoZmlsZTogVkZpbGUsIGRvY3VtZW50OiBDb21wYXRpYmxlKSB7XG4gIGNvbnN0IHBhdGggPSByZWFkUGF0aChkb2N1bWVudClcbiAgcmV0dXJuIHBhdGggPT09IHVuZGVmaW5lZCA/IGZpbGUgOiB7IC4uLmZpbGUsIHBhdGggfVxufVxuIl19
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "textlane",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "Rust-native text processing pipeline — a unified replacement with native and JavaScript plugins",
5
5
  "keywords": [
6
6
  "ast",
@@ -35,11 +35,11 @@
35
35
  "node": ">=20"
36
36
  },
37
37
  "optionalDependencies": {
38
- "@textlane/linux-x64": "0.1.0",
39
- "@textlane/linux-arm64": "0.1.0",
40
- "@textlane/darwin-x64": "0.1.0",
41
- "@textlane/darwin-arm64": "0.1.0",
42
- "@textlane/win32-x64": "0.1.0",
43
- "@textlane/win32-arm64": "0.1.0"
38
+ "@textlane/linux-x64": "0.2.0",
39
+ "@textlane/linux-arm64": "0.2.0",
40
+ "@textlane/darwin-x64": "0.2.0",
41
+ "@textlane/darwin-arm64": "0.2.0",
42
+ "@textlane/win32-x64": "0.2.0",
43
+ "@textlane/win32-arm64": "0.2.0"
44
44
  }
45
45
  }
@@ -129,7 +129,7 @@ the case: `unknown-plugin`, `invalid-options`, `missing-parser`, `missing-compil
129
129
  stage. Syntax plugins (remark-gfm, remark-directive, remark-math) need the native ones; do
130
130
  not port a pipeline that needs one textlane lacks, say so. A remark plugin that only turns
131
131
  directives, `> [!NOTE]` alerts, definition lists or fenced code into MDX JSX elements is a
132
- rule of `md.component` instead. remark-heading-id, strip-markdown, rehype-unwrap-images and
132
+ rule of `md.component` instead. A file-tree directive (livemark's `:::filetree`) is a rule with `treeAs`. remark-heading-id, strip-markdown, rehype-unwrap-images and
133
133
  @stefanprobst/rehype-extract-toc are `md.headingId`, `md.strip`, `html.unwrapImages` and
134
134
  `html.extractToc`; the table of contents lands in the result's `data.toc`. rehype-external-links is `html.externalLinks` (JSON options, no functions), and
135
135
  `md.headingId({ attributes: true })` reads `{#id .class key=value}`. vfile-matter is
@@ -142,5 +142,7 @@ the case: `unknown-plugin`, `invalid-options`, `missing-parser`, `missing-compil
142
142
  `md.toc`: `heading` and `skip` are regex source strings, `parents` a JSON unist-util-is
143
143
  test, never a function; JavaScript lookaround and back references fail with
144
144
  `invalid-options`.
145
+ - Asset and page URLs relative to a Markdown file are `md.pathRewrite({ root, base, pages,
146
+ markdownLinks })`; pass the document as `{ value, path }` so it knows where the file lives.
145
147
  - remark-stringify reads `settings` from processor data; textlane's `md.stringify` takes its
146
148
  options directly.