@jax-data-science/sci-image-visualizer 0.2.15 → 0.2.16

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/esm2022/index.mjs CHANGED
@@ -25,7 +25,7 @@ export * from './lib/contracts/cell-segmenter.contract';
25
25
  export { CellposeSegmenterService } from './lib/toolbar/segmentation/cellpose-segmenter.service';
26
26
  export * from './lib/contracts/instance-segmenter.contract';
27
27
  export { YoloSegmenterService } from './lib/toolbar/segmentation/yolo-segmenter.service';
28
- export { YoloDetectToolService } from './lib/toolbar/segmentation/yolo-detect-tool.service';
28
+ export { YoloDetectToolService, YOLO_REGION_SOURCE } from './lib/toolbar/segmentation/yolo-detect-tool.service';
29
29
  // ── Generic client-side image utilities (shared with the host's pipeline) ──
30
30
  export { ProcessingImage } from './lib/processing/processing-image';
31
31
  export { cropImage } from './lib/processing/image-crop';
@@ -54,4 +54,4 @@ export { VisualizerComponent } from './lib/visualizer.component';
54
54
  export { RegionEditorComponent } from './lib/region-editor/region-editor.component';
55
55
  export { HexColorPickerComponent } from './lib/hex-color-picker/hex-color-picker.component';
56
56
  export { ChannelHistogramComponent } from './lib/channel-histogram/channel-histogram.component';
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsNEVBQTRFO0FBQzVFLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsZ0RBQWdELENBQUM7QUFDL0QsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMseUNBQXlDLENBQUM7QUFDeEQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDakcsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUN6RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUU1Riw4RUFBOEU7QUFDOUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxTQUFTLEVBQW9CLE1BQU0sNkJBQTZCLENBQUM7QUFDMUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFFakYsNkVBQTZFO0FBQzdFLE9BQU8sRUFDTCxVQUFVLEVBQUUsb0JBQW9CLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQy9FLGtCQUFrQixFQUFFLG9CQUFvQixHQUN6QyxNQUFNLCtDQUErQyxDQUFDO0FBRXZELDZFQUE2RTtBQUM3RSxPQUFPLEVBQ0wsV0FBVyxFQUFFLHFCQUFxQixFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFDcEYsbUJBQW1CLEVBQUUscUJBQXFCLEdBQzNDLE1BQU0sZ0RBQWdELENBQUM7QUFFeEQsOEVBQThFO0FBQzlFLE9BQU8sRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFFL0YsNEVBQTRFO0FBQzVFLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFcEQsNEVBQTRFO0FBQzVFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzVFLDZFQUE2RTtBQUM3RSxtRUFBbUU7QUFDbkUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFbkUsNkVBQTZFO0FBQzdFLDBFQUEwRTtBQUMxRSw4RUFBOEU7QUFDOUUsNkRBQTZEO0FBQzdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQzVGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBQdWJsaWMgQVBJIG9mIHRoZSBqYXgtaW1hZ2UtdmlzdWFsaXphdGlvbiBsaWJyYXJ5LiBFeHRlcm5hbCBjb25zdW1lcnMgaW1wb3J0XG4gKiBPTkxZIGZyb20gaGVyZSAoYEBqYXgtZGF0YS1zY2llbmNlL3NjaS1pbWFnZS12aXN1YWxpemVyYCk7IGV2ZXJ5dGhpbmcgZWxzZSB1bmRlciBgbGliL2AgaXNcbiAqIGludGVybmFsLiBUaGUgc3VyZmFjZSBpcyBjb250cmFjdHMgKyB0b2tlbnMgKyBuZXV0cmFsIG1vZGVscyArIHRoZSBBbmd1bGFyXG4gKiBtb2R1bGUsIHBsdXMgdGhlIHJvdXRpbmcgc2VydmljZSB0aGUgaG9zdCdzIGNvbXBvc2l0aW9uIHJvb3QgYmluZHMgdGhlIHRva2Vuc1xuICogdG8gKGB1c2VFeGlzdGluZ2ApLlxuICovXG5cbi8vIOKUgOKUgCBDb250cmFjdHMgJiBESSB0b2tlbnMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cmFjdHMvdmlzdWFsaXplci5jb250cmFjdCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cmFjdHMvcmVnaW9uLWVkaXRvci1hcGkuY29udHJhY3QnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJhY3RzL3BvcnRzL2ltYWdlLXN0YXRlLnBvcnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJhY3RzL3BvcnRzL3RpbGUtYWNjZXNzLnBvcnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJhY3RzL3BvcnRzL3JlZ2lvbi1pby5wb3J0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyYWN0cy9wb3J0cy9wcmVmZXJlbmNlcy5wb3J0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyYWN0cy9jaGFubmVsLWhpc3RvZ3JhbS1hcGkuY29udHJhY3QnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJhY3RzL3Zpei1jb25maWcnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJhY3RzL2ltYWdlLmNvbnRyYWN0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyYWN0cy9wbG90LXR5cGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJhY3RzL3Rvb2xiYXItY29uZmlnJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyYWN0cy9jYXBhYmlsaXRpZXMuY29udHJhY3QnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJhY3RzL3JlZ2lvbi1vdmVybGF5LmNvbnRyYWN0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyYWN0cy9kaXNwbGF5LXR5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyYWN0cy9zYW0uY29udHJhY3QnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJhY3RzL2NlbGwtc2VnbWVudGVyLmNvbnRyYWN0JztcbmV4cG9ydCB7IENlbGxwb3NlU2VnbWVudGVyU2VydmljZSB9IGZyb20gJy4vbGliL3Rvb2xiYXIvc2VnbWVudGF0aW9uL2NlbGxwb3NlLXNlZ21lbnRlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyYWN0cy9pbnN0YW5jZS1zZWdtZW50ZXIuY29udHJhY3QnO1xuZXhwb3J0IHsgWW9sb1NlZ21lbnRlclNlcnZpY2UgfSBmcm9tICcuL2xpYi90b29sYmFyL3NlZ21lbnRhdGlvbi95b2xvLXNlZ21lbnRlci5zZXJ2aWNlJztcbmV4cG9ydCB7IFlvbG9EZXRlY3RUb29sU2VydmljZSB9IGZyb20gJy4vbGliL3Rvb2xiYXIvc2VnbWVudGF0aW9uL3lvbG8tZGV0ZWN0LXRvb2wuc2VydmljZSc7XG5cbi8vIOKUgOKUgCBHZW5lcmljIGNsaWVudC1zaWRlIGltYWdlIHV0aWxpdGllcyAoc2hhcmVkIHdpdGggdGhlIGhvc3QncyBwaXBlbGluZSkg4pSA4pSAXG5leHBvcnQgeyBQcm9jZXNzaW5nSW1hZ2UgfSBmcm9tICcuL2xpYi9wcm9jZXNzaW5nL3Byb2Nlc3NpbmctaW1hZ2UnO1xuZXhwb3J0IHsgY3JvcEltYWdlLCBDcm9wSW1hZ2VPcHRpb25zIH0gZnJvbSAnLi9saWIvcHJvY2Vzc2luZy9pbWFnZS1jcm9wJztcbmV4cG9ydCB7IEltYWdlQ29udmVydGVyU2VydmljZSB9IGZyb20gJy4vbGliL3Byb2Nlc3NpbmcvaW1hZ2UtY29udmVydGVyLnNlcnZpY2UnO1xuXG4vLyDilIDilIAgU0FNIG1vZGVsIHJlZ2lzdHJ5IChob3N0IGNvbmZpZ3VyZXMgaG9zdGVkIE9OTlggVVJMcyBvbmNlIGF2YWlsYWJsZSkg4pSA4pSAXG5leHBvcnQge1xuICBTQU1fTU9ERUxTLCBERUZBVUxUX1NBTV9NT0RFTF9JRCwgZ2V0U2FtTW9kZWwsIGlzU2FtTW9kZWxSZWFkeSwgc2V0U2FtTW9kZWxVcmxzLFxuICBzZXREZWZhdWx0U2FtTW9kZWwsIGdldERlZmF1bHRTYW1Nb2RlbElkLFxufSBmcm9tICcuL2xpYi90b29sYmFyL3NlZ21lbnRhdGlvbi9zYW0tbW9kZWwtcmVnaXN0cnknO1xuXG4vLyDilIDilIAgWU9MTyBpbnN0YW5jZS1zZWdtZW50YXRpb24gbW9kZWwgcmVnaXN0cnkgKHNhbWUgcmVwb2ludGluZyBzdG9yeSkg4pSA4pSA4pSA4pSA4pSAXG5leHBvcnQge1xuICBZT0xPX01PREVMUywgREVGQVVMVF9ZT0xPX01PREVMX0lELCBnZXRZb2xvTW9kZWwsIGlzWW9sb01vZGVsUmVhZHksIHNldFlvbG9Nb2RlbFVybHMsXG4gIHNldERlZmF1bHRZb2xvTW9kZWwsIGdldERlZmF1bHRZb2xvTW9kZWxJZCwgWW9sb01vZGVsRGVmLFxufSBmcm9tICcuL2xpYi90b29sYmFyL3NlZ21lbnRhdGlvbi95b2xvLW1vZGVsLXJlZ2lzdHJ5JztcblxuLy8g4pSA4pSAIG9ubnhydW50aW1lLXdlYiBXQVNNIGxvY2F0aW9uIChob3N0IG92ZXJyaWRlcyBvbmNlLCBhdCBhcHAgaW5pdCkg4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5leHBvcnQgeyBzZXRPcnRXYXNtQmFzZSwgZ2V0T3J0V2FzbUJhc2UgfSBmcm9tICcuL2xpYi90b29sYmFyL3NlZ21lbnRhdGlvbi9vcnQtcnVudGltZS1jb25maWcnO1xuXG4vLyDilIDilIAgTmV1dHJhbCBkYXRhIG1vZGVscyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVscy9yZWdpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzL2NsYXNzLXByZXNldCc7XG5leHBvcnQgeyBTaGFwZVNlbGVjdGlvbiB9IGZyb20gJy4vbGliL21vZGVscy9zaGFwZSc7XG5cbi8vIOKUgOKUgCBBbmd1bGFyIG1vZHVsZSArIGNvbXBvc2l0aW9uLXJvb3Qgc2VydmljZSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbmV4cG9ydCB7IFZpc3VhbGl6YXRpb25Nb2R1bGUgfSBmcm9tICcuL2xpYi92aXN1YWxpemF0aW9uLm1vZHVsZSc7XG5leHBvcnQgeyBSb3V0aW5nVmlzdWFsaXplclNlcnZpY2UgfSBmcm9tICcuL2xpYi9yb3V0aW5nLXZpc3VhbGl6ZXIuc2VydmljZSc7XG4vLyBQcm92aWRlciBmYWN0b3J5IGZvciBhbiBpc29sYXRlZCwgY29tcG9uZW50LXNjb3BlZCB2aWV3ZXIgaW5zdGFuY2UgKGUuZy4gYVxuLy8gbW9kYWwgdGhhdCBtdXN0IG5vdCBzaGFyZSB0aGUgbWFpbiB2aWV3ZXIncyByZWdpb24vaW1hZ2Ugc3RhdGUpLlxuZXhwb3J0IHsgcHJvdmlkZVZpc3VhbGl6YXRpb24gfSBmcm9tICcuL2xpYi9wcm92aWRlLXZpc3VhbGl6YXRpb24nO1xuXG4vLyDilIDilIAgUHVibGljIGNvbXBvbmVudHMgKGV4cG9ydGVkIGJ5IFZpc3VhbGl6YXRpb25Nb2R1bGUpIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuLy8gbmctcGFja2FnciByZXF1aXJlcyBtb2R1bGUtZXhwb3J0ZWQgY29tcG9uZW50cyB0byBiZSByZWFjaGFibGUgZnJvbSB0aGVcbi8vIGVudHJ5IHBvaW50IHNvIGNvbnN1bWVycyBnZXQgdGhlaXIgdHlwZXM7IHRoZXNlIGFyZSB0aGUgZW1iZWRkYWJsZSBlbGVtZW50c1xuLy8gKGA8dmlzdWFsaXplcj5gLCBgPHJlZ2lvbi1lZGl0b3I+YCwgYDxoZXgtY29sb3ItcGlja2VyPmApLlxuZXhwb3J0IHsgVmlzdWFsaXplckNvbXBvbmVudCB9IGZyb20gJy4vbGliL3Zpc3VhbGl6ZXIuY29tcG9uZW50JztcbmV4cG9ydCB7IFJlZ2lvbkVkaXRvckNvbXBvbmVudCB9IGZyb20gJy4vbGliL3JlZ2lvbi1lZGl0b3IvcmVnaW9uLWVkaXRvci5jb21wb25lbnQnO1xuZXhwb3J0IHsgSGV4Q29sb3JQaWNrZXJDb21wb25lbnQgfSBmcm9tICcuL2xpYi9oZXgtY29sb3ItcGlja2VyL2hleC1jb2xvci1waWNrZXIuY29tcG9uZW50JztcbmV4cG9ydCB7IENoYW5uZWxIaXN0b2dyYW1Db21wb25lbnQgfSBmcm9tICcuL2xpYi9jaGFubmVsLWhpc3RvZ3JhbS9jaGFubmVsLWhpc3RvZ3JhbS5jb21wb25lbnQnO1xuIl19
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsNEVBQTRFO0FBQzVFLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsZ0RBQWdELENBQUM7QUFDL0QsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMseUNBQXlDLENBQUM7QUFDeEQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDakcsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUN6RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUVoSCw4RUFBOEU7QUFDOUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxTQUFTLEVBQW9CLE1BQU0sNkJBQTZCLENBQUM7QUFDMUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFFakYsNkVBQTZFO0FBQzdFLE9BQU8sRUFDTCxVQUFVLEVBQUUsb0JBQW9CLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQy9FLGtCQUFrQixFQUFFLG9CQUFvQixHQUN6QyxNQUFNLCtDQUErQyxDQUFDO0FBRXZELDZFQUE2RTtBQUM3RSxPQUFPLEVBQ0wsV0FBVyxFQUFFLHFCQUFxQixFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFDcEYsbUJBQW1CLEVBQUUscUJBQXFCLEdBQzNDLE1BQU0sZ0RBQWdELENBQUM7QUFFeEQsOEVBQThFO0FBQzlFLE9BQU8sRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFFL0YsNEVBQTRFO0FBQzVFLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFcEQsNEVBQTRFO0FBQzVFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzVFLDZFQUE2RTtBQUM3RSxtRUFBbUU7QUFDbkUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFbkUsNkVBQTZFO0FBQzdFLDBFQUEwRTtBQUMxRSw4RUFBOEU7QUFDOUUsNkRBQTZEO0FBQzdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQzVGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBQdWJsaWMgQVBJIG9mIHRoZSBqYXgtaW1hZ2UtdmlzdWFsaXphdGlvbiBsaWJyYXJ5LiBFeHRlcm5hbCBjb25zdW1lcnMgaW1wb3J0XG4gKiBPTkxZIGZyb20gaGVyZSAoYEBqYXgtZGF0YS1zY2llbmNlL3NjaS1pbWFnZS12aXN1YWxpemVyYCk7IGV2ZXJ5dGhpbmcgZWxzZSB1bmRlciBgbGliL2AgaXNcbiAqIGludGVybmFsLiBUaGUgc3VyZmFjZSBpcyBjb250cmFjdHMgKyB0b2tlbnMgKyBuZXV0cmFsIG1vZGVscyArIHRoZSBBbmd1bGFyXG4gKiBtb2R1bGUsIHBsdXMgdGhlIHJvdXRpbmcgc2VydmljZSB0aGUgaG9zdCdzIGNvbXBvc2l0aW9uIHJvb3QgYmluZHMgdGhlIHRva2Vuc1xuICogdG8gKGB1c2VFeGlzdGluZ2ApLlxuICovXG5cbi8vIOKUgOKUgCBDb250cmFjdHMgJiBESSB0b2tlbnMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cmFjdHMvdmlzdWFsaXplci5jb250cmFjdCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250cmFjdHMvcmVnaW9uLWVkaXRvci1hcGkuY29udHJhY3QnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJhY3RzL3BvcnRzL2ltYWdlLXN0YXRlLnBvcnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJhY3RzL3BvcnRzL3RpbGUtYWNjZXNzLnBvcnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJhY3RzL3BvcnRzL3JlZ2lvbi1pby5wb3J0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyYWN0cy9wb3J0cy9wcmVmZXJlbmNlcy5wb3J0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyYWN0cy9jaGFubmVsLWhpc3RvZ3JhbS1hcGkuY29udHJhY3QnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJhY3RzL3Zpei1jb25maWcnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJhY3RzL2ltYWdlLmNvbnRyYWN0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyYWN0cy9wbG90LXR5cGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJhY3RzL3Rvb2xiYXItY29uZmlnJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyYWN0cy9jYXBhYmlsaXRpZXMuY29udHJhY3QnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJhY3RzL3JlZ2lvbi1vdmVybGF5LmNvbnRyYWN0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyYWN0cy9kaXNwbGF5LXR5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyYWN0cy9zYW0uY29udHJhY3QnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJhY3RzL2NlbGwtc2VnbWVudGVyLmNvbnRyYWN0JztcbmV4cG9ydCB7IENlbGxwb3NlU2VnbWVudGVyU2VydmljZSB9IGZyb20gJy4vbGliL3Rvb2xiYXIvc2VnbWVudGF0aW9uL2NlbGxwb3NlLXNlZ21lbnRlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRyYWN0cy9pbnN0YW5jZS1zZWdtZW50ZXIuY29udHJhY3QnO1xuZXhwb3J0IHsgWW9sb1NlZ21lbnRlclNlcnZpY2UgfSBmcm9tICcuL2xpYi90b29sYmFyL3NlZ21lbnRhdGlvbi95b2xvLXNlZ21lbnRlci5zZXJ2aWNlJztcbmV4cG9ydCB7IFlvbG9EZXRlY3RUb29sU2VydmljZSwgWU9MT19SRUdJT05fU09VUkNFIH0gZnJvbSAnLi9saWIvdG9vbGJhci9zZWdtZW50YXRpb24veW9sby1kZXRlY3QtdG9vbC5zZXJ2aWNlJztcblxuLy8g4pSA4pSAIEdlbmVyaWMgY2xpZW50LXNpZGUgaW1hZ2UgdXRpbGl0aWVzIChzaGFyZWQgd2l0aCB0aGUgaG9zdCdzIHBpcGVsaW5lKSDilIDilIBcbmV4cG9ydCB7IFByb2Nlc3NpbmdJbWFnZSB9IGZyb20gJy4vbGliL3Byb2Nlc3NpbmcvcHJvY2Vzc2luZy1pbWFnZSc7XG5leHBvcnQgeyBjcm9wSW1hZ2UsIENyb3BJbWFnZU9wdGlvbnMgfSBmcm9tICcuL2xpYi9wcm9jZXNzaW5nL2ltYWdlLWNyb3AnO1xuZXhwb3J0IHsgSW1hZ2VDb252ZXJ0ZXJTZXJ2aWNlIH0gZnJvbSAnLi9saWIvcHJvY2Vzc2luZy9pbWFnZS1jb252ZXJ0ZXIuc2VydmljZSc7XG5cbi8vIOKUgOKUgCBTQU0gbW9kZWwgcmVnaXN0cnkgKGhvc3QgY29uZmlndXJlcyBob3N0ZWQgT05OWCBVUkxzIG9uY2UgYXZhaWxhYmxlKSDilIDilIBcbmV4cG9ydCB7XG4gIFNBTV9NT0RFTFMsIERFRkFVTFRfU0FNX01PREVMX0lELCBnZXRTYW1Nb2RlbCwgaXNTYW1Nb2RlbFJlYWR5LCBzZXRTYW1Nb2RlbFVybHMsXG4gIHNldERlZmF1bHRTYW1Nb2RlbCwgZ2V0RGVmYXVsdFNhbU1vZGVsSWQsXG59IGZyb20gJy4vbGliL3Rvb2xiYXIvc2VnbWVudGF0aW9uL3NhbS1tb2RlbC1yZWdpc3RyeSc7XG5cbi8vIOKUgOKUgCBZT0xPIGluc3RhbmNlLXNlZ21lbnRhdGlvbiBtb2RlbCByZWdpc3RyeSAoc2FtZSByZXBvaW50aW5nIHN0b3J5KSDilIDilIDilIDilIDilIBcbmV4cG9ydCB7XG4gIFlPTE9fTU9ERUxTLCBERUZBVUxUX1lPTE9fTU9ERUxfSUQsIGdldFlvbG9Nb2RlbCwgaXNZb2xvTW9kZWxSZWFkeSwgc2V0WW9sb01vZGVsVXJscyxcbiAgc2V0RGVmYXVsdFlvbG9Nb2RlbCwgZ2V0RGVmYXVsdFlvbG9Nb2RlbElkLCBZb2xvTW9kZWxEZWYsXG59IGZyb20gJy4vbGliL3Rvb2xiYXIvc2VnbWVudGF0aW9uL3lvbG8tbW9kZWwtcmVnaXN0cnknO1xuXG4vLyDilIDilIAgb25ueHJ1bnRpbWUtd2ViIFdBU00gbG9jYXRpb24gKGhvc3Qgb3ZlcnJpZGVzIG9uY2UsIGF0IGFwcCBpbml0KSDilIDilIDilIDilIDilIDilIDilIBcbmV4cG9ydCB7IHNldE9ydFdhc21CYXNlLCBnZXRPcnRXYXNtQmFzZSB9IGZyb20gJy4vbGliL3Rvb2xiYXIvc2VnbWVudGF0aW9uL29ydC1ydW50aW1lLWNvbmZpZyc7XG5cbi8vIOKUgOKUgCBOZXV0cmFsIGRhdGEgbW9kZWxzIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzL3JlZ2lvbic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbHMvY2xhc3MtcHJlc2V0JztcbmV4cG9ydCB7IFNoYXBlU2VsZWN0aW9uIH0gZnJvbSAnLi9saWIvbW9kZWxzL3NoYXBlJztcblxuLy8g4pSA4pSAIEFuZ3VsYXIgbW9kdWxlICsgY29tcG9zaXRpb24tcm9vdCBzZXJ2aWNlIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuZXhwb3J0IHsgVmlzdWFsaXphdGlvbk1vZHVsZSB9IGZyb20gJy4vbGliL3Zpc3VhbGl6YXRpb24ubW9kdWxlJztcbmV4cG9ydCB7IFJvdXRpbmdWaXN1YWxpemVyU2VydmljZSB9IGZyb20gJy4vbGliL3JvdXRpbmctdmlzdWFsaXplci5zZXJ2aWNlJztcbi8vIFByb3ZpZGVyIGZhY3RvcnkgZm9yIGFuIGlzb2xhdGVkLCBjb21wb25lbnQtc2NvcGVkIHZpZXdlciBpbnN0YW5jZSAoZS5nLiBhXG4vLyBtb2RhbCB0aGF0IG11c3Qgbm90IHNoYXJlIHRoZSBtYWluIHZpZXdlcidzIHJlZ2lvbi9pbWFnZSBzdGF0ZSkuXG5leHBvcnQgeyBwcm92aWRlVmlzdWFsaXphdGlvbiB9IGZyb20gJy4vbGliL3Byb3ZpZGUtdmlzdWFsaXphdGlvbic7XG5cbi8vIOKUgOKUgCBQdWJsaWMgY29tcG9uZW50cyAoZXhwb3J0ZWQgYnkgVmlzdWFsaXphdGlvbk1vZHVsZSkg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4vLyBuZy1wYWNrYWdyIHJlcXVpcmVzIG1vZHVsZS1leHBvcnRlZCBjb21wb25lbnRzIHRvIGJlIHJlYWNoYWJsZSBmcm9tIHRoZVxuLy8gZW50cnkgcG9pbnQgc28gY29uc3VtZXJzIGdldCB0aGVpciB0eXBlczsgdGhlc2UgYXJlIHRoZSBlbWJlZGRhYmxlIGVsZW1lbnRzXG4vLyAoYDx2aXN1YWxpemVyPmAsIGA8cmVnaW9uLWVkaXRvcj5gLCBgPGhleC1jb2xvci1waWNrZXI+YCkuXG5leHBvcnQgeyBWaXN1YWxpemVyQ29tcG9uZW50IH0gZnJvbSAnLi9saWIvdmlzdWFsaXplci5jb21wb25lbnQnO1xuZXhwb3J0IHsgUmVnaW9uRWRpdG9yQ29tcG9uZW50IH0gZnJvbSAnLi9saWIvcmVnaW9uLWVkaXRvci9yZWdpb24tZWRpdG9yLmNvbXBvbmVudCc7XG5leHBvcnQgeyBIZXhDb2xvclBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4vbGliL2hleC1jb2xvci1waWNrZXIvaGV4LWNvbG9yLXBpY2tlci5jb21wb25lbnQnO1xuZXhwb3J0IHsgQ2hhbm5lbEhpc3RvZ3JhbUNvbXBvbmVudCB9IGZyb20gJy4vbGliL2NoYW5uZWwtaGlzdG9ncmFtL2NoYW5uZWwtaGlzdG9ncmFtLmNvbXBvbmVudCc7XG4iXX0=
@@ -67,7 +67,7 @@ export class Region {
67
67
  shape.editable = true;
68
68
  shape.line = {
69
69
  color: this.color ? this.color : this.shapeColor,
70
- width: 3
70
+ width: 3,
71
71
  };
72
72
  shape.fileName = this.filename;
73
73
  if (this.kind === 'profile')
@@ -77,7 +77,7 @@ export class Region {
77
77
  text: `${this.label}`,
78
78
  texttemplate: `${this.label}`,
79
79
  font: { color: this.color ? this.color : this.shapeColor },
80
- textposition: 'top left'
80
+ textposition: 'top left',
81
81
  };
82
82
  }
