{"version":3,"file":"774.bundle.0171646462dc3c8311f6.js","mappings":"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","sources":["webpack:///../../../node_modules/@cornerstonejs/streaming-image-volume-loader/src/helpers/sortImageIdsAndGetSpacing.ts","webpack:///../../../node_modules/@cornerstonejs/streaming-image-volume-loader/src/helpers/getVolumeInfo.ts","webpack:///../../../node_modules/@cornerstonejs/streaming-image-volume-loader/src/helpers/autoLoad.ts","webpack:///../../../node_modules/@cornerstonejs/streaming-image-volume-loader/src/helpers/scaleArray.ts","webpack:///../../../node_modules/@cornerstonejs/streaming-image-volume-loader/src/BaseStreamingImageVolume.ts","webpack:///../../../node_modules/@cornerstonejs/streaming-image-volume-loader/src/StreamingImageVolume.ts","webpack:///../../../node_modules/@cornerstonejs/streaming-image-volume-loader/src/cornerstoneStreamingImageVolumeLoader.ts","webpack:///../../../node_modules/@cornerstonejs/streaming-image-volume-loader/src/helpers/makeVolumeMetadata.ts","webpack:///../../../node_modules/html2canvas/node_modules/tslib/tslib.es6.js","webpack:///../../../node_modules/html2canvas/node_modules/src/Util.ts","webpack:///../../../node_modules/src/css/layout/bounds.ts","webpack:///../../../node_modules/html2canvas/node_modules/css-line-break/node_modules/src/Util.ts","webpack:///../../../node_modules/html2canvas/node_modules/css-line-break/node_modules/utrie/node_modules/src/index.ts","webpack:///../../../node_modules/html2canvas/node_modules/css-line-break/node_modules/src/Trie.ts","webpack:///../../../node_modules/html2canvas/node_modules/src/linebreak-trie.ts","webpack:///../../../node_modules/html2canvas/node_modules/src/LineBreak.ts","webpack:///../../../node_modules/src/css/syntax/tokenizer.ts","webpack:///../../../node_modules/src/css/syntax/parser.ts","webpack:///../../../node_modules/src/css/types/length.ts","webpack:///../../../node_modules/src/css/types/length-percentage.ts","webpack:///../../../node_modules/src/css/types/angle.ts","webpack:///../../../node_modules/src/css/types/color.ts","webpack:///../../../node_modules/src/css/property-descriptors/background-clip.ts","webpack:///../../../node_modules/src/css/property-descriptors/background-color.ts","webpack:///../../../node_modules/src/css/types/functions/gradient.ts","webpack:///../../../node_modules/src/css/types/functions/-prefix-linear-gradient.ts","webpack:///../../../node_modules/src/css/types/functions/radial-gradient.ts","webpack:///../../../node_modules/src/css/types/functions/-prefix-radial-gradient.ts","webpack:///../../../node_modules/src/css/types/image.ts","webpack:///../../../node_modules/src/css/property-descriptors/background-size.ts","webpack:///../../../node_modules/src/css/types/functions/linear-gradient.ts","webpack:///../../../node_modules/src/css/types/functions/-webkit-gradient.ts","webpack:///../../../node_modules/src/css/property-descriptors/background-image.ts","webpack:///../../../node_modules/src/css/property-descriptors/background-origin.ts","webpack:///../../../node_modules/src/css/property-descriptors/background-position.ts","webpack:///../../../node_modules/src/css/property-descriptors/background-repeat.ts","webpack:///../../../node_modules/src/css/property-descriptors/line-break.ts","webpack:///../../../node_modules/src/css/property-descriptors/border-color.ts","webpack:///../../../node_modules/src/css/property-descriptors/border-radius.ts","webpack:///../../../node_modules/src/css/property-descriptors/border-style.ts","webpack:///../../../node_modules/src/css/property-descriptors/border-width.ts","webpack:///../../../node_modules/src/css/property-descriptors/color.ts","webpack:///../../../node_modules/src/css/property-descriptors/direction.ts","webpack:///../../../node_modules/src/css/property-descriptors/display.ts","webpack:///../../../node_modules/src/css/property-descriptors/float.ts","webpack:///../../../node_modules/src/css/property-descriptors/letter-spacing.ts","webpack:///../../../node_modules/src/css/property-descriptors/word-break.ts","webpack:///../../../node_modules/src/css/property-descriptors/line-height.ts","webpack:///../../../node_modules/src/css/property-descriptors/list-style-image.ts","webpack:///../../../node_modules/src/css/property-descriptors/list-style-position.ts","webpack:///../../../node_modules/src/css/property-descriptors/list-style-type.ts","webpack:///../../../node_modules/src/css/property-descriptors/margin.ts","webpack:///../../../node_modules/src/css/property-descriptors/overflow.ts","webpack:///../../../node_modules/src/css/property-descriptors/overflow-wrap.ts","webpack:///../../../node_modules/src/css/property-descriptors/padding.ts","webpack:///../../../node_modules/src/css/property-descriptors/text-align.ts","webpack:///../../../node_modules/src/css/property-descriptors/position.ts","webpack:///../../../node_modules/src/css/property-descriptors/text-shadow.ts","webpack:///../../../node_modules/src/css/property-descriptors/text-transform.ts","webpack:///../../../node_modules/src/css/property-descriptors/transform.ts","webpack:///../../../node_modules/src/css/property-descriptors/transform-origin.ts","webpack:///../../../node_modules/src/css/property-descriptors/visibility.ts","webpack:///../../../node_modules/html2canvas/node_modules/text-segmentation/node_modules/src/Util.ts","webpack:///../../../node_modules/src/css/property-descriptors/z-index.ts","webpack:///../../../node_modules/src/css/types/time.ts","webpack:///../../../node_modules/src/css/property-descriptors/opacity.ts","webpack:///../../../node_modules/src/css/property-descriptors/text-decoration-color.ts","webpack:///../../../node_modules/src/css/property-descriptors/text-decoration-line.ts","webpack:///../../../node_modules/src/css/property-descriptors/font-family.ts","webpack:///../../../node_modules/src/css/property-descriptors/font-size.ts","webpack:///../../../node_modules/src/css/property-descriptors/font-weight.ts","webpack:///../../../node_modules/src/css/property-descriptors/font-variant.ts","webpack:///../../../node_modules/src/css/property-descriptors/font-style.ts","webpack:///../../../node_modules/src/core/bitwise.ts","webpack:///../../../node_modules/src/css/property-descriptors/content.ts","webpack:///../../../node_modules/src/css/property-descriptors/counter-increment.ts","webpack:///../../../node_modules/src/css/property-descriptors/counter-reset.ts","webpack:///../../../node_modules/src/css/property-descriptors/duration.ts","webpack:///../../../node_modules/src/css/property-descriptors/quotes.ts","webpack:///../../../node_modules/src/css/property-descriptors/box-shadow.ts","webpack:///../../../node_modules/src/css/property-descriptors/paint-order.ts","webpack:///../../../node_modules/src/css/property-descriptors/webkit-text-stroke-color.ts","webpack:///../../../node_modules/src/css/property-descriptors/webkit-text-stroke-width.ts","webpack:///../../../node_modules/src/css/index.ts","webpack:///../../../node_modules/src/core/debugger.ts","webpack:///../../../node_modules/src/dom/element-container.ts","webpack:///../../../node_modules/html2canvas/node_modules/text-segmentation/node_modules/utrie/node_modules/src/index.ts","webpack:///../../../node_modules/html2canvas/node_modules/text-segmentation/node_modules/src/Trie.ts","webpack:///../../../node_modules/html2canvas/node_modules/src/GraphemeBreak.ts","webpack:///../../../node_modules/src/dom/document-cloner.ts","webpack:///../../../node_modules/html2canvas/node_modules/src/grapheme-break-trie.ts","webpack:///../../../node_modules/src/core/features.ts","webpack:///../../../node_modules/src/css/layout/text.ts","webpack:///../../../node_modules/src/dom/text-container.ts","webpack:///../../../node_modules/src/dom/replaced-elements/image-element-container.ts","webpack:///../../../node_modules/src/dom/replaced-elements/canvas-element-container.ts","webpack:///../../../node_modules/src/dom/replaced-elements/svg-element-container.ts","webpack:///../../../node_modules/src/dom/elements/li-element-container.ts","webpack:///../../../node_modules/src/dom/elements/ol-element-container.ts","webpack:///../../../node_modules/src/dom/replaced-elements/input-element-container.ts","webpack:///../../../node_modules/src/dom/elements/select-element-container.ts","webpack:///../../../node_modules/src/dom/elements/textarea-element-container.ts","webpack:///../../../node_modules/src/dom/replaced-elements/iframe-element-container.ts","webpack:///../../../node_modules/src/dom/node-parser.ts","webpack:///../../../node_modules/src/css/types/functions/counter.ts","webpack:///../../../node_modules/src/render/bound-curves.ts","webpack:///../../../node_modules/src/core/cache-storage.ts","webpack:///../../../node_modules/src/render/vector.ts","webpack:///../../../node_modules/src/render/bezier-curve.ts","webpack:///../../../node_modules/src/render/effects.ts","webpack:///../../../node_modules/src/render/path.ts","webpack:///../../../node_modules/src/render/stacking-context.ts","webpack:///../../../node_modules/src/render/border.ts","webpack:///../../../node_modules/src/render/box-sizing.ts","webpack:///../../../node_modules/src/render/background.ts","webpack:///../../../node_modules/src/render/font-metrics.ts","webpack:///../../../node_modules/src/core/util.ts","webpack:///../../../node_modules/src/render/renderer.ts","webpack:///../../../node_modules/src/render/canvas/canvas-renderer.ts","webpack:///../../../node_modules/src/render/canvas/foreignobject-renderer.ts","webpack:///../../../node_modules/src/core/logger.ts","webpack:///../../../node_modules/src/core/context.ts","webpack:///../../../node_modules/src/index.ts","webpack:///../../../node_modules/lodash/lodash.js"],"sourcesContent":["import { vec3 } from 'gl-matrix';\nimport { metaData, getConfiguration } from '@cornerstonejs/core';\nimport type { Types } from '@cornerstonejs/core';\n\ntype SortedImageIdsItem = {\n zSpacing: number;\n origin: Types.Point3;\n sortedImageIds: Array;\n};\n/**\n * Given an array of imageIds, sort them based on their imagePositionPatient, and\n * also returns the spacing between images and the origin of the reference image\n *\n * @param imageIds - array of imageIds\n * @param scanAxisNormal - [x, y, z] array or gl-matrix vec3\n *\n * @returns The sortedImageIds, zSpacing, and origin of the first image in the series.\n */\nexport default function sortImageIdsAndGetSpacing(\n imageIds: Array,\n scanAxisNormal: vec3 // Get gl matrix types?\n): SortedImageIdsItem {\n const { imagePositionPatient: referenceImagePositionPatient } = metaData.get(\n 'imagePlaneModule',\n imageIds[0]\n );\n\n const refIppVec = vec3.create();\n\n // Check if we are using wadouri scheme\n const usingWadoUri = imageIds[0].split(':')[0] === 'wadouri';\n\n vec3.set(\n refIppVec,\n referenceImagePositionPatient[0],\n referenceImagePositionPatient[1],\n referenceImagePositionPatient[2]\n );\n\n let sortedImageIds: string[];\n let zSpacing: number;\n\n function getDistance(imageId: string) {\n const { imagePositionPatient } = metaData.get('imagePlaneModule', imageId);\n\n const positionVector = vec3.create();\n\n vec3.sub(\n positionVector,\n referenceImagePositionPatient,\n imagePositionPatient\n );\n\n return vec3.dot(positionVector, scanAxisNormal);\n }\n\n /**\n * If we are using wadors and so have all image metadata cached ahead of time,\n * then sort by image position in 3D space, and calculate average slice\n * spacing from the entire volume. If not, then use the sampled images (1st\n * and middle) to calculate slice spacing, and use the provided imageId order.\n * Correct sorting must be done ahead of time.\n */\n if (!usingWadoUri) {\n const distanceImagePairs = imageIds.map((imageId) => {\n const distance = getDistance(imageId);\n\n return {\n distance,\n imageId,\n };\n });\n\n distanceImagePairs.sort((a, b) => b.distance - a.distance);\n\n sortedImageIds = distanceImagePairs.map((a) => a.imageId);\n const numImages = distanceImagePairs.length;\n\n // Calculated average spacing.\n // We would need to resample if these are not similar.\n // It should be up to the host app to do this if it needed to.\n zSpacing =\n Math.abs(\n distanceImagePairs[numImages - 1].distance -\n distanceImagePairs[0].distance\n ) /\n (numImages - 1);\n } else {\n // Using wadouri, so we have only prefetched the first, middle, and last\n // images for metadata. Assume initial imageId array order is pre-sorted,\n // but check orientation.\n const prefetchedImageIds = [\n imageIds[0],\n imageIds[Math.floor(imageIds.length / 2)],\n ];\n sortedImageIds = imageIds;\n const firstImageDistance = getDistance(prefetchedImageIds[0]);\n const middleImageDistance = getDistance(prefetchedImageIds[1]);\n if (firstImageDistance - middleImageDistance < 0) {\n sortedImageIds.reverse();\n }\n\n // Calculate average spacing between the first and middle prefetched images,\n // otherwise fall back to DICOM `spacingBetweenSlices`\n const metadataForMiddleImage = metaData.get(\n 'imagePlaneModule',\n prefetchedImageIds[1]\n );\n if (!metadataForMiddleImage) {\n throw new Error('Incomplete metadata required for volume construction.');\n }\n\n const positionVector = vec3.create();\n\n vec3.sub(\n positionVector,\n referenceImagePositionPatient,\n metadataForMiddleImage.imagePositionPatient\n );\n const distanceBetweenFirstAndMiddleImages = vec3.dot(\n positionVector,\n scanAxisNormal\n );\n zSpacing =\n Math.abs(distanceBetweenFirstAndMiddleImages) /\n Math.floor(imageIds.length / 2);\n }\n\n const { imagePositionPatient: origin, sliceThickness } = metaData.get(\n 'imagePlaneModule',\n sortedImageIds[0]\n );\n\n const { strictZSpacingForVolumeViewport } = getConfiguration().rendering;\n\n // We implemented these lines for multiframe dicom files that does not have\n // position for each frame, leading to incorrect calculation of zSpacing = 0\n // If possible, we use the sliceThickness, but we warn about this dicom file\n // weirdness. If sliceThickness is not available, we set to 1 just to render\n if (zSpacing === 0 && !strictZSpacingForVolumeViewport) {\n if (sliceThickness) {\n console.log('Could not calculate zSpacing. Using sliceThickness');\n zSpacing = sliceThickness;\n } else {\n console.log(\n 'Could not calculate zSpacing. The VolumeViewport visualization is compromised. Setting zSpacing to 1 to render'\n );\n zSpacing = 1;\n }\n }\n const result: SortedImageIdsItem = {\n zSpacing,\n origin,\n sortedImageIds,\n };\n\n return result;\n}\n","import { cache, utilities, Enums } from '@cornerstonejs/core';\nimport type { Types } from '@cornerstonejs/core';\nimport { vec3 } from 'gl-matrix';\nimport makeVolumeMetadata from './makeVolumeMetadata';\nimport sortImageIdsAndGetSpacing from './sortImageIdsAndGetSpacing';\n\nconst { createUint8SharedArray, createFloat32SharedArray } = utilities;\n\nfunction getVolumeInfo(imageIds: string[]) {\n const volumeMetadata = makeVolumeMetadata(imageIds);\n\n const {\n BitsAllocated,\n PixelRepresentation,\n PhotometricInterpretation,\n ImageOrientationPatient,\n PixelSpacing,\n Columns,\n Rows,\n } = volumeMetadata;\n\n const rowCosineVec = vec3.fromValues(\n ImageOrientationPatient[0],\n ImageOrientationPatient[1],\n ImageOrientationPatient[2]\n );\n\n const colCosineVec = vec3.fromValues(\n ImageOrientationPatient[3],\n ImageOrientationPatient[4],\n ImageOrientationPatient[5]\n );\n\n const scanAxisNormal = vec3.create();\n\n vec3.cross(scanAxisNormal, rowCosineVec, colCosineVec);\n\n const { zSpacing, origin, sortedImageIds } = sortImageIdsAndGetSpacing(\n imageIds,\n scanAxisNormal\n );\n\n const numFrames = imageIds.length;\n\n // Spacing goes [1] then [0], as [1] is column spacing (x) and [0] is row spacing (y)\n const spacing = [PixelSpacing[1], PixelSpacing[0], zSpacing];\n const dimensions = [Columns, Rows, numFrames];\n const direction = [\n ...rowCosineVec,\n ...colCosineVec,\n ...scanAxisNormal,\n ] as Types.Mat3;\n const signed = PixelRepresentation === 1;\n\n // Check if it fits in the cache before we allocate data\n // TODO Improve this when we have support for more types\n // NOTE: We use 4 bytes per voxel as we are using Float32.\n const bytesPerVoxel = BitsAllocated === 16 ? 4 : 1;\n const sizeInBytesPerComponent =\n bytesPerVoxel * dimensions[0] * dimensions[1] * dimensions[2];\n\n let numComponents = 1;\n if (PhotometricInterpretation === 'RGB') {\n numComponents = 3;\n }\n\n const sizeInBytes = sizeInBytesPerComponent * numComponents;\n\n // check if there is enough space in unallocated + image Cache\n const isCacheable = cache.isCacheable(sizeInBytes);\n if (!isCacheable) {\n throw new Error(Enums.Events.CACHE_SIZE_EXCEEDED);\n }\n\n cache.decacheIfNecessaryUntilBytesAvailable(sizeInBytes);\n\n let scalarData;\n\n switch (BitsAllocated) {\n case 8:\n if (signed) {\n throw new Error(\n '8 Bit signed images are not yet supported by this plugin.'\n );\n } else {\n scalarData = createUint8SharedArray(\n dimensions[0] * dimensions[1] * dimensions[2]\n );\n }\n\n break;\n\n case 16:\n scalarData = createFloat32SharedArray(\n dimensions[0] * dimensions[1] * dimensions[2]\n );\n\n break;\n\n case 24:\n // hacky because we don't support alpha channel in dicom\n scalarData = createUint8SharedArray(\n dimensions[0] * dimensions[1] * dimensions[2] * numComponents\n );\n\n break;\n }\n\n return {\n metadata: volumeMetadata,\n sortedImageIds,\n dimensions,\n spacing,\n origin,\n direction,\n scalarData,\n sizeInBytes,\n };\n}\n\nexport { getVolumeInfo, getVolumeInfo as default };\n","import { getRenderingEngines, utilities } from '@cornerstonejs/core';\nimport type { Types } from '@cornerstonejs/core';\n\n//import type { Types } from '@cornerstonejs/core'\n\ntype RenderingEngineAndViewportIds = {\n renderingEngine: Types.IRenderingEngine | undefined; //Types.IRenderingEngine | undefined\n viewportIds: Array;\n};\n\n/**\n * Given a volumeId, it finds the viewports and renderingEngines that\n * include that volume, and triggers a render if renderingEngine is available.\n *\n * @param volumeId - The Id of the volume\n */\nconst autoLoad = (volumeId: string): void => {\n const renderingEngineAndViewportIds =\n getRenderingEngineAndViewportsContainingVolume(volumeId);\n\n if (!renderingEngineAndViewportIds || !renderingEngineAndViewportIds.length) {\n return;\n }\n\n renderingEngineAndViewportIds.forEach(({ renderingEngine, viewportIds }) => {\n if (!renderingEngine.hasBeenDestroyed) {\n renderingEngine.renderViewports(viewportIds);\n }\n });\n};\n\nfunction getRenderingEngineAndViewportsContainingVolume(\n volumeId: string\n): Array {\n const renderingEnginesArray = getRenderingEngines();\n\n const renderingEngineAndViewportIds = [];\n\n for (let i = 0; i < renderingEnginesArray.length; i++) {\n const renderingEngine = renderingEnginesArray[i];\n const viewports = utilities.getViewportsWithVolumeId(\n volumeId,\n renderingEngine.id\n );\n\n if (viewports.length) {\n renderingEngineAndViewportIds.push({\n renderingEngine,\n viewportIds: viewports.map((viewport) => viewport.id),\n });\n }\n }\n\n return renderingEngineAndViewportIds;\n}\n\nexport default autoLoad;\n","import type { Types } from '@cornerstonejs/core';\n\n/**\n * Given a pixel array, rescale the pixel values using the rescale slope and\n * intercept and if modality is PT it uses the suv values to scale the array\n * @param array - The array to be scaled.\n * @param scalingParameters - The scaling parameters\n * @returns The array is being scaled\n */\nexport default function scaleArray(\n array: Float32Array | Uint8Array | Uint16Array | Int16Array,\n scalingParameters: Types.ScalingParameters\n): Float32Array | Uint8Array | Uint16Array | Int16Array {\n const arrayLength = array.length;\n const { rescaleSlope, rescaleIntercept, suvbw } = scalingParameters;\n\n if (scalingParameters.modality === 'PT' && typeof suvbw === 'number') {\n for (let i = 0; i < arrayLength; i++) {\n array[i] = suvbw * (array[i] * rescaleSlope + rescaleIntercept);\n }\n } else {\n for (let i = 0; i < arrayLength; i++) {\n array[i] = array[i] * rescaleSlope + rescaleIntercept;\n }\n }\n\n return array;\n}\n","import {\n Enums,\n eventTarget,\n metaData,\n imageLoadPoolManager,\n triggerEvent,\n ImageVolume,\n cache,\n imageLoader,\n utilities as csUtils,\n} from '@cornerstonejs/core';\n\nimport type { Types } from '@cornerstonejs/core';\nimport { scaleArray, autoLoad } from './helpers';\n\nconst requestType = Enums.RequestType.Prefetch;\nconst { getMinMax } = csUtils;\n\n/**\n * Streaming Image Volume Class that extends ImageVolume base class.\n * It implements load method to load the imageIds and insert them into the volume.\n *\n */\nexport default class BaseStreamingImageVolume extends ImageVolume {\n private framesLoaded = 0;\n private framesProcessed = 0;\n protected numFrames: number;\n protected cornerstoneImageMetaData = null;\n\n loadStatus: {\n loaded: boolean;\n loading: boolean;\n cancelled: boolean;\n cachedFrames: Array;\n callbacks: Array<(...args: unknown[]) => void>;\n };\n\n constructor(\n imageVolumeProperties: Types.IVolume,\n streamingProperties: Types.IStreamingVolumeProperties\n ) {\n super(imageVolumeProperties);\n this.imageIds = streamingProperties.imageIds;\n this.loadStatus = streamingProperties.loadStatus;\n this.numFrames = this._getNumFrames();\n\n this._createCornerstoneImageMetaData();\n }\n\n /**\n * Returns the number of frames stored in a scalarData object. The number of\n * frames is equal to the number of images for 3D volumes or the number of\n * frames per time poins for 4D volumes.\n * @returns number of frames per volume\n */\n private _getNumFrames(): number {\n const { imageIds, scalarData } = this;\n const scalarDataCount = this.isDynamicVolume() ? scalarData.length : 1;\n\n return imageIds.length / scalarDataCount;\n }\n\n private _getScalarDataLength(): number {\n const { scalarData } = this;\n return this.isDynamicVolume()\n ? (scalarData)[0].length\n : (scalarData).length;\n }\n\n /**\n * Creates the metadata required for converting the volume to an cornerstoneImage\n */\n private _createCornerstoneImageMetaData() {\n const { numFrames } = this;\n\n if (numFrames === 0) {\n return;\n }\n\n const bytesPerImage = this.sizeInBytes / numFrames;\n const scalarDataLength = this._getScalarDataLength();\n const numComponents = scalarDataLength / this.numVoxels;\n const pixelsPerImage =\n this.dimensions[0] * this.dimensions[1] * numComponents;\n\n const { PhotometricInterpretation, voiLut, VOILUTFunction } = this.metadata;\n\n let windowCenter = [];\n let windowWidth = [];\n\n if (voiLut && voiLut.length) {\n windowCenter = voiLut.map((voi) => {\n return voi.windowCenter;\n });\n\n windowWidth = voiLut.map((voi) => {\n return voi.windowWidth;\n });\n }\n\n const color = numComponents > 1 ? true : false; //todo: fix this\n\n this.cornerstoneImageMetaData = {\n bytesPerImage,\n numComponents,\n pixelsPerImage,\n windowCenter,\n windowWidth,\n color,\n // we use rgb (3 components) for the color volumes (and not rgba), and not rgba (which is used\n // in some parts of the lib for stack viewing in CPU)\n rgba: false,\n spacing: this.spacing,\n dimensions: this.dimensions,\n photometricInterpretation: PhotometricInterpretation,\n voiLUTFunction: VOILUTFunction,\n invert: PhotometricInterpretation === 'MONOCHROME1',\n };\n }\n\n /**\n * Converts imageIdIndex into frameIndex which will be the same\n * for 3D volumes but different for 4D volumes\n */\n private _imageIdIndexToFrameIndex(imageIdIndex: number): number {\n return imageIdIndex % this.numFrames;\n }\n\n /**\n * Return all scalar data objects (buffers) which will be only one for\n * 3D volumes and one per time point for 4D volumes\n * images of each 3D volume is stored\n * @returns scalar data array\n */\n public getScalarDataArrays(): Types.VolumeScalarData[] {\n return this.isDynamicVolume()\n ? this.scalarData\n : [this.scalarData];\n }\n\n private _getScalarDataByImageIdIndex(\n imageIdIndex: number\n ): Types.VolumeScalarData {\n if (imageIdIndex < 0 || imageIdIndex >= this.imageIds.length) {\n throw new Error('imageIdIndex out of range');\n }\n\n const scalarDataArrays = this.getScalarDataArrays();\n const scalarDataIndex = Math.floor(imageIdIndex / this.numFrames);\n\n return scalarDataArrays[scalarDataIndex];\n }\n\n protected invalidateVolume(immediate: boolean): void {\n const { imageData, vtkOpenGLTexture } = this;\n const { numFrames } = this;\n\n for (let i = 0; i < numFrames; i++) {\n vtkOpenGLTexture.setUpdatedFrame(i);\n }\n\n imageData.modified();\n\n if (immediate) {\n autoLoad(this.volumeId);\n }\n }\n\n /**\n * It cancels loading the images of the volume. It sets the loading status to false\n * and filters any imageLoad request in the requestPoolManager that has the same\n * volumeId\n */\n public cancelLoading = (): void => {\n const { loadStatus } = this;\n\n if (!loadStatus || !loadStatus.loading) {\n return;\n }\n\n // Set to not loading.\n loadStatus.loading = false;\n loadStatus.cancelled = true;\n\n // Remove all the callback listeners\n this.clearLoadCallbacks();\n\n // Create a filter function which only keeps requests\n // which do not match this volume's Id\n const filterFunction = ({ additionalDetails }) => {\n return additionalDetails.volumeId !== this.volumeId;\n };\n\n // Instruct the request pool manager to filter queued\n // requests to ensure requests we no longer need are\n // no longer sent.\n imageLoadPoolManager.filterRequests(filterFunction);\n };\n\n /**\n * Clear the load callbacks\n */\n public clearLoadCallbacks(): void {\n this.loadStatus.callbacks = [];\n }\n\n /**\n * It triggers a prefetch for images in the volume.\n * @param callback - A callback function to be called when the volume is fully loaded\n * @param priority - The priority for loading the volume images, lower number is higher priority\n * @returns\n */\n public load = (\n callback: (...args: unknown[]) => void,\n priority = 5\n ): void => {\n const { imageIds, loadStatus, numFrames } = this;\n\n if (loadStatus.loading === true) {\n console.log(\n `loadVolume: Loading is already in progress for ${this.volumeId}`\n );\n return; // Already loading, will get callbacks from main load.\n }\n\n const { loaded } = this.loadStatus;\n const totalNumFrames = imageIds.length;\n\n if (loaded) {\n if (callback) {\n callback({\n success: true,\n framesLoaded: totalNumFrames,\n framesProcessed: totalNumFrames,\n numFrames,\n totalNumFrames,\n });\n }\n return;\n }\n\n if (callback) {\n this.loadStatus.callbacks.push(callback);\n }\n\n this._prefetchImageIds(priority);\n };\n\n protected getImageIdsRequests = (\n imageIds: string[],\n scalarData: Types.VolumeScalarData,\n priority: number\n ) => {\n const { loadStatus } = this;\n const { cachedFrames } = loadStatus;\n\n const { vtkOpenGLTexture, imageData, metadata, volumeId } = this;\n const { FrameOfReferenceUID } = metadata;\n\n // SharedArrayBuffer\n const arrayBuffer = scalarData.buffer;\n const numFrames = imageIds.length;\n\n // Length of one frame in voxels\n const length = scalarData.length / numFrames;\n // Length of one frame in bytes\n const lengthInBytes = arrayBuffer.byteLength / numFrames;\n\n let type;\n\n if (scalarData instanceof Uint8Array) {\n type = 'Uint8Array';\n } else if (scalarData instanceof Float32Array) {\n type = 'Float32Array';\n } else if (scalarData instanceof Uint16Array) {\n type = 'Uint16Array';\n } else if (scalarData instanceof Int16Array) {\n type = 'Int16Array';\n } else {\n throw new Error('Unsupported array type');\n }\n\n const totalNumFrames = this.imageIds.length;\n const autoRenderOnLoad = true;\n const autoRenderPercentage = 2;\n\n let reRenderFraction;\n let reRenderTarget;\n\n if (autoRenderOnLoad) {\n reRenderFraction = totalNumFrames * (autoRenderPercentage / 100);\n reRenderTarget = reRenderFraction;\n }\n\n function callLoadStatusCallback(evt) {\n // TODO: probably don't want this here\n\n if (autoRenderOnLoad) {\n if (\n evt.framesProcessed > reRenderTarget ||\n evt.framesProcessed === evt.totalNumFrames\n ) {\n reRenderTarget += reRenderFraction;\n autoLoad(volumeId);\n }\n }\n\n if (evt.framesProcessed === evt.totalNumFrames) {\n loadStatus.callbacks.forEach((callback) => callback(evt));\n\n const eventDetail = {\n FrameOfReferenceUID,\n volumeId: volumeId,\n };\n\n triggerEvent(\n eventTarget,\n Enums.Events.IMAGE_VOLUME_LOADING_COMPLETED,\n eventDetail\n );\n }\n }\n\n const updateTextureAndTriggerEvents = (\n volume: BaseStreamingImageVolume,\n imageIdIndex,\n imageId\n ) => {\n const frameIndex = this._imageIdIndexToFrameIndex(imageIdIndex);\n\n cachedFrames[imageIdIndex] = true;\n this.framesLoaded++;\n this.framesProcessed++;\n\n vtkOpenGLTexture.setUpdatedFrame(frameIndex);\n imageData.modified();\n\n const eventDetail: Types.EventTypes.ImageVolumeModifiedEventDetail = {\n FrameOfReferenceUID,\n imageVolume: volume,\n };\n\n triggerEvent(\n eventTarget,\n Enums.Events.IMAGE_VOLUME_MODIFIED,\n eventDetail\n );\n\n if (this.framesProcessed === totalNumFrames) {\n loadStatus.loaded = true;\n loadStatus.loading = false;\n\n // TODO: Should we remove the callbacks in favour of just using events?\n callLoadStatusCallback({\n success: true,\n imageIdIndex,\n imageId,\n framesLoaded: this.framesLoaded,\n framesProcessed: this.framesProcessed,\n numFrames,\n totalNumFrames,\n });\n loadStatus.callbacks = [];\n } else {\n callLoadStatusCallback({\n success: true,\n imageIdIndex,\n imageId,\n framesLoaded: this.framesLoaded,\n framesProcessed: this.framesProcessed,\n numFrames,\n totalNumFrames,\n });\n }\n };\n\n const successCallback = (\n imageIdIndex: number,\n imageId: string,\n scalingParameters\n ) => {\n const frameIndex = this._imageIdIndexToFrameIndex(imageIdIndex);\n\n // Check if there is a cached image for the same imageURI (different\n // data loader scheme)\n const cachedImage = cache.getCachedImageBasedOnImageURI(imageId);\n\n // Check if the image was already loaded by another volume and we are here\n // since we got the imageLoadObject from the cache from the other already loaded\n // volume\n const cachedVolume = cache.getVolumeContainingImageId(imageId);\n\n // check if the load was cancelled while we were waiting for the image\n // if so we don't want to do anything\n if (loadStatus.cancelled) {\n console.warn(\n 'volume load cancelled, returning for imageIdIndex: ',\n imageIdIndex\n );\n return;\n }\n\n // if it is not a cached image or volume\n if (\n !cachedImage?.image &&\n !(cachedVolume && cachedVolume.volume !== this)\n ) {\n return updateTextureAndTriggerEvents(this, imageIdIndex, imageId);\n }\n\n // it is either cachedImage or cachedVolume\n const isFromImageCache = !!cachedImage;\n\n const cachedImageOrVolume = cachedImage || cachedVolume.volume;\n\n this.handleImageComingFromCache(\n cachedImageOrVolume,\n isFromImageCache,\n scalingParameters,\n scalarData,\n frameIndex,\n arrayBuffer,\n updateTextureAndTriggerEvents,\n imageIdIndex,\n imageId,\n errorCallback\n );\n };\n\n function errorCallback(error, imageIdIndex, imageId) {\n this.framesProcessed++;\n\n if (this.framesProcessed === totalNumFrames) {\n loadStatus.loaded = true;\n loadStatus.loading = false;\n\n callLoadStatusCallback({\n success: false,\n imageId,\n imageIdIndex,\n error,\n framesLoaded: this.framesLoaded,\n framesProcessed: this.framesProcessed,\n numFrames,\n totalNumFrames,\n });\n\n loadStatus.callbacks = [];\n } else {\n callLoadStatusCallback({\n success: false,\n imageId,\n imageIdIndex,\n error,\n framesLoaded: this.framesLoaded,\n framesProcessed: this.framesProcessed,\n numFrames,\n totalNumFrames,\n });\n }\n\n const eventDetail = {\n error,\n imageIdIndex,\n imageId,\n };\n\n triggerEvent(eventTarget, Enums.Events.IMAGE_LOAD_ERROR, eventDetail);\n }\n\n function handleArrayBufferLoad(scalarData, image, options) {\n if (!(scalarData.buffer instanceof ArrayBuffer)) {\n return;\n }\n\n const offset = options.targetBuffer.offset; // in bytes\n const length = options.targetBuffer.length; // in frames\n const pixelData = image.pixelData\n ? image.pixelData\n : image.getPixelData();\n\n try {\n if (scalarData instanceof Float32Array) {\n const bytesInFloat = 4;\n const floatView = new Float32Array(pixelData);\n if (floatView.length !== length) {\n throw 'Error pixelData length does not match frame length';\n }\n // since set is based on the underlying type,\n // we need to divide the offset bytes by the byte type\n scalarData.set(floatView, offset / bytesInFloat);\n }\n if (scalarData instanceof Int16Array) {\n const bytesInInt16 = 2;\n const intView = new Int16Array(pixelData);\n if (intView.length !== length) {\n throw 'Error pixelData length does not match frame length';\n }\n scalarData.set(intView, offset / bytesInInt16);\n }\n if (scalarData instanceof Uint16Array) {\n const bytesInUint16 = 2;\n const intView = new Uint16Array(pixelData);\n if (intView.length !== length) {\n throw 'Error pixelData length does not match frame length';\n }\n scalarData.set(intView, offset / bytesInUint16);\n }\n if (scalarData instanceof Uint8Array) {\n const bytesInUint8 = 1;\n const intView = new Uint8Array(pixelData);\n if (intView.length !== length) {\n throw 'Error pixelData length does not match frame length';\n }\n scalarData.set(intView, offset / bytesInUint8);\n }\n } catch (e) {\n console.error(e);\n }\n }\n\n // 4D datasets load one time point at a time and the frameIndex is\n // the position of the imageId in the current time point while the\n // imageIdIndex is its absolute position in the array that contains\n // all other imageIds. In a 4D dataset the frameIndex can also be\n // calculated as `imageIdIndex % numFrames` where numFrames is the\n // number of frames per time point. The frameIndex and imageIdIndex\n // will be the same when working with 3D datasets.\n const requests = imageIds.map((imageId, frameIndex) => {\n const imageIdIndex = this.getImageIdIndex(imageId);\n\n if (cachedFrames[imageIdIndex]) {\n this.framesLoaded++;\n this.framesProcessed++;\n return;\n }\n\n const modalityLutModule =\n metaData.get('modalityLutModule', imageId) || {};\n\n const generalSeriesModule =\n metaData.get('generalSeriesModule', imageId) || {};\n\n const scalingParameters: Types.ScalingParameters = {\n rescaleSlope: modalityLutModule.rescaleSlope,\n rescaleIntercept: modalityLutModule.rescaleIntercept,\n modality: generalSeriesModule.modality,\n };\n\n if (scalingParameters.modality === 'PT') {\n const suvFactor = metaData.get('scalingModule', imageId);\n\n if (suvFactor) {\n this._addScalingToVolume(suvFactor);\n scalingParameters.suvbw = suvFactor.suvbw;\n }\n }\n\n const isSlopeAndInterceptNumbers =\n typeof scalingParameters.rescaleSlope === 'number' &&\n typeof scalingParameters.rescaleIntercept === 'number';\n\n /**\n * So this is has limitation right now, but we need to somehow indicate\n * whether the volume has been scaled with the scaling parameters or not.\n * However, each slice can have different scaling parameters but it is rare\n * that rescale slope and intercept be unknown for one slice and known for\n * another. So we can just check the first slice and assume that the rest\n * of the slices have the same scaling parameters. Basically it is important\n * that these two are numbers and that means the volume has been scaled (\n * we do that automatically in the loader). For the suvbw, we need to\n * somehow indicate whether the PT image has been corrected with suvbw or\n * not, which we store it in the this.scaling.PT.suvbw.\n */\n this.isPreScaled = isSlopeAndInterceptNumbers;\n\n const options = {\n // WADO Image Loader\n targetBuffer: {\n // keeping this in the options means a large empty volume array buffer\n // will be transferred to the worker. This is undesirable for streaming\n // volume without shared array buffer because the target is now an empty\n // 300-500MB volume array buffer. Instead the volume should be progressively\n // set in the main thread.\n arrayBuffer:\n arrayBuffer instanceof ArrayBuffer ? undefined : arrayBuffer,\n offset: frameIndex * lengthInBytes,\n length,\n type,\n },\n skipCreateImage: true,\n preScale: {\n enabled: true,\n // we need to pass in the scalingParameters here, since the streaming\n // volume loader doesn't go through the createImage phase in the loader,\n // and therefore doesn't have the scalingParameters\n scalingParameters,\n },\n };\n\n // Use loadImage because we are skipping the Cornerstone Image cache\n // when we load directly into the Volume cache\n const callLoadImage = (imageId, imageIdIndex, options) => {\n return imageLoader.loadImage(imageId, options).then(\n (image) => {\n // scalarData is the volume container we are progressively loading into\n // image is the pixelData decoded from workers in cornerstoneDICOMImageLoader\n handleArrayBufferLoad(scalarData, image, options);\n successCallback(imageIdIndex, imageId, scalingParameters);\n },\n (error) => {\n errorCallback.call(this, error, imageIdIndex, imageId);\n }\n );\n };\n\n return {\n callLoadImage,\n imageId,\n imageIdIndex,\n options,\n priority,\n requestType,\n additionalDetails: {\n volumeId: this.volumeId,\n },\n };\n });\n\n return requests;\n };\n\n private handleImageComingFromCache(\n cachedImageOrVolume,\n isFromImageCache: boolean,\n scalingParameters: any,\n scalarData: Types.VolumeScalarData,\n frameIndex: number,\n arrayBuffer: ArrayBufferLike,\n updateTextureAndTriggerEvents: (\n volume: BaseStreamingImageVolume,\n imageIdIndex: any,\n imageId: any\n ) => void,\n imageIdIndex: number,\n imageId: string,\n errorCallback: (error: any, imageIdIndex: any, imageId: any) => void\n ) {\n const imageLoadObject = isFromImageCache\n ? cachedImageOrVolume.imageLoadObject\n : cachedImageOrVolume.convertToCornerstoneImage(imageId, imageIdIndex);\n\n imageLoadObject.promise\n .then((cachedImage) => {\n const imageScalarData = this._scaleIfNecessary(\n cachedImage,\n scalingParameters\n );\n // todo add scaling and slope\n const { pixelsPerImage, bytesPerImage } = this.cornerstoneImageMetaData;\n const TypedArray = scalarData.constructor;\n let byteOffset = bytesPerImage * frameIndex;\n\n // create a view on the volume arraybuffer\n const bytePerPixel = bytesPerImage / pixelsPerImage;\n\n if (scalarData.BYTES_PER_ELEMENT !== bytePerPixel) {\n byteOffset *= scalarData.BYTES_PER_ELEMENT / bytePerPixel;\n }\n\n // @ts-ignore\n const volumeBufferView = new TypedArray(\n arrayBuffer,\n byteOffset,\n pixelsPerImage\n );\n volumeBufferView.set(imageScalarData);\n updateTextureAndTriggerEvents(this, imageIdIndex, imageId);\n })\n .catch((err) => {\n errorCallback.call(this, err, imageIdIndex, imageId);\n });\n }\n\n /**\n * It returns the imageLoad requests for the streaming image volume instance.\n * It involves getting all the imageIds of the volume and creating a success callback\n * which would update the texture (when the image has loaded) and the failure callback.\n * Note that this method does not executes the requests but only returns the requests.\n * It can be used for sorting requests outside of the volume loader itself\n * e.g. loading a single slice of CT, followed by a single slice of PET (interleaved), before\n * moving to the next slice.\n *\n * @returns Array of requests including imageId of the request, its imageIdIndex,\n * options (targetBuffer and scaling parameters), and additionalDetails (volumeId)\n */\n public getImageLoadRequests(_priority: number): any[] {\n throw new Error('Abstract method');\n }\n\n private _prefetchImageIds(priority: number): void {\n // Note: here is the correct location to set the loading flag\n // since getImageIdsRequest is just grabbing and building requests\n // and not actually executing them\n this.loadStatus.loading = true;\n\n const requests = this.getImageLoadRequests(priority);\n\n requests.reverse().forEach((request) => {\n if (!request) {\n // there is a cached image for the imageId and no requests will fire\n return;\n }\n\n const {\n callLoadImage,\n imageId,\n imageIdIndex,\n options,\n priority,\n requestType,\n additionalDetails,\n } = request;\n\n imageLoadPoolManager.addRequest(\n callLoadImage.bind(this, imageId, imageIdIndex, options),\n requestType,\n additionalDetails,\n priority\n );\n });\n }\n\n /**\n * This function decides whether or not to scale the image based on the\n * scalingParameters. If the image is already scaled, we should take that\n * into account when scaling the image again, so if the rescaleSlope and/or\n * rescaleIntercept are different from the ones that were used to scale the\n * image, we should scale the image again according to the new parameters.\n */\n private _scaleIfNecessary(\n image,\n scalingParametersToUse: Types.ScalingParameters\n ) {\n const imageIsAlreadyScaled = image.preScale?.scaled;\n const noScalingParametersToUse =\n !scalingParametersToUse ||\n !scalingParametersToUse.rescaleIntercept ||\n !scalingParametersToUse.rescaleSlope;\n\n if (!imageIsAlreadyScaled && noScalingParametersToUse) {\n // no need to scale the image\n return image.getPixelData().slice(0);\n }\n\n if (\n !imageIsAlreadyScaled &&\n scalingParametersToUse &&\n scalingParametersToUse.rescaleIntercept !== undefined &&\n scalingParametersToUse.rescaleSlope !== undefined\n ) {\n // if not already scaled, just scale the image.\n // copy so that it doesn't get modified\n const pixelDataCopy = image.getPixelData().slice(0);\n const scaledArray = scaleArray(pixelDataCopy, scalingParametersToUse);\n return scaledArray;\n }\n\n // if the image is already scaled,\n const {\n rescaleSlope: rescaleSlopeToUse,\n rescaleIntercept: rescaleInterceptToUse,\n suvbw: suvbwToUse,\n } = scalingParametersToUse;\n\n const {\n rescaleSlope: rescaleSlopeUsed,\n rescaleIntercept: rescaleInterceptUsed,\n suvbw: suvbwUsed,\n } = image.preScale.scalingParameters;\n\n const rescaleSlopeIsSame = rescaleSlopeToUse === rescaleSlopeUsed;\n const rescaleInterceptIsSame =\n rescaleInterceptToUse === rescaleInterceptUsed;\n const suvbwIsSame = suvbwToUse === suvbwUsed;\n\n if (rescaleSlopeIsSame && rescaleInterceptIsSame && suvbwIsSame) {\n // if the scaling parameters are the same, we don't need to scale the image again\n return image.getPixelData();\n }\n\n const pixelDataCopy = image.getPixelData().slice(0);\n // the general formula for scaling is scaledPixelValue = suvbw * (pixelValue * rescaleSlope) + rescaleIntercept\n const newSuvbw = suvbwToUse / suvbwUsed;\n const newRescaleSlope = rescaleSlopeToUse / rescaleSlopeUsed;\n const newRescaleIntercept =\n rescaleInterceptToUse - rescaleInterceptUsed * newRescaleSlope;\n\n const newScalingParameters = {\n ...scalingParametersToUse,\n rescaleSlope: newRescaleSlope,\n rescaleIntercept: newRescaleIntercept,\n suvbw: newSuvbw,\n };\n\n const scaledArray = scaleArray(pixelDataCopy, newScalingParameters);\n return scaledArray;\n }\n\n private _addScalingToVolume(suvFactor) {\n // Todo: handle case where suvFactors are not the same for all frames\n if (this.scaling) {\n return;\n }\n\n const { suvbw, suvlbm, suvbsa } = suvFactor;\n\n const petScaling = {};\n\n if (suvlbm) {\n petScaling.suvbwToSuvlbm = suvlbm / suvbw;\n }\n\n if (suvbsa) {\n petScaling.suvbwToSuvbsa = suvbsa / suvbw;\n }\n\n if (suvbw) {\n petScaling.suvbw = suvbw;\n }\n\n this.scaling = { PT: petScaling };\n }\n\n private _removeFromCache() {\n // TODO: not 100% sure this is the same Id as the volume loader's volumeId?\n // so I have no idea if this will work\n cache.removeVolumeLoadObject(this.volumeId);\n }\n\n /**\n * Converts the requested imageId inside the volume to a cornerstoneImage\n * object. It uses the typedArray set method to copy the pixelData from the\n * correct offset in the scalarData to a new array for the image\n *\n * @param imageId - the imageId of the image to be converted\n * @param imageIdIndex - the index of the imageId in the imageIds array\n * @returns image object containing the pixel data, metadata, and other information\n */\n public getCornerstoneImage(\n imageId: string,\n imageIdIndex: number\n ): Types.IImage {\n const { imageIds } = this;\n const frameIndex = this._imageIdIndexToFrameIndex(imageIdIndex);\n\n const {\n bytesPerImage,\n pixelsPerImage,\n windowCenter,\n windowWidth,\n numComponents,\n color,\n dimensions,\n spacing,\n invert,\n voiLUTFunction,\n photometricInterpretation,\n } = this.cornerstoneImageMetaData;\n\n // 1. Grab the buffer and it's type\n const scalarData = this._getScalarDataByImageIdIndex(imageIdIndex);\n const volumeBuffer = scalarData.buffer;\n // (not sure if this actually works, TypeScript keeps complaining)\n const TypedArray = scalarData.constructor;\n\n // 2. Given the index of the image and frame length in bytes,\n // create a view on the volume arraybuffer\n const bytePerPixel = bytesPerImage / pixelsPerImage;\n\n let byteOffset = bytesPerImage * frameIndex;\n\n // If there is a discrepancy between the volume typed array\n // and the bitsAllocated for the image. The reason is that VTK uses Float32\n // on the GPU and if the type is not Float32, it will convert it. So for not\n // having a performance issue, we convert all types initially to Float32 even\n // if they are not Float32.\n if (scalarData.BYTES_PER_ELEMENT !== bytePerPixel) {\n byteOffset *= scalarData.BYTES_PER_ELEMENT / bytePerPixel;\n }\n\n // 3. Create a new TypedArray of the same type for the new\n // Image that will be created\n // @ts-ignore\n const imageScalarData = new TypedArray(pixelsPerImage);\n // @ts-ignore\n const volumeBufferView = new TypedArray(\n volumeBuffer,\n byteOffset,\n pixelsPerImage\n );\n\n // 4. Use e.g. TypedArray.set() to copy the data from the larger\n // buffer's view into the smaller one\n imageScalarData.set(volumeBufferView);\n\n // 5. Create an Image Object from imageScalarData and put it into the Image cache\n const volumeImageId = imageIds[imageIdIndex];\n const modalityLutModule =\n metaData.get('modalityLutModule', volumeImageId) || {};\n const minMax = getMinMax(imageScalarData);\n const intercept = modalityLutModule.rescaleIntercept\n ? modalityLutModule.rescaleIntercept\n : 0;\n\n return {\n imageId,\n intercept,\n windowCenter,\n windowWidth,\n voiLUTFunction,\n color,\n rgba: false,\n numComps: numComponents,\n // Note the dimensions were defined as [Columns, Rows, Frames]\n rows: dimensions[1],\n columns: dimensions[0],\n sizeInBytes: imageScalarData.byteLength,\n getPixelData: () => imageScalarData,\n minPixelValue: minMax.min,\n maxPixelValue: minMax.max,\n slope: modalityLutModule.rescaleSlope\n ? modalityLutModule.rescaleSlope\n : 1,\n getCanvas: undefined, // todo: which canvas?\n height: dimensions[0],\n width: dimensions[1],\n columnPixelSpacing: spacing[0],\n rowPixelSpacing: spacing[1],\n invert,\n photometricInterpretation,\n };\n }\n\n /**\n * Converts the requested imageId inside the volume to a cornerstoneImage\n * object. It uses the typedArray set method to copy the pixelData from the\n * correct offset in the scalarData to a new array for the image\n * Duplicate of getCornerstoneImageLoadObject for legacy reasons\n *\n * @param imageId - the imageId of the image to be converted\n * @param imageIdIndex - the index of the imageId in the imageIds array\n * @returns imageLoadObject containing the promise that resolves\n * to the cornerstone image\n */\n public convertToCornerstoneImage(\n imageId: string,\n imageIdIndex: number\n ): Types.IImageLoadObject {\n return this.getCornerstoneImageLoadObject(imageId, imageIdIndex);\n }\n\n /**\n * Converts the requested imageId inside the volume to a cornerstoneImage\n * object. It uses the typedArray set method to copy the pixelData from the\n * correct offset in the scalarData to a new array for the image\n *\n * @param imageId - the imageId of the image to be converted\n * @param imageIdIndex - the index of the imageId in the imageIds array\n * @returns imageLoadObject containing the promise that resolves\n * to the cornerstone image\n */\n public getCornerstoneImageLoadObject(\n imageId: string,\n imageIdIndex: number\n ): Types.IImageLoadObject {\n const image = this.getCornerstoneImage(imageId, imageIdIndex);\n\n const imageLoadObject = {\n promise: Promise.resolve(image),\n };\n\n return imageLoadObject;\n }\n\n /**\n * Returns an array of all the volume's images as Cornerstone images.\n * It iterates over all the imageIds and converts them to Cornerstone images.\n *\n * @returns An array of Cornerstone images.\n */\n public getCornerstoneImages(): Types.IImage[] {\n const { imageIds } = this;\n\n return imageIds.map((imageId, imageIdIndex) => {\n return this.getCornerstoneImage(imageId, imageIdIndex);\n });\n }\n\n /**\n * Converts all the volume images (imageIds) to cornerstoneImages and caches them.\n * It iterates over all the imageIds and convert them until there is no\n * enough space left inside the imageCache. Finally it will decache the Volume.\n *\n */\n private _convertToImages() {\n // 1. Try to decache images in the volatile Image Cache to provide\n // enough space to store another entire copy of the volume (as Images).\n // If we do not have enough, we will store as many images in the cache\n // as possible, and the rest of the volume will be decached.\n const byteLength = this.sizeInBytes;\n const numImages = this.imageIds.length;\n const { bytesPerImage } = this.cornerstoneImageMetaData;\n\n let bytesRemaining = cache.decacheIfNecessaryUntilBytesAvailable(\n byteLength,\n this.imageIds\n );\n\n for (let imageIdIndex = 0; imageIdIndex < numImages; imageIdIndex++) {\n const imageId = this.imageIds[imageIdIndex];\n\n bytesRemaining = bytesRemaining - bytesPerImage;\n\n // 2. Convert each imageId to a cornerstone Image object which is\n // resolved inside the promise of imageLoadObject\n const imageLoadObject = this.convertToCornerstoneImage(\n imageId,\n imageIdIndex\n );\n\n // 3. Caching the image\n if (!cache.getImageLoadObject(imageId)) {\n cache.putImageLoadObject(imageId, imageLoadObject).catch((err) => {\n console.error(err);\n });\n }\n\n // 4. If we know we won't be able to add another Image to the cache\n // without breaching the limit, stop here.\n if (bytesRemaining <= bytesPerImage) {\n break;\n }\n }\n // 5. When as much of the Volume is processed into Images as possible\n // without breaching the cache limit, remove the Volume\n this._removeFromCache();\n }\n\n /**\n * If completelyRemove is true, remove the volume completely from the cache. Otherwise,\n * convert the volume to cornerstone images (stack images) and store it in the cache\n * @param completelyRemove - If true, the image will be removed from the\n * cache completely.\n */\n public decache(completelyRemove = false): void {\n if (completelyRemove) {\n this._removeFromCache();\n } else {\n this._convertToImages();\n }\n }\n}\n","import { Types } from '@cornerstonejs/core';\nimport BaseStreamingImageVolume from './BaseStreamingImageVolume';\n\n/**\n * Streaming Image Volume Class that extends ImageVolume base class.\n * It implements load method to load the imageIds and insert them into the volume.\n */\nexport default class StreamingImageVolume extends BaseStreamingImageVolume {\n constructor(\n imageVolumeProperties: Types.IVolume,\n streamingProperties: Types.IStreamingVolumeProperties\n ) {\n super(imageVolumeProperties, streamingProperties);\n }\n\n /**\n * Return the scalar data (buffer)\n * @returns volume scalar data\n */\n public getScalarData(): Types.VolumeScalarData {\n return this.scalarData;\n }\n\n /**\n * It returns the imageLoad requests for the streaming image volume instance.\n * It involves getting all the imageIds of the volume and creating a success callback\n * which would update the texture (when the image has loaded) and the failure callback.\n * Note that this method does not executes the requests but only returns the requests.\n * It can be used for sorting requests outside of the volume loader itself\n * e.g. loading a single slice of CT, followed by a single slice of PET (interleaved), before\n * moving to the next slice.\n *\n * @returns Array of requests including imageId of the request, its imageIdIndex,\n * options (targetBuffer and scaling parameters), and additionalDetails (volumeId)\n */\n public getImageLoadRequests = (priority: number) => {\n const { imageIds } = this;\n const scalarData = this.scalarData;\n\n return this.getImageIdsRequests(imageIds, scalarData, priority);\n };\n}\n","import {\n cache,\n utilities,\n Enums,\n imageLoader,\n imageLoadPoolManager,\n getShouldUseSharedArrayBuffer,\n getConfiguration,\n utilities as csUtils,\n} from '@cornerstonejs/core';\nimport type { Types } from '@cornerstonejs/core';\nimport { vec3 } from 'gl-matrix';\nimport { makeVolumeMetadata, sortImageIdsAndGetSpacing } from './helpers';\nimport StreamingImageVolume from './StreamingImageVolume';\n\nconst {\n createUint8SharedArray,\n createFloat32SharedArray,\n createUint16SharedArray,\n createInt16SharedArray,\n} = utilities;\n\ninterface IVolumeLoader {\n promise: Promise;\n cancel: () => void;\n decache: () => void;\n}\n\n/**\n * It handles loading of a image by streaming in its imageIds. It will be the\n * volume loader if the schema for the volumeID is `cornerstoneStreamingImageVolume`.\n * This function returns a promise that resolves to the StreamingImageVolume instance.\n *\n * In order to use the cornerstoneStreamingImageVolumeLoader you should use\n * createAndCacheVolume helper from the cornerstone-core volumeLoader module.\n *\n * @param volumeId - The ID of the volume\n * @param options - options for loading, imageIds\n * @returns a promise that resolves to a StreamingImageVolume\n */\nfunction cornerstoneStreamingImageVolumeLoader(\n volumeId: string,\n options: {\n imageIds: string[];\n }\n): IVolumeLoader {\n if (!options || !options.imageIds || !options.imageIds.length) {\n throw new Error(\n 'ImageIds must be provided to create a streaming image volume'\n );\n }\n\n const { useNorm16Texture, preferSizeOverAccuracy } =\n getConfiguration().rendering;\n const use16BitDataType = useNorm16Texture || preferSizeOverAccuracy;\n\n async function getStreamingImageVolume() {\n /**\n * Check if we are using the `wadouri:` scheme, and if so, preload first,\n * middle, and last image metadata as these are the images the current\n * streaming image loader may explicitly request metadata from. The last image\n * metadata would only be specifically requested if the imageId array order is\n * reversed in the `sortImageIdsAndGetSpacing.ts` file.\n */\n if (options.imageIds[0].split(':')[0] === 'wadouri') {\n const [middleImageIndex, lastImageIndex] = [\n Math.floor(options.imageIds.length / 2),\n options.imageIds.length - 1,\n ];\n const indexesToPrefetch = [0, middleImageIndex, lastImageIndex];\n await Promise.all(\n indexesToPrefetch.map((index) => {\n return new Promise((resolve, reject) => {\n const imageId = options.imageIds[index];\n imageLoadPoolManager.addRequest(\n async () => {\n imageLoader\n .loadImage(imageId)\n .then(() => {\n console.log(`Prefetched imageId: ${imageId}`);\n resolve(true);\n })\n .catch((err) => {\n reject(err);\n });\n },\n Enums.RequestType.Prefetch,\n { volumeId },\n 1 // priority\n );\n });\n })\n ).catch(console.error);\n }\n\n const { imageIds } = options;\n\n const volumeMetadata = makeVolumeMetadata(imageIds);\n\n // For a streaming volume, the data type cannot rely on cswil to load\n // the proper array buffer type. This is because the target buffer container\n // must be decided ahead of time.\n // TODO: move this logic into CSWIL to avoid logic duplication.\n // We check if scaling parameters are negative we choose Int16 instead of\n // Uint16 for cases where BitsAllocated is 16.\n const imageIdIndex = Math.floor(imageIds.length / 2);\n const imageId = imageIds[imageIdIndex];\n const scalingParameters = csUtils.getScalingParameters(imageId);\n const hasNegativeRescale =\n scalingParameters.rescaleIntercept < 0 ||\n scalingParameters.rescaleSlope < 0;\n\n // The prescale is ALWAYS used with modality LUT, so we can assume that\n // if the rescale slope is not an integer, we need to use Float32\n const hasFloatRescale =\n scalingParameters.rescaleIntercept % 1 !== 0 ||\n scalingParameters.rescaleSlope % 1 !== 0;\n\n const {\n BitsAllocated,\n PixelRepresentation,\n PhotometricInterpretation,\n ImageOrientationPatient,\n PixelSpacing,\n Columns,\n Rows,\n } = volumeMetadata;\n\n const rowCosineVec = vec3.fromValues(\n ImageOrientationPatient[0],\n ImageOrientationPatient[1],\n ImageOrientationPatient[2]\n );\n const colCosineVec = vec3.fromValues(\n ImageOrientationPatient[3],\n ImageOrientationPatient[4],\n ImageOrientationPatient[5]\n );\n\n const scanAxisNormal = vec3.create();\n\n vec3.cross(scanAxisNormal, rowCosineVec, colCosineVec);\n\n const { zSpacing, origin, sortedImageIds } = sortImageIdsAndGetSpacing(\n imageIds,\n scanAxisNormal\n );\n\n const numFrames = imageIds.length;\n\n // Spacing goes [1] then [0], as [1] is column spacing (x) and [0] is row spacing (y)\n const spacing = [PixelSpacing[1], PixelSpacing[0], zSpacing];\n const dimensions = [Columns, Rows, numFrames];\n const direction = [\n ...rowCosineVec,\n ...colCosineVec,\n ...scanAxisNormal,\n ] as Types.Mat3;\n const signed = PixelRepresentation === 1;\n const numComponents = PhotometricInterpretation === 'RGB' ? 3 : 1;\n const useSharedArrayBuffer = getShouldUseSharedArrayBuffer();\n const length = dimensions[0] * dimensions[1] * dimensions[2];\n const handleCache = (sizeInBytes) => {\n if (!cache.isCacheable(sizeInBytes)) {\n throw new Error(Enums.Events.CACHE_SIZE_EXCEEDED);\n }\n cache.decacheIfNecessaryUntilBytesAvailable(sizeInBytes);\n };\n\n let scalarData, sizeInBytes;\n switch (BitsAllocated) {\n case 8:\n if (signed) {\n throw new Error(\n '8 Bit signed images are not yet supported by this plugin.'\n );\n }\n sizeInBytes = length * numComponents;\n handleCache(sizeInBytes);\n scalarData = useSharedArrayBuffer\n ? createUint8SharedArray(length * numComponents)\n : new Uint8Array(length * numComponents);\n break;\n\n case 16:\n // Temporary fix for 16 bit images to use Float32\n // until the new dicom image loader handler the conversion\n // correctly\n if (!use16BitDataType || hasFloatRescale) {\n sizeInBytes = length * 4;\n scalarData = useSharedArrayBuffer\n ? createFloat32SharedArray(length)\n : new Float32Array(length);\n\n break;\n }\n\n sizeInBytes = length * 2;\n if (signed || hasNegativeRescale) {\n handleCache(sizeInBytes);\n scalarData = useSharedArrayBuffer\n ? createInt16SharedArray(length)\n : new Int16Array(length);\n break;\n }\n\n if (!signed && !hasNegativeRescale) {\n handleCache(sizeInBytes);\n scalarData = useSharedArrayBuffer\n ? createUint16SharedArray(length)\n : new Uint16Array(length);\n break;\n }\n\n // Default to Float32 again\n sizeInBytes = length * 4;\n handleCache(sizeInBytes);\n scalarData = useSharedArrayBuffer\n ? createFloat32SharedArray(length)\n : new Float32Array(length);\n break;\n\n case 24:\n sizeInBytes = length * numComponents;\n handleCache(sizeInBytes);\n\n // hacky because we don't support alpha channel in dicom\n scalarData = useSharedArrayBuffer\n ? createUint8SharedArray(length * numComponents)\n : new Uint8Array(length * numComponents);\n break;\n }\n\n const streamingImageVolume = new StreamingImageVolume(\n // ImageVolume properties\n {\n volumeId,\n metadata: volumeMetadata,\n dimensions,\n spacing,\n origin,\n direction,\n scalarData,\n sizeInBytes,\n },\n // Streaming properties\n {\n imageIds: sortedImageIds,\n loadStatus: {\n // todo: loading and loaded should be on ImageVolume\n loaded: false,\n loading: false,\n cancelled: false,\n cachedFrames: [],\n callbacks: [],\n },\n }\n );\n\n return streamingImageVolume;\n }\n\n const streamingImageVolumePromise = getStreamingImageVolume();\n\n return {\n promise: streamingImageVolumePromise,\n decache: () => {\n streamingImageVolumePromise.then((streamingImageVolume) => {\n streamingImageVolume.destroy();\n streamingImageVolume = null;\n });\n },\n cancel: () => {\n streamingImageVolumePromise.then((streamingImageVolume) => {\n streamingImageVolume.cancelLoading();\n });\n },\n };\n}\n\nexport default cornerstoneStreamingImageVolumeLoader;\n","import { metaData } from '@cornerstonejs/core';\nimport type { Types } from '@cornerstonejs/core';\n\n/**\n * It creates a metadata object for a volume given the imageIds that compose it.\n * It uses the first imageId to get the metadata.\n *\n * @param imageIds - array of imageIds\n * @returns The volume metadata\n */\nexport default function makeVolumeMetadata(\n imageIds: Array\n): Types.Metadata {\n const imageId0 = imageIds[0];\n\n const {\n pixelRepresentation,\n bitsAllocated,\n bitsStored,\n highBit,\n photometricInterpretation,\n samplesPerPixel,\n } = metaData.get('imagePixelModule', imageId0);\n\n // Add list of VOIs stored on the DICOM.\n const voiLut = [];\n\n const voiLutModule = metaData.get('voiLutModule', imageId0);\n\n // voiLutModule is not always present\n let voiLUTFunction;\n if (voiLutModule) {\n const { windowWidth, windowCenter } = voiLutModule;\n voiLUTFunction = voiLutModule?.voiLUTFunction;\n\n if (Array.isArray(windowWidth)) {\n for (let i = 0; i < windowWidth.length; i++) {\n voiLut.push({\n windowWidth: windowWidth[i],\n windowCenter: windowCenter[i],\n });\n }\n } else {\n voiLut.push({\n windowWidth: windowWidth,\n windowCenter: windowCenter,\n });\n }\n } else {\n voiLut.push({\n windowWidth: undefined,\n windowCenter: undefined,\n });\n }\n\n const { modality, seriesInstanceUID } = metaData.get(\n 'generalSeriesModule',\n imageId0\n );\n\n const {\n imageOrientationPatient,\n pixelSpacing,\n frameOfReferenceUID,\n columns,\n rows,\n } = metaData.get('imagePlaneModule', imageId0);\n\n // Map to dcmjs-style keywords. This is becoming the standard and makes it\n // Easier to swap out cornerstoneDICOMImageLoader at a later date.\n return {\n BitsAllocated: bitsAllocated,\n BitsStored: bitsStored,\n SamplesPerPixel: samplesPerPixel,\n HighBit: highBit,\n PhotometricInterpretation: photometricInterpretation,\n PixelRepresentation: pixelRepresentation,\n Modality: modality,\n ImageOrientationPatient: imageOrientationPatient,\n PixelSpacing: pixelSpacing,\n FrameOfReferenceUID: frameOfReferenceUID,\n Columns: columns,\n Rows: rows,\n // This is a reshaped object and not a dicom tag:\n voiLut,\n VOILUTFunction: voiLUTFunction,\n SeriesInstanceUID: seriesInstanceUID,\n };\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || from);\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","export const toCodePoints = (str: string): number[] => {\n const codePoints = [];\n let i = 0;\n const length = str.length;\n while (i < length) {\n const value = str.charCodeAt(i++);\n if (value >= 0xd800 && value <= 0xdbff && i < length) {\n const extra = str.charCodeAt(i++);\n if ((extra & 0xfc00) === 0xdc00) {\n codePoints.push(((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000);\n } else {\n codePoints.push(value);\n i--;\n }\n } else {\n codePoints.push(value);\n }\n }\n return codePoints;\n};\n\nexport const fromCodePoint = (...codePoints: number[]): string => {\n if (String.fromCodePoint) {\n return String.fromCodePoint(...codePoints);\n }\n\n const length = codePoints.length;\n if (!length) {\n return '';\n }\n\n const codeUnits = [];\n\n let index = -1;\n let result = '';\n while (++index < length) {\n let codePoint = codePoints[index];\n if (codePoint <= 0xffff) {\n codeUnits.push(codePoint);\n } else {\n codePoint -= 0x10000;\n codeUnits.push((codePoint >> 10) + 0xd800, (codePoint % 0x400) + 0xdc00);\n }\n if (index + 1 === length || codeUnits.length > 0x4000) {\n result += String.fromCharCode(...codeUnits);\n codeUnits.length = 0;\n }\n }\n return result;\n};\n\nconst chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const decode = (base64: string): ArrayBuffer | number[] => {\n let bufferLength = base64.length * 0.75,\n len = base64.length,\n i,\n p = 0,\n encoded1,\n encoded2,\n encoded3,\n encoded4;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n const buffer =\n typeof ArrayBuffer !== 'undefined' &&\n typeof Uint8Array !== 'undefined' &&\n typeof Uint8Array.prototype.slice !== 'undefined'\n ? new ArrayBuffer(bufferLength)\n : new Array(bufferLength);\n const bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return buffer;\n};\n\nexport const polyUint16Array = (buffer: number[]): number[] => {\n const length = buffer.length;\n const bytes = [];\n for (let i = 0; i < length; i += 2) {\n bytes.push((buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n};\n\nexport const polyUint32Array = (buffer: number[]): number[] => {\n const length = buffer.length;\n const bytes = [];\n for (let i = 0; i < length; i += 4) {\n bytes.push((buffer[i + 3] << 24) | (buffer[i + 2] << 16) | (buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n};\n","import {Context} from '../../core/context';\n\nexport class Bounds {\n constructor(readonly left: number, readonly top: number, readonly width: number, readonly height: number) {}\n\n add(x: number, y: number, w: number, h: number): Bounds {\n return new Bounds(this.left + x, this.top + y, this.width + w, this.height + h);\n }\n\n static fromClientRect(context: Context, clientRect: ClientRect): Bounds {\n return new Bounds(\n clientRect.left + context.windowBounds.left,\n clientRect.top + context.windowBounds.top,\n clientRect.width,\n clientRect.height\n );\n }\n\n static fromDOMRectList(context: Context, domRectList: DOMRectList): Bounds {\n const domRect = Array.from(domRectList).find((rect) => rect.width !== 0);\n return domRect\n ? new Bounds(\n domRect.left + context.windowBounds.left,\n domRect.top + context.windowBounds.top,\n domRect.width,\n domRect.height\n )\n : Bounds.EMPTY;\n }\n\n static EMPTY = new Bounds(0, 0, 0, 0);\n}\n\nexport const parseBounds = (context: Context, node: Element): Bounds => {\n return Bounds.fromClientRect(context, node.getBoundingClientRect());\n};\n\nexport const parseDocumentSize = (document: Document): Bounds => {\n const body = document.body;\n const documentElement = document.documentElement;\n\n if (!body || !documentElement) {\n throw new Error(`Unable to get document size`);\n }\n const width = Math.max(\n Math.max(body.scrollWidth, documentElement.scrollWidth),\n Math.max(body.offsetWidth, documentElement.offsetWidth),\n Math.max(body.clientWidth, documentElement.clientWidth)\n );\n\n const height = Math.max(\n Math.max(body.scrollHeight, documentElement.scrollHeight),\n Math.max(body.offsetHeight, documentElement.offsetHeight),\n Math.max(body.clientHeight, documentElement.clientHeight)\n );\n\n return new Bounds(0, 0, width, height);\n};\n","const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const decode = (base64: string): ArrayBuffer | number[] => {\n let bufferLength = base64.length * 0.75,\n len = base64.length,\n i,\n p = 0,\n encoded1,\n encoded2,\n encoded3,\n encoded4;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n const buffer =\n typeof ArrayBuffer !== 'undefined' &&\n typeof Uint8Array !== 'undefined' &&\n typeof Uint8Array.prototype.slice !== 'undefined'\n ? new ArrayBuffer(bufferLength)\n : new Array(bufferLength);\n const bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return buffer;\n};\n\nexport const polyUint16Array = (buffer: number[]): number[] => {\n const length = buffer.length;\n const bytes = [];\n for (let i = 0; i < length; i += 2) {\n bytes.push((buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n};\n\nexport const polyUint32Array = (buffer: number[]): number[] => {\n const length = buffer.length;\n const bytes = [];\n for (let i = 0; i < length; i += 4) {\n bytes.push((buffer[i + 3] << 24) | (buffer[i + 2] << 16) | (buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n};\n","const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const encode = (arraybuffer: ArrayBuffer): string => {\n let bytes = new Uint8Array(arraybuffer),\n i,\n len = bytes.length,\n base64 = '';\n\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n\n return base64;\n};\n\nexport const decode = (base64: string): ArrayBuffer => {\n let bufferLength = base64.length * 0.75,\n len = base64.length,\n i,\n p = 0,\n encoded1,\n encoded2,\n encoded3,\n encoded4;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n const arraybuffer = new ArrayBuffer(bufferLength),\n bytes = new Uint8Array(arraybuffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return arraybuffer;\n};\n","import {decode, polyUint16Array, polyUint32Array} from './Util';\n\nexport type int = number;\n\n/** Shift size for getting the index-2 table offset. */\nexport const UTRIE2_SHIFT_2 = 5;\n\n/** Shift size for getting the index-1 table offset. */\nexport const UTRIE2_SHIFT_1 = 6 + 5;\n\n/**\n * Shift size for shifting left the index array values.\n * Increases possible data size with 16-bit index values at the cost\n * of compactability.\n * This requires data blocks to be aligned by UTRIE2_DATA_GRANULARITY.\n */\nexport const UTRIE2_INDEX_SHIFT = 2;\n\n/**\n * Difference between the two shift sizes,\n * for getting an index-1 offset from an index-2 offset. 6=11-5\n */\nexport const UTRIE2_SHIFT_1_2 = UTRIE2_SHIFT_1 - UTRIE2_SHIFT_2;\n\n/**\n * The part of the index-2 table for U+D800..U+DBFF stores values for\n * lead surrogate code _units_ not code _points_.\n * Values for lead surrogate code _points_ are indexed with this portion of the table.\n * Length=32=0x20=0x400>>UTRIE2_SHIFT_2. (There are 1024=0x400 lead surrogates.)\n */\nexport const UTRIE2_LSCP_INDEX_2_OFFSET = 0x10000 >> UTRIE2_SHIFT_2;\n\n/** Number of entries in a data block. 32=0x20 */\nexport const UTRIE2_DATA_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_2;\n/** Mask for getting the lower bits for the in-data-block offset. */\nexport const UTRIE2_DATA_MASK = UTRIE2_DATA_BLOCK_LENGTH - 1;\n\nexport const UTRIE2_LSCP_INDEX_2_LENGTH = 0x400 >> UTRIE2_SHIFT_2;\n/** Count the lengths of both BMP pieces. 2080=0x820 */\nexport const UTRIE2_INDEX_2_BMP_LENGTH = UTRIE2_LSCP_INDEX_2_OFFSET + UTRIE2_LSCP_INDEX_2_LENGTH;\n/**\n * The 2-byte UTF-8 version of the index-2 table follows at offset 2080=0x820.\n * Length 32=0x20 for lead bytes C0..DF, regardless of UTRIE2_SHIFT_2.\n */\nexport const UTRIE2_UTF8_2B_INDEX_2_OFFSET = UTRIE2_INDEX_2_BMP_LENGTH;\nexport const UTRIE2_UTF8_2B_INDEX_2_LENGTH = 0x800 >> 6; /* U+0800 is the first code point after 2-byte UTF-8 */\n/**\n * The index-1 table, only used for supplementary code points, at offset 2112=0x840.\n * Variable length, for code points up to highStart, where the last single-value range starts.\n * Maximum length 512=0x200=0x100000>>UTRIE2_SHIFT_1.\n * (For 0x100000 supplementary code points U+10000..U+10ffff.)\n *\n * The part of the index-2 table for supplementary code points starts\n * after this index-1 table.\n *\n * Both the index-1 table and the following part of the index-2 table\n * are omitted completely if there is only BMP data.\n */\nexport const UTRIE2_INDEX_1_OFFSET = UTRIE2_UTF8_2B_INDEX_2_OFFSET + UTRIE2_UTF8_2B_INDEX_2_LENGTH;\n\n/**\n * Number of index-1 entries for the BMP. 32=0x20\n * This part of the index-1 table is omitted from the serialized form.\n */\nexport const UTRIE2_OMITTED_BMP_INDEX_1_LENGTH = 0x10000 >> UTRIE2_SHIFT_1;\n\n/** Number of entries in an index-2 block. 64=0x40 */\nexport const UTRIE2_INDEX_2_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_1_2;\n/** Mask for getting the lower bits for the in-index-2-block offset. */\nexport const UTRIE2_INDEX_2_MASK = UTRIE2_INDEX_2_BLOCK_LENGTH - 1;\n\nconst slice16 = (view: number[] | Uint16Array, start: number, end?: number) => {\n if (view.slice) {\n return view.slice(start, end);\n }\n\n return new Uint16Array(Array.prototype.slice.call(view, start, end));\n};\n\nconst slice32 = (view: number[] | Uint32Array, start: number, end?: number) => {\n if (view.slice) {\n return view.slice(start, end);\n }\n\n return new Uint32Array(Array.prototype.slice.call(view, start, end));\n};\n\nexport const createTrieFromBase64 = (base64: string, _byteLength: number): Trie => {\n const buffer = decode(base64);\n const view32 = Array.isArray(buffer) ? polyUint32Array(buffer) : new Uint32Array(buffer);\n const view16 = Array.isArray(buffer) ? polyUint16Array(buffer) : new Uint16Array(buffer);\n const headerLength = 24;\n\n const index = slice16(view16, headerLength / 2, view32[4] / 2);\n const data =\n view32[5] === 2\n ? slice16(view16, (headerLength + view32[4]) / 2)\n : slice32(view32, Math.ceil((headerLength + view32[4]) / 4));\n\n return new Trie(view32[0], view32[1], view32[2], view32[3], index, data);\n};\n\nexport class Trie {\n initialValue: int;\n errorValue: int;\n highStart: int;\n highValueIndex: int;\n index: Uint16Array | number[];\n data: Uint32Array | Uint16Array | number[];\n\n constructor(\n initialValue: int,\n errorValue: int,\n highStart: int,\n highValueIndex: int,\n index: Uint16Array | number[],\n data: Uint32Array | Uint16Array | number[]\n ) {\n this.initialValue = initialValue;\n this.errorValue = errorValue;\n this.highStart = highStart;\n this.highValueIndex = highValueIndex;\n this.index = index;\n this.data = data;\n }\n\n /**\n * Get the value for a code point as stored in the Trie.\n *\n * @param codePoint the code point\n * @return the value\n */\n get(codePoint: number): number {\n let ix;\n if (codePoint >= 0) {\n if (codePoint < 0x0d800 || (codePoint > 0x0dbff && codePoint <= 0x0ffff)) {\n // Ordinary BMP code point, excluding leading surrogates.\n // BMP uses a single level lookup. BMP index starts at offset 0 in the Trie2 index.\n // 16 bit data is stored in the index array itself.\n ix = this.index[codePoint >> UTRIE2_SHIFT_2];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n\n if (codePoint <= 0xffff) {\n // Lead Surrogate Code Point. A Separate index section is stored for\n // lead surrogate code units and code points.\n // The main index has the code unit data.\n // For this function, we need the code point data.\n // Note: this expression could be refactored for slightly improved efficiency, but\n // surrogate code points will be so rare in practice that it's not worth it.\n ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET + ((codePoint - 0xd800) >> UTRIE2_SHIFT_2)];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n\n if (codePoint < this.highStart) {\n // Supplemental code point, use two-level lookup.\n ix = UTRIE2_INDEX_1_OFFSET - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH + (codePoint >> UTRIE2_SHIFT_1);\n ix = this.index[ix];\n ix += (codePoint >> UTRIE2_SHIFT_2) & UTRIE2_INDEX_2_MASK;\n ix = this.index[ix];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n if (codePoint <= 0x10ffff) {\n return this.data[this.highValueIndex];\n }\n }\n\n // Fall through. The code point is outside of the legal range of 0..0x10ffff.\n return this.errorValue;\n }\n}\n","export const base64 =\n 'KwAAAAAAAAAACA4AUD0AADAgAAACAAAAAAAIABAAGABAAEgAUABYAGAAaABgAGgAYgBqAF8AZwBgAGgAcQB5AHUAfQCFAI0AlQCdAKIAqgCyALoAYABoAGAAaABgAGgAwgDKAGAAaADGAM4A0wDbAOEA6QDxAPkAAQEJAQ8BFwF1AH0AHAEkASwBNAE6AUIBQQFJAVEBWQFhAWgBcAF4ATAAgAGGAY4BlQGXAZ8BpwGvAbUBvQHFAc0B0wHbAeMB6wHxAfkBAQIJAvEBEQIZAiECKQIxAjgCQAJGAk4CVgJeAmQCbAJ0AnwCgQKJApECmQKgAqgCsAK4ArwCxAIwAMwC0wLbAjAA4wLrAvMC+AIAAwcDDwMwABcDHQMlAy0DNQN1AD0DQQNJA0kDSQNRA1EDVwNZA1kDdQB1AGEDdQBpA20DdQN1AHsDdQCBA4kDkQN1AHUAmQOhA3UAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AKYDrgN1AHUAtgO+A8YDzgPWAxcD3gPjA+sD8wN1AHUA+wMDBAkEdQANBBUEHQQlBCoEFwMyBDgEYABABBcDSARQBFgEYARoBDAAcAQzAXgEgASIBJAEdQCXBHUAnwSnBK4EtgS6BMIEyAR1AHUAdQB1AHUAdQCVANAEYABgAGAAYABgAGAAYABgANgEYADcBOQEYADsBPQE/AQEBQwFFAUcBSQFLAU0BWQEPAVEBUsFUwVbBWAAYgVgAGoFcgV6BYIFigWRBWAAmQWfBaYFYABgAGAAYABgAKoFYACxBbAFuQW6BcEFwQXHBcEFwQXPBdMF2wXjBeoF8gX6BQIGCgYSBhoGIgYqBjIGOgZgAD4GRgZMBmAAUwZaBmAAYABgAGAAYABgAGAAYABgAGAAYABgAGIGYABpBnAGYABgAGAAYABgAGAAYABgAGAAYAB4Bn8GhQZgAGAAYAB1AHcDFQSLBmAAYABgAJMGdQA9A3UAmwajBqsGqwaVALMGuwbDBjAAywbSBtIG1QbSBtIG0gbSBtIG0gbdBuMG6wbzBvsGAwcLBxMHAwcbByMHJwcsBywHMQcsB9IGOAdAB0gHTgfSBkgHVgfSBtIG0gbSBtIG0gbSBtIG0gbSBiwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdgAGAALAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdbB2MHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB2kH0gZwB64EdQB1AHUAdQB1AHUAdQB1AHUHfQdgAIUHjQd1AHUAlQedB2AAYAClB6sHYACzB7YHvgfGB3UAzgfWBzMB3gfmB1EB7gf1B/0HlQENAQUIDQh1ABUIHQglCBcDLQg1CD0IRQhNCEEDUwh1AHUAdQBbCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIcAh3CHoIMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIgggwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAALAcsBywHLAcsBywHLAcsBywHLAcsB4oILAcsB44I0gaWCJ4Ipgh1AHUAqgiyCHUAdQB1AHUAdQB1AHUAdQB1AHUAtwh8AXUAvwh1AMUIyQjRCNkI4AjoCHUAdQB1AO4I9gj+CAYJDgkTCS0HGwkjCYIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiAAIAAAAFAAYABgAGIAXwBgAHEAdQBFAJUAogCyAKAAYABgAEIA4ABGANMA4QDxAMEBDwE1AFwBLAE6AQEBUQF4QkhCmEKoQrhCgAHIQsAB0MLAAcABwAHAAeDC6ABoAHDCwMMAAcABwAHAAdDDGMMAAcAB6MM4wwjDWMNow3jDaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAEjDqABWw6bDqABpg6gAaABoAHcDvwOPA+gAaABfA/8DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DpcPAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcAB9cPKwkyCToJMAB1AHUAdQBCCUoJTQl1AFUJXAljCWcJawkwADAAMAAwAHMJdQB2CX4JdQCECYoJjgmWCXUAngkwAGAAYABxAHUApgn3A64JtAl1ALkJdQDACTAAMAAwADAAdQB1AHUAdQB1AHUAdQB1AHUAowYNBMUIMAAwADAAMADICcsJ0wnZCRUE4QkwAOkJ8An4CTAAMAB1AAAKvwh1AAgKDwoXCh8KdQAwACcKLgp1ADYKqAmICT4KRgowADAAdQB1AE4KMAB1AFYKdQBeCnUAZQowADAAMAAwADAAMAAwADAAMAAVBHUAbQowADAAdQC5CXUKMAAwAHwBxAijBogEMgF9CoQKiASMCpQKmgqIBKIKqgquCogEDQG2Cr4KxgrLCjAAMADTCtsKCgHjCusK8Qr5CgELMAAwADAAMAB1AIsECQsRC3UANAEZCzAAMAAwADAAMAB1ACELKQswAHUANAExCzkLdQBBC0kLMABRC1kLMAAwADAAMAAwADAAdQBhCzAAMAAwAGAAYABpC3ELdwt/CzAAMACHC4sLkwubC58Lpwt1AK4Ltgt1APsDMAAwADAAMAAwADAAMAAwAL4LwwvLC9IL1wvdCzAAMADlC+kL8Qv5C/8LSQswADAAMAAwADAAMAAwADAAMAAHDDAAMAAwADAAMAAODBYMHgx1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1ACYMMAAwADAAdQB1AHUALgx1AHUAdQB1AHUAdQA2DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AD4MdQBGDHUAdQB1AHUAdQB1AEkMdQB1AHUAdQB1AFAMMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQBYDHUAdQB1AF8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUA+wMVBGcMMAAwAHwBbwx1AHcMfwyHDI8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAYABgAJcMMAAwADAAdQB1AJ8MlQClDDAAMACtDCwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB7UMLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AA0EMAC9DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAsBywHLAcsBywHLAcsBywHLQcwAMEMyAwsBywHLAcsBywHLAcsBywHLAcsBywHzAwwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1ANQM2QzhDDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMABgAGAAYABgAGAAYABgAOkMYADxDGAA+AwADQYNYABhCWAAYAAODTAAMAAwADAAFg1gAGAAHg37AzAAMAAwADAAYABgACYNYAAsDTQNPA1gAEMNPg1LDWAAYABgAGAAYABgAGAAYABgAGAAUg1aDYsGVglhDV0NcQBnDW0NdQ15DWAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAlQCBDZUAiA2PDZcNMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAnw2nDTAAMAAwADAAMAAwAHUArw23DTAAMAAwADAAMAAwADAAMAAwADAAMAB1AL8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQDHDTAAYABgAM8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA1w11ANwNMAAwAD0B5A0wADAAMAAwADAAMADsDfQN/A0EDgwOFA4wABsOMAAwADAAMAAwADAAMAAwANIG0gbSBtIG0gbSBtIG0gYjDigOwQUuDsEFMw7SBjoO0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGQg5KDlIOVg7SBtIGXg5lDm0OdQ7SBtIGfQ6EDooOjQ6UDtIGmg6hDtIG0gaoDqwO0ga0DrwO0gZgAGAAYADEDmAAYAAkBtIGzA5gANIOYADaDokO0gbSBt8O5w7SBu8O0gb1DvwO0gZgAGAAxA7SBtIG0gbSBtIGYABgAGAAYAAED2AAsAUMD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHJA8sBywHLAcsBywHLAccDywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywPLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAc0D9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHPA/SBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gYUD0QPlQCVAJUAMAAwADAAMACVAJUAlQCVAJUAlQCVAEwPMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA//8EAAQABAAEAAQABAAEAAQABAANAAMAAQABAAIABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQACgATABcAHgAbABoAHgAXABYAEgAeABsAGAAPABgAHABLAEsASwBLAEsASwBLAEsASwBLABgAGAAeAB4AHgATAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABYAGwASAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWAA0AEQAeAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAFAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJABYAGgAbABsAGwAeAB0AHQAeAE8AFwAeAA0AHgAeABoAGwBPAE8ADgBQAB0AHQAdAE8ATwAXAE8ATwBPABYAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAFAATwBAAE8ATwBPAEAATwBQAFAATwBQAB4AHgAeAB4AHgAeAB0AHQAdAB0AHgAdAB4ADgBQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgBQAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAkACQAJAAkACQAJAAkABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAFAAHgAeAB4AKwArAFAAUABQAFAAGABQACsAKwArACsAHgAeAFAAHgBQAFAAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUAAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAYAA0AKwArAB4AHgAbACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAB4ABAAEAB4ABAAEABMABAArACsAKwArACsAKwArACsAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAKwArACsAKwBWAFYAVgBWAB4AHgArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AGgAaABoAGAAYAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQAEwAEACsAEwATAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABLAEsASwBLAEsASwBLAEsASwBLABoAGQAZAB4AUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABMAUAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABABQAFAABAAEAB4ABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUAAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAFAABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQAUABQAB4AHgAYABMAUAArACsABAAbABsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAFAABAAEAAQABAAEAFAABAAEAAQAUAAEAAQABAAEAAQAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArACsAHgArAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAUAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEAA0ADQBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUAArACsAKwBQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABABQACsAKwArACsAKwArACsAKwAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUAAaABoAUABQAFAAUABQAEwAHgAbAFAAHgAEACsAKwAEAAQABAArAFAAUABQAFAAUABQACsAKwArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQACsAUABQACsAKwAEACsABAAEAAQABAAEACsAKwArACsABAAEACsAKwAEAAQABAArACsAKwAEACsAKwArACsAKwArACsAUABQAFAAUAArAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLAAQABABQAFAAUAAEAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAArACsAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AGwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAKwArACsAKwArAAQABAAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAAQAUAArAFAAUABQAFAAUABQACsAKwArAFAAUABQACsAUABQAFAAUAArACsAKwBQAFAAKwBQACsAUABQACsAKwArAFAAUAArACsAKwBQAFAAUAArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArAAQABAAEAAQABAArACsAKwAEAAQABAArAAQABAAEAAQAKwArAFAAKwArACsAKwArACsABAArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAHgAeAB4AHgAeAB4AGwAeACsAKwArACsAKwAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAUABQAFAAKwArACsAKwArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwAOAFAAUABQAFAAUABQAFAAHgBQAAQABAAEAA4AUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAKwArAAQAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAKwArACsAKwArACsAUAArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABABQAB4AKwArACsAKwBQAFAAUAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQABoAUABQAFAAUABQAFAAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQACsAUAArACsAUABQAFAAUABQAFAAUAArACsAKwAEACsAKwArACsABAAEAAQABAAEAAQAKwAEACsABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArAAQABAAeACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAXAAqACoAKgAqACoAKgAqACsAKwArACsAGwBcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAeAEsASwBLAEsASwBLAEsASwBLAEsADQANACsAKwArACsAKwBcAFwAKwBcACsAXABcAFwAXABcACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAXAArAFwAXABcAFwAXABcAFwAXABcAFwAKgBcAFwAKgAqACoAKgAqACoAKgAqACoAXAArACsAXABcAFwAXABcACsAXAArACoAKgAqACoAKgAqACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwBcAFwAXABcAFAADgAOAA4ADgAeAA4ADgAJAA4ADgANAAkAEwATABMAEwATAAkAHgATAB4AHgAeAAQABAAeAB4AHgAeAB4AHgBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQAFAADQAEAB4ABAAeAAQAFgARABYAEQAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAAQABAAEAAQADQAEAAQAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAA0ADQAeAB4AHgAeAB4AHgAEAB4AHgAeAB4AHgAeACsAHgAeAA4ADgANAA4AHgAeAB4AHgAeAAkACQArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgBcAEsASwBLAEsASwBLAEsASwBLAEsADQANAB4AHgAeAB4AXABcAFwAXABcAFwAKgAqACoAKgBcAFwAXABcACoAKgAqAFwAKgAqACoAXABcACoAKgAqACoAKgAqACoAXABcAFwAKgAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqAFwAKgBLAEsASwBLAEsASwBLAEsASwBLACoAKgAqACoAKgAqAFAAUABQAFAAUABQACsAUAArACsAKwArACsAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAKwBQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsABAAEAAQAHgANAB4AHgAeAB4AHgAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUAArACsADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWABEAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQANAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAANAA0AKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUAArAAQABAArACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqAA0ADQAVAFwADQAeAA0AGwBcACoAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwAeAB4AEwATAA0ADQAOAB4AEwATAB4ABAAEAAQACQArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAHgArACsAKwATABMASwBLAEsASwBLAEsASwBLAEsASwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAXABcAFwAXABcACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAXAArACsAKwAqACoAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsAHgAeAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKwAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKwArAAQASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACoAKgAqACoAKgAqACoAXAAqACoAKgAqACoAKgArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABABQAFAAUABQAFAAUABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwANAA0AHgANAA0ADQANAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwAeAB4AHgAeAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArAA0ADQANAA0ADQBLAEsASwBLAEsASwBLAEsASwBLACsAKwArAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUAAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAAQAUABQAFAAUABQAFAABABQAFAABAAEAAQAUAArACsAKwArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQACsAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAFAAUABQACsAHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQACsAKwAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQACsAHgAeAB4AHgAeAB4AHgAOAB4AKwANAA0ADQANAA0ADQANAAkADQANAA0ACAAEAAsABAAEAA0ACQANAA0ADAAdAB0AHgAXABcAFgAXABcAFwAWABcAHQAdAB4AHgAUABQAFAANAAEAAQAEAAQABAAEAAQACQAaABoAGgAaABoAGgAaABoAHgAXABcAHQAVABUAHgAeAB4AHgAeAB4AGAAWABEAFQAVABUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ADQAeAA0ADQANAA0AHgANAA0ADQAHAB4AHgAeAB4AKwAEAAQABAAEAAQABAAEAAQABAAEAFAAUAArACsATwBQAFAAUABQAFAAHgAeAB4AFgARAE8AUABPAE8ATwBPAFAAUABQAFAAUAAeAB4AHgAWABEAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArABsAGwAbABsAGwAbABsAGgAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGgAbABsAGwAbABoAGwAbABoAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAHgAeAFAAGgAeAB0AHgBQAB4AGgAeAB4AHgAeAB4AHgAeAB4AHgBPAB4AUAAbAB4AHgBQAFAAUABQAFAAHgAeAB4AHQAdAB4AUAAeAFAAHgBQAB4AUABPAFAAUAAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgBQAFAAUABQAE8ATwBQAFAAUABQAFAATwBQAFAATwBQAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAUABQAFAATwBPAE8ATwBPAE8ATwBPAE8ATwBQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABPAB4AHgArACsAKwArAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHQAdAB4AHgAeAB0AHQAeAB4AHQAeAB4AHgAdAB4AHQAbABsAHgAdAB4AHgAeAB4AHQAeAB4AHQAdAB0AHQAeAB4AHQAeAB0AHgAdAB0AHQAdAB0AHQAeAB0AHgAeAB4AHgAeAB0AHQAdAB0AHgAeAB4AHgAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeAB0AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAeAB0AHQAdAB0AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAWABEAHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAWABEAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AHQAdAB0AHgAeAB0AHgAeAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlAB4AHQAdAB4AHgAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AJQAlAB0AHQAlAB4AJQAlACUAIAAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAdAB0AHQAeAB0AJQAdAB0AHgAdAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAdAB0AHQAdACUAHgAlACUAJQAdACUAJQAdAB0AHQAlACUAHQAdACUAHQAdACUAJQAlAB4AHQAeAB4AHgAeAB0AHQAlAB0AHQAdAB0AHQAdACUAJQAlACUAJQAdACUAJQAgACUAHQAdACUAJQAlACUAJQAlACUAJQAeAB4AHgAlACUAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AFwAXABcAFwAXABcAHgATABMAJQAeAB4AHgAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARABYAEQAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAEAAQABAAeAB4AKwArACsAKwArABMADQANAA0AUAATAA0AUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUAANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAA0ADQANAA0ADQANAA0ADQAeAA0AFgANAB4AHgAXABcAHgAeABcAFwAWABEAFgARABYAEQAWABEADQANAA0ADQATAFAADQANAB4ADQANAB4AHgAeAB4AHgAMAAwADQANAA0AHgANAA0AFgANAA0ADQANAA0ADQANAA0AHgANAB4ADQANAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArAA0AEQARACUAJQBHAFcAVwAWABEAFgARABYAEQAWABEAFgARACUAJQAWABEAFgARABYAEQAWABEAFQAWABEAEQAlAFcAVwBXAFcAVwBXAFcAVwBXAAQABAAEAAQABAAEACUAVwBXAFcAVwA2ACUAJQBXAFcAVwBHAEcAJQAlACUAKwBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBRAFcAUQBXAFEAVwBXAFcAVwBXAFcAUQBXAFcAVwBXAFcAVwBRAFEAKwArAAQABAAVABUARwBHAFcAFQBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBRAFcAVwBXAFcAVwBXAFEAUQBXAFcAVwBXABUAUQBHAEcAVwArACsAKwArACsAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwAlACUAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACsAKwArACsAKwArACsAKwArACsAKwArAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBPAE8ATwBPAE8ATwBPAE8AJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADQATAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABLAEsASwBLAEsASwBLAEsASwBLAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAABAAEAAQABAAeAAQABAAEAAQABAAEAAQABAAEAAQAHgBQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAeAA0ADQANAA0ADQArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAAQAUABQAFAABABQAFAAUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAeAB4AHgAeAAQAKwArACsAUABQAFAAUABQAFAAHgAeABoAHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADgAOABMAEwArACsAKwArACsAKwArACsABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwANAA0ASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUAAeAB4AHgBQAA4AUABQAAQAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArAB4AWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYACsAKwArAAQAHgAeAB4AHgAeAB4ADQANAA0AHgAeAB4AHgArAFAASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArAB4AHgBcAFwAXABcAFwAKgBcAFwAXABcAFwAXABcAFwAXABcAEsASwBLAEsASwBLAEsASwBLAEsAXABcAFwAXABcACsAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAFAAUABQAAQAUABQAFAAUABQAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAHgANAA0ADQBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAXAAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAKgAqACoAXABcACoAKgBcAFwAXABcAFwAKgAqAFwAKgBcACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcACoAKgBQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAA0ADQBQAFAAUAAEAAQAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQADQAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAVABVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBUAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVACsAKwArACsAKwArACsAKwArACsAKwArAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAKwArACsAKwBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAKwArACsAKwAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAKwArACsAKwArAFYABABWAFYAVgBWAFYAVgBWAFYAVgBWAB4AVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgArAFYAVgBWAFYAVgArAFYAKwBWAFYAKwBWAFYAKwBWAFYAVgBWAFYAVgBWAFYAVgBWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAEQAWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAaAB4AKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAGAARABEAGAAYABMAEwAWABEAFAArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACUAJQAlACUAJQAWABEAFgARABYAEQAWABEAFgARABYAEQAlACUAFgARACUAJQAlACUAJQAlACUAEQAlABEAKwAVABUAEwATACUAFgARABYAEQAWABEAJQAlACUAJQAlACUAJQAlACsAJQAbABoAJQArACsAKwArAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAcAKwATACUAJQAbABoAJQAlABYAEQAlACUAEQAlABEAJQBXAFcAVwBXAFcAVwBXAFcAVwBXABUAFQAlACUAJQATACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXABYAJQARACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAWACUAEQAlABYAEQARABYAEQARABUAVwBRAFEAUQBRAFEAUQBRAFEAUQBRAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcARwArACsAVwBXAFcAVwBXAFcAKwArAFcAVwBXAFcAVwBXACsAKwBXAFcAVwBXAFcAVwArACsAVwBXAFcAKwArACsAGgAbACUAJQAlABsAGwArAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAAQAB0AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsADQANAA0AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAA0AUABQAFAAUAArACsAKwArAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwArAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwBQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAUABQAFAAUABQAAQABAAEACsABAAEACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAKwBQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAA0ADQANAA0ADQANAA0ADQAeACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAArACsAKwArAFAAUABQAFAAUAANAA0ADQANAA0ADQAUACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsADQANAA0ADQANAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArAAQABAANACsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAB4AHgAeAB4AHgArACsAKwArACsAKwAEAAQABAAEAAQABAAEAA0ADQAeAB4AHgAeAB4AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsASwBLAEsASwBLAEsASwBLAEsASwANAA0ADQANAFAABAAEAFAAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAeAA4AUAArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAADQANAB4ADQAEAAQABAAEAB4ABAAEAEsASwBLAEsASwBLAEsASwBLAEsAUAAOAFAADQANAA0AKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAANAA0AHgANAA0AHgAEACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAA0AKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsABAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsABAAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAUAArACsAKwArACsAKwAEACsAKwArACsAKwBQAFAAUABQAFAABAAEACsAKwAEAAQABAAEAAQABAAEACsAKwArAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABABQAFAAUABQAA0ADQANAA0AHgBLAEsASwBLAEsASwBLAEsASwBLAA0ADQArAB4ABABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUAAeAFAAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABAAEAAQADgANAA0AEwATAB4AHgAeAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAFAAUABQAFAABAAEACsAKwAEAA0ADQAeAFAAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKwArACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBcAFwADQANAA0AKgBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAKwArAFAAKwArAFAAUABQAFAAUABQAFAAUAArAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQAKwAEAAQAKwArAAQABAAEAAQAUAAEAFAABAAEAA0ADQANACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABABQAA4AUAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAFAABAAEAAQABAAOAB4ADQANAA0ADQAOAB4ABAArACsAKwArACsAKwArACsAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAA0ADQANAFAADgAOAA4ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAAQABAAEAFAADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAOABMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAArACsAKwAEACsABAAEACsABAAEAAQABAAEAAQABABQAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAaABoAGgAaAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABIAEgAQwBDAEMAUABQAFAAUABDAFAAUABQAEgAQwBIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABDAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAJAAkACQAJAAkACQAJABYAEQArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwANAA0AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAANACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAA0ADQANAB4AHgAeAB4AHgAeAFAAUABQAFAADQAeACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAA0AHgAeACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAARwBHABUARwAJACsAKwArACsAKwArACsAKwArACsAKwAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUQBRAFEAKwArACsAKwArACsAKwArACsAKwArACsAKwBRAFEAUQBRACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAHgAEAAQADQAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQABAAEAAQABAAeAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQAHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAKwArAFAAKwArAFAAUAArACsAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUAArAFAAUABQAFAAUABQAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAHgAeAFAAUABQAFAAUAArAFAAKwArACsAUABQAFAAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeACsAKwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4ABAAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAHgAeAA0ADQANAA0AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArAAQABAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwBQAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArABsAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAB4AHgAeAB4ABAAEAAQABAAEAAQABABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArABYAFgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAGgBQAFAAUAAaAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUAArACsAKwArACsAKwBQACsAKwArACsAUAArAFAAKwBQACsAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUAArAFAAKwBQACsAUAArAFAAUAArAFAAKwArAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAKwBQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8AJQAlACUAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB4AHgAeACUAJQAlAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAlACUAJQAlACUAHgAlACUAJQAlACUAIAAgACAAJQAlACAAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACEAIQAhACEAIQAlACUAIAAgACUAJQAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAIAAlACUAJQAlACAAIAAgACUAIAAgACAAJQAlACUAJQAlACUAJQAgACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAlAB4AJQAeACUAJQAlACUAJQAgACUAJQAlACUAHgAlAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACAAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABcAFwAXABUAFQAVAB4AHgAeAB4AJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAgACUAJQAgACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAIAAgACUAJQAgACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACAAIAAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACAAIAAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAA==';\nexport const byteLength = 39664;\n","'use strict';\n\nimport {createTrieFromBase64} from 'utrie';\nimport {base64, byteLength} from './linebreak-trie';\nimport {fromCodePoint, toCodePoints} from './Util';\n\nexport const LETTER_NUMBER_MODIFIER = 50;\n\n// Non-tailorable Line Breaking Classes\nconst BK = 1; // Cause a line break (after)\nconst CR = 2; // Cause a line break (after), except between CR and LF\nconst LF = 3; // Cause a line break (after)\nconst CM = 4; // Prohibit a line break between the character and the preceding character\nconst NL = 5; // Cause a line break (after)\nconst SG = 6; // Do not occur in well-formed text\nconst WJ = 7; // Prohibit line breaks before and after\nconst ZW = 8; // Provide a break opportunity\nconst GL = 9; // Prohibit line breaks before and after\nconst SP = 10; // Enable indirect line breaks\nconst ZWJ = 11; // Prohibit line breaks within joiner sequences\n// Break Opportunities\nconst B2 = 12; // Provide a line break opportunity before and after the character\nconst BA = 13; // Generally provide a line break opportunity after the character\nconst BB = 14; // Generally provide a line break opportunity before the character\nconst HY = 15; // Provide a line break opportunity after the character, except in numeric context\nconst CB = 16; // Provide a line break opportunity contingent on additional information\n// Characters Prohibiting Certain Breaks\nconst CL = 17; // Prohibit line breaks before\nconst CP = 18; // Prohibit line breaks before\nconst EX = 19; // Prohibit line breaks before\nconst IN = 20; // Allow only indirect line breaks between pairs\nconst NS = 21; // Allow only indirect line breaks before\nconst OP = 22; // Prohibit line breaks after\nconst QU = 23; // Act like they are both opening and closing\n// Numeric Context\nconst IS = 24; // Prevent breaks after any and before numeric\nconst NU = 25; // Form numeric expressions for line breaking purposes\nconst PO = 26; // Do not break following a numeric expression\nconst PR = 27; // Do not break in front of a numeric expression\nconst SY = 28; // Prevent a break before; and allow a break after\n// Other Characters\nconst AI = 29; // Act like AL when the resolvedEAW is N; otherwise; act as ID\nconst AL = 30; // Are alphabetic characters or symbols that are used with alphabetic characters\nconst CJ = 31; // Treat as NS or ID for strict or normal breaking.\nconst EB = 32; // Do not break from following Emoji Modifier\nconst EM = 33; // Do not break from preceding Emoji Base\nconst H2 = 34; // Form Korean syllable blocks\nconst H3 = 35; // Form Korean syllable blocks\nconst HL = 36; // Do not break around a following hyphen; otherwise act as Alphabetic\nconst ID = 37; // Break before or after; except in some numeric context\nconst JL = 38; // Form Korean syllable blocks\nconst JV = 39; // Form Korean syllable blocks\nconst JT = 40; // Form Korean syllable blocks\nconst RI = 41; // Keep pairs together. For pairs; break before and after other classes\nconst SA = 42; // Provide a line break opportunity contingent on additional, language-specific context analysis\nconst XX = 43; // Have as yet unknown line breaking behavior or unassigned code positions\n\nconst ea_OP = [0x2329, 0xff08];\n\nexport const classes: {[key: string]: number} = {\n BK,\n CR,\n LF,\n CM,\n NL,\n SG,\n WJ,\n ZW,\n GL,\n SP,\n ZWJ,\n B2,\n BA,\n BB,\n HY,\n CB,\n CL,\n CP,\n EX,\n IN,\n NS,\n OP,\n QU,\n IS,\n NU,\n PO,\n PR,\n SY,\n AI,\n AL,\n CJ,\n EB,\n EM,\n H2,\n H3,\n HL,\n ID,\n JL,\n JV,\n JT,\n RI,\n SA,\n XX,\n};\n\nexport const BREAK_MANDATORY = '!';\nexport const BREAK_NOT_ALLOWED = '×';\nexport const BREAK_ALLOWED = '÷';\nexport const UnicodeTrie = createTrieFromBase64(base64, byteLength);\n\nconst ALPHABETICS = [AL, HL];\nconst HARD_LINE_BREAKS = [BK, CR, LF, NL];\nconst SPACE = [SP, ZW];\nconst PREFIX_POSTFIX = [PR, PO];\nconst LINE_BREAKS = HARD_LINE_BREAKS.concat(SPACE);\nconst KOREAN_SYLLABLE_BLOCK = [JL, JV, JT, H2, H3];\nconst HYPHEN = [HY, BA];\n\nexport const codePointsToCharacterClasses = (\n codePoints: number[],\n lineBreak: string = 'strict'\n): [number[], number[], boolean[]] => {\n const types: number[] = [];\n const indices: number[] = [];\n const categories: boolean[] = [];\n codePoints.forEach((codePoint, index) => {\n let classType = UnicodeTrie.get(codePoint);\n if (classType > LETTER_NUMBER_MODIFIER) {\n categories.push(true);\n classType -= LETTER_NUMBER_MODIFIER;\n } else {\n categories.push(false);\n }\n\n if (['normal', 'auto', 'loose'].indexOf(lineBreak) !== -1) {\n // U+2010, – U+2013, 〜 U+301C, ゠ U+30A0\n if ([0x2010, 0x2013, 0x301c, 0x30a0].indexOf(codePoint) !== -1) {\n indices.push(index);\n return types.push(CB);\n }\n }\n\n if (classType === CM || classType === ZWJ) {\n // LB10 Treat any remaining combining mark or ZWJ as AL.\n if (index === 0) {\n indices.push(index);\n return types.push(AL);\n }\n\n // LB9 Do not break a combining character sequence; treat it as if it has the line breaking class of\n // the base character in all of the following rules. Treat ZWJ as if it were CM.\n const prev = types[index - 1];\n if (LINE_BREAKS.indexOf(prev) === -1) {\n indices.push(indices[index - 1]);\n return types.push(prev);\n }\n indices.push(index);\n return types.push(AL);\n }\n\n indices.push(index);\n\n if (classType === CJ) {\n return types.push(lineBreak === 'strict' ? NS : ID);\n }\n\n if (classType === SA) {\n return types.push(AL);\n }\n\n if (classType === AI) {\n return types.push(AL);\n }\n\n // For supplementary characters, a useful default is to treat characters in the range 10000..1FFFD as AL\n // and characters in the ranges 20000..2FFFD and 30000..3FFFD as ID, until the implementation can be revised\n // to take into account the actual line breaking properties for these characters.\n if (classType === XX) {\n if ((codePoint >= 0x20000 && codePoint <= 0x2fffd) || (codePoint >= 0x30000 && codePoint <= 0x3fffd)) {\n return types.push(ID);\n } else {\n return types.push(AL);\n }\n }\n\n types.push(classType);\n });\n\n return [indices, types, categories];\n};\n\nconst isAdjacentWithSpaceIgnored = (\n a: number[] | number,\n b: number,\n currentIndex: number,\n classTypes: number[]\n): boolean => {\n const current = classTypes[currentIndex];\n if (Array.isArray(a) ? a.indexOf(current) !== -1 : a === current) {\n let i = currentIndex;\n while (i <= classTypes.length) {\n i++;\n let next = classTypes[i];\n\n if (next === b) {\n return true;\n }\n\n if (next !== SP) {\n break;\n }\n }\n }\n\n if (current === SP) {\n let i = currentIndex;\n\n while (i > 0) {\n i--;\n const prev = classTypes[i];\n\n if (Array.isArray(a) ? a.indexOf(prev) !== -1 : a === prev) {\n let n = currentIndex;\n while (n <= classTypes.length) {\n n++;\n let next = classTypes[n];\n\n if (next === b) {\n return true;\n }\n\n if (next !== SP) {\n break;\n }\n }\n }\n\n if (prev !== SP) {\n break;\n }\n }\n }\n return false;\n};\n\nconst previousNonSpaceClassType = (currentIndex: number, classTypes: number[]): number => {\n let i = currentIndex;\n while (i >= 0) {\n let type = classTypes[i];\n if (type === SP) {\n i--;\n } else {\n return type;\n }\n }\n return 0;\n};\n\nexport type BREAK_OPPORTUNITIES = typeof BREAK_NOT_ALLOWED | typeof BREAK_ALLOWED | typeof BREAK_MANDATORY;\n\nconst _lineBreakAtIndex = (\n codePoints: number[],\n classTypes: number[],\n indicies: number[],\n index: number,\n forbiddenBreaks?: boolean[]\n): BREAK_OPPORTUNITIES => {\n if (indicies[index] === 0) {\n return BREAK_NOT_ALLOWED;\n }\n\n let currentIndex = index - 1;\n if (Array.isArray(forbiddenBreaks) && forbiddenBreaks[currentIndex] === true) {\n return BREAK_NOT_ALLOWED;\n }\n\n let beforeIndex = currentIndex - 1;\n let afterIndex = currentIndex + 1;\n let current = classTypes[currentIndex];\n\n // LB4 Always break after hard line breaks.\n // LB5 Treat CR followed by LF, as well as CR, LF, and NL as hard line breaks.\n let before = beforeIndex >= 0 ? classTypes[beforeIndex] : 0;\n let next = classTypes[afterIndex];\n\n if (current === CR && next === LF) {\n return BREAK_NOT_ALLOWED;\n }\n\n if (HARD_LINE_BREAKS.indexOf(current) !== -1) {\n return BREAK_MANDATORY;\n }\n\n // LB6 Do not break before hard line breaks.\n if (HARD_LINE_BREAKS.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB7 Do not break before spaces or zero width space.\n if (SPACE.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB8 Break before any character following a zero-width space, even if one or more spaces intervene.\n if (previousNonSpaceClassType(currentIndex, classTypes) === ZW) {\n return BREAK_ALLOWED;\n }\n\n // LB8a Do not break after a zero width joiner.\n if (UnicodeTrie.get(codePoints[currentIndex]) === ZWJ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // zwj emojis\n if ((current === EB || current === EM) && UnicodeTrie.get(codePoints[afterIndex]) === ZWJ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB11 Do not break before or after Word joiner and related characters.\n if (current === WJ || next === WJ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB12 Do not break after NBSP and related characters.\n if (current === GL) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB12a Do not break before NBSP and related characters, except after spaces and hyphens.\n if ([SP, BA, HY].indexOf(current) === -1 && next === GL) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB13 Do not break before ‘]’ or ‘!’ or ‘;’ or ‘/’, even after spaces.\n if ([CL, CP, EX, IS, SY].indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB14 Do not break after ‘[’, even after spaces.\n if (previousNonSpaceClassType(currentIndex, classTypes) === OP) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB15 Do not break within ‘”[’, even with intervening spaces.\n if (isAdjacentWithSpaceIgnored(QU, OP, currentIndex, classTypes)) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB16 Do not break between closing punctuation and a nonstarter (lb=NS), even with intervening spaces.\n if (isAdjacentWithSpaceIgnored([CL, CP], NS, currentIndex, classTypes)) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB17 Do not break within ‘——’, even with intervening spaces.\n if (isAdjacentWithSpaceIgnored(B2, B2, currentIndex, classTypes)) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB18 Break after spaces.\n if (current === SP) {\n return BREAK_ALLOWED;\n }\n\n // LB19 Do not break before or after quotation marks, such as ‘ ” ’.\n if (current === QU || next === QU) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB20 Break before and after unresolved CB.\n if (next === CB || current === CB) {\n return BREAK_ALLOWED;\n }\n\n // LB21 Do not break before hyphen-minus, other hyphens, fixed-width spaces, small kana, and other non-starters, or after acute accents.\n if ([BA, HY, NS].indexOf(next) !== -1 || current === BB) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB21a Don't break after Hebrew + Hyphen.\n if (before === HL && HYPHEN.indexOf(current) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB21b Don’t break between Solidus and Hebrew letters.\n if (current === SY && next === HL) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB22 Do not break before ellipsis.\n if (next === IN) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB23 Do not break between digits and letters.\n if ((ALPHABETICS.indexOf(next) !== -1 && current === NU) || (ALPHABETICS.indexOf(current) !== -1 && next === NU)) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB23a Do not break between numeric prefixes and ideographs, or between ideographs and numeric postfixes.\n if (\n (current === PR && [ID, EB, EM].indexOf(next) !== -1) ||\n ([ID, EB, EM].indexOf(current) !== -1 && next === PO)\n ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB24 Do not break between numeric prefix/postfix and letters, or between letters and prefix/postfix.\n if (\n (ALPHABETICS.indexOf(current) !== -1 && PREFIX_POSTFIX.indexOf(next) !== -1) ||\n (PREFIX_POSTFIX.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1)\n ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB25 Do not break between the following pairs of classes relevant to numbers:\n if (\n // (PR | PO) × ( OP | HY )? NU\n ([PR, PO].indexOf(current) !== -1 &&\n (next === NU || ([OP, HY].indexOf(next) !== -1 && classTypes[afterIndex + 1] === NU))) ||\n // ( OP | HY ) × NU\n ([OP, HY].indexOf(current) !== -1 && next === NU) ||\n // NU ×\t(NU | SY | IS)\n (current === NU && [NU, SY, IS].indexOf(next) !== -1)\n ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // NU (NU | SY | IS)* × (NU | SY | IS | CL | CP)\n if ([NU, SY, IS, CL, CP].indexOf(next) !== -1) {\n let prevIndex = currentIndex;\n while (prevIndex >= 0) {\n let type = classTypes[prevIndex];\n if (type === NU) {\n return BREAK_NOT_ALLOWED;\n } else if ([SY, IS].indexOf(type) !== -1) {\n prevIndex--;\n } else {\n break;\n }\n }\n }\n\n // NU (NU | SY | IS)* (CL | CP)? × (PO | PR))\n if ([PR, PO].indexOf(next) !== -1) {\n let prevIndex = [CL, CP].indexOf(current) !== -1 ? beforeIndex : currentIndex;\n while (prevIndex >= 0) {\n let type = classTypes[prevIndex];\n if (type === NU) {\n return BREAK_NOT_ALLOWED;\n } else if ([SY, IS].indexOf(type) !== -1) {\n prevIndex--;\n } else {\n break;\n }\n }\n }\n\n // LB26 Do not break a Korean syllable.\n if (\n (JL === current && [JL, JV, H2, H3].indexOf(next) !== -1) ||\n ([JV, H2].indexOf(current) !== -1 && [JV, JT].indexOf(next) !== -1) ||\n ([JT, H3].indexOf(current) !== -1 && next === JT)\n ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB27 Treat a Korean Syllable Block the same as ID.\n if (\n (KOREAN_SYLLABLE_BLOCK.indexOf(current) !== -1 && [IN, PO].indexOf(next) !== -1) ||\n (KOREAN_SYLLABLE_BLOCK.indexOf(next) !== -1 && current === PR)\n ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB28 Do not break between alphabetics (“at”).\n if (ALPHABETICS.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB29 Do not break between numeric punctuation and alphabetics (“e.g.”).\n if (current === IS && ALPHABETICS.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB30 Do not break between letters, numbers, or ordinary symbols and opening or closing parentheses.\n if (\n (ALPHABETICS.concat(NU).indexOf(current) !== -1 &&\n next === OP &&\n ea_OP.indexOf(codePoints[afterIndex]) === -1) ||\n (ALPHABETICS.concat(NU).indexOf(next) !== -1 && current === CP)\n ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB30a Break between two regional indicator symbols if and only if there are an even number of regional\n // indicators preceding the position of the break.\n if (current === RI && next === RI) {\n let i = indicies[currentIndex];\n let count = 1;\n while (i > 0) {\n i--;\n if (classTypes[i] === RI) {\n count++;\n } else {\n break;\n }\n }\n if (count % 2 !== 0) {\n return BREAK_NOT_ALLOWED;\n }\n }\n\n // LB30b Do not break between an emoji base and an emoji modifier.\n if (current === EB && next === EM) {\n return BREAK_NOT_ALLOWED;\n }\n\n return BREAK_ALLOWED;\n};\n\nexport const lineBreakAtIndex = (codePoints: number[], index: number): BREAK_OPPORTUNITIES => {\n // LB2 Never break at the start of text.\n if (index === 0) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB3 Always break at the end of text.\n if (index >= codePoints.length) {\n return BREAK_MANDATORY;\n }\n\n const [indices, classTypes] = codePointsToCharacterClasses(codePoints);\n\n return _lineBreakAtIndex(codePoints, classTypes, indices, index);\n};\n\nexport type LINE_BREAK = 'auto' | 'normal' | 'strict';\nexport type WORD_BREAK = 'normal' | 'break-all' | 'break-word' | 'keep-all';\n\ninterface IOptions {\n lineBreak?: LINE_BREAK;\n wordBreak?: WORD_BREAK;\n}\n\nconst cssFormattedClasses = (codePoints: number[], options?: IOptions): [number[], number[], boolean[] | undefined] => {\n if (!options) {\n options = {lineBreak: 'normal', wordBreak: 'normal'};\n }\n let [indicies, classTypes, isLetterNumber] = codePointsToCharacterClasses(codePoints, options.lineBreak);\n\n if (options.wordBreak === 'break-all' || options.wordBreak === 'break-word') {\n classTypes = classTypes.map((type) => ([NU, AL, SA].indexOf(type) !== -1 ? ID : type));\n }\n\n const forbiddenBreakpoints =\n options.wordBreak === 'keep-all'\n ? isLetterNumber.map((letterNumber, i) => {\n return letterNumber && codePoints[i] >= 0x4e00 && codePoints[i] <= 0x9fff;\n })\n : undefined;\n\n return [indicies, classTypes, forbiddenBreakpoints];\n};\n\nexport const inlineBreakOpportunities = (str: string, options?: IOptions): string => {\n const codePoints = toCodePoints(str);\n let output = BREAK_NOT_ALLOWED;\n const [indicies, classTypes, forbiddenBreakpoints] = cssFormattedClasses(codePoints, options);\n\n codePoints.forEach((codePoint, i) => {\n output +=\n fromCodePoint(codePoint) +\n (i >= codePoints.length - 1\n ? BREAK_MANDATORY\n : _lineBreakAtIndex(codePoints, classTypes, indicies, i + 1, forbiddenBreakpoints));\n });\n\n return output;\n};\n\nclass Break {\n private readonly codePoints: number[];\n readonly required: boolean;\n readonly start: number;\n readonly end: number;\n\n constructor(codePoints: number[], lineBreak: string, start: number, end: number) {\n this.codePoints = codePoints;\n this.required = lineBreak === BREAK_MANDATORY;\n this.start = start;\n this.end = end;\n }\n\n slice(): string {\n return fromCodePoint(...this.codePoints.slice(this.start, this.end));\n }\n}\n\nexport type LineBreak =\n | {\n done: true;\n value: null;\n }\n | {\n done: false;\n value: Break;\n };\n\ninterface ILineBreakIterator {\n next: () => LineBreak;\n}\n\nexport const LineBreaker = (str: string, options?: IOptions): ILineBreakIterator => {\n const codePoints = toCodePoints(str);\n const [indicies, classTypes, forbiddenBreakpoints] = cssFormattedClasses(codePoints, options);\n const length = codePoints.length;\n let lastEnd = 0;\n let nextIndex = 0;\n\n return {\n next: () => {\n if (nextIndex >= length) {\n return {done: true, value: null};\n }\n let lineBreak = BREAK_NOT_ALLOWED;\n while (\n nextIndex < length &&\n (lineBreak = _lineBreakAtIndex(codePoints, classTypes, indicies, ++nextIndex, forbiddenBreakpoints)) ===\n BREAK_NOT_ALLOWED\n ) {}\n\n if (lineBreak !== BREAK_NOT_ALLOWED || nextIndex === length) {\n const value = new Break(codePoints, lineBreak, lastEnd, nextIndex);\n lastEnd = nextIndex;\n return {value, done: false};\n }\n\n return {done: true, value: null};\n },\n };\n};\n","// https://www.w3.org/TR/css-syntax-3\n\nimport {fromCodePoint, toCodePoints} from 'css-line-break';\n\nexport const enum TokenType {\n STRING_TOKEN,\n BAD_STRING_TOKEN,\n LEFT_PARENTHESIS_TOKEN,\n RIGHT_PARENTHESIS_TOKEN,\n COMMA_TOKEN,\n HASH_TOKEN,\n DELIM_TOKEN,\n AT_KEYWORD_TOKEN,\n PREFIX_MATCH_TOKEN,\n DASH_MATCH_TOKEN,\n INCLUDE_MATCH_TOKEN,\n LEFT_CURLY_BRACKET_TOKEN,\n RIGHT_CURLY_BRACKET_TOKEN,\n SUFFIX_MATCH_TOKEN,\n SUBSTRING_MATCH_TOKEN,\n DIMENSION_TOKEN,\n PERCENTAGE_TOKEN,\n NUMBER_TOKEN,\n FUNCTION,\n FUNCTION_TOKEN,\n IDENT_TOKEN,\n COLUMN_TOKEN,\n URL_TOKEN,\n BAD_URL_TOKEN,\n CDC_TOKEN,\n CDO_TOKEN,\n COLON_TOKEN,\n SEMICOLON_TOKEN,\n LEFT_SQUARE_BRACKET_TOKEN,\n RIGHT_SQUARE_BRACKET_TOKEN,\n UNICODE_RANGE_TOKEN,\n WHITESPACE_TOKEN,\n EOF_TOKEN\n}\n\ninterface IToken {\n type: TokenType;\n}\n\nexport interface Token extends IToken {\n type:\n | TokenType.BAD_URL_TOKEN\n | TokenType.BAD_STRING_TOKEN\n | TokenType.LEFT_PARENTHESIS_TOKEN\n | TokenType.RIGHT_PARENTHESIS_TOKEN\n | TokenType.COMMA_TOKEN\n | TokenType.SUBSTRING_MATCH_TOKEN\n | TokenType.PREFIX_MATCH_TOKEN\n | TokenType.SUFFIX_MATCH_TOKEN\n | TokenType.COLON_TOKEN\n | TokenType.SEMICOLON_TOKEN\n | TokenType.LEFT_SQUARE_BRACKET_TOKEN\n | TokenType.RIGHT_SQUARE_BRACKET_TOKEN\n | TokenType.LEFT_CURLY_BRACKET_TOKEN\n | TokenType.RIGHT_CURLY_BRACKET_TOKEN\n | TokenType.DASH_MATCH_TOKEN\n | TokenType.INCLUDE_MATCH_TOKEN\n | TokenType.COLUMN_TOKEN\n | TokenType.WHITESPACE_TOKEN\n | TokenType.CDC_TOKEN\n | TokenType.CDO_TOKEN\n | TokenType.EOF_TOKEN;\n}\n\nexport interface StringValueToken extends IToken {\n type:\n | TokenType.STRING_TOKEN\n | TokenType.DELIM_TOKEN\n | TokenType.FUNCTION_TOKEN\n | TokenType.IDENT_TOKEN\n | TokenType.URL_TOKEN\n | TokenType.AT_KEYWORD_TOKEN;\n value: string;\n}\n\nexport interface HashToken extends IToken {\n type: TokenType.HASH_TOKEN;\n flags: number;\n value: string;\n}\n\nexport interface NumberValueToken extends IToken {\n type: TokenType.PERCENTAGE_TOKEN | TokenType.NUMBER_TOKEN;\n flags: number;\n number: number;\n}\n\nexport interface DimensionToken extends IToken {\n type: TokenType.DIMENSION_TOKEN;\n flags: number;\n unit: string;\n number: number;\n}\n\nexport interface UnicodeRangeToken extends IToken {\n type: TokenType.UNICODE_RANGE_TOKEN;\n start: number;\n end: number;\n}\n\nexport type CSSToken = Token | StringValueToken | NumberValueToken | DimensionToken | UnicodeRangeToken | HashToken;\n\nexport const FLAG_UNRESTRICTED = 1 << 0;\nexport const FLAG_ID = 1 << 1;\nexport const FLAG_INTEGER = 1 << 2;\nexport const FLAG_NUMBER = 1 << 3;\n\nconst LINE_FEED = 0x000a;\nconst SOLIDUS = 0x002f;\nconst REVERSE_SOLIDUS = 0x005c;\nconst CHARACTER_TABULATION = 0x0009;\nconst SPACE = 0x0020;\nconst QUOTATION_MARK = 0x0022;\nconst EQUALS_SIGN = 0x003d;\nconst NUMBER_SIGN = 0x0023;\nconst DOLLAR_SIGN = 0x0024;\nconst PERCENTAGE_SIGN = 0x0025;\nconst APOSTROPHE = 0x0027;\nconst LEFT_PARENTHESIS = 0x0028;\nconst RIGHT_PARENTHESIS = 0x0029;\nconst LOW_LINE = 0x005f;\nconst HYPHEN_MINUS = 0x002d;\nconst EXCLAMATION_MARK = 0x0021;\nconst LESS_THAN_SIGN = 0x003c;\nconst GREATER_THAN_SIGN = 0x003e;\nconst COMMERCIAL_AT = 0x0040;\nconst LEFT_SQUARE_BRACKET = 0x005b;\nconst RIGHT_SQUARE_BRACKET = 0x005d;\nconst CIRCUMFLEX_ACCENT = 0x003d;\nconst LEFT_CURLY_BRACKET = 0x007b;\nconst QUESTION_MARK = 0x003f;\nconst RIGHT_CURLY_BRACKET = 0x007d;\nconst VERTICAL_LINE = 0x007c;\nconst TILDE = 0x007e;\nconst CONTROL = 0x0080;\nconst REPLACEMENT_CHARACTER = 0xfffd;\nconst ASTERISK = 0x002a;\nconst PLUS_SIGN = 0x002b;\nconst COMMA = 0x002c;\nconst COLON = 0x003a;\nconst SEMICOLON = 0x003b;\nconst FULL_STOP = 0x002e;\nconst NULL = 0x0000;\nconst BACKSPACE = 0x0008;\nconst LINE_TABULATION = 0x000b;\nconst SHIFT_OUT = 0x000e;\nconst INFORMATION_SEPARATOR_ONE = 0x001f;\nconst DELETE = 0x007f;\nconst EOF = -1;\nconst ZERO = 0x0030;\nconst a = 0x0061;\nconst e = 0x0065;\nconst f = 0x0066;\nconst u = 0x0075;\nconst z = 0x007a;\nconst A = 0x0041;\nconst E = 0x0045;\nconst F = 0x0046;\nconst U = 0x0055;\nconst Z = 0x005a;\n\nconst isDigit = (codePoint: number) => codePoint >= ZERO && codePoint <= 0x0039;\nconst isSurrogateCodePoint = (codePoint: number) => codePoint >= 0xd800 && codePoint <= 0xdfff;\nconst isHex = (codePoint: number) =>\n isDigit(codePoint) || (codePoint >= A && codePoint <= F) || (codePoint >= a && codePoint <= f);\nconst isLowerCaseLetter = (codePoint: number) => codePoint >= a && codePoint <= z;\nconst isUpperCaseLetter = (codePoint: number) => codePoint >= A && codePoint <= Z;\nconst isLetter = (codePoint: number) => isLowerCaseLetter(codePoint) || isUpperCaseLetter(codePoint);\nconst isNonASCIICodePoint = (codePoint: number) => codePoint >= CONTROL;\nconst isWhiteSpace = (codePoint: number): boolean =>\n codePoint === LINE_FEED || codePoint === CHARACTER_TABULATION || codePoint === SPACE;\nconst isNameStartCodePoint = (codePoint: number): boolean =>\n isLetter(codePoint) || isNonASCIICodePoint(codePoint) || codePoint === LOW_LINE;\nconst isNameCodePoint = (codePoint: number): boolean =>\n isNameStartCodePoint(codePoint) || isDigit(codePoint) || codePoint === HYPHEN_MINUS;\nconst isNonPrintableCodePoint = (codePoint: number): boolean => {\n return (\n (codePoint >= NULL && codePoint <= BACKSPACE) ||\n codePoint === LINE_TABULATION ||\n (codePoint >= SHIFT_OUT && codePoint <= INFORMATION_SEPARATOR_ONE) ||\n codePoint === DELETE\n );\n};\nconst isValidEscape = (c1: number, c2: number): boolean => {\n if (c1 !== REVERSE_SOLIDUS) {\n return false;\n }\n\n return c2 !== LINE_FEED;\n};\nconst isIdentifierStart = (c1: number, c2: number, c3: number): boolean => {\n if (c1 === HYPHEN_MINUS) {\n return isNameStartCodePoint(c2) || isValidEscape(c2, c3);\n } else if (isNameStartCodePoint(c1)) {\n return true;\n } else if (c1 === REVERSE_SOLIDUS && isValidEscape(c1, c2)) {\n return true;\n }\n return false;\n};\n\nconst isNumberStart = (c1: number, c2: number, c3: number): boolean => {\n if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {\n if (isDigit(c2)) {\n return true;\n }\n\n return c2 === FULL_STOP && isDigit(c3);\n }\n\n if (c1 === FULL_STOP) {\n return isDigit(c2);\n }\n\n return isDigit(c1);\n};\n\nconst stringToNumber = (codePoints: number[]): number => {\n let c = 0;\n let sign = 1;\n if (codePoints[c] === PLUS_SIGN || codePoints[c] === HYPHEN_MINUS) {\n if (codePoints[c] === HYPHEN_MINUS) {\n sign = -1;\n }\n c++;\n }\n\n const integers = [];\n\n while (isDigit(codePoints[c])) {\n integers.push(codePoints[c++]);\n }\n\n const int = integers.length ? parseInt(fromCodePoint(...integers), 10) : 0;\n\n if (codePoints[c] === FULL_STOP) {\n c++;\n }\n\n const fraction = [];\n while (isDigit(codePoints[c])) {\n fraction.push(codePoints[c++]);\n }\n\n const fracd = fraction.length;\n const frac = fracd ? parseInt(fromCodePoint(...fraction), 10) : 0;\n\n if (codePoints[c] === E || codePoints[c] === e) {\n c++;\n }\n\n let expsign = 1;\n\n if (codePoints[c] === PLUS_SIGN || codePoints[c] === HYPHEN_MINUS) {\n if (codePoints[c] === HYPHEN_MINUS) {\n expsign = -1;\n }\n c++;\n }\n\n const exponent = [];\n\n while (isDigit(codePoints[c])) {\n exponent.push(codePoints[c++]);\n }\n\n const exp = exponent.length ? parseInt(fromCodePoint(...exponent), 10) : 0;\n\n return sign * (int + frac * Math.pow(10, -fracd)) * Math.pow(10, expsign * exp);\n};\n\nconst LEFT_PARENTHESIS_TOKEN: Token = {\n type: TokenType.LEFT_PARENTHESIS_TOKEN\n};\nconst RIGHT_PARENTHESIS_TOKEN: Token = {\n type: TokenType.RIGHT_PARENTHESIS_TOKEN\n};\nconst COMMA_TOKEN: Token = {type: TokenType.COMMA_TOKEN};\nconst SUFFIX_MATCH_TOKEN: Token = {type: TokenType.SUFFIX_MATCH_TOKEN};\nconst PREFIX_MATCH_TOKEN: Token = {type: TokenType.PREFIX_MATCH_TOKEN};\nconst COLUMN_TOKEN: Token = {type: TokenType.COLUMN_TOKEN};\nconst DASH_MATCH_TOKEN: Token = {type: TokenType.DASH_MATCH_TOKEN};\nconst INCLUDE_MATCH_TOKEN: Token = {type: TokenType.INCLUDE_MATCH_TOKEN};\nconst LEFT_CURLY_BRACKET_TOKEN: Token = {\n type: TokenType.LEFT_CURLY_BRACKET_TOKEN\n};\nconst RIGHT_CURLY_BRACKET_TOKEN: Token = {\n type: TokenType.RIGHT_CURLY_BRACKET_TOKEN\n};\nconst SUBSTRING_MATCH_TOKEN: Token = {type: TokenType.SUBSTRING_MATCH_TOKEN};\nconst BAD_URL_TOKEN: Token = {type: TokenType.BAD_URL_TOKEN};\nconst BAD_STRING_TOKEN: Token = {type: TokenType.BAD_STRING_TOKEN};\nconst CDO_TOKEN: Token = {type: TokenType.CDO_TOKEN};\nconst CDC_TOKEN: Token = {type: TokenType.CDC_TOKEN};\nconst COLON_TOKEN: Token = {type: TokenType.COLON_TOKEN};\nconst SEMICOLON_TOKEN: Token = {type: TokenType.SEMICOLON_TOKEN};\nconst LEFT_SQUARE_BRACKET_TOKEN: Token = {\n type: TokenType.LEFT_SQUARE_BRACKET_TOKEN\n};\nconst RIGHT_SQUARE_BRACKET_TOKEN: Token = {\n type: TokenType.RIGHT_SQUARE_BRACKET_TOKEN\n};\nconst WHITESPACE_TOKEN: Token = {type: TokenType.WHITESPACE_TOKEN};\nexport const EOF_TOKEN: Token = {type: TokenType.EOF_TOKEN};\n\nexport class Tokenizer {\n private _value: number[];\n\n constructor() {\n this._value = [];\n }\n\n write(chunk: string): void {\n this._value = this._value.concat(toCodePoints(chunk));\n }\n\n read(): CSSToken[] {\n const tokens = [];\n let token = this.consumeToken();\n while (token !== EOF_TOKEN) {\n tokens.push(token);\n token = this.consumeToken();\n }\n return tokens;\n }\n\n private consumeToken(): CSSToken {\n const codePoint = this.consumeCodePoint();\n\n switch (codePoint) {\n case QUOTATION_MARK:\n return this.consumeStringToken(QUOTATION_MARK);\n case NUMBER_SIGN:\n const c1 = this.peekCodePoint(0);\n const c2 = this.peekCodePoint(1);\n const c3 = this.peekCodePoint(2);\n if (isNameCodePoint(c1) || isValidEscape(c2, c3)) {\n const flags = isIdentifierStart(c1, c2, c3) ? FLAG_ID : FLAG_UNRESTRICTED;\n const value = this.consumeName();\n\n return {type: TokenType.HASH_TOKEN, value, flags};\n }\n break;\n case DOLLAR_SIGN:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return SUFFIX_MATCH_TOKEN;\n }\n break;\n case APOSTROPHE:\n return this.consumeStringToken(APOSTROPHE);\n case LEFT_PARENTHESIS:\n return LEFT_PARENTHESIS_TOKEN;\n case RIGHT_PARENTHESIS:\n return RIGHT_PARENTHESIS_TOKEN;\n case ASTERISK:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return SUBSTRING_MATCH_TOKEN;\n }\n break;\n case PLUS_SIGN:\n if (isNumberStart(codePoint, this.peekCodePoint(0), this.peekCodePoint(1))) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeNumericToken();\n }\n break;\n case COMMA:\n return COMMA_TOKEN;\n case HYPHEN_MINUS:\n const e1 = codePoint;\n const e2 = this.peekCodePoint(0);\n const e3 = this.peekCodePoint(1);\n\n if (isNumberStart(e1, e2, e3)) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeNumericToken();\n }\n\n if (isIdentifierStart(e1, e2, e3)) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeIdentLikeToken();\n }\n\n if (e2 === HYPHEN_MINUS && e3 === GREATER_THAN_SIGN) {\n this.consumeCodePoint();\n this.consumeCodePoint();\n return CDC_TOKEN;\n }\n break;\n\n case FULL_STOP:\n if (isNumberStart(codePoint, this.peekCodePoint(0), this.peekCodePoint(1))) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeNumericToken();\n }\n break;\n case SOLIDUS:\n if (this.peekCodePoint(0) === ASTERISK) {\n this.consumeCodePoint();\n while (true) {\n let c = this.consumeCodePoint();\n if (c === ASTERISK) {\n c = this.consumeCodePoint();\n if (c === SOLIDUS) {\n return this.consumeToken();\n }\n }\n if (c === EOF) {\n return this.consumeToken();\n }\n }\n }\n break;\n case COLON:\n return COLON_TOKEN;\n case SEMICOLON:\n return SEMICOLON_TOKEN;\n case LESS_THAN_SIGN:\n if (\n this.peekCodePoint(0) === EXCLAMATION_MARK &&\n this.peekCodePoint(1) === HYPHEN_MINUS &&\n this.peekCodePoint(2) === HYPHEN_MINUS\n ) {\n this.consumeCodePoint();\n this.consumeCodePoint();\n return CDO_TOKEN;\n }\n break;\n case COMMERCIAL_AT:\n const a1 = this.peekCodePoint(0);\n const a2 = this.peekCodePoint(1);\n const a3 = this.peekCodePoint(2);\n if (isIdentifierStart(a1, a2, a3)) {\n const value = this.consumeName();\n return {type: TokenType.AT_KEYWORD_TOKEN, value};\n }\n break;\n case LEFT_SQUARE_BRACKET:\n return LEFT_SQUARE_BRACKET_TOKEN;\n case REVERSE_SOLIDUS:\n if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeIdentLikeToken();\n }\n break;\n case RIGHT_SQUARE_BRACKET:\n return RIGHT_SQUARE_BRACKET_TOKEN;\n case CIRCUMFLEX_ACCENT:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return PREFIX_MATCH_TOKEN;\n }\n break;\n case LEFT_CURLY_BRACKET:\n return LEFT_CURLY_BRACKET_TOKEN;\n case RIGHT_CURLY_BRACKET:\n return RIGHT_CURLY_BRACKET_TOKEN;\n case u:\n case U:\n const u1 = this.peekCodePoint(0);\n const u2 = this.peekCodePoint(1);\n if (u1 === PLUS_SIGN && (isHex(u2) || u2 === QUESTION_MARK)) {\n this.consumeCodePoint();\n this.consumeUnicodeRangeToken();\n }\n this.reconsumeCodePoint(codePoint);\n return this.consumeIdentLikeToken();\n case VERTICAL_LINE:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return DASH_MATCH_TOKEN;\n }\n if (this.peekCodePoint(0) === VERTICAL_LINE) {\n this.consumeCodePoint();\n return COLUMN_TOKEN;\n }\n break;\n case TILDE:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return INCLUDE_MATCH_TOKEN;\n }\n break;\n case EOF:\n return EOF_TOKEN;\n }\n\n if (isWhiteSpace(codePoint)) {\n this.consumeWhiteSpace();\n return WHITESPACE_TOKEN;\n }\n\n if (isDigit(codePoint)) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeNumericToken();\n }\n\n if (isNameStartCodePoint(codePoint)) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeIdentLikeToken();\n }\n\n return {type: TokenType.DELIM_TOKEN, value: fromCodePoint(codePoint)};\n }\n\n private consumeCodePoint(): number {\n const value = this._value.shift();\n\n return typeof value === 'undefined' ? -1 : value;\n }\n\n private reconsumeCodePoint(codePoint: number) {\n this._value.unshift(codePoint);\n }\n\n private peekCodePoint(delta: number): number {\n if (delta >= this._value.length) {\n return -1;\n }\n\n return this._value[delta];\n }\n\n private consumeUnicodeRangeToken(): UnicodeRangeToken {\n const digits = [];\n let codePoint = this.consumeCodePoint();\n while (isHex(codePoint) && digits.length < 6) {\n digits.push(codePoint);\n codePoint = this.consumeCodePoint();\n }\n let questionMarks = false;\n while (codePoint === QUESTION_MARK && digits.length < 6) {\n digits.push(codePoint);\n codePoint = this.consumeCodePoint();\n questionMarks = true;\n }\n\n if (questionMarks) {\n const start = parseInt(\n fromCodePoint(...digits.map((digit) => (digit === QUESTION_MARK ? ZERO : digit))),\n 16\n );\n const end = parseInt(fromCodePoint(...digits.map((digit) => (digit === QUESTION_MARK ? F : digit))), 16);\n return {type: TokenType.UNICODE_RANGE_TOKEN, start, end};\n }\n\n const start = parseInt(fromCodePoint(...digits), 16);\n if (this.peekCodePoint(0) === HYPHEN_MINUS && isHex(this.peekCodePoint(1))) {\n this.consumeCodePoint();\n codePoint = this.consumeCodePoint();\n const endDigits = [];\n while (isHex(codePoint) && endDigits.length < 6) {\n endDigits.push(codePoint);\n codePoint = this.consumeCodePoint();\n }\n const end = parseInt(fromCodePoint(...endDigits), 16);\n\n return {type: TokenType.UNICODE_RANGE_TOKEN, start, end};\n } else {\n return {type: TokenType.UNICODE_RANGE_TOKEN, start, end: start};\n }\n }\n\n private consumeIdentLikeToken(): StringValueToken | Token {\n const value = this.consumeName();\n if (value.toLowerCase() === 'url' && this.peekCodePoint(0) === LEFT_PARENTHESIS) {\n this.consumeCodePoint();\n return this.consumeUrlToken();\n } else if (this.peekCodePoint(0) === LEFT_PARENTHESIS) {\n this.consumeCodePoint();\n return {type: TokenType.FUNCTION_TOKEN, value};\n }\n\n return {type: TokenType.IDENT_TOKEN, value};\n }\n\n private consumeUrlToken(): StringValueToken | Token {\n const value = [];\n this.consumeWhiteSpace();\n\n if (this.peekCodePoint(0) === EOF) {\n return {type: TokenType.URL_TOKEN, value: ''};\n }\n\n const next = this.peekCodePoint(0);\n if (next === APOSTROPHE || next === QUOTATION_MARK) {\n const stringToken = this.consumeStringToken(this.consumeCodePoint());\n if (stringToken.type === TokenType.STRING_TOKEN) {\n this.consumeWhiteSpace();\n\n if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) {\n this.consumeCodePoint();\n return {type: TokenType.URL_TOKEN, value: stringToken.value};\n }\n }\n\n this.consumeBadUrlRemnants();\n return BAD_URL_TOKEN;\n }\n\n while (true) {\n const codePoint = this.consumeCodePoint();\n if (codePoint === EOF || codePoint === RIGHT_PARENTHESIS) {\n return {type: TokenType.URL_TOKEN, value: fromCodePoint(...value)};\n } else if (isWhiteSpace(codePoint)) {\n this.consumeWhiteSpace();\n if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) {\n this.consumeCodePoint();\n return {type: TokenType.URL_TOKEN, value: fromCodePoint(...value)};\n }\n this.consumeBadUrlRemnants();\n return BAD_URL_TOKEN;\n } else if (\n codePoint === QUOTATION_MARK ||\n codePoint === APOSTROPHE ||\n codePoint === LEFT_PARENTHESIS ||\n isNonPrintableCodePoint(codePoint)\n ) {\n this.consumeBadUrlRemnants();\n return BAD_URL_TOKEN;\n } else if (codePoint === REVERSE_SOLIDUS) {\n if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n value.push(this.consumeEscapedCodePoint());\n } else {\n this.consumeBadUrlRemnants();\n return BAD_URL_TOKEN;\n }\n } else {\n value.push(codePoint);\n }\n }\n }\n\n private consumeWhiteSpace(): void {\n while (isWhiteSpace(this.peekCodePoint(0))) {\n this.consumeCodePoint();\n }\n }\n\n private consumeBadUrlRemnants(): void {\n while (true) {\n const codePoint = this.consumeCodePoint();\n if (codePoint === RIGHT_PARENTHESIS || codePoint === EOF) {\n return;\n }\n\n if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n this.consumeEscapedCodePoint();\n }\n }\n }\n\n private consumeStringSlice(count: number): string {\n const SLICE_STACK_SIZE = 50000;\n let value = '';\n while (count > 0) {\n const amount = Math.min(SLICE_STACK_SIZE, count);\n value += fromCodePoint(...this._value.splice(0, amount));\n count -= amount;\n }\n this._value.shift();\n\n return value;\n }\n\n private consumeStringToken(endingCodePoint: number): StringValueToken | Token {\n let value = '';\n let i = 0;\n\n do {\n const codePoint = this._value[i];\n if (codePoint === EOF || codePoint === undefined || codePoint === endingCodePoint) {\n value += this.consumeStringSlice(i);\n return {type: TokenType.STRING_TOKEN, value};\n }\n\n if (codePoint === LINE_FEED) {\n this._value.splice(0, i);\n return BAD_STRING_TOKEN;\n }\n\n if (codePoint === REVERSE_SOLIDUS) {\n const next = this._value[i + 1];\n if (next !== EOF && next !== undefined) {\n if (next === LINE_FEED) {\n value += this.consumeStringSlice(i);\n i = -1;\n this._value.shift();\n } else if (isValidEscape(codePoint, next)) {\n value += this.consumeStringSlice(i);\n value += fromCodePoint(this.consumeEscapedCodePoint());\n i = -1;\n }\n }\n }\n\n i++;\n } while (true);\n }\n\n private consumeNumber() {\n const repr = [];\n let type = FLAG_INTEGER;\n let c1 = this.peekCodePoint(0);\n if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {\n repr.push(this.consumeCodePoint());\n }\n\n while (isDigit(this.peekCodePoint(0))) {\n repr.push(this.consumeCodePoint());\n }\n c1 = this.peekCodePoint(0);\n let c2 = this.peekCodePoint(1);\n if (c1 === FULL_STOP && isDigit(c2)) {\n repr.push(this.consumeCodePoint(), this.consumeCodePoint());\n type = FLAG_NUMBER;\n while (isDigit(this.peekCodePoint(0))) {\n repr.push(this.consumeCodePoint());\n }\n }\n\n c1 = this.peekCodePoint(0);\n c2 = this.peekCodePoint(1);\n const c3 = this.peekCodePoint(2);\n if ((c1 === E || c1 === e) && (((c2 === PLUS_SIGN || c2 === HYPHEN_MINUS) && isDigit(c3)) || isDigit(c2))) {\n repr.push(this.consumeCodePoint(), this.consumeCodePoint());\n type = FLAG_NUMBER;\n while (isDigit(this.peekCodePoint(0))) {\n repr.push(this.consumeCodePoint());\n }\n }\n\n return [stringToNumber(repr), type];\n }\n\n private consumeNumericToken(): NumberValueToken | DimensionToken {\n const [number, flags] = this.consumeNumber();\n const c1 = this.peekCodePoint(0);\n const c2 = this.peekCodePoint(1);\n const c3 = this.peekCodePoint(2);\n\n if (isIdentifierStart(c1, c2, c3)) {\n const unit = this.consumeName();\n return {type: TokenType.DIMENSION_TOKEN, number, flags, unit};\n }\n\n if (c1 === PERCENTAGE_SIGN) {\n this.consumeCodePoint();\n return {type: TokenType.PERCENTAGE_TOKEN, number, flags};\n }\n\n return {type: TokenType.NUMBER_TOKEN, number, flags};\n }\n\n private consumeEscapedCodePoint(): number {\n const codePoint = this.consumeCodePoint();\n\n if (isHex(codePoint)) {\n let hex = fromCodePoint(codePoint);\n while (isHex(this.peekCodePoint(0)) && hex.length < 6) {\n hex += fromCodePoint(this.consumeCodePoint());\n }\n\n if (isWhiteSpace(this.peekCodePoint(0))) {\n this.consumeCodePoint();\n }\n\n const hexCodePoint = parseInt(hex, 16);\n\n if (hexCodePoint === 0 || isSurrogateCodePoint(hexCodePoint) || hexCodePoint > 0x10ffff) {\n return REPLACEMENT_CHARACTER;\n }\n\n return hexCodePoint;\n }\n\n if (codePoint === EOF) {\n return REPLACEMENT_CHARACTER;\n }\n\n return codePoint;\n }\n\n private consumeName(): string {\n let result = '';\n while (true) {\n const codePoint = this.consumeCodePoint();\n if (isNameCodePoint(codePoint)) {\n result += fromCodePoint(codePoint);\n } else if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n result += fromCodePoint(this.consumeEscapedCodePoint());\n } else {\n this.reconsumeCodePoint(codePoint);\n return result;\n }\n }\n }\n}\n","import {\n CSSToken,\n DimensionToken,\n EOF_TOKEN,\n NumberValueToken,\n StringValueToken,\n Tokenizer,\n TokenType\n} from './tokenizer';\n\nexport type CSSBlockType =\n | TokenType.LEFT_PARENTHESIS_TOKEN\n | TokenType.LEFT_SQUARE_BRACKET_TOKEN\n | TokenType.LEFT_CURLY_BRACKET_TOKEN;\n\nexport interface CSSBlock {\n type: CSSBlockType;\n values: CSSValue[];\n}\n\nexport interface CSSFunction {\n type: TokenType.FUNCTION;\n name: string;\n values: CSSValue[];\n}\n\nexport type CSSValue = CSSFunction | CSSToken | CSSBlock;\n\nexport class Parser {\n private _tokens: CSSToken[];\n\n constructor(tokens: CSSToken[]) {\n this._tokens = tokens;\n }\n\n static create(value: string): Parser {\n const tokenizer = new Tokenizer();\n tokenizer.write(value);\n return new Parser(tokenizer.read());\n }\n\n static parseValue(value: string): CSSValue {\n return Parser.create(value).parseComponentValue();\n }\n\n static parseValues(value: string): CSSValue[] {\n return Parser.create(value).parseComponentValues();\n }\n\n parseComponentValue(): CSSValue {\n let token = this.consumeToken();\n while (token.type === TokenType.WHITESPACE_TOKEN) {\n token = this.consumeToken();\n }\n\n if (token.type === TokenType.EOF_TOKEN) {\n throw new SyntaxError(`Error parsing CSS component value, unexpected EOF`);\n }\n\n this.reconsumeToken(token);\n const value = this.consumeComponentValue();\n\n do {\n token = this.consumeToken();\n } while (token.type === TokenType.WHITESPACE_TOKEN);\n\n if (token.type === TokenType.EOF_TOKEN) {\n return value;\n }\n\n throw new SyntaxError(`Error parsing CSS component value, multiple values found when expecting only one`);\n }\n\n parseComponentValues(): CSSValue[] {\n const values = [];\n while (true) {\n const value = this.consumeComponentValue();\n if (value.type === TokenType.EOF_TOKEN) {\n return values;\n }\n values.push(value);\n values.push();\n }\n }\n\n private consumeComponentValue(): CSSValue {\n const token = this.consumeToken();\n\n switch (token.type) {\n case TokenType.LEFT_CURLY_BRACKET_TOKEN:\n case TokenType.LEFT_SQUARE_BRACKET_TOKEN:\n case TokenType.LEFT_PARENTHESIS_TOKEN:\n return this.consumeSimpleBlock(token.type);\n case TokenType.FUNCTION_TOKEN:\n return this.consumeFunction(token);\n }\n\n return token;\n }\n\n private consumeSimpleBlock(type: CSSBlockType): CSSBlock {\n const block: CSSBlock = {type, values: []};\n\n let token = this.consumeToken();\n while (true) {\n if (token.type === TokenType.EOF_TOKEN || isEndingTokenFor(token, type)) {\n return block;\n }\n\n this.reconsumeToken(token);\n block.values.push(this.consumeComponentValue());\n token = this.consumeToken();\n }\n }\n\n private consumeFunction(functionToken: StringValueToken): CSSFunction {\n const cssFunction: CSSFunction = {\n name: functionToken.value,\n values: [],\n type: TokenType.FUNCTION\n };\n\n while (true) {\n const token = this.consumeToken();\n if (token.type === TokenType.EOF_TOKEN || token.type === TokenType.RIGHT_PARENTHESIS_TOKEN) {\n return cssFunction;\n }\n\n this.reconsumeToken(token);\n cssFunction.values.push(this.consumeComponentValue());\n }\n }\n\n private consumeToken(): CSSToken {\n const token = this._tokens.shift();\n return typeof token === 'undefined' ? EOF_TOKEN : token;\n }\n\n private reconsumeToken(token: CSSToken): void {\n this._tokens.unshift(token);\n }\n}\n\nexport const isDimensionToken = (token: CSSValue): token is DimensionToken => token.type === TokenType.DIMENSION_TOKEN;\nexport const isNumberToken = (token: CSSValue): token is NumberValueToken => token.type === TokenType.NUMBER_TOKEN;\nexport const isIdentToken = (token: CSSValue): token is StringValueToken => token.type === TokenType.IDENT_TOKEN;\nexport const isStringToken = (token: CSSValue): token is StringValueToken => token.type === TokenType.STRING_TOKEN;\nexport const isIdentWithValue = (token: CSSValue, value: string): boolean =>\n isIdentToken(token) && token.value === value;\n\nexport const nonWhiteSpace = (token: CSSValue): boolean => token.type !== TokenType.WHITESPACE_TOKEN;\nexport const nonFunctionArgSeparator = (token: CSSValue): boolean =>\n token.type !== TokenType.WHITESPACE_TOKEN && token.type !== TokenType.COMMA_TOKEN;\n\nexport const parseFunctionArgs = (tokens: CSSValue[]): CSSValue[][] => {\n const args: CSSValue[][] = [];\n let arg: CSSValue[] = [];\n tokens.forEach((token) => {\n if (token.type === TokenType.COMMA_TOKEN) {\n if (arg.length === 0) {\n throw new Error(`Error parsing function args, zero tokens for arg`);\n }\n args.push(arg);\n arg = [];\n return;\n }\n\n if (token.type !== TokenType.WHITESPACE_TOKEN) {\n arg.push(token);\n }\n });\n if (arg.length) {\n args.push(arg);\n }\n\n return args;\n};\n\nconst isEndingTokenFor = (token: CSSToken, type: CSSBlockType): boolean => {\n if (type === TokenType.LEFT_CURLY_BRACKET_TOKEN && token.type === TokenType.RIGHT_CURLY_BRACKET_TOKEN) {\n return true;\n }\n if (type === TokenType.LEFT_SQUARE_BRACKET_TOKEN && token.type === TokenType.RIGHT_SQUARE_BRACKET_TOKEN) {\n return true;\n }\n\n return type === TokenType.LEFT_PARENTHESIS_TOKEN && token.type === TokenType.RIGHT_PARENTHESIS_TOKEN;\n};\n","import {CSSValue} from '../syntax/parser';\nimport {DimensionToken, NumberValueToken, TokenType} from '../syntax/tokenizer';\n\nexport type Length = DimensionToken | NumberValueToken;\n\nexport const isLength = (token: CSSValue): token is Length =>\n token.type === TokenType.NUMBER_TOKEN || token.type === TokenType.DIMENSION_TOKEN;\n","import {DimensionToken, FLAG_INTEGER, NumberValueToken, TokenType} from '../syntax/tokenizer';\nimport {CSSValue, isDimensionToken} from '../syntax/parser';\nimport {isLength} from './length';\nexport type LengthPercentage = DimensionToken | NumberValueToken;\nexport type LengthPercentageTuple = [LengthPercentage] | [LengthPercentage, LengthPercentage];\n\nexport const isLengthPercentage = (token: CSSValue): token is LengthPercentage =>\n token.type === TokenType.PERCENTAGE_TOKEN || isLength(token);\nexport const parseLengthPercentageTuple = (tokens: LengthPercentage[]): LengthPercentageTuple =>\n tokens.length > 1 ? [tokens[0], tokens[1]] : [tokens[0]];\nexport const ZERO_LENGTH: NumberValueToken = {\n type: TokenType.NUMBER_TOKEN,\n number: 0,\n flags: FLAG_INTEGER\n};\n\nexport const FIFTY_PERCENT: NumberValueToken = {\n type: TokenType.PERCENTAGE_TOKEN,\n number: 50,\n flags: FLAG_INTEGER\n};\n\nexport const HUNDRED_PERCENT: NumberValueToken = {\n type: TokenType.PERCENTAGE_TOKEN,\n number: 100,\n flags: FLAG_INTEGER\n};\n\nexport const getAbsoluteValueForTuple = (\n tuple: LengthPercentageTuple,\n width: number,\n height: number\n): [number, number] => {\n const [x, y] = tuple;\n return [getAbsoluteValue(x, width), getAbsoluteValue(typeof y !== 'undefined' ? y : x, height)];\n};\nexport const getAbsoluteValue = (token: LengthPercentage, parent: number): number => {\n if (token.type === TokenType.PERCENTAGE_TOKEN) {\n return (token.number / 100) * parent;\n }\n\n if (isDimensionToken(token)) {\n switch (token.unit) {\n case 'rem':\n case 'em':\n return 16 * token.number; // TODO use correct font-size\n case 'px':\n default:\n return token.number;\n }\n }\n\n return token.number;\n};\n","import {CSSValue, isIdentToken} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {ITypeDescriptor} from '../ITypeDescriptor';\nimport {HUNDRED_PERCENT, ZERO_LENGTH} from './length-percentage';\nimport {GradientCorner} from './image';\nimport {Context} from '../../core/context';\n\nconst DEG = 'deg';\nconst GRAD = 'grad';\nconst RAD = 'rad';\nconst TURN = 'turn';\n\nexport const angle: ITypeDescriptor = {\n name: 'angle',\n parse: (_context: Context, value: CSSValue): number => {\n if (value.type === TokenType.DIMENSION_TOKEN) {\n switch (value.unit) {\n case DEG:\n return (Math.PI * value.number) / 180;\n case GRAD:\n return (Math.PI / 200) * value.number;\n case RAD:\n return value.number;\n case TURN:\n return Math.PI * 2 * value.number;\n }\n }\n\n throw new Error(`Unsupported angle type`);\n }\n};\n\nexport const isAngle = (value: CSSValue): boolean => {\n if (value.type === TokenType.DIMENSION_TOKEN) {\n if (value.unit === DEG || value.unit === GRAD || value.unit === RAD || value.unit === TURN) {\n return true;\n }\n }\n return false;\n};\n\nexport const parseNamedSide = (tokens: CSSValue[]): number | GradientCorner => {\n const sideOrCorner = tokens\n .filter(isIdentToken)\n .map((ident) => ident.value)\n .join(' ');\n\n switch (sideOrCorner) {\n case 'to bottom right':\n case 'to right bottom':\n case 'left top':\n case 'top left':\n return [ZERO_LENGTH, ZERO_LENGTH];\n case 'to top':\n case 'bottom':\n return deg(0);\n case 'to bottom left':\n case 'to left bottom':\n case 'right top':\n case 'top right':\n return [ZERO_LENGTH, HUNDRED_PERCENT];\n case 'to right':\n case 'left':\n return deg(90);\n case 'to top left':\n case 'to left top':\n case 'right bottom':\n case 'bottom right':\n return [HUNDRED_PERCENT, HUNDRED_PERCENT];\n case 'to bottom':\n case 'top':\n return deg(180);\n case 'to top right':\n case 'to right top':\n case 'left bottom':\n case 'bottom left':\n return [HUNDRED_PERCENT, ZERO_LENGTH];\n case 'to left':\n case 'right':\n return deg(270);\n }\n\n return 0;\n};\n\nexport const deg = (deg: number): number => (Math.PI * deg) / 180;\n","import {CSSValue, nonFunctionArgSeparator, Parser} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {ITypeDescriptor} from '../ITypeDescriptor';\nimport {angle, deg} from './angle';\nimport {getAbsoluteValue, isLengthPercentage} from './length-percentage';\nimport {Context} from '../../core/context';\nexport type Color = number;\n\nexport const color: ITypeDescriptor = {\n name: 'color',\n parse: (context: Context, value: CSSValue): Color => {\n if (value.type === TokenType.FUNCTION) {\n const colorFunction = SUPPORTED_COLOR_FUNCTIONS[value.name];\n if (typeof colorFunction === 'undefined') {\n throw new Error(`Attempting to parse an unsupported color function \"${value.name}\"`);\n }\n return colorFunction(context, value.values);\n }\n\n if (value.type === TokenType.HASH_TOKEN) {\n if (value.value.length === 3) {\n const r = value.value.substring(0, 1);\n const g = value.value.substring(1, 2);\n const b = value.value.substring(2, 3);\n return pack(parseInt(r + r, 16), parseInt(g + g, 16), parseInt(b + b, 16), 1);\n }\n\n if (value.value.length === 4) {\n const r = value.value.substring(0, 1);\n const g = value.value.substring(1, 2);\n const b = value.value.substring(2, 3);\n const a = value.value.substring(3, 4);\n return pack(parseInt(r + r, 16), parseInt(g + g, 16), parseInt(b + b, 16), parseInt(a + a, 16) / 255);\n }\n\n if (value.value.length === 6) {\n const r = value.value.substring(0, 2);\n const g = value.value.substring(2, 4);\n const b = value.value.substring(4, 6);\n return pack(parseInt(r, 16), parseInt(g, 16), parseInt(b, 16), 1);\n }\n\n if (value.value.length === 8) {\n const r = value.value.substring(0, 2);\n const g = value.value.substring(2, 4);\n const b = value.value.substring(4, 6);\n const a = value.value.substring(6, 8);\n return pack(parseInt(r, 16), parseInt(g, 16), parseInt(b, 16), parseInt(a, 16) / 255);\n }\n }\n\n if (value.type === TokenType.IDENT_TOKEN) {\n const namedColor = COLORS[value.value.toUpperCase()];\n if (typeof namedColor !== 'undefined') {\n return namedColor;\n }\n }\n\n return COLORS.TRANSPARENT;\n }\n};\n\nexport const isTransparent = (color: Color): boolean => (0xff & color) === 0;\n\nexport const asString = (color: Color): string => {\n const alpha = 0xff & color;\n const blue = 0xff & (color >> 8);\n const green = 0xff & (color >> 16);\n const red = 0xff & (color >> 24);\n return alpha < 255 ? `rgba(${red},${green},${blue},${alpha / 255})` : `rgb(${red},${green},${blue})`;\n};\n\nexport const pack = (r: number, g: number, b: number, a: number): Color =>\n ((r << 24) | (g << 16) | (b << 8) | (Math.round(a * 255) << 0)) >>> 0;\n\nconst getTokenColorValue = (token: CSSValue, i: number): number => {\n if (token.type === TokenType.NUMBER_TOKEN) {\n return token.number;\n }\n\n if (token.type === TokenType.PERCENTAGE_TOKEN) {\n const max = i === 3 ? 1 : 255;\n return i === 3 ? (token.number / 100) * max : Math.round((token.number / 100) * max);\n }\n\n return 0;\n};\n\nconst rgb = (_context: Context, args: CSSValue[]): number => {\n const tokens = args.filter(nonFunctionArgSeparator);\n\n if (tokens.length === 3) {\n const [r, g, b] = tokens.map(getTokenColorValue);\n return pack(r, g, b, 1);\n }\n\n if (tokens.length === 4) {\n const [r, g, b, a] = tokens.map(getTokenColorValue);\n return pack(r, g, b, a);\n }\n\n return 0;\n};\n\nfunction hue2rgb(t1: number, t2: number, hue: number): number {\n if (hue < 0) {\n hue += 1;\n }\n if (hue >= 1) {\n hue -= 1;\n }\n\n if (hue < 1 / 6) {\n return (t2 - t1) * hue * 6 + t1;\n } else if (hue < 1 / 2) {\n return t2;\n } else if (hue < 2 / 3) {\n return (t2 - t1) * 6 * (2 / 3 - hue) + t1;\n } else {\n return t1;\n }\n}\n\nconst hsl = (context: Context, args: CSSValue[]): number => {\n const tokens = args.filter(nonFunctionArgSeparator);\n const [hue, saturation, lightness, alpha] = tokens;\n\n const h = (hue.type === TokenType.NUMBER_TOKEN ? deg(hue.number) : angle.parse(context, hue)) / (Math.PI * 2);\n const s = isLengthPercentage(saturation) ? saturation.number / 100 : 0;\n const l = isLengthPercentage(lightness) ? lightness.number / 100 : 0;\n const a = typeof alpha !== 'undefined' && isLengthPercentage(alpha) ? getAbsoluteValue(alpha, 1) : 1;\n\n if (s === 0) {\n return pack(l * 255, l * 255, l * 255, 1);\n }\n\n const t2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\n\n const t1 = l * 2 - t2;\n const r = hue2rgb(t1, t2, h + 1 / 3);\n const g = hue2rgb(t1, t2, h);\n const b = hue2rgb(t1, t2, h - 1 / 3);\n return pack(r * 255, g * 255, b * 255, a);\n};\n\nconst SUPPORTED_COLOR_FUNCTIONS: {\n [key: string]: (context: Context, args: CSSValue[]) => number;\n} = {\n hsl: hsl,\n hsla: hsl,\n rgb: rgb,\n rgba: rgb\n};\n\nexport const parseColor = (context: Context, value: string): Color =>\n color.parse(context, Parser.create(value).parseComponentValue());\n\nexport const COLORS: {[key: string]: Color} = {\n ALICEBLUE: 0xf0f8ffff,\n ANTIQUEWHITE: 0xfaebd7ff,\n AQUA: 0x00ffffff,\n AQUAMARINE: 0x7fffd4ff,\n AZURE: 0xf0ffffff,\n BEIGE: 0xf5f5dcff,\n BISQUE: 0xffe4c4ff,\n BLACK: 0x000000ff,\n BLANCHEDALMOND: 0xffebcdff,\n BLUE: 0x0000ffff,\n BLUEVIOLET: 0x8a2be2ff,\n BROWN: 0xa52a2aff,\n BURLYWOOD: 0xdeb887ff,\n CADETBLUE: 0x5f9ea0ff,\n CHARTREUSE: 0x7fff00ff,\n CHOCOLATE: 0xd2691eff,\n CORAL: 0xff7f50ff,\n CORNFLOWERBLUE: 0x6495edff,\n CORNSILK: 0xfff8dcff,\n CRIMSON: 0xdc143cff,\n CYAN: 0x00ffffff,\n DARKBLUE: 0x00008bff,\n DARKCYAN: 0x008b8bff,\n DARKGOLDENROD: 0xb886bbff,\n DARKGRAY: 0xa9a9a9ff,\n DARKGREEN: 0x006400ff,\n DARKGREY: 0xa9a9a9ff,\n DARKKHAKI: 0xbdb76bff,\n DARKMAGENTA: 0x8b008bff,\n DARKOLIVEGREEN: 0x556b2fff,\n DARKORANGE: 0xff8c00ff,\n DARKORCHID: 0x9932ccff,\n DARKRED: 0x8b0000ff,\n DARKSALMON: 0xe9967aff,\n DARKSEAGREEN: 0x8fbc8fff,\n DARKSLATEBLUE: 0x483d8bff,\n DARKSLATEGRAY: 0x2f4f4fff,\n DARKSLATEGREY: 0x2f4f4fff,\n DARKTURQUOISE: 0x00ced1ff,\n DARKVIOLET: 0x9400d3ff,\n DEEPPINK: 0xff1493ff,\n DEEPSKYBLUE: 0x00bfffff,\n DIMGRAY: 0x696969ff,\n DIMGREY: 0x696969ff,\n DODGERBLUE: 0x1e90ffff,\n FIREBRICK: 0xb22222ff,\n FLORALWHITE: 0xfffaf0ff,\n FORESTGREEN: 0x228b22ff,\n FUCHSIA: 0xff00ffff,\n GAINSBORO: 0xdcdcdcff,\n GHOSTWHITE: 0xf8f8ffff,\n GOLD: 0xffd700ff,\n GOLDENROD: 0xdaa520ff,\n GRAY: 0x808080ff,\n GREEN: 0x008000ff,\n GREENYELLOW: 0xadff2fff,\n GREY: 0x808080ff,\n HONEYDEW: 0xf0fff0ff,\n HOTPINK: 0xff69b4ff,\n INDIANRED: 0xcd5c5cff,\n INDIGO: 0x4b0082ff,\n IVORY: 0xfffff0ff,\n KHAKI: 0xf0e68cff,\n LAVENDER: 0xe6e6faff,\n LAVENDERBLUSH: 0xfff0f5ff,\n LAWNGREEN: 0x7cfc00ff,\n LEMONCHIFFON: 0xfffacdff,\n LIGHTBLUE: 0xadd8e6ff,\n LIGHTCORAL: 0xf08080ff,\n LIGHTCYAN: 0xe0ffffff,\n LIGHTGOLDENRODYELLOW: 0xfafad2ff,\n LIGHTGRAY: 0xd3d3d3ff,\n LIGHTGREEN: 0x90ee90ff,\n LIGHTGREY: 0xd3d3d3ff,\n LIGHTPINK: 0xffb6c1ff,\n LIGHTSALMON: 0xffa07aff,\n LIGHTSEAGREEN: 0x20b2aaff,\n LIGHTSKYBLUE: 0x87cefaff,\n LIGHTSLATEGRAY: 0x778899ff,\n LIGHTSLATEGREY: 0x778899ff,\n LIGHTSTEELBLUE: 0xb0c4deff,\n LIGHTYELLOW: 0xffffe0ff,\n LIME: 0x00ff00ff,\n LIMEGREEN: 0x32cd32ff,\n LINEN: 0xfaf0e6ff,\n MAGENTA: 0xff00ffff,\n MAROON: 0x800000ff,\n MEDIUMAQUAMARINE: 0x66cdaaff,\n MEDIUMBLUE: 0x0000cdff,\n MEDIUMORCHID: 0xba55d3ff,\n MEDIUMPURPLE: 0x9370dbff,\n MEDIUMSEAGREEN: 0x3cb371ff,\n MEDIUMSLATEBLUE: 0x7b68eeff,\n MEDIUMSPRINGGREEN: 0x00fa9aff,\n MEDIUMTURQUOISE: 0x48d1ccff,\n MEDIUMVIOLETRED: 0xc71585ff,\n MIDNIGHTBLUE: 0x191970ff,\n MINTCREAM: 0xf5fffaff,\n MISTYROSE: 0xffe4e1ff,\n MOCCASIN: 0xffe4b5ff,\n NAVAJOWHITE: 0xffdeadff,\n NAVY: 0x000080ff,\n OLDLACE: 0xfdf5e6ff,\n OLIVE: 0x808000ff,\n OLIVEDRAB: 0x6b8e23ff,\n ORANGE: 0xffa500ff,\n ORANGERED: 0xff4500ff,\n ORCHID: 0xda70d6ff,\n PALEGOLDENROD: 0xeee8aaff,\n PALEGREEN: 0x98fb98ff,\n PALETURQUOISE: 0xafeeeeff,\n PALEVIOLETRED: 0xdb7093ff,\n PAPAYAWHIP: 0xffefd5ff,\n PEACHPUFF: 0xffdab9ff,\n PERU: 0xcd853fff,\n PINK: 0xffc0cbff,\n PLUM: 0xdda0ddff,\n POWDERBLUE: 0xb0e0e6ff,\n PURPLE: 0x800080ff,\n REBECCAPURPLE: 0x663399ff,\n RED: 0xff0000ff,\n ROSYBROWN: 0xbc8f8fff,\n ROYALBLUE: 0x4169e1ff,\n SADDLEBROWN: 0x8b4513ff,\n SALMON: 0xfa8072ff,\n SANDYBROWN: 0xf4a460ff,\n SEAGREEN: 0x2e8b57ff,\n SEASHELL: 0xfff5eeff,\n SIENNA: 0xa0522dff,\n SILVER: 0xc0c0c0ff,\n SKYBLUE: 0x87ceebff,\n SLATEBLUE: 0x6a5acdff,\n SLATEGRAY: 0x708090ff,\n SLATEGREY: 0x708090ff,\n SNOW: 0xfffafaff,\n SPRINGGREEN: 0x00ff7fff,\n STEELBLUE: 0x4682b4ff,\n TAN: 0xd2b48cff,\n TEAL: 0x008080ff,\n THISTLE: 0xd8bfd8ff,\n TOMATO: 0xff6347ff,\n TRANSPARENT: 0x00000000,\n TURQUOISE: 0x40e0d0ff,\n VIOLET: 0xee82eeff,\n WHEAT: 0xf5deb3ff,\n WHITE: 0xffffffff,\n WHITESMOKE: 0xf5f5f5ff,\n YELLOW: 0xffff00ff,\n YELLOWGREEN: 0x9acd32ff\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const enum BACKGROUND_CLIP {\n BORDER_BOX = 0,\n PADDING_BOX = 1,\n CONTENT_BOX = 2\n}\n\nexport type BackgroundClip = BACKGROUND_CLIP[];\n\nexport const backgroundClip: IPropertyListDescriptor = {\n name: 'background-clip',\n initialValue: 'border-box',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): BackgroundClip => {\n return tokens.map((token) => {\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'padding-box':\n return BACKGROUND_CLIP.PADDING_BOX;\n case 'content-box':\n return BACKGROUND_CLIP.CONTENT_BOX;\n }\n }\n return BACKGROUND_CLIP.BORDER_BOX;\n });\n }\n};\n","import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nexport const backgroundColor: IPropertyTypeValueDescriptor = {\n name: `background-color`,\n initialValue: 'transparent',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'color'\n};\n","import {CSSValue} from '../../syntax/parser';\nimport {\n CSSRadialExtent,\n CSSRadialGradientImage,\n CSSRadialShape,\n GradientColorStop,\n GradientCorner,\n UnprocessedGradientColorStop\n} from '../image';\nimport {color as colorType} from '../color';\nimport {getAbsoluteValue, HUNDRED_PERCENT, isLengthPercentage, ZERO_LENGTH} from '../length-percentage';\nimport {Context} from '../../../core/context';\n\nexport const parseColorStop = (context: Context, args: CSSValue[]): UnprocessedGradientColorStop => {\n const color = colorType.parse(context, args[0]);\n const stop = args[1];\n return stop && isLengthPercentage(stop) ? {color, stop} : {color, stop: null};\n};\n\nexport const processColorStops = (stops: UnprocessedGradientColorStop[], lineLength: number): GradientColorStop[] => {\n const first = stops[0];\n const last = stops[stops.length - 1];\n if (first.stop === null) {\n first.stop = ZERO_LENGTH;\n }\n\n if (last.stop === null) {\n last.stop = HUNDRED_PERCENT;\n }\n\n const processStops: (number | null)[] = [];\n let previous = 0;\n for (let i = 0; i < stops.length; i++) {\n const stop = stops[i].stop;\n if (stop !== null) {\n const absoluteValue = getAbsoluteValue(stop, lineLength);\n if (absoluteValue > previous) {\n processStops.push(absoluteValue);\n } else {\n processStops.push(previous);\n }\n previous = absoluteValue;\n } else {\n processStops.push(null);\n }\n }\n\n let gapBegin = null;\n for (let i = 0; i < processStops.length; i++) {\n const stop = processStops[i];\n if (stop === null) {\n if (gapBegin === null) {\n gapBegin = i;\n }\n } else if (gapBegin !== null) {\n const gapLength = i - gapBegin;\n const beforeGap = processStops[gapBegin - 1] as number;\n const gapValue = (stop - beforeGap) / (gapLength + 1);\n for (let g = 1; g <= gapLength; g++) {\n processStops[gapBegin + g - 1] = gapValue * g;\n }\n gapBegin = null;\n }\n }\n\n return stops.map(({color}, i) => {\n return {color, stop: Math.max(Math.min(1, (processStops[i] as number) / lineLength), 0)};\n });\n};\n\nconst getAngleFromCorner = (corner: GradientCorner, width: number, height: number): number => {\n const centerX = width / 2;\n const centerY = height / 2;\n const x = getAbsoluteValue(corner[0], width) - centerX;\n const y = centerY - getAbsoluteValue(corner[1], height);\n\n return (Math.atan2(y, x) + Math.PI * 2) % (Math.PI * 2);\n};\n\nexport const calculateGradientDirection = (\n angle: number | GradientCorner,\n width: number,\n height: number\n): [number, number, number, number, number] => {\n const radian = typeof angle === 'number' ? angle : getAngleFromCorner(angle, width, height);\n\n const lineLength = Math.abs(width * Math.sin(radian)) + Math.abs(height * Math.cos(radian));\n\n const halfWidth = width / 2;\n const halfHeight = height / 2;\n const halfLineLength = lineLength / 2;\n\n const yDiff = Math.sin(radian - Math.PI / 2) * halfLineLength;\n const xDiff = Math.cos(radian - Math.PI / 2) * halfLineLength;\n\n return [lineLength, halfWidth - xDiff, halfWidth + xDiff, halfHeight - yDiff, halfHeight + yDiff];\n};\n\nconst distance = (a: number, b: number): number => Math.sqrt(a * a + b * b);\n\nconst findCorner = (width: number, height: number, x: number, y: number, closest: boolean): [number, number] => {\n const corners = [\n [0, 0],\n [0, height],\n [width, 0],\n [width, height]\n ];\n\n return corners.reduce(\n (stat, corner) => {\n const [cx, cy] = corner;\n const d = distance(x - cx, y - cy);\n if (closest ? d < stat.optimumDistance : d > stat.optimumDistance) {\n return {\n optimumCorner: corner,\n optimumDistance: d\n };\n }\n\n return stat;\n },\n {\n optimumDistance: closest ? Infinity : -Infinity,\n optimumCorner: null\n }\n ).optimumCorner as [number, number];\n};\n\nexport const calculateRadius = (\n gradient: CSSRadialGradientImage,\n x: number,\n y: number,\n width: number,\n height: number\n): [number, number] => {\n let rx = 0;\n let ry = 0;\n\n switch (gradient.size) {\n case CSSRadialExtent.CLOSEST_SIDE:\n // The ending shape is sized so that that it exactly meets the side of the gradient box closest to the gradient’s center.\n // If the shape is an ellipse, it exactly meets the closest side in each dimension.\n if (gradient.shape === CSSRadialShape.CIRCLE) {\n rx = ry = Math.min(Math.abs(x), Math.abs(x - width), Math.abs(y), Math.abs(y - height));\n } else if (gradient.shape === CSSRadialShape.ELLIPSE) {\n rx = Math.min(Math.abs(x), Math.abs(x - width));\n ry = Math.min(Math.abs(y), Math.abs(y - height));\n }\n break;\n\n case CSSRadialExtent.CLOSEST_CORNER:\n // The ending shape is sized so that that it passes through the corner of the gradient box closest to the gradient’s center.\n // If the shape is an ellipse, the ending shape is given the same aspect-ratio it would have if closest-side were specified.\n if (gradient.shape === CSSRadialShape.CIRCLE) {\n rx = ry = Math.min(\n distance(x, y),\n distance(x, y - height),\n distance(x - width, y),\n distance(x - width, y - height)\n );\n } else if (gradient.shape === CSSRadialShape.ELLIPSE) {\n // Compute the ratio ry/rx (which is to be the same as for \"closest-side\")\n const c = Math.min(Math.abs(y), Math.abs(y - height)) / Math.min(Math.abs(x), Math.abs(x - width));\n const [cx, cy] = findCorner(width, height, x, y, true);\n rx = distance(cx - x, (cy - y) / c);\n ry = c * rx;\n }\n break;\n\n case CSSRadialExtent.FARTHEST_SIDE:\n // Same as closest-side, except the ending shape is sized based on the farthest side(s)\n if (gradient.shape === CSSRadialShape.CIRCLE) {\n rx = ry = Math.max(Math.abs(x), Math.abs(x - width), Math.abs(y), Math.abs(y - height));\n } else if (gradient.shape === CSSRadialShape.ELLIPSE) {\n rx = Math.max(Math.abs(x), Math.abs(x - width));\n ry = Math.max(Math.abs(y), Math.abs(y - height));\n }\n break;\n\n case CSSRadialExtent.FARTHEST_CORNER:\n // Same as closest-corner, except the ending shape is sized based on the farthest corner.\n // If the shape is an ellipse, the ending shape is given the same aspect ratio it would have if farthest-side were specified.\n if (gradient.shape === CSSRadialShape.CIRCLE) {\n rx = ry = Math.max(\n distance(x, y),\n distance(x, y - height),\n distance(x - width, y),\n distance(x - width, y - height)\n );\n } else if (gradient.shape === CSSRadialShape.ELLIPSE) {\n // Compute the ratio ry/rx (which is to be the same as for \"farthest-side\")\n const c = Math.max(Math.abs(y), Math.abs(y - height)) / Math.max(Math.abs(x), Math.abs(x - width));\n const [cx, cy] = findCorner(width, height, x, y, false);\n rx = distance(cx - x, (cy - y) / c);\n ry = c * rx;\n }\n break;\n }\n\n if (Array.isArray(gradient.size)) {\n rx = getAbsoluteValue(gradient.size[0], width);\n ry = gradient.size.length === 2 ? getAbsoluteValue(gradient.size[1], height) : rx;\n }\n\n return [rx, ry];\n};\n","import {CSSValue, parseFunctionArgs} from '../../syntax/parser';\nimport {CSSImageType, CSSLinearGradientImage, GradientCorner, UnprocessedGradientColorStop} from '../image';\nimport {TokenType} from '../../syntax/tokenizer';\nimport {isAngle, angle as angleType, parseNamedSide, deg} from '../angle';\nimport {parseColorStop} from './gradient';\nimport {Context} from '../../../core/context';\n\nexport const prefixLinearGradient = (context: Context, tokens: CSSValue[]): CSSLinearGradientImage => {\n let angle: number | GradientCorner = deg(180);\n const stops: UnprocessedGradientColorStop[] = [];\n\n parseFunctionArgs(tokens).forEach((arg, i) => {\n if (i === 0) {\n const firstToken = arg[0];\n if (\n firstToken.type === TokenType.IDENT_TOKEN &&\n ['top', 'left', 'right', 'bottom'].indexOf(firstToken.value) !== -1\n ) {\n angle = parseNamedSide(arg);\n return;\n } else if (isAngle(firstToken)) {\n angle = (angleType.parse(context, firstToken) + deg(270)) % deg(360);\n return;\n }\n }\n const colorStop = parseColorStop(context, arg);\n stops.push(colorStop);\n });\n\n return {\n angle,\n stops,\n type: CSSImageType.LINEAR_GRADIENT\n };\n};\n","import {CSSValue, isIdentToken, parseFunctionArgs} from '../../syntax/parser';\nimport {\n CSSImageType,\n CSSRadialExtent,\n CSSRadialGradientImage,\n CSSRadialShape,\n CSSRadialSize,\n UnprocessedGradientColorStop\n} from '../image';\nimport {parseColorStop} from './gradient';\nimport {FIFTY_PERCENT, HUNDRED_PERCENT, isLengthPercentage, LengthPercentage, ZERO_LENGTH} from '../length-percentage';\nimport {isLength} from '../length';\nimport {Context} from '../../../core/context';\nexport const CLOSEST_SIDE = 'closest-side';\nexport const FARTHEST_SIDE = 'farthest-side';\nexport const CLOSEST_CORNER = 'closest-corner';\nexport const FARTHEST_CORNER = 'farthest-corner';\nexport const CIRCLE = 'circle';\nexport const ELLIPSE = 'ellipse';\nexport const COVER = 'cover';\nexport const CONTAIN = 'contain';\n\nexport const radialGradient = (context: Context, tokens: CSSValue[]): CSSRadialGradientImage => {\n let shape: CSSRadialShape = CSSRadialShape.CIRCLE;\n let size: CSSRadialSize = CSSRadialExtent.FARTHEST_CORNER;\n const stops: UnprocessedGradientColorStop[] = [];\n const position: LengthPercentage[] = [];\n parseFunctionArgs(tokens).forEach((arg, i) => {\n let isColorStop = true;\n if (i === 0) {\n let isAtPosition = false;\n isColorStop = arg.reduce((acc, token) => {\n if (isAtPosition) {\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'center':\n position.push(FIFTY_PERCENT);\n return acc;\n case 'top':\n case 'left':\n position.push(ZERO_LENGTH);\n return acc;\n case 'right':\n case 'bottom':\n position.push(HUNDRED_PERCENT);\n return acc;\n }\n } else if (isLengthPercentage(token) || isLength(token)) {\n position.push(token);\n }\n } else if (isIdentToken(token)) {\n switch (token.value) {\n case CIRCLE:\n shape = CSSRadialShape.CIRCLE;\n return false;\n case ELLIPSE:\n shape = CSSRadialShape.ELLIPSE;\n return false;\n case 'at':\n isAtPosition = true;\n return false;\n case CLOSEST_SIDE:\n size = CSSRadialExtent.CLOSEST_SIDE;\n return false;\n case COVER:\n case FARTHEST_SIDE:\n size = CSSRadialExtent.FARTHEST_SIDE;\n return false;\n case CONTAIN:\n case CLOSEST_CORNER:\n size = CSSRadialExtent.CLOSEST_CORNER;\n return false;\n case FARTHEST_CORNER:\n size = CSSRadialExtent.FARTHEST_CORNER;\n return false;\n }\n } else if (isLength(token) || isLengthPercentage(token)) {\n if (!Array.isArray(size)) {\n size = [];\n }\n size.push(token);\n return false;\n }\n return acc;\n }, isColorStop);\n }\n\n if (isColorStop) {\n const colorStop = parseColorStop(context, arg);\n stops.push(colorStop);\n }\n });\n\n return {size, shape, stops, position, type: CSSImageType.RADIAL_GRADIENT};\n};\n","import {CSSValue, isIdentToken, parseFunctionArgs} from '../../syntax/parser';\nimport {\n CSSImageType,\n CSSRadialExtent,\n CSSRadialGradientImage,\n CSSRadialShape,\n CSSRadialSize,\n UnprocessedGradientColorStop\n} from '../image';\nimport {parseColorStop} from './gradient';\nimport {FIFTY_PERCENT, HUNDRED_PERCENT, isLengthPercentage, LengthPercentage, ZERO_LENGTH} from '../length-percentage';\nimport {isLength} from '../length';\nimport {\n CIRCLE,\n CLOSEST_CORNER,\n CLOSEST_SIDE,\n CONTAIN,\n COVER,\n ELLIPSE,\n FARTHEST_CORNER,\n FARTHEST_SIDE\n} from './radial-gradient';\nimport {Context} from '../../../core/context';\n\nexport const prefixRadialGradient = (context: Context, tokens: CSSValue[]): CSSRadialGradientImage => {\n let shape: CSSRadialShape = CSSRadialShape.CIRCLE;\n let size: CSSRadialSize = CSSRadialExtent.FARTHEST_CORNER;\n const stops: UnprocessedGradientColorStop[] = [];\n const position: LengthPercentage[] = [];\n\n parseFunctionArgs(tokens).forEach((arg, i) => {\n let isColorStop = true;\n if (i === 0) {\n isColorStop = arg.reduce((acc, token) => {\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'center':\n position.push(FIFTY_PERCENT);\n return false;\n case 'top':\n case 'left':\n position.push(ZERO_LENGTH);\n return false;\n case 'right':\n case 'bottom':\n position.push(HUNDRED_PERCENT);\n return false;\n }\n } else if (isLengthPercentage(token) || isLength(token)) {\n position.push(token);\n return false;\n }\n\n return acc;\n }, isColorStop);\n } else if (i === 1) {\n isColorStop = arg.reduce((acc, token) => {\n if (isIdentToken(token)) {\n switch (token.value) {\n case CIRCLE:\n shape = CSSRadialShape.CIRCLE;\n return false;\n case ELLIPSE:\n shape = CSSRadialShape.ELLIPSE;\n return false;\n case CONTAIN:\n case CLOSEST_SIDE:\n size = CSSRadialExtent.CLOSEST_SIDE;\n return false;\n case FARTHEST_SIDE:\n size = CSSRadialExtent.FARTHEST_SIDE;\n return false;\n case CLOSEST_CORNER:\n size = CSSRadialExtent.CLOSEST_CORNER;\n return false;\n case COVER:\n case FARTHEST_CORNER:\n size = CSSRadialExtent.FARTHEST_CORNER;\n return false;\n }\n } else if (isLength(token) || isLengthPercentage(token)) {\n if (!Array.isArray(size)) {\n size = [];\n }\n size.push(token);\n return false;\n }\n\n return acc;\n }, isColorStop);\n }\n\n if (isColorStop) {\n const colorStop = parseColorStop(context, arg);\n stops.push(colorStop);\n }\n });\n\n return {size, shape, stops, position, type: CSSImageType.RADIAL_GRADIENT};\n};\n","import {CSSValue} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {Color} from './color';\nimport {linearGradient} from './functions/linear-gradient';\nimport {prefixLinearGradient} from './functions/-prefix-linear-gradient';\nimport {ITypeDescriptor} from '../ITypeDescriptor';\nimport {LengthPercentage} from './length-percentage';\nimport {webkitGradient} from './functions/-webkit-gradient';\nimport {radialGradient} from './functions/radial-gradient';\nimport {prefixRadialGradient} from './functions/-prefix-radial-gradient';\nimport {Context} from '../../core/context';\n\nexport const enum CSSImageType {\n URL,\n LINEAR_GRADIENT,\n RADIAL_GRADIENT\n}\n\nexport const isLinearGradient = (background: ICSSImage): background is CSSLinearGradientImage => {\n return background.type === CSSImageType.LINEAR_GRADIENT;\n};\n\nexport const isRadialGradient = (background: ICSSImage): background is CSSRadialGradientImage => {\n return background.type === CSSImageType.RADIAL_GRADIENT;\n};\n\nexport interface UnprocessedGradientColorStop {\n color: Color;\n stop: LengthPercentage | null;\n}\n\nexport interface GradientColorStop {\n color: Color;\n stop: number;\n}\n\nexport interface ICSSImage {\n type: CSSImageType;\n}\n\nexport interface CSSURLImage extends ICSSImage {\n url: string;\n type: CSSImageType.URL;\n}\n\n// interface ICSSGeneratedImage extends ICSSImage {}\n\nexport type GradientCorner = [LengthPercentage, LengthPercentage];\n\ninterface ICSSGradientImage extends ICSSImage {\n stops: UnprocessedGradientColorStop[];\n}\n\nexport interface CSSLinearGradientImage extends ICSSGradientImage {\n angle: number | GradientCorner;\n type: CSSImageType.LINEAR_GRADIENT;\n}\n\nexport const enum CSSRadialShape {\n CIRCLE,\n ELLIPSE\n}\n\nexport const enum CSSRadialExtent {\n CLOSEST_SIDE,\n FARTHEST_SIDE,\n CLOSEST_CORNER,\n FARTHEST_CORNER\n}\n\nexport type CSSRadialSize = CSSRadialExtent | LengthPercentage[];\n\nexport interface CSSRadialGradientImage extends ICSSGradientImage {\n type: CSSImageType.RADIAL_GRADIENT;\n shape: CSSRadialShape;\n size: CSSRadialSize;\n position: LengthPercentage[];\n}\n\nexport const image: ITypeDescriptor = {\n name: 'image',\n parse: (context: Context, value: CSSValue): ICSSImage => {\n if (value.type === TokenType.URL_TOKEN) {\n const image: CSSURLImage = {url: value.value, type: CSSImageType.URL};\n context.cache.addImage(value.value);\n return image;\n }\n\n if (value.type === TokenType.FUNCTION) {\n const imageFunction = SUPPORTED_IMAGE_FUNCTIONS[value.name];\n if (typeof imageFunction === 'undefined') {\n throw new Error(`Attempting to parse an unsupported image function \"${value.name}\"`);\n }\n return imageFunction(context, value.values);\n }\n\n throw new Error(`Unsupported image type ${value.type}`);\n }\n};\n\nexport function isSupportedImage(value: CSSValue): boolean {\n return (\n !(value.type === TokenType.IDENT_TOKEN && value.value === 'none') &&\n (value.type !== TokenType.FUNCTION || !!SUPPORTED_IMAGE_FUNCTIONS[value.name])\n );\n}\n\nconst SUPPORTED_IMAGE_FUNCTIONS: Record ICSSImage> = {\n 'linear-gradient': linearGradient,\n '-moz-linear-gradient': prefixLinearGradient,\n '-ms-linear-gradient': prefixLinearGradient,\n '-o-linear-gradient': prefixLinearGradient,\n '-webkit-linear-gradient': prefixLinearGradient,\n 'radial-gradient': radialGradient,\n '-moz-radial-gradient': prefixRadialGradient,\n '-ms-radial-gradient': prefixRadialGradient,\n '-o-radial-gradient': prefixRadialGradient,\n '-webkit-radial-gradient': prefixRadialGradient,\n '-webkit-gradient': webkitGradient\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken, parseFunctionArgs} from '../syntax/parser';\nimport {isLengthPercentage, LengthPercentage} from '../types/length-percentage';\nimport {StringValueToken} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\n\nexport enum BACKGROUND_SIZE {\n AUTO = 'auto',\n CONTAIN = 'contain',\n COVER = 'cover'\n}\n\nexport type BackgroundSizeInfo = LengthPercentage | StringValueToken;\nexport type BackgroundSize = BackgroundSizeInfo[][];\n\nexport const backgroundSize: IPropertyListDescriptor = {\n name: 'background-size',\n initialValue: '0',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): BackgroundSize => {\n return parseFunctionArgs(tokens).map((values) => values.filter(isBackgroundSizeInfoToken));\n }\n};\n\nconst isBackgroundSizeInfoToken = (value: CSSValue): value is BackgroundSizeInfo =>\n isIdentToken(value) || isLengthPercentage(value);\n","import {CSSValue, parseFunctionArgs} from '../../syntax/parser';\nimport {TokenType} from '../../syntax/tokenizer';\nimport {isAngle, angle as angleType, parseNamedSide, deg} from '../angle';\nimport {CSSImageType, CSSLinearGradientImage, GradientCorner, UnprocessedGradientColorStop} from '../image';\nimport {parseColorStop} from './gradient';\nimport {Context} from '../../../core/context';\n\nexport const linearGradient = (context: Context, tokens: CSSValue[]): CSSLinearGradientImage => {\n let angle: number | GradientCorner = deg(180);\n const stops: UnprocessedGradientColorStop[] = [];\n\n parseFunctionArgs(tokens).forEach((arg, i) => {\n if (i === 0) {\n const firstToken = arg[0];\n if (firstToken.type === TokenType.IDENT_TOKEN && firstToken.value === 'to') {\n angle = parseNamedSide(arg);\n return;\n } else if (isAngle(firstToken)) {\n angle = angleType.parse(context, firstToken);\n return;\n }\n }\n const colorStop = parseColorStop(context, arg);\n stops.push(colorStop);\n });\n\n return {angle, stops, type: CSSImageType.LINEAR_GRADIENT};\n};\n","import {CSSValue, isIdentToken, isNumberToken, nonFunctionArgSeparator, parseFunctionArgs} from '../../syntax/parser';\nimport {\n CSSImageType,\n CSSLinearGradientImage,\n CSSRadialExtent,\n CSSRadialGradientImage,\n CSSRadialShape,\n CSSRadialSize,\n UnprocessedGradientColorStop\n} from '../image';\nimport {deg} from '../angle';\nimport {TokenType} from '../../syntax/tokenizer';\nimport {color as colorType} from '../color';\nimport {HUNDRED_PERCENT, LengthPercentage, ZERO_LENGTH} from '../length-percentage';\nimport {Context} from '../../../core/context';\n\nexport const webkitGradient = (\n context: Context,\n tokens: CSSValue[]\n): CSSLinearGradientImage | CSSRadialGradientImage => {\n const angle = deg(180);\n const stops: UnprocessedGradientColorStop[] = [];\n let type = CSSImageType.LINEAR_GRADIENT;\n const shape: CSSRadialShape = CSSRadialShape.CIRCLE;\n const size: CSSRadialSize = CSSRadialExtent.FARTHEST_CORNER;\n const position: LengthPercentage[] = [];\n parseFunctionArgs(tokens).forEach((arg, i) => {\n const firstToken = arg[0];\n if (i === 0) {\n if (isIdentToken(firstToken) && firstToken.value === 'linear') {\n type = CSSImageType.LINEAR_GRADIENT;\n return;\n } else if (isIdentToken(firstToken) && firstToken.value === 'radial') {\n type = CSSImageType.RADIAL_GRADIENT;\n return;\n }\n }\n\n if (firstToken.type === TokenType.FUNCTION) {\n if (firstToken.name === 'from') {\n const color = colorType.parse(context, firstToken.values[0]);\n stops.push({stop: ZERO_LENGTH, color});\n } else if (firstToken.name === 'to') {\n const color = colorType.parse(context, firstToken.values[0]);\n stops.push({stop: HUNDRED_PERCENT, color});\n } else if (firstToken.name === 'color-stop') {\n const values = firstToken.values.filter(nonFunctionArgSeparator);\n if (values.length === 2) {\n const color = colorType.parse(context, values[1]);\n const stop = values[0];\n if (isNumberToken(stop)) {\n stops.push({\n stop: {type: TokenType.PERCENTAGE_TOKEN, number: stop.number * 100, flags: stop.flags},\n color\n });\n }\n }\n }\n }\n });\n\n return type === CSSImageType.LINEAR_GRADIENT\n ? {\n angle: (angle + deg(180)) % deg(360),\n stops,\n type\n }\n : {size, shape, stops, position, type};\n};\n","import {TokenType} from '../syntax/tokenizer';\nimport {ICSSImage, image, isSupportedImage} from '../types/image';\nimport {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, nonFunctionArgSeparator} from '../syntax/parser';\nimport {Context} from '../../core/context';\n\nexport const backgroundImage: IPropertyListDescriptor = {\n name: 'background-image',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: (context: Context, tokens: CSSValue[]) => {\n if (tokens.length === 0) {\n return [];\n }\n\n const first = tokens[0];\n\n if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {\n return [];\n }\n\n return tokens\n .filter((value) => nonFunctionArgSeparator(value) && isSupportedImage(value))\n .map((value) => image.parse(context, value));\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\n\nexport const enum BACKGROUND_ORIGIN {\n BORDER_BOX = 0,\n PADDING_BOX = 1,\n CONTENT_BOX = 2\n}\n\nexport type BackgroundOrigin = BACKGROUND_ORIGIN[];\n\nexport const backgroundOrigin: IPropertyListDescriptor = {\n name: 'background-origin',\n initialValue: 'border-box',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): BackgroundOrigin => {\n return tokens.map((token) => {\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'padding-box':\n return BACKGROUND_ORIGIN.PADDING_BOX;\n case 'content-box':\n return BACKGROUND_ORIGIN.CONTENT_BOX;\n }\n }\n return BACKGROUND_ORIGIN.BORDER_BOX;\n });\n }\n};\n","import {PropertyDescriptorParsingType, IPropertyListDescriptor} from '../IPropertyDescriptor';\nimport {CSSValue, parseFunctionArgs} from '../syntax/parser';\nimport {isLengthPercentage, LengthPercentageTuple, parseLengthPercentageTuple} from '../types/length-percentage';\nimport {Context} from '../../core/context';\nexport type BackgroundPosition = BackgroundImagePosition[];\n\nexport type BackgroundImagePosition = LengthPercentageTuple;\n\nexport const backgroundPosition: IPropertyListDescriptor = {\n name: 'background-position',\n initialValue: '0% 0%',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: (_context: Context, tokens: CSSValue[]): BackgroundPosition => {\n return parseFunctionArgs(tokens)\n .map((values: CSSValue[]) => values.filter(isLengthPercentage))\n .map(parseLengthPercentageTuple);\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken, parseFunctionArgs} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport type BackgroundRepeat = BACKGROUND_REPEAT[];\n\nexport const enum BACKGROUND_REPEAT {\n REPEAT = 0,\n NO_REPEAT = 1,\n REPEAT_X = 2,\n REPEAT_Y = 3\n}\n\nexport const backgroundRepeat: IPropertyListDescriptor = {\n name: 'background-repeat',\n initialValue: 'repeat',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): BackgroundRepeat => {\n return parseFunctionArgs(tokens)\n .map((values) =>\n values\n .filter(isIdentToken)\n .map((token) => token.value)\n .join(' ')\n )\n .map(parseBackgroundRepeat);\n }\n};\n\nconst parseBackgroundRepeat = (value: string): BACKGROUND_REPEAT => {\n switch (value) {\n case 'no-repeat':\n return BACKGROUND_REPEAT.NO_REPEAT;\n case 'repeat-x':\n case 'repeat no-repeat':\n return BACKGROUND_REPEAT.REPEAT_X;\n case 'repeat-y':\n case 'no-repeat repeat':\n return BACKGROUND_REPEAT.REPEAT_Y;\n case 'repeat':\n default:\n return BACKGROUND_REPEAT.REPEAT;\n }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport enum LINE_BREAK {\n NORMAL = 'normal',\n STRICT = 'strict'\n}\n\nexport const lineBreak: IPropertyIdentValueDescriptor = {\n name: 'line-break',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, lineBreak: string): LINE_BREAK => {\n switch (lineBreak) {\n case 'strict':\n return LINE_BREAK.STRICT;\n case 'normal':\n default:\n return LINE_BREAK.NORMAL;\n }\n }\n};\n","import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nconst borderColorForSide = (side: string): IPropertyTypeValueDescriptor => ({\n name: `border-${side}-color`,\n initialValue: 'transparent',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'color'\n});\n\nexport const borderTopColor: IPropertyTypeValueDescriptor = borderColorForSide('top');\nexport const borderRightColor: IPropertyTypeValueDescriptor = borderColorForSide('right');\nexport const borderBottomColor: IPropertyTypeValueDescriptor = borderColorForSide('bottom');\nexport const borderLeftColor: IPropertyTypeValueDescriptor = borderColorForSide('left');\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {isLengthPercentage, LengthPercentageTuple, parseLengthPercentageTuple} from '../types/length-percentage';\nimport {Context} from '../../core/context';\nexport type BorderRadius = LengthPercentageTuple;\n\nconst borderRadiusForSide = (side: string): IPropertyListDescriptor => ({\n name: `border-radius-${side}`,\n initialValue: '0 0',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): BorderRadius =>\n parseLengthPercentageTuple(tokens.filter(isLengthPercentage))\n});\n\nexport const borderTopLeftRadius: IPropertyListDescriptor = borderRadiusForSide('top-left');\nexport const borderTopRightRadius: IPropertyListDescriptor = borderRadiusForSide('top-right');\nexport const borderBottomRightRadius: IPropertyListDescriptor = borderRadiusForSide('bottom-right');\nexport const borderBottomLeftRadius: IPropertyListDescriptor = borderRadiusForSide('bottom-left');\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum BORDER_STYLE {\n NONE = 0,\n SOLID = 1,\n DASHED = 2,\n DOTTED = 3,\n DOUBLE = 4\n}\n\nconst borderStyleForSide = (side: string): IPropertyIdentValueDescriptor => ({\n name: `border-${side}-style`,\n initialValue: 'solid',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, style: string): BORDER_STYLE => {\n switch (style) {\n case 'none':\n return BORDER_STYLE.NONE;\n case 'dashed':\n return BORDER_STYLE.DASHED;\n case 'dotted':\n return BORDER_STYLE.DOTTED;\n case 'double':\n return BORDER_STYLE.DOUBLE;\n }\n return BORDER_STYLE.SOLID;\n }\n});\n\nexport const borderTopStyle: IPropertyIdentValueDescriptor = borderStyleForSide('top');\nexport const borderRightStyle: IPropertyIdentValueDescriptor = borderStyleForSide('right');\nexport const borderBottomStyle: IPropertyIdentValueDescriptor = borderStyleForSide('bottom');\nexport const borderLeftStyle: IPropertyIdentValueDescriptor = borderStyleForSide('left');\n","import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isDimensionToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nconst borderWidthForSide = (side: string): IPropertyValueDescriptor => ({\n name: `border-${side}-width`,\n initialValue: '0',\n type: PropertyDescriptorParsingType.VALUE,\n prefix: false,\n parse: (_context: Context, token: CSSValue): number => {\n if (isDimensionToken(token)) {\n return token.number;\n }\n return 0;\n }\n});\n\nexport const borderTopWidth: IPropertyValueDescriptor = borderWidthForSide('top');\nexport const borderRightWidth: IPropertyValueDescriptor = borderWidthForSide('right');\nexport const borderBottomWidth: IPropertyValueDescriptor = borderWidthForSide('bottom');\nexport const borderLeftWidth: IPropertyValueDescriptor = borderWidthForSide('left');\n","import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nexport const color: IPropertyTypeValueDescriptor = {\n name: `color`,\n initialValue: 'transparent',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'color'\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\n\nexport const enum DIRECTION {\n LTR = 0,\n RTL = 1\n}\n\nexport const direction: IPropertyIdentValueDescriptor = {\n name: 'direction',\n initialValue: 'ltr',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, direction: string) => {\n switch (direction) {\n case 'rtl':\n return DIRECTION.RTL;\n case 'ltr':\n default:\n return DIRECTION.LTR;\n }\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const enum DISPLAY {\n NONE = 0,\n BLOCK = 1 << 1,\n INLINE = 1 << 2,\n RUN_IN = 1 << 3,\n FLOW = 1 << 4,\n FLOW_ROOT = 1 << 5,\n TABLE = 1 << 6,\n FLEX = 1 << 7,\n GRID = 1 << 8,\n RUBY = 1 << 9,\n SUBGRID = 1 << 10,\n LIST_ITEM = 1 << 11,\n TABLE_ROW_GROUP = 1 << 12,\n TABLE_HEADER_GROUP = 1 << 13,\n TABLE_FOOTER_GROUP = 1 << 14,\n TABLE_ROW = 1 << 15,\n TABLE_CELL = 1 << 16,\n TABLE_COLUMN_GROUP = 1 << 17,\n TABLE_COLUMN = 1 << 18,\n TABLE_CAPTION = 1 << 19,\n RUBY_BASE = 1 << 20,\n RUBY_TEXT = 1 << 21,\n RUBY_BASE_CONTAINER = 1 << 22,\n RUBY_TEXT_CONTAINER = 1 << 23,\n CONTENTS = 1 << 24,\n INLINE_BLOCK = 1 << 25,\n INLINE_LIST_ITEM = 1 << 26,\n INLINE_TABLE = 1 << 27,\n INLINE_FLEX = 1 << 28,\n INLINE_GRID = 1 << 29\n}\n\nexport type Display = number;\n\nexport const display: IPropertyListDescriptor = {\n name: 'display',\n initialValue: 'inline-block',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): Display => {\n return tokens.filter(isIdentToken).reduce((bit, token) => {\n return bit | parseDisplayValue(token.value);\n }, DISPLAY.NONE);\n }\n};\n\nconst parseDisplayValue = (display: string): Display => {\n switch (display) {\n case 'block':\n case '-webkit-box':\n return DISPLAY.BLOCK;\n case 'inline':\n return DISPLAY.INLINE;\n case 'run-in':\n return DISPLAY.RUN_IN;\n case 'flow':\n return DISPLAY.FLOW;\n case 'flow-root':\n return DISPLAY.FLOW_ROOT;\n case 'table':\n return DISPLAY.TABLE;\n case 'flex':\n case '-webkit-flex':\n return DISPLAY.FLEX;\n case 'grid':\n case '-ms-grid':\n return DISPLAY.GRID;\n case 'ruby':\n return DISPLAY.RUBY;\n case 'subgrid':\n return DISPLAY.SUBGRID;\n case 'list-item':\n return DISPLAY.LIST_ITEM;\n case 'table-row-group':\n return DISPLAY.TABLE_ROW_GROUP;\n case 'table-header-group':\n return DISPLAY.TABLE_HEADER_GROUP;\n case 'table-footer-group':\n return DISPLAY.TABLE_FOOTER_GROUP;\n case 'table-row':\n return DISPLAY.TABLE_ROW;\n case 'table-cell':\n return DISPLAY.TABLE_CELL;\n case 'table-column-group':\n return DISPLAY.TABLE_COLUMN_GROUP;\n case 'table-column':\n return DISPLAY.TABLE_COLUMN;\n case 'table-caption':\n return DISPLAY.TABLE_CAPTION;\n case 'ruby-base':\n return DISPLAY.RUBY_BASE;\n case 'ruby-text':\n return DISPLAY.RUBY_TEXT;\n case 'ruby-base-container':\n return DISPLAY.RUBY_BASE_CONTAINER;\n case 'ruby-text-container':\n return DISPLAY.RUBY_TEXT_CONTAINER;\n case 'contents':\n return DISPLAY.CONTENTS;\n case 'inline-block':\n return DISPLAY.INLINE_BLOCK;\n case 'inline-list-item':\n return DISPLAY.INLINE_LIST_ITEM;\n case 'inline-table':\n return DISPLAY.INLINE_TABLE;\n case 'inline-flex':\n return DISPLAY.INLINE_FLEX;\n case 'inline-grid':\n return DISPLAY.INLINE_GRID;\n }\n\n return DISPLAY.NONE;\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum FLOAT {\n NONE = 0,\n LEFT = 1,\n RIGHT = 2,\n INLINE_START = 3,\n INLINE_END = 4\n}\n\nexport const float: IPropertyIdentValueDescriptor = {\n name: 'float',\n initialValue: 'none',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, float: string) => {\n switch (float) {\n case 'left':\n return FLOAT.LEFT;\n case 'right':\n return FLOAT.RIGHT;\n case 'inline-start':\n return FLOAT.INLINE_START;\n case 'inline-end':\n return FLOAT.INLINE_END;\n }\n return FLOAT.NONE;\n }\n};\n","import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\nexport const letterSpacing: IPropertyValueDescriptor = {\n name: 'letter-spacing',\n initialValue: '0',\n prefix: false,\n type: PropertyDescriptorParsingType.VALUE,\n parse: (_context: Context, token: CSSValue) => {\n if (token.type === TokenType.IDENT_TOKEN && token.value === 'normal') {\n return 0;\n }\n\n if (token.type === TokenType.NUMBER_TOKEN) {\n return token.number;\n }\n\n if (token.type === TokenType.DIMENSION_TOKEN) {\n return token.number;\n }\n\n return 0;\n }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport enum WORD_BREAK {\n NORMAL = 'normal',\n BREAK_ALL = 'break-all',\n KEEP_ALL = 'keep-all'\n}\n\nexport const wordBreak: IPropertyIdentValueDescriptor = {\n name: 'word-break',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, wordBreak: string): WORD_BREAK => {\n switch (wordBreak) {\n case 'break-all':\n return WORD_BREAK.BREAK_ALL;\n case 'keep-all':\n return WORD_BREAK.KEEP_ALL;\n case 'normal':\n default:\n return WORD_BREAK.NORMAL;\n }\n }\n};\n","import {IPropertyTokenValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {getAbsoluteValue, isLengthPercentage} from '../types/length-percentage';\nexport const lineHeight: IPropertyTokenValueDescriptor = {\n name: 'line-height',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.TOKEN_VALUE\n};\n\nexport const computeLineHeight = (token: CSSValue, fontSize: number): number => {\n if (isIdentToken(token) && token.value === 'normal') {\n return 1.2 * fontSize;\n } else if (token.type === TokenType.NUMBER_TOKEN) {\n return fontSize * token.number;\n } else if (isLengthPercentage(token)) {\n return getAbsoluteValue(token, fontSize);\n }\n\n return fontSize;\n};\n","import {TokenType} from '../syntax/tokenizer';\nimport {ICSSImage, image} from '../types/image';\nimport {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {Context} from '../../core/context';\n\nexport const listStyleImage: IPropertyValueDescriptor = {\n name: 'list-style-image',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.VALUE,\n prefix: false,\n parse: (context: Context, token: CSSValue) => {\n if (token.type === TokenType.IDENT_TOKEN && token.value === 'none') {\n return null;\n }\n\n return image.parse(context, token);\n }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum LIST_STYLE_POSITION {\n INSIDE = 0,\n OUTSIDE = 1\n}\n\nexport const listStylePosition: IPropertyIdentValueDescriptor = {\n name: 'list-style-position',\n initialValue: 'outside',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, position: string) => {\n switch (position) {\n case 'inside':\n return LIST_STYLE_POSITION.INSIDE;\n case 'outside':\n default:\n return LIST_STYLE_POSITION.OUTSIDE;\n }\n }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum LIST_STYLE_TYPE {\n NONE = -1,\n DISC = 0,\n CIRCLE = 1,\n SQUARE = 2,\n DECIMAL = 3,\n CJK_DECIMAL = 4,\n DECIMAL_LEADING_ZERO = 5,\n LOWER_ROMAN = 6,\n UPPER_ROMAN = 7,\n LOWER_GREEK = 8,\n LOWER_ALPHA = 9,\n UPPER_ALPHA = 10,\n ARABIC_INDIC = 11,\n ARMENIAN = 12,\n BENGALI = 13,\n CAMBODIAN = 14,\n CJK_EARTHLY_BRANCH = 15,\n CJK_HEAVENLY_STEM = 16,\n CJK_IDEOGRAPHIC = 17,\n DEVANAGARI = 18,\n ETHIOPIC_NUMERIC = 19,\n GEORGIAN = 20,\n GUJARATI = 21,\n GURMUKHI = 22,\n HEBREW = 22,\n HIRAGANA = 23,\n HIRAGANA_IROHA = 24,\n JAPANESE_FORMAL = 25,\n JAPANESE_INFORMAL = 26,\n KANNADA = 27,\n KATAKANA = 28,\n KATAKANA_IROHA = 29,\n KHMER = 30,\n KOREAN_HANGUL_FORMAL = 31,\n KOREAN_HANJA_FORMAL = 32,\n KOREAN_HANJA_INFORMAL = 33,\n LAO = 34,\n LOWER_ARMENIAN = 35,\n MALAYALAM = 36,\n MONGOLIAN = 37,\n MYANMAR = 38,\n ORIYA = 39,\n PERSIAN = 40,\n SIMP_CHINESE_FORMAL = 41,\n SIMP_CHINESE_INFORMAL = 42,\n TAMIL = 43,\n TELUGU = 44,\n THAI = 45,\n TIBETAN = 46,\n TRAD_CHINESE_FORMAL = 47,\n TRAD_CHINESE_INFORMAL = 48,\n UPPER_ARMENIAN = 49,\n DISCLOSURE_OPEN = 50,\n DISCLOSURE_CLOSED = 51\n}\n\nexport const listStyleType: IPropertyIdentValueDescriptor = {\n name: 'list-style-type',\n initialValue: 'none',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, type: string) => {\n switch (type) {\n case 'disc':\n return LIST_STYLE_TYPE.DISC;\n case 'circle':\n return LIST_STYLE_TYPE.CIRCLE;\n case 'square':\n return LIST_STYLE_TYPE.SQUARE;\n case 'decimal':\n return LIST_STYLE_TYPE.DECIMAL;\n case 'cjk-decimal':\n return LIST_STYLE_TYPE.CJK_DECIMAL;\n case 'decimal-leading-zero':\n return LIST_STYLE_TYPE.DECIMAL_LEADING_ZERO;\n case 'lower-roman':\n return LIST_STYLE_TYPE.LOWER_ROMAN;\n case 'upper-roman':\n return LIST_STYLE_TYPE.UPPER_ROMAN;\n case 'lower-greek':\n return LIST_STYLE_TYPE.LOWER_GREEK;\n case 'lower-alpha':\n return LIST_STYLE_TYPE.LOWER_ALPHA;\n case 'upper-alpha':\n return LIST_STYLE_TYPE.UPPER_ALPHA;\n case 'arabic-indic':\n return LIST_STYLE_TYPE.ARABIC_INDIC;\n case 'armenian':\n return LIST_STYLE_TYPE.ARMENIAN;\n case 'bengali':\n return LIST_STYLE_TYPE.BENGALI;\n case 'cambodian':\n return LIST_STYLE_TYPE.CAMBODIAN;\n case 'cjk-earthly-branch':\n return LIST_STYLE_TYPE.CJK_EARTHLY_BRANCH;\n case 'cjk-heavenly-stem':\n return LIST_STYLE_TYPE.CJK_HEAVENLY_STEM;\n case 'cjk-ideographic':\n return LIST_STYLE_TYPE.CJK_IDEOGRAPHIC;\n case 'devanagari':\n return LIST_STYLE_TYPE.DEVANAGARI;\n case 'ethiopic-numeric':\n return LIST_STYLE_TYPE.ETHIOPIC_NUMERIC;\n case 'georgian':\n return LIST_STYLE_TYPE.GEORGIAN;\n case 'gujarati':\n return LIST_STYLE_TYPE.GUJARATI;\n case 'gurmukhi':\n return LIST_STYLE_TYPE.GURMUKHI;\n case 'hebrew':\n return LIST_STYLE_TYPE.HEBREW;\n case 'hiragana':\n return LIST_STYLE_TYPE.HIRAGANA;\n case 'hiragana-iroha':\n return LIST_STYLE_TYPE.HIRAGANA_IROHA;\n case 'japanese-formal':\n return LIST_STYLE_TYPE.JAPANESE_FORMAL;\n case 'japanese-informal':\n return LIST_STYLE_TYPE.JAPANESE_INFORMAL;\n case 'kannada':\n return LIST_STYLE_TYPE.KANNADA;\n case 'katakana':\n return LIST_STYLE_TYPE.KATAKANA;\n case 'katakana-iroha':\n return LIST_STYLE_TYPE.KATAKANA_IROHA;\n case 'khmer':\n return LIST_STYLE_TYPE.KHMER;\n case 'korean-hangul-formal':\n return LIST_STYLE_TYPE.KOREAN_HANGUL_FORMAL;\n case 'korean-hanja-formal':\n return LIST_STYLE_TYPE.KOREAN_HANJA_FORMAL;\n case 'korean-hanja-informal':\n return LIST_STYLE_TYPE.KOREAN_HANJA_INFORMAL;\n case 'lao':\n return LIST_STYLE_TYPE.LAO;\n case 'lower-armenian':\n return LIST_STYLE_TYPE.LOWER_ARMENIAN;\n case 'malayalam':\n return LIST_STYLE_TYPE.MALAYALAM;\n case 'mongolian':\n return LIST_STYLE_TYPE.MONGOLIAN;\n case 'myanmar':\n return LIST_STYLE_TYPE.MYANMAR;\n case 'oriya':\n return LIST_STYLE_TYPE.ORIYA;\n case 'persian':\n return LIST_STYLE_TYPE.PERSIAN;\n case 'simp-chinese-formal':\n return LIST_STYLE_TYPE.SIMP_CHINESE_FORMAL;\n case 'simp-chinese-informal':\n return LIST_STYLE_TYPE.SIMP_CHINESE_INFORMAL;\n case 'tamil':\n return LIST_STYLE_TYPE.TAMIL;\n case 'telugu':\n return LIST_STYLE_TYPE.TELUGU;\n case 'thai':\n return LIST_STYLE_TYPE.THAI;\n case 'tibetan':\n return LIST_STYLE_TYPE.TIBETAN;\n case 'trad-chinese-formal':\n return LIST_STYLE_TYPE.TRAD_CHINESE_FORMAL;\n case 'trad-chinese-informal':\n return LIST_STYLE_TYPE.TRAD_CHINESE_INFORMAL;\n case 'upper-armenian':\n return LIST_STYLE_TYPE.UPPER_ARMENIAN;\n case 'disclosure-open':\n return LIST_STYLE_TYPE.DISCLOSURE_OPEN;\n case 'disclosure-closed':\n return LIST_STYLE_TYPE.DISCLOSURE_CLOSED;\n case 'none':\n default:\n return LIST_STYLE_TYPE.NONE;\n }\n }\n};\n","import {IPropertyTokenValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nconst marginForSide = (side: string): IPropertyTokenValueDescriptor => ({\n name: `margin-${side}`,\n initialValue: '0',\n prefix: false,\n type: PropertyDescriptorParsingType.TOKEN_VALUE\n});\n\nexport const marginTop: IPropertyTokenValueDescriptor = marginForSide('top');\nexport const marginRight: IPropertyTokenValueDescriptor = marginForSide('right');\nexport const marginBottom: IPropertyTokenValueDescriptor = marginForSide('bottom');\nexport const marginLeft: IPropertyTokenValueDescriptor = marginForSide('left');\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const enum OVERFLOW {\n VISIBLE = 0,\n HIDDEN = 1,\n SCROLL = 2,\n CLIP = 3,\n AUTO = 4\n}\n\nexport const overflow: IPropertyListDescriptor = {\n name: 'overflow',\n initialValue: 'visible',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): OVERFLOW[] => {\n return tokens.filter(isIdentToken).map((overflow) => {\n switch (overflow.value) {\n case 'hidden':\n return OVERFLOW.HIDDEN;\n case 'scroll':\n return OVERFLOW.SCROLL;\n case 'clip':\n return OVERFLOW.CLIP;\n case 'auto':\n return OVERFLOW.AUTO;\n case 'visible':\n default:\n return OVERFLOW.VISIBLE;\n }\n });\n }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum OVERFLOW_WRAP {\n NORMAL = 'normal',\n BREAK_WORD = 'break-word'\n}\n\nexport const overflowWrap: IPropertyIdentValueDescriptor = {\n name: 'overflow-wrap',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, overflow: string) => {\n switch (overflow) {\n case 'break-word':\n return OVERFLOW_WRAP.BREAK_WORD;\n case 'normal':\n default:\n return OVERFLOW_WRAP.NORMAL;\n }\n }\n};\n","import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nconst paddingForSide = (side: string): IPropertyTypeValueDescriptor => ({\n name: `padding-${side}`,\n initialValue: '0',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'length-percentage'\n});\n\nexport const paddingTop: IPropertyTypeValueDescriptor = paddingForSide('top');\nexport const paddingRight: IPropertyTypeValueDescriptor = paddingForSide('right');\nexport const paddingBottom: IPropertyTypeValueDescriptor = paddingForSide('bottom');\nexport const paddingLeft: IPropertyTypeValueDescriptor = paddingForSide('left');\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum TEXT_ALIGN {\n LEFT = 0,\n CENTER = 1,\n RIGHT = 2\n}\n\nexport const textAlign: IPropertyIdentValueDescriptor = {\n name: 'text-align',\n initialValue: 'left',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, textAlign: string) => {\n switch (textAlign) {\n case 'right':\n return TEXT_ALIGN.RIGHT;\n case 'center':\n case 'justify':\n return TEXT_ALIGN.CENTER;\n case 'left':\n default:\n return TEXT_ALIGN.LEFT;\n }\n }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum POSITION {\n STATIC = 0,\n RELATIVE = 1,\n ABSOLUTE = 2,\n FIXED = 3,\n STICKY = 4\n}\n\nexport const position: IPropertyIdentValueDescriptor = {\n name: 'position',\n initialValue: 'static',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, position: string) => {\n switch (position) {\n case 'relative':\n return POSITION.RELATIVE;\n case 'absolute':\n return POSITION.ABSOLUTE;\n case 'fixed':\n return POSITION.FIXED;\n case 'sticky':\n return POSITION.STICKY;\n }\n\n return POSITION.STATIC;\n }\n};\n","import {PropertyDescriptorParsingType, IPropertyListDescriptor} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentWithValue, parseFunctionArgs} from '../syntax/parser';\nimport {ZERO_LENGTH} from '../types/length-percentage';\nimport {color, Color, COLORS} from '../types/color';\nimport {isLength, Length} from '../types/length';\nimport {Context} from '../../core/context';\n\nexport type TextShadow = TextShadowItem[];\ninterface TextShadowItem {\n color: Color;\n offsetX: Length;\n offsetY: Length;\n blur: Length;\n}\n\nexport const textShadow: IPropertyListDescriptor = {\n name: 'text-shadow',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: (context: Context, tokens: CSSValue[]): TextShadow => {\n if (tokens.length === 1 && isIdentWithValue(tokens[0], 'none')) {\n return [];\n }\n\n return parseFunctionArgs(tokens).map((values: CSSValue[]) => {\n const shadow: TextShadowItem = {\n color: COLORS.TRANSPARENT,\n offsetX: ZERO_LENGTH,\n offsetY: ZERO_LENGTH,\n blur: ZERO_LENGTH\n };\n let c = 0;\n for (let i = 0; i < values.length; i++) {\n const token = values[i];\n if (isLength(token)) {\n if (c === 0) {\n shadow.offsetX = token;\n } else if (c === 1) {\n shadow.offsetY = token;\n } else {\n shadow.blur = token;\n }\n c++;\n } else {\n shadow.color = color.parse(context, token);\n }\n }\n return shadow;\n });\n }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum TEXT_TRANSFORM {\n NONE = 0,\n LOWERCASE = 1,\n UPPERCASE = 2,\n CAPITALIZE = 3\n}\n\nexport const textTransform: IPropertyIdentValueDescriptor = {\n name: 'text-transform',\n initialValue: 'none',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, textTransform: string) => {\n switch (textTransform) {\n case 'uppercase':\n return TEXT_TRANSFORM.UPPERCASE;\n case 'lowercase':\n return TEXT_TRANSFORM.LOWERCASE;\n case 'capitalize':\n return TEXT_TRANSFORM.CAPITALIZE;\n }\n\n return TEXT_TRANSFORM.NONE;\n }\n};\n","import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {NumberValueToken, TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\nexport type Matrix = [number, number, number, number, number, number];\nexport type Transform = Matrix | null;\n\nexport const transform: IPropertyValueDescriptor = {\n name: 'transform',\n initialValue: 'none',\n prefix: true,\n type: PropertyDescriptorParsingType.VALUE,\n parse: (_context: Context, token: CSSValue) => {\n if (token.type === TokenType.IDENT_TOKEN && token.value === 'none') {\n return null;\n }\n\n if (token.type === TokenType.FUNCTION) {\n const transformFunction = SUPPORTED_TRANSFORM_FUNCTIONS[token.name];\n if (typeof transformFunction === 'undefined') {\n throw new Error(`Attempting to parse an unsupported transform function \"${token.name}\"`);\n }\n return transformFunction(token.values);\n }\n\n return null;\n }\n};\n\nconst matrix = (args: CSSValue[]): Transform => {\n const values = args.filter((arg) => arg.type === TokenType.NUMBER_TOKEN).map((arg: NumberValueToken) => arg.number);\n\n return values.length === 6 ? (values as Matrix) : null;\n};\n\n// doesn't support 3D transforms at the moment\nconst matrix3d = (args: CSSValue[]): Transform => {\n const values = args.filter((arg) => arg.type === TokenType.NUMBER_TOKEN).map((arg: NumberValueToken) => arg.number);\n\n const [a1, b1, {}, {}, a2, b2, {}, {}, {}, {}, {}, {}, a4, b4, {}, {}] = values;\n\n return values.length === 16 ? [a1, b1, a2, b2, a4, b4] : null;\n};\n\nconst SUPPORTED_TRANSFORM_FUNCTIONS: {\n [key: string]: (args: CSSValue[]) => Transform;\n} = {\n matrix: matrix,\n matrix3d: matrix3d\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {isLengthPercentage, LengthPercentage} from '../types/length-percentage';\nimport {FLAG_INTEGER, TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\nexport type TransformOrigin = [LengthPercentage, LengthPercentage];\n\nconst DEFAULT_VALUE: LengthPercentage = {\n type: TokenType.PERCENTAGE_TOKEN,\n number: 50,\n flags: FLAG_INTEGER\n};\nconst DEFAULT: TransformOrigin = [DEFAULT_VALUE, DEFAULT_VALUE];\n\nexport const transformOrigin: IPropertyListDescriptor = {\n name: 'transform-origin',\n initialValue: '50% 50%',\n prefix: true,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]) => {\n const origins: LengthPercentage[] = tokens.filter(isLengthPercentage);\n\n if (origins.length !== 2) {\n return DEFAULT;\n }\n\n return [origins[0], origins[1]];\n }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum VISIBILITY {\n VISIBLE = 0,\n HIDDEN = 1,\n COLLAPSE = 2\n}\n\nexport const visibility: IPropertyIdentValueDescriptor = {\n name: 'visible',\n initialValue: 'none',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, visibility: string) => {\n switch (visibility) {\n case 'hidden':\n return VISIBILITY.HIDDEN;\n case 'collapse':\n return VISIBILITY.COLLAPSE;\n case 'visible':\n default:\n return VISIBILITY.VISIBLE;\n }\n }\n};\n","const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const decode = (base64: string): ArrayBuffer | number[] => {\n let bufferLength = base64.length * 0.75,\n len = base64.length,\n i,\n p = 0,\n encoded1,\n encoded2,\n encoded3,\n encoded4;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n const buffer =\n typeof ArrayBuffer !== 'undefined' &&\n typeof Uint8Array !== 'undefined' &&\n typeof Uint8Array.prototype.slice !== 'undefined'\n ? new ArrayBuffer(bufferLength)\n : new Array(bufferLength);\n const bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return buffer;\n};\n\nexport const polyUint16Array = (buffer: number[]): number[] => {\n const length = buffer.length;\n const bytes = [];\n for (let i = 0; i < length; i += 2) {\n bytes.push((buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n};\n\nexport const polyUint32Array = (buffer: number[]): number[] => {\n const length = buffer.length;\n const bytes = [];\n for (let i = 0; i < length; i += 4) {\n bytes.push((buffer[i + 3] << 24) | (buffer[i + 2] << 16) | (buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n};\n","import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isNumberToken} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\n\ninterface zIndex {\n order: number;\n auto: boolean;\n}\n\nexport const zIndex: IPropertyValueDescriptor = {\n name: 'z-index',\n initialValue: 'auto',\n prefix: false,\n type: PropertyDescriptorParsingType.VALUE,\n parse: (_context: Context, token: CSSValue): zIndex => {\n if (token.type === TokenType.IDENT_TOKEN) {\n return {auto: true, order: 0};\n }\n\n if (isNumberToken(token)) {\n return {auto: false, order: token.number};\n }\n\n throw new Error(`Invalid z-index number parsed`);\n }\n};\n","import {CSSValue} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {ITypeDescriptor} from '../ITypeDescriptor';\nimport {Context} from '../../core/context';\n\nexport const time: ITypeDescriptor = {\n name: 'time',\n parse: (_context: Context, value: CSSValue): number => {\n if (value.type === TokenType.DIMENSION_TOKEN) {\n switch (value.unit.toLowerCase()) {\n case 's':\n return 1000 * value.number;\n case 'ms':\n return value.number;\n }\n }\n\n throw new Error(`Unsupported time type`);\n }\n};\n","import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isNumberToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const opacity: IPropertyValueDescriptor = {\n name: 'opacity',\n initialValue: '1',\n type: PropertyDescriptorParsingType.VALUE,\n prefix: false,\n parse: (_context: Context, token: CSSValue): number => {\n if (isNumberToken(token)) {\n return token.number;\n }\n return 1;\n }\n};\n","import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nexport const textDecorationColor: IPropertyTypeValueDescriptor = {\n name: `text-decoration-color`,\n initialValue: 'transparent',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'color'\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\n\nexport const enum TEXT_DECORATION_LINE {\n NONE = 0,\n UNDERLINE = 1,\n OVERLINE = 2,\n LINE_THROUGH = 3,\n BLINK = 4\n}\n\nexport type TextDecorationLine = TEXT_DECORATION_LINE[];\n\nexport const textDecorationLine: IPropertyListDescriptor = {\n name: 'text-decoration-line',\n initialValue: 'none',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): TextDecorationLine => {\n return tokens\n .filter(isIdentToken)\n .map((token) => {\n switch (token.value) {\n case 'underline':\n return TEXT_DECORATION_LINE.UNDERLINE;\n case 'overline':\n return TEXT_DECORATION_LINE.OVERLINE;\n case 'line-through':\n return TEXT_DECORATION_LINE.LINE_THROUGH;\n case 'none':\n return TEXT_DECORATION_LINE.BLINK;\n }\n return TEXT_DECORATION_LINE.NONE;\n })\n .filter((line) => line !== TEXT_DECORATION_LINE.NONE);\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\n\nexport type FONT_FAMILY = string;\n\nexport type FontFamily = FONT_FAMILY[];\n\nexport const fontFamily: IPropertyListDescriptor = {\n name: `font-family`,\n initialValue: '',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]) => {\n const accumulator: string[] = [];\n const results: string[] = [];\n tokens.forEach((token) => {\n switch (token.type) {\n case TokenType.IDENT_TOKEN:\n case TokenType.STRING_TOKEN:\n accumulator.push(token.value);\n break;\n case TokenType.NUMBER_TOKEN:\n accumulator.push(token.number.toString());\n break;\n case TokenType.COMMA_TOKEN:\n results.push(accumulator.join(' '));\n accumulator.length = 0;\n break;\n }\n });\n if (accumulator.length) {\n results.push(accumulator.join(' '));\n }\n return results.map((result) => (result.indexOf(' ') === -1 ? result : `'${result}'`));\n }\n};\n","import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nexport const fontSize: IPropertyTypeValueDescriptor = {\n name: `font-size`,\n initialValue: '0',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'length'\n};\n","import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken, isNumberToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const fontWeight: IPropertyValueDescriptor = {\n name: 'font-weight',\n initialValue: 'normal',\n type: PropertyDescriptorParsingType.VALUE,\n prefix: false,\n parse: (_context: Context, token: CSSValue): number => {\n if (isNumberToken(token)) {\n return token.number;\n }\n\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'bold':\n return 700;\n case 'normal':\n default:\n return 400;\n }\n }\n\n return 400;\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const fontVariant: IPropertyListDescriptor = {\n name: 'font-variant',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: (_context: Context, tokens: CSSValue[]): string[] => {\n return tokens.filter(isIdentToken).map((token) => token.value);\n }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum FONT_STYLE {\n NORMAL = 'normal',\n ITALIC = 'italic',\n OBLIQUE = 'oblique'\n}\n\nexport const fontStyle: IPropertyIdentValueDescriptor = {\n name: 'font-style',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, overflow: string) => {\n switch (overflow) {\n case 'oblique':\n return FONT_STYLE.OBLIQUE;\n case 'italic':\n return FONT_STYLE.ITALIC;\n case 'normal':\n default:\n return FONT_STYLE.NORMAL;\n }\n }\n};\n","export const contains = (bit: number, value: number): boolean => (bit & value) !== 0;\n","import {TokenType} from '../syntax/tokenizer';\nimport {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {Context} from '../../core/context';\n\nexport type Content = CSSValue[];\n\nexport const content: IPropertyListDescriptor = {\n name: 'content',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: (_context: Context, tokens: CSSValue[]) => {\n if (tokens.length === 0) {\n return [];\n }\n\n const first = tokens[0];\n\n if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {\n return [];\n }\n\n return tokens;\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isNumberToken, nonWhiteSpace} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\n\nexport interface COUNTER_INCREMENT {\n counter: string;\n increment: number;\n}\n\nexport type CounterIncrement = COUNTER_INCREMENT[] | null;\n\nexport const counterIncrement: IPropertyListDescriptor = {\n name: 'counter-increment',\n initialValue: 'none',\n prefix: true,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]) => {\n if (tokens.length === 0) {\n return null;\n }\n\n const first = tokens[0];\n\n if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {\n return null;\n }\n\n const increments = [];\n const filtered = tokens.filter(nonWhiteSpace);\n\n for (let i = 0; i < filtered.length; i++) {\n const counter = filtered[i];\n const next = filtered[i + 1];\n if (counter.type === TokenType.IDENT_TOKEN) {\n const increment = next && isNumberToken(next) ? next.number : 1;\n increments.push({counter: counter.value, increment});\n }\n }\n\n return increments;\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken, isNumberToken, nonWhiteSpace} from '../syntax/parser';\nimport {Context} from '../../core/context';\n\nexport interface COUNTER_RESET {\n counter: string;\n reset: number;\n}\n\nexport type CounterReset = COUNTER_RESET[];\n\nexport const counterReset: IPropertyListDescriptor = {\n name: 'counter-reset',\n initialValue: 'none',\n prefix: true,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]) => {\n if (tokens.length === 0) {\n return [];\n }\n\n const resets = [];\n const filtered = tokens.filter(nonWhiteSpace);\n\n for (let i = 0; i < filtered.length; i++) {\n const counter = filtered[i];\n const next = filtered[i + 1];\n if (isIdentToken(counter) && counter.value !== 'none') {\n const reset = next && isNumberToken(next) ? next.number : 0;\n resets.push({counter: counter.value, reset});\n }\n }\n\n return resets;\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nimport {CSSValue, isDimensionToken} from '../syntax/parser';\nimport {time} from '../types/time';\n\nexport const duration: IPropertyListDescriptor = {\n name: 'duration',\n initialValue: '0s',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (context: Context, tokens: CSSValue[]) => {\n return tokens.filter(isDimensionToken).map((token) => time.parse(context, token));\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isStringToken} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\n\nexport interface QUOTE {\n open: string;\n close: string;\n}\n\nexport type Quotes = QUOTE[] | null;\n\nexport const quotes: IPropertyListDescriptor = {\n name: 'quotes',\n initialValue: 'none',\n prefix: true,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]) => {\n if (tokens.length === 0) {\n return null;\n }\n\n const first = tokens[0];\n\n if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {\n return null;\n }\n\n const quotes = [];\n const filtered = tokens.filter(isStringToken);\n\n if (filtered.length % 2 !== 0) {\n return null;\n }\n\n for (let i = 0; i < filtered.length; i += 2) {\n const open = filtered[i].value;\n const close = filtered[i + 1].value;\n quotes.push({open, close});\n }\n\n return quotes;\n }\n};\n\nexport const getQuote = (quotes: Quotes, depth: number, open: boolean): string => {\n if (!quotes) {\n return '';\n }\n\n const quote = quotes[Math.min(depth, quotes.length - 1)];\n if (!quote) {\n return '';\n }\n\n return open ? quote.open : quote.close;\n};\n","import {PropertyDescriptorParsingType, IPropertyListDescriptor} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentWithValue, parseFunctionArgs} from '../syntax/parser';\nimport {ZERO_LENGTH} from '../types/length-percentage';\nimport {color, Color} from '../types/color';\nimport {isLength, Length} from '../types/length';\nimport {Context} from '../../core/context';\n\nexport type BoxShadow = BoxShadowItem[];\ninterface BoxShadowItem {\n inset: boolean;\n color: Color;\n offsetX: Length;\n offsetY: Length;\n blur: Length;\n spread: Length;\n}\n\nexport const boxShadow: IPropertyListDescriptor = {\n name: 'box-shadow',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: (context: Context, tokens: CSSValue[]): BoxShadow => {\n if (tokens.length === 1 && isIdentWithValue(tokens[0], 'none')) {\n return [];\n }\n\n return parseFunctionArgs(tokens).map((values: CSSValue[]) => {\n const shadow: BoxShadowItem = {\n color: 0x000000ff,\n offsetX: ZERO_LENGTH,\n offsetY: ZERO_LENGTH,\n blur: ZERO_LENGTH,\n spread: ZERO_LENGTH,\n inset: false\n };\n let c = 0;\n for (let i = 0; i < values.length; i++) {\n const token = values[i];\n if (isIdentWithValue(token, 'inset')) {\n shadow.inset = true;\n } else if (isLength(token)) {\n if (c === 0) {\n shadow.offsetX = token;\n } else if (c === 1) {\n shadow.offsetY = token;\n } else if (c === 2) {\n shadow.blur = token;\n } else {\n shadow.spread = token;\n }\n c++;\n } else {\n shadow.color = color.parse(context, token);\n }\n }\n return shadow;\n });\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const enum PAINT_ORDER_LAYER {\n FILL,\n STROKE,\n MARKERS\n}\n\nexport type PaintOrder = PAINT_ORDER_LAYER[];\n\nexport const paintOrder: IPropertyListDescriptor = {\n name: 'paint-order',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): PaintOrder => {\n const DEFAULT_VALUE = [PAINT_ORDER_LAYER.FILL, PAINT_ORDER_LAYER.STROKE, PAINT_ORDER_LAYER.MARKERS];\n const layers: PaintOrder = [];\n\n tokens.filter(isIdentToken).forEach((token) => {\n switch (token.value) {\n case 'stroke':\n layers.push(PAINT_ORDER_LAYER.STROKE);\n break;\n case 'fill':\n layers.push(PAINT_ORDER_LAYER.FILL);\n break;\n case 'markers':\n layers.push(PAINT_ORDER_LAYER.MARKERS);\n break;\n }\n });\n DEFAULT_VALUE.forEach((value) => {\n if (layers.indexOf(value) === -1) {\n layers.push(value);\n }\n });\n\n return layers;\n }\n};\n","import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nexport const webkitTextStrokeColor: IPropertyTypeValueDescriptor = {\n name: `-webkit-text-stroke-color`,\n initialValue: 'currentcolor',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'color'\n};\n","import {CSSValue, isDimensionToken} from '../syntax/parser';\nimport {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const webkitTextStrokeWidth: IPropertyValueDescriptor = {\n name: `-webkit-text-stroke-width`,\n initialValue: '0',\n type: PropertyDescriptorParsingType.VALUE,\n prefix: false,\n parse: (_context: Context, token: CSSValue): number => {\n if (isDimensionToken(token)) {\n return token.number;\n }\n return 0;\n }\n};\n","import {CSSPropertyDescriptor, PropertyDescriptorParsingType} from './IPropertyDescriptor';\nimport {backgroundClip} from './property-descriptors/background-clip';\nimport {backgroundColor} from './property-descriptors/background-color';\nimport {backgroundImage} from './property-descriptors/background-image';\nimport {backgroundOrigin} from './property-descriptors/background-origin';\nimport {backgroundPosition} from './property-descriptors/background-position';\nimport {backgroundRepeat} from './property-descriptors/background-repeat';\nimport {backgroundSize} from './property-descriptors/background-size';\nimport {\n borderBottomColor,\n borderLeftColor,\n borderRightColor,\n borderTopColor\n} from './property-descriptors/border-color';\nimport {\n borderBottomLeftRadius,\n borderBottomRightRadius,\n borderTopLeftRadius,\n borderTopRightRadius\n} from './property-descriptors/border-radius';\nimport {\n borderBottomStyle,\n borderLeftStyle,\n borderRightStyle,\n borderTopStyle\n} from './property-descriptors/border-style';\nimport {\n borderBottomWidth,\n borderLeftWidth,\n borderRightWidth,\n borderTopWidth\n} from './property-descriptors/border-width';\nimport {color} from './property-descriptors/color';\nimport {direction} from './property-descriptors/direction';\nimport {display, DISPLAY} from './property-descriptors/display';\nimport {float, FLOAT} from './property-descriptors/float';\nimport {letterSpacing} from './property-descriptors/letter-spacing';\nimport {lineBreak} from './property-descriptors/line-break';\nimport {lineHeight} from './property-descriptors/line-height';\nimport {listStyleImage} from './property-descriptors/list-style-image';\nimport {listStylePosition} from './property-descriptors/list-style-position';\nimport {listStyleType} from './property-descriptors/list-style-type';\nimport {marginBottom, marginLeft, marginRight, marginTop} from './property-descriptors/margin';\nimport {overflow, OVERFLOW} from './property-descriptors/overflow';\nimport {overflowWrap} from './property-descriptors/overflow-wrap';\nimport {paddingBottom, paddingLeft, paddingRight, paddingTop} from './property-descriptors/padding';\nimport {textAlign} from './property-descriptors/text-align';\nimport {position, POSITION} from './property-descriptors/position';\nimport {textShadow} from './property-descriptors/text-shadow';\nimport {textTransform} from './property-descriptors/text-transform';\nimport {transform} from './property-descriptors/transform';\nimport {transformOrigin} from './property-descriptors/transform-origin';\nimport {visibility, VISIBILITY} from './property-descriptors/visibility';\nimport {wordBreak} from './property-descriptors/word-break';\nimport {zIndex} from './property-descriptors/z-index';\nimport {CSSValue, isIdentToken, Parser} from './syntax/parser';\nimport {Tokenizer} from './syntax/tokenizer';\nimport {Color, color as colorType, isTransparent} from './types/color';\nimport {angle} from './types/angle';\nimport {image} from './types/image';\nimport {time} from './types/time';\nimport {opacity} from './property-descriptors/opacity';\nimport {textDecorationColor} from './property-descriptors/text-decoration-color';\nimport {textDecorationLine} from './property-descriptors/text-decoration-line';\nimport {isLengthPercentage, LengthPercentage, ZERO_LENGTH} from './types/length-percentage';\nimport {fontFamily} from './property-descriptors/font-family';\nimport {fontSize} from './property-descriptors/font-size';\nimport {isLength} from './types/length';\nimport {fontWeight} from './property-descriptors/font-weight';\nimport {fontVariant} from './property-descriptors/font-variant';\nimport {fontStyle} from './property-descriptors/font-style';\nimport {contains} from '../core/bitwise';\nimport {content} from './property-descriptors/content';\nimport {counterIncrement} from './property-descriptors/counter-increment';\nimport {counterReset} from './property-descriptors/counter-reset';\nimport {duration} from './property-descriptors/duration';\nimport {quotes} from './property-descriptors/quotes';\nimport {boxShadow} from './property-descriptors/box-shadow';\nimport {paintOrder} from './property-descriptors/paint-order';\nimport {webkitTextStrokeColor} from './property-descriptors/webkit-text-stroke-color';\nimport {webkitTextStrokeWidth} from './property-descriptors/webkit-text-stroke-width';\nimport {Context} from '../core/context';\n\nexport class CSSParsedDeclaration {\n animationDuration: ReturnType;\n backgroundClip: ReturnType;\n backgroundColor: Color;\n backgroundImage: ReturnType;\n backgroundOrigin: ReturnType;\n backgroundPosition: ReturnType;\n backgroundRepeat: ReturnType;\n backgroundSize: ReturnType;\n borderTopColor: Color;\n borderRightColor: Color;\n borderBottomColor: Color;\n borderLeftColor: Color;\n borderTopLeftRadius: ReturnType;\n borderTopRightRadius: ReturnType;\n borderBottomRightRadius: ReturnType;\n borderBottomLeftRadius: ReturnType;\n borderTopStyle: ReturnType;\n borderRightStyle: ReturnType;\n borderBottomStyle: ReturnType;\n borderLeftStyle: ReturnType;\n borderTopWidth: ReturnType;\n borderRightWidth: ReturnType;\n borderBottomWidth: ReturnType;\n borderLeftWidth: ReturnType;\n boxShadow: ReturnType;\n color: Color;\n direction: ReturnType;\n display: ReturnType;\n float: ReturnType;\n fontFamily: ReturnType;\n fontSize: LengthPercentage;\n fontStyle: ReturnType;\n fontVariant: ReturnType;\n fontWeight: ReturnType;\n letterSpacing: ReturnType;\n lineBreak: ReturnType;\n lineHeight: CSSValue;\n listStyleImage: ReturnType;\n listStylePosition: ReturnType;\n listStyleType: ReturnType;\n marginTop: CSSValue;\n marginRight: CSSValue;\n marginBottom: CSSValue;\n marginLeft: CSSValue;\n opacity: ReturnType;\n overflowX: OVERFLOW;\n overflowY: OVERFLOW;\n overflowWrap: ReturnType;\n paddingTop: LengthPercentage;\n paddingRight: LengthPercentage;\n paddingBottom: LengthPercentage;\n paddingLeft: LengthPercentage;\n paintOrder: ReturnType;\n position: ReturnType;\n textAlign: ReturnType;\n textDecorationColor: Color;\n textDecorationLine: ReturnType;\n textShadow: ReturnType;\n textTransform: ReturnType;\n transform: ReturnType;\n transformOrigin: ReturnType;\n visibility: ReturnType;\n webkitTextStrokeColor: Color;\n webkitTextStrokeWidth: ReturnType;\n wordBreak: ReturnType;\n zIndex: ReturnType;\n\n constructor(context: Context, declaration: CSSStyleDeclaration) {\n this.animationDuration = parse(context, duration, declaration.animationDuration);\n this.backgroundClip = parse(context, backgroundClip, declaration.backgroundClip);\n this.backgroundColor = parse(context, backgroundColor, declaration.backgroundColor);\n this.backgroundImage = parse(context, backgroundImage, declaration.backgroundImage);\n this.backgroundOrigin = parse(context, backgroundOrigin, declaration.backgroundOrigin);\n this.backgroundPosition = parse(context, backgroundPosition, declaration.backgroundPosition);\n this.backgroundRepeat = parse(context, backgroundRepeat, declaration.backgroundRepeat);\n this.backgroundSize = parse(context, backgroundSize, declaration.backgroundSize);\n this.borderTopColor = parse(context, borderTopColor, declaration.borderTopColor);\n this.borderRightColor = parse(context, borderRightColor, declaration.borderRightColor);\n this.borderBottomColor = parse(context, borderBottomColor, declaration.borderBottomColor);\n this.borderLeftColor = parse(context, borderLeftColor, declaration.borderLeftColor);\n this.borderTopLeftRadius = parse(context, borderTopLeftRadius, declaration.borderTopLeftRadius);\n this.borderTopRightRadius = parse(context, borderTopRightRadius, declaration.borderTopRightRadius);\n this.borderBottomRightRadius = parse(context, borderBottomRightRadius, declaration.borderBottomRightRadius);\n this.borderBottomLeftRadius = parse(context, borderBottomLeftRadius, declaration.borderBottomLeftRadius);\n this.borderTopStyle = parse(context, borderTopStyle, declaration.borderTopStyle);\n this.borderRightStyle = parse(context, borderRightStyle, declaration.borderRightStyle);\n this.borderBottomStyle = parse(context, borderBottomStyle, declaration.borderBottomStyle);\n this.borderLeftStyle = parse(context, borderLeftStyle, declaration.borderLeftStyle);\n this.borderTopWidth = parse(context, borderTopWidth, declaration.borderTopWidth);\n this.borderRightWidth = parse(context, borderRightWidth, declaration.borderRightWidth);\n this.borderBottomWidth = parse(context, borderBottomWidth, declaration.borderBottomWidth);\n this.borderLeftWidth = parse(context, borderLeftWidth, declaration.borderLeftWidth);\n this.boxShadow = parse(context, boxShadow, declaration.boxShadow);\n this.color = parse(context, color, declaration.color);\n this.direction = parse(context, direction, declaration.direction);\n this.display = parse(context, display, declaration.display);\n this.float = parse(context, float, declaration.cssFloat);\n this.fontFamily = parse(context, fontFamily, declaration.fontFamily);\n this.fontSize = parse(context, fontSize, declaration.fontSize);\n this.fontStyle = parse(context, fontStyle, declaration.fontStyle);\n this.fontVariant = parse(context, fontVariant, declaration.fontVariant);\n this.fontWeight = parse(context, fontWeight, declaration.fontWeight);\n this.letterSpacing = parse(context, letterSpacing, declaration.letterSpacing);\n this.lineBreak = parse(context, lineBreak, declaration.lineBreak);\n this.lineHeight = parse(context, lineHeight, declaration.lineHeight);\n this.listStyleImage = parse(context, listStyleImage, declaration.listStyleImage);\n this.listStylePosition = parse(context, listStylePosition, declaration.listStylePosition);\n this.listStyleType = parse(context, listStyleType, declaration.listStyleType);\n this.marginTop = parse(context, marginTop, declaration.marginTop);\n this.marginRight = parse(context, marginRight, declaration.marginRight);\n this.marginBottom = parse(context, marginBottom, declaration.marginBottom);\n this.marginLeft = parse(context, marginLeft, declaration.marginLeft);\n this.opacity = parse(context, opacity, declaration.opacity);\n const overflowTuple = parse(context, overflow, declaration.overflow);\n this.overflowX = overflowTuple[0];\n this.overflowY = overflowTuple[overflowTuple.length > 1 ? 1 : 0];\n this.overflowWrap = parse(context, overflowWrap, declaration.overflowWrap);\n this.paddingTop = parse(context, paddingTop, declaration.paddingTop);\n this.paddingRight = parse(context, paddingRight, declaration.paddingRight);\n this.paddingBottom = parse(context, paddingBottom, declaration.paddingBottom);\n this.paddingLeft = parse(context, paddingLeft, declaration.paddingLeft);\n this.paintOrder = parse(context, paintOrder, declaration.paintOrder);\n this.position = parse(context, position, declaration.position);\n this.textAlign = parse(context, textAlign, declaration.textAlign);\n this.textDecorationColor = parse(\n context,\n textDecorationColor,\n declaration.textDecorationColor ?? declaration.color\n );\n this.textDecorationLine = parse(\n context,\n textDecorationLine,\n declaration.textDecorationLine ?? declaration.textDecoration\n );\n this.textShadow = parse(context, textShadow, declaration.textShadow);\n this.textTransform = parse(context, textTransform, declaration.textTransform);\n this.transform = parse(context, transform, declaration.transform);\n this.transformOrigin = parse(context, transformOrigin, declaration.transformOrigin);\n this.visibility = parse(context, visibility, declaration.visibility);\n this.webkitTextStrokeColor = parse(context, webkitTextStrokeColor, declaration.webkitTextStrokeColor);\n this.webkitTextStrokeWidth = parse(context, webkitTextStrokeWidth, declaration.webkitTextStrokeWidth);\n this.wordBreak = parse(context, wordBreak, declaration.wordBreak);\n this.zIndex = parse(context, zIndex, declaration.zIndex);\n }\n\n isVisible(): boolean {\n return this.display > 0 && this.opacity > 0 && this.visibility === VISIBILITY.VISIBLE;\n }\n\n isTransparent(): boolean {\n return isTransparent(this.backgroundColor);\n }\n\n isTransformed(): boolean {\n return this.transform !== null;\n }\n\n isPositioned(): boolean {\n return this.position !== POSITION.STATIC;\n }\n\n isPositionedWithZIndex(): boolean {\n return this.isPositioned() && !this.zIndex.auto;\n }\n\n isFloating(): boolean {\n return this.float !== FLOAT.NONE;\n }\n\n isInlineLevel(): boolean {\n return (\n contains(this.display, DISPLAY.INLINE) ||\n contains(this.display, DISPLAY.INLINE_BLOCK) ||\n contains(this.display, DISPLAY.INLINE_FLEX) ||\n contains(this.display, DISPLAY.INLINE_GRID) ||\n contains(this.display, DISPLAY.INLINE_LIST_ITEM) ||\n contains(this.display, DISPLAY.INLINE_TABLE)\n );\n }\n}\n\nexport class CSSParsedPseudoDeclaration {\n content: ReturnType;\n quotes: ReturnType;\n\n constructor(context: Context, declaration: CSSStyleDeclaration) {\n this.content = parse(context, content, declaration.content);\n this.quotes = parse(context, quotes, declaration.quotes);\n }\n}\n\nexport class CSSParsedCounterDeclaration {\n counterIncrement: ReturnType;\n counterReset: ReturnType;\n\n constructor(context: Context, declaration: CSSStyleDeclaration) {\n this.counterIncrement = parse(context, counterIncrement, declaration.counterIncrement);\n this.counterReset = parse(context, counterReset, declaration.counterReset);\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst parse = (context: Context, descriptor: CSSPropertyDescriptor, style?: string | null) => {\n const tokenizer = new Tokenizer();\n const value = style !== null && typeof style !== 'undefined' ? style.toString() : descriptor.initialValue;\n tokenizer.write(value);\n const parser = new Parser(tokenizer.read());\n switch (descriptor.type) {\n case PropertyDescriptorParsingType.IDENT_VALUE:\n const token = parser.parseComponentValue();\n return descriptor.parse(context, isIdentToken(token) ? token.value : descriptor.initialValue);\n case PropertyDescriptorParsingType.VALUE:\n return descriptor.parse(context, parser.parseComponentValue());\n case PropertyDescriptorParsingType.LIST:\n return descriptor.parse(context, parser.parseComponentValues());\n case PropertyDescriptorParsingType.TOKEN_VALUE:\n return parser.parseComponentValue();\n case PropertyDescriptorParsingType.TYPE_VALUE:\n switch (descriptor.format) {\n case 'angle':\n return angle.parse(context, parser.parseComponentValue());\n case 'color':\n return colorType.parse(context, parser.parseComponentValue());\n case 'image':\n return image.parse(context, parser.parseComponentValue());\n case 'length':\n const length = parser.parseComponentValue();\n return isLength(length) ? length : ZERO_LENGTH;\n case 'length-percentage':\n const value = parser.parseComponentValue();\n return isLengthPercentage(value) ? value : ZERO_LENGTH;\n case 'time':\n return time.parse(context, parser.parseComponentValue());\n }\n break;\n }\n};\n","const elementDebuggerAttribute = 'data-html2canvas-debug';\nexport const enum DebuggerType {\n NONE,\n ALL,\n CLONE,\n PARSE,\n RENDER\n}\n\nconst getElementDebugType = (element: Element): DebuggerType => {\n const attribute = element.getAttribute(elementDebuggerAttribute);\n switch (attribute) {\n case 'all':\n return DebuggerType.ALL;\n case 'clone':\n return DebuggerType.CLONE;\n case 'parse':\n return DebuggerType.PARSE;\n case 'render':\n return DebuggerType.RENDER;\n default:\n return DebuggerType.NONE;\n }\n};\n\nexport const isDebugging = (element: Element, type: Omit): boolean => {\n const elementType = getElementDebugType(element);\n return elementType === DebuggerType.ALL || type === elementType;\n};\n","import {CSSParsedDeclaration} from '../css/index';\nimport {TextContainer} from './text-container';\nimport {Bounds, parseBounds} from '../css/layout/bounds';\nimport {isHTMLElementNode} from './node-parser';\nimport {Context} from '../core/context';\nimport {DebuggerType, isDebugging} from '../core/debugger';\n\nexport const enum FLAGS {\n CREATES_STACKING_CONTEXT = 1 << 1,\n CREATES_REAL_STACKING_CONTEXT = 1 << 2,\n IS_LIST_OWNER = 1 << 3,\n DEBUG_RENDER = 1 << 4\n}\n\nexport class ElementContainer {\n readonly styles: CSSParsedDeclaration;\n readonly textNodes: TextContainer[] = [];\n readonly elements: ElementContainer[] = [];\n bounds: Bounds;\n flags = 0;\n\n constructor(protected readonly context: Context, element: Element) {\n if (isDebugging(element, DebuggerType.PARSE)) {\n debugger;\n }\n\n this.styles = new CSSParsedDeclaration(context, window.getComputedStyle(element, null));\n\n if (isHTMLElementNode(element)) {\n if (this.styles.animationDuration.some((duration) => duration > 0)) {\n element.style.animationDuration = '0s';\n }\n\n if (this.styles.transform !== null) {\n // getBoundingClientRect takes transforms into account\n element.style.transform = 'none';\n }\n }\n\n this.bounds = parseBounds(this.context, element);\n\n if (isDebugging(element, DebuggerType.RENDER)) {\n this.flags |= FLAGS.DEBUG_RENDER;\n }\n }\n}\n","const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const encode = (arraybuffer: ArrayBuffer): string => {\n let bytes = new Uint8Array(arraybuffer),\n i,\n len = bytes.length,\n base64 = '';\n\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n\n return base64;\n};\n\nexport const decode = (base64: string): ArrayBuffer => {\n let bufferLength = base64.length * 0.75,\n len = base64.length,\n i,\n p = 0,\n encoded1,\n encoded2,\n encoded3,\n encoded4;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n const arraybuffer = new ArrayBuffer(bufferLength),\n bytes = new Uint8Array(arraybuffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return arraybuffer;\n};\n","import {decode, polyUint16Array, polyUint32Array} from './Util';\n\nexport type int = number;\n\n/** Shift size for getting the index-2 table offset. */\nexport const UTRIE2_SHIFT_2 = 5;\n\n/** Shift size for getting the index-1 table offset. */\nexport const UTRIE2_SHIFT_1 = 6 + 5;\n\n/**\n * Shift size for shifting left the index array values.\n * Increases possible data size with 16-bit index values at the cost\n * of compactability.\n * This requires data blocks to be aligned by UTRIE2_DATA_GRANULARITY.\n */\nexport const UTRIE2_INDEX_SHIFT = 2;\n\n/**\n * Difference between the two shift sizes,\n * for getting an index-1 offset from an index-2 offset. 6=11-5\n */\nexport const UTRIE2_SHIFT_1_2 = UTRIE2_SHIFT_1 - UTRIE2_SHIFT_2;\n\n/**\n * The part of the index-2 table for U+D800..U+DBFF stores values for\n * lead surrogate code _units_ not code _points_.\n * Values for lead surrogate code _points_ are indexed with this portion of the table.\n * Length=32=0x20=0x400>>UTRIE2_SHIFT_2. (There are 1024=0x400 lead surrogates.)\n */\nexport const UTRIE2_LSCP_INDEX_2_OFFSET = 0x10000 >> UTRIE2_SHIFT_2;\n\n/** Number of entries in a data block. 32=0x20 */\nexport const UTRIE2_DATA_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_2;\n/** Mask for getting the lower bits for the in-data-block offset. */\nexport const UTRIE2_DATA_MASK = UTRIE2_DATA_BLOCK_LENGTH - 1;\n\nexport const UTRIE2_LSCP_INDEX_2_LENGTH = 0x400 >> UTRIE2_SHIFT_2;\n/** Count the lengths of both BMP pieces. 2080=0x820 */\nexport const UTRIE2_INDEX_2_BMP_LENGTH = UTRIE2_LSCP_INDEX_2_OFFSET + UTRIE2_LSCP_INDEX_2_LENGTH;\n/**\n * The 2-byte UTF-8 version of the index-2 table follows at offset 2080=0x820.\n * Length 32=0x20 for lead bytes C0..DF, regardless of UTRIE2_SHIFT_2.\n */\nexport const UTRIE2_UTF8_2B_INDEX_2_OFFSET = UTRIE2_INDEX_2_BMP_LENGTH;\nexport const UTRIE2_UTF8_2B_INDEX_2_LENGTH = 0x800 >> 6; /* U+0800 is the first code point after 2-byte UTF-8 */\n/**\n * The index-1 table, only used for supplementary code points, at offset 2112=0x840.\n * Variable length, for code points up to highStart, where the last single-value range starts.\n * Maximum length 512=0x200=0x100000>>UTRIE2_SHIFT_1.\n * (For 0x100000 supplementary code points U+10000..U+10ffff.)\n *\n * The part of the index-2 table for supplementary code points starts\n * after this index-1 table.\n *\n * Both the index-1 table and the following part of the index-2 table\n * are omitted completely if there is only BMP data.\n */\nexport const UTRIE2_INDEX_1_OFFSET = UTRIE2_UTF8_2B_INDEX_2_OFFSET + UTRIE2_UTF8_2B_INDEX_2_LENGTH;\n\n/**\n * Number of index-1 entries for the BMP. 32=0x20\n * This part of the index-1 table is omitted from the serialized form.\n */\nexport const UTRIE2_OMITTED_BMP_INDEX_1_LENGTH = 0x10000 >> UTRIE2_SHIFT_1;\n\n/** Number of entries in an index-2 block. 64=0x40 */\nexport const UTRIE2_INDEX_2_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_1_2;\n/** Mask for getting the lower bits for the in-index-2-block offset. */\nexport const UTRIE2_INDEX_2_MASK = UTRIE2_INDEX_2_BLOCK_LENGTH - 1;\n\nconst slice16 = (view: number[] | Uint16Array, start: number, end?: number) => {\n if (view.slice) {\n return view.slice(start, end);\n }\n\n return new Uint16Array(Array.prototype.slice.call(view, start, end));\n};\n\nconst slice32 = (view: number[] | Uint32Array, start: number, end?: number) => {\n if (view.slice) {\n return view.slice(start, end);\n }\n\n return new Uint32Array(Array.prototype.slice.call(view, start, end));\n};\n\nexport const createTrieFromBase64 = (base64: string, _byteLength: number): Trie => {\n const buffer = decode(base64);\n const view32 = Array.isArray(buffer) ? polyUint32Array(buffer) : new Uint32Array(buffer);\n const view16 = Array.isArray(buffer) ? polyUint16Array(buffer) : new Uint16Array(buffer);\n const headerLength = 24;\n\n const index = slice16(view16, headerLength / 2, view32[4] / 2);\n const data =\n view32[5] === 2\n ? slice16(view16, (headerLength + view32[4]) / 2)\n : slice32(view32, Math.ceil((headerLength + view32[4]) / 4));\n\n return new Trie(view32[0], view32[1], view32[2], view32[3], index, data);\n};\n\nexport class Trie {\n initialValue: int;\n errorValue: int;\n highStart: int;\n highValueIndex: int;\n index: Uint16Array | number[];\n data: Uint32Array | Uint16Array | number[];\n\n constructor(\n initialValue: int,\n errorValue: int,\n highStart: int,\n highValueIndex: int,\n index: Uint16Array | number[],\n data: Uint32Array | Uint16Array | number[]\n ) {\n this.initialValue = initialValue;\n this.errorValue = errorValue;\n this.highStart = highStart;\n this.highValueIndex = highValueIndex;\n this.index = index;\n this.data = data;\n }\n\n /**\n * Get the value for a code point as stored in the Trie.\n *\n * @param codePoint the code point\n * @return the value\n */\n get(codePoint: number): number {\n let ix;\n if (codePoint >= 0) {\n if (codePoint < 0x0d800 || (codePoint > 0x0dbff && codePoint <= 0x0ffff)) {\n // Ordinary BMP code point, excluding leading surrogates.\n // BMP uses a single level lookup. BMP index starts at offset 0 in the Trie2 index.\n // 16 bit data is stored in the index array itself.\n ix = this.index[codePoint >> UTRIE2_SHIFT_2];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n\n if (codePoint <= 0xffff) {\n // Lead Surrogate Code Point. A Separate index section is stored for\n // lead surrogate code units and code points.\n // The main index has the code unit data.\n // For this function, we need the code point data.\n // Note: this expression could be refactored for slightly improved efficiency, but\n // surrogate code points will be so rare in practice that it's not worth it.\n ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET + ((codePoint - 0xd800) >> UTRIE2_SHIFT_2)];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n\n if (codePoint < this.highStart) {\n // Supplemental code point, use two-level lookup.\n ix = UTRIE2_INDEX_1_OFFSET - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH + (codePoint >> UTRIE2_SHIFT_1);\n ix = this.index[ix];\n ix += (codePoint >> UTRIE2_SHIFT_2) & UTRIE2_INDEX_2_MASK;\n ix = this.index[ix];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n if (codePoint <= 0x10ffff) {\n return this.data[this.highValueIndex];\n }\n }\n\n // Fall through. The code point is outside of the legal range of 0..0x10ffff.\n return this.errorValue;\n }\n}\n","import {base64, byteLength} from './grapheme-break-trie';\nimport {createTrieFromBase64} from 'utrie';\n\nconst Other = 0;\nconst Prepend = 1;\nconst CR = 2;\nconst LF = 3;\nconst Control = 4;\nconst Extend = 5;\nconst Regional_Indicator = 6;\nconst SpacingMark = 7;\nconst L = 8;\nconst V = 9;\nconst T = 10;\nconst LV = 11;\nconst LVT = 12;\nconst ZWJ = 13;\nconst Extended_Pictographic = 14;\nconst RI = 15;\n\nexport const classes: {[key: string]: number} = {\n Other,\n Prepend,\n CR,\n LF,\n Control,\n Extend,\n Regional_Indicator,\n SpacingMark,\n L,\n V,\n T,\n LV,\n LVT,\n ZWJ,\n Extended_Pictographic,\n RI,\n};\n\nexport const toCodePoints = (str: string): number[] => {\n const codePoints = [];\n let i = 0;\n const length = str.length;\n while (i < length) {\n const value = str.charCodeAt(i++);\n if (value >= 0xd800 && value <= 0xdbff && i < length) {\n const extra = str.charCodeAt(i++);\n if ((extra & 0xfc00) === 0xdc00) {\n codePoints.push(((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000);\n } else {\n codePoints.push(value);\n i--;\n }\n } else {\n codePoints.push(value);\n }\n }\n return codePoints;\n};\n\nexport const fromCodePoint = (...codePoints: number[]): string => {\n if (String.fromCodePoint) {\n return String.fromCodePoint(...codePoints);\n }\n\n const length = codePoints.length;\n if (!length) {\n return '';\n }\n\n const codeUnits = [];\n\n let index = -1;\n let result = '';\n while (++index < length) {\n let codePoint = codePoints[index];\n if (codePoint <= 0xffff) {\n codeUnits.push(codePoint);\n } else {\n codePoint -= 0x10000;\n codeUnits.push((codePoint >> 10) + 0xd800, (codePoint % 0x400) + 0xdc00);\n }\n if (index + 1 === length || codeUnits.length > 0x4000) {\n result += String.fromCharCode(...codeUnits);\n codeUnits.length = 0;\n }\n }\n return result;\n};\n\nexport const UnicodeTrie = createTrieFromBase64(base64, byteLength);\n\nexport const BREAK_NOT_ALLOWED = '×';\nexport const BREAK_ALLOWED = '÷';\n\nexport type BREAK_OPPORTUNITIES = typeof BREAK_NOT_ALLOWED | typeof BREAK_ALLOWED;\n\nexport const codePointToClass = (codePoint: number): number => UnicodeTrie.get(codePoint);\n\nconst _graphemeBreakAtIndex = (_codePoints: number[], classTypes: number[], index: number): BREAK_OPPORTUNITIES => {\n let prevIndex = index - 2;\n let prev = classTypes[prevIndex];\n const current = classTypes[index - 1];\n const next = classTypes[index];\n // GB3 Do not break between a CR and LF\n if (current === CR && next === LF) {\n return BREAK_NOT_ALLOWED;\n }\n\n // GB4 Otherwise, break before and after controls.\n if (current === CR || current === LF || current === Control) {\n return BREAK_ALLOWED;\n }\n\n // GB5\n if (next === CR || next === LF || next === Control) {\n return BREAK_ALLOWED;\n }\n\n // Do not break Hangul syllable sequences.\n // GB6\n if (current === L && [L, V, LV, LVT].indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // GB7\n if ((current === LV || current === V) && (next === V || next === T)) {\n return BREAK_NOT_ALLOWED;\n }\n\n // GB8\n if ((current === LVT || current === T) && next === T) {\n return BREAK_NOT_ALLOWED;\n }\n\n // GB9 Do not break before extending characters or ZWJ.\n if (next === ZWJ || next === Extend) {\n return BREAK_NOT_ALLOWED;\n }\n // Do not break before SpacingMarks, or after Prepend characters.\n // GB9a\n if (next === SpacingMark) {\n return BREAK_NOT_ALLOWED;\n }\n\n // GB9a\n if (current === Prepend) {\n return BREAK_NOT_ALLOWED;\n }\n\n // GB11 Do not break within emoji modifier sequences or emoji zwj sequences.\n if (current === ZWJ && next === Extended_Pictographic) {\n while (prev === Extend) {\n prev = classTypes[--prevIndex];\n }\n if (prev === Extended_Pictographic) {\n return BREAK_NOT_ALLOWED;\n }\n }\n\n // GB12 Do not break within emoji flag sequences.\n // That is, do not break between regional indicator (RI) symbols\n // if there is an odd number of RI characters before the break point.\n if (current === RI && next === RI) {\n let countRI = 0;\n while (prev === RI) {\n countRI++;\n prev = classTypes[--prevIndex];\n }\n if (countRI % 2 === 0) {\n return BREAK_NOT_ALLOWED;\n }\n }\n\n return BREAK_ALLOWED;\n};\n\nexport const graphemeBreakAtIndex = (codePoints: number[], index: number): BREAK_OPPORTUNITIES => {\n // GB1 Break at the start and end of text, unless the text is empty.\n if (index === 0) {\n return BREAK_ALLOWED;\n }\n\n // GB2\n if (index >= codePoints.length) {\n return BREAK_ALLOWED;\n }\n\n const classTypes = codePoints.map(codePointToClass);\n return _graphemeBreakAtIndex(codePoints, classTypes, index);\n};\n\nexport const GraphemeBreaker = (str: string) => {\n const codePoints = toCodePoints(str);\n const length = codePoints.length;\n let index = 0;\n let lastEnd = 0;\n const classTypes = codePoints.map(codePointToClass);\n\n return {\n next: () => {\n if (index >= length) {\n return {done: true, value: null};\n }\n\n let graphemeBreak = BREAK_NOT_ALLOWED;\n while (\n index < length &&\n (graphemeBreak = _graphemeBreakAtIndex(codePoints, classTypes, ++index)) === BREAK_NOT_ALLOWED\n ) {}\n\n if (graphemeBreak !== BREAK_NOT_ALLOWED || index === length) {\n const value = fromCodePoint.apply(null, codePoints.slice(lastEnd, index));\n lastEnd = index;\n return {value, done: false};\n }\n\n return {done: true, value: null};\n while (index < length) {}\n\n return {done: true, value: null};\n },\n };\n};\n\nexport const splitGraphemes = (str: string): string[] => {\n const breaker = GraphemeBreaker(str);\n\n const graphemes = [];\n let bk;\n\n while (!(bk = breaker.next()).done) {\n if (bk.value) {\n graphemes.push(bk.value.slice());\n }\n }\n\n return graphemes;\n};\n","import {Bounds} from '../css/layout/bounds';\nimport {\n isBodyElement,\n isCanvasElement,\n isCustomElement,\n isElementNode,\n isHTMLElementNode,\n isIFrameElement,\n isImageElement,\n isScriptElement,\n isSelectElement,\n isSlotElement,\n isStyleElement,\n isSVGElementNode,\n isTextareaElement,\n isTextNode,\n isVideoElement\n} from './node-parser';\nimport {isIdentToken, nonFunctionArgSeparator} from '../css/syntax/parser';\nimport {TokenType} from '../css/syntax/tokenizer';\nimport {CounterState, createCounterText} from '../css/types/functions/counter';\nimport {LIST_STYLE_TYPE, listStyleType} from '../css/property-descriptors/list-style-type';\nimport {CSSParsedCounterDeclaration, CSSParsedPseudoDeclaration} from '../css/index';\nimport {getQuote} from '../css/property-descriptors/quotes';\nimport {Context} from '../core/context';\nimport {DebuggerType, isDebugging} from '../core/debugger';\n\nexport interface CloneOptions {\n ignoreElements?: (element: Element) => boolean;\n onclone?: (document: Document, element: HTMLElement) => void;\n allowTaint?: boolean;\n}\n\nexport interface WindowOptions {\n scrollX: number;\n scrollY: number;\n windowWidth: number;\n windowHeight: number;\n}\n\nexport type CloneConfigurations = CloneOptions & {\n inlineImages: boolean;\n copyStyles: boolean;\n};\n\nconst IGNORE_ATTRIBUTE = 'data-html2canvas-ignore';\n\nexport class DocumentCloner {\n private readonly scrolledElements: [Element, number, number][];\n private readonly referenceElement: HTMLElement;\n clonedReferenceElement?: HTMLElement;\n private readonly documentElement: HTMLElement;\n private readonly counters: CounterState;\n private quoteDepth: number;\n\n constructor(\n private readonly context: Context,\n element: HTMLElement,\n private readonly options: CloneConfigurations\n ) {\n this.scrolledElements = [];\n this.referenceElement = element;\n this.counters = new CounterState();\n this.quoteDepth = 0;\n if (!element.ownerDocument) {\n throw new Error('Cloned element does not have an owner document');\n }\n\n this.documentElement = this.cloneNode(element.ownerDocument.documentElement, false) as HTMLElement;\n }\n\n toIFrame(ownerDocument: Document, windowSize: Bounds): Promise {\n const iframe: HTMLIFrameElement = createIFrameContainer(ownerDocument, windowSize);\n\n if (!iframe.contentWindow) {\n return Promise.reject(`Unable to find iframe window`);\n }\n\n const scrollX = (ownerDocument.defaultView as Window).pageXOffset;\n const scrollY = (ownerDocument.defaultView as Window).pageYOffset;\n\n const cloneWindow = iframe.contentWindow;\n const documentClone: Document = cloneWindow.document;\n\n /* Chrome doesn't detect relative background-images assigned in inline