@ohif/app 3.8.0-beta.25 → 3.8.0-beta.27
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/dist/{170.bundle.ba2b6bb9a1910e348f9c.js → 170.bundle.80ad57e16afc8855b0fc.js} +9 -9
- package/dist/{181.bundle.8bbcaf31270dd56cad1f.js → 181.bundle.87f1df4f401b8023cfd1.js} +4 -4
- package/dist/{185.bundle.4a026a3eda76e8d34517.js → 185.bundle.2d7c72ca2f461d711df9.js} +2 -2
- package/dist/{199.bundle.d8b92b7ec7c7dd91d160.js → 199.bundle.30893a2f3da90d37b0d9.js} +2 -2
- package/dist/{202.bundle.07442d396db3161ee7f3.js → 202.bundle.a607e9ab460999d8c0c8.js} +4 -3
- package/dist/{250.bundle.de8df38690c1305b2f8a.js → 250.bundle.5634282a01bd6e15b70d.js} +2 -2
- package/dist/{544.bundle.b2b65dd140e9854cb129.js → 26.bundle.c92012465cee00a2a708.js} +8919 -7195
- package/dist/{420.bundle.d2a09d89c3e8177bc0d9.js → 420.bundle.208f94f15dcc2be09dc0.js} +7 -7
- package/dist/{466.bundle.fd2557fe99960d7ee96b.js → 466.bundle.be8d38922b545c9657dd.js} +4 -4
- package/dist/{483.bundle.067bce093473b53dd0f7.js → 483.bundle.4866c3396b19964a0010.js} +4 -4
- package/dist/{613.bundle.40f071699be75c012842.js → 613.bundle.b3839caf45bff66f2667.js} +5 -2
- package/dist/{738.bundle.5b64bfcded95e22063af.js → 738.bundle.a9dd630892da1e5dcabf.js} +7 -3
- package/dist/{822.bundle.1f4c9e059e87914fc12a.js → 822.bundle.775a62e1f79c403f3aed.js} +2 -2
- package/dist/{47.bundle.3217b1b873983a6aaa43.js → 95.bundle.db9d2d504abc5dd4fdfa.js} +8 -142
- package/dist/{965.bundle.9b78983e1a5791031169.js → 965.bundle.fc770e33fa48b72621cc.js} +9 -0
- package/dist/{app.bundle.2406c53a19408fc29486.js → app.bundle.25093dca29b89b580c6b.js} +471 -85
- package/dist/cornerstoneDICOMImageLoader.min.js +1 -1
- package/dist/cornerstoneDICOMImageLoader.min.js.map +1 -1
- package/dist/index.html +1 -1
- package/dist/serve.json +12 -0
- package/dist/sw.js +1 -1
- package/package.json +19 -19
- /package/dist/{12.bundle.37529fdf74d10cccda3d.js → 12.bundle.56b9d54b9c0af71af1d7.js} +0 -0
- /package/dist/{19.bundle.706b1020e6d744b4a772.js → 19.bundle.3dd19edbc75a5aebd1de.js} +0 -0
- /package/dist/{281.bundle.bfa24595c2dcbcfc227a.js → 281.bundle.fc5d5a58827c8ba054b0.js} +0 -0
- /package/dist/{359.bundle.eabc596f016eb73fa622.js → 359.bundle.644102e1339a5769fe43.js} +0 -0
- /package/dist/{410.bundle.1736835db3336e98c495.js → 410.bundle.089c191e6500a09de5f5.js} +0 -0
- /package/dist/{506.bundle.ca89ebd941bebab77590.js → 506.bundle.9fbbe1b884e79e06a3f6.js} +0 -0
- /package/dist/{687.bundle.2ac3cd797e3d5be5f053.js → 687.bundle.bc44675be7433cd8670b.js} +0 -0
- /package/dist/{814.bundle.1328537fe47b9a202135.js → 814.bundle.b5267cf0fefd476ea55d.js} +0 -0
|
@@ -989,8 +989,8 @@ function WorkList(_ref) {
|
|
|
989
989
|
};
|
|
990
990
|
});
|
|
991
991
|
const hasStudies = numOfStudies > 0;
|
|
992
|
-
const versionNumber = "3.8.0-beta.
|
|
993
|
-
const commitHash = "
|
|
992
|
+
const versionNumber = "3.8.0-beta.27";
|
|
993
|
+
const commitHash = "6651008fbb35dabd5991c7f61128e6ef324012df";
|
|
994
994
|
const menuOptions = [{
|
|
995
995
|
title: t('Header:About'),
|
|
996
996
|
icon: 'info',
|
|
@@ -1947,19 +1947,19 @@ async function loadModule(module) {
|
|
|
1947
1947
|
return imported.default;
|
|
1948
1948
|
}
|
|
1949
1949
|
if (module === "@ohif/extension-cornerstone") {
|
|
1950
|
-
const imported = await Promise.all(/* import() */[__webpack_require__.e(
|
|
1950
|
+
const imported = await Promise.all(/* import() */[__webpack_require__.e(26), __webpack_require__.e(661), __webpack_require__.e(95), __webpack_require__.e(420)]).then(__webpack_require__.bind(__webpack_require__, 41420));
|
|
1951
1951
|
return imported.default;
|
|
1952
1952
|
}
|
|
1953
1953
|
if (module === "@ohif/extension-measurement-tracking") {
|
|
1954
|
-
const imported = await Promise.all(/* import() */[__webpack_require__.e(
|
|
1954
|
+
const imported = await Promise.all(/* import() */[__webpack_require__.e(26), __webpack_require__.e(661), __webpack_require__.e(202), __webpack_require__.e(417), __webpack_require__.e(530), __webpack_require__.e(738), __webpack_require__.e(170), __webpack_require__.e(19)]).then(__webpack_require__.bind(__webpack_require__, 28030));
|
|
1955
1955
|
return imported.default;
|
|
1956
1956
|
}
|
|
1957
1957
|
if (module === "@ohif/extension-cornerstone-dicom-sr") {
|
|
1958
|
-
const imported = await Promise.all(/* import() */[__webpack_require__.e(
|
|
1958
|
+
const imported = await Promise.all(/* import() */[__webpack_require__.e(26), __webpack_require__.e(202), __webpack_require__.e(170)]).then(__webpack_require__.bind(__webpack_require__, 42170));
|
|
1959
1959
|
return imported.default;
|
|
1960
1960
|
}
|
|
1961
1961
|
if (module === "@ohif/extension-cornerstone-dicom-seg") {
|
|
1962
|
-
const imported = await Promise.all(/* import() */[__webpack_require__.e(
|
|
1962
|
+
const imported = await Promise.all(/* import() */[__webpack_require__.e(26), __webpack_require__.e(661), __webpack_require__.e(202), __webpack_require__.e(417), __webpack_require__.e(485), __webpack_require__.e(738), __webpack_require__.e(466)]).then(__webpack_require__.bind(__webpack_require__, 9943));
|
|
1963
1963
|
return imported.default;
|
|
1964
1964
|
}
|
|
1965
1965
|
if (module === "@ohif/extension-dicom-microscopy") {
|
|
@@ -1975,7 +1975,7 @@ async function loadModule(module) {
|
|
|
1975
1975
|
return imported.default;
|
|
1976
1976
|
}
|
|
1977
1977
|
if (module === "@ohif/extension-tmtv") {
|
|
1978
|
-
const imported = await Promise.all(/* import() */[__webpack_require__.e(
|
|
1978
|
+
const imported = await Promise.all(/* import() */[__webpack_require__.e(26), __webpack_require__.e(202), __webpack_require__.e(483)]).then(__webpack_require__.bind(__webpack_require__, 4483));
|
|
1979
1979
|
return imported.default;
|
|
1980
1980
|
}
|
|
1981
1981
|
if (module === "@ohif/extension-test") {
|
|
@@ -3020,7 +3020,7 @@ function OpenIdConnectRoutes(_ref) {
|
|
|
3020
3020
|
pathname,
|
|
3021
3021
|
search
|
|
3022
3022
|
} = location;
|
|
3023
|
-
const redirect_uri = new URL(userManager.settings._redirect_uri).pathname
|
|
3023
|
+
const redirect_uri = new URL(userManager.settings._redirect_uri).pathname.replace(routerBasename !== '/' ? routerBasename : '', '');
|
|
3024
3024
|
const silent_refresh_uri = new URL(userManager.settings._silent_redirect_uri).pathname; //.replace(routerBasename,'')
|
|
3025
3025
|
const post_logout_redirect_uri = new URL(userManager.settings._post_logout_redirect_uri).pathname; //.replace(routerBasename,'');
|
|
3026
3026
|
|
|
@@ -3032,9 +3032,7 @@ function OpenIdConnectRoutes(_ref) {
|
|
|
3032
3032
|
search
|
|
3033
3033
|
}));
|
|
3034
3034
|
}
|
|
3035
|
-
return /*#__PURE__*/react.createElement(react_router_dist/* Routes */.Z5, {
|
|
3036
|
-
basename: routerBasename
|
|
3037
|
-
}, /*#__PURE__*/react.createElement(react_router_dist/* Route */.AW, {
|
|
3035
|
+
return /*#__PURE__*/react.createElement(react_router_dist/* Routes */.Z5, null, /*#__PURE__*/react.createElement(react_router_dist/* Route */.AW, {
|
|
3038
3036
|
path: silent_refresh_uri,
|
|
3039
3037
|
onEnter: window.location.reload
|
|
3040
3038
|
}), /*#__PURE__*/react.createElement(react_router_dist/* Route */.AW, {
|
|
@@ -6476,7 +6474,7 @@ const detectionOptions = {
|
|
|
6476
6474
|
}
|
|
6477
6475
|
});
|
|
6478
6476
|
;// CONCATENATED MODULE: ../../i18n/package.json
|
|
6479
|
-
const package_namespaceObject = JSON.parse('{"i8":"3.8.0-beta.
|
|
6477
|
+
const package_namespaceObject = JSON.parse('{"i8":"3.8.0-beta.26"}');
|
|
6480
6478
|
;// CONCATENATED MODULE: ../../i18n/src/utils.js
|
|
6481
6479
|
const languagesMap = {
|
|
6482
6480
|
ar: 'Arabic',
|
|
@@ -6665,7 +6663,7 @@ const en_US_DatePicker_namespaceObject = JSON.parse('{"Clear dates":"Clear dates
|
|
|
6665
6663
|
;// CONCATENATED MODULE: ../../i18n/src/locales/en-US/Header.json
|
|
6666
6664
|
const en_US_Header_namespaceObject = JSON.parse('{"About":"About","Back to Viewer":"Back to Viewer","INVESTIGATIONAL USE ONLY":"INVESTIGATIONAL USE ONLY","Options":"Options","Preferences":"Preferences","Study list":"Study list","Logout":"Logout"}');
|
|
6667
6665
|
;// CONCATENATED MODULE: ../../i18n/src/locales/en-US/MeasurementTable.json
|
|
6668
|
-
const en_US_MeasurementTable_namespaceObject = JSON.parse('{"Criteria nonconformities":"Criteria nonconformities","Delete":"Delete","Description":"Description","MAX":"MAX","NonTargets":"NonTargets","Relabel":"Relabel","Targets":"Targets"}');
|
|
6666
|
+
const en_US_MeasurementTable_namespaceObject = JSON.parse('{"Criteria nonconformities":"Criteria nonconformities","Delete":"Delete","Description":"Description","MAX":"MAX","NonTargets":"NonTargets","Relabel":"Relabel","Targets":"Targets","Measurements":"Measurements"}');
|
|
6669
6667
|
;// CONCATENATED MODULE: ../../i18n/src/locales/en-US/SidePanel.json
|
|
6670
6668
|
const SidePanel_namespaceObject = JSON.parse('{"Measurements":"Measurements","Studies":"Studies"}');
|
|
6671
6669
|
;// CONCATENATED MODULE: ../../i18n/src/locales/en-US/StudyBrowser.json
|
|
@@ -58531,7 +58529,7 @@ webpackContext.id = 84179;
|
|
|
58531
58529
|
|
|
58532
58530
|
/***/ }),
|
|
58533
58531
|
|
|
58534
|
-
/***/
|
|
58532
|
+
/***/ 56959:
|
|
58535
58533
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
58536
58534
|
|
|
58537
58535
|
"use strict";
|
|
@@ -58553,6 +58551,7 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
58553
58551
|
Viewport: () => (/* reexport */ RenderingEngine_Viewport),
|
|
58554
58552
|
VolumeViewport: () => (/* reexport */ RenderingEngine_VolumeViewport),
|
|
58555
58553
|
VolumeViewport3D: () => (/* reexport */ RenderingEngine_VolumeViewport3D),
|
|
58554
|
+
addImageSlicesToViewports: () => (/* reexport */ helpers_addImageSlicesToViewports),
|
|
58556
58555
|
addVolumesToViewports: () => (/* reexport */ helpers_addVolumesToViewports),
|
|
58557
58556
|
cache: () => (/* reexport */ esm_cache),
|
|
58558
58557
|
createVolumeActor: () => (/* reexport */ helpers_createVolumeActor),
|
|
@@ -58667,6 +58666,9 @@ __webpack_require__.d(imageLoader_namespaceObject, {
|
|
|
58667
58666
|
cancelLoadAll: () => (cancelLoadAll),
|
|
58668
58667
|
cancelLoadImage: () => (cancelLoadImage),
|
|
58669
58668
|
cancelLoadImages: () => (cancelLoadImages),
|
|
58669
|
+
createAndCacheDerivedImage: () => (createAndCacheDerivedImage),
|
|
58670
|
+
createAndCacheDerivedImages: () => (createAndCacheDerivedImages),
|
|
58671
|
+
createAndCacheLocalImage: () => (createAndCacheLocalImage),
|
|
58670
58672
|
loadAndCacheImage: () => (loadAndCacheImage),
|
|
58671
58673
|
loadAndCacheImages: () => (loadAndCacheImages),
|
|
58672
58674
|
loadImage: () => (loadImage),
|
|
@@ -58730,6 +58732,8 @@ __webpack_require__.d(utilities_namespaceObject, {
|
|
|
58730
58732
|
decimate: () => (decimate),
|
|
58731
58733
|
deepMerge: () => (utilities_deepMerge),
|
|
58732
58734
|
eventListener: () => (eventListener_namespaceObject),
|
|
58735
|
+
genericMetadataProvider: () => (genericMetadataProvider),
|
|
58736
|
+
getBufferConfiguration: () => (getBufferConfiguration),
|
|
58733
58737
|
getClosestImageId: () => (getClosestImageId),
|
|
58734
58738
|
getClosestStackImageIndexForPoint: () => (getClosestStackImageIndexForPoint),
|
|
58735
58739
|
getImageLegacy: () => (utilities_getImageLegacy),
|
|
@@ -58760,17 +58764,21 @@ __webpack_require__.d(utilities_namespaceObject, {
|
|
|
58760
58764
|
isImageActor: () => (isImageActor),
|
|
58761
58765
|
isOpposite: () => (isOpposite),
|
|
58762
58766
|
isPTPrescaledWithSUV: () => (utilities_isPTPrescaledWithSUV),
|
|
58767
|
+
isValidVolume: () => (isValidVolume),
|
|
58763
58768
|
isVideoTransferSyntax: () => (isVideoTransferSyntax),
|
|
58764
58769
|
loadImageToCanvas: () => (loadImageToCanvas),
|
|
58770
|
+
makeVolumeMetadata: () => (makeVolumeMetadata),
|
|
58765
58771
|
planar: () => (planar_namespaceObject),
|
|
58766
58772
|
renderToCanvasCPU: () => (renderToCanvasCPU),
|
|
58767
58773
|
renderToCanvasGPU: () => (renderToCanvasGPU),
|
|
58768
58774
|
scaleRgbTransferFunction: () => (scaleRGBTransferFunction),
|
|
58769
58775
|
snapFocalPointToSlice: () => (snapFocalPointToSlice),
|
|
58776
|
+
sortImageIdsAndGetSpacing: () => (sortImageIdsAndGetSpacing),
|
|
58770
58777
|
spatialRegistrationMetadataProvider: () => (utilities_spatialRegistrationMetadataProvider),
|
|
58771
58778
|
transferFunctionUtils: () => (transferFunctionUtils_namespaceObject),
|
|
58772
58779
|
transformWorldToIndex: () => (transformWorldToIndex),
|
|
58773
58780
|
triggerEvent: () => (triggerEvent),
|
|
58781
|
+
updateVTKImageDataWithCornerstoneImage: () => (updateVTKImageDataWithCornerstoneImage),
|
|
58774
58782
|
uuidv4: () => (uuidv4),
|
|
58775
58783
|
windowLevel: () => (windowLevel_namespaceObject),
|
|
58776
58784
|
worldToImageCoords: () => (utilities_worldToImageCoords)
|
|
@@ -61823,7 +61831,7 @@ class RequestPoolManager {
|
|
|
61823
61831
|
else if (requestDetails) {
|
|
61824
61832
|
this.numRequests[type]++;
|
|
61825
61833
|
this.awake = true;
|
|
61826
|
-
requestDetails.requestFn()
|
|
61834
|
+
requestDetails.requestFn()?.finally(() => {
|
|
61827
61835
|
this.numRequests[type]--;
|
|
61828
61836
|
this.startAgain();
|
|
61829
61837
|
});
|
|
@@ -62329,6 +62337,17 @@ class Cache {
|
|
|
62329
62337
|
cachedGeometry.timeStamp = Date.now();
|
|
62330
62338
|
return cachedGeometry.geometry;
|
|
62331
62339
|
};
|
|
62340
|
+
this.getImage = (imageId) => {
|
|
62341
|
+
if (imageId === undefined) {
|
|
62342
|
+
throw new Error('getImage: imageId must not be undefined');
|
|
62343
|
+
}
|
|
62344
|
+
const cachedImage = this._imageCache.get(imageId);
|
|
62345
|
+
if (cachedImage === undefined) {
|
|
62346
|
+
return;
|
|
62347
|
+
}
|
|
62348
|
+
cachedImage.timeStamp = Date.now();
|
|
62349
|
+
return cachedImage.image;
|
|
62350
|
+
};
|
|
62332
62351
|
this.getVolume = (volumeId) => {
|
|
62333
62352
|
if (volumeId === undefined) {
|
|
62334
62353
|
throw new Error('getVolume: volumeId must not be undefined');
|
|
@@ -84767,33 +84786,11 @@ async function createAndCacheDerivedVolume(referencedVolumeId, options) {
|
|
|
84767
84786
|
const { metadata, dimensions, spacing, origin, direction } = referencedVolume;
|
|
84768
84787
|
const scalarData = referencedVolume.getScalarData();
|
|
84769
84788
|
const scalarLength = scalarData.length;
|
|
84770
|
-
let numBytes, TypedArray;
|
|
84771
84789
|
const { useNorm16Texture } = getConfiguration().rendering;
|
|
84772
|
-
|
|
84773
|
-
|
|
84774
|
-
|
|
84775
|
-
|
|
84776
|
-
}
|
|
84777
|
-
else if (targetBuffer.type === 'Uint8Array') {
|
|
84778
|
-
numBytes = scalarLength;
|
|
84779
|
-
TypedArray = Uint8Array;
|
|
84780
|
-
}
|
|
84781
|
-
else if (useNorm16Texture && targetBuffer.type === 'Uint16Array') {
|
|
84782
|
-
numBytes = scalarLength * 2;
|
|
84783
|
-
TypedArray = Uint16Array;
|
|
84784
|
-
}
|
|
84785
|
-
else if (useNorm16Texture && targetBuffer.type === 'Int16Array') {
|
|
84786
|
-
numBytes = scalarLength * 2;
|
|
84787
|
-
TypedArray = Uint16Array;
|
|
84788
|
-
}
|
|
84789
|
-
else {
|
|
84790
|
-
throw new Error('TargetBuffer should be Float32Array or Uint8Array');
|
|
84791
|
-
}
|
|
84792
|
-
}
|
|
84793
|
-
else {
|
|
84794
|
-
numBytes = scalarLength * 4;
|
|
84795
|
-
TypedArray = Float32Array;
|
|
84796
|
-
}
|
|
84790
|
+
const { TypedArrayConstructor, numBytes } = getBufferConfiguration(targetBuffer?.type, scalarLength, {
|
|
84791
|
+
use16BitTexture: useNorm16Texture,
|
|
84792
|
+
isVolumeBuffer: true,
|
|
84793
|
+
});
|
|
84797
84794
|
const isCacheable = esm_cache_cache.isCacheable(numBytes);
|
|
84798
84795
|
if (!isCacheable) {
|
|
84799
84796
|
throw new Error(enums_Events.CACHE_SIZE_EXCEEDED);
|
|
@@ -84801,10 +84798,10 @@ async function createAndCacheDerivedVolume(referencedVolumeId, options) {
|
|
|
84801
84798
|
let volumeScalarData;
|
|
84802
84799
|
if (targetBuffer?.sharedArrayBuffer) {
|
|
84803
84800
|
const buffer = new SharedArrayBuffer(numBytes);
|
|
84804
|
-
volumeScalarData = new
|
|
84801
|
+
volumeScalarData = new TypedArrayConstructor(buffer);
|
|
84805
84802
|
}
|
|
84806
84803
|
else {
|
|
84807
|
-
volumeScalarData = new
|
|
84804
|
+
volumeScalarData = new TypedArrayConstructor(scalarLength);
|
|
84808
84805
|
}
|
|
84809
84806
|
const scalarArray = DataArray/* default.newInstance */.ZP.newInstance({
|
|
84810
84807
|
name: 'Pixels',
|
|
@@ -84908,7 +84905,7 @@ function registerUnknownVolumeLoader(volumeLoader) {
|
|
|
84908
84905
|
const EPSILON_PART = 1 + epsilon;
|
|
84909
84906
|
const startsWith = (str, starts) => starts === str.substring(0, Math.min(str.length, starts.length));
|
|
84910
84907
|
const isPrimaryVolume = (volume) => !!getVolumeLoaderSchemes().find((scheme) => startsWith(volume.volumeId, scheme));
|
|
84911
|
-
function getTargetVolumeAndSpacingInNormalDir(viewport, camera, targetVolumeId) {
|
|
84908
|
+
function getTargetVolumeAndSpacingInNormalDir(viewport, camera, targetVolumeId, useSlabThickness = false) {
|
|
84912
84909
|
const { viewPlaneNormal } = camera;
|
|
84913
84910
|
const volumeActors = viewport.getActors();
|
|
84914
84911
|
if (!volumeActors || !volumeActors.length) {
|
|
@@ -84928,7 +84925,7 @@ function getTargetVolumeAndSpacingInNormalDir(viewport, camera, targetVolumeId)
|
|
|
84928
84925
|
const imageVolumeIndex = imageVolumes.findIndex((iv) => iv.volumeId === targetVolumeId);
|
|
84929
84926
|
const imageVolume = imageVolumes[imageVolumeIndex];
|
|
84930
84927
|
const { uid: actorUID } = volumeActors[imageVolumeIndex];
|
|
84931
|
-
const spacingInNormalDirection = getSpacingInNormal(imageVolume, viewPlaneNormal, viewport);
|
|
84928
|
+
const spacingInNormalDirection = getSpacingInNormal(imageVolume, viewPlaneNormal, viewport, useSlabThickness);
|
|
84932
84929
|
return { imageVolume, spacingInNormalDirection, actorUID };
|
|
84933
84930
|
}
|
|
84934
84931
|
if (!imageVolumes.length) {
|
|
@@ -84959,10 +84956,10 @@ function getTargetVolumeAndSpacingInNormalDir(viewport, camera, targetVolumeId)
|
|
|
84959
84956
|
}
|
|
84960
84957
|
return smallest;
|
|
84961
84958
|
}
|
|
84962
|
-
function getSpacingInNormal(imageVolume, viewPlaneNormal, viewport) {
|
|
84959
|
+
function getSpacingInNormal(imageVolume, viewPlaneNormal, viewport, useSlabThickness = false) {
|
|
84963
84960
|
const { slabThickness } = viewport.getProperties();
|
|
84964
84961
|
let spacingInNormalDirection = slabThickness;
|
|
84965
|
-
if (!slabThickness) {
|
|
84962
|
+
if (!slabThickness || useSlabThickness === false) {
|
|
84966
84963
|
spacingInNormalDirection = getSpacingInNormalDirection(imageVolume, viewPlaneNormal);
|
|
84967
84964
|
}
|
|
84968
84965
|
return spacingInNormalDirection;
|
|
@@ -85069,6 +85066,7 @@ imageLoadPoolManager.setMaxSimultaneousRequests(enums_RequestType.Prefetch, 1000
|
|
|
85069
85066
|
|
|
85070
85067
|
|
|
85071
85068
|
|
|
85069
|
+
|
|
85072
85070
|
const imageLoaders = {};
|
|
85073
85071
|
let unknownImageLoader;
|
|
85074
85072
|
function loadImageFromImageLoader(imageId, options) {
|
|
@@ -85139,6 +85137,98 @@ function loadAndCacheImages(imageIds, options = { priority: 0, requestType: 'pre
|
|
|
85139
85137
|
});
|
|
85140
85138
|
return allPromises;
|
|
85141
85139
|
}
|
|
85140
|
+
function createAndCacheDerivedImage(referencedImageId, options = {}, preventCache = false) {
|
|
85141
|
+
if (referencedImageId === undefined) {
|
|
85142
|
+
throw new Error('createAndCacheDerivedImage: parameter imageId must not be undefined');
|
|
85143
|
+
}
|
|
85144
|
+
if (options.imageId === undefined) {
|
|
85145
|
+
options.imageId = `derived:${uuidv4()}`;
|
|
85146
|
+
}
|
|
85147
|
+
const imagePlaneModule = getMetaData('imagePlaneModule', referencedImageId);
|
|
85148
|
+
const length = imagePlaneModule.rows * imagePlaneModule.columns;
|
|
85149
|
+
const { TypedArrayConstructor } = getBufferConfiguration(options.targetBufferType, length);
|
|
85150
|
+
const imageScalarData = new TypedArrayConstructor(length);
|
|
85151
|
+
const derivedImageId = options.imageId;
|
|
85152
|
+
['imagePixelModule', 'imagePlaneModule', 'generalSeriesModule'].forEach((type) => {
|
|
85153
|
+
genericMetadataProvider.add(derivedImageId, {
|
|
85154
|
+
type,
|
|
85155
|
+
metadata: getMetaData(type, referencedImageId),
|
|
85156
|
+
});
|
|
85157
|
+
});
|
|
85158
|
+
const localImage = createAndCacheLocalImage({ scalarData: imageScalarData }, options.imageId, true);
|
|
85159
|
+
const imageLoadObject = {
|
|
85160
|
+
promise: Promise.resolve(localImage),
|
|
85161
|
+
};
|
|
85162
|
+
if (!preventCache) {
|
|
85163
|
+
esm_cache_cache.putImageLoadObject(derivedImageId, imageLoadObject);
|
|
85164
|
+
}
|
|
85165
|
+
return imageLoadObject.promise;
|
|
85166
|
+
}
|
|
85167
|
+
function createAndCacheDerivedImages(referencedImageIds, getDerivedImageId) {
|
|
85168
|
+
if (referencedImageIds?.length === 0) {
|
|
85169
|
+
throw new Error('createAndCacheDerivedImages: parameter imageIds must be list of image Ids');
|
|
85170
|
+
}
|
|
85171
|
+
const derivedImageIds = [];
|
|
85172
|
+
const allPromises = referencedImageIds.map((referencedImageId, index) => {
|
|
85173
|
+
const options = {
|
|
85174
|
+
imageId: getDerivedImageId
|
|
85175
|
+
? getDerivedImageId(referencedImageId)
|
|
85176
|
+
: `derived:${uuidv4()}`,
|
|
85177
|
+
};
|
|
85178
|
+
derivedImageIds.push(options.imageId);
|
|
85179
|
+
return createAndCacheDerivedImage(referencedImageId, options);
|
|
85180
|
+
});
|
|
85181
|
+
return { imageIds: derivedImageIds, promises: allPromises };
|
|
85182
|
+
}
|
|
85183
|
+
function createAndCacheLocalImage(options, imageId, preventCache = false) {
|
|
85184
|
+
const imagePlaneModule = getMetaData('imagePlaneModule', imageId);
|
|
85185
|
+
const length = imagePlaneModule.rows * imagePlaneModule.columns;
|
|
85186
|
+
const image = {
|
|
85187
|
+
imageId: imageId,
|
|
85188
|
+
intercept: 0,
|
|
85189
|
+
windowCenter: 0,
|
|
85190
|
+
windowWidth: 0,
|
|
85191
|
+
color: false,
|
|
85192
|
+
numComps: 1,
|
|
85193
|
+
slope: 1,
|
|
85194
|
+
minPixelValue: 0,
|
|
85195
|
+
maxPixelValue: 255,
|
|
85196
|
+
voiLUTFunction: undefined,
|
|
85197
|
+
rows: imagePlaneModule.rows,
|
|
85198
|
+
columns: imagePlaneModule.columns,
|
|
85199
|
+
getCanvas: undefined,
|
|
85200
|
+
height: imagePlaneModule.rows,
|
|
85201
|
+
width: imagePlaneModule.columns,
|
|
85202
|
+
rgba: undefined,
|
|
85203
|
+
columnPixelSpacing: imagePlaneModule.columnPixelSpacing,
|
|
85204
|
+
rowPixelSpacing: imagePlaneModule.rowPixelSpacing,
|
|
85205
|
+
invert: false,
|
|
85206
|
+
};
|
|
85207
|
+
if (options.scalarData) {
|
|
85208
|
+
const imageScalarData = options.scalarData;
|
|
85209
|
+
if (!(imageScalarData instanceof Uint8Array ||
|
|
85210
|
+
imageScalarData instanceof Float32Array ||
|
|
85211
|
+
imageScalarData instanceof Uint16Array ||
|
|
85212
|
+
imageScalarData instanceof Int16Array)) {
|
|
85213
|
+
throw new Error('To use createLocalVolume you should pass scalarData of type Uint8Array, Uint16Array, Int16Array or Float32Array');
|
|
85214
|
+
}
|
|
85215
|
+
image.sizeInBytes = imageScalarData.byteLength;
|
|
85216
|
+
image.getPixelData = () => imageScalarData;
|
|
85217
|
+
}
|
|
85218
|
+
else {
|
|
85219
|
+
const { numBytes, TypedArrayConstructor } = getBufferConfiguration(options.targetBufferType, length);
|
|
85220
|
+
const imageScalarData = new TypedArrayConstructor(length);
|
|
85221
|
+
image.sizeInBytes = numBytes;
|
|
85222
|
+
image.getPixelData = () => imageScalarData;
|
|
85223
|
+
}
|
|
85224
|
+
const imageLoadObject = {
|
|
85225
|
+
promise: Promise.resolve(image),
|
|
85226
|
+
};
|
|
85227
|
+
if (!preventCache) {
|
|
85228
|
+
esm_cache_cache.putImageLoadObject(image.imageId, imageLoadObject);
|
|
85229
|
+
}
|
|
85230
|
+
return image;
|
|
85231
|
+
}
|
|
85142
85232
|
function cancelLoadImage(imageId) {
|
|
85143
85233
|
const filterFunction = ({ additionalDetails }) => {
|
|
85144
85234
|
if (additionalDetails.imageId) {
|
|
@@ -87124,10 +87214,10 @@ function getSliceRange(volumeActor, viewPlaneNormal, focalPoint) {
|
|
|
87124
87214
|
;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/getVolumeSliceRangeInfo.js
|
|
87125
87215
|
|
|
87126
87216
|
|
|
87127
|
-
function getVolumeSliceRangeInfo(viewport, volumeId) {
|
|
87217
|
+
function getVolumeSliceRangeInfo(viewport, volumeId, useSlabThickness = false) {
|
|
87128
87218
|
const camera = viewport.getCamera();
|
|
87129
87219
|
const { focalPoint, viewPlaneNormal } = camera;
|
|
87130
|
-
const { spacingInNormalDirection, actorUID } = getTargetVolumeAndSpacingInNormalDir(viewport, camera, volumeId);
|
|
87220
|
+
const { spacingInNormalDirection, actorUID } = getTargetVolumeAndSpacingInNormalDir(viewport, camera, volumeId, useSlabThickness);
|
|
87131
87221
|
if (!actorUID) {
|
|
87132
87222
|
throw new Error(`Could not find image volume with id ${volumeId} in the viewport`);
|
|
87133
87223
|
}
|
|
@@ -87148,8 +87238,8 @@ function getVolumeSliceRangeInfo(viewport, volumeId) {
|
|
|
87148
87238
|
|
|
87149
87239
|
;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/getVolumeViewportScrollInfo.js
|
|
87150
87240
|
|
|
87151
|
-
function getVolumeViewportScrollInfo(viewport, volumeId) {
|
|
87152
|
-
const { sliceRange, spacingInNormalDirection, camera } = utilities_getVolumeSliceRangeInfo(viewport, volumeId);
|
|
87241
|
+
function getVolumeViewportScrollInfo(viewport, volumeId, useSlabThickness = false) {
|
|
87242
|
+
const { sliceRange, spacingInNormalDirection, camera } = utilities_getVolumeSliceRangeInfo(viewport, volumeId, useSlabThickness);
|
|
87153
87243
|
const { min, max, current } = sliceRange;
|
|
87154
87244
|
const numScrollSteps = Math.round((max - min) / spacingInNormalDirection);
|
|
87155
87245
|
const fraction = (current - min) / (max - min);
|
|
@@ -87594,7 +87684,7 @@ const defaultArrayMerge = (target, source, optionsArgument) => {
|
|
|
87594
87684
|
destination[i] = deepMerge(target[i], e, optionsArgument);
|
|
87595
87685
|
}
|
|
87596
87686
|
else if (target.indexOf(e) === -1) {
|
|
87597
|
-
destination
|
|
87687
|
+
destination[i] = cloneIfNecessary(e, optionsArgument);
|
|
87598
87688
|
}
|
|
87599
87689
|
});
|
|
87600
87690
|
return destination;
|
|
@@ -87730,6 +87820,215 @@ function getImageLegacy(element) {
|
|
|
87730
87820
|
}
|
|
87731
87821
|
/* harmony default export */ const utilities_getImageLegacy = (getImageLegacy);
|
|
87732
87822
|
|
|
87823
|
+
;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/sortImageIdsAndGetSpacing.js
|
|
87824
|
+
|
|
87825
|
+
|
|
87826
|
+
function sortImageIdsAndGetSpacing(imageIds, scanAxisNormal) {
|
|
87827
|
+
const { imagePositionPatient: referenceImagePositionPatient, imageOrientationPatient, } = getMetaData('imagePlaneModule', imageIds[0]);
|
|
87828
|
+
if (!scanAxisNormal) {
|
|
87829
|
+
const rowCosineVec = esm/* vec3.fromValues */.R3.fromValues(imageOrientationPatient[0], imageOrientationPatient[1], imageOrientationPatient[2]);
|
|
87830
|
+
const colCosineVec = esm/* vec3.fromValues */.R3.fromValues(imageOrientationPatient[3], imageOrientationPatient[4], imageOrientationPatient[5]);
|
|
87831
|
+
scanAxisNormal = esm/* vec3.create */.R3.create();
|
|
87832
|
+
esm/* vec3.cross */.R3.cross(scanAxisNormal, rowCosineVec, colCosineVec);
|
|
87833
|
+
}
|
|
87834
|
+
const refIppVec = esm/* vec3.create */.R3.create();
|
|
87835
|
+
const usingWadoUri = imageIds[0].split(':')[0] === 'wadouri';
|
|
87836
|
+
esm/* vec3.set */.R3.set(refIppVec, referenceImagePositionPatient[0], referenceImagePositionPatient[1], referenceImagePositionPatient[2]);
|
|
87837
|
+
let sortedImageIds;
|
|
87838
|
+
let zSpacing;
|
|
87839
|
+
function getDistance(imageId) {
|
|
87840
|
+
const { imagePositionPatient } = getMetaData('imagePlaneModule', imageId);
|
|
87841
|
+
const positionVector = esm/* vec3.create */.R3.create();
|
|
87842
|
+
esm/* vec3.sub */.R3.sub(positionVector, referenceImagePositionPatient, imagePositionPatient);
|
|
87843
|
+
return esm/* vec3.dot */.R3.dot(positionVector, scanAxisNormal);
|
|
87844
|
+
}
|
|
87845
|
+
if (!usingWadoUri) {
|
|
87846
|
+
const distanceImagePairs = imageIds.map((imageId) => {
|
|
87847
|
+
const distance = getDistance(imageId);
|
|
87848
|
+
return {
|
|
87849
|
+
distance,
|
|
87850
|
+
imageId,
|
|
87851
|
+
};
|
|
87852
|
+
});
|
|
87853
|
+
distanceImagePairs.sort((a, b) => b.distance - a.distance);
|
|
87854
|
+
sortedImageIds = distanceImagePairs.map((a) => a.imageId);
|
|
87855
|
+
const numImages = distanceImagePairs.length;
|
|
87856
|
+
zSpacing =
|
|
87857
|
+
Math.abs(distanceImagePairs[numImages - 1].distance -
|
|
87858
|
+
distanceImagePairs[0].distance) /
|
|
87859
|
+
(numImages - 1);
|
|
87860
|
+
}
|
|
87861
|
+
else {
|
|
87862
|
+
const prefetchedImageIds = [
|
|
87863
|
+
imageIds[0],
|
|
87864
|
+
imageIds[Math.floor(imageIds.length / 2)],
|
|
87865
|
+
];
|
|
87866
|
+
sortedImageIds = imageIds;
|
|
87867
|
+
const firstImageDistance = getDistance(prefetchedImageIds[0]);
|
|
87868
|
+
const middleImageDistance = getDistance(prefetchedImageIds[1]);
|
|
87869
|
+
if (firstImageDistance - middleImageDistance < 0) {
|
|
87870
|
+
sortedImageIds.reverse();
|
|
87871
|
+
}
|
|
87872
|
+
const metadataForMiddleImage = getMetaData('imagePlaneModule', prefetchedImageIds[1]);
|
|
87873
|
+
if (!metadataForMiddleImage) {
|
|
87874
|
+
throw new Error('Incomplete metadata required for volume construction.');
|
|
87875
|
+
}
|
|
87876
|
+
const positionVector = esm/* vec3.create */.R3.create();
|
|
87877
|
+
esm/* vec3.sub */.R3.sub(positionVector, referenceImagePositionPatient, metadataForMiddleImage.imagePositionPatient);
|
|
87878
|
+
const distanceBetweenFirstAndMiddleImages = esm/* vec3.dot */.R3.dot(positionVector, scanAxisNormal);
|
|
87879
|
+
zSpacing =
|
|
87880
|
+
Math.abs(distanceBetweenFirstAndMiddleImages) /
|
|
87881
|
+
Math.floor(imageIds.length / 2);
|
|
87882
|
+
}
|
|
87883
|
+
const { imagePositionPatient: origin, sliceThickness } = getMetaData('imagePlaneModule', sortedImageIds[0]);
|
|
87884
|
+
const { strictZSpacingForVolumeViewport } = getConfiguration().rendering;
|
|
87885
|
+
if (zSpacing === 0 && !strictZSpacingForVolumeViewport) {
|
|
87886
|
+
if (sliceThickness) {
|
|
87887
|
+
console.log('Could not calculate zSpacing. Using sliceThickness');
|
|
87888
|
+
zSpacing = sliceThickness;
|
|
87889
|
+
}
|
|
87890
|
+
else {
|
|
87891
|
+
console.log('Could not calculate zSpacing. The VolumeViewport visualization is compromised. Setting zSpacing to 1 to render');
|
|
87892
|
+
zSpacing = 1;
|
|
87893
|
+
}
|
|
87894
|
+
}
|
|
87895
|
+
const result = {
|
|
87896
|
+
zSpacing,
|
|
87897
|
+
origin,
|
|
87898
|
+
sortedImageIds,
|
|
87899
|
+
};
|
|
87900
|
+
return result;
|
|
87901
|
+
}
|
|
87902
|
+
|
|
87903
|
+
;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/makeVolumeMetadata.js
|
|
87904
|
+
|
|
87905
|
+
function makeVolumeMetadata(imageIds) {
|
|
87906
|
+
const imageId0 = imageIds[0];
|
|
87907
|
+
const { pixelRepresentation, bitsAllocated, bitsStored, highBit, photometricInterpretation, samplesPerPixel, } = getMetaData('imagePixelModule', imageId0);
|
|
87908
|
+
const voiLut = [];
|
|
87909
|
+
const voiLutModule = getMetaData('voiLutModule', imageId0);
|
|
87910
|
+
let voiLUTFunction;
|
|
87911
|
+
if (voiLutModule) {
|
|
87912
|
+
const { windowWidth, windowCenter } = voiLutModule;
|
|
87913
|
+
voiLUTFunction = voiLutModule?.voiLUTFunction;
|
|
87914
|
+
if (Array.isArray(windowWidth)) {
|
|
87915
|
+
for (let i = 0; i < windowWidth.length; i++) {
|
|
87916
|
+
voiLut.push({
|
|
87917
|
+
windowWidth: windowWidth[i],
|
|
87918
|
+
windowCenter: windowCenter[i],
|
|
87919
|
+
});
|
|
87920
|
+
}
|
|
87921
|
+
}
|
|
87922
|
+
else {
|
|
87923
|
+
voiLut.push({
|
|
87924
|
+
windowWidth: windowWidth,
|
|
87925
|
+
windowCenter: windowCenter,
|
|
87926
|
+
});
|
|
87927
|
+
}
|
|
87928
|
+
}
|
|
87929
|
+
else {
|
|
87930
|
+
voiLut.push({
|
|
87931
|
+
windowWidth: undefined,
|
|
87932
|
+
windowCenter: undefined,
|
|
87933
|
+
});
|
|
87934
|
+
}
|
|
87935
|
+
const { modality, seriesInstanceUID } = getMetaData('generalSeriesModule', imageId0);
|
|
87936
|
+
const { imageOrientationPatient, pixelSpacing, frameOfReferenceUID, columns, rows, } = getMetaData('imagePlaneModule', imageId0);
|
|
87937
|
+
return {
|
|
87938
|
+
BitsAllocated: bitsAllocated,
|
|
87939
|
+
BitsStored: bitsStored,
|
|
87940
|
+
SamplesPerPixel: samplesPerPixel,
|
|
87941
|
+
HighBit: highBit,
|
|
87942
|
+
PhotometricInterpretation: photometricInterpretation,
|
|
87943
|
+
PixelRepresentation: pixelRepresentation,
|
|
87944
|
+
Modality: modality,
|
|
87945
|
+
ImageOrientationPatient: imageOrientationPatient,
|
|
87946
|
+
PixelSpacing: pixelSpacing,
|
|
87947
|
+
FrameOfReferenceUID: frameOfReferenceUID,
|
|
87948
|
+
Columns: columns,
|
|
87949
|
+
Rows: rows,
|
|
87950
|
+
voiLut,
|
|
87951
|
+
VOILUTFunction: voiLUTFunction,
|
|
87952
|
+
SeriesInstanceUID: seriesInstanceUID,
|
|
87953
|
+
};
|
|
87954
|
+
}
|
|
87955
|
+
|
|
87956
|
+
;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/genericMetadataProvider.js
|
|
87957
|
+
|
|
87958
|
+
let genericMetadataProvider_state = {};
|
|
87959
|
+
const genericMetadataProvider_metadataProvider = {
|
|
87960
|
+
add: (imageId, payload) => {
|
|
87961
|
+
const type = payload.type;
|
|
87962
|
+
if (!genericMetadataProvider_state[imageId]) {
|
|
87963
|
+
genericMetadataProvider_state[imageId] = {};
|
|
87964
|
+
}
|
|
87965
|
+
genericMetadataProvider_state[imageId][type] = JSON.parse(JSON.stringify(payload.metadata));
|
|
87966
|
+
},
|
|
87967
|
+
get: (type, imageId) => {
|
|
87968
|
+
return genericMetadataProvider_state[imageId]?.[type];
|
|
87969
|
+
},
|
|
87970
|
+
clear: () => {
|
|
87971
|
+
genericMetadataProvider_state = {};
|
|
87972
|
+
},
|
|
87973
|
+
};
|
|
87974
|
+
addProvider(genericMetadataProvider_metadataProvider.get);
|
|
87975
|
+
/* harmony default export */ const genericMetadataProvider = (genericMetadataProvider_metadataProvider);
|
|
87976
|
+
|
|
87977
|
+
;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/isValidVolume.js
|
|
87978
|
+
|
|
87979
|
+
|
|
87980
|
+
function isValidVolume(imageIds) {
|
|
87981
|
+
const imageId0 = imageIds[0];
|
|
87982
|
+
const { modality, seriesInstanceUID } = getMetaData('generalSeriesModule', imageId0);
|
|
87983
|
+
const { imageOrientationPatient, pixelSpacing, frameOfReferenceUID, columns, rows, } = getMetaData('imagePlaneModule', imageId0);
|
|
87984
|
+
const baseMetadata = {
|
|
87985
|
+
modality,
|
|
87986
|
+
imageOrientationPatient,
|
|
87987
|
+
pixelSpacing,
|
|
87988
|
+
frameOfReferenceUID,
|
|
87989
|
+
columns,
|
|
87990
|
+
rows,
|
|
87991
|
+
seriesInstanceUID,
|
|
87992
|
+
};
|
|
87993
|
+
const validVolume = imageIds.every((imageId) => {
|
|
87994
|
+
const { modality, seriesInstanceUID } = getMetaData('generalSeriesModule', imageId);
|
|
87995
|
+
const { imageOrientationPatient, pixelSpacing, columns, rows } = getMetaData('imagePlaneModule', imageId);
|
|
87996
|
+
return (seriesInstanceUID === baseMetadata.seriesInstanceUID &&
|
|
87997
|
+
modality === baseMetadata.modality &&
|
|
87998
|
+
columns === baseMetadata.columns &&
|
|
87999
|
+
rows === baseMetadata.rows &&
|
|
88000
|
+
isEqual(imageOrientationPatient, baseMetadata.imageOrientationPatient) &&
|
|
88001
|
+
isEqual(pixelSpacing, baseMetadata.pixelSpacing));
|
|
88002
|
+
});
|
|
88003
|
+
return validVolume;
|
|
88004
|
+
}
|
|
88005
|
+
|
|
88006
|
+
|
|
88007
|
+
;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/updateVTKImageDataWithCornerstoneImage.js
|
|
88008
|
+
function updateVTKImageDataWithCornerstoneImage(sourceImageData, image) {
|
|
88009
|
+
const pixelData = image.getPixelData();
|
|
88010
|
+
const scalarData = sourceImageData
|
|
88011
|
+
.getPointData()
|
|
88012
|
+
.getScalars()
|
|
88013
|
+
.getData();
|
|
88014
|
+
if (image.color && image.rgba) {
|
|
88015
|
+
const newPixelData = new Uint8Array(image.columns * image.rows * 3);
|
|
88016
|
+
for (let i = 0; i < image.columns * image.rows; i++) {
|
|
88017
|
+
newPixelData[i * 3] = pixelData[i * 4];
|
|
88018
|
+
newPixelData[i * 3 + 1] = pixelData[i * 4 + 1];
|
|
88019
|
+
newPixelData[i * 3 + 2] = pixelData[i * 4 + 2];
|
|
88020
|
+
}
|
|
88021
|
+
image.rgba = false;
|
|
88022
|
+
image.getPixelData = () => newPixelData;
|
|
88023
|
+
scalarData.set(newPixelData);
|
|
88024
|
+
}
|
|
88025
|
+
else {
|
|
88026
|
+
scalarData.set(pixelData);
|
|
88027
|
+
}
|
|
88028
|
+
sourceImageData.modified();
|
|
88029
|
+
}
|
|
88030
|
+
|
|
88031
|
+
|
|
87733
88032
|
;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/ProgressiveIterator.js
|
|
87734
88033
|
class PromiseIterator extends (/* unused pure expression or super */ null && (Promise)) {
|
|
87735
88034
|
}
|
|
@@ -87930,6 +88229,51 @@ function isVideoTransferSyntax(uidOrUids) {
|
|
|
87930
88229
|
return uids.find((uid) => videoUIDs.has(uid));
|
|
87931
88230
|
}
|
|
87932
88231
|
|
|
88232
|
+
;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/getBufferConfiguration.js
|
|
88233
|
+
function getBufferConfiguration(targetBufferType, length, options = {}) {
|
|
88234
|
+
const { use16BitTexture = false, isVolumeBuffer = false } = options;
|
|
88235
|
+
switch (targetBufferType) {
|
|
88236
|
+
case 'Float32Array':
|
|
88237
|
+
return { numBytes: length * 4, TypedArrayConstructor: Float32Array };
|
|
88238
|
+
case 'Uint8Array':
|
|
88239
|
+
return { numBytes: length, TypedArrayConstructor: Uint8Array };
|
|
88240
|
+
case 'Uint16Array':
|
|
88241
|
+
if (!isVolumeBuffer) {
|
|
88242
|
+
return { numBytes: length * 2, TypedArrayConstructor: Uint16Array };
|
|
88243
|
+
}
|
|
88244
|
+
else {
|
|
88245
|
+
if (use16BitTexture) {
|
|
88246
|
+
return { numBytes: length * 2, TypedArrayConstructor: Uint16Array };
|
|
88247
|
+
}
|
|
88248
|
+
else {
|
|
88249
|
+
console.warn('Uint16Array is not supported for volume rendering, switching back to Float32Array');
|
|
88250
|
+
return { numBytes: length * 4, TypedArrayConstructor: Float32Array };
|
|
88251
|
+
}
|
|
88252
|
+
}
|
|
88253
|
+
case 'Int16Array':
|
|
88254
|
+
if (!isVolumeBuffer) {
|
|
88255
|
+
return { numBytes: length * 2, TypedArrayConstructor: Int16Array };
|
|
88256
|
+
}
|
|
88257
|
+
else {
|
|
88258
|
+
if (use16BitTexture) {
|
|
88259
|
+
return { numBytes: length * 2, TypedArrayConstructor: Int16Array };
|
|
88260
|
+
}
|
|
88261
|
+
else {
|
|
88262
|
+
console.warn('Int16Array is not supported for volume rendering, switching back to Float32Array');
|
|
88263
|
+
return { numBytes: length * 4, TypedArrayConstructor: Float32Array };
|
|
88264
|
+
}
|
|
88265
|
+
}
|
|
88266
|
+
default:
|
|
88267
|
+
if (targetBufferType) {
|
|
88268
|
+
throw new Error('TargetBuffer should be Float32Array, Uint8Array, Uint16Array, or Int16Array');
|
|
88269
|
+
}
|
|
88270
|
+
else {
|
|
88271
|
+
return { numBytes: length * 4, TypedArrayConstructor: Float32Array };
|
|
88272
|
+
}
|
|
88273
|
+
}
|
|
88274
|
+
}
|
|
88275
|
+
|
|
88276
|
+
|
|
87933
88277
|
;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/planar.js
|
|
87934
88278
|
|
|
87935
88279
|
function linePlaneIntersection(p0, p1, plane) {
|
|
@@ -88076,6 +88420,12 @@ function setTransferFunctionNodes(transferFunction, nodes) {
|
|
|
88076
88420
|
|
|
88077
88421
|
|
|
88078
88422
|
|
|
88423
|
+
|
|
88424
|
+
|
|
88425
|
+
|
|
88426
|
+
|
|
88427
|
+
|
|
88428
|
+
|
|
88079
88429
|
|
|
88080
88430
|
|
|
88081
88431
|
|
|
@@ -103354,6 +103704,27 @@ function volumeNewImageEventDispatcher(cameraEvent) {
|
|
|
103354
103704
|
}
|
|
103355
103705
|
/* harmony default export */ const helpers_volumeNewImageEventDispatcher = (volumeNewImageEventDispatcher);
|
|
103356
103706
|
|
|
103707
|
+
;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/helpers/addImageSlicesToViewports.js
|
|
103708
|
+
|
|
103709
|
+
async function addImageSlicesToViewports(renderingEngine, stackInputs, viewportIds, immediateRender = false, suppressEvents = false) {
|
|
103710
|
+
for (const viewportId of viewportIds) {
|
|
103711
|
+
const viewport = renderingEngine.getViewport(viewportId);
|
|
103712
|
+
if (!viewport) {
|
|
103713
|
+
throw new Error(`Viewport with Id ${viewportId} does not exist`);
|
|
103714
|
+
}
|
|
103715
|
+
if (!(viewport instanceof RenderingEngine_StackViewport)) {
|
|
103716
|
+
console.warn(`Viewport with Id ${viewportId} is not a StackViewport. Cannot add image segmentation to this viewport.`);
|
|
103717
|
+
return;
|
|
103718
|
+
}
|
|
103719
|
+
}
|
|
103720
|
+
const addStackPromises = viewportIds.map(async (viewportId) => {
|
|
103721
|
+
const viewport = renderingEngine.getViewport(viewportId);
|
|
103722
|
+
return viewport.addImages(stackInputs, immediateRender, suppressEvents);
|
|
103723
|
+
});
|
|
103724
|
+
await Promise.all(addStackPromises);
|
|
103725
|
+
}
|
|
103726
|
+
/* harmony default export */ const helpers_addImageSlicesToViewports = (addImageSlicesToViewports);
|
|
103727
|
+
|
|
103357
103728
|
;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/helpers/index.js
|
|
103358
103729
|
|
|
103359
103730
|
|
|
@@ -103363,6 +103734,7 @@ function volumeNewImageEventDispatcher(cameraEvent) {
|
|
|
103363
103734
|
|
|
103364
103735
|
|
|
103365
103736
|
|
|
103737
|
+
|
|
103366
103738
|
;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/Viewport.js
|
|
103367
103739
|
|
|
103368
103740
|
|
|
@@ -107466,7 +107838,7 @@ class StackViewport extends RenderingEngine_Viewport {
|
|
|
107466
107838
|
}
|
|
107467
107839
|
return numberOfComponents;
|
|
107468
107840
|
}
|
|
107469
|
-
|
|
107841
|
+
getImageDataMetadata(image) {
|
|
107470
107842
|
const { imagePlaneModule, imagePixelModule } = this.buildMetadata(image);
|
|
107471
107843
|
let rowCosines, columnCosines;
|
|
107472
107844
|
rowCosines = imagePlaneModule.rowCosines;
|
|
@@ -107515,19 +107887,30 @@ class StackViewport extends RenderingEngine_Viewport {
|
|
|
107515
107887
|
viewUp: [viewUp[0], viewUp[1], viewUp[2]],
|
|
107516
107888
|
};
|
|
107517
107889
|
}
|
|
107518
|
-
|
|
107890
|
+
createVTKImageData({ origin, direction, dimensions, spacing, numComps, pixelArray, }) {
|
|
107519
107891
|
const values = new pixelArray.constructor(pixelArray.length);
|
|
107520
107892
|
const scalarArray = DataArray/* default.newInstance */.ZP.newInstance({
|
|
107521
107893
|
name: 'Pixels',
|
|
107522
107894
|
numberOfComponents: numComps,
|
|
107523
107895
|
values: values,
|
|
107524
107896
|
});
|
|
107525
|
-
|
|
107526
|
-
|
|
107527
|
-
|
|
107528
|
-
|
|
107529
|
-
|
|
107530
|
-
|
|
107897
|
+
const imageData = ImageData/* default.newInstance */.ZP.newInstance();
|
|
107898
|
+
imageData.setDimensions(dimensions);
|
|
107899
|
+
imageData.setSpacing(spacing);
|
|
107900
|
+
imageData.setDirection(direction);
|
|
107901
|
+
imageData.setOrigin(origin);
|
|
107902
|
+
imageData.getPointData().setScalars(scalarArray);
|
|
107903
|
+
return imageData;
|
|
107904
|
+
}
|
|
107905
|
+
_createVTKImageData({ origin, direction, dimensions, spacing, numComps, pixelArray, }) {
|
|
107906
|
+
this._imageData = this.createVTKImageData({
|
|
107907
|
+
origin,
|
|
107908
|
+
direction,
|
|
107909
|
+
dimensions,
|
|
107910
|
+
spacing,
|
|
107911
|
+
numComps,
|
|
107912
|
+
pixelArray,
|
|
107913
|
+
});
|
|
107531
107914
|
}
|
|
107532
107915
|
async setStack(imageIds, currentImageIdIndex = 0) {
|
|
107533
107916
|
this._throwIfDestroyed();
|
|
@@ -107598,27 +107981,7 @@ class StackViewport extends RenderingEngine_Viewport {
|
|
|
107598
107981
|
origin = [0, 0, 0];
|
|
107599
107982
|
}
|
|
107600
107983
|
this._imageData.setOrigin(origin);
|
|
107601
|
-
this.
|
|
107602
|
-
}
|
|
107603
|
-
_updatePixelData(image) {
|
|
107604
|
-
const pixelData = image.getPixelData();
|
|
107605
|
-
const scalars = this._imageData.getPointData().getScalars();
|
|
107606
|
-
const scalarData = scalars.getData();
|
|
107607
|
-
if (image.color && image.rgba) {
|
|
107608
|
-
const newPixelData = new Uint8Array(image.columns * image.rows * 3);
|
|
107609
|
-
for (let i = 0; i < image.columns * image.rows; i++) {
|
|
107610
|
-
newPixelData[i * 3] = pixelData[i * 4];
|
|
107611
|
-
newPixelData[i * 3 + 1] = pixelData[i * 4 + 1];
|
|
107612
|
-
newPixelData[i * 3 + 2] = pixelData[i * 4 + 2];
|
|
107613
|
-
}
|
|
107614
|
-
image.rgba = false;
|
|
107615
|
-
image.getPixelData = () => newPixelData;
|
|
107616
|
-
scalarData.set(newPixelData);
|
|
107617
|
-
}
|
|
107618
|
-
else {
|
|
107619
|
-
scalarData.set(pixelData);
|
|
107620
|
-
}
|
|
107621
|
-
this._imageData.modified();
|
|
107984
|
+
updateVTKImageDataWithCornerstoneImage(this._imageData, image);
|
|
107622
107985
|
}
|
|
107623
107986
|
_loadAndDisplayImage(imageId, imageIdIndex) {
|
|
107624
107987
|
return this.useCPURendering
|
|
@@ -107800,7 +108163,7 @@ class StackViewport extends RenderingEngine_Viewport {
|
|
|
107800
108163
|
});
|
|
107801
108164
|
}
|
|
107802
108165
|
_updateToDisplayImageCPU(image) {
|
|
107803
|
-
const metadata = this.
|
|
108166
|
+
const metadata = this.getImageDataMetadata(image);
|
|
107804
108167
|
const viewport = getDefaultViewport(this.canvas, image, this.modality, this._cpuFallbackEnabledElement.viewport.colormap);
|
|
107805
108168
|
const { windowCenter, windowWidth } = viewport.voi;
|
|
107806
108169
|
this.voiRange = toLowHighRange(windowWidth, windowCenter);
|
|
@@ -107817,6 +108180,29 @@ class StackViewport extends RenderingEngine_Viewport {
|
|
|
107817
108180
|
this.cpuRenderingInvalidated = true;
|
|
107818
108181
|
this._cpuFallbackEnabledElement.transform = calculateTransform(this._cpuFallbackEnabledElement);
|
|
107819
108182
|
}
|
|
108183
|
+
async addImages(stackInputs) {
|
|
108184
|
+
const actors = this.getActors();
|
|
108185
|
+
stackInputs.forEach((stackInput) => {
|
|
108186
|
+
const image = esm_cache.getImage(stackInput.imageId);
|
|
108187
|
+
const { origin, dimensions, direction, spacing, numComps } = this.getImageDataMetadata(image);
|
|
108188
|
+
const imagedata = this.createVTKImageData({
|
|
108189
|
+
origin,
|
|
108190
|
+
dimensions,
|
|
108191
|
+
direction,
|
|
108192
|
+
spacing,
|
|
108193
|
+
numComps,
|
|
108194
|
+
pixelArray: image.getPixelData(),
|
|
108195
|
+
});
|
|
108196
|
+
const imageActor = this.createActorMapper(imagedata);
|
|
108197
|
+
if (imageActor) {
|
|
108198
|
+
actors.push({ uid: stackInput.actorUID, actor: imageActor });
|
|
108199
|
+
if (stackInput.callback) {
|
|
108200
|
+
stackInput.callback({ imageActor, imageId: stackInput.imageId });
|
|
108201
|
+
}
|
|
108202
|
+
}
|
|
108203
|
+
});
|
|
108204
|
+
this.setActors(actors);
|
|
108205
|
+
}
|
|
107820
108206
|
_updateActorToDisplayImageId(image) {
|
|
107821
108207
|
const sameImageData = this._checkVTKImageDataMatchesCornerstoneImage(image, this._imageData);
|
|
107822
108208
|
const activeCamera = this.getRenderer().getActiveCamera();
|
|
@@ -107838,7 +108224,7 @@ class StackViewport extends RenderingEngine_Viewport {
|
|
|
107838
108224
|
this._setPropertiesFromCache();
|
|
107839
108225
|
return;
|
|
107840
108226
|
}
|
|
107841
|
-
const { origin, direction, dimensions, spacing, numComps, imagePixelModule, } = this.
|
|
108227
|
+
const { origin, direction, dimensions, spacing, numComps, imagePixelModule, } = this.getImageDataMetadata(image);
|
|
107842
108228
|
this._createVTKImageData({
|
|
107843
108229
|
origin,
|
|
107844
108230
|
direction,
|
|
@@ -117345,7 +117731,7 @@ async function createAndCacheGeometry(geometryId, options) {
|
|
|
117345
117731
|
/***/ 61539:
|
|
117346
117732
|
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
|
|
117347
117733
|
|
|
117348
|
-
!function(e,t){ true?module.exports=t(__webpack_require__(63442),__webpack_require__(56660)):0}(this,((e,t)=>(()=>{"use strict";var r={578:(e,t,r)=>{const n=r(823),a=r(187),o=r(592),i=r(604),s=r(249),l=r(968),c=Object.prototype.toString,{Z_NO_FLUSH:u,Z_FINISH:d,Z_OK:f,Z_STREAM_END:m,Z_NEED_DICT:g,Z_STREAM_ERROR:h,Z_DATA_ERROR:p,Z_MEM_ERROR:b}=r(684);function x(e){this.options=a.assign({chunkSize:65536,windowBits:15,to:""},e||{});const t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(t.windowBits>=0&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&0==(15&t.windowBits)&&(t.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new s,this.strm.avail_out=0;let r=n.inflateInit2(this.strm,t.windowBits);if(r!==f)throw new Error(i[r]);if(this.header=new l,n.inflateGetHeader(this.strm,this.header),t.dictionary&&("string"==typeof t.dictionary?t.dictionary=o.string2buf(t.dictionary):"[object ArrayBuffer]"===c.call(t.dictionary)&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(r=n.inflateSetDictionary(this.strm,t.dictionary),r!==f)))throw new Error(i[r])}function w(e,t){const r=new x(t);if(r.push(e),r.err)throw r.msg||i[r.err];return r.result}x.prototype.push=function(e,t){const r=this.strm,a=this.options.chunkSize,i=this.options.dictionary;let s,l,x;if(this.ended)return!1;for(l=t===~~t?t:!0===t?d:u,"[object ArrayBuffer]"===c.call(e)?r.input=new Uint8Array(e):r.input=e,r.next_in=0,r.avail_in=r.input.length;;){for(0===r.avail_out&&(r.output=new Uint8Array(a),r.next_out=0,r.avail_out=a),s=n.inflate(r,l),s===g&&i&&(s=n.inflateSetDictionary(r,i),s===f?s=n.inflate(r,l):s===p&&(s=g));r.avail_in>0&&s===m&&r.state.wrap>0&&0!==e[r.next_in];)n.inflateReset(r),s=n.inflate(r,l);switch(s){case h:case p:case g:case b:return this.onEnd(s),this.ended=!0,!1}if(x=r.avail_out,r.next_out&&(0===r.avail_out||s===m))if("string"===this.options.to){let e=o.utf8border(r.output,r.next_out),t=r.next_out-e,n=o.buf2string(r.output,e);r.next_out=t,r.avail_out=a-t,t&&r.output.set(r.output.subarray(e,e+t),0),this.onData(n)}else this.onData(r.output.length===r.next_out?r.output:r.output.subarray(0,r.next_out));if(s!==f||0!==x){if(s===m)return s=n.inflateEnd(this.strm),this.onEnd(s),this.ended=!0,!0;if(0===r.avail_in)break}}return!0},x.prototype.onData=function(e){this.chunks.push(e)},x.prototype.onEnd=function(e){e===f&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=a.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},e.exports.Hq=function(e,t){return(t=t||{}).raw=!0,w(e,t)},r(684)},187:e=>{const t=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);e.exports.assign=function(e){const r=Array.prototype.slice.call(arguments,1);for(;r.length;){const n=r.shift();if(n){if("object"!=typeof n)throw new TypeError(n+"must be non-object");for(const r in n)t(n,r)&&(e[r]=n[r])}}return e},e.exports.flattenChunks=e=>{let t=0;for(let r=0,n=e.length;r<n;r++)t+=e[r].length;const r=new Uint8Array(t);for(let t=0,n=0,a=e.length;t<a;t++){let a=e[t];r.set(a,n),n+=a.length}return r}},592:e=>{let t=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(e){t=!1}const r=new Uint8Array(256);for(let e=0;e<256;e++)r[e]=e>=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;r[254]=r[254]=1,e.exports.string2buf=e=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(e);let t,r,n,a,o,i=e.length,s=0;for(a=0;a<i;a++)r=e.charCodeAt(a),55296==(64512&r)&&a+1<i&&(n=e.charCodeAt(a+1),56320==(64512&n)&&(r=65536+(r-55296<<10)+(n-56320),a++)),s+=r<128?1:r<2048?2:r<65536?3:4;for(t=new Uint8Array(s),o=0,a=0;o<s;a++)r=e.charCodeAt(a),55296==(64512&r)&&a+1<i&&(n=e.charCodeAt(a+1),56320==(64512&n)&&(r=65536+(r-55296<<10)+(n-56320),a++)),r<128?t[o++]=r:r<2048?(t[o++]=192|r>>>6,t[o++]=128|63&r):r<65536?(t[o++]=224|r>>>12,t[o++]=128|r>>>6&63,t[o++]=128|63&r):(t[o++]=240|r>>>18,t[o++]=128|r>>>12&63,t[o++]=128|r>>>6&63,t[o++]=128|63&r);return t};e.exports.buf2string=(e,n)=>{const a=n||e.length;if("function"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(e.subarray(0,n));let o,i;const s=new Array(2*a);for(i=0,o=0;o<a;){let t=e[o++];if(t<128){s[i++]=t;continue}let n=r[t];if(n>4)s[i++]=65533,o+=n-1;else{for(t&=2===n?31:3===n?15:7;n>1&&o<a;)t=t<<6|63&e[o++],n--;n>1?s[i++]=65533:t<65536?s[i++]=t:(t-=65536,s[i++]=55296|t>>10&1023,s[i++]=56320|1023&t)}}return((e,r)=>{if(r<65534&&e.subarray&&t)return String.fromCharCode.apply(null,e.length===r?e:e.subarray(0,r));let n="";for(let t=0;t<r;t++)n+=String.fromCharCode(e[t]);return n})(s,i)},e.exports.utf8border=(e,t)=>{(t=t||e.length)>e.length&&(t=e.length);let n=t-1;for(;n>=0&&128==(192&e[n]);)n--;return n<0||0===n?t:n+r[e[n]]>t?n:t}},693:e=>{e.exports=(e,t,r,n)=>{let a=65535&e|0,o=e>>>16&65535|0,i=0;for(;0!==r;){i=r>2e3?2e3:r,r-=i;do{a=a+t[n++]|0,o=o+a|0}while(--i);a%=65521,o%=65521}return a|o<<16|0}},684:e=>{e.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},863:e=>{const t=new Uint32Array((()=>{let e,t=[];for(var r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t})());e.exports=(e,r,n,a)=>{const o=t,i=a+n;e^=-1;for(let t=a;t<i;t++)e=e>>>8^o[255&(e^r[t])];return-1^e}},968:e=>{e.exports=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}},365:e=>{const t=16209;e.exports=function(e,r){let n,a,o,i,s,l,c,u,d,f,m,g,h,p,b,x,w,y,k,v,S,D,T,P;const I=e.state;n=e.next_in,T=e.input,a=n+(e.avail_in-5),o=e.next_out,P=e.output,i=o-(r-e.avail_out),s=o+(e.avail_out-257),l=I.dmax,c=I.wsize,u=I.whave,d=I.wnext,f=I.window,m=I.hold,g=I.bits,h=I.lencode,p=I.distcode,b=(1<<I.lenbits)-1,x=(1<<I.distbits)-1;e:do{g<15&&(m+=T[n++]<<g,g+=8,m+=T[n++]<<g,g+=8),w=h[m&b];t:for(;;){if(y=w>>>24,m>>>=y,g-=y,y=w>>>16&255,0===y)P[o++]=65535&w;else{if(!(16&y)){if(0==(64&y)){w=h[(65535&w)+(m&(1<<y)-1)];continue t}if(32&y){I.mode=16191;break e}e.msg="invalid literal/length code",I.mode=t;break e}k=65535&w,y&=15,y&&(g<y&&(m+=T[n++]<<g,g+=8),k+=m&(1<<y)-1,m>>>=y,g-=y),g<15&&(m+=T[n++]<<g,g+=8,m+=T[n++]<<g,g+=8),w=p[m&x];r:for(;;){if(y=w>>>24,m>>>=y,g-=y,y=w>>>16&255,!(16&y)){if(0==(64&y)){w=p[(65535&w)+(m&(1<<y)-1)];continue r}e.msg="invalid distance code",I.mode=t;break e}if(v=65535&w,y&=15,g<y&&(m+=T[n++]<<g,g+=8,g<y&&(m+=T[n++]<<g,g+=8)),v+=m&(1<<y)-1,v>l){e.msg="invalid distance too far back",I.mode=t;break e}if(m>>>=y,g-=y,y=o-i,v>y){if(y=v-y,y>u&&I.sane){e.msg="invalid distance too far back",I.mode=t;break e}if(S=0,D=f,0===d){if(S+=c-y,y<k){k-=y;do{P[o++]=f[S++]}while(--y);S=o-v,D=P}}else if(d<y){if(S+=c+d-y,y-=d,y<k){k-=y;do{P[o++]=f[S++]}while(--y);if(S=0,d<k){y=d,k-=y;do{P[o++]=f[S++]}while(--y);S=o-v,D=P}}}else if(S+=d-y,y<k){k-=y;do{P[o++]=f[S++]}while(--y);S=o-v,D=P}for(;k>2;)P[o++]=D[S++],P[o++]=D[S++],P[o++]=D[S++],k-=3;k&&(P[o++]=D[S++],k>1&&(P[o++]=D[S++]))}else{S=o-v;do{P[o++]=P[S++],P[o++]=P[S++],P[o++]=P[S++],k-=3}while(k>2);k&&(P[o++]=P[S++],k>1&&(P[o++]=P[S++]))}break}}break}}while(n<a&&o<s);k=g>>3,n-=k,g-=k<<3,m&=(1<<g)-1,e.next_in=n,e.next_out=o,e.avail_in=n<a?a-n+5:5-(n-a),e.avail_out=o<s?s-o+257:257-(o-s),I.hold=m,I.bits=g}},823:(e,t,r)=>{const n=r(693),a=r(863),o=r(365),i=r(446),{Z_FINISH:s,Z_BLOCK:l,Z_TREES:c,Z_OK:u,Z_STREAM_END:d,Z_NEED_DICT:f,Z_STREAM_ERROR:m,Z_DATA_ERROR:g,Z_MEM_ERROR:h,Z_BUF_ERROR:p,Z_DEFLATED:b}=r(684),x=16180,w=16190,y=16191,k=16192,v=16194,S=16199,D=16200,T=16206,P=16209,I=16210,C=e=>(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24);function L(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const _=e=>{if(!e)return 1;const t=e.state;return!t||t.strm!==e||t.mode<x||t.mode>16211?1:0},A=e=>{if(_(e))return m;const t=e.state;return e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=x,t.last=0,t.havedict=0,t.flags=-1,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new Int32Array(852),t.distcode=t.distdyn=new Int32Array(592),t.sane=1,t.back=-1,u},E=e=>{if(_(e))return m;const t=e.state;return t.wsize=0,t.whave=0,t.wnext=0,A(e)},M=(e,t)=>{let r;if(_(e))return m;const n=e.state;return t<0?(r=0,t=-t):(r=5+(t>>4),t<48&&(t&=15)),t&&(t<8||t>15)?m:(null!==n.window&&n.wbits!==t&&(n.window=null),n.wrap=r,n.wbits=t,E(e))},O=(e,t)=>{if(!e)return m;const r=new L;e.state=r,r.strm=e,r.window=null,r.mode=x;const n=M(e,t);return n!==u&&(e.state=null),n};let R,F,B=!0;const U=e=>{if(B){R=new Int32Array(512),F=new Int32Array(32);let t=0;for(;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(i(1,e.lens,0,288,R,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;i(2,e.lens,0,32,F,0,e.work,{bits:5}),B=!1}e.lencode=R,e.lenbits=9,e.distcode=F,e.distbits=5},N=(e,t,r,n)=>{let a;const o=e.state;return null===o.window&&(o.wsize=1<<o.wbits,o.wnext=0,o.whave=0,o.window=new Uint8Array(o.wsize)),n>=o.wsize?(o.window.set(t.subarray(r-o.wsize,r),0),o.wnext=0,o.whave=o.wsize):(a=o.wsize-o.wnext,a>n&&(a=n),o.window.set(t.subarray(r-n,r-n+a),o.wnext),(n-=a)?(o.window.set(t.subarray(r-n,r),0),o.wnext=n,o.whave=o.wsize):(o.wnext+=a,o.wnext===o.wsize&&(o.wnext=0),o.whave<o.wsize&&(o.whave+=a))),0};e.exports.inflateReset=E,e.exports.inflateReset2=M,e.exports.inflateResetKeep=A,e.exports.inflateInit=e=>O(e,15),e.exports.inflateInit2=O,e.exports.inflate=(e,t)=>{let r,L,A,E,M,O,R,F,B,j,$,W,Z,q,G,V,z,H,Y,Q,K,J,X=0;const ee=new Uint8Array(4);let te,re;const ne=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(_(e)||!e.output||!e.input&&0!==e.avail_in)return m;r=e.state,r.mode===y&&(r.mode=k),M=e.next_out,A=e.output,R=e.avail_out,E=e.next_in,L=e.input,O=e.avail_in,F=r.hold,B=r.bits,j=O,$=R,J=u;e:for(;;)switch(r.mode){case x:if(0===r.wrap){r.mode=k;break}for(;B<16;){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}if(2&r.wrap&&35615===F){0===r.wbits&&(r.wbits=15),r.check=0,ee[0]=255&F,ee[1]=F>>>8&255,r.check=a(r.check,ee,2,0),F=0,B=0,r.mode=16181;break}if(r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&F)<<8)+(F>>8))%31){e.msg="incorrect header check",r.mode=P;break}if((15&F)!==b){e.msg="unknown compression method",r.mode=P;break}if(F>>>=4,B-=4,K=8+(15&F),0===r.wbits&&(r.wbits=K),K>15||K>r.wbits){e.msg="invalid window size",r.mode=P;break}r.dmax=1<<r.wbits,r.flags=0,e.adler=r.check=1,r.mode=512&F?16189:y,F=0,B=0;break;case 16181:for(;B<16;){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}if(r.flags=F,(255&r.flags)!==b){e.msg="unknown compression method",r.mode=P;break}if(57344&r.flags){e.msg="unknown header flags set",r.mode=P;break}r.head&&(r.head.text=F>>8&1),512&r.flags&&4&r.wrap&&(ee[0]=255&F,ee[1]=F>>>8&255,r.check=a(r.check,ee,2,0)),F=0,B=0,r.mode=16182;case 16182:for(;B<32;){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}r.head&&(r.head.time=F),512&r.flags&&4&r.wrap&&(ee[0]=255&F,ee[1]=F>>>8&255,ee[2]=F>>>16&255,ee[3]=F>>>24&255,r.check=a(r.check,ee,4,0)),F=0,B=0,r.mode=16183;case 16183:for(;B<16;){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}r.head&&(r.head.xflags=255&F,r.head.os=F>>8),512&r.flags&&4&r.wrap&&(ee[0]=255&F,ee[1]=F>>>8&255,r.check=a(r.check,ee,2,0)),F=0,B=0,r.mode=16184;case 16184:if(1024&r.flags){for(;B<16;){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}r.length=F,r.head&&(r.head.extra_len=F),512&r.flags&&4&r.wrap&&(ee[0]=255&F,ee[1]=F>>>8&255,r.check=a(r.check,ee,2,0)),F=0,B=0}else r.head&&(r.head.extra=null);r.mode=16185;case 16185:if(1024&r.flags&&(W=r.length,W>O&&(W=O),W&&(r.head&&(K=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Uint8Array(r.head.extra_len)),r.head.extra.set(L.subarray(E,E+W),K)),512&r.flags&&4&r.wrap&&(r.check=a(r.check,L,W,E)),O-=W,E+=W,r.length-=W),r.length))break e;r.length=0,r.mode=16186;case 16186:if(2048&r.flags){if(0===O)break e;W=0;do{K=L[E+W++],r.head&&K&&r.length<65536&&(r.head.name+=String.fromCharCode(K))}while(K&&W<O);if(512&r.flags&&4&r.wrap&&(r.check=a(r.check,L,W,E)),O-=W,E+=W,K)break e}else r.head&&(r.head.name=null);r.length=0,r.mode=16187;case 16187:if(4096&r.flags){if(0===O)break e;W=0;do{K=L[E+W++],r.head&&K&&r.length<65536&&(r.head.comment+=String.fromCharCode(K))}while(K&&W<O);if(512&r.flags&&4&r.wrap&&(r.check=a(r.check,L,W,E)),O-=W,E+=W,K)break e}else r.head&&(r.head.comment=null);r.mode=16188;case 16188:if(512&r.flags){for(;B<16;){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}if(4&r.wrap&&F!==(65535&r.check)){e.msg="header crc mismatch",r.mode=P;break}F=0,B=0}r.head&&(r.head.hcrc=r.flags>>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=y;break;case 16189:for(;B<32;){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}e.adler=r.check=C(F),F=0,B=0,r.mode=w;case w:if(0===r.havedict)return e.next_out=M,e.avail_out=R,e.next_in=E,e.avail_in=O,r.hold=F,r.bits=B,f;e.adler=r.check=1,r.mode=y;case y:if(t===l||t===c)break e;case k:if(r.last){F>>>=7&B,B-=7&B,r.mode=T;break}for(;B<3;){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}switch(r.last=1&F,F>>>=1,B-=1,3&F){case 0:r.mode=16193;break;case 1:if(U(r),r.mode=S,t===c){F>>>=2,B-=2;break e}break;case 2:r.mode=16196;break;case 3:e.msg="invalid block type",r.mode=P}F>>>=2,B-=2;break;case 16193:for(F>>>=7&B,B-=7&B;B<32;){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}if((65535&F)!=(F>>>16^65535)){e.msg="invalid stored block lengths",r.mode=P;break}if(r.length=65535&F,F=0,B=0,r.mode=v,t===c)break e;case v:r.mode=16195;case 16195:if(W=r.length,W){if(W>O&&(W=O),W>R&&(W=R),0===W)break e;A.set(L.subarray(E,E+W),M),O-=W,E+=W,R-=W,M+=W,r.length-=W;break}r.mode=y;break;case 16196:for(;B<14;){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}if(r.nlen=257+(31&F),F>>>=5,B-=5,r.ndist=1+(31&F),F>>>=5,B-=5,r.ncode=4+(15&F),F>>>=4,B-=4,r.nlen>286||r.ndist>30){e.msg="too many length or distance symbols",r.mode=P;break}r.have=0,r.mode=16197;case 16197:for(;r.have<r.ncode;){for(;B<3;){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}r.lens[ne[r.have++]]=7&F,F>>>=3,B-=3}for(;r.have<19;)r.lens[ne[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,te={bits:r.lenbits},J=i(0,r.lens,0,19,r.lencode,0,r.work,te),r.lenbits=te.bits,J){e.msg="invalid code lengths set",r.mode=P;break}r.have=0,r.mode=16198;case 16198:for(;r.have<r.nlen+r.ndist;){for(;X=r.lencode[F&(1<<r.lenbits)-1],G=X>>>24,V=X>>>16&255,z=65535&X,!(G<=B);){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}if(z<16)F>>>=G,B-=G,r.lens[r.have++]=z;else{if(16===z){for(re=G+2;B<re;){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}if(F>>>=G,B-=G,0===r.have){e.msg="invalid bit length repeat",r.mode=P;break}K=r.lens[r.have-1],W=3+(3&F),F>>>=2,B-=2}else if(17===z){for(re=G+3;B<re;){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}F>>>=G,B-=G,K=0,W=3+(7&F),F>>>=3,B-=3}else{for(re=G+7;B<re;){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}F>>>=G,B-=G,K=0,W=11+(127&F),F>>>=7,B-=7}if(r.have+W>r.nlen+r.ndist){e.msg="invalid bit length repeat",r.mode=P;break}for(;W--;)r.lens[r.have++]=K}}if(r.mode===P)break;if(0===r.lens[256]){e.msg="invalid code -- missing end-of-block",r.mode=P;break}if(r.lenbits=9,te={bits:r.lenbits},J=i(1,r.lens,0,r.nlen,r.lencode,0,r.work,te),r.lenbits=te.bits,J){e.msg="invalid literal/lengths set",r.mode=P;break}if(r.distbits=6,r.distcode=r.distdyn,te={bits:r.distbits},J=i(2,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,te),r.distbits=te.bits,J){e.msg="invalid distances set",r.mode=P;break}if(r.mode=S,t===c)break e;case S:r.mode=D;case D:if(O>=6&&R>=258){e.next_out=M,e.avail_out=R,e.next_in=E,e.avail_in=O,r.hold=F,r.bits=B,o(e,$),M=e.next_out,A=e.output,R=e.avail_out,E=e.next_in,L=e.input,O=e.avail_in,F=r.hold,B=r.bits,r.mode===y&&(r.back=-1);break}for(r.back=0;X=r.lencode[F&(1<<r.lenbits)-1],G=X>>>24,V=X>>>16&255,z=65535&X,!(G<=B);){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}if(V&&0==(240&V)){for(H=G,Y=V,Q=z;X=r.lencode[Q+((F&(1<<H+Y)-1)>>H)],G=X>>>24,V=X>>>16&255,z=65535&X,!(H+G<=B);){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}F>>>=H,B-=H,r.back+=H}if(F>>>=G,B-=G,r.back+=G,r.length=z,0===V){r.mode=16205;break}if(32&V){r.back=-1,r.mode=y;break}if(64&V){e.msg="invalid literal/length code",r.mode=P;break}r.extra=15&V,r.mode=16201;case 16201:if(r.extra){for(re=r.extra;B<re;){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}r.length+=F&(1<<r.extra)-1,F>>>=r.extra,B-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=16202;case 16202:for(;X=r.distcode[F&(1<<r.distbits)-1],G=X>>>24,V=X>>>16&255,z=65535&X,!(G<=B);){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}if(0==(240&V)){for(H=G,Y=V,Q=z;X=r.distcode[Q+((F&(1<<H+Y)-1)>>H)],G=X>>>24,V=X>>>16&255,z=65535&X,!(H+G<=B);){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}F>>>=H,B-=H,r.back+=H}if(F>>>=G,B-=G,r.back+=G,64&V){e.msg="invalid distance code",r.mode=P;break}r.offset=z,r.extra=15&V,r.mode=16203;case 16203:if(r.extra){for(re=r.extra;B<re;){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}r.offset+=F&(1<<r.extra)-1,F>>>=r.extra,B-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg="invalid distance too far back",r.mode=P;break}r.mode=16204;case 16204:if(0===R)break e;if(W=$-R,r.offset>W){if(W=r.offset-W,W>r.whave&&r.sane){e.msg="invalid distance too far back",r.mode=P;break}W>r.wnext?(W-=r.wnext,Z=r.wsize-W):Z=r.wnext-W,W>r.length&&(W=r.length),q=r.window}else q=A,Z=M-r.offset,W=r.length;W>R&&(W=R),R-=W,r.length-=W;do{A[M++]=q[Z++]}while(--W);0===r.length&&(r.mode=D);break;case 16205:if(0===R)break e;A[M++]=r.length,R--,r.mode=D;break;case T:if(r.wrap){for(;B<32;){if(0===O)break e;O--,F|=L[E++]<<B,B+=8}if($-=R,e.total_out+=$,r.total+=$,4&r.wrap&&$&&(e.adler=r.check=r.flags?a(r.check,A,$,M-$):n(r.check,A,$,M-$)),$=R,4&r.wrap&&(r.flags?F:C(F))!==r.check){e.msg="incorrect data check",r.mode=P;break}F=0,B=0}r.mode=16207;case 16207:if(r.wrap&&r.flags){for(;B<32;){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}if(4&r.wrap&&F!==(4294967295&r.total)){e.msg="incorrect length check",r.mode=P;break}F=0,B=0}r.mode=16208;case 16208:J=d;break e;case P:J=g;break e;case I:return h;default:return m}return e.next_out=M,e.avail_out=R,e.next_in=E,e.avail_in=O,r.hold=F,r.bits=B,(r.wsize||$!==e.avail_out&&r.mode<P&&(r.mode<T||t!==s))&&N(e,e.output,e.next_out,$-e.avail_out)?(r.mode=I,h):(j-=e.avail_in,$-=e.avail_out,e.total_in+=j,e.total_out+=$,r.total+=$,4&r.wrap&&$&&(e.adler=r.check=r.flags?a(r.check,A,$,e.next_out-$):n(r.check,A,$,e.next_out-$)),e.data_type=r.bits+(r.last?64:0)+(r.mode===y?128:0)+(r.mode===S||r.mode===v?256:0),(0===j&&0===$||t===s)&&J===u&&(J=p),J)},e.exports.inflateEnd=e=>{if(_(e))return m;let t=e.state;return t.window&&(t.window=null),e.state=null,u},e.exports.inflateGetHeader=(e,t)=>{if(_(e))return m;const r=e.state;return 0==(2&r.wrap)?m:(r.head=t,t.done=!1,u)},e.exports.inflateSetDictionary=(e,t)=>{const r=t.length;let a,o,i;return _(e)?m:(a=e.state,0!==a.wrap&&a.mode!==w?m:a.mode===w&&(o=1,o=n(o,t,r,0),o!==a.check)?g:(i=N(e,t,r,r),i?(a.mode=I,h):(a.havedict=1,u)))},e.exports.inflateInfo="pako inflate (from Nodeca project)"},446:e=>{const t=15,r=new Uint16Array([3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0]),n=new Uint8Array([16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78]),a=new Uint16Array([1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0]),o=new Uint8Array([16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64]);e.exports=(e,i,s,l,c,u,d,f)=>{const m=f.bits;let g,h,p,b,x,w,y=0,k=0,v=0,S=0,D=0,T=0,P=0,I=0,C=0,L=0,_=null;const A=new Uint16Array(16),E=new Uint16Array(16);let M,O,R,F=null;for(y=0;y<=t;y++)A[y]=0;for(k=0;k<l;k++)A[i[s+k]]++;for(D=m,S=t;S>=1&&0===A[S];S--);if(D>S&&(D=S),0===S)return c[u++]=20971520,c[u++]=20971520,f.bits=1,0;for(v=1;v<S&&0===A[v];v++);for(D<v&&(D=v),I=1,y=1;y<=t;y++)if(I<<=1,I-=A[y],I<0)return-1;if(I>0&&(0===e||1!==S))return-1;for(E[1]=0,y=1;y<t;y++)E[y+1]=E[y]+A[y];for(k=0;k<l;k++)0!==i[s+k]&&(d[E[i[s+k]]++]=k);if(0===e?(_=F=d,w=20):1===e?(_=r,F=n,w=257):(_=a,F=o,w=0),L=0,k=0,y=v,x=u,T=D,P=0,p=-1,C=1<<D,b=C-1,1===e&&C>852||2===e&&C>592)return 1;for(;;){M=y-P,d[k]+1<w?(O=0,R=d[k]):d[k]>=w?(O=F[d[k]-w],R=_[d[k]-w]):(O=96,R=0),g=1<<y-P,h=1<<T,v=h;do{h-=g,c[x+(L>>P)+h]=M<<24|O<<16|R|0}while(0!==h);for(g=1<<y-1;L&g;)g>>=1;if(0!==g?(L&=g-1,L+=g):L=0,k++,0==--A[y]){if(y===S)break;y=i[s+d[k]]}if(y>D&&(L&b)!==p){for(0===P&&(P=D),x+=v,T=y-P,I=1<<T;T+P<S&&(I-=A[T+P],!(I<=0));)T++,I<<=1;if(C+=1<<T,1===e&&C>852||2===e&&C>592)return 1;p=L&b,c[p]=D<<24|T<<16|x-u|0}}return 0!==L&&(c[x+L]=y-P<<24|64<<16|0),f.bits=D,0}},604:e=>{e.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},249:e=>{e.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},464:t=>{t.exports=e},713:e=>{e.exports=t}},n={};function a(e){var t=n[e];if(void 0!==t)return t.exports;var o=n[e]={exports:{}};return r[e](o,o.exports,a),o.exports}a.d=(e,t)=>{for(var r in t)a.o(t,r)&&!a.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),a.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e;a.g.importScripts&&(e=a.g.location+"");var t=a.g.document;if(!e&&t&&(t.currentScript&&(e=t.currentScript.src),!e)){var r=t.getElementsByTagName("script");if(r.length)for(var n=r.length-1;n>-1&&!e;)e=r[n--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),a.p=e})();var o={};return(()=>{function e(e,t,r){if(void 0===e)throw new Error("decodeRGB: rgbBuffer must not be undefined");if(e.length%3!=0)throw new Error("decodeRGB: rgbBuffer length must be divisible by 3");const n=e.length/3;let a=0,o=0;if(r)for(let r=0;r<n;r++)t[o++]=e[a++],t[o++]=e[a++],t[o++]=e[a++],t[o++]=255;else t.set(e)}function t(e,t,r){if(void 0===e)throw new Error("decodeRGB: rgbBuffer must not be undefined");if(e.length%3!=0)throw new Error("decodeRGB: rgbBuffer length must be divisible by 3");const n=e.length/3;let a=0,o=0,i=n,s=2*n;if(r)for(let r=0;r<n;r++)t[a++]=e[o++],t[a++]=e[i++],t[a++]=e[s++],t[a++]=255;else for(let r=0;r<n;r++)t[a++]=e[o++],t[a++]=e[i++],t[a++]=e[s++]}function r(e,t,r){if(void 0===e)throw new Error("decodeRGB: ybrBuffer must not be undefined");if(e.length%3!=0)throw new Error("decodeRGB: ybrBuffer length must be divisble by 3");const n=e.length/3;let a=0,o=0;if(r)for(let r=0;r<n;r++){const r=e[a++],n=e[a++],i=e[a++];t[o++]=r+1.402*(i-128),t[o++]=r-.34414*(n-128)-.71414*(i-128),t[o++]=r+1.772*(n-128),t[o++]=255}else for(let r=0;r<n;r++){const r=e[a++],n=e[a++],i=e[a++];t[o++]=r+1.402*(i-128),t[o++]=r-.34414*(n-128)-.71414*(i-128),t[o++]=r+1.772*(n-128)}}function n(e,t,r){if(void 0===e)throw new Error("decodeRGB: ybrBuffer must not be undefined");if(e.length%3!=0)throw new Error("decodeRGB: ybrBuffer length must be divisble by 3");const n=e.length/3;let a=0,o=0,i=n,s=2*n;if(r)for(let r=0;r<n;r++){const r=e[o++],n=e[i++],l=e[s++];t[a++]=r+1.402*(l-128),t[a++]=r-.34414*(n-128)-.71414*(l-128),t[a++]=r+1.772*(n-128),t[a++]=255}else for(let r=0;r<n;r++){const r=e[o++],n=e[i++],l=e[s++];t[a++]=r+1.402*(l-128),t[a++]=r-.34414*(n-128)-.71414*(l-128),t[a++]=r+1.772*(n-128)}}a.r(o),a.d(o,{configure:()=>xt,convertColorSpace:()=>H,convertPALETTECOLOR:()=>bt,convertRGBColorByPixel:()=>e,convertRGBColorByPlane:()=>t,convertYBRFullByPixel:()=>r,convertYBRFullByPlane:()=>n,createImage:()=>xe,decodeImageFrame:()=>fe,decodeJPEGBaseline8BitColor:()=>Q,default:()=>yt,external:()=>ht,getImageFrame:()=>me,getMinMax:()=>V,getPixelData:()=>G,internal:()=>R,isColorImage:()=>ge,isJPEGBaseline8BitColor:()=>wt,wadors:()=>Te,wadouri:()=>ut,webWorkerManager:()=>ce});const i=function(e,t,r){return t=t||0,e&&e.Value?e.Value.length<=t?r:e.Value[t]:r};const s=function(e,t,r){const n=i(e,t,r);if(void 0!==n)return parseFloat(n)};const l=function(e,t){const r=i(e,t);if(void 0!==r)return parseFloat(r)};const c=function(e,t){if(!e)return;if(!e.Value)return;if(!Array.isArray(e.Value))return;if(t&&e.Value.length<t)return;const r=[];for(let t=0;t<e.Value.length;t++)r.push(parseFloat(e.Value[t]));return r};function u(e){const t=e.indexOf(":");return e.substring(t+1)}function d(e,t=!0){return e&&e.Value?e.Value[0]&&t?e.Value[0]:e.Value:e}function f(e,t,r){return{shared:(t?Object.values(t[0]):[]).map((e=>e[0])).filter((e=>void 0!==e&&"object"==typeof e)),perFrame:(e?Object.values(e[r-1]):[]).map((e=>e.Value[0])).filter((e=>void 0!==e&&"object"==typeof e))}}function m(e){let{52009230:t,52009229:r,"00280008":n,...a}=e;return t=d(t,!1),r=d(r,!1),n=d(n),{PerFrameFunctionalGroupsSequence:t,SharedFunctionalGroupsSequence:r,NumberOfFrames:n,rest:a}}function g(e){const t=e.indexOf("/frames/")+8,r=e.slice(0,t),n=parseInt(e.slice(t),10);return{metadata:p[`${r}1`],frame:n}}const h={_retrieveMultiframeMetadata:g,retrieveMultiframeMetadata:function(e){return g(u(e))},isMultiframe:function(e){const t=i(e["00280008"]);return t&&t>1}};let p=[],b={};const x={add:function(e,t){const r=u(e);t.isMultiframe=h.isMultiframe(t),p[r]=t},get:function(e){const t=u(e),r=p[t];if(r&&!r?.isMultiframe)return r;const n=b[t];if(n)return n;const a=h._retrieveMultiframeMetadata(t);if(!a||!a.metadata)return;const{metadata:o,frame:i}=a;if(o){const e=function(e,t){const{PerFrameFunctionalGroupsSequence:r,SharedFunctionalGroupsSequence:n,NumberOfFrames:a,rest:o}=m(t);if(r||a>1){const{shared:i,perFrame:s}=f(r,n,e),l=Object.assign(t,{frameNumber:e});return[...i,...s].forEach((e=>{Object.entries(e).forEach((([e,t])=>{l[e]=t}))})),Object.assign(o,{"00280008":a},l)}return t}(i,o);return b[t]=e,e}},remove:function(e){const t=u(e);p[t]=void 0,b[t]=void 0},purge:function(){p=[],b={}}};function w(e){return"RECON TOMO"===e||"RECON GATED TOMO"===e}function y(e){return i(e["00080060"]).includes("NM")}function k(e,t){const r=d(e["00080008"],!1);if(r)return r[t]}function v(e){let t=c(e["00200037"],6);return!t&&y(e)&&(t=function(e){let t;const r=k(e,2);if(r&&w(r)){const r=d(e["00540022"]);r&&(t=c(r["00200037"],6))}return t}(e)),t}function S(e){let t=c(e["00200032"],3);return!t&&y(e)&&(t=function(e){let t;const r=k(e,2);if(r&&w(r)){const r=d(e["00540022"]);r&&(t=c(r["00200032"],3))}return t}(e)),t}function D(e,t,r){const n={};for(const a of r)try{const r=t(a,e);if(r){const e={};for(const t in r)if(t in r){e[T(t)]=r[t]}Object.assign(n,e)}}catch(e){console.error(`Error retrieving ${a} data:`,e)}return n}const T=e=>e.charAt(0).toUpperCase()+e.slice(1),P=["multiframeModule","generalSeriesModule","patientStudyModule","imagePlaneModule","nmMultiframeGeometryModule","imagePixelModule","modalityLutModule","voiLutModule","sopCommonModule","petIsotopeModule","overlayPlaneModule","transferSyntax","petSeriesModule","petImageModule"];function I(e,t){return{transferSyntaxUID:i(t["00020010"])||i(t["00083002"])}}const C=function e(t,r){const{MetadataModules:n}=ht.cornerstone.Enums;if(t===n.MULTIFRAME){const{metadata:e,frame:t}=h.retrieveMultiframeMetadata(r);if(!e)return;const{PerFrameFunctionalGroupsSequence:n,SharedFunctionalGroupsSequence:a,NumberOfFrames:o}=m(e);if(n||o>1){const{shared:e,perFrame:r}=f(n,a,t);return{NumberOfFrames:o,PerFrameFunctionalInformation:r,SharedFunctionalInformation:e}}return{NumberOfFrames:o}}const{dicomParser:a}=ht,o=x.get(r);if(o){if(t===n.GENERAL_SERIES)return{modality:i(o["00080060"]),seriesInstanceUID:i(o["0020000E"]),seriesNumber:l(o["00200011"]),studyInstanceUID:i(o["0020000D"]),seriesDate:a.parseDA(i(o["00080021"])),seriesTime:a.parseTM(i(o["00080031"],0,"")),acquisitionDate:a.parseDA(i(o["00080022"]),""),acquisitionTime:a.parseTM(i(o["00080032"],0,""))};if(t===n.PATIENT_STUDY)return{patientAge:l(o["00101010"]),patientSize:l(o["00101020"]),patientSex:i(o["00100040"]),patientWeight:l(o["00101030"])};if(t===n.NM_MULTIFRAME_GEOMETRY){const e=i(o["00080060"]),t=k(o,2);return{modality:e,imageType:i(o["00080008"]),imageSubType:t,imageOrientationPatient:v(o),imagePositionPatient:S(o),sliceThickness:l(o["00180050"]),pixelSpacing:c(o["00280030"],2),numberOfFrames:l(o["00280008"]),isNMReconstructable:w(t)&&e.includes("NM")}}if(t===n.IMAGE_PLANE){const e=v(o),t=S(o),r=c(o["00280030"],2);let n=null,a=null;r&&(a=r[0],n=r[1]);let s=null,u=null;return e&&(s=[parseFloat(e[0]),parseFloat(e[1]),parseFloat(e[2])],u=[parseFloat(e[3]),parseFloat(e[4]),parseFloat(e[5])]),{frameOfReferenceUID:i(o["00200052"]),rows:l(o["00280010"]),columns:l(o["00280011"]),imageOrientationPatient:e,rowCosines:s,columnCosines:u,imagePositionPatient:t,sliceThickness:l(o["00180050"]),sliceLocation:l(o["00201041"]),pixelSpacing:r,rowPixelSpacing:a,columnPixelSpacing:n}}if(t===n.IMAGE_URL)return function(e,t){const{transferSyntaxUID:r}=I(e,t),n=ht.cornerstone.utilities.isVideoTransferSyntax(r),a=e.substring(7),o=a.replace("/frames/","/thumbnail/");let i=a.replace("/frames/","/rendered/");n&&(i=i.replace("/rendered/1","/rendered"));return{isVideo:n,rendered:i,thumbnail:o}}(r,o);if(t===n.CINE)return function(e,t){const r=i(t["00180040"]);return{cineRate:r,numberOfFrames:l(t["00280008"])}}(0,o);if("imagePixelModule"===t)return{samplesPerPixel:l(o["00280002"]),photometricInterpretation:i(o["00280004"]),rows:l(o["00280010"]),columns:l(o["00280011"]),bitsAllocated:l(o["00280100"]),bitsStored:l(o["00280101"]),highBit:i(o["00280102"]),pixelRepresentation:l(o["00280103"]),planarConfiguration:l(o["00280006"]),pixelAspectRatio:i(o["00280034"]),smallestPixelValue:l(o["00280106"]),largestPixelValue:l(o["00280107"]),redPaletteColorLookupTableDescriptor:c(o["00281101"]),greenPaletteColorLookupTableDescriptor:c(o["00281102"]),bluePaletteColorLookupTableDescriptor:c(o["00281103"]),redPaletteColorLookupTableData:c(o["00281201"]),greenPaletteColorLookupTableData:c(o["00281202"]),bluePaletteColorLookupTableData:c(o["00281203"])};if("voiLutModule"===t)return{windowCenter:c(o["00281050"],1),windowWidth:c(o["00281051"],1)};if("modalityLutModule"===t)return{rescaleIntercept:l(o["00281052"]),rescaleSlope:l(o["00281053"]),rescaleType:i(o["00281054"])};if("sopCommonModule"===t)return{sopClassUID:i(o["00080016"]),sopInstanceUID:i(o["00080018"])};if("petIsotopeModule"===t){const e=i(o["00540016"]);if(void 0===e)return;return{radiopharmaceuticalInfo:{radiopharmaceuticalStartTime:a.parseTM(i(e["00181072"],0,"")),radiopharmaceuticalStartDateTime:i(e["00181078"],0,""),radionuclideTotalDose:l(e["00181074"]),radionuclideHalfLife:l(e["00181075"])}}}return"overlayPlaneModule"===t?function(e){const t=[];for(let r=0;r<=30;r+=2){let n=`x60${r.toString(16)}`;4===n.length&&(n=`x600${r.toString(16)}`);const a=i(e[`${n}3000`]);if(!a)continue;const o=[];for(let t=0;t<a.length;t++)for(let r=0;r<8;r++){const n=e.Value[a.dataOffset+t];o[8*t+r]=n>>r&1}t.push({rows:l(e[`${n}0010`]),columns:l(e[`${n}0011`]),type:i(e[`${n}0040`]),x:l(e[`${n}0050`],1)-1,y:l(e[`${n}0050`],0)-1,pixelData:o,description:i(e[`${n}0022`]),label:i(e[`${n}1500`]),roiArea:i(e[`${n}1301`]),roiMean:i(e[`${n}1302`]),roiStandardDeviation:i(e[`${n}1303`])})}return{overlays:t}}(o):"transferSyntax"===t?I(r,o):"petSeriesModule"===t?{correctedImage:i(o["00280051"]),units:i(o["00541001"]),decayCorrection:i(o["00541102"])}:"petImageModule"===t?{frameReferenceTime:l(o["00541300"]),actualFrameDuration:l(o["00181242"])}:"instance"===t?D(r,e,P):void 0}};function L(e,t,r){if(r+e.length>t.length)return!1;let n=r;for(let r=0;r<e.length;r++)if(e[r]!==t[n++])return!1;return!0}const _=function(e,t,r){r=r||0;const n=function(e){const t=new Uint8Array(e.length);for(let r=0,n=e.length;r<n;r++)t[r]=e.charCodeAt(r);return t}(t);for(let t=r;t<e.length;t++)if(n[0]===e[t]&&L(n,e,t))return t;return-1};let A={open(e,t){e.open("get",t,!0)},beforeSend(){},beforeProcessing:e=>Promise.resolve(e.response),imageCreated(){}};function E(e){A=Object.assign(A,e)}function M(){return A}const O=function(e,t,r={},n={}){const{cornerstone:a}=ht,o=M(),i=e=>{if("function"==typeof o.errorInterceptor){const t=new Error("request failed");t.request=e,t.response=e.response,t.status=e.status,o.errorInterceptor(t)}},s=new XMLHttpRequest,l=new Promise(((l,c)=>{o.open(s,e,r,n);const u=o.beforeSend(s,t,r,n);s.responseType="arraybuffer";const d=Object.assign({},r,u);Object.keys(d).forEach((function(t){null!==d[t]&&("Accept"===t&&-1!==e.indexOf("accept=")||s.setRequestHeader(t,d[t]))})),n.deferred={resolve:l,reject:c},n.url=e,n.imageId=t,s.onloadstart=function(r){o.onloadstart&&o.onloadstart(r,n);const i={url:e,imageId:t};a.triggerEvent(a.events,"cornerstoneimageloadstart",i)},s.onloadend=function(r){o.onloadend&&o.onloadend(r,n);const i={url:e,imageId:t};a.triggerEvent(a.events,"cornerstoneimageloadend",i)},s.onreadystatechange=function(e){o.onreadystatechange?o.onreadystatechange(e,n):4===s.readyState&&(200===s.status||206===s.status?o.beforeProcessing(s).then(l).catch((()=>{i(s),c(s)})):(i(s),c(s)))},s.onprogress=function(e){const t=e.loaded;let r,a;e.lengthComputable&&(r=e.total,a=Math.round(t/r*100)),o.onprogress&&o.onprogress(e,n)},s.onerror=function(){i(s),c(s)},s.onabort=function(){i(s),c(s)},s.send()}));return l.xhr=s,l},R={xhrRequest:O,setOptions:E,getOptions:M};var F=a(464);const{ImageQualityStatus:B}=F.Enums;function U(e,t,r){r||={};const n=new Uint8Array(t),a=!!r?.isPartial;if(-1===e.indexOf("multipart"))return{contentType:e,imageQualityStatus:a?B.SUBRESOLUTION:B.FULL_RESOLUTION,pixelData:n};let{tokenIndex:o,responseHeaders:i,boundary:s,multipartContentType:l}=r;if(o||=_(n,"\r\n\r\n"),-1===o)throw new Error("invalid response - no multipart mime header");if(!s){const e=function(e,t,r){t=t||0,r=r||e.length-t;let n="";for(let a=t;a<t+r;a++)n+=String.fromCharCode(e[a]);return n}(n,0,o);if(i=e.split("\r\n"),s=function(e){for(let t=0;t<e.length;t++)if("--"===e[t].substr(0,2))return e[t]}(i),!s)throw new Error("invalid response - no boundary marker")}const c=o+4,u=_(n,s,c);if(-1===u&&!a)throw new Error("invalid response - terminating boundary not found");return l||=function(e){for(let t=0;t<e.length;t++)if("Content-Type:"===e[t].substr(0,13))return e[t].substr(13).trim()}(i),r.tokenIndex=o,r.boundary=s,r.responseHeaders=i,r.multipartContentType=l,r.isPartial=-1===u,{contentType:l,extractDone:!a||-1!==u,tokenIndex:o,responseHeaders:i,boundary:s,multipartContentType:l,pixelData:t.slice(c,u-2)}}const{ImageQualityStatus:N}=F.Enums;function j(e,t=!0){return t?e.imageQualityStatus??N.FULL_RESOLUTION:N.SUBRESOLUTION}const{ProgressiveIterator:$}=F.utilities;function W(e,t,r={},n={}){const a=M(),{retrieveOptions:o={},streamingData:i={}}=n,s=o.minChunkSize||131072,l=new $("streamRequest");return l.generate((async(n,l)=>{const c=Object.assign({},r);Object.keys(c).forEach((function(t){null===c[t]&&(c[t]=void 0),"Accept"===t&&-1!==e.indexOf("accept=")&&(c[t]=void 0)}));try{const a=await fetch(e,{headers:r,signal:void 0});if(200!==a.status)throw new Error(`Couldn't retrieve ${e} got status ${a.status}`);const l=a.body.getReader(),c=a.headers,u=c.get("content-type"),d=Number(c.get("Content-Length"));let f=!1,m=i.encodedData,g=i.lastSize||0;for(i.isPartial=!0;!f;){const{done:r,value:a}=await l.read();if(m=Z(m,a),!m){if(f)throw new Error(`Done but no image frame available ${t}`);continue}if(f=r||m.byteLength===d,!f&&m.length<g+s)continue;g=m.length,i.isPartial=!r;const c=U(u,m,i),h=j(o,f),p={url:e,imageId:t,...c,percentComplete:r?100:100*c.pixelData?.length/d,imageQualityStatus:h,done:f};n.add(p,f)}}catch(e){(e=>{if("function"==typeof a.errorInterceptor){const e=new Error("request failed");a.errorInterceptor(e)}})(),console.error(e),l(e)}})),l.getNextPromise()}function Z(e,t){if(!e)return t;if(!t)return e;const r=new Uint8Array(e.length+t.length);return r.set(e,0),r.set(t,e.length),r}function q(e,t,r={},n={}){const a=M(),{retrieveOptions:o={},streamingData:i}=n,s=i.chunkSize||function(e,t,r){const n=t[r];if("function"!=typeof n)return n;const a=x.get(e);return n(a,e)}(t,o,"chunkSize")||65536,l=new Promise((async(t,n)=>{const l=Object.assign({},r);Object.keys(l).forEach((function(e){null!==l[e]&&void 0!==l[e]||delete l[e]}));try{i.encodedData||(i.chunkSize=s,i.rangesFetched=0);const r=function(e,t){const{totalBytes:r,encodedData:n,chunkSize:a=65536}=e,{rangeIndex:o=0}=t;if(!(-1!==o||r&&n))return[0,""];if(-1===o||n?.byteLength>r-a)return[n?.byteLength||0,""];return[n?.byteLength||0,a*(o+1)-1]}(i,o),{encodedData:n,responseHeaders:a}=await async function(e,t,r,n){r&&(t=Object.assign(t,{Range:`bytes=${r[0]}-${r[1]}`}));let{encodedData:a}=n;if(r[1]&&a?.byteLength>r[1])return n;const o=await fetch(e,{headers:t,signal:void 0}),i=await o.arrayBuffer(),s=new Uint8Array(i),{status:l}=o;let c;a?(c=new Uint8Array(a.length+s.length),c.set(a,0),c.set(s,a.length),n.rangesFetched=1):(c=new Uint8Array(s.length),c.set(s,0),n.rangesFetched++);n.encodedData=a=c,n.responseHeaders=o.headers;const u=o.headers.get("Content-Range");u?n.totalBytes=Number(u.split("/")[1]):206===l&&r?""===r[1]||a?.length<r[1]?n.totalBytes=a.byteLength:n.totalBytes=Number.MAX_SAFE_INTEGER:n.totalBytes=a?.byteLength;return n}(e,l,r,i),c=a.get("content-type"),{totalBytes:u}=i,d=u===n.byteLength,f=U(c,n,{isPartial:!0}),m=j(o,d||f.extractDone);t({...f,imageQualityStatus:m,percentComplete:f.extractDone?100:100*s/u})}catch(e){(e=>{if("function"==typeof a.errorInterceptor){const e=new Error("request failed");a.errorInterceptor(e)}else console.warn("rangeRequest:Caught",e)})(e),console.error(e),n(e)}}));return l}const G=function(e,t,r="application/octet-stream",n){const{streamingData:a,retrieveOptions:o={}}=n||{},i={Accept:r};let s=o.urlArguments?`${e}${-1===e.indexOf("?")?"?":"&"}${o.urlArguments}`:e;if(o.framesPath&&(s=s.replace("/frames/",o.framesPath)),a?.url!==s&&(n.streamingData={url:s}),void 0!==o.rangeIndex)return q(s,t,i,n);if(!1!==o.streaming)return W(s,t,i,n);const l=O(s,t,i),{xhr:c}=l;return l.then((function(e){const t=U(c.getResponseHeader("Content-Type")||"application/octet-stream",new Uint8Array(e));return t.imageQualityStatus=j(o,!0),t}))};const V=function(e){let t,r=e[0],n=e[0];const a=e.length;for(let o=1;o<a;o++)t=e[o],r=Math.min(r,t),n=Math.max(n,t);return{min:r,max:n}};function z(r,n,a){0===r.planarConfiguration?e(r.pixelData,n,a):t(r.pixelData,n,a)}function H(e,t,a){if("RGB"===e.photometricInterpretation)z(e,t,a);else if("YBR_RCT"===e.photometricInterpretation)z(e,t,a);else if("YBR_ICT"===e.photometricInterpretation)z(e,t,a);else if("PALETTE COLOR"===e.photometricInterpretation)bt(e,t,a);else if("YBR_FULL_422"===e.photometricInterpretation)!function(e,t,r){if(void 0===e)throw new Error("decodeRGB: ybrBuffer must not be undefined");if(e.length%2!=0)throw new Error("decodeRGB: ybrBuffer length must be divisble by 3");const n=e.length/2;let a=0,o=0;if(r)for(let r=0;r<n;r+=2){const r=e[a++],n=e[a++],i=e[a++],s=e[a++];t[o++]=r+1.402*(s-128),t[o++]=r-.34414*(i-128)-.71414*(s-128),t[o++]=r+1.772*(i-128),t[o++]=255,t[o++]=n+1.402*(s-128),t[o++]=n-.34414*(i-128)-.71414*(s-128),t[o++]=n+1.772*(i-128),t[o++]=255}else for(let r=0;r<n;r+=2){const r=e[a++],n=e[a++],i=e[a++],s=e[a++];t[o++]=r+1.402*(s-128),t[o++]=r-.34414*(i-128)-.71414*(s-128),t[o++]=r+1.772*(i-128),t[o++]=n+1.402*(s-128),t[o++]=n-.34414*(i-128)-.71414*(s-128),t[o++]=n+1.772*(i-128)}}(e.pixelData,t,a);else{if("YBR_FULL"!==e.photometricInterpretation)throw new Error(`No color space conversion for photometric interpretation ${e.photometricInterpretation}`);!function(e,t,a){0===e.planarConfiguration?r(e.pixelData,t,a):n(e.pixelData,t,a)}(e,t,a)}}function Y(e){return function(e){let t;try{return decodeURIComponent(escape(e))}catch(r){if(t=r,t instanceof URIError)return e;throw t}}(String.fromCharCode.apply(null,Array.prototype.slice.apply(new Uint8Array(e))))}const Q=function(e,t,r){const n=(new Date).getTime(),a=new Blob([t],{type:"image/jpeg"});return new Promise(((t,o)=>{const i=new FileReader;void 0===i.readAsBinaryString?i.readAsArrayBuffer(a):i.readAsBinaryString(a),i.onload=function(){const a=new Image;a.onload=function(){r.height=a.height,r.width=a.width,e.rows=a.height,e.columns=a.width;const o=r.getContext("2d");o.drawImage(this,0,0);const i=o.getImageData(0,0,a.width,a.height),s=(new Date).getTime();e.pixelData=new Uint8Array(i.data.buffer),e.imageData=i,e.decodeTimeInMS=s-n;const l=V(e.pixelData);e.smallestPixelValue=l.min,e.largestPixelValue=l.max,e.pixelDataLength=e.pixelData.length,t(e)},a.onerror=function(e){o(e)},void 0===i.readAsBinaryString?a.src=`data:image/jpeg;base64,${window.btoa(Y(i.result))}`:a.src=`data:image/jpeg;base64,${window.btoa(i.result)}`},i.onerror=e=>{o(e)}}))};function K(){return new Worker(a.p+"index.worker.64c896c4316fcd506666.worker.js")}let J=0;const X=[],ee=[],te=M(),re={maxWebWorkers:navigator.hardwareConcurrency||1,startWebWorkersOnDemand:!0,webWorkerTaskPaths:[],taskConfiguration:{decodeTask:{initializeCodecsOnStartup:!1,strict:te.strict}}};let ne;const ae={maxWebWorkers:0,numWebWorkers:0,numTasksQueued:0,numTasksExecuting:0,numTasksCompleted:0,totalTaskTimeInMS:0,totalTimeDelayedInMS:0};function oe(){if(X.length){for(let e=0;e<ee.length;e++)if("ready"===ee[e].status){ee[e].status="busy";const t=X.shift();t.start=(new Date).getTime();const r=(new Date).getTime();return ae.totalTimeDelayedInMS+=r-t.added,ee[e].task=t,ee[e].worker.postMessage({taskType:t.taskType,workerIndex:e,data:t.data},t.transferList),void ae.numTasksExecuting++}ee.length<ne.maxWebWorkers&&se()}}function ie(e){if("initialize"===e.data.taskType)ee[e.data.workerIndex].status="ready",oe();else{const t=ee[e.data.workerIndex].task.start,r="success"===e.data.status?"resolve":"reject";try{ee[e.data.workerIndex].task.deferred[r](e.data.result)}catch(e){console.warn("Caught error delivering response",e)}ee[e.data.workerIndex].task=void 0,ae.numTasksExecuting--,ee[e.data.workerIndex].status="ready",ae.numTasksCompleted++;const n=(new Date).getTime();ae.totalTaskTimeInMS+=n-t,oe()}}function se(){if(ee.length>=ne.maxWebWorkers)return;const e=new K;ee.push({worker:e,status:"initializing"}),e.addEventListener("message",ie),e.postMessage({taskType:"initialize",workerIndex:ee.length-1,config:ne})}function le(e){if(ne=e=e||re,ne.maxWebWorkers=ne.maxWebWorkers||navigator.hardwareConcurrency||1,!ne.startWebWorkersOnDemand)for(let e=0;e<ne.maxWebWorkers;e++)se()}const ce={initialize:le,loadWebWorkerTask:function(e,t){ne.webWorkerTaskPaths.push(e),t&&(ne.taskConfiguration=Object.assign(ne.taskConfiguration,t));for(let t=0;t<ee.length;t++)ee[t].worker.postMessage({taskType:"loadWebWorkerTask",workerIndex:ee.length-1,sourcePath:e,config:ne})},addTask:function(e,t,r=0,n){ne||le();let a={resolve:void 0,reject:void 0};const o=new Promise(((e,t)=>{a={resolve:e,reject:t}}));let i;for(i=0;i<X.length&&!(X[i].priority<r);i++);const s=J++;return X.splice(i,0,{taskId:s,taskType:e,status:"ready",added:(new Date).getTime(),data:t,deferred:a,priority:r,transferList:n}),oe(),{taskId:s,promise:o}},getStatistics:function(){return ae.maxWebWorkers=ne.maxWebWorkers,ae.numWebWorkers=ee.length,ae.numTasksQueued=X.length,ae},setTaskPriority:function(e,t=0){for(let r=0;r<X.length;r++)if(X[r].taskId===e){const e=X.splice(r,1)[0];for(e.priority=t,r=0;r<X.length&&!(X[r].priority<t);r++);return X.splice(r,0,e),!0}return!1},cancelTask:function(e,t){for(let r=0;r<X.length;r++)if(X[r].taskId===e){return X.splice(r,1).deferred.reject(t),!0}return!1},webWorkers:ee,terminate:function(){for(let e=0;e<ee.length;e++)ee[e].worker.terminate();ee.length=0,ne=void 0}};var ue=a(578);function de(e,t,r,n,a){const o={...n};delete o.loader,delete o.streamingData;const i=o.priority||void 0,s=o.transferPixelData?[r.buffer]:void 0;return ce.addTask("decodeTask",{imageFrame:e,transferSyntax:t,pixelData:r,options:o,decodeConfig:a},i,s).promise}window.pako={inflateRaw:ue.Hq};const fe=function(e,t,r,n,a={},o){switch(t){case"1.2.840.10008.1.2":case"1.2.840.10008.1.2.1":case"1.2.840.10008.1.2.2":case"1.2.840.10008.1.2.1.99":case"1.2.840.10008.1.2.5":case"1.2.840.10008.1.2.4.51":case"1.2.840.10008.1.2.4.57":case"1.2.840.10008.1.2.4.70":case"1.2.840.10008.1.2.4.80":case"1.2.840.10008.1.2.4.81":case"1.2.840.10008.1.2.4.90":case"1.2.840.10008.1.2.4.91":case"3.2.840.10008.1.2.4.96":case"1.2.840.10008.1.2.4.201":case"1.2.840.10008.1.2.4.202":case"1.2.840.10008.1.2.4.203":return de(e,t,r,a,o);case"1.2.840.10008.1.2.4.50":return 8!==e.bitsAllocated||3!==e.samplesPerPixel&&4!==e.samplesPerPixel?de(e,t,r,a,o):Q(e,r,n)}return Promise.reject(new Error(`No decoder for transfer syntax ${t}`))};const me=function(e){const{cornerstone:t}=ht,r=t.metaData.get("imagePixelModule",e);return{samplesPerPixel:r.samplesPerPixel,photometricInterpretation:r.photometricInterpretation,planarConfiguration:r.planarConfiguration,rows:r.rows,columns:r.columns,bitsAllocated:r.bitsAllocated,bitsStored:r.bitsStored,pixelRepresentation:r.pixelRepresentation,smallestPixelValue:r.smallestPixelValue,largestPixelValue:r.largestPixelValue,redPaletteColorLookupTableDescriptor:r.redPaletteColorLookupTableDescriptor,greenPaletteColorLookupTableDescriptor:r.greenPaletteColorLookupTableDescriptor,bluePaletteColorLookupTableDescriptor:r.bluePaletteColorLookupTableDescriptor,redPaletteColorLookupTableData:r.redPaletteColorLookupTableData,greenPaletteColorLookupTableData:r.greenPaletteColorLookupTableData,bluePaletteColorLookupTableData:r.bluePaletteColorLookupTableData,pixelData:void 0,imageId:e}};function ge(e){return"RGB"===e||"PALETTE COLOR"===e||"YBR_FULL"===e||"YBR_FULL_422"===e||"YBR_PARTIAL_422"===e||"YBR_PARTIAL_420"===e||"YBR_RCT"===e||"YBR_ICT"===e}const he={"1.2.840.10008.1.2.1":"application/octet-stream","1.2.840.10008.1.2":"application/octet-stream","1.2.840.10008.1.2.2":"application/octet-stream","1.2.840.10008.1.2.5":"image/dicom-rle"};let pe="";function be(e){const t=function(e,t){let r;return Number.isInteger(e)&&Number.isInteger(t)&&(e>=0?t<=255?r=Uint8Array:t<=65535&&(r=Uint16Array):e>=-128&&t<=127?r=Int8Array:e>=-32768&&t<=32767&&(r=Int16Array)),r||Float32Array}(e.smallestPixelValue,e.largestPixelValue);if(!t)throw new Error("Could not apply a typed array to the pixel data");{const r=new t(e.pixelData);e.pixelData=r}}const xe=function(e,t,r,n={}){const a=n.useRGBA;if(n.preScale={enabled:!(!n.preScale||void 0===n.preScale.enabled)&&n.preScale.enabled},!t?.length)return Promise.reject(new Error("The pixel data is missing"));const{cornerstone:o}=ht,i=document.createElement("canvas"),s=me(e);if(s.decodeLevel=n.decodeLevel,n.preScale.enabled){const t=function(e,t){const r=e.get("modalityLutModule",t)||{},n=e.get("generalSeriesModule",t)||{},{modality:a}=n,o={rescaleSlope:r.rescaleSlope,rescaleIntercept:r.rescaleIntercept,modality:a},i=e.get("scalingModule",t)||{};return{...o,..."PT"===a&&{suvbw:i.suvbw}}}(o.metaData,e);t&&(n.preScale={...n.preScale,scalingParameters:t})}n.isSharedArrayBuffer=n.targetBuffer?.arrayBuffer&&n.targetBuffer.arrayBuffer instanceof SharedArrayBuffer;const{decodeConfig:l}=M(),c=fe(s,r,t,i,n,l),{use16BitDataType:u}=l,d=ge(s.photometricInterpretation);return new Promise(((t,s)=>{c.then((function(s){if(n.skipCreateImage)return t(s);let l=!1;if(n.targetBuffer&&n.targetBuffer.type&&!d){const{arrayBuffer:e,type:t,offset:r=0,length:a}=n.targetBuffer,o=s.pixelDataLength,i=r,c=null!=a?a:o-i,d={Uint8Array,Uint16Array:u?Uint16Array:void 0,Int16Array:u?Int16Array:void 0,Float32Array};if(c!==s.pixelDataLength)throw new Error(`target array for image does not have the same length (${c}) as the decoded image length (${s.pixelDataLength}).`);const f=d[t],m=e?new f(e,i,c):new f(s.pixelData);if(c!==s.pixelDataLength)throw new Error("target array for image does not have the same length as the decoded image length.");s.pixelData=m,l=!0}l||be(s);const c=o.metaData.get("imagePlaneModule",e)||{},f=o.metaData.get("voiLutModule",e)||{},m=o.metaData.get("modalityLutModule",e)||{},g=o.metaData.get("sopCommonModule",e)||{};if(d){const{rows:e,columns:t}=s;if(he[r]){i.height=s.rows,i.width=s.columns;const e=i.getContext("2d").createImageData(s.columns,s.rows);H(s,e.data,a),s.imageData=e,s.pixelData=e.data,s.pixelDataLength=e.data.length}else if(!a&&s.pixelDataLength===4*e*t){const e=new Uint8Array(s.pixelData.length/4*3);s.pixelData=function(e,t){const r=e.length/4;let n=0,a=0;for(let o=0;o<r;o++)t[a++]=e[n++],t[a++]=e[n++],t[a++]=e[n++],n++;return t}(s.pixelData,e),s.pixelDataLength=s.pixelData.length}const n=V(s.pixelData);s.smallestPixelValue=n.min,s.largestPixelValue=n.max}const h={imageId:e,color:d,columnPixelSpacing:c.columnPixelSpacing,columns:s.columns,height:s.rows,preScale:s.preScale,intercept:m.rescaleIntercept?m.rescaleIntercept:0,slope:m.rescaleSlope?m.rescaleSlope:1,invert:"MONOCHROME1"===s.photometricInterpretation,minPixelValue:s.smallestPixelValue,maxPixelValue:s.largestPixelValue,rowPixelSpacing:c.rowPixelSpacing,rows:s.rows,sizeInBytes:s.pixelData.byteLength,width:s.columns,windowCenter:f.windowCenter?f.windowCenter[0]:void 0,windowWidth:f.windowWidth?f.windowWidth[0]:void 0,voiLUTFunction:f.voiLUTFunction?f.voiLUTFunction:void 0,decodeTimeInMS:s.decodeTimeInMS,floatPixelData:void 0,imageFrame:s,rgba:d&&a,getPixelData:()=>s.pixelData,getCanvas:void 0,numComps:void 0};var p;if(window.image=h,h.color&&(h.getCanvas=function(){if(pe===e)return i;const t=h.columns,r=h.rows;i.height=r,i.width=t;const n=i.getContext("2d"),a=n.createImageData(t,r),o=s.pixelData;if(o.length===t*r*4)for(let e=0;e<o.length;e++)a.data[e]=o[e];else if(o.length===t*r*3){let e=0;for(let t=0;t<o.length;t+=3)a.data[e++]=o[t],a.data[e++]=o[t+1],a.data[e++]=o[t+2],a.data[e++]=255}return s.pixelData=a.data,s.pixelDataLength=a.data.length,s.imageData=a,n.putImageData(s.imageData,0,0),pe=e,i}),m.modalityLUTSequence&&m.modalityLUTSequence.length>0&&("1.2.840.10008.5.1.4.1.1.12.1"!==(p=g.sopClassUID)&&"1.2.840.10008.5.1.4.1.1.12.2.1"!==p)&&(h.modalityLUT=m.modalityLUTSequence[0]),f.voiLUTSequence&&f.voiLUTSequence.length>0&&(h.voiLUT=f.voiLUTSequence[0]),h.color&&(h.windowWidth=256,h.windowCenter=128),void 0===h.windowCenter||void 0===h.windowWidth){const e=h.imageFrame.minAfterScale,t=h.imageFrame.maxAfterScale;h.windowWidth=t-e,h.windowCenter=(t+e)/2}t(h)}),s)}))},{ProgressiveIterator:we}=F.utilities,{ImageQualityStatus:ye}=F.Enums,ke=new Set(["3.2.840.10008.1.2.4.96","1.2.840.10008.1.2.4.202","1.2.840.10008.1.2.4.203"]);function ve(e){const t="1.2.840.10008.1.2";if(!e)return t;const r=e.split(";"),n={};r.forEach((e=>{const t=e.split("=");if(2!==t.length)return;const r=t[1].trim().replace(/"/g,"");n[t[0].trim()]=r}));const a={"image/jpeg":"1.2.840.10008.1.2.4.50","image/x-dicom-rle":"1.2.840.10008.1.2.5","image/x-jls":"1.2.840.10008.1.2.4.80","image/jls":"1.2.840.10008.1.2.4.80","image/jll":"1.2.840.10008.1.2.4.70","image/jp2":"1.2.840.10008.1.2.4.90","image/jpx":"1.2.840.10008.1.2.4.92","image/jphc":"3.2.840.10008.1.2.4.96","image/jxl":"1.2.840.10008.1.2.4.140"};return n["transfer-syntax"]?n["transfer-syntax"]:e&&!Object.keys(n).length&&a[e]?a[e]:n.type&&a[n.type]?a[n.type]:a[e]?a[e]:t}function Se(e,t=4){const r=e/100-.02;return r>1/4?Math.min(t,0):r>1/16?Math.min(t,1):r>1/64?Math.min(t,2):Math.min(t,3)}const De=function(e,t={}){const r=ht.cornerstone.imageRetrievalPoolManager,n=(new Date).getTime(),a=new we("decompress"),o=t.requestType||"interaction",i=t.additionalDetails||{imageId:e},s=void 0===t.priority?5:t.priority,l=t.addToBeginning||!1,c=e.substring(7);return r.addRequest(async function(e,r,o){a.generate((async a=>{const i=we.as(G(e,r,o,t));let s=10;for await(const e of i){const{pixelData:o,imageQualityStatus:i=ye.FULL_RESOLUTION,percentComplete:l,done:c=!0,extractDone:u=!0}=e,d=ve(e.contentType);if(!u&&!ke.has(d))continue;const f=e.decodeLevel??(i===ye.FULL_RESOLUTION?0:Se(l,t.retrieveOptions?.decodeLevel));if(c||!(s<=f))try{const e={...t,decodeLevel:f},l=await xe(r,o,d,e),u=(new Date).getTime();l.loadTimeInMS=u-n,l.transferSyntaxUID=d,l.imageQualityStatus=i,a.add(l,c),s=f}catch(e){if(u)throw console.warn("Couldn't decode",e),e}}}))}.bind(this,c,e,"multipart/related; type=application/octet-stream; transfer-syntax=*"),o,i,s,l),{promise:a.getDonePromise(),cancelFn:void 0}};const Te={metaData:{getNumberString:s,getNumberValue:l,getNumberValues:c,getValue:i,metaDataProvider:C},findIndexOfString:_,getPixelData:G,loadImage:De,metaDataManager:x,register:function(e){e.registerImageLoader("wadors",De),e.metaData.addProvider(C)}};function Pe(e,t){if(e.elements[t]&&6===e.elements[t].length)return[e.uint16(t,0),e.uint16(t,1),e.uint16(t,2)]}function Ie(e,t,r){const n=[],a=e.elements[t];for(let o=0;o<r[0];o++)16===r[2]?n[o]=e.uint16(t,o):n[o]=e.byteArray[o+a.dataOffset];return n}const Ce=function(e){const t={samplesPerPixel:e.uint16("x00280002"),photometricInterpretation:e.string("x00280004"),rows:e.uint16("x00280010"),columns:e.uint16("x00280011"),bitsAllocated:e.uint16("x00280100"),bitsStored:e.uint16("x00280101"),highBit:e.uint16("x00280102"),pixelRepresentation:e.uint16("x00280103"),planarConfiguration:e.uint16("x00280006"),pixelAspectRatio:e.string("x00280034")};return function(e,t){0===e.uint16("x00280103")?(t.smallestPixelValue=e.uint16("x00280106"),t.largestPixelValue=e.uint16("x00280107")):(t.smallestPixelValue=e.int16("x00280106"),t.largestPixelValue=e.int16("x00280107"))}(e,t),"PALETTE COLOR"===t.photometricInterpretation&&e.elements.x00281101&&function(e,t){t.redPaletteColorLookupTableDescriptor=Pe(e,"x00281101"),t.greenPaletteColorLookupTableDescriptor=Pe(e,"x00281102"),t.bluePaletteColorLookupTableDescriptor=Pe(e,"x00281103"),0===t.redPaletteColorLookupTableDescriptor[0]&&(t.redPaletteColorLookupTableDescriptor[0]=65536,t.greenPaletteColorLookupTableDescriptor[0]=65536,t.bluePaletteColorLookupTableDescriptor[0]=65536);const r=t.redPaletteColorLookupTableDescriptor[0],n=e.elements.x00281201.length===r?8:16;t.redPaletteColorLookupTableDescriptor[2]!==n&&(t.redPaletteColorLookupTableDescriptor[2]=n,t.greenPaletteColorLookupTableDescriptor[2]=n,t.bluePaletteColorLookupTableDescriptor[2]=n),t.redPaletteColorLookupTableData=Ie(e,"x00281201",t.redPaletteColorLookupTableDescriptor),t.greenPaletteColorLookupTableData=Ie(e,"x00281202",t.greenPaletteColorLookupTableDescriptor),t.bluePaletteColorLookupTableData=Ie(e,"x00281203",t.bluePaletteColorLookupTableDescriptor)}(e,t),t};function Le(e,t){let r=t.uint16("x00283002",0);0===r&&(r=65535);let n=0;n=0===e?t.uint16("x00283002",1):t.int16("x00283002",1);const a={id:"1",firstValueMapped:n,numBitsPerEntry:t.uint16("x00283002",2),lut:[]};for(let n=0;n<r;n++)a.lut[n]=0===e?t.uint16("x00283006",n):t.int16("x00283006",n);return a}const _e=function(e,t){if(!t||!t.items||!t.items.length)return;const r=[];for(let n=0;n<t.items.length;n++){const a=Le(e,t.items[n].dataSet);a&&r.push(a)}return r};const Ae=function(e){const t=e.string("x00080016");if("1.2.840.10008.5.1.4.1.1.2"===t||"1.2.840.10008.5.1.4.1.1.2.1"===t)return 1;const r=e.floatString("x00281052"),n=e.floatString("x00281053");if(void 0!==r&&void 0!==n){const t=function(e){const t=e.uint16("x00280103"),r=e.uint16("x00280101");return 0===t?0:-1<<r-1}(e);return t*n+r<0?1:0}return e.elements.x00283000&&e.elements.x00283000.length>0?0:e.uint16("x00280103")};const Ee=function(e,t,r){const n=[],a=e.string(t);if(!a)return;const o=a.split("\\");if(!(r&&o.length<r)){for(let e=0;e<o.length;e++)n.push(parseFloat(o[e]));return n}};const Me=function(e){const t=e.indexOf(":");let r=e.substring(t+1);const n=r.indexOf("frame=");let a;if(-1!==n){const e=r.substring(n+6);a=parseInt(e,10),r=r.substring(0,n-1)}return{scheme:e.substring(0,t),url:r,frame:a,pixelDataFrame:void 0!==a?a-1:void 0}};function Oe(e){const{dicomParser:t}=ht;let r,n=t.parseDicom(e,{untilTag:"x7fe00010"});n.elements.x7fe00010||console.warn("Pixel data not found!");try{r=t.parseDicom(e)}catch(e){console.error(e),console.log("pixel data dataset:",e.dataSet),r=e.dataSet}return n.elements.x7fe00010=r.elements.x7fe00010,n=function(e){const t=e.elements.x7fe00010.fragments,r=e.byteArray.length;for(const e of t){const{position:t,length:n}=e;n>r-t&&(console.log(`Truncated fragment, changing fragment length from ${e.length} to ${r-t}`),e.length=r-t)}return e}(n),n}async function Re(e,t,r){const n=Oe(e),{uri:a,imageId:o,fileTotalLength:i}=r;return n.fetchMore=async function(s){const l=Object.assign({uri:a,imageId:o,fetchedLength:e.length,lengthToFetch:i-e.length},s),{fetchedLength:c,lengthToFetch:u}=l,{arrayBuffer:d}=await t(a,o,{byteRange:`${c}-${c+u}`}),f=new Uint8Array(d),m=new Uint8Array(n.byteArray.length+f.length);return m.set(n.byteArray),m.set(f,n.byteArray.length),Re(m,t,r)},n}function Fe(e,t,r){const n={};(t?Object.values(t.items[0].dataSet.elements):[]).map((e=>n[e.tag]=e));const a={};return(e?Object.values(e.items[r-1].dataSet.elements):[]).map((e=>a[e.tag]=e)),{shared:n,perFrame:a}}function Be(e){if(!e)return;const{elements:t,...r}=e,{x52009230:n,x52009229:a,...o}=t;return{NumberOfFrames:e.intString("x00280008"),PerFrameFunctionalGroupsSequence:n,SharedFunctionalGroupsSequence:a,otherElements:o,otherAttributtes:r}}function Ue(e){if(We[e])return We[e]}function Ne(e){if(!e)return!1;const t=e.intString("x00280008");return t&&t>1}const je={_get:Ue,generateMultiframeWADOURIs:function(e){const t=[],r=Ue(e);if(Ne(r)){const n=r.intString("x00280008");for(let r=1;r<=n;r++)t.push(`${e}&frame=${r}`)}else t.push(e);return t},retrieveMultiframeDataset:function(e){const t=function(e){return e.indexOf("&frame=")}(e),r=-1===t?e:e.slice(0,t),n=parseInt(e.slice(t+7),10)||1;let a;return a=We[r]?We[r].dataSet:void 0,{dataSet:a,frame:n}},isMultiframeDataset:function(e){return Ne(Ue(e))}};let $e=0,We={},Ze={};function qe(){return{cacheSizeInBytes:$e,numberOfDataSetsCached:Object.keys(We).length}}const Ge={isLoaded:function(e){return void 0!==We[e]},load:function(e,t=O,r){const{cornerstone:n,dicomParser:a}=ht;if(We[e])return new Promise((t=>{We[e].cacheCount++,t(We[e].dataSet)}));if(Ze[e])return Ze[e].cacheCount++,Ze[e];const o=t(e,r),i=new Promise(((s,l)=>{o.then((async function(o){const c={isPartialContent:!1,fileTotalLength:null};if(!(o instanceof ArrayBuffer)){if(!o.arrayBuffer)return l(new Error("If not returning ArrayBuffer, must return object with `arrayBuffer` parameter"));c.isPartialContent=o.flags.isPartialContent,c.fileTotalLength=o.flags.fileTotalLength,o=o.arrayBuffer}const u=new Uint8Array(o);let d;try{d=c.isPartialContent?await Re(u,t,{uri:e,imageId:r,fileTotalLength:c.fileTotalLength}):a.parseDicom(u)}catch(e){return l(e)}We[e]={dataSet:d,cacheCount:i.cacheCount},$e+=d.byteArray.length,s(d),n.triggerEvent(n.events,"datasetscachechanged",{uri:e,action:"loaded",cacheInfo:qe()})}),l).then((()=>{delete Ze[e]}),(()=>{delete Ze[e]}))}));return i.cacheCount=1,Ze[e]=i,i},unload:function(e){const{cornerstone:t}=ht;We[e]&&(We[e].cacheCount--,0===We[e].cacheCount&&($e-=We[e].dataSet.byteArray.length,delete We[e],t.triggerEvent(t.events,"datasetscachechanged",{uri:e,action:"unloaded",cacheInfo:qe()})))},getInfo:qe,purge:function(){We={},Ze={},$e=0},get:function(e){let t;if(e.includes("&frame=")){const{frame:r,dataSet:n}=je.retrieveMultiframeDataset(e);t=function(e,t){if(!t)return;const{NumberOfFrames:r,PerFrameFunctionalGroupsSequence:n,SharedFunctionalGroupsSequence:a,otherElements:o}=Be(t);if(n||r>1){const{shared:r,perFrame:i}=Fe(n,a,e),s={elements:{...o,...r,...i}},l=Object.create(t);return Object.assign(l,s)}return t}(r,n)}else We[e]&&(t=We[e].dataSet);return t},update:function(e,t){const r=We[e];r?($e-=r.dataSet.byteArray.length,r.dataSet=t,$e+=t.byteArray.length,ht.cornerstone.triggerEvent(ht.cornerstone.events,"datasetscachechanged",{uri:e,action:"updated",cacheInfo:qe()})):console.error(`No loaded dataSet for uri ${e}`)}};function Ve(e,t){const r=e.string("x00080008");if(r){const e=r.split("\\");if(e.length>t)return e[t]}}function ze(e){let t=Ee(e,"x00200037",6);return!t&&e.elements.x00209116&&(t=Ee(e.elements.x00209116.items[0].dataSet,"x00200037",6)),t||(t=function(e){let t;if(e.string("x00080060").includes("NM")){const r=Ve(e,2);r&&w(r)&&e.elements.x00540022&&(t=Ee(e.elements.x00540022.items[0].dataSet,"x00200037",6))}return t}(e)),t}function He(e){let t=Ee(e,"x00200032",3);return!t&&e.elements.x00209113&&(t=Ee(e.elements.x00209113.items[0].dataSet,"x00200032",3)),t||(t=function(e){let t;if(e.string("x00080060").includes("NM")){const r=Ve(e,2);r&&w(r)&&e.elements.x00540022&&(t=Ee(e.elements.x00540022.items[0].dataSet,"x00200032",3))}return t}(e)),t}function Ye(e){let t=Ee(e,"x00280030",2);return!t&&e.elements.x00289110&&(t=Ee(e.elements.x00289110.items[0].dataSet,"x00280030",2)),t}function Qe(e){let t;return e.elements.x00180050?t=e.floatString("x00180050"):e.elements.x00289110&&e.elements.x00289110.items.length&&e.elements.x00289110.items[0].dataSet.elements.x00180050&&(t=e.elements.x00289110.items[0].dataSet.floatString("x00180050")),t}const Ke=function e(t,r){const{dicomParser:n}=ht;if(Array.isArray(r))return;const a=Me(r);if("multiframeModule"===t){const e=je.retrieveMultiframeDataset(a.url);if(!e.dataSet)return;const t=function(e,t){if(!e)return;const{NumberOfFrames:r,PerFrameFunctionalGroupsSequence:n,SharedFunctionalGroupsSequence:a}=Be(e);if(n||r>1){const{shared:e,perFrame:o}=Fe(n,a,t);return{NumberOfFrames:r,PerFrameFunctionalInformation:o,SharedFunctionalInformation:e}}return{NumberOfFrames:r}}(e.dataSet,e.frame);return t}let o=a.url;a.frame&&(o=`${o}&frame=${a.frame}`);const i=Ge.get(o);if(i){if("generalSeriesModule"===t)return{modality:i.string("x00080060"),seriesInstanceUID:i.string("x0020000e"),seriesNumber:i.intString("x00200011"),studyInstanceUID:i.string("x0020000d"),seriesDate:n.parseDA(i.string("x00080021")),seriesTime:n.parseTM(i.string("x00080031")||""),acquisitionDate:n.parseDA(i.string("x00080022")||""),acquisitionTime:n.parseTM(i.string("x00080032")||"")};if("patientStudyModule"===t)return{patientAge:i.intString("x00101010"),patientSize:i.floatString("x00101020"),patientWeight:i.floatString("x00101030")};if("imagePlaneModule"===t){const e=ze(i),t=He(i),r=Ye(i);let n;i.elements.x00200052&&(n=i.string("x00200052"));const a=Qe(i);let o;i.elements.x00201041&&(o=i.floatString("x00201041"));let s=null,l=null;r&&(l=r[0],s=r[1]);let c=null,u=null;return e&&(c=[parseFloat(e[0]),parseFloat(e[1]),parseFloat(e[2])],u=[parseFloat(e[3]),parseFloat(e[4]),parseFloat(e[5])]),{frameOfReferenceUID:n,rows:i.uint16("x00280010"),columns:i.uint16("x00280011"),imageOrientationPatient:e,rowCosines:c,columnCosines:u,imagePositionPatient:t,sliceThickness:a,sliceLocation:o,pixelSpacing:r,rowPixelSpacing:l,columnPixelSpacing:s}}if("nmMultiframeGeometryModule"===t){const e=i.string("x00080060"),t=Ve(i,2);return{modality:e,imageType:i.string("x00080008"),imageSubType:t,imageOrientationPatient:ze(i),imagePositionPatient:He(i),sliceThickness:Qe(i),pixelSpacing:Ye(i),numberOfFrames:i.uint16("x00280008"),isNMReconstructable:w(t)&&e.includes("NM")}}if("imagePixelModule"===t)return Ce(i);if("modalityLutModule"===t)return{rescaleIntercept:i.floatString("x00281052"),rescaleSlope:i.floatString("x00281053"),rescaleType:i.string("x00281054"),modalityLUTSequence:_e(i.uint16("x00280103"),i.elements.x00283000)};if("voiLutModule"===t){const e=Ae(i);return{windowCenter:Ee(i,"x00281050",1),windowWidth:Ee(i,"x00281051",1),voiLUTSequence:_e(e,i.elements.x00283010)}}if("sopCommonModule"===t)return{sopClassUID:i.string("x00080016"),sopInstanceUID:i.string("x00080018")};if("petIsotopeModule"===t){const e=i.elements.x00540016;if(void 0===e)return;const t=e.items[0].dataSet;return{radiopharmaceuticalInfo:{radiopharmaceuticalStartTime:n.parseTM(t.string("x00181072")||""),radionuclideTotalDose:t.floatString("x00181074"),radionuclideHalfLife:t.floatString("x00181075")}}}return"overlayPlaneModule"===t?function(e){const t=[];for(let r=0;r<=30;r+=2){let n=`x60${r.toString(16)}`;4===n.length&&(n=`x600${r.toString(16)}`);const a=e.elements[`${n}3000`];if(!a)continue;const o=[];for(let t=0;t<a.length;t++)for(let r=0;r<8;r++){const n=e.byteArray[a.dataOffset+t];o[8*t+r]=n>>r&1}t.push({rows:e.uint16(`${n}0010`),columns:e.uint16(`${n}0011`),type:e.string(`${n}0040`),x:e.int16(`${n}0050`,1)-1,y:e.int16(`${n}0050`,0)-1,pixelData:o,description:e.string(`${n}0022`),label:e.string(`${n}1500`),roiArea:e.string(`${n}1301`),roiMean:e.string(`${n}1302`),roiStandardDeviation:e.string(`${n}1303`)})}return{overlays:t}}(i):"transferSyntax"===t?{transferSyntaxUID:i.string("x00020010")}:"petSeriesModule"===t?{correctedImage:i.string("x00280051"),units:i.string("x00541001"),decayCorrection:i.string("x00541102")}:"petImageModule"===t?{frameReferenceTime:i.floatString(i.string("x00541300")||""),actualFrameDuration:i.intString(i.string("x00181242"))}:"instance"===t?D(r,e,P):void 0}};let Je=[];const Xe={add:function(e){return"dicomfile:"+(Je.push(e)-1)},get:function(e){return Je[e]},remove:function(e){Je[e]=void 0},purge:function(){Je=[]}};var et=a(713);function tt(e,t){const{dicomParser:r}=ht;if(e.elements.x7fe00010&&e.elements.x7fe00010.basicOffsetTable.length)return r.readEncapsulatedImageFrame(e,e.elements.x7fe00010,t);if(function(e){return e.intString("x00280008")!==e.elements.x7fe00010.fragments.length}(e)){const n=r.createJPEGBasicOffsetTable(e,e.elements.x7fe00010);return r.readEncapsulatedImageFrame(e,e.elements.x7fe00010,t,n)}const n=e.elements.x7fe00010.fragments,a=new et.ByteStream(e.byteArrayParser,e.byteArray,e.elements.x7fe00010.dataOffset),o=(0,et.readSequenceItem)(a);if("xfffee000"!==o.tag)throw"dicomParser.readEncapsulatedPixelData: missing basic offset table xfffee000";a.seek(o.length);const i=a.position;if(t+1>n.length)throw"dicomParser.readEncapsulatedPixelData: frame exceeds number of fragments";const s=i+n[t].offset+8,l=n[t].length;return new Uint8Array(a.byteArray.buffer.slice(a.byteArray.byteOffset+s,a.byteArray.byteOffset+s+l))}function rt(e,t){return e&1<<t}const nt=function(e,t,r){const n=new Uint8Array(r);for(let a=0;a<r;a++){const r=e[Math.floor(a/8)+t],o=a%8;n[a]=rt(r,o)?1:0}return n};const at=function(e,t){const r=e.elements.x7fe00010||e.elements.x7fe00008,n=e.uint16("x00280100"),a=e.uint16("x00280010"),o=e.uint16("x00280011");let i=e.uint16("x00280002");"YBR_FULL_422"===e.string("x00280004")&&(i=2,console.warn("Using SamplesPerPixel of 2 for YBR_FULL_422 photometric interpretation.\n See http://dicom.nema.org/medical/dicom/current/output/chtml/part03/sect_C.7.6.3.html for more information."));const s=r.dataOffset,l=a*o*i;let c;if(8===n){if(c=s+t*l,c>=e.byteArray.length)throw new Error("frame exceeds size of pixelData");return new Uint8Array(e.byteArray.buffer.slice(c,c+l))}if(16===n){if(c=s+t*l*2,c>=e.byteArray.length)throw new Error("frame exceeds size of pixelData");return new Uint8Array(e.byteArray.buffer.slice(c,c+2*l))}if(1===n){if(c=s+t*l*.125,c>=e.byteArray.length)throw new Error("frame exceeds size of pixelData");return nt(e.byteArray,c,l)}if(32===n){if(c=s+t*l*4,c>=e.byteArray.length)throw new Error("frame exceeds size of pixelData");return new Uint8Array(e.byteArray.buffer.slice(c,c+4*l))}throw new Error("unsupported pixel format")};const ot=function(e){const t=Me(e),r=parseInt(t.url,10),n=Xe.get(r);return new Promise(((e,t)=>{const r=new FileReader;r.onload=t=>{const r=t.target.result;e(r)},r.onerror=t,r.readAsArrayBuffer(n)}))};const it=function(e,t=0){const r=e.elements.x7fe00010||e.elements.x7fe00008;return r?r.encapsulatedPixelData?tt(e,t):at(e,t):null};function st(e,t,r=0,n,a,o){const i=(new Date).getTime(),s={cancelFn:void 0,promise:void 0};return s.promise=new Promise(((l,c)=>{e.then((e=>{const u=it(e,r),d=e.string("x00020010"),f=(new Date).getTime(),m=xe(t,u,d,a);!function(e,t){e.decache=function(){const e=Me(t);Ge.unload(e.url)}}(s,t),m.then((t=>{t.data=e,t.sharedCacheKey=n;const r=(new Date).getTime();t.loadTimeInMS=f-i,t.totalTimeInMS=r-i,void 0!==o&&void 0!==o.imageDoneCallback&&o.imageDoneCallback(t),l(t)}),(function(t){c({error:t,dataSet:e})}))}),(function(e){c({error:e})}))})),s}function lt(e){return"dicomweb"===e||"wadouri"===e?O:"dicomfile"===e?ot:void 0}function ct(e,t={}){const r=Me(e);let n=(t=Object.assign({},t)).loader;if(void 0===n?n=lt(r.scheme):delete t.loader,Ge.isLoaded(r.url)){return function(e,t,r=0,n,a){const o=(new Date).getTime();return{promise:new Promise(((i,s)=>{const l=(new Date).getTime();let c;try{const n=it(e,r),o=e.string("x00020010");c=xe(t,n,o,a)}catch(t){return void s({error:t,dataSet:e})}c.then((t=>{t.data=e,t.sharedCacheKey=n;const r=(new Date).getTime();t.loadTimeInMS=l-o,t.totalTimeInMS=r-o,i(t)}),s)})),cancelFn:void 0}}(Ge.get(r.url,n,e),e,r.pixelDataFrame,r.url,t)}return st(Ge.load(r.url,n,e),e,r.frame,r.url,t)}const ut={metaData:{getImagePixelModule:Ce,getLUTs:_e,getModalityLUTOutputPixelRepresentation:Ae,getNumberValues:Ee,metaDataProvider:Ke},dataSetCacheManager:Ge,fileManager:Xe,getEncapsulatedImageFrame:tt,getUncompressedImageFrame:at,loadFileRequest:ot,loadImageFromPromise:st,getLoaderForScheme:lt,loadImage:ct,parseImageId:Me,unpackBinaryFrame:nt,register:function(e){e.registerImageLoader("dicomweb",ct),e.registerImageLoader("wadouri",ct),e.registerImageLoader("dicomfile",ct),e.metaData.addProvider(Ke)}};const dt=function(e){Te.register(e),ut.register(e)};let ft,mt;const gt={set cornerstone(e){ft=e,dt(ft)},get cornerstone(){if(!ft){if(ft=window&&window.cornerstone,!ft)throw new Error("cornerstoneDICOMImageLoader requires a copy of Cornerstone to work properly. Please add cornerstoneDICOMImageLoader.external.cornerstone = cornerstone; to your application.");dt(ft)}return ft},set dicomParser(e){mt=e},get dicomParser(){if(!mt){if(!window||!window.dicomParser)throw new Error("cornerstoneDICOMImageLoader requires a copy of dicomParser to work properly. Please add cornerstoneDICOMImageLoader.external.dicomParser = dicomParser; to your application.");mt=window.dicomParser}return mt}},ht=gt;function pt(e,t){const r=e.length,n=new Uint8ClampedArray(r);for(let a=0;a<r;++a)n[a]=e[a]>>t;return n}function bt(e,t,r){const n=e.columns*e.rows,a=e.pixelData;let o=e.redPaletteColorLookupTableData;o||(o=ht.cornerstone.metaData.get("imagePixelModule",e.imageId)?.redPaletteColorLookupTableData);let i=e.greenPaletteColorLookupTableData;i||(i=ht.cornerstone.metaData.get("imagePixelModule",e.imageId)?.greenPaletteColorLookupTableData);let s=e.bluePaletteColorLookupTableData;if(s||(s=ht.cornerstone.metaData.get("imagePixelModule",e.imageId)?.bluePaletteColorLookupTableData),!o||!i||!s)throw new Error("The image does not have a complete color palette. R, G, and B palette data are required.");const l=e.redPaletteColorLookupTableData.length;let c=0,u=0;const d=e.redPaletteColorLookupTableDescriptor[1],f=8===e.redPaletteColorLookupTableDescriptor[2]?0:8,m=pt(o,f),g=pt(i,f),h=pt(s,f);if(r)for(let e=0;e<n;++e){let e=a[c++];e<d?e=0:e>d+l-1?e=l-1:e-=d,t[u++]=m[e],t[u++]=g[e],t[u++]=h[e],t[u++]=255}else for(let e=0;e<n;++e){let e=a[c++];e<d?e=0:e>d+l-1?e=l-1:e-=d,t[u++]=m[e],t[u++]=g[e],t[u++]=h[e]}}const xt=function(e){E(e)};const wt=function(e,t){if(t=t||e.transferSyntax,8===e.bitsAllocated&&"1.2.840.10008.1.2.4.50"===t&&(3===e.samplesPerPixel||4===e.samplesPerPixel))return!0},yt={convertRGBColorByPixel:e,convertRGBColorByPlane:t,convertYBRFullByPixel:r,convertYBRFullByPlane:n,convertPALETTECOLOR:bt,wadouri:ut,wadors:Te,configure:xt,convertColorSpace:H,createImage:xe,decodeImageFrame:fe,decodeJPEGBaseline8BitColor:Q,getImageFrame:me,getPixelData:G,getMinMax:V,isColorImage:ge,isJPEGBaseline8BitColor:wt,webWorkerManager:ce,internal:R,external:gt}})(),o})()));
|
|
117734
|
+
!function(e,t){ true?module.exports=t(__webpack_require__(56959),__webpack_require__(56660)):0}(this,((e,t)=>(()=>{"use strict";var r={578:(e,t,r)=>{const n=r(823),a=r(187),o=r(592),i=r(604),s=r(249),l=r(968),c=Object.prototype.toString,{Z_NO_FLUSH:u,Z_FINISH:d,Z_OK:f,Z_STREAM_END:m,Z_NEED_DICT:g,Z_STREAM_ERROR:h,Z_DATA_ERROR:p,Z_MEM_ERROR:b}=r(684);function x(e){this.options=a.assign({chunkSize:65536,windowBits:15,to:""},e||{});const t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(t.windowBits>=0&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&0==(15&t.windowBits)&&(t.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new s,this.strm.avail_out=0;let r=n.inflateInit2(this.strm,t.windowBits);if(r!==f)throw new Error(i[r]);if(this.header=new l,n.inflateGetHeader(this.strm,this.header),t.dictionary&&("string"==typeof t.dictionary?t.dictionary=o.string2buf(t.dictionary):"[object ArrayBuffer]"===c.call(t.dictionary)&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(r=n.inflateSetDictionary(this.strm,t.dictionary),r!==f)))throw new Error(i[r])}function w(e,t){const r=new x(t);if(r.push(e),r.err)throw r.msg||i[r.err];return r.result}x.prototype.push=function(e,t){const r=this.strm,a=this.options.chunkSize,i=this.options.dictionary;let s,l,x;if(this.ended)return!1;for(l=t===~~t?t:!0===t?d:u,"[object ArrayBuffer]"===c.call(e)?r.input=new Uint8Array(e):r.input=e,r.next_in=0,r.avail_in=r.input.length;;){for(0===r.avail_out&&(r.output=new Uint8Array(a),r.next_out=0,r.avail_out=a),s=n.inflate(r,l),s===g&&i&&(s=n.inflateSetDictionary(r,i),s===f?s=n.inflate(r,l):s===p&&(s=g));r.avail_in>0&&s===m&&r.state.wrap>0&&0!==e[r.next_in];)n.inflateReset(r),s=n.inflate(r,l);switch(s){case h:case p:case g:case b:return this.onEnd(s),this.ended=!0,!1}if(x=r.avail_out,r.next_out&&(0===r.avail_out||s===m))if("string"===this.options.to){let e=o.utf8border(r.output,r.next_out),t=r.next_out-e,n=o.buf2string(r.output,e);r.next_out=t,r.avail_out=a-t,t&&r.output.set(r.output.subarray(e,e+t),0),this.onData(n)}else this.onData(r.output.length===r.next_out?r.output:r.output.subarray(0,r.next_out));if(s!==f||0!==x){if(s===m)return s=n.inflateEnd(this.strm),this.onEnd(s),this.ended=!0,!0;if(0===r.avail_in)break}}return!0},x.prototype.onData=function(e){this.chunks.push(e)},x.prototype.onEnd=function(e){e===f&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=a.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},e.exports.Hq=function(e,t){return(t=t||{}).raw=!0,w(e,t)},r(684)},187:e=>{const t=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);e.exports.assign=function(e){const r=Array.prototype.slice.call(arguments,1);for(;r.length;){const n=r.shift();if(n){if("object"!=typeof n)throw new TypeError(n+"must be non-object");for(const r in n)t(n,r)&&(e[r]=n[r])}}return e},e.exports.flattenChunks=e=>{let t=0;for(let r=0,n=e.length;r<n;r++)t+=e[r].length;const r=new Uint8Array(t);for(let t=0,n=0,a=e.length;t<a;t++){let a=e[t];r.set(a,n),n+=a.length}return r}},592:e=>{let t=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(e){t=!1}const r=new Uint8Array(256);for(let e=0;e<256;e++)r[e]=e>=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;r[254]=r[254]=1,e.exports.string2buf=e=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(e);let t,r,n,a,o,i=e.length,s=0;for(a=0;a<i;a++)r=e.charCodeAt(a),55296==(64512&r)&&a+1<i&&(n=e.charCodeAt(a+1),56320==(64512&n)&&(r=65536+(r-55296<<10)+(n-56320),a++)),s+=r<128?1:r<2048?2:r<65536?3:4;for(t=new Uint8Array(s),o=0,a=0;o<s;a++)r=e.charCodeAt(a),55296==(64512&r)&&a+1<i&&(n=e.charCodeAt(a+1),56320==(64512&n)&&(r=65536+(r-55296<<10)+(n-56320),a++)),r<128?t[o++]=r:r<2048?(t[o++]=192|r>>>6,t[o++]=128|63&r):r<65536?(t[o++]=224|r>>>12,t[o++]=128|r>>>6&63,t[o++]=128|63&r):(t[o++]=240|r>>>18,t[o++]=128|r>>>12&63,t[o++]=128|r>>>6&63,t[o++]=128|63&r);return t};e.exports.buf2string=(e,n)=>{const a=n||e.length;if("function"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(e.subarray(0,n));let o,i;const s=new Array(2*a);for(i=0,o=0;o<a;){let t=e[o++];if(t<128){s[i++]=t;continue}let n=r[t];if(n>4)s[i++]=65533,o+=n-1;else{for(t&=2===n?31:3===n?15:7;n>1&&o<a;)t=t<<6|63&e[o++],n--;n>1?s[i++]=65533:t<65536?s[i++]=t:(t-=65536,s[i++]=55296|t>>10&1023,s[i++]=56320|1023&t)}}return((e,r)=>{if(r<65534&&e.subarray&&t)return String.fromCharCode.apply(null,e.length===r?e:e.subarray(0,r));let n="";for(let t=0;t<r;t++)n+=String.fromCharCode(e[t]);return n})(s,i)},e.exports.utf8border=(e,t)=>{(t=t||e.length)>e.length&&(t=e.length);let n=t-1;for(;n>=0&&128==(192&e[n]);)n--;return n<0||0===n?t:n+r[e[n]]>t?n:t}},693:e=>{e.exports=(e,t,r,n)=>{let a=65535&e|0,o=e>>>16&65535|0,i=0;for(;0!==r;){i=r>2e3?2e3:r,r-=i;do{a=a+t[n++]|0,o=o+a|0}while(--i);a%=65521,o%=65521}return a|o<<16|0}},684:e=>{e.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},863:e=>{const t=new Uint32Array((()=>{let e,t=[];for(var r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t})());e.exports=(e,r,n,a)=>{const o=t,i=a+n;e^=-1;for(let t=a;t<i;t++)e=e>>>8^o[255&(e^r[t])];return-1^e}},968:e=>{e.exports=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}},365:e=>{const t=16209;e.exports=function(e,r){let n,a,o,i,s,l,c,u,d,f,m,g,h,p,b,x,w,y,k,v,S,D,T,P;const I=e.state;n=e.next_in,T=e.input,a=n+(e.avail_in-5),o=e.next_out,P=e.output,i=o-(r-e.avail_out),s=o+(e.avail_out-257),l=I.dmax,c=I.wsize,u=I.whave,d=I.wnext,f=I.window,m=I.hold,g=I.bits,h=I.lencode,p=I.distcode,b=(1<<I.lenbits)-1,x=(1<<I.distbits)-1;e:do{g<15&&(m+=T[n++]<<g,g+=8,m+=T[n++]<<g,g+=8),w=h[m&b];t:for(;;){if(y=w>>>24,m>>>=y,g-=y,y=w>>>16&255,0===y)P[o++]=65535&w;else{if(!(16&y)){if(0==(64&y)){w=h[(65535&w)+(m&(1<<y)-1)];continue t}if(32&y){I.mode=16191;break e}e.msg="invalid literal/length code",I.mode=t;break e}k=65535&w,y&=15,y&&(g<y&&(m+=T[n++]<<g,g+=8),k+=m&(1<<y)-1,m>>>=y,g-=y),g<15&&(m+=T[n++]<<g,g+=8,m+=T[n++]<<g,g+=8),w=p[m&x];r:for(;;){if(y=w>>>24,m>>>=y,g-=y,y=w>>>16&255,!(16&y)){if(0==(64&y)){w=p[(65535&w)+(m&(1<<y)-1)];continue r}e.msg="invalid distance code",I.mode=t;break e}if(v=65535&w,y&=15,g<y&&(m+=T[n++]<<g,g+=8,g<y&&(m+=T[n++]<<g,g+=8)),v+=m&(1<<y)-1,v>l){e.msg="invalid distance too far back",I.mode=t;break e}if(m>>>=y,g-=y,y=o-i,v>y){if(y=v-y,y>u&&I.sane){e.msg="invalid distance too far back",I.mode=t;break e}if(S=0,D=f,0===d){if(S+=c-y,y<k){k-=y;do{P[o++]=f[S++]}while(--y);S=o-v,D=P}}else if(d<y){if(S+=c+d-y,y-=d,y<k){k-=y;do{P[o++]=f[S++]}while(--y);if(S=0,d<k){y=d,k-=y;do{P[o++]=f[S++]}while(--y);S=o-v,D=P}}}else if(S+=d-y,y<k){k-=y;do{P[o++]=f[S++]}while(--y);S=o-v,D=P}for(;k>2;)P[o++]=D[S++],P[o++]=D[S++],P[o++]=D[S++],k-=3;k&&(P[o++]=D[S++],k>1&&(P[o++]=D[S++]))}else{S=o-v;do{P[o++]=P[S++],P[o++]=P[S++],P[o++]=P[S++],k-=3}while(k>2);k&&(P[o++]=P[S++],k>1&&(P[o++]=P[S++]))}break}}break}}while(n<a&&o<s);k=g>>3,n-=k,g-=k<<3,m&=(1<<g)-1,e.next_in=n,e.next_out=o,e.avail_in=n<a?a-n+5:5-(n-a),e.avail_out=o<s?s-o+257:257-(o-s),I.hold=m,I.bits=g}},823:(e,t,r)=>{const n=r(693),a=r(863),o=r(365),i=r(446),{Z_FINISH:s,Z_BLOCK:l,Z_TREES:c,Z_OK:u,Z_STREAM_END:d,Z_NEED_DICT:f,Z_STREAM_ERROR:m,Z_DATA_ERROR:g,Z_MEM_ERROR:h,Z_BUF_ERROR:p,Z_DEFLATED:b}=r(684),x=16180,w=16190,y=16191,k=16192,v=16194,S=16199,D=16200,T=16206,P=16209,I=16210,C=e=>(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24);function L(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const _=e=>{if(!e)return 1;const t=e.state;return!t||t.strm!==e||t.mode<x||t.mode>16211?1:0},A=e=>{if(_(e))return m;const t=e.state;return e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=x,t.last=0,t.havedict=0,t.flags=-1,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new Int32Array(852),t.distcode=t.distdyn=new Int32Array(592),t.sane=1,t.back=-1,u},E=e=>{if(_(e))return m;const t=e.state;return t.wsize=0,t.whave=0,t.wnext=0,A(e)},M=(e,t)=>{let r;if(_(e))return m;const n=e.state;return t<0?(r=0,t=-t):(r=5+(t>>4),t<48&&(t&=15)),t&&(t<8||t>15)?m:(null!==n.window&&n.wbits!==t&&(n.window=null),n.wrap=r,n.wbits=t,E(e))},O=(e,t)=>{if(!e)return m;const r=new L;e.state=r,r.strm=e,r.window=null,r.mode=x;const n=M(e,t);return n!==u&&(e.state=null),n};let R,F,B=!0;const U=e=>{if(B){R=new Int32Array(512),F=new Int32Array(32);let t=0;for(;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(i(1,e.lens,0,288,R,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;i(2,e.lens,0,32,F,0,e.work,{bits:5}),B=!1}e.lencode=R,e.lenbits=9,e.distcode=F,e.distbits=5},N=(e,t,r,n)=>{let a;const o=e.state;return null===o.window&&(o.wsize=1<<o.wbits,o.wnext=0,o.whave=0,o.window=new Uint8Array(o.wsize)),n>=o.wsize?(o.window.set(t.subarray(r-o.wsize,r),0),o.wnext=0,o.whave=o.wsize):(a=o.wsize-o.wnext,a>n&&(a=n),o.window.set(t.subarray(r-n,r-n+a),o.wnext),(n-=a)?(o.window.set(t.subarray(r-n,r),0),o.wnext=n,o.whave=o.wsize):(o.wnext+=a,o.wnext===o.wsize&&(o.wnext=0),o.whave<o.wsize&&(o.whave+=a))),0};e.exports.inflateReset=E,e.exports.inflateReset2=M,e.exports.inflateResetKeep=A,e.exports.inflateInit=e=>O(e,15),e.exports.inflateInit2=O,e.exports.inflate=(e,t)=>{let r,L,A,E,M,O,R,F,B,j,$,W,Z,q,G,V,z,H,Y,Q,K,J,X=0;const ee=new Uint8Array(4);let te,re;const ne=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(_(e)||!e.output||!e.input&&0!==e.avail_in)return m;r=e.state,r.mode===y&&(r.mode=k),M=e.next_out,A=e.output,R=e.avail_out,E=e.next_in,L=e.input,O=e.avail_in,F=r.hold,B=r.bits,j=O,$=R,J=u;e:for(;;)switch(r.mode){case x:if(0===r.wrap){r.mode=k;break}for(;B<16;){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}if(2&r.wrap&&35615===F){0===r.wbits&&(r.wbits=15),r.check=0,ee[0]=255&F,ee[1]=F>>>8&255,r.check=a(r.check,ee,2,0),F=0,B=0,r.mode=16181;break}if(r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&F)<<8)+(F>>8))%31){e.msg="incorrect header check",r.mode=P;break}if((15&F)!==b){e.msg="unknown compression method",r.mode=P;break}if(F>>>=4,B-=4,K=8+(15&F),0===r.wbits&&(r.wbits=K),K>15||K>r.wbits){e.msg="invalid window size",r.mode=P;break}r.dmax=1<<r.wbits,r.flags=0,e.adler=r.check=1,r.mode=512&F?16189:y,F=0,B=0;break;case 16181:for(;B<16;){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}if(r.flags=F,(255&r.flags)!==b){e.msg="unknown compression method",r.mode=P;break}if(57344&r.flags){e.msg="unknown header flags set",r.mode=P;break}r.head&&(r.head.text=F>>8&1),512&r.flags&&4&r.wrap&&(ee[0]=255&F,ee[1]=F>>>8&255,r.check=a(r.check,ee,2,0)),F=0,B=0,r.mode=16182;case 16182:for(;B<32;){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}r.head&&(r.head.time=F),512&r.flags&&4&r.wrap&&(ee[0]=255&F,ee[1]=F>>>8&255,ee[2]=F>>>16&255,ee[3]=F>>>24&255,r.check=a(r.check,ee,4,0)),F=0,B=0,r.mode=16183;case 16183:for(;B<16;){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}r.head&&(r.head.xflags=255&F,r.head.os=F>>8),512&r.flags&&4&r.wrap&&(ee[0]=255&F,ee[1]=F>>>8&255,r.check=a(r.check,ee,2,0)),F=0,B=0,r.mode=16184;case 16184:if(1024&r.flags){for(;B<16;){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}r.length=F,r.head&&(r.head.extra_len=F),512&r.flags&&4&r.wrap&&(ee[0]=255&F,ee[1]=F>>>8&255,r.check=a(r.check,ee,2,0)),F=0,B=0}else r.head&&(r.head.extra=null);r.mode=16185;case 16185:if(1024&r.flags&&(W=r.length,W>O&&(W=O),W&&(r.head&&(K=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Uint8Array(r.head.extra_len)),r.head.extra.set(L.subarray(E,E+W),K)),512&r.flags&&4&r.wrap&&(r.check=a(r.check,L,W,E)),O-=W,E+=W,r.length-=W),r.length))break e;r.length=0,r.mode=16186;case 16186:if(2048&r.flags){if(0===O)break e;W=0;do{K=L[E+W++],r.head&&K&&r.length<65536&&(r.head.name+=String.fromCharCode(K))}while(K&&W<O);if(512&r.flags&&4&r.wrap&&(r.check=a(r.check,L,W,E)),O-=W,E+=W,K)break e}else r.head&&(r.head.name=null);r.length=0,r.mode=16187;case 16187:if(4096&r.flags){if(0===O)break e;W=0;do{K=L[E+W++],r.head&&K&&r.length<65536&&(r.head.comment+=String.fromCharCode(K))}while(K&&W<O);if(512&r.flags&&4&r.wrap&&(r.check=a(r.check,L,W,E)),O-=W,E+=W,K)break e}else r.head&&(r.head.comment=null);r.mode=16188;case 16188:if(512&r.flags){for(;B<16;){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}if(4&r.wrap&&F!==(65535&r.check)){e.msg="header crc mismatch",r.mode=P;break}F=0,B=0}r.head&&(r.head.hcrc=r.flags>>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=y;break;case 16189:for(;B<32;){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}e.adler=r.check=C(F),F=0,B=0,r.mode=w;case w:if(0===r.havedict)return e.next_out=M,e.avail_out=R,e.next_in=E,e.avail_in=O,r.hold=F,r.bits=B,f;e.adler=r.check=1,r.mode=y;case y:if(t===l||t===c)break e;case k:if(r.last){F>>>=7&B,B-=7&B,r.mode=T;break}for(;B<3;){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}switch(r.last=1&F,F>>>=1,B-=1,3&F){case 0:r.mode=16193;break;case 1:if(U(r),r.mode=S,t===c){F>>>=2,B-=2;break e}break;case 2:r.mode=16196;break;case 3:e.msg="invalid block type",r.mode=P}F>>>=2,B-=2;break;case 16193:for(F>>>=7&B,B-=7&B;B<32;){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}if((65535&F)!=(F>>>16^65535)){e.msg="invalid stored block lengths",r.mode=P;break}if(r.length=65535&F,F=0,B=0,r.mode=v,t===c)break e;case v:r.mode=16195;case 16195:if(W=r.length,W){if(W>O&&(W=O),W>R&&(W=R),0===W)break e;A.set(L.subarray(E,E+W),M),O-=W,E+=W,R-=W,M+=W,r.length-=W;break}r.mode=y;break;case 16196:for(;B<14;){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}if(r.nlen=257+(31&F),F>>>=5,B-=5,r.ndist=1+(31&F),F>>>=5,B-=5,r.ncode=4+(15&F),F>>>=4,B-=4,r.nlen>286||r.ndist>30){e.msg="too many length or distance symbols",r.mode=P;break}r.have=0,r.mode=16197;case 16197:for(;r.have<r.ncode;){for(;B<3;){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}r.lens[ne[r.have++]]=7&F,F>>>=3,B-=3}for(;r.have<19;)r.lens[ne[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,te={bits:r.lenbits},J=i(0,r.lens,0,19,r.lencode,0,r.work,te),r.lenbits=te.bits,J){e.msg="invalid code lengths set",r.mode=P;break}r.have=0,r.mode=16198;case 16198:for(;r.have<r.nlen+r.ndist;){for(;X=r.lencode[F&(1<<r.lenbits)-1],G=X>>>24,V=X>>>16&255,z=65535&X,!(G<=B);){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}if(z<16)F>>>=G,B-=G,r.lens[r.have++]=z;else{if(16===z){for(re=G+2;B<re;){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}if(F>>>=G,B-=G,0===r.have){e.msg="invalid bit length repeat",r.mode=P;break}K=r.lens[r.have-1],W=3+(3&F),F>>>=2,B-=2}else if(17===z){for(re=G+3;B<re;){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}F>>>=G,B-=G,K=0,W=3+(7&F),F>>>=3,B-=3}else{for(re=G+7;B<re;){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}F>>>=G,B-=G,K=0,W=11+(127&F),F>>>=7,B-=7}if(r.have+W>r.nlen+r.ndist){e.msg="invalid bit length repeat",r.mode=P;break}for(;W--;)r.lens[r.have++]=K}}if(r.mode===P)break;if(0===r.lens[256]){e.msg="invalid code -- missing end-of-block",r.mode=P;break}if(r.lenbits=9,te={bits:r.lenbits},J=i(1,r.lens,0,r.nlen,r.lencode,0,r.work,te),r.lenbits=te.bits,J){e.msg="invalid literal/lengths set",r.mode=P;break}if(r.distbits=6,r.distcode=r.distdyn,te={bits:r.distbits},J=i(2,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,te),r.distbits=te.bits,J){e.msg="invalid distances set",r.mode=P;break}if(r.mode=S,t===c)break e;case S:r.mode=D;case D:if(O>=6&&R>=258){e.next_out=M,e.avail_out=R,e.next_in=E,e.avail_in=O,r.hold=F,r.bits=B,o(e,$),M=e.next_out,A=e.output,R=e.avail_out,E=e.next_in,L=e.input,O=e.avail_in,F=r.hold,B=r.bits,r.mode===y&&(r.back=-1);break}for(r.back=0;X=r.lencode[F&(1<<r.lenbits)-1],G=X>>>24,V=X>>>16&255,z=65535&X,!(G<=B);){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}if(V&&0==(240&V)){for(H=G,Y=V,Q=z;X=r.lencode[Q+((F&(1<<H+Y)-1)>>H)],G=X>>>24,V=X>>>16&255,z=65535&X,!(H+G<=B);){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}F>>>=H,B-=H,r.back+=H}if(F>>>=G,B-=G,r.back+=G,r.length=z,0===V){r.mode=16205;break}if(32&V){r.back=-1,r.mode=y;break}if(64&V){e.msg="invalid literal/length code",r.mode=P;break}r.extra=15&V,r.mode=16201;case 16201:if(r.extra){for(re=r.extra;B<re;){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}r.length+=F&(1<<r.extra)-1,F>>>=r.extra,B-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=16202;case 16202:for(;X=r.distcode[F&(1<<r.distbits)-1],G=X>>>24,V=X>>>16&255,z=65535&X,!(G<=B);){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}if(0==(240&V)){for(H=G,Y=V,Q=z;X=r.distcode[Q+((F&(1<<H+Y)-1)>>H)],G=X>>>24,V=X>>>16&255,z=65535&X,!(H+G<=B);){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}F>>>=H,B-=H,r.back+=H}if(F>>>=G,B-=G,r.back+=G,64&V){e.msg="invalid distance code",r.mode=P;break}r.offset=z,r.extra=15&V,r.mode=16203;case 16203:if(r.extra){for(re=r.extra;B<re;){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}r.offset+=F&(1<<r.extra)-1,F>>>=r.extra,B-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg="invalid distance too far back",r.mode=P;break}r.mode=16204;case 16204:if(0===R)break e;if(W=$-R,r.offset>W){if(W=r.offset-W,W>r.whave&&r.sane){e.msg="invalid distance too far back",r.mode=P;break}W>r.wnext?(W-=r.wnext,Z=r.wsize-W):Z=r.wnext-W,W>r.length&&(W=r.length),q=r.window}else q=A,Z=M-r.offset,W=r.length;W>R&&(W=R),R-=W,r.length-=W;do{A[M++]=q[Z++]}while(--W);0===r.length&&(r.mode=D);break;case 16205:if(0===R)break e;A[M++]=r.length,R--,r.mode=D;break;case T:if(r.wrap){for(;B<32;){if(0===O)break e;O--,F|=L[E++]<<B,B+=8}if($-=R,e.total_out+=$,r.total+=$,4&r.wrap&&$&&(e.adler=r.check=r.flags?a(r.check,A,$,M-$):n(r.check,A,$,M-$)),$=R,4&r.wrap&&(r.flags?F:C(F))!==r.check){e.msg="incorrect data check",r.mode=P;break}F=0,B=0}r.mode=16207;case 16207:if(r.wrap&&r.flags){for(;B<32;){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}if(4&r.wrap&&F!==(4294967295&r.total)){e.msg="incorrect length check",r.mode=P;break}F=0,B=0}r.mode=16208;case 16208:J=d;break e;case P:J=g;break e;case I:return h;default:return m}return e.next_out=M,e.avail_out=R,e.next_in=E,e.avail_in=O,r.hold=F,r.bits=B,(r.wsize||$!==e.avail_out&&r.mode<P&&(r.mode<T||t!==s))&&N(e,e.output,e.next_out,$-e.avail_out)?(r.mode=I,h):(j-=e.avail_in,$-=e.avail_out,e.total_in+=j,e.total_out+=$,r.total+=$,4&r.wrap&&$&&(e.adler=r.check=r.flags?a(r.check,A,$,e.next_out-$):n(r.check,A,$,e.next_out-$)),e.data_type=r.bits+(r.last?64:0)+(r.mode===y?128:0)+(r.mode===S||r.mode===v?256:0),(0===j&&0===$||t===s)&&J===u&&(J=p),J)},e.exports.inflateEnd=e=>{if(_(e))return m;let t=e.state;return t.window&&(t.window=null),e.state=null,u},e.exports.inflateGetHeader=(e,t)=>{if(_(e))return m;const r=e.state;return 0==(2&r.wrap)?m:(r.head=t,t.done=!1,u)},e.exports.inflateSetDictionary=(e,t)=>{const r=t.length;let a,o,i;return _(e)?m:(a=e.state,0!==a.wrap&&a.mode!==w?m:a.mode===w&&(o=1,o=n(o,t,r,0),o!==a.check)?g:(i=N(e,t,r,r),i?(a.mode=I,h):(a.havedict=1,u)))},e.exports.inflateInfo="pako inflate (from Nodeca project)"},446:e=>{const t=15,r=new Uint16Array([3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0]),n=new Uint8Array([16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78]),a=new Uint16Array([1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0]),o=new Uint8Array([16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64]);e.exports=(e,i,s,l,c,u,d,f)=>{const m=f.bits;let g,h,p,b,x,w,y=0,k=0,v=0,S=0,D=0,T=0,P=0,I=0,C=0,L=0,_=null;const A=new Uint16Array(16),E=new Uint16Array(16);let M,O,R,F=null;for(y=0;y<=t;y++)A[y]=0;for(k=0;k<l;k++)A[i[s+k]]++;for(D=m,S=t;S>=1&&0===A[S];S--);if(D>S&&(D=S),0===S)return c[u++]=20971520,c[u++]=20971520,f.bits=1,0;for(v=1;v<S&&0===A[v];v++);for(D<v&&(D=v),I=1,y=1;y<=t;y++)if(I<<=1,I-=A[y],I<0)return-1;if(I>0&&(0===e||1!==S))return-1;for(E[1]=0,y=1;y<t;y++)E[y+1]=E[y]+A[y];for(k=0;k<l;k++)0!==i[s+k]&&(d[E[i[s+k]]++]=k);if(0===e?(_=F=d,w=20):1===e?(_=r,F=n,w=257):(_=a,F=o,w=0),L=0,k=0,y=v,x=u,T=D,P=0,p=-1,C=1<<D,b=C-1,1===e&&C>852||2===e&&C>592)return 1;for(;;){M=y-P,d[k]+1<w?(O=0,R=d[k]):d[k]>=w?(O=F[d[k]-w],R=_[d[k]-w]):(O=96,R=0),g=1<<y-P,h=1<<T,v=h;do{h-=g,c[x+(L>>P)+h]=M<<24|O<<16|R|0}while(0!==h);for(g=1<<y-1;L&g;)g>>=1;if(0!==g?(L&=g-1,L+=g):L=0,k++,0==--A[y]){if(y===S)break;y=i[s+d[k]]}if(y>D&&(L&b)!==p){for(0===P&&(P=D),x+=v,T=y-P,I=1<<T;T+P<S&&(I-=A[T+P],!(I<=0));)T++,I<<=1;if(C+=1<<T,1===e&&C>852||2===e&&C>592)return 1;p=L&b,c[p]=D<<24|T<<16|x-u|0}}return 0!==L&&(c[x+L]=y-P<<24|64<<16|0),f.bits=D,0}},604:e=>{e.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},249:e=>{e.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},464:t=>{t.exports=e},713:e=>{e.exports=t}},n={};function a(e){var t=n[e];if(void 0!==t)return t.exports;var o=n[e]={exports:{}};return r[e](o,o.exports,a),o.exports}a.d=(e,t)=>{for(var r in t)a.o(t,r)&&!a.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),a.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e;a.g.importScripts&&(e=a.g.location+"");var t=a.g.document;if(!e&&t&&(t.currentScript&&(e=t.currentScript.src),!e)){var r=t.getElementsByTagName("script");if(r.length)for(var n=r.length-1;n>-1&&!e;)e=r[n--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),a.p=e})();var o={};return(()=>{function e(e,t,r){if(void 0===e)throw new Error("decodeRGB: rgbBuffer must not be undefined");if(e.length%3!=0)throw new Error("decodeRGB: rgbBuffer length must be divisible by 3");const n=e.length/3;let a=0,o=0;if(r)for(let r=0;r<n;r++)t[o++]=e[a++],t[o++]=e[a++],t[o++]=e[a++],t[o++]=255;else t.set(e)}function t(e,t,r){if(void 0===e)throw new Error("decodeRGB: rgbBuffer must not be undefined");if(e.length%3!=0)throw new Error("decodeRGB: rgbBuffer length must be divisible by 3");const n=e.length/3;let a=0,o=0,i=n,s=2*n;if(r)for(let r=0;r<n;r++)t[a++]=e[o++],t[a++]=e[i++],t[a++]=e[s++],t[a++]=255;else for(let r=0;r<n;r++)t[a++]=e[o++],t[a++]=e[i++],t[a++]=e[s++]}function r(e,t,r){if(void 0===e)throw new Error("decodeRGB: ybrBuffer must not be undefined");if(e.length%3!=0)throw new Error("decodeRGB: ybrBuffer length must be divisble by 3");const n=e.length/3;let a=0,o=0;if(r)for(let r=0;r<n;r++){const r=e[a++],n=e[a++],i=e[a++];t[o++]=r+1.402*(i-128),t[o++]=r-.34414*(n-128)-.71414*(i-128),t[o++]=r+1.772*(n-128),t[o++]=255}else for(let r=0;r<n;r++){const r=e[a++],n=e[a++],i=e[a++];t[o++]=r+1.402*(i-128),t[o++]=r-.34414*(n-128)-.71414*(i-128),t[o++]=r+1.772*(n-128)}}function n(e,t,r){if(void 0===e)throw new Error("decodeRGB: ybrBuffer must not be undefined");if(e.length%3!=0)throw new Error("decodeRGB: ybrBuffer length must be divisble by 3");const n=e.length/3;let a=0,o=0,i=n,s=2*n;if(r)for(let r=0;r<n;r++){const r=e[o++],n=e[i++],l=e[s++];t[a++]=r+1.402*(l-128),t[a++]=r-.34414*(n-128)-.71414*(l-128),t[a++]=r+1.772*(n-128),t[a++]=255}else for(let r=0;r<n;r++){const r=e[o++],n=e[i++],l=e[s++];t[a++]=r+1.402*(l-128),t[a++]=r-.34414*(n-128)-.71414*(l-128),t[a++]=r+1.772*(n-128)}}a.r(o),a.d(o,{configure:()=>xt,convertColorSpace:()=>H,convertPALETTECOLOR:()=>bt,convertRGBColorByPixel:()=>e,convertRGBColorByPlane:()=>t,convertYBRFullByPixel:()=>r,convertYBRFullByPlane:()=>n,createImage:()=>xe,decodeImageFrame:()=>fe,decodeJPEGBaseline8BitColor:()=>Q,default:()=>yt,external:()=>ht,getImageFrame:()=>me,getMinMax:()=>V,getPixelData:()=>G,internal:()=>R,isColorImage:()=>ge,isJPEGBaseline8BitColor:()=>wt,wadors:()=>Te,wadouri:()=>ut,webWorkerManager:()=>ce});const i=function(e,t,r){return t=t||0,e&&e.Value?e.Value.length<=t?r:e.Value[t]:r};const s=function(e,t,r){const n=i(e,t,r);if(void 0!==n)return parseFloat(n)};const l=function(e,t){const r=i(e,t);if(void 0!==r)return parseFloat(r)};const c=function(e,t){if(!e)return;if(!e.Value)return;if(!Array.isArray(e.Value))return;if(t&&e.Value.length<t)return;const r=[];for(let t=0;t<e.Value.length;t++)r.push(parseFloat(e.Value[t]));return r};function u(e){const t=e.indexOf(":");return e.substring(t+1)}function d(e,t=!0){return e&&e.Value?e.Value[0]&&t?e.Value[0]:e.Value:e}function f(e,t,r){return{shared:(t?Object.values(t[0]):[]).map((e=>e[0])).filter((e=>void 0!==e&&"object"==typeof e)),perFrame:(e?Object.values(e[r-1]):[]).map((e=>e.Value[0])).filter((e=>void 0!==e&&"object"==typeof e))}}function m(e){let{52009230:t,52009229:r,"00280008":n,...a}=e;return t=d(t,!1),r=d(r,!1),n=d(n),{PerFrameFunctionalGroupsSequence:t,SharedFunctionalGroupsSequence:r,NumberOfFrames:n,rest:a}}function g(e){const t=e.indexOf("/frames/")+8,r=e.slice(0,t),n=parseInt(e.slice(t),10);return{metadata:p[`${r}1`],frame:n}}const h={_retrieveMultiframeMetadata:g,retrieveMultiframeMetadata:function(e){return g(u(e))},isMultiframe:function(e){const t=i(e["00280008"]);return t&&t>1}};let p=[],b={};const x={add:function(e,t){const r=u(e);t.isMultiframe=h.isMultiframe(t),p[r]=t},get:function(e){const t=u(e),r=p[t];if(r&&!r?.isMultiframe)return r;const n=b[t];if(n)return n;const a=h._retrieveMultiframeMetadata(t);if(!a||!a.metadata)return;const{metadata:o,frame:i}=a;if(o){const e=function(e,t){const{PerFrameFunctionalGroupsSequence:r,SharedFunctionalGroupsSequence:n,NumberOfFrames:a,rest:o}=m(t);if(r||a>1){const{shared:i,perFrame:s}=f(r,n,e),l=Object.assign(t,{frameNumber:e});return[...i,...s].forEach((e=>{Object.entries(e).forEach((([e,t])=>{l[e]=t}))})),Object.assign(o,{"00280008":a},l)}return t}(i,o);return b[t]=e,e}},remove:function(e){const t=u(e);p[t]=void 0,b[t]=void 0},purge:function(){p=[],b={}}};function w(e){return"RECON TOMO"===e||"RECON GATED TOMO"===e}function y(e){return i(e["00080060"]).includes("NM")}function k(e,t){const r=d(e["00080008"],!1);if(r)return r[t]}function v(e){let t=c(e["00200037"],6);return!t&&y(e)&&(t=function(e){let t;const r=k(e,2);if(r&&w(r)){const r=d(e["00540022"]);r&&(t=c(r["00200037"],6))}return t}(e)),t}function S(e){let t=c(e["00200032"],3);return!t&&y(e)&&(t=function(e){let t;const r=k(e,2);if(r&&w(r)){const r=d(e["00540022"]);r&&(t=c(r["00200032"],3))}return t}(e)),t}function D(e,t,r){const n={};for(const a of r)try{const r=t(a,e);if(r){const e={};for(const t in r)if(t in r){e[T(t)]=r[t]}Object.assign(n,e)}}catch(e){console.error(`Error retrieving ${a} data:`,e)}return n}const T=e=>e.charAt(0).toUpperCase()+e.slice(1),P=["multiframeModule","generalSeriesModule","patientStudyModule","imagePlaneModule","nmMultiframeGeometryModule","imagePixelModule","modalityLutModule","voiLutModule","sopCommonModule","petIsotopeModule","overlayPlaneModule","transferSyntax","petSeriesModule","petImageModule"];function I(e,t){return{transferSyntaxUID:i(t["00020010"])||i(t["00083002"])}}const C=function e(t,r){const{MetadataModules:n}=ht.cornerstone.Enums;if(t===n.MULTIFRAME){const{metadata:e,frame:t}=h.retrieveMultiframeMetadata(r);if(!e)return;const{PerFrameFunctionalGroupsSequence:n,SharedFunctionalGroupsSequence:a,NumberOfFrames:o}=m(e);if(n||o>1){const{shared:e,perFrame:r}=f(n,a,t);return{NumberOfFrames:o,PerFrameFunctionalInformation:r,SharedFunctionalInformation:e}}return{NumberOfFrames:o}}const{dicomParser:a}=ht,o=x.get(r);if(o){if(t===n.GENERAL_SERIES)return{modality:i(o["00080060"]),seriesInstanceUID:i(o["0020000E"]),seriesNumber:l(o["00200011"]),studyInstanceUID:i(o["0020000D"]),seriesDate:a.parseDA(i(o["00080021"])),seriesTime:a.parseTM(i(o["00080031"],0,"")),acquisitionDate:a.parseDA(i(o["00080022"]),""),acquisitionTime:a.parseTM(i(o["00080032"],0,""))};if(t===n.PATIENT_STUDY)return{patientAge:l(o["00101010"]),patientSize:l(o["00101020"]),patientSex:i(o["00100040"]),patientWeight:l(o["00101030"])};if(t===n.NM_MULTIFRAME_GEOMETRY){const e=i(o["00080060"]),t=k(o,2);return{modality:e,imageType:i(o["00080008"]),imageSubType:t,imageOrientationPatient:v(o),imagePositionPatient:S(o),sliceThickness:l(o["00180050"]),pixelSpacing:c(o["00280030"],2),numberOfFrames:l(o["00280008"]),isNMReconstructable:w(t)&&e.includes("NM")}}if(t===n.IMAGE_PLANE){const e=v(o),t=S(o),r=c(o["00280030"],2);let n=null,a=null;r&&(a=r[0],n=r[1]);let s=null,u=null;return e&&(s=[parseFloat(e[0]),parseFloat(e[1]),parseFloat(e[2])],u=[parseFloat(e[3]),parseFloat(e[4]),parseFloat(e[5])]),{frameOfReferenceUID:i(o["00200052"]),rows:l(o["00280010"]),columns:l(o["00280011"]),imageOrientationPatient:e,rowCosines:s,columnCosines:u,imagePositionPatient:t,sliceThickness:l(o["00180050"]),sliceLocation:l(o["00201041"]),pixelSpacing:r,rowPixelSpacing:a,columnPixelSpacing:n}}if(t===n.IMAGE_URL)return function(e,t){const{transferSyntaxUID:r}=I(e,t),n=ht.cornerstone.utilities.isVideoTransferSyntax(r),a=e.substring(7),o=a.replace("/frames/","/thumbnail/");let i=a.replace("/frames/","/rendered/");n&&(i=i.replace("/rendered/1","/rendered"));return{isVideo:n,rendered:i,thumbnail:o}}(r,o);if(t===n.CINE)return function(e,t){const r=i(t["00180040"]);return{cineRate:r,numberOfFrames:l(t["00280008"])}}(0,o);if("imagePixelModule"===t)return{samplesPerPixel:l(o["00280002"]),photometricInterpretation:i(o["00280004"]),rows:l(o["00280010"]),columns:l(o["00280011"]),bitsAllocated:l(o["00280100"]),bitsStored:l(o["00280101"]),highBit:i(o["00280102"]),pixelRepresentation:l(o["00280103"]),planarConfiguration:l(o["00280006"]),pixelAspectRatio:i(o["00280034"]),smallestPixelValue:l(o["00280106"]),largestPixelValue:l(o["00280107"]),redPaletteColorLookupTableDescriptor:c(o["00281101"]),greenPaletteColorLookupTableDescriptor:c(o["00281102"]),bluePaletteColorLookupTableDescriptor:c(o["00281103"]),redPaletteColorLookupTableData:c(o["00281201"]),greenPaletteColorLookupTableData:c(o["00281202"]),bluePaletteColorLookupTableData:c(o["00281203"])};if("voiLutModule"===t)return{windowCenter:c(o["00281050"],1),windowWidth:c(o["00281051"],1)};if("modalityLutModule"===t)return{rescaleIntercept:l(o["00281052"]),rescaleSlope:l(o["00281053"]),rescaleType:i(o["00281054"])};if("sopCommonModule"===t)return{sopClassUID:i(o["00080016"]),sopInstanceUID:i(o["00080018"])};if("petIsotopeModule"===t){const e=i(o["00540016"]);if(void 0===e)return;return{radiopharmaceuticalInfo:{radiopharmaceuticalStartTime:a.parseTM(i(e["00181072"],0,"")),radiopharmaceuticalStartDateTime:i(e["00181078"],0,""),radionuclideTotalDose:l(e["00181074"]),radionuclideHalfLife:l(e["00181075"])}}}return"overlayPlaneModule"===t?function(e){const t=[];for(let r=0;r<=30;r+=2){let n=`x60${r.toString(16)}`;4===n.length&&(n=`x600${r.toString(16)}`);const a=i(e[`${n}3000`]);if(!a)continue;const o=[];for(let t=0;t<a.length;t++)for(let r=0;r<8;r++){const n=e.Value[a.dataOffset+t];o[8*t+r]=n>>r&1}t.push({rows:l(e[`${n}0010`]),columns:l(e[`${n}0011`]),type:i(e[`${n}0040`]),x:l(e[`${n}0050`],1)-1,y:l(e[`${n}0050`],0)-1,pixelData:o,description:i(e[`${n}0022`]),label:i(e[`${n}1500`]),roiArea:i(e[`${n}1301`]),roiMean:i(e[`${n}1302`]),roiStandardDeviation:i(e[`${n}1303`])})}return{overlays:t}}(o):"transferSyntax"===t?I(r,o):"petSeriesModule"===t?{correctedImage:i(o["00280051"]),units:i(o["00541001"]),decayCorrection:i(o["00541102"])}:"petImageModule"===t?{frameReferenceTime:l(o["00541300"]),actualFrameDuration:l(o["00181242"])}:"instance"===t?D(r,e,P):void 0}};function L(e,t,r){if(r+e.length>t.length)return!1;let n=r;for(let r=0;r<e.length;r++)if(e[r]!==t[n++])return!1;return!0}const _=function(e,t,r){r=r||0;const n=function(e){const t=new Uint8Array(e.length);for(let r=0,n=e.length;r<n;r++)t[r]=e.charCodeAt(r);return t}(t);for(let t=r;t<e.length;t++)if(n[0]===e[t]&&L(n,e,t))return t;return-1};let A={open(e,t){e.open("get",t,!0)},beforeSend(){},beforeProcessing:e=>Promise.resolve(e.response),imageCreated(){},strict:!1,decodeConfig:{convertFloatPixelDataToInt:!0,use16BitDataType:!1}};function E(e){A=Object.assign(A,e)}function M(){return A}const O=function(e,t,r={},n={}){const{cornerstone:a}=ht,o=M(),i=e=>{if("function"==typeof o.errorInterceptor){const t=new Error("request failed");t.request=e,t.response=e.response,t.status=e.status,o.errorInterceptor(t)}},s=new XMLHttpRequest,l=new Promise(((l,c)=>{o.open(s,e,r,n);const u=o.beforeSend(s,t,r,n);s.responseType="arraybuffer";const d=Object.assign({},r,u);Object.keys(d).forEach((function(t){null!==d[t]&&("Accept"===t&&-1!==e.indexOf("accept=")||s.setRequestHeader(t,d[t]))})),n.deferred={resolve:l,reject:c},n.url=e,n.imageId=t,s.onloadstart=function(r){o.onloadstart&&o.onloadstart(r,n);const i={url:e,imageId:t};a.triggerEvent(a.events,"cornerstoneimageloadstart",i)},s.onloadend=function(r){o.onloadend&&o.onloadend(r,n);const i={url:e,imageId:t};a.triggerEvent(a.events,"cornerstoneimageloadend",i)},s.onreadystatechange=function(e){o.onreadystatechange?o.onreadystatechange(e,n):4===s.readyState&&(200===s.status||206===s.status?o.beforeProcessing(s).then(l).catch((()=>{i(s),c(s)})):(i(s),c(s)))},s.onprogress=function(e){const t=e.loaded;let r,a;e.lengthComputable&&(r=e.total,a=Math.round(t/r*100)),o.onprogress&&o.onprogress(e,n)},s.onerror=function(){i(s),c(s)},s.onabort=function(){i(s),c(s)},s.send()}));return l.xhr=s,l},R={xhrRequest:O,setOptions:E,getOptions:M};var F=a(464);const{ImageQualityStatus:B}=F.Enums;function U(e,t,r){r||={};const n=new Uint8Array(t),a=!!r?.isPartial;if(-1===e.indexOf("multipart"))return{contentType:e,imageQualityStatus:a?B.SUBRESOLUTION:B.FULL_RESOLUTION,pixelData:n};let{tokenIndex:o,responseHeaders:i,boundary:s,multipartContentType:l}=r;if(o||=_(n,"\r\n\r\n"),-1===o)throw new Error("invalid response - no multipart mime header");if(!s){const e=function(e,t,r){t=t||0,r=r||e.length-t;let n="";for(let a=t;a<t+r;a++)n+=String.fromCharCode(e[a]);return n}(n,0,o);if(i=e.split("\r\n"),s=function(e){for(let t=0;t<e.length;t++)if("--"===e[t].substr(0,2))return e[t]}(i),!s)throw new Error("invalid response - no boundary marker")}const c=o+4,u=_(n,s,c);if(-1===u&&!a)throw new Error("invalid response - terminating boundary not found");return l||=function(e){for(let t=0;t<e.length;t++)if("Content-Type:"===e[t].substr(0,13))return e[t].substr(13).trim()}(i),r.tokenIndex=o,r.boundary=s,r.responseHeaders=i,r.multipartContentType=l,r.isPartial=-1===u,{contentType:l,extractDone:!a||-1!==u,tokenIndex:o,responseHeaders:i,boundary:s,multipartContentType:l,pixelData:t.slice(c,u-2)}}const{ImageQualityStatus:N}=F.Enums;function j(e,t=!0){return t?e.imageQualityStatus??N.FULL_RESOLUTION:N.SUBRESOLUTION}const{ProgressiveIterator:$}=F.utilities;function W(e,t,r={},n={}){const a=M(),{retrieveOptions:o={},streamingData:i={}}=n,s=o.minChunkSize||131072,l=new $("streamRequest");return l.generate((async(n,l)=>{const c=Object.assign({},r);Object.keys(c).forEach((function(t){null===c[t]&&(c[t]=void 0),"Accept"===t&&-1!==e.indexOf("accept=")&&(c[t]=void 0)}));try{const a=await fetch(e,{headers:r,signal:void 0});if(200!==a.status)throw new Error(`Couldn't retrieve ${e} got status ${a.status}`);const l=a.body.getReader(),c=a.headers,u=c.get("content-type"),d=Number(c.get("Content-Length"));let f=!1,m=i.encodedData,g=i.lastSize||0;for(i.isPartial=!0;!f;){const{done:r,value:a}=await l.read();if(m=Z(m,a),!m){if(f)throw new Error(`Done but no image frame available ${t}`);continue}if(f=r||m.byteLength===d,!f&&m.length<g+s)continue;g=m.length,i.isPartial=!r;const c=U(u,m,i),h=j(o,f),p={url:e,imageId:t,...c,percentComplete:r?100:100*c.pixelData?.length/d,imageQualityStatus:h,done:f};n.add(p,f)}}catch(e){(e=>{if("function"==typeof a.errorInterceptor){const e=new Error("request failed");a.errorInterceptor(e)}})(),console.error(e),l(e)}})),l.getNextPromise()}function Z(e,t){if(!e)return t;if(!t)return e;const r=new Uint8Array(e.length+t.length);return r.set(e,0),r.set(t,e.length),r}function q(e,t,r={},n={}){const a=M(),{retrieveOptions:o={},streamingData:i}=n,s=i.chunkSize||function(e,t,r){const n=t[r];if("function"!=typeof n)return n;const a=x.get(e);return n(a,e)}(t,o,"chunkSize")||65536,l=new Promise((async(t,n)=>{const l=Object.assign({},r);Object.keys(l).forEach((function(e){null!==l[e]&&void 0!==l[e]||delete l[e]}));try{i.encodedData||(i.chunkSize=s,i.rangesFetched=0);const r=function(e,t){const{totalBytes:r,encodedData:n,chunkSize:a=65536}=e,{rangeIndex:o=0}=t;if(!(-1!==o||r&&n))return[0,""];if(-1===o||n?.byteLength>r-a)return[n?.byteLength||0,""];return[n?.byteLength||0,a*(o+1)-1]}(i,o),{encodedData:n,responseHeaders:a}=await async function(e,t,r,n){r&&(t=Object.assign(t,{Range:`bytes=${r[0]}-${r[1]}`}));let{encodedData:a}=n;if(r[1]&&a?.byteLength>r[1])return n;const o=await fetch(e,{headers:t,signal:void 0}),i=await o.arrayBuffer(),s=new Uint8Array(i),{status:l}=o;let c;a?(c=new Uint8Array(a.length+s.length),c.set(a,0),c.set(s,a.length),n.rangesFetched=1):(c=new Uint8Array(s.length),c.set(s,0),n.rangesFetched++);n.encodedData=a=c,n.responseHeaders=o.headers;const u=o.headers.get("Content-Range");u?n.totalBytes=Number(u.split("/")[1]):206===l&&r?""===r[1]||a?.length<r[1]?n.totalBytes=a.byteLength:n.totalBytes=Number.MAX_SAFE_INTEGER:n.totalBytes=a?.byteLength;return n}(e,l,r,i),c=a.get("content-type"),{totalBytes:u}=i,d=u===n.byteLength,f=U(c,n,{isPartial:!0}),m=j(o,d||f.extractDone);t({...f,imageQualityStatus:m,percentComplete:f.extractDone?100:100*s/u})}catch(e){(e=>{if("function"==typeof a.errorInterceptor){const e=new Error("request failed");a.errorInterceptor(e)}else console.warn("rangeRequest:Caught",e)})(e),console.error(e),n(e)}}));return l}const G=function(e,t,r="application/octet-stream",n){const{streamingData:a,retrieveOptions:o={}}=n||{},i={Accept:r};let s=o.urlArguments?`${e}${-1===e.indexOf("?")?"?":"&"}${o.urlArguments}`:e;if(o.framesPath&&(s=s.replace("/frames/",o.framesPath)),a?.url!==s&&(n.streamingData={url:s}),void 0!==o.rangeIndex)return q(s,t,i,n);if(void 0!==o.streaming)return W(s,t,i,n);const l=O(s,t,i),{xhr:c}=l;return l.then((function(e){const t=U(c.getResponseHeader("Content-Type")||"application/octet-stream",new Uint8Array(e));return t.imageQualityStatus=j(o,!0),t}))};const V=function(e){let t,r=e[0],n=e[0];const a=e.length;for(let o=1;o<a;o++)t=e[o],r=Math.min(r,t),n=Math.max(n,t);return{min:r,max:n}};function z(r,n,a){0===r.planarConfiguration?e(r.pixelData,n,a):t(r.pixelData,n,a)}function H(e,t,a){if("RGB"===e.photometricInterpretation)z(e,t,a);else if("YBR_RCT"===e.photometricInterpretation)z(e,t,a);else if("YBR_ICT"===e.photometricInterpretation)z(e,t,a);else if("PALETTE COLOR"===e.photometricInterpretation)bt(e,t,a);else if("YBR_FULL_422"===e.photometricInterpretation)!function(e,t,r){if(void 0===e)throw new Error("decodeRGB: ybrBuffer must not be undefined");if(e.length%2!=0)throw new Error("decodeRGB: ybrBuffer length must be divisble by 3");const n=e.length/2;let a=0,o=0;if(r)for(let r=0;r<n;r+=2){const r=e[a++],n=e[a++],i=e[a++],s=e[a++];t[o++]=r+1.402*(s-128),t[o++]=r-.34414*(i-128)-.71414*(s-128),t[o++]=r+1.772*(i-128),t[o++]=255,t[o++]=n+1.402*(s-128),t[o++]=n-.34414*(i-128)-.71414*(s-128),t[o++]=n+1.772*(i-128),t[o++]=255}else for(let r=0;r<n;r+=2){const r=e[a++],n=e[a++],i=e[a++],s=e[a++];t[o++]=r+1.402*(s-128),t[o++]=r-.34414*(i-128)-.71414*(s-128),t[o++]=r+1.772*(i-128),t[o++]=n+1.402*(s-128),t[o++]=n-.34414*(i-128)-.71414*(s-128),t[o++]=n+1.772*(i-128)}}(e.pixelData,t,a);else{if("YBR_FULL"!==e.photometricInterpretation)throw new Error(`No color space conversion for photometric interpretation ${e.photometricInterpretation}`);!function(e,t,a){0===e.planarConfiguration?r(e.pixelData,t,a):n(e.pixelData,t,a)}(e,t,a)}}function Y(e){return function(e){let t;try{return decodeURIComponent(escape(e))}catch(r){if(t=r,t instanceof URIError)return e;throw t}}(String.fromCharCode.apply(null,Array.prototype.slice.apply(new Uint8Array(e))))}const Q=function(e,t,r){const n=(new Date).getTime(),a=new Blob([t],{type:"image/jpeg"});return new Promise(((t,o)=>{const i=new FileReader;void 0===i.readAsBinaryString?i.readAsArrayBuffer(a):i.readAsBinaryString(a),i.onload=function(){const a=new Image;a.onload=function(){r.height=a.height,r.width=a.width,e.rows=a.height,e.columns=a.width;const o=r.getContext("2d");o.drawImage(this,0,0);const i=o.getImageData(0,0,a.width,a.height),s=(new Date).getTime();e.pixelData=new Uint8Array(i.data.buffer),e.imageData=i,e.decodeTimeInMS=s-n;const l=V(e.pixelData);e.smallestPixelValue=l.min,e.largestPixelValue=l.max,e.pixelDataLength=e.pixelData.length,t(e)},a.onerror=function(e){o(e)},void 0===i.readAsBinaryString?a.src=`data:image/jpeg;base64,${window.btoa(Y(i.result))}`:a.src=`data:image/jpeg;base64,${window.btoa(i.result)}`},i.onerror=e=>{o(e)}}))};function K(){return new Worker(a.p+"index.worker.64c896c4316fcd506666.worker.js")}let J=0;const X=[],ee=[],te=M(),re={maxWebWorkers:navigator.hardwareConcurrency||1,startWebWorkersOnDemand:!0,webWorkerTaskPaths:[],taskConfiguration:{decodeTask:{initializeCodecsOnStartup:!1,strict:te.strict}}};let ne;const ae={maxWebWorkers:0,numWebWorkers:0,numTasksQueued:0,numTasksExecuting:0,numTasksCompleted:0,totalTaskTimeInMS:0,totalTimeDelayedInMS:0};function oe(){if(X.length){for(let e=0;e<ee.length;e++)if("ready"===ee[e].status){ee[e].status="busy";const t=X.shift();t.start=(new Date).getTime();const r=(new Date).getTime();return ae.totalTimeDelayedInMS+=r-t.added,ee[e].task=t,ee[e].worker.postMessage({taskType:t.taskType,workerIndex:e,data:t.data},t.transferList),void ae.numTasksExecuting++}ee.length<ne.maxWebWorkers&&se()}}function ie(e){if("initialize"===e.data.taskType)ee[e.data.workerIndex].status="ready",oe();else{const t=ee[e.data.workerIndex].task.start,r="success"===e.data.status?"resolve":"reject";try{ee[e.data.workerIndex].task.deferred[r](e.data.result)}catch(e){console.warn("Caught error delivering response",e)}ee[e.data.workerIndex].task=void 0,ae.numTasksExecuting--,ee[e.data.workerIndex].status="ready",ae.numTasksCompleted++;const n=(new Date).getTime();ae.totalTaskTimeInMS+=n-t,oe()}}function se(){if(ee.length>=ne.maxWebWorkers)return;const e=new K;ee.push({worker:e,status:"initializing"}),e.addEventListener("message",ie),e.postMessage({taskType:"initialize",workerIndex:ee.length-1,config:ne})}function le(e){if(ne=e=e||re,ne.maxWebWorkers=ne.maxWebWorkers||navigator.hardwareConcurrency||1,!ne.startWebWorkersOnDemand)for(let e=0;e<ne.maxWebWorkers;e++)se()}const ce={initialize:le,loadWebWorkerTask:function(e,t){ne.webWorkerTaskPaths.push(e),t&&(ne.taskConfiguration=Object.assign(ne.taskConfiguration,t));for(let t=0;t<ee.length;t++)ee[t].worker.postMessage({taskType:"loadWebWorkerTask",workerIndex:ee.length-1,sourcePath:e,config:ne})},addTask:function(e,t,r=0,n){ne||le();let a={resolve:void 0,reject:void 0};const o=new Promise(((e,t)=>{a={resolve:e,reject:t}}));let i;for(i=0;i<X.length&&!(X[i].priority<r);i++);const s=J++;return X.splice(i,0,{taskId:s,taskType:e,status:"ready",added:(new Date).getTime(),data:t,deferred:a,priority:r,transferList:n}),oe(),{taskId:s,promise:o}},getStatistics:function(){return ae.maxWebWorkers=ne.maxWebWorkers,ae.numWebWorkers=ee.length,ae.numTasksQueued=X.length,ae},setTaskPriority:function(e,t=0){for(let r=0;r<X.length;r++)if(X[r].taskId===e){const e=X.splice(r,1)[0];for(e.priority=t,r=0;r<X.length&&!(X[r].priority<t);r++);return X.splice(r,0,e),!0}return!1},cancelTask:function(e,t){for(let r=0;r<X.length;r++)if(X[r].taskId===e){return X.splice(r,1).deferred.reject(t),!0}return!1},webWorkers:ee,terminate:function(){for(let e=0;e<ee.length;e++)ee[e].worker.terminate();ee.length=0,ne=void 0}};var ue=a(578);function de(e,t,r,n,a){const o={...n};delete o.loader,delete o.streamingData;const i=o.priority||void 0,s=o.transferPixelData?[r.buffer]:void 0;return ce.addTask("decodeTask",{imageFrame:e,transferSyntax:t,pixelData:r,options:o,decodeConfig:a},i,s).promise}window.pako={inflateRaw:ue.Hq};const fe=function(e,t,r,n,a={},o){switch(t){case"1.2.840.10008.1.2":case"1.2.840.10008.1.2.1":case"1.2.840.10008.1.2.2":case"1.2.840.10008.1.2.1.99":case"1.2.840.10008.1.2.5":case"1.2.840.10008.1.2.4.51":case"1.2.840.10008.1.2.4.57":case"1.2.840.10008.1.2.4.70":case"1.2.840.10008.1.2.4.80":case"1.2.840.10008.1.2.4.81":case"1.2.840.10008.1.2.4.90":case"1.2.840.10008.1.2.4.91":case"3.2.840.10008.1.2.4.96":case"1.2.840.10008.1.2.4.201":case"1.2.840.10008.1.2.4.202":case"1.2.840.10008.1.2.4.203":return de(e,t,r,a,o);case"1.2.840.10008.1.2.4.50":return 8!==e.bitsAllocated||3!==e.samplesPerPixel&&4!==e.samplesPerPixel?de(e,t,r,a,o):Q(e,r,n)}return Promise.reject(new Error(`No decoder for transfer syntax ${t}`))};const me=function(e){const{cornerstone:t}=ht,r=t.metaData.get("imagePixelModule",e);return{samplesPerPixel:r.samplesPerPixel,photometricInterpretation:r.photometricInterpretation,planarConfiguration:r.planarConfiguration,rows:r.rows,columns:r.columns,bitsAllocated:r.bitsAllocated,bitsStored:r.bitsStored,pixelRepresentation:r.pixelRepresentation,smallestPixelValue:r.smallestPixelValue,largestPixelValue:r.largestPixelValue,redPaletteColorLookupTableDescriptor:r.redPaletteColorLookupTableDescriptor,greenPaletteColorLookupTableDescriptor:r.greenPaletteColorLookupTableDescriptor,bluePaletteColorLookupTableDescriptor:r.bluePaletteColorLookupTableDescriptor,redPaletteColorLookupTableData:r.redPaletteColorLookupTableData,greenPaletteColorLookupTableData:r.greenPaletteColorLookupTableData,bluePaletteColorLookupTableData:r.bluePaletteColorLookupTableData,pixelData:void 0,imageId:e}};function ge(e){return"RGB"===e||"PALETTE COLOR"===e||"YBR_FULL"===e||"YBR_FULL_422"===e||"YBR_PARTIAL_422"===e||"YBR_PARTIAL_420"===e||"YBR_RCT"===e||"YBR_ICT"===e}const he={"1.2.840.10008.1.2.1":"application/octet-stream","1.2.840.10008.1.2":"application/octet-stream","1.2.840.10008.1.2.2":"application/octet-stream","1.2.840.10008.1.2.5":"image/dicom-rle"};let pe="";function be(e){const t=function(e,t){let r;return Number.isInteger(e)&&Number.isInteger(t)&&(e>=0?t<=255?r=Uint8Array:t<=65535&&(r=Uint16Array):e>=-128&&t<=127?r=Int8Array:e>=-32768&&t<=32767&&(r=Int16Array)),r||Float32Array}(e.smallestPixelValue,e.largestPixelValue);if(!t)throw new Error("Could not apply a typed array to the pixel data");{const r=new t(e.pixelData);e.pixelData=r}}const xe=function(e,t,r,n={}){const a=n.useRGBA;if(n.preScale={enabled:!(!n.preScale||void 0===n.preScale.enabled)&&n.preScale.enabled},!t?.length)return Promise.reject(new Error("The pixel data is missing"));const{cornerstone:o}=ht,i=document.createElement("canvas"),s=me(e);if(s.decodeLevel=n.decodeLevel,n.preScale.enabled){const t=function(e,t){const r=e.get("modalityLutModule",t)||{},n=e.get("generalSeriesModule",t)||{},{modality:a}=n,o={rescaleSlope:r.rescaleSlope,rescaleIntercept:r.rescaleIntercept,modality:a},i=e.get("scalingModule",t)||{};return{...o,..."PT"===a&&{suvbw:i.suvbw}}}(o.metaData,e);t&&(n.preScale={...n.preScale,scalingParameters:t})}n.isSharedArrayBuffer=n.targetBuffer?.arrayBuffer&&n.targetBuffer.arrayBuffer instanceof SharedArrayBuffer;const{decodeConfig:l}=M(),c=fe(s,r,t,i,n,l),{use16BitDataType:u}=l,d=ge(s.photometricInterpretation);return new Promise(((t,s)=>{c.then((function(s){if(n.skipCreateImage)return t(s);let l=!1;if(n.targetBuffer&&n.targetBuffer.type&&!d){const{arrayBuffer:e,type:t,offset:r=0,length:a}=n.targetBuffer,o=s.pixelDataLength,i=r,c=null!=a?a:o-i,d={Uint8Array,Uint16Array:u?Uint16Array:void 0,Int16Array:u?Int16Array:void 0,Float32Array};if(c!==s.pixelDataLength)throw new Error(`target array for image does not have the same length (${c}) as the decoded image length (${s.pixelDataLength}).`);const f=d[t],m=e?new f(e,i,c):new f(s.pixelData);if(c!==s.pixelDataLength)throw new Error("target array for image does not have the same length as the decoded image length.");s.pixelData=m,l=!0}l||be(s);const c=o.metaData.get("imagePlaneModule",e)||{},f=o.metaData.get("voiLutModule",e)||{},m=o.metaData.get("modalityLutModule",e)||{},g=o.metaData.get("sopCommonModule",e)||{};if(d){const{rows:e,columns:t}=s;if(he[r]){i.height=s.rows,i.width=s.columns;const e=i.getContext("2d").createImageData(s.columns,s.rows);H(s,e.data,a),s.imageData=e,s.pixelData=e.data,s.pixelDataLength=e.data.length}else if(!a&&s.pixelDataLength===4*e*t){const e=new Uint8Array(s.pixelData.length/4*3);s.pixelData=function(e,t){const r=e.length/4;let n=0,a=0;for(let o=0;o<r;o++)t[a++]=e[n++],t[a++]=e[n++],t[a++]=e[n++],n++;return t}(s.pixelData,e),s.pixelDataLength=s.pixelData.length}const n=V(s.pixelData);s.smallestPixelValue=n.min,s.largestPixelValue=n.max}const h={imageId:e,color:d,columnPixelSpacing:c.columnPixelSpacing,columns:s.columns,height:s.rows,preScale:s.preScale,intercept:m.rescaleIntercept?m.rescaleIntercept:0,slope:m.rescaleSlope?m.rescaleSlope:1,invert:"MONOCHROME1"===s.photometricInterpretation,minPixelValue:s.smallestPixelValue,maxPixelValue:s.largestPixelValue,rowPixelSpacing:c.rowPixelSpacing,rows:s.rows,sizeInBytes:s.pixelData.byteLength,width:s.columns,windowCenter:f.windowCenter?f.windowCenter[0]:void 0,windowWidth:f.windowWidth?f.windowWidth[0]:void 0,voiLUTFunction:f.voiLUTFunction?f.voiLUTFunction:void 0,decodeTimeInMS:s.decodeTimeInMS,floatPixelData:void 0,imageFrame:s,rgba:d&&a,getPixelData:()=>s.pixelData,getCanvas:void 0,numComps:void 0};var p;if(window.image=h,h.color&&(h.getCanvas=function(){if(pe===e)return i;const t=h.columns,r=h.rows;i.height=r,i.width=t;const n=i.getContext("2d"),a=n.createImageData(t,r),o=s.pixelData;if(o.length===t*r*4)for(let e=0;e<o.length;e++)a.data[e]=o[e];else if(o.length===t*r*3){let e=0;for(let t=0;t<o.length;t+=3)a.data[e++]=o[t],a.data[e++]=o[t+1],a.data[e++]=o[t+2],a.data[e++]=255}return s.pixelData=a.data,s.pixelDataLength=a.data.length,s.imageData=a,n.putImageData(s.imageData,0,0),pe=e,i}),m.modalityLUTSequence&&m.modalityLUTSequence.length>0&&("1.2.840.10008.5.1.4.1.1.12.1"!==(p=g.sopClassUID)&&"1.2.840.10008.5.1.4.1.1.12.2.1"!==p)&&(h.modalityLUT=m.modalityLUTSequence[0]),f.voiLUTSequence&&f.voiLUTSequence.length>0&&(h.voiLUT=f.voiLUTSequence[0]),h.color&&(h.windowWidth=256,h.windowCenter=128),void 0===h.windowCenter||void 0===h.windowWidth){const e=h.imageFrame.minAfterScale,t=h.imageFrame.maxAfterScale;h.windowWidth=t-e,h.windowCenter=(t+e)/2}t(h)}),s)}))},{ProgressiveIterator:we}=F.utilities,{ImageQualityStatus:ye}=F.Enums,ke=new Set(["3.2.840.10008.1.2.4.96","1.2.840.10008.1.2.4.202","1.2.840.10008.1.2.4.203"]);function ve(e){const t="1.2.840.10008.1.2";if(!e)return t;const r=e.split(";"),n={};r.forEach((e=>{const t=e.split("=");if(2!==t.length)return;const r=t[1].trim().replace(/"/g,"");n[t[0].trim()]=r}));const a={"image/jpeg":"1.2.840.10008.1.2.4.50","image/x-dicom-rle":"1.2.840.10008.1.2.5","image/x-jls":"1.2.840.10008.1.2.4.80","image/jls":"1.2.840.10008.1.2.4.80","image/jll":"1.2.840.10008.1.2.4.70","image/jp2":"1.2.840.10008.1.2.4.90","image/jpx":"1.2.840.10008.1.2.4.92","image/jphc":"3.2.840.10008.1.2.4.96","image/jxl":"1.2.840.10008.1.2.4.140"};return n["transfer-syntax"]?n["transfer-syntax"]:e&&!Object.keys(n).length&&a[e]?a[e]:n.type&&a[n.type]?a[n.type]:a[e]?a[e]:t}function Se(e,t=4){const r=e/100-.02;return r>1/4?Math.min(t,0):r>1/16?Math.min(t,1):r>1/64?Math.min(t,2):Math.min(t,3)}const De=function(e,t={}){const r=ht.cornerstone.imageRetrievalPoolManager,n=(new Date).getTime(),a=new we("decompress"),o=t.requestType||"interaction",i=t.additionalDetails||{imageId:e},s=void 0===t.priority?5:t.priority,l=t.addToBeginning||!1,c=e.substring(7);return r.addRequest(async function(e,r,o){a.generate((async a=>{const i=we.as(G(e,r,o,t));let s=10;for await(const e of i){const{pixelData:o,imageQualityStatus:i=ye.FULL_RESOLUTION,percentComplete:l,done:c=!0,extractDone:u=!0}=e,d=ve(e.contentType);if(!u&&!ke.has(d))continue;const f=e.decodeLevel??(i===ye.FULL_RESOLUTION?0:Se(l,t.retrieveOptions?.decodeLevel));if(c||!(s<=f))try{const e={...t,decodeLevel:f},l=await xe(r,o,d,e),u=(new Date).getTime();l.loadTimeInMS=u-n,l.transferSyntaxUID=d,l.imageQualityStatus=i,a.add(l,c),s=f}catch(e){if(u)throw console.warn("Couldn't decode",e),e}}}))}.bind(this,c,e,"multipart/related; type=application/octet-stream; transfer-syntax=*"),o,i,s,l),{promise:a.getDonePromise(),cancelFn:void 0}};const Te={metaData:{getNumberString:s,getNumberValue:l,getNumberValues:c,getValue:i,metaDataProvider:C},findIndexOfString:_,getPixelData:G,loadImage:De,metaDataManager:x,register:function(e){e.registerImageLoader("wadors",De),e.metaData.addProvider(C)}};function Pe(e,t){if(e.elements[t]&&6===e.elements[t].length)return[e.uint16(t,0),e.uint16(t,1),e.uint16(t,2)]}function Ie(e,t,r){const n=[],a=e.elements[t];for(let o=0;o<r[0];o++)16===r[2]?n[o]=e.uint16(t,o):n[o]=e.byteArray[o+a.dataOffset];return n}const Ce=function(e){const t={samplesPerPixel:e.uint16("x00280002"),photometricInterpretation:e.string("x00280004"),rows:e.uint16("x00280010"),columns:e.uint16("x00280011"),bitsAllocated:e.uint16("x00280100"),bitsStored:e.uint16("x00280101"),highBit:e.uint16("x00280102"),pixelRepresentation:e.uint16("x00280103"),planarConfiguration:e.uint16("x00280006"),pixelAspectRatio:e.string("x00280034")};return function(e,t){0===e.uint16("x00280103")?(t.smallestPixelValue=e.uint16("x00280106"),t.largestPixelValue=e.uint16("x00280107")):(t.smallestPixelValue=e.int16("x00280106"),t.largestPixelValue=e.int16("x00280107"))}(e,t),"PALETTE COLOR"===t.photometricInterpretation&&e.elements.x00281101&&function(e,t){t.redPaletteColorLookupTableDescriptor=Pe(e,"x00281101"),t.greenPaletteColorLookupTableDescriptor=Pe(e,"x00281102"),t.bluePaletteColorLookupTableDescriptor=Pe(e,"x00281103"),0===t.redPaletteColorLookupTableDescriptor[0]&&(t.redPaletteColorLookupTableDescriptor[0]=65536,t.greenPaletteColorLookupTableDescriptor[0]=65536,t.bluePaletteColorLookupTableDescriptor[0]=65536);const r=t.redPaletteColorLookupTableDescriptor[0],n=e.elements.x00281201.length===r?8:16;t.redPaletteColorLookupTableDescriptor[2]!==n&&(t.redPaletteColorLookupTableDescriptor[2]=n,t.greenPaletteColorLookupTableDescriptor[2]=n,t.bluePaletteColorLookupTableDescriptor[2]=n),t.redPaletteColorLookupTableData=Ie(e,"x00281201",t.redPaletteColorLookupTableDescriptor),t.greenPaletteColorLookupTableData=Ie(e,"x00281202",t.greenPaletteColorLookupTableDescriptor),t.bluePaletteColorLookupTableData=Ie(e,"x00281203",t.bluePaletteColorLookupTableDescriptor)}(e,t),t};function Le(e,t){let r=t.uint16("x00283002",0);0===r&&(r=65535);let n=0;n=0===e?t.uint16("x00283002",1):t.int16("x00283002",1);const a={id:"1",firstValueMapped:n,numBitsPerEntry:t.uint16("x00283002",2),lut:[]};for(let n=0;n<r;n++)a.lut[n]=0===e?t.uint16("x00283006",n):t.int16("x00283006",n);return a}const _e=function(e,t){if(!t||!t.items||!t.items.length)return;const r=[];for(let n=0;n<t.items.length;n++){const a=Le(e,t.items[n].dataSet);a&&r.push(a)}return r};const Ae=function(e){const t=e.string("x00080016");if("1.2.840.10008.5.1.4.1.1.2"===t||"1.2.840.10008.5.1.4.1.1.2.1"===t)return 1;const r=e.floatString("x00281052"),n=e.floatString("x00281053");if(void 0!==r&&void 0!==n){const t=function(e){const t=e.uint16("x00280103"),r=e.uint16("x00280101");return 0===t?0:-1<<r-1}(e);return t*n+r<0?1:0}return e.elements.x00283000&&e.elements.x00283000.length>0?0:e.uint16("x00280103")};const Ee=function(e,t,r){const n=[],a=e.string(t);if(!a)return;const o=a.split("\\");if(!(r&&o.length<r)){for(let e=0;e<o.length;e++)n.push(parseFloat(o[e]));return n}};const Me=function(e){const t=e.indexOf(":");let r=e.substring(t+1);const n=r.indexOf("frame=");let a;if(-1!==n){const e=r.substring(n+6);a=parseInt(e,10),r=r.substring(0,n-1)}return{scheme:e.substring(0,t),url:r,frame:a,pixelDataFrame:void 0!==a?a-1:void 0}};function Oe(e){const{dicomParser:t}=ht;let r,n=t.parseDicom(e,{untilTag:"x7fe00010"});n.elements.x7fe00010||console.warn("Pixel data not found!");try{r=t.parseDicom(e)}catch(e){console.error(e),console.log("pixel data dataset:",e.dataSet),r=e.dataSet}return n.elements.x7fe00010=r.elements.x7fe00010,n=function(e){const t=e.elements.x7fe00010.fragments,r=e.byteArray.length;for(const e of t){const{position:t,length:n}=e;n>r-t&&(console.log(`Truncated fragment, changing fragment length from ${e.length} to ${r-t}`),e.length=r-t)}return e}(n),n}async function Re(e,t,r){const n=Oe(e),{uri:a,imageId:o,fileTotalLength:i}=r;return n.fetchMore=async function(s){const l=Object.assign({uri:a,imageId:o,fetchedLength:e.length,lengthToFetch:i-e.length},s),{fetchedLength:c,lengthToFetch:u}=l,{arrayBuffer:d}=await t(a,o,{byteRange:`${c}-${c+u}`}),f=new Uint8Array(d),m=new Uint8Array(n.byteArray.length+f.length);return m.set(n.byteArray),m.set(f,n.byteArray.length),Re(m,t,r)},n}function Fe(e,t,r){const n={};(t?Object.values(t.items[0].dataSet.elements):[]).map((e=>n[e.tag]=e));const a={};return(e?Object.values(e.items[r-1].dataSet.elements):[]).map((e=>a[e.tag]=e)),{shared:n,perFrame:a}}function Be(e){if(!e)return;const{elements:t,...r}=e,{x52009230:n,x52009229:a,...o}=t;return{NumberOfFrames:e.intString("x00280008"),PerFrameFunctionalGroupsSequence:n,SharedFunctionalGroupsSequence:a,otherElements:o,otherAttributtes:r}}function Ue(e){if(We[e])return We[e]}function Ne(e){if(!e)return!1;const t=e.intString("x00280008");return t&&t>1}const je={_get:Ue,generateMultiframeWADOURIs:function(e){const t=[],r=Ue(e);if(Ne(r)){const n=r.intString("x00280008");for(let r=1;r<=n;r++)t.push(`${e}&frame=${r}`)}else t.push(e);return t},retrieveMultiframeDataset:function(e){const t=function(e){return e.indexOf("&frame=")}(e),r=-1===t?e:e.slice(0,t),n=parseInt(e.slice(t+7),10)||1;let a;return a=We[r]?We[r].dataSet:void 0,{dataSet:a,frame:n}},isMultiframeDataset:function(e){return Ne(Ue(e))}};let $e=0,We={},Ze={};function qe(){return{cacheSizeInBytes:$e,numberOfDataSetsCached:Object.keys(We).length}}const Ge={isLoaded:function(e){return void 0!==We[e]},load:function(e,t=O,r){const{cornerstone:n,dicomParser:a}=ht;if(We[e])return new Promise((t=>{We[e].cacheCount++,t(We[e].dataSet)}));if(Ze[e])return Ze[e].cacheCount++,Ze[e];const o=t(e,r),i=new Promise(((s,l)=>{o.then((async function(o){const c={isPartialContent:!1,fileTotalLength:null};if(!(o instanceof ArrayBuffer)){if(!o.arrayBuffer)return l(new Error("If not returning ArrayBuffer, must return object with `arrayBuffer` parameter"));c.isPartialContent=o.flags.isPartialContent,c.fileTotalLength=o.flags.fileTotalLength,o=o.arrayBuffer}const u=new Uint8Array(o);let d;try{d=c.isPartialContent?await Re(u,t,{uri:e,imageId:r,fileTotalLength:c.fileTotalLength}):a.parseDicom(u)}catch(e){return l(e)}We[e]={dataSet:d,cacheCount:i.cacheCount},$e+=d.byteArray.length,s(d),n.triggerEvent(n.events,"datasetscachechanged",{uri:e,action:"loaded",cacheInfo:qe()})}),l).then((()=>{delete Ze[e]}),(()=>{delete Ze[e]}))}));return i.cacheCount=1,Ze[e]=i,i},unload:function(e){const{cornerstone:t}=ht;We[e]&&(We[e].cacheCount--,0===We[e].cacheCount&&($e-=We[e].dataSet.byteArray.length,delete We[e],t.triggerEvent(t.events,"datasetscachechanged",{uri:e,action:"unloaded",cacheInfo:qe()})))},getInfo:qe,purge:function(){We={},Ze={},$e=0},get:function(e){let t;if(e.includes("&frame=")){const{frame:r,dataSet:n}=je.retrieveMultiframeDataset(e);t=function(e,t){if(!t)return;const{NumberOfFrames:r,PerFrameFunctionalGroupsSequence:n,SharedFunctionalGroupsSequence:a,otherElements:o}=Be(t);if(n||r>1){const{shared:r,perFrame:i}=Fe(n,a,e),s={elements:{...o,...r,...i}},l=Object.create(t);return Object.assign(l,s)}return t}(r,n)}else We[e]&&(t=We[e].dataSet);return t},update:function(e,t){const r=We[e];r?($e-=r.dataSet.byteArray.length,r.dataSet=t,$e+=t.byteArray.length,ht.cornerstone.triggerEvent(ht.cornerstone.events,"datasetscachechanged",{uri:e,action:"updated",cacheInfo:qe()})):console.error(`No loaded dataSet for uri ${e}`)}};function Ve(e,t){const r=e.string("x00080008");if(r){const e=r.split("\\");if(e.length>t)return e[t]}}function ze(e){let t=Ee(e,"x00200037",6);return!t&&e.elements.x00209116&&(t=Ee(e.elements.x00209116.items[0].dataSet,"x00200037",6)),t||(t=function(e){let t;if(e.string("x00080060").includes("NM")){const r=Ve(e,2);r&&w(r)&&e.elements.x00540022&&(t=Ee(e.elements.x00540022.items[0].dataSet,"x00200037",6))}return t}(e)),t}function He(e){let t=Ee(e,"x00200032",3);return!t&&e.elements.x00209113&&(t=Ee(e.elements.x00209113.items[0].dataSet,"x00200032",3)),t||(t=function(e){let t;if(e.string("x00080060").includes("NM")){const r=Ve(e,2);r&&w(r)&&e.elements.x00540022&&(t=Ee(e.elements.x00540022.items[0].dataSet,"x00200032",3))}return t}(e)),t}function Ye(e){let t=Ee(e,"x00280030",2);return!t&&e.elements.x00289110&&(t=Ee(e.elements.x00289110.items[0].dataSet,"x00280030",2)),t}function Qe(e){let t;return e.elements.x00180050?t=e.floatString("x00180050"):e.elements.x00289110&&e.elements.x00289110.items.length&&e.elements.x00289110.items[0].dataSet.elements.x00180050&&(t=e.elements.x00289110.items[0].dataSet.floatString("x00180050")),t}const Ke=function e(t,r){const{dicomParser:n}=ht;if(Array.isArray(r))return;const a=Me(r);if("multiframeModule"===t){const e=je.retrieveMultiframeDataset(a.url);if(!e.dataSet)return;const t=function(e,t){if(!e)return;const{NumberOfFrames:r,PerFrameFunctionalGroupsSequence:n,SharedFunctionalGroupsSequence:a}=Be(e);if(n||r>1){const{shared:e,perFrame:o}=Fe(n,a,t);return{NumberOfFrames:r,PerFrameFunctionalInformation:o,SharedFunctionalInformation:e}}return{NumberOfFrames:r}}(e.dataSet,e.frame);return t}let o=a.url;a.frame&&(o=`${o}&frame=${a.frame}`);const i=Ge.get(o);if(i){if("generalSeriesModule"===t)return{modality:i.string("x00080060"),seriesInstanceUID:i.string("x0020000e"),seriesNumber:i.intString("x00200011"),studyInstanceUID:i.string("x0020000d"),seriesDate:n.parseDA(i.string("x00080021")),seriesTime:n.parseTM(i.string("x00080031")||""),acquisitionDate:n.parseDA(i.string("x00080022")||""),acquisitionTime:n.parseTM(i.string("x00080032")||"")};if("patientStudyModule"===t)return{patientAge:i.intString("x00101010"),patientSize:i.floatString("x00101020"),patientWeight:i.floatString("x00101030")};if("imagePlaneModule"===t){const e=ze(i),t=He(i),r=Ye(i);let n;i.elements.x00200052&&(n=i.string("x00200052"));const a=Qe(i);let o;i.elements.x00201041&&(o=i.floatString("x00201041"));let s=null,l=null;r&&(l=r[0],s=r[1]);let c=null,u=null;return e&&(c=[parseFloat(e[0]),parseFloat(e[1]),parseFloat(e[2])],u=[parseFloat(e[3]),parseFloat(e[4]),parseFloat(e[5])]),{frameOfReferenceUID:n,rows:i.uint16("x00280010"),columns:i.uint16("x00280011"),imageOrientationPatient:e,rowCosines:c,columnCosines:u,imagePositionPatient:t,sliceThickness:a,sliceLocation:o,pixelSpacing:r,rowPixelSpacing:l,columnPixelSpacing:s}}if("nmMultiframeGeometryModule"===t){const e=i.string("x00080060"),t=Ve(i,2);return{modality:e,imageType:i.string("x00080008"),imageSubType:t,imageOrientationPatient:ze(i),imagePositionPatient:He(i),sliceThickness:Qe(i),pixelSpacing:Ye(i),numberOfFrames:i.uint16("x00280008"),isNMReconstructable:w(t)&&e.includes("NM")}}if("imagePixelModule"===t)return Ce(i);if("modalityLutModule"===t)return{rescaleIntercept:i.floatString("x00281052"),rescaleSlope:i.floatString("x00281053"),rescaleType:i.string("x00281054"),modalityLUTSequence:_e(i.uint16("x00280103"),i.elements.x00283000)};if("voiLutModule"===t){const e=Ae(i);return{windowCenter:Ee(i,"x00281050",1),windowWidth:Ee(i,"x00281051",1),voiLUTSequence:_e(e,i.elements.x00283010)}}if("sopCommonModule"===t)return{sopClassUID:i.string("x00080016"),sopInstanceUID:i.string("x00080018")};if("petIsotopeModule"===t){const e=i.elements.x00540016;if(void 0===e)return;const t=e.items[0].dataSet;return{radiopharmaceuticalInfo:{radiopharmaceuticalStartTime:n.parseTM(t.string("x00181072")||""),radionuclideTotalDose:t.floatString("x00181074"),radionuclideHalfLife:t.floatString("x00181075")}}}return"overlayPlaneModule"===t?function(e){const t=[];for(let r=0;r<=30;r+=2){let n=`x60${r.toString(16)}`;4===n.length&&(n=`x600${r.toString(16)}`);const a=e.elements[`${n}3000`];if(!a)continue;const o=[];for(let t=0;t<a.length;t++)for(let r=0;r<8;r++){const n=e.byteArray[a.dataOffset+t];o[8*t+r]=n>>r&1}t.push({rows:e.uint16(`${n}0010`),columns:e.uint16(`${n}0011`),type:e.string(`${n}0040`),x:e.int16(`${n}0050`,1)-1,y:e.int16(`${n}0050`,0)-1,pixelData:o,description:e.string(`${n}0022`),label:e.string(`${n}1500`),roiArea:e.string(`${n}1301`),roiMean:e.string(`${n}1302`),roiStandardDeviation:e.string(`${n}1303`)})}return{overlays:t}}(i):"transferSyntax"===t?{transferSyntaxUID:i.string("x00020010")}:"petSeriesModule"===t?{correctedImage:i.string("x00280051"),units:i.string("x00541001"),decayCorrection:i.string("x00541102")}:"petImageModule"===t?{frameReferenceTime:i.floatString(i.string("x00541300")||""),actualFrameDuration:i.intString(i.string("x00181242"))}:"instance"===t?D(r,e,P):void 0}};let Je=[];const Xe={add:function(e){return"dicomfile:"+(Je.push(e)-1)},get:function(e){return Je[e]},remove:function(e){Je[e]=void 0},purge:function(){Je=[]}};var et=a(713);function tt(e,t){const{dicomParser:r}=ht;if(e.elements.x7fe00010&&e.elements.x7fe00010.basicOffsetTable.length)return r.readEncapsulatedImageFrame(e,e.elements.x7fe00010,t);if(function(e){return e.intString("x00280008")!==e.elements.x7fe00010.fragments.length}(e)){const n=r.createJPEGBasicOffsetTable(e,e.elements.x7fe00010);return r.readEncapsulatedImageFrame(e,e.elements.x7fe00010,t,n)}const n=e.elements.x7fe00010.fragments,a=new et.ByteStream(e.byteArrayParser,e.byteArray,e.elements.x7fe00010.dataOffset),o=(0,et.readSequenceItem)(a);if("xfffee000"!==o.tag)throw"dicomParser.readEncapsulatedPixelData: missing basic offset table xfffee000";a.seek(o.length);const i=a.position;if(t+1>n.length)throw"dicomParser.readEncapsulatedPixelData: frame exceeds number of fragments";const s=i+n[t].offset+8,l=n[t].length;return new Uint8Array(a.byteArray.buffer.slice(a.byteArray.byteOffset+s,a.byteArray.byteOffset+s+l))}function rt(e,t){return e&1<<t}const nt=function(e,t,r){const n=new Uint8Array(r);for(let a=0;a<r;a++){const r=e[Math.floor(a/8)+t],o=a%8;n[a]=rt(r,o)?1:0}return n};const at=function(e,t){const r=e.elements.x7fe00010||e.elements.x7fe00008,n=e.uint16("x00280100"),a=e.uint16("x00280010"),o=e.uint16("x00280011");let i=e.uint16("x00280002");"YBR_FULL_422"===e.string("x00280004")&&(i=2,console.warn("Using SamplesPerPixel of 2 for YBR_FULL_422 photometric interpretation.\n See http://dicom.nema.org/medical/dicom/current/output/chtml/part03/sect_C.7.6.3.html for more information."));const s=r.dataOffset,l=a*o*i;let c;if(8===n){if(c=s+t*l,c>=e.byteArray.length)throw new Error("frame exceeds size of pixelData");return new Uint8Array(e.byteArray.buffer.slice(c,c+l))}if(16===n){if(c=s+t*l*2,c>=e.byteArray.length)throw new Error("frame exceeds size of pixelData");return new Uint8Array(e.byteArray.buffer.slice(c,c+2*l))}if(1===n){if(c=s+t*l*.125,c>=e.byteArray.length)throw new Error("frame exceeds size of pixelData");return nt(e.byteArray,c,l)}if(32===n){if(c=s+t*l*4,c>=e.byteArray.length)throw new Error("frame exceeds size of pixelData");return new Uint8Array(e.byteArray.buffer.slice(c,c+4*l))}throw new Error("unsupported pixel format")};const ot=function(e){const t=Me(e),r=parseInt(t.url,10),n=Xe.get(r);return new Promise(((e,t)=>{const r=new FileReader;r.onload=t=>{const r=t.target.result;e(r)},r.onerror=t,r.readAsArrayBuffer(n)}))};const it=function(e,t=0){const r=e.elements.x7fe00010||e.elements.x7fe00008;return r?r.encapsulatedPixelData?tt(e,t):at(e,t):null};function st(e,t,r=0,n,a,o){const i=(new Date).getTime(),s={cancelFn:void 0,promise:void 0};return s.promise=new Promise(((l,c)=>{e.then((e=>{const u=it(e,r),d=e.string("x00020010"),f=(new Date).getTime(),m=xe(t,u,d,a);!function(e,t){e.decache=function(){const e=Me(t);Ge.unload(e.url)}}(s,t),m.then((t=>{t.data=e,t.sharedCacheKey=n;const r=(new Date).getTime();t.loadTimeInMS=f-i,t.totalTimeInMS=r-i,void 0!==o&&void 0!==o.imageDoneCallback&&o.imageDoneCallback(t),l(t)}),(function(t){c({error:t,dataSet:e})}))}),(function(e){c({error:e})}))})),s}function lt(e){return"dicomweb"===e||"wadouri"===e?O:"dicomfile"===e?ot:void 0}function ct(e,t={}){const r=Me(e);let n=(t=Object.assign({},t)).loader;if(void 0===n?n=lt(r.scheme):delete t.loader,Ge.isLoaded(r.url)){return function(e,t,r=0,n,a){const o=(new Date).getTime();return{promise:new Promise(((i,s)=>{const l=(new Date).getTime();let c;try{const n=it(e,r),o=e.string("x00020010");c=xe(t,n,o,a)}catch(t){return void s({error:t,dataSet:e})}c.then((t=>{t.data=e,t.sharedCacheKey=n;const r=(new Date).getTime();t.loadTimeInMS=l-o,t.totalTimeInMS=r-o,i(t)}),s)})),cancelFn:void 0}}(Ge.get(r.url,n,e),e,r.pixelDataFrame,r.url,t)}return st(Ge.load(r.url,n,e),e,r.frame,r.url,t)}const ut={metaData:{getImagePixelModule:Ce,getLUTs:_e,getModalityLUTOutputPixelRepresentation:Ae,getNumberValues:Ee,metaDataProvider:Ke},dataSetCacheManager:Ge,fileManager:Xe,getEncapsulatedImageFrame:tt,getUncompressedImageFrame:at,loadFileRequest:ot,loadImageFromPromise:st,getLoaderForScheme:lt,loadImage:ct,parseImageId:Me,unpackBinaryFrame:nt,register:function(e){e.registerImageLoader("dicomweb",ct),e.registerImageLoader("wadouri",ct),e.registerImageLoader("dicomfile",ct),e.metaData.addProvider(Ke)}};const dt=function(e){Te.register(e),ut.register(e)};let ft,mt;const gt={set cornerstone(e){ft=e,dt(ft)},get cornerstone(){if(!ft){if(ft=window&&window.cornerstone,!ft)throw new Error("cornerstoneDICOMImageLoader requires a copy of Cornerstone to work properly. Please add cornerstoneDICOMImageLoader.external.cornerstone = cornerstone; to your application.");dt(ft)}return ft},set dicomParser(e){mt=e},get dicomParser(){if(!mt){if(!window||!window.dicomParser)throw new Error("cornerstoneDICOMImageLoader requires a copy of dicomParser to work properly. Please add cornerstoneDICOMImageLoader.external.dicomParser = dicomParser; to your application.");mt=window.dicomParser}return mt}},ht=gt;function pt(e,t){const r=e.length,n=new Uint8ClampedArray(r);for(let a=0;a<r;++a)n[a]=e[a]>>t;return n}function bt(e,t,r){const n=e.columns*e.rows,a=e.pixelData;let o=e.redPaletteColorLookupTableData;o||(o=ht.cornerstone.metaData.get("imagePixelModule",e.imageId)?.redPaletteColorLookupTableData);let i=e.greenPaletteColorLookupTableData;i||(i=ht.cornerstone.metaData.get("imagePixelModule",e.imageId)?.greenPaletteColorLookupTableData);let s=e.bluePaletteColorLookupTableData;if(s||(s=ht.cornerstone.metaData.get("imagePixelModule",e.imageId)?.bluePaletteColorLookupTableData),!o||!i||!s)throw new Error("The image does not have a complete color palette. R, G, and B palette data are required.");const l=e.redPaletteColorLookupTableData.length;let c=0,u=0;const d=e.redPaletteColorLookupTableDescriptor[1],f=8===e.redPaletteColorLookupTableDescriptor[2]?0:8,m=pt(o,f),g=pt(i,f),h=pt(s,f);if(r)for(let e=0;e<n;++e){let e=a[c++];e<d?e=0:e>d+l-1?e=l-1:e-=d,t[u++]=m[e],t[u++]=g[e],t[u++]=h[e],t[u++]=255}else for(let e=0;e<n;++e){let e=a[c++];e<d?e=0:e>d+l-1?e=l-1:e-=d,t[u++]=m[e],t[u++]=g[e],t[u++]=h[e]}}const xt=function(e){E(e)};const wt=function(e,t){if(t=t||e.transferSyntax,8===e.bitsAllocated&&"1.2.840.10008.1.2.4.50"===t&&(3===e.samplesPerPixel||4===e.samplesPerPixel))return!0},yt={convertRGBColorByPixel:e,convertRGBColorByPlane:t,convertYBRFullByPixel:r,convertYBRFullByPlane:n,convertPALETTECOLOR:bt,wadouri:ut,wadors:Te,configure:xt,convertColorSpace:H,createImage:xe,decodeImageFrame:fe,decodeJPEGBaseline8BitColor:Q,getImageFrame:me,getPixelData:G,getMinMax:V,isColorImage:ge,isJPEGBaseline8BitColor:wt,webWorkerManager:ce,internal:R,external:gt}})(),o})()));
|
|
117349
117735
|
|
|
117350
117736
|
|
|
117351
117737
|
/***/ }),
|
|
@@ -241376,7 +241762,7 @@ var selectOrdinal = function selectOrdinal() {
|
|
|
241376
241762
|
/******/ // This function allow to reference async chunks
|
|
241377
241763
|
/******/ __webpack_require__.u = (chunkId) => {
|
|
241378
241764
|
/******/ // return url for filenames based on template
|
|
241379
|
-
/******/ return "" + (chunkId === 18 ? "dicom-microscopy-viewer" : chunkId) + ".bundle." + {"12":"
|
|
241765
|
+
/******/ return "" + (chunkId === 18 ? "dicom-microscopy-viewer" : chunkId) + ".bundle." + {"12":"56b9d54b9c0af71af1d7","18":"2c146384eb9466d02ff8","19":"3dd19edbc75a5aebd1de","23":"e008ad788170f2ed5569","26":"c92012465cee00a2a708","95":"db9d2d504abc5dd4fdfa","125":"253395f320b72180da63","170":"80ad57e16afc8855b0fc","181":"87f1df4f401b8023cfd1","185":"2d7c72ca2f461d711df9","199":"30893a2f3da90d37b0d9","202":"a607e9ab460999d8c0c8","220":"f7e1c96c94245e70f2be","250":"5634282a01bd6e15b70d","281":"fc5d5a58827c8ba054b0","359":"644102e1339a5769fe43","410":"089c191e6500a09de5f5","417":"af0a207c29b109f84159","420":"208f94f15dcc2be09dc0","451":"57c21db5d003c75e9d61","466":"be8d38922b545c9657dd","471":"49c8d281adbae4a2c4df","483":"4866c3396b19964a0010","485":"8667a696ac2eaf99e4fa","506":"9fbbe1b884e79e06a3f6","530":"a03b6f942ace3e1baa1e","579":"8fc434a0c13d3f662d42","613":"b3839caf45bff66f2667","661":"65dd579322b265c6e321","686":"dccef1f36e4bc79bcc48","687":"bc44675be7433cd8670b","738":"a9dd630892da1e5dcabf","814":"b5267cf0fefd476ea55d","822":"775a62e1f79c403f3aed","886":"c8dd3ecc42a4253de278","965":"fc770e33fa48b72621cc"}[chunkId] + ".js";
|
|
241380
241766
|
/******/ };
|
|
241381
241767
|
/******/ })();
|
|
241382
241768
|
/******/
|