@jax-data-science/sci-image-visualizer 0.2.19 → 0.3.1

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.
Files changed (35) hide show
  1. package/esm2022/index.mjs +2 -9
  2. package/esm2022/lib/contracts/instance-segmenter.contract.mjs +10 -10
  3. package/esm2022/lib/contracts/semantic-segmenter.contract.mjs +10 -9
  4. package/esm2022/lib/contracts/toolbar-tool.contract.mjs +64 -0
  5. package/esm2022/lib/toolbar/model-info.mjs +32 -0
  6. package/esm2022/lib/toolbar/toolbar.component.mjs +82 -55
  7. package/esm2022/lib/visualizer.component.mjs +131 -138
  8. package/fesm2022/{jax-data-science-sci-image-visualizer-onnx-sam-session-iPNL2JyC.mjs → jax-data-science-sci-image-visualizer-onnx-sam-session-ci1q0xnJ.mjs} +2 -2
  9. package/fesm2022/{jax-data-science-sci-image-visualizer-onnx-sam-session-iPNL2JyC.mjs.map → jax-data-science-sci-image-visualizer-onnx-sam-session-ci1q0xnJ.mjs.map} +1 -1
  10. package/fesm2022/jax-data-science-sci-image-visualizer.mjs +710 -1565
  11. package/fesm2022/jax-data-science-sci-image-visualizer.mjs.map +1 -1
  12. package/index.d.ts +1 -6
  13. package/lib/contracts/instance-segmenter.contract.d.ts +7 -3
  14. package/lib/contracts/semantic-segmenter.contract.d.ts +7 -2
  15. package/lib/contracts/toolbar-tool.contract.d.ts +190 -0
  16. package/lib/toolbar/model-info.d.ts +17 -0
  17. package/lib/toolbar/toolbar.component.d.ts +53 -30
  18. package/lib/visualizer.component.d.ts +49 -58
  19. package/package.json +3 -5
  20. package/src/lib/assets/cell-detection.svg +37 -0
  21. package/src/lib/assets/cells.svg +1 -1
  22. package/src/lib/assets/sam-box-prompt.svg +61 -0
  23. package/src/lib/assets/sam-point-prompt.svg +91 -0
  24. package/esm2022/lib/toolbar/segmentation/retinal-layer-tool.service.mjs +0 -197
  25. package/esm2022/lib/toolbar/segmentation/retinal-model-registry.mjs +0 -119
  26. package/esm2022/lib/toolbar/segmentation/retinal-segmenter.service.mjs +0 -172
  27. package/esm2022/lib/toolbar/segmentation/yolo-detect-tool.service.mjs +0 -208
  28. package/esm2022/lib/toolbar/segmentation/yolo-model-registry.mjs +0 -129
  29. package/esm2022/lib/toolbar/segmentation/yolo-segmenter.service.mjs +0 -172
  30. package/lib/toolbar/segmentation/retinal-layer-tool.service.d.ts +0 -49
  31. package/lib/toolbar/segmentation/retinal-model-registry.d.ts +0 -71
  32. package/lib/toolbar/segmentation/retinal-segmenter.service.d.ts +0 -60
  33. package/lib/toolbar/segmentation/yolo-detect-tool.service.d.ts +0 -51
  34. package/lib/toolbar/segmentation/yolo-model-registry.d.ts +0 -59
  35. package/lib/toolbar/segmentation/yolo-segmenter.service.d.ts +0 -50
package/esm2022/index.mjs CHANGED
@@ -17,6 +17,7 @@ export * from './lib/contracts/viz-config';
17
17
  export * from './lib/contracts/image.contract';
18
18
  export * from './lib/contracts/plot-type';
19
19
  export * from './lib/contracts/toolbar-config';
20
+ export * from './lib/contracts/toolbar-tool.contract';
20
21
  export * from './lib/contracts/capabilities.contract';
21
22
  export * from './lib/contracts/region-overlay.contract';
22
23
  export * from './lib/contracts/display-types';
@@ -24,21 +25,13 @@ export * from './lib/contracts/sam.contract';
24
25
  export * from './lib/contracts/cell-segmenter.contract';
25
26
  export { CellposeSegmenterService } from './lib/toolbar/segmentation/cellpose-segmenter.service';
26
27
  export * from './lib/contracts/instance-segmenter.contract';
27
- export { YoloSegmenterService } from './lib/toolbar/segmentation/yolo-segmenter.service';
28
- export { YoloDetectToolService, YOLO_REGION_SOURCE } from './lib/toolbar/segmentation/yolo-detect-tool.service';
29
28
  export * from './lib/contracts/semantic-segmenter.contract';
30
- export { RetinalSegmenterService } from './lib/toolbar/segmentation/retinal-segmenter.service';
31
- export { RetinalLayerToolService, RETINAL_REGION_SOURCE, } from './lib/toolbar/segmentation/retinal-layer-tool.service';
32
29
  // ── Generic client-side image utilities (shared with the host's pipeline) ──
33
30
  export { ProcessingImage } from './lib/processing/processing-image';
34
31
  export { cropImage } from './lib/processing/image-crop';
35
32
  export { ImageConverterService } from './lib/processing/image-converter.service';
36
33
  // ── SAM model registry (host configures hosted ONNX URLs once available) ──
37
34
  export { SAM_MODELS, DEFAULT_SAM_MODEL_ID, getSamModel, isSamModelReady, setSamModelUrls, setDefaultSamModel, getDefaultSamModelId, } from './lib/toolbar/segmentation/sam-model-registry';
38
- // ── YOLO instance-segmentation model registry (same repointing story) ─────
39
- export { YOLO_MODELS, DEFAULT_YOLO_MODEL_ID, getYoloModel, isYoloModelReady, setYoloModelUrls, setDefaultYoloModel, getDefaultYoloModelId, } from './lib/toolbar/segmentation/yolo-model-registry';
40
- // ── Retinal-layer semantic-segmentation registry (same repointing story) ──
41
- export { RETINAL_MODELS, DEFAULT_RETINAL_MODEL_ID, getRetinalModel, isRetinalModelReady, readyRetinalModels, setRetinalModelUrls, setDefaultRetinalModel, getDefaultRetinalModelId, } from './lib/toolbar/segmentation/retinal-model-registry';
42
35
  // ── onnxruntime-web WASM location (host overrides once, at app init) ───────
43
36
  export { setOrtWasmBase, getOrtWasmBase } from './lib/toolbar/segmentation/ort-runtime-config';
44
37
  // ── Neutral data models ──────────────────────────────────────────────────
@@ -59,4 +52,4 @@ export { VisualizerComponent } from './lib/visualizer.component';
59
52
  export { RegionEditorComponent } from './lib/region-editor/region-editor.component';
60
53
  export { HexColorPickerComponent } from './lib/hex-color-picker/hex-color-picker.component';
