@jax-data-science/sci-image-visualizer 0.3.3 → 0.4.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 +208 -4
- package/esm2022/index.mjs +20 -1
- package/esm2022/lib/contracts/display-types.mjs +20 -2
- package/esm2022/lib/contracts/image.contract.mjs +1 -1
- package/esm2022/lib/contracts/plot-type.mjs +36 -1
- package/esm2022/lib/contracts/ports/spatial-data.port.mjs +3 -0
- package/esm2022/lib/contracts/spatial-dataset.contract.mjs +45 -0
- package/esm2022/lib/contracts/visualizer.contract.mjs +1 -1
- package/esm2022/lib/implementations/napari-js/napari-axes-labels.mjs +10 -19
- package/esm2022/lib/implementations/napari-js/napari-region-overlay.mjs +71 -7
- package/esm2022/lib/implementations/napari-js/napari-scale-bar.mjs +1 -1
- package/esm2022/lib/implementations/napari-js/napari-spatial-tooltip.mjs +96 -0
- package/esm2022/lib/implementations/napari-js/napari-visualizer.service.mjs +1934 -55
- package/esm2022/lib/implementations/napari-js/napari-zoom.mjs +18 -0
- package/esm2022/lib/implementations/osd/openseadragon-visualizer.service.mjs +5 -3
- package/esm2022/lib/implementations/osd/osd-region-overlay.mjs +3 -4
- package/esm2022/lib/implementations/osd/osd-zoom.mjs +20 -0
- package/esm2022/lib/implementations/plotly/omics-trace-builders.mjs +555 -0
- package/esm2022/lib/implementations/plotly/plotly.service.mjs +13 -7
- package/esm2022/lib/implementations/spatial-data-http/spatial-data-http.service.mjs +304 -0
- package/esm2022/lib/implementations/spatial-data-http/spatial-wire.mjs +179 -0
- package/esm2022/lib/routing-visualizer.service.mjs +223 -12
- package/esm2022/lib/spatial/embedding-compute.mjs +142 -0
- package/esm2022/lib/spatial/gene-search.mjs +77 -0
- package/esm2022/lib/spatial/spatial-density.mjs +224 -0
- package/esm2022/lib/spatial/spatial-encoding.mjs +232 -0
- package/esm2022/lib/spatial/spatial-expression.mjs +257 -0
- package/esm2022/lib/spatial/spatial-framing.mjs +60 -0
- package/esm2022/lib/spatial/spatial-heatmap.mjs +185 -0
- package/esm2022/lib/spatial/spatial-hover.mjs +79 -0
- package/esm2022/lib/spatial/spatial-sections.mjs +96 -0
- package/esm2022/lib/spatial/spatial-selection.mjs +264 -0
- package/esm2022/lib/spatial/spatial-volume-image.mjs +163 -0
- package/esm2022/lib/spatial/tsne-worker.mjs +10 -0
- package/esm2022/lib/spatial/world-grid.mjs +77 -0
- package/esm2022/lib/spatial-controls/spatial-charts/spatial-charts.component.mjs +1278 -0
- package/esm2022/lib/spatial-controls/spatial-controls.component.mjs +621 -0
- package/esm2022/lib/store/spatial-selection.service.mjs +47 -0
- package/esm2022/lib/store/visualizer-store.service.mjs +23 -1
- package/esm2022/lib/toolbar/toolbar.component.mjs +30 -7
- package/esm2022/lib/visualization.module.mjs +23 -5
- package/esm2022/lib/visualizer.component.mjs +283 -22
- package/fesm2022/{jax-data-science-sci-image-visualizer-onnx-sam-session-ci1q0xnJ.mjs → jax-data-science-sci-image-visualizer-onnx-sam-session-BwP-A11m.mjs} +6 -4
- package/fesm2022/{jax-data-science-sci-image-visualizer-onnx-sam-session-ci1q0xnJ.mjs.map → jax-data-science-sci-image-visualizer-onnx-sam-session-BwP-A11m.mjs.map} +1 -1
- package/fesm2022/jax-data-science-sci-image-visualizer-tsne-worker-B_nXDGf0.mjs +12 -0
- package/fesm2022/jax-data-science-sci-image-visualizer-tsne-worker-B_nXDGf0.mjs.map +1 -0
- package/fesm2022/jax-data-science-sci-image-visualizer.mjs +15769 -8316
- package/fesm2022/jax-data-science-sci-image-visualizer.mjs.map +1 -1
- package/fesm2022/tsne.worker.js +19091 -0
- package/index.d.ts +15 -0
- package/lib/contracts/display-types.d.ts +131 -0
- package/lib/contracts/image.contract.d.ts +7 -0
- package/lib/contracts/plot-type.d.ts +42 -2
- package/lib/contracts/ports/spatial-data.port.d.ts +90 -0
- package/lib/contracts/spatial-dataset.contract.d.ts +281 -0
- package/lib/contracts/visualizer.contract.d.ts +99 -1
- package/lib/implementations/napari-js/napari-axes-labels.d.ts +9 -7
- package/lib/implementations/napari-js/napari-region-overlay.d.ts +38 -4
- package/lib/implementations/napari-js/napari-scale-bar.d.ts +7 -3
- package/lib/implementations/napari-js/napari-spatial-tooltip.d.ts +32 -0
- package/lib/implementations/napari-js/napari-visualizer.service.d.ts +497 -16
- package/lib/implementations/napari-js/napari-zoom.d.ts +15 -0
- package/lib/implementations/osd/osd-zoom.d.ts +19 -0
- package/lib/implementations/plotly/omics-trace-builders.d.ts +193 -0
- package/lib/implementations/plotly/plotly.service.d.ts +9 -0
- package/lib/implementations/spatial-data-http/spatial-data-http.service.d.ts +123 -0
- package/lib/implementations/spatial-data-http/spatial-wire.d.ts +115 -0
- package/lib/routing-visualizer.service.d.ts +45 -6
- package/lib/spatial/embedding-compute.d.ts +73 -0
- package/lib/spatial/gene-search.d.ts +48 -0
- package/lib/spatial/spatial-density.d.ts +73 -0
- package/lib/spatial/spatial-encoding.d.ts +155 -0
- package/lib/spatial/spatial-expression.d.ts +144 -0
- package/lib/spatial/spatial-framing.d.ts +37 -0
- package/lib/spatial/spatial-heatmap.d.ts +111 -0
- package/lib/spatial/spatial-hover.d.ts +49 -0
- package/lib/spatial/spatial-sections.d.ts +59 -0
- package/lib/spatial/spatial-selection.d.ts +113 -0
- package/lib/spatial/spatial-volume-image.d.ts +67 -0
- package/lib/spatial/tsne-worker.d.ts +7 -0
- package/lib/spatial/world-grid.d.ts +58 -0
- package/lib/spatial-controls/spatial-charts/spatial-charts.component.d.ts +439 -0
- package/lib/spatial-controls/spatial-controls.component.d.ts +257 -0
- package/lib/store/spatial-selection.service.d.ts +27 -0
- package/lib/store/visualizer-store.service.d.ts +13 -0
- package/lib/toolbar/toolbar.component.d.ts +19 -3
- package/lib/visualization.module.d.ts +28 -24
- package/lib/visualizer.component.d.ts +73 -2
- package/package.json +6 -2
- package/src/lib/assets/spatial-omics-3d.svg +31 -0
- package/src/lib/assets/spatial-omics.svg +27 -0
package/README.md
CHANGED
|
@@ -83,7 +83,7 @@ full walkthrough (adapters, TIFF handling, the Angular-17 toolchain note).
|
|
|
83
83
|
one `IVisualizer` contract; the host picks per plot type via `RoutingVisualizerService`.
|
|
84
84
|
- **Plot types** — Image (OSD), Plotly (Heatmap, Contour, Scatter 2D, Surface 3D,
|
|
85
85
|
Scatter 3D, Isosurface), and napari · WebGPU (Image, Scatter 2D, Surface,
|
|
86
|
-
Scatter 3D, Volume, Isosurface).
|
|
86
|
+
Scatter 3D, Volume, Isosurface, **Spatial omics**, **Spatial omics 3D**).
|
|
87
87
|
- **Region / annotation tools** — selection, rectangle, polyline, freeform,
|
|
88
88
|
polygon + vertex editing, move, Bézier↔polygon, magic wand, brush, vertex eraser.
|
|
89
89
|
- **Channels & histogram** — brightness/contrast/gamma, per-channel display,
|
|
@@ -143,7 +143,8 @@ data as you zoom in:
|
|
|
143
143
|
### napari-js — WebGPU
|
|
144
144
|
GPU-accelerated renderings via [napari-js](https://www.npmjs.com/package/napari-js)
|
|
145
145
|
(WebGPU), selectable from the plot-type menu as the "napari · WebGPU" variants of
|
|
146
|
-
Image, Scatter 2D, Surface, Scatter 3D, **Volume**,
|
|
146
|
+
Image, Scatter 2D, Surface, Scatter 3D, **Volume**, **Isosurface**, and the two
|
|
147
|
+
spatial-omics modes ([below](#spatial-omics)). It
|
|
147
148
|
assembles the volume from the slice endpoints with a runtime **decimate factor**
|
|
148
149
|
(resolution slider, default ½), a surface **wireframe** toggle, a 3D **axes / scale
|
|
149
150
|
gizmo**, an in-view **Z-height drag handle** for the volume, **cancellable** loading,
|
|
@@ -151,8 +152,16 @@ and **multichannel volume** compositing (one additive tinted layer per channel).
|
|
|
151
152
|
Regions and display options stay in sync with the other backends via the shared
|
|
152
153
|
stores.
|
|
153
154
|
|
|
154
|
-
|
|
155
|
-
|
|
155
|
+
Volume and Isosurface take their voxels from the **image stack**, and only from
|
|
156
|
+
it — there is one voxel path, so a dataset reaches those modes by being a stack.
|
|
157
|
+
A stack that declares its slice spacing (`imageMeta[0].mppZ`, alongside
|
|
158
|
+
`mppX`/`mppY`) is rendered at its **true physical extent**, so 40 × 40 × 200 µm
|
|
159
|
+
voxels read as anatomy rather than as a cube-aspect brick, and the axis labels
|
|
160
|
+
read in real units on all three axes. Without it the world box is
|
|
161
|
+
resolution-invariant but shape-only, and Z is labelled in slices.
|
|
162
|
+
|
|
163
|
+
When a stack is open, a slice slider (Image view, and the 2D Spatial omics view)
|
|
164
|
+
or single-image/stack toggle (other views) navigates the z-dimension. A stack may be one server-tiled file
|
|
156
165
|
(internal z) or a set of self-contained per-slice URLs (`IImageInfo.tiled ===
|
|
157
166
|
false`) — the latter (e.g. a host-assembled folder of numbered files) fetches
|
|
158
167
|
`urls[z]` per slice on demand. For a per-slice stack the host can also supply a
|
|
@@ -164,6 +173,187 @@ A line-ROI tool draws coloured lines and plots intensity along each one in a liv
|
|
|
164
173
|
floating inset chart that re-samples at the current zoom. It works today but the
|
|
165
174
|
API/UX are still stabilizing (see [In progress / roadmap](#in-progress--roadmap)).
|
|
166
175
|
|
|
176
|
+
## Spatial omics
|
|
177
|
+
|
|
178
|
+
Contracts for **spatial-omics datasets**: N observations (Visium spots,
|
|
179
|
+
segmented cells) positioned in a tissue image's pixel space, each carrying
|
|
180
|
+
categorical and continuous annotations plus a lazily-fetched feature (gene)
|
|
181
|
+
matrix.
|
|
182
|
+
|
|
183
|
+
```ts
|
|
184
|
+
import {
|
|
185
|
+
SPATIAL_DATA_PORT, SpatialDataHttpService, SpatialDataset,
|
|
186
|
+
} from '@jax-data-science/sci-image-visualizer';
|
|
187
|
+
|
|
188
|
+
providers: [
|
|
189
|
+
SpatialDataHttpService,
|
|
190
|
+
{ provide: SPATIAL_DATA_PORT, useExisting: SpatialDataHttpService },
|
|
191
|
+
]
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
Like `TILE_ACCESS_PORT`, this is a **port**: the library consumes typed arrays
|
|
195
|
+
and never learns how the data is stored. `SpatialDataHttpService` is an optional
|
|
196
|
+
reference adapter for the format the bundled example server speaks; a host with
|
|
197
|
+
its own backend implements `SpatialDataPort` instead and imports neither.
|
|
198
|
+
|
|
199
|
+
Two properties the design turns on:
|
|
200
|
+
|
|
201
|
+
- **Metadata is eager, values are lazy.** A `SpatialDataset` holds coordinates
|
|
202
|
+
plus column and feature *descriptors*; vectors arrive one at a time, for the
|
|
203
|
+
one column or gene being displayed. A Visium table is ~31k genes wide — the
|
|
204
|
+
dense matrix is ~800 MB — so loading a dataset can never mean loading its
|
|
205
|
+
matrix.
|
|
206
|
+
- **Struct-of-arrays, not object-per-cell.** Datasets run 10³ (Visium) to 10⁶
|
|
207
|
+
(Xenium/CosMx) observations; two `Float32Array`s beat 500k `{x, y}` objects
|
|
208
|
+
and upload to the GPU without a copy.
|
|
209
|
+
|
|
210
|
+
Once a dataset is published, the spatial plot types appear in the selector (and
|
|
211
|
+
disappear when it is cleared — the same gating that hides Volume without a
|
|
212
|
+
z-stack):
|
|
213
|
+
|
|
214
|
+
- **Spatial omics** — one marker per observation over the tissue image the
|
|
215
|
+
coordinates live in, positioned through `imageRef`'s affine.
|
|
216
|
+
- **Spatial omics 3D** — gated additionally on the observations carrying a `z`
|
|
217
|
+
(`requiresSpatial3d`): the same observations as a point cloud under an orbit
|
|
218
|
+
camera, inside the dataset's reference volume if it has one.
|
|
219
|
+
|
|
220
|
+
**A dataset whose 3D data is one file gets an image made from it.** A registered
|
|
221
|
+
volume (`SpatialDataset.volume` + `SpatialDataPort.getVolume()`) is published *as*
|
|
222
|
+
a grayscale z-stack image — one plane per slice, opened mid-volume — so the whole
|
|
223
|
+
image surface applies to it: the toolbar slice slider, the contrast window,
|
|
224
|
+
colormaps, the region tools, the physical scale bar, and Volume / Isosurface
|
|
225
|
+
through the ordinary stack path. In the 2D mode the displayed plane then draws
|
|
226
|
+
**that plane's** observations over that plane's anatomy, in the volume's own pixel
|
|
227
|
+
grid, and a region drawn there selects that plane's cells rather than the whole
|
|
228
|
+
depth behind them.
|
|
229
|
+
|
|
230
|
+
**Cluster density volumes** *(3D mode, optional)* — a checkbox that raymarches
|
|
231
|
+
each cluster as a smooth density field beside the cloud, tinted with its legend
|
|
232
|
+
colour and blended additively. Serial sections hundreds of microns apart cannot be
|
|
233
|
+
read as an anatomical distribution from points alone: the eye will not integrate a
|
|
234
|
+
stack of discs into a shape, and every gap between sections reads as absence.
|
|
235
|
+
Individual cells are never interpolated — consecutive sections sample different
|
|
236
|
+
cells, so there is nothing to interpolate along — but a density *field* is an
|
|
237
|
+
estimate legitimately defined between the imaged planes, and it renders as a
|
|
238
|
+
translucent cloud so it cannot be mistaken for measurement. The kernel is
|
|
239
|
+
anisotropic (σ along z clears one section gap) and the field is coverage-normalised
|
|
240
|
+
along z, so unimaged planes do not read as empty tissue.
|
|
241
|
+
|
|
242
|
+
In **3D** the same `Gene map` checkbox draws one field per imaged section, at its
|
|
243
|
+
own depth, with the gaps between sections empty — the measured slides, stacked.
|
|
244
|
+
`One map section at a time` isolates a single sheet (its own control, separate from
|
|
245
|
+
the cloud's, so every combination stays reachable), and `Volume rendering
|
|
246
|
+
(interpolate along z)` smooths the sheets into a continuous volume. The last is a
|
|
247
|
+
different object and the panel labels it as one: the planes between sections then
|
|
248
|
+
carry an estimate smoothed from their neighbours' mean, nothing is drawn past the
|
|
249
|
+
outermost section, and the section restriction is ignored because a volume built
|
|
250
|
+
from one slide would smear it through the whole specimen. It is estimated on the
|
|
251
|
+
reference volume's lattice — coarsened in-plane but never along z, so one plane is
|
|
252
|
+
one section — and shares the 2D map's bandwidth, window and colormap.
|
|
253
|
+
|
|
254
|
+
**Show** *(3D mode)* — the reference volume, the observation cloud and the cluster
|
|
255
|
+
density volumes share one space, so any two of them hide each other; 374k points
|
|
256
|
+
drawn as a stack of discs hide the density volumes almost entirely. Each is
|
|
257
|
+
toggled independently, so every combination is reachable — the estimated fields
|
|
258
|
+
alone, the fields with the anatomy behind them, the anatomy on its own. These are
|
|
259
|
+
visibility only: the layers stay built, so a toggle never re-fetches the template
|
|
260
|
+
or re-rasterises a field, and none of them re-frames the orbit camera. (The
|
|
261
|
+
density checkbox is the exception and still gates construction, since building six
|
|
262
|
+
volumes is not free.) **Volume opacity** is the backdrop's own slider, separate
|
|
263
|
+
from the markers': reading the cloud or a density field *through* the anatomy
|
|
264
|
+
means turning the anatomy down, not the data over it. **One section at a time** restricts the cloud to a single
|
|
265
|
+
imaged section, which is how you check whether the estimated field follows the
|
|
266
|
+
cells that were actually measured. Sections are the distinct z of the
|
|
267
|
+
observations — every cell on a slide shares that slide's registered z, so no
|
|
268
|
+
section-label column is needed — and a dataset whose z is continuous rather than
|
|
269
|
+
sectioned is offered no section control instead of having one invented for it.
|
|
270
|
+
|
|
271
|
+
**Hover and click** — hovering an observation names it in a cursor tooltip: the
|
|
272
|
+
class for a categorical column, the value with its unit for a gene or numeric one,
|
|
273
|
+
and nothing at all when no colour source is set (there is no cluster to name).
|
|
274
|
+
Clicking a marker selects that whole class, the same selection the legend's rows
|
|
275
|
+
produce, and clicking it again clears. Because a click means "select" here,
|
|
276
|
+
napari's click-to-zoom is off in the spatial modes — the wheel, the zoom buttons
|
|
277
|
+
and the zoom-box tool still zoom. A gene cannot be clicked to select: no set of
|
|
278
|
+
cells "is" a value.
|
|
279
|
+
|
|
280
|
+
**Colormap** *(continuous colouring)* — the low→high gradient for a gene or a
|
|
281
|
+
numeric column, chosen from the library's own `COLORMAP_OPTIONS` with the same
|
|
282
|
+
swatch previews the image's colormap picker uses. It defaults to following the
|
|
283
|
+
image's colormap (with a Viridis fallback, since a grey measurement over grey
|
|
284
|
+
anatomy cannot be told apart from it), and clearing the picker returns to that.
|
|
285
|
+
One setting drives the markers, both gene maps and the panel's colour bar, so none
|
|
286
|
+
of them can disagree about what a colour means.
|
|
287
|
+
|
|
288
|
+
**Gene map** *(2D mode, optional, with a gene selected)* — a checkbox that draws
|
|
289
|
+
the selected gene's expression as a smooth field *beneath* the cells. Coloured
|
|
290
|
+
markers answer "which cells express this gene"; they do not answer "where is it
|
|
291
|
+
expressed", because the eye cannot integrate thousands of small dots into a
|
|
292
|
+
territory. The field is the kernel-weighted **mean per cell, not a sum** — a sum
|
|
293
|
+
would make a crowded region glow whatever its cells were doing — and smoothing the
|
|
294
|
+
numerator and denominator together spreads *where*, not *how much*. That
|
|
295
|
+
denominator is also what lets the layer say nothing: where no cell was measured the
|
|
296
|
+
mean is undefined rather than zero, so those pixels stay fully transparent instead
|
|
297
|
+
of taking the colormap's low end, and alpha ramps with local support so a thinly
|
|
298
|
+
sampled pixel reads as tentative. `Smoothing` sets the kernel σ; `Map opacity` is
|
|
299
|
+
the field's own opacity, separate from the markers' — turn the markers down to read
|
|
300
|
+
the field under them. On a volume-backed dataset the field is re-estimated per
|
|
301
|
+
plane from that plane's cells.
|
|
302
|
+
|
|
303
|
+
Colour it through `getSpatialControls()`:
|
|
304
|
+
|
|
305
|
+
```ts
|
|
306
|
+
const controls = viz.getSpatialControls(); // null unless a port is bound
|
|
307
|
+
controls?.colorByColumn('region'); // categorical -> the column's palette
|
|
308
|
+
controls?.colorByFeature('Ttr'); // gene -> colormap, log, percentile-clipped
|
|
309
|
+
controls?.setViewState({ pointScale: 2 });
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
The view state lives in the shared store, so the controls work before any
|
|
313
|
+
backend has mounted and survive a plot-type switch.
|
|
314
|
+
|
|
315
|
+
The [example server](examples/tile-server/README.md#spatial-omics-endpoints)
|
|
316
|
+
implements the endpoints, and `npm run make-spatial-demo` generates a synthetic
|
|
317
|
+
Visium-geometry dataset **and a matching tissue image** so the
|
|
318
|
+
[browser example](examples/browser-image/README.md#spatial-omics-demo) runs the
|
|
319
|
+
whole path with no download. A converter for real SpatialData Zarr stores ships
|
|
320
|
+
alongside it.
|
|
321
|
+
|
|
322
|
+
A **Spatial omics** controls panel (`<spatial-controls>`, opened from the
|
|
323
|
+
toolbar) drives all of this from the UI: a column dropdown, a gene search over
|
|
324
|
+
the feature panel, a legend for categorical colourings and a colour bar for
|
|
325
|
+
continuous ones, plus point-size, opacity, log-scale and outlier-clip controls.
|
|
326
|
+
Its legend swatches and colour bar are built with the same functions the
|
|
327
|
+
renderer uses, so the key cannot drift from the canvas.
|
|
328
|
+
|
|
329
|
+
**Selection** reuses the region tools you already have: draw a rectangle,
|
|
330
|
+
polygon, freehand shape, wand or brush region, then *Select from ROIs* selects
|
|
331
|
+
every observation inside their union and mutes the rest. Legend rows select
|
|
332
|
+
their category on click.
|
|
333
|
+
|
|
334
|
+
**Linked distributions** sit in the same panel, below the colour controls, over
|
|
335
|
+
whatever the map is coloured by: histogram, violin or box for a continuous column
|
|
336
|
+
or a gene, and per-category **counts** for a categorical one — a histogram of a
|
|
337
|
+
category code would be meaningless, but "how many cells per class" is the question
|
|
338
|
+
the legend implies and never answers. Violin and box are splittable by a
|
|
339
|
+
categorical column. One dialog on purpose — changing the gene
|
|
340
|
+
and watching the distribution move is a single action. They follow the selection: the histogram
|
|
341
|
+
overlays *Selected* on the full distribution, violin and box narrow to it. The
|
|
342
|
+
chart's subject is the map's colour source rather than an independent picker, so
|
|
343
|
+
the two cannot disagree about what is being shown.
|
|
344
|
+
|
|
345
|
+
Categorical colouring has one renderer-specific limit worth knowing: the 3D
|
|
346
|
+
points layer maps a per-point scalar through a 256-entry LUT, which keeps 96
|
|
347
|
+
blocks apart exactly — one of them reserved for a missing value, so **95
|
|
348
|
+
categories** fit — and above that the cloud draws flat and the panel says so.
|
|
349
|
+
The 2D markers (per-point RGBA) and the density volumes (a scalar field per
|
|
350
|
+
cluster) have no such limit — which is why the example server serves `subclass`
|
|
351
|
+
(338) even though the cloud cannot colour by it.
|
|
352
|
+
|
|
353
|
+
Still to build: hover tooltips, chart → map brushing, and a GPU layer for cell
|
|
354
|
+
boundary polygons (they are served, not yet drawn) — see
|
|
355
|
+
[docs/spatial-omics-plot-mode-design.md](docs/spatial-omics-plot-mode-design.md).
|
|
356
|
+
|
|
167
357
|
## Regions & annotation
|
|
168
358
|
|
|
169
359
|
Regions are stored in a shared **region store** and use a GeoJSON-friendly model
|
|
@@ -270,6 +460,16 @@ Work that is landed-but-unstable or planned (not yet available):
|
|
|
270
460
|
and browser-side SAM/cellpose segmentation) against sample images — so the
|
|
271
461
|
library can be evaluated and developed standalone, outside jit-ui. Tracked in
|
|
272
462
|
the library-extraction SOW ([docs/JIT_UI_visualization_library_SOW.docx](docs/JIT_UI_visualization_library_SOW.docx)).
|
|
463
|
+
- **Spatial-omics follow-ons** *(planned — the modes themselves shipped in
|
|
464
|
+
0.4.0, see [Spatial omics](#spatial-omics))* — hover tooltips over
|
|
465
|
+
observations, brushing a chart selection back onto the map, and a GPU shapes
|
|
466
|
+
layer for cell-boundary polygons (the example server serves them; nothing draws
|
|
467
|
+
them yet, since a DOM overlay will not hold 10⁴–10⁵ outlines). The GPU layer is
|
|
468
|
+
measured as feasible — generating the geometry in a compute pass is bit-exact
|
|
469
|
+
and ~16× faster than JS, and 10⁵–10⁶ outlines draw in single-digit
|
|
470
|
+
milliseconds; the constraint is napari-js's closed renderer, not WebGPU. See
|
|
471
|
+
[.planning/research/cell-boundary-polygons-webgpu.md](.planning/research/cell-boundary-polygons-webgpu.md)
|
|
472
|
+
and [docs/spatial-omics-plot-mode-design.md](docs/spatial-omics-plot-mode-design.md).
|
|
273
473
|
- **SAM 3 model** *(planned)* — a `variant: 'sam3'` decoder path + export tooling
|
|
274
474
|
(SAM 2/3 use a different mask I/O than the current SAM-v1 path). See
|
|
275
475
|
[docs/sam-segmentation-design.md](docs/sam-segmentation-design.md).
|
|
@@ -284,6 +484,10 @@ Design, architecture, and planning docs for the library:
|
|
|
284
484
|
- **[docs/sam-segmentation-design.md](docs/sam-segmentation-design.md)** — design of
|
|
285
485
|
the browser SAM segmentation: model choice, ONNX export/quantization recipe,
|
|
286
486
|
encoder/decoder I/O, the engine/session architecture, and the rollout phases.
|
|
487
|
+
- **[docs/spatial-omics-plot-mode-design.md](docs/spatial-omics-plot-mode-design.md)** —
|
|
488
|
+
design and phased plan for the spatial-omics plot mode: current-state audit,
|
|
489
|
+
what the CosMx / Spatial-Live / SpatialData references contribute, the data
|
|
490
|
+
plane, MoSCoW requirements, and the open questions still to settle.
|
|
287
491
|
- **Architecture diagrams**
|
|
288
492
|
- [docs/jit-ui-visualization-architecture.mmd](docs/jit-ui-visualization-architecture.mmd)
|
|
289
493
|
([PNG](docs/img/jit-ui-visualization-architecture.png) ·
|
package/esm2022/index.mjs
CHANGED
|
@@ -12,6 +12,8 @@ export * from './lib/contracts/ports/image-state.port';
|
|
|
12
12
|
export * from './lib/contracts/ports/tile-access.port';
|
|
13
13
|
export * from './lib/contracts/ports/region-io.port';
|
|
14
14
|
export * from './lib/contracts/ports/preferences.port';
|
|
15
|
+
export * from './lib/contracts/ports/spatial-data.port';
|
|
16
|
+
export * from './lib/contracts/spatial-dataset.contract';
|
|
15
17
|
export * from './lib/contracts/channel-histogram-api.contract';
|
|
16
18
|
export * from './lib/contracts/viz-config';
|
|
17
19
|
export * from './lib/contracts/image.contract';
|
|
@@ -24,6 +26,18 @@ export * from './lib/contracts/display-types';
|
|
|
24
26
|
export * from './lib/contracts/sam.contract';
|
|
25
27
|
export * from './lib/contracts/cell-segmenter.contract';
|
|
26
28
|
export { CellposeSegmenterService } from './lib/toolbar/segmentation/cellpose-segmenter.service';
|
|
29
|
+
// ── Spatial-omics data plane ─────────────────────────────────────────────
|
|
30
|
+
// The wire format the bundled example server speaks, plus a ready-made
|
|
31
|
+
// SpatialDataPort adapter for it. Both are OPTIONAL: a host with its own
|
|
32
|
+
// backend implements SpatialDataPort directly and imports neither.
|
|
33
|
+
export { SpatialDataHttpService, SupersededError } from './lib/implementations/spatial-data-http/spatial-data-http.service';
|
|
34
|
+
export { SPATIAL_WIRE_VERSION, isLittleEndian, assertManifestVersion, datasetFromManifest, decodeCoords, decodeRadius, decodeColumn, decodeFeatureVector, decodePolygons, } from './lib/implementations/spatial-data-http/spatial-wire';
|
|
35
|
+
// Backend-neutral encodings: columns/genes -> per-point colours and sizes.
|
|
36
|
+
export { encodeCategorical, encodeContinuous, resolveCategoryColors, contrastWindow, markerDiameters, toRgbaTuples, lutFor, DEFAULT_CATEGORICAL_PALETTE, DEFAULT_MUTED_OPACITY, MISSING_COLOR, } from './lib/spatial/spatial-encoding';
|
|
37
|
+
// Selection: which observations fall inside the drawn ROIs, and the shared store
|
|
38
|
+
// that holds the answer.
|
|
39
|
+
export { selectInRegions, selectByCategory, mutedFromSelection, pointInRing, emptySelection, countMask, maskToIndices, } from './lib/spatial/spatial-selection';
|
|
40
|
+
export { SpatialSelectionStore } from './lib/store/spatial-selection.service';
|
|
27
41
|
export * from './lib/contracts/instance-segmenter.contract';
|
|
28
42
|
export * from './lib/contracts/semantic-segmenter.contract';
|
|
29
43
|
// ── Generic client-side image utilities (shared with the host's pipeline) ──
|
|
@@ -52,4 +66,9 @@ export { VisualizerComponent } from './lib/visualizer.component';
|
|
|
52
66
|
export { RegionEditorComponent } from './lib/region-editor/region-editor.component';
|
|
53
67
|
export { HexColorPickerComponent } from './lib/hex-color-picker/hex-color-picker.component';
|
|
54
68
|
export { ChannelHistogramComponent } from './lib/channel-histogram/channel-histogram.component';
|
|
55
|
-
|
|
69
|
+
export { SpatialControlsComponent, } from './lib/spatial-controls/spatial-controls.component';
|
|
70
|
+
export { SpatialChartsComponent } from './lib/spatial-controls/spatial-charts/spatial-charts.component';
|
|
71
|
+
// Pure chart builders, exported so a host can render the same distributions
|
|
72
|
+
// wherever it likes (a report, a different charting surface).
|
|
73
|
+
export { buildOmicsTraces, omicsLayout, benefitsFromGrouping, } from './lib/implementations/plotly/omics-trace-builders';
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsNEVBQTRFO0FBQzVFLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLGdEQUFnRCxDQUFDO0FBQy9ELGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMseUNBQXlDLENBQUM7QUFDeEQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFFakcsNEVBQTRFO0FBQzVFLHVFQUF1RTtBQUN2RSx5RUFBeUU7QUFDekUsbUVBQW1FO0FBQ25FLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxlQUFlLEVBQUUsTUFBTSxtRUFBbUUsQ0FBQztBQUM1SCxPQUFPLEVBQ0wsb0JBQW9CLEVBQUUsY0FBYyxFQUFFLHFCQUFxQixFQUFFLG1CQUFtQixFQUNoRixZQUFZLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxtQkFBbUIsRUFBRSxjQUFjLEdBQzlFLE1BQU0sc0RBQXNELENBQUM7QUFJOUQsMkVBQTJFO0FBQzNFLE9BQU8sRUFDTCxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxxQkFBcUIsRUFBRSxjQUFjLEVBQzFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUNyQywyQkFBMkIsRUFBRSxxQkFBcUIsRUFBRSxhQUFhLEdBQ2xFLE1BQU0sZ0NBQWdDLENBQUM7QUFJeEMsaUZBQWlGO0FBQ2pGLHlCQUF5QjtBQUN6QixPQUFPLEVBQ0wsZUFBZSxFQUFFLGdCQUFnQixFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFDbEUsY0FBYyxFQUFFLFNBQVMsRUFBRSxhQUFhLEdBQ3pDLE1BQU0saUNBQWlDLENBQUM7QUFFekMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDOUUsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLDZDQUE2QyxDQUFDO0FBRTVELDhFQUE4RTtBQUM5RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDcEUsT0FBTyxFQUFFLFNBQVMsRUFBb0IsTUFBTSw2QkFBNkIsQ0FBQztBQUMxRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUVqRiw2RUFBNkU7QUFDN0UsT0FBTyxFQUNMLFVBQVUsRUFBRSxvQkFBb0IsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFDL0Usa0JBQWtCLEVBQUUsb0JBQW9CLEdBQ3pDLE1BQU0sK0NBQStDLENBQUM7QUFFdkQsOEVBQThFO0FBQzlFLE9BQU8sRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFFL0YsNEVBQTRFO0FBQzVFLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFcEQsNEVBQTRFO0FBQzVFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzVFLDZFQUE2RTtBQUM3RSxtRUFBbUU7QUFDbkUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFbkUsNkVBQTZFO0FBQzdFLDBFQUEwRTtBQUMxRSw4RUFBOEU7QUFDOUUsNkRBQTZEO0FBQzdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQzVGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQ2hHLE9BQU8sRUFDTCx3QkFBd0IsR0FDekIsTUFBTSxtREFBbUQsQ0FBQztBQUUzRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnRUFBZ0UsQ0FBQztBQUN4Ryw0RUFBNEU7QUFDNUUsOERBQThEO0FBQzlELE9BQU8sRUFDTCxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsb0JBQW9CLEdBQ3BELE1BQU0sbURBQW1ELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFB1YmxpYyBBUEkgb2YgdGhlIGpheC1pbWFnZS12aXN1YWxpemF0aW9uIGxpYnJhcnkuIEV4dGVybmFsIGNvbnN1bWVycyBpbXBvcnRcbiAqIE9OTFkgZnJvbSBoZXJlIChgQGpheC1kYXRhLXNjaWVuY2Uvc2NpLWltYWdlLXZpc3VhbGl6ZXJgKTsgZXZlcnl0aGluZyBlbHNlIHVuZGVyIGBsaWIvYCBpc1xuICogaW50ZXJuYWwuIFRoZSBzdXJmYWNlIGlzIGNvbnRyYWN0cyArIHRva2VucyArIG5ldXRyYWwgbW9kZWxzICsgdGhlIEFuZ3VsYXJcbiAqIG1vZHVsZSwgcGx1cyB0aGUgcm91dGluZyBzZXJ2aWNlIHRoZSBob3N0J3MgY29tcG9zaXRpb24gcm9vdCBiaW5kcyB0aGUgdG9rZW5zXG4gKiB0byAoYHVzZUV4aXN0aW5nYCkuXG4gKi9cblxuLy8g4pSA4pSAIENvbnRyYWN0cyAmIERJIHRva2VucyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyYWN0cy92aXN1YWxpemVyLmNvbnRyYWN0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyYWN0cy9yZWdpb24tZWRpdG9yLWFwaS5jb250cmFjdCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cmFjdHMvcG9ydHMvaW1hZ2Utc3RhdGUucG9ydCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cmFjdHMvcG9ydHMvdGlsZS1hY2Nlc3MucG9ydCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cmFjdHMvcG9ydHMvcmVnaW9uLWlvLnBvcnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJhY3RzL3BvcnRzL3ByZWZlcmVuY2VzLnBvcnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJhY3RzL3BvcnRzL3NwYXRpYWwtZGF0YS5wb3J0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyYWN0cy9zcGF0aWFsLWRhdGFzZXQuY29udHJhY3QnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJhY3RzL2NoYW5uZWwtaGlzdG9ncmFtLWFwaS5jb250cmFjdCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cmFjdHMvdml6LWNvbmZpZyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cmFjdHMvaW1hZ2UuY29udHJhY3QnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJhY3RzL3Bsb3QtdHlwZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cmFjdHMvdG9vbGJhci1jb25maWcnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJhY3RzL3Rvb2xiYXItdG9vbC5jb250cmFjdCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cmFjdHMvY2FwYWJpbGl0aWVzLmNvbnRyYWN0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyYWN0cy9yZWdpb24tb3ZlcmxheS5jb250cmFjdCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cmFjdHMvZGlzcGxheS10eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cmFjdHMvc2FtLmNvbnRyYWN0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyYWN0cy9jZWxsLXNlZ21lbnRlci5jb250cmFjdCc7XG5leHBvcnQgeyBDZWxscG9zZVNlZ21lbnRlclNlcnZpY2UgfSBmcm9tICcuL2xpYi90b29sYmFyL3NlZ21lbnRhdGlvbi9jZWxscG9zZS1zZWdtZW50ZXIuc2VydmljZSc7XG5cbi8vIOKUgOKUgCBTcGF0aWFsLW9taWNzIGRhdGEgcGxhbmUg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4vLyBUaGUgd2lyZSBmb3JtYXQgdGhlIGJ1bmRsZWQgZXhhbXBsZSBzZXJ2ZXIgc3BlYWtzLCBwbHVzIGEgcmVhZHktbWFkZVxuLy8gU3BhdGlhbERhdGFQb3J0IGFkYXB0ZXIgZm9yIGl0LiBCb3RoIGFyZSBPUFRJT05BTDogYSBob3N0IHdpdGggaXRzIG93blxuLy8gYmFja2VuZCBpbXBsZW1lbnRzIFNwYXRpYWxEYXRhUG9ydCBkaXJlY3RseSBhbmQgaW1wb3J0cyBuZWl0aGVyLlxuZXhwb3J0IHsgU3BhdGlhbERhdGFIdHRwU2VydmljZSwgU3VwZXJzZWRlZEVycm9yIH0gZnJvbSAnLi9saWIvaW1wbGVtZW50YXRpb25zL3NwYXRpYWwtZGF0YS1odHRwL3NwYXRpYWwtZGF0YS1odHRwLnNlcnZpY2UnO1xuZXhwb3J0IHtcbiAgU1BBVElBTF9XSVJFX1ZFUlNJT04sIGlzTGl0dGxlRW5kaWFuLCBhc3NlcnRNYW5pZmVzdFZlcnNpb24sIGRhdGFzZXRGcm9tTWFuaWZlc3QsXG4gIGRlY29kZUNvb3JkcywgZGVjb2RlUmFkaXVzLCBkZWNvZGVDb2x1bW4sIGRlY29kZUZlYXR1cmVWZWN0b3IsIGRlY29kZVBvbHlnb25zLFxufSBmcm9tICcuL2xpYi9pbXBsZW1lbnRhdGlvbnMvc3BhdGlhbC1kYXRhLWh0dHAvc3BhdGlhbC13aXJlJztcbmV4cG9ydCB0eXBlIHtcbiAgU3BhdGlhbE1hbmlmZXN0LCBTcGF0aWFsRGF0YXNldFN1bW1hcnksIFNwYXRpYWxSYWRpdXNTcGVjLFxufSBmcm9tICcuL2xpYi9pbXBsZW1lbnRhdGlvbnMvc3BhdGlhbC1kYXRhLWh0dHAvc3BhdGlhbC13aXJlJztcbi8vIEJhY2tlbmQtbmV1dHJhbCBlbmNvZGluZ3M6IGNvbHVtbnMvZ2VuZXMgLT4gcGVyLXBvaW50IGNvbG91cnMgYW5kIHNpemVzLlxuZXhwb3J0IHtcbiAgZW5jb2RlQ2F0ZWdvcmljYWwsIGVuY29kZUNvbnRpbnVvdXMsIHJlc29sdmVDYXRlZ29yeUNvbG9ycywgY29udHJhc3RXaW5kb3csXG4gIG1hcmtlckRpYW1ldGVycywgdG9SZ2JhVHVwbGVzLCBsdXRGb3IsXG4gIERFRkFVTFRfQ0FURUdPUklDQUxfUEFMRVRURSwgREVGQVVMVF9NVVRFRF9PUEFDSVRZLCBNSVNTSU5HX0NPTE9SLFxufSBmcm9tICcuL2xpYi9zcGF0aWFsL3NwYXRpYWwtZW5jb2RpbmcnO1xuZXhwb3J0IHR5cGUge1xuICBSR0JBLCBDYXRlZ29yaWNhbEVuY29kaW5nT3B0aW9ucywgQ29udGludW91c0VuY29kaW5nT3B0aW9ucyxcbn0gZnJvbSAnLi9saWIvc3BhdGlhbC9zcGF0aWFsLWVuY29kaW5nJztcbi8vIFNlbGVjdGlvbjogd2hpY2ggb2JzZXJ2YXRpb25zIGZhbGwgaW5zaWRlIHRoZSBkcmF3biBST0lzLCBhbmQgdGhlIHNoYXJlZCBzdG9yZVxuLy8gdGhhdCBob2xkcyB0aGUgYW5zd2VyLlxuZXhwb3J0IHtcbiAgc2VsZWN0SW5SZWdpb25zLCBzZWxlY3RCeUNhdGVnb3J5LCBtdXRlZEZyb21TZWxlY3Rpb24sIHBvaW50SW5SaW5nLFxuICBlbXB0eVNlbGVjdGlvbiwgY291bnRNYXNrLCBtYXNrVG9JbmRpY2VzLFxufSBmcm9tICcuL2xpYi9zcGF0aWFsL3NwYXRpYWwtc2VsZWN0aW9uJztcbmV4cG9ydCB0eXBlIHsgU3BhdGlhbFNlbGVjdGlvbk1hc2sgfSBmcm9tICcuL2xpYi9zcGF0aWFsL3NwYXRpYWwtc2VsZWN0aW9uJztcbmV4cG9ydCB7IFNwYXRpYWxTZWxlY3Rpb25TdG9yZSB9IGZyb20gJy4vbGliL3N0b3JlL3NwYXRpYWwtc2VsZWN0aW9uLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJhY3RzL2luc3RhbmNlLXNlZ21lbnRlci5jb250cmFjdCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cmFjdHMvc2VtYW50aWMtc2VnbWVudGVyLmNvbnRyYWN0JztcblxuLy8g4pSA4pSAIEdlbmVyaWMgY2xpZW50LXNpZGUgaW1hZ2UgdXRpbGl0aWVzIChzaGFyZWQgd2l0aCB0aGUgaG9zdCdzIHBpcGVsaW5lKSDilIDilIBcbmV4cG9ydCB7IFByb2Nlc3NpbmdJbWFnZSB9IGZyb20gJy4vbGliL3Byb2Nlc3NpbmcvcHJvY2Vzc2luZy1pbWFnZSc7XG5leHBvcnQgeyBjcm9wSW1hZ2UsIENyb3BJbWFnZU9wdGlvbnMgfSBmcm9tICcuL2xpYi9wcm9jZXNzaW5nL2ltYWdlLWNyb3AnO1xuZXhwb3J0IHsgSW1hZ2VDb252ZXJ0ZXJTZXJ2aWNlIH0gZnJvbSAnLi9saWIvcHJvY2Vzc2luZy9pbWFnZS1jb252ZXJ0ZXIuc2VydmljZSc7XG5cbi8vIOKUgOKUgCBTQU0gbW9kZWwgcmVnaXN0cnkgKGhvc3QgY29uZmlndXJlcyBob3N0ZWQgT05OWCBVUkxzIG9uY2UgYXZhaWxhYmxlKSDilIDilIBcbmV4cG9ydCB7XG4gIFNBTV9NT0RFTFMsIERFRkFVTFRfU0FNX01PREVMX0lELCBnZXRTYW1Nb2RlbCwgaXNTYW1Nb2RlbFJlYWR5LCBzZXRTYW1Nb2RlbFVybHMsXG4gIHNldERlZmF1bHRTYW1Nb2RlbCwgZ2V0RGVmYXVsdFNhbU1vZGVsSWQsXG59IGZyb20gJy4vbGliL3Rvb2xiYXIvc2VnbWVudGF0aW9uL3NhbS1tb2RlbC1yZWdpc3RyeSc7XG5cbi8vIOKUgOKUgCBvbm54cnVudGltZS13ZWIgV0FTTSBsb2NhdGlvbiAoaG9zdCBvdmVycmlkZXMgb25jZSwgYXQgYXBwIGluaXQpIOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuZXhwb3J0IHsgc2V0T3J0V2FzbUJhc2UsIGdldE9ydFdhc21CYXNlIH0gZnJvbSAnLi9saWIvdG9vbGJhci9zZWdtZW50YXRpb24vb3J0LXJ1bnRpbWUtY29uZmlnJztcblxuLy8g4pSA4pSAIE5ldXRyYWwgZGF0YSBtb2RlbHMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbHMvcmVnaW9uJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVscy9jbGFzcy1wcmVzZXQnO1xuZXhwb3J0IHsgU2hhcGVTZWxlY3Rpb24gfSBmcm9tICcuL2xpYi9tb2RlbHMvc2hhcGUnO1xuXG4vLyDilIDilIAgQW5ndWxhciBtb2R1bGUgKyBjb21wb3NpdGlvbi1yb290IHNlcnZpY2Ug4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5leHBvcnQgeyBWaXN1YWxpemF0aW9uTW9kdWxlIH0gZnJvbSAnLi9saWIvdmlzdWFsaXphdGlvbi5tb2R1bGUnO1xuZXhwb3J0IHsgUm91dGluZ1Zpc3VhbGl6ZXJTZXJ2aWNlIH0gZnJvbSAnLi9saWIvcm91dGluZy12aXN1YWxpemVyLnNlcnZpY2UnO1xuLy8gUHJvdmlkZXIgZmFjdG9yeSBmb3IgYW4gaXNvbGF0ZWQsIGNvbXBvbmVudC1zY29wZWQgdmlld2VyIGluc3RhbmNlIChlLmcuIGFcbi8vIG1vZGFsIHRoYXQgbXVzdCBub3Qgc2hhcmUgdGhlIG1haW4gdmlld2VyJ3MgcmVnaW9uL2ltYWdlIHN0YXRlKS5cbmV4cG9ydCB7IHByb3ZpZGVWaXN1YWxpemF0aW9uIH0gZnJvbSAnLi9saWIvcHJvdmlkZS12aXN1YWxpemF0aW9uJztcblxuLy8g4pSA4pSAIFB1YmxpYyBjb21wb25lbnRzIChleHBvcnRlZCBieSBWaXN1YWxpemF0aW9uTW9kdWxlKSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbi8vIG5nLXBhY2thZ3IgcmVxdWlyZXMgbW9kdWxlLWV4cG9ydGVkIGNvbXBvbmVudHMgdG8gYmUgcmVhY2hhYmxlIGZyb20gdGhlXG4vLyBlbnRyeSBwb2ludCBzbyBjb25zdW1lcnMgZ2V0IHRoZWlyIHR5cGVzOyB0aGVzZSBhcmUgdGhlIGVtYmVkZGFibGUgZWxlbWVudHNcbi8vIChgPHZpc3VhbGl6ZXI+YCwgYDxyZWdpb24tZWRpdG9yPmAsIGA8aGV4LWNvbG9yLXBpY2tlcj5gKS5cbmV4cG9ydCB7IFZpc3VhbGl6ZXJDb21wb25lbnQgfSBmcm9tICcuL2xpYi92aXN1YWxpemVyLmNvbXBvbmVudCc7XG5leHBvcnQgeyBSZWdpb25FZGl0b3JDb21wb25lbnQgfSBmcm9tICcuL2xpYi9yZWdpb24tZWRpdG9yL3JlZ2lvbi1lZGl0b3IuY29tcG9uZW50JztcbmV4cG9ydCB7IEhleENvbG9yUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi9saWIvaGV4LWNvbG9yLXBpY2tlci9oZXgtY29sb3ItcGlja2VyLmNvbXBvbmVudCc7XG5leHBvcnQgeyBDaGFubmVsSGlzdG9ncmFtQ29tcG9uZW50IH0gZnJvbSAnLi9saWIvY2hhbm5lbC1oaXN0b2dyYW0vY2hhbm5lbC1oaXN0b2dyYW0uY29tcG9uZW50JztcbmV4cG9ydCB7XG4gIFNwYXRpYWxDb250cm9sc0NvbXBvbmVudCxcbn0gZnJvbSAnLi9saWIvc3BhdGlhbC1jb250cm9scy9zcGF0aWFsLWNvbnRyb2xzLmNvbXBvbmVudCc7XG5leHBvcnQgdHlwZSB7IFNwYXRpYWxMZWdlbmRFbnRyeSB9IGZyb20gJy4vbGliL3NwYXRpYWwtY29udHJvbHMvc3BhdGlhbC1jb250cm9scy5jb21wb25lbnQnO1xuZXhwb3J0IHsgU3BhdGlhbENoYXJ0c0NvbXBvbmVudCB9IGZyb20gJy4vbGliL3NwYXRpYWwtY29udHJvbHMvc3BhdGlhbC1jaGFydHMvc3BhdGlhbC1jaGFydHMuY29tcG9uZW50Jztcbi8vIFB1cmUgY2hhcnQgYnVpbGRlcnMsIGV4cG9ydGVkIHNvIGEgaG9zdCBjYW4gcmVuZGVyIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbnNcbi8vIHdoZXJldmVyIGl0IGxpa2VzIChhIHJlcG9ydCwgYSBkaWZmZXJlbnQgY2hhcnRpbmcgc3VyZmFjZSkuXG5leHBvcnQge1xuICBidWlsZE9taWNzVHJhY2VzLCBvbWljc0xheW91dCwgYmVuZWZpdHNGcm9tR3JvdXBpbmcsXG59IGZyb20gJy4vbGliL2ltcGxlbWVudGF0aW9ucy9wbG90bHkvb21pY3MtdHJhY2UtYnVpbGRlcnMnO1xuZXhwb3J0IHR5cGUge1xuICBPbWljc0NoYXJ0S2luZCwgT21pY3NHcm91cGluZywgT21pY3NUcmFjZUlucHV0LFxufSBmcm9tICcuL2xpYi9pbXBsZW1lbnRhdGlvbnMvcGxvdGx5L29taWNzLXRyYWNlLWJ1aWxkZXJzJztcbiJdfQ==
|
|
@@ -4,5 +4,23 @@
|
|
|
4
4
|
* so existing hosts (which pass PrimeNG `TreeNode`s and plain option objects)
|
|
5
5
|
* keep compiling unchanged while consumers finally get named shapes.
|
|
6
6
|
*/
|
|
7
|
-
export {
|
|
8
|
-
|
|
7
|
+
export const DEFAULT_SPATIAL_VIEW = {
|
|
8
|
+
colorBy: null,
|
|
9
|
+
pointScale: 1,
|
|
10
|
+
opacity: 1,
|
|
11
|
+
logScale: false,
|
|
12
|
+
percentileClip: [0.01, 0.99],
|
|
13
|
+
continuousColormap: null,
|
|
14
|
+
showVolume: true,
|
|
15
|
+
volumeOpacity: 0.5,
|
|
16
|
+
showPoints: true,
|
|
17
|
+
pointSection: null,
|
|
18
|
+
densityVolume: false,
|
|
19
|
+
densitySmoothing: 1,
|
|
20
|
+
geneMap: false,
|
|
21
|
+
geneMapSection: null,
|
|
22
|
+
geneMapVolume: false,
|
|
23
|
+
geneMapSmoothing: 1,
|
|
24
|
+
geneMapOpacity: 0.85,
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzcGxheS10eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvY29udHJhY3RzL2Rpc3BsYXktdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUEyS0gsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQXFCO0lBQ3BELE9BQU8sRUFBRSxJQUFJO0lBQ2IsVUFBVSxFQUFFLENBQUM7SUFDYixPQUFPLEVBQUUsQ0FBQztJQUNWLFFBQVEsRUFBRSxLQUFLO0lBQ2YsY0FBYyxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQztJQUM1QixrQkFBa0IsRUFBRSxJQUFJO0lBQ3hCLFVBQVUsRUFBRSxJQUFJO0lBQ2hCLGFBQWEsRUFBRSxHQUFHO0lBQ2xCLFVBQVUsRUFBRSxJQUFJO0lBQ2hCLFlBQVksRUFBRSxJQUFJO0lBQ2xCLGFBQWEsRUFBRSxLQUFLO0lBQ3BCLGdCQUFnQixFQUFFLENBQUM7SUFDbkIsT0FBTyxFQUFFLEtBQUs7SUFDZCxjQUFjLEVBQUUsSUFBSTtJQUNwQixhQUFhLEVBQUUsS0FBSztJQUNwQixnQkFBZ0IsRUFBRSxDQUFDO0lBQ25CLGNBQWMsRUFBRSxJQUFJO0NBQ3JCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFB1YmxpY2F0aW9uLWNyaXRpY2FsIHR5cGVzIHRoYXQgd2VyZSBgYW55YCBvbiB0aGUgcHVibGljIGNvbnRyYWN0c1xuICogKHJlZmFjdG9yaW5nIHBsYW4sIFN0ZXAgNikuIERlbGliZXJhdGVseSBwZXJtaXNzaXZlIOKAlCBldmVyeSBmaWVsZCBvcHRpb25hbCDigJRcbiAqIHNvIGV4aXN0aW5nIGhvc3RzICh3aGljaCBwYXNzIFByaW1lTkcgYFRyZWVOb2RlYHMgYW5kIHBsYWluIG9wdGlvbiBvYmplY3RzKVxuICoga2VlcCBjb21waWxpbmcgdW5jaGFuZ2VkIHdoaWxlIGNvbnN1bWVycyBmaW5hbGx5IGdldCBuYW1lZCBzaGFwZXMuXG4gKi9cblxuLyoqIEEgY29sb3JtYXAgdmFsdWUgYXMgUGxvdGx5IHVuZGVyc3RhbmRzIGl0OiBhIGJ1aWx0LWluIHNjYWxlIG5hbWUgKGUuZy5cbiAqICAnVmlyaWRpcycpIG9yIGFuIGlubGluZSBhcnJheSBvZiBgW3N0b3AsIGNvbG9yXWAgcGFpcnMuICovXG5leHBvcnQgdHlwZSBDb2xvcm1hcFZhbHVlID0gc3RyaW5nIHwgQXJyYXk8W251bWJlciwgc3RyaW5nXT47XG5cbi8qKiBPbmUgbm9kZSBvZiB0aGUgY29sb3JtYXAgc2VsZWN0b3IgdHJlZSAoc3RydWN0dXJhbGx5IGNvbXBhdGlibGUgd2l0aCB0aGVcbiAqICBQcmltZU5HIGBUcmVlTm9kZWBzIHRoZSBob3N0IHBhc3Nlcyk6IGdyb3VwIG5vZGVzIGNhcnJ5IGBjaGlsZHJlbmAsIGxlYWZcbiAqICBub2RlcyBjYXJyeSB0aGUgc2NhbGUgaW4gYGRhdGEudmFsdWVgICgrIGEgcHJldmlldyBpbWFnZSBpbiBgZGF0YS5zcmNgKS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29sb3JtYXBOb2RlIHtcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIGRhdGE/OiB7IHZhbHVlPzogQ29sb3JtYXBWYWx1ZTsgc3JjPzogc3RyaW5nIH07XG4gIGNoaWxkcmVuPzogQ29sb3JtYXBOb2RlW107XG59XG5cbi8qKiBNYWdpYy13YW5kIHBpeGVsLWNvbXBhcmlzb24gc3BhY2UuICovXG5leHBvcnQgdHlwZSBXYW5kVHlwZSA9ICdHUkFZJyB8ICdSR0InIHwgJ0xBQl9ESVNUQU5DRSc7XG5cbi8qKiBPcHRpb25zIGZvciB0aGUgbWFnaWMtd2FuZCB0b29sIChRdVBhdGgtc3R5bGUpLiAqL1xuZXhwb3J0IGludGVyZmFjZSBJV2FuZE9wdGlvbnMge1xuICB0eXBlPzogV2FuZFR5cGU7XG4gIC8qKiBHYXVzc2lhbiBzaWdtYSBhcHBsaWVkIHRvIHRoZSBwYXRjaCBiZWZvcmUgdGhyZXNob2xkaW5nLiAqL1xuICBzaWdtYT86IG51bWJlcjtcbiAgLyoqIEhpZ2hlciA9IHN0cmljdGVyIChzbWFsbGVyIHNlbGVjdGlvbikgZm9yIEdSQVkvUkdCOyBoaWdoZXIgPSBsb29zZXIgZm9yXG4gICAqICBMQUJfRElTVEFOQ0Ug4oCUIG1hdGNoZXMgUXVQYXRoLiAqL1xuICBzZW5zaXRpdml0eT86IG51bWJlcjtcbiAgLyoqIFNxdWFyZSBwYXRjaCBzaXplIGluIHBpeGVscyAobXVzdCBiZSBvZGQpLiAqL1xuICBwYXRjaFNpemU/OiBudW1iZXI7XG4gIC8qKiBXaGVuIHRydWUsIHNraXAgYmx1ci90aHJlc2hvbGQgYW5kIGZsb29kLWZpbGwgYXQgZXhhY3QtbWF0Y2hcbiAgICogIChDbWQvQ3RybC1jbGljayBpbiBRdVBhdGgpLiAqL1xuICBzaW1wbGVNb2RlPzogYm9vbGVhbjtcbn1cblxuLyoqIE9wdGlvbnMgZm9yIHRoZSBicnVzaCByZWdpb24gdG9vbCAoUXVQYXRoLXN0eWxlKS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUJydXNoT3B0aW9ucyB7XG4gIC8qKiBCcnVzaCBkaWFtZXRlciBpbiBtYXRyaXggKGltYWdlKSBwaXhlbHMuICovXG4gIHNpemU/OiBudW1iZXI7XG59XG5cbi8qKiBXaGF0IGRyaXZlcyBwb2ludCBjb2xvdXIgaW4gdGhlIHNwYXRpYWwtb21pY3MgbW9kZTogYW4gYW5ub3RhdGlvbiBjb2x1bW5cbiAqICBmcm9tIHRoZSBkYXRhc2V0LCBvciBvbmUgZmVhdHVyZSAoZ2VuZSkgdmVjdG9yIGZldGNoZWQgb24gZGVtYW5kLiAqL1xuZXhwb3J0IGludGVyZmFjZSBTcGF0aWFsQ29sb3JCeSB7XG4gIGtpbmQ6ICdjb2x1bW4nIHwgJ2ZlYXR1cmUnO1xuICBuYW1lOiBzdHJpbmc7XG59XG5cbi8qKiBEaXNwbGF5IHN0YXRlIGZvciB0aGUgc3BhdGlhbC1vbWljcyBwbG90IG1vZGUuIExpdmVzIGluIGBWaXN1YWxpemVyU3RvcmVgXG4gKiAgYWxvbmdzaWRlIHRoZSBjb2xvcm1hcC9jaGFubmVsIHN0YXRlIHNvIHRoZSByZW5kZXJlciByZWFjdHMgdG8gZWRpdHMgdGhlXG4gKiAgc2FtZSB3YXkgaXQgZG9lcyBmb3IgYW4gaW1hZ2UuICovXG5leHBvcnQgaW50ZXJmYWNlIFNwYXRpYWxWaWV3U3RhdGUge1xuICAvKiogQ29sb3VyIHNvdXJjZTsgYG51bGxgIHJlbmRlcnMgZXZlcnkgb2JzZXJ2YXRpb24gaW4gb25lIG5ldXRyYWwgY29sb3VyXG4gICAqICAodXNlZnVsIG9uIGl0cyBvd24g4oCUIGl0IHNob3dzIHdoZXJlIHRoZSB0aXNzdWUgYWN0dWFsbHkgaXMpLiAqL1xuICBjb2xvckJ5OiBTcGF0aWFsQ29sb3JCeSB8IG51bGw7XG4gIC8qKiBNdWx0aXBsaWVyIG9uIHRoZSBkYXRhc2V0J3MgcGh5c2ljYWwgbWFya2VyIHNpemUuIDEgPSB0cnVlIHNpemUsIHdoaWNoIGZvclxuICAgKiAgYSA1NSDCtW0gVmlzaXVtIHNwb3QgaXMgY29ycmVjdCBidXQgY2FuIGJlIGludmlzaWJsZSB3aGVuIHpvb21lZCBvdXQuICovXG4gIHBvaW50U2NhbGU6IG51bWJlcjtcbiAgLyoqIEFscGhhIGZvciBwb2ludHMgdGhhdCBhcmUgbm90IG11dGVkLiAqL1xuICBvcGFjaXR5OiBudW1iZXI7XG4gIC8qKiBMb2ctc2NhbGUgY29udGludW91cyB2YWx1ZXMgYmVmb3JlIG1hcHBpbmcgdGhlbSBvbnRvIHRoZSBjb2xvcm1hcC4gU2VlZGVkXG4gICAqICBmcm9tIHRoZSBjb2x1bW4ncyBgbG9nU2NhbGVIaW50YCDigJQgY291bnQgZGF0YSBuZWVkcyBpdC4gKi9cbiAgbG9nU2NhbGU6IGJvb2xlYW47XG4gIC8qKiBQZXJjZW50aWxlIGNsaXAgZm9yIHRoZSBjb250cmFzdCB3aW5kb3cgYXMgYFtsbywgaGldYCBmcmFjdGlvbnMsIHNvIGFcbiAgICogIGhhbmRmdWwgb2Ygc2F0dXJhdGVkIG9ic2VydmF0aW9ucyBkb24ndCBmbGF0dGVuIHRoZSByZXN0LiAqL1xuICAgcGVyY2VudGlsZUNsaXA6IFtudW1iZXIsIG51bWJlcl07XG4gIC8qKlxuICAgKiBDb2xvcm1hcCBmb3IgQ09OVElOVU9VUyBzcGF0aWFsIGNvbG91cmluZyDigJQgYSBnZW5lLCBhIG51bWVyaWMgY29sdW1uIOKAlCBhcyBhXG4gICAqIHtAbGluayBDb2xvcm1hcFZhbHVlfSwgdGhlIHNhbWUgc2hhcGUgdGhlIGRpc3BsYXkgY29sb3JtYXAgY2FycmllczogYSBzY2FsZVxuICAgKiBOQU1FIGZvciB0aGUgYnVpbHQtaW5zLCBvciBhbiBpbmxpbmUgYFtzdG9wLCBjb2xvdXJdYCBhcnJheSBmb3IgdGhlIHJlc3QuXG4gICAqIE51bGwgZm9sbG93cyB0aGUgZGlzcGxheSBjb2xvcm1hcC5cbiAgICpcbiAgICogSXRzIG93biBzZXR0aW5nIGJlY2F1c2UgdGhlIGRpc3BsYXkgY29sb3JtYXAgYmVsb25ncyB0byB0aGUgdGlzc3VlIGltYWdlIGFuZFxuICAgKiBpcyB1c3VhbGx5IGEgZ3JleSByYW1wLCB3aGljaCBpcyB0aGUgd3JvbmcgdGhpbmcgdG8gcmVhZCBhIG1lYXN1cmVtZW50XG4gICAqIHRocm91Z2g6IGdyZXkgb3ZlciBncmV5IGNhbm5vdCBiZSB0b2xkIGFwYXJ0IGZyb20gdGhlIGFuYXRvbXkuIEZvbGxvd2luZyBpdFxuICAgKiAod2l0aCBhIFZpcmlkaXMgZmFsbGJhY2sgZm9yIGV4YWN0bHkgdGhhdCBjYXNlKSBpcyBhIHJlYXNvbmFibGUgZGVmYXVsdCBhbmQgYVxuICAgKiBwb29yIGNlaWxpbmcsIHNpbmNlIHdoaWNoIGdyYWRpZW50IHJlYWRzIGJlc3QgaXMgYSBqdWRnZW1lbnQgYWJvdXQgdGhlIGRhdGEuXG4gICAqXG4gICAqIE9uZSBzZXR0aW5nIGZvciB0aGUgbWFya2VycywgdGhlIDJEIGdlbmUgbWFwIGFuZCB0aGUgM0QgZ2VuZSBtYXAgdG9nZXRoZXIsIHNvXG4gICAqIHRoZSBmaWVsZCB1bmRlciB0aGUgY2VsbHMgYW5kIHRoZSBjZWxscyBvdmVyIGl0IGNhbm5vdCBkaXNhZ3JlZSBhYm91dCB3aGF0IGFcbiAgICogY29sb3VyIG1lYW5zIOKAlCBhbmQgdGhlIHBhbmVsJ3Mgb3duIGNvbG91ciBiYXIgaXMgYnVpbHQgZnJvbSBpdCB0b28uXG4gICAqL1xuICBjb250aW51b3VzQ29sb3JtYXA6IENvbG9ybWFwVmFsdWUgfCBudWxsO1xuICAvKipcbiAgICogV2hhdCB0aGUgM0Qgc2NlbmUgZHJhd3MuIFRoZSB0aHJlZSB0aGluZ3MgaW4gaXQg4oCUIHRoZSByZWZlcmVuY2Ugdm9sdW1lLCB0aGVcbiAgICogb2JzZXJ2YXRpb24gY2xvdWQgYW5kIHRoZSBjbHVzdGVyIGRlbnNpdHkgdm9sdW1lcyDigJQgb2NjdXB5IHRoZSBzYW1lIHNwYWNlLCBzb1xuICAgKiBhbnkgdHdvIG9mIHRoZW0gaGlkZSBlYWNoIG90aGVyIHRvIHNvbWUgZGVncmVlLiBUaGVzZSBhcmUgaW5kZXBlbmRlbnQgYmVjYXVzZVxuICAgKiB0aGUgdXNlZnVsIHZpZXdzIGFyZSB0aGUgY29tYmluYXRpb25zOiB0aGUgdm9sdW1lcyBhbG9uZSB0byByZWFkIGFuIGVzdGltYXRlZFxuICAgKiBkaXN0cmlidXRpb24sIG9uZSBzZWN0aW9uJ3MgY2VsbHMgb3ZlciB0aGVtIHRvIGNoZWNrIHRoYXQgZXN0aW1hdGUgYWdhaW5zdCB0aGVcbiAgICogbWVhc3VyZW1lbnQsIHRoZSBhbmF0b215IGFsb25lIHRvIGZpbmQgYSBsYW5kbWFyay5cbiAgICpcbiAgICogVmlzaWJpbGl0eSBvbmx5IOKAlCB0aGUgbGF5ZXJzIHN0YXkgYnVpbHQsIHNvIHRvZ2dsaW5nIG9uZSBiYWNrIG9uIGlzIGltbWVkaWF0ZVxuICAgKiBhbmQgZG9lcyBub3QgcmUtcnVuIGEgcmFzdGVyaXNhdGlvbi4ge0BsaW5rIGRlbnNpdHlWb2x1bWV9IGlzIHRoZSBleGNlcHRpb24gYW5kXG4gICAqIGdlbnVpbmVseSBnYXRlcyBjb25zdHJ1Y3Rpb24sIGJlY2F1c2UgYnVpbGRpbmcgc2l4IHZvbHVtZXMgaXMgbm90IGZyZWUuXG4gICAqL1xuICBzaG93Vm9sdW1lOiBib29sZWFuO1xuICAvKipcbiAgICogVGhlIHJlZmVyZW5jZSB2b2x1bWUncyBvcGFjaXR5LlxuICAgKlxuICAgKiBJdHMgb3duLCBub3Qge0BsaW5rIG9wYWNpdHl9ICh3aGljaCBiZWxvbmdzIHRvIHRoZSBtYXJrZXJzKTogdGhlIHZvbHVtZSBpcyBhXG4gICAqIEJBQ0tEUk9QLCBhbmQgcmVhZGluZyB0aGUgY2xvdWQgb3IgYSBkZW5zaXR5IGZpZWxkIHRocm91Z2ggaXQgbWVhbnMgdHVybmluZ1xuICAgKiB0aGUgYW5hdG9teSBkb3duIHdpdGhvdXQgdG91Y2hpbmcgdGhlIGRhdGEgZHJhd24gb3ZlciBpdC4gUmFuZ2VzIGxvd2VyIHRoYW5cbiAgICogdGhlIG1hcmtlcnMnIHNsaWRlciBmb3IgdGhlIHNhbWUgcmVhc29uIOKAlCBhIGZhaW50IGFuYXRvbWljYWwgaGludCBpcyBhIHVzZWZ1bFxuICAgKiBzZXR0aW5nIGZvciBhIGJhY2tkcm9wIGFuZCBhIHVzZWxlc3Mgb25lIGZvciB0aGUgbWVhc3VyZW1lbnQuXG4gICAqL1xuICB2b2x1bWVPcGFjaXR5OiBudW1iZXI7XG4gIC8qKiBEcmF3IHRoZSBvYnNlcnZhdGlvbiBjbG91ZCAoM0QpLiAqL1xuICBzaG93UG9pbnRzOiBib29sZWFuO1xuICAvKipcbiAgICogUmVzdHJpY3QgdGhlIGNsb3VkIHRvIE9ORSBpbWFnZWQgc2VjdGlvbiwgYnkgaW5kZXggaW50byB0aGUgZGF0YXNldCdzIHNhbXBsZWRcbiAgICogc2VjdGlvbnM7IG51bGwgZHJhd3MgZXZlcnkgc2VjdGlvbi5cbiAgICpcbiAgICogVGhlIHdob2xlIGNsb3VkIGlzIGEgc3RhY2sgb2YgZGlzY3MgdGhhdCBoaWRlcyB3aGF0ZXZlciBpcyBkcmF3biBiZXR3ZWVuIHRoZW0uXG4gICAqIE9uZSBzZWN0aW9uIGF0IGEgdGltZSBpcyB0aGUgdmlldyB0aGF0IGFuc3dlcnMgXCJkb2VzIHRoZSBlc3RpbWF0ZWQgZmllbGRcbiAgICogYWN0dWFsbHkgZm9sbG93IHRoZSBjZWxscyBJIG1lYXN1cmVkXCIg4oCUIGFuZCBpdCBpcyBvbmx5IG9mZmVyZWQgZm9yIGRhdGEgdGhhdFxuICAgKiByZWFsbHkgaXMgc2VjdGlvbmVkIChzZWUgYHNhbXBsZWRTZWN0aW9uc2ApLlxuICAgKi9cbiAgcG9pbnRTZWN0aW9uOiBudW1iZXIgfCBudWxsO1xuICAvKipcbiAgICogRHJhdyBlYWNoIGNsdXN0ZXIgYXMgYSB0cmFuc2x1Y2VudCBERU5TSVRZIHZvbHVtZSBhbG9uZ3NpZGUgdGhlIDNEIGNsb3VkLlxuICAgKlxuICAgKiBTZXJpYWwgc2VjdGlvbnMgaHVuZHJlZHMgb2YgbWljcm9ucyBhcGFydCBtYWtlIGEgY2xvdWQgaGFyZCB0byByZWFkIGFzIGFuXG4gICAqIGFuYXRvbWljYWwgZGlzdHJpYnV0aW9uIOKAlCB0aGUgZXllIGNhbm5vdCBpbnRlZ3JhdGUgZGlzY3MgaW50byBhIHNoYXBlLiBBXG4gICAqIGRlbnNpdHkgZmllbGQgY2FuIGJlIGVzdGltYXRlZCBiZXR3ZWVuIHRoZSBpbWFnZWQgcGxhbmVzIChhIGNvbnRpbnVvdXNcbiAgICogZXN0aW1hdGUsIHVubGlrZSBpbmRpdmlkdWFsIGNlbGxzLCB3aGljaCBoYXZlIG5vIGNvcnJlc3BvbmRlbmNlIHRvXG4gICAqIGludGVycG9sYXRlIGFsb25nKSBhbmQgcmVuZGVycyBhcyBhIGNsb3VkIHRoYXQgcmVhZHMgYXMgYW4gZXN0aW1hdGUuXG4gICAqL1xuICBkZW5zaXR5Vm9sdW1lOiBib29sZWFuO1xuICAvKiogTXVsdGlwbGllciBvbiB0aGUgZGVmYXVsdCBrZXJuZWwgYmFuZHdpZHRoLiBBYm92ZSAxIGlzIHNtb290aGVyIGFuZCBsZXNzXG4gICAqICBjb21taXR0YWw7IGJlbG93IDEgZXhwb3NlcyB0aGUgaW5kaXZpZHVhbCBzZWN0aW9ucy4gKi9cbiAgZGVuc2l0eVNtb290aGluZzogbnVtYmVyO1xuICAvKipcbiAgICogRHJhdyB0aGUgYWN0aXZlIEdFTkUgYXMgYSBjb250aW51b3VzIGZpZWxkIHVuZGVyIHRoZSBvYnNlcnZhdGlvbnMgKDJEKS5cbiAgICpcbiAgICogQ29sb3VyaW5nIHRoZSBtYXJrZXJzIGJ5IGEgZ2VuZSBzYXlzIHdoaWNoIGNlbGxzIGV4cHJlc3MgaXQ7IGl0IGNhbm5vdCBzYXlcbiAgICogd2hlcmUsIGJlY2F1c2UgdGhlIGV5ZSB3aWxsIG5vdCBpbnRlZ3JhdGUgdGhvdXNhbmRzIG9mIGRvdHMgaW50byBhIHRlcnJpdG9yeS5cbiAgICogVGhlIGZpZWxkIGlzIGFuIGVzdGltYXRlIOKAlCBhIGtlcm5lbC13ZWlnaHRlZCBtZWFuIHBlciBjZWxsLCB0cmFuc3BhcmVudCB3aGVyZVxuICAgKiBubyBjZWxsIHdhcyBtZWFzdXJlZCDigJQgYW5kIGl0IGlzIGRyYXduIGJlbmVhdGggdGhlIGNlbGxzLCBub3QgaW5zdGVhZCBvZiB0aGVtLFxuICAgKiBzbyB0aGUgbWVhc3VyZW1lbnQgc3RheXMgb24gc2NyZWVuIG5leHQgdG8gdGhlIGludGVycG9sYXRpb24uXG4gICAqXG4gICAqIElnbm9yZWQgdW5sZXNzIHRoZSBjb2xvdXIgc291cmNlIGlzIGEgZ2VuZTogdGhlcmUgaXMgbm90aGluZyBlbHNlIHRvIG1hcC5cbiAgICovXG4gIGdlbmVNYXA6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBSZXN0cmljdCB0aGUgM0QgZ2VuZSBtYXAgdG8gT05FIGltYWdlZCBzZWN0aW9uLCBieSBpbmRleCBpbnRvIHRoZSBkYXRhc2V0J3NcbiAgICogc2FtcGxlZCBzZWN0aW9uczsgbnVsbCBkcmF3cyBldmVyeSBzZWN0aW9uJ3Mgc2hlZXQuXG4gICAqXG4gICAqIFNlcGFyYXRlIGZyb20ge0BsaW5rIHBvaW50U2VjdGlvbn0gc28gdGhlIGNvbWJpbmF0aW9ucyBzdGF5IG9wZW46IGFsbCB0aGVcbiAgICogc2hlZXRzIHdpdGggb25lIHNlY3Rpb24ncyBjZWxscyBvdmVyIHRoZW0gaXMgYSB1c2VmdWwgdmlldywgYW5kIHNvIGlzIG9uZVxuICAgKiBzaGVldCBpbnNpZGUgdGhlIHdob2xlIGNsb3VkLiBJZ25vcmVkIHdoaWxlIHtAbGluayBnZW5lTWFwVm9sdW1lfSBpcyBzZXQg4oCUXG4gICAqIGludGVycG9sYXRpbmcgYSBzaW5nbGUgc2VjdGlvbiBhbG9uZyB6IHdvdWxkIHNtZWFyIG9uZSBzbGlkZSB0aHJvdWdoIHRoZVxuICAgKiBzcGVjaW1lbidzIHdob2xlIGRlcHRoIGFuZCBjYWxsIGl0IGFuIGVzdGltYXRlLlxuICAgKi9cbiAgZ2VuZU1hcFNlY3Rpb246IG51bWJlciB8IG51bGw7XG4gIC8qKlxuICAgKiBTbW9vdGggdGhlIHBlci1zZWN0aW9uIGdlbmUgbWFwcyBhbG9uZyB6IGludG8gYSBjb250aW51b3VzIFZPTFVNRSAoM0QpLlxuICAgKlxuICAgKiBUaGUgc2hlZXRzIGFyZSB3aGF0IHdhcyBtZWFzdXJlZCDigJQgb25lIGZpZWxkIHBlciBpbWFnZWQgc2xpZGUsIHdpdGggdGhlIGdhcHNcbiAgICogYmV0d2VlbiB0aGVtIGVtcHR5LiBUaGlzIHR1cm5zIHRoZW0gaW50byBhbiBlc3RpbWF0ZSBkZWZpbmVkIGJldHdlZW4gdGhlXG4gICAqIHNsaWRlcywgdGhlIHNhbWUgbW92ZSB0aGUgY2x1c3RlciBkZW5zaXR5IHZvbHVtZXMgbWFrZSBhbmQgd2l0aCB0aGUgc2FtZVxuICAgKiBjYXZlYXQ6IGEgZmllbGQgbWF5IGJlIGludGVycG9sYXRlZCBiZXR3ZWVuIHNlY3Rpb25zLCBpbmRpdmlkdWFsIGNlbGxzIG1heVxuICAgKiBub3QsIGFuZCB0aGUgcmVzdWx0IGlzIGRyYXduIGFzIGEgdHJhbnNsdWNlbnQgY2xvdWQgc28gaXQgY2Fubm90IGJlIG1pc3Rha2VuXG4gICAqIGZvciBtZWFzdXJlbWVudC5cbiAgICovXG4gIGdlbmVNYXBWb2x1bWU6IGJvb2xlYW47XG4gIC8qKiBNdWx0aXBsaWVyIG9uIHRoZSBnZW5lIG1hcCdzIGtlcm5lbCBiYW5kd2lkdGguICovXG4gIGdlbmVNYXBTbW9vdGhpbmc6IG51bWJlcjtcbiAgLyoqIFRoZSBnZW5lIG1hcCdzIG93biBvcGFjaXR5LiBTZXBhcmF0ZSBmcm9tIHtAbGluayBvcGFjaXR5fSwgd2hpY2ggYmVsb25ncyB0b1xuICAgKiAgdGhlIG1hcmtlcnM6IHR1cm5pbmcgdGhlIGNlbGxzIGRvd24gdG8gcmVhZCB0aGUgZmllbGQgdW5kZXJuZWF0aCBtdXN0IG5vdFxuICAgKiAgdHVybiB0aGUgZmllbGQgZG93biB3aXRoIHRoZW0uICovXG4gIGdlbmVNYXBPcGFjaXR5OiBudW1iZXI7XG59XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX1NQQVRJQUxfVklFVzogU3BhdGlhbFZpZXdTdGF0ZSA9IHtcbiAgY29sb3JCeTogbnVsbCxcbiAgcG9pbnRTY2FsZTogMSxcbiAgb3BhY2l0eTogMSxcbiAgbG9nU2NhbGU6IGZhbHNlLFxuICBwZXJjZW50aWxlQ2xpcDogWzAuMDEsIDAuOTldLFxuICBjb250aW51b3VzQ29sb3JtYXA6IG51bGwsXG4gIHNob3dWb2x1bWU6IHRydWUsXG4gIHZvbHVtZU9wYWNpdHk6IDAuNSxcbiAgc2hvd1BvaW50czogdHJ1ZSxcbiAgcG9pbnRTZWN0aW9uOiBudWxsLFxuICBkZW5zaXR5Vm9sdW1lOiBmYWxzZSxcbiAgZGVuc2l0eVNtb290aGluZzogMSxcbiAgZ2VuZU1hcDogZmFsc2UsXG4gIGdlbmVNYXBTZWN0aW9uOiBudWxsLFxuICBnZW5lTWFwVm9sdW1lOiBmYWxzZSxcbiAgZ2VuZU1hcFNtb290aGluZzogMSxcbiAgZ2VuZU1hcE9wYWNpdHk6IDAuODUsXG59O1xuIl19
|
|
@@ -8,4 +8,4 @@
|
|
|
8
8
|
* structurally, so the host keeps passing its own instances unchanged.
|
|
9
9
|
*/
|
|
10
10
|
export {};
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UuY29udHJhY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2NvbnRyYWN0cy9pbWFnZS5jb250cmFjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTGlicmFyeS1vd25lZCBkYXRhIGludGVyZmFjZXMgZm9yIHRoZSBpbWFnZSB0aGUgdmlzdWFsaXphdGlvbiByZW5kZXJzLlxuICpcbiAqIFRoZSB2aXN1YWxpemF0aW9uIHBhY2thZ2UgbXVzdCBub3QgaW1wb3J0IHRoZSBob3N0IGFwcCdzIGNvbmNyZXRlIG1vZGVsc1xuICogKGBtYWluL21vZGVscy9maWxlLWluZm9gKSwgb3IgaXQgY2FuJ3QgYmVjb21lIGEgc3RhbmRhbG9uZSBsaWJyYXJ5LiBUaGVzZVxuICogc2xpbSBpbnRlcmZhY2VzIGRlY2xhcmUgb25seSB0aGUgZmllbGRzIHRoZSBsaWJyYXJ5IHJlYWRzL3dyaXRlczsgdGhlIGhvc3Qnc1xuICogYEltYWdlSW5mb2AvYEltYWdlTWV0YWRhdGFgIGNsYXNzZXMgYXJlIHB1cmUgZGF0YSBob2xkZXJzIHRoYXQgc2F0aXNmeSB0aGVtXG4gKiBzdHJ1Y3R1cmFsbHksIHNvIHRoZSBob3N0IGtlZXBzIHBhc3NpbmcgaXRzIG93biBpbnN0YW5jZXMgdW5jaGFuZ2VkLlxuICovXG5cbi8qKiBQZXItY2hhbm5lbCBtZXRhZGF0YSBmcm9tIHRoZSBzZXJ2ZXIgZGVzY3JpcHRvciAoaXNzdWUgIzc2KS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUNoYW5uZWxJbmZvIHtcbiAgbmFtZTogc3RyaW5nO1xuICAvKiogU3VnZ2VzdGVkIGRpc3BsYXkgdGludCBhcyBcIiNSUkdHQkJcIi4gKi9cbiAgY29sb3I6IHN0cmluZztcbiAgLyoqIEVtYmVkZGVkIDI1Ni1lbnRyeSBkaXNwbGF5IExVVCBhcyBcIiNSUkdHQkJcIiAoaW50ZW5zaXR54oaSY29sb3IpLCBvclxuICAgKiAgbnVsbC91bmRlZmluZWQgd2hlbiB0aGUgZmlsZSBoYXMgbm8gcGFsZXR0ZSBmb3IgdGhpcyBjaGFubmVsLiAqL1xuICBsdXQ/
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UuY29udHJhY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2NvbnRyYWN0cy9pbWFnZS5jb250cmFjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTGlicmFyeS1vd25lZCBkYXRhIGludGVyZmFjZXMgZm9yIHRoZSBpbWFnZSB0aGUgdmlzdWFsaXphdGlvbiByZW5kZXJzLlxuICpcbiAqIFRoZSB2aXN1YWxpemF0aW9uIHBhY2thZ2UgbXVzdCBub3QgaW1wb3J0IHRoZSBob3N0IGFwcCdzIGNvbmNyZXRlIG1vZGVsc1xuICogKGBtYWluL21vZGVscy9maWxlLWluZm9gKSwgb3IgaXQgY2FuJ3QgYmVjb21lIGEgc3RhbmRhbG9uZSBsaWJyYXJ5LiBUaGVzZVxuICogc2xpbSBpbnRlcmZhY2VzIGRlY2xhcmUgb25seSB0aGUgZmllbGRzIHRoZSBsaWJyYXJ5IHJlYWRzL3dyaXRlczsgdGhlIGhvc3Qnc1xuICogYEltYWdlSW5mb2AvYEltYWdlTWV0YWRhdGFgIGNsYXNzZXMgYXJlIHB1cmUgZGF0YSBob2xkZXJzIHRoYXQgc2F0aXNmeSB0aGVtXG4gKiBzdHJ1Y3R1cmFsbHksIHNvIHRoZSBob3N0IGtlZXBzIHBhc3NpbmcgaXRzIG93biBpbnN0YW5jZXMgdW5jaGFuZ2VkLlxuICovXG5cbi8qKiBQZXItY2hhbm5lbCBtZXRhZGF0YSBmcm9tIHRoZSBzZXJ2ZXIgZGVzY3JpcHRvciAoaXNzdWUgIzc2KS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUNoYW5uZWxJbmZvIHtcbiAgbmFtZTogc3RyaW5nO1xuICAvKiogU3VnZ2VzdGVkIGRpc3BsYXkgdGludCBhcyBcIiNSUkdHQkJcIi4gKi9cbiAgY29sb3I6IHN0cmluZztcbiAgLyoqIEVtYmVkZGVkIDI1Ni1lbnRyeSBkaXNwbGF5IExVVCBhcyBcIiNSUkdHQkJcIiAoaW50ZW5zaXR54oaSY29sb3IpLCBvclxuICAgKiAgbnVsbC91bmRlZmluZWQgd2hlbiB0aGUgZmlsZSBoYXMgbm8gcGFsZXR0ZSBmb3IgdGhpcyBjaGFubmVsLiAqL1xuICBsdXQ/OiBzdHJpbmdbXSB8IG51bGw7XG4gIGJpdERlcHRoPzogbnVtYmVyO1xuICAvKiogUGl4ZWwtdHlwZSBtaW5pbXVtIChlLmcuIDAgZm9yIHVuc2lnbmVkKS4gTmF0aXZlLXVuaXQgZmxvb3Igb2YgdGhlIHdpbmRvdy4gKi9cbiAgbWluQWxsb3dlZD86IG51bWJlcjtcbiAgLyoqIFBpeGVsLXR5cGUgbWF4aW11bSAoZS5nLiA2NTUzNSBmb3IgdW5zaWduZWQgMTYtYml0KS4gTmF0aXZlLXVuaXQgY2VpbGluZy4gKi9cbiAgbWF4QWxsb3dlZD86IG51bWJlcjtcbn1cblxuLyoqIFBlci1zZXJpZXMgaW1hZ2UgbWV0YWRhdGEgKHBoeXNpY2FsIHNpemUgKyBkaW1lbnNpb25zKS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUltYWdlTWV0YWRhdGEge1xuICBjaGFubmVsQ291bnQ6IG51bWJlcjtcbiAgcmdiQ2hhbm5lbHM6IG51bWJlcjtcbiAgeDogbnVtYmVyO1xuICB5OiBudW1iZXI7XG4gIHo6IG51bWJlcjtcbiAgLyoqIFBoeXNpY2FsIHBpeGVsIHNpemUgaW4gwrVtOyBudWxsL3VuZGVmaW5lZCB3aGVuIHRoZSBmb3JtYXQgcmVwb3J0cyBub25lLiAqL1xuICBtcHBYPzogbnVtYmVyIHwgbnVsbDtcbiAgbXBwWT86IG51bWJlciB8IG51bGw7XG4gIC8qKiBQaHlzaWNhbCBzcGFjaW5nIEJFVFdFRU4gc2xpY2VzIGluIMK1bSDigJQgdGhlIHogY291bnRlcnBhcnQgb2YgYG1wcFhgL2BtcHBZYCxcbiAgICogIGZvciBhIHN0YWNrIHRoYXQga25vd3MgaXQgKGEgcmVzYW1wbGVkIHZvbHVtZSwgYSBjb25mb2NhbCBzdGFjaykuIEl0IGlzIHdoYXRcbiAgICogIGxldHMgdGhlIDNEIHZvbHVtZSB2aWV3IHJlbmRlciB0cnVlIGFuaXNvdHJvcHk6IHdpdGggYWxsIHRocmVlIHByZXNlbnQgdGhlXG4gICAqICB3b3JsZCBib3ggaXMgdGhlIGltYWdlJ3MgcmVhbCBwaHlzaWNhbCBleHRlbnQsIHNvIDQwIHggNDAgeCAyMDAgwrVtIHZveGVsc1xuICAgKiAgcmVhZCBhcyBhIGJyYWluIGFuZCBub3QgYXMgYSBjdWJlLWFzcGVjdCBicmljay4gQWJzZW50LCB0aGUgdmlldyBmYWxscyBiYWNrXG4gICAqICB0byBpdHMgcmVzb2x1dGlvbi1pbnZhcmlhbnQgcmVmZXJlbmNlIGJveCwgd2hpY2ggaXMgc2hhcGUtb25seS4gKi9cbiAgbXBwWj86IG51bWJlciB8IG51bGw7XG4gIC8qKiBQZXItY2hhbm5lbCBuYW1lL2NvbG9yL0xVVCBmb3IgbXVsdGljaGFubmVsIChub24tUkdCKSBpbWFnZXMsIHdoZW4ga25vd24uICovXG4gIGNoYW5uZWxJbmZvPzogSUNoYW5uZWxJbmZvW10gfCBudWxsO1xufVxuXG4vKiogVGhlIGltYWdlIGN1cnJlbnRseSBiZWluZyB2aXN1YWxpemVkLiBGaWVsZCBvcHRpb25hbGl0eSBtaXJyb3JzIHRoZSBob3N0J3NcbiAqICBgSW1hZ2VJbmZvYCBzbyBpdHMgaW5zdGFuY2VzIGFyZSBhc3NpZ25hYmxlIHRvIHRoaXMgaW50ZXJmYWNlLiAqL1xuZXhwb3J0IGludGVyZmFjZSBJSW1hZ2VJbmZvIHtcbiAgaXNHcmF5c2NhbGU6IGJvb2xlYW47XG4gIHRydWVJbWFnZVNpemU6IG51bWJlcltdO1xuICB1cmxzOiBzdHJpbmdbXTtcbiAgLyoqIE9wdGlvbmFsIHNtYWxsLXRpZXIgVVJMcyAoZmFzdCBibHVycnkgcGxhY2Vob2xkZXIpLCAxOjEgd2l0aCBgdXJsc2AuICovXG4gIHNtYWxsVXJscz86IHN0cmluZ1tdO1xuICBpc1N0YWNrOiBib29sZWFuO1xuICBzaG93U3RhY2s6IGJvb2xlYW47XG4gIHNjYWxlUmF0aW86IGJvb2xlYW47XG4gIGZpbGVOYW1lOiBzdHJpbmc7XG4gIHJvaUpzb25TdHI/OiBzdHJpbmc7XG4gIC8qKiBQZXItc2xpY2UgUk9JIEdlb0pTT04sIGFsaWduZWQgMToxIHdpdGggYHVybHNgLCBmb3IgYSBmb2xkZXIgc3RhY2sgd2hlcmVcbiAgICogIGVhY2ggc2xpY2UgaXMgYSBzZXBhcmF0ZSBmaWxlIHdpdGggaXRzIG93biBzaWJsaW5nIGA8c3RlbT4uZ2VvanNvbmBcbiAgICogIChgbnVsbGAgZm9yIHNsaWNlcyB3aXRob3V0IG9uZSkuIFdoZW4gcHJlc2VudCwgdGhlIGNvbXBvbmVudCBhcHBsaWVzXG4gICAqICBgcm9pSnNvblN0cnNbel1gIGZvciB0aGUgZGlzcGxheWVkIHNsaWNlIGFuZCBzd2FwcyBpdCBvbiBzY3J1YiDigJQgYXNcbiAgICogIG9wcG9zZWQgdG8gdGhlIHNjYWxhciBgcm9pSnNvblN0cmAsIHdoaWNoIGlzIG9uZSBST0kgc2V0IGZvciB0aGUgd2hvbGVcbiAgICogIGltYWdlIChhIHNpbmdsZSBmaWxlIG9yIGEgc2VydmVyIHotc3RhY2spLiAoaml0LXVpIzkzKSAqL1xuICByb2lKc29uU3Rycz86IChzdHJpbmcgfCBudWxsKVtdO1xuICAvKiogUGVyLXNsaWNlLCBwZXItY2hhbm5lbCBwbGFuZSBVUkxzIGZvciBhIFNFUlZFUkxFU1MgbXVsdGljaGFubmVsIGltYWdlXG4gICAqICAoYHRpbGVkOiBmYWxzZWAgKyBgaW1hZ2VNZXRhWzBdLmNoYW5uZWxDb3VudCA+IDFgKS4gYGNoYW5uZWxVcmxzW3pdW2NdYFxuICAgKiAgaXMgYSBjb21wbGV0ZSBzaW5nbGUtYmFuZCBpbWFnZSBvZiBjaGFubmVsIGMgYXQgc2xpY2Ugei4gVGhlIE9TRCBzaW1wbGVcbiAgICogIHBhdGggY29tcG9zaXRlcyB0aGVtIGNsaWVudC1zaWRlIOKAlCBwZXItY2hhbm5lbCBjb2xvdXIvd2luZG93L2dhbW1hIGZyb21cbiAgICogIHRoZSBjaGFubmVsIHBhbmUg4oCUIGluc3RlYWQgb2Ygb3BlbmluZyB0aGUgZmxhdCBgdXJsc1t6XWAuIChqaXQtdWkjNzYpICovXG4gIGNoYW5uZWxVcmxzPzogc3RyaW5nW11bXTtcbiAgaW1hZ2VNZXRhOiBJSW1hZ2VNZXRhZGF0YVtdO1xuICAvKiogSG93IHRoZSBPcGVuU2VhZHJhZ29uIGJhY2tlbmQgc2hvdWxkIHNvdXJjZSB0aGlzIGltYWdlLlxuICAgKiAgLSBgdHJ1ZWAvYWJzZW50IChkZWZhdWx0KTogc2VydmVyLXRpbGVkIOKAlCBPU0QgcG9sbHMgYC90aWxlcy9pbmZvYCBmb3IgYVxuICAgKiAgICBweXJhbWlkIGFuZCBmZXRjaGVzIHRpbGVzIGZyb20gdGhlIHNsaWRlLWNyb3Agc2VydmVyICh3aG9sZS1zbGlkZSBwYXRoKS5cbiAgICogIC0gYGZhbHNlYDogYSBzZWxmLWNvbnRhaW5lZCwgZGlyZWN0bHktbG9hZGFibGUgaW1hZ2Ug4oCUIGB1cmxzW3pJbmRleF1gIGlzIGFcbiAgICogICAgY29tcGxldGUgaW1hZ2UgKGUuZy4gYSBgYmxvYjpgIFVSTCBidWlsdCBmcm9tIGEgY2xpZW50LXNpZGUgcGl4ZWwgYnVmZmVyKSxcbiAgICogICAgb3BlbmVkIHZpYSBPU0QncyBzaW5nbGUtaW1hZ2Ugc291cmNlIHdpdGggbm8gdGlsZSBzZXJ2ZXIuIExldHMgaW4tbWVtb3J5XG4gICAqICAgIGltYWdlcyAodGhlIHByb2Nlc3NpbmcgcGlwZWxpbmUpIHVzZSB0aGUgT1NEIHZpZXdlciB3aXRob3V0IGEgcm91bmQtdHJpcC4gKi9cbiAgdGlsZWQ/OiBib29sZWFuO1xuICAvKiogT25lLXNob3QgaGludDogb3BlbiB0aGUgc3RhY2sgb24gdGhpcyBzbGljZSBpbnN0ZWFkIG9mIHNsaWNlIDAgKGUuZy4gdGhlXG4gICAqICBob3N0IGNsaWNrZWQgYSBzcGVjaWZpYyBmaWxlIHdpdGhpbiBhIG51bWJlcmVkIGltYWdlIHNlcmllcykuIFRoZVxuICAgKiAgY29tcG9uZW50IGNvbnN1bWVzIGFuZCBjbGVhcnMgdGhpcyB0aGUgZmlyc3QgdGltZSBpdCBzZWVzIHRoZSBvYmplY3QsIHNvXG4gICAqICByZS1kZWxpdmVyaW5nIHRoZSBzYW1lIEltYWdlSW5mbyAoZS5nLiBhIHBsb3QtdHlwZSBzd2l0Y2gpIGRvZXNuJ3QgcmVzZXRcbiAgICogIHRoZSB1c2VyJ3MgY3VycmVudCBzY3J1YiBwb3NpdGlvbi4gKi9cbiAgaW5pdGlhbFpJbmRleD86IG51bWJlcjtcbn1cbiJdfQ==
|
|
@@ -34,6 +34,15 @@ export var PlotType;
|
|
|
34
34
|
PlotType["NAPARI_SCATTER"] = "napari-scatter";
|
|
35
35
|
/** WebGPU 3D scatter of the downsampled voxel cloud (napari-js analog of Plotly SCATTER3D). */
|
|
36
36
|
PlotType["NAPARI_SCATTER3D"] = "napari-scatter3d";
|
|
37
|
+
/** Spatial-omics observations (Visium spots, segmented cells) drawn over the tissue image and
|
|
38
|
+
* coloured by an annotation column or a gene. Needs a `SpatialDataset` on `SPATIAL_DATA_PORT`,
|
|
39
|
+
* so it is gated by `requiresSpatialData` and never appears for an image-only host. */
|
|
40
|
+
PlotType["SPATIAL_OMICS"] = "spatial-omics";
|
|
41
|
+
/** Spatial-omics observations as a 3D point cloud, for assays whose observations carry a z —
|
|
42
|
+
* serial sections registered into a common frame (e.g. the Allen CCF), or a genuinely
|
|
43
|
+
* volumetric assay. Gated by `requiresSpatial3d`, a strictly narrower gate than
|
|
44
|
+
* {@link SPATIAL_OMICS}: a single-plane dataset has no z to render. */
|
|
45
|
+
PlotType["SPATIAL_OMICS_3D"] = "spatial-omics-3d";
|
|
37
46
|
})(PlotType || (PlotType = {}));
|
|
38
47
|
/**
|
|
39
48
|
* Single source of truth for plot-type metadata. LINE is intentionally absent —
|
|
@@ -66,6 +75,9 @@ export const PLOT_TYPE_DESCRIPTORS = {
|
|
|
66
75
|
[PlotType.NAPARI_SCATTER3D]: { type: PlotType.NAPARI_SCATTER3D, label: 'Scatter 3D (napari · WebGPU)', icon: 'assets/plotting/3d-coordinates.svg', dimensions: '3d', source: 'image', requiresStack: true, requiresGrayscale: true },
|
|
67
76
|
[PlotType.NAPARI_VOLUME]: { type: PlotType.NAPARI_VOLUME, label: 'Volume (napari · WebGPU)', productionLabel: 'Volume', icon: 'assets/plotting/cube-3d.svg', dimensions: '3d', source: 'image', requiresStack: true, requiresGrayscale: true },
|
|
68
77
|
[PlotType.NAPARI_ISOSURFACE]: { type: PlotType.NAPARI_ISOSURFACE, label: 'Isosurface (napari · WebGPU)', productionLabel: 'Isosurface', icon: 'assets/plotting/isosurface.svg', dimensions: '3d', source: 'image', requiresStack: true, requiresGrayscale: true },
|
|
78
|
+
// ── Spatial omics ──
|
|
79
|
+
[PlotType.SPATIAL_OMICS]: { type: PlotType.SPATIAL_OMICS, label: 'Spatial omics (napari · WebGPU)', productionLabel: 'Spatial omics', icon: 'assets/plotting/spatial-omics.svg', dimensions: '2d', source: 'spatial', requiresSpatialData: true },
|
|
80
|
+
[PlotType.SPATIAL_OMICS_3D]: { type: PlotType.SPATIAL_OMICS_3D, label: 'Spatial omics 3D (napari · WebGPU)', productionLabel: 'Spatial omics 3D', icon: 'assets/plotting/spatial-omics-3d.svg', dimensions: '3d', source: 'spatial', requiresSpatialData: true, requiresSpatial3d: true },
|
|
69
81
|
};
|
|
70
82
|
export function getPlotTypeDescriptor(type) {
|
|
71
83
|
return PLOT_TYPE_DESCRIPTORS[type];
|
|
@@ -94,6 +106,29 @@ export function isNapariScatter(type) {
|
|
|
94
106
|
export function isNapariScatter3d(type) {
|
|
95
107
|
return type === PlotType.NAPARI_SCATTER3D;
|
|
96
108
|
}
|
|
109
|
+
/** Spatial-omics observations over the tissue image. */
|
|
110
|
+
export function isSpatialOmics(type) {
|
|
111
|
+
return type === PlotType.SPATIAL_OMICS;
|
|
112
|
+
}
|
|
113
|
+
/** Spatial-omics observations as a 3D point cloud. */
|
|
114
|
+
export function isSpatialOmics3d(type) {
|
|
115
|
+
return type === PlotType.SPATIAL_OMICS_3D;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Whether the renderer, rather than the shell, should handle wheel zoom.
|
|
119
|
+
*
|
|
120
|
+
* The shell's wheel listener applies a FIXED step per event, which is far too sensitive for a
|
|
121
|
+
* renderer that reads the scroll delta: it works out at 30% per event against napari-js's 3%, and
|
|
122
|
+
* ignores the device normalization and easing the renderer does. So every plot type drawn by a
|
|
123
|
+
* renderer that owns the wheel has to opt out here.
|
|
124
|
+
*
|
|
125
|
+
* The image view always did. The spatial-omics modes did NOT, despite being drawn by the same
|
|
126
|
+
* napari-js viewer — the shell gated on an `isHeatmap` flag that defaults to true and only goes
|
|
127
|
+
* false for the 3D Plotly scenes, so it silently took the wheel for them too.
|
|
128
|
+
*/
|
|
129
|
+
export function rendererOwnsWheel(type) {
|
|
130
|
+
return type === PlotType.IMAGE || isSpatialOmics(type) || isSpatialOmics3d(type);
|
|
131
|
+
}
|
|
97
132
|
/** Any napari-js 3D plot type (volume, isosurface, surface, or 3D scatter). Resolution is a runtime
|
|
98
133
|
* decimate factor (Full / ½ / ¼ / ⅛) — see the service's `resolutionScale`. */
|
|
99
134
|
export function isNapari3d(type) {
|
|
@@ -109,4 +144,4 @@ export const NAPARI_DECIMATE_OPTIONS = [
|
|
|
109
144
|
/** Default decimate factor: ¼. The caps are set so ¼ is a sensible default resolution while ½ and
|
|
110
145
|
* Full offer 2× and 4× the detail for opt-in high-resolution renders. */
|
|
111
146
|
export const NAPARI_DEFAULT_DECIMATE = 4;
|
|
112
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxvdC10eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jb250cmFjdHMvcGxvdC10eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBTSxDQUFOLElBQVksUUF1Qlg7QUF2QkQsV0FBWSxRQUFRO0lBQ2xCO2lGQUM2RTtJQUM3RSwyQkFBZSxDQUFBO0lBQ2YsK0JBQW1CLENBQUE7SUFDbkIsK0JBQW1CLENBQUE7SUFDbkIsK0JBQW1CLENBQUE7SUFDbkIsK0JBQW1CLENBQUE7SUFDbkIseUZBQXlGO0lBQ3pGLHlCQUFhLENBQUE7SUFDYixtQ0FBdUIsQ0FBQTtJQUN2QixxQ0FBeUIsQ0FBQTtJQUN6Qjt1R0FDbUc7SUFDbkcseUNBQTZCLENBQUE7SUFDN0IsMkNBQStCLENBQUE7SUFDL0IsbURBQXVDLENBQUE7SUFDdkMsZ0dBQWdHO0lBQ2hHLDZDQUFpQyxDQUFBO0lBQ2pDLGtGQUFrRjtJQUNsRiw2Q0FBaUMsQ0FBQTtJQUNqQywrRkFBK0Y7SUFDL0YsaURBQXFDLENBQUE7QUFDdkMsQ0FBQyxFQXZCVyxRQUFRLEtBQVIsUUFBUSxRQXVCbkI7QUFnREQ7Ozs7O0dBS0c7QUFDSCwrRkFBK0Y7QUFDL0Ysb0RBQW9EO0FBQ3BELGtGQUFrRjtBQUNsRixpRkFBaUY7QUFDakYsbUVBQW1FO0FBQ25FLDJFQUEyRTtBQUMzRSxzRUFBc0U7QUFDdEUsNEVBQTRFO0FBQzVFLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFrRDtJQUNsRixnQkFBZ0I7SUFDaEIsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLEtBQUssRUFBTyxLQUFLLEVBQUUsYUFBYSxFQUFZLGVBQWUsRUFBRSxPQUFPLEVBQU8sSUFBSSxFQUFFLGFBQWEsRUFBcUIsVUFBVSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFO0lBQzlM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LE9BQU8sSUFBSSxLQUFLLFFBQVEsQ0FBQyxjQUFjLENBQUM7QUFDMUMsQ0FBQztBQUNELCtDQUErQztBQUMvQyxNQUFNLFVBQVUsZUFBZSxDQUFDLElBQWM7SUFDNUMsT0FBTyxJQUFJLEtBQUssUUFBUSxDQUFDLGNBQWMsQ0FBQztBQUMxQyxDQUFDO0FBQ0QsZ0RBQWdEO0FBQ2hELE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxJQUFjO0lBQzlDLE9BQU8sSUFBSSxLQUFLLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQztBQUM1QyxDQUFDO0FBQ0Q7Z0ZBQ2dGO0FBQ2hGLE1BQU0sVUFBVSxVQUFVLENBQUMsSUFBYztJQUN2QyxPQUFPLENBQ0wsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FDckcsQ0FBQztBQUNKLENBQUM7QUFFRCw2RUFBNkU7QUFDN0UsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQXVDO0lBQ3pFLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO0lBQzNCLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO0lBQ3hCLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO0lBQ3hCLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO0NBQ3pCLENBQUM7QUFFRjswRUFDMEU7QUFDMUUsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGUga2luZCBvZiByZW5kZXJpbmcgYSB2aWV3ZXIgYmFja2VuZCBzaG91bGQgcHJvZHVjZSBmb3IgdGhlIGxvYWRlZCBkYXRhLlxuICpcbiAqIExpdmVzIGluIGBjb250cmFjdHMvYCAocmF0aGVyIHRoYW4gaW5zaWRlIGEgc3BlY2lmaWMgYmFja2VuZCkgYmVjYXVzZSBpdCBpc1xuICogcGFydCBvZiB0aGUgYmFja2VuZC1uZXV0cmFsIHBsb3R0aW5nIGNvbnRyYWN0OiBib3RoIHRoZSBQbG90bHkgYmFja2VuZCBhbmRcbiAqIGFueSBmdXR1cmUgYmFja2VuZCAoZS5nLiBPcGVuU2VhZHJhZ29uKSBhY2NlcHQgYSBgUGxvdFR5cGVgIG9uIGBwbG90KClgLlxuICpcbiAqIE5PVEU6IGEgYmFja2VuZCBtYXkgbm90IHN1cHBvcnQgZXZlcnkgdHlwZSDigJQgM0QgdHlwZXMgKGBTVVJGQUNFYCxcbiAqIGBTQ0FUVEVSM0RgLCBgSVNPU1VSRkFDRWApIGFyZSBnYXRlZCBiZWhpbmQgYFZpZXdlckZlYXR1cmUuU3VyZmFjZTNEYCBpbiB0aGVcbiAqIGNhcGFiaWxpdGllcyBjb250cmFjdCwgc28gYSAyRC1vbmx5IGJhY2tlbmQgY2FuIGFkdmVydGlzZSB0aGF0IGl0IGNhbid0XG4gKiByZW5kZXIgdGhlbSBhbmQgdGhlIFVJIGNhbiBoaWRlIHRoZSBvcHRpb24uXG4gKi9cbmV4cG9ydCBlbnVtIFBsb3RUeXBlIHtcbiAgLyoqIE5hdGl2ZWx5LXRpbGVkLCB6b29tYWJsZSByYXN0ZXIgcmVuZGVyZWQgYnkgT3BlblNlYWRyYWdvbiAodGhlIGRlZmF1bHRcbiAgICogIHZpZXcgZm9yIGFuIGltYWdlKS4gSGVhdG1hcCByZW1haW5zIHRoZSBQbG90bHkgc2NhbGFyLWltYWdlIHJlbmRlcmluZy4gKi9cbiAgSU1BR0UgPSAnaW1hZ2UnLFxuICBIRUFUTUFQID0gJ2hlYXRtYXAnLFxuICBTVVJGQUNFID0gJ3N1cmZhY2UnLFxuICBDT05UT1VSID0gJ2NvbnRvdXInLFxuICBTQ0FUVEVSID0gJ3NjYXR0ZXInLFxuICAvLyBMSU5FOiByZXNlcnZlZC9zdHViYmVkIOKAlCBpbnRlbnNpdHkgcHJvZmlsZXMgYXJlIG5vdyBSZWdpb24tYmFzZWQgKGtlcHQgZm9yIGZ1dHVyZSB1c2UpXG4gIExJTkUgPSAnbGluZScsXG4gIFNDQVRURVIzRCA9ICdzY2F0dGVyM2QnLFxuICBJU09TVVJGQUNFID0gJ2lzb3N1cmZhY2UnLFxuICAvKiogV2ViR1BVIG5hcGFyaS1qcyByZW5kZXJpbmdzIChqaXQtdWkjMTAyKSwgc2VsZWN0YWJsZSBhbG9uZ3NpZGUgdGhlIE9TRC9QbG90bHkgdHlwZXMuIFRoZSAzRFxuICAgKiAgdHlwZXMgdGFrZSBhIHJ1bnRpbWUgZGVjaW1hdGUgZmFjdG9yIChGdWxsIC8gwr0gLyDCvCAvIOKFmykgaW5zdGVhZCBvZiBmaXhlZCBoaS9sby1yZXMgdmFyaWFudHMuICovXG4gIE5BUEFSSV9JTUFHRSA9ICduYXBhcmktaW1hZ2UnLFxuICBOQVBBUklfVk9MVU1FID0gJ25hcGFyaS12b2x1bWUnLFxuICBOQVBBUklfSVNPU1VSRkFDRSA9ICduYXBhcmktaXNvc3VyZmFjZScsXG4gIC8qKiBXZWJHUFUgaGVpZ2h0LWZpZWxkIHN1cmZhY2UgbWVzaCAoeiA9IGludGVuc2l0eSksIHRoZSBuYXBhcmktanMgYW5hbG9nIG9mIFBsb3RseSBTVVJGQUNFLiAqL1xuICBOQVBBUklfU1VSRkFDRSA9ICduYXBhcmktc3VyZmFjZScsXG4gIC8qKiBXZWJHUFUgMkQgc2NhdHRlciBvZiByZWdpb24gY2VudHJvaWRzIChuYXBhcmktanMgYW5hbG9nIG9mIFBsb3RseSBTQ0FUVEVSKS4gKi9cbiAgTkFQQVJJX1NDQVRURVIgPSAnbmFwYXJpLXNjYXR0ZXInLFxuICAvKiogV2ViR1BVIDNEIHNjYXR0ZXIgb2YgdGhlIGRvd25zYW1wbGVkIHZveGVsIGNsb3VkIChuYXBhcmktanMgYW5hbG9nIG9mIFBsb3RseSBTQ0FUVEVSM0QpLiAqL1xuICBOQVBBUklfU0NBVFRFUjNEID0gJ25hcGFyaS1zY2F0dGVyM2QnLFxufVxuXG4vKiogSG93IG1hbnkgc3BhdGlhbCBkaW1lbnNpb25zIGEgcGxvdCB0eXBlIHJlbmRlcnMgaW4uICovXG5leHBvcnQgdHlwZSBQbG90RGltZW5zaW9ucyA9ICcyZCcgfCAnM2QnO1xuXG4vKipcbiAqIFdoZXJlIGEgcGxvdCB0eXBlIHB1bGxzIGl0cyBkYXRhIGZyb206XG4gKiAgLSBgaW1hZ2VgICAg4oCUIHRoZSBsb2FkZWQgcGl4ZWwgbWF0cmljZXMgLyB6LXN0YWNrIChIRUFUTUFQLCBTVVJGQUNFLCDigKYpXG4gKiAgLSBgcmVnaW9uc2Ag4oCUIHRoZSBkcmF3bi9kZXJpdmVkIHJlZ2lvbnMgKFNDQVRURVIgb2YgcmVnaW9uIGNlbnRyb2lkcywg4oCmKVxuICovXG5leHBvcnQgdHlwZSBQbG90RGF0YVNvdXJjZSA9ICdpbWFnZScgfCAncmVnaW9ucyc7XG5cbi8qKlxuICogQmFja2VuZC1uZXV0cmFsIG1ldGFkYXRhIGFib3V0IGEgcGxvdCB0eXBlLiBEcml2ZXMgVUkgYWZmb3JkYW5jZXMgKHdoaWNoXG4gKiB0eXBlcyBhcmUgM0QsIHdoaWNoIG5lZWQgYW4gaW1hZ2Ugc3RhY2ssIGhvdyB0byBsYWJlbCB0aGVtIGluIGEgZHJvcGRvd24pXG4gKiB3aXRob3V0IGFueSBiYWNrZW5kJ3MgdHJhY2UtYnVpbGRpbmcgbG9naWMgbGVha2luZyBpbnRvIHRoZSBjb250cmFjdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbG90VHlwZURlc2NyaXB0b3Ige1xuICB0eXBlOiBQbG90VHlwZTtcbiAgLyoqIEh1bWFuLXJlYWRhYmxlIGxhYmVsIGZvciBtZW51cy9kcm9wZG93bnMuIFNob3duIGluICoqdGVzdCBtb2RlKiosIHdoZXJlXG4gICAqICBldmVyeSBiYWNrZW5kJ3MgdHlwZSBpcyBvZmZlcmVkLCBzbyBpdCBjYXJyaWVzIHRoZSBiYWNrZW5kIHN1ZmZpeCAoZS5nLlxuICAgKiAgXCJTdXJmYWNlIChuYXBhcmkgwrcgV2ViR1BVKVwiKSB0byBkaXNhbWJpZ3VhdGUgc2FtZS1uYW1lZCBtb2Rlcy4gKi9cbiAgbGFiZWw6IHN0cmluZztcbiAgLyoqXG4gICAqIExhYmVsIHNob3duIGluIHRoZSAqKmRlZmF1bHQgKG5vbi10ZXN0KSBzZWxlY3RvcioqLCB3aGVyZSBhIHNpbmdsZSBjdXJhdGVkXG4gICAqIG1vZGUgb3ducyBlYWNoIG5hbWUg4oCUIHNvIGl0IGRyb3BzIHRoZSBiYWNrZW5kIHN1ZmZpeCAoZS5nLiBqdXN0IFwiU3VyZmFjZVwiKS5cbiAgICogQSB0eXBlIFdJVEhPVVQgYSBgcHJvZHVjdGlvbkxhYmVsYCBpcyAqKnRlc3Qtb25seSoqOiBoaWRkZW4gZnJvbSB0aGUgZGVmYXVsdFxuICAgKiBzZWxlY3RvciBhbmQgc2hvd24gb25seSB3aGVuIHRoZSBob3N0IGVuYWJsZXMgdGVzdCBtb2RlLiBUaGlzIGlzIHRoZSBzaW5nbGVcbiAgICoga25vYiB0aGF0IGN1cmF0ZXMgdGhlIGRlZmF1bHQgcGxvdC1tb2RlIGxpc3QgKGpheC1pbWFnZS12aXN1YWxpemF0aW9uKS5cbiAgICovXG4gIHByb2R1Y3Rpb25MYWJlbD86IHN0cmluZztcbiAgLyoqXG4gICAqIEljb24gc2hvd24gdG8gdGhlIGxlZnQgb2YgdGhlIGxhYmVsIGluIHRoZSBwbG90LXR5cGUgc2VsZWN0b3IuIEVpdGhlciBhXG4gICAqIFByaW1lTkcgaWNvbiBjbGFzcyAoc3RhcnRzIHdpdGggYHBpIGAsIGUuZy4gYHBpIHBpLWltYWdlYCkgcmVuZGVyZWQgYXMgYVxuICAgKiBmb250IGdseXBoLCBvciBhIHNlcnZlZCBTVkcgYXNzZXQgcGF0aCAoZS5nLiBgYXNzZXRzL3Bsb3R0aW5nL3N1cmZhY2Uuc3ZnYClcbiAgICogcmVuZGVyZWQgYXMgYW4gYDxpbWc+YC4gQm90aCBhcmUgdGludGVkIHRvIHRoZSB0b29sYmFyJ3MgcHJpbWFyeSBibHVlLlxuICAgKi9cbiAgaWNvbj86IHN0cmluZztcbiAgZGltZW5zaW9uczogUGxvdERpbWVuc2lvbnM7XG4gIHNvdXJjZTogUGxvdERhdGFTb3VyY2U7XG4gIC8qKiBUcnVlIHdoZW4gdGhlIHR5cGUgb25seSBtYWtlcyBzZW5zZSBvdmVyIGEgbXVsdGktZnJhbWUgei1zdGFjay4gKi9cbiAgcmVxdWlyZXNTdGFjaz86IGJvb2xlYW47XG4gIC8qKiBUcnVlIHdoZW4gdGhlIHR5cGUgbWFwcyBhIHNpbmdsZSBzY2FsYXIgaW50ZW5zaXR5IHBlciBwaXhlbCAoY29udG91cixcbiAgICogIHN1cmZhY2UsIGludGVuc2l0eSBwcm9maWxlLCBpc29zdXJmYWNlKSDigJQgb25seSBtZWFuaW5nZnVsIGZvciBncmF5c2NhbGUuXG4gICAqICBJbWFnZS9IZWF0bWFwIHJlbmRlciBSR0IgZmluZTsgU2NhdHRlciB1c2VzIHJlZ2lvbnMuICovXG4gIHJlcXVpcmVzR3JheXNjYWxlPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBTaW5nbGUgc291cmNlIG9mIHRydXRoIGZvciBwbG90LXR5cGUgbWV0YWRhdGEuIExJTkUgaXMgaW50ZW50aW9uYWxseSBhYnNlbnQg4oCUXG4gKiBpbnRlbnNpdHkgcHJvZmlsZXMgYXJlIG5vdyBSZWdpb24tYmFzZWQgbGluZSBST0lzIChhdmFpbGFibGUgaW4gSGVhdG1hcC9JbWFnZVxuICogbW9kZSksIHNvIExJTkUgaXMgbm8gbG9uZ2VyIG9mZmVyZWQgaW4gdGhlIHNlbGVjdG9yICh0aGUgZW51bSBtZW1iZXIgaXMga2VwdFxuICogZm9yIGZ1dHVyZSB1c2UpLiBIZW5jZSB0aGUgYFBhcnRpYWxgIHJlY29yZC5cbiAqL1xuLy8gRHJvcGRvd24gb3JkZXIgPSBpbnNlcnRpb24gb3JkZXI6IEltYWdlIChPU0QpIGRlZmF1bHQgYXQgdGhlIHRvcCwgdGhlbiBhbGwgUGxvdGx5IHBsb3QgbW9kZXNcbi8vIGdyb3VwZWQsIHRoZW4gYWxsIG5hcGFyaS1qcyBXZWJHUFUgbW9kZXMgZ3JvdXBlZC5cbi8vIGBwcm9kdWN0aW9uTGFiZWxgIG1hcmtzIHRoZSBjdXJhdGVkIGRlZmF1bHQtc2VsZWN0b3Igc2V0IChqaXQtdWkjNzAgZm9sbG93LXVwKTpcbi8vICAtIElNQUdFIC8gSEVBVE1BUCAvIENPTlRPVVIgKDJEKSBhbmQgdGhlIG5hcGFyaSBTVVJGQUNFIC8gVk9MVU1FIC8gSVNPU1VSRkFDRVxuLy8gICAgKDNEKSBhcmUgdGhlIG1vZGVzIHNob3duIGJ5IGRlZmF1bHQsIHVuZGVyIHN1ZmZpeC1mcmVlIG5hbWVzLlxuLy8gIC0gRXZlcnl0aGluZyBlbHNlIChhbGwgU2NhdHRlcnMsIE5BUEFSSV9JTUFHRSwgYW5kIHRoZSBQbG90bHkgU1VSRkFDRSAvXG4vLyAgICBJU09TVVJGQUNFIHRoYXQgdGhlIG5hcGFyaSB2ZXJzaW9ucyBzdXBlcnNlZGUpIGlzIHRlc3Qtb25seSDigJQgbm9cbi8vICAgIGBwcm9kdWN0aW9uTGFiZWxgLCBzbyBpdCBhcHBlYXJzIG9ubHkgd2hlbiB0aGUgaG9zdCBlbmFibGVzIHRlc3QgbW9kZS5cbmV4cG9ydCBjb25zdCBQTE9UX1RZUEVfREVTQ1JJUFRPUlM6IFBhcnRpYWw8UmVjb3JkPFBsb3RUeXBlLCBQbG90VHlwZURlc2NyaXB0b3I+PiA9IHtcbiAgLy8g4pSA4pSAIERlZmF1bHQg4pSA4pSAXG4gIFtQbG90VHlwZS5JTUFHRV06ICAgICAgeyB0eXBlOiBQbG90VHlwZS5JTUFHRSwgICAgICBsYWJlbDogJ0ltYWdlIChPU0QpJywgICAgICAgICAgIHByb2R1Y3Rpb25MYWJlbDogJ0ltYWdlJywgICAgICBpY29uOiAncGkgcGktaW1hZ2UnLCAgICAgICAgICAgICAgICAgICAgZGltZW5zaW9uczogJzJkJywgc291cmNlOiAnaW1hZ2UnIH0sXG4gIC8vIOKUgOKUgCBQbG90bHkg4pSA4pSAXG4gIFtQbG90VHlwZS5IRUFUTUFQXTogICAgeyB0eXBlOiBQbG90VHlwZS5IRUFUTUFQLCAgICBsYWJlbDogJ0hlYXRtYXAgKFBsb3RseSknLCAgICAgIHByb2R1Y3Rpb25MYWJlbDogJ0hlYXRtYXAnLCAgICBpY29uOiAnYXNzZXRzL3Bsb3R0aW5nL2hlYXRtYXAuc3ZnJywgICAgZGltZW5zaW9uczogJzJkJywgc291cmNlOiAnaW1hZ2UnIH0sXG4gIFtQbG90VHlwZS5DT05UT1VSXTogICAgeyB0eXBlOiBQbG90VHlwZS5DT05UT1VSLCAgICBsYWJlbDogJ0NvbnRvdXIgKFBsb3RseSknLCAgICAgIHByb2R1Y3Rpb25MYWJlbDogJ0NvbnRvdXInLCAgICBpY29uOiAnYXNzZXRzL3Bsb3R0aW5nL2NvbnRvdXIuc3ZnJywgICAgZGltZW5zaW9uczogJzJkJywgc291cmNlOiAnaW1hZ2UnLCByZXF1aXJlc0dyYXlzY2FsZTogdHJ1ZSB9LFxuICBbUGxvdFR5cGUuU0NBVFRFUl06ICAgIHsgdHlwZTogUGxvdFR5cGUuU0NBVFRFUiwgICAgbGFiZWw6ICdTY2F0dGVyIDJEIChQbG90bHkpJywgICBpY29uOiAncGkgcGktY2hhcnQtc2NhdHRlcicsICAgICAgICAgICAgZGltZW5zaW9uczogJzJkJywgc291cmNlOiAncmVnaW9ucycgfSxcbiAgW1Bsb3RUeXBlLlNVUkZBQ0VdOiAgICB7IHR5cGU6IFBsb3RUeXBlLlNVUkZBQ0UsICAgIGxhYmVsOiAnU3VyZmFjZSAoUGxvdGx5KScsICAgICAgaWNvbjogJ2Fzc2V0cy9wbG90dGluZy9zdXJmYWNlLnN2ZycsICAgIGRpbWVuc2lvbnM6ICczZCcsIHNvdXJjZTogJ2ltYWdlJywgcmVxdWlyZXNHcmF5c2NhbGU6IHRydWUgfSxcbiAgW1Bsb3RUeXBlLlNDQVRURVIzRF06ICB7IHR5cGU6IFBsb3RUeXBlLlNDQVRURVIzRCwgIGxhYmVsOiAnU2NhdHRlciAzRCAoUGxvdGx5KScsICAgaWNvbjogJ2Fzc2V0cy9wbG90dGluZy8zZC1jb29yZGluYXRlcy5zdmcnLCBkaW1lbnNpb25zOiAnM2QnLCBzb3VyY2U6ICdpbWFnZScsIHJlcXVpcmVzU3RhY2s6IHRydWUsIHJlcXVpcmVzR3JheXNjYWxlOiB0cnVlIH0sXG4gIFtQbG90VHlwZS5JU09TVVJGQUNFXTogeyB0eXBlOiBQbG90VHlwZS5JU09TVVJGQUNFLCBsYWJlbDogJ0lzb3N1cmZhY2UgKFBsb3RseSknLCAgIGljb246ICdhc3NldHMvcGxvdHRpbmcvaXNvc3VyZmFjZS5zdmcnLCBkaW1lbnNpb25zOiAnM2QnLCBzb3VyY2U6ICdpbWFnZScsIHJlcXVpcmVzU3RhY2s6IHRydWUsIHJlcXVpcmVzR3JheXNjYWxlOiB0cnVlIH0sXG4gIC8vIOKUgOKUgCBuYXBhcmktanMgV2ViR1BVIChqaXQtdWkjMTAyKS4gVGhlIDNEIHR5cGVzIHRha2UgYSBydW50aW1lIGRlY2ltYXRlIGZhY3Rvci4g4pSA4pSAXG4gIFtQbG90VHlwZS5OQVBBUklfSU1BR0VdOiAgICAgIHsgdHlwZTogUGxvdFR5cGUuTkFQQVJJX0lNQUdFLCAgICAgIGxhYmVsOiAnSW1hZ2UgKG5hcGFyaSDCtyBXZWJHUFUpJywgICAgICBpY29uOiAncGkgcGktaW1hZ2UnLCAgICAgICAgICAgICAgICAgICAgICAgIGRpbWVuc2lvbnM6ICcyZCcsIHNvdXJjZTogJ2ltYWdlJyB9LFxuICBbUGxvdFR5cGUuTkFQQVJJX1NDQVRURVJdOiAgICB7IHR5cGU6IFBsb3RUeXBlLk5BUEFSSV9TQ0FUVEVSLCAgICBsYWJlbDogJ1NjYXR0ZXIgMkQgKG5hcGFyaSDCtyBXZWJHUFUpJywgaWNvbjogJ3BpIHBpLWNoYXJ0LXNjYXR0ZXInLCAgICAgICAgICAgICAgICBkaW1lbnNpb25zOiAnMmQnLCBzb3VyY2U6ICdyZWdpb25zJyB9LFxuICBbUGxvdFR5cGUuTkFQQVJJX1NVUkZBQ0VdOiAgICB7IHR5cGU6IFBsb3RUeXBlLk5BUEFSSV9TVVJGQUNFLCAgICBsYWJlbDogJ1N1cmZhY2UgKG5hcGFyaSDCtyBXZWJHUFUpJywgICAgcHJvZHVjdGlvbkxhYmVsOiAnU3VyZmFjZScsICAgIGljb246ICdhc3NldHMvcGxvdHRpbmcvc3VyZmFjZS5zdmcnLCAgICAgICAgZGltZW5zaW9uczogJzNkJywgc291cmNlOiAnaW1hZ2UnIH0sIC8vIGEgaGVpZ2h0LWZpZWxkIGlzIHo9aW50ZW5zaXR5IG9mIG9uZSBwbGFuZSDigJQgd29ya3MgZm9yIGFueSBncmF5c2NhbGUvUkdCIGltYWdlIChSR0LihpJsdW1pbmFuY2UpLCBubyBzdGFjayBuZWVkZWRcbiAgW1Bsb3RUeXBlLk5BUEFSSV9TQ0FUVEVSM0RdOiAgeyB0eXBlOiBQbG90VHlwZS5OQVBBUklfU0NBVFRFUjNELCAgbGFiZWw6ICdTY2F0dGVyIDNEIChuYXBhcmkgwrcgV2ViR1BVKScsIGljb246ICdhc3NldHMvcGxvdHRpbmcvM2QtY29vcmRpbmF0ZXMuc3ZnJywgZGltZW5zaW9uczogJzNkJywgc291cmNlOiAnaW1hZ2UnLCByZXF1aXJlc1N0YWNrOiB0cnVlLCByZXF1aXJlc0dyYXlzY2FsZTogdHJ1ZSB9LFxuICBbUGxvdFR5cGUuTkFQQVJJX1ZPTFVNRV06ICAgICB7IHR5cGU6IFBsb3RUeXBlLk5BUEFSSV9WT0xVTUUsICAgICBsYWJlbDogJ1ZvbHVtZSAobmFwYXJpIMK3IFdlYkdQVSknLCAgICAgcHJvZHVjdGlvbkxhYmVsOiAnVm9sdW1lJywgICAgIGljb246ICdhc3NldHMvcGxvdHRpbmcvY3ViZS0zZC5zdmcnLCAgICAgICAgZGltZW5zaW9uczogJzNkJywgc291cmNlOiAnaW1hZ2UnLCByZXF1aXJlc1N0YWNrOiB0cnVlLCByZXF1aXJlc0dyYXlzY2FsZTogdHJ1ZSB9LFxuICBbUGxvdFR5cGUuTkFQQVJJX0lTT1NVUkZBQ0VdOiB7IHR5cGU6IFBsb3RUeXBlLk5BUEFSSV9JU09TVVJGQUNFLCBsYWJlbDogJ0lzb3N1cmZhY2UgKG5hcGFyaSDCtyBXZWJHUFUpJywgcHJvZHVjdGlvbkxhYmVsOiAnSXNvc3VyZmFjZScsIGljb246ICdhc3NldHMvcGxvdHRpbmcvaXNvc3VyZmFjZS5zdmcnLCAgICAgZGltZW5zaW9uczogJzNkJywgc291cmNlOiAnaW1hZ2UnLCByZXF1aXJlc1N0YWNrOiB0cnVlLCByZXF1aXJlc0dyYXlzY2FsZTogdHJ1ZSB9LFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFBsb3RUeXBlRGVzY3JpcHRvcih0eXBlOiBQbG90VHlwZSk6IFBsb3RUeXBlRGVzY3JpcHRvciB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBQTE9UX1RZUEVfREVTQ1JJUFRPUlNbdHlwZV07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1RocmVlRGltZW5zaW9uYWwodHlwZTogUGxvdFR5cGUpOiBib29sZWFuIHtcbiAgcmV0dXJuIFBMT1RfVFlQRV9ERVNDUklQVE9SU1t0eXBlXT8uZGltZW5zaW9ucyA9PT0gJzNkJztcbn1cblxuLy8g4pSA4pSAIG5hcGFyaS1qcyAzRCBwbG90LXR5cGUgcHJlZGljYXRlcyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbi8qKiBuYXBhcmktanMgdm9sdW1lLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTmFwYXJpVm9sdW1lKHR5cGU6IFBsb3RUeXBlKTogYm9vbGVhbiB7XG4gIHJldHVybiB0eXBlID09PSBQbG90VHlwZS5OQVBBUklfVk9MVU1FO1xufVxuLyoqIG5hcGFyaS1qcyBpc29zdXJmYWNlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTmFwYXJpSXNvc3VyZmFjZSh0eXBlOiBQbG90VHlwZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gdHlwZSA9PT0gUGxvdFR5cGUuTkFQQVJJX0lTT1NVUkZBQ0U7XG59XG4vKiogbmFwYXJpLWpzIGhlaWdodC1maWVsZCBzdXJmYWNlIG1lc2guICovXG5leHBvcnQgZnVuY3Rpb24gaXNOYXBhcmlTdXJmYWNlKHR5cGU6IFBsb3RUeXBlKTogYm9vbGVhbiB7XG4gIHJldHVybiB0eXBlID09PSBQbG90VHlwZS5OQVBBUklfU1VSRkFDRTtcbn1cbi8qKiBuYXBhcmktanMgMkQgc2NhdHRlciAocmVnaW9uIGNlbnRyb2lkcykuICovXG5leHBvcnQgZnVuY3Rpb24gaXNOYXBhcmlTY2F0dGVyKHR5cGU6IFBsb3RUeXBlKTogYm9vbGVhbiB7XG4gIHJldHVybiB0eXBlID09PSBQbG90VHlwZS5OQVBBUklfU0NBVFRFUjtcbn1cbi8qKiBuYXBhcmktanMgM0Qgc2NhdHRlciAodm94ZWwgcG9pbnQgY2xvdWQpLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTmFwYXJpU2NhdHRlcjNkKHR5cGU6IFBsb3RUeXBlKTogYm9vbGVhbiB7XG4gIHJldHVybiB0eXBlID09PSBQbG90VHlwZS5OQVBBUklfU0NBVFRFUjNEO1xufVxuLyoqIEFueSBuYXBhcmktanMgM0QgcGxvdCB0eXBlICh2b2x1bWUsIGlzb3N1cmZhY2UsIHN1cmZhY2UsIG9yIDNEIHNjYXR0ZXIpLiBSZXNvbHV0aW9uIGlzIGEgcnVudGltZVxuICogIGRlY2ltYXRlIGZhY3RvciAoRnVsbCAvIMK9IC8gwrwgLyDihZspIOKAlCBzZWUgdGhlIHNlcnZpY2UncyBgcmVzb2x1dGlvblNjYWxlYC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc05hcGFyaTNkKHR5cGU6IFBsb3RUeXBlKTogYm9vbGVhbiB7XG4gIHJldHVybiAoXG4gICAgaXNOYXBhcmlWb2x1bWUodHlwZSkgfHwgaXNOYXBhcmlJc29zdXJmYWNlKHR5cGUpIHx8IGlzTmFwYXJpU3VyZmFjZSh0eXBlKSB8fCBpc05hcGFyaVNjYXR0ZXIzZCh0eXBlKVxuICApO1xufVxuXG4vKiogRGVjaW1hdGUgZmFjdG9ycyBvZmZlcmVkIGJ5IHRoZSBSZXNvbHV0aW9uIGNvbnRyb2wgKDEgPSBGdWxsIOKApiA4ID0g4oWbKS4gKi9cbmV4cG9ydCBjb25zdCBOQVBBUklfREVDSU1BVEVfT1BUSU9OUzogeyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogbnVtYmVyIH1bXSA9IFtcbiAgeyBsYWJlbDogJ0Z1bGwnLCB2YWx1ZTogMSB9LFxuICB7IGxhYmVsOiAnwr0nLCB2YWx1ZTogMiB9LFxuICB7IGxhYmVsOiAnwrwnLCB2YWx1ZTogNCB9LFxuICB7IGxhYmVsOiAn4oWbJywgdmFsdWU6IDggfSxcbl07XG5cbi8qKiBEZWZhdWx0IGRlY2ltYXRlIGZhY3RvcjogwrwuIFRoZSBjYXBzIGFyZSBzZXQgc28gwrwgaXMgYSBzZW5zaWJsZSBkZWZhdWx0IHJlc29sdXRpb24gd2hpbGUgwr0gYW5kXG4gKiAgRnVsbCBvZmZlciAyw5cgYW5kIDTDlyB0aGUgZGV0YWlsIGZvciBvcHQtaW4gaGlnaC1yZXNvbHV0aW9uIHJlbmRlcnMuICovXG5leHBvcnQgY29uc3QgTkFQQVJJX0RFRkFVTFRfREVDSU1BVEUgPSA0O1xuIl19
|
|
147
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxvdC10eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jb250cmFjdHMvcGxvdC10eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBTSxDQUFOLElBQVksUUFnQ1g7QUFoQ0QsV0FBWSxRQUFRO0lBQ2xCO2lGQUM2RTtJQUM3RSwyQkFBZSxDQUFBO0lBQ2YsK0JBQW1CLENBQUE7SUFDbkIsK0JBQW1CLENBQUE7SUFDbkIsK0JBQW1CLENBQUE7SUFDbkIsK0JBQW1CLENBQUE7SUFDbkIseUZBQXlGO0lBQ3pGLHlCQUFhLENBQUE7SUFDYixtQ0FBdUIsQ0FBQTtJQUN2QixxQ0FBeUIsQ0FBQTtJQUN6Qjt1R0FDbUc7SUFDbkcseUNBQTZCLENBQUE7SUFDN0IsMkNBQStCLENBQUE7SUFDL0IsbURBQXVDLENBQUE7SUFDdkMsZ0dBQWdHO0lBQ2hHLDZDQUFpQyxDQUFBO0lBQ2pDLGtGQUFrRjtJQUNsRiw2Q0FBaUMsQ0FBQTtJQUNqQywrRkFBK0Y7SUFDL0YsaURBQXFDLENBQUE7SUFDckM7OzRGQUV3RjtJQUN4RiwyQ0FBK0IsQ0FBQTtJQUMvQjs7OzRFQUd3RTtJQUN4RSxpREFBcUMsQ0FBQTtBQUN2QyxDQUFDLEVBaENXLFFBQVEsS0FBUixRQUFRLFFBZ0NuQjtBQThERDs7Ozs7R0FLRztBQUNILCtGQUErRjtBQUMvRixvREFBb0Q7QUFDcEQsa0ZBQWtGO0FBQ2xGLGlGQUFpRjtBQUNqRixtRUFBbUU7QUFDbkUsMkVBQTJFO0FBQzNFLHNFQUFzRTtBQUN0RSw0RUFBNEU7QUFDNUUsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQWtEO0lBQ2xGLGdCQUFnQjtJQUNoQixDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBTyxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsS0FBSyxFQUFPLEtBQUssRUFBRSxhQUFhLEVBQVksZUFBZSxFQUFFLE9BQU8sRUFBTyxJ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SyxRQUFRLENBQUMsZ0JBQWdCLENBQUM7QUFDNUMsQ0FBQztBQUNEOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBTSxVQUFVLGlCQUFpQixDQUFDLElBQWM7SUFDOUMsT0FBTyxJQUFJLEtBQUssUUFBUSxDQUFDLEtBQUssSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDbkYsQ0FBQztBQUVEO2dGQUNnRjtBQUNoRixNQUFNLFVBQVUsVUFBVSxDQUFDLElBQWM7SUFDdkMsT0FBTyxDQUNMLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQ3JHLENBQUM7QUFDSixDQUFDO0FBRUQsNkVBQTZFO0FBQzdFLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUF1QztJQUN6RSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtJQUMzQixFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtJQUN4QixFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtJQUN4QixFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtDQUN6QixDQUFDO0FBRUY7MEVBQzBFO0FBQzFFLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhlIGtpbmQgb2YgcmVuZGVyaW5nIGEgdmlld2VyIGJhY2tlbmQgc2hvdWxkIHByb2R1Y2UgZm9yIHRoZSBsb2FkZWQgZGF0YS5cbiAqXG4gKiBMaXZlcyBpbiBgY29udHJhY3RzL2AgKHJhdGhlciB0aGFuIGluc2lkZSBhIHNwZWNpZmljIGJhY2tlbmQpIGJlY2F1c2UgaXQgaXNcbiAqIHBhcnQgb2YgdGhlIGJhY2tlbmQtbmV1dHJhbCBwbG90dGluZyBjb250cmFjdDogYm90aCB0aGUgUGxvdGx5IGJhY2tlbmQgYW5kXG4gKiBhbnkgZnV0dXJlIGJhY2tlbmQgKGUuZy4gT3BlblNlYWRyYWdvbikgYWNjZXB0IGEgYFBsb3RUeXBlYCBvbiBgcGxvdCgpYC5cbiAqXG4gKiBOT1RFOiBhIGJhY2tlbmQgbWF5IG5vdCBzdXBwb3J0IGV2ZXJ5IHR5cGUg4oCUIDNEIHR5cGVzIChgU1VSRkFDRWAsXG4gKiBgU0NBVFRFUjNEYCwgYElTT1NVUkZBQ0VgKSBhcmUgZ2F0ZWQgYmVoaW5kIGBWaWV3ZXJGZWF0dXJlLlN1cmZhY2UzRGAgaW4gdGhlXG4gKiBjYXBhYmlsaXRpZXMgY29udHJhY3QsIHNvIGEgMkQtb25seSBiYWNrZW5kIGNhbiBhZHZlcnRpc2UgdGhhdCBpdCBjYW4ndFxuICogcmVuZGVyIHRoZW0gYW5kIHRoZSBVSSBjYW4gaGlkZSB0aGUgb3B0aW9uLlxuICovXG5leHBvcnQgZW51bSBQbG90VHlwZSB7XG4gIC8qKiBOYXRpdmVseS10aWxlZCwgem9vbWFibGUgcmFzdGVyIHJlbmRlcmVkIGJ5IE9wZW5TZWFkcmFnb24gKHRoZSBkZWZhdWx0XG4gICAqICB2aWV3IGZvciBhbiBpbWFnZSkuIEhlYXRtYXAgcmVtYWlucyB0aGUgUGxvdGx5IHNjYWxhci1pbWFnZSByZW5kZXJpbmcuICovXG4gIElNQUdFID0gJ2ltYWdlJyxcbiAgSEVBVE1BUCA9ICdoZWF0bWFwJyxcbiAgU1VSRkFDRSA9ICdzdXJmYWNlJyxcbiAgQ09OVE9VUiA9ICdjb250b3VyJyxcbiAgU0NBVFRFUiA9ICdzY2F0dGVyJyxcbiAgLy8gTElORTogcmVzZXJ2ZWQvc3R1YmJlZCDigJQgaW50ZW5zaXR5IHByb2ZpbGVzIGFyZSBub3cgUmVnaW9uLWJhc2VkIChrZXB0IGZvciBmdXR1cmUgdXNlKVxuICBMSU5FID0gJ2xpbmUnLFxuICBTQ0FUVEVSM0QgPSAnc2NhdHRlcjNkJyxcbiAgSVNPU1VSRkFDRSA9ICdpc29zdXJmYWNlJyxcbiAgLyoqIFdlYkdQVSBuYXBhcmktanMgcmVuZGVyaW5ncyAoaml0LXVpIzEwMiksIHNlbGVjdGFibGUgYWxvbmdzaWRlIHRoZSBPU0QvUGxvdGx5IHR5cGVzLiBUaGUgM0RcbiAgICogIHR5cGVzIHRha2UgYSBydW50aW1lIGRlY2ltYXRlIGZhY3RvciAoRnVsbCAvIMK9IC8gwrwgLyDihZspIGluc3RlYWQgb2YgZml4ZWQgaGkvbG8tcmVzIHZhcmlhbnRzLiAqL1xuICBOQVBBUklfSU1BR0UgPSAnbmFwYXJpLWltYWdlJyxcbiAgTkFQQVJJX1ZPTFVNRSA9ICduYXBhcmktdm9sdW1lJyxcbiAgTkFQQVJJX0lTT1NVUkZBQ0UgPSAnbmFwYXJpLWlzb3N1cmZhY2UnLFxuICAvKiogV2ViR1BVIGhlaWdodC1maWVsZCBzdXJmYWNlIG1lc2ggKHogPSBpbnRlbnNpdHkpLCB0aGUgbmFwYXJpLWpzIGFuYWxvZyBvZiBQbG90bHkgU1VSRkFDRS4gKi9cbiAgTkFQQVJJX1NVUkZBQ0UgPSAnbmFwYXJpLXN1cmZhY2UnLFxuICAvKiogV2ViR1BVIDJEIHNjYXR0ZXIgb2YgcmVnaW9uIGNlbnRyb2lkcyAobmFwYXJpLWpzIGFuYWxvZyBvZiBQbG90bHkgU0NBVFRFUikuICovXG4gIE5BUEFSSV9TQ0FUVEVSID0gJ25hcGFyaS1zY2F0dGVyJyxcbiAgLyoqIFdlYkdQVSAzRCBzY2F0dGVyIG9mIHRoZSBkb3duc2FtcGxlZCB2b3hlbCBjbG91ZCAobmFwYXJpLWpzIGFuYWxvZyBvZiBQbG90bHkgU0NBVFRFUjNEKS4gKi9cbiAgTkFQQVJJX1NDQVRURVIzRCA9ICduYXBhcmktc2NhdHRlcjNkJyxcbiAgLyoqIFNwYXRpYWwtb21pY3Mgb2JzZXJ2YXRpb25zIChWaXNpdW0gc3BvdHMsIHNlZ21lbnRlZCBjZWxscykgZHJhd24gb3ZlciB0aGUgdGlzc3VlIGltYWdlIGFuZFxuICAgKiAgY29sb3VyZWQgYnkgYW4gYW5ub3RhdGlvbiBjb2x1bW4gb3IgYSBnZW5lLiBOZWVkcyBhIGBTcGF0aWFsRGF0YXNldGAgb24gYFNQQVRJQUxfREFUQV9QT1JUYCxcbiAgICogIHNvIGl0IGlzIGdhdGVkIGJ5IGByZXF1aXJlc1NwYXRpYWxEYXRhYCBhbmQgbmV2ZXIgYXBwZWFycyBmb3IgYW4gaW1hZ2Utb25seSBob3N0LiAqL1xuICBTUEFUSUFMX09NSUNTID0gJ3NwYXRpYWwtb21pY3MnLFxuICAvKiogU3BhdGlhbC1vbWljcyBvYnNlcnZhdGlvbnMgYXMgYSAzRCBwb2ludCBjbG91ZCwgZm9yIGFzc2F5cyB3aG9zZSBvYnNlcnZhdGlvbnMgY2FycnkgYSB6IOKAlFxuICAgKiAgc2VyaWFsIHNlY3Rpb25zIHJlZ2lzdGVyZWQgaW50byBhIGNvbW1vbiBmcmFtZSAoZS5nLiB0aGUgQWxsZW4gQ0NGKSwgb3IgYSBnZW51aW5lbHlcbiAgICogIHZvbHVtZXRyaWMgYXNzYXkuIEdhdGVkIGJ5IGByZXF1aXJlc1NwYXRpYWwzZGAsIGEgc3RyaWN0bHkgbmFycm93ZXIgZ2F0ZSB0aGFuXG4gICAqICB7QGxpbmsgU1BBVElBTF9PTUlDU306IGEgc2luZ2xlLXBsYW5lIGRhdGFzZXQgaGFzIG5vIHogdG8gcmVuZGVyLiAqL1xuICBTUEFUSUFMX09NSUNTXzNEID0gJ3NwYXRpYWwtb21pY3MtM2QnLFxufVxuXG4vKiogSG93IG1hbnkgc3BhdGlhbCBkaW1lbnNpb25zIGEgcGxvdCB0eXBlIHJlbmRlcnMgaW4uICovXG5leHBvcnQgdHlwZSBQbG90RGltZW5zaW9ucyA9ICcyZCcgfCAnM2QnO1xuXG4vKipcbiAqIFdoZXJlIGEgcGxvdCB0eXBlIHB1bGxzIGl0cyBkYXRhIGZyb206XG4gKiAgLSBgaW1hZ2VgICAg4oCUIHRoZSBsb2FkZWQgcGl4ZWwgbWF0cmljZXMgLyB6LXN0YWNrIChIRUFUTUFQLCBTVVJGQUNFLCDigKYpXG4gKiAgLSBgcmVnaW9uc2Ag4oCUIHRoZSBkcmF3bi9kZXJpdmVkIHJlZ2lvbnMgKFNDQVRURVIgb2YgcmVnaW9uIGNlbnRyb2lkcywg4oCmKVxuICogIC0gYHNwYXRpYWxgIOKAlCBhIGBTcGF0aWFsRGF0YXNldGAgc3VwcGxpZWQgdGhyb3VnaCBgU1BBVElBTF9EQVRBX1BPUlRgOiBOXG4gKiAgICBvYnNlcnZhdGlvbnMgKHNwb3RzL2NlbGxzKSB3aXRoIGNhdGVnb3JpY2FsICsgY29udGludW91cyBjb2x1bW5zIGFuZCBhXG4gKiAgICBsYXppbHktZmV0Y2hlZCBmZWF0dXJlIG1hdHJpeCwgZHJhd24gb3ZlciB0aGUgdGlzc3VlIGltYWdlIHRoZXkgY2FtZSBmcm9tLlxuICovXG5leHBvcnQgdHlwZSBQbG90RGF0YVNvdXJjZSA9ICdpbWFnZScgfCAncmVnaW9ucycgfCAnc3BhdGlhbCc7XG5cbi8qKlxuICogQmFja2VuZC1uZXV0cmFsIG1ldGFkYXRhIGFib3V0IGEgcGxvdCB0eXBlLiBEcml2ZXMgVUkgYWZmb3JkYW5jZXMgKHdoaWNoXG4gKiB0eXBlcyBhcmUgM0QsIHdoaWNoIG5lZWQgYW4gaW1hZ2Ugc3RhY2ssIGhvdyB0byBsYWJlbCB0aGVtIGluIGEgZHJvcGRvd24pXG4gKiB3aXRob3V0IGFueSBiYWNrZW5kJ3MgdHJhY2UtYnVpbGRpbmcgbG9naWMgbGVha2luZyBpbnRvIHRoZSBjb250cmFjdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbG90VHlwZURlc2NyaXB0b3Ige1xuICB0eXBlOiBQbG90VHlwZTtcbiAgLyoqIEh1bWFuLXJlYWRhYmxlIGxhYmVsIGZvciBtZW51cy9kcm9wZG93bnMuIFNob3duIGluICoqdGVzdCBtb2RlKiosIHdoZXJlXG4gICAqICBldmVyeSBiYWNrZW5kJ3MgdHlwZSBpcyBvZmZlcmVkLCBzbyBpdCBjYXJyaWVzIHRoZSBiYWNrZW5kIHN1ZmZpeCAoZS5nLlxuICAgKiAgXCJTdXJmYWNlIChuYXBhcmkgwrcgV2ViR1BVKVwiKSB0byBkaXNhbWJpZ3VhdGUgc2FtZS1uYW1lZCBtb2Rlcy4gKi9cbiAgbGFiZWw6IHN0cmluZztcbiAgLyoqXG4gICAqIExhYmVsIHNob3duIGluIHRoZSAqKmRlZmF1bHQgKG5vbi10ZXN0KSBzZWxlY3RvcioqLCB3aGVyZSBhIHNpbmdsZSBjdXJhdGVkXG4gICAqIG1vZGUgb3ducyBlYWNoIG5hbWUg4oCUIHNvIGl0IGRyb3BzIHRoZSBiYWNrZW5kIHN1ZmZpeCAoZS5nLiBqdXN0IFwiU3VyZmFjZVwiKS5cbiAgICogQSB0eXBlIFdJVEhPVVQgYSBgcHJvZHVjdGlvbkxhYmVsYCBpcyAqKnRlc3Qtb25seSoqOiBoaWRkZW4gZnJvbSB0aGUgZGVmYXVsdFxuICAgKiBzZWxlY3RvciBhbmQgc2hvd24gb25seSB3aGVuIHRoZSBob3N0IGVuYWJsZXMgdGVzdCBtb2RlLiBUaGlzIGlzIHRoZSBzaW5nbGVcbiAgICoga25vYiB0aGF0IGN1cmF0ZXMgdGhlIGRlZmF1bHQgcGxvdC1tb2RlIGxpc3QgKGpheC1pbWFnZS12aXN1YWxpemF0aW9uKS5cbiAgICovXG4gIHByb2R1Y3Rpb25MYWJlbD86IHN0cmluZztcbiAgLyoqXG4gICAqIEljb24gc2hvd24gdG8gdGhlIGxlZnQgb2YgdGhlIGxhYmVsIGluIHRoZSBwbG90LXR5cGUgc2VsZWN0b3IuIEVpdGhlciBhXG4gICAqIFByaW1lTkcgaWNvbiBjbGFzcyAoc3RhcnRzIHdpdGggYHBpIGAsIGUuZy4gYHBpIHBpLWltYWdlYCkgcmVuZGVyZWQgYXMgYVxuICAgKiBmb250IGdseXBoLCBvciBhIHNlcnZlZCBTVkcgYXNzZXQgcGF0aCAoZS5nLiBgYXNzZXRzL3Bsb3R0aW5nL3N1cmZhY2Uuc3ZnYClcbiAgICogcmVuZGVyZWQgYXMgYW4gYDxpbWc+YC4gQm90aCBhcmUgdGludGVkIHRvIHRoZSB0b29sYmFyJ3MgcHJpbWFyeSBibHVlLlxuICAgKi9cbiAgaWNvbj86IHN0cmluZztcbiAgZGltZW5zaW9uczogUGxvdERpbWVuc2lvbnM7XG4gIHNvdXJjZTogUGxvdERhdGFTb3VyY2U7XG4gIC8qKiBUcnVlIHdoZW4gdGhlIHR5cGUgb25seSBtYWtlcyBzZW5zZSBvdmVyIGEgbXVsdGktZnJhbWUgei1zdGFjay4gKi9cbiAgcmVxdWlyZXNTdGFjaz86IGJvb2xlYW47XG4gIC8qKiBUcnVlIHdoZW4gdGhlIHR5cGUgbWFwcyBhIHNpbmdsZSBzY2FsYXIgaW50ZW5zaXR5IHBlciBwaXhlbCAoY29udG91cixcbiAgICogIHN1cmZhY2UsIGludGVuc2l0eSBwcm9maWxlLCBpc29zdXJmYWNlKSDigJQgb25seSBtZWFuaW5nZnVsIGZvciBncmF5c2NhbGUuXG4gICAqICBJbWFnZS9IZWF0bWFwIHJlbmRlciBSR0IgZmluZTsgU2NhdHRlciB1c2VzIHJlZ2lvbnMuICovXG4gIHJlcXVpcmVzR3JheXNjYWxlPzogYm9vbGVhbjtcbiAgLyoqIFRydWUgd2hlbiB0aGUgdHlwZSByZW5kZXJzIGEgYFNwYXRpYWxEYXRhc2V0YCAoYHNvdXJjZTogJ3NwYXRpYWwnYCkgYW5kIGlzXG4gICAqICB0aGVyZWZvcmUgbWVhbmluZ2xlc3Mgd2l0aG91dCBvbmUuIFRoZSBzZWxlY3RvciBoaWRlcyBpdCB1bnRpbCBhIGRhdGFzZXQgaXNcbiAgICogIHB1Ymxpc2hlZCBvbiBgU1BBVElBTF9EQVRBX1BPUlRgIOKAlCB0aGUgc2FtZSBzaGFwZSBvZiBnYXRlIGFzXG4gICAqICB7QGxpbmsgcmVxdWlyZXNTdGFja30gZm9yIGEgei1zdGFjaywgc28gYSBob3N0IHdpdGggbm8gc3BhdGlhbCBkYXRhIG5ldmVyXG4gICAqICBzZWVzIHRoZSBtb2RlLiAqL1xuICByZXF1aXJlc1NwYXRpYWxEYXRhPzogYm9vbGVhbjtcbiAgLyoqIFRydWUgd2hlbiB0aGUgdHlwZSBuZWVkcyBvYnNlcnZhdGlvbnMgd2l0aCBhIHogY29vcmRpbmF0ZSwgbm90IG1lcmVseSBhXG4gICAqICBgU3BhdGlhbERhdGFzZXRgLiBOYXJyb3dlciB0aGFuIHtAbGluayByZXF1aXJlc1NwYXRpYWxEYXRhfTogbW9zdCBzcGF0aWFsXG4gICAqICBhc3NheXMgYXJlIGEgc2luZ2xlIHBsYW5lLCBzbyB0aGlzIGhpZGVzIHRoZSAzRCBtb2RlIHVubGVzcyB0aGUgcHVibGlzaGVkXG4gICAqICBkYXRhc2V0IGFjdHVhbGx5IGNhcnJpZXMgYG9ic2VydmF0aW9ucy56YC4gKi9cbiAgcmVxdWlyZXNTcGF0aWFsM2Q/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFNpbmdsZSBzb3VyY2Ugb2YgdHJ1dGggZm9yIHBsb3QtdHlwZSBtZXRhZGF0YS4gTElORSBpcyBpbnRlbnRpb25hbGx5IGFic2VudCDigJRcbiAqIGludGVuc2l0eSBwcm9maWxlcyBhcmUgbm93IFJlZ2lvbi1iYXNlZCBsaW5lIFJPSXMgKGF2YWlsYWJsZSBpbiBIZWF0bWFwL0ltYWdlXG4gKiBtb2RlKSwgc28gTElORSBpcyBubyBsb25nZXIgb2ZmZXJlZCBpbiB0aGUgc2VsZWN0b3IgKHRoZSBlbnVtIG1lbWJlciBpcyBrZXB0XG4gKiBmb3IgZnV0dXJlIHVzZSkuIEhlbmNlIHRoZSBgUGFydGlhbGAgcmVjb3JkLlxuICovXG4vLyBEcm9wZG93biBvcmRlciA9IGluc2VydGlvbiBvcmRlcjogSW1hZ2UgKE9TRCkgZGVmYXVsdCBhdCB0aGUgdG9wLCB0aGVuIGFsbCBQbG90bHkgcGxvdCBtb2Rlc1xuLy8gZ3JvdXBlZCwgdGhlbiBhbGwgbmFwYXJpLWpzIFdlYkdQVSBtb2RlcyBncm91cGVkLlxuLy8gYHByb2R1Y3Rpb25MYWJlbGAgbWFya3MgdGhlIGN1cmF0ZWQgZGVmYXVsdC1zZWxlY3RvciBzZXQgKGppdC11aSM3MCBmb2xsb3ctdXApOlxuLy8gIC0gSU1BR0UgLyBIRUFUTUFQIC8gQ09OVE9VUiAoMkQpIGFuZCB0aGUgbmFwYXJpIFNVUkZBQ0UgLyBWT0xVTUUgLyBJU09TVVJGQUNFXG4vLyAgICAoM0QpIGFyZSB0aGUgbW9kZXMgc2hvd24gYnkgZGVmYXVsdCwgdW5kZXIgc3VmZml4LWZyZWUgbmFtZXMuXG4vLyAgLSBFdmVyeXRoaW5nIGVsc2UgKGFsbCBTY2F0dGVycywgTkFQQVJJX0lNQUdFLCBhbmQgdGhlIFBsb3RseSBTVVJGQUNFIC9cbi8vICAgIElTT1NVUkZBQ0UgdGhhdCB0aGUgbmFwYXJpIHZlcnNpb25zIHN1cGVyc2VkZSkgaXMgdGVzdC1vbmx5IOKAlCBub1xuLy8gICAgYHByb2R1Y3Rpb25MYWJlbGAsIHNvIGl0IGFwcGVhcnMgb25seSB3aGVuIHRoZSBob3N0IGVuYWJsZXMgdGVzdCBtb2RlLlxuZXhwb3J0IGNvbnN0IFBMT1RfVFlQRV9ERVNDUklQVE9SUzogUGFydGlhbDxSZWNvcmQ8UGxvdFR5cGUsIFBsb3RUeXBlRGVzY3JpcHRvcj4+ID0ge1xuICAvLyDilIDilIAgRGVmYXVsdCDilIDilIBcbiAgW1Bsb3RUeXBlLklNQUdFXTogICAgICB7IHR5cGU6IFBsb3RUeXBlLklNQUdFLCAgICAgIGxhYmVsOiAnSW1hZ2UgKE9TRCknLCAgICAgICAgICAgcHJvZHVjdGlvbkxhYmVsOiAnSW1hZ2UnLCAgICAgIGljb246ICdwaSBwaS1pbWFnZScsICAgICAgICAgICAgICAgICAgICBkaW1lbnNpb25zOiAnMmQnLCBzb3VyY2U6ICdpbWFnZScgfSxcbiAgLy8g4pSA4pSAIFBsb3RseSDilIDilIBcbiAgW1Bsb3RUeXBlLkhFQVRNQVBdOiAgICB7IHR5cGU6IFBsb3RUeXBlLkhFQVRNQVAsICAgIGxhYmVsOiAnSGVhdG1hcCAoUGxvdGx5KScsICAgICAgcHJvZHVjdGlvbkxhYmVsOiAnSGVhdG1hcCcsICAgIGljb246ICdhc3NldHMvcGxvdHRpbmcvaGVhdG1hcC5zdmcnLCAgICBkaW1lbnNpb25zOiAnMmQnLCBzb3VyY2U6ICdpbWFnZScgfSxcbiAgW1Bsb3RUeXBlLkNPTlRPVVJdOiAgICB7IHR5cGU6IFBsb3RUeXBlLkNPTlRPVVIsICAgIGxhYmVsOiAnQ29udG91ciAoUGxvdGx5KScsICAgICAgcHJvZHVjdGlvbkxhYmVsOiAnQ29udG91cicsICAgIGljb246ICdhc3NldHMvcGxvdHRpbmcvY29udG91ci5zdmcnLCAgICBkaW1lbnNpb25zOiAnMmQnLCBzb3VyY2U6ICdpbWFnZScsIHJlcXVpcmVzR3JheXNjYWxlOiB0cnVlIH0sXG4gIFtQbG90VHlwZS5TQ0FUVEVSXTogICAgeyB0eXBlOiBQbG90VHlwZS5TQ0FUVEVSLCAgICBsYWJlbDogJ1NjYXR0ZXIgMkQgKFBsb3RseSknLCAgIGljb246ICdwaSBwaS1jaGFydC1zY2F0dGVyJywgICAgICAgICAgICBkaW1lbnNpb25zOiAnMmQnLCBzb3VyY2U6ICdyZWdpb25zJyB9LFxuICBbUGxvdFR5cGUuU1VSRkFDRV06ICAgIHsgdHlwZTogUGxvdFR5cGUuU1VSRkFDRSwgICAgbGFiZWw6ICdTdXJmYWNlIChQbG90bHkpJywgICAgICBpY29uOiAnYXNzZXRzL3Bsb3R0aW5nL3N1cmZhY2Uuc3ZnJywgICAgZGltZW5zaW9uczogJzNkJywgc291cmNlOiAnaW1hZ2UnLCByZXF1aXJlc0dyYXlzY2FsZTogdHJ1ZSB9LFxuICBbUGxvdFR5cGUuU0NBVFRFUjNEXTogIHsgdHlwZTogUGxvdFR5cGUuU0NBVFRFUjNELCAgbGFiZWw6ICdTY2F0dGVyIDNEIChQbG90bHkpJywgICBpY29uOiAnYXNzZXRzL3Bsb3R0aW5nLzNkLWNvb3JkaW5hdGVzLnN2ZycsIGRpbWVuc2lvbnM6ICczZCcsIHNvdXJjZTogJ2ltYWdlJywgcmVxdWlyZXNTdGFjazogdHJ1ZSwgcmVxdWlyZXNHcmF5c2NhbGU6IHRydWUgfSxcbiAgW1Bsb3RUeXBlLklTT1NVUkZBQ0VdOiB7IHR5cGU6IFBsb3RUeXBlLklTT1NVUkZBQ0UsIGxhYmVsOiAnSXNvc3VyZmFjZSAoUGxvdGx5KScsICAgaWNvbjogJ2Fzc2V0cy9wbG90dGluZy9pc29zdXJmYWNlLnN2ZycsIGRpbWVuc2lvbnM6ICczZCcsIHNvdXJjZTogJ2ltYWdlJywgcmVxdWlyZXNTdGFjazogdHJ1ZSwgcmVxdWlyZXNHcmF5c2NhbGU6IHRydWUgfSxcbiAgLy8g4pSA4pSAIG5hcGFyaS1qcyBXZWJHUFUgKGppdC11aSMxMDIpLiBUaGUgM0QgdHlwZXMgdGFrZSBhIHJ1bnRpbWUgZGVjaW1hdGUgZmFjdG9yLiDilIDilIBcbiAgW1Bsb3RUeXBlLk5BUEFSSV9JTUFHRV06ICAgICAgeyB0eXBlOiBQbG90VHlwZS5OQVBBUklfSU1BR0UsICAgICAgbGFiZWw6ICdJbWFnZSAobmFwYXJpIMK3IFdlYkdQVSknLCAgICAgIGljb246ICdwaSBwaS1pbWFnZScsICAgICAgICAgICAgICAgICAgICAgICAgZGltZW5zaW9uczogJzJkJywgc291cmNlOiAnaW1hZ2UnIH0sXG4gIFtQbG90VHlwZS5OQVBBUklfU0NBVFRFUl06ICAgIHsgdHlwZTogUGxvdFR5cGUuTkFQQVJJX1NDQVRURVIsICAgIGxhYmVsOiAnU2NhdHRlciAyRCAobmFwYXJpIMK3IFdlYkdQVSknLCBpY29uOiAncGkgcGktY2hhcnQtc2NhdHRlcicsICAgICAgICAgICAgICAgIGRpbWVuc2lvbnM6ICcyZCcsIHNvdXJjZTogJ3JlZ2lvbnMnIH0sXG4gIFtQbG90VHlwZS5OQVBBUklfU1VSRkFDRV06ICAgIHsgdHlwZTogUGxvdFR5cGUuTkFQQVJJX1NVUkZBQ0UsICAgIGxhYmVsOiAnU3VyZmFjZSAobmFwYXJpIMK3IFdlYkdQVSknLCAgICBwcm9kdWN0aW9uTGFiZWw6ICdTdXJmYWNlJywgICAgaWNvbjogJ2Fzc2V0cy9wbG90dGluZy9zdXJmYWNlLnN2ZycsICAgICAgICBkaW1lbnNpb25zOiAnM2QnLCBzb3VyY2U6ICdpbWFnZScgfSwgLy8gYSBoZWlnaHQtZmllbGQgaXMgej1pbnRlbnNpdHkgb2Ygb25lIHBsYW5lIOKAlCB3b3JrcyBmb3IgYW55IGdyYXlzY2FsZS9SR0IgaW1hZ2UgKFJHQuKGkmx1bWluYW5jZSksIG5vIHN0YWNrIG5lZWRlZFxuICBbUGxvdFR5cGUuTkFQQVJJX1NDQVRURVIzRF06ICB7IHR5cGU6IFBsb3RUeXBlLk5BUEFSSV9TQ0FUVEVSM0QsICBsYWJlbDogJ1NjYXR0ZXIgM0QgKG5hcGFyaSDCtyBXZWJHUFUpJywgaWNvbjogJ2Fzc2V0cy9wbG90dGluZy8zZC1jb29yZGluYXRlcy5zdmcnLCBkaW1lbnNpb25zOiAnM2QnLCBzb3VyY2U6ICdpbWFnZScsIHJlcXVpcmVzU3RhY2s6IHRydWUsIHJlcXVpcmVzR3JheXNjYWxlOiB0cnVlIH0sXG4gIFtQbG90VHlwZS5OQVBBUklfVk9MVU1FXTogICAgIHsgdHlwZTogUGxvdFR5cGUuTkFQQVJJX1ZPTFVNRSwgICAgIGxhYmVsOiAnVm9sdW1lIChuYXBhcmkgwrcgV2ViR1BVKScsICAgICBwcm9kdWN0aW9uTGFiZWw6ICdWb2x1bWUnLCAgICAgaWNvbjogJ2Fzc2V0cy9wbG90dGluZy9jdWJlLTNkLnN2ZycsICAgICAgICBkaW1lbnNpb25zOiAnM2QnLCBzb3VyY2U6ICdpbWFnZScsIHJlcXVpcmVzU3RhY2s6IHRydWUsIHJlcXVpcmVzR3JheXNjYWxlOiB0cnVlIH0sXG4gIFtQbG90VHlwZS5OQVBBUklfSVNPU1VSRkFDRV06IHsgdHlwZTogUGxvdFR5cGUuTkFQQVJJX0lTT1NVUkZBQ0UsIGxhYmVsOiAnSXNvc3VyZmFjZSAobmFwYXJpIMK3IFdlYkdQVSknLCBwcm9kdWN0aW9uTGFiZWw6ICdJc29zdXJmYWNlJywgaWNvbjogJ2Fzc2V0cy9wbG90dGluZy9pc29zdXJmYWNlLnN2ZycsICAgICBkaW1lbnNpb25zOiAnM2QnLCBzb3VyY2U6ICdpbWFnZScsIHJlcXVpcmVzU3RhY2s6IHRydWUsIHJlcXVpcmVzR3JheXNjYWxlOiB0cnVlIH0sXG4gIC8vIOKUgOKUgCBTcGF0aWFsIG9taWNzIOKUgOKUgFxuICBbUGxvdFR5cGUuU1BBVElBTF9PTUlDU106ICAgICB7IHR5cGU6IFBsb3RUeXBlLlNQQVRJQUxfT01JQ1MsICAgICBsYWJlbDogJ1NwYXRpYWwgb21pY3MgKG5hcGFyaSDCtyBXZWJHUFUpJywgcHJvZHVjdGlvbkxhYmVsOiAnU3BhdGlhbCBvbWljcycsIGljb246ICdhc3NldHMvcGxvdHRpbmcvc3BhdGlhbC1vbWljcy5zdmcnLCAgZGltZW5zaW9uczogJzJkJywgc291cmNlOiAnc3BhdGlhbCcsIHJlcXVpcmVzU3BhdGlhbERhdGE6IHRydWUgfSxcbiAgW1Bsb3RUeXBlLlNQQVRJQUxfT01JQ1NfM0RdOiAgeyB0eXBlOiBQbG90VHlwZS5TUEFUSUFMX09NSUNTXzNELCAgbGFiZWw6ICdTcGF0aWFsIG9taWNzIDNEIChuYXBhcmkgwrcgV2ViR1BVKScsIHByb2R1Y3Rpb25MYWJlbDogJ1NwYXRpYWwgb21pY3MgM0QnLCBpY29uOiAnYXNzZXRzL3Bsb3R0aW5nL3NwYXRpYWwtb21pY3MtM2Quc3ZnJywgZGltZW5zaW9uczogJzNkJywgc291cmNlOiAnc3BhdGlhbCcsIHJlcXVpcmVzU3BhdGlhbERhdGE6IHRydWUsIHJlcXVpcmVzU3BhdGlhbDNkOiB0cnVlIH0sXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGxvdFR5cGVEZXNjcmlwdG9yKHR5cGU6IFBsb3RUeXBlKTogUGxvdFR5cGVEZXNjcmlwdG9yIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIFBMT1RfVFlQRV9ERVNDUklQVE9SU1t0eXBlXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVGhyZWVEaW1lbnNpb25hbCh0eXBlOiBQbG90VHlwZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gUExPVF9UWVBFX0RFU0NSSVBUT1JTW3R5cGVdPy5kaW1lbnNpb25zID09PSAnM2QnO1xufVxuXG4vLyDilIDilIAgbmFwYXJpLWpzIDNEIHBsb3QtdHlwZSBwcmVkaWNhdGVzIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuLyoqIG5hcGFyaS1qcyB2b2x1bWUuICovXG5leHBvcnQgZnVuY3Rpb24gaXNOYXBhcmlWb2x1bWUodHlwZTogUGxvdFR5cGUpOiBib29sZWFuIHtcbiAgcmV0dXJuIHR5cGUgPT09IFBsb3RUeXBlLk5BUEFSSV9WT0xVTUU7XG59XG4vKiogbmFwYXJpLWpzIGlzb3N1cmZhY2UuICovXG5leHBvcnQgZnVuY3Rpb24gaXNOYXBhcmlJc29zdXJmYWNlKHR5cGU6IFBsb3RUeXBlKTogYm9vbGVhbiB7XG4gIHJldHVybiB0eXBlID09PSBQbG90VHlwZS5OQVBBUklfSVNPU1VSRkFDRTtcbn1cbi8qKiBuYXBhcmktanMgaGVpZ2h0LWZpZWxkIHN1cmZhY2UgbWVzaC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc05hcGFyaVN1cmZhY2UodHlwZTogUGxvdFR5cGUpOiBib29sZWFuIHtcbiAgcmV0dXJuIHR5cGUgPT09IFBsb3RUeXBlLk5BUEFSSV9TVVJGQUNFO1xufVxuLyoqIG5hcGFyaS1qcyAyRCBzY2F0dGVyIChyZWdpb24gY2VudHJvaWRzKS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc05hcGFyaVNjYXR0ZXIodHlwZTogUGxvdFR5cGUpOiBib29sZWFuIHtcbiAgcmV0dXJuIHR5cGUgPT09IFBsb3RUeXBlLk5BUEFSSV9TQ0FUVEVSO1xufVxuLyoqIG5hcGFyaS1qcyAzRCBzY2F0dGVyICh2b3hlbCBwb2ludCBjbG91ZCkuICovXG5leHBvcnQgZnVuY3Rpb24gaXNOYXBhcmlTY2F0dGVyM2QodHlwZTogUGxvdFR5cGUpOiBib29sZWFuIHtcbiAgcmV0dXJuIHR5cGUgPT09IFBsb3RUeXBlLk5BUEFSSV9TQ0FUVEVSM0Q7XG59XG4vKiogU3BhdGlhbC1vbWljcyBvYnNlcnZhdGlvbnMgb3ZlciB0aGUgdGlzc3VlIGltYWdlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzU3BhdGlhbE9taWNzKHR5cGU6IFBsb3RUeXBlKTogYm9vbGVhbiB7XG4gIHJldHVybiB0eXBlID09PSBQbG90VHlwZS5TUEFUSUFMX09NSUNTO1xufVxuLyoqIFNwYXRpYWwtb21pY3Mgb2JzZXJ2YXRpb25zIGFzIGEgM0QgcG9pbnQgY2xvdWQuICovXG5leHBvcnQgZnVuY3Rpb24gaXNTcGF0aWFsT21pY3MzZCh0eXBlOiBQbG90VHlwZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gdHlwZSA9PT0gUGxvdFR5cGUuU1BBVElBTF9PTUlDU18zRDtcbn1cbi8qKlxuICogV2hldGhlciB0aGUgcmVuZGVyZXIsIHJhdGhlciB0aGFuIHRoZSBzaGVsbCwgc2hvdWxkIGhhbmRsZSB3aGVlbCB6b29tLlxuICpcbiAqIFRoZSBzaGVsbCdzIHdoZWVsIGxpc3RlbmVyIGFwcGxpZXMgYSBGSVhFRCBzdGVwIHBlciBldmVudCwgd2hpY2ggaXMgZmFyIHRvbyBzZW5zaXRpdmUgZm9yIGFcbiAqIHJlbmRlcmVyIHRoYXQgcmVhZHMgdGhlIHNjcm9sbCBkZWx0YTogaXQgd29ya3Mgb3V0IGF0IDMwJSBwZXIgZXZlbnQgYWdhaW5zdCBuYXBhcmktanMncyAzJSwgYW5kXG4gKiBpZ25vcmVzIHRoZSBkZXZpY2Ugbm9ybWFsaXphdGlvbiBhbmQgZWFzaW5nIHRoZSByZW5kZXJlciBkb2VzLiBTbyBldmVyeSBwbG90IHR5cGUgZHJhd24gYnkgYVxuICogcmVuZGVyZXIgdGhhdCBvd25zIHRoZSB3aGVlbCBoYXMgdG8gb3B0IG91dCBoZXJlLlxuICpcbiAqIFRoZSBpbWFnZSB2aWV3IGFsd2F5cyBkaWQuIFRoZSBzcGF0aWFsLW9taWNzIG1vZGVzIGRpZCBOT1QsIGRlc3BpdGUgYmVpbmcgZHJhd24gYnkgdGhlIHNhbWVcbiAqIG5hcGFyaS1qcyB2aWV3ZXIg4oCUIHRoZSBzaGVsbCBnYXRlZCBvbiBhbiBgaXNIZWF0bWFwYCBmbGFnIHRoYXQgZGVmYXVsdHMgdG8gdHJ1ZSBhbmQgb25seSBnb2VzXG4gKiBmYWxzZSBmb3IgdGhlIDNEIFBsb3RseSBzY2VuZXMsIHNvIGl0IHNpbGVudGx5IHRvb2sgdGhlIHdoZWVsIGZvciB0aGVtIHRvby5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlcmVyT3duc1doZWVsKHR5cGU6IFBsb3RUeXBlKTogYm9vbGVhbiB7XG4gIHJldHVybiB0eXBlID09PSBQbG90VHlwZS5JTUFHRSB8fCBpc1NwYXRpYWxPbWljcyh0eXBlKSB8fCBpc1NwYXRpYWxPbWljczNkKHR5cGUpO1xufVxuXG4vKiogQW55IG5hcGFyaS1qcyAzRCBwbG90IHR5cGUgKHZvbHVtZSwgaXNvc3VyZmFjZSwgc3VyZmFjZSwgb3IgM0Qgc2NhdHRlcikuIFJlc29sdXRpb24gaXMgYSBydW50aW1lXG4gKiAgZGVjaW1hdGUgZmFjdG9yIChGdWxsIC8gwr0gLyDCvCAvIOKFmykg4oCUIHNlZSB0aGUgc2VydmljZSdzIGByZXNvbHV0aW9uU2NhbGVgLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTmFwYXJpM2QodHlwZTogUGxvdFR5cGUpOiBib29sZWFuIHtcbiAgcmV0dXJuIChcbiAgICBpc05hcGFyaVZvbHVtZSh0eXBlKSB8fCBpc05hcGFyaUlzb3N1cmZhY2UodHlwZSkgfHwgaXNOYXBhcmlTdXJmYWNlKHR5cGUpIHx8IGlzTmFwYXJpU2NhdHRlcjNkKHR5cGUpXG4gICk7XG59XG5cbi8qKiBEZWNpbWF0ZSBmYWN0b3JzIG9mZmVyZWQgYnkgdGhlIFJlc29sdXRpb24gY29udHJvbCAoMSA9IEZ1bGwg4oCmIDggPSDihZspLiAqL1xuZXhwb3J0IGNvbnN0IE5BUEFSSV9ERUNJTUFURV9PUFRJT05TOiB7IGxhYmVsOiBzdHJpbmc7IHZhbHVlOiBudW1iZXIgfVtdID0gW1xuICB7IGxhYmVsOiAnRnVsbCcsIHZhbHVlOiAxIH0sXG4gIHsgbGFiZWw6ICfCvScsIHZhbHVlOiAyIH0sXG4gIHsgbGFiZWw6ICfCvCcsIHZhbHVlOiA0IH0sXG4gIHsgbGFiZWw6ICfihZsnLCB2YWx1ZTogOCB9LFxuXTtcblxuLyoqIERlZmF1bHQgZGVjaW1hdGUgZmFjdG9yOiDCvC4gVGhlIGNhcHMgYXJlIHNldCBzbyDCvCBpcyBhIHNlbnNpYmxlIGRlZmF1bHQgcmVzb2x1dGlvbiB3aGlsZSDCvSBhbmRcbiAqICBGdWxsIG9mZmVyIDLDlyBhbmQgNMOXIHRoZSBkZXRhaWwgZm9yIG9wdC1pbiBoaWdoLXJlc29sdXRpb24gcmVuZGVycy4gKi9cbmV4cG9ydCBjb25zdCBOQVBBUklfREVGQVVMVF9ERUNJTUFURSA9IDQ7XG4iXX0=
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { InjectionToken } from '@angular/core';
|
|
2
|
+
export const SPATIAL_DATA_PORT = new InjectionToken('SPATIAL_DATA_PORT');
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BhdGlhbC1kYXRhLnBvcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbnRyYWN0cy9wb3J0cy9zcGF0aWFsLWRhdGEucG9ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBa0cvQyxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLGNBQWMsQ0FBa0IsbUJBQW1CLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7XG4gIFNwYXRpYWxDb2x1bW4sIFNwYXRpYWxEYXRhc2V0LCBTcGF0aWFsRW1iZWRkaW5nLCBTcGF0aWFsUG9seWdvbnMsXG59IGZyb20gJy4uL3NwYXRpYWwtZGF0YXNldC5jb250cmFjdCc7XG5cbi8qKlxuICogU3BhdGlhbC1vbWljcyBkYXRhIGFjY2VzcywgaW52ZXJ0ZWQgYXMgYSBwb3J0IHNvIHRoZSB2aXN1YWxpemF0aW9uIGxpYnJhcnlcbiAqIG5ldmVyIGxlYXJucyBob3cgdGhlIGRhdGEgaXMgc3RvcmVkIG9yIHNlcnZlZCDigJQgZXhhY3RseSBsaWtlXG4gKiBgVElMRV9BQ0NFU1NfUE9SVGAgZm9yIHRpbGVzIGFuZCBgUkVHSU9OX0lPX1BPUlRgIGZvciBhbm5vdGF0aW9ucy4gVGhlIGhvc3RcbiAqIHN1cHBsaWVzIGFuIGFkYXB0ZXI7IHRoZSBsaWJyYXJ5IGNvbnN1bWVzIHR5cGVkIGFycmF5cy5cbiAqXG4gKiBXSFkgQSBQT1JUIEFORCBOT1QgQSBSRUFERVJcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogVGhlIGludGVyY2hhbmdlIGZvcm1hdCBmb3IgdGhpcyBkYXRhIChTcGF0aWFsRGF0YSBaYXJyIHYzICsgQW5uRGF0YVxuICogY29udmVudGlvbnMgKyBHZW9QYXJxdWV0IHNoYXBlcykgbmVlZHMgdGhyZWUgcGFyc2VycywgYW5kIGl0cyBleHByZXNzaW9uXG4gKiBtYXRyaXggaXMgc3RvcmVkIG9ic2VydmF0aW9uLW1ham9yIOKAlCBzbyByZWFkaW5nIGEgc2luZ2xlIGdlbmUncyBjb2x1bW4gbWVhbnNcbiAqIHRvdWNoaW5nIGV2ZXJ5IHJvdy4gQSBzZXJ2ZXIgY2FuIHByZS1pbmRleCB0aGF0IG9uY2U7IGEgYnJvd3NlciBjYW5ub3QuIFNvXG4gKiB0aGUgbGlicmFyeSB0YWtlcyB2ZWN0b3JzIGl0IGNhbiByZW5kZXIgYW5kIGxlYXZlcyBpbmdlc3QgdG8gd2hvZXZlciBvd25zIHRoZVxuICogZGF0YS4gYFNwYXRpYWxEYXRhSHR0cFNlcnZpY2VgIGlzIGEgcmVhZHktbWFkZSBhZGFwdGVyIGZvciB0aGUgd2lyZSBmb3JtYXRcbiAqIHRoZSBidW5kbGVkIGV4YW1wbGUgc2VydmVyIHNwZWFrczsgYSBob3N0IHdpdGggaXRzIG93biBiYWNrZW5kIGltcGxlbWVudHNcbiAqIHRoaXMgaW50ZXJmYWNlIGluc3RlYWQuXG4gKlxuICogTEFaSU5FU1MgSVMgVEhFIFBPSU5UXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIGBnZXREYXRhc2V0JCgpYCB5aWVsZHMgb25seSB3aGF0IGlzIGNoZWFwIHRvIGhvbGQ6IGNvb3JkaW5hdGVzIHBsdXMgY29sdW1uXG4gKiBhbmQgZmVhdHVyZSAqbWV0YWRhdGEqLiBFdmVyeSBhY2Nlc3NvciBiZWxvdyBmZXRjaGVzIG9uZSB2ZWN0b3IgYXQgYSB0aW1lLFxuICogZm9yIHRoZSBvbmUgY29sdW1uIG9yIGdlbmUgY3VycmVudGx5IGJlaW5nIGRpc3BsYXllZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTcGF0aWFsRGF0YVBvcnQge1xuICAvKipcbiAgICogVGhlIGRhdGFzZXQgY3VycmVudGx5IGJlaW5nIHZpc3VhbGl6ZWQsIG9yIG51bGwgd2hlbiBub25lIGlzIHNlbGVjdGVkLlxuICAgKiBFbWl0cyBhZ2FpbiB3aGVuIHRoZSBob3N0IHN3aXRjaGVzIGRhdGFzZXRzLCBzbyB0aGUgdmlldyBjYW4gcmVidWlsZC5cbiAgICovXG4gIGdldERhdGFzZXQkKCk6IE9ic2VydmFibGU8U3BhdGlhbERhdGFzZXQgfCBudWxsPjtcblxuICAvKipcbiAgICogVmFsdWVzIGZvciBvbmUgYW5ub3RhdGlvbiBjb2x1bW4sIGluZGV4LWFsaWduZWQgd2l0aCB0aGUgb2JzZXJ2YXRpb25zLlxuICAgKiBUaGUgY29sdW1uIG11c3QgYmUgb25lIGFkdmVydGlzZWQgaW4gYFNwYXRpYWxEYXRhc2V0LmNvbHVtbnNgOyByZWplY3RcbiAgICogKGRvbid0IHJlc29sdmUgZW1wdHkpIHdoZW4gaXQgaXNuJ3QsIHNvIGEgdHlwbyBzdXJmYWNlcyBpbnN0ZWFkIG9mXG4gICAqIHJlbmRlcmluZyBhcyBcIm5vIGRhdGFcIi5cbiAgICpcbiAgICogSW1wbGVtZW50YXRpb25zIHNob3VsZCBjYWNoZSDigJQgY29sb3VyaW5nIGJ5IGNsdXN0ZXIsIHRoZW4gYnkgYSBnZW5lLCB0aGVuXG4gICAqIGJhY2sgYnkgY2x1c3RlciBtdXN0IG5vdCByZWZldGNoLlxuICAgKi9cbiAgZ2V0Q29sdW1uKG5hbWU6IHN0cmluZyk6IFByb21pc2U8U3BhdGlhbENvbHVtbj47XG5cbiAgLyoqXG4gICAqIE9uZSBmZWF0dXJlJ3MgKGdlbmUncykgZXhwcmVzc2lvbiB2ZWN0b3IsIGluZGV4LWFsaWduZWQgd2l0aCB0aGVcbiAgICogb2JzZXJ2YXRpb25zLiBSZWplY3RzIGZvciBhbiB1bmtub3duIGZlYXR1cmUuXG4gICAqL1xuICBnZXRGZWF0dXJlVmVjdG9yKG5hbWU6IHN0cmluZyk6IFByb21pc2U8RmxvYXQzMkFycmF5PjtcblxuICAvKipcbiAgICogT25lIGVtYmVkZGluZydzIGNvb3JkaW5hdGVzLCBpbmRleC1hbGlnbmVkIHdpdGggdGhlIG9ic2VydmF0aW9ucy5cbiAgICpcbiAgICogVGhlIG5hbWUgbXVzdCBiZSBvbmUgYWR2ZXJ0aXNlZCBpbiBgU3BhdGlhbERhdGFzZXQuZW1iZWRkaW5nc2A7IHJlamVjdHMgb3RoZXJ3aXNlLCBmb3IgdGhlXG4gICAqIHNhbWUgcmVhc29uIGBnZXRDb2x1bW5gIGRvZXMg4oCUIGEgdHlwbyBzaG91bGQgc3VyZmFjZSByYXRoZXIgdGhhbiByZW5kZXIgYXMgYW4gZW1wdHkgcGxvdC5cbiAgICpcbiAgICogT3B0aW9uYWw6IGEgaG9zdCB3aXRoIG5vIGVtYmVkZGluZ3Mgc2ltcGx5IG9taXRzIGl0LCBhbmQgdGhlIFVJIG9mZmVycyBubyBlbWJlZGRpbmcgdmlld3MuXG4gICAqL1xuICBnZXRFbWJlZGRpbmc/KG5hbWU6IHN0cmluZyk6IFByb21pc2U8U3BhdGlhbEVtYmVkZGluZz47XG5cbiAgLyoqXG4gICAqIFR5cGVhaGVhZCBvdmVyIGZlYXR1cmUgbmFtZXMsIGZvciBkYXRhc2V0cyB0b28gd2lkZSB0byBpbmxpbmUgdGhlIGxpc3RcbiAgICogKGBTcGF0aWFsRmVhdHVyZU1ldGEubmFtZXNgIGFic2VudCkuIE9wdGlvbmFsOiBhIGhvc3Qgd2hvc2UgcGFuZWwgaXMgc21hbGxcbiAgICogZW5vdWdoIHRvIGlubGluZSBldmVyeSBuYW1lIG5lZWQgbm90IGltcGxlbWVudCBpdCDigJQgdGhlIFVJIGZhbGxzIGJhY2sgdG9cbiAgICogZmlsdGVyaW5nIGBuYW1lc2AgbG9jYWxseS5cbiAgICovXG4gIHNlYXJjaEZlYXR1cmVzPyhxdWVyeTogc3RyaW5nLCBsaW1pdD86IG51bWJlcik6IFByb21pc2U8c3RyaW5nW10+O1xuXG4gIC8qKlxuICAgKiBQZXItb2JzZXJ2YXRpb24gYm91bmRhcnkgZ2VvbWV0cnksIHdoZW4gdGhlIGRhdGFzZXQgYWR2ZXJ0aXNlc1xuICAgKiBgcG9seWdvbnNgLiBPcHRpb25hbCDigJQgYSBzcG90LWJhc2VkIGFzc2F5IChWaXNpdW0pIGhhcyBubyBzZWdtZW50YXRpb24uXG4gICAqL1xuICBnZXRQb2x5Z29ucz8oKTogUHJvbWlzZTxTcGF0aWFsUG9seWdvbnM+O1xuXG4gIC8qKlxuICAgKiBUaGUgcmVmZXJlbmNlIHZvbHVtZSdzIHZveGVsczogYSB1aW50OCBzY2FsYXIgZmllbGQsIHgtZmFzdGVzdCwgb2YgZXhhY3RseVxuICAgKiBgd2lkdGggKiBoZWlnaHQgKiBkZXB0aGAgYnl0ZXMgYXMgdGhlIGRhdGFzZXQncyB7QGxpbmsgU3BhdGlhbFZvbHVtZU1ldGF9XG4gICAqIGRlY2xhcmVzLlxuICAgKlxuICAgKiBPcHRpb25hbCwgYW5kIG9ubHkgbWVhbmluZ2Z1bCB3aGVuIHRoZSBkYXRhc2V0IGFkdmVydGlzZXMgYSB2b2x1bWUuIFNlcGFyYXRlXG4gICAqIGZyb20gYGdldERhdGFzZXQkKClgIGJlY2F1c2UgaXQgaXMgbWVnYWJ5dGVzOiBhIGhvc3QgdGhhdCBuZXZlciBvcGVucyB0aGUgM0RcbiAgICogbW9kZSBzaG91bGQgbmV2ZXIgcGF5IGZvciBpdC5cbiAgICovXG4gIGdldFZvbHVtZT8oKTogUHJvbWlzZTxVaW50OEFycmF5PjtcblxuICAvKipcbiAgICogU2VydmVyLXNpZGUgXCJ3aGljaCBvYnNlcnZhdGlvbnMgZmFsbCBpbnNpZGUgdGhpcyBwb2x5Z29uXCIsIGZvciBkYXRhc2V0c1xuICAgKiB0b28gbGFyZ2UgdG8gaGl0LXRlc3QgY2xpZW50LXNpZGUuIE9wdGlvbmFsOiB3aXRob3V0IGl0IHRoZSBsaWJyYXJ5XG4gICAqIHBvaW50LWluLXBvbHlnb25zIHRoZSByZXNpZGVudCBjb29yZGluYXRlcyBpdHNlbGYsIHdoaWNoIGlzIGZpbmUgaW50byB0aGVcbiAgICogMTBeNSByYW5nZS4gQ29vcmRpbmF0ZXMgYXJlIGluIHRoZSBzYW1lIHNwYWNlIGFzIHRoZSBvYnNlcnZhdGlvbnMuXG4gICAqL1xuICBxdWVyeVJvaT8ocG9seWdvbjogeyB4OiBudW1iZXJbXTsgeTogbnVtYmVyW10gfSk6IFByb21pc2U8VWludDMyQXJyYXk+O1xufVxuXG5leHBvcnQgY29uc3QgU1BBVElBTF9EQVRBX1BPUlQgPSBuZXcgSW5qZWN0aW9uVG9rZW48U3BhdGlhbERhdGFQb3J0PignU1BBVElBTF9EQVRBX1BPUlQnKTtcbiJdfQ==
|