@cornerstonejs/core 0.12.1 → 0.13.2

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 (75) hide show
  1. package/dist/cjs/RenderingEngine/RenderingEngine.js +21 -11
  2. package/dist/cjs/RenderingEngine/RenderingEngine.js.map +1 -1
  3. package/dist/cjs/RenderingEngine/StackViewport.d.ts +2 -1
  4. package/dist/cjs/RenderingEngine/StackViewport.js +167 -68
  5. package/dist/cjs/RenderingEngine/StackViewport.js.map +1 -1
  6. package/dist/cjs/RenderingEngine/Viewport.d.ts +1 -0
  7. package/dist/cjs/RenderingEngine/Viewport.js +12 -3
  8. package/dist/cjs/RenderingEngine/Viewport.js.map +1 -1
  9. package/dist/cjs/RenderingEngine/VolumeViewport.js +16 -2
  10. package/dist/cjs/RenderingEngine/VolumeViewport.js.map +1 -1
  11. package/dist/cjs/RenderingEngine/helpers/cpuFallback/drawImageSync.js +0 -1
  12. package/dist/cjs/RenderingEngine/helpers/cpuFallback/drawImageSync.js.map +1 -1
  13. package/dist/cjs/RenderingEngine/helpers/cpuFallback/rendering/correctShift.d.ts +7 -0
  14. package/dist/cjs/RenderingEngine/helpers/cpuFallback/rendering/correctShift.js +19 -0
  15. package/dist/cjs/RenderingEngine/helpers/cpuFallback/rendering/correctShift.js.map +1 -0
  16. package/dist/cjs/RenderingEngine/helpers/createVolumeActor.d.ts +1 -1
  17. package/dist/cjs/RenderingEngine/vtkClasses/vtkOffscreenMultiRenderWindow.js +1 -2
  18. package/dist/cjs/RenderingEngine/vtkClasses/vtkOffscreenMultiRenderWindow.js.map +1 -1
  19. package/dist/cjs/cache/classes/ImageVolume.d.ts +1 -0
  20. package/dist/cjs/cache/classes/ImageVolume.js.map +1 -1
  21. package/dist/cjs/enums/BlendModes.d.ts +4 -4
  22. package/dist/cjs/enums/BlendModes.js +4 -4
  23. package/dist/cjs/enums/BlendModes.js.map +1 -1
  24. package/dist/cjs/types/CPUFallbackViewport.d.ts +2 -0
  25. package/dist/cjs/types/CPUIImageData.d.ts +1 -0
  26. package/dist/cjs/types/IActor.d.ts +3 -1
  27. package/dist/cjs/types/ICamera.d.ts +1 -0
  28. package/dist/cjs/types/IImageData.d.ts +1 -0
  29. package/dist/cjs/types/IImageVolume.d.ts +1 -0
  30. package/dist/cjs/types/StackViewportProperties.d.ts +1 -0
  31. package/dist/cjs/utilities/index.d.ts +2 -1
  32. package/dist/cjs/utilities/index.js +3 -1
  33. package/dist/cjs/utilities/index.js.map +1 -1
  34. package/dist/cjs/utilities/isImageActor.d.ts +4 -0
  35. package/dist/cjs/utilities/isImageActor.js +13 -0
  36. package/dist/cjs/utilities/isImageActor.js.map +1 -0
  37. package/dist/esm/RenderingEngine/RenderingEngine.js +21 -11
  38. package/dist/esm/RenderingEngine/RenderingEngine.js.map +1 -1
  39. package/dist/esm/RenderingEngine/StackViewport.d.ts +2 -1
  40. package/dist/esm/RenderingEngine/StackViewport.js +171 -68
  41. package/dist/esm/RenderingEngine/StackViewport.js.map +1 -1
  42. package/dist/esm/RenderingEngine/Viewport.d.ts +1 -0
  43. package/dist/esm/RenderingEngine/Viewport.js +12 -4
  44. package/dist/esm/RenderingEngine/Viewport.js.map +1 -1
  45. package/dist/esm/RenderingEngine/VolumeViewport.js +16 -2
  46. package/dist/esm/RenderingEngine/VolumeViewport.js.map +1 -1
  47. package/dist/esm/RenderingEngine/helpers/cpuFallback/drawImageSync.js +0 -1
  48. package/dist/esm/RenderingEngine/helpers/cpuFallback/drawImageSync.js.map +1 -1
  49. package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/correctShift.d.ts +7 -0
  50. package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/correctShift.js +16 -0
  51. package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/correctShift.js.map +1 -0
  52. package/dist/esm/RenderingEngine/helpers/createVolumeActor.d.ts +1 -1
  53. package/dist/esm/RenderingEngine/vtkClasses/vtkOffscreenMultiRenderWindow.js +1 -2
  54. package/dist/esm/RenderingEngine/vtkClasses/vtkOffscreenMultiRenderWindow.js.map +1 -1
  55. package/dist/esm/cache/classes/ImageVolume.d.ts +1 -0
  56. package/dist/esm/cache/classes/ImageVolume.js.map +1 -1
  57. package/dist/esm/enums/BlendModes.d.ts +4 -4
  58. package/dist/esm/enums/BlendModes.js +4 -4
  59. package/dist/esm/enums/BlendModes.js.map +1 -1
  60. package/dist/esm/types/CPUFallbackViewport.d.ts +2 -0
  61. package/dist/esm/types/CPUIImageData.d.ts +1 -0
  62. package/dist/esm/types/IActor.d.ts +3 -1
  63. package/dist/esm/types/ICamera.d.ts +1 -0
  64. package/dist/esm/types/IImageData.d.ts +1 -0
  65. package/dist/esm/types/IImageVolume.d.ts +1 -0
  66. package/dist/esm/types/StackViewportProperties.d.ts +1 -0
  67. package/dist/esm/utilities/index.d.ts +2 -1
  68. package/dist/esm/utilities/index.js +2 -1
  69. package/dist/esm/utilities/index.js.map +1 -1
  70. package/dist/esm/utilities/isImageActor.d.ts +4 -0
  71. package/dist/esm/utilities/isImageActor.js +10 -0
  72. package/dist/esm/utilities/isImageActor.js.map +1 -0
  73. package/dist/umd/index.js +1 -1
  74. package/dist/umd/index.js.map +1 -1
  75. package/package.json +4 -4