61
54
  export { ChannelHistogramComponent } from './lib/channel-histogram/channel-histogram.component';
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsNEVBQTRFO0FBQzVFLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsZ0RBQWdELENBQUM7QUFDL0QsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMseUNBQXlDLENBQUM7QUFDeEQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDakcsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUN6RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUNoSCxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBQy9GLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIscUJBQXFCLEdBQ3RCLE1BQU0sdURBQXVELENBQUM7QUFFL0QsOEVBQThFO0FBQzlFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsU0FBUyxFQUFvQixNQUFNLDZCQUE2QixDQUFDO0FBQzFFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBRWpGLDZFQUE2RTtBQUM3RSxPQUFPLEVBQ0wsVUFBVSxFQUFFLG9CQUFvQixFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUMvRSxrQkFBa0IsRUFBRSxvQkFBb0IsR0FDekMsTUFBTSwrQ0FBK0MsQ0FBQztBQUV2RCw2RUFBNkU7QUFDN0UsT0FBTyxFQUNMLFdBQVcsRUFBRSxxQkFBcUIsRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQ3BGLG1CQUFtQixFQUFFLHFCQUFxQixHQUMzQyxNQUFNLGdEQUFnRCxDQUFDO0FBRXhELDZFQUE2RTtBQUM3RSxPQUFPLEVBQ0wsY0FBYyxFQUFFLHdCQUF3QixFQUFFLGVBQWUsRUFBRSxtQkFBbUIsRUFDOUUsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQUUsc0JBQXNCLEVBQUUsd0JBQXdCLEdBRTFGLE1BQU0sbURBQW1ELENBQUM7QUFFM0QsOEVBQThFO0FBQzlFLE9BQU8sRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFFL0YsNEVBQTRFO0FBQzVFLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFcEQsNEVBQTRFO0FBQzVFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzVFLDZFQUE2RTtBQUM3RSxtRUFBbUU7QUFDbkUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFbkUsNkVBQTZFO0FBQzdFLDBFQUEwRTtBQUMxRSw4RUFBOEU7QUFDOUUsNkRBQTZEO0FBQzdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQzVGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBQdWJsaWMgQVBJIG9mIHRoZSBqYXgtaW1hZ2UtdmlzdWFsaXphdGlvbiBsaWJyYXJ5LiBFeHRlcm5hbCBjb25zdW1lcnMgaW1wb3J0XG4gKiBPTkxZIGZyb20gaGVyZSAoYEBqYXgtZGF0YS1zY2llbmNlL3NjaS1pbWFnZS12aXN1YWxpemVyYCk7IGV2ZXJ5dGhpbmcgZWxzZSB1bmRlciBgbGliL2AgaXNcbiAqIGludGVybmFsLiBUaGUgc3VyZmFjZSBpcyBjb250cmFjdHMgKyB0b2tlbnMgKyBuZXV0cmFsIG1vZGVscyArIHRoZSBBbmd1bGFyXG4gKiBtb2R1bGUsIHBsdXMgdGhlIHJvdXRpbmcgc2VydmljZSB0aGUgaG9zdCdzIGNvbXBvc2l0aW9uIHJvb3QgYmluZHMgdGhlIHRva2Vuc1xuICogdG8gKGB1c2VFeGlzdGluZ2ApLlxuICovXG5cbi8vIOKUgOKUgCBDb250cmFjdHMgJiBESSB0b2tlbnMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cmFjdHMvdmlzdWFsaXplci5jb250cmFjdCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cmFjdHMvcmVnaW9uLWVkaXRvci1hcGkuY29udHJhY3QnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJhY3RzL3BvcnRzL2ltYWdlLXN0YXRlLnBvcnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJhY3RzL3BvcnRzL3RpbGUtYWNjZXNzLnBvcnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJhY3RzL3BvcnRzL3JlZ2lvbi1pby5wb3J0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyYWN0cy9wb3J0cy9wcmVmZXJlbmNlcy5wb3J0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyYWN0cy9jaGFubmVsLWhpc3RvZ3JhbS1hcGkuY29udHJhY3QnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJhY3RzL3Zpei1jb25maWcnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJhY3RzL2ltYWdlLmNvbnRyYWN0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyYWN0cy9wbG90LXR5cGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJhY3RzL3Rvb2xiYXItY29uZmlnJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyYWN0cy9jYXBhYmlsaXRpZXMuY29udHJhY3QnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJhY3RzL3JlZ2lvbi1vdmVybGF5LmNvbnRyYWN0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyYWN0cy9kaXNwbGF5LXR5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyYWN0cy9zYW0uY29udHJhY3QnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJhY3RzL2NlbGwtc2VnbWVudGVyLmNvbnRyYWN0JztcbmV4cG9ydCB7IENlbGxwb3NlU2VnbWVudGVyU2VydmljZSB9IGZyb20gJy4vbGliL3Rvb2xiYXIvc2VnbWVudGF0aW9uL2NlbGxwb3NlLXNlZ21lbnRlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyYWN0cy9pbnN0YW5jZS1zZWdtZW50ZXIuY29udHJhY3QnO1xuZXhwb3J0IHsgWW9sb1NlZ21lbnRlclNlcnZpY2UgfSBmcm9tICcuL2xpYi90b29sYmFyL3NlZ21lbnRhdGlvbi95b2xvLXNlZ21lbnRlci5zZXJ2aWNlJztcbmV4cG9ydCB7IFlvbG9EZXRlY3RUb29sU2VydmljZSwgWU9MT19SRUdJT05fU09VUkNFIH0gZnJvbSAnLi9saWIvdG9vbGJhci9zZWdtZW50YXRpb24veW9sby1kZXRlY3QtdG9vbC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyYWN0cy9zZW1hbnRpYy1zZWdtZW50ZXIuY29udHJhY3QnO1xuZXhwb3J0IHsgUmV0aW5hbFNlZ21lbnRlclNlcnZpY2UgfSBmcm9tICcuL2xpYi90b29sYmFyL3NlZ21lbnRhdGlvbi9yZXRpbmFsLXNlZ21lbnRlci5zZXJ2aWNlJztcbmV4cG9ydCB7XG4gIFJldGluYWxMYXllclRvb2xTZXJ2aWNlLFxuICBSRVRJTkFMX1JFR0lPTl9TT1VSQ0UsXG59IGZyb20gJy4vbGliL3Rvb2xiYXIvc2VnbWVudGF0aW9uL3JldGluYWwtbGF5ZXItdG9vbC5zZXJ2aWNlJztcblxuLy8g4pSA4pSAIEdlbmVyaWMgY2xpZW50LXNpZGUgaW1hZ2UgdXRpbGl0aWVzIChzaGFyZWQgd2l0aCB0aGUgaG9zdCdzIHBpcGVsaW5lKSDilIDilIBcbmV4cG9ydCB7IFByb2Nlc3NpbmdJbWFnZSB9IGZyb20gJy4vbGliL3Byb2Nlc3NpbmcvcHJvY2Vzc2luZy1pbWFnZSc7XG5leHBvcnQgeyBjcm9wSW1hZ2UsIENyb3BJbWFnZU9wdGlvbnMgfSBmcm9tICcuL2xpYi9wcm9jZXNzaW5nL2ltYWdlLWNyb3AnO1xuZXhwb3J0IHsgSW1hZ2VDb252ZXJ0ZXJTZXJ2aWNlIH0gZnJvbSAnLi9saWIvcHJvY2Vzc2luZy9pbWFnZS1jb252ZXJ0ZXIuc2VydmljZSc7XG5cbi8vIOKUgOKUgCBTQU0gbW9kZWwgcmVnaXN0cnkgKGhvc3QgY29uZmlndXJlcyBob3N0ZWQgT05OWCBVUkxzIG9uY2UgYXZhaWxhYmxlKSDilIDilIBcbmV4cG9ydCB7XG4gIFNBTV9NT0RFTFMsIERFRkFVTFRfU0FNX01PREVMX0lELCBnZXRTYW1Nb2RlbCwgaXNTYW1Nb2RlbFJlYWR5LCBzZXRTYW1Nb2RlbFVybHMsXG4gIHNldERlZmF1bHRTYW1Nb2RlbCwgZ2V0RGVmYXVsdFNhbU1vZGVsSWQsXG59IGZyb20gJy4vbGliL3Rvb2xiYXIvc2VnbWVudGF0aW9uL3NhbS1tb2RlbC1yZWdpc3RyeSc7XG5cbi8vIOKUgOKUgCBZT0xPIGluc3RhbmNlLXNlZ21lbnRhdGlvbiBtb2RlbCByZWdpc3RyeSAoc2FtZSByZXBvaW50aW5nIHN0b3J5KSDilIDilIDilIDilIDilIBcbmV4cG9ydCB7XG4gIFlPTE9fTU9ERUxTLCBERUZBVUxUX1lPTE9fTU9ERUxfSUQsIGdldFlvbG9Nb2RlbCwgaXNZb2xvTW9kZWxSZWFkeSwgc2V0WW9sb01vZGVsVXJscyxcbiAgc2V0RGVmYXVsdFlvbG9Nb2RlbCwgZ2V0RGVmYXVsdFlvbG9Nb2RlbElkLCBZb2xvTW9kZWxEZWYsXG59IGZyb20gJy4vbGliL3Rvb2xiYXIvc2VnbWVudGF0aW9uL3lvbG8tbW9kZWwtcmVnaXN0cnknO1xuXG4vLyDilIDilIAgUmV0aW5hbC1sYXllciBzZW1hbnRpYy1zZWdtZW50YXRpb24gcmVnaXN0cnkgKHNhbWUgcmVwb2ludGluZyBzdG9yeSkg4pSA4pSAXG5leHBvcnQge1xuICBSRVRJTkFMX01PREVMUywgREVGQVVMVF9SRVRJTkFMX01PREVMX0lELCBnZXRSZXRpbmFsTW9kZWwsIGlzUmV0aW5hbE1vZGVsUmVhZHksXG4gIHJlYWR5UmV0aW5hbE1vZGVscywgc2V0UmV0aW5hbE1vZGVsVXJscywgc2V0RGVmYXVsdFJldGluYWxNb2RlbCwgZ2V0RGVmYXVsdFJldGluYWxNb2RlbElkLFxuICBSZXRpbmFsTW9kZWxEZWYsXG59IGZyb20gJy4vbGliL3Rvb2xiYXIvc2VnbWVudGF0aW9uL3JldGluYWwtbW9kZWwtcmVnaXN0cnknO1xuXG4vLyDilIDilIAgb25ueHJ1bnRpbWUtd2ViIFdBU00gbG9jYXRpb24gKGhvc3Qgb3ZlcnJpZGVzIG9uY2UsIGF0IGFwcCBpbml0KSDilIDilIDilIDilIDilIDilIDilIBcbmV4cG9ydCB7IHNldE9ydFdhc21CYXNlLCBnZXRPcnRXYXNtQmFzZSB9IGZyb20gJy4vbGliL3Rvb2xiYXIvc2VnbWVudGF0aW9uL29ydC1ydW50aW1lLWNvbmZpZyc7XG5cbi8vIOKUgOKUgCBOZXV0cmFsIGRhdGEgbW9kZWxzIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzL3JlZ2lvbic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbHMvY2xhc3MtcHJlc2V0JztcbmV4cG9ydCB7IFNoYXBlU2VsZWN0aW9uIH0gZnJvbSAnLi9saWIvbW9kZWxzL3NoYXBlJztcblxuLy8g4pSA4pSAIEFuZ3VsYXIgbW9kdWxlICsgY29tcG9zaXRpb24tcm9vdCBzZXJ2aWNlIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuZXhwb3J0IHsgVmlzdWFsaXphdGlvbk1vZHVsZSB9IGZyb20gJy4vbGliL3Zpc3VhbGl6YXRpb24ubW9kdWxlJztcbmV4cG9ydCB7IFJvdXRpbmdWaXN1YWxpemVyU2VydmljZSB9IGZyb20gJy4vbGliL3JvdXRpbmctdmlzdWFsaXplci5zZXJ2aWNlJztcbi8vIFByb3ZpZGVyIGZhY3RvcnkgZm9yIGFuIGlzb2xhdGVkLCBjb21wb25lbnQtc2NvcGVkIHZpZXdlciBpbnN0YW5jZSAoZS5nLiBhXG4vLyBtb2RhbCB0aGF0IG11c3Qgbm90IHNoYXJlIHRoZSBtYWluIHZpZXdlcidzIHJlZ2lvbi9pbWFnZSBzdGF0ZSkuXG5leHBvcnQgeyBwcm92aWRlVmlzdWFsaXphdGlvbiB9IGZyb20gJy4vbGliL3Byb3ZpZGUtdmlzdWFsaXphdGlvbic7XG5cbi8vIOKUgOKUgCBQdWJsaWMgY29tcG9uZW50cyAoZXhwb3J0ZWQgYnkgVmlzdWFsaXphdGlvbk1vZHVsZSkg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4vLyBuZy1wYWNrYWdyIHJlcXVpcmVzIG1vZHVsZS1leHBvcnRlZCBjb21wb25lbnRzIHRvIGJlIHJlYWNoYWJsZSBmcm9tIHRoZVxuLy8gZW50cnkgcG9pbnQgc28gY29uc3VtZXJzIGdldCB0aGVpciB0eXBlczsgdGhlc2UgYXJlIHRoZSBlbWJlZGRhYmxlIGVsZW1lbnRzXG4vLyAoYDx2aXN1YWxpemVyPmAsIGA8cmVnaW9uLWVkaXRvcj5gLCBgPGhleC1jb2xvci1waWNrZXI+YCkuXG5leHBvcnQgeyBWaXN1YWxpemVyQ29tcG9uZW50IH0gZnJvbSAnLi9saWIvdmlzdWFsaXplci5jb21wb25lbnQnO1xuZXhwb3J0IHsgUmVnaW9uRWRpdG9yQ29tcG9uZW50IH0gZnJvbSAnLi9saWIvcmVnaW9uLWVkaXRvci9yZWdpb24tZWRpdG9yLmNvbXBvbmVudCc7XG5leHBvcnQgeyBIZXhDb2xvclBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4vbGliL2hleC1jb2xvci1waWNrZXIvaGV4LWNvbG9yLXBpY2tlci5jb21wb25lbnQnO1xuZXhwb3J0IHsgQ2hhbm5lbEhpc3RvZ3JhbUNvbXBvbmVudCB9IGZyb20gJy4vbGliL2NoYW5uZWwtaGlzdG9ncmFtL2NoYW5uZWwtaGlzdG9ncmFtLmNvbXBvbmVudCc7XG4iXX0=
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsNEVBQTRFO0FBQzVFLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsZ0RBQWdELENBQUM7QUFDL0QsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUNqRyxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsNkNBQTZDLENBQUM7QUFFNUQsOEVBQThFO0FBQzlFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsU0FBUyxFQUFvQixNQUFNLDZCQUE2QixDQUFDO0FBQzFFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBRWpGLDZFQUE2RTtBQUM3RSxPQUFPLEVBQ0wsVUFBVSxFQUFFLG9CQUFvQixFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUMvRSxrQkFBa0IsRUFBRSxvQkFBb0IsR0FDekMsTUFBTSwrQ0FBK0MsQ0FBQztBQUV2RCw4RUFBOEU7QUFDOUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUUvRiw0RUFBNEU7QUFDNUUsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVwRCw0RUFBNEU7QUFDNUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDakUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDNUUsNkVBQTZFO0FBQzdFLG1FQUFtRTtBQUNuRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUVuRSw2RUFBNkU7QUFDN0UsMEVBQTBFO0FBQzFFLDhFQUE4RTtBQUM5RSw2REFBNkQ7QUFDN0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDakUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDcEYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDNUYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0scURBQXFELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFB1YmxpYyBBUEkgb2YgdGhlIGpheC1pbWFnZS12aXN1YWxpemF0aW9uIGxpYnJhcnkuIEV4dGVybmFsIGNvbnN1bWVycyBpbXBvcnRcbiAqIE9OTFkgZnJvbSBoZXJlIChgQGpheC1kYXRhLXNjaWVuY2Uvc2NpLWltYWdlLXZpc3VhbGl6ZXJgKTsgZXZlcnl0aGluZyBlbHNlIHVuZGVyIGBsaWIvYCBpc1xuICogaW50ZXJuYWwuIFRoZSBzdXJmYWNlIGlzIGNvbnRyYWN0cyArIHRva2VucyArIG5ldXRyYWwgbW9kZWxzICsgdGhlIEFuZ3VsYXJcbiAqIG1vZHVsZSwgcGx1cyB0aGUgcm91dGluZyBzZXJ2aWNlIHRoZSBob3N0J3MgY29tcG9zaXRpb24gcm9vdCBiaW5kcyB0aGUgdG9rZW5zXG4gKiB0byAoYHVzZUV4aXN0aW5nYCkuXG4gKi9cblxuLy8g4pSA4pSAIENvbnRyYWN0cyAmIERJIHRva2VucyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyYWN0cy92aXN1YWxpemVyLmNvbnRyYWN0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyYWN0cy9yZWdpb24tZWRpdG9yLWFwaS5jb250cmFjdCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cmFjdHMvcG9ydHMvaW1hZ2Utc3RhdGUucG9ydCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cmFjdHMvcG9ydHMvdGlsZS1hY2Nlc3MucG9ydCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cmFjdHMvcG9ydHMvcmVnaW9uLWlvLnBvcnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJhY3RzL3BvcnRzL3ByZWZlcmVuY2VzLnBvcnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJhY3RzL2NoYW5uZWwtaGlzdG9ncmFtLWFwaS5jb250cmFjdCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cmFjdHMvdml6LWNvbmZpZyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cmFjdHMvaW1hZ2UuY29udHJhY3QnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJhY3RzL3Bsb3QtdHlwZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cmFjdHMvdG9vbGJhci1jb25maWcnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJhY3RzL3Rvb2xiYXItdG9vbC5jb250cmFjdCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cmFjdHMvY2FwYWJpbGl0aWVzLmNvbnRyYWN0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyYWN0cy9yZWdpb24tb3ZlcmxheS5jb250cmFjdCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cmFjdHMvZGlzcGxheS10eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cmFjdHMvc2FtLmNvbnRyYWN0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyYWN0cy9jZWxsLXNlZ21lbnRlci5jb250cmFjdCc7XG5leHBvcnQgeyBDZWxscG9zZVNlZ21lbnRlclNlcnZpY2UgfSBmcm9tICcuL2xpYi90b29sYmFyL3NlZ21lbnRhdGlvbi9jZWxscG9zZS1zZWdtZW50ZXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cmFjdHMvaW5zdGFuY2Utc2VnbWVudGVyLmNvbnRyYWN0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyYWN0cy9zZW1hbnRpYy1zZWdtZW50ZXIuY29udHJhY3QnO1xuXG4vLyDilIDilIAgR2VuZXJpYyBjbGllbnQtc2lkZSBpbWFnZSB1dGlsaXRpZXMgKHNoYXJlZCB3aXRoIHRoZSBob3N0J3MgcGlwZWxpbmUpIOKUgOKUgFxuZXhwb3J0IHsgUHJvY2Vzc2luZ0ltYWdlIH0gZnJvbSAnLi9saWIvcHJvY2Vzc2luZy9wcm9jZXNzaW5nLWltYWdlJztcbmV4cG9ydCB7IGNyb3BJbWFnZSwgQ3JvcEltYWdlT3B0aW9ucyB9IGZyb20gJy4vbGliL3Byb2Nlc3NpbmcvaW1hZ2UtY3JvcCc7XG5leHBvcnQgeyBJbWFnZUNvbnZlcnRlclNlcnZpY2UgfSBmcm9tICcuL2xpYi9wcm9jZXNzaW5nL2ltYWdlLWNvbnZlcnRlci5zZXJ2aWNlJztcblxuLy8g4pSA4pSAIFNBTSBtb2RlbCByZWdpc3RyeSAoaG9zdCBjb25maWd1cmVzIGhvc3RlZCBPTk5YIFVSTHMgb25jZSBhdmFpbGFibGUpIOKUgOKUgFxuZXhwb3J0IHtcbiAgU0FNX01PREVMUywgREVGQVVMVF9TQU1fTU9ERUxfSUQsIGdldFNhbU1vZGVsLCBpc1NhbU1vZGVsUmVhZHksIHNldFNhbU1vZGVsVXJscyxcbiAgc2V0RGVmYXVsdFNhbU1vZGVsLCBnZXREZWZhdWx0U2FtTW9kZWxJZCxcbn0gZnJvbSAnLi9saWIvdG9vbGJhci9zZWdtZW50YXRpb24vc2FtLW1vZGVsLXJlZ2lzdHJ5JztcblxuLy8g4pSA4pSAIG9ubnhydW50aW1lLXdlYiBXQVNNIGxvY2F0aW9uIChob3N0IG92ZXJyaWRlcyBvbmNlLCBhdCBhcHAgaW5pdCkg4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5leHBvcnQgeyBzZXRPcnRXYXNtQmFzZSwgZ2V0T3J0V2FzbUJhc2UgfSBmcm9tICcuL2xpYi90b29sYmFyL3NlZ21lbnRhdGlvbi9vcnQtcnVudGltZS1jb25maWcnO1xuXG4vLyDilIDilIAgTmV1dHJhbCBkYXRhIG1vZGVscyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVscy9yZWdpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzL2NsYXNzLXByZXNldCc7XG5leHBvcnQgeyBTaGFwZVNlbGVjdGlvbiB9IGZyb20gJy4vbGliL21vZGVscy9zaGFwZSc7XG5cbi8vIOKUgOKUgCBBbmd1bGFyIG1vZHVsZSArIGNvbXBvc2l0aW9uLXJvb3Qgc2VydmljZSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbmV4cG9ydCB7IFZpc3VhbGl6YXRpb25Nb2R1bGUgfSBmcm9tICcuL2xpYi92aXN1YWxpemF0aW9uLm1vZHVsZSc7XG5leHBvcnQgeyBSb3V0aW5nVmlzdWFsaXplclNlcnZpY2UgfSBmcm9tICcuL2xpYi9yb3V0aW5nLXZpc3VhbGl6ZXIuc2VydmljZSc7XG4vLyBQcm92aWRlciBmYWN0b3J5IGZvciBhbiBpc29sYXRlZCwgY29tcG9uZW50LXNjb3BlZCB2aWV3ZXIgaW5zdGFuY2UgKGUuZy4gYVxuLy8gbW9kYWwgdGhhdCBtdXN0IG5vdCBzaGFyZSB0aGUgbWFpbiB2aWV3ZXIncyByZWdpb24vaW1hZ2Ugc3RhdGUpLlxuZXhwb3J0IHsgcHJvdmlkZVZpc3VhbGl6YXRpb24gfSBmcm9tICcuL2xpYi9wcm92aWRlLXZpc3VhbGl6YXRpb24nO1xuXG4vLyDilIDilIAgUHVibGljIGNvbXBvbmVudHMgKGV4cG9ydGVkIGJ5IFZpc3VhbGl6YXRpb25Nb2R1bGUpIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuLy8gbmctcGFja2FnciByZXF1aXJlcyBtb2R1bGUtZXhwb3J0ZWQgY29tcG9uZW50cyB0byBiZSByZWFjaGFibGUgZnJvbSB0aGVcbi8vIGVudHJ5IHBvaW50IHNvIGNvbnN1bWVycyBnZXQgdGhlaXIgdHlwZXM7IHRoZXNlIGFyZSB0aGUgZW1iZWRkYWJsZSBlbGVtZW50c1xuLy8gKGA8dmlzdWFsaXplcj5gLCBgPHJlZ2lvbi1lZGl0b3I+YCwgYDxoZXgtY29sb3ItcGlja2VyPmApLlxuZXhwb3J0IHsgVmlzdWFsaXplckNvbXBvbmVudCB9IGZyb20gJy4vbGliL3Zpc3VhbGl6ZXIuY29tcG9uZW50JztcbmV4cG9ydCB7IFJlZ2lvbkVkaXRvckNvbXBvbmVudCB9IGZyb20gJy4vbGliL3JlZ2lvbi1lZGl0b3IvcmVnaW9uLWVkaXRvci5jb21wb25lbnQnO1xuZXhwb3J0IHsgSGV4Q29sb3JQaWNrZXJDb21wb25lbnQgfSBmcm9tICcuL2xpYi9oZXgtY29sb3ItcGlja2VyL2hleC1jb2xvci1waWNrZXIuY29tcG9uZW50JztcbmV4cG9ydCB7IENoYW5uZWxIaXN0b2dyYW1Db21wb25lbnQgfSBmcm9tICcuL2xpYi9jaGFubmVsLWhpc3RvZ3JhbS9jaGFubmVsLWhpc3RvZ3JhbS5jb21wb25lbnQnO1xuIl19
@@ -1,12 +1,12 @@
1
- import { InjectionToken, inject } from '@angular/core';
2
- import { YoloSegmenterService } from '../toolbar/segmentation/yolo-segmenter.service';
1
+ import { InjectionToken } from '@angular/core';
3
2
  /**
4
- * DI token for the automatic instance segmenter. Defaults to the in-library
5
- * {@link YoloSegmenterService} (yolo-segdetect-js, lazy-loaded); override it in
6
- * the host to swap implementations — for example to delegate to the server.
3
+ * DI token for the automatic instance segmenter.
4
+ *
5
+ * **No default.** It used to fall back to an in-library YOLO service, and that
6
+ * factory was what pulled `yolo-segdetect-js` into every bundle of this package
7
+ * — which is not shippable while the checkpoints are closed. A host provides an
8
+ * implementation (see `@jax-data-science/sci-image-visualizer-jax-tools`), or
9
+ * nothing does and no tool needing it is registered.
7
10
  */
