@jax-data-science/sci-image-visualizer 0.4.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +109 -0
- package/esm2022/index.mjs +2 -1
- package/esm2022/lib/contracts/display-types.mjs +1 -1
- package/esm2022/lib/contracts/plot-type-contribution.contract.mjs +66 -0
- package/esm2022/lib/contracts/plot-type.mjs +6 -1
- package/esm2022/lib/contracts/toolbar-tool.contract.mjs +46 -4
- package/esm2022/lib/contracts/visualizer.contract.mjs +1 -1
- package/esm2022/lib/implementations/napari-js/napari-visualizer.service.mjs +2 -3
- package/esm2022/lib/implementations/osd/openseadragon-visualizer.service.mjs +70 -7
- package/esm2022/lib/implementations/osd/osd-coordinate-transform.mjs +8 -1
- package/esm2022/lib/implementations/plotly/plotly.service.mjs +2 -3
- package/esm2022/lib/plot-mode/plot-mode-controller.mjs +329 -0
- package/esm2022/lib/routing-visualizer.service.mjs +6 -1
- package/esm2022/lib/toolbar/brush/brush-tool.service.mjs +44 -3
- package/esm2022/lib/toolbar/toolbar.component.mjs +50 -21
- package/esm2022/lib/visualizer.component.mjs +479 -43
- package/fesm2022/jax-data-science-sci-image-visualizer.mjs +1092 -75
- package/fesm2022/jax-data-science-sci-image-visualizer.mjs.map +1 -1
- package/index.d.ts +1 -0
- package/lib/contracts/display-types.d.ts +10 -0
- package/lib/contracts/plot-type-contribution.contract.d.ts +199 -0
- package/lib/contracts/plot-type.d.ts +10 -0
- package/lib/contracts/toolbar-tool.contract.d.ts +84 -5
- package/lib/contracts/visualizer.contract.d.ts +5 -0
- package/lib/implementations/osd/openseadragon-visualizer.service.d.ts +21 -0
- package/lib/implementations/osd/osd-coordinate-transform.d.ts +6 -0
- package/lib/plot-mode/plot-mode-controller.d.ts +130 -0
- package/lib/routing-visualizer.service.d.ts +4 -0
- package/lib/toolbar/brush/brush-tool.service.d.ts +21 -0
- package/lib/toolbar/toolbar.component.d.ts +28 -8
- package/lib/visualizer.component.d.ts +121 -8
- package/package.json +1 -1
|
@@ -35,6 +35,17 @@
|
|
|
35
35
|
* than an escape hatch that returns a component — the moment one tool draws
|
|
36
36
|
* itself, the toolbar stops being able to lay tools out consistently.
|
|
37
37
|
*
|
|
38
|
+
* DIALOG TOOLS
|
|
39
|
+
* Some tools are not "set parameters, run once" but an interactive session: the
|
|
40
|
+
* user paints, the tool retrains and redraws, over and over (DIANNE). A schema
|
|
41
|
+
* cannot describe that, so {@link ToolbarDialogToolContribution} is the one
|
|
42
|
+
* variant that renders its own body. The toolbar still owns the button, its
|
|
43
|
+
* placement and the dialog chrome; the tool only fills the dialog, with plain
|
|
44
|
+
* DOM (`mount`), so it needs neither Angular nor this library's PrimeNG version.
|
|
45
|
+
* Its button sits with the host's own actions at the start of the toolbar, and
|
|
46
|
+
* shows only in the Image view, the view its context ({@link ToolDialogContext})
|
|
47
|
+
* draws over.
|
|
48
|
+
*
|
|
38
49
|
* WHY AN EMPTY MODEL LIST HIDES THE TOOL
|
|
39
50
|
* {@link ToolbarToolContribution.models} returning `[]` removes the tool from
|
|
40
51
|
* the toolbar entirely. This preserves the behaviour the built-in tools already
|
|
@@ -43,8 +54,14 @@
|
|
|
43
54
|
* not require unregistering the provider.
|
|
44
55
|
*/
|
|
45
56
|
import { InjectionToken } from '@angular/core';
|
|
57
|
+
/** Whether a contribution is a {@link ToolbarDialogToolContribution}. */
|
|
58
|
+
export function isDialogToolContribution(c) {
|
|
59
|
+
return !!c && c.kind === 'dialog';
|
|
60
|
+
}
|
|
46
61
|
/**
|
|
47
|
-
* Multi-provider token for contributed tools
|
|
62
|
+
* Multi-provider token for contributed tools: run tools
|
|
63
|
+
* ({@link ToolbarToolContribution}) and, since 0.6.0, dialog tools
|
|
64
|
+
* ({@link ToolbarDialogToolContribution}).
|
|
48
65
|
*
|
|
49
66
|
* Deliberately has no `factory`: unregistered means no tools, which is what
|
|
50
67
|
* makes this library shippable without the closed model packages. Inject it
|
|
@@ -57,8 +74,33 @@ export function sortToolContributions(tools) {
|
|
|
57
74
|
// provider order without having to invent numbers.
|
|
58
75
|
return tools.map((t, i) => ({ t, i })).sort((a, b) => (a.t.order ?? 100) - (b.t.order ?? 100) || a.i - b.i).map(({ t }) => t);
|
|
59
76
|
}
|
|
60
|
-
/** The tools a toolbar should actually show: those with at least one model.
|
|
77
|
+
/** The run tools a toolbar should actually show: those with at least one model.
|
|
78
|
+
* Dialog tools are left out (see {@link dialogToolContributions}). */
|
|
61
79
|
export function visibleToolContributions(tools) {
|
|
62
|
-
|
|
80
|
+
const run = (tools ?? []).filter((t) => !isDialogToolContribution(t) && typeof t?.models === 'function');
|
|
81
|
+
return sortToolContributions(run).filter((t) => t.models().length > 0);
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* The dialog tools, in display order. A malformed one (no string `id`, no
|
|
85
|
+
* `activate` or `mount` function) or a repeated `id` is dropped with a warning
|
|
86
|
+
* rather than breaking the toolbar.
|
|
87
|
+
*/
|
|
88
|
+
export function dialogToolContributions(tools, log = console) {
|
|
89
|
+
const seen = new Set();
|
|
90
|
+
const out = [];
|
|
91
|
+
for (const t of (tools ?? []).filter(isDialogToolContribution)) {
|
|
92
|
+
if (typeof t.id !== 'string' || !t.id || typeof t.activate !== 'function'
|
|
93
|
+
|| typeof t.mount !== 'function') {
|
|
94
|
+
log.warn('[visualizer] dialog tool ignored: it needs a string `id` and `activate` and `mount` functions.', t);
|
|
95
|
+
continue;
|
|
96
|
+
}
|
|
97
|
+
if (seen.has(t.id)) {
|
|
98
|
+
log.warn(`[visualizer] dialog tool '${t.id}' ignored: another dialog tool already uses that id.`);
|
|
99
|
+
continue;
|
|
100
|
+
}
|
|
101
|
+
seen.add(t.id);
|
|
102
|
+
out.push(t);
|
|
103
|
+
}
|
|
104
|
+
return sortToolContributions(out);
|
|
63
105
|
}
|
|
64
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJhci10b29sLmNvbnRyYWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jb250cmFjdHMvdG9vbGJhci10b29sLmNvbnRyYWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMkNHO0FBQ0gsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQTRJL0M7Ozs7OztHQU1HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLElBQUksY0FBYyxDQUFxQyxlQUFlLENBQUMsQ0FBQztBQUVyRyxpREFBaUQ7QUFDakQsTUFBTSxVQUFVLHFCQUFxQixDQUNuQyxLQUF5QztJQUV6Qyw2RUFBNkU7SUFDN0UsbURBQW1EO0lBQ25ELE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUNuRCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUNyRCxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3RCLENBQUM7QUFFRCwrRUFBK0U7QUFDL0UsTUFBTSxVQUFVLHdCQUF3QixDQUN0QyxLQUE0RDtJQUU1RCxPQUFPLHFCQUFxQixDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDakYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogSG93IGEgdG9vbCBnZXRzIGludG8gdGhlIHRvb2xiYXIgd2l0aG91dCB0aGlzIGxpYnJhcnkga25vd2luZyB3aGF0IGl0IGlzLlxuICpcbiAqIFdIWSBUSElTIEVYSVNUU1xuICogVGhlIFlPTE8gZGV0ZWN0b3IgYW5kIHRoZSByZXRpbmFsLWxheWVyIHNlZ21lbnRlciB1c2VkIHRvIGJlIGJ1aWx0IGluOiB0aGVpclxuICogYnV0dG9ucyB3ZXJlIGhhcmRjb2RlZCBpbiB0aGUgdG9vbGJhciB0ZW1wbGF0ZSwgdGhlaXIgbW9kZWwgcmVnaXN0cmllcyBuYW1lZFxuICogSkFYIGNoZWNrcG9pbnRzLCBhbmQgdGhlIGBJTlNUQU5DRV9TRUdNRU5URVJgIC8gYFNFTUFOVElDX1NFR01FTlRFUmAgdG9rZW5zXG4gKiBkZWZhdWx0ZWQgdG8gaW4tbGlicmFyeSBzZXJ2aWNlcyB0aGF0IGltcG9ydGVkIGB5b2xvLXNlZ2RldGVjdC1qc2AgYW5kXG4gKiBgamF4LWFpLWpzYC4gVGhvc2UgZGVmYXVsdCBmYWN0b3JpZXMgd2VyZSB0aGUgb25seSB0aGluZyBwdWxsaW5nIGVpdGhlclxuICogcGFja2FnZSBpbnRvIHRoZSBidW5kbGUg4oCUIHRoZSBjb250cmFjdHMgdGhlbXNlbHZlcyB3ZXJlIGFscmVhZHkgY2xlYW4uXG4gKlxuICogVGhhdCBhcnJhbmdlbWVudCBjYW5ub3Qgc2hpcCBpbiBhbiBvcGVuIGxpYnJhcnkgd2hpbGUgdGhlIG1vZGVscyBhcmUgY2xvc2VkLlxuICogU28gdGhlIHRvb2xzIG1vdmUgb3V0LCBpbnRvIGEgcGFja2FnZSB0aGF0IGRlcGVuZHMgb24gdGhpcyBvbmUsIGFuZCBhcnJpdmVcbiAqIGJhY2sgdGhyb3VnaCB7QGxpbmsgVE9PTEJBUl9UT09MU30uIFRoaXMgbGlicmFyeSBrZWVwcyB0aGUgY29udHJhY3RzLCB0aGVcbiAqIGNocm9tZSBhbmQgdGhlIHJlZ2lvbiBwbHVtYmluZzsgaXQgbm8gbG9uZ2VyIGtub3dzIHRoYXQgWU9MTyBleGlzdHMuXG4gKlxuICogQSBob3N0IHJlZ2lzdGVycyB0b29scyB3aXRoIGEgbXVsdGktcHJvdmlkZXI6XG4gKlxuICogICAgIHsgcHJvdmlkZTogVE9PTEJBUl9UT09MUywgdXNlRXhpc3Rpbmc6IFlvbG9Ub29sQ29udHJpYnV0aW9uLCBtdWx0aTogdHJ1ZSB9XG4gKlxuICogUmVnaXN0ZXIgbm90aGluZyBhbmQgdGhlIHRvb2xiYXIgaGFzIG5vIHNlZ21lbnRhdGlvbiB0b29scywgdGhlIGhlbHAgZGlhbG9nXG4gKiBsaXN0cyBub25lLCBhbmQgbmVpdGhlciBtb2RlbCBwYWNrYWdlIGlzIGluIHRoZSBncmFwaC5cbiAqXG4gKiBXSFkgUEFSQU1TIEFSRSBERUNMQVJFRCwgTk9UIFJFTkRFUkVEXG4gKiBBIGNvbnRyaWJ1dGlvbiBkZXNjcmliZXMgaXRzIHBhcmFtZXRlcnMgKHtAbGluayBUb29sUGFyYW1TcGVjfSkgaW5zdGVhZCBvZlxuICogc3VwcGx5aW5nIGEgY29tcG9uZW50IHRvIGRyYXcgdGhlbS4gVGhlIHRvb2xiYXIgcmVuZGVycyBvbmUgZ2VuZXJpYyBkaWFsb2dcbiAqIGZyb20gdGhhdCBkZXNjcmlwdGlvbi4gVGhlIGFsdGVybmF0aXZlIOKAlCBlYWNoIHBsdWdpbiBzaGlwcGluZyBpdHMgb3duIGRpYWxvZ1xuICogY29tcG9uZW50IOKAlCB3b3VsZCBtYWtlIGV2ZXJ5IHBsdWdpbiBkZXBlbmQgb24gdGhpcyBsaWJyYXJ5J3MgZXhhY3QgUHJpbWVOR1xuICogdmVyc2lvbiBhbmQgc3R5bGluZyBpbnRlcm5hbHMgdG8gbG9vayBsaWtlIHRoZSByZXN0IG9mIHRoZSB0b29sYmFyLCBhbmQgdGhlXG4gKiB0d28gZGlhbG9ncyB0aGF0IGV4aXN0IHRvZGF5IGFyZSBlbnRpcmVseSBudW1iZXJzIGFuZCBvbmUgY2hlY2tib3guIEEgc2NoZW1hXG4gKiBjb3ZlcnMgdGhlbSwgYW5kIGl0IGlzIHRoZSBzYW1lIHNoYXBlIGppdC11aSBhbHJlYWR5IHVzZXMgZm9yIGl0cyBwaXBlbGluZVxuICogc3RlcCBwYXJhbWV0ZXJzLCBzbyB0aGUgdm9jYWJ1bGFyeSBpcyBmYW1pbGlhci5cbiAqXG4gKiBJZiBhIHRvb2wgZXZlciBuZWVkcyBhIGNvbnRyb2wgdGhpcyBjYW5ub3QgZXhwcmVzcywgYWRkIGEgdmFyaWFudCBoZXJlIHJhdGhlclxuICogdGhhbiBhbiBlc2NhcGUgaGF0Y2ggdGhhdCByZXR1cm5zIGEgY29tcG9uZW50IOKAlCB0aGUgbW9tZW50IG9uZSB0b29sIGRyYXdzXG4gKiBpdHNlbGYsIHRoZSB0b29sYmFyIHN0b3BzIGJlaW5nIGFibGUgdG8gbGF5IHRvb2xzIG91dCBjb25zaXN0ZW50bHkuXG4gKlxuICogV0hZIEFOIEVNUFRZIE1PREVMIExJU1QgSElERVMgVEhFIFRPT0xcbiAqIHtAbGluayBUb29sYmFyVG9vbENvbnRyaWJ1dGlvbi5tb2RlbHN9IHJldHVybmluZyBgW11gIHJlbW92ZXMgdGhlIHRvb2wgZnJvbVxuICogdGhlIHRvb2xiYXIgZW50aXJlbHkuIFRoaXMgcHJlc2VydmVzIHRoZSBiZWhhdmlvdXIgdGhlIGJ1aWx0LWluIHRvb2xzIGFscmVhZHlcbiAqIGhhZCAodGhlaXIgYnV0dG9ucyB3ZXJlIGAqbmdJZmAnZCBvbiBhIGZpbHRlcmVkIHJlZ2lzdHJ5KSwgYW5kIGl0IGdpdmVzIGEgaG9zdFxuICogb25lIHN3aXRjaCBmb3IgXCJ0aGUgd2VpZ2h0cyBhcmUgbm90IGNvbmZpZ3VyZWQgaW4gdGhpcyBkZXBsb3ltZW50XCIgdGhhdCBkb2VzXG4gKiBub3QgcmVxdWlyZSB1bnJlZ2lzdGVyaW5nIHRoZSBwcm92aWRlci5cbiAqL1xuaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0eXBlIHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgdHlwZSB7IElWaXN1YWxpemVyIH0gZnJvbSAnLi92aXN1YWxpemVyLmNvbnRyYWN0JztcblxuLyoqIEEgbnVtYmVyIGZpZWxkLiBSZW5kZXJlZCBhcyBhIHN0ZXBwZXIsIG1hdGNoaW5nIHRoZSBidWlsdC1pbiBkaWFsb2dzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBOdW1iZXJQYXJhbVNwZWMge1xuICBpZDogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICB0eXBlOiAnbnVtYmVyJztcbiAgbWluPzogbnVtYmVyO1xuICBtYXg/OiBudW1iZXI7XG4gIHN0ZXA/OiBudW1iZXI7XG4gIC8qKiBEZWNpbWFsIHBsYWNlcyB0byBzaG93LiBPbWl0IGZvciBpbnRlZ2Vycy4gKi9cbiAgZnJhY3Rpb25EaWdpdHM/OiBudW1iZXI7XG4gIC8qKiBIb3ZlciBoZWxwLiBQbGFpbiB0ZXh0OyBpdCBpcyBub3QgcmVuZGVyZWQgYXMgSFRNTC4gKi9cbiAgdG9vbHRpcD86IHN0cmluZztcbn1cblxuLyoqIEEgY2hlY2tib3guIGBsYWJlbGAgc2l0cyBiZXNpZGUgaXQgYW5kIG1heSBydW4gdG8gYSBzZW50ZW5jZSBvciB0d28uICovXG5leHBvcnQgaW50ZXJmYWNlIEJvb2xlYW5QYXJhbVNwZWMge1xuICBpZDogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICB0eXBlOiAnYm9vbGVhbic7XG4gIHRvb2x0aXA/OiBzdHJpbmc7XG59XG5cbi8qKiBBIGZpeGVkIHNldCBvZiBjaG9pY2VzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZWxlY3RQYXJhbVNwZWMge1xuICBpZDogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICB0eXBlOiAnc2VsZWN0JztcbiAgb3B0aW9uczogeyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIH1bXTtcbiAgdG9vbHRpcD86IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgVG9vbFBhcmFtU3BlYyA9IE51bWJlclBhcmFtU3BlYyB8IEJvb2xlYW5QYXJhbVNwZWMgfCBTZWxlY3RQYXJhbVNwZWM7XG5cbi8qKiBPbmUgc2VsZWN0YWJsZSBjaGVja3BvaW50LiAqL1xuZXhwb3J0IGludGVyZmFjZSBUb29sTW9kZWxPcHRpb24ge1xuICBpZDogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICAvKipcbiAgICogRGVzY3JpYmVzIHRoZSBjaGVja3BvaW50IGluIHRoZSBwaWNrZXIncyBob3ZlciB0b29sdGlwIOKAlCBzaXplLCBzcGVlZCxcbiAgICogdHJhaW5pbmcgZG9tYWluLCBhY2N1cmFjeS4gKipSZW5kZXJlZCBhcyBIVE1MKiosIHNvIGl0IGlzIHRydXN0ZWQgY29udGVudFxuICAgKiBmcm9tIHRoZSBjb250cmlidXRpbmcgcGFja2FnZSwgbmV2ZXIgYW55dGhpbmcgdXNlci1zdXBwbGllZC5cbiAgICovXG4gIGluZm8/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBQYXJhbWV0ZXIgdmFsdWVzIHRoaXMgY2hlY2twb2ludCB3YW50cywgbWVyZ2VkIG92ZXJcbiAgICoge0BsaW5rIFRvb2xiYXJUb29sQ29udHJpYnV0aW9uLmRlZmF1bHRQYXJhbXN9IHdoZW4gaXQgaXMgc2VsZWN0ZWQuIERlZmF1bHRzXG4gICAqIGJlbG9uZyB0byB0aGUgbW9kZWwgcmF0aGVyIHRoYW4gdGhlIHRvb2wg4oCUIGEgZGV0ZWN0b3IgdHJhaW5lZCBvbiBuYXRpdmUgNDB4XG4gICAqIHBhdGNoZXMgd2FudHMgZGlmZmVyZW50IHRpbGluZyBmcm9tIG9uZSB0cmFpbmVkIG9uIHRodW1ibmFpbHMuXG4gICAqL1xuICBkZWZhdWx0cz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufVxuXG4vKipcbiAqIFRoZSBgc3RhdHVzJGAgLyBgYnVzeSRgIC8gYHByb2dyZXNzJGAgc3VyZmFjZSB0aGUgdG9vbGJhciBkcml2ZXMgaXRzIHN0aWNreVxuICogdG9hc3QgYW5kIHByb2dyZXNzIGJhciBmcm9tLiBgcHJvZ3Jlc3MkYCBpcyBhIDAuLjEgZnJhY3Rpb24sIG9yIC0xIGZvclxuICogaW5kZXRlcm1pbmF0ZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUb29sUHJvZ3Jlc3Mge1xuICBzdGF0dXMkOiBPYnNlcnZhYmxlPHN0cmluZz47XG4gIGJ1c3kkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBwcm9ncmVzcyQ6IE9ic2VydmFibGU8bnVtYmVyPjtcbn1cblxuLyoqIFRvb2xiYXIgaWNvbjogYSBwdWJsaXNoZWQgYXNzZXQsIG9yIGEgUHJpbWVJY29uIGNsYXNzIG5hbWUuICovXG5leHBvcnQgdHlwZSBUb29sSWNvbiA9IHsgc3JjOiBzdHJpbmc7IHBpPzogbmV2ZXIgfSB8IHsgcGk6IHN0cmluZzsgc3JjPzogbmV2ZXIgfTtcblxuLyoqXG4gKiBBIHRvb2wgY29udHJpYnV0ZWQgdG8gdGhlIHRvb2xiYXIuXG4gKlxuICogSW1wbGVtZW50IGl0IG9uIGFuIGBASW5qZWN0YWJsZSgpYCBzZXJ2aWNlIGluIHRoZSBjb250cmlidXRpbmcgcGFja2FnZSwgc28gaXRcbiAqIGNhbiBpbmplY3QgaXRzIG93biBzZWdtZW50ZXIgYW5kIG1vZGVsIHJlZ2lzdHJ5IOKAlCB0aGlzIGxpYnJhcnkgcHJvdmlkZXNcbiAqIG5laXRoZXIgYW5kIG11c3Qgbm90IGxlYXJuIHRvLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRvb2xiYXJUb29sQ29udHJpYnV0aW9uIHtcbiAgLyoqIFN0YWJsZSBpZGVudGl0eSwgdXNlZCBmb3IgdHJhY2tpbmcgYW5kIHBlcnNpc3RlZCBwcmVmZXJlbmNlcy4gKi9cbiAgaWQ6IHN0cmluZztcbiAgLyoqIFNob3J0IG5hbWUsIHVzZWQgaW4gdGhlIHRvYXN0IGFuZCB0aGUgaGVscCBkaWFsb2cgaGVhZGluZy4gKi9cbiAgbGFiZWw6IHN0cmluZztcbiAgaWNvbjogVG9vbEljb247XG5cbiAgLyoqIFRvb2x0aXAgb24gdGhlIHJ1biBidXR0b24g4oCUIHNheSB3aGF0IGl0IGRvZXMgdG8gdGhlIGN1cnJlbnQgdmlldy4gKi9cbiAgcnVuVG9vbHRpcDogc3RyaW5nO1xuICAvKiogVG9vbHRpcCBvbiB0aGUgY2hlY2twb2ludCBwaWNrZXIuIERlZmF1bHRzIHRvIFwiUGljayB0aGUgbW9kZWxcIi4gKi9cbiAgbW9kZWxUb29sdGlwPzogc3RyaW5nO1xuICAvKiogVG9vbHRpcCBvbiB0aGUgcGFyYW1ldGVycyBidXR0b24uIERlZmF1bHRzIHRvIFwiUGFyYW1ldGVyc1wiLiAqL1xuICBwYXJhbXNUb29sdGlwPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGVyZSBpdCBzaXRzIGFtb25nIHRoZSBzZWdtZW50YXRpb24gdG9vbHMuIExvd2VyIHNvcnRzIGZpcnN0OyB0aWVzIGZhbGxcbiAgICogYmFjayB0byByZWdpc3RyYXRpb24gb3JkZXIuIFRoZSBidWlsdC1pbiBwcm9tcHRlZCB0b29scyBvY2N1cHkgMC05OSwgc29cbiAgICogY29udHJpYnV0ZWQgdG9vbHMgc2hvdWxkIHN0YXJ0IGF0IDEwMCB0byBsYW5kIGFmdGVyIHRoZW0uXG4gICAqL1xuICBvcmRlcj86IG51bWJlcjtcblxuICAvKiogU2VsZWN0YWJsZSBjaGVja3BvaW50cy4gKipFbXB0eSBoaWRlcyB0aGUgdG9vbC4qKiAqL1xuICBtb2RlbHMoKTogVG9vbE1vZGVsT3B0aW9uW107XG4gIC8qKiBXaGljaCBjaGVja3BvaW50IHJ1bnMgd2hlbiB0aGUgdXNlciBoYXMgbm90IGNob3Nlbi4gKi9cbiAgZGVmYXVsdE1vZGVsSWQoKTogc3RyaW5nO1xuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gdGhlIHVzZXIgcGlja3MgYSBjaGVja3BvaW50LCBiZWZvcmUgcGFyYW1ldGVycyBhcmUgcmUtc2VlZGVkLlxuICAgKiBVc2UgaXQgdG8gcmVjb3JkIHRoZSBjaG9pY2UgaW4gdGhlIGNvbnRyaWJ1dGluZyBwYWNrYWdlJ3Mgb3duIHJlZ2lzdHJ5LlxuICAgKi9cbiAgb25Nb2RlbENoYW5nZT8obW9kZWxJZDogc3RyaW5nKTogdm9pZDtcblxuICAvKiogUGFyYW1ldGVyIGZpZWxkcywgaW4gZGlhbG9nIG9yZGVyLiBFbXB0eSBoaWRlcyB0aGUgcGFyYW1ldGVycyBidXR0b24uICovXG4gIHBhcmFtczogVG9vbFBhcmFtU3BlY1tdO1xuICAvKipcbiAgICogQmFzZWxpbmUgcGFyYW1ldGVyIHZhbHVlcyBmb3IgYSBjaGVja3BvaW50LiBDYWxsZWQgb24gZmlyc3QgdXNlIGFuZCBhZ2FpblxuICAgKiBvbiBcIlJlc2V0IHRvIG1vZGVsIGRlZmF1bHRzXCIsIHNvIGl0IG11c3QgYmUgcHVyZSBhbmQgbXVzdCByZXR1cm4gZXZlcnkga2V5XG4gICAqIHRoZSB0b29sIHJlYWRzIOKAlCBhIHBhcmFtZXRlciB0aGUgZGlhbG9nIHNob3dzIGJ1dCB0aGlzIG9taXRzIHJlbmRlcnMgYXNcbiAgICogZW1wdHkgYW5kIHJlYWNoZXMgYHJ1bmAgYXMgdW5kZWZpbmVkLlxuICAgKi9cbiAgZGVmYXVsdFBhcmFtcyhtb2RlbElkOiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuICAvKipcbiAgICogRW50cnkgZm9yIHRoZSBoZWxwIGRpYWxvZydzIHRvb2wgbGlzdC4gYGJvZHlgIGlzIHJlbmRlcmVkIGFzIEhUTUwgYW5kIG1heVxuICAgKiByZWZlcmVuY2UgcHVibGlzaGVkIGFzc2V0cyAoZS5nLiB0aGUgdG9vbCdzIG93biBpY29uKS5cbiAgICovXG4gIGhlbHA/OiB7IGJvZHk6IHN0cmluZyB9O1xuXG4gIC8qKiBQcm9ncmVzcyBzdXJmYWNlIGZvciB0aGUgdG9hc3QuICovXG4gIHByb2dyZXNzOiBUb29sUHJvZ3Jlc3M7XG5cbiAgLyoqXG4gICAqIFJ1biBvdmVyIHdoYXQgaXMgY3VycmVudGx5IGRpc3BsYXllZCwgYW5kIHdyaXRlIHdoYXRldmVyIGl0IGZpbmRzIHRocm91Z2hcbiAgICogYHZpemAuIFJlc29sdmVzIHdpdGggdGhlIG51bWJlciBvZiByZWdpb25zIGFkZGVkLlxuICAgKlxuICAgKiBFdmVyeXRoaW5nIHRoZSB0b29sIG5lZWRzIGlzIG9uIHtAbGluayBJVmlzdWFsaXplcn0sIHdoaWNoIGlzIHBhcnQgb2YgdGhpc1xuICAgKiBsaWJyYXJ5J3MgcHVibGljIHN1cmZhY2Ug4oCUIGEgY29udHJpYnV0aW9uIG5ldmVyIHJlYWNoZXMgaW50byBpbnRlcm5hbHMuXG4gICAqIFJlZ2lvbiB3cml0ZXMgZ28gdGhyb3VnaCB0aGUgc2FtZSBwYXRoIHRoZSBidWlsdC1pbiB0b29scyB1c2UsIHNvIHRoZVxuICAgKiBpbmRleC1iYXNlZCBvdmVybGF5cyBhbmQgdGhlIFJlZ2lvbnMgdGFibGUgc3RheSBjb25zaXN0ZW50LlxuICAgKi9cbiAgcnVuKHZpejogSVZpc3VhbGl6ZXIsIHBhcmFtczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBQcm9taXNlPG51bWJlcj47XG59XG5cbi8qKlxuICogTXVsdGktcHJvdmlkZXIgdG9rZW4gZm9yIGNvbnRyaWJ1dGVkIHRvb2xzLlxuICpcbiAqIERlbGliZXJhdGVseSBoYXMgbm8gYGZhY3RvcnlgOiB1bnJlZ2lzdGVyZWQgbWVhbnMgbm8gdG9vbHMsIHdoaWNoIGlzIHdoYXRcbiAqIG1ha2VzIHRoaXMgbGlicmFyeSBzaGlwcGFibGUgd2l0aG91dCB0aGUgY2xvc2VkIG1vZGVsIHBhY2thZ2VzLiBJbmplY3QgaXRcbiAqIGB7IG9wdGlvbmFsOiB0cnVlIH1gIGFuZCB0cmVhdCBudWxsIGFzIGVtcHR5LlxuICovXG5leHBvcnQgY29uc3QgVE9PTEJBUl9UT09MUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxyZWFkb25seSBUb29sYmFyVG9vbENvbnRyaWJ1dGlvbltdPignVE9PTEJBUl9UT09MUycpO1xuXG4vKiogU29ydCBjb250cmlidXRlZCB0b29scyBpbnRvIGRpc3BsYXkgb3JkZXIuICovXG5leHBvcnQgZnVuY3Rpb24gc29ydFRvb2xDb250cmlidXRpb25zKFxuICB0b29sczogcmVhZG9ubHkgVG9vbGJhclRvb2xDb250cmlidXRpb25bXSxcbik6IFRvb2xiYXJUb29sQ29udHJpYnV0aW9uW10ge1xuICAvLyBTdGFibGU6IGVxdWFsIGBvcmRlcmAga2VlcHMgcmVnaXN0cmF0aW9uIG9yZGVyLCBzbyBhIGhvc3QgY29udHJvbHMgdGllcyBieVxuICAvLyBwcm92aWRlciBvcmRlciB3aXRob3V0IGhhdmluZyB0byBpbnZlbnQgbnVtYmVycy5cbiAgcmV0dXJuIHRvb2xzLm1hcCgodCwgaSkgPT4gKHsgdCwgaSB9KSkuc29ydCgoYSwgYikgPT5cbiAgICAoYS50Lm9yZGVyID8/IDEwMCkgLSAoYi50Lm9yZGVyID8/IDEwMCkgfHwgYS5pIC0gYi5pLFxuICApLm1hcCgoeyB0IH0pID0+IHQpO1xufVxuXG4vKiogVGhlIHRvb2xzIGEgdG9vbGJhciBzaG91bGQgYWN0dWFsbHkgc2hvdzogdGhvc2Ugd2l0aCBhdCBsZWFzdCBvbmUgbW9kZWwuICovXG5leHBvcnQgZnVuY3Rpb24gdmlzaWJsZVRvb2xDb250cmlidXRpb25zKFxuICB0b29sczogcmVhZG9ubHkgVG9vbGJhclRvb2xDb250cmlidXRpb25bXSB8IG51bGwgfCB1bmRlZmluZWQsXG4pOiBUb29sYmFyVG9vbENvbnRyaWJ1dGlvbltdIHtcbiAgcmV0dXJuIHNvcnRUb29sQ29udHJpYnV0aW9ucyh0b29scyA/PyBbXSkuZmlsdGVyKCh0KSA9PiB0Lm1vZGVscygpLmxlbmd0aCA+IDApO1xufVxuIl19
|
|
106
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJhci10b29sLmNvbnRyYWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jb250cmFjdHMvdG9vbGJhci10b29sLmNvbnRyYWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzREc7QUFDSCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBaU0vQyx5RUFBeUU7QUFDekUsTUFBTSxVQUFVLHdCQUF3QixDQUFDLENBQVU7SUFDakQsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFLLENBQXdCLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQztBQUM1RCxDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsSUFBSSxjQUFjLENBQWlDLGVBQWUsQ0FBQyxDQUFDO0FBRWpHLGlEQUFpRDtBQUNqRCxNQUFNLFVBQVUscUJBQXFCLENBQ25DLEtBQW1CO0lBRW5CLDZFQUE2RTtJQUM3RSxtREFBbUQ7SUFDbkQsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQ25ELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQ3JELENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdEIsQ0FBQztBQUVEO3VFQUN1RTtBQUN2RSxNQUFNLFVBQVUsd0JBQXdCLENBQ3RDLEtBQXdEO0lBRXhELE1BQU0sR0FBRyxHQUFHLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FDOUIsQ0FBQyxDQUFDLEVBQWdDLEVBQUUsQ0FDbEMsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxPQUFRLENBQTZCLEVBQUUsTUFBTSxLQUFLLFVBQVUsQ0FDL0YsQ0FBQztJQUNGLE9BQU8scUJBQXFCLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3pFLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLHVCQUF1QixDQUNyQyxLQUF3RCxFQUN4RCxNQUEwQyxPQUFPO0lBRWpELE1BQU0sSUFBSSxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7SUFDL0IsTUFBTSxHQUFHLEdBQW9DLEVBQUUsQ0FBQztJQUNoRCxLQUFLLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxFQUFFLENBQUM7UUFDL0QsSUFBSSxPQUFPLENBQUMsQ0FBQyxFQUFFLEtBQUssUUFBUSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxPQUFPLENBQUMsQ0FBQyxRQUFRLEtBQUssVUFBVTtlQUNsRSxPQUFPLENBQUMsQ0FBQyxLQUFLLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDckMsR0FBRyxDQUFDLElBQUksQ0FBQyxnR0FBZ0csRUFBRSxDQUFDLENBQUMsQ0FBQztZQUM5RyxTQUFTO1FBQ1gsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUNuQixHQUFHLENBQUMsSUFBSSxDQUFDLDZCQUE2QixDQUFDLENBQUMsRUFBRSxzREFBc0QsQ0FBQyxDQUFDO1lBQ2xHLFNBQVM7UUFDWCxDQUFDO1FBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDZixHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2QsQ0FBQztJQUNELE9BQU8scUJBQXFCLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDcEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogSG93IGEgdG9vbCBnZXRzIGludG8gdGhlIHRvb2xiYXIgd2l0aG91dCB0aGlzIGxpYnJhcnkga25vd2luZyB3aGF0IGl0IGlzLlxuICpcbiAqIFdIWSBUSElTIEVYSVNUU1xuICogVGhlIFlPTE8gZGV0ZWN0b3IgYW5kIHRoZSByZXRpbmFsLWxheWVyIHNlZ21lbnRlciB1c2VkIHRvIGJlIGJ1aWx0IGluOiB0aGVpclxuICogYnV0dG9ucyB3ZXJlIGhhcmRjb2RlZCBpbiB0aGUgdG9vbGJhciB0ZW1wbGF0ZSwgdGhlaXIgbW9kZWwgcmVnaXN0cmllcyBuYW1lZFxuICogSkFYIGNoZWNrcG9pbnRzLCBhbmQgdGhlIGBJTlNUQU5DRV9TRUdNRU5URVJgIC8gYFNFTUFOVElDX1NFR01FTlRFUmAgdG9rZW5zXG4gKiBkZWZhdWx0ZWQgdG8gaW4tbGlicmFyeSBzZXJ2aWNlcyB0aGF0IGltcG9ydGVkIGB5b2xvLXNlZ2RldGVjdC1qc2AgYW5kXG4gKiBgamF4LWFpLWpzYC4gVGhvc2UgZGVmYXVsdCBmYWN0b3JpZXMgd2VyZSB0aGUgb25seSB0aGluZyBwdWxsaW5nIGVpdGhlclxuICogcGFja2FnZSBpbnRvIHRoZSBidW5kbGUg4oCUIHRoZSBjb250cmFjdHMgdGhlbXNlbHZlcyB3ZXJlIGFscmVhZHkgY2xlYW4uXG4gKlxuICogVGhhdCBhcnJhbmdlbWVudCBjYW5ub3Qgc2hpcCBpbiBhbiBvcGVuIGxpYnJhcnkgd2hpbGUgdGhlIG1vZGVscyBhcmUgY2xvc2VkLlxuICogU28gdGhlIHRvb2xzIG1vdmUgb3V0LCBpbnRvIGEgcGFja2FnZSB0aGF0IGRlcGVuZHMgb24gdGhpcyBvbmUsIGFuZCBhcnJpdmVcbiAqIGJhY2sgdGhyb3VnaCB7QGxpbmsgVE9PTEJBUl9UT09MU30uIFRoaXMgbGlicmFyeSBrZWVwcyB0aGUgY29udHJhY3RzLCB0aGVcbiAqIGNocm9tZSBhbmQgdGhlIHJlZ2lvbiBwbHVtYmluZzsgaXQgbm8gbG9uZ2VyIGtub3dzIHRoYXQgWU9MTyBleGlzdHMuXG4gKlxuICogQSBob3N0IHJlZ2lzdGVycyB0b29scyB3aXRoIGEgbXVsdGktcHJvdmlkZXI6XG4gKlxuICogICAgIHsgcHJvdmlkZTogVE9PTEJBUl9UT09MUywgdXNlRXhpc3Rpbmc6IFlvbG9Ub29sQ29udHJpYnV0aW9uLCBtdWx0aTogdHJ1ZSB9XG4gKlxuICogUmVnaXN0ZXIgbm90aGluZyBhbmQgdGhlIHRvb2xiYXIgaGFzIG5vIHNlZ21lbnRhdGlvbiB0b29scywgdGhlIGhlbHAgZGlhbG9nXG4gKiBsaXN0cyBub25lLCBhbmQgbmVpdGhlciBtb2RlbCBwYWNrYWdlIGlzIGluIHRoZSBncmFwaC5cbiAqXG4gKiBXSFkgUEFSQU1TIEFSRSBERUNMQVJFRCwgTk9UIFJFTkRFUkVEXG4gKiBBIGNvbnRyaWJ1dGlvbiBkZXNjcmliZXMgaXRzIHBhcmFtZXRlcnMgKHtAbGluayBUb29sUGFyYW1TcGVjfSkgaW5zdGVhZCBvZlxuICogc3VwcGx5aW5nIGEgY29tcG9uZW50IHRvIGRyYXcgdGhlbS4gVGhlIHRvb2xiYXIgcmVuZGVycyBvbmUgZ2VuZXJpYyBkaWFsb2dcbiAqIGZyb20gdGhhdCBkZXNjcmlwdGlvbi4gVGhlIGFsdGVybmF0aXZlIOKAlCBlYWNoIHBsdWdpbiBzaGlwcGluZyBpdHMgb3duIGRpYWxvZ1xuICogY29tcG9uZW50IOKAlCB3b3VsZCBtYWtlIGV2ZXJ5IHBsdWdpbiBkZXBlbmQgb24gdGhpcyBsaWJyYXJ5J3MgZXhhY3QgUHJpbWVOR1xuICogdmVyc2lvbiBhbmQgc3R5bGluZyBpbnRlcm5hbHMgdG8gbG9vayBsaWtlIHRoZSByZXN0IG9mIHRoZSB0b29sYmFyLCBhbmQgdGhlXG4gKiB0d28gZGlhbG9ncyB0aGF0IGV4aXN0IHRvZGF5IGFyZSBlbnRpcmVseSBudW1iZXJzIGFuZCBvbmUgY2hlY2tib3guIEEgc2NoZW1hXG4gKiBjb3ZlcnMgdGhlbSwgYW5kIGl0IGlzIHRoZSBzYW1lIHNoYXBlIGppdC11aSBhbHJlYWR5IHVzZXMgZm9yIGl0cyBwaXBlbGluZVxuICogc3RlcCBwYXJhbWV0ZXJzLCBzbyB0aGUgdm9jYWJ1bGFyeSBpcyBmYW1pbGlhci5cbiAqXG4gKiBJZiBhIHRvb2wgZXZlciBuZWVkcyBhIGNvbnRyb2wgdGhpcyBjYW5ub3QgZXhwcmVzcywgYWRkIGEgdmFyaWFudCBoZXJlIHJhdGhlclxuICogdGhhbiBhbiBlc2NhcGUgaGF0Y2ggdGhhdCByZXR1cm5zIGEgY29tcG9uZW50IOKAlCB0aGUgbW9tZW50IG9uZSB0b29sIGRyYXdzXG4gKiBpdHNlbGYsIHRoZSB0b29sYmFyIHN0b3BzIGJlaW5nIGFibGUgdG8gbGF5IHRvb2xzIG91dCBjb25zaXN0ZW50bHkuXG4gKlxuICogRElBTE9HIFRPT0xTXG4gKiBTb21lIHRvb2xzIGFyZSBub3QgXCJzZXQgcGFyYW1ldGVycywgcnVuIG9uY2VcIiBidXQgYW4gaW50ZXJhY3RpdmUgc2Vzc2lvbjogdGhlXG4gKiB1c2VyIHBhaW50cywgdGhlIHRvb2wgcmV0cmFpbnMgYW5kIHJlZHJhd3MsIG92ZXIgYW5kIG92ZXIgKERJQU5ORSkuIEEgc2NoZW1hXG4gKiBjYW5ub3QgZGVzY3JpYmUgdGhhdCwgc28ge0BsaW5rIFRvb2xiYXJEaWFsb2dUb29sQ29udHJpYnV0aW9ufSBpcyB0aGUgb25lXG4gKiB2YXJpYW50IHRoYXQgcmVuZGVycyBpdHMgb3duIGJvZHkuIFRoZSB0b29sYmFyIHN0aWxsIG93bnMgdGhlIGJ1dHRvbiwgaXRzXG4gKiBwbGFjZW1lbnQgYW5kIHRoZSBkaWFsb2cgY2hyb21lOyB0aGUgdG9vbCBvbmx5IGZpbGxzIHRoZSBkaWFsb2csIHdpdGggcGxhaW5cbiAqIERPTSAoYG1vdW50YCksIHNvIGl0IG5lZWRzIG5laXRoZXIgQW5ndWxhciBub3IgdGhpcyBsaWJyYXJ5J3MgUHJpbWVORyB2ZXJzaW9uLlxuICogSXRzIGJ1dHRvbiBzaXRzIHdpdGggdGhlIGhvc3QncyBvd24gYWN0aW9ucyBhdCB0aGUgc3RhcnQgb2YgdGhlIHRvb2xiYXIsIGFuZFxuICogc2hvd3Mgb25seSBpbiB0aGUgSW1hZ2UgdmlldywgdGhlIHZpZXcgaXRzIGNvbnRleHQgKHtAbGluayBUb29sRGlhbG9nQ29udGV4dH0pXG4gKiBkcmF3cyBvdmVyLlxuICpcbiAqIFdIWSBBTiBFTVBUWSBNT0RFTCBMSVNUIEhJREVTIFRIRSBUT09MXG4gKiB7QGxpbmsgVG9vbGJhclRvb2xDb250cmlidXRpb24ubW9kZWxzfSByZXR1cm5pbmcgYFtdYCByZW1vdmVzIHRoZSB0b29sIGZyb21cbiAqIHRoZSB0b29sYmFyIGVudGlyZWx5LiBUaGlzIHByZXNlcnZlcyB0aGUgYmVoYXZpb3VyIHRoZSBidWlsdC1pbiB0b29scyBhbHJlYWR5XG4gKiBoYWQgKHRoZWlyIGJ1dHRvbnMgd2VyZSBgKm5nSWZgJ2Qgb24gYSBmaWx0ZXJlZCByZWdpc3RyeSksIGFuZCBpdCBnaXZlcyBhIGhvc3RcbiAqIG9uZSBzd2l0Y2ggZm9yIFwidGhlIHdlaWdodHMgYXJlIG5vdCBjb25maWd1cmVkIGluIHRoaXMgZGVwbG95bWVudFwiIHRoYXQgZG9lc1xuICogbm90IHJlcXVpcmUgdW5yZWdpc3RlcmluZyB0aGUgcHJvdmlkZXIuXG4gKi9cbmltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdHlwZSB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHR5cGUgeyBJVmlzdWFsaXplciB9IGZyb20gJy4vdmlzdWFsaXplci5jb250cmFjdCc7XG5pbXBvcnQgdHlwZSB7IFBsb3RNb2RlQ29udGV4dCwgUGxvdE1vZGVTZXNzaW9uLCBQbG90TW9kZVRvb2xzIH0gZnJvbSAnLi9wbG90LXR5cGUtY29udHJpYnV0aW9uLmNvbnRyYWN0JztcblxuLyoqIEEgbnVtYmVyIGZpZWxkLiBSZW5kZXJlZCBhcyBhIHN0ZXBwZXIsIG1hdGNoaW5nIHRoZSBidWlsdC1pbiBkaWFsb2dzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBOdW1iZXJQYXJhbVNwZWMge1xuICBpZDogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICB0eXBlOiAnbnVtYmVyJztcbiAgbWluPzogbnVtYmVyO1xuICBtYXg/OiBudW1iZXI7XG4gIHN0ZXA/OiBudW1iZXI7XG4gIC8qKiBEZWNpbWFsIHBsYWNlcyB0byBzaG93LiBPbWl0IGZvciBpbnRlZ2Vycy4gKi9cbiAgZnJhY3Rpb25EaWdpdHM/OiBudW1iZXI7XG4gIC8qKiBIb3ZlciBoZWxwLiBQbGFpbiB0ZXh0OyBpdCBpcyBub3QgcmVuZGVyZWQgYXMgSFRNTC4gKi9cbiAgdG9vbHRpcD86IHN0cmluZztcbn1cblxuLyoqIEEgY2hlY2tib3guIGBsYWJlbGAgc2l0cyBiZXNpZGUgaXQgYW5kIG1heSBydW4gdG8gYSBzZW50ZW5jZSBvciB0d28uICovXG5leHBvcnQgaW50ZXJmYWNlIEJvb2xlYW5QYXJhbVNwZWMge1xuICBpZDogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICB0eXBlOiAnYm9vbGVhbic7XG4gIHRvb2x0aXA/OiBzdHJpbmc7XG59XG5cbi8qKiBBIGZpeGVkIHNldCBvZiBjaG9pY2VzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZWxlY3RQYXJhbVNwZWMge1xuICBpZDogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICB0eXBlOiAnc2VsZWN0JztcbiAgb3B0aW9uczogeyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIH1bXTtcbiAgdG9vbHRpcD86IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgVG9vbFBhcmFtU3BlYyA9IE51bWJlclBhcmFtU3BlYyB8IEJvb2xlYW5QYXJhbVNwZWMgfCBTZWxlY3RQYXJhbVNwZWM7XG5cbi8qKiBPbmUgc2VsZWN0YWJsZSBjaGVja3BvaW50LiAqL1xuZXhwb3J0IGludGVyZmFjZSBUb29sTW9kZWxPcHRpb24ge1xuICBpZDogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICAvKipcbiAgICogRGVzY3JpYmVzIHRoZSBjaGVja3BvaW50IGluIHRoZSBwaWNrZXIncyBob3ZlciB0b29sdGlwIOKAlCBzaXplLCBzcGVlZCxcbiAgICogdHJhaW5pbmcgZG9tYWluLCBhY2N1cmFjeS4gKipSZW5kZXJlZCBhcyBIVE1MKiosIHNvIGl0IGlzIHRydXN0ZWQgY29udGVudFxuICAgKiBmcm9tIHRoZSBjb250cmlidXRpbmcgcGFja2FnZSwgbmV2ZXIgYW55dGhpbmcgdXNlci1zdXBwbGllZC5cbiAgICovXG4gIGluZm8/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBQYXJhbWV0ZXIgdmFsdWVzIHRoaXMgY2hlY2twb2ludCB3YW50cywgbWVyZ2VkIG92ZXJcbiAgICoge0BsaW5rIFRvb2xiYXJUb29sQ29udHJpYnV0aW9uLmRlZmF1bHRQYXJhbXN9IHdoZW4gaXQgaXMgc2VsZWN0ZWQuIERlZmF1bHRzXG4gICAqIGJlbG9uZyB0byB0aGUgbW9kZWwgcmF0aGVyIHRoYW4gdGhlIHRvb2wg4oCUIGEgZGV0ZWN0b3IgdHJhaW5lZCBvbiBuYXRpdmUgNDB4XG4gICAqIHBhdGNoZXMgd2FudHMgZGlmZmVyZW50IHRpbGluZyBmcm9tIG9uZSB0cmFpbmVkIG9uIHRodW1ibmFpbHMuXG4gICAqL1xuICBkZWZhdWx0cz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufVxuXG4vKipcbiAqIFRoZSBgc3RhdHVzJGAgLyBgYnVzeSRgIC8gYHByb2dyZXNzJGAgc3VyZmFjZSB0aGUgdG9vbGJhciBkcml2ZXMgaXRzIHN0aWNreVxuICogdG9hc3QgYW5kIHByb2dyZXNzIGJhciBmcm9tLiBgcHJvZ3Jlc3MkYCBpcyBhIDAuLjEgZnJhY3Rpb24sIG9yIC0xIGZvclxuICogaW5kZXRlcm1pbmF0ZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUb29sUHJvZ3Jlc3Mge1xuICBzdGF0dXMkOiBPYnNlcnZhYmxlPHN0cmluZz47XG4gIGJ1c3kkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBwcm9ncmVzcyQ6IE9ic2VydmFibGU8bnVtYmVyPjtcbn1cblxuLyoqIFRvb2xiYXIgaWNvbjogYSBwdWJsaXNoZWQgYXNzZXQsIG9yIGEgUHJpbWVJY29uIGNsYXNzIG5hbWUuICovXG5leHBvcnQgdHlwZSBUb29sSWNvbiA9IHsgc3JjOiBzdHJpbmc7IHBpPzogbmV2ZXIgfSB8IHsgcGk6IHN0cmluZzsgc3JjPzogbmV2ZXIgfTtcblxuLyoqXG4gKiBBIHRvb2wgY29udHJpYnV0ZWQgdG8gdGhlIHRvb2xiYXIuXG4gKlxuICogSW1wbGVtZW50IGl0IG9uIGFuIGBASW5qZWN0YWJsZSgpYCBzZXJ2aWNlIGluIHRoZSBjb250cmlidXRpbmcgcGFja2FnZSwgc28gaXRcbiAqIGNhbiBpbmplY3QgaXRzIG93biBzZWdtZW50ZXIgYW5kIG1vZGVsIHJlZ2lzdHJ5IOKAlCB0aGlzIGxpYnJhcnkgcHJvdmlkZXNcbiAqIG5laXRoZXIgYW5kIG11c3Qgbm90IGxlYXJuIHRvLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRvb2xiYXJUb29sQ29udHJpYnV0aW9uIHtcbiAgLyoqIFN0YWJsZSBpZGVudGl0eSwgdXNlZCBmb3IgdHJhY2tpbmcgYW5kIHBlcnNpc3RlZCBwcmVmZXJlbmNlcy4gKi9cbiAgaWQ6IHN0cmluZztcbiAgLyoqIFNob3J0IG5hbWUsIHVzZWQgaW4gdGhlIHRvYXN0IGFuZCB0aGUgaGVscCBkaWFsb2cgaGVhZGluZy4gKi9cbiAgbGFiZWw6IHN0cmluZztcbiAgaWNvbjogVG9vbEljb247XG5cbiAgLyoqIFRvb2x0aXAgb24gdGhlIHJ1biBidXR0b24g4oCUIHNheSB3aGF0IGl0IGRvZXMgdG8gdGhlIGN1cnJlbnQgdmlldy4gKi9cbiAgcnVuVG9vbHRpcDogc3RyaW5nO1xuICAvKiogVG9vbHRpcCBvbiB0aGUgY2hlY2twb2ludCBwaWNrZXIuIERlZmF1bHRzIHRvIFwiUGljayB0aGUgbW9kZWxcIi4gKi9cbiAgbW9kZWxUb29sdGlwPzogc3RyaW5nO1xuICAvKiogVG9vbHRpcCBvbiB0aGUgcGFyYW1ldGVycyBidXR0b24uIERlZmF1bHRzIHRvIFwiUGFyYW1ldGVyc1wiLiAqL1xuICBwYXJhbXNUb29sdGlwPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGVyZSBpdCBzaXRzIGFtb25nIHRoZSBzZWdtZW50YXRpb24gdG9vbHMuIExvd2VyIHNvcnRzIGZpcnN0OyB0aWVzIGZhbGxcbiAgICogYmFjayB0byByZWdpc3RyYXRpb24gb3JkZXIuIFRoZSBidWlsdC1pbiBwcm9tcHRlZCB0b29scyBvY2N1cHkgMC05OSwgc29cbiAgICogY29udHJpYnV0ZWQgdG9vbHMgc2hvdWxkIHN0YXJ0IGF0IDEwMCB0byBsYW5kIGFmdGVyIHRoZW0uXG4gICAqL1xuICBvcmRlcj86IG51bWJlcjtcblxuICAvKiogU2VsZWN0YWJsZSBjaGVja3BvaW50cy4gKipFbXB0eSBoaWRlcyB0aGUgdG9vbC4qKiAqL1xuICBtb2RlbHMoKTogVG9vbE1vZGVsT3B0aW9uW107XG4gIC8qKiBXaGljaCBjaGVja3BvaW50IHJ1bnMgd2hlbiB0aGUgdXNlciBoYXMgbm90IGNob3Nlbi4gKi9cbiAgZGVmYXVsdE1vZGVsSWQoKTogc3RyaW5nO1xuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gdGhlIHVzZXIgcGlja3MgYSBjaGVja3BvaW50LCBiZWZvcmUgcGFyYW1ldGVycyBhcmUgcmUtc2VlZGVkLlxuICAgKiBVc2UgaXQgdG8gcmVjb3JkIHRoZSBjaG9pY2UgaW4gdGhlIGNvbnRyaWJ1dGluZyBwYWNrYWdlJ3Mgb3duIHJlZ2lzdHJ5LlxuICAgKi9cbiAgb25Nb2RlbENoYW5nZT8obW9kZWxJZDogc3RyaW5nKTogdm9pZDtcblxuICAvKiogUGFyYW1ldGVyIGZpZWxkcywgaW4gZGlhbG9nIG9yZGVyLiBFbXB0eSBoaWRlcyB0aGUgcGFyYW1ldGVycyBidXR0b24uICovXG4gIHBhcmFtczogVG9vbFBhcmFtU3BlY1tdO1xuICAvKipcbiAgICogQmFzZWxpbmUgcGFyYW1ldGVyIHZhbHVlcyBmb3IgYSBjaGVja3BvaW50LiBDYWxsZWQgb24gZmlyc3QgdXNlIGFuZCBhZ2FpblxuICAgKiBvbiBcIlJlc2V0IHRvIG1vZGVsIGRlZmF1bHRzXCIsIHNvIGl0IG11c3QgYmUgcHVyZSBhbmQgbXVzdCByZXR1cm4gZXZlcnkga2V5XG4gICAqIHRoZSB0b29sIHJlYWRzIOKAlCBhIHBhcmFtZXRlciB0aGUgZGlhbG9nIHNob3dzIGJ1dCB0aGlzIG9taXRzIHJlbmRlcnMgYXNcbiAgICogZW1wdHkgYW5kIHJlYWNoZXMgYHJ1bmAgYXMgdW5kZWZpbmVkLlxuICAgKi9cbiAgZGVmYXVsdFBhcmFtcyhtb2RlbElkOiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuICAvKipcbiAgICogRW50cnkgZm9yIHRoZSBoZWxwIGRpYWxvZydzIHRvb2wgbGlzdC4gYGJvZHlgIGlzIHJlbmRlcmVkIGFzIEhUTUwgYW5kIG1heVxuICAgKiByZWZlcmVuY2UgcHVibGlzaGVkIGFzc2V0cyAoZS5nLiB0aGUgdG9vbCdzIG93biBpY29uKS5cbiAgICovXG4gIGhlbHA/OiB7IGJvZHk6IHN0cmluZyB9O1xuXG4gIC8qKiBQcm9ncmVzcyBzdXJmYWNlIGZvciB0aGUgdG9hc3QuICovXG4gIHByb2dyZXNzOiBUb29sUHJvZ3Jlc3M7XG5cbiAgLyoqXG4gICAqIFJ1biBvdmVyIHdoYXQgaXMgY3VycmVudGx5IGRpc3BsYXllZCwgYW5kIHdyaXRlIHdoYXRldmVyIGl0IGZpbmRzIHRocm91Z2hcbiAgICogYHZpemAuIFJlc29sdmVzIHdpdGggdGhlIG51bWJlciBvZiByZWdpb25zIGFkZGVkLlxuICAgKlxuICAgKiBFdmVyeXRoaW5nIHRoZSB0b29sIG5lZWRzIGlzIG9uIHtAbGluayBJVmlzdWFsaXplcn0sIHdoaWNoIGlzIHBhcnQgb2YgdGhpc1xuICAgKiBsaWJyYXJ5J3MgcHVibGljIHN1cmZhY2Ug4oCUIGEgY29udHJpYnV0aW9uIG5ldmVyIHJlYWNoZXMgaW50byBpbnRlcm5hbHMuXG4gICAqIFJlZ2lvbiB3cml0ZXMgZ28gdGhyb3VnaCB0aGUgc2FtZSBwYXRoIHRoZSBidWlsdC1pbiB0b29scyB1c2UsIHNvIHRoZVxuICAgKiBpbmRleC1iYXNlZCBvdmVybGF5cyBhbmQgdGhlIFJlZ2lvbnMgdGFibGUgc3RheSBjb25zaXN0ZW50LlxuICAgKi9cbiAgcnVuKHZpejogSVZpc3VhbGl6ZXIsIHBhcmFtczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBQcm9taXNlPG51bWJlcj47XG59XG5cbi8qKlxuICogV2hhdCBhIGRpYWxvZyB0b29sIGdldHMgd2hpbGUgaXRzIGRpYWxvZyBpcyBvcGVuOiB0aGUgc2FtZSBzdXJmYWNlIGFcbiAqIGNvbnRyaWJ1dGVkIHBsb3QgbW9kZSBnZXRzICh0aGUgcHVibGljIHZpc3VhbGl6ZXIsIHRoZSBJbWFnZSB2aWV3J3Mgdmlld3BvcnRcbiAqIGFuZCB0aGUgY3VycmVudCBpbWFnZSksIHdpdGggdGhlIHRvb2xiYXIgdG9vbHMgYWx3YXlzIHByZXNlbnQuXG4gKi9cbmV4cG9ydCB0eXBlIFRvb2xEaWFsb2dDb250ZXh0ID0gUGxvdE1vZGVDb250ZXh0ICYgeyB0b29sczogUGxvdE1vZGVUb29scyB9O1xuXG4vKiogQSBsaXZlIGRpYWxvZy10b29sIHNlc3Npb24uIGBkZWFjdGl2YXRlKClgIHJ1bnMgZXhhY3RseSBvbmNlLCBhZnRlciB0aGUgYm9keSdzIHRlYXJkb3duLiAqL1xuZXhwb3J0IHR5cGUgVG9vbERpYWxvZ1Nlc3Npb24gPSBQbG90TW9kZVNlc3Npb247XG5cbi8qKlxuICogQSB0b29sYmFyIHRvb2wgdGhhdCBvcGVucyBhIGRpYWxvZyBpbnN0ZWFkIG9mIHJ1bm5pbmcgb25jZSAoc2VlIERJQUxPRyBUT09MU1xuICogYWJvdmUpLiBDbGlja2luZyBpdHMgYnV0dG9uIG9wZW5zIHRoZSBkaWFsb2cgYW5kIHN0YXJ0cyBhIHNlc3Npb247IGNsaWNraW5nIGl0XG4gKiBhZ2Fpbiwgb3IgY2xvc2luZyB0aGUgZGlhbG9nLCBlbmRzIGl0LlxuICpcbiAqIFRoZSBzZXNzaW9uIGlzIGJvdW5kIHRvIHRoZSBJbWFnZSB2aWV3IG9uIHNjcmVlbi4gV2hlbiB0aGF0IHZpZXcgaXMgcmUtcmVuZGVyZWRcbiAqIChhbm90aGVyIGltYWdlLCBhbm90aGVyIHNsaWNlKSB0aGUgc2Vzc2lvbiBlbmRzIGFuZCwgd2l0aCB0aGUgZGlhbG9nIHN0aWxsXG4gKiBvcGVuLCBhIGZyZXNoIG9uZSBzdGFydHMgb25jZSB0aGUgbmV3IHZpZXcgaXMgcmVhZHkuIExlYXZpbmcgdGhlIEltYWdlIHZpZXdcbiAqIGNsb3NlcyB0aGUgZGlhbG9nLiBBcyB3aXRoIHBsb3QgbW9kZXMsIG5vdGhpbmcgdGhlIHRvb2wgdGhyb3dzIG9yIHJlamVjdHNcbiAqIGVzY2FwZXM6IGEgZmFpbGVkIHN0YXJ0IGNsb3NlcyB0aGUgZGlhbG9nIHdpdGggYSB3YXJuaW5nLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRvb2xiYXJEaWFsb2dUb29sQ29udHJpYnV0aW9uIHtcbiAga2luZDogJ2RpYWxvZyc7XG4gIC8qKiBTdGFibGUgaWRlbnRpdHkuIE11c3Qgbm90IGNsYXNoIHdpdGggYW5vdGhlciB0b29sYmFyIHRvb2wuICovXG4gIGlkOiBzdHJpbmc7XG4gIC8qKiBTaG9ydCBuYW1lOyB0aGUgZGlhbG9nIHRpdGxlIHVubGVzcyBgZGlhbG9nLnRpdGxlYCBpcyBzZXQuICovXG4gIGxhYmVsOiBzdHJpbmc7XG4gIGljb246IFRvb2xJY29uO1xuICAvKiogVG9vbHRpcCBvbiB0aGUgYnV0dG9uLiAqL1xuICB0b29sdGlwOiBzdHJpbmc7XG4gIC8qKiBPcmRlciBhbW9uZyB0aGUgZGlhbG9nIHRvb2xzLiBMb3dlciBzb3J0cyBmaXJzdDsgdGllcyBrZWVwIHJlZ2lzdHJhdGlvbiBvcmRlci4gKi9cbiAgb3JkZXI/OiBudW1iZXI7XG4gIGRpYWxvZz86IHtcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICAvKiogQ1NTIHdpZHRoIG9mIHRoZSBkaWFsb2cuIERlZmF1bHQgYCcyMnJlbSdgLiAqL1xuICAgIHdpZHRoPzogc3RyaW5nO1xuICB9O1xuICAvKiogRW50cnkgZm9yIHRoZSBoZWxwIGRpYWxvZydzIHRvb2wgbGlzdCwgcmVuZGVyZWQgYXMgSFRNTCAodHJ1c3RlZCBjb250ZW50KS4gKi9cbiAgaGVscD86IHsgYm9keTogc3RyaW5nIH07XG4gIC8qKiBTdGFydCBhIHNlc3Npb24sIG9uY2UgdGhlIEltYWdlIHZpZXcncyB2aWV3cG9ydCBpcyByZWFkeS4gKi9cbiAgYWN0aXZhdGUoY3R4OiBUb29sRGlhbG9nQ29udGV4dCk6IFRvb2xEaWFsb2dTZXNzaW9uIHwgUHJvbWlzZTxUb29sRGlhbG9nU2Vzc2lvbj47XG4gIC8qKlxuICAgKiBSZW5kZXIgdGhlIGRpYWxvZyBib2R5IGludG8gYGhvc3RgOyByZXR1cm4gaXRzIHRlYXJkb3duIChjYWxsZWQgYmVmb3JlXG4gICAqIGBkZWFjdGl2YXRlKClgKS4gQ2FsbGVkIGFmdGVyIGBhY3RpdmF0ZWAgcmVzb2x2ZXMsIG9uY2UgdGhlIGRpYWxvZyBoYXMgcmVuZGVyZWQgYW5kXG4gICAqIGBob3N0YCBpcyBpbiB0aGUgZG9jdW1lbnQsIHNvIHRoZSBib2R5IGNhbiBtZWFzdXJlIGl0c2VsZi5cbiAgICovXG4gIG1vdW50KGhvc3Q6IEhUTUxFbGVtZW50LCBjdHg6IFRvb2xEaWFsb2dDb250ZXh0LCBzZXNzaW9uOiBUb29sRGlhbG9nU2Vzc2lvbik6ICgpID0+IHZvaWQ7XG59XG5cbi8qKiBBbnl0aGluZyBwcm92aWRlZCBvbiB7QGxpbmsgVE9PTEJBUl9UT09MU30uIEEgcnVuIHRvb2wgaGFzIG5vIGBraW5kYC4gKi9cbmV4cG9ydCB0eXBlIFRvb2xiYXJDb250cmlidXRpb24gPSBUb29sYmFyVG9vbENvbnRyaWJ1dGlvbiB8IFRvb2xiYXJEaWFsb2dUb29sQ29udHJpYnV0aW9uO1xuXG4vKiogV2hldGhlciBhIGNvbnRyaWJ1dGlvbiBpcyBhIHtAbGluayBUb29sYmFyRGlhbG9nVG9vbENvbnRyaWJ1dGlvbn0uICovXG5leHBvcnQgZnVuY3Rpb24gaXNEaWFsb2dUb29sQ29udHJpYnV0aW9uKGM6IHVua25vd24pOiBjIGlzIFRvb2xiYXJEaWFsb2dUb29sQ29udHJpYnV0aW9uIHtcbiAgcmV0dXJuICEhYyAmJiAoYyBhcyB7IGtpbmQ/OiB1bmtub3duIH0pLmtpbmQgPT09ICdkaWFsb2cnO1xufVxuXG4vKipcbiAqIE11bHRpLXByb3ZpZGVyIHRva2VuIGZvciBjb250cmlidXRlZCB0b29sczogcnVuIHRvb2xzXG4gKiAoe0BsaW5rIFRvb2xiYXJUb29sQ29udHJpYnV0aW9ufSkgYW5kLCBzaW5jZSAwLjYuMCwgZGlhbG9nIHRvb2xzXG4gKiAoe0BsaW5rIFRvb2xiYXJEaWFsb2dUb29sQ29udHJpYnV0aW9ufSkuXG4gKlxuICogRGVsaWJlcmF0ZWx5IGhhcyBubyBgZmFjdG9yeWA6IHVucmVnaXN0ZXJlZCBtZWFucyBubyB0b29scywgd2hpY2ggaXMgd2hhdFxuICogbWFrZXMgdGhpcyBsaWJyYXJ5IHNoaXBwYWJsZSB3aXRob3V0IHRoZSBjbG9zZWQgbW9kZWwgcGFja2FnZXMuIEluamVjdCBpdFxuICogYHsgb3B0aW9uYWw6IHRydWUgfWAgYW5kIHRyZWF0IG51bGwgYXMgZW1wdHkuXG4gKi9cbmV4cG9ydCBjb25zdCBUT09MQkFSX1RPT0xTID0gbmV3IEluamVjdGlvblRva2VuPHJlYWRvbmx5IFRvb2xiYXJDb250cmlidXRpb25bXT4oJ1RPT0xCQVJfVE9PTFMnKTtcblxuLyoqIFNvcnQgY29udHJpYnV0ZWQgdG9vbHMgaW50byBkaXNwbGF5IG9yZGVyLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNvcnRUb29sQ29udHJpYnV0aW9uczxUIGV4dGVuZHMgeyBvcmRlcj86IG51bWJlciB9PihcbiAgdG9vbHM6IHJlYWRvbmx5IFRbXSxcbik6IFRbXSB7XG4gIC8vIFN0YWJsZTogZXF1YWwgYG9yZGVyYCBrZWVwcyByZWdpc3RyYXRpb24gb3JkZXIsIHNvIGEgaG9zdCBjb250cm9scyB0aWVzIGJ5XG4gIC8vIHByb3ZpZGVyIG9yZGVyIHdpdGhvdXQgaGF2aW5nIHRvIGludmVudCBudW1iZXJzLlxuICByZXR1cm4gdG9vbHMubWFwKCh0LCBpKSA9PiAoeyB0LCBpIH0pKS5zb3J0KChhLCBiKSA9PlxuICAgIChhLnQub3JkZXIgPz8gMTAwKSAtIChiLnQub3JkZXIgPz8gMTAwKSB8fCBhLmkgLSBiLmksXG4gICkubWFwKCh7IHQgfSkgPT4gdCk7XG59XG5cbi8qKiBUaGUgcnVuIHRvb2xzIGEgdG9vbGJhciBzaG91bGQgYWN0dWFsbHkgc2hvdzogdGhvc2Ugd2l0aCBhdCBsZWFzdCBvbmUgbW9kZWwuXG4gKiAgRGlhbG9nIHRvb2xzIGFyZSBsZWZ0IG91dCAoc2VlIHtAbGluayBkaWFsb2dUb29sQ29udHJpYnV0aW9uc30pLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZpc2libGVUb29sQ29udHJpYnV0aW9ucyhcbiAgdG9vbHM6IHJlYWRvbmx5IFRvb2xiYXJDb250cmlidXRpb25bXSB8IG51bGwgfCB1bmRlZmluZWQsXG4pOiBUb29sYmFyVG9vbENvbnRyaWJ1dGlvbltdIHtcbiAgY29uc3QgcnVuID0gKHRvb2xzID8/IFtdKS5maWx0ZXIoXG4gICAgKHQpOiB0IGlzIFRvb2xiYXJUb29sQ29udHJpYnV0aW9uID0+XG4gICAgICAhaXNEaWFsb2dUb29sQ29udHJpYnV0aW9uKHQpICYmIHR5cGVvZiAodCBhcyBUb29sYmFyVG9vbENvbnRyaWJ1dGlvbik/Lm1vZGVscyA9PT0gJ2Z1bmN0aW9uJyxcbiAgKTtcbiAgcmV0dXJuIHNvcnRUb29sQ29udHJpYnV0aW9ucyhydW4pLmZpbHRlcigodCkgPT4gdC5tb2RlbHMoKS5sZW5ndGggPiAwKTtcbn1cblxuLyoqXG4gKiBUaGUgZGlhbG9nIHRvb2xzLCBpbiBkaXNwbGF5IG9yZGVyLiBBIG1hbGZvcm1lZCBvbmUgKG5vIHN0cmluZyBgaWRgLCBub1xuICogYGFjdGl2YXRlYCBvciBgbW91bnRgIGZ1bmN0aW9uKSBvciBhIHJlcGVhdGVkIGBpZGAgaXMgZHJvcHBlZCB3aXRoIGEgd2FybmluZ1xuICogcmF0aGVyIHRoYW4gYnJlYWtpbmcgdGhlIHRvb2xiYXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaWFsb2dUb29sQ29udHJpYnV0aW9ucyhcbiAgdG9vbHM6IHJlYWRvbmx5IFRvb2xiYXJDb250cmlidXRpb25bXSB8IG51bGwgfCB1bmRlZmluZWQsXG4gIGxvZzogeyB3YXJuKC4uLmFyZ3M6IHVua25vd25bXSk6IHZvaWQgfSA9IGNvbnNvbGUsXG4pOiBUb29sYmFyRGlhbG9nVG9vbENvbnRyaWJ1dGlvbltdIHtcbiAgY29uc3Qgc2VlbiA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBjb25zdCBvdXQ6IFRvb2xiYXJEaWFsb2dUb29sQ29udHJpYnV0aW9uW10gPSBbXTtcbiAgZm9yIChjb25zdCB0IG9mICh0b29scyA/PyBbXSkuZmlsdGVyKGlzRGlhbG9nVG9vbENvbnRyaWJ1dGlvbikpIHtcbiAgICBpZiAodHlwZW9mIHQuaWQgIT09ICdzdHJpbmcnIHx8ICF0LmlkIHx8IHR5cGVvZiB0LmFjdGl2YXRlICE9PSAnZnVuY3Rpb24nXG4gICAgICAgIHx8IHR5cGVvZiB0Lm1vdW50ICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICBsb2cud2FybignW3Zpc3VhbGl6ZXJdIGRpYWxvZyB0b29sIGlnbm9yZWQ6IGl0IG5lZWRzIGEgc3RyaW5nIGBpZGAgYW5kIGBhY3RpdmF0ZWAgYW5kIGBtb3VudGAgZnVuY3Rpb25zLicsIHQpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChzZWVuLmhhcyh0LmlkKSkge1xuICAgICAgbG9nLndhcm4oYFt2aXN1YWxpemVyXSBkaWFsb2cgdG9vbCAnJHt0LmlkfScgaWdub3JlZDogYW5vdGhlciBkaWFsb2cgdG9vbCBhbHJlYWR5IHVzZXMgdGhhdCBpZC5gKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBzZWVuLmFkZCh0LmlkKTtcbiAgICBvdXQucHVzaCh0KTtcbiAgfVxuICByZXR1cm4gc29ydFRvb2xDb250cmlidXRpb25zKG91dCk7XG59XG4iXX0=
|
|
@@ -7,4 +7,4 @@ import { InjectionToken } from '@angular/core';
|
|
|
7
7
|
* the routing/fallback implementation can change without touching constructors.
|
|
8
8
|
*/
|
|
9
9
|
export const VISUALIZER = new InjectionToken('VISUALIZER');
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlzdWFsaXplci5jb250cmFjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvY29udHJhY3RzL3Zpc3VhbGl6ZXIuY29udHJhY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQWtkL0M7Ozs7OztHQU1HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLElBQUksY0FBYyxDQUFjLFlBQVksQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEltYWdlIH0gZnJvbSAnaW1hZ2UtanMnO1xuXG5pbXBvcnQgeyBJSW1hZ2VJbmZvLCBJSW1hZ2VNZXRhZGF0YSB9IGZyb20gJy4vaW1hZ2UuY29udHJhY3QnO1xuaW1wb3J0IHsgUmVnaW9uIH0gZnJvbSAnLi4vbW9kZWxzL3JlZ2lvbic7XG5pbXBvcnQgeyBQbG90VHlwZSwgUGxvdFR5cGVEZXNjcmlwdG9yIH0gZnJvbSAnLi9wbG90LXR5cGUnO1xuaW1wb3J0IHsgVmlld2VyQ2FwYWJpbGl0aWVzIH0gZnJvbSAnLi9jYXBhYmlsaXRpZXMuY29udHJhY3QnO1xuaW1wb3J0IHsgSVJlZ2lvbk92ZXJsYXkgfSBmcm9tICcuL3JlZ2lvbi1vdmVybGF5LmNvbnRyYWN0JztcbmltcG9ydCB7IElIaXN0b2dyYW0gfSBmcm9tICcuL2NoYW5uZWwtaGlzdG9ncmFtLWFwaS5jb250cmFjdCc7XG5pbXBvcnQgeyBDb2xvcm1hcE5vZGUsIElXYW5kT3B0aW9ucywgSUJydXNoT3B0aW9ucywgU3BhdGlhbFZpZXdTdGF0ZSwgU3BhdGlhbENvbG9yQnkgfSBmcm9tICcuL2Rpc3BsYXktdHlwZXMnO1xuaW1wb3J0IHtcbiAgU3BhdGlhbERhdGFzZXQsXG4gIFNwYXRpYWxFbWJlZGRpbmcsXG59IGZyb20gJy4vc3BhdGlhbC1kYXRhc2V0LmNvbnRyYWN0JztcbmltcG9ydCB7IFNwYXRpYWxTZWxlY3Rpb25NYXNrIH0gZnJvbSAnLi4vc3BhdGlhbC9zcGF0aWFsLXNlbGVjdGlvbic7XG5cbi8qKlxuICogQmFja2VuZC1uZXV0cmFsIHZpc3VhbGl6YXRpb24gY29udHJhY3QuIFBsb3RseSBpcyBvbmUgaW1wbGVtZW50YXRpb247XG4gKiBPcGVuU2VhZHJhZ29uIGlzIGFub3RoZXIgKGZvciB0aGUgaW1hZ2UgcGxvdCB0eXBlKS4gVGhlIGFic3RyYWN0aW9uIHJlbmRlcnNcbiAqIGRhdGEg4oCUIGEgcmFzdGVyIGltYWdlIE9SIGEgc2NpZW50aWZpYyBwbG90IChoZWF0bWFwLCBzdXJmYWNlLCBjb250b3VyLFxuICogc2NhdHRlciwgbGluZSwgaXNvc3VyZmFjZSkg4oCUIGRyYXdzIHJlZ2lvbnMgb24gaXQsIGFuZCBkcml2ZXMgb24tY2FudmFzIHRvb2xzLlxuICpcbiAqIFNwbGl0IGludG8gcm9sZSBpbnRlcmZhY2VzIHNvIGEgY29uc3VtZXIgY2FuIGRlcGVuZCBvbmx5IG9uIHRoZSBzbGljZSBpdFxuICogdXNlcywgdGhlbiBjb21wb3NlZCBpbnRvIGBJVmlzdWFsaXplcmAuXG4gKlxuICogVHlwZXMgYXJlIGludGVudGlvbmFsbHkgcGVybWlzc2l2ZSAoYGFueWAgd2hlcmUgdGhlIGN1cnJlbnQgUGxvdGx5IHNlcnZpY2VcbiAqIGlzIHVudHlwZWQpIHNvIGBQbG90bHlTZXJ2aWNlYCBzYXRpc2ZpZXMgdGhlIGNvbnRyYWN0IHdpdGhvdXQgYSB0eXBpbmdcbiAqIHJld3JpdGUg4oCUIHRpZ2h0ZW5pbmcgaXMgYSBmb2xsb3ctdXAsIG5vdCBwYXJ0IG9mIHN0YW5kaW5nIHRoZSBpbnRlcmZhY2UgdXAuXG4gKi9cblxuLyoqIFBpeGVsIHJlYWRiYWNrIHNoYXBlIHJldHVybmVkIGJ5IGBnZXREaXNwbGF5ZWRQaXhlbERhdGFgLiAqL1xuZXhwb3J0IGludGVyZmFjZSBQaXhlbERhdGEge1xuICB3aWR0aDogbnVtYmVyO1xuICBoZWlnaHQ6IG51bWJlcjtcbiAgY2hhbm5lbHM6IG51bWJlcjtcbiAgZGF0YTogVWludDhDbGFtcGVkQXJyYXk7XG59XG5cbi8qKiBJbnRlbnNpdHkgc2FtcGxlZCBhbG9uZyBhIGxpbmUgUk9JIChQbG90VHlwZS5MSU5FIG92ZXIgaW1hZ2UgZGF0YSkuICovXG5leHBvcnQgaW50ZXJmYWNlIEludGVuc2l0eVByb2ZpbGUge1xuICAvKiogRGlzdGFuY2UgYWxvbmcgdGhlIGxpbmUuIEluIG1pY3JvbnMgd2hlbiB0aGUgaW1hZ2UgY2FycmllcyBhIHBoeXNpY2FsXG4gICAqICBwaXhlbCBzaXplIChtcHApOyBvdGhlcndpc2UgaW4gaW1hZ2UgcGl4ZWxzLiBTZWUge0BsaW5rIHVuaXR9LiAqL1xuICBwb3NpdGlvbnM6IG51bWJlcltdO1xuICAvKiogU2FtcGxlZCBpbnRlbnNpdHkgKGdyYXlzY2FsZSB2YWx1ZSBvciBSR0IgbHVtaW5hbmNlKS4gKi9cbiAgdmFsdWVzOiBudW1iZXJbXTtcbiAgLyoqIFVuaXQgb2Yge0BsaW5rIHBvc2l0aW9uc306ICfCtW0nIHdoZW4gc2NhbGVkIGJ5IHRoZSBpbWFnZSdzIG1wcCwgZWxzZSAncHgnLiAqL1xuICB1bml0PzogJ8K1bScgfCAncHgnO1xuICAvKiogU3RhYmxlIGlkIG9mIHRoZSBsaW5lIFJPSSB0aGlzIHByb2ZpbGUgY2FtZSBmcm9tIChtdWx0aS1saW5lIHN1cHBvcnQpLiAqL1xuICBpZD86IG51bWJlcjtcbiAgLyoqIENvbG91ciBvZiB0aGUgbGluZSBST0kg4oCUIHRoZSBpbnNldCB0cmFjZSBpcyBkcmF3biBpbiB0aGUgc2FtZSBjb2xvdXIuICovXG4gIGNvbG9yPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRoZSByZW5kZXIvdmlld3BvcnQgcm9sZTogbG9hZCBkYXRhLCByZW5kZXIgaXQgKGltYWdlIG9yIHBsb3QpLCBhbmQgaGFuZGxlXG4gKiB6b29tLCBzdGFjayBuYXZpZ2F0aW9uLCBhbmQgcGl4ZWwgcmVhZGJhY2suXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSURhdGFSZW5kZXJlciB7XG4gIGxvYWQoaW1hZ2VJbmZvOiBJSW1hZ2VJbmZvLCB6SW5kZXg6IG51bWJlcik6IFByb21pc2U8YW55PjtcbiAgLyoqIGBpbWFnZUxvYWRlZGAgaXMgdGhlIGJhY2tlbmQtc3BlY2lmaWMgaGFuZGxlIHJldHVybmVkIGJ5IGBsb2FkKClgIOKAlFxuICAgKiAgdHJlYXQgaXQgYXMgb3BhcXVlIGFuZCBwYXNzIGl0IHN0cmFpZ2h0IHRocm91Z2guICovXG4gIHBsb3QocGxvdERpdjogc3RyaW5nLCBpbWFnZUxvYWRlZDogdW5rbm93biwgaW1hZ2VJbmZvOiBJSW1hZ2VJbmZvLCBzY3JlZW5IZWlnaHQ6IG51bWJlcixcbiAgICAgICBwbG90VHlwZTogUGxvdFR5cGUsIGluUGxhY2U/OiBib29sZWFuKTogUHJvbWlzZTxib29sZWFuPjtcbiAgLyoqIEBkZXByZWNhdGVkIFBsb3RseS1zcGVjaWZpYyByZS1yZW5kZXI7IHRoZSBPU0QgYmFja2VuZCBuby1vcHMgaXQuIFRoZSBob3N0XG4gICAqICByZS1kcml2ZXMgYHBsb3QoKWAgZnJvbSBpdHMgaW1hZ2Ugc3RyZWFtIGluc3RlYWQuICovXG4gIHJlbG9hZEFuZFBsb3QoKTogdm9pZDtcbiAgcmVzZXQoKTogdm9pZDtcbiAgcmVsYXlvdXQodHJ1ZUltYWdlU2l6ZT86IG51bWJlcltdKTogdm9pZDtcbiAgLyoqIEBkZXByZWNhdGVkIFBsb3RseS1zcGVjaWZpYyAoYXhpcyByZXNldCk7IHRoZSBPU0QgYmFja2VuZCBuby1vcHMgaXQuIEdhdGVcbiAgICogIG9uIHtAbGluayBWaWV3ZXJDYXBhYmlsaXRpZXN9IGJlZm9yZSBjYWxsaW5nLiAqL1xuICByZXNldEF4ZXMoKTogdm9pZDtcbiAgLyoqIEBkZXByZWNhdGVkIFBsb3RseS1zcGVjaWZpYyAoYXV0b3NjYWxlKTsgdGhlIE9TRCBiYWNrZW5kIG5vLW9wcyBpdC4gR2F0ZVxuICAgKiAgb24ge0BsaW5rIFZpZXdlckNhcGFiaWxpdGllc30gYmVmb3JlIGNhbGxpbmcuICovXG4gIGF1dG9zY2FsZSgpOiB2b2lkO1xuICB6b29tSW4oKTogdm9pZDtcbiAgem9vbU91dCgpOiB2b2lkO1xuICBzZXREcmFnTW9kZShtb2RlOiBzdHJpbmcgfCBmYWxzZSk6IHZvaWQ7XG4gIC8qKiBTaG93L2hpZGUgdGhlIG92ZXJ2aWV3IG5hdmlnYXRvciAodGhlIG1pbmltYXApLiBPcGVuU2VhZHJhZ29uIG9ubHkg4oCUIFBsb3RseVxuICAgKiAgbm8tb3BzIGl0IChpdCBoYXMgbm8gbmF2aWdhdG9yKS4gQXBwbGllZCB3aGVuIHRoZSB2aWV3ZXIgaXMgKHJlKWNyZWF0ZWQsIGFuZFxuICAgKiAgdG9nZ2xlZCBsaXZlIHdoZW4gb25lIGlzIGFscmVhZHkgbW91bnRlZC4gKi9cbiAgc2V0TmF2aWdhdG9yVmlzaWJsZSh2aXNpYmxlOiBib29sZWFuKTogdm9pZDtcbiAgLyoqIEltYWdlIHNtb290aGluZyAoYmlsaW5lYXIgaW50ZXJwb2xhdGlvbikuIGBmYWxzZWAgPSBuZWFyZXN0LW5laWdoYm91ciwgc29cbiAgICogIHpvb21pbmcgcGFzdCAxOjEgc2hvd3MgY3Jpc3AgcGl4ZWwgYmxvY2tzIChwaXhlbC1sZXZlbCBpbnNwZWN0aW9uKS5cbiAgICogIE9wZW5TZWFkcmFnb24gb25seSDigJQgUGxvdGx5IG5vLW9wcyBpdC4gQXBwbGllZCBhdCB2aWV3ZXIgY3JlYXRpb24gYW5kIGxpdmVcbiAgICogICh3aXRoIGEgcmVkcmF3KSB3aGVuIG9uZSBpcyBtb3VudGVkLiAqL1xuICBzZXRJbWFnZVNtb290aGluZ0VuYWJsZWQoZW5hYmxlZDogYm9vbGVhbik6IHZvaWQ7XG5cbiAgc2V0U2hvd1N0YWNrKHNob3dzdGFjazogYm9vbGVhbik6IHZvaWQ7XG4gIHNldFpJbmRleCh6SW5kZXg6IG51bWJlcik6IHZvaWQ7XG4gIHNldFN0YWNrTG9hZGluZyhzdGFja0xvYWRpbmc6IGJvb2xlYW4pOiB2b2lkO1xuICBpc1N0YWNrTG9hZGluZygpOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBnZXRTdGFja0xvYWRpbmdQcm9ncmVzcygpOiBPYnNlcnZhYmxlPG51bWJlcj47XG4gIC8qKiBDYW5jZWwgYW55IGluLWZsaWdodCBtdWx0aS1mcmFtZSBsb2FkaW5nICh2b2x1bWUtYXNzZW1ibHkgLyBzdXJmYWNlIHByZWxvYWQpIHNvIGl0IHN0b3BzXG4gICAqICBmZXRjaGluZyBtb3JlIGZyYW1lcyBhbmQgY2xlYXJzIHRoZSBsb2FkaW5nIHN0YXRlLiBPcHRpb25hbCDigJQgb25seSBiYWNrZW5kcyB0aGF0IHN0cmVhbSBhXG4gICAqICB6LXN0YWNrIChuYXBhcmktanMgV2ViR1BVKSBkbyByZWFsIHdvcmsgaGVyZTsgb3RoZXJzIG5vLW9wLiAqL1xuICBjYW5jZWxMb2FkaW5nPygpOiB2b2lkO1xuXG4gIGdldFRydWVJbWFnZVNpemUoKTogeyB3aWR0aDogbnVtYmVyOyBoZWlnaHQ6IG51bWJlciB9IHwgbnVsbDtcbiAgZ2V0Q3VycmVudEltYWdlKCk6IFByb21pc2U8SW1hZ2UgfCBudWxsPjtcbiAgZ2V0RGlzcGxheWVkUGl4ZWxEYXRhKCk6IFBpeGVsRGF0YSB8IG51bGw7XG4gIC8qKlxuICAgKiBUaGUgcmVnaW9uIG9mIHRoZSBvcmlnaW5hbCwgZnVsbC1yZXNvbHV0aW9uIGltYWdlIHRoYXQgdGhlIHBpeGVscyByZXR1cm5lZFxuICAgKiBieSB7QGxpbmsgZ2V0RGlzcGxheWVkUGl4ZWxEYXRhfSBjdXJyZW50bHkgY292ZXIg4oCUIGB7IHgsIHksIHdpZHRoLCBoZWlnaHQgfWBcbiAgICogaW4gZnVsbC1pbWFnZSBwaXhlbCBjb29yZGluYXRlcy4gV2hlbiB6b29tZWQvcGFubmVkIGludG8gYSBzdWItYXJlYSB0aGlzIGlzXG4gICAqIHRoZSBjcm9wJ3Mgb3JpZ2luICsgZXh0ZW50OyB3aGVuIHpvb21lZCBvdXQvcGFubmVkIGJleW9uZCB0aGUgZWRnZXMsIHRoZVxuICAgKiByZWN0YW5nbGUgbWF5IGV4dGVuZCBvdXRzaWRlIHRoZSBpbWFnZSBib3VuZHMgKG1hdGNoaW5nIHRoZSBwaXhlbCByZWFkYmFja1xuICAgKiBjYW52YXMpLiBMZXRzIGEgY29uc3VtZXIgbWFwIGRpc3BsYXllZC1waXhlbCBjb29yZGluYXRlcyBiYWNrIHRvIHRoZSBvcmlnaW5hbFxuICAgKiBpbWFnZSB2aWEgYG9yaWdpbiArIGRpc3BsYXllZFB4ICogKGV4dGVudCAvIGRpc3BsYXllZERpbSlgLiBcbiAgICpcbiAgICogUmV0dXJucyBgbnVsbGAgd2hlbiB0aGUgdmlld3BvcnQgaXNuJ3QgbGFpZCBvdXQgeWV0IG9yIHRoZSBiYWNrZW5kIGNhbid0XG4gICAqIHJlcG9ydCBpdCDigJQgY2FsbGVycyBzaG91bGQgdGhlbiBmYWxsIGJhY2sgdG8gdGhlIGZ1bGwtaW1hZ2Ugc2NhbGUgKHRyZWF0XG4gICAqIHRoZSBkaXNwbGF5ZWQgcGl4ZWxzIGFzIGEgZG93bnNhbXBsZSBvZiB0aGUgd2hvbGUgaW1hZ2UpLlxuICAgKi9cbiAgZ2V0RGlzcGxheWVkU291cmNlUmVjdCgpOiB7IHg6IG51bWJlcjsgeTogbnVtYmVyOyB3aWR0aDogbnVtYmVyOyBoZWlnaHQ6IG51bWJlciB9IHwgbnVsbDtcbiAgZG93bmxvYWRJbWFnZSgpOiB2b2lkO1xuXG4gIHNldFBsb3RUeXBlKHBsb3RUeXBlOiBQbG90VHlwZSk6IHZvaWQ7XG4gIC8qKiBTZXQgdGhlIG5hcGFyaSAzRCBkZWNpbWF0ZSBmYWN0b3IgKDEgPSBmdWxsIOKApiA4ID0g4oWbKS4gT3B0aW9uYWwg4oCUIG9ubHkgdGhlIG5hcGFyaS1qcyBXZWJHUFVcbiAgICogIGJhY2tlbmQgaG9ub3JzIGl0OyBjaGFuZ2luZyBpdCByZS1sb2FkcyB0aGUgY3VycmVudCAzRCBwbG90IGF0IHRoZSBjb2Fyc2VyL2ZpbmVyIHNhbXBsaW5nLiAqL1xuICBzZXRSZXNvbHV0aW9uU2NhbGU/KHNjYWxlOiBudW1iZXIpOiB2b2lkO1xuICAvKiogVGhlIGN1cnJlbnQgbmFwYXJpIDNEIGRlY2ltYXRlIGZhY3RvciAodG8gaW5pdGlhbGl6ZSB0aGUgUmVzb2x1dGlvbiBjb250cm9sKS4gT3B0aW9uYWwuICovXG4gIGdldFJlc29sdXRpb25TY2FsZT8oKTogbnVtYmVyO1xuICAvKiogQGRlcHJlY2F0ZWQgVXNlIGBnZXRTdXJmYWNlM2RDb250cm9scygpYCDigJQgM0Qgc2NlbmUgY29udHJvbHMgb25seSBleGlzdCBvblxuICAgKiAgYSBiYWNrZW5kIHRoYXQgcmVuZGVycyAzRCBwbG90IHR5cGVzOyB0aGlzIG1ldGhvZCBzaWxlbnRseSBuby1vcHMgb24gT1NELiAqL1xuICBzZXRTdXJmYWNlRHJhZ01vZGUobW9kZTogc3RyaW5nKTogdm9pZDtcbiAgLyoqIEBkZXByZWNhdGVkIFVzZSBgZ2V0U3VyZmFjZTNkQ29udHJvbHMoKWAg4oCUIHNlZSB7QGxpbmsgc2V0U3VyZmFjZURyYWdNb2RlfS4gKi9cbiAgcmVzZXRTdXJmYWNlQ2FtZXJhKCk6IHZvaWQ7XG5cbiAgZ2V0QXV0b3NjYWxlRXZlbnQoKTogT2JzZXJ2YWJsZTxhbnk+O1xuXG4gIC8qKiBQbG90IHR5cGVzIHRoaXMgYmFja2VuZCBhZHZlcnRpc2VzIChkcml2ZXMgdGhlIFVJIHNlbGVjdG9yKS4gKi9cbiAgZ2V0UGxvdFR5cGVEZXNjcmlwdG9ycygpOiBQbG90VHlwZURlc2NyaXB0b3JbXTtcblxuICAvKiogSW50ZW5zaXR5IGFsb25nIHRoZSBsaW5lIFJPSXM7IGVtaXRzIHRoZSBmdWxsIHNldCBhcyBhbnkgbGluZSBpcyBhZGRlZCxcbiAgICogIG1vdmVkLCBvciByZW1vdmVkIChQbG90VHlwZS5MSU5FKS4gT25lIGVudHJ5IHBlciBsaW5lIFJPSS4gKi9cbiAgZ2V0SW50ZW5zaXR5UHJvZmlsZSQoKTogT2JzZXJ2YWJsZTxJbnRlbnNpdHlQcm9maWxlW10+O1xuXG4gIC8qKiBSZW5kZXIgdGhlIGZsb2F0aW5nIGludGVuc2l0eS1wcm9maWxlIGluc2V0IGNoYXJ0IGludG8gYGRpdklkYCBmcm9tIHRoZVxuICAgKiAgZ2l2ZW4gcHJvZmlsZXMgKG9uZSB0cmFjZSBwZXIgbGluZSBST0ksIGNvbG91cmVkIHRvIG1hdGNoIGl0cyBsaW5lKS5cbiAgICogIE93bmVkIGJ5IHRoZSBiYWNrZW5kIHNvIGNvbnN1bWVycyBuZXZlciByZWFjaCBhIGNoYXJ0aW5nIGxpYnJhcnkgZGlyZWN0bHkuICovXG4gIHJlbmRlckludGVuc2l0eUluc2V0KGRpdklkOiBzdHJpbmcsIHByb2ZpbGVzOiBJbnRlbnNpdHlQcm9maWxlW10pOiB2b2lkO1xufVxuXG4vKiogUmVnaW9uL3NoYXBlIHN0YXRlOiBDUlVELCBzZWxlY3Rpb24sIGNsYXNzaWZpY2F0aW9uIGNvbG91cnMsIEdlb0pTT04gSS9PLiAqL1xuZXhwb3J0IGludGVyZmFjZSBJUmVnaW9uU3RvcmUge1xuICBzZXRSZWdpb25zKHJlZ2lvbnM6IFJlZ2lvbltdLCBzaG93UmVnaW9uTGFiZWw/OiBib29sZWFuLCBpc1JlZ2lvblNhdmVPbj86IGJvb2xlYW4sXG4gICAgICAgICAgICAgZmlsbENvbG9yPzogc3RyaW5nLCBhcHBlbmQ/OiBib29sZWFuKTogdm9pZDtcbiAgLyoqIEZyYW1ld29yay1uZXV0cmFsIGFjY2Vzc29yIOKAlCB0aGUgY2Fub25pY2FsIHdheSB0byByZWFkIGN1cnJlbnQgcmVnaW9ucy4gKi9cbiAgZ2V0UmVnaW9ucygpOiBSZWdpb25bXTtcbiAgZ2V0UmVnaW9uUG9seWdvbnMoKTogYW55W107XG4gIGdldFJlZ2lvblVwZGF0ZUV2ZW50KCk6IE9ic2VydmFibGU8YW55W10+O1xuXG4gIHNldFNlbGVjdGVkU2hhcGVJbmRpY2VzKGluZGljZXM6IG51bWJlcltdKTogdm9pZDtcbiAgZ2V0U2VsZWN0ZWRTaGFwZUluZGljZXMkKCk6IE9ic2VydmFibGU8bnVtYmVyW10+O1xuICAvKiogU2VsZWN0IGEgc3BlY2lmaWMgcmVnaW9uIChieSBpZGVudGl0eSksIGhpZ2hsaWdodGluZyBpdCBvbiB3aGljaGV2ZXJcbiAgICogIGJhY2tlbmQgaXMgcmVuZGVyaW5nIOKAlCBQbG90bHkgc2V0cyBpdHMgYWN0aXZlLXNoYXBlIGhhbmRsZXMsIE9wZW5TZWFkcmFnb25cbiAgICogIGhpZ2hsaWdodHMgdGhlIFNWRyBlbGVtZW50LiBOby1vcCBpZiB0aGUgcmVnaW9uIGlzbid0IGluIHRoZSBzdG9yZS4gKi9cbiAgc2VsZWN0UmVnaW9uKHJlZ2lvbjogUmVnaW9uKTogdm9pZDtcbiAgZGVsZXRlQWN0aXZlU2hhcGUoKTogdm9pZDtcblxuICBnZXRTaG93U2hhcGVMYWJlbCgpOiBib29sZWFuO1xuICBnZXRTaGFwZUNvbG9yKCk6IHN0cmluZztcbiAgZ2V0RmlsbENvbG9yKCk6IHN0cmluZztcbiAgZ2V0Q2xhc3NpZmljYXRpb25Db2xvcnMoKTogTWFwPHN0cmluZywgc3RyaW5nPjtcbiAgc2V0Q2xhc3NpZmljYXRpb25Db2xvcihsYWJlbDogc3RyaW5nLCBjb2xvcjogc3RyaW5nKTogdm9pZDtcblxuICBwbG90UHJldmlvdXNTaGFwZXMoKTogdm9pZDtcbiAgc2V0UHJldmlvdXNTaGFwZXMoc2hhcGVzOiBhbnlbXSk6IHZvaWQ7XG4gIGdldFByZXZpb3VzU2hhcGVzKCk6IGFueVtdO1xuXG4gIC8qKiBVbmRvIHRoZSBtb3N0IHJlY2VudCByZWdpb24gYWN0aW9uIChqaXQtdWkjODUpLiBSZXN0b3JlcyB0aGUgcmVnaW9uIHNldCB0b1xuICAgKiAgdGhlIHN0YXRlIGJlZm9yZSB0aGF0IGFjdGlvbjsgdXAgdG8gYSBzbWFsbCBmaXhlZCBkZXB0aCAoMTApIGlzIHJldGFpbmVkLFxuICAgKiAgc28gaXQgY2FuIGJlIGludm9rZWQgdXAgdG8gMTAgdGltZXMgaW4gYSByb3cuIE5vLW9wIHdoZW4gbm90aGluZyBpcyBsZWZ0IHRvXG4gICAqICB1bmRvLiAqL1xuICB1bmRvKCk6IHZvaWQ7XG4gIC8qKiBSZS1hcHBseSB0aGUgbW9zdCByZWNlbnRseSB1bmRvbmUgcmVnaW9uIGFjdGlvbi4gTm8tb3Agd2hlbiB0aGVyZSdzXG4gICAqICBub3RoaW5nIHRvIHJlZG8gKGFueSBmcmVzaCByZWdpb24gYWN0aW9uIGNsZWFycyB0aGUgcmVkbyBmdXR1cmUpLiAqL1xuICByZWRvKCk6IHZvaWQ7XG4gIC8qKiBTeW5jaHJvbm91cyByZWFkIG9mIHtAbGluayBnZXRDYW5VbmRvJH0uICovXG4gIGNhblVuZG8oKTogYm9vbGVhbjtcbiAgLyoqIFN5bmNocm9ub3VzIHJlYWQgb2Yge0BsaW5rIGdldENhblJlZG8kfS4gKi9cbiAgY2FuUmVkbygpOiBib29sZWFuO1xuICAvKiogRW1pdHMgd2hldGhlciBhbiB1bmRvIHN0ZXAgaXMgY3VycmVudGx5IGF2YWlsYWJsZSDigJQgZHJpdmVzIHRoZSB0b29sYmFyXG4gICAqICBVbmRvIGJ1dHRvbidzIGVuYWJsZWQgKGdyZXllZC1vdXQpIHN0YXRlLiAqL1xuICBnZXRDYW5VbmRvJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAvKiogRW1pdHMgd2hldGhlciBhIHJlZG8gc3RlcCBpcyBjdXJyZW50bHkgYXZhaWxhYmxlIOKAlCBkcml2ZXMgdGhlIHRvb2xiYXJcbiAgICogIFJlZG8gYnV0dG9uJ3MgZW5hYmxlZCAoZ3JleWVkLW91dCkgc3RhdGUuICovXG4gIGdldENhblJlZG8kKCk6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIC8qKiBDbGVhciB0aGUgdW5kby9yZWRvIGhpc3RvcnkgKGUuZy4gb24gaW1hZ2UgbG9hZC9zd2l0Y2gpLiAqL1xuICByZXNldFVuZG9IaXN0b3J5KCk6IHZvaWQ7XG5cbiAgaW1wb3J0UmVnaW9ucyhnZW9Kc29uU3RyOiBzdHJpbmcpOiBSZWdpb25bXTtcbiAgZXhwb3J0UmVnaW9ucyhyZWdpb25zOiBSZWdpb25bXSk6IHZvaWQ7XG4gIGdldEdlb0pzb25TdHJpbmcocmVnaW9uczogUmVnaW9uW10pOiBzdHJpbmc7XG5cbiAgLyoqIEJlZ2luIGEgcGVyLXNsaWNlIHotc3RhY2sgcmVnaW9uIHNlc3Npb24gKGppdC11aSM5MykuIGBzbGljZXNgIG1hcHMgZWFjaFxuICAgKiAgemVyby1iYXNlZCBzbGljZSBpbmRleCB0byB0aGF0IHNsaWNlJ3MgcmVnaW9uczsgdGhlIHN0b3JlIHNob3dzIGBpbml0aWFsWmBcbiAgICogIGxpdmUgd2hpbGUgaG9sZGluZyB0aGUgcmVzdCwgc28gc2NydWJiaW5nIHN3YXBzIHJlZ2lvbiBzZXRzIGFuZCBlZGl0cyBvbiBhXG4gICAqICBzbGljZSBwZXJzaXN0LiBgc2F2ZUxheW91dGAgcmVjb3JkcyBob3cgdGhlIHN0YWNrIHBlcnNpc3RzIOKAlCBgY29tYmluZWRgXG4gICAqICAob25lIHotaW5kZXhlZCBnZW9qc29uLCBzaW5nbGUtZmlsZSB6LXN0YWNrKSBvciBgcGVyLXNsaWNlLWZpbGVgIChmb2xkZXJcbiAgICogIHN0YWNrKS4gU2VlIHtAbGluayBzZXREaXNwbGF5U2xpY2V9LCB7QGxpbmsgZ2V0U2xpY2VSZWdpb25zfS4gKi9cbiAgZW50ZXJTdGFja01vZGUoc2xpY2VzOiBNYXA8bnVtYmVyLCBSZWdpb25bXT4sIGluaXRpYWxaPzogbnVtYmVyLFxuICAgICAgICAgICAgICAgICBzYXZlTGF5b3V0PzogJ2NvbWJpbmVkJyB8ICdwZXItc2xpY2UtZmlsZScpOiB2b2lkO1xuICAvKiogRW5kIHRoZSBwZXItc2xpY2Ugc2Vzc2lvbiAoc2luZ2xlLXBsYW5lIGltYWdlLCBvciB0aGUgc3RhY2sgd2FzIGNsb3NlZCkuICovXG4gIGV4aXRTdGFja01vZGUoKTogdm9pZDtcbiAgLyoqIFRydWUgd2hpbGUgYSBwZXItc2xpY2Ugei1zdGFjayBzZXNzaW9uIGlzIGFjdGl2ZS4gKi9cbiAgaXNTdGFja01vZGUoKTogYm9vbGVhbjtcbiAgLyoqIEhvdyB0aGUgY3VycmVudCBzdGFjayBwZXJzaXN0cyB0byBkaXNrIChqaXQtdWkjOTMpLiAqL1xuICBnZXRTdGFja1NhdmVMYXlvdXQoKTogJ2NvbWJpbmVkJyB8ICdwZXItc2xpY2UtZmlsZSc7XG4gIC8qKiBTd2FwIHRoZSBsaXZlIHJlZ2lvbiBzZXQgdG8gc2xpY2UgYHpgIChzdGFjayBtb2RlIG9ubHkpLCBjYXB0dXJpbmcgdGhlXG4gICAqICBjdXJyZW50IHNsaWNlJ3MgZWRpdHMgZmlyc3QuIENhbGxlZCBvbiBldmVyeSBjb21taXR0ZWQgc2xpY2Ugc2NydWIuICovXG4gIHNldERpc3BsYXlTbGljZSh6OiBudW1iZXIpOiB2b2lkO1xuICAvKiogRXZlcnkgc2xpY2UncyByZWdpb25zIGZvciBzYXZlL2V4cG9ydCwgZWFjaCB0YWdnZWQgd2l0aCBpdHMgemVyby1iYXNlZFxuICAgKiAge0BsaW5rIFJlZ2lvbi56fTsgdGhlIGZsYXQgc2V0IG91dHNpZGUgc3RhY2sgbW9kZS4gKi9cbiAgZ2V0U2xpY2VSZWdpb25zKCk6IFJlZ2lvbltdO1xuICAvKiogU2xpY2VzIHRvIHdyaXRlIG9uIGEgcGVyLXNsaWNlLWZpbGUgc2F2ZSAoZm9sZGVyIHN0YWNrLCBqaXQtdWkjOTMpOiBlYWNoXG4gICAqICBzbGljZSB3aXRoIHJlZ2lvbnMsIHBsdXMgc2xpY2VzIGNsZWFyZWQgc2luY2UgbG9hZCAoZW1wdHksIHRvIG92ZXJ3cml0ZSkuXG4gICAqICBLZXllZCBieSB6ZXJvLWJhc2VkIHNsaWNlIGluZGV4OyByZWdpb25zIHRhZ2dlZCB3aXRoIHRoZWlyIHouICovXG4gIGdldFN0YWNrU2F2ZVNsaWNlcygpOiBNYXA8bnVtYmVyLCBSZWdpb25bXT47XG59XG5cbi8qKiBPbi1jYW52YXMgdG9vbCBtb2RlcyAod2FuZCwgYnJ1c2gsIHZlcnRleCBlcmFzZXIsIHpvb20tdG8tYm94KS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVRvb2xDb250cm9sbGVyIHtcbiAgc2V0V2FuZE1vZGUoYWN0aXZlOiBib29sZWFuLCBvcHRpb25zPzogSVdhbmRPcHRpb25zKTogdm9pZDtcbiAgc2V0V2FuZE9wdGlvbnMob3B0aW9uczogSVdhbmRPcHRpb25zKTogdm9pZDtcbiAgY2xlYXJBY3RpdmVXYW5kUmVnaW9uKCk6IHZvaWQ7XG4gIC8qKiBCcnVzaCByZWdpb24gdG9vbC4gYHNpemVgIChtYXRyaXgtcGl4ZWwgZGlhbWV0ZXIpIHNpemVzIHRoZSBwYWludGVkIGRpc2MuICovXG4gIHNldEJydXNoTW9kZShhY3RpdmU6IGJvb2xlYW4sIG9wdGlvbnM/OiBJQnJ1c2hPcHRpb25zKTogdm9pZDtcbiAgc2V0QnJ1c2hPcHRpb25zKG9wdGlvbnM6IElCcnVzaE9wdGlvbnMpOiB2b2lkO1xuICBzZXRWZXJ0ZXhFcmFzZXJNb2RlKGFjdGl2ZTogYm9vbGVhbik6IHZvaWQ7XG4gIHNldFZlcnRleEVyYXNlclJhZGl1cyhyYWRpdXM6IG51bWJlcik6IHZvaWQ7XG4gIHNldFpvb21Ub0JveE1vZGUoYWN0aXZlOiBib29sZWFuKTogdm9pZDtcbiAgLyoqIEJveC1wcm9tcHRlZCBTQU0gc2VnbWVudGF0aW9uOiBzZWdtZW50IGV2ZXJ5IHJlY3RhbmdsZSByZWdpb24gaW50byBtYXNrcy5cbiAgICogIFJldHVybnMgdGhlIG51bWJlciBvZiBtYXNrIHJlZ2lvbnMgYWRkZWQuIChqaXQtdWkjOTApICovXG4gIHNlZ21lbnRSZWN0YW5nbGVzKCk6IFByb21pc2U8bnVtYmVyPjtcbiAgLyoqIENlbGxwb3NlLW9uLWNyb3A6IGNsaWVudCBzbGlkZS1jcm9wIGVhY2ggcmVjdGFuZ2xlIGFuZCBzZWdtZW50IGNlbGxzIGluIGl0XG4gICAqICAoY2VsbHBvc2UtU0FNIHZpYSB0aGUgaG9zdCdzIENFTExfU0VHTUVOVEVSKS4gUmV0dXJucyByZWdpb25zIGFkZGVkLiAqL1xuICBzZWdtZW50UmVjdGFuZ2xlc0NlbGxwb3NlKCk6IFByb21pc2U8bnVtYmVyPjtcbiAgLyoqIENob29zZSB0aGUgcmVnaXN0ZXJlZCBTQU0gbW9kZWwgdGhlIHNlZ21lbnQgdG9vbHMgdXNlIChqaXQtdWkjOTAgUDEpLiAqL1xuICBzZXRTYW1Nb2RlbChpZDogc3RyaW5nKTogdm9pZDtcbiAgLyoqIFRvZ2dsZSB0aGUgaW50ZXJhY3RpdmUgU0FNIHBvaW50LXByb21wdCB0b29sIChjbGljayA9ICtwb2ludCwgU2hpZnQgPSAtKS4gKi9cbiAgc2V0U2FtUG9pbnRNb2RlKGFjdGl2ZTogYm9vbGVhbik6IHZvaWQ7XG4gIC8qKiBGaW5hbGlzZSAvIGRpc2NhcmQgdGhlIGluLXByb2dyZXNzIFNBTSBwb2ludCBvYmplY3QuICovXG4gIGNvbW1pdFNhbVBvaW50cygpOiB2b2lkO1xuICBjbGVhclNhbVBvaW50cygpOiB2b2lkO1xufVxuXG4vKipcbiAqIENvbnRyb2xzIHNwZWNpZmljIHRvIHRoZSBJU09TVVJGQUNFIHBsb3QgdHlwZS4gT3B0aW9uYWwgYW5kIGNhcGFiaWxpdHktZ2F0ZWRcbiAqIChgVmlld2VyRmVhdHVyZS5Jc29zdXJmYWNlYCk6IG9ubHkgYSBiYWNrZW5kIHRoYXQgcmVuZGVycyBpc29zdXJmYWNlcyBleHBvc2VzXG4gKiBpdCwgdmlhIGBJVmlzdWFsaXplci5nZXRJc29zdXJmYWNlQ29udHJvbHMoKWAuIEtlcHQgb2ZmIHRoZSBhbHdheXMtb25cbiAqIGNvbnRyYWN0IHNvIGNvbnN1bWVycyBuZXZlciBjYWxsIGEgY29udHJvbCB0aGF0J3MgbWVhbmluZ2xlc3MgZm9yIHRoZSBjdXJyZW50XG4gKiBwbG90IHR5cGUgLyBiYWNrZW5kLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElJc29zdXJmYWNlQ29udHJvbHMge1xuICAvKiogTGl2ZS11cGRhdGUgdGhlIGlzb3N1cmZhY2UgaW50ZW5zaXR5IGJhbmQgW2lzb21pbiwgaXNvbWF4XSBvdmVyIDDigJMyNTUuICovXG4gIHNldElzb1JhbmdlKGlzb01pbjogbnVtYmVyLCBpc29NYXg6IG51bWJlcik6IHZvaWQ7XG59XG5cbi8qKlxuICogQ29udHJvbHMgc3BlY2lmaWMgdG8gdGhlIDNEIHBsb3QgdHlwZXMgKFNVUkZBQ0UgLyBTQ0FUVEVSM0QgLyBJU09TVVJGQUNFXG4gKiBzY2VuZXMpLiBDYXBhYmlsaXR5LWdhdGVkIGxpa2Uge0BsaW5rIElJc29zdXJmYWNlQ29udHJvbHN9OiBvbmx5IGEgYmFja2VuZFxuICogdGhhdCByZW5kZXJzIDNEIHNjZW5lcyBleHBvc2VzIGl0LCB2aWEgYElWaXN1YWxpemVyLmdldFN1cmZhY2UzZENvbnRyb2xzKClgIOKAlFxuICogdGhlIGRlcHJlY2F0ZWQgdG9wLWxldmVsIGBzZXRTdXJmYWNlRHJhZ01vZGVgL2ByZXNldFN1cmZhY2VDYW1lcmFgIHNpbGVudGx5XG4gKiBuby1vcCBvbiAyRC1vbmx5IGJhY2tlbmRzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElTdXJmYWNlM2RDb250cm9scyB7XG4gIC8qKiBTd2l0Y2ggdGhlIDNEIHNjZW5lIGludGVyYWN0aW9uIG1vZGUgKG9yYml0IC8gdHVybnRhYmxlIC8gcGFuIC8gem9vbSkuICovXG4gIHNldFN1cmZhY2VEcmFnTW9kZShtb2RlOiBzdHJpbmcpOiB2b2lkO1xuICAvKiogUmVzZXQgdGhlIDNEIHNjZW5lIGNhbWVyYSB0byBpdHMgZGVmYXVsdCBleWUgcG9zaXRpb24uICovXG4gIHJlc2V0U3VyZmFjZUNhbWVyYSgpOiB2b2lkO1xuICAvKiogVG9nZ2xlIHRoZSAzRCBjb29yZGluYXRlLWF4ZXMgLyBzY2FsZSBnaXptbyBvbi9vZmYuIE9wdGlvbmFsIOKAlCBvbmx5IHRoZSBuYXBhcmktanMgV2ViR1BVXG4gICAqICB2b2x1bWUvaXNvc3VyZmFjZSBiYWNrZW5kIHJlbmRlcnMgb25lIChqaXQtdWkjMTAyKS4gKi9cbiAgc2V0QXhlc1Zpc2libGU/KHZpc2libGU6IGJvb2xlYW4pOiB2b2lkO1xuICAvKiogV2hldGhlciB0aGUgYXhlcyBnaXptbyBpcyBjdXJyZW50bHkgc2hvd24gKGZvciBpbml0aWFsaXppbmcgdGhlIHRvZ2dsZSBVSSkuIE9wdGlvbmFsLiAqL1xuICBheGVzVmlzaWJsZT8oKTogYm9vbGVhbjtcbiAgLyoqIFJlbmRlciB0aGUgc3VyZmFjZSBhcyBhIHdpcmVmcmFtZSAoZWRnZXMpIGluc3RlYWQgb2YgYSBmaWxsZWQgc3VyZmFjZS4gT3B0aW9uYWwg4oCUIG9ubHkgdGhlXG4gICAqICBuYXBhcmktanMgV2ViR1BVIHN1cmZhY2UgYmFja2VuZCBzdXBwb3J0cyBpdCAoaml0LXVpIzEwMikuICovXG4gIHNldFdpcmVmcmFtZT8ob246IGJvb2xlYW4pOiB2b2lkO1xuICAvKiogV2hldGhlciB0aGUgc3VyZmFjZSBpcyBjdXJyZW50bHkgZHJhd24gYXMgYSB3aXJlZnJhbWUgKGZvciBpbml0aWFsaXppbmcgdGhlIHRvZ2dsZSBVSSkuICovXG4gIHdpcmVmcmFtZT8oKTogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBDb250cm9scyBzcGVjaWZpYyB0byB0aGUgTElORSAoaW50ZW5zaXR5LXByb2ZpbGUpIHBsb3QgdHlwZS4gQ2FwYWJpbGl0eS1nYXRlZFxuICogbGlrZSB7QGxpbmsgSUlzb3N1cmZhY2VDb250cm9sc306IG9ubHkgYSBiYWNrZW5kIHRoYXQgcmVuZGVycyB0aGUgbGluZS1ST0kgL1xuICogaW5zZXQgZXhwb3NlcyBpdCwgdmlhIGBJVmlzdWFsaXplci5nZXRJbnRlbnNpdHlDb250cm9scygpYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJSW50ZW5zaXR5Q29udHJvbHMge1xuICAvKiogQWRkIGFub3RoZXIgbGluZSBST0kgKG5leHQgYnJpZ2h0IHBhbGV0dGUgY29sb3VyKSBhbmQgaXRzIGluc2V0IHRyYWNlLlxuICAgKiAgUmV0dXJucyB0aGUgY3JlYXRlZCByZWdpb24gc28gdGhlIGNhbGxlciBjYW4gc2VsZWN0IGl0IG9uIHRoZSBhY3RpdmVcbiAgICogIGJhY2tlbmQsIG9yIG51bGwgaWYgbm8gaW1hZ2UgZXh0ZW50IGlzIGtub3duIHlldC4gKi9cbiAgYWRkUHJvZmlsZUxpbmUoKTogUmVnaW9uIHwgbnVsbDtcbn1cblxuLyoqIEEgY2F0ZWdvcmljYWwgY29sdW1uIHJlc29sdmVkIGZvciBjaGFydGluZzogbGFiZWxzLCBjb2RlcyBhbmQgbWFwIGNvbG91cnMuICovXG5leHBvcnQgaW50ZXJmYWNlIFNwYXRpYWxDYXRlZ29yaWNhbFZpZXcge1xuICBuYW1lOiBzdHJpbmc7XG4gIGNhdGVnb3JpZXM6IHN0cmluZ1tdO1xuICAvKiogYCNycmdnYmJgIHBlciBjYXRlZ29yeSwgaW5kZXgtYWxpZ25lZCB3aXRoIHtAbGluayBjYXRlZ29yaWVzfS4gKi9cbiAgY29sb3JzOiBzdHJpbmdbXTtcbiAgLyoqIFBlci1vYnNlcnZhdGlvbiBjYXRlZ29yeSBpbmRleCwgb3IgYE5PX0NBVEVHT1JZYC4gKi9cbiAgY29kZXM6IFVpbnQxNkFycmF5O1xufVxuXG4vKipcbiAqIENvbnRyb2xzIGZvciB0aGUgU1BBVElBTF9PTUlDUyBwbG90IHR5cGU6IHdoYXQgdGhlIG9ic2VydmF0aW9uIG1hcmtlcnMgYXJlXG4gKiBjb2xvdXJlZCBieSwgYW5kIGhvdyB0aGV5IGFyZSBkcmF3bi4gQ2FwYWJpbGl0eS1nYXRlZCBsaWtlXG4gKiB7QGxpbmsgSUlzb3N1cmZhY2VDb250cm9sc30g4oCUIGBnZXRTcGF0aWFsQ29udHJvbHMoKWAgcmV0dXJucyBudWxsIHVubGVzcyBhXG4gKiBob3N0IGhhcyBib3VuZCBgU1BBVElBTF9EQVRBX1BPUlRgLlxuICpcbiAqIFRoZSB2aWV3IHN0YXRlIGlzIGJhY2tlbmQtbmV1dHJhbCAoaXQgbGl2ZXMgaW4gdGhlIHNoYXJlZCBzdG9yZSwgbGlrZSB0aGVcbiAqIGNvbG9ybWFwKSwgc28gdGhlc2UgY29udHJvbHMgd29yayB3aGljaGV2ZXIgYmFja2VuZCBpcyBvbiBzY3JlZW4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVNwYXRpYWxDb250cm9scyB7XG4gIC8qKiBUaGUgZGF0YXNldCBiZWluZyB2aXN1YWxpemVkLCBvciBudWxsLiBEcml2ZXMgdGhlIGNvbHVtbi9nZW5lIHBpY2tlcnMgYW5kXG4gICAqICB0aGUgbGVnZW5kLiAqL1xuICBnZXREYXRhc2V0JCgpOiBPYnNlcnZhYmxlPFNwYXRpYWxEYXRhc2V0IHwgbnVsbD47XG4gIC8qKiBDdXJyZW50IGRpc3BsYXkgc3RhdGUgKGNvbG91ciBzb3VyY2UsIHBvaW50IHNjYWxlLCBvcGFjaXR5LCBzY2FsaW5nKS4gKi9cbiAgZ2V0Vmlld1N0YXRlJCgpOiBPYnNlcnZhYmxlPFNwYXRpYWxWaWV3U3RhdGU+O1xuICAvKiogU3luY2hyb25vdXMgcmVhZCwgZm9yIHNlZWRpbmcgYSBjb250cm9sJ3MgaW5pdGlhbCB2YWx1ZS4gKi9cbiAgdmlld1N0YXRlKCk6IFNwYXRpYWxWaWV3U3RhdGU7XG4gIC8qKiBQYXRjaCB0aGUgZGlzcGxheSBzdGF0ZTsgdGhlIG1hcmtlcnMgcmVidWlsZCB3aXRob3V0IHJlbW91bnRpbmcgdGhlIHNjZW5lLiAqL1xuICBzZXRWaWV3U3RhdGUocGFydGlhbDogUGFydGlhbDxTcGF0aWFsVmlld1N0YXRlPik6IHZvaWQ7XG4gIC8qKiBDb2xvdXIgYnkgYW4gYW5ub3RhdGlvbiBjb2x1bW4uIFJlamVjdHMgZm9yIGFuIHVua25vd24gY29sdW1uLiAqL1xuICBjb2xvckJ5Q29sdW1uKG5hbWU6IHN0cmluZyk6IHZvaWQ7XG4gIC8qKiBDb2xvdXIgYnkgYSBnZW5lOyBpdHMgdmVjdG9yIGlzIGZldGNoZWQgb24gZGVtYW5kLiAqL1xuICBjb2xvckJ5RmVhdHVyZShuYW1lOiBzdHJpbmcpOiB2b2lkO1xuICAvKiogQ2xlYXIgdGhlIGNvbG91ciBzb3VyY2Ug4oCUIGV2ZXJ5IG9ic2VydmF0aW9uIHJlbmRlcnMgaW4gb25lIG5ldXRyYWwgY29sb3VyLiAqL1xuICBjbGVhckNvbG9yQnkoKTogdm9pZDtcbiAgLyoqIFR5cGVhaGVhZCBvdmVyIGZlYXR1cmUgbmFtZXMsIGZvciBkYXRhc2V0cyB0b28gd2lkZSB0byBpbmxpbmUgdGhlIGxpc3QuICovXG4gIHNlYXJjaEZlYXR1cmVzKHF1ZXJ5OiBzdHJpbmcsIGxpbWl0PzogbnVtYmVyKTogUHJvbWlzZTxzdHJpbmdbXT47XG4gIC8qKiBQZXItY2F0ZWdvcnkgZGlzcGxheSBjb2xvdXJzIGZvciBhIGNhdGVnb3JpY2FsIGNvbHVtbiwgaW5kZXgtYWxpZ25lZCB3aXRoXG4gICAqICBpdHMgYGNhdGVnb3JpZXNgIOKAlCB0aGUgbGVnZW5kJ3Mgc3dhdGNoZXMsIHJlc29sdmVkIHRoZSBzYW1lIHdheSB0aGVcbiAgICogIHJlbmRlcmVyIHJlc29sdmVzIHRoZW0gc28gdGhlIHR3byBjYW5ub3QgZGlzYWdyZWUuICovXG4gIGNhdGVnb3J5Q29sb3JzKG5hbWU6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nW10+O1xuXG4gIC8vIOKUgOKUgCB2YWx1ZXMsIGZvciB0aGUgMS1EIGNoYXJ0cyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgLyoqXG4gICAqIFRoZSB2YWx1ZXMgYmVoaW5kIGEgY29sb3VyIHNvdXJjZSwgaW5kZXgtYWxpZ25lZCB3aXRoIHRoZSBvYnNlcnZhdGlvbnMuXG4gICAqIFJlamVjdHMgZm9yIGEgY2F0ZWdvcmljYWwgY29sdW1uIOKAlCB0aGVyZSBpcyBub3RoaW5nIGNvbnRpbnVvdXMgdG8gY2hhcnQuXG4gICAqL1xuICBjb250aW51b3VzVmFsdWVzKHNvdXJjZTogU3BhdGlhbENvbG9yQnkpOiBQcm9taXNlPEZsb2F0MzJBcnJheT47XG4gIC8qKlxuICAgKiBBIGNhdGVnb3JpY2FsIGNvbHVtbidzIGNhdGVnb3JpZXMsIHBlci1vYnNlcnZhdGlvbiBjb2RlcyBhbmQgZGlzcGxheVxuICAgKiBjb2xvdXJzIOKAlCBldmVyeXRoaW5nIGEgZ3JvdXBlZCB2aW9saW4vYm94IG5lZWRzLCB3aXRoIHRoZSBjb2xvdXJzIHJlc29sdmVkXG4gICAqIHRoZSBzYW1lIHdheSB0aGUgbWFwIHJlc29sdmVzIHRoZW0uXG4gICAqL1xuICBjYXRlZ29yaWNhbFZpZXcoY29sdW1uOiBzdHJpbmcpOiBQcm9taXNlPFNwYXRpYWxDYXRlZ29yaWNhbFZpZXc+O1xuXG4gIC8qKlxuICAgKiBPbmUgZW1iZWRkaW5nJ3MgY29vcmRpbmF0ZXMg4oCUIGEgVU1BUCwgdC1TTkUgb3IgUENBIHBsYW5lIG92ZXIgdGhlIHNhbWUgb2JzZXJ2YXRpb25zLlxuICAgKlxuICAgKiBPcHRpb25hbCwgYW5kIGFic2VudCB3aGVuIHRoZSBkYXRhIHNvdXJjZSBzZXJ2ZXMgbm9uZTogYFNwYXRpYWxEYXRhUG9ydC5nZXRFbWJlZGRpbmdgXG4gICAqIGlzIGl0c2VsZiBvcHRpb25hbCwgc28gYSBwYW5lbCBtdXN0IGJlIGFibGUgdG8gYXNrIHdoZXRoZXIgdGhpcyBleGlzdHMgcmF0aGVyIHRoYW5cbiAgICogY2FsbGluZyBpdCBhbmQgY2F0Y2hpbmcuXG4gICAqL1xuICBnZXRFbWJlZGRpbmc/KG5hbWU6IHN0cmluZyk6IFByb21pc2U8U3BhdGlhbEVtYmVkZGluZz47XG4gIC8qKiBOYW1lcyBvZiB0aGUgY2F0ZWdvcmljYWwgY29sdW1ucyBhdmFpbGFibGUgdG8gZ3JvdXAgYnkuICovXG4gIGNhdGVnb3JpY2FsQ29sdW1ucygpOiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIFRoZSB6IHBvc2l0aW9ucyBvZiB0aGUgc2VjdGlvbnMgdGhlIGRhdGFzZXQgd2FzIGltYWdlZCBhdCwgYXNjZW5kaW5nIOKAlCBvclxuICAgKiBudWxsIHdoZW4gaXRzIHogaXMgY29udGludW91cyByYXRoZXIgdGhhbiBzZWN0aW9uZWQgKHNvIHRoZXJlIGFyZSBubyBzZWN0aW9uc1xuICAgKiB0byBvZmZlcikgb3Igd2hlbiB0aGVyZSBpcyBubyBkYXRhc2V0LlxuICAgKlxuICAgKiBMZXRzIGEgcGFuZWwgb2ZmZXIgXCJvbmUgc2VjdGlvbiBhdCBhIHRpbWVcIiBmb3IgdGhlIDNEIGNsb3VkIG9ubHkgd2hlcmUgdGhhdFxuICAgKiBtZWFucyBzb21ldGhpbmcsIGFuZCBsYWJlbCB0aGUgY2hvc2VuIG9uZS4gU2Nhbm5lZCBvbmNlIHBlciBkYXRhc2V0LlxuICAgKi9cbiAgc2FtcGxlZFNlY3Rpb25zKCk6IEZsb2F0MzJBcnJheSB8IG51bGw7XG5cbiAgLy8g4pSA4pSAIHNlbGVjdGlvbiDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgLyoqIFRoZSBjdXJyZW50IHNlbGVjdGlvbi4gRW1wdHkgbWVhbnMgXCJub3RoaW5nIHNlbGVjdGVkXCIsIGluIHdoaWNoIGNhc2UgdGhlXG4gICAqICB3aG9sZSB0aXNzdWUgcmVuZGVycyBub3JtYWxseSByYXRoZXIgdGhhbiBldmVyeXRoaW5nIGJlaW5nIG11dGVkLiAqL1xuICBnZXRTZWxlY3Rpb24kKCk6IE9ic2VydmFibGU8U3BhdGlhbFNlbGVjdGlvbk1hc2s+O1xuICAvKipcbiAgICogU2VsZWN0IGV2ZXJ5IG9ic2VydmF0aW9uIGluc2lkZSB0aGUgY3VycmVudGx5LWRyYXduIHJlZ2lvbnMgKHRoZWlyIHVuaW9uKS5cbiAgICogUmV1c2VzIHRoZSBleGlzdGluZyBST0kgdG9vbHMg4oCUIHJlY3RhbmdsZSwgcG9seWdvbiwgZnJlZWhhbmQsIHdhbmQsIGJydXNoIOKAlFxuICAgKiBzbyB0aGVyZSBpcyBubyBzZXBhcmF0ZSBtYXJxdWVlIHRvIGxlYXJuLiBSZXR1cm5zIGhvdyBtYW55IHdlcmUgc2VsZWN0ZWQuXG4gICAqL1xuICBzZWxlY3RGcm9tUmVnaW9ucygpOiBudW1iZXI7XG4gIC8qKiBTZWxlY3QgZXZlcnkgb2JzZXJ2YXRpb24gaW4gb25lIGNhdGVnb3J5IG9mIGEgY2F0ZWdvcmljYWwgY29sdW1uIOKAlCB0aGVcbiAgICogIGxlZ2VuZCBjbGljay4gUmVqZWN0cyBmb3IgYW4gdW5rbm93biBvciBjb250aW51b3VzIGNvbHVtbi4gKi9cbiAgc2VsZWN0Q2F0ZWdvcnkoY29sdW1uOiBzdHJpbmcsIGNhdGVnb3J5SW5kZXg6IG51bWJlcik6IFByb21pc2U8bnVtYmVyPjtcblxuICAvKipcbiAgICogU2VsZWN0IGFuIGV4cGxpY2l0IHNldCBvZiBvYnNlcnZhdGlvbnMsIHJlcGxhY2luZyBhbnkgY3VycmVudCBzZWxlY3Rpb24uXG4gICAqXG4gICAqIEZvciBhIGxpbmtlZCBwbG90OiBsYXNzb2luZyBwb2ludHMgaW4gYW4gZW1iZWRkaW5nIGlzIGEgc2VsZWN0aW9uIE9GIG9ic2VydmF0aW9ucyxcbiAgICogYW5kIGV2ZXJ5IG90aGVyIHZpZXcg4oCUIHRoZSBtYXAsIHRoZSBkaXN0cmlidXRpb25zIOKAlCByZWFkcyB0aGUgc2FtZSBtYXNrLCBzbyBicnVzaGluZ1xuICAgKiBvbmUgbGlnaHRzIHVwIHRoZSByZXN0LiBSZXR1cm5zIGhvdyBtYW55IHdlcmUgc2VsZWN0ZWQuXG4gICAqL1xuICBzZWxlY3RJbmRpY2VzKGluZGljZXM6IEl0ZXJhYmxlPG51bWJlcj4pOiBudW1iZXI7XG4gIGNsZWFyU2VsZWN0aW9uKCk6IHZvaWQ7XG59XG5cbi8qKiBEaXNwbGF5IG9wdGlvbnMgKGNvbG9ybWFwL0xVVCwgcmV2ZXJzZSBzY2FsZSwgaW1hZ2UgbWV0YWRhdGEpLiAqL1xuZXhwb3J0IGludGVyZmFjZSBJRGlzcGxheU9wdGlvbnMge1xuICBnZXRDb2xvcm1hcCgpOiBPYnNlcnZhYmxlPENvbG9ybWFwTm9kZSB8IG51bGw+O1xuICBzZXRDb2xvcm1hcChjb2xvcm1hcDogQ29sb3JtYXBOb2RlKTogdm9pZDtcbiAgZ2V0Q29sb3JtYXBPcHRpb25zKCk6IENvbG9ybWFwTm9kZVtdO1xuICBnZXRSZXZlcnNlU2NhbGUoKTogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgc2V0UmV2ZXJzZVNjYWxlKHJldmVyc2NhbGU6IGFueSk6IHZvaWQ7XG4gIHNldEltYWdlTWV0YShpbWFnZU1ldGE6IElJbWFnZU1ldGFkYXRhW10pOiB2b2lkO1xuICBnZXRJbWFnZU1ldGEoKTogT2JzZXJ2YWJsZTxJSW1hZ2VNZXRhZGF0YVtdPjtcbn1cblxuLyoqXG4gKiBJbnRlbnNpdHktcHJvZmlsZSBzYW1wbGluZyAoUGxvdFR5cGUuTElORSkuIFRoZSBzYW1wbGluZyAqc291cmNlKiBsaXZlcyBpbiB0aGVcbiAqIFBsb3RseSBiYWNrZW5kIChpdCBvd25zIHBpeGVsIHJlYWRiYWNrKTsgT3BlblNlYWRyYWdvbiBjb250cmlidXRlcyBvbmx5IHRoZVxuICogdmlld3BvcnQtY2hhbmdlIHNpZ25hbCB0aGF0IGRyaXZlcyByZS1zYW1wbGluZyBhdCB0aGUgY3VycmVudCB6b29tLiBFYWNoXG4gKiBiYWNrZW5kIGltcGxlbWVudHMgdGhlIHBhcnQgaXQgb3ducyBhbmQgbm8tb3BzIHRoZSByZXN0IOKAlCBtaXJyb3JpbmcgdGhlXG4gKiBkZXByZWNhdGVkIG5vLW9wIHBhdHRlcm4gb24ge0BsaW5rIElEYXRhUmVuZGVyZXJ9IOKAlCBzbyB0aGUgY29udHJhY3QgaXMgdW5pZm9ybVxuICogYW5kIGEgY29uc3VtZXIgY2FuIGRlcGVuZCBvbiBgSVZpc3VhbGl6ZXJgIGFsb25lIChubyBjb25jcmV0ZS10eXBlIHJlYWNoLWluKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJSW50ZW5zaXR5U2FtcGxpbmcge1xuICAvKiogUG9wdWxhdGUgdGhlIGludGVuc2l0eS1zYW1wbGluZyBjYWNoZSBmb3IgdGhlIGN1cnJlbnQgaW1hZ2Uvc2xpY2Ugc28gdGhlXG4gICAqICBsaW5lLVJPSSBwcm9maWxlcyBoYXZlIHBpeGVsIGRhdGEuIFJlYWwgb24gUGxvdGx5OyBuby1vcCBvbiBPU0QuICovXG4gIGVuc3VyZUludGVuc2l0eVNhbXBsaW5nKGltYWdlSW5mbzogSUltYWdlSW5mbywgekluZGV4OiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+O1xuICAvKiogUmUtc2FtcGxlIHRoZSBwcm9maWxlcyBmcm9tIGEgZnJlc2ggY3JvcCBvZiB0aGUgZ2l2ZW4gaW1hZ2UtcGl4ZWwgUk9JIGF0XG4gICAqICBkaXNwbGF5IHJlc29sdXRpb24uIFJlYWwgb24gUGxvdGx5OyBuby1vcCBvbiBPU0QuICovXG4gIHJlZnJlc2hJbnRlbnNpdHlTYW1wbGluZ0ZvclJvaSh4OiBudW1iZXIsIHk6IG51bWJlciwgd2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6SW5kZXg6IG51bWJlcik6IHZvaWQ7XG4gIC8qKiBWaXNpYmxlLXJlZ2lvbiBjaGFuZ2VzIChpbWFnZS1waXhlbCBjb29yZHMpLCBlbWl0dGVkIHdoZW4gdGhlIHZpZXcgc2V0dGxlcyxcbiAgICogIHNvIHRoZSBpbnNldCBjYW4gcmUtc2FtcGxlIGF0IHRoZSBjdXJyZW50IHpvb20uIFJlYWwgb24gT1NEOyBlbXB0eSBvbiBQbG90bHlcbiAgICogIChpdHMgaGlnaC1kZWYgem9vbSB1cGRhdGVzIHRoZSBzYW1wbGluZyBjYWNoZSBpbmxpbmUgaW5zdGVhZCkuICovXG4gIGdldFZpZXdwb3J0Q2hhbmdlJCgpOiBPYnNlcnZhYmxlPHsgeDogbnVtYmVyOyB5OiBudW1iZXI7IHdpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyIH0+O1xufVxuXG4vKiogQ29tcG9zaXRlIGNvbnRyYWN0IGEgdmlzdWFsaXphdGlvbiBiYWNrZW5kIGltcGxlbWVudHMuICovXG5leHBvcnQgaW50ZXJmYWNlIElWaXN1YWxpemVyIGV4dGVuZHMgSURhdGFSZW5kZXJlciwgSVJlZ2lvblN0b3JlLCBJVG9vbENvbnRyb2xsZXIsIElEaXNwbGF5T3B0aW9ucyxcbiAgSUludGVuc2l0eVNhbXBsaW5nIHtcbiAgcmVhZG9ubHkgY2FwYWJpbGl0aWVzOiBWaWV3ZXJDYXBhYmlsaXRpZXM7XG4gIC8qKiBUaGlzIGJhY2tlbmQncyByZWdpb24gcmVuZGVyZXIuIE1heSBiZSBudWxsIHVudGlsIGEgcGxvdCBpcyBtb3VudGVkXG4gICAqICAoT3BlblNlYWRyYWdvbikuIERyaXZlcyByZWdpb24gZHJhdy9zZWxlY3QgbW9kZXMgdW5pZm9ybWx5LiAqL1xuICBnZXRSZWdpb25PdmVybGF5KCk6IElSZWdpb25PdmVybGF5IHwgbnVsbDtcbiAgLyoqIElzb3N1cmZhY2UgY29udHJvbHMgd2hlbiB0aGlzIGJhY2tlbmQgYWR2ZXJ0aXNlcyBgVmlld2VyRmVhdHVyZS5Jc29zdXJmYWNlYCxcbiAgICogIGVsc2UgbnVsbCDigJQgc28gY29uc3VtZXJzIGdhdGUgb24gdGhlIHJldHVybmVkIG9iamVjdCwgbm90IGEgbm8tb3AgbWV0aG9kLiAqL1xuICBnZXRJc29zdXJmYWNlQ29udHJvbHMoKTogSUlzb3N1cmZhY2VDb250cm9scyB8IG51bGw7XG4gIC8qKiBJbnRlbnNpdHkgKGxpbmUtUk9JKSBjb250cm9scyB3aGVuIHRoZSBiYWNrZW5kIHJlbmRlcnMgdGhlIExJTkUgcGxvdCB0eXBlLFxuICAgKiAgZWxzZSBudWxsLiAqL1xuICBnZXRJbnRlbnNpdHlDb250cm9scygpOiBJSW50ZW5zaXR5Q29udHJvbHMgfCBudWxsO1xuICAvKiogM0Qgc2NlbmUgY29udHJvbHMgd2hlbiB0aGlzIGJhY2tlbmQgcmVuZGVycyAzRCBwbG90IHR5cGVzLCBlbHNlIG51bGwg4oCUXG4gICAqICB0aGUgY2FwYWJpbGl0eS1nYXRlZCByZXBsYWNlbWVudCBmb3IgdGhlIGRlcHJlY2F0ZWQgdG9wLWxldmVsXG4gICAqICBgc2V0U3VyZmFjZURyYWdNb2RlYC9gcmVzZXRTdXJmYWNlQ2FtZXJhYC4gKi9cbiAgZ2V0U3VyZmFjZTNkQ29udHJvbHMoKTogSVN1cmZhY2UzZENvbnRyb2xzIHwgbnVsbDtcbiAgLyoqIFNwYXRpYWwtb21pY3MgY29udHJvbHMgd2hlbiBhIGBTUEFUSUFMX0RBVEFfUE9SVGAgaXMgYm91bmQsIGVsc2UgbnVsbC5cbiAgICogIE9wdGlvbmFsOiBvbmx5IHRoZSByb3V0aW5nIHNlcnZpY2UgaW1wbGVtZW50cyBpdCwgc2luY2UgdGhlIHN0YXRlIGlzIHNoYXJlZFxuICAgKiAgcmF0aGVyIHRoYW4gb3duZWQgYnkgYW55IG9uZSBiYWNrZW5kLiAqL1xuICBnZXRTcGF0aWFsQ29udHJvbHM/KCk6IElTcGF0aWFsQ29udHJvbHMgfCBudWxsO1xuICAvKiogQmlubmVkIGludGVuc2l0eSBoaXN0b2dyYW0gZm9yIGEgY2hhbm5lbCBmcm9tIHRoZSBjdXJyZW50bHktZGlzcGxheWVkXG4gICAqICBwaXhlbHMsIG9yIG51bGwgd2hlbiBub25lIGFyZSBhdmFpbGFibGUuIEZlZWRzIHRoZSBDaGFubmVscyAmIEhpc3RvZ3JhbVxuICAgKiAgcGFuZS4gKi9cbiAgZ2V0SGlzdG9ncmFtKGNoYW5uZWxJbmRleDogbnVtYmVyLCBiaW5zOiBudW1iZXIpOiBJSGlzdG9ncmFtIHwgbnVsbDtcbiAgLyoqIEFzeW5jIGhpc3RvZ3JhbSBzdHJlYW0g4oCUIG5hdGl2ZSBiaXQgZGVwdGggZm9yID44LWJpdCBpbWFnZXMgKHNlcnZlciksIGVsc2VcbiAgICogIHRoZSA4LWJpdCBjbGllbnQgaGlzdG9ncmFtLiAqL1xuICBnZXRIaXN0b2dyYW0kKGNoYW5uZWxJbmRleDogbnVtYmVyLCBiaW5zOiBudW1iZXIpOiBPYnNlcnZhYmxlPElIaXN0b2dyYW0gfCBudWxsPjtcbiAgLyoqIEV4cG9ydCB0aGUgZGlzcGxheWVkIGltYWdlLCBjb21wb3NpdGVkIHdpdGggdGhlIGN1cnJlbnQgZGlzcGxheSBzZXR0aW5ncyxcbiAgICogIGFzIGEgcHVibGljYXRpb24tcmVhZHkgUE5HIGRvd25sb2FkLiAqL1xuICBleHBvcnRDb21wb3NpdGUoKTogdm9pZDtcbiAgLyoqIEV4cG9ydCB0aGUgdW5kZXJseWluZyBpbWFnZSBkYXRhIGFzIGEgZGF0YS1wcmVzZXJ2aW5nIG11bHRpLWJhbmQgVElGRlxuICAgKiAgKG5hdGl2ZSBiaXQgZGVwdGgpLiBOby1vcCBvbiBiYWNrZW5kcyB0aGF0IGNhbid0IHByb3ZpZGUgaXQuICovXG4gIGV4cG9ydERhdGEoKTogdm9pZDtcbiAgdW5zdWJzY3JpYmUoKTogdm9pZDtcbn1cblxuLyoqXG4gKiBESSB0b2tlbiBmb3IgdGhlIGFjdGl2ZSB2aXN1YWxpemF0aW9uIGJhY2tlbmQuIEJpbmQgaXQgKGB1c2VFeGlzdGluZ2ApIHRvIHRoZVxuICogYFJvdXRpbmdWaXN1YWxpemVyU2VydmljZWAsIHdoaWNoIHNlbGVjdHMgUGxvdGx5IHZzIE9wZW5TZWFkcmFnb24gcGVyIHBsb3RcbiAqIHR5cGUuIENvbnN1bWVycyDigJQgaW5jbHVkaW5nIHRoaXMgbGlicmFyeSdzIG93biBgVmlzdWFsaXplckNvbXBvbmVudGAg4oCUXG4gKiBpbmplY3QgYElWaXN1YWxpemVyYCB0aHJvdWdoIHRoaXMgdG9rZW4gcmF0aGVyIHRoYW4gdGhlIGNvbmNyZXRlIHJvdXRlciwgc29cbiAqIHRoZSByb3V0aW5nL2ZhbGxiYWNrIGltcGxlbWVudGF0aW9uIGNhbiBjaGFuZ2Ugd2l0aG91dCB0b3VjaGluZyBjb25zdHJ1Y3RvcnMuXG4gKi9cbmV4cG9ydCBjb25zdCBWSVNVQUxJWkVSID0gbmV3IEluamVjdGlvblRva2VuPElWaXN1YWxpemVyPignVklTVUFMSVpFUicpO1xuIl19
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlzdWFsaXplci5jb250cmFjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvY29udHJhY3RzL3Zpc3VhbGl6ZXIuY29udHJhY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQXVkL0M7Ozs7OztHQU1HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLElBQUksY0FBYyxDQUFjLFlBQVksQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEltYWdlIH0gZnJvbSAnaW1hZ2UtanMnO1xuXG5pbXBvcnQgeyBJSW1hZ2VJbmZvLCBJSW1hZ2VNZXRhZGF0YSB9IGZyb20gJy4vaW1hZ2UuY29udHJhY3QnO1xuaW1wb3J0IHsgUmVnaW9uIH0gZnJvbSAnLi4vbW9kZWxzL3JlZ2lvbic7XG5pbXBvcnQgeyBQbG90VHlwZSwgUGxvdFR5cGVEZXNjcmlwdG9yIH0gZnJvbSAnLi9wbG90LXR5cGUnO1xuaW1wb3J0IHsgVmlld2VyQ2FwYWJpbGl0aWVzIH0gZnJvbSAnLi9jYXBhYmlsaXRpZXMuY29udHJhY3QnO1xuaW1wb3J0IHsgSVJlZ2lvbk92ZXJsYXkgfSBmcm9tICcuL3JlZ2lvbi1vdmVybGF5LmNvbnRyYWN0JztcbmltcG9ydCB7IElIaXN0b2dyYW0gfSBmcm9tICcuL2NoYW5uZWwtaGlzdG9ncmFtLWFwaS5jb250cmFjdCc7XG5pbXBvcnQgeyBDb2xvcm1hcE5vZGUsIElXYW5kT3B0aW9ucywgSUJydXNoT3B0aW9ucywgU3BhdGlhbFZpZXdTdGF0ZSwgU3BhdGlhbENvbG9yQnkgfSBmcm9tICcuL2Rpc3BsYXktdHlwZXMnO1xuaW1wb3J0IHtcbiAgU3BhdGlhbERhdGFzZXQsXG4gIFNwYXRpYWxFbWJlZGRpbmcsXG59IGZyb20gJy4vc3BhdGlhbC1kYXRhc2V0LmNvbnRyYWN0JztcbmltcG9ydCB7IFNwYXRpYWxTZWxlY3Rpb25NYXNrIH0gZnJvbSAnLi4vc3BhdGlhbC9zcGF0aWFsLXNlbGVjdGlvbic7XG5pbXBvcnQgdHlwZSB7IFBsb3RNb2RlVmlld3BvcnQgfSBmcm9tICcuL3Bsb3QtdHlwZS1jb250cmlidXRpb24uY29udHJhY3QnO1xuXG4vKipcbiAqIEJhY2tlbmQtbmV1dHJhbCB2aXN1YWxpemF0aW9uIGNvbnRyYWN0LiBQbG90bHkgaXMgb25lIGltcGxlbWVudGF0aW9uO1xuICogT3BlblNlYWRyYWdvbiBpcyBhbm90aGVyIChmb3IgdGhlIGltYWdlIHBsb3QgdHlwZSkuIFRoZSBhYnN0cmFjdGlvbiByZW5kZXJzXG4gKiBkYXRhIOKAlCBhIHJhc3RlciBpbWFnZSBPUiBhIHNjaWVudGlmaWMgcGxvdCAoaGVhdG1hcCwgc3VyZmFjZSwgY29udG91cixcbiAqIHNjYXR0ZXIsIGxpbmUsIGlzb3N1cmZhY2UpIOKAlCBkcmF3cyByZWdpb25zIG9uIGl0LCBhbmQgZHJpdmVzIG9uLWNhbnZhcyB0b29scy5cbiAqXG4gKiBTcGxpdCBpbnRvIHJvbGUgaW50ZXJmYWNlcyBzbyBhIGNvbnN1bWVyIGNhbiBkZXBlbmQgb25seSBvbiB0aGUgc2xpY2UgaXRcbiAqIHVzZXMsIHRoZW4gY29tcG9zZWQgaW50byBgSVZpc3VhbGl6ZXJgLlxuICpcbiAqIFR5cGVzIGFyZSBpbnRlbnRpb25hbGx5IHBlcm1pc3NpdmUgKGBhbnlgIHdoZXJlIHRoZSBjdXJyZW50IFBsb3RseSBzZXJ2aWNlXG4gKiBpcyB1bnR5cGVkKSBzbyBgUGxvdGx5U2VydmljZWAgc2F0aXNmaWVzIHRoZSBjb250cmFjdCB3aXRob3V0IGEgdHlwaW5nXG4gKiByZXdyaXRlIOKAlCB0aWdodGVuaW5nIGlzIGEgZm9sbG93LXVwLCBub3QgcGFydCBvZiBzdGFuZGluZyB0aGUgaW50ZXJmYWNlIHVwLlxuICovXG5cbi8qKiBQaXhlbCByZWFkYmFjayBzaGFwZSByZXR1cm5lZCBieSBgZ2V0RGlzcGxheWVkUGl4ZWxEYXRhYC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGl4ZWxEYXRhIHtcbiAgd2lkdGg6IG51bWJlcjtcbiAgaGVpZ2h0OiBudW1iZXI7XG4gIGNoYW5uZWxzOiBudW1iZXI7XG4gIGRhdGE6IFVpbnQ4Q2xhbXBlZEFycmF5O1xufVxuXG4vKiogSW50ZW5zaXR5IHNhbXBsZWQgYWxvbmcgYSBsaW5lIFJPSSAoUGxvdFR5cGUuTElORSBvdmVyIGltYWdlIGRhdGEpLiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnRlbnNpdHlQcm9maWxlIHtcbiAgLyoqIERpc3RhbmNlIGFsb25nIHRoZSBsaW5lLiBJbiBtaWNyb25zIHdoZW4gdGhlIGltYWdlIGNhcnJpZXMgYSBwaHlzaWNhbFxuICAgKiAgcGl4ZWwgc2l6ZSAobXBwKTsgb3RoZXJ3aXNlIGluIGltYWdlIHBpeGVscy4gU2VlIHtAbGluayB1bml0fS4gKi9cbiAgcG9zaXRpb25zOiBudW1iZXJbXTtcbiAgLyoqIFNhbXBsZWQgaW50ZW5zaXR5IChncmF5c2NhbGUgdmFsdWUgb3IgUkdCIGx1bWluYW5jZSkuICovXG4gIHZhbHVlczogbnVtYmVyW107XG4gIC8qKiBVbml0IG9mIHtAbGluayBwb3NpdGlvbnN9OiAnwrVtJyB3aGVuIHNjYWxlZCBieSB0aGUgaW1hZ2UncyBtcHAsIGVsc2UgJ3B4Jy4gKi9cbiAgdW5pdD86ICfCtW0nIHwgJ3B4JztcbiAgLyoqIFN0YWJsZSBpZCBvZiB0aGUgbGluZSBST0kgdGhpcyBwcm9maWxlIGNhbWUgZnJvbSAobXVsdGktbGluZSBzdXBwb3J0KS4gKi9cbiAgaWQ/OiBudW1iZXI7XG4gIC8qKiBDb2xvdXIgb2YgdGhlIGxpbmUgUk9JIOKAlCB0aGUgaW5zZXQgdHJhY2UgaXMgZHJhd24gaW4gdGhlIHNhbWUgY29sb3VyLiAqL1xuICBjb2xvcj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGUgcmVuZGVyL3ZpZXdwb3J0IHJvbGU6IGxvYWQgZGF0YSwgcmVuZGVyIGl0IChpbWFnZSBvciBwbG90KSwgYW5kIGhhbmRsZVxuICogem9vbSwgc3RhY2sgbmF2aWdhdGlvbiwgYW5kIHBpeGVsIHJlYWRiYWNrLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElEYXRhUmVuZGVyZXIge1xuICBsb2FkKGltYWdlSW5mbzogSUltYWdlSW5mbywgekluZGV4OiBudW1iZXIpOiBQcm9taXNlPGFueT47XG4gIC8qKiBgaW1hZ2VMb2FkZWRgIGlzIHRoZSBiYWNrZW5kLXNwZWNpZmljIGhhbmRsZSByZXR1cm5lZCBieSBgbG9hZCgpYCDigJRcbiAgICogIHRyZWF0IGl0IGFzIG9wYXF1ZSBhbmQgcGFzcyBpdCBzdHJhaWdodCB0aHJvdWdoLiAqL1xuICBwbG90KHBsb3REaXY6IHN0cmluZywgaW1hZ2VMb2FkZWQ6IHVua25vd24sIGltYWdlSW5mbzogSUltYWdlSW5mbywgc2NyZWVuSGVpZ2h0OiBudW1iZXIsXG4gICAgICAgcGxvdFR5cGU6IFBsb3RUeXBlLCBpblBsYWNlPzogYm9vbGVhbik6IFByb21pc2U8Ym9vbGVhbj47XG4gIC8qKiBAZGVwcmVjYXRlZCBQbG90bHktc3BlY2lmaWMgcmUtcmVuZGVyOyB0aGUgT1NEIGJhY2tlbmQgbm8tb3BzIGl0LiBUaGUgaG9zdFxuICAgKiAgcmUtZHJpdmVzIGBwbG90KClgIGZyb20gaXRzIGltYWdlIHN0cmVhbSBpbnN0ZWFkLiAqL1xuICByZWxvYWRBbmRQbG90KCk6IHZvaWQ7XG4gIHJlc2V0KCk6IHZvaWQ7XG4gIHJlbGF5b3V0KHRydWVJbWFnZVNpemU/OiBudW1iZXJbXSk6IHZvaWQ7XG4gIC8qKiBAZGVwcmVjYXRlZCBQbG90bHktc3BlY2lmaWMgKGF4aXMgcmVzZXQpOyB0aGUgT1NEIGJhY2tlbmQgbm8tb3BzIGl0LiBHYXRlXG4gICAqICBvbiB7QGxpbmsgVmlld2VyQ2FwYWJpbGl0aWVzfSBiZWZvcmUgY2FsbGluZy4gKi9cbiAgcmVzZXRBeGVzKCk6IHZvaWQ7XG4gIC8qKiBAZGVwcmVjYXRlZCBQbG90bHktc3BlY2lmaWMgKGF1dG9zY2FsZSk7IHRoZSBPU0QgYmFja2VuZCBuby1vcHMgaXQuIEdhdGVcbiAgICogIG9uIHtAbGluayBWaWV3ZXJDYXBhYmlsaXRpZXN9IGJlZm9yZSBjYWxsaW5nLiAqL1xuICBhdXRvc2NhbGUoKTogdm9pZDtcbiAgem9vbUluKCk6IHZvaWQ7XG4gIHpvb21PdXQoKTogdm9pZDtcbiAgc2V0RHJhZ01vZGUobW9kZTogc3RyaW5nIHwgZmFsc2UpOiB2b2lkO1xuICAvKiogU2hvdy9oaWRlIHRoZSBvdmVydmlldyBuYXZpZ2F0b3IgKHRoZSBtaW5pbWFwKS4gT3BlblNlYWRyYWdvbiBvbmx5IOKAlCBQbG90bHlcbiAgICogIG5vLW9wcyBpdCAoaXQgaGFzIG5vIG5hdmlnYXRvcikuIEFwcGxpZWQgd2hlbiB0aGUgdmlld2VyIGlzIChyZSljcmVhdGVkLCBhbmRcbiAgICogIHRvZ2dsZWQgbGl2ZSB3aGVuIG9uZSBpcyBhbHJlYWR5IG1vdW50ZWQuICovXG4gIHNldE5hdmlnYXRvclZpc2libGUodmlzaWJsZTogYm9vbGVhbik6IHZvaWQ7XG4gIC8qKiBJbWFnZSBzbW9vdGhpbmcgKGJpbGluZWFyIGludGVycG9sYXRpb24pLiBgZmFsc2VgID0gbmVhcmVzdC1uZWlnaGJvdXIsIHNvXG4gICAqICB6b29taW5nIHBhc3QgMToxIHNob3dzIGNyaXNwIHBpeGVsIGJsb2NrcyAocGl4ZWwtbGV2ZWwgaW5zcGVjdGlvbikuXG4gICAqICBPcGVuU2VhZHJhZ29uIG9ubHkg4oCUIFBsb3RseSBuby1vcHMgaXQuIEFwcGxpZWQgYXQgdmlld2VyIGNyZWF0aW9uIGFuZCBsaXZlXG4gICAqICAod2l0aCBhIHJlZHJhdykgd2hlbiBvbmUgaXMgbW91bnRlZC4gKi9cbiAgc2V0SW1hZ2VTbW9vdGhpbmdFbmFibGVkKGVuYWJsZWQ6IGJvb2xlYW4pOiB2b2lkO1xuXG4gIHNldFNob3dTdGFjayhzaG93c3RhY2s6IGJvb2xlYW4pOiB2b2lkO1xuICBzZXRaSW5kZXgoekluZGV4OiBudW1iZXIpOiB2b2lkO1xuICBzZXRTdGFja0xvYWRpbmcoc3RhY2tMb2FkaW5nOiBib29sZWFuKTogdm9pZDtcbiAgaXNTdGFja0xvYWRpbmcoKTogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgZ2V0U3RhY2tMb2FkaW5nUHJvZ3Jlc3MoKTogT2JzZXJ2YWJsZTxudW1iZXI+O1xuICAvKiogQ2FuY2VsIGFueSBpbi1mbGlnaHQgbXVsdGktZnJhbWUgbG9hZGluZyAodm9sdW1lLWFzc2VtYmx5IC8gc3VyZmFjZSBwcmVsb2FkKSBzbyBpdCBzdG9wc1xuICAgKiAgZmV0Y2hpbmcgbW9yZSBmcmFtZXMgYW5kIGNsZWFycyB0aGUgbG9hZGluZyBzdGF0ZS4gT3B0aW9uYWwg4oCUIG9ubHkgYmFja2VuZHMgdGhhdCBzdHJlYW0gYVxuICAgKiAgei1zdGFjayAobmFwYXJpLWpzIFdlYkdQVSkgZG8gcmVhbCB3b3JrIGhlcmU7IG90aGVycyBuby1vcC4gKi9cbiAgY2FuY2VsTG9hZGluZz8oKTogdm9pZDtcblxuICBnZXRUcnVlSW1hZ2VTaXplKCk6IHsgd2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXIgfSB8IG51bGw7XG4gIGdldEN1cnJlbnRJbWFnZSgpOiBQcm9taXNlPEltYWdlIHwgbnVsbD47XG4gIGdldERpc3BsYXllZFBpeGVsRGF0YSgpOiBQaXhlbERhdGEgfCBudWxsO1xuICAvKipcbiAgICogVGhlIHJlZ2lvbiBvZiB0aGUgb3JpZ2luYWwsIGZ1bGwtcmVzb2x1dGlvbiBpbWFnZSB0aGF0IHRoZSBwaXhlbHMgcmV0dXJuZWRcbiAgICogYnkge0BsaW5rIGdldERpc3BsYXllZFBpeGVsRGF0YX0gY3VycmVudGx5IGNvdmVyIOKAlCBgeyB4LCB5LCB3aWR0aCwgaGVpZ2h0IH1gXG4gICAqIGluIGZ1bGwtaW1hZ2UgcGl4ZWwgY29vcmRpbmF0ZXMuIFdoZW4gem9vbWVkL3Bhbm5lZCBpbnRvIGEgc3ViLWFyZWEgdGhpcyBpc1xuICAgKiB0aGUgY3JvcCdzIG9yaWdpbiArIGV4dGVudDsgd2hlbiB6b29tZWQgb3V0L3Bhbm5lZCBiZXlvbmQgdGhlIGVkZ2VzLCB0aGVcbiAgICogcmVjdGFuZ2xlIG1heSBleHRlbmQgb3V0c2lkZSB0aGUgaW1hZ2UgYm91bmRzIChtYXRjaGluZyB0aGUgcGl4ZWwgcmVhZGJhY2tcbiAgICogY2FudmFzKS4gTGV0cyBhIGNvbnN1bWVyIG1hcCBkaXNwbGF5ZWQtcGl4ZWwgY29vcmRpbmF0ZXMgYmFjayB0byB0aGUgb3JpZ2luYWxcbiAgICogaW1hZ2UgdmlhIGBvcmlnaW4gKyBkaXNwbGF5ZWRQeCAqIChleHRlbnQgLyBkaXNwbGF5ZWREaW0pYC4gXG4gICAqXG4gICAqIFJldHVybnMgYG51bGxgIHdoZW4gdGhlIHZpZXdwb3J0IGlzbid0IGxhaWQgb3V0IHlldCBvciB0aGUgYmFja2VuZCBjYW4ndFxuICAgKiByZXBvcnQgaXQg4oCUIGNhbGxlcnMgc2hvdWxkIHRoZW4gZmFsbCBiYWNrIHRvIHRoZSBmdWxsLWltYWdlIHNjYWxlICh0cmVhdFxuICAgKiB0aGUgZGlzcGxheWVkIHBpeGVscyBhcyBhIGRvd25zYW1wbGUgb2YgdGhlIHdob2xlIGltYWdlKS5cbiAgICovXG4gIGdldERpc3BsYXllZFNvdXJjZVJlY3QoKTogeyB4OiBudW1iZXI7IHk6IG51bWJlcjsgd2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXIgfSB8IG51bGw7XG4gIGRvd25sb2FkSW1hZ2UoKTogdm9pZDtcblxuICBzZXRQbG90VHlwZShwbG90VHlwZTogUGxvdFR5cGUpOiB2b2lkO1xuICAvKiogU2V0IHRoZSBuYXBhcmkgM0QgZGVjaW1hdGUgZmFjdG9yICgxID0gZnVsbCDigKYgOCA9IOKFmykuIE9wdGlvbmFsIOKAlCBvbmx5IHRoZSBuYXBhcmktanMgV2ViR1BVXG4gICAqICBiYWNrZW5kIGhvbm9ycyBpdDsgY2hhbmdpbmcgaXQgcmUtbG9hZHMgdGhlIGN1cnJlbnQgM0QgcGxvdCBhdCB0aGUgY29hcnNlci9maW5lciBzYW1wbGluZy4gKi9cbiAgc2V0UmVzb2x1dGlvblNjYWxlPyhzY2FsZTogbnVtYmVyKTogdm9pZDtcbiAgLyoqIFRoZSBjdXJyZW50IG5hcGFyaSAzRCBkZWNpbWF0ZSBmYWN0b3IgKHRvIGluaXRpYWxpemUgdGhlIFJlc29sdXRpb24gY29udHJvbCkuIE9wdGlvbmFsLiAqL1xuICBnZXRSZXNvbHV0aW9uU2NhbGU/KCk6IG51bWJlcjtcbiAgLyoqIEBkZXByZWNhdGVkIFVzZSBgZ2V0U3VyZmFjZTNkQ29udHJvbHMoKWAg4oCUIDNEIHNjZW5lIGNvbnRyb2xzIG9ubHkgZXhpc3Qgb25cbiAgICogIGEgYmFja2VuZCB0aGF0IHJlbmRlcnMgM0QgcGxvdCB0eXBlczsgdGhpcyBtZXRob2Qgc2lsZW50bHkgbm8tb3BzIG9uIE9TRC4gKi9cbiAgc2V0U3VyZmFjZURyYWdNb2RlKG1vZGU6IHN0cmluZyk6IHZvaWQ7XG4gIC8qKiBAZGVwcmVjYXRlZCBVc2UgYGdldFN1cmZhY2UzZENvbnRyb2xzKClgIOKAlCBzZWUge0BsaW5rIHNldFN1cmZhY2VEcmFnTW9kZX0uICovXG4gIHJlc2V0U3VyZmFjZUNhbWVyYSgpOiB2b2lkO1xuXG4gIGdldEF1dG9zY2FsZUV2ZW50KCk6IE9ic2VydmFibGU8YW55PjtcblxuICAvKiogUGxvdCB0eXBlcyB0aGlzIGJhY2tlbmQgYWR2ZXJ0aXNlcyAoZHJpdmVzIHRoZSBVSSBzZWxlY3RvcikuICovXG4gIGdldFBsb3RUeXBlRGVzY3JpcHRvcnMoKTogUGxvdFR5cGVEZXNjcmlwdG9yW107XG5cbiAgLyoqIEludGVuc2l0eSBhbG9uZyB0aGUgbGluZSBST0lzOyBlbWl0cyB0aGUgZnVsbCBzZXQgYXMgYW55IGxpbmUgaXMgYWRkZWQsXG4gICAqICBtb3ZlZCwgb3IgcmVtb3ZlZCAoUGxvdFR5cGUuTElORSkuIE9uZSBlbnRyeSBwZXIgbGluZSBST0kuICovXG4gIGdldEludGVuc2l0eVByb2ZpbGUkKCk6IE9ic2VydmFibGU8SW50ZW5zaXR5UHJvZmlsZVtdPjtcblxuICAvKiogUmVuZGVyIHRoZSBmbG9hdGluZyBpbnRlbnNpdHktcHJvZmlsZSBpbnNldCBjaGFydCBpbnRvIGBkaXZJZGAgZnJvbSB0aGVcbiAgICogIGdpdmVuIHByb2ZpbGVzIChvbmUgdHJhY2UgcGVyIGxpbmUgUk9JLCBjb2xvdXJlZCB0byBtYXRjaCBpdHMgbGluZSkuXG4gICAqICBPd25lZCBieSB0aGUgYmFja2VuZCBzbyBjb25zdW1lcnMgbmV2ZXIgcmVhY2ggYSBjaGFydGluZyBsaWJyYXJ5IGRpcmVjdGx5LiAqL1xuICByZW5kZXJJbnRlbnNpdHlJbnNldChkaXZJZDogc3RyaW5nLCBwcm9maWxlczogSW50ZW5zaXR5UHJvZmlsZVtdKTogdm9pZDtcbn1cblxuLyoqIFJlZ2lvbi9zaGFwZSBzdGF0ZTogQ1JVRCwgc2VsZWN0aW9uLCBjbGFzc2lmaWNhdGlvbiBjb2xvdXJzLCBHZW9KU09OIEkvTy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVJlZ2lvblN0b3JlIHtcbiAgc2V0UmVnaW9ucyhyZWdpb25zOiBSZWdpb25bXSwgc2hvd1JlZ2lvbkxhYmVsPzogYm9vbGVhbiwgaXNSZWdpb25TYXZlT24/OiBib29sZWFuLFxuICAgICAgICAgICAgIGZpbGxDb2xvcj86IHN0cmluZywgYXBwZW5kPzogYm9vbGVhbik6IHZvaWQ7XG4gIC8qKiBGcmFtZXdvcmstbmV1dHJhbCBhY2Nlc3NvciDigJQgdGhlIGNhbm9uaWNhbCB3YXkgdG8gcmVhZCBjdXJyZW50IHJlZ2lvbnMuICovXG4gIGdldFJlZ2lvbnMoKTogUmVnaW9uW107XG4gIGdldFJlZ2lvblBvbHlnb25zKCk6IGFueVtdO1xuICBnZXRSZWdpb25VcGRhdGVFdmVudCgpOiBPYnNlcnZhYmxlPGFueVtdPjtcblxuICBzZXRTZWxlY3RlZFNoYXBlSW5kaWNlcyhpbmRpY2VzOiBudW1iZXJbXSk6IHZvaWQ7XG4gIGdldFNlbGVjdGVkU2hhcGVJbmRpY2VzJCgpOiBPYnNlcnZhYmxlPG51bWJlcltdPjtcbiAgLyoqIFNlbGVjdCBhIHNwZWNpZmljIHJlZ2lvbiAoYnkgaWRlbnRpdHkpLCBoaWdobGlnaHRpbmcgaXQgb24gd2hpY2hldmVyXG4gICAqICBiYWNrZW5kIGlzIHJlbmRlcmluZyDigJQgUGxvdGx5IHNldHMgaXRzIGFjdGl2ZS1zaGFwZSBoYW5kbGVzLCBPcGVuU2VhZHJhZ29uXG4gICAqICBoaWdobGlnaHRzIHRoZSBTVkcgZWxlbWVudC4gTm8tb3AgaWYgdGhlIHJlZ2lvbiBpc24ndCBpbiB0aGUgc3RvcmUuICovXG4gIHNlbGVjdFJlZ2lvbihyZWdpb246IFJlZ2lvbik6IHZvaWQ7XG4gIGRlbGV0ZUFjdGl2ZVNoYXBlKCk6IHZvaWQ7XG5cbiAgZ2V0U2hvd1NoYXBlTGFiZWwoKTogYm9vbGVhbjtcbiAgZ2V0U2hhcGVDb2xvcigpOiBzdHJpbmc7XG4gIGdldEZpbGxDb2xvcigpOiBzdHJpbmc7XG4gIGdldENsYXNzaWZpY2F0aW9uQ29sb3JzKCk6IE1hcDxzdHJpbmcsIHN0cmluZz47XG4gIHNldENsYXNzaWZpY2F0aW9uQ29sb3IobGFiZWw6IHN0cmluZywgY29sb3I6IHN0cmluZyk6IHZvaWQ7XG5cbiAgcGxvdFByZXZpb3VzU2hhcGVzKCk6IHZvaWQ7XG4gIHNldFByZXZpb3VzU2hhcGVzKHNoYXBlczogYW55W10pOiB2b2lkO1xuICBnZXRQcmV2aW91c1NoYXBlcygpOiBhbnlbXTtcblxuICAvKiogVW5kbyB0aGUgbW9zdCByZWNlbnQgcmVnaW9uIGFjdGlvbiAoaml0LXVpIzg1KS4gUmVzdG9yZXMgdGhlIHJlZ2lvbiBzZXQgdG9cbiAgICogIHRoZSBzdGF0ZSBiZWZvcmUgdGhhdCBhY3Rpb247IHVwIHRvIGEgc21hbGwgZml4ZWQgZGVwdGggKDEwKSBpcyByZXRhaW5lZCxcbiAgICogIHNvIGl0IGNhbiBiZSBpbnZva2VkIHVwIHRvIDEwIHRpbWVzIGluIGEgcm93LiBOby1vcCB3aGVuIG5vdGhpbmcgaXMgbGVmdCB0b1xuICAgKiAgdW5kby4gKi9cbiAgdW5kbygpOiB2b2lkO1xuICAvKiogUmUtYXBwbHkgdGhlIG1vc3QgcmVjZW50bHkgdW5kb25lIHJlZ2lvbiBhY3Rpb24uIE5vLW9wIHdoZW4gdGhlcmUnc1xuICAgKiAgbm90aGluZyB0byByZWRvIChhbnkgZnJlc2ggcmVnaW9uIGFjdGlvbiBjbGVhcnMgdGhlIHJlZG8gZnV0dXJlKS4gKi9cbiAgcmVkbygpOiB2b2lkO1xuICAvKiogU3luY2hyb25vdXMgcmVhZCBvZiB7QGxpbmsgZ2V0Q2FuVW5kbyR9LiAqL1xuICBjYW5VbmRvKCk6IGJvb2xlYW47XG4gIC8qKiBTeW5jaHJvbm91cyByZWFkIG9mIHtAbGluayBnZXRDYW5SZWRvJH0uICovXG4gIGNhblJlZG8oKTogYm9vbGVhbjtcbiAgLyoqIEVtaXRzIHdoZXRoZXIgYW4gdW5kbyBzdGVwIGlzIGN1cnJlbnRseSBhdmFpbGFibGUg4oCUIGRyaXZlcyB0aGUgdG9vbGJhclxuICAgKiAgVW5kbyBidXR0b24ncyBlbmFibGVkIChncmV5ZWQtb3V0KSBzdGF0ZS4gKi9cbiAgZ2V0Q2FuVW5kbyQoKTogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgLyoqIEVtaXRzIHdoZXRoZXIgYSByZWRvIHN0ZXAgaXMgY3VycmVudGx5IGF2YWlsYWJsZSDigJQgZHJpdmVzIHRoZSB0b29sYmFyXG4gICAqICBSZWRvIGJ1dHRvbidzIGVuYWJsZWQgKGdyZXllZC1vdXQpIHN0YXRlLiAqL1xuICBnZXRDYW5SZWRvJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAvKiogQ2xlYXIgdGhlIHVuZG8vcmVkbyBoaXN0b3J5IChlLmcuIG9uIGltYWdlIGxvYWQvc3dpdGNoKS4gKi9cbiAgcmVzZXRVbmRvSGlzdG9yeSgpOiB2b2lkO1xuXG4gIGltcG9ydFJlZ2lvbnMoZ2VvSnNvblN0cjogc3RyaW5nKTogUmVnaW9uW107XG4gIGV4cG9ydFJlZ2lvbnMocmVnaW9uczogUmVnaW9uW10pOiB2b2lkO1xuICBnZXRHZW9Kc29uU3RyaW5nKHJlZ2lvbnM6IFJlZ2lvbltdKTogc3RyaW5nO1xuXG4gIC8qKiBCZWdpbiBhIHBlci1zbGljZSB6LXN0YWNrIHJlZ2lvbiBzZXNzaW9uIChqaXQtdWkjOTMpLiBgc2xpY2VzYCBtYXBzIGVhY2hcbiAgICogIHplcm8tYmFzZWQgc2xpY2UgaW5kZXggdG8gdGhhdCBzbGljZSdzIHJlZ2lvbnM7IHRoZSBzdG9yZSBzaG93cyBgaW5pdGlhbFpgXG4gICAqICBsaXZlIHdoaWxlIGhvbGRpbmcgdGhlIHJlc3QsIHNvIHNjcnViYmluZyBzd2FwcyByZWdpb24gc2V0cyBhbmQgZWRpdHMgb24gYVxuICAgKiAgc2xpY2UgcGVyc2lzdC4gYHNhdmVMYXlvdXRgIHJlY29yZHMgaG93IHRoZSBzdGFjayBwZXJzaXN0cyDigJQgYGNvbWJpbmVkYFxuICAgKiAgKG9uZSB6LWluZGV4ZWQgZ2VvanNvbiwgc2luZ2xlLWZpbGUgei1zdGFjaykgb3IgYHBlci1zbGljZS1maWxlYCAoZm9sZGVyXG4gICAqICBzdGFjaykuIFNlZSB7QGxpbmsgc2V0RGlzcGxheVNsaWNlfSwge0BsaW5rIGdldFNsaWNlUmVnaW9uc30uICovXG4gIGVudGVyU3RhY2tNb2RlKHNsaWNlczogTWFwPG51bWJlciwgUmVnaW9uW10+LCBpbml0aWFsWj86IG51bWJlcixcbiAgICAgICAgICAgICAgICAgc2F2ZUxheW91dD86ICdjb21iaW5lZCcgfCAncGVyLXNsaWNlLWZpbGUnKTogdm9pZDtcbiAgLyoqIEVuZCB0aGUgcGVyLXNsaWNlIHNlc3Npb24gKHNpbmdsZS1wbGFuZSBpbWFnZSwgb3IgdGhlIHN0YWNrIHdhcyBjbG9zZWQpLiAqL1xuICBleGl0U3RhY2tNb2RlKCk6IHZvaWQ7XG4gIC8qKiBUcnVlIHdoaWxlIGEgcGVyLXNsaWNlIHotc3RhY2sgc2Vzc2lvbiBpcyBhY3RpdmUuICovXG4gIGlzU3RhY2tNb2RlKCk6IGJvb2xlYW47XG4gIC8qKiBIb3cgdGhlIGN1cnJlbnQgc3RhY2sgcGVyc2lzdHMgdG8gZGlzayAoaml0LXVpIzkzKS4gKi9cbiAgZ2V0U3RhY2tTYXZlTGF5b3V0KCk6ICdjb21iaW5lZCcgfCAncGVyLXNsaWNlLWZpbGUnO1xuICAvKiogU3dhcCB0aGUgbGl2ZSByZWdpb24gc2V0IHRvIHNsaWNlIGB6YCAoc3RhY2sgbW9kZSBvbmx5KSwgY2FwdHVyaW5nIHRoZVxuICAgKiAgY3VycmVudCBzbGljZSdzIGVkaXRzIGZpcnN0LiBDYWxsZWQgb24gZXZlcnkgY29tbWl0dGVkIHNsaWNlIHNjcnViLiAqL1xuICBzZXREaXNwbGF5U2xpY2UoejogbnVtYmVyKTogdm9pZDtcbiAgLyoqIEV2ZXJ5IHNsaWNlJ3MgcmVnaW9ucyBmb3Igc2F2ZS9leHBvcnQsIGVhY2ggdGFnZ2VkIHdpdGggaXRzIHplcm8tYmFzZWRcbiAgICogIHtAbGluayBSZWdpb24uen07IHRoZSBmbGF0IHNldCBvdXRzaWRlIHN0YWNrIG1vZGUuICovXG4gIGdldFNsaWNlUmVnaW9ucygpOiBSZWdpb25bXTtcbiAgLyoqIFNsaWNlcyB0byB3cml0ZSBvbiBhIHBlci1zbGljZS1maWxlIHNhdmUgKGZvbGRlciBzdGFjaywgaml0LXVpIzkzKTogZWFjaFxuICAgKiAgc2xpY2Ugd2l0aCByZWdpb25zLCBwbHVzIHNsaWNlcyBjbGVhcmVkIHNpbmNlIGxvYWQgKGVtcHR5LCB0byBvdmVyd3JpdGUpLlxuICAgKiAgS2V5ZWQgYnkgemVyby1iYXNlZCBzbGljZSBpbmRleDsgcmVnaW9ucyB0YWdnZWQgd2l0aCB0aGVpciB6LiAqL1xuICBnZXRTdGFja1NhdmVTbGljZXMoKTogTWFwPG51bWJlciwgUmVnaW9uW10+O1xufVxuXG4vKiogT24tY2FudmFzIHRvb2wgbW9kZXMgKHdhbmQsIGJydXNoLCB2ZXJ0ZXggZXJhc2VyLCB6b29tLXRvLWJveCkuICovXG5leHBvcnQgaW50ZXJmYWNlIElUb29sQ29udHJvbGxlciB7XG4gIHNldFdhbmRNb2RlKGFjdGl2ZTogYm9vbGVhbiwgb3B0aW9ucz86IElXYW5kT3B0aW9ucyk6IHZvaWQ7XG4gIHNldFdhbmRPcHRpb25zKG9wdGlvbnM6IElXYW5kT3B0aW9ucyk6IHZvaWQ7XG4gIGNsZWFyQWN0aXZlV2FuZFJlZ2lvbigpOiB2b2lkO1xuICAvKiogQnJ1c2ggcmVnaW9uIHRvb2wuIGBzaXplYCAobWF0cml4LXBpeGVsIGRpYW1ldGVyKSBzaXplcyB0aGUgcGFpbnRlZCBkaXNjLiAqL1xuICBzZXRCcnVzaE1vZGUoYWN0aXZlOiBib29sZWFuLCBvcHRpb25zPzogSUJydXNoT3B0aW9ucyk6IHZvaWQ7XG4gIHNldEJydXNoT3B0aW9ucyhvcHRpb25zOiBJQnJ1c2hPcHRpb25zKTogdm9pZDtcbiAgc2V0VmVydGV4RXJhc2VyTW9kZShhY3RpdmU6IGJvb2xlYW4pOiB2b2lkO1xuICBzZXRWZXJ0ZXhFcmFzZXJSYWRpdXMocmFkaXVzOiBudW1iZXIpOiB2b2lkO1xuICBzZXRab29tVG9Cb3hNb2RlKGFjdGl2ZTogYm9vbGVhbik6IHZvaWQ7XG4gIC8qKiBCb3gtcHJvbXB0ZWQgU0FNIHNlZ21lbnRhdGlvbjogc2VnbWVudCBldmVyeSByZWN0YW5nbGUgcmVnaW9uIGludG8gbWFza3MuXG4gICAqICBSZXR1cm5zIHRoZSBudW1iZXIgb2YgbWFzayByZWdpb25zIGFkZGVkLiAoaml0LXVpIzkwKSAqL1xuICBzZWdtZW50UmVjdGFuZ2xlcygpOiBQcm9taXNlPG51bWJlcj47XG4gIC8qKiBDZWxscG9zZS1vbi1jcm9wOiBjbGllbnQgc2xpZGUtY3JvcCBlYWNoIHJlY3RhbmdsZSBhbmQgc2VnbWVudCBjZWxscyBpbiBpdFxuICAgKiAgKGNlbGxwb3NlLVNBTSB2aWEgdGhlIGhvc3QncyBDRUxMX1NFR01FTlRFUikuIFJldHVybnMgcmVnaW9ucyBhZGRlZC4gKi9cbiAgc2VnbWVudFJlY3RhbmdsZXNDZWxscG9zZSgpOiBQcm9taXNlPG51bWJlcj47XG4gIC8qKiBDaG9vc2UgdGhlIHJlZ2lzdGVyZWQgU0FNIG1vZGVsIHRoZSBzZWdtZW50IHRvb2xzIHVzZSAoaml0LXVpIzkwIFAxKS4gKi9cbiAgc2V0U2FtTW9kZWwoaWQ6IHN0cmluZyk6IHZvaWQ7XG4gIC8qKiBUb2dnbGUgdGhlIGludGVyYWN0aXZlIFNBTSBwb2ludC1wcm9tcHQgdG9vbCAoY2xpY2sgPSArcG9pbnQsIFNoaWZ0ID0gLSkuICovXG4gIHNldFNhbVBvaW50TW9kZShhY3RpdmU6IGJvb2xlYW4pOiB2b2lkO1xuICAvKiogRmluYWxpc2UgLyBkaXNjYXJkIHRoZSBpbi1wcm9ncmVzcyBTQU0gcG9pbnQgb2JqZWN0LiAqL1xuICBjb21taXRTYW1Qb2ludHMoKTogdm9pZDtcbiAgY2xlYXJTYW1Qb2ludHMoKTogdm9pZDtcbn1cblxuLyoqXG4gKiBDb250cm9scyBzcGVjaWZpYyB0byB0aGUgSVNPU1VSRkFDRSBwbG90IHR5cGUuIE9wdGlvbmFsIGFuZCBjYXBhYmlsaXR5LWdhdGVkXG4gKiAoYFZpZXdlckZlYXR1cmUuSXNvc3VyZmFjZWApOiBvbmx5IGEgYmFja2VuZCB0aGF0IHJlbmRlcnMgaXNvc3VyZmFjZXMgZXhwb3Nlc1xuICogaXQsIHZpYSBgSVZpc3VhbGl6ZXIuZ2V0SXNvc3VyZmFjZUNvbnRyb2xzKClgLiBLZXB0IG9mZiB0aGUgYWx3YXlzLW9uXG4gKiBjb250cmFjdCBzbyBjb25zdW1lcnMgbmV2ZXIgY2FsbCBhIGNvbnRyb2wgdGhhdCdzIG1lYW5pbmdsZXNzIGZvciB0aGUgY3VycmVudFxuICogcGxvdCB0eXBlIC8gYmFja2VuZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJSXNvc3VyZmFjZUNvbnRyb2xzIHtcbiAgLyoqIExpdmUtdXBkYXRlIHRoZSBpc29zdXJmYWNlIGludGVuc2l0eSBiYW5kIFtpc29taW4sIGlzb21heF0gb3ZlciAw4oCTMjU1LiAqL1xuICBzZXRJc29SYW5nZShpc29NaW46IG51bWJlciwgaXNvTWF4OiBudW1iZXIpOiB2b2lkO1xufVxuXG4vKipcbiAqIENvbnRyb2xzIHNwZWNpZmljIHRvIHRoZSAzRCBwbG90IHR5cGVzIChTVVJGQUNFIC8gU0NBVFRFUjNEIC8gSVNPU1VSRkFDRVxuICogc2NlbmVzKS4gQ2FwYWJpbGl0eS1nYXRlZCBsaWtlIHtAbGluayBJSXNvc3VyZmFjZUNvbnRyb2xzfTogb25seSBhIGJhY2tlbmRcbiAqIHRoYXQgcmVuZGVycyAzRCBzY2VuZXMgZXhwb3NlcyBpdCwgdmlhIGBJVmlzdWFsaXplci5nZXRTdXJmYWNlM2RDb250cm9scygpYCDigJRcbiAqIHRoZSBkZXByZWNhdGVkIHRvcC1sZXZlbCBgc2V0U3VyZmFjZURyYWdNb2RlYC9gcmVzZXRTdXJmYWNlQ2FtZXJhYCBzaWxlbnRseVxuICogbm8tb3Agb24gMkQtb25seSBiYWNrZW5kcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJU3VyZmFjZTNkQ29udHJvbHMge1xuICAvKiogU3dpdGNoIHRoZSAzRCBzY2VuZSBpbnRlcmFjdGlvbiBtb2RlIChvcmJpdCAvIHR1cm50YWJsZSAvIHBhbiAvIHpvb20pLiAqL1xuICBzZXRTdXJmYWNlRHJhZ01vZGUobW9kZTogc3RyaW5nKTogdm9pZDtcbiAgLyoqIFJlc2V0IHRoZSAzRCBzY2VuZSBjYW1lcmEgdG8gaXRzIGRlZmF1bHQgZXllIHBvc2l0aW9uLiAqL1xuICByZXNldFN1cmZhY2VDYW1lcmEoKTogdm9pZDtcbiAgLyoqIFRvZ2dsZSB0aGUgM0QgY29vcmRpbmF0ZS1heGVzIC8gc2NhbGUgZ2l6bW8gb24vb2ZmLiBPcHRpb25hbCDigJQgb25seSB0aGUgbmFwYXJpLWpzIFdlYkdQVVxuICAgKiAgdm9sdW1lL2lzb3N1cmZhY2UgYmFja2VuZCByZW5kZXJzIG9uZSAoaml0LXVpIzEwMikuICovXG4gIHNldEF4ZXNWaXNpYmxlPyh2aXNpYmxlOiBib29sZWFuKTogdm9pZDtcbiAgLyoqIFdoZXRoZXIgdGhlIGF4ZXMgZ2l6bW8gaXMgY3VycmVudGx5IHNob3duIChmb3IgaW5pdGlhbGl6aW5nIHRoZSB0b2dnbGUgVUkpLiBPcHRpb25hbC4gKi9cbiAgYXhlc1Zpc2libGU/KCk6IGJvb2xlYW47XG4gIC8qKiBSZW5kZXIgdGhlIHN1cmZhY2UgYXMgYSB3aXJlZnJhbWUgKGVkZ2VzKSBpbnN0ZWFkIG9mIGEgZmlsbGVkIHN1cmZhY2UuIE9wdGlvbmFsIOKAlCBvbmx5IHRoZVxuICAgKiAgbmFwYXJpLWpzIFdlYkdQVSBzdXJmYWNlIGJhY2tlbmQgc3VwcG9ydHMgaXQgKGppdC11aSMxMDIpLiAqL1xuICBzZXRXaXJlZnJhbWU/KG9uOiBib29sZWFuKTogdm9pZDtcbiAgLyoqIFdoZXRoZXIgdGhlIHN1cmZhY2UgaXMgY3VycmVudGx5IGRyYXduIGFzIGEgd2lyZWZyYW1lIChmb3IgaW5pdGlhbGl6aW5nIHRoZSB0b2dnbGUgVUkpLiAqL1xuICB3aXJlZnJhbWU/KCk6IGJvb2xlYW47XG59XG5cbi8qKlxuICogQ29udHJvbHMgc3BlY2lmaWMgdG8gdGhlIExJTkUgKGludGVuc2l0eS1wcm9maWxlKSBwbG90IHR5cGUuIENhcGFiaWxpdHktZ2F0ZWRcbiAqIGxpa2Uge0BsaW5rIElJc29zdXJmYWNlQ29udHJvbHN9OiBvbmx5IGEgYmFja2VuZCB0aGF0IHJlbmRlcnMgdGhlIGxpbmUtUk9JIC9cbiAqIGluc2V0IGV4cG9zZXMgaXQsIHZpYSBgSVZpc3VhbGl6ZXIuZ2V0SW50ZW5zaXR5Q29udHJvbHMoKWAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUludGVuc2l0eUNvbnRyb2xzIHtcbiAgLyoqIEFkZCBhbm90aGVyIGxpbmUgUk9JIChuZXh0IGJyaWdodCBwYWxldHRlIGNvbG91cikgYW5kIGl0cyBpbnNldCB0cmFjZS5cbiAgICogIFJldHVybnMgdGhlIGNyZWF0ZWQgcmVnaW9uIHNvIHRoZSBjYWxsZXIgY2FuIHNlbGVjdCBpdCBvbiB0aGUgYWN0aXZlXG4gICAqICBiYWNrZW5kLCBvciBudWxsIGlmIG5vIGltYWdlIGV4dGVudCBpcyBrbm93biB5ZXQuICovXG4gIGFkZFByb2ZpbGVMaW5lKCk6IFJlZ2lvbiB8IG51bGw7XG59XG5cbi8qKiBBIGNhdGVnb3JpY2FsIGNvbHVtbiByZXNvbHZlZCBmb3IgY2hhcnRpbmc6IGxhYmVscywgY29kZXMgYW5kIG1hcCBjb2xvdXJzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBTcGF0aWFsQ2F0ZWdvcmljYWxWaWV3IHtcbiAgbmFtZTogc3RyaW5nO1xuICBjYXRlZ29yaWVzOiBzdHJpbmdbXTtcbiAgLyoqIGAjcnJnZ2JiYCBwZXIgY2F0ZWdvcnksIGluZGV4LWFsaWduZWQgd2l0aCB7QGxpbmsgY2F0ZWdvcmllc30uICovXG4gIGNvbG9yczogc3RyaW5nW107XG4gIC8qKiBQZXItb2JzZXJ2YXRpb24gY2F0ZWdvcnkgaW5kZXgsIG9yIGBOT19DQVRFR09SWWAuICovXG4gIGNvZGVzOiBVaW50MTZBcnJheTtcbn1cblxuLyoqXG4gKiBDb250cm9scyBmb3IgdGhlIFNQQVRJQUxfT01JQ1MgcGxvdCB0eXBlOiB3aGF0IHRoZSBvYnNlcnZhdGlvbiBtYXJrZXJzIGFyZVxuICogY29sb3VyZWQgYnksIGFuZCBob3cgdGhleSBhcmUgZHJhd24uIENhcGFiaWxpdHktZ2F0ZWQgbGlrZVxuICoge0BsaW5rIElJc29zdXJmYWNlQ29udHJvbHN9IOKAlCBgZ2V0U3BhdGlhbENvbnRyb2xzKClgIHJldHVybnMgbnVsbCB1bmxlc3MgYVxuICogaG9zdCBoYXMgYm91bmQgYFNQQVRJQUxfREFUQV9QT1JUYC5cbiAqXG4gKiBUaGUgdmlldyBzdGF0ZSBpcyBiYWNrZW5kLW5ldXRyYWwgKGl0IGxpdmVzIGluIHRoZSBzaGFyZWQgc3RvcmUsIGxpa2UgdGhlXG4gKiBjb2xvcm1hcCksIHNvIHRoZXNlIGNvbnRyb2xzIHdvcmsgd2hpY2hldmVyIGJhY2tlbmQgaXMgb24gc2NyZWVuLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElTcGF0aWFsQ29udHJvbHMge1xuICAvKiogVGhlIGRhdGFzZXQgYmVpbmcgdmlzdWFsaXplZCwgb3IgbnVsbC4gRHJpdmVzIHRoZSBjb2x1bW4vZ2VuZSBwaWNrZXJzIGFuZFxuICAgKiAgdGhlIGxlZ2VuZC4gKi9cbiAgZ2V0RGF0YXNldCQoKTogT2JzZXJ2YWJsZTxTcGF0aWFsRGF0YXNldCB8IG51bGw+O1xuICAvKiogQ3VycmVudCBkaXNwbGF5IHN0YXRlIChjb2xvdXIgc291cmNlLCBwb2ludCBzY2FsZSwgb3BhY2l0eSwgc2NhbGluZykuICovXG4gIGdldFZpZXdTdGF0ZSQoKTogT2JzZXJ2YWJsZTxTcGF0aWFsVmlld1N0YXRlPjtcbiAgLyoqIFN5bmNocm9ub3VzIHJlYWQsIGZvciBzZWVkaW5nIGEgY29udHJvbCdzIGluaXRpYWwgdmFsdWUuICovXG4gIHZpZXdTdGF0ZSgpOiBTcGF0aWFsVmlld1N0YXRlO1xuICAvKiogUGF0Y2ggdGhlIGRpc3BsYXkgc3RhdGU7IHRoZSBtYXJrZXJzIHJlYnVpbGQgd2l0aG91dCByZW1vdW50aW5nIHRoZSBzY2VuZS4gKi9cbiAgc2V0Vmlld1N0YXRlKHBhcnRpYWw6IFBhcnRpYWw8U3BhdGlhbFZpZXdTdGF0ZT4pOiB2b2lkO1xuICAvKiogQ29sb3VyIGJ5IGFuIGFubm90YXRpb24gY29sdW1uLiBSZWplY3RzIGZvciBhbiB1bmtub3duIGNvbHVtbi4gKi9cbiAgY29sb3JCeUNvbHVtbihuYW1lOiBzdHJpbmcpOiB2b2lkO1xuICAvKiogQ29sb3VyIGJ5IGEgZ2VuZTsgaXRzIHZlY3RvciBpcyBmZXRjaGVkIG9uIGRlbWFuZC4gKi9cbiAgY29sb3JCeUZlYXR1cmUobmFtZTogc3RyaW5nKTogdm9pZDtcbiAgLyoqIENsZWFyIHRoZSBjb2xvdXIgc291cmNlIOKAlCBldmVyeSBvYnNlcnZhdGlvbiByZW5kZXJzIGluIG9uZSBuZXV0cmFsIGNvbG91ci4gKi9cbiAgY2xlYXJDb2xvckJ5KCk6IHZvaWQ7XG4gIC8qKiBUeXBlYWhlYWQgb3ZlciBmZWF0dXJlIG5hbWVzLCBmb3IgZGF0YXNldHMgdG9vIHdpZGUgdG8gaW5saW5lIHRoZSBsaXN0LiAqL1xuICBzZWFyY2hGZWF0dXJlcyhxdWVyeTogc3RyaW5nLCBsaW1pdD86IG51bWJlcik6IFByb21pc2U8c3RyaW5nW10+O1xuICAvKiogUGVyLWNhdGVnb3J5IGRpc3BsYXkgY29sb3VycyBmb3IgYSBjYXRlZ29yaWNhbCBjb2x1bW4sIGluZGV4LWFsaWduZWQgd2l0aFxuICAgKiAgaXRzIGBjYXRlZ29yaWVzYCDigJQgdGhlIGxlZ2VuZCdzIHN3YXRjaGVzLCByZXNvbHZlZCB0aGUgc2FtZSB3YXkgdGhlXG4gICAqICByZW5kZXJlciByZXNvbHZlcyB0aGVtIHNvIHRoZSB0d28gY2Fubm90IGRpc2FncmVlLiAqL1xuICBjYXRlZ29yeUNvbG9ycyhuYW1lOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZ1tdPjtcblxuICAvLyDilIDilIAgdmFsdWVzLCBmb3IgdGhlIDEtRCBjaGFydHMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gIC8qKlxuICAgKiBUaGUgdmFsdWVzIGJlaGluZCBhIGNvbG91ciBzb3VyY2UsIGluZGV4LWFsaWduZWQgd2l0aCB0aGUgb2JzZXJ2YXRpb25zLlxuICAgKiBSZWplY3RzIGZvciBhIGNhdGVnb3JpY2FsIGNvbHVtbiDigJQgdGhlcmUgaXMgbm90aGluZyBjb250aW51b3VzIHRvIGNoYXJ0LlxuICAgKi9cbiAgY29udGludW91c1ZhbHVlcyhzb3VyY2U6IFNwYXRpYWxDb2xvckJ5KTogUHJvbWlzZTxGbG9hdDMyQXJyYXk+O1xuICAvKipcbiAgICogQSBjYXRlZ29yaWNhbCBjb2x1bW4ncyBjYXRlZ29yaWVzLCBwZXItb2JzZXJ2YXRpb24gY29kZXMgYW5kIGRpc3BsYXlcbiAgICogY29sb3VycyDigJQgZXZlcnl0aGluZyBhIGdyb3VwZWQgdmlvbGluL2JveCBuZWVkcywgd2l0aCB0aGUgY29sb3VycyByZXNvbHZlZFxuICAgKiB0aGUgc2FtZSB3YXkgdGhlIG1hcCByZXNvbHZlcyB0aGVtLlxuICAgKi9cbiAgY2F0ZWdvcmljYWxWaWV3KGNvbHVtbjogc3RyaW5nKTogUHJvbWlzZTxTcGF0aWFsQ2F0ZWdvcmljYWxWaWV3PjtcblxuICAvKipcbiAgICogT25lIGVtYmVkZGluZydzIGNvb3JkaW5hdGVzIOKAlCBhIFVNQVAsIHQtU05FIG9yIFBDQSBwbGFuZSBvdmVyIHRoZSBzYW1lIG9ic2VydmF0aW9ucy5cbiAgICpcbiAgICogT3B0aW9uYWwsIGFuZCBhYnNlbnQgd2hlbiB0aGUgZGF0YSBzb3VyY2Ugc2VydmVzIG5vbmU6IGBTcGF0aWFsRGF0YVBvcnQuZ2V0RW1iZWRkaW5nYFxuICAgKiBpcyBpdHNlbGYgb3B0aW9uYWwsIHNvIGEgcGFuZWwgbXVzdCBiZSBhYmxlIHRvIGFzayB3aGV0aGVyIHRoaXMgZXhpc3RzIHJhdGhlciB0aGFuXG4gICAqIGNhbGxpbmcgaXQgYW5kIGNhdGNoaW5nLlxuICAgKi9cbiAgZ2V0RW1iZWRkaW5nPyhuYW1lOiBzdHJpbmcpOiBQcm9taXNlPFNwYXRpYWxFbWJlZGRpbmc+O1xuICAvKiogTmFtZXMgb2YgdGhlIGNhdGVnb3JpY2FsIGNvbHVtbnMgYXZhaWxhYmxlIHRvIGdyb3VwIGJ5LiAqL1xuICBjYXRlZ29yaWNhbENvbHVtbnMoKTogc3RyaW5nW107XG4gIC8qKlxuICAgKiBUaGUgeiBwb3NpdGlvbnMgb2YgdGhlIHNlY3Rpb25zIHRoZSBkYXRhc2V0IHdhcyBpbWFnZWQgYXQsIGFzY2VuZGluZyDigJQgb3JcbiAgICogbnVsbCB3aGVuIGl0cyB6IGlzIGNvbnRpbnVvdXMgcmF0aGVyIHRoYW4gc2VjdGlvbmVkIChzbyB0aGVyZSBhcmUgbm8gc2VjdGlvbnNcbiAgICogdG8gb2ZmZXIpIG9yIHdoZW4gdGhlcmUgaXMgbm8gZGF0YXNldC5cbiAgICpcbiAgICogTGV0cyBhIHBhbmVsIG9mZmVyIFwib25lIHNlY3Rpb24gYXQgYSB0aW1lXCIgZm9yIHRoZSAzRCBjbG91ZCBvbmx5IHdoZXJlIHRoYXRcbiAgICogbWVhbnMgc29tZXRoaW5nLCBhbmQgbGFiZWwgdGhlIGNob3NlbiBvbmUuIFNjYW5uZWQgb25jZSBwZXIgZGF0YXNldC5cbiAgICovXG4gIHNhbXBsZWRTZWN0aW9ucygpOiBGbG9hdDMyQXJyYXkgfCBudWxsO1xuXG4gIC8vIOKUgOKUgCBzZWxlY3Rpb24g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gIC8qKiBUaGUgY3VycmVudCBzZWxlY3Rpb24uIEVtcHR5IG1lYW5zIFwibm90aGluZyBzZWxlY3RlZFwiLCBpbiB3aGljaCBjYXNlIHRoZVxuICAgKiAgd2hvbGUgdGlzc3VlIHJlbmRlcnMgbm9ybWFsbHkgcmF0aGVyIHRoYW4gZXZlcnl0aGluZyBiZWluZyBtdXRlZC4gKi9cbiAgZ2V0U2VsZWN0aW9uJCgpOiBPYnNlcnZhYmxlPFNwYXRpYWxTZWxlY3Rpb25NYXNrPjtcbiAgLyoqXG4gICAqIFNlbGVjdCBldmVyeSBvYnNlcnZhdGlvbiBpbnNpZGUgdGhlIGN1cnJlbnRseS1kcmF3biByZWdpb25zICh0aGVpciB1bmlvbikuXG4gICAqIFJldXNlcyB0aGUgZXhpc3RpbmcgUk9JIHRvb2xzIOKAlCByZWN0YW5nbGUsIHBvbHlnb24sIGZyZWVoYW5kLCB3YW5kLCBicnVzaCDigJRcbiAgICogc28gdGhlcmUgaXMgbm8gc2VwYXJhdGUgbWFycXVlZSB0byBsZWFybi4gUmV0dXJucyBob3cgbWFueSB3ZXJlIHNlbGVjdGVkLlxuICAgKi9cbiAgc2VsZWN0RnJvbVJlZ2lvbnMoKTogbnVtYmVyO1xuICAvKiogU2VsZWN0IGV2ZXJ5IG9ic2VydmF0aW9uIGluIG9uZSBjYXRlZ29yeSBvZiBhIGNhdGVnb3JpY2FsIGNvbHVtbiDigJQgdGhlXG4gICAqICBsZWdlbmQgY2xpY2suIFJlamVjdHMgZm9yIGFuIHVua25vd24gb3IgY29udGludW91cyBjb2x1bW4uICovXG4gIHNlbGVjdENhdGVnb3J5KGNvbHVtbjogc3RyaW5nLCBjYXRlZ29yeUluZGV4OiBudW1iZXIpOiBQcm9taXNlPG51bWJlcj47XG5cbiAgLyoqXG4gICAqIFNlbGVjdCBhbiBleHBsaWNpdCBzZXQgb2Ygb2JzZXJ2YXRpb25zLCByZXBsYWNpbmcgYW55IGN1cnJlbnQgc2VsZWN0aW9uLlxuICAgKlxuICAgKiBGb3IgYSBsaW5rZWQgcGxvdDogbGFzc29pbmcgcG9pbnRzIGluIGFuIGVtYmVkZGluZyBpcyBhIHNlbGVjdGlvbiBPRiBvYnNlcnZhdGlvbnMsXG4gICAqIGFuZCBldmVyeSBvdGhlciB2aWV3IOKAlCB0aGUgbWFwLCB0aGUgZGlzdHJpYnV0aW9ucyDigJQgcmVhZHMgdGhlIHNhbWUgbWFzaywgc28gYnJ1c2hpbmdcbiAgICogb25lIGxpZ2h0cyB1cCB0aGUgcmVzdC4gUmV0dXJucyBob3cgbWFueSB3ZXJlIHNlbGVjdGVkLlxuICAgKi9cbiAgc2VsZWN0SW5kaWNlcyhpbmRpY2VzOiBJdGVyYWJsZTxudW1iZXI+KTogbnVtYmVyO1xuICBjbGVhclNlbGVjdGlvbigpOiB2b2lkO1xufVxuXG4vKiogRGlzcGxheSBvcHRpb25zIChjb2xvcm1hcC9MVVQsIHJldmVyc2Ugc2NhbGUsIGltYWdlIG1ldGFkYXRhKS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSURpc3BsYXlPcHRpb25zIHtcbiAgZ2V0Q29sb3JtYXAoKTogT2JzZXJ2YWJsZTxDb2xvcm1hcE5vZGUgfCBudWxsPjtcbiAgc2V0Q29sb3JtYXAoY29sb3JtYXA6IENvbG9ybWFwTm9kZSk6IHZvaWQ7XG4gIGdldENvbG9ybWFwT3B0aW9ucygpOiBDb2xvcm1hcE5vZGVbXTtcbiAgZ2V0UmV2ZXJzZVNjYWxlKCk6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIHNldFJldmVyc2VTY2FsZShyZXZlcnNjYWxlOiBhbnkpOiB2b2lkO1xuICBzZXRJbWFnZU1ldGEoaW1hZ2VNZXRhOiBJSW1hZ2VNZXRhZGF0YVtdKTogdm9pZDtcbiAgZ2V0SW1hZ2VNZXRhKCk6IE9ic2VydmFibGU8SUltYWdlTWV0YWRhdGFbXT47XG59XG5cbi8qKlxuICogSW50ZW5zaXR5LXByb2ZpbGUgc2FtcGxpbmcgKFBsb3RUeXBlLkxJTkUpLiBUaGUgc2FtcGxpbmcgKnNvdXJjZSogbGl2ZXMgaW4gdGhlXG4gKiBQbG90bHkgYmFja2VuZCAoaXQgb3ducyBwaXhlbCByZWFkYmFjayk7IE9wZW5TZWFkcmFnb24gY29udHJpYnV0ZXMgb25seSB0aGVcbiAqIHZpZXdwb3J0LWNoYW5nZSBzaWduYWwgdGhhdCBkcml2ZXMgcmUtc2FtcGxpbmcgYXQgdGhlIGN1cnJlbnQgem9vbS4gRWFjaFxuICogYmFja2VuZCBpbXBsZW1lbnRzIHRoZSBwYXJ0IGl0IG93bnMgYW5kIG5vLW9wcyB0aGUgcmVzdCDigJQgbWlycm9yaW5nIHRoZVxuICogZGVwcmVjYXRlZCBuby1vcCBwYXR0ZXJuIG9uIHtAbGluayBJRGF0YVJlbmRlcmVyfSDigJQgc28gdGhlIGNvbnRyYWN0IGlzIHVuaWZvcm1cbiAqIGFuZCBhIGNvbnN1bWVyIGNhbiBkZXBlbmQgb24gYElWaXN1YWxpemVyYCBhbG9uZSAobm8gY29uY3JldGUtdHlwZSByZWFjaC1pbikuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUludGVuc2l0eVNhbXBsaW5nIHtcbiAgLyoqIFBvcHVsYXRlIHRoZSBpbnRlbnNpdHktc2FtcGxpbmcgY2FjaGUgZm9yIHRoZSBjdXJyZW50IGltYWdlL3NsaWNlIHNvIHRoZVxuICAgKiAgbGluZS1ST0kgcHJvZmlsZXMgaGF2ZSBwaXhlbCBkYXRhLiBSZWFsIG9uIFBsb3RseTsgbm8tb3Agb24gT1NELiAqL1xuICBlbnN1cmVJbnRlbnNpdHlTYW1wbGluZyhpbWFnZUluZm86IElJbWFnZUluZm8sIHpJbmRleDogbnVtYmVyKTogUHJvbWlzZTx2b2lkPjtcbiAgLyoqIFJlLXNhbXBsZSB0aGUgcHJvZmlsZXMgZnJvbSBhIGZyZXNoIGNyb3Agb2YgdGhlIGdpdmVuIGltYWdlLXBpeGVsIFJPSSBhdFxuICAgKiAgZGlzcGxheSByZXNvbHV0aW9uLiBSZWFsIG9uIFBsb3RseTsgbm8tb3Agb24gT1NELiAqL1xuICByZWZyZXNoSW50ZW5zaXR5U2FtcGxpbmdGb3JSb2koeDogbnVtYmVyLCB5OiBudW1iZXIsIHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgekluZGV4OiBudW1iZXIpOiB2b2lkO1xuICAvKiogVmlzaWJsZS1yZWdpb24gY2hhbmdlcyAoaW1hZ2UtcGl4ZWwgY29vcmRzKSwgZW1pdHRlZCB3aGVuIHRoZSB2aWV3IHNldHRsZXMsXG4gICAqICBzbyB0aGUgaW5zZXQgY2FuIHJlLXNhbXBsZSBhdCB0aGUgY3VycmVudCB6b29tLiBSZWFsIG9uIE9TRDsgZW1wdHkgb24gUGxvdGx5XG4gICAqICAoaXRzIGhpZ2gtZGVmIHpvb20gdXBkYXRlcyB0aGUgc2FtcGxpbmcgY2FjaGUgaW5saW5lIGluc3RlYWQpLiAqL1xuICBnZXRWaWV3cG9ydENoYW5nZSQoKTogT2JzZXJ2YWJsZTx7IHg6IG51bWJlcjsgeTogbnVtYmVyOyB3aWR0aDogbnVtYmVyOyBoZWlnaHQ6IG51bWJlciB9Pjtcbn1cblxuLyoqIENvbXBvc2l0ZSBjb250cmFjdCBhIHZpc3VhbGl6YXRpb24gYmFja2VuZCBpbXBsZW1lbnRzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBJVmlzdWFsaXplciBleHRlbmRzIElEYXRhUmVuZGVyZXIsIElSZWdpb25TdG9yZSwgSVRvb2xDb250cm9sbGVyLCBJRGlzcGxheU9wdGlvbnMsXG4gIElJbnRlbnNpdHlTYW1wbGluZyB7XG4gIHJlYWRvbmx5IGNhcGFiaWxpdGllczogVmlld2VyQ2FwYWJpbGl0aWVzO1xuICAvKiogVGhpcyBiYWNrZW5kJ3MgcmVnaW9uIHJlbmRlcmVyLiBNYXkgYmUgbnVsbCB1bnRpbCBhIHBsb3QgaXMgbW91bnRlZFxuICAgKiAgKE9wZW5TZWFkcmFnb24pLiBEcml2ZXMgcmVnaW9uIGRyYXcvc2VsZWN0IG1vZGVzIHVuaWZvcm1seS4gKi9cbiAgZ2V0UmVnaW9uT3ZlcmxheSgpOiBJUmVnaW9uT3ZlcmxheSB8IG51bGw7XG4gIC8qKiBJc29zdXJmYWNlIGNvbnRyb2xzIHdoZW4gdGhpcyBiYWNrZW5kIGFkdmVydGlzZXMgYFZpZXdlckZlYXR1cmUuSXNvc3VyZmFjZWAsXG4gICAqICBlbHNlIG51bGwg4oCUIHNvIGNvbnN1bWVycyBnYXRlIG9uIHRoZSByZXR1cm5lZCBvYmplY3QsIG5vdCBhIG5vLW9wIG1ldGhvZC4gKi9cbiAgZ2V0SXNvc3VyZmFjZUNvbnRyb2xzKCk6IElJc29zdXJmYWNlQ29udHJvbHMgfCBudWxsO1xuICAvKiogSW50ZW5zaXR5IChsaW5lLVJPSSkgY29udHJvbHMgd2hlbiB0aGUgYmFja2VuZCByZW5kZXJzIHRoZSBMSU5FIHBsb3QgdHlwZSxcbiAgICogIGVsc2UgbnVsbC4gKi9cbiAgZ2V0SW50ZW5zaXR5Q29udHJvbHMoKTogSUludGVuc2l0eUNvbnRyb2xzIHwgbnVsbDtcbiAgLyoqIDNEIHNjZW5lIGNvbnRyb2xzIHdoZW4gdGhpcyBiYWNrZW5kIHJlbmRlcnMgM0QgcGxvdCB0eXBlcywgZWxzZSBudWxsIOKAlFxuICAgKiAgdGhlIGNhcGFiaWxpdHktZ2F0ZWQgcmVwbGFjZW1lbnQgZm9yIHRoZSBkZXByZWNhdGVkIHRvcC1sZXZlbFxuICAgKiAgYHNldFN1cmZhY2VEcmFnTW9kZWAvYHJlc2V0U3VyZmFjZUNhbWVyYWAuICovXG4gIGdldFN1cmZhY2UzZENvbnRyb2xzKCk6IElTdXJmYWNlM2RDb250cm9scyB8IG51bGw7XG4gIC8qKiBTcGF0aWFsLW9taWNzIGNvbnRyb2xzIHdoZW4gYSBgU1BBVElBTF9EQVRBX1BPUlRgIGlzIGJvdW5kLCBlbHNlIG51bGwuXG4gICAqICBPcHRpb25hbDogb25seSB0aGUgcm91dGluZyBzZXJ2aWNlIGltcGxlbWVudHMgaXQsIHNpbmNlIHRoZSBzdGF0ZSBpcyBzaGFyZWRcbiAgICogIHJhdGhlciB0aGFuIG93bmVkIGJ5IGFueSBvbmUgYmFja2VuZC4gKi9cbiAgZ2V0U3BhdGlhbENvbnRyb2xzPygpOiBJU3BhdGlhbENvbnRyb2xzIHwgbnVsbDtcbiAgLyoqIFRoZSB2aWV3cG9ydCBhIGNvbnRyaWJ1dGVkIHBsb3QgbW9kZSBkcmF3cyBvdmVyLCB3aGVuIHRoZSBiYWNrZW5kIG9uXG4gICAqICBzY3JlZW4gY2FuIHByb3ZpZGUgb25lIChPcGVuU2VhZHJhZ29uKSwgZWxzZSBudWxsLiBPcHRpb25hbDogYmFja2VuZHMgdGhhdFxuICAgKiAgbm8gY29udHJpYnV0ZWQgbW9kZSByaWRlcyBvbiBuZWVkIG5vdCBpbXBsZW1lbnQgaXQuICovXG4gIGdldFBsb3RNb2RlVmlld3BvcnQ/KCk6IFBsb3RNb2RlVmlld3BvcnQgfCBudWxsO1xuICAvKiogQmlubmVkIGludGVuc2l0eSBoaXN0b2dyYW0gZm9yIGEgY2hhbm5lbCBmcm9tIHRoZSBjdXJyZW50bHktZGlzcGxheWVkXG4gICAqICBwaXhlbHMsIG9yIG51bGwgd2hlbiBub25lIGFyZSBhdmFpbGFibGUuIEZlZWRzIHRoZSBDaGFubmVscyAmIEhpc3RvZ3JhbVxuICAgKiAgcGFuZS4gKi9cbiAgZ2V0SGlzdG9ncmFtKGNoYW5uZWxJbmRleDogbnVtYmVyLCBiaW5zOiBudW1iZXIpOiBJSGlzdG9ncmFtIHwgbnVsbDtcbiAgLyoqIEFzeW5jIGhpc3RvZ3JhbSBzdHJlYW0g4oCUIG5hdGl2ZSBiaXQgZGVwdGggZm9yID44LWJpdCBpbWFnZXMgKHNlcnZlciksIGVsc2VcbiAgICogIHRoZSA4LWJpdCBjbGllbnQgaGlzdG9ncmFtLiAqL1xuICBnZXRIaXN0b2dyYW0kKGNoYW5uZWxJbmRleDogbnVtYmVyLCBiaW5zOiBudW1iZXIpOiBPYnNlcnZhYmxlPElIaXN0b2dyYW0gfCBudWxsPjtcbiAgLyoqIEV4cG9ydCB0aGUgZGlzcGxheWVkIGltYWdlLCBjb21wb3NpdGVkIHdpdGggdGhlIGN1cnJlbnQgZGlzcGxheSBzZXR0aW5ncyxcbiAgICogIGFzIGEgcHVibGljYXRpb24tcmVhZHkgUE5HIGRvd25sb2FkLiAqL1xuICBleHBvcnRDb21wb3NpdGUoKTogdm9pZDtcbiAgLyoqIEV4cG9ydCB0aGUgdW5kZXJseWluZyBpbWFnZSBkYXRhIGFzIGEgZGF0YS1wcmVzZXJ2aW5nIG11bHRpLWJhbmQgVElGRlxuICAgKiAgKG5hdGl2ZSBiaXQgZGVwdGgpLiBOby1vcCBvbiBiYWNrZW5kcyB0aGF0IGNhbid0IHByb3ZpZGUgaXQuICovXG4gIGV4cG9ydERhdGEoKTogdm9pZDtcbiAgdW5zdWJzY3JpYmUoKTogdm9pZDtcbn1cblxuLyoqXG4gKiBESSB0b2tlbiBmb3IgdGhlIGFjdGl2ZSB2aXN1YWxpemF0aW9uIGJhY2tlbmQuIEJpbmQgaXQgKGB1c2VFeGlzdGluZ2ApIHRvIHRoZVxuICogYFJvdXRpbmdWaXN1YWxpemVyU2VydmljZWAsIHdoaWNoIHNlbGVjdHMgUGxvdGx5IHZzIE9wZW5TZWFkcmFnb24gcGVyIHBsb3RcbiAqIHR5cGUuIENvbnN1bWVycyDigJQgaW5jbHVkaW5nIHRoaXMgbGlicmFyeSdzIG93biBgVmlzdWFsaXplckNvbXBvbmVudGAg4oCUXG4gKiBpbmplY3QgYElWaXN1YWxpemVyYCB0aHJvdWdoIHRoaXMgdG9rZW4gcmF0aGVyIHRoYW4gdGhlIGNvbmNyZXRlIHJvdXRlciwgc29cbiAqIHRoZSByb3V0aW5nL2ZhbGxiYWNrIGltcGxlbWVudGF0aW9uIGNhbiBjaGFuZ2Ugd2l0aG91dCB0b3VjaGluZyBjb25zdHJ1Y3RvcnMuXG4gKi9cbmV4cG9ydCBjb25zdCBWSVNVQUxJWkVSID0gbmV3IEluamVjdGlvblRva2VuPElWaXN1YWxpemVyPignVklTVUFMSVpFUicpO1xuIl19
|