@@ -2,10 +2,10 @@ import vtkConstants from '@kitware/vtk.js/Rendering/Core/VolumeMapper/Constants'
2
2
  const { BlendMode } = vtkConstants;
3
3
  var BlendModes;
4
4
  (function (BlendModes) {
5
- BlendModes[BlendModes["COMPOSITE"] = BlendMode.COMPOSITE_BLEND] = "COMPOSITE";
6
- BlendModes[BlendModes["MAXIMUM_INTENSITY_BLEND"] = BlendMode.MAXIMUM_INTENSITY_BLEND] = "MAXIMUM_INTENSITY_BLEND";
7
- BlendModes[BlendModes["MINIMUM_INTENSITY_BLEND"] = BlendMode.MINIMUM_INTENSITY_BLEND] = "MINIMUM_INTENSITY_BLEND";
8
- BlendModes[BlendModes["AVERAGE_INTENSITY_BLEND"] = BlendMode.AVERAGE_INTENSITY_BLEND] = "AVERAGE_INTENSITY_BLEND";
5
+ BlendModes[BlendModes["COMPOSITE"] = 0] = "COMPOSITE";
6
+ BlendModes[BlendModes["MAXIMUM_INTENSITY_BLEND"] = 1] = "MAXIMUM_INTENSITY_BLEND";
7
+ BlendModes[BlendModes["MINIMUM_INTENSITY_BLEND"] = 2] = "MINIMUM_INTENSITY_BLEND";
8
+ BlendModes[BlendModes["AVERAGE_INTENSITY_BLEND"] = 3] = "AVERAGE_INTENSITY_BLEND";
9
9
  })(BlendModes || (BlendModes = {}));
10
10
  export default BlendModes;