8
- export const INSTANCE_SEGMENTER = new InjectionToken('INSTANCE_SEGMENTER', {
9
- providedIn: 'root',
10
- factory: () => inject(YoloSegmenterService),
11
- });
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFuY2Utc2VnbWVudGVyLmNvbnRyYWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jb250cmFjdHMvaW5zdGFuY2Utc2VnbWVudGVyLmNvbnRyYWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBMEl0Rjs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxjQUFjLENBQXFCLG9CQUFvQixFQUFFO0lBQzdGLFVBQVUsRUFBRSxNQUFNO0lBQ2xCLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsb0JBQW9CLENBQUM7Q0FDNUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4sIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBZb2xvU2VnbWVudGVyU2VydmljZSB9IGZyb20gJy4uL3Rvb2xiYXIvc2VnbWVudGF0aW9uL3lvbG8tc2VnbWVudGVyLnNlcnZpY2UnO1xuXG4vKipcbiAqIFBvcnQgZm9yIGFuIGF1dG9tYXRpYyAqKmluc3RhbmNlKiogc2VnbWVudGVyIOKAlCBvbmUgdGhhdCByZXR1cm5zIGRpc2NyZXRlLFxuICogY2xhc3NpZmllZCBvYmplY3RzIHJhdGhlciB0aGFuIGEgcGVyLXBpeGVsIGxhYmVsIG1hcC5cbiAqXG4gKiBUaGlzIGlzIGEgc2libGluZyBvZiB7QGxpbmsgSUNlbGxTZWdtZW50ZXJ9LCBub3QgYSByZXBsYWNlbWVudC4gQ2VsbHBvc2Utc3R5bGVcbiAqIHNlZ21lbnRlcnMgcHJvZHVjZSBvbmUgZXhjbHVzaXZlIGxhYmVsIHBlciBwaXhlbCwgd2hpY2ggaXMgZXhhY3RseSByaWdodCBmb3JcbiAqIGRlbnNlbHkgcGFja2VkIGNlbGxzOyBhIGRldGVjdG9yIGxpa2UgWU9MTyBwcm9kdWNlcyBvdmVybGFwcGluZyBpbnN0YW5jZXMsXG4gKiBlYWNoIHdpdGggaXRzIG93biBjbGFzcyBhbmQgY29uZmlkZW5jZSwgYW5kIGZsYXR0ZW5pbmcgdGhvc2UgaW50byBhIGxhYmVsIG1hcFxuICogd291bGQgc2lsZW50bHkgZGlzY2FyZCBib3RoIHRoZSBvdmVybGFwIGFuZCB0aGUgY2xhc3NpZmljYXRpb24uIFRoZSB0d29cbiAqIG91dHB1dHMgYXJlIGdlbnVpbmVseSBkaWZmZXJlbnQgc2hhcGVzLCBzbyB0aGV5IGdldCBkaWZmZXJlbnQgcG9ydHMuXG4gKlxuICogR2VvbWV0cnkgaXMgcmV0dXJuZWQgYXMgcG9seWdvbiByaW5ncyBpbiAqKmltYWdlIHBpeGVscyoqLCByZWFkeSB0byBiZWNvbWVcbiAqIHtAbGluayBSZWdpb259cyB3aXRob3V0IGEgc2Vjb25kIGNvbnZlcnNpb24gc3RlcC5cbiAqL1xuXG4vKiogQSBjbG9zZWQgcmluZzsgdGhlIGxhc3QgcG9pbnQgaXMgTk9UIGEgcmVwZWF0IG9mIHRoZSBmaXJzdC4gKi9cbmV4cG9ydCB0eXBlIEluc3RhbmNlUmluZyA9IEFycmF5PFtudW1iZXIsIG51bWJlcl0+O1xuXG4vKiogT25lIHBvbHlnb24gd2l0aCBvcHRpb25hbCBpbnRlcmlvciByaW5ncyAoZG9udXQgaG9sZXMpLiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnN0YW5jZVBvbHlnb24ge1xuICBleHRlcmlvcjogSW5zdGFuY2VSaW5nO1xuICBob2xlczogSW5zdGFuY2VSaW5nW107XG59XG5cbi8qKiBPbmUgZGV0ZWN0ZWQgb2JqZWN0LiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnN0YW5jZURldGVjdGlvbiB7XG4gIC8qKlxuICAgKiBPdXRsaW5lKHMpIG9mIHRoaXMgaW5zdGFuY2UuIFVzdWFsbHkgb25lLCBidXQgYSBtYXNrIHRoYXQgc3BsaXRzIHVuZGVyXG4gICAqIHRocmVzaG9sZGluZyB5aWVsZHMgc2V2ZXJhbCDigJQgdGhleSBhbGwgYmVsb25nIHRvIHRoZSBzYW1lIGRldGVjdGlvbi5cbiAgICovXG4gIHBvbHlnb25zOiBJbnN0YW5jZVBvbHlnb25bXTtcbiAgLyoqIGBbeDEsIHkxLCB4MiwgeTJdYCBpbiBpbWFnZSBwaXhlbHMuICovXG4gIGJveDogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XG4gIC8qKiBNb2RlbCBjb25maWRlbmNlLCAwLi4xLiAqL1xuICBzY29yZTogbnVtYmVyO1xuICBjbGFzc0lkOiBudW1iZXI7XG4gIGNsYXNzTmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEluc3RhbmNlU2VnbWVudGF0aW9uIHtcbiAgZGV0ZWN0aW9uczogSW5zdGFuY2VEZXRlY3Rpb25bXTtcbiAgd2lkdGg6IG51bWJlcjtcbiAgaGVpZ2h0OiBudW1iZXI7XG4gIC8qKiBDbGFzcyBuYW1lcyBpbmRleGVkIGJ5IGNsYXNzIGlkLCBmcm9tIHRoZSBtb2RlbCdzIG93biBtZXRhZGF0YS4gKi9cbiAgY2xhc3NOYW1lczogc3RyaW5nW107XG59XG5cbi8qKlxuICogVHVuYWJsZXMgZm9yIG9uZSBydW4uXG4gKlxuICogVGhyZWUgc2VwYXJhdGUgdGhyZXNob2xkcyBhcmUgaW4gcGxheSBhbmQgdGhleSBhcmUgZWFzeSB0byBjb25mbGF0ZTpcbiAqIGBjb25maWRlbmNlYCBhbmQgYGlvdVRocmVzaG9sZGAgYWN0IHBlciB0aWxlLCB3aGlsZSBgbWVyZ2VUaHJlc2hvbGRgIGdvdmVybnNcbiAqIHRoZSBjcm9zcy10aWxlIHJlY29uY2lsaWF0aW9uLiBUaGV5IGNvbWUgZnJvbSBkaWZmZXJlbnQgc3RhZ2VzIG9mIHRoZVxuICogcGlwZWxpbmUgYW5kIGFyZSBub3QgaW50ZXJjaGFuZ2VhYmxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEluc3RhbmNlU2VnbWVudE9wdGlvbnMge1xuICAvKiogV2hpY2ggcmVnaXN0ZXJlZCBtb2RlbCB0byBydW4uIERlZmF1bHRzIHRvIHRoZSByZWdpc3RyeSdzIGRlZmF1bHQuICovXG4gIG1vZGVsSWQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBTY2FsZSB0byBydW4gYXQsIGFzIGEgZGl2aXNvciBvZiBmdWxsIHJlc29sdXRpb24g4oCUIHRoZSBzYW1lIG1lYW5pbmcgdGhlXG4gICAqIHNlcnZlciBnaXZlcyBpdC5cbiAgICpcbiAgICogVGhpcyBpcyB3aGF0IHB1dHMgb2JqZWN0cyBhdCB0aGUgc2l6ZSB0aGUgY2hlY2twb2ludCB3YXMgdHJhaW5lZCBvbiwgYW5kIGl0XG4gICAqIG1hdHRlcnMgbW9yZSB0aGFuIGFueSB0aHJlc2hvbGQ6IHJ1biBhIGRldGVjdG9yIGF0IHRoZSB3cm9uZyBvYmplY3Qgc2NhbGVcbiAgICogYW5kIGl0IGZpbmRzIG5vdGhpbmcuIEEgY2FsbGVyIHRoYXQgY2FuIHJlLWNyb3AgdGhlIHNvdXJjZSAoYSB0aWxlLWJhY2tlZFxuICAgKiB2aWV3ZXIpIHNob3VsZCBob25vdXIgaXQgcmF0aGVyIHRoYW4gYWNjZXB0aW5nIHdoYXRldmVyIHRoZSBkaXNwbGF5IGhhcHBlbnNcbiAgICogdG8gc2hvdy5cbiAgICovXG4gIGRvd25zYW1wbGluZ0ZhY3Rvcj86IG51bWJlcjtcbiAgLyoqIE1pbmltdW0gZGV0ZWN0aW9uIGNvbmZpZGVuY2UsIHBlciB0aWxlLiAqL1xuICBjb25maWRlbmNlPzogbnVtYmVyO1xuICAvKiogTk1TIElvVSB3aXRoaW4gYSBzaW5nbGUgdGlsZS4gKi9cbiAgaW91VGhyZXNob2xkPzogbnVtYmVyO1xuICAvKiogSW50ZXJzZWN0aW9uLW92ZXItc21hbGxlciB0aHJlc2hvbGQgZm9yIG1lcmdpbmcgYWNyb3NzIHRpbGUgc2VhbXMuICovXG4gIG1lcmdlVGhyZXNob2xkPzogbnVtYmVyO1xuICAvKiogVGlsZSBvdmVybGFwLCBwZXJjZW50LiAqL1xuICBvdmVybGFwWD86IG51bWJlcjtcbiAgb3ZlcmxhcFk/OiBudW1iZXI7XG4gIC8qKiBQcm9iYWJpbGl0eSBhdCB3aGljaCBhIG1hc2sgcGl4ZWwgY291bnRzIGFzIGluc2lkZS4gKi9cbiAgbWFza1RocmVzaG9sZD86IG51bWJlcjtcbiAgLyoqIENhcCBvbiBkZXRlY3Rpb25zIHBlciB0aWxlLiAqL1xuICBtYXhEZXRlY3Rpb25zPzogbnVtYmVyO1xuICAvKiogS2VlcCBvbmx5IHRoZXNlIGNsYXNzIGlkczsgb21pdCBmb3IgYWxsIGNsYXNzZXMgdGhlIG1vZGVsIGRlY2xhcmVzLiAqL1xuICBjbGFzc0ZpbHRlcj86IG51bWJlcltdO1xuICAvKiogRG91Z2xhcy1QZXVja2VyIHRvbGVyYW5jZSBpbiBwaXhlbHMgZm9yIG91dGxpbmUgc2ltcGxpZmljYXRpb247IDAgZGlzYWJsZXMuICovXG4gIHNpbXBsaWZ5VG9sZXJhbmNlPzogbnVtYmVyO1xuICAvKiogRHJvcCBpbnN0YW5jZXMgd2hvc2Ugb3V0bGluZSBhcmVhIGlzIGJlbG93IHRoaXMsIGluIHNxdWFyZSBwaXhlbHMuICovXG4gIG1pbkFyZWE/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBTZXQgZmFsc2UgdG8gZGV0ZWN0IGJveGVzIHdpdGhvdXQgYXNzZW1ibGluZyBtYXNrcyDigJQgc3Vic3RhbnRpYWxseSBmYXN0ZXIsXG4gICAqIHNpbmNlIG1hc2sgYXNzZW1ibHkgZG9taW5hdGVzIHRoZSBjb3N0IG9mIGEgcnVuLiBEZXRlY3Rpb25zIHRoZW4gY2FycnkgYVxuICAgKiBib3ggYW5kIGNsYXNzIGJ1dCBubyBvdXRsaW5lLCBzbyBub3RoaW5nIGNhbiBiZSBjb21taXR0ZWQgYXMgYSByZWdpb24uXG4gICAqL1xuICB3aXRoTWFza3M/OiBib29sZWFuO1xuICAvKipcbiAgICogQWJvcnQgYW4gaW4tcHJvZ3Jlc3MgcnVuLlxuICAgKlxuICAgKiBDYW5jZWxsYXRpb24gaXMgY29vcGVyYXRpdmUgYW5kIGNoZWNrZWQgYXQgdGlsZSBib3VuZGFyaWVzLCBzbyBpdCB0YWtlc1xuICAgKiBlZmZlY3Qgd2l0aGluIHJvdWdobHkgb25lIHRpbGUgcmF0aGVyIHRoYW4gaW5zdGFudGx5IOKAlCBhIGBzZXNzaW9uLnJ1bigpYFxuICAgKiBhbHJlYWR5IGluIGZsaWdodCBjYW5ub3QgYmUgaW50ZXJydXB0ZWQuXG4gICAqL1xuICBzaWduYWw/OiBBYm9ydFNpZ25hbDtcbn1cblxuLyoqXG4gKiBQcm9ncmVzcy9zdGF0dXMgY2FsbGJhY2tzIChhbGwgb3B0aW9uYWwpLlxuICpcbiAqIERlbGliZXJhdGVseSBtaXJyb3JzIHtAbGluayBDZWxsU2VnbWVudFByb2dyZXNzfSBpbiBzaGFwZSByYXRoZXIgdGhhbiBpbXBvcnRpbmdcbiAqIGl0IOKAlCB0aGUgdHdvIGNvbnRyYWN0cyBzdGF5IGluZGVwZW5kZW50bHkgdmVyc2lvbmFibGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5zdGFuY2VTZWdtZW50UHJvZ3Jlc3Mge1xuICAvKiogTW9kZWwtZG93bmxvYWQgcHJvZ3Jlc3MsIDAuLjEgKGZpcnN0IHJ1biBvbmx5KS4gKi9cbiAgb25Qcm9ncmVzcz86IChmcmFjdGlvbjogbnVtYmVyKSA9PiB2b2lkO1xuICAvKipcbiAgICogUmF3IGRvd25sb2FkIGJ5dGUgY291bnRzLCBmb3IgaG9zdHMgdGhhdCByZW5kZXIgYSBzaXplIChcIjE0MiAvIDI4NyBNQlwiKVxuICAgKiByYXRoZXIgdGhhbiBhIGJhcmUgcGVyY2VudGFnZS4gYHRvdGFsYCBpcyBudWxsIHdoZW4gdGhlIHJlc3BvbnNlIGNhcnJpZWQgbm9cbiAgICogQ29udGVudC1MZW5ndGguXG4gICAqXG4gICAqIEEgZnJhY3Rpb24gYWxvbmUgY2Fubm90IGJlIHR1cm5lZCBiYWNrIGludG8gYnl0ZXMsIHNvIGEgaG9zdCBnaXZlbiBvbmx5XG4gICAqIHtAbGluayBvblByb2dyZXNzfSBoYXMgdG8gaW52ZW50IHRoZSBudW1iZXJzIOKAlCB3aGljaCByZWFkcyBhcyBcIjAgTUIgLyAwIE1CXCJcbiAgICogdGhlIG1vbWVudCBpdCBkb2VzLlxuICAgKi9cbiAgb25CeXRlcz86IChsb2FkZWQ6IG51bWJlciwgdG90YWw6IG51bWJlciB8IG51bGwpID0+IHZvaWQ7XG4gIC8qKiBIdW1hbi1yZWFkYWJsZSBwaGFzZSwgZS5nLiAnUnVubmluZyBpbmZlcmVuY2UgKHRpbGUgMy84KeKApicuICovXG4gIG9uU3RhdHVzPzogKHN0YXR1czogc3RyaW5nKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElJbnN0YW5jZVNlZ21lbnRlciB7XG4gIC8qKiBEZXRlY3QgYW5kIG91dGxpbmUgYWxsIGluc3RhbmNlcyBpbiBhbiBSR0JBIGltYWdlLiAqL1xuICBzZWdtZW50SW5zdGFuY2VzKFxuICAgIGltYWdlOiB7IGRhdGE6IFVpbnQ4Q2xhbXBlZEFycmF5OyB3aWR0aDogbnVtYmVyOyBoZWlnaHQ6IG51bWJlciB9LFxuICAgIG9wdHM/OiBJbnN0YW5jZVNlZ21lbnRPcHRpb25zLFxuICAgIHByb2dyZXNzPzogSW5zdGFuY2VTZWdtZW50UHJvZ3Jlc3MsXG4gICk6IFByb21pc2U8SW5zdGFuY2VTZWdtZW50YXRpb24+O1xufVxuXG4vKipcbiAqIERJIHRva2VuIGZvciB0aGUgYXV0b21hdGljIGluc3RhbmNlIHNlZ21lbnRlci4gRGVmYXVsdHMgdG8gdGhlIGluLWxpYnJhcnlcbiAqIHtAbGluayBZb2xvU2VnbWVudGVyU2VydmljZX0gKHlvbG8tc2VnZGV0ZWN0LWpzLCBsYXp5LWxvYWRlZCk7IG92ZXJyaWRlIGl0IGluXG4gKiB0aGUgaG9zdCB0byBzd2FwIGltcGxlbWVudGF0aW9ucyDigJQgZm9yIGV4YW1wbGUgdG8gZGVsZWdhdGUgdG8gdGhlIHNlcnZlci5cbiAqL1xuZXhwb3J0IGNvbnN0IElOU1RBTkNFX1NFR01FTlRFUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJSW5zdGFuY2VTZWdtZW50ZXI+KCdJTlNUQU5DRV9TRUdNRU5URVInLCB7XG4gIHByb3ZpZGVkSW46ICdyb290JyxcbiAgZmFjdG9yeTogKCkgPT4gaW5qZWN0KFlvbG9TZWdtZW50ZXJTZXJ2aWNlKSxcbn0pO1xuIl19
11
+ export const INSTANCE_SEGMENTER = new InjectionToken('INSTANCE_SEGMENTER');
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFuY2Utc2VnbWVudGVyLmNvbnRyYWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jb250cmFjdHMvaW5zdGFuY2Utc2VnbWVudGVyLmNvbnRyYWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUEySS9DOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxjQUFjLENBQXFCLG9CQUFvQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5cbi8qKlxuICogUG9ydCBmb3IgYW4gYXV0b21hdGljICoqaW5zdGFuY2UqKiBzZWdtZW50ZXIg4oCUIG9uZSB0aGF0IHJldHVybnMgZGlzY3JldGUsXG4gKiBjbGFzc2lmaWVkIG9iamVjdHMgcmF0aGVyIHRoYW4gYSBwZXItcGl4ZWwgbGFiZWwgbWFwLlxuICpcbiAqIFRoaXMgaXMgYSBzaWJsaW5nIG9mIHtAbGluayBJQ2VsbFNlZ21lbnRlcn0sIG5vdCBhIHJlcGxhY2VtZW50LiBDZWxscG9zZS1zdHlsZVxuICogc2VnbWVudGVycyBwcm9kdWNlIG9uZSBleGNsdXNpdmUgbGFiZWwgcGVyIHBpeGVsLCB3aGljaCBpcyBleGFjdGx5IHJpZ2h0IGZvclxuICogZGVuc2VseSBwYWNrZWQgY2VsbHM7IGEgZGV0ZWN0b3IgbGlrZSBZT0xPIHByb2R1Y2VzIG92ZXJsYXBwaW5nIGluc3RhbmNlcyxcbiAqIGVhY2ggd2l0aCBpdHMgb3duIGNsYXNzIGFuZCBjb25maWRlbmNlLCBhbmQgZmxhdHRlbmluZyB0aG9zZSBpbnRvIGEgbGFiZWwgbWFwXG4gKiB3b3VsZCBzaWxlbnRseSBkaXNjYXJkIGJvdGggdGhlIG92ZXJsYXAgYW5kIHRoZSBjbGFzc2lmaWNhdGlvbi4gVGhlIHR3b1xuICogb3V0cHV0cyBhcmUgZ2VudWluZWx5IGRpZmZlcmVudCBzaGFwZXMsIHNvIHRoZXkgZ2V0IGRpZmZlcmVudCBwb3J0cy5cbiAqXG4gKiBHZW9tZXRyeSBpcyByZXR1cm5lZCBhcyBwb2x5Z29uIHJpbmdzIGluICoqaW1hZ2UgcGl4ZWxzKiosIHJlYWR5IHRvIGJlY29tZVxuICoge0BsaW5rIFJlZ2lvbn1zIHdpdGhvdXQgYSBzZWNvbmQgY29udmVyc2lvbiBzdGVwLlxuICovXG5cbi8qKiBBIGNsb3NlZCByaW5nOyB0aGUgbGFzdCBwb2ludCBpcyBOT1QgYSByZXBlYXQgb2YgdGhlIGZpcnN0LiAqL1xuZXhwb3J0IHR5cGUgSW5zdGFuY2VSaW5nID0gQXJyYXk8W251bWJlciwgbnVtYmVyXT47XG5cbi8qKiBPbmUgcG9seWdvbiB3aXRoIG9wdGlvbmFsIGludGVyaW9yIHJpbmdzIChkb251dCBob2xlcykuICovXG5leHBvcnQgaW50ZXJmYWNlIEluc3RhbmNlUG9seWdvbiB7XG4gIGV4dGVyaW9yOiBJbnN0YW5jZVJpbmc7XG4gIGhvbGVzOiBJbnN0YW5jZVJpbmdbXTtcbn1cblxuLyoqIE9uZSBkZXRlY3RlZCBvYmplY3QuICovXG5leHBvcnQgaW50ZXJmYWNlIEluc3RhbmNlRGV0ZWN0aW9uIHtcbiAgLyoqXG4gICAqIE91dGxpbmUocykgb2YgdGhpcyBpbnN0YW5jZS4gVXN1YWxseSBvbmUsIGJ1dCBhIG1hc2sgdGhhdCBzcGxpdHMgdW5kZXJcbiAgICogdGhyZXNob2xkaW5nIHlpZWxkcyBzZXZlcmFsIOKAlCB0aGV5IGFsbCBiZWxvbmcgdG8gdGhlIHNhbWUgZGV0ZWN0aW9uLlxuICAgKi9cbiAgcG9seWdvbnM6IEluc3RhbmNlUG9seWdvbltdO1xuICAvKiogYFt4MSwgeTEsIHgyLCB5Ml1gIGluIGltYWdlIHBpeGVscy4gKi9cbiAgYm94OiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXTtcbiAgLyoqIE1vZGVsIGNvbmZpZGVuY2UsIDAuLjEuICovXG4gIHNjb3JlOiBudW1iZXI7XG4gIGNsYXNzSWQ6IG51bWJlcjtcbiAgY2xhc3NOYW1lOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW5zdGFuY2VTZWdtZW50YXRpb24ge1xuICBkZXRlY3Rpb25zOiBJbnN0YW5jZURldGVjdGlvbltdO1xuICB3aWR0aDogbnVtYmVyO1xuICBoZWlnaHQ6IG51bWJlcjtcbiAgLyoqIENsYXNzIG5hbWVzIGluZGV4ZWQgYnkgY2xhc3MgaWQsIGZyb20gdGhlIG1vZGVsJ3Mgb3duIG1ldGFkYXRhLiAqL1xuICBjbGFzc05hbWVzOiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBUdW5hYmxlcyBmb3Igb25lIHJ1bi5cbiAqXG4gKiBUaHJlZSBzZXBhcmF0ZSB0aHJlc2hvbGRzIGFyZSBpbiBwbGF5IGFuZCB0aGV5IGFyZSBlYXN5IHRvIGNvbmZsYXRlOlxuICogYGNvbmZpZGVuY2VgIGFuZCBgaW91VGhyZXNob2xkYCBhY3QgcGVyIHRpbGUsIHdoaWxlIGBtZXJnZVRocmVzaG9sZGAgZ292ZXJuc1xuICogdGhlIGNyb3NzLXRpbGUgcmVjb25jaWxpYXRpb24uIFRoZXkgY29tZSBmcm9tIGRpZmZlcmVudCBzdGFnZXMgb2YgdGhlXG4gKiBwaXBlbGluZSBhbmQgYXJlIG5vdCBpbnRlcmNoYW5nZWFibGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5zdGFuY2VTZWdtZW50T3B0aW9ucyB7XG4gIC8qKiBXaGljaCByZWdpc3RlcmVkIG1vZGVsIHRvIHJ1bi4gRGVmYXVsdHMgdG8gdGhlIHJlZ2lzdHJ5J3MgZGVmYXVsdC4gKi9cbiAgbW9kZWxJZD86IHN0cmluZztcbiAgLyoqXG4gICAqIFNjYWxlIHRvIHJ1biBhdCwgYXMgYSBkaXZpc29yIG9mIGZ1bGwgcmVzb2x1dGlvbiDigJQgdGhlIHNhbWUgbWVhbmluZyB0aGVcbiAgICogc2VydmVyIGdpdmVzIGl0LlxuICAgKlxuICAgKiBUaGlzIGlzIHdoYXQgcHV0cyBvYmplY3RzIGF0IHRoZSBzaXplIHRoZSBjaGVja3BvaW50IHdhcyB0cmFpbmVkIG9uLCBhbmQgaXRcbiAgICogbWF0dGVycyBtb3JlIHRoYW4gYW55IHRocmVzaG9sZDogcnVuIGEgZGV0ZWN0b3IgYXQgdGhlIHdyb25nIG9iamVjdCBzY2FsZVxuICAgKiBhbmQgaXQgZmluZHMgbm90aGluZy4gQSBjYWxsZXIgdGhhdCBjYW4gcmUtY3JvcCB0aGUgc291cmNlIChhIHRpbGUtYmFja2VkXG4gICAqIHZpZXdlcikgc2hvdWxkIGhvbm91ciBpdCByYXRoZXIgdGhhbiBhY2NlcHRpbmcgd2hhdGV2ZXIgdGhlIGRpc3BsYXkgaGFwcGVuc1xuICAgKiB0byBzaG93LlxuICAgKi9cbiAgZG93bnNhbXBsaW5nRmFjdG9yPzogbnVtYmVyO1xuICAvKiogTWluaW11bSBkZXRlY3Rpb24gY29uZmlkZW5jZSwgcGVyIHRpbGUuICovXG4gIGNvbmZpZGVuY2U/OiBudW1iZXI7XG4gIC8qKiBOTVMgSW9VIHdpdGhpbiBhIHNpbmdsZSB0aWxlLiAqL1xuICBpb3VUaHJlc2hvbGQ/OiBudW1iZXI7XG4gIC8qKiBJbnRlcnNlY3Rpb24tb3Zlci1zbWFsbGVyIHRocmVzaG9sZCBmb3IgbWVyZ2luZyBhY3Jvc3MgdGlsZSBzZWFtcy4gKi9cbiAgbWVyZ2VUaHJlc2hvbGQ/OiBudW1iZXI7XG4gIC8qKiBUaWxlIG92ZXJsYXAsIHBlcmNlbnQuICovXG4gIG92ZXJsYXBYPzogbnVtYmVyO1xuICBvdmVybGFwWT86IG51bWJlcjtcbiAgLyoqIFByb2JhYmlsaXR5IGF0IHdoaWNoIGEgbWFzayBwaXhlbCBjb3VudHMgYXMgaW5zaWRlLiAqL1xuICBtYXNrVGhyZXNob2xkPzogbnVtYmVyO1xuICAvKiogQ2FwIG9uIGRldGVjdGlvbnMgcGVyIHRpbGUuICovXG4gIG1heERldGVjdGlvbnM/OiBudW1iZXI7XG4gIC8qKiBLZWVwIG9ubHkgdGhlc2UgY2xhc3MgaWRzOyBvbWl0IGZvciBhbGwgY2xhc3NlcyB0aGUgbW9kZWwgZGVjbGFyZXMuICovXG4gIGNsYXNzRmlsdGVyPzogbnVtYmVyW107XG4gIC8qKiBEb3VnbGFzLVBldWNrZXIgdG9sZXJhbmNlIGluIHBpeGVscyBmb3Igb3V0bGluZSBzaW1wbGlmaWNhdGlvbjsgMCBkaXNhYmxlcy4gKi9cbiAgc2ltcGxpZnlUb2xlcmFuY2U/OiBudW1iZXI7XG4gIC8qKiBEcm9wIGluc3RhbmNlcyB3aG9zZSBvdXRsaW5lIGFyZWEgaXMgYmVsb3cgdGhpcywgaW4gc3F1YXJlIHBpeGVscy4gKi9cbiAgbWluQXJlYT86IG51bWJlcjtcbiAgLyoqXG4gICAqIFNldCBmYWxzZSB0byBkZXRlY3QgYm94ZXMgd2l0aG91dCBhc3NlbWJsaW5nIG1hc2tzIOKAlCBzdWJzdGFudGlhbGx5IGZhc3RlcixcbiAgICogc2luY2UgbWFzayBhc3NlbWJseSBkb21pbmF0ZXMgdGhlIGNvc3Qgb2YgYSBydW4uIERldGVjdGlvbnMgdGhlbiBjYXJyeSBhXG4gICAqIGJveCBhbmQgY2xhc3MgYnV0IG5vIG91dGxpbmUsIHNvIG5vdGhpbmcgY2FuIGJlIGNvbW1pdHRlZCBhcyBhIHJlZ2lvbi5cbiAgICovXG4gIHdpdGhNYXNrcz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBBYm9ydCBhbiBpbi1wcm9ncmVzcyBydW4uXG4gICAqXG4gICAqIENhbmNlbGxhdGlvbiBpcyBjb29wZXJhdGl2ZSBhbmQgY2hlY2tlZCBhdCB0aWxlIGJvdW5kYXJpZXMsIHNvIGl0IHRha2VzXG4gICAqIGVmZmVjdCB3aXRoaW4gcm91Z2hseSBvbmUgdGlsZSByYXRoZXIgdGhhbiBpbnN0YW50bHkg4oCUIGEgYHNlc3Npb24ucnVuKClgXG4gICAqIGFscmVhZHkgaW4gZmxpZ2h0IGNhbm5vdCBiZSBpbnRlcnJ1cHRlZC5cbiAgICovXG4gIHNpZ25hbD86IEFib3J0U2lnbmFsO1xufVxuXG4vKipcbiAqIFByb2dyZXNzL3N0YXR1cyBjYWxsYmFja3MgKGFsbCBvcHRpb25hbCkuXG4gKlxuICogRGVsaWJlcmF0ZWx5IG1pcnJvcnMge0BsaW5rIENlbGxTZWdtZW50UHJvZ3Jlc3N9IGluIHNoYXBlIHJhdGhlciB0aGFuIGltcG9ydGluZ1xuICogaXQg4oCUIHRoZSB0d28gY29udHJhY3RzIHN0YXkgaW5kZXBlbmRlbnRseSB2ZXJzaW9uYWJsZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnN0YW5jZVNlZ21lbnRQcm9ncmVzcyB7XG4gIC8qKiBNb2RlbC1kb3dubG9hZCBwcm9ncmVzcywgMC4uMSAoZmlyc3QgcnVuIG9ubHkpLiAqL1xuICBvblByb2dyZXNzPzogKGZyYWN0aW9uOiBudW1iZXIpID0+IHZvaWQ7XG4gIC8qKlxuICAgKiBSYXcgZG93bmxvYWQgYnl0ZSBjb3VudHMsIGZvciBob3N0cyB0aGF0IHJlbmRlciBhIHNpemUgKFwiMTQyIC8gMjg3IE1CXCIpXG4gICAqIHJhdGhlciB0aGFuIGEgYmFyZSBwZXJjZW50YWdlLiBgdG90YWxgIGlzIG51bGwgd2hlbiB0aGUgcmVzcG9uc2UgY2FycmllZCBub1xuICAgKiBDb250ZW50LUxlbmd0aC5cbiAgICpcbiAgICogQSBmcmFjdGlvbiBhbG9uZSBjYW5ub3QgYmUgdHVybmVkIGJhY2sgaW50byBieXRlcywgc28gYSBob3N0IGdpdmVuIG9ubHlcbiAgICoge0BsaW5rIG9uUHJvZ3Jlc3N9IGhhcyB0byBpbnZlbnQgdGhlIG51bWJlcnMg4oCUIHdoaWNoIHJlYWRzIGFzIFwiMCBNQiAvIDAgTUJcIlxuICAgKiB0aGUgbW9tZW50IGl0IGRvZXMuXG4gICAqL1xuICBvbkJ5dGVzPzogKGxvYWRlZDogbnVtYmVyLCB0b3RhbDogbnVtYmVyIHwgbnVsbCkgPT4gdm9pZDtcbiAgLyoqIEh1bWFuLXJlYWRhYmxlIHBoYXNlLCBlLmcuICdSdW5uaW5nIGluZmVyZW5jZSAodGlsZSAzLzgp4oCmJy4gKi9cbiAgb25TdGF0dXM/OiAoc3RhdHVzOiBzdHJpbmcpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUluc3RhbmNlU2VnbWVudGVyIHtcbiAgLyoqIERldGVjdCBhbmQgb3V0bGluZSBhbGwgaW5zdGFuY2VzIGluIGFuIFJHQkEgaW1hZ2UuICovXG4gIHNlZ21lbnRJbnN0YW5jZXMoXG4gICAgaW1hZ2U6IHsgZGF0YTogVWludDhDbGFtcGVkQXJyYXk7IHdpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyIH0sXG4gICAgb3B0cz86IEluc3RhbmNlU2VnbWVudE9wdGlvbnMsXG4gICAgcHJvZ3Jlc3M/OiBJbnN0YW5jZVNlZ21lbnRQcm9ncmVzcyxcbiAgKTogUHJvbWlzZTxJbnN0YW5jZVNlZ21lbnRhdGlvbj47XG59XG5cbi8qKlxuICogREkgdG9rZW4gZm9yIHRoZSBhdXRvbWF0aWMgaW5zdGFuY2Ugc2VnbWVudGVyLlxuICpcbiAqICoqTm8gZGVmYXVsdC4qKiBJdCB1c2VkIHRvIGZhbGwgYmFjayB0byBhbiBpbi1saWJyYXJ5IFlPTE8gc2VydmljZSwgYW5kIHRoYXRcbiAqIGZhY3Rvcnkgd2FzIHdoYXQgcHVsbGVkIGB5b2xvLXNlZ2RldGVjdC1qc2AgaW50byBldmVyeSBidW5kbGUgb2YgdGhpcyBwYWNrYWdlXG4gKiDigJQgd2hpY2ggaXMgbm90IHNoaXBwYWJsZSB3aGlsZSB0aGUgY2hlY2twb2ludHMgYXJlIGNsb3NlZC4gQSBob3N0IHByb3ZpZGVzIGFuXG4gKiBpbXBsZW1lbnRhdGlvbiAoc2VlIGBAamF4LWRhdGEtc2NpZW5jZS9zY2ktaW1hZ2UtdmlzdWFsaXplci1qYXgtdG9vbHNgKSwgb3JcbiAqIG5vdGhpbmcgZG9lcyBhbmQgbm8gdG9vbCBuZWVkaW5nIGl0IGlzIHJlZ2lzdGVyZWQuXG4gKi9cbmV4cG9ydCBjb25zdCBJTlNUQU5DRV9TRUdNRU5URVIgPSBuZXcgSW5qZWN0aW9uVG9rZW48SUluc3RhbmNlU2VnbWVudGVyPignSU5TVEFOQ0VfU0VHTUVOVEVSJyk7XG4iXX0=
@@ -1,11 +1,12 @@
1
- import { InjectionToken, inject } from '@angular/core';
2
- import { RetinalSegmenterService } from '../toolbar/segmentation/retinal-segmenter.service';
1
+ import { InjectionToken } from '@angular/core';
3
2
  /**
4
- * DI token for the semantic segmenter, defaulting to the in-library
5
- * jax-ai-js-backed implementation. Hosts override it to supply their own.
3
+ * DI token for the semantic segmenter.
4
+ *
5
+ * **No default.** It used to fall back to an in-library jax-ai-js service, and
6
+ * that factory was what pulled `jax-ai-js` into every bundle of this package —
7
+ * which is not shippable while the checkpoints are closed. A host provides an
8
+ * implementation (see `@jax-data-science/sci-image-visualizer-jax-tools`), or
9
+ * nothing does and no tool needing it is registered.
6
10
  */
