@jax-data-science/sci-image-visualizer 0.4.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +60 -0
- package/esm2022/index.mjs +2 -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/visualizer.contract.mjs +1 -1
- package/esm2022/lib/implementations/osd/openseadragon-visualizer.service.mjs +69 -6
- package/esm2022/lib/implementations/osd/osd-coordinate-transform.mjs +8 -1
- package/esm2022/lib/plot-mode/plot-mode-controller.mjs +329 -0
- package/esm2022/lib/routing-visualizer.service.mjs +6 -1
- package/esm2022/lib/toolbar/toolbar.component.mjs +37 -20
- package/esm2022/lib/visualizer.component.mjs +262 -40
- package/fesm2022/jax-data-science-sci-image-visualizer.mjs +772 -62
- package/fesm2022/jax-data-science-sci-image-visualizer.mjs.map +1 -1
- package/index.d.ts +1 -0
- package/lib/contracts/plot-type-contribution.contract.d.ts +172 -0
- package/lib/contracts/plot-type.d.ts +10 -0
- 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/toolbar.component.d.ts +18 -6
- package/lib/visualizer.component.d.ts +68 -7
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -580,6 +580,66 @@ jit-ui's `app.module.ts` for a full wiring example.
|
|
|
580
580
|
Each embeddable component uses a plain, unprefixed selector: `visualizer`,
|
|
581
581
|
`region-editor`, `plotting-toolbar`, `channel-histogram`, `hex-color-picker`.
|
|
582
582
|
|
|
583
|
+
## Contributed plot types
|
|
584
|
+
|
|
585
|
+
Another package can add a mode to the plot-type selector at runtime, through
|
|
586
|
+
Angular DI — the same way `TOOLBAR_TOOLS` contributes toolbar tools. Nothing
|
|
587
|
+
registers at import time: a mode appears only when the host provides it on the
|
|
588
|
+
`PLOT_TYPE_CONTRIBUTIONS` multi-provider token, and with no provider the
|
|
589
|
+
library behaves exactly as before. A contribution is a plain object, so the
|
|
590
|
+
contributing package needs no Angular compiler and no decorators.
|
|
591
|
+
|
|
592
|
+
```ts
|
|
593
|
+
import {
|
|
594
|
+
PLOT_TYPE_CONTRIBUTIONS, PlotType, PlotTypeContribution,
|
|
595
|
+
} from '@jax-data-science/sci-image-visualizer';
|
|
596
|
+
|
|
597
|
+
const myMode: PlotTypeContribution = {
|
|
598
|
+
descriptor: {
|
|
599
|
+
type: 'my-mode', // namespaced; must not clash with a PlotType
|
|
600
|
+
label: 'Image + my overlay', // test-mode label
|
|
601
|
+
productionLabel: 'My overlay', // omit to make the mode test-only
|
|
602
|
+
icon: 'pi pi-pencil',
|
|
603
|
+
dimensions: '2d',
|
|
604
|
+
baseType: PlotType.IMAGE, // v1: only the OpenSeadragon Image view
|
|
605
|
+
},
|
|
606
|
+
activate(ctx) {
|
|
607
|
+
// ctx.visualizer — the public IVisualizer (regions, region overlay, undo…)
|
|
608
|
+
// ctx.viewport — overlay container, dataToClient / clientToData, frame$ / settled$
|
|
609
|
+
// ctx.imageInfo$ — the current image
|
|
610
|
+
const sub = ctx.viewport.frame$.subscribe((visible) => redraw(visible));
|
|
611
|
+
return { deactivate: () => sub.unsubscribe() };
|
|
612
|
+
},
|
|
613
|
+
// Optional side panel, in the right-hand panel area while the mode is active.
|
|
614
|
+
// Either an Angular component (it can inject PLOT_MODE_CONTEXT / PLOT_MODE_SESSION)…
|
|
615
|
+
// panel: { title: 'My overlay', component: MyPanelComponent },
|
|
616
|
+
// …or plain DOM, for a package built without the Angular compiler:
|
|
617
|
+
panel: {
|
|
618
|
+
title: 'My overlay',
|
|
619
|
+
mount(host, ctx, session) {
|
|
620
|
+
host.textContent = 'Hello';
|
|
621
|
+
return () => { host.textContent = ''; }; // teardown
|
|
622
|
+
},
|
|
623
|
+
},
|
|
624
|
+
};
|
|
625
|
+
|
|
626
|
+
// Host composition root:
|
|
627
|
+
providers: [{ provide: PLOT_TYPE_CONTRIBUTIONS, useValue: myMode, multi: true }]
|
|
628
|
+
```
|
|
629
|
+
|
|
630
|
+
Selecting the mode plots exactly as its `baseType` would (same backend, toolbar,
|
|
631
|
+
region tools and wheel handling), then calls `activate(ctx)` once the viewport
|
|
632
|
+
is ready. `session.deactivate()` runs exactly once when the user leaves the
|
|
633
|
+
mode, when the image changes (a fresh session starts for the new image), or
|
|
634
|
+
when the visualizer is destroyed. Anything a contribution throws or rejects is
|
|
635
|
+
caught and logged. Failing to start falls back to `baseType`, and so does failing
|
|
636
|
+
to clean up when the same mode is about to be re-activated (re-render, image
|
|
637
|
+
switch). Contributed descriptors take the same `requiresGrayscale`,
|
|
638
|
+
`requiresStack`, `requiresSpatialData` and `requiresSpatial3d` gates as the
|
|
639
|
+
built-ins. The full contract
|
|
640
|
+
and its guarantees are documented in
|
|
641
|
+
[`plot-type-contribution.contract.ts`](./src/lib/contracts/plot-type-contribution.contract.ts).
|
|
642
|
+
|
|
583
643
|
## Development
|
|
584
644
|
|
|
585
645
|
```bash
|
package/esm2022/index.mjs
CHANGED
|
@@ -20,6 +20,7 @@ export * from './lib/contracts/image.contract';
|
|
|
20
20
|
export * from './lib/contracts/plot-type';
|
|
21
21
|
export * from './lib/contracts/toolbar-config';
|
|
22
22
|
export * from './lib/contracts/toolbar-tool.contract';
|
|
23
|
+
export * from './lib/contracts/plot-type-contribution.contract';
|
|
23
24
|
export * from './lib/contracts/capabilities.contract';
|
|
24
25
|
export * from './lib/contracts/region-overlay.contract';
|
|
25
26
|
export * from './lib/contracts/display-types';
|
|
@@ -71,4 +72,4 @@ export { SpatialChartsComponent } from './lib/spatial-controls/spatial-charts/sp
|
|
|
71
72
|
// Pure chart builders, exported so a host can render the same distributions
|
|
72
73
|
// wherever it likes (a report, a different charting surface).
|
|
73
74
|
export { buildOmicsTraces, omicsLayout, benefitsFromGrouping, } from './lib/implementations/plotly/omics-trace-builders';
|
|
74
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsNEVBQTRFO0FBQzVFLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLGdEQUFnRCxDQUFDO0FBQy9ELGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMseUNBQXlDLENBQUM7QUFDeEQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFFakcsNEVBQTRFO0FBQzVFLHVFQUF1RTtBQUN2RSx5RUFBeUU7QUFDekUsbUVBQW1FO0FBQ25FLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxlQUFlLEVBQUUsTUFBTSxtRUFBbUUsQ0FBQztBQUM1SCxPQUFPLEVBQ0wsb0JBQW9CLEVBQUUsY0FBYyxFQUFFLHFCQUFxQixFQUFFLG1CQUFtQixFQUNoRixZQUFZLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxtQkFBbUIsRUFBRSxjQUFjLEdBQzlFLE1BQU0sc0RBQXNELENBQUM7QUFJOUQsMkVBQTJFO0FBQzNFLE9BQU8sRUFDTCxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxxQkFBcUIsRUFBRSxjQUFjLEVBQzFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUNyQywyQkFBMkIsRUFBRSxxQkFBcUIsRUFBRSxhQUFhLEdBQ2xFLE1BQU0sZ0NBQWdDLENBQUM7QUFJeEMsaUZBQWlGO0FBQ2pGLHlCQUF5QjtBQUN6QixPQUFPLEVBQ0wsZUFBZSxFQUFFLGdCQUFnQixFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFDbEUsY0FBYyxFQUFFLFNBQVMsRUFBRSxhQUFhLEdBQ3pDLE1BQU0saUNBQWlDLENBQUM7QUFFekMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDOUUsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLDZDQUE2QyxDQUFDO0FBRTVELDhFQUE4RTtBQUM5RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDcEUsT0FBTyxFQUFFLFNBQVMsRUFBb0IsTUFBTSw2QkFBNkIsQ0FBQztBQUMxRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUVqRiw2RUFBNkU7QUFDN0UsT0FBTyxFQUNMLFVBQVUsRUFBRSxvQkFBb0IsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFDL0Usa0JBQWtCLEVBQUUsb0JBQW9CLEdBQ3pDLE1BQU0sK0NBQStDLENBQUM7QUFFdkQsOEVBQThFO0FBQzlFLE9BQU8sRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFFL0YsNEVBQTRFO0FBQzVFLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFcEQsNEVBQTRFO0FBQzVFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzVFLDZFQUE2RTtBQUM3RSxtRUFBbUU7QUFDbkUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFbkUsNkVBQTZFO0FBQzdFLDBFQUEwRTtBQUMxRSw4RUFBOEU7QUFDOUUsNkRBQTZEO0FBQzdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQzVGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQ2hHLE9BQU8sRUFDTCx3QkFBd0IsR0FDekIsTUFBTSxtREFBbUQsQ0FBQztBQUUzRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnRUFBZ0UsQ0FBQztBQUN4Ryw0RUFBNEU7QUFDNUUsOERBQThEO0FBQzlELE9BQU8sRUFDTCxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsb0JBQW9CLEdBQ3BELE1BQU0sbURBQW1ELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFB1YmxpYyBBUEkgb2YgdGhlIGpheC1pbWFnZS12aXN1YWxpemF0aW9uIGxpYnJhcnkuIEV4dGVybmFsIGNvbnN1bWVycyBpbXBvcnRcbiAqIE9OTFkgZnJvbSBoZXJlIChgQGpheC1kYXRhLXNjaWVuY2Uvc2NpLWltYWdlLXZpc3VhbGl6ZXJgKTsgZXZlcnl0aGluZyBlbHNlIHVuZGVyIGBsaWIvYCBpc1xuICogaW50ZXJuYWwuIFRoZSBzdXJmYWNlIGlzIGNvbnRyYWN0cyArIHRva2VucyArIG5ldXRyYWwgbW9kZWxzICsgdGhlIEFuZ3VsYXJcbiAqIG1vZHVsZSwgcGx1cyB0aGUgcm91dGluZyBzZXJ2aWNlIHRoZSBob3N0J3MgY29tcG9zaXRpb24gcm9vdCBiaW5kcyB0aGUgdG9rZW5zXG4gKiB0byAoYHVzZUV4aXN0aW5nYCkuXG4gKi9cblxuLy8g4pSA4pSAIENvbnRyYWN0cyAmIERJIHRva2VucyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyYWN0cy92aXN1YWxpemVyLmNvbnRyYWN0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyYWN0cy9yZWdpb24tZWRpdG9yLWFwaS5jb250cmFjdCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cmFjdHMvcG9ydHMvaW1hZ2Utc3RhdGUucG9ydCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cmFjdHMvcG9ydHMvdGlsZS1hY2Nlc3MucG9ydCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cmFjdHMvcG9ydHMvcmVnaW9uLWlvLnBvcnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJhY3RzL3BvcnRzL3ByZWZlcmVuY2VzLnBvcnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJhY3RzL3BvcnRzL3NwYXRpYWwtZGF0YS5wb3J0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyYWN0cy9zcGF0aWFsLWRhdGFzZXQuY29udHJhY3QnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJhY3RzL2NoYW5uZWwtaGlzdG9ncmFtLWFwaS5jb250cmFjdCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cmFjdHMvdml6LWNvbmZpZyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cmFjdHMvaW1hZ2UuY29udHJhY3QnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJhY3RzL3Bsb3QtdHlwZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cmFjdHMvdG9vbGJhci1jb25maWcnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJhY3RzL3Rvb2xiYXItdG9vbC5jb250cmFjdCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cmFjdHMvY2FwYWJpbGl0aWVzLmNvbnRyYWN0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyYWN0cy9yZWdpb24tb3ZlcmxheS5jb250cmFjdCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cmFjdHMvZGlzcGxheS10eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cmFjdHMvc2FtLmNvbnRyYWN0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyYWN0cy9jZWxsLXNlZ21lbnRlci5jb250cmFjdCc7XG5leHBvcnQgeyBDZWxscG9zZVNlZ21lbnRlclNlcnZpY2UgfSBmcm9tICcuL2xpYi90b29sYmFyL3NlZ21lbnRhdGlvbi9jZWxscG9zZS1zZWdtZW50ZXIuc2VydmljZSc7XG5cbi8vIOKUgOKUgCBTcGF0aWFsLW9taWNzIGRhdGEgcGxhbmUg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4vLyBUaGUgd2lyZSBmb3JtYXQgdGhlIGJ1bmRsZWQgZXhhbXBsZSBzZXJ2ZXIgc3BlYWtzLCBwbHVzIGEgcmVhZHktbWFkZVxuLy8gU3BhdGlhbERhdGFQb3J0IGFkYXB0ZXIgZm9yIGl0LiBCb3RoIGFyZSBPUFRJT05BTDogYSBob3N0IHdpdGggaXRzIG93blxuLy8gYmFja2VuZCBpbXBsZW1lbnRzIFNwYXRpYWxEYXRhUG9ydCBkaXJlY3RseSBhbmQgaW1wb3J0cyBuZWl0aGVyLlxuZXhwb3J0IHsgU3BhdGlhbERhdGFIdHRwU2VydmljZSwgU3VwZXJzZWRlZEVycm9yIH0gZnJvbSAnLi9saWIvaW1wbGVtZW50YXRpb25zL3NwYXRpYWwtZGF0YS1odHRwL3NwYXRpYWwtZGF0YS1odHRwLnNlcnZpY2UnO1xuZXhwb3J0IHtcbiAgU1BBVElBTF9XSVJFX1ZFUlNJT04sIGlzTGl0dGxlRW5kaWFuLCBhc3NlcnRNYW5pZmVzdFZlcnNpb24sIGRhdGFzZXRGcm9tTWFuaWZlc3QsXG4gIGRlY29kZUNvb3JkcywgZGVjb2RlUmFkaXVzLCBkZWNvZGVDb2x1bW4sIGRlY29kZUZlYXR1cmVWZWN0b3IsIGRlY29kZVBvbHlnb25zLFxufSBmcm9tICcuL2xpYi9pbXBsZW1lbnRhdGlvbnMvc3BhdGlhbC1kYXRhLWh0dHAvc3BhdGlhbC13aXJlJztcbmV4cG9ydCB0eXBlIHtcbiAgU3BhdGlhbE1hbmlmZXN0LCBTcGF0aWFsRGF0YXNldFN1bW1hcnksIFNwYXRpYWxSYWRpdXNTcGVjLFxufSBmcm9tICcuL2xpYi9pbXBsZW1lbnRhdGlvbnMvc3BhdGlhbC1kYXRhLWh0dHAvc3BhdGlhbC13aXJlJztcbi8vIEJhY2tlbmQtbmV1dHJhbCBlbmNvZGluZ3M6IGNvbHVtbnMvZ2VuZXMgLT4gcGVyLXBvaW50IGNvbG91cnMgYW5kIHNpemVzLlxuZXhwb3J0IHtcbiAgZW5jb2RlQ2F0ZWdvcmljYWwsIGVuY29kZUNvbnRpbnVvdXMsIHJlc29sdmVDYXRlZ29yeUNvbG9ycywgY29udHJhc3RXaW5kb3csXG4gIG1hcmtlckRpYW1ldGVycywgdG9SZ2JhVHVwbGVzLCBsdXRGb3IsXG4gIERFRkFVTFRfQ0FURUdPUklDQUxfUEFMRVRURSwgREVGQVVMVF9NVVRFRF9PUEFDSVRZLCBNSVNTSU5HX0NPTE9SLFxufSBmcm9tICcuL2xpYi9zcGF0aWFsL3NwYXRpYWwtZW5jb2RpbmcnO1xuZXhwb3J0IHR5cGUge1xuICBSR0JBLCBDYXRlZ29yaWNhbEVuY29kaW5nT3B0aW9ucywgQ29udGludW91c0VuY29kaW5nT3B0aW9ucyxcbn0gZnJvbSAnLi9saWIvc3BhdGlhbC9zcGF0aWFsLWVuY29kaW5nJztcbi8vIFNlbGVjdGlvbjogd2hpY2ggb2JzZXJ2YXRpb25zIGZhbGwgaW5zaWRlIHRoZSBkcmF3biBST0lzLCBhbmQgdGhlIHNoYXJlZCBzdG9yZVxuLy8gdGhhdCBob2xkcyB0aGUgYW5zd2VyLlxuZXhwb3J0IHtcbiAgc2VsZWN0SW5SZWdpb25zLCBzZWxlY3RCeUNhdGVnb3J5LCBtdXRlZEZyb21TZWxlY3Rpb24sIHBvaW50SW5SaW5nLFxuICBlbXB0eVNlbGVjdGlvbiwgY291bnRNYXNrLCBtYXNrVG9JbmRpY2VzLFxufSBmcm9tICcuL2xpYi9zcGF0aWFsL3NwYXRpYWwtc2VsZWN0aW9uJztcbmV4cG9ydCB0eXBlIHsgU3BhdGlhbFNlbGVjdGlvbk1hc2sgfSBmcm9tICcuL2xpYi9zcGF0aWFsL3NwYXRpYWwtc2VsZWN0aW9uJztcbmV4cG9ydCB7IFNwYXRpYWxTZWxlY3Rpb25TdG9yZSB9IGZyb20gJy4vbGliL3N0b3JlL3NwYXRpYWwtc2VsZWN0aW9uLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJhY3RzL2luc3RhbmNlLXNlZ21lbnRlci5jb250cmFjdCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cmFjdHMvc2VtYW50aWMtc2VnbWVudGVyLmNvbnRyYWN0JztcblxuLy8g4pSA4pSAIEdlbmVyaWMgY2xpZW50LXNpZGUgaW1hZ2UgdXRpbGl0aWVzIChzaGFyZWQgd2l0aCB0aGUgaG9zdCdzIHBpcGVsaW5lKSDilIDilIBcbmV4cG9ydCB7IFByb2Nlc3NpbmdJbWFnZSB9IGZyb20gJy4vbGliL3Byb2Nlc3NpbmcvcHJvY2Vzc2luZy1pbWFnZSc7XG5leHBvcnQgeyBjcm9wSW1hZ2UsIENyb3BJbWFnZU9wdGlvbnMgfSBmcm9tICcuL2xpYi9wcm9jZXNzaW5nL2ltYWdlLWNyb3AnO1xuZXhwb3J0IHsgSW1hZ2VDb252ZXJ0ZXJTZXJ2aWNlIH0gZnJvbSAnLi9saWIvcHJvY2Vzc2luZy9pbWFnZS1jb252ZXJ0ZXIuc2VydmljZSc7XG5cbi8vIOKUgOKUgCBTQU0gbW9kZWwgcmVnaXN0cnkgKGhvc3QgY29uZmlndXJlcyBob3N0ZWQgT05OWCBVUkxzIG9uY2UgYXZhaWxhYmxlKSDilIDilIBcbmV4cG9ydCB7XG4gIFNBTV9NT0RFTFMsIERFRkFVTFRfU0FNX01PREVMX0lELCBnZXRTYW1Nb2RlbCwgaXNTYW1Nb2RlbFJlYWR5LCBzZXRTYW1Nb2RlbFVybHMsXG4gIHNldERlZmF1bHRTYW1Nb2RlbCwgZ2V0RGVmYXVsdFNhbU1vZGVsSWQsXG59IGZyb20gJy4vbGliL3Rvb2xiYXIvc2VnbWVudGF0aW9uL3NhbS1tb2RlbC1yZWdpc3RyeSc7XG5cbi8vIOKUgOKUgCBvbm54cnVudGltZS13ZWIgV0FTTSBsb2NhdGlvbiAoaG9zdCBvdmVycmlkZXMgb25jZSwgYXQgYXBwIGluaXQpIOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuZXhwb3J0IHsgc2V0T3J0V2FzbUJhc2UsIGdldE9ydFdhc21CYXNlIH0gZnJvbSAnLi9saWIvdG9vbGJhci9zZWdtZW50YXRpb24vb3J0LXJ1bnRpbWUtY29uZmlnJztcblxuLy8g4pSA4pSAIE5ldXRyYWwgZGF0YSBtb2RlbHMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbHMvcmVnaW9uJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVscy9jbGFzcy1wcmVzZXQnO1xuZXhwb3J0IHsgU2hhcGVTZWxlY3Rpb24gfSBmcm9tICcuL2xpYi9tb2RlbHMvc2hhcGUnO1xuXG4vLyDilIDilIAgQW5ndWxhciBtb2R1bGUgKyBjb21wb3NpdGlvbi1yb290IHNlcnZpY2Ug4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5leHBvcnQgeyBWaXN1YWxpemF0aW9uTW9kdWxlIH0gZnJvbSAnLi9saWIvdmlzdWFsaXphdGlvbi5tb2R1bGUnO1xuZXhwb3J0IHsgUm91dGluZ1Zpc3VhbGl6ZXJTZXJ2aWNlIH0gZnJvbSAnLi9saWIvcm91dGluZy12aXN1YWxpemVyLnNlcnZpY2UnO1xuLy8gUHJvdmlkZXIgZmFjdG9yeSBmb3IgYW4gaXNvbGF0ZWQsIGNvbXBvbmVudC1zY29wZWQgdmlld2VyIGluc3RhbmNlIChlLmcuIGFcbi8vIG1vZGFsIHRoYXQgbXVzdCBub3Qgc2hhcmUgdGhlIG1haW4gdmlld2VyJ3MgcmVnaW9uL2ltYWdlIHN0YXRlKS5cbmV4cG9ydCB7IHByb3ZpZGVWaXN1YWxpemF0aW9uIH0gZnJvbSAnLi9saWIvcHJvdmlkZS12aXN1YWxpemF0aW9uJztcblxuLy8g4pSA4pSAIFB1YmxpYyBjb21wb25lbnRzIChleHBvcnRlZCBieSBWaXN1YWxpemF0aW9uTW9kdWxlKSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbi8vIG5nLXBhY2thZ3IgcmVxdWlyZXMgbW9kdWxlLWV4cG9ydGVkIGNvbXBvbmVudHMgdG8gYmUgcmVhY2hhYmxlIGZyb20gdGhlXG4vLyBlbnRyeSBwb2ludCBzbyBjb25zdW1lcnMgZ2V0IHRoZWlyIHR5cGVzOyB0aGVzZSBhcmUgdGhlIGVtYmVkZGFibGUgZWxlbWVudHNcbi8vIChgPHZpc3VhbGl6ZXI+YCwgYDxyZWdpb24tZWRpdG9yPmAsIGA8aGV4LWNvbG9yLXBpY2tlcj5gKS5cbmV4cG9ydCB7IFZpc3VhbGl6ZXJDb21wb25lbnQgfSBmcm9tICcuL2xpYi92aXN1YWxpemVyLmNvbXBvbmVudCc7XG5leHBvcnQgeyBSZWdpb25FZGl0b3JDb21wb25lbnQgfSBmcm9tICcuL2xpYi9yZWdpb24tZWRpdG9yL3JlZ2lvbi1lZGl0b3IuY29tcG9uZW50JztcbmV4cG9ydCB7IEhleENvbG9yUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi9saWIvaGV4LWNvbG9yLXBpY2tlci9oZXgtY29sb3ItcGlja2VyLmNvbXBvbmVudCc7XG5leHBvcnQgeyBDaGFubmVsSGlzdG9ncmFtQ29tcG9uZW50IH0gZnJvbSAnLi9saWIvY2hhbm5lbC1oaXN0b2dyYW0vY2hhbm5lbC1oaXN0b2dyYW0uY29tcG9uZW50JztcbmV4cG9ydCB7XG4gIFNwYXRpYWxDb250cm9sc0NvbXBvbmVudCxcbn0gZnJvbSAnLi9saWIvc3BhdGlhbC1jb250cm9scy9zcGF0aWFsLWNvbnRyb2xzLmNvbXBvbmVudCc7XG5leHBvcnQgdHlwZSB7IFNwYXRpYWxMZWdlbmRFbnRyeSB9IGZyb20gJy4vbGliL3NwYXRpYWwtY29udHJvbHMvc3BhdGlhbC1jb250cm9scy5jb21wb25lbnQnO1xuZXhwb3J0IHsgU3BhdGlhbENoYXJ0c0NvbXBvbmVudCB9IGZyb20gJy4vbGliL3NwYXRpYWwtY29udHJvbHMvc3BhdGlhbC1jaGFydHMvc3BhdGlhbC1jaGFydHMuY29tcG9uZW50Jztcbi8vIFB1cmUgY2hhcnQgYnVpbGRlcnMsIGV4cG9ydGVkIHNvIGEgaG9zdCBjYW4gcmVuZGVyIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbnNcbi8vIHdoZXJldmVyIGl0IGxpa2VzIChhIHJlcG9ydCwgYSBkaWZmZXJlbnQgY2hhcnRpbmcgc3VyZmFjZSkuXG5leHBvcnQge1xuICBidWlsZE9taWNzVHJhY2VzLCBvbWljc0xheW91dCwgYmVuZWZpdHNGcm9tR3JvdXBpbmcsXG59IGZyb20gJy4vbGliL2ltcGxlbWVudGF0aW9ucy9wbG90bHkvb21pY3MtdHJhY2UtYnVpbGRlcnMnO1xuZXhwb3J0IHR5cGUge1xuICBPbWljc0NoYXJ0S2luZCwgT21pY3NHcm91cGluZywgT21pY3NUcmFjZUlucHV0LFxufSBmcm9tICcuL2xpYi9pbXBsZW1lbnRhdGlvbnMvcGxvdGx5L29taWNzLXRyYWNlLWJ1aWxkZXJzJztcbiJdfQ==
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsNEVBQTRFO0FBQzVFLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLGdEQUFnRCxDQUFDO0FBQy9ELGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLGlEQUFpRCxDQUFDO0FBQ2hFLGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUVqRyw0RUFBNEU7QUFDNUUsdUVBQXVFO0FBQ3ZFLHlFQUF5RTtBQUN6RSxtRUFBbUU7QUFDbkUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLGVBQWUsRUFBRSxNQUFNLG1FQUFtRSxDQUFDO0FBQzVILE9BQU8sRUFDTCxvQkFBb0IsRUFBRSxjQUFjLEVBQUUscUJBQXFCLEVBQUUsbUJBQW1CLEVBQ2hGLFlBQVksRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLG1CQUFtQixFQUFFLGNBQWMsR0FDOUUsTUFBTSxzREFBc0QsQ0FBQztBQUk5RCwyRUFBMkU7QUFDM0UsT0FBTyxFQUNMLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLHFCQUFxQixFQUFFLGNBQWMsRUFDMUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQ3JDLDJCQUEyQixFQUFFLHFCQUFxQixFQUFFLGFBQWEsR0FDbEUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUl4QyxpRkFBaUY7QUFDakYseUJBQXlCO0FBQ3pCLE9BQU8sRUFDTCxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsV0FBVyxFQUNsRSxjQUFjLEVBQUUsU0FBUyxFQUFFLGFBQWEsR0FDekMsTUFBTSxpQ0FBaUMsQ0FBQztBQUV6QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM5RSxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsNkNBQTZDLENBQUM7QUFFNUQsOEVBQThFO0FBQzlFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsU0FBUyxFQUFvQixNQUFNLDZCQUE2QixDQUFDO0FBQzFFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBRWpGLDZFQUE2RTtBQUM3RSxPQUFPLEVBQ0wsVUFBVSxFQUFFLG9CQUFvQixFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUMvRSxrQkFBa0IsRUFBRSxvQkFBb0IsR0FDekMsTUFBTSwrQ0FBK0MsQ0FBQztBQUV2RCw4RUFBOEU7QUFDOUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUUvRiw0RUFBNEU7QUFDNUUsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVwRCw0RUFBNEU7QUFDNUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDakUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDNUUsNkVBQTZFO0FBQzdFLG1FQUFtRTtBQUNuRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUVuRSw2RUFBNkU7QUFDN0UsMEVBQTBFO0FBQzFFLDhFQUE4RTtBQUM5RSw2REFBNkQ7QUFDN0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDakUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDcEYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDNUYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDaEcsT0FBTyxFQUNMLHdCQUF3QixHQUN6QixNQUFNLG1EQUFtRCxDQUFDO0FBRTNELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGdFQUFnRSxDQUFDO0FBQ3hHLDRFQUE0RTtBQUM1RSw4REFBOEQ7QUFDOUQsT0FBTyxFQUNMLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxvQkFBb0IsR0FDcEQsTUFBTSxtREFBbUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUHVibGljIEFQSSBvZiB0aGUgamF4LWltYWdlLXZpc3VhbGl6YXRpb24gbGlicmFyeS4gRXh0ZXJuYWwgY29uc3VtZXJzIGltcG9ydFxuICogT05MWSBmcm9tIGhlcmUgKGBAamF4LWRhdGEtc2NpZW5jZS9zY2ktaW1hZ2UtdmlzdWFsaXplcmApOyBldmVyeXRoaW5nIGVsc2UgdW5kZXIgYGxpYi9gIGlzXG4gKiBpbnRlcm5hbC4gVGhlIHN1cmZhY2UgaXMgY29udHJhY3RzICsgdG9rZW5zICsgbmV1dHJhbCBtb2RlbHMgKyB0aGUgQW5ndWxhclxuICogbW9kdWxlLCBwbHVzIHRoZSByb3V0aW5nIHNlcnZpY2UgdGhlIGhvc3QncyBjb21wb3NpdGlvbiByb290IGJpbmRzIHRoZSB0b2tlbnNcbiAqIHRvIChgdXNlRXhpc3RpbmdgKS5cbiAqL1xuXG4vLyDilIDilIAgQ29udHJhY3RzICYgREkgdG9rZW5zIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJhY3RzL3Zpc3VhbGl6ZXIuY29udHJhY3QnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJhY3RzL3JlZ2lvbi1lZGl0b3ItYXBpLmNvbnRyYWN0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyYWN0cy9wb3J0cy9pbWFnZS1zdGF0ZS5wb3J0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyYWN0cy9wb3J0cy90aWxlLWFjY2Vzcy5wb3J0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyYWN0cy9wb3J0cy9yZWdpb24taW8ucG9ydCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cmFjdHMvcG9ydHMvcHJlZmVyZW5jZXMucG9ydCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cmFjdHMvcG9ydHMvc3BhdGlhbC1kYXRhLnBvcnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJhY3RzL3NwYXRpYWwtZGF0YXNldC5jb250cmFjdCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cmFjdHMvY2hhbm5lbC1oaXN0b2dyYW0tYXBpLmNvbnRyYWN0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyYWN0cy92aXotY29uZmlnJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyYWN0cy9pbWFnZS5jb250cmFjdCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cmFjdHMvcGxvdC10eXBlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyYWN0cy90b29sYmFyLWNvbmZpZyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cmFjdHMvdG9vbGJhci10b29sLmNvbnRyYWN0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyYWN0cy9wbG90LXR5cGUtY29udHJpYnV0aW9uLmNvbnRyYWN0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyYWN0cy9jYXBhYmlsaXRpZXMuY29udHJhY3QnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJhY3RzL3JlZ2lvbi1vdmVybGF5LmNvbnRyYWN0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyYWN0cy9kaXNwbGF5LXR5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyYWN0cy9zYW0uY29udHJhY3QnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJhY3RzL2NlbGwtc2VnbWVudGVyLmNvbnRyYWN0JztcbmV4cG9ydCB7IENlbGxwb3NlU2VnbWVudGVyU2VydmljZSB9IGZyb20gJy4vbGliL3Rvb2xiYXIvc2VnbWVudGF0aW9uL2NlbGxwb3NlLXNlZ21lbnRlci5zZXJ2aWNlJztcblxuLy8g4pSA4pSAIFNwYXRpYWwtb21pY3MgZGF0YSBwbGFuZSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbi8vIFRoZSB3aXJlIGZvcm1hdCB0aGUgYnVuZGxlZCBleGFtcGxlIHNlcnZlciBzcGVha3MsIHBsdXMgYSByZWFkeS1tYWRlXG4vLyBTcGF0aWFsRGF0YVBvcnQgYWRhcHRlciBmb3IgaXQuIEJvdGggYXJlIE9QVElPTkFMOiBhIGhvc3Qgd2l0aCBpdHMgb3duXG4vLyBiYWNrZW5kIGltcGxlbWVudHMgU3BhdGlhbERhdGFQb3J0IGRpcmVjdGx5IGFuZCBpbXBvcnRzIG5laXRoZXIuXG5leHBvcnQgeyBTcGF0aWFsRGF0YUh0dHBTZXJ2aWNlLCBTdXBlcnNlZGVkRXJyb3IgfSBmcm9tICcuL2xpYi9pbXBsZW1lbnRhdGlvbnMvc3BhdGlhbC1kYXRhLWh0dHAvc3BhdGlhbC1kYXRhLWh0dHAuc2VydmljZSc7XG5leHBvcnQge1xuICBTUEFUSUFMX1dJUkVfVkVSU0lPTiwgaXNMaXR0bGVFbmRpYW4sIGFzc2VydE1hbmlmZXN0VmVyc2lvbiwgZGF0YXNldEZyb21NYW5pZmVzdCxcbiAgZGVjb2RlQ29vcmRzLCBkZWNvZGVSYWRpdXMsIGRlY29kZUNvbHVtbiwgZGVjb2RlRmVhdHVyZVZlY3RvciwgZGVjb2RlUG9seWdvbnMsXG59IGZyb20gJy4vbGliL2ltcGxlbWVudGF0aW9ucy9zcGF0aWFsLWRhdGEtaHR0cC9zcGF0aWFsLXdpcmUnO1xuZXhwb3J0IHR5cGUge1xuICBTcGF0aWFsTWFuaWZlc3QsIFNwYXRpYWxEYXRhc2V0U3VtbWFyeSwgU3BhdGlhbFJhZGl1c1NwZWMsXG59IGZyb20gJy4vbGliL2ltcGxlbWVudGF0aW9ucy9zcGF0aWFsLWRhdGEtaHR0cC9zcGF0aWFsLXdpcmUnO1xuLy8gQmFja2VuZC1uZXV0cmFsIGVuY29kaW5nczogY29sdW1ucy9nZW5lcyAtPiBwZXItcG9pbnQgY29sb3VycyBhbmQgc2l6ZXMuXG5leHBvcnQge1xuICBlbmNvZGVDYXRlZ29yaWNhbCwgZW5jb2RlQ29udGludW91cywgcmVzb2x2ZUNhdGVnb3J5Q29sb3JzLCBjb250cmFzdFdpbmRvdyxcbiAgbWFya2VyRGlhbWV0ZXJzLCB0b1JnYmFUdXBsZXMsIGx1dEZvcixcbiAgREVGQVVMVF9DQVRFR09SSUNBTF9QQUxFVFRFLCBERUZBVUxUX01VVEVEX09QQUNJVFksIE1JU1NJTkdfQ09MT1IsXG59IGZyb20gJy4vbGliL3NwYXRpYWwvc3BhdGlhbC1lbmNvZGluZyc7XG5leHBvcnQgdHlwZSB7XG4gIFJHQkEsIENhdGVnb3JpY2FsRW5jb2RpbmdPcHRpb25zLCBDb250aW51b3VzRW5jb2RpbmdPcHRpb25zLFxufSBmcm9tICcuL2xpYi9zcGF0aWFsL3NwYXRpYWwtZW5jb2RpbmcnO1xuLy8gU2VsZWN0aW9uOiB3aGljaCBvYnNlcnZhdGlvbnMgZmFsbCBpbnNpZGUgdGhlIGRyYXduIFJPSXMsIGFuZCB0aGUgc2hhcmVkIHN0b3JlXG4vLyB0aGF0IGhvbGRzIHRoZSBhbnN3ZXIuXG5leHBvcnQge1xuICBzZWxlY3RJblJlZ2lvbnMsIHNlbGVjdEJ5Q2F0ZWdvcnksIG11dGVkRnJvbVNlbGVjdGlvbiwgcG9pbnRJblJpbmcsXG4gIGVtcHR5U2VsZWN0aW9uLCBjb3VudE1hc2ssIG1hc2tUb0luZGljZXMsXG59IGZyb20gJy4vbGliL3NwYXRpYWwvc3BhdGlhbC1zZWxlY3Rpb24nO1xuZXhwb3J0IHR5cGUgeyBTcGF0aWFsU2VsZWN0aW9uTWFzayB9IGZyb20gJy4vbGliL3NwYXRpYWwvc3BhdGlhbC1zZWxlY3Rpb24nO1xuZXhwb3J0IHsgU3BhdGlhbFNlbGVjdGlvblN0b3JlIH0gZnJvbSAnLi9saWIvc3RvcmUvc3BhdGlhbC1zZWxlY3Rpb24uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cmFjdHMvaW5zdGFuY2Utc2VnbWVudGVyLmNvbnRyYWN0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyYWN0cy9zZW1hbnRpYy1zZWdtZW50ZXIuY29udHJhY3QnO1xuXG4vLyDilIDilIAgR2VuZXJpYyBjbGllbnQtc2lkZSBpbWFnZSB1dGlsaXRpZXMgKHNoYXJlZCB3aXRoIHRoZSBob3N0J3MgcGlwZWxpbmUpIOKUgOKUgFxuZXhwb3J0IHsgUHJvY2Vzc2luZ0ltYWdlIH0gZnJvbSAnLi9saWIvcHJvY2Vzc2luZy9wcm9jZXNzaW5nLWltYWdlJztcbmV4cG9ydCB7IGNyb3BJbWFnZSwgQ3JvcEltYWdlT3B0aW9ucyB9IGZyb20gJy4vbGliL3Byb2Nlc3NpbmcvaW1hZ2UtY3JvcCc7XG5leHBvcnQgeyBJbWFnZUNvbnZlcnRlclNlcnZpY2UgfSBmcm9tICcuL2xpYi9wcm9jZXNzaW5nL2ltYWdlLWNvbnZlcnRlci5zZXJ2aWNlJztcblxuLy8g4pSA4pSAIFNBTSBtb2RlbCByZWdpc3RyeSAoaG9zdCBjb25maWd1cmVzIGhvc3RlZCBPTk5YIFVSTHMgb25jZSBhdmFpbGFibGUpIOKUgOKUgFxuZXhwb3J0IHtcbiAgU0FNX01PREVMUywgREVGQVVMVF9TQU1fTU9ERUxfSUQsIGdldFNhbU1vZGVsLCBpc1NhbU1vZGVsUmVhZHksIHNldFNhbU1vZGVsVXJscyxcbiAgc2V0RGVmYXVsdFNhbU1vZGVsLCBnZXREZWZhdWx0U2FtTW9kZWxJZCxcbn0gZnJvbSAnLi9saWIvdG9vbGJhci9zZWdtZW50YXRpb24vc2FtLW1vZGVsLXJlZ2lzdHJ5JztcblxuLy8g4pSA4pSAIG9ubnhydW50aW1lLXdlYiBXQVNNIGxvY2F0aW9uIChob3N0IG92ZXJyaWRlcyBvbmNlLCBhdCBhcHAgaW5pdCkg4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5leHBvcnQgeyBzZXRPcnRXYXNtQmFzZSwgZ2V0T3J0V2FzbUJhc2UgfSBmcm9tICcuL2xpYi90b29sYmFyL3NlZ21lbnRhdGlvbi9vcnQtcnVudGltZS1jb25maWcnO1xuXG4vLyDilIDilIAgTmV1dHJhbCBkYXRhIG1vZGVscyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVscy9yZWdpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzL2NsYXNzLXByZXNldCc7XG5leHBvcnQgeyBTaGFwZVNlbGVjdGlvbiB9IGZyb20gJy4vbGliL21vZGVscy9zaGFwZSc7XG5cbi8vIOKUgOKUgCBBbmd1bGFyIG1vZHVsZSArIGNvbXBvc2l0aW9uLXJvb3Qgc2VydmljZSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbmV4cG9ydCB7IFZpc3VhbGl6YXRpb25Nb2R1bGUgfSBmcm9tICcuL2xpYi92aXN1YWxpemF0aW9uLm1vZHVsZSc7XG5leHBvcnQgeyBSb3V0aW5nVmlzdWFsaXplclNlcnZpY2UgfSBmcm9tICcuL2xpYi9yb3V0aW5nLXZpc3VhbGl6ZXIuc2VydmljZSc7XG4vLyBQcm92aWRlciBmYWN0b3J5IGZvciBhbiBpc29sYXRlZCwgY29tcG9uZW50LXNjb3BlZCB2aWV3ZXIgaW5zdGFuY2UgKGUuZy4gYVxuLy8gbW9kYWwgdGhhdCBtdXN0IG5vdCBzaGFyZSB0aGUgbWFpbiB2aWV3ZXIncyByZWdpb24vaW1hZ2Ugc3RhdGUpLlxuZXhwb3J0IHsgcHJvdmlkZVZpc3VhbGl6YXRpb24gfSBmcm9tICcuL2xpYi9wcm92aWRlLXZpc3VhbGl6YXRpb24nO1xuXG4vLyDilIDilIAgUHVibGljIGNvbXBvbmVudHMgKGV4cG9ydGVkIGJ5IFZpc3VhbGl6YXRpb25Nb2R1bGUpIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuLy8gbmctcGFja2FnciByZXF1aXJlcyBtb2R1bGUtZXhwb3J0ZWQgY29tcG9uZW50cyB0byBiZSByZWFjaGFibGUgZnJvbSB0aGVcbi8vIGVudHJ5IHBvaW50IHNvIGNvbnN1bWVycyBnZXQgdGhlaXIgdHlwZXM7IHRoZXNlIGFyZSB0aGUgZW1iZWRkYWJsZSBlbGVtZW50c1xuLy8gKGA8dmlzdWFsaXplcj5gLCBgPHJlZ2lvbi1lZGl0b3I+YCwgYDxoZXgtY29sb3ItcGlja2VyPmApLlxuZXhwb3J0IHsgVmlzdWFsaXplckNvbXBvbmVudCB9IGZyb20gJy4vbGliL3Zpc3VhbGl6ZXIuY29tcG9uZW50JztcbmV4cG9ydCB7IFJlZ2lvbkVkaXRvckNvbXBvbmVudCB9IGZyb20gJy4vbGliL3JlZ2lvbi1lZGl0b3IvcmVnaW9uLWVkaXRvci5jb21wb25lbnQnO1xuZXhwb3J0IHsgSGV4Q29sb3JQaWNrZXJDb21wb25lbnQgfSBmcm9tICcuL2xpYi9oZXgtY29sb3ItcGlja2VyL2hleC1jb2xvci1waWNrZXIuY29tcG9uZW50JztcbmV4cG9ydCB7IENoYW5uZWxIaXN0b2dyYW1Db21wb25lbnQgfSBmcm9tICcuL2xpYi9jaGFubmVsLWhpc3RvZ3JhbS9jaGFubmVsLWhpc3RvZ3JhbS5jb21wb25lbnQnO1xuZXhwb3J0IHtcbiAgU3BhdGlhbENvbnRyb2xzQ29tcG9uZW50LFxufSBmcm9tICcuL2xpYi9zcGF0aWFsLWNvbnRyb2xzL3NwYXRpYWwtY29udHJvbHMuY29tcG9uZW50JztcbmV4cG9ydCB0eXBlIHsgU3BhdGlhbExlZ2VuZEVudHJ5IH0gZnJvbSAnLi9saWIvc3BhdGlhbC1jb250cm9scy9zcGF0aWFsLWNvbnRyb2xzLmNvbXBvbmVudCc7XG5leHBvcnQgeyBTcGF0aWFsQ2hhcnRzQ29tcG9uZW50IH0gZnJvbSAnLi9saWIvc3BhdGlhbC1jb250cm9scy9zcGF0aWFsLWNoYXJ0cy9zcGF0aWFsLWNoYXJ0cy5jb21wb25lbnQnO1xuLy8gUHVyZSBjaGFydCBidWlsZGVycywgZXhwb3J0ZWQgc28gYSBob3N0IGNhbiByZW5kZXIgdGhlIHNhbWUgZGlzdHJpYnV0aW9uc1xuLy8gd2hlcmV2ZXIgaXQgbGlrZXMgKGEgcmVwb3J0LCBhIGRpZmZlcmVudCBjaGFydGluZyBzdXJmYWNlKS5cbmV4cG9ydCB7XG4gIGJ1aWxkT21pY3NUcmFjZXMsIG9taWNzTGF5b3V0LCBiZW5lZml0c0Zyb21Hcm91cGluZyxcbn0gZnJvbSAnLi9saWIvaW1wbGVtZW50YXRpb25zL3Bsb3RseS9vbWljcy10cmFjZS1idWlsZGVycyc7XG5leHBvcnQgdHlwZSB7XG4gIE9taWNzQ2hhcnRLaW5kLCBPbWljc0dyb3VwaW5nLCBPbWljc1RyYWNlSW5wdXQsXG59IGZyb20gJy4vbGliL2ltcGxlbWVudGF0aW9ucy9wbG90bHkvb21pY3MtdHJhY2UtYnVpbGRlcnMnO1xuIl19
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How a plot mode gets into the plot-type selector without this library knowing
|
|
3
|
+
* what it is.
|
|
4
|
+
*
|
|
5
|
+
* A package contributes a mode by providing a {@link PlotTypeContribution} on the
|
|
6
|
+
* {@link PLOT_TYPE_CONTRIBUTIONS} multi-provider token, the same way
|
|
7
|
+
* `TOOLBAR_TOOLS` contributes toolbar tools. Nothing registers at import time:
|
|
8
|
+
* installing a package makes a mode available, and adding its provider turns it
|
|
9
|
+
* on. A plain object works, so the contributing package needs no Angular
|
|
10
|
+
* compiler and no decorators:
|
|
11
|
+
*
|
|
12
|
+
* { provide: PLOT_TYPE_CONTRIBUTIONS, useValue: myContribution, multi: true }
|
|
13
|
+
* { provide: PLOT_TYPE_CONTRIBUTIONS, useFactory: () => makeContribution(), multi: true }
|
|
14
|
+
*
|
|
15
|
+
* Provide nothing and the selector, the render path and the panel area behave
|
|
16
|
+
* exactly as they did before this extension point existed.
|
|
17
|
+
*
|
|
18
|
+
* WHY A CONTRIBUTED MODE RIDES ON A BUILT-IN ONE
|
|
19
|
+
* A contributed mode does not bring a renderer. It names a built-in
|
|
20
|
+
* {@link ContributedPlotTypeDescriptor.baseType} — in v1 only `PlotType.IMAGE`,
|
|
21
|
+
* the OpenSeadragon view — and the visualizer plots exactly as if that type had
|
|
22
|
+
* been selected: same backend, same toolbar, same region tools, same wheel
|
|
23
|
+
* handling. The contribution then draws over it through the
|
|
24
|
+
* {@link PlotModeViewport} and talks to the viewer through the public
|
|
25
|
+
* {@link IVisualizer}. That keeps every rendering decision in one place and means
|
|
26
|
+
* a contribution can never be half-supported by some code path that switches on
|
|
27
|
+
* the plot type.
|
|
28
|
+
*
|
|
29
|
+
* WHAT THE VISUALIZER GUARANTEES
|
|
30
|
+
* 1. Contributed descriptors are appended after the built-in ones and curated by
|
|
31
|
+
* the same `productionLabel` / test-mode / `requires*` rules.
|
|
32
|
+
* 2. Selecting one plots with `baseType`'s backend, then calls `activate(ctx)`
|
|
33
|
+
* once the viewport is ready.
|
|
34
|
+
* 3. Leaving the mode — another type, an image switch (or any re-render of the
|
|
35
|
+
* base view), or the visualizer being destroyed — calls `session.deactivate()`
|
|
36
|
+
* exactly once, before the next mode draws. If the mode is still selected
|
|
37
|
+
* when the new image has plotted, a fresh session is activated for it.
|
|
38
|
+
* 4. `panel` is shown only while a session is live.
|
|
39
|
+
* 5. A thrown error or rejected promise from `activate`, `deactivate`, `mount`
|
|
40
|
+
* or a mount's teardown is caught and logged; none escapes, so a contribution
|
|
41
|
+
* cannot break the viewer. Failing to start (`activate`, `mount`, or a panel
|
|
42
|
+
* component throwing while it is created / first rendered) falls back
|
|
43
|
+
* to `baseType`. Failing to clean up falls back when that same mode is being
|
|
44
|
+
* re-activated (base re-render, image switch) — immediately if it already is
|
|
45
|
+
* live again — and is only logged when the user has moved to another mode; the
|
|
46
|
+
* user explicitly selecting it again gets a fresh attempt.
|
|
47
|
+
* 6. {@link PLOT_TYPE_CONTRIBUTIONS} has no factory: no providers, no modes.
|
|
48
|
+
*/
|
|
49
|
+
import { InjectionToken } from '@angular/core';
|
|
50
|
+
/**
|
|
51
|
+
* Multi-provider token for contributed plot modes.
|
|
52
|
+
*
|
|
53
|
+
* Deliberately has no `factory`: unregistered means no contributed modes, and the
|
|
54
|
+
* library behaves exactly as before. The visualizer injects it `{ optional: true }`
|
|
55
|
+
* and treats null as empty.
|
|
56
|
+
*/
|
|
57
|
+
export const PLOT_TYPE_CONTRIBUTIONS = new InjectionToken('PLOT_TYPE_CONTRIBUTIONS');
|
|
58
|
+
/** The active mode's context, in a component panel's injector. */
|
|
59
|
+
export const PLOT_MODE_CONTEXT = new InjectionToken('PLOT_MODE_CONTEXT');
|
|
60
|
+
/** The active mode's session, in a component panel's injector. */
|
|
61
|
+
export const PLOT_MODE_SESSION = new InjectionToken('PLOT_MODE_SESSION');
|
|
62
|
+
/** The selector entry for a contributed mode, given its base type's descriptor. */
|
|
63
|
+
export function contributedPlotTypeOption(d, base) {
|
|
64
|
+
return { ...d, source: base.source };
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxvdC10eXBlLWNvbnRyaWJ1dGlvbi5jb250cmFjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvY29udHJhY3RzL3Bsb3QtdHlwZS1jb250cmlidXRpb24uY29udHJhY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBK0NHO0FBQ0gsT0FBTyxFQUFFLGNBQWMsRUFBUSxNQUFNLGVBQWUsQ0FBQztBQXNHckQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQ2xDLElBQUksY0FBYyxDQUFrQyx5QkFBeUIsQ0FBQyxDQUFDO0FBQ2pGLGtFQUFrRTtBQUNsRSxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLGNBQWMsQ0FBa0IsbUJBQW1CLENBQUMsQ0FBQztBQUMxRixrRUFBa0U7QUFDbEUsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxjQUFjLENBQWtCLG1CQUFtQixDQUFDLENBQUM7QUFhMUYsbUZBQW1GO0FBQ25GLE1BQU0sVUFBVSx5QkFBeUIsQ0FDdkMsQ0FBZ0MsRUFDaEMsSUFBd0I7SUFFeEIsT0FBTyxFQUFFLEdBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDdkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogSG93IGEgcGxvdCBtb2RlIGdldHMgaW50byB0aGUgcGxvdC10eXBlIHNlbGVjdG9yIHdpdGhvdXQgdGhpcyBsaWJyYXJ5IGtub3dpbmdcbiAqIHdoYXQgaXQgaXMuXG4gKlxuICogQSBwYWNrYWdlIGNvbnRyaWJ1dGVzIGEgbW9kZSBieSBwcm92aWRpbmcgYSB7QGxpbmsgUGxvdFR5cGVDb250cmlidXRpb259IG9uIHRoZVxuICoge0BsaW5rIFBMT1RfVFlQRV9DT05UUklCVVRJT05TfSBtdWx0aS1wcm92aWRlciB0b2tlbiwgdGhlIHNhbWUgd2F5XG4gKiBgVE9PTEJBUl9UT09MU2AgY29udHJpYnV0ZXMgdG9vbGJhciB0b29scy4gTm90aGluZyByZWdpc3RlcnMgYXQgaW1wb3J0IHRpbWU6XG4gKiBpbnN0YWxsaW5nIGEgcGFja2FnZSBtYWtlcyBhIG1vZGUgYXZhaWxhYmxlLCBhbmQgYWRkaW5nIGl0cyBwcm92aWRlciB0dXJucyBpdFxuICogb24uIEEgcGxhaW4gb2JqZWN0IHdvcmtzLCBzbyB0aGUgY29udHJpYnV0aW5nIHBhY2thZ2UgbmVlZHMgbm8gQW5ndWxhclxuICogY29tcGlsZXIgYW5kIG5vIGRlY29yYXRvcnM6XG4gKlxuICogICAgIHsgcHJvdmlkZTogUExPVF9UWVBFX0NPTlRSSUJVVElPTlMsIHVzZVZhbHVlOiBteUNvbnRyaWJ1dGlvbiwgbXVsdGk6IHRydWUgfVxuICogICAgIHsgcHJvdmlkZTogUExPVF9UWVBFX0NPTlRSSUJVVElPTlMsIHVzZUZhY3Rvcnk6ICgpID0+IG1ha2VDb250cmlidXRpb24oKSwgbXVsdGk6IHRydWUgfVxuICpcbiAqIFByb3ZpZGUgbm90aGluZyBhbmQgdGhlIHNlbGVjdG9yLCB0aGUgcmVuZGVyIHBhdGggYW5kIHRoZSBwYW5lbCBhcmVhIGJlaGF2ZVxuICogZXhhY3RseSBhcyB0aGV5IGRpZCBiZWZvcmUgdGhpcyBleHRlbnNpb24gcG9pbnQgZXhpc3RlZC5cbiAqXG4gKiBXSFkgQSBDT05UUklCVVRFRCBNT0RFIFJJREVTIE9OIEEgQlVJTFQtSU4gT05FXG4gKiBBIGNvbnRyaWJ1dGVkIG1vZGUgZG9lcyBub3QgYnJpbmcgYSByZW5kZXJlci4gSXQgbmFtZXMgYSBidWlsdC1pblxuICoge0BsaW5rIENvbnRyaWJ1dGVkUGxvdFR5cGVEZXNjcmlwdG9yLmJhc2VUeXBlfSDigJQgaW4gdjEgb25seSBgUGxvdFR5cGUuSU1BR0VgLFxuICogdGhlIE9wZW5TZWFkcmFnb24gdmlldyDigJQgYW5kIHRoZSB2aXN1YWxpemVyIHBsb3RzIGV4YWN0bHkgYXMgaWYgdGhhdCB0eXBlIGhhZFxuICogYmVlbiBzZWxlY3RlZDogc2FtZSBiYWNrZW5kLCBzYW1lIHRvb2xiYXIsIHNhbWUgcmVnaW9uIHRvb2xzLCBzYW1lIHdoZWVsXG4gKiBoYW5kbGluZy4gVGhlIGNvbnRyaWJ1dGlvbiB0aGVuIGRyYXdzIG92ZXIgaXQgdGhyb3VnaCB0aGVcbiAqIHtAbGluayBQbG90TW9kZVZpZXdwb3J0fSBhbmQgdGFsa3MgdG8gdGhlIHZpZXdlciB0aHJvdWdoIHRoZSBwdWJsaWNcbiAqIHtAbGluayBJVmlzdWFsaXplcn0uIFRoYXQga2VlcHMgZXZlcnkgcmVuZGVyaW5nIGRlY2lzaW9uIGluIG9uZSBwbGFjZSBhbmQgbWVhbnNcbiAqIGEgY29udHJpYnV0aW9uIGNhbiBuZXZlciBiZSBoYWxmLXN1cHBvcnRlZCBieSBzb21lIGNvZGUgcGF0aCB0aGF0IHN3aXRjaGVzIG9uXG4gKiB0aGUgcGxvdCB0eXBlLlxuICpcbiAqIFdIQVQgVEhFIFZJU1VBTElaRVIgR1VBUkFOVEVFU1xuICogIDEuIENvbnRyaWJ1dGVkIGRlc2NyaXB0b3JzIGFyZSBhcHBlbmRlZCBhZnRlciB0aGUgYnVpbHQtaW4gb25lcyBhbmQgY3VyYXRlZCBieVxuICogICAgIHRoZSBzYW1lIGBwcm9kdWN0aW9uTGFiZWxgIC8gdGVzdC1tb2RlIC8gYHJlcXVpcmVzKmAgcnVsZXMuXG4gKiAgMi4gU2VsZWN0aW5nIG9uZSBwbG90cyB3aXRoIGBiYXNlVHlwZWAncyBiYWNrZW5kLCB0aGVuIGNhbGxzIGBhY3RpdmF0ZShjdHgpYFxuICogICAgIG9uY2UgdGhlIHZpZXdwb3J0IGlzIHJlYWR5LlxuICogIDMuIExlYXZpbmcgdGhlIG1vZGUg4oCUIGFub3RoZXIgdHlwZSwgYW4gaW1hZ2Ugc3dpdGNoIChvciBhbnkgcmUtcmVuZGVyIG9mIHRoZVxuICogICAgIGJhc2UgdmlldyksIG9yIHRoZSB2aXN1YWxpemVyIGJlaW5nIGRlc3Ryb3llZCDigJQgY2FsbHMgYHNlc3Npb24uZGVhY3RpdmF0ZSgpYFxuICogICAgIGV4YWN0bHkgb25jZSwgYmVmb3JlIHRoZSBuZXh0IG1vZGUgZHJhd3MuIElmIHRoZSBtb2RlIGlzIHN0aWxsIHNlbGVjdGVkXG4gKiAgICAgd2hlbiB0aGUgbmV3IGltYWdlIGhhcyBwbG90dGVkLCBhIGZyZXNoIHNlc3Npb24gaXMgYWN0aXZhdGVkIGZvciBpdC5cbiAqICA0LiBgcGFuZWxgIGlzIHNob3duIG9ubHkgd2hpbGUgYSBzZXNzaW9uIGlzIGxpdmUuXG4gKiAgNS4gQSB0aHJvd24gZXJyb3Igb3IgcmVqZWN0ZWQgcHJvbWlzZSBmcm9tIGBhY3RpdmF0ZWAsIGBkZWFjdGl2YXRlYCwgYG1vdW50YFxuICogICAgIG9yIGEgbW91bnQncyB0ZWFyZG93biBpcyBjYXVnaHQgYW5kIGxvZ2dlZDsgbm9uZSBlc2NhcGVzLCBzbyBhIGNvbnRyaWJ1dGlvblxuICogICAgIGNhbm5vdCBicmVhayB0aGUgdmlld2VyLiBGYWlsaW5nIHRvIHN0YXJ0IChgYWN0aXZhdGVgLCBgbW91bnRgLCBvciBhIHBhbmVsXG4gKiAgICAgY29tcG9uZW50IHRocm93aW5nIHdoaWxlIGl0IGlzIGNyZWF0ZWQgLyBmaXJzdCByZW5kZXJlZCkgZmFsbHMgYmFja1xuICogICAgIHRvIGBiYXNlVHlwZWAuIEZhaWxpbmcgdG8gY2xlYW4gdXAgZmFsbHMgYmFjayB3aGVuIHRoYXQgc2FtZSBtb2RlIGlzIGJlaW5nXG4gKiAgICAgcmUtYWN0aXZhdGVkIChiYXNlIHJlLXJlbmRlciwgaW1hZ2Ugc3dpdGNoKSDigJQgaW1tZWRpYXRlbHkgaWYgaXQgYWxyZWFkeSBpc1xuICogICAgIGxpdmUgYWdhaW4g4oCUIGFuZCBpcyBvbmx5IGxvZ2dlZCB3aGVuIHRoZSB1c2VyIGhhcyBtb3ZlZCB0byBhbm90aGVyIG1vZGU7IHRoZVxuICogICAgIHVzZXIgZXhwbGljaXRseSBzZWxlY3RpbmcgaXQgYWdhaW4gZ2V0cyBhIGZyZXNoIGF0dGVtcHQuXG4gKiAgNi4ge0BsaW5rIFBMT1RfVFlQRV9DT05UUklCVVRJT05TfSBoYXMgbm8gZmFjdG9yeTogbm8gcHJvdmlkZXJzLCBubyBtb2Rlcy5cbiAqL1xuaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4sIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0eXBlIHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgdHlwZSB7IElJbWFnZUluZm8gfSBmcm9tICcuL2ltYWdlLmNvbnRyYWN0JztcbmltcG9ydCB0eXBlIHsgUGxvdFR5cGUsIFBsb3RUeXBlRGVzY3JpcHRvciwgUGxvdFR5cGVJZCB9IGZyb20gJy4vcGxvdC10eXBlJztcbmltcG9ydCB0eXBlIHsgSVZpc3VhbGl6ZXIgfSBmcm9tICcuL3Zpc3VhbGl6ZXIuY29udHJhY3QnO1xuXG4vKiogQSByZWN0YW5nbGUgaW4gbGV2ZWwtMCBpbWFnZSBwaXhlbHMuICovXG5leHBvcnQgaW50ZXJmYWNlIFBsb3RNb2RlUmVjdCB7XG4gIHg6IG51bWJlcjtcbiAgeTogbnVtYmVyO1xuICB3aWR0aDogbnVtYmVyO1xuICBoZWlnaHQ6IG51bWJlcjtcbn1cblxuLyoqIFNlbGVjdG9yIG1ldGFkYXRhIGZvciBhIGNvbnRyaWJ1dGVkIHBsb3QgbW9kZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29udHJpYnV0ZWRQbG90VHlwZURlc2NyaXB0b3Ige1xuICAvKiogVW5pcXVlIGlkLCBuYW1lc3BhY2VkLCBlLmcuICdkaWFubmUnLiBNdXN0IG5vdCBjbGFzaCB3aXRoIFBsb3RUeXBlIHZhbHVlcy4gKi9cbiAgdHlwZTogc3RyaW5nO1xuICAvKiogVGVzdC1tb2RlIGxhYmVsLCBlLmcuICdEaWdpdGFsIFBhdGhvbG9neSAtIERJQU5ORScuICovXG4gIGxhYmVsOiBzdHJpbmc7XG4gIC8qKiBEZWZhdWx0LXNlbGVjdG9yIGxhYmVsOyBvbWl0IHRvIG1ha2UgdGhlIG1vZGUgdGVzdC1vbmx5IChzYW1lIHJ1bGUgYXMgYnVpbHQtaW5zKS4gKi9cbiAgcHJvZHVjdGlvbkxhYmVsPzogc3RyaW5nO1xuICAvKiogJ3BpIHBpLeKApicgY2xhc3Mgb3IgYXNzZXQgcGF0aCwgc2FtZSBhcyBQbG90VHlwZURlc2NyaXB0b3IuaWNvbi4gKi9cbiAgaWNvbj86IHN0cmluZztcbiAgLyoqIEFsd2F5cyAnMmQnIGluIHYxLiAqL1xuICBkaW1lbnNpb25zOiAnMmQnO1xuICAvKiogQnVpbHQtaW4gdHlwZSB3aG9zZSBiYWNrZW5kIHJlbmRlcnMgdGhlIGJhc2UgaW1hZ2UuIHYxIHN1cHBvcnRzIFBsb3RUeXBlLklNQUdFIChPU0QpLiAqL1xuICBiYXNlVHlwZTogUGxvdFR5cGU7XG4gIC8qKiBTYW1lIGdhdGVzIGFzIFBsb3RUeXBlRGVzY3JpcHRvciwgZXZhbHVhdGVkIGluIGFkZGl0aW9uIHRvIHRoZSBiYXNlIHR5cGUncyBvd24uICovXG4gIHJlcXVpcmVzR3JheXNjYWxlPzogYm9vbGVhbjtcbiAgcmVxdWlyZXNTdGFjaz86IGJvb2xlYW47XG4gIC8qKiBIaWRkZW4gdW50aWwgYSBgU3BhdGlhbERhdGFzZXRgIGlzIHB1Ymxpc2hlZCBvbiBTUEFUSUFMX0RBVEFfUE9SVCAoYW4gb3ZlcmxheSBvZiBzcGF0aWFsIG9ic2VydmF0aW9ucykuICovXG4gIHJlcXVpcmVzU3BhdGlhbERhdGE/OiBib29sZWFuO1xuICAvKiogSGlkZGVuIHVubGVzcyB0aGUgcHVibGlzaGVkIGRhdGFzZXQgY2FycmllcyBgb2JzZXJ2YXRpb25zLnpgLiAqL1xuICByZXF1aXJlc1NwYXRpYWwzZD86IGJvb2xlYW47XG59XG5cbi8qKiBUaGUgYmFzZSB2aWV3J3Mgdmlld3BvcnQsIGFzIGEgY29udHJpYnV0ZWQgbW9kZSBzZWVzIGl0LiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbG90TW9kZVZpZXdwb3J0IHtcbiAgLyoqIEVsZW1lbnQgdGhlIG1vZGUncyBvdmVybGF5IGNhbnZhcy9TVkcgYXR0YWNoZXMgdG87IGZpbGxzIHRoZSBwbG90IGFyZWEuICovXG4gIGdldE92ZXJsYXlDb250YWluZXIoKTogSFRNTEVsZW1lbnQgfCBudWxsO1xuICAvKiogTGV2ZWwtMCBpbWFnZSBweCAtPiBjbGllbnQgcHgsIGFuZCB0aGUgcmV2ZXJzZS4gKi9cbiAgZGF0YVRvQ2xpZW50KHg6IG51bWJlciwgeTogbnVtYmVyKTogeyB4OiBudW1iZXI7IHk6IG51bWJlciB9O1xuICBjbGllbnRUb0RhdGEoY2xpZW50WDogbnVtYmVyLCBjbGllbnRZOiBudW1iZXIpOiB7IHg6IG51bWJlcjsgeTogbnVtYmVyIH07XG4gIC8qKiBTY3JlZW4gcHggcGVyIGltYWdlIHB4IGF0IHRoZSBjdXJyZW50IHpvb20uICovXG4gIGRhdGFMZW5ndGhUb1NjcmVlbihsZW46IG51bWJlcik6IG51bWJlcjtcbiAgaXNSZWFkeSgpOiBib29sZWFuO1xuICAvKiogVmlzaWJsZSBpbWFnZSByZWN0IGluIGxldmVsLTAgcHgsIGVtaXR0ZWQgb24gZXZlcnkgcmVkcmF3IGZyYW1lIChwYW4vem9vbSBhbmltYXRpb24pLlxuICAgKiAgQSBuZXcgc3Vic2NyaWJlciBmaXJzdCByZWNlaXZlcyB0aGUgY3VycmVudCByZWN0IHdoZW4gdGhlIHZpZXdwb3J0IGlzIHJlYWR5LiAqL1xuICBmcmFtZSQ6IE9ic2VydmFibGU8UGxvdE1vZGVSZWN0PjtcbiAgLyoqIFNhbWUgcmVjdCwgZW1pdHRlZCBvbmNlIHRoZSB2aWV3cG9ydCBzZXR0bGVzIChleGlzdGluZyBnZXRWaWV3cG9ydENoYW5nZSQgc2VtYW50aWNzKS5cbiAgICogIEEgbmV3IHN1YnNjcmliZXIgZmlyc3QgcmVjZWl2ZXMgdGhlIGN1cnJlbnQgcmVjdCB3aGVuIHRoZSB2aWV3cG9ydCBpcyByZWFkeS4gKi9cbiAgc2V0dGxlZCQ6IE9ic2VydmFibGU8UGxvdE1vZGVSZWN0Pjtcbn1cblxuLyoqIEV2ZXJ5dGhpbmcgYSBjb250cmlidXRlZCBtb2RlIGdldHMgdG8gd29yayB3aXRoIHdoaWxlIGl0IGlzIGFjdGl2ZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGxvdE1vZGVDb250ZXh0IHtcbiAgLyoqIEZ1bGwgcHVibGljIHZpc3VhbGl6ZXIgQVBJOiByZWdpb25zLCByZWdpb24gb3ZlcmxheSAodG9vbCBtb2RlcyksIHVuZG8sIGV0Yy4gKi9cbiAgdmlzdWFsaXplcjogSVZpc3VhbGl6ZXI7XG4gIHZpZXdwb3J0OiBQbG90TW9kZVZpZXdwb3J0O1xuICAvKiogQ3VycmVudCBpbWFnZSBpbmZvIGZyb20gSU1BR0VfU1RBVEVfUE9SVCAobnVsbCB1bnRpbCBhbiBpbWFnZSBpcyBsb2FkZWQpLiAqL1xuICBpbWFnZUluZm8kOiBPYnNlcnZhYmxlPElJbWFnZUluZm8gfCBudWxsPjtcbn1cblxuLyoqIEEgbGl2ZSBhY3RpdmF0aW9uIG9mIGEgY29udHJpYnV0ZWQgbW9kZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGxvdE1vZGVTZXNzaW9uIHtcbiAgLyoqIENhbGxlZCB3aGVuIHRoZSB1c2VyIGxlYXZlcyB0aGUgbW9kZSwgdGhlIGltYWdlIGNoYW5nZXMsIG9yIHRoZSB2aXN1YWxpemVyIGlzIGRlc3Ryb3llZC4gKi9cbiAgZGVhY3RpdmF0ZSgpOiB2b2lkO1xufVxuXG4vKipcbiAqIFRoZSBtb2RlJ3Mgc2lkZSBwYW5lbCwgc2hvd24gaW4gdGhlIHZpc3VhbGl6ZXIncyByaWdodC1oYW5kIHBhbmVsIGFyZWEgd2hpbGVcbiAqIGEgc2Vzc2lvbiBpcyBsaXZlLiBUd28gZm9ybXM6XG4gKlxuICogIC0gYGNvbXBvbmVudGA6IGFuIEFuZ3VsYXIgY29tcG9uZW50LCByZW5kZXJlZCB0aHJvdWdoIGBOZ0NvbXBvbmVudE91dGxldGBcbiAqICAgIHdpdGgge0BsaW5rIFBMT1RfTU9ERV9DT05URVhUfSBhbmQge0BsaW5rIFBMT1RfTU9ERV9TRVNTSU9OfSBpbiBpdHNcbiAqICAgIGluamVjdG9yLiBOZWVkcyBhbiBBT1QtY29tcGlsZWQgKHBhcnRpYWwtSXZ5KSBjb21wb25lbnQuXG4gKiAgLSBgbW91bnRgOiBmcmFtZXdvcmstYWdub3N0aWMuIFRoZSB2aXN1YWxpemVyIGhhbmRzIG92ZXIgYW4gZW1wdHkgaG9zdFxuICogICAgZWxlbWVudCBhZnRlciBgYWN0aXZhdGVgIHJlc29sdmVzOyB0aGUgZnVuY3Rpb24gcmVuZGVycyBpbnRvIGl0IGFuZCByZXR1cm5zXG4gKiAgICBhIHRlYXJkb3duLiBUaGUgdGVhcmRvd24gaXMgY2FsbGVkIGV4YWN0bHkgb25jZSB3aGVuIHRoZSBtb2RlIGRlYWN0aXZhdGVzLFxuICogICAgYmVmb3JlIGBzZXNzaW9uLmRlYWN0aXZhdGUoKWAsIGFuZCB0aGUgaG9zdCBlbGVtZW50IGlzIHRoZW4gcmVtb3ZlZC5cbiAqL1xuZXhwb3J0IHR5cGUgUGxvdE1vZGVQYW5lbCA9XG4gIHwgeyB0aXRsZTogc3RyaW5nOyBjb21wb25lbnQ6IFR5cGU8dW5rbm93bj4gfVxuICB8IHtcbiAgICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgICBtb3VudChob3N0OiBIVE1MRWxlbWVudCwgY3R4OiBQbG90TW9kZUNvbnRleHQsIHNlc3Npb246IFBsb3RNb2RlU2Vzc2lvbik6ICgpID0+IHZvaWQ7XG4gICAgfTtcblxuLyoqIEEgcGxvdCBtb2RlIGNvbnRyaWJ1dGVkIHRvIHRoZSBzZWxlY3Rvci4gQSBwbGFpbiBvYmplY3QgaXMgZW5vdWdoLiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbG90VHlwZUNvbnRyaWJ1dGlvbiB7XG4gIGRlc2NyaXB0b3I6IENvbnRyaWJ1dGVkUGxvdFR5cGVEZXNjcmlwdG9yO1xuICAvKiogQ2FsbGVkIGFmdGVyIHRoZSBiYXNlIGJhY2tlbmQgaGFzIHBsb3R0ZWQgdGhlIGltYWdlIGluIHRoaXMgbW9kZS4gKi9cbiAgYWN0aXZhdGUoY3R4OiBQbG90TW9kZUNvbnRleHQpOiBQbG90TW9kZVNlc3Npb24gfCBQcm9taXNlPFBsb3RNb2RlU2Vzc2lvbj47XG4gIC8qKlxuICAgKiBPcHRpb25hbCBzaWRlIHBhbmVsLCByZW5kZXJlZCBpbiB0aGUgdmlzdWFsaXplcidzIHJpZ2h0LWhhbmQgcGFuZWwgYXJlYSB3aGlsZSB0aGVcbiAgICogbW9kZSBpcyBhY3RpdmUuIEEgY29tcG9uZW50IHBhbmVsIGNhbiBpbmplY3QgUExPVF9NT0RFX0NPTlRFWFQgYW5kIFBMT1RfTU9ERV9TRVNTSU9OLlxuICAgKi9cbiAgcGFuZWw/OiBQbG90TW9kZVBhbmVsO1xufVxuXG4vKipcbiAqIE11bHRpLXByb3ZpZGVyIHRva2VuIGZvciBjb250cmlidXRlZCBwbG90IG1vZGVzLlxuICpcbiAqIERlbGliZXJhdGVseSBoYXMgbm8gYGZhY3RvcnlgOiB1bnJlZ2lzdGVyZWQgbWVhbnMgbm8gY29udHJpYnV0ZWQgbW9kZXMsIGFuZCB0aGVcbiAqIGxpYnJhcnkgYmVoYXZlcyBleGFjdGx5IGFzIGJlZm9yZS4gVGhlIHZpc3VhbGl6ZXIgaW5qZWN0cyBpdCBgeyBvcHRpb25hbDogdHJ1ZSB9YFxuICogYW5kIHRyZWF0cyBudWxsIGFzIGVtcHR5LlxuICovXG5leHBvcnQgY29uc3QgUExPVF9UWVBFX0NPTlRSSUJVVElPTlMgPVxuICBuZXcgSW5qZWN0aW9uVG9rZW48cmVhZG9ubHkgUGxvdFR5cGVDb250cmlidXRpb25bXT4oJ1BMT1RfVFlQRV9DT05UUklCVVRJT05TJyk7XG4vKiogVGhlIGFjdGl2ZSBtb2RlJ3MgY29udGV4dCwgaW4gYSBjb21wb25lbnQgcGFuZWwncyBpbmplY3Rvci4gKi9cbmV4cG9ydCBjb25zdCBQTE9UX01PREVfQ09OVEVYVCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxQbG90TW9kZUNvbnRleHQ+KCdQTE9UX01PREVfQ09OVEVYVCcpO1xuLyoqIFRoZSBhY3RpdmUgbW9kZSdzIHNlc3Npb24sIGluIGEgY29tcG9uZW50IHBhbmVsJ3MgaW5qZWN0b3IuICovXG5leHBvcnQgY29uc3QgUExPVF9NT0RFX1NFU1NJT04gPSBuZXcgSW5qZWN0aW9uVG9rZW48UGxvdE1vZGVTZXNzaW9uPignUExPVF9NT0RFX1NFU1NJT04nKTtcblxuLyoqXG4gKiBPbmUgZW50cnkgaW4gdGhlIHBsb3QtdHlwZSBzZWxlY3RvcjogYSBidWlsdC1pbiB7QGxpbmsgUGxvdFR5cGVEZXNjcmlwdG9yfVxuICogYXMtaXMsIG9yIGEgY29udHJpYnV0ZWQgZGVzY3JpcHRvciBjb21wbGV0ZWQgd2l0aCBpdHMgYmFzZSB0eXBlJ3MgYHNvdXJjZWAuXG4gKiBFdmVyeSBlbnRyeSB0aGVyZWZvcmUgY2FycmllcyB0aGUgc2FtZSBmaWVsZHMgdGhlIHNlbGVjdG9yIGN1cmF0ZXMgYnkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGxvdFR5cGVPcHRpb24gZXh0ZW5kcyBPbWl0PFBsb3RUeXBlRGVzY3JpcHRvciwgJ3R5cGUnPiB7XG4gIHR5cGU6IFBsb3RUeXBlSWQ7XG4gIC8qKiBTZXQgb25seSBmb3IgYSBjb250cmlidXRlZCBtb2RlOiB0aGUgYnVpbHQtaW4gdHlwZSB0aGF0IHJlbmRlcnMgaXQuICovXG4gIGJhc2VUeXBlPzogUGxvdFR5cGU7XG59XG5cbi8qKiBUaGUgc2VsZWN0b3IgZW50cnkgZm9yIGEgY29udHJpYnV0ZWQgbW9kZSwgZ2l2ZW4gaXRzIGJhc2UgdHlwZSdzIGRlc2NyaXB0b3IuICovXG5leHBvcnQgZnVuY3Rpb24gY29udHJpYnV0ZWRQbG90VHlwZU9wdGlvbihcbiAgZDogQ29udHJpYnV0ZWRQbG90VHlwZURlc2NyaXB0b3IsXG4gIGJhc2U6IFBsb3RUeXBlRGVzY3JpcHRvcixcbik6IFBsb3RUeXBlT3B0aW9uIHtcbiAgcmV0dXJuIHsgLi4uZCwgc291cmNlOiBiYXNlLnNvdXJjZSB9O1xufVxuIl19
|
|
@@ -44,6 +44,11 @@ export var PlotType;
|
|
|
44
44
|
* {@link SPATIAL_OMICS}: a single-plane dataset has no z to render. */
|
|
45
45
|
PlotType["SPATIAL_OMICS_3D"] = "spatial-omics-3d";
|
|
46
46
|
})(PlotType || (PlotType = {}));
|
|
47
|
+
const BUILTIN_PLOT_TYPES = new Set(Object.values(PlotType));
|
|
48
|
+
/** Whether an id names a built-in plot type (as opposed to a contributed one). */
|
|
49
|
+
export function isBuiltinPlotType(id) {
|
|
50
|
+
return typeof id === 'string' && BUILTIN_PLOT_TYPES.has(id);
|
|
51
|
+
}
|
|
47
52
|
/**
|
|
48
53
|
* Single source of truth for plot-type metadata. LINE is intentionally absent —
|
|
49
54
|
* intensity profiles are now Region-based line ROIs (available in Heatmap/Image
|
|
@@ -144,4 +149,4 @@ export const NAPARI_DECIMATE_OPTIONS = [
|
|
|
144
149
|
/** Default decimate factor: ¼. The caps are set so ¼ is a sensible default resolution while ½ and
|
|
145
150
|
* Full offer 2× and 4× the detail for opt-in high-resolution renders. */
|
|
146
151
|
export const NAPARI_DEFAULT_DECIMATE = 4;
|
|
147
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxvdC10eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jb250cmFjdHMvcGxvdC10eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBTSxDQUFOLElBQVksUUFnQ1g7QUFoQ0QsV0FBWSxRQUFRO0lBQ2xCO2lGQUM2RTtJQUM3RSwyQkFBZSxDQUFBO0lBQ2YsK0JBQW1CLENBQUE7SUFDbkIsK0JBQW1CLENBQUE7SUFDbkIsK0JBQW1CLENBQUE7SUFDbkIsK0JBQW1CLENBQUE7SUFDbkIseUZBQXlGO0lBQ3pGLHlCQUFhLENBQUE7SUFDYixtQ0FBdUIsQ0FBQTtJQUN2QixxQ0FBeUIsQ0FBQTtJQUN6Qjt1R0FDbUc7SUFDbkcseUNBQTZCLENBQUE7SUFDN0IsMkNBQStCLENBQUE7SUFDL0IsbURBQXVDLENBQUE7SUFDdkMsZ0dBQWdHO0lBQ2hHLDZDQUFpQyxDQUFBO0lBQ2pDLGtGQUFrRjtJQUNsRiw2Q0FBaUMsQ0FBQTtJQUNqQywrRkFBK0Y7SUFDL0YsaURBQXFDLENBQUE7SUFDckM7OzRGQUV3RjtJQUN4RiwyQ0FBK0IsQ0FBQTtJQUMvQjs7OzRFQUd3RTtJQUN4RSxpREFBcUMsQ0FBQTtBQUN2QyxDQUFDLEVBaENXLFFBQVEsS0FBUixRQUFRLFFBZ0NuQjtBQThERDs7Ozs7R0FLRztBQUNILCtGQUErRjtBQUMvRixvREFBb0Q7QUFDcEQsa0ZBQWtGO0FBQ2xGLGlGQUFpRjtBQUNqRixtRUFBbUU7QUFDbkUsMkVBQTJFO0FBQzNFLHNFQUFzRTtBQUN0RSw0RUFBNEU7QUFDNUUsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQWtEO0lBQ2xGLGdCQUFnQjtJQUNoQixDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBTyxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsS0FBSyxFQUFPLEtBQUssRUFBRSxhQUFhLEVBQVksZUFBZSxFQUFFLE9BQU8sRUFBTyxJ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SyxRQUFRLENBQUMsZ0JBQWdCLENBQUM7QUFDNUMsQ0FBQztBQUNEOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBTSxVQUFVLGlCQUFpQixDQUFDLElBQWM7SUFDOUMsT0FBTyxJQUFJLEtBQUssUUFBUSxDQUFDLEtBQUssSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDbkYsQ0FBQztBQUVEO2dGQUNnRjtBQUNoRixNQUFNLFVBQVUsVUFBVSxDQUFDLElBQWM7SUFDdkMsT0FBTyxDQUNMLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQ3JHLENBQUM7QUFDSixDQUFDO0FBRUQsNkVBQTZFO0FBQzdFLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUF1QztJQUN6RSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtJQUMzQixFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtJQUN4QixFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtJQUN4QixFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtDQUN6QixDQUFDO0FBRUY7MEVBQzBFO0FBQzFFLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhlIGtpbmQgb2YgcmVuZGVyaW5nIGEgdmlld2VyIGJhY2tlbmQgc2hvdWxkIHByb2R1Y2UgZm9yIHRoZSBsb2FkZWQgZGF0YS5cbiAqXG4gKiBMaXZlcyBpbiBgY29udHJhY3RzL2AgKHJhdGhlciB0aGFuIGluc2lkZSBhIHNwZWNpZmljIGJhY2tlbmQpIGJlY2F1c2UgaXQgaXNcbiAqIHBhcnQgb2YgdGhlIGJhY2tlbmQtbmV1dHJhbCBwbG90dGluZyBjb250cmFjdDogYm90aCB0aGUgUGxvdGx5IGJhY2tlbmQgYW5kXG4gKiBhbnkgZnV0dXJlIGJhY2tlbmQgKGUuZy4gT3BlblNlYWRyYWdvbikgYWNjZXB0IGEgYFBsb3RUeXBlYCBvbiBgcGxvdCgpYC5cbiAqXG4gKiBOT1RFOiBhIGJhY2tlbmQgbWF5IG5vdCBzdXBwb3J0IGV2ZXJ5IHR5cGUg4oCUIDNEIHR5cGVzIChgU1VSRkFDRWAsXG4gKiBgU0NBVFRFUjNEYCwgYElTT1NVUkZBQ0VgKSBhcmUgZ2F0ZWQgYmVoaW5kIGBWaWV3ZXJGZWF0dXJlLlN1cmZhY2UzRGAgaW4gdGhlXG4gKiBjYXBhYmlsaXRpZXMgY29udHJhY3QsIHNvIGEgMkQtb25seSBiYWNrZW5kIGNhbiBhZHZlcnRpc2UgdGhhdCBpdCBjYW4ndFxuICogcmVuZGVyIHRoZW0gYW5kIHRoZSBVSSBjYW4gaGlkZSB0aGUgb3B0aW9uLlxuICovXG5leHBvcnQgZW51bSBQbG90VHlwZSB7XG4gIC8qKiBOYXRpdmVseS10aWxlZCwgem9vbWFibGUgcmFzdGVyIHJlbmRlcmVkIGJ5IE9wZW5TZWFkcmFnb24gKHRoZSBkZWZhdWx0XG4gICAqICB2aWV3IGZvciBhbiBpbWFnZSkuIEhlYXRtYXAgcmVtYWlucyB0aGUgUGxvdGx5IHNjYWxhci1pbWFnZSByZW5kZXJpbmcuICovXG4gIElNQUdFID0gJ2ltYWdlJyxcbiAgSEVBVE1BUCA9ICdoZWF0bWFwJyxcbiAgU1VSRkFDRSA9ICdzdXJmYWNlJyxcbiAgQ09OVE9VUiA9ICdjb250b3VyJyxcbiAgU0NBVFRFUiA9ICdzY2F0dGVyJyxcbiAgLy8gTElORTogcmVzZXJ2ZWQvc3R1YmJlZCDigJQgaW50ZW5zaXR5IHByb2ZpbGVzIGFyZSBub3cgUmVnaW9uLWJhc2VkIChrZXB0IGZvciBmdXR1cmUgdXNlKVxuICBMSU5FID0gJ2xpbmUnLFxuICBTQ0FUVEVSM0QgPSAnc2NhdHRlcjNkJyxcbiAgSVNPU1VSRkFDRSA9ICdpc29zdXJmYWNlJyxcbiAgLyoqIFdlYkdQVSBuYXBhcmktanMgcmVuZGVyaW5ncyAoaml0LXVpIzEwMiksIHNlbGVjdGFibGUgYWxvbmdzaWRlIHRoZSBPU0QvUGxvdGx5IHR5cGVzLiBUaGUgM0RcbiAgICogIHR5cGVzIHRha2UgYSBydW50aW1lIGRlY2ltYXRlIGZhY3RvciAoRnVsbCAvIMK9IC8gwrwgLyDihZspIGluc3RlYWQgb2YgZml4ZWQgaGkvbG8tcmVzIHZhcmlhbnRzLiAqL1xuICBOQVBBUklfSU1BR0UgPSAnbmFwYXJpLWltYWdlJyxcbiAgTkFQQVJJX1ZPTFVNRSA9ICduYXBhcmktdm9sdW1lJyxcbiAgTkFQQVJJX0lTT1NVUkZBQ0UgPSAnbmFwYXJpLWlzb3N1cmZhY2UnLFxuICAvKiogV2ViR1BVIGhlaWdodC1maWVsZCBzdXJmYWNlIG1lc2ggKHogPSBpbnRlbnNpdHkpLCB0aGUgbmFwYXJpLWpzIGFuYWxvZyBvZiBQbG90bHkgU1VSRkFDRS4gKi9cbiAgTkFQQVJJX1NVUkZBQ0UgPSAnbmFwYXJpLXN1cmZhY2UnLFxuICAvKiogV2ViR1BVIDJEIHNjYXR0ZXIgb2YgcmVnaW9uIGNlbnRyb2lkcyAobmFwYXJpLWpzIGFuYWxvZyBvZiBQbG90bHkgU0NBVFRFUikuICovXG4gIE5BUEFSSV9TQ0FUVEVSID0gJ25hcGFyaS1zY2F0dGVyJyxcbiAgLyoqIFdlYkdQVSAzRCBzY2F0dGVyIG9mIHRoZSBkb3duc2FtcGxlZCB2b3hlbCBjbG91ZCAobmFwYXJpLWpzIGFuYWxvZyBvZiBQbG90bHkgU0NBVFRFUjNEKS4gKi9cbiAgTkFQQVJJX1NDQVRURVIzRCA9ICduYXBhcmktc2NhdHRlcjNkJyxcbiAgLyoqIFNwYXRpYWwtb21pY3Mgb2JzZXJ2YXRpb25zIChWaXNpdW0gc3BvdHMsIHNlZ21lbnRlZCBjZWxscykgZHJhd24gb3ZlciB0aGUgdGlzc3VlIGltYWdlIGFuZFxuICAgKiAgY29sb3VyZWQgYnkgYW4gYW5ub3RhdGlvbiBjb2x1bW4gb3IgYSBnZW5lLiBOZWVkcyBhIGBTcGF0aWFsRGF0YXNldGAgb24gYFNQQVRJQUxfREFUQV9QT1JUYCxcbiAgICogIHNvIGl0IGlzIGdhdGVkIGJ5IGByZXF1aXJlc1NwYXRpYWxEYXRhYCBhbmQgbmV2ZXIgYXBwZWFycyBmb3IgYW4gaW1hZ2Utb25seSBob3N0LiAqL1xuICBTUEFUSUFMX09NSUNTID0gJ3NwYXRpYWwtb21pY3MnLFxuICAvKiogU3BhdGlhbC1vbWljcyBvYnNlcnZhdGlvbnMgYXMgYSAzRCBwb2ludCBjbG91ZCwgZm9yIGFzc2F5cyB3aG9zZSBvYnNlcnZhdGlvbnMgY2FycnkgYSB6IOKAlFxuICAgKiAgc2VyaWFsIHNlY3Rpb25zIHJlZ2lzdGVyZWQgaW50byBhIGNvbW1vbiBmcmFtZSAoZS5nLiB0aGUgQWxsZW4gQ0NGKSwgb3IgYSBnZW51aW5lbHlcbiAgICogIHZvbHVtZXRyaWMgYXNzYXkuIEdhdGVkIGJ5IGByZXF1aXJlc1NwYXRpYWwzZGAsIGEgc3RyaWN0bHkgbmFycm93ZXIgZ2F0ZSB0aGFuXG4gICAqICB7QGxpbmsgU1BBVElBTF9PTUlDU306IGEgc2luZ2xlLXBsYW5lIGRhdGFzZXQgaGFzIG5vIHogdG8gcmVuZGVyLiAqL1xuICBTUEFUSUFMX09NSUNTXzNEID0gJ3NwYXRpYWwtb21pY3MtM2QnLFxufVxuXG4vKiogSG93IG1hbnkgc3BhdGlhbCBkaW1lbnNpb25zIGEgcGxvdCB0eXBlIHJlbmRlcnMgaW4uICovXG5leHBvcnQgdHlwZSBQbG90RGltZW5zaW9ucyA9ICcyZCcgfCAnM2QnO1xuXG4vKipcbiAqIFdoZXJlIGEgcGxvdCB0eXBlIHB1bGxzIGl0cyBkYXRhIGZyb206XG4gKiAgLSBgaW1hZ2VgICAg4oCUIHRoZSBsb2FkZWQgcGl4ZWwgbWF0cmljZXMgLyB6LXN0YWNrIChIRUFUTUFQLCBTVVJGQUNFLCDigKYpXG4gKiAgLSBgcmVnaW9uc2Ag4oCUIHRoZSBkcmF3bi9kZXJpdmVkIHJlZ2lvbnMgKFNDQVRURVIgb2YgcmVnaW9uIGNlbnRyb2lkcywg4oCmKVxuICogIC0gYHNwYXRpYWxgIOKAlCBhIGBTcGF0aWFsRGF0YXNldGAgc3VwcGxpZWQgdGhyb3VnaCBgU1BBVElBTF9EQVRBX1BPUlRgOiBOXG4gKiAgICBvYnNlcnZhdGlvbnMgKHNwb3RzL2NlbGxzKSB3aXRoIGNhdGVnb3JpY2FsICsgY29udGludW91cyBjb2x1bW5zIGFuZCBhXG4gKiAgICBsYXppbHktZmV0Y2hlZCBmZWF0dXJlIG1hdHJpeCwgZHJhd24gb3ZlciB0aGUgdGlzc3VlIGltYWdlIHRoZXkgY2FtZSBmcm9tLlxuICovXG5leHBvcnQgdHlwZSBQbG90RGF0YVNvdXJjZSA9ICdpbWFnZScgfCAncmVnaW9ucycgfCAnc3BhdGlhbCc7XG5cbi8qKlxuICogQmFja2VuZC1uZXV0cmFsIG1ldGFkYXRhIGFib3V0IGEgcGxvdCB0eXBlLiBEcml2ZXMgVUkgYWZmb3JkYW5jZXMgKHdoaWNoXG4gKiB0eXBlcyBhcmUgM0QsIHdoaWNoIG5lZWQgYW4gaW1hZ2Ugc3RhY2ssIGhvdyB0byBsYWJlbCB0aGVtIGluIGEgZHJvcGRvd24pXG4gKiB3aXRob3V0IGFueSBiYWNrZW5kJ3MgdHJhY2UtYnVpbGRpbmcgbG9naWMgbGVha2luZyBpbnRvIHRoZSBjb250cmFjdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbG90VHlwZURlc2NyaXB0b3Ige1xuICB0eXBlOiBQbG90VHlwZTtcbiAgLyoqIEh1bWFuLXJlYWRhYmxlIGxhYmVsIGZvciBtZW51cy9kcm9wZG93bnMuIFNob3duIGluICoqdGVzdCBtb2RlKiosIHdoZXJlXG4gICAqICBldmVyeSBiYWNrZW5kJ3MgdHlwZSBpcyBvZmZlcmVkLCBzbyBpdCBjYXJyaWVzIHRoZSBiYWNrZW5kIHN1ZmZpeCAoZS5nLlxuICAgKiAgXCJTdXJmYWNlIChuYXBhcmkgwrcgV2ViR1BVKVwiKSB0byBkaXNhbWJpZ3VhdGUgc2FtZS1uYW1lZCBtb2Rlcy4gKi9cbiAgbGFiZWw6IHN0cmluZztcbiAgLyoqXG4gICAqIExhYmVsIHNob3duIGluIHRoZSAqKmRlZmF1bHQgKG5vbi10ZXN0KSBzZWxlY3RvcioqLCB3aGVyZSBhIHNpbmdsZSBjdXJhdGVkXG4gICAqIG1vZGUgb3ducyBlYWNoIG5hbWUg4oCUIHNvIGl0IGRyb3BzIHRoZSBiYWNrZW5kIHN1ZmZpeCAoZS5nLiBqdXN0IFwiU3VyZmFjZVwiKS5cbiAgICogQSB0eXBlIFdJVEhPVVQgYSBgcHJvZHVjdGlvbkxhYmVsYCBpcyAqKnRlc3Qtb25seSoqOiBoaWRkZW4gZnJvbSB0aGUgZGVmYXVsdFxuICAgKiBzZWxlY3RvciBhbmQgc2hvd24gb25seSB3aGVuIHRoZSBob3N0IGVuYWJsZXMgdGVzdCBtb2RlLiBUaGlzIGlzIHRoZSBzaW5nbGVcbiAgICoga25vYiB0aGF0IGN1cmF0ZXMgdGhlIGRlZmF1bHQgcGxvdC1tb2RlIGxpc3QgKGpheC1pbWFnZS12aXN1YWxpemF0aW9uKS5cbiAgICovXG4gIHByb2R1Y3Rpb25MYWJlbD86IHN0cmluZztcbiAgLyoqXG4gICAqIEljb24gc2hvd24gdG8gdGhlIGxlZnQgb2YgdGhlIGxhYmVsIGluIHRoZSBwbG90LXR5cGUgc2VsZWN0b3IuIEVpdGhlciBhXG4gICAqIFByaW1lTkcgaWNvbiBjbGFzcyAoc3RhcnRzIHdpdGggYHBpIGAsIGUuZy4gYHBpIHBpLWltYWdlYCkgcmVuZGVyZWQgYXMgYVxuICAgKiBmb250IGdseXBoLCBvciBhIHNlcnZlZCBTVkcgYXNzZXQgcGF0aCAoZS5nLiBgYXNzZXRzL3Bsb3R0aW5nL3N1cmZhY2Uuc3ZnYClcbiAgICogcmVuZGVyZWQgYXMgYW4gYDxpbWc+YC4gQm90aCBhcmUgdGludGVkIHRvIHRoZSB0b29sYmFyJ3MgcHJpbWFyeSBibHVlLlxuICAgKi9cbiAgaWNvbj86IHN0cmluZztcbiAgZGltZW5zaW9uczogUGxvdERpbWVuc2lvbnM7XG4gIHNvdXJjZTogUGxvdERhdGFTb3VyY2U7XG4gIC8qKiBUcnVlIHdoZW4gdGhlIHR5cGUgb25seSBtYWtlcyBzZW5zZSBvdmVyIGEgbXVsdGktZnJhbWUgei1zdGFjay4gKi9cbiAgcmVxdWlyZXNTdGFjaz86IGJvb2xlYW47XG4gIC8qKiBUcnVlIHdoZW4gdGhlIHR5cGUgbWFwcyBhIHNpbmdsZSBzY2FsYXIgaW50ZW5zaXR5IHBlciBwaXhlbCAoY29udG91cixcbiAgICogIHN1cmZhY2UsIGludGVuc2l0eSBwcm9maWxlLCBpc29zdXJmYWNlKSDigJQgb25seSBtZWFuaW5nZnVsIGZvciBncmF5c2NhbGUuXG4gICAqICBJbWFnZS9IZWF0bWFwIHJlbmRlciBSR0IgZmluZTsgU2NhdHRlciB1c2VzIHJlZ2lvbnMuICovXG4gIHJlcXVpcmVzR3JheXNjYWxlPzogYm9vbGVhbjtcbiAgLyoqIFRydWUgd2hlbiB0aGUgdHlwZSByZW5kZXJzIGEgYFNwYXRpYWxEYXRhc2V0YCAoYHNvdXJjZTogJ3NwYXRpYWwnYCkgYW5kIGlzXG4gICAqICB0aGVyZWZvcmUgbWVhbmluZ2xlc3Mgd2l0aG91dCBvbmUuIFRoZSBzZWxlY3RvciBoaWRlcyBpdCB1bnRpbCBhIGRhdGFzZXQgaXNcbiAgICogIHB1Ymxpc2hlZCBvbiBgU1BBVElBTF9EQVRBX1BPUlRgIOKAlCB0aGUgc2FtZSBzaGFwZSBvZiBnYXRlIGFzXG4gICAqICB7QGxpbmsgcmVxdWlyZXNTdGFja30gZm9yIGEgei1zdGFjaywgc28gYSBob3N0IHdpdGggbm8gc3BhdGlhbCBkYXRhIG5ldmVyXG4gICAqICBzZWVzIHRoZSBtb2RlLiAqL1xuICByZXF1aXJlc1NwYXRpYWxEYXRhPzogYm9vbGVhbjtcbiAgLyoqIFRydWUgd2hlbiB0aGUgdHlwZSBuZWVkcyBvYnNlcnZhdGlvbnMgd2l0aCBhIHogY29vcmRpbmF0ZSwgbm90IG1lcmVseSBhXG4gICAqICBgU3BhdGlhbERhdGFzZXRgLiBOYXJyb3dlciB0aGFuIHtAbGluayByZXF1aXJlc1NwYXRpYWxEYXRhfTogbW9zdCBzcGF0aWFsXG4gICAqICBhc3NheXMgYXJlIGEgc2luZ2xlIHBsYW5lLCBzbyB0aGlzIGhpZGVzIHRoZSAzRCBtb2RlIHVubGVzcyB0aGUgcHVibGlzaGVkXG4gICAqICBkYXRhc2V0IGFjdHVhbGx5IGNhcnJpZXMgYG9ic2VydmF0aW9ucy56YC4gKi9cbiAgcmVxdWlyZXNTcGF0aWFsM2Q/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFNpbmdsZSBzb3VyY2Ugb2YgdHJ1dGggZm9yIHBsb3QtdHlwZSBtZXRhZGF0YS4gTElORSBpcyBpbnRlbnRpb25hbGx5IGFic2VudCDigJRcbiAqIGludGVuc2l0eSBwcm9maWxlcyBhcmUgbm93IFJlZ2lvbi1iYXNlZCBsaW5lIFJPSXMgKGF2YWlsYWJsZSBpbiBIZWF0bWFwL0ltYWdlXG4gKiBtb2RlKSwgc28gTElORSBpcyBubyBsb25nZXIgb2ZmZXJlZCBpbiB0aGUgc2VsZWN0b3IgKHRoZSBlbnVtIG1lbWJlciBpcyBrZXB0XG4gKiBmb3IgZnV0dXJlIHVzZSkuIEhlbmNlIHRoZSBgUGFydGlhbGAgcmVjb3JkLlxuICovXG4vLyBEcm9wZG93biBvcmRlciA9IGluc2VydGlvbiBvcmRlcjogSW1hZ2UgKE9TRCkgZGVmYXVsdCBhdCB0aGUgdG9wLCB0aGVuIGFsbCBQbG90bHkgcGxvdCBtb2Rlc1xuLy8gZ3JvdXBlZCwgdGhlbiBhbGwgbmFwYXJpLWpzIFdlYkdQVSBtb2RlcyBncm91cGVkLlxuLy8gYHByb2R1Y3Rpb25MYWJlbGAgbWFya3MgdGhlIGN1cmF0ZWQgZGVmYXVsdC1zZWxlY3RvciBzZXQgKGppdC11aSM3MCBmb2xsb3ctdXApOlxuLy8gIC0gSU1BR0UgLyBIRUFUTUFQIC8gQ09OVE9VUiAoMkQpIGFuZCB0aGUgbmFwYXJpIFNVUkZBQ0UgLyBWT0xVTUUgLyBJU09TVVJGQUNFXG4vLyAgICAoM0QpIGFyZSB0aGUgbW9kZXMgc2hvd24gYnkgZGVmYXVsdCwgdW5kZXIgc3VmZml4LWZyZWUgbmFtZXMuXG4vLyAgLSBFdmVyeXRoaW5nIGVsc2UgKGFsbCBTY2F0dGVycywgTkFQQVJJX0lNQUdFLCBhbmQgdGhlIFBsb3RseSBTVVJGQUNFIC9cbi8vICAgIElTT1NVUkZBQ0UgdGhhdCB0aGUgbmFwYXJpIHZlcnNpb25zIHN1cGVyc2VkZSkgaXMgdGVzdC1vbmx5IOKAlCBub1xuLy8gICAgYHByb2R1Y3Rpb25MYWJlbGAsIHNvIGl0IGFwcGVhcnMgb25seSB3aGVuIHRoZSBob3N0IGVuYWJsZXMgdGVzdCBtb2RlLlxuZXhwb3J0IGNvbnN0IFBMT1RfVFlQRV9ERVNDUklQVE9SUzogUGFydGlhbDxSZWNvcmQ8UGxvdFR5cGUsIFBsb3RUeXBlRGVzY3JpcHRvcj4+ID0ge1xuICAvLyDilIDilIAgRGVmYXVsdCDilIDilIBcbiAgW1Bsb3RUeXBlLklNQUdFXTogICAgICB7IHR5cGU6IFBsb3RUeXBlLklNQUdFLCAgICAgIGxhYmVsOiAnSW1hZ2UgKE9TRCknLCAgICAgICAgICAgcHJvZHVjdGlvbkxhYmVsOiAnSW1hZ2UnLCAgICAgIGljb246ICdwaSBwaS1pbWFnZScsICAgICAgICAgICAgICAgICAgICBkaW1lbnNpb25zOiAnMmQnLCBzb3VyY2U6ICdpbWFnZScgfSxcbiAgLy8g4pSA4pSAIFBsb3RseSDilIDilIBcbiAgW1Bsb3RUeXBlLkhFQVRNQVBdOiAgICB7IHR5cGU6IFBsb3RUeXBlLkhFQVRNQVAsICAgIGxhYmVsOiAnSGVhdG1hcCAoUGxvdGx5KScsICAgICAgcHJvZHVjdGlvbkxhYmVsOiAnSGVhdG1hcCcsICAgIGljb246ICdhc3NldHMvcGxvdHRpbmcvaGVhdG1hcC5zdmcnLCAgICBkaW1lbnNpb25zOiAnMmQnLCBzb3VyY2U6ICdpbWFnZScgfSxcbiAgW1Bsb3RUeXBlLkNPTlRPVVJdOiAgICB7IHR5cGU6IFBsb3RUeXBlLkNPTlRPVVIsICAgIGxhYmVsOiAnQ29udG91ciAoUGxvdGx5KScsICAgICAgcHJvZHVjdGlvbkxhYmVsOiAnQ29udG91cicsICAgIGljb246ICdhc3NldHMvcGxvdHRpbmcvY29udG91ci5zdmcnLCAgICBkaW1lbnNpb25zOiAnMmQnLCBzb3VyY2U6ICdpbWFnZScsIHJlcXVpcmVzR3JheXNjYWxlOiB0cnVlIH0sXG4gIFtQbG90VHlwZS5TQ0FUVEVSXTogICAgeyB0eXBlOiBQbG90VHlwZS5TQ0FUVEVSLCAgICBsYWJlbDogJ1NjYXR0ZXIgMkQgKFBsb3RseSknLCAgIGljb246ICdwaSBwaS1jaGFydC1zY2F0dGVyJywgICAgICAgICAgICBkaW1lbnNpb25zOiAnMmQnLCBzb3VyY2U6ICdyZWdpb25zJyB9LFxuICBbUGxvdFR5cGUuU1VSRkFDRV06ICAgIHsgdHlwZTogUGxvdFR5cGUuU1VSRkFDRSwgICAgbGFiZWw6ICdTdXJmYWNlIChQbG90bHkpJywgICAgICBpY29uOiAnYXNzZXRzL3Bsb3R0aW5nL3N1cmZhY2Uuc3ZnJywgICAgZGltZW5zaW9uczogJzNkJywgc291cmNlOiAnaW1hZ2UnLCByZXF1aXJlc0dyYXlzY2FsZTogdHJ1ZSB9LFxuICBbUGxvdFR5cGUuU0NBVFRFUjNEXTogIHsgdHlwZTogUGxvdFR5cGUuU0NBVFRFUjNELCAgbGFiZWw6ICdTY2F0dGVyIDNEIChQbG90bHkpJywgICBpY29uOiAnYXNzZXRzL3Bsb3R0aW5nLzNkLWNvb3JkaW5hdGVzLnN2ZycsIGRpbWVuc2lvbnM6ICczZCcsIHNvdXJjZTogJ2ltYWdlJywgcmVxdWlyZXNTdGFjazogdHJ1ZSwgcmVxdWlyZXNHcmF5c2NhbGU6IHRydWUgfSxcbiAgW1Bsb3RUeXBlLklTT1NVUkZBQ0VdOiB7IHR5cGU6IFBsb3RUeXBlLklTT1NVUkZBQ0UsIGxhYmVsOiAnSXNvc3VyZmFjZSAoUGxvdGx5KScsICAgaWNvbjogJ2Fzc2V0cy9wbG90dGluZy9pc29zdXJmYWNlLnN2ZycsIGRpbWVuc2lvbnM6ICczZCcsIHNvdXJjZTogJ2ltYWdlJywgcmVxdWlyZXNTdGFjazogdHJ1ZSwgcmVxdWlyZXNHcmF5c2NhbGU6IHRydWUgfSxcbiAgLy8g4pSA4pSAIG5hcGFyaS1qcyBXZWJHUFUgKGppdC11aSMxMDIpLiBUaGUgM0QgdHlwZXMgdGFrZSBhIHJ1bnRpbWUgZGVjaW1hdGUgZmFjdG9yLiDilIDilIBcbiAgW1Bsb3RUeXBlLk5BUEFSSV9JTUFHRV06ICAgICAgeyB0eXBlOiBQbG90VHlwZS5OQVBBUklfSU1BR0UsICAgICAgbGFiZWw6ICdJbWFnZSAobmFwYXJpIMK3IFdlYkdQVSknLCAgICAgIGljb246ICdwaSBwaS1pbWFnZScsICAgICAgICAgICAgICAgICAgICAgICAgZGltZW5zaW9uczogJzJkJywgc291cmNlOiAnaW1hZ2UnIH0sXG4gIFtQbG90VHlwZS5OQVBBUklfU0NBVFRFUl06ICAgIHsgdHlwZTogUGxvdFR5cGUuTkFQQVJJX1NDQVRURVIsICAgIGxhYmVsOiAnU2NhdHRlciAyRCAobmFwYXJpIMK3IFdlYkdQVSknLCBpY29uOiAncGkgcGktY2hhcnQtc2NhdHRlcicsICAgICAgICAgICAgICAgIGRpbWVuc2lvbnM6ICcyZCcsIHNvdXJjZTogJ3JlZ2lvbnMnIH0sXG4gIFtQbG90VHlwZS5OQVBBUklfU1VSRkFDRV06ICAgIHsgdHlwZTogUGxvdFR5cGUuTkFQQVJJX1NVUkZBQ0UsICAgIGxhYmVsOiAnU3VyZmFjZSAobmFwYXJpIMK3IFdlYkdQVSknLCAgICBwcm9kdWN0aW9uTGFiZWw6ICdTdXJmYWNlJywgICAgaWNvbjogJ2Fzc2V0cy9wbG90dGluZy9zdXJmYWNlLnN2ZycsICAgICAgICBkaW1lbnNpb25zOiAnM2QnLCBzb3VyY2U6ICdpbWFnZScgfSwgLy8gYSBoZWlnaHQtZmllbGQgaXMgej1pbnRlbnNpdHkgb2Ygb25lIHBsYW5lIOKAlCB3b3JrcyBmb3IgYW55IGdyYXlzY2FsZS9SR0IgaW1hZ2UgKFJHQuKGkmx1bWluYW5jZSksIG5vIHN0YWNrIG5lZWRlZFxuICBbUGxvdFR5cGUuTkFQQVJJX1NDQVRURVIzRF06ICB7IHR5cGU6IFBsb3RUeXBlLk5BUEFSSV9TQ0FUVEVSM0QsICBsYWJlbDogJ1NjYXR0ZXIgM0QgKG5hcGFyaSDCtyBXZWJHUFUpJywgaWNvbjogJ2Fzc2V0cy9wbG90dGluZy8zZC1jb29yZGluYXRlcy5zdmcnLCBkaW1lbnNpb25zOiAnM2QnLCBzb3VyY2U6ICdpbWFnZScsIHJlcXVpcmVzU3RhY2s6IHRydWUsIHJlcXVpcmVzR3JheXNjYWxlOiB0cnVlIH0sXG4gIFtQbG90VHlwZS5OQVBBUklfVk9MVU1FXTogICAgIHsgdHlwZTogUGxvdFR5cGUuTkFQQVJJX1ZPTFVNRSwgICAgIGxhYmVsOiAnVm9sdW1lIChuYXBhcmkgwrcgV2ViR1BVKScsICAgICBwcm9kdWN0aW9uTGFiZWw6ICdWb2x1bWUnLCAgICAgaWNvbjogJ2Fzc2V0cy9wbG90dGluZy9jdWJlLTNkLnN2ZycsICAgICAgICBkaW1lbnNpb25zOiAnM2QnLCBzb3VyY2U6ICdpbWFnZScsIHJlcXVpcmVzU3RhY2s6IHRydWUsIHJlcXVpcmVzR3JheXNjYWxlOiB0cnVlIH0sXG4gIFtQbG90VHlwZS5OQVBBUklfSVNPU1VSRkFDRV06IHsgdHlwZTogUGxvdFR5cGUuTkFQQVJJX0lTT1NVUkZBQ0UsIGxhYmVsOiAnSXNvc3VyZmFjZSAobmFwYXJpIMK3IFdlYkdQVSknLCBwcm9kdWN0aW9uTGFiZWw6ICdJc29zdXJmYWNlJywgaWNvbjogJ2Fzc2V0cy9wbG90dGluZy9pc29zdXJmYWNlLnN2ZycsICAgICBkaW1lbnNpb25zOiAnM2QnLCBzb3VyY2U6ICdpbWFnZScsIHJlcXVpcmVzU3RhY2s6IHRydWUsIHJlcXVpcmVzR3JheXNjYWxlOiB0cnVlIH0sXG4gIC8vIOKUgOKUgCBTcGF0aWFsIG9taWNzIOKUgOKUgFxuICBbUGxvdFR5cGUuU1BBVElBTF9PTUlDU106ICAgICB7IHR5cGU6IFBsb3RUeXBlLlNQQVRJQUxfT01JQ1MsICAgICBsYWJlbDogJ1NwYXRpYWwgb21pY3MgKG5hcGFyaSDCtyBXZWJHUFUpJywgcHJvZHVjdGlvbkxhYmVsOiAnU3BhdGlhbCBvbWljcycsIGljb246ICdhc3NldHMvcGxvdHRpbmcvc3BhdGlhbC1vbWljcy5zdmcnLCAgZGltZW5zaW9uczogJzJkJywgc291cmNlOiAnc3BhdGlhbCcsIHJlcXVpcmVzU3BhdGlhbERhdGE6IHRydWUgfSxcbiAgW1Bsb3RUeXBlLlNQQVRJQUxfT01JQ1NfM0RdOiAgeyB0eXBlOiBQbG90VHlwZS5TUEFUSUFMX09NSUNTXzNELCAgbGFiZWw6ICdTcGF0aWFsIG9taWNzIDNEIChuYXBhcmkgwrcgV2ViR1BVKScsIHByb2R1Y3Rpb25MYWJlbDogJ1NwYXRpYWwgb21pY3MgM0QnLCBpY29uOiAnYXNzZXRzL3Bsb3R0aW5nL3NwYXRpYWwtb21pY3MtM2Quc3ZnJywgZGltZW5zaW9uczogJzNkJywgc291cmNlOiAnc3BhdGlhbCcsIHJlcXVpcmVzU3BhdGlhbERhdGE6IHRydWUsIHJlcXVpcmVzU3BhdGlhbDNkOiB0cnVlIH0sXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGxvdFR5cGVEZXNjcmlwdG9yKHR5cGU6IFBsb3RUeXBlKTogUGxvdFR5cGVEZXNjcmlwdG9yIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIFBMT1RfVFlQRV9ERVNDUklQVE9SU1t0eXBlXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVGhyZWVEaW1lbnNpb25hbCh0eXBlOiBQbG90VHlwZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gUExPVF9UWVBFX0RFU0NSSVBUT1JTW3R5cGVdPy5kaW1lbnNpb25zID09PSAnM2QnO1xufVxuXG4vLyDilIDilIAgbmFwYXJpLWpzIDNEIHBsb3QtdHlwZSBwcmVkaWNhdGVzIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuLyoqIG5hcGFyaS1qcyB2b2x1bWUuICovXG5leHBvcnQgZnVuY3Rpb24gaXNOYXBhcmlWb2x1bWUodHlwZTogUGxvdFR5cGUpOiBib29sZWFuIHtcbiAgcmV0dXJuIHR5cGUgPT09IFBsb3RUeXBlLk5BUEFSSV9WT0xVTUU7XG59XG4vKiogbmFwYXJpLWpzIGlzb3N1cmZhY2UuICovXG5leHBvcnQgZnVuY3Rpb24gaXNOYXBhcmlJc29zdXJmYWNlKHR5cGU6IFBsb3RUeXBlKTogYm9vbGVhbiB7XG4gIHJldHVybiB0eXBlID09PSBQbG90VHlwZS5OQVBBUklfSVNPU1VSRkFDRTtcbn1cbi8qKiBuYXBhcmktanMgaGVpZ2h0LWZpZWxkIHN1cmZhY2UgbWVzaC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc05hcGFyaVN1cmZhY2UodHlwZTogUGxvdFR5cGUpOiBib29sZWFuIHtcbiAgcmV0dXJuIHR5cGUgPT09IFBsb3RUeXBlLk5BUEFSSV9TVVJGQUNFO1xufVxuLyoqIG5hcGFyaS1qcyAyRCBzY2F0dGVyIChyZWdpb24gY2VudHJvaWRzKS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc05hcGFyaVNjYXR0ZXIodHlwZTogUGxvdFR5cGUpOiBib29sZWFuIHtcbiAgcmV0dXJuIHR5cGUgPT09IFBsb3RUeXBlLk5BUEFSSV9TQ0FUVEVSO1xufVxuLyoqIG5hcGFyaS1qcyAzRCBzY2F0dGVyICh2b3hlbCBwb2ludCBjbG91ZCkuICovXG5leHBvcnQgZnVuY3Rpb24gaXNOYXBhcmlTY2F0dGVyM2QodHlwZTogUGxvdFR5cGUpOiBib29sZWFuIHtcbiAgcmV0dXJuIHR5cGUgPT09IFBsb3RUeXBlLk5BUEFSSV9TQ0FUVEVSM0Q7XG59XG4vKiogU3BhdGlhbC1vbWljcyBvYnNlcnZhdGlvbnMgb3ZlciB0aGUgdGlzc3VlIGltYWdlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzU3BhdGlhbE9taWNzKHR5cGU6IFBsb3RUeXBlKTogYm9vbGVhbiB7XG4gIHJldHVybiB0eXBlID09PSBQbG90VHlwZS5TUEFUSUFMX09NSUNTO1xufVxuLyoqIFNwYXRpYWwtb21pY3Mgb2JzZXJ2YXRpb25zIGFzIGEgM0QgcG9pbnQgY2xvdWQuICovXG5leHBvcnQgZnVuY3Rpb24gaXNTcGF0aWFsT21pY3MzZCh0eXBlOiBQbG90VHlwZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gdHlwZSA9PT0gUGxvdFR5cGUuU1BBVElBTF9PTUlDU18zRDtcbn1cbi8qKlxuICogV2hldGhlciB0aGUgcmVuZGVyZXIsIHJhdGhlciB0aGFuIHRoZSBzaGVsbCwgc2hvdWxkIGhhbmRsZSB3aGVlbCB6b29tLlxuICpcbiAqIFRoZSBzaGVsbCdzIHdoZWVsIGxpc3RlbmVyIGFwcGxpZXMgYSBGSVhFRCBzdGVwIHBlciBldmVudCwgd2hpY2ggaXMgZmFyIHRvbyBzZW5zaXRpdmUgZm9yIGFcbiAqIHJlbmRlcmVyIHRoYXQgcmVhZHMgdGhlIHNjcm9sbCBkZWx0YTogaXQgd29ya3Mgb3V0IGF0IDMwJSBwZXIgZXZlbnQgYWdhaW5zdCBuYXBhcmktanMncyAzJSwgYW5kXG4gKiBpZ25vcmVzIHRoZSBkZXZpY2Ugbm9ybWFsaXphdGlvbiBhbmQgZWFzaW5nIHRoZSByZW5kZXJlciBkb2VzLiBTbyBldmVyeSBwbG90IHR5cGUgZHJhd24gYnkgYVxuICogcmVuZGVyZXIgdGhhdCBvd25zIHRoZSB3aGVlbCBoYXMgdG8gb3B0IG91dCBoZXJlLlxuICpcbiAqIFRoZSBpbWFnZSB2aWV3IGFsd2F5cyBkaWQuIFRoZSBzcGF0aWFsLW9taWNzIG1vZGVzIGRpZCBOT1QsIGRlc3BpdGUgYmVpbmcgZHJhd24gYnkgdGhlIHNhbWVcbiAqIG5hcGFyaS1qcyB2aWV3ZXIg4oCUIHRoZSBzaGVsbCBnYXRlZCBvbiBhbiBgaXNIZWF0bWFwYCBmbGFnIHRoYXQgZGVmYXVsdHMgdG8gdHJ1ZSBhbmQgb25seSBnb2VzXG4gKiBmYWxzZSBmb3IgdGhlIDNEIFBsb3RseSBzY2VuZXMsIHNvIGl0IHNpbGVudGx5IHRvb2sgdGhlIHdoZWVsIGZvciB0aGVtIHRvby5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlcmVyT3duc1doZWVsKHR5cGU6IFBsb3RUeXBlKTogYm9vbGVhbiB7XG4gIHJldHVybiB0eXBlID09PSBQbG90VHlwZS5JTUFHRSB8fCBpc1NwYXRpYWxPbWljcyh0eXBlKSB8fCBpc1NwYXRpYWxPbWljczNkKHR5cGUpO1xufVxuXG4vKiogQW55IG5hcGFyaS1qcyAzRCBwbG90IHR5cGUgKHZvbHVtZSwgaXNvc3VyZmFjZSwgc3VyZmFjZSwgb3IgM0Qgc2NhdHRlcikuIFJlc29sdXRpb24gaXMgYSBydW50aW1lXG4gKiAgZGVjaW1hdGUgZmFjdG9yIChGdWxsIC8gwr0gLyDCvCAvIOKFmykg4oCUIHNlZSB0aGUgc2VydmljZSdzIGByZXNvbHV0aW9uU2NhbGVgLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTmFwYXJpM2QodHlwZTogUGxvdFR5cGUpOiBib29sZWFuIHtcbiAgcmV0dXJuIChcbiAgICBpc05hcGFyaVZvbHVtZSh0eXBlKSB8fCBpc05hcGFyaUlzb3N1cmZhY2UodHlwZSkgfHwgaXNOYXBhcmlTdXJmYWNlKHR5cGUpIHx8IGlzTmFwYXJpU2NhdHRlcjNkKHR5cGUpXG4gICk7XG59XG5cbi8qKiBEZWNpbWF0ZSBmYWN0b3JzIG9mZmVyZWQgYnkgdGhlIFJlc29sdXRpb24gY29udHJvbCAoMSA9IEZ1bGwg4oCmIDggPSDihZspLiAqL1xuZXhwb3J0IGNvbnN0IE5BUEFSSV9ERUNJTUFURV9PUFRJT05TOiB7IGxhYmVsOiBzdHJpbmc7IHZhbHVlOiBudW1iZXIgfVtdID0gW1xuICB7IGxhYmVsOiAnRnVsbCcsIHZhbHVlOiAxIH0sXG4gIHsgbGFiZWw6ICfCvScsIHZhbHVlOiAyIH0sXG4gIHsgbGFiZWw6ICfCvCcsIHZhbHVlOiA0IH0sXG4gIHsgbGFiZWw6ICfihZsnLCB2YWx1ZTogOCB9LFxuXTtcblxuLyoqIERlZmF1bHQgZGVjaW1hdGUgZmFjdG9yOiDCvC4gVGhlIGNhcHMgYXJlIHNldCBzbyDCvCBpcyBhIHNlbnNpYmxlIGRlZmF1bHQgcmVzb2x1dGlvbiB3aGlsZSDCvSBhbmRcbiAqICBGdWxsIG9mZmVyIDLDlyBhbmQgNMOXIHRoZSBkZXRhaWwgZm9yIG9wdC1pbiBoaWdoLXJlc29sdXRpb24gcmVuZGVycy4gKi9cbmV4cG9ydCBjb25zdCBOQVBBUklfREVGQVVMVF9ERUNJTUFURSA9IDQ7XG4iXX0=
|
|
152
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxvdC10eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jb250cmFjdHMvcGxvdC10eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBTSxDQUFOLElBQVksUUFnQ1g7QUFoQ0QsV0FBWSxRQUFRO0lBQ2xCO2lGQUM2RTtJQUM3RSwyQkFBZSxDQUFBO0lBQ2YsK0JBQW1CLENBQUE7SUFDbkIsK0JBQW1CLENBQUE7SUFDbkIsK0JBQW1CLENBQUE7SUFDbkIsK0JBQW1CLENBQUE7SUFDbkIseUZBQXlGO0lBQ3pGLHlCQUFhLENBQUE7SUFDYixtQ0FBdUIsQ0FBQTtJQUN2QixxQ0FBeUIsQ0FBQTtJQUN6Qjt1R0FDbUc7SUFDbkcseUNBQTZCLENBQUE7SUFDN0IsMkNBQStCLENBQUE7SUFDL0IsbURBQXVDLENBQUE7SUFDdkMsZ0dBQWdHO0lBQ2hHLDZDQUFpQyxDQUFBO0lBQ2pDLGtGQUFrRjtJQUNsRiw2Q0FBaUMsQ0FBQTtJQUNqQywrRkFBK0Y7SUFDL0YsaURBQXFDLENBQUE7SUFDckM7OzRGQUV3RjtJQUN4RiwyQ0FBK0IsQ0FBQTtJQUMvQjs7OzRFQUd3RTtJQUN4RSxpREFBcUMsQ0FBQTtBQUN2QyxDQUFDLEVBaENXLFFBQVEsS0FBUixRQUFRLFFBZ0NuQjtBQVdELE1BQU0sa0JBQWtCLEdBQXdCLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztBQUVqRixrRkFBa0Y7QUFDbEYsTUFBTSxVQUFVLGlCQUFpQixDQUFDLEVBQWlDO0lBQ2pFLE9BQU8sT0FBTyxFQUFFLEtBQUssUUFBUSxJQUFJLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUM5RCxDQUFDO0FBOEREOzs7OztHQUtHO0FBQ0gsK0ZBQStGO0FBQy9GLG9EQUFvRDtBQUNwRCxrRkFBa0Y7QUFDbEYsaUZBQWlGO0FB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cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGUga2luZCBvZiByZW5kZXJpbmcgYSB2aWV3ZXIgYmFja2VuZCBzaG91bGQgcHJvZHVjZSBmb3IgdGhlIGxvYWRlZCBkYXRhLlxuICpcbiAqIExpdmVzIGluIGBjb250cmFjdHMvYCAocmF0aGVyIHRoYW4gaW5zaWRlIGEgc3BlY2lmaWMgYmFja2VuZCkgYmVjYXVzZSBpdCBpc1xuICogcGFydCBvZiB0aGUgYmFja2VuZC1uZXV0cmFsIHBsb3R0aW5nIGNvbnRyYWN0OiBib3RoIHRoZSBQbG90bHkgYmFja2VuZCBhbmRcbiAqIGFueSBmdXR1cmUgYmFja2VuZCAoZS5nLiBPcGVuU2VhZHJhZ29uKSBhY2NlcHQgYSBgUGxvdFR5cGVgIG9uIGBwbG90KClgLlxuICpcbiAqIE5PVEU6IGEgYmFja2VuZCBtYXkgbm90IHN1cHBvcnQgZXZlcnkgdHlwZSDigJQgM0QgdHlwZXMgKGBTVVJGQUNFYCxcbiAqIGBTQ0FUVEVSM0RgLCBgSVNPU1VSRkFDRWApIGFyZSBnYXRlZCBiZWhpbmQgYFZpZXdlckZlYXR1cmUuU3VyZmFjZTNEYCBpbiB0aGVcbiAqIGNhcGFiaWxpdGllcyBjb250cmFjdCwgc28gYSAyRC1vbmx5IGJhY2tlbmQgY2FuIGFkdmVydGlzZSB0aGF0IGl0IGNhbid0XG4gKiByZW5kZXIgdGhlbSBhbmQgdGhlIFVJIGNhbiBoaWRlIHRoZSBvcHRpb24uXG4gKi9cbmV4cG9ydCBlbnVtIFBsb3RUeXBlIHtcbiAgLyoqIE5hdGl2ZWx5LXRpbGVkLCB6b29tYWJsZSByYXN0ZXIgcmVuZGVyZWQgYnkgT3BlblNlYWRyYWdvbiAodGhlIGRlZmF1bHRcbiAgICogIHZpZXcgZm9yIGFuIGltYWdlKS4gSGVhdG1hcCByZW1haW5zIHRoZSBQbG90bHkgc2NhbGFyLWltYWdlIHJlbmRlcmluZy4gKi9cbiAgSU1BR0UgPSAnaW1hZ2UnLFxuICBIRUFUTUFQID0gJ2hlYXRtYXAnLFxuICBTVVJGQUNFID0gJ3N1cmZhY2UnLFxuICBDT05UT1VSID0gJ2NvbnRvdXInLFxuICBTQ0FUVEVSID0gJ3NjYXR0ZXInLFxuICAvLyBMSU5FOiByZXNlcnZlZC9zdHViYmVkIOKAlCBpbnRlbnNpdHkgcHJvZmlsZXMgYXJlIG5vdyBSZWdpb24tYmFzZWQgKGtlcHQgZm9yIGZ1dHVyZSB1c2UpXG4gIExJTkUgPSAnbGluZScsXG4gIFNDQVRURVIzRCA9ICdzY2F0dGVyM2QnLFxuICBJU09TVVJGQUNFID0gJ2lzb3N1cmZhY2UnLFxuICAvKiogV2ViR1BVIG5hcGFyaS1qcyByZW5kZXJpbmdzIChqaXQtdWkjMTAyKSwgc2VsZWN0YWJsZSBhbG9uZ3NpZGUgdGhlIE9TRC9QbG90bHkgdHlwZXMuIFRoZSAzRFxuICAgKiAgdHlwZXMgdGFrZSBhIHJ1bnRpbWUgZGVjaW1hdGUgZmFjdG9yIChGdWxsIC8gwr0gLyDCvCAvIOKFmykgaW5zdGVhZCBvZiBmaXhlZCBoaS9sby1yZXMgdmFyaWFudHMuICovXG4gIE5BUEFSSV9JTUFHRSA9ICduYXBhcmktaW1hZ2UnLFxuICBOQVBBUklfVk9MVU1FID0gJ25hcGFyaS12b2x1bWUnLFxuICBOQVBBUklfSVNPU1VSRkFDRSA9ICduYXBhcmktaXNvc3VyZmFjZScsXG4gIC8qKiBXZWJHUFUgaGVpZ2h0LWZpZWxkIHN1cmZhY2UgbWVzaCAoeiA9IGludGVuc2l0eSksIHRoZSBuYXBhcmktanMgYW5hbG9nIG9mIFBsb3RseSBTVVJGQUNFLiAqL1xuICBOQVBBUklfU1VSRkFDRSA9ICduYXBhcmktc3VyZmFjZScsXG4gIC8qKiBXZWJHUFUgMkQgc2NhdHRlciBvZiByZWdpb24gY2VudHJvaWRzIChuYXBhcmktanMgYW5hbG9nIG9mIFBsb3RseSBTQ0FUVEVSKS4gKi9cbiAgTkFQQVJJX1NDQVRURVIgPSAnbmFwYXJpLXNjYXR0ZXInLFxuICAvKiogV2ViR1BVIDNEIHNjYXR0ZXIgb2YgdGhlIGRvd25zYW1wbGVkIHZveGVsIGNsb3VkIChuYXBhcmktanMgYW5hbG9nIG9mIFBsb3RseSBTQ0FUVEVSM0QpLiAqL1xuICBOQVBBUklfU0NBVFRFUjNEID0gJ25hcGFyaS1zY2F0dGVyM2QnLFxuICAvKiogU3BhdGlhbC1vbWljcyBvYnNlcnZhdGlvbnMgKFZpc2l1bSBzcG90cywgc2VnbWVudGVkIGNlbGxzKSBkcmF3biBvdmVyIHRoZSB0aXNzdWUgaW1hZ2UgYW5kXG4gICAqICBjb2xvdXJlZCBieSBhbiBhbm5vdGF0aW9uIGNvbHVtbiBvciBhIGdlbmUuIE5lZWRzIGEgYFNwYXRpYWxEYXRhc2V0YCBvbiBgU1BBVElBTF9EQVRBX1BPUlRgLFxuICAgKiAgc28gaXQgaXMgZ2F0ZWQgYnkgYHJlcXVpcmVzU3BhdGlhbERhdGFgIGFuZCBuZXZlciBhcHBlYXJzIGZvciBhbiBpbWFnZS1vbmx5IGhvc3QuICovXG4gIFNQQVRJQUxfT01JQ1MgPSAnc3BhdGlhbC1vbWljcycsXG4gIC8qKiBTcGF0aWFsLW9taWNzIG9ic2VydmF0aW9ucyBhcyBhIDNEIHBvaW50IGNsb3VkLCBmb3IgYXNzYXlzIHdob3NlIG9ic2VydmF0aW9ucyBjYXJyeSBhIHog4oCUXG4gICAqICBzZXJpYWwgc2VjdGlvbnMgcmVnaXN0ZXJlZCBpbnRvIGEgY29tbW9uIGZyYW1lIChlLmcuIHRoZSBBbGxlbiBDQ0YpLCBvciBhIGdlbnVpbmVseVxuICAgKiAgdm9sdW1ldHJpYyBhc3NheS4gR2F0ZWQgYnkgYHJlcXVpcmVzU3BhdGlhbDNkYCwgYSBzdHJpY3RseSBuYXJyb3dlciBnYXRlIHRoYW5cbiAgICogIHtAbGluayBTUEFUSUFMX09NSUNTfTogYSBzaW5nbGUtcGxhbmUgZGF0YXNldCBoYXMgbm8geiB0byByZW5kZXIuICovXG4gIFNQQVRJQUxfT01JQ1NfM0QgPSAnc3BhdGlhbC1vbWljcy0zZCcsXG59XG5cbi8qKlxuICogQSB2YWx1ZSB0aGUgcGxvdC10eXBlIHNlbGVjdG9yIGNhbiBob2xkOiBhIGJ1aWx0LWluIHtAbGluayBQbG90VHlwZX0sIG9yIHRoZVxuICogYHR5cGVgIG9mIGEgY29udHJpYnV0ZWQgbW9kZSAoYENvbnRyaWJ1dGVkUGxvdFR5cGVEZXNjcmlwdG9yLnR5cGVgLCBzZWVcbiAqIGBwbG90LXR5cGUtY29udHJpYnV0aW9uLmNvbnRyYWN0LnRzYCkuIEV2ZXJ5dGhpbmcgdGhhdCBkZWNpZGVzIEhPVyB0byByZW5kZXJcbiAqIGtlZXBzIHRha2luZyBhIHtAbGluayBQbG90VHlwZX07IGEgY29udHJpYnV0ZWQgaWQgaXMgcmVzb2x2ZWQgdG8gaXRzXG4gKiBgYmFzZVR5cGVgIGZpcnN0LCBzbyBubyByZW5kZXJpbmcgc3dpdGNoIGV2ZXIgc2VlcyBvbmUuXG4gKi9cbmV4cG9ydCB0eXBlIFBsb3RUeXBlSWQgPSBQbG90VHlwZSB8IHN0cmluZztcblxuY29uc3QgQlVJTFRJTl9QTE9UX1RZUEVTOiBSZWFkb25seVNldDxzdHJpbmc+ID0gbmV3IFNldChPYmplY3QudmFsdWVzKFBsb3RUeXBlKSk7XG5cbi8qKiBXaGV0aGVyIGFuIGlkIG5hbWVzIGEgYnVpbHQtaW4gcGxvdCB0eXBlIChhcyBvcHBvc2VkIHRvIGEgY29udHJpYnV0ZWQgb25lKS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0J1aWx0aW5QbG90VHlwZShpZDogUGxvdFR5cGVJZCB8IG51bGwgfCB1bmRlZmluZWQpOiBpZCBpcyBQbG90VHlwZSB7XG4gIHJldHVybiB0eXBlb2YgaWQgPT09ICdzdHJpbmcnICYmIEJVSUxUSU5fUExPVF9UWVBFUy5oYXMoaWQpO1xufVxuXG4vKiogSG93IG1hbnkgc3BhdGlhbCBkaW1lbnNpb25zIGEgcGxvdCB0eXBlIHJlbmRlcnMgaW4uICovXG5leHBvcnQgdHlwZSBQbG90RGltZW5zaW9ucyA9ICcyZCcgfCAnM2QnO1xuXG4vKipcbiAqIFdoZXJlIGEgcGxvdCB0eXBlIHB1bGxzIGl0cyBkYXRhIGZyb206XG4gKiAgLSBgaW1hZ2VgICAg4oCUIHRoZSBsb2FkZWQgcGl4ZWwgbWF0cmljZXMgLyB6LXN0YWNrIChIRUFUTUFQLCBTVVJGQUNFLCDigKYpXG4gKiAgLSBgcmVnaW9uc2Ag4oCUIHRoZSBkcmF3bi9kZXJpdmVkIHJlZ2lvbnMgKFNDQVRURVIgb2YgcmVnaW9uIGNlbnRyb2lkcywg4oCmKVxuICogIC0gYHNwYXRpYWxgIOKAlCBhIGBTcGF0aWFsRGF0YXNldGAgc3VwcGxpZWQgdGhyb3VnaCBgU1BBVElBTF9EQVRBX1BPUlRgOiBOXG4gKiAgICBvYnNlcnZhdGlvbnMgKHNwb3RzL2NlbGxzKSB3aXRoIGNhdGVnb3JpY2FsICsgY29udGludW91cyBjb2x1bW5zIGFuZCBhXG4gKiAgICBsYXppbHktZmV0Y2hlZCBmZWF0dXJlIG1hdHJpeCwgZHJhd24gb3ZlciB0aGUgdGlzc3VlIGltYWdlIHRoZXkgY2FtZSBmcm9tLlxuICovXG5leHBvcnQgdHlwZSBQbG90RGF0YVNvdXJjZSA9ICdpbWFnZScgfCAncmVnaW9ucycgfCAnc3BhdGlhbCc7XG5cbi8qKlxuICogQmFja2VuZC1uZXV0cmFsIG1ldGFkYXRhIGFib3V0IGEgcGxvdCB0eXBlLiBEcml2ZXMgVUkgYWZmb3JkYW5jZXMgKHdoaWNoXG4gKiB0eXBlcyBhcmUgM0QsIHdoaWNoIG5lZWQgYW4gaW1hZ2Ugc3RhY2ssIGhvdyB0byBsYWJlbCB0aGVtIGluIGEgZHJvcGRvd24pXG4gKiB3aXRob3V0IGFueSBiYWNrZW5kJ3MgdHJhY2UtYnVpbGRpbmcgbG9naWMgbGVha2luZyBpbnRvIHRoZSBjb250cmFjdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbG90VHlwZURlc2NyaXB0b3Ige1xuICB0eXBlOiBQbG90VHlwZTtcbiAgLyoqIEh1bWFuLXJlYWRhYmxlIGxhYmVsIGZvciBtZW51cy9kcm9wZG93bnMuIFNob3duIGluICoqdGVzdCBtb2RlKiosIHdoZXJlXG4gICAqICBldmVyeSBiYWNrZW5kJ3MgdHlwZSBpcyBvZmZlcmVkLCBzbyBpdCBjYXJyaWVzIHRoZSBiYWNrZW5kIHN1ZmZpeCAoZS5nLlxuICAgKiAgXCJTdXJmYWNlIChuYXBhcmkgwrcgV2ViR1BVKVwiKSB0byBkaXNhbWJpZ3VhdGUgc2FtZS1uYW1lZCBtb2Rlcy4gKi9cbiAgbGFiZWw6IHN0cmluZztcbiAgLyoqXG4gICAqIExhYmVsIHNob3duIGluIHRoZSAqKmRlZmF1bHQgKG5vbi10ZXN0KSBzZWxlY3RvcioqLCB3aGVyZSBhIHNpbmdsZSBjdXJhdGVkXG4gICAqIG1vZGUgb3ducyBlYWNoIG5hbWUg4oCUIHNvIGl0IGRyb3BzIHRoZSBiYWNrZW5kIHN1ZmZpeCAoZS5nLiBqdXN0IFwiU3VyZmFjZVwiKS5cbiAgICogQSB0eXBlIFdJVEhPVVQgYSBgcHJvZHVjdGlvbkxhYmVsYCBpcyAqKnRlc3Qtb25seSoqOiBoaWRkZW4gZnJvbSB0aGUgZGVmYXVsdFxuICAgKiBzZWxlY3RvciBhbmQgc2hvd24gb25seSB3aGVuIHRoZSBob3N0IGVuYWJsZXMgdGVzdCBtb2RlLiBUaGlzIGlzIHRoZSBzaW5nbGVcbiAgICoga25vYiB0aGF0IGN1cmF0ZXMgdGhlIGRlZmF1bHQgcGxvdC1tb2RlIGxpc3QgKGpheC1pbWFnZS12aXN1YWxpemF0aW9uKS5cbiAgICovXG4gIHByb2R1Y3Rpb25MYWJlbD86IHN0cmluZztcbiAgLyoqXG4gICAqIEljb24gc2hvd24gdG8gdGhlIGxlZnQgb2YgdGhlIGxhYmVsIGluIHRoZSBwbG90LXR5cGUgc2VsZWN0b3IuIEVpdGhlciBhXG4gICAqIFByaW1lTkcgaWNvbiBjbGFzcyAoc3RhcnRzIHdpdGggYHBpIGAsIGUuZy4gYHBpIHBpLWltYWdlYCkgcmVuZGVyZWQgYXMgYVxuICAgKiBmb250IGdseXBoLCBvciBhIHNlcnZlZCBTVkcgYXNzZXQgcGF0aCAoZS5nLiBgYXNzZXRzL3Bsb3R0aW5nL3N1cmZhY2Uuc3ZnYClcbiAgICogcmVuZGVyZWQgYXMgYW4gYDxpbWc+YC4gQm90aCBhcmUgdGludGVkIHRvIHRoZSB0b29sYmFyJ3MgcHJpbWFyeSBibHVlLlxuICAgKi9cbiAgaWNvbj86IHN0cmluZztcbiAgZGltZW5zaW9uczogUGxvdERpbWVuc2lvbnM7XG4gIHNvdXJjZTogUGxvdERhdGFTb3VyY2U7XG4gIC8qKiBUcnVlIHdoZW4gdGhlIHR5cGUgb25seSBtYWtlcyBzZW5zZSBvdmVyIGEgbXVsdGktZnJhbWUgei1zdGFjay4gKi9cbiAgcmVxdWlyZXNTdGFjaz86IGJvb2xlYW47XG4gIC8qKiBUcnVlIHdoZW4gdGhlIHR5cGUgbWFwcyBhIHNpbmdsZSBzY2FsYXIgaW50ZW5zaXR5IHBlciBwaXhlbCAoY29udG91cixcbiAgICogIHN1cmZhY2UsIGludGVuc2l0eSBwcm9maWxlLCBpc29zdXJmYWNlKSDigJQgb25seSBtZWFuaW5nZnVsIGZvciBncmF5c2NhbGUuXG4gICAqICBJbWFnZS9IZWF0bWFwIHJlbmRlciBSR0IgZmluZTsgU2NhdHRlciB1c2VzIHJlZ2lvbnMuICovXG4gIHJlcXVpcmVzR3JheXNjYWxlPzogYm9vbGVhbjtcbiAgLyoqIFRydWUgd2hlbiB0aGUgdHlwZSByZW5kZXJzIGEgYFNwYXRpYWxEYXRhc2V0YCAoYHNvdXJjZTogJ3NwYXRpYWwnYCkgYW5kIGlzXG4gICAqICB0aGVyZWZvcmUgbWVhbmluZ2xlc3Mgd2l0aG91dCBvbmUuIFRoZSBzZWxlY3RvciBoaWRlcyBpdCB1bnRpbCBhIGRhdGFzZXQgaXNcbiAgICogIHB1Ymxpc2hlZCBvbiBgU1BBVElBTF9EQVRBX1BPUlRgIOKAlCB0aGUgc2FtZSBzaGFwZSBvZiBnYXRlIGFzXG4gICAqICB7QGxpbmsgcmVxdWlyZXNTdGFja30gZm9yIGEgei1zdGFjaywgc28gYSBob3N0IHdpdGggbm8gc3BhdGlhbCBkYXRhIG5ldmVyXG4gICAqICBzZWVzIHRoZSBtb2RlLiAqL1xuICByZXF1aXJlc1NwYXRpYWxEYXRhPzogYm9vbGVhbjtcbiAgLyoqIFRydWUgd2hlbiB0aGUgdHlwZSBuZWVkcyBvYnNlcnZhdGlvbnMgd2l0aCBhIHogY29vcmRpbmF0ZSwgbm90IG1lcmVseSBhXG4gICAqICBgU3BhdGlhbERhdGFzZXRgLiBOYXJyb3dlciB0aGFuIHtAbGluayByZXF1aXJlc1NwYXRpYWxEYXRhfTogbW9zdCBzcGF0aWFsXG4gICAqICBhc3NheXMgYXJlIGEgc2luZ2xlIHBsYW5lLCBzbyB0aGlzIGhpZGVzIHRoZSAzRCBtb2RlIHVubGVzcyB0aGUgcHVibGlzaGVkXG4gICAqICBkYXRhc2V0IGFjdHVhbGx5IGNhcnJpZXMgYG9ic2VydmF0aW9ucy56YC4gKi9cbiAgcmVxdWlyZXNTcGF0aWFsM2Q/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFNpbmdsZSBzb3VyY2Ugb2YgdHJ1dGggZm9yIHBsb3QtdHlwZSBtZXRhZGF0YS4gTElORSBpcyBpbnRlbnRpb25hbGx5IGFic2VudCDigJRcbiAqIGludGVuc2l0eSBwcm9maWxlcyBhcmUgbm93IFJlZ2lvbi1iYXNlZCBsaW5lIFJPSXMgKGF2YWlsYWJsZSBpbiBIZWF0bWFwL0ltYWdlXG4gKiBtb2RlKSwgc28gTElORSBpcyBubyBsb25nZXIgb2ZmZXJlZCBpbiB0aGUgc2VsZWN0b3IgKHRoZSBlbnVtIG1lbWJlciBpcyBrZXB0XG4gKiBmb3IgZnV0dXJlIHVzZSkuIEhlbmNlIHRoZSBgUGFydGlhbGAgcmVjb3JkLlxuICovXG4vLyBEcm9wZG93biBvcmRlciA9IGluc2VydGlvbiBvcmRlcjogSW1hZ2UgKE9TRCkgZGVmYXVsdCBhdCB0aGUgdG9wLCB0aGVuIGFsbCBQbG90bHkgcGxvdCBtb2Rlc1xuLy8gZ3JvdXBlZCwgdGhlbiBhbGwgbmFwYXJpLWpzIFdlYkdQVSBtb2RlcyBncm91cGVkLlxuLy8gYHByb2R1Y3Rpb25MYWJlbGAgbWFya3MgdGhlIGN1cmF0ZWQgZGVmYXVsdC1zZWxlY3RvciBzZXQgKGppdC11aSM3MCBmb2xsb3ctdXApOlxuLy8gIC0gSU1BR0UgLyBIRUFUTUFQIC8gQ09OVE9VUiAoMkQpIGFuZCB0aGUgbmFwYXJpIFNVUkZBQ0UgLyBWT0xVTUUgLyBJU09TVVJGQUNFXG4vLyAgICAoM0QpIGFyZSB0aGUgbW9kZXMgc2hvd24gYnkgZGVmYXVsdCwgdW5kZXIgc3VmZml4LWZyZWUgbmFtZXMuXG4vLyAgLSBFdmVyeXRoaW5nIGVsc2UgKGFsbCBTY2F0dGVycywgTkFQQVJJX0lNQUdFLCBhbmQgdGhlIFBsb3RseSBTVVJGQUNFIC9cbi8vICAgIElTT1NVUkZBQ0UgdGhhdCB0aGUgbmFwYXJpIHZlcnNpb25zIHN1cGVyc2VkZSkgaXMgdGVzdC1vbmx5IOKAlCBub1xuLy8gICAgYHByb2R1Y3Rpb25MYWJlbGAsIHNvIGl0IGFwcGVhcnMgb25seSB3aGVuIHRoZSBob3N0IGVuYWJsZXMgdGVzdCBtb2RlLlxuZXhwb3J0IGNvbnN0IFBMT1RfVFlQRV9ERVNDUklQVE9SUzogUGFydGlhbDxSZWNvcmQ8UGxvdFR5cGUsIFBsb3RUeXBlRGVzY3JpcHRvcj4+ID0ge1xuICAvLyDilIDilIAgRGVmYXVsdCDilIDilIBcbiAgW1Bsb3RUeXBlLklNQUdFXTogICAgICB7IHR5cGU6IFBsb3RUeXBlLklNQUdFLCAgICAgIGxhYmVsOiAnSW1hZ2UgKE9TRCknLCAgICAgICAgICAgcHJvZHVjdGlvbkxhYmVsOiAnSW1hZ2UnLCAgICAgIGljb246ICdwaSBwaS1pbWFnZScsICAgICAgICAgICAgICAgICAgICBkaW1lbnNpb25zOiAnMmQnLCBzb3VyY2U6ICdpbWFnZScgfSxcbiAgLy8g4pSA4pSAIFBsb3RseSDilIDilIBcbiAgW1Bsb3RUeXBlLkhFQVRNQVBdOiAgICB7IHR5cGU6IFBsb3RUeXBlLkhFQVRNQVAsICAgIGxhYmVsOiAnSGVhdG1hcCAoUGxvdGx5KScsICAgICAgcHJvZHVjdGlvbkxhYmVsOiAnSGVhdG1hcCcsICAgIGljb246ICdhc3NldHMvcGxvdHRpbmcvaGVhdG1hcC5zdmcnLCAgICBkaW1lbnNpb25zOiAnMmQnLCBzb3VyY2U6ICdpbWFnZScgfSxcbiAgW1Bsb3RUeXBlLkNPTlRPVVJdOiAgICB7IHR5cGU6IFBsb3RUeXBlLkNPTlRPVVIsICAgIGxhYmVsOiAnQ29udG91ciAoUGxvdGx5KScsICAgICAgcHJvZHVjdGlvbkxhYmVsOiAnQ29udG91cicsICAgIGljb246ICdhc3NldHMvcGxvdHRpbmcvY29udG91ci5zdmcnLCAgICBkaW1lbnNpb25zOiAnMmQnLCBzb3VyY2U6ICdpbWFnZScsIHJlcXVpcmVzR3JheXNjYWxlOiB0cnVlIH0sXG4gIFtQbG90VHlwZS5TQ0FUVEVSXTogICAgeyB0eXBlOiBQbG90VHlwZS5TQ0FUVEVSLCAgICBsYWJlbDogJ1NjYXR0ZXIgMkQgKFBsb3RseSknLCAgIGljb246ICdwaSBwaS1jaGFydC1zY2F0dGVyJywgICAgICAgICAgICBkaW1lbnNpb25zOiAnMmQnLCBzb3VyY2U6ICdyZWdpb25zJyB9LFxuICBbUGxvdFR5cGUuU1VSRkFDRV06ICAgIHsgdHlwZTogUGxvdFR5cGUuU1VSRkFDRSwgICAgbGFiZWw6ICdTdXJmYWNlIChQbG90bHkpJywgICAgICBpY29uOiAnYXNzZXRzL3Bsb3R0aW5nL3N1cmZhY2Uuc3ZnJywgICAgZGltZW5zaW9uczogJzNkJywgc291cmNlOiAnaW1hZ2UnLCByZXF1aXJlc0dyYXlzY2FsZTogdHJ1ZSB9LFxuICBbUGxvdFR5cGUuU0NBVFRFUjNEXTogIHsgdHlwZTogUGxvdFR5cGUuU0NBVFRFUjNELCAgbGFiZWw6ICdTY2F0dGVyIDNEIChQbG90bHkpJywgICBpY29uOiAnYXNzZXRzL3Bsb3R0aW5nLzNkLWNvb3JkaW5hdGVzLnN2ZycsIGRpbWVuc2lvbnM6ICczZCcsIHNvdXJjZTogJ2ltYWdlJywgcmVxdWlyZXNTdGFjazogdHJ1ZSwgcmVxdWlyZXNHcmF5c2NhbGU6IHRydWUgfSxcbiAgW1Bsb3RUeXBlLklTT1NVUkZBQ0VdOiB7IHR5cGU6IFBsb3RUeXBlLklTT1NVUkZBQ0UsIGxhYmVsOiAnSXNvc3VyZmFjZSAoUGxvdGx5KScsICAgaWNvbjogJ2Fzc2V0cy9wbG90dGluZy9pc29zdXJmYWNlLnN2ZycsIGRpbWVuc2lvbnM6ICczZCcsIHNvdXJjZTogJ2ltYWdlJywgcmVxdWlyZXNTdGFjazogdHJ1ZSwgcmVxdWlyZXNHcmF5c2NhbGU6IHRydWUgfSxcbiAgLy8g4pSA4pSAIG5hcGFyaS1qcyBXZWJHUFUgKGppdC11aSMxMDIpLiBUaGUgM0QgdHlwZXMgdGFrZSBhIHJ1bnRpbWUgZGVjaW1hdGUgZmFjdG9yLiDilIDilIBcbiAgW1Bsb3RUeXBlLk5BUEFSSV9JTUFHRV06ICAgICAgeyB0eXBlOiBQbG90VHlwZS5OQVBBUklfSU1BR0UsICAgICAgbGFiZWw6ICdJbWFnZSAobmFwYXJpIMK3IFdlYkdQVSknLCAgICAgIGljb246ICdwaSBwaS1pbWFnZScsICAgICAgICAgICAgICAgICAgICAgICAgZGltZW5zaW9uczogJzJkJywgc291cmNlOiAnaW1hZ2UnIH0sXG4gIFtQbG90VHlwZS5OQVBBUklfU0NBVFRFUl06ICAgIHsgdHlwZTogUGxvdFR5cGUuTkFQQVJJX1NDQVRURVIsICAgIGxhYmVsOiAnU2NhdHRlciAyRCAobmFwYXJpIMK3IFdlYkdQVSknLCBpY29uOiAncGkgcGktY2hhcnQtc2NhdHRlcicsICAgICAgICAgICAgICAgIGRpbWVuc2lvbnM6ICcyZCcsIHNvdXJjZTogJ3JlZ2lvbnMnIH0sXG4gIFtQbG90VHlwZS5OQVBBUklfU1VSRkFDRV06ICAgIHsgdHlwZTogUGxvdFR5cGUuTkFQQVJJX1NVUkZBQ0UsICAgIGxhYmVsOiAnU3VyZmFjZSAobmFwYXJpIMK3IFdlYkdQVSknLCAgICBwcm9kdWN0aW9uTGFiZWw6ICdTdXJmYWNlJywgICAgaWNvbjogJ2Fzc2V0cy9wbG90dGluZy9zdXJmYWNlLnN2ZycsICAgICAgICBkaW1lbnNpb25zOiAnM2QnLCBzb3VyY2U6ICdpbWFnZScgfSwgLy8gYSBoZWlnaHQtZmllbGQgaXMgej1pbnRlbnNpdHkgb2Ygb25lIHBsYW5lIOKAlCB3b3JrcyBmb3IgYW55IGdyYXlzY2FsZS9SR0IgaW1hZ2UgKFJHQuKGkmx1bWluYW5jZSksIG5vIHN0YWNrIG5lZWRlZFxuICBbUGxvdFR5cGUuTkFQQVJJX1NDQVRURVIzRF06ICB7IHR5cGU6IFBsb3RUeXBlLk5BUEFSSV9TQ0FUVEVSM0QsICBsYWJlbDogJ1NjYXR0ZXIgM0QgKG5hcGFyaSDCtyBXZWJHUFUpJywgaWNvbjogJ2Fzc2V0cy9wbG90dGluZy8zZC1jb29yZGluYXRlcy5zdmcnLCBkaW1lbnNpb25zOiAnM2QnLCBzb3VyY2U6ICdpbWFnZScsIHJlcXVpcmVzU3RhY2s6IHRydWUsIHJlcXVpcmVzR3JheXNjYWxlOiB0cnVlIH0sXG4gIFtQbG90VHlwZS5OQVBBUklfVk9MVU1FXTogICAgIHsgdHlwZTogUGxvdFR5cGUuTkFQQVJJX1ZPTFVNRSwgICAgIGxhYmVsOiAnVm9sdW1lIChuYXBhcmkgwrcgV2ViR1BVKScsICAgICBwcm9kdWN0aW9uTGFiZWw6ICdWb2x1bWUnLCAgICAgaWNvbjogJ2Fzc2V0cy9wbG90dGluZy9jdWJlLTNkLnN2ZycsICAgICAgICBkaW1lbnNpb25zOiAnM2QnLCBzb3VyY2U6ICdpbWFnZScsIHJlcXVpcmVzU3RhY2s6IHRydWUsIHJlcXVpcmVzR3JheXNjYWxlOiB0cnVlIH0sXG4gIFtQbG90VHlwZS5OQVBBUklfSVNPU1VSRkFDRV06IHsgdHlwZTogUGxvdFR5cGUuTkFQQVJJX0lTT1NVUkZBQ0UsIGxhYmVsOiAnSXNvc3VyZmFjZSAobmFwYXJpIMK3IFdlYkdQVSknLCBwcm9kdWN0aW9uTGFiZWw6ICdJc29zdXJmYWNlJywgaWNvbjogJ2Fzc2V0cy9wbG90dGluZy9pc29zdXJmYWNlLnN2ZycsICAgICBkaW1lbnNpb25zOiAnM2QnLCBzb3VyY2U6ICdpbWFnZScsIHJlcXVpcmVzU3RhY2s6IHRydWUsIHJlcXVpcmVzR3JheXNjYWxlOiB0cnVlIH0sXG4gIC8vIOKUgOKUgCBTcGF0aWFsIG9taWNzIOKUgOKUgFxuICBbUGxvdFR5cGUuU1BBVElBTF9PTUlDU106ICAgICB7IHR5cGU6IFBsb3RUeXBlLlNQQVRJQUxfT01JQ1MsICAgICBsYWJlbDogJ1NwYXRpYWwgb21pY3MgKG5hcGFyaSDCtyBXZWJHUFUpJywgcHJvZHVjdGlvbkxhYmVsOiAnU3BhdGlhbCBvbWljcycsIGljb246ICdhc3NldHMvcGxvdHRpbmcvc3BhdGlhbC1vbWljcy5zdmcnLCAgZGltZW5zaW9uczogJzJkJywgc291cmNlOiAnc3BhdGlhbCcsIHJlcXVpcmVzU3BhdGlhbERhdGE6IHRydWUgfSxcbiAgW1Bsb3RUeXBlLlNQQVRJQUxfT01JQ1NfM0RdOiAgeyB0eXBlOiBQbG90VHlwZS5TUEFUSUFMX09NSUNTXzNELCAgbGFiZWw6ICdTcGF0aWFsIG9taWNzIDNEIChuYXBhcmkgwrcgV2ViR1BVKScsIHByb2R1Y3Rpb25MYWJlbDogJ1NwYXRpYWwgb21pY3MgM0QnLCBpY29uOiAnYXNzZXRzL3Bsb3R0aW5nL3NwYXRpYWwtb21pY3MtM2Quc3ZnJywgZGltZW5zaW9uczogJzNkJywgc291cmNlOiAnc3BhdGlhbCcsIHJlcXVpcmVzU3BhdGlhbERhdGE6IHRydWUsIHJlcXVpcmVzU3BhdGlhbDNkOiB0cnVlIH0sXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGxvdFR5cGVEZXNjcmlwdG9yKHR5cGU6IFBsb3RUeXBlKTogUGxvdFR5cGVEZXNjcmlwdG9yIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIFBMT1RfVFlQRV9ERVNDUklQVE9SU1t0eXBlXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVGhyZWVEaW1lbnNpb25hbCh0eXBlOiBQbG90VHlwZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gUExPVF9UWVBFX0RFU0NSSVBUT1JTW3R5cGVdPy5kaW1lbnNpb25zID09PSAnM2QnO1xufVxuXG4vLyDilIDilIAgbmFwYXJpLWpzIDNEIHBsb3QtdHlwZSBwcmVkaWNhdGVzIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuLyoqIG5hcGFyaS1qcyB2b2x1bWUuICovXG5leHBvcnQgZnVuY3Rpb24gaXNOYXBhcmlWb2x1bWUodHlwZTogUGxvdFR5cGUpOiBib29sZWFuIHtcbiAgcmV0dXJuIHR5cGUgPT09IFBsb3RUeXBlLk5BUEFSSV9WT0xVTUU7XG59XG4vKiogbmFwYXJpLWpzIGlzb3N1cmZhY2UuICovXG5leHBvcnQgZnVuY3Rpb24gaXNOYXBhcmlJc29zdXJmYWNlKHR5cGU6IFBsb3RUeXBlKTogYm9vbGVhbiB7XG4gIHJldHVybiB0eXBlID09PSBQbG90VHlwZS5OQVBBUklfSVNPU1VSRkFDRTtcbn1cbi8qKiBuYXBhcmktanMgaGVpZ2h0LWZpZWxkIHN1cmZhY2UgbWVzaC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc05hcGFyaVN1cmZhY2UodHlwZTogUGxvdFR5cGUpOiBib29sZWFuIHtcbiAgcmV0dXJuIHR5cGUgPT09IFBsb3RUeXBlLk5BUEFSSV9TVVJGQUNFO1xufVxuLyoqIG5hcGFyaS1qcyAyRCBzY2F0dGVyIChyZWdpb24gY2VudHJvaWRzKS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc05hcGFyaVNjYXR0ZXIodHlwZTogUGxvdFR5cGUpOiBib29sZWFuIHtcbiAgcmV0dXJuIHR5cGUgPT09IFBsb3RUeXBlLk5BUEFSSV9TQ0FUVEVSO1xufVxuLyoqIG5hcGFyaS1qcyAzRCBzY2F0dGVyICh2b3hlbCBwb2ludCBjbG91ZCkuICovXG5leHBvcnQgZnVuY3Rpb24gaXNOYXBhcmlTY2F0dGVyM2QodHlwZTogUGxvdFR5cGUpOiBib29sZWFuIHtcbiAgcmV0dXJuIHR5cGUgPT09IFBsb3RUeXBlLk5BUEFSSV9TQ0FUVEVSM0Q7XG59XG4vKiogU3BhdGlhbC1vbWljcyBvYnNlcnZhdGlvbnMgb3ZlciB0aGUgdGlzc3VlIGltYWdlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzU3BhdGlhbE9taWNzKHR5cGU6IFBsb3RUeXBlKTogYm9vbGVhbiB7XG4gIHJldHVybiB0eXBlID09PSBQbG90VHlwZS5TUEFUSUFMX09NSUNTO1xufVxuLyoqIFNwYXRpYWwtb21pY3Mgb2JzZXJ2YXRpb25zIGFzIGEgM0QgcG9pbnQgY2xvdWQuICovXG5leHBvcnQgZnVuY3Rpb24gaXNTcGF0aWFsT21pY3MzZCh0eXBlOiBQbG90VHlwZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gdHlwZSA9PT0gUGxvdFR5cGUuU1BBVElBTF9PTUlDU18zRDtcbn1cbi8qKlxuICogV2hldGhlciB0aGUgcmVuZGVyZXIsIHJhdGhlciB0aGFuIHRoZSBzaGVsbCwgc2hvdWxkIGhhbmRsZSB3aGVlbCB6b29tLlxuICpcbiAqIFRoZSBzaGVsbCdzIHdoZWVsIGxpc3RlbmVyIGFwcGxpZXMgYSBGSVhFRCBzdGVwIHBlciBldmVudCwgd2hpY2ggaXMgZmFyIHRvbyBzZW5zaXRpdmUgZm9yIGFcbiAqIHJlbmRlcmVyIHRoYXQgcmVhZHMgdGhlIHNjcm9sbCBkZWx0YTogaXQgd29ya3Mgb3V0IGF0IDMwJSBwZXIgZXZlbnQgYWdhaW5zdCBuYXBhcmktanMncyAzJSwgYW5kXG4gKiBpZ25vcmVzIHRoZSBkZXZpY2Ugbm9ybWFsaXphdGlvbiBhbmQgZWFzaW5nIHRoZSByZW5kZXJlciBkb2VzLiBTbyBldmVyeSBwbG90IHR5cGUgZHJhd24gYnkgYVxuICogcmVuZGVyZXIgdGhhdCBvd25zIHRoZSB3aGVlbCBoYXMgdG8gb3B0IG91dCBoZXJlLlxuICpcbiAqIFRoZSBpbWFnZSB2aWV3IGFsd2F5cyBkaWQuIFRoZSBzcGF0aWFsLW9taWNzIG1vZGVzIGRpZCBOT1QsIGRlc3BpdGUgYmVpbmcgZHJhd24gYnkgdGhlIHNhbWVcbiAqIG5hcGFyaS1qcyB2aWV3ZXIg4oCUIHRoZSBzaGVsbCBnYXRlZCBvbiBhbiBgaXNIZWF0bWFwYCBmbGFnIHRoYXQgZGVmYXVsdHMgdG8gdHJ1ZSBhbmQgb25seSBnb2VzXG4gKiBmYWxzZSBmb3IgdGhlIDNEIFBsb3RseSBzY2VuZXMsIHNvIGl0IHNpbGVudGx5IHRvb2sgdGhlIHdoZWVsIGZvciB0aGVtIHRvby5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlcmVyT3duc1doZWVsKHR5cGU6IFBsb3RUeXBlKTogYm9vbGVhbiB7XG4gIHJldHVybiB0eXBlID09PSBQbG90VHlwZS5JTUFHRSB8fCBpc1NwYXRpYWxPbWljcyh0eXBlKSB8fCBpc1NwYXRpYWxPbWljczNkKHR5cGUpO1xufVxuXG4vKiogQW55IG5hcGFyaS1qcyAzRCBwbG90IHR5cGUgKHZvbHVtZSwgaXNvc3VyZmFjZSwgc3VyZmFjZSwgb3IgM0Qgc2NhdHRlcikuIFJlc29sdXRpb24gaXMgYSBydW50aW1lXG4gKiAgZGVjaW1hdGUgZmFjdG9yIChGdWxsIC8gwr0gLyDCvCAvIOKFmykg4oCUIHNlZSB0aGUgc2VydmljZSdzIGByZXNvbHV0aW9uU2NhbGVgLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTmFwYXJpM2QodHlwZTogUGxvdFR5cGUpOiBib29sZWFuIHtcbiAgcmV0dXJuIChcbiAgICBpc05hcGFyaVZvbHVtZSh0eXBlKSB8fCBpc05hcGFyaUlzb3N1cmZhY2UodHlwZSkgfHwgaXNOYXBhcmlTdXJmYWNlKHR5cGUpIHx8IGlzTmFwYXJpU2NhdHRlcjNkKHR5cGUpXG4gICk7XG59XG5cbi8qKiBEZWNpbWF0ZSBmYWN0b3JzIG9mZmVyZWQgYnkgdGhlIFJlc29sdXRpb24gY29udHJvbCAoMSA9IEZ1bGwg4oCmIDggPSDihZspLiAqL1xuZXhwb3J0IGNvbnN0IE5BUEFSSV9ERUNJTUFURV9PUFRJT05TOiB7IGxhYmVsOiBzdHJpbmc7IHZhbHVlOiBudW1iZXIgfVtdID0gW1xuICB7IGxhYmVsOiAnRnVsbCcsIHZhbHVlOiAxIH0sXG4gIHsgbGFiZWw6ICfCvScsIHZhbHVlOiAyIH0sXG4gIHsgbGFiZWw6ICfCvCcsIHZhbHVlOiA0IH0sXG4gIHsgbGFiZWw6ICfihZsnLCB2YWx1ZTogOCB9LFxuXTtcblxuLyoqIERlZmF1bHQgZGVjaW1hdGUgZmFjdG9yOiDCvC4gVGhlIGNhcHMgYXJlIHNldCBzbyDCvCBpcyBhIHNlbnNpYmxlIGRlZmF1bHQgcmVzb2x1dGlvbiB3aGlsZSDCvSBhbmRcbiAqICBGdWxsIG9mZmVyIDLDlyBhbmQgNMOXIHRoZSBkZXRhaWwgZm9yIG9wdC1pbiBoaWdoLXJlc29sdXRpb24gcmVuZGVycy4gKi9cbmV4cG9ydCBjb25zdCBOQVBBUklfREVGQVVMVF9ERUNJTUFURSA9IDQ7XG4iXX0=
|
|
@@ -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
|