83
83
  else {
@@ -163,4 +163,4 @@ export class MultiPolygon {
163
163
  this.polygons = [];
164
164
  }
165
165
  }
166
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9tb2RlbHMvcmVnaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFekMsTUFBTSxPQUFPLE1BQU07SUFBbkI7UUFRRSxXQUFNLEdBQStDLElBQUksQ0FBQztRQWUxRDs7O3FFQUc2RDtRQUM3RCxNQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ04sZUFBVSxHQUFJLFNBQVMsQ0FBQztRQUN4QixrQkFBYSxHQUFHLENBQUMsQ0FBQztRQUNsQjs7Ozs7Ozs7O1dBU0c7UUFDSCxlQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUNoQixlQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ2Ysb0JBQWUsR0FBb0IsSUFBSSxDQUFDO0lBZ0cxQyxDQUFDO0lBOUZDOztpRUFFNkQ7SUFDN0QsU0FBUztRQUNQLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxTQUFTLENBQUM7SUFDakMsQ0FBQztJQUVELFFBQVE7UUFDTix3QkFBd0I7UUFDeEIsSUFBSSxJQUFJLENBQUMsTUFBTSxZQUFZLFNBQVMsRUFBRSxDQUFDO1lBQ3JDLE9BQU8sTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7dUJBQzlCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxhQUFhLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDdEUsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sWUFBWSxPQUFPLEVBQUMsQ0FBQztZQUN6QyxJQUFJLElBQUksR0FBRyxHQUFHLENBQUM7WUFDZixrQkFBa0I7WUFDbEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxF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QUFJLElBQUksQ0FBQztJQUNyRSxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sU0FBUztJQUF0QjtRQUNFLE1BQUMsR0FBRyxDQUFDLENBQUM7UUFDTixNQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ04sVUFBSyxHQUFHLENBQUMsQ0FBQztRQUNWLFdBQU0sR0FBRyxDQUFDLENBQUM7SUFDYixDQUFDO0NBQUE7QUFFRCxNQUFNLE9BQU8sT0FBTztJQUFwQjtRQUNFLFlBQU8sR0FBRyxDQUFDLENBQUM7UUFDWixZQUFPLEdBQWEsRUFBRSxDQUFDO1FBQ3ZCLFlBQU8sR0FBYSxFQUFFLENBQUM7UUFDdkIsZ0JBQVcsR0FBZSxFQUFFLENBQUM7UUFDN0IsbUVBQW1FO1FBQ25FLFdBQU0sR0FBRyxJQUFJLENBQUM7UUFDZDs7Ozs7Ozs7V0FRRztRQUNILFdBQU0sR0FBRyxLQUFLLENBQUM7SUE4QmpCLENBQUM7Q0FBQTtBQUVEOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sT0FBTyxZQUFZO0lBQXpCO1FBQ0Usa0VBQWtFO1FBQ2xFLGFBQVEsR0FBYyxFQUFFLENBQUM7SUFDM0IsQ0FBQztDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2hhcGVTZWxlY3Rpb24gfSBmcm9tICcuL3NoYXBlJztcblxuZXhwb3J0IGNsYXNzIFJlZ2lvbiB7XG5cbiAgLyoqIFN0YWJsZSwgdW5pcXVlIGlkZW50aXR5IGZvciBzZWxlY3Rpb24gYW5kIGVxdWFsaXR5LiBNaW50ZWQgYnlcbiAgICogIFBsb3RseVNlcnZpY2Ugd2hlbiBhIHJlZ2lvbiBmaXJzdCBlbnRlcnMgdGhlIHN5c3RlbS4gTmV2ZXIgZGVyaXZlZFxuICAgKiAgZnJvbSBhcnJheSBpbmRleCDigJQgbmFtZSBjb2xsaXNpb25zIGFjcm9zcyBkZWxldGUvYWRkIGN5Y2xlcyBtdXN0XG4gICAqICBub3QgYnJlYWsgUHJpbWVORyByb3cgc2VsZWN0aW9uLiAqL1xuICBpZCE6IG51bWJlcjtcbiAgbmFtZSE6IHN0cmluZztcbiAgYm91bmRzPzogUmVjdGFuZ2xlIHwgUG9seWdvbiB8IE11bHRpUG9seWdvbiB8IG51bGwgPSBudWxsO1xuICAvKiogcHJvZmlsZSA9IGFuIGludGVuc2l0eS1wcm9maWxlIGxpbmUgUk9JOyByZW5kZXJlZC9kcmFnZ2VkIGxpa2UgYSByZWdpb24gYnV0XG4gICAqICBleGNsdWRlZCBmcm9tIHRoZSBSZWdpb25zIHRhYiBhbmQgZXhwb3J0cy4gVXNlIGBpc1Byb2ZpbGUoKWAgdG8gdGVzdCBpdCDigJRcbiAgICogIGl0J3MgdGhlIGNhbm9uaWNhbCBtYXJrZXIgdGhhdCBzZXBhcmF0ZXMgaW50ZW5zaXR5IGxpbmVzIChvd25lZCBieSB0aGVcbiAgICogIGludGVuc2l0eSB0b29sLCBzYW1wbGVkIGludG8gdGhlIGluc2V0KSBmcm9tIGFubm90YXRpb24gcmVnaW9ucyAob3duZWQgYnlcbiAgICogIHRoZSBSZWdpb24gRWRpdG9yKS4gQm90aCBiYWNrZW5kcyAoUGxvdGx5LCBPU0QpIGhvbm91ciBpdC4gKi9cbiAga2luZD86ICdwcm9maWxlJztcbiAgY29sb3I/OiBzdHJpbmc7IC8vIGhleCBzdHJpbmcsIGUuZy4gJyNSUkdHQkInICh0aGUgaGlzdG9yaWNhbCBcIltyLCBnLCBiXVwiIG5vdGUgaXMgc3RhbGUpXG4gIC8vIGNsYXNzIGxhYmVsXG4gIGxhYmVsPzogc3RyaW5nO1xuICAvKiogVHJ1ZSB3aGVuIHRoZSB1c2VyIHNldCB0aGlzIHJlZ2lvbidzIGNvbG91ciBleHBsaWNpdGx5IChSZWdpb24gRWRpdG9yIENvbG9yXG4gICAqICBjb2x1bW4pLiBQcmVzZXQgY29sb3VyIHJlc29sdXRpb24gKGppdC11aSM3MCkgc2tpcHMgb3ZlcnJpZGRlbiByZWdpb25zIHNvIGFcbiAgICogIG1hbnVhbCBjb2xvdXIgaXMgbm90IGNsb2JiZXJlZCB3aGVuIHByZXNldHMgYXJlIChyZSlhcHBsaWVkIG9uIGxvYWQvaW1wb3J0LiAqL1xuICBjb2xvck92ZXJyaWRkZW4/OiBib29sZWFuO1xuICBmaWxlbmFtZT86IHN0cmluZztcbiAgLyoqIFplcm8tYmFzZWQgei1zbGljZSB0aGlzIHJlZ2lvbiBiZWxvbmdzIHRvIHdpdGhpbiBhIHN0YWNrIOKAlCBtaXJyb3JzXG4gICAqICBRdVBhdGgncyBgZ2VvbWV0cnkucGxhbmUuemAgKGEgbWlzc2luZyBwbGFuZSAvIGRlZmF1bHQgcGxhbmUgcmVhZHMgYmFjayBhc1xuICAgKiAgMCkuIFVzZWQgdG8gcGxhY2UvZmlsdGVyIFJPSXMgcGVyIHNsaWNlOyAwIGZvciBhIHBsYWluIHNpbmdsZS1wbGFuZSBpbWFnZVxuICAgKiAgb3IgYSByZWdpb24gZHJhd24gd2l0aG91dCBhIHNsaWNlIGNvbnRleHQgKGppdC11aSM5MykuICovXG4gIHogPSAwO1xuICBzaGFwZUNvbG9yPyA9ICcjMDBGRkZGJztcbiAgYnl0ZXNQZXJQaXhlbCA9IDg7XG4gIC8qKlxuICAgKiByZXNvbHV0aW9uIGlzIHRoZSByZXNvbHV0aW9uIGF0IHdoaWNoIHRoZSByZWdpb25cbiAgICogd2FzIGZvdW5kLiBJbiBvcmRlciB0byBnZXQgaXQgaW4gdGhlIGZ1bGwgaW1hZ2VcbiAgICogY29vcmRpbmF0ZXMgaXQgd2lsbCBub3JtYWxseSBiZSAwLiBIb3dldmVyIGlmXG4gICAqIHRoZXJlIGlzIGEgbWlzdGFrZSB3aXRoIHRoZSByZXNvbHV0aW9uIGl0IG1heSBub3RcbiAgICogYmUuIFdlIHJldHVybiB0aGUgcmVzb2x1dGlvbiBoZXJlIGluIG9yZGVyIHRvIGJlXG4gICAqIHN1cmUgd2hhdCBpdCBpcy4gVGhlIHNlcnZlciBtYXkgbmVlZCB0byBiZSBjaGFuZ2VkXG4gICAqIHRvIGVuc3VyZSB0aGF0IHJlc3VsdHMgcmVnaW9ucyBhcmUgYWx3YXlzIHJldHVybmVkXG4gICAqIGF0IHJlc29sdXRpb24gPSAwXG4gICAqL1xuICByZXNvbHV0aW9uID0gMDtcbiAgY3JvcHBlZCA9IGZhbHNlO1xuICB0aWxlTnVtYmVyID0gMDtcbiAgdGlsZUNvb3JkaW5hdGVzOiBudW1iZXJbXSB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBUcnVlIGZvciBpbnRlbnNpdHktcHJvZmlsZSBsaW5lIFJPSXMgKHRoZSBpbnRlbnNpdHkgdG9vbCdzIGxpbmVzKS4gVGhlc2UgYXJlXG4gICAqICBOT1QgYW5ub3RhdGlvbiByZWdpb25zOiB0aGV5IG5ldmVyIGFwcGVhciBpbiB0aGUgUmVnaW9uIEVkaXRvciBhbmQgZWRpdG9yXG4gICAqICBvcGVyYXRpb25zIChzZWxlY3Qvc2F2ZS9kZWxldGUpIG11c3QgbmV2ZXIgdG91Y2ggdGhlbS4gKi9cbiAgaXNQcm9maWxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmtpbmQgPT09ICdwcm9maWxlJztcbiAgfVxuXG4gIHRvU3RyaW5nKCkge1xuICAgIC8vIGlmIHNoYXBlIGlzIHJlY3RhbmdsZVxuICAgIGlmICh0aGlzLmJvdW5kcyBpbnN0YW5jZW9mIFJlY3RhbmdsZSkge1xuICAgICAgcmV0dXJuIGB4OiAke3RoaXMuYm91bmRzLnh9LCB5OiAke3RoaXMuYm91bmRzLnl9LFxuICAgICAgICAgICAgICB3aWR0aDogJHt0aGlzLmJvdW5kcy53aWR0aH0sIGhlaWdodDogJHt0aGlzLmJvdW5kcy5oZWlnaHR9YDtcbiAgICB9IGVsc2UgaWYgKHRoaXMuYm91bmRzIGluc3RhbmNlb2YgUG9seWdvbil7XG4gICAgICBsZXQgcGF0aCA9ICdNJztcbiAgICAgIC8vIGRpc3BsYXkgYXMgcGF0aFxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmJvdW5kcy5ucG9pbnRzOyBpKyspIHtcbiAgICAgICAgaWYgKGkgPCB0aGlzLmJvdW5kcy5ucG9pbnRzIC0gMSkge1xuICAgICAgICAgIHBhdGggPSBgJHtwYXRofSR7dGhpcy5ib3VuZHMueHBvaW50c1tpXX0sJHt0aGlzLmJvdW5kcy55cG9pbnRzW2ldfUxgO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBhdGggPSBgJHtwYXRofSR7dGhpcy5ib3VuZHMueHBvaW50c1tpXX0sJHt0aGlzLmJvdW5kcy55cG9pbnRzW2ldfWA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmJvdW5kcy5jbG9zZWQgIT09IGZhbHNlKSB7XG4gICAgICAgIHBhdGggKz0gJ1onO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHBhdGg7XG4gICAgfVxuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgU2hhcGVTZWxlY3Rpb24gb2JqZWN0IHRoYXQgY2FuIGJlIHVzZWQgdG9cbiAgICogY3JlYXRlIGEgc2hhcGUgaW4gUGxvdGx5LlxuICAgKiBAcGFyYW0gc2hvd1JlZ2lvbkxhYmVsXG4gICAqIEByZXR1cm4gU2hhcGVTZWxlY3Rpb25cbiAgICovXG4gICBnZXRTaGFwZShzaG93UmVnaW9uTGFiZWw6IGJvb2xlYW4gPSB0cnVlKTogU2hhcGVTZWxlY3Rpb24ge1xuICAgIGNvbnN0IHNoYXBlID0gbmV3IFNoYXBlU2VsZWN0aW9uKCk7XG4gICAgc2hhcGUuaWQgPSB0aGlzLmlkO1xuICAgIHNoYXBlLm5hbWUgPSB0aGlzLm5hbWU7XG4gICAgc2hhcGUuZWRpdGFibGUgPSB0cnVlO1xuICAgIHNoYXBlLmxpbmUgPSB7XG4gICAgICBjb2xvcjogdGhpcy5jb2xvciA/IHRoaXMuY29sb3IgOiB0aGlzLnNoYXBlQ29sb3IsXG4gICAgICB3aWR0aDogM1xuICAgIH07XG4gICAgc2hhcGUuZmlsZU5hbWUgPSB0aGlzLmZpbGVuYW1lO1xuICAgIGlmICh0aGlzLmtpbmQgPT09ICdwcm9maWxlJykgc2hhcGUua2luZCA9ICdwcm9maWxlJztcbiAgICBpZiAoc2hvd1JlZ2lvbkxhYmVsKSB7XG4gICAgICBzaGFwZS5sYWJlbCA9IHtcbiAgICAgICAgdGV4dDogYCR7dGhpcy5sYWJlbH1gLFxuICAgICAgICB0ZXh0dGVtcGxhdGU6IGAke3RoaXMubGFiZWx9YCxcbiAgICAgICAgZm9udDogeyBjb2xvcjogdGhpcy5jb2xvciA/IHRoaXMuY29sb3IgOiB0aGlzLnNoYXBlQ29sb3IgfSxcbiAgICAgICAgdGV4dHBvc2l0aW9uOiAndG9wIGxlZnQnXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBzaGFwZS5sYWJlbCA9IHt9O1xuICAgIH1cbiAgICBzaGFwZS5sZWdlbmQgPSB0aGlzLmxhYmVsO1xuXG4gICAgY29uc3QgYm5kcyA9IHRoaXMuYm91bmRzO1xuICAgIGlmIChibmRzICE9IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKHRoaXMuaXNSZWN0YW5nbGUoYm5kcykpIHtcbiAgICAgICAgc2hhcGUudHlwZSA9ICdyZWN0JztcbiAgICAgICAgc2hhcGUueDAgPSBibmRzLng7XG4gICAgICAgIHNoYXBlLnkwID0gYm5kcy55O1xuICAgICAgICBzaGFwZS54MSA9IGJuZHMueCArIGJuZHMud2lkdGg7XG4gICAgICAgIHNoYXBlLnkxID0gYm5kcy55ICsgYm5kcy5oZWlnaHQ7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5pc1BvbHlnb24oYm5kcykpIHtcbiAgICAgICAgc2hhcGUudHlwZSA9ICdwYXRoJztcbiAgICAgICAgbGV0IHBhdGggPSAnTSc7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYm5kcy5ucG9pbnRzOyBpKyspIHtcbiAgICAgICAgICBpZiAoaSA8IGJuZHMubnBvaW50cyAtIDEpIHtcbiAgICAgICAgICAgIHBhdGggPSBgJHtwYXRofSR7Ym5kcy54cG9pbnRzW2ldfSwke2JuZHMueXBvaW50c1tpXX1MYDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGF0aCA9IGAke3BhdGh9JHtibmRzLnhwb2ludHNbaV19LCR7Ym5kcy55cG9pbnRzW2ldfWA7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChibmRzLmNsb3NlZCAhPT0gZmFsc2UpIHtcbiAgICAgICAgICBwYXRoICs9ICdaJztcbiAgICAgICAgfVxuICAgICAgICBzaGFwZS5wYXRoID0gcGF0aDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHNoYXBlO1xuICB9XG5cbiAgaXNSZWN0YW5nbGUoYm5kczogYW55KTogYm5kcyBpcyBSZWN0YW5nbGUge1xuICAgIHJldHVybiAneCcgaW4gYm5kcyAmJiAneScgaW4gYm5kcyAmJiAnd2lkdGgnIGluIGJuZHMgJiYgJ2hlaWdodCcgaW4gYm5kcztcbiAgfVxuXG4gIGlzUG9seWdvbihibmRzOiBhbnkpOiBibmRzIGlzIFBvbHlnb24ge1xuICAgIHJldHVybiAnbnBvaW50cycgaW4gYm5kcyAmJiAneHBvaW50cycgaW4gYm5kcyAmJiAneXBvaW50cycgaW4gYm5kcztcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUmVjdGFuZ2xlIHtcbiAgeCA9IDA7XG4gIHkgPSAwO1xuICB3aWR0aCA9IDA7XG4gIGhlaWdodCA9IDA7XG59XG5cbmV4cG9ydCBjbGFzcyBQb2x5Z29uIHtcbiAgbnBvaW50cyA9IDA7XG4gIHhwb2ludHM6IG51bWJlcltdID0gW107XG4gIHlwb2ludHM6IG51bWJlcltdID0gW107XG4gIGNvb3JkaW5hdGVzOiBudW1iZXJbXVtdID0gW107XG4gIC8qKiBmYWxzZSBmb3Igb3BlbiBwb2x5bGluZXM7IHRydWUgKGRlZmF1bHQpIGZvciBjbG9zZWQgcG9seWdvbnMgKi9cbiAgY2xvc2VkID0gdHJ1ZTtcbiAgLyoqXG4gICAqIFdoZW4gdHJ1ZSB0aGUgdmVydGljZXMgYXJlIHRyZWF0ZWQgYXMgYmV6aWVyLXNwbGluZSAqKmFuY2hvcnMqKiBhbmQgdGhlXG4gICAqIHJlZ2lvbiBpcyByZW5kZXJlZC9leHBvcnRlZCBhcyBhIHNtb290aCBjdXJ2ZSB0aHJvdWdoIHRoZW0uIFRoZSB2ZXJ0aWNlc1xuICAgKiBzdGF5IHRoZSBlZGl0YWJsZSBhbmNob3JzIOKAlCB0b2dnbGluZyB0aGlzIGZsYWcgaXMgdGhlIHRvQmV6aWVyXG4gICAqIChgdHJ1ZWApIC8gdG9Qb2x5Z29uIChgZmFsc2VgKSwgd2hpY2ggb25seSBhZGQvcmVtb3ZlIHRoZSBjdXJ2ZSwgbmV2ZXIgbW92ZVxuICAgKiB0aGUgYW5jaG9ycy4gR2VvSlNPTiBrZWVwcyB0aGUgZmxhdHRlbmVkIGN1cnZlIGFzIHRoZSBnZW9tZXRyeSAoc28gUXVQYXRoXG4gICAqIHJlbmRlcnMgaXQpIHBsdXMgdGhlIGFuY2hvcnMgKyBoYW5kbGVzICsgZmxhZyBpbiBwcm9wZXJ0aWVzIChzbyBKSVRcbiAgICogcm91bmQtdHJpcHMgdGhlIGVkaXRhYmxlIGJlemllcikuXG4gICAqL1xuICBiZXppZXIgPSBmYWxzZTtcbiAgLyoqXG4gICAqIFBlci1hbmNob3IgY3ViaWMtYmV6aWVyIGNvbnRyb2wtcG9pbnQgb2Zmc2V0cywgKipyZWxhdGl2ZSoqIHRvIHRoZWlyIGFuY2hvclxuICAgKiAoc28gdGhleSB0cmFuc2xhdGUgd2l0aCBpdCkuIFByZXNlbnQgb25seSBmb3IgYmV6aWVyIHJlZ2lvbnM7IGluaXRpYWxpc2VkXG4gICAqIGZyb20gdGhlIENhdG11bGwtUm9tIGNvbnN0cnVjdGlvbiAoYSBzbW9vdGggY3VydmUpIHdoZW4gYmV6aWVyIGlzIHR1cm5lZCBvbixcbiAgICogdGhlbiBpbmRpdmlkdWFsbHkgZWRpdGFibGUgYnkgZHJhZ2dpbmcgdGhlIGhhbmRsZXMuIGBoYW5kbGVzSW5baV1gIC9cbiAgICogYGhhbmRsZXNPdXRbaV1gIGFyZSBgW2R4LCBkeV1gIGZvciB2ZXJ0ZXggYGlgLlxuICAgKi9cbiAgaGFuZGxlc0luPzogbnVtYmVyW11bXTtcbiAgaGFuZGxlc091dD86IG51bWJlcltdW107XG5cbiAgLyoqXG4gICAqIEludGVyaW9yIHJpbmdzIChob2xlcykg4oCUIGppdC11aSM4NS4gRWFjaCByaW5nIGlzIGEgbGlzdCBvZiBgW3gsIHldYFxuICAgKiBpbWFnZS1waXhlbCBwYWlycyBpbiB0aGUgU0FNRSBjbG9zZWQtcG9seWdvbiBjb252ZW50aW9uIGFzIHRoZSBleHRlcmlvclxuICAgKiAoYGNvb3JkaW5hdGVzYCk6IG5vIHJlcGVhdGVkIGNsb3NpbmcgcG9pbnQuIFByZXNlbnQgb25seSBvbiBjbG9zZWQgcG9seWdvbnMuXG4gICAqIEEgcG9pbnQgaW5zaWRlIHRoZSBleHRlcmlvciAqKmFuZCoqIGluc2lkZSBhbnkgaG9sZSBpcyBPVVRTSURFIHRoZSByZWdpb25cbiAgICogKGV2ZW4tb2RkIHJ1bGUpLiBBYnNlbnQvZW1wdHkgPT0gYSBzb2xpZCBwb2x5Z29uICh0aGUgcHJpb3IgYmVoYXZpb3VyKSwgc29cbiAgICogZXZlcnkgZXhpc3RpbmcgcmVnaW9uIGlzIHVuYWZmZWN0ZWQuXG4gICAqL1xuICBob2xlcz86IG51bWJlcltdW11bXTtcblxuICAvKipcbiAgICogUGVyLWhvbGUgYsOpemllciBjb250cm9sLXBvaW50IG9mZnNldHMsIHBhcmFsbGVsIHRvIHtAbGluayBob2xlc30gKG9uZSBlbnRyeSBwZXIgcmluZywgZWFjaCBhXG4gICAqIGxpc3Qgb2YgYFtkeCwgZHldYCBwZXIgcmluZyB2ZXJ0ZXgsICoqcmVsYXRpdmUqKiB0byB0aGUgdmVydGV4KS4gUHJlc2VudCBvbmx5IHdoZW4gYGJlemllcmAgaXNcbiAgICogb24gZm9yIGEgZG9udXQg4oCUIHNlZWRlZCBmcm9tIHRoZSBDYXRtdWxsLVJvbSBkZWZhdWx0IGFuZCBpbmRpdmlkdWFsbHkgZWRpdGFibGUsIGV4YWN0bHkgbGlrZVxuICAgKiB0aGUgZXh0ZXJpb3Ige0BsaW5rIGhhbmRsZXNJbn0ve0BsaW5rIGhhbmRsZXNPdXR9LiBTbyBhIGRvbnV0IHNtb290aGVkIHRvIGEgYsOpemllciBjdXJ2ZXMgaXRzXG4gICAqIGhvbGVzIHRvbyAoaml0LXVpIzEwMikuXG4gICAqL1xuICBob2xlSGFuZGxlc0luPzogbnVtYmVyW11bXVtdO1xuICBob2xlSGFuZGxlc091dD86IG51bWJlcltdW11bXTtcbn1cblxuLyoqXG4gKiBBIHJlZ2lvbiB3aG9zZSBnZW9tZXRyeSBpcyBzZXZlcmFsIGRpc2pvaW50IHBhcnRzIOKAlCBlLmcuIHRoZSByZXN1bHQgb2YgbWVyZ2luZ1xuICogdHdvIG5vbi10b3VjaGluZyByZWdpb25zLCBvciB0aGUgaW52ZXJzZSBvZiBhIGJsb2IgKGppdC11aSM4NSkuIEVhY2ggcGFydCBpcyBhXG4gKiBjbG9zZWQge0BsaW5rIFBvbHlnb259IHRoYXQgbWF5IGNhcnJ5IGl0cyBvd24gaG9sZXMsIHNvIGEgTXVsdGlQb2x5Z29uXG4gKiByZXByZXNlbnRzIFwic3BhcnNlIGJpdHMsIHNvbWUgd2l0aCBkb251dCBob2xlc1wiIGFzIGEgc2luZ2xlIHJlZ2lvbi4gTWFwcyAxOjFcbiAqIG9udG8gYSBHZW9KU09OIGBNdWx0aVBvbHlnb25gIChhbmQgUXVQYXRoJ3MgZ2VvbWV0cnkpLlxuICpcbiAqIEEgc2luZ2xlLXBhcnQgTXVsdGlQb2x5Z29uIGlzIGVxdWl2YWxlbnQgdG8gdGhhdCBQb2x5Z29uOyBjYWxsZXJzIHNob3VsZFxuICogcHJlZmVyIGEgcGxhaW4ge0BsaW5rIFBvbHlnb259IGZvciBvbmUgY29ubmVjdGVkIHBhcnQuXG4gKi9cbmV4cG9ydCBjbGFzcyBNdWx0aVBvbHlnb24ge1xuICAvKiogT25lIG9yIG1vcmUgZGlzam9pbnQgY2xvc2VkIHBvbHlnb25zIChlYWNoIG1heSBoYXZlIGhvbGVzKS4gKi9cbiAgcG9seWdvbnM6IFBvbHlnb25bXSA9IFtdO1xufVxuXG5leHBvcnQgdHlwZSBCb3VuZHMgPSBSZWN0YW5nbGUgfCBQb2x5Z29uIHwge1xuICB4PzogbnVtYmVyO1xuICB5PzogbnVtYmVyO1xuICB3aWR0aD86IG51bWJlcjtcbiAgaGVpZ2h0PzogbnVtYmVyO1xuICBucG9pbnRzPzogbnVtYmVyO1xuICB4cG9pbnRzPzogbnVtYmVyW107XG4gIHlwb2ludHM/OiBudW1iZXJbXTtcbn07XG4iXX0=
166
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9tb2RlbHMvcmVnaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFekMsTUFBTSxPQUFPLE1BQU07SUFBbkI7UUFPRSxXQUFNLEdBQStDLElBQUksQ0FBQztRQTBCMUQ7OztxRUFHNkQ7UUFDN0QsTUFBQyxHQUFHLENBQUMsQ0FBQztRQUNOLGVBQVUsR0FBSSxTQUFTLENBQUM7UUFDeEIsa0JBQWEsR0FBRyxDQUFDLENBQUM7UUFDbEI7Ozs7Ozs7OztXQVNHO1FBQ0gsZUFBVSxHQUFHLENBQUMsQ0FBQztRQUNmLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsZUFBVSxHQUFHLENBQUMsQ0FBQztRQUNmLG9CQUFlLEdBQW9CLElBQUksQ0FBQztJQWdHMUMsQ0FBQztJQTlGQzs7aUVBRTZEO0lBQzdELFNBQVM7UUFDUCxPQUFPLElBQUksQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxRQUFRO1FBQ04sd0JBQXdCO1FBQ3hCLElBQUksSUFBSSxDQUFDLE1BQU0sWUFBWSxTQUFTLEVBQUUsQ0FBQztZQUNyQyxPQUFPLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO3VCQUM5QixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssYUFBYSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3RFLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLFlBQVksT0FBTyxFQUFFLENBQUM7WUFDMUMsSUFBSSxJQUFJLEdBQUcsR0FBRyxDQUFDO1lBQ2Ysa0JBQWtCO1lBQ2xCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8s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SUFBSSxJQUFJLENBQUM7SUFDckUsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLFNBQVM7SUFBdEI7UUFDRSxNQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ04sTUFBQyxHQUFHLENBQUMsQ0FBQztRQUNOLFVBQUssR0FBRyxDQUFDLENBQUM7UUFDVixXQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ2IsQ0FBQztDQUFBO0FBRUQsTUFBTSxPQUFPLE9BQU87SUFBcEI7UUFDRSxZQUFPLEdBQUcsQ0FBQyxDQUFDO1FBQ1osWUFBTyxHQUFhLEVBQUUsQ0FBQztRQUN2QixZQUFPLEdBQWEsRUFBRSxDQUFDO1FBQ3ZCLGdCQUFXLEdBQWUsRUFBRSxDQUFDO1FBQzdCLG1FQUFtRTtRQUNuRSxXQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ2Q7Ozs7Ozs7O1dBUUc7UUFDSCxXQUFNLEdBQUcsS0FBSyxDQUFDO0lBOEJqQixDQUFDO0NBQUE7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLE9BQU8sWUFBWTtJQUF6QjtRQUNFLGtFQUFrRTtRQUNsRSxhQUFRLEdBQWMsRUFBRSxDQUFDO0lBQzNCLENBQUM7Q0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNoYXBlU2VsZWN0aW9uIH0gZnJvbSAnLi9zaGFwZSc7XG5cbmV4cG9ydCBjbGFzcyBSZWdpb24ge1xuICAvKiogU3RhYmxlLCB1bmlxdWUgaWRlbnRpdHkgZm9yIHNlbGVjdGlvbiBhbmQgZXF1YWxpdHkuIE1pbnRlZCBieVxuICAgKiAgUGxvdGx5U2VydmljZSB3aGVuIGEgcmVnaW9uIGZpcnN0IGVudGVycyB0aGUgc3lzdGVtLiBOZXZlciBkZXJpdmVkXG4gICAqICBmcm9tIGFycmF5IGluZGV4IOKAlCBuYW1lIGNvbGxpc2lvbnMgYWNyb3NzIGRlbGV0ZS9hZGQgY3ljbGVzIG11c3RcbiAgICogIG5vdCBicmVhayBQcmltZU5HIHJvdyBzZWxlY3Rpb24uICovXG4gIGlkITogbnVtYmVyO1xuICBuYW1lITogc3RyaW5nO1xuICBib3VuZHM/OiBSZWN0YW5nbGUgfCBQb2x5Z29uIHwgTXVsdGlQb2x5Z29uIHwgbnVsbCA9IG51bGw7XG4gIC8qKiBwcm9maWxlID0gYW4gaW50ZW5zaXR5LXByb2ZpbGUgbGluZSBST0k7IHJlbmRlcmVkL2RyYWdnZWQgbGlrZSBhIHJlZ2lvbiBidXRcbiAgICogIGV4Y2x1ZGVkIGZyb20gdGhlIFJlZ2lvbnMgdGFiIGFuZCBleHBvcnRzLiBVc2UgYGlzUHJvZmlsZSgpYCB0byB0ZXN0IGl0IOKAlFxuICAgKiAgaXQncyB0aGUgY2Fub25pY2FsIG1hcmtlciB0aGF0IHNlcGFyYXRlcyBpbnRlbnNpdHkgbGluZXMgKG93bmVkIGJ5IHRoZVxuICAgKiAgaW50ZW5zaXR5IHRvb2wsIHNhbXBsZWQgaW50byB0aGUgaW5zZXQpIGZyb20gYW5ub3RhdGlvbiByZWdpb25zIChvd25lZCBieVxuICAgKiAgdGhlIFJlZ2lvbiBFZGl0b3IpLiBCb3RoIGJhY2tlbmRzIChQbG90bHksIE9TRCkgaG9ub3VyIGl0LiAqL1xuICBraW5kPzogJ3Byb2ZpbGUnO1xuICAvKipcbiAgICogV2hpY2ggYXV0b21hdGVkIHRvb2wgcHJvZHVjZWQgdGhpcyByZWdpb24sIGUuZy4gYCd5b2xvJ2AuIEFic2VudCBvblxuICAgKiBhbnl0aGluZyB0aGUgdXNlciBkcmV3LlxuICAgKlxuICAgKiBMZXRzIGEgdG9vbCByZXBsYWNlIGl0cyAqb3duKiBwcmV2aW91cyBvdXRwdXQgb24gYSByZS1ydW4gd2l0aG91dCB0b3VjaGluZ1xuICAgKiBoYW5kLWRyYXduIHdvcmsgb3IgYW5vdGhlciB0b29sJ3MgcmVzdWx0cyDigJQgd2hpY2ggbWF0dGVycyB3aGlsZSB0dW5pbmdcbiAgICogcGFyYW1ldGVycywgd2hlcmUgZXZlcnkgcnVuIHdvdWxkIG90aGVyd2lzZSBwaWxlIG9udG8gdGhlIGxhc3QuIElkZW50aXR5XG4gICAqIGNvbXBhcmlzb24gaXMgbm90IGEgc3Vic3RpdHV0ZTogcmVnaW9ucyBtYXkgYmUgcmUtbWludGVkIGFzIHRoZXkgcGFzc1xuICAgKiB0aHJvdWdoIHRoZSBzdG9yZSwgc28gdGhlIG1hcmtlciBoYXMgdG8gdHJhdmVsIHdpdGggdGhlIGRhdGEuXG4gICAqL1xuICBzb3VyY2U/OiBzdHJpbmc7XG4gIGNvbG9yPzogc3RyaW5nOyAvLyBoZXggc3RyaW5nLCBlLmcuICcjUlJHR0JCJyAodGhlIGhpc3RvcmljYWwgXCJbciwgZywgYl1cIiBub3RlIGlzIHN0YWxlKVxuICAvLyBjbGFzcyBsYWJlbFxuICBsYWJlbD86IHN0cmluZztcbiAgLyoqIFRydWUgd2hlbiB0aGUgdXNlciBzZXQgdGhpcyByZWdpb24ncyBjb2xvdXIgZXhwbGljaXRseSAoUmVnaW9uIEVkaXRvciBDb2xvclxuICAgKiAgY29sdW1uKS4gUHJlc2V0IGNvbG91ciByZXNvbHV0aW9uIChqaXQtdWkjNzApIHNraXBzIG92ZXJyaWRkZW4gcmVnaW9ucyBzbyBhXG4gICAqICBtYW51YWwgY29sb3VyIGlzIG5vdCBjbG9iYmVyZWQgd2hlbiBwcmVzZXRzIGFyZSAocmUpYXBwbGllZCBvbiBsb2FkL2ltcG9ydC4gKi9cbiAgY29sb3JPdmVycmlkZGVuPzogYm9vbGVhbjtcbiAgZmlsZW5hbWU/OiBzdHJpbmc7XG4gIC8qKiBaZXJvLWJhc2VkIHotc2xpY2UgdGhpcyByZWdpb24gYmVsb25ncyB0byB3aXRoaW4gYSBzdGFjayDigJQgbWlycm9yc1xuICAgKiAgUXVQYXRoJ3MgYGdlb21ldHJ5LnBsYW5lLnpgIChhIG1pc3NpbmcgcGxhbmUgLyBkZWZhdWx0IHBsYW5lIHJlYWRzIGJhY2sgYXNcbiAgICogIDApLiBVc2VkIHRvIHBsYWNlL2ZpbHRlciBST0lzIHBlciBzbGljZTsgMCBmb3IgYSBwbGFpbiBzaW5nbGUtcGxhbmUgaW1hZ2VcbiAgICogIG9yIGEgcmVnaW9uIGRyYXduIHdpdGhvdXQgYSBzbGljZSBjb250ZXh0IChqaXQtdWkjOTMpLiAqL1xuICB6ID0gMDtcbiAgc2hhcGVDb2xvcj8gPSAnIzAwRkZGRic7XG4gIGJ5dGVzUGVyUGl4ZWwgPSA4O1xuICAvKipcbiAgICogcmVzb2x1dGlvbiBpcyB0aGUgcmVzb2x1dGlvbiBhdCB3aGljaCB0aGUgcmVnaW9uXG4gICAqIHdhcyBmb3VuZC4gSW4gb3JkZXIgdG8gZ2V0IGl0IGluIHRoZSBmdWxsIGltYWdlXG4gICAqIGNvb3JkaW5hdGVzIGl0IHdpbGwgbm9ybWFsbHkgYmUgMC4gSG93ZXZlciBpZlxuICAgKiB0aGVyZSBpcyBhIG1pc3Rha2Ugd2l0aCB0aGUgcmVzb2x1dGlvbiBpdCBtYXkgbm90XG4gICAqIGJlLiBXZSByZXR1cm4gdGhlIHJlc29sdXRpb24gaGVyZSBpbiBvcmRlciB0byBiZVxuICAgKiBzdXJlIHdoYXQgaXQgaXMuIFRoZSBzZXJ2ZXIgbWF5IG5lZWQgdG8gYmUgY2hhbmdlZFxuICAgKiB0byBlbnN1cmUgdGhhdCByZXN1bHRzIHJlZ2lvbnMgYXJlIGFsd2F5cyByZXR1cm5lZFxuICAgKiBhdCByZXNvbHV0aW9uID0gMFxuICAgKi9cbiAgcmVzb2x1dGlvbiA9IDA7XG4gIGNyb3BwZWQgPSBmYWxzZTtcbiAgdGlsZU51bWJlciA9IDA7XG4gIHRpbGVDb29yZGluYXRlczogbnVtYmVyW10gfCBudWxsID0gbnVsbDtcblxuICAvKiogVHJ1ZSBmb3IgaW50ZW5zaXR5LXByb2ZpbGUgbGluZSBST0lzICh0aGUgaW50ZW5zaXR5IHRvb2wncyBsaW5lcykuIFRoZXNlIGFyZVxuICAgKiAgTk9UIGFubm90YXRpb24gcmVnaW9uczogdGhleSBuZXZlciBhcHBlYXIgaW4gdGhlIFJlZ2lvbiBFZGl0b3IgYW5kIGVkaXRvclxuICAgKiAgb3BlcmF0aW9ucyAoc2VsZWN0L3NhdmUvZGVsZXRlKSBtdXN0IG5ldmVyIHRvdWNoIHRoZW0uICovXG4gIGlzUHJvZmlsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5raW5kID09PSAncHJvZmlsZSc7XG4gIH1cblxuICB0b1N0cmluZygpIHtcbiAgICAvLyBpZiBzaGFwZSBpcyByZWN0YW5nbGVcbiAgICBpZiAodGhpcy5ib3VuZHMgaW5zdGFuY2VvZiBSZWN0YW5nbGUpIHtcbiAgICAgIHJldHVybiBgeDogJHt0aGlzLmJvdW5kcy54fSwgeTogJHt0aGlzLmJvdW5kcy55fSxcbiAgICAgICAgICAgICAgd2lkdGg6ICR7dGhpcy5ib3VuZHMud2lkdGh9LCBoZWlnaHQ6ICR7dGhpcy5ib3VuZHMuaGVpZ2h0fWA7XG4gICAgfSBlbHNlIGlmICh0aGlzLmJvdW5kcyBpbnN0YW5jZW9mIFBvbHlnb24pIHtcbiAgICAgIGxldCBwYXRoID0gJ00nO1xuICAgICAgLy8gZGlzcGxheSBhcyBwYXRoXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuYm91bmRzLm5wb2ludHM7IGkrKykge1xuICAgICAgICBpZiAoaSA8IHRoaXMuYm91bmRzLm5wb2ludHMgLSAxKSB7XG4gICAgICAgICAgcGF0aCA9IGAke3BhdGh9JHt0aGlzLmJvdW5kcy54cG9pbnRzW2ldfSwke3RoaXMuYm91bmRzLnlwb2ludHNbaV19TGA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGF0aCA9IGAke3BhdGh9JHt0aGlzLmJvdW5kcy54cG9pbnRzW2ldfSwke3RoaXMuYm91bmRzLnlwb2ludHNbaV19YDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMuYm91bmRzLmNsb3NlZCAhPT0gZmFsc2UpIHtcbiAgICAgICAgcGF0aCArPSAnWic7XG4gICAgICB9XG4gICAgICByZXR1cm4gcGF0aDtcbiAgICB9XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBTaGFwZVNlbGVjdGlvbiBvYmplY3QgdGhhdCBjYW4gYmUgdXNlZCB0b1xuICAgKiBjcmVhdGUgYSBzaGFwZSBpbiBQbG90bHkuXG4gICAqIEBwYXJhbSBzaG93UmVnaW9uTGFiZWxcbiAgICogQHJldHVybiBTaGFwZVNlbGVjdGlvblxuICAgKi9cbiAgZ2V0U2hhcGUoc2hvd1JlZ2lvbkxhYmVsOiBib29sZWFuID0gdHJ1ZSk6IFNoYXBlU2VsZWN0aW9uIHtcbiAgICBjb25zdCBzaGFwZSA9IG5ldyBTaGFwZVNlbGVjdGlvbigpO1xuICAgIHNoYXBlLmlkID0gdGhpcy5pZDtcbiAgICBzaGFwZS5uYW1lID0gdGhpcy5uYW1lO1xuICAgIHNoYXBlLmVkaXRhYmxlID0gdHJ1ZTtcbiAgICBzaGFwZS5saW5lID0ge1xuICAgICAgY29sb3I6IHRoaXMuY29sb3IgPyB0aGlzLmNvbG9yIDogdGhpcy5zaGFwZUNvbG9yLFxuICAgICAgd2lkdGg6IDMsXG4gICAgfTtcbiAgICBzaGFwZS5maWxlTmFtZSA9IHRoaXMuZmlsZW5hbWU7XG4gICAgaWYgKHRoaXMua2luZCA9PT0gJ3Byb2ZpbGUnKSBzaGFwZS5raW5kID0gJ3Byb2ZpbGUnO1xuICAgIGlmIChzaG93UmVnaW9uTGFiZWwpIHtcbiAgICAgIHNoYXBlLmxhYmVsID0ge1xuICAgICAgICB0ZXh0OiBgJHt0aGlzLmxhYmVsfWAsXG4gICAgICAgIHRleHR0ZW1wbGF0ZTogYCR7dGhpcy5sYWJlbH1gLFxuICAgICAgICBmb250OiB7IGNvbG9yOiB0aGlzLmNvbG9yID8gdGhpcy5jb2xvciA6IHRoaXMuc2hhcGVDb2xvciB9LFxuICAgICAgICB0ZXh0cG9zaXRpb246ICd0b3AgbGVmdCcsXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBzaGFwZS5sYWJlbCA9IHt9O1xuICAgIH1cbiAgICBzaGFwZS5sZWdlbmQgPSB0aGlzLmxhYmVsO1xuXG4gICAgY29uc3QgYm5kcyA9IHRoaXMuYm91bmRzO1xuICAgIGlmIChibmRzICE9IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKHRoaXMuaXNSZWN0YW5nbGUoYm5kcykpIHtcbiAgICAgICAgc2hhcGUudHlwZSA9ICdyZWN0JztcbiAgICAgICAgc2hhcGUueDAgPSBibmRzLng7XG4gICAgICAgIHNoYXBlLnkwID0gYm5kcy55O1xuICAgICAgICBzaGFwZS54MSA9IGJuZHMueCArIGJuZHMud2lkdGg7XG4gICAgICAgIHNoYXBlLnkxID0gYm5kcy55ICsgYm5kcy5oZWlnaHQ7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5pc1BvbHlnb24oYm5kcykpIHtcbiAgICAgICAgc2hhcGUudHlwZSA9ICdwYXRoJztcbiAgICAgICAgbGV0IHBhdGggPSAnTSc7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYm5kcy5ucG9pbnRzOyBpKyspIHtcbiAgICAgICAgICBpZiAoaSA8IGJuZHMubnBvaW50cyAtIDEpIHtcbiAgICAgICAgICAgIHBhdGggPSBgJHtwYXRofSR7Ym5kcy54cG9pbnRzW2ldfSwke2JuZHMueXBvaW50c1tpXX1MYDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGF0aCA9IGAke3BhdGh9JHtibmRzLnhwb2ludHNbaV19LCR7Ym5kcy55cG9pbnRzW2ldfWA7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChibmRzLmNsb3NlZCAhPT0gZmFsc2UpIHtcbiAgICAgICAgICBwYXRoICs9ICdaJztcbiAgICAgICAgfVxuICAgICAgICBzaGFwZS5wYXRoID0gcGF0aDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHNoYXBlO1xuICB9XG5cbiAgaXNSZWN0YW5nbGUoYm5kczogYW55KTogYm5kcyBpcyBSZWN0YW5nbGUge1xuICAgIHJldHVybiAneCcgaW4gYm5kcyAmJiAneScgaW4gYm5kcyAmJiAnd2lkdGgnIGluIGJuZHMgJiYgJ2hlaWdodCcgaW4gYm5kcztcbiAgfVxuXG4gIGlzUG9seWdvbihibmRzOiBhbnkpOiBibmRzIGlzIFBvbHlnb24ge1xuICAgIHJldHVybiAnbnBvaW50cycgaW4gYm5kcyAmJiAneHBvaW50cycgaW4gYm5kcyAmJiAneXBvaW50cycgaW4gYm5kcztcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUmVjdGFuZ2xlIHtcbiAgeCA9IDA7XG4gIHkgPSAwO1xuICB3aWR0aCA9IDA7XG4gIGhlaWdodCA9IDA7XG59XG5cbmV4cG9ydCBjbGFzcyBQb2x5Z29uIHtcbiAgbnBvaW50cyA9IDA7XG4gIHhwb2ludHM6IG51bWJlcltdID0gW107XG4gIHlwb2ludHM6IG51bWJlcltdID0gW107XG4gIGNvb3JkaW5hdGVzOiBudW1iZXJbXVtdID0gW107XG4gIC8qKiBmYWxzZSBmb3Igb3BlbiBwb2x5bGluZXM7IHRydWUgKGRlZmF1bHQpIGZvciBjbG9zZWQgcG9seWdvbnMgKi9cbiAgY2xvc2VkID0gdHJ1ZTtcbiAgLyoqXG4gICAqIFdoZW4gdHJ1ZSB0aGUgdmVydGljZXMgYXJlIHRyZWF0ZWQgYXMgYmV6aWVyLXNwbGluZSAqKmFuY2hvcnMqKiBhbmQgdGhlXG4gICAqIHJlZ2lvbiBpcyByZW5kZXJlZC9leHBvcnRlZCBhcyBhIHNtb290aCBjdXJ2ZSB0aHJvdWdoIHRoZW0uIFRoZSB2ZXJ0aWNlc1xuICAgKiBzdGF5IHRoZSBlZGl0YWJsZSBhbmNob3JzIOKAlCB0b2dnbGluZyB0aGlzIGZsYWcgaXMgdGhlIHRvQmV6aWVyXG4gICAqIChgdHJ1ZWApIC8gdG9Qb2x5Z29uIChgZmFsc2VgKSwgd2hpY2ggb25seSBhZGQvcmVtb3ZlIHRoZSBjdXJ2ZSwgbmV2ZXIgbW92ZVxuICAgKiB0aGUgYW5jaG9ycy4gR2VvSlNPTiBrZWVwcyB0aGUgZmxhdHRlbmVkIGN1cnZlIGFzIHRoZSBnZW9tZXRyeSAoc28gUXVQYXRoXG4gICAqIHJlbmRlcnMgaXQpIHBsdXMgdGhlIGFuY2hvcnMgKyBoYW5kbGVzICsgZmxhZyBpbiBwcm9wZXJ0aWVzIChzbyBKSVRcbiAgICogcm91bmQtdHJpcHMgdGhlIGVkaXRhYmxlIGJlemllcikuXG4gICAqL1xuICBiZXppZXIgPSBmYWxzZTtcbiAgLyoqXG4gICAqIFBlci1hbmNob3IgY3ViaWMtYmV6aWVyIGNvbnRyb2wtcG9pbnQgb2Zmc2V0cywgKipyZWxhdGl2ZSoqIHRvIHRoZWlyIGFuY2hvclxuICAgKiAoc28gdGhleSB0cmFuc2xhdGUgd2l0aCBpdCkuIFByZXNlbnQgb25seSBmb3IgYmV6aWVyIHJlZ2lvbnM7IGluaXRpYWxpc2VkXG4gICAqIGZyb20gdGhlIENhdG11bGwtUm9tIGNvbnN0cnVjdGlvbiAoYSBzbW9vdGggY3VydmUpIHdoZW4gYmV6aWVyIGlzIHR1cm5lZCBvbixcbiAgICogdGhlbiBpbmRpdmlkdWFsbHkgZWRpdGFibGUgYnkgZHJhZ2dpbmcgdGhlIGhhbmRsZXMuIGBoYW5kbGVzSW5baV1gIC9cbiAgICogYGhhbmRsZXNPdXRbaV1gIGFyZSBgW2R4LCBkeV1gIGZvciB2ZXJ0ZXggYGlgLlxuICAgKi9cbiAgaGFuZGxlc0luPzogbnVtYmVyW11bXTtcbiAgaGFuZGxlc091dD86IG51bWJlcltdW107XG5cbiAgLyoqXG4gICAqIEludGVyaW9yIHJpbmdzIChob2xlcykg4oCUIGppdC11aSM4NS4gRWFjaCByaW5nIGlzIGEgbGlzdCBvZiBgW3gsIHldYFxuICAgKiBpbWFnZS1waXhlbCBwYWlycyBpbiB0aGUgU0FNRSBjbG9zZWQtcG9seWdvbiBjb252ZW50aW9uIGFzIHRoZSBleHRlcmlvclxuICAgKiAoYGNvb3JkaW5hdGVzYCk6IG5vIHJlcGVhdGVkIGNsb3NpbmcgcG9pbnQuIFByZXNlbnQgb25seSBvbiBjbG9zZWQgcG9seWdvbnMuXG4gICAqIEEgcG9pbnQgaW5zaWRlIHRoZSBleHRlcmlvciAqKmFuZCoqIGluc2lkZSBhbnkgaG9sZSBpcyBPVVRTSURFIHRoZSByZWdpb25cbiAgICogKGV2ZW4tb2RkIHJ1bGUpLiBBYnNlbnQvZW1wdHkgPT0gYSBzb2xpZCBwb2x5Z29uICh0aGUgcHJpb3IgYmVoYXZpb3VyKSwgc29cbiAgICogZXZlcnkgZXhpc3RpbmcgcmVnaW9uIGlzIHVuYWZmZWN0ZWQuXG4gICAqL1xuICBob2xlcz86IG51bWJlcltdW11bXTtcblxuICAvKipcbiAgICogUGVyLWhvbGUgYsOpemllciBjb250cm9sLXBvaW50IG9mZnNldHMsIHBhcmFsbGVsIHRvIHtAbGluayBob2xlc30gKG9uZSBlbnRyeSBwZXIgcmluZywgZWFjaCBhXG4gICAqIGxpc3Qgb2YgYFtkeCwgZHldYCBwZXIgcmluZyB2ZXJ0ZXgsICoqcmVsYXRpdmUqKiB0byB0aGUgdmVydGV4KS4gUHJlc2VudCBvbmx5IHdoZW4gYGJlemllcmAgaXNcbiAgICogb24gZm9yIGEgZG9udXQg4oCUIHNlZWRlZCBmcm9tIHRoZSBDYXRtdWxsLVJvbSBkZWZhdWx0IGFuZCBpbmRpdmlkdWFsbHkgZWRpdGFibGUsIGV4YWN0bHkgbGlrZVxuICAgKiB0aGUgZXh0ZXJpb3Ige0BsaW5rIGhhbmRsZXNJbn0ve0BsaW5rIGhhbmRsZXNPdXR9LiBTbyBhIGRvbnV0IHNtb290aGVkIHRvIGEgYsOpemllciBjdXJ2ZXMgaXRzXG4gICAqIGhvbGVzIHRvbyAoaml0LXVpIzEwMikuXG4gICAqL1xuICBob2xlSGFuZGxlc0luPzogbnVtYmVyW11bXVtdO1xuICBob2xlSGFuZGxlc091dD86IG51bWJlcltdW11bXTtcbn1cblxuLyoqXG4gKiBBIHJlZ2lvbiB3aG9zZSBnZW9tZXRyeSBpcyBzZXZlcmFsIGRpc2pvaW50IHBhcnRzIOKAlCBlLmcuIHRoZSByZXN1bHQgb2YgbWVyZ2luZ1xuICogdHdvIG5vbi10b3VjaGluZyByZWdpb25zLCBvciB0aGUgaW52ZXJzZSBvZiBhIGJsb2IgKGppdC11aSM4NSkuIEVhY2ggcGFydCBpcyBhXG4gKiBjbG9zZWQge0BsaW5rIFBvbHlnb259IHRoYXQgbWF5IGNhcnJ5IGl0cyBvd24gaG9sZXMsIHNvIGEgTXVsdGlQb2x5Z29uXG4gKiByZXByZXNlbnRzIFwic3BhcnNlIGJpdHMsIHNvbWUgd2l0aCBkb251dCBob2xlc1wiIGFzIGEgc2luZ2xlIHJlZ2lvbi4gTWFwcyAxOjFcbiAqIG9udG8gYSBHZW9KU09OIGBNdWx0aVBvbHlnb25gIChhbmQgUXVQYXRoJ3MgZ2VvbWV0cnkpLlxuICpcbiAqIEEgc2luZ2xlLXBhcnQgTXVsdGlQb2x5Z29uIGlzIGVxdWl2YWxlbnQgdG8gdGhhdCBQb2x5Z29uOyBjYWxsZXJzIHNob3VsZFxuICogcHJlZmVyIGEgcGxhaW4ge0BsaW5rIFBvbHlnb259IGZvciBvbmUgY29ubmVjdGVkIHBhcnQuXG4gKi9cbmV4cG9ydCBjbGFzcyBNdWx0aVBvbHlnb24ge1xuICAvKiogT25lIG9yIG1vcmUgZGlzam9pbnQgY2xvc2VkIHBvbHlnb25zIChlYWNoIG1heSBoYXZlIGhvbGVzKS4gKi9cbiAgcG9seWdvbnM6IFBvbHlnb25bXSA9IFtdO1xufVxuXG5leHBvcnQgdHlwZSBCb3VuZHMgPVxuICB8IFJlY3RhbmdsZVxuICB8IFBvbHlnb25cbiAgfCB7XG4gICAgICB4PzogbnVtYmVyO1xuICAgICAgeT86IG51bWJlcjtcbiAgICAgIHdpZHRoPzogbnVtYmVyO1xuICAgICAgaGVpZ2h0PzogbnVtYmVyO1xuICAgICAgbnBvaW50cz86IG51bWJlcjtcbiAgICAgIHhwb2ludHM/OiBudW1iZXJbXTtcbiAgICAgIHlwb2ludHM/OiBudW1iZXJbXTtcbiAgICB9O1xuIl19
@@ -18,6 +18,8 @@ import * as i0 from "@angular/core";
18
18
  * Exposes the same `status$` / `busy$` / `progress$` surface as the cellpose