11
11
  //# sourceMappingURL=BlendModes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BlendModes.js","sourceRoot":"","sources":["../../../src/enums/BlendModes.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,uDAAuD,CAAC;AAEjF,MAAM,EAAE,SAAS,EAAE,GAAG,YAAY,CAAC;AASnC,IAAK,UASJ;AATD,WAAK,UAAU;IAEb,qCAAY,SAAS,CAAC,eAAe,eAAA,CAAA;IAErC,mDAA0B,SAAS,CAAC,uBAAuB,6BAAA,CAAA;IAE3D,mDAA0B,SAAS,CAAC,uBAAuB,6BAAA,CAAA;IAE3D,mDAA0B,SAAS,CAAC,uBAAuB,6BAAA,CAAA;AAC7D,CAAC,EATI,UAAU,KAAV,UAAU,QASd;AAED,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"BlendModes.js","sourceRoot":"","sources":["../../../src/enums/BlendModes.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,uDAAuD,CAAC;AAEjF,MAAM,EAAE,SAAS,EAAE,GAAG,YAAY,CAAC;AASnC,IAAK,UASJ;AATD,WAAK,UAAU;IAEb,qDAAqC,CAAA;IAErC,iFAA2D,CAAA;IAE3D,iFAA2D,CAAA;IAE3D,iFAA2D,CAAA;AAC7D,CAAC,EATI,UAAU,KAAV,UAAU,QASd;AAED,eAAe,UAAU,CAAC"}
@@ -3,6 +3,8 @@ import CPUFallbackColormap from './CPUFallbackColormap';
3
3
  import CPUFallbackLUT from './CPUFallbackLUT';
