@ohif/app 3.8.0-beta.34 → 3.8.0-beta.36

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (26) hide show
  1. package/dist/{170.bundle.4fbae6bee18b7029ee16.js → 170.bundle.68030fbeb41c3b9f8fc5.js} +9 -9
  2. package/dist/{181.bundle.ae92b8a551d041d06e90.js → 181.bundle.d2fe517852935b82368b.js} +4 -4
  3. package/dist/{185.bundle.b9c07345d013fd7703a3.js → 185.bundle.c0123f4dc6721f89c3fb.js} +2 -2
  4. package/dist/{199.bundle.938af45362af3b5f0177.js → 199.bundle.ad2d8fe29adaf8351892.js} +2 -2
  5. package/dist/{250.bundle.09c69d348a5d965debc8.js → 250.bundle.ba94ff371388e395cd05.js} +2 -2
  6. package/dist/{456.bundle.8ab9a01c88d2f2e9fcad.js → 456.bundle.23c8a1864c8a73d61431.js} +5 -5
  7. package/dist/{466.bundle.090a8294f4c8f72646a4.js → 466.bundle.dfbfe891b1796dcd3202.js} +4 -4
  8. package/dist/{483.bundle.c6fabbd21a990ac6d919.js → 483.bundle.bba6af7fc56c0bdd7f47.js} +4 -4
  9. package/dist/{566.bundle.4840518afd323372c70f.js → 514.bundle.e89082f91e5a7ef3e039.js} +865 -9
  10. package/dist/{738.bundle.0d7b7957708216809133.js → 738.bundle.e3b5dfe1641d2fa31a4a.js} +2 -2
  11. package/dist/{822.bundle.55759fd8e9b0b489cc6b.js → 822.bundle.f5ae3f366ce742fb060a.js} +2 -2
  12. package/dist/{95.bundle.d7a9f450bed3b770504d.js → 95.bundle.830304446bffa705883c.js} +2 -2
  13. package/dist/{app.bundle.14bd3b70f68243dd822d.js → app.bundle.355b2090b636cb6685e7.js} +185 -17
  14. package/dist/index.html +1 -1
  15. package/dist/sw.js +1 -1
  16. package/package.json +18 -18
  17. /package/dist/{12.bundle.f6b8fca3d7d631530f77.js → 12.bundle.b04783905602e7a39e75.js} +0 -0
  18. /package/dist/{19.bundle.a88db025c4d3aa455a25.js → 19.bundle.c99afb9553eff394fb21.js} +0 -0
  19. /package/dist/{281.bundle.8a1b8a2d2daec1cfd2b5.js → 281.bundle.8072673a742f48b1635f.js} +0 -0
  20. /package/dist/{359.bundle.74802060f22ec11e22b8.js → 359.bundle.5a4fef973fa991f39e7e.js} +0 -0
  21. /package/dist/{410.bundle.e16f52b715e1f3b0e130.js → 410.bundle.a31626fae42ed2d37134.js} +0 -0
  22. /package/dist/{506.bundle.862683a37c9addfc0a36.js → 506.bundle.521f7917257d3d6d2724.js} +0 -0
  23. /package/dist/{613.bundle.26c7bb7e2d7e7bd60597.js → 613.bundle.7b076c886664b281547f.js} +0 -0
  24. /package/dist/{687.bundle.1a5281313b618c99b42a.js → 687.bundle.6bd52991c7a20d72eac0.js} +0 -0
  25. /package/dist/{814.bundle.dfd2a2f651cc777e745f.js → 814.bundle.1b8ff6e92b6bb0187729.js} +0 -0
  26. /package/dist/{965.bundle.fecaa890411a2618060a.js → 965.bundle.7e3a36592b72e036ddaa.js} +0 -0
@@ -987,8 +987,8 @@ function WorkList({
987
987
  };
988
988
  });
989
989
  const hasStudies = numOfStudies > 0;