19
19
  * tool so the host's shared segmentation toast drives it unchanged.
20
20
  */
21
+ /** Marks regions this tool produced, so a re-run can replace only its own. */
22
+ export const YOLO_REGION_SOURCE = 'yolo';
21
23
  export class YoloDetectToolService {
22
24
  constructor(
23
25
  /** Server-side crop, so detection can run at the model's scale rather than
@@ -89,9 +91,13 @@ export class YoloDetectToolService {
89
91
  this.status$.next('No objects detected.');
90
92
  return 0;
91
93
  }
92
- // Append. A detection run must not discard annotations drawn by hand or
93
- // produced by another tool.
94
- viz.setRegions([...(viz.getRegions() ?? []), ...added]);
94
+ // Replace this tool's own previous output, keep everything else. Appending
95
+ // unconditionally made every tuning run stack onto the last, so the
96
+ // viewer accumulated overlapping results from parameters no longer in
97
+ // effect. Hand-drawn regions and other tools' output carry no `source`
98
+ // and are untouched.
99
+ const kept = (viz.getRegions() ?? []).filter((r) => r.source !== YOLO_REGION_SOURCE);
100
+ viz.setRegions([...kept, ...added]);
95
101
  this.status$.next(`Added ${added.length} region(s).`);
96
102
  return added.length;
97
103
  }
@@ -165,6 +171,7 @@ export class YoloDetectToolService {
165
171
  poly.closed = true;
166
172
  const region = new Region();
167
173
  region.bounds = poly;
174
+ region.source = YOLO_REGION_SOURCE;
168
175
  // The class name drives preset colour resolution; leaving `color` unset lets
169
176
  // an existing preset for this class win.
170
177
  region.label = className;
@@ -182,4 +189,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
182
189
  type: Inject,
183
190
  args: [TILE_ACCESS_PORT]
184
191
  }] }] });
185
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieW9sby1kZXRlY3QtdG9vbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi90b29sYmFyL3NlZ21lbnRhdGlvbi95b2xvLWRldGVjdC10b29sLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXZELE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFhLE1BQU0scUJBQXFCLENBQUM7QUFDakUsT0FBTyxFQUFFLGdCQUFnQixFQUF1QixNQUFNLHdDQUF3QyxDQUFDOztBQUkvRjs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE1BQU0sT0FBTyxxQkFBcUI7SUFLaEM7SUFDRTs7d0RBRW9EO0lBQ04sYUFBb0MsSUFBSTtRQUF4QyxlQUFVLEdBQVYsVUFBVSxDQUE4QjtRQVIvRSxZQUFPLEdBQUcsSUFBSSxlQUFlLENBQVMsRUFBRSxDQUFDLENBQUM7UUFDMUMsVUFBSyxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQzVDLGNBQVMsR0FBRyxJQUFJLGVBQWUsQ0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBT2xELENBQUM7SUFFSjs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLFlBQVksQ0FDaEIsR0FBZ0IsRUFDaEIsU0FBNkIsRUFDN0IsT0FBK0IsRUFBRTtRQUVqQyxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMscUJBQXFCLEVBQUUsRUFBRSxDQUFDO1FBQzdDLElBQUksQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLEtBQUssS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN6RCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FB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QU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztJQUNILENBQUM7SUFFTyxVQUFVLENBQUMsRUFBWSxFQUFFLEVBQVksRUFBRSxTQUFpQjtRQUM5RCxNQUFNLElBQUksR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQztRQUN6QixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBRW5CLE1BQU0sTUFBTSxHQUFHLElBQUksTUFBTSxFQUFFLENBQUM7UUFDNUIsTUFBTSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDckIsNkVBQTZFO1FBQzdFLHlDQUF5QztRQUN6QyxNQUFNLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQztRQUN6QixPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDOzhHQTlLVSxxQkFBcUIsa0JBU1YsZ0JBQWdCO2tIQVQzQixxQkFBcUIsY0FEUixNQUFNOzsyRkFDbkIscUJBQXFCO2tCQURqQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7MEJBVTdCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBSZWdpb24sIFBvbHlnb24sIFJlY3RhbmdsZSB9IGZyb20gJy4uLy4uL21vZGVscy9yZWdpb24nO1xuaW1wb3J0IHsgVElMRV9BQ0NFU1NfUE9SVCwgdHlwZSBUaWxlQWNjZXNzUG9ydCB9IGZyb20gJy4uLy4uL2NvbnRyYWN0cy9wb3J0cy90aWxlLWFjY2Vzcy5wb3J0JztcbmltcG9ydCB0eXBlIHsgSVZpc3VhbGl6ZXIgfSBmcm9tICcuLi8uLi9jb250cmFjdHMvdmlzdWFsaXplci5jb250cmFjdCc7XG5pbXBvcnQgdHlwZSB7IElJbnN0YW5jZVNlZ21lbnRlciwgSW5zdGFuY2VTZWdtZW50T3B0aW9ucyB9IGZyb20gJy4uLy4uL2NvbnRyYWN0cy9pbnN0YW5jZS1zZWdtZW50ZXIuY29udHJhY3QnO1xuXG4vKipcbiAqIFlPTE8gb2JqZWN0IGRldGVjdGlvbiBvdmVyIHRoZSBjdXJyZW50IHZpZXcuXG4gKlxuICogVGhlIGNvbXBsZW1lbnQgdG8ge0BsaW5rIENlbGxTZWdtZW50VG9vbFNlcnZpY2V9OiBjZWxscG9zZSBhdXRvLXNlZ21lbnRzIGNlbGxzXG4gKiBpbnNpZGUgYSBib3ggeW91IGRyYXcsIHdoZXJlYXMgYSBkZXRlY3RvciBpcyBtZWFudCB0byBmaW5kIG9iamVjdHMgYWNyb3NzIGFcbiAqIGZpZWxkLiBTbyB0aGlzIHRha2VzIG5vIHByb21wdCDigJQgaXQgcnVucyBvbiB3aGF0ZXZlciBpcyBvbiBzY3JlZW4gYW5kIHR1cm5zXG4gKiBldmVyeSBkZXRlY3Rpb24gaW50byBhIHJlZ2lvbi5cbiAqXG4gKiBEZXRlY3Rpb25zIGNvbWUgYmFjayBpbiB0aGUgZGlzcGxheWVkIGltYWdlJ3MgcGl4ZWxzOyB0aGV5IGFyZSBtYXBwZWQgb250b1xuICogdGhlIGZ1bGwtcmVzb2x1dGlvbiBpbWFnZSB0aHJvdWdoIHRoZSB2aWV3ZXIncyBvd24gc291cmNlIHJlY3QsIHNvIHRoZSByZWdpb25zXG4gKiBsYW5kIHdoZXJlIHRoZSBvYmplY3RzIGFjdHVhbGx5IGFyZSByYXRoZXIgdGhhbiBhdCB2aWV3LWxvY2FsIGNvb3JkaW5hdGVzLlxuICpcbiAqIEV4cG9zZXMgdGhlIHNhbWUgYHN0YXR1cyRgIC8gYGJ1c3kkYCAvIGBwcm9ncmVzcyRgIHN1cmZhY2UgYXMgdGhlIGNlbGxwb3NlXG4gKiB0b29sIHNvIHRoZSBob3N0J3Mgc2hhcmVkIHNlZ21lbnRhdGlvbiB0b2FzdCBkcml2ZXMgaXQgdW5jaGFuZ2VkLlxuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFlvbG9EZXRlY3RUb29sU2VydmljZSB7XG4gIHJlYWRvbmx5IHN0YXR1cyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xuICByZWFkb25seSBidXN5JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBwcm9ncmVzcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oLTEpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIC8qKiBTZXJ2ZXItc2lkZSBjcm9wLCBzbyBkZXRlY3Rpb24gY2FuIHJ1biBhdCB0aGUgbW9kZWwncyBzY2FsZSByYXRoZXIgdGhhblxuICAgICAqICB0aGUgdmlld2VyJ3MuIE9wdGlvbmFsOiB3aXRob3V0IGl0IHRoZSB0b29sIGZhbGxzIGJhY2sgdG8gdGhlIGRpc3BsYXllZFxuICAgICAqICBwaXhlbHMsIHdoaWNoIGlzIGNvcnJlY3QgYnV0IHNjYWxlLWRlcGVuZGVudC4gKi9cbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFRJTEVfQUNDRVNTX1BPUlQpIHByaXZhdGUgdGlsZUFjY2VzczogVGlsZUFjY2Vzc1BvcnQgfCBudWxsID0gbnVsbCxcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBEZXRlY3QgaW4gdGhlIGN1cnJlbnQgdmlldyBhbmQgYXBwZW5kIHRoZSByZXN1bHRzIGFzIHJlZ2lvbnMuXG4gICAqXG4gICAqIEByZXR1cm5zIHRoZSBudW1iZXIgb2YgcmVnaW9ucyBhZGRlZC5cbiAgICovXG4gIGFzeW5jIGRldGVjdEluVmlldyhcbiAgICB2aXo6IElWaXN1YWxpemVyLFxuICAgIHNlZ21lbnRlcjogSUluc3RhbmNlU2VnbWVudGVyLFxuICAgIG9wdHM6IEluc3RhbmNlU2VnbWVudE9wdGlvbnMgPSB7fSxcbiAgKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICBjb25zdCBwaXhlbHMgPSB2aXouZ2V0RGlzcGxheWVkUGl4ZWxEYXRhPy4oKTtcbiAgICBpZiAoIXBpeGVscyB8fCBwaXhlbHMud2lkdGggPT09IDAgfHwgcGl4ZWxzLmhlaWdodCA9PT0gMCkge1xuICAgICAgdGhpcy5zdGF0dXMkLm5leHQoJ05vIGltYWdlIG9uIHNjcmVlbiB0byBkZXRlY3QgaW4uJyk7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICB0aGlzLmJ1c3kkLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5wcm9ncmVzcyQubmV4dCgtMSk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlY3QgPSB2aXouZ2V0RGlzcGxheWVkU291cmNlUmVjdD8uKCkgPz8gbnVsbDtcbiAgICAgIGNvbnN0IHRhcmdldCA9IE51bWJlcihvcHRzLmRvd25zYW1wbGluZ0ZhY3RvciA/PyAwKSB8fCAwO1xuICAgICAgY29uc3Qgdmlld0ZhY3RvciA9IHJlY3QgJiYgcGl4ZWxzLndpZHRoID4gMCA/IHJlY3Qud2lkdGggLyBwaXhlbHMud2lkdGggOiAxO1xuXG4gICAgICAvLyBSZS1jcm9wIGF0IHRoZSBtb2RlbCdzIHNjYWxlIHdoZW4gdGhlIHZpZXcgaXMgY29hcnNlciB0aGFuIGl0IHdhbnRzLlxuICAgICAgLy8gVGhlIGltYWdlIGlzIHRpbGUtYmFja2VkLCBzbyB0aGF0IGRldGFpbCBleGlzdHMgc2VydmVyLXNpZGUgZXZlbiB0aG91Z2hcbiAgICAgIC8vIHRoZSBkaXNwbGF5ZWQgcGl4ZWxzIGhhdmUgZGlzY2FyZGVkIGl0LlxuICAgICAgbGV0IHNvdXJjZSA9IHsgZGF0YTogcGl4ZWxzLmRhdGEsIHdpZHRoOiBwaXhlbHMud2lkdGgsIGhlaWdodDogcGl4ZWxzLmhlaWdodCB9O1xuICAgICAgaWYgKHJlY3QgJiYgdGFyZ2V0ID4gMCAmJiB0YXJnZXQgPCB2aWV3RmFjdG9yICogMC45OCkge1xuICAgICAgICB0aGlzLnN0YXR1cyQubmV4dCgnRmV0Y2hpbmcgaW1hZ2UgYXQgbW9kZWwgcmVzb2x1dGlvbuKApicpO1xuICAgICAgICBjb25zdCBoaSA9IGF3YWl0IHRoaXMuZmV0Y2hDcm9wQXRTY2FsZShyZWN0LCB0YXJnZXQpO1xuICAgICAgICBpZiAoaGkpIHNvdXJjZSA9IGhpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBzZWdtZW50ZXIuc2VnbWVudEluc3RhbmNlcyhzb3VyY2UsIG9wdHMsIHtcbiAgICAgICAgb25Qcm9ncmVzczogKGYpID0+IHRoaXMucHJvZ3Jlc3MkLm5leHQoZiksXG4gICAgICAgIG9uU3RhdHVzOiAocykgPT4gdGhpcy5zdGF0dXMkLm5leHQocyksXG4gICAgICB9KTtcblxuICAgICAgLy8gVmlldyBwaXhlbHMgLT4gZnVsbC1yZXNvbHV0aW9uIGltYWdlIHBpeGVscy4gV2l0aG91dCB0aGlzIGV2ZXJ5IHJlZ2lvblxuICAgICAgLy8gd291bGQgc2l0IGF0IHZpZXctbG9jYWwgY29vcmRpbmF0ZXMsIGkuZS4gdGhlIHdyb25nIHBsYWNlIG9uIHRoZSBzbGlkZVxuICAgICAgLy8gZm9yIGFueSB6b29tZWQgb3IgcGFubmVkIHZpZXcuXG4gICAgICBjb25zdCBvZmZzZXRYID0gcmVjdCA/IHJlY3QueCA6IDA7XG4gICAgICBjb25zdCBvZmZzZXRZID0gcmVjdCA/IHJlY3QueSA6IDA7XG4gICAgICAvLyBBZ2FpbnN0IHRoZSBwaXhlbHMgYWN0dWFsbHkgaW5mZXJyZWQgb24sIHdoaWNoIG1heSBiZSB0aGUgcmUtY3JvcC5cbiAgICAgIGNvbnN0IHJhdGlvWCA9IHJlY3QgJiYgc291cmNlLndpZHRoID4gMCA/IHJlY3Qud2lkdGggLyBzb3VyY2Uud2lkdGggOiAxO1xuICAgICAgY29uc3QgcmF0aW9ZID0gcmVjdCAmJiBzb3VyY2UuaGVpZ2h0ID4gMCA/IHJlY3QuaGVpZ2h0IC8gc291cmNlLmhlaWdodCA6IDE7XG5cbiAgICAgIGNvbnN0IGFkZGVkOiBSZWdpb25bXSA9IFtdO1xuICAgICAgZm9yIChjb25zdCBkZXQgb2YgcmVzdWx0LmRldGVjdGlvbnMpIHtcbiAgICAgICAgaWYgKGRldC5wb2x5Z29ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgZm9yIChjb25zdCBwb2x5IG9mIGRldC5wb2x5Z29ucykge1xuICAgICAgICAgICAgaWYgKHBvbHkuZXh0ZXJpb3IubGVuZ3RoIDwgMykgY29udGludWU7XG4gICAgICAgICAgICBhZGRlZC5wdXNoKFxuICAgICAgICAgICAgICB0aGlzLm1ha2VSZWdpb24oXG4gICAgICAgICAgICAgICAgcG9seS5leHRlcmlvci5tYXAoKFt4XSkgPT4gTWF0aC5yb3VuZChvZmZzZXRYICsgeCAqIHJhdGlvWCkpLFxuICAgICAgICAgICAgICAgIHBvbHkuZXh0ZXJpb3IubWFwKChbLCB5XSkgPT4gTWF0aC5yb3VuZChvZmZzZXRZICsgeSAqIHJhdGlvWSkpLFxuICAgICAgICAgICAgICAgIGRldC5jbGFzc05hbWUsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBEZXRlY3Rpb24gbW9kZSB5aWVsZHMgbm8gb3V0bGluZTsgdGhlIGJveCBpcyBzdGlsbCB0aGUgcmVzdWx0LCBhbmRcbiAgICAgICAgLy8gbWF0Y2hlcyB3aGF0IHRoZSBzZXJ2ZXIgd3JpdGVzIGFzIGEgXCJkZXRlY3Rpb25cIiBmZWF0dXJlLlxuICAgICAgICBjb25zdCBbeDEsIHkxLCB4MiwgeTJdID0gZGV0LmJveDtcbiAgICAgICAgaWYgKHgyIC0geDEgPD0gMCB8fCB5MiAtIHkxIDw9IDApIGNvbnRpbnVlO1xuICAgICAgICBhZGRlZC5wdXNoKFxuICAgICAgICAgIHRoaXMubWFrZVJlZ2lvbihcbiAgICAgICAgICAgIFt4MSwgeDIsIHgyLCB4MV0ubWFwKCh4KSA9PiBNYXRoLnJvdW5kKG9mZnNldFggKyB4ICogcmF0aW9YKSksXG4gICAgICAgICAgICBbeTEsIHkxLCB5MiwgeTJdLm1hcCgoeSkgPT4gTWF0aC5yb3VuZChvZmZzZXRZICsgeSAqIHJhdGlvWSkpLFxuICAgICAgICAgICAgZGV0LmNsYXNzTmFtZSxcbiAgICAgICAgICApLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAoYWRkZWQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRoaXMuc3RhdHVzJC5uZXh0KCdObyBvYmplY3RzIGRldGVjdGVkLicpO1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH1cblxuICAgICAgLy8gQXBwZW5kLiBBIGRldGVjdGlvbiBydW4gbXVzdCBub3QgZGlzY2FyZCBhbm5vdGF0aW9ucyBkcmF3biBieSBoYW5kIG9yXG4gICAgICAvLyBwcm9kdWNlZCBieSBhbm90aGVyIHRvb2wuXG4gICAgICB2aXouc2V0UmVnaW9ucyhbLi4uKHZpei5nZXRSZWdpb25zKCkgPz8gW10pLCAuLi5hZGRlZF0pO1xuICAgICAgdGhpcy5zdGF0dXMkLm5leHQoYEFkZGVkICR7YWRkZWQubGVuZ3RofSByZWdpb24ocykuYCk7XG4gICAgICByZXR1cm4gYWRkZWQubGVuZ3RoO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhpcy5zdGF0dXMkLm5leHQoZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6ICdZT0xPIGRldGVjdGlvbiBmYWlsZWQuJyk7XG4gICAgICByZXR1cm4gMDtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5idXN5JC5uZXh0KGZhbHNlKTtcbiAgICAgIHRoaXMucHJvZ3Jlc3MkLm5leHQoLTEpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZS1jcm9wIGByZWN0YCBhdCBgMS90YXJnZXRgIG9mIGZ1bGwgcmVzb2x1dGlvbi4gUmV0dXJucyBudWxsIG9uIGFueVxuICAgKiBmYWlsdXJlLCBzbyB0aGUgY2FsbGVyIGZhbGxzIGJhY2sgdG8gdGhlIGRpc3BsYXllZCBwaXhlbHMg4oCUIGEgY29hcnNlciBjcm9wXG4gICAqIGJlYXRzIGEgZmFpbGVkIHJ1bi5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgZmV0Y2hDcm9wQXRTY2FsZShcbiAgICByZWN0OiB7IHg6IG51bWJlcjsgeTogbnVtYmVyOyB3aWR0aDogbnVtYmVyOyBoZWlnaHQ6IG51bWJlciB9LFxuICAgIHRhcmdldDogbnVtYmVyLFxuICApOiBQcm9taXNlPHsgZGF0YTogVWludDhDbGFtcGVkQXJyYXk7IHdpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyIH0gfCBudWxsPiB7XG4gICAgaWYgKCF0aGlzLnRpbGVBY2Nlc3MpIHJldHVybiBudWxsO1xuICAgIGxldCB3ID0gTWF0aC5yb3VuZChyZWN0LndpZHRoIC8gdGFyZ2V0KTtcbiAgICBsZXQgaCA9IE1hdGgucm91bmQocmVjdC5oZWlnaHQgLyB0YXJnZXQpO1xuXG4gICAgLy8gQSBmYWN0b3Igb2YgMSBvdmVyIGEgd2hvbGUtc2xpZGUgUk9JIHdvdWxkIGFzayBmb3IgaHVuZHJlZHMgb2YgbWVnYXBpeGVscy5cbiAgICBjb25zdCBNQVhfUElYRUxTID0gMTZfNzc3XzIxNjsgLy8gNDA5NsKyXG4gICAgY29uc3QgcGl4ZWxzID0gdyAqIGg7XG4gICAgaWYgKHBpeGVscyA+IE1BWF9QSVhFTFMpIHtcbiAgICAgIGNvbnN0IGsgPSBNYXRoLnNxcnQoTUFYX1BJWEVMUyAvIHBpeGVscyk7XG4gICAgICB3ID0gTWF0aC5yb3VuZCh3ICogayk7XG4gICAgICBoID0gTWF0aC5yb3VuZChoICogayk7XG4gICAgfVxuICAgIGlmICh3IDwgNjQgfHwgaCA8IDY0KSByZXR1cm4gbnVsbDtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByb2kgPSB7XG4gICAgICAgIHg6IE1hdGgucm91bmQocmVjdC54KSxcbiAgICAgICAgeTogTWF0aC5yb3VuZChyZWN0LnkpLFxuICAgICAgICB3aWR0aDogTWF0aC5yb3VuZChyZWN0LndpZHRoKSxcbiAgICAgICAgaGVpZ2h0OiBNYXRoLnJvdW5kKHJlY3QuaGVpZ2h0KSxcbiAgICAgIH0gYXMgUmVjdGFuZ2xlO1xuICAgICAgY29uc3Qgc2NyZWVuID0geyB4OiAwLCB5OiAwLCB3aWR0aDogdywgaGVpZ2h0OiBoIH0gYXMgUmVjdGFuZ2xlO1xuICAgICAgY29uc3QgYnl0ZXMgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnRpbGVBY2Nlc3Muem9vbU9uUmVnaW9uKHJvaSwgc2NyZWVuLCAwKSk7XG4gICAgICBpZiAoIWJ5dGVzIHx8IGJ5dGVzLmJ5dGVMZW5ndGggPT09IDApIHJldHVybiBudWxsO1xuXG4gICAgICBjb25zdCBiaXRtYXAgPSBhd2FpdCBjcmVhdGVJbWFnZUJpdG1hcChuZXcgQmxvYihbYnl0ZXNdKSk7XG4gICAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcbiAgICAgIGNhbnZhcy53aWR0aCA9IGJpdG1hcC53aWR0aDtcbiAgICAgIGNhbnZhcy5oZWlnaHQgPSBiaXRtYXAuaGVpZ2h0O1xuICAgICAgY29uc3QgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XG4gICAgICBpZiAoIWN0eCkgcmV0dXJuIG51bGw7XG4gICAgICBjdHguZHJhd0ltYWdlKGJpdG1hcCwgMCwgMCk7XG4gICAgICAvLyBSZWFkIHRoZSBkaW1lbnNpb25zIEJFRk9SRSBjbG9zZSgpOiBjbG9zaW5nIGFuIEltYWdlQml0bWFwIHplcm9lcyBpdHNcbiAgICAgIC8vIHdpZHRoL2hlaWdodCwgc28gcmV0dXJuaW5nIHRoZW0gYWZ0ZXJ3YXJkcyB5aWVsZHMgYSAweDAgaW1hZ2Ugd2l0aCBhXG4gICAgICAvLyBmdWxsIHBpeGVsIGJ1ZmZlciDigJQgaW5mZXJlbmNlIHRoZW4gcnVucyBvbiBub3RoaW5nIGFuZCBmaW5kcyBub3RoaW5nLlxuICAgICAgY29uc3Qgd2lkdGggPSBiaXRtYXAud2lkdGg7XG4gICAgICBjb25zdCBoZWlnaHQgPSBiaXRtYXAuaGVpZ2h0O1xuICAgICAgY29uc3Qgb3V0ID0gY3R4LmdldEltYWdlRGF0YSgwLCAwLCB3aWR0aCwgaGVpZ2h0KTtcbiAgICAgIGJpdG1hcC5jbG9zZT8uKCk7XG4gICAgICByZXR1cm4geyBkYXRhOiBvdXQuZGF0YSwgd2lkdGgsIGhlaWdodCB9O1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtYWtlUmVnaW9uKHhzOiBudW1iZXJbXSwgeXM6IG51bWJlcltdLCBjbGFzc05hbWU6IHN0cmluZyk6IFJlZ2lvbiB7XG4gICAgY29uc3QgcG9seSA9IG5ldyBQb2x5Z29uKCk7XG4gICAgcG9seS5ucG9pbnRzID0geHMubGVuZ3RoO1xuICAgIHBvbHkueHBvaW50cyA9IHhzO1xuICAgIHBvbHkueXBvaW50cyA9IHlzO1xuICAgIHBvbHkuY29vcmRpbmF0ZXMgPSB4cy5tYXAoKHgsIGkpID0+IFt4LCB5c1tpXV0pO1xuICAgIHBvbHkuY2xvc2VkID0gdHJ1ZTtcblxuICAgIGNvbnN0IHJlZ2lvbiA9IG5ldyBSZWdpb24oKTtcbiAgICByZWdpb24uYm91bmRzID0gcG9seTtcbiAgICAvLyBUaGUgY2xhc3MgbmFtZSBkcml2ZXMgcHJlc2V0IGNvbG91ciByZXNvbHV0aW9uOyBsZWF2aW5nIGBjb2xvcmAgdW5zZXQgbGV0c1xuICAgIC8vIGFuIGV4aXN0aW5nIHByZXNldCBmb3IgdGhpcyBjbGFzcyB3aW4uXG4gICAgcmVnaW9uLmxhYmVsID0gY2xhc3NOYW1lO1xuICAgIHJldHVybiByZWdpb247XG4gIH1cbn1cbiJdfQ==
192
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieW9sby1kZXRlY3QtdG9vbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi90b29sYmFyL3NlZ21lbnRhdGlvbi95b2xvLWRldGVjdC10b29sLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXZELE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFhLE1BQU0scUJBQXFCLENBQUM7QUFDakUsT0FBTyxFQUFFLGdCQUFnQixFQUF1QixNQUFNLHdDQUF3QyxDQUFDOztBQUkvRjs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILDhFQUE4RTtBQUM5RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxNQUFNLENBQUM7QUFHekMsTUFBTSxPQUFPLHFCQUFxQjtJQUtoQztJQUNFOzt3REFFb0Q7SUFDTixhQUFvQyxJQUFJO1FBQXhDLGVBQVUsR0FBVixVQUFVLENBQThCO1FBUi9FLFlBQU8sR0FBRyxJQUFJLGVBQWUsQ0FBUyxFQUFFLENBQUMsQ0FBQztRQUMxQyxVQUFLLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDNUMsY0FBUyxHQUFHLElBQUksZUFBZSxDQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFPbEQsQ0FBQztJQUVKOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsWUFBWSxDQUNoQixHQUFnQixFQUNoQixTQUE2QixFQUM3QixPQUErQixFQUFFO1FBRWpDLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxxQkFBcUIsRUFBRSxFQUFFLENBQUM7UUFDN0MsSUFBSSxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsS0FBSyxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsTUFB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LEVBQUUsTUFBTSxFQUFFOzswQkFVN0IsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFJlZ2lvbiwgUG9seWdvbiwgUmVjdGFuZ2xlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3JlZ2lvbic7XG5pbXBvcnQgeyBUSUxFX0FDQ0VTU19QT1JULCB0eXBlIFRpbGVBY2Nlc3NQb3J0IH0gZnJvbSAnLi4vLi4vY29udHJhY3RzL3BvcnRzL3RpbGUtYWNjZXNzLnBvcnQnO1xuaW1wb3J0IHR5cGUgeyBJVmlzdWFsaXplciB9IGZyb20gJy4uLy4uL2NvbnRyYWN0cy92aXN1YWxpemVyLmNvbnRyYWN0JztcbmltcG9ydCB0eXBlIHsgSUluc3RhbmNlU2VnbWVudGVyLCBJbnN0YW5jZVNlZ21lbnRPcHRpb25zIH0gZnJvbSAnLi4vLi4vY29udHJhY3RzL2luc3RhbmNlLXNlZ21lbnRlci5jb250cmFjdCc7XG5cbi8qKlxuICogWU9MTyBvYmplY3QgZGV0ZWN0aW9uIG92ZXIgdGhlIGN1cnJlbnQgdmlldy5cbiAqXG4gKiBUaGUgY29tcGxlbWVudCB0byB7QGxpbmsgQ2VsbFNlZ21lbnRUb29sU2VydmljZX06IGNlbGxwb3NlIGF1dG8tc2VnbWVudHMgY2VsbHNcbiAqIGluc2lkZSBhIGJveCB5b3UgZHJhdywgd2hlcmVhcyBhIGRldGVjdG9yIGlzIG1lYW50IHRvIGZpbmQgb2JqZWN0cyBhY3Jvc3MgYVxuICogZmllbGQuIFNvIHRoaXMgdGFrZXMgbm8gcHJvbXB0IOKAlCBpdCBydW5zIG9uIHdoYXRldmVyIGlzIG9uIHNjcmVlbiBhbmQgdHVybnNcbiAqIGV2ZXJ5IGRldGVjdGlvbiBpbnRvIGEgcmVnaW9uLlxuICpcbiAqIERldGVjdGlvbnMgY29tZSBiYWNrIGluIHRoZSBkaXNwbGF5ZWQgaW1hZ2UncyBwaXhlbHM7IHRoZXkgYXJlIG1hcHBlZCBvbnRvXG4gKiB0aGUgZnVsbC1yZXNvbHV0aW9uIGltYWdlIHRocm91Z2ggdGhlIHZpZXdlcidzIG93biBzb3VyY2UgcmVjdCwgc28gdGhlIHJlZ2lvbnNcbiAqIGxhbmQgd2hlcmUgdGhlIG9iamVjdHMgYWN0dWFsbHkgYXJlIHJhdGhlciB0aGFuIGF0IHZpZXctbG9jYWwgY29vcmRpbmF0ZXMuXG4gKlxuICogRXhwb3NlcyB0aGUgc2FtZSBgc3RhdHVzJGAgLyBgYnVzeSRgIC8gYHByb2dyZXNzJGAgc3VyZmFjZSBhcyB0aGUgY2VsbHBvc2VcbiAqIHRvb2wgc28gdGhlIGhvc3QncyBzaGFyZWQgc2VnbWVudGF0aW9uIHRvYXN0IGRyaXZlcyBpdCB1bmNoYW5nZWQuXG4gKi9cbi8qKiBNYXJrcyByZWdpb25zIHRoaXMgdG9vbCBwcm9kdWNlZCwgc28gYSByZS1ydW4gY2FuIHJlcGxhY2Ugb25seSBpdHMgb3duLiAqL1xuZXhwb3J0IGNvbnN0IFlPTE9fUkVHSU9OX1NPVVJDRSA9ICd5b2xvJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBZb2xvRGV0ZWN0VG9vbFNlcnZpY2Uge1xuICByZWFkb25seSBzdGF0dXMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcbiAgcmVhZG9ubHkgYnVzeSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgcHJvZ3Jlc3MkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KC0xKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICAvKiogU2VydmVyLXNpZGUgY3JvcCwgc28gZGV0ZWN0aW9uIGNhbiBydW4gYXQgdGhlIG1vZGVsJ3Mgc2NhbGUgcmF0aGVyIHRoYW5cbiAgICAgKiAgdGhlIHZpZXdlcidzLiBPcHRpb25hbDogd2l0aG91dCBpdCB0aGUgdG9vbCBmYWxscyBiYWNrIHRvIHRoZSBkaXNwbGF5ZWRcbiAgICAgKiAgcGl4ZWxzLCB3aGljaCBpcyBjb3JyZWN0IGJ1dCBzY2FsZS1kZXBlbmRlbnQuICovXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChUSUxFX0FDQ0VTU19QT1JUKSBwcml2YXRlIHRpbGVBY2Nlc3M6IFRpbGVBY2Nlc3NQb3J0IHwgbnVsbCA9IG51bGwsXG4gICkge31cblxuICAvKipcbiAgICogRGV0ZWN0IGluIHRoZSBjdXJyZW50IHZpZXcgYW5kIGFwcGVuZCB0aGUgcmVzdWx0cyBhcyByZWdpb25zLlxuICAgKlxuICAgKiBAcmV0dXJucyB0aGUgbnVtYmVyIG9mIHJlZ2lvbnMgYWRkZWQuXG4gICAqL1xuICBhc3luYyBkZXRlY3RJblZpZXcoXG4gICAgdml6OiBJVmlzdWFsaXplcixcbiAgICBzZWdtZW50ZXI6IElJbnN0YW5jZVNlZ21lbnRlcixcbiAgICBvcHRzOiBJbnN0YW5jZVNlZ21lbnRPcHRpb25zID0ge30sXG4gICk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgY29uc3QgcGl4ZWxzID0gdml6LmdldERpc3BsYXllZFBpeGVsRGF0YT8uKCk7XG4gICAgaWYgKCFwaXhlbHMgfHwgcGl4ZWxzLndpZHRoID09PSAwIHx8IHBpeGVscy5oZWlnaHQgPT09IDApIHtcbiAgICAgIHRoaXMuc3RhdHVzJC5uZXh0KCdObyBpbWFnZSBvbiBzY3JlZW4gdG8gZGV0ZWN0IGluLicpO1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgdGhpcy5idXN5JC5uZXh0KHRydWUpO1xuICAgIHRoaXMucHJvZ3Jlc3MkLm5leHQoLTEpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZWN0ID0gdml6LmdldERpc3BsYXllZFNvdXJjZVJlY3Q/LigpID8/IG51bGw7XG4gICAgICBjb25zdCB0YXJnZXQgPSBOdW1iZXIob3B0cy5kb3duc2FtcGxpbmdGYWN0b3IgPz8gMCkgfHwgMDtcbiAgICAgIGNvbnN0IHZpZXdGYWN0b3IgPSByZWN0ICYmIHBpeGVscy53aWR0aCA+IDAgPyByZWN0LndpZHRoIC8gcGl4ZWxzLndpZHRoIDogMTtcblxuICAgICAgLy8gUmUtY3JvcCBhdCB0aGUgbW9kZWwncyBzY2FsZSB3aGVuIHRoZSB2aWV3IGlzIGNvYXJzZXIgdGhhbiBpdCB3YW50cy5cbiAgICAgIC8vIFRoZSBpbWFnZSBpcyB0aWxlLWJhY2tlZCwgc28gdGhhdCBkZXRhaWwgZXhpc3RzIHNlcnZlci1zaWRlIGV2ZW4gdGhvdWdoXG4gICAgICAvLyB0aGUgZGlzcGxheWVkIHBpeGVscyBoYXZlIGRpc2NhcmRlZCBpdC5cbiAgICAgIGxldCBzb3VyY2UgPSB7IGRhdGE6IHBpeGVscy5kYXRhLCB3aWR0aDogcGl4ZWxzLndpZHRoLCBoZWlnaHQ6IHBpeGVscy5oZWlnaHQgfTtcbiAgICAgIGlmIChyZWN0ICYmIHRhcmdldCA+IDAgJiYgdGFyZ2V0IDwgdmlld0ZhY3RvciAqIDAuOTgpIHtcbiAgICAgICAgdGhpcy5zdGF0dXMkLm5leHQoJ0ZldGNoaW5nIGltYWdlIGF0IG1vZGVsIHJlc29sdXRpb27igKYnKTtcbiAgICAgICAgY29uc3QgaGkgPSBhd2FpdCB0aGlzLmZldGNoQ3JvcEF0U2NhbGUocmVjdCwgdGFyZ2V0KTtcbiAgICAgICAgaWYgKGhpKSBzb3VyY2UgPSBoaTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgc2VnbWVudGVyLnNlZ21lbnRJbnN0YW5jZXMoc291cmNlLCBvcHRzLCB7XG4gICAgICAgIG9uUHJvZ3Jlc3M6IChmKSA9PiB0aGlzLnByb2dyZXNzJC5uZXh0KGYpLFxuICAgICAgICBvblN0YXR1czogKHMpID0+IHRoaXMuc3RhdHVzJC5uZXh0KHMpLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIFZpZXcgcGl4ZWxzIC0+IGZ1bGwtcmVzb2x1dGlvbiBpbWFnZSBwaXhlbHMuIFdpdGhvdXQgdGhpcyBldmVyeSByZWdpb25cbiAgICAgIC8vIHdvdWxkIHNpdCBhdCB2aWV3LWxvY2FsIGNvb3JkaW5hdGVzLCBpLmUuIHRoZSB3cm9uZyBwbGFjZSBvbiB0aGUgc2xpZGVcbiAgICAgIC8vIGZvciBhbnkgem9vbWVkIG9yIHBhbm5lZCB2aWV3LlxuICAgICAgY29uc3Qgb2Zmc2V0WCA9IHJlY3QgPyByZWN0LnggOiAwO1xuICAgICAgY29uc3Qgb2Zmc2V0WSA9IHJlY3QgPyByZWN0LnkgOiAwO1xuICAgICAgLy8gQWdhaW5zdCB0aGUgcGl4ZWxzIGFjdHVhbGx5IGluZmVycmVkIG9uLCB3aGljaCBtYXkgYmUgdGhlIHJlLWNyb3AuXG4gICAgICBjb25zdCByYXRpb1ggPSByZWN0ICYmIHNvdXJjZS53aWR0aCA+IDAgPyByZWN0LndpZHRoIC8gc291cmNlLndpZHRoIDogMTtcbiAgICAgIGNvbnN0IHJhdGlvWSA9IHJlY3QgJiYgc291cmNlLmhlaWdodCA+IDAgPyByZWN0LmhlaWdodCAvIHNvdXJjZS5oZWlnaHQgOiAxO1xuXG4gICAgICBjb25zdCBhZGRlZDogUmVnaW9uW10gPSBbXTtcbiAgICAgIGZvciAoY29uc3QgZGV0IG9mIHJlc3VsdC5kZXRlY3Rpb25zKSB7XG4gICAgICAgIGlmIChkZXQucG9seWdvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGZvciAoY29uc3QgcG9seSBvZiBkZXQucG9seWdvbnMpIHtcbiAgICAgICAgICAgIGlmIChwb2x5LmV4dGVyaW9yLmxlbmd0aCA8IDMpIGNvbnRpbnVlO1xuICAgICAgICAgICAgYWRkZWQucHVzaChcbiAgICAgICAgICAgICAgdGhpcy5tYWtlUmVnaW9uKFxuICAgICAgICAgICAgICAgIHBvbHkuZXh0ZXJpb3IubWFwKChbeF0pID0+IE1hdGgucm91bmQob2Zmc2V0WCArIHggKiByYXRpb1gpKSxcbiAgICAgICAgICAgICAgICBwb2x5LmV4dGVyaW9yLm1hcCgoWywgeV0pID0+IE1hdGgucm91bmQob2Zmc2V0WSArIHkgKiByYXRpb1kpKSxcbiAgICAgICAgICAgICAgICBkZXQuY2xhc3NOYW1lLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgLy8gRGV0ZWN0aW9uIG1vZGUgeWllbGRzIG5vIG91dGxpbmU7IHRoZSBib3ggaXMgc3RpbGwgdGhlIHJlc3VsdCwgYW5kXG4gICAgICAgIC8vIG1hdGNoZXMgd2hhdCB0aGUgc2VydmVyIHdyaXRlcyBhcyBhIFwiZGV0ZWN0aW9uXCIgZmVhdHVyZS5cbiAgICAgICAgY29uc3QgW3gxLCB5MSwgeDIsIHkyXSA9IGRldC5ib3g7XG4gICAgICAgIGlmICh4MiAtIHgxIDw9IDAgfHwgeTIgLSB5MSA8PSAwKSBjb250aW51ZTtcbiAgICAgICAgYWRkZWQucHVzaChcbiAgICAgICAgICB0aGlzLm1ha2VSZWdpb24oXG4gICAgICAgICAgICBbeDEsIHgyLCB4MiwgeDFdLm1hcCgoeCkgPT4gTWF0aC5yb3VuZChvZmZzZXRYICsgeCAqIHJhdGlvWCkpLFxuICAgICAgICAgICAgW3kxLCB5MSwgeTIsIHkyXS5tYXAoKHkpID0+IE1hdGgucm91bmQob2Zmc2V0WSArIHkgKiByYXRpb1kpKSxcbiAgICAgICAgICAgIGRldC5jbGFzc05hbWUsXG4gICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFkZGVkLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aGlzLnN0YXR1cyQubmV4dCgnTm8gb2JqZWN0cyBkZXRlY3RlZC4nKTtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9XG5cbiAgICAgIC8vIFJlcGxhY2UgdGhpcyB0b29sJ3Mgb3duIHByZXZpb3VzIG91dHB1dCwga2VlcCBldmVyeXRoaW5nIGVsc2UuIEFwcGVuZGluZ1xuICAgICAgLy8gdW5jb25kaXRpb25hbGx5IG1hZGUgZXZlcnkgdHVuaW5nIHJ1biBzdGFjayBvbnRvIHRoZSBsYXN0LCBzbyB0aGVcbiAgICAgIC8vIHZpZXdlciBhY2N1bXVsYXRlZCBvdmVybGFwcGluZyByZXN1bHRzIGZyb20gcGFyYW1ldGVycyBubyBsb25nZXIgaW5cbiAgICAgIC8vIGVmZmVjdC4gSGFuZC1kcmF3biByZWdpb25zIGFuZCBvdGhlciB0b29scycgb3V0cHV0IGNhcnJ5IG5vIGBzb3VyY2VgXG4gICAgICAvLyBhbmQgYXJlIHVudG91Y2hlZC5cbiAgICAgIGNvbnN0IGtlcHQgPSAodml6LmdldFJlZ2lvbnMoKSA/PyBbXSkuZmlsdGVyKChyKSA9PiByLnNvdXJjZSAhPT0gWU9MT19SRUdJT05fU09VUkNFKTtcbiAgICAgIHZpei5zZXRSZWdpb25zKFsuLi5rZXB0LCAuLi5hZGRlZF0pO1xuICAgICAgdGhpcy5zdGF0dXMkLm5leHQoYEFkZGVkICR7YWRkZWQubGVuZ3RofSByZWdpb24ocykuYCk7XG4gICAgICByZXR1cm4gYWRkZWQubGVuZ3RoO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhpcy5zdGF0dXMkLm5leHQoZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6ICdZT0xPIGRldGVjdGlvbiBmYWlsZWQuJyk7XG4gICAgICByZXR1cm4gMDtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5idXN5JC5uZXh0KGZhbHNlKTtcbiAgICAgIHRoaXMucHJvZ3Jlc3MkLm5leHQoLTEpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZS1jcm9wIGByZWN0YCBhdCBgMS90YXJnZXRgIG9mIGZ1bGwgcmVzb2x1dGlvbi4gUmV0dXJucyBudWxsIG9uIGFueVxuICAgKiBmYWlsdXJlLCBzbyB0aGUgY2FsbGVyIGZhbGxzIGJhY2sgdG8gdGhlIGRpc3BsYXllZCBwaXhlbHMg4oCUIGEgY29hcnNlciBjcm9wXG4gICAqIGJlYXRzIGEgZmFpbGVkIHJ1bi5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgZmV0Y2hDcm9wQXRTY2FsZShcbiAgICByZWN0OiB7IHg6IG51bWJlcjsgeTogbnVtYmVyOyB3aWR0aDogbnVtYmVyOyBoZWlnaHQ6IG51bWJlciB9LFxuICAgIHRhcmdldDogbnVtYmVyLFxuICApOiBQcm9taXNlPHsgZGF0YTogVWludDhDbGFtcGVkQXJyYXk7IHdpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyIH0gfCBudWxsPiB7XG4gICAgaWYgKCF0aGlzLnRpbGVBY2Nlc3MpIHJldHVybiBudWxsO1xuICAgIGxldCB3ID0gTWF0aC5yb3VuZChyZWN0LndpZHRoIC8gdGFyZ2V0KTtcbiAgICBsZXQgaCA9IE1hdGgucm91bmQocmVjdC5oZWlnaHQgLyB0YXJnZXQpO1xuXG4gICAgLy8gQSBmYWN0b3Igb2YgMSBvdmVyIGEgd2hvbGUtc2xpZGUgUk9JIHdvdWxkIGFzayBmb3IgaHVuZHJlZHMgb2YgbWVnYXBpeGVscy5cbiAgICBjb25zdCBNQVhfUElYRUxTID0gMTZfNzc3XzIxNjsgLy8gNDA5NsKyXG4gICAgY29uc3QgcGl4ZWxzID0gdyAqIGg7XG4gICAgaWYgKHBpeGVscyA+IE1BWF9QSVhFTFMpIHtcbiAgICAgIGNvbnN0IGsgPSBNYXRoLnNxcnQoTUFYX1BJWEVMUyAvIHBpeGVscyk7XG4gICAgICB3ID0gTWF0aC5yb3VuZCh3ICogayk7XG4gICAgICBoID0gTWF0aC5yb3VuZChoICogayk7XG4gICAgfVxuICAgIGlmICh3IDwgNjQgfHwgaCA8IDY0KSByZXR1cm4gbnVsbDtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByb2kgPSB7XG4gICAgICAgIHg6IE1hdGgucm91bmQocmVjdC54KSxcbiAgICAgICAgeTogTWF0aC5yb3VuZChyZWN0LnkpLFxuICAgICAgICB3aWR0aDogTWF0aC5yb3VuZChyZWN0LndpZHRoKSxcbiAgICAgICAgaGVpZ2h0OiBNYXRoLnJvdW5kKHJlY3QuaGVpZ2h0KSxcbiAgICAgIH0gYXMgUmVjdGFuZ2xlO1xuICAgICAgY29uc3Qgc2NyZWVuID0geyB4OiAwLCB5OiAwLCB3aWR0aDogdywgaGVpZ2h0OiBoIH0gYXMgUmVjdGFuZ2xlO1xuICAgICAgY29uc3QgYnl0ZXMgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnRpbGVBY2Nlc3Muem9vbU9uUmVnaW9uKHJvaSwgc2NyZWVuLCAwKSk7XG4gICAgICBpZiAoIWJ5dGVzIHx8IGJ5dGVzLmJ5dGVMZW5ndGggPT09IDApIHJldHVybiBudWxsO1xuXG4gICAgICBjb25zdCBiaXRtYXAgPSBhd2FpdCBjcmVhdGVJbWFnZUJpdG1hcChuZXcgQmxvYihbYnl0ZXNdKSk7XG4gICAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcbiAgICAgIGNhbnZhcy53aWR0aCA9IGJpdG1hcC53aWR0aDtcbiAgICAgIGNhbnZhcy5oZWlnaHQgPSBiaXRtYXAuaGVpZ2h0O1xuICAgICAgY29uc3QgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XG4gICAgICBpZiAoIWN0eCkgcmV0dXJuIG51bGw7XG4gICAgICBjdHguZHJhd0ltYWdlKGJpdG1hcCwgMCwgMCk7XG4gICAgICAvLyBSZWFkIHRoZSBkaW1lbnNpb25zIEJFRk9SRSBjbG9zZSgpOiBjbG9zaW5nIGFuIEltYWdlQml0bWFwIHplcm9lcyBpdHNcbiAgICAgIC8vIHdpZHRoL2hlaWdodCwgc28gcmV0dXJuaW5nIHRoZW0gYWZ0ZXJ3YXJkcyB5aWVsZHMgYSAweDAgaW1hZ2Ugd2l0aCBhXG4gICAgICAvLyBmdWxsIHBpeGVsIGJ1ZmZlciDigJQgaW5mZXJlbmNlIHRoZW4gcnVucyBvbiBub3RoaW5nIGFuZCBmaW5kcyBub3RoaW5nLlxuICAgICAgY29uc3Qgd2lkdGggPSBiaXRtYXAud2lkdGg7XG4gICAgICBjb25zdCBoZWlnaHQgPSBiaXRtYXAuaGVpZ2h0O1xuICAgICAgY29uc3Qgb3V0ID0gY3R4LmdldEltYWdlRGF0YSgwLCAwLCB3aWR0aCwgaGVpZ2h0KTtcbiAgICAgIGJpdG1hcC5jbG9zZT8uKCk7XG4gICAgICByZXR1cm4geyBkYXRhOiBvdXQuZGF0YSwgd2lkdGgsIGhlaWdodCB9O1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtYWtlUmVnaW9uKHhzOiBudW1iZXJbXSwgeXM6IG51bWJlcltdLCBjbGFzc05hbWU6IHN0cmluZyk6IFJlZ2lvbiB7XG4gICAgY29uc3QgcG9seSA9IG5ldyBQb2x5Z29uKCk7XG4gICAgcG9seS5ucG9pbnRzID0geHMubGVuZ3RoO1xuICAgIHBvbHkueHBvaW50cyA9IHhzO1xuICAgIHBvbHkueXBvaW50cyA9IHlzO1xuICAgIHBvbHkuY29vcmRpbmF0ZXMgPSB4cy5tYXAoKHgsIGkpID0+IFt4LCB5c1tpXV0pO1xuICAgIHBvbHkuY2xvc2VkID0gdHJ1ZTtcblxuICAgIGNvbnN0IHJlZ2lvbiA9IG5ldyBSZWdpb24oKTtcbiAgICByZWdpb24uYm91bmRzID0gcG9seTtcbiAgICByZWdpb24uc291cmNlID0gWU9MT19SRUdJT05fU09VUkNFO1xuICAgIC8vIFRoZSBjbGFzcyBuYW1lIGRyaXZlcyBwcmVzZXQgY29sb3VyIHJlc29sdXRpb247IGxlYXZpbmcgYGNvbG9yYCB1bnNldCBsZXRzXG4gICAgLy8gYW4gZXhpc3RpbmcgcHJlc2V0IGZvciB0aGlzIGNsYXNzIHdpbi5cbiAgICByZWdpb24ubGFiZWwgPSBjbGFzc05hbWU7XG4gICAgcmV0dXJuIHJlZ2lvbjtcbiAgfVxufVxuIl19
@@ -822,7 +822,7 @@ class Region {
822
822
  shape.editable = true;
823
823
  shape.line = {
824
824
  color: this.color ? this.color : this.shapeColor,
825
- width: 3
825
+ width: 3,
826
826
  };
827
827
  shape.fileName = this.filename;
828
828
  if (this.kind === 'profile')
@@ -832,7 +832,7 @@ class Region {
832
832
  text: `${this.label}`,
833
833
  texttemplate: `${this.label}`,
834
834
  font: { color: this.color ? this.color : this.shapeColor },
835
- textposition: 'top left'
835
+ textposition: 'top left',
836
836
  };
837
837
  }
838
838
  else {
@@ -934,6 +934,8 @@ class MultiPolygon {
934
934
  * Exposes the same `status$` / `busy$` / `progress$` surface as the cellpose
935
935
  * tool so the host's shared segmentation toast drives it unchanged.
936
936
  */
937
+ /** Marks regions this tool produced, so a re-run can replace only its own. */
938
+ const YOLO_REGION_SOURCE = 'yolo';
937
939
  class YoloDetectToolService {
938
940
  constructor(
939
941
  /** Server-side crop, so detection can run at the model's scale rather than
@@ -1005,9 +1007,13 @@ class YoloDetectToolService {
1005
1007
  this.status$.next('No objects detected.');
1006
1008
  return 0;
1007
1009
  }
1008
- // Append. A detection run must not discard annotations drawn by hand or
1009
- // produced by another tool.
1010
- viz.setRegions([...(viz.getRegions() ?? []), ...added]);
1010
+ // Replace this tool's own previous output, keep everything else. Appending
1011
+ // unconditionally made every tuning run stack onto the last, so the
1012
+ // viewer accumulated overlapping results from parameters no longer in
1013
+ // effect. Hand-drawn regions and other tools' output carry no `source`
1014
+ // and are untouched.
1015
+ const kept = (viz.getRegions() ?? []).filter((r) => r.source !== YOLO_REGION_SOURCE);
1016
+ viz.setRegions([...kept, ...added]);
1011
1017
  this.status$.next(`Added ${added.length} region(s).`);
1012
1018
  return added.length;
1013
1019
  }
@@ -1081,6 +1087,7 @@ class YoloDetectToolService {
1081
1087
  poly.closed = true;
1082
1088
  const region = new Region();
1083
1089
  region.bounds = poly;
1090
+ region.source = YOLO_REGION_SOURCE;
1084
1091
  // The class name drives preset colour resolution; leaving `color` unset lets
1085
1092
  // an existing preset for this class win.
1086
1093
  region.label = className;
@@ -22354,5 +22361,5 @@ function provideVisualization() {
22354
22361
  * Generated bundle index. Do not edit.
22355
22362
  */
22356
22363
 
22357
- export { ALL_TOOLBAR_TOOLS, CELL_SEGMENTER, CHANNEL_HISTOGRAM_API, CellposeSegmenterService, ChannelHistogramComponent, DEFAULT_FALLBACK_PALETTE, DEFAULT_SAM_MODEL_ID, DEFAULT_YOLO_MODEL_ID, HexColorPickerComponent, IMAGE_STATE_PORT, INSTANCE_SEGMENTER, ImageConverterService, LUT_COLORS, MultiPolygon, NAPARI_DECIMATE_OPTIONS, NAPARI_DEFAULT_DECIMATE, PLOT_TYPE_DESCRIPTORS, PREFERENCES_PORT, PlotType, Polygon, ProcessingImage, REGION_EDITOR_API, REGION_IO_PORT, Rectangle, Region, RegionEditorComponent, RoutingVisualizerService, SAM_MODELS, ShapeSelection, TILE_ACCESS_PORT, VISUALIZER, VIZ_CONFIG, ViewerFeature, VisualizationModule, VisualizerComponent, YOLO_MODELS, YoloDetectToolService, YoloSegmenterService, capabilitiesOf, cropImage, defaultPresetSet, getDefaultSamModelId, getDefaultYoloModelId, getOrtWasmBase, getPlotTypeDescriptor, getSamModel, getYoloModel, isEmptyPresetSet, isNapari3d, isNapariIsosurface, isNapariScatter, isNapariScatter3d, isNapariSurface, isNapariVolume, isSamModelReady, isThreeDimensional, isYoloModelReady, provideVisualization, setDefaultSamModel, setDefaultYoloModel, setOrtWasmBase, setSamModelUrls, setYoloModelUrls };
22364
+ export { ALL_TOOLBAR_TOOLS, CELL_SEGMENTER, CHANNEL_HISTOGRAM_API, CellposeSegmenterService, ChannelHistogramComponent, DEFAULT_FALLBACK_PALETTE, DEFAULT_SAM_MODEL_ID, DEFAULT_YOLO_MODEL_ID, HexColorPickerComponent, IMAGE_STATE_PORT, INSTANCE_SEGMENTER, ImageConverterService, LUT_COLORS, MultiPolygon, NAPARI_DECIMATE_OPTIONS, NAPARI_DEFAULT_DECIMATE, PLOT_TYPE_DESCRIPTORS, PREFERENCES_PORT, PlotType, Polygon, ProcessingImage, REGION_EDITOR_API, REGION_IO_PORT, Rectangle, Region, RegionEditorComponent, RoutingVisualizerService, SAM_MODELS, ShapeSelection, TILE_ACCESS_PORT, VISUALIZER, VIZ_CONFIG, ViewerFeature, VisualizationModule, VisualizerComponent, YOLO_MODELS, YOLO_REGION_SOURCE, YoloDetectToolService, YoloSegmenterService, capabilitiesOf, cropImage, defaultPresetSet, getDefaultSamModelId, getDefaultYoloModelId, getOrtWasmBase, getPlotTypeDescriptor, getSamModel, getYoloModel, isEmptyPresetSet, isNapari3d, isNapariIsosurface, isNapariScatter, isNapariScatter3d, isNapariSurface, isNapariVolume, isSamModelReady, isThreeDimensional, isYoloModelReady, provideVisualization, setDefaultSamModel, setDefaultYoloModel, setOrtWasmBase, setSamModelUrls, setYoloModelUrls };
22358
22365
  //# sourceMappingURL=jax-data-science-sci-image-visualizer.mjs.map