7
- export const SEMANTIC_SEGMENTER = new InjectionToken('SEMANTIC_SEGMENTER', {
8
- providedIn: 'root',
9
- factory: () => inject(RetinalSegmenterService),
10
- });
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VtYW50aWMtc2VnbWVudGVyLmNvbnRyYWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jb250cmFjdHMvc2VtYW50aWMtc2VnbWVudGVyLmNvbnRyYWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBNEc1Rjs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLGNBQWMsQ0FBcUIsb0JBQW9CLEVBQUU7SUFDN0YsVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQztDQUMvQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFJldGluYWxTZWdtZW50ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vdG9vbGJhci9zZWdtZW50YXRpb24vcmV0aW5hbC1zZWdtZW50ZXIuc2VydmljZSc7XG5cbi8qKlxuICogUG9ydCBmb3IgYSAqKnNlbWFudGljKiogc2VnbWVudGVyIOKAlCBvbmUgdGhhdCBhc3NpZ25zIGV2ZXJ5IHBpeGVsIGEgY2xhc3MgZnJvbVxuICogYSBmaXhlZCBzZXQsIHdpdGggbm8gbm90aW9uIG9mIHNlcGFyYXRlIG9iamVjdHMuXG4gKlxuICogVGhlIHRoaXJkIHNpYmxpbmcgb2Yge0BsaW5rIElDZWxsU2VnbWVudGVyfSBhbmQge0BsaW5rIElJbnN0YW5jZVNlZ21lbnRlcn0sXG4gKiBhbmQgZ2VudWluZWx5IGEgZGlmZmVyZW50IHNoYXBlIGZyb20gYm90aC4gQ2VsbHBvc2Ugc2VwYXJhdGVzIHRvdWNoaW5nXG4gKiBpbnN0YW5jZXMgb2Ygb25lIGNsYXNzOyBZT0xPIHJldHVybnMgb3ZlcmxhcHBpbmcgY2xhc3NpZmllZCBvYmplY3RzOyB0aGlzXG4gKiByZXR1cm5zICpsYXllcnMqIOKAlCByZWdpb25zIHRoYXQgdGlsZSB0aGUgaW1hZ2UsIG5ldmVyIG92ZXJsYXAsIGFuZCB3aGVyZSB0d29cbiAqIGRpc2Nvbm5lY3RlZCBwYXRjaGVzIG9mIHRoZSBzYW1lIGNsYXNzIGFyZSB0aGUgc2FtZSBmaW5kaW5nIHJhdGhlciB0aGFuIHR3b1xuICogb2JqZWN0cy4gVGhlcmUgaXMgbm8gY29uZmlkZW5jZSBwZXIgb2JqZWN0IGFuZCBubyBOTVMsIGJlY2F1c2UgdGhlcmUgYXJlIG5vXG4gKiBvYmplY3RzLlxuICpcbiAqIFJlc3VsdHMgYXJlIGRlbGl2ZXJlZCBhcyBwb2x5Z29uIHJpbmdzIGluICoqaW1hZ2UgcGl4ZWxzKiosIHNvIGEgY2FsbGVyIGNhblxuICogYnVpbGQge0BsaW5rIFJlZ2lvbn1zIGRpcmVjdGx5IOKAlCB0aGUgc2FtZSBjdXJyZW5jeSB0aGUgb3RoZXIgdHdvIHBvcnRzIHVzZS5cbiAqL1xuXG4vKiogQSBjbG9zZWQgcmluZzsgdGhlIGxhc3QgcG9pbnQgaXMgTk9UIGEgcmVwZWF0IG9mIHRoZSBmaXJzdC4gKi9cbmV4cG9ydCB0eXBlIFNlbWFudGljUmluZyA9IEFycmF5PFtudW1iZXIsIG51bWJlcl0+O1xuXG4vKiogT25lIGNvbm5lY3RlZCBjb21wb25lbnQgb2Ygb25lIGNsYXNzLCB3aXRoIGFueSBpbnRlcmlvciB2b2lkcy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VtYW50aWNSZWdpb24ge1xuICBleHRlcmlvcjogU2VtYW50aWNSaW5nO1xuICBob2xlczogU2VtYW50aWNSaW5nW107XG4gIGNsYXNzSWQ6IG51bWJlcjtcbiAgY2xhc3NOYW1lOiBzdHJpbmc7XG4gIC8qKiBBcmVhIGluIHBpeGVscywgaG9sZXMgYWxyZWFkeSBzdWJ0cmFjdGVkLiAqL1xuICBhcmVhOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VtYW50aWNTZWdtZW50YXRpb24ge1xuICByZWdpb25zOiBTZW1hbnRpY1JlZ2lvbltdO1xuICAvKiogVG90YWwgcGl4ZWxzIGFzc2lnbmVkIHRvIGVhY2ggY2xhc3MsIGluZGV4ZWQgYnkgY2xhc3MgaWQuICovXG4gIGNsYXNzQXJlYXM6IG51bWJlcltdO1xuICAvKiogQ2xhc3MgbmFtZXMgaW5kZXhlZCBieSBjbGFzcyBpZCwgZnJvbSB0aGUgbW9kZWwncyBvd24gbWV0YWRhdGEuICovXG4gIGNsYXNzTmFtZXM6IHN0cmluZ1tdO1xuICB3aWR0aDogbnVtYmVyO1xuICBoZWlnaHQ6IG51bWJlcjtcbiAgLyoqXG4gICAqIEZyYWN0aW9uIG9mIHBpeGVscyB0aGF0IG1ldCBubyBjbGFzcydzIHRocmVzaG9sZC5cbiAgICpcbiAgICogV29ydGggc3VyZmFjaW5nIHJhdGhlciB0aGFuIGRpc2NhcmRpbmc6IHRoZXNlIG1vZGVscyBhcmUgdGhyZXNob2xkZWQgcGVyXG4gICAqIGNsYXNzIHJhdGhlciB0aGFuIGFyZ21heGVkLCBzbyBhIGhpZ2ggdmFsdWUgbWVhbnMgdGhlIG1vZGVsIHdhcyB1bnN1cmVcbiAgICogZXZlcnl3aGVyZSDigJQgd2hpY2ggaXMgdGhlIHNpZ25hdHVyZSBvZiB3cm9uZyBwcmVwcm9jZXNzaW5nICh3cm9uZyBpbnB1dFxuICAgKiBzY2FsZSwgd3JvbmcgZ3JleXNjYWxlKSBsb25nIGJlZm9yZSB0aGUgcG9seWdvbnMgbG9vayBvYnZpb3VzbHkgd3JvbmcuXG4gICAqL1xuICB1bmFzc2lnbmVkRnJhY3Rpb246IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZW1hbnRpY1NlZ21lbnRPcHRpb25zIHtcbiAgLyoqIFdoaWNoIHJlZ2lzdGVyZWQgbW9kZWwgdG8gcnVuLiBEZWZhdWx0cyB0byB0aGUgcmVnaXN0cnkncyBkZWZhdWx0LiAqL1xuICBtb2RlbElkPzogc3RyaW5nO1xuICAvKipcbiAgICogU2NhbGUgdG8gcnVuIGF0LCBhcyBhIGRpdmlzb3Igb2YgZnVsbCByZXNvbHV0aW9uIOKAlCB0aGUgc2FtZSBtZWFuaW5nIHRoZVxuICAgKiBzZXJ2ZXIgZ2l2ZXMgaXQuXG4gICAqXG4gICAqIE1hdHRlcnMgYXMgbXVjaCBoZXJlIGFzIGZvciBhIGRldGVjdG9yOiB0aGVzZSBjaGVja3BvaW50cyB3ZXJlIHRyYWluZWQgb25cbiAgICogNDB4IG9yIDIweCBwYXRjaGVzLCBhbmQgYSBsYXllciBpbWFnZWQgYXQgdGhlIHdyb25nIHNjYWxlIGRvZXMgbm90IGxvb2tcbiAgICogbGlrZSB0aGUgbGF5ZXIgdGhlIG1vZGVsIGxlYXJuZWQuXG4gICAqL1xuICBkb3duc2FtcGxpbmdGYWN0b3I/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBNaW5pbXVtIHByb2JhYmlsaXR5IGZvciBhIHBpeGVsIHRvIGJlIGFzc2lnbmVkIHRvIGEgY2xhc3MsIGRlZmF1bHQgMC41LlxuICAgKlxuICAgKiBOb3QgYSBwbGFpbiBhcmdtYXguIFRoZSByZWZlcmVuY2Ugd29ya2VyIHRocmVzaG9sZHMgZWFjaCBjbGFzcyBjaGFubmVsXG4gICAqIGluZGVwZW5kZW50bHkgYXQgMC41OyBiZWNhdXNlIHRoZSBtb2RlbCdzIGxhc3QgbGF5ZXIgaXMgYSBzb2Z0bWF4IGF0IG1vc3RcbiAgICogb25lIGNsYXNzIGNhbiBjbGVhciB0aGF0LCBzbyB0aGlzIGlzIGFyZ21heCAqcGx1cyBhIGNvbmZpZGVuY2UgZmxvb3IqIOKAlFxuICAgKiBwaXhlbHMgd2hlcmUgdGhlIHdpbm5lciBpcyB3ZWFrIGFyZSBsZWZ0IHVuYXNzaWduZWQgcmF0aGVyIHRoYW4gZm9yY2VkIGludG9cbiAgICogdGhlIGJlc3Qgb2YgYSBiYWQgc2V0LiBMb3dlcmluZyBpdCB0b3dhcmQgMC4yNSBhcHByb2FjaGVzIGEgdHJ1ZSBhcmdtYXggYW5kXG4gICAqIHZpc2libHkgZmF0dGVucyBldmVyeSBsYXllci5cbiAgICovXG4gIGNsYXNzVGhyZXNob2xkPzogbnVtYmVyO1xuICAvKiogS2VlcCBvbmx5IHRoZXNlIGNsYXNzIGlkczsgb21pdCBmb3IgZXZlcnl0aGluZyBleGNlcHQgYmFja2dyb3VuZC4gKi9cbiAgY2xhc3NGaWx0ZXI/OiBudW1iZXJbXTtcbiAgLyoqIERvdWdsYXMtUGV1Y2tlciB0b2xlcmFuY2UgaW4gcGl4ZWxzIGZvciBvdXRsaW5lIHNpbXBsaWZpY2F0aW9uOyAwIGRpc2FibGVzLiAqL1xuICBzaW1wbGlmeVRvbGVyYW5jZT86IG51bWJlcjtcbiAgLyoqIERyb3AgcmVnaW9ucyB3aG9zZSBhcmVhIGlzIGJlbG93IHRoaXMsIGluIHNxdWFyZSBwaXhlbHMuICovXG4gIG1pbkFyZWE/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBDb29wZXJhdGl2ZSBjYW5jZWxsYXRpb24sIGNoZWNrZWQgYXQgcGF0Y2ggYm91bmRhcmllcyDigJQgc28gaXQgdGFrZXMgZWZmZWN0XG4gICAqIHdpdGhpbiByb3VnaGx5IG9uZSBwYXRjaCByYXRoZXIgdGhhbiBpbnN0YW50bHkuXG4gICAqL1xuICBzaWduYWw/OiBBYm9ydFNpZ25hbDtcbn1cblxuLyoqIFByb2dyZXNzL3N0YXR1cyBjYWxsYmFja3MgKGFsbCBvcHRpb25hbCkuIE1pcnJvcnMge0BsaW5rIEluc3RhbmNlU2VnbWVudFByb2dyZXNzfS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VtYW50aWNTZWdtZW50UHJvZ3Jlc3Mge1xuICAvKiogTW9kZWwtZG93bmxvYWQgcHJvZ3Jlc3MsIDAuLjEgKGZpcnN0IHJ1biBvbmx5KS4gKi9cbiAgb25Qcm9ncmVzcz86IChmcmFjdGlvbjogbnVtYmVyKSA9PiB2b2lkO1xuICAvKipcbiAgICogUmF3IGRvd25sb2FkIGJ5dGUgY291bnRzLCBmb3IgaG9zdHMgdGhhdCByZW5kZXIgYSBzaXplIHJhdGhlciB0aGFuIGEgYmFyZVxuICAgKiBwZXJjZW50YWdlLiBgdG90YWxgIGlzIG51bGwgd2hlbiB0aGUgcmVzcG9uc2UgY2FycmllZCBubyBDb250ZW50LUxlbmd0aC5cbiAgICovXG4gIG9uQnl0ZXM/OiAobG9hZGVkOiBudW1iZXIsIHRvdGFsOiBudW1iZXIgfCBudWxsKSA9PiB2b2lkO1xuICAvKiogSHVtYW4tcmVhZGFibGUgcGhhc2UsIGUuZy4gJ1NlZ21lbnRpbmcgcGF0Y2ggMy844oCmJy4gKi9cbiAgb25TdGF0dXM/OiAoc3RhdHVzOiBzdHJpbmcpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVNlbWFudGljU2VnbWVudGVyIHtcbiAgLyoqIEFzc2lnbiBldmVyeSBwaXhlbCBhIGNsYXNzIGFuZCByZXR1cm4gdGhlIHJlc3VsdGluZyByZWdpb25zLiAqL1xuICBzZWdtZW50U2VtYW50aWMoXG4gICAgaW1hZ2U6IHsgZGF0YTogVWludDhDbGFtcGVkQXJyYXk7IHdpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyIH0sXG4gICAgb3B0cz86IFNlbWFudGljU2VnbWVudE9wdGlvbnMsXG4gICAgcHJvZ3Jlc3M/OiBTZW1hbnRpY1NlZ21lbnRQcm9ncmVzcyxcbiAgKTogUHJvbWlzZTxTZW1hbnRpY1NlZ21lbnRhdGlvbj47XG59XG5cbi8qKlxuICogREkgdG9rZW4gZm9yIHRoZSBzZW1hbnRpYyBzZWdtZW50ZXIsIGRlZmF1bHRpbmcgdG8gdGhlIGluLWxpYnJhcnlcbiAqIGpheC1haS1qcy1iYWNrZWQgaW1wbGVtZW50YXRpb24uIEhvc3RzIG92ZXJyaWRlIGl0IHRvIHN1cHBseSB0aGVpciBvd24uXG4gKi9cbmV4cG9ydCBjb25zdCBTRU1BTlRJQ19TRUdNRU5URVIgPSBuZXcgSW5qZWN0aW9uVG9rZW48SVNlbWFudGljU2VnbWVudGVyPignU0VNQU5USUNfU0VHTUVOVEVSJywge1xuICBwcm92aWRlZEluOiAncm9vdCcsXG4gIGZhY3Rvcnk6ICgpID0+IGluamVjdChSZXRpbmFsU2VnbWVudGVyU2VydmljZSksXG59KTtcbiJdfQ==
11
+ export const SEMANTIC_SEGMENTER = new InjectionToken('SEMANTIC_SEGMENTER');
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VtYW50aWMtc2VnbWVudGVyLmNvbnRyYWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jb250cmFjdHMvc2VtYW50aWMtc2VnbWVudGVyLmNvbnRyYWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUE2Ry9DOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxjQUFjLENBQXFCLG9CQUFvQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5cbi8qKlxuICogUG9ydCBmb3IgYSAqKnNlbWFudGljKiogc2VnbWVudGVyIOKAlCBvbmUgdGhhdCBhc3NpZ25zIGV2ZXJ5IHBpeGVsIGEgY2xhc3MgZnJvbVxuICogYSBmaXhlZCBzZXQsIHdpdGggbm8gbm90aW9uIG9mIHNlcGFyYXRlIG9iamVjdHMuXG4gKlxuICogVGhlIHRoaXJkIHNpYmxpbmcgb2Yge0BsaW5rIElDZWxsU2VnbWVudGVyfSBhbmQge0BsaW5rIElJbnN0YW5jZVNlZ21lbnRlcn0sXG4gKiBhbmQgZ2VudWluZWx5IGEgZGlmZmVyZW50IHNoYXBlIGZyb20gYm90aC4gQ2VsbHBvc2Ugc2VwYXJhdGVzIHRvdWNoaW5nXG4gKiBpbnN0YW5jZXMgb2Ygb25lIGNsYXNzOyBZT0xPIHJldHVybnMgb3ZlcmxhcHBpbmcgY2xhc3NpZmllZCBvYmplY3RzOyB0aGlzXG4gKiByZXR1cm5zICpsYXllcnMqIOKAlCByZWdpb25zIHRoYXQgdGlsZSB0aGUgaW1hZ2UsIG5ldmVyIG92ZXJsYXAsIGFuZCB3aGVyZSB0d29cbiAqIGRpc2Nvbm5lY3RlZCBwYXRjaGVzIG9mIHRoZSBzYW1lIGNsYXNzIGFyZSB0aGUgc2FtZSBmaW5kaW5nIHJhdGhlciB0aGFuIHR3b1xuICogb2JqZWN0cy4gVGhlcmUgaXMgbm8gY29uZmlkZW5jZSBwZXIgb2JqZWN0IGFuZCBubyBOTVMsIGJlY2F1c2UgdGhlcmUgYXJlIG5vXG4gKiBvYmplY3RzLlxuICpcbiAqIFJlc3VsdHMgYXJlIGRlbGl2ZXJlZCBhcyBwb2x5Z29uIHJpbmdzIGluICoqaW1hZ2UgcGl4ZWxzKiosIHNvIGEgY2FsbGVyIGNhblxuICogYnVpbGQge0BsaW5rIFJlZ2lvbn1zIGRpcmVjdGx5IOKAlCB0aGUgc2FtZSBjdXJyZW5jeSB0aGUgb3RoZXIgdHdvIHBvcnRzIHVzZS5cbiAqL1xuXG4vKiogQSBjbG9zZWQgcmluZzsgdGhlIGxhc3QgcG9pbnQgaXMgTk9UIGEgcmVwZWF0IG9mIHRoZSBmaXJzdC4gKi9cbmV4cG9ydCB0eXBlIFNlbWFudGljUmluZyA9IEFycmF5PFtudW1iZXIsIG51bWJlcl0+O1xuXG4vKiogT25lIGNvbm5lY3RlZCBjb21wb25lbnQgb2Ygb25lIGNsYXNzLCB3aXRoIGFueSBpbnRlcmlvciB2b2lkcy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VtYW50aWNSZWdpb24ge1xuICBleHRlcmlvcjogU2VtYW50aWNSaW5nO1xuICBob2xlczogU2VtYW50aWNSaW5nW107XG4gIGNsYXNzSWQ6IG51bWJlcjtcbiAgY2xhc3NOYW1lOiBzdHJpbmc7XG4gIC8qKiBBcmVhIGluIHBpeGVscywgaG9sZXMgYWxyZWFkeSBzdWJ0cmFjdGVkLiAqL1xuICBhcmVhOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VtYW50aWNTZWdtZW50YXRpb24ge1xuICByZWdpb25zOiBTZW1hbnRpY1JlZ2lvbltdO1xuICAvKiogVG90YWwgcGl4ZWxzIGFzc2lnbmVkIHRvIGVhY2ggY2xhc3MsIGluZGV4ZWQgYnkgY2xhc3MgaWQuICovXG4gIGNsYXNzQXJlYXM6IG51bWJlcltdO1xuICAvKiogQ2xhc3MgbmFtZXMgaW5kZXhlZCBieSBjbGFzcyBpZCwgZnJvbSB0aGUgbW9kZWwncyBvd24gbWV0YWRhdGEuICovXG4gIGNsYXNzTmFtZXM6IHN0cmluZ1tdO1xuICB3aWR0aDogbnVtYmVyO1xuICBoZWlnaHQ6IG51bWJlcjtcbiAgLyoqXG4gICAqIEZyYWN0aW9uIG9mIHBpeGVscyB0aGF0IG1ldCBubyBjbGFzcydzIHRocmVzaG9sZC5cbiAgICpcbiAgICogV29ydGggc3VyZmFjaW5nIHJhdGhlciB0aGFuIGRpc2NhcmRpbmc6IHRoZXNlIG1vZGVscyBhcmUgdGhyZXNob2xkZWQgcGVyXG4gICAqIGNsYXNzIHJhdGhlciB0aGFuIGFyZ21heGVkLCBzbyBhIGhpZ2ggdmFsdWUgbWVhbnMgdGhlIG1vZGVsIHdhcyB1bnN1cmVcbiAgICogZXZlcnl3aGVyZSDigJQgd2hpY2ggaXMgdGhlIHNpZ25hdHVyZSBvZiB3cm9uZyBwcmVwcm9jZXNzaW5nICh3cm9uZyBpbnB1dFxuICAgKiBzY2FsZSwgd3JvbmcgZ3JleXNjYWxlKSBsb25nIGJlZm9yZSB0aGUgcG9seWdvbnMgbG9vayBvYnZpb3VzbHkgd3JvbmcuXG4gICAqL1xuICB1bmFzc2lnbmVkRnJhY3Rpb246IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZW1hbnRpY1NlZ21lbnRPcHRpb25zIHtcbiAgLyoqIFdoaWNoIHJlZ2lzdGVyZWQgbW9kZWwgdG8gcnVuLiBEZWZhdWx0cyB0byB0aGUgcmVnaXN0cnkncyBkZWZhdWx0LiAqL1xuICBtb2RlbElkPzogc3RyaW5nO1xuICAvKipcbiAgICogU2NhbGUgdG8gcnVuIGF0LCBhcyBhIGRpdmlzb3Igb2YgZnVsbCByZXNvbHV0aW9uIOKAlCB0aGUgc2FtZSBtZWFuaW5nIHRoZVxuICAgKiBzZXJ2ZXIgZ2l2ZXMgaXQuXG4gICAqXG4gICAqIE1hdHRlcnMgYXMgbXVjaCBoZXJlIGFzIGZvciBhIGRldGVjdG9yOiB0aGVzZSBjaGVja3BvaW50cyB3ZXJlIHRyYWluZWQgb25cbiAgICogNDB4IG9yIDIweCBwYXRjaGVzLCBhbmQgYSBsYXllciBpbWFnZWQgYXQgdGhlIHdyb25nIHNjYWxlIGRvZXMgbm90IGxvb2tcbiAgICogbGlrZSB0aGUgbGF5ZXIgdGhlIG1vZGVsIGxlYXJuZWQuXG4gICAqL1xuICBkb3duc2FtcGxpbmdGYWN0b3I/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBNaW5pbXVtIHByb2JhYmlsaXR5IGZvciBhIHBpeGVsIHRvIGJlIGFzc2lnbmVkIHRvIGEgY2xhc3MsIGRlZmF1bHQgMC41LlxuICAgKlxuICAgKiBOb3QgYSBwbGFpbiBhcmdtYXguIFRoZSByZWZlcmVuY2Ugd29ya2VyIHRocmVzaG9sZHMgZWFjaCBjbGFzcyBjaGFubmVsXG4gICAqIGluZGVwZW5kZW50bHkgYXQgMC41OyBiZWNhdXNlIHRoZSBtb2RlbCdzIGxhc3QgbGF5ZXIgaXMgYSBzb2Z0bWF4IGF0IG1vc3RcbiAgICogb25lIGNsYXNzIGNhbiBjbGVhciB0aGF0LCBzbyB0aGlzIGlzIGFyZ21heCAqcGx1cyBhIGNvbmZpZGVuY2UgZmxvb3IqIOKAlFxuICAgKiBwaXhlbHMgd2hlcmUgdGhlIHdpbm5lciBpcyB3ZWFrIGFyZSBsZWZ0IHVuYXNzaWduZWQgcmF0aGVyIHRoYW4gZm9yY2VkIGludG9cbiAgICogdGhlIGJlc3Qgb2YgYSBiYWQgc2V0LiBMb3dlcmluZyBpdCB0b3dhcmQgMC4yNSBhcHByb2FjaGVzIGEgdHJ1ZSBhcmdtYXggYW5kXG4gICAqIHZpc2libHkgZmF0dGVucyBldmVyeSBsYXllci5cbiAgICovXG4gIGNsYXNzVGhyZXNob2xkPzogbnVtYmVyO1xuICAvKiogS2VlcCBvbmx5IHRoZXNlIGNsYXNzIGlkczsgb21pdCBmb3IgZXZlcnl0aGluZyBleGNlcHQgYmFja2dyb3VuZC4gKi9cbiAgY2xhc3NGaWx0ZXI/OiBudW1iZXJbXTtcbiAgLyoqIERvdWdsYXMtUGV1Y2tlciB0b2xlcmFuY2UgaW4gcGl4ZWxzIGZvciBvdXRsaW5lIHNpbXBsaWZpY2F0aW9uOyAwIGRpc2FibGVzLiAqL1xuICBzaW1wbGlmeVRvbGVyYW5jZT86IG51bWJlcjtcbiAgLyoqIERyb3AgcmVnaW9ucyB3aG9zZSBhcmVhIGlzIGJlbG93IHRoaXMsIGluIHNxdWFyZSBwaXhlbHMuICovXG4gIG1pbkFyZWE/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBDb29wZXJhdGl2ZSBjYW5jZWxsYXRpb24sIGNoZWNrZWQgYXQgcGF0Y2ggYm91bmRhcmllcyDigJQgc28gaXQgdGFrZXMgZWZmZWN0XG4gICAqIHdpdGhpbiByb3VnaGx5IG9uZSBwYXRjaCByYXRoZXIgdGhhbiBpbnN0YW50bHkuXG4gICAqL1xuICBzaWduYWw/OiBBYm9ydFNpZ25hbDtcbn1cblxuLyoqIFByb2dyZXNzL3N0YXR1cyBjYWxsYmFja3MgKGFsbCBvcHRpb25hbCkuIE1pcnJvcnMge0BsaW5rIEluc3RhbmNlU2VnbWVudFByb2dyZXNzfS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VtYW50aWNTZWdtZW50UHJvZ3Jlc3Mge1xuICAvKiogTW9kZWwtZG93bmxvYWQgcHJvZ3Jlc3MsIDAuLjEgKGZpcnN0IHJ1biBvbmx5KS4gKi9cbiAgb25Qcm9ncmVzcz86IChmcmFjdGlvbjogbnVtYmVyKSA9PiB2b2lkO1xuICAvKipcbiAgICogUmF3IGRvd25sb2FkIGJ5dGUgY291bnRzLCBmb3IgaG9zdHMgdGhhdCByZW5kZXIgYSBzaXplIHJhdGhlciB0aGFuIGEgYmFyZVxuICAgKiBwZXJjZW50YWdlLiBgdG90YWxgIGlzIG51bGwgd2hlbiB0aGUgcmVzcG9uc2UgY2FycmllZCBubyBDb250ZW50LUxlbmd0aC5cbiAgICovXG4gIG9uQnl0ZXM/OiAobG9hZGVkOiBudW1iZXIsIHRvdGFsOiBudW1iZXIgfCBudWxsKSA9PiB2b2lkO1xuICAvKiogSHVtYW4tcmVhZGFibGUgcGhhc2UsIGUuZy4gJ1NlZ21lbnRpbmcgcGF0Y2ggMy844oCmJy4gKi9cbiAgb25TdGF0dXM/OiAoc3RhdHVzOiBzdHJpbmcpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVNlbWFudGljU2VnbWVudGVyIHtcbiAgLyoqIEFzc2lnbiBldmVyeSBwaXhlbCBhIGNsYXNzIGFuZCByZXR1cm4gdGhlIHJlc3VsdGluZyByZWdpb25zLiAqL1xuICBzZWdtZW50U2VtYW50aWMoXG4gICAgaW1hZ2U6IHsgZGF0YTogVWludDhDbGFtcGVkQXJyYXk7IHdpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyIH0sXG4gICAgb3B0cz86IFNlbWFudGljU2VnbWVudE9wdGlvbnMsXG4gICAgcHJvZ3Jlc3M/OiBTZW1hbnRpY1NlZ21lbnRQcm9ncmVzcyxcbiAgKTogUHJvbWlzZTxTZW1hbnRpY1NlZ21lbnRhdGlvbj47XG59XG5cbi8qKlxuICogREkgdG9rZW4gZm9yIHRoZSBzZW1hbnRpYyBzZWdtZW50ZXIuXG4gKlxuICogKipObyBkZWZhdWx0LioqIEl0IHVzZWQgdG8gZmFsbCBiYWNrIHRvIGFuIGluLWxpYnJhcnkgamF4LWFpLWpzIHNlcnZpY2UsIGFuZFxuICogdGhhdCBmYWN0b3J5IHdhcyB3aGF0IHB1bGxlZCBgamF4LWFpLWpzYCBpbnRvIGV2ZXJ5IGJ1bmRsZSBvZiB0aGlzIHBhY2thZ2Ug4oCUXG4gKiB3aGljaCBpcyBub3Qgc2hpcHBhYmxlIHdoaWxlIHRoZSBjaGVja3BvaW50cyBhcmUgY2xvc2VkLiBBIGhvc3QgcHJvdmlkZXMgYW5cbiAqIGltcGxlbWVudGF0aW9uIChzZWUgYEBqYXgtZGF0YS1zY2llbmNlL3NjaS1pbWFnZS12aXN1YWxpemVyLWpheC10b29sc2ApLCBvclxuICogbm90aGluZyBkb2VzIGFuZCBubyB0b29sIG5lZWRpbmcgaXQgaXMgcmVnaXN0ZXJlZC5cbiAqL1xuZXhwb3J0IGNvbnN0IFNFTUFOVElDX1NFR01FTlRFUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJU2VtYW50aWNTZWdtZW50ZXI+KCdTRU1BTlRJQ19TRUdNRU5URVInKTtcbiJdfQ==
@@ -0,0 +1,64 @@
1
+ /**
2
+ * How a tool gets into the toolbar without this library knowing what it is.
3
+ *
4
+ * WHY THIS EXISTS
5
+ * The YOLO detector and the retinal-layer segmenter used to be built in: their
6
+ * buttons were hardcoded in the toolbar template, their model registries named
7
+ * JAX checkpoints, and the `INSTANCE_SEGMENTER` / `SEMANTIC_SEGMENTER` tokens
8
+ * defaulted to in-library services that imported `yolo-segdetect-js` and
9
+ * `jax-ai-js`. Those default factories were the only thing pulling either
10
+ * package into the bundle — the contracts themselves were already clean.
11
+ *
12
+ * That arrangement cannot ship in an open library while the models are closed.
13
+ * So the tools move out, into a package that depends on this one, and arrive
14
+ * back through {@link TOOLBAR_TOOLS}. This library keeps the contracts, the
15
+ * chrome and the region plumbing; it no longer knows that YOLO exists.
16
+ *
17
+ * A host registers tools with a multi-provider:
18
+ *
19
+ * { provide: TOOLBAR_TOOLS, useExisting: YoloToolContribution, multi: true }
20
+ *
21
+ * Register nothing and the toolbar has no segmentation tools, the help dialog
22
+ * lists none, and neither model package is in the graph.
23
+ *
24
+ * WHY PARAMS ARE DECLARED, NOT RENDERED
25
+ * A contribution describes its parameters ({@link ToolParamSpec}) instead of
26
+ * supplying a component to draw them. The toolbar renders one generic dialog
27
+ * from that description. The alternative — each plugin shipping its own dialog
28
+ * component — would make every plugin depend on this library's exact PrimeNG
29
+ * version and styling internals to look like the rest of the toolbar, and the
30
+ * two dialogs that exist today are entirely numbers and one checkbox. A schema
31
+ * covers them, and it is the same shape jit-ui already uses for its pipeline
32
+ * step parameters, so the vocabulary is familiar.
33
+ *
34
+ * If a tool ever needs a control this cannot express, add a variant here rather
35
+ * than an escape hatch that returns a component — the moment one tool draws
36
+ * itself, the toolbar stops being able to lay tools out consistently.
37
+ *
38
+ * WHY AN EMPTY MODEL LIST HIDES THE TOOL
39
+ * {@link ToolbarToolContribution.models} returning `[]` removes the tool from
40
+ * the toolbar entirely. This preserves the behaviour the built-in tools already
41
+ * had (their buttons were `*ngIf`'d on a filtered registry), and it gives a host
42
+ * one switch for "the weights are not configured in this deployment" that does
43
+ * not require unregistering the provider.
44
+ */
45
+ import { InjectionToken } from '@angular/core';
46
+ /**
47
+ * Multi-provider token for contributed tools.
48
+ *
49
+ * Deliberately has no `factory`: unregistered means no tools, which is what
50
+ * makes this library shippable without the closed model packages. Inject it
51
+ * `{ optional: true }` and treat null as empty.
52
+ */
53
+ export const TOOLBAR_TOOLS = new InjectionToken('TOOLBAR_TOOLS');
54
+ /** Sort contributed tools into display order. */
55
+ export function sortToolContributions(tools) {
56
+ // Stable: equal `order` keeps registration order, so a host controls ties by
57
+ // provider order without having to invent numbers.
58
+ return tools.map((t, i) => ({ t, i })).sort((a, b) => (a.t.order ?? 100) - (b.t.order ?? 100) || a.i - b.i).map(({ t }) => t);
59
+ }
60
+ /** The tools a toolbar should actually show: those with at least one model. */
61
+ export function visibleToolContributions(tools) {
62
+ return sortToolContributions(tools ?? []).filter((t) => t.models().length > 0);
63
+ }
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJhci10b29sLmNvbnRyYWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jb250cmFjdHMvdG9vbGJhci10b29sLmNvbnRyYWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMkNHO0FBQ0gsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQTRJL0M7Ozs7OztHQU1HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLElBQUksY0FBYyxDQUFxQyxlQUFlLENBQUMsQ0FBQztBQUVyRyxpREFBaUQ7QUFDakQsTUFBTSxVQUFVLHFCQUFxQixDQUNuQyxLQUF5QztJQUV6Qyw2RUFBNkU7SUFDN0UsbURBQW1EO0lBQ25ELE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUNuRCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUNyRCxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3RCLENBQUM7QUFFRCwrRUFBK0U7QUFDL0UsTUFBTSxVQUFVLHdCQUF3QixDQUN0QyxLQUE0RDtJQUU1RCxPQUFPLHFCQUFxQixDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDakYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogSG93IGEgdG9vbCBnZXRzIGludG8gdGhlIHRvb2xiYXIgd2l0aG91dCB0aGlzIGxpYnJhcnkga25vd2luZyB3aGF0IGl0IGlzLlxuICpcbiAqIFdIWSBUSElTIEVYSVNUU1xuICogVGhlIFlPTE8gZGV0ZWN0b3IgYW5kIHRoZSByZXRpbmFsLWxheWVyIHNlZ21lbnRlciB1c2VkIHRvIGJlIGJ1aWx0IGluOiB0aGVpclxuICogYnV0dG9ucyB3ZXJlIGhhcmRjb2RlZCBpbiB0aGUgdG9vbGJhciB0ZW1wbGF0ZSwgdGhlaXIgbW9kZWwgcmVnaXN0cmllcyBuYW1lZFxuICogSkFYIGNoZWNrcG9pbnRzLCBhbmQgdGhlIGBJTlNUQU5DRV9TRUdNRU5URVJgIC8gYFNFTUFOVElDX1NFR01FTlRFUmAgdG9rZW5zXG4gKiBkZWZhdWx0ZWQgdG8gaW4tbGlicmFyeSBzZXJ2aWNlcyB0aGF0IGltcG9ydGVkIGB5b2xvLXNlZ2RldGVjdC1qc2AgYW5kXG4gKiBgamF4LWFpLWpzYC4gVGhvc2UgZGVmYXVsdCBmYWN0b3JpZXMgd2VyZSB0aGUgb25seSB0aGluZyBwdWxsaW5nIGVpdGhlclxuICogcGFja2FnZSBpbnRvIHRoZSBidW5kbGUg4oCUIHRoZSBjb250cmFjdHMgdGhlbXNlbHZlcyB3ZXJlIGFscmVhZHkgY2xlYW4uXG4gKlxuICogVGhhdCBhcnJhbmdlbWVudCBjYW5ub3Qgc2hpcCBpbiBhbiBvcGVuIGxpYnJhcnkgd2hpbGUgdGhlIG1vZGVscyBhcmUgY2xvc2VkLlxuICogU28gdGhlIHRvb2xzIG1vdmUgb3V0LCBpbnRvIGEgcGFja2FnZSB0aGF0IGRlcGVuZHMgb24gdGhpcyBvbmUsIGFuZCBhcnJpdmVcbiAqIGJhY2sgdGhyb3VnaCB7QGxpbmsgVE9PTEJBUl9UT09MU30uIFRoaXMgbGlicmFyeSBrZWVwcyB0aGUgY29udHJhY3RzLCB0aGVcbiAqIGNocm9tZSBhbmQgdGhlIHJlZ2lvbiBwbHVtYmluZzsgaXQgbm8gbG9uZ2VyIGtub3dzIHRoYXQgWU9MTyBleGlzdHMuXG4gKlxuICogQSBob3N0IHJlZ2lzdGVycyB0b29scyB3aXRoIGEgbXVsdGktcHJvdmlkZXI6XG4gKlxuICogICAgIHsgcHJvdmlkZTogVE9PTEJBUl9UT09MUywgdXNlRXhpc3Rpbmc6IFlvbG9Ub29sQ29udHJpYnV0aW9uLCBtdWx0aTogdHJ1ZSB9XG4gKlxuICogUmVnaXN0ZXIgbm90aGluZyBhbmQgdGhlIHRvb2xiYXIgaGFzIG5vIHNlZ21lbnRhdGlvbiB0b29scywgdGhlIGhlbHAgZGlhbG9nXG4gKiBsaXN0cyBub25lLCBhbmQgbmVpdGhlciBtb2RlbCBwYWNrYWdlIGlzIGluIHRoZSBncmFwaC5cbiAqXG4gKiBXSFkgUEFSQU1TIEFSRSBERUNMQVJFRCwgTk9UIFJFTkRFUkVEXG4gKiBBIGNvbnRyaWJ1dGlvbiBkZXNjcmliZXMgaXRzIHBhcmFtZXRlcnMgKHtAbGluayBUb29sUGFyYW1TcGVjfSkgaW5zdGVhZCBvZlxuICogc3VwcGx5aW5nIGEgY29tcG9uZW50IHRvIGRyYXcgdGhlbS4gVGhlIHRvb2xiYXIgcmVuZGVycyBvbmUgZ2VuZXJpYyBkaWFsb2dcbiAqIGZyb20gdGhhdCBkZXNjcmlwdGlvbi4gVGhlIGFsdGVybmF0aXZlIOKAlCBlYWNoIHBsdWdpbiBzaGlwcGluZyBpdHMgb3duIGRpYWxvZ1xuICogY29tcG9uZW50IOKAlCB3b3VsZCBtYWtlIGV2ZXJ5IHBsdWdpbiBkZXBlbmQgb24gdGhpcyBsaWJyYXJ5J3MgZXhhY3QgUHJpbWVOR1xuICogdmVyc2lvbiBhbmQgc3R5bGluZyBpbnRlcm5hbHMgdG8gbG9vayBsaWtlIHRoZSByZXN0IG9mIHRoZSB0b29sYmFyLCBhbmQgdGhlXG4gKiB0d28gZGlhbG9ncyB0aGF0IGV4aXN0IHRvZGF5IGFyZSBlbnRpcmVseSBudW1iZXJzIGFuZCBvbmUgY2hlY2tib3guIEEgc2NoZW1hXG4gKiBjb3ZlcnMgdGhlbSwgYW5kIGl0IGlzIHRoZSBzYW1lIHNoYXBlIGppdC11aSBhbHJlYWR5IHVzZXMgZm9yIGl0cyBwaXBlbGluZVxuICogc3RlcCBwYXJhbWV0ZXJzLCBzbyB0aGUgdm9jYWJ1bGFyeSBpcyBmYW1pbGlhci5cbiAqXG4gKiBJZiBhIHRvb2wgZXZlciBuZWVkcyBhIGNvbnRyb2wgdGhpcyBjYW5ub3QgZXhwcmVzcywgYWRkIGEgdmFyaWFudCBoZXJlIHJhdGhlclxuICogdGhhbiBhbiBlc2NhcGUgaGF0Y2ggdGhhdCByZXR1cm5zIGEgY29tcG9uZW50IOKAlCB0aGUgbW9tZW50IG9uZSB0b29sIGRyYXdzXG4gKiBpdHNlbGYsIHRoZSB0b29sYmFyIHN0b3BzIGJlaW5nIGFibGUgdG8gbGF5IHRvb2xzIG91dCBjb25zaXN0ZW50bHkuXG4gKlxuICogV0hZIEFOIEVNUFRZIE1PREVMIExJU1QgSElERVMgVEhFIFRPT0xcbiAqIHtAbGluayBUb29sYmFyVG9vbENvbnRyaWJ1dGlvbi5tb2RlbHN9IHJldHVybmluZyBgW11gIHJlbW92ZXMgdGhlIHRvb2wgZnJvbVxuICogdGhlIHRvb2xiYXIgZW50aXJlbHkuIFRoaXMgcHJlc2VydmVzIHRoZSBiZWhhdmlvdXIgdGhlIGJ1aWx0LWluIHRvb2xzIGFscmVhZHlcbiAqIGhhZCAodGhlaXIgYnV0dG9ucyB3ZXJlIGAqbmdJZmAnZCBvbiBhIGZpbHRlcmVkIHJlZ2lzdHJ5KSwgYW5kIGl0IGdpdmVzIGEgaG9zdFxuICogb25lIHN3aXRjaCBmb3IgXCJ0aGUgd2VpZ2h0cyBhcmUgbm90IGNvbmZpZ3VyZWQgaW4gdGhpcyBkZXBsb3ltZW50XCIgdGhhdCBkb2VzXG4gKiBub3QgcmVxdWlyZSB1bnJlZ2lzdGVyaW5nIHRoZSBwcm92aWRlci5cbiAqL1xuaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0eXBlIHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgdHlwZSB7IElWaXN1YWxpemVyIH0gZnJvbSAnLi92aXN1YWxpemVyLmNvbnRyYWN0JztcblxuLyoqIEEgbnVtYmVyIGZpZWxkLiBSZW5kZXJlZCBhcyBhIHN0ZXBwZXIsIG1hdGNoaW5nIHRoZSBidWlsdC1pbiBkaWFsb2dzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBOdW1iZXJQYXJhbVNwZWMge1xuICBpZDogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICB0eXBlOiAnbnVtYmVyJztcbiAgbWluPzogbnVtYmVyO1xuICBtYXg/OiBudW1iZXI7XG4gIHN0ZXA/OiBudW1iZXI7XG4gIC8qKiBEZWNpbWFsIHBsYWNlcyB0byBzaG93LiBPbWl0IGZvciBpbnRlZ2Vycy4gKi9cbiAgZnJhY3Rpb25EaWdpdHM/OiBudW1iZXI7XG4gIC8qKiBIb3ZlciBoZWxwLiBQbGFpbiB0ZXh0OyBpdCBpcyBub3QgcmVuZGVyZWQgYXMgSFRNTC4gKi9cbiAgdG9vbHRpcD86IHN0cmluZztcbn1cblxuLyoqIEEgY2hlY2tib3guIGBsYWJlbGAgc2l0cyBiZXNpZGUgaXQgYW5kIG1heSBydW4gdG8gYSBzZW50ZW5jZSBvciB0d28uICovXG5leHBvcnQgaW50ZXJmYWNlIEJvb2xlYW5QYXJhbVNwZWMge1xuICBpZDogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICB0eXBlOiAnYm9vbGVhbic7XG4gIHRvb2x0aXA/OiBzdHJpbmc7XG59XG5cbi8qKiBBIGZpeGVkIHNldCBvZiBjaG9pY2VzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZWxlY3RQYXJhbVNwZWMge1xuICBpZDogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICB0eXBlOiAnc2VsZWN0JztcbiAgb3B0aW9uczogeyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIH1bXTtcbiAgdG9vbHRpcD86IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgVG9vbFBhcmFtU3BlYyA9IE51bWJlclBhcmFtU3BlYyB8IEJvb2xlYW5QYXJhbVNwZWMgfCBTZWxlY3RQYXJhbVNwZWM7XG5cbi8qKiBPbmUgc2VsZWN0YWJsZSBjaGVja3BvaW50LiAqL1xuZXhwb3J0IGludGVyZmFjZSBUb29sTW9kZWxPcHRpb24ge1xuICBpZDogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICAvKipcbiAgICogRGVzY3JpYmVzIHRoZSBjaGVja3BvaW50IGluIHRoZSBwaWNrZXIncyBob3ZlciB0b29sdGlwIOKAlCBzaXplLCBzcGVlZCxcbiAgICogdHJhaW5pbmcgZG9tYWluLCBhY2N1cmFjeS4gKipSZW5kZXJlZCBhcyBIVE1MKiosIHNvIGl0IGlzIHRydXN0ZWQgY29udGVudFxuICAgKiBmcm9tIHRoZSBjb250cmlidXRpbmcgcGFja2FnZSwgbmV2ZXIgYW55dGhpbmcgdXNlci1zdXBwbGllZC5cbiAgICovXG4gIGluZm8/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBQYXJhbWV0ZXIgdmFsdWVzIHRoaXMgY2hlY2twb2ludCB3YW50cywgbWVyZ2VkIG92ZXJcbiAgICoge0BsaW5rIFRvb2xiYXJUb29sQ29udHJpYnV0aW9uLmRlZmF1bHRQYXJhbXN9IHdoZW4gaXQgaXMgc2VsZWN0ZWQuIERlZmF1bHRzXG4gICAqIGJlbG9uZyB0byB0aGUgbW9kZWwgcmF0aGVyIHRoYW4gdGhlIHRvb2wg4oCUIGEgZGV0ZWN0b3IgdHJhaW5lZCBvbiBuYXRpdmUgNDB4XG4gICAqIHBhdGNoZXMgd2FudHMgZGlmZmVyZW50IHRpbGluZyBmcm9tIG9uZSB0cmFpbmVkIG9uIHRodW1ibmFpbHMuXG4gICAqL1xuICBkZWZhdWx0cz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufVxuXG4vKipcbiAqIFRoZSBgc3RhdHVzJGAgLyBgYnVzeSRgIC8gYHByb2dyZXNzJGAgc3VyZmFjZSB0aGUgdG9vbGJhciBkcml2ZXMgaXRzIHN0aWNreVxuICogdG9hc3QgYW5kIHByb2dyZXNzIGJhciBmcm9tLiBgcHJvZ3Jlc3MkYCBpcyBhIDAuLjEgZnJhY3Rpb24sIG9yIC0xIGZvclxuICogaW5kZXRlcm1pbmF0ZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUb29sUHJvZ3Jlc3Mge1xuICBzdGF0dXMkOiBPYnNlcnZhYmxlPHN0cmluZz47XG4gIGJ1c3kkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBwcm9ncmVzcyQ6IE9ic2VydmFibGU8bnVtYmVyPjtcbn1cblxuLyoqIFRvb2xiYXIgaWNvbjogYSBwdWJsaXNoZWQgYXNzZXQsIG9yIGEgUHJpbWVJY29uIGNsYXNzIG5hbWUuICovXG5leHBvcnQgdHlwZSBUb29sSWNvbiA9IHsgc3JjOiBzdHJpbmc7IHBpPzogbmV2ZXIgfSB8IHsgcGk6IHN0cmluZzsgc3JjPzogbmV2ZXIgfTtcblxuLyoqXG4gKiBBIHRvb2wgY29udHJpYnV0ZWQgdG8gdGhlIHRvb2xiYXIuXG4gKlxuICogSW1wbGVtZW50IGl0IG9uIGFuIGBASW5qZWN0YWJsZSgpYCBzZXJ2aWNlIGluIHRoZSBjb250cmlidXRpbmcgcGFja2FnZSwgc28gaXRcbiAqIGNhbiBpbmplY3QgaXRzIG93biBzZWdtZW50ZXIgYW5kIG1vZGVsIHJlZ2lzdHJ5IOKAlCB0aGlzIGxpYnJhcnkgcHJvdmlkZXNcbiAqIG5laXRoZXIgYW5kIG11c3Qgbm90IGxlYXJuIHRvLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRvb2xiYXJUb29sQ29udHJpYnV0aW9uIHtcbiAgLyoqIFN0YWJsZSBpZGVudGl0eSwgdXNlZCBmb3IgdHJhY2tpbmcgYW5kIHBlcnNpc3RlZCBwcmVmZXJlbmNlcy4gKi9cbiAgaWQ6IHN0cmluZztcbiAgLyoqIFNob3J0IG5hbWUsIHVzZWQgaW4gdGhlIHRvYXN0IGFuZCB0aGUgaGVscCBkaWFsb2cgaGVhZGluZy4gKi9cbiAgbGFiZWw6IHN0cmluZztcbiAgaWNvbjogVG9vbEljb247XG5cbiAgLyoqIFRvb2x0aXAgb24gdGhlIHJ1biBidXR0b24g4oCUIHNheSB3aGF0IGl0IGRvZXMgdG8gdGhlIGN1cnJlbnQgdmlldy4gKi9cbiAgcnVuVG9vbHRpcDogc3RyaW5nO1xuICAvKiogVG9vbHRpcCBvbiB0aGUgY2hlY2twb2ludCBwaWNrZXIuIERlZmF1bHRzIHRvIFwiUGljayB0aGUgbW9kZWxcIi4gKi9cbiAgbW9kZWxUb29sdGlwPzogc3RyaW5nO1xuICAvKiogVG9vbHRpcCBvbiB0aGUgcGFyYW1ldGVycyBidXR0b24uIERlZmF1bHRzIHRvIFwiUGFyYW1ldGVyc1wiLiAqL1xuICBwYXJhbXNUb29sdGlwPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGVyZSBpdCBzaXRzIGFtb25nIHRoZSBzZWdtZW50YXRpb24gdG9vbHMuIExvd2VyIHNvcnRzIGZpcnN0OyB0aWVzIGZhbGxcbiAgICogYmFjayB0byByZWdpc3RyYXRpb24gb3JkZXIuIFRoZSBidWlsdC1pbiBwcm9tcHRlZCB0b29scyBvY2N1cHkgMC05OSwgc29cbiAgICogY29udHJpYnV0ZWQgdG9vbHMgc2hvdWxkIHN0YXJ0IGF0IDEwMCB0byBsYW5kIGFmdGVyIHRoZW0uXG4gICAqL1xuICBvcmRlcj86IG51bWJlcjtcblxuICAvKiogU2VsZWN0YWJsZSBjaGVja3BvaW50cy4gKipFbXB0eSBoaWRlcyB0aGUgdG9vbC4qKiAqL1xuICBtb2RlbHMoKTogVG9vbE1vZGVsT3B0aW9uW107XG4gIC8qKiBXaGljaCBjaGVja3BvaW50IHJ1bnMgd2hlbiB0aGUgdXNlciBoYXMgbm90IGNob3Nlbi4gKi9cbiAgZGVmYXVsdE1vZGVsSWQoKTogc3RyaW5nO1xuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gdGhlIHVzZXIgcGlja3MgYSBjaGVja3BvaW50LCBiZWZvcmUgcGFyYW1ldGVycyBhcmUgcmUtc2VlZGVkLlxuICAgKiBVc2UgaXQgdG8gcmVjb3JkIHRoZSBjaG9pY2UgaW4gdGhlIGNvbnRyaWJ1dGluZyBwYWNrYWdlJ3Mgb3duIHJlZ2lzdHJ5LlxuICAgKi9cbiAgb25Nb2RlbENoYW5nZT8obW9kZWxJZDogc3RyaW5nKTogdm9pZDtcblxuICAvKiogUGFyYW1ldGVyIGZpZWxkcywgaW4gZGlhbG9nIG9yZGVyLiBFbXB0eSBoaWRlcyB0aGUgcGFyYW1ldGVycyBidXR0b24uICovXG4gIHBhcmFtczogVG9vbFBhcmFtU3BlY1tdO1xuICAvKipcbiAgICogQmFzZWxpbmUgcGFyYW1ldGVyIHZhbHVlcyBmb3IgYSBjaGVja3BvaW50LiBDYWxsZWQgb24gZmlyc3QgdXNlIGFuZCBhZ2FpblxuICAgKiBvbiBcIlJlc2V0IHRvIG1vZGVsIGRlZmF1bHRzXCIsIHNvIGl0IG11c3QgYmUgcHVyZSBhbmQgbXVzdCByZXR1cm4gZXZlcnkga2V5XG4gICAqIHRoZSB0b29sIHJlYWRzIOKAlCBhIHBhcmFtZXRlciB0aGUgZGlhbG9nIHNob3dzIGJ1dCB0aGlzIG9taXRzIHJlbmRlcnMgYXNcbiAgICogZW1wdHkgYW5kIHJlYWNoZXMgYHJ1bmAgYXMgdW5kZWZpbmVkLlxuICAgKi9cbiAgZGVmYXVsdFBhcmFtcyhtb2RlbElkOiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuICAvKipcbiAgICogRW50cnkgZm9yIHRoZSBoZWxwIGRpYWxvZydzIHRvb2wgbGlzdC4gYGJvZHlgIGlzIHJlbmRlcmVkIGFzIEhUTUwgYW5kIG1heVxuICAgKiByZWZlcmVuY2UgcHVibGlzaGVkIGFzc2V0cyAoZS5nLiB0aGUgdG9vbCdzIG93biBpY29uKS5cbiAgICovXG4gIGhlbHA/OiB7IGJvZHk6IHN0cmluZyB9O1xuXG4gIC8qKiBQcm9ncmVzcyBzdXJmYWNlIGZvciB0aGUgdG9hc3QuICovXG4gIHByb2dyZXNzOiBUb29sUHJvZ3Jlc3M7XG5cbiAgLyoqXG4gICAqIFJ1biBvdmVyIHdoYXQgaXMgY3VycmVudGx5IGRpc3BsYXllZCwgYW5kIHdyaXRlIHdoYXRldmVyIGl0IGZpbmRzIHRocm91Z2hcbiAgICogYHZpemAuIFJlc29sdmVzIHdpdGggdGhlIG51bWJlciBvZiByZWdpb25zIGFkZGVkLlxuICAgKlxuICAgKiBFdmVyeXRoaW5nIHRoZSB0b29sIG5lZWRzIGlzIG9uIHtAbGluayBJVmlzdWFsaXplcn0sIHdoaWNoIGlzIHBhcnQgb2YgdGhpc1xuICAgKiBsaWJyYXJ5J3MgcHVibGljIHN1cmZhY2Ug4oCUIGEgY29udHJpYnV0aW9uIG5ldmVyIHJlYWNoZXMgaW50byBpbnRlcm5hbHMuXG4gICAqIFJlZ2lvbiB3cml0ZXMgZ28gdGhyb3VnaCB0aGUgc2FtZSBwYXRoIHRoZSBidWlsdC1pbiB0b29scyB1c2UsIHNvIHRoZVxuICAgKiBpbmRleC1iYXNlZCBvdmVybGF5cyBhbmQgdGhlIFJlZ2lvbnMgdGFibGUgc3RheSBjb25zaXN0ZW50LlxuICAgKi9cbiAgcnVuKHZpejogSVZpc3VhbGl6ZXIsIHBhcmFtczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBQcm9taXNlPG51bWJlcj47XG59XG5cbi8qKlxuICogTXVsdGktcHJvdmlkZXIgdG9rZW4gZm9yIGNvbnRyaWJ1dGVkIHRvb2xzLlxuICpcbiAqIERlbGliZXJhdGVseSBoYXMgbm8gYGZhY3RvcnlgOiB1bnJlZ2lzdGVyZWQgbWVhbnMgbm8gdG9vbHMsIHdoaWNoIGlzIHdoYXRcbiAqIG1ha2VzIHRoaXMgbGlicmFyeSBzaGlwcGFibGUgd2l0aG91dCB0aGUgY2xvc2VkIG1vZGVsIHBhY2thZ2VzLiBJbmplY3QgaXRcbiAqIGB7IG9wdGlvbmFsOiB0cnVlIH1gIGFuZCB0cmVhdCBudWxsIGFzIGVtcHR5LlxuICovXG5leHBvcnQgY29uc3QgVE9PTEJBUl9UT09MUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxyZWFkb25seSBUb29sYmFyVG9vbENvbnRyaWJ1dGlvbltdPignVE9PTEJBUl9UT09MUycpO1xuXG4vKiogU29ydCBjb250cmlidXRlZCB0b29scyBpbnRvIGRpc3BsYXkgb3JkZXIuICovXG5leHBvcnQgZnVuY3Rpb24gc29ydFRvb2xDb250cmlidXRpb25zKFxuICB0b29sczogcmVhZG9ubHkgVG9vbGJhclRvb2xDb250cmlidXRpb25bXSxcbik6IFRvb2xiYXJUb29sQ29udHJpYnV0aW9uW10ge1xuICAvLyBTdGFibGU6IGVxdWFsIGBvcmRlcmAga2VlcHMgcmVnaXN0cmF0aW9uIG9yZGVyLCBzbyBhIGhvc3QgY29udHJvbHMgdGllcyBieVxuICAvLyBwcm92aWRlciBvcmRlciB3aXRob3V0IGhhdmluZyB0byBpbnZlbnQgbnVtYmVycy5cbiAgcmV0dXJuIHRvb2xzLm1hcCgodCwgaSkgPT4gKHsgdCwgaSB9KSkuc29ydCgoYSwgYikgPT5cbiAgICAoYS50Lm9yZGVyID8/IDEwMCkgLSAoYi50Lm9yZGVyID8/IDEwMCkgfHwgYS5pIC0gYi5pLFxuICApLm1hcCgoeyB0IH0pID0+IHQpO1xufVxuXG4vKiogVGhlIHRvb2xzIGEgdG9vbGJhciBzaG91bGQgYWN0dWFsbHkgc2hvdzogdGhvc2Ugd2l0aCBhdCBsZWFzdCBvbmUgbW9kZWwuICovXG5leHBvcnQgZnVuY3Rpb24gdmlzaWJsZVRvb2xDb250cmlidXRpb25zKFxuICB0b29sczogcmVhZG9ubHkgVG9vbGJhclRvb2xDb250cmlidXRpb25bXSB8IG51bGwgfCB1bmRlZmluZWQsXG4pOiBUb29sYmFyVG9vbENvbnRyaWJ1dGlvbltdIHtcbiAgcmV0dXJuIHNvcnRUb29sQ29udHJpYnV0aW9ucyh0b29scyA/PyBbXSkuZmlsdGVyKCh0KSA9PiB0Lm1vZGVscygpLmxlbmd0aCA+IDApO1xufVxuIl19
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Per-model descriptions for the info icon beside each item of the SAM / YOLO /
3
+ * retinal model dropdowns, keyed by registry model id.
4
+ *
5
+ * Lives in the toolbar layer rather than in the model registries for two
6
+ * reasons: the toolbar receives only `{ id, label }` from its host, so registry
7
+ * copy would have to be threaded through every host; and this text was already
8
+ * owned here — the SAM entries are the prose from the "About the SAM models"
9
+ * overlay panel this replaced, moved next to the model it describes.
10
+ *
11
+ * The quoted numbers come from the registries (`sizeMb`, `miou`, `patchSize`,
12
+ * per-model tiling `defaults`) — keep them in step when those change.
13
+ *
14
+ * Rendered with `[escape]="false"`, so `<b>` / `<br>` / entities are honoured.
15
+ * A model with no entry here simply gets no info icon.
16
+ */
17
+ export const MODEL_INFO = {
18
+ // ── SAM (promptable; box + point tools) ────────────────────────────────────
19
+ 'microsam-vit-t-lm': '<b>micro-sam ViT-T</b> (default)<br>Light-microscopy finetuned. TinyViT encoder, ' +
20
+ '~14&nbsp;MB, very fast, runs on WASM. Good mask quality — best for quick interactive ' +
21
+ 'work and many/large objects.',
22
+ 'microsam-vit-b-lm': '<b>micro-sam ViT-B</b><br>Light-microscopy finetuned. ViT-Base encoder, ~172&nbsp;MB, ' +
23
+ 'slower, GPU-accelerated (WebGPU). Highest accuracy — when ViT-T misses subtle or ' +
24
+ 'overlapping boundaries.',
25
+ 'patho-sam-vit-b': '<b>patho-sam ViT-B</b><br>Histopathology finetuned (H&amp;E / stained tissue). ViT-Base ' +
26
+ 'encoder, GPU-accelerated. Use it for pathology slides — it segments tissue/nuclei better ' +
27
+ 'than the microscopy models.',
28
+ 'patho-sam-vit-b-int8': '<b>patho-sam ViT-B (int8)</b><br>Same model, int8-quantized — ~100&nbsp;MB vs ' +
29
+ '~180&nbsp;MB (smaller download). Runs on WASM (slower encode than the fp16 version); ' +
30
+ 'masks are near-identical. Pick it on slow connections.',
31
+ };
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtaW5mby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdG9vbGJhci9tb2RlbC1pbmZvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUNILE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBMkI7SUFDaEQsOEVBQThFO0lBQzlFLG1CQUFtQixFQUNqQixtRkFBbUY7UUFDbkYsdUZBQXVGO1FBQ3ZGLDhCQUE4QjtJQUNoQyxtQkFBbUIsRUFDakIsd0ZBQXdGO1FBQ3hGLG1GQUFtRjtRQUNuRix5QkFBeUI7SUFDM0IsaUJBQWlCLEVBQ2YsMEZBQTBGO1FBQzFGLDJGQUEyRjtRQUMzRiw2QkFBNkI7SUFDL0Isc0JBQXNCLEVBQ3BCLGdGQUFnRjtRQUNoRix1RkFBdUY7UUFDdkYsd0RBQXdEO0NBQzNELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFBlci1tb2RlbCBkZXNjcmlwdGlvbnMgZm9yIHRoZSBpbmZvIGljb24gYmVzaWRlIGVhY2ggaXRlbSBvZiB0aGUgU0FNIC8gWU9MTyAvXG4gKiByZXRpbmFsIG1vZGVsIGRyb3Bkb3ducywga2V5ZWQgYnkgcmVnaXN0cnkgbW9kZWwgaWQuXG4gKlxuICogTGl2ZXMgaW4gdGhlIHRvb2xiYXIgbGF5ZXIgcmF0aGVyIHRoYW4gaW4gdGhlIG1vZGVsIHJlZ2lzdHJpZXMgZm9yIHR3b1xuICogcmVhc29uczogdGhlIHRvb2xiYXIgcmVjZWl2ZXMgb25seSBgeyBpZCwgbGFiZWwgfWAgZnJvbSBpdHMgaG9zdCwgc28gcmVnaXN0cnlcbiAqIGNvcHkgd291bGQgaGF2ZSB0byBiZSB0aHJlYWRlZCB0aHJvdWdoIGV2ZXJ5IGhvc3Q7IGFuZCB0aGlzIHRleHQgd2FzIGFscmVhZHlcbiAqIG93bmVkIGhlcmUg4oCUIHRoZSBTQU0gZW50cmllcyBhcmUgdGhlIHByb3NlIGZyb20gdGhlIFwiQWJvdXQgdGhlIFNBTSBtb2RlbHNcIlxuICogb3ZlcmxheSBwYW5lbCB0aGlzIHJlcGxhY2VkLCBtb3ZlZCBuZXh0IHRvIHRoZSBtb2RlbCBpdCBkZXNjcmliZXMuXG4gKlxuICogVGhlIHF1b3RlZCBudW1iZXJzIGNvbWUgZnJvbSB0aGUgcmVnaXN0cmllcyAoYHNpemVNYmAsIGBtaW91YCwgYHBhdGNoU2l6ZWAsXG4gKiBwZXItbW9kZWwgdGlsaW5nIGBkZWZhdWx0c2ApIOKAlCBrZWVwIHRoZW0gaW4gc3RlcCB3aGVuIHRob3NlIGNoYW5nZS5cbiAqXG4gKiBSZW5kZXJlZCB3aXRoIGBbZXNjYXBlXT1cImZhbHNlXCJgLCBzbyBgPGI+YCAvIGA8YnI+YCAvIGVudGl0aWVzIGFyZSBob25vdXJlZC5cbiAqIEEgbW9kZWwgd2l0aCBubyBlbnRyeSBoZXJlIHNpbXBseSBnZXRzIG5vIGluZm8gaWNvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IE1PREVMX0lORk86IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIC8vIOKUgOKUgCBTQU0gKHByb21wdGFibGU7IGJveCArIHBvaW50IHRvb2xzKSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgJ21pY3Jvc2FtLXZpdC10LWxtJzpcbiAgICAnPGI+bWljcm8tc2FtIFZpVC1UPC9iPiAoZGVmYXVsdCk8YnI+TGlnaHQtbWljcm9zY29weSBmaW5ldHVuZWQuIFRpbnlWaVQgZW5jb2RlciwgJyArXG4gICAgJ34xNCZuYnNwO01CLCB2ZXJ5IGZhc3QsIHJ1bnMgb24gV0FTTS4gR29vZCBtYXNrIHF1YWxpdHkg4oCUIGJlc3QgZm9yIHF1aWNrIGludGVyYWN0aXZlICcgK1xuICAgICd3b3JrIGFuZCBtYW55L2xhcmdlIG9iamVjdHMuJyxcbiAgJ21pY3Jvc2FtLXZpdC1iLWxtJzpcbiAgICAnPGI+bWljcm8tc2FtIFZpVC1CPC9iPjxicj5MaWdodC1taWNyb3Njb3B5IGZpbmV0dW5lZC4gVmlULUJhc2UgZW5jb2RlciwgfjE3MiZuYnNwO01CLCAnICtcbiAgICAnc2xvd2VyLCBHUFUtYWNjZWxlcmF0ZWQgKFdlYkdQVSkuIEhpZ2hlc3QgYWNjdXJhY3kg4oCUIHdoZW4gVmlULVQgbWlzc2VzIHN1YnRsZSBvciAnICtcbiAgICAnb3ZlcmxhcHBpbmcgYm91bmRhcmllcy4nLFxuICAncGF0aG8tc2FtLXZpdC1iJzpcbiAgICAnPGI+cGF0aG8tc2FtIFZpVC1CPC9iPjxicj5IaXN0b3BhdGhvbG9neSBmaW5ldHVuZWQgKEgmYW1wO0UgLyBzdGFpbmVkIHRpc3N1ZSkuIFZpVC1CYXNlICcgK1xuICAgICdlbmNvZGVyLCBHUFUtYWNjZWxlcmF0ZWQuIFVzZSBpdCBmb3IgcGF0aG9sb2d5IHNsaWRlcyDigJQgaXQgc2VnbWVudHMgdGlzc3VlL251Y2xlaSBiZXR0ZXIgJyArXG4gICAgJ3RoYW4gdGhlIG1pY3Jvc2NvcHkgbW9kZWxzLicsXG4gICdwYXRoby1zYW0tdml0LWItaW50OCc6XG4gICAgJzxiPnBhdGhvLXNhbSBWaVQtQiAoaW50OCk8L2I+PGJyPlNhbWUgbW9kZWwsIGludDgtcXVhbnRpemVkIOKAlCB+MTAwJm5ic3A7TUIgdnMgJyArXG4gICAgJ34xODAmbmJzcDtNQiAoc21hbGxlciBkb3dubG9hZCkuIFJ1bnMgb24gV0FTTSAoc2xvd2VyIGVuY29kZSB0aGFuIHRoZSBmcDE2IHZlcnNpb24pOyAnICtcbiAgICAnbWFza3MgYXJlIG5lYXItaWRlbnRpY2FsLiBQaWNrIGl0IG9uIHNsb3cgY29ubmVjdGlvbnMuJyxcbn07XG4iXX0=