990
- const versionNumber = "3.8.0-beta.34";
991
- const commitHash = "6ca13c0a4cb5a95bbb52b0db902b5dbf72f8aa6e";
990
+ const versionNumber = "3.8.0-beta.36";
991
+ const commitHash = "0eb502aaf0d95d7515e23ed0e03b140ac17bb862";
992
992
  const menuOptions = [{
993
993
  title: t('Header:About'),
994
994
  icon: 'info',
@@ -1945,19 +1945,19 @@ async function loadModule(module) {
1945
1945
  return imported.default;
1946
1946
  }
1947
1947
  if (module === "@ohif/extension-cornerstone") {
1948
- const imported = await Promise.all(/* import() */[__webpack_require__.e(566), __webpack_require__.e(661), __webpack_require__.e(95), __webpack_require__.e(456)]).then(__webpack_require__.bind(__webpack_require__, 86456));
1948
+ const imported = await Promise.all(/* import() */[__webpack_require__.e(514), __webpack_require__.e(661), __webpack_require__.e(95), __webpack_require__.e(456)]).then(__webpack_require__.bind(__webpack_require__, 86456));
1949
1949
  return imported.default;
1950
1950
  }
1951
1951
  if (module === "@ohif/extension-measurement-tracking") {
1952
- const imported = await Promise.all(/* import() */[__webpack_require__.e(566), __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));
1952
+ const imported = await Promise.all(/* import() */[__webpack_require__.e(514), __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));
1953
1953
  return imported.default;
1954
1954
  }
1955
1955
  if (module === "@ohif/extension-cornerstone-dicom-sr") {
1956
- const imported = await Promise.all(/* import() */[__webpack_require__.e(566), __webpack_require__.e(202), __webpack_require__.e(170)]).then(__webpack_require__.bind(__webpack_require__, 42170));
1956
+ const imported = await Promise.all(/* import() */[__webpack_require__.e(514), __webpack_require__.e(202), __webpack_require__.e(170)]).then(__webpack_require__.bind(__webpack_require__, 42170));
1957
1957
  return imported.default;
1958
1958
  }
1959
1959
  if (module === "@ohif/extension-cornerstone-dicom-seg") {
1960
- const imported = await Promise.all(/* import() */[__webpack_require__.e(566), __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));
1960
+ const imported = await Promise.all(/* import() */[__webpack_require__.e(514), __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));
1961
1961
  return imported.default;
1962
1962
  }
1963
1963
  if (module === "@ohif/extension-dicom-microscopy") {
@@ -1973,7 +1973,7 @@ async function loadModule(module) {
1973
1973
  return imported.default;
1974
1974
  }
1975
1975
  if (module === "@ohif/extension-tmtv") {
1976
- const imported = await Promise.all(/* import() */[__webpack_require__.e(566), __webpack_require__.e(202), __webpack_require__.e(483)]).then(__webpack_require__.bind(__webpack_require__, 4483));
1976
+ const imported = await Promise.all(/* import() */[__webpack_require__.e(514), __webpack_require__.e(202), __webpack_require__.e(483)]).then(__webpack_require__.bind(__webpack_require__, 4483));
1977
1977
  return imported.default;
1978
1978
  }
1979
1979
  if (module === "@ohif/extension-test") {
@@ -6429,7 +6429,7 @@ const detectionOptions = {
6429
6429
  }
6430
6430
  });
6431
6431
  ;// CONCATENATED MODULE: ../../i18n/package.json
6432
- const package_namespaceObject = JSON.parse('{"i8":"3.8.0-beta.33"}');
6432
+ const package_namespaceObject = JSON.parse('{"i8":"3.8.0-beta.35"}');
6433
6433
  ;// CONCATENATED MODULE: ../../i18n/src/utils.js
6434
6434
  const languagesMap = {
6435
6435
  ar: 'Arabic',
@@ -58329,7 +58329,7 @@ webpackContext.id = 84179;
58329
58329
 
58330
58330
  /***/ }),
58331
58331
 
58332
- /***/ 27968:
58332
+ /***/ 62881:
58333
58333
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
58334
58334
 
58335
58335
  "use strict";
@@ -58537,6 +58537,7 @@ __webpack_require__.d(utilities_namespaceObject, {
58537
58537
  getBufferConfiguration: () => (getBufferConfiguration),
58538
58538
  getClosestImageId: () => (getClosestImageId),
58539
58539
  getClosestStackImageIndexForPoint: () => (getClosestStackImageIndexForPoint),
58540
+ getCurrentVolumeViewportSlice: () => (getCurrentVolumeViewportSlice),
58540
58541
  getImageLegacy: () => (utilities_getImageLegacy),
58541
58542
  getImageSliceDataForVolumeViewport: () => (utilities_getImageSliceDataForVolumeViewport),
58542
58543
  getMinMax: () => (getMinMax),
@@ -58577,6 +58578,7 @@ __webpack_require__.d(utilities_namespaceObject, {
58577
58578
  sortImageIdsAndGetSpacing: () => (sortImageIdsAndGetSpacing),
58578
58579
  spatialRegistrationMetadataProvider: () => (utilities_spatialRegistrationMetadataProvider),
58579
58580
  transferFunctionUtils: () => (transferFunctionUtils_namespaceObject),
58581
+ transformIndexToWorld: () => (transformIndexToWorld),
58580
58582
  transformWorldToIndex: () => (transformWorldToIndex),
58581
58583
  triggerEvent: () => (triggerEvent),
58582
58584
  updateVTKImageDataWithCornerstoneImage: () => (updateVTKImageDataWithCornerstoneImage),
@@ -84851,6 +84853,11 @@ function transformWorldToIndex(imageData, worldPos) {
84851
84853
  return index;
84852
84854
  }
84853
84855
 
84856
+ ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/transformIndexToWorld.js
84857
+ function transformIndexToWorld(imageData, voxelPos) {
84858
+ return imageData.indexToWorld(voxelPos);
84859
+ }
84860
+
84854
84861
  ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/requestPool/imageLoadPoolManager.js
84855
84862
 
84856
84863
 
@@ -87241,6 +87248,105 @@ function getPlaneMetadata(imageId) {
87241
87248
  return { rowCosines, columnCosines, imagePositionPatient, planeNormal };
87242
87249
  }
87243
87250
 
87251
+ ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/transformIJKToCanvas.js
87252
+
87253
+ function transformIJKToCanvas(viewport, ijkPoint) {
87254
+ const { imageData: vtkImageData } = viewport.getImageData();
87255
+ const worldPoint = transformIndexToWorld(vtkImageData, ijkPoint);
87256
+ return viewport.worldToCanvas(worldPoint);
87257
+ }
87258
+
87259
+ ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/transformCanvasToIJK.js
87260
+
87261
+ function transformCanvasToIJK(viewport, canvasPoint) {
87262
+ const { imageData: vtkImageData } = viewport.getImageData();
87263
+ const worldPoint = viewport.canvasToWorld(canvasPoint);
87264
+ return transformWorldToIndex(vtkImageData, worldPoint);
87265
+ }
87266
+
87267
+ ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/getCurrentVolumeViewportSlice.js
87268
+
87269
+
87270
+
87271
+ function getCurrentVolumeViewportSlice(viewport) {
87272
+ const { dimensions, scalarData } = viewport.getImageData();
87273
+ const { width: canvasWidth, height: canvasHeight } = viewport.getCanvas();
87274
+ const ijkOriginPoint = transformCanvasToIJK(viewport, [0, 0]);
87275
+ const ijkRowPoint = transformCanvasToIJK(viewport, [canvasWidth - 1, 0]);
87276
+ const ijkColPoint = transformCanvasToIJK(viewport, [0, canvasHeight - 1]);
87277
+ const ijkRowVec = esm/* vec3.sub */.R3.sub(esm/* vec3.create */.R3.create(), ijkRowPoint, ijkOriginPoint);
87278
+ const ijkColVec = esm/* vec3.sub */.R3.sub(esm/* vec3.create */.R3.create(), ijkColPoint, ijkOriginPoint);
87279
+ const ijkSliceVec = esm/* vec3.cross */.R3.cross(esm/* vec3.create */.R3.create(), ijkRowVec, ijkColVec);
87280
+ esm/* vec3.normalize */.R3.normalize(ijkRowVec, ijkRowVec);
87281
+ esm/* vec3.normalize */.R3.normalize(ijkColVec, ijkColVec);
87282
+ esm/* vec3.normalize */.R3.normalize(ijkSliceVec, ijkSliceVec);
87283
+ const maxIJKRowVec = Math.max(Math.abs(ijkRowVec[0]), Math.abs(ijkRowVec[1]), Math.abs(ijkRowVec[2]));
87284
+ const maxIJKColVec = Math.max(Math.abs(ijkColVec[0]), Math.abs(ijkColVec[1]), Math.abs(ijkColVec[2]));
87285
+ if (!esm/* glMatrix.equals */.DV.equals(1, maxIJKRowVec) || !esm/* glMatrix.equals */.DV.equals(1, maxIJKColVec)) {
87286
+ throw new Error('Livewire is not available for rotate/oblique viewports');
87287
+ }
87288
+ const [sx, sy, sz] = dimensions;
87289
+ const ijkCorners = [
87290
+ [0, 0, 0],
87291
+ [sx - 1, 0, 0],
87292
+ [0, sy - 1, 0],
87293
+ [sx - 1, sy - 1, 0],
87294
+ [0, 0, sz - 1],
87295
+ [sx - 1, 0, sz - 1],
87296
+ [0, sy - 1, sz - 1],
87297
+ [sx - 1, sy - 1, sz - 1],
87298
+ ];
87299
+ const canvasCorners = ijkCorners.map((ijkCorner) => transformIJKToCanvas(viewport, ijkCorner));
87300
+ const canvasAABB = canvasCorners.reduce((aabb, canvasPoint) => {
87301
+ aabb.minX = Math.min(aabb.minX, canvasPoint[0]);
87302
+ aabb.minY = Math.min(aabb.minY, canvasPoint[1]);
87303
+ aabb.maxX = Math.max(aabb.maxX, canvasPoint[0]);
87304
+ aabb.maxY = Math.max(aabb.maxY, canvasPoint[1]);
87305
+ return aabb;
87306
+ }, { minX: Infinity, minY: Infinity, maxX: -Infinity, maxY: -Infinity });
87307
+ const ijkTopLeft = transformCanvasToIJK(viewport, [
87308
+ canvasAABB.minX,
87309
+ canvasAABB.minY,
87310
+ ]);
87311
+ const ijkBottomRight = transformCanvasToIJK(viewport, [
87312
+ canvasAABB.maxX,
87313
+ canvasAABB.maxY,
87314
+ ]);
87315
+ const ijkDiagonal = esm/* vec3.sub */.R3.sub(esm/* vec3.create */.R3.create(), ijkBottomRight, ijkTopLeft);
87316
+ const sliceToIndexMatrix = esm/* mat4.fromValues */._E.fromValues(ijkRowVec[0], ijkRowVec[1], ijkRowVec[2], 0, ijkColVec[0], ijkColVec[1], ijkColVec[2], 0, ijkSliceVec[0], ijkSliceVec[1], ijkSliceVec[2], 0, ijkTopLeft[0], ijkTopLeft[1], ijkTopLeft[2], 1);
87317
+ const indexToSliceMatrix = esm/* mat4.invert */._E.invert(esm/* mat4.create */._E.create(), sliceToIndexMatrix);
87318
+ const sliceWidth = esm/* vec3.dot */.R3.dot(ijkRowVec, ijkDiagonal) + 1;
87319
+ const sliceHeight = esm/* vec3.dot */.R3.dot(ijkColVec, ijkDiagonal) + 1;
87320
+ const TypedArray = scalarData.constructor;
87321
+ const sliceData = new TypedArray(sliceWidth * sliceHeight);
87322
+ const pixelsPerSlice = dimensions[0] * dimensions[1];
87323
+ const ijkPixelRow = esm/* vec3.clone */.R3.clone(ijkTopLeft);
87324
+ const ijkPixelCol = esm/* vec3.create */.R3.create();
87325
+ let slicePixelIndex = 0;
87326
+ for (let y = 0; y < sliceHeight; y++) {
87327
+ esm/* vec3.copy */.R3.copy(ijkPixelCol, ijkPixelRow);
87328
+ for (let x = 0; x < sliceWidth; x++) {
87329
+ const volumePixelIndex = ijkPixelCol[2] * pixelsPerSlice +
87330
+ ijkPixelCol[1] * dimensions[0] +
87331
+ ijkPixelCol[0];
87332
+ if (volumePixelIndex < scalarData.length) {
87333
+ sliceData[slicePixelIndex] = scalarData[volumePixelIndex];
87334
+ }
87335
+ slicePixelIndex++;
87336
+ esm/* vec3.add */.R3.add(ijkPixelCol, ijkPixelCol, ijkRowVec);
87337
+ }
87338
+ esm/* vec3.add */.R3.add(ijkPixelRow, ijkPixelRow, ijkColVec);
87339
+ }
87340
+ return {
87341
+ width: sliceWidth,
87342
+ height: sliceHeight,
87343
+ scalarData: sliceData,
87344
+ sliceToIndexMatrix,
87345
+ indexToSliceMatrix,
87346
+ };
87347
+ }
87348
+
87349
+
87244
87350
  ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/spatialRegistrationMetadataProvider.js
87245
87351
 
87246
87352
 
@@ -88390,6 +88496,8 @@ function setTransferFunctionNodes(transferFunction, nodes) {
88390
88496
 
88391
88497
 
88392
88498
 
88499
+
88500
+
88393
88501
 
88394
88502
 
88395
88503
 
@@ -104069,6 +104177,9 @@ class Viewport {
104069
104177
  if (storeAsInitialCamera) {
104070
104178
  this.setInitialCamera(modifiedCamera);
104071
104179
  }
104180
+ if (resetZoom) {
104181
+ this.setZoom(1, storeAsInitialCamera);
104182
+ }
104072
104183
  const RESET_CAMERA_EVENT = {
104073
104184
  type: 'ResetCameraEvent',
104074
104185
  renderer,
@@ -104267,7 +104378,7 @@ class Viewport {
104267
104378
  }
104268
104379
  async updateClippingPlanesForActors(updatedCamera) {
104269
104380
  const actorEntries = this.getActors();
104270
- const allPromises = actorEntries.map(async (actorEntry) => {
104381
+ actorEntries.map((actorEntry) => {
104271
104382
  if (!actorEntry.actor) {
104272
104383
  return;
104273
104384
  }
@@ -104291,7 +104402,6 @@ class Viewport {
104291
104402
  viewport: this,
104292
104403
  });
104293
104404
  });
104294
- await Promise.all(allPromises);
104295
104405
  this.posProcessNewActors();
104296
104406
  }
104297
104407
  posProcessNewActors() {
@@ -104440,6 +104550,7 @@ class Viewport {
104440
104550
 
104441
104551
 
104442
104552
 
104553
+
104443
104554
  class BaseVolumeViewport extends RenderingEngine_Viewport {
104444
104555
  constructor(props) {
104445
104556
  super(props);
@@ -104464,7 +104575,7 @@ class BaseVolumeViewport extends RenderingEngine_Viewport {
104464
104575
  if (!applicableVolumeActorInfo) {
104465
104576
  return;
104466
104577
  }
104467
- const { colormap, VOILUTFunction, interpolationType, invert, slabThickness, } = this.viewportProperties;
104578
+ const { colormap, VOILUTFunction, interpolationType, invert, slabThickness, rotation, } = this.viewportProperties;
104468
104579
  const voiRanges = this.getActors()
104469
104580
  .map((actorEntry) => {
104470
104581
  const volumeActor = actorEntry.actor;
@@ -104488,8 +104599,22 @@ class BaseVolumeViewport extends RenderingEngine_Viewport {
104488
104599
  interpolationType: interpolationType,
104489
104600
  invert: invert,
104490
104601
  slabThickness: slabThickness,
104602
+ rotation: rotation,
104491
104603
  };
104492
104604
  };
104605
+ this.getRotation = () => {
104606
+ const { viewUp: currentViewUp, viewPlaneNormal, flipVertical, } = this.getCamera();
104607
+ const initialViewUp = flipVertical
104608
+ ? esm/* vec3.negate */.R3.negate(esm/* vec3.create */.R3.create(), this.initialViewUp)
104609
+ : this.initialViewUp;
104610
+ const initialToCurrentViewUpAngle = (esm/* vec3.angle */.R3.angle(initialViewUp, currentViewUp) * 180) / Math.PI;
104611
+ const initialToCurrentViewUpCross = esm/* vec3.cross */.R3.cross(esm/* vec3.create */.R3.create(), initialViewUp, currentViewUp);
104612
+ const normalDot = esm/* vec3.dot */.R3.dot(initialToCurrentViewUpCross, viewPlaneNormal);
104613
+ const value = normalDot >= 0
104614
+ ? initialToCurrentViewUpAngle
104615
+ : (360 - initialToCurrentViewUpAngle) % 360;
104616
+ return value;
104617
+ };
104493
104618
  this.getFrameOfReferenceUID = () => {
104494
104619
  return this._FrameOfReferenceUID;
104495
104620
  };
@@ -104589,6 +104714,7 @@ class BaseVolumeViewport extends RenderingEngine_Viewport {
104589
104714
  const camera = this.getVtkActiveCamera();
104590
104715
  camera.setDirectionOfProjection(-viewPlaneNormal[0], -viewPlaneNormal[1], -viewPlaneNormal[2]);
104591
104716
  camera.setViewUpFrom(viewUp);
104717
+ this.initialViewUp = viewUp;
104592
104718
  this.resetCamera();
104593
104719
  }
104594
104720
  initializeVolumeNewImageEventDispatcher() {
@@ -104776,6 +104902,25 @@ class BaseVolumeViewport extends RenderingEngine_Viewport {
104776
104902
  }
104777
104903
  this.viewportProperties.voiRange = voiRangeToUse;
104778
104904
  }
104905
+ setRotation(rotation) {
104906
+ const previousCamera = this.getCamera();
104907
+ this.rotateCamera(rotation);
104908
+ const camera = this.getCamera();
104909
+ const eventDetail = {
104910
+ previousCamera,
104911
+ camera,
104912
+ element: this.element,
104913
+ viewportId: this.id,
104914
+ renderingEngineId: this.renderingEngineId,
104915
+ rotation,
104916
+ };
104917
+ triggerEvent(this.element, enums_Events.CAMERA_MODIFIED, eventDetail);
104918
+ this.viewportProperties.rotation = rotation;
104919
+ }
104920
+ rotateCamera(rotation) {
104921
+ const rotationToApply = rotation - this.getRotation();
104922
+ this.getVtkActiveCamera().roll(-rotationToApply);
104923
+ }
104779
104924
  setDefaultProperties(ViewportProperties, volumeId) {
104780
104925
  if (volumeId == null) {
104781
104926
  this.globalDefaultProperties = ViewportProperties;
@@ -104794,7 +104939,7 @@ class BaseVolumeViewport extends RenderingEngine_Viewport {
104794
104939
  this.resetToDefaultProperties(volumeId);
104795
104940
  }
104796
104941
  }
104797
- setProperties({ voiRange, VOILUTFunction, invert, colormap, preset, interpolationType, slabThickness, } = {}, volumeId, suppressEvents = false) {
104942
+ setProperties({ voiRange, VOILUTFunction, invert, colormap, preset, interpolationType, slabThickness, rotation, } = {}, volumeId, suppressEvents = false) {
104798
104943
  if (this.globalDefaultProperties == null) {
104799
104944
  this.setDefaultProperties({
104800
104945
  voiRange,
@@ -104803,6 +104948,7 @@ class BaseVolumeViewport extends RenderingEngine_Viewport {
104803
104948
  colormap,
104804
104949
  preset,
104805
104950
  slabThickness,
104951
+ rotation,
104806
104952
  });
104807
104953
  }
104808
104954
  if (colormap?.name) {
@@ -104830,6 +104976,9 @@ class BaseVolumeViewport extends RenderingEngine_Viewport {
104830
104976
  this.setSlabThickness(slabThickness);
104831
104977
  this.viewportProperties.slabThickness = slabThickness;
104832
104978
  }
104979
+ if (rotation !== undefined) {
104980
+ this.setRotation(rotation);
104981
+ }
104833
104982
  }
104834
104983
  resetToDefaultProperties(volumeId) {
104835
104984
  const properties = this.globalDefaultProperties;
@@ -104852,6 +105001,9 @@ class BaseVolumeViewport extends RenderingEngine_Viewport {
104852
105001
  this.setSlabThickness(properties.slabThickness);
104853
105002
  this.viewportProperties.slabThickness = properties.slabThickness;
104854
105003
  }
105004
+ if (properties.rotation !== undefined) {
105005
+ this.setRotation(properties.rotation);
105006
+ }
104855
105007
  this.render();
104856
105008
  }
104857
105009
  setPreset(presetName, volumeId, suppressEvents) {
@@ -105027,6 +105179,7 @@ class BaseVolumeViewport extends RenderingEngine_Viewport {
105027
105179
  }
105028
105180
  else if (typeof orientation === 'string' &&
105029
105181
  constants_mprCameraValues[orientation]) {
105182
+ this.viewportProperties.orientation = orientation;
105030
105183
  return constants_mprCameraValues[orientation];
105031
105184
  }
105032
105185
  else {
@@ -105105,7 +105258,6 @@ class VolumeViewport extends RenderingEngine_BaseVolumeViewport {
105105
105258
  const { viewPlaneNormal, focalPoint } = this.getCamera();
105106
105259
  return getClosestImageId(volume, focalPoint, viewPlaneNormal);
105107
105260
  };
105108
- this.getRotation = () => 0;
105109
105261
  const { orientation } = this.options;
105110
105262
  if (orientation && orientation !== enums_OrientationAxis.ACQUISITION) {
105111
105263
  this.applyViewOrientation(orientation);
@@ -105150,6 +105302,7 @@ class VolumeViewport extends RenderingEngine_BaseVolumeViewport {
105150
105302
  viewPlaneNormal,
105151
105303
  viewUp,
105152
105304
  });
105305
+ this.viewportProperties.orientation = orientation;
105153
105306
  this.resetCamera();
105154
105307
  if (immediate) {
105155
105308
  this.render();
@@ -105187,6 +105340,7 @@ class VolumeViewport extends RenderingEngine_BaseVolumeViewport {
105187
105340
  viewPlaneNormal,
105188
105341
  viewUp,
105189
105342
  });
105343
+ this.initialViewUp = viewUp;
105190
105344
  this.resetCamera();
105191
105345
  }
105192
105346
  setBlendMode(blendMode, filterActorUIDs = [], immediate = false) {
@@ -105205,11 +105359,12 @@ class VolumeViewport extends RenderingEngine_BaseVolumeViewport {
105205
105359
  this.render();
105206
105360
  }
105207
105361
  }
105208
- resetCamera(resetPan = true, resetZoom = true, resetToCenter = true) {
105362
+ resetCamera(resetPan = true, resetZoom = true, resetToCenter = true, resetRotation = false) {
105209
105363
  super.resetCamera(resetPan, resetZoom, resetToCenter);
105210
105364
  this.resetVolumeViewportClippingRange();
105211
105365
  const activeCamera = this.getVtkActiveCamera();
105212
105366
  const viewPlaneNormal = activeCamera.getViewPlaneNormal();
105367
+ const viewUp = activeCamera.getViewUp();
105213
105368
  const focalPoint = activeCamera.getFocalPoint();
105214
105369
  const actorEntries = this.getActors();
105215
105370
  actorEntries.forEach((actorEntry) => {
@@ -105231,6 +105386,14 @@ class VolumeViewport extends RenderingEngine_BaseVolumeViewport {
105231
105386
  mapper.addClippingPlane(clipPlane2);
105232
105387
  }
105233
105388
  });
105389
+ if (resetRotation &&
105390
+ constants_mprCameraValues[this.viewportProperties.orientation] !== undefined) {
105391
+ const viewToReset = constants_mprCameraValues[this.viewportProperties.orientation];
105392
+ this.setCameraNoEvent({
105393
+ viewUp: viewToReset.viewUp,
105394
+ viewPlaneNormal: viewToReset.viewPlaneNormal,
105395
+ });
105396
+ }
105234
105397
  return true;
105235
105398
  }
105236
105399
  setSlabThickness(slabThickness, filterActorUIDs = []) {
@@ -105290,6 +105453,11 @@ class VolumeViewport extends RenderingEngine_BaseVolumeViewport {
105290
105453
  },
105291
105454
  volumeId: volumeActor.uid,
105292
105455
  };
105456
+ const resetPan = true;
105457
+ const resetZoom = true;
105458
+ const resetToCenter = true;
105459
+ const resetCameraRotation = true;
105460
+ this.resetCamera(resetPan, resetZoom, resetToCenter, resetCameraRotation);
105293
105461
  triggerEvent(this.element, enums_Events.VOI_MODIFIED, eventDetails);
105294
105462
  }
105295
105463
  }
@@ -117697,7 +117865,7 @@ async function createAndCacheGeometry(geometryId, options) {
117697
117865
  /***/ 61539:
117698
117866
  /***/ (function(module, __unused_webpack_exports, __webpack_require__) {
117699
117867
 
117700
- !function(e,t){ true?module.exports=t(__webpack_require__(27968),__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})()));
117868
+ !function(e,t){ true?module.exports=t(__webpack_require__(62881),__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})()));
117701
117869
 
117702
117870
 
117703
117871
  /***/ }),
@@ -240464,7 +240632,7 @@ var selectOrdinal = function selectOrdinal() {
240464
240632
  /******/ // This function allow to reference async chunks
240465
240633
  /******/ __webpack_require__.u = (chunkId) => {
240466
240634
  /******/ // return url for filenames based on template
240467
- /******/ return "" + (chunkId === 18 ? "dicom-microscopy-viewer" : chunkId) + ".bundle." + {"12":"f6b8fca3d7d631530f77","18":"a7d5060eead13771e784","19":"a88db025c4d3aa455a25","23":"9d989522a6e4fdcb9c72","95":"d7a9f450bed3b770504d","125":"df666cb677e5a8982157","170":"4fbae6bee18b7029ee16","181":"ae92b8a551d041d06e90","185":"b9c07345d013fd7703a3","199":"938af45362af3b5f0177","202":"0ca2f2479d2578f539b0","223":"d4ac6ef2cfe47a9c4afc","250":"09c69d348a5d965debc8","281":"8a1b8a2d2daec1cfd2b5","359":"74802060f22ec11e22b8","410":"e16f52b715e1f3b0e130","417":"5c66801d23d0e98c00e6","451":"68a551a7d1746cf904cb","456":"8ab9a01c88d2f2e9fcad","466":"090a8294f4c8f72646a4","471":"5809b10f75c8fc2f7167","483":"c6fabbd21a990ac6d919","485":"5b6c33cc43d8f3470642","506":"862683a37c9addfc0a36","530":"f904325ef4195d69ac0e","566":"4840518afd323372c70f","579":"8c45043bf461a6808b54","613":"26c7bb7e2d7e7bd60597","661":"28ef6d8cd035876bd8e2","686":"62c827fe4f0d054c164e","687":"1a5281313b618c99b42a","738":"0d7b7957708216809133","814":"dfd2a2f651cc777e745f","822":"55759fd8e9b0b489cc6b","886":"4496fc7fb83b8c897d20","965":"fecaa890411a2618060a"}[chunkId] + ".js";
240635
+ /******/ return "" + (chunkId === 18 ? "dicom-microscopy-viewer" : chunkId) + ".bundle." + {"12":"b04783905602e7a39e75","18":"a7d5060eead13771e784","19":"c99afb9553eff394fb21","23":"9d989522a6e4fdcb9c72","95":"830304446bffa705883c","125":"df666cb677e5a8982157","170":"68030fbeb41c3b9f8fc5","181":"d2fe517852935b82368b","185":"c0123f4dc6721f89c3fb","199":"ad2d8fe29adaf8351892","202":"0ca2f2479d2578f539b0","223":"d4ac6ef2cfe47a9c4afc","250":"ba94ff371388e395cd05","281":"8072673a742f48b1635f","359":"5a4fef973fa991f39e7e","410":"a31626fae42ed2d37134","417":"5c66801d23d0e98c00e6","451":"68a551a7d1746cf904cb","456":"23c8a1864c8a73d61431","466":"dfbfe891b1796dcd3202","471":"5809b10f75c8fc2f7167","483":"bba6af7fc56c0bdd7f47","485":"5b6c33cc43d8f3470642","506":"521f7917257d3d6d2724","514":"e89082f91e5a7ef3e039","530":"f904325ef4195d69ac0e","579":"8c45043bf461a6808b54","613":"7b076c886664b281547f","661":"28ef6d8cd035876bd8e2","686":"62c827fe4f0d054c164e","687":"6bd52991c7a20d72eac0","738":"e3b5dfe1641d2fa31a4a","814":"1b8ff6e92b6bb0187729","822":"f5ae3f366ce742fb060a","886":"4496fc7fb83b8c897d20","965":"7e3a36592b72e036ddaa"}[chunkId] + ".js";
240468
240636
  /******/ };
240469
240637
  /******/ })();
240470
240638
  /******/