4
4
  declare type CPUFallbackViewport = {
5
5
  scale?: number;
6
+ parallelScale?: number;
7
+ focalPoint?: number[];
6
8
  translation?: {
7
9
  x: number;
8
10
  y: number;
@@ -20,6 +20,7 @@ declare type CPUIImageData = {
20
20
  };
21
21
  scalarData: number[];
22
22
  scaling: Scaling;
23
+ hasPixelSpacing?: boolean;
23
24
  };
24
25
  export default CPUIImageData;
25
26
  export { CPUImageData };
@@ -1,9 +1,11 @@
1
1
  import type vtkActor from '@kitware/vtk.js/Rendering/Core/Actor';
2
+ import vtkImageSlice from '@kitware/vtk.js/Rendering/Core/ImageSlice';
2
3
  import type vtkVolume from '@kitware/vtk.js/Rendering/Core/Volume';
3
4
  export declare type Actor = vtkActor;
4
5
  export declare type VolumeActor = vtkVolume;
6
+ export declare type ImageActor = vtkImageSlice;
5
7
  export declare type ActorEntry = {
6
8
  uid: string;
7
- actor: Actor | VolumeActor;
9
+ actor: Actor | VolumeActor | ImageActor;
8
10
  slabThickness?: number;
9
11
  };
@@ -3,6 +3,7 @@ interface ICamera {
3
3
  focalPoint?: Point3;
4
4
  parallelProjection?: boolean;
5
5
  parallelScale?: number;
6
+ scale?: number;
6
7
  position?: Point3;
7
8
  viewAngle?: number;
8
9
  viewPlaneNormal?: Point3;
@@ -11,5 +11,6 @@ interface IImageData {
11
11
  Modality: string;
12
12
  };
13
13
  scaling?: Scaling;
14
+ hasPixelSpacing?: boolean;
14
15
  }
15
16
  export default IImageData;
@@ -24,6 +24,7 @@ interface IImageVolume {
24
24
  loadStatus?: Record<string, any>;
25
25
  imageIds?: Array<string>;
26
26
  referencedVolumeId?: string;
27
+ hasPixelSpacing: boolean;
27
28
  convertToCornerstoneImage?: (imageId: string, imageIdIndex: number) => IImageLoadObject;
28
29
  }
29
30
  export default IImageVolume;
@@ -5,5 +5,6 @@ declare type StackViewportProperties = {
5
5
  invert?: boolean;
6
6
  interpolationType?: InterpolationType;
7
7
  rotation?: number;
8
+ suppressEvents?: boolean;
8
9
  };
9
10
  export default StackViewportProperties;
@@ -26,6 +26,7 @@ import getSliceRange from './getSliceRange';
26
26
  import snapFocalPointToSlice from './snapFocalPointToSlice';
27
27
  import getImageSliceDataForVolumeViewport from './getImageSliceDataForVolumeViewport';
28
28
  import getScalingParameters from './getScalingParameters';
29
+ import isImageActor from './isImageActor';
29
30
  import * as planar from './planar';
30
31
  import * as windowLevel from './windowLevel';
31
- export { csUtils as invertRgbTransferFunction, scaleRgbTransferFunction, triggerEvent, imageIdToURI, calibratedPixelSpacingMetadataProvider, uuidv4, planar, getMinMax, getRuntimeId, isEqual, isOpposite, createFloat32SharedArray, createUint8SharedArray, windowLevel, getClosestImageId, getSpacingInNormalDirection, getTargetVolumeAndSpacingInNormalDir, getVolumeActorCorners, indexWithinDimensions, getVolumeViewportsContainingSameVolumes, getVolumeViewportsContainingVolumeId, transformWorldToIndex, loadImageToCanvas, renderToCanvas, worldToImageCoords, imageToWorldCoords, getSliceRange, snapFocalPointToSlice, getImageSliceDataForVolumeViewport, getScalingParameters, };
32
+ export { csUtils as invertRgbTransferFunction, scaleRgbTransferFunction, triggerEvent, imageIdToURI, calibratedPixelSpacingMetadataProvider, uuidv4, planar, getMinMax, getRuntimeId, isEqual, isOpposite, createFloat32SharedArray, createUint8SharedArray, windowLevel, getClosestImageId, getSpacingInNormalDirection, getTargetVolumeAndSpacingInNormalDir, getVolumeActorCorners, indexWithinDimensions, getVolumeViewportsContainingSameVolumes, getVolumeViewportsContainingVolumeId, transformWorldToIndex, loadImageToCanvas, renderToCanvas, worldToImageCoords, imageToWorldCoords, getSliceRange, snapFocalPointToSlice, getImageSliceDataForVolumeViewport, getScalingParameters, isImageActor, };
@@ -26,7 +26,8 @@ import getSliceRange from './getSliceRange';
26
26
  import snapFocalPointToSlice from './snapFocalPointToSlice';
27
27
  import getImageSliceDataForVolumeViewport from './getImageSliceDataForVolumeViewport';
28
28
  import getScalingParameters from './getScalingParameters';
29
+ import isImageActor from './isImageActor';
29
30
  import * as planar from './planar';
30
31
  import * as windowLevel from './windowLevel';
31
- export { csUtils as invertRgbTransferFunction, scaleRgbTransferFunction, triggerEvent, imageIdToURI, calibratedPixelSpacingMetadataProvider, uuidv4, planar, getMinMax, getRuntimeId, isEqual, isOpposite, createFloat32SharedArray, createUint8SharedArray, windowLevel, getClosestImageId, getSpacingInNormalDirection, getTargetVolumeAndSpacingInNormalDir, getVolumeActorCorners, indexWithinDimensions, getVolumeViewportsContainingSameVolumes, getVolumeViewportsContainingVolumeId, transformWorldToIndex, loadImageToCanvas, renderToCanvas, worldToImageCoords, imageToWorldCoords, getSliceRange, snapFocalPointToSlice, getImageSliceDataForVolumeViewport, getScalingParameters, };
32
+ export { csUtils as invertRgbTransferFunction, scaleRgbTransferFunction, triggerEvent, imageIdToURI, calibratedPixelSpacingMetadataProvider, uuidv4, planar, getMinMax, getRuntimeId, isEqual, isOpposite, createFloat32SharedArray, createUint8SharedArray, windowLevel, getClosestImageId, getSpacingInNormalDirection, getTargetVolumeAndSpacingInNormalDir, getVolumeActorCorners, indexWithinDimensions, getVolumeViewportsContainingSameVolumes, getVolumeViewportsContainingVolumeId, transformWorldToIndex, loadImageToCanvas, renderToCanvas, worldToImageCoords, imageToWorldCoords, getSliceRange, snapFocalPointToSlice, getImageSliceDataForVolumeViewport, getScalingParameters, isImageActor, };
32
33
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utilities/index.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,6BAA6B,CAAC;AAClD,OAAO,wBAAwB,MAAM,4BAA4B,CAAC;AAClE,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,sCAAsC,MAAM,0CAA0C,CAAC;AAC9F,OAAO,OAAO,MAAM,WAAW,CAAC;AAChC,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,sBAAsB,MAAM,0BAA0B,CAAC;AAC9D,OAAO,wBAAwB,MAAM,4BAA4B,CAAC;AAClE,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AACpD,OAAO,2BAA2B,MAAM,+BAA+B,CAAC;AACxE,OAAO,oCAAoC,MAAM,wCAAwC,CAAC;AAC1F,OAAO,qBAAqB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,qBAAqB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,uCAAuC,MAAM,2CAA2C,CAAC;AAChG,OAAO,oCAAoC,MAAM,wCAAwC,CAAC;AAC1F,OAAO,qBAAqB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AACpD,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,kBAAkB,MAAM,sBAAsB,CAAC;AACtD,OAAO,kBAAkB,MAAM,sBAAsB,CAAC;AACtD,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,qBAAqB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,kCAAkC,MAAM,sCAAsC,CAAC;AACtF,OAAO,oBAAoB,MAAM,wBAAwB,CAAC;AAG1D,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,WAAW,MAAM,eAAe,CAAC;AAE7C,OAAO,EACL,OAAO,IAAI,yBAAyB,EACpC,wBAAwB,EACxB,YAAY,EACZ,YAAY,EACZ,sCAAsC,EACtC,MAAM,EACN,MAAM,EACN,SAAS,EACT,YAAY,EACZ,OAAO,EACP,UAAU,EACV,wBAAwB,EACxB,sBAAsB,EACtB,WAAW,EACX,iBAAiB,EACjB,2BAA2B,EAC3B,oCAAoC,EACpC,qBAAqB,EACrB,qBAAqB,EACrB,uCAAuC,EACvC,oCAAoC,EACpC,qBAAqB,EACrB,iBAAiB,EACjB,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,EACb,qBAAqB,EACrB,kCAAkC,EAClC,oBAAoB,GACrB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utilities/index.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,6BAA6B,CAAC;AAClD,OAAO,wBAAwB,MAAM,4BAA4B,CAAC;AAClE,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,sCAAsC,MAAM,0CAA0C,CAAC;AAC9F,OAAO,OAAO,MAAM,WAAW,CAAC;AAChC,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,sBAAsB,MAAM,0BAA0B,CAAC;AAC9D,OAAO,wBAAwB,MAAM,4BAA4B,CAAC;AAClE,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AACpD,OAAO,2BAA2B,MAAM,+BAA+B,CAAC;AACxE,OAAO,oCAAoC,MAAM,wCAAwC,CAAC;AAC1F,OAAO,qBAAqB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,qBAAqB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,uCAAuC,MAAM,2CAA2C,CAAC;AAChG,OAAO,oCAAoC,MAAM,wCAAwC,CAAC;AAC1F,OAAO,qBAAqB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AACpD,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,kBAAkB,MAAM,sBAAsB,CAAC;AACtD,OAAO,kBAAkB,MAAM,sBAAsB,CAAC;AACtD,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,qBAAqB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,kCAAkC,MAAM,sCAAsC,CAAC;AACtF,OAAO,oBAAoB,MAAM,wBAAwB,CAAC;AAC1D,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAG1C,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,WAAW,MAAM,eAAe,CAAC;AAE7C,OAAO,EACL,OAAO,IAAI,yBAAyB,EACpC,wBAAwB,EACxB,YAAY,EACZ,YAAY,EACZ,sCAAsC,EACtC,MAAM,EACN,MAAM,EACN,SAAS,EACT,YAAY,EACZ,OAAO,EACP,UAAU,EACV,wBAAwB,EACxB,sBAAsB,EACtB,WAAW,EACX,iBAAiB,EACjB,2BAA2B,EAC3B,oCAAoC,EACpC,qBAAqB,EACrB,qBAAqB,EACrB,uCAAuC,EACvC,oCAAoC,EACpC,qBAAqB,EACrB,iBAAiB,EACjB,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,EACb,qBAAqB,EACrB,kCAAkC,EAClC,oBAAoB,EACpB,YAAY,GACb,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type vtkActor from '@kitware/vtk.js/Rendering/Core/Actor';
2
+ import type vtkImageSlice from '@kitware/vtk.js/Rendering/Core/ImageSlice';
3
+ import type vtkVolume from '@kitware/vtk.js/Rendering/Core/Volume';
4
+ export default function isImageActor(actor: vtkActor | vtkVolume | vtkImageSlice): boolean;
@@ -0,0 +1,10 @@
1
+ export default function isImageActor(actor) {
2
+ if (actor.isA('vtkVolume')) {
3
+ return true;
4
+ }
5
+ if (actor.isA('vtkImageSlice')) {
6
+ return true;
7
+ }
8
+ return false;
9
+ }
10
+ //# sourceMappingURL=isImageActor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isImageActor.js","sourceRoot":"","sources":["../../../src/utilities/isImageActor.ts"],"names":[],"mappings":"AAUA,MAAM,CAAC,OAAO,UAAU,YAAY,CAClC,KAA2C;IAE3C,IAAI,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;QAC1B,OAAO,IAAI,CAAC;KACb;IAED,IAAI,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE;QAC9B,OAAO,IAAI,CAAC;KACb;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}