{"version":3,"file":"mass-tools.js","sources":["../node_modules/is-any-array/lib-esm/index.js","../node_modules/ml-spectra-processing/lib-esm/reim/reimAbsolute.js","../node_modules/ml-spectra-processing/lib-esm/x/getOutputArray.js","../node_modules/ml-spectra-processing/lib-esm/x/xAbsolute.js","../node_modules/ml-spectra-processing/lib-esm/x/xMedian.js","../node_modules/ml-spectra-processing/lib-esm/x/xAbsoluteMedian.js","../node_modules/ml-spectra-processing/lib-esm/x/xCheck.js","../node_modules/ml-spectra-processing/lib-esm/x/xFindClosestIndex.js","../node_modules/ml-spectra-processing/lib-esm/x/xGetFromToIndex.js","../node_modules/ml-spectra-processing/lib-esm/x/xAbsoluteSum.js","../node_modules/ml-spectra-processing/lib-esm/x/xAdd.js","../node_modules/ml-spectra-processing/lib-esm/x/xApplyFunctionStr.js","../node_modules/ml-spectra-processing/lib-esm/x/xMultiply.js","../node_modules/ml-spectra-processing/lib-esm/x/xDotProduct.js","../node_modules/ml-spectra-processing/lib-esm/x/xCrossCorrelation.js","../node_modules/ml-spectra-processing/lib-esm/x/xAutoCorrelation.js","../node_modules/ml-spectra-processing/lib-esm/x/xBoxPlot.js","../node_modules/ml-spectra-processing/lib-esm/x/xBoxPlotWithOutliers.js","../node_modules/ml-spectra-processing/lib-esm/x/xCheckLengths.js","../node_modules/ml-spectra-processing/lib-esm/x/xCorrelation.js","../node_modules/ml-array-max/lib-es6/index.js","../node_modules/ml-array-min/lib-es6/index.js","../node_modules/ml-array-rescale/lib-es6/index.js","../node_modules/ml-matrix/matrix.js","../node_modules/ml-matrix/matrix.mjs","../node_modules/ml-spectra-processing/lib-esm/x/xCostMatrix.js","../node_modules/ml-spectra-processing/lib-esm/x/xCumulative.js","../node_modules/ml-spectra-processing/lib-esm/x/xMean.js","../node_modules/ml-spectra-processing/lib-esm/x/xVariance.js","../node_modules/ml-spectra-processing/lib-esm/x/xStandardDeviation.js","../node_modules/ml-spectra-processing/lib-esm/x/xDistributionStats.js","../node_modules/ml-spectra-processing/lib-esm/x/xDivide.js","../node_modules/ml-spectra-processing/lib-esm/x/xEnsureFloat64.js","../node_modules/ml-spectra-processing/lib-esm/x/xGetTargetIndex.js","../node_modules/fft.js/lib/fft.js","../node_modules/ml-spectra-processing/lib-esm/utils/createArray.js","../node_modules/ml-spectra-processing/lib-esm/utils/createFromToArray.js","../node_modules/ml-xsadd/lib-esm/XSadd.js","../node_modules/ml-spectra-processing/lib-esm/utils/createRandomArray.js","../node_modules/ml-spectra-processing/lib-esm/utils/createStepArray.js","../node_modules/ml-spectra-processing/lib-esm/utils/getRescaler.js","../node_modules/ml-spectra-processing/lib-esm/utils/isPowerOfTwo.js","../node_modules/ml-spectra-processing/lib-esm/utils/nextPowerOfTwo.js","../node_modules/ml-spectra-processing/lib-esm/utils/recursiveResolve.js","../node_modules/ml-spectra-processing/lib-esm/utils/recursiveUntypeArrays.js","../node_modules/ml-spectra-processing/lib-esm/utils/stringify.js","../node_modules/ml-spectra-processing/lib-esm/x/xSubtract.js","../node_modules/ml-spectra-processing/lib-esm/utils/calculateAdaptiveWeights.js","../node_modules/ml-spectra-processing/lib-esm/x/xHilbertTransform.js","../node_modules/ml-spectra-processing/lib-esm/x/xMaxValue.js","../node_modules/ml-spectra-processing/lib-esm/x/xMinValue.js","../node_modules/ml-spectra-processing/lib-esm/x/xHistogram.js","../node_modules/ml-spectra-processing/lib-esm/x/xIsEquallySpaced.js","../node_modules/ml-spectra-processing/lib-esm/x/xIsMonotonic.js","../node_modules/ml-spectra-processing/lib-esm/x/xMassCenterVectorSimilarity.js","../node_modules/ml-spectra-processing/lib-esm/x/xMaxAbsoluteValue.js","../node_modules/ml-spectra-processing/lib-esm/x/xMaxIndex.js","../node_modules/ml-spectra-processing/lib-esm/x/xMeanAbsoluteError.js","../node_modules/ml-spectra-processing/lib-esm/x/xMeanSquaredError.js","../node_modules/ml-spectra-processing/lib-esm/x/xMeanWeighted.js","../node_modules/ml-spectra-processing/lib-esm/x/xMedianAbsoluteDeviation.js","../node_modules/ml-spectra-processing/lib-esm/x/xMinIndex.js","../node_modules/ml-spectra-processing/lib-esm/x/xMinMaxDelta.js","../node_modules/ml-spectra-processing/lib-esm/x/xMinMaxValues.js","../node_modules/ml-spectra-processing/lib-esm/x/xMode.js","../node_modules/ml-spectra-processing/lib-esm/x/utils/erfcinv.js","../node_modules/ml-spectra-processing/lib-esm/x/utils/simpleNormInv.js","../node_modules/ml-spectra-processing/lib-esm/x/xNoiseSanPlot.js","../node_modules/ml-spectra-processing/lib-esm/x/xNoiseStandardDeviation.js","../node_modules/ml-spectra-processing/lib-esm/x/xNorm.js","../node_modules/ml-spectra-processing/lib-esm/x/xSum.js","../node_modules/ml-spectra-processing/lib-esm/x/xNormed.js","../node_modules/ml-spectra-processing/lib-esm/x/xPadding.js","../node_modules/ml-spectra-processing/lib-esm/x/xParetoNormalization.js","../node_modules/ml-spectra-processing/lib-esm/x/xRobustDistributionStats.js","../node_modules/ml-spectra-processing/lib-esm/x/xRemoveOutliersIQR.js","../node_modules/ml-spectra-processing/lib-esm/x/xRescale.js","../node_modules/ml-spectra-processing/lib-esm/x/xRolling.js","../node_modules/ml-spectra-processing/lib-esm/x/xRollingAverage.js","../node_modules/ml-spectra-processing/lib-esm/x/xRollingMax.js","../node_modules/ml-spectra-processing/lib-esm/x/xRollingMedian.js","../node_modules/ml-spectra-processing/lib-esm/x/xRollingMin.js","../node_modules/ml-spectra-processing/lib-esm/x/xRotate.js","../node_modules/ml-spectra-processing/lib-esm/x/xSampling.js","../node_modules/ml-spectra-processing/lib-esm/x/xSequentialFillFromStep.js","../node_modules/ml-spectra-processing/lib-esm/x/xSequentialFillFromTo.js","../node_modules/ml-spectra-processing/lib-esm/x/xSortAscending.js","../node_modules/ml-spectra-processing/lib-esm/x/xSortDescending.js","../node_modules/ml-spectra-processing/lib-esm/x/xUniqueSorted.js","../node_modules/ml-spectra-processing/lib-esm/matrix/matrixCholeskySolver.js","../node_modules/ml-spectra-processing/lib-esm/utils/addWeights.js","../node_modules/ml-spectra-processing/lib-esm/utils/createSystemMatrix.js","../node_modules/ml-spectra-processing/lib-esm/x/xWhittakerSmoother.js","../node_modules/ml-spectra-processing/lib-esm/reim/reimPhaseCorrection.js","../node_modules/ml-spectra-processing/lib-esm/reim/reimAutoPhaseCorrection.js","../node_modules/ml-spectra-processing/lib-esm/reim/reimFFT.js","../node_modules/ml-spectra-processing/lib-esm/reim/reimZeroFilling.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyAlign.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyCheck.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyCovariance.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyMaxYPoint.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyCumulativeDistributionStatistics.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyEnsureFloat64.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyEnsureGrowingX.js","../node_modules/ml-spectra-processing/lib-esm/zones/zonesNormalize.js","../node_modules/ml-spectra-processing/lib-esm/zones/zonesWithPoints.js","../node_modules/ml-spectra-processing/lib-esm/xy/utils/equallySpacedSlot.js","../node_modules/ml-spectra-processing/lib-esm/xy/utils/integral.js","../node_modules/ml-spectra-processing/lib-esm/xy/utils/equallySpacedSmooth.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyEquallySpaced.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyExtract.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyFilter.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyFilterMinYValue.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyFilterTopYValues.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyFilterX.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyFilterXPositive.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyFindClosestPoint.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyGetNMaxY.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyGrowingX.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyIntegral.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyIntegration.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyJoinX.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyMassCenter.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyMassCenterVector.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyMaxClosestYPoint.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyMaximaY.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyMaxMerge.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyMaxY.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyMedian.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyMergeByCentroids.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyMinClosestYPoint.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyMinimaY.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyMinYPoint.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyPeakInfo.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyRealMaxYPoint.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyRealMinYPoint.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyReduce.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyReduceNonContinuous.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyRolling.js","../node_modules/ml-spectra-processing/lib-esm/xy/xySetYValue.js","../node_modules/ml-spectra-processing/lib-esm/xy/xySortX.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyToXYArray.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyToXYObject.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyUniqueX.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyWeightedMerge.js","../node_modules/ml-spectra-processing/lib-esm/xy2/xy2ToXY.js","../node_modules/ml-spectra-processing/lib-esm/xreim/xreimSortX.js","../node_modules/ml-spectra-processing/lib-esm/xreim/xreimZeroFilling.js","../node_modules/ml-spectra-processing/lib-esm/xyArray/utils/getSlots.js","../node_modules/ml-spectra-processing/lib-esm/xyArray/xyArrayAlign.js","../node_modules/ml-spectra-processing/lib-esm/xyArray/xyArrayWeightedMerge.js","../node_modules/ml-spectra-processing/lib-esm/xyArray/utils/getSlotsToFirst.js","../node_modules/ml-spectra-processing/lib-esm/xyArray/xyArrayAlignToFirst.js","../node_modules/ml-spectra-processing/lib-esm/xyArray/xyArrayMerge.js","../node_modules/ml-spectra-processing/lib-esm/xyObject/xyObjectCheck.js","../node_modules/ml-spectra-processing/lib-esm/xyObject/xyObjectMaxXPoint.js","../node_modules/ml-spectra-processing/lib-esm/xyObject/xyObjectMinXPoint.js","../node_modules/ml-spectra-processing/lib-esm/xyObject/xyObjectBestPoints.js","../node_modules/ml-spectra-processing/lib-esm/xyObject/xyObjectJoinX.js","../node_modules/ml-spectra-processing/lib-esm/xyObject/xyObjectMaxYPoint.js","../node_modules/ml-spectra-processing/lib-esm/xyObject/xyObjectMinMaxValues.js","../node_modules/ml-spectra-processing/lib-esm/xyObject/xyObjectMinYPoint.js","../node_modules/ml-spectra-processing/lib-esm/xyObject/xyObjectNormedY.js","../node_modules/ml-spectra-processing/lib-esm/xyObject/xyObjectSlotX.js","../node_modules/ml-spectra-processing/lib-esm/xyObject/xyObjectSortX.js","../node_modules/ml-spectra-processing/lib-esm/xyObject/xyObjectSumY.js","../node_modules/ml-spectra-processing/lib-esm/xyObject/xyObjectToXY.js","../node_modules/ml-spectra-processing/lib-esm/matrix/matrixAbsoluteMedian.js","../node_modules/ml-spectra-processing/lib-esm/matrix/matrixCreateEmpty.js","../node_modules/ml-spectra-processing/lib-esm/matrix/matrixApplyNumericalEncoding.js","../node_modules/ml-spectra-processing/lib-esm/matrix/matrixAutoCorrelation.js","../node_modules/ml-spectra-processing/lib-esm/matrix/matrixBoxPlot.js","../node_modules/ml-spectra-processing/lib-esm/matrix/matrixCenterZMean.js","../node_modules/ml-spectra-processing/lib-esm/matrix/matrixCheck.js","../node_modules/ml-spectra-processing/lib-esm/matrix/matrixClone.js","../node_modules/ml-spectra-processing/lib-esm/matrix/matrixColumnsCorrelation.js","../node_modules/ml-spectra-processing/lib-esm/matrix/matrixCuthillMckee.js","../node_modules/ml-spectra-processing/lib-esm/matrix/matrixCheckRanges.js","../node_modules/ml-spectra-processing/lib-esm/matrix/matrixGetSubMatrix.js","../node_modules/ml-spectra-processing/lib-esm/matrix/matrixMinMaxAbsoluteZ.js","../node_modules/ml-spectra-processing/lib-esm/matrix/matrixMinMaxZ.js","../node_modules/ml-spectra-processing/lib-esm/matrix/matrixHistogram.js","../node_modules/ml-spectra-processing/lib-esm/matrix/matrixMaxAbsoluteZ.js","../node_modules/ml-spectra-processing/lib-esm/matrix/matrixToArray.js","../node_modules/ml-spectra-processing/lib-esm/matrix/matrixMedian.js","../node_modules/ml-spectra-processing/lib-esm/matrix/matrixNoiseStandardDeviation.js","../node_modules/ml-spectra-processing/lib-esm/matrix/matrixNumericalDecoding.js","../node_modules/ml-spectra-processing/lib-esm/matrix/matrixNumericalEncoding.js","../node_modules/ml-spectra-processing/lib-esm/matrix/matrixPQN.js","../node_modules/ml-spectra-processing/lib-esm/matrix/matrixSetSubMatrix.js","../node_modules/ml-spectra-processing/lib-esm/matrix/matrixZPivotRescale.js","../node_modules/ml-spectra-processing/lib-esm/matrix/matrixZRescale.js","../node_modules/ml-spectra-processing/lib-esm/matrix/matrixZRescalePerColumn.js","../node_modules/ml-spectra-processing/lib-esm/matrix/matrixTranspose.js","../node_modules/isutf8/dist/index.esm.js","../node_modules/ensure-string/lib-esm/index.js","../node_modules/xy-parser/lib-esm/parse.js","../node_modules/xy-parser/lib-esm/index.js","../packages/ms-spectrum/lib/src/getBestPeaks.js","../packages/atom-sorter/lib/src/index.js","../packages/chemical-elements/lib/src/elementsAndIsotopes.js","../packages/chemical-elements/lib/src/elements.js","../packages/chemical-elements/lib/src/elementsAndIsotopesObject.js","../packages/chemical-elements/lib/src/elementsAndStableIsotopes.js","../packages/chemical-elements/lib/src/elementsAndStableIsotopesObject.js","../packages/chemical-elements/lib/src/elementsObject.js","../packages/chemical-elements/lib/src/isotopesObject.js","../packages/chemical-elements/lib/src/stableIsotopesObject.js","../packages/chemical-elements/lib/src/unsaturationsObject.js","../packages/chemical-groups/lib/src/groupsObject.js","../packages/chemical-groups/lib/src/groupsToSequence.js","../packages/mf-parser/lib/src/Kind.js","../packages/mf-parser/lib/src/util/parseCharge.js","../packages/mf-parser/lib/src/parse.js","../packages/mf-parser/lib/src/util/subSuperscript.js","../packages/mf-parser/lib/src/Format.js","../packages/mf-parser/lib/src/util/formatCharge.js","../packages/mf-parser/lib/src/util/improveLinesForDisplay.js","../packages/mf-parser/lib/src/util/toDisplay.js","../packages/mf-parser/lib/src/util/isMF.js","../packages/mf-parser/lib/src/Style.js","../packages/mf-parser/lib/src/util/toHtml.js","../packages/mf-parser/lib/src/ensureCase.js","../packages/mf-parser/lib/src/util/flatten.js","../packages/mf-parser/lib/src/util/getIsotopeRatioInfo.js","../packages/mf-parser/lib/src/util/getEA.js","../packages/mf-parser/lib/src/util/getElements.js","../packages/mf-parser/lib/src/util/getNumberOfIsotopologues.js","../packages/mf-parser/lib/src/util/partToAtoms.js","../packages/mf-parser/lib/src/util/partToMF.js","../packages/mf-parser/lib/src/util/getInfoInternal.js","../packages/mf-parser/lib/src/util/getIsotopesInfo.js","../packages/mf-parser/lib/src/util/partsToDisplay.js","../packages/mf-parser/lib/src/util/partsToMF.js","../packages/mf-parser/lib/src/util/toParts.js","../packages/mf-parser/lib/src/util/toText.js","../packages/mf-parser/lib/src/MFInternal.js","../packages/mf-parser/lib/src/MF.js","../packages/mf-parser/lib/src/parseToHtml.js","../packages/mf-matcher/lib/src/unsaturationMatcher.js","../packages/mf-matcher/lib/src/generalMatcher.js","../packages/mf-utilities/lib/src/ensureUppercaseSequence.js","../packages/mf-utilities/lib/src/getEutrophicationPotential.js","../packages/mf-utilities/lib/src/getMsem.js","../packages/mf-utilities/lib/src/getMsInfo.js","../packages/mf-utilities/lib/src/getRangesForFragment.js","../packages/mf-utilities/lib/src/MFRange.js","../packages/mf-utilities/lib/src/mfDiff.js","../packages/mf-utilities/lib/src/preprocessIonizations.js","../packages/mf-utilities/lib/src/preprocessRanges.js","../packages/mf-matcher/lib/src/msemMatcher.js","../packages/mf-finder/lib/src/TargetMassCache.js","../packages/mf-finder/lib/src/findMFsSync.js","../packages/mf-finder/lib/src/findMFs.js","../packages/mf-finder/lib/src/mfIncluded.js","../packages/ms-spectrum/lib/src/from/fromMonoisotopicMass.js","../packages/ms-spectrum/lib/src/getPeaks.js","../packages/ms-spectrum/lib/src/getFragmentPeaks.js","../packages/ms-spectrum/lib/src/getMassRemainder.js","../node_modules/peaks-similarity/lib-esm/calculateOverlapFromDiff.js","../node_modules/peaks-similarity/lib-esm/checkPeaks.js","../node_modules/peaks-similarity/lib-esm/extract.js","../node_modules/peaks-similarity/lib-esm/getCommonArray.js","../node_modules/ml-stat/array.js","../node_modules/ml-stat/index.js","../node_modules/peaks-similarity/lib-esm/normalize.js","../node_modules/peaks-similarity/lib-esm/commonExtractAndNormalize.js","../node_modules/peaks-similarity/lib-esm/extractAndNormalize.js","../node_modules/peaks-similarity/lib-esm/getIntersection.js","../node_modules/peaks-similarity/lib-esm/index.js","../packages/ms-spectrum/lib/src/getPeakChargeBySimilarity.js","../packages/ms-spectrum/lib/src/getPeaksWithCharge.js","../packages/ms-spectrum/lib/src/isContinuous.js","../node_modules/ml-savitzky-golay-generalized/lib-esm/index.js","../node_modules/ml-gsd/lib/utils/optimizeTop.js","../node_modules/ml-gsd/lib/gsd.js","../node_modules/ml-peak-shape-generator/lib-esm/util/constants.js","../node_modules/ml-peak-shape-generator/lib-esm/util/erfinv.js","../node_modules/ml-peak-shape-generator/lib-esm/shapes/1d/gaussian/Gaussian.js","../node_modules/ml-peak-shape-generator/lib-esm/shapes/1d/lorentzian/Lorentzian.js","../node_modules/ml-peak-shape-generator/lib-esm/shapes/1d/lorentzianDispersive/LorentzianDispersive.js","../node_modules/ml-peak-shape-generator/lib-esm/shapes/1d/pseudoVoigt/PseudoVoigt.js","../node_modules/ml-peak-shape-generator/lib-esm/shapes/1d/generalizedLorentzian/GeneralizedLorentzian.js","../node_modules/ml-peak-shape-generator/lib-esm/shapes/2d/gaussian2D/Gaussian2D.js","../node_modules/ml-peak-shape-generator/lib-esm/shapes/1d/getShape1D.js","../node_modules/ml-peak-shape-generator/lib-esm/shapes/2d/getShape2D.js","../node_modules/ml-spectra-fitting/lib/shapes/getSumOfShapes.js","../node_modules/ml-spectra-fitting/lib/util/assert.js","../node_modules/ml-spectra-fitting/lib/util/internalPeaks/DefaultParameters.js","../node_modules/ml-spectra-fitting/lib/util/internalPeaks/getInternalPeaks.js","../node_modules/ml-levenberg-marquardt/lib/check_options.js","../node_modules/ml-levenberg-marquardt/lib/error_calculation.js","../node_modules/ml-levenberg-marquardt/lib/gradient_function.js","../node_modules/ml-levenberg-marquardt/lib/step.js","../node_modules/ml-levenberg-marquardt/lib/levenberg_marquardt.js","../node_modules/ml-direct/src/util/antiLowerConvexHull.js","../node_modules/ml-direct/src/index.js","../node_modules/ml-spectra-fitting/lib/util/wrappers/directOptimization.js","../node_modules/ml-spectra-fitting/lib/util/selectMethod.js","../node_modules/ml-spectra-fitting/lib/index.js","../node_modules/ml-gsd/lib/utils/addMissingShape.js","../node_modules/ml-gsd/lib/utils/groupPeaks.js","../node_modules/ml-gsd/lib/post/optimizePeaksWithLogs.js","../node_modules/ml-gsd/lib/post/optimizePeaks.js","../node_modules/ml-gsd/lib/utils/addMissingIDs.js","../node_modules/ml-gsd/lib/post/joinBroadPeaks.js","../node_modules/ml-gsd/lib/post/broadenPeaks.js","../node_modules/ml-gsd/lib/utils/setShape.js","../packages/ms-spectrum/lib/src/peakPicking.js","../node_modules/ml-regression-base/lib-esm/checkArrayLength.js","../node_modules/ml-regression-base/lib-esm/BaseRegression.js","../node_modules/ml-regression-base/lib-esm/maybeToPrecision.js","../node_modules/ml-regression-simple-linear/lib-esm/index.js","../node_modules/ml-regression-power/src/index.js","../packages/ms-spectrum/lib/src/peaksWidth.js","../packages/ms-spectrum/lib/src/Spectrum.js","../packages/ms-spectrum/lib/src/MSComparator.js","../packages/ms-spectrum/lib/src/jsgraph/getPeaksAnnotation.js","../packages/ms-spectrum/lib/src/jsgraph/index.js","../packages/emdb/lib/src/append/appendFragmentsInfo.js","../node_modules/sum-object-keys/lib/index.js","../packages/mf-generator/lib/src/generateMFs.js","../packages/emdb/lib/src/from/fromArray.js","../node_modules/openchemlib-utils/lib/util/getXAtomicNumber.js","../node_modules/openchemlib-utils/lib/util/isCsp3.js","../node_modules/openchemlib-utils/lib/util/makeRacemic.js","../node_modules/openchemlib-utils/lib/util/tagAtom.js","../node_modules/openchemlib-utils/lib/hose/getHoseCodesForAtomsInternal.js","../node_modules/openchemlib-utils/lib/path/getAllAtomsPaths.js","../node_modules/ml-floyd-warshall/lib-esm/index.js","../node_modules/openchemlib-utils/lib/util/getConnectivityMatrix.js","../node_modules/openchemlib-utils/lib/topic/getCanonizedDiaIDs.js","../node_modules/openchemlib-utils/lib/topic/getCanonizedHoseCodes.js","../node_modules/openchemlib-utils/lib/topic/getDiaIDsAndInfo.js","../node_modules/openchemlib-utils/lib/topic/getHeterotopicSymmetryRanks.js","../node_modules/openchemlib-utils/lib/diastereotopic/getChiralOrHeterotopicCarbons.js","../node_modules/openchemlib-utils/lib/diastereotopic/ensureHeterotopicChiralBonds.js","../node_modules/openchemlib-utils/lib/topic/getMoleculeWithH.js","../node_modules/openchemlib-utils/lib/topic/getXMolecule.js","../node_modules/openchemlib-utils/lib/topic/TopicMolecule.js","../node_modules/openchemlib-utils/lib/util/getSymmetryRanks.js","../node_modules/openchemlib-utils/lib/diastereotopic/getDiastereotopicAtomIDs.js","../node_modules/openchemlib-utils/lib/diastereotopic/getDiastereotopicAtomIDsAndH.js","../node_modules/openchemlib-utils/lib/diastereotopic/groupDiastereotopicAtomIDs.js","../node_modules/openchemlib-utils/lib/diastereotopic/getGroupedDiastereotopicAtomIDs.js","../node_modules/openchemlib-utils/lib/diastereotopic/getDiastereotopicAtomIDsFromMolfile.js","../node_modules/openchemlib-utils/lib/diastereotopic/toDiastereotopicSVG.js","../node_modules/openchemlib-utils/lib/hose/getHoseCodes.js","../node_modules/openchemlib-utils/lib/hose/getHoseCodesAndInfo.js","../node_modules/openchemlib-utils/lib/hose/getHoseCodesForAtoms.js","../node_modules/openchemlib-utils/lib/hose/getHoseCodesForAtom.js","../node_modules/openchemlib-utils/lib/hose/getHoseCodesFromDiastereotopicID.js","../node_modules/openchemlib-utils/lib/hose/getHoseCodesForPath.js","../node_modules/openchemlib-utils/lib/polymer/createPolymer.js","../node_modules/openchemlib-utils/lib/util/combineSmiles.js","../node_modules/openchemlib-utils/lib/util/dwar/utils/getCamelCase.js","../node_modules/openchemlib-utils/lib/util/dwar/utils/getParts.js","../node_modules/openchemlib-utils/lib/util/dwar/utils/parseColumnbProperties.js","../node_modules/openchemlib-utils/lib/util/dwar/utils/parseData.js","../node_modules/openchemlib-utils/lib/util/dwar/parseDwar.js","../node_modules/openchemlib-utils/lib/util/getAtomsInfo.js","../node_modules/openchemlib-utils/lib/util/getImplicitHydrogensCount.js","../node_modules/openchemlib-utils/lib/util/getMF.js","../node_modules/openchemlib-utils/lib/util/getCharge.js","../node_modules/openchemlib-utils/lib/util/getMolfilesMapping.js","../node_modules/openchemlib-utils/lib/util/getUnsaturation.js","../node_modules/openchemlib-utils/lib/util/getNMRHints.js","../node_modules/openchemlib-utils/lib/util/getNextNMRHint.js","../node_modules/openchemlib-utils/lib/util/getProperties.js","../node_modules/openchemlib-utils/lib/util/getAtoms.js","../node_modules/openchemlib-utils/lib/util/nbOH.js","../node_modules/openchemlib-utils/lib/util/nbCOOH.js","../node_modules/openchemlib-utils/lib/util/nbCHO.js","../node_modules/openchemlib-utils/lib/util/nbNH2.js","../node_modules/openchemlib-utils/lib/util/nbCN.js","../node_modules/openchemlib-utils/lib/util/nbLabileH.js","../node_modules/openchemlib-utils/lib/util/toggleHydrogens.js","../node_modules/openchemlib-utils/lib/util/toVisualizerMolfile.js","../node_modules/openchemlib-utils/lib/path/getPathAndTorsion.js","../node_modules/openchemlib-utils/lib/path/getPathsInfo.js","../node_modules/openchemlib-utils/lib/path/getShortestPaths.js","../node_modules/papaparse/papaparse.min.js","../node_modules/openchemlib-utils/lib/db/utils/getMoleculeCreators.js","../node_modules/openchemlib-utils/lib/db/utils/appendCSV.js","../node_modules/openchemlib-utils/lib/db/utils/appendColor.js","../node_modules/get-value/dist/index.mjs","../node_modules/openchemlib-utils/lib/db/utils/appendEntries.js","../node_modules/sdf-parser/src/getEntriesBoundaries.js","../node_modules/sdf-parser/src/util/getMolecule.js","../node_modules/sdf-parser/src/parse.js","../node_modules/openchemlib-utils/lib/db/utils/appendSDF.js","../node_modules/openchemlib-utils/lib/db/utils/appendSmilesList.js","../node_modules/openchemlib-utils/lib/db/utils/pushEntry.js","../node_modules/openchemlib-utils/lib/db/utils/pushMoleculeInfo.js","../node_modules/openchemlib-utils/lib/util/noWait.js","../node_modules/openchemlib-utils/lib/db/utils/search.js","../node_modules/openchemlib-utils/lib/db/MoleculesDB.js","../node_modules/openchemlib-utils/lib/features/getAtomFeatures.js","../node_modules/openchemlib-utils/lib/util/getRAtomicNumber.js","../node_modules/openchemlib-utils/lib/fragment/fragmentAcyclicSingleBonds.js","../node_modules/openchemlib-utils/lib/reaction/utils/appendOCLReaction.js","../node_modules/openchemlib-utils/lib/reaction/utils/checkIfExistsOrAddInfo.js","../node_modules/openchemlib-utils/lib/reaction/utils/applyOneReactantReactions.js","../node_modules/openchemlib-utils/lib/reaction/utils/getFilteredTrees.js","../node_modules/openchemlib-utils/lib/reaction/utils/getLeaves.js","../node_modules/openchemlib-utils/lib/reaction/utils/getNodes.js","../node_modules/openchemlib-utils/lib/reaction/Reactions.js","../packages/mass-fragmentation/lib/src/fragmentAcyclicBonds.js","../packages/mass-fragmentation/lib/src/utils/getRingsInfo.js","../packages/mass-fragmentation/lib/src/utils/getFragmentableRings.js","../packages/mass-fragmentation/lib/src/fragmentRings.js","../packages/mass-fragmentation/lib/src/fragment.js","../node_modules/openchemlib/dist/openchemlib.js","../packages/mass-fragmentation/lib/src/database/defaultDatabase.js","../packages/mass-fragmentation/lib/src/database/getDatabase.js","../packages/mass-fragmentation/lib/src/utils/getMasses.js","../packages/mass-fragmentation/lib/src/reactionFragmentation.js","../node_modules/react/cjs/react-jsx-runtime.production.js","../node_modules/react/jsx-runtime.js","../node_modules/react/cjs/react.production.js","../node_modules/react/index.js","../node_modules/react-dom/cjs/react-dom.production.js","../node_modules/react-dom/index.js","../node_modules/scheduler/cjs/scheduler.production.js","../node_modules/scheduler/index.js","../node_modules/react-dom/cjs/react-dom-client.production.js","../node_modules/react-dom/client.js","../node_modules/react-tree-svg/lib-esm/data/calculatePosition.js","../node_modules/react-tree-svg/lib-esm/components/MarkerDef.utils.js","../node_modules/react-tree-svg/lib-esm/components/MultilineText.js","../node_modules/react-tree-svg/lib-esm/components/Text.js","../node_modules/react-tree-svg/lib-esm/components/Arrow.js","../node_modules/react-tree-svg/lib-esm/data/getArrows.js","../node_modules/react-tree-svg/lib-esm/data/getBoxes.js","../node_modules/react-tree-svg/lib-esm/data/prepareTree.js","../node_modules/react-tree-svg/lib-esm/components/MarkerDef.js","../node_modules/react-tree-svg/lib-esm/components/SVGBoxesTree.js","../node_modules/react-tree-svg/lib-esm/render.js","../node_modules/react-tree-svg/lib-esm/components/Rectangle.js","../node_modules/react-tree-svg/lib-esm/components/SVG.js","../node_modules/react-tree-svg/lib-esm/nodeRenderer/moleculeRenderer.js","../node_modules/react-tree-svg/lib-esm/nodeRenderer/taxonomyRenderer.js","../packages/mass-fragmentation/lib/src/getFragmentationSVG.js","../packages/emdb/lib/src/from/fromMolecules.js","../packages/nucleotide/lib/src/sequenceToMF.js","../packages/nucleotide/lib/src/furanThreeTerm.js","../packages/nucleotide/lib/src/addFiveTerm.js","../packages/nucleotide/lib/src/baseLoss.js","../packages/nucleotide/lib/src/addFiveTermBaseLoss.js","../packages/nucleotide/lib/src/addInternalTerm.js","../packages/nucleotide/lib/src/addThreeTerm.js","../packages/nucleotide/lib/src/addThreeTermBaseLoss.js","../packages/nucleotide/lib/src/generateFragments.js","../packages/emdb/lib/src/from/fromNucleicSequence.js","../packages/peptide/lib/src/aminoAcids.js","../packages/peptide/lib/src/isoElectricPoint.js","../packages/peptide/lib/src/splitPeptide.js","../packages/peptide/lib/src/allowNeutralLoss.js","../packages/peptide/lib/src/getAA.js","../packages/peptide/lib/src/chargePeptide.js","../packages/peptide/lib/src/sequenceToMF.js","../packages/peptide/lib/src/generatePeptideFragments.js","../packages/peptide/lib/src/digestPeptide.js","../packages/peptide/lib/src/index.js","../packages/emdb/lib/src/from/util/fragmentPeptide.js","../packages/emdb/lib/src/from/fromPeptidicSequence.js","../packages/emdb/lib/src/from/fromRange.js","../node_modules/jszip/dist/jszip.min.js","../packages/emdb/lib/src/util/fetchArrayBuffer.js","../packages/emdb/lib/src/loadCommercials.js","../packages/mf-from-google-sheet/lib/src/util/fetchText.js","../packages/mf-from-google-sheet/lib/src/index.js","../packages/emdb/lib/src/loadGoogleSheet.js","../packages/emdb/lib/src/loadKnapSack.js","../packages/emdb/lib/src/search.js","../packages/emdb/lib/src/searchMSEM.js","../node_modules/spectrum-generator/lib-esm/util/addBaseline.js","../node_modules/spectrum-generator/lib-esm/util/addNoise.js","../node_modules/spectrum-generator/lib-esm/SpectrumGenerator.js","../node_modules/spectrum-generator/lib-esm/Spectrum2DGenerator.js","../packages/isotopic-distribution/lib/src/utils/closestPointX.js","../packages/isotopic-distribution/lib/src/utils/joinX.js","../packages/isotopic-distribution/lib/src/utils/multiply.js","../packages/isotopic-distribution/lib/src/utils/power.js","../packages/isotopic-distribution/lib/src/Distribution.js","../packages/isotopic-distribution/lib/src/utils/getDerivedCompositionInfo.js","../packages/isotopic-distribution/lib/src/IsotopicDistribution.js","../packages/emdb/lib/src/searchSimilarity.js","../node_modules/median-quickselect/lib/median-quickselect.min.js","../node_modules/ml-array-median/lib-es6/index.js","../node_modules/ml-regression-theil-sen/src/index.js","../packages/emdb/lib/src/massShifts.js","../packages/emdb/lib/src/util/fetchJSON.js","../packages/emdb/lib/src/index.js","../packages/mf-from-ea/lib/src/preprocessEARanges.js","../packages/mf-from-ea/lib/src/index.js","../packages/mf-from-atomic-ratio/lib/src/mfFromAtomicRatio.js","../packages/octochemdb/lib/src/utils/appendAllDBRefs.js","../packages/octochemdb/lib/src/utils/appendURLs.js","../packages/octochemdb/lib/src/utils/fetchJSON.js","../packages/octochemdb/lib/src/utils/postFetchJSON.js","../packages/octochemdb/lib/src/utils/includeDBRefs.js","../packages/octochemdb/lib/src/utils/normalizeActivities.js","../packages/octochemdb/lib/src/activeOrNaturalDetails.js","../packages/octochemdb/lib/src/utils/parseMasses.js","../packages/octochemdb/lib/src/utils/getAllowedEMs.js","../packages/octochemdb/lib/src/utils/searchWithIonizations.js","../packages/octochemdb/lib/src/activesOrNaturals.js","../packages/octochemdb/lib/src/activesOrNaturalsByMF.js","../packages/octochemdb/lib/src/compoundsFromMF.js","../packages/octochemdb/lib/src/searchMasses.js","../packages/octochemdb/lib/src/massSpectra.js","../packages/octochemdb/lib/src/mfsFromEMs.js","../packages/octochemdb/lib/src/pubmedCompounds.js","../packages/octochemdb/lib/src/searchInSilicoSpectraByMF.js","../packages/octochemdb/lib/src/searchInSilicoSpectraByMasses.js","../packages/octochemdb/lib/src/OctoChemDB.js","../node_modules/@orama/orama/dist/browser/components/tokenizer/languages.js","../node_modules/@orama/orama/dist/browser/utils.js","../node_modules/@orama/orama/dist/browser/errors.js","../node_modules/@orama/orama/dist/browser/components/defaults.js","../node_modules/@orama/orama/dist/browser/components/internal-document-id-store.js","../node_modules/@orama/orama/dist/browser/components/documents-store.js","../node_modules/@orama/orama/dist/browser/components/plugins.js","../node_modules/@orama/orama/dist/browser/components/hooks.js","../node_modules/@orama/orama/dist/browser/trees/avl.js","../node_modules/@orama/orama/dist/browser/trees/flat.js","../node_modules/@orama/orama/dist/browser/components/levenshtein.js","../node_modules/@orama/orama/dist/browser/trees/radix.js","../node_modules/@orama/orama/dist/browser/trees/bkd.js","../node_modules/@orama/orama/dist/browser/trees/bool.js","../node_modules/@orama/orama/dist/browser/components/algorithms.js","../node_modules/@orama/orama/dist/browser/trees/vector.js","../node_modules/@orama/orama/dist/browser/components/index.js","../node_modules/@orama/orama/dist/browser/components/sorter.js","../node_modules/@orama/orama/dist/browser/components/tokenizer/diacritics.js","../node_modules/@orama/orama/dist/browser/components/tokenizer/english-stemmer.js","../node_modules/@orama/orama/dist/browser/components/tokenizer/index.js","../node_modules/@orama/orama/dist/browser/methods/create.js","../node_modules/@orama/orama/dist/browser/methods/docs.js","../node_modules/@orama/orama/dist/browser/methods/insert.js","../node_modules/@orama/orama/dist/browser/methods/remove.js","../node_modules/@orama/orama/dist/browser/constants.js","../node_modules/@orama/orama/dist/browser/components/facets.js","../node_modules/@orama/orama/dist/browser/components/groups.js","../node_modules/@orama/orama/dist/browser/methods/search-fulltext.js","../node_modules/@orama/orama/dist/browser/methods/search-vector.js","../node_modules/@orama/orama/dist/browser/methods/search-hybrid.js","../node_modules/@orama/orama/dist/browser/methods/search.js","../node_modules/@orama/orama/dist/browser/methods/serialization.js","../node_modules/@orama/orama/dist/browser/methods/update.js","../node_modules/@orama/orama/dist/browser/methods/upsert.js","../node_modules/@orama/orama/dist/browser/methods/answer-session.js","../node_modules/@orama/orama/dist/browser/types.js","../packages/octochemdb/lib/src/summarizer/utils/getActivitiesDB.js","../packages/octochemdb/lib/src/summarizer/utils/getPatentsDB.js","../packages/octochemdb/lib/src/summarizer/utils/getPubmedsDB.js","../packages/octochemdb/lib/src/summarizer/utils/getTaxonomiesDB.js","../packages/octochemdb/lib/src/summarizer/utils/searchActivitiesDB.js","../packages/octochemdb/lib/src/summarizer/utils/searchPatentsDB.js","../packages/octochemdb/lib/src/summarizer/utils/searchPubmedsDB.js","../packages/octochemdb/lib/src/summarizer/utils/searchTaxonomiesDB.js","../packages/octochemdb/lib/src/summarizer/utils/summarizeEmptyTerms.js","../packages/octochemdb/lib/src/summarizer/ActiveOrNaturalSummarizer.js","../packages/octochemdb/lib/src/taxonomy/taxonomyRanks.js","../packages/octochemdb/lib/src/taxonomy/taxonomyComparator.js","../packages/octochemdb/lib/src/taxonomy/createTaxonomyTree.js","../packages/ms-report/lib/src/appendInternals.js","../packages/ms-report/lib/src/appendResidues.js","../node_modules/@svgdotjs/svg.js/dist/svg.node.cjs","../packages/ms-report/lib/src/getPaper.browser.js","../packages/ms-report/lib/src/appendResiduesPosition.js","../packages/ms-report/lib/src/appendResults.js","../packages/ms-report/lib/src/appendRows.js","../packages/ms-report/lib/src/appendRowsInformation.js","../packages/ms-report/lib/src/draw/addCSS.js","../packages/ms-report/lib/src/draw/addScript.js","../packages/ms-report/lib/src/draw/drawLabel.js","../packages/ms-report/lib/src/draw/drawInternals.js","../packages/ms-report/lib/src/draw/drawReplacements.js","../packages/ms-report/lib/src/draw/drawTerminals.js","../packages/ms-report/lib/src/draw/drawSequence.js","../packages/ms-report/lib/src/sequenceSVG.js","../node_modules/@lukeed/uuid/dist/index.js","../packages/mfs-deconvolution/lib/src/getPeakWidthFct.js","../node_modules/ml-fcnnls/lib-esm/util/sortCollectionSet.js","../node_modules/ml-fcnnls/lib-esm/cssls.js","../node_modules/ml-fcnnls/lib-esm/initialisation.js","../node_modules/ml-fcnnls/lib-esm/util/setDifference.js","../node_modules/ml-fcnnls/lib-esm/optimality.js","../node_modules/ml-fcnnls/lib-esm/util/selection.js","../node_modules/ml-fcnnls/lib-esm/fcnnls.js","../node_modules/ml-fcnnls/lib-esm/fcnnlsVector.js","../packages/mfs-deconvolution/lib/src/utils/splitMatrix.js","../packages/mfs-deconvolution/lib/src/utils/blockFcnnls.js","../packages/mfs-deconvolution/lib/src/mfsDeconvolution.js","../packages/mfs-deconvolution/lib/src/reconstruct.js","../packages/mass-tools/src/index.js"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/unbound-method\nconst toString = Object.prototype.toString;\n/**\n * Checks if an object is an instance of an Array (array or typed array, except those that contain bigint values).\n *\n * @param value - Object to check.\n * @returns True if the object is an array or a typed array.\n */\nexport function isAnyArray(value) {\n    const tag = toString.call(value);\n    return tag.endsWith('Array]') && !tag.includes('Big');\n}\n//# sourceMappingURL=index.js.map","/**\n * Calculates reimAbsolute value of a complex spectrum.\n * @param data - complex spectrum\n * @returns - reimAbsolute value\n */\nexport function reimAbsolute(data) {\n    const length = data.re.length;\n    const re = data.re;\n    const im = data.im;\n    const newArray = new Float64Array(length);\n    for (let i = 0; i < length; i++) {\n        newArray[i] = Math.hypot(re[i], im[i]);\n    }\n    return newArray;\n}\n//# sourceMappingURL=reimAbsolute.js.map","import { isAnyArray } from 'is-any-array';\n/**\n * This function\n * @param output - undefined or a new array\n * @param length - length of the output array\n * @returns\n */\nexport function getOutputArray(output, length) {\n    if (output !== undefined) {\n        if (!isAnyArray(output)) {\n            throw new TypeError('output option must be an array if specified');\n        }\n        if (output.length !== length) {\n            throw new TypeError('the output array does not have the correct length');\n        }\n        return output;\n    }\n    else {\n        return new Float64Array(length);\n    }\n}\n//# sourceMappingURL=getOutputArray.js.map","/**\n * This function returns an array with absolute values.\n * @param array - array of data\n * @returns - array with absolute values\n */\nexport function xAbsolute(array) {\n    const tmpArray = array.slice();\n    for (let i = 0; i < tmpArray.length; i++) {\n        if (tmpArray[i] < 0)\n            tmpArray[i] *= -1;\n    }\n    return tmpArray;\n}\n//# sourceMappingURL=xAbsolute.js.map","import { isAnyArray } from 'is-any-array';\n/**\n * Calculates the median of an array.\n * @param input - Array containing values\n * @param options\n * @returns - median\n */\nexport function xMedian(input, options = {}) {\n    if (!isAnyArray(input)) {\n        throw new TypeError('input must be an array');\n    }\n    if (input.length === 0) {\n        throw new TypeError('input must not be empty');\n    }\n    const { exact = false } = options || {};\n    const array = input.slice();\n    const middleIndex = calcMiddle(0, array.length - 1);\n    const median = quickSelect(array, middleIndex);\n    if (array.length % 2 === 1 || !exact) {\n        return median;\n    }\n    const medianNext = quickSelect(array, middleIndex + 1);\n    return (median + medianNext) / 2;\n}\nfunction quickSelect(array, middleIndex) {\n    let low = 0;\n    let high = array.length - 1;\n    let middle = 0;\n    let currentLow = 0;\n    let currentHigh = 0;\n    while (true) {\n        if (high <= low) {\n            return array[middleIndex];\n        }\n        if (high === low + 1) {\n            if (array[low] > array[high]) {\n                swap(array, low, high);\n            }\n            return array[middleIndex];\n        }\n        // Find median of low, middle and high items; swap into position low\n        middle = calcMiddle(low, high);\n        if (array[middle] > array[high])\n            swap(array, middle, high);\n        if (array[low] > array[high])\n            swap(array, low, high);\n        if (array[middle] > array[low])\n            swap(array, middle, low);\n        // Swap low item (now in position middle) into position (low+1)\n        swap(array, middle, low + 1);\n        // Nibble from each end towards middle, swapping items when stuck\n        currentLow = low + 1;\n        currentHigh = high;\n        while (true) {\n            do\n                currentLow++;\n            while (array[low] > array[currentLow]);\n            do\n                currentHigh--;\n            while (array[currentHigh] > array[low]);\n            if (currentHigh < currentLow) {\n                break;\n            }\n            swap(array, currentLow, currentHigh);\n        }\n        // Swap middle item (in position low) back into correct position\n        swap(array, low, currentHigh);\n        // Re-set active partition\n        if (currentHigh <= middleIndex) {\n            low = currentLow;\n        }\n        if (currentHigh >= middleIndex) {\n            high = currentHigh - 1;\n        }\n    }\n}\nfunction swap(array, i, j) {\n    const temp = array[j];\n    array[j] = array[i];\n    array[i] = temp;\n}\nfunction calcMiddle(i, j) {\n    return Math.floor((i + j) / 2);\n}\n//# sourceMappingURL=xMedian.js.map","import { xAbsolute } from './xAbsolute';\nimport { xMedian } from './xMedian';\n/**\n * This function calculates the median after taking the xAbsolute values of the points.\n * @param array - the array for which we want to calculate the absolute value\n * @returns - median\n */\nexport function xAbsoluteMedian(array) {\n    return xMedian(xAbsolute(array));\n}\n//# sourceMappingURL=xAbsoluteMedian.js.map","import { isAnyArray } from 'is-any-array';\n/**\n * Checks if the input is a non-empty array of numbers.\n * Only checks the first element.\n * @param input - Array to check.\n * @param options - Additional checks.\n */\nexport function xCheck(input, options = {}) {\n    const { minLength } = options;\n    if (!isAnyArray(input)) {\n        throw new TypeError('input must be an array');\n    }\n    if (input.length === 0) {\n        throw new TypeError('input must not be empty');\n    }\n    if (typeof input[0] !== 'number') {\n        throw new TypeError('input must contain numbers');\n    }\n    if (minLength && input.length < minLength) {\n        throw new Error(`input must have a length of at least ${minLength}`);\n    }\n}\n//# sourceMappingURL=xCheck.js.map","/**\n * Returns the closest index of a `target`\n * @param array - array of numbers\n * @param target - target\n * @param options\n * @returns - closest index\n */\nexport function xFindClosestIndex(array, target, options = {}) {\n    const { sorted = true } = options;\n    if (sorted) {\n        let low = 0;\n        let high = array.length - 1;\n        let middle = 0;\n        while (high - low > 1) {\n            middle = low + ((high - low) >> 1);\n            if (array[middle] < target) {\n                low = middle;\n            }\n            else if (array[middle] > target) {\n                high = middle;\n            }\n            else {\n                return middle;\n            }\n        }\n        if (low < array.length - 1) {\n            if (Math.abs(target - array[low]) < Math.abs(array[low + 1] - target)) {\n                return low;\n            }\n            else {\n                return low + 1;\n            }\n        }\n        else {\n            return low;\n        }\n    }\n    else {\n        let index = 0;\n        let diff = Number.POSITIVE_INFINITY;\n        for (let i = 0; i < array.length; i++) {\n            const currentDiff = Math.abs(array[i] - target);\n            if (currentDiff < diff) {\n                diff = currentDiff;\n                index = i;\n            }\n        }\n        return index;\n    }\n}\n//# sourceMappingURL=xFindClosestIndex.js.map","import { xFindClosestIndex } from './xFindClosestIndex';\n/**\n * Returns an object with {fromIndex, toIndex} for a specific from / to\n * @param x - array of numbers\n * @param options - Options\n */\nexport function xGetFromToIndex(x, options = {}) {\n    let { fromIndex, toIndex } = options;\n    const { from, to } = options;\n    if (fromIndex === undefined) {\n        if (from !== undefined) {\n            fromIndex = xFindClosestIndex(x, from);\n        }\n        else {\n            fromIndex = 0;\n        }\n    }\n    if (toIndex === undefined) {\n        if (to !== undefined) {\n            toIndex = xFindClosestIndex(x, to);\n        }\n        else {\n            toIndex = x.length - 1;\n        }\n    }\n    if (fromIndex < 0)\n        fromIndex = 0;\n    if (toIndex < 0)\n        toIndex = 0;\n    if (fromIndex >= x.length)\n        fromIndex = x.length - 1;\n    if (toIndex >= x.length)\n        toIndex = x.length - 1;\n    if (fromIndex > toIndex)\n        [fromIndex, toIndex] = [toIndex, fromIndex];\n    return { fromIndex, toIndex };\n}\n//# sourceMappingURL=xGetFromToIndex.js.map","import { xCheck } from './xCheck';\nimport { xGetFromToIndex } from './xGetFromToIndex';\nexport function xAbsoluteSum(array, options = {}) {\n    xCheck(array);\n    const { fromIndex, toIndex } = xGetFromToIndex(array, options);\n    let sum = 0;\n    for (let i = fromIndex; i <= toIndex; i++) {\n        sum += Math.abs(array[i]);\n    }\n    return sum;\n}\n//# sourceMappingURL=xAbsoluteSum.js.map","import { isAnyArray } from 'is-any-array';\n/**\n * This function xAdd the first array by the second array or a constant value to each element of the first array\n * @param array1 - the first array\n * @param array2 - the second array or number\n * @returns the result of the addition\n */\nexport function xAdd(array1, array2) {\n    let isConstant = false;\n    let constant = 0;\n    if (isAnyArray(array2)) {\n        if (array1.length !== array2.length) {\n            throw new Error('size of array1 and array2 must be identical');\n        }\n    }\n    else {\n        isConstant = true;\n        constant = array2;\n    }\n    const array3 = new Float64Array(array1.length);\n    if (isConstant) {\n        for (let i = 0; i < array1.length; i++) {\n            array3[i] = array1[i] + constant;\n        }\n    }\n    else {\n        for (let i = 0; i < array1.length; i++) {\n            array3[i] = array1[i] + array2[i];\n        }\n    }\n    return array3;\n}\n//# sourceMappingURL=xAdd.js.map","/**\n * Will apply a function on each element of the array described as a string\n * By default we will use as variable 'x'\n * In front of sequence of lowercase we will add 'Math.'. This allows to write\n * `sin(x) + cos(x)` and it will be replace internally by (x) => (Math.sin(x) + Math.cos(x))\n * @param array\n * @param options\n * @returns\n */\nexport function xApplyFunctionStr(array, options = {}) {\n    const { variableLabel = 'x', fctString = variableLabel } = options;\n    const fct = new Function(variableLabel, `return Number(${fctString\n        .replaceAll(/(?<before>^|\\W)(?<after>[\\da-z]{2,}\\()/g, '$<before>Math.$<after>')\n        .replaceAll('Math.Math', 'Math')})`);\n    const toReturn = Float64Array.from(array);\n    for (let i = 0; i < array.length; i++) {\n        toReturn[i] = fct(array[i]);\n        if (Number.isNaN(toReturn[i])) {\n            throw new Error(`The callback ${fctString} does not return a number: ${array[i]}`);\n        }\n    }\n    return toReturn;\n}\n//# sourceMappingURL=xApplyFunctionStr.js.map","import { isAnyArray } from 'is-any-array';\nimport { getOutputArray } from './getOutputArray';\n/**\n * This function xMultiply the first array by the second array or a constant value to each element of the first array\n * @param array1 - first array\n * @param array2 - second array\n * @param options - options\n */\nexport function xMultiply(array1, array2, options = {}) {\n    let isConstant = false;\n    let constant = 0;\n    if (isAnyArray(array2)) {\n        if (array1.length !== array2.length) {\n            throw new Error('size of array1 and array2 must be identical');\n        }\n    }\n    else {\n        isConstant = true;\n        constant = array2;\n    }\n    const array3 = getOutputArray(options.output, array1.length);\n    if (isConstant) {\n        for (let i = 0; i < array1.length; i++) {\n            array3[i] = array1[i] * constant;\n        }\n    }\n    else {\n        for (let i = 0; i < array1.length; i++) {\n            array3[i] = array1[i] * array2[i];\n        }\n    }\n    return array3;\n}\n//# sourceMappingURL=xMultiply.js.map","import { xMultiply } from './xMultiply';\n/**\n * Dot product between two arrays.\n * @param A - First array.\n * @param B - Second array.\n */\nexport function xDotProduct(A, B) {\n    const g = xMultiply(A, B);\n    let result = 0;\n    for (let i = 0; i < A.length; i++) {\n        result += g[i];\n    }\n    return result;\n}\n//# sourceMappingURL=xDotProduct.js.map","import { xDotProduct } from './xDotProduct';\n/**\n * Calculates the cross-correlation between 2 arrays\n * @param A - fixed array\n * @param B - sweeping array\n * @param options - Options\n */\nexport function xCrossCorrelation(A, B, options = {}) {\n    const { tau = 1, lag = A.length - 1 } = options;\n    const result = new Float64Array(1 + (2 * lag) / tau);\n    if (A.length === B.length) {\n        const n = B.length;\n        const g = new Float64Array(2 * n);\n        const q = new Float64Array(2 * n);\n        for (let i = 0; i < n; i++) {\n            q[n + i] = B[i];\n        }\n        for (let i = n * 2 - (tau - 1); i > 0; i -= tau) {\n            let k = 0;\n            for (let j = i; j < n * 2; j++) {\n                g[k] = q[j];\n                k++;\n            }\n            const w = [];\n            for (let l = 0; l < n; l++) {\n                w[l] = g[l];\n            }\n            result[(k - (n - lag)) / tau] = xDotProduct(A, w);\n        }\n    }\n    return result;\n}\n//# sourceMappingURL=xCrossCorrelation.js.map","import { xCrossCorrelation } from './xCrossCorrelation';\n/**\n * Calculates the auto-correlation of an array\n * @param A - the array for which to calculate the auto-correlation\n * @param options - Options\n */\nexport function xAutoCorrelation(A, options = {}) {\n    return xCrossCorrelation(A, A, options);\n}\n//# sourceMappingURL=xAutoCorrelation.js.map","import { xCheck } from './xCheck';\n/**\n * Calculating the box plot of the array\n * This function will interpolate the values and use the inclusive algorithm\n * @param array - data\n * @param options\n * @returns - q1, median, q3, min, max\n */\nexport function xBoxPlot(array) {\n    xCheck(array);\n    // duplicate the array to avoid modifying the original one\n    // and sort typed array that is much faster than sorting a normal array\n    array = Float64Array.from(array).sort();\n    const posQ1 = (array.length - 1) / 4;\n    const posQ3 = (array.length - 1) * (3 / 4);\n    const medianPos = (array.length - 1) / 2;\n    const q1MinProportion = posQ1 % 1;\n    const q3MinProportion = posQ3 % 1;\n    const medianMinProportion = medianPos % 1;\n    return {\n        min: array[0],\n        q1: q1MinProportion === 0\n            ? array[posQ1]\n            : array[posQ1 >> 0] * (1 - q1MinProportion) +\n                array[(posQ1 >> 0) + 1] * q1MinProportion,\n        median: medianMinProportion === 0\n            ? array[medianPos]\n            : array[medianPos >> 0] * (1 - medianMinProportion) +\n                array[(medianPos >> 0) + 1] * medianMinProportion,\n        q3: q3MinProportion === 0\n            ? array[posQ3]\n            : array[posQ3 >> 0] * (1 - q3MinProportion) +\n                array[(posQ3 >> 0) + 1] * q3MinProportion,\n        max: array.at(-1),\n    };\n}\n//# sourceMappingURL=xBoxPlot.js.map","import { xBoxPlot } from './xBoxPlot';\n/**\n * Calculating the box plot of the array with outliers\n * Values are outliers if they are below Q1 - 1.5 * IQR or above Q3 + 1.5 * IQR\n * @param array - data\n * @returns - q1, median, q3, min, max, outliers\n */\nexport function xBoxPlotWithOutliers(array) {\n    const boxPlot = xBoxPlot(array);\n    const iqr = boxPlot.q3 - boxPlot.q1;\n    const lowerWhisker = boxPlot.q1 - 1.5 * iqr;\n    const upperWhisker = boxPlot.q3 + 1.5 * iqr;\n    const outliers = [];\n    let minWhisker = boxPlot.median;\n    let maxWhisker = boxPlot.median;\n    for (const value of array) {\n        if (value < lowerWhisker || value > upperWhisker) {\n            outliers.push(value);\n        }\n        else {\n            if (value < minWhisker)\n                minWhisker = value;\n            if (value > maxWhisker)\n                maxWhisker = value;\n        }\n    }\n    const info = {\n        ...boxPlot,\n        lowerWhisker,\n        upperWhisker,\n        minWhisker,\n        maxWhisker,\n        iqr,\n        outliers,\n    };\n    return info;\n}\n//# sourceMappingURL=xBoxPlotWithOutliers.js.map","/**\n * Check that two arrays have the same length.\n * @param array1 - First array.\n * @param array2 - Second array.\n */\nexport function xCheckLengths(array1, array2) {\n    if (array1.length !== array2.length) {\n        throw new TypeError('length of array1 and array2 must be identical');\n    }\n}\n//# sourceMappingURL=xCheckLengths.js.map","/**\n * Calculates the correlation between 2 vectors\n * https://en.wikipedia.org/wiki/Correlation_and_dependence\n * @param A - first array\n * @param B - sencond array\n */\nexport function xCorrelation(A, B) {\n    const n = A.length;\n    let sumA = 0;\n    let sumA2 = 0;\n    let sumB = 0;\n    let sumB2 = 0;\n    let sumAB = 0;\n    for (let i = 0; i < n; i++) {\n        const a = A[i];\n        const b = B[i];\n        sumA += a;\n        sumA2 += a ** 2;\n        sumB += b;\n        sumB2 += b ** 2;\n        sumAB += a * b;\n    }\n    return ((n * sumAB - sumA * sumB) /\n        (Math.sqrt(n * sumA2 - sumA ** 2) * Math.sqrt(n * sumB2 - sumB ** 2)));\n}\n//# sourceMappingURL=xCorrelation.js.map","import { isAnyArray } from 'is-any-array';\n\nfunction max(input) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (!isAnyArray(input)) {\n    throw new TypeError('input must be an array');\n  }\n\n  if (input.length === 0) {\n    throw new TypeError('input must not be empty');\n  }\n\n  var _options$fromIndex = options.fromIndex,\n      fromIndex = _options$fromIndex === void 0 ? 0 : _options$fromIndex,\n      _options$toIndex = options.toIndex,\n      toIndex = _options$toIndex === void 0 ? input.length : _options$toIndex;\n\n  if (fromIndex < 0 || fromIndex >= input.length || !Number.isInteger(fromIndex)) {\n    throw new Error('fromIndex must be a positive integer smaller than length');\n  }\n\n  if (toIndex <= fromIndex || toIndex > input.length || !Number.isInteger(toIndex)) {\n    throw new Error('toIndex must be an integer greater than fromIndex and at most equal to length');\n  }\n\n  var maxValue = input[fromIndex];\n\n  for (var i = fromIndex + 1; i < toIndex; i++) {\n    if (input[i] > maxValue) maxValue = input[i];\n  }\n\n  return maxValue;\n}\n\nexport { max as default };\n","import { isAnyArray } from 'is-any-array';\n\nfunction min(input) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (!isAnyArray(input)) {\n    throw new TypeError('input must be an array');\n  }\n\n  if (input.length === 0) {\n    throw new TypeError('input must not be empty');\n  }\n\n  var _options$fromIndex = options.fromIndex,\n      fromIndex = _options$fromIndex === void 0 ? 0 : _options$fromIndex,\n      _options$toIndex = options.toIndex,\n      toIndex = _options$toIndex === void 0 ? input.length : _options$toIndex;\n\n  if (fromIndex < 0 || fromIndex >= input.length || !Number.isInteger(fromIndex)) {\n    throw new Error('fromIndex must be a positive integer smaller than length');\n  }\n\n  if (toIndex <= fromIndex || toIndex > input.length || !Number.isInteger(toIndex)) {\n    throw new Error('toIndex must be an integer greater than fromIndex and at most equal to length');\n  }\n\n  var minValue = input[fromIndex];\n\n  for (var i = fromIndex + 1; i < toIndex; i++) {\n    if (input[i] < minValue) minValue = input[i];\n  }\n\n  return minValue;\n}\n\nexport { min as default };\n","import { isAnyArray } from 'is-any-array';\nimport max from 'ml-array-max';\nimport min from 'ml-array-min';\n\nfunction rescale(input) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (!isAnyArray(input)) {\n    throw new TypeError('input must be an array');\n  } else if (input.length === 0) {\n    throw new TypeError('input must not be empty');\n  }\n\n  var output;\n\n  if (options.output !== undefined) {\n    if (!isAnyArray(options.output)) {\n      throw new TypeError('output option must be an array if specified');\n    }\n\n    output = options.output;\n  } else {\n    output = new Array(input.length);\n  }\n\n  var currentMin = min(input);\n  var currentMax = max(input);\n\n  if (currentMin === currentMax) {\n    throw new RangeError('minimum and maximum input values are equal. Cannot rescale a constant array');\n  }\n\n  var _options$min = options.min,\n      minValue = _options$min === void 0 ? options.autoMinMax ? currentMin : 0 : _options$min,\n      _options$max = options.max,\n      maxValue = _options$max === void 0 ? options.autoMinMax ? currentMax : 1 : _options$max;\n\n  if (minValue >= maxValue) {\n    throw new RangeError('min option must be smaller than max option');\n  }\n\n  var factor = (maxValue - minValue) / (currentMax - currentMin);\n\n  for (var i = 0; i < input.length; i++) {\n    output[i] = (input[i] - currentMin) * factor + minValue;\n  }\n\n  return output;\n}\n\nexport { rescale as default };\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar isAnyArray = require('is-any-array');\nvar rescale = require('ml-array-rescale');\n\nconst indent = ' '.repeat(2);\nconst indentData = ' '.repeat(4);\n\n/**\n * @this {Matrix}\n * @returns {string}\n */\nfunction inspectMatrix() {\n  return inspectMatrixWithOptions(this);\n}\n\nfunction inspectMatrixWithOptions(matrix, options = {}) {\n  const {\n    maxRows = 15,\n    maxColumns = 10,\n    maxNumSize = 8,\n    padMinus = 'auto',\n  } = options;\n  return `${matrix.constructor.name} {\n${indent}[\n${indentData}${inspectData(matrix, maxRows, maxColumns, maxNumSize, padMinus)}\n${indent}]\n${indent}rows: ${matrix.rows}\n${indent}columns: ${matrix.columns}\n}`;\n}\n\nfunction inspectData(matrix, maxRows, maxColumns, maxNumSize, padMinus) {\n  const { rows, columns } = matrix;\n  const maxI = Math.min(rows, maxRows);\n  const maxJ = Math.min(columns, maxColumns);\n  const result = [];\n\n  if (padMinus === 'auto') {\n    padMinus = false;\n    loop: for (let i = 0; i < maxI; i++) {\n      for (let j = 0; j < maxJ; j++) {\n        if (matrix.get(i, j) < 0) {\n          padMinus = true;\n          break loop;\n        }\n      }\n    }\n  }\n\n  for (let i = 0; i < maxI; i++) {\n    let line = [];\n    for (let j = 0; j < maxJ; j++) {\n      line.push(formatNumber(matrix.get(i, j), maxNumSize, padMinus));\n    }\n    result.push(`${line.join(' ')}`);\n  }\n  if (maxJ !== columns) {\n    result[result.length - 1] += ` ... ${columns - maxColumns} more columns`;\n  }\n  if (maxI !== rows) {\n    result.push(`... ${rows - maxRows} more rows`);\n  }\n  return result.join(`\\n${indentData}`);\n}\n\nfunction formatNumber(num, maxNumSize, padMinus) {\n  return (\n    num >= 0 && padMinus\n      ? ` ${formatNumber2(num, maxNumSize - 1)}`\n      : formatNumber2(num, maxNumSize)\n  ).padEnd(maxNumSize);\n}\n\nfunction formatNumber2(num, len) {\n  // small.length numbers should be as is\n  let str = num.toString();\n  if (str.length <= len) return str;\n\n  // (7)'0.00123' is better then (7)'1.23e-2'\n  // (8)'0.000123' is worse then (7)'1.23e-3',\n  let fix = num.toFixed(len);\n  if (fix.length > len) {\n    fix = num.toFixed(Math.max(0, len - (fix.length - len)));\n  }\n  if (\n    fix.length <= len &&\n    !fix.startsWith('0.000') &&\n    !fix.startsWith('-0.000')\n  ) {\n    return fix;\n  }\n\n  // well, if it's still too long the user should've used longer numbers\n  let exp = num.toExponential(len);\n  if (exp.length > len) {\n    exp = num.toExponential(Math.max(0, len - (exp.length - len)));\n  }\n  return exp.slice(0);\n}\n\nfunction installMathOperations(AbstractMatrix, Matrix) {\n  AbstractMatrix.prototype.add = function add(value) {\n    if (typeof value === 'number') return this.addS(value);\n    return this.addM(value);\n  };\n\n  AbstractMatrix.prototype.addS = function addS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) + value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.addM = function addM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) + matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.add = function add(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.add(value);\n  };\n\n  AbstractMatrix.prototype.sub = function sub(value) {\n    if (typeof value === 'number') return this.subS(value);\n    return this.subM(value);\n  };\n\n  AbstractMatrix.prototype.subS = function subS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) - value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.subM = function subM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) - matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.sub = function sub(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.sub(value);\n  };\n  AbstractMatrix.prototype.subtract = AbstractMatrix.prototype.sub;\n  AbstractMatrix.prototype.subtractS = AbstractMatrix.prototype.subS;\n  AbstractMatrix.prototype.subtractM = AbstractMatrix.prototype.subM;\n  AbstractMatrix.subtract = AbstractMatrix.sub;\n\n  AbstractMatrix.prototype.mul = function mul(value) {\n    if (typeof value === 'number') return this.mulS(value);\n    return this.mulM(value);\n  };\n\n  AbstractMatrix.prototype.mulS = function mulS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) * value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.mulM = function mulM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) * matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.mul = function mul(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.mul(value);\n  };\n  AbstractMatrix.prototype.multiply = AbstractMatrix.prototype.mul;\n  AbstractMatrix.prototype.multiplyS = AbstractMatrix.prototype.mulS;\n  AbstractMatrix.prototype.multiplyM = AbstractMatrix.prototype.mulM;\n  AbstractMatrix.multiply = AbstractMatrix.mul;\n\n  AbstractMatrix.prototype.div = function div(value) {\n    if (typeof value === 'number') return this.divS(value);\n    return this.divM(value);\n  };\n\n  AbstractMatrix.prototype.divS = function divS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) / value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.divM = function divM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) / matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.div = function div(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.div(value);\n  };\n  AbstractMatrix.prototype.divide = AbstractMatrix.prototype.div;\n  AbstractMatrix.prototype.divideS = AbstractMatrix.prototype.divS;\n  AbstractMatrix.prototype.divideM = AbstractMatrix.prototype.divM;\n  AbstractMatrix.divide = AbstractMatrix.div;\n\n  AbstractMatrix.prototype.mod = function mod(value) {\n    if (typeof value === 'number') return this.modS(value);\n    return this.modM(value);\n  };\n\n  AbstractMatrix.prototype.modS = function modS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) % value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.modM = function modM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) % matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.mod = function mod(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.mod(value);\n  };\n  AbstractMatrix.prototype.modulus = AbstractMatrix.prototype.mod;\n  AbstractMatrix.prototype.modulusS = AbstractMatrix.prototype.modS;\n  AbstractMatrix.prototype.modulusM = AbstractMatrix.prototype.modM;\n  AbstractMatrix.modulus = AbstractMatrix.mod;\n\n  AbstractMatrix.prototype.and = function and(value) {\n    if (typeof value === 'number') return this.andS(value);\n    return this.andM(value);\n  };\n\n  AbstractMatrix.prototype.andS = function andS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) & value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.andM = function andM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) & matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.and = function and(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.and(value);\n  };\n\n  AbstractMatrix.prototype.or = function or(value) {\n    if (typeof value === 'number') return this.orS(value);\n    return this.orM(value);\n  };\n\n  AbstractMatrix.prototype.orS = function orS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) | value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.orM = function orM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) | matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.or = function or(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.or(value);\n  };\n\n  AbstractMatrix.prototype.xor = function xor(value) {\n    if (typeof value === 'number') return this.xorS(value);\n    return this.xorM(value);\n  };\n\n  AbstractMatrix.prototype.xorS = function xorS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) ^ value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.xorM = function xorM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) ^ matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.xor = function xor(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.xor(value);\n  };\n\n  AbstractMatrix.prototype.leftShift = function leftShift(value) {\n    if (typeof value === 'number') return this.leftShiftS(value);\n    return this.leftShiftM(value);\n  };\n\n  AbstractMatrix.prototype.leftShiftS = function leftShiftS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) << value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.leftShiftM = function leftShiftM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) << matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.leftShift = function leftShift(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.leftShift(value);\n  };\n\n  AbstractMatrix.prototype.signPropagatingRightShift = function signPropagatingRightShift(value) {\n    if (typeof value === 'number') return this.signPropagatingRightShiftS(value);\n    return this.signPropagatingRightShiftM(value);\n  };\n\n  AbstractMatrix.prototype.signPropagatingRightShiftS = function signPropagatingRightShiftS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) >> value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.signPropagatingRightShiftM = function signPropagatingRightShiftM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) >> matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.signPropagatingRightShift = function signPropagatingRightShift(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.signPropagatingRightShift(value);\n  };\n\n  AbstractMatrix.prototype.rightShift = function rightShift(value) {\n    if (typeof value === 'number') return this.rightShiftS(value);\n    return this.rightShiftM(value);\n  };\n\n  AbstractMatrix.prototype.rightShiftS = function rightShiftS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) >>> value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.rightShiftM = function rightShiftM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) >>> matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.rightShift = function rightShift(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.rightShift(value);\n  };\n  AbstractMatrix.prototype.zeroFillRightShift = AbstractMatrix.prototype.rightShift;\n  AbstractMatrix.prototype.zeroFillRightShiftS = AbstractMatrix.prototype.rightShiftS;\n  AbstractMatrix.prototype.zeroFillRightShiftM = AbstractMatrix.prototype.rightShiftM;\n  AbstractMatrix.zeroFillRightShift = AbstractMatrix.rightShift;\n\n  AbstractMatrix.prototype.not = function not() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, ~(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.not = function not(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.not();\n  };\n\n  AbstractMatrix.prototype.abs = function abs() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.abs(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.abs = function abs(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.abs();\n  };\n\n  AbstractMatrix.prototype.acos = function acos() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.acos(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.acos = function acos(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.acos();\n  };\n\n  AbstractMatrix.prototype.acosh = function acosh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.acosh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.acosh = function acosh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.acosh();\n  };\n\n  AbstractMatrix.prototype.asin = function asin() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.asin(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.asin = function asin(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.asin();\n  };\n\n  AbstractMatrix.prototype.asinh = function asinh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.asinh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.asinh = function asinh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.asinh();\n  };\n\n  AbstractMatrix.prototype.atan = function atan() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.atan(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.atan = function atan(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.atan();\n  };\n\n  AbstractMatrix.prototype.atanh = function atanh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.atanh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.atanh = function atanh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.atanh();\n  };\n\n  AbstractMatrix.prototype.cbrt = function cbrt() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.cbrt(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.cbrt = function cbrt(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.cbrt();\n  };\n\n  AbstractMatrix.prototype.ceil = function ceil() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.ceil(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.ceil = function ceil(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.ceil();\n  };\n\n  AbstractMatrix.prototype.clz32 = function clz32() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.clz32(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.clz32 = function clz32(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.clz32();\n  };\n\n  AbstractMatrix.prototype.cos = function cos() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.cos(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.cos = function cos(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.cos();\n  };\n\n  AbstractMatrix.prototype.cosh = function cosh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.cosh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.cosh = function cosh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.cosh();\n  };\n\n  AbstractMatrix.prototype.exp = function exp() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.exp(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.exp = function exp(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.exp();\n  };\n\n  AbstractMatrix.prototype.expm1 = function expm1() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.expm1(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.expm1 = function expm1(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.expm1();\n  };\n\n  AbstractMatrix.prototype.floor = function floor() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.floor(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.floor = function floor(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.floor();\n  };\n\n  AbstractMatrix.prototype.fround = function fround() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.fround(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.fround = function fround(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.fround();\n  };\n\n  AbstractMatrix.prototype.log = function log() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.log(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.log = function log(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.log();\n  };\n\n  AbstractMatrix.prototype.log1p = function log1p() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.log1p(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.log1p = function log1p(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.log1p();\n  };\n\n  AbstractMatrix.prototype.log10 = function log10() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.log10(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.log10 = function log10(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.log10();\n  };\n\n  AbstractMatrix.prototype.log2 = function log2() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.log2(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.log2 = function log2(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.log2();\n  };\n\n  AbstractMatrix.prototype.round = function round() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.round(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.round = function round(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.round();\n  };\n\n  AbstractMatrix.prototype.sign = function sign() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.sign(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.sign = function sign(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.sign();\n  };\n\n  AbstractMatrix.prototype.sin = function sin() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.sin(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.sin = function sin(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.sin();\n  };\n\n  AbstractMatrix.prototype.sinh = function sinh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.sinh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.sinh = function sinh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.sinh();\n  };\n\n  AbstractMatrix.prototype.sqrt = function sqrt() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.sqrt(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.sqrt = function sqrt(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.sqrt();\n  };\n\n  AbstractMatrix.prototype.tan = function tan() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.tan(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.tan = function tan(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.tan();\n  };\n\n  AbstractMatrix.prototype.tanh = function tanh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.tanh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.tanh = function tanh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.tanh();\n  };\n\n  AbstractMatrix.prototype.trunc = function trunc() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.trunc(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.trunc = function trunc(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.trunc();\n  };\n\n  AbstractMatrix.pow = function pow(matrix, arg0) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.pow(arg0);\n  };\n\n  AbstractMatrix.prototype.pow = function pow(value) {\n    if (typeof value === 'number') return this.powS(value);\n    return this.powM(value);\n  };\n\n  AbstractMatrix.prototype.powS = function powS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) ** value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.powM = function powM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) ** matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n}\n\n/**\n * @private\n * Check that a row index is not out of bounds\n * @param {Matrix} matrix\n * @param {number} index\n * @param {boolean} [outer]\n */\nfunction checkRowIndex(matrix, index, outer) {\n  let max = outer ? matrix.rows : matrix.rows - 1;\n  if (index < 0 || index > max) {\n    throw new RangeError('Row index out of range');\n  }\n}\n\n/**\n * @private\n * Check that a column index is not out of bounds\n * @param {Matrix} matrix\n * @param {number} index\n * @param {boolean} [outer]\n */\nfunction checkColumnIndex(matrix, index, outer) {\n  let max = outer ? matrix.columns : matrix.columns - 1;\n  if (index < 0 || index > max) {\n    throw new RangeError('Column index out of range');\n  }\n}\n\n/**\n * @private\n * Check that the provided vector is an array with the right length\n * @param {Matrix} matrix\n * @param {Array|Matrix} vector\n * @return {Array}\n * @throws {RangeError}\n */\nfunction checkRowVector(matrix, vector) {\n  if (vector.to1DArray) {\n    vector = vector.to1DArray();\n  }\n  if (vector.length !== matrix.columns) {\n    throw new RangeError(\n      'vector size must be the same as the number of columns',\n    );\n  }\n  return vector;\n}\n\n/**\n * @private\n * Check that the provided vector is an array with the right length\n * @param {Matrix} matrix\n * @param {Array|Matrix} vector\n * @return {Array}\n * @throws {RangeError}\n */\nfunction checkColumnVector(matrix, vector) {\n  if (vector.to1DArray) {\n    vector = vector.to1DArray();\n  }\n  if (vector.length !== matrix.rows) {\n    throw new RangeError('vector size must be the same as the number of rows');\n  }\n  return vector;\n}\n\nfunction checkRowIndices(matrix, rowIndices) {\n  if (!isAnyArray.isAnyArray(rowIndices)) {\n    throw new TypeError('row indices must be an array');\n  }\n\n  for (let i = 0; i < rowIndices.length; i++) {\n    if (rowIndices[i] < 0 || rowIndices[i] >= matrix.rows) {\n      throw new RangeError('row indices are out of range');\n    }\n  }\n}\n\nfunction checkColumnIndices(matrix, columnIndices) {\n  if (!isAnyArray.isAnyArray(columnIndices)) {\n    throw new TypeError('column indices must be an array');\n  }\n\n  for (let i = 0; i < columnIndices.length; i++) {\n    if (columnIndices[i] < 0 || columnIndices[i] >= matrix.columns) {\n      throw new RangeError('column indices are out of range');\n    }\n  }\n}\n\nfunction checkRange(matrix, startRow, endRow, startColumn, endColumn) {\n  if (arguments.length !== 5) {\n    throw new RangeError('expected 4 arguments');\n  }\n  checkNumber('startRow', startRow);\n  checkNumber('endRow', endRow);\n  checkNumber('startColumn', startColumn);\n  checkNumber('endColumn', endColumn);\n  if (\n    startRow > endRow ||\n    startColumn > endColumn ||\n    startRow < 0 ||\n    startRow >= matrix.rows ||\n    endRow < 0 ||\n    endRow >= matrix.rows ||\n    startColumn < 0 ||\n    startColumn >= matrix.columns ||\n    endColumn < 0 ||\n    endColumn >= matrix.columns\n  ) {\n    throw new RangeError('Submatrix indices are out of range');\n  }\n}\n\nfunction newArray(length, value = 0) {\n  let array = [];\n  for (let i = 0; i < length; i++) {\n    array.push(value);\n  }\n  return array;\n}\n\nfunction checkNumber(name, value) {\n  if (typeof value !== 'number') {\n    throw new TypeError(`${name} must be a number`);\n  }\n}\n\nfunction checkNonEmpty(matrix) {\n  if (matrix.isEmpty()) {\n    throw new Error('Empty matrix has no elements to index');\n  }\n}\n\nfunction sumByRow(matrix) {\n  let sum = newArray(matrix.rows);\n  for (let i = 0; i < matrix.rows; ++i) {\n    for (let j = 0; j < matrix.columns; ++j) {\n      sum[i] += matrix.get(i, j);\n    }\n  }\n  return sum;\n}\n\nfunction sumByColumn(matrix) {\n  let sum = newArray(matrix.columns);\n  for (let i = 0; i < matrix.rows; ++i) {\n    for (let j = 0; j < matrix.columns; ++j) {\n      sum[j] += matrix.get(i, j);\n    }\n  }\n  return sum;\n}\n\nfunction sumAll(matrix) {\n  let v = 0;\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      v += matrix.get(i, j);\n    }\n  }\n  return v;\n}\n\nfunction productByRow(matrix) {\n  let sum = newArray(matrix.rows, 1);\n  for (let i = 0; i < matrix.rows; ++i) {\n    for (let j = 0; j < matrix.columns; ++j) {\n      sum[i] *= matrix.get(i, j);\n    }\n  }\n  return sum;\n}\n\nfunction productByColumn(matrix) {\n  let sum = newArray(matrix.columns, 1);\n  for (let i = 0; i < matrix.rows; ++i) {\n    for (let j = 0; j < matrix.columns; ++j) {\n      sum[j] *= matrix.get(i, j);\n    }\n  }\n  return sum;\n}\n\nfunction productAll(matrix) {\n  let v = 1;\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      v *= matrix.get(i, j);\n    }\n  }\n  return v;\n}\n\nfunction varianceByRow(matrix, unbiased, mean) {\n  const rows = matrix.rows;\n  const cols = matrix.columns;\n  const variance = [];\n\n  for (let i = 0; i < rows; i++) {\n    let sum1 = 0;\n    let sum2 = 0;\n    let x = 0;\n    for (let j = 0; j < cols; j++) {\n      x = matrix.get(i, j) - mean[i];\n      sum1 += x;\n      sum2 += x * x;\n    }\n    if (unbiased) {\n      variance.push((sum2 - (sum1 * sum1) / cols) / (cols - 1));\n    } else {\n      variance.push((sum2 - (sum1 * sum1) / cols) / cols);\n    }\n  }\n  return variance;\n}\n\nfunction varianceByColumn(matrix, unbiased, mean) {\n  const rows = matrix.rows;\n  const cols = matrix.columns;\n  const variance = [];\n\n  for (let j = 0; j < cols; j++) {\n    let sum1 = 0;\n    let sum2 = 0;\n    let x = 0;\n    for (let i = 0; i < rows; i++) {\n      x = matrix.get(i, j) - mean[j];\n      sum1 += x;\n      sum2 += x * x;\n    }\n    if (unbiased) {\n      variance.push((sum2 - (sum1 * sum1) / rows) / (rows - 1));\n    } else {\n      variance.push((sum2 - (sum1 * sum1) / rows) / rows);\n    }\n  }\n  return variance;\n}\n\nfunction varianceAll(matrix, unbiased, mean) {\n  const rows = matrix.rows;\n  const cols = matrix.columns;\n  const size = rows * cols;\n\n  let sum1 = 0;\n  let sum2 = 0;\n  let x = 0;\n  for (let i = 0; i < rows; i++) {\n    for (let j = 0; j < cols; j++) {\n      x = matrix.get(i, j) - mean;\n      sum1 += x;\n      sum2 += x * x;\n    }\n  }\n  if (unbiased) {\n    return (sum2 - (sum1 * sum1) / size) / (size - 1);\n  } else {\n    return (sum2 - (sum1 * sum1) / size) / size;\n  }\n}\n\nfunction centerByRow(matrix, mean) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) - mean[i]);\n    }\n  }\n}\n\nfunction centerByColumn(matrix, mean) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) - mean[j]);\n    }\n  }\n}\n\nfunction centerAll(matrix, mean) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) - mean);\n    }\n  }\n}\n\nfunction getScaleByRow(matrix) {\n  const scale = [];\n  for (let i = 0; i < matrix.rows; i++) {\n    let sum = 0;\n    for (let j = 0; j < matrix.columns; j++) {\n      sum += matrix.get(i, j) ** 2 / (matrix.columns - 1);\n    }\n    scale.push(Math.sqrt(sum));\n  }\n  return scale;\n}\n\nfunction scaleByRow(matrix, scale) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) / scale[i]);\n    }\n  }\n}\n\nfunction getScaleByColumn(matrix) {\n  const scale = [];\n  for (let j = 0; j < matrix.columns; j++) {\n    let sum = 0;\n    for (let i = 0; i < matrix.rows; i++) {\n      sum += matrix.get(i, j) ** 2 / (matrix.rows - 1);\n    }\n    scale.push(Math.sqrt(sum));\n  }\n  return scale;\n}\n\nfunction scaleByColumn(matrix, scale) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) / scale[j]);\n    }\n  }\n}\n\nfunction getScaleAll(matrix) {\n  const divider = matrix.size - 1;\n  let sum = 0;\n  for (let j = 0; j < matrix.columns; j++) {\n    for (let i = 0; i < matrix.rows; i++) {\n      sum += matrix.get(i, j) ** 2 / divider;\n    }\n  }\n  return Math.sqrt(sum);\n}\n\nfunction scaleAll(matrix, scale) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) / scale);\n    }\n  }\n}\n\nclass AbstractMatrix {\n  static from1DArray(newRows, newColumns, newData) {\n    let length = newRows * newColumns;\n    if (length !== newData.length) {\n      throw new RangeError('data length does not match given dimensions');\n    }\n    let newMatrix = new Matrix(newRows, newColumns);\n    for (let row = 0; row < newRows; row++) {\n      for (let column = 0; column < newColumns; column++) {\n        newMatrix.set(row, column, newData[row * newColumns + column]);\n      }\n    }\n    return newMatrix;\n  }\n\n  static rowVector(newData) {\n    let vector = new Matrix(1, newData.length);\n    for (let i = 0; i < newData.length; i++) {\n      vector.set(0, i, newData[i]);\n    }\n    return vector;\n  }\n\n  static columnVector(newData) {\n    let vector = new Matrix(newData.length, 1);\n    for (let i = 0; i < newData.length; i++) {\n      vector.set(i, 0, newData[i]);\n    }\n    return vector;\n  }\n\n  static zeros(rows, columns) {\n    return new Matrix(rows, columns);\n  }\n\n  static ones(rows, columns) {\n    return new Matrix(rows, columns).fill(1);\n  }\n\n  static rand(rows, columns, options = {}) {\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { random = Math.random } = options;\n    let matrix = new Matrix(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        matrix.set(i, j, random());\n      }\n    }\n    return matrix;\n  }\n\n  static randInt(rows, columns, options = {}) {\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { min = 0, max = 1000, random = Math.random } = options;\n    if (!Number.isInteger(min)) throw new TypeError('min must be an integer');\n    if (!Number.isInteger(max)) throw new TypeError('max must be an integer');\n    if (min >= max) throw new RangeError('min must be smaller than max');\n    let interval = max - min;\n    let matrix = new Matrix(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        let value = min + Math.round(random() * interval);\n        matrix.set(i, j, value);\n      }\n    }\n    return matrix;\n  }\n\n  static eye(rows, columns, value) {\n    if (columns === undefined) columns = rows;\n    if (value === undefined) value = 1;\n    let min = Math.min(rows, columns);\n    let matrix = this.zeros(rows, columns);\n    for (let i = 0; i < min; i++) {\n      matrix.set(i, i, value);\n    }\n    return matrix;\n  }\n\n  static diag(data, rows, columns) {\n    let l = data.length;\n    if (rows === undefined) rows = l;\n    if (columns === undefined) columns = rows;\n    let min = Math.min(l, rows, columns);\n    let matrix = this.zeros(rows, columns);\n    for (let i = 0; i < min; i++) {\n      matrix.set(i, i, data[i]);\n    }\n    return matrix;\n  }\n\n  static min(matrix1, matrix2) {\n    matrix1 = this.checkMatrix(matrix1);\n    matrix2 = this.checkMatrix(matrix2);\n    let rows = matrix1.rows;\n    let columns = matrix1.columns;\n    let result = new Matrix(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        result.set(i, j, Math.min(matrix1.get(i, j), matrix2.get(i, j)));\n      }\n    }\n    return result;\n  }\n\n  static max(matrix1, matrix2) {\n    matrix1 = this.checkMatrix(matrix1);\n    matrix2 = this.checkMatrix(matrix2);\n    let rows = matrix1.rows;\n    let columns = matrix1.columns;\n    let result = new this(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        result.set(i, j, Math.max(matrix1.get(i, j), matrix2.get(i, j)));\n      }\n    }\n    return result;\n  }\n\n  static checkMatrix(value) {\n    return AbstractMatrix.isMatrix(value) ? value : new Matrix(value);\n  }\n\n  static isMatrix(value) {\n    return value != null && value.klass === 'Matrix';\n  }\n\n  get size() {\n    return this.rows * this.columns;\n  }\n\n  apply(callback) {\n    if (typeof callback !== 'function') {\n      throw new TypeError('callback must be a function');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        callback.call(this, i, j);\n      }\n    }\n    return this;\n  }\n\n  to1DArray() {\n    let array = [];\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        array.push(this.get(i, j));\n      }\n    }\n    return array;\n  }\n\n  to2DArray() {\n    let copy = [];\n    for (let i = 0; i < this.rows; i++) {\n      copy.push([]);\n      for (let j = 0; j < this.columns; j++) {\n        copy[i].push(this.get(i, j));\n      }\n    }\n    return copy;\n  }\n\n  toJSON() {\n    return this.to2DArray();\n  }\n\n  isRowVector() {\n    return this.rows === 1;\n  }\n\n  isColumnVector() {\n    return this.columns === 1;\n  }\n\n  isVector() {\n    return this.rows === 1 || this.columns === 1;\n  }\n\n  isSquare() {\n    return this.rows === this.columns;\n  }\n\n  isEmpty() {\n    return this.rows === 0 || this.columns === 0;\n  }\n\n  isSymmetric() {\n    if (this.isSquare()) {\n      for (let i = 0; i < this.rows; i++) {\n        for (let j = 0; j <= i; j++) {\n          if (this.get(i, j) !== this.get(j, i)) {\n            return false;\n          }\n        }\n      }\n      return true;\n    }\n    return false;\n  }\n\n  isDistance() {\n    if (!this.isSymmetric()) return false;\n\n    for (let i = 0; i < this.rows; i++) {\n      if (this.get(i, i) !== 0) return false;\n    }\n\n    return true;\n  }\n\n  isEchelonForm() {\n    let i = 0;\n    let j = 0;\n    let previousColumn = -1;\n    let isEchelonForm = true;\n    let checked = false;\n    while (i < this.rows && isEchelonForm) {\n      j = 0;\n      checked = false;\n      while (j < this.columns && checked === false) {\n        if (this.get(i, j) === 0) {\n          j++;\n        } else if (this.get(i, j) === 1 && j > previousColumn) {\n          checked = true;\n          previousColumn = j;\n        } else {\n          isEchelonForm = false;\n          checked = true;\n        }\n      }\n      i++;\n    }\n    return isEchelonForm;\n  }\n\n  isReducedEchelonForm() {\n    let i = 0;\n    let j = 0;\n    let previousColumn = -1;\n    let isReducedEchelonForm = true;\n    let checked = false;\n    while (i < this.rows && isReducedEchelonForm) {\n      j = 0;\n      checked = false;\n      while (j < this.columns && checked === false) {\n        if (this.get(i, j) === 0) {\n          j++;\n        } else if (this.get(i, j) === 1 && j > previousColumn) {\n          checked = true;\n          previousColumn = j;\n        } else {\n          isReducedEchelonForm = false;\n          checked = true;\n        }\n      }\n      for (let k = j + 1; k < this.rows; k++) {\n        if (this.get(i, k) !== 0) {\n          isReducedEchelonForm = false;\n        }\n      }\n      i++;\n    }\n    return isReducedEchelonForm;\n  }\n\n  echelonForm() {\n    let result = this.clone();\n    let h = 0;\n    let k = 0;\n    while (h < result.rows && k < result.columns) {\n      let iMax = h;\n      for (let i = h; i < result.rows; i++) {\n        if (result.get(i, k) > result.get(iMax, k)) {\n          iMax = i;\n        }\n      }\n      if (result.get(iMax, k) === 0) {\n        k++;\n      } else {\n        result.swapRows(h, iMax);\n        let tmp = result.get(h, k);\n        for (let j = k; j < result.columns; j++) {\n          result.set(h, j, result.get(h, j) / tmp);\n        }\n        for (let i = h + 1; i < result.rows; i++) {\n          let factor = result.get(i, k) / result.get(h, k);\n          result.set(i, k, 0);\n          for (let j = k + 1; j < result.columns; j++) {\n            result.set(i, j, result.get(i, j) - result.get(h, j) * factor);\n          }\n        }\n        h++;\n        k++;\n      }\n    }\n    return result;\n  }\n\n  reducedEchelonForm() {\n    let result = this.echelonForm();\n    let m = result.columns;\n    let n = result.rows;\n    let h = n - 1;\n    while (h >= 0) {\n      if (result.maxRow(h) === 0) {\n        h--;\n      } else {\n        let p = 0;\n        let pivot = false;\n        while (p < n && pivot === false) {\n          if (result.get(h, p) === 1) {\n            pivot = true;\n          } else {\n            p++;\n          }\n        }\n        for (let i = 0; i < h; i++) {\n          let factor = result.get(i, p);\n          for (let j = p; j < m; j++) {\n            let tmp = result.get(i, j) - factor * result.get(h, j);\n            result.set(i, j, tmp);\n          }\n        }\n        h--;\n      }\n    }\n    return result;\n  }\n\n  set() {\n    throw new Error('set method is unimplemented');\n  }\n\n  get() {\n    throw new Error('get method is unimplemented');\n  }\n\n  repeat(options = {}) {\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { rows = 1, columns = 1 } = options;\n    if (!Number.isInteger(rows) || rows <= 0) {\n      throw new TypeError('rows must be a positive integer');\n    }\n    if (!Number.isInteger(columns) || columns <= 0) {\n      throw new TypeError('columns must be a positive integer');\n    }\n    let matrix = new Matrix(this.rows * rows, this.columns * columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        matrix.setSubMatrix(this, this.rows * i, this.columns * j);\n      }\n    }\n    return matrix;\n  }\n\n  fill(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, value);\n      }\n    }\n    return this;\n  }\n\n  neg() {\n    return this.mulS(-1);\n  }\n\n  getRow(index) {\n    checkRowIndex(this, index);\n    let row = [];\n    for (let i = 0; i < this.columns; i++) {\n      row.push(this.get(index, i));\n    }\n    return row;\n  }\n\n  getRowVector(index) {\n    return Matrix.rowVector(this.getRow(index));\n  }\n\n  setRow(index, array) {\n    checkRowIndex(this, index);\n    array = checkRowVector(this, array);\n    for (let i = 0; i < this.columns; i++) {\n      this.set(index, i, array[i]);\n    }\n    return this;\n  }\n\n  swapRows(row1, row2) {\n    checkRowIndex(this, row1);\n    checkRowIndex(this, row2);\n    for (let i = 0; i < this.columns; i++) {\n      let temp = this.get(row1, i);\n      this.set(row1, i, this.get(row2, i));\n      this.set(row2, i, temp);\n    }\n    return this;\n  }\n\n  getColumn(index) {\n    checkColumnIndex(this, index);\n    let column = [];\n    for (let i = 0; i < this.rows; i++) {\n      column.push(this.get(i, index));\n    }\n    return column;\n  }\n\n  getColumnVector(index) {\n    return Matrix.columnVector(this.getColumn(index));\n  }\n\n  setColumn(index, array) {\n    checkColumnIndex(this, index);\n    array = checkColumnVector(this, array);\n    for (let i = 0; i < this.rows; i++) {\n      this.set(i, index, array[i]);\n    }\n    return this;\n  }\n\n  swapColumns(column1, column2) {\n    checkColumnIndex(this, column1);\n    checkColumnIndex(this, column2);\n    for (let i = 0; i < this.rows; i++) {\n      let temp = this.get(i, column1);\n      this.set(i, column1, this.get(i, column2));\n      this.set(i, column2, temp);\n    }\n    return this;\n  }\n\n  addRowVector(vector) {\n    vector = checkRowVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) + vector[j]);\n      }\n    }\n    return this;\n  }\n\n  subRowVector(vector) {\n    vector = checkRowVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) - vector[j]);\n      }\n    }\n    return this;\n  }\n\n  mulRowVector(vector) {\n    vector = checkRowVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) * vector[j]);\n      }\n    }\n    return this;\n  }\n\n  divRowVector(vector) {\n    vector = checkRowVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) / vector[j]);\n      }\n    }\n    return this;\n  }\n\n  addColumnVector(vector) {\n    vector = checkColumnVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) + vector[i]);\n      }\n    }\n    return this;\n  }\n\n  subColumnVector(vector) {\n    vector = checkColumnVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) - vector[i]);\n      }\n    }\n    return this;\n  }\n\n  mulColumnVector(vector) {\n    vector = checkColumnVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) * vector[i]);\n      }\n    }\n    return this;\n  }\n\n  divColumnVector(vector) {\n    vector = checkColumnVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) / vector[i]);\n      }\n    }\n    return this;\n  }\n\n  mulRow(index, value) {\n    checkRowIndex(this, index);\n    for (let i = 0; i < this.columns; i++) {\n      this.set(index, i, this.get(index, i) * value);\n    }\n    return this;\n  }\n\n  mulColumn(index, value) {\n    checkColumnIndex(this, index);\n    for (let i = 0; i < this.rows; i++) {\n      this.set(i, index, this.get(i, index) * value);\n    }\n    return this;\n  }\n\n  max(by) {\n    if (this.isEmpty()) {\n      return NaN;\n    }\n    switch (by) {\n      case 'row': {\n        const max = new Array(this.rows).fill(Number.NEGATIVE_INFINITY);\n        for (let row = 0; row < this.rows; row++) {\n          for (let column = 0; column < this.columns; column++) {\n            if (this.get(row, column) > max[row]) {\n              max[row] = this.get(row, column);\n            }\n          }\n        }\n        return max;\n      }\n      case 'column': {\n        const max = new Array(this.columns).fill(Number.NEGATIVE_INFINITY);\n        for (let row = 0; row < this.rows; row++) {\n          for (let column = 0; column < this.columns; column++) {\n            if (this.get(row, column) > max[column]) {\n              max[column] = this.get(row, column);\n            }\n          }\n        }\n        return max;\n      }\n      case undefined: {\n        let max = this.get(0, 0);\n        for (let row = 0; row < this.rows; row++) {\n          for (let column = 0; column < this.columns; column++) {\n            if (this.get(row, column) > max) {\n              max = this.get(row, column);\n            }\n          }\n        }\n        return max;\n      }\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  maxIndex() {\n    checkNonEmpty(this);\n    let v = this.get(0, 0);\n    let idx = [0, 0];\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        if (this.get(i, j) > v) {\n          v = this.get(i, j);\n          idx[0] = i;\n          idx[1] = j;\n        }\n      }\n    }\n    return idx;\n  }\n\n  min(by) {\n    if (this.isEmpty()) {\n      return NaN;\n    }\n\n    switch (by) {\n      case 'row': {\n        const min = new Array(this.rows).fill(Number.POSITIVE_INFINITY);\n        for (let row = 0; row < this.rows; row++) {\n          for (let column = 0; column < this.columns; column++) {\n            if (this.get(row, column) < min[row]) {\n              min[row] = this.get(row, column);\n            }\n          }\n        }\n        return min;\n      }\n      case 'column': {\n        const min = new Array(this.columns).fill(Number.POSITIVE_INFINITY);\n        for (let row = 0; row < this.rows; row++) {\n          for (let column = 0; column < this.columns; column++) {\n            if (this.get(row, column) < min[column]) {\n              min[column] = this.get(row, column);\n            }\n          }\n        }\n        return min;\n      }\n      case undefined: {\n        let min = this.get(0, 0);\n        for (let row = 0; row < this.rows; row++) {\n          for (let column = 0; column < this.columns; column++) {\n            if (this.get(row, column) < min) {\n              min = this.get(row, column);\n            }\n          }\n        }\n        return min;\n      }\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  minIndex() {\n    checkNonEmpty(this);\n    let v = this.get(0, 0);\n    let idx = [0, 0];\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        if (this.get(i, j) < v) {\n          v = this.get(i, j);\n          idx[0] = i;\n          idx[1] = j;\n        }\n      }\n    }\n    return idx;\n  }\n\n  maxRow(row) {\n    checkRowIndex(this, row);\n    if (this.isEmpty()) {\n      return NaN;\n    }\n    let v = this.get(row, 0);\n    for (let i = 1; i < this.columns; i++) {\n      if (this.get(row, i) > v) {\n        v = this.get(row, i);\n      }\n    }\n    return v;\n  }\n\n  maxRowIndex(row) {\n    checkRowIndex(this, row);\n    checkNonEmpty(this);\n    let v = this.get(row, 0);\n    let idx = [row, 0];\n    for (let i = 1; i < this.columns; i++) {\n      if (this.get(row, i) > v) {\n        v = this.get(row, i);\n        idx[1] = i;\n      }\n    }\n    return idx;\n  }\n\n  minRow(row) {\n    checkRowIndex(this, row);\n    if (this.isEmpty()) {\n      return NaN;\n    }\n    let v = this.get(row, 0);\n    for (let i = 1; i < this.columns; i++) {\n      if (this.get(row, i) < v) {\n        v = this.get(row, i);\n      }\n    }\n    return v;\n  }\n\n  minRowIndex(row) {\n    checkRowIndex(this, row);\n    checkNonEmpty(this);\n    let v = this.get(row, 0);\n    let idx = [row, 0];\n    for (let i = 1; i < this.columns; i++) {\n      if (this.get(row, i) < v) {\n        v = this.get(row, i);\n        idx[1] = i;\n      }\n    }\n    return idx;\n  }\n\n  maxColumn(column) {\n    checkColumnIndex(this, column);\n    if (this.isEmpty()) {\n      return NaN;\n    }\n    let v = this.get(0, column);\n    for (let i = 1; i < this.rows; i++) {\n      if (this.get(i, column) > v) {\n        v = this.get(i, column);\n      }\n    }\n    return v;\n  }\n\n  maxColumnIndex(column) {\n    checkColumnIndex(this, column);\n    checkNonEmpty(this);\n    let v = this.get(0, column);\n    let idx = [0, column];\n    for (let i = 1; i < this.rows; i++) {\n      if (this.get(i, column) > v) {\n        v = this.get(i, column);\n        idx[0] = i;\n      }\n    }\n    return idx;\n  }\n\n  minColumn(column) {\n    checkColumnIndex(this, column);\n    if (this.isEmpty()) {\n      return NaN;\n    }\n    let v = this.get(0, column);\n    for (let i = 1; i < this.rows; i++) {\n      if (this.get(i, column) < v) {\n        v = this.get(i, column);\n      }\n    }\n    return v;\n  }\n\n  minColumnIndex(column) {\n    checkColumnIndex(this, column);\n    checkNonEmpty(this);\n    let v = this.get(0, column);\n    let idx = [0, column];\n    for (let i = 1; i < this.rows; i++) {\n      if (this.get(i, column) < v) {\n        v = this.get(i, column);\n        idx[0] = i;\n      }\n    }\n    return idx;\n  }\n\n  diag() {\n    let min = Math.min(this.rows, this.columns);\n    let diag = [];\n    for (let i = 0; i < min; i++) {\n      diag.push(this.get(i, i));\n    }\n    return diag;\n  }\n\n  norm(type = 'frobenius') {\n    switch (type) {\n      case 'max':\n        return this.max();\n      case 'frobenius':\n        return Math.sqrt(this.dot(this));\n      default:\n        throw new RangeError(`unknown norm type: ${type}`);\n    }\n  }\n\n  cumulativeSum() {\n    let sum = 0;\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        sum += this.get(i, j);\n        this.set(i, j, sum);\n      }\n    }\n    return this;\n  }\n\n  dot(vector2) {\n    if (AbstractMatrix.isMatrix(vector2)) vector2 = vector2.to1DArray();\n    let vector1 = this.to1DArray();\n    if (vector1.length !== vector2.length) {\n      throw new RangeError('vectors do not have the same size');\n    }\n    let dot = 0;\n    for (let i = 0; i < vector1.length; i++) {\n      dot += vector1[i] * vector2[i];\n    }\n    return dot;\n  }\n\n  mmul(other) {\n    other = Matrix.checkMatrix(other);\n\n    let m = this.rows;\n    let n = this.columns;\n    let p = other.columns;\n\n    let result = new Matrix(m, p);\n\n    let Bcolj = new Float64Array(n);\n    for (let j = 0; j < p; j++) {\n      for (let k = 0; k < n; k++) {\n        Bcolj[k] = other.get(k, j);\n      }\n\n      for (let i = 0; i < m; i++) {\n        let s = 0;\n        for (let k = 0; k < n; k++) {\n          s += this.get(i, k) * Bcolj[k];\n        }\n\n        result.set(i, j, s);\n      }\n    }\n    return result;\n  }\n\n  mpow(scalar) {\n    if (!this.isSquare()) {\n      throw new RangeError('Matrix must be square');\n    }\n    if (!Number.isInteger(scalar) || scalar < 0) {\n      throw new RangeError('Exponent must be a non-negative integer');\n    }\n    // Russian Peasant exponentiation, i.e. exponentiation by squaring\n    let result = Matrix.eye(this.rows);\n    let bb = this;\n    // Note: Don't bit shift. In JS, that would truncate at 32 bits\n    for (let e = scalar; e >= 1; e /= 2) {\n      if ((e & 1) !== 0) {\n        result = result.mmul(bb);\n      }\n      bb = bb.mmul(bb);\n    }\n    return result;\n  }\n\n  strassen2x2(other) {\n    other = Matrix.checkMatrix(other);\n    let result = new Matrix(2, 2);\n    const a11 = this.get(0, 0);\n    const b11 = other.get(0, 0);\n    const a12 = this.get(0, 1);\n    const b12 = other.get(0, 1);\n    const a21 = this.get(1, 0);\n    const b21 = other.get(1, 0);\n    const a22 = this.get(1, 1);\n    const b22 = other.get(1, 1);\n\n    // Compute intermediate values.\n    const m1 = (a11 + a22) * (b11 + b22);\n    const m2 = (a21 + a22) * b11;\n    const m3 = a11 * (b12 - b22);\n    const m4 = a22 * (b21 - b11);\n    const m5 = (a11 + a12) * b22;\n    const m6 = (a21 - a11) * (b11 + b12);\n    const m7 = (a12 - a22) * (b21 + b22);\n\n    // Combine intermediate values into the output.\n    const c00 = m1 + m4 - m5 + m7;\n    const c01 = m3 + m5;\n    const c10 = m2 + m4;\n    const c11 = m1 - m2 + m3 + m6;\n\n    result.set(0, 0, c00);\n    result.set(0, 1, c01);\n    result.set(1, 0, c10);\n    result.set(1, 1, c11);\n    return result;\n  }\n\n  strassen3x3(other) {\n    other = Matrix.checkMatrix(other);\n    let result = new Matrix(3, 3);\n\n    const a00 = this.get(0, 0);\n    const a01 = this.get(0, 1);\n    const a02 = this.get(0, 2);\n    const a10 = this.get(1, 0);\n    const a11 = this.get(1, 1);\n    const a12 = this.get(1, 2);\n    const a20 = this.get(2, 0);\n    const a21 = this.get(2, 1);\n    const a22 = this.get(2, 2);\n\n    const b00 = other.get(0, 0);\n    const b01 = other.get(0, 1);\n    const b02 = other.get(0, 2);\n    const b10 = other.get(1, 0);\n    const b11 = other.get(1, 1);\n    const b12 = other.get(1, 2);\n    const b20 = other.get(2, 0);\n    const b21 = other.get(2, 1);\n    const b22 = other.get(2, 2);\n\n    const m1 = (a00 + a01 + a02 - a10 - a11 - a21 - a22) * b11;\n    const m2 = (a00 - a10) * (-b01 + b11);\n    const m3 = a11 * (-b00 + b01 + b10 - b11 - b12 - b20 + b22);\n    const m4 = (-a00 + a10 + a11) * (b00 - b01 + b11);\n    const m5 = (a10 + a11) * (-b00 + b01);\n    const m6 = a00 * b00;\n    const m7 = (-a00 + a20 + a21) * (b00 - b02 + b12);\n    const m8 = (-a00 + a20) * (b02 - b12);\n    const m9 = (a20 + a21) * (-b00 + b02);\n    const m10 = (a00 + a01 + a02 - a11 - a12 - a20 - a21) * b12;\n    const m11 = a21 * (-b00 + b02 + b10 - b11 - b12 - b20 + b21);\n    const m12 = (-a02 + a21 + a22) * (b11 + b20 - b21);\n    const m13 = (a02 - a22) * (b11 - b21);\n    const m14 = a02 * b20;\n    const m15 = (a21 + a22) * (-b20 + b21);\n    const m16 = (-a02 + a11 + a12) * (b12 + b20 - b22);\n    const m17 = (a02 - a12) * (b12 - b22);\n    const m18 = (a11 + a12) * (-b20 + b22);\n    const m19 = a01 * b10;\n    const m20 = a12 * b21;\n    const m21 = a10 * b02;\n    const m22 = a20 * b01;\n    const m23 = a22 * b22;\n\n    const c00 = m6 + m14 + m19;\n    const c01 = m1 + m4 + m5 + m6 + m12 + m14 + m15;\n    const c02 = m6 + m7 + m9 + m10 + m14 + m16 + m18;\n    const c10 = m2 + m3 + m4 + m6 + m14 + m16 + m17;\n    const c11 = m2 + m4 + m5 + m6 + m20;\n    const c12 = m14 + m16 + m17 + m18 + m21;\n    const c20 = m6 + m7 + m8 + m11 + m12 + m13 + m14;\n    const c21 = m12 + m13 + m14 + m15 + m22;\n    const c22 = m6 + m7 + m8 + m9 + m23;\n\n    result.set(0, 0, c00);\n    result.set(0, 1, c01);\n    result.set(0, 2, c02);\n    result.set(1, 0, c10);\n    result.set(1, 1, c11);\n    result.set(1, 2, c12);\n    result.set(2, 0, c20);\n    result.set(2, 1, c21);\n    result.set(2, 2, c22);\n    return result;\n  }\n\n  mmulStrassen(y) {\n    y = Matrix.checkMatrix(y);\n    let x = this.clone();\n    let r1 = x.rows;\n    let c1 = x.columns;\n    let r2 = y.rows;\n    let c2 = y.columns;\n    if (c1 !== r2) {\n      // eslint-disable-next-line no-console\n      console.warn(\n        `Multiplying ${r1} x ${c1} and ${r2} x ${c2} matrix: dimensions do not match.`,\n      );\n    }\n\n    // Put a matrix into the top left of a matrix of zeros.\n    // `rows` and `cols` are the dimensions of the output matrix.\n    function embed(mat, rows, cols) {\n      let r = mat.rows;\n      let c = mat.columns;\n      if (r === rows && c === cols) {\n        return mat;\n      } else {\n        let resultat = AbstractMatrix.zeros(rows, cols);\n        resultat = resultat.setSubMatrix(mat, 0, 0);\n        return resultat;\n      }\n    }\n\n    // Make sure both matrices are the same size.\n    // This is exclusively for simplicity:\n    // this algorithm can be implemented with matrices of different sizes.\n\n    let r = Math.max(r1, r2);\n    let c = Math.max(c1, c2);\n    x = embed(x, r, c);\n    y = embed(y, r, c);\n\n    // Our recursive multiplication function.\n    function blockMult(a, b, rows, cols) {\n      // For small matrices, resort to naive multiplication.\n      if (rows <= 512 || cols <= 512) {\n        return a.mmul(b); // a is equivalent to this\n      }\n\n      // Apply dynamic padding.\n      if (rows % 2 === 1 && cols % 2 === 1) {\n        a = embed(a, rows + 1, cols + 1);\n        b = embed(b, rows + 1, cols + 1);\n      } else if (rows % 2 === 1) {\n        a = embed(a, rows + 1, cols);\n        b = embed(b, rows + 1, cols);\n      } else if (cols % 2 === 1) {\n        a = embed(a, rows, cols + 1);\n        b = embed(b, rows, cols + 1);\n      }\n\n      let halfRows = parseInt(a.rows / 2, 10);\n      let halfCols = parseInt(a.columns / 2, 10);\n      // Subdivide input matrices.\n      let a11 = a.subMatrix(0, halfRows - 1, 0, halfCols - 1);\n      let b11 = b.subMatrix(0, halfRows - 1, 0, halfCols - 1);\n\n      let a12 = a.subMatrix(0, halfRows - 1, halfCols, a.columns - 1);\n      let b12 = b.subMatrix(0, halfRows - 1, halfCols, b.columns - 1);\n\n      let a21 = a.subMatrix(halfRows, a.rows - 1, 0, halfCols - 1);\n      let b21 = b.subMatrix(halfRows, b.rows - 1, 0, halfCols - 1);\n\n      let a22 = a.subMatrix(halfRows, a.rows - 1, halfCols, a.columns - 1);\n      let b22 = b.subMatrix(halfRows, b.rows - 1, halfCols, b.columns - 1);\n\n      // Compute intermediate values.\n      let m1 = blockMult(\n        AbstractMatrix.add(a11, a22),\n        AbstractMatrix.add(b11, b22),\n        halfRows,\n        halfCols,\n      );\n      let m2 = blockMult(AbstractMatrix.add(a21, a22), b11, halfRows, halfCols);\n      let m3 = blockMult(a11, AbstractMatrix.sub(b12, b22), halfRows, halfCols);\n      let m4 = blockMult(a22, AbstractMatrix.sub(b21, b11), halfRows, halfCols);\n      let m5 = blockMult(AbstractMatrix.add(a11, a12), b22, halfRows, halfCols);\n      let m6 = blockMult(\n        AbstractMatrix.sub(a21, a11),\n        AbstractMatrix.add(b11, b12),\n        halfRows,\n        halfCols,\n      );\n      let m7 = blockMult(\n        AbstractMatrix.sub(a12, a22),\n        AbstractMatrix.add(b21, b22),\n        halfRows,\n        halfCols,\n      );\n\n      // Combine intermediate values into the output.\n      let c11 = AbstractMatrix.add(m1, m4);\n      c11.sub(m5);\n      c11.add(m7);\n      let c12 = AbstractMatrix.add(m3, m5);\n      let c21 = AbstractMatrix.add(m2, m4);\n      let c22 = AbstractMatrix.sub(m1, m2);\n      c22.add(m3);\n      c22.add(m6);\n\n      // Crop output to the desired size (undo dynamic padding).\n      let result = AbstractMatrix.zeros(2 * c11.rows, 2 * c11.columns);\n      result = result.setSubMatrix(c11, 0, 0);\n      result = result.setSubMatrix(c12, c11.rows, 0);\n      result = result.setSubMatrix(c21, 0, c11.columns);\n      result = result.setSubMatrix(c22, c11.rows, c11.columns);\n      return result.subMatrix(0, rows - 1, 0, cols - 1);\n    }\n\n    return blockMult(x, y, r, c);\n  }\n\n  scaleRows(options = {}) {\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { min = 0, max = 1 } = options;\n    if (!Number.isFinite(min)) throw new TypeError('min must be a number');\n    if (!Number.isFinite(max)) throw new TypeError('max must be a number');\n    if (min >= max) throw new RangeError('min must be smaller than max');\n    let newMatrix = new Matrix(this.rows, this.columns);\n    for (let i = 0; i < this.rows; i++) {\n      const row = this.getRow(i);\n      if (row.length > 0) {\n        rescale(row, { min, max, output: row });\n      }\n      newMatrix.setRow(i, row);\n    }\n    return newMatrix;\n  }\n\n  scaleColumns(options = {}) {\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { min = 0, max = 1 } = options;\n    if (!Number.isFinite(min)) throw new TypeError('min must be a number');\n    if (!Number.isFinite(max)) throw new TypeError('max must be a number');\n    if (min >= max) throw new RangeError('min must be smaller than max');\n    let newMatrix = new Matrix(this.rows, this.columns);\n    for (let i = 0; i < this.columns; i++) {\n      const column = this.getColumn(i);\n      if (column.length) {\n        rescale(column, {\n          min,\n          max,\n          output: column,\n        });\n      }\n      newMatrix.setColumn(i, column);\n    }\n    return newMatrix;\n  }\n\n  flipRows() {\n    const middle = Math.ceil(this.columns / 2);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < middle; j++) {\n        let first = this.get(i, j);\n        let last = this.get(i, this.columns - 1 - j);\n        this.set(i, j, last);\n        this.set(i, this.columns - 1 - j, first);\n      }\n    }\n    return this;\n  }\n\n  flipColumns() {\n    const middle = Math.ceil(this.rows / 2);\n    for (let j = 0; j < this.columns; j++) {\n      for (let i = 0; i < middle; i++) {\n        let first = this.get(i, j);\n        let last = this.get(this.rows - 1 - i, j);\n        this.set(i, j, last);\n        this.set(this.rows - 1 - i, j, first);\n      }\n    }\n    return this;\n  }\n\n  kroneckerProduct(other) {\n    other = Matrix.checkMatrix(other);\n\n    let m = this.rows;\n    let n = this.columns;\n    let p = other.rows;\n    let q = other.columns;\n\n    let result = new Matrix(m * p, n * q);\n    for (let i = 0; i < m; i++) {\n      for (let j = 0; j < n; j++) {\n        for (let k = 0; k < p; k++) {\n          for (let l = 0; l < q; l++) {\n            result.set(p * i + k, q * j + l, this.get(i, j) * other.get(k, l));\n          }\n        }\n      }\n    }\n    return result;\n  }\n\n  kroneckerSum(other) {\n    other = Matrix.checkMatrix(other);\n    if (!this.isSquare() || !other.isSquare()) {\n      throw new Error('Kronecker Sum needs two Square Matrices');\n    }\n    let m = this.rows;\n    let n = other.rows;\n    let AxI = this.kroneckerProduct(Matrix.eye(n, n));\n    let IxB = Matrix.eye(m, m).kroneckerProduct(other);\n    return AxI.add(IxB);\n  }\n\n  transpose() {\n    let result = new Matrix(this.columns, this.rows);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        result.set(j, i, this.get(i, j));\n      }\n    }\n    return result;\n  }\n\n  sortRows(compareFunction = compareNumbers) {\n    for (let i = 0; i < this.rows; i++) {\n      this.setRow(i, this.getRow(i).sort(compareFunction));\n    }\n    return this;\n  }\n\n  sortColumns(compareFunction = compareNumbers) {\n    for (let i = 0; i < this.columns; i++) {\n      this.setColumn(i, this.getColumn(i).sort(compareFunction));\n    }\n    return this;\n  }\n\n  subMatrix(startRow, endRow, startColumn, endColumn) {\n    checkRange(this, startRow, endRow, startColumn, endColumn);\n    let newMatrix = new Matrix(\n      endRow - startRow + 1,\n      endColumn - startColumn + 1,\n    );\n    for (let i = startRow; i <= endRow; i++) {\n      for (let j = startColumn; j <= endColumn; j++) {\n        newMatrix.set(i - startRow, j - startColumn, this.get(i, j));\n      }\n    }\n    return newMatrix;\n  }\n\n  subMatrixRow(indices, startColumn, endColumn) {\n    if (startColumn === undefined) startColumn = 0;\n    if (endColumn === undefined) endColumn = this.columns - 1;\n    if (\n      startColumn > endColumn ||\n      startColumn < 0 ||\n      startColumn >= this.columns ||\n      endColumn < 0 ||\n      endColumn >= this.columns\n    ) {\n      throw new RangeError('Argument out of range');\n    }\n\n    let newMatrix = new Matrix(indices.length, endColumn - startColumn + 1);\n    for (let i = 0; i < indices.length; i++) {\n      for (let j = startColumn; j <= endColumn; j++) {\n        if (indices[i] < 0 || indices[i] >= this.rows) {\n          throw new RangeError(`Row index out of range: ${indices[i]}`);\n        }\n        newMatrix.set(i, j - startColumn, this.get(indices[i], j));\n      }\n    }\n    return newMatrix;\n  }\n\n  subMatrixColumn(indices, startRow, endRow) {\n    if (startRow === undefined) startRow = 0;\n    if (endRow === undefined) endRow = this.rows - 1;\n    if (\n      startRow > endRow ||\n      startRow < 0 ||\n      startRow >= this.rows ||\n      endRow < 0 ||\n      endRow >= this.rows\n    ) {\n      throw new RangeError('Argument out of range');\n    }\n\n    let newMatrix = new Matrix(endRow - startRow + 1, indices.length);\n    for (let i = 0; i < indices.length; i++) {\n      for (let j = startRow; j <= endRow; j++) {\n        if (indices[i] < 0 || indices[i] >= this.columns) {\n          throw new RangeError(`Column index out of range: ${indices[i]}`);\n        }\n        newMatrix.set(j - startRow, i, this.get(j, indices[i]));\n      }\n    }\n    return newMatrix;\n  }\n\n  setSubMatrix(matrix, startRow, startColumn) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (matrix.isEmpty()) {\n      return this;\n    }\n    let endRow = startRow + matrix.rows - 1;\n    let endColumn = startColumn + matrix.columns - 1;\n    checkRange(this, startRow, endRow, startColumn, endColumn);\n    for (let i = 0; i < matrix.rows; i++) {\n      for (let j = 0; j < matrix.columns; j++) {\n        this.set(startRow + i, startColumn + j, matrix.get(i, j));\n      }\n    }\n    return this;\n  }\n\n  selection(rowIndices, columnIndices) {\n    checkRowIndices(this, rowIndices);\n    checkColumnIndices(this, columnIndices);\n    let newMatrix = new Matrix(rowIndices.length, columnIndices.length);\n    for (let i = 0; i < rowIndices.length; i++) {\n      let rowIndex = rowIndices[i];\n      for (let j = 0; j < columnIndices.length; j++) {\n        let columnIndex = columnIndices[j];\n        newMatrix.set(i, j, this.get(rowIndex, columnIndex));\n      }\n    }\n    return newMatrix;\n  }\n\n  trace() {\n    let min = Math.min(this.rows, this.columns);\n    let trace = 0;\n    for (let i = 0; i < min; i++) {\n      trace += this.get(i, i);\n    }\n    return trace;\n  }\n\n  clone() {\n    return this.constructor.copy(this, new Matrix(this.rows, this.columns));\n  }\n\n  /**\n   * @template {AbstractMatrix} M\n   * @param {AbstractMatrix} from\n   * @param {M} to\n   * @return {M}\n   */\n  static copy(from, to) {\n    for (const [row, column, value] of from.entries()) {\n      to.set(row, column, value);\n    }\n\n    return to;\n  }\n\n  sum(by) {\n    switch (by) {\n      case 'row':\n        return sumByRow(this);\n      case 'column':\n        return sumByColumn(this);\n      case undefined:\n        return sumAll(this);\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  product(by) {\n    switch (by) {\n      case 'row':\n        return productByRow(this);\n      case 'column':\n        return productByColumn(this);\n      case undefined:\n        return productAll(this);\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  mean(by) {\n    const sum = this.sum(by);\n    switch (by) {\n      case 'row': {\n        for (let i = 0; i < this.rows; i++) {\n          sum[i] /= this.columns;\n        }\n        return sum;\n      }\n      case 'column': {\n        for (let i = 0; i < this.columns; i++) {\n          sum[i] /= this.rows;\n        }\n        return sum;\n      }\n      case undefined:\n        return sum / this.size;\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  variance(by, options = {}) {\n    if (typeof by === 'object') {\n      options = by;\n      by = undefined;\n    }\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { unbiased = true, mean = this.mean(by) } = options;\n    if (typeof unbiased !== 'boolean') {\n      throw new TypeError('unbiased must be a boolean');\n    }\n    switch (by) {\n      case 'row': {\n        if (!isAnyArray.isAnyArray(mean)) {\n          throw new TypeError('mean must be an array');\n        }\n        return varianceByRow(this, unbiased, mean);\n      }\n      case 'column': {\n        if (!isAnyArray.isAnyArray(mean)) {\n          throw new TypeError('mean must be an array');\n        }\n        return varianceByColumn(this, unbiased, mean);\n      }\n      case undefined: {\n        if (typeof mean !== 'number') {\n          throw new TypeError('mean must be a number');\n        }\n        return varianceAll(this, unbiased, mean);\n      }\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  standardDeviation(by, options) {\n    if (typeof by === 'object') {\n      options = by;\n      by = undefined;\n    }\n    const variance = this.variance(by, options);\n    if (by === undefined) {\n      return Math.sqrt(variance);\n    } else {\n      for (let i = 0; i < variance.length; i++) {\n        variance[i] = Math.sqrt(variance[i]);\n      }\n      return variance;\n    }\n  }\n\n  center(by, options = {}) {\n    if (typeof by === 'object') {\n      options = by;\n      by = undefined;\n    }\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { center = this.mean(by) } = options;\n    switch (by) {\n      case 'row': {\n        if (!isAnyArray.isAnyArray(center)) {\n          throw new TypeError('center must be an array');\n        }\n        centerByRow(this, center);\n        return this;\n      }\n      case 'column': {\n        if (!isAnyArray.isAnyArray(center)) {\n          throw new TypeError('center must be an array');\n        }\n        centerByColumn(this, center);\n        return this;\n      }\n      case undefined: {\n        if (typeof center !== 'number') {\n          throw new TypeError('center must be a number');\n        }\n        centerAll(this, center);\n        return this;\n      }\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  scale(by, options = {}) {\n    if (typeof by === 'object') {\n      options = by;\n      by = undefined;\n    }\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    let scale = options.scale;\n    switch (by) {\n      case 'row': {\n        if (scale === undefined) {\n          scale = getScaleByRow(this);\n        } else if (!isAnyArray.isAnyArray(scale)) {\n          throw new TypeError('scale must be an array');\n        }\n        scaleByRow(this, scale);\n        return this;\n      }\n      case 'column': {\n        if (scale === undefined) {\n          scale = getScaleByColumn(this);\n        } else if (!isAnyArray.isAnyArray(scale)) {\n          throw new TypeError('scale must be an array');\n        }\n        scaleByColumn(this, scale);\n        return this;\n      }\n      case undefined: {\n        if (scale === undefined) {\n          scale = getScaleAll(this);\n        } else if (typeof scale !== 'number') {\n          throw new TypeError('scale must be a number');\n        }\n        scaleAll(this, scale);\n        return this;\n      }\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  toString(options) {\n    return inspectMatrixWithOptions(this, options);\n  }\n\n  [Symbol.iterator]() {\n    return this.entries();\n  }\n\n  /**\n   * iterator from left to right, from top to bottom\n   * yield [row, column, value]\n   * @returns {Generator<[number, number, number], void, void>}\n   */\n  *entries() {\n    for (let row = 0; row < this.rows; row++) {\n      for (let col = 0; col < this.columns; col++) {\n        yield [row, col, this.get(row, col)];\n      }\n    }\n  }\n\n  /**\n   * iterator from left to right, from top to bottom\n   * yield value\n   * @returns {Generator<number, void, void>}\n   */\n  *values() {\n    for (let row = 0; row < this.rows; row++) {\n      for (let col = 0; col < this.columns; col++) {\n        yield this.get(row, col);\n      }\n    }\n  }\n}\n\nAbstractMatrix.prototype.klass = 'Matrix';\nif (typeof Symbol !== 'undefined') {\n  AbstractMatrix.prototype[Symbol.for('nodejs.util.inspect.custom')] =\n    inspectMatrix;\n}\n\nfunction compareNumbers(a, b) {\n  return a - b;\n}\n\nfunction isArrayOfNumbers(array) {\n  return array.every((element) => {\n    return typeof element === 'number';\n  });\n}\n\n// Synonyms\nAbstractMatrix.random = AbstractMatrix.rand;\nAbstractMatrix.randomInt = AbstractMatrix.randInt;\nAbstractMatrix.diagonal = AbstractMatrix.diag;\nAbstractMatrix.prototype.diagonal = AbstractMatrix.prototype.diag;\nAbstractMatrix.identity = AbstractMatrix.eye;\nAbstractMatrix.prototype.negate = AbstractMatrix.prototype.neg;\nAbstractMatrix.prototype.tensorProduct =\n  AbstractMatrix.prototype.kroneckerProduct;\n\nclass Matrix extends AbstractMatrix {\n  /**\n   * @type {Float64Array[]}\n   */\n  data;\n\n  /**\n   * Init an empty matrix\n   * @param {number} nRows\n   * @param {number} nColumns\n   */\n  #initData(nRows, nColumns) {\n    this.data = [];\n\n    if (Number.isInteger(nColumns) && nColumns >= 0) {\n      for (let i = 0; i < nRows; i++) {\n        this.data.push(new Float64Array(nColumns));\n      }\n    } else {\n      throw new TypeError('nColumns must be a positive integer');\n    }\n\n    this.rows = nRows;\n    this.columns = nColumns;\n  }\n\n  constructor(nRows, nColumns) {\n    super();\n    if (Matrix.isMatrix(nRows)) {\n      this.#initData(nRows.rows, nRows.columns);\n      Matrix.copy(nRows, this);\n    } else if (Number.isInteger(nRows) && nRows >= 0) {\n      this.#initData(nRows, nColumns);\n    } else if (isAnyArray.isAnyArray(nRows)) {\n      // Copy the values from the 2D array\n      const arrayData = nRows;\n      nRows = arrayData.length;\n      nColumns = nRows ? arrayData[0].length : 0;\n      if (typeof nColumns !== 'number') {\n        throw new TypeError(\n          'Data must be a 2D array with at least one element',\n        );\n      }\n      this.data = [];\n\n      for (let i = 0; i < nRows; i++) {\n        if (arrayData[i].length !== nColumns) {\n          throw new RangeError('Inconsistent array dimensions');\n        }\n        if (!isArrayOfNumbers(arrayData[i])) {\n          throw new TypeError('Input data contains non-numeric values');\n        }\n        this.data.push(Float64Array.from(arrayData[i]));\n      }\n\n      this.rows = nRows;\n      this.columns = nColumns;\n    } else {\n      throw new TypeError(\n        'First argument must be a positive number or an array',\n      );\n    }\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.data[rowIndex][columnIndex] = value;\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.data[rowIndex][columnIndex];\n  }\n\n  removeRow(index) {\n    checkRowIndex(this, index);\n    this.data.splice(index, 1);\n    this.rows -= 1;\n    return this;\n  }\n\n  addRow(index, array) {\n    if (array === undefined) {\n      array = index;\n      index = this.rows;\n    }\n    checkRowIndex(this, index, true);\n    array = Float64Array.from(checkRowVector(this, array));\n    this.data.splice(index, 0, array);\n    this.rows += 1;\n    return this;\n  }\n\n  removeColumn(index) {\n    checkColumnIndex(this, index);\n    for (let i = 0; i < this.rows; i++) {\n      const newRow = new Float64Array(this.columns - 1);\n      for (let j = 0; j < index; j++) {\n        newRow[j] = this.data[i][j];\n      }\n      for (let j = index + 1; j < this.columns; j++) {\n        newRow[j - 1] = this.data[i][j];\n      }\n      this.data[i] = newRow;\n    }\n    this.columns -= 1;\n    return this;\n  }\n\n  addColumn(index, array) {\n    if (typeof array === 'undefined') {\n      array = index;\n      index = this.columns;\n    }\n    checkColumnIndex(this, index, true);\n    array = checkColumnVector(this, array);\n    for (let i = 0; i < this.rows; i++) {\n      const newRow = new Float64Array(this.columns + 1);\n      let j = 0;\n      for (; j < index; j++) {\n        newRow[j] = this.data[i][j];\n      }\n      newRow[j++] = array[i];\n      for (; j < this.columns + 1; j++) {\n        newRow[j] = this.data[i][j - 1];\n      }\n      this.data[i] = newRow;\n    }\n    this.columns += 1;\n    return this;\n  }\n}\n\ninstallMathOperations(AbstractMatrix, Matrix);\n\n/**\n * @typedef {0 | 1 | number | boolean} Mask\n */\n\nclass SymmetricMatrix extends AbstractMatrix {\n  /** @type {Matrix} */\n  #matrix;\n\n  get size() {\n    return this.#matrix.size;\n  }\n\n  get rows() {\n    return this.#matrix.rows;\n  }\n\n  get columns() {\n    return this.#matrix.columns;\n  }\n\n  get diagonalSize() {\n    return this.rows;\n  }\n\n  /**\n   * not the same as matrix.isSymmetric()\n   * Here is to check if it's instanceof SymmetricMatrix without bundling issues\n   *\n   * @param value\n   * @returns {boolean}\n   */\n  static isSymmetricMatrix(value) {\n    return Matrix.isMatrix(value) && value.klassType === 'SymmetricMatrix';\n  }\n\n  /**\n   * @param diagonalSize\n   * @return {SymmetricMatrix}\n   */\n  static zeros(diagonalSize) {\n    return new this(diagonalSize);\n  }\n\n  /**\n   * @param diagonalSize\n   * @return {SymmetricMatrix}\n   */\n  static ones(diagonalSize) {\n    return new this(diagonalSize).fill(1);\n  }\n\n  /**\n   * @param {number | AbstractMatrix | ArrayLike<ArrayLike<number>>} diagonalSize\n   * @return {this}\n   */\n  constructor(diagonalSize) {\n    super();\n\n    if (Matrix.isMatrix(diagonalSize)) {\n      if (!diagonalSize.isSymmetric()) {\n        throw new TypeError('not symmetric data');\n      }\n\n      this.#matrix = Matrix.copy(\n        diagonalSize,\n        new Matrix(diagonalSize.rows, diagonalSize.rows),\n      );\n    } else if (Number.isInteger(diagonalSize) && diagonalSize >= 0) {\n      this.#matrix = new Matrix(diagonalSize, diagonalSize);\n    } else {\n      this.#matrix = new Matrix(diagonalSize);\n\n      if (!this.isSymmetric()) {\n        throw new TypeError('not symmetric data');\n      }\n    }\n  }\n\n  clone() {\n    const matrix = new SymmetricMatrix(this.diagonalSize);\n\n    for (const [row, col, value] of this.upperRightEntries()) {\n      matrix.set(row, col, value);\n    }\n\n    return matrix;\n  }\n\n  toMatrix() {\n    return new Matrix(this);\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.#matrix.get(rowIndex, columnIndex);\n  }\n  set(rowIndex, columnIndex, value) {\n    // symmetric set\n    this.#matrix.set(rowIndex, columnIndex, value);\n    this.#matrix.set(columnIndex, rowIndex, value);\n\n    return this;\n  }\n\n  removeCross(index) {\n    // symmetric remove side\n    this.#matrix.removeRow(index);\n    this.#matrix.removeColumn(index);\n\n    return this;\n  }\n\n  addCross(index, array) {\n    if (array === undefined) {\n      array = index;\n      index = this.diagonalSize;\n    }\n\n    const row = array.slice();\n    row.splice(index, 1);\n\n    this.#matrix.addRow(index, row);\n    this.#matrix.addColumn(index, array);\n\n    return this;\n  }\n\n  /**\n   * @param {Mask[]} mask\n   */\n  applyMask(mask) {\n    if (mask.length !== this.diagonalSize) {\n      throw new RangeError('Mask size do not match with matrix size');\n    }\n\n    // prepare sides to remove from matrix from mask\n    /** @type {number[]} */\n    const sidesToRemove = [];\n    for (const [index, passthroughs] of mask.entries()) {\n      if (passthroughs) continue;\n      sidesToRemove.push(index);\n    }\n    // to remove from highest to lowest for no mutation shifting\n    sidesToRemove.reverse();\n\n    // remove sides\n    for (const sideIndex of sidesToRemove) {\n      this.removeCross(sideIndex);\n    }\n\n    return this;\n  }\n\n  /**\n   * Compact format upper-right corner of matrix\n   * iterate from left to right, from top to bottom.\n   *\n   * ```\n   *   A B C D\n   * A 1 2 3 4\n   * B 2 5 6 7\n   * C 3 6 8 9\n   * D 4 7 9 10\n   * ```\n   *\n   * will return compact 1D array `[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]`\n   *\n   * length is S(i=0, n=sideSize) => 10 for a 4 sideSized matrix\n   *\n   * @returns {number[]}\n   */\n  toCompact() {\n    const { diagonalSize } = this;\n\n    /** @type {number[]} */\n    const compact = new Array((diagonalSize * (diagonalSize + 1)) / 2);\n    for (let col = 0, row = 0, index = 0; index < compact.length; index++) {\n      compact[index] = this.get(row, col);\n\n      if (++col >= diagonalSize) col = ++row;\n    }\n\n    return compact;\n  }\n\n  /**\n   * @param {number[]} compact\n   * @return {SymmetricMatrix}\n   */\n  static fromCompact(compact) {\n    const compactSize = compact.length;\n    // compactSize = (sideSize * (sideSize + 1)) / 2\n    // https://mathsolver.microsoft.com/fr/solve-problem/y%20%3D%20%20x%20%60cdot%20%20%20%60frac%7B%20%20%60left(%20x%2B1%20%20%60right)%20%20%20%20%7D%7B%202%20%20%7D\n    // sideSize = (Sqrt(8 × compactSize + 1) - 1) / 2\n    const diagonalSize = (Math.sqrt(8 * compactSize + 1) - 1) / 2;\n\n    if (!Number.isInteger(diagonalSize)) {\n      throw new TypeError(\n        `This array is not a compact representation of a Symmetric Matrix, ${JSON.stringify(\n          compact,\n        )}`,\n      );\n    }\n\n    const matrix = new SymmetricMatrix(diagonalSize);\n    for (let col = 0, row = 0, index = 0; index < compactSize; index++) {\n      matrix.set(col, row, compact[index]);\n      if (++col >= diagonalSize) col = ++row;\n    }\n\n    return matrix;\n  }\n\n  /**\n   * half iterator upper-right-corner from left to right, from top to bottom\n   * yield [row, column, value]\n   *\n   * @returns {Generator<[number, number, number], void, void>}\n   */\n  *upperRightEntries() {\n    for (let row = 0, col = 0; row < this.diagonalSize; void 0) {\n      const value = this.get(row, col);\n\n      yield [row, col, value];\n\n      // at the end of row, move cursor to next row at diagonal position\n      if (++col >= this.diagonalSize) col = ++row;\n    }\n  }\n\n  /**\n   * half iterator upper-right-corner from left to right, from top to bottom\n   * yield value\n   *\n   * @returns {Generator<[number, number, number], void, void>}\n   */\n  *upperRightValues() {\n    for (let row = 0, col = 0; row < this.diagonalSize; void 0) {\n      const value = this.get(row, col);\n\n      yield value;\n\n      // at the end of row, move cursor to next row at diagonal position\n      if (++col >= this.diagonalSize) col = ++row;\n    }\n  }\n}\nSymmetricMatrix.prototype.klassType = 'SymmetricMatrix';\n\nclass DistanceMatrix extends SymmetricMatrix {\n  /**\n   * not the same as matrix.isSymmetric()\n   * Here is to check if it's instanceof SymmetricMatrix without bundling issues\n   *\n   * @param value\n   * @returns {boolean}\n   */\n  static isDistanceMatrix(value) {\n    return (\n      SymmetricMatrix.isSymmetricMatrix(value) &&\n      value.klassSubType === 'DistanceMatrix'\n    );\n  }\n\n  constructor(sideSize) {\n    super(sideSize);\n\n    if (!this.isDistance()) {\n      throw new TypeError('Provided arguments do no produce a distance matrix');\n    }\n  }\n\n  set(rowIndex, columnIndex, value) {\n    // distance matrix diagonal is 0\n    if (rowIndex === columnIndex) value = 0;\n\n    return super.set(rowIndex, columnIndex, value);\n  }\n\n  addCross(index, array) {\n    if (array === undefined) {\n      array = index;\n      index = this.diagonalSize;\n    }\n\n    // ensure distance\n    array = array.slice();\n    array[index] = 0;\n\n    return super.addCross(index, array);\n  }\n\n  toSymmetricMatrix() {\n    return new SymmetricMatrix(this);\n  }\n\n  clone() {\n    const matrix = new DistanceMatrix(this.diagonalSize);\n\n    for (const [row, col, value] of this.upperRightEntries()) {\n      if (row === col) continue;\n      matrix.set(row, col, value);\n    }\n\n    return matrix;\n  }\n\n  /**\n   * Compact format upper-right corner of matrix\n   * no diagonal (only zeros)\n   * iterable from left to right, from top to bottom.\n   *\n   * ```\n   *   A B C D\n   * A 0 1 2 3\n   * B 1 0 4 5\n   * C 2 4 0 6\n   * D 3 5 6 0\n   * ```\n   *\n   * will return compact 1D array `[1, 2, 3, 4, 5, 6]`\n   *\n   * length is S(i=0, n=sideSize-1) => 6 for a 4 side sized matrix\n   *\n   * @returns {number[]}\n   */\n  toCompact() {\n    const { diagonalSize } = this;\n    const compactLength = ((diagonalSize - 1) * diagonalSize) / 2;\n\n    /** @type {number[]} */\n    const compact = new Array(compactLength);\n    for (let col = 1, row = 0, index = 0; index < compact.length; index++) {\n      compact[index] = this.get(row, col);\n\n      if (++col >= diagonalSize) col = ++row + 1;\n    }\n\n    return compact;\n  }\n\n  /**\n   * @param {number[]} compact\n   */\n  static fromCompact(compact) {\n    const compactSize = compact.length;\n\n    if (compactSize === 0) {\n      return new this(0);\n    }\n\n    // compactSize in Natural integer range ]0;∞]\n    // compactSize = (sideSize * (sideSize - 1)) / 2\n    // sideSize = (Sqrt(8 × compactSize + 1) + 1) / 2\n    const diagonalSize = (Math.sqrt(8 * compactSize + 1) + 1) / 2;\n\n    if (!Number.isInteger(diagonalSize)) {\n      throw new TypeError(\n        `This array is not a compact representation of a DistanceMatrix, ${JSON.stringify(\n          compact,\n        )}`,\n      );\n    }\n\n    const matrix = new this(diagonalSize);\n    for (let col = 1, row = 0, index = 0; index < compactSize; index++) {\n      matrix.set(col, row, compact[index]);\n      if (++col >= diagonalSize) col = ++row + 1;\n    }\n\n    return matrix;\n  }\n}\nDistanceMatrix.prototype.klassSubType = 'DistanceMatrix';\n\nclass BaseView extends AbstractMatrix {\n  constructor(matrix, rows, columns) {\n    super();\n    this.matrix = matrix;\n    this.rows = rows;\n    this.columns = columns;\n  }\n}\n\nclass MatrixColumnView extends BaseView {\n  constructor(matrix, column) {\n    checkColumnIndex(matrix, column);\n    super(matrix, matrix.rows, 1);\n    this.column = column;\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.matrix.set(rowIndex, this.column, value);\n    return this;\n  }\n\n  get(rowIndex) {\n    return this.matrix.get(rowIndex, this.column);\n  }\n}\n\nclass MatrixColumnSelectionView extends BaseView {\n  constructor(matrix, columnIndices) {\n    checkColumnIndices(matrix, columnIndices);\n    super(matrix, matrix.rows, columnIndices.length);\n    this.columnIndices = columnIndices;\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.matrix.set(rowIndex, this.columnIndices[columnIndex], value);\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.matrix.get(rowIndex, this.columnIndices[columnIndex]);\n  }\n}\n\nclass MatrixFlipColumnView extends BaseView {\n  constructor(matrix) {\n    super(matrix, matrix.rows, matrix.columns);\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.matrix.set(rowIndex, this.columns - columnIndex - 1, value);\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.matrix.get(rowIndex, this.columns - columnIndex - 1);\n  }\n}\n\nclass MatrixFlipRowView extends BaseView {\n  constructor(matrix) {\n    super(matrix, matrix.rows, matrix.columns);\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.matrix.set(this.rows - rowIndex - 1, columnIndex, value);\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.matrix.get(this.rows - rowIndex - 1, columnIndex);\n  }\n}\n\nclass MatrixRowView extends BaseView {\n  constructor(matrix, row) {\n    checkRowIndex(matrix, row);\n    super(matrix, 1, matrix.columns);\n    this.row = row;\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.matrix.set(this.row, columnIndex, value);\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.matrix.get(this.row, columnIndex);\n  }\n}\n\nclass MatrixRowSelectionView extends BaseView {\n  constructor(matrix, rowIndices) {\n    checkRowIndices(matrix, rowIndices);\n    super(matrix, rowIndices.length, matrix.columns);\n    this.rowIndices = rowIndices;\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.matrix.set(this.rowIndices[rowIndex], columnIndex, value);\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.matrix.get(this.rowIndices[rowIndex], columnIndex);\n  }\n}\n\nclass MatrixSelectionView extends BaseView {\n  constructor(matrix, rowIndices, columnIndices) {\n    checkRowIndices(matrix, rowIndices);\n    checkColumnIndices(matrix, columnIndices);\n    super(matrix, rowIndices.length, columnIndices.length);\n    this.rowIndices = rowIndices;\n    this.columnIndices = columnIndices;\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.matrix.set(\n      this.rowIndices[rowIndex],\n      this.columnIndices[columnIndex],\n      value,\n    );\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.matrix.get(\n      this.rowIndices[rowIndex],\n      this.columnIndices[columnIndex],\n    );\n  }\n}\n\nclass MatrixSubView extends BaseView {\n  constructor(matrix, startRow, endRow, startColumn, endColumn) {\n    checkRange(matrix, startRow, endRow, startColumn, endColumn);\n    super(matrix, endRow - startRow + 1, endColumn - startColumn + 1);\n    this.startRow = startRow;\n    this.startColumn = startColumn;\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.matrix.set(\n      this.startRow + rowIndex,\n      this.startColumn + columnIndex,\n      value,\n    );\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.matrix.get(\n      this.startRow + rowIndex,\n      this.startColumn + columnIndex,\n    );\n  }\n}\n\nclass MatrixTransposeView extends BaseView {\n  constructor(matrix) {\n    super(matrix, matrix.columns, matrix.rows);\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.matrix.set(columnIndex, rowIndex, value);\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.matrix.get(columnIndex, rowIndex);\n  }\n}\n\nclass WrapperMatrix1D extends AbstractMatrix {\n  constructor(data, options = {}) {\n    const { rows = 1 } = options;\n\n    if (data.length % rows !== 0) {\n      throw new Error('the data length is not divisible by the number of rows');\n    }\n    super();\n    this.rows = rows;\n    this.columns = data.length / rows;\n    this.data = data;\n  }\n\n  set(rowIndex, columnIndex, value) {\n    let index = this._calculateIndex(rowIndex, columnIndex);\n    this.data[index] = value;\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    let index = this._calculateIndex(rowIndex, columnIndex);\n    return this.data[index];\n  }\n\n  _calculateIndex(row, column) {\n    return row * this.columns + column;\n  }\n}\n\nclass WrapperMatrix2D extends AbstractMatrix {\n  constructor(data) {\n    super();\n    this.data = data;\n    this.rows = data.length;\n    this.columns = data[0].length;\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.data[rowIndex][columnIndex] = value;\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.data[rowIndex][columnIndex];\n  }\n}\n\nfunction wrap(array, options) {\n  if (isAnyArray.isAnyArray(array)) {\n    if (array[0] && isAnyArray.isAnyArray(array[0])) {\n      return new WrapperMatrix2D(array);\n    } else {\n      return new WrapperMatrix1D(array, options);\n    }\n  } else {\n    throw new Error('the argument is not an array');\n  }\n}\n\nclass LuDecomposition {\n  constructor(matrix) {\n    matrix = WrapperMatrix2D.checkMatrix(matrix);\n\n    let lu = matrix.clone();\n    let rows = lu.rows;\n    let columns = lu.columns;\n    let pivotVector = new Float64Array(rows);\n    let pivotSign = 1;\n    let i, j, k, p, s, t, v;\n    let LUcolj, kmax;\n\n    for (i = 0; i < rows; i++) {\n      pivotVector[i] = i;\n    }\n\n    LUcolj = new Float64Array(rows);\n\n    for (j = 0; j < columns; j++) {\n      for (i = 0; i < rows; i++) {\n        LUcolj[i] = lu.get(i, j);\n      }\n\n      for (i = 0; i < rows; i++) {\n        kmax = Math.min(i, j);\n        s = 0;\n        for (k = 0; k < kmax; k++) {\n          s += lu.get(i, k) * LUcolj[k];\n        }\n        LUcolj[i] -= s;\n        lu.set(i, j, LUcolj[i]);\n      }\n\n      p = j;\n      for (i = j + 1; i < rows; i++) {\n        if (Math.abs(LUcolj[i]) > Math.abs(LUcolj[p])) {\n          p = i;\n        }\n      }\n\n      if (p !== j) {\n        for (k = 0; k < columns; k++) {\n          t = lu.get(p, k);\n          lu.set(p, k, lu.get(j, k));\n          lu.set(j, k, t);\n        }\n\n        v = pivotVector[p];\n        pivotVector[p] = pivotVector[j];\n        pivotVector[j] = v;\n\n        pivotSign = -pivotSign;\n      }\n\n      if (j < rows && lu.get(j, j) !== 0) {\n        for (i = j + 1; i < rows; i++) {\n          lu.set(i, j, lu.get(i, j) / lu.get(j, j));\n        }\n      }\n    }\n\n    this.LU = lu;\n    this.pivotVector = pivotVector;\n    this.pivotSign = pivotSign;\n  }\n\n  isSingular() {\n    let data = this.LU;\n    let col = data.columns;\n    for (let j = 0; j < col; j++) {\n      if (data.get(j, j) === 0) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  solve(value) {\n    value = Matrix.checkMatrix(value);\n\n    let lu = this.LU;\n    let rows = lu.rows;\n\n    if (rows !== value.rows) {\n      throw new Error('Invalid matrix dimensions');\n    }\n    if (this.isSingular()) {\n      throw new Error('LU matrix is singular');\n    }\n\n    let count = value.columns;\n    let X = value.subMatrixRow(this.pivotVector, 0, count - 1);\n    let columns = lu.columns;\n    let i, j, k;\n\n    for (k = 0; k < columns; k++) {\n      for (i = k + 1; i < columns; i++) {\n        for (j = 0; j < count; j++) {\n          X.set(i, j, X.get(i, j) - X.get(k, j) * lu.get(i, k));\n        }\n      }\n    }\n    for (k = columns - 1; k >= 0; k--) {\n      for (j = 0; j < count; j++) {\n        X.set(k, j, X.get(k, j) / lu.get(k, k));\n      }\n      for (i = 0; i < k; i++) {\n        for (j = 0; j < count; j++) {\n          X.set(i, j, X.get(i, j) - X.get(k, j) * lu.get(i, k));\n        }\n      }\n    }\n    return X;\n  }\n\n  get determinant() {\n    let data = this.LU;\n    if (!data.isSquare()) {\n      throw new Error('Matrix must be square');\n    }\n    let determinant = this.pivotSign;\n    let col = data.columns;\n    for (let j = 0; j < col; j++) {\n      determinant *= data.get(j, j);\n    }\n    return determinant;\n  }\n\n  get lowerTriangularMatrix() {\n    let data = this.LU;\n    let rows = data.rows;\n    let columns = data.columns;\n    let X = new Matrix(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        if (i > j) {\n          X.set(i, j, data.get(i, j));\n        } else if (i === j) {\n          X.set(i, j, 1);\n        } else {\n          X.set(i, j, 0);\n        }\n      }\n    }\n    return X;\n  }\n\n  get upperTriangularMatrix() {\n    let data = this.LU;\n    let rows = data.rows;\n    let columns = data.columns;\n    let X = new Matrix(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        if (i <= j) {\n          X.set(i, j, data.get(i, j));\n        } else {\n          X.set(i, j, 0);\n        }\n      }\n    }\n    return X;\n  }\n\n  get pivotPermutationVector() {\n    return Array.from(this.pivotVector);\n  }\n}\n\nfunction hypotenuse(a, b) {\n  let r = 0;\n  if (Math.abs(a) > Math.abs(b)) {\n    r = b / a;\n    return Math.abs(a) * Math.sqrt(1 + r * r);\n  }\n  if (b !== 0) {\n    r = a / b;\n    return Math.abs(b) * Math.sqrt(1 + r * r);\n  }\n  return 0;\n}\n\nclass QrDecomposition {\n  constructor(value) {\n    value = WrapperMatrix2D.checkMatrix(value);\n\n    let qr = value.clone();\n    let m = value.rows;\n    let n = value.columns;\n    let rdiag = new Float64Array(n);\n    let i, j, k, s;\n\n    for (k = 0; k < n; k++) {\n      let nrm = 0;\n      for (i = k; i < m; i++) {\n        nrm = hypotenuse(nrm, qr.get(i, k));\n      }\n      if (nrm !== 0) {\n        if (qr.get(k, k) < 0) {\n          nrm = -nrm;\n        }\n        for (i = k; i < m; i++) {\n          qr.set(i, k, qr.get(i, k) / nrm);\n        }\n        qr.set(k, k, qr.get(k, k) + 1);\n        for (j = k + 1; j < n; j++) {\n          s = 0;\n          for (i = k; i < m; i++) {\n            s += qr.get(i, k) * qr.get(i, j);\n          }\n          s = -s / qr.get(k, k);\n          for (i = k; i < m; i++) {\n            qr.set(i, j, qr.get(i, j) + s * qr.get(i, k));\n          }\n        }\n      }\n      rdiag[k] = -nrm;\n    }\n\n    this.QR = qr;\n    this.Rdiag = rdiag;\n  }\n\n  solve(value) {\n    value = Matrix.checkMatrix(value);\n\n    let qr = this.QR;\n    let m = qr.rows;\n\n    if (value.rows !== m) {\n      throw new Error('Matrix row dimensions must agree');\n    }\n    if (!this.isFullRank()) {\n      throw new Error('Matrix is rank deficient');\n    }\n\n    let count = value.columns;\n    let X = value.clone();\n    let n = qr.columns;\n    let i, j, k, s;\n\n    for (k = 0; k < n; k++) {\n      for (j = 0; j < count; j++) {\n        s = 0;\n        for (i = k; i < m; i++) {\n          s += qr.get(i, k) * X.get(i, j);\n        }\n        s = -s / qr.get(k, k);\n        for (i = k; i < m; i++) {\n          X.set(i, j, X.get(i, j) + s * qr.get(i, k));\n        }\n      }\n    }\n    for (k = n - 1; k >= 0; k--) {\n      for (j = 0; j < count; j++) {\n        X.set(k, j, X.get(k, j) / this.Rdiag[k]);\n      }\n      for (i = 0; i < k; i++) {\n        for (j = 0; j < count; j++) {\n          X.set(i, j, X.get(i, j) - X.get(k, j) * qr.get(i, k));\n        }\n      }\n    }\n\n    return X.subMatrix(0, n - 1, 0, count - 1);\n  }\n\n  isFullRank() {\n    let columns = this.QR.columns;\n    for (let i = 0; i < columns; i++) {\n      if (this.Rdiag[i] === 0) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  get upperTriangularMatrix() {\n    let qr = this.QR;\n    let n = qr.columns;\n    let X = new Matrix(n, n);\n    let i, j;\n    for (i = 0; i < n; i++) {\n      for (j = 0; j < n; j++) {\n        if (i < j) {\n          X.set(i, j, qr.get(i, j));\n        } else if (i === j) {\n          X.set(i, j, this.Rdiag[i]);\n        } else {\n          X.set(i, j, 0);\n        }\n      }\n    }\n    return X;\n  }\n\n  get orthogonalMatrix() {\n    let qr = this.QR;\n    let rows = qr.rows;\n    let columns = qr.columns;\n    let X = new Matrix(rows, columns);\n    let i, j, k, s;\n\n    for (k = columns - 1; k >= 0; k--) {\n      for (i = 0; i < rows; i++) {\n        X.set(i, k, 0);\n      }\n      X.set(k, k, 1);\n      for (j = k; j < columns; j++) {\n        if (qr.get(k, k) !== 0) {\n          s = 0;\n          for (i = k; i < rows; i++) {\n            s += qr.get(i, k) * X.get(i, j);\n          }\n\n          s = -s / qr.get(k, k);\n\n          for (i = k; i < rows; i++) {\n            X.set(i, j, X.get(i, j) + s * qr.get(i, k));\n          }\n        }\n      }\n    }\n    return X;\n  }\n}\n\nclass SingularValueDecomposition {\n  constructor(value, options = {}) {\n    value = WrapperMatrix2D.checkMatrix(value);\n\n    if (value.isEmpty()) {\n      throw new Error('Matrix must be non-empty');\n    }\n\n    let m = value.rows;\n    let n = value.columns;\n\n    const {\n      computeLeftSingularVectors = true,\n      computeRightSingularVectors = true,\n      autoTranspose = false,\n    } = options;\n\n    let wantu = Boolean(computeLeftSingularVectors);\n    let wantv = Boolean(computeRightSingularVectors);\n\n    let swapped = false;\n    let a;\n    if (m < n) {\n      if (!autoTranspose) {\n        a = value.clone();\n        // eslint-disable-next-line no-console\n        console.warn(\n          'Computing SVD on a matrix with more columns than rows. Consider enabling autoTranspose',\n        );\n      } else {\n        a = value.transpose();\n        m = a.rows;\n        n = a.columns;\n        swapped = true;\n        let aux = wantu;\n        wantu = wantv;\n        wantv = aux;\n      }\n    } else {\n      a = value.clone();\n    }\n\n    let nu = Math.min(m, n);\n    let ni = Math.min(m + 1, n);\n    let s = new Float64Array(ni);\n    let U = new Matrix(m, nu);\n    let V = new Matrix(n, n);\n\n    let e = new Float64Array(n);\n    let work = new Float64Array(m);\n\n    let si = new Float64Array(ni);\n    for (let i = 0; i < ni; i++) si[i] = i;\n\n    let nct = Math.min(m - 1, n);\n    let nrt = Math.max(0, Math.min(n - 2, m));\n    let mrc = Math.max(nct, nrt);\n\n    for (let k = 0; k < mrc; k++) {\n      if (k < nct) {\n        s[k] = 0;\n        for (let i = k; i < m; i++) {\n          s[k] = hypotenuse(s[k], a.get(i, k));\n        }\n        if (s[k] !== 0) {\n          if (a.get(k, k) < 0) {\n            s[k] = -s[k];\n          }\n          for (let i = k; i < m; i++) {\n            a.set(i, k, a.get(i, k) / s[k]);\n          }\n          a.set(k, k, a.get(k, k) + 1);\n        }\n        s[k] = -s[k];\n      }\n\n      for (let j = k + 1; j < n; j++) {\n        if (k < nct && s[k] !== 0) {\n          let t = 0;\n          for (let i = k; i < m; i++) {\n            t += a.get(i, k) * a.get(i, j);\n          }\n          t = -t / a.get(k, k);\n          for (let i = k; i < m; i++) {\n            a.set(i, j, a.get(i, j) + t * a.get(i, k));\n          }\n        }\n        e[j] = a.get(k, j);\n      }\n\n      if (wantu && k < nct) {\n        for (let i = k; i < m; i++) {\n          U.set(i, k, a.get(i, k));\n        }\n      }\n\n      if (k < nrt) {\n        e[k] = 0;\n        for (let i = k + 1; i < n; i++) {\n          e[k] = hypotenuse(e[k], e[i]);\n        }\n        if (e[k] !== 0) {\n          if (e[k + 1] < 0) {\n            e[k] = 0 - e[k];\n          }\n          for (let i = k + 1; i < n; i++) {\n            e[i] /= e[k];\n          }\n          e[k + 1] += 1;\n        }\n        e[k] = -e[k];\n        if (k + 1 < m && e[k] !== 0) {\n          for (let i = k + 1; i < m; i++) {\n            work[i] = 0;\n          }\n          for (let i = k + 1; i < m; i++) {\n            for (let j = k + 1; j < n; j++) {\n              work[i] += e[j] * a.get(i, j);\n            }\n          }\n          for (let j = k + 1; j < n; j++) {\n            let t = -e[j] / e[k + 1];\n            for (let i = k + 1; i < m; i++) {\n              a.set(i, j, a.get(i, j) + t * work[i]);\n            }\n          }\n        }\n        if (wantv) {\n          for (let i = k + 1; i < n; i++) {\n            V.set(i, k, e[i]);\n          }\n        }\n      }\n    }\n\n    let p = Math.min(n, m + 1);\n    if (nct < n) {\n      s[nct] = a.get(nct, nct);\n    }\n    if (m < p) {\n      s[p - 1] = 0;\n    }\n    if (nrt + 1 < p) {\n      e[nrt] = a.get(nrt, p - 1);\n    }\n    e[p - 1] = 0;\n\n    if (wantu) {\n      for (let j = nct; j < nu; j++) {\n        for (let i = 0; i < m; i++) {\n          U.set(i, j, 0);\n        }\n        U.set(j, j, 1);\n      }\n      for (let k = nct - 1; k >= 0; k--) {\n        if (s[k] !== 0) {\n          for (let j = k + 1; j < nu; j++) {\n            let t = 0;\n            for (let i = k; i < m; i++) {\n              t += U.get(i, k) * U.get(i, j);\n            }\n            t = -t / U.get(k, k);\n            for (let i = k; i < m; i++) {\n              U.set(i, j, U.get(i, j) + t * U.get(i, k));\n            }\n          }\n          for (let i = k; i < m; i++) {\n            U.set(i, k, -U.get(i, k));\n          }\n          U.set(k, k, 1 + U.get(k, k));\n          for (let i = 0; i < k - 1; i++) {\n            U.set(i, k, 0);\n          }\n        } else {\n          for (let i = 0; i < m; i++) {\n            U.set(i, k, 0);\n          }\n          U.set(k, k, 1);\n        }\n      }\n    }\n\n    if (wantv) {\n      for (let k = n - 1; k >= 0; k--) {\n        if (k < nrt && e[k] !== 0) {\n          for (let j = k + 1; j < n; j++) {\n            let t = 0;\n            for (let i = k + 1; i < n; i++) {\n              t += V.get(i, k) * V.get(i, j);\n            }\n            t = -t / V.get(k + 1, k);\n            for (let i = k + 1; i < n; i++) {\n              V.set(i, j, V.get(i, j) + t * V.get(i, k));\n            }\n          }\n        }\n        for (let i = 0; i < n; i++) {\n          V.set(i, k, 0);\n        }\n        V.set(k, k, 1);\n      }\n    }\n\n    let pp = p - 1;\n    let eps = Number.EPSILON;\n    while (p > 0) {\n      let k, kase;\n      for (k = p - 2; k >= -1; k--) {\n        if (k === -1) {\n          break;\n        }\n        const alpha =\n          Number.MIN_VALUE + eps * Math.abs(s[k] + Math.abs(s[k + 1]));\n        if (Math.abs(e[k]) <= alpha || Number.isNaN(e[k])) {\n          e[k] = 0;\n          break;\n        }\n      }\n      if (k === p - 2) {\n        kase = 4;\n      } else {\n        let ks;\n        for (ks = p - 1; ks >= k; ks--) {\n          if (ks === k) {\n            break;\n          }\n          let t =\n            (ks !== p ? Math.abs(e[ks]) : 0) +\n            (ks !== k + 1 ? Math.abs(e[ks - 1]) : 0);\n          if (Math.abs(s[ks]) <= eps * t) {\n            s[ks] = 0;\n            break;\n          }\n        }\n        if (ks === k) {\n          kase = 3;\n        } else if (ks === p - 1) {\n          kase = 1;\n        } else {\n          kase = 2;\n          k = ks;\n        }\n      }\n\n      k++;\n\n      switch (kase) {\n        case 1: {\n          let f = e[p - 2];\n          e[p - 2] = 0;\n          for (let j = p - 2; j >= k; j--) {\n            let t = hypotenuse(s[j], f);\n            let cs = s[j] / t;\n            let sn = f / t;\n            s[j] = t;\n            if (j !== k) {\n              f = -sn * e[j - 1];\n              e[j - 1] = cs * e[j - 1];\n            }\n            if (wantv) {\n              for (let i = 0; i < n; i++) {\n                t = cs * V.get(i, j) + sn * V.get(i, p - 1);\n                V.set(i, p - 1, -sn * V.get(i, j) + cs * V.get(i, p - 1));\n                V.set(i, j, t);\n              }\n            }\n          }\n          break;\n        }\n        case 2: {\n          let f = e[k - 1];\n          e[k - 1] = 0;\n          for (let j = k; j < p; j++) {\n            let t = hypotenuse(s[j], f);\n            let cs = s[j] / t;\n            let sn = f / t;\n            s[j] = t;\n            f = -sn * e[j];\n            e[j] = cs * e[j];\n            if (wantu) {\n              for (let i = 0; i < m; i++) {\n                t = cs * U.get(i, j) + sn * U.get(i, k - 1);\n                U.set(i, k - 1, -sn * U.get(i, j) + cs * U.get(i, k - 1));\n                U.set(i, j, t);\n              }\n            }\n          }\n          break;\n        }\n        case 3: {\n          const scale = Math.max(\n            Math.abs(s[p - 1]),\n            Math.abs(s[p - 2]),\n            Math.abs(e[p - 2]),\n            Math.abs(s[k]),\n            Math.abs(e[k]),\n          );\n          const sp = s[p - 1] / scale;\n          const spm1 = s[p - 2] / scale;\n          const epm1 = e[p - 2] / scale;\n          const sk = s[k] / scale;\n          const ek = e[k] / scale;\n          const b = ((spm1 + sp) * (spm1 - sp) + epm1 * epm1) / 2;\n          const c = sp * epm1 * (sp * epm1);\n          let shift = 0;\n          if (b !== 0 || c !== 0) {\n            if (b < 0) {\n              shift = 0 - Math.sqrt(b * b + c);\n            } else {\n              shift = Math.sqrt(b * b + c);\n            }\n            shift = c / (b + shift);\n          }\n          let f = (sk + sp) * (sk - sp) + shift;\n          let g = sk * ek;\n          for (let j = k; j < p - 1; j++) {\n            let t = hypotenuse(f, g);\n            if (t === 0) t = Number.MIN_VALUE;\n            let cs = f / t;\n            let sn = g / t;\n            if (j !== k) {\n              e[j - 1] = t;\n            }\n            f = cs * s[j] + sn * e[j];\n            e[j] = cs * e[j] - sn * s[j];\n            g = sn * s[j + 1];\n            s[j + 1] = cs * s[j + 1];\n            if (wantv) {\n              for (let i = 0; i < n; i++) {\n                t = cs * V.get(i, j) + sn * V.get(i, j + 1);\n                V.set(i, j + 1, -sn * V.get(i, j) + cs * V.get(i, j + 1));\n                V.set(i, j, t);\n              }\n            }\n            t = hypotenuse(f, g);\n            if (t === 0) t = Number.MIN_VALUE;\n            cs = f / t;\n            sn = g / t;\n            s[j] = t;\n            f = cs * e[j] + sn * s[j + 1];\n            s[j + 1] = -sn * e[j] + cs * s[j + 1];\n            g = sn * e[j + 1];\n            e[j + 1] = cs * e[j + 1];\n            if (wantu && j < m - 1) {\n              for (let i = 0; i < m; i++) {\n                t = cs * U.get(i, j) + sn * U.get(i, j + 1);\n                U.set(i, j + 1, -sn * U.get(i, j) + cs * U.get(i, j + 1));\n                U.set(i, j, t);\n              }\n            }\n          }\n          e[p - 2] = f;\n          break;\n        }\n        case 4: {\n          if (s[k] <= 0) {\n            s[k] = s[k] < 0 ? -s[k] : 0;\n            if (wantv) {\n              for (let i = 0; i <= pp; i++) {\n                V.set(i, k, -V.get(i, k));\n              }\n            }\n          }\n          while (k < pp) {\n            if (s[k] >= s[k + 1]) {\n              break;\n            }\n            let t = s[k];\n            s[k] = s[k + 1];\n            s[k + 1] = t;\n            if (wantv && k < n - 1) {\n              for (let i = 0; i < n; i++) {\n                t = V.get(i, k + 1);\n                V.set(i, k + 1, V.get(i, k));\n                V.set(i, k, t);\n              }\n            }\n            if (wantu && k < m - 1) {\n              for (let i = 0; i < m; i++) {\n                t = U.get(i, k + 1);\n                U.set(i, k + 1, U.get(i, k));\n                U.set(i, k, t);\n              }\n            }\n            k++;\n          }\n          p--;\n          break;\n        }\n        // no default\n      }\n    }\n\n    if (swapped) {\n      let tmp = V;\n      V = U;\n      U = tmp;\n    }\n\n    this.m = m;\n    this.n = n;\n    this.s = s;\n    this.U = U;\n    this.V = V;\n  }\n\n  solve(value) {\n    let Y = value;\n    let e = this.threshold;\n    let scols = this.s.length;\n    let Ls = Matrix.zeros(scols, scols);\n\n    for (let i = 0; i < scols; i++) {\n      if (Math.abs(this.s[i]) <= e) {\n        Ls.set(i, i, 0);\n      } else {\n        Ls.set(i, i, 1 / this.s[i]);\n      }\n    }\n\n    let U = this.U;\n    let V = this.rightSingularVectors;\n\n    let VL = V.mmul(Ls);\n    let vrows = V.rows;\n    let urows = U.rows;\n    let VLU = Matrix.zeros(vrows, urows);\n\n    for (let i = 0; i < vrows; i++) {\n      for (let j = 0; j < urows; j++) {\n        let sum = 0;\n        for (let k = 0; k < scols; k++) {\n          sum += VL.get(i, k) * U.get(j, k);\n        }\n        VLU.set(i, j, sum);\n      }\n    }\n\n    return VLU.mmul(Y);\n  }\n\n  solveForDiagonal(value) {\n    return this.solve(Matrix.diag(value));\n  }\n\n  inverse() {\n    let V = this.V;\n    let e = this.threshold;\n    let vrows = V.rows;\n    let vcols = V.columns;\n    let X = new Matrix(vrows, this.s.length);\n\n    for (let i = 0; i < vrows; i++) {\n      for (let j = 0; j < vcols; j++) {\n        if (Math.abs(this.s[j]) > e) {\n          X.set(i, j, V.get(i, j) / this.s[j]);\n        }\n      }\n    }\n\n    let U = this.U;\n\n    let urows = U.rows;\n    let ucols = U.columns;\n    let Y = new Matrix(vrows, urows);\n\n    for (let i = 0; i < vrows; i++) {\n      for (let j = 0; j < urows; j++) {\n        let sum = 0;\n        for (let k = 0; k < ucols; k++) {\n          sum += X.get(i, k) * U.get(j, k);\n        }\n        Y.set(i, j, sum);\n      }\n    }\n\n    return Y;\n  }\n\n  get condition() {\n    return this.s[0] / this.s[Math.min(this.m, this.n) - 1];\n  }\n\n  get norm2() {\n    return this.s[0];\n  }\n\n  get rank() {\n    let tol = Math.max(this.m, this.n) * this.s[0] * Number.EPSILON;\n    let r = 0;\n    let s = this.s;\n    for (let i = 0, ii = s.length; i < ii; i++) {\n      if (s[i] > tol) {\n        r++;\n      }\n    }\n    return r;\n  }\n\n  get diagonal() {\n    return Array.from(this.s);\n  }\n\n  get threshold() {\n    return (Number.EPSILON / 2) * Math.max(this.m, this.n) * this.s[0];\n  }\n\n  get leftSingularVectors() {\n    return this.U;\n  }\n\n  get rightSingularVectors() {\n    return this.V;\n  }\n\n  get diagonalMatrix() {\n    return Matrix.diag(this.s);\n  }\n}\n\nfunction inverse(matrix, useSVD = false) {\n  matrix = WrapperMatrix2D.checkMatrix(matrix);\n  if (useSVD) {\n    return new SingularValueDecomposition(matrix).inverse();\n  } else {\n    return solve(matrix, Matrix.eye(matrix.rows));\n  }\n}\n\nfunction solve(leftHandSide, rightHandSide, useSVD = false) {\n  leftHandSide = WrapperMatrix2D.checkMatrix(leftHandSide);\n  rightHandSide = WrapperMatrix2D.checkMatrix(rightHandSide);\n  if (useSVD) {\n    return new SingularValueDecomposition(leftHandSide).solve(rightHandSide);\n  } else {\n    return leftHandSide.isSquare()\n      ? new LuDecomposition(leftHandSide).solve(rightHandSide)\n      : new QrDecomposition(leftHandSide).solve(rightHandSide);\n  }\n}\n\nfunction determinant(matrix) {\n  matrix = Matrix.checkMatrix(matrix);\n  if (matrix.isSquare()) {\n    if (matrix.columns === 0) {\n      return 1;\n    }\n\n    let a, b, c, d;\n    if (matrix.columns === 2) {\n      // 2 x 2 matrix\n      a = matrix.get(0, 0);\n      b = matrix.get(0, 1);\n      c = matrix.get(1, 0);\n      d = matrix.get(1, 1);\n\n      return a * d - b * c;\n    } else if (matrix.columns === 3) {\n      // 3 x 3 matrix\n      let subMatrix0, subMatrix1, subMatrix2;\n      subMatrix0 = new MatrixSelectionView(matrix, [1, 2], [1, 2]);\n      subMatrix1 = new MatrixSelectionView(matrix, [1, 2], [0, 2]);\n      subMatrix2 = new MatrixSelectionView(matrix, [1, 2], [0, 1]);\n      a = matrix.get(0, 0);\n      b = matrix.get(0, 1);\n      c = matrix.get(0, 2);\n\n      return (\n        a * determinant(subMatrix0) -\n        b * determinant(subMatrix1) +\n        c * determinant(subMatrix2)\n      );\n    } else {\n      // general purpose determinant using the LU decomposition\n      return new LuDecomposition(matrix).determinant;\n    }\n  } else {\n    throw Error('determinant can only be calculated for a square matrix');\n  }\n}\n\nfunction xrange(n, exception) {\n  let range = [];\n  for (let i = 0; i < n; i++) {\n    if (i !== exception) {\n      range.push(i);\n    }\n  }\n  return range;\n}\n\nfunction dependenciesOneRow(\n  error,\n  matrix,\n  index,\n  thresholdValue = 10e-10,\n  thresholdError = 10e-10,\n) {\n  if (error > thresholdError) {\n    return new Array(matrix.rows + 1).fill(0);\n  } else {\n    let returnArray = matrix.addRow(index, [0]);\n    for (let i = 0; i < returnArray.rows; i++) {\n      if (Math.abs(returnArray.get(i, 0)) < thresholdValue) {\n        returnArray.set(i, 0, 0);\n      }\n    }\n    return returnArray.to1DArray();\n  }\n}\n\nfunction linearDependencies(matrix, options = {}) {\n  const { thresholdValue = 10e-10, thresholdError = 10e-10 } = options;\n  matrix = Matrix.checkMatrix(matrix);\n\n  let n = matrix.rows;\n  let results = new Matrix(n, n);\n\n  for (let i = 0; i < n; i++) {\n    let b = Matrix.columnVector(matrix.getRow(i));\n    let Abis = matrix.subMatrixRow(xrange(n, i)).transpose();\n    let svd = new SingularValueDecomposition(Abis);\n    let x = svd.solve(b);\n    let error = Matrix.sub(b, Abis.mmul(x)).abs().max();\n    results.setRow(\n      i,\n      dependenciesOneRow(error, x, i, thresholdValue, thresholdError),\n    );\n  }\n  return results;\n}\n\nfunction pseudoInverse(matrix, threshold = Number.EPSILON) {\n  matrix = Matrix.checkMatrix(matrix);\n  if (matrix.isEmpty()) {\n    // with a zero dimension, the pseudo-inverse is the transpose, since all 0xn and nx0 matrices are singular\n    // (0xn)*(nx0)*(0xn) = 0xn\n    // (nx0)*(0xn)*(nx0) = nx0\n    return matrix.transpose();\n  }\n  let svdSolution = new SingularValueDecomposition(matrix, { autoTranspose: true });\n\n  let U = svdSolution.leftSingularVectors;\n  let V = svdSolution.rightSingularVectors;\n  let s = svdSolution.diagonal;\n\n  for (let i = 0; i < s.length; i++) {\n    if (Math.abs(s[i]) > threshold) {\n      s[i] = 1.0 / s[i];\n    } else {\n      s[i] = 0.0;\n    }\n  }\n\n  return V.mmul(Matrix.diag(s).mmul(U.transpose()));\n}\n\nfunction covariance(xMatrix, yMatrix = xMatrix, options = {}) {\n  xMatrix = new Matrix(xMatrix);\n  let yIsSame = false;\n  if (\n    typeof yMatrix === 'object' &&\n    !Matrix.isMatrix(yMatrix) &&\n    !isAnyArray.isAnyArray(yMatrix)\n  ) {\n    options = yMatrix;\n    yMatrix = xMatrix;\n    yIsSame = true;\n  } else {\n    yMatrix = new Matrix(yMatrix);\n  }\n  if (xMatrix.rows !== yMatrix.rows) {\n    throw new TypeError('Both matrices must have the same number of rows');\n  }\n  const { center = true } = options;\n  if (center) {\n    xMatrix = xMatrix.center('column');\n    if (!yIsSame) {\n      yMatrix = yMatrix.center('column');\n    }\n  }\n  const cov = xMatrix.transpose().mmul(yMatrix);\n  for (let i = 0; i < cov.rows; i++) {\n    for (let j = 0; j < cov.columns; j++) {\n      cov.set(i, j, cov.get(i, j) * (1 / (xMatrix.rows - 1)));\n    }\n  }\n  return cov;\n}\n\nfunction correlation(xMatrix, yMatrix = xMatrix, options = {}) {\n  xMatrix = new Matrix(xMatrix);\n  let yIsSame = false;\n  if (\n    typeof yMatrix === 'object' &&\n    !Matrix.isMatrix(yMatrix) &&\n    !isAnyArray.isAnyArray(yMatrix)\n  ) {\n    options = yMatrix;\n    yMatrix = xMatrix;\n    yIsSame = true;\n  } else {\n    yMatrix = new Matrix(yMatrix);\n  }\n  if (xMatrix.rows !== yMatrix.rows) {\n    throw new TypeError('Both matrices must have the same number of rows');\n  }\n\n  const { center = true, scale = true } = options;\n  if (center) {\n    xMatrix.center('column');\n    if (!yIsSame) {\n      yMatrix.center('column');\n    }\n  }\n  if (scale) {\n    xMatrix.scale('column');\n    if (!yIsSame) {\n      yMatrix.scale('column');\n    }\n  }\n\n  const sdx = xMatrix.standardDeviation('column', { unbiased: true });\n  const sdy = yIsSame\n    ? sdx\n    : yMatrix.standardDeviation('column', { unbiased: true });\n\n  const corr = xMatrix.transpose().mmul(yMatrix);\n  for (let i = 0; i < corr.rows; i++) {\n    for (let j = 0; j < corr.columns; j++) {\n      corr.set(\n        i,\n        j,\n        corr.get(i, j) * (1 / (sdx[i] * sdy[j])) * (1 / (xMatrix.rows - 1)),\n      );\n    }\n  }\n  return corr;\n}\n\nclass EigenvalueDecomposition {\n  constructor(matrix, options = {}) {\n    const { assumeSymmetric = false } = options;\n\n    matrix = WrapperMatrix2D.checkMatrix(matrix);\n    if (!matrix.isSquare()) {\n      throw new Error('Matrix is not a square matrix');\n    }\n\n    if (matrix.isEmpty()) {\n      throw new Error('Matrix must be non-empty');\n    }\n\n    let n = matrix.columns;\n    let V = new Matrix(n, n);\n    let d = new Float64Array(n);\n    let e = new Float64Array(n);\n    let value = matrix;\n    let i, j;\n\n    let isSymmetric = false;\n    if (assumeSymmetric) {\n      isSymmetric = true;\n    } else {\n      isSymmetric = matrix.isSymmetric();\n    }\n\n    if (isSymmetric) {\n      for (i = 0; i < n; i++) {\n        for (j = 0; j < n; j++) {\n          V.set(i, j, value.get(i, j));\n        }\n      }\n      tred2(n, e, d, V);\n      tql2(n, e, d, V);\n    } else {\n      let H = new Matrix(n, n);\n      let ort = new Float64Array(n);\n      for (j = 0; j < n; j++) {\n        for (i = 0; i < n; i++) {\n          H.set(i, j, value.get(i, j));\n        }\n      }\n      orthes(n, H, ort, V);\n      hqr2(n, e, d, V, H);\n    }\n\n    this.n = n;\n    this.e = e;\n    this.d = d;\n    this.V = V;\n  }\n\n  get realEigenvalues() {\n    return Array.from(this.d);\n  }\n\n  get imaginaryEigenvalues() {\n    return Array.from(this.e);\n  }\n\n  get eigenvectorMatrix() {\n    return this.V;\n  }\n\n  get diagonalMatrix() {\n    let n = this.n;\n    let e = this.e;\n    let d = this.d;\n    let X = new Matrix(n, n);\n    let i, j;\n    for (i = 0; i < n; i++) {\n      for (j = 0; j < n; j++) {\n        X.set(i, j, 0);\n      }\n      X.set(i, i, d[i]);\n      if (e[i] > 0) {\n        X.set(i, i + 1, e[i]);\n      } else if (e[i] < 0) {\n        X.set(i, i - 1, e[i]);\n      }\n    }\n    return X;\n  }\n}\n\nfunction tred2(n, e, d, V) {\n  let f, g, h, i, j, k, hh, scale;\n\n  for (j = 0; j < n; j++) {\n    d[j] = V.get(n - 1, j);\n  }\n\n  for (i = n - 1; i > 0; i--) {\n    scale = 0;\n    h = 0;\n    for (k = 0; k < i; k++) {\n      scale = scale + Math.abs(d[k]);\n    }\n\n    if (scale === 0) {\n      e[i] = d[i - 1];\n      for (j = 0; j < i; j++) {\n        d[j] = V.get(i - 1, j);\n        V.set(i, j, 0);\n        V.set(j, i, 0);\n      }\n    } else {\n      for (k = 0; k < i; k++) {\n        d[k] /= scale;\n        h += d[k] * d[k];\n      }\n\n      f = d[i - 1];\n      g = Math.sqrt(h);\n      if (f > 0) {\n        g = -g;\n      }\n\n      e[i] = scale * g;\n      h = h - f * g;\n      d[i - 1] = f - g;\n      for (j = 0; j < i; j++) {\n        e[j] = 0;\n      }\n\n      for (j = 0; j < i; j++) {\n        f = d[j];\n        V.set(j, i, f);\n        g = e[j] + V.get(j, j) * f;\n        for (k = j + 1; k <= i - 1; k++) {\n          g += V.get(k, j) * d[k];\n          e[k] += V.get(k, j) * f;\n        }\n        e[j] = g;\n      }\n\n      f = 0;\n      for (j = 0; j < i; j++) {\n        e[j] /= h;\n        f += e[j] * d[j];\n      }\n\n      hh = f / (h + h);\n      for (j = 0; j < i; j++) {\n        e[j] -= hh * d[j];\n      }\n\n      for (j = 0; j < i; j++) {\n        f = d[j];\n        g = e[j];\n        for (k = j; k <= i - 1; k++) {\n          V.set(k, j, V.get(k, j) - (f * e[k] + g * d[k]));\n        }\n        d[j] = V.get(i - 1, j);\n        V.set(i, j, 0);\n      }\n    }\n    d[i] = h;\n  }\n\n  for (i = 0; i < n - 1; i++) {\n    V.set(n - 1, i, V.get(i, i));\n    V.set(i, i, 1);\n    h = d[i + 1];\n    if (h !== 0) {\n      for (k = 0; k <= i; k++) {\n        d[k] = V.get(k, i + 1) / h;\n      }\n\n      for (j = 0; j <= i; j++) {\n        g = 0;\n        for (k = 0; k <= i; k++) {\n          g += V.get(k, i + 1) * V.get(k, j);\n        }\n        for (k = 0; k <= i; k++) {\n          V.set(k, j, V.get(k, j) - g * d[k]);\n        }\n      }\n    }\n\n    for (k = 0; k <= i; k++) {\n      V.set(k, i + 1, 0);\n    }\n  }\n\n  for (j = 0; j < n; j++) {\n    d[j] = V.get(n - 1, j);\n    V.set(n - 1, j, 0);\n  }\n\n  V.set(n - 1, n - 1, 1);\n  e[0] = 0;\n}\n\nfunction tql2(n, e, d, V) {\n  let g, h, i, j, k, l, m, p, r, dl1, c, c2, c3, el1, s, s2;\n\n  for (i = 1; i < n; i++) {\n    e[i - 1] = e[i];\n  }\n\n  e[n - 1] = 0;\n\n  let f = 0;\n  let tst1 = 0;\n  let eps = Number.EPSILON;\n\n  for (l = 0; l < n; l++) {\n    tst1 = Math.max(tst1, Math.abs(d[l]) + Math.abs(e[l]));\n    m = l;\n    while (m < n) {\n      if (Math.abs(e[m]) <= eps * tst1) {\n        break;\n      }\n      m++;\n    }\n\n    if (m > l) {\n      do {\n\n        g = d[l];\n        p = (d[l + 1] - g) / (2 * e[l]);\n        r = hypotenuse(p, 1);\n        if (p < 0) {\n          r = -r;\n        }\n\n        d[l] = e[l] / (p + r);\n        d[l + 1] = e[l] * (p + r);\n        dl1 = d[l + 1];\n        h = g - d[l];\n        for (i = l + 2; i < n; i++) {\n          d[i] -= h;\n        }\n\n        f = f + h;\n\n        p = d[m];\n        c = 1;\n        c2 = c;\n        c3 = c;\n        el1 = e[l + 1];\n        s = 0;\n        s2 = 0;\n        for (i = m - 1; i >= l; i--) {\n          c3 = c2;\n          c2 = c;\n          s2 = s;\n          g = c * e[i];\n          h = c * p;\n          r = hypotenuse(p, e[i]);\n          e[i + 1] = s * r;\n          s = e[i] / r;\n          c = p / r;\n          p = c * d[i] - s * g;\n          d[i + 1] = h + s * (c * g + s * d[i]);\n\n          for (k = 0; k < n; k++) {\n            h = V.get(k, i + 1);\n            V.set(k, i + 1, s * V.get(k, i) + c * h);\n            V.set(k, i, c * V.get(k, i) - s * h);\n          }\n        }\n\n        p = (-s * s2 * c3 * el1 * e[l]) / dl1;\n        e[l] = s * p;\n        d[l] = c * p;\n      } while (Math.abs(e[l]) > eps * tst1);\n    }\n    d[l] = d[l] + f;\n    e[l] = 0;\n  }\n\n  for (i = 0; i < n - 1; i++) {\n    k = i;\n    p = d[i];\n    for (j = i + 1; j < n; j++) {\n      if (d[j] < p) {\n        k = j;\n        p = d[j];\n      }\n    }\n\n    if (k !== i) {\n      d[k] = d[i];\n      d[i] = p;\n      for (j = 0; j < n; j++) {\n        p = V.get(j, i);\n        V.set(j, i, V.get(j, k));\n        V.set(j, k, p);\n      }\n    }\n  }\n}\n\nfunction orthes(n, H, ort, V) {\n  let low = 0;\n  let high = n - 1;\n  let f, g, h, i, j, m;\n  let scale;\n\n  for (m = low + 1; m <= high - 1; m++) {\n    scale = 0;\n    for (i = m; i <= high; i++) {\n      scale = scale + Math.abs(H.get(i, m - 1));\n    }\n\n    if (scale !== 0) {\n      h = 0;\n      for (i = high; i >= m; i--) {\n        ort[i] = H.get(i, m - 1) / scale;\n        h += ort[i] * ort[i];\n      }\n\n      g = Math.sqrt(h);\n      if (ort[m] > 0) {\n        g = -g;\n      }\n\n      h = h - ort[m] * g;\n      ort[m] = ort[m] - g;\n\n      for (j = m; j < n; j++) {\n        f = 0;\n        for (i = high; i >= m; i--) {\n          f += ort[i] * H.get(i, j);\n        }\n\n        f = f / h;\n        for (i = m; i <= high; i++) {\n          H.set(i, j, H.get(i, j) - f * ort[i]);\n        }\n      }\n\n      for (i = 0; i <= high; i++) {\n        f = 0;\n        for (j = high; j >= m; j--) {\n          f += ort[j] * H.get(i, j);\n        }\n\n        f = f / h;\n        for (j = m; j <= high; j++) {\n          H.set(i, j, H.get(i, j) - f * ort[j]);\n        }\n      }\n\n      ort[m] = scale * ort[m];\n      H.set(m, m - 1, scale * g);\n    }\n  }\n\n  for (i = 0; i < n; i++) {\n    for (j = 0; j < n; j++) {\n      V.set(i, j, i === j ? 1 : 0);\n    }\n  }\n\n  for (m = high - 1; m >= low + 1; m--) {\n    if (H.get(m, m - 1) !== 0) {\n      for (i = m + 1; i <= high; i++) {\n        ort[i] = H.get(i, m - 1);\n      }\n\n      for (j = m; j <= high; j++) {\n        g = 0;\n        for (i = m; i <= high; i++) {\n          g += ort[i] * V.get(i, j);\n        }\n\n        g = g / ort[m] / H.get(m, m - 1);\n        for (i = m; i <= high; i++) {\n          V.set(i, j, V.get(i, j) + g * ort[i]);\n        }\n      }\n    }\n  }\n}\n\nfunction hqr2(nn, e, d, V, H) {\n  let n = nn - 1;\n  let low = 0;\n  let high = nn - 1;\n  let eps = Number.EPSILON;\n  let exshift = 0;\n  let norm = 0;\n  let p = 0;\n  let q = 0;\n  let r = 0;\n  let s = 0;\n  let z = 0;\n  let iter = 0;\n  let i, j, k, l, m, t, w, x, y;\n  let ra, sa, vr, vi;\n  let notlast, cdivres;\n\n  for (i = 0; i < nn; i++) {\n    if (i < low || i > high) {\n      d[i] = H.get(i, i);\n      e[i] = 0;\n    }\n\n    for (j = Math.max(i - 1, 0); j < nn; j++) {\n      norm = norm + Math.abs(H.get(i, j));\n    }\n  }\n\n  while (n >= low) {\n    l = n;\n    while (l > low) {\n      s = Math.abs(H.get(l - 1, l - 1)) + Math.abs(H.get(l, l));\n      if (s === 0) {\n        s = norm;\n      }\n      if (Math.abs(H.get(l, l - 1)) < eps * s) {\n        break;\n      }\n      l--;\n    }\n\n    if (l === n) {\n      H.set(n, n, H.get(n, n) + exshift);\n      d[n] = H.get(n, n);\n      e[n] = 0;\n      n--;\n      iter = 0;\n    } else if (l === n - 1) {\n      w = H.get(n, n - 1) * H.get(n - 1, n);\n      p = (H.get(n - 1, n - 1) - H.get(n, n)) / 2;\n      q = p * p + w;\n      z = Math.sqrt(Math.abs(q));\n      H.set(n, n, H.get(n, n) + exshift);\n      H.set(n - 1, n - 1, H.get(n - 1, n - 1) + exshift);\n      x = H.get(n, n);\n\n      if (q >= 0) {\n        z = p >= 0 ? p + z : p - z;\n        d[n - 1] = x + z;\n        d[n] = d[n - 1];\n        if (z !== 0) {\n          d[n] = x - w / z;\n        }\n        e[n - 1] = 0;\n        e[n] = 0;\n        x = H.get(n, n - 1);\n        s = Math.abs(x) + Math.abs(z);\n        p = x / s;\n        q = z / s;\n        r = Math.sqrt(p * p + q * q);\n        p = p / r;\n        q = q / r;\n\n        for (j = n - 1; j < nn; j++) {\n          z = H.get(n - 1, j);\n          H.set(n - 1, j, q * z + p * H.get(n, j));\n          H.set(n, j, q * H.get(n, j) - p * z);\n        }\n\n        for (i = 0; i <= n; i++) {\n          z = H.get(i, n - 1);\n          H.set(i, n - 1, q * z + p * H.get(i, n));\n          H.set(i, n, q * H.get(i, n) - p * z);\n        }\n\n        for (i = low; i <= high; i++) {\n          z = V.get(i, n - 1);\n          V.set(i, n - 1, q * z + p * V.get(i, n));\n          V.set(i, n, q * V.get(i, n) - p * z);\n        }\n      } else {\n        d[n - 1] = x + p;\n        d[n] = x + p;\n        e[n - 1] = z;\n        e[n] = -z;\n      }\n\n      n = n - 2;\n      iter = 0;\n    } else {\n      x = H.get(n, n);\n      y = 0;\n      w = 0;\n      if (l < n) {\n        y = H.get(n - 1, n - 1);\n        w = H.get(n, n - 1) * H.get(n - 1, n);\n      }\n\n      if (iter === 10) {\n        exshift += x;\n        for (i = low; i <= n; i++) {\n          H.set(i, i, H.get(i, i) - x);\n        }\n        s = Math.abs(H.get(n, n - 1)) + Math.abs(H.get(n - 1, n - 2));\n        // eslint-disable-next-line no-multi-assign\n        x = y = 0.75 * s;\n        w = -0.4375 * s * s;\n      }\n\n      if (iter === 30) {\n        s = (y - x) / 2;\n        s = s * s + w;\n        if (s > 0) {\n          s = Math.sqrt(s);\n          if (y < x) {\n            s = -s;\n          }\n          s = x - w / ((y - x) / 2 + s);\n          for (i = low; i <= n; i++) {\n            H.set(i, i, H.get(i, i) - s);\n          }\n          exshift += s;\n          // eslint-disable-next-line no-multi-assign\n          x = y = w = 0.964;\n        }\n      }\n\n      iter = iter + 1;\n\n      m = n - 2;\n      while (m >= l) {\n        z = H.get(m, m);\n        r = x - z;\n        s = y - z;\n        p = (r * s - w) / H.get(m + 1, m) + H.get(m, m + 1);\n        q = H.get(m + 1, m + 1) - z - r - s;\n        r = H.get(m + 2, m + 1);\n        s = Math.abs(p) + Math.abs(q) + Math.abs(r);\n        p = p / s;\n        q = q / s;\n        r = r / s;\n        if (m === l) {\n          break;\n        }\n        if (\n          Math.abs(H.get(m, m - 1)) * (Math.abs(q) + Math.abs(r)) <\n          eps *\n            (Math.abs(p) *\n              (Math.abs(H.get(m - 1, m - 1)) +\n                Math.abs(z) +\n                Math.abs(H.get(m + 1, m + 1))))\n        ) {\n          break;\n        }\n        m--;\n      }\n\n      for (i = m + 2; i <= n; i++) {\n        H.set(i, i - 2, 0);\n        if (i > m + 2) {\n          H.set(i, i - 3, 0);\n        }\n      }\n\n      for (k = m; k <= n - 1; k++) {\n        notlast = k !== n - 1;\n        if (k !== m) {\n          p = H.get(k, k - 1);\n          q = H.get(k + 1, k - 1);\n          r = notlast ? H.get(k + 2, k - 1) : 0;\n          x = Math.abs(p) + Math.abs(q) + Math.abs(r);\n          if (x !== 0) {\n            p = p / x;\n            q = q / x;\n            r = r / x;\n          }\n        }\n\n        if (x === 0) {\n          break;\n        }\n\n        s = Math.sqrt(p * p + q * q + r * r);\n        if (p < 0) {\n          s = -s;\n        }\n\n        if (s !== 0) {\n          if (k !== m) {\n            H.set(k, k - 1, -s * x);\n          } else if (l !== m) {\n            H.set(k, k - 1, -H.get(k, k - 1));\n          }\n\n          p = p + s;\n          x = p / s;\n          y = q / s;\n          z = r / s;\n          q = q / p;\n          r = r / p;\n\n          for (j = k; j < nn; j++) {\n            p = H.get(k, j) + q * H.get(k + 1, j);\n            if (notlast) {\n              p = p + r * H.get(k + 2, j);\n              H.set(k + 2, j, H.get(k + 2, j) - p * z);\n            }\n\n            H.set(k, j, H.get(k, j) - p * x);\n            H.set(k + 1, j, H.get(k + 1, j) - p * y);\n          }\n\n          for (i = 0; i <= Math.min(n, k + 3); i++) {\n            p = x * H.get(i, k) + y * H.get(i, k + 1);\n            if (notlast) {\n              p = p + z * H.get(i, k + 2);\n              H.set(i, k + 2, H.get(i, k + 2) - p * r);\n            }\n\n            H.set(i, k, H.get(i, k) - p);\n            H.set(i, k + 1, H.get(i, k + 1) - p * q);\n          }\n\n          for (i = low; i <= high; i++) {\n            p = x * V.get(i, k) + y * V.get(i, k + 1);\n            if (notlast) {\n              p = p + z * V.get(i, k + 2);\n              V.set(i, k + 2, V.get(i, k + 2) - p * r);\n            }\n\n            V.set(i, k, V.get(i, k) - p);\n            V.set(i, k + 1, V.get(i, k + 1) - p * q);\n          }\n        }\n      }\n    }\n  }\n\n  if (norm === 0) {\n    return;\n  }\n\n  for (n = nn - 1; n >= 0; n--) {\n    p = d[n];\n    q = e[n];\n\n    if (q === 0) {\n      l = n;\n      H.set(n, n, 1);\n      for (i = n - 1; i >= 0; i--) {\n        w = H.get(i, i) - p;\n        r = 0;\n        for (j = l; j <= n; j++) {\n          r = r + H.get(i, j) * H.get(j, n);\n        }\n\n        if (e[i] < 0) {\n          z = w;\n          s = r;\n        } else {\n          l = i;\n          if (e[i] === 0) {\n            H.set(i, n, w !== 0 ? -r / w : -r / (eps * norm));\n          } else {\n            x = H.get(i, i + 1);\n            y = H.get(i + 1, i);\n            q = (d[i] - p) * (d[i] - p) + e[i] * e[i];\n            t = (x * s - z * r) / q;\n            H.set(i, n, t);\n            H.set(\n              i + 1,\n              n,\n              Math.abs(x) > Math.abs(z) ? (-r - w * t) / x : (-s - y * t) / z,\n            );\n          }\n\n          t = Math.abs(H.get(i, n));\n          if (eps * t * t > 1) {\n            for (j = i; j <= n; j++) {\n              H.set(j, n, H.get(j, n) / t);\n            }\n          }\n        }\n      }\n    } else if (q < 0) {\n      l = n - 1;\n\n      if (Math.abs(H.get(n, n - 1)) > Math.abs(H.get(n - 1, n))) {\n        H.set(n - 1, n - 1, q / H.get(n, n - 1));\n        H.set(n - 1, n, -(H.get(n, n) - p) / H.get(n, n - 1));\n      } else {\n        cdivres = cdiv(0, -H.get(n - 1, n), H.get(n - 1, n - 1) - p, q);\n        H.set(n - 1, n - 1, cdivres[0]);\n        H.set(n - 1, n, cdivres[1]);\n      }\n\n      H.set(n, n - 1, 0);\n      H.set(n, n, 1);\n      for (i = n - 2; i >= 0; i--) {\n        ra = 0;\n        sa = 0;\n        for (j = l; j <= n; j++) {\n          ra = ra + H.get(i, j) * H.get(j, n - 1);\n          sa = sa + H.get(i, j) * H.get(j, n);\n        }\n\n        w = H.get(i, i) - p;\n\n        if (e[i] < 0) {\n          z = w;\n          r = ra;\n          s = sa;\n        } else {\n          l = i;\n          if (e[i] === 0) {\n            cdivres = cdiv(-ra, -sa, w, q);\n            H.set(i, n - 1, cdivres[0]);\n            H.set(i, n, cdivres[1]);\n          } else {\n            x = H.get(i, i + 1);\n            y = H.get(i + 1, i);\n            vr = (d[i] - p) * (d[i] - p) + e[i] * e[i] - q * q;\n            vi = (d[i] - p) * 2 * q;\n            if (vr === 0 && vi === 0) {\n              vr =\n                eps *\n                norm *\n                (Math.abs(w) +\n                  Math.abs(q) +\n                  Math.abs(x) +\n                  Math.abs(y) +\n                  Math.abs(z));\n            }\n            cdivres = cdiv(\n              x * r - z * ra + q * sa,\n              x * s - z * sa - q * ra,\n              vr,\n              vi,\n            );\n            H.set(i, n - 1, cdivres[0]);\n            H.set(i, n, cdivres[1]);\n            if (Math.abs(x) > Math.abs(z) + Math.abs(q)) {\n              H.set(\n                i + 1,\n                n - 1,\n                (-ra - w * H.get(i, n - 1) + q * H.get(i, n)) / x,\n              );\n              H.set(\n                i + 1,\n                n,\n                (-sa - w * H.get(i, n) - q * H.get(i, n - 1)) / x,\n              );\n            } else {\n              cdivres = cdiv(\n                -r - y * H.get(i, n - 1),\n                -s - y * H.get(i, n),\n                z,\n                q,\n              );\n              H.set(i + 1, n - 1, cdivres[0]);\n              H.set(i + 1, n, cdivres[1]);\n            }\n          }\n\n          t = Math.max(Math.abs(H.get(i, n - 1)), Math.abs(H.get(i, n)));\n          if (eps * t * t > 1) {\n            for (j = i; j <= n; j++) {\n              H.set(j, n - 1, H.get(j, n - 1) / t);\n              H.set(j, n, H.get(j, n) / t);\n            }\n          }\n        }\n      }\n    }\n  }\n\n  for (i = 0; i < nn; i++) {\n    if (i < low || i > high) {\n      for (j = i; j < nn; j++) {\n        V.set(i, j, H.get(i, j));\n      }\n    }\n  }\n\n  for (j = nn - 1; j >= low; j--) {\n    for (i = low; i <= high; i++) {\n      z = 0;\n      for (k = low; k <= Math.min(j, high); k++) {\n        z = z + V.get(i, k) * H.get(k, j);\n      }\n      V.set(i, j, z);\n    }\n  }\n}\n\nfunction cdiv(xr, xi, yr, yi) {\n  let r, d;\n  if (Math.abs(yr) > Math.abs(yi)) {\n    r = yi / yr;\n    d = yr + r * yi;\n    return [(xr + r * xi) / d, (xi - r * xr) / d];\n  } else {\n    r = yr / yi;\n    d = yi + r * yr;\n    return [(r * xr + xi) / d, (r * xi - xr) / d];\n  }\n}\n\nclass CholeskyDecomposition {\n  constructor(value) {\n    value = WrapperMatrix2D.checkMatrix(value);\n    if (!value.isSymmetric()) {\n      throw new Error('Matrix is not symmetric');\n    }\n\n    let a = value;\n    let dimension = a.rows;\n    let l = new Matrix(dimension, dimension);\n    let positiveDefinite = true;\n    let i, j, k;\n\n    for (j = 0; j < dimension; j++) {\n      let d = 0;\n      for (k = 0; k < j; k++) {\n        let s = 0;\n        for (i = 0; i < k; i++) {\n          s += l.get(k, i) * l.get(j, i);\n        }\n        s = (a.get(j, k) - s) / l.get(k, k);\n        l.set(j, k, s);\n        d = d + s * s;\n      }\n\n      d = a.get(j, j) - d;\n\n      positiveDefinite &&= d > 0;\n      l.set(j, j, Math.sqrt(Math.max(d, 0)));\n      for (k = j + 1; k < dimension; k++) {\n        l.set(j, k, 0);\n      }\n    }\n\n    this.L = l;\n    this.positiveDefinite = positiveDefinite;\n  }\n\n  isPositiveDefinite() {\n    return this.positiveDefinite;\n  }\n\n  solve(value) {\n    value = WrapperMatrix2D.checkMatrix(value);\n\n    let l = this.L;\n    let dimension = l.rows;\n\n    if (value.rows !== dimension) {\n      throw new Error('Matrix dimensions do not match');\n    }\n    if (this.isPositiveDefinite() === false) {\n      throw new Error('Matrix is not positive definite');\n    }\n\n    let count = value.columns;\n    let B = value.clone();\n    let i, j, k;\n\n    for (k = 0; k < dimension; k++) {\n      for (j = 0; j < count; j++) {\n        for (i = 0; i < k; i++) {\n          B.set(k, j, B.get(k, j) - B.get(i, j) * l.get(k, i));\n        }\n        B.set(k, j, B.get(k, j) / l.get(k, k));\n      }\n    }\n\n    for (k = dimension - 1; k >= 0; k--) {\n      for (j = 0; j < count; j++) {\n        for (i = k + 1; i < dimension; i++) {\n          B.set(k, j, B.get(k, j) - B.get(i, j) * l.get(i, k));\n        }\n        B.set(k, j, B.get(k, j) / l.get(k, k));\n      }\n    }\n\n    return B;\n  }\n\n  get lowerTriangularMatrix() {\n    return this.L;\n  }\n}\n\nclass nipals {\n  constructor(X, options = {}) {\n    X = WrapperMatrix2D.checkMatrix(X);\n    let { Y } = options;\n    const {\n      scaleScores = false,\n      maxIterations = 1000,\n      terminationCriteria = 1e-10,\n    } = options;\n\n    let u;\n    if (Y) {\n      if (isAnyArray.isAnyArray(Y) && typeof Y[0] === 'number') {\n        Y = Matrix.columnVector(Y);\n      } else {\n        Y = WrapperMatrix2D.checkMatrix(Y);\n      }\n      if (Y.rows !== X.rows) {\n        throw new Error('Y should have the same number of rows as X');\n      }\n      u = Y.getColumnVector(0);\n    } else {\n      u = X.getColumnVector(0);\n    }\n\n    let diff = 1;\n    let t, q, w, tOld;\n\n    for (\n      let counter = 0;\n      counter < maxIterations && diff > terminationCriteria;\n      counter++\n    ) {\n      w = X.transpose().mmul(u).div(u.transpose().mmul(u).get(0, 0));\n      w = w.div(w.norm());\n\n      t = X.mmul(w).div(w.transpose().mmul(w).get(0, 0));\n\n      if (counter > 0) {\n        diff = t.clone().sub(tOld).pow(2).sum();\n      }\n      tOld = t.clone();\n\n      if (Y) {\n        q = Y.transpose().mmul(t).div(t.transpose().mmul(t).get(0, 0));\n        q = q.div(q.norm());\n\n        u = Y.mmul(q).div(q.transpose().mmul(q).get(0, 0));\n      } else {\n        u = t;\n      }\n    }\n\n    if (Y) {\n      let p = X.transpose().mmul(t).div(t.transpose().mmul(t).get(0, 0));\n      p = p.div(p.norm());\n      let xResidual = X.clone().sub(t.clone().mmul(p.transpose()));\n      let residual = u.transpose().mmul(t).div(t.transpose().mmul(t).get(0, 0));\n      let yResidual = Y.clone().sub(\n        t.clone().mulS(residual.get(0, 0)).mmul(q.transpose()),\n      );\n\n      this.t = t;\n      this.p = p.transpose();\n      this.w = w.transpose();\n      this.q = q;\n      this.u = u;\n      this.s = t.transpose().mmul(t);\n      this.xResidual = xResidual;\n      this.yResidual = yResidual;\n      this.betas = residual;\n    } else {\n      this.w = w.transpose();\n      this.s = t.transpose().mmul(t).sqrt();\n      if (scaleScores) {\n        this.t = t.clone().div(this.s.get(0, 0));\n      } else {\n        this.t = t;\n      }\n      this.xResidual = X.sub(t.mmul(w.transpose()));\n    }\n  }\n}\n\nexports.AbstractMatrix = AbstractMatrix;\nexports.CHO = CholeskyDecomposition;\nexports.CholeskyDecomposition = CholeskyDecomposition;\nexports.DistanceMatrix = DistanceMatrix;\nexports.EVD = EigenvalueDecomposition;\nexports.EigenvalueDecomposition = EigenvalueDecomposition;\nexports.LU = LuDecomposition;\nexports.LuDecomposition = LuDecomposition;\nexports.Matrix = Matrix;\nexports.MatrixColumnSelectionView = MatrixColumnSelectionView;\nexports.MatrixColumnView = MatrixColumnView;\nexports.MatrixFlipColumnView = MatrixFlipColumnView;\nexports.MatrixFlipRowView = MatrixFlipRowView;\nexports.MatrixRowSelectionView = MatrixRowSelectionView;\nexports.MatrixRowView = MatrixRowView;\nexports.MatrixSelectionView = MatrixSelectionView;\nexports.MatrixSubView = MatrixSubView;\nexports.MatrixTransposeView = MatrixTransposeView;\nexports.NIPALS = nipals;\nexports.Nipals = nipals;\nexports.QR = QrDecomposition;\nexports.QrDecomposition = QrDecomposition;\nexports.SVD = SingularValueDecomposition;\nexports.SingularValueDecomposition = SingularValueDecomposition;\nexports.SymmetricMatrix = SymmetricMatrix;\nexports.WrapperMatrix1D = WrapperMatrix1D;\nexports.WrapperMatrix2D = WrapperMatrix2D;\nexports.correlation = correlation;\nexports.covariance = covariance;\nexports.default = Matrix;\nexports.determinant = determinant;\nexports.inverse = inverse;\nexports.linearDependencies = linearDependencies;\nexports.pseudoInverse = pseudoInverse;\nexports.solve = solve;\nexports.wrap = wrap;\n","import * as matrix from './matrix.js';\n\nexport const AbstractMatrix = matrix.AbstractMatrix;\nexport const CHO = matrix.CHO;\nexport const CholeskyDecomposition = matrix.CholeskyDecomposition;\nexport const DistanceMatrix = matrix.DistanceMatrix;\nexport const EVD = matrix.EVD;\nexport const EigenvalueDecomposition = matrix.EigenvalueDecomposition;\nexport const LU = matrix.LU;\nexport const LuDecomposition = matrix.LuDecomposition;\nexport const Matrix = matrix.Matrix;\nexport const MatrixColumnSelectionView = matrix.MatrixColumnSelectionView;\nexport const MatrixColumnView = matrix.MatrixColumnView;\nexport const MatrixFlipColumnView = matrix.MatrixFlipColumnView;\nexport const MatrixFlipRowView = matrix.MatrixFlipRowView;\nexport const MatrixRowSelectionView = matrix.MatrixRowSelectionView;\nexport const MatrixRowView = matrix.MatrixRowView;\nexport const MatrixSelectionView = matrix.MatrixSelectionView;\nexport const MatrixSubView = matrix.MatrixSubView;\nexport const MatrixTransposeView = matrix.MatrixTransposeView;\nexport const NIPALS = matrix.NIPALS;\nexport const Nipals = matrix.Nipals;\nexport const QR = matrix.QR;\nexport const QrDecomposition = matrix.QrDecomposition;\nexport const SVD = matrix.SVD;\nexport const SingularValueDecomposition = matrix.SingularValueDecomposition;\nexport const SymmetricMatrix = matrix.SymmetricMatrix;\nexport const WrapperMatrix1D = matrix.WrapperMatrix1D;\nexport const WrapperMatrix2D = matrix.WrapperMatrix2D;\nexport const correlation = matrix.correlation;\nexport const covariance = matrix.covariance;\nexport default matrix.default.Matrix ? matrix.default.Matrix : matrix.Matrix;\nexport const determinant = matrix.determinant;\nexport const inverse = matrix.inverse;\nexport const linearDependencies = matrix.linearDependencies;\nexport const pseudoInverse = matrix.pseudoInverse;\nexport const solve = matrix.solve;\nexport const wrap = matrix.wrap;\n","import { Matrix } from 'ml-matrix';\nconst absDiff = (a, b) => Math.abs(a - b);\n/**\n * Generate a cost matrix from two set of values using the function passed. by default it\n * generate the cost matrix of absolute value of differences.\n * @param rowsArray - Array of values that will represent the rows of the cost matrix.\n * @param columnsArray - Array of values that will represent the columns of the cost matrix.\n * @param options\n * @returns - A matrix instance with dimensions rowsArray.length x columnsArray.length\n */\nexport function xCostMatrix(rowsArray, columnsArray, options = {}) {\n    const { fct = absDiff } = options;\n    const nbRows = rowsArray.length;\n    const nbColumns = columnsArray.length;\n    const result = new Matrix(nbRows, nbColumns);\n    for (let r = 0; r < nbRows; r++) {\n        for (let c = 0; c < nbColumns; c++) {\n            result.set(r, c, fct(rowsArray[r], columnsArray[c]));\n        }\n    }\n    return result;\n}\n//# sourceMappingURL=xCostMatrix.js.map","import { isAnyArray } from 'is-any-array';\n/**\n * Calculate an array of the same size that is the cumulative values\n * @param array - initial array\n */\nexport function xCumulative(array) {\n    if (!isAnyArray(array)) {\n        throw new TypeError('input must be an array');\n    }\n    const newArray = new Float64Array(array.length);\n    if (array.length === 0)\n        return newArray;\n    newArray[0] = array[0];\n    for (let i = 1; i < array.length; i++) {\n        newArray[i] = newArray[i - 1] + array[i];\n    }\n    return newArray;\n}\n//# sourceMappingURL=xCumulative.js.map","import { xCheck } from './xCheck';\nimport { xGetFromToIndex } from './xGetFromToIndex';\n/**\n * Computes the mean value of an array of values.\n * @param array - array of numbers\n * @param options - options\n */\nexport function xMean(array, options = {}) {\n    xCheck(array);\n    const { fromIndex, toIndex } = xGetFromToIndex(array, options);\n    let sumValue = array[fromIndex];\n    for (let i = fromIndex + 1; i <= toIndex; i++) {\n        sumValue += array[i];\n    }\n    return sumValue / (toIndex - fromIndex + 1);\n}\n//# sourceMappingURL=xMean.js.map","import { isAnyArray } from 'is-any-array';\nimport { xMean } from './xMean';\n/**\n * Finds the variance of the data\n * @param values - the values of the array\n * @param options - options\n * @returns variance\n */\nexport function xVariance(values, options = {}) {\n    if (!isAnyArray(values)) {\n        throw new TypeError('input must be an array');\n    }\n    const { unbiased = true, mean = xMean(values) } = options;\n    let sqrError = 0;\n    for (let i = 0; i < values.length; i++) {\n        const x = values[i] - mean;\n        sqrError += x * x;\n    }\n    if (unbiased) {\n        return sqrError / (values.length - 1);\n    }\n    else {\n        return sqrError / values.length;\n    }\n}\n//# sourceMappingURL=xVariance.js.map","import { xVariance } from './xVariance';\n/**\n * Finds the standard deviation for the data at hand\n * @param values - values in the data\n * @param options - options\n * @returns standard deviation\n */\nexport function xStandardDeviation(values, options = {}) {\n    return Math.sqrt(xVariance(values, options));\n}\n//# sourceMappingURL=xStandardDeviation.js.map","import { xBoxPlotWithOutliers } from './xBoxPlotWithOutliers';\nimport { xMean } from './xMean';\nimport { xStandardDeviation } from './xStandardDeviation';\n/**\n * Calculate distribution statistics of an array without providing options\n * This ensure that the statistics are calculated in the same way in all the packages\n * If the array is empty it will throw an error\n * If the array has a length of 1, sd will be NaN (unbiased calculation of sd)\n * @param array - data\n * @param options\n * @returns - q1, median, q3, min, max\n */\nexport function xDistributionStats(array) {\n    return {\n        ...xBoxPlotWithOutliers(array),\n        mean: xMean(array),\n        sd: xStandardDeviation(array),\n        nb: array.length,\n    };\n}\n//# sourceMappingURL=xDistributionStats.js.map","import { isAnyArray } from 'is-any-array';\nimport { getOutputArray } from './getOutputArray';\n/**\n * This function divide the first array by the second array or a constant value to each element of the first array\n * @param array1 - first array\n * @param array2 - second array or number\n * @param options - options\n */\nexport function xDivide(array1, array2, options = {}) {\n    let isConstant = false;\n    let constant = 0;\n    if (isAnyArray(array2)) {\n        if (array1.length !== array2.length) {\n            throw new RangeError('size of array1 and array2 must be identical');\n        }\n    }\n    else {\n        isConstant = true;\n        constant = array2;\n    }\n    const array3 = getOutputArray(options.output, array1.length);\n    if (isConstant) {\n        for (let i = 0; i < array1.length; i++) {\n            array3[i] = array1[i] / constant;\n        }\n    }\n    else {\n        for (let i = 0; i < array1.length; i++) {\n            array3[i] = array1[i] / array2[i];\n        }\n    }\n    return array3;\n}\n//# sourceMappingURL=xDivide.js.map","import { xCheck } from './xCheck';\n/**\n * Returns a copy of the data as a Float64Array.\n * @param array - array of numbers\n */\nexport function xEnsureFloat64(array) {\n    xCheck(array);\n    if (array instanceof Float64Array) {\n        return array.slice(0);\n    }\n    return Float64Array.from(array);\n}\n//# sourceMappingURL=xEnsureFloat64.js.map","import { xFindClosestIndex } from './xFindClosestIndex';\n/**\n *  Returns the targetIndex\n * @param x - array of numbers\n * @param options - options\n */\nexport function xGetTargetIndex(x, options = {}) {\n    const { target, targetIndex } = options;\n    if (targetIndex === undefined) {\n        if (target !== undefined) {\n            return xFindClosestIndex(x, target);\n        }\n        else {\n            return 0;\n        }\n    }\n    return targetIndex;\n}\n//# sourceMappingURL=xGetTargetIndex.js.map","'use strict';\n\nfunction FFT(size) {\n  this.size = size | 0;\n  if (this.size <= 1 || (this.size & (this.size - 1)) !== 0)\n    throw new Error('FFT size must be a power of two and bigger than 1');\n\n  this._csize = size << 1;\n\n  // NOTE: Use of `var` is intentional for old V8 versions\n  var table = new Array(this.size * 2);\n  for (var i = 0; i < table.length; i += 2) {\n    const angle = Math.PI * i / this.size;\n    table[i] = Math.cos(angle);\n    table[i + 1] = -Math.sin(angle);\n  }\n  this.table = table;\n\n  // Find size's power of two\n  var power = 0;\n  for (var t = 1; this.size > t; t <<= 1)\n    power++;\n\n  // Calculate initial step's width:\n  //   * If we are full radix-4 - it is 2x smaller to give inital len=8\n  //   * Otherwise it is the same as `power` to give len=4\n  this._width = power % 2 === 0 ? power - 1 : power;\n\n  // Pre-compute bit-reversal patterns\n  this._bitrev = new Array(1 << this._width);\n  for (var j = 0; j < this._bitrev.length; j++) {\n    this._bitrev[j] = 0;\n    for (var shift = 0; shift < this._width; shift += 2) {\n      var revShift = this._width - shift - 2;\n      this._bitrev[j] |= ((j >>> shift) & 3) << revShift;\n    }\n  }\n\n  this._out = null;\n  this._data = null;\n  this._inv = 0;\n}\nmodule.exports = FFT;\n\nFFT.prototype.fromComplexArray = function fromComplexArray(complex, storage) {\n  var res = storage || new Array(complex.length >>> 1);\n  for (var i = 0; i < complex.length; i += 2)\n    res[i >>> 1] = complex[i];\n  return res;\n};\n\nFFT.prototype.createComplexArray = function createComplexArray() {\n  const res = new Array(this._csize);\n  for (var i = 0; i < res.length; i++)\n    res[i] = 0;\n  return res;\n};\n\nFFT.prototype.toComplexArray = function toComplexArray(input, storage) {\n  var res = storage || this.createComplexArray();\n  for (var i = 0; i < res.length; i += 2) {\n    res[i] = input[i >>> 1];\n    res[i + 1] = 0;\n  }\n  return res;\n};\n\nFFT.prototype.completeSpectrum = function completeSpectrum(spectrum) {\n  var size = this._csize;\n  var half = size >>> 1;\n  for (var i = 2; i < half; i += 2) {\n    spectrum[size - i] = spectrum[i];\n    spectrum[size - i + 1] = -spectrum[i + 1];\n  }\n};\n\nFFT.prototype.transform = function transform(out, data) {\n  if (out === data)\n    throw new Error('Input and output buffers must be different');\n\n  this._out = out;\n  this._data = data;\n  this._inv = 0;\n  this._transform4();\n  this._out = null;\n  this._data = null;\n};\n\nFFT.prototype.realTransform = function realTransform(out, data) {\n  if (out === data)\n    throw new Error('Input and output buffers must be different');\n\n  this._out = out;\n  this._data = data;\n  this._inv = 0;\n  this._realTransform4();\n  this._out = null;\n  this._data = null;\n};\n\nFFT.prototype.inverseTransform = function inverseTransform(out, data) {\n  if (out === data)\n    throw new Error('Input and output buffers must be different');\n\n  this._out = out;\n  this._data = data;\n  this._inv = 1;\n  this._transform4();\n  for (var i = 0; i < out.length; i++)\n    out[i] /= this.size;\n  this._out = null;\n  this._data = null;\n};\n\n// radix-4 implementation\n//\n// NOTE: Uses of `var` are intentional for older V8 version that do not\n// support both `let compound assignments` and `const phi`\nFFT.prototype._transform4 = function _transform4() {\n  var out = this._out;\n  var size = this._csize;\n\n  // Initial step (permute and transform)\n  var width = this._width;\n  var step = 1 << width;\n  var len = (size / step) << 1;\n\n  var outOff;\n  var t;\n  var bitrev = this._bitrev;\n  if (len === 4) {\n    for (outOff = 0, t = 0; outOff < size; outOff += len, t++) {\n      const off = bitrev[t];\n      this._singleTransform2(outOff, off, step);\n    }\n  } else {\n    // len === 8\n    for (outOff = 0, t = 0; outOff < size; outOff += len, t++) {\n      const off = bitrev[t];\n      this._singleTransform4(outOff, off, step);\n    }\n  }\n\n  // Loop through steps in decreasing order\n  var inv = this._inv ? -1 : 1;\n  var table = this.table;\n  for (step >>= 2; step >= 2; step >>= 2) {\n    len = (size / step) << 1;\n    var quarterLen = len >>> 2;\n\n    // Loop through offsets in the data\n    for (outOff = 0; outOff < size; outOff += len) {\n      // Full case\n      var limit = outOff + quarterLen;\n      for (var i = outOff, k = 0; i < limit; i += 2, k += step) {\n        const A = i;\n        const B = A + quarterLen;\n        const C = B + quarterLen;\n        const D = C + quarterLen;\n\n        // Original values\n        const Ar = out[A];\n        const Ai = out[A + 1];\n        const Br = out[B];\n        const Bi = out[B + 1];\n        const Cr = out[C];\n        const Ci = out[C + 1];\n        const Dr = out[D];\n        const Di = out[D + 1];\n\n        // Middle values\n        const MAr = Ar;\n        const MAi = Ai;\n\n        const tableBr = table[k];\n        const tableBi = inv * table[k + 1];\n        const MBr = Br * tableBr - Bi * tableBi;\n        const MBi = Br * tableBi + Bi * tableBr;\n\n        const tableCr = table[2 * k];\n        const tableCi = inv * table[2 * k + 1];\n        const MCr = Cr * tableCr - Ci * tableCi;\n        const MCi = Cr * tableCi + Ci * tableCr;\n\n        const tableDr = table[3 * k];\n        const tableDi = inv * table[3 * k + 1];\n        const MDr = Dr * tableDr - Di * tableDi;\n        const MDi = Dr * tableDi + Di * tableDr;\n\n        // Pre-Final values\n        const T0r = MAr + MCr;\n        const T0i = MAi + MCi;\n        const T1r = MAr - MCr;\n        const T1i = MAi - MCi;\n        const T2r = MBr + MDr;\n        const T2i = MBi + MDi;\n        const T3r = inv * (MBr - MDr);\n        const T3i = inv * (MBi - MDi);\n\n        // Final values\n        const FAr = T0r + T2r;\n        const FAi = T0i + T2i;\n\n        const FCr = T0r - T2r;\n        const FCi = T0i - T2i;\n\n        const FBr = T1r + T3i;\n        const FBi = T1i - T3r;\n\n        const FDr = T1r - T3i;\n        const FDi = T1i + T3r;\n\n        out[A] = FAr;\n        out[A + 1] = FAi;\n        out[B] = FBr;\n        out[B + 1] = FBi;\n        out[C] = FCr;\n        out[C + 1] = FCi;\n        out[D] = FDr;\n        out[D + 1] = FDi;\n      }\n    }\n  }\n};\n\n// radix-2 implementation\n//\n// NOTE: Only called for len=4\nFFT.prototype._singleTransform2 = function _singleTransform2(outOff, off,\n                                                             step) {\n  const out = this._out;\n  const data = this._data;\n\n  const evenR = data[off];\n  const evenI = data[off + 1];\n  const oddR = data[off + step];\n  const oddI = data[off + step + 1];\n\n  const leftR = evenR + oddR;\n  const leftI = evenI + oddI;\n  const rightR = evenR - oddR;\n  const rightI = evenI - oddI;\n\n  out[outOff] = leftR;\n  out[outOff + 1] = leftI;\n  out[outOff + 2] = rightR;\n  out[outOff + 3] = rightI;\n};\n\n// radix-4\n//\n// NOTE: Only called for len=8\nFFT.prototype._singleTransform4 = function _singleTransform4(outOff, off,\n                                                             step) {\n  const out = this._out;\n  const data = this._data;\n  const inv = this._inv ? -1 : 1;\n  const step2 = step * 2;\n  const step3 = step * 3;\n\n  // Original values\n  const Ar = data[off];\n  const Ai = data[off + 1];\n  const Br = data[off + step];\n  const Bi = data[off + step + 1];\n  const Cr = data[off + step2];\n  const Ci = data[off + step2 + 1];\n  const Dr = data[off + step3];\n  const Di = data[off + step3 + 1];\n\n  // Pre-Final values\n  const T0r = Ar + Cr;\n  const T0i = Ai + Ci;\n  const T1r = Ar - Cr;\n  const T1i = Ai - Ci;\n  const T2r = Br + Dr;\n  const T2i = Bi + Di;\n  const T3r = inv * (Br - Dr);\n  const T3i = inv * (Bi - Di);\n\n  // Final values\n  const FAr = T0r + T2r;\n  const FAi = T0i + T2i;\n\n  const FBr = T1r + T3i;\n  const FBi = T1i - T3r;\n\n  const FCr = T0r - T2r;\n  const FCi = T0i - T2i;\n\n  const FDr = T1r - T3i;\n  const FDi = T1i + T3r;\n\n  out[outOff] = FAr;\n  out[outOff + 1] = FAi;\n  out[outOff + 2] = FBr;\n  out[outOff + 3] = FBi;\n  out[outOff + 4] = FCr;\n  out[outOff + 5] = FCi;\n  out[outOff + 6] = FDr;\n  out[outOff + 7] = FDi;\n};\n\n// Real input radix-4 implementation\nFFT.prototype._realTransform4 = function _realTransform4() {\n  var out = this._out;\n  var size = this._csize;\n\n  // Initial step (permute and transform)\n  var width = this._width;\n  var step = 1 << width;\n  var len = (size / step) << 1;\n\n  var outOff;\n  var t;\n  var bitrev = this._bitrev;\n  if (len === 4) {\n    for (outOff = 0, t = 0; outOff < size; outOff += len, t++) {\n      const off = bitrev[t];\n      this._singleRealTransform2(outOff, off >>> 1, step >>> 1);\n    }\n  } else {\n    // len === 8\n    for (outOff = 0, t = 0; outOff < size; outOff += len, t++) {\n      const off = bitrev[t];\n      this._singleRealTransform4(outOff, off >>> 1, step >>> 1);\n    }\n  }\n\n  // Loop through steps in decreasing order\n  var inv = this._inv ? -1 : 1;\n  var table = this.table;\n  for (step >>= 2; step >= 2; step >>= 2) {\n    len = (size / step) << 1;\n    var halfLen = len >>> 1;\n    var quarterLen = halfLen >>> 1;\n    var hquarterLen = quarterLen >>> 1;\n\n    // Loop through offsets in the data\n    for (outOff = 0; outOff < size; outOff += len) {\n      for (var i = 0, k = 0; i <= hquarterLen; i += 2, k += step) {\n        var A = outOff + i;\n        var B = A + quarterLen;\n        var C = B + quarterLen;\n        var D = C + quarterLen;\n\n        // Original values\n        var Ar = out[A];\n        var Ai = out[A + 1];\n        var Br = out[B];\n        var Bi = out[B + 1];\n        var Cr = out[C];\n        var Ci = out[C + 1];\n        var Dr = out[D];\n        var Di = out[D + 1];\n\n        // Middle values\n        var MAr = Ar;\n        var MAi = Ai;\n\n        var tableBr = table[k];\n        var tableBi = inv * table[k + 1];\n        var MBr = Br * tableBr - Bi * tableBi;\n        var MBi = Br * tableBi + Bi * tableBr;\n\n        var tableCr = table[2 * k];\n        var tableCi = inv * table[2 * k + 1];\n        var MCr = Cr * tableCr - Ci * tableCi;\n        var MCi = Cr * tableCi + Ci * tableCr;\n\n        var tableDr = table[3 * k];\n        var tableDi = inv * table[3 * k + 1];\n        var MDr = Dr * tableDr - Di * tableDi;\n        var MDi = Dr * tableDi + Di * tableDr;\n\n        // Pre-Final values\n        var T0r = MAr + MCr;\n        var T0i = MAi + MCi;\n        var T1r = MAr - MCr;\n        var T1i = MAi - MCi;\n        var T2r = MBr + MDr;\n        var T2i = MBi + MDi;\n        var T3r = inv * (MBr - MDr);\n        var T3i = inv * (MBi - MDi);\n\n        // Final values\n        var FAr = T0r + T2r;\n        var FAi = T0i + T2i;\n\n        var FBr = T1r + T3i;\n        var FBi = T1i - T3r;\n\n        out[A] = FAr;\n        out[A + 1] = FAi;\n        out[B] = FBr;\n        out[B + 1] = FBi;\n\n        // Output final middle point\n        if (i === 0) {\n          var FCr = T0r - T2r;\n          var FCi = T0i - T2i;\n          out[C] = FCr;\n          out[C + 1] = FCi;\n          continue;\n        }\n\n        // Do not overwrite ourselves\n        if (i === hquarterLen)\n          continue;\n\n        // In the flipped case:\n        // MAi = -MAi\n        // MBr=-MBi, MBi=-MBr\n        // MCr=-MCr\n        // MDr=MDi, MDi=MDr\n        var ST0r = T1r;\n        var ST0i = -T1i;\n        var ST1r = T0r;\n        var ST1i = -T0i;\n        var ST2r = -inv * T3i;\n        var ST2i = -inv * T3r;\n        var ST3r = -inv * T2i;\n        var ST3i = -inv * T2r;\n\n        var SFAr = ST0r + ST2r;\n        var SFAi = ST0i + ST2i;\n\n        var SFBr = ST1r + ST3i;\n        var SFBi = ST1i - ST3r;\n\n        var SA = outOff + quarterLen - i;\n        var SB = outOff + halfLen - i;\n\n        out[SA] = SFAr;\n        out[SA + 1] = SFAi;\n        out[SB] = SFBr;\n        out[SB + 1] = SFBi;\n      }\n    }\n  }\n};\n\n// radix-2 implementation\n//\n// NOTE: Only called for len=4\nFFT.prototype._singleRealTransform2 = function _singleRealTransform2(outOff,\n                                                                     off,\n                                                                     step) {\n  const out = this._out;\n  const data = this._data;\n\n  const evenR = data[off];\n  const oddR = data[off + step];\n\n  const leftR = evenR + oddR;\n  const rightR = evenR - oddR;\n\n  out[outOff] = leftR;\n  out[outOff + 1] = 0;\n  out[outOff + 2] = rightR;\n  out[outOff + 3] = 0;\n};\n\n// radix-4\n//\n// NOTE: Only called for len=8\nFFT.prototype._singleRealTransform4 = function _singleRealTransform4(outOff,\n                                                                     off,\n                                                                     step) {\n  const out = this._out;\n  const data = this._data;\n  const inv = this._inv ? -1 : 1;\n  const step2 = step * 2;\n  const step3 = step * 3;\n\n  // Original values\n  const Ar = data[off];\n  const Br = data[off + step];\n  const Cr = data[off + step2];\n  const Dr = data[off + step3];\n\n  // Pre-Final values\n  const T0r = Ar + Cr;\n  const T1r = Ar - Cr;\n  const T2r = Br + Dr;\n  const T3r = inv * (Br - Dr);\n\n  // Final values\n  const FAr = T0r + T2r;\n\n  const FBr = T1r;\n  const FBi = -T3r;\n\n  const FCr = T0r - T2r;\n\n  const FDr = T1r;\n  const FDi = T3r;\n\n  out[outOff] = FAr;\n  out[outOff + 1] = 0;\n  out[outOff + 2] = FBr;\n  out[outOff + 3] = FBi;\n  out[outOff + 4] = FCr;\n  out[outOff + 5] = 0;\n  out[outOff + 6] = FDr;\n  out[outOff + 7] = FDi;\n};\n","export function createNumberArray(ArrayConstructor, length) {\n    if (ArrayConstructor === Array) {\n        return new ArrayConstructor(length).fill(0);\n    }\n    else {\n        return new ArrayConstructor(length);\n    }\n}\nexport function createDoubleArray(ArrayConstructor, length) {\n    if (ArrayConstructor === Array) {\n        return new ArrayConstructor(length).fill(0);\n    }\n    else {\n        return new ArrayConstructor(length);\n    }\n}\n//# sourceMappingURL=createArray.js.map","/**\n * Create an array with numbers between \"from\" and \"to\" of length \"length\"\n * @param options - options\n * @returns - array of distributed numbers between \"from\" and \"to\"\n */\nexport function createFromToArray(options = {}) {\n    const { from = 0, to = 1, length = 1000, includeFrom = true, includeTo = true, distribution = 'uniform', } = options;\n    const array = new Float64Array(length);\n    let div = length;\n    if (includeFrom && includeTo) {\n        div = length - 1;\n    }\n    else if ((!includeFrom && includeTo) || (includeFrom && !includeTo)) {\n        div = length;\n    }\n    else if (!includeFrom && !includeTo) {\n        div = length + 1;\n    }\n    const delta = (to - from) / div;\n    if (distribution === 'uniform') {\n        if (includeFrom) {\n            let index = 0;\n            while (index < length) {\n                array[index] = from + delta * index;\n                index++;\n            }\n        }\n        else {\n            let index = 0;\n            while (index < length) {\n                array[index] = from + delta * (index + 1);\n                index++;\n            }\n        }\n    }\n    else if (distribution === 'log') {\n        const base = (to / from) ** (1 / div);\n        const firstExponent = Math.log(from) / Math.log(base);\n        if (includeFrom) {\n            let index = 0;\n            while (index < length) {\n                array[index] = base ** (firstExponent + index);\n                index++;\n            }\n        }\n        else {\n            let index = 0;\n            while (index < length) {\n                array[index] = base ** (firstExponent + index + 1);\n                index++;\n            }\n        }\n    }\n    else {\n        throw new Error('distribution must be uniform or log');\n    }\n    return array;\n}\n//# sourceMappingURL=createFromToArray.js.map","const LOOP = 8;\nconst FLOAT_MUL = 1 / 16777216;\nconst sh1 = 15;\nconst sh2 = 18;\nconst sh3 = 11;\nfunction multiplyUint32(n, m) {\n    n >>>= 0;\n    m >>>= 0;\n    const nlo = n & 0xffff;\n    const nhi = n - nlo;\n    return (((nhi * m) >>> 0) + nlo * m) >>> 0;\n}\nexport class XSadd {\n    random;\n    state;\n    /**\n     * create an instance of XSadd with the specified seed\n     * @param [seed=Date.now()]\n     */\n    constructor(seed = Date.now()) {\n        this.state = new Uint32Array(4);\n        this.init(seed);\n        this.random = this.getFloat.bind(this);\n    }\n    /**\n     * Returns a 32-bit integer r (0 <= r < 2^32)\n     */\n    getUint32() {\n        this.nextState();\n        return (this.state[3] + this.state[2]) >>> 0;\n    }\n    /**\n     * Returns a floating point number r (0.0 <= r < 1.0)\n     */\n    getFloat() {\n        return (this.getUint32() >>> 8) * FLOAT_MUL;\n    }\n    init(seed) {\n        if (!Number.isInteger(seed)) {\n            throw new TypeError(\"seed must be an integer\");\n        }\n        this.state[0] = seed;\n        this.state[1] = 0;\n        this.state[2] = 0;\n        this.state[3] = 0;\n        for (let i = 1; i < LOOP; i++) {\n            this.state[i & 3] ^=\n                (i +\n                    multiplyUint32(1812433253, this.state[(i - 1) & 3] ^ ((this.state[(i - 1) & 3] >>> 30) >>> 0))) >>>\n                    0;\n        }\n        this.periodCertification();\n        for (let i = 0; i < LOOP; i++) {\n            this.nextState();\n        }\n    }\n    periodCertification() {\n        if (this.state[0] === 0 &&\n            this.state[1] === 0 &&\n            this.state[2] === 0 &&\n            this.state[3] === 0) {\n            this.state[0] = 88; // X\n            this.state[1] = 83; // S\n            this.state[2] = 65; // A\n            this.state[3] = 68; // D\n        }\n    }\n    nextState() {\n        let t = this.state[0];\n        t ^= t << sh1;\n        t ^= t >>> sh2;\n        t ^= this.state[3] << sh3;\n        this.state[0] = this.state[1];\n        this.state[1] = this.state[2];\n        this.state[2] = this.state[3];\n        this.state[3] = t;\n    }\n}\n//# sourceMappingURL=XSadd.js.map","import { XSadd } from 'ml-xsadd';\n/**\n * Create a random array of numbers of a specific length.\n * @param options\n * @returns - array of random floats normally distributed\n */\nexport function createRandomArray(options = {}) {\n    const { mean = 0, standardDeviation = 1, length = 1000, range = 1, seed, distribution = 'normal', } = options;\n    const generator = new XSadd(seed);\n    const returnArray = new Float64Array(length);\n    switch (distribution) {\n        case 'normal': {\n            const gaussianGenerator = new GaussianGenerator(mean, standardDeviation, generator);\n            for (let i = 0; i < length; i++) {\n                returnArray[i] = gaussianGenerator.generateGaussian();\n            }\n            break;\n        }\n        case 'uniform': {\n            for (let i = 0; i < length; i++) {\n                returnArray[i] = (generator.random() - 0.5) * range + mean;\n            }\n            break;\n        }\n        default: {\n            throw new Error(`unknown distribution: ${String(distribution)}`);\n        }\n    }\n    return returnArray;\n}\nclass GaussianGenerator {\n    #spare = 0;\n    #hasSpare = false;\n    #mean;\n    #standardDeviation;\n    #generator;\n    constructor(mean, standardDeviation, generator) {\n        this.#mean = mean;\n        this.#standardDeviation = standardDeviation;\n        this.#generator = generator;\n    }\n    generateGaussian() {\n        let val, u, v, s;\n        if (this.#hasSpare) {\n            this.#hasSpare = false;\n            val = this.#spare * this.#standardDeviation + this.#mean;\n        }\n        else {\n            do {\n                u = this.#generator.random() * 2 - 1;\n                v = this.#generator.random() * 2 - 1;\n                s = u * u + v * v;\n            } while (s >= 1 || s === 0);\n            s = Math.sqrt((-2 * Math.log(s)) / s);\n            this.#spare = v * s;\n            this.#hasSpare = true;\n            val = this.#mean + this.#standardDeviation * u * s;\n        }\n        return val;\n    }\n}\n//# sourceMappingURL=createRandomArray.js.map","/**\n * Create an array with numbers starting from \"from\" with step \"step\" of length \"length\".\n * @param options - options\n * @returns - array of distributed numbers with step \"step\" from \"from\"\n */\nexport function createStepArray(options = {}) {\n    const { from = 0, step = 1, length = 1000 } = options;\n    const array = new Float64Array(length);\n    let index = 0;\n    while (index < length) {\n        array[index] = from + step * index;\n        index++;\n    }\n    return array;\n}\n//# sourceMappingURL=createStepArray.js.map","export function getRescaler(options = {}) {\n    const { targetMin = 0, targetMax = 1, clamp = true, algorithmOptions = {}, algorithm = 'linear', } = options;\n    let { originalMin = 0, originalMax = 1 } = options;\n    const convert = getDataConverter(algorithm, algorithmOptions);\n    originalMin = convert(originalMin);\n    originalMax = convert(originalMax);\n    const originalRange = originalMax - originalMin;\n    const targetRange = targetMax - targetMin;\n    return function rescaler(value) {\n        value = convert(value);\n        value = checkRange(value, originalMin, originalMax, clamp);\n        const valueScaled = (value - originalMin) / originalRange;\n        return targetMin + valueScaled * targetRange;\n    };\n}\nfunction getDataConverter(kind = 'linear', options = {}) {\n    return (value) => {\n        switch (kind) {\n            case 'linear':\n                return value;\n            case 'logarithmic':\n                return Math.log10(value);\n            case 'power':\n                return value ** (options.power || 2);\n            default:\n                throw new Error(`Unknown kind ${String(kind)}`);\n        }\n    };\n}\nfunction checkRange(value, min, max, clamp = true) {\n    if (value < min) {\n        if (clamp)\n            return min;\n        throw new RangeError(`Value ${value} is out of range [${min}, ${max}]`);\n    }\n    if (value > max) {\n        if (clamp)\n            return max;\n        throw new RangeError(`Value ${value} is out of range [${min}, ${max}]`);\n    }\n    return value;\n}\n//# sourceMappingURL=getRescaler.js.map","/**\n * Check if a number is a power of two.\n * @param n\n */\nexport function isPowerOfTwo(n) {\n    return n !== 0 && (n & (n - 1)) === 0;\n}\n//# sourceMappingURL=isPowerOfTwo.js.map","/**\n * Get the size of the next power of two.\n * @param n\n */\nexport function nextPowerOfTwo(n) {\n    if (n === 0)\n        return 1;\n    n--;\n    n |= n >> 1;\n    n |= n >> 2;\n    n |= n >> 4;\n    n |= n >> 8;\n    n |= n >> 16;\n    return n + 1;\n}\n//# sourceMappingURL=nextPowerOfTwo.js.map","/**\n * Resolves all promises in an object recursively. The promise with be replaced by the resolved value.\n * The changes are therefore done in-place !\n * @param object\n * @returns\n */\nexport async function recursiveResolve(object) {\n    if (typeof object !== 'object')\n        return object;\n    const promises = [];\n    await appendPromises(object, promises);\n    await Promise.all(promises);\n    return object;\n}\nfunction appendPromises(object, promises) {\n    if (typeof object !== 'object')\n        return object;\n    for (const key in object) {\n        if (typeof object[key].then === 'function') {\n            promises.push(object[key].then((value) => (object[key] = value)));\n        }\n        else if (typeof object[key] === 'object') {\n            appendPromises(object[key], promises);\n        }\n    }\n    return object;\n}\n//# sourceMappingURL=recursiveResolve.js.map","/**\n * Recursively change the typed arrays to normal arrays\n * The changes are done in-place !\n * @param object\n * @returns\n */\nexport function recursiveUntypeArrays(object) {\n    if (typeof object !== 'object')\n        return object;\n    object = modifier(object);\n    return object;\n}\nfunction modifier(object) {\n    if (typeof object !== 'object')\n        return object;\n    if (ArrayBuffer.isView(object)) {\n        return Array.from(object);\n    }\n    for (const key in object) {\n        if (ArrayBuffer.isView(object[key])) {\n            object[key] = Array.from(object[key]);\n        }\n        else if (typeof object[key] === 'object') {\n            modifier(object[key]);\n        }\n    }\n    return object;\n}\n//# sourceMappingURL=recursiveUntypeArrays.js.map","/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Stringify an object and convert all typed arrays to arrays\n * @param object\n * @param replacer\n * @param space\n * @returns\n */\nexport function stringify(object, replacer, space) {\n    const internalReplacer = (key, value) => {\n        if (ArrayBuffer.isView(value)) {\n            value = Array.from(value);\n        }\n        if (replacer) {\n            return replacer(key, value);\n        }\n        return value;\n    };\n    return JSON.stringify(object, internalReplacer, space);\n}\n//# sourceMappingURL=stringify.js.map","import { isAnyArray } from 'is-any-array';\n/**\n * This function xSubtract the first array by the second array or a constant value from each element of the first array\n * @param array1 - the array that will be rotated\n * @param array2 - second array or number\n * @returns array after subtraction\n */\nexport function xSubtract(array1, array2) {\n    let isConstant = false;\n    let constant = 0;\n    if (isAnyArray(array2)) {\n        if (array1.length !== array2.length) {\n            throw new Error('size of array1 and array2 must be identical');\n        }\n    }\n    else {\n        isConstant = true;\n        constant = array2;\n    }\n    const array3 = new Float64Array(array1.length);\n    if (isConstant) {\n        for (let i = 0; i < array1.length; i++) {\n            array3[i] = array1[i] - constant;\n        }\n    }\n    else {\n        for (let i = 0; i < array1.length; i++) {\n            array3[i] = array1[i] - array2[i];\n        }\n    }\n    return array3;\n}\n//# sourceMappingURL=xSubtract.js.map","import { xAbsolute } from '../x/xAbsolute';\nimport { xMedian } from '../x/xMedian';\nimport { xSubtract } from '../x/xSubtract';\n/**\n * Calculate the weights based on the control points and the MAD between the original data and the new baseline.\n * MAD (Median Absolute Deviation) is more robust to outliers and\n * the factor (1.4826) makes MAD scaled to be equivalent to the standard deviation for\n * normal distributions. {@link https://en.m.wikipedia.org/wiki/Median_absolute_deviation}.\n * @param yData - The original data.\n * @param baseline - The new baseline calculated.\n * @param weights - The current weights to be updated.\n * @param options - Options for updating weights.\n * @returns new array of weights.\n */\nexport function calculateAdaptiveWeights(yData, baseline, weights, options) {\n    const { controlPoints, factorStd = 3, learningRate = 0.5, minWeight = 0.01, } = options;\n    const absResiduals = xAbsolute(xSubtract(yData, baseline));\n    const medAbsRes = xMedian(absResiduals);\n    const mad = 1.4826 * medAbsRes;\n    const threshold = factorStd * mad;\n    const rawWeights = new Float64Array(absResiduals.length);\n    for (let i = 0; i < absResiduals.length; i++) {\n        rawWeights[i] = Math.exp(-((absResiduals[i] / threshold) ** 2));\n    }\n    let maxWeight = Number.MIN_SAFE_INTEGER;\n    const newWeights = Float64Array.from(weights);\n    const oneMinusLearningRate = 1 - learningRate;\n    for (let i = 0; i < newWeights.length; i++) {\n        if (controlPoints && controlPoints[i] > 0)\n            continue;\n        const weight = Math.max(minWeight, oneMinusLearningRate * weights[i] + learningRate * rawWeights[i]);\n        newWeights[i] = weight;\n        maxWeight = Math.max(maxWeight, weight);\n    }\n    newWeights[0] = maxWeight;\n    newWeights[weights.length - 1] = maxWeight;\n    return newWeights;\n}\n//# sourceMappingURL=calculateAdaptiveWeights.js.map","import FFT from 'fft.js';\nimport { isPowerOfTwo, nextPowerOfTwo } from '../utils';\nimport { xCheck } from './xCheck';\n/**\n * Performs the Hilbert transform\n * @link https://en.wikipedia.org/wiki/Hilbert_transform\n * @param array - Array containing values\n * @param options\n * @returns A new vector with 90 degree shift regarding the phase of the original function\n */\nexport function xHilbertTransform(array, options = {}) {\n    xCheck(array);\n    const { forceFFT = false } = options;\n    const length = array.length;\n    if (isPowerOfTwo(length)) {\n        return hilbertTransformWithFFT(array);\n    }\n    else if (forceFFT) {\n        return resampling(hilbertTransformWithFFT(resampling(array, nextPowerOfTwo(length))), length);\n    }\n    else {\n        return hilbertTransform(array);\n    }\n}\n/**\n * Performs the discrete Hilbert transform using fast Fourier transform\n * @param array - Array containing values\n * @returns A new vector with 90 degree shift regarding the phase of the original function\n * @see DOI: 10.1109/TAU.1970.1162139 \"Discrete Hilbert transform\"\n */\nfunction hilbertTransformWithFFT(array) {\n    const length = array.length;\n    const fft = new FFT(length);\n    const fftResult = new Float64Array(length * 2);\n    fft.realTransform(fftResult, array);\n    fft.completeSpectrum(fftResult);\n    const multiplier = new Float64Array(length);\n    for (let i = 1; i < length; i++) {\n        multiplier[i] = Math.sign(length / 2 - i);\n    }\n    for (let i = 0; i < length; i++) {\n        fftResult[i * 2] *= multiplier[i];\n        fftResult[i * 2 + 1] *= multiplier[i];\n    }\n    const hilbertSignal = new Float64Array(length * 2);\n    fft.inverseTransform(hilbertSignal, fftResult);\n    const result = new Float64Array(length);\n    for (let i = 0; i < length; i++) {\n        result[i] = hilbertSignal[i * 2 + 1];\n    }\n    return result;\n}\n/**\n * Performs the discrete Hilbert transform\n * @param array - Array containing values\n * @param options\n * @param options.inClockwise\n * @returns A new vector with 90 degree shift regarding the phase of the original function\n */\nfunction hilbertTransform(array, options = {}) {\n    const { inClockwise = true } = options;\n    const input = [0, ...array, 0];\n    const result = new Float64Array(array.length);\n    for (let k = 1; k < input.length - 1; k++) {\n        let aSum = 0;\n        for (let i = 0; i < k - 1; i++) {\n            const log = Math.log((k - i) / (k - i - 1));\n            aSum += input[i] * log + (input[i + 1] - input[i]) * (-1 + (k - i) * log);\n        }\n        const b = input[k - 1] - input[k + 1];\n        let cSum = 0;\n        for (let i = k + 1; i < input.length - 1; i++) {\n            const log = Math.log((i - k) / (i - k + 1));\n            cSum += input[i] * log + (input[i - 1] - input[i]) * (1 + (i - k) * log);\n        }\n        result[k - 1] = ((inClockwise ? 1 : -1) * (aSum + b + cSum)) / Math.PI;\n    }\n    return result;\n}\n/**\n * Performs resampling of an input array to the desired length employing linear interpolation.\n * @param array - Array containing values.\n * @param length - The length of the resulting array.\n * @returns It returns a new array of the desired length.\n * @link https://en.wikipedia.org/wiki/Sample-rate_conversion\n */\nfunction resampling(array, length) {\n    xCheck(array);\n    const oldLength = array.length;\n    const ratio = (oldLength - 1) / (length - 1);\n    const result = new Float64Array(length);\n    let currentIndex = 0;\n    let floor = Math.floor(currentIndex);\n    let ceil = Math.min(Math.ceil(currentIndex), oldLength - 1);\n    let diff = currentIndex - floor;\n    for (let i = 0; i < length; i++) {\n        result[i] = array[floor] * (1 - diff) + array[ceil] * diff;\n        currentIndex += ratio;\n        floor = Math.floor(currentIndex);\n        ceil = Math.min(Math.ceil(currentIndex), oldLength - 1);\n        diff = currentIndex - floor;\n    }\n    return result;\n}\n//# sourceMappingURL=xHilbertTransform.js.map","import { xCheck } from './xCheck';\nimport { xGetFromToIndex } from './xGetFromToIndex';\n/**\n * Computes the maximal value of an array of values\n * @param array - array of numbers\n * @param options - options\n */\nexport function xMaxValue(array, options = {}) {\n    xCheck(array);\n    const { fromIndex, toIndex } = xGetFromToIndex(array, options);\n    let maxValue = array[fromIndex];\n    for (let i = fromIndex + 1; i <= toIndex; i++) {\n        if (array[i] > maxValue) {\n            maxValue = array[i];\n        }\n    }\n    return maxValue;\n}\n//# sourceMappingURL=xMaxValue.js.map","import { xCheck } from './xCheck';\nimport { xGetFromToIndex } from './xGetFromToIndex';\n/**\n * Computes the minimal value of an array of values.\n * @param array - array of numbers\n * @param options - options\n */\nexport function xMinValue(array, options = {}) {\n    xCheck(array);\n    const { fromIndex, toIndex } = xGetFromToIndex(array, options);\n    let minValue = array[fromIndex];\n    for (let i = fromIndex + 1; i <= toIndex; i++) {\n        if (array[i] < minValue) {\n            minValue = array[i];\n        }\n    }\n    return minValue;\n}\n//# sourceMappingURL=xMinValue.js.map","import { createFromToArray } from '../utils';\nimport { xAbsolute } from './xAbsolute';\nimport { xCheck } from './xCheck';\nimport { xMaxValue } from './xMaxValue';\nimport { xMinValue } from './xMinValue';\n/**\n * Calculates a histogram of defined number of slots\n * @param array - Array containing values\n * @param options - options\n * @returns - result of the histogram\n */\nexport function xHistogram(array, options = {}) {\n    xCheck(array);\n    const histogram = options.histogram;\n    const { centerX = true, nbSlots = histogram === undefined ? 256 : histogram.x.length, logBaseX, logBaseY, absolute = false, } = options;\n    if (absolute) {\n        array = xAbsolute(array);\n    }\n    if (logBaseX) {\n        array = array.slice();\n        const logOfBase = Math.log10(logBaseX);\n        for (let i = 0; i < array.length; i++) {\n            array[i] = Math.log10(array[i]) / logOfBase;\n        }\n    }\n    const { min = xMinValue(array), max = xMaxValue(array) } = options;\n    const slotSize = (max - min) / (nbSlots + Number.EPSILON);\n    const y = histogram === undefined ? new Float64Array(nbSlots) : histogram.y;\n    const x = histogram === undefined\n        ? Array.from(createFromToArray({\n            from: min + (centerX ? slotSize / 2 : 0),\n            to: max - (centerX ? slotSize / 2 : 0),\n            length: nbSlots,\n        }))\n        : histogram.x;\n    for (const element of array) {\n        const index = Math.max(Math.min(Math.floor((element - min - Number.EPSILON) / slotSize), nbSlots - 1), 0);\n        y[index]++;\n    }\n    if (logBaseY) {\n        const logOfBase = Math.log10(logBaseY);\n        for (let i = 0; i < y.length; i++) {\n            y[i] = Math.log10(y[i] + 1) / logOfBase;\n        }\n    }\n    return { x, y };\n}\n//# sourceMappingURL=xHistogram.js.map","/**\n * Check if the values are separated always by the same difference\n * @param array - Monotone growing array of number\n * @param options\n */\nexport function xIsEquallySpaced(array, options = {}) {\n    if (array.length < 3)\n        return true;\n    const { tolerance = 0.05 } = options;\n    let maxDx = 0;\n    let minDx = Number.MAX_SAFE_INTEGER;\n    for (let i = 0; i < array.length - 1; ++i) {\n        const absoluteDifference = array[i + 1] - array[i];\n        if (absoluteDifference < minDx) {\n            minDx = absoluteDifference;\n        }\n        if (absoluteDifference > maxDx) {\n            maxDx = absoluteDifference;\n        }\n    }\n    return (maxDx - minDx) / maxDx < tolerance;\n}\n//# sourceMappingURL=xIsEquallySpaced.js.map","/**\n * Returns true if x is monotonic.\n * @param array - array of numbers.\n * @returns 1 if monotonic increasing, -1 if monotonic decreasing, 0 if not monotonic.\n */\nexport function xIsMonotonic(array) {\n    if (array.length <= 2) {\n        return 1;\n    }\n    if (array[0] === array[1]) {\n        // maybe a constant series\n        for (let i = 1; i < array.length - 1; i++) {\n            if (array[i] !== array[i + 1])\n                return 0;\n        }\n        return 1;\n    }\n    if (array[0] < array.at(-1)) {\n        for (let i = 0; i < array.length - 1; i++) {\n            if (array[i] >= array[i + 1])\n                return 0;\n        }\n        return 1;\n    }\n    else {\n        for (let i = 0; i < array.length - 1; i++) {\n            if (array[i] <= array[i + 1])\n                return 0;\n        }\n        return -1;\n    }\n}\n//# sourceMappingURL=xIsMonotonic.js.map","/**\n * Check the similarity between array created by xyMassCenterVector\n * @param array1\n * @param array2\n * @param options\n * @returns\n */\nexport function xMassCenterVectorSimilarity(array1, array2, options = {}) {\n    const { recenter = true, similarityFct = (a, b) => (a === b ? 1 : 0), } = options;\n    const depth1 = getDepth(array1);\n    const depth2 = getDepth(array2);\n    const depth = Math.min(depth1, depth2);\n    // need to copy the array because we shift the data in place if recenter is true\n    if (recenter) {\n        array1 = array1.slice();\n    }\n    let similarity = 0;\n    // we will compare level by level\n    // and recenter the array at each level\n    for (let level = 0; level < depth; level++) {\n        const maxSimilarity = 1 / depth / (1 << level);\n        for (let slot = 0; slot < 1 << level; slot++) {\n            const index = (1 << level) - 1 + slot;\n            const value1 = array1[index];\n            const value2 = array2[index];\n            similarity += similarityFct(value1, value2) * maxSimilarity;\n            if (recenter) {\n                shiftSubTree(array1, depth, level, slot, value2 - value1);\n            }\n        }\n    }\n    return similarity;\n}\nfunction shiftSubTree(array, depth, level, slot, shift) {\n    for (let currentLevel = level; currentLevel < depth; currentLevel++) {\n        const levelSlotShift = slot * (1 << (currentLevel - level));\n        const levelShift = (1 << currentLevel) - 1;\n        const levelSlotSize = 1 << (currentLevel - level);\n        for (let slotIndex = levelSlotShift; slotIndex < levelSlotShift + levelSlotSize; slotIndex++) {\n            const index = levelShift + slotIndex;\n            array[index] += shift;\n        }\n    }\n}\nfunction getDepth(array) {\n    const depth = Math.log2(array.length + 1);\n    if (depth % 1 !== 0) {\n        throw new Error('the array length is not a power of 2 minus 1');\n    }\n    return depth;\n}\n//# sourceMappingURL=xMassCenterVectorSimilarity.js.map","import { xCheck } from './xCheck';\nimport { xGetFromToIndex } from './xGetFromToIndex';\n/**\n * Computes the maximal value of an array of values\n * @param array - array of numbers\n * @param options - options\n */\nexport function xMaxAbsoluteValue(array, options = {}) {\n    xCheck(array);\n    const { fromIndex, toIndex } = xGetFromToIndex(array, options);\n    let maxValue = array[fromIndex];\n    for (let i = fromIndex + 1; i <= toIndex; i++) {\n        if (array[i] >= 0) {\n            if (array[i] > maxValue) {\n                maxValue = array[i];\n            }\n        }\n        else if (-array[i] > maxValue) {\n            maxValue = -array[i];\n        }\n    }\n    return maxValue;\n}\n//# sourceMappingURL=xMaxAbsoluteValue.js.map","import { xCheck } from './xCheck';\nimport { xGetFromToIndex } from './xGetFromToIndex';\n/**\n * Computes the index of the maximum of the given values\n * @param array - array of numbers\n * @param  options - options\n * @returns - index\n */\nexport function xMaxIndex(array, options = {}) {\n    xCheck(array);\n    const { fromIndex, toIndex } = xGetFromToIndex(array, options);\n    let maxIndex = fromIndex;\n    for (let i = fromIndex + 1; i <= toIndex; i++) {\n        if (array[i] > array[maxIndex]) {\n            maxIndex = i;\n        }\n    }\n    return maxIndex;\n}\n//# sourceMappingURL=xMaxIndex.js.map","import { xCheckLengths } from './xCheckLengths';\n/**\n * This function calculates the mean absolute error.\n * @param array1 - first array\n * @param array2 - second array\n */\nexport function xMeanAbsoluteError(array1, array2) {\n    xCheckLengths(array1, array2);\n    let sum = 0;\n    for (let i = 0; i < array1.length; i++) {\n        sum += Math.abs(array1[i] - array2[i]);\n    }\n    return sum / array1.length;\n}\n//# sourceMappingURL=xMeanAbsoluteError.js.map","import { xCheckLengths } from './xCheckLengths';\n/**\n * This function calculates the mean squared error.\n * @param array1 -first array\n * @param array2 - second array\n */\nexport function xMeanSquaredError(array1, array2) {\n    xCheckLengths(array1, array2);\n    let sum = 0;\n    for (let i = 0; i < array1.length; i++) {\n        sum += (array1[i] - array2[i]) ** 2;\n    }\n    return sum / array1.length;\n}\n//# sourceMappingURL=xMeanSquaredError.js.map","import { xCheck } from './xCheck';\nimport { xGetFromToIndex } from './xGetFromToIndex';\n/**\n * Computes the weighted mean value of an array of values.\n * @deprecated please use xyMassCenter\n * @param array - array of numbers\n * @param weights - array of weights\n * @param options - options\n */\nexport function xMeanWeighted(array, weights, options = {}) {\n    xCheck(array, { minLength: 1 });\n    xCheck(weights);\n    if (array.length !== weights.length) {\n        throw new Error('array and weights must have the same length');\n    }\n    const { fromIndex, toIndex } = xGetFromToIndex(array, options);\n    // normalize weights\n    let sumWeights = 0;\n    let sumValue = array[fromIndex] * weights[fromIndex];\n    sumWeights += weights[fromIndex];\n    for (let i = fromIndex + 1; i <= toIndex; i++) {\n        sumValue += array[i] * weights[i];\n        sumWeights += weights[i];\n    }\n    if (sumWeights === 0) {\n        // We throw because the case is not well defined\n        throw new Error('sum of weights must be > 0');\n    }\n    return sumValue / sumWeights;\n}\n//# sourceMappingURL=xMeanWeighted.js.map","import { xMedian } from './xMedian';\n/**\n * This function calculates the median absolute deviation (MAD).\n * https://en.wikipedia.org/wiki/Median_absolute_deviation\n * @param array\n */\nexport function xMedianAbsoluteDeviation(array) {\n    const median = xMedian(array);\n    const averageDeviations = new Float64Array(array.length);\n    for (let i = 0; i < array.length; i++) {\n        averageDeviations[i] = Math.abs(array[i] - median);\n    }\n    return {\n        median,\n        mad: xMedian(averageDeviations),\n    };\n}\n//# sourceMappingURL=xMedianAbsoluteDeviation.js.map","import { xCheck } from './xCheck';\nimport { xGetFromToIndex } from './xGetFromToIndex';\n/**\n * Computes the index of the minimum of the given values.\n * @param array - array of numbers\n * @param options - options\n * @returns - index\n */\nexport function xMinIndex(array, options = {}) {\n    xCheck(array);\n    const { fromIndex, toIndex } = xGetFromToIndex(array, options);\n    let minIndex = fromIndex;\n    for (let i = fromIndex + 1; i <= toIndex; i++) {\n        if (array[i] < array[minIndex]) {\n            minIndex = i;\n        }\n    }\n    return minIndex;\n}\n//# sourceMappingURL=xMinIndex.js.map","import { xCheck } from './xCheck';\n/**\n * Return min and max values of an array.\n * @param array - array of number\n * @returns - Object with 2 properties, min and max\n */\nexport function xMinMaxDelta(array) {\n    xCheck(array, {\n        minLength: 2,\n    });\n    let minDelta = array[1] - array[0];\n    let maxDelta = minDelta;\n    for (let i = 0; i < array.length - 1; i++) {\n        const delta = array[i + 1] - array[i];\n        if (delta < minDelta)\n            minDelta = delta;\n        if (delta > maxDelta)\n            maxDelta = delta;\n    }\n    return { min: minDelta, max: maxDelta };\n}\n//# sourceMappingURL=xMinMaxDelta.js.map","import { xCheck } from './xCheck';\n/**\n * Return min and max values of an array.\n * @param array - array of number\n * @returns - Object with 2 properties, min and max.\n */\nexport function xMinMaxValues(array) {\n    xCheck(array);\n    let min = array[0];\n    let max = array[0];\n    for (const value of array) {\n        if (value < min)\n            min = value;\n        if (value > max)\n            max = value;\n    }\n    return { min, max };\n}\n//# sourceMappingURL=xMinMaxValues.js.map","/**\n * Calculates the mode of an array\n * @param input - Array containing values\n * @returns - mode\n */\nexport function xMode(input) {\n    if (input.length === 0) {\n        throw new TypeError('input must not be empty');\n    }\n    let maxValue = 0;\n    let maxCount = 0;\n    let count = 0;\n    const counts = {};\n    for (let i = 0; i < input.length; ++i) {\n        const element = input[i];\n        count = counts[element];\n        if (count) {\n            counts[element]++;\n            count++;\n        }\n        else {\n            counts[element] = 1;\n            count = 1;\n        }\n        if (count > maxCount) {\n            maxCount = count;\n            maxValue = input[i];\n        }\n    }\n    return maxValue;\n}\n//# sourceMappingURL=xMode.js.map","/*\nAdapted from: https://github.com/compute-io/erfcinv/blob/aa116e23883839359e310ad41a7c42f72815fc1e/lib/number.js\n\nThe MIT License (MIT)\n\nCopyright (c) 2014-2015 The Compute.io Authors. All rights reserved.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n\nBoost Software License - Version 1.0 - August 17th, 2003\n\nPermission is hereby granted, free of charge, to any person or organization obtaining a copy of the software and accompanying documentation covered by this license (the \"Software\") to use, reproduce, display, distribute, execute, and transmit the Software, and to prepare derivative works of the Software, and to permit third-parties to whom the Software is furnished to do so, all subject to the following:\n\nThe copyright notices in the Software and this entire statement, including the above license grant, this restriction and the following disclaimer, must be included in all copies of the Software, in whole or in part, and all derivative works of the Software, unless such copies or derivative works are solely in the form of machine-executable object code generated by a source language processor.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n*/\n// Coefficients for erfcinv on [0, 0.5]:\nconst Y1 = 8.91314744949340820313e-2;\nconst P1 = [\n    -5.38772965071242932965e-3, 8.22687874676915743155e-3,\n    2.19878681111168899165e-2, -3.65637971411762664006e-2,\n    -1.26926147662974029034e-2, 3.34806625409744615033e-2,\n    -8.36874819741736770379e-3, -5.08781949658280665617e-4,\n];\nconst Q1 = [\n    8.86216390456424707504e-4, -2.33393759374190016776e-3,\n    7.95283687341571680018e-2, -5.27396382340099713954e-2,\n    -7.1228902341542847553e-1, 6.62328840472002992063e-1, 1.56221558398423026363,\n    -1.56574558234175846809, -9.70005043303290640362e-1, 1,\n];\n// Coefficients for erfcinv for 0.5 > 1-x >= 0:\nconst Y2 = 2.249481201171875;\nconst P2 = [\n    -3.67192254707729348546, 2.11294655448340526258e1, 1.7445385985570866523e1,\n    -4.46382324441786960818e1, -1.88510648058714251895e1,\n    1.76447298408374015486e1, 8.37050328343119927838, 1.05264680699391713268e-1,\n    -2.02433508355938759655e-1,\n];\nconst Q2 = [\n    1.72114765761200282724, -2.26436933413139721736e1, 1.08268667355460159008e1,\n    4.85609213108739935468e1, -2.01432634680485188801e1,\n    -2.86608180499800029974e1, 3.9713437953343869095, 6.24264124854247537712, 1,\n];\n// Coefficients for erfcinv for sqrt( -log(1-x)):\nconst Y3 = 8.07220458984375e-1;\nconst P3 = [\n    -6.81149956853776992068e-10, 2.85225331782217055858e-8,\n    -6.79465575181126350155e-7, 2.14558995388805277169e-3,\n    2.90157910005329060432e-2, 1.42869534408157156766e-1,\n    3.37785538912035898924e-1, 3.87079738972604337464e-1,\n    1.17030156341995252019e-1, -1.63794047193317060787e-1,\n    -1.31102781679951906451e-1,\n];\nconst Q3 = [\n    1.105924229346489121e-2, 1.52264338295331783612e-1, 8.48854343457902036425e-1,\n    2.59301921623620271374, 4.77846592945843778382, 5.38168345707006855425,\n    3.46625407242567245975, 1,\n];\nconst Y4 = 9.3995571136474609375e-1;\nconst P4 = [\n    2.66339227425782031962e-12, -2.30404776911882601748e-10,\n    4.60469890584317994083e-6, 1.57544617424960554631e-4,\n    1.87123492819559223345e-3, 9.50804701325919603619e-3,\n    1.85573306514231072324e-2, -2.22426529213447927281e-3,\n    -3.50353787183177984712e-2,\n];\nconst Q4 = [\n    7.64675292302794483503e-5, 2.63861676657015992959e-3,\n    3.41589143670947727934e-2, 2.20091105764131249824e-1,\n    7.62059164553623404043e-1, 1.3653349817554063097, 1,\n];\nconst Y5 = 9.8362827301025390625e-1;\nconst P5 = [\n    9.9055709973310326855e-17, -2.81128735628831791805e-14,\n    4.62596163522878599135e-9, 4.49696789927706453732e-7,\n    1.49624783758342370182e-5, 2.09386317487588078668e-4,\n    1.05628862152492910091e-3, -1.12951438745580278863e-3,\n    -1.67431005076633737133e-2,\n];\nconst Q5 = [\n    2.82243172016108031869e-7, 2.75335474764726041141e-5,\n    9.64011807005165528527e-4, 1.60746087093676504695e-2,\n    1.38151865749083321638e-1, 5.91429344886417493481e-1, 1,\n];\n/**\n * Polyval.\n * @param c - Array of Number.\n * @param x - Number.\n * @returns Number.\n */\nfunction polyval(c, x) {\n    let p = 0;\n    for (const coef of c) {\n        p = p * x + coef;\n    }\n    return p;\n}\n/**\n * Calculates a rational approximation.\n * @private\n * @param x - Number.\n * @param v - Number.\n * @param P - Array of polynomial coefficients.\n * @param Q - Array of polynomial coefficients.\n * @param Y - Number.\n * @returns Rational approximation.\n */\nfunction calc(x, v, P, Q, Y) {\n    const s = x - v;\n    const r = polyval(P, s) / polyval(Q, s);\n    return Y * x + r * x;\n}\n/**\n * Evaluates the complementary inverse error function for an input value.\n * @private\n * @param x - Input value.\n * @returns Evaluated complementary inverse error function.\n */\nexport default function erfcinv(x) {\n    let sign = false;\n    let val;\n    let q;\n    let g;\n    let r;\n    // [1] Special cases...\n    // NaN:\n    if (Number.isNaN(x)) {\n        return Number.NaN;\n    }\n    // x not on the interval: [0,2]\n    if (x < 0 || x > 2) {\n        throw new RangeError(`erfcinv()::invalid input argument. Value must be on the interval [0,2]. Value: \\`${x}\\`.`);\n    }\n    if (x === 0) {\n        return Number.POSITIVE_INFINITY;\n    }\n    if (x === 2) {\n        return Number.NEGATIVE_INFINITY;\n    }\n    if (x === 1) {\n        return 0;\n    }\n    // [2] Get the sign and make use of `erfc` reflection formula: `erfc(-z)=2 - erfc(z)`...\n    if (x > 1) {\n        q = 2 - x;\n        x = 1 - q;\n        sign = true;\n    }\n    else {\n        q = x;\n        x = 1 - x;\n    }\n    // [3] |x| <= 0.5\n    if (x <= 0.5) {\n        g = x * (x + 10);\n        r = polyval(P1, x) / polyval(Q1, x);\n        val = g * Y1 + g * r;\n        return sign ? -val : val;\n    }\n    // [4] 1-|x| >= 0.25\n    if (q >= 0.25) {\n        g = Math.sqrt(-2 * Math.log(q));\n        q = q - 0.25;\n        r = polyval(P2, q) / polyval(Q2, q);\n        val = g / (Y2 + r);\n        return sign ? -val : val;\n    }\n    q = Math.sqrt(-Math.log(q));\n    // [5] q < 3\n    if (q < 3) {\n        return calc(q, 1.125, P3, Q3, Y3);\n    }\n    // [6] q < 6\n    if (q < 6) {\n        return calc(q, 3, P4, Q4, Y4);\n    }\n    // Note that the smallest number in JavaScript is 5e-324. Math.sqrt( -Math.log( 5e-324 ) ) ~27.2844\n    return calc(q, 6, P5, Q5, Y5);\n    // Note that in the boost library, they are able to go to much smaller values, as 128 bit long doubles support ~1e-5000; something which JavaScript does not natively support.\n}\n//# sourceMappingURL=erfcinv.js.map","import erfcinv from './erfcinv';\n/**\n * Applies a simple normalization inverse transformation to the input data.\n * @param data - The input array of numbers to be transformed.\n * @param options - Optional parameters for the transformation.\n * @returns A new Float64Array containing the transformed data.\n */\nexport function simpleNormInv(data, options = {}) {\n    const { magnitudeMode = false } = options;\n    const result = new Float64Array(data.length);\n    if (magnitudeMode) {\n        for (let i = 0; i < result.length; i++) {\n            result[i] = -Math.sqrt(-2 * Math.log(1 - data[i]));\n        }\n    }\n    else {\n        for (let i = 0; i < result.length; i++) {\n            result[i] = -1 * Math.SQRT2 * erfcinv(2 * data[i]);\n        }\n    }\n    return result;\n}\n/**\n * Convenience wrapper for single number processing by simpleNormInv function.\n * @param data - The number to be normalized.\n * @param options - The options for the normalization process.\n * @returns The normalized number.\n */\nexport function simpleNormInvNumber(data, options = {}) {\n    return simpleNormInv([data], options)[0];\n}\n//# sourceMappingURL=simpleNormInv.js.map","import { isAnyArray } from 'is-any-array';\nimport { createFromToArray } from '../utils';\nimport { simpleNormInvNumber } from './utils/simpleNormInv';\nimport { xEnsureFloat64 } from './xEnsureFloat64';\n/**\n * Determine noise level by san plot methodology (https://doi.org/10.1002/mrc.4882)\n * @param array - real or magnitude spectra data.\n * @param options - options\n * @returns noise level\n */\nexport function xNoiseSanPlot(array, options = {}) {\n    const { mask, cutOff, refine = true, magnitudeMode = false, scaleFactor = 1, factorStd = 5, fixOffset = true, } = options;\n    const input = prepareData(array, { scaleFactor, mask });\n    if (fixOffset && !magnitudeMode) {\n        const medianIndex = Math.floor(input.length / 2);\n        const median = input.length % 2 === 0\n            ? 0.5 * (input[medianIndex - 1] + input[medianIndex])\n            : input[medianIndex];\n        for (let i = 0; i < input.length; i++) {\n            input[i] -= median;\n        }\n    }\n    const firstNegativeValueIndex = input.at(-1) >= 0\n        ? input.length\n        : input.findIndex((e) => e < 0);\n    let lastPositiveValueIndex = firstNegativeValueIndex - 1;\n    for (let i = lastPositiveValueIndex; i >= 0; i--) {\n        if (input[i] > 0) {\n            lastPositiveValueIndex = i;\n            break;\n        }\n    }\n    const signPositive = input.slice(0, lastPositiveValueIndex + 1);\n    const signNegative = input.slice(firstNegativeValueIndex);\n    const cutOffDist = cutOff || determineCutOff(signPositive, { magnitudeMode });\n    const pIndex = Math.floor(signPositive.length * cutOffDist);\n    const initialNoiseLevelPositive = signPositive[pIndex];\n    const skyPoint = signPositive[0];\n    let initialNoiseLevelNegative;\n    if (signNegative.length > 0) {\n        const nIndex = Math.floor(signNegative.length * (1 - cutOffDist));\n        initialNoiseLevelNegative = -1 * signNegative[nIndex];\n    }\n    else {\n        initialNoiseLevelNegative = 0;\n    }\n    let noiseLevelPositive = initialNoiseLevelPositive;\n    let noiseLevelNegative = initialNoiseLevelNegative;\n    let cloneSignPositive = signPositive.slice();\n    let cloneSignNegative = signNegative.slice();\n    let cutOffSignalsIndexPlus = 0;\n    let cutOffSignalsIndexNeg = 2;\n    if (refine) {\n        let cutOffSignals = noiseLevelPositive * factorStd;\n        cutOffSignalsIndexPlus = signPositive.findIndex((e) => e < cutOffSignals);\n        if (cutOffSignalsIndexPlus > -1) {\n            cloneSignPositive = signPositive.slice(cutOffSignalsIndexPlus);\n            noiseLevelPositive =\n                cloneSignPositive[Math.floor(cloneSignPositive.length * cutOffDist)];\n        }\n        cutOffSignals = noiseLevelNegative * factorStd;\n        cutOffSignalsIndexNeg = signNegative.findIndex((e) => e < cutOffSignals);\n        if (cutOffSignalsIndexNeg > -1) {\n            cloneSignNegative = signNegative.slice(cutOffSignalsIndexNeg);\n            noiseLevelNegative =\n                cloneSignPositive[Math.floor(cloneSignNegative.length * (1 - cutOffDist))];\n        }\n    }\n    const correctionFactor = -simpleNormInvNumber(cutOffDist / 2, {\n        magnitudeMode,\n    });\n    let effectiveCutOffDist, refinedCorrectionFactor;\n    if (refine && cutOffSignalsIndexPlus > -1) {\n        effectiveCutOffDist =\n            (cutOffDist * cloneSignPositive.length + cutOffSignalsIndexPlus) /\n                (cloneSignPositive.length + cutOffSignalsIndexPlus);\n        refinedCorrectionFactor =\n            -1 * simpleNormInvNumber(effectiveCutOffDist / 2, { magnitudeMode });\n        noiseLevelPositive /= refinedCorrectionFactor;\n        if (cutOffSignalsIndexNeg > -1) {\n            effectiveCutOffDist =\n                (cutOffDist * cloneSignNegative.length + cutOffSignalsIndexNeg) /\n                    (cloneSignNegative.length + cutOffSignalsIndexNeg);\n            refinedCorrectionFactor =\n                -1 * simpleNormInvNumber(effectiveCutOffDist / 2, { magnitudeMode });\n            if (noiseLevelNegative !== 0) {\n                noiseLevelNegative /= refinedCorrectionFactor;\n            }\n        }\n    }\n    else {\n        noiseLevelPositive /= correctionFactor;\n        noiseLevelNegative /= correctionFactor;\n    }\n    return {\n        positive: noiseLevelPositive,\n        negative: noiseLevelNegative,\n        snr: skyPoint / noiseLevelPositive,\n        sanplot: generateSanPlot(input, {\n            fromTo: {\n                positive: { from: 0, to: lastPositiveValueIndex },\n                negative: { from: firstNegativeValueIndex, to: input.length },\n            },\n        }),\n    };\n}\n/**\n * Determines the optimal cut-off point for a given array of positive numbers.\n * @param signPositive - An array of positive numbers.\n * @param options - Optional parameters to configure the cut-off determination.\n * @param options.magnitudeMode - If true, uses magnitude mode for normalization. Default is false.\n * @param options.considerList - An object specifying the range and step for consideration.\n * @param options.considerList.from - The starting point of the range. Default is 0.5.\n * @param options.considerList.step - The step size for the range. Default is 0.1.\n * @param options.considerList.to - The ending point of the range. Default is 0.9.\n * @returns The optimal cut-off point as a number.\n */\nfunction determineCutOff(signPositive, options = {}) {\n    const { magnitudeMode = false, considerList = { from: 0.5, step: 0.1, to: 0.9 }, } = options;\n    //generate a list of values for\n    const cutOff = [];\n    const indexMax = signPositive.length - 1;\n    for (let i = 0.01; i <= 0.99; i += 0.01) {\n        const index = Math.round(indexMax * i);\n        const value = -signPositive[index] / simpleNormInvNumber(i / 2, { magnitudeMode });\n        cutOff.push([i, value]);\n    }\n    let minKi = Number.MAX_SAFE_INTEGER;\n    const { from, to, step } = considerList;\n    const delta = step / 2;\n    let whereToCutStat = 0.5;\n    for (let i = from; i <= to; i += step) {\n        const floor = i - delta;\n        const top = i + delta;\n        const elementsOfCutOff = cutOff.filter((e) => e[0] < top && e[0] > floor);\n        let averageValue = 0;\n        for (const element of elementsOfCutOff) {\n            averageValue += Math.abs(element[1]);\n        }\n        let kiSqrt = 0;\n        for (const element of elementsOfCutOff) {\n            kiSqrt += (element[1] - averageValue) ** 2;\n        }\n        if (kiSqrt < minKi) {\n            minKi = kiSqrt;\n            whereToCutStat = i;\n        }\n    }\n    return whereToCutStat;\n}\n/**\n * Generates a SAN plot from the given array based on the specified options.\n * @param array - The input array of numbers to be processed.\n * @param options - An optional object containing configuration options.\n * @param options.logBaseY - The logarithmic base for the Y-axis. Defaults to 2.\n * @param options.fromTo - An object specifying the range for each key. Each key maps to an object with `from` and `to` properties.\n * @returns An object where each key maps to a DataXY object containing the processed data.\n */\nfunction generateSanPlot(array, options = {}) {\n    const { fromTo, logBaseY = 2 } = options;\n    const sanplot = {};\n    for (const key in fromTo) {\n        const { from, to } = fromTo[key];\n        sanplot[key] =\n            from !== to\n                ? scale(array.slice(from, to), {\n                    logBaseY,\n                })\n                : { x: [], y: [] };\n        if (key === 'negative') {\n            sanplot[key].y.reverse();\n        }\n    }\n    return sanplot;\n}\n/**\n * Scales the input array based on the provided options.\n * @param array - The input array to be scaled.\n * @param options - An optional object containing scaling options.\n * @param options.logBaseY - If provided, the array values will be scaled using the logarithm of this base.\n * @returns An object containing the scaled x and y arrays.\n */\nfunction scale(array, options = {}) {\n    const { log10, abs } = Math;\n    const { logBaseY } = options;\n    if (logBaseY) {\n        array = array.slice(0);\n        const logOfBase = log10(logBaseY);\n        for (let i = 0; i < array.length; i++) {\n            array[i] = log10(abs(array[i])) / logOfBase;\n        }\n    }\n    const xAxis = createFromToArray({\n        from: 0,\n        to: array.length - 1,\n        length: array.length,\n    });\n    return { x: xAxis, y: array };\n}\n/**\n * Prepares and processes the input data array based on the provided options.\n * @param array - The input array of numbers to be processed.\n * @param options - An object containing the following properties:\n *   - scaleFactor: A number by which to scale each element of the array.\n *   - mask: An optional array of the same length as the input array, where\n *           elements corresponding to `true` values will be excluded from processing.\n * @param options.scaleFactor\n * @param options.mask\n * @returns A new Float64Array containing the processed data, scaled by the\n *          scaleFactor and sorted in descending order.\n */\nfunction prepareData(array, options) {\n    const { scaleFactor, mask } = options;\n    const input = xEnsureFloat64(isAnyArray(mask) && mask.length === array.length\n        ? array.filter((_e, i) => !mask[i])\n        : array);\n    if (scaleFactor > 1) {\n        for (let i = 0; i < input.length; i++) {\n            input[i] *= scaleFactor;\n        }\n    }\n    return input.sort().reverse();\n}\n//# sourceMappingURL=xNoiseSanPlot.js.map","import { xMedianAbsoluteDeviation } from './xMedianAbsoluteDeviation';\n/**\n * Determine noise level using MAD https://en.wikipedia.org/wiki/Median_absolute_deviation\n * Constant to convert mad to sd calculated using https://www.wolframalpha.com/input?i=sqrt%282%29+inverse+erf%280.5%29\n * This assumes a gaussian distribution of the noise\n * @param array\n * @returns noise level corresponding to one standard deviation\n */\nexport function xNoiseStandardDeviation(array) {\n    const { mad, median } = xMedianAbsoluteDeviation(array);\n    return { sd: mad / 0.6744897501960817, mad, median };\n}\n//# sourceMappingURL=xNoiseStandardDeviation.js.map","/**\n * This function calculate the norm of a vector.\n * @example xNorm([3, 4]) -> 5\n * @param array - array\n * @returns - calculated norm\n */\nexport function xNorm(array) {\n    let result = 0;\n    for (const element of array) {\n        result += element ** 2;\n    }\n    return Math.sqrt(result);\n}\n//# sourceMappingURL=xNorm.js.map","import { xCheck } from './xCheck';\nimport { xGetFromToIndex } from './xGetFromToIndex';\n/**\n * Calculate the sum of the values\n * @param array - Object that contains property x (an ordered increasing array) and y (an array).\n * @param options - Options.\n * @returns XSum value on the specified range.\n */\nexport function xSum(array, options = {}) {\n    xCheck(array);\n    const { fromIndex, toIndex } = xGetFromToIndex(array, options);\n    let sumValue = array[fromIndex];\n    for (let i = fromIndex + 1; i <= toIndex; i++) {\n        sumValue += array[i];\n    }\n    return sumValue;\n}\n//# sourceMappingURL=xSum.js.map","import { getOutputArray } from './getOutputArray';\nimport { xCheck } from './xCheck';\nimport { xMaxValue } from './xMaxValue';\nimport { xSum } from './xSum';\n/**\n * Divides the data with either the sum, the absolute sum or the maximum of the data\n * @param input - Array containing values\n * @param options - options\n * @returns - normalized data\n */\nexport function xNormed(input, options = {}) {\n    const { algorithm = 'absolute', value = 1 } = options;\n    xCheck(input);\n    const output = getOutputArray(options.output, input.length);\n    if (input.length === 0) {\n        throw new Error('input must not be empty');\n    }\n    switch (algorithm) {\n        case 'absolute': {\n            const absoluteSumValue = absoluteSum(input) / value;\n            if (absoluteSumValue === 0) {\n                throw new Error('trying to divide by 0');\n            }\n            for (let i = 0; i < input.length; i++) {\n                output[i] = input[i] / absoluteSumValue;\n            }\n            return output;\n        }\n        case 'max': {\n            const currentMaxValue = xMaxValue(input);\n            if (currentMaxValue === 0) {\n                throw new Error('trying to divide by 0');\n            }\n            const factor = value / currentMaxValue;\n            for (let i = 0; i < input.length; i++) {\n                output[i] = input[i] * factor;\n            }\n            return output;\n        }\n        case 'sum': {\n            const sumFactor = xSum(input) / value;\n            if (sumFactor === 0) {\n                throw new Error('trying to divide by 0');\n            }\n            for (let i = 0; i < input.length; i++) {\n                output[i] = input[i] / sumFactor;\n            }\n            return output;\n        }\n        default:\n            throw new Error(`unknown algorithm: ${String(algorithm)}`);\n    }\n}\nfunction absoluteSum(input) {\n    let sumValue = 0;\n    for (let i = 0; i < input.length; i++) {\n        sumValue += Math.abs(input[i]);\n    }\n    return sumValue;\n}\n//# sourceMappingURL=xNormed.js.map","import { xCheck } from './xCheck';\nimport { xEnsureFloat64 } from './xEnsureFloat64';\n/**\n * This function pads an array\n *s\n * @param array - the array that will be padded\n * @param options - options\n */\nexport function xPadding(array, options = {}) {\n    const { size = 0, value = 0, algorithm } = options;\n    xCheck(array);\n    if (!algorithm) {\n        return xEnsureFloat64(array);\n    }\n    const result = new Float64Array(array.length + size * 2);\n    for (let i = 0; i < array.length; i++) {\n        result[i + size] = array[i];\n    }\n    const fromEnd = size + array.length;\n    const toEnd = 2 * size + array.length;\n    switch (algorithm) {\n        case 'value':\n            for (let i = 0; i < size; i++) {\n                result[i] = value;\n            }\n            for (let i = fromEnd; i < toEnd; i++) {\n                result[i] = value;\n            }\n            break;\n        case 'duplicate':\n            for (let i = 0; i < size; i++) {\n                result[i] = array[0];\n            }\n            for (let i = fromEnd; i < toEnd; i++) {\n                result[i] = array.at(-1);\n            }\n            break;\n        case 'circular':\n            for (let i = 0; i < size; i++) {\n                result[i] =\n                    array[(array.length - (size % array.length) + i) % array.length];\n            }\n            for (let i = 0; i < size; i++) {\n                result[i + fromEnd] = array[i % array.length];\n            }\n            break;\n        default:\n            throw new Error(`unknown algorithm ${String(algorithm)}`);\n    }\n    return result;\n}\n//# sourceMappingURL=xPadding.js.map","import { xCheck } from './xCheck';\nimport { xStandardDeviation } from './xStandardDeviation';\n/**\n * Pareto scaling, which uses the square root of standard deviation as the scaling factor, circumvents the amplification of noise by retaining a small portion of magnitude information.\n * Noda, I. (2008). Scaling techniques to enhance two-dimensional correlation spectra. Journal of Molecular Structure, 883, 216-227.\n * DOI: 10.1016/j.molstruc.2007.12.026\n * @param array - array of number\n */\nexport function xParetoNormalization(array) {\n    xCheck(array);\n    const result = new Float64Array(array.length);\n    const sqrtSD = Math.sqrt(xStandardDeviation(array));\n    for (let i = 0; i < array.length; i++) {\n        result[i] = array[i] / sqrtSD;\n    }\n    return result;\n}\n//# sourceMappingURL=xParetoNormalization.js.map","import { xBoxPlotWithOutliers } from './xBoxPlotWithOutliers';\nimport { xMean } from './xMean';\nimport { xStandardDeviation } from './xStandardDeviation';\n/**\n * Calculate distribution statistics of an array without providing options. Statistics\n * like sd and mean are calculated after removing outliers.\n * This ensure that the statistics are calculated in the same way in all the packages\n * If the array is empty it will throw an error\n * If the array has a length of 1, sd will be NaN (unbiased calculation of sd)\n * @param array - data\n * @param options\n * @returns - q1, median, q3, min, max\n */\nexport function xRobustDistributionStats(array) {\n    const boxPlot = xBoxPlotWithOutliers(array);\n    let filteredArray;\n    if (boxPlot.outliers.length === 0) {\n        filteredArray = array;\n    }\n    else {\n        filteredArray = new Float64Array(array.length - boxPlot.outliers.length);\n        let j = 0;\n        for (const element of array) {\n            if (element >= boxPlot.min && element <= boxPlot.max) {\n                filteredArray[j++] = element;\n            }\n        }\n    }\n    return {\n        ...boxPlot,\n        mean: xMean(filteredArray),\n        sd: xStandardDeviation(filteredArray),\n        nb: filteredArray.length,\n    };\n}\n//# sourceMappingURL=xRobustDistributionStats.js.map","import { isAnyArray } from 'is-any-array';\nimport { xBoxPlot } from './xBoxPlot';\n/**\n * Remove the outliers from the array\n * Based on 1.5 IQR\n * @param array - data\n * @returns - trimmed data\n */\nexport function xRemoveOutliersIQR(array) {\n    if (!isAnyArray(array)) {\n        throw new TypeError('input must be an array');\n    }\n    if (array.length === 0) {\n        return array;\n    }\n    const boxPlot = xBoxPlot(array);\n    const iqr = boxPlot.q3 - boxPlot.q1;\n    const lowerWhisker = boxPlot.q1 - 1.5 * iqr;\n    const higherWhisker = boxPlot.q3 + 1.5 * iqr;\n    if (boxPlot.min >= lowerWhisker && boxPlot.max <= higherWhisker) {\n        return array;\n    }\n    const filteredArray = [];\n    for (const element of array) {\n        if (element >= lowerWhisker && element <= higherWhisker) {\n            filteredArray.push(element);\n        }\n    }\n    return filteredArray;\n}\n//# sourceMappingURL=xRemoveOutliersIQR.js.map","import { getOutputArray } from './getOutputArray';\nimport { xCheck } from './xCheck';\nimport { xMaxValue } from './xMaxValue';\nimport { xMinValue } from './xMinValue';\n/**\n * Function used to rescale data\n * @param input - input for the rescale\n * @param options - options\n * @returns rescaled data\n */\nexport function xRescale(input, options = {}) {\n    xCheck(input);\n    const output = getOutputArray(options.output, input.length);\n    const currentMin = xMinValue(input);\n    const currentMax = xMaxValue(input);\n    if (currentMin === currentMax) {\n        throw new RangeError('minimum and maximum input values are equal. Cannot rescale a constant array');\n    }\n    const { min = 0, max = 1 } = options;\n    if (min >= max) {\n        throw new RangeError('min option must be smaller than max option');\n    }\n    const factor = (max - min) / (currentMax - currentMin);\n    for (let i = 0; i < input.length; i++) {\n        output[i] = (input[i] - currentMin) * factor + min;\n    }\n    return output;\n}\n//# sourceMappingURL=xRescale.js.map","import { xCheck } from './xCheck';\nimport { xPadding } from './xPadding';\n/**\n * This function calculates a rolling average\n * @param array - array\n * @param fct - callback function that from an array returns a value\n * @param options - options\n */\nexport function xRolling(array, fct, options = {}) {\n    xCheck(array);\n    if (typeof fct !== 'function') {\n        throw new TypeError('fct must be a function');\n    }\n    const { window = 5, padding = {} } = options;\n    const { size = window - 1, algorithm, value } = padding;\n    const padded = xPadding(array, { size, algorithm, value }); // ensure we get a copy and it is float64\n    const newArray = [];\n    for (let i = 0; i < padded.length - window + 1; i++) {\n        // we will send a view to the original buffer\n        newArray.push(fct(padded.subarray(i, i + window)));\n    }\n    return newArray;\n}\n//# sourceMappingURL=xRolling.js.map","import { xMean } from './xMean';\nimport { xRolling } from './xRolling';\n/**\n * This function calculates a rolling average\n * @param array - array\n * @param options - option\n */\nexport function xRollingAverage(array, options = {}) {\n    return xRolling(array, xMean, options);\n}\n//# sourceMappingURL=xRollingAverage.js.map","import { xMaxValue } from './xMaxValue';\nimport { xRolling } from './xRolling';\n/**\n * This function calculates a maximum within a rolling window\n * @param array - array\n * @param options - options\n */\nexport function xRollingMax(array, options = {}) {\n    return xRolling(array, xMaxValue, options);\n}\n//# sourceMappingURL=xRollingMax.js.map","import { xMedian } from './xMedian';\nimport { xRolling } from './xRolling';\n/**\n * This function calculates a rolling average\n * @param array - array\n * @param options - options\n */\nexport function xRollingMedian(array, options = {}) {\n    return xRolling(array, xMedian, options);\n}\n//# sourceMappingURL=xRollingMedian.js.map","import { xMinValue } from './xMinValue';\nimport { xRolling } from './xRolling';\n/**\n * This function calculates a minimum within a rolling window\n * @param array - array\n * @param options - options\n */\nexport function xRollingMin(array, options = {}) {\n    return xRolling(array, xMinValue, options);\n}\n//# sourceMappingURL=xRollingMin.js.map","/**\n * This function performs a circular shift to an array.\n * Positive values of shifts will shift to the right and negative values will do to the left.\n * @example xRotate([1,2,3,4],1) -> [4,1,2,3]\n * @example xRotate([1,2,3,4],-1) -> [2,3,4,1]\n * @param array - array\n * @param shift - shift\n * @returns - rotated array\n */\nexport function xRotate(array, shift) {\n    shift = shift % array.length;\n    if (shift < 0)\n        shift += array.length;\n    const result = new Float64Array(array.length);\n    result.set(array.slice(array.length - shift));\n    result.set(array.slice(0, array.length - shift), shift);\n    return result;\n}\n//# sourceMappingURL=xRotate.js.map","import { xCheck } from './xCheck';\n/**\n * Sample within the array\n * @param array - array from which to sample\n * @param options - options\n * @returns - array with evenly spaced elements\n * @link https://en.wikipedia.org/wiki/Sampling_(signal_processing)\n */\nexport function xSampling(array, options = {}) {\n    const { length = 10 } = options;\n    xCheck(array);\n    if (length === array.length) {\n        return Float64Array.from(array);\n    }\n    else if (length > array.length) {\n        throw new RangeError('length must be smaller than the array length');\n    }\n    else {\n        return downSampling(array, length);\n    }\n}\n/**\n * Downsample within the array\n * @param array - array from which to sample\n * @param length\n * @returns - array with evenly spaced elements\n * @link https://en.wikipedia.org/wiki/Downsampling_(signal_processing)\n */\nfunction downSampling(array, length) {\n    const returnArray = new Float64Array(length);\n    const delta = (array.length - 1) / (length - 1);\n    for (let i = 0; i < length; i++) {\n        returnArray[i] = array[Math.round(i * delta)];\n    }\n    return returnArray;\n}\n//# sourceMappingURL=xSampling.js.map","import { createNumberArray } from '../utils';\nexport function xSequentialFillFromStep(parameters, options = {}) {\n    const { from, step, size } = parameters;\n    const { ArrayConstructor = Float64Array } = options;\n    const result = createNumberArray(ArrayConstructor, size);\n    for (let i = 0; i < size; i++) {\n        result[i] = from + i * step;\n    }\n    return result;\n}\n//# sourceMappingURL=xSequentialFillFromStep.js.map","import { xSequentialFillFromStep } from './xSequentialFillFromStep';\nexport function xSequentialFillFromTo(parameters, options = {}) {\n    const { from, to, size } = parameters;\n    const step = (to - from) / (size - 1);\n    return xSequentialFillFromStep({ from, step, size }, options);\n}\n//# sourceMappingURL=xSequentialFillFromTo.js.map","/**\n * Function that sorts arrays or Float64Arrays in ascending order in place !\n * This method is optimized for typed arrays.\n * @param array - array to sort\n * @returns sorted array\n */\nexport function xSortAscending(array) {\n    if (ArrayBuffer.isView(array)) {\n        return array.sort();\n    }\n    else if (Array.isArray(array)) {\n        return array.sort((a, b) => a - b);\n    }\n    throw new Error('trying to sort non array');\n}\n//# sourceMappingURL=xSortAscending.js.map","/**\n * Function that sorts arrays or Float64Arrays in descending order\n * @param array - array to sort\n * @returns sorted array\n */\nexport function xSortDescending(array) {\n    if (ArrayBuffer.isView(array)) {\n        return array.sort().reverse();\n    }\n    else if (Array.isArray(array)) {\n        return array.sort((a, b) => b - a);\n    }\n    throw new Error('trying to sort non array');\n}\n//# sourceMappingURL=xSortDescending.js.map","/**\n * XUniqueSorted.\n * @param array - array of numbers\n * @returns - sorted array\n */\nexport function xUniqueSorted(array) {\n    return Float64Array.from(new Set(array)).sort();\n}\n//# sourceMappingURL=xUniqueSorted.js.map","/*\nThe MIT License (MIT)\n\nCopyright (c) 2013 Eric Arnebäck\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n*/\n/**\n * Solves a system of linear equations using the Cholesky decomposition method.\n * It is a direct conversion to TS from {@link https://github.com/scijs/cholesky-solve}\n * @param nonZerosArray - The matrix in triplet form (array of arrays), where each sub-array contains three elements: row index, column index, and value.\n * @param dimension - The order of the matrix (number of rows/columns).\n * @param permutationEncoded - Optional permutation array. If provided, it will be used to permute the matrix.\n * @returns A function that takes a right-hand side vector `b` and returns the solution vector `x`, or `null` if the decomposition fails.\n */\nexport function matrixCholeskySolver(nonZerosArray, dimension, permutationEncoded) {\n    if (permutationEncoded) {\n        const pinv = new Array(dimension);\n        for (let k = 0; k < dimension; k++) {\n            pinv[permutationEncoded[k]] = k;\n        }\n        const mt = new Array(nonZerosArray.length);\n        for (let a = 0; a < nonZerosArray.length; ++a) {\n            const [r, c, value] = nonZerosArray[a];\n            const [ar, ac] = [pinv[r], pinv[c]];\n            mt[a] = ac < ar ? [ac, ar, value] : [ar, ac, value];\n        }\n        nonZerosArray = mt;\n    }\n    else {\n        permutationEncoded = [];\n        for (let i = 0; i < dimension; ++i) {\n            permutationEncoded[i] = i;\n        }\n    }\n    const ap = new Array(dimension + 1);\n    const ai = new Array(nonZerosArray.length);\n    const ax = new Array(nonZerosArray.length);\n    const lnz = [];\n    for (let i = 0; i < dimension; ++i) {\n        lnz[i] = 0;\n    }\n    for (const a of nonZerosArray) {\n        lnz[a[1]]++;\n    }\n    ap[0] = 0;\n    for (let i = 0; i < dimension; ++i) {\n        ap[i + 1] = ap[i] + lnz[i];\n    }\n    const colOffset = [];\n    for (let a = 0; a < dimension; ++a) {\n        colOffset[a] = 0;\n    }\n    for (const e of nonZerosArray) {\n        const col = e[1];\n        const adr = ap[col] + colOffset[col];\n        ai[adr] = e[0];\n        ax[adr] = e[2];\n        colOffset[col]++;\n    }\n    const d = new Array(dimension);\n    const y = new Array(dimension);\n    const lp = new Array(dimension + 1);\n    const parent = new Array(dimension);\n    const lnzArray = new Array(dimension);\n    const flag = new Array(dimension);\n    const pattern = new Array(dimension);\n    const bp1 = new Array(dimension);\n    const x = new Array(dimension);\n    ldlSymbolic(dimension, ap, ai, lp, parent, lnzArray, flag);\n    const lx = new Array(lp[dimension]);\n    const li = new Array(lp[dimension]);\n    const result = ldlNumeric(dimension, ap, ai, ax, lp, parent, lnzArray, li, lx, d, y, pattern, flag);\n    if (result === dimension) {\n        return (b) => {\n            ldlPerm(dimension, bp1, b, permutationEncoded);\n            ldlLsolve(dimension, bp1, lp, li, lx);\n            ldlDsolve(dimension, bp1, d);\n            ldlLTsolve(dimension, bp1, lp, li, lx);\n            ldlPermt(dimension, x, bp1, permutationEncoded);\n            return x;\n        };\n    }\n    else {\n        return null;\n    }\n}\nfunction ldlSymbolic(dimension, ap, ai, lp, parent, lnz, flag) {\n    for (let k = 0; k < dimension; k++) {\n        parent[k] = -1;\n        flag[k] = k;\n        lnz[k] = 0;\n        const kk = k;\n        const p2 = ap[kk + 1];\n        for (let permutationEncoded = ap[kk]; permutationEncoded < p2; permutationEncoded++) {\n            let i = ai[permutationEncoded];\n            if (i < k) {\n                for (; flag[i] !== k; i = parent[i]) {\n                    if (parent[i] === -1)\n                        parent[i] = k;\n                    lnz[i]++;\n                    flag[i] = k;\n                }\n            }\n        }\n    }\n    lp[0] = 0;\n    for (let k = 0; k < dimension; k++) {\n        lp[k + 1] = lp[k] + lnz[k];\n    }\n}\nfunction ldlNumeric(dimension, ap, ai, ax, lp, parent, lnz, li, lx, d, y, pattern, flag) {\n    let yi, lKi;\n    let i, k, permutationEncoded, kk, p2, len, top;\n    for (k = 0; k < dimension; k++) {\n        y[k] = 0;\n        top = dimension;\n        flag[k] = k;\n        lnz[k] = 0;\n        kk = k;\n        p2 = ap[kk + 1];\n        for (permutationEncoded = ap[kk]; permutationEncoded < p2; permutationEncoded++) {\n            i = ai[permutationEncoded];\n            if (i <= k) {\n                y[i] += ax[permutationEncoded];\n                for (len = 0; flag[i] !== k; i = parent[i]) {\n                    pattern[len++] = i;\n                    flag[i] = k;\n                }\n                while (len > 0)\n                    pattern[--top] = pattern[--len];\n            }\n        }\n        d[k] = y[k];\n        y[k] = 0;\n        for (; top < dimension; top++) {\n            i = pattern[top];\n            yi = y[i];\n            y[i] = 0;\n            p2 = lp[i] + lnz[i];\n            for (permutationEncoded = lp[i]; permutationEncoded < p2; permutationEncoded++) {\n                y[li[permutationEncoded]] -= lx[permutationEncoded] * yi;\n            }\n            lKi = yi / d[i];\n            d[k] -= lKi * yi;\n            li[permutationEncoded] = k;\n            lx[permutationEncoded] = lKi;\n            lnz[i]++;\n        }\n        if (d[k] === 0)\n            return k;\n    }\n    return dimension;\n}\nfunction ldlLsolve(dimension, x, lp, li, lx) {\n    let j, permutationEncoded, p2;\n    for (j = 0; j < dimension; j++) {\n        p2 = lp[j + 1];\n        for (permutationEncoded = lp[j]; permutationEncoded < p2; permutationEncoded++) {\n            x[li[permutationEncoded]] -= lx[permutationEncoded] * x[j];\n        }\n    }\n}\nfunction ldlDsolve(dimension, x, d) {\n    for (let j = 0; j < dimension; j++) {\n        x[j] /= d[j];\n    }\n}\nfunction ldlLTsolve(dimension, x, lp, li, lx) {\n    let j, permutationEncoded, p2;\n    for (j = dimension - 1; j >= 0; j--) {\n        p2 = lp[j + 1];\n        for (permutationEncoded = lp[j]; permutationEncoded < p2; permutationEncoded++) {\n            x[j] -= lx[permutationEncoded] * x[li[permutationEncoded]];\n        }\n    }\n}\nfunction ldlPerm(dimension, x, b, permutationEncoded) {\n    let j;\n    for (j = 0; j < dimension; j++) {\n        x[j] = b[permutationEncoded[j]];\n    }\n}\nfunction ldlPermt(dimension, x, b, permutationEncoded) {\n    let j;\n    for (j = 0; j < dimension; j++) {\n        x[permutationEncoded[j]] = b[j];\n    }\n}\n//# sourceMappingURL=matrixCholeskySolver.js.map","/**\n * add the provided weights to a particular given system matrix (lD'D) in the triplet form and y data. This function is not general\n * it assumes that diagonal coefficients are in the even indexes, it is the case of the matrix generated by createSystemMatrix function.\n * It simulates the matrix operation W + lD'D and Wy.\n * @param leftHandSide - The original system matrix to be updated, a lower triangular non-zeros of the system matrix (lambda D'D).\n * @param rightHandSide - The original vector to be updated.\n * @param weights - The weights to apply to the system matrix and vector.\n * @returns An object that contains the news left and right hand-side of the system.\n */\nexport function addWeights(leftHandSide, rightHandSide, weights) {\n    const nbPoints = rightHandSide.length;\n    const l = nbPoints - 1;\n    const newLeftHandSide = new Array(leftHandSide.length);\n    const newRightHandSide = new Float64Array(nbPoints);\n    for (let i = 0; i < l; i++) {\n        const w = weights[i];\n        const diag = i * 2;\n        const next = diag + 1;\n        newLeftHandSide[diag] = leftHandSide[diag].slice();\n        newLeftHandSide[next] = leftHandSide[next].slice();\n        newRightHandSide[i] = rightHandSide[i] * w;\n        newLeftHandSide[diag][2] += w;\n    }\n    newRightHandSide[l] = rightHandSide[l] * weights[l];\n    newLeftHandSide[l * 2] = leftHandSide[l * 2].slice();\n    newLeftHandSide[l * 2][2] += weights[l];\n    return {\n        leftHandSide: newLeftHandSide,\n        rightHandSide: newRightHandSide,\n    };\n}\n//# sourceMappingURL=addWeights.js.map","/**\n * Generates a lower triangular non-zeros of the first order smoother matrix (lambda D'D) where D is the derivate of the identity matrix\n * this function in combination with addWeights function can obtain (Q = W + lambda D'D) a penalized least square of Whittaker smoother,\n * it also generates a permutation encoded array.\n * @param dimension - The number of points in the matrix.\n * @param lambda - The factor of smoothness .\n * @returns An object containing the lower triangular non-zero elements of the matrix\n * and the permutation encoded array.\n * @property lowerTriangularNonZeros - The lower triangular non-zero elements of the matrix in triplet form.\n * @property permutationEncodedArray - The permutation encoded array generated using the Cuthill-McKee algorithm.\n */\nexport function createSystemMatrix(dimension, lambda) {\n    const upperTriangularNonZeros = [];\n    const last = dimension - 1;\n    for (let i = 0; i < last; i++) {\n        upperTriangularNonZeros.push([i, i, lambda * 2], [i, i + 1, -1 * lambda]);\n    }\n    upperTriangularNonZeros[0][2] = lambda;\n    upperTriangularNonZeros.push([last, last, lambda]);\n    return upperTriangularNonZeros;\n}\n//# sourceMappingURL=createSystemMatrix.js.map","import { matrixCholeskySolver } from '../matrix/matrixCholeskySolver';\nimport { addWeights } from '../utils/addWeights';\nimport { calculateAdaptiveWeights } from '../utils/calculateAdaptiveWeights';\nimport { createSystemMatrix } from '../utils/createSystemMatrix';\nimport { xEnsureFloat64 } from './xEnsureFloat64';\nimport { xMultiply } from './xMultiply';\n/**\n * Computes the baseline points for the given data using an iterative smoothing algorithm.\n * @param yData - The input data array.\n * @param options - The options for baseline computation.\n * @returns - The computed baseline points.\n */\nexport function xWhittakerSmoother(yData, options = {}) {\n    const { lambda = 100, maxIterations = 100, tolerance = 1e-6, factorStd = 3, learningRate = 0.5, minWeight = 0.01, } = options;\n    const size = yData.length;\n    // eslint-disable-next-line prefer-const\n    let { controlPoints, weights } = getWeightsAndControlPoints(yData, options);\n    const prevBaseline = new Float64Array(size);\n    let iteration = 0;\n    let delta = Infinity;\n    let baseline = xEnsureFloat64(yData);\n    const upperTriangularNonZeros = createSystemMatrix(size, lambda);\n    while (iteration < maxIterations && delta > tolerance) {\n        const { leftHandSide, rightHandSide } = addWeights(upperTriangularNonZeros, yData, weights);\n        const cho = matrixCholeskySolver(leftHandSide, size);\n        if (!cho) {\n            return baseline;\n        }\n        const newBaseline = cho(rightHandSide);\n        weights = calculateAdaptiveWeights(yData, newBaseline, weights, {\n            controlPoints,\n            minWeight,\n            learningRate,\n            factorStd,\n        });\n        delta = calculateDelta(newBaseline, prevBaseline, size);\n        prevBaseline.set(newBaseline);\n        baseline = xEnsureFloat64(newBaseline);\n        iteration++;\n    }\n    return baseline;\n}\n/**\n * Calculates the delta between the current and previous baseline.\n * @param baseline - The current baseline array.\n * @param prevBaseline - The previous baseline array.\n * @param n - The length of the arrays.\n * @returns - The calculated delta value.\n */\nfunction calculateDelta(baseline, prevBaseline, n) {\n    let sum = 0;\n    for (let i = 0; i < n; i++) {\n        sum += (baseline[i] - prevBaseline[i]) ** 2;\n    }\n    return Math.sqrt(sum / n);\n}\n/**\n * Retrieves the control points and weights for the given data, the weights are modified multiplication of controlPoints if it exists.\n * @param  y - The input data array.\n * @param  options - The options for control points and weights.\n * @returns - The control points and modified weights.\n */\nfunction getWeightsAndControlPoints(y, options = {}) {\n    const { length } = y;\n    const { controlPoints } = options;\n    const { weights = Float64Array.from({ length }).fill(1) } = options;\n    if (controlPoints && controlPoints.length !== y.length) {\n        throw new RangeError('controlPoints should match the length with X');\n    }\n    else if (weights.length !== y.length) {\n        throw new RangeError('weights should match the length with X');\n    }\n    return {\n        weights: controlPoints ? xMultiply(weights, controlPoints) : weights,\n        controlPoints,\n    };\n}\n/**\n * @deprecated Use xWhittakerSmoother instead.\n * TODO: Remove in next major version.\n */\nexport const xWhitakerSmoother = xWhittakerSmoother;\n//# sourceMappingURL=xWhittakerSmoother.js.map","/**\n * Phase correction filter.\n * @param data - complex spectrum\n * @param phi0 - Angle in radians for zero order phase correction\n * @param phi1 - Angle in radians for first order phase correction\n * @param options\n * @returns - returns a new object {re:[], im:[]}\n */\nexport function reimPhaseCorrection(data, phi0 = 0, phi1 = 0, options = {}) {\n    const { reverse = false } = options;\n    phi0 = Number.isFinite(phi0) ? phi0 : 0;\n    phi1 = Number.isFinite(phi1) ? phi1 : 0;\n    const re = data.re;\n    const im = data.im;\n    const length = data.re.length;\n    let firstAngle = phi0;\n    let delta = phi1 / length;\n    if (reverse) {\n        delta *= -1;\n        firstAngle += phi1;\n    }\n    const alpha = 2 * Math.sin(delta / 2) ** 2;\n    const beta = Math.sin(delta);\n    let cosTheta = Math.cos(firstAngle);\n    let sinTheta = Math.sin(firstAngle);\n    const newRe = new Float64Array(length);\n    const newIm = new Float64Array(length);\n    for (let i = 0; i < length; i++) {\n        newRe[i] = re[i] * cosTheta - im[i] * sinTheta;\n        newIm[i] = im[i] * cosTheta + re[i] * sinTheta;\n        // calculate angles i+1 from i\n        const newCosTheta = cosTheta - (alpha * cosTheta + beta * sinTheta);\n        const newSinTheta = sinTheta - (alpha * sinTheta - beta * cosTheta);\n        cosTheta = newCosTheta;\n        sinTheta = newSinTheta;\n    }\n    return { re: newRe, im: newIm };\n}\n//# sourceMappingURL=reimPhaseCorrection.js.map","import { xNoiseSanPlot } from '../x';\nimport { reimAbsolute } from './reimAbsolute';\nimport { reimPhaseCorrection } from './reimPhaseCorrection';\n/**\n * Implementation of the algorithm for automatic phase correction: A robust, general automatic phase\n * correction algorithm for high-resolution NMR data. 10.1002/mrc.4586\n * @param data - complex spectrum\n * @param options - options\n */\nexport function reimAutoPhaseCorrection(data, options = {}) {\n    const { magnitudeMode = true, minRegSize = 30, factorNoise = 3, maxDistanceToJoin = 256, reverse = false, } = options;\n    const finalPeaks = detectBaselineRegions(data, {\n        maxDistanceToJoin,\n        magnitudeMode,\n        factorNoise,\n    });\n    const { re, im } = data;\n    const length = re.length;\n    const indexMask = reverse ? (i) => length - 1 - i : (i) => i;\n    let x0 = 0;\n    let counter = -1;\n    const res = [];\n    while (counter < length) {\n        const reTmp = [];\n        const imTmp = [];\n        while (!finalPeaks[indexMask(++counter)] && counter < length) {\n            // Add some extra points(0.1 ppm) at rigth and left sides of the region.\n            x0 = counter;\n        }\n        for (; finalPeaks[indexMask(counter)] && counter < length; counter += 2) {\n            reTmp.push(re[indexMask(counter)]);\n            imTmp.push(im[indexMask(counter)]);\n        }\n        if (reTmp.length > minRegSize) {\n            res.push(autoPhaseRegion(reTmp, imTmp, x0));\n        }\n    }\n    const { ph1, ph0 } = determiningGlobalValues(res.map((r) => r.x0 / length), res.map((r) => r.ph0), res.map((r) => r.area / 1e11));\n    const phased = reimPhaseCorrection({ re, im }, toRadians(ph0), toRadians(ph1), { reverse });\n    return { data: phased, ph0, ph1 };\n}\nfunction determiningGlobalValues(x, ph0Values, weights) {\n    if (x.length === 0) {\n        return { ph0: 0, ph1: 0 };\n    }\n    else if (x.length === 1) {\n        return { ph0: ph0Values[0], ph1: 0 };\n    }\n    const [ph1, ph0] = weightedLinearRegression(x, ph0Values, weights);\n    let indexMax = -1;\n    let maxDiff = Number.MIN_SAFE_INTEGER;\n    for (let i = 0; i < x.length; i++) {\n        const predictedPh0 = x[i] * ph1 + ph0;\n        const diff = Math.abs(ph0Values[i] - predictedPh0);\n        if (diff > 34 && maxDiff < diff) {\n            indexMax = i;\n            maxDiff = diff;\n        }\n    }\n    if (indexMax > -1) {\n        x.splice(indexMax, 1);\n        ph0Values.splice(indexMax, 1);\n        weights.splice(indexMax, 1);\n        return determiningGlobalValues(x, ph0Values, weights);\n    }\n    return { ph0, ph1 };\n}\nfunction detectBaselineRegions(data, options) {\n    const magnitudeData = options.magnitudeMode ? reimAbsolute(data) : data.re;\n    const ds = holoborodko(magnitudeData);\n    const peaksDs = robustBaseLineRegionsDetection(ds, options);\n    const peaksSp = robustBaseLineRegionsDetection(magnitudeData, options);\n    return peaksSp.map((sp, i) => sp && peaksDs[i]);\n}\n/**\n * AutoPhaseRegion.\n * @param re - Array of Number.\n * @param im - Array of Number.\n * @param x0 - Number.\n * @returns Region.\n */\nfunction autoPhaseRegion(re, im, x0) {\n    let start = -180;\n    let stop = 180;\n    const nSteps = 6;\n    let maxSteps = 10;\n    let bestAng = 0;\n    let minArea = Number.MAX_SAFE_INTEGER;\n    while (maxSteps > 0) {\n        const dAng = (stop - start) / (nSteps + 1);\n        for (let i = start; i <= stop; i += dAng) {\n            const tmpPhased = reimPhaseCorrection({ re, im }, toRadians(i), 0);\n            const negArea = getNegArea(tmpPhased.re);\n            if (negArea < minArea) {\n                [minArea, bestAng] = [negArea, i];\n            }\n        }\n        start = bestAng - dAng;\n        stop = bestAng + dAng;\n        maxSteps--;\n    }\n    // Calculate the area for the best angle\n    const phased = reimPhaseCorrection({ re, im }, toRadians(bestAng), 0);\n    let area = 0;\n    let sumX = 0;\n    for (let j = 0; j < re.length; j++) {\n        area += phased.re[j];\n        sumX += phased.re[j] * (j + x0);\n    }\n    return { ph0: bestAng, area, x0: sumX / area };\n}\n/**\n * Holoborodko.\n * @param s - Array of float.\n * @returns Array of float.\n */\nfunction holoborodko(s) {\n    const dk = new Float64Array(s.length);\n    for (let i = 5; i < s.length - 5; i++) {\n        dk[i] =\n            (42 * (s[i + 1] - s[i - 1]) +\n                48 * (s[i + 2] - s[i - 2]) +\n                27 * (s[i + 3] + s[i - 3]) +\n                8 * (s[i + 4] - s[i - 4]) +\n                s[i + 5] -\n                s[i - 5]) /\n                512;\n    }\n    //Fill the borders\n    for (let i = 0; i < 5; i++) {\n        dk[i] = dk[5];\n        dk[s.length - i - 1] = dk[s.length - 6];\n    }\n    return dk;\n}\n/**\n * RobustBaseLineRegionsDetection.\n * @param s\n * @param options\n * @param options.magnitudeMode\n * @param options.maxDistanceToJoin\n * @param options.factorNoise\n */\nfunction robustBaseLineRegionsDetection(s, options) {\n    const { maxDistanceToJoin, magnitudeMode, factorNoise } = options;\n    const mask = new Uint8Array(s.length);\n    for (let i = 0; i < s.length; i++) {\n        mask[i] = 0;\n    }\n    let change = true;\n    while (change) {\n        const noiseLevel = xNoiseSanPlot(s, { magnitudeMode });\n        const cutOff = factorNoise * noiseLevel.positive;\n        change = false;\n        for (let i = 0; i < s.length; i++) {\n            if (Math.abs(s[i]) > cutOff && !mask[i]) {\n                change = true;\n                mask[i] = 1;\n            }\n        }\n    }\n    // Clean up mask by merging peaks blocks, separated by just a few points(4??).\n    let count = 0;\n    let prev = 0;\n    for (let i = 0; i < s.length; i++) {\n        if (!mask[i]) {\n            count++;\n        }\n        else {\n            if (count < maxDistanceToJoin) {\n                for (let j = 0; j <= count; j++) {\n                    mask[prev + j] = 1;\n                }\n            }\n            while (mask[++i] && i < s.length)\n                ;\n            prev = i;\n            count = 0;\n        }\n    }\n    return mask;\n}\n/**\n * WeightedLinearRegression.\n * @param x\n * @param y\n * @param w\n */\nfunction weightedLinearRegression(x, y, w) {\n    let sxtw = 0;\n    let swx = 0;\n    let sw = 0;\n    let sxtwy = 0;\n    let swy = 0;\n    for (let i = 0; i < x.length; i++) {\n        sxtw += x[i] * x[i] * w[i];\n        swx += x[i] * w[i];\n        sw += w[i];\n        sxtwy += x[i] * w[i] * y[i];\n        swy += w[i] * y[i];\n    }\n    /* Just to know what is the matrix system that we solve\n     let Mx=[[sxtw, swx], [swx, sw]];\n     let My=[[sxtwy], [swy]];\n    */\n    //Mx inverse\n    const detMx = sxtw * sw - swx * swx;\n    const inMx = [\n        [sw / detMx, -swx / detMx],\n        [-swx / detMx, sxtw / detMx],\n    ];\n    return [\n        inMx[0][0] * sxtwy + inMx[0][1] * swy,\n        inMx[1][0] * sxtwy + inMx[1][1] * swy,\n    ];\n}\nfunction toRadians(degree) {\n    return (degree * Math.PI) / 180;\n}\nfunction getNegArea(data) {\n    let area = 0;\n    for (const element of data) {\n        if (element < 0)\n            area -= element;\n    }\n    return area;\n}\n//# sourceMappingURL=reimAutoPhaseCorrection.js.map","import FFT from 'fft.js';\nimport { xRotate } from '../x';\n/**\n * ReimFFT.\n * @param data - complex spectrum\n * @param options - options.\n * @returns FFT of complex spectrum.\n */\nexport function reimFFT(data, options = {}) {\n    const { inverse = false, applyZeroShift = false } = options;\n    const { re, im } = data;\n    const size = re.length;\n    const csize = size << 1;\n    let complexArray = new Float64Array(csize);\n    for (let i = 0; i < csize; i += 2) {\n        complexArray[i] = re[i >>> 1];\n        complexArray[i + 1] = im[i >>> 1];\n    }\n    const fft = new FFT(size);\n    let output = new Float64Array(csize);\n    if (inverse) {\n        if (applyZeroShift)\n            complexArray = zeroShift(complexArray, true);\n        fft.inverseTransform(output, complexArray);\n    }\n    else {\n        fft.transform(output, complexArray);\n        if (applyZeroShift)\n            output = zeroShift(output);\n    }\n    const newRe = new Float64Array(size);\n    const newIm = new Float64Array(size);\n    for (let i = 0; i < csize; i += 2) {\n        newRe[i >>> 1] = output[i];\n        newIm[i >>> 1] = output[i + 1];\n    }\n    return { re: newRe, im: newIm };\n}\nfunction zeroShift(data, inverse) {\n    const middle = inverse\n        ? Math.ceil(data.length / 2)\n        : Math.floor(data.length / 2);\n    return xRotate(data, middle);\n}\n//# sourceMappingURL=reimFFT.js.map","/**\n * This function make a zero filling to re and im part.\n * @param data - object of kind {re:[], im:[]}\n * @param totalLength - final number of points\n * @returns - New DataReIm object with zero-filled,\n * truncated arrays if totalLength is smaller current length or\n * the same input if totalLength is equal that current length\n */\nexport function reimZeroFilling(data, totalLength) {\n    if (!Number.isInteger(totalLength) || totalLength < 0) {\n        throw new RangeError('totalLength must be a non-negative integer');\n    }\n    const { re, im } = data;\n    const length = re.length;\n    if (totalLength === 0 || length === totalLength)\n        return data;\n    if (length > totalLength) {\n        return {\n            re: re.slice(0, totalLength),\n            im: im.slice(0, totalLength),\n        };\n    }\n    const newRE = new Float64Array(totalLength);\n    const newIM = new Float64Array(totalLength);\n    newRE.set(re);\n    newIM.set(im);\n    return {\n        re: newRE,\n        im: newIM,\n    };\n}\n//# sourceMappingURL=reimZeroFilling.js.map","/**\n * Align data of two spectra by verifying wether x values are in a certain range (`delta`).\n * The two spectra should not have two consecutive x values which difference is\n * smaller than `delta` to achieve good results!\n * @param data1 - First spectrum data\n * @param data2 - Second spectrum data\n * @param options - Options\n */\nexport function xyAlign(data1, data2, options = {}) {\n    const { delta = 1, common = true, x = 'x1' } = options;\n    const result = {\n        x: [],\n        y1: [],\n        y2: [],\n    };\n    let i = 0;\n    let j = 0;\n    const length1 = data1.x.length;\n    const length2 = data2.x.length;\n    while (i < length1 && j < length2) {\n        let maxDiff = 0;\n        if (typeof delta === 'function') {\n            const mean = (data1.x[i] + data2.x[j]) / 2; // is this a good thing to do?\n            maxDiff = delta(mean);\n        }\n        else {\n            maxDiff = delta;\n        }\n        const difference = data1.x[i] - data2.x[j];\n        if (Math.abs(difference) > maxDiff) {\n            if (difference > 0) {\n                if (!common) {\n                    result.x.push(data2.x[j]);\n                    result.y1.push(0);\n                    result.y2.push(data2.y[j]);\n                    if (j === length2 - 1) {\n                        while (i < length1) {\n                            result.x.push(data1.x[i]);\n                            result.y1.push(data1.y[i]);\n                            result.y2.push(0);\n                            i++;\n                        }\n                    }\n                }\n                j++;\n            }\n            else {\n                if (!common) {\n                    result.x.push(data1.x[i]);\n                    result.y1.push(data1.y[i]);\n                    result.y2.push(0);\n                    if (i === length1 - 1) {\n                        while (j < length2) {\n                            result.x.push(data2.x[j]);\n                            result.y1.push(0);\n                            result.y2.push(data2.y[j]);\n                            j++;\n                        }\n                    }\n                }\n                i++;\n            }\n        }\n        else {\n            const weightedX = (data1.x[i] * data1.y[i] + data2.x[j] * data2.y[j]) /\n                (data1.y[i] + data2.y[j]);\n            switch (x) {\n                case 'x1':\n                    result.x.push(data1.x[i]);\n                    break;\n                case 'x2':\n                    result.x.push(data2.x[j]);\n                    break;\n                case 'weighted':\n                    result.x.push(weightedX);\n                    break;\n                default:\n                    throw new Error(`unknown x option value: ${String(x)}`);\n            }\n            result.y1.push(data1.y[i]);\n            result.y2.push(data2.y[j]);\n            i++;\n            j++;\n        }\n    }\n    return result;\n}\n//# sourceMappingURL=xyAlign.js.map","import { isAnyArray } from 'is-any-array';\n/**\n * Verify that `data` is an object of x,y arrays.\n * Throws an error if it's not.\n * @param data\n * @param options\n * @param options.minLength\n */\nexport function xyCheck(data, options = {}) {\n    const { minLength } = options;\n    if (data === null ||\n        typeof data !== 'object' ||\n        // @ts-expect-error Typechecking\n        !isAnyArray(data.x) ||\n        // @ts-expect-error Typechecking\n        !isAnyArray(data.y)) {\n        throw new Error('data must be an object of x and y arrays');\n    }\n    // @ts-expect-error Typechecking\n    if (data.x.length !== data.y.length) {\n        throw new Error('the x and y arrays must have the same length');\n    }\n    // @ts-expect-error Typechecking\n    if (minLength && data.x.length < minLength) {\n        throw new Error(`data.x must have a length of at least ${minLength}`);\n    }\n}\n//# sourceMappingURL=xyCheck.js.map","import { xMean } from '../x';\n/**\n * Finds the covariance of the points.\n * @param data\n * @param options\n * @returns the covariance\n */\nexport function xyCovariance(data, options = {}) {\n    const { x, y } = data;\n    const { unbiased = true } = options;\n    const meanX = xMean(x);\n    const meanY = xMean(y);\n    let error = 0;\n    for (let i = 0; i < x.length; i++) {\n        error += (x[i] - meanX) * (y[i] - meanY);\n    }\n    if (unbiased) {\n        return error / (x.length - 1);\n    }\n    else {\n        return error / x.length;\n    }\n}\n//# sourceMappingURL=xyCovariance.js.map","import { xGetFromToIndex } from '../x';\nimport { xyCheck } from './xyCheck';\n/**\n * Finds the max y value in a range and return a {x,y} point\n * @param data - Object that contains property x (an ordered increasing array) and y (an array)\n * @param options - Options\n */\nexport function xyMaxYPoint(data, options = {}) {\n    xyCheck(data, { minLength: 1 });\n    const { x, y } = data;\n    if (x.length === 1) {\n        return { x: x[0], y: y[0], index: 0 };\n    }\n    const { fromIndex, toIndex } = xGetFromToIndex(x, options);\n    let current = { x: x[fromIndex], y: y[fromIndex], index: fromIndex };\n    for (let i = fromIndex; i <= toIndex; i++) {\n        if (y[i] > current.y)\n            current = { x: x[i], y: y[i], index: i };\n    }\n    return current;\n}\n//# sourceMappingURL=xyMaxYPoint.js.map","import { xCumulative, xMaxValue } from '../x';\nimport { xyCheck } from './xyCheck';\nimport { xyMaxYPoint } from './xyMaxYPoint';\nconst STEPS = [0.25, 0.5, 0.75];\n/**\n * Cumulative Distribution Statistics\n * @param data - array of points {x,y}\n * @returns x0, x25, x50, x75, x100, xMode, xMean (x for maxY)\n */\nexport function xyCumulativeDistributionStatistics(data) {\n    xyCheck(data, { minLength: 1 });\n    const { x, y } = data;\n    const cumulativeSum = xCumulative(y);\n    const maxY = xMaxValue(cumulativeSum);\n    for (let i = 0; i < cumulativeSum.length; i++) {\n        cumulativeSum[i] /= maxY;\n    }\n    const result = {\n        x0: 0,\n        x25: 0,\n        x50: 0,\n        x75: 0,\n        x100: 0,\n        xMode: 0,\n        xMean: 0,\n    };\n    // need to find the x values closest to STEPS/100\n    result.x0 = x[0];\n    result.x100 = x.at(-1);\n    let currentStep = 0;\n    breakPoint: for (let i = 1; i < cumulativeSum.length; i++) {\n        while (STEPS[currentStep] < cumulativeSum[i]) {\n            // Key is computed dynamically with a multiplication. This cannot be type-safe, hence the \"as\" assertion.\n            const key = `x${STEPS[currentStep] * 100}`;\n            result[key] =\n                x[i - 1] +\n                    (x[i] - x[i - 1]) *\n                        ((STEPS[currentStep] - cumulativeSum[i - 1]) /\n                            (cumulativeSum[i] - cumulativeSum[i - 1]));\n            currentStep++;\n            if (currentStep === STEPS.length)\n                break breakPoint;\n        }\n    }\n    result.xMode = xyMaxYPoint(data).x;\n    let sumXY = 0;\n    let sumY = 0;\n    for (let i = 0; i < x.length; i++) {\n        sumXY += x[i] * y[i];\n        sumY += y[i];\n    }\n    result.xMean = sumXY / sumY;\n    return result;\n}\n//# sourceMappingURL=xyCumulativeDistributionStatistics.js.map","import { xEnsureFloat64 } from '../x';\nexport function xyEnsureFloat64(data) {\n    return {\n        x: xEnsureFloat64(data.x),\n        y: xEnsureFloat64(data.y),\n    };\n}\n//# sourceMappingURL=xyEnsureFloat64.js.map","import { xIsMonotonic } from '../x';\nimport { xyCheck } from './xyCheck';\n/**\n * Filters x,y values to allow strictly growing values in x-axis.\n * @param data - Object that contains property x (an ordered increasing array) and y (an array).\n */\nexport function xyEnsureGrowingX(data) {\n    xyCheck(data);\n    if (xIsMonotonic(data.x) === 1)\n        return data;\n    const x = Array.from(data.x);\n    const y = Array.from(data.y);\n    let prevX = Number.NEGATIVE_INFINITY;\n    let currentIndex = 0;\n    for (let index = 0; index < x.length; index++) {\n        if (prevX < x[index]) {\n            if (currentIndex < index) {\n                x[currentIndex] = x[index];\n                y[currentIndex] = y[index];\n            }\n            currentIndex++;\n            prevX = x[index];\n        }\n    }\n    x.length = currentIndex;\n    y.length = currentIndex;\n    return { x, y };\n}\n//# sourceMappingURL=xyEnsureGrowingX.js.map","/**\n * Normalize an array of zones:\n * - ensure than from < to\n * - merge overlapping zones\n * - deal with exclusions zones\n * - if no zones is specified add one between -Infinity and +Infinity\n * @param zones - array of zones\n * @param options - options\n * @returns array of zones\n */\nexport function zonesNormalize(zones = [], options = {}) {\n    const { exclusions = [] } = options;\n    let { from = Number.NEGATIVE_INFINITY, to = Number.POSITIVE_INFINITY } = options;\n    if (from > to)\n        [from, to] = [to, from];\n    zones = zones\n        .map((zone) => zone.from > zone.to ? { from: zone.to, to: zone.from } : { ...zone })\n        .sort((a, b) => {\n        if (a.from !== b.from)\n            return a.from - b.from;\n        return a.to - b.to;\n    });\n    if (zones.length === 0) {\n        zones.push({ from, to });\n    }\n    for (const zone of zones) {\n        if (from > zone.from)\n            zone.from = from;\n        if (to < zone.to)\n            zone.to = to;\n    }\n    zones = zones.filter((zone) => zone.from <= zone.to);\n    if (zones.length === 0)\n        return [];\n    let currentZone = zones[0];\n    const beforeExclusionsZones = [currentZone];\n    for (let i = 1; i < zones.length; i++) {\n        const zone = zones[i];\n        if (zone.from <= currentZone.to) {\n            if (currentZone.to < zone.to) {\n                currentZone.to = zone.to;\n            }\n        }\n        else {\n            currentZone = zone;\n            beforeExclusionsZones.push(currentZone);\n        }\n    }\n    if (exclusions.length === 0)\n        return beforeExclusionsZones;\n    const normalizedExclusions = zonesNormalize(exclusions);\n    let currentExclusionIndex = 0;\n    const results = [];\n    for (let zoneIndex = 0; zoneIndex < beforeExclusionsZones.length; zoneIndex++) {\n        const zone = beforeExclusionsZones[zoneIndex];\n        if (currentExclusionIndex === normalizedExclusions.length) {\n            // we analysed all the exclusion zones\n            results.push(zone);\n            continue;\n        }\n        while (currentExclusionIndex < normalizedExclusions.length &&\n            normalizedExclusions[currentExclusionIndex].to <= zone.from) {\n            currentExclusionIndex++;\n        }\n        if (currentExclusionIndex === normalizedExclusions.length) {\n            // we analysed all the exclusion zones\n            results.push(zone);\n            continue;\n        }\n        if (zone.to < normalizedExclusions[currentExclusionIndex].from) {\n            // no problems, not yet in exclusion\n            results.push(zone);\n            continue;\n        }\n        if (normalizedExclusions[currentExclusionIndex].to >= zone.to) {\n            // could be totally excluded\n            if (normalizedExclusions[currentExclusionIndex].from <= zone.from) {\n                continue;\n            }\n            results.push({\n                from: normalizedExclusions[currentExclusionIndex].to,\n                to: zone.to,\n            });\n        }\n        // we cut in the middle, we need to create more zones, annoying !\n        if (normalizedExclusions[currentExclusionIndex].from > zone.from) {\n            results.push({\n                from: zone.from,\n                to: normalizedExclusions[currentExclusionIndex].from,\n            });\n        }\n        zone.from = normalizedExclusions[currentExclusionIndex].to;\n        zoneIndex--;\n    }\n    return results;\n}\n//# sourceMappingURL=zonesNormalize.js.map","import { zonesNormalize } from './zonesNormalize';\n/**\n * Add the number of points per zone to reach a specified total\n * @param zones - array of zones\n * @param numberOfPoints - total number of points to distribute between zones\n * @param options - options\n * @returns array of zones with points\n */\nexport function zonesWithPoints(zones = [], \n/**\n * total number of points to distribute between zones\n * @default 10\n */\nnumberOfPoints = 10, options = {}) {\n    if (zones.length === 0)\n        return [];\n    const normalizedZones = zonesNormalize(zones, options);\n    const zonesWithNumberOfPoints = [];\n    const totalSize = normalizedZones.reduce((previous, current) => {\n        return previous + (current.to - current.from);\n    }, 0);\n    const unitsPerPoint = totalSize / numberOfPoints;\n    let currentTotal = 0;\n    for (let i = 0; i < normalizedZones.length - 1; i++) {\n        const tempZone = normalizedZones[i];\n        const tempZoneNumberOfPoints = Math.min(Math.round((tempZone.to - tempZone.from) / unitsPerPoint), numberOfPoints - currentTotal);\n        zonesWithNumberOfPoints.push({\n            ...tempZone,\n            numberOfPoints: tempZoneNumberOfPoints,\n        });\n        currentTotal += tempZoneNumberOfPoints;\n    }\n    zonesWithNumberOfPoints.push({\n        ...normalizedZones.at(-1),\n        numberOfPoints: numberOfPoints - currentTotal,\n    });\n    return zonesWithNumberOfPoints;\n}\n//# sourceMappingURL=zonesWithPoints.js.map","/**\n * Function that retrieves the getEquallySpacedData with the variant \"slot\".\n * @param x\n * @param y\n * @param from\n * @param to\n * @param numberOfPoints\n * @returns Array of y's equally spaced with the variant \"slot\"\n */\nexport default function equallySpacedSlot(\n/** x coordinates */\nx, \n/** y coordinates */\ny, \n/** from value */\nfrom, \n/** to value */\nto, \n/** number of points */\nnumberOfPoints) {\n    const xLength = x.length;\n    if (xLength < 2) {\n        return Float64Array.from(x);\n    }\n    const step = (to - from) / (numberOfPoints > 1 ? numberOfPoints - 1 : 1);\n    const halfStep = step / 2;\n    const lastStep = x.at(-1) - x.at(-2);\n    const start = from - halfStep;\n    // Changed Array to Float64Array\n    const output = new Float64Array(numberOfPoints);\n    // Init main variables\n    let min = start;\n    let max = start + step;\n    let previousX = -Number.MAX_VALUE;\n    let previousY = 0;\n    let nextX = x[0];\n    let nextY = y[0];\n    let frontOutsideSpectra = 0;\n    let backOutsideSpectra = true;\n    let currentValue = 0;\n    // for slot algorithm\n    let currentPoints = 0;\n    let i = 1; // index of input\n    let j = 0; // index of output\n    main: while (true) {\n        if (previousX >= nextX)\n            throw new Error('x must be a growing series');\n        while (previousX - max > 0) {\n            // no overlap with original point, just consume current value\n            if (backOutsideSpectra) {\n                currentPoints++;\n                backOutsideSpectra = false;\n            }\n            output[j] = currentPoints <= 0 ? 0 : currentValue / currentPoints;\n            j++;\n            if (j === numberOfPoints) {\n                break main;\n            }\n            min = max;\n            max += step;\n            currentValue = 0;\n            currentPoints = 0;\n        }\n        if (previousX > min) {\n            currentValue += previousY;\n            currentPoints++;\n        }\n        if (previousX === -Number.MAX_VALUE || frontOutsideSpectra > 1) {\n            currentPoints--;\n        }\n        previousX = nextX;\n        previousY = nextY;\n        if (i < xLength) {\n            nextX = x[i];\n            nextY = y[i];\n            i++;\n        }\n        else {\n            nextX += lastStep;\n            nextY = 0;\n            frontOutsideSpectra++;\n        }\n    }\n    return output;\n}\n//# sourceMappingURL=equallySpacedSlot.js.map","/**\n * Function that calculates the integral of the line between two\n * x-coordinates, given the slope and intercept of the line.\n * @param x0\n * @param x1\n * @param slope\n * @param intercept\n * @returns integral value.\n */\nexport default function integral(\n/** first coordinate of point */\nx0, \n/** second coordinate of point */\nx1, \n/** slope of the line */\nslope, \n/** intercept of the line on the y axis */\nintercept) {\n    return (0.5 * slope * x1 * x1 +\n        intercept * x1 -\n        (0.5 * slope * x0 * x0 + intercept * x0));\n}\n//# sourceMappingURL=integral.js.map","import integral from './integral';\n/**\n * Function that retrieves the getEquallySpacedData with the variant \"smooth\".\n * @param x\n * @param y\n * @param from\n * @param to\n * @param numberOfPoints\n * @returns - Array of y's equally spaced with the variant \"smooth\"\n */\nexport default function equallySpacedSmooth(\n/** x coordinates */\nx, \n/** y coordinates */\ny, \n/** from value */\nfrom, \n/** to value */\nto, \n/** number of points */\nnumberOfPoints) {\n    const xLength = x.length;\n    const step = (to - from) / (numberOfPoints > 1 ? numberOfPoints - 1 : 1);\n    const halfStep = step / 2;\n    // Changed Array to Float64Array\n    const output = new Float64Array(numberOfPoints);\n    const initialOriginalStep = x[1] - x[0];\n    const lastOriginalStep = x[xLength - 1] - x[xLength - 2];\n    // Init main variables\n    let min = from - halfStep;\n    let max = from + halfStep;\n    let previousX = Number.MIN_SAFE_INTEGER;\n    let previousY = 0;\n    let nextX = x[0] - initialOriginalStep;\n    let nextY = 0;\n    let currentValue = 0;\n    let slope = 0;\n    let intercept = 0;\n    let sumAtMin = 0;\n    let sumAtMax = 0;\n    let i = 0; // index of input\n    let j = 0; // index of output\n    let add = 0;\n    main: while (true) {\n        if (previousX >= nextX)\n            throw new Error('x must be a growing series');\n        if (previousX <= min && min <= nextX) {\n            add = integral(0, min - previousX, slope, previousY);\n            sumAtMin = currentValue + add;\n        }\n        while (nextX - max >= 0) {\n            // no overlap with original point, just consume current value\n            add = integral(0, max - previousX, slope, previousY);\n            sumAtMax = currentValue + add;\n            output[j++] = (sumAtMax - sumAtMin) / step;\n            if (j === numberOfPoints) {\n                break main;\n            }\n            min = max;\n            max += step;\n            sumAtMin = sumAtMax;\n        }\n        currentValue += integral(previousX, nextX, slope, intercept);\n        previousX = nextX;\n        previousY = nextY;\n        if (i < xLength) {\n            nextX = x[i];\n            nextY = y[i];\n            i++;\n        }\n        else if (i === xLength) {\n            nextX += lastOriginalStep;\n            nextY = 0;\n        }\n        slope = getSlope(previousX, previousY, nextX, nextY);\n        intercept = -slope * previousX + previousY;\n    }\n    return output;\n}\nfunction getSlope(x0, y0, x1, y1) {\n    return (y1 - y0) / (x1 - x0);\n}\n//# sourceMappingURL=equallySpacedSmooth.js.map","import { createFromToArray } from '../utils';\nimport { zonesNormalize, zonesWithPoints } from '../zones';\nimport equallySpacedSlot from './utils/equallySpacedSlot';\nimport equallySpacedSmooth from './utils/equallySpacedSmooth';\nimport { xyCheck } from './xyCheck';\n/**\n * Function that returns a Number array of equally spaced numberOfPoints\n * containing a representation of intensities of the spectra arguments x\n * and y.\n *\n * The options parameter contains an object in the following form:\n * from: starting point\n * to: last point\n * numberOfPoints: number of points between from and to\n * variant: \"slot\" or \"smooth\" - smooth is the default option\n *\n * The slot variant consist that each point in an array is calculated\n * averaging the existing points between the slot that belongs to the current\n * value. The smooth variant is the same but takes the integral of the range\n * of the slot and divide by the step size between two points in an array.\n *\n * If exclusions zone are present, zones are ignored !\n * @param data - object containing 2 properties x and y\n * @param options - options\n * @returns new object with x / y array with the equally spaced data.\n */\nexport function xyEquallySpaced(data, options = {}) {\n    const { x, y } = data;\n    const xLength = x.length;\n    const { from = x[0], to = x[xLength - 1], variant = 'smooth', numberOfPoints = 100, exclusions = [], zones = [{ from, to }], } = options;\n    if (from > to) {\n        throw new RangeError('from should be larger than to');\n    }\n    xyCheck(data);\n    if (numberOfPoints < 2) {\n        throw new RangeError(\"'numberOfPoints' option must be greater than 1\");\n    }\n    const normalizedZones = zonesNormalize(zones, { from, to, exclusions });\n    const zonesWithPointsRes = zonesWithPoints(normalizedZones, numberOfPoints, {\n        from,\n        to,\n    }).filter((zone) => zone.numberOfPoints);\n    let xResult = [];\n    let yResult = [];\n    for (const zone of zonesWithPointsRes) {\n        if (!zone.numberOfPoints) {\n            zone.numberOfPoints = 0;\n        }\n        const zoneResult = processZone(Array.from(x), Array.from(y), zone.from, zone.to, zone.numberOfPoints, variant);\n        xResult = xResult.concat(zoneResult.x);\n        yResult = yResult.concat(zoneResult.y);\n    }\n    return { x: xResult, y: yResult };\n}\nfunction processZone(x, y, from, to, numberOfPoints, variant) {\n    if (numberOfPoints < 1) {\n        throw new RangeError('the number of points must be at least 1');\n    }\n    const output = variant === 'slot'\n        ? Array.from(equallySpacedSlot(x, y, from, to, numberOfPoints))\n        : Array.from(equallySpacedSmooth(x, y, from, to, numberOfPoints));\n    return {\n        x: Array.from(createFromToArray({\n            from,\n            to,\n            length: numberOfPoints,\n        })),\n        y: output,\n    };\n}\n//# sourceMappingURL=xyEquallySpaced.js.map","import { zonesNormalize } from '../zones';\nimport { xyCheck } from './xyCheck';\n/**\n * Extract zones from a XY data.\n * @param data - Object that contains property x (an ordered increasing array) and y (an array)\n * @param options - options\n * @returns - Array of points\n */\nexport function xyExtract(data, options = {}) {\n    xyCheck(data);\n    const { x, y } = data;\n    let { zones } = options;\n    zones = zonesNormalize(zones);\n    if (x === undefined ||\n        y === undefined ||\n        !Array.isArray(zones) ||\n        zones.length === 0) {\n        return data;\n    }\n    const newX = [];\n    const newY = [];\n    let currentZone = zones[0];\n    let position = 0;\n    loop: for (let i = 0; i < x.length; i++) {\n        while (currentZone.to < x[i]) {\n            position++;\n            currentZone = zones[position];\n            if (!currentZone) {\n                i = x.length;\n                break loop;\n            }\n        }\n        if (x[i] >= currentZone.from) {\n            newX.push(x[i]);\n            newY.push(y[i]);\n        }\n    }\n    return { x: newX, y: newY };\n}\n//# sourceMappingURL=xyExtract.js.map","/**\n * Filter an array x/y based on various criteria x points are expected to be sorted\n * @param data - object containing 2 properties x and y\n * @param options - options\n * @returns filtered array\n */\nexport function xyFilter(data, options = {}) {\n    const { x, y } = data;\n    const { filter } = options;\n    const newX = [];\n    const newY = [];\n    for (let i = 0; i < x.length; i++) {\n        if (!filter || filter(x[i], y[i])) {\n            newX.push(x[i]);\n            newY.push(y[i]);\n        }\n    }\n    return {\n        x: newX,\n        y: newY,\n    };\n}\n//# sourceMappingURL=xyFilter.js.map","import { xMinMaxValues } from '../x';\n/**\n * Filter an array x/y based on various criteria x points are expected to be sorted\n * @param data - object containing 2 properties x and y\n * @param minRelativeYValue - the minimum relative value compare to the Y max value\n * @returns filtered data\n */\nexport function xyFilterMinYValue(data, minRelativeYValue) {\n    if (minRelativeYValue === undefined)\n        return data;\n    const { x, y } = data;\n    const { min, max } = xMinMaxValues(y);\n    const threshold = max * minRelativeYValue;\n    if (min >= threshold)\n        return data;\n    const newX = [];\n    const newY = [];\n    for (let i = 0; i < x.length; i++) {\n        if (y[i] >= threshold) {\n            newX.push(x[i]);\n            newY.push(y[i]);\n        }\n    }\n    return {\n        x: newX,\n        y: newY,\n    };\n}\n//# sourceMappingURL=xyFilterMinYValue.js.map","import { xSortDescending } from '../x';\n/**\n * Filter an array x/y based on various criteria x points are expected to be sorted\n * @param data - object containing 2 properties x and y\n * @param nbPeaks\n * @returns filtered data\n */\nexport function xyFilterTopYValues(data, nbPeaks) {\n    if (nbPeaks === undefined)\n        return data;\n    if (nbPeaks > data.x.length)\n        return data;\n    const { x, y } = data;\n    const newX = [];\n    const newY = [];\n    const descending = xSortDescending(y.slice());\n    const threshold = descending[nbPeaks - 1];\n    let nbThreshold = 0;\n    for (let i = 0; i < nbPeaks; i++) {\n        if (descending[i] === threshold) {\n            nbThreshold++;\n        }\n    }\n    for (let i = 0; i < x.length; i++) {\n        if (y[i] > threshold) {\n            newX.push(x[i]);\n            newY.push(y[i]);\n        }\n        else if (y[i] === threshold) {\n            nbThreshold--;\n            if (nbThreshold >= 0) {\n                newX.push(x[i]);\n                newY.push(y[i]);\n            }\n        }\n    }\n    return {\n        x: newX,\n        y: newY,\n    };\n}\n//# sourceMappingURL=xyFilterTopYValues.js.map","import { zonesNormalize } from '../zones';\n/**\n * Filter an array x/y based on various criteria x points are expected to be sorted\n * @param data - object containing 2 properties x and y\n * @param options - options\n * @returns filtered array\n */\nexport function xyFilterX(data, options = {}) {\n    const { x, y } = data;\n    if (x.length === 0) {\n        return {\n            x: Array.from(x),\n            y: Array.from(y),\n        };\n    }\n    const { from = x[0], to = x.at(-1), zones = [{ from, to }], exclusions = [], } = options;\n    const normalizedZones = zonesNormalize(zones, { from, to, exclusions });\n    let currentZoneIndex = 0;\n    const newX = [];\n    const newY = [];\n    let position = 0;\n    while (position < x.length) {\n        if (x[position] <= normalizedZones[currentZoneIndex].to &&\n            x[position] >= normalizedZones[currentZoneIndex].from) {\n            newX.push(x[position]);\n            newY.push(y[position]);\n        }\n        else if (x[position] > normalizedZones[currentZoneIndex].to) {\n            currentZoneIndex++;\n            if (!normalizedZones[currentZoneIndex])\n                break;\n        }\n        position++;\n    }\n    return {\n        x: newX,\n        y: newY,\n    };\n}\n//# sourceMappingURL=xyFilterX.js.map","import { xyCheck } from './xyCheck';\n/**\n * Filter out all the points for which x <= 0. Useful to display log scale data\n * @param data - data\n * @returns - An object with the filtered data\n */\nexport function xyFilterXPositive(data) {\n    xyCheck(data);\n    const { x, y } = data;\n    const newX = [];\n    const newY = [];\n    if (x === undefined || y === undefined) {\n        return { x: newX, y: newY };\n    }\n    for (let i = 0; i < x.length; i++) {\n        if (x[i] > 0) {\n            newX.push(x[i]);\n            newY.push(y[i]);\n        }\n    }\n    return { x: newX, y: newY };\n}\n//# sourceMappingURL=xyFilterXPositive.js.map","import { xFindClosestIndex } from '../x';\n/**\n * Finds the closest point\n * @param data - x array should be sorted and ascending\n * @param target - target to search\n * @returns - closest point\n */\nexport function xyFindClosestPoint(\n/** points */\ndata, target) {\n    const { x, y } = data;\n    const index = xFindClosestIndex(x, target);\n    return {\n        x: x[index],\n        y: y[index],\n    };\n}\n//# sourceMappingURL=xyFindClosestPoint.js.map","import { xyCheck } from './xyCheck';\n/**\n * Returns the numberMaxPoints points with the bigger y.\n * @param data - Object that contains property x (an ordered increasing array) and y (an array)\n * @param numberMaxPoints - Number of points to keep\n * @returns - The points filtered to keep the `numberMaxPoints` most intense points of the input.\n */\nexport function xyGetNMaxY(data, numberMaxPoints) {\n    xyCheck(data);\n    if (data.x.length <= numberMaxPoints) {\n        return data;\n    }\n    else {\n        const newX = new Float64Array(numberMaxPoints);\n        const newY = new Float64Array(numberMaxPoints);\n        // slice() is used to make a copy of the array, because sort() is IPM\n        const threshold = Float64Array.from(data.y).sort().reverse()[numberMaxPoints - 1];\n        let index = 0;\n        for (let i = 0; i < data.x.length; i++) {\n            if (data.y[i] >= threshold) {\n                newX[index] = data.x[i];\n                newY[index] = data.y[i];\n                index++;\n            }\n            if (index === numberMaxPoints) {\n                return { x: newX, y: newY };\n            }\n        }\n        return data;\n    }\n}\n//# sourceMappingURL=xyGetNMaxY.js.map","/**\n * Order object of array, x has to be monotone. Ensure x is growing\n * @param data - Object of kind {x:[], y:[]}.\n */\nexport function xyGrowingX(data) {\n    const { x, y } = data;\n    if (x.length !== y.length) {\n        throw new TypeError('length of x and y must be identical');\n    }\n    if (x.length < 2 || x[0] < x.at(-1))\n        return data;\n    return {\n        x: x.slice(0).reverse(),\n        y: y.slice(0).reverse(),\n    };\n}\n//# sourceMappingURL=xyGrowingX.js.map","import { xGetFromToIndex } from '../x';\nimport { xyCheck } from './xyCheck';\n/**\n * Generate a X / Y of the xyIntegral\n * @param data - Object that contains property x (an ordered increasing array) and y (an array)\n * @param options - Options\n * @returns - An object with the xyIntegration function\n */\nexport function xyIntegral(data, options = {}) {\n    const { reverse = false } = options;\n    xyCheck(data, { minLength: 1 });\n    const { x, y } = data;\n    const { fromIndex, toIndex } = xGetFromToIndex(x, options);\n    let xyIntegration = 0;\n    const currentxyIntegral = {\n        x: new Float64Array(toIndex - fromIndex + 1),\n        y: new Float64Array(toIndex - fromIndex + 1),\n    };\n    let index = 0;\n    if (reverse) {\n        currentxyIntegral.y[index] = 0;\n        currentxyIntegral.x[index++] = x[toIndex];\n        for (let i = toIndex; i > fromIndex; i--) {\n            xyIntegration += ((x[i] - x[i - 1]) * (y[i - 1] + y[i])) / 2;\n            currentxyIntegral.x[index] = x[i - 1];\n            currentxyIntegral.y[index++] = xyIntegration;\n        }\n        currentxyIntegral.x.reverse();\n        currentxyIntegral.y.reverse();\n    }\n    else {\n        currentxyIntegral.y[index] = 0;\n        currentxyIntegral.x[index++] = x[fromIndex];\n        for (let i = fromIndex; i < toIndex; i++) {\n            xyIntegration += ((x[i + 1] - x[i]) * (y[i + 1] + y[i])) / 2;\n            currentxyIntegral.x[index] = x[i + 1];\n            currentxyIntegral.y[index++] = xyIntegration;\n        }\n    }\n    return currentxyIntegral;\n}\n//# sourceMappingURL=xyIntegral.js.map","import { xGetFromToIndex } from '../x';\nimport { xyCheck } from './xyCheck';\n/**\n * Calculate integration\n * @param data - Object that contains property x (an ordered increasing array) and y (an array)\n * @param options - Options\n * @returns - xyIntegration value on the specified range\n */\nexport function xyIntegration(data, options = {}) {\n    xyCheck(data, { minLength: 1 });\n    const { x, y } = data;\n    if (x.length === 1)\n        return 0;\n    const { fromIndex, toIndex } = xGetFromToIndex(x, options);\n    let currentxyIntegration = 0;\n    for (let i = fromIndex; i < toIndex; i++) {\n        currentxyIntegration += ((x[i + 1] - x[i]) * (y[i + 1] + y[i])) / 2;\n    }\n    return currentxyIntegration;\n}\n//# sourceMappingURL=xyIntegration.js.map","import { xyCheck } from './xyCheck';\n/**\n * Join x / y values when difference in X is closer than delta.\n * When joining, y values are summed and x values are weighted average\n * @param data - Object that contains property x (an ordered increasing array) and y (an array)\n * @param options - Options\n * @returns - An object with the xyIntegration function\n */\nexport function xyJoinX(data, options = {}) {\n    xyCheck(data);\n    const { delta = 1 } = options;\n    const deltaIsFunction = typeof delta === 'function';\n    const x = Array.from(data.x);\n    const y = Array.from(data.y);\n    if (x.length < 2) {\n        return { x, y };\n    }\n    let position = 0;\n    for (let i = 1; i < x.length; i++) {\n        const difference = x[i] - x[i - 1];\n        const currentDelta = deltaIsFunction ? delta((x[i] + x[i - 1]) / 2) : delta;\n        if (difference <= currentDelta) {\n            // we join\n            if (y[position] !== 0 || y[i] !== 0) {\n                x[position] =\n                    (x[position] * y[position] + x[i] * y[i]) / (y[position] + y[i]);\n                y[position] += y[i];\n            }\n        }\n        else {\n            position++;\n            x[position] = x[i];\n            y[position] = y[i];\n        }\n    }\n    x.length = position + 1;\n    y.length = position + 1;\n    return { x, y };\n}\n//# sourceMappingURL=xyJoinX.js.map","import { xGetFromToIndex } from '../x/xGetFromToIndex';\nimport { xyCheck } from './xyCheck';\n/**\n * Computes the weighted mean value of an array of values.\n * @param data - array of DataXY\n * @param options - options\n */\nexport function xyMassCenter(data, options = {}) {\n    xyCheck(data, { minLength: 1 });\n    const { x, y } = data;\n    const { fromIndex, toIndex } = xGetFromToIndex(x, options);\n    let sumYs = 0;\n    let sumProducts = 0;\n    for (let i = fromIndex; i <= toIndex; i++) {\n        sumProducts += x[i] * y[i];\n        sumYs += y[i];\n    }\n    if (sumYs === 0) {\n        throw new Error('Sum of Ys can not be zero.');\n    }\n    return sumProducts / sumYs;\n}\n//# sourceMappingURL=xyMassCenter.js.map","import { xFindClosestIndex } from '../x';\nimport { xyCheck } from './xyCheck';\n/**\n * We will calculate a vector containing center of mass of DataXY as well as center of mass of both parts, etc.\n * This approach allows to efficiently represent spectra like XPS, NMR, etc. It should provide an extremely efficient\n * way to store and search similar spectra.\n * @param data - Object that contains property x (an ordered increasing array) and y (an array)\n * @param options\n * @returns - Array of centers of mass\n */\nexport function xyMassCenterVector(data, options = {}) {\n    xyCheck(data, { minLength: 2 });\n    const { depth = 5 } = options;\n    const { weightedIntegral, integral } = getWeightedIntegral(data);\n    const results = new Float64Array((1 << depth) - 1);\n    const endIndexes = new Int32Array((1 << depth) - 1);\n    endIndexes[0] = data.x.length - 1;\n    const beginIndexes = new Int32Array((1 << depth) - 1);\n    beginIndexes[0] = -1;\n    let index = 0;\n    for (let i = 0; i < depth; i++) {\n        for (let j = 0; j < 1 << i; j++) {\n            const currentBeginIndex = beginIndexes[index];\n            const currentEndIndex = endIndexes[index];\n            const currentIntegration = currentBeginIndex === -1\n                ? integral[currentEndIndex]\n                : integral[currentEndIndex] - integral[currentBeginIndex];\n            // we need to solve the issue of null integration (rather in simulated spectra).\n            let x = 0;\n            if (currentIntegration !== 0) {\n                x =\n                    currentBeginIndex === -1\n                        ? weightedIntegral[currentEndIndex] / currentIntegration\n                        : (weightedIntegral[currentEndIndex] -\n                            weightedIntegral[currentBeginIndex]) /\n                            currentIntegration;\n            }\n            else {\n                x = (data.x[currentEndIndex] + data.x[currentBeginIndex]) / 2;\n            }\n            results[index++] = x;\n            // we can now prepare the next level\n            if (i < depth - 1) {\n                const nextIndex = (1 << (i + 1)) + j * 2 - 1;\n                let middleIndex = xFindClosestIndex(data.x, x);\n                if (middleIndex === currentBeginIndex) {\n                    middleIndex++;\n                }\n                beginIndexes[nextIndex] = currentBeginIndex;\n                endIndexes[nextIndex] = middleIndex;\n                if (middleIndex === currentEndIndex) {\n                    middleIndex--;\n                }\n                beginIndexes[nextIndex + 1] = middleIndex;\n                endIndexes[nextIndex + 1] = currentEndIndex;\n            }\n        }\n    }\n    return results;\n}\nfunction getWeightedIntegral(data) {\n    const { x, y } = data;\n    const weightedIntegral = new Float64Array(x.length);\n    const integral = new Float64Array(x.length);\n    // the first point, no points before\n    const firstIntegration = (x[1] - x[0]) * y[0];\n    let totalIntegration = firstIntegration;\n    integral[0] = totalIntegration;\n    let totalWeightedIntegral = firstIntegration * x[0];\n    weightedIntegral[0] = totalWeightedIntegral;\n    for (let i = 1; i < x.length - 1; i++) {\n        const currentIntegration = ((x[i + 1] - x[i - 1]) * y[i]) / 2;\n        const currentX = x[i];\n        totalIntegration += currentIntegration;\n        integral[i] = totalIntegration;\n        totalWeightedIntegral += currentIntegration * currentX;\n        weightedIntegral[i] = totalWeightedIntegral;\n    }\n    // the last point, no points after\n    const lastIntegration = (x.at(-1) - x.at(-2)) * y.at(-1);\n    totalIntegration += lastIntegration;\n    integral[x.length - 1] = totalIntegration;\n    totalWeightedIntegral += lastIntegration * x.at(-1);\n    weightedIntegral[x.length - 1] = totalWeightedIntegral;\n    return { integral, weightedIntegral };\n}\n//# sourceMappingURL=xyMassCenterVector.js.map","import { xFindClosestIndex } from '../x';\nimport { xyCheck } from './xyCheck';\n/**\n * Find the closest maximum going up hill\n * @param data - Object that contains property x (an ordered increasing array) and y (an array)\n * @param options - options\n * @returns - An object with the x/y value\n */\nexport function xyMaxClosestYPoint(data, options = {}) {\n    xyCheck(data);\n    const { x, y } = data;\n    const { target } = options;\n    let { targetIndex } = options;\n    if (targetIndex === undefined) {\n        if (target !== undefined) {\n            targetIndex = xFindClosestIndex(x, target);\n        }\n        else {\n            targetIndex = 0;\n        }\n    }\n    let previousIndex = Number.MIN_SAFE_INTEGER;\n    let currentIndex = targetIndex;\n    let xyMaxY = y[targetIndex];\n    while (currentIndex !== previousIndex) {\n        previousIndex = currentIndex;\n        if (currentIndex > 0 && y[currentIndex - 1] > xyMaxY) {\n            currentIndex--;\n        }\n        else if (currentIndex < x.length - 1 && y[currentIndex + 1] > xyMaxY) {\n            currentIndex++;\n        }\n        xyMaxY = y[currentIndex];\n    }\n    return {\n        x: x[currentIndex],\n        y: y[currentIndex],\n        index: currentIndex,\n    };\n}\n//# sourceMappingURL=xyMaxClosestYPoint.js.map","import { xGetFromToIndex } from '../x/xGetFromToIndex';\nimport { xyCheck } from './xyCheck';\n/**\n * Finds all the max values\n * If the values are equal the middle\n * of the equal part will be the position of the signal!\n * @param data - Object that contains property x (an ordered increasing array) and y (an array)\n * @param options - Object with from and to properties\n * @returns - Array of points\n */\nexport function xyMaximaY(data, options = {}) {\n    xyCheck(data, { minLength: 2 });\n    const { x, y } = data;\n    const { fromIndex, toIndex } = xGetFromToIndex(x, options);\n    const maxima = [];\n    let startEqualIndex = -1;\n    for (let i = fromIndex + 1; i < toIndex; i++) {\n        if (y[i - 1] < y[i] && y[i + 1] < y[i]) {\n            maxima.push({ x: x[i], y: y[i], index: i });\n        }\n        else if (y[i - 1] < y[i] && y[i + 1] === y[i]) {\n            startEqualIndex = i;\n        }\n        else if (y[i - 1] === y[i] && y[i + 1] < y[i]) {\n            const index = Math.floor((i + startEqualIndex) / 2);\n            maxima.push({ x: x[index], y: y[index], index });\n        }\n    }\n    return maxima;\n}\n//# sourceMappingURL=xyMaximaY.js.map","/**\n * Merge abscissas values on similar ordinates and weight the group of abscissas\n * @param data - object containing 2 properties x and y\n * @param options - options\n * @returns array of merged and weighted points\n */\nexport function xyMaxMerge(data, options = {}) {\n    const { x, y } = data;\n    const { groupWidth = 0.001 } = options;\n    const merged = { x: [], y: [] };\n    const maxAbscissa = { x: [], y: [] };\n    let size = 0;\n    let index = 0;\n    while (index < x.length) {\n        if (size === 0 || x[index] - merged.x[size - 1] > groupWidth) {\n            maxAbscissa.x.push(x[index]);\n            maxAbscissa.y.push(y[index]);\n            merged.x.push(x[index]);\n            merged.y.push(y[index]);\n            index++;\n            size++;\n        }\n        else {\n            if (y[index] > maxAbscissa.y[size - 1]) {\n                maxAbscissa.x[size - 1] = x[index];\n                maxAbscissa.y[size - 1] = y[index];\n            }\n            merged.x[size - 1] = x[index];\n            merged.y[size - 1] += y[index];\n            index++;\n        }\n    }\n    merged.x = maxAbscissa.x.slice();\n    return merged;\n}\n//# sourceMappingURL=xyMaxMerge.js.map","import { xGetFromToIndex } from '../x';\nimport { xyCheck } from './xyCheck';\n/**\n * Finds the max value in a zone\n * @param data - Object that contains property x (an ordered increasing array) and y (an array)\n * @param options - Options\n * @returns - Max y on the specified range\n */\nexport function xyMaxY(data, options = {}) {\n    xyCheck(data);\n    const { x, y } = data;\n    const { fromIndex, toIndex } = xGetFromToIndex(x, options);\n    let currentxyMaxY = y[fromIndex];\n    for (let i = fromIndex; i <= toIndex; i++) {\n        if (y[i] > currentxyMaxY)\n            currentxyMaxY = y[i];\n    }\n    return currentxyMaxY;\n}\n//# sourceMappingURL=xyMaxY.js.map","/**\n * Finds the median x value for an object with properties x and y (arrays of the same length)\n * @param data - x should be sorted in increasing order\n * @returns - the median of x values\n */\nexport function xyMedian(data) {\n    const { x, y } = data;\n    let sumY = 0;\n    let cumSumY = 0;\n    let i;\n    if (x.length === 0) {\n        return Number.NaN;\n    }\n    if (x.length === 1) {\n        return x[0];\n    }\n    for (i = 0; i < y.length; i++) {\n        sumY += y[i];\n    }\n    for (i = 0; i < y.length; i++) {\n        cumSumY += y[i];\n        if (cumSumY > sumY / 2) {\n            return x[i];\n        }\n        else if (cumSumY === sumY / 2) {\n            return 0.5 * (x[i] + x[i + 1]);\n        }\n    }\n    return Number.NaN;\n}\n//# sourceMappingURL=xyMedian.js.map","/**\n * Merge abscissa values if the ordinate value is in a list of centroids\n * @param data - object containing 2 properties x and y\n * @param centroids - centroids\n * @param options - options\n * @returns merged points\n */\nexport function xyMergeByCentroids(data, centroids, options = {}) {\n    const { window = 0.01 } = options;\n    const mergedPoints = {\n        x: Float64Array.from(centroids),\n        y: new Float64Array(centroids.length).fill(0),\n    };\n    let originalIndex = 0;\n    let mergedIndex = 0;\n    while (originalIndex < data.x.length && mergedIndex < centroids.length) {\n        const diff = data.x[originalIndex] - centroids[mergedIndex];\n        if (Math.abs(diff) < window) {\n            mergedPoints.y[mergedIndex] += data.y[originalIndex++];\n        }\n        else if (diff < 0) {\n            originalIndex++;\n        }\n        else {\n            mergedIndex++;\n        }\n    }\n    return mergedPoints;\n}\n//# sourceMappingURL=xyMergeByCentroids.js.map","import { xFindClosestIndex } from '../x';\nimport { xyCheck } from './xyCheck';\n/**\n * Find the closest minimum going down hill\n * @param data - Object that contains property x (an ordered increasing array) and y (an array)\n * @param options - Options\n * @returns - An object with the x/y value\n */\nexport function xyMinClosestYPoint(data, options = {}) {\n    xyCheck(data);\n    const { x, y } = data;\n    const { target } = options;\n    let { targetIndex } = options;\n    if (targetIndex === undefined) {\n        if (target !== undefined) {\n            targetIndex = xFindClosestIndex(x, target);\n        }\n        else {\n            targetIndex = 0;\n        }\n    }\n    let previousIndex = Number.MIN_SAFE_INTEGER;\n    let currentIndex = targetIndex;\n    let minY = y[targetIndex];\n    while (currentIndex !== previousIndex) {\n        previousIndex = currentIndex;\n        if (currentIndex > 0 && y[currentIndex - 1] < minY) {\n            currentIndex--;\n        }\n        else if (currentIndex < x.length - 1 && y[currentIndex + 1] < minY) {\n            currentIndex++;\n        }\n        minY = y[currentIndex];\n    }\n    return {\n        x: x[currentIndex],\n        y: y[currentIndex],\n        index: currentIndex,\n    };\n}\n//# sourceMappingURL=xyMinClosestYPoint.js.map","import { xGetFromToIndex } from '../x/xGetFromToIndex';\nimport { xyCheck } from './xyCheck';\n/**\n * Finds all the min values\n * If the values are equal the middle\n * of the equal part will be the position of the signal!\n * @param data - Object that contains property X (an ordered increasing array) and y (an arraY)\n * @param options - Object with from and to properties\n * @returns - Array of points.\n */\nexport function xyMinimaY(data, options = {}) {\n    xyCheck(data, { minLength: 2 });\n    const { x, y } = data;\n    const { fromIndex, toIndex } = xGetFromToIndex(x, options);\n    const maxima = [];\n    let startEqualIndex = -1;\n    for (let i = fromIndex + 1; i < toIndex; i++) {\n        if (y[i - 1] > y[i] && y[i + 1] > y[i]) {\n            maxima.push({ x: x[i], y: y[i], index: i });\n        }\n        else if (y[i - 1] > y[i] && y[i + 1] === y[i]) {\n            startEqualIndex = i;\n        }\n        else if (y[i - 1] === y[i] && y[i + 1] > y[i]) {\n            const index = Math.floor((i + startEqualIndex) / 2);\n            maxima.push({ x: x[index], y: y[index], index });\n        }\n    }\n    return maxima;\n}\n//# sourceMappingURL=xyMinimaY.js.map","import { xGetFromToIndex } from '../x';\nimport { xyCheck } from './xyCheck';\n/**\n * Finds the min y value in a range and return a {x,y} point\n * @param data - Object that contains property x (an ordered increasing array) and y (an array)\n * @param options - Options\n */\nexport function xyMinYPoint(data, options = {}) {\n    xyCheck(data, { minLength: 1 });\n    const { x, y } = data;\n    if (x.length === 1)\n        return { x: x[0], y: y[0], index: 0 };\n    const { fromIndex, toIndex } = xGetFromToIndex(x, options);\n    let current = {\n        x: x[fromIndex],\n        y: y[fromIndex],\n        index: fromIndex,\n    };\n    for (let i = fromIndex; i <= toIndex; i++) {\n        if (y[i] < current.y)\n            current = { x: x[i], y: y[i], index: i };\n    }\n    return current;\n}\n//# sourceMappingURL=xyMinYPoint.js.map","import { xFindClosestIndex } from '../x';\nimport { xyCheck } from './xyCheck';\n/**\n * Returns an information about a signal.\n *\n *\n * We expect ordered data and equidistant X axis\n * You can use the method helper if required:\n * ML.ArrayPoints.uniqueX\n * ML.ArrayPoints.sortX\n * ML.ArrayPoints.equallySpaced\n * @param data - Object that contains property x (an ordered increasing array) and y (an array)\n * @param options - options\n * @returns - Information about signal\n */\nexport function xyPeakInfo(data, options = {}) {\n    xyCheck(data);\n    const { x, y } = data;\n    if (x === undefined || y === undefined || x.length < 3) {\n        return;\n    }\n    const { target } = options;\n    let { targetIndex } = options;\n    if (targetIndex === undefined && target !== undefined) {\n        targetIndex = xFindClosestIndex(x, target);\n    }\n    if (targetIndex === undefined) {\n        throw new Error('must specify target or targetIndex');\n    }\n    let i = targetIndex;\n    let currentDiff = y[i] - y[i + 1];\n    const multiplier = currentDiff < 0 ? -1 : 1;\n    currentDiff *= multiplier;\n    while (i < x.length - 1) {\n        i++;\n        const newDiff = (y[i] - y[i + 1]) * multiplier;\n        if (newDiff < currentDiff)\n            break;\n        currentDiff = newDiff;\n    }\n    const after = { x: x[i], y: y[i] };\n    i = targetIndex;\n    currentDiff = (y[i] - y[i - 1]) * multiplier;\n    while (i > 1) {\n        i--;\n        const newDiff = (y[i] - y[i - 1]) * multiplier;\n        if (newDiff < currentDiff)\n            break;\n        currentDiff = newDiff;\n    }\n    const before = { x: x[i], y: y[i] };\n    return {\n        inflectionBefore: before,\n        inflectionAfter: after,\n        extrema: { x: x[targetIndex], y: y[targetIndex] },\n        inflectionMiddle: {\n            x: (before.x + after.x) / 2,\n            y: (before.y + after.y) / 2,\n        },\n        width: Math.abs(before.x - after.x),\n    };\n}\n//# sourceMappingURL=xyPeakInfo.js.map","import { xGetTargetIndex } from '../x';\nimport { xyCheck } from './xyCheck';\n/**\n * Find the closest minimum going down hill\n * @param data - Object that contains property x (an ordered increasing array) and y (an array)\n * @param options - options\n * @returns - An object with the x/y value\n */\nexport function xyRealMaxYPoint(data, options = {}) {\n    xyCheck(data);\n    const { x, y } = data;\n    const targetIndex = xGetTargetIndex(x, options);\n    // interpolation to a sin() function\n    if (y[targetIndex - 1] > 0 &&\n        y[targetIndex + 1] > 0 &&\n        y[targetIndex] >= y[targetIndex - 1] &&\n        y[targetIndex] >= y[targetIndex + 1]) {\n        const alpha = 20 * Math.log10(y[targetIndex - 1]);\n        const beta = 20 * Math.log10(y[targetIndex]);\n        const gamma = 20 * Math.log10(y[targetIndex + 1]);\n        const p = (0.5 * (alpha - gamma)) / (alpha - 2 * beta + gamma);\n        return {\n            x: x[targetIndex] + (x[targetIndex] - x[targetIndex - 1]) * p,\n            y: y[targetIndex] - 0.25 * (y[targetIndex - 1] - y[targetIndex + 1]) * p,\n            index: targetIndex,\n        };\n    }\n    else {\n        return {\n            x: x[targetIndex],\n            y: y[targetIndex],\n            index: targetIndex,\n        };\n    }\n}\n//# sourceMappingURL=xyRealMaxYPoint.js.map","import { xGetTargetIndex } from '../x';\nimport { xyCheck } from './xyCheck';\n/**\n * xyRealMinYPoint.\n * @param data - Data.\n * @param options - Options.\n */\nexport function xyRealMinYPoint(data, options = {}) {\n    xyCheck(data);\n    const { x, y } = data;\n    const targetIndex = xGetTargetIndex(x, options);\n    // interpolation to a sin() function\n    if (y[targetIndex - 1] < 0 &&\n        y[targetIndex + 1] < 0 &&\n        y[targetIndex] <= y[targetIndex - 1] &&\n        y[targetIndex] <= y[targetIndex + 1]) {\n        const alpha = 20 * Math.log10(-y[targetIndex - 1]);\n        const beta = 20 * Math.log10(-y[targetIndex]);\n        const gamma = 20 * Math.log10(-y[targetIndex + 1]);\n        const p = (0.5 * (alpha - gamma)) / (alpha - 2 * beta + gamma);\n        return {\n            x: x[targetIndex] + (x[targetIndex] - x[targetIndex - 1]) * p,\n            y: y[targetIndex] - 0.25 * (y[targetIndex - 1] - y[targetIndex + 1]) * p,\n            index: targetIndex,\n        };\n    }\n    else {\n        return {\n            x: x[targetIndex],\n            y: y[targetIndex],\n            index: targetIndex,\n        };\n    }\n}\n//# sourceMappingURL=xyRealMinYPoint.js.map","import { xFindClosestIndex } from '../x';\nimport { zonesNormalize } from '../zones';\nimport { xyCheck } from './xyCheck';\n/**\n * Reduce the number of points while keeping visually the same noise. Practical to\n * display many spectra as SVG. If you want a similar looking spectrum you should still however\n * generate at least 4x the nbPoints that is being displayed.\n *\n * SHOULD NOT BE USED FOR DATA PROCESSING !!!\n * You should rather use ml-xy-equally-spaced to make further processing\n * @param data - Object that contains property x (an ordered increasing array) and y (an array)\n * @param options - options\n * @returns Object with x and y arrays\n */\nexport function xyReduce(data, options = {}) {\n    xyCheck(data);\n    // todo we should check that the single point is really in the range and the zones\n    if (data.x.length < 2) {\n        return {\n            x: Float64Array.from(data.x),\n            y: Float64Array.from(data.y),\n        };\n    }\n    const { x, y } = data;\n    const { from = x[0], to = x.at(-1), nbPoints = 4001, optimize = false, } = options;\n    let { zones = [] } = options;\n    zones = zonesNormalize(zones, { from, to });\n    if (zones.length === 0)\n        zones = [{ from, to }]; // we take everything\n    const { internalZones, totalPoints } = getInternalZones(zones, x);\n    // we calculate the number of points per zone that we should keep\n    if (totalPoints <= nbPoints) {\n        return notEnoughPoints(x, y, internalZones, totalPoints);\n    }\n    // need to xyReduce number of points\n    const ratio = nbPoints / totalPoints;\n    let currentTotal = 0;\n    for (let i = 0; i < internalZones.length - 1; i++) {\n        const zone = internalZones[i];\n        zone.nbPoints = Math.round(zone.nbPoints * ratio);\n        currentTotal += zone.nbPoints;\n    }\n    internalZones.at(-1).nbPoints = nbPoints - currentTotal;\n    const newX = [];\n    const newY = [];\n    for (const zone of internalZones) {\n        if (!zone.nbPoints)\n            continue;\n        appendFromTo(zone.fromIndex, zone.toIndex, zone.nbPoints);\n    }\n    return { x: newX, y: newY };\n    /**\n     * AppendFromTo.\n     * @param fromIndex - From.\n     * @param  toIndex - To.\n     * @param zoneNbPoints - NbPoints.\n     */\n    function appendFromTo(fromIndex, toIndex, zoneNbPoints) {\n        if (zoneNbPoints === 1) {\n            newX.push(x[Math.round((toIndex - fromIndex) / 2)]);\n            newY.push(y[Math.round((toIndex - fromIndex) / 2)]);\n            return;\n        }\n        if (zoneNbPoints === 2) {\n            newX.push(x[fromIndex], x[toIndex]);\n            newY.push(y[fromIndex], y[toIndex]);\n            return;\n        }\n        newX.push(x[fromIndex]);\n        newY.push(y[fromIndex]);\n        if (zoneNbPoints % 2 === 0) {\n            zoneNbPoints = zoneNbPoints / 2 + 1;\n        }\n        else {\n            zoneNbPoints = (zoneNbPoints - 1) / 2 + 1;\n        }\n        // we will need to make some kind of min / max because there are too many points\n        // we will always keep the first point and the last point\n        const slot = (x[toIndex] - x[fromIndex]) / (zoneNbPoints - 1);\n        let currentX = x[fromIndex] + slot;\n        let first = true;\n        let minY = Number.POSITIVE_INFINITY;\n        let xyMaxY = Number.NEGATIVE_INFINITY;\n        for (let i = fromIndex + 1; i <= toIndex; i++) {\n            if (first) {\n                minY = y[i];\n                xyMaxY = y[i];\n                first = false;\n            }\n            else {\n                if (y[i] < minY)\n                    minY = y[i];\n                if (y[i] > xyMaxY)\n                    xyMaxY = y[i];\n            }\n            if (x[i] >= currentX || i === toIndex) {\n                if (optimize) {\n                    if (minY > newY[newX.length - 1]) {\n                        // we can skip the intermediate value\n                    }\n                    else if (xyMaxY < newY[newX.length - 1]) {\n                        // we can skip the intermediate value\n                        xyMaxY = minY;\n                    }\n                    else {\n                        newX.push(currentX - slot / 2);\n                        newY.push(minY);\n                    }\n                }\n                else {\n                    newX.push(currentX - slot / 2);\n                    newY.push(minY);\n                }\n                newX.push(currentX);\n                newY.push(xyMaxY);\n                currentX += slot;\n                first = true;\n            }\n        }\n    }\n}\nexport function notEnoughPoints(x, y, internalZones, totalPoints) {\n    const newX = new Float64Array(totalPoints);\n    const newY = new Float64Array(totalPoints);\n    let index = 0;\n    for (const zone of internalZones) {\n        for (let i = zone.fromIndex; i < zone.toIndex + 1; i++) {\n            newX[index] = x[i];\n            newY[index] = y[i];\n            index++;\n        }\n    }\n    return {\n        x: newX,\n        y: newY,\n    };\n}\nexport function getInternalZones(zones, x) {\n    // for each zone we should know the first index, the last index and the number of points\n    const internalZones = [];\n    let totalPoints = 0;\n    for (const zone of zones) {\n        let fromIndex = xFindClosestIndex(x, zone.from);\n        let toIndex = xFindClosestIndex(x, zone.to);\n        if (fromIndex > 0 && x[fromIndex] > zone.from) {\n            fromIndex--;\n        }\n        if (toIndex < x.length - 1 && x[toIndex] < zone.to) {\n            toIndex++;\n        }\n        const nbPoints = toIndex - fromIndex + 1;\n        internalZones.push({\n            from: zone.from,\n            to: zone.to,\n            fromIndex,\n            toIndex,\n            nbPoints,\n        });\n        totalPoints += nbPoints;\n    }\n    return { internalZones, totalPoints };\n}\n//# sourceMappingURL=xyReduce.js.map","import { zonesNormalize } from '../zones';\nimport { xyCheck } from './xyCheck';\nimport { getInternalZones, notEnoughPoints } from './xyReduce';\n/**\n * Reduce the number of points while keeping visually the same noise. Practical to\n * display many spectra as SVG. This algorithm is designed for non-continuous data.\n * We are expecting peaks to be only positive and the x values to be ordered.\n * SHOULD NOT BE USED FOR DATA PROCESSING !!!\n * @param data - Object that contains property x (an ordered increasing array) and y (an array)\n * @param options - options\n * @returns Object with x and y arrays\n */\nexport function xyReduceNonContinuous(data, options = {}) {\n    xyCheck(data);\n    if (data.x.length < 2) {\n        // todo we should check that the single point is really in the range and the zones\n        return {\n            x: Float64Array.from(data.x),\n            y: Float64Array.from(data.y),\n        };\n    }\n    const { x, y } = data;\n    const { from = x[0], to = x.at(-1), maxApproximateNbPoints = 4001, } = options;\n    let { zones = [] } = options;\n    zones = zonesNormalize(zones, { from, to });\n    if (zones.length === 0)\n        zones = [{ from, to }]; // we take everything\n    const { internalZones, totalPoints } = getInternalZones(zones, x);\n    // we calculate the number of points per zone that we should keep\n    if (totalPoints <= maxApproximateNbPoints) {\n        return notEnoughPoints(x, y, internalZones, totalPoints);\n    }\n    const deltaX = (to - from) / (maxApproximateNbPoints - 1);\n    const newX = [];\n    const newY = [];\n    for (const internalZone of internalZones) {\n        const maxNbPoints = Math.ceil((internalZone.to - internalZone.from) / deltaX) + 1;\n        const fromIndex = internalZone.fromIndex;\n        const toIndex = internalZone.toIndex;\n        if (toIndex - fromIndex + 1 <= maxNbPoints) {\n            // we keep all the points\n            for (let i = fromIndex; i <= toIndex; i++) {\n                newX.push(x[i]);\n                newY.push(y[i]);\n            }\n        }\n        else {\n            // we need to reduce the number of points\n            let currentX = x[fromIndex];\n            let currentY = y[fromIndex];\n            let lastX = currentX + deltaX;\n            newX.push(currentX);\n            newY.push(currentY);\n            for (let i = fromIndex; i <= toIndex; i++) {\n                if (x[i] > lastX) {\n                    // next slot\n                    currentX = x[i];\n                    currentY = y[i];\n                    newX.push(currentX);\n                    newY.push(currentY);\n                    lastX += deltaX;\n                }\n                if (y[i] > currentY) {\n                    currentY = y[i];\n                    newY[newY.length - 1] = currentY;\n                }\n            }\n        }\n    }\n    return {\n        x: newX,\n        y: newY,\n    };\n}\n//# sourceMappingURL=xyReduceNonContinuous.js.map","import { xRolling, xRollingAverage } from '../x';\n/**\n * This function calculates a rolling average.\n * This methods will recalculate the x values by using xRollingAverage\n * @param data - array of points {x,y}\n * @param fct - callback function that from an array returns a value.\n * @param options - options\n */\nexport function xyRolling(data, fct, options = {}) {\n    let { x, y } = data;\n    y = xRolling(y, fct, options);\n    if (x.length !== y.length) {\n        x = xRollingAverage(x, options);\n    }\n    return { x, y };\n}\n//# sourceMappingURL=xyRolling.js.map","import { zonesNormalize } from '../zones';\nimport { xyCheck } from './xyCheck';\n/**\n * Set a value (default 0) to specific zones.\n * @param data - Object that contains property x (an ordered increasing array) and y (an array)\n * @param options - options\n * @returns - Array of points\n */\nexport function xySetYValue(data, options = {}) {\n    xyCheck(data);\n    const { x, y } = data;\n    const { value = 0 } = options;\n    let { zones } = options;\n    if (!Array.isArray(zones) || zones.length === 0) {\n        return data;\n    }\n    zones = zonesNormalize(zones);\n    const newX = x.slice();\n    const newY = y.slice();\n    let currentZone = zones[0];\n    let position = 0;\n    loop: for (let i = 0; i < x.length; i++) {\n        while (currentZone.to < x[i]) {\n            position++;\n            currentZone = zones[position];\n            if (!currentZone) {\n                i = x.length;\n                break loop;\n            }\n        }\n        if (x[i] >= currentZone.from) {\n            newY[i] = value;\n        }\n    }\n    return { x: newX, y: newY };\n}\n//# sourceMappingURL=xySetYValue.js.map","import { xIsMonotonic } from '../x';\n/**\n * This function performs a quick sort of the x array while transforming the y array to preserve the coordinates.\n * @param data - Object that contains property x (Array) and y (Array)\n */\nexport function xySortX(data) {\n    const { x, y } = data;\n    if (xIsMonotonic(x) && x.length > 1) {\n        if (x[0] < x[1]) {\n            return {\n                x: Float64Array.from(x),\n                y: Float64Array.from(y),\n            };\n        }\n        else {\n            return {\n                x: Float64Array.from(x).reverse(),\n                y: Float64Array.from(y).reverse(),\n            };\n        }\n    }\n    const xyObject = Array.from(x, (val, index) => ({\n        x: val,\n        y: y[index],\n    })).sort((a, b) => a.x - b.x);\n    const response = {\n        x: new Float64Array(x.length),\n        y: new Float64Array(y.length),\n    };\n    for (let i = 0; i < x.length; i++) {\n        response.x[i] = xyObject[i].x;\n        response.y[i] = xyObject[i].y;\n    }\n    return response;\n}\n//# sourceMappingURL=xySortX.js.map","import { xyCheck } from './xyCheck';\n/**\n * Convert a DataXY to an array of array containing x,y.\n * @param data - array of points {x,y}\n */\nexport function xyToXYArray(data) {\n    xyCheck(data);\n    const { x, y } = data;\n    const objectArray = [];\n    for (let i = 0; i < x.length; i++) {\n        objectArray.push([x[i], y[i]]);\n    }\n    return objectArray;\n}\n//# sourceMappingURL=xyToXYArray.js.map","import { xyCheck } from './xyCheck';\n/**\n * xyToXYObject.\n * @param data - Array of points {x,y}.\n */\nexport function xyToXYObject(data) {\n    xyCheck(data);\n    const { x, y } = data;\n    const objectArray = [];\n    for (let i = 0; i < x.length; i++) {\n        objectArray.push({ x: x[i], y: y[i] });\n    }\n    return objectArray;\n}\n//# sourceMappingURL=xyToXYObject.js.map","import { xyCheck } from './xyCheck';\nimport { xySortX } from './xySortX';\n/**\n * Ensure x values are unique\n * @param data - Object that contains property x (Array) and y (Array)\n * @param options - Object containing a property algorithm (can be 'sum' or 'average', the latter being the default value), and a property isSorted (boolean indicating if the x-array is sorted).\n */\nexport function xyUniqueX(data, options = {}) {\n    xyCheck(data);\n    if (data.x.length === 0) {\n        return { x: [], y: [] };\n    }\n    const { algorithm = 'average', isSorted = true } = options;\n    if (!isSorted) {\n        data = xySortX(data);\n    }\n    switch (algorithm) {\n        case 'average':\n            return average(data);\n        case 'sum':\n            return sum(data);\n        default:\n            throw new Error(`unknown algorithm: ${String(algorithm)}`);\n    }\n}\n/**\n * Average.\n * @param data - Input.\n * @returns Result.\n */\nfunction average(data) {\n    const x = [];\n    const y = [];\n    let cumulativeY = data.y[0];\n    let divider = 1;\n    for (let i = 1; i < data.x.length; i++) {\n        if (!(data.x[i] === data.x[i - 1])) {\n            x.push(data.x[i - 1]);\n            y.push(cumulativeY / divider);\n            cumulativeY = 0;\n            divider = 0;\n        }\n        cumulativeY += data.y[i];\n        divider++;\n    }\n    x.push(data.x.at(-1));\n    y.push(cumulativeY / divider);\n    return { x, y };\n}\n/**\n * Sum.\n * @param data - Input.\n * @returns Result.\n */\nfunction sum(data) {\n    const x = [];\n    const y = [];\n    let cumulativeY = data.y[0];\n    for (let i = 1; i < data.x.length; i++) {\n        if (!(data.x[i] === data.x[i - 1])) {\n            x.push(data.x[i - 1]);\n            y.push(cumulativeY);\n            cumulativeY = 0;\n        }\n        cumulativeY += data.y[i];\n    }\n    x.push(data.x.at(-1));\n    y.push(cumulativeY);\n    return { x, y };\n}\n//# sourceMappingURL=xyUniqueX.js.map","/**\n * Merge abscissas values on similar ordinates and weight the group of abscissas\n * @param data - object containing 2 properties x and y\n * @param options - options\n * @returns array of merged and weighted points\n */\nexport function xyWeightedMerge(data, options = {}) {\n    const { x, y } = data;\n    const { groupWidth = 0.001 } = options;\n    const merged = { x: [], y: [] };\n    const weightedAbscissa = { x: [], y: [] };\n    let size = 0;\n    let index = 0;\n    while (index < x.length) {\n        if (size === 0 || x[index] - merged.x[size - 1] > groupWidth) {\n            weightedAbscissa.x.push(x[index] * y[index]);\n            weightedAbscissa.y.push(y[index]);\n            merged.x.push(x[index]);\n            merged.y.push(y[index]);\n            index++;\n            size++;\n        }\n        else {\n            weightedAbscissa.x[size - 1] += x[index] * y[index];\n            weightedAbscissa.y[size - 1] += y[index];\n            merged.x[size - 1] = x[index];\n            merged.y[size - 1] += y[index];\n            index++;\n        }\n    }\n    for (let i = 0; i < merged.x.length; i++) {\n        merged.x[i] = weightedAbscissa.x[i] / weightedAbscissa.y[i];\n    }\n    return merged;\n}\n//# sourceMappingURL=xyWeightedMerge.js.map","/**\n * Convert an array of XY arrays to a DataXY object containing x,y arrays\n * @param data - array of arrays [[x,y],[x,y],...]\n */\nexport function xy2ToXY(data) {\n    const xy2 = { x: [], y: [] };\n    for (const xyValue of data) {\n        xy2.x.push(xyValue[0]);\n        xy2.y.push(xyValue[1]);\n    }\n    return xy2;\n}\n//# sourceMappingURL=xy2ToXY.js.map","/**\n * Sort object of array, x has to be monotone.\n * @param data - object of kind {x:[], re:[], im:[]}\n * @returns - sorted array\n */\nexport function xreimSortX(data) {\n    const { x, re, im } = data;\n    if (x.length !== re.length || x.length !== im.length) {\n        throw new TypeError('length of x, re and im must be identical');\n    }\n    if (x.length < 2 || x[0] < x[1])\n        return data;\n    return {\n        x: x.slice(0).reverse(),\n        re: re.slice(0).reverse(),\n        im: im.slice(0).reverse(),\n    };\n}\n//# sourceMappingURL=xreimSortX.js.map","import { reimZeroFilling } from '../reim';\n/**\n * This function make a zero filling to re and im part.\n * @param data - object of kind {x:[], re:[], im:[]}\n * @param totalLength - final number of points\n * @returns - data.\n */\nexport function xreimZeroFilling(data, totalLength) {\n    const { x, re, im } = data;\n    const length = x.length;\n    if (totalLength === 0 || length === totalLength)\n        return data;\n    if (length > totalLength) {\n        return {\n            x: x.slice(0, totalLength),\n            re: re.slice(0, totalLength),\n            im: im.slice(0, totalLength),\n        };\n    }\n    const newX = new Float64Array(totalLength);\n    newX.set(x);\n    const deltaX = (x.at(-1) - x[0]) / (length - 1);\n    for (let i = length; i < totalLength; i++) {\n        newX[i] = newX[i - 1] + deltaX;\n    }\n    return {\n        x: newX,\n        ...reimZeroFilling({ re, im }, totalLength),\n    };\n}\n//# sourceMappingURL=xreimZeroFilling.js.map","/**\n * GetSlots.\n * @param data - data.\n * @param options - Options.\n */\nexport function getSlots(data, options = {}) {\n    const { delta = 1 } = options;\n    const deltaIsFunction = typeof delta === 'function';\n    const possibleXs = Float64Array.from(data.flatMap((spectrum) => spectrum.x)).sort();\n    if (possibleXs.length === 0) {\n        throw new Error('can not process empty arrays');\n    }\n    let currentSlot = {\n        from: possibleXs[0],\n        to: possibleXs[0],\n        average: possibleXs[0],\n        sum: possibleXs[0],\n        number: 1,\n    };\n    const slots = [currentSlot];\n    for (let i = 1; i < possibleXs.length; i++) {\n        const currentDelta = deltaIsFunction ? delta(possibleXs[i]) : delta;\n        if (possibleXs[i] - currentSlot.to <= currentDelta) {\n            currentSlot.to = possibleXs[i];\n            currentSlot.number++;\n            currentSlot.sum += possibleXs[i];\n            currentSlot.average = currentSlot.sum / currentSlot.number;\n        }\n        else {\n            currentSlot = {\n                from: possibleXs[i],\n                to: possibleXs[i],\n                average: possibleXs[i],\n                sum: possibleXs[i],\n                number: 1,\n            };\n            slots.push(currentSlot);\n        }\n    }\n    return slots;\n}\n//# sourceMappingURL=getSlots.js.map","import { xyJoinX } from '../xy';\nimport { getSlots } from './utils/getSlots';\n/**\n * Aligns data, can be used for spectra\n * @param data - data\n * @param options - Options\n */\nexport function xyArrayAlign(data, options = {}) {\n    const { delta = 1, requiredY = false } = options;\n    data = data.map((spectrum) => xyJoinX(spectrum, { delta }));\n    const slots = getSlots(data, { delta });\n    const x = Float64Array.from(slots.map((slot) => slot.average));\n    const ys = Array.from(data, () => new Float64Array(x.length));\n    const positions = new Uint32Array(data.length);\n    for (let i = 0; i < slots.length; i++) {\n        const slot = slots[i];\n        for (let j = 0; j < data.length; j++) {\n            const spectrum = data[j];\n            while (positions[j] < spectrum.x.length &&\n                spectrum.x[positions[j]] <= slot.to) {\n                ys[j][i] += spectrum.y[positions[j]];\n                positions[j]++;\n            }\n        }\n    }\n    if (requiredY)\n        return filterRequiredY(x, ys);\n    return { x, ys };\n}\nfunction filterRequiredY(x, ys) {\n    const newX = [];\n    const newYs = Array.from(ys, () => []);\n    for (let i = 0; i < x.length; i++) {\n        if (ys.every((y) => y[i] !== 0)) {\n            newX.push(x[i]);\n            for (let j = 0; j < ys.length; j++) {\n                newYs[j].push(ys[j][i]);\n            }\n        }\n    }\n    return { x: newX, ys: newYs };\n}\n//# sourceMappingURL=xyArrayAlign.js.map","/**\n * Merge DataXY\n * We have an array of DataXY and the goal is to merge all the values for which the deltaX is small or equal to delta.\n * X values are weighted average\n * @param data - data\n * @param options - Options\n */\nexport function xyArrayWeightedMerge(data, options = {}) {\n    let { delta = 1 } = options;\n    if (typeof delta === 'number') {\n        const deltaNumber = delta;\n        delta = () => deltaNumber;\n    }\n    data = data.filter((spectrum) => spectrum.x.length > 0);\n    if (data.length === 0)\n        return { x: [], y: [] };\n    const x = [];\n    const y = [];\n    const positions = new Array(data.length).fill(0);\n    const point = { x: 0, y: 0 };\n    nextValue(data, positions, point);\n    const slot = {\n        maxX: point.x + delta(point.x),\n        sumY: point.y,\n        sumXY: point.y * point.x,\n    };\n    while (data.length > 0) {\n        nextValue(data, positions, point);\n        const sameSlot = point.x <= slot.maxX;\n        if (!sameSlot) {\n            if (slot.sumY > 0) {\n                x.push(slot.sumXY / slot.sumY);\n                y.push(slot.sumY);\n            }\n            slot.sumY = 0;\n            slot.sumXY = 0;\n        }\n        slot.sumY += point.y;\n        slot.sumXY += point.x * point.y;\n        slot.maxX = point.x + delta(point.x);\n        if (data.length === 0 && slot.sumY > 0) {\n            x.push(slot.sumXY / slot.sumY);\n            y.push(slot.sumY);\n        }\n    }\n    return { x, y };\n}\n/**\n * NextValue.\n * @param data - data.\n * @param positions - Positions array.\n * @param point - Point.\n */\nfunction nextValue(data, positions, point) {\n    let minIndex = 0;\n    let minX = data[0].x[positions[0]];\n    for (let i = 1; i < data.length; i++) {\n        const currentX = data[i].x[positions[i]];\n        if (currentX < minX) {\n            minX = currentX;\n            minIndex = i;\n        }\n    }\n    point.x = minX;\n    point.y = data[minIndex].y[positions[minIndex]];\n    positions[minIndex]++;\n    if (positions[minIndex] === data[minIndex].x.length) {\n        positions.splice(minIndex, 1);\n        data.splice(minIndex, 1);\n    }\n}\n//# sourceMappingURL=xyArrayWeightedMerge.js.map","import { xyArrayWeightedMerge } from '../xyArrayWeightedMerge';\n/**\n * GetSlotsToFirst.\n * @param data - data.\n * @param options - Options.\n */\nexport function getSlotsToFirst(data, options = {}) {\n    const { delta = 1 } = options;\n    const deltaIsFunction = typeof delta === 'function';\n    const firstXs = data[0].x;\n    const slots = [];\n    // we first create the slots based on the first spectrum\n    for (const element of firstXs) {\n        const currentDelta = deltaIsFunction ? delta(element) : delta;\n        slots.push({\n            from: element - currentDelta,\n            to: element + currentDelta,\n            value: element,\n        });\n    }\n    const otherXs = xyArrayWeightedMerge(data.slice(1), options).x;\n    let currentPosition = 0;\n    for (const slot of slots) {\n        while (otherXs[currentPosition] < slot.to &&\n            currentPosition < otherXs.length) {\n            if (otherXs[currentPosition] < slot.from) {\n                const currentDelta = deltaIsFunction\n                    ? delta(otherXs[currentPosition])\n                    : delta;\n                slots.push({\n                    from: otherXs[currentPosition] - currentDelta,\n                    to: otherXs[currentPosition] + currentDelta,\n                    value: otherXs[currentPosition],\n                });\n            }\n            currentPosition++;\n        }\n    }\n    for (let i = currentPosition; i < otherXs.length; i++) {\n        const currentDelta = deltaIsFunction ? delta(otherXs[i]) : delta;\n        slots.push({\n            from: otherXs[i] - currentDelta,\n            to: otherXs[i] + currentDelta,\n            value: otherXs[i],\n        });\n    }\n    slots.sort((a, b) => a.value - b.value);\n    // we prevent slots overlap in the first spectrum\n    for (let i = 0; i < slots.length - 1; i++) {\n        if (slots[i].to > slots[i + 1].from) {\n            const middle = (slots[i].value + slots[i + 1].value) / 2;\n            slots[i].to = middle;\n            slots[i + 1].from = middle;\n        }\n    }\n    return slots;\n}\n//# sourceMappingURL=getSlotsToFirst.js.map","import { getSlotsToFirst } from './utils/getSlotsToFirst';\n/**\n * We align all the data/spectra to the first array of X.\n * The alignment is based on the X values of the first spectrum and the `delta` error allowed.\n * If some x values are missing in the first spectrum we will add them\n * @param data - data\n * @param options - options\n */\nexport function xyArrayAlignToFirst(data, options = {}) {\n    const { delta = 1 } = options;\n    const slots = getSlotsToFirst(data, { delta });\n    const x = Float64Array.from(slots.map((slot) => slot.value));\n    const ys = Array.from(data, () => new Float64Array(x.length));\n    const positions = new Uint32Array(data.length);\n    for (let i = 0; i < slots.length; i++) {\n        const slot = slots[i];\n        for (let j = 0; j < data.length; j++) {\n            const spectrum = data[j];\n            while (positions[j] < spectrum.x.length &&\n                spectrum.x[positions[j]] < slot.to) {\n                ys[j][i] += spectrum.y[positions[j]];\n                positions[j]++;\n            }\n        }\n    }\n    return { x, ys };\n}\n//# sourceMappingURL=xyArrayAlignToFirst.js.map","import { xyJoinX } from '../xy';\nimport { getSlots } from './utils/getSlots';\n/**\n * Merge DataXY\n * We have an array of DataXY and the goal is to merge all the values that are the closest possible\n * @param data - data\n * @param options - Options\n */\nexport function xyArrayMerge(data, options = {}) {\n    const { delta = 1 } = options;\n    // We start by checking that the data/spectra don't have peaks too close and we simplify them.\n    data = data.map((spectrum) => xyJoinX(spectrum, { delta }));\n    // At first, we will calculate the X values (simple mean).\n    const slots = getSlots(data, { delta });\n    const x = Float64Array.from(slots.map((slot) => slot.average));\n    const y = new Float64Array(x.length);\n    const positions = new Uint32Array(data.length);\n    for (let i = 0; i < slots.length; i++) {\n        const slot = slots[i];\n        for (let j = 0; j < data.length; j++) {\n            const spectrum = data[j];\n            while (positions[j] < spectrum.x.length &&\n                spectrum.x[positions[j]] <= slot.to) {\n                y[i] += spectrum.y[positions[j]];\n                positions[j]++;\n            }\n        }\n    }\n    return { x, y };\n}\n//# sourceMappingURL=xyArrayMerge.js.map","/**\n * Throws an error if it's not an array of x,y objects.\n * Only checks the first element.\n * @param points - List of points.\n * @param options - Additional checks.\n */\nexport function xyObjectCheck(points, options = {}) {\n    const { minLength = 0 } = options;\n    if (!Array.isArray(points)) {\n        throw new Error('points must be an array of {x,y} objects');\n    }\n    if (points.length > 0 &&\n        (typeof points[0].x !== 'number' || typeof points[0].y !== 'number')) {\n        throw new Error('points must be an array of {x,y} objects');\n    }\n    if (minLength && points.length < minLength) {\n        throw new Error(`points must have a length of at least ${minLength}`);\n    }\n}\n//# sourceMappingURL=xyObjectCheck.js.map","import { xyObjectCheck } from './xyObjectCheck';\n/**\n * Finds the max x value and return a {x,y,index} point\n * @param points - Object that contains property x (an ordered increasing array) and y (an array)\n */\nexport function xyObjectMaxXPoint(points = []) {\n    xyObjectCheck(points);\n    if (points.length === 0)\n        return { x: 0, y: 0 };\n    let current = {\n        x: points[0].x,\n        y: points[0].y,\n        index: 0,\n    };\n    for (let i = 1; i < points.length; i++) {\n        if (points[i].x > current.x) {\n            current = {\n                x: points[i].x,\n                y: points[i].y,\n                index: i,\n            };\n        }\n    }\n    return current;\n}\n//# sourceMappingURL=xyObjectMaxXPoint.js.map","import { xyObjectCheck } from './xyObjectCheck';\n/**\n * Finds the min x value and return a {x,y,index} point\n * @param points - Object that contains property x (an ordered increasing array) and y (an array)\n */\nexport function xyObjectMinXPoint(points = []) {\n    xyObjectCheck(points);\n    if (points.length === 0)\n        return { x: 0, y: 0 };\n    let current = {\n        x: points[0].x,\n        y: points[0].y,\n        index: 0,\n    };\n    for (let i = 1; i < points.length; i++) {\n        if (points[i].x < current.x) {\n            current = {\n                x: points[i].x,\n                y: points[i].y,\n                index: i,\n            };\n        }\n    }\n    return current;\n}\n//# sourceMappingURL=xyObjectMinXPoint.js.map","import { xyObjectMaxXPoint } from './xyObjectMaxXPoint';\nimport { xyObjectMinXPoint } from './xyObjectMinXPoint';\n/**\n * Filter the array by taking the higher points (max y value) and only.\n * Keep one per slot. There are 2 different slots, the smallest one will have the\n * new property `close` to true\n * @param points - array of all the points\n * @param options - Options\n * @returns - copy of points with 'close' property\n */\nexport function xyObjectBestPoints(points, options = {}) {\n    const { from = xyObjectMinXPoint(points).x, to = xyObjectMaxXPoint(points).x, limit = 20, threshold = 0.01, numberCloseSlots = 50, numberSlots = 10, } = options;\n    const slot = (to - from) / numberSlots;\n    const closeSlot = (to - from) / numberCloseSlots;\n    let selected = points\n        .filter((point) => point.x >= from && point.x <= to)\n        .map((point) => {\n        return {\n            point,\n            monoisotopic: false,\n        };\n    });\n    selected = selected.sort((a, b) => {\n        if (a.monoisotopic && !b.monoisotopic)\n            return -1;\n        if (b.monoisotopic && !a.monoisotopic)\n            return 1;\n        return b.point.y - a.point.y;\n    });\n    const toReturn = [];\n    if (selected.length === 0)\n        return [];\n    const minY = selected[0].point.y * threshold;\n    peakLoop: for (const item of selected) {\n        if (item.point.y < minY) {\n            if (item.monoisotopic) {\n                continue;\n            }\n            else {\n                break;\n            }\n        }\n        let close = false;\n        for (const existing of toReturn) {\n            if (Math.abs(existing.x - item.point.x) < closeSlot) {\n                continue peakLoop;\n            }\n            if (Math.abs(existing.x - item.point.x) < slot) {\n                close = true;\n            }\n        }\n        const newPeak = { ...item.point, close };\n        toReturn.push(newPeak);\n        if (toReturn.length === limit)\n            break;\n    }\n    return toReturn.sort((a, b) => a.x - b.x);\n}\n//# sourceMappingURL=xyObjectBestPoints.js.map","/**\n * xyObjectJoinX.\n * @param points - Array of growing points {x,y}.\n * @param options - Options.\n */\nexport function xyObjectJoinX(points, options = {}) {\n    const { xError = Number.EPSILON } = options;\n    // when we join we will use the center of mass\n    const result = [];\n    let current = {\n        x: Number.MIN_SAFE_INTEGER,\n        y: 0,\n    };\n    for (const point of points) {\n        if (point.x - current.x <= xError) {\n            // weighted sum\n            if (current.y !== 0 || point.y !== 0) {\n                current.x =\n                    (point.y / (current.y + point.y)) * (point.x - current.x) + current.x;\n                current.y += point.y;\n            }\n        }\n        else {\n            current = {\n                x: point.x,\n                y: point.y,\n            };\n            result.push(current);\n        }\n    }\n    return result;\n}\n//# sourceMappingURL=xyObjectJoinX.js.map","import { xyObjectCheck } from './xyObjectCheck';\n/**\n * Finds the max y value and return a {x,y,index} point\n * @param points - Object that contains property x (an ordered increasing array) and y (an array)\n * @returns max point\n */\nexport function xyObjectMaxYPoint(points = []) {\n    xyObjectCheck(points);\n    if (points.length === 0)\n        return { x: 0, y: 0 };\n    let current = {\n        x: points[0].x,\n        y: points[0].y,\n        index: 0,\n    };\n    for (let i = 1; i < points.length; i++) {\n        if (points[i].y > current.y) {\n            current = {\n                x: points[i].x,\n                y: points[i].y,\n                index: i,\n            };\n        }\n    }\n    return current;\n}\n//# sourceMappingURL=xyObjectMaxYPoint.js.map","import { xyObjectCheck } from './xyObjectCheck';\n/**\n * Returns all min and max values of an array of points.\n * @param points - Array of points {x,y}.\n * @returns - Object with the 4 extrema.\n */\nexport function xyObjectMinMaxValues(points) {\n    xyObjectCheck(points, { minLength: 1 });\n    let minX = points[0].x;\n    let maxX = minX;\n    let minY = points[0].y;\n    let maxY = minY;\n    for (const point of points) {\n        if (point.x < minX)\n            minX = point.x;\n        if (point.x > maxX)\n            maxX = point.x;\n        if (point.y < minY)\n            minY = point.y;\n        if (point.y > maxY)\n            maxY = point.y;\n    }\n    return { minX, maxX, minY, maxY };\n}\n//# sourceMappingURL=xyObjectMinMaxValues.js.map","import { xyObjectCheck } from './xyObjectCheck';\n/**\n * Finds the min y value and return a {x,y,index} point\n * @param points - Object that contains property x (an ordered increasing array) and y (an array)\n */\nexport function xyObjectMinYPoint(points = []) {\n    xyObjectCheck(points);\n    if (points.length === 0)\n        return { x: 0, y: 0 };\n    let current = {\n        x: points[0].x,\n        y: points[0].y,\n        index: 0,\n    };\n    for (let i = 1; i < points.length; i++) {\n        if (points[i].y < current.y) {\n            current = {\n                x: points[i].x,\n                y: points[i].y,\n                index: i,\n            };\n        }\n    }\n    return current;\n}\n//# sourceMappingURL=xyObjectMinYPoint.js.map","import { xNormed } from '../x/xNormed';\n/**\n * Resize the Y values of the points to be normalized.\n * @param points - array of points {x,y}\n * @param options\n * @returns - array of points {x,y} with normalized Y values\n */\nexport function xyObjectNormedY(points, options) {\n    points = structuredClone(points);\n    const ys = points.map((point) => point.y);\n    const normalizedYs = xNormed(ys, options);\n    for (let i = 0; i < points.length; i++) {\n        points[i].y = normalizedYs[i];\n    }\n    return points;\n}\n//# sourceMappingURL=xyObjectNormedY.js.map","/**\n * xyObjectSlotX\n * @param points - Array of growing points {x,y}.\n * @param options - Options.\n */\nexport function xyObjectSlotX(points, options = {}) {\n    const { slotWidth = 1 } = options;\n    const halfSlot = slotWidth / 2;\n    // when we join we will use the center of mass\n    const result = [];\n    let current = {\n        x: Number.NEGATIVE_INFINITY,\n        y: 0,\n    };\n    for (const point of points) {\n        const slot = point.x - ((point.x + halfSlot) % slotWidth) + halfSlot;\n        if (Math.abs(current.x - slot) > Number.EPSILON) {\n            current = {\n                x: slot,\n                y: 0,\n            };\n            result.push(current);\n        }\n        current.y += point.y;\n    }\n    return result;\n}\n//# sourceMappingURL=xyObjectSlotX.js.map","/**\n * Sorts an array of points in-place.\n * @param points - array of points {x,y}\n * @returns - sorted array of points {x,y}\n */\nexport function xyObjectSortX(points) {\n    return points.sort((a, b) => a.x - b.x);\n}\n//# sourceMappingURL=xyObjectSortX.js.map","import { xyObjectCheck } from './xyObjectCheck';\n/**\n * Calculate the sum of Y values.\n * @param points - Object that contains property x and y (an array)\n */\nexport function xyObjectSumY(points = []) {\n    xyObjectCheck(points);\n    let sum = 0;\n    for (const point of points) {\n        sum += point.y;\n    }\n    return sum;\n}\n//# sourceMappingURL=xyObjectSumY.js.map","/**\n * xyObjectToXY.\n * @param points - Array of points {x,y}.\n */\nexport function xyObjectToXY(points) {\n    return {\n        x: points.map((entry) => entry.x),\n        y: points.map((entry) => entry.y),\n    };\n}\n//# sourceMappingURL=xyObjectToXY.js.map","import { xMedian } from '../x';\n/**\n * Returns the median of the absolute matrix.\n * @param matrix\n */\nexport function matrixAbsoluteMedian(matrix) {\n    const nbColumns = matrix[0].length;\n    const flatten = new Float64Array(matrix.length * nbColumns);\n    for (let row = 0; row < matrix.length; row++) {\n        const currentRow = row * nbColumns;\n        for (let column = 0; column < nbColumns; column++) {\n            const value = matrix[row][column];\n            flatten[currentRow + column] = Math.abs(value);\n        }\n    }\n    return xMedian(flatten);\n}\n//# sourceMappingURL=matrixAbsoluteMedian.js.map","import { createNumberArray } from '../utils';\n/**\n * Create a new matrix based on the size of the current one or by using specific dimensions.\n * @param options\n */\nexport function matrixCreateEmpty(options) {\n    const { matrix, nbRows = matrix?.length || 1, nbColumns = matrix?.[0].length || 1, ArrayConstructor = Float64Array, } = options;\n    const newMatrix = [];\n    for (let row = 0; row < nbRows; row++) {\n        newMatrix.push(createNumberArray(ArrayConstructor, nbColumns));\n    }\n    return newMatrix;\n}\n//# sourceMappingURL=matrixCreateEmpty.js.map","import { xMaxValue } from '../x';\nimport { matrixCreateEmpty } from './matrixCreateEmpty';\n/**\n * Numerically encodes the strings in the matrix with an encoding dictionary.\n * @param matrixInitial - Original matrix before encoding.\n * @param dictionary - Dictionary against which to do the encoding.\n * @returns - Encoded matrix.\n */\nexport function matrixApplyNumericalEncoding(matrixInitial, dictionary) {\n    const matrix = matrixCreateEmpty({\n        nbRows: matrixInitial.length,\n        nbColumns: matrixInitial[0].length,\n        ArrayConstructor: Array,\n    });\n    const arrayOfValues = [];\n    for (const key in dictionary) {\n        arrayOfValues.push(dictionary[key]);\n    }\n    let k = xMaxValue(arrayOfValues);\n    for (let i = 0; i < matrix.length; i++) {\n        for (let j = 0; j < matrix[0].length; j++) {\n            if (typeof matrix[i][j] === 'string') {\n                if (matrix[i][j] in dictionary) {\n                    matrix[i][j] = dictionary[matrix[i][j]];\n                }\n                else {\n                    k++;\n                    dictionary[matrix[i][j]] = k;\n                    matrix[i][j] = k;\n                }\n            }\n        }\n    }\n    return matrix;\n}\n//# sourceMappingURL=matrixApplyNumericalEncoding.js.map","import { xCorrelation } from '../x';\nexport function matrixAutoCorrelation(matrix, index = 0) {\n    const nbRows = matrix.length;\n    const nbColumns = matrix[0].length;\n    if (nbRows < 2) {\n        throw new Error('can not calculate info if matrix contains less than 2 rows');\n    }\n    const targetArray = new Float64Array(nbRows);\n    const sourceArray = new Float64Array(nbRows);\n    const result = new Float64Array(nbColumns);\n    for (let j = 0; j < nbRows; j++) {\n        targetArray[j] = matrix[j][index];\n    }\n    for (let i = 0; i < nbColumns; i++) {\n        for (let j = 0; j < nbRows; j++) {\n            sourceArray[j] = matrix[j][i];\n        }\n        result[i] = xCorrelation(targetArray, sourceArray);\n    }\n    return result;\n}\n//# sourceMappingURL=matrixAutoCorrelation.js.map","export function matrixBoxPlot(matrix) {\n    const nbRows = matrix.length;\n    const nbColumns = matrix[0].length;\n    if (nbRows < 5) {\n        throw new Error('can not calculate info if matrix contains less than 5 rows');\n    }\n    const info = {\n        q1: new Float64Array(nbColumns),\n        median: new Float64Array(nbColumns),\n        q3: new Float64Array(nbColumns),\n        min: Float64Array.from(matrix[0]),\n        max: Float64Array.from(matrix.at(-1)),\n    };\n    const columnArray = new Float64Array(matrix.length);\n    for (let column = 0; column < nbColumns; column++) {\n        for (let row = 0; row < nbRows; row++) {\n            columnArray[row] = matrix[row][column];\n        }\n        let q1max = 0;\n        let q3min = 0;\n        if (nbRows % 2 === 1) {\n            // odd\n            const middle = (nbRows - 1) / 2;\n            info.median[column] = columnArray[middle];\n            q1max = middle - 1;\n            q3min = middle + 1;\n        }\n        else {\n            // even\n            q3min = nbRows / 2;\n            q1max = q3min - 1;\n            info.median[column] = (columnArray[q1max] + columnArray[q3min]) / 2;\n        }\n        if (q1max % 2 === 0) {\n            info.q1[column] = columnArray[q1max / 2];\n            info.q3[column] = columnArray[(nbRows + q3min - 1) / 2];\n        }\n        else {\n            info.q1[column] =\n                (columnArray[(q1max + 1) / 2] + columnArray[(q1max - 1) / 2]) / 2;\n            const middleOver = (columnArray.length + q3min) / 2;\n            info.q3[column] =\n                (columnArray[middleOver] + columnArray[middleOver - 1]) / 2;\n        }\n    }\n    return info;\n}\n//# sourceMappingURL=matrixBoxPlot.js.map","import { matrixCreateEmpty } from './matrixCreateEmpty';\n/**\n * Center mean of matrix columns.\n * @param matrix - matrix [rows][cols]\n */\nexport function matrixCenterZMean(matrix) {\n    const nbColumns = matrix[0].length;\n    const nbRows = matrix.length;\n    const newMatrix = matrixCreateEmpty({ nbColumns, nbRows });\n    for (let column = 0; column < nbColumns; column++) {\n        let mean = 0;\n        for (let row = 0; row < nbRows; row++) {\n            mean += matrix[row][column];\n        }\n        mean /= nbRows;\n        for (let row = 0; row < nbRows; row++) {\n            newMatrix[row][column] = matrix[row][column] - mean;\n        }\n    }\n    return newMatrix;\n}\n//# sourceMappingURL=matrixCenterZMean.js.map","export function matrixCheck(data) {\n    if (data.length === 0 || data[0].length === 0) {\n        throw new RangeError('matrix must contain data');\n    }\n    const firstLength = data[0].length;\n    for (let i = 1; i < data.length; i++) {\n        if (data[i].length !== firstLength) {\n            throw new RangeError('all rows must has the same length');\n        }\n    }\n}\n//# sourceMappingURL=matrixCheck.js.map","/**\n * Clone a matrix.\n * @param matrix\n */\nexport function matrixClone(matrix) {\n    return matrix.map((row) => row.slice(0));\n}\n//# sourceMappingURL=matrixClone.js.map","import { Matrix } from 'ml-matrix';\nimport { xCorrelation } from '../x';\n/**\n * Calculates a correlation matrix based on the columns of the initial matrix.\n * @param A - matrix [rows][cols]\n */\nexport function matrixColumnsCorrelation(A) {\n    const B = new Matrix(A).transpose();\n    const result = [];\n    for (let i = 0; i < B.rows; i++) {\n        result.push(new Float64Array(B.rows));\n    }\n    for (let i = 0; i < B.rows; i++) {\n        for (let j = i; j < B.rows; j++) {\n            const correlation = xCorrelation(B.getRow(i), B.getRow(j));\n            result[i][j] = correlation;\n            result[j][i] = correlation;\n        }\n    }\n    return result;\n}\n//# sourceMappingURL=matrixColumnsCorrelation.js.map","/**\n * The MIT License (MIT)\n *\n * Copyright (c) 2013 Mikola Lysenko\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n/**\n * The reverse Cuthill-Mckee method is a fast and effective preconditioner for reducing the bandwidth of sparse linear systems.\n * When solving a positive semidefinite linear system using Cholesky factorization, it greatly reduces fill-in.\n * It is a direct conversion to TS from {@link github.com/mikolalysenko/cuthill-mckee}\n * @param list - lower triangular non zeros from a symmetric sparse matrix.\n * @param dimension - matrix dimension\n * @returns A Float64Array where the value at each index represents the new position of the node\n *          in the bandwidth-reduced ordering.\n */\nexport function matrixCuthillMckee(list, dimension) {\n    const adj = new Array(dimension);\n    const visited = new Array(dimension).fill(false);\n    for (let i = 0; i < dimension; ++i) {\n        adj[i] = [];\n    }\n    for (const l of list) {\n        adj[l[0]].push(l[1]);\n    }\n    const toVisit = new Float64Array(dimension);\n    let eol = 0;\n    let ptr = 0;\n    for (let i = 0; i < dimension; ++i) {\n        if (visited[i]) {\n            continue;\n        }\n        toVisit[eol++] = i;\n        visited[i] = true;\n        while (ptr < eol) {\n            const v = toVisit[ptr++];\n            const nbhd = Float64Array.from(adj[v]).sort();\n            for (const u of nbhd) {\n                if (visited[u]) {\n                    continue;\n                }\n                visited[u] = true;\n                toVisit[eol++] = u;\n            }\n        }\n    }\n    const result = new Float64Array(dimension);\n    for (let i = 0; i < dimension; ++i) {\n        result[toVisit[i]] = i;\n    }\n    return result;\n}\n//# sourceMappingURL=matrixCuthillMckee.js.map","/**\n * Checks if the specified submatrix boundaries are within the valid range of the given matrix.\n * @param matrix - The matrix to check the boundaries against.\n * @param boundaries - The boundaries of the submatrix.\n * @throws {RangeError} If any of the specified boundaries are out of the matrix's range.\n */\nexport function matrixCheckRanges(matrix, boundaries) {\n    const { startRow, endRow, startColumn, endColumn } = boundaries;\n    if (startRow > endRow ||\n        startColumn > endColumn ||\n        startRow < 0 ||\n        startRow >= matrix.length ||\n        endRow < 0 ||\n        endRow >= matrix.length ||\n        startColumn < 0 ||\n        startColumn >= matrix[0].length ||\n        endColumn < 0 ||\n        endColumn >= matrix[0].length) {\n        throw new RangeError('submatrix indices are out of range');\n    }\n}\n//# sourceMappingURL=matrixCheckRanges.js.map","import { matrixCheckRanges } from './matrixCheckRanges';\n/**\n * Get a subMatrix from matrix, the function checks if the subMatrix\n * lies within the dimensions of the matrix.\n * @param matrix - The original matrix from which the subMatrix will be extracted.\n * @param options - Options to define the subMatrix boundaries and duplication behavior.\n * @returns The subMatrix extracted from the original matrix.\n */\nexport function matrixGetSubMatrix(matrix, options) {\n    const { startRow = 0, endRow = matrix.length - 1, startColumn = 0, endColumn = matrix[0].length - 1, duplicate = true, } = options;\n    matrixCheckRanges(matrix, { startColumn, startRow, endColumn, endRow });\n    const nbRows = endRow - startRow + 1;\n    const subMatrix = [];\n    if (duplicate) {\n        for (let i = 0; i < nbRows; i++) {\n            subMatrix.push(matrix[startRow + i].slice(startColumn, endColumn + 1));\n        }\n    }\n    else {\n        for (let i = 0; i < nbRows; i++) {\n            subMatrix.push(matrix[startRow + i].subarray(startColumn, endColumn + 1));\n        }\n    }\n    return subMatrix;\n}\n//# sourceMappingURL=matrixGetSubMatrix.js.map","/**\n * Get min and max of the absolute values of Z.\n * @param matrix - matrix [rows][cols].\n */\nexport function matrixMinMaxAbsoluteZ(matrix) {\n    if (matrix.length === 0 || matrix[0].length === 0) {\n        throw new Error('matrixMinMaxAbsoluteZ requires at least 1 row and 1 column');\n    }\n    const nbRows = matrix.length;\n    const nbColumns = matrix[0].length;\n    let min = Number.POSITIVE_INFINITY;\n    let max = Number.NEGATIVE_INFINITY;\n    for (let column = 0; column < nbColumns; column++) {\n        for (let row = 0; row < nbRows; row++) {\n            let value = matrix[row][column];\n            if (value < 0)\n                value *= -1;\n            if (value < min)\n                min = value;\n            if (value > max)\n                max = value;\n        }\n    }\n    return { min, max };\n}\n//# sourceMappingURL=matrixMinMaxAbsoluteZ.js.map","import { matrixCheck } from './matrixCheck';\n/**\n * Get min and max Z.\n * @param matrix - matrix [rows][cols].\n */\nexport function matrixMinMaxZ(matrix) {\n    matrixCheck(matrix);\n    const nbRows = matrix.length;\n    const nbColumns = matrix[0].length;\n    let min = matrix[0][0];\n    let max = matrix[0][0];\n    for (let column = 0; column < nbColumns; column++) {\n        for (let row = 0; row < nbRows; row++) {\n            if (matrix[row][column] < min)\n                min = matrix[row][column];\n            if (matrix[row][column] > max)\n                max = matrix[row][column];\n        }\n    }\n    return { min, max };\n}\n//# sourceMappingURL=matrixMinMaxZ.js.map","import { xHistogram } from '../x';\nimport { matrixMinMaxAbsoluteZ } from './matrixMinMaxAbsoluteZ';\nimport { matrixMinMaxZ } from './matrixMinMaxZ';\n/**\n * Calculates a histogram of defined number of slots.\n * @param matrix - matrix [rows][cols].\n * @param options - options\n * @returns - Result of the histogram.\n */\nexport function matrixHistogram(matrix, options = {}) {\n    let { min, max } = options;\n    const { absolute, logBaseX, logBaseY, histogram, nbSlots, centerX } = options;\n    if (matrix.length === 0 || matrix[0].length === 0) {\n        throw new Error('matrix must have at least one column and one row');\n    }\n    if (min === undefined || max === undefined) {\n        const minMax = absolute\n            ? matrixMinMaxAbsoluteZ(matrix)\n            : matrixMinMaxZ(matrix);\n        if (min === undefined) {\n            min =\n                logBaseX && minMax.min\n                    ? Math.log(minMax.min) / Math.log(logBaseX)\n                    : minMax.min;\n        }\n        if (max === undefined) {\n            max =\n                logBaseX && minMax.max\n                    ? Math.log(minMax.max) / Math.log(logBaseX)\n                    : minMax.max;\n        }\n    }\n    const xHistogramOptions = {\n        histogram,\n        nbSlots,\n        centerX,\n        absolute,\n        logBaseX,\n        // Skip logBaseY as it's handled below.\n        min,\n        max,\n    };\n    const finalHistogram = xHistogram(matrix[0], xHistogramOptions);\n    xHistogramOptions.histogram = finalHistogram;\n    const nbRows = matrix.length;\n    for (let row = 1; row < nbRows; row++) {\n        xHistogram(matrix[row], xHistogramOptions);\n    }\n    const y = finalHistogram.y;\n    if (logBaseY) {\n        const logOfBase = Math.log10(logBaseY);\n        for (let i = 0; i < y.length; i++) {\n            y[i] = Math.log10(y[i] + 1) / logOfBase;\n        }\n    }\n    return finalHistogram;\n}\n//# sourceMappingURL=matrixHistogram.js.map","/**\n * Returns the max absolute values of Z.\n * @param matrix - matrix [rows][cols].\n */\nexport function matrixMaxAbsoluteZ(matrix) {\n    if (matrix.length === 0 || matrix[0].length === 0) {\n        throw new Error('matrix must have at least 1 row and 1 column');\n    }\n    const nbRows = matrix.length;\n    const nbColumns = matrix[0].length;\n    let max = Number.NEGATIVE_INFINITY;\n    for (let column = 0; column < nbColumns; column++) {\n        for (let row = 0; row < nbRows; row++) {\n            const value = Math.abs(matrix[row][column]);\n            if (value > max)\n                max = value;\n        }\n    }\n    return max;\n}\n//# sourceMappingURL=matrixMaxAbsoluteZ.js.map","import { matrixCheck } from './matrixCheck';\n/**\n * Convert a matrix to a flat Float64Array.\n * @param matrix\n */\nexport function matrixToArray(matrix) {\n    matrixCheck(matrix);\n    const nbColumns = matrix[0].length;\n    const flatten = new Float64Array(matrix.length * nbColumns);\n    for (let row = 0; row < matrix.length; row++) {\n        const currentRow = row * nbColumns;\n        for (let column = 0; column < nbColumns; column++) {\n            flatten[currentRow + column] = matrix[row][column];\n        }\n    }\n    return flatten;\n}\n//# sourceMappingURL=matrixToArray.js.map","import { xMedian } from '../x';\nimport { matrixToArray } from './matrixToArray';\n/**\n * Returns the median of the matrix.\n * @param matrix\n */\nexport function matrixMedian(matrix) {\n    return xMedian(matrixToArray(matrix));\n}\n//# sourceMappingURL=matrixMedian.js.map","import { xNoiseStandardDeviation } from '../x';\nimport { matrixToArray } from './matrixToArray';\n/**\n * Determine noise level using MAD https://en.wikipedia.org/wiki/Median_absolute_deviation\n * Constant to convert mad to sd calculated using https://www.wolframalpha.com/input?i=sqrt%282%29+inverse+erf%280.5%29\n * This assumes a gaussian distribution of the noise.\n * @param matrix\n * @returns Noise level corresponding to one standard deviation.\n */\nexport function matrixNoiseStandardDeviation(matrix) {\n    return xNoiseStandardDeviation(matrixToArray(matrix));\n}\n//# sourceMappingURL=matrixNoiseStandardDeviation.js.map","import { matrixClone } from './matrixClone';\n/**\n * Numerically decodes the matrix using the dictionary.\n * @param matrixInitial\n * @param dictionary - dictionary against which to do the encoding\n * @returns - decoded matrix\n */\nexport function matrixNumericalDecoding(matrixInitial, dictionary) {\n    const matrix = matrixClone(matrixInitial);\n    const invertedDictionary = swap(dictionary);\n    for (let i = 0; i < matrix.length; i++) {\n        for (let j = 0; j < matrix[0].length; j++) {\n            const value = matrix[i][j];\n            if (typeof value === 'number' && value in invertedDictionary) {\n                matrix[i][j] = invertedDictionary[value];\n            }\n        }\n    }\n    return matrix;\n}\nfunction swap(dictionary) {\n    const ret = {};\n    for (const key in dictionary) {\n        ret[dictionary[key]] = key;\n    }\n    return ret;\n}\n//# sourceMappingURL=matrixNumericalDecoding.js.map","import { matrixClone } from './matrixClone';\n/**\n * Numerically encodes the strings in the matrix and returns an encoding dictionary which can be used to encode other matrices\n * @param matrixInitial - original matrix before encoding\n * @returns - dictionary from string to number\n */\nexport function matrixNumericalEncoding(matrixInitial) {\n    const matrix = matrixClone(matrixInitial);\n    const nRows = matrix.length;\n    const nColumns = matrix[0].length;\n    let k = 0;\n    for (let i = 0; i < nRows; i++) {\n        for (let j = 0; j < nColumns; j++) {\n            const value = matrix[i][j];\n            if (typeof value === 'number' && value > k) {\n                k = value;\n            }\n        }\n    }\n    const dictCategoricalToNumerical = {};\n    for (let i = 0; i < nRows; i++) {\n        for (let j = 0; j < nColumns; j++) {\n            const value = matrix[i][j];\n            if (typeof value === 'string') {\n                if (value in dictCategoricalToNumerical) {\n                    matrix[i][j] = dictCategoricalToNumerical[value];\n                }\n                else {\n                    k++;\n                    dictCategoricalToNumerical[value] = k;\n                    matrix[i][j] = k;\n                }\n            }\n        }\n    }\n    return { matrix: matrix, dictCategoricalToNumerical };\n}\n//# sourceMappingURL=matrixNumericalEncoding.js.map","import { Matrix } from 'ml-matrix';\nimport { xMedian } from '../x';\n/**\n * Performs a Probabilistic quotient normalization (PQN) over the dataset to account dilution based in median spectrum.\n * Dieterle, F., Ross, A., Schlotterbeck, G., & Senn, H. (2006). Probabilistic quotient normalization as robust method to account for dilution of complex biological mixtures. Application in 1H NMR metabonomics. Analytical chemistry, 78(13), 4281-4290.\n * DOI: 10.1021/ac051632c\n * @param matrix - matrix [rows][cols].\n * @param options - options\n * @returns - {data: Normalized dataset, medianOfQuotients: The median of quotients of each variables}\n */\nexport function matrixPQN(matrix, options = {}) {\n    const { max = 100 } = options;\n    const matrixB = new Matrix(matrix);\n    for (let i = 0; i < matrixB.rows; i++) {\n        const normalizationFactor = matrixB.getRowVector(i).norm('frobenius') / max;\n        const row = matrixB.getRowVector(i).div(normalizationFactor);\n        matrixB.setRow(i, row);\n    }\n    const referenceSpectrum = [];\n    for (let i = 0; i < matrixB.columns; i++) {\n        const currentVariable = matrixB.getColumn(i);\n        referenceSpectrum.push(xMedian(currentVariable));\n    }\n    const medianOfQuotients = [];\n    for (let i = 0; i < matrixB.columns; i++) {\n        const quotients = matrixB.getColumnVector(i).div(referenceSpectrum[i]);\n        medianOfQuotients.push(xMedian(quotients.getColumn(0)));\n    }\n    for (let i = 0; i < matrixB.rows; i++) {\n        matrixB.mulRow(i, 1 / medianOfQuotients[i]);\n    }\n    return {\n        data: matrixB.to2DArray(),\n        medianOfQuotients,\n    };\n}\n//# sourceMappingURL=matrixPQN.js.map","import { matrixCheckRanges } from './matrixCheckRanges';\n/**\n * Set in-place a subMatrix to matrix, the function check if the subMatrix\n * lies into the dimensions of matrix.\n * @param matrix - matrix that will receive the new element values.\n * @param subMatrix - matrix with equal or less size than matrix.\n * @param startRow - row index in matrix for the first row in subMatrix.\n * @param startColumn - column index in matrix for the first column in subMatrix.\n * @returns The modified `matrix`.\n */\nexport function matrixSetSubMatrix(matrix, subMatrix, startRow, startColumn) {\n    const endRow = startRow + subMatrix.length - 1;\n    const endColumn = startColumn + subMatrix[0].length - 1;\n    matrixCheckRanges(matrix, { startRow, endRow, startColumn, endColumn });\n    for (let i = 0; i < subMatrix.length; i++) {\n        for (let j = 0; j < subMatrix[0].length; j++) {\n            matrix[startRow + i][startColumn + j] = subMatrix[i][j];\n        }\n    }\n    return matrix;\n}\n//# sourceMappingURL=matrixSetSubMatrix.js.map","import { matrixCreateEmpty } from './matrixCreateEmpty';\nimport { matrixMaxAbsoluteZ } from './matrixMaxAbsoluteZ';\n/**\n * Rescale a matrix around 0 taking into account the absolute max value.\n * @param matrix - matrix [rows][cols].\n * @param options - Options.\n */\nexport function matrixZPivotRescale(matrix, options = {}) {\n    const { max = 1, ArrayConstructor } = options;\n    const nbColumns = matrix[0].length;\n    const nbRows = matrix.length;\n    const newMatrix = matrixCreateEmpty({ nbColumns, nbRows, ArrayConstructor });\n    const currentMax = matrixMaxAbsoluteZ(matrix);\n    for (let column = 0; column < nbColumns; column++) {\n        const factor = max / currentMax;\n        for (let row = 0; row < nbRows; row++) {\n            newMatrix[row][column] = matrix[row][column] * factor;\n        }\n    }\n    return newMatrix;\n}\n//# sourceMappingURL=matrixZPivotRescale.js.map","import { matrixCreateEmpty } from './matrixCreateEmpty';\nimport { matrixMinMaxZ } from './matrixMinMaxZ';\n/**\n * Rescale a matrix between min and max values.\n * @param matrix - matrix [rows][cols].\n * @param options - Options.\n */\nexport function matrixZRescale(matrix, options = {}) {\n    const { min = 0, max = 1, ArrayConstructor } = options;\n    const nbColumns = matrix[0].length;\n    const nbRows = matrix.length;\n    const newMatrix = matrixCreateEmpty({ nbColumns, nbRows, ArrayConstructor });\n    const { min: currentMin, max: currentMax } = matrixMinMaxZ(matrix);\n    const factor = (max - min) / (currentMax - currentMin);\n    for (let column = 0; column < nbColumns; column++) {\n        for (let row = 0; row < nbRows; row++) {\n            newMatrix[row][column] =\n                (matrix[row][column] - currentMin) * factor + min;\n        }\n    }\n    return newMatrix;\n}\n//# sourceMappingURL=matrixZRescale.js.map","import { matrixCreateEmpty } from './matrixCreateEmpty';\n/**\n * Rescale the matrix per column for which we get the min and max values.\n * @param matrix - matrix [rows][cols].\n * @param options - Options.\n */\nexport function matrixZRescalePerColumn(matrix, options = {}) {\n    const { min = 0, max = 1 } = options;\n    const nbColumns = matrix[0].length;\n    const nbRows = matrix.length;\n    const newMatrix = matrixCreateEmpty({ nbColumns, nbRows });\n    for (let column = 0; column < nbColumns; column++) {\n        let currentMin = matrix[0][column];\n        let currentMax = matrix[0][column];\n        for (let row = 1; row < nbRows; row++) {\n            if (matrix[row][column] < currentMin)\n                currentMin = matrix[row][column];\n            if (matrix[row][column] > currentMax)\n                currentMax = matrix[row][column];\n        }\n        const factor = (max - min) / (currentMax - currentMin);\n        for (let row = 0; row < nbRows; row++) {\n            newMatrix[row][column] =\n                (matrix[row][column] - currentMin) * factor + min;\n        }\n    }\n    return newMatrix;\n}\n//# sourceMappingURL=matrixZRescalePerColumn.js.map","import { matrixCheck } from './matrixCheck';\nimport { matrixCreateEmpty } from './matrixCreateEmpty';\nexport function matrixTranspose(matrix, options = {}) {\n    matrixCheck(matrix);\n    const { ArrayConstructor } = options;\n    const nbRows = matrix.length;\n    const nbColumns = matrix[0].length;\n    // Create new matrix with swapped dimensions\n    const result = matrixCreateEmpty({\n        nbColumns: nbRows,\n        nbRows: nbColumns,\n        ArrayConstructor,\n    });\n    for (let i = 0; i < nbRows; i++) {\n        for (let j = 0; j < nbColumns; j++) {\n            result[j][i] = matrix[i][j];\n        }\n    }\n    return result;\n}\n//# sourceMappingURL=matrixTranspose.js.map","/*\n    https://tools.ietf.org/html/rfc3629\n\n    UTF8-char = UTF8-1 / UTF8-2 / UTF8-3 / UTF8-4\n\n    UTF8-1    = %x00-7F\n\n    UTF8-2    = %xC2-DF UTF8-tail\n\n    UTF8-3    = %xE0 %xA0-BF UTF8-tail\n                %xE1-EC 2( UTF8-tail )\n                %xED %x80-9F UTF8-tail\n                %xEE-EF 2( UTF8-tail )\n\n    UTF8-4    = %xF0 %x90-BF 2( UTF8-tail )\n                %xF1-F3 3( UTF8-tail )\n                %xF4 %x80-8F 2( UTF8-tail )\n\n    UTF8-tail = %x80-BF\n*/\n/**\n * Check if a Node.js Buffer or Uint8Array is UTF-8.\n */\nfunction isUtf8(buf) {\n    if (!buf) {\n        return false;\n    }\n    var i = 0;\n    var len = buf.length;\n    while (i < len) {\n        // UTF8-1 = %x00-7F\n        if (buf[i] <= 0x7F) {\n            i++;\n            continue;\n        }\n        // UTF8-2 = %xC2-DF UTF8-tail\n        if (buf[i] >= 0xC2 && buf[i] <= 0xDF) {\n            // if(buf[i + 1] >= 0x80 && buf[i + 1] <= 0xBF) {\n            if (buf[i + 1] >> 6 === 2) {\n                i += 2;\n                continue;\n            }\n            else {\n                return false;\n            }\n        }\n        // UTF8-3 = %xE0 %xA0-BF UTF8-tail\n        // UTF8-3 = %xED %x80-9F UTF8-tail\n        if (((buf[i] === 0xE0 && buf[i + 1] >= 0xA0 && buf[i + 1] <= 0xBF) ||\n            (buf[i] === 0xED && buf[i + 1] >= 0x80 && buf[i + 1] <= 0x9F)) && buf[i + 2] >> 6 === 2) {\n            i += 3;\n            continue;\n        }\n        // UTF8-3 = %xE1-EC 2( UTF8-tail )\n        // UTF8-3 = %xEE-EF 2( UTF8-tail )\n        if (((buf[i] >= 0xE1 && buf[i] <= 0xEC) ||\n            (buf[i] >= 0xEE && buf[i] <= 0xEF)) &&\n            buf[i + 1] >> 6 === 2 &&\n            buf[i + 2] >> 6 === 2) {\n            i += 3;\n            continue;\n        }\n        // UTF8-4 = %xF0 %x90-BF 2( UTF8-tail )\n        //          %xF1-F3 3( UTF8-tail )\n        //          %xF4 %x80-8F 2( UTF8-tail )\n        if (((buf[i] === 0xF0 && buf[i + 1] >= 0x90 && buf[i + 1] <= 0xBF) ||\n            (buf[i] >= 0xF1 && buf[i] <= 0xF3 && buf[i + 1] >> 6 === 2) ||\n            (buf[i] === 0xF4 && buf[i + 1] >= 0x80 && buf[i + 1] <= 0x8F)) &&\n            buf[i + 2] >> 6 === 2 &&\n            buf[i + 3] >> 6 === 2) {\n            i += 4;\n            continue;\n        }\n        return false;\n    }\n    return true;\n}\n\nexport { isUtf8 as default };\n","import isutf8 from 'isutf8';\n/**\n * Ensure that the data is string. If it is an ArrayBuffer it will be converted to string using TextDecoder.\n * @param blob\n * @param options\n * @returns\n */\nexport function ensureString(blob, options = {}) {\n    if (typeof blob === 'string') {\n        return blob;\n    }\n    if (ArrayBuffer.isView(blob) || blob instanceof ArrayBuffer) {\n        const { encoding = guessEncoding(blob) } = options;\n        const decoder = new TextDecoder(encoding);\n        return decoder.decode(blob);\n    }\n    throw new TypeError(`blob must be a string, ArrayBuffer or ArrayBufferView`);\n}\nfunction guessEncoding(blob) {\n    const uint8 = ArrayBuffer.isView(blob)\n        ? new Uint8Array(blob.buffer, blob.byteOffset, blob.byteLength)\n        : new Uint8Array(blob);\n    if (uint8.length >= 2) {\n        if (uint8[0] === 0xfe && uint8[1] === 0xff) {\n            return 'utf-16be';\n        }\n        if (uint8[0] === 0xff && uint8[1] === 0xfe) {\n            return 'utf-16le';\n        }\n    }\n    //@ts-expect-error an ArrayBuffer is also ok\n    if (!isutf8(blob))\n        return 'latin1';\n    return 'utf-8';\n}\n//# sourceMappingURL=index.js.map","import { ensureString } from 'ensure-string';\nimport { xyUniqueX, xMaxValue, xIsMonotonic } from 'ml-spectra-processing';\n/**\n * General internal parsing function\n * @param text - Csv or tsv strings.\n * @param options - Parsing options\n * @returns parsed text file with column information\n */\nexport function parse(text, options = {}) {\n    const { rescale = false, uniqueX = false, bestGuess = false, \n    //@ts-expect-error old library used this property and we want to throw an error so that people are forced to migrate\n    keepInfo, } = options;\n    let { xColumn = 0, yColumn = 1, numberColumns = Number.MAX_SAFE_INTEGER, maxNumberColumns = Number.MAX_SAFE_INTEGER, minNumberColumns = 2, } = options;\n    if (keepInfo !== undefined) {\n        throw new Error('keepInfo has been deprecated, pelase use the new method parseXYAndKeepInfo');\n    }\n    text = ensureString(text);\n    maxNumberColumns = Math.max(maxNumberColumns, xColumn + 1, yColumn + 1);\n    minNumberColumns = Math.max(xColumn + 1, yColumn + 1, minNumberColumns);\n    const lines = text.split(/[\\r\\n]+/);\n    let matrix = [];\n    const info = [];\n    let position = 0;\n    lines.forEach((line) => {\n        line = line.trim();\n        // we will consider only lines that contains only numbers\n        if (/[0-9]+/.test(line) && /^[0-9eE,;. \\t+-]+$/.test(line)) {\n            let fields = line.split(/,[; \\t]+|[; \\t]+/);\n            if (fields.length === 1) {\n                fields = line.split(/[,; \\t]+/);\n            }\n            if (fields &&\n                fields.length >= minNumberColumns && // we filter lines that have not enough or too many columns\n                fields.length <= maxNumberColumns) {\n                matrix.push(fields.map((value) => parseFloat(value.replace(',', '.'))));\n                position++;\n            }\n        }\n        else if (line) {\n            info.push({ position, value: line });\n        }\n    });\n    if (bestGuess) {\n        if (matrix[0] &&\n            matrix[0].length === 3 &&\n            options.xColumn === undefined &&\n            options.yColumn === undefined) {\n            // is the first column a seuqnetial number ?\n            let skipFirstColumn = true;\n            for (let i = 0; i < matrix.length - 1; i++) {\n                if (Math.abs(matrix[i][0] - matrix[i + 1][0]) !== 1) {\n                    skipFirstColumn = false;\n                }\n            }\n            if (skipFirstColumn) {\n                xColumn = 1;\n                yColumn = 2;\n            }\n        }\n        if (matrix[0] && matrix[0].length > 3) {\n            const xs = [];\n            for (const row of matrix) {\n                for (let i = xColumn; i < row.length; i += 2) {\n                    xs.push(row[i]);\n                }\n            }\n            if (xIsMonotonic(xs)) {\n                numberColumns = 2;\n            }\n        }\n    }\n    if (numberColumns) {\n        const newMatrix = [];\n        for (const row of matrix) {\n            for (let i = 0; i < row.length; i += numberColumns) {\n                newMatrix.push(row.slice(i, i + numberColumns));\n            }\n        }\n        matrix = newMatrix;\n    }\n    let result = {\n        x: matrix.map((row) => row[xColumn]),\n        y: matrix.map((row) => row[yColumn]),\n    };\n    if (uniqueX) {\n        result = xyUniqueX(result, { algorithm: 'sum' });\n    }\n    if (rescale) {\n        const maxY = xMaxValue(result.y);\n        for (let i = 0; i < result.y.length; i++) {\n            result.y[i] /= maxY;\n        }\n    }\n    return {\n        info,\n        data: result,\n    };\n}\n//# sourceMappingURL=parse.js.map","import { parse } from './parse';\nexport * from './ParseXYOptions';\n/**\n * Parse a text-file and convert it to an object {x:[], y:[]}\n * @param text - Csv or tsv strings.\n * @param options - Parsing options\n * @returns - The parsed data\n */\nexport function parseXY(text, options = {}) {\n    return parse(text, options).data;\n}\n/**\n * Parse a text-file and returns the parsed data and information about the columns\n * @param text - Csv or tsv strings.\n * @param options - Parsing options\n * @returns - The parsed data with information about the columns\n */\nexport function parseXYAndKeepInfo(text, options = {}) {\n    return parse(text, options);\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getBestPeaks = getBestPeaks;\nconst ml_spectra_processing_1 = require(\"ml-spectra-processing\");\n/**\n * Filter the array by taking the higher peaks and only\n * keep one per slot.\n * There are 2 different slots, the smallest one will have the\n * extra annotation `close` to true\n * @param {array} peaks - array of all the peaks\n * @param {object} [options={}]\n * @param {number} [options.from] - min X value of the window to consider\n * @param {number} [options.to] - max X value of the window to consider\n * @param {number} [options.minValue=Number.NEGATIVE_INFINITY] - min Y value of the window to consider\n * @param {number} [options.maxValue=Number.POSITIVE_INFINITY] - max Y value of the window to consider\n * @param {number} [options.searchMonoisotopicRatio=0] - search previous peaks with at least ratio height\n * @param {number} [options.limit=20] - max number of peaks\n * @param {number} [options.threshold=0.01] - minimal intensity compare to base peak\n * @param {number} [options.numberSlots=10] - define the number of slots and indirectly the slot width\n * @param {number} [options.numberCloseSlots=50]\n * @returns {array} - copy of peaks with 'close' annotation\n */\nfunction getBestPeaks(peaks, options = {}) {\n    const { searchMonoisotopicRatio = 0, from = (0, ml_spectra_processing_1.xyObjectMinXPoint)(peaks).x, to = (0, ml_spectra_processing_1.xyObjectMaxXPoint)(peaks).x, limit = 20, threshold = 0.01, numberCloseSlots = 50, numberSlots = 10, minValue = Number.NEGATIVE_INFINITY, maxValue = Number.POSITIVE_INFINITY, } = options;\n    let slot = (to - from) / numberSlots;\n    let closeSlot = (to - from) / numberCloseSlots;\n    let selected = peaks\n        .filter((peak) => peak.x >= from && peak.x <= to)\n        .filter((peak) => peak.y >= minValue && peak.y <= maxValue)\n        .map((peak) => {\n        return {\n            peak,\n            monoisotopic: false,\n        };\n    });\n    if (searchMonoisotopicRatio) {\n        selected = selected.sort((a, b) => b.peak.x - a.peak.x);\n        for (let i = 0; i < selected.length; i++) {\n            let item = selected[i];\n            for (let j = i + 1; j < selected.length; j++) {\n                let nextItem = selected[j];\n                if (item.peak.x - nextItem.peak.x < 0.09)\n                    continue;\n                if (item.peak.x - nextItem.peak.x > 1.1)\n                    break;\n                if (nextItem.peak.y > item.peak.y * searchMonoisotopicRatio) {\n                    item.monoisotopic = false;\n                    nextItem.monoisotopic = true;\n                    break;\n                }\n            }\n        }\n    }\n    selected = selected.sort((a, b) => {\n        if (a.monoisotopic && !b.monoisotopic)\n            return -1;\n        if (b.monoisotopic && !a.monoisotopic)\n            return 1;\n        return b.peak.y - a.peak.y;\n    });\n    let toReturn = [];\n    if (selected.length === 0)\n        return [];\n    let minY = selected[0].peak.y * threshold;\n    peakLoop: for (let item of selected) {\n        if (item.peak.y < minY) {\n            if (item.monoisotopic) {\n                continue;\n            }\n            else {\n                break;\n            }\n        }\n        let close = false;\n        for (let existing of toReturn) {\n            if (Math.abs(existing.x - item.peak.x) < closeSlot) {\n                continue peakLoop;\n            }\n            if (Math.abs(existing.x - item.peak.x) < slot) {\n                close = true;\n            }\n        }\n        let newPeak = structuredClone(item.peak);\n        newPeak.close = close;\n        toReturn.push(newPeak);\n        if (toReturn.length === limit)\n            break;\n    }\n    return toReturn.sort((a, b) => a.x - b.x);\n}\n//# sourceMappingURL=getBestPeaks.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.atomSorter = atomSorter;\n/**\n * Implementation of the Hill system for sorting atoms\n * https://en.wikipedia.org/wiki/Chemical_formula#Hill_system\n * @param a - first atom to compare\n * @param b - second atom to compare\n * @returns A value suitable for use in Array.prototype.sort.\n */\nfunction atomSorter(a, b) {\n    if (a === b)\n        return 0;\n    if (a === 'C')\n        return -1;\n    if (b === 'C')\n        return 1;\n    if (a === 'H')\n        return -1;\n    if (b === 'H')\n        return 1;\n    if (a < b)\n        return -1;\n    return 1;\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.elementsAndIsotopes = void 0;\nexports.elementsAndIsotopes = [\n    {\n        number: 1,\n        isotopes: [\n            { nominal: 1, mass: 1.00782503223, abundance: 0.999885 },\n            { nominal: 2, mass: 2.01410177812, abundance: 0.000115 },\n            { nominal: 3, mass: 3.0160492779 },\n            { nominal: 4, mass: 4.02643 },\n            { nominal: 5, mass: 5.035311 },\n            { nominal: 6, mass: 6.04496 },\n            { nominal: 7, mass: 7.0527 },\n        ],\n        symbol: 'H',\n        mass: 1.0079407540557772,\n        name: 'Hydrogen',\n        monoisotopicMass: 1.00782503223,\n    },\n    {\n        number: 2,\n        isotopes: [\n            { nominal: 3, mass: 3.0160293201, abundance: 0.00000134 },\n            { nominal: 4, mass: 4.00260325413, abundance: 0.99999866 },\n            { nominal: 5, mass: 5.012057 },\n            { nominal: 6, mass: 6.018885891 },\n            { nominal: 7, mass: 7.0279907 },\n            { nominal: 8, mass: 8.03393439 },\n            { nominal: 9, mass: 9.043946 },\n            { nominal: 10, mass: 10.05279 },\n        ],\n        symbol: 'He',\n        mass: 4.002601932120929,\n        name: 'Helium',\n        monoisotopicMass: 4.00260325413,\n    },\n    {\n        number: 3,\n        isotopes: [\n            { nominal: 3, mass: 3.0308 },\n            { nominal: 4, mass: 4.02719 },\n            { nominal: 5, mass: 5.012538 },\n            { nominal: 6, mass: 6.0151228874, abundance: 0.0759 },\n            { nominal: 7, mass: 7.0160034366, abundance: 0.9241 },\n            { nominal: 8, mass: 8.022486246 },\n            { nominal: 9, mass: 9.02679019 },\n            { nominal: 10, mass: 10.035483 },\n            { nominal: 11, mass: 11.04372358 },\n            { nominal: 12, mass: 12.052517 },\n            { nominal: 13, mass: 13.06263 },\n        ],\n        symbol: 'Li',\n        mass: 6.94003660291572,\n        name: 'Lithium',\n        monoisotopicMass: 7.0160034366,\n    },\n    {\n        number: 4,\n        isotopes: [\n            { nominal: 5, mass: 5.0399 },\n            { nominal: 6, mass: 6.0197264 },\n            { nominal: 7, mass: 7.016928717 },\n            { nominal: 8, mass: 8.005305102 },\n            { nominal: 9, mass: 9.012183065, abundance: 1 },\n            { nominal: 10, mass: 10.013534695 },\n            { nominal: 11, mass: 11.02166108 },\n            { nominal: 12, mass: 12.0269221 },\n            { nominal: 13, mass: 13.036135 },\n            { nominal: 14, mass: 14.04289 },\n            { nominal: 15, mass: 15.05342 },\n            { nominal: 16, mass: 16.06167 },\n        ],\n        symbol: 'Be',\n        mass: 9.012183065,\n        name: 'Beryllium',\n        monoisotopicMass: 9.012183065,\n    },\n    {\n        number: 5,\n        isotopes: [\n            { nominal: 6, mass: 6.0508 },\n            { nominal: 7, mass: 7.029712 },\n            { nominal: 8, mass: 8.0246073 },\n            { nominal: 9, mass: 9.01332965 },\n            { nominal: 10, mass: 10.01293695, abundance: 0.199 },\n            { nominal: 11, mass: 11.00930536, abundance: 0.801 },\n            { nominal: 12, mass: 12.0143527 },\n            { nominal: 13, mass: 13.0177802 },\n            { nominal: 14, mass: 14.025404 },\n            { nominal: 15, mass: 15.031088 },\n            { nominal: 16, mass: 16.039842 },\n            { nominal: 17, mass: 17.04699 },\n            { nominal: 18, mass: 18.05566 },\n            { nominal: 19, mass: 19.0631 },\n            { nominal: 20, mass: 20.07207 },\n            { nominal: 21, mass: 21.08129 },\n        ],\n        symbol: 'B',\n        mass: 10.811028046410001,\n        name: 'Boron',\n        monoisotopicMass: 11.00930536,\n    },\n    {\n        number: 6,\n        isotopes: [\n            { nominal: 8, mass: 8.037643 },\n            { nominal: 9, mass: 9.0310372 },\n            { nominal: 10, mass: 10.01685331 },\n            { nominal: 11, mass: 11.0114336 },\n            { nominal: 12, mass: 12, abundance: 0.9893 },\n            { nominal: 13, mass: 13.00335483507, abundance: 0.0107 },\n            { nominal: 14, mass: 14.0032419884 },\n            { nominal: 15, mass: 15.01059926 },\n            { nominal: 16, mass: 16.0147013 },\n            { nominal: 17, mass: 17.022577 },\n            { nominal: 18, mass: 18.026751 },\n            { nominal: 19, mass: 19.0348 },\n            { nominal: 20, mass: 20.04032 },\n            { nominal: 21, mass: 21.049 },\n            { nominal: 22, mass: 22.05753 },\n            { nominal: 23, mass: 23.0689 },\n        ],\n        symbol: 'C',\n        mass: 12.010735896735248,\n        name: 'Carbon',\n        monoisotopicMass: 12,\n    },\n    {\n        number: 7,\n        isotopes: [\n            { nominal: 10, mass: 10.04165 },\n            { nominal: 11, mass: 11.026091 },\n            { nominal: 12, mass: 12.0186132 },\n            { nominal: 13, mass: 13.00573861 },\n            { nominal: 14, mass: 14.00307400443, abundance: 0.99636 },\n            { nominal: 15, mass: 15.00010889888, abundance: 0.00364 },\n            { nominal: 16, mass: 16.0061019 },\n            { nominal: 17, mass: 17.008449 },\n            { nominal: 18, mass: 18.014078 },\n            { nominal: 19, mass: 19.017022 },\n            { nominal: 20, mass: 20.023366 },\n            { nominal: 21, mass: 21.02711 },\n            { nominal: 22, mass: 22.03439 },\n            { nominal: 23, mass: 23.04114 },\n            { nominal: 24, mass: 24.05039 },\n            { nominal: 25, mass: 25.0601 },\n        ],\n        symbol: 'N',\n        mass: 14.006703211445798,\n        name: 'Nitrogen',\n        monoisotopicMass: 14.00307400443,\n    },\n    {\n        number: 8,\n        isotopes: [\n            { nominal: 12, mass: 12.034262 },\n            { nominal: 13, mass: 13.024815 },\n            { nominal: 14, mass: 14.00859636 },\n            { nominal: 15, mass: 15.00306562 },\n            { nominal: 16, mass: 15.99491461957, abundance: 0.99757 },\n            { nominal: 17, mass: 16.9991317565, abundance: 0.00038 },\n            { nominal: 18, mass: 17.99915961286, abundance: 0.00205 },\n            { nominal: 19, mass: 19.003578 },\n            { nominal: 20, mass: 20.00407535 },\n            { nominal: 21, mass: 21.008655 },\n            { nominal: 22, mass: 22.009966 },\n            { nominal: 23, mass: 23.015696 },\n            { nominal: 24, mass: 24.01986 },\n            { nominal: 25, mass: 25.02936 },\n            { nominal: 26, mass: 26.03729 },\n            { nominal: 27, mass: 27.04772 },\n            { nominal: 28, mass: 28.05591 },\n        ],\n        symbol: 'O',\n        mass: 15.999404924318277,\n        name: 'Oxygen',\n        monoisotopicMass: 15.99491461957,\n    },\n    {\n        number: 9,\n        isotopes: [\n            { nominal: 14, mass: 14.034315 },\n            { nominal: 15, mass: 15.018043 },\n            { nominal: 16, mass: 16.0114657 },\n            { nominal: 17, mass: 17.00209524 },\n            { nominal: 18, mass: 18.00093733 },\n            { nominal: 19, mass: 18.99840316273, abundance: 1 },\n            { nominal: 20, mass: 19.999981252 },\n            { nominal: 21, mass: 20.9999489 },\n            { nominal: 22, mass: 22.002999 },\n            { nominal: 23, mass: 23.003557 },\n            { nominal: 24, mass: 24.008115 },\n            { nominal: 25, mass: 25.012199 },\n            { nominal: 26, mass: 26.020038 },\n            { nominal: 27, mass: 27.02644 },\n            { nominal: 28, mass: 28.03534 },\n            { nominal: 29, mass: 29.04254 },\n            { nominal: 30, mass: 30.05165 },\n            { nominal: 31, mass: 31.05971 },\n        ],\n        symbol: 'F',\n        mass: 18.99840316273,\n        name: 'Fluorine',\n        monoisotopicMass: 18.99840316273,\n    },\n    {\n        number: 10,\n        isotopes: [\n            { nominal: 16, mass: 16.02575 },\n            { nominal: 17, mass: 17.01771396 },\n            { nominal: 18, mass: 18.0057087 },\n            { nominal: 19, mass: 19.00188091 },\n            { nominal: 20, mass: 19.9924401762, abundance: 0.9048 },\n            { nominal: 21, mass: 20.993846685, abundance: 0.0027 },\n            { nominal: 22, mass: 21.991385114, abundance: 0.0925 },\n            { nominal: 23, mass: 22.99446691 },\n            { nominal: 24, mass: 23.99361065 },\n            { nominal: 25, mass: 24.997789 },\n            { nominal: 26, mass: 26.000515 },\n            { nominal: 27, mass: 27.007553 },\n            { nominal: 28, mass: 28.01212 },\n            { nominal: 29, mass: 29.01975 },\n            { nominal: 30, mass: 30.02473 },\n            { nominal: 31, mass: 31.0331 },\n            { nominal: 32, mass: 32.03972 },\n            { nominal: 33, mass: 33.04938 },\n            { nominal: 34, mass: 34.05673 },\n        ],\n        symbol: 'Ne',\n        mass: 20.18004638052026,\n        name: 'Neon',\n        monoisotopicMass: 19.9924401762,\n    },\n    {\n        number: 11,\n        isotopes: [\n            { nominal: 18, mass: 18.02688 },\n            { nominal: 19, mass: 19.01388 },\n            { nominal: 20, mass: 20.0073544 },\n            { nominal: 21, mass: 20.99765469 },\n            { nominal: 22, mass: 21.99443741 },\n            { nominal: 23, mass: 22.989769282, abundance: 1 },\n            { nominal: 24, mass: 23.99096295 },\n            { nominal: 25, mass: 24.989954 },\n            { nominal: 26, mass: 25.9926346 },\n            { nominal: 27, mass: 26.9940765 },\n            { nominal: 28, mass: 27.998939 },\n            { nominal: 29, mass: 29.0028771 },\n            { nominal: 30, mass: 30.0090979 },\n            { nominal: 31, mass: 31.013163 },\n            { nominal: 32, mass: 32.02019 },\n            { nominal: 33, mass: 33.02573 },\n            { nominal: 34, mass: 34.03359 },\n            { nominal: 35, mass: 35.04062 },\n            { nominal: 36, mass: 36.04929 },\n            { nominal: 37, mass: 37.05705 },\n        ],\n        symbol: 'Na',\n        mass: 22.989769282,\n        name: 'Sodium',\n        monoisotopicMass: 22.989769282,\n    },\n    {\n        number: 12,\n        isotopes: [\n            { nominal: 19, mass: 19.034169 },\n            { nominal: 20, mass: 20.01885 },\n            { nominal: 21, mass: 21.011716 },\n            { nominal: 22, mass: 21.99957065 },\n            { nominal: 23, mass: 22.99412421 },\n            { nominal: 24, mass: 23.985041697, abundance: 0.7899 },\n            { nominal: 25, mass: 24.985836976, abundance: 0.1 },\n            { nominal: 26, mass: 25.982592968, abundance: 0.1101 },\n            { nominal: 27, mass: 26.984340624 },\n            { nominal: 28, mass: 27.9838767 },\n            { nominal: 29, mass: 28.988617 },\n            { nominal: 30, mass: 29.9904629 },\n            { nominal: 31, mass: 30.996648 },\n            { nominal: 32, mass: 31.9991102 },\n            { nominal: 33, mass: 33.0053271 },\n            { nominal: 34, mass: 34.008935 },\n            { nominal: 35, mass: 35.01679 },\n            { nominal: 36, mass: 36.02188 },\n            { nominal: 37, mass: 37.03037 },\n            { nominal: 38, mass: 38.03658 },\n            { nominal: 39, mass: 39.04538 },\n            { nominal: 40, mass: 40.05218 },\n        ],\n        symbol: 'Mg',\n        mass: 24.3050516198371,\n        name: 'Magnesium',\n        monoisotopicMass: 23.985041697,\n    },\n    {\n        number: 13,\n        isotopes: [\n            { nominal: 21, mass: 21.02897 },\n            { nominal: 22, mass: 22.01954 },\n            { nominal: 23, mass: 23.00724435 },\n            { nominal: 24, mass: 23.9999489 },\n            { nominal: 25, mass: 24.9904281 },\n            { nominal: 26, mass: 25.986891904 },\n            { nominal: 27, mass: 26.98153853, abundance: 1 },\n            { nominal: 28, mass: 27.98191021 },\n            { nominal: 29, mass: 28.9804565 },\n            { nominal: 30, mass: 29.98296 },\n            { nominal: 31, mass: 30.983945 },\n            { nominal: 32, mass: 31.988085 },\n            { nominal: 33, mass: 32.990909 },\n            { nominal: 34, mass: 33.996705 },\n            { nominal: 35, mass: 34.999764 },\n            { nominal: 36, mass: 36.00639 },\n            { nominal: 37, mass: 37.01053 },\n            { nominal: 38, mass: 38.0174 },\n            { nominal: 39, mass: 39.02254 },\n            { nominal: 40, mass: 40.03003 },\n            { nominal: 41, mass: 41.03638 },\n            { nominal: 42, mass: 42.04384 },\n            { nominal: 43, mass: 43.05147 },\n        ],\n        symbol: 'Al',\n        mass: 26.98153853,\n        name: 'Aluminium',\n        monoisotopicMass: 26.98153853,\n    },\n    {\n        number: 14,\n        isotopes: [\n            { nominal: 22, mass: 22.03579 },\n            { nominal: 23, mass: 23.02544 },\n            { nominal: 24, mass: 24.011535 },\n            { nominal: 25, mass: 25.004109 },\n            { nominal: 26, mass: 25.99233384 },\n            { nominal: 27, mass: 26.98670481 },\n            { nominal: 28, mass: 27.97692653465, abundance: 0.92223 },\n            { nominal: 29, mass: 28.9764946649, abundance: 0.04685 },\n            { nominal: 30, mass: 29.973770136, abundance: 0.03092 },\n            { nominal: 31, mass: 30.975363194 },\n            { nominal: 32, mass: 31.97415154 },\n            { nominal: 33, mass: 32.97797696 },\n            { nominal: 34, mass: 33.978576 },\n            { nominal: 35, mass: 34.984583 },\n            { nominal: 36, mass: 35.986695 },\n            { nominal: 37, mass: 36.992921 },\n            { nominal: 38, mass: 37.995523 },\n            { nominal: 39, mass: 39.002491 },\n            { nominal: 40, mass: 40.00583 },\n            { nominal: 41, mass: 41.01301 },\n            { nominal: 42, mass: 42.01778 },\n            { nominal: 43, mass: 43.0248 },\n            { nominal: 44, mass: 44.03061 },\n            { nominal: 45, mass: 45.03995 },\n        ],\n        symbol: 'Si',\n        mass: 28.085498705705955,\n        name: 'Silicon',\n        monoisotopicMass: 27.97692653465,\n    },\n    {\n        number: 15,\n        isotopes: [\n            { nominal: 24, mass: 24.03577 },\n            { nominal: 25, mass: 25.02119 },\n            { nominal: 26, mass: 26.01178 },\n            { nominal: 27, mass: 26.999224 },\n            { nominal: 28, mass: 27.9923266 },\n            { nominal: 29, mass: 28.98180079 },\n            { nominal: 30, mass: 29.97831375 },\n            { nominal: 31, mass: 30.97376199842, abundance: 1 },\n            { nominal: 32, mass: 31.973907643 },\n            { nominal: 33, mass: 32.9717257 },\n            { nominal: 34, mass: 33.97364589 },\n            { nominal: 35, mass: 34.9733141 },\n            { nominal: 36, mass: 35.97826 },\n            { nominal: 37, mass: 36.979607 },\n            { nominal: 38, mass: 37.984252 },\n            { nominal: 39, mass: 38.986227 },\n            { nominal: 40, mass: 39.99133 },\n            { nominal: 41, mass: 40.994654 },\n            { nominal: 42, mass: 42.00108 },\n            { nominal: 43, mass: 43.00502 },\n            { nominal: 44, mass: 44.01121 },\n            { nominal: 45, mass: 45.01645 },\n            { nominal: 46, mass: 46.02446 },\n            { nominal: 47, mass: 47.03139 },\n        ],\n        symbol: 'P',\n        mass: 30.97376199842,\n        name: 'Phosphorus',\n        monoisotopicMass: 30.97376199842,\n    },\n    {\n        number: 16,\n        isotopes: [\n            { nominal: 26, mass: 26.02907 },\n            { nominal: 27, mass: 27.01828 },\n            { nominal: 28, mass: 28.00437 },\n            { nominal: 29, mass: 28.996611 },\n            { nominal: 30, mass: 29.98490703 },\n            { nominal: 31, mass: 30.97955701 },\n            { nominal: 32, mass: 31.9720711744, abundance: 0.9499 },\n            { nominal: 33, mass: 32.9714589098, abundance: 0.0075 },\n            { nominal: 34, mass: 33.967867004, abundance: 0.0425 },\n            { nominal: 35, mass: 34.96903231 },\n            { nominal: 36, mass: 35.96708071, abundance: 0.0001 },\n            { nominal: 37, mass: 36.97112551 },\n            { nominal: 38, mass: 37.9711633 },\n            { nominal: 39, mass: 38.975134 },\n            { nominal: 40, mass: 39.9754826 },\n            { nominal: 41, mass: 40.9795935 },\n            { nominal: 42, mass: 41.9810651 },\n            { nominal: 43, mass: 42.9869076 },\n            { nominal: 44, mass: 43.9901188 },\n            { nominal: 45, mass: 44.99572 },\n            { nominal: 46, mass: 46.00004 },\n            { nominal: 47, mass: 47.00795 },\n            { nominal: 48, mass: 48.0137 },\n            { nominal: 49, mass: 49.02276 },\n        ],\n        symbol: 'S',\n        mass: 32.06478740612706,\n        name: 'Sulfur',\n        monoisotopicMass: 31.9720711744,\n    },\n    {\n        number: 17,\n        isotopes: [\n            { nominal: 28, mass: 28.02954 },\n            { nominal: 29, mass: 29.01478 },\n            { nominal: 30, mass: 30.00477 },\n            { nominal: 31, mass: 30.992414 },\n            { nominal: 32, mass: 31.98568464 },\n            { nominal: 33, mass: 32.97745199 },\n            { nominal: 34, mass: 33.973762485 },\n            { nominal: 35, mass: 34.968852682, abundance: 0.7576 },\n            { nominal: 36, mass: 35.968306809 },\n            { nominal: 37, mass: 36.965902602, abundance: 0.2424 },\n            { nominal: 38, mass: 37.96801044 },\n            { nominal: 39, mass: 38.9680082 },\n            { nominal: 40, mass: 39.970415 },\n            { nominal: 41, mass: 40.970685 },\n            { nominal: 42, mass: 41.97325 },\n            { nominal: 43, mass: 42.97389 },\n            { nominal: 44, mass: 43.97787 },\n            { nominal: 45, mass: 44.98029 },\n            { nominal: 46, mass: 45.98517 },\n            { nominal: 47, mass: 46.98916 },\n            { nominal: 48, mass: 47.99564 },\n            { nominal: 49, mass: 49.00123 },\n            { nominal: 50, mass: 50.00905 },\n            { nominal: 51, mass: 51.01554 },\n        ],\n        symbol: 'Cl',\n        mass: 35.452937582608,\n        name: 'Chlorine',\n        monoisotopicMass: 34.968852682,\n    },\n    {\n        number: 18,\n        isotopes: [\n            { nominal: 30, mass: 30.02307 },\n            { nominal: 31, mass: 31.01212 },\n            { nominal: 32, mass: 31.9976378 },\n            { nominal: 33, mass: 32.98992555 },\n            { nominal: 34, mass: 33.98027009 },\n            { nominal: 35, mass: 34.97525759 },\n            { nominal: 36, mass: 35.967545105, abundance: 0.003336 },\n            { nominal: 37, mass: 36.96677633 },\n            { nominal: 38, mass: 37.96273211, abundance: 0.000629 },\n            { nominal: 39, mass: 38.964313 },\n            { nominal: 40, mass: 39.9623831237, abundance: 0.996035 },\n            { nominal: 41, mass: 40.96450057 },\n            { nominal: 42, mass: 41.9630457 },\n            { nominal: 43, mass: 42.9656361 },\n            { nominal: 44, mass: 43.9649238 },\n            { nominal: 45, mass: 44.96803973 },\n            { nominal: 46, mass: 45.968083 },\n            { nominal: 47, mass: 46.972935 },\n            { nominal: 48, mass: 47.97591 },\n            { nominal: 49, mass: 48.9819 },\n            { nominal: 50, mass: 49.98613 },\n            { nominal: 51, mass: 50.9937 },\n            { nominal: 52, mass: 51.99896 },\n            { nominal: 53, mass: 53.00729 },\n        ],\n        symbol: 'Ar',\n        mass: 39.947798563582005,\n        name: 'Argon',\n        monoisotopicMass: 39.9623831237,\n    },\n    {\n        number: 19,\n        isotopes: [\n            { nominal: 32, mass: 32.02265 },\n            { nominal: 33, mass: 33.00756 },\n            { nominal: 34, mass: 33.99869 },\n            { nominal: 35, mass: 34.98800541 },\n            { nominal: 36, mass: 35.98130201 },\n            { nominal: 37, mass: 36.97337589 },\n            { nominal: 38, mass: 37.96908112 },\n            { nominal: 39, mass: 38.9637064864, abundance: 0.932581 },\n            { nominal: 40, mass: 39.963998166, abundance: 0.000117 },\n            { nominal: 41, mass: 40.9618252579, abundance: 0.067302 },\n            { nominal: 42, mass: 41.96240231 },\n            { nominal: 43, mass: 42.9607347 },\n            { nominal: 44, mass: 43.96158699 },\n            { nominal: 45, mass: 44.96069149 },\n            { nominal: 46, mass: 45.96198159 },\n            { nominal: 47, mass: 46.9616616 },\n            { nominal: 48, mass: 47.96534119 },\n            { nominal: 49, mass: 48.96821075 },\n            { nominal: 50, mass: 49.97238 },\n            { nominal: 51, mass: 50.975828 },\n            { nominal: 52, mass: 51.98224 },\n            { nominal: 53, mass: 52.98746 },\n            { nominal: 54, mass: 53.99463 },\n            { nominal: 55, mass: 55.00076 },\n            { nominal: 56, mass: 56.00851 },\n        ],\n        symbol: 'K',\n        mass: 39.098300910086,\n        name: 'Potassium',\n        monoisotopicMass: 38.9637064864,\n    },\n    {\n        number: 20,\n        isotopes: [\n            { nominal: 34, mass: 34.01487 },\n            { nominal: 35, mass: 35.00514 },\n            { nominal: 36, mass: 35.993074 },\n            { nominal: 37, mass: 36.98589785 },\n            { nominal: 38, mass: 37.97631922 },\n            { nominal: 39, mass: 38.97071081 },\n            { nominal: 40, mass: 39.962590863, abundance: 0.96941 },\n            { nominal: 41, mass: 40.96227792 },\n            { nominal: 42, mass: 41.95861783, abundance: 0.00647 },\n            { nominal: 43, mass: 42.95876644, abundance: 0.00135 },\n            { nominal: 44, mass: 43.95548156, abundance: 0.02086 },\n            { nominal: 45, mass: 44.95618635 },\n            { nominal: 46, mass: 45.953689, abundance: 0.00004 },\n            { nominal: 47, mass: 46.9545424 },\n            { nominal: 48, mass: 47.95252276, abundance: 0.00187 },\n            { nominal: 49, mass: 48.95566274 },\n            { nominal: 50, mass: 49.9574992 },\n            { nominal: 51, mass: 50.960989 },\n            { nominal: 52, mass: 51.963217 },\n            { nominal: 53, mass: 52.96945 },\n            { nominal: 54, mass: 53.9734 },\n            { nominal: 55, mass: 54.9803 },\n            { nominal: 56, mass: 55.98508 },\n            { nominal: 57, mass: 56.99262 },\n            { nominal: 58, mass: 57.99794 },\n        ],\n        symbol: 'Ca',\n        mass: 40.078022511017735,\n        name: 'Calcium',\n        monoisotopicMass: 39.962590863,\n    },\n    {\n        number: 21,\n        isotopes: [\n            { nominal: 36, mass: 36.01648 },\n            { nominal: 37, mass: 37.00374 },\n            { nominal: 38, mass: 37.99512 },\n            { nominal: 39, mass: 38.984785 },\n            { nominal: 40, mass: 39.9779673 },\n            { nominal: 41, mass: 40.969251105 },\n            { nominal: 42, mass: 41.96551653 },\n            { nominal: 43, mass: 42.9611505 },\n            { nominal: 44, mass: 43.9594029 },\n            { nominal: 45, mass: 44.95590828, abundance: 1 },\n            { nominal: 46, mass: 45.95516826 },\n            { nominal: 47, mass: 46.9524037 },\n            { nominal: 48, mass: 47.9522236 },\n            { nominal: 49, mass: 48.9500146 },\n            { nominal: 50, mass: 49.952176 },\n            { nominal: 51, mass: 50.953592 },\n            { nominal: 52, mass: 51.95688 },\n            { nominal: 53, mass: 52.95909 },\n            { nominal: 54, mass: 53.96393 },\n            { nominal: 55, mass: 54.96782 },\n            { nominal: 56, mass: 55.97345 },\n            { nominal: 57, mass: 56.97777 },\n            { nominal: 58, mass: 57.98403 },\n            { nominal: 59, mass: 58.98894 },\n            { nominal: 60, mass: 59.99565 },\n            { nominal: 61, mass: 61.001 },\n        ],\n        symbol: 'Sc',\n        mass: 44.95590828,\n        name: 'Scandium',\n        monoisotopicMass: 44.95590828,\n    },\n    {\n        number: 22,\n        isotopes: [\n            { nominal: 38, mass: 38.01145 },\n            { nominal: 39, mass: 39.00236 },\n            { nominal: 40, mass: 39.9905 },\n            { nominal: 41, mass: 40.983148 },\n            { nominal: 42, mass: 41.97304903 },\n            { nominal: 43, mass: 42.9685225 },\n            { nominal: 44, mass: 43.95968995 },\n            { nominal: 45, mass: 44.95812198 },\n            { nominal: 46, mass: 45.95262772, abundance: 0.0825 },\n            { nominal: 47, mass: 46.95175879, abundance: 0.0744 },\n            { nominal: 48, mass: 47.94794198, abundance: 0.7372 },\n            { nominal: 49, mass: 48.94786568, abundance: 0.0541 },\n            { nominal: 50, mass: 49.94478689, abundance: 0.0518 },\n            { nominal: 51, mass: 50.94661065 },\n            { nominal: 52, mass: 51.946893 },\n            { nominal: 53, mass: 52.94973 },\n            { nominal: 54, mass: 53.95105 },\n            { nominal: 55, mass: 54.95527 },\n            { nominal: 56, mass: 55.95791 },\n            { nominal: 57, mass: 56.96364 },\n            { nominal: 58, mass: 57.9666 },\n            { nominal: 59, mass: 58.97247 },\n            { nominal: 60, mass: 59.97603 },\n            { nominal: 61, mass: 60.98245 },\n            { nominal: 62, mass: 61.98651 },\n            { nominal: 63, mass: 62.99375 },\n        ],\n        symbol: 'Ti',\n        mass: 47.866744962721995,\n        name: 'Titanium',\n        monoisotopicMass: 47.94794198,\n    },\n    {\n        number: 23,\n        isotopes: [\n            { nominal: 40, mass: 40.01276 },\n            { nominal: 41, mass: 41.00021 },\n            { nominal: 42, mass: 41.99182 },\n            { nominal: 43, mass: 42.980766 },\n            { nominal: 44, mass: 43.97411 },\n            { nominal: 45, mass: 44.9657748 },\n            { nominal: 46, mass: 45.96019878 },\n            { nominal: 47, mass: 46.95490491 },\n            { nominal: 48, mass: 47.9522522 },\n            { nominal: 49, mass: 48.9485118 },\n            { nominal: 50, mass: 49.94715601, abundance: 0.0025 },\n            { nominal: 51, mass: 50.94395704, abundance: 0.9975 },\n            { nominal: 52, mass: 51.94477301 },\n            { nominal: 53, mass: 52.9443367 },\n            { nominal: 54, mass: 53.946439 },\n            { nominal: 55, mass: 54.94724 },\n            { nominal: 56, mass: 55.95048 },\n            { nominal: 57, mass: 56.95252 },\n            { nominal: 58, mass: 57.95672 },\n            { nominal: 59, mass: 58.95939 },\n            { nominal: 60, mass: 59.96431 },\n            { nominal: 61, mass: 60.96725 },\n            { nominal: 62, mass: 61.97265 },\n            { nominal: 63, mass: 62.97639 },\n            { nominal: 64, mass: 63.98264 },\n            { nominal: 65, mass: 64.9875 },\n            { nominal: 66, mass: 65.99398 },\n        ],\n        symbol: 'V',\n        mass: 50.941465037425004,\n        name: 'Vanadium',\n        monoisotopicMass: 50.94395704,\n    },\n    {\n        number: 24,\n        isotopes: [\n            { nominal: 42, mass: 42.0067 },\n            { nominal: 43, mass: 42.99753 },\n            { nominal: 44, mass: 43.98536 },\n            { nominal: 45, mass: 44.97905 },\n            { nominal: 46, mass: 45.968359 },\n            { nominal: 47, mass: 46.9628974 },\n            { nominal: 48, mass: 47.9540291 },\n            { nominal: 49, mass: 48.9513333 },\n            { nominal: 50, mass: 49.94604183, abundance: 0.04345 },\n            { nominal: 51, mass: 50.94476502 },\n            { nominal: 52, mass: 51.94050623, abundance: 0.83789 },\n            { nominal: 53, mass: 52.94064815, abundance: 0.09501 },\n            { nominal: 54, mass: 53.93887916, abundance: 0.02365 },\n            { nominal: 55, mass: 54.94083843 },\n            { nominal: 56, mass: 55.9406531 },\n            { nominal: 57, mass: 56.943613 },\n            { nominal: 58, mass: 57.94435 },\n            { nominal: 59, mass: 58.94859 },\n            { nominal: 60, mass: 59.95008 },\n            { nominal: 61, mass: 60.95442 },\n            { nominal: 62, mass: 61.9561 },\n            { nominal: 63, mass: 62.96165 },\n            { nominal: 64, mass: 63.96408 },\n            { nominal: 65, mass: 64.96996 },\n            { nominal: 66, mass: 65.97366 },\n            { nominal: 67, mass: 66.98016 },\n            { nominal: 68, mass: 67.98403 },\n        ],\n        symbol: 'Cr',\n        mass: 51.9961317554337,\n        name: 'Chromium',\n        monoisotopicMass: 51.94050623,\n    },\n    {\n        number: 25,\n        isotopes: [\n            { nominal: 44, mass: 44.00715 },\n            { nominal: 45, mass: 44.99449 },\n            { nominal: 46, mass: 45.98609 },\n            { nominal: 47, mass: 46.975775 },\n            { nominal: 48, mass: 47.96852 },\n            { nominal: 49, mass: 48.959595 },\n            { nominal: 50, mass: 49.95423778 },\n            { nominal: 51, mass: 50.94820847 },\n            { nominal: 52, mass: 51.9455639 },\n            { nominal: 53, mass: 52.94128889 },\n            { nominal: 54, mass: 53.9403576 },\n            { nominal: 55, mass: 54.93804391, abundance: 1 },\n            { nominal: 56, mass: 55.93890369 },\n            { nominal: 57, mass: 56.9382861 },\n            { nominal: 58, mass: 57.9400666 },\n            { nominal: 59, mass: 58.9403911 },\n            { nominal: 60, mass: 59.9431366 },\n            { nominal: 61, mass: 60.9444525 },\n            { nominal: 62, mass: 61.94795 },\n            { nominal: 63, mass: 62.9496647 },\n            { nominal: 64, mass: 63.9538494 },\n            { nominal: 65, mass: 64.9560198 },\n            { nominal: 66, mass: 65.960547 },\n            { nominal: 67, mass: 66.96424 },\n            { nominal: 68, mass: 67.96962 },\n            { nominal: 69, mass: 68.97366 },\n            { nominal: 70, mass: 69.97937 },\n            { nominal: 71, mass: 70.98368 },\n        ],\n        symbol: 'Mn',\n        mass: 54.93804391,\n        name: 'Manganese',\n        monoisotopicMass: 54.93804391,\n    },\n    {\n        number: 26,\n        isotopes: [\n            { nominal: 45, mass: 45.01442 },\n            { nominal: 46, mass: 46.00063 },\n            { nominal: 47, mass: 46.99185 },\n            { nominal: 48, mass: 47.98023 },\n            { nominal: 49, mass: 48.973429 },\n            { nominal: 50, mass: 49.962975 },\n            { nominal: 51, mass: 50.956841 },\n            { nominal: 52, mass: 51.9481131 },\n            { nominal: 53, mass: 52.9453064 },\n            { nominal: 54, mass: 53.93960899, abundance: 0.05845 },\n            { nominal: 55, mass: 54.93829199 },\n            { nominal: 56, mass: 55.93493633, abundance: 0.91754 },\n            { nominal: 57, mass: 56.93539284, abundance: 0.02119 },\n            { nominal: 58, mass: 57.93327443, abundance: 0.00282 },\n            { nominal: 59, mass: 58.93487434 },\n            { nominal: 60, mass: 59.9340711 },\n            { nominal: 61, mass: 60.9367462 },\n            { nominal: 62, mass: 61.9367918 },\n            { nominal: 63, mass: 62.9402727 },\n            { nominal: 64, mass: 63.9409878 },\n            { nominal: 65, mass: 64.9450115 },\n            { nominal: 66, mass: 65.94625 },\n            { nominal: 67, mass: 66.95054 },\n            { nominal: 68, mass: 67.95295 },\n            { nominal: 69, mass: 68.95807 },\n            { nominal: 70, mass: 69.96102 },\n            { nominal: 71, mass: 70.96672 },\n            { nominal: 72, mass: 71.96983 },\n            { nominal: 73, mass: 72.97572 },\n            { nominal: 74, mass: 73.97935 },\n        ],\n        symbol: 'Fe',\n        mass: 55.845144433865904,\n        name: 'Iron',\n        monoisotopicMass: 55.93493633,\n    },\n    {\n        number: 27,\n        isotopes: [\n            { nominal: 47, mass: 47.01057 },\n            { nominal: 48, mass: 48.00093 },\n            { nominal: 49, mass: 48.98891 },\n            { nominal: 50, mass: 49.98091 },\n            { nominal: 51, mass: 50.970647 },\n            { nominal: 52, mass: 51.96351 },\n            { nominal: 53, mass: 52.9542041 },\n            { nominal: 54, mass: 53.94845987 },\n            { nominal: 55, mass: 54.9419972 },\n            { nominal: 56, mass: 55.9398388 },\n            { nominal: 57, mass: 56.93629057 },\n            { nominal: 58, mass: 57.9357521 },\n            { nominal: 59, mass: 58.93319429, abundance: 1 },\n            { nominal: 60, mass: 59.9338163 },\n            { nominal: 61, mass: 60.93247662 },\n            { nominal: 62, mass: 61.934059 },\n            { nominal: 63, mass: 62.9336 },\n            { nominal: 64, mass: 63.935811 },\n            { nominal: 65, mass: 64.9364621 },\n            { nominal: 66, mass: 65.939443 },\n            { nominal: 67, mass: 66.9406096 },\n            { nominal: 68, mass: 67.94426 },\n            { nominal: 69, mass: 68.94614 },\n            { nominal: 70, mass: 69.94963 },\n            { nominal: 71, mass: 70.95237 },\n            { nominal: 72, mass: 71.95729 },\n            { nominal: 73, mass: 72.96039 },\n            { nominal: 74, mass: 73.96515 },\n            { nominal: 75, mass: 74.96876 },\n            { nominal: 76, mass: 75.97413 },\n        ],\n        symbol: 'Co',\n        mass: 58.93319429,\n        name: 'Cobalt',\n        monoisotopicMass: 58.93319429,\n    },\n    {\n        number: 28,\n        isotopes: [\n            { nominal: 48, mass: 48.01769 },\n            { nominal: 49, mass: 49.0077 },\n            { nominal: 50, mass: 49.99474 },\n            { nominal: 51, mass: 50.98611 },\n            { nominal: 52, mass: 51.9748 },\n            { nominal: 53, mass: 52.96819 },\n            { nominal: 54, mass: 53.957892 },\n            { nominal: 55, mass: 54.95133063 },\n            { nominal: 56, mass: 55.94212855 },\n            { nominal: 57, mass: 56.93979218 },\n            { nominal: 58, mass: 57.93534241, abundance: 0.68077 },\n            { nominal: 59, mass: 58.9343462 },\n            { nominal: 60, mass: 59.93078588, abundance: 0.26223 },\n            { nominal: 61, mass: 60.93105557, abundance: 0.011399 },\n            { nominal: 62, mass: 61.92834537, abundance: 0.036346 },\n            { nominal: 63, mass: 62.92966963 },\n            { nominal: 64, mass: 63.92796682, abundance: 0.009255 },\n            { nominal: 65, mass: 64.93008517 },\n            { nominal: 66, mass: 65.9291393 },\n            { nominal: 67, mass: 66.9315694 },\n            { nominal: 68, mass: 67.9318688 },\n            { nominal: 69, mass: 68.9356103 },\n            { nominal: 70, mass: 69.9364313 },\n            { nominal: 71, mass: 70.940519 },\n            { nominal: 72, mass: 71.9417859 },\n            { nominal: 73, mass: 72.9462067 },\n            { nominal: 74, mass: 73.94798 },\n            { nominal: 75, mass: 74.9525 },\n            { nominal: 76, mass: 75.95533 },\n            { nominal: 77, mass: 76.96055 },\n            { nominal: 78, mass: 77.96336 },\n            { nominal: 79, mass: 78.97025 },\n        ],\n        symbol: 'Ni',\n        mass: 58.69334710994765,\n        name: 'Nickel',\n        monoisotopicMass: 57.93534241,\n    },\n    {\n        number: 29,\n        isotopes: [\n            { nominal: 52, mass: 51.99671 },\n            { nominal: 53, mass: 52.98459 },\n            { nominal: 54, mass: 53.97666 },\n            { nominal: 55, mass: 54.96604 },\n            { nominal: 56, mass: 55.95895 },\n            { nominal: 57, mass: 56.9492125 },\n            { nominal: 58, mass: 57.94453305 },\n            { nominal: 59, mass: 58.93949748 },\n            { nominal: 60, mass: 59.9373645 },\n            { nominal: 61, mass: 60.9334576 },\n            { nominal: 62, mass: 61.93259541 },\n            { nominal: 63, mass: 62.92959772, abundance: 0.6915 },\n            { nominal: 64, mass: 63.92976434 },\n            { nominal: 65, mass: 64.9277897, abundance: 0.3085 },\n            { nominal: 66, mass: 65.92886903 },\n            { nominal: 67, mass: 66.9277303 },\n            { nominal: 68, mass: 67.9296109 },\n            { nominal: 69, mass: 68.9294293 },\n            { nominal: 70, mass: 69.9323921 },\n            { nominal: 71, mass: 70.9326768 },\n            { nominal: 72, mass: 71.9358203 },\n            { nominal: 73, mass: 72.9366744 },\n            { nominal: 74, mass: 73.9398749 },\n            { nominal: 75, mass: 74.9415226 },\n            { nominal: 76, mass: 75.945275 },\n            { nominal: 77, mass: 76.94792 },\n            { nominal: 78, mass: 77.95223 },\n            { nominal: 79, mass: 78.95502 },\n            { nominal: 80, mass: 79.96089 },\n            { nominal: 81, mass: 80.96587 },\n            { nominal: 82, mass: 81.97244 },\n        ],\n        symbol: 'Cu',\n        mass: 63.54603994583,\n        name: 'Copper',\n        monoisotopicMass: 62.92959772,\n    },\n    {\n        number: 30,\n        isotopes: [\n            { nominal: 54, mass: 53.99204 },\n            { nominal: 55, mass: 54.98398 },\n            { nominal: 56, mass: 55.97254 },\n            { nominal: 57, mass: 56.96506 },\n            { nominal: 58, mass: 57.954591 },\n            { nominal: 59, mass: 58.94931266 },\n            { nominal: 60, mass: 59.9418421 },\n            { nominal: 61, mass: 60.939507 },\n            { nominal: 62, mass: 61.93433397 },\n            { nominal: 63, mass: 62.9332115 },\n            { nominal: 64, mass: 63.92914201, abundance: 0.4917 },\n            { nominal: 65, mass: 64.92924077 },\n            { nominal: 66, mass: 65.92603381, abundance: 0.2773 },\n            { nominal: 67, mass: 66.92712775, abundance: 0.0404 },\n            { nominal: 68, mass: 67.92484455, abundance: 0.1845 },\n            { nominal: 69, mass: 68.9265507 },\n            { nominal: 70, mass: 69.9253192, abundance: 0.0061 },\n            { nominal: 71, mass: 70.9277196 },\n            { nominal: 72, mass: 71.9268428 },\n            { nominal: 73, mass: 72.9295826 },\n            { nominal: 74, mass: 73.9294073 },\n            { nominal: 75, mass: 74.9328402 },\n            { nominal: 76, mass: 75.933115 },\n            { nominal: 77, mass: 76.9368872 },\n            { nominal: 78, mass: 77.9382892 },\n            { nominal: 79, mass: 78.9426381 },\n            { nominal: 80, mass: 79.9445529 },\n            { nominal: 81, mass: 80.9504026 },\n            { nominal: 82, mass: 81.95426 },\n            { nominal: 83, mass: 82.96056 },\n            { nominal: 84, mass: 83.96521 },\n            { nominal: 85, mass: 84.97226 },\n        ],\n        symbol: 'Zn',\n        mass: 65.37778252952499,\n        name: 'Zinc',\n        monoisotopicMass: 63.92914201,\n    },\n    {\n        number: 31,\n        isotopes: [\n            { nominal: 56, mass: 55.99536 },\n            { nominal: 57, mass: 56.9832 },\n            { nominal: 58, mass: 57.97478 },\n            { nominal: 59, mass: 58.96353 },\n            { nominal: 60, mass: 59.95729 },\n            { nominal: 61, mass: 60.949399 },\n            { nominal: 62, mass: 61.94419025 },\n            { nominal: 63, mass: 62.9392942 },\n            { nominal: 64, mass: 63.9368404 },\n            { nominal: 65, mass: 64.93273459 },\n            { nominal: 66, mass: 65.9315894 },\n            { nominal: 67, mass: 66.9282025 },\n            { nominal: 68, mass: 67.9279805 },\n            { nominal: 69, mass: 68.9255735, abundance: 0.60108 },\n            { nominal: 70, mass: 69.9260219 },\n            { nominal: 71, mass: 70.92470258, abundance: 0.39892 },\n            { nominal: 72, mass: 71.92636747 },\n            { nominal: 73, mass: 72.9251747 },\n            { nominal: 74, mass: 73.9269457 },\n            { nominal: 75, mass: 74.9265002 },\n            { nominal: 76, mass: 75.9288276 },\n            { nominal: 77, mass: 76.9291543 },\n            { nominal: 78, mass: 77.9316088 },\n            { nominal: 79, mass: 78.9328523 },\n            { nominal: 80, mass: 79.9364208 },\n            { nominal: 81, mass: 80.9381338 },\n            { nominal: 82, mass: 81.9431765 },\n            { nominal: 83, mass: 82.9471203 },\n            { nominal: 84, mass: 83.95246 },\n            { nominal: 85, mass: 84.95699 },\n            { nominal: 86, mass: 85.96301 },\n            { nominal: 87, mass: 86.96824 },\n        ],\n        symbol: 'Ga',\n        mass: 69.7230660725936,\n        name: 'Gallium',\n        monoisotopicMass: 68.9255735,\n    },\n    {\n        number: 32,\n        isotopes: [\n            { nominal: 58, mass: 57.99172 },\n            { nominal: 59, mass: 58.98249 },\n            { nominal: 60, mass: 59.97036 },\n            { nominal: 61, mass: 60.96379 },\n            { nominal: 62, mass: 61.95502 },\n            { nominal: 63, mass: 62.949628 },\n            { nominal: 64, mass: 63.9416899 },\n            { nominal: 65, mass: 64.9393681 },\n            { nominal: 66, mass: 65.9338621 },\n            { nominal: 67, mass: 66.9327339 },\n            { nominal: 68, mass: 67.9280953 },\n            { nominal: 69, mass: 68.9279645 },\n            { nominal: 70, mass: 69.92424875, abundance: 0.2057 },\n            { nominal: 71, mass: 70.92495233 },\n            { nominal: 72, mass: 71.922075826, abundance: 0.2745 },\n            { nominal: 73, mass: 72.923458956, abundance: 0.0775 },\n            { nominal: 74, mass: 73.921177761, abundance: 0.365 },\n            { nominal: 75, mass: 74.92285837 },\n            { nominal: 76, mass: 75.921402726, abundance: 0.0773 },\n            { nominal: 77, mass: 76.923549843 },\n            { nominal: 78, mass: 77.9228529 },\n            { nominal: 79, mass: 78.92536 },\n            { nominal: 80, mass: 79.9253508 },\n            { nominal: 81, mass: 80.9288329 },\n            { nominal: 82, mass: 81.929774 },\n            { nominal: 83, mass: 82.9345391 },\n            { nominal: 84, mass: 83.9375751 },\n            { nominal: 85, mass: 84.9429697 },\n            { nominal: 86, mass: 85.94658 },\n            { nominal: 87, mass: 86.95268 },\n            { nominal: 88, mass: 87.95691 },\n            { nominal: 89, mass: 88.96379 },\n            { nominal: 90, mass: 89.96863 },\n        ],\n        symbol: 'Ge',\n        mass: 72.6275501646868,\n        name: 'Germanium',\n        monoisotopicMass: 73.921177761,\n    },\n    {\n        number: 33,\n        isotopes: [\n            { nominal: 60, mass: 59.99388 },\n            { nominal: 61, mass: 60.98112 },\n            { nominal: 62, mass: 61.97361 },\n            { nominal: 63, mass: 62.9639 },\n            { nominal: 64, mass: 63.95743 },\n            { nominal: 65, mass: 64.949611 },\n            { nominal: 66, mass: 65.9441488 },\n            { nominal: 67, mass: 66.93925111 },\n            { nominal: 68, mass: 67.9367741 },\n            { nominal: 69, mass: 68.932246 },\n            { nominal: 70, mass: 69.930926 },\n            { nominal: 71, mass: 70.9271138 },\n            { nominal: 72, mass: 71.9267523 },\n            { nominal: 73, mass: 72.9238291 },\n            { nominal: 74, mass: 73.9239286 },\n            { nominal: 75, mass: 74.92159457, abundance: 1 },\n            { nominal: 76, mass: 75.92239202 },\n            { nominal: 77, mass: 76.9206476 },\n            { nominal: 78, mass: 77.921828 },\n            { nominal: 79, mass: 78.9209484 },\n            { nominal: 80, mass: 79.9224746 },\n            { nominal: 81, mass: 80.9221323 },\n            { nominal: 82, mass: 81.9247412 },\n            { nominal: 83, mass: 82.9252069 },\n            { nominal: 84, mass: 83.9293033 },\n            { nominal: 85, mass: 84.9321637 },\n            { nominal: 86, mass: 85.9367015 },\n            { nominal: 87, mass: 86.9402917 },\n            { nominal: 88, mass: 87.94555 },\n            { nominal: 89, mass: 88.94976 },\n            { nominal: 90, mass: 89.95563 },\n            { nominal: 91, mass: 90.96039 },\n            { nominal: 92, mass: 91.96674 },\n        ],\n        symbol: 'As',\n        mass: 74.92159457,\n        name: 'Arsenic',\n        monoisotopicMass: 74.92159457,\n    },\n    {\n        number: 34,\n        isotopes: [\n            { nominal: 64, mass: 63.97109 },\n            { nominal: 65, mass: 64.9644 },\n            { nominal: 66, mass: 65.95559 },\n            { nominal: 67, mass: 66.949994 },\n            { nominal: 68, mass: 67.94182524 },\n            { nominal: 69, mass: 68.9394148 },\n            { nominal: 70, mass: 69.9335155 },\n            { nominal: 71, mass: 70.9322094 },\n            { nominal: 72, mass: 71.9271405 },\n            { nominal: 73, mass: 72.9267549 },\n            { nominal: 74, mass: 73.922475934, abundance: 0.0089 },\n            { nominal: 75, mass: 74.92252287 },\n            { nominal: 76, mass: 75.919213704, abundance: 0.0937 },\n            { nominal: 77, mass: 76.919914154, abundance: 0.0763 },\n            { nominal: 78, mass: 77.91730928, abundance: 0.2377 },\n            { nominal: 79, mass: 78.91849929 },\n            { nominal: 80, mass: 79.9165218, abundance: 0.4961 },\n            { nominal: 81, mass: 80.917993 },\n            { nominal: 82, mass: 81.9166995, abundance: 0.0873 },\n            { nominal: 83, mass: 82.9191186 },\n            { nominal: 84, mass: 83.9184668 },\n            { nominal: 85, mass: 84.9222608 },\n            { nominal: 86, mass: 85.9243117 },\n            { nominal: 87, mass: 86.9286886 },\n            { nominal: 88, mass: 87.9314175 },\n            { nominal: 89, mass: 88.9366691 },\n            { nominal: 90, mass: 89.9401 },\n            { nominal: 91, mass: 90.94596 },\n            { nominal: 92, mass: 91.94984 },\n            { nominal: 93, mass: 92.95629 },\n            { nominal: 94, mass: 93.96049 },\n            { nominal: 95, mass: 94.9673 },\n        ],\n        symbol: 'Se',\n        mass: 78.95938855701361,\n        name: 'Selenium',\n        monoisotopicMass: 79.9165218,\n    },\n    {\n        number: 35,\n        isotopes: [\n            { nominal: 67, mass: 66.96465 },\n            { nominal: 68, mass: 67.95873 },\n            { nominal: 69, mass: 68.950497 },\n            { nominal: 70, mass: 69.944792 },\n            { nominal: 71, mass: 70.9393422 },\n            { nominal: 72, mass: 71.9365886 },\n            { nominal: 73, mass: 72.9316715 },\n            { nominal: 74, mass: 73.9299102 },\n            { nominal: 75, mass: 74.9258105 },\n            { nominal: 76, mass: 75.924542 },\n            { nominal: 77, mass: 76.9213792 },\n            { nominal: 78, mass: 77.9211459 },\n            { nominal: 79, mass: 78.9183376, abundance: 0.5069 },\n            { nominal: 80, mass: 79.9185298 },\n            { nominal: 81, mass: 80.9162897, abundance: 0.4931 },\n            { nominal: 82, mass: 81.9168032 },\n            { nominal: 83, mass: 82.9151756 },\n            { nominal: 84, mass: 83.916496 },\n            { nominal: 85, mass: 84.9156458 },\n            { nominal: 86, mass: 85.9188054 },\n            { nominal: 87, mass: 86.920674 },\n            { nominal: 88, mass: 87.9240833 },\n            { nominal: 89, mass: 88.9267046 },\n            { nominal: 90, mass: 89.9312928 },\n            { nominal: 91, mass: 90.9343986 },\n            { nominal: 92, mass: 91.9396316 },\n            { nominal: 93, mass: 92.94313 },\n            { nominal: 94, mass: 93.9489 },\n            { nominal: 95, mass: 94.95301 },\n            { nominal: 96, mass: 95.95903 },\n            { nominal: 97, mass: 96.96344 },\n            { nominal: 98, mass: 97.96946 },\n        ],\n        symbol: 'Br',\n        mass: 79.90352778050999,\n        name: 'Bromine',\n        monoisotopicMass: 78.9183376,\n    },\n    {\n        number: 36,\n        isotopes: [\n            { nominal: 69, mass: 68.96518 },\n            { nominal: 70, mass: 69.95604 },\n            { nominal: 71, mass: 70.95027 },\n            { nominal: 72, mass: 71.9420924 },\n            { nominal: 73, mass: 72.9392892 },\n            { nominal: 74, mass: 73.933084 },\n            { nominal: 75, mass: 74.9309457 },\n            { nominal: 76, mass: 75.9259103 },\n            { nominal: 77, mass: 76.92467 },\n            { nominal: 78, mass: 77.92036494, abundance: 0.00355 },\n            { nominal: 79, mass: 78.9200829 },\n            { nominal: 80, mass: 79.91637808, abundance: 0.02286 },\n            { nominal: 81, mass: 80.9165912 },\n            { nominal: 82, mass: 81.91348273, abundance: 0.11593 },\n            { nominal: 83, mass: 82.91412716, abundance: 0.115 },\n            { nominal: 84, mass: 83.9114977282, abundance: 0.56987 },\n            { nominal: 85, mass: 84.9125273 },\n            { nominal: 86, mass: 85.9106106269, abundance: 0.17279 },\n            { nominal: 87, mass: 86.91335476 },\n            { nominal: 88, mass: 87.9144479 },\n            { nominal: 89, mass: 88.9178355 },\n            { nominal: 90, mass: 89.9195279 },\n            { nominal: 91, mass: 90.9238063 },\n            { nominal: 92, mass: 91.9261731 },\n            { nominal: 93, mass: 92.9311472 },\n            { nominal: 94, mass: 93.93414 },\n            { nominal: 95, mass: 94.939711 },\n            { nominal: 96, mass: 95.943017 },\n            { nominal: 97, mass: 96.94909 },\n            { nominal: 98, mass: 97.95243 },\n            { nominal: 99, mass: 98.95839 },\n            { nominal: 100, mass: 99.96237 },\n            { nominal: 101, mass: 100.96873 },\n        ],\n        symbol: 'Kr',\n        mass: 83.7979999953261,\n        name: 'Krypton',\n        monoisotopicMass: 83.9114977282,\n    },\n    {\n        number: 37,\n        isotopes: [\n            { nominal: 71, mass: 70.96532 },\n            { nominal: 72, mass: 71.95908 },\n            { nominal: 73, mass: 72.95053 },\n            { nominal: 74, mass: 73.9442659 },\n            { nominal: 75, mass: 74.9385732 },\n            { nominal: 76, mass: 75.935073 },\n            { nominal: 77, mass: 76.9304016 },\n            { nominal: 78, mass: 77.9281419 },\n            { nominal: 79, mass: 78.9239899 },\n            { nominal: 80, mass: 79.9225164 },\n            { nominal: 81, mass: 80.9189939 },\n            { nominal: 82, mass: 81.918209 },\n            { nominal: 83, mass: 82.9151142 },\n            { nominal: 84, mass: 83.9143752 },\n            { nominal: 85, mass: 84.9117897379, abundance: 0.7217 },\n            { nominal: 86, mass: 85.91116743 },\n            { nominal: 87, mass: 86.909180531, abundance: 0.2783 },\n            { nominal: 88, mass: 87.91131559 },\n            { nominal: 89, mass: 88.9122783 },\n            { nominal: 90, mass: 89.9147985 },\n            { nominal: 91, mass: 90.9165372 },\n            { nominal: 92, mass: 91.9197284 },\n            { nominal: 93, mass: 92.9220393 },\n            { nominal: 94, mass: 93.9263948 },\n            { nominal: 95, mass: 94.92926 },\n            { nominal: 96, mass: 95.9341334 },\n            { nominal: 97, mass: 96.9371771 },\n            { nominal: 98, mass: 97.9416869 },\n            { nominal: 99, mass: 98.94503 },\n            { nominal: 100, mass: 99.95003 },\n            { nominal: 101, mass: 100.95404 },\n            { nominal: 102, mass: 101.95952 },\n            { nominal: 103, mass: 102.96392 },\n        ],\n        symbol: 'Rb',\n        mass: 85.46766359561973,\n        name: 'Rubidium',\n        monoisotopicMass: 84.9117897379,\n    },\n    {\n        number: 38,\n        isotopes: [\n            { nominal: 73, mass: 72.9657 },\n            { nominal: 74, mass: 73.95617 },\n            { nominal: 75, mass: 74.94995 },\n            { nominal: 76, mass: 75.941763 },\n            { nominal: 77, mass: 76.9379455 },\n            { nominal: 78, mass: 77.93218 },\n            { nominal: 79, mass: 78.9297077 },\n            { nominal: 80, mass: 79.9245175 },\n            { nominal: 81, mass: 80.9232114 },\n            { nominal: 82, mass: 81.9183999 },\n            { nominal: 83, mass: 82.9175544 },\n            { nominal: 84, mass: 83.9134191, abundance: 0.0056 },\n            { nominal: 85, mass: 84.912932 },\n            { nominal: 86, mass: 85.9092606, abundance: 0.0986 },\n            { nominal: 87, mass: 86.9088775, abundance: 0.07 },\n            { nominal: 88, mass: 87.9056125, abundance: 0.8258 },\n            { nominal: 89, mass: 88.9074511 },\n            { nominal: 90, mass: 89.90773 },\n            { nominal: 91, mass: 90.9101954 },\n            { nominal: 92, mass: 91.9110382 },\n            { nominal: 93, mass: 92.9140242 },\n            { nominal: 94, mass: 93.9153556 },\n            { nominal: 95, mass: 94.9193529 },\n            { nominal: 96, mass: 95.9217066 },\n            { nominal: 97, mass: 96.926374 },\n            { nominal: 98, mass: 97.9286888 },\n            { nominal: 99, mass: 98.9328907 },\n            { nominal: 100, mass: 99.93577 },\n            { nominal: 101, mass: 100.940352 },\n            { nominal: 102, mass: 101.943791 },\n            { nominal: 103, mass: 102.94909 },\n            { nominal: 104, mass: 103.95265 },\n            { nominal: 105, mass: 104.95855 },\n            { nominal: 106, mass: 105.96265 },\n            { nominal: 107, mass: 106.96897 },\n        ],\n        symbol: 'Sr',\n        mass: 87.61664446962,\n        name: 'Strontium',\n        monoisotopicMass: 87.9056125,\n    },\n    {\n        number: 39,\n        isotopes: [\n            { nominal: 76, mass: 75.95856 },\n            { nominal: 77, mass: 76.949781 },\n            { nominal: 78, mass: 77.94361 },\n            { nominal: 79, mass: 78.93735 },\n            { nominal: 80, mass: 79.9343561 },\n            { nominal: 81, mass: 80.9294556 },\n            { nominal: 82, mass: 81.9269314 },\n            { nominal: 83, mass: 82.922485 },\n            { nominal: 84, mass: 83.9206721 },\n            { nominal: 85, mass: 84.916433 },\n            { nominal: 86, mass: 85.914886 },\n            { nominal: 87, mass: 86.9108761 },\n            { nominal: 88, mass: 87.9095016 },\n            { nominal: 89, mass: 88.9058403, abundance: 1 },\n            { nominal: 90, mass: 89.9071439 },\n            { nominal: 91, mass: 90.9072974 },\n            { nominal: 92, mass: 91.9089451 },\n            { nominal: 93, mass: 92.909578 },\n            { nominal: 94, mass: 93.9115906 },\n            { nominal: 95, mass: 94.9128161 },\n            { nominal: 96, mass: 95.9158968 },\n            { nominal: 97, mass: 96.9182741 },\n            { nominal: 98, mass: 97.9223821 },\n            { nominal: 99, mass: 98.924148 },\n            { nominal: 100, mass: 99.927715 },\n            { nominal: 101, mass: 100.9301477 },\n            { nominal: 102, mass: 101.9343277 },\n            { nominal: 103, mass: 102.937243 },\n            { nominal: 104, mass: 103.94196 },\n            { nominal: 105, mass: 104.94544 },\n            { nominal: 106, mass: 105.95056 },\n            { nominal: 107, mass: 106.95452 },\n            { nominal: 108, mass: 107.95996 },\n            { nominal: 109, mass: 108.96436 },\n        ],\n        symbol: 'Y',\n        mass: 88.9058403,\n        name: 'Yttrium',\n        monoisotopicMass: 88.9058403,\n    },\n    {\n        number: 40,\n        isotopes: [\n            { nominal: 78, mass: 77.95566 },\n            { nominal: 79, mass: 78.94948 },\n            { nominal: 80, mass: 79.9404 },\n            { nominal: 81, mass: 80.93731 },\n            { nominal: 82, mass: 81.93135 },\n            { nominal: 83, mass: 82.9292421 },\n            { nominal: 84, mass: 83.9233269 },\n            { nominal: 85, mass: 84.9214444 },\n            { nominal: 86, mass: 85.9162972 },\n            { nominal: 87, mass: 86.914818 },\n            { nominal: 88, mass: 87.9102213 },\n            { nominal: 89, mass: 88.9088814 },\n            { nominal: 90, mass: 89.9046977, abundance: 0.5145 },\n            { nominal: 91, mass: 90.9056396, abundance: 0.1122 },\n            { nominal: 92, mass: 91.9050347, abundance: 0.1715 },\n            { nominal: 93, mass: 92.9064699 },\n            { nominal: 94, mass: 93.9063108, abundance: 0.1738 },\n            { nominal: 95, mass: 94.9080385 },\n            { nominal: 96, mass: 95.9082714, abundance: 0.028 },\n            { nominal: 97, mass: 96.9109512 },\n            { nominal: 98, mass: 97.9127289 },\n            { nominal: 99, mass: 98.916667 },\n            { nominal: 100, mass: 99.9180006 },\n            { nominal: 101, mass: 100.921448 },\n            { nominal: 102, mass: 101.9231409 },\n            { nominal: 103, mass: 102.927191 },\n            { nominal: 104, mass: 103.929436 },\n            { nominal: 105, mass: 104.934008 },\n            { nominal: 106, mass: 105.93676 },\n            { nominal: 107, mass: 106.94174 },\n            { nominal: 108, mass: 107.94487 },\n            { nominal: 109, mass: 108.95041 },\n            { nominal: 110, mass: 109.95396 },\n            { nominal: 111, mass: 110.95968 },\n            { nominal: 112, mass: 111.9637 },\n        ],\n        symbol: 'Zr',\n        mass: 91.22364159706,\n        name: 'Zirconium',\n        monoisotopicMass: 89.9046977,\n    },\n    {\n        number: 41,\n        isotopes: [\n            { nominal: 81, mass: 80.9496 },\n            { nominal: 82, mass: 81.94396 },\n            { nominal: 83, mass: 82.93729 },\n            { nominal: 84, mass: 83.93449 },\n            { nominal: 85, mass: 84.9288458 },\n            { nominal: 86, mass: 85.9257828 },\n            { nominal: 87, mass: 86.9206937 },\n            { nominal: 88, mass: 87.918222 },\n            { nominal: 89, mass: 88.913445 },\n            { nominal: 90, mass: 89.9112584 },\n            { nominal: 91, mass: 90.9069897 },\n            { nominal: 92, mass: 91.9071881 },\n            { nominal: 93, mass: 92.906373, abundance: 1 },\n            { nominal: 94, mass: 93.9072788 },\n            { nominal: 95, mass: 94.9068324 },\n            { nominal: 96, mass: 95.9080973 },\n            { nominal: 97, mass: 96.9080959 },\n            { nominal: 98, mass: 97.9103265 },\n            { nominal: 99, mass: 98.911613 },\n            { nominal: 100, mass: 99.9143276 },\n            { nominal: 101, mass: 100.9153103 },\n            { nominal: 102, mass: 101.9180772 },\n            { nominal: 103, mass: 102.9194572 },\n            { nominal: 104, mass: 103.9228925 },\n            { nominal: 105, mass: 104.9249465 },\n            { nominal: 106, mass: 105.9289317 },\n            { nominal: 107, mass: 106.9315937 },\n            { nominal: 108, mass: 107.9360748 },\n            { nominal: 109, mass: 108.93922 },\n            { nominal: 110, mass: 109.94403 },\n            { nominal: 111, mass: 110.94753 },\n            { nominal: 112, mass: 111.95247 },\n            { nominal: 113, mass: 112.95651 },\n            { nominal: 114, mass: 113.96201 },\n            { nominal: 115, mass: 114.96634 },\n        ],\n        symbol: 'Nb',\n        mass: 92.906373,\n        name: 'Niobium',\n        monoisotopicMass: 92.906373,\n    },\n    {\n        number: 42,\n        isotopes: [\n            { nominal: 83, mass: 82.94988 },\n            { nominal: 84, mass: 83.94149 },\n            { nominal: 85, mass: 84.938261 },\n            { nominal: 86, mass: 85.9311748 },\n            { nominal: 87, mass: 86.9281962 },\n            { nominal: 88, mass: 87.9219678 },\n            { nominal: 89, mass: 88.9194682 },\n            { nominal: 90, mass: 89.9139309 },\n            { nominal: 91, mass: 90.9117453 },\n            { nominal: 92, mass: 91.90680796, abundance: 0.1453 },\n            { nominal: 93, mass: 92.90680958 },\n            { nominal: 94, mass: 93.9050849, abundance: 0.0915 },\n            { nominal: 95, mass: 94.90583877, abundance: 0.1584 },\n            { nominal: 96, mass: 95.90467612, abundance: 0.1667 },\n            { nominal: 97, mass: 96.90601812, abundance: 0.096 },\n            { nominal: 98, mass: 97.90540482, abundance: 0.2439 },\n            { nominal: 99, mass: 98.90770851 },\n            { nominal: 100, mass: 99.9074718, abundance: 0.0982 },\n            { nominal: 101, mass: 100.9103414 },\n            { nominal: 102, mass: 101.9102834 },\n            { nominal: 103, mass: 102.913079 },\n            { nominal: 104, mass: 103.9137344 },\n            { nominal: 105, mass: 104.916969 },\n            { nominal: 106, mass: 105.918259 },\n            { nominal: 107, mass: 106.922106 },\n            { nominal: 108, mass: 107.924033 },\n            { nominal: 109, mass: 108.928424 },\n            { nominal: 110, mass: 109.930704 },\n            { nominal: 111, mass: 110.935654 },\n            { nominal: 112, mass: 111.93831 },\n            { nominal: 113, mass: 112.94335 },\n            { nominal: 114, mass: 113.94653 },\n            { nominal: 115, mass: 114.95196 },\n            { nominal: 116, mass: 115.95545 },\n            { nominal: 117, mass: 116.96117 },\n        ],\n        symbol: 'Mo',\n        mass: 95.959788541188,\n        name: 'Molybdenum',\n        monoisotopicMass: 97.90540482,\n    },\n    {\n        number: 43,\n        isotopes: [\n            { nominal: 85, mass: 84.95058 },\n            { nominal: 86, mass: 85.94493 },\n            { nominal: 87, mass: 86.9380672 },\n            { nominal: 88, mass: 87.93378 },\n            { nominal: 89, mass: 88.9276487 },\n            { nominal: 90, mass: 89.9240739 },\n            { nominal: 91, mass: 90.9184254 },\n            { nominal: 92, mass: 91.9152698 },\n            { nominal: 93, mass: 92.910246 },\n            { nominal: 94, mass: 93.9096536 },\n            { nominal: 95, mass: 94.9076536 },\n            { nominal: 96, mass: 95.907868 },\n            { nominal: 97, mass: 96.9063667 },\n            { nominal: 98, mass: 97.9072124 },\n            { nominal: 99, mass: 98.9062508 },\n            { nominal: 100, mass: 99.9076539 },\n            { nominal: 101, mass: 100.907309 },\n            { nominal: 102, mass: 101.9092097 },\n            { nominal: 103, mass: 102.909176 },\n            { nominal: 104, mass: 103.911425 },\n            { nominal: 105, mass: 104.911655 },\n            { nominal: 106, mass: 105.914358 },\n            { nominal: 107, mass: 106.9154606 },\n            { nominal: 108, mass: 107.9184957 },\n            { nominal: 109, mass: 108.920256 },\n            { nominal: 110, mass: 109.923744 },\n            { nominal: 111, mass: 110.925901 },\n            { nominal: 112, mass: 111.9299458 },\n            { nominal: 113, mass: 112.932569 },\n            { nominal: 114, mass: 113.93691 },\n            { nominal: 115, mass: 114.93998 },\n            { nominal: 116, mass: 115.94476 },\n            { nominal: 117, mass: 116.94806 },\n            { nominal: 118, mass: 117.95299 },\n            { nominal: 119, mass: 118.95666 },\n            { nominal: 120, mass: 119.96187 },\n        ],\n        symbol: 'Tc',\n        mass: null,\n        name: 'Technetium',\n    },\n    {\n        number: 44,\n        isotopes: [\n            { nominal: 87, mass: 86.95069 },\n            { nominal: 88, mass: 87.9416 },\n            { nominal: 89, mass: 88.93762 },\n            { nominal: 90, mass: 89.9303444 },\n            { nominal: 91, mass: 90.9267419 },\n            { nominal: 92, mass: 91.9202344 },\n            { nominal: 93, mass: 92.9171044 },\n            { nominal: 94, mass: 93.9113429 },\n            { nominal: 95, mass: 94.910406 },\n            { nominal: 96, mass: 95.90759025, abundance: 0.0554 },\n            { nominal: 97, mass: 96.9075471 },\n            { nominal: 98, mass: 97.9052868, abundance: 0.0187 },\n            { nominal: 99, mass: 98.9059341, abundance: 0.1276 },\n            { nominal: 100, mass: 99.9042143, abundance: 0.126 },\n            { nominal: 101, mass: 100.9055769, abundance: 0.1706 },\n            { nominal: 102, mass: 101.9043441, abundance: 0.3155 },\n            { nominal: 103, mass: 102.9063186 },\n            { nominal: 104, mass: 103.9054275, abundance: 0.1862 },\n            { nominal: 105, mass: 104.9077476 },\n            { nominal: 106, mass: 105.9073291 },\n            { nominal: 107, mass: 106.909972 },\n            { nominal: 108, mass: 107.910188 },\n            { nominal: 109, mass: 108.913326 },\n            { nominal: 110, mass: 109.9140407 },\n            { nominal: 111, mass: 110.91757 },\n            { nominal: 112, mass: 111.918809 },\n            { nominal: 113, mass: 112.922844 },\n            { nominal: 114, mass: 113.9246136 },\n            { nominal: 115, mass: 114.92882 },\n            { nominal: 116, mass: 115.9312192 },\n            { nominal: 117, mass: 116.9361 },\n            { nominal: 118, mass: 117.93853 },\n            { nominal: 119, mass: 118.94357 },\n            { nominal: 120, mass: 119.94631 },\n            { nominal: 121, mass: 120.95164 },\n            { nominal: 122, mass: 121.95447 },\n            { nominal: 123, mass: 122.95989 },\n            { nominal: 124, mass: 123.96305 },\n        ],\n        symbol: 'Ru',\n        mass: 101.06494013916,\n        name: 'Ruthenium',\n        monoisotopicMass: 101.9043441,\n    },\n    {\n        number: 45,\n        isotopes: [\n            { nominal: 89, mass: 88.95058 },\n            { nominal: 90, mass: 89.94422 },\n            { nominal: 91, mass: 90.93688 },\n            { nominal: 92, mass: 91.9323677 },\n            { nominal: 93, mass: 92.9259128 },\n            { nominal: 94, mass: 93.9217305 },\n            { nominal: 95, mass: 94.9158979 },\n            { nominal: 96, mass: 95.914453 },\n            { nominal: 97, mass: 96.911329 },\n            { nominal: 98, mass: 97.910708 },\n            { nominal: 99, mass: 98.9081282 },\n            { nominal: 100, mass: 99.908117 },\n            { nominal: 101, mass: 100.9061606 },\n            { nominal: 102, mass: 101.9068374 },\n            { nominal: 103, mass: 102.905498, abundance: 1 },\n            { nominal: 104, mass: 103.9066492 },\n            { nominal: 105, mass: 104.9056885 },\n            { nominal: 106, mass: 105.9072868 },\n            { nominal: 107, mass: 106.906748 },\n            { nominal: 108, mass: 107.908714 },\n            { nominal: 109, mass: 108.9087488 },\n            { nominal: 110, mass: 109.911079 },\n            { nominal: 111, mass: 110.9116423 },\n            { nominal: 112, mass: 111.914403 },\n            { nominal: 113, mass: 112.9154393 },\n            { nominal: 114, mass: 113.918718 },\n            { nominal: 115, mass: 114.9203116 },\n            { nominal: 116, mass: 115.924059 },\n            { nominal: 117, mass: 116.9260354 },\n            { nominal: 118, mass: 117.93034 },\n            { nominal: 119, mass: 118.932557 },\n            { nominal: 120, mass: 119.93686 },\n            { nominal: 121, mass: 120.93942 },\n            { nominal: 122, mass: 121.94399 },\n            { nominal: 123, mass: 122.94685 },\n            { nominal: 124, mass: 123.95151 },\n            { nominal: 125, mass: 124.95469 },\n            { nominal: 126, mass: 125.95946 },\n        ],\n        symbol: 'Rh',\n        mass: 102.905498,\n        name: 'Rhodium',\n        monoisotopicMass: 102.905498,\n    },\n    {\n        number: 46,\n        isotopes: [\n            { nominal: 91, mass: 90.95032 },\n            { nominal: 92, mass: 91.94088 },\n            { nominal: 93, mass: 92.93651 },\n            { nominal: 94, mass: 93.9290376 },\n            { nominal: 95, mass: 94.9248898 },\n            { nominal: 96, mass: 95.9182151 },\n            { nominal: 97, mass: 96.916472 },\n            { nominal: 98, mass: 97.9126983 },\n            { nominal: 99, mass: 98.9117748 },\n            { nominal: 100, mass: 99.908505 },\n            { nominal: 101, mass: 100.9082864 },\n            { nominal: 102, mass: 101.9056022, abundance: 0.0102 },\n            { nominal: 103, mass: 102.9060809 },\n            { nominal: 104, mass: 103.9040305, abundance: 0.1114 },\n            { nominal: 105, mass: 104.9050796, abundance: 0.2233 },\n            { nominal: 106, mass: 105.9034804, abundance: 0.2733 },\n            { nominal: 107, mass: 106.9051282 },\n            { nominal: 108, mass: 107.9038916, abundance: 0.2646 },\n            { nominal: 109, mass: 108.9059504 },\n            { nominal: 110, mass: 109.9051722, abundance: 0.1172 },\n            { nominal: 111, mass: 110.90768968 },\n            { nominal: 112, mass: 111.9073297 },\n            { nominal: 113, mass: 112.910261 },\n            { nominal: 114, mass: 113.9103686 },\n            { nominal: 115, mass: 114.913659 },\n            { nominal: 116, mass: 115.914297 },\n            { nominal: 117, mass: 116.9179547 },\n            { nominal: 118, mass: 117.9190667 },\n            { nominal: 119, mass: 118.9233402 },\n            { nominal: 120, mass: 119.9245511 },\n            { nominal: 121, mass: 120.9289503 },\n            { nominal: 122, mass: 121.930632 },\n            { nominal: 123, mass: 122.93514 },\n            { nominal: 124, mass: 123.93714 },\n            { nominal: 125, mass: 124.94179 },\n            { nominal: 126, mass: 125.94416 },\n            { nominal: 127, mass: 126.94907 },\n            { nominal: 128, mass: 127.95183 },\n        ],\n        symbol: 'Pd',\n        mass: 106.41532750734,\n        name: 'Palladium',\n        monoisotopicMass: 105.9034804,\n    },\n    {\n        number: 47,\n        isotopes: [\n            { nominal: 93, mass: 92.95033 },\n            { nominal: 94, mass: 93.94373 },\n            { nominal: 95, mass: 94.93602 },\n            { nominal: 96, mass: 95.930744 },\n            { nominal: 97, mass: 96.92397 },\n            { nominal: 98, mass: 97.92156 },\n            { nominal: 99, mass: 98.9176458 },\n            { nominal: 100, mass: 99.9161154 },\n            { nominal: 101, mass: 100.912684 },\n            { nominal: 102, mass: 101.9117047 },\n            { nominal: 103, mass: 102.9089631 },\n            { nominal: 104, mass: 103.9086239 },\n            { nominal: 105, mass: 104.9065256 },\n            { nominal: 106, mass: 105.9066636 },\n            { nominal: 107, mass: 106.9050916, abundance: 0.51839 },\n            { nominal: 108, mass: 107.9059503 },\n            { nominal: 109, mass: 108.9047553, abundance: 0.48161 },\n            { nominal: 110, mass: 109.9061102 },\n            { nominal: 111, mass: 110.9052959 },\n            { nominal: 112, mass: 111.9070486 },\n            { nominal: 113, mass: 112.906573 },\n            { nominal: 114, mass: 113.908823 },\n            { nominal: 115, mass: 114.908767 },\n            { nominal: 116, mass: 115.9113868 },\n            { nominal: 117, mass: 116.911774 },\n            { nominal: 118, mass: 117.9145955 },\n            { nominal: 119, mass: 118.91557 },\n            { nominal: 120, mass: 119.9187848 },\n            { nominal: 121, mass: 120.920125 },\n            { nominal: 122, mass: 121.923664 },\n            { nominal: 123, mass: 122.925337 },\n            { nominal: 124, mass: 123.92893 },\n            { nominal: 125, mass: 124.93105 },\n            { nominal: 126, mass: 125.93475 },\n            { nominal: 127, mass: 126.93711 },\n            { nominal: 128, mass: 127.94106 },\n            { nominal: 129, mass: 128.94395 },\n            { nominal: 130, mass: 129.9507 },\n        ],\n        symbol: 'Ag',\n        mass: 107.868149634557,\n        name: 'Silver',\n        monoisotopicMass: 106.9050916,\n    },\n    {\n        number: 48,\n        isotopes: [\n            { nominal: 95, mass: 94.94994 },\n            { nominal: 96, mass: 95.94034 },\n            { nominal: 97, mass: 96.9351 },\n            { nominal: 98, mass: 97.927389 },\n            { nominal: 99, mass: 98.9249258 },\n            { nominal: 100, mass: 99.9203488 },\n            { nominal: 101, mass: 100.9185862 },\n            { nominal: 102, mass: 101.914482 },\n            { nominal: 103, mass: 102.9134165 },\n            { nominal: 104, mass: 103.9098564 },\n            { nominal: 105, mass: 104.9094639 },\n            { nominal: 106, mass: 105.9064599, abundance: 0.0125 },\n            { nominal: 107, mass: 106.9066121 },\n            { nominal: 108, mass: 107.9041834, abundance: 0.0089 },\n            { nominal: 109, mass: 108.9049867 },\n            { nominal: 110, mass: 109.90300661, abundance: 0.1249 },\n            { nominal: 111, mass: 110.90418287, abundance: 0.128 },\n            { nominal: 112, mass: 111.90276287, abundance: 0.2413 },\n            { nominal: 113, mass: 112.90440813, abundance: 0.1222 },\n            { nominal: 114, mass: 113.90336509, abundance: 0.2873 },\n            { nominal: 115, mass: 114.90543751 },\n            { nominal: 116, mass: 115.90476315, abundance: 0.0749 },\n            { nominal: 117, mass: 116.907226 },\n            { nominal: 118, mass: 117.906922 },\n            { nominal: 119, mass: 118.909847 },\n            { nominal: 120, mass: 119.9098681 },\n            { nominal: 121, mass: 120.9129637 },\n            { nominal: 122, mass: 121.9134591 },\n            { nominal: 123, mass: 122.9168925 },\n            { nominal: 124, mass: 123.9176574 },\n            { nominal: 125, mass: 124.9212576 },\n            { nominal: 126, mass: 125.9224291 },\n            { nominal: 127, mass: 126.926472 },\n            { nominal: 128, mass: 127.9278129 },\n            { nominal: 129, mass: 128.93182 },\n            { nominal: 130, mass: 129.93394 },\n            { nominal: 131, mass: 130.9406 },\n            { nominal: 132, mass: 131.94604 },\n            { nominal: 133, mass: 132.95285 },\n        ],\n        symbol: 'Cd',\n        mass: 112.411557818268,\n        name: 'Cadmium',\n        monoisotopicMass: 113.90336509,\n    },\n    {\n        number: 49,\n        isotopes: [\n            { nominal: 97, mass: 96.94934 },\n            { nominal: 98, mass: 97.94214 },\n            { nominal: 99, mass: 98.93411 },\n            { nominal: 100, mass: 99.93096 },\n            { nominal: 101, mass: 100.92634 },\n            { nominal: 102, mass: 101.9241071 },\n            { nominal: 103, mass: 102.9198819 },\n            { nominal: 104, mass: 103.9182145 },\n            { nominal: 105, mass: 104.914502 },\n            { nominal: 106, mass: 105.913464 },\n            { nominal: 107, mass: 106.91029 },\n            { nominal: 108, mass: 107.9096935 },\n            { nominal: 109, mass: 108.9071514 },\n            { nominal: 110, mass: 109.90717 },\n            { nominal: 111, mass: 110.9051085 },\n            { nominal: 112, mass: 111.9055377 },\n            { nominal: 113, mass: 112.90406184, abundance: 0.0429 },\n            { nominal: 114, mass: 113.90491791 },\n            { nominal: 115, mass: 114.903878776, abundance: 0.9571 },\n            { nominal: 116, mass: 115.90525999 },\n            { nominal: 117, mass: 116.9045157 },\n            { nominal: 118, mass: 117.9063566 },\n            { nominal: 119, mass: 118.9058507 },\n            { nominal: 120, mass: 119.907967 },\n            { nominal: 121, mass: 120.907851 },\n            { nominal: 122, mass: 121.910281 },\n            { nominal: 123, mass: 122.910434 },\n            { nominal: 124, mass: 123.913182 },\n            { nominal: 125, mass: 124.913605 },\n            { nominal: 126, mass: 125.916507 },\n            { nominal: 127, mass: 126.917446 },\n            { nominal: 128, mass: 127.9204 },\n            { nominal: 129, mass: 128.9218053 },\n            { nominal: 130, mass: 129.924977 },\n            { nominal: 131, mass: 130.9269715 },\n            { nominal: 132, mass: 131.933001 },\n            { nominal: 133, mass: 132.93831 },\n            { nominal: 134, mass: 133.94454 },\n            { nominal: 135, mass: 134.95005 },\n        ],\n        symbol: 'In',\n        mass: 114.81808662944559,\n        name: 'Indium',\n        monoisotopicMass: 114.903878776,\n    },\n    {\n        number: 50,\n        isotopes: [\n            { nominal: 99, mass: 98.94853 },\n            { nominal: 100, mass: 99.9385 },\n            { nominal: 101, mass: 100.93526 },\n            { nominal: 102, mass: 101.93029 },\n            { nominal: 103, mass: 102.928105 },\n            { nominal: 104, mass: 103.9231052 },\n            { nominal: 105, mass: 104.9212684 },\n            { nominal: 106, mass: 105.9169574 },\n            { nominal: 107, mass: 106.9157137 },\n            { nominal: 108, mass: 107.9118943 },\n            { nominal: 109, mass: 108.9112921 },\n            { nominal: 110, mass: 109.907845 },\n            { nominal: 111, mass: 110.9077401 },\n            { nominal: 112, mass: 111.90482387, abundance: 0.0097 },\n            { nominal: 113, mass: 112.9051757 },\n            { nominal: 114, mass: 113.9027827, abundance: 0.0066 },\n            { nominal: 115, mass: 114.903344699, abundance: 0.0034 },\n            { nominal: 116, mass: 115.9017428, abundance: 0.1454 },\n            { nominal: 117, mass: 116.90295398, abundance: 0.0768 },\n            { nominal: 118, mass: 117.90160657, abundance: 0.2422 },\n            { nominal: 119, mass: 118.90331117, abundance: 0.0859 },\n            { nominal: 120, mass: 119.90220163, abundance: 0.3258 },\n            { nominal: 121, mass: 120.9042426 },\n            { nominal: 122, mass: 121.9034438, abundance: 0.0463 },\n            { nominal: 123, mass: 122.9057252 },\n            { nominal: 124, mass: 123.9052766, abundance: 0.0579 },\n            { nominal: 125, mass: 124.9077864 },\n            { nominal: 126, mass: 125.907659 },\n            { nominal: 127, mass: 126.91039 },\n            { nominal: 128, mass: 127.910507 },\n            { nominal: 129, mass: 128.913465 },\n            { nominal: 130, mass: 129.9139738 },\n            { nominal: 131, mass: 130.917045 },\n            { nominal: 132, mass: 131.9178267 },\n            { nominal: 133, mass: 132.9239134 },\n            { nominal: 134, mass: 133.9286821 },\n            { nominal: 135, mass: 134.9349086 },\n            { nominal: 136, mass: 135.93999 },\n            { nominal: 137, mass: 136.94655 },\n            { nominal: 138, mass: 137.95184 },\n        ],\n        symbol: 'Sn',\n        mass: 118.71011259301059,\n        name: 'Tin',\n        monoisotopicMass: 119.90220163,\n    },\n    {\n        number: 51,\n        isotopes: [\n            { nominal: 103, mass: 102.93969 },\n            { nominal: 104, mass: 103.93648 },\n            { nominal: 105, mass: 104.931276 },\n            { nominal: 106, mass: 105.928638 },\n            { nominal: 107, mass: 106.9241506 },\n            { nominal: 108, mass: 107.9222267 },\n            { nominal: 109, mass: 108.9181411 },\n            { nominal: 110, mass: 109.9168543 },\n            { nominal: 111, mass: 110.9132182 },\n            { nominal: 112, mass: 111.9124 },\n            { nominal: 113, mass: 112.909375 },\n            { nominal: 114, mass: 113.90929 },\n            { nominal: 115, mass: 114.906598 },\n            { nominal: 116, mass: 115.9067931 },\n            { nominal: 117, mass: 116.9048415 },\n            { nominal: 118, mass: 117.9055321 },\n            { nominal: 119, mass: 118.9039455 },\n            { nominal: 120, mass: 119.9050794 },\n            { nominal: 121, mass: 120.903812, abundance: 0.5721 },\n            { nominal: 122, mass: 121.9051699 },\n            { nominal: 123, mass: 122.9042132, abundance: 0.4279 },\n            { nominal: 124, mass: 123.905935 },\n            { nominal: 125, mass: 124.905253 },\n            { nominal: 126, mass: 125.907253 },\n            { nominal: 127, mass: 126.9069243 },\n            { nominal: 128, mass: 127.909146 },\n            { nominal: 129, mass: 128.909147 },\n            { nominal: 130, mass: 129.911662 },\n            { nominal: 131, mass: 130.9119888 },\n            { nominal: 132, mass: 131.9145077 },\n            { nominal: 133, mass: 132.9152732 },\n            { nominal: 134, mass: 133.9205357 },\n            { nominal: 135, mass: 134.9251851 },\n            { nominal: 136, mass: 135.9307459 },\n            { nominal: 137, mass: 136.93555 },\n            { nominal: 138, mass: 137.94145 },\n            { nominal: 139, mass: 138.94655 },\n            { nominal: 140, mass: 139.95283 },\n        ],\n        symbol: 'Sb',\n        mass: 121.75978367348,\n        name: 'Antimony',\n        monoisotopicMass: 120.903812,\n    },\n    {\n        number: 52,\n        isotopes: [\n            { nominal: 105, mass: 104.9433 },\n            { nominal: 106, mass: 105.9375 },\n            { nominal: 107, mass: 106.935012 },\n            { nominal: 108, mass: 107.9293805 },\n            { nominal: 109, mass: 108.9273045 },\n            { nominal: 110, mass: 109.9224581 },\n            { nominal: 111, mass: 110.9210006 },\n            { nominal: 112, mass: 111.9167279 },\n            { nominal: 113, mass: 112.915891 },\n            { nominal: 114, mass: 113.912089 },\n            { nominal: 115, mass: 114.911902 },\n            { nominal: 116, mass: 115.90846 },\n            { nominal: 117, mass: 116.908646 },\n            { nominal: 118, mass: 117.905854 },\n            { nominal: 119, mass: 118.9064071 },\n            { nominal: 120, mass: 119.9040593, abundance: 0.0009 },\n            { nominal: 121, mass: 120.904944 },\n            { nominal: 122, mass: 121.9030435, abundance: 0.0255 },\n            { nominal: 123, mass: 122.9042698, abundance: 0.0089 },\n            { nominal: 124, mass: 123.9028171, abundance: 0.0474 },\n            { nominal: 125, mass: 124.9044299, abundance: 0.0707 },\n            { nominal: 126, mass: 125.9033109, abundance: 0.1884 },\n            { nominal: 127, mass: 126.9052257 },\n            { nominal: 128, mass: 127.90446128, abundance: 0.3174 },\n            { nominal: 129, mass: 128.90659646 },\n            { nominal: 130, mass: 129.906222748, abundance: 0.3408 },\n            { nominal: 131, mass: 130.908522213 },\n            { nominal: 132, mass: 131.9085467 },\n            { nominal: 133, mass: 132.9109688 },\n            { nominal: 134, mass: 133.911394 },\n            { nominal: 135, mass: 134.9165557 },\n            { nominal: 136, mass: 135.9201006 },\n            { nominal: 137, mass: 136.9255989 },\n            { nominal: 138, mass: 137.9294722 },\n            { nominal: 139, mass: 138.9353672 },\n            { nominal: 140, mass: 139.939499 },\n            { nominal: 141, mass: 140.9458 },\n            { nominal: 142, mass: 141.95022 },\n            { nominal: 143, mass: 142.95676 },\n        ],\n        symbol: 'Te',\n        mass: 127.6031264846604,\n        name: 'Tellurium',\n        monoisotopicMass: 129.906222748,\n    },\n    {\n        number: 53,\n        isotopes: [\n            { nominal: 107, mass: 106.94678 },\n            { nominal: 108, mass: 107.94348 },\n            { nominal: 109, mass: 108.9380853 },\n            { nominal: 110, mass: 109.935089 },\n            { nominal: 111, mass: 110.9302692 },\n            { nominal: 112, mass: 111.928005 },\n            { nominal: 113, mass: 112.9236501 },\n            { nominal: 114, mass: 113.92185 },\n            { nominal: 115, mass: 114.918048 },\n            { nominal: 116, mass: 115.91681 },\n            { nominal: 117, mass: 116.913648 },\n            { nominal: 118, mass: 117.913074 },\n            { nominal: 119, mass: 118.910074 },\n            { nominal: 120, mass: 119.910087 },\n            { nominal: 121, mass: 120.9074051 },\n            { nominal: 122, mass: 121.9075888 },\n            { nominal: 123, mass: 122.9055885 },\n            { nominal: 124, mass: 123.906209 },\n            { nominal: 125, mass: 124.9046294 },\n            { nominal: 126, mass: 125.9056233 },\n            { nominal: 127, mass: 126.9044719, abundance: 1 },\n            { nominal: 128, mass: 127.9058086 },\n            { nominal: 129, mass: 128.9049837 },\n            { nominal: 130, mass: 129.9066702 },\n            { nominal: 131, mass: 130.9061263 },\n            { nominal: 132, mass: 131.9079935 },\n            { nominal: 133, mass: 132.907797 },\n            { nominal: 134, mass: 133.9097588 },\n            { nominal: 135, mass: 134.9100488 },\n            { nominal: 136, mass: 135.914604 },\n            { nominal: 137, mass: 136.9180282 },\n            { nominal: 138, mass: 137.9227264 },\n            { nominal: 139, mass: 138.926506 },\n            { nominal: 140, mass: 139.93173 },\n            { nominal: 141, mass: 140.93569 },\n            { nominal: 142, mass: 141.9412 },\n            { nominal: 143, mass: 142.94565 },\n            { nominal: 144, mass: 143.95139 },\n            { nominal: 145, mass: 144.95605 },\n        ],\n        symbol: 'I',\n        mass: 126.9044719,\n        name: 'Iodine',\n        monoisotopicMass: 126.9044719,\n    },\n    {\n        number: 54,\n        isotopes: [\n            { nominal: 109, mass: 108.95043 },\n            { nominal: 110, mass: 109.94426 },\n            { nominal: 111, mass: 110.941607 },\n            { nominal: 112, mass: 111.935559 },\n            { nominal: 113, mass: 112.9332217 },\n            { nominal: 114, mass: 113.92798 },\n            { nominal: 115, mass: 114.926294 },\n            { nominal: 116, mass: 115.921581 },\n            { nominal: 117, mass: 116.920359 },\n            { nominal: 118, mass: 117.916179 },\n            { nominal: 119, mass: 118.915411 },\n            { nominal: 120, mass: 119.911784 },\n            { nominal: 121, mass: 120.911453 },\n            { nominal: 122, mass: 121.908368 },\n            { nominal: 123, mass: 122.908482 },\n            { nominal: 124, mass: 123.905892, abundance: 0.000952 },\n            { nominal: 125, mass: 124.9063944 },\n            { nominal: 126, mass: 125.9042983, abundance: 0.00089 },\n            { nominal: 127, mass: 126.9051829 },\n            { nominal: 128, mass: 127.903531, abundance: 0.019102 },\n            { nominal: 129, mass: 128.9047808611, abundance: 0.264006 },\n            { nominal: 130, mass: 129.903509349, abundance: 0.04071 },\n            { nominal: 131, mass: 130.90508406, abundance: 0.212324 },\n            { nominal: 132, mass: 131.9041550856, abundance: 0.269086 },\n            { nominal: 133, mass: 132.9059108 },\n            { nominal: 134, mass: 133.90539466, abundance: 0.104357 },\n            { nominal: 135, mass: 134.9072278 },\n            { nominal: 136, mass: 135.907214484, abundance: 0.088573 },\n            { nominal: 137, mass: 136.91155778 },\n            { nominal: 138, mass: 137.9141463 },\n            { nominal: 139, mass: 138.9187922 },\n            { nominal: 140, mass: 139.9216458 },\n            { nominal: 141, mass: 140.9267872 },\n            { nominal: 142, mass: 141.9299731 },\n            { nominal: 143, mass: 142.9353696 },\n            { nominal: 144, mass: 143.9389451 },\n            { nominal: 145, mass: 144.94472 },\n            { nominal: 146, mass: 145.948518 },\n            { nominal: 147, mass: 146.95426 },\n            { nominal: 148, mass: 147.95813 },\n        ],\n        symbol: 'Xe',\n        mass: 131.29276144779053,\n        name: 'Xenon',\n        monoisotopicMass: 131.9041550856,\n    },\n    {\n        number: 55,\n        isotopes: [\n            { nominal: 112, mass: 111.950309 },\n            { nominal: 113, mass: 112.9444291 },\n            { nominal: 114, mass: 113.941296 },\n            { nominal: 115, mass: 114.93591 },\n            { nominal: 116, mass: 115.93337 },\n            { nominal: 117, mass: 116.928617 },\n            { nominal: 118, mass: 117.92656 },\n            { nominal: 119, mass: 118.922377 },\n            { nominal: 120, mass: 119.920677 },\n            { nominal: 121, mass: 120.917227 },\n            { nominal: 122, mass: 121.916108 },\n            { nominal: 123, mass: 122.912996 },\n            { nominal: 124, mass: 123.9122578 },\n            { nominal: 125, mass: 124.909728 },\n            { nominal: 126, mass: 125.909446 },\n            { nominal: 127, mass: 126.9074174 },\n            { nominal: 128, mass: 127.9077487 },\n            { nominal: 129, mass: 128.9060657 },\n            { nominal: 130, mass: 129.9067093 },\n            { nominal: 131, mass: 130.9054649 },\n            { nominal: 132, mass: 131.9064339 },\n            { nominal: 133, mass: 132.905451961, abundance: 1 },\n            { nominal: 134, mass: 133.906718503 },\n            { nominal: 135, mass: 134.905977 },\n            { nominal: 136, mass: 135.9073114 },\n            { nominal: 137, mass: 136.90708923 },\n            { nominal: 138, mass: 137.9110171 },\n            { nominal: 139, mass: 138.9133638 },\n            { nominal: 140, mass: 139.9172831 },\n            { nominal: 141, mass: 140.9200455 },\n            { nominal: 142, mass: 141.924296 },\n            { nominal: 143, mass: 142.927349 },\n            { nominal: 144, mass: 143.932076 },\n            { nominal: 145, mass: 144.935527 },\n            { nominal: 146, mass: 145.940344 },\n            { nominal: 147, mass: 146.944156 },\n            { nominal: 148, mass: 147.94923 },\n            { nominal: 149, mass: 148.95302 },\n            { nominal: 150, mass: 149.95833 },\n            { nominal: 151, mass: 150.96258 },\n        ],\n        symbol: 'Cs',\n        mass: 132.905451961,\n        name: 'Caesium',\n        monoisotopicMass: 132.905451961,\n    },\n    {\n        number: 56,\n        isotopes: [\n            { nominal: 114, mass: 113.95066 },\n            { nominal: 115, mass: 114.94737 },\n            { nominal: 116, mass: 115.94128 },\n            { nominal: 117, mass: 116.93814 },\n            { nominal: 118, mass: 117.93306 },\n            { nominal: 119, mass: 118.93066 },\n            { nominal: 120, mass: 119.92605 },\n            { nominal: 121, mass: 120.92405 },\n            { nominal: 122, mass: 121.919904 },\n            { nominal: 123, mass: 122.918781 },\n            { nominal: 124, mass: 123.915094 },\n            { nominal: 125, mass: 124.914472 },\n            { nominal: 126, mass: 125.91125 },\n            { nominal: 127, mass: 126.911091 },\n            { nominal: 128, mass: 127.908342 },\n            { nominal: 129, mass: 128.908681 },\n            { nominal: 130, mass: 129.9063207, abundance: 0.00106 },\n            { nominal: 131, mass: 130.906941 },\n            { nominal: 132, mass: 131.9050611, abundance: 0.00101 },\n            { nominal: 133, mass: 132.9060074 },\n            { nominal: 134, mass: 133.90450818, abundance: 0.02417 },\n            { nominal: 135, mass: 134.90568838, abundance: 0.06592 },\n            { nominal: 136, mass: 135.90457573, abundance: 0.07854 },\n            { nominal: 137, mass: 136.90582714, abundance: 0.11232 },\n            { nominal: 138, mass: 137.905247, abundance: 0.71698 },\n            { nominal: 139, mass: 138.9088411 },\n            { nominal: 140, mass: 139.9106057 },\n            { nominal: 141, mass: 140.9144033 },\n            { nominal: 142, mass: 141.9164324 },\n            { nominal: 143, mass: 142.9206253 },\n            { nominal: 144, mass: 143.9229549 },\n            { nominal: 145, mass: 144.9275184 },\n            { nominal: 146, mass: 145.930284 },\n            { nominal: 147, mass: 146.935304 },\n            { nominal: 148, mass: 147.938171 },\n            { nominal: 149, mass: 148.94308 },\n            { nominal: 150, mass: 149.94605 },\n            { nominal: 151, mass: 150.95127 },\n            { nominal: 152, mass: 151.95481 },\n            { nominal: 153, mass: 152.96036 },\n        ],\n        symbol: 'Ba',\n        mass: 137.3268916286322,\n        name: 'Barium',\n        monoisotopicMass: 137.905247,\n    },\n    {\n        number: 57,\n        isotopes: [\n            { nominal: 116, mass: 115.9563 },\n            { nominal: 117, mass: 116.94999 },\n            { nominal: 118, mass: 117.94673 },\n            { nominal: 119, mass: 118.94099 },\n            { nominal: 120, mass: 119.93807 },\n            { nominal: 121, mass: 120.93315 },\n            { nominal: 122, mass: 121.93071 },\n            { nominal: 123, mass: 122.9263 },\n            { nominal: 124, mass: 123.924574 },\n            { nominal: 125, mass: 124.920816 },\n            { nominal: 126, mass: 125.919513 },\n            { nominal: 127, mass: 126.916375 },\n            { nominal: 128, mass: 127.915592 },\n            { nominal: 129, mass: 128.912694 },\n            { nominal: 130, mass: 129.912369 },\n            { nominal: 131, mass: 130.91007 },\n            { nominal: 132, mass: 131.910119 },\n            { nominal: 133, mass: 132.908218 },\n            { nominal: 134, mass: 133.908514 },\n            { nominal: 135, mass: 134.906984 },\n            { nominal: 136, mass: 135.907635 },\n            { nominal: 137, mass: 136.9064504 },\n            { nominal: 138, mass: 137.9071149, abundance: 0.0008881 },\n            { nominal: 139, mass: 138.9063563, abundance: 0.9991119 },\n            { nominal: 140, mass: 139.9094806 },\n            { nominal: 141, mass: 140.910966 },\n            { nominal: 142, mass: 141.9140909 },\n            { nominal: 143, mass: 142.9160795 },\n            { nominal: 144, mass: 143.919646 },\n            { nominal: 145, mass: 144.921808 },\n            { nominal: 146, mass: 145.925875 },\n            { nominal: 147, mass: 146.928418 },\n            { nominal: 148, mass: 147.932679 },\n            { nominal: 149, mass: 148.93535 },\n            { nominal: 150, mass: 149.93947 },\n            { nominal: 151, mass: 150.94232 },\n            { nominal: 152, mass: 151.94682 },\n            { nominal: 153, mass: 152.95036 },\n            { nominal: 154, mass: 153.95517 },\n            { nominal: 155, mass: 154.95901 },\n        ],\n        symbol: 'La',\n        mass: 138.90546887371266,\n        name: 'Lanthanum',\n        monoisotopicMass: 138.9063563,\n    },\n    {\n        number: 58,\n        isotopes: [\n            { nominal: 119, mass: 118.95271 },\n            { nominal: 120, mass: 119.94654 },\n            { nominal: 121, mass: 120.94335 },\n            { nominal: 122, mass: 121.93787 },\n            { nominal: 123, mass: 122.93528 },\n            { nominal: 124, mass: 123.93031 },\n            { nominal: 125, mass: 124.92844 },\n            { nominal: 126, mass: 125.923971 },\n            { nominal: 127, mass: 126.922727 },\n            { nominal: 128, mass: 127.918911 },\n            { nominal: 129, mass: 128.918102 },\n            { nominal: 130, mass: 129.914736 },\n            { nominal: 131, mass: 130.914429 },\n            { nominal: 132, mass: 131.911464 },\n            { nominal: 133, mass: 132.91152 },\n            { nominal: 134, mass: 133.908928 },\n            { nominal: 135, mass: 134.909161 },\n            { nominal: 136, mass: 135.90712921, abundance: 0.00185 },\n            { nominal: 137, mass: 136.90776236 },\n            { nominal: 138, mass: 137.905991, abundance: 0.00251 },\n            { nominal: 139, mass: 138.9066551 },\n            { nominal: 140, mass: 139.9054431, abundance: 0.8845 },\n            { nominal: 141, mass: 140.9082807 },\n            { nominal: 142, mass: 141.9092504, abundance: 0.11114 },\n            { nominal: 143, mass: 142.9123921 },\n            { nominal: 144, mass: 143.9136529 },\n            { nominal: 145, mass: 144.917265 },\n            { nominal: 146, mass: 145.918802 },\n            { nominal: 147, mass: 146.9226899 },\n            { nominal: 148, mass: 147.924424 },\n            { nominal: 149, mass: 148.928427 },\n            { nominal: 150, mass: 149.930384 },\n            { nominal: 151, mass: 150.934272 },\n            { nominal: 152, mass: 151.9366 },\n            { nominal: 153, mass: 152.94093 },\n            { nominal: 154, mass: 153.9438 },\n            { nominal: 155, mass: 154.94855 },\n            { nominal: 156, mass: 155.95183 },\n            { nominal: 157, mass: 156.95705 },\n        ],\n        symbol: 'Ce',\n        mass: 140.1157307378545,\n        name: 'Cerium',\n        monoisotopicMass: 139.9054431,\n    },\n    {\n        number: 59,\n        isotopes: [\n            { nominal: 121, mass: 120.95532 },\n            { nominal: 122, mass: 121.95175 },\n            { nominal: 123, mass: 122.94596 },\n            { nominal: 124, mass: 123.94294 },\n            { nominal: 125, mass: 124.9377 },\n            { nominal: 126, mass: 125.93524 },\n            { nominal: 127, mass: 126.93071 },\n            { nominal: 128, mass: 127.928791 },\n            { nominal: 129, mass: 128.925095 },\n            { nominal: 130, mass: 129.92359 },\n            { nominal: 131, mass: 130.920235 },\n            { nominal: 132, mass: 131.919255 },\n            { nominal: 133, mass: 132.916331 },\n            { nominal: 134, mass: 133.915697 },\n            { nominal: 135, mass: 134.913112 },\n            { nominal: 136, mass: 135.912677 },\n            { nominal: 137, mass: 136.9106792 },\n            { nominal: 138, mass: 137.910754 },\n            { nominal: 139, mass: 138.9089408 },\n            { nominal: 140, mass: 139.9090803 },\n            { nominal: 141, mass: 140.9076576, abundance: 1 },\n            { nominal: 142, mass: 141.9100496 },\n            { nominal: 143, mass: 142.9108228 },\n            { nominal: 144, mass: 143.9133109 },\n            { nominal: 145, mass: 144.9145182 },\n            { nominal: 146, mass: 145.91768 },\n            { nominal: 147, mass: 146.919008 },\n            { nominal: 148, mass: 147.92213 },\n            { nominal: 149, mass: 148.923736 },\n            { nominal: 150, mass: 149.9266765 },\n            { nominal: 151, mass: 150.928309 },\n            { nominal: 152, mass: 151.931553 },\n            { nominal: 153, mass: 152.933904 },\n            { nominal: 154, mass: 153.93753 },\n            { nominal: 155, mass: 154.940509 },\n            { nominal: 156, mass: 155.94464 },\n            { nominal: 157, mass: 156.94789 },\n            { nominal: 158, mass: 157.95241 },\n            { nominal: 159, mass: 158.95589 },\n        ],\n        symbol: 'Pr',\n        mass: 140.9076576,\n        name: 'Praseodymium',\n        monoisotopicMass: 140.9076576,\n    },\n    {\n        number: 60,\n        isotopes: [\n            { nominal: 124, mass: 123.9522 },\n            { nominal: 125, mass: 124.9489 },\n            { nominal: 126, mass: 125.94311 },\n            { nominal: 127, mass: 126.94038 },\n            { nominal: 128, mass: 127.93525 },\n            { nominal: 129, mass: 128.9331 },\n            { nominal: 130, mass: 129.928506 },\n            { nominal: 131, mass: 130.927248 },\n            { nominal: 132, mass: 131.923321 },\n            { nominal: 133, mass: 132.922348 },\n            { nominal: 134, mass: 133.91879 },\n            { nominal: 135, mass: 134.918181 },\n            { nominal: 136, mass: 135.914976 },\n            { nominal: 137, mass: 136.914562 },\n            { nominal: 138, mass: 137.91195 },\n            { nominal: 139, mass: 138.911954 },\n            { nominal: 140, mass: 139.90955 },\n            { nominal: 141, mass: 140.9096147 },\n            { nominal: 142, mass: 141.907729, abundance: 0.27152 },\n            { nominal: 143, mass: 142.90982, abundance: 0.12174 },\n            { nominal: 144, mass: 143.910093, abundance: 0.23798 },\n            { nominal: 145, mass: 144.9125793, abundance: 0.08293 },\n            { nominal: 146, mass: 145.9131226, abundance: 0.17189 },\n            { nominal: 147, mass: 146.9161061 },\n            { nominal: 148, mass: 147.9168993, abundance: 0.05756 },\n            { nominal: 149, mass: 148.9201548 },\n            { nominal: 150, mass: 149.9209022, abundance: 0.05638 },\n            { nominal: 151, mass: 150.9238403 },\n            { nominal: 152, mass: 151.924692 },\n            { nominal: 153, mass: 152.927718 },\n            { nominal: 154, mass: 153.92948 },\n            { nominal: 155, mass: 154.9331357 },\n            { nominal: 156, mass: 155.93508 },\n            { nominal: 157, mass: 156.939386 },\n            { nominal: 158, mass: 157.94197 },\n            { nominal: 159, mass: 158.94653 },\n            { nominal: 160, mass: 159.9494 },\n            { nominal: 161, mass: 160.95428 },\n        ],\n        symbol: 'Nd',\n        mass: 144.241596031827,\n        name: 'Neodymium',\n        monoisotopicMass: 141.907729,\n    },\n    {\n        number: 61,\n        isotopes: [\n            { nominal: 126, mass: 125.95792 },\n            { nominal: 127, mass: 126.95192 },\n            { nominal: 128, mass: 127.9487 },\n            { nominal: 129, mass: 128.94323 },\n            { nominal: 130, mass: 129.94053 },\n            { nominal: 131, mass: 130.93567 },\n            { nominal: 132, mass: 131.93384 },\n            { nominal: 133, mass: 132.929782 },\n            { nominal: 134, mass: 133.928353 },\n            { nominal: 135, mass: 134.924823 },\n            { nominal: 136, mass: 135.923585 },\n            { nominal: 137, mass: 136.92048 },\n            { nominal: 138, mass: 137.919548 },\n            { nominal: 139, mass: 138.9168 },\n            { nominal: 140, mass: 139.91604 },\n            { nominal: 141, mass: 140.913555 },\n            { nominal: 142, mass: 141.91289 },\n            { nominal: 143, mass: 142.9109383 },\n            { nominal: 144, mass: 143.9125964 },\n            { nominal: 145, mass: 144.9127559 },\n            { nominal: 146, mass: 145.9147024 },\n            { nominal: 147, mass: 146.915145 },\n            { nominal: 148, mass: 147.9174819 },\n            { nominal: 149, mass: 148.9183423 },\n            { nominal: 150, mass: 149.920991 },\n            { nominal: 151, mass: 150.9212175 },\n            { nominal: 152, mass: 151.923506 },\n            { nominal: 153, mass: 152.9241567 },\n            { nominal: 154, mass: 153.926472 },\n            { nominal: 155, mass: 154.928137 },\n            { nominal: 156, mass: 155.9311175 },\n            { nominal: 157, mass: 156.9331214 },\n            { nominal: 158, mass: 157.936565 },\n            { nominal: 159, mass: 158.939287 },\n            { nominal: 160, mass: 159.9431 },\n            { nominal: 161, mass: 160.94607 },\n            { nominal: 162, mass: 161.95022 },\n            { nominal: 163, mass: 162.95357 },\n        ],\n        symbol: 'Pm',\n        mass: null,\n        name: 'Promethium',\n    },\n    {\n        number: 62,\n        isotopes: [\n            { nominal: 128, mass: 127.95842 },\n            { nominal: 129, mass: 128.95476 },\n            { nominal: 130, mass: 129.949 },\n            { nominal: 131, mass: 130.94618 },\n            { nominal: 132, mass: 131.94087 },\n            { nominal: 133, mass: 132.93856 },\n            { nominal: 134, mass: 133.93411 },\n            { nominal: 135, mass: 134.93252 },\n            { nominal: 136, mass: 135.928276 },\n            { nominal: 137, mass: 136.926971 },\n            { nominal: 138, mass: 137.923244 },\n            { nominal: 139, mass: 138.922297 },\n            { nominal: 140, mass: 139.918995 },\n            { nominal: 141, mass: 140.9184816 },\n            { nominal: 142, mass: 141.9152044 },\n            { nominal: 143, mass: 142.9146353 },\n            { nominal: 144, mass: 143.9120065, abundance: 0.0307 },\n            { nominal: 145, mass: 144.9134173 },\n            { nominal: 146, mass: 145.913047 },\n            { nominal: 147, mass: 146.9149044, abundance: 0.1499 },\n            { nominal: 148, mass: 147.9148292, abundance: 0.1124 },\n            { nominal: 149, mass: 148.9171921, abundance: 0.1382 },\n            { nominal: 150, mass: 149.9172829, abundance: 0.0738 },\n            { nominal: 151, mass: 150.9199398 },\n            { nominal: 152, mass: 151.9197397, abundance: 0.2675 },\n            { nominal: 153, mass: 152.9221047 },\n            { nominal: 154, mass: 153.9222169, abundance: 0.2275 },\n            { nominal: 155, mass: 154.9246477 },\n            { nominal: 156, mass: 155.925536 },\n            { nominal: 157, mass: 156.9284187 },\n            { nominal: 158, mass: 157.929951 },\n            { nominal: 159, mass: 158.9332172 },\n            { nominal: 160, mass: 159.9353353 },\n            { nominal: 161, mass: 160.9391602 },\n            { nominal: 162, mass: 161.94146 },\n            { nominal: 163, mass: 162.94555 },\n            { nominal: 164, mass: 163.94836 },\n            { nominal: 165, mass: 164.95297 },\n        ],\n        symbol: 'Sm',\n        mass: 150.36635571193,\n        name: 'Samarium',\n        monoisotopicMass: 151.9197397,\n    },\n    {\n        number: 63,\n        isotopes: [\n            { nominal: 130, mass: 129.96369 },\n            { nominal: 131, mass: 130.95784 },\n            { nominal: 132, mass: 131.95467 },\n            { nominal: 133, mass: 132.94929 },\n            { nominal: 134, mass: 133.9464 },\n            { nominal: 135, mass: 134.94187 },\n            { nominal: 136, mass: 135.93962 },\n            { nominal: 137, mass: 136.93546 },\n            { nominal: 138, mass: 137.933709 },\n            { nominal: 139, mass: 138.929792 },\n            { nominal: 140, mass: 139.928088 },\n            { nominal: 141, mass: 140.924932 },\n            { nominal: 142, mass: 141.923442 },\n            { nominal: 143, mass: 142.920299 },\n            { nominal: 144, mass: 143.91882 },\n            { nominal: 145, mass: 144.9162726 },\n            { nominal: 146, mass: 145.917211 },\n            { nominal: 147, mass: 146.9167527 },\n            { nominal: 148, mass: 147.918089 },\n            { nominal: 149, mass: 148.9179378 },\n            { nominal: 150, mass: 149.9197077 },\n            { nominal: 151, mass: 150.9198578, abundance: 0.4781 },\n            { nominal: 152, mass: 151.9217522 },\n            { nominal: 153, mass: 152.921238, abundance: 0.5219 },\n            { nominal: 154, mass: 153.922987 },\n            { nominal: 155, mass: 154.9229011 },\n            { nominal: 156, mass: 155.9247605 },\n            { nominal: 157, mass: 156.9254334 },\n            { nominal: 158, mass: 157.927799 },\n            { nominal: 159, mass: 158.9291001 },\n            { nominal: 160, mass: 159.931851 },\n            { nominal: 161, mass: 160.933664 },\n            { nominal: 162, mass: 161.936989 },\n            { nominal: 163, mass: 162.939196 },\n            { nominal: 164, mass: 163.94274 },\n            { nominal: 165, mass: 164.94559 },\n            { nominal: 166, mass: 165.94962 },\n            { nominal: 167, mass: 166.95289 },\n        ],\n        symbol: 'Eu',\n        mass: 151.96437812637998,\n        name: 'Europium',\n        monoisotopicMass: 152.921238,\n    },\n    {\n        number: 64,\n        isotopes: [\n            { nominal: 133, mass: 132.96133 },\n            { nominal: 134, mass: 133.95566 },\n            { nominal: 135, mass: 134.95245 },\n            { nominal: 136, mass: 135.9473 },\n            { nominal: 137, mass: 136.94502 },\n            { nominal: 138, mass: 137.94025 },\n            { nominal: 139, mass: 138.93813 },\n            { nominal: 140, mass: 139.933674 },\n            { nominal: 141, mass: 140.932126 },\n            { nominal: 142, mass: 141.928116 },\n            { nominal: 143, mass: 142.92675 },\n            { nominal: 144, mass: 143.922963 },\n            { nominal: 145, mass: 144.921713 },\n            { nominal: 146, mass: 145.9183188 },\n            { nominal: 147, mass: 146.9191014 },\n            { nominal: 148, mass: 147.9181215 },\n            { nominal: 149, mass: 148.9193481 },\n            { nominal: 150, mass: 149.9186644 },\n            { nominal: 151, mass: 150.920356 },\n            { nominal: 152, mass: 151.9197995, abundance: 0.002 },\n            { nominal: 153, mass: 152.921758 },\n            { nominal: 154, mass: 153.9208741, abundance: 0.0218 },\n            { nominal: 155, mass: 154.9226305, abundance: 0.148 },\n            { nominal: 156, mass: 155.9221312, abundance: 0.2047 },\n            { nominal: 157, mass: 156.9239686, abundance: 0.1565 },\n            { nominal: 158, mass: 157.9241123, abundance: 0.2484 },\n            { nominal: 159, mass: 158.926397 },\n            { nominal: 160, mass: 159.9270624, abundance: 0.2186 },\n            { nominal: 161, mass: 160.9296775 },\n            { nominal: 162, mass: 161.930993 },\n            { nominal: 163, mass: 162.9341769 },\n            { nominal: 164, mass: 163.93583 },\n            { nominal: 165, mass: 164.93936 },\n            { nominal: 166, mass: 165.94146 },\n            { nominal: 167, mass: 166.94545 },\n            { nominal: 168, mass: 167.94808 },\n            { nominal: 169, mass: 168.9526 },\n        ],\n        symbol: 'Gd',\n        mass: 157.25213064687998,\n        name: 'Gadolinium',\n        monoisotopicMass: 157.9241123,\n    },\n    {\n        number: 65,\n        isotopes: [\n            { nominal: 135, mass: 134.96476 },\n            { nominal: 136, mass: 135.96129 },\n            { nominal: 137, mass: 136.95602 },\n            { nominal: 138, mass: 137.95312 },\n            { nominal: 139, mass: 138.94833 },\n            { nominal: 140, mass: 139.94581 },\n            { nominal: 141, mass: 140.94145 },\n            { nominal: 142, mass: 141.93928 },\n            { nominal: 143, mass: 142.935137 },\n            { nominal: 144, mass: 143.933045 },\n            { nominal: 145, mass: 144.92882 },\n            { nominal: 146, mass: 145.927253 },\n            { nominal: 147, mass: 146.9240548 },\n            { nominal: 148, mass: 147.924282 },\n            { nominal: 149, mass: 148.9232535 },\n            { nominal: 150, mass: 149.9236649 },\n            { nominal: 151, mass: 150.9231096 },\n            { nominal: 152, mass: 151.924083 },\n            { nominal: 153, mass: 152.9234424 },\n            { nominal: 154, mass: 153.924685 },\n            { nominal: 155, mass: 154.923511 },\n            { nominal: 156, mass: 155.9247552 },\n            { nominal: 157, mass: 156.924033 },\n            { nominal: 158, mass: 157.9254209 },\n            { nominal: 159, mass: 158.9253547, abundance: 1 },\n            { nominal: 160, mass: 159.9271756 },\n            { nominal: 161, mass: 160.9275778 },\n            { nominal: 162, mass: 161.929495 },\n            { nominal: 163, mass: 162.9306547 },\n            { nominal: 164, mass: 163.93336 },\n            { nominal: 165, mass: 164.93498 },\n            { nominal: 166, mass: 165.93786 },\n            { nominal: 167, mass: 166.93996 },\n            { nominal: 168, mass: 167.9434 },\n            { nominal: 169, mass: 168.94597 },\n            { nominal: 170, mass: 169.94984 },\n            { nominal: 171, mass: 170.95273 },\n        ],\n        symbol: 'Tb',\n        mass: 158.9253547,\n        name: 'Terbium',\n        monoisotopicMass: 158.9253547,\n    },\n    {\n        number: 66,\n        isotopes: [\n            { nominal: 138, mass: 137.9625 },\n            { nominal: 139, mass: 138.95959 },\n            { nominal: 140, mass: 139.95402 },\n            { nominal: 141, mass: 140.95128 },\n            { nominal: 142, mass: 141.94619 },\n            { nominal: 143, mass: 142.943994 },\n            { nominal: 144, mass: 143.9392695 },\n            { nominal: 145, mass: 144.937474 },\n            { nominal: 146, mass: 145.9328445 },\n            { nominal: 147, mass: 146.9310827 },\n            { nominal: 148, mass: 147.927157 },\n            { nominal: 149, mass: 148.927322 },\n            { nominal: 150, mass: 149.9255933 },\n            { nominal: 151, mass: 150.9261916 },\n            { nominal: 152, mass: 151.9247253 },\n            { nominal: 153, mass: 152.9257724 },\n            { nominal: 154, mass: 153.9244293 },\n            { nominal: 155, mass: 154.925759 },\n            { nominal: 156, mass: 155.9242847, abundance: 0.00056 },\n            { nominal: 157, mass: 156.9254707 },\n            { nominal: 158, mass: 157.9244159, abundance: 0.00095 },\n            { nominal: 159, mass: 158.925747 },\n            { nominal: 160, mass: 159.9252046, abundance: 0.02329 },\n            { nominal: 161, mass: 160.9269405, abundance: 0.18889 },\n            { nominal: 162, mass: 161.9268056, abundance: 0.25475 },\n            { nominal: 163, mass: 162.9287383, abundance: 0.24896 },\n            { nominal: 164, mass: 163.9291819, abundance: 0.2826 },\n            { nominal: 165, mass: 164.9317105 },\n            { nominal: 166, mass: 165.9328139 },\n            { nominal: 167, mass: 166.935661 },\n            { nominal: 168, mass: 167.93713 },\n            { nominal: 169, mass: 168.94031 },\n            { nominal: 170, mass: 169.94239 },\n            { nominal: 171, mass: 170.94612 },\n            { nominal: 172, mass: 171.94846 },\n            { nominal: 173, mass: 172.95283 },\n        ],\n        symbol: 'Dy',\n        mass: 162.499472819424,\n        name: 'Dysprosium',\n        monoisotopicMass: 163.9291819,\n    },\n    {\n        number: 67,\n        isotopes: [\n            { nominal: 140, mass: 139.96859 },\n            { nominal: 141, mass: 140.96311 },\n            { nominal: 142, mass: 141.96001 },\n            { nominal: 143, mass: 142.95486 },\n            { nominal: 144, mass: 143.9521097 },\n            { nominal: 145, mass: 144.9472674 },\n            { nominal: 146, mass: 145.9449935 },\n            { nominal: 147, mass: 146.9401423 },\n            { nominal: 148, mass: 147.937744 },\n            { nominal: 149, mass: 148.933803 },\n            { nominal: 150, mass: 149.933498 },\n            { nominal: 151, mass: 150.9316983 },\n            { nominal: 152, mass: 151.931724 },\n            { nominal: 153, mass: 152.9302064 },\n            { nominal: 154, mass: 153.9306068 },\n            { nominal: 155, mass: 154.929104 },\n            { nominal: 156, mass: 155.929706 },\n            { nominal: 157, mass: 156.928254 },\n            { nominal: 158, mass: 157.928946 },\n            { nominal: 159, mass: 158.9277197 },\n            { nominal: 160, mass: 159.928737 },\n            { nominal: 161, mass: 160.9278615 },\n            { nominal: 162, mass: 161.9291023 },\n            { nominal: 163, mass: 162.928741 },\n            { nominal: 164, mass: 163.9302403 },\n            { nominal: 165, mass: 164.9303288, abundance: 1 },\n            { nominal: 166, mass: 165.9322909 },\n            { nominal: 167, mass: 166.9331385 },\n            { nominal: 168, mass: 167.935522 },\n            { nominal: 169, mass: 168.936878 },\n            { nominal: 170, mass: 169.939625 },\n            { nominal: 171, mass: 170.94147 },\n            { nominal: 172, mass: 171.94473 },\n            { nominal: 173, mass: 172.94702 },\n            { nominal: 174, mass: 173.95095 },\n            { nominal: 175, mass: 174.95362 },\n        ],\n        symbol: 'Ho',\n        mass: 164.9303288,\n        name: 'Holmium',\n        monoisotopicMass: 164.9303288,\n    },\n    {\n        number: 68,\n        isotopes: [\n            { nominal: 142, mass: 141.9701 },\n            { nominal: 143, mass: 142.96662 },\n            { nominal: 144, mass: 143.9607 },\n            { nominal: 145, mass: 144.95805 },\n            { nominal: 146, mass: 145.9524184 },\n            { nominal: 147, mass: 146.949964 },\n            { nominal: 148, mass: 147.944735 },\n            { nominal: 149, mass: 148.942306 },\n            { nominal: 150, mass: 149.937916 },\n            { nominal: 151, mass: 150.937449 },\n            { nominal: 152, mass: 151.935057 },\n            { nominal: 153, mass: 152.93508 },\n            { nominal: 154, mass: 153.9327908 },\n            { nominal: 155, mass: 154.9332159 },\n            { nominal: 156, mass: 155.931067 },\n            { nominal: 157, mass: 156.931949 },\n            { nominal: 158, mass: 157.929893 },\n            { nominal: 159, mass: 158.9306918 },\n            { nominal: 160, mass: 159.929077 },\n            { nominal: 161, mass: 160.9300046 },\n            { nominal: 162, mass: 161.9287884, abundance: 0.00139 },\n            { nominal: 163, mass: 162.9300408 },\n            { nominal: 164, mass: 163.9292088, abundance: 0.01601 },\n            { nominal: 165, mass: 164.9307345 },\n            { nominal: 166, mass: 165.9302995, abundance: 0.33503 },\n            { nominal: 167, mass: 166.9320546, abundance: 0.22869 },\n            { nominal: 168, mass: 167.9323767, abundance: 0.26978 },\n            { nominal: 169, mass: 168.9345968 },\n            { nominal: 170, mass: 169.9354702, abundance: 0.1491 },\n            { nominal: 171, mass: 170.9380357 },\n            { nominal: 172, mass: 171.9393619 },\n            { nominal: 173, mass: 172.9424 },\n            { nominal: 174, mass: 173.94423 },\n            { nominal: 175, mass: 174.94777 },\n            { nominal: 176, mass: 175.94994 },\n            { nominal: 177, mass: 176.95399 },\n        ],\n        symbol: 'Er',\n        mass: 167.259082649669,\n        name: 'Erbium',\n        monoisotopicMass: 165.9302995,\n    },\n    {\n        number: 69,\n        isotopes: [\n            { nominal: 144, mass: 143.97628 },\n            { nominal: 145, mass: 144.97039 },\n            { nominal: 146, mass: 145.96684 },\n            { nominal: 147, mass: 146.9613799 },\n            { nominal: 148, mass: 147.958384 },\n            { nominal: 149, mass: 148.95289 },\n            { nominal: 150, mass: 149.95009 },\n            { nominal: 151, mass: 150.945488 },\n            { nominal: 152, mass: 151.944422 },\n            { nominal: 153, mass: 152.94204 },\n            { nominal: 154, mass: 153.94157 },\n            { nominal: 155, mass: 154.93921 },\n            { nominal: 156, mass: 155.938992 },\n            { nominal: 157, mass: 156.936944 },\n            { nominal: 158, mass: 157.93698 },\n            { nominal: 159, mass: 158.934975 },\n            { nominal: 160, mass: 159.935263 },\n            { nominal: 161, mass: 160.933549 },\n            { nominal: 162, mass: 161.934002 },\n            { nominal: 163, mass: 162.9326592 },\n            { nominal: 164, mass: 163.933544 },\n            { nominal: 165, mass: 164.9324431 },\n            { nominal: 166, mass: 165.933561 },\n            { nominal: 167, mass: 166.9328562 },\n            { nominal: 168, mass: 167.9341774 },\n            { nominal: 169, mass: 168.9342179, abundance: 1 },\n            { nominal: 170, mass: 169.935806 },\n            { nominal: 171, mass: 170.9364339 },\n            { nominal: 172, mass: 171.9384055 },\n            { nominal: 173, mass: 172.9396084 },\n            { nominal: 174, mass: 173.942173 },\n            { nominal: 175, mass: 174.943841 },\n            { nominal: 176, mass: 175.947 },\n            { nominal: 177, mass: 176.94904 },\n            { nominal: 178, mass: 177.95264 },\n            { nominal: 179, mass: 178.95534 },\n        ],\n        symbol: 'Tm',\n        mass: 168.9342179,\n        name: 'Thulium',\n        monoisotopicMass: 168.9342179,\n    },\n    {\n        number: 70,\n        isotopes: [\n            { nominal: 148, mass: 147.96758 },\n            { nominal: 149, mass: 148.96436 },\n            { nominal: 150, mass: 149.95852 },\n            { nominal: 151, mass: 150.9554 },\n            { nominal: 152, mass: 151.95027 },\n            { nominal: 153, mass: 152.94932 },\n            { nominal: 154, mass: 153.946396 },\n            { nominal: 155, mass: 154.945783 },\n            { nominal: 156, mass: 155.942825 },\n            { nominal: 157, mass: 156.942645 },\n            { nominal: 158, mass: 157.9398705 },\n            { nominal: 159, mass: 158.940055 },\n            { nominal: 160, mass: 159.937557 },\n            { nominal: 161, mass: 160.937907 },\n            { nominal: 162, mass: 161.935774 },\n            { nominal: 163, mass: 162.93634 },\n            { nominal: 164, mass: 163.934495 },\n            { nominal: 165, mass: 164.93527 },\n            { nominal: 166, mass: 165.9338747 },\n            { nominal: 167, mass: 166.934953 },\n            { nominal: 168, mass: 167.9338896, abundance: 0.00123 },\n            { nominal: 169, mass: 168.9351825 },\n            { nominal: 170, mass: 169.9347664, abundance: 0.02982 },\n            { nominal: 171, mass: 170.9363302, abundance: 0.1409 },\n            { nominal: 172, mass: 171.9363859, abundance: 0.2168 },\n            { nominal: 173, mass: 172.9382151, abundance: 0.16103 },\n            { nominal: 174, mass: 173.9388664, abundance: 0.32026 },\n            { nominal: 175, mass: 174.9412808 },\n            { nominal: 176, mass: 175.9425764, abundance: 0.12996 },\n            { nominal: 177, mass: 176.9452656 },\n            { nominal: 178, mass: 177.946651 },\n            { nominal: 179, mass: 178.95004 },\n            { nominal: 180, mass: 179.95212 },\n            { nominal: 181, mass: 180.95589 },\n        ],\n        symbol: 'Yb',\n        mass: 173.05415016631702,\n        name: 'Ytterbium',\n        monoisotopicMass: 173.9388664,\n    },\n    {\n        number: 71,\n        isotopes: [\n            { nominal: 150, mass: 149.97355 },\n            { nominal: 151, mass: 150.96768 },\n            { nominal: 152, mass: 151.96412 },\n            { nominal: 153, mass: 152.95875 },\n            { nominal: 154, mass: 153.95736 },\n            { nominal: 155, mass: 154.954321 },\n            { nominal: 156, mass: 155.953033 },\n            { nominal: 157, mass: 156.950127 },\n            { nominal: 158, mass: 157.949316 },\n            { nominal: 159, mass: 158.946636 },\n            { nominal: 160, mass: 159.946033 },\n            { nominal: 161, mass: 160.943572 },\n            { nominal: 162, mass: 161.943283 },\n            { nominal: 163, mass: 162.941179 },\n            { nominal: 164, mass: 163.941339 },\n            { nominal: 165, mass: 164.939407 },\n            { nominal: 166, mass: 165.939859 },\n            { nominal: 167, mass: 166.93827 },\n            { nominal: 168, mass: 167.938736 },\n            { nominal: 169, mass: 168.9376441 },\n            { nominal: 170, mass: 169.938478 },\n            { nominal: 171, mass: 170.937917 },\n            { nominal: 172, mass: 171.9390891 },\n            { nominal: 173, mass: 172.938934 },\n            { nominal: 174, mass: 173.9403409 },\n            { nominal: 175, mass: 174.9407752, abundance: 0.97401 },\n            { nominal: 176, mass: 175.9426897, abundance: 0.02599 },\n            { nominal: 177, mass: 176.9437615 },\n            { nominal: 178, mass: 177.945958 },\n            { nominal: 179, mass: 178.9473309 },\n            { nominal: 180, mass: 179.949888 },\n            { nominal: 181, mass: 180.95191 },\n            { nominal: 182, mass: 181.95504 },\n            { nominal: 183, mass: 182.957363 },\n            { nominal: 184, mass: 183.96091 },\n            { nominal: 185, mass: 184.96362 },\n        ],\n        symbol: 'Lu',\n        mass: 174.96681495785498,\n        name: 'Lutetium',\n        monoisotopicMass: 174.9407752,\n    },\n    {\n        number: 72,\n        isotopes: [\n            { nominal: 153, mass: 152.97069 },\n            { nominal: 154, mass: 153.96486 },\n            { nominal: 155, mass: 154.96311 },\n            { nominal: 156, mass: 155.95935 },\n            { nominal: 157, mass: 156.95824 },\n            { nominal: 158, mass: 157.954801 },\n            { nominal: 159, mass: 158.953996 },\n            { nominal: 160, mass: 159.950691 },\n            { nominal: 161, mass: 160.950278 },\n            { nominal: 162, mass: 161.9472148 },\n            { nominal: 163, mass: 162.947113 },\n            { nominal: 164, mass: 163.944371 },\n            { nominal: 165, mass: 164.944567 },\n            { nominal: 166, mass: 165.94218 },\n            { nominal: 167, mass: 166.9426 },\n            { nominal: 168, mass: 167.940568 },\n            { nominal: 169, mass: 168.941259 },\n            { nominal: 170, mass: 169.939609 },\n            { nominal: 171, mass: 170.940492 },\n            { nominal: 172, mass: 171.93945 },\n            { nominal: 173, mass: 172.940513 },\n            { nominal: 174, mass: 173.9400461, abundance: 0.0016 },\n            { nominal: 175, mass: 174.9415092 },\n            { nominal: 176, mass: 175.9414076, abundance: 0.0526 },\n            { nominal: 177, mass: 176.9432277, abundance: 0.186 },\n            { nominal: 178, mass: 177.9437058, abundance: 0.2728 },\n            { nominal: 179, mass: 178.9458232, abundance: 0.1362 },\n            { nominal: 180, mass: 179.946557, abundance: 0.3508 },\n            { nominal: 181, mass: 180.9491083 },\n            { nominal: 182, mass: 181.9505612 },\n            { nominal: 183, mass: 182.95353 },\n            { nominal: 184, mass: 183.955446 },\n            { nominal: 185, mass: 184.958862 },\n            { nominal: 186, mass: 185.960897 },\n            { nominal: 187, mass: 186.96477 },\n            { nominal: 188, mass: 187.96685 },\n            { nominal: 189, mass: 188.97084 },\n        ],\n        symbol: 'Hf',\n        mass: 178.4849787234,\n        name: 'Hafnium',\n        monoisotopicMass: 179.946557,\n    },\n    {\n        number: 73,\n        isotopes: [\n            { nominal: 155, mass: 154.97424 },\n            { nominal: 156, mass: 155.97203 },\n            { nominal: 157, mass: 156.96818 },\n            { nominal: 158, mass: 157.96654 },\n            { nominal: 159, mass: 158.963023 },\n            { nominal: 160, mass: 159.961488 },\n            { nominal: 161, mass: 160.958452 },\n            { nominal: 162, mass: 161.957294 },\n            { nominal: 163, mass: 162.954337 },\n            { nominal: 164, mass: 163.953534 },\n            { nominal: 165, mass: 164.950781 },\n            { nominal: 166, mass: 165.950512 },\n            { nominal: 167, mass: 166.948093 },\n            { nominal: 168, mass: 167.948047 },\n            { nominal: 169, mass: 168.946011 },\n            { nominal: 170, mass: 169.946175 },\n            { nominal: 171, mass: 170.944476 },\n            { nominal: 172, mass: 171.944895 },\n            { nominal: 173, mass: 172.94375 },\n            { nominal: 174, mass: 173.944454 },\n            { nominal: 175, mass: 174.943737 },\n            { nominal: 176, mass: 175.944857 },\n            { nominal: 177, mass: 176.9444795 },\n            { nominal: 178, mass: 177.945678 },\n            { nominal: 179, mass: 178.9459366 },\n            { nominal: 180, mass: 179.9474648, abundance: 0.0001201 },\n            { nominal: 181, mass: 180.9479958, abundance: 0.9998799 },\n            { nominal: 182, mass: 181.9501519 },\n            { nominal: 183, mass: 182.9513726 },\n            { nominal: 184, mass: 183.954008 },\n            { nominal: 185, mass: 184.955559 },\n            { nominal: 186, mass: 185.958551 },\n            { nominal: 187, mass: 186.960386 },\n            { nominal: 188, mass: 187.963916 },\n            { nominal: 189, mass: 188.96583 },\n            { nominal: 190, mass: 189.96939 },\n            { nominal: 191, mass: 190.97156 },\n            { nominal: 192, mass: 191.97514 },\n        ],\n        symbol: 'Ta',\n        mass: 180.9478756362269,\n        name: 'Tantalum',\n        monoisotopicMass: 180.9479958,\n    },\n    {\n        number: 74,\n        isotopes: [\n            { nominal: 157, mass: 156.97884 },\n            { nominal: 158, mass: 157.97456 },\n            { nominal: 159, mass: 158.97264 },\n            { nominal: 160, mass: 159.96846 },\n            { nominal: 161, mass: 160.9672 },\n            { nominal: 162, mass: 161.963499 },\n            { nominal: 163, mass: 162.962524 },\n            { nominal: 164, mass: 163.958961 },\n            { nominal: 165, mass: 164.958281 },\n            { nominal: 166, mass: 165.955031 },\n            { nominal: 167, mass: 166.954805 },\n            { nominal: 168, mass: 167.951806 },\n            { nominal: 169, mass: 168.951779 },\n            { nominal: 170, mass: 169.949232 },\n            { nominal: 171, mass: 170.949451 },\n            { nominal: 172, mass: 171.947292 },\n            { nominal: 173, mass: 172.947689 },\n            { nominal: 174, mass: 173.946079 },\n            { nominal: 175, mass: 174.946717 },\n            { nominal: 176, mass: 175.945634 },\n            { nominal: 177, mass: 176.946643 },\n            { nominal: 178, mass: 177.945883 },\n            { nominal: 179, mass: 178.947077 },\n            { nominal: 180, mass: 179.9467108, abundance: 0.0012 },\n            { nominal: 181, mass: 180.9481978 },\n            { nominal: 182, mass: 181.94820394, abundance: 0.265 },\n            { nominal: 183, mass: 182.95022275, abundance: 0.1431 },\n            { nominal: 184, mass: 183.95093092, abundance: 0.3064 },\n            { nominal: 185, mass: 184.95341897 },\n            { nominal: 186, mass: 185.9543628, abundance: 0.2843 },\n            { nominal: 187, mass: 186.9571588 },\n            { nominal: 188, mass: 187.9584862 },\n            { nominal: 189, mass: 188.961763 },\n            { nominal: 190, mass: 189.963091 },\n            { nominal: 191, mass: 190.966531 },\n            { nominal: 192, mass: 191.96817 },\n            { nominal: 193, mass: 192.97178 },\n            { nominal: 194, mass: 193.97367 },\n        ],\n        symbol: 'W',\n        mass: 183.841777550513,\n        name: 'Tungsten',\n        monoisotopicMass: 183.95093092,\n    },\n    {\n        number: 75,\n        isotopes: [\n            { nominal: 159, mass: 158.98418 },\n            { nominal: 160, mass: 159.98182 },\n            { nominal: 161, mass: 160.97757 },\n            { nominal: 162, mass: 161.97584 },\n            { nominal: 163, mass: 162.97208 },\n            { nominal: 164, mass: 163.970453 },\n            { nominal: 165, mass: 164.967103 },\n            { nominal: 166, mass: 165.965761 },\n            { nominal: 167, mass: 166.962595 },\n            { nominal: 168, mass: 167.961573 },\n            { nominal: 169, mass: 168.958766 },\n            { nominal: 170, mass: 169.95822 },\n            { nominal: 171, mass: 170.955716 },\n            { nominal: 172, mass: 171.95542 },\n            { nominal: 173, mass: 172.953243 },\n            { nominal: 174, mass: 173.953115 },\n            { nominal: 175, mass: 174.951381 },\n            { nominal: 176, mass: 175.951623 },\n            { nominal: 177, mass: 176.950328 },\n            { nominal: 178, mass: 177.950989 },\n            { nominal: 179, mass: 178.949989 },\n            { nominal: 180, mass: 179.950792 },\n            { nominal: 181, mass: 180.950058 },\n            { nominal: 182, mass: 181.95121 },\n            { nominal: 183, mass: 182.9508196 },\n            { nominal: 184, mass: 183.9525228 },\n            { nominal: 185, mass: 184.9529545, abundance: 0.374 },\n            { nominal: 186, mass: 185.9549856 },\n            { nominal: 187, mass: 186.9557501, abundance: 0.626 },\n            { nominal: 188, mass: 187.9581115 },\n            { nominal: 189, mass: 188.959226 },\n            { nominal: 190, mass: 189.961744 },\n            { nominal: 191, mass: 190.963122 },\n            { nominal: 192, mass: 191.966088 },\n            { nominal: 193, mass: 192.967541 },\n            { nominal: 194, mass: 193.97076 },\n            { nominal: 195, mass: 194.97254 },\n            { nominal: 196, mass: 195.9758 },\n            { nominal: 197, mass: 196.97799 },\n            { nominal: 198, mass: 197.9816 },\n        ],\n        symbol: 'Re',\n        mass: 186.20670454560002,\n        name: 'Rhenium',\n        monoisotopicMass: 186.9557501,\n    },\n    {\n        number: 76,\n        isotopes: [\n            { nominal: 161, mass: 160.98903 },\n            { nominal: 162, mass: 161.98443 },\n            { nominal: 163, mass: 162.98241 },\n            { nominal: 164, mass: 163.97802 },\n            { nominal: 165, mass: 164.9766 },\n            { nominal: 166, mass: 165.972692 },\n            { nominal: 167, mass: 166.971549 },\n            { nominal: 168, mass: 167.967808 },\n            { nominal: 169, mass: 168.967018 },\n            { nominal: 170, mass: 169.963578 },\n            { nominal: 171, mass: 170.963174 },\n            { nominal: 172, mass: 171.960017 },\n            { nominal: 173, mass: 172.959808 },\n            { nominal: 174, mass: 173.957064 },\n            { nominal: 175, mass: 174.956945 },\n            { nominal: 176, mass: 175.954806 },\n            { nominal: 177, mass: 176.954966 },\n            { nominal: 178, mass: 177.953254 },\n            { nominal: 179, mass: 178.953817 },\n            { nominal: 180, mass: 179.952375 },\n            { nominal: 181, mass: 180.953247 },\n            { nominal: 182, mass: 181.95211 },\n            { nominal: 183, mass: 182.953125 },\n            { nominal: 184, mass: 183.9524885, abundance: 0.0002 },\n            { nominal: 185, mass: 184.9540417 },\n            { nominal: 186, mass: 185.953835, abundance: 0.0159 },\n            { nominal: 187, mass: 186.9557474, abundance: 0.0196 },\n            { nominal: 188, mass: 187.9558352, abundance: 0.1324 },\n            { nominal: 189, mass: 188.9581442, abundance: 0.1615 },\n            { nominal: 190, mass: 189.9584437, abundance: 0.2626 },\n            { nominal: 191, mass: 190.9609264 },\n            { nominal: 192, mass: 191.961477, abundance: 0.4078 },\n            { nominal: 193, mass: 192.9641479 },\n            { nominal: 194, mass: 193.9651772 },\n            { nominal: 195, mass: 194.968318 },\n            { nominal: 196, mass: 195.969641 },\n            { nominal: 197, mass: 196.97283 },\n            { nominal: 198, mass: 197.97441 },\n            { nominal: 199, mass: 198.97801 },\n            { nominal: 200, mass: 199.97984 },\n            { nominal: 201, mass: 200.98364 },\n            { nominal: 202, mass: 201.98595 },\n        ],\n        symbol: 'Os',\n        mass: 190.22485962823998,\n        name: 'Osmium',\n        monoisotopicMass: 191.961477,\n    },\n    {\n        number: 77,\n        isotopes: [\n            { nominal: 164, mass: 163.99191 },\n            { nominal: 165, mass: 164.9875 },\n            { nominal: 166, mass: 165.98566 },\n            { nominal: 167, mass: 166.981666 },\n            { nominal: 168, mass: 167.979907 },\n            { nominal: 169, mass: 168.976298 },\n            { nominal: 170, mass: 169.974922 },\n            { nominal: 171, mass: 170.97164 },\n            { nominal: 172, mass: 171.970607 },\n            { nominal: 173, mass: 172.967506 },\n            { nominal: 174, mass: 173.966861 },\n            { nominal: 175, mass: 174.96415 },\n            { nominal: 176, mass: 175.96365 },\n            { nominal: 177, mass: 176.961301 },\n            { nominal: 178, mass: 177.961082 },\n            { nominal: 179, mass: 178.95912 },\n            { nominal: 180, mass: 179.959229 },\n            { nominal: 181, mass: 180.957625 },\n            { nominal: 182, mass: 181.958076 },\n            { nominal: 183, mass: 182.95684 },\n            { nominal: 184, mass: 183.957476 },\n            { nominal: 185, mass: 184.956698 },\n            { nominal: 186, mass: 185.957944 },\n            { nominal: 187, mass: 186.957542 },\n            { nominal: 188, mass: 187.958828 },\n            { nominal: 189, mass: 188.958715 },\n            { nominal: 190, mass: 189.9605412 },\n            { nominal: 191, mass: 190.9605893, abundance: 0.373 },\n            { nominal: 192, mass: 191.9626002 },\n            { nominal: 193, mass: 192.9629216, abundance: 0.627 },\n            { nominal: 194, mass: 193.9650735 },\n            { nominal: 195, mass: 194.9659747 },\n            { nominal: 196, mass: 195.968397 },\n            { nominal: 197, mass: 196.969655 },\n            { nominal: 198, mass: 197.97228 },\n            { nominal: 199, mass: 198.973805 },\n            { nominal: 200, mass: 199.9768 },\n            { nominal: 201, mass: 200.97864 },\n            { nominal: 202, mass: 201.98199 },\n            { nominal: 203, mass: 202.98423 },\n            { nominal: 204, mass: 203.9896 },\n        ],\n        symbol: 'Ir',\n        mass: 192.2160516521,\n        name: 'Iridium',\n        monoisotopicMass: 192.9629216,\n    },\n    {\n        number: 78,\n        isotopes: [\n            { nominal: 166, mass: 165.99486 },\n            { nominal: 167, mass: 166.99269 },\n            { nominal: 168, mass: 167.98813 },\n            { nominal: 169, mass: 168.98657 },\n            { nominal: 170, mass: 169.982496 },\n            { nominal: 171, mass: 170.981245 },\n            { nominal: 172, mass: 171.977351 },\n            { nominal: 173, mass: 172.976443 },\n            { nominal: 174, mass: 173.97282 },\n            { nominal: 175, mass: 174.97241 },\n            { nominal: 176, mass: 175.968938 },\n            { nominal: 177, mass: 176.96847 },\n            { nominal: 178, mass: 177.96565 },\n            { nominal: 179, mass: 178.965359 },\n            { nominal: 180, mass: 179.963032 },\n            { nominal: 181, mass: 180.963098 },\n            { nominal: 182, mass: 181.961172 },\n            { nominal: 183, mass: 182.961597 },\n            { nominal: 184, mass: 183.959915 },\n            { nominal: 185, mass: 184.960614 },\n            { nominal: 186, mass: 185.959351 },\n            { nominal: 187, mass: 186.960617 },\n            { nominal: 188, mass: 187.9593889 },\n            { nominal: 189, mass: 188.960831 },\n            { nominal: 190, mass: 189.9599297, abundance: 0.00012 },\n            { nominal: 191, mass: 190.9616729 },\n            { nominal: 192, mass: 191.9610387, abundance: 0.00782 },\n            { nominal: 193, mass: 192.9629824 },\n            { nominal: 194, mass: 193.9626809, abundance: 0.3286 },\n            { nominal: 195, mass: 194.9647917, abundance: 0.3378 },\n            { nominal: 196, mass: 195.96495209, abundance: 0.2521 },\n            { nominal: 197, mass: 196.96734069 },\n            { nominal: 198, mass: 197.9678949, abundance: 0.07356 },\n            { nominal: 199, mass: 198.9705952 },\n            { nominal: 200, mass: 199.971443 },\n            { nominal: 201, mass: 200.974513 },\n            { nominal: 202, mass: 201.975639 },\n            { nominal: 203, mass: 202.97893 },\n            { nominal: 204, mass: 203.98076 },\n            { nominal: 205, mass: 204.98608 },\n            { nominal: 206, mass: 205.98966 },\n        ],\n        symbol: 'Pt',\n        mass: 195.084456864931,\n        name: 'Platinum',\n        monoisotopicMass: 194.9647917,\n    },\n    {\n        number: 79,\n        isotopes: [\n            { nominal: 169, mass: 168.99808 },\n            { nominal: 170, mass: 169.99597 },\n            { nominal: 171, mass: 170.991876 },\n            { nominal: 172, mass: 171.989942 },\n            { nominal: 173, mass: 172.986241 },\n            { nominal: 174, mass: 173.984717 },\n            { nominal: 175, mass: 174.981304 },\n            { nominal: 176, mass: 175.98025 },\n            { nominal: 177, mass: 176.97687 },\n            { nominal: 178, mass: 177.976032 },\n            { nominal: 179, mass: 178.973174 },\n            { nominal: 180, mass: 179.972523 },\n            { nominal: 181, mass: 180.970079 },\n            { nominal: 182, mass: 181.969618 },\n            { nominal: 183, mass: 182.967591 },\n            { nominal: 184, mass: 183.967452 },\n            { nominal: 185, mass: 184.96579 },\n            { nominal: 186, mass: 185.965953 },\n            { nominal: 187, mass: 186.964543 },\n            { nominal: 188, mass: 187.965349 },\n            { nominal: 189, mass: 188.963948 },\n            { nominal: 190, mass: 189.964698 },\n            { nominal: 191, mass: 190.963702 },\n            { nominal: 192, mass: 191.964814 },\n            { nominal: 193, mass: 192.9641373 },\n            { nominal: 194, mass: 193.9654178 },\n            { nominal: 195, mass: 194.9650352 },\n            { nominal: 196, mass: 195.9665699 },\n            { nominal: 197, mass: 196.96656879, abundance: 1 },\n            { nominal: 198, mass: 197.96824242 },\n            { nominal: 199, mass: 198.96876528 },\n            { nominal: 200, mass: 199.970756 },\n            { nominal: 201, mass: 200.9716575 },\n            { nominal: 202, mass: 201.973856 },\n            { nominal: 203, mass: 202.9751544 },\n            { nominal: 204, mass: 203.97783 },\n            { nominal: 205, mass: 204.97985 },\n            { nominal: 206, mass: 205.98474 },\n            { nominal: 207, mass: 206.9884 },\n            { nominal: 208, mass: 207.99345 },\n            { nominal: 209, mass: 208.99735 },\n            { nominal: 210, mass: 210.0025 },\n        ],\n        symbol: 'Au',\n        mass: 196.96656879,\n        name: 'Gold',\n        monoisotopicMass: 196.96656879,\n    },\n    {\n        number: 80,\n        isotopes: [\n            { nominal: 171, mass: 171.00353 },\n            { nominal: 172, mass: 171.99881 },\n            { nominal: 173, mass: 172.99709 },\n            { nominal: 174, mass: 173.992865 },\n            { nominal: 175, mass: 174.991441 },\n            { nominal: 176, mass: 175.987361 },\n            { nominal: 177, mass: 176.986277 },\n            { nominal: 178, mass: 177.982484 },\n            { nominal: 179, mass: 178.981831 },\n            { nominal: 180, mass: 179.97826 },\n            { nominal: 181, mass: 180.977819 },\n            { nominal: 182, mass: 181.974689 },\n            { nominal: 183, mass: 182.9744448 },\n            { nominal: 184, mass: 183.971714 },\n            { nominal: 185, mass: 184.971899 },\n            { nominal: 186, mass: 185.969362 },\n            { nominal: 187, mass: 186.969814 },\n            { nominal: 188, mass: 187.967567 },\n            { nominal: 189, mass: 188.968195 },\n            { nominal: 190, mass: 189.966323 },\n            { nominal: 191, mass: 190.967157 },\n            { nominal: 192, mass: 191.965635 },\n            { nominal: 193, mass: 192.966653 },\n            { nominal: 194, mass: 193.9654491 },\n            { nominal: 195, mass: 194.966721 },\n            { nominal: 196, mass: 195.9658326, abundance: 0.0015 },\n            { nominal: 197, mass: 196.9672128 },\n            { nominal: 198, mass: 197.9667686, abundance: 0.0997 },\n            { nominal: 199, mass: 198.96828064, abundance: 0.1687 },\n            { nominal: 200, mass: 199.96832659, abundance: 0.231 },\n            { nominal: 201, mass: 200.97030284, abundance: 0.1318 },\n            { nominal: 202, mass: 201.9706434, abundance: 0.2986 },\n            { nominal: 203, mass: 202.9728728 },\n            { nominal: 204, mass: 203.97349398, abundance: 0.0687 },\n            { nominal: 205, mass: 204.9760734 },\n            { nominal: 206, mass: 205.977514 },\n            { nominal: 207, mass: 206.9823 },\n            { nominal: 208, mass: 207.985759 },\n            { nominal: 209, mass: 208.99072 },\n            { nominal: 210, mass: 209.99424 },\n            { nominal: 211, mass: 210.99933 },\n            { nominal: 212, mass: 212.00296 },\n            { nominal: 213, mass: 213.00823 },\n            { nominal: 214, mass: 214.012 },\n            { nominal: 215, mass: 215.0174 },\n            { nominal: 216, mass: 216.02132 },\n        ],\n        symbol: 'Hg',\n        mass: 200.59916703455602,\n        name: 'Mercury',\n        monoisotopicMass: 201.9706434,\n    },\n    {\n        number: 81,\n        isotopes: [\n            { nominal: 176, mass: 176.000624 },\n            { nominal: 177, mass: 176.996431 },\n            { nominal: 178, mass: 177.99485 },\n            { nominal: 179, mass: 178.991111 },\n            { nominal: 180, mass: 179.990057 },\n            { nominal: 181, mass: 180.98626 },\n            { nominal: 182, mass: 181.985713 },\n            { nominal: 183, mass: 182.982193 },\n            { nominal: 184, mass: 183.981886 },\n            { nominal: 185, mass: 184.978789 },\n            { nominal: 186, mass: 185.978651 },\n            { nominal: 187, mass: 186.9759063 },\n            { nominal: 188, mass: 187.976021 },\n            { nominal: 189, mass: 188.973588 },\n            { nominal: 190, mass: 189.973828 },\n            { nominal: 191, mass: 190.9717842 },\n            { nominal: 192, mass: 191.972225 },\n            { nominal: 193, mass: 192.970502 },\n            { nominal: 194, mass: 193.971081 },\n            { nominal: 195, mass: 194.969774 },\n            { nominal: 196, mass: 195.970481 },\n            { nominal: 197, mass: 196.969576 },\n            { nominal: 198, mass: 197.970483 },\n            { nominal: 199, mass: 198.969877 },\n            { nominal: 200, mass: 199.9709633 },\n            { nominal: 201, mass: 200.970822 },\n            { nominal: 202, mass: 201.972102 },\n            { nominal: 203, mass: 202.9723446, abundance: 0.2952 },\n            { nominal: 204, mass: 203.9738639 },\n            { nominal: 205, mass: 204.9744278, abundance: 0.7048 },\n            { nominal: 206, mass: 205.9761106 },\n            { nominal: 207, mass: 206.9774197 },\n            { nominal: 208, mass: 207.982019 },\n            { nominal: 209, mass: 208.9853594 },\n            { nominal: 210, mass: 209.990074 },\n            { nominal: 211, mass: 210.993475 },\n            { nominal: 212, mass: 211.99834 },\n            { nominal: 213, mass: 213.001915 },\n            { nominal: 214, mass: 214.00694 },\n            { nominal: 215, mass: 215.01064 },\n            { nominal: 216, mass: 216.0158 },\n            { nominal: 217, mass: 217.01966 },\n            { nominal: 218, mass: 218.02479 },\n        ],\n        symbol: 'Tl',\n        mass: 204.38341283936,\n        name: 'Thallium',\n        monoisotopicMass: 204.9744278,\n    },\n    {\n        number: 82,\n        isotopes: [\n            { nominal: 178, mass: 178.003831 },\n            { nominal: 179, mass: 179.002201 },\n            { nominal: 180, mass: 179.997928 },\n            { nominal: 181, mass: 180.996653 },\n            { nominal: 182, mass: 181.992672 },\n            { nominal: 183, mass: 182.991872 },\n            { nominal: 184, mass: 183.988136 },\n            { nominal: 185, mass: 184.98761 },\n            { nominal: 186, mass: 185.984238 },\n            { nominal: 187, mass: 186.9839109 },\n            { nominal: 188, mass: 187.980875 },\n            { nominal: 189, mass: 188.980807 },\n            { nominal: 190, mass: 189.978082 },\n            { nominal: 191, mass: 190.978276 },\n            { nominal: 192, mass: 191.975775 },\n            { nominal: 193, mass: 192.976173 },\n            { nominal: 194, mass: 193.974012 },\n            { nominal: 195, mass: 194.974543 },\n            { nominal: 196, mass: 195.972774 },\n            { nominal: 197, mass: 196.9734312 },\n            { nominal: 198, mass: 197.972034 },\n            { nominal: 199, mass: 198.972913 },\n            { nominal: 200, mass: 199.971819 },\n            { nominal: 201, mass: 200.972883 },\n            { nominal: 202, mass: 201.972152 },\n            { nominal: 203, mass: 202.9733911 },\n            { nominal: 204, mass: 203.973044, abundance: 0.014 },\n            { nominal: 205, mass: 204.9744822 },\n            { nominal: 206, mass: 205.9744657, abundance: 0.241 },\n            { nominal: 207, mass: 206.9758973, abundance: 0.221 },\n            { nominal: 208, mass: 207.9766525, abundance: 0.524 },\n            { nominal: 209, mass: 208.9810905 },\n            { nominal: 210, mass: 209.9841889 },\n            { nominal: 211, mass: 210.9887371 },\n            { nominal: 212, mass: 211.9918977 },\n            { nominal: 213, mass: 212.9965629 },\n            { nominal: 214, mass: 213.9998059 },\n            { nominal: 215, mass: 215.00474 },\n            { nominal: 216, mass: 216.00803 },\n            { nominal: 217, mass: 217.01314 },\n            { nominal: 218, mass: 218.01659 },\n            { nominal: 219, mass: 219.02177 },\n            { nominal: 220, mass: 220.02541 },\n        ],\n        symbol: 'Pb',\n        mass: 207.216908063,\n        name: 'Lead',\n        monoisotopicMass: 207.9766525,\n    },\n    {\n        number: 83,\n        isotopes: [\n            { nominal: 184, mass: 184.001275 },\n            { nominal: 185, mass: 184.9976 },\n            { nominal: 186, mass: 185.996644 },\n            { nominal: 187, mass: 186.993147 },\n            { nominal: 188, mass: 187.992287 },\n            { nominal: 189, mass: 188.989195 },\n            { nominal: 190, mass: 189.988622 },\n            { nominal: 191, mass: 190.9857866 },\n            { nominal: 192, mass: 191.985469 },\n            { nominal: 193, mass: 192.98296 },\n            { nominal: 194, mass: 193.982785 },\n            { nominal: 195, mass: 194.9806488 },\n            { nominal: 196, mass: 195.980667 },\n            { nominal: 197, mass: 196.9788651 },\n            { nominal: 198, mass: 197.979206 },\n            { nominal: 199, mass: 198.977673 },\n            { nominal: 200, mass: 199.978131 },\n            { nominal: 201, mass: 200.97701 },\n            { nominal: 202, mass: 201.977734 },\n            { nominal: 203, mass: 202.976893 },\n            { nominal: 204, mass: 203.9778361 },\n            { nominal: 205, mass: 204.9773867 },\n            { nominal: 206, mass: 205.9784993 },\n            { nominal: 207, mass: 206.978471 },\n            { nominal: 208, mass: 207.9797425 },\n            { nominal: 209, mass: 208.9803991, abundance: 1 },\n            { nominal: 210, mass: 209.9841207 },\n            { nominal: 211, mass: 210.9872697 },\n            { nominal: 212, mass: 211.991286 },\n            { nominal: 213, mass: 212.9943851 },\n            { nominal: 214, mass: 213.998712 },\n            { nominal: 215, mass: 215.00177 },\n            { nominal: 216, mass: 216.006306 },\n            { nominal: 217, mass: 217.009372 },\n            { nominal: 218, mass: 218.014188 },\n            { nominal: 219, mass: 219.01748 },\n            { nominal: 220, mass: 220.02235 },\n            { nominal: 221, mass: 221.02587 },\n            { nominal: 222, mass: 222.03078 },\n            { nominal: 223, mass: 223.0345 },\n            { nominal: 224, mass: 224.03947 },\n        ],\n        symbol: 'Bi',\n        mass: 208.9803991,\n        name: 'Bismuth',\n        monoisotopicMass: 208.9803991,\n    },\n    {\n        number: 84,\n        isotopes: [\n            { nominal: 186, mass: 186.004393 },\n            { nominal: 187, mass: 187.003041 },\n            { nominal: 188, mass: 187.999416 },\n            { nominal: 189, mass: 188.998473 },\n            { nominal: 190, mass: 189.995101 },\n            { nominal: 191, mass: 190.9945585 },\n            { nominal: 192, mass: 191.991336 },\n            { nominal: 193, mass: 192.991026 },\n            { nominal: 194, mass: 193.988186 },\n            { nominal: 195, mass: 194.988126 },\n            { nominal: 196, mass: 195.985526 },\n            { nominal: 197, mass: 196.98566 },\n            { nominal: 198, mass: 197.983389 },\n            { nominal: 199, mass: 198.983667 },\n            { nominal: 200, mass: 199.981799 },\n            { nominal: 201, mass: 200.9822598 },\n            { nominal: 202, mass: 201.980758 },\n            { nominal: 203, mass: 202.9814161 },\n            { nominal: 204, mass: 203.98031 },\n            { nominal: 205, mass: 204.981203 },\n            { nominal: 206, mass: 205.980474 },\n            { nominal: 207, mass: 206.9815938 },\n            { nominal: 208, mass: 207.9812461 },\n            { nominal: 209, mass: 208.9824308 },\n            { nominal: 210, mass: 209.9828741 },\n            { nominal: 211, mass: 210.9866536 },\n            { nominal: 212, mass: 211.9888684 },\n            { nominal: 213, mass: 212.9928576 },\n            { nominal: 214, mass: 213.9952017 },\n            { nominal: 215, mass: 214.9994201 },\n            { nominal: 216, mass: 216.0019152 },\n            { nominal: 217, mass: 217.0063182 },\n            { nominal: 218, mass: 218.0089735 },\n            { nominal: 219, mass: 219.013614 },\n            { nominal: 220, mass: 220.016386 },\n            { nominal: 221, mass: 221.021228 },\n            { nominal: 222, mass: 222.02414 },\n            { nominal: 223, mass: 223.02907 },\n            { nominal: 224, mass: 224.03211 },\n            { nominal: 225, mass: 225.03707 },\n            { nominal: 226, mass: 226.04031 },\n            { nominal: 227, mass: 227.04539 },\n        ],\n        symbol: 'Po',\n        mass: null,\n        name: 'Polonium',\n    },\n    {\n        number: 85,\n        isotopes: [\n            { nominal: 191, mass: 191.004148 },\n            { nominal: 192, mass: 192.003152 },\n            { nominal: 193, mass: 192.999927 },\n            { nominal: 194, mass: 193.999236 },\n            { nominal: 195, mass: 194.9962685 },\n            { nominal: 196, mass: 195.9958 },\n            { nominal: 197, mass: 196.993189 },\n            { nominal: 198, mass: 197.992784 },\n            { nominal: 199, mass: 198.9905277 },\n            { nominal: 200, mass: 199.990351 },\n            { nominal: 201, mass: 200.9884171 },\n            { nominal: 202, mass: 201.98863 },\n            { nominal: 203, mass: 202.986943 },\n            { nominal: 204, mass: 203.987251 },\n            { nominal: 205, mass: 204.986076 },\n            { nominal: 206, mass: 205.986657 },\n            { nominal: 207, mass: 206.9858 },\n            { nominal: 208, mass: 207.9866133 },\n            { nominal: 209, mass: 208.9861702 },\n            { nominal: 210, mass: 209.9871479 },\n            { nominal: 211, mass: 210.9874966 },\n            { nominal: 212, mass: 211.9907377 },\n            { nominal: 213, mass: 212.992937 },\n            { nominal: 214, mass: 213.9963721 },\n            { nominal: 215, mass: 214.9986528 },\n            { nominal: 216, mass: 216.0024236 },\n            { nominal: 217, mass: 217.0047192 },\n            { nominal: 218, mass: 218.008695 },\n            { nominal: 219, mass: 219.0111618 },\n            { nominal: 220, mass: 220.015433 },\n            { nominal: 221, mass: 221.018017 },\n            { nominal: 222, mass: 222.022494 },\n            { nominal: 223, mass: 223.025151 },\n            { nominal: 224, mass: 224.029749 },\n            { nominal: 225, mass: 225.03263 },\n            { nominal: 226, mass: 226.03716 },\n            { nominal: 227, mass: 227.04024 },\n            { nominal: 228, mass: 228.04475 },\n            { nominal: 229, mass: 229.04812 },\n        ],\n        symbol: 'At',\n        mass: null,\n        name: 'Astatine',\n    },\n    {\n        number: 86,\n        isotopes: [\n            { nominal: 193, mass: 193.009708 },\n            { nominal: 194, mass: 194.006144 },\n            { nominal: 195, mass: 195.005422 },\n            { nominal: 196, mass: 196.002116 },\n            { nominal: 197, mass: 197.001585 },\n            { nominal: 198, mass: 197.998679 },\n            { nominal: 199, mass: 198.99839 },\n            { nominal: 200, mass: 199.99569 },\n            { nominal: 201, mass: 200.995628 },\n            { nominal: 202, mass: 201.993264 },\n            { nominal: 203, mass: 202.993388 },\n            { nominal: 204, mass: 203.99143 },\n            { nominal: 205, mass: 204.991719 },\n            { nominal: 206, mass: 205.990214 },\n            { nominal: 207, mass: 206.9907303 },\n            { nominal: 208, mass: 207.989635 },\n            { nominal: 209, mass: 208.990415 },\n            { nominal: 210, mass: 209.9896891 },\n            { nominal: 211, mass: 210.9906011 },\n            { nominal: 212, mass: 211.9907039 },\n            { nominal: 213, mass: 212.9938831 },\n            { nominal: 214, mass: 213.995363 },\n            { nominal: 215, mass: 214.9987459 },\n            { nominal: 216, mass: 216.0002719 },\n            { nominal: 217, mass: 217.003928 },\n            { nominal: 218, mass: 218.0056016 },\n            { nominal: 219, mass: 219.0094804 },\n            { nominal: 220, mass: 220.0113941 },\n            { nominal: 221, mass: 221.0155371 },\n            { nominal: 222, mass: 222.0175782 },\n            { nominal: 223, mass: 223.0218893 },\n            { nominal: 224, mass: 224.024096 },\n            { nominal: 225, mass: 225.028486 },\n            { nominal: 226, mass: 226.030861 },\n            { nominal: 227, mass: 227.035304 },\n            { nominal: 228, mass: 228.037835 },\n            { nominal: 229, mass: 229.042257 },\n            { nominal: 230, mass: 230.04514 },\n            { nominal: 231, mass: 231.04987 },\n        ],\n        symbol: 'Rn',\n        mass: null,\n        name: 'Radon',\n    },\n    {\n        number: 87,\n        isotopes: [\n            { nominal: 199, mass: 199.007259 },\n            { nominal: 200, mass: 200.006586 },\n            { nominal: 201, mass: 201.003867 },\n            { nominal: 202, mass: 202.00332 },\n            { nominal: 203, mass: 203.0009407 },\n            { nominal: 204, mass: 204.000652 },\n            { nominal: 205, mass: 204.9985939 },\n            { nominal: 206, mass: 205.998666 },\n            { nominal: 207, mass: 206.996946 },\n            { nominal: 208, mass: 207.997138 },\n            { nominal: 209, mass: 208.995955 },\n            { nominal: 210, mass: 209.996422 },\n            { nominal: 211, mass: 210.995556 },\n            { nominal: 212, mass: 211.9962257 },\n            { nominal: 213, mass: 212.996186 },\n            { nominal: 214, mass: 213.9989713 },\n            { nominal: 215, mass: 215.0003418 },\n            { nominal: 216, mass: 216.0031899 },\n            { nominal: 217, mass: 217.0046323 },\n            { nominal: 218, mass: 218.0075787 },\n            { nominal: 219, mass: 219.0092524 },\n            { nominal: 220, mass: 220.0123277 },\n            { nominal: 221, mass: 221.0142552 },\n            { nominal: 222, mass: 222.017552 },\n            { nominal: 223, mass: 223.019736 },\n            { nominal: 224, mass: 224.023398 },\n            { nominal: 225, mass: 225.025573 },\n            { nominal: 226, mass: 226.029566 },\n            { nominal: 227, mass: 227.031869 },\n            { nominal: 228, mass: 228.035823 },\n            { nominal: 229, mass: 229.038298 },\n            { nominal: 230, mass: 230.042416 },\n            { nominal: 231, mass: 231.045158 },\n            { nominal: 232, mass: 232.04937 },\n            { nominal: 233, mass: 233.05264 },\n        ],\n        symbol: 'Fr',\n        mass: null,\n        name: 'Francium',\n    },\n    {\n        number: 88,\n        isotopes: [\n            { nominal: 201, mass: 201.01271 },\n            { nominal: 202, mass: 202.00976 },\n            { nominal: 203, mass: 203.009304 },\n            { nominal: 204, mass: 204.006492 },\n            { nominal: 205, mass: 205.006268 },\n            { nominal: 206, mass: 206.003828 },\n            { nominal: 207, mass: 207.003799 },\n            { nominal: 208, mass: 208.001841 },\n            { nominal: 209, mass: 209.00199 },\n            { nominal: 210, mass: 210.000494 },\n            { nominal: 211, mass: 211.0008932 },\n            { nominal: 212, mass: 211.999787 },\n            { nominal: 213, mass: 213.000384 },\n            { nominal: 214, mass: 214.0000997 },\n            { nominal: 215, mass: 215.0027204 },\n            { nominal: 216, mass: 216.0035334 },\n            { nominal: 217, mass: 217.0063207 },\n            { nominal: 218, mass: 218.007141 },\n            { nominal: 219, mass: 219.0100855 },\n            { nominal: 220, mass: 220.0110259 },\n            { nominal: 221, mass: 221.0139177 },\n            { nominal: 222, mass: 222.0153748 },\n            { nominal: 223, mass: 223.0185023 },\n            { nominal: 224, mass: 224.020212 },\n            { nominal: 225, mass: 225.0236119 },\n            { nominal: 226, mass: 226.0254103 },\n            { nominal: 227, mass: 227.0291783 },\n            { nominal: 228, mass: 228.0310707 },\n            { nominal: 229, mass: 229.034942 },\n            { nominal: 230, mass: 230.037055 },\n            { nominal: 231, mass: 231.041027 },\n            { nominal: 232, mass: 232.0434753 },\n            { nominal: 233, mass: 233.047582 },\n            { nominal: 234, mass: 234.050342 },\n            { nominal: 235, mass: 235.05497 },\n        ],\n        symbol: 'Ra',\n        mass: null,\n        name: 'Radium',\n    },\n    {\n        number: 89,\n        isotopes: [\n            { nominal: 206, mass: 206.014452 },\n            { nominal: 207, mass: 207.011966 },\n            { nominal: 208, mass: 208.01155 },\n            { nominal: 209, mass: 209.009495 },\n            { nominal: 210, mass: 210.009436 },\n            { nominal: 211, mass: 211.007732 },\n            { nominal: 212, mass: 212.007813 },\n            { nominal: 213, mass: 213.006609 },\n            { nominal: 214, mass: 214.006918 },\n            { nominal: 215, mass: 215.006475 },\n            { nominal: 216, mass: 216.008743 },\n            { nominal: 217, mass: 217.009344 },\n            { nominal: 218, mass: 218.011642 },\n            { nominal: 219, mass: 219.012421 },\n            { nominal: 220, mass: 220.0147549 },\n            { nominal: 221, mass: 221.015592 },\n            { nominal: 222, mass: 222.0178442 },\n            { nominal: 223, mass: 223.0191377 },\n            { nominal: 224, mass: 224.0217232 },\n            { nominal: 225, mass: 225.02323 },\n            { nominal: 226, mass: 226.0260984 },\n            { nominal: 227, mass: 227.0277523 },\n            { nominal: 228, mass: 228.0310215 },\n            { nominal: 229, mass: 229.032956 },\n            { nominal: 230, mass: 230.036327 },\n            { nominal: 231, mass: 231.038393 },\n            { nominal: 232, mass: 232.042034 },\n            { nominal: 233, mass: 233.044346 },\n            { nominal: 234, mass: 234.048139 },\n            { nominal: 235, mass: 235.05084 },\n            { nominal: 236, mass: 236.054988 },\n            { nominal: 237, mass: 237.05827 },\n        ],\n        symbol: 'Ac',\n        mass: null,\n        name: 'Actinium',\n    },\n    {\n        number: 90,\n        isotopes: [\n            { nominal: 208, mass: 208.0179 },\n            { nominal: 209, mass: 209.017753 },\n            { nominal: 210, mass: 210.015094 },\n            { nominal: 211, mass: 211.014929 },\n            { nominal: 212, mass: 212.012988 },\n            { nominal: 213, mass: 213.013009 },\n            { nominal: 214, mass: 214.0115 },\n            { nominal: 215, mass: 215.0117248 },\n            { nominal: 216, mass: 216.011056 },\n            { nominal: 217, mass: 217.013117 },\n            { nominal: 218, mass: 218.013276 },\n            { nominal: 219, mass: 219.015537 },\n            { nominal: 220, mass: 220.015748 },\n            { nominal: 221, mass: 221.018184 },\n            { nominal: 222, mass: 222.018469 },\n            { nominal: 223, mass: 223.0208119 },\n            { nominal: 224, mass: 224.021464 },\n            { nominal: 225, mass: 225.0239514 },\n            { nominal: 226, mass: 226.0249034 },\n            { nominal: 227, mass: 227.0277042 },\n            { nominal: 228, mass: 228.0287413 },\n            { nominal: 229, mass: 229.0317627 },\n            { nominal: 230, mass: 230.0331341 },\n            { nominal: 231, mass: 231.0363046 },\n            { nominal: 232, mass: 232.0380558, abundance: 1 },\n            { nominal: 233, mass: 233.0415823 },\n            { nominal: 234, mass: 234.0436014 },\n            { nominal: 235, mass: 235.047255 },\n            { nominal: 236, mass: 236.049657 },\n            { nominal: 237, mass: 237.053629 },\n            { nominal: 238, mass: 238.0565 },\n            { nominal: 239, mass: 239.06077 },\n        ],\n        symbol: 'Th',\n        mass: 232.0380558,\n        name: 'Thorium',\n        monoisotopicMass: 232.0380558,\n    },\n    {\n        number: 91,\n        isotopes: [\n            { nominal: 212, mass: 212.023203 },\n            { nominal: 213, mass: 213.021109 },\n            { nominal: 214, mass: 214.020918 },\n            { nominal: 215, mass: 215.019183 },\n            { nominal: 216, mass: 216.019109 },\n            { nominal: 217, mass: 217.018325 },\n            { nominal: 218, mass: 218.020059 },\n            { nominal: 219, mass: 219.019904 },\n            { nominal: 220, mass: 220.021705 },\n            { nominal: 221, mass: 221.021875 },\n            { nominal: 222, mass: 222.023784 },\n            { nominal: 223, mass: 223.023963 },\n            { nominal: 224, mass: 224.0256176 },\n            { nominal: 225, mass: 225.026131 },\n            { nominal: 226, mass: 226.027948 },\n            { nominal: 227, mass: 227.0288054 },\n            { nominal: 228, mass: 228.0310517 },\n            { nominal: 229, mass: 229.0320972 },\n            { nominal: 230, mass: 230.034541 },\n            { nominal: 231, mass: 231.0358842, abundance: 1 },\n            { nominal: 232, mass: 232.0385917 },\n            { nominal: 233, mass: 233.0402472 },\n            { nominal: 234, mass: 234.0433072 },\n            { nominal: 235, mass: 235.045399 },\n            { nominal: 236, mass: 236.048668 },\n            { nominal: 237, mass: 237.051023 },\n            { nominal: 238, mass: 238.054637 },\n            { nominal: 239, mass: 239.05726 },\n            { nominal: 240, mass: 240.06098 },\n            { nominal: 241, mass: 241.06408 },\n        ],\n        symbol: 'Pa',\n        mass: 231.0358842,\n        name: 'Protactinium',\n        monoisotopicMass: 231.0358842,\n    },\n    {\n        number: 92,\n        isotopes: [\n            { nominal: 217, mass: 217.02466 },\n            { nominal: 218, mass: 218.023523 },\n            { nominal: 219, mass: 219.024999 },\n            { nominal: 220, mass: 220.02462 },\n            { nominal: 221, mass: 221.02628 },\n            { nominal: 222, mass: 222.026 },\n            { nominal: 223, mass: 223.027739 },\n            { nominal: 224, mass: 224.027605 },\n            { nominal: 225, mass: 225.029391 },\n            { nominal: 226, mass: 226.029339 },\n            { nominal: 227, mass: 227.031157 },\n            { nominal: 228, mass: 228.031371 },\n            { nominal: 229, mass: 229.0335063 },\n            { nominal: 230, mass: 230.0339401 },\n            { nominal: 231, mass: 231.0362939 },\n            { nominal: 232, mass: 232.0371563 },\n            { nominal: 233, mass: 233.0396355 },\n            { nominal: 234, mass: 234.0409523, abundance: 0.000054 },\n            { nominal: 235, mass: 235.0439301, abundance: 0.007204 },\n            { nominal: 236, mass: 236.0455682 },\n            { nominal: 237, mass: 237.0487304 },\n            { nominal: 238, mass: 238.0507884, abundance: 0.992742 },\n            { nominal: 239, mass: 239.0542935 },\n            { nominal: 240, mass: 240.0565934 },\n            { nominal: 241, mass: 241.06033 },\n            { nominal: 242, mass: 242.06293 },\n            { nominal: 243, mass: 243.06699 },\n        ],\n        symbol: 'U',\n        mass: 238.0289104616574,\n        name: 'Uranium',\n        monoisotopicMass: 238.0507884,\n    },\n    {\n        number: 93,\n        isotopes: [\n            { nominal: 219, mass: 219.03143 },\n            { nominal: 220, mass: 220.03254 },\n            { nominal: 221, mass: 221.03204 },\n            { nominal: 222, mass: 222.0333 },\n            { nominal: 223, mass: 223.03285 },\n            { nominal: 224, mass: 224.03422 },\n            { nominal: 225, mass: 225.033911 },\n            { nominal: 226, mass: 226.035188 },\n            { nominal: 227, mass: 227.034957 },\n            { nominal: 228, mass: 228.036067 },\n            { nominal: 229, mass: 229.036264 },\n            { nominal: 230, mass: 230.037828 },\n            { nominal: 231, mass: 231.038245 },\n            { nominal: 232, mass: 232.04011 },\n            { nominal: 233, mass: 233.040741 },\n            { nominal: 234, mass: 234.0428953 },\n            { nominal: 235, mass: 235.0440635 },\n            { nominal: 236, mass: 236.04657 },\n            { nominal: 237, mass: 237.0481736 },\n            { nominal: 238, mass: 238.0509466 },\n            { nominal: 239, mass: 239.0529392 },\n            { nominal: 240, mass: 240.056165 },\n            { nominal: 241, mass: 241.058253 },\n            { nominal: 242, mass: 242.06164 },\n            { nominal: 243, mass: 243.06428 },\n            { nominal: 244, mass: 244.06785 },\n            { nominal: 245, mass: 245.0708 },\n        ],\n        symbol: 'Np',\n        mass: null,\n        name: 'Neptunium',\n    },\n    {\n        number: 94,\n        isotopes: [\n            { nominal: 228, mass: 228.038732 },\n            { nominal: 229, mass: 229.040144 },\n            { nominal: 230, mass: 230.03965 },\n            { nominal: 231, mass: 231.041102 },\n            { nominal: 232, mass: 232.041185 },\n            { nominal: 233, mass: 233.042998 },\n            { nominal: 234, mass: 234.0433174 },\n            { nominal: 235, mass: 235.045286 },\n            { nominal: 236, mass: 236.0460581 },\n            { nominal: 237, mass: 237.0484098 },\n            { nominal: 238, mass: 238.0495601 },\n            { nominal: 239, mass: 239.0521636 },\n            { nominal: 240, mass: 240.0538138 },\n            { nominal: 241, mass: 241.0568517 },\n            { nominal: 242, mass: 242.0587428 },\n            { nominal: 243, mass: 243.0620036 },\n            { nominal: 244, mass: 244.0642053 },\n            { nominal: 245, mass: 245.067826 },\n            { nominal: 246, mass: 246.070205 },\n            { nominal: 247, mass: 247.07419 },\n        ],\n        symbol: 'Pu',\n        mass: null,\n        name: 'Plutonium',\n    },\n    {\n        number: 95,\n        isotopes: [\n            { nominal: 230, mass: 230.04609 },\n            { nominal: 231, mass: 231.04556 },\n            { nominal: 232, mass: 232.04645 },\n            { nominal: 233, mass: 233.04644 },\n            { nominal: 234, mass: 234.04773 },\n            { nominal: 235, mass: 235.047908 },\n            { nominal: 236, mass: 236.04943 },\n            { nominal: 237, mass: 237.049996 },\n            { nominal: 238, mass: 238.051985 },\n            { nominal: 239, mass: 239.0530247 },\n            { nominal: 240, mass: 240.0553 },\n            { nominal: 241, mass: 241.0568293 },\n            { nominal: 242, mass: 242.0595494 },\n            { nominal: 243, mass: 243.0613813 },\n            { nominal: 244, mass: 244.0642851 },\n            { nominal: 245, mass: 245.0664548 },\n            { nominal: 246, mass: 246.069775 },\n            { nominal: 247, mass: 247.07209 },\n            { nominal: 248, mass: 248.07575 },\n            { nominal: 249, mass: 249.07848 },\n        ],\n        symbol: 'Am',\n        name: 'Americium',\n        mass: null,\n    },\n    {\n        number: 96,\n        isotopes: [\n            { nominal: 232, mass: 232.04982 },\n            { nominal: 233, mass: 233.05077 },\n            { nominal: 234, mass: 234.05016 },\n            { nominal: 235, mass: 235.05154 },\n            { nominal: 236, mass: 236.051374 },\n            { nominal: 237, mass: 237.052869 },\n            { nominal: 238, mass: 238.053081 },\n            { nominal: 239, mass: 239.05491 },\n            { nominal: 240, mass: 240.0555297 },\n            { nominal: 241, mass: 241.0576532 },\n            { nominal: 242, mass: 242.058836 },\n            { nominal: 243, mass: 243.0613893 },\n            { nominal: 244, mass: 244.0627528 },\n            { nominal: 245, mass: 245.0654915 },\n            { nominal: 246, mass: 246.0672238 },\n            { nominal: 247, mass: 247.0703541 },\n            { nominal: 248, mass: 248.0723499 },\n            { nominal: 249, mass: 249.0759548 },\n            { nominal: 250, mass: 250.078358 },\n            { nominal: 251, mass: 251.082286 },\n            { nominal: 252, mass: 252.08487 },\n        ],\n        symbol: 'Cm',\n        name: 'Curium',\n        mass: null,\n    },\n    {\n        number: 97,\n        isotopes: [\n            { nominal: 234, mass: 234.05727 },\n            { nominal: 235, mass: 235.05658 },\n            { nominal: 236, mass: 236.05748 },\n            { nominal: 237, mass: 237.0571 },\n            { nominal: 238, mass: 238.0582 },\n            { nominal: 239, mass: 239.05824 },\n            { nominal: 240, mass: 240.05976 },\n            { nominal: 241, mass: 241.06016 },\n            { nominal: 242, mass: 242.06198 },\n            { nominal: 243, mass: 243.0630078 },\n            { nominal: 244, mass: 244.065181 },\n            { nominal: 245, mass: 245.0663618 },\n            { nominal: 246, mass: 246.068673 },\n            { nominal: 247, mass: 247.0703073 },\n            { nominal: 248, mass: 248.073088 },\n            { nominal: 249, mass: 249.0749877 },\n            { nominal: 250, mass: 250.0783167 },\n            { nominal: 251, mass: 251.080762 },\n            { nominal: 252, mass: 252.08431 },\n            { nominal: 253, mass: 253.08688 },\n            { nominal: 254, mass: 254.0906 },\n        ],\n        symbol: 'Bk',\n        name: 'Berkelium',\n        mass: null,\n    },\n    {\n        number: 98,\n        isotopes: [\n            { nominal: 237, mass: 237.062198 },\n            { nominal: 238, mass: 238.06149 },\n            { nominal: 239, mass: 239.06253 },\n            { nominal: 240, mass: 240.062256 },\n            { nominal: 241, mass: 241.06369 },\n            { nominal: 242, mass: 242.063754 },\n            { nominal: 243, mass: 243.06548 },\n            { nominal: 244, mass: 244.0660008 },\n            { nominal: 245, mass: 245.0680487 },\n            { nominal: 246, mass: 246.0688055 },\n            { nominal: 247, mass: 247.070965 },\n            { nominal: 248, mass: 248.0721851 },\n            { nominal: 249, mass: 249.0748539 },\n            { nominal: 250, mass: 250.0764062 },\n            { nominal: 251, mass: 251.0795886 },\n            { nominal: 252, mass: 252.0816272 },\n            { nominal: 253, mass: 253.0851345 },\n            { nominal: 254, mass: 254.087324 },\n            { nominal: 255, mass: 255.09105 },\n            { nominal: 256, mass: 256.09344 },\n        ],\n        symbol: 'Cf',\n        name: 'Californium',\n        mass: null,\n    },\n    {\n        number: 99,\n        isotopes: [\n            { nominal: 239, mass: 239.06823 },\n            { nominal: 240, mass: 240.06892 },\n            { nominal: 241, mass: 241.06856 },\n            { nominal: 242, mass: 242.06957 },\n            { nominal: 243, mass: 243.06951 },\n            { nominal: 244, mass: 244.07088 },\n            { nominal: 245, mass: 245.07125 },\n            { nominal: 246, mass: 246.0729 },\n            { nominal: 247, mass: 247.073622 },\n            { nominal: 248, mass: 248.075471 },\n            { nominal: 249, mass: 249.076411 },\n            { nominal: 250, mass: 250.07861 },\n            { nominal: 251, mass: 251.0799936 },\n            { nominal: 252, mass: 252.08298 },\n            { nominal: 253, mass: 253.0848257 },\n            { nominal: 254, mass: 254.0880222 },\n            { nominal: 255, mass: 255.090275 },\n            { nominal: 256, mass: 256.0936 },\n            { nominal: 257, mass: 257.09598 },\n            { nominal: 258, mass: 258.09952 },\n        ],\n        symbol: 'Es',\n        name: 'Einsteinium',\n        mass: null,\n    },\n    {\n        number: 100,\n        isotopes: [\n            { nominal: 241, mass: 241.07421 },\n            { nominal: 242, mass: 242.07343 },\n            { nominal: 243, mass: 243.07446 },\n            { nominal: 244, mass: 244.07404 },\n            { nominal: 245, mass: 245.07535 },\n            { nominal: 246, mass: 246.07535 },\n            { nominal: 247, mass: 247.07694 },\n            { nominal: 248, mass: 248.0771865 },\n            { nominal: 249, mass: 249.0789275 },\n            { nominal: 250, mass: 250.079521 },\n            { nominal: 251, mass: 251.08154 },\n            { nominal: 252, mass: 252.0824671 },\n            { nominal: 253, mass: 253.0851846 },\n            { nominal: 254, mass: 254.0868544 },\n            { nominal: 255, mass: 255.089964 },\n            { nominal: 256, mass: 256.0917745 },\n            { nominal: 257, mass: 257.0951061 },\n            { nominal: 258, mass: 258.09708 },\n            { nominal: 259, mass: 259.1006 },\n            { nominal: 260, mass: 260.10281 },\n        ],\n        symbol: 'Fm',\n        name: 'Fermium',\n        mass: null,\n    },\n    {\n        number: 101,\n        isotopes: [\n            { nominal: 245, mass: 245.08081 },\n            { nominal: 246, mass: 246.08171 },\n            { nominal: 247, mass: 247.08152 },\n            { nominal: 248, mass: 248.08282 },\n            { nominal: 249, mass: 249.08291 },\n            { nominal: 250, mass: 250.08441 },\n            { nominal: 251, mass: 251.084774 },\n            { nominal: 252, mass: 252.08643 },\n            { nominal: 253, mass: 253.087144 },\n            { nominal: 254, mass: 254.08959 },\n            { nominal: 255, mass: 255.0910841 },\n            { nominal: 256, mass: 256.09389 },\n            { nominal: 257, mass: 257.0955424 },\n            { nominal: 258, mass: 258.0984315 },\n            { nominal: 259, mass: 259.10051 },\n            { nominal: 260, mass: 260.10365 },\n            { nominal: 261, mass: 261.10583 },\n            { nominal: 262, mass: 262.1091 },\n        ],\n        symbol: 'Md',\n        name: 'Mendelevium',\n        mass: null,\n    },\n    {\n        number: 102,\n        isotopes: [\n            { nominal: 248, mass: 248.08655 },\n            { nominal: 249, mass: 249.0878 },\n            { nominal: 250, mass: 250.08756 },\n            { nominal: 251, mass: 251.08894 },\n            { nominal: 252, mass: 252.088967 },\n            { nominal: 253, mass: 253.0905641 },\n            { nominal: 254, mass: 254.090956 },\n            { nominal: 255, mass: 255.093191 },\n            { nominal: 256, mass: 256.0942829 },\n            { nominal: 257, mass: 257.0968878 },\n            { nominal: 258, mass: 258.09821 },\n            { nominal: 259, mass: 259.10103 },\n            { nominal: 260, mass: 260.10264 },\n            { nominal: 261, mass: 261.1057 },\n            { nominal: 262, mass: 262.10746 },\n            { nominal: 263, mass: 263.11071 },\n            { nominal: 264, mass: 264.11273 },\n        ],\n        symbol: 'No',\n        name: 'Nobelium',\n        mass: null,\n    },\n    {\n        number: 103,\n        isotopes: [\n            { nominal: 251, mass: 251.09418 },\n            { nominal: 252, mass: 252.09526 },\n            { nominal: 253, mass: 253.09509 },\n            { nominal: 254, mass: 254.09648 },\n            { nominal: 255, mass: 255.096562 },\n            { nominal: 256, mass: 256.098494 },\n            { nominal: 257, mass: 257.099418 },\n            { nominal: 258, mass: 258.10176 },\n            { nominal: 259, mass: 259.102902 },\n            { nominal: 260, mass: 260.1055 },\n            { nominal: 261, mass: 261.10688 },\n            { nominal: 262, mass: 262.10961 },\n            { nominal: 263, mass: 263.11136 },\n            { nominal: 264, mass: 264.1142 },\n            { nominal: 265, mass: 265.11619 },\n            { nominal: 266, mass: 266.11983 },\n        ],\n        symbol: 'Lr',\n        name: 'Lawrencium',\n        mass: null,\n    },\n    {\n        number: 104,\n        isotopes: [\n            { nominal: 253, mass: 253.10044 },\n            { nominal: 254, mass: 254.10005 },\n            { nominal: 255, mass: 255.10127 },\n            { nominal: 256, mass: 256.101152 },\n            { nominal: 257, mass: 257.102918 },\n            { nominal: 258, mass: 258.103428 },\n            { nominal: 259, mass: 259.105596 },\n            { nominal: 260, mass: 260.10644 },\n            { nominal: 261, mass: 261.108773 },\n            { nominal: 262, mass: 262.10992 },\n            { nominal: 263, mass: 263.11249 },\n            { nominal: 264, mass: 264.11388 },\n            { nominal: 265, mass: 265.11668 },\n            { nominal: 266, mass: 266.11817 },\n            { nominal: 267, mass: 267.12179 },\n            { nominal: 268, mass: 268.12397 },\n        ],\n        symbol: 'Rf',\n        name: 'Rutherfordium',\n        mass: null,\n    },\n    {\n        number: 105,\n        isotopes: [\n            { nominal: 255, mass: 255.10707 },\n            { nominal: 256, mass: 256.10789 },\n            { nominal: 257, mass: 257.10758 },\n            { nominal: 258, mass: 258.10928 },\n            { nominal: 259, mass: 259.109492 },\n            { nominal: 260, mass: 260.1113 },\n            { nominal: 261, mass: 261.11192 },\n            { nominal: 262, mass: 262.11407 },\n            { nominal: 263, mass: 263.11499 },\n            { nominal: 264, mass: 264.11741 },\n            { nominal: 265, mass: 265.11861 },\n            { nominal: 266, mass: 266.12103 },\n            { nominal: 267, mass: 267.12247 },\n            { nominal: 268, mass: 268.12567 },\n            { nominal: 269, mass: 269.12791 },\n            { nominal: 270, mass: 270.13136 },\n        ],\n        symbol: 'Db',\n        name: 'Dubnium',\n        mass: null,\n    },\n    {\n        number: 106,\n        isotopes: [\n            { nominal: 258, mass: 258.11298 },\n            { nominal: 259, mass: 259.1144 },\n            { nominal: 260, mass: 260.114384 },\n            { nominal: 261, mass: 261.115949 },\n            { nominal: 262, mass: 262.116337 },\n            { nominal: 263, mass: 263.11829 },\n            { nominal: 264, mass: 264.11893 },\n            { nominal: 265, mass: 265.12109 },\n            { nominal: 266, mass: 266.12198 },\n            { nominal: 267, mass: 267.12436 },\n            { nominal: 268, mass: 268.12539 },\n            { nominal: 269, mass: 269.12863 },\n            { nominal: 270, mass: 270.13043 },\n            { nominal: 271, mass: 271.13393 },\n            { nominal: 272, mass: 272.13589 },\n            { nominal: 273, mass: 273.13958 },\n        ],\n        symbol: 'Sg',\n        name: 'Seaborgium',\n        mass: null,\n    },\n    {\n        number: 107,\n        isotopes: [\n            { nominal: 260, mass: 260.12166 },\n            { nominal: 261, mass: 261.12145 },\n            { nominal: 262, mass: 262.12297 },\n            { nominal: 263, mass: 263.12292 },\n            { nominal: 264, mass: 264.12459 },\n            { nominal: 265, mass: 265.12491 },\n            { nominal: 266, mass: 266.12679 },\n            { nominal: 267, mass: 267.1275 },\n            { nominal: 268, mass: 268.12969 },\n            { nominal: 269, mass: 269.13042 },\n            { nominal: 270, mass: 270.13336 },\n            { nominal: 271, mass: 271.13526 },\n            { nominal: 272, mass: 272.13826 },\n            { nominal: 273, mass: 273.14024 },\n            { nominal: 274, mass: 274.14355 },\n            { nominal: 275, mass: 275.14567 },\n        ],\n        symbol: 'Bh',\n        name: 'Bohrium',\n        mass: null,\n    },\n    {\n        number: 108,\n        isotopes: [\n            { nominal: 263, mass: 263.12852 },\n            { nominal: 264, mass: 264.128357 },\n            { nominal: 265, mass: 265.129793 },\n            { nominal: 266, mass: 266.130046 },\n            { nominal: 267, mass: 267.13167 },\n            { nominal: 268, mass: 268.13186 },\n            { nominal: 269, mass: 269.13375 },\n            { nominal: 270, mass: 270.13429 },\n            { nominal: 271, mass: 271.13717 },\n            { nominal: 272, mass: 272.1385 },\n            { nominal: 273, mass: 273.14168 },\n            { nominal: 274, mass: 274.1433 },\n            { nominal: 275, mass: 275.14667 },\n            { nominal: 276, mass: 276.14846 },\n            { nominal: 277, mass: 277.1519 },\n        ],\n        symbol: 'Hs',\n        name: 'Hassium',\n        mass: null,\n    },\n    {\n        number: 109,\n        isotopes: [\n            { nominal: 265, mass: 265.136 },\n            { nominal: 266, mass: 266.13737 },\n            { nominal: 267, mass: 267.13719 },\n            { nominal: 268, mass: 268.13865 },\n            { nominal: 269, mass: 269.13882 },\n            { nominal: 270, mass: 270.14033 },\n            { nominal: 271, mass: 271.14074 },\n            { nominal: 272, mass: 272.14341 },\n            { nominal: 273, mass: 273.1444 },\n            { nominal: 274, mass: 274.14724 },\n            { nominal: 275, mass: 275.14882 },\n            { nominal: 276, mass: 276.15159 },\n            { nominal: 277, mass: 277.15327 },\n            { nominal: 278, mass: 278.15631 },\n            { nominal: 279, mass: 279.15808 },\n        ],\n        symbol: 'Mt',\n        name: 'Meitnerium',\n        mass: null,\n    },\n    {\n        number: 110,\n        isotopes: [\n            { nominal: 267, mass: 267.14377 },\n            { nominal: 268, mass: 268.14348 },\n            { nominal: 269, mass: 269.144752 },\n            { nominal: 270, mass: 270.144584 },\n            { nominal: 271, mass: 271.14595 },\n            { nominal: 272, mass: 272.14602 },\n            { nominal: 273, mass: 273.14856 },\n            { nominal: 274, mass: 274.14941 },\n            { nominal: 275, mass: 275.15203 },\n            { nominal: 276, mass: 276.15303 },\n            { nominal: 277, mass: 277.15591 },\n            { nominal: 278, mass: 278.15704 },\n            { nominal: 279, mass: 279.1601 },\n            { nominal: 280, mass: 280.16131 },\n            { nominal: 281, mass: 281.16451 },\n        ],\n        symbol: 'Ds',\n        name: 'Darmstadtium',\n        mass: null,\n    },\n    {\n        number: 111,\n        isotopes: [\n            { nominal: 272, mass: 272.15327 },\n            { nominal: 273, mass: 273.15313 },\n            { nominal: 274, mass: 274.15525 },\n            { nominal: 275, mass: 275.15594 },\n            { nominal: 276, mass: 276.15833 },\n            { nominal: 277, mass: 277.15907 },\n            { nominal: 278, mass: 278.16149 },\n            { nominal: 279, mass: 279.16272 },\n            { nominal: 280, mass: 280.16514 },\n            { nominal: 281, mass: 281.16636 },\n            { nominal: 282, mass: 282.16912 },\n            { nominal: 283, mass: 283.17054 },\n        ],\n        symbol: 'Rg',\n        name: 'Roentgenium',\n        mass: null,\n    },\n    {\n        number: 112,\n        isotopes: [\n            { nominal: 276, mass: 276.16141 },\n            { nominal: 277, mass: 277.16364 },\n            { nominal: 278, mass: 278.16416 },\n            { nominal: 279, mass: 279.16654 },\n            { nominal: 280, mass: 280.16715 },\n            { nominal: 281, mass: 281.16975 },\n            { nominal: 282, mass: 282.1705 },\n            { nominal: 283, mass: 283.17327 },\n            { nominal: 284, mass: 284.17416 },\n            { nominal: 285, mass: 285.17712 },\n        ],\n        symbol: 'Cn',\n        name: 'Copernicium',\n        mass: null,\n    },\n    {\n        number: 113,\n        isotopes: [\n            { nominal: 278, mass: 278.17058 },\n            { nominal: 279, mass: 279.17095 },\n            { nominal: 280, mass: 280.17293 },\n            { nominal: 281, mass: 281.17348 },\n            { nominal: 282, mass: 282.17567 },\n            { nominal: 283, mass: 283.17657 },\n            { nominal: 284, mass: 284.17873 },\n            { nominal: 285, mass: 285.17973 },\n            { nominal: 286, mass: 286.18221 },\n            { nominal: 287, mass: 287.18339 },\n        ],\n        symbol: 'Nh',\n        name: 'Nihonium',\n        mass: null,\n    },\n    {\n        number: 114,\n        isotopes: [\n            { nominal: 285, mass: 285.18364 },\n            { nominal: 286, mass: 286.18423 },\n            { nominal: 287, mass: 287.18678 },\n            { nominal: 288, mass: 288.18757 },\n            { nominal: 289, mass: 289.19042 },\n        ],\n        symbol: 'Fl',\n        name: 'Flerovium',\n        mass: null,\n    },\n    {\n        number: 115,\n        isotopes: [\n            { nominal: 287, mass: 287.1907 },\n            { nominal: 288, mass: 288.19274 },\n            { nominal: 289, mass: 289.19363 },\n            { nominal: 290, mass: 290.19598 },\n            { nominal: 291, mass: 291.19707 },\n        ],\n        symbol: 'Mc',\n        name: 'Moscovium',\n        mass: null,\n    },\n    {\n        number: 116,\n        isotopes: [\n            { nominal: 289, mass: 289.19816 },\n            { nominal: 290, mass: 290.19864 },\n            { nominal: 291, mass: 291.20108 },\n            { nominal: 292, mass: 292.20174 },\n            { nominal: 293, mass: 293.20449 },\n        ],\n        symbol: 'Lv',\n        name: 'Livermorium',\n        mass: null,\n    },\n    {\n        number: 117,\n        isotopes: [\n            { nominal: 291, mass: 291.20553 },\n            { nominal: 292, mass: 292.20746 },\n            { nominal: 293, mass: 293.20824 },\n            { nominal: 294, mass: 294.21046 },\n        ],\n        symbol: 'Ts',\n        name: 'Teennessine',\n        mass: null,\n    },\n    {\n        number: 118,\n        isotopes: [\n            { nominal: 293, mass: 293.21356 },\n            { nominal: 294, mass: 294.21392 },\n            { nominal: 295, mass: 295.21624 },\n        ],\n        symbol: 'Og',\n        name: 'Oganesson',\n        mass: null,\n    },\n];\n//# sourceMappingURL=elementsAndIsotopes.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.elements = void 0;\nconst elementsAndIsotopes_js_1 = require(\"./elementsAndIsotopes.js\");\nexports.elements = elementsAndIsotopes_js_1.elementsAndIsotopes.map((element) => ({\n    number: element.number,\n    symbol: element.symbol,\n    mass: element.mass,\n    name: element.name,\n    monoisotopicMass: element.monoisotopicMass,\n}));\n//# sourceMappingURL=elements.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.elementsAndIsotopesObject = void 0;\nconst elementsAndIsotopes_js_1 = require(\"./elementsAndIsotopes.js\");\nexports.elementsAndIsotopesObject = {};\nfor (const element of elementsAndIsotopes_js_1.elementsAndIsotopes) {\n    exports.elementsAndIsotopesObject[element.symbol] = element;\n}\n//# sourceMappingURL=elementsAndIsotopesObject.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.elementsAndStableIsotopes = void 0;\nconst elementsAndIsotopes_js_1 = require(\"./elementsAndIsotopes.js\");\nexports.elementsAndStableIsotopes = structuredClone(elementsAndIsotopes_js_1.elementsAndIsotopes);\nfor (const element of exports.elementsAndStableIsotopes) {\n    element.isotopes = element.isotopes.filter((i) => {\n        return typeof i.abundance === 'number' && i.abundance > 0;\n    });\n}\n//# sourceMappingURL=elementsAndStableIsotopes.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.elementsAndStableIsotopesObject = void 0;\nconst elementsAndStableIsotopes_js_1 = require(\"./elementsAndStableIsotopes.js\");\nexports.elementsAndStableIsotopesObject = {};\nfor (const element of elementsAndStableIsotopes_js_1.elementsAndStableIsotopes) {\n    exports.elementsAndStableIsotopesObject[element.symbol] = element;\n}\n//# sourceMappingURL=elementsAndStableIsotopesObject.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.elementsObject = void 0;\nconst elements_js_1 = require(\"./elements.js\");\nexports.elementsObject = {};\nfor (const element of elements_js_1.elements) {\n    exports.elementsObject[element.symbol] = element;\n}\n//# sourceMappingURL=elementsObject.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isotopesObject = void 0;\nconst elementsAndIsotopesObject_js_1 = require(\"./elementsAndIsotopesObject.js\");\nexports.isotopesObject = {};\nfor (const [symbol, element] of Object.entries(elementsAndIsotopesObject_js_1.elementsAndIsotopesObject)) {\n    if (!element)\n        continue;\n    for (const isotope of element.isotopes) {\n        exports.isotopesObject[`${isotope.nominal}${symbol}`] = {\n            abundance: isotope.abundance,\n            mass: isotope.mass,\n        };\n    }\n}\n//# sourceMappingURL=isotopesObject.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.stableIsotopesObject = void 0;\nconst elementsAndIsotopes_js_1 = require(\"./elementsAndIsotopes.js\");\nexports.stableIsotopesObject = {};\nfor (const element of elementsAndIsotopes_js_1.elementsAndIsotopes) {\n    let abundance = 0;\n    let mostAbundant = 0;\n    for (const isotope of element.isotopes) {\n        if (typeof isotope.abundance === 'number' &&\n            isotope.abundance > abundance) {\n            abundance = isotope.abundance;\n            mostAbundant = isotope.nominal;\n        }\n    }\n    for (const isotope of element.isotopes) {\n        if (isotope.abundance === 0)\n            continue;\n        const entry = {\n            name: element.name,\n            mass: isotope.mass,\n            symbol: element.symbol,\n            mostAbundant: false,\n        };\n        if (isotope.nominal === mostAbundant) {\n            entry.mostAbundant = true;\n        }\n        exports.stableIsotopesObject[`${isotope.nominal}${element.symbol}`] = entry;\n    }\n}\n//# sourceMappingURL=stableIsotopesObject.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.unsaturationsObject = void 0;\nexports.unsaturationsObject = {\n    O: 0,\n    N: 1,\n    H: -1,\n    Na: -1,\n    K: -1,\n    Li: -1,\n    Ca: -2,\n    C: 2,\n    F: -1,\n    Si: 2,\n    Cl: -1,\n    Br: -1,\n    I: -1,\n    S: 0,\n    P: 1,\n};\n//# sourceMappingURL=unsaturationsObject.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.groupsObject = void 0;\nconst groups_1 = require(\"./groups\");\nexports.groupsObject = {};\ngroups_1.groups.forEach((e) => {\n    if (exports.groupsObject[e.symbol]) {\n        // eslint-disable-next-line no-console\n        console.log(`The symbol ${e.symbol} is used more than once`);\n    }\n    exports.groupsObject[e.symbol] = e;\n});\n//# sourceMappingURL=groupsObject.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.groupsToSequence = groupsToSequence;\nconst groupsObject_js_1 = require(\"./groupsObject.js\");\n/**\n * Recreate a one letter sequence\n * @param {object} mf\n */\nfunction groupsToSequence(mf) {\n    mf = mf.replaceAll(/\\([^(]*\\)/g, '');\n    let parts = mf.split(/(?=[ A-Z])/);\n    let usefulParts = [];\n    for (let part of parts) {\n        if (part === ' ') {\n            usefulParts.push(' ');\n            continue;\n        }\n        if (!part.match(/^[A-Z][a-z]{2,6}/))\n            continue;\n        if (groupsObject_js_1.groupsObject[part] && groupsObject_js_1.groupsObject[part].oneLetter) {\n            usefulParts.push(groupsObject_js_1.groupsObject[part].oneLetter);\n        }\n        else {\n            usefulParts.push('?');\n        }\n    }\n    return usefulParts.join('').replaceAll(/ +/g, ' ').trim();\n}\n//# sourceMappingURL=groupsToSequence.js.map","\"use strict\";\n/**\n * Define static variable corresponding to the various Kinds of a molecular formula part.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Kind = void 0;\nexports.Kind = {\n    BEGIN: 'begin',\n    ATOM: 'atom',\n    MULTIPLIER_RANGE: 'multiplierRange',\n    ISOTOPE: 'isotope',\n    ISOTOPE_RATIO: 'isotopeRatio',\n    CHARGE: 'charge',\n    SALT: 'salt',\n    OPENING_PARENTHESIS: 'openingParenthesis',\n    CLOSING_PARENTHESIS: 'closingParenthesis',\n    PRE_MULTIPLIER: 'preMultiplier',\n    MULTIPLIER: 'multiplier',\n    TEXT: 'text',\n    ANCHOR: 'anchor',\n    COMMENT: 'comment',\n};\n//# sourceMappingURL=Kind.js.map","\"use strict\";\n/**\n * Parse a string to extract the charge.\n * The charge may be in the form --, +++, +3, -2, 4+, 2-\n * @param {*} charge\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parseCharge = parseCharge;\nfunction parseCharge(charge) {\n    charge = charge.replaceAll(/[()]/g, '');\n    let chargeNumber = 0;\n    if (charge.match(/^[+-]+$/)) {\n        for (let i = 0; i < charge.length; i++) {\n            if (charge.charAt(i) === '+')\n                chargeNumber++;\n            else\n                chargeNumber--;\n        }\n    }\n    else if (charge.match(/^\\d+[+-]$/)) {\n        chargeNumber = Number(\n        // eslint-disable-next-line unicorn/prefer-at\n        charge.charAt(charge.length - 1) + charge.slice(0, -1));\n    }\n    else {\n        chargeNumber = Number(charge);\n    }\n    return chargeNumber;\n}\n//# sourceMappingURL=parseCharge.js.map","\"use strict\";\n/* eslint-disable unicorn/prefer-code-point */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parse = parse;\nconst atom_sorter_1 = require(\"atom-sorter\");\nconst chemical_elements_1 = require(\"chemical-elements\");\nconst chemical_groups_1 = require(\"chemical-groups\");\nconst Kind_1 = require(\"./Kind\");\nconst parseCharge_1 = require(\"./util/parseCharge\");\n/**\n * Parse a mf to an array of kind / value\n * @param {String} mf\n * @param {Object} [options={}]\n * @param {Boolean} [options.expandGroups=false] - if true, expand groups\n * @param {Boolean} [options.simplify=false] - if true, remove all the parenthesis and join identical atoms / groups\n */\nfunction parse(mf, options = {}) {\n    return new MFParser().parse(mf, options);\n}\nclass MFParser {\n    parse(mf = '', options = {}) {\n        this.expandGroups = options?.expandGroups ?? false;\n        this.simplify = options?.simplify ?? false;\n        this.mf = mf;\n        this.i = 0;\n        this.result = [];\n        let lastKind = Kind_1.Kind.BEGIN;\n        while (this.i < mf.length) {\n            if (this.result.length > 0 && this.result.at(-1).kind !== Kind_1.Kind.TEXT) {\n                lastKind = this.result.at(-1).kind;\n            }\n            let char = mf.charAt(this.i);\n            let ascii = mf.charCodeAt(this.i);\n            let nextAscii = 0;\n            if (this.i + 1 < mf.length)\n                nextAscii = mf.charCodeAt(this.i + 1);\n            if ((ascii > 47 && ascii < 58) ||\n                (char === '-' && nextAscii > 47 && nextAscii < 58)) {\n                // a number\n                let value = this.getNumber(ascii);\n                if (lastKind === Kind_1.Kind.SALT ||\n                    lastKind === Kind_1.Kind.BEGIN ||\n                    lastKind === Kind_1.Kind.OPENING_PARENTHESIS) {\n                    if (value.to) {\n                        throw new MFError(this.mf, this.i, 'Premultiplier may not contain a -');\n                    }\n                    this.result.push({ kind: Kind_1.Kind.PRE_MULTIPLIER, value: value.from });\n                }\n                else if (lastKind === Kind_1.Kind.ANCHOR) {\n                    if (value.to) {\n                        throw new MFError(this.mf, this.i, 'Anchor ID may not contain -');\n                    }\n                    this.result.at(-1).value = value.from;\n                }\n                else if (value.to) {\n                    this.result.push({\n                        kind: Kind_1.Kind.MULTIPLIER_RANGE,\n                        value: {\n                            from: Math.min(value.from, value.to),\n                            to: Math.max(value.from, value.to),\n                        },\n                    });\n                }\n                else {\n                    this.result.push({ kind: Kind_1.Kind.MULTIPLIER, value: value.from });\n                }\n                continue;\n            }\n            else if (char === '.') {\n                // a point\n                this.result.push({ kind: Kind_1.Kind.SALT, value: char });\n                // it is not in a number otherwise it would have been taken before\n                // it must be in a salt\n            }\n            else if (char === '#') {\n                // an anchor\n                this.result.push({ kind: Kind_1.Kind.ANCHOR, value: 0 });\n                // it is not in a number otherwise it would have been taken before\n                // it must be in a salt\n            }\n            else if (ascii > 64 && ascii < 91) {\n                // an uppercase = new atom\n                this.result.push(...this.getAtom(ascii));\n                continue;\n            }\n            else if (ascii > 96 && ascii < 123) {\n                // a lowercase\n                throw new MFError(this.mf, this.i, 'found a lowercase not following an uppercase');\n            }\n            else if (char === '(') {\n                let charge = this.getParenthesisCharge(ascii);\n                if (charge) {\n                    this.result.push({ kind: Kind_1.Kind.CHARGE, value: charge });\n                }\n                else {\n                    this.result.push({ kind: Kind_1.Kind.OPENING_PARENTHESIS, value: '(' });\n                }\n            }\n            else if (char === ')') {\n                this.result.push({ kind: Kind_1.Kind.CLOSING_PARENTHESIS, value: ')' });\n            }\n            else if (char === '[') {\n                // defines an isotope\n                let isotope = this.getIsotope(ascii);\n                this.result.push({ kind: Kind_1.Kind.ISOTOPE, value: isotope });\n            }\n            else if (char === ']') {\n                throw new MFError(this.mf, this.i, 'should never meet an closing bracket not in isotopes');\n            }\n            else if (char === '{') {\n                // can define an exotic isotopic ratio or mixtures of groups\n                let isotopeRatio = this.getCurlyBracketIsotopeRatio(ascii);\n                if (lastKind === Kind_1.Kind.ATOM) {\n                    let lastResult = this.result.at(-1);\n                    lastResult.kind = Kind_1.Kind.ISOTOPE_RATIO;\n                    lastResult.value = {\n                        atom: lastResult.value,\n                        ratio: isotopeRatio,\n                    };\n                }\n                else {\n                    throw new MFError(this.mf, this.i, 'isotopic composition has to follow an atom');\n                }\n            }\n            else if (char === '}') {\n                throw new MFError(this.mf, this.i, 'found a unexpected closing curly bracket');\n            }\n            else if (char === '+') {\n                // charge not in parenthesis\n                let charge = this.getNonParenthesisCharge(ascii);\n                this.result.push({ kind: Kind_1.Kind.CHARGE, value: charge });\n            }\n            else if (char === '-') {\n                // charge not in parenthesis\n                let charge = this.getNonParenthesisCharge(ascii);\n                this.result.push({ kind: Kind_1.Kind.CHARGE, value: charge });\n            }\n            else if (char === '$') {\n                // it is a comment after\n                this.result.push({\n                    kind: Kind_1.Kind.COMMENT,\n                    value: this.mf.slice(this.i + 1),\n                });\n                break;\n            }\n            else {\n                this.result.push({ kind: Kind_1.Kind.TEXT, value: char });\n            }\n            this.i++;\n        }\n        this.checkParenthesis();\n        if (this.simplify) {\n            this.result = simplify(this.result);\n        }\n        return this.result;\n    }\n    checkParenthesis() {\n        let counter = 0;\n        for (let line of this.result) {\n            if (line.kind === Kind_1.Kind.OPENING_PARENTHESIS)\n                counter++;\n            if (line.kind === Kind_1.Kind.CLOSING_PARENTHESIS)\n                counter--;\n        }\n        if (counter !== 0) {\n            throw new MFError(this.mf, this.i, 'number of opening and closing parenthesis not equal');\n        }\n    }\n    getNumber(ascii) {\n        let number = '';\n        let previous;\n        do {\n            previous = ascii;\n            number += String.fromCharCode(ascii);\n            this.i++;\n            ascii = this.mf.charCodeAt(this.i);\n        } while ((ascii > 47 && ascii < 58) ||\n            ascii === 46 ||\n            ascii === 45 ||\n            ascii === 47); // number . - /\n        // we need to deal with the case there is a from / to\n        if (previous === 46)\n            this.i--;\n        let indexOfDash = number.indexOf('-', 1);\n        if (indexOfDash > -1) {\n            return {\n                from: parseNumberWithDivision(number.slice(0, indexOfDash)),\n                to: parseNumberWithDivision(number.slice(indexOfDash + 1)),\n            };\n        }\n        return { from: parseNumberWithDivision(number) };\n    }\n    getAtom(ascii) {\n        let atom = '';\n        do {\n            atom += String.fromCharCode(ascii);\n            this.i++;\n            ascii = this.mf.charCodeAt(this.i);\n        } while (ascii > 96 && ascii < 123);\n        if (chemical_elements_1.elementsObject[atom] || !this.expandGroups) {\n            return [\n                {\n                    kind: Kind_1.Kind.ATOM,\n                    value: atom,\n                },\n            ];\n        }\n        if (chemical_groups_1.groupsObject[atom]) {\n            const group = chemical_groups_1.groupsObject[atom].mf;\n            const expandedGroups = parse(group, {\n                expandGroups: this.expandGroups,\n            });\n            // need to surround with parenthesis\n            return [\n                { kind: Kind_1.Kind.OPENING_PARENTHESIS, value: '(' },\n                ...expandedGroups,\n                { kind: Kind_1.Kind.CLOSING_PARENTHESIS, value: ')' },\n            ];\n        }\n        throw new MFError(`Not able to expand group: ${this.mf}`);\n    }\n    getIsotope(ascii) {\n        // [13C]\n        let substring = '';\n        do {\n            substring += String.fromCharCode(ascii);\n            this.i++;\n            ascii = this.mf.charCodeAt(this.i);\n        } while (ascii !== 93 && this.i <= this.mf.length);\n        let atom = substring.replaceAll(/[^A-Za-z]/g, '');\n        let isotope = Number(substring.replaceAll(/\\D/g, ''));\n        return { atom, isotope };\n    }\n    getCurlyBracketIsotopeRatio(ascii) {\n        let substring = '';\n        let first = true;\n        do {\n            if (!first) {\n                substring += String.fromCharCode(ascii);\n            }\n            else {\n                first = false;\n            }\n            this.i++;\n            ascii = this.mf.charCodeAt(this.i);\n        } while (ascii !== 125 && this.i <= this.mf.length); // closing curly bracket\n        if (substring.match(/^[0-9.,]+$/)) {\n            return substring.split(',').map(Number);\n        }\n        throw new MFError(this.mf, this.i, 'Curly brackets should contain only number, dot and comma');\n    }\n    getParenthesisCharge(ascii) {\n        let substring = '';\n        let begin = this.i;\n        do {\n            substring += String.fromCharCode(ascii);\n            this.i++;\n            ascii = this.mf.charCodeAt(this.i);\n        } while (ascii !== 41 && this.i <= this.mf.length); // closing parenthesis\n        if (substring.match(/^\\([\\d+-]+$/)) {\n            return (0, parseCharge_1.parseCharge)(substring.slice(1));\n        }\n        else {\n            this.i = begin;\n            return undefined;\n        }\n    }\n    getNonParenthesisCharge(ascii) {\n        let substring = '';\n        do {\n            substring += String.fromCharCode(ascii);\n            this.i++;\n            ascii = this.mf.charCodeAt(this.i);\n        } while (ascii === 43 || ascii === 45 || (ascii > 47 && ascii < 58));\n        this.i--;\n        return (0, parseCharge_1.parseCharge)(substring);\n    }\n}\nclass MFError extends SyntaxError {\n    constructor(mf, i, message) {\n        let text = `${message}\\n\\n${mf}\\n${' '.repeat(i)}^`;\n        super(text);\n    }\n}\nfunction parseNumberWithDivision(string) {\n    if (string.includes('/')) {\n        let parts = string.split('/');\n        if (parts.length !== 2) {\n            throw new TypeError('Can not parse MF with number like: ', string);\n        }\n        return Number(parts[0]) / Number(parts[1]);\n    }\n    else {\n        return Number(string);\n    }\n}\n/**\n * Remove all the parenthesis and multipliers\n * Merge atoms and groups if present many times\n * We will also sort the atoms and groups\n * @param {*} parsed\n * @returns\n */\nfunction simplify(parsed) {\n    if (!parsed || parsed.length === 0)\n        return [];\n    const multipliers = [];\n    let currentMultiplier = { from: 1, to: 1 };\n    let newParsed = [];\n    for (let i = parsed.length - 1; i >= 0; i--) {\n        const item = parsed[i];\n        switch (item.kind) {\n            case 'atom':\n            case 'isotope':\n                {\n                    let realMultiplier = currentMultiplier;\n                    for (const multiplier of multipliers) {\n                        realMultiplier = {\n                            from: multiplier.from * realMultiplier.from,\n                            to: multiplier.to * realMultiplier.to,\n                        };\n                    }\n                    newParsed.push({\n                        kind: item.kind,\n                        value: item.value,\n                    }, {\n                        kind: 'multiplierRange',\n                        value: realMultiplier,\n                    });\n                    currentMultiplier = { from: 1, to: 1 };\n                }\n                break;\n            case 'multiplier':\n                currentMultiplier = { from: item.value, to: item.value };\n                break;\n            case 'multiplierRange':\n                currentMultiplier = item.value;\n                break;\n            case 'openingParenthesis':\n                multipliers.pop();\n                break;\n            case 'closingParenthesis':\n                multipliers.push(currentMultiplier);\n                currentMultiplier = { from: 1, to: 1 };\n                break;\n            case 'text':\n                break;\n            default:\n                throw new Error(`Unexpected kind --${item.kind}-- in removeParenthesis`);\n        }\n    }\n    // if we have many times the same atom / group, we can merge them\n    const distinctParsedObject = {};\n    for (let i = 0; i < newParsed.length; i = i + 2) {\n        const item = newParsed[i];\n        const multiplier = newParsed[i + 1];\n        const key = JSON.stringify(item.value);\n        if (!distinctParsedObject[key]) {\n            distinctParsedObject[key] = {\n                ...item,\n                multiplier: multiplier.value,\n            };\n        }\n        else {\n            distinctParsedObject[key].multiplier.from += multiplier.value.from;\n            distinctParsedObject[key].multiplier.to += multiplier.value.to;\n        }\n    }\n    const sorted = Object.values(distinctParsedObject).sort((a, b) => {\n        const atomA = a.kind === 'atom' ? a.value : a.value.atom;\n        const atomB = b.kind === 'atom' ? b.value : b.value.atom;\n        if (atomA === atomB) {\n            if (a.kind === 'isotope' && b.kind === 'isotope') {\n                return a.value.isotope - b.value.isotope;\n            }\n            if (a.kind === 'isotope' && b.kind !== 'isotope') {\n                return -1; // isotope comes before non-isotope\n            }\n            if (a.kind !== 'isotope' && b.kind === 'isotope') {\n                return 1; // non-isotope comes after isotope\n            }\n            return 0;\n        }\n        return (0, atom_sorter_1.atomSorter)(atomA, atomB);\n    });\n    const distinctParsed = [];\n    for (const item of sorted) {\n        if (item.multiplier.from === 0 && item.multiplier.to === 0) {\n            continue;\n        }\n        distinctParsed.push({\n            kind: item.kind,\n            value: item.value,\n        });\n        if (item.multiplier.from === 1 && item.multiplier.to === 1) {\n            continue; // no need to add a multiplier\n        }\n        if (item.multiplier.from === item.multiplier.to) {\n            distinctParsed.push({\n                kind: 'multiplier',\n                value: item.multiplier.from,\n            });\n        }\n        else {\n            distinctParsed.push({\n                kind: 'multiplierRange',\n                value: {\n                    from: item.multiplier.from,\n                    to: item.multiplier.to,\n                },\n            });\n        }\n    }\n    return distinctParsed;\n}\n//# sourceMappingURL=parse.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.subscript = exports.superscript = void 0;\nexports.superscript = {\n    0: '⁰',\n    1: '¹',\n    2: '²',\n    3: '³',\n    4: '⁴',\n    5: '⁵',\n    6: '⁶',\n    7: '⁷',\n    8: '⁸',\n    9: '⁹',\n    '+': '⁺',\n    '-': '⁻',\n    '(': '⁽',\n    ')': '⁾',\n    '{': '⁽',\n    '}': '⁾',\n    '.': '˙',\n    ',': '˒',\n};\nexports.subscript = {\n    0: '₀',\n    1: '₁',\n    2: '₂',\n    3: '₃',\n    4: '₄',\n    5: '₅',\n    6: '₆',\n    7: '₇',\n    8: '₈',\n    9: '₉',\n    '(': '₍',\n    ')': '₎',\n    '{': '₍',\n    '}': '₎',\n    '.': ' ',\n    ',': ' ',\n};\n//# sourceMappingURL=subSuperscript.js.map","\"use strict\";\n/**\n * Defines static variables corresponding to the various formatting possibilities\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Format = void 0;\nexports.Format = {\n    SUBSCRIPT: 'subscript',\n    SUPERSCRIPT: 'superscript',\n    SUPERIMPOSE: 'superimpose',\n    TEXT: 'text',\n};\n//# sourceMappingURL=Format.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.formatCharge = formatCharge;\nfunction formatCharge(charge) {\n    if (charge === 1)\n        return '+';\n    if (charge > 1)\n        return `+${charge}`;\n    if (charge < 0)\n        return String(charge);\n    return '';\n}\n//# sourceMappingURL=formatCharge.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.improveLinesForDisplay = improveLinesForDisplay;\nconst Kind_js_1 = require(\"../Kind.js\");\n/**\n * We try to remove useless lines that are not needed for the display and could be confusing\n * for the user\n * @param {object[]} lines\n */\nfunction improveLinesForDisplay(lines) {\n    lines = lines.slice(0);\n    // multipliers by one seems completely useless\n    lines = lines.filter((line) => !(line.kind === Kind_js_1.Kind.MULTIPLIER && line.value === 1));\n    // global surrouding useless parenthesis\n    // (C) -> C, (CH2) -> CH2, ((CH2)) -> CH2, ((CH2)2) -> (CH2)2, (C(CH2)2) -> C(CH2)2\n    // need to count the number of opening parenthesis\n    // and check the minimum number of parenthesis we find\n    let beginCounter = 0;\n    let endCounter = 0;\n    let minCounter = Number.MAX_SAFE_INTEGER;\n    let counter = 0;\n    let begin = true;\n    for (let line of lines) {\n        switch (line.kind) {\n            case Kind_js_1.Kind.OPENING_PARENTHESIS:\n                if (begin) {\n                    beginCounter++;\n                }\n                counter++;\n                break;\n            case Kind_js_1.Kind.CLOSING_PARENTHESIS:\n                endCounter++;\n                counter--;\n                break;\n            case Kind_js_1.Kind.CHARGE: // seems to me we can still remove parenthesis even if we have some charges\n                break;\n            default:\n                if (counter < minCounter)\n                    minCounter = counter;\n                endCounter = 0;\n                begin = false;\n        }\n    }\n    let nbParenthesisToSuppress = Math.min(minCounter, beginCounter, endCounter);\n    if (nbParenthesisToSuppress > 0) {\n        // need to remove from the beginning and from the end the number of parenthesis\n        // knowing some of the lines could be charges\n        let toSuppress = nbParenthesisToSuppress;\n        let i = 0;\n        while (toSuppress > 0) {\n            if (lines[0].kind === Kind_js_1.Kind.OPENING_PARENTHESIS) {\n                lines.splice(i, 1);\n                toSuppress--;\n            }\n            else {\n                i++;\n            }\n        }\n        toSuppress = nbParenthesisToSuppress;\n        i = lines.length - 1;\n        while (toSuppress > 0) {\n            if (lines[i].kind === Kind_js_1.Kind.CLOSING_PARENTHESIS) {\n                toSuppress--;\n                lines.splice(i, 1);\n            }\n            i--;\n        }\n    }\n    return lines;\n}\n//# sourceMappingURL=improveLinesForDisplay.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toDisplay = toDisplay;\nconst Format_1 = require(\"../Format\");\nconst Kind_1 = require(\"../Kind\");\nconst formatCharge_js_1 = require(\"./formatCharge.js\");\nconst improveLinesForDisplay_js_1 = require(\"./improveLinesForDisplay.js\");\n/**\n * Converts an array of mf elements to an array of formatting information\n * @param {object[]} lines of the parse method\n * @returns {{kind: string, value: string}[]}\n */\nfunction toDisplay(lines) {\n    lines = (0, improveLinesForDisplay_js_1.improveLinesForDisplay)(lines);\n    const special = specialCases(lines);\n    if (special)\n        return special;\n    let results = [];\n    let result = {};\n    for (let line of lines) {\n        switch (line.kind) {\n            case Kind_1.Kind.MULTIPLIER:\n                if (line.value !== 1) {\n                    result = {\n                        kind: Format_1.Format.SUBSCRIPT,\n                        value: String(line.value),\n                    };\n                    results.push(result);\n                }\n                break;\n            case Kind_1.Kind.MULTIPLIER_RANGE:\n                result = {\n                    kind: Format_1.Format.SUBSCRIPT,\n                    value: `${String(line.value.from)}-${line.value.to}`,\n                };\n                results.push(result);\n                break;\n            case Kind_1.Kind.CHARGE:\n                if (result.kind === Format_1.Format.SUBSCRIPT) {\n                    result.kind = Format_1.Format.SUPERIMPOSE;\n                    result.over = (0, formatCharge_js_1.formatCharge)(line.value);\n                    result.under = result.value;\n                    result.value = undefined;\n                }\n                else {\n                    result = {\n                        kind: Format_1.Format.SUPERSCRIPT,\n                        value: (0, formatCharge_js_1.formatCharge)(line.value),\n                    };\n                    results.push(result);\n                }\n                break;\n            case Kind_1.Kind.ISOTOPE:\n                result = {\n                    kind: Format_1.Format.SUPERSCRIPT,\n                    value: line.value.isotope,\n                };\n                results.push(result);\n                result = {\n                    kind: Format_1.Format.TEXT,\n                    value: line.value.atom,\n                };\n                results.push(result);\n                break;\n            case Kind_1.Kind.ISOTOPE_RATIO:\n                if (result.kind === Format_1.Format.TEXT) {\n                    result.value += line.value.atom;\n                }\n                else {\n                    result = {\n                        kind: Format_1.Format.TEXT,\n                        value: line.value.atom,\n                    };\n                    results.push(result);\n                }\n                result = {\n                    kind: Format_1.Format.SUPERSCRIPT,\n                    value: `{${line.value.ratio.join(',')}}`,\n                };\n                results.push(result);\n                break;\n            case Kind_1.Kind.SALT:\n                if (result.kind === Format_1.Format.TEXT) {\n                    result.value += ' • ';\n                }\n                else {\n                    result = {\n                        kind: Format_1.Format.TEXT,\n                        value: ' • ',\n                    };\n                    results.push(result);\n                }\n                break;\n            default:\n                if (result.kind === Format_1.Format.TEXT) {\n                    result.value += line.value;\n                }\n                else {\n                    result = {\n                        kind: Format_1.Format.TEXT,\n                        value: line.value,\n                    };\n                    results.push(result);\n                }\n        }\n    }\n    return results;\n}\n/**\n * Some special changes for specific cases\n * @param {} lines\n */\nfunction specialCases(lines) {\n    // (-)\n    if (lines.length === 1 && lines[0].kind === Kind_1.Kind.CHARGE) {\n        const charge = lines[0].value;\n        if (charge === 0)\n            return [];\n        if (charge === 1) {\n            return [\n                { kind: Format_1.Format.TEXT, value: '-e' },\n                { kind: Format_1.Format.SUPERSCRIPT, value: '-' },\n            ];\n        }\n        if (charge === -1) {\n            return [\n                { kind: Format_1.Format.TEXT, value: '+e' },\n                { kind: Format_1.Format.SUPERSCRIPT, value: '-' },\n            ];\n        }\n        if (charge > 1) {\n            return [\n                { kind: Format_1.Format.TEXT, value: `-${charge}e` },\n                { kind: Format_1.Format.SUPERSCRIPT, value: '-' },\n            ];\n        }\n        if (charge < -1) {\n            return [\n                { kind: Format_1.Format.TEXT, value: `+${-charge}e` },\n                { kind: Format_1.Format.SUPERSCRIPT, value: '-' },\n            ];\n        }\n    }\n    // (-)2, (-)-1, (+)2, (+)-1, (2+)2, (2+)-1, (2-)+1, (2-)-1\n    if (lines.length === 2 &&\n        lines[0].kind === Kind_1.Kind.CHARGE &&\n        lines[1].kind === Kind_1.Kind.MULTIPLIER) {\n        const charge = lines[0].value;\n        const nbElectrons = -lines[1].value * charge;\n        const results = [];\n        if (nbElectrons === 0)\n            return [];\n        if (nbElectrons === 1) {\n            results.push({ kind: Format_1.Format.TEXT, value: '+e' });\n        }\n        if (nbElectrons === -1) {\n            results.push({ kind: Format_1.Format.TEXT, value: '-e' });\n        }\n        if (nbElectrons > 1) {\n            results.push({ kind: Format_1.Format.TEXT, value: `+${nbElectrons}e` });\n        }\n        if (nbElectrons < -1) {\n            results.push({ kind: Format_1.Format.TEXT, value: `${nbElectrons}e` });\n        }\n        results.push({ kind: Format_1.Format.SUPERSCRIPT, value: '-' });\n        return results;\n    }\n    return undefined;\n}\n//# sourceMappingURL=toDisplay.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isMF = isMF;\nconst chemical_elements_1 = require(\"chemical-elements\");\nconst chemical_groups_1 = require(\"chemical-groups\");\nfunction isMF(mf) {\n    let tmpMF = mf.replaceAll(/[^A-Za-z]/g, '');\n    let parts = tmpMF.replaceAll(/([A-Za-z])(?=[A-Z])/g, '$1 ').split(' ');\n    for (let i = 0; i < parts.length; i++) {\n        if (!chemical_elements_1.elementsObject[parts[i]] && !chemical_groups_1.groupsObject[parts[i]]) {\n            return false;\n        }\n    }\n    return true;\n}\n//# sourceMappingURL=isMF.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Style = void 0;\nexports.Style = {\n    SUPERIMPOSE: 'flex-direction: column;display: inline-flex;justify-content: center;text-align: left;vertical-align: middle;',\n    SUPERIMPOSE_SUP_SUB: 'line-height: 1; font-size: 70%',\n};\n//# sourceMappingURL=Style.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toHtml = toHtml;\nconst Format_1 = require(\"../Format\");\nconst Style_1 = require(\"../Style\");\nfunction toHtml(lines) {\n    let html = [];\n    for (let line of lines) {\n        switch (line.kind) {\n            case Format_1.Format.SUBSCRIPT:\n                html.push(`<sub>${line.value}</sub>`);\n                break;\n            case Format_1.Format.SUPERSCRIPT:\n                html.push(`<sup>${line.value}</sup>`);\n                break;\n            case Format_1.Format.SUPERIMPOSE:\n                html.push(`<span style=\"${Style_1.Style.SUPERIMPOSE}\">`, `<sup style=\"${Style_1.Style.SUPERIMPOSE_SUP_SUB}\">${line.over}</sup>`, `<sub style=\"${Style_1.Style.SUPERIMPOSE_SUP_SUB}\">${line.under}</sub>`, '</span>');\n                break;\n            default:\n                html.push(line.value);\n        }\n    }\n    return html.join('');\n}\n//# sourceMappingURL=toHtml.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ensureCase = ensureCase;\nconst chemical_elements_1 = require(\"chemical-elements\");\nconst elements = new Set(Object.keys(chemical_elements_1.elementsObject).sort((a, b) => b.length - a.length));\n/**\n * Ensure that the mf has been entered with capital letters and not only lowercase\n * If there is only lowercase we try to capitalize the mf\n * @param {string} mf\n */\nfunction ensureCase(mf) {\n    for (let i = 0; i < mf.length; i++) {\n        // eslint-disable-next-line unicorn/prefer-code-point\n        if (mf.charCodeAt(i) > 64 && mf.charCodeAt(i) < 91) {\n            return mf;\n        }\n    }\n    let parts = mf.replaceAll(/([a-z]*)([^a-z]*)/g, '$1 $2 ').split(/ +/);\n    for (let i = 0; i < parts.length; i++) {\n        if (parts[i].match(/^[a-z]$/)) {\n            parts[i] = parts[i].toUpperCase();\n        }\n        else if (parts[i].match(/^[a-z]+$/)) {\n            let newPart = '';\n            for (let j = 0; j < parts[i].length; j++) {\n                let two = parts[i].slice(j, j + 2);\n                let one = parts[i].charAt(j).toUpperCase();\n                if (['c', 'h', 'o', 'n'].includes(two.charAt(0)) &&\n                    ['h', 'o', 'n'].includes(two.charAt(1))) {\n                    newPart += two.toUpperCase();\n                    j++;\n                }\n                else {\n                    two = two.charAt(0).toUpperCase() + two.charAt(1);\n                    if (elements.has(two)) {\n                        newPart += two;\n                        j++;\n                    }\n                    else if (elements.has(one)) {\n                        newPart += one;\n                    }\n                    else {\n                        return mf;\n                    }\n                }\n            }\n            parts[i] = newPart;\n        }\n    }\n    return parts.join('');\n}\n//# sourceMappingURL=ensureCase.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.flatten = flatten;\n/**\n * This method will generate all possible molecular formulas\n * from ranges.\n * It should rather be called expand because it expands all the ranges\n * @param parsed\n * @param options\n * @return {string[]}\n */\nfunction flatten(parsed, options = {}) {\n    const { groupIdentical = false, limit = 100000 } = options;\n    if (parsed.length === 0)\n        return [''];\n    let parts = [];\n    let parenthesisLevel = 0;\n    let currentPart;\n    let comments = [];\n    for (const entry of parsed) {\n        if ((entry.kind === 'atom' ||\n            entry.kind === 'charge' ||\n            entry.kind === 'isotope' ||\n            entry.kind === 'openingParenthesis' ||\n            !currentPart) &&\n            parenthesisLevel === 0) {\n            currentPart = {\n                mf: '',\n                min: 1,\n                max: 1,\n            };\n            parts.push(currentPart);\n        }\n        switch (entry.kind) {\n            case 'atom':\n                currentPart.mf += entry.value;\n                break;\n            case 'isotope':\n                currentPart.mf += `[${entry.value.isotope}${entry.value.atom}]`;\n                break;\n            case 'multiplier':\n                currentPart.mf += entry.value;\n                break;\n            case 'multiplierRange':\n                if (parenthesisLevel !== 0) {\n                    throw new Error('Range definition inside parenthesis is not allowed.');\n                }\n                currentPart.min = entry.value.from;\n                currentPart.max = entry.value.to;\n                break;\n            case 'openingParenthesis':\n                parenthesisLevel++;\n                currentPart.mf += entry.value;\n                break;\n            case 'charge':\n                if (entry.value === 1) {\n                    currentPart.mf += '+';\n                }\n                else if (entry.value > 1) {\n                    currentPart.mf += `(+${entry.value})`;\n                }\n                else if (entry.value < 0) {\n                    currentPart.mf += `(${entry.value})`;\n                }\n                break;\n            case 'closingParenthesis':\n                parenthesisLevel--;\n                currentPart.mf += entry.value;\n                break;\n            case 'comment':\n                comments.push(entry.value);\n                break;\n            case 'text':\n                break;\n            default:\n                throw new Error(`Could not flatten the parsed MF. Unknown kind: ${entry.kind}`);\n        }\n    }\n    if (groupIdentical) {\n        parts = optimizeRanges(parts);\n    }\n    const mfs = createMFs(parts, comments.join(' '), limit);\n    return mfs;\n}\n/**\n * If we have many times the same mf we can combine them\n * This should only be applied if there are acutaly some ranges\n */\nfunction optimizeRanges(parts) {\n    let newParts = [];\n    let mfsObject = {};\n    let hasRange = false;\n    for (const mf of parts) {\n        if (mf.min !== mf.max) {\n            hasRange = true;\n            break;\n        }\n    }\n    if (!hasRange)\n        return parts;\n    for (const mf of parts) {\n        if (!mfsObject[mf.mf]) {\n            mfsObject[mf.mf] = {\n                mf: mf.mf,\n                min: mf.min,\n                max: mf.max,\n            };\n            newParts.push(mfsObject[mf.mf]);\n        }\n        else {\n            mfsObject[mf.mf].min = mfsObject[mf.mf].min + mf.min;\n            mfsObject[mf.mf].max = mfsObject[mf.mf].max + mf.max;\n        }\n    }\n    return newParts;\n}\nfunction createMFs(parts, comment, limit) {\n    const currents = new Array(parts.length);\n    for (let i = 0; i < currents.length; i++) {\n        currents[i] = parts[i].min;\n    }\n    /** @type {string[]} */\n    const mfs = [];\n    let position = 0;\n    while (position < currents.length) {\n        if (currents[position] < parts[position].max) {\n            mfs.push(getMF(parts, currents, comment));\n            currents[position]++;\n            for (let i = 0; i < position; i++) {\n                currents[i] = parts[i].min;\n            }\n            position = 0;\n        }\n        else {\n            position++;\n        }\n        if (mfs.length > limit) {\n            throw new Error(`MF.flatten generates too many fragments (over ${limit})`);\n        }\n    }\n    mfs.push(getMF(parts, currents, comment));\n    return mfs;\n}\nfunction getMF(parts, currents, comment) {\n    let mf = '';\n    for (let i = 0; i < parts.length; i++) {\n        if (currents[i] === 0) {\n            continue;\n        }\n        mf += parts[i].mf;\n        if (currents[i] !== 1) {\n            mf += currents[i];\n        }\n    }\n    if (comment)\n        mf += `$${comment}`;\n    return mf;\n}\n//# sourceMappingURL=flatten.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getIsotopeRatioInfo = getIsotopeRatioInfo;\nconst chemical_elements_1 = require(\"chemical-elements\");\nfunction getIsotopeRatioInfo(value) {\n    let result = { mass: 0, monoisotopicMass: 0 };\n    let element = chemical_elements_1.elementsAndStableIsotopesObject[value.atom];\n    if (!element)\n        throw new Error(`Element not found: ${value.atom}`);\n    let isotopesArray = element.isotopes;\n    let ratios = normalize(value.ratio);\n    let max = Math.max(...ratios);\n    if (ratios.length > isotopesArray.length) {\n        throw new Error(`the number of specified ratios is bigger that the number of stable isotopes: ${value.atom}`);\n    }\n    for (let i = 0; i < ratios.length; i++) {\n        result.mass += ratios[i] * isotopesArray[i].mass;\n        if (max === ratios[i] && result.monoisotopicMass === 0) {\n            result.monoisotopicMass = isotopesArray[i].mass;\n        }\n    }\n    return result;\n}\nfunction normalize(array) {\n    let sum = array.reduce((prev, current) => prev + current, 0);\n    return array.map((a) => a / sum);\n}\n//# sourceMappingURL=getIsotopeRatioInfo.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getEA = getEA;\nconst chemical_elements_1 = require(\"chemical-elements\");\nconst chemical_groups_1 = require(\"chemical-groups\");\nconst Kind_1 = require(\"../Kind\");\nconst getIsotopeRatioInfo_1 = require(\"./getIsotopeRatioInfo\");\n/**\n * @param {*} parts\n */\nfunction getEA(parts) {\n    let results = {};\n    for (let part of parts) {\n        for (let line of part) {\n            switch (line.kind) {\n                case Kind_1.Kind.ISOTOPE: {\n                    let isotope = chemical_elements_1.isotopesObject[line.value.isotope + line.value.atom];\n                    if (!isotope) {\n                        throw new Error(`Unknown isotope: ${line.value.isotope}${line.value.atom}`);\n                    }\n                    addMass(results, line.value.atom, isotope.mass * line.multiplier);\n                    break;\n                }\n                case Kind_1.Kind.ISOTOPE_RATIO: {\n                    let isotopeRatioInfo = (0, getIsotopeRatioInfo_1.getIsotopeRatioInfo)(line.value);\n                    addMass(results, line.value.atom, isotopeRatioInfo.mass * line.multiplier);\n                    break;\n                }\n                case Kind_1.Kind.ATOM: {\n                    let element = chemical_elements_1.elementsObject[line.value];\n                    if (!element) {\n                        element = chemical_groups_1.groupsObject[line.value];\n                        if (!element)\n                            throw new Error(`Unknown element: ${line.value}`);\n                        // need to explode group ????\n                    }\n                    addMass(results, line.value, element.mass * line.multiplier);\n                    break;\n                }\n                case Kind_1.Kind.CHARGE:\n                    break;\n                default:\n                    throw new Error('partToMF unhandled Kind: ', line.kind);\n            }\n        }\n    }\n    let eas = [];\n    let sum = 0;\n    for (let key in results) {\n        sum += results[key];\n        eas.push({\n            element: key,\n            mass: results[key],\n        });\n    }\n    for (const ea of eas) {\n        ea.ratio = ea.mass / sum;\n    }\n    return eas;\n}\nfunction addMass(results, atom, mass) {\n    if (!results[atom])\n        results[atom] = 0;\n    results[atom] += mass;\n}\n//# sourceMappingURL=getEA.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getElements = getElements;\nconst chemical_elements_1 = require(\"chemical-elements\");\nconst Kind_1 = require(\"../Kind\");\n/**\n * @param {*} parts\n */\nfunction getElements(parts) {\n    const elements = [];\n    for (const part of parts) {\n        for (const line of part) {\n            let number = line.multiplier;\n            switch (line.kind) {\n                case Kind_1.Kind.ATOM: {\n                    let symbol = line.value;\n                    let element = chemical_elements_1.elementsObject[symbol];\n                    if (!element) {\n                        throw new Error(`element unknown: ${symbol} - ${line}`);\n                    }\n                    addElement(elements, { symbol, number });\n                    break;\n                }\n                case Kind_1.Kind.ISOTOPE: {\n                    let element = chemical_elements_1.elementsAndIsotopesObject[line.value.atom];\n                    if (!element) {\n                        throw new Error(`element unknown: ${part.value.atom} - ${line}`);\n                    }\n                    let isotope = element.isotopes.find((a) => a.nominal === line.value.isotope);\n                    if (!isotope) {\n                        throw new Error(`isotope unknown: ${line.value.isotope} - ${line}`);\n                    }\n                    addElement(elements, {\n                        symbol: line.value.atom,\n                        number,\n                        isotope: line.value.isotope,\n                    });\n                    break;\n                }\n                default:\n                    throw new Error(`unknown type: ${line.kind}`);\n            }\n        }\n    }\n    return elements;\n}\nfunction addElement(elements, newElement) {\n    for (let element of elements) {\n        if (element.symbol === newElement.symbol &&\n            element.isotope === newElement.isotope) {\n            element.number += newElement.number;\n            return;\n        }\n    }\n    elements.push(newElement);\n}\n//# sourceMappingURL=getElements.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getNumberOfIsotopologues = getNumberOfIsotopologues;\nconst chemical_elements_1 = require(\"chemical-elements\");\n/**\n * Returns the theoretical number of isotopologues for a given MF based on stable isotopes for each element.\n * This method will not take into account possible non natural isotopic composition (e.g. 13C enrichment)\n * If one element does not have any stable isotope, the result will be 0.\n * @param atoms\n * @returns\n */\nfunction getNumberOfIsotopologues(atoms) {\n    if (Object.keys(atoms).length === 0) {\n        return 0;\n    }\n    let result = 1;\n    for (const atom in atoms) {\n        const nbIsotopes = chemical_elements_1.elementsAndStableIsotopesObject[atom]?.isotopes.length;\n        if (!nbIsotopes) {\n            return 0;\n        }\n        const nbAtoms = atoms[atom];\n        result *= getNbCombinationsPerAtom(nbAtoms, nbIsotopes);\n    }\n    return result;\n}\n/**\n * Returns the number of isotopologues for one specific atom\n *\n * @param nbAtoms\n * @param nbIsotopes\n * @returns\n */\nfunction getNbCombinationsPerAtom(nbAtoms, nbIsotopes) {\n    let result = 1;\n    for (let i = nbAtoms + 1; i < nbAtoms + nbIsotopes; i++) {\n        result *= i;\n    }\n    for (let i = 2; i < nbIsotopes; i++) {\n        result /= i;\n    }\n    return result;\n}\n//# sourceMappingURL=getNumberOfIsotopologues.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.partToAtoms = partToAtoms;\nconst Kind_js_1 = require(\"../Kind.js\");\n/** @typedef {import('./partToAtoms.types').AtomsMap} AtomsMap */\n/**\n * Convert a MF part to a map of atoms\n * This procedure will suppress the isotopes !\n * This is mainly used to make queries\n * @returns {AtomsMap}\n */\nfunction partToAtoms(part) {\n    /** @type {AtomsMap} */\n    const atoms = {};\n    for (let line of part) {\n        switch (line.kind) {\n            case Kind_js_1.Kind.ISOTOPE:\n                if (!atoms[line.value.atom])\n                    atoms[line.value.atom] = 0;\n                atoms[line.value.atom] += line.multiplier;\n                break;\n            case Kind_js_1.Kind.ISOTOPE_RATIO:\n                if (!atoms[line.value.atom])\n                    atoms[line.value.atom] = 0;\n                atoms[line.value.atom] += line.multiplier;\n                break;\n            case Kind_js_1.Kind.ATOM:\n                if (!atoms[line.value])\n                    atoms[line.value] = 0;\n                atoms[line.value] += line.multiplier;\n                break;\n            case Kind_js_1.Kind.CHARGE:\n                break;\n            case Kind_js_1.Kind.ANCHOR:\n                break;\n            default:\n                throw new Error('partToMF unhandled Kind: ', line.kind);\n        }\n    }\n    return atoms;\n}\n//# sourceMappingURL=partToAtoms.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.partToMF = partToMF;\nconst Kind_1 = require(\"../Kind\");\nfunction partToMF(part, options = {}) {\n    let mf = [];\n    for (let line of part) {\n        switch (line.kind) {\n            case Kind_1.Kind.ISOTOPE:\n                if (line.multiplier !== 0) {\n                    mf.push(`[${line.value.isotope}${line.value.atom}]${line.multiplier !== 1 ? line.multiplier : ''}`);\n                }\n                break;\n            case Kind_1.Kind.ISOTOPE_RATIO:\n                if (line.multiplier !== 0) {\n                    mf.push(`${line.value.atom}{${line.value.ratio.join(',')}}${line.multiplier !== 1 ? line.multiplier : ''}`);\n                }\n                break;\n            case Kind_1.Kind.ATOM:\n                if (line.multiplier !== 0) {\n                    mf.push(line.value + (line.multiplier !== 1 ? line.multiplier : ''));\n                }\n                break;\n            case Kind_1.Kind.CHARGE:\n                if (line.value === 0 || options.neutral)\n                    break;\n                mf.push(`(${line.value > 0 ? `+${line.value}` : line.value})`);\n                break;\n            default:\n        }\n    }\n    return mf.join('');\n}\n//# sourceMappingURL=partToMF.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getInfoInternal = getInfoInternal;\nconst chemical_elements_1 = require(\"chemical-elements\");\nconst chemical_groups_1 = require(\"chemical-groups\");\nconst Kind_1 = require(\"../Kind\");\nconst getIsotopeRatioInfo_1 = require(\"./getIsotopeRatioInfo\");\nconst getNumberOfIsotopologues_1 = require(\"./getNumberOfIsotopologues\");\nconst partToAtoms_1 = require(\"./partToAtoms\");\nconst partToMF_1 = require(\"./partToMF\");\n/** @typedef {import('./getInfo.types').MFInfo} MFInfo */\n/** @typedef {import('./getInfo.types').MFInfoWithParts} MFInfoWithParts */\n/**\n *\n * @param {*} parts\n * @param {*} [options={}]\n * @returns {object|MFInfo|MFInfoWithParts}\n */\nfunction getInfoInternal(parts, options = {}) {\n    let { customUnsaturations = {}, emFieldName = 'monoisotopicMass', msemFieldName = 'observedMonoisotopicMass', } = options;\n    if (parts.length === 0)\n        return {};\n    if (parts.length === 1) {\n        let oneResult = getProcessedPart(parts[0], {\n            customUnsaturations,\n            emFieldName,\n            msemFieldName,\n        });\n        oneResult.nbIsotopologues = (0, getNumberOfIsotopologues_1.getNumberOfIsotopologues)(oneResult.atoms);\n        return oneResult;\n    }\n    let result = { parts: [] };\n    for (let part of parts) {\n        result.parts.push(getProcessedPart(part, {\n            customUnsaturations,\n            emFieldName,\n            msemFieldName,\n        }));\n    }\n    result[emFieldName] = 0;\n    result.mass = 0;\n    result.charge = 0;\n    result.unsaturation = 0;\n    result.atoms = {};\n    result.mf = result.parts.map((a) => a.mf).join('.');\n    for (const part of result.parts) {\n        result.mass += part.mass;\n        result[emFieldName] += part[emFieldName];\n        result.charge += part.charge;\n        result.unsaturation += part.unsaturation;\n        for (const atom in part.atoms) {\n            if (!result.atoms[atom]) {\n                result.atoms[atom] = 0;\n            }\n            result.atoms[atom] += part.atoms[atom];\n        }\n    }\n    result.nbIsotopologues = (0, getNumberOfIsotopologues_1.getNumberOfIsotopologues)(result.atoms);\n    return result;\n}\nfunction getProcessedPart(part, options) {\n    let { customUnsaturations, emFieldName, msemFieldName } = options;\n    /** @type {MFInfo} */\n    let currentPart = {\n        mass: 0,\n        charge: 0,\n        mf: '',\n        atoms: (0, partToAtoms_1.partToAtoms)(part),\n    };\n    currentPart[emFieldName] = 0;\n    let unsaturation = 0;\n    let validUnsaturation = true;\n    currentPart.mf = (0, partToMF_1.partToMF)(part);\n    for (let line of part) {\n        let currentElement = '';\n        switch (line.kind) {\n            case Kind_1.Kind.ATOM: {\n                currentElement = line.value;\n                let element = chemical_elements_1.elementsAndIsotopesObject[line.value];\n                // todo should we have a kind GROUP ?\n                if (!element) {\n                    element = chemical_groups_1.groupsObject[line.value];\n                    if (!element)\n                        throw new Error(`Unknown element: ${line.value}`);\n                    if (!customUnsaturations[line.value]) {\n                        customUnsaturations[line.value] = element.unsaturation;\n                    }\n                }\n                if (!element)\n                    throw new Error(`Unknown element: ${line.value}`);\n                currentPart[emFieldName] += element.monoisotopicMass * line.multiplier;\n                currentPart.mass += element.mass * line.multiplier;\n                break;\n            }\n            case Kind_1.Kind.ISOTOPE: {\n                currentElement = line.value.atom;\n                let isotope = chemical_elements_1.isotopesObject[line.value.isotope + line.value.atom];\n                if (!isotope) {\n                    throw new Error(`Unknown isotope: ${line.value.isotope}${line.value.atom}`);\n                }\n                currentPart[emFieldName] += isotope.mass * line.multiplier;\n                currentPart.mass += isotope.mass * line.multiplier;\n                break;\n            }\n            case Kind_1.Kind.ISOTOPE_RATIO: {\n                currentElement = line.value.atom;\n                let isotopeRatioInfo = (0, getIsotopeRatioInfo_1.getIsotopeRatioInfo)(line.value);\n                currentPart[emFieldName] +=\n                    isotopeRatioInfo[emFieldName] * line.multiplier;\n                currentPart.mass += isotopeRatioInfo.mass * line.multiplier;\n                break;\n            }\n            case Kind_1.Kind.CHARGE:\n                currentPart.charge = line.value;\n                if (validUnsaturation) {\n                    unsaturation -= line.value;\n                }\n                break;\n            default:\n                throw new Error('Unimplemented Kind in getInfo', line.kind);\n        }\n        if (currentElement) {\n            if (customUnsaturations[currentElement] !== undefined) {\n                unsaturation += customUnsaturations[currentElement] * line.multiplier;\n            }\n            else if (chemical_elements_1.unsaturationsObject[currentElement] !== undefined) {\n                unsaturation += chemical_elements_1.unsaturationsObject[currentElement] * line.multiplier;\n            }\n            else {\n                validUnsaturation = false;\n            }\n        }\n    }\n    // need to calculate the observedMonoisotopicMass\n    if (currentPart.charge) {\n        currentPart[msemFieldName] =\n            (currentPart[emFieldName] - currentPart.charge * chemical_elements_1.ELECTRON_MASS) /\n                Math.abs(currentPart.charge);\n    }\n    if (validUnsaturation) {\n        currentPart.unsaturation = unsaturation / 2 + 1;\n    }\n    return currentPart;\n}\n//# sourceMappingURL=getInfoInternal.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getIsotopesInfo = getIsotopesInfo;\nconst chemical_elements_1 = require(\"chemical-elements\");\nconst Kind_1 = require(\"../Kind\");\n/** @typedef {import('./getIsotopesInfo.types').IsotopesInfo} IsotopesInfo\n\n/**\n *\n * @param {*} parts\n * @returns {[]|IsotopesInfo}\n */\nfunction getIsotopesInfo(parts) {\n    if (parts.length === 0)\n        return [];\n    if (parts.length > 1) {\n        throw new Error('getIsotopesInfo can not be applied on multipart MF');\n    }\n    return getProcessedPart(parts[0]);\n}\n/**\n * @returns {IsotopesInfo}\n */\nfunction getProcessedPart(part) {\n    /** @type {IsotopesInfo} */\n    let result = {\n        charge: 0,\n        isotopes: [],\n    };\n    for (let line of part) {\n        switch (line.kind) {\n            case Kind_1.Kind.ISOTOPE: {\n                let isotope = chemical_elements_1.isotopesObject[line.value.isotope + line.value.atom];\n                if (!isotope) {\n                    throw new Error('unknown isotope:', line.value.atom, line.value.isotope);\n                }\n                result.isotopes.push({\n                    atom: line.value.atom,\n                    number: line.multiplier,\n                    distribution: [{ x: isotope.mass, y: 1 }],\n                });\n                break;\n            }\n            case Kind_1.Kind.ISOTOPE_RATIO:\n                {\n                    let element = chemical_elements_1.elementsAndStableIsotopesObject[line.value.atom];\n                    if (!element)\n                        throw new Error('unknown element:', line.value);\n                    let distribution = getDistribution(element.isotopes, line.value.ratio);\n                    result.isotopes.push({\n                        atom: line.value.atom,\n                        number: line.multiplier,\n                        distribution,\n                    });\n                }\n                break;\n            case Kind_1.Kind.ATOM: {\n                let element = chemical_elements_1.elementsAndStableIsotopesObject[line.value];\n                if (!element)\n                    throw new Error('unknown element:', line.value);\n                result.isotopes.push({\n                    atom: line.value,\n                    number: line.multiplier,\n                    distribution: element.isotopes.map((e) => ({\n                        x: e.mass,\n                        y: e.abundance,\n                    })),\n                });\n                break;\n            }\n            case Kind_1.Kind.CHARGE:\n                result.charge += line.value;\n                break;\n            default:\n                throw new Error('partToMF unhandled Kind: ', line.kind);\n        }\n    }\n    return result;\n}\nfunction getDistribution(isotopesArray, ratio) {\n    let ratios = normalize(ratio);\n    let result = [];\n    if (ratios.length > isotopesArray.length) {\n        throw new Error(`the number of specified ratios is bigger that the number of stable isotopes: ${chemical_elements_1.isotopesObject}`);\n    }\n    for (let i = 0; i < ratios.length; i++) {\n        result.push({\n            x: isotopesArray[i].mass,\n            y: ratios[i],\n        });\n    }\n    return result;\n}\nfunction normalize(array) {\n    let sum = array.reduce((prev, current) => prev + current, 0);\n    return array.map((a) => a / sum);\n}\n//# sourceMappingURL=getIsotopesInfo.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.partsToDisplay = partsToDisplay;\nconst Kind_1 = require(\"../Kind\");\nconst toDisplay_js_1 = require(\"./toDisplay.js\");\n/**\n * Converts an array of mf elements to an array of formatting information\n * @param {Array<Object>} result of the parse method\n */\nfunction partsToDisplay(parts) {\n    let lines = [];\n    for (let part of parts) {\n        if (lines.length > 0)\n            lines.push({ kind: Kind_1.Kind.SALT, value: '•' });\n        for (let partLine of part) {\n            lines.push(partLine);\n            if (partLine.multiplier) {\n                lines.push({\n                    kind: Kind_1.Kind.MULTIPLIER,\n                    value: partLine.multiplier,\n                });\n            }\n        }\n    }\n    return (0, toDisplay_js_1.toDisplay)(lines);\n}\n//# sourceMappingURL=partsToDisplay.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.partsToMF = partsToMF;\nconst partToMF_1 = require(\"./partToMF\");\nfunction partsToMF(parts, options) {\n    let mf = [];\n    for (let part of parts) {\n        mf.push((0, partToMF_1.partToMF)(part, options));\n    }\n    return mf.join(' . ');\n}\n//# sourceMappingURL=partsToMF.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toParts = toParts;\nconst atom_sorter_1 = require(\"atom-sorter\");\nconst chemical_groups_1 = require(\"chemical-groups\");\nconst Kind_1 = require(\"../Kind\");\n/**\n *\n * @param {*} lines\n * @param {object} [options={}]\n * @param {boolean} [options.expand=true] - Should we expand the groupsObject\n */\nfunction toParts(lines, options = {}) {\n    const { expand: shouldExpandgroupsObject = true } = options;\n    let parts = [];\n    let currentPart = createNewPart();\n    let previousKind = Kind_1.Kind.BEGIN;\n    parts.push(currentPart);\n    for (let line of lines) {\n        switch (line.kind) {\n            case Kind_1.Kind.ATOM:\n            case Kind_1.Kind.ISOTOPE_RATIO:\n            case Kind_1.Kind.ISOTOPE:\n            case Kind_1.Kind.CHARGE:\n                currentPart.lines.push({ ...line, multiplier: 1 });\n                break;\n            case Kind_1.Kind.OPENING_PARENTHESIS:\n                openingParenthesis(currentPart);\n                break;\n            case Kind_1.Kind.CLOSING_PARENTHESIS:\n                closingParenthesis(currentPart);\n                break;\n            case Kind_1.Kind.PRE_MULTIPLIER:\n                preMultiplier(currentPart, line);\n                break;\n            case Kind_1.Kind.MULTIPLIER:\n                postMultiplier(currentPart, line.value, previousKind);\n                break;\n            case Kind_1.Kind.SALT:\n                globalPartMultiplier(currentPart);\n                currentPart = createNewPart();\n                parts.push(currentPart);\n                break;\n            case Kind_1.Kind.ANCHOR: // we ignore anchors to create the parts and canonized MF\n                break;\n            case Kind_1.Kind.COMMENT: // we ignore comments to create the parts and canonized MF\n                break;\n            case Kind_1.Kind.TEXT:\n                break;\n            default:\n                throw new Error(`Can not process mf having: ${line.kind}`);\n        }\n        previousKind = line.kind;\n    }\n    globalPartMultiplier(currentPart);\n    if (shouldExpandgroupsObject)\n        expandgroupsObject(parts);\n    return combineAtomsIsotopesCharges(parts);\n}\nfunction createNewPart() {\n    let currentMultiplier = { value: 1, fromIndex: 0 };\n    return { lines: [], multipliers: [currentMultiplier], currentMultiplier };\n}\nfunction openingParenthesis(currentPart) {\n    currentPart.currentMultiplier = {\n        value: 1,\n        fromIndex: currentPart.lines.length,\n    };\n    currentPart.multipliers.push(currentPart.currentMultiplier);\n}\nfunction closingParenthesis(currentPart) {\n    currentPart.currentMultiplier = currentPart.multipliers.pop();\n    if (currentPart.currentMultiplier !== 1) {\n        for (let i = currentPart.currentMultiplier.fromIndex; i < currentPart.lines.length; i++) {\n            currentPart.lines[i].multiplier *= currentPart.currentMultiplier.value;\n        }\n    }\n}\nfunction preMultiplier(currentPart, line) {\n    currentPart.currentMultiplier.value *= line.value;\n}\nfunction globalPartMultiplier(currentPart) {\n    for (let i = currentPart.multipliers[0].fromIndex; i < currentPart.lines.length; i++) {\n        currentPart.lines[i].multiplier *= currentPart.multipliers[0].value;\n    }\n}\nfunction postMultiplier(currentPart, value, previousKind) {\n    if (previousKind === Kind_1.Kind.CLOSING_PARENTHESIS) {\n        // need to apply to everything till the previous parenthesis\n        for (let i = currentPart.currentMultiplier.fromIndex; i < currentPart.lines.length; i++) {\n            currentPart.lines[i].multiplier *= value;\n        }\n    }\n    else {\n        // just applies to the previous element\n        currentPart.lines.at(-1).multiplier *= value;\n    }\n}\nfunction expandgroupsObject(parts) {\n    for (let part of parts) {\n        let expanded = false;\n        for (let i = 0; i < part.lines.length; i++) {\n            let line = part.lines[i];\n            if (line.kind === Kind_1.Kind.ATOM) {\n                let group = chemical_groups_1.groupsObject[line.value];\n                if (group) {\n                    expanded = true;\n                    for (let element of group.elements) {\n                        if (element.isotope) {\n                            part.lines.push({\n                                kind: 'isotope',\n                                value: { atom: element.symbol, isotope: element.isotope },\n                                multiplier: line.multiplier * element.number,\n                            });\n                        }\n                        else {\n                            part.lines.push({\n                                kind: 'atom',\n                                value: element.symbol,\n                                multiplier: line.multiplier * element.number,\n                            });\n                        }\n                    }\n                    part.lines[i] = undefined;\n                }\n            }\n        }\n        if (expanded)\n            part.lines = part.lines.filter(Boolean);\n    }\n}\nfunction combineAtomsIsotopesCharges(parts) {\n    let results = [];\n    for (let part of parts) {\n        let result = [];\n        results.push(result);\n        calculateAndSortKeys(part);\n        let currentKey = '';\n        for (let key of part.keys) {\n            if (key.key === Kind_1.Kind.CHARGE) {\n                if (currentKey !== key.key) {\n                    result.push({\n                        kind: Kind_1.Kind.CHARGE,\n                        value: key.value.value * key.value.multiplier,\n                    });\n                }\n                else {\n                    result.at(-1).value += key.value.value * key.value.multiplier;\n                }\n            }\n            else if (currentKey !== key.key) {\n                result.push(key.value);\n            }\n            else {\n                result.at(-1).multiplier += key.value.multiplier;\n            }\n            currentKey = key.key;\n        }\n        result.sort((a, b) => {\n            if (a.kind === Kind_1.Kind.CHARGE)\n                return 1;\n            if (b.kind === Kind_1.Kind.CHARGE)\n                return -1;\n            let atomA = a.kind === Kind_1.Kind.ATOM ? a.value : a.value.atom;\n            let atomB = b.kind === Kind_1.Kind.ATOM ? b.value : b.value.atom;\n            if (atomA !== atomB)\n                return (0, atom_sorter_1.atomSorter)(atomA, atomB);\n            // same atome but some isotopes ...\n            if (a.kind === Kind_1.Kind.ATOM)\n                return -1;\n            if (b.kind === Kind_1.Kind.ATOM)\n                return 1;\n            if (a.kind === Kind_1.Kind.ISOTOPE)\n                return -1;\n            if (b.kind === Kind_1.Kind.ISOTOPE)\n                return 1;\n            if (a.kind === Kind_1.Kind.ISOTOPE_RATIO)\n                return -1;\n            if (b.kind === Kind_1.Kind.ISOTOPE_RATIO)\n                return 1;\n            return 0;\n        });\n    }\n    return results;\n}\nfunction calculateAndSortKeys(part) {\n    part.keys = [];\n    for (let line of part.lines) {\n        part.keys.push({ key: getKey(line), value: line });\n    }\n    part.keys.sort((a, b) => stringComparator(a.key, b.key));\n}\nfunction getKey(line) {\n    let key = [line.kind];\n    switch (line.kind) {\n        case Kind_1.Kind.CHARGE:\n            break;\n        default:\n            if (typeof line.value === 'string') {\n                key.push(line.value);\n            }\n            else {\n                for (let prop of Object.keys(line.value).sort()) {\n                    key.push(line.value[prop]);\n                }\n            }\n    }\n    return key.join('-');\n}\nfunction stringComparator(a, b) {\n    if (a < b)\n        return -1;\n    if (a > b)\n        return 1;\n    return 0;\n}\n//# sourceMappingURL=toParts.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toText = toText;\nconst Format_1 = require(\"../Format\");\nconst subSuperscript_1 = require(\"./subSuperscript\");\nfunction toText(lines) {\n    let text = [];\n    for (let line of lines) {\n        switch (line.kind) {\n            case Format_1.Format.SUBSCRIPT:\n                {\n                    const value = String(line.value);\n                    for (let i = 0; i < value.length; i++) {\n                        const char = value[i];\n                        if (subSuperscript_1.subscript[char]) {\n                            text.push(subSuperscript_1.subscript[char]);\n                        }\n                        else {\n                            throw new Error(`Subscript problem with: ${char}`);\n                        }\n                    }\n                }\n                break;\n            case Format_1.Format.SUPERSCRIPT: {\n                const value = String(line.value);\n                for (let i = 0; i < value.length; i++) {\n                    const char = value[i];\n                    if (subSuperscript_1.superscript[char]) {\n                        text.push(subSuperscript_1.superscript[char]);\n                    }\n                    else {\n                        throw new Error(`Superscript problem with: ${char}`);\n                    }\n                }\n                break;\n            }\n            case Format_1.Format.SUPERIMPOSE: {\n                const under = String(line.under);\n                for (let i = 0; i < under.length; i++) {\n                    const char = under[i];\n                    if (subSuperscript_1.subscript[char]) {\n                        text.push(subSuperscript_1.subscript[char]);\n                    }\n                    else {\n                        throw new Error(`Subscript problem with: ${char}`);\n                    }\n                }\n                const over = String(line.over);\n                for (let i = 0; i < over.length; i++) {\n                    const char = over[i];\n                    if (subSuperscript_1.superscript[char]) {\n                        text.push(subSuperscript_1.superscript[char]);\n                    }\n                    else {\n                        throw new Error(`Superscript problem with: ${char}`);\n                    }\n                }\n                break;\n            }\n            default:\n                text.push(line.value);\n        }\n    }\n    return text.join('');\n}\n//# sourceMappingURL=toText.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MFInternal = void 0;\nconst ensureCase_1 = require(\"./ensureCase\");\nconst parse_1 = require(\"./parse\");\nconst flatten_1 = require(\"./util/flatten\");\nconst getEA_1 = require(\"./util/getEA\");\nconst getElements_1 = require(\"./util/getElements\");\nconst getInfo_1 = require(\"./util/getInfo\");\nconst getIsotopesInfo_1 = require(\"./util/getIsotopesInfo\");\nconst partsToDisplay_1 = require(\"./util/partsToDisplay\");\nconst partsToMF_1 = require(\"./util/partsToMF\");\nconst toDisplay_1 = require(\"./util/toDisplay\");\nconst toHtml_1 = require(\"./util/toHtml\");\nconst toParts_1 = require(\"./util/toParts\");\nconst toText_1 = require(\"./util/toText\");\n/** @typedef {import('./util/getIsotopesInfo.types').IsotopesInfo} IsotopesInfo */\n/** @typedef {import('./util/getInfo.types').MFInfo} MFInfo */\n/** @typedef {import('./util/getInfo.types').MFInfoWithParts} MFInfoWithParts */\n/**\n * Class allowing to deal with molecular formula and derived information\n */\nclass MFInternal {\n    constructor(mf, options = {}) {\n        if (options.ensureCase) {\n            mf = (0, ensureCase_1.ensureCase)(mf);\n        }\n        this.parsed = (0, parse_1.parse)(mf);\n        this.cache = {};\n    }\n    /**\n     * Returns an array of objects with kind and value that can be used to easily\n     * display the molecular formula.\n     * @returns {{kind: string, value: string}[]}\n     */\n    toDisplay() {\n        if (!this.cache.displayed)\n            this.cache.displayed = (0, toDisplay_1.toDisplay)(this.parsed);\n        return this.cache.displayed;\n    }\n    /**\n     * Returns a string that represents the molecular formula adding subscript and superscript in HTML.\n     * @returns {string}\n     */\n    toHtml() {\n        if (!this.cache.html) {\n            this.toDisplay();\n            this.cache.html = (0, toHtml_1.toHtml)(this.cache.displayed);\n        }\n        return this.cache.html;\n    }\n    /**\n     * Returns a string that represents the molecular formula adding subscript and superscript\n     * using Unicode characters. This can not be parsed anymore so kind of dead end ...\n     * @returns {string}\n     */\n    toText() {\n        if (!this.cache.text) {\n            this.toDisplay();\n            this.cache.text = (0, toText_1.toText)(this.cache.displayed);\n        }\n        return this.cache.text;\n    }\n    /**\n     * Similar to toText but returns a canonic string in which the atoms are sorted using the Hill system\n     * @returns {string}\n     */\n    toCanonicText() {\n        if (!this.cache.canonicText) {\n            this.cache.canonicText = new MFInternal(this.toMF()).toText();\n        }\n        return this.cache.canonicText;\n    }\n    toParts(options) {\n        if (options) {\n            return (0, toParts_1.toParts)(this.parsed, options);\n        }\n        // we don't want to cache the parts if we are using options\n        if (!this.cache.parts) {\n            this.cache.parts = (0, toParts_1.toParts)(this.parsed, options);\n        }\n        return this.cache.parts;\n    }\n    /**\n     * Returns an object with the global MF, global charge, monoisotopic mass and mass\n     * as well as the same information for all the parts\n     * @param {object} [options={}] options\n     * @param {object} [options.customUnsaturations={}] custom unsaturations\n     * @param {string} [options.emFieldName='monoisotopicMass'] name of the monoisotopic mass field\n     * @param {string} [options.msemFieldName='observedMonoisotopicMass'] name of the observed monoisotopic mass field\n     * @returns {MFInfo|MFInfoWithParts}\n     */\n    getInfo(options = {}) {\n        if (!this.cache.info) {\n            this.toParts();\n            this.cache.info = (0, getInfo_1.getInfo)(this.cache.parts, options);\n        }\n        return this.cache.info;\n    }\n    /**\n     * Returns an object with the elemental analysis\n     * @returns {*[]}\n     */\n    getEA() {\n        if (!this.cache.ea) {\n            this.toParts();\n            this.cache.ea = (0, getEA_1.getEA)(this.cache.parts);\n        }\n        return this.cache.ea;\n    }\n    /**\n     * Get the different elements for each part\n     * @returns {*[]}\n     */\n    getElements() {\n        if (!this.cache.elements) {\n            this.toParts();\n            this.cache.elements = (0, getElements_1.getElements)(this.cache.parts);\n        }\n        return this.cache.elements;\n    }\n    /**\n     * Returns an array with each atom and isotopic composition\n     * @returns {IsotopesInfo}\n     */\n    getIsotopesInfo(options = {}) {\n        if (!this.cache.isotopesInfo) {\n            this.toParts();\n            this.cache.isotopesInfo = (0, getIsotopesInfo_1.getIsotopesInfo)(this.cache.parts, options);\n        }\n        return this.cache.isotopesInfo;\n    }\n    /**\n     * Get a canonized MF\n     * @returns {string}\n     */\n    toMF() {\n        if (!this.cache.mf) {\n            this.toParts();\n            this.cache.mf = (0, partsToMF_1.partsToMF)(this.cache.parts);\n        }\n        return this.cache.mf;\n    }\n    /**\n     * Get a canonized MF\n     * @returns {string}\n     */\n    toNeutralMF() {\n        if (!this.cache.neutralMF) {\n            this.toParts();\n            this.cache.neutralMF = (0, partsToMF_1.partsToMF)(this.cache.parts, { neutral: true });\n        }\n        return this.cache.neutralMF;\n    }\n    canonize() {\n        this.toParts();\n        this.cache.displayed = (0, partsToDisplay_1.partsToDisplay)(this.cache.parts);\n        this.cache.html = undefined;\n    }\n    flatten(options) {\n        return (0, flatten_1.flatten)(this.parsed, options);\n    }\n}\nexports.MFInternal = MFInternal;\n//# sourceMappingURL=MFInternal.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MF = void 0;\nconst MFInternal_1 = require(\"./MFInternal\");\nclass MF {\n    internal;\n    constructor(mf, options = {}) {\n        this.internal = new MFInternal_1.MFInternal(mf, options);\n    }\n    /**\n     * Returns an array of objects with kind and value that can be used to easily\n     * display the molecular formula.\n     */\n    toDisplay() {\n        return this.internal.toDisplay();\n    }\n    /**\n     * Returns a string that represents the molecular formula adding subscript and superscript in HTML.\n     */\n    toHtml() {\n        return this.internal.toHtml();\n    }\n    /**\n     * Returns a string that represents the molecular formula adding subscript and superscript\n     * using Unicode characters. This can not be parsed anymore so kind of dead end ...\n     */\n    toText() {\n        return this.internal.toText();\n    }\n    /**\n     * Similar to toText but returns a canonic string in which the atoms are sorted using the Hill system\n     */\n    toCanonicText() {\n        return this.internal.toCanonicText();\n    }\n    toParts(options) {\n        return this.internal.toParts(options);\n    }\n    /**\n     * Returns an object with the global MF, global charge, monoisotopic mass and mass\n     * as well as the same information for all the parts\n     */\n    getInfo(options) {\n        return this.internal.getInfo(options);\n    }\n    /**\n     * Returns an object with the elemental analysis\n     */\n    getEA() {\n        return this.internal.getEA();\n    }\n    /**\n     * Get the different elements for each part\n     */\n    getElements() {\n        return this.internal.getElements();\n    }\n    /**\n     * Returns an array with each atom and isotopic composition\n     */\n    getIsotopesInfo(options = {}) {\n        return this.internal.getIsotopesInfo(options);\n    }\n    /**\n     * Get a canonized parsable Molecule Formula\n     */\n    toMF() {\n        return this.internal.toMF();\n    }\n    /**\n     * Get a canonized MF\n     */\n    toNeutralMF() {\n        return this.internal.toNeutralMF();\n    }\n    canonize() {\n        return this.internal.canonize();\n    }\n    flatten(options) {\n        return this.internal.flatten(options);\n    }\n}\nexports.MF = MF;\n//# sourceMappingURL=MF.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parseToHtml = parseToHtml;\nconst parse_js_1 = require(\"./parse.js\");\nconst toDisplay_js_1 = require(\"./util/toDisplay.js\");\nconst toHtml_js_1 = require(\"./util/toHtml.js\");\n/**\n * Parse a molecular formula and converts it to an HTML code\n * @param {String} mf String containing the molecular formula\n */\nfunction parseToHtml(mf) {\n    let parsed = (0, parse_js_1.parse)(mf);\n    let display = (0, toDisplay_js_1.toDisplay)(parsed);\n    return (0, toHtml_js_1.toHtml)(display);\n}\n//# sourceMappingURL=parseToHtml.js.map","\"use strict\";\n/**\n * @param {object}   [entry={}]\n * @param {object}   [options={}]\n * @param {number}   [options.min=-Infinity] - Minimal unsaturation\n * @param {number}   [options.max=+Infinity] - Maximal unsaturation\n * @param {boolean}   [options.onlyInteger=false] - Integer unsaturation\n * @param {boolean}   [options.onlyNonInteger=false] - Non integer unsaturation\n * @return {boolean}\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.unsaturationMatcher = unsaturationMatcher;\nfunction unsaturationMatcher(entry, options = {}) {\n    const { min = Number.MIN_SAFE_INTEGER, max = Number.MAX_SAFE_INTEGER, onlyInteger, onlyNonInteger, } = options;\n    if (entry.unsaturation !== undefined) {\n        if (entry.unsaturation < min || entry.unsaturation > max)\n            return false;\n        if (onlyInteger && !Number.isInteger(entry.unsaturation))\n            return false;\n        if (onlyNonInteger && Number.isInteger(entry.unsaturation))\n            return false;\n    }\n    return true;\n}\n//# sourceMappingURL=unsaturationMatcher.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.generalMatcher = generalMatcher;\nconst unsaturationMatcher_js_1 = require(\"./unsaturationMatcher.js\");\n/**\n * Returns true if the entry containing MF information match\n * @param {object}   [entry={}] - object containing mw, ...\n * @param {object}   [options={}]\n * @param {number}   [options.minMW=0] - Minimal molecular weight\n * @param {number}   [options.maxMW=+Infinity] - Maximal molecular weight\n * @param {number}   [options.minEM=0] - Minimal monoisotopic mass\n * @param {number}   [options.maxEM=+Infinity] - Maximal monoisotopic mass\n * @param {number}   [options.minCharge=-Infinity] - Minimal charge\n * @param {number}   [options.maxCharge=+Infinity] - Maximal charge\n * @param {boolean}  [options.absoluteCharge=false] - If true, the charge is absolute (so between 0 and +Infinity by default)\n * @param {object}   [options.unsaturation={}]\n * @param {number}   [options.unsaturation.min=-Infinity] - Minimal unsaturation\n * @param {number}   [options.unsaturation.max=+Infinity] - Maximal unsaturation\n * @param {boolean}   [options.unsaturation.onlyInteger=false] - Integer unsaturation\n * @param {boolean}   [options.unsaturation.onlyNonInteger=false] - Non integer unsaturation\n * @param {object}   [options.atoms] - object of atom:{min, max}\n * @return {boolean}\n */\nfunction generalMatcher(entry, options = {}) {\n    const { minMW = 0, maxMW = +Infinity, minEM = 0, maxEM = +Infinity, minCharge = Number.MIN_SAFE_INTEGER, maxCharge = Number.MAX_SAFE_INTEGER, absoluteCharge = false, unsaturation = {}, atoms, } = options;\n    if (entry.mw !== undefined && (entry.mw < minMW || entry.mw > maxMW)) {\n        return false;\n    }\n    if (entry.em !== undefined && (entry.em < minEM || entry.em > maxEM)) {\n        return false;\n    }\n    if (entry.charge !== undefined) {\n        let charge = absoluteCharge ? Math.abs(entry.charge) : entry.charge;\n        if (charge < minCharge || charge > maxCharge)\n            return false;\n    }\n    if (unsaturation !== undefined &&\n        entry.unsaturation !== undefined &&\n        !(0, unsaturationMatcher_js_1.unsaturationMatcher)(entry, unsaturation)) {\n        return false;\n    }\n    if (entry.atoms !== undefined && atoms) {\n        // all the atoms of the entry must fit in the range\n        for (let atom in entry.atoms) {\n            if (!atoms[atom])\n                return false;\n            if (entry.atoms[atom] < atoms[atom].min)\n                return false;\n            if (entry.atoms[atom] > atoms[atom].max)\n                return false;\n        }\n    }\n    return true;\n}\n//# sourceMappingURL=generalMatcher.js.map","\"use strict\";\n/**\n * Ensure that the sequence is in uppercase taking into account possible modifications\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ensureUppercaseSequence = ensureUppercaseSequence;\nfunction ensureUppercaseSequence(sequence) {\n    let parenthesisCounter = 0;\n    let parts = [];\n    let part = '';\n    for (let i = 0; i < sequence.length; i++) {\n        let currentSymbol = sequence[i];\n        if (currentSymbol === '(' && parenthesisCounter === 0 && part) {\n            parts.push(part);\n            part = currentSymbol;\n        }\n        else if (currentSymbol === ')' && parenthesisCounter === 0) {\n            part += currentSymbol;\n            parts.push(part);\n            part = '';\n        }\n        else {\n            part += currentSymbol;\n        }\n    }\n    if (part)\n        parts.push(part);\n    for (let i = 0; i < parts.length; i++) {\n        if (!parts[i].startsWith('(') && parts[i].match(/^[a-z]+$/)) {\n            parts[i] = parts[i].toUpperCase();\n        }\n    }\n    return parts.join('');\n}\n//# sourceMappingURL=ensureUppercaseSequence.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getEutrophicationPotential = getEutrophicationPotential;\nconst mf_parser_1 = require(\"mf-parser\");\nfunction getEutrophicationPotential(mfString) {\n    let parsed = new mf_parser_1.MF(mfString);\n    let info = parsed.getInfo();\n    let mf = info.mf;\n    let mw = info.mass;\n    let nC = info.atoms.C || 0;\n    let nO = info.atoms.O || 0;\n    let nN = info.atoms.N || 0;\n    let nP = info.atoms.P || 0;\n    let nH = info.atoms.H || 0;\n    let atoms = Object.keys(info.atoms);\n    for (let atom of atoms) {\n        if (!['C', 'H', 'N', 'O', 'P'].includes(atom)) {\n            return {\n                log: `EP can not be calculated because the MF contains the element: ${atom}`,\n            };\n        }\n    }\n    let vRef = 1;\n    let mwRef = 94.97;\n    let thOD = nC + (nH - 3 * nN) / 4 - nO / 2;\n    let v = nP + nN / 16 + thOD / 138;\n    let ep = v / mw / (vRef / mwRef);\n    return {\n        v,\n        thOD,\n        ep,\n        mf,\n        mw,\n        log: 'Successful calculation',\n    };\n}\n//# sourceMappingURL=getEutrophicationPotential.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getMsem = getMsem;\nconst chemical_elements_1 = require(\"chemical-elements\");\nfunction getMsem(em, charge) {\n    if (charge > 0) {\n        return em / charge - chemical_elements_1.ELECTRON_MASS;\n    }\n    else if (charge < 0) {\n        return em / (charge * -1) + chemical_elements_1.ELECTRON_MASS;\n    }\n    else {\n        return 0;\n    }\n}\n//# sourceMappingURL=getMsem.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getMsInfo = getMsInfo;\nconst getMsem_1 = require(\"./getMsem\");\n/**\n * Returns an object containing:\n * {ms: {em, charge, ionization}, ionization: {}}\n * We return the ionization in order to know which one has been selected\n */\nfunction getMsInfo(entry, options = {}) {\n    const { allowNeutralMolecules, ionization = { mf: '', em: 0, charge: 0 }, forceIonization = false, targetMass, } = options;\n    let realIonization = ionization;\n    if (!forceIonization && entry.ionization && entry.ionization.mf !== '') {\n        realIonization = entry.ionization;\n    }\n    let ms = {\n        ionization: realIonization.mf,\n        em: 0,\n        charge: entry.charge + realIonization.charge,\n    };\n    if (ms.charge !== 0) {\n        ms.em = (0, getMsem_1.getMsem)(entry.em + realIonization.em, ms.charge);\n    }\n    else if (allowNeutralMolecules) {\n        ms.em = entry.em + realIonization.em;\n    }\n    if (targetMass) {\n        ms.delta = targetMass - ms.em;\n        ms.ppm = ((targetMass - ms.em) / ms.em) * 1e6;\n    }\n    return {\n        ms,\n        ionization: realIonization,\n    };\n}\n//# sourceMappingURL=getMsInfo.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRangesForFragment = getRangesForFragment;\nconst mf_parser_1 = require(\"mf-parser\");\nfunction getRangesForFragment(ranges) {\n    ranges = structuredClone(ranges);\n    if (typeof ranges === 'string') {\n        // need to convert to ranges\n        let parsed = (0, mf_parser_1.parse)(ranges.replaceAll(/[\\t\\n\\r ]/g, ''));\n        let newRanges = [];\n        // example ClBr2(CH2)0-2NO\n        // the idea is that as long as we don't have a range we don't really care\n        // there is a limitation is that the range has to be first level of parenthesis\n        let parenthesisLevel = 0;\n        let currentMF = ''; // start at an atom first level or a parenthesis\n        for (let item of parsed) {\n            switch (item.kind) {\n                case mf_parser_1.Kind.ATOM:\n                    if (parenthesisLevel === 0 && currentMF) {\n                        newRanges.push({\n                            mf: currentMF,\n                        });\n                        currentMF = '';\n                    }\n                    currentMF += item.value;\n                    break;\n                case mf_parser_1.Kind.ISOTOPE:\n                    if (parenthesisLevel === 0 && currentMF) {\n                        newRanges.push({\n                            mf: currentMF,\n                        });\n                        currentMF = '';\n                    }\n                    currentMF += `[${item.value.isotope}${item.value.atom}]`;\n                    break;\n                case mf_parser_1.Kind.MULTIPLIER:\n                    if (parenthesisLevel === 0 && currentMF) {\n                        newRanges.push({\n                            mf: currentMF,\n                            max: item.value,\n                        });\n                        currentMF = '';\n                    }\n                    else {\n                        currentMF += item.value;\n                    }\n                    break;\n                case mf_parser_1.Kind.MULTIPLIER_RANGE:\n                    if (parenthesisLevel !== 0) {\n                        throw new Error('Range multiplier can only be at the first level');\n                    }\n                    newRanges.push({\n                        mf: currentMF,\n                        min: item.value.from,\n                        max: item.value.to,\n                    });\n                    currentMF = '';\n                    break;\n                case mf_parser_1.Kind.OPENING_PARENTHESIS:\n                    if (parenthesisLevel === 0 && currentMF) {\n                        newRanges.push({\n                            mf: currentMF,\n                        });\n                        currentMF = '';\n                    }\n                    parenthesisLevel++;\n                    currentMF += '(';\n                    break;\n                case mf_parser_1.Kind.CLOSING_PARENTHESIS:\n                    parenthesisLevel--;\n                    currentMF += ')';\n                    break;\n                default:\n                    throw new Error(`can not preprocess ${ranges}`);\n            }\n        }\n        if (currentMF) {\n            newRanges.push({ mf: currentMF });\n        }\n        ranges = newRanges;\n    }\n    let possibilities = [];\n    for (const range of ranges) {\n        if (range.max === 0)\n            continue;\n        let max = range.max === undefined ? 1 : range.max;\n        possibilities.push(`${range.mf}0-${max}`);\n    }\n    return possibilities.join(' ');\n}\n//# sourceMappingURL=getRangesForFragment.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MFRange = void 0;\nconst mf_parser_1 = require(\"mf-parser\");\nclass MFRange {\n    constructor(mf) {\n        this.range = getRange(mf);\n    }\n    isInRange(mf) {\n        const target = getRange(mf);\n        let rangeIndex = 0;\n        let targetIndex = 0;\n        while (rangeIndex < this.range.length && targetIndex < target.length) {\n            const rangeElement = this.range[rangeIndex];\n            const targetElement = target[targetIndex];\n            if (rangeElement.element === targetElement.element) {\n                // Check if the target's range is within the range's range\n                if (targetElement.range.from >= rangeElement.range.from &&\n                    targetElement.range.to <= rangeElement.range.to) {\n                    targetIndex++;\n                    rangeIndex++;\n                }\n                else {\n                    return false; // Target element is out of range\n                }\n            }\n            else if (rangeElement.element < targetElement.element) {\n                if (rangeElement.range.from > 0) {\n                    return false; // Remaining range elements must have a minimum of 1\n                }\n                rangeIndex++;\n            }\n            else {\n                return false; // Target element is not in the range\n            }\n        }\n        if (rangeIndex < this.range.length) {\n            if (this.range[rangeIndex].range.from > 0) {\n                return false; // Remaining range elements must have a minimum of 1\n            }\n            rangeIndex++;\n        }\n        if (targetIndex < target.length) {\n            return false; // Not all target elements were matched\n        }\n        return true; // All target elements are within the range\n    }\n}\nexports.MFRange = MFRange;\nfunction getRange(mf) {\n    const parsed = (0, mf_parser_1.parse)(mf, { expandGroups: true, simplify: true });\n    const ranges = [];\n    let currentRange;\n    for (const item of parsed) {\n        switch (item.kind) {\n            case 'atom':\n                currentRange = { element: item.value, range: { from: 1, to: 1 } };\n                ranges.push(currentRange);\n                break;\n            case 'isotope':\n                currentRange = {\n                    element: item.value.isotope + item.value.atom,\n                    range: { from: 1, to: 1 },\n                };\n                break;\n            case 'multiplier':\n                if (currentRange) {\n                    currentRange.range.from = item.value;\n                    currentRange.range.to = item.value;\n                }\n                else {\n                    throw new Error(`MFRange: Multiplier without preceding element in MF: ${mf}`);\n                }\n                break;\n            case 'multiplierRange':\n                if (currentRange) {\n                    currentRange.range.from = item.value.from;\n                    currentRange.range.to = item.value.to;\n                }\n                else {\n                    throw new Error(`MFRange: Multiplier range without preceding element in MF: ${mf}`);\n                }\n                break;\n            default:\n                throw new Error(`MFRange: Unknown kind: ${item.kind} in MF: ${mf}`);\n        }\n    }\n    return ranges.sort((a, b) => {\n        if (a.element < b.element)\n            return -1;\n        if (a.element > b.element)\n            return 1;\n        return 0;\n    });\n}\n//# sourceMappingURL=MFRange.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mfDiff = mfDiff;\nconst mf_parser_1 = require(\"mf-parser\");\nfunction mfDiff(mfString1, mfString2) {\n    let mf1 = new mf_parser_1.MF(mfString1).getInfo().atoms;\n    let mf2 = new mf_parser_1.MF(mfString2).getInfo().atoms;\n    let atoms = Object.keys(mf1);\n    for (const atom of Object.keys(mf2)) {\n        if (!atoms.includes(atom))\n            atoms.push(atom);\n    }\n    let mf = '';\n    for (let atom of atoms) {\n        let diff = (mf1[atom] || 0) - (mf2[atom] || 0);\n        if (diff)\n            mf += atom + diff;\n    }\n    return new mf_parser_1.MF(mf).toMF();\n}\n//# sourceMappingURL=mfDiff.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.preprocessIonizations = preprocessIonizations;\nconst mf_parser_1 = require(\"mf-parser\");\nfunction preprocessIonizations(ionizationsString = '') {\n    if (Array.isArray(ionizationsString))\n        return ionizationsString;\n    const ionizations = ionizationsString.split(/ *[\\t\\n\\r,.;]+ */);\n    // it is allowed to have ranges in Ionizations. We need to explode them.\n    const results = [];\n    for (const ionization of ionizations) {\n        const parts = new mf_parser_1.MF(ionization).flatten();\n        for (const part of parts) {\n            const info = new mf_parser_1.MF(part).getInfo();\n            results.push({\n                mf: part,\n                em: info.monoisotopicMass,\n                charge: info.charge,\n                atoms: info.atoms,\n            });\n        }\n    }\n    return results;\n}\n//# sourceMappingURL=preprocessIonizations.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.preprocessRanges = preprocessRanges;\nconst mf_parser_1 = require(\"mf-parser\");\nfunction preprocessRanges(ranges) {\n    ranges = structuredClone(ranges);\n    if (typeof ranges === 'string') {\n        // need to convert to ranges\n        let parsed = (0, mf_parser_1.parse)(ranges.replaceAll(/[\\t\\n\\r ]/g, ''));\n        let newRanges = [];\n        let current = {\n            mf: '',\n            min: 1,\n            max: 1,\n        };\n        // example ClBr2(CH2)0-2NO\n        // the idea is that has long as we don't have a range we don't really care\n        // but the range should only applied on the previous atom, group or parenthesis\n        // there is a limitation is that the range has to be first level of parenthesis\n        let parenthesisLevel = 0;\n        let currentMF = ''; // start at an atom first level or a parenthesis\n        for (let item of parsed) {\n            switch (item.kind) {\n                case mf_parser_1.Kind.ATOM:\n                    if (parenthesisLevel === 0 && currentMF) {\n                        current.mf += currentMF;\n                        currentMF = '';\n                    }\n                    currentMF += item.value;\n                    break;\n                case mf_parser_1.Kind.ISOTOPE:\n                    if (parenthesisLevel === 0 && currentMF) {\n                        current.mf += currentMF;\n                        currentMF = '';\n                    }\n                    currentMF += `[${item.value.isotope}${item.value.atom}]`;\n                    break;\n                case mf_parser_1.Kind.MULTIPLIER:\n                    if (parenthesisLevel === 0 && currentMF) {\n                        current.mf += currentMF + item.value;\n                        currentMF = '';\n                    }\n                    else {\n                        currentMF += item.value;\n                    }\n                    break;\n                case mf_parser_1.Kind.MULTIPLIER_RANGE:\n                    if (parenthesisLevel !== 0) {\n                        throw new Error('Range multiplier can only be at the first level');\n                    }\n                    newRanges.push({\n                        mf: currentMF,\n                        min: item.value.from,\n                        max: item.value.to,\n                    });\n                    currentMF = '';\n                    break;\n                case mf_parser_1.Kind.OPENING_PARENTHESIS:\n                    if (parenthesisLevel === 0 && currentMF) {\n                        current.mf += currentMF;\n                        currentMF = '';\n                    }\n                    parenthesisLevel++;\n                    currentMF += '(';\n                    break;\n                case mf_parser_1.Kind.CLOSING_PARENTHESIS:\n                    parenthesisLevel--;\n                    currentMF += ')';\n                    break;\n                default:\n                    throw new Error(`can not preprocess ${ranges}`);\n            }\n        }\n        if (currentMF) {\n            current.mf += currentMF;\n        }\n        if (current.mf) {\n            newRanges.push(current);\n        }\n        ranges = newRanges;\n    }\n    let possibilities = [];\n    for (let i = 0; i < ranges.length; i++) {\n        let range = ranges[i];\n        let min = range.min === undefined ? 0 : range.min;\n        let max = range.max === undefined ? 1 : range.max;\n        let possibility = {\n            mf: range.mf,\n            originalMinCount: min, // value defined by the user\n            originalMaxCount: max, // value defined by the user\n            currentMinCount: min,\n            currentMaxCount: max,\n            currentCount: min,\n            currentMonoisotopicMass: 0,\n            currentCharge: 0,\n            currentUnsaturation: 0,\n            initialOrder: i,\n            minInnerMass: 0,\n            maxInnerMass: 0,\n            minInnerCharge: 0,\n            maxInnerCharge: 0,\n            minCharge: 0,\n            maxCharge: 0,\n            minMass: 0,\n            maxMass: 0,\n            innerCharge: false,\n        };\n        possibilities.push(possibility);\n        let info = new mf_parser_1.MF(range.mf).getInfo();\n        possibility.em = range.em || info.monoisotopicMass;\n        possibility.charge = range.charge || info.charge;\n        possibility.unsaturation =\n            range.unsaturation === undefined\n                ? (info.unsaturation - 1) * 2\n                : range.unsaturation;\n        possibility.atoms = info.atoms;\n        if (possibility.mf !== info.mf) {\n            possibility.isGroup = true;\n        }\n    }\n    possibilities = possibilities.filter((r) => r.originalMinCount !== 0 || r.originalMaxCount !== 0);\n    // we will sort the way we analyse the data\n    // 1. The one possibility parameter\n    // 2. The charged part\n    // 3. Decreasing em\n    possibilities.sort((a, b) => {\n        if (a.originalMinCount === a.originalMaxCount)\n            return -1; // should be in front, they are 'static'\n        if (b.originalMinCount === b.originalMaxCount)\n            return 1;\n        if (a.charge && b.charge) {\n            if (Math.abs(a.charge) > Math.abs(b.charge))\n                return -1;\n            if (Math.abs(a.charge) < Math.abs(b.charge))\n                return 1;\n            return b.em - a.em;\n        }\n        if (a.charge)\n            return -1;\n        if (b.charge)\n            return 1;\n        return b.em - a.em;\n    });\n    // we calculate couple of fixed values\n    for (let i = 0; i < possibilities.length; i++) {\n        for (let j = i; j < possibilities.length; j++) {\n            let possibility = possibilities[j];\n            if (possibility.em > 0) {\n                possibilities[i].minMass +=\n                    possibility.em * possibility.originalMinCount;\n                possibilities[i].maxMass +=\n                    possibility.em * possibility.originalMaxCount;\n            }\n            else {\n                possibilities[i].minMass +=\n                    possibility.em * possibility.originalMaxCount;\n                possibilities[i].maxMass +=\n                    possibility.em * possibility.originalMinCount;\n            }\n            if (possibility.charge > 0) {\n                possibilities[i].minCharge +=\n                    possibility.charge * possibility.originalMinCount;\n                possibilities[i].maxCharge +=\n                    possibility.charge * possibility.originalMaxCount;\n            }\n            else {\n                possibilities[i].minCharge +=\n                    possibility.charge * possibility.originalMaxCount;\n                possibilities[i].maxCharge +=\n                    possibility.charge * possibility.originalMinCount;\n            }\n        }\n    }\n    for (let i = 0; i < possibilities.length; i++) {\n        if (i < possibilities.length - 1) {\n            let possibility = possibilities[i];\n            let innerPossibility = possibilities[i + 1];\n            possibility.minInnerMass = innerPossibility.minMass;\n            possibility.maxInnerMass = innerPossibility.maxMass;\n            possibility.minInnerCharge = innerPossibility.minCharge;\n            possibility.maxInnerCharge = innerPossibility.maxCharge;\n            if (possibility.minInnerCharge || possibility.maxInnerCharge) {\n                possibility.innerCharge = true;\n            }\n        }\n    }\n    return possibilities;\n}\n//# sourceMappingURL=preprocessRanges.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.msemMatcher = msemMatcher;\nconst mf_utilities_1 = require(\"mf-utilities\");\nconst ml_spectra_processing_1 = require(\"ml-spectra-processing\");\nconst unsaturationMatcher_js_1 = require(\"./unsaturationMatcher.js\");\n/**\n * @typedef {object} MSEMFilterOptions\n * @property {object}         [ionization={ mf: '', em: 0, charge: 0 }] - ionization method\n * @property {boolean}        [forceIonization=false] - If true ignore existing ionizations\n * @property {number}         [precision=1000] - The precision on the experimental mass\n * @property {number}         [targetMass] - Target mass, allows to calculate error and filter results\n * @property {number[]}       [targetMasses] - Target masses: SORTED array of numbers\n * @property {number[]}       [targetIntensities] - Target intensities: SORTED array of numbers\n * @property {number}         [minMW=-Infinity] - Minimal monoisotopic mass\n * @property {number}         [maxMW=+Infinity] - Maximal monoisotopic mass\n * @property {number}         [minEM=-Infinity] - Minimal monoisotopic mass\n * @property {number}         [maxEM=+Infinity] - Maximal monoisotopic mass\n * @property {number}         [minMSEM=-Infinity] - Minimal monoisotopic mass observed by mass\n * @property {number}         [maxMSEM=+Infinity] - Maximal monoisotopic mass observed by mass\n * @property {number}         [minCharge=-Infinity] - Minimal charge\n * @property {number}         [maxCharge=+Infinity] - Maximal charge\n * @property {boolean}        [absoluteCharge=false] - If true, the charge is absolute (so between 0 and +Infinity by default)\n * @property {boolean}        [allowNegativeAtoms=false] - Allow to have negative number of atoms\n * @property {object}         [unsaturation={}]\n * @property {number}         [unsaturation.min=-Infinity] - Minimal unsaturation\n * @property {number}         [unsaturation.max=+Infinity] - Maximal unsaturation\n * @property {boolean}        [unsaturation.onlyInteger=false] - Integer unsaturation\n * @property {boolean}        [unsaturation.onlyNonInteger=false] - Non integer unsaturation\n * @property {boolean}        [atoms] - object of atom:{min, max}\n * @property {Function}       [callback] - a function that contains information about the current MF\n */\n/**\n * @param {object}             [entry={}]\n * @param {MSEMFilterOptions}  [options={}]\n * @return {boolean}\n */\n/**\n * We always recalculate msem\n */\nfunction msemMatcher(entry, options = {}) {\n    const { ionization = { mf: '', em: 0, charge: 0, atoms: {} }, forceIonization = false, precision = 1000, minCharge = Number.MIN_SAFE_INTEGER, maxCharge = Number.MAX_SAFE_INTEGER, absoluteCharge = false, unsaturation = {}, targetMass, // if present we will calculate the errors\n    targetMasses, // if present we will calculate the smallest error\n    targetIntensities, // if present it will be added in the report\n    minEM = -Infinity, maxEM = +Infinity, minMSEM = -Infinity, maxMSEM = +Infinity, minMW = -Infinity, maxMW = +Infinity, allowNegativeAtoms = false, atoms, callback, } = options;\n    if (entry.mw !== undefined && (entry.mw < minMW || entry.mw > maxMW)) {\n        return false;\n    }\n    let msInfo = (0, mf_utilities_1.getMsInfo)(entry, {\n        ionization,\n        forceIonization,\n        targetMass,\n    });\n    let ms = msInfo.ms;\n    if (entry.em !== undefined && (entry.em < minEM || entry.em > maxEM)) {\n        return false;\n    }\n    if (ms.em !== undefined && (ms.em < minMSEM || ms.em > maxMSEM)) {\n        return false;\n    }\n    if (targetMass && Math.abs(ms.ppm) > precision) {\n        return false;\n    }\n    if (ms.charge !== undefined) {\n        let charge = absoluteCharge ? Math.abs(ms.charge) : ms.charge;\n        if (charge < minCharge || charge > maxCharge)\n            return false;\n    }\n    if (unsaturation !== undefined &&\n        entry.unsaturation !== undefined &&\n        !(0, unsaturationMatcher_js_1.unsaturationMatcher)(entry, unsaturation)) {\n        return false;\n    }\n    if (entry.atoms !== undefined && atoms) {\n        // all the atoms of the entry must fit in the range\n        for (let atom in entry.atoms) {\n            if (!atoms[atom])\n                return false;\n            if (entry.atoms[atom] < atoms[atom].min)\n                return false;\n            if (entry.atoms[atom] > atoms[atom].max)\n                return false;\n        }\n    }\n    if (entry.atoms !== undefined && !allowNegativeAtoms) {\n        const ionizationAtoms = (msInfo.ionization && msInfo.ionization.atoms) || {};\n        const atomKeys = new Set(Object.keys(ionizationAtoms).concat(Object.keys(entry.atoms)));\n        for (let atom of atomKeys) {\n            if ((entry.atoms[atom] || 0) + (ionizationAtoms[atom] || 0) < 0) {\n                return false;\n            }\n        }\n    }\n    if (targetMasses && targetMasses.length > 0) {\n        let index = (0, ml_spectra_processing_1.xFindClosestIndex)(targetMasses, ms.em);\n        let closestMass = targetMasses[index];\n        msInfo = (0, mf_utilities_1.getMsInfo)(entry, {\n            ionization,\n            forceIonization,\n            targetMass: closestMass,\n        });\n        msInfo.ms.target = { mass: closestMass };\n        if (targetIntensities) {\n            msInfo.ms.target.intensity = targetIntensities[index];\n        }\n        // need to find the closest targetMasses\n        if (Math.abs(msInfo.ms.ppm) > precision)\n            return false;\n    }\n    if (callback && !callback(entry))\n        return false;\n    return msInfo;\n}\n//# sourceMappingURL=msemMatcher.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TargetMassCache = void 0;\nconst chemical_elements_1 = require(\"chemical-elements\");\n/**\n * returns all the possible neutral mass for a defined experimental (targetMass) mass\n */\nclass TargetMassCache {\n    /**\n     * @param {number} targetMass\n     * @param {Array} possibilities\n     * @param {object} [options={}]\n     * @param {boolean} [options.allowNeutral=false]\n     * @param {number} [options.charge=0]\n     * @param {number} [options.precision=100]\n     * @param {object} [options.filter={}]\n     * @param {number} [options.filter.minCharge=Number.MIN_SAFE_INTEGER]\n     * @param {number} [options.filter.maxCharge=Number.MAX_SAFE_INTEGER]\n     * @returns\n     */\n    constructor(targetMass, possibilities, options = {}) {\n        const { allowNeutral = false, // msem because em in this case !\n        filter = {}, charge = 0, precision = 100, } = options;\n        const { minCharge = Number.MIN_SAFE_INTEGER, maxCharge = Number.MAX_SAFE_INTEGER, } = filter;\n        if (!possibilities || possibilities.length === 0)\n            return;\n        let firstPossibility = possibilities[0];\n        let currentMinCharge = Math.max(minCharge, firstPossibility.minCharge + charge);\n        let currentMaxCharge = Math.min(maxCharge, firstPossibility.maxCharge + charge);\n        this.minCharge = currentMinCharge;\n        this.maxCharge = currentMaxCharge;\n        let size = this.maxCharge - this.minCharge + 1;\n        this.data = [];\n        let minMass = 0;\n        let maxMass = 0;\n        let range = (targetMass * precision) / 1e6;\n        for (let i = 0; i < size; i++) {\n            let currentCharge = i + this.minCharge;\n            if (currentCharge === 0) {\n                if (allowNeutral) {\n                    minMass = targetMass - range;\n                    maxMass = targetMass + range;\n                }\n                else {\n                    minMass = Number.MAX_SAFE_INTEGER;\n                    maxMass = Number.MIN_SAFE_INTEGER;\n                }\n            }\n            else {\n                minMass =\n                    (targetMass - range) * Math.abs(currentCharge) +\n                        chemical_elements_1.ELECTRON_MASS * currentCharge;\n                maxMass =\n                    (targetMass + range) * Math.abs(currentCharge) +\n                        chemical_elements_1.ELECTRON_MASS * currentCharge;\n            }\n            this.data.push({\n                charge: currentCharge,\n                minMass,\n                maxMass,\n            });\n        }\n    }\n    getMinMass(charge) {\n        return this.data[charge - this.minCharge]\n            ? this.data[charge - this.minCharge].minMass\n            : Number.MAX_SAFE_INTEGER;\n    }\n    getMaxMass(charge) {\n        return this.data[charge - this.minCharge]\n            ? this.data[charge - this.minCharge].maxMass\n            : Number.MIN_SAFE_INTEGER;\n    }\n}\nexports.TargetMassCache = TargetMassCache;\n//# sourceMappingURL=TargetMassCache.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.findMFsSync = findMFsSync;\nconst atom_sorter_1 = require(\"atom-sorter\");\nconst mf_matcher_1 = require(\"mf-matcher\");\nconst mf_utilities_1 = require(\"mf-utilities\");\nconst TargetMassCache_1 = require(\"./TargetMassCache\");\n/**\n * @param {number}        targetMass - Monoisotopic mass\n * @param {object}        [options={}]\n * @param {number}        [options.maxIterations=10000000] - Maximum number of iterations\n * @param {boolean}       [options.allowNeutral=true]\n * @param {boolean}       [options.uniqueMFs=true]\n * @param {number}        [options.limit=1000] - Maximum number of results\n * @param {string}        [options.ionizations=''] - string containing a comma separated list of modifications\n * @param {string|{mf:string,min:number,max:number}[]}        [options.ranges='C0-100 H0-100 O0-100 N0-100'] - range of mfs to search\n * @param {number}        [options.precision=100] - Allowed mass range based on precision\n * @param {import('mf-matcher').MSEMFilterOptions}        [options.filter={}]\n * @returns {object}\n */\nfunction findMFsSync(targetMass, options = {}) {\n    const { filter = {}, maxIterations = 1e8, limit = 1000, allowNeutral = true, // if there is no msem we use em !\n    uniqueMFs = false, // if there is no msem we use em !\n    ranges = [\n        { mf: 'C', min: 0, max: 100 },\n        { mf: 'H', min: 0, max: 100 },\n        { mf: 'O', min: 0, max: 100 },\n        { mf: 'N', min: 0, max: 100 },\n    ], } = options;\n    let targetMassCache;\n    const { minCharge = Number.MIN_SAFE_INTEGER, maxCharge = Number.MAX_SAFE_INTEGER, unsaturation = {}, } = filter;\n    let filterUnsaturation = !!unsaturation;\n    // we calculate not the real unsaturation but the one before dividing by 2 + 1\n    let fakeMinUnsaturation = unsaturation.min === undefined\n        ? Number.MIN_SAFE_INTEGER\n        : (unsaturation.min - 1) * 2;\n    let fakeMaxUnsaturation = unsaturation.max === undefined\n        ? Number.MAX_SAFE_INTEGER\n        : (unsaturation.max - 1) * 2;\n    let filterCharge = minCharge !== Number.MIN_SAFE_INTEGER ||\n        maxCharge !== Number.MAX_SAFE_INTEGER;\n    let advancedFilter;\n    if (filter.atoms || filter.callback) {\n        advancedFilter = {\n            atoms: filter.atoms,\n            callback: filter.callback,\n        };\n    }\n    let result = {\n        mfs: [],\n        info: {\n            numberMFEvaluated: 0,\n            numberResults: 0,\n        },\n    };\n    let orderMapping = []; // used to sort the atoms\n    // we need to make the processing for all the ionizations\n    let ionizations = (0, mf_utilities_1.preprocessIonizations)(options.ionizations);\n    for (let ionization of ionizations) {\n        let currentIonization = {\n            currentMonoisotopicMass: ionization.em || 0,\n            currentCharge: ionization.charge,\n            currentUnsaturation: 0, // we don't take into account the unsaturation of the ionization agent\n        };\n        // if (DEBUG) console.log('new ionization', ionization.mf, ionization.em, ionization.charge);\n        // ionization em and charge will be used to set the first atom value\n        let possibilities = (0, mf_utilities_1.preprocessRanges)(ranges);\n        orderMapping = getOrderMapping(possibilities);\n        if (possibilities.length === 0)\n            return { mfs: [] };\n        targetMassCache = new TargetMassCache_1.TargetMassCache(targetMass, possibilities, {\n            ...options,\n            charge: ionization.charge,\n        });\n        let theEnd = false;\n        let maxPosition = possibilities.length;\n        let lastPosition = possibilities.length - 1;\n        let currentPosition = 0;\n        let currentAtom;\n        let previousAtom;\n        let lastPossibility = possibilities[lastPosition];\n        initializePossibilities(possibilities, currentIonization, targetMassCache);\n        //  if (DEBUG) console.log('possibilities', possibilities.map((a) => `${a.mf + a.originalMinCount}-${a.originalMaxCount}`));\n        let isValid = false; // designed so that the first time it is not a valid solution\n        while (!theEnd) {\n            if (result.info.numberMFEvaluated++ > maxIterations) {\n                throw new Error(`Iteration number is over the current maximum of: ${maxIterations}`);\n            }\n            if (filterUnsaturation) {\n                let unsaturationValue = lastPossibility.currentUnsaturation;\n                let isOdd = Math.abs(unsaturationValue % 2);\n                if ((unsaturation.onlyInteger && isOdd === 1) ||\n                    (unsaturation.onlyNonInteger && isOdd === 0) ||\n                    fakeMinUnsaturation > unsaturationValue ||\n                    fakeMaxUnsaturation < unsaturationValue) {\n                    isValid = false;\n                }\n            }\n            if (filterCharge &&\n                (lastPossibility.currentCharge < minCharge ||\n                    lastPossibility.currentCharge > maxCharge)) {\n                isValid = false;\n            }\n            if (isValid) {\n                let minMass = targetMassCache.getMinMass(lastPossibility.currentCharge);\n                let maxMass = targetMassCache.getMaxMass(lastPossibility.currentCharge);\n                if (lastPossibility.currentMonoisotopicMass < minMass ||\n                    lastPossibility.currentMonoisotopicMass > maxMass) {\n                    isValid = false;\n                }\n            }\n            if (isValid) {\n                result.info.numberResults++;\n                let newResult = getResult(possibilities, targetMass, allowNeutral, ionization, orderMapping);\n                if (advancedFilter) {\n                    isValid = (0, mf_matcher_1.msemMatcher)(newResult, advancedFilter) !== false;\n                }\n                if (isValid) {\n                    result.mfs.push(newResult);\n                    if (result.mfs.length > 2 * limit) {\n                        if (uniqueMFs)\n                            ensureUniqueMF(result);\n                        result.mfs.sort((a, b) => Math.abs(a.ms.ppm) - Math.abs(b.ms.ppm));\n                        result.mfs.length = limit;\n                    }\n                }\n            }\n            isValid = true;\n            // we need to set up all the arrays if possible\n            while (currentPosition < maxPosition && currentPosition >= 0) {\n                currentAtom = possibilities[currentPosition];\n                previousAtom =\n                    currentPosition === 0\n                        ? currentIonization\n                        : possibilities[currentPosition - 1];\n                if (currentAtom.currentCount < currentAtom.currentMaxCount) {\n                    currentAtom.currentCount++;\n                    updateCurrentAtom(currentAtom, previousAtom);\n                    if (currentPosition < lastPosition) {\n                        currentPosition++;\n                        setCurrentMinMax(possibilities[currentPosition], possibilities[currentPosition - 1], targetMassCache);\n                    }\n                    else {\n                        break;\n                    }\n                }\n                else {\n                    currentPosition--;\n                }\n            }\n            if (currentPosition < 0) {\n                theEnd = true;\n            }\n        }\n    }\n    if (uniqueMFs)\n        ensureUniqueMF(result);\n    result.mfs.sort((a, b) => Math.abs(a.ms.ppm) - Math.abs(b.ms.ppm));\n    if (result.mfs.length > limit) {\n        result.mfs.length = limit;\n    }\n    for (const mf of result.mfs) {\n        delete mf.currentCounts;\n    }\n    return result;\n}\n/**\n * Ensure that we have only once the same MF\n * In order to improve the speed we just consider the em\n * @param {object} result\n */\nfunction ensureUniqueMF(result) {\n    result.mfs.sort((a, b) => a.em - b.em);\n    let previousEM = 0;\n    let bestCounts = [];\n    const mfs = [];\n    next: for (let current of result.mfs) {\n        if (current.em - previousEM > 1e-8) {\n            previousEM = current.em;\n            bestCounts = current.currentCounts;\n            mfs.push(current);\n        }\n        else {\n            for (let i = 0; i < current.currentCounts.length; i++) {\n                // better priority ???\n                if (current.currentCounts[i] > bestCounts[i]) {\n                    mfs.pop();\n                    mfs.push(current);\n                    bestCounts = current.currentCounts;\n                }\n                else if (current.currentCounts[i] < bestCounts[i]) {\n                    continue next;\n                }\n            }\n        }\n    }\n    result.mfs = mfs;\n}\nfunction updateCurrentAtom(currentAtom, previousAtom) {\n    currentAtom.currentMonoisotopicMass =\n        previousAtom.currentMonoisotopicMass +\n            currentAtom.em * currentAtom.currentCount;\n    currentAtom.currentCharge =\n        previousAtom.currentCharge + currentAtom.charge * currentAtom.currentCount;\n    currentAtom.currentUnsaturation =\n        previousAtom.currentUnsaturation +\n            currentAtom.unsaturation * currentAtom.currentCount;\n}\nfunction getResult(possibilities, targetMass, allowNeutralMolecules, ionization, orderMapping) {\n    let lastPossibility = possibilities.at(-1);\n    let result = {\n        em: lastPossibility.currentMonoisotopicMass - ionization.em,\n        unsaturation: lastPossibility.currentUnsaturation,\n        mf: '',\n        charge: lastPossibility.currentCharge - ionization.charge,\n        ionization,\n        atoms: {},\n        groups: {},\n        currentCounts: possibilities.map((possibility) => possibility.currentCount),\n    };\n    // we check that the first time we meet the ionization group it does not end\n    // in the final result\n    for (let i = 0; i < possibilities.length; i++) {\n        let possibility = possibilities[orderMapping[i]];\n        if (possibility.currentCount !== 0) {\n            if (possibility.isGroup) {\n                if (possibility.currentCount === 1) {\n                    result.mf += `${possibility.mf}`;\n                }\n                else if (possibility.mf.match(/^\\([^()]*\\)$/)) {\n                    result.mf += `${possibility.mf}${possibility.currentCount}`;\n                }\n                else {\n                    result.mf += `(${possibility.mf})${possibility.currentCount}`;\n                }\n                if (result.groups[possibility.mf]) {\n                    result.groups[possibility.mf] += possibility.currentCount;\n                }\n                else {\n                    result.groups[possibility.mf] = possibility.currentCount;\n                }\n            }\n            else {\n                result.mf += possibility.mf;\n                if (possibility.currentCount !== 1) {\n                    result.mf += possibility.currentCount;\n                }\n            }\n            for (let atom in possibility.atoms) {\n                if (result.atoms[atom]) {\n                    result.atoms[atom] +=\n                        possibility.atoms[atom] * possibility.currentCount;\n                }\n                else {\n                    result.atoms[atom] =\n                        possibility.atoms[atom] * possibility.currentCount;\n                }\n            }\n        }\n    }\n    result.unsaturation = (result.unsaturation + Math.abs(result.charge)) / 2 + 1;\n    result.ms = (0, mf_utilities_1.getMsInfo)(result, { targetMass, allowNeutralMolecules }).ms;\n    return result;\n}\nfunction setCurrentMinMax(currentAtom, previousAtom, targetMassCache) {\n    // the current min max can only be optimize if the charge will not change anymore\n    // and the currentAtom.em >= 0\n    if (currentAtom.innerCharge === true ||\n        currentAtom.charge !== 0 ||\n        currentAtom.em < 0) {\n        currentAtom.currentMinCount = currentAtom.originalMinCount;\n        currentAtom.currentMaxCount = currentAtom.originalMaxCount;\n        currentAtom.currentCount = currentAtom.currentMinCount - 1;\n    }\n    else {\n        // no more change of charge, we can optimize\n        let currentMass = previousAtom !== undefined ? previousAtom.currentMonoisotopicMass : 0;\n        let currentCharge = previousAtom !== undefined ? previousAtom.currentCharge : 0;\n        currentAtom.currentMinCount = Math.max(Math.floor((targetMassCache.getMinMass(currentCharge) -\n            currentMass -\n            currentAtom.maxInnerMass) /\n            currentAtom.em), currentAtom.originalMinCount);\n        currentAtom.currentMaxCount = Math.min(Math.floor((targetMassCache.getMaxMass(currentCharge) -\n            currentMass -\n            currentAtom.minInnerMass) /\n            currentAtom.em), currentAtom.originalMaxCount);\n        currentAtom.currentCount = currentAtom.currentMinCount - 1;\n    }\n}\nfunction initializePossibilities(possibilities, currentIonization, targetMassCache) {\n    for (let i = 0; i < possibilities.length; i++) {\n        if (i === 0) {\n            updateCurrentAtom(possibilities[i], currentIonization);\n            setCurrentMinMax(possibilities[i], currentIonization, targetMassCache);\n        }\n        else {\n            updateCurrentAtom(possibilities[i], possibilities[i - 1]);\n        }\n    }\n}\n// eslint-disable-next-line no-unused-vars\nfunction possibilitiesToString(possibilities) {\n    return possibilities.map((a) => [\n        `mf:${a.mf}`,\n        `current:${a.currentCount}`,\n        `min:${a.currentMinCount}`,\n        `max:${a.currentMaxCount}`,\n        `charge:${a.currentCharge}`,\n    ]);\n}\nfunction getOrderMapping(possibilities) {\n    let mapping = possibilities.map((p, i) => ({ atom: p.mf, index: i }));\n    mapping.sort((a, b) => {\n        return (0, atom_sorter_1.atomSorter)(a.atom, b.atom);\n    });\n    return mapping.map((a) => a.index);\n}\n//# sourceMappingURL=findMFsSync.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.findMFs = findMFs;\nconst findMFsSync_1 = require(\"./findMFsSync\");\n/** @typedef {import('./types').MFResult} MFResult */\n/** @typedef {import('./types').MFFinderOptions} MFFinderOptions */\n/**\n * @param {number} targetMass - Monoisotopic mass\n * @param {MFFinderOptions} [options={}]\n * @returns {Promise<MFResult[]>}\n */\nasync function findMFs(targetMass, options = {}) {\n    return (0, findMFsSync_1.findMFsSync)(targetMass, options);\n}\n//# sourceMappingURL=findMFs.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mfIncluded = mfIncluded;\nconst mf_parser_1 = require(\"mf-parser\");\nconst findMFsSync_js_1 = require(\"./findMFsSync.js\");\n/**\n * @param {string}        mf - the molecular formula to check\n * @param {string}        range - the range of MF to explore\n * @param {object}        [options={}]\n * @param {number}        [options.maxIterations=10000000] - Maximum number of iterations\n * @param {boolean}       [options.allowNeutral=true]\n * @param {string}        [options.ionizations=''] - string containing a comma separated list of modifications\n * @param {object}        [options.filter={}]\n * @param {number}        [options.filter.minCharge=-Infinity] - Minimal charge\n * @param {number}        [options.filter.maxCharge=+Infinity] - Maximal charge\n * @param {boolean}       [options.filter.absoluteCharge=false] - If true, the charge is absolute (so between 0 and +Infinity by default)\n * @param {object}        [options.filter.unsaturation={}]\n * @param {number}        [options.filter.unsaturation.min=-Infinity] - Minimal unsaturation\n * @param {number}        [options.filter.unsaturation.max=+Infinity] - Maximal unsaturation\n * @param {boolean}       [options.filter.unsaturation.onlyInteger=false] - Integer unsaturation\n * @param {boolean}       [options.filter.unsaturation.onlyNonInteger=false] - Non integer unsaturation\n * @param {object}        [options.filter.atoms] - object of atom:{min, max}\n * @param {function}      [options.filter.callback] - a function to filter the MF\n * @returns {boolean}\n */\nfunction mfIncluded(mf, range, options = {}) {\n    let targetEM = new mf_parser_1.MF(mf).getInfo().monoisotopicMass;\n    let results = (0, findMFsSync_js_1.findMFsSync)(targetEM, {\n        allowNeutral: true,\n        ...options,\n        ranges: range,\n        precision: 0.0000001,\n        limit: 1,\n    });\n    return results.mfs.length > 0;\n}\n//# sourceMappingURL=mfIncluded.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromMonoisotopicMass = fromMonoisotopicMass;\nconst mf_finder_1 = require(\"mf-finder\");\n/**\n * Generates a database 'monoisotopic' from a monoisotopic mass and various options\n * @param {number|string|array}    masses - Monoisotopic mass\n * @param {object}    [options={}]\n * @param {number}    [options.maxIterations=10000000] - Maximum number of iterations\n * @param {function}  [options.onStep] - Callback to do after each step\n * @param {boolean}   [options.allowNeutral=true]\n * @param {boolean}   [options.uniqueMFs=true]\n * @param {number}    [options.limit=1000] - Maximum number of results\n * @param {string}    [options.ionizations=''] - string containing a comma separated list of modifications\n * @param {string}    [options.ranges='C0-100 H0-100 O0-100 N0-100'] - range of mfs to search\n * @param {number}    [options.precision=100] - Allowed mass range based on precision\n * @param {object}    [options.filter={}]\n * @param {number}    [options.filter.minCharge=-Infinity] - Minimal charge\n * @param {number}    [options.filter.maxCharge=+Infinity] - Maximal charge\n * @param {boolean}   [options.filter.absoluteCharge=false] - If true, the charge is absolute (so between 0 and +Infinity by default)\n * @param {object}    [options.filter.unsaturation={}]\n * @param {number}    [options.filter.unsaturation.min=-Infinity] - Minimal unsaturation\n * @param {number}    [options.filter.unsaturation.max=+Infinity] - Maximal unsaturation\n * @param {boolean}    [options.filter.unsaturation.onlyInteger=false] - Integer unsaturation\n * @param {boolean}    [options.filter.unsaturation.onlyNonInteger=false] - Non integer unsaturation\n * @param {object}    [options.filter.atoms] - object of atom:{min, max}\n * @param {function}  [options.filter.callback] - a function to filter the MF\n * @returns {Promise}\n */\nasync function fromMonoisotopicMass(masses, options = {}) {\n    if (typeof masses === 'string') {\n        masses = masses.split(/[\\t\\n\\r ,;]/).map(Number);\n    }\n    if (typeof masses === 'number') {\n        masses = [masses];\n    }\n    let results = [];\n    for (let mass of masses) {\n        results.push(await (0, mf_finder_1.findMFs)(mass, options));\n    }\n    return {\n        mfs: results.flatMap((entry) => entry.mfs),\n        info: {\n            numberMFEvaluated: results.reduce((sum, current) => sum + current.info.numberMFEvaluated, 0),\n            numberResults: results.reduce((sum, current) => sum + current.info.numberResults, 0),\n        },\n    };\n}\n//# sourceMappingURL=fromMonoisotopicMass.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getPeaks = getPeaks;\nconst ml_spectra_processing_1 = require(\"ml-spectra-processing\");\n/**\n * Filter the array of peaks\n * @param {array} peaks - array of all the peaks\n * @param {object} [options={}]\n * @param {number} [options.from] - min X value of the window to consider\n * @param {number} [options.to] - max X value of the window to consider\n * @param {number} [options.threshold=0.01] - minimal intensity compare to base peak\n * @param {number} [options.limit=undefined] - maximal number of peaks (based on intensity)\n * @param {number} [options.sumValue] // if sumValue is defined, maxValue is ignored\n * @returns {array} - copy of peaks with 'close' annotation\n */\nfunction getPeaks(peaks, options = {}) {\n    const { from = (0, ml_spectra_processing_1.xyObjectMinXPoint)(peaks).x, to = (0, ml_spectra_processing_1.xyObjectMaxXPoint)(peaks).x, threshold = 0.01, limit, sumValue, } = options;\n    let maxY = Number.MIN_SAFE_INTEGER;\n    for (let peak of peaks) {\n        if (peak.y > maxY)\n            maxY = peak.y;\n    }\n    let minY = maxY * threshold;\n    peaks = peaks.filter((peak) => peak.x >= from && peak.x <= to && peak.y >= minY);\n    if (limit && peaks.length > limit) {\n        peaks.sort((a, b) => b.y - a.y);\n        peaks = peaks.slice(0, limit);\n    }\n    if (sumValue) {\n        peaks = structuredClone(peaks);\n        const currentSum = (0, ml_spectra_processing_1.xyObjectSumY)(peaks);\n        const ratio = sumValue / currentSum;\n        for (const peak of peaks) {\n            peak.y *= ratio;\n        }\n    }\n    return peaks.sort((a, b) => a.x - b.x);\n}\n//# sourceMappingURL=getPeaks.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getFragmentPeaks = getFragmentPeaks;\nconst mf_parser_1 = require(\"mf-parser\");\nconst fromMonoisotopicMass_1 = require(\"./from/fromMonoisotopicMass\");\nconst getPeaks_js_1 = require(\"./getPeaks.js\");\n/**\n * Filter the array of peaks\n * @param {array} peaks - array of all the peaks\n * @param {string} mf - Molecular formula of the parent molecule\n * @param {object} [options={}]\n * @param {number} [options.from] - min X value of the window to consider\n * @param {number} [options.to] - max X value of the window to consider\n * @param {number} [options.threshold=0.01] - minimal intensity compare to base peak\n * @param {number} [options.limit=undefined] - maximal number of peaks (based on intensity)\n * @param {string} [options.ionizations]\n * @param {number} [options.precision]\n * @returns {array} - copy of peaks with 'close' annotation\n */\nasync function getFragmentPeaks(peaks, mf, options = {}) {\n    const { ionizations = '', precision } = options;\n    const mfInfo = new mf_parser_1.MF(mf).getInfo();\n    const ranges = Object.keys(mfInfo.atoms)\n        .map((key) => `${key}0-${mfInfo.atoms[key]}`)\n        .join(' ');\n    peaks = (0, getPeaks_js_1.getPeaks)(peaks, options);\n    for (let peak of peaks) {\n        const { mfs } = await (0, fromMonoisotopicMass_1.fromMonoisotopicMass)(peak.x, {\n            precision,\n            ranges,\n            ionizations,\n        });\n        peak.mfs = mfs;\n    }\n    peaks = peaks.filter((peak) => peak.mfs.length > 0);\n    return peaks;\n}\n//# sourceMappingURL=getFragmentPeaks.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getMassRemainder = getMassRemainder;\nconst ml_spectra_processing_1 = require(\"ml-spectra-processing\");\n/**\n * Remove an integer number of time the specifiedd monoisotopic mass.\n * Mass remainder analysis (MARA): https://doi.org/10.1021/acs.analchem.7b04730\n * @param {object} spectrum\n * @param {number} mass\n * @param {object} [options={}]\n * @param {number} [options.delta=0.001]\n */\nfunction getMassRemainder(spectrum, mass, options = {}) {\n    const { delta = 0.001 } = options;\n    const x = spectrum.x.slice();\n    const y = spectrum.y;\n    for (let i = 0; i < x.length; i++) {\n        const factor = Math.floor(x[i] / mass);\n        x[i] = x[i] - factor * mass;\n    }\n    // we sort and join\n    return (0, ml_spectra_processing_1.xyJoinX)((0, ml_spectra_processing_1.xySortX)({ x, y }), { delta });\n}\n//# sourceMappingURL=getMassRemainder.js.map","export function calculateOverlapFromDiff(diffs) {\n    if (diffs[1].length === 0)\n        return 0;\n    let sumPos = 0;\n    for (let i = 0; i < diffs[1].length; i++) {\n        sumPos += Math.abs(diffs[1][i]);\n    }\n    return 1 - sumPos;\n}\n//# sourceMappingURL=calculateOverlapFromDiff.js.map","/**\n * This code requires the use of an array like  [[x1,y1],[x2,y2], ...]\n * If it is not the right format, we will just convert it\n * Otherwise we return the correct format\n * @param {Peaks} peaks\n * @returns [number[], number[]]\n */\nexport function checkPeaks(peaks) {\n    // if it is already a 2D array of points, we just return them\n    if (Array.isArray(peaks) && Array.isArray(peaks[0]) && peaks.length === 2) {\n        return peaks;\n    }\n    if (Array.isArray(peaks.x) && Array.isArray(peaks.y)) {\n        return [peaks.x, peaks.y];\n    }\n    const x = new Array(peaks.length);\n    const y = new Array(peaks.length);\n    for (let i = 0; i < peaks.length; i++) {\n        x[i] = peaks[i][0];\n        y[i] = peaks[i][1];\n    }\n    return [x, y];\n}\n//# sourceMappingURL=checkPeaks.js.map","export function extract(array, from, to) {\n    const newArray = [[], []];\n    let j = 0;\n    const length = array[0] ? array[0].length : 0;\n    for (let i = 0; i < length; i++) {\n        if ((!from || array[0][i] >= from) && (!to || array[0][i] <= to)) {\n            newArray[0][j] = array[0][i];\n            newArray[1][j] = array[1][i];\n            j++;\n        }\n    }\n    return newArray;\n}\n//# sourceMappingURL=extract.js.map","// returns an new array based on array1 where there is a peak of array2 at a distance under width/2\nexport function getCommonArray(array1, array2, width) {\n    const newArray = [[], []];\n    let pos2 = 0;\n    width /= 2;\n    let j = 0;\n    const array1Length = array1[0] ? array1[0].length : 0;\n    const array2Length = array2[0] ? array2[0].length : 0;\n    for (let i = 0; i < array1Length; i++) {\n        while (pos2 < array2Length && array1[0][i] > array2[0][pos2] + width) {\n            pos2++;\n        }\n        if (pos2 < array2Length && array1[0][i] > array2[0][pos2] - width) {\n            newArray[0][j] = array1[0][i];\n            newArray[1][j] = array1[1][i];\n            j++;\n        }\n    }\n    return newArray;\n}\n//# sourceMappingURL=getCommonArray.js.map","'use strict';\n\nfunction compareNumbers(a, b) {\n    return a - b;\n}\n\n/**\n * Computes the sum of the given values\n * @param {Array} values\n * @returns {number}\n */\nexports.sum = function sum(values) {\n    var sum = 0;\n    for (var i = 0; i < values.length; i++) {\n        sum += values[i];\n    }\n    return sum;\n};\n\n/**\n * Computes the maximum of the given values\n * @param {Array} values\n * @returns {number}\n */\nexports.max = function max(values) {\n    var max = values[0];\n    var l = values.length;\n    for (var i = 1; i < l; i++) {\n        if (values[i] > max) max = values[i];\n    }\n    return max;\n};\n\n/**\n * Computes the minimum of the given values\n * @param {Array} values\n * @returns {number}\n */\nexports.min = function min(values) {\n    var min = values[0];\n    var l = values.length;\n    for (var i = 1; i < l; i++) {\n        if (values[i] < min) min = values[i];\n    }\n    return min;\n};\n\n/**\n * Computes the min and max of the given values\n * @param {Array} values\n * @returns {{min: number, max: number}}\n */\nexports.minMax = function minMax(values) {\n    var min = values[0];\n    var max = values[0];\n    var l = values.length;\n    for (var i = 1; i < l; i++) {\n        if (values[i] < min) min = values[i];\n        if (values[i] > max) max = values[i];\n    }\n    return {\n        min: min,\n        max: max\n    };\n};\n\n/**\n * Computes the arithmetic mean of the given values\n * @param {Array} values\n * @returns {number}\n */\nexports.arithmeticMean = function arithmeticMean(values) {\n    var sum = 0;\n    var l = values.length;\n    for (var i = 0; i < l; i++) {\n        sum += values[i];\n    }\n    return sum / l;\n};\n\n/**\n * {@link arithmeticMean}\n */\nexports.mean = exports.arithmeticMean;\n\n/**\n * Computes the geometric mean of the given values\n * @param {Array} values\n * @returns {number}\n */\nexports.geometricMean = function geometricMean(values) {\n    var mul = 1;\n    var l = values.length;\n    for (var i = 0; i < l; i++) {\n        mul *= values[i];\n    }\n    return Math.pow(mul, 1 / l);\n};\n\n/**\n * Computes the mean of the log of the given values\n * If the return value is exponentiated, it gives the same result as the\n * geometric mean.\n * @param {Array} values\n * @returns {number}\n */\nexports.logMean = function logMean(values) {\n    var lnsum = 0;\n    var l = values.length;\n    for (var i = 0; i < l; i++) {\n        lnsum += Math.log(values[i]);\n    }\n    return lnsum / l;\n};\n\n/**\n * Computes the weighted grand mean for a list of means and sample sizes\n * @param {Array} means - Mean values for each set of samples\n * @param {Array} samples - Number of original values for each set of samples\n * @returns {number}\n */\nexports.grandMean = function grandMean(means, samples) {\n    var sum = 0;\n    var n = 0;\n    var l = means.length;\n    for (var i = 0; i < l; i++) {\n        sum += samples[i] * means[i];\n        n += samples[i];\n    }\n    return sum / n;\n};\n\n/**\n * Computes the truncated mean of the given values using a given percentage\n * @param {Array} values\n * @param {number} percent - The percentage of values to keep (range: [0,1])\n * @param {boolean} [alreadySorted=false]\n * @returns {number}\n */\nexports.truncatedMean = function truncatedMean(values, percent, alreadySorted) {\n    if (alreadySorted === undefined) alreadySorted = false;\n    if (!alreadySorted) {\n        values = [].concat(values).sort(compareNumbers);\n    }\n    var l = values.length;\n    var k = Math.floor(l * percent);\n    var sum = 0;\n    for (var i = k; i < (l - k); i++) {\n        sum += values[i];\n    }\n    return sum / (l - 2 * k);\n};\n\n/**\n * Computes the harmonic mean of the given values\n * @param {Array} values\n * @returns {number}\n */\nexports.harmonicMean = function harmonicMean(values) {\n    var sum = 0;\n    var l = values.length;\n    for (var i = 0; i < l; i++) {\n        if (values[i] === 0) {\n            throw new RangeError('value at index ' + i + 'is zero');\n        }\n        sum += 1 / values[i];\n    }\n    return l / sum;\n};\n\n/**\n * Computes the contraharmonic mean of the given values\n * @param {Array} values\n * @returns {number}\n */\nexports.contraHarmonicMean = function contraHarmonicMean(values) {\n    var r1 = 0;\n    var r2 = 0;\n    var l = values.length;\n    for (var i = 0; i < l; i++) {\n        r1 += values[i] * values[i];\n        r2 += values[i];\n    }\n    if (r2 < 0) {\n        throw new RangeError('sum of values is negative');\n    }\n    return r1 / r2;\n};\n\n/**\n * Computes the median of the given values\n * @param {Array} values\n * @param {boolean} [alreadySorted=false]\n * @returns {number}\n */\nexports.median = function median(values, alreadySorted) {\n    if (alreadySorted === undefined) alreadySorted = false;\n    if (!alreadySorted) {\n        values = [].concat(values).sort(compareNumbers);\n    }\n    var l = values.length;\n    var half = Math.floor(l / 2);\n    if (l % 2 === 0) {\n        return (values[half - 1] + values[half]) * 0.5;\n    } else {\n        return values[half];\n    }\n};\n\n/**\n * Computes the variance of the given values\n * @param {Array} values\n * @param {boolean} [unbiased=true] - if true, divide by (n-1); if false, divide by n.\n * @returns {number}\n */\nexports.variance = function variance(values, unbiased) {\n    if (unbiased === undefined) unbiased = true;\n    var theMean = exports.mean(values);\n    var theVariance = 0;\n    var l = values.length;\n\n    for (var i = 0; i < l; i++) {\n        var x = values[i] - theMean;\n        theVariance += x * x;\n    }\n\n    if (unbiased) {\n        return theVariance / (l - 1);\n    } else {\n        return theVariance / l;\n    }\n};\n\n/**\n * Computes the standard deviation of the given values\n * @param {Array} values\n * @param {boolean} [unbiased=true] - if true, divide by (n-1); if false, divide by n.\n * @returns {number}\n */\nexports.standardDeviation = function standardDeviation(values, unbiased) {\n    return Math.sqrt(exports.variance(values, unbiased));\n};\n\nexports.standardError = function standardError(values) {\n    return exports.standardDeviation(values) / Math.sqrt(values.length);\n};\n\n/**\n * IEEE Transactions on biomedical engineering, vol. 52, no. 1, january 2005, p. 76-\n * Calculate the standard deviation via the Median of the absolute deviation\n *  The formula for the standard deviation only holds for Gaussian random variables.\n * @returns {{mean: number, stdev: number}}\n */\nexports.robustMeanAndStdev = function robustMeanAndStdev(y) {\n    var mean = 0, stdev = 0;\n    var length = y.length, i = 0;\n    for (i = 0; i < length; i++) {\n        mean += y[i];\n    }\n    mean /= length;\n    var averageDeviations = new Array(length);\n    for (i = 0; i < length; i++)\n        averageDeviations[i] = Math.abs(y[i] - mean);\n    averageDeviations.sort(compareNumbers);\n    if (length % 2 === 1) {\n        stdev = averageDeviations[(length - 1) / 2] / 0.6745;\n    } else {\n        stdev = 0.5 * (averageDeviations[length / 2] + averageDeviations[length / 2 - 1]) / 0.6745;\n    }\n\n    return {\n        mean: mean,\n        stdev: stdev\n    };\n};\n\nexports.quartiles = function quartiles(values, alreadySorted) {\n    if (typeof (alreadySorted) === 'undefined') alreadySorted = false;\n    if (!alreadySorted) {\n        values = [].concat(values).sort(compareNumbers);\n    }\n\n    var quart = values.length / 4;\n    var q1 = values[Math.ceil(quart) - 1];\n    var q2 = exports.median(values, true);\n    var q3 = values[Math.ceil(quart * 3) - 1];\n\n    return {q1: q1, q2: q2, q3: q3};\n};\n\nexports.pooledStandardDeviation = function pooledStandardDeviation(samples, unbiased) {\n    return Math.sqrt(exports.pooledVariance(samples, unbiased));\n};\n\nexports.pooledVariance = function pooledVariance(samples, unbiased) {\n    if (typeof (unbiased) === 'undefined') unbiased = true;\n    var sum = 0;\n    var length = 0, l = samples.length;\n    for (var i = 0; i < l; i++) {\n        var values = samples[i];\n        var vari = exports.variance(values);\n\n        sum += (values.length - 1) * vari;\n\n        if (unbiased)\n            length += values.length - 1;\n        else\n            length += values.length;\n    }\n    return sum / length;\n};\n\nexports.mode = function mode(values) {\n    var l = values.length,\n        itemCount = new Array(l),\n        i;\n    for (i = 0; i < l; i++) {\n        itemCount[i] = 0;\n    }\n    var itemArray = new Array(l);\n    var count = 0;\n\n    for (i = 0; i < l; i++) {\n        var index = itemArray.indexOf(values[i]);\n        if (index >= 0)\n            itemCount[index]++;\n        else {\n            itemArray[count] = values[i];\n            itemCount[count] = 1;\n            count++;\n        }\n    }\n\n    var maxValue = 0, maxIndex = 0;\n    for (i = 0; i < count; i++) {\n        if (itemCount[i] > maxValue) {\n            maxValue = itemCount[i];\n            maxIndex = i;\n        }\n    }\n\n    return itemArray[maxIndex];\n};\n\nexports.covariance = function covariance(vector1, vector2, unbiased) {\n    if (typeof (unbiased) === 'undefined') unbiased = true;\n    var mean1 = exports.mean(vector1);\n    var mean2 = exports.mean(vector2);\n\n    if (vector1.length !== vector2.length)\n        throw 'Vectors do not have the same dimensions';\n\n    var cov = 0, l = vector1.length;\n    for (var i = 0; i < l; i++) {\n        var x = vector1[i] - mean1;\n        var y = vector2[i] - mean2;\n        cov += x * y;\n    }\n\n    if (unbiased)\n        return cov / (l - 1);\n    else\n        return cov / l;\n};\n\nexports.skewness = function skewness(values, unbiased) {\n    if (typeof (unbiased) === 'undefined') unbiased = true;\n    var theMean = exports.mean(values);\n\n    var s2 = 0, s3 = 0, l = values.length;\n    for (var i = 0; i < l; i++) {\n        var dev = values[i] - theMean;\n        s2 += dev * dev;\n        s3 += dev * dev * dev;\n    }\n    var m2 = s2 / l;\n    var m3 = s3 / l;\n\n    var g = m3 / (Math.pow(m2, 3 / 2.0));\n    if (unbiased) {\n        var a = Math.sqrt(l * (l - 1));\n        var b = l - 2;\n        return (a / b) * g;\n    } else {\n        return g;\n    }\n};\n\nexports.kurtosis = function kurtosis(values, unbiased) {\n    if (typeof (unbiased) === 'undefined') unbiased = true;\n    var theMean = exports.mean(values);\n    var n = values.length, s2 = 0, s4 = 0;\n\n    for (var i = 0; i < n; i++) {\n        var dev = values[i] - theMean;\n        s2 += dev * dev;\n        s4 += dev * dev * dev * dev;\n    }\n    var m2 = s2 / n;\n    var m4 = s4 / n;\n\n    if (unbiased) {\n        var v = s2 / (n - 1);\n        var a = (n * (n + 1)) / ((n - 1) * (n - 2) * (n - 3));\n        var b = s4 / (v * v);\n        var c = ((n - 1) * (n - 1)) / ((n - 2) * (n - 3));\n\n        return a * b - 3 * c;\n    } else {\n        return m4 / (m2 * m2) - 3;\n    }\n};\n\nexports.entropy = function entropy(values, eps) {\n    if (typeof (eps) === 'undefined') eps = 0;\n    var sum = 0, l = values.length;\n    for (var i = 0; i < l; i++)\n        sum += values[i] * Math.log(values[i] + eps);\n    return -sum;\n};\n\nexports.weightedMean = function weightedMean(values, weights) {\n    var sum = 0, l = values.length;\n    for (var i = 0; i < l; i++)\n        sum += values[i] * weights[i];\n    return sum;\n};\n\nexports.weightedStandardDeviation = function weightedStandardDeviation(values, weights) {\n    return Math.sqrt(exports.weightedVariance(values, weights));\n};\n\nexports.weightedVariance = function weightedVariance(values, weights) {\n    var theMean = exports.weightedMean(values, weights);\n    var vari = 0, l = values.length;\n    var a = 0, b = 0;\n\n    for (var i = 0; i < l; i++) {\n        var z = values[i] - theMean;\n        var w = weights[i];\n\n        vari += w * (z * z);\n        b += w;\n        a += w * w;\n    }\n\n    return vari * (b / (b * b - a));\n};\n\nexports.center = function center(values, inPlace) {\n    if (typeof (inPlace) === 'undefined') inPlace = false;\n\n    var result = values;\n    if (!inPlace)\n        result = [].concat(values);\n\n    var theMean = exports.mean(result), l = result.length;\n    for (var i = 0; i < l; i++)\n        result[i] -= theMean;\n};\n\nexports.standardize = function standardize(values, standardDev, inPlace) {\n    if (typeof (standardDev) === 'undefined') standardDev = exports.standardDeviation(values);\n    if (typeof (inPlace) === 'undefined') inPlace = false;\n    var l = values.length;\n    var result = inPlace ? values : new Array(l);\n    for (var i = 0; i < l; i++)\n        result[i] = values[i] / standardDev;\n    return result;\n};\n\nexports.cumulativeSum = function cumulativeSum(array) {\n    var l = array.length;\n    var result = new Array(l);\n    result[0] = array[0];\n    for (var i = 1; i < l; i++)\n        result[i] = result[i - 1] + array[i];\n    return result;\n};\n","'use strict';\n\nexports.array = require('./array');\nexports.matrix = require('./matrix');\n","import { array as StatArray } from 'ml-stat';\nexport function normalize(array) {\n    const min = StatArray.min(array[1]);\n    const max = StatArray.max(array[1]);\n    const sum = StatArray.sum(array[1]);\n    const length = array[1] ? array[1].length : 0;\n    if (sum !== 0) {\n        for (let i = 0; i < length; i++) {\n            array[1][i] /= sum;\n        }\n    }\n    return {\n        sum,\n        min,\n        max,\n    };\n}\n//# sourceMappingURL=normalize.js.map","import { extract } from './extract';\nimport { getCommonArray } from './getCommonArray';\nimport { normalize } from './normalize';\nimport { COMMON_SECOND, COMMON_FIRST } from './index';\n// this method will systematically take care of both array\nexport function commonExtractAndNormalize(array1, array2, width, from, to, common) {\n    if (!Array.isArray(array1) || !Array.isArray(array2)) {\n        return {\n            info: undefined,\n            data: undefined,\n        };\n    }\n    const extract1 = extract(array1, from, to);\n    const extract2 = extract(array2, from, to);\n    let common1, common2, info1, info2;\n    if (common & COMMON_SECOND) {\n        common1 = getCommonArray(extract1, extract2, width);\n        info1 = normalize(common1);\n    }\n    else {\n        common1 = extract1;\n        info1 = normalize(common1);\n    }\n    if (common & COMMON_FIRST) {\n        common2 = getCommonArray(extract2, extract1, width);\n        info2 = normalize(common2);\n    }\n    else {\n        common2 = extract2;\n        info2 = normalize(common2);\n    }\n    return {\n        info1,\n        info2,\n        data1: common1,\n        data2: common2,\n    };\n}\n//# sourceMappingURL=commonExtractAndNormalize.js.map","import { extract } from './extract';\nimport { normalize } from './normalize';\nexport function extractAndNormalize(array, from, to) {\n    if (!Array.isArray(array)) {\n        return {\n            info: undefined,\n            data: undefined,\n        };\n    }\n    const newArray = extract(array, from, to);\n    const info = normalize(newArray);\n    return {\n        info,\n        data: newArray,\n    };\n}\n//# sourceMappingURL=extractAndNormalize.js.map","// Adapted from: http://stackoverflow.com/questions/563198/how-do-you-detect-where-two-line-segments-intersect/1968345#1968345\nexport function getIntersection(segment1, segment2) {\n    const p0X = segment1[0][0];\n    const p0Y = segment1[0][1];\n    const p1X = segment1[1][0];\n    const p1Y = segment1[1][1];\n    const p2X = segment2[0][0];\n    const p2Y = segment2[0][1];\n    const p3X = segment2[1][0];\n    const p3Y = segment2[1][1];\n    const s1X = p1X - p0X;\n    const s1Y = p1Y - p0Y;\n    const s2X = p3X - p2X;\n    const s2Y = p3Y - p2Y;\n    const s = (-s1Y * (p0X - p2X) + s1X * (p0Y - p2Y)) / (-s2X * s1Y + s1X * s2Y);\n    const t = (s2X * (p0Y - p2Y) - s2Y * (p0X - p2X)) / (-s2X * s1Y + s1X * s2Y);\n    if (s >= 0 && s <= 1 && t >= 0 && t <= 1) {\n        return {\n            x: p0X + t * s1X,\n            y: p0Y + t * s1Y,\n        };\n    }\n    return null; // No collision\n}\n//# sourceMappingURL=getIntersection.js.map","import { calculateOverlapFromDiff } from './calculateOverlapFromDiff';\nimport { checkPeaks } from './checkPeaks';\nimport { commonExtractAndNormalize } from './commonExtractAndNormalize';\nimport { extract } from './extract';\nimport { extractAndNormalize } from './extractAndNormalize';\nimport { getCommonArray } from './getCommonArray.js';\nimport { getIntersection } from './getIntersection';\nimport { normalize } from './normalize';\nexport const COMMON_NO = 0;\nexport const COMMON_FIRST = 1;\nexport const COMMON_SECOND = 2;\nexport const COMMON_BOTH = 3;\n/**\n * A number, or a string containing a number.\n * @typedef {([number[],number[]]|[number,number][]|{x:number[],y:number[]})} Peaks\n */\n/**\n * Create a comparator class\n * {object} [options={}]\n * {string} [options.common=''] should we take only common peaks 'first', 'second', 'both', ''\n * {number} [options.widthBottom=2] bottom trapezoid width for similarity evaluation\n * {number} [options.widthTop=1] top trapezoid width for similarity evaluation\n * {number} [options.from] from region used for similarity calculation\n * {number} [options.to] to region used for similarity calculation\n */\nexport class Comparator {\n    constructor(options = {}) {\n        this.array1 = [];\n        this.array2 = [];\n        this.setOptions(options);\n    }\n    /*\n       2 formats are allowed:\n       [[x1,x2,...],[y1,y2,...]] or [[x1,y1],[x2,y2], ...]\n      */\n    setOptions(options = {}) {\n        if (typeof options.common === 'string') {\n            if (options.common.toLowerCase() === 'first') {\n                this.common = COMMON_FIRST;\n            }\n            else if (options.common.toLowerCase() === 'second') {\n                this.common = COMMON_SECOND;\n            }\n            else if (options.common.toLowerCase() === 'both') {\n                this.common = COMMON_BOTH;\n            }\n            else {\n                this.common = COMMON_NO;\n            }\n        }\n        else if (options.common === true) {\n            this.common = COMMON_BOTH;\n        }\n        else {\n            this.common = COMMON_NO;\n        }\n        this.trapezoid = options.trapezoid;\n        this.commonFactor = options.commonFactor || this.commonFactor || 4;\n        const { widthBottom = this.widthBottom || 2, widthTop = this.widthTop || 1, from = this.from, to = this.to, } = options;\n        this.setTrapezoid(widthBottom, widthTop);\n        this.setFromTo(from, to);\n    }\n    /**\n     *\n     * @param {Peaks} peaks\n     */\n    setPeaks1(peaks) {\n        this.array1 = checkPeaks(peaks);\n        if (this.common) {\n            const extracts = commonExtractAndNormalize(this.array1, this.array2, this.widthBottom, this.from, this.to, this.common);\n            this.array1Extract = extracts.data1;\n            this.array1ExtractInfo = extracts.info1;\n            this.array2Extract = extracts.data2;\n            this.array2ExtractInfo = extracts.info2;\n        }\n        else {\n            const extract = extractAndNormalize(this.array1, this.from, this.to);\n            this.array1Extract = extract.data;\n            this.array1ExtractInfo = extract.info;\n        }\n    }\n    /**\n     *\n     * @param {Peaks} peaks\n     */\n    setPeaks2(peaks) {\n        this.array2 = checkPeaks(peaks);\n        if (this.common) {\n            const extracts = commonExtractAndNormalize(this.array1, this.array2, this.widthBottom, this.from, this.to, this.common);\n            this.array1Extract = extracts.data1;\n            this.array1ExtractInfo = extracts.info1;\n            this.array2Extract = extracts.data2;\n            this.array2ExtractInfo = extracts.info2;\n        }\n        else {\n            const extract = extractAndNormalize(this.array2, this.from, this.to);\n            this.array2Extract = extract.data;\n            this.array2ExtractInfo = extract.info;\n        }\n    }\n    getExtract1() {\n        return this.array1Extract;\n    }\n    getExtract2() {\n        return this.array2Extract;\n    }\n    getExtractInfo1() {\n        return this.array1ExtractInfo;\n    }\n    getExtractInfo2() {\n        return this.array2ExtractInfo;\n    }\n    /**\n     * Set the new bottom and top width of the trapezoid\n     * @param {number} newWidthBottom\n     * @param {number} newWidthTop\n     */\n    setTrapezoid(newWidthBottom, newWidthTop) {\n        this.widthTop = newWidthTop;\n        this.widthBottom = newWidthBottom;\n        this.widthSlope = (this.widthBottom - this.widthTop) / 2;\n        if (this.widthBottom < this.widthTop) {\n            throw new Error('widthBottom has to be larger than widthTop');\n        }\n    }\n    /**\n     * Set the from / to for comparison\n     * @param {number} newFrom - set the new from value\n     * @param {number} newTo - set the new to value\n     * @returns\n     */\n    setFromTo(newFrom, newTo) {\n        if (newFrom === this.from && newTo === this.to)\n            return;\n        this.from = newFrom;\n        this.to = newTo;\n        if (this.common) {\n            const extracts = commonExtractAndNormalize(this.array1, this.array2, this.widthBottom, this.from, this.to, this.common, this.commonFactor);\n            this.array1Extract = extracts.data1;\n            this.array1ExtractInfo = extracts.info1;\n            this.array2Extract = extracts.data2;\n            this.array2ExtractInfo = extracts.info2;\n        }\n        else {\n            let extract1 = extractAndNormalize(this.array1, this.from, this.to);\n            this.array1Extract = extract1.data;\n            this.array1ExtractInfo = extract1.info;\n            let extract2 = extractAndNormalize(this.array2, this.from, this.to);\n            this.array2Extract = extract2.data;\n            this.array2ExtractInfo = extract2.info;\n        }\n    }\n    /**\n     *\n     * @param {number} x1\n     * @param {number} y1\n     * @param {number} x2\n     * @param {number} y2\n     * @returns\n     */\n    getOverlap(x1, y1, x2, y2) {\n        if (y1 === 0 || y2 === 0)\n            return 0;\n        // TAKE CARE !!! We multiply the diff by 2 !!!\n        const diff = Math.abs(x1 - x2) * 2;\n        if (diff > this.widthBottom)\n            return 0;\n        if (diff <= this.widthTop) {\n            return Math.min(y1, y2);\n        }\n        const maxValue = (Math.max(y1, y2) * (this.widthBottom - diff)) /\n            (this.widthBottom - this.widthTop);\n        return Math.min(y1, y2, maxValue);\n    }\n    /**\n     * This is the old trapezoid similarity\n     * @param {number} x1\n     * @param {number} y1\n     * @param {number} x2\n     * @param {number} y2\n     * @param {number} widthTop\n     * @param {number} widthBottom\n     * @returns\n     */\n    getOverlapTrapezoid(x1, y1, x2, y2, widthTop, widthBottom) {\n        // eslint-disable-next-line no-console\n        console.error('getOverlapTrapezoid should not be used anymore');\n        const factor = 2 / (widthTop + widthBottom); // correction for surface=1\n        if (y1 === 0 || y2 === 0)\n            return 0;\n        if (x1 === x2) {\n            // they have the same position\n            return Math.min(y1, y2);\n        }\n        const diff = Math.abs(x1 - x2);\n        if (diff >= widthBottom)\n            return 0;\n        if (y1 === y2) {\n            // do they have the same height ???\n            // we need to find the common length\n            if (diff <= widthTop) {\n                return ((widthTop + widthBottom) / 2 - diff) * y1 * factor;\n            }\n            else if (diff <= widthBottom) {\n                return ((((((widthBottom - diff) * y1) / 2) * (diff - widthTop)) /\n                    (widthBottom - widthTop)) *\n                    factor);\n            }\n            return 0;\n        }\n        else {\n            // the height are different and not the same position ...\n            // we need to consider only one segment to find its intersection\n            const small = Math.min(y1, y2);\n            const big = Math.max(y1, y2);\n            const targets = [\n                [\n                    [0, 0],\n                    [this.widthSlope, small],\n                ],\n                [\n                    [this.widthSlope, small],\n                    [this.widthSlope + widthTop, small],\n                ],\n                [\n                    [widthTop + this.widthSlope, small],\n                    [widthBottom, 0],\n                ],\n            ];\n            let segment;\n            if ((x1 > x2 && y1 > y2) || (x1 < x2 && y1 < y2)) {\n                segment = [\n                    [diff, 0],\n                    [diff + this.widthSlope, big],\n                ];\n            }\n            else {\n                segment = [\n                    [diff + this.widthSlope, big],\n                    [diff, 0],\n                ];\n            }\n            for (let i = 0; i < 3; i++) {\n                const intersection = getIntersection(targets[i], segment);\n                if (intersection) {\n                    switch (i) {\n                        case 0:\n                            return small - ((diff * intersection.y) / 2) * factor;\n                        case 1: // to simplify ...\n                            //     console.log(\"           \",widthSlope,small,big,intersection.x)\n                            return ((((this.widthSlope * small) / (2 * big)) * small +\n                                (widthTop + this.widthSlope - intersection.x) * small +\n                                (this.widthSlope * small) / 2) *\n                                factor);\n                        case 2:\n                            return (((widthBottom - diff) * intersection.y) / 2) * factor;\n                        default:\n                            throw new Error(`unexpected intersection value: ${i}`);\n                    }\n                }\n            }\n        }\n        return NaN;\n    }\n    /**\n     * This method calculates the total diff. The sum of positive value will yield to overlap\n     * @returns\n     */\n    calculateDiff() {\n        // we need to take 2 pointers\n        // and travel progressively between them ...\n        const newFirst = [\n            this.array1Extract[0].slice(),\n            this.array1Extract[1].slice(),\n        ];\n        const newSecond = [\n            this.array2Extract[0].slice(),\n            this.array2Extract[1].slice(),\n        ];\n        const array1Length = this.array1Extract[0]\n            ? this.array1Extract[0].length\n            : 0;\n        const array2Length = this.array2Extract[0]\n            ? this.array2Extract[0].length\n            : 0;\n        let pos1 = 0;\n        let pos2 = 0;\n        let previous2 = 0;\n        while (pos1 < array1Length) {\n            const diff = newFirst[0][pos1] - this.array2Extract[0][pos2];\n            if (Math.abs(diff) < this.widthBottom) {\n                // there is some overlap\n                let overlap;\n                if (this.trapezoid) {\n                    // old trapezoid overlap similarity\n                    overlap = this.getOverlapTrapezoid(newFirst[0][pos1], newFirst[1][pos1], newSecond[0][pos2], newSecond[1][pos2], this.widthTop, this.widthBottom);\n                }\n                else {\n                    overlap = this.getOverlap(newFirst[0][pos1], newFirst[1][pos1], newSecond[0][pos2], newSecond[1][pos2], this.widthTop, this.widthBottom);\n                }\n                newFirst[1][pos1] -= overlap;\n                newSecond[1][pos2] -= overlap;\n                if (pos2 < array2Length - 1) {\n                    pos2++;\n                }\n                else {\n                    pos1++;\n                    pos2 = previous2;\n                }\n            }\n            else if (diff > 0 && pos2 < array2Length - 1) {\n                pos2++;\n                previous2 = pos2;\n            }\n            else {\n                pos1++;\n                pos2 = previous2;\n            }\n        }\n        return newSecond;\n    }\n    /**\n     * Set the new peaks and return info\n     * @param {Peaks} newPeaks1\n     * @param {Peaks} newPeaks2\n     * @returns\n     */\n    getSimilarity(newPeaks1, newPeaks2) {\n        if (newPeaks1)\n            this.setPeaks1(newPeaks1);\n        if (newPeaks2)\n            this.setPeaks2(newPeaks2);\n        const diff = this.calculateDiff();\n        return {\n            diff,\n            extract1: this.getExtract1(),\n            extract2: this.getExtract2(),\n            extractInfo1: this.getExtractInfo1(),\n            extractInfo2: this.getExtractInfo2(),\n            similarity: calculateOverlapFromDiff(diff),\n            widthBottom: this.widthBottom,\n            widthTop: this.widthTop,\n        };\n    }\n    /**\n     * This works mainly when you have a array1 that is fixed\n     * newPeaks2 have to be normalized ! (sum to 1)\n     * @param {Peaks} newPeaks2\n     * @param {number} from\n     * @param {number} to\n     * @returns\n     */\n    fastSimilarity(newPeaks2, from, to) {\n        this.array1Extract = extract(this.array1, from, to);\n        this.array2Extract = newPeaks2;\n        if (this.common & COMMON_SECOND) {\n            this.array1Extract = getCommonArray(this.array1Extract, this.array2Extract, this.widthBottom);\n        }\n        normalize(this.array1Extract);\n        const diff = this.calculateDiff();\n        return calculateOverlapFromDiff(diff);\n    }\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getPeakChargeBySimilarity = getPeakChargeBySimilarity;\nconst peaks_similarity_1 = require(\"peaks-similarity\");\n/**\n * @param {object}   [options={}]\n * @param {number}   [options.minCharge=1]\n * @param {number}   [options.maxCharge=10]\n * @param {object}   [options.similarity={}]\n * @param {number}   [options.similarity.widthBottom]\n * @param {number}   [options.similarity.widthTop]\n * @param {object}   [options.similarity.widthFunction] - function called with mass that should return an object width containing top and bottom\n * @param {object}   [options.similarity.zone={}]\n * @param {number}   [options.similarity.zone.low=-0.5] - window shift based on observed monoisotopic mass\n * @param {number}   [options.similarity.zone.high=2.5] - to value for the comparison window\n * @param {string}   [options.similarity.common]\n */\nconst NEUTRON_MASS = 1;\nfunction getPeakChargeBySimilarity(spectrum, targetMass, options = {}) {\n    let { similarity = {}, minCharge = 1, maxCharge = 10 } = options;\n    let { zone = {}, widthFunction } = similarity;\n    let { low = -0.5, high = 2.5 } = zone;\n    if (!spectrum || spectrum.data.x.length === 0) {\n        throw new Error('You need to add an experimental spectrum first using setMassSpectrum');\n    }\n    let width = {\n        bottom: similarity.widthBottom,\n        top: similarity.widthTop,\n    };\n    similarity = structuredClone(similarity);\n    similarity.common = 'second';\n    let experimentalData = spectrum.data;\n    let similarityProcessor = new peaks_similarity_1.Comparator(similarity);\n    similarityProcessor.setPeaks1([experimentalData.x, experimentalData.y]);\n    if (widthFunction && typeof widthFunction === 'string') {\n        // eslint-disable-next-line no-new-func\n        widthFunction = new Function('mass', widthFunction);\n        let checkTopBottom = widthFunction(123);\n        if (!checkTopBottom.bottom || !checkTopBottom.top) {\n            throw new Error('widthFunction should return an object with bottom and top properties');\n        }\n    }\n    let fromCharge = minCharge * maxCharge > 0\n        ? Math.round(Math.min(Math.abs(minCharge), Math.abs(maxCharge)))\n        : 1;\n    let toCharge = Math.round(Math.max(Math.abs(minCharge), Math.abs(maxCharge)));\n    let fromIsotope = Math.ceil(low);\n    let toIsotope = Math.floor(high);\n    let isotopeHeight = 1 / (toIsotope - fromIsotope + 1);\n    let results = [];\n    for (let charge = fromCharge; charge < toCharge + 1; charge++) {\n        let isotopePositions = { x: [], y: [] };\n        for (let isotopePosition = fromIsotope; isotopePosition < toIsotope + 1; isotopePosition++) {\n            isotopePositions.x.push(targetMass + (isotopePosition * NEUTRON_MASS) / charge);\n            isotopePositions.y.push(isotopeHeight);\n        }\n        let from = targetMass + low / Math.abs(charge);\n        let to = targetMass + high / Math.abs(charge);\n        similarityProcessor.setFromTo(from, to);\n        if (widthFunction) {\n            width = widthFunction(targetMass);\n            similarityProcessor.setTrapezoid(width.bottom, width.top);\n        }\n        similarityProcessor.setPeaks2([isotopePositions.x, isotopePositions.y]);\n        let result = similarityProcessor.getSimilarity();\n        results.push({ charge, similarity: result.similarity });\n    }\n    return results.sort((a, b) => b.similarity - a.similarity)[0].charge;\n}\n//# sourceMappingURL=getPeakChargeBySimilarity.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getPeaksWithCharge = getPeaksWithCharge;\n// We can not really take the real value of the neutron because it varies from one element to another.\nconst NEUTRON_MASS = 1;\n/**\n *\n * @param {Array} selectedPeaks\n * @param {Array} allPeaks\n * @param {object} [options={}]\n * @param {number} [options.min=1]\n * @param {number} [options.max=10]\n * @param {number} [options.low=-1]\n * @param {number} [options.high=1]\n * @param {number} [options.precision=30]\n * @returns\n */\nfunction getPeaksWithCharge(selectedPeaks, allPeaks, options = {}) {\n    let { precision = 100, low = -1, high = 1, min: minCharge = 1, max: maxCharge = 10, } = options;\n    let fromCharge = minCharge * maxCharge > 0\n        ? Math.round(Math.min(Math.abs(minCharge), Math.abs(maxCharge)))\n        : 1;\n    let toCharge = Math.round(Math.max(Math.abs(minCharge), Math.abs(maxCharge)));\n    let fromIsotope = Math.ceil(low);\n    let toIsotope = Math.floor(high);\n    let numberIsotopes = toIsotope - fromIsotope + 1;\n    let isotopeIntensity = 1 / numberIsotopes;\n    let fromIndex = 0;\n    let localFromIndex = 0;\n    let localToIndex = 0;\n    const peaksWithCharge = [];\n    for (const peak of selectedPeaks) {\n        let targetMass = peak.x;\n        localFromIndex = fromIndex;\n        let bestCharge = fromCharge;\n        let bestChargeMatch = 0;\n        for (let charge = fromCharge; charge < toCharge + 1; charge++) {\n            let theoreticalPositions = {\n                x: [],\n                y: new Array(numberIsotopes).fill(isotopeIntensity),\n            };\n            let massRange = precision * 1e-6 * targetMass;\n            for (let isotopePosition = fromIsotope; isotopePosition < toIsotope + 1; isotopePosition++) {\n                theoreticalPositions.x.push(targetMass + (isotopePosition * NEUTRON_MASS) / charge);\n            }\n            let fromMass = targetMass + low / Math.abs(charge) - massRange;\n            let toMass = targetMass + high / Math.abs(charge) + massRange;\n            if (charge === 1) {\n                // we may move the fromIndex\n                while (allPeaks[fromIndex].x < fromMass) {\n                    fromIndex++;\n                }\n            }\n            /*\n             * Find the from / to index for the specific peak and specific charge\n             */\n            while (allPeaks[localFromIndex].x < fromMass) {\n                localFromIndex++;\n            }\n            localToIndex = localFromIndex;\n            let localHeightSum = 0;\n            while (localToIndex < allPeaks.length &&\n                allPeaks[localToIndex].x < toMass) {\n                localHeightSum += allPeaks[localToIndex].y;\n                localToIndex++;\n            }\n            localToIndex--;\n            //  console.log({ localFromIndex, localToIndex });\n            /*\n              Calculate the overlap for a specific peak and specific charge\n            */\n            let currentTheoreticalPosition = 0;\n            let theoreticalMaxValue = 1 / numberIsotopes;\n            let totalMatch = 0;\n            for (let index = localFromIndex; index <= localToIndex; index++) {\n                let minMass = theoreticalPositions.x[currentTheoreticalPosition] -\n                    massRange / charge;\n                let maxMass = theoreticalPositions.x[currentTheoreticalPosition] +\n                    massRange / charge;\n                while (maxMass < allPeaks[index].x) {\n                    currentTheoreticalPosition++;\n                    theoreticalMaxValue = 1 / numberIsotopes;\n                    minMass =\n                        theoreticalPositions.x[currentTheoreticalPosition] -\n                            massRange / charge;\n                    maxMass =\n                        theoreticalPositions.x[currentTheoreticalPosition] +\n                            massRange / charge;\n                }\n                while (index < allPeaks.length && allPeaks[index].x < minMass) {\n                    index++;\n                }\n                //    console.log({ index, minMass, maxMass, massRange, localHeightSum });\n                if (index < allPeaks.length && allPeaks[index].x <= maxMass) {\n                    while (index < allPeaks.length && allPeaks[index].x <= maxMass) {\n                        if (allPeaks[index].x >= minMass && allPeaks[index].x <= maxMass) {\n                            let value = allPeaks[index].y / localHeightSum;\n                            //      console.log({ theoreticalMaxValue, value });\n                            value = Math.min(theoreticalMaxValue, value);\n                            theoreticalMaxValue -= value;\n                            totalMatch += value;\n                        }\n                        index++;\n                    }\n                    index--;\n                }\n                if (totalMatch > bestChargeMatch) {\n                    bestCharge = charge;\n                    bestChargeMatch = totalMatch;\n                }\n            }\n        }\n        peaksWithCharge.push({ ...peak, charge: bestCharge });\n    }\n    return peaksWithCharge;\n}\n//# sourceMappingURL=getPeaksWithCharge.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isContinuous = isContinuous;\nconst ml_spectra_processing_1 = require(\"ml-spectra-processing\");\n/**\n * When a spectrum is continous ?\n * - has more than 100 points\n * - deltaX change can not be more than a factor 2\n * - deltaX may not be larger than 0.1\n * - if y is zero it does not count\n * @param {object} spectrum\n * @param {object} [options={}]\n * @param {number} [options.minLength=100]\n * @param {number} [options.relativeHeightThreshold=0.001] // Under this value the\n * @param {number} [options.maxDeltaRatio=3]\n */\nfunction isContinuous(spectrum, options = {}) {\n    const { minLength = 100, maxDeltaRatio = 3, relativeHeightThreshold = 0.001, } = options;\n    const minHeight = (0, ml_spectra_processing_1.xMaxValue)(spectrum.data.y) * relativeHeightThreshold;\n    const minRadio = 1 / maxDeltaRatio;\n    const maxRatio = 1 * maxDeltaRatio;\n    if (spectrum.continuous === undefined) {\n        let xs = spectrum.data.x;\n        let ys = spectrum.data.y;\n        if (xs.length < minLength) {\n            spectrum.continuous = false;\n        }\n        else {\n            let previousDelta = xs[1] - xs[0];\n            spectrum.continuous = true;\n            let success = 0;\n            let failed = 0;\n            for (let i = 0; i < xs.length - 1; i++) {\n                if (ys[i] < minHeight || ys[i + 1] < minHeight) {\n                    previousDelta = 0;\n                    continue;\n                }\n                let delta = xs[i + 1] - xs[i];\n                if (previousDelta) {\n                    let ratio = delta / previousDelta;\n                    if ((Math.abs(delta) > 0.1 || ratio < minRadio || ratio > maxRatio) &&\n                        ys[i] !== 0 &&\n                        ys[i + 1] !== 0) {\n                        failed++;\n                    }\n                    else {\n                        success++;\n                    }\n                }\n                previousDelta = delta;\n            }\n            if (success / failed < 10) {\n                spectrum.continuous = false;\n            }\n        }\n    }\n    return spectrum.continuous;\n}\n//# sourceMappingURL=isContinuous.js.map","import { isAnyArray } from 'is-any-array';\n/**\n * Apply Savitzky Golay algorithm\n * @param [ys] Array of y values\n * @param [xs] Array of X or deltaX\n * @return  Array containing the new ys (same length)\n */\nexport function sgg(ys, xs, options = {}) {\n    const { windowSize = 9, derivative = 0, polynomial = 3 } = options;\n    if (windowSize % 2 === 0 || windowSize < 5 || !Number.isInteger(windowSize)) {\n        throw new RangeError('Invalid window size (should be odd and at least 5 integer number)');\n    }\n    if (!isAnyArray(ys)) {\n        throw new TypeError('Y values must be an array');\n    }\n    if (typeof xs === 'undefined') {\n        throw new TypeError('X must be defined');\n    }\n    if (windowSize > ys.length) {\n        throw new RangeError(`Window size is higher than the data length ${windowSize}>${ys.length}`);\n    }\n    if (derivative < 0 || !Number.isInteger(derivative)) {\n        throw new RangeError('Derivative should be a positive integer');\n    }\n    if (polynomial < 1 || !Number.isInteger(polynomial)) {\n        throw new RangeError('Polynomial should be a positive integer');\n    }\n    if (polynomial >= 6) {\n        // eslint-disable-next-line no-console\n        console.warn('You should not use polynomial grade higher than 5 if you are' +\n            ' not sure that your data arises from such a model. Possible polynomial oscillation problems');\n    }\n    const half = Math.floor(windowSize / 2);\n    const np = ys.length;\n    const ans = new Float64Array(np);\n    const weights = fullWeights(windowSize, polynomial, derivative);\n    let hs = 0;\n    let constantH = true;\n    if (isAnyArray(xs)) {\n        constantH = false;\n    }\n    else {\n        hs = xs ** derivative;\n    }\n    //For the borders\n    for (let i = 0; i < half; i++) {\n        const wg1 = weights[half - i - 1];\n        const wg2 = weights[half + i + 1];\n        let d1 = 0;\n        let d2 = 0;\n        for (let l = 0; l < windowSize; l++) {\n            d1 += wg1[l] * ys[l];\n            d2 += wg2[l] * ys[np - windowSize + l];\n        }\n        if (constantH) {\n            ans[half - i - 1] = d1 / hs;\n            ans[np - half + i] = d2 / hs;\n        }\n        else {\n            hs = getHs(xs, half - i - 1, half, derivative);\n            ans[half - i - 1] = d1 / hs;\n            hs = getHs(xs, np - half + i, half, derivative);\n            ans[np - half + i] = d2 / hs;\n        }\n    }\n    //For the internal points\n    const wg = weights[half];\n    for (let i = windowSize; i <= np; i++) {\n        let d = 0;\n        for (let l = 0; l < windowSize; l++)\n            d += wg[l] * ys[l + i - windowSize];\n        if (!constantH) {\n            hs = getHs(xs, i - half - 1, half, derivative);\n        }\n        ans[i - half - 1] = d / hs;\n    }\n    return ans;\n}\nfunction getHs(h, center, half, derivative) {\n    let hs = 0;\n    let count = 0;\n    for (let i = center - half; i < center + half; i++) {\n        if (i >= 0 && i < h.length - 1) {\n            hs += h[i + 1] - h[i];\n            count++;\n        }\n    }\n    return (hs / count) ** derivative;\n}\nfunction gramPoly(i, m, k, s) {\n    let Grampoly = 0;\n    if (k > 0) {\n        Grampoly =\n            ((4 * k - 2) / (k * (2 * m - k + 1))) *\n                (i * gramPoly(i, m, k - 1, s) + s * gramPoly(i, m, k - 1, s - 1)) -\n                (((k - 1) * (2 * m + k)) / (k * (2 * m - k + 1))) *\n                    gramPoly(i, m, k - 2, s);\n    }\n    else if (k === 0 && s === 0) {\n        Grampoly = 1;\n    }\n    else {\n        Grampoly = 0;\n    }\n    return Grampoly;\n}\nfunction genFact(a, b) {\n    let gf = 1;\n    if (a >= b) {\n        for (let j = a - b + 1; j <= a; j++) {\n            gf *= j;\n        }\n    }\n    return gf;\n}\nfunction weight(i, t, m, n, s) {\n    let sum = 0;\n    for (let k = 0; k <= n; k++) {\n        sum +=\n            (2 * k + 1) *\n                (genFact(2 * m, k) / genFact(2 * m + k + 1, k + 1)) *\n                gramPoly(i, m, k, 0) *\n                gramPoly(t, m, k, s);\n    }\n    return sum;\n}\n/**\n * @private\n * @param m  Number of points\n * @param n  Polynomial grade\n * @param s  Derivative\n */\nfunction fullWeights(m, n, s) {\n    const weights = new Array(m);\n    const np = Math.floor(m / 2);\n    for (let t = -np; t <= np; t++) {\n        weights[t + np] = new Float64Array(m);\n        for (let j = -np; j <= np; j++) {\n            weights[t + np][j + np] = weight(j, t, np, n, s);\n        }\n    }\n    return weights;\n}\n//# sourceMappingURL=index.js.map","/**\n * Correction of the x and y coordinates using a quadratic optimizations with the peak and its 3 closest neighbors to determine the true x,y values of the peak.\n * This process is done in place and is very fast.\n * @param data\n * @param peaks\n */\nexport function optimizeTop(data, peaks) {\n    const { x, y } = data;\n    for (const peak of peaks) {\n        let currentIndex = peak.index;\n        // The detected peak could be moved 1 or 2 units to left or right.\n        if (y[currentIndex - 1] >= y[currentIndex - 2] &&\n            y[currentIndex - 1] >= y[currentIndex]) {\n            currentIndex--;\n        }\n        else if (y[currentIndex + 1] >= y[currentIndex] &&\n            y[currentIndex + 1] >= y[currentIndex + 2]) {\n            currentIndex++;\n        }\n        else if (y[currentIndex - 2] >= y[currentIndex - 3] &&\n            y[currentIndex - 2] >= y[currentIndex - 1]) {\n            currentIndex -= 2;\n        }\n        else if (y[currentIndex + 2] >= y[currentIndex + 1] &&\n            y[currentIndex + 2] >= y[currentIndex + 3]) {\n            currentIndex += 2;\n        }\n        // interpolation to a sin() function\n        if (y[currentIndex - 1] > 0 &&\n            y[currentIndex + 1] > 0 &&\n            y[currentIndex] >= y[currentIndex - 1] &&\n            y[currentIndex] >= y[currentIndex + 1] &&\n            (y[currentIndex] !== y[currentIndex - 1] ||\n                y[currentIndex] !== y[currentIndex + 1])) {\n            const alpha = 20 * Math.log10(y[currentIndex - 1]);\n            const beta = 20 * Math.log10(y[currentIndex]);\n            const gamma = 20 * Math.log10(y[currentIndex + 1]);\n            const p = (0.5 * (alpha - gamma)) / (alpha - 2 * beta + gamma);\n            const xCurrent = x[currentIndex];\n            const xPrevious = x[currentIndex - 1];\n            peak.x = xCurrent + (xCurrent - xPrevious) * p;\n            peak.y =\n                y[currentIndex] -\n                    0.25 * (y[currentIndex - 1] - y[currentIndex + 1]) * p;\n        }\n    }\n}\n//# sourceMappingURL=optimizeTop.js.map","import { sgg } from 'ml-savitzky-golay-generalized';\nimport { xIsEquallySpaced, xIsMonotonic, xMinMaxValues, xNoiseStandardDeviation, } from 'ml-spectra-processing';\nimport { optimizeTop } from \"./utils/optimizeTop.js\";\n/**\n * Global spectra deconvolution\n * @param  data - Object data with x and y arrays. Values in x has to be growing\n * @param options\n * @param {number} [options.broadRatio = 0.00] - If `broadRatio` is higher than 0, then all the peaks which second derivative\n * smaller than `broadRatio * maxAbsSecondDerivative` will be marked with the soft mask equal to true.\n */\nexport function gsd(data, options = {}) {\n    let { noiseLevel } = options;\n    const { sgOptions = {\n        windowSize: 9,\n        polynomial: 3,\n    }, smoothY = false, maxCriteria = true, minMaxRatio = 0.00025, realTopDetection = false, } = options;\n    const { x } = data;\n    let { y } = data;\n    if (xIsMonotonic(x) !== 1) {\n        throw new Error('GSD only accepts monotone increasing x values');\n    }\n    //rescale;\n    y = y.slice();\n    // If the max difference between delta x is less than 5%, then,\n    // we can assume it to be equally spaced variable\n    const equallySpaced = xIsEquallySpaced(x);\n    if (noiseLevel === undefined) {\n        if (equallySpaced) {\n            const noiseInfo = xNoiseStandardDeviation(y);\n            if (maxCriteria) {\n                noiseLevel = noiseInfo.median + 1.5 * noiseInfo.sd;\n            }\n            else {\n                noiseLevel = -noiseInfo.median + 1.5 * noiseInfo.sd;\n            }\n        }\n        else {\n            noiseLevel = 0;\n        }\n    }\n    else if (!maxCriteria) {\n        noiseLevel *= -1;\n    }\n    if (!maxCriteria) {\n        for (let i = 0; i < y.length; i++) {\n            y[i] *= -1;\n        }\n    }\n    if (noiseLevel !== undefined) {\n        for (let i = 0; i < y.length; i++) {\n            if (y[i] < noiseLevel) {\n                y[i] = noiseLevel;\n            }\n        }\n    }\n    const xValue = equallySpaced ? x[1] - x[0] : x;\n    const yData = smoothY\n        ? sgg(y, xValue, {\n            ...sgOptions,\n            derivative: 0,\n        })\n        : y;\n    const dY = sgg(y, xValue, {\n        ...sgOptions,\n        derivative: 1,\n    });\n    const ddY = sgg(y, xValue, {\n        ...sgOptions,\n        derivative: 2,\n    });\n    const { min: minY, max: maxY } = xMinMaxValues(yData);\n    if (minY > maxY || minY === maxY)\n        return [];\n    const yThreshold = minY + (maxY - minY) * minMaxRatio;\n    const dX = x[1] - x[0];\n    let lastMax = null;\n    let lastMin = null;\n    const minddY = [];\n    const intervalL = [];\n    const intervalR = [];\n    // By the intermediate value theorem We cannot find 2 consecutive maximum or minimum\n    for (let i = 1; i < yData.length - 1; ++i) {\n        if ((dY[i] < dY[i - 1] && dY[i] <= dY[i + 1]) ||\n            (dY[i] <= dY[i - 1] && dY[i] < dY[i + 1])) {\n            lastMin = {\n                x: x[i],\n                index: i,\n            };\n            if (dX > 0 && lastMax !== null) {\n                intervalL.push(lastMax);\n                intervalR.push(lastMin);\n            }\n        }\n        // Maximum in first derivative\n        if ((dY[i] >= dY[i - 1] && dY[i] > dY[i + 1]) ||\n            (dY[i] > dY[i - 1] && dY[i] >= dY[i + 1])) {\n            lastMax = {\n                x: x[i],\n                index: i,\n            };\n            if (dX < 0 && lastMin !== null) {\n                intervalL.push(lastMax);\n                intervalR.push(lastMin);\n            }\n        }\n        // Minimum in second derivative\n        if (ddY[i] < ddY[i - 1] && ddY[i] < ddY[i + 1]) {\n            minddY.push(i);\n        }\n    }\n    let lastK = -1;\n    const peaks = [];\n    for (const minddYIndex of minddY) {\n        const deltaX = x[minddYIndex];\n        let possible = -1;\n        let k = lastK + 1;\n        let minDistance = Number.POSITIVE_INFINITY;\n        let currentDistance = 0;\n        while (possible === -1 && k < intervalL.length) {\n            currentDistance = Math.abs(deltaX - (intervalL[k].x + intervalR[k].x) / 2);\n            if (currentDistance < (intervalR[k].x - intervalL[k].x) / 2) {\n                possible = k;\n                lastK = k;\n            }\n            ++k;\n            // Not getting closer?\n            if (currentDistance >= minDistance) {\n                break;\n            }\n            minDistance = currentDistance;\n        }\n        if (possible !== -1) {\n            if (yData[minddYIndex] > yThreshold) {\n                const width = Math.abs(intervalR[possible].x - intervalL[possible].x);\n                peaks.push({\n                    id: crypto.randomUUID(),\n                    x: deltaX,\n                    y: yData[minddYIndex],\n                    width,\n                    index: minddYIndex,\n                    ddY: ddY[minddYIndex],\n                    inflectionPoints: {\n                        from: intervalL[possible],\n                        to: intervalR[possible],\n                    },\n                });\n            }\n        }\n    }\n    if (realTopDetection) {\n        optimizeTop({ x, y: yData }, peaks);\n    }\n    peaks.forEach((peak) => {\n        if (!maxCriteria) {\n            peak.y *= -1;\n            peak.ddY = peak.ddY * -1;\n        }\n    });\n    peaks.sort((a, b) => {\n        return a.x - b.x;\n    });\n    return peaks;\n}\n//# sourceMappingURL=gsd.js.map","export const GAUSSIAN_EXP_FACTOR = -4 * Math.LN2;\nexport const ROOT_PI_OVER_LN2 = Math.sqrt(Math.PI / Math.LN2);\nexport const ROOT_THREE = Math.sqrt(3);\nexport const ROOT_2LN2 = Math.sqrt(2 * Math.LN2);\nexport const ROOT_2LN2_MINUS_ONE = Math.sqrt(2 * Math.LN2) - 1;\n//# sourceMappingURL=constants.js.map","// https://en.wikipedia.org/wiki/Error_function#Inverse_functions\n// This code yields to a good approximation\n// If needed a better implementation using polynomial can be found on https://en.wikipedia.org/wiki/Error_function#Inverse_functions\nexport default function erfinv(x) {\n    let a = 0.147;\n    if (x === 0)\n        return 0;\n    let ln1MinusXSqrd = Math.log(1 - x * x);\n    let lnEtcBy2Plus2 = ln1MinusXSqrd / 2 + 2 / (Math.PI * a);\n    let firstSqrt = Math.sqrt(lnEtcBy2Plus2 ** 2 - ln1MinusXSqrd / a);\n    let secondSqrt = Math.sqrt(firstSqrt - lnEtcBy2Plus2);\n    return secondSqrt * (x > 0 ? 1 : -1);\n}\n//# sourceMappingURL=erfinv.js.map","import { ROOT_2LN2, GAUSSIAN_EXP_FACTOR, ROOT_PI_OVER_LN2, } from '../../../util/constants';\nimport erfinv from '../../../util/erfinv';\nexport class Gaussian {\n    constructor(options = {}) {\n        const { fwhm = 500, sd } = options;\n        this.fwhm = sd ? gaussianWidthToFWHM(2 * sd) : fwhm;\n    }\n    fwhmToWidth(fwhm = this.fwhm) {\n        return gaussianFwhmToWidth(fwhm);\n    }\n    widthToFWHM(width) {\n        return gaussianWidthToFWHM(width);\n    }\n    fct(x) {\n        return gaussianFct(x, this.fwhm);\n    }\n    getArea(height = calculateGaussianHeight({ fwhm: this.fwhm })) {\n        return getGaussianArea({ fwhm: this.fwhm, height });\n    }\n    getFactor(area) {\n        return getGaussianFactor(area);\n    }\n    getData(options = {}) {\n        return getGaussianData(this, options);\n    }\n    calculateHeight(area = 1) {\n        return calculateGaussianHeight({ fwhm: this.fwhm, area });\n    }\n    getParameters() {\n        return ['fwhm'];\n    }\n}\nexport function calculateGaussianHeight(options) {\n    let { fwhm = 500, area = 1, sd } = options;\n    if (sd)\n        fwhm = gaussianWidthToFWHM(2 * sd);\n    return (2 * area) / ROOT_PI_OVER_LN2 / fwhm;\n}\n/**\n * Calculate the height of the gaussian function of a specific width (fwhm) at a speicifc\n * x position (the gaussian is centered on x=0)\n * @param x\n * @param fwhm\n * @returns y\n */\nexport function gaussianFct(x, fwhm) {\n    return Math.exp(GAUSSIAN_EXP_FACTOR * Math.pow(x / fwhm, 2));\n}\nexport function gaussianWidthToFWHM(width) {\n    return width * ROOT_2LN2;\n}\nexport function gaussianFwhmToWidth(fwhm) {\n    return fwhm / ROOT_2LN2;\n}\nexport function getGaussianArea(options) {\n    let { fwhm = 500, sd, height = 1 } = options;\n    if (sd)\n        fwhm = gaussianWidthToFWHM(2 * sd);\n    return (height * ROOT_PI_OVER_LN2 * fwhm) / 2;\n}\nexport function getGaussianFactor(area = 0.9999) {\n    return Math.sqrt(2) * erfinv(area);\n}\nexport function getGaussianData(shape = {}, options = {}) {\n    let { fwhm = 500, sd } = shape;\n    if (sd)\n        fwhm = gaussianWidthToFWHM(2 * sd);\n    let { length, factor = getGaussianFactor(), height = calculateGaussianHeight({ fwhm }), } = options;\n    if (!length) {\n        length = Math.min(Math.ceil(fwhm * factor), Math.pow(2, 25) - 1);\n        if (length % 2 === 0)\n            length++;\n    }\n    const center = (length - 1) / 2;\n    const data = new Float64Array(length);\n    for (let i = 0; i <= center; i++) {\n        data[i] = gaussianFct(i - center, fwhm) * height;\n        data[length - 1 - i] = data[i];\n    }\n    return data;\n}\n//# sourceMappingURL=Gaussian.js.map","import { ROOT_THREE } from '../../../util/constants';\nexport class Lorentzian {\n    constructor(options = {}) {\n        const { fwhm = 500 } = options;\n        this.fwhm = fwhm;\n    }\n    fwhmToWidth(fwhm = this.fwhm) {\n        return lorentzianFwhmToWidth(fwhm);\n    }\n    widthToFWHM(width) {\n        return lorentzianWidthToFWHM(width);\n    }\n    fct(x) {\n        return lorentzianFct(x, this.fwhm);\n    }\n    getArea(height = 1) {\n        return getLorentzianArea({ fwhm: this.fwhm, height });\n    }\n    getFactor(area) {\n        return getLorentzianFactor(area);\n    }\n    getData(options = {}) {\n        return getLorentzianData(this, options);\n    }\n    calculateHeight(area = 1) {\n        return calculateLorentzianHeight({ fwhm: this.fwhm, area });\n    }\n    getParameters() {\n        return ['fwhm'];\n    }\n}\nexport const calculateLorentzianHeight = ({ fwhm = 1, area = 1 }) => {\n    return (2 * area) / Math.PI / fwhm;\n};\nexport const getLorentzianArea = (options) => {\n    const { fwhm = 500, height = 1 } = options;\n    return (height * Math.PI * fwhm) / 2;\n};\nexport const lorentzianFct = (x, fwhm) => {\n    return fwhm ** 2 / (4 * x ** 2 + fwhm ** 2);\n};\nexport const lorentzianWidthToFWHM = (width) => {\n    return width * ROOT_THREE;\n};\nexport const lorentzianFwhmToWidth = (fwhm) => {\n    return fwhm / ROOT_THREE;\n};\nexport const getLorentzianFactor = (area = 0.9999) => {\n    if (area >= 1) {\n        throw new Error('area should be (0 - 1)');\n    }\n    const halfResidual = (1 - area) * 0.5;\n    const quantileFunction = (p) => Math.tan(Math.PI * (p - 0.5));\n    return ((quantileFunction(1 - halfResidual) - quantileFunction(halfResidual)) / 2);\n};\nexport const getLorentzianData = (shape = {}, options = {}) => {\n    let { fwhm = 500 } = shape;\n    let { length, factor = getLorentzianFactor(), height = calculateLorentzianHeight({ fwhm, area: 1 }), } = options;\n    if (!length) {\n        length = Math.min(Math.ceil(fwhm * factor), Math.pow(2, 25) - 1);\n        if (length % 2 === 0)\n            length++;\n    }\n    const center = (length - 1) / 2;\n    const data = new Float64Array(length);\n    for (let i = 0; i <= center; i++) {\n        data[i] = lorentzianFct(i - center, fwhm) * height;\n        data[length - 1 - i] = data[i];\n    }\n    return data;\n};\n//# sourceMappingURL=Lorentzian.js.map","import { calculateLorentzianHeight, getLorentzianFactor, lorentzianFwhmToWidth, lorentzianWidthToFWHM, } from '../lorentzian/Lorentzian';\nexport class LorentzianDispersive {\n    constructor(options = {}) {\n        const { fwhm = 500 } = options;\n        this.fwhm = fwhm;\n    }\n    fwhmToWidth(fwhm = this.fwhm) {\n        return lorentzianFwhmToWidth(fwhm);\n    }\n    widthToFWHM(width) {\n        return lorentzianWidthToFWHM(width);\n    }\n    fct(x) {\n        return lorentzianDispersiveFct(x, this.fwhm);\n    }\n    //eslint-disable-next-line\n    getArea(_height) {\n        return 0;\n    }\n    getFactor(area) {\n        return getLorentzianFactor(area);\n    }\n    getData(options = {}) {\n        return getLorentzianDispersiveData(this, options);\n    }\n    calculateHeight(area = 1) {\n        return calculateLorentzianHeight({ fwhm: this.fwhm, area });\n    }\n    getParameters() {\n        return ['fwhm'];\n    }\n}\nexport const lorentzianDispersiveFct = (x, fwhm) => {\n    return (2 * fwhm * x) / (4 * x ** 2 + fwhm ** 2);\n};\nexport const getLorentzianDispersiveData = (shape = {}, options = {}) => {\n    let { fwhm = 500 } = shape;\n    let { length, factor = getLorentzianFactor(), height = calculateLorentzianHeight({ fwhm, area: 1 }), } = options;\n    if (!length) {\n        length = Math.min(Math.ceil(fwhm * factor), Math.pow(2, 25) - 1);\n        if (length % 2 === 0)\n            length++;\n    }\n    const center = (length - 1) / 2;\n    const data = new Float64Array(length);\n    for (let i = 0; i <= center; i++) {\n        data[i] = lorentzianDispersiveFct(i - center, fwhm) * height;\n        data[length - 1 - i] = -data[i];\n    }\n    return data;\n};\n//# sourceMappingURL=LorentzianDispersive.js.map","import { GAUSSIAN_EXP_FACTOR, ROOT_2LN2_MINUS_ONE, ROOT_PI_OVER_LN2, } from '../../../util/constants';\nimport { gaussianFct, getGaussianFactor } from '../gaussian/Gaussian';\nimport { lorentzianFct, getLorentzianFactor } from '../lorentzian/Lorentzian';\nexport class PseudoVoigt {\n    constructor(options = {}) {\n        const { fwhm = 500, mu = 0.5 } = options;\n        this.mu = mu;\n        this.fwhm = fwhm;\n    }\n    fwhmToWidth(fwhm = this.fwhm, mu = this.mu) {\n        return pseudoVoigtFwhmToWidth(fwhm, mu);\n    }\n    widthToFWHM(width, mu = this.mu) {\n        return pseudoVoigtWidthToFWHM(width, mu);\n    }\n    fct(x) {\n        return pseudoVoigtFct(x, this.fwhm, this.mu);\n    }\n    getArea(height = 1) {\n        return getPseudoVoigtArea({ fwhm: this.fwhm, height, mu: this.mu });\n    }\n    getFactor(area) {\n        return getPseudoVoigtFactor(area);\n    }\n    getData(options = {}) {\n        const { length, factor, height = calculatePseudoVoigtHeight({\n            fwhm: this.fwhm,\n            mu: this.mu,\n            area: 1,\n        }), } = options;\n        return getPseudoVoigtData(this, { factor, length, height });\n    }\n    calculateHeight(area = 1) {\n        return calculatePseudoVoigtHeight({ fwhm: this.fwhm, mu: this.mu, area });\n    }\n    getParameters() {\n        return ['fwhm', 'mu'];\n    }\n}\nexport const calculatePseudoVoigtHeight = (options = {}) => {\n    let { fwhm = 1, mu = 0.5, area = 1 } = options;\n    return (2 * area) / (fwhm * (mu * ROOT_PI_OVER_LN2 + (1 - mu) * Math.PI));\n};\nexport const pseudoVoigtFct = (x, fwhm, mu) => {\n    return (1 - mu) * lorentzianFct(x, fwhm) + mu * gaussianFct(x, fwhm);\n};\nexport const pseudoVoigtWidthToFWHM = (width, mu = 0.5) => {\n    return width * (mu * ROOT_2LN2_MINUS_ONE + 1);\n};\nexport const pseudoVoigtFwhmToWidth = (fwhm, mu = 0.5) => {\n    return fwhm / (mu * ROOT_2LN2_MINUS_ONE + 1);\n};\nexport const getPseudoVoigtArea = (options) => {\n    const { fwhm = 500, height = 1, mu = 0.5 } = options;\n    return (fwhm * height * (mu * ROOT_PI_OVER_LN2 + (1 - mu) * Math.PI)) / 2;\n};\nexport const getPseudoVoigtFactor = (area = 0.9999, mu = 0.5) => {\n    return mu < 1 ? getLorentzianFactor(area) : getGaussianFactor(area);\n};\nexport const getPseudoVoigtData = (shape = {}, options = {}) => {\n    let { fwhm = 500, mu = 0.5 } = shape;\n    let { length, factor = getPseudoVoigtFactor(0.999, mu), height = calculatePseudoVoigtHeight({ fwhm, mu, area: 1 }), } = options;\n    if (!height) {\n        height =\n            1 /\n                ((mu / Math.sqrt(-GAUSSIAN_EXP_FACTOR / Math.PI)) * fwhm +\n                    ((1 - mu) * fwhm * Math.PI) / 2);\n    }\n    if (!length) {\n        length = Math.min(Math.ceil(fwhm * factor), Math.pow(2, 25) - 1);\n        if (length % 2 === 0)\n            length++;\n    }\n    const center = (length - 1) / 2;\n    const data = new Float64Array(length);\n    for (let i = 0; i <= center; i++) {\n        data[i] = pseudoVoigtFct(i - center, fwhm, mu) * height;\n        data[length - 1 - i] = data[i];\n    }\n    return data;\n};\n//# sourceMappingURL=PseudoVoigt.js.map","import { ROOT_THREE } from '../../../util/constants';\n/**\n * This shape is a linear combination of rational function (n|n+2), for n = 0 (lorentzian function) and n = 2\n * the parameter that combines those two functions is `gamma` and it is called the kurtosis parameter, it is an\n * implementation of generalized lorentzian shape published by Stanislav Sykora in the SMASH 2010. DOI:10.3247/SL3nmr10.006\n * @link http://www.ebyte.it/stan/Talk_ML_UserMeeting_SMASH_2010_GeneralizedLorentzian.html\n */\nexport class GeneralizedLorentzian {\n    constructor(options = {}) {\n        const { fwhm = 500, gamma = 0.5 } = options;\n        this.fwhm = fwhm;\n        this.gamma = gamma;\n    }\n    fwhmToWidth(fwhm = this.fwhm) {\n        return generalizedLorentzianFwhmToWidth(fwhm);\n    }\n    widthToFWHM(width) {\n        return generalizedLorentzianWidthToFWHM(width);\n    }\n    fct(x) {\n        return generalizedLorentzianFct(x, this.fwhm, this.gamma);\n    }\n    getArea(height = 1) {\n        return getGeneralizedLorentzianArea({\n            fwhm: this.fwhm,\n            height,\n            gamma: this.gamma,\n        });\n    }\n    getFactor(area) {\n        return getGeneralizedLorentzianFactor(area);\n    }\n    getData(options = {}) {\n        return getGeneralizedLorentzianData(this, options);\n    }\n    calculateHeight(area = 1) {\n        const { gamma, fwhm } = this;\n        return calculateGeneralizedLorentzianHeight({ fwhm, area, gamma });\n    }\n    getParameters() {\n        return ['fwhm', 'gamma'];\n    }\n}\nexport const calculateGeneralizedLorentzianHeight = ({ fwhm = 1, gamma = 1, area = 1, }) => {\n    return (area / fwhm / (3.14159 - 0.420894 * gamma)) * 2;\n};\n/**\n * expression of integral generated by Mathematica of the function\n */\nexport const getGeneralizedLorentzianArea = (options) => {\n    const { fwhm = 500, height = 1, gamma = 1 } = options;\n    return (height * fwhm * (3.14159 - 0.420894 * gamma)) / 2;\n};\nexport const generalizedLorentzianFct = (x, fwhm, gamma) => {\n    const u = ((2 * x) / fwhm) ** 2;\n    return (1 - gamma) / (1 + u) + (gamma * (1 + u / 2)) / (1 + u + u ** 2);\n};\nexport const generalizedLorentzianWidthToFWHM = (width) => {\n    return width * ROOT_THREE;\n};\nexport const generalizedLorentzianFwhmToWidth = (fwhm) => {\n    return fwhm / ROOT_THREE;\n};\nexport const getGeneralizedLorentzianFactor = (area = 0.9999) => {\n    if (area >= 1) {\n        throw new Error('area should be (0 - 1)');\n    }\n    const halfResidual = (1 - area) * 0.5;\n    const quantileFunction = (p) => Math.tan(Math.PI * (p - 0.5));\n    return ((quantileFunction(1 - halfResidual) - quantileFunction(halfResidual)) / 2);\n};\nexport const getGeneralizedLorentzianData = (shape = {}, options = {}) => {\n    let { fwhm = 500, gamma = 1 } = shape;\n    let { length, factor = getGeneralizedLorentzianFactor(), height = calculateGeneralizedLorentzianHeight({ fwhm, area: 1, gamma }), } = options;\n    if (!length) {\n        length = Math.min(Math.ceil(fwhm * factor), Math.pow(2, 25) - 1);\n        if (length % 2 === 0)\n            length++;\n    }\n    const center = (length - 1) / 2;\n    const data = new Float64Array(length);\n    for (let i = 0; i <= center; i++) {\n        data[i] = generalizedLorentzianFct(i - center, fwhm, gamma) * height;\n        data[length - 1 - i] = data[i];\n    }\n    return data;\n};\n//# sourceMappingURL=GeneralizedLorentzian.js.map","import { GAUSSIAN_EXP_FACTOR } from '../../../util/constants';\nimport { getGaussianFactor, gaussianFwhmToWidth, gaussianWidthToFWHM, } from '../../1d/gaussian/Gaussian';\nexport class Gaussian2D {\n    constructor(options = {}) {\n        let { fwhm = 20, sd } = options;\n        fwhm = ensureFWHM2D(fwhm, sd);\n        this.fwhmX = fwhm.x;\n        this.fwhmY = fwhm.y;\n    }\n    fct(x, y) {\n        return gaussian2DFct(x, y, this.fwhmX, this.fwhmY);\n    }\n    getData(options = {}) {\n        return getGaussian2DData({\n            fwhm: { x: this.fwhmX, y: this.fwhmY },\n        }, options);\n    }\n    getFactor(volume = 1) {\n        return getGaussianFactor(volume);\n    }\n    getVolume(height = calculateGaussian2DHeight({\n        fwhm: { x: this.fwhmX, y: this.fwhmY },\n        volume: 1,\n    })) {\n        return getGaussian2DVolume({\n            fwhm: { x: this.fwhmX, y: this.fwhmY },\n            height,\n        });\n    }\n    widthToFWHM(width) {\n        return gaussianWidthToFWHM(width);\n    }\n    fwhmToWidth(fwhm) {\n        return gaussianFwhmToWidth(fwhm);\n    }\n    calculateHeight(volume = 1) {\n        return calculateGaussian2DHeight({\n            volume,\n            fwhm: { x: this.fwhmX, y: this.fwhmY },\n        });\n    }\n    set fwhm(fwhm) {\n        fwhm = ensureXYNumber(fwhm);\n        this.fwhmX = fwhm.x;\n        this.fwhmY = fwhm.y;\n    }\n}\nexport const gaussian2DFct = (x, y, xFWHM, yFWHM) => {\n    return Math.exp(GAUSSIAN_EXP_FACTOR * (Math.pow(x / xFWHM, 2) + Math.pow(y / yFWHM, 2)));\n};\nexport const getGaussian2DData = (shape, options = {}) => {\n    let { fwhm = 50, sd } = shape;\n    fwhm = ensureFWHM2D(fwhm, sd);\n    let { factor = getGaussianFactor(), length = { x: 0, y: 0 }, height = calculateGaussian2DHeight({ fwhm, volume: 1 }), } = options;\n    factor = ensureXYNumber(factor);\n    length = ensureXYNumber(length);\n    for (const axis of ['x', 'y']) {\n        if (!length[axis]) {\n            length[axis] = Math.min(Math.ceil(fwhm[axis] * factor[axis]), Math.pow(2, 25) - 1);\n            if (length[axis] % 2 === 0)\n                length[axis]++;\n        }\n    }\n    const xCenter = (length.x - 1) / 2;\n    const yCenter = (length.y - 1) / 2;\n    const data = new Array(length.x);\n    for (let i = 0; i < length.x; i++) {\n        data[i] = new Float64Array(length.y);\n    }\n    for (let i = 0; i < length.x; i++) {\n        for (let j = 0; j < length.y; j++) {\n            data[i][j] =\n                gaussian2DFct(i - xCenter, j - yCenter, fwhm.x, fwhm.y) * height;\n        }\n    }\n    return data;\n};\nexport const calculateGaussian2DHeight = (options = {}) => {\n    let { volume = 1, fwhm = 50, sd } = options;\n    fwhm = ensureFWHM2D(fwhm, sd);\n    return (volume * Math.LN2 * 4) / (Math.PI * fwhm.y * fwhm.x);\n};\nexport const getGaussian2DVolume = (options = {}) => {\n    let { fwhm = 50, height = 1, sd } = options;\n    fwhm = ensureFWHM2D(fwhm, sd);\n    return (height * Math.PI * fwhm.y * fwhm.x) / Math.LN2 / 4;\n};\nfunction ensureXYNumber(input) {\n    return typeof input !== 'object' ? { x: input, y: input } : { ...input };\n}\nfunction ensureFWHM2D(fwhm, sd) {\n    if (sd !== undefined) {\n        let sdObject = ensureXYNumber(sd);\n        return {\n            x: gaussianWidthToFWHM(2 * sdObject.x),\n            y: gaussianWidthToFWHM(2 * sdObject.y),\n        };\n    }\n    else if (fwhm !== undefined) {\n        return ensureXYNumber(fwhm);\n    }\n    else {\n        throw new Error('ensureFWHM2D must have either fwhm or sd defined');\n    }\n}\n//# sourceMappingURL=Gaussian2D.js.map","import { Gaussian } from './gaussian/Gaussian';\nimport { GeneralizedLorentzian } from './generalizedLorentzian/GeneralizedLorentzian';\nimport { Lorentzian } from './lorentzian/Lorentzian';\nimport { LorentzianDispersive } from './lorentzianDispersive/LorentzianDispersive';\nimport { PseudoVoigt } from './pseudoVoigt/PseudoVoigt';\n/**\n * Generate a instance of a specific kind of shape.\n */\nexport function getShape1D(shape) {\n    const { kind } = shape;\n    switch (kind) {\n        case 'gaussian':\n            return new Gaussian(shape);\n        case 'lorentzian':\n            return new Lorentzian(shape);\n        case 'pseudoVoigt':\n            return new PseudoVoigt(shape);\n        case 'lorentzianDispersive':\n            return new LorentzianDispersive(shape);\n        case 'generalizedLorentzian':\n            return new GeneralizedLorentzian(shape);\n        default: {\n            throw Error(`Unknown distribution ${kind}`);\n        }\n    }\n}\n//# sourceMappingURL=getShape1D.js.map","import { Gaussian2D } from './gaussian2D/Gaussian2D';\n/**\n * Generate a instance of a specific kind of shape.\n */\nexport function getShape2D(shape) {\n    const { kind } = shape;\n    switch (kind) {\n        case 'gaussian':\n            return new Gaussian2D(shape);\n        default: {\n            const unHandled = kind;\n            // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n            throw Error(`Unknown distribution ${unHandled}`);\n        }\n    }\n}\n//# sourceMappingURL=getShape2D.js.map","/**\n * This function returns the sumOfShapes function\n * This function gives sumOfShapes access to the peak list and the associated data\n * @param internalPeaks\n */\nexport function getSumOfShapes(internalPeaks) {\n    return function sumOfShapes(parameters) {\n        return (x) => {\n            let totalY = 0;\n            for (const peak of internalPeaks) {\n                const peakX = parameters[peak.fromIndex];\n                const y = parameters[peak.fromIndex + 1];\n                for (let i = 2; i < parameters.length; i++) {\n                    const shapeFctKey = peak.parameters[i];\n                    peak.shapeFct[shapeFctKey] = parameters[peak.fromIndex + i];\n                }\n                totalY += y * peak.shapeFct.fct(x - peakX);\n            }\n            return totalY;\n        };\n    };\n}\n//# sourceMappingURL=getSumOfShapes.js.map","/**\n * Asserts that value is truthy.\n *\n * @param value - Value to check.\n * @param message - Optional error message to throw.\n */\nexport function assert(value, message) {\n    if (!value) {\n        throw new Error(message ? message : 'unreachable');\n    }\n}\n//# sourceMappingURL=assert.js.map","export const DefaultParameters = {\n    x: {\n        init: (peak) => peak.x,\n        min: (peak, peakShape) => peak.x - peakShape.fwhm * 2,\n        max: (peak, peakShape) => peak.x + peakShape.fwhm * 2,\n        gradientDifference: (peak, peakShape) => peakShape.fwhm * 2e-3,\n    },\n    y: {\n        init: (peak) => peak.y,\n        min: (peak) => (peak.y < 0 ? -1.1 : 0),\n        max: (peak) => (peak.y < 0 ? 0 : 1.1),\n        gradientDifference: () => 1e-3,\n    },\n    fwhm: {\n        init: (peak, peakShape) => peakShape.fwhm,\n        min: (peak, peakShape) => peakShape.fwhm * 0.25,\n        max: (peak, peakShape) => peakShape.fwhm * 4,\n        gradientDifference: (peak, peakShape) => peakShape.fwhm * 2e-3,\n    },\n    mu: {\n        init: (peak, peakShape) => peakShape.mu,\n        min: () => 0,\n        max: () => 1,\n        gradientDifference: () => 0.01,\n    },\n    gamma: {\n        init: (peak, peakShape) => peakShape.gamma || 0.5,\n        min: () => -1,\n        max: () => 2,\n        gradientDifference: () => 0.01,\n    },\n};\n//# sourceMappingURL=DefaultParameters.js.map","import { getShape1D } from 'ml-peak-shape-generator';\nimport { assert } from \"../assert.js\";\nimport { DefaultParameters } from \"./DefaultParameters.js\";\nconst properties = ['init', 'min', 'max', 'gradientDifference'];\n/**\n * Return an array of internalPeaks that contains the exact init, min, max values based on the options\n * @param peaks\n * @param minMaxY\n * @param options\n * @returns\n */\nexport function getInternalPeaks(peaks, minMaxY, options = {}) {\n    let index = 0;\n    const internalPeaks = [];\n    const { baseline: shiftValue = minMaxY.min } = options;\n    const normalizedPeaks = peaks.map((peak) => {\n        return {\n            ...peak,\n            y: (peak.y - shiftValue) / minMaxY.range,\n        };\n    });\n    for (const peak of normalizedPeaks) {\n        const { id, shape = options.shape ? options.shape : { kind: 'gaussian' } } = peak;\n        const shapeFct = getShape1D(shape);\n        const parameters = ['x', 'y', ...shapeFct.getParameters()];\n        const propertiesValues = {\n            min: [],\n            max: [],\n            init: [],\n            gradientDifference: [],\n        };\n        for (const parameter of parameters) {\n            for (const property of properties) {\n                // check if the property is specified in the peak\n                let propertyValue = peak?.parameters?.[parameter]?.[property];\n                if (propertyValue) {\n                    propertyValue = getNormalizedValue(propertyValue, parameter, property, minMaxY, options.baseline);\n                    propertiesValues[property].push(propertyValue);\n                    continue;\n                }\n                // check if there are some global option, it could be a number or a callback\n                let generalParameterValue = options?.parameters?.[parameter]?.[property];\n                if (generalParameterValue) {\n                    if (typeof generalParameterValue === 'number') {\n                        generalParameterValue = getNormalizedValue(generalParameterValue, parameter, property, minMaxY, options.baseline);\n                        propertiesValues[property].push(generalParameterValue);\n                        continue;\n                    }\n                    else {\n                        let value = generalParameterValue(peak);\n                        value = getNormalizedValue(value, parameter, property, minMaxY, options.baseline);\n                        propertiesValues[property].push(value);\n                        continue;\n                    }\n                }\n                // we just need to take the default parameters\n                assert(DefaultParameters[parameter], `No default parameter for ${parameter}`);\n                const defaultParameterValues = DefaultParameters[parameter][property];\n                //@ts-expect-error should never happen\n                propertiesValues[property].push(defaultParameterValues(peak, shapeFct));\n            }\n        }\n        const fromIndex = index;\n        const toIndex = fromIndex + parameters.length - 1;\n        index += toIndex - fromIndex + 1;\n        internalPeaks.push({\n            id,\n            shape,\n            shapeFct,\n            parameters,\n            propertiesValues,\n            fromIndex,\n            toIndex,\n        });\n    }\n    return internalPeaks;\n}\nfunction getNormalizedValue(value, parameter, property, minMaxY, baseline) {\n    if (parameter === 'y') {\n        if (property === 'gradientDifference') {\n            return value;\n        }\n        else {\n            return baseline !== undefined\n                ? (value - baseline) / minMaxY.range\n                : (value - minMaxY.min) / minMaxY.range;\n        }\n    }\n    return value;\n}\n//# sourceMappingURL=getInternalPeaks.js.map","import { isAnyArray } from 'is-any-array';\nexport default function checkOptions(data, options) {\n    const { timeout, initialValues, weights = 1, damping = 1e-2, dampingStepUp = 11, dampingStepDown = 9, maxIterations = 100, errorTolerance = 1e-7, centralDifference = false, gradientDifference = 10e-2, improvementThreshold = 1e-3, } = options;\n    let { minValues, maxValues } = options;\n    if (damping <= 0) {\n        throw new Error('The damping option must be a positive number');\n    }\n    else if (!data.x || !data.y) {\n        throw new Error('The data parameter must have x and y elements');\n    }\n    else if (!isAnyArray(data.x) ||\n        data.x.length < 2 ||\n        !isAnyArray(data.y) ||\n        data.y.length < 2) {\n        throw new Error('The data parameter elements must be an array with more than 2 points');\n    }\n    else if (data.x.length !== data.y.length) {\n        throw new Error('The data parameter elements must have the same size');\n    }\n    if (!(initialValues && initialValues.length > 0)) {\n        throw new Error('The initialValues option is mandatory and must be an array');\n    }\n    const parameters = Array.from(initialValues);\n    const parLen = parameters.length;\n    maxValues = maxValues || new Array(parLen).fill(Number.MAX_SAFE_INTEGER);\n    minValues = minValues || new Array(parLen).fill(Number.MIN_SAFE_INTEGER);\n    if (maxValues.length !== minValues.length) {\n        throw new Error('minValues and maxValues must be the same size');\n    }\n    const gradientDifferenceArray = getGradientDifferenceArray(gradientDifference, parameters);\n    const filler = getFiller(weights, data.x.length);\n    const checkTimeout = getCheckTimeout(timeout);\n    const weightSquare = Array.from({ length: data.x.length }, (_, i) => filler(i));\n    return {\n        checkTimeout,\n        minValues,\n        maxValues,\n        parameters,\n        weightSquare,\n        damping,\n        dampingStepUp,\n        dampingStepDown,\n        maxIterations,\n        errorTolerance,\n        centralDifference,\n        gradientDifference: gradientDifferenceArray,\n        improvementThreshold,\n    };\n}\nfunction getGradientDifferenceArray(gradientDifference, parameters) {\n    if (typeof gradientDifference === 'number') {\n        return new Array(parameters.length).fill(gradientDifference);\n    }\n    else if (isAnyArray(gradientDifference)) {\n        const parLen = parameters.length;\n        if (gradientDifference.length !== parLen) {\n            return new Array(parLen).fill(gradientDifference[0]);\n        }\n        return Array.from(gradientDifference);\n    }\n    throw new Error('gradientDifference should be a number or array with length equal to the number of parameters');\n}\nfunction getFiller(weights, dataLength) {\n    if (typeof weights === 'number') {\n        const value = 1 / weights ** 2;\n        return () => value;\n    }\n    else if (isAnyArray(weights)) {\n        if (weights.length < dataLength) {\n            const value = 1 / weights[0] ** 2;\n            return () => value;\n        }\n        return (i) => 1 / weights[i] ** 2;\n    }\n    throw new Error('weights should be a number or array with length equal to the number of data points');\n}\nfunction getCheckTimeout(timeout) {\n    if (timeout !== undefined) {\n        if (typeof timeout !== 'number') {\n            throw new Error('timeout should be a number');\n        }\n        const endTime = Date.now() + timeout * 1000;\n        return () => Date.now() > endTime;\n    }\n    else {\n        return () => false;\n    }\n}\n//# sourceMappingURL=check_options.js.map","/**\n * the sum of the weighted squares of the errors (or weighted residuals) between the data.y\n * and the curve-fit function.\n *\n * @param data - Array of points to fit in the format [x1, x2, ... ], [y1, y2, ... ]\n * @param parameters - Array of current parameter values\n * @param parameterizedFunction - The parameters and returns a function with the independent variable as a parameter\n * @param weightSquare - Square of weights (must be same length as data.x)\n */\nexport default function errorCalculation(data, parameters, parameterizedFunction, weightSquare) {\n    let error = 0;\n    const func = parameterizedFunction(parameters);\n    for (let i = 0; i < data.x.length; i++) {\n        error += (data.y[i] - func(data.x[i])) ** 2 / weightSquare[i];\n    }\n    return error;\n}\n//# sourceMappingURL=error_calculation.js.map","import { Matrix } from 'ml-matrix';\n/**\n * Difference of the matrix function over the parameters\n * @param data Array of points to fit in the format [x1, x2, ... ], [y1, y2, ... ]\n * @param evaluatedData - Array of previous evaluated function values\n * @param params - Array of previous parameter values\n * @param gradientDifference - The step size to approximate the jacobian matrix\n * @param centralDifference - If true the jacobian matrix is approximated by central differences otherwise by forward differences\n * @param paramFunction - The parameters and returns a function with the independent variable as a parameter\n */\nexport default function gradientFunction(data, evaluatedData, params, gradientDifference, paramFunction, centralDifference) {\n    const nbParams = params.length;\n    const nbPoints = data.x.length;\n    const ans = Matrix.zeros(nbParams, nbPoints);\n    let rowIndex = 0;\n    for (let param = 0; param < nbParams; param++) {\n        if (gradientDifference[param] === 0)\n            continue;\n        let delta = gradientDifference[param];\n        let auxParams = params.slice();\n        auxParams[param] += delta;\n        const funcParam = paramFunction(auxParams);\n        if (!centralDifference) {\n            for (let point = 0; point < nbPoints; point++) {\n                ans.set(rowIndex, point, (evaluatedData[point] - funcParam(data.x[point])) / delta);\n            }\n        }\n        else {\n            auxParams = params.slice();\n            auxParams[param] -= delta;\n            delta *= 2;\n            const funcParam2 = paramFunction(auxParams);\n            for (let point = 0; point < nbPoints; point++) {\n                ans.set(rowIndex, point, (funcParam2(data.x[point]) - funcParam(data.x[point])) / delta);\n            }\n        }\n        rowIndex++;\n    }\n    return ans;\n}\n//# sourceMappingURL=gradient_function.js.map","import { inverse, Matrix } from 'ml-matrix';\nimport gradientFunction from \"./gradient_function.js\";\n/**\n * Matrix function over the samples\n *\n * @param data - Array of points to fit in the format [x1, x2, ... ], [y1, y2, ... ]\n * @param evaluatedData - Array of previous evaluated function values\n */\nfunction matrixFunction(data, evaluatedData) {\n    const m = data.x.length;\n    const ans = new Matrix(m, 1);\n    for (let point = 0; point < m; point++) {\n        ans.set(point, 0, data.y[point] - evaluatedData[point]);\n    }\n    return ans;\n}\n/**\n * Iteration for Levenberg-Marquardt\n *\n * @param data - Array of points to fit in the format [x1, x2, ... ], [y1, y2, ... ]\n * @param params - Array of previous parameter values\n * @param damping - Levenberg-Marquardt parameter\n * @param gradientDifference - The step size to approximate the jacobian matrix\n * @param centralDifference - If true the jacobian matrix is approximated by central differences otherwise by forward differences\n * @param parameterizedFunction - The parameters and returns a function with the independent variable as a parameter\n * @param weights - scale the gradient and residual error by weights\n */\nexport default function step(data, params, damping, gradientDifference, parameterizedFunction, centralDifference, weights) {\n    const identity = Matrix.eye(params.length, params.length, damping);\n    const func = parameterizedFunction(params);\n    const evaluatedData = new Float64Array(data.x.length);\n    for (let i = 0; i < data.x.length; i++) {\n        evaluatedData[i] = func(data.x[i]);\n    }\n    const gradientFunc = gradientFunction(data, evaluatedData, params, gradientDifference, parameterizedFunction, centralDifference);\n    const residualError = matrixFunction(data, evaluatedData);\n    const inverseMatrix = inverse(identity.add(gradientFunc.mmul(gradientFunc.transpose().scale('row', { scale: weights }))));\n    const jacobianWeightResidualError = gradientFunc.mmul(residualError.scale('row', { scale: weights }));\n    const perturbations = inverseMatrix.mmul(jacobianWeightResidualError);\n    return {\n        perturbations,\n        jacobianWeightResidualError,\n    };\n}\n//# sourceMappingURL=step.js.map","import checkOptions from \"./check_options.js\";\nimport errorCalculation from \"./error_calculation.js\";\nimport step from \"./step.js\";\n/**\n * Curve fitting algorithm\n * @param data - Array of points to fit in the format [x1, x2, ... ], [y1, y2, ... ]\n * @param parameterizedFunction - Takes an array of parameters and returns a function with the independent variable as its sole argument\n * @param options - Options object\n */\nexport function levenbergMarquardt(data, parameterizedFunction, options) {\n    const checkedOptions = checkOptions(data, options);\n    const { checkTimeout, minValues, maxValues, parameters, weightSquare, dampingStepUp, dampingStepDown, maxIterations, errorTolerance, centralDifference, gradientDifference, improvementThreshold, } = checkedOptions;\n    let damping = checkedOptions.damping;\n    let error = errorCalculation(data, parameters, parameterizedFunction, weightSquare);\n    let optimalError = error;\n    let optimalParameters = parameters.slice();\n    let converged = error <= errorTolerance;\n    let iteration = 0;\n    for (; iteration < maxIterations && !converged; iteration++) {\n        const previousError = error;\n        const { perturbations, jacobianWeightResidualError } = step(data, parameters, damping, gradientDifference, parameterizedFunction, centralDifference, weightSquare);\n        for (let k = 0; k < parameters.length; k++) {\n            parameters[k] = Math.min(Math.max(minValues[k], parameters[k] - perturbations.get(k, 0)), maxValues[k]);\n        }\n        error = errorCalculation(data, parameters, parameterizedFunction, weightSquare);\n        if (isNaN(error))\n            break;\n        if (error < optimalError - errorTolerance) {\n            optimalError = error;\n            optimalParameters = parameters.slice();\n        }\n        const improvementMetric = (previousError - error) /\n            perturbations\n                .transpose()\n                .mmul(perturbations.mul(damping).add(jacobianWeightResidualError))\n                .get(0, 0);\n        if (improvementMetric > improvementThreshold) {\n            damping = Math.max(damping / dampingStepDown, 1e-7);\n        }\n        else {\n            damping = Math.min(damping * dampingStepUp, 1e7);\n        }\n        if (checkTimeout()) {\n            throw new Error(`The execution time is over to ${options.timeout} seconds`);\n        }\n        converged = error <= errorTolerance;\n    }\n    return {\n        parameterValues: optimalParameters,\n        parameterError: optimalError,\n        iterations: iteration,\n    };\n}\n//# sourceMappingURL=levenberg_marquardt.js.map","/**\n * Preparata, F. P., & Shamos, M. I. (2012). Computational geometry: an introduction. Springer Science & Business Media.\n * @param {Array} x - The array with x coordinates of the points.\n * @param {Array} y - The array with y coordinates of the points.\n * @return {Array} The indices of the points of anticlockwise lower convex hull\n * @private\n */\nexport default function antiLowerConvexHull(x, y) {\n  if (x.length !== y.length) {\n    throw new RangeError('X and Y vectors has different dimensions');\n  }\n\n  const nbPoints = x.length - 1;\n  if (nbPoints === 0) return [0];\n  if (nbPoints === 1) return [0, 1];\n\n  let currentPoint = 0;\n  let result = new Array(x.length).fill(true);\n  while (true) {\n    const a = currentPoint;\n    const b = moveOn(currentPoint, nbPoints, result);\n    const c = moveOn(moveOn(currentPoint, nbPoints, result), nbPoints, result);\n\n    const det =\n      x[c] * (y[a] - y[b]) + x[a] * (y[b] - y[c]) + x[b] * (y[c] - y[a]);\n\n    const leftTurn = det >= 0;\n\n    if (leftTurn) {\n      currentPoint = b;\n    } else {\n      result[b] = false;\n      currentPoint = moveBack(currentPoint, nbPoints, result);\n    }\n    if (c === nbPoints) break;\n  }\n\n  return result\n    .map((item, index) => (item === false ? false : index))\n    .filter((item) => item !== false);\n}\n\n/**\n * @param {number} currentPoint - The index of the current point to make the move\n * @param {number} nbPoints - The total number of points in the array\n * @param {Array} vector - The array with the points\n * @return {number} the index of the point after the move\n * @private\n */\n\nfunction moveBack(currentPoint, nbPoints, vector) {\n  let counter = currentPoint - 1;\n  while (vector[counter] === false) counter--;\n  return currentPoint === 0 ? nbPoints : counter;\n}\n\nfunction moveOn(currentPoint, nbPoints, vector) {\n  let counter = currentPoint + 1;\n  while (vector[counter] === false) counter++;\n  return currentPoint === nbPoints ? 0 : counter;\n}\n","import { xNorm, xMaxValue, xMinValue } from 'ml-spectra-processing';\n\nimport antiLowerConvexHull from './util/antiLowerConvexHull';\n\n/**\n * Performs a global optimization of required parameters\n * It will return an object containing:\n * - `minFunctionValue`: The minimum value found for the objetive function\n * - `optima`: Array of Array of values for all the variables where the function reach its minimum value\n * - `iterations`: Number of iterations performed in the process\n * - `finalState`: Internal state allowing to continue optimization (initialState)\n * @param {function} objectiveFunction Function to evaluate. It should accept an array of variables\n * @param {Array} lowerBoundaries Array containing for each variable the lower boundary\n * @param {Array} upperBoundaries Array containing for each variable the higher boundary\n * @param {Object} [options={}]\n * @param {number} [options.iterations] - Number of iterations.\n * @param {number} [options.epsilon] - Tolerance to choose best current value.\n * @param {number} [options.tolerance] - Minimum tollerance of the function.\n * @param {number} [options.tolerance2] - Minimum tollerance of the function.\n * @param {Object} [options.initialState={}}] - finalState of previous optimization.\n * @return {Object} {finalState, iterations, minFunctionValue}\n * */\n\nexport default function direct(\n  objectiveFunction,\n  lowerBoundaries,\n  upperBoundaries,\n  options = {},\n) {\n  const {\n    iterations = 50,\n    epsilon = 1e-4,\n    tolerance = 1e-16,\n    tolerance2 = 1e-12,\n    initialState = {},\n  } = options;\n\n  if (\n    objectiveFunction === undefined ||\n    lowerBoundaries === undefined ||\n    upperBoundaries === undefined\n  ) {\n    throw new RangeError('There is something undefined');\n  }\n\n  lowerBoundaries = new Float64Array(lowerBoundaries);\n  upperBoundaries = new Float64Array(upperBoundaries);\n\n  if (lowerBoundaries.length !== upperBoundaries.length) {\n    throw new Error(\n      'Lower bounds and Upper bounds for x are not of the same length',\n    );\n  }\n\n  //-------------------------------------------------------------------------\n  //                        STEP 1. Initialization\n  //-------------------------------------------------------------------------\n  let n = lowerBoundaries.length;\n  let diffBorders = upperBoundaries.map((x, i) => x - lowerBoundaries[i]);\n\n  let {\n    numberOfRectangles = 0,\n    totalIterations = 0,\n    unitaryCoordinates = [new Float64Array(n).fill(0.5)],\n    middlePoint = new Float64Array(n).map((value, index) => {\n      return (\n        lowerBoundaries[index] +\n        unitaryCoordinates[0][index] * diffBorders[index]\n      );\n    }),\n    bestCurrentValue = objectiveFunction(middlePoint),\n    fCalls = 1,\n    smallerDistance = 0,\n    edgeSizes = [new Float64Array(n).fill(0.5)],\n    diagonalDistances = [Math.sqrt(n * 0.5 ** 2)],\n    functionValues = [bestCurrentValue],\n    differentDistances = diagonalDistances,\n    smallerValuesByDistance = [bestCurrentValue],\n    choiceLimit = undefined,\n  } = initialState;\n  if (\n    initialState.originalCoordinates &&\n    initialState.originalCoordinates.length > 0\n  ) {\n    bestCurrentValue = xMinValue(functionValues);\n    choiceLimit =\n      epsilon * Math.abs(bestCurrentValue) > 1e-8\n        ? epsilon * Math.abs(bestCurrentValue)\n        : 1e-8;\n\n    smallerDistance = getMinIndex(\n      functionValues,\n      diagonalDistances,\n      choiceLimit,\n      bestCurrentValue,\n    );\n\n    unitaryCoordinates = initialState.originalCoordinates.slice();\n    for (let j = 0; j < unitaryCoordinates.length; j++) {\n      for (let i = 0; i < lowerBoundaries.length; i++) {\n        unitaryCoordinates[j][i] =\n          (unitaryCoordinates[j][i] - lowerBoundaries[i]) / diffBorders[i];\n      }\n    }\n  }\n\n  let iteration = 0;\n  //-------------------------------------------------------------------------\n  //                          Iteration loop\n  //-------------------------------------------------------------------------\n\n  while (iteration < iterations) {\n    //----------------------------------------------------------------------\n    //  STEP 2. Identify the set S of all potentially optimal rectangles\n    //----------------------------------------------------------------------\n\n    let S1 = [];\n    let idx = differentDistances.findIndex(\n      // eslint-disable-next-line no-loop-func\n      (e) => e === diagonalDistances[smallerDistance],\n    );\n    let counter = 0;\n    for (let i = idx; i < differentDistances.length; i++) {\n      for (let f = 0; f < functionValues.length; f++) {\n        if (\n          (functionValues[f] === smallerValuesByDistance[i]) &\n          (diagonalDistances[f] === differentDistances[i])\n        ) {\n          S1[counter++] = f;\n        }\n      }\n    }\n\n    let optimumValuesIndex, S3;\n    if (differentDistances.length - idx > 1) {\n      let a1 = diagonalDistances[smallerDistance];\n      let b1 = functionValues[smallerDistance];\n      let a2 = differentDistances[differentDistances.length - 1];\n      let b2 = smallerValuesByDistance[differentDistances.length - 1];\n      let slope = (b2 - b1) / (a2 - a1);\n      let constant = b1 - slope * a1;\n      let S2 = new Uint32Array(counter);\n      counter = 0;\n      for (let i = 0; i < S2.length; i++) {\n        let j = S1[i];\n        if (\n          functionValues[j] <=\n          slope * diagonalDistances[j] + constant + tolerance2\n        ) {\n          S2[counter++] = j;\n        }\n      }\n\n      let xHull = [];\n      let yHull = [];\n      for (let i = 0; i < counter; i++) {\n        xHull.push(diagonalDistances[S2[i]]);\n        yHull.push(functionValues[S2[i]]);\n      }\n\n      let lowerIndexHull = antiLowerConvexHull(xHull, yHull);\n\n      S3 = [];\n      for (let i = 0; i < lowerIndexHull.length; i++) {\n        S3.push(S2[lowerIndexHull[i]]);\n      }\n    } else {\n      S3 = S1.slice(0, counter);\n    }\n    optimumValuesIndex = S3;\n    //--------------------------------------------------------------\n    // STEPS 3,5: Select any rectangle j in S\n    //--------------------------------------------------------------\n    for (let k = 0; k < optimumValuesIndex.length; k++) {\n      let j = optimumValuesIndex[k];\n      let largerSide = xMaxValue(edgeSizes[j]);\n      let largeSidesIndex = new Uint32Array(edgeSizes[j].length);\n      counter = 0;\n      for (let i = 0; i < edgeSizes[j].length; i++) {\n        if (Math.abs(edgeSizes[j][i] - largerSide) < tolerance) {\n          largeSidesIndex[counter++] = i;\n        }\n      }\n      let delta = (2 * largerSide) / 3;\n      let bestFunctionValues = [];\n      for (let r = 0; r < counter; r++) {\n        let i = largeSidesIndex[r];\n        let firstMiddleCenter = unitaryCoordinates[j].slice();\n        let secondMiddleCenter = unitaryCoordinates[j].slice();\n        firstMiddleCenter[i] += delta;\n        secondMiddleCenter[i] -= delta;\n        let firstMiddleValue = new Float64Array(firstMiddleCenter.length);\n        let secondMiddleValue = new Float64Array(secondMiddleCenter.length);\n        for (let i = 0; i < firstMiddleCenter.length; i++) {\n          firstMiddleValue[i] =\n            lowerBoundaries[i] + firstMiddleCenter[i] * diffBorders[i];\n          secondMiddleValue[i] =\n            lowerBoundaries[i] + secondMiddleCenter[i] * diffBorders[i];\n        }\n        let firstMinValue = objectiveFunction(firstMiddleValue);\n        let secondMinValue = objectiveFunction(secondMiddleValue);\n        fCalls += 2;\n        bestFunctionValues.push({\n          minValue: Math.min(firstMinValue, secondMinValue),\n          index: r,\n        });\n        // [Math.min(firstMinValue, secondMinValue), r];\n        unitaryCoordinates.push(firstMiddleCenter, secondMiddleCenter);\n        functionValues.push(firstMinValue, secondMinValue);\n      }\n\n      let b = bestFunctionValues.sort((a, b) => a.minValue - b.minValue);\n      for (let r = 0; r < counter; r++) {\n        let u = largeSidesIndex[b[r].index];\n        let ix1 = numberOfRectangles + 2 * (b[r].index + 1) - 1;\n        let ix2 = numberOfRectangles + 2 * (b[r].index + 1);\n        edgeSizes[j][u] = delta / 2;\n        edgeSizes[ix1] = edgeSizes[j].slice();\n        edgeSizes[ix2] = edgeSizes[j].slice();\n        diagonalDistances[j] = xNorm(edgeSizes[j]);\n        diagonalDistances[ix1] = diagonalDistances[j];\n        diagonalDistances[ix2] = diagonalDistances[j];\n      }\n      numberOfRectangles += 2 * counter;\n    }\n\n    //--------------------------------------------------------------\n    //                  Update\n    //--------------------------------------------------------------\n\n    bestCurrentValue = xMinValue(functionValues);\n\n    choiceLimit =\n      epsilon * Math.abs(bestCurrentValue) > 1e-8\n        ? epsilon * Math.abs(bestCurrentValue)\n        : 1e-8;\n\n    smallerDistance = getMinIndex(\n      functionValues,\n      diagonalDistances,\n      choiceLimit,\n      bestCurrentValue,\n      iteration,\n    );\n\n    differentDistances = Array.from(new Set(diagonalDistances));\n    differentDistances = differentDistances.sort((a, b) => a - b);\n\n    smallerValuesByDistance = [];\n    for (let i = 0; i < differentDistances.length; i++) {\n      let minIndex;\n      let minValue = Number.POSITIVE_INFINITY;\n      for (let k = 0; k < diagonalDistances.length; k++) {\n        if (diagonalDistances[k] === differentDistances[i]) {\n          if (functionValues[k] < minValue) {\n            minValue = functionValues[k];\n            minIndex = k;\n          }\n        }\n      }\n      smallerValuesByDistance.push(functionValues[minIndex]);\n    }\n\n    let currentMin = [];\n    for (let j = 0; j < functionValues.length; j++) {\n      if (functionValues[j] === bestCurrentValue) {\n        let temp = [];\n        for (let i = 0; i < lowerBoundaries.length; i++) {\n          temp.push(\n            lowerBoundaries[i] + unitaryCoordinates[j][i] * diffBorders[i],\n          );\n        }\n        currentMin.push(temp);\n      }\n    }\n    iteration += 1;\n  }\n  //--------------------------------------------------------------\n  //                  Saving results\n  //--------------------------------------------------------------\n\n  let result = {};\n  result.minFunctionValue = bestCurrentValue;\n  result.iterations = iteration;\n  let originalCoordinates = [];\n  for (let j = 0; j < numberOfRectangles + 1; j++) {\n    let pair = [];\n    for (let i = 0; i < lowerBoundaries.length; i++) {\n      pair.push(lowerBoundaries[i] + unitaryCoordinates[j][i] * diffBorders[i]);\n    }\n    originalCoordinates.push(pair);\n  }\n\n  result.finalState = {\n    numberOfRectangles,\n    totalIterations: (totalIterations += iterations),\n    originalCoordinates,\n    middlePoint,\n    fCalls,\n    smallerDistance,\n    edgeSizes,\n    diagonalDistances,\n    functionValues,\n    differentDistances,\n    smallerValuesByDistance,\n    choiceLimit,\n  };\n\n  let minimizer = [];\n  for (let i = 0; i < functionValues.length; i++) {\n    if (functionValues[i] === bestCurrentValue) {\n      minimizer.push(originalCoordinates[i]);\n    }\n  }\n\n  result.optima = minimizer;\n  return result;\n}\n\nfunction getMinIndex(\n  functionValues,\n  diagonalDistances,\n  choiceLimit,\n  bestCurrentValue,\n) {\n  let item = [];\n  for (let i = 0; i < functionValues.length; i++) {\n    item[i] =\n      Math.abs(functionValues[i] - (bestCurrentValue + choiceLimit)) /\n      diagonalDistances[i];\n  }\n  const min = xMinValue(item);\n  let result = item.findIndex((x) => x === min);\n  return result;\n}\n","import direct from 'ml-direct';\nexport function directOptimization(data, sumOfShapes, options) {\n    const { minValues, maxValues, maxIterations, epsilon, tolerance, tolerance2, initialState, } = options;\n    const objectiveFunction = getObjectiveFunction(data, sumOfShapes);\n    const result = direct(objectiveFunction, \n    // direct internally converts ArrayLike to Float64Array,\n    // so we can safely cast minValues and maxValues to number[]\n    minValues, maxValues, {\n        iterations: maxIterations,\n        epsilon,\n        tolerance,\n        tolerance2,\n        initialState,\n    });\n    const { optima } = result;\n    return {\n        parameterError: result.minFunctionValue,\n        iterations: result.iterations,\n        parameterValues: optima[0],\n    };\n}\nfunction getObjectiveFunction(data, sumOfShapes) {\n    const { x, y } = data;\n    const nbPoints = x.length;\n    return (parameters) => {\n        const fct = sumOfShapes(parameters);\n        let error = 0;\n        for (let i = 0; i < nbPoints; i++) {\n            error += (y[i] - fct(x[i])) ** 2;\n        }\n        return error;\n    };\n}\n//# sourceMappingURL=directOptimization.js.map","import { levenbergMarquardt } from 'ml-levenberg-marquardt';\nimport { directOptimization } from \"./wrappers/directOptimization.js\";\n/** Algorithm to select the method.\n * @param optimizationOptions - Optimization options\n * @returns - The algorithm and optimization options\n */\nexport function selectMethod(optimizationOptions = {}) {\n    const { kind = 'lm', options } = optimizationOptions;\n    switch (kind) {\n        case 'lm':\n        case 'levenbergMarquardt':\n            return {\n                algorithm: levenbergMarquardt,\n                optimizationOptions: {\n                    damping: 1.5,\n                    maxIterations: 100,\n                    errorTolerance: 1e-8,\n                    ...options,\n                },\n            };\n        case 'direct': {\n            return {\n                algorithm: directOptimization,\n                optimizationOptions: {\n                    iterations: 20,\n                    epsilon: 1e-4,\n                    tolerance: 1e-16,\n                    tolerance2: 1e-12,\n                    initialState: {},\n                    ...options,\n                },\n            };\n        }\n        default:\n            throw new Error(`Unknown fitting algorithm`);\n    }\n}\n//# sourceMappingURL=selectMethod.js.map","import { xMinMaxValues } from 'ml-spectra-processing';\nimport { getSumOfShapes } from \"./shapes/getSumOfShapes.js\";\nimport { getInternalPeaks } from \"./util/internalPeaks/getInternalPeaks.js\";\nimport { selectMethod } from \"./util/selectMethod.js\";\n/**\n * Fits a set of points to the sum of a set of bell functions.\n *\n * @param data - An object containing the x and y data to be fitted.\n * @param peaks - A list of initial parameters to be optimized. e.g. coming from a peak picking [{x, y, width}].\n * @param options - Options for optimize\n * @returns - An object with fitting error and the list of optimized parameters { parameters: [ {x, y, width} ], error } if the kind of shape is pseudoVoigt mu parameter is optimized.\n */\nexport function optimize(data, peaks, options = {}) {\n    // rescale data\n    const temp = xMinMaxValues(data.y);\n    const minMaxY = { ...temp, range: temp.max - temp.min };\n    const internalPeaks = getInternalPeaks(peaks, minMaxY, options);\n    // need to rescale what is related to Y\n    const { baseline: shiftValue = minMaxY.min } = options;\n    const normalizedY = new Float64Array(data.y.length);\n    for (let i = 0; i < data.y.length; i++) {\n        normalizedY[i] = (data.y[i] - shiftValue) / minMaxY.range;\n    }\n    const nbParams = internalPeaks[internalPeaks.length - 1].toIndex + 1;\n    const minValues = new Float64Array(nbParams);\n    const maxValues = new Float64Array(nbParams);\n    const initialValues = new Float64Array(nbParams);\n    const gradientDifferences = new Float64Array(nbParams);\n    let index = 0;\n    for (const peak of internalPeaks) {\n        for (let i = 0; i < peak.parameters.length; i++) {\n            minValues[index] = peak.propertiesValues.min[i];\n            maxValues[index] = peak.propertiesValues.max[i];\n            initialValues[index] = peak.propertiesValues.init[i];\n            gradientDifferences[index] = peak.propertiesValues.gradientDifference[i];\n            index++;\n        }\n    }\n    const { algorithm, optimizationOptions } = selectMethod(options.optimization);\n    const sumOfShapes = getSumOfShapes(internalPeaks);\n    const fitted = algorithm({ x: data.x, y: normalizedY }, sumOfShapes, {\n        minValues,\n        maxValues,\n        initialValues,\n        gradientDifference: gradientDifferences,\n        ...optimizationOptions,\n    });\n    const fittedValues = fitted.parameterValues;\n    const newPeaks = [];\n    for (const peak of internalPeaks) {\n        const { id, shape, parameters, fromIndex } = peak;\n        let newPeak = { x: 0, y: 0, shape };\n        if (id) {\n            newPeak = { ...newPeak, id };\n        }\n        newPeak.x = fittedValues[fromIndex];\n        newPeak.y = fittedValues[fromIndex + 1] * minMaxY.range + shiftValue;\n        for (let i = 2; i < parameters.length; i++) {\n            //@ts-expect-error should be fixed once\n            newPeak.shape[parameters[i]] = fittedValues[fromIndex + i];\n        }\n        newPeaks.push(newPeak);\n    }\n    return {\n        error: fitted.parameterError,\n        iterations: fitted.iterations,\n        peaks: newPeaks,\n    };\n}\n//# sourceMappingURL=index.js.map","import { getShape1D } from 'ml-peak-shape-generator';\n/**\n * add missing property if it does not exist in the peak,\n * if shape exists but fwhm doesn't, it will be calculated from peak.width\n */\nexport function addMissingShape(peaks, options = {}) {\n    const { shape = { kind: 'gaussian' }, output = structuredClone(peaks) } = options;\n    const shapeInstance = getShape1D(shape);\n    return output.map((peak) => {\n        if (hasShape(peak)) {\n            if (!('fwhm' in peak.shape)) {\n                const shapeInstance = getShape1D(peak.shape);\n                peak.shape.fwhm = shapeInstance.widthToFWHM(peak.width);\n            }\n            return peak;\n        }\n        return {\n            ...peak,\n            shape: { fwhm: shapeInstance.widthToFWHM(peak.width), ...shape },\n        };\n    });\n}\nfunction hasShape(peak) {\n    return 'shape' in peak;\n}\n//# sourceMappingURL=addMissingShape.js.map","/**\n * Group peaks based on factor\n * In order to group peaks we only need the x and width value. This means that\n * in the current implementation we don't take into account the asymmetry of peaks\n */\nexport function groupPeaks(peaks, options = {}) {\n    if (peaks && peaks.length === 0)\n        return [];\n    const { factor = 1 } = options;\n    peaks = JSON.parse(JSON.stringify(peaks));\n    peaks.sort((a, b) => a.x - b.x);\n    let previousPeak = peaks[0];\n    let currentGroup = [previousPeak];\n    const groups = [currentGroup];\n    for (let i = 1; i < peaks.length; i++) {\n        const peak = peaks[i];\n        if ((peak.x - previousPeak.x) / ((peak.width + previousPeak.width) / 2) <=\n            factor) {\n            currentGroup.push(peak);\n        }\n        else {\n            currentGroup = [peak];\n            groups.push(currentGroup);\n        }\n        previousPeak = peak;\n    }\n    return groups;\n}\n//# sourceMappingURL=groupPeaks.js.map","import { getShape1D } from 'ml-peak-shape-generator';\nimport { optimize } from 'ml-spectra-fitting';\nimport { xGetFromToIndex } from 'ml-spectra-processing';\nimport { addMissingShape } from \"../utils/addMissingShape.js\";\nimport { groupPeaks } from \"../utils/groupPeaks.js\";\n/**\n * Optimize the position (x), max intensity (y), full width at half maximum (fwhm)\n * and the ratio of gaussian contribution (mu) if it's required. It currently supports three kind of shapes: gaussian, lorentzian and pseudovoigt\n * @param data - An object containing the x and y data to be fitted.\n * @param peakList - A list of initial parameters to be optimized. e.g. coming from a peak picking [{x, y, width}].\n */\nexport function optimizePeaksWithLogs(data, peakList, options = {}) {\n    const { fromTo = {}, baseline, shape = { kind: 'gaussian' }, groupingFactor = 1, factorLimits = 2, optimization = {\n        kind: 'lm',\n        options: {\n            timeout: 10,\n        },\n    }, } = options;\n    /*\n    The optimization algorithm will take some group of peaks.\n    We can not simply optimize everything because there would be too many variables to optimize\n    and it would be too time consuming.\n  */\n    const groups = groupPeaks(peakList, { factor: groupingFactor });\n    const logs = [];\n    const results = [];\n    groups.forEach((peakGroup) => {\n        const start = Date.now();\n        // In order to make optimization we will add fwhm and shape on all the peaks\n        const peaks = addMissingShape(peakGroup, { shape });\n        const firstPeak = peaks[0];\n        const lastPeak = peaks[peaks.length - 1];\n        const { from = firstPeak.x - firstPeak.width * factorLimits, to = lastPeak.x + lastPeak.width * factorLimits, } = fromTo;\n        const { fromIndex, toIndex } = xGetFromToIndex(data.x, { from, to });\n        const x = data.x instanceof Float64Array\n            ? data.x.subarray(fromIndex, toIndex)\n            : data.x.slice(fromIndex, toIndex);\n        const y = data.y instanceof Float64Array\n            ? data.y.subarray(fromIndex, toIndex)\n            : data.y.slice(fromIndex, toIndex);\n        const log = {\n            range: { from, to },\n            parameters: optimization,\n            groupSize: peakGroup.length,\n            time: Date.now() - start,\n        };\n        if (x.length > 5) {\n            const { iterations, error, peaks: optimizedPeaks, } = optimize({ x, y }, peaks, {\n                shape,\n                baseline,\n                optimization,\n            });\n            for (let i = 0; i < peaks.length; i++) {\n                results.push({\n                    ...optimizedPeaks[i],\n                    width: getShape1D(peaks[i].shape).fwhmToWidth(optimizedPeaks[i].shape.fwhm),\n                });\n            }\n            logs.push({\n                ...log,\n                iterations,\n                error,\n                message: 'optimization successful',\n            });\n        }\n        else {\n            results.push(...peaks);\n            logs.push({\n                ...log,\n                iterations: 0,\n                message: 'x length too small for optimization',\n            });\n        }\n    });\n    return { logs, optimizedPeaks: results };\n}\n//# sourceMappingURL=optimizePeaksWithLogs.js.map","import { optimizePeaksWithLogs } from \"./optimizePeaksWithLogs.js\";\n/**\n * Optimize the position (x), max intensity (y), full width at half maximum (fwhm)\n * and the ratio of gaussian contribution (mu) if it's required. It currently supports three kind of shapes: gaussian, lorentzian and pseudovoigt\n * @param data - An object containing the x and y data to be fitted.\n * @param peakList - A list of initial parameters to be optimized. e.g. coming from a peak picking [{x, y, width}].\n */\nexport function optimizePeaks(data, peakList, options = {}) {\n    return optimizePeaksWithLogs(data, peakList, options).optimizedPeaks;\n}\n//# sourceMappingURL=optimizePeaks.js.map","export function addMissingIDs(peaks, options = {}) {\n    const { output = structuredClone(peaks) } = options;\n    for (const peak of output) {\n        if (!('id' in peak)) {\n            peak.id = crypto.randomUUID();\n        }\n    }\n    return output;\n}\n//# sourceMappingURL=addMissingIDs.js.map","import { addMissingIDs } from \"../utils/addMissingIDs.js\";\nimport { addMissingShape } from \"../utils/addMissingShape.js\";\nimport { optimizePeaksWithLogs } from \"./optimizePeaksWithLogs.js\";\nexport function joinBroadPeaks(peakList, options = {}) {\n    const { shape = { kind: 'gaussian' }, optimization = { kind: 'lm', options: { timeout: 10 } }, broadWidth = 0.25, broadRatio = 0.0025, } = options;\n    let max = 0;\n    let maxI = 0;\n    let count = 1;\n    const broadLines = [];\n    if (peakList.length < 2) {\n        return addMissingIDs(addMissingShape(peakList.map(getGSDPeakOptimizedStructure), { shape }));\n    }\n    let maxDdy = peakList[0].ddY;\n    for (let i = 1; i < peakList.length; i++) {\n        if (Math.abs(peakList[i].ddY) > maxDdy)\n            maxDdy = Math.abs(peakList[i].ddY);\n    }\n    const newPeaks = [];\n    for (const peak of peakList) {\n        if (Math.abs(peak.ddY) <= broadRatio * maxDdy) {\n            broadLines.push(peak);\n        }\n        else {\n            newPeaks.push(getGSDPeakOptimizedStructure(peak));\n        }\n    }\n    //@ts-expect-error Push a feke peak\n    broadLines.push({ x: Number.MAX_VALUE, y: 0 });\n    let candidates = {\n        x: [broadLines[0].x],\n        y: [broadLines[0].y],\n    };\n    let indexes = [0];\n    for (let i = 1; i < broadLines.length; i++) {\n        if (Math.abs(broadLines[i - 1].x - broadLines[i].x) < broadWidth) {\n            candidates.x.push(broadLines[i].x);\n            candidates.y.push(broadLines[i].y);\n            if (broadLines[i].y > max) {\n                max = broadLines[i].y;\n                maxI = i;\n            }\n            indexes.push(i);\n            count++;\n        }\n        else {\n            if (count > 2) {\n                const initialWidth = Math.abs(candidates.x[candidates.x.length - 1] - candidates.x[0]);\n                const { logs, optimizedPeaks } = optimizePeaksWithLogs(candidates, [\n                    {\n                        id: crypto.randomUUID(),\n                        x: broadLines[maxI].x,\n                        y: max,\n                        width: initialWidth,\n                        parameters: {\n                            width: { max: initialWidth * 4, min: initialWidth * 0.8 },\n                        },\n                    },\n                ], { shape: { kind: 'pseudoVoigt' }, optimization });\n                [max, maxI] = [0, 0];\n                const log = logs.find((l) => l.message === 'optimization successful');\n                if (log) {\n                    const { error } = log;\n                    if (error < 0.2) {\n                        newPeaks.push(optimizedPeaks[0]);\n                    }\n                    else {\n                        pushBackPeaks(broadLines, indexes, newPeaks);\n                    }\n                }\n                else {\n                    pushBackPeaks(broadLines, indexes, newPeaks);\n                }\n            }\n            else {\n                pushBackPeaks(broadLines, indexes, newPeaks);\n            }\n            candidates = { x: [broadLines[i].x], y: [broadLines[i].y] };\n            indexes = [i];\n            max = broadLines[i].y;\n            maxI = i;\n            count = 1;\n        }\n    }\n    newPeaks.sort((a, b) => {\n        return a.x - b.x;\n    });\n    return addMissingIDs(newPeaks, { output: newPeaks });\n}\nfunction pushBackPeaks(broadLines, indexes, peaks) {\n    for (const index of indexes) {\n        peaks.push(getGSDPeakOptimizedStructure(broadLines[index]));\n    }\n}\nfunction getGSDPeakOptimizedStructure(peak) {\n    const { id, shape, x, y, width } = peak;\n    const newPeak = {\n        x,\n        y,\n        width,\n        shape,\n    };\n    if (id)\n        newPeak.id = id;\n    return newPeak;\n}\n//# sourceMappingURL=joinBroadPeaks.js.map","import { getShape1D } from 'ml-peak-shape-generator';\n/**\n * This method will allow to enlarge peaks while preventing overlap between peaks\n * A typical application in chromatography peak picking.\n * We should not make the hypothesis that x is equidistant\n * Because peaks may not be symmetric after we add 2 properties, from and to.\n * @return {Array} peakList\n */\nexport function broadenPeaks(peakList, options = {}) {\n    const { factor = 2, overlap = false } = options;\n    const peaks = mapPeaks(peakList, factor);\n    if (!overlap) {\n        for (let i = 0; i < peaks.length - 1; i++) {\n            const peak = peaks[i];\n            const nextPeak = peaks[i + 1];\n            if (peak.to.x > nextPeak.from.x) {\n                // we do it proportional to the width of the peaks\n                peak.to.x =\n                    (peak.width / (nextPeak.width + peak.width)) * (nextPeak.x - peak.x) +\n                        peak.x;\n                nextPeak.from.x = peak.to.x;\n            }\n        }\n    }\n    for (const peak of peaks) {\n        peak.width = peak.to.x - peak.from.x;\n        if (peak.shape) {\n            const { shape, width } = peak;\n            if (shape.fwhm !== undefined) {\n                const shapeFct = getShape1D(shape);\n                peak.shape.fwhm = shapeFct.widthToFWHM(width);\n            }\n        }\n    }\n    return peaks;\n}\nfunction mapPeaks(peaks, factor) {\n    return peaks.map((peak) => {\n        const { id, shape } = peak;\n        const xFrom = peak.x - (peak.x - peak.inflectionPoints.from.x) * factor;\n        const xTo = peak.x + (peak.inflectionPoints.to.x - peak.x) * factor;\n        let result = {\n            x: peak.x,\n            y: peak.y,\n            index: peak.index,\n            width: xTo - xFrom,\n            from: { x: xFrom },\n            to: { x: xTo },\n        };\n        if (id) {\n            result = { ...result, id };\n        }\n        if (shape) {\n            result = { ...result, shape };\n        }\n        return result;\n    });\n}\n//# sourceMappingURL=broadenPeaks.js.map","import { getShape1D } from 'ml-peak-shape-generator';\nconst { parse, stringify } = JSON;\n/**\n * Append 2 properties to the peaks, shape and fwhm\n */\nexport function setShape(peaks, options = {}) {\n    const { shape = { kind: 'gaussian' }, output = parse(stringify(peaks)), } = options;\n    const shapeInstance = getShape1D(shape);\n    return output.map((peak) => ({\n        ...peak,\n        shape: { fwhm: shapeInstance.widthToFWHM(peak.width), ...shape },\n    }));\n}\n//# sourceMappingURL=setShape.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.peakPicking = peakPicking;\nconst ml_gsd_1 = require(\"ml-gsd\");\nconst ml_spectra_processing_1 = require(\"ml-spectra-processing\");\n/**\n * Filter the array of peaks\n * @param {import('./Spectrum')} spectrum - array of all the peaks\n * @returns {array}\n */\nfunction peakPicking(spectrum) {\n    if (!spectrum.peaks || spectrum.peaks.length === 0) {\n        spectrum.peaks = [];\n        const keys = Object.keys(spectrum.data).filter((key) => key !== 'x' && key !== 'y');\n        if (spectrum.isContinuous()) {\n            // some experimental data are really problematic and we need to add this line\n            const data = (0, ml_spectra_processing_1.xyEnsureGrowingX)(spectrum.data);\n            const gsdPeaks = (0, ml_gsd_1.gsd)(data, {\n                minMaxRatio: spectrum.options.threshold || 0.00025, // Threshold to determine if a given peak should be considered as a noise\n                realTopDetection: true,\n                smoothY: false,\n                sgOptions: { windowSize: 7, polynomial: 3 },\n            });\n            for (let gsdPeak of gsdPeaks) {\n                const peak = { x: gsdPeak.x, y: gsdPeak.y, width: gsdPeak.width };\n                for (let key of keys) {\n                    peak[key] = spectrum.data[key][gsdPeak.index];\n                }\n                spectrum.peaks.push(peak);\n            }\n        }\n        else {\n            spectrum.peaks = [];\n            let data = spectrum.data;\n            for (let i = 0; i < data.x.length; i++) {\n                const peak = {\n                    x: data.x[i],\n                    y: data.y[i],\n                    width: 0,\n                };\n                for (let key of keys) {\n                    peak[key] = spectrum.data[key][i];\n                }\n                spectrum.peaks.push(peak);\n            }\n        }\n    }\n    return spectrum.peaks;\n}\n//# sourceMappingURL=peakPicking.js.map","import { isAnyArray } from 'is-any-array';\n/**\n * Check that x and y are arrays with the same length.\n * @param x - first array\n * @param y - second array\n * @throws if x or y are not the same length, or if they are not arrays\n */\nexport function checkArrayLength(x, y) {\n    if (!isAnyArray(x) || !isAnyArray(y)) {\n        throw new TypeError('x and y must be arrays');\n    }\n    if (x.length !== y.length) {\n        throw new RangeError('x and y arrays must have the same length');\n    }\n}\n//# sourceMappingURL=checkArrayLength.js.map","import { isAnyArray } from 'is-any-array';\nimport { checkArrayLength } from './checkArrayLength';\nexport class BaseRegression {\n    constructor() {\n        if (new.target === BaseRegression) {\n            throw new Error('BaseRegression must be subclassed');\n        }\n    }\n    predict(x) {\n        if (typeof x === 'number') {\n            return this._predict(x);\n        }\n        else if (isAnyArray(x)) {\n            const y = [];\n            for (const xVal of x) {\n                y.push(this._predict(xVal));\n            }\n            return y;\n        }\n        else {\n            throw new TypeError('x must be a number or array');\n        }\n    }\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    _predict(x) {\n        throw new Error('_predict must be implemented');\n    }\n    train() {\n        // Do nothing for this package\n    }\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    toString(precision) {\n        return '';\n    }\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    toLaTeX(precision) {\n        return '';\n    }\n    /**\n     * Return the correlation coefficient of determination (r) and chi-square.\n     * @param x - explanatory variable\n     * @param y - response variable\n     * @return - Object with further statistics.\n     */\n    score(x, y) {\n        checkArrayLength(x, y);\n        const n = x.length;\n        const y2 = new Array(n);\n        for (let i = 0; i < n; i++) {\n            y2[i] = this._predict(x[i]);\n        }\n        let xSum = 0;\n        let ySum = 0;\n        let chi2 = 0;\n        let rmsd = 0;\n        let xSquared = 0;\n        let ySquared = 0;\n        let xY = 0;\n        for (let i = 0; i < n; i++) {\n            xSum += y2[i];\n            ySum += y[i];\n            xSquared += y2[i] * y2[i];\n            ySquared += y[i] * y[i];\n            xY += y2[i] * y[i];\n            if (y[i] !== 0) {\n                chi2 += ((y[i] - y2[i]) * (y[i] - y2[i])) / y[i];\n            }\n            rmsd += (y[i] - y2[i]) * (y[i] - y2[i]);\n        }\n        const r = (n * xY - xSum * ySum) /\n            Math.sqrt((n * xSquared - xSum * xSum) * (n * ySquared - ySum * ySum));\n        return {\n            r,\n            r2: r * r,\n            chi2,\n            rmsd: Math.sqrt(rmsd / n),\n        };\n    }\n}\n//# sourceMappingURL=BaseRegression.js.map","/**\n * Cast `number` to string. Optionally `digits` specifies significant figures.\n * @param number\n * @param figures\n * @returns - A string representation of `number`.\n */\nexport function maybeToPrecision(number, figures) {\n    if (number < 0) {\n        number = 0 - number;\n        if (typeof figures === 'number') {\n            return `- ${number.toPrecision(figures)}`;\n        }\n        else {\n            return `- ${number.toString()}`;\n        }\n    }\n    else if (typeof figures === 'number') {\n        return number.toPrecision(figures);\n    }\n    else {\n        return number.toString();\n    }\n}\n//# sourceMappingURL=maybeToPrecision.js.map","import { BaseRegression, checkArrayLength, maybeToPrecision, } from 'ml-regression-base';\n/**\n * Class representing simple linear regression.\n * The regression uses OLS to calculate intercept and slope.\n */\nexport class SimpleLinearRegression extends BaseRegression {\n    /**\n     * @param x - explanatory variable\n     * @param y - response variable\n     */\n    constructor(x, y) {\n        super();\n        // @ts-expect-error internal use of the constructor, from `this.load`\n        if (x === true) {\n            // @ts-expect-error internal use of the constructor, from `this.load`\n            const yObj = y;\n            this.slope = yObj.slope;\n            this.intercept = yObj.intercept;\n            this.coefficients = [yObj.intercept, yObj.slope];\n        }\n        else {\n            checkArrayLength(x, y);\n            const result = regress(x, y);\n            this.slope = result.slope;\n            this.intercept = result.intercept;\n            this.coefficients = [result.intercept, result.slope];\n        }\n    }\n    /**\n     * Get the parameters and model name in JSON format\n     * @returns\n     */\n    toJSON() {\n        return {\n            name: 'simpleLinearRegression',\n            slope: this.slope,\n            intercept: this.intercept,\n        };\n    }\n    _predict(x) {\n        return this.slope * x + this.intercept;\n    }\n    /**\n     * Finds x for the given y value.\n     * @param y - response variable value\n     * @returns - x value\n     */\n    computeX(y) {\n        return (y - this.intercept) / this.slope;\n    }\n    /**\n     * Strings the linear function in the form 'f(x) = ax + b'\n     * @param precision - number of significant figures.\n     * @returns\n     */\n    toString(precision) {\n        let result = 'f(x) = ';\n        if (this.slope !== 0) {\n            const xFactor = maybeToPrecision(this.slope, precision);\n            result += `${xFactor === '1' ? '' : `${xFactor} * `}x`;\n            if (this.intercept !== 0) {\n                const absIntercept = Math.abs(this.intercept);\n                const operator = absIntercept === this.intercept ? '+' : '-';\n                result += ` ${operator} ${maybeToPrecision(absIntercept, precision)}`;\n            }\n        }\n        else {\n            result += maybeToPrecision(this.intercept, precision);\n        }\n        return result;\n    }\n    /**\n     * Strings the linear function in the form 'f(x) = ax + b'\n     * @param precision - number of significant figures.\n     * @returns\n     */\n    toLaTeX(precision) {\n        return this.toString(precision);\n    }\n    /**\n     * Class instance from a JSON Object.\n     * @param json\n     * @returns\n     */\n    static load(json) {\n        if (json.name !== 'simpleLinearRegression') {\n            throw new TypeError('not a SLR model');\n        }\n        // @ts-expect-error internal use of the constructor\n        return new SimpleLinearRegression(true, json);\n    }\n}\n/**\n * Internal  function.\n * It determines the parameters (slope, intercept) of the line that best fit the `x,y` vector-data (simple linear regression).\n * @param x - explanatory variable\n * @param y - response variable\n * @returns - slope and intercept of the best fit line\n */\nfunction regress(x, y) {\n    const n = x.length;\n    let xSum = 0;\n    let ySum = 0;\n    let xSquared = 0;\n    let xY = 0;\n    for (let i = 0; i < n; i++) {\n        xSum += x[i];\n        ySum += y[i];\n        xSquared += x[i] * x[i];\n        xY += x[i] * y[i];\n    }\n    const numerator = n * xY - xSum * ySum;\n    const slope = numerator / (n * xSquared - xSum * xSum);\n    return {\n        slope,\n        intercept: (1 / n) * ySum - slope * (1 / n) * xSum,\n    };\n}\n//# sourceMappingURL=index.js.map","import {\n  BaseRegression,\n  checkArrayLength,\n  maybeToPrecision,\n} from 'ml-regression-base';\nimport { SimpleLinearRegression } from 'ml-regression-simple-linear';\n\nexport class PowerRegression extends BaseRegression {\n  constructor(x, y) {\n    super();\n    if (x === true) {\n      // reloading model\n      this.A = y.A;\n      this.B = y.B;\n    } else {\n      checkArrayLength(x, y);\n      regress(this, x, y);\n    }\n  }\n\n  _predict(newInputs) {\n    return this.A * newInputs ** this.B;\n  }\n\n  toJSON() {\n    return {\n      name: 'powerRegression',\n      A: this.A,\n      B: this.B,\n    };\n  }\n\n  toString(precision) {\n    return `f(x) = ${maybeToPrecision(\n      this.A,\n      precision,\n    )} * x^${maybeToPrecision(this.B, precision)}`;\n  }\n\n  toLaTeX(precision) {\n    let latex = '';\n    if (this.B >= 0) {\n      latex = `f(x) = ${maybeToPrecision(\n        this.A,\n        precision,\n      )}x^{${maybeToPrecision(this.B, precision)}}`;\n    } else {\n      latex = `f(x) = \\\\frac{${maybeToPrecision(\n        this.A,\n        precision,\n      )}}{x^{${maybeToPrecision(-this.B, precision)}}}`;\n    }\n    latex = latex.replace(/e([+-]?[0-9]+)/g, 'e^{$1}');\n    return latex;\n  }\n\n  static load(json) {\n    if (json.name !== 'powerRegression') {\n      throw new TypeError('not a power regression model');\n    }\n    return new PowerRegression(true, json);\n  }\n}\n\nfunction regress(pr, x, y) {\n  const n = x.length;\n  const xl = new Array(n);\n  const yl = new Array(n);\n  for (let i = 0; i < n; i++) {\n    xl[i] = Math.log(x[i]);\n    yl[i] = Math.log(y[i]);\n  }\n\n  const linear = new SimpleLinearRegression(xl, yl);\n  pr.A = Math.exp(linear.intercept);\n  pr.B = linear.slope;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.peaksWidth = peaksWidth;\nconst ml_regression_power_1 = require(\"ml-regression-power\");\nconst ml_spectra_processing_1 = require(\"ml-spectra-processing\");\nfunction peaksWidth(peaks) {\n    let xs = peaks.map((peak) => peak.x);\n    let widths = peaks.map((peak) => peak.width);\n    if (xs.length < 2) {\n        throw new Error(`peaksWidth: not enough peaks (less than 2) for automatic width calculation: ${xs.length}`);\n    }\n    let regression = new ml_regression_power_1.PowerRegression(xs, widths);\n    if (Number.isNaN(regression.A) || Number.isNaN(regression.B)) {\n        throw new Error('peaksWidth: can not calculate regression');\n    }\n    let from = (0, ml_spectra_processing_1.xMinValue)(xs);\n    let to = (0, ml_spectra_processing_1.xMaxValue)(xs);\n    let regressionChart = { x: [], y: [] };\n    for (let x = from; x <= to; x += (to - from) / 1000) {\n        regressionChart.x.push(x);\n        regressionChart.y.push(regression.predict(x));\n    }\n    return {\n        widths: {\n            x: xs,\n            y: widths,\n        },\n        fit: regressionChart,\n        score: regression.score(xs, widths),\n        predictFct: regression.predict.bind(regression),\n        tex: regression.toLaTeX(3),\n        A: regression.A,\n        B: regression.B,\n        predictFctString: `${regression.A} * mass ** ${regression.B}`,\n    };\n}\n//# sourceMappingURL=peaksWidth.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Spectrum = void 0;\nexports.fromPeaks = fromPeaks;\nexports.fromText = fromText;\nconst is_any_array_1 = require(\"is-any-array\");\nconst ml_spectra_processing_1 = require(\"ml-spectra-processing\");\nconst xy_parser_1 = require(\"xy-parser\");\nconst getBestPeaks_js_1 = require(\"./getBestPeaks.js\");\nconst getFragmentPeaks_js_1 = require(\"./getFragmentPeaks.js\");\nconst getMassRemainder_js_1 = require(\"./getMassRemainder.js\");\nconst getPeakChargeBySimilarity_js_1 = require(\"./getPeakChargeBySimilarity.js\");\nconst getPeaks_js_1 = require(\"./getPeaks.js\");\nconst getPeaksWithCharge_js_1 = require(\"./getPeaksWithCharge.js\");\nconst isContinuous_js_1 = require(\"./isContinuous.js\");\nconst peakPicking_js_1 = require(\"./peakPicking.js\");\nconst peaksWidth_js_1 = require(\"./peaksWidth.js\");\nconst defaultData = { x: [], y: [] };\n/**\n * Class dealing with mass spectra and peak picking\n */\nclass Spectrum {\n    /**\n     *\n     * @param {import('cheminfo-types').DataXY} data\n     * @param {object} [options={}]\n     * @param {number} [options.threshold=0.00025]\n     */\n    constructor(data = defaultData, options = {}) {\n        if (typeof data !== 'object' ||\n            !(0, is_any_array_1.isAnyArray)(data.x) ||\n            !(0, is_any_array_1.isAnyArray)(data.y)) {\n            throw new TypeError('Spectrum data must be an object with x:[], y:[]');\n        }\n        this.data = { ...data };\n        this.options = { threshold: 0.00025, ...options };\n        Object.defineProperty(this.data, 'xOriginal', {\n            enumerable: false,\n            writable: true,\n        });\n        if (this.data && this.data.x.length > 0) {\n            this.info = {\n                minX: (0, ml_spectra_processing_1.xMinValue)(this.data.x),\n                maxX: (0, ml_spectra_processing_1.xMaxValue)(this.data.x),\n                minY: (0, ml_spectra_processing_1.xMinValue)(this.data.y),\n                maxY: (0, ml_spectra_processing_1.xMaxValue)(this.data.y),\n            };\n        }\n        else {\n            this.info = {\n                minX: Number.NaN,\n                maxX: Number.NaN,\n                minY: Number.NaN,\n                maxY: Number.NaN,\n            };\n        }\n        this.cache = {};\n        /**\n         * someProperty is an example property that is set to `true`\n         * @type {array}\n         * @public\n         */\n        this.peaks = [];\n    }\n    minMaxX() {\n        return (0, ml_spectra_processing_1.xMinMaxValues)(this.data.x);\n    }\n    /**\n     *\n     * @param {import('ml-spectra-processing').XYMaxYOptions} options\n     * @returns\n     */\n    maxY(options) {\n        return (0, ml_spectra_processing_1.xyMaxY)(this.data, options);\n    }\n    sumY() {\n        if (!this.cache.sumY) {\n            this.cache.sumY = (0, ml_spectra_processing_1.xSum)(this.data.y);\n        }\n        return this.cache.sumY;\n    }\n    scaleY(intensity = 1) {\n        this.data.y = Array.from((0, ml_spectra_processing_1.xNormed)(this.data.y, { value: intensity, algorithm: 'max' }));\n        return this;\n    }\n    rescaleX(callback) {\n        this.ensureOriginalX();\n        for (let i = 0; i < this.data.x.length; i++) {\n            this.data.x[i] = callback(this.data.xOriginal[i]);\n        }\n        return this;\n    }\n    ensureOriginalX() {\n        if (!this.data.xOriginal) {\n            this.data.xOriginal = this.data.x.slice(0);\n        }\n    }\n    normedY(total = 1) {\n        this.data.y = (0, ml_spectra_processing_1.xNormed)(this.data.y, { value: total });\n        return this;\n    }\n    peakPicking() {\n        (0, peakPicking_js_1.peakPicking)(this);\n        return this.peaks;\n    }\n    peaksWidth() {\n        (0, peakPicking_js_1.peakPicking)(this);\n        return (0, peaksWidth_js_1.peaksWidth)(this.peaks);\n    }\n    getBestPeaks(options) {\n        (0, peakPicking_js_1.peakPicking)(this);\n        return (0, getBestPeaks_js_1.getBestPeaks)(this.peaks, options);\n    }\n    /**\n     * This is a very intensive function so better to calculate it on a selection of peaks\n     * @param {Array} selectedPeaks\n     * @param {object} [options={}]\n     * @param {number} [options.min=1]\n     * @param {number} [options.max=10]\n     * @param {number} [options.low=-1]\n     * @param {number} [options.high=1]\n     * @param {number} [options.precision=30]\n     * @returns\n     */\n    getSelectedPeaksWithCharge(selectedPeaks, options) {\n        return (0, getPeaksWithCharge_js_1.getPeaksWithCharge)(selectedPeaks, this.peaks, options);\n    }\n    getPeakChargeBySimilarity(targetMass, options) {\n        return (0, getPeakChargeBySimilarity_js_1.getPeakChargeBySimilarity)(this, targetMass, options);\n    }\n    getPeaks(options) {\n        (0, peakPicking_js_1.peakPicking)(this);\n        return (0, getPeaks_js_1.getPeaks)(this.peaks, options);\n    }\n    getPeaksAsDataXY(options) {\n        (0, peakPicking_js_1.peakPicking)(this);\n        const peaks = (0, getPeaks_js_1.getPeaks)(this.peaks, options);\n        return {\n            x: peaks.map((peak) => peak.x),\n            y: peaks.map((peak) => peak.y),\n        };\n    }\n    /**\n     * Returns also peaks possible for a specific molecular formula\n     * @example\n     *  const spectrum = new Spectrum({x:[], y:[]})\n     *  await spectrum.getFragmentPeaks();\n     * @param {string} mf\n     * @param {object} options\n     * @returns\n     */\n    getFragmentPeaksFct(mf, options) {\n        (0, peakPicking_js_1.peakPicking)(this);\n        return (0, getFragmentPeaks_js_1.getFragmentPeaks)(this.peaks, mf, options);\n    }\n    isContinuous() {\n        return (0, isContinuous_js_1.isContinuous)(this);\n    }\n    /**\n     * Remove an integer number of time the specifiedd monoisotopic mass\n     * Mass remainder analysis (MARA): https://doi.org/10.1021/acs.analchem.7b04730\n     */\n    getMassRemainderFct(mass, options = {}) {\n        return (0, getMassRemainder_js_1.getMassRemainder)(this.data, mass, options);\n    }\n}\nexports.Spectrum = Spectrum;\nfunction fromPeaks(peaks) {\n    if (peaks.length === 0)\n        return new Spectrum();\n    const data = {};\n    for (let key of Object.keys(peaks[0])) {\n        data[key] = peaks.map((peak) => peak[key]);\n    }\n    return new Spectrum(data);\n}\nfunction fromText(text, options) {\n    const data = (0, xy_parser_1.parseXY)(text);\n    return new Spectrum(data, options);\n}\n//# sourceMappingURL=Spectrum.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MSComparator = void 0;\nconst ml_spectra_processing_1 = require(\"ml-spectra-processing\");\nclass MSComparator {\n    /**\n     * Create a class that will be able to get the similarity between 2 spectra\n     * The similarity is based on 'cosine' similarity. The goal is 2 prepare 2 vectors\n     * on which the similarity is calculated.\n     * The vectors are created by taking the mass and the intensity of the peaks.\n     * @param {object} [options={}]\n     * @param {number} [options.nbPeaks] - Before comparing spectra how many peaks should be kept\n     * @param {number} [options.minNbCommonPeaks] - Minimum number of peaks in common to consider any similarity\n     * @param {number} [options.minIntensity] - What is the minimal relative intensity to keep a peak\n     * @param {number} [options.massPower=3] - High power will give more weight to the mass. If you would prefer to observe fragments you should use a number less than 1\n     * @param {number} [options.intensityPower=0.6] - How important is the intensity. By default we don't give to much importance to it\n     * @param {number[]} [options.selectedMasses] - List of allowed masses.\n     * @param {number|Function} [options.delta=0.1] - Tolerance in Da (u) to consider 2 peaks as aligned. If a function is provided it will be called with the mass of the peak\n     */\n    constructor(options = {}) {\n        this.options = {\n            massPower: 3,\n            intensityPower: 0.6,\n            delta: 0.1,\n            ...options,\n        };\n        this.cache = new WeakMap();\n    }\n    /**\n     * Get the similarity between a spectrum and a list of masses.\n     * The main issue is that we don't have the intensity of the peaks.\n     * So we will use the intensity of the closest peak.\n     * @param {import('cheminfo-types').DataXY} dataXY\n     * @param {number[]} masses\n     */\n    getSimilarityToMasses(dataXY, masses) {\n        const data1 = normalizeAndCacheData(this.cache, dataXY, this.options);\n        const data2 = {\n            x: Float64Array.from(masses),\n            y: new Float64Array(masses.length).fill(1),\n        };\n        let aligned;\n        if (this.options.selectedMasses?.length > 0) {\n            aligned = (0, ml_spectra_processing_1.xyArrayAlign)([\n                data1,\n                data2,\n                {\n                    // this allows to force the selection of some specific masses\n                    x: Float64Array.from(this.options.selectedMasses),\n                    y: new Float64Array(this.options.selectedMasses.length).fill(1),\n                },\n            ], {\n                delta: this.options.delta,\n                requiredY: true,\n            });\n        }\n        else {\n            aligned = (0, ml_spectra_processing_1.xyArrayAlign)([data1, data2], {\n                delta: this.options.delta,\n            });\n        }\n        // because we don't have any idea of the intensity we will use the intensity of the experimental peak\n        // and otherwise we ignore the theoretical peak\n        for (let i = 0; i < aligned.ys[0].length; i++) {\n            if (aligned.ys[0][i] === 0) {\n                aligned.ys[1][i] = 0;\n            }\n            if (aligned.ys[0][i] > 0 && aligned.ys[1][i] !== 0) {\n                aligned.ys[1][i] = aligned.ys[0][i];\n            }\n        }\n        return returnSimilarity(aligned, this.options);\n    }\n    /**\n     *\n     * @param {import('cheminfo-types').DataXY} dataXY1\n     * @param {import('cheminfo-types').DataXY} dataXY2\n     */\n    getSimilarity(dataXY1, dataXY2) {\n        const data1 = normalizeAndCacheData(this.cache, dataXY1, this.options);\n        const data2 = normalizeAndCacheData(this.cache, dataXY2, this.options);\n        let aligned;\n        if (this.options.selectedMasses?.length > 0) {\n            aligned = (0, ml_spectra_processing_1.xyArrayAlign)([\n                data1,\n                data2,\n                {\n                    // this allows to force the selection of some specific masses\n                    x: Float64Array.from(this.options.selectedMasses),\n                    y: new Float64Array(this.options.selectedMasses.length).fill(1),\n                },\n            ], {\n                delta: this.options.delta,\n                requiredY: true,\n            });\n        }\n        else {\n            aligned = (0, ml_spectra_processing_1.xyArrayAlign)([data1, data2], {\n                delta: this.options.delta,\n            });\n        }\n        return returnSimilarity(aligned, this.options);\n    }\n}\nexports.MSComparator = MSComparator;\n/**\n *\n * @param {WeakMap} cache\n * @param {import('cheminfo-types').DataXY} dataXY\n * @param {object} [options={}]\n * @param {number} [options.nbPeaks]\n * @param {number} [options.minIntensity]\n */\nfunction normalizeAndCacheData(cache, dataXY, options = {}) {\n    const { nbPeaks, minIntensity } = options;\n    if (cache.has(dataXY))\n        return cache.get(dataXY);\n    let data = { ...dataXY };\n    if ((0, ml_spectra_processing_1.xIsMonotonic)(data.x) !== 1) {\n        data = (0, ml_spectra_processing_1.xySortX)(data);\n    }\n    if (minIntensity !== undefined) {\n        data = (0, ml_spectra_processing_1.xyFilterMinYValue)(data, minIntensity);\n    }\n    if (nbPeaks !== undefined) {\n        data = (0, ml_spectra_processing_1.xyFilterTopYValues)(data, nbPeaks);\n    }\n    cache.set(dataXY, data);\n    return data;\n}\n/**\n *\n * @param {*} aligned\n * @param {object} [options={}]\n * @param {number} [options.massPower]\n * @param {number} [options.intensityPower]\n * @param {number} [options.minNbCommonPeaks]\n\n * @returns\n */\nfunction returnSimilarity(aligned, options = {}) {\n    const { massPower, intensityPower, minNbCommonPeaks } = options;\n    let nbCommonPeaks = 0;\n    let nbPeaks1 = 0;\n    let nbPeaks2 = 0;\n    for (let i = 0; i < aligned.ys[0].length; i++) {\n        if (aligned.ys[0][i] !== 0) {\n            nbPeaks1++;\n        }\n        if (aligned.ys[1][i] !== 0) {\n            nbPeaks2++;\n        }\n        if (aligned.ys[0][i] !== 0 && aligned.ys[1][i] !== 0) {\n            nbCommonPeaks++;\n        }\n    }\n    if (nbCommonPeaks === 0 ||\n        (minNbCommonPeaks && nbCommonPeaks < minNbCommonPeaks)) {\n        return {\n            nbCommonPeaks,\n            nbPeaks1,\n            nbPeaks2,\n            tanimoto: 0,\n            cosine: 0,\n        };\n    }\n    const vector1 = new Float64Array(aligned.x.length);\n    const vector2 = new Float64Array(aligned.x.length);\n    for (let i = 0; i < aligned.x.length; i++) {\n        vector1[i] = aligned.x[i] ** massPower * aligned.ys[0][i] ** intensityPower;\n        vector2[i] = aligned.x[i] ** massPower * aligned.ys[1][i] ** intensityPower;\n    }\n    return {\n        nbCommonPeaks,\n        nbPeaks1,\n        nbPeaks2,\n        tanimoto: nbCommonPeaks / (nbPeaks1 + nbPeaks2 - nbCommonPeaks),\n        cosine: cosineSimilarity(vector1, vector2),\n    };\n}\n/**\n * Returns the average of cosine distances between vectors a and b\n * Copied from https://github.com/mljs/distance/blob/0b15acd6476413f4111cb4852ca1bec9edaa2805/src/similarities/cosine.ts\n * @param a {import('cheminfo-types').NumberArray} - first vector\n * @param b {import('cheminfo-types').NumberArray} - second vector\n * @returns {number} - cosine similarity\n */\nfunction cosineSimilarity(a, b) {\n    let p = 0;\n    let p2 = 0;\n    let q2 = 0;\n    for (let i = 0; i < a.length; i++) {\n        p += a[i] * b[i];\n        p2 += a[i] * a[i];\n        q2 += b[i] * b[i];\n    }\n    return p / (Math.sqrt(p2) * Math.sqrt(q2));\n}\n//# sourceMappingURL=MSComparator.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getPeaksAnnotation = getPeaksAnnotation;\nconst fromMonoisotopicMass_1 = require(\"../from/fromMonoisotopicMass\");\n/**\n *\n * @param {array} bestPeaks\n * @param {object} [options={}]\n * @param {number} [options.numberDigits=5]\n * @param {number} [options.numberMFs=0]\n * @param {boolean} [options.showMF=false]\n * @param {array} [options.mfColors={}]\n * @param {number} [options.charge=1]\n * @param {number} [options.shift=0]\n * @param {object} [options.mfPrefs]\n * @param {number} [options.displayCharge=true]\n * @param {number} [options.displayProperties=[]] Array of properties name to display\n * @returns {Promise}\n */\nasync function getPeaksAnnotation(bestPeaks, options = {}) {\n    let { numberDigits = 5, shift = 0, showMF = false, numberMFs = 0, charge = 1, mfPrefs = {}, displayCharge = true, displayProperties = [], mfColors = [\n        { limit: 3, color: 'green' },\n        { limit: 20, color: 'lightgreen' },\n        { limit: 50, color: 'lightorange' },\n    ], } = options;\n    if (showMF && !numberMFs)\n        numberMFs = 1;\n    let annotations = [];\n    bestPeaks.sort((a, b) => (a.close ? -1 : b.close ? 1 : 0));\n    for (let peak of bestPeaks) {\n        let textLine = 0;\n        let annotation;\n        if (peak.close) {\n            annotation = {\n                type: 'line',\n                _highlight: peak._highlight,\n                info: peak,\n                position: [\n                    {\n                        y: peak.y,\n                        dy: '-5px',\n                        x: peak.x,\n                    },\n                    {\n                        y: peak.y,\n                        dy: '-15px',\n                        x: peak.x,\n                    },\n                ],\n            };\n            annotations.push(annotation);\n            annotation = {\n                type: 'ellipse',\n                _highlight: peak._highlight,\n                info: peak,\n                position: [\n                    {\n                        y: peak.y,\n                        dy: '-15px',\n                        x: peak.x,\n                    },\n                ],\n                props: {\n                    rx: '3px',\n                    ry: '3px',\n                    fillOpacity: 0.3,\n                },\n            };\n        }\n        else {\n            annotation = {\n                type: 'line',\n                _highlight: peak._highlight,\n                position: [\n                    {\n                        y: peak.y,\n                        dy: '-5px',\n                        x: peak.x,\n                    },\n                    {\n                        y: peak.y,\n                        dy: '-25px',\n                        x: peak.x,\n                    },\n                ],\n                labels: [\n                    {\n                        text: (peak.x + shift).toFixed(numberDigits),\n                        color: 'red',\n                        position: {\n                            x: peak.x,\n                            y: peak.y,\n                            dy: `${textLine++ * -13 - 17}px`,\n                            dx: '2px',\n                        },\n                    },\n                ],\n            };\n            if (displayCharge && peak.charge !== undefined) {\n                annotation.labels.push({\n                    text: `Z:${peak.charge}`,\n                    color: 'grey',\n                    position: {\n                        x: peak.x,\n                        y: peak.y,\n                        dy: '-4px',\n                        dx: '2px',\n                    },\n                });\n            }\n            let mfs = [];\n            if (numberMFs) {\n                // we have 2 cases. Either there is a shift and we deal with differences\n                // otherwise it is absolute\n                // if there is a shift we consider only a neutral loss and the parameter charge is important\n                // we also check that the selected peak (for relative mass) is not the current peak\n                if (shift && Math.abs(peak.x + shift) > Number.EPSILON) {\n                    // neutral loss\n                    let currentMfPrefs = {\n                        ...mfPrefs,\n                        allowNeutral: true,\n                        ionizations: '',\n                    };\n                    // we need to deal with the precision and increase it\n                    currentMfPrefs.precision =\n                        (currentMfPrefs.precision / Math.max(Math.abs(peak.x + shift), 1)) *\n                            peak.x;\n                    ({ mfs } = await (0, fromMonoisotopicMass_1.fromMonoisotopicMass)(Math.abs((peak.x + shift) * charge), currentMfPrefs));\n                }\n                else {\n                    ({ mfs } = await (0, fromMonoisotopicMass_1.fromMonoisotopicMass)(Math.abs(peak.x * charge), mfPrefs));\n                }\n                let numberOfMFS = Math.min(mfs.length, numberMFs);\n                for (let i = 0; i < numberOfMFS; i++) {\n                    let mf = mfs[i];\n                    let ppm = shift ? (mf.ms.ppm / shift) * mfs[0].ms.em : mf.ms.ppm;\n                    annotation.labels.push({\n                        text: mf.mf,\n                        color: getColor(mfColors, Math.abs(ppm)),\n                        position: {\n                            x: peak.x,\n                            y: peak.y,\n                            dy: `${textLine++ * -13 - 17}px`,\n                            dx: '2px',\n                        },\n                    });\n                }\n            }\n            if (displayProperties.length > 0) {\n                for (let property of displayProperties) {\n                    annotation.labels.push({\n                        text: peak[property],\n                        color: 'red',\n                        position: {\n                            x: peak.x,\n                            y: peak.y,\n                            dy: `${textLine++ * -13 - 17}px`,\n                            dx: '2px',\n                        },\n                    });\n                }\n            }\n        }\n        annotations.push(annotation);\n    }\n    return annotations;\n}\nfunction getColor(colors, value) {\n    for (let color of colors) {\n        if (value < color.limit)\n            return color.color;\n    }\n    return 'lightgrey';\n}\n//# sourceMappingURL=getPeaksAnnotation.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.JsGraph = void 0;\nconst getPeaksAnnotation_js_1 = require(\"./getPeaksAnnotation.js\");\nexports.JsGraph = {\n    getPeaksAnnotation: getPeaksAnnotation_js_1.getPeaksAnnotation,\n};\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.appendFragmentsInfo = appendFragmentsInfo;\nconst mf_finder_1 = require(\"mf-finder\");\n/**\n *\n * @param {object}   experimentalSpectrum\n * @param {object}   database\n * @param {object}   [options={}]\n * @param {function} [options.onStep] - Callback to do after each step\n * @param {string}   [options.ionizations=''] - string containing a comma separated list of modifications\n * @param {number}   [options.precision=100] - Allowed mass range based on precision\n */\nasync function appendFragmentsInfo(experimentalSpectrum, database, options = {}) {\n    const { ionizations, onStep, precision } = options;\n    if (!experimentalSpectrum) {\n        throw new Error('Experimental spectrum is not defined');\n    }\n    if (!database) {\n        throw new Error('Database is not defined');\n    }\n    const peaks = experimentalSpectrum.getPeaks({ sumValue: 1 });\n    for (let entry of database) {\n        const ranges = Object.keys(entry.atoms)\n            .map((atom) => `${atom}0-${entry.atoms[atom]}`)\n            .join(' ');\n        entry.fragments = {\n            nbFound: 0,\n            intensityFound: 0,\n            assignments: [],\n        };\n        for (let i = 0; i < peaks.length; i++) {\n            if (onStep)\n                await onStep(i);\n            const peak = peaks[i];\n            const possibleMFs = await (0, mf_finder_1.findMFs)(peak.x, {\n                ionizations,\n                precision,\n                ranges,\n            });\n            if (possibleMFs.mfs.length > 0) {\n                entry.fragments.nbFound++;\n                entry.fragments.intensityFound += peak.y;\n                entry.fragments.assignments.push({\n                    peak,\n                    bestMF: possibleMFs.mfs[0],\n                });\n            }\n        }\n    }\n}\n//# sourceMappingURL=appendFragmentsInfo.js.map","'use strict';\n\n/**\n * Modify object a to join it with b and make the sum of each of the keys\n * @param {*} a\n * @param {*} source1\n *\n * @return {object}\n */\n\nfunction sum(target) {\n    for (var i = 1; i < arguments.length; i++) {\n        let toSum = arguments[i];\n        for (var key of Object.keys(toSum)) {\n            if (target[key]) {\n                target[key] += toSum[key];\n            } else {\n                target[key] = toSum[key];\n            }\n        }\n    }\n    return target;\n}\n\nmodule.exports = sum;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.generateMFs = generateMFs;\nconst chemical_elements_1 = require(\"chemical-elements\");\nconst mf_matcher_1 = require(\"mf-matcher\");\nconst mf_parser_1 = require(\"mf-parser\");\nconst mf_utilities_1 = require(\"mf-utilities\");\nconst sum_object_keys_1 = __importDefault(require(\"sum-object-keys\"));\n/**\n * Generate all the possible combinations of molecular formula and calculate\n * for each of them the monoisotopic mass and observed monoisotopic mass (m/z)\n * In the molecular formula there may be a comment after the '$' symbol\n *\n * @param {Array}         ranges\n * @param {object}        [options={}]\n * @param {number}        [options.limit=10000000] - Maximum number of results\n * @param {boolean}       [options.estimate=false] - estimate the number of MF without filters\n * @param {boolean}       [options.canonizeMF=true] - Canonize molecular formula\n * @param {boolean}       [options.uniqueMFs=true] - Force canonization and make MF unique\n * @param {string}        [options.ionizations=''] - Comma separated list of ionizations (to charge the molecule)\n * @param {function}      [options.onStep] - Callback to do after each step\n * @param {import('mf-matcher').MSEMFilterOptions}        [options.filter={}]\n * @param {string}        [options.filterFct]\n * @param {object}        [options.links]\n * @param {boolean}       [options.links.filter] We filter all the MF that do not match the '*X'\n * @returns {Promise}\n */\nasync function generateMFs(ranges, options = {}) {\n    if (!Array.isArray(ranges)) {\n        throw new Error('Ranges must be an array of string or object');\n    }\n    options = { ...options };\n    let { limit = 100000, uniqueMFs = true, estimate = false, onStep } = options;\n    options.filterFctVariables = {};\n    for (let i = 0; i < ranges.length; i++) {\n        const range = ranges[i];\n        if (typeof range === 'object' && range.name) {\n            options.filterFctVariables[range.name] = i;\n            ranges[i] = range.value;\n        }\n    }\n    if (options.filterFct) {\n        // we create a real javascript function\n        let variables = Object.keys(options.filterFctVariables);\n        variables.push('mm', 'mz', 'charge', 'unsaturation', 'atoms');\n        // eslint-disable-next-line no-new-func\n        options.filterFct = new Function(...variables, `return ${options.filterFct}`);\n    }\n    if (uniqueMFs === true)\n        options.canonizeMF = true;\n    if (options.canonizeMF === undefined)\n        options.canonizeMF = true;\n    options.ionizations = (0, mf_utilities_1.preprocessIonizations)(options.ionizations);\n    // we allow String delimited by \". or ;\" instead of an array\n    for (let i = 0; i < ranges.length; i++) {\n        if (!Array.isArray(ranges[i])) {\n            ranges[i] = ranges[i].split(/[,.]/);\n        }\n    }\n    // we allow ranges in a string ...\n    // problem with ranges is that we need to know to what the range applies\n    for (let i = 0; i < ranges.length; i++) {\n        let parts = ranges[i];\n        let newParts = [];\n        for (let j = 0; j < parts.length; j++) {\n            let part = parts[j];\n            if (part.match(/\\d-[\\d-]/)) {\n                // deal with negative numbers\n                // there are ranges ... we are in trouble !\n                newParts = newParts.concat(new mf_parser_1.MF(part).flatten({ groupIdentical: false, limit }));\n            }\n            else {\n                newParts.push(parts[j]); // the part with the comments !\n            }\n        }\n        ranges[i] = newParts;\n    }\n    if (estimate) {\n        let total = ranges.reduce((previous, current) => previous * current.length, 1);\n        return total * options.ionizations.length;\n    }\n    let results = [];\n    let sizes = [];\n    let currents = [];\n    for (let i = 0; i < ranges.length; i++) {\n        sizes.push(ranges[i].length - 1);\n        currents.push(0);\n    }\n    let position = 0;\n    let evolution = 0;\n    while (position < currents.length) {\n        if (currents[position] < sizes[position]) {\n            if (onStep)\n                await onStep(evolution);\n            evolution++;\n            appendResult(results, currents, ranges, options);\n            currents[position]++;\n            for (let i = 0; i < position; i++) {\n                currents[i] = 0;\n            }\n            position = 0;\n        }\n        else {\n            position++;\n        }\n        if (evolution > limit) {\n            throw new Error(`You have reached the limit of ${limit}. You could still change this value using the limit option but it is likely to crash.`);\n        }\n    }\n    appendResult(results, currents, ranges, options);\n    if (uniqueMFs) {\n        let uniqueMFsObject = {};\n        for (const result of results) {\n            uniqueMFsObject[result.mf + result.ionization.mf] = result;\n        }\n        results = Object.keys(uniqueMFsObject).map((k) => uniqueMFsObject[k]);\n    }\n    results.sort((a, b) => a.em - b.em);\n    return results;\n}\nlet ems = {};\n// internal method used as a cache\nfunction getMonoisotopicMass(mfString) {\n    if (!ems[mfString]) {\n        // we need to calculate based on the mf but not very often ...\n        let mf = new mf_parser_1.MF(mfString);\n        let info = mf.getInfo();\n        ems[mfString] = {\n            em: info.monoisotopicMass,\n            charge: info.charge,\n            mw: info.mass,\n            unsaturation: (info.unsaturation - 1) * 2,\n            atoms: info.atoms,\n        };\n    }\n    return ems[mfString];\n}\nfunction getEMFromParts(parts, currents, ionization) {\n    let charge = 0;\n    let em = 0;\n    let mw = 0;\n    let unsaturation = 0;\n    let validUnsaturation = true;\n    let atoms = {};\n    for (let i = 0; i < parts.length; i++) {\n        let part = parts[i][currents[i]];\n        if (part) {\n            let info = getMonoisotopicMass(part);\n            charge += info.charge;\n            em += info.em;\n            mw += info.mw;\n            (0, sum_object_keys_1.default)(atoms, info.atoms);\n            if (info.unsaturation && validUnsaturation) {\n                unsaturation += info.unsaturation;\n            }\n        }\n    }\n    return {\n        charge,\n        em,\n        mw,\n        ionization,\n        unsaturation: validUnsaturation ? unsaturation / 2 + 1 : undefined,\n        atoms,\n    };\n}\nfunction appendResult(results, currents, keys, options = {}) {\n    const { canonizeMF, filter, ionizations, links = {} } = options;\n    // this script is designed to combine molecular formula\n    // that may contain comments after a \"$\" sign\n    // therefore we should put all the comments at the ned\n    if (links.filter) {\n        let sharps = [];\n        for (let i = 0; i < keys.length; i++) {\n            let anchors = keys[i][currents[i]].match(/#\\d+/g);\n            if (anchors)\n                sharps.push(...anchors);\n        }\n        if (sharps.length % 2 === 1)\n            return;\n        sharps = sharps.sort();\n        for (let i = 0; i < sharps.length; i += 2) {\n            if (sharps[i] !== sharps[i + 1])\n                return;\n        }\n    }\n    for (let ionization of ionizations) {\n        let result = getEMFromParts(keys, currents, ionization);\n        if (options.filterFct) {\n            let variables = [];\n            for (let key in options.filterFctVariables) {\n                variables.push(currents[options.filterFctVariables[key]]);\n            }\n            variables.push(result.em, (result.em + ionization.em - ionization.charge * chemical_elements_1.ELECTRON_MASS) /\n                Math.abs(ionization.charge), result.charge + result.ionization.charge, result.unsaturation, result.atoms);\n            if (!options.filterFct.apply(null, variables))\n                continue;\n        }\n        result.parts = [];\n        result.mf = '';\n        let comments = [];\n        for (let i = 0; i < keys.length; i++) {\n            let key = keys[i][currents[i]];\n            if (key) {\n                if (key.includes('$')) {\n                    comments.push(key.replace(/^[^$]*\\$/, ''));\n                    key = key.replace(/\\$.*/, '');\n                }\n                result.parts[i] = key;\n                result.mf += key;\n            }\n        }\n        if (comments.length > 0) {\n            result.comment = comments.join(' ');\n        }\n        let match = (0, mf_matcher_1.msemMatcher)(result, filter);\n        if (!match)\n            continue;\n        result.ms = match.ms;\n        result.ionization = match.ionization;\n        if (canonizeMF) {\n            result.mf = new mf_parser_1.MF(result.mf).toMF();\n        }\n        results.push(result);\n    }\n}\n//# sourceMappingURL=generateMFs.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromArray = fromArray;\nconst mf_generator_1 = require(\"mf-generator\");\n/**\n * Generates a database 'generated' from an array of molecular formula\n * @param {array} mfsArray - Array of string or Array of array containing the parts to combine\n * @param {object} [options={}]\n * @param {boolean} [options.estimate=false] - estimate the number of MF without filters\n * @param {string} [options.databaseName='generated']\n * @param {function} [options.onStep] - Callback to do after each step\n * @param {number} [options.limit=10000000] - Maximum number of results\n * @param {boolean} [options.canonizeMF=true] - Canonize molecular formula\n * @param {boolean} [options.uniqueMFs=true] - Force canonization and make MF unique\n * @param {string} [options.ionizations=''] - Comma separated list of ionizations (to charge the molecule)\n * @param {object} [options.filter={}]\n * @param {number} [options.filter.minMass=0] - Minimal monoisotopic mass\n * @param {number} [options.filter.maxMass=+Infinity] - Maximal monoisotopic mass\n * @param {number} [options.filter.minEM=0] - Minimal neutral monoisotopic mass\n * @param {number} [options.filter.maxEM=+Infinity] - Maximal neutral monoisotopic mass\n * @param {number} [options.filter.minMSEM=0] - Minimal observed monoisotopic mass\n * @param {number} [options.filter.maxMSEM=+Infinity] - Maximal observed monoisotopic mass\n * @param {number} [options.filter.minCharge=-Infinity] - Minimal charge\n * @param {number} [options.filter.maxCharge=+Infinity] - Maximal charge\n * @param {boolean}  [options.filter.absoluteCharge=false] - If true, the charge is absolute (so between 0 and +Infinity by default)\n * @param {object} [options.filter.unsaturation={}]\n * @param {number} [options.filter.unsaturation.min=-Infinity] - Minimal unsaturation\n * @param {number} [options.filter.unsaturation.max=+Infinity] - Maximal unsaturation\n * @param {boolean} [options.filter.unsaturation.onlyInteger=false] - Integer unsaturation\n * @param {boolean} [options.filter.unsaturation.onlyNonInteger=false] - Non integer unsaturation\n * @param {object} [options.filter.atoms] - object of atom:{min, max}\n * @param {function} [options.filter.callback] - a function to filter the MF\n * @param {string}  [options.filterFct] - A string representing a function\n *\n * @example\n *\n * const {EMDB} = require('emdb');\n * let emdb = new EMDB();\n * let array = ['C1-10', 'H1-10'];\n * emdb.fromArray(array); // create a database 'generated' combining all possibilies\n * console.log(emdb.get('generated').length); // 100\n *\n * @example\n * const {EMDB} = require('emdb');\n * let emdb = new EMDB();\n * let array = ['C1-10 H1-10'];\n * emdb.fromArray(array); // create a database 'generated' combining all possibilies\n * console.log(emdb.get('generated').length); // 100\n *\n * @example\n * const {EMDB} = require('emdb');\n * let emdb = new EMDB();\n * // in case of an array of array, one of the group is allwed\n * let array = [['C1-10','H1-10'],'Cl0-1 Br0-1'];\n * emdb.fromArray(array); // create a database 'generated' combining all possibilies\n * console.log(emdb.get('generated').length); // 80\n *\n * @example\n * <script src=\"https://www.lactame.com/lib/mass-tools/HEAD/mass-tools.js\" />\n * <script>\n *   let emdb = new MassTools.EMDB();\n *   let array = ['C1-10', 'H1-10'];\n *   emdb.fromArray(array); // create a database 'generated' combining all possibilities\n *   console.log(emdb.get('generated').length); // 100\n * </script>\n *\n * // from the browser\n */\nasync function fromArray(mfsArray, options = {}) {\n    return (0, mf_generator_1.generateMFs)(mfsArray, options);\n}\n//# sourceMappingURL=fromArray.js.map","let xAtomicNumber = 0;\n/**\n * Returns the atomic number of the X atom\n * @param {import('openchemlib').Molecule} molecule - An instance of a molecule\n * @returns\n */\nexport function getXAtomicNumber(molecule) {\n    if (!xAtomicNumber) {\n        const OCL = molecule.getOCL();\n        xAtomicNumber = OCL.Molecule.getAtomicNoFromLabel('X', OCL.Molecule.cPseudoAtomX);\n    }\n    return xAtomicNumber;\n}\n//# sourceMappingURL=getXAtomicNumber.js.map","/**\n * Check if a specific atom is a sp3 carbon\n * @param {import('openchemlib').Molecule} molecule\n * @param {number} atomID\n */\nexport function isCsp3(molecule, atomID) {\n    if (molecule.getAtomicNo(atomID) !== 6)\n        return false;\n    if (molecule.getAtomCharge(atomID) !== 0)\n        return false;\n    if (molecule.getImplicitHydrogens(atomID) + molecule.getConnAtoms(atomID) !==\n        4) {\n        return false;\n    }\n    return true;\n}\n//# sourceMappingURL=isCsp3.js.map","/**\n * This method put all the chiral centers in the molecule in the same group and racemic\n * @param {import('openchemlib').Molecule} molecule - An instance of a molecule\n * @param {object} [options={}]\n * @param {object} [options.OCL] - openchemlib library\n */\nexport function makeRacemic(molecule) {\n    const { Molecule } = molecule.getOCL();\n    // if we don't calculate this we have 2 epimers\n    molecule.ensureHelperArrays(Molecule.cHelperCIP);\n    // we need to make one group \"AND\" for chiral (to force to racemic, this means diastereotopic and not enantiotopic)\n    for (let i = 0; i < molecule.getAllAtoms(); i++) {\n        if (molecule.getAtomParity(i) !== Molecule.cAtomParityNone) {\n            molecule.setAtomESR(i, Molecule.cESRTypeAnd, 0); // changed to group 0; TLS 9.Nov.2015\n        }\n    }\n    // after the change we need to recalculate the CIP\n    molecule.ensureHelperArrays(Molecule.cHelperCIP);\n}\n//# sourceMappingURL=makeRacemic.js.map","import { getXAtomicNumber } from './getXAtomicNumber.js';\n/**\n * Tag an atom to be able to visualize it\n * @param molecule\n * @param iAtom\n */\nexport function tagAtom(molecule, iAtom) {\n    const customLabel = `${molecule.getAtomLabel(iAtom)}*`;\n    molecule.setAtomCustomLabel(iAtom, customLabel);\n    if (molecule.getAtomicNo(iAtom) === 1) {\n        molecule.setAtomicNo(iAtom, getXAtomicNumber(molecule));\n    }\n    else {\n        // we can not use X because we would have problems with valencies if it is\n        // expanded hydrogens or not\n        // we can not only use a custom label because it does not count for the canonisation\n        molecule.setAtomMass(iAtom, molecule.getAtomMass(iAtom) + 5);\n    }\n    return customLabel;\n}\n//# sourceMappingURL=tagAtom.js.map","import { getXAtomicNumber } from '../util/getXAtomicNumber.js';\nimport { isCsp3 } from '../util/isCsp3.js';\nimport { makeRacemic } from '../util/makeRacemic.js';\nimport { tagAtom } from \"../util/tagAtom.js\";\nexport const FULL_HOSE_CODE = 1;\nexport const HOSE_CODE_CUT_C_SP3_SP3 = 2;\n/**\n * Returns the hose code for specific atom numbers\n * @param {import('openchemlib').Molecule} molecule - The OCL molecule with expandedImplicitHydrogens and ensureHeterotopicChiralBonds\n * @param {object} [options={}]\n * @param {string[]} [options.allowedCustomLabels] - Array of the custom labels that are considered as root atoms. By default all atoms having a customLabel\n * @param {number} [options.minSphereSize=0] - Smallest hose code sphere\n * @param {number} [options.maxSphereSize=4] - Largest hose code sphere\n * @param {number} [options.kind=FULL_HOSE_CODE] - Kind of hose code, default usual sphere\n */\nexport function getHoseCodesForAtomsInternal(molecule, options = {}) {\n    const fragments = getHoseCodesForAtomsAsFragments(molecule, options);\n    const OCL = molecule.getOCL();\n    const hoses = [];\n    for (const fragment of fragments) {\n        hoses.push(fragment.getCanonizedIDCode(OCL.Molecule.CANONIZER_ENCODE_ATOM_CUSTOM_LABELS));\n    }\n    return hoses;\n}\nexport function getHoseCodesForAtomsAsFragments(molecule, options = {}) {\n    const OCL = molecule.getOCL();\n    const { allowedCustomLabels, minSphereSize = 0, maxSphereSize = 4, kind = FULL_HOSE_CODE, tagAtoms = [], tagAtomFct = tagAtom, } = options;\n    const rootAtoms = options.rootAtoms ? options.rootAtoms.slice() : [];\n    molecule = molecule.getCompactCopy();\n    if (tagAtoms.length > 0) {\n        internalTagAtoms(molecule, tagAtoms, rootAtoms, tagAtomFct);\n    }\n    else {\n        // this force reordering of atoms in order to have hydrogens at the end\n        molecule.ensureHelperArrays(OCL.Molecule.cHelperNeighbours);\n    }\n    if (rootAtoms.length === 0) {\n        for (let j = 0; j < molecule.getAllAtoms(); j++) {\n            if (allowedCustomLabels?.includes(molecule.getAtomCustomLabel(j)) ||\n                molecule.getAtomCustomLabel(j)) {\n                rootAtoms.push(j);\n            }\n        }\n    }\n    const fragments = [];\n    // keep track of the atoms when creating the fragment\n    const mappings = [];\n    let min = 0;\n    let max = 0;\n    const atomMask = new Uint8Array(molecule.getAllAtoms());\n    const atomList = new Uint8Array(molecule.getAllAtoms());\n    for (let sphere = 0; sphere <= maxSphereSize; sphere++) {\n        if (max === 0) {\n            for (const rootAtom of rootAtoms) {\n                atomList[max] = rootAtom;\n                atomMask[rootAtom] = true;\n                max++;\n            }\n        }\n        else {\n            let newMax = max;\n            for (let i = min; i < max; i++) {\n                const atom = atomList[i];\n                for (let j = 0; j < molecule.getAllConnAtoms(atom); j++) {\n                    const connAtom = molecule.getConnAtom(atom, j);\n                    if (!atomMask[connAtom]) {\n                        switch (kind) {\n                            case FULL_HOSE_CODE:\n                                atomMask[connAtom] = true;\n                                atomList[newMax++] = connAtom;\n                                break;\n                            case HOSE_CODE_CUT_C_SP3_SP3:\n                                if (!(isCsp3(molecule, atom) && isCsp3(molecule, connAtom))) {\n                                    atomMask[connAtom] = true;\n                                    atomList[newMax++] = connAtom;\n                                }\n                                break;\n                            default:\n                                throw new Error('getHoseCoesForAtom unknown kind');\n                        }\n                    }\n                }\n            }\n            min = max;\n            max = newMax;\n        }\n        if (sphere >= minSphereSize) {\n            const fragment = new OCL.Molecule(0, 0);\n            molecule.copyMoleculeByAtoms(fragment, atomMask, true, mappings);\n            // we using atomMapNo field in order to keep track of the original atom number even if we remove hydrogens\n            for (let i = 0; i < fragment.getAllAtoms(); i++) {\n                fragment.setAtomMapNo(i, mappings.indexOf(i) + 1);\n            }\n            fragment.removeExplicitHydrogens();\n            makeRacemic(fragment);\n            // we encode atom characteristics in the query features\n            addQueryFeaturesAndRemoveMapNo(fragment, molecule);\n            fragments.push(fragment);\n        }\n    }\n    return fragments;\n}\n/**\n * If the atom is not an halogen, X or an hydrogen\n * we add query features to the atom\n * This includes aromaticity, ring size, number of hydrogens\n * @param {import('openchemlib').Molecule} fragment\n * @param {import('openchemlib').Molecule} molecule\n */\nfunction addQueryFeaturesAndRemoveMapNo(fragment, molecule) {\n    const Molecule = molecule.getOCL().Molecule;\n    for (let i = 0; i < fragment.getAllAtoms(); i++) {\n        const mapping = fragment.getAtomMapNo(i) - 1;\n        fragment.setAtomMapNo(i, 0);\n        if ([1, 9, 17, 35, 53, getXAtomicNumber(molecule)].includes(fragment.getAtomicNo(i))) {\n            continue;\n        }\n        // aromaticity\n        const isAromatic = molecule.isAromaticAtom(mapping);\n        if (isAromatic) {\n            fragment.setAtomQueryFeature(i, Molecule.cAtomQFAromatic, true);\n            fragment.setAtomQueryFeature(i, Molecule.cAtomQFNotAromatic, false);\n        }\n        else {\n            fragment.setAtomQueryFeature(i, Molecule.cAtomQFAromatic, false);\n            fragment.setAtomQueryFeature(i, Molecule.cAtomQFNotAromatic, true);\n        }\n        // cycles\n        const smallestRing = molecule.getAtomRingSize(mapping);\n        switch (smallestRing) {\n            case 0:\n                break;\n            case 3:\n                fragment.setAtomQueryFeature(i, Molecule.cAtomQFRingSize3, true);\n                break;\n            case 4:\n                fragment.setAtomQueryFeature(i, Molecule.cAtomQFRingSize4, true);\n                break;\n            case 5:\n                fragment.setAtomQueryFeature(i, Molecule.cAtomQFRingSize5, true);\n                break;\n            case 6:\n                fragment.setAtomQueryFeature(i, Molecule.cAtomQFRingSize6, true);\n                break;\n            case 7:\n                fragment.setAtomQueryFeature(i, Molecule.cAtomQFRingSize7, true);\n                break;\n            default:\n                fragment.setAtomQueryFeature(i, Molecule.cAtomQFRingSizeLarge, true);\n        }\n        const nbHydrogens = molecule.getAllHydrogens(mapping);\n        if (nbHydrogens === 0) {\n            fragment.setAtomQueryFeature(i, Molecule.cAtomQFNot0Hydrogen, false);\n        }\n        else {\n            fragment.setAtomQueryFeature(i, Molecule.cAtomQFNot0Hydrogen, true);\n        }\n        if (nbHydrogens === 1) {\n            fragment.setAtomQueryFeature(i, Molecule.cAtomQFNot1Hydrogen, false);\n        }\n        else {\n            fragment.setAtomQueryFeature(i, Molecule.cAtomQFNot1Hydrogen, true);\n        }\n        if (nbHydrogens === 2) {\n            fragment.setAtomQueryFeature(i, Molecule.cAtomQFNot2Hydrogen, false);\n        }\n        else {\n            fragment.setAtomQueryFeature(i, Molecule.cAtomQFNot2Hydrogen, true);\n        }\n        if (nbHydrogens === 3) {\n            fragment.setAtomQueryFeature(i, Molecule.cAtomQFNot3Hydrogen, false);\n        }\n        else {\n            fragment.setAtomQueryFeature(i, Molecule.cAtomQFNot3Hydrogen, true);\n        }\n    }\n}\n// tagging atoms may change the order of the atoms because hydrogens must be at the end of the file\n// in order to remember the rootAtoms we will tag before\nfunction internalTagAtoms(molecule, tagAtoms, rootAtoms, tagAtomFct) {\n    const OCL = molecule.getOCL();\n    if (tagAtoms) {\n        for (let i = 0; i < molecule.getAllAtoms(); i++) {\n            molecule.setAtomMapNo(i, i + 1);\n        }\n        if (tagAtoms.length > 0) {\n            for (const atom of tagAtoms) {\n                tagAtomFct(molecule, atom);\n            }\n        }\n    }\n    // this force reordering of atoms in order to have hydrogens at the end\n    molecule.ensureHelperArrays(OCL.Molecule.cHelperNeighbours);\n    if (rootAtoms.length > 0) {\n        const mapping = new Int32Array(molecule.getAllAtoms());\n        for (let i = 0; i < molecule.getAllAtoms(); i++) {\n            mapping[molecule.getAtomMapNo(i) - 1] = i;\n        }\n        for (let i = 0; i < rootAtoms.length; i++) {\n            rootAtoms[i] = mapping[rootAtoms[i]];\n        }\n    }\n}\n//# sourceMappingURL=getHoseCodesForAtomsInternal.js.map","/**\n * We need to create an array of atoms\n * that contains an array of pathLength\n * that contains an array of object\n * @param molecule\n * @param options\n * @returns\n */\nexport function getAllAtomsPaths(molecule, options = {}) {\n    const { maxPathLength = 5 } = options;\n    const allAtomsPaths = [];\n    for (let i = 0; i < molecule.getAllAtoms(); i++) {\n        const oneAtomPaths = [];\n        allAtomsPaths.push(oneAtomPaths);\n        let atomPaths = [];\n        atomPaths.push({ path: [i], pathLength: 0 });\n        oneAtomPaths.push(atomPaths);\n        let nextIndexes = [0];\n        let nextAtoms = [i];\n        for (let sphere = 1; sphere <= maxPathLength; sphere++) {\n            atomPaths = [];\n            oneAtomPaths.push(atomPaths);\n            const currentIndexes = nextIndexes;\n            const currentAtoms = nextAtoms;\n            nextIndexes = [];\n            nextAtoms = [];\n            for (let i = 0; i < currentIndexes.length; i++) {\n                const atom = currentAtoms[i];\n                const index = currentIndexes[i];\n                const previousPath = oneAtomPaths[sphere - 1]?.[index]?.path;\n                if (!previousPath) {\n                    throw new Error(`Unexpected missing previousPath for sphere ${sphere - 1} and index ${index}`);\n                }\n                for (let conn = 0; conn < molecule.getAllConnAtoms(atom); conn++) {\n                    const connectedAtom = molecule.getConnAtom(atom, conn);\n                    if (previousPath.includes(connectedAtom))\n                        continue;\n                    nextIndexes.push(atomPaths.length);\n                    nextAtoms.push(connectedAtom);\n                    atomPaths.push({\n                        path: [...previousPath, connectedAtom],\n                        pathLength: sphere,\n                    });\n                }\n            }\n        }\n    }\n    return allAtomsPaths;\n}\n//# sourceMappingURL=getAllAtomsPaths.js.map","import { Matrix } from 'ml-matrix';\n/**\n * Algorithm that finds the shortest distance from one node to the other\n * @param {Matrix} adjMatrix - A squared adjacency matrix\n * @return {Matrix} - Distance from a node to the other, -1 if the node is unreachable\n */\nexport function floydWarshall(adjMatrix) {\n    if (Matrix.isMatrix(adjMatrix) && adjMatrix.columns !== adjMatrix.rows) {\n        throw new TypeError('The adjacency matrix should be squared');\n    }\n    const numVertices = adjMatrix.columns;\n    let distMatrix = new Matrix(numVertices, numVertices);\n    distMatrix.apply((row, column) => {\n        // principal diagonal is 0\n        if (row === column) {\n            distMatrix.set(row, column, 0);\n        }\n        else {\n            let val = adjMatrix.get(row, column);\n            if (val || Object.is(val, -0)) {\n                // edges values remain the same\n                distMatrix.set(row, column, val);\n            }\n            else {\n                // 0 values become infinity\n                distMatrix.set(row, column, Number.POSITIVE_INFINITY);\n            }\n        }\n    });\n    for (let k = 0; k < numVertices; ++k) {\n        for (let i = 0; i < numVertices; ++i) {\n            for (let j = 0; j < numVertices; ++j) {\n                let dist = distMatrix.get(i, k) + distMatrix.get(k, j);\n                if (distMatrix.get(i, j) > dist) {\n                    distMatrix.set(i, j, dist);\n                }\n            }\n        }\n    }\n    // When there's no connection the value is -1\n    distMatrix.apply((row, column) => {\n        if (distMatrix.get(row, column) === Number.POSITIVE_INFINITY) {\n            distMatrix.set(row, column, -1);\n        }\n    });\n    return distMatrix;\n}\n//# sourceMappingURL=index.js.map","import { floydWarshall } from 'ml-floyd-warshall';\nimport { Matrix } from 'ml-matrix';\n/**\n * Returns a connectivity matrix\n * @param {import('openchemlib').Molecule} molecule\n * @param {object} [options={}]\n * @param {boolean} [options.pathLength=false] - get the path length between atoms\n * @param {boolean} [options.mass=false] - set the nominal mass of the atoms on diagonal\n * @param {boolean} [options.atomicNo=false] - set the atomic number of the atom on diagonal\n * @param {boolean} [options.negativeAtomicNo=false] - set the atomic number * -1 of the atom on diagonal\n * @param {boolean} [options.sdt=false] - set 1, 2 or 3 depending if single, double or triple bond\n * @param {boolean} [options.sdta=false] - set 1, 2, 3 or 4 depending if single, double, triple or aromatic  bond\n */\nexport function getConnectivityMatrix(molecule, options = {}) {\n    const OCL = molecule.getOCL();\n    molecule.ensureHelperArrays(OCL.Molecule.cHelperNeighbours);\n    const nbAtoms = molecule.getAllAtoms();\n    let result = new Array(nbAtoms).fill();\n    result = result.map(() => new Array(nbAtoms).fill(0));\n    if (!options.pathLength) {\n        if (options.atomicNo) {\n            for (let i = 0; i < nbAtoms; i++) {\n                result[i][i] = molecule.getAtomicNo(i);\n            }\n        }\n        else if (options.negativeAtomicNo) {\n            for (let i = 0; i < nbAtoms; i++) {\n                result[i][i] = -molecule.getAtomicNo(i);\n            }\n        }\n        else if (options.mass) {\n            for (let i = 0; i < nbAtoms; i++) {\n                result[i][i] = OCL.Molecule.cRoundedMass[molecule.getAtomicNo(i)];\n            }\n        }\n        else {\n            for (let i = 0; i < nbAtoms; i++) {\n                result[i][i] = 1;\n            }\n        }\n    }\n    if (options.sdt) {\n        for (let i = 0; i < nbAtoms; i++) {\n            const l = molecule.getAllConnAtoms(i);\n            for (let j = 0; j < l; j++) {\n                result[i][molecule.getConnAtom(i, j)] = molecule.getConnBondOrder(i, j);\n            }\n        }\n    }\n    else if (options.sdta) {\n        for (let i = 0; i < nbAtoms; i++) {\n            const l = molecule.getAllConnAtoms(i);\n            for (let j = 0; j < l; j++) {\n                const bondNumber = molecule.getConnBond(i, j);\n                if (molecule.isAromaticBond(bondNumber)) {\n                    result[i][molecule.getConnAtom(i, j)] = 4;\n                }\n                else {\n                    result[i][molecule.getConnAtom(i, j)] = molecule.getConnBondOrder(i, j);\n                }\n            }\n        }\n    }\n    else {\n        for (let i = 0; i < nbAtoms; i++) {\n            const l = molecule.getAllConnAtoms(i);\n            for (let j = 0; j < l; j++) {\n                result[i][molecule.getConnAtom(i, j)] = 1;\n            }\n        }\n    }\n    if (options.pathLength) {\n        result = floydWarshall(new Matrix(result)).to2DArray();\n    }\n    return result;\n}\n//# sourceMappingURL=getConnectivityMatrix.js.map","import { makeRacemic } from '../util/makeRacemic.js';\nimport { tagAtom } from \"../util/tagAtom.js\";\nexport function getCanonizedDiaIDs(diaMol, options) {\n    const { logger, maxNbAtoms } = options;\n    const moleculeWithH = diaMol.moleculeWithH;\n    if (moleculeWithH.getAllAtoms() > maxNbAtoms) {\n        logger.warn(`too many atoms to evaluate heterotopic chiral bonds: ${moleculeWithH.getAllAtoms()} > ${maxNbAtoms}`);\n        return [];\n    }\n    const heterotopicSymmetryRanks = diaMol.heterotopicSymmetryRanks;\n    const finalRanks = diaMol.finalRanks;\n    const canonizedDiaIDs = new Array(moleculeWithH.getAllAtoms());\n    moleculeWithH.ensureHelperArrays(diaMol.molecule.getOCL().Molecule.cHelperSymmetryStereoHeterotopicity);\n    const cache = {};\n    for (let i = 0; i < diaMol.moleculeWithH.getAllAtoms(); i++) {\n        const rank = heterotopicSymmetryRanks[i];\n        if (rank && cache[rank]) {\n            canonizedDiaIDs[finalRanks[i]] = cache[rank].diaID;\n            continue;\n        }\n        const tempMolecule = diaMol.moleculeWithH.getCompactCopy();\n        tagAtom(tempMolecule, i);\n        makeRacemic(tempMolecule);\n        const diaID = tempMolecule.getCanonizedIDCode(diaMol.molecule.getOCL().Molecule.CANONIZER_ENCODE_ATOM_CUSTOM_LABELS);\n        canonizedDiaIDs[finalRanks[i]] = diaID;\n    }\n    return canonizedDiaIDs;\n}\n//# sourceMappingURL=getCanonizedDiaIDs.js.map","import { getHoseCodesForAtomsInternal } from '../hose/getHoseCodesForAtomsInternal.js';\nimport { tagAtom } from \"../util/tagAtom.js\";\nexport function getCanonizedHoseCodes(topicMolecule) {\n    const options = topicMolecule.options;\n    const heterotopicSymmetryRanks = topicMolecule.heterotopicSymmetryRanks;\n    const moleculeWithH = topicMolecule.moleculeWithH;\n    const finalRanks = topicMolecule.finalRanks;\n    const canonizedHoseCodes = new Array(moleculeWithH.getAllAtoms());\n    moleculeWithH.ensureHelperArrays(topicMolecule.molecule.getOCL().Molecule\n        .cHelperSymmetryStereoHeterotopicity);\n    const cache = {};\n    for (let i = 0; i < topicMolecule.moleculeWithH.getAllAtoms(); i++) {\n        const rank = heterotopicSymmetryRanks[i];\n        if (rank && cache[rank]) {\n            canonizedHoseCodes[finalRanks[i]] = cache[rank].diaID;\n            continue;\n        }\n        const tempMolecule = topicMolecule.moleculeWithH.getCompactCopy();\n        tagAtom(tempMolecule, i);\n        const hoses = getHoseCodesForAtomsInternal(tempMolecule, options);\n        canonizedHoseCodes[finalRanks[i]] = hoses;\n    }\n    return canonizedHoseCodes;\n}\n//# sourceMappingURL=getCanonizedHoseCodes.js.map","export function getDiaIDsAndInfo(diaMol, canonizedDiaIDs) {\n    const newDiaIDs = [];\n    const molecule = diaMol.moleculeWithH;\n    const counts = {};\n    for (const diaID of canonizedDiaIDs) {\n        if (!counts[diaID]) {\n            counts[diaID] = 0;\n        }\n        counts[diaID]++;\n    }\n    for (let i = 0; i < canonizedDiaIDs.length; i++) {\n        const diaID = canonizedDiaIDs[diaMol.finalRanks[i]];\n        if (!diaID) {\n            throw new Error(`Unexpected missing canonized diaID for atom ${i}`);\n        }\n        const count = counts[diaID];\n        if (!count) {\n            throw new Error(`Unexpected missing count for diaID ${diaID}`);\n        }\n        const newDiaID = {\n            idCode: diaID,\n            attachedHydrogensIDCodes: [],\n            attachedHydrogens: [],\n            nbAttachedHydrogens: 0,\n            atomLabel: molecule.getAtomLabel(i),\n            nbEquivalentAtoms: count,\n            heavyAtom: undefined,\n            atomMapNo: molecule.getAtomMapNo(i),\n        };\n        if (molecule.getAtomicNo(i) === 1) {\n            const atom = molecule.getConnAtom(i, 0);\n            newDiaID.heavyAtom = canonizedDiaIDs[diaMol.finalRanks[atom]];\n        }\n        for (let j = 0; j < molecule.getAllConnAtoms(i); j++) {\n            const atom = molecule.getConnAtom(i, j);\n            if (molecule.getAtomicNo(atom) === 1) {\n                newDiaID.nbAttachedHydrogens++;\n                newDiaID.attachedHydrogens.push(atom);\n                const hydrogenDiaID = canonizedDiaIDs[diaMol.finalRanks[atom]];\n                if (!hydrogenDiaID) {\n                    throw new Error(`Unexpected missing canonized diaID for atom ${atom}`);\n                }\n                if (!newDiaID.attachedHydrogensIDCodes.includes(hydrogenDiaID)) {\n                    newDiaID.attachedHydrogensIDCodes.push(hydrogenDiaID);\n                }\n            }\n        }\n        newDiaIDs.push(newDiaID);\n    }\n    return newDiaIDs;\n}\n//# sourceMappingURL=getDiaIDsAndInfo.js.map","/**\n * Get a unique atomic number for a X\n * @param xMolecule\n * @returns\n */\nexport function getHeterotopicSymmetryRanks(xMolecule) {\n    xMolecule.ensureHelperArrays(xMolecule.getOCL().Molecule.cHelperSymmetryStereoHeterotopicity);\n    const symmetryRanks = [];\n    for (let i = 0; i < xMolecule.getAllAtoms(); i++) {\n        symmetryRanks.push(xMolecule.getSymmetryRank(i));\n    }\n    return symmetryRanks;\n}\nexport function getFinalRanks(xMolecule) {\n    xMolecule.ensureHelperArrays(xMolecule.getOCL().Molecule.cHelperSymmetryStereoHeterotopicity);\n    return xMolecule.getFinalRanks(0).map((rank) => rank - 1);\n}\n//# sourceMappingURL=getHeterotopicSymmetryRanks.js.map","import { getXAtomicNumber } from '../util/getXAtomicNumber.js';\n/**\n * Returns the atoms that are chiral or pseudo chiral.\n * There could be some issues if the original molecule lacks chiral bonds.\n * The function will add them and this could lead to some issues in the case of pseudochiral atoms.\n * @param {import('openchemlib').Molecule} molecule\n * @returns {number[]}\n */\nexport function getChiralOrHeterotopicCarbons(molecule) {\n    const { Molecule } = molecule.getOCL();\n    const xAtomicNumber = getXAtomicNumber(molecule);\n    const internalMolecule = molecule.getCompactCopy();\n    // hydrogens may be diastereotopic, we need to add them\n    internalMolecule.addImplicitHydrogens();\n    for (let i = 0; i < internalMolecule.getAllAtoms(); i++) {\n        // hydrogens are not taken into account during canonization, we need to change them with an atom with a valence of 1\n        if (internalMolecule.getAtomicNo(i) === 1) {\n            internalMolecule.setAtomicNo(i, xAtomicNumber);\n        }\n    }\n    addPossibleChiralBonds(internalMolecule);\n    internalMolecule.ensureHelperArrays(Molecule.cHelperSymmetryStereoHeterotopicity);\n    const atoms = [];\n    for (let i = 0; i < molecule.getAllAtoms(); i++) {\n        if (internalMolecule.getAtomicNo(i) === xAtomicNumber) {\n            continue;\n        }\n        if (molecule.getAtomicNo(i) !== internalMolecule.getAtomicNo(i)) {\n            throw new Error('getChiralOrHeterotopicCarbons: mismatching atomic numbers');\n        }\n        if (internalMolecule.getAtomicNo(i) !== 6) {\n            continue;\n        }\n        const neighbourSymmetries = getNeighbourSymmetries(internalMolecule, i);\n        if (neighbourSymmetries.length === 4) {\n            atoms.push(i);\n        }\n    }\n    return atoms;\n}\nfunction addPossibleChiralBonds(molecule) {\n    const { Molecule } = molecule.getOCL();\n    molecule.ensureHelperArrays(Molecule.cHelperSymmetryStereoHeterotopicity);\n    for (let i = 0; i < molecule.getAtoms(); i++) {\n        if (molecule.getAtomicNo(i) !== 6)\n            continue;\n        if (molecule.getStereoBond(i) >= 0)\n            continue;\n        const neighbourSymmetries = getNeighbourSymmetries(molecule, i);\n        if (neighbourSymmetries.length <= 2)\n            continue;\n        const stereoBond = molecule.getAtomPreferredStereoBond(i);\n        if (stereoBond !== -1) {\n            molecule.setBondType(stereoBond, Molecule.cBondTypeUp);\n            if (molecule.getBondAtom(1, stereoBond) === i) {\n                const connAtom = molecule.getBondAtom(0, stereoBond);\n                molecule.setBondAtom(0, stereoBond, i);\n                molecule.setBondAtom(1, stereoBond, connAtom);\n            }\n            // To me it seems that we have to add all stereo centers into AND group 0. TLS 9.Nov.2015\n            molecule.setAtomESR(i, Molecule.cESRTypeAnd, 0);\n        }\n    }\n}\nfunction getNeighbourSymmetries(molecule, iAtom) {\n    const neighbourSymmetries = [];\n    for (let j = 0; j < molecule.getAllConnAtoms(iAtom); j++) {\n        const connAtom = molecule.getConnAtom(iAtom, j);\n        const symmetryRank = molecule.getSymmetryRank(connAtom);\n        if (!neighbourSymmetries.includes(symmetryRank)) {\n            neighbourSymmetries.push(molecule.getSymmetryRank(connAtom));\n        }\n    }\n    return neighbourSymmetries;\n}\n//# sourceMappingURL=getChiralOrHeterotopicCarbons.js.map","import { getChiralOrHeterotopicCarbons } from './getChiralOrHeterotopicCarbons.js';\n/**\n * This function will add missing chiral bonds on carbons ensure that all enantiotopic\n * or diastereotopic atoms can be identified uniquely\n * @param {import('openchemlib').Molecule} molecule\n * @param {object} [options={}]\n * @param {number} [options.esrType=Molecule.cESRTypeAnd]\n * @param {boolean} [options.atLeastThreeAtoms=true] - if true, only carbons with at least three atoms will be considered\n */\nexport function ensureHeterotopicChiralBonds(molecule, options = {}) {\n    const { Molecule } = molecule.getOCL();\n    const { esrType = Molecule.cESRTypeAnd, atLeastThreeAtoms = true } = options;\n    molecule.ensureHelperArrays(Molecule.cHelperBitNeighbours);\n    const heterotopicCarbons = getChiralOrHeterotopicCarbons(molecule);\n    for (const i of heterotopicCarbons) {\n        if (atLeastThreeAtoms && molecule.getAllConnAtoms(i) < 3)\n            continue;\n        if (molecule.getStereoBond(i) === -1) {\n            const stereoBond = molecule.getAtomPreferredStereoBond(i);\n            if (stereoBond !== -1) {\n                molecule.setBondType(stereoBond, Molecule.cBondTypeUp);\n                if (molecule.getBondAtom(1, stereoBond) === i) {\n                    const connAtom = molecule.getBondAtom(0, stereoBond);\n                    molecule.setBondAtom(0, stereoBond, i);\n                    molecule.setBondAtom(1, stereoBond, connAtom);\n                }\n                // To me it seems that we have to add all stereo centers into AND group 0. TLS 9.Nov.2015\n                molecule.setAtomESR(i, esrType, 0);\n            }\n        }\n    }\n}\n//# sourceMappingURL=ensureHeterotopicChiralBonds.js.map","import { ensureHeterotopicChiralBonds } from '../diastereotopic/ensureHeterotopicChiralBonds.js';\n/**\n * Expand all the implicit hydrogens and ensure chiral bonds on heterotopic bonds\n * @param molecule\n * @param options\n * @returns\n */\nexport function getMoleculeWithH(molecule, options) {\n    const { logger, maxNbAtoms } = options;\n    const moleculeWithH = molecule.getCompactCopy();\n    moleculeWithH.addImplicitHydrogens();\n    if (moleculeWithH.getAllAtoms() > maxNbAtoms) {\n        logger.warn(`too many atoms to evaluate heterotopic chiral bonds: ${moleculeWithH.getAllAtoms()} > ${maxNbAtoms}`);\n    }\n    else {\n        ensureHeterotopicChiralBonds(moleculeWithH);\n    }\n    return moleculeWithH;\n}\n//# sourceMappingURL=getMoleculeWithH.js.map","import { getXAtomicNumber } from '../util/getXAtomicNumber.js';\n/**\n * In order to be able to give a unique ID to all the atoms we are replacing the H by X\n * @param moleculeWithH\n * @returns\n */\nexport function getXMolecule(moleculeWithH) {\n    const xAtomNumber = getXAtomicNumber(moleculeWithH);\n    const xMolecule = moleculeWithH.getCompactCopy();\n    for (let i = 0; i < xMolecule.getAllAtoms(); i++) {\n        // hydrogens are not taken into account during canonization, we need to change them with an atom with a valence of 1\n        if (xMolecule.getAtomicNo(i) === 1) {\n            xMolecule.setAtomicNo(i, xAtomNumber);\n        }\n    }\n    return xMolecule;\n}\n//# sourceMappingURL=getXMolecule.js.map","import { getHoseCodesForAtomsAsFragments } from '../hose/getHoseCodesForAtomsInternal.js';\nimport { getAllAtomsPaths } from \"../path/getAllAtomsPaths.js\";\nimport { getConnectivityMatrix } from '../util/getConnectivityMatrix.js';\nimport { getCanonizedDiaIDs } from \"./getCanonizedDiaIDs.js\";\nimport { getCanonizedHoseCodes } from \"./getCanonizedHoseCodes.js\";\nimport { getDiaIDsAndInfo } from \"./getDiaIDsAndInfo.js\";\nimport { getFinalRanks, getHeterotopicSymmetryRanks, } from \"./getHeterotopicSymmetryRanks.js\";\nimport { getMoleculeWithH } from \"./getMoleculeWithH.js\";\nimport { getXMolecule } from \"./getXMolecule.js\";\n/**\n * This class deals with topicity information and hose codes\n * It is optimized to avoid recalculation of the same information\n */\nexport class TopicMolecule {\n    originalMolecule;\n    molecule;\n    idCode;\n    options;\n    cache;\n    constructor(molecule, options = {}) {\n        this.originalMolecule = molecule;\n        this.options = {\n            maxPathLength: 5,\n            maxNbAtoms: 250,\n            logger: console,\n            ...options,\n        };\n        this.idCode = molecule.getIDCode();\n        this.molecule = this.originalMolecule.getCompactCopy();\n        this.molecule.ensureHelperArrays(molecule.getOCL().Molecule.cHelperNeighbours);\n        this.molecule.ensureHelperArrays(this.molecule.getOCL().Molecule.cHelperNeighbours);\n        this.cache = {};\n    }\n    /**\n     * This method ensures that all the atoms have a mapNo corresponding to the atom number.\n     * It will enforce mapNo in molecule and moleculeWithH\n     * We start numbering the atoms at 1\n     */\n    setAtomNoInMapNo() {\n        const molecules = [this.molecule, this.moleculeWithH];\n        for (const molecule of molecules) {\n            for (let i = 0; i < molecule.getAllAtoms(); i++) {\n                molecule.setAtomMapNo(i, i + 1, false);\n            }\n        }\n    }\n    /**\n     * This method ensures that all the atoms have a mapNo in the molecule (and not the moleculeWithH! )\n     */\n    ensureMapNo() {\n        const existingMapNo = {};\n        for (let i = 0; i < this.molecule.getAllAtoms(); i++) {\n            const mapNo = this.molecule.getAtomMapNo(i);\n            if (mapNo) {\n                if (existingMapNo[mapNo]) {\n                    throw new Error('The molecule contains several atoms with the same mapNo');\n                }\n                existingMapNo[mapNo] = true;\n            }\n        }\n        let nextMapNo = 1;\n        for (let i = 0; i < this.molecule.getAllAtoms(); i++) {\n            const mapNo = this.molecule.getAtomMapNo(i);\n            if (!mapNo) {\n                while (existingMapNo[nextMapNo]) {\n                    nextMapNo++;\n                }\n                existingMapNo[nextMapNo] = true;\n                this.molecule.setAtomMapNo(i, nextMapNo, false);\n            }\n        }\n    }\n    getHoseFragment(rootAtoms, options = {}) {\n        const { sphereSize = 2, tagAtoms = rootAtoms, tagAtomFct } = options;\n        const fragments = getHoseCodesForAtomsAsFragments(this.moleculeWithH, {\n            rootAtoms,\n            minSphereSize: sphereSize,\n            maxSphereSize: sphereSize,\n            tagAtoms,\n            tagAtomFct,\n        });\n        return fragments[0];\n    }\n    getAtomPathsFrom(atom, options = {}) {\n        const { minPathLength = 1, maxPathLength = this.options.maxPathLength, toAtomicNo, } = options;\n        if (maxPathLength > this.options.maxPathLength) {\n            throw new Error('The maxPathLength is too long, you should increase the maxPathLength when instantiating the TopicMolecule');\n        }\n        const atomPaths = this.atomsPaths[atom];\n        if (!atomPaths) {\n            throw new Error('Unexpected missing atom path');\n        }\n        const paths = [];\n        for (let i = minPathLength; i <= maxPathLength; i++) {\n            const atomPathValue = atomPaths[i];\n            if (!atomPathValue) {\n                throw new Error(`Unexpected missing atom path at index ${i}`);\n            }\n            for (const atomPath of atomPathValue) {\n                if (!toAtomicNo ||\n                    this.moleculeWithH.getAtomicNo(atomPath.path.at(-1)) ===\n                        toAtomicNo) {\n                    paths.push(atomPath.path);\n                }\n            }\n        }\n        return paths;\n    }\n    getAtomPaths(atom1, atom2, options = {}) {\n        const { pathLength } = options;\n        if (pathLength !== undefined && pathLength > this.options.maxPathLength) {\n            throw new Error('The distance is too long, you should increase the maxPathLength when instantiating the TopicMolecule');\n        }\n        const atomPaths = this.atomsPaths[atom1];\n        if (!atomPaths) {\n            throw new Error('Unexpected missing atom path');\n        }\n        const minDistance = pathLength || 0;\n        const maxDistance = pathLength || this.options.maxPathLength;\n        const paths = [];\n        for (let i = minDistance; i <= maxDistance; i++) {\n            const atomPathValue = atomPaths[i];\n            if (!atomPathValue) {\n                throw new Error(`Unexpected missing atom path at index ${i}`);\n            }\n            for (const atomPath of atomPathValue) {\n                if (atomPath.path.at(-1) === atom2) {\n                    paths.push(atomPath.path);\n                }\n            }\n        }\n        return paths;\n    }\n    get atomsPaths() {\n        if (this.cache.atomsPaths)\n            return this.cache.atomsPaths;\n        this.cache.atomsPaths = getAllAtomsPaths(this.moleculeWithH, {\n            maxPathLength: this.options.maxPathLength,\n        });\n        return this.cache.atomsPaths;\n    }\n    toMolfile(options = {}) {\n        const { version = 2 } = options;\n        if (version === 2) {\n            return this.molecule.toMolfile();\n        }\n        return this.molecule.toMolfileV3();\n    }\n    getMolecule() {\n        return this.molecule;\n    }\n    /**\n     * Returns a new TopicMolecule but will copy precalculated information\n     * if possible (same idCode). This is very practical when expanding hydrogens\n     * for example.\n     * @param molecule\n     * @returns\n     */\n    fromMolecule(molecule) {\n        const idCode = molecule.getIDCode();\n        if (idCode !== this.idCode) {\n            // no way for optimisation\n            return new TopicMolecule(molecule);\n        }\n        const topicMolecule = new TopicMolecule(molecule);\n        topicMolecule.cache = {\n            canonizedDiaIDs: this.cache.canonizedDiaIDs,\n            canonizedHoseCodes: this.cache.canonizedHoseCodes,\n        };\n        return topicMolecule;\n    }\n    /**\n     * Returns a molecule with all the hydrogens added. The order is NOT canonized\n     */\n    get moleculeWithH() {\n        if (this.cache.moleculeWithH)\n            return this.cache.moleculeWithH;\n        this.cache.moleculeWithH = getMoleculeWithH(this.molecule, {\n            maxNbAtoms: this.options.maxNbAtoms,\n            logger: this.options.logger,\n        });\n        return this.cache.moleculeWithH;\n    }\n    get xMolecule() {\n        if (this.cache.xMolecule)\n            return this.cache.xMolecule;\n        this.cache.xMolecule = getXMolecule(this.moleculeWithH);\n        return this.cache.xMolecule;\n    }\n    /**\n     * This is related to the current moleculeWithH. The order is NOT canonized\n     */\n    get diaIDs() {\n        if (this.cache.diaIDs)\n            return this.cache.diaIDs;\n        const diaIDs = [];\n        if (this.moleculeWithH.getAllAtoms() > this.options.maxNbAtoms) {\n            this.options.logger.warn(`too many atoms to evaluate heterotopicity: ${this.moleculeWithH.getAllAtoms()} > ${this.options.maxNbAtoms}`);\n        }\n        else {\n            for (let i = 0; i < this.moleculeWithH.getAllAtoms(); i++) {\n                diaIDs.push(this.canonizedDiaIDs[this.finalRanks[i]]);\n            }\n        }\n        this.cache.diaIDs = diaIDs;\n        return diaIDs;\n    }\n    /**\n     * We return the atomIDs corresponding to the specified diaID as well has the attached hydrogens or heavy atoms\n     * @param diaID\n     * @returns\n     */\n    getDiaIDsObject() {\n        return groupDiastereotopicAtomIDsAsObject(this.diaIDs, this.molecule, this.moleculeWithH);\n    }\n    /**\n     * This is related to the current moleculeWithH. The order is NOT canonized\n     */\n    get hoseCodes() {\n        if (this.cache.hoseCodes)\n            return this.cache.hoseCodes;\n        const hoseCodes = [];\n        for (let i = 0; i < this.moleculeWithH.getAllAtoms(); i++) {\n            hoseCodes.push(this.canonizedHoseCodes[this.finalRanks[i]]);\n        }\n        this.cache.hoseCodes = hoseCodes;\n        return hoseCodes;\n    }\n    get canonizedDiaIDs() {\n        if (this.cache.canonizedDiaIDs)\n            return this.cache.canonizedDiaIDs;\n        this.cache.canonizedDiaIDs = getCanonizedDiaIDs(this, {\n            maxNbAtoms: this.options.maxNbAtoms,\n            logger: this.options.logger,\n        });\n        return this.cache.canonizedDiaIDs;\n    }\n    get canonizedHoseCodes() {\n        if (this.cache.canonizedHoseCodes) {\n            return this.cache.canonizedHoseCodes;\n        }\n        this.cache.canonizedHoseCodes = getCanonizedHoseCodes(this);\n        return this.cache.canonizedHoseCodes;\n    }\n    /**\n     * Returns the distance matrix for the current moleculeWithH\n     */\n    get distanceMatrix() {\n        return getConnectivityMatrix(this.moleculeWithH, { pathLength: true });\n    }\n    get diaIDsAndInfo() {\n        if (this.cache.diaIDsAndInfo) {\n            return this.cache.diaIDsAndInfo;\n        }\n        this.cache.diaIDsAndInfo = getDiaIDsAndInfo(this, this.canonizedDiaIDs);\n        return this.cache.diaIDsAndInfo;\n    }\n    /**\n     * Returns symmetryRanks for all the atoms including hydrogens. Those ranks\n     * deals with topicity and is related to the current moleculeWithH.\n     * In order to calculate the ranks we replace all the\n     * hydrogens with a X atom.\n     */\n    get heterotopicSymmetryRanks() {\n        if (this.cache.heterotopicSymmetryRanks) {\n            return this.cache.heterotopicSymmetryRanks;\n        }\n        this.cache.heterotopicSymmetryRanks = getHeterotopicSymmetryRanks(this.xMolecule);\n        return [...this.cache.heterotopicSymmetryRanks];\n    }\n    /**\n     * Returns finalRanks for all the atoms including hydrogens. Those ranks\n     * deals with topicity and is related to the current moleculeWithH.\n     * All the atoms have a unique identifier.j\n     * In order to calculate the ranks we replace all the\n     * hydrogens with a X atom.\n     */\n    get finalRanks() {\n        if (this.cache.finalRanks)\n            return this.cache.finalRanks;\n        this.cache.finalRanks = getFinalRanks(this.xMolecule);\n        return this.cache.finalRanks;\n    }\n    toMolfileWithH(options = {}) {\n        const { version = 2 } = options;\n        if (version === 2) {\n            return this.moleculeWithH.toMolfile();\n        }\n        return this.moleculeWithH.toMolfileV3();\n    }\n    toMolfileWithoutH(options = {}) {\n        const molecule = this.molecule.getCompactCopy();\n        molecule.ensureHelperArrays(molecule.getOCL().Molecule.cHelperNeighbours);\n        const atomsToDelete = [];\n        for (let atomID = 0; atomID < molecule.getAtoms(); atomID++) {\n            if (molecule.getExplicitHydrogens(atomID) > 0) {\n                for (let i = 0; i < molecule.getAllConnAtoms(atomID); i++) {\n                    const connectedAtom = molecule.getConnAtom(atomID, i);\n                    if (molecule.getAtomicNo(connectedAtom) === 1) {\n                        atomsToDelete.push(connectedAtom);\n                    }\n                }\n            }\n        }\n        molecule.deleteAtoms(atomsToDelete);\n        const { version = 2 } = options;\n        if (version === 2) {\n            return molecule.toMolfile();\n        }\n        return molecule.toMolfileV3();\n    }\n    /**\n     * Returns an array of objects containing the oclID and the corresponding hydrogens and atoms\n     * for the specified atomLabel (if any)\n     * This always applied to the molecule with expanded hydrogens and chirality\n     * @param options\n     * @returns\n     */\n    getGroupedDiastereotopicAtomIDs(options = {}) {\n        if (!this.diaIDs)\n            return undefined;\n        return groupDiastereotopicAtomIDs(this.diaIDs, this.moleculeWithH, options);\n    }\n    /**\n     * This method returns a mapping between the diaIDs of the current molecule.\n     * It expects that the initial molfile and the final molfile contains atomMapNo\n     * in order to track which atom becomes which one.\n     * @param molecule\n     */\n    getDiaIDsMapping(molecule) {\n        const topicMolecule = new TopicMolecule(molecule);\n        const originalDiaIDs = this.diaIDsAndInfo.filter((diaID) => diaID.atomMapNo);\n        const destinationDiaIDs = topicMolecule.diaIDsAndInfo.filter((diaID) => diaID.atomMapNo);\n        const mapping = {};\n        // we first check all the atoms present in the molfile\n        for (const destinationDiaID of destinationDiaIDs) {\n            const originalDiaID = originalDiaIDs.find((diaID) => diaID.atomMapNo === destinationDiaID.atomMapNo);\n            const newIDCode = destinationDiaID.idCode;\n            const oldIDCode = originalDiaID.idCode;\n            if (oldIDCode in mapping) {\n                if (mapping[oldIDCode] !== newIDCode) {\n                    mapping[oldIDCode] = undefined;\n                }\n            }\n            else {\n                mapping[oldIDCode] = newIDCode;\n            }\n        }\n        // we now check all the attached hydrogens that are not defined in the molfile and were not yet mapped\n        for (const destinationDiaID of destinationDiaIDs) {\n            const originalDiaID = originalDiaIDs.find((diaID) => diaID.atomMapNo === destinationDiaID.atomMapNo);\n            for (let i = 0; i < originalDiaID.attachedHydrogensIDCodes.length; i++) {\n                const oldHydrogenIDCode = originalDiaID.attachedHydrogensIDCodes.at(i);\n                if (mapping[oldHydrogenIDCode])\n                    continue;\n                const newHydrogenIDCode = destinationDiaID.attachedHydrogensIDCodes[i];\n                if (oldHydrogenIDCode && newHydrogenIDCode) {\n                    if (oldHydrogenIDCode in mapping) {\n                        if (mapping[oldHydrogenIDCode] !== newHydrogenIDCode) {\n                            mapping[oldHydrogenIDCode] = undefined;\n                        }\n                    }\n                    else {\n                        mapping[oldHydrogenIDCode] = newHydrogenIDCode;\n                    }\n                }\n            }\n        }\n        return mapping;\n    }\n}\nexport function groupDiastereotopicAtomIDs(diaIDs, molecule, options = {}) {\n    const diaIDsObject = groupDiastereotopicAtomIDsAsObject(diaIDs, molecule, molecule, options);\n    return Object.values(diaIDsObject);\n}\nfunction groupDiastereotopicAtomIDsAsObject(diaIDs, molecule, moleculeWithH, options = {}) {\n    const { atomLabel } = options;\n    const diaIDsObject = {};\n    for (let i = 0; i < diaIDs.length; i++) {\n        if (!atomLabel || moleculeWithH.getAtomLabel(i) === atomLabel) {\n            const diaID = diaIDs[i];\n            if (!diaIDsObject[diaID]) {\n                diaIDsObject[diaID] = {\n                    counter: 0,\n                    atoms: [],\n                    oclID: diaID,\n                    atomLabel: moleculeWithH.getAtomLabel(i),\n                    heavyAtoms: [],\n                    attachedHydrogens: [],\n                    existingAtoms: [],\n                };\n            }\n            if (moleculeWithH.getAtomicNo(i) === 1) {\n                const connected = moleculeWithH.getConnAtom(i, 0);\n                if (!diaIDsObject[diaID].heavyAtoms.includes(connected)) {\n                    diaIDsObject[diaID].heavyAtoms.push(connected);\n                }\n                if (molecule.getAtomicNo(i)) {\n                    diaIDsObject[diaID].existingAtoms.push(i);\n                }\n                else if (!diaIDsObject[diaID].existingAtoms.includes(connected)) {\n                    diaIDsObject[diaID].existingAtoms.push(connected);\n                }\n            }\n            else {\n                for (let j = 0; j < moleculeWithH.getAllConnAtoms(i); j++) {\n                    const connected = moleculeWithH.getConnAtom(i, j);\n                    if (moleculeWithH.getAtomicNo(connected) === 1) {\n                        diaIDsObject[diaID].attachedHydrogens.push(connected);\n                    }\n                }\n                diaIDsObject[diaID].existingAtoms.push(i);\n            }\n            diaIDsObject[diaID].counter++;\n            diaIDsObject[diaID].atoms.push(i);\n        }\n    }\n    for (const diaIDObject of Object.values(diaIDsObject)) {\n        diaIDObject.existingAtoms.sort((a, b) => a - b);\n        diaIDObject.attachedHydrogens.sort((a, b) => a - b);\n    }\n    return diaIDsObject;\n}\n//# sourceMappingURL=TopicMolecule.js.map","import { getXAtomicNumber } from './getXAtomicNumber.js';\n/**\n * Returns an array of symmetry ranks.\n * @param {import('openchemlib').Molecule} molecule - An instance of a molecule\n * @returns\n */\nexport function getSymmetryRanks(molecule) {\n    const { Molecule } = molecule.getOCL();\n    const xAtomNumber = getXAtomicNumber(molecule);\n    // most of the molecules have some symmetry\n    const internalMolecule = molecule.getCompactCopy();\n    for (let i = 0; i < internalMolecule.getAllAtoms(); i++) {\n        // hydrogens are not taken into account during canonization, we need to change them with an atom with a valence of 1\n        if (internalMolecule.getAtomicNo(i) === 1) {\n            internalMolecule.setAtomicNo(i, xAtomNumber);\n        }\n    }\n    internalMolecule.ensureHelperArrays(Molecule.cHelperSymmetryStereoHeterotopicity);\n    const symmetryRanks = [];\n    for (let i = 0; i < molecule.getAllAtoms(); i++) {\n        symmetryRanks.push(internalMolecule.getSymmetryRank(i));\n    }\n    return symmetryRanks;\n}\n//# sourceMappingURL=getSymmetryRanks.js.map","import { getSymmetryRanks } from '../util/getSymmetryRanks.js';\nimport { makeRacemic } from '../util/makeRacemic.js';\nimport { tagAtom } from \"../util/tagAtom.js\";\nimport { ensureHeterotopicChiralBonds } from './ensureHeterotopicChiralBonds.js';\n/**\n * Returns an array of diastereotopic ID (as idCode)\n * @param {import('openchemlib').Molecule} molecule\n */\nexport function getDiastereotopicAtomIDs(molecule) {\n    const { Molecule } = molecule.getOCL();\n    ensureHeterotopicChiralBonds(molecule);\n    const symmetryRanks = getSymmetryRanks(molecule);\n    const numberAtoms = molecule.getAllAtoms();\n    const ids = [];\n    const cache = {};\n    for (let iAtom = 0; iAtom < numberAtoms; iAtom++) {\n        const rank = symmetryRanks[iAtom];\n        if (rank && cache[rank]) {\n            ids[iAtom] = cache[rank];\n            continue;\n        }\n        const tempMolecule = molecule.getCompactCopy();\n        tagAtom(tempMolecule, iAtom);\n        makeRacemic(tempMolecule);\n        // We need to ensure the helper array in order to get correctly the result of racemisation\n        ids[iAtom] = tempMolecule.getCanonizedIDCode(Molecule.CANONIZER_ENCODE_ATOM_CUSTOM_LABELS);\n        cache[rank] = ids[iAtom];\n    }\n    return ids;\n}\n//# sourceMappingURL=getDiastereotopicAtomIDs.js.map","import { getDiastereotopicAtomIDs } from './getDiastereotopicAtomIDs.js';\n/**\n *\n * @param {import('openchemlib').Molecule} molecule\n */\nexport function getDiastereotopicAtomIDsAndH(molecule) {\n    const OCL = molecule.getOCL();\n    molecule = molecule.getCompactCopy();\n    molecule.addImplicitHydrogens();\n    molecule.ensureHelperArrays(OCL.Molecule.cHelperNeighbours);\n    const diaIDs = getDiastereotopicAtomIDs(molecule);\n    const newDiaIDs = [];\n    for (let i = 0; i < diaIDs.length; i++) {\n        const diaID = diaIDs[i];\n        const newDiaID = {\n            oclID: diaID,\n            hydrogenOCLIDs: [],\n            nbHydrogens: 0,\n        };\n        if (molecule.getAtomicNo(i) === 1) {\n            const atom = molecule.getConnAtom(i, 0);\n            newDiaID.heavyAtom = diaIDs[atom];\n        }\n        for (let j = 0; j < molecule.getAllConnAtoms(i); j++) {\n            const atom = molecule.getConnAtom(i, j);\n            if (molecule.getAtomicNo(atom) === 1) {\n                newDiaID.nbHydrogens++;\n                if (!newDiaID.hydrogenOCLIDs.includes(diaIDs[atom])) {\n                    newDiaID.hydrogenOCLIDs.push(diaIDs[atom]);\n                }\n            }\n        }\n        newDiaIDs.push(newDiaID);\n    }\n    return newDiaIDs;\n}\n//# sourceMappingURL=getDiastereotopicAtomIDsAndH.js.map","export function groupDiastereotopicAtomIDs(diaIDs, molecule, options = {}) {\n    const { atomLabel } = options;\n    const diaIDsObject = {};\n    for (let i = 0; i < diaIDs.length; i++) {\n        if (!atomLabel || molecule.getAtomLabel(i) === atomLabel) {\n            const diaID = diaIDs[i];\n            if (!diaIDsObject[diaID]) {\n                diaIDsObject[diaID] = {\n                    counter: 0,\n                    atoms: [],\n                    oclID: diaID,\n                    atomLabel: molecule.getAtomLabel(i),\n                };\n            }\n            diaIDsObject[diaID].counter++;\n            diaIDsObject[diaID].atoms.push(i);\n        }\n    }\n    return Object.keys(diaIDsObject).map((key) => diaIDsObject[key]);\n}\n//# sourceMappingURL=groupDiastereotopicAtomIDs.js.map","import { getDiastereotopicAtomIDs } from './getDiastereotopicAtomIDs.js';\nimport { groupDiastereotopicAtomIDs } from './groupDiastereotopicAtomIDs.js';\n/**\n * This function groups the diasterotopic atomIds of the molecule based on equivalence of atoms. The output object contains\n * a set of chemically equivalent atoms(element.atoms) and the groups of magnetically equivalent atoms (element.magneticGroups)\n * @param {import('openchemlib').Molecule} molecule\n * @param {object} [options={}]\n * @param {string} [options.atomLabel] - Select atoms of the given atomLabel. By default it returns all the explicit atoms in the molecule\n * @returns {Array}\n */\nexport function getGroupedDiastereotopicAtomIDs(molecule, options = {}) {\n    const diaIDs = getDiastereotopicAtomIDs(molecule);\n    return groupDiastereotopicAtomIDs(diaIDs, molecule, options);\n}\n//# sourceMappingURL=getGroupedDiastereotopicAtomIDs.js.map","import { getDiastereotopicAtomIDsAndH } from './getDiastereotopicAtomIDsAndH.js';\n/**\n * Parse a molfile and returns an object containing the molecule, the map and the diaIDs\n * The map allows to reload properties assigned to the atom molfile\n * Please take care than numbering of atoms starts at 0 !\n * @param {typeof import('openchemlib')} OCL - openchemlib library\n * @param {string} molfile\n * @returns\n */\nexport function getDiastereotopicAtomIDsFromMolfile(OCL, molfile) {\n    const { map, molecule } = OCL.Molecule.fromMolfileWithAtomMap(molfile);\n    const diaIDsArray = getDiastereotopicAtomIDsAndH(molecule);\n    const diaIDs = {};\n    for (let i = 0; i < map.length; i++) {\n        diaIDs[map[i]] = { source: map[i], destination: i, ...diaIDsArray[i] };\n    }\n    return { map: diaIDs, molecule, diaIDs: diaIDsArray };\n}\n//# sourceMappingURL=getDiastereotopicAtomIDsFromMolfile.js.map","import { getDiastereotopicAtomIDsAndH } from './getDiastereotopicAtomIDsAndH.js';\n/**\n * Returns a SVG\n * @param {*} molecule\n * @param {*} [options={}]\n */\nexport function toDiastereotopicSVG(molecule, options = {}) {\n    const { width = 300, height = 200, prefix = 'ocl', heavyAtomHydrogen = false, } = options;\n    let svg = options.svg;\n    let diaIDs = [];\n    const hydrogenInfo = {};\n    for (const line of getDiastereotopicAtomIDsAndH(molecule)) {\n        hydrogenInfo[line.oclID] = line;\n    }\n    if (heavyAtomHydrogen) {\n        for (let i = 0; i < molecule.getAtoms(); i++) {\n            diaIDs.push([]);\n        }\n        const groupedDiaIDs = molecule.getGroupedDiastereotopicAtomIDs();\n        for (const diaID of groupedDiaIDs) {\n            if (hydrogenInfo[diaID.oclID] &&\n                hydrogenInfo[diaID.oclID].nbHydrogens > 0) {\n                for (const atom of diaID.atoms) {\n                    for (const id of hydrogenInfo[diaID.oclID].hydrogenOCLIDs) {\n                        if (!diaIDs[atom * 1].includes(id))\n                            diaIDs[atom].push(id);\n                    }\n                }\n            }\n        }\n    }\n    else {\n        diaIDs = molecule.getDiastereotopicAtomIDs().map((a) => [a]);\n    }\n    if (!svg)\n        svg = molecule.toSVG(width, height, prefix);\n    svg = svg.replaceAll(/Atom:\\d+\"/g, (value) => {\n        const atom = value.replaceAll(/\\D/g, '');\n        return `${value} data-diaid=\"${diaIDs[atom].join(',')}\"`;\n    });\n    return svg;\n}\n//# sourceMappingURL=toDiastereotopicSVG.js.map","import { ensureHeterotopicChiralBonds } from '../diastereotopic/ensureHeterotopicChiralBonds.js';\nimport { tagAtom } from \"../util/tagAtom.js\";\nimport { getHoseCodesForAtomsInternal } from './getHoseCodesForAtomsInternal.js';\n/**\n * Returns the hose codes for all atoms in the molecule\n * @param {*} molecule\n * @param {object} [options={}]\n * @param {string[]} [options.atomLabels]\n * @param {number} [options.minSphereSize=0]\n * @param {number} [options.maxSphereSize=4]\n * @returns\n */\nexport function getHoseCodes(molecule, options = {}) {\n    const { atomLabels, minSphereSize, maxSphereSize } = options;\n    const { Molecule } = molecule.getOCL();\n    const atomicNumbers = atomLabels?.map((label) => Molecule.getAtomicNoFromLabel(label));\n    const internalMolecule = molecule.getCompactCopy();\n    internalMolecule.addImplicitHydrogens();\n    ensureHeterotopicChiralBonds(internalMolecule);\n    const hoses = [];\n    for (let i = 0; i < internalMolecule.getAllAtoms(); i++) {\n        if (atomicNumbers &&\n            !atomicNumbers.includes(internalMolecule.getAtomicNo(i))) {\n            hoses.push(undefined);\n        }\n        else {\n            const tempMolecule = internalMolecule.getCompactCopy();\n            tagAtom(tempMolecule, i);\n            hoses.push(getHoseCodesForAtomsInternal(tempMolecule, {\n                minSphereSize,\n                maxSphereSize,\n            }));\n        }\n    }\n    return hoses;\n}\n//# sourceMappingURL=getHoseCodes.js.map","import { ensureHeterotopicChiralBonds } from '../diastereotopic/ensureHeterotopicChiralBonds.js';\nimport { getConnectivityMatrix } from '../util/getConnectivityMatrix.js';\nimport { getSymmetryRanks } from '../util/getSymmetryRanks.js';\nimport { makeRacemic } from '../util/makeRacemic.js';\nimport { tagAtom } from \"../util/tagAtom.js\";\nimport { getHoseCodesForAtomsInternal } from './getHoseCodesForAtomsInternal.js';\n/**\n * Returns an object containing a molfile, molfile with hydrogens, hoses codes and optionally the diaIDs\n * and the diaIDs\n * The map allows to reload properties assigned to the atom molfile\n * Please take care than numbering of atoms starts at 0 !\n * @param {import('openchemlib').Molecule} molecule\n * @param {object} [options={}]\n * @param {string[]} [options.atomLabels]\n * @param {boolean} [options.calculateDiastereotopicIDs=true]\n * @param {number} [options.minSphereSize=0]\n * @param {number} [options.maxSphereSize=4]\n * @returns\n */\nexport function getHoseCodesAndInfo(molecule, options = {}) {\n    const { minSphereSize, maxSphereSize, calculateDiastereotopicIDs = true, } = options;\n    const { Molecule } = molecule.getOCL();\n    molecule = molecule.getCompactCopy();\n    // this will force reordering of the hydrogens to the end, just to have the same order as in the molfile\n    molecule.ensureHelperArrays(Molecule.cHelperNeighbours);\n    const newMolfile = molecule.toMolfile();\n    molecule.addImplicitHydrogens();\n    ensureHeterotopicChiralBonds(molecule);\n    molecule.ensureHelperArrays(Molecule.cHelperSymmetryStereoHeterotopicity);\n    const newMolfileWithH = molecule.toMolfile();\n    const symmetryRanks = getSymmetryRanks(molecule);\n    const cache = {};\n    const hoses = [];\n    const diaIDs = [];\n    for (let i = 0; i < molecule.getAllAtoms(); i++) {\n        const rank = symmetryRanks[i];\n        if (rank && cache[rank]) {\n            diaIDs.push(cache[rank].diaID);\n            hoses.push(cache[rank].hose);\n            continue;\n        }\n        const tempMolecule = molecule.getCompactCopy();\n        tagAtom(tempMolecule, i);\n        let diaID;\n        if (calculateDiastereotopicIDs) {\n            makeRacemic(tempMolecule);\n            diaID = tempMolecule.getCanonizedIDCode(Molecule.CANONIZER_ENCODE_ATOM_CUSTOM_LABELS);\n            diaIDs.push(diaID);\n        }\n        const hose = getHoseCodesForAtomsInternal(tempMolecule, {\n            minSphereSize,\n            maxSphereSize,\n        });\n        hoses.push(hose);\n        cache[rank] = { diaID, hose };\n    }\n    const distanceMatrix = getConnectivityMatrix(molecule, { pathLength: true });\n    return {\n        molfile: newMolfile,\n        molfileWithH: newMolfileWithH,\n        hoses,\n        diaIDs: calculateDiastereotopicIDs ? diaIDs : undefined,\n        moleculeWithHydrogens: molecule,\n        distanceMatrix,\n    };\n}\n//# sourceMappingURL=getHoseCodesAndInfo.js.map","import { ensureHeterotopicChiralBonds } from '../diastereotopic/ensureHeterotopicChiralBonds.js';\nimport { tagAtom } from \"../util/tagAtom.js\";\nimport { getHoseCodesForAtomsInternal } from './getHoseCodesForAtomsInternal.js';\nexport const FULL_HOSE_CODE = 1;\nexport const HOSE_CODE_CUT_C_SP3_SP3 = 2;\n/**\n * Returns the hose code for specific atom numbers\n * @param {import('openchemlib').Molecule} originalMolecule - The OCL molecule to be fragmented\n * @param {number[]} rootAtoms\n * @param {object} [options={}]\n * @param {number} [options.minSphereSize=0] - Smallest hose code sphere\n * @param {number} [options.maxSphereSize=4] - Largest hose code sphere\n * @param {number} [options.kind=FULL_HOSE_CODE] - Kind of hose code, default usual sphere\n */\nexport function getHoseCodesForAtoms(originalMolecule, rootAtoms = [], options = {}) {\n    const { minSphereSize = 0, maxSphereSize = 4, kind = FULL_HOSE_CODE, } = options;\n    const molecule = originalMolecule.getCompactCopy();\n    // those 2 lines should be done only once\n    molecule.addImplicitHydrogens();\n    ensureHeterotopicChiralBonds(molecule);\n    const allowedCustomLabels = [];\n    for (const rootAtom of rootAtoms) {\n        allowedCustomLabels.push(tagAtom(molecule, rootAtom));\n    }\n    return getHoseCodesForAtomsInternal(molecule, {\n        minSphereSize,\n        maxSphereSize,\n        allowedCustomLabels,\n        kind,\n    });\n}\n//# sourceMappingURL=getHoseCodesForAtoms.js.map","import { getHoseCodesForAtoms } from './getHoseCodesForAtoms.js';\n/**\n * Returns the hose code for a specific atom number\n * @param {import('openchemlib').Molecule} originalMolecule\n * @param {number} rootAtom\n * @param {object} [options={}]\n * @param {boolean} [options.isTagged] - Specify is the atom is already tagged\n * @param {number} [options.minSphereSize=0] - Smallest hose code sphere\n * @param {number} [options.maxSphereSize=4] - Largest hose code sphere\n * @param {number} [options.kind=FULL_HOSE_CODE] - Kind of hose code, default usual sphere\n */\nexport function getHoseCodesForAtom(originalMolecule, rootAtom, options = {}) {\n    return getHoseCodesForAtoms(originalMolecule, [rootAtom], options);\n}\n//# sourceMappingURL=getHoseCodesForAtom.js.map","import { ensureHeterotopicChiralBonds } from '../diastereotopic/ensureHeterotopicChiralBonds.js';\nimport { getHoseCodesForAtomsInternal } from './getHoseCodesForAtomsInternal.js';\n/**\n * Returns the hose code for a specific marked atom\n * @param {import('openchemlib').Molecule} molecule\n * @param {object} options\n */\nexport function getHoseCodesFromDiastereotopicID(molecule, options = {}) {\n    molecule.addImplicitHydrogens();\n    ensureHeterotopicChiralBonds(molecule);\n    return getHoseCodesForAtomsInternal(molecule, options);\n}\n//# sourceMappingURL=getHoseCodesFromDiastereotopicID.js.map","import { ensureHeterotopicChiralBonds } from '../diastereotopic/ensureHeterotopicChiralBonds.js';\nimport { makeRacemic } from '../util/makeRacemic.js';\nimport { tagAtom } from \"../util/tagAtom.js\";\nlet fragment;\n/**\n * Returns the hose code for a specific atom number\n * @param {import('openchemlib').Molecule} molecule\n * @param from\n * @param to\n * @param maxLength\n */\nexport function getHoseCodesForPath(molecule, from, to, maxLength) {\n    const OCL = molecule.getOCL();\n    const originalFrom = from;\n    const originalTo = to;\n    molecule = molecule.getCompactCopy();\n    const originalAtoms = []; // path before renumbering\n    molecule.getPath(originalAtoms, from, to, maxLength + 1);\n    let torsion;\n    if (originalAtoms.length === 4) {\n        torsion = molecule.calculateTorsion(originalAtoms);\n    }\n    const tag1 = tagAtom(molecule, from);\n    const tag2 = tagAtom(molecule, to);\n    molecule.addImplicitHydrogens();\n    ensureHeterotopicChiralBonds(molecule);\n    molecule.ensureHelperArrays(OCL.Molecule.cHelperNeighbours);\n    from = -1;\n    to = -1;\n    for (let i = 0; i < molecule.getAllAtoms(); i++) {\n        if (tag1 === tag2) {\n            if (molecule.getAtomCustomLabel(i) === tag1) {\n                if (from === -1) {\n                    from = i;\n                }\n                else {\n                    to = i;\n                }\n            }\n        }\n        else {\n            if (tag1 === molecule.getAtomCustomLabel(i)) {\n                from = i;\n            }\n            if (tag2 === molecule.getAtomCustomLabel(i)) {\n                to = i;\n            }\n        }\n    }\n    if (!fragment)\n        fragment = new OCL.Molecule(0, 0);\n    const atoms = [];\n    molecule.getPath(atoms, from, to, maxLength + 1);\n    let min = 0;\n    let max = 0;\n    const atomMask = new Array(molecule.getAllAtoms()).fill(false);\n    const atomList = new Array(molecule.getAllAtoms()).fill(-1);\n    const hoses = [];\n    for (let sphere = 0; sphere <= 2; sphere++) {\n        if (max === 0) {\n            for (const atom of atoms) {\n                atomMask[atom] = true;\n                atomList[max++] = atom;\n            }\n        }\n        else {\n            let newMax = max;\n            for (let i = min; i < max; i++) {\n                const atom = atomList[i];\n                for (let j = 0; j < molecule.getAllConnAtoms(atom); j++) {\n                    const connAtom = molecule.getConnAtom(atom, j);\n                    if (!atomMask[connAtom]) {\n                        atomMask[connAtom] = true;\n                        atomList[newMax++] = connAtom;\n                    }\n                }\n            }\n            min = max;\n            max = newMax;\n        }\n        const atomMap = [];\n        molecule.copyMoleculeByAtoms(fragment, atomMask, true, atomMap);\n        makeRacemic(fragment);\n        const oclID = fragment.getCanonizedIDCode(OCL.Molecule.CANONIZER_ENCODE_ATOM_CUSTOM_LABELS);\n        hoses.push({\n            sphere,\n            oclID,\n        });\n    }\n    return {\n        atoms: originalAtoms,\n        from: originalFrom,\n        to: originalTo,\n        torsion,\n        hoses,\n        length: originalAtoms.length - 1,\n    };\n}\n//# sourceMappingURL=getHoseCodesForPath.js.map","/**\n * Create a polymer from a unit, alpha and omega groups\n * A unit must contain a R1 and a R2\n * An alpha end group must contain a R1\n * An omega end group must contain a R2\n * @param {import('openchemlib').Molecule} unit - an instance of OCL.Molecule\n * @param {object} options\n * @param {number} [options.count=10] - number of units\n * @param {boolean} [options.markMonomer=false] - mark the different units of the polymer in the atom map\n * @param {import('openchemlib').Molecule} [options.alpha] - alpha end group, default is an hydrogen\n * @param {import('openchemlib').Molecule} [options.gamma] - omega end group, default is an hydrogen\n */\nexport function createPolymer(unit, options = {}) {\n    const { count = 10 } = options;\n    checkEntity(unit, 'unit');\n    const { Molecule } = unit.getOCL();\n    const { alpha, gamma } = getAlphaGamma(unit, options);\n    checkEntity(alpha, 'alpha');\n    checkEntity(gamma, 'gamma');\n    const { r1AtomicNo, r2AtomicNo } = getR1R2AtomicNo(Molecule);\n    const polymer = alpha.getCompactCopy();\n    polymer.addMolecule(getUnit(unit, 1, options));\n    addBond(polymer, r1AtomicNo, r1AtomicNo);\n    for (let i = 0; i < count - 1; i++) {\n        polymer.addMolecule(getUnit(unit, i + 2, options));\n        addBond(polymer, r2AtomicNo, r1AtomicNo);\n    }\n    polymer.addMolecule(gamma);\n    addBond(polymer, r2AtomicNo, r2AtomicNo);\n    polymer.ensureHelperArrays(Molecule.cHelperNeighbours);\n    // encoding directly in atomNapNo didn't work out because it was removed when deleting atoms\n    for (let i = 0; i < polymer.getAtoms(); i++) {\n        polymer.setAtomMapNo(i, (polymer.getAtomCustomLabel(i) || '').replace(/monomer_/, ''));\n        polymer.setAtomCustomLabel(i, '');\n    }\n    return polymer;\n}\nfunction getUnit(unit, index, options) {\n    const { markMonomer = false } = options;\n    if (markMonomer) {\n        unit = unit.getCompactCopy();\n        unit.ensureHelperArrays(unit.getOCL().Molecule.cHelperNeighbours);\n        for (let j = 0; j < unit.getAtoms(); j++) {\n            unit.setAtomCustomLabel(j, `monomer_${index}`);\n        }\n    }\n    return unit;\n}\nfunction addBond(molecule, firstAtomicNo, secondAtomicNo) {\n    molecule.ensureHelperArrays(molecule.getOCL().Molecule.cHelperNeighbours);\n    let i, j;\n    loop: for (i = 0; i < molecule.getAtoms(); i++) {\n        if (molecule.getAtomicNo(i) === firstAtomicNo) {\n            for (j = i + 1; j < molecule.getAtoms(); j++) {\n                if (molecule.getAtomicNo(j) === secondAtomicNo) {\n                    molecule.addBond(molecule.getConnAtom(i, 0), molecule.getConnAtom(j, 0), 1);\n                    break loop;\n                }\n            }\n        }\n    }\n    molecule.deleteAtoms([i, j]);\n}\nfunction checkEntity(unit, kind) {\n    let nbR1 = 1;\n    let nbR2 = 1;\n    switch (kind) {\n        case 'unit':\n            break;\n        case 'alpha':\n            nbR2 = 0;\n            break;\n        case 'gamma':\n            nbR1 = 0;\n            break;\n        default:\n            throw new Error('Unknown kind');\n    }\n    if (!unit) {\n        throw new Error('unit is required');\n    }\n    const { Molecule } = unit.getOCL();\n    // unit must contain ONE R1 and ONE R2\n    const { r1AtomicNo, r2AtomicNo } = getR1R2AtomicNo(Molecule);\n    let r1Count = 0;\n    let r2Count = 0;\n    for (let i = 0; i < unit.getAtoms(); i++) {\n        if (unit.getAtomicNo(i) === r1AtomicNo) {\n            r1Count++;\n        }\n        if (unit.getAtomicNo(i) === r2AtomicNo) {\n            r2Count++;\n        }\n    }\n    if (r1Count !== nbR1) {\n        throw new Error(`${kind} must contain ${nbR1} R1`);\n    }\n    if (r2Count !== nbR2) {\n        throw new Error(`${kind} must contain ${nbR2} R2`);\n    }\n}\nfunction getAlphaGamma(unit, options) {\n    let { alpha, gamma } = options;\n    const { Molecule } = unit.getOCL();\n    const { r1AtomicNo, r2AtomicNo } = getR1R2AtomicNo(Molecule);\n    if (!alpha) {\n        alpha = Molecule.fromSmiles('CC');\n        alpha.setAtomicNo(0, r1AtomicNo);\n        alpha.setAtomicNo(1, 1);\n    }\n    if (!gamma) {\n        gamma = Molecule.fromSmiles('CC');\n        gamma.setAtomicNo(0, r2AtomicNo);\n        gamma.setAtomicNo(1, 1);\n    }\n    return { alpha, gamma };\n}\nfunction getR1R2AtomicNo(Molecule) {\n    const r1AtomicNo = Molecule.getAtomicNoFromLabel('R1', Molecule.cPseudoAtomsRGroups);\n    const r2AtomicNo = Molecule.getAtomicNoFromLabel('R2', Molecule.cPseudoAtomsRGroups);\n    return { r1AtomicNo, r2AtomicNo };\n}\n//# sourceMappingURL=createPolymer.js.map","const MAX_R = 10;\n/**\n * Generate molecules and calculate predicted properties form a list of smiles and fragments\n * @param {string} coreSmiles\n * @param {Array} fragments - Array of {smiles,R1,R2,...}\n * @param {typeof import('openchemlib')} OCL - openchemlib library\n * @param {object} [options={}] - Options\n * @param {Function} [options.onStep] - method to execute each new molecules\n * @param {boolean} [options.complexity] - returns only the number of molecules to evaluate\n * @returns {Promise<any>} promise that resolves to molecules or complexity as a number\n */\nexport async function combineSmiles(coreSmiles, fragments, OCL, options = {}) {\n    const { complexity = false } = options;\n    const core = getCore(coreSmiles);\n    const rGroups = getRGroups(core, fragments);\n    if (complexity) {\n        return getComplexity(rGroups);\n    }\n    return generate(core, rGroups, OCL, options);\n}\nfunction getComplexity(rGroups) {\n    let complexity = 1;\n    for (const rGroup of rGroups) {\n        complexity *= rGroup.smiles.length;\n    }\n    return complexity;\n}\nasync function generate(core, rGroups, OCL, options = {}) {\n    const { onStep } = options;\n    const molecules = {};\n    const sizes = new Array(rGroups.length);\n    const currents = new Array(rGroups.length);\n    for (let i = 0; i < rGroups.length; i++) {\n        sizes[i] = rGroups[i].smiles.length - 1;\n        currents[i] = 0;\n    }\n    let position = 0;\n    let counter = 0;\n    while (true) {\n        counter++;\n        while (position < currents.length) {\n            if (currents[position] < sizes[position]) {\n                if (onStep) {\n                    // eslint-disable-next-line no-await-in-loop\n                    await onStep(counter);\n                }\n                appendMolecule(molecules, core, rGroups, currents, OCL);\n                currents[position]++;\n                for (let i = 0; i < position; i++) {\n                    currents[i] = 0;\n                }\n                position = 0;\n            }\n            else {\n                position++;\n            }\n        }\n        if ((position = currents.length)) {\n            if (onStep) {\n                // eslint-disable-next-line no-await-in-loop\n                await onStep(counter);\n            }\n            appendMolecule(molecules, core, rGroups, currents, OCL);\n            break;\n        }\n    }\n    return Object.keys(molecules)\n        .map((key) => molecules[key])\n        .sort((m1, m2) => m1.mw - m2.mw);\n}\nfunction appendMolecule(molecules, core, rGroups, currents, OCL) {\n    let newSmiles = core.smiles;\n    for (let i = 0; i < currents.length; i++) {\n        newSmiles += `.${rGroups[i].smiles[currents[i]]}`;\n    }\n    const currentMol = OCL.Molecule.fromSmiles(newSmiles);\n    const idCode = currentMol.getIDCode();\n    if (!molecules[idCode]) {\n        const molecule = {};\n        molecules[idCode] = molecule;\n        molecule.smiles = currentMol.toSmiles();\n        molecule.combinedSmiles = newSmiles;\n        molecule.idCode = idCode;\n        molecule.molfile = currentMol.toMolfile();\n        const props = new OCL.MoleculeProperties(currentMol);\n        molecule.nbHAcceptor = props.acceptorCount;\n        molecule.nbHDonor = props.donorCount;\n        molecule.logP = props.logP;\n        molecule.logS = props.logS;\n        molecule.PSA = props.polarSurfaceArea;\n        molecule.nbRottable = props.rotatableBondCount;\n        molecule.nbStereoCenter = props.stereoCenterCount;\n        const mf = currentMol.getMolecularFormula();\n        molecule.mf = mf.formula;\n        molecule.mw = mf.relativeWeight;\n    }\n}\nfunction getCore(coreSmiles) {\n    const core = {\n        originalSmiles: coreSmiles,\n        smiles: coreSmiles.replaceAll(/\\[R(?<group>[1-4])]/g, '%5$<group>'),\n    };\n    for (let i = 0; i < MAX_R; i++) {\n        if (core.originalSmiles.includes(`[R${i}]`))\n            core[`R${i}`] = true;\n    }\n    return core;\n}\nfunction getRGroups(core, fragments) {\n    const rGroups = {};\n    for (const fragment of fragments) {\n        if (fragment.smiles) {\n            const smiles = updateRPosition(fragment.smiles);\n            for (let i = 0; i < MAX_R; i++) {\n                if (core[`R${i}`] && // we only consider the R that are in the core\n                    fragment[`R${i}`]) {\n                    if (!rGroups[`R${i}`]) {\n                        rGroups[`R${i}`] = {\n                            group: `R${i}`,\n                            smiles: [],\n                        };\n                    }\n                    rGroups[`R${i}`].smiles.push(smiles.replace(/\\[R]/, `(%5${i})`));\n                }\n            }\n        }\n    }\n    return Object.keys(rGroups).map((key) => rGroups[key]);\n}\nfunction updateRPosition(smiles) {\n    // R group should not be at the beginning\n    if (smiles.indexOf('[R]') !== 0)\n        return smiles;\n    if (smiles.length === 3)\n        return '[H][R]';\n    // we are in trouble ... we need to move the R\n    const newSmiles = smiles.replace('[R]', '');\n    // we need to check where we should put the R group\n    let level = 0;\n    for (let j = 0; j < newSmiles.length; j++) {\n        const currentChar = newSmiles.charAt(j);\n        const currentSubstring = newSmiles.slice(j);\n        if (currentChar === '(') {\n            level++;\n        }\n        else if (currentChar === ')') {\n            level--;\n        }\n        else if (level === 0) {\n            if (currentSubstring.match(/^[a-z]/)) {\n                return `${newSmiles.slice(0, Math.max(0, j + 1))}([R])${newSmiles.slice(j + 1)}`;\n            }\n            else if (currentSubstring.match(/^[A-Z][a-z]/)) {\n                return `${newSmiles.slice(0, Math.max(0, j + 2))}([R])${newSmiles.slice(j + 2)}`;\n            }\n            else if (currentSubstring.match(/^[A-Z]/)) {\n                return `${newSmiles.slice(0, Math.max(0, j + 1))}([R])${newSmiles.slice(j + 1)}`;\n            }\n        }\n    }\n    return smiles;\n}\n//# sourceMappingURL=combineSmiles.js.map","/**\n * Converts a string to camel case.\n * @param {string} name\n * @returns {string}\n */\nexport function getCamelCase(name) {\n    return name.replaceAll(/[ -][a-z]/g, (string) => string[1].toUpperCase());\n}\n//# sourceMappingURL=getCamelCase.js.map","import { getCamelCase } from './getCamelCase.js';\nexport function getParts(text) {\n    const lines = text.split(/\\r?\\n/);\n    const parts = { data: [] };\n    let currentPart = parts.data;\n    let currentLabel = '';\n    for (const line of lines) {\n        if (line.startsWith('</')) {\n            // close existing part\n            if (currentLabel !== line.slice(2, -1)) {\n                throw new Error('This should not happen');\n            }\n            currentLabel = '';\n            currentPart = parts.data;\n        }\n        else if (line.startsWith('<') && !line.includes('=')) {\n            // open new part\n            if (currentLabel) {\n                throw new Error('This should not happen');\n            }\n            currentLabel = line.slice(1, -1);\n            const target = getCamelCase(currentLabel);\n            parts[target] = [];\n            currentPart = parts[target];\n        }\n        else if (currentLabel) {\n            // add line to current part\n            currentPart.push(line);\n        }\n        else {\n            //data lines\n            currentPart.push(line);\n        }\n    }\n    return parts;\n}\n//# sourceMappingURL=getParts.js.map","export function parseColumnbProperties(lines) {\n    lines = lines.map((line) => {\n        const [key, value] = line.slice(1, -1).split('=');\n        return { key, value: value.slice(1, -1) };\n    });\n    const columnProperties = {};\n    let currentColumnName = '';\n    for (const line of lines) {\n        switch (line.key) {\n            case 'columnName':\n                currentColumnName = line.value;\n                columnProperties[currentColumnName] = {};\n                break;\n            case 'columnProperty':\n                {\n                    if (!currentColumnName) {\n                        throw new Error('This should not happen');\n                    }\n                    const [key, value] = line.value.split('\\t');\n                    columnProperties[currentColumnName][key] = value;\n                }\n                break;\n            default:\n                throw new Error('This should not happen');\n        }\n    }\n    for (const key in columnProperties) {\n        const columnPropery = columnProperties[key];\n        if (columnProperties[key].parent) {\n            const target = columnProperties[columnPropery.parent];\n            if (!target) {\n                throw new Error('Parent column not found');\n            }\n            if (!target.related) {\n                target.related = {};\n            }\n            target.related[columnPropery.specialType] = key;\n        }\n    }\n    return columnProperties;\n}\n//# sourceMappingURL=parseColumnbProperties.js.map","export function parseData(lines, options = {}) {\n    lines = lines.filter((line) => !line.match(/^\\s*$/));\n    const { columnProperties = {} } = options;\n    const headers = lines\n        .shift()\n        .split('\\t')\n        .map((header) => {\n        if (columnProperties[header]) {\n            return { label: header, ...columnProperties[header] };\n        }\n        return { label: header };\n    });\n    const entries = [];\n    const rawEntries = [];\n    for (const line of lines) {\n        const fields = line.split('\\t');\n        const rawEntry = {};\n        for (const [index, header] of headers.entries()) {\n            rawEntry[header.label] = fields[index];\n        }\n        rawEntries.push(rawEntry);\n        const entry = {};\n        for (const header of headers) {\n            if (header.parent)\n                continue;\n            entry[header.label] = valueEhnhancer(header, rawEntry);\n        }\n        entries.push(entry);\n    }\n    return { entries, rawEntries };\n}\nfunction valueEhnhancer(header, rawEntry) {\n    if (header?.specialType === 'rxncode') {\n        return `${rawEntry[header.label]}#${rawEntry[header.related.atomMapping]}#${rawEntry[header.related.idcoordinates2D]}`;\n    }\n    return rawEntry[header.label];\n}\n/*\nentry.rxnCode =\n*/\n//# sourceMappingURL=parseData.js.map","import { ensureString } from 'ensure-string';\nimport { getParts } from './utils/getParts.js';\nimport { parseColumnbProperties } from './utils/parseColumnbProperties.js';\nimport { parseData } from './utils/parseData.js';\n/**\n * Convert a DataWarrior database into a JSON object\n * @param {string} text\n * @returns\n */\nexport function parseDwar(text) {\n    text = ensureString(text);\n    const parts = getParts(text);\n    improveParts(parts);\n    return parts;\n}\nfunction improveParts(parts) {\n    for (const key in parts) {\n        switch (key) {\n            case 'columnProperties':\n                parts[key] = parseColumnbProperties(parts[key]);\n                break;\n            case 'data':\n                break;\n            default:\n                parts[key] = parseDefault(parts[key]);\n        }\n    }\n    const data = parseData(parts.data, {\n        columnProperties: parts.columnProperties,\n    });\n    parts.data = data.entries;\n    parts.rawData = data.rawEntries;\n}\nfunction parseDefault(lines) {\n    const result = {};\n    for (const line of lines) {\n        const [key, value] = line.slice(1, -1).split('=');\n        result[key] = value.slice(1, -1);\n    }\n    return result;\n}\n//# sourceMappingURL=parseDwar.js.map","import { getDiastereotopicAtomIDs } from '../diastereotopic/getDiastereotopicAtomIDs.js';\n/**\n * Returns various information about atoms in the molecule\n * @param {import('openchemlib').Molecule} [molecule]\n */\nexport function getAtomsInfo(molecule) {\n    const OCL = molecule.getOCL();\n    molecule.ensureHelperArrays(OCL.Molecule.cHelperRings);\n    const diaIDs = getDiastereotopicAtomIDs(molecule);\n    const results = [];\n    for (let i = 0; i < diaIDs.length; i++) {\n        const result = {\n            oclID: diaIDs[i],\n            extra: {\n                singleBonds: 0,\n                doubleBonds: 0,\n                tripleBonds: 0,\n                aromaticBonds: 0,\n                cnoHybridation: 0, // should be 1 (sp), 2 (sp2) or 3 (sp3)\n            },\n        };\n        const extra = result.extra;\n        results.push(result);\n        result.abnormalValence = molecule.getAtomAbnormalValence(i); // -1 is normal otherwise specified\n        result.charge = molecule.getAtomCharge(i);\n        result.cipParity = molecule.getAtomCIPParity(i);\n        result.color = molecule.getAtomColor(i);\n        result.customLabel = molecule.getAtomCustomLabel(i);\n        //        result.esrGroup=molecule.getAtomESRGroup(i);\n        //        result.esrType=molecule.getAtomESRType(i);\n        result.atomicNo = molecule.getAtomicNo(i);\n        result.label = molecule.getAtomLabel(i);\n        //        result.list=molecule.getAtomList(i);\n        //        result.listString=molecule.getAtomListString(i);\n        //        result.mapNo=molecule.getAtomMapNo(i);\n        result.mass = molecule.getAtomMass(i);\n        //        result.parity=molecule.getAtomParity(i);\n        //        result.pi=molecule.getAtomPi(i);\n        //        result.preferredStereoBond=molecule.getAtomPreferredStereoBond(i);\n        //        result.queryFeatures=molecule.getAtomQueryFeatures(i);\n        result.radical = molecule.getAtomRadical(i);\n        result.ringBondCount = molecule.getAtomRingBondCount(i);\n        //        result.ringCount=molecule.getAtomRingCount(i);\n        result.ringSize = molecule.getAtomRingSize(i);\n        result.x = molecule.getAtomX(i);\n        result.y = molecule.getAtomY(i);\n        result.z = molecule.getAtomZ(i);\n        result.allHydrogens = molecule.getAllHydrogens(i);\n        result.connAtoms = molecule.getConnAtoms(i);\n        result.allConnAtoms = molecule.getAllConnAtoms(i);\n        result.implicitHydrogens =\n            result.allHydrogens + result.connAtoms - result.allConnAtoms;\n        result.isAromatic = molecule.isAromaticAtom(i);\n        result.isAllylic = molecule.isAllylicAtom(i);\n        result.isStereoCenter = molecule.isAtomStereoCenter(i);\n        result.isRing = molecule.isRingAtom(i);\n        result.isSmallRing = molecule.isSmallRingAtom(i);\n        result.isStabilized = molecule.isStabilizedAtom(i);\n        // todo HACK to circumvent bug in OCL that consider than an hydrogen is connected to itself\n        result.extra.singleBonds =\n            result.atomicNo === 1 ? 0 : result.implicitHydrogens;\n        for (let j = 0; j < molecule.getAllConnAtoms(i); j++) {\n            const bond = molecule.getConnBond(i, j);\n            const bondOrder = molecule.getBondOrder(bond);\n            if (molecule.isAromaticBond(bond)) {\n                extra.aromaticBonds++;\n            }\n            else if (bondOrder === 1) {\n                // not an hydrogen\n                extra.singleBonds++;\n            }\n            else if (bondOrder === 2) {\n                extra.doubleBonds++;\n            }\n            else if (bondOrder === 3) {\n                extra.tripleBonds++;\n            }\n        }\n        result.extra.totalBonds =\n            result.extra.singleBonds +\n                result.extra.doubleBonds +\n                result.extra.tripleBonds +\n                result.extra.aromaticBonds;\n        if (result.atomicNo === 6) {\n            result.extra.cnoHybridation = result.extra.totalBonds - 1;\n        }\n        else if (result.atomicNo === 7) {\n            result.extra.cnoHybridation = result.extra.totalBonds;\n        }\n        else if (result.atomicNo === 8) {\n            result.extra.cnoHybridation = result.extra.totalBonds + 1;\n        }\n        else if (result.atomicNo === 1) {\n            const connectedAtom = molecule.getAllConnAtoms(i) === 0\n                ? 0\n                : molecule.getAtomicNo(molecule.getConnAtom(i, 0));\n            result.extra.hydrogenOnAtomicNo = connectedAtom;\n            if (connectedAtom === 7 || connectedAtom === 8) {\n                result.extra.labileHydrogen = true;\n            }\n        }\n    }\n    return results;\n}\n//# sourceMappingURL=getAtomsInfo.js.map","export function getImplicitHydrogensCount(molecule, atomID) {\n    return molecule.getImplicitHydrogens(atomID);\n}\n//# sourceMappingURL=getImplicitHydrogensCount.js.map","import { atomSorter } from 'atom-sorter';\n/**\n * Calculate the molecular formula in 'chemcalc' notation taking into account fragments, isotopes and charges\n * @param {import('openchemlib').Molecule} molecule - an instance of OCL.Molecule\n * @returns {object}\n */\nexport function getMF(molecule) {\n    const entries = molecule.getFragments();\n    const result = {};\n    let parts = [];\n    const allAtoms = [];\n    for (const entry of entries) {\n        const mf = getFragmentMF(entry, allAtoms);\n        parts.push(mf);\n    }\n    const counts = {};\n    for (const part of parts) {\n        if (!counts[part])\n            counts[part] = 0;\n        counts[part]++;\n    }\n    parts = [];\n    for (const key of Object.keys(counts).sort()) {\n        if (counts[key] > 1) {\n            parts.push(counts[key] + key);\n        }\n        else {\n            parts.push(key);\n        }\n    }\n    result.parts = parts;\n    result.mf = toMFString(allAtoms);\n    return result;\n}\nfunction getFragmentMF(molecule, allAtoms) {\n    const atoms = [];\n    for (let i = 0; i < molecule.getAllAtoms(); i++) {\n        const atom = {};\n        atom.charge = molecule.getAtomCharge(i);\n        atom.label = molecule.getAtomLabel(i);\n        atom.mass = molecule.getAtomMass(i);\n        atom.implicitHydrogens = molecule.getImplicitHydrogens(i);\n        if (atom.label === '?')\n            atom.label = 'R';\n        atoms.push(atom);\n        allAtoms.push(atom);\n    }\n    return toMFString(atoms);\n}\nfunction toMFString(atoms) {\n    let charge = 0;\n    const mfs = {};\n    for (const atom of atoms) {\n        let label = atom.label;\n        charge += atom.charge;\n        if (atom.mass) {\n            label = `[${atom.mass}${label}]`;\n        }\n        const mfAtom = mfs[label];\n        if (!mfAtom) {\n            mfs[label] = 0;\n        }\n        mfs[label] += 1;\n        if (atom.implicitHydrogens) {\n            if (!mfs.H)\n                mfs.H = 0;\n            mfs.H += atom.implicitHydrogens;\n        }\n    }\n    let mf = '';\n    const keys = Object.keys(mfs).sort(atomSorter);\n    for (const key of keys) {\n        mf += key;\n        if (mfs[key] > 1)\n            mf += mfs[key];\n    }\n    if (charge > 0) {\n        mf += `(+${charge > 1 ? charge : ''})`;\n    }\n    else if (charge < 0) {\n        mf += `(${charge < -1 ? charge : '-'})`;\n    }\n    return mf;\n}\n//# sourceMappingURL=getMF.js.map","/**\n * Returns the charge of a molecule\n * @param {import('openchemlib').Molecule} molecule - an instance of OCL.Molecule\n * @returns {number}\n */\nexport function getCharge(molecule) {\n    let charge = 0;\n    for (let i = 0; i < molecule.getAllAtoms(); i++) {\n        charge += molecule.getAtomCharge(i);\n    }\n    return charge;\n}\n//# sourceMappingURL=getCharge.js.map","/**\n * We have 2 molfiles and we would like to map the atom number from one to the other.\n * We expect that both molfiles contain the same atoms that can be in a different order.\n * @param {typeof import('openchemlib')} OCL - openchemlib library\n * @param {string} from\n * @param {string} to\n * @returns {{fromTo: number[], toFrom: number[]}} - fromTo is an array of the same length as the number of atoms in the from molfile. Each element is the index of the corresponding atom in the to molfile. toFrom is the opposite.\n */\nexport function getMolfilesMapping(OCL, from, to) {\n    const { Molecule } = OCL;\n    const fromF = from.replaceAll(' H ', ' X ');\n    const toF = to.replaceAll(' H ', ' X ');\n    // we may ignore mapping because we should not have hydrogens anymore\n    const fromMoleculeF = Molecule.fromMolfile(fromF);\n    const toMoleculeF = Molecule.fromMolfile(toF);\n    if (fromMoleculeF.getIDCode() !== toMoleculeF.getIDCode()) {\n        // only a problem of hydrogens ?\n        const fromMolecule = Molecule.fromMolfile(from);\n        const toMolecule = Molecule.fromMolfile(to);\n        if (fromMolecule.getIDCode() === toMolecule.getIDCode()) {\n            throw new Error('Molecules do not have the same explicit hydrogens');\n        }\n        else {\n            throw new Error('Molecules are different');\n        }\n    }\n    const fromFinalRanks = [...fromMoleculeF.getFinalRanks()];\n    const toFinalRanks = [...toMoleculeF.getFinalRanks()];\n    // need now to create the mapping\n    const fromTo = [];\n    const toFrom = [];\n    for (let i = 0; i < fromFinalRanks.length; i++) {\n        const fromRank = fromFinalRanks[i];\n        const toRank = toFinalRanks.indexOf(fromRank);\n        if (toRank === -1) {\n            throw new Error('Rank not found. This should never happen.');\n        }\n        fromTo[i] = toRank;\n        toFrom[toRank] = i;\n    }\n    return { fromTo, toFrom };\n}\n//# sourceMappingURL=getMolfilesMapping.js.map","const unsaturationsObject = {\n    O: 0,\n    N: 1,\n    H: -1,\n    C: 2,\n    F: -1,\n    Si: 2,\n    Cl: -1,\n    Br: -1,\n    I: -1,\n};\n/**\n * Simplified version of the calculation in mf-parser\n * @param mf\n * @returns\n */\nexport function getUnsaturation(mf) {\n    // split a molecular formula into its elements\n    const elements = mf.match(/[A-Z][a-z]*\\d*/g);\n    if (!elements || elements.length === 0)\n        return undefined;\n    let unsaturation = 0;\n    for (const element of elements) {\n        const matches = element.match(/([A-Z][a-z]?)(\\d*)/);\n        const symbol = matches[1];\n        const count = matches[2] ? Number.parseInt(matches[2], 10) : 1;\n        const elementObject = unsaturationsObject[symbol];\n        if (elementObject === undefined) {\n            return undefined;\n        }\n        unsaturation += elementObject * count;\n    }\n    return unsaturation / 2 + 1;\n}\n//# sourceMappingURL=getUnsaturation.js.map","// this page allows to debug the hints: https://my.cheminfo.org/?viewURL=https%3A%2F%2Fmyviews.cheminfo.org%2Fdb%2Fvisualizer%2Fentry%2F108024089da99d0cb70a57724486d0c6%2Fview.json\nimport { TopicMolecule } from \"../topic/TopicMolecule.js\";\nimport { getUnsaturation } from \"./getUnsaturation.js\";\nconst defaultPossibleHints = [\n    {\n        idCode: String.raw `eF@Hp\\pcc`,\n        message: 'What about a non-aromatic ring?',\n    },\n    {\n        idCode: 'eF@HpZpk|X`',\n        message: 'You should consider an aromatic ring.',\n    },\n    {\n        idCode: 'gFp@DiTt@@B',\n        message: 'Did you think about benzene derivatives?',\n    },\n    {\n        idCode: 'eFHBLFLYpB@QVE_cD',\n        message: 'An aromatic cycle can be an heterocycle.',\n    },\n    {\n        idCode: 'eMHJN`q[N@PBGN@PBJhjU~JU@',\n        anyMatches: ['gFx@@eJf`@@P', 'gKP@Di\\\\YZ@qas`D@`'],\n        message: 'There could be more than one heteroatom in an aromatic cycle.',\n    },\n    {\n        idCode: 'gFp@DiTvjhCYbKFuXUEIVTUUWxlTeZMX',\n        anyMatches: ['gKP@Di\\\\Zj@vhbqkPjJRlhj?FbdkQ`'],\n        message: 'Aromatic cycles can have 5 or 6 atoms.',\n        remarks: 'Proposed 5 and it is 6',\n    },\n    {\n        idCode: 'gKP@Di\\\\Zj@vhbqkPjJRlhj?FbdkQ`',\n        anyMatches: ['gFp@DiTvjhCYbKFuXUEIVTUUWxlTeZMX'],\n        message: 'Aromatic cycles can have 5 or 6 atoms.',\n        remarks: 'Proposed 6 and it is 5',\n    },\n    {\n        idCode: 'gFx@@eJf`@@P',\n        message: 'Did you think about pyridine derivatives?',\n    },\n    {\n        idCode: 'gNp@LdbLjj@vdrpqSdm_qhXiKT',\n        message: 'I would consider bicyclo products.',\n        remarks: 'One atom bridge',\n    },\n    {\n        idCode: 'eFHBJD',\n        message: 'Adding a carbonyl could help.',\n    },\n    {\n        idCode: 'eMHAIhMi}EqfFBmN?vP',\n        message: 'You should consider an alcohol.',\n    },\n    {\n        idCode: 'eMB@HRZCBKSFXXJt{?Y@',\n        message: 'You should consider a thiol.',\n    },\n    {\n        idCode: 'gJQ@@eKU@[KFJtLAa`sAUR]g_zlP',\n        message: 'You should consider an ether.',\n    },\n    {\n        idCode: 'gJQ@@eKU@[KFJtLAa`r`q?EAcuX`',\n        anyMatches: ['gJQ@@eKU@[KFJtLAa`?uX`'],\n        message: 'An ether can be in a cycle.',\n    },\n    {\n        idCode: 'gJPH@DIRuPFrqbmC@XXLpUTgYw~kD',\n        message: 'You should consider a thioether.',\n    },\n    {\n        idCode: 'gJPH@DIRuPFrqbmC@XXLhL_qPX}VH',\n        anyMatches: ['gJPH@DIRuPFrqbmC@XXO}VH'],\n        message: 'A thioether can be in a cycle.',\n    },\n    {\n        idCode: 'eM`AIhLHmLYa`kSo}d',\n        message: 'You should consider a primary amine.',\n        remarks: 'primary',\n    },\n    {\n        idCode: 'gJX@@eKU@XPVVLUhXCCAUIv]?jq@',\n        message: 'You should consider a secondary amine.',\n        remarks: 'secondary',\n    },\n    {\n        idCode: 'gNx@@eRmUPFDElZxxppVFAppUv\\\\WUw~xu`',\n        message: 'You should consider a tertiary amine.',\n        remarks: 'tertiary',\n    },\n    {\n        idCode: 'gJX@@eKU@XPVVLUhXCCAeAcUIv]~JCGjq@',\n        anyMatches: ['gJX@@eKU@XPVVLUhXCCAfBjd{N?uX`'],\n        message: 'A secondary amine can be in a cycle.',\n        remarks: 'secondary cyclic amine',\n    },\n    {\n        idCode: 'gNx@@eRmUPFDElZxxppVFAppYPXuv\\\\WUwxhL^xu`',\n        anyMatches: ['gNx@@eRmUPFDElZxxppVFAppY`j{NKj{?\\\\Zp'],\n        message: 'A tertiary amine can be in a cycle.',\n        remarks: 'tertiary cyclic amine',\n    },\n    {\n        idCode: 'gGP`@df]j`MekEZFBppUa]?ju@',\n        message: 'What about an ester?',\n    },\n    {\n        idCode: 'gGP`@df]j`MekEZFBppYdZpn?FQzmP',\n        anyMatches: ['gGP`@df]j`MekEZFBppUa]?ju@'],\n        message: 'An ester can be in a cycle.',\n    },\n    {\n        idCode: 'gGY@DDf]j`MekEZFBppUa]?ju@',\n        message: 'There is an amide function in the molecule.',\n    },\n    {\n        idCode: 'gGY@DDf]j`MekEZFBppYdZpn?FQzmP',\n        anyMatches: ['gGY@DDf]j`MekEZFBppUa]?ju@@'],\n        message: 'An amide can be in a cycle.',\n    },\n    {\n        idCode: 'gCi@DDfZ@~btl',\n        message: 'There is a primary amide in the molecule.',\n    },\n    {\n        idCode: 'gC``@dfZ@~bl',\n        message: 'You should think about carboxylic acids. The OH signal may be very wide.',\n    },\n    {\n        idCode: String.raw `eF@Hh\\q@`,\n        message: 'What about having an olefin?',\n    },\n    {\n        idCode: 'gFp@DiTt@@CqC^LmV[m`',\n        anyMatches: ['gFp@DiTt@@CBqXwd@'],\n        message: 'Did you think about disubstituted aromatic rings?',\n        remarks: 'meta',\n    },\n    {\n        idCode: 'gFp@DiTt@@CqB~LmWkM`',\n        anyMatches: ['gFp@DiTt@@CBqXwd@'],\n        message: 'Did you think about disubstituted aromatic rings?',\n        remarks: 'para',\n    },\n    {\n        idCode: 'gFp@DiTt@@CqB^JoV[m',\n        anyMatches: ['gFp@DiTt@@CBqXwd@'],\n        message: 'Did you think about disubstituted aromatic rings?',\n        remarks: 'ortho',\n    },\n    {\n        idCode: 'gFp@DiTt@@CqB^JoV[m',\n        anyMatches: ['gFp@DiTt@@CqC^LmV[m`', 'gFp@DiTt@@CqB~LmWkM`'],\n        message: 'Disubstituted aromatic ring can be ortho (1,2), meta (1,3) or para (1,4).',\n        remarks: 'ortho',\n    },\n    {\n        idCode: 'gFp@DiTt@@CqC^LmV[m`',\n        anyMatches: ['gFp@DiTt@@CqB^JoV[m', 'gFp@DiTt@@CqB~LmWkM`'],\n        message: 'Disubstituted aromatic ring can be ortho (1,2), meta (1,3) or para (1,4).',\n        remarks: 'meta',\n    },\n    {\n        idCode: 'gFp@DiTt@@CqB~LmWkM`',\n        anyMatches: ['gFp@DiTt@@CqC^LmV[m`', 'gFp@DiTt@@CqB^JoV[m'],\n        message: 'Disubstituted aromatic ring can be ortho (1,2), meta (1,3) or para (1,4).',\n        remarks: 'para',\n    },\n    {\n        idCode: 'gGP`@df]j`H',\n        anyMatches: ['gGP`@dfUj`H'],\n        message: 'You should check the orientation of the ester.',\n    },\n    {\n        idCode: String.raw `gOq@@drm\\@@Aa@`,\n        message: 'Alcohols on aromatic ring may have surprising chemical shifts.',\n    },\n    {\n        idCode: String.raw `gOx@@drm\\@@A}A@`,\n        message: 'NH on aromatic ring may have surprising chemical shifts.',\n    },\n    {\n        idCode: 'eFHBJGuP',\n        message: 'Hydrogens on a carbonyl have very high chemical shifts.',\n    },\n];\n/**\n *\n * @param correct\n * @param proposed\n * @param options\n * @returns\n */\nexport function getNMRHints(correct, proposed, options = {}) {\n    const hints = [\n        ...checkMF(correct, proposed),\n        ...checkUnsaturation(correct, proposed),\n        ...checkStereoAndTautomer(correct, proposed),\n    ];\n    const { possibleHints = defaultPossibleHints } = options;\n    const OCL = correct.getOCL();\n    const searcherCorrect = new OCL.SSSearcher();\n    searcherCorrect.setMolecule(correct);\n    const searcherAnswer = new OCL.SSSearcher();\n    searcherAnswer.setMolecule(proposed);\n    for (const possibleHint of possibleHints) {\n        const { anyMatches } = possibleHint;\n        if (anyMatches) {\n            // we filter the molecules so they match at least one of the anyMatches\n            let match = false;\n            for (const anyMatch of anyMatches) {\n                const matchFragment = OCL.Molecule.fromIDCode(anyMatch);\n                searcherAnswer.setFragment(matchFragment);\n                if (searcherAnswer.isFragmentInMolecule()) {\n                    match = true;\n                    break;\n                }\n            }\n            if (!match)\n                continue;\n        }\n        const fragment = OCL.Molecule.fromIDCode(possibleHint.idCode);\n        searcherCorrect.setFragment(fragment);\n        searcherAnswer.setFragment(fragment);\n        if (searcherCorrect.isFragmentInMolecule() &&\n            !searcherAnswer.isFragmentInMolecule()) {\n            hints.push(possibleHint);\n        }\n    }\n    // we suggest symmetry only if MF is correct\n    if (isMFCorrect(correct, proposed)) {\n        hints.push(...checkSymmetry(correct, proposed));\n    }\n    return hints.map((hint) => ({\n        ...hint,\n        hash: getHash(JSON.stringify(hint)),\n    }));\n}\nfunction isMFCorrect(correct, answer) {\n    const mfCorrect = correct.getMolecularFormula().formula;\n    const mfAnswer = answer.getMolecularFormula().formula;\n    return mfCorrect === mfAnswer;\n}\nfunction checkMF(correct, answer) {\n    if (isMFCorrect(correct, answer))\n        return [];\n    return [\n        {\n            message: 'You should check the molecular formula.',\n        },\n    ];\n}\nfunction checkUnsaturation(correct, answer) {\n    const mfCorrect = correct.getMolecularFormula().formula;\n    const mfAnswer = answer.getMolecularFormula().formula;\n    if (mfCorrect !== mfAnswer) {\n        const unsaturationCorrect = getUnsaturation(mfCorrect);\n        const unsaturationAnswer = getUnsaturation(mfAnswer);\n        if (unsaturationCorrect === unsaturationAnswer ||\n            unsaturationAnswer === undefined ||\n            unsaturationCorrect === undefined) {\n            return [];\n        }\n        if (unsaturationCorrect > unsaturationAnswer) {\n            return [\n                {\n                    message: 'The proposed molecule has a double bond equivalent (DBE) that is too low.',\n                },\n            ];\n        }\n        else {\n            return [\n                {\n                    message: 'The proposed molecule has a double bond equivalent (DBE) that is too high.',\n                },\n            ];\n        }\n    }\n    return [];\n}\nfunction checkStereoAndTautomer(correct, answer) {\n    if (correct.getIDCode() === answer.getIDCode())\n        return [];\n    if (getNoStereoIDCode(correct) === getNoStereoIDCode(answer)) {\n        return [\n            {\n                message: 'There is only a problem with stereochemistry.',\n            },\n        ];\n    }\n    if (getTautomerIDCode(correct) === getTautomerIDCode(answer)) {\n        return [\n            {\n                message: \"Weird, you didn't draw the expected tautomer.\",\n            },\n        ];\n    }\n    return [];\n}\nfunction checkSymmetry(correct, answer) {\n    const nbCorrectRanks = Object.keys(new TopicMolecule(correct).getDiaIDsObject()).length;\n    const nbAnswerRanks = Object.keys(new TopicMolecule(answer).getDiaIDsObject()).length;\n    if (nbCorrectRanks === nbAnswerRanks)\n        return [];\n    if (nbCorrectRanks > nbAnswerRanks) {\n        return [\n            {\n                message: 'The proposed molecule is too symmetric.',\n            },\n        ];\n    }\n    else {\n        return [\n            {\n                message: 'The proposed molecule is not symmetric enough.',\n            },\n        ];\n    }\n}\nfunction getTautomerIDCode(molecule) {\n    const OCL = molecule.getOCL();\n    return OCL.CanonizerUtil.getIDCode(molecule, OCL.CanonizerUtil.TAUTOMER);\n}\nfunction getNoStereoIDCode(molecule) {\n    const OCL = molecule.getOCL();\n    return OCL.CanonizerUtil.getIDCode(molecule, OCL.CanonizerUtil.NOSTEREO);\n}\n/*\n    https://github.com/bryc/code/blob/master/jshash/experimental/cyrb53.js\n    cyrb53a (c) 2023 bryc (github.com/bryc)\n    License: Public domain. Attribution appreciated.\n    The original cyrb53 has a slight mixing bias in the low bits of h1.\n    This shouldn't be a huge problem, but I want to try to improve it.\n    This new version should have improved avalanche behavior, but\n    it is not quite final, I may still find improvements.\n    So don't expect it to always produce the same output.\n*/\nfunction getHash(str, seed = 0) {\n    let h1 = 0xdeadbeef ^ seed;\n    let h2 = 0x41c6ce57 ^ seed;\n    for (let i = 0, ch; i < str.length; i++) {\n        ch = str.codePointAt(i);\n        h1 = Math.imul(h1 ^ ch, 0x85ebca77);\n        h2 = Math.imul(h2 ^ ch, 0xc2b2ae3d);\n    }\n    h1 ^= Math.imul(h1 ^ (h2 >>> 15), 0x735a2d97);\n    h2 ^= Math.imul(h2 ^ (h1 >>> 15), 0xcaf649a9);\n    h1 ^= h2 >>> 16;\n    h2 ^= h1 >>> 16;\n    return 2097152 * (h2 >>> 0) + (h1 >>> 11);\n}\n//# sourceMappingURL=getNMRHints.js.map","import { getNMRHints } from \"./getNMRHints.js\";\n/**\n *\n * @param correct\n * @param proposed\n * @param providedHints\n */\nexport function getNextNMRHint(correct, proposed, providedHints) {\n    const hints = getNMRHints(correct, proposed);\n    const possibleHints = hints.filter((possibleHint) => !providedHints.some((providedHint) => possibleHint.hash === providedHint.hash));\n    if (possibleHints.length === 0)\n        return undefined;\n    return {\n        ...possibleHints[0],\n        idCode: proposed.getIDCode(),\n    };\n}\n//# sourceMappingURL=getNextNMRHint.js.map","let toxicityPredictor;\nlet druglikenessPredictor;\n/**\n *\n * @param {import('openchemlib').Molecule} molecule\n * @param {object} [options={}]\n * @param {boolean} [options.includeToxicities=false]\n * @param {boolean} [options.includeDruglikeness=false]\n */\nexport function getProperties(molecule, options = {}) {\n    const { includeToxicities = false, includeDruglikeness = false } = options;\n    const OCL = molecule.getOCL();\n    if (!OCL.MoleculeProperties) {\n        throw new Error('OCL.MoleculeProperties is not defined');\n    }\n    const props = new OCL.MoleculeProperties(molecule);\n    const moleculeFormula = molecule.getMolecularFormula();\n    const result = {\n        acceptorCount: props.acceptorCount,\n        donorCount: props.donorCount,\n        logP: props.logP,\n        logS: props.logS,\n        polarSurfaceArea: props.polarSurfaceArea,\n        rotatableBondCount: props.rotatableBondCount,\n        stereoCenterCount: props.stereoCenterCount,\n        mw: moleculeFormula.relativeWeight,\n        mf: moleculeFormula.formula,\n    };\n    if (includeToxicities) {\n        const { ToxicityPredictor } = molecule.getOCL();\n        if (!ToxicityPredictor) {\n            throw new Error('OCL.ToxicityPredictor is not defined');\n        }\n        if (!toxicityPredictor) {\n            toxicityPredictor = new ToxicityPredictor();\n        }\n        result.mutagenic = toxicityPredictor.assessRisk(molecule, ToxicityPredictor.TYPE_MUTAGENIC);\n        result.tumorigenic = toxicityPredictor.assessRisk(molecule, ToxicityPredictor.TYPE_TUMORIGENIC);\n        result.irritant = toxicityPredictor.assessRisk(molecule, ToxicityPredictor.TYPE_IRRITANT);\n        result.reproductiveEffective = toxicityPredictor.assessRisk(molecule, ToxicityPredictor.TYPE_REPRODUCTIVE_EFFECTIVE);\n    }\n    if (includeDruglikeness) {\n        const { DruglikenessPredictor } = molecule.getOCL();\n        if (!DruglikenessPredictor) {\n            throw new Error('OCL.DruglikenessPredictor is not defined');\n        }\n        if (!druglikenessPredictor) {\n            druglikenessPredictor = new DruglikenessPredictor();\n        }\n        result.drugLikeness = druglikenessPredictor.assessDruglikeness(molecule);\n    }\n    if (result.drugLikeness !== undefined && result.mutagenic !== undefined) {\n        result.drugScore = OCL.DrugScoreCalculator.calculate(result.logP, result.polarSurfaceArea, result.mw, result.drugLikeness, [\n            result.mutagenic,\n            result.tumurogenic,\n            result.irritant,\n            result.reproductiveEffective,\n        ]);\n    }\n    return result;\n}\n//# sourceMappingURL=getProperties.js.map","/**\n * Calculate the molecular formula in 'chemcalc' notation taking into account fragments, isotopes and charges\n * @param {OCL.Molecule} [molecule] - an instance of OCL.Molecule\n * @returns {}\n */\nexport function getAtoms(molecule) {\n    const entries = molecule.getFragments();\n    const atoms = {};\n    const result = { atoms, parts: [] };\n    for (const entry of entries) {\n        const part = {};\n        result.parts.push(part);\n        appendAtomPart(entry, atoms, part);\n    }\n    return result;\n}\nfunction appendAtomPart(molecule, atoms, part) {\n    for (let i = 0; i < molecule.getAllAtoms(); i++) {\n        const label = molecule.getAtomLabel(i);\n        if (!atoms[label]) {\n            atoms[label] = 0;\n        }\n        atoms[label] += 1;\n        if (!part[label]) {\n            part[label] = 0;\n        }\n        part[label] += 1;\n        const implicitHydrogens = molecule.getImplicitHydrogens(i);\n        if (implicitHydrogens) {\n            if (!atoms.H) {\n                atoms.H = 0;\n            }\n            atoms.H += implicitHydrogens;\n            if (!part.H) {\n                part.H = 0;\n            }\n            part.H += implicitHydrogens;\n        }\n    }\n}\n//# sourceMappingURL=getAtoms.js.map","/**\n * Return the number of Hydroxyl groups in a molecule or fragment\n * @param {import('openchemlib').Molecule} molecule\n * @returns {number} 'Number of Hydroxyl groups'\n */\nexport function nbOH(molecule) {\n    let counter = 0;\n    for (let i = 0; i < molecule.getAllAtoms(); i++) {\n        if (molecule.getAtomicNo(i) === 6) {\n            let carbonyl = false;\n            let hydroxyl = false;\n            let carbonOrHydrogen = true;\n            for (let neighbour = 0; neighbour < molecule.getConnAtoms(i); neighbour++) {\n                const neighbourAtom = molecule.getConnAtom(i, neighbour);\n                const neighbourBond = molecule.getConnBond(i, neighbour);\n                if (molecule.getAtomicNo(neighbourAtom) === 8) {\n                    if (molecule.getBondOrder(neighbourBond) === 1 &&\n                        molecule.getAllHydrogens(neighbourAtom) > 0) {\n                        // If there is more than a Hydroxyl in the same carbon atome they are not couted as Hydroxyl groups\n                        if (hydroxyl) {\n                            hydroxyl = false;\n                            break;\n                        }\n                        hydroxyl = true;\n                    }\n                    else if (molecule.getBondOrder(neighbourBond) === 2) {\n                        // If there is Carbonyl group on the same carbon atom it is not couted as Hydroxyl group\n                        carbonyl = true;\n                    }\n                }\n                else if (\n                // If there is not at least one carbon or hydrogen as neighbour atom it is not counted as Hydroxyl group\n                molecule.getAtomicNo(neighbourAtom) !== 6 &&\n                    molecule.getAtomicNo(neighbourAtom) !== 1) {\n                    carbonOrHydrogen = false;\n                }\n            }\n            if (!carbonyl && hydroxyl && carbonOrHydrogen)\n                counter++;\n        }\n    }\n    return counter;\n}\n//# sourceMappingURL=nbOH.js.map","/**\n * Return the number of Carboxyl groups in a molecule or fragment\n * @param {import('openchemlib').Molecule} molecule\n * @returns {number} 'Number of Carboxyl groups'\n */\nexport function nbCOOH(molecule) {\n    let counter = 0;\n    for (let i = 0; i < molecule.getAllAtoms(); i++) {\n        if (molecule.getAtomicNo(i) === 6) {\n            let carbonyl = false;\n            let hydroxyl = false;\n            let carbonOrHydrogen = true;\n            for (let neighbour = 0; neighbour < molecule.getConnAtoms(i); neighbour++) {\n                const neighbourAtom = molecule.getConnAtom(i, neighbour);\n                const neighbourBond = molecule.getConnBond(i, neighbour);\n                if (molecule.getAtomicNo(neighbourAtom) === 8) {\n                    if (molecule.getBondOrder(neighbourBond) === 1 &&\n                        molecule.getAllHydrogens(neighbourAtom) > 0) {\n                        // If there is more than a Hydroxyl in the same carbon atom it is not couted as Carboxyl group\n                        if (hydroxyl) {\n                            hydroxyl = false;\n                            break;\n                        }\n                        hydroxyl = true;\n                    }\n                    else if (molecule.getBondOrder(neighbourBond) === 2) {\n                        // If there is more than one carbonyl in the same carbon atom it is not count as Carboxyl group\n                        if (carbonyl) {\n                            carbonyl = false;\n                            break;\n                        }\n                        carbonyl = true;\n                    }\n                }\n                else if (\n                // If there is not at least one carbon or hydrogen as neighbour atom it is not counted as Carboxyl group\n                molecule.getAtomicNo(neighbourAtom) !== 6 &&\n                    molecule.getAtomicNo(neighbourAtom) !== 1) {\n                    carbonOrHydrogen = false;\n                }\n            }\n            if (carbonyl && hydroxyl && carbonOrHydrogen)\n                counter++;\n        }\n    }\n    return counter;\n}\n//# sourceMappingURL=nbCOOH.js.map","/**\n * Return the number of Carbonyl groups in a molecule or fragment\n * @param {import('openchemlib').Molecule} molecule\n * @returns {number} 'Number of Carbonyl groups'\n */\nexport function nbCHO(molecule) {\n    let counter = 0;\n    for (let i = 0; i < molecule.getAllAtoms(); i++) {\n        // if there is not at least one hydrogen in the carbon atom there can not be a carbonyl group\n        if (molecule.getAtomicNo(i) === 6 && molecule.getAllHydrogens(i) > 0) {\n            let carbonyl = false;\n            let carbonOrHydrogen = true;\n            for (let neighbour = 0; neighbour < molecule.getConnAtoms(i); neighbour++) {\n                const neighbourAtom = molecule.getConnAtom(i, neighbour);\n                const neighbourBond = molecule.getConnBond(i, neighbour);\n                if (molecule.getAtomicNo(neighbourAtom) === 8) {\n                    if (molecule.getBondOrder(neighbourBond) === 2) {\n                        // If there is more than one carbonyl group on the same carbon atom they are not counted as carbonyl groups\n                        if (carbonyl) {\n                            carbonyl = false;\n                            break;\n                        }\n                        carbonyl = true;\n                    }\n                }\n                else if (\n                // If there is not at least one carbon or hydrogen as neighbour atom it is not counted as Carbonyl group\n                molecule.getAtomicNo(neighbourAtom) !== 6 &&\n                    molecule.getAtomicNo(neighbourAtom) !== 1) {\n                    carbonOrHydrogen = false;\n                }\n            }\n            if (carbonyl && carbonOrHydrogen)\n                counter++;\n        }\n    }\n    return counter;\n}\n//# sourceMappingURL=nbCHO.js.map","/**\n * Return the number of Primary amine groups in a molecule or fragment\n * @param {import('openchemlib').Molecule} molecule\n * @returns {number} 'Number of Primary amine groups'\n */\nexport function nbNH2(molecule) {\n    let counter = 0;\n    for (let i = 0; i < molecule.getAllAtoms(); i++) {\n        if (molecule.getAtomicNo(i) === 6) {\n            let amine = false;\n            let carbonOrHydrogen = true;\n            for (let neighbour = 0; neighbour < molecule.getConnAtoms(i); neighbour++) {\n                const neighbourAtom = molecule.getConnAtom(i, neighbour);\n                const neighbourBond = molecule.getConnBond(i, neighbour);\n                if (molecule.getAtomicNo(neighbourAtom) === 7 &&\n                    molecule.getBondOrder(neighbourBond) === 1 &&\n                    molecule.getAllHydrogens(neighbourAtom) > 1) {\n                    // If there is more than a Primary amine in the same carbon atom they are not couted as Primary amines groups\n                    if (amine) {\n                        amine = false;\n                        break;\n                    }\n                    amine = true;\n                }\n                else if (\n                // If there is not at least one carbon or hydrogen as neighbour atom it is not counted as Primary amine group\n                molecule.getAtomicNo(neighbourAtom) !== 6 &&\n                    molecule.getAtomicNo(neighbourAtom) !== 1) {\n                    carbonOrHydrogen = false;\n                }\n            }\n            if (amine && carbonOrHydrogen)\n                counter++;\n        }\n    }\n    return counter;\n}\n//# sourceMappingURL=nbNH2.js.map","/**\n * Return the number of Nitrile groups in a molecule or fragment\n * @param {import('openchemlib').Molecule} molecule\n * @returns {number} 'Number of Nitrile groups'\n */\nexport function nbCN(molecule) {\n    let counter = 0;\n    for (let i = 0; i < molecule.getAllAtoms(); i++) {\n        if (molecule.getAtomicNo(i) === 6) {\n            let cn = false;\n            let carbonOrHydrogen = true;\n            for (let neighbour = 0; neighbour < molecule.getConnAtoms(i); neighbour++) {\n                const neighbourAtom = molecule.getConnAtom(i, neighbour);\n                const neighbourBond = molecule.getConnBond(i, neighbour);\n                if (molecule.getAtomicNo(neighbourAtom) === 7 &&\n                    molecule.getBondOrder(neighbourBond) === 3) {\n                    // If there is more than one Nitrile group in the same carbon atome they are not counted as Nitrile groups\n                    if (cn) {\n                        cn = false;\n                        break;\n                    }\n                    cn = true;\n                }\n                else if (\n                // If there is not at least one carbon or hydrogen as neighbour atom it is not counted as Nitrile group\n                molecule.getAtomicNo(neighbourAtom) !== 6 &&\n                    molecule.getAtomicNo(neighbourAtom) !== 1) {\n                    carbonOrHydrogen = false;\n                }\n            }\n            if (cn && carbonOrHydrogen)\n                counter++;\n        }\n    }\n    return counter;\n}\n//# sourceMappingURL=nbCN.js.map","/**\n * Return the number of labile protons being either on O, N, Br, Cl, F, I or S\n * @param {import('openchemlib').Molecule} molecule\n * @param {object} [options={}]\n * @param {Array<number>} [options.atomicNumbers=[7, 8, 9, 16, 17, 35, 53]] - atomic numbers of the labile protons\n * @returns {number} 'Number of labile protons'\n */\nexport function nbLabileH(molecule, options = {}) {\n    const { atomicNumbers = [7, 8, 9, 16, 17, 35, 53] } = options;\n    let counter = 0;\n    for (let i = 0; i < molecule.getAllAtoms(); i++) {\n        if (atomicNumbers.includes(molecule.getAtomicNo(i))) {\n            counter += molecule.getAllHydrogens(i);\n        }\n    }\n    return counter;\n}\n//# sourceMappingURL=nbLabileH.js.map","/**\n * Toggle presence of implicity hydrogens on/off\n * @param molecule\n * @param atomID\n */\nexport function toggleHydrogens(molecule, atomID) {\n    if (molecule.getImplicitHydrogens(atomID) === 0) {\n        const atomsToDelete = [];\n        for (let i = 0; i < molecule.getAllConnAtoms(atomID); i++) {\n            const connectedAtom = molecule.getConnAtom(atomID, i);\n            if (molecule.getAtomicNo(connectedAtom) === 1) {\n                atomsToDelete.push(connectedAtom);\n            }\n        }\n        molecule.deleteAtoms(atomsToDelete);\n    }\n    else {\n        molecule.addImplicitHydrogens(atomID);\n    }\n}\n//# sourceMappingURL=toggleHydrogens.js.map","import { getDiastereotopicAtomIDsAndH } from '../diastereotopic/getDiastereotopicAtomIDsAndH.js';\nimport { getGroupedDiastereotopicAtomIDs } from '../diastereotopic/getGroupedDiastereotopicAtomIDs.js';\nexport function toVisualizerMolfile(molecule, options = {}) {\n    const { diastereotopic, heavyAtomHydrogen } = options;\n    let highlight = [];\n    let atoms = {};\n    if (diastereotopic) {\n        const hydrogenInfo = {};\n        const extendedIDs = getDiastereotopicAtomIDsAndH(molecule);\n        for (const line of extendedIDs) {\n            hydrogenInfo[line.oclID] = line;\n        }\n        const diaIDs = getGroupedDiastereotopicAtomIDs(molecule);\n        for (const diaID of diaIDs) {\n            atoms[diaID.oclID] = diaID.atoms;\n            highlight.push(diaID.oclID);\n            if (heavyAtomHydrogen &&\n                hydrogenInfo[diaID.oclID] &&\n                hydrogenInfo[diaID.oclID].nbHydrogens > 0) {\n                for (const id of hydrogenInfo[diaID.oclID].hydrogenOCLIDs) {\n                    highlight.push(id);\n                    atoms[id] = diaID.atoms;\n                }\n            }\n        }\n    }\n    else {\n        const size = molecule.getAllAtoms();\n        highlight = new Array(size).fill(0).map((a, index) => index);\n        atoms = highlight.map((a) => [a]);\n    }\n    const molfile = {\n        type: 'mol2d',\n        value: molecule.toMolfile(),\n        _highlight: highlight,\n        _atoms: atoms,\n    };\n    return molfile;\n}\n//# sourceMappingURL=toVisualizerMolfile.js.map","/**\n * Calculates the path between 2 atoms\n * @param {import('openchemlib').Molecule} molecule\n * @param {number} from - index of the first atom\n * @param {number} to - index of the end atom\n * @param {number} maxLength - maximal length of the path\n */\nexport function getPathAndTorsion(molecule, from, to, maxLength) {\n    const originalAtoms = []; // path before renumbering\n    molecule.getPath(originalAtoms, from, to, maxLength + 1);\n    let torsion;\n    if (originalAtoms.length === 4) {\n        torsion = molecule.calculateTorsion(originalAtoms);\n    }\n    return {\n        atoms: originalAtoms,\n        from,\n        to,\n        torsion,\n        length: originalAtoms.length - 1,\n    };\n}\n//# sourceMappingURL=getPathAndTorsion.js.map","import { getHoseCodesForPath } from '../hose/getHoseCodesForPath.js';\nimport { getAtomsInfo } from '../util/getAtomsInfo.js';\nimport { getConnectivityMatrix } from '../util/getConnectivityMatrix.js';\nimport { getPathAndTorsion } from './getPathAndTorsion.js';\nlet fragment;\n/**\n *\n * @param {import('openchemlib').Molecule} molecule\n * @param {object} [options={}]\n * @param {string} [options.fromLabel='H']\n * @param {string} [options.toLabel='H']\n * @param {number} [options.minLength=1]\n * @param {number} [options.maxLength=4]\n * @param {boolean} [options.withHOSES=false]\n */\nexport function getPathsInfo(molecule, options = {}) {\n    const { fromLabel = 'H', toLabel = 'H', minLength = 1, maxLength = 4, withHOSES = false, } = options;\n    const OCL = molecule.getOCL();\n    if (!fragment) {\n        fragment = new OCL.Molecule(0, 0);\n    }\n    const fromAtomicNumber = OCL.Molecule.getAtomicNoFromLabel(fromLabel);\n    const toAtomicNumber = OCL.Molecule.getAtomicNoFromLabel(toLabel);\n    // we need to find all the atoms 'fromLabel' and 'toLabel'\n    const atomsInfo = getAtomsInfo(molecule);\n    const pathLengthMatrix = getConnectivityMatrix(molecule, {\n        pathLength: true,\n    });\n    for (let from = 0; from < molecule.getAllAtoms(); from++) {\n        atomsInfo[from].paths = [];\n        for (let to = 0; to < molecule.getAllAtoms(); to++) {\n            if (from !== to &&\n                molecule.getAtomicNo(from) === fromAtomicNumber &&\n                molecule.getAtomicNo(to) === toAtomicNumber) {\n                const pathLength = pathLengthMatrix[from][to];\n                if (pathLength >= minLength && pathLength <= maxLength) {\n                    if (withHOSES) {\n                        atomsInfo[from].paths.push(getHoseCodesForPath(molecule, from, to, pathLength));\n                    }\n                    else {\n                        atomsInfo[from].paths.push(getPathAndTorsion(molecule, from, to, pathLength));\n                    }\n                }\n            }\n        }\n    }\n    return atomsInfo;\n}\n//# sourceMappingURL=getPathsInfo.js.map","/**\n * Get the shortest path between each pair of atoms in the molecule\n * @param {import('openchemlib').Molecule} molecule\n * @param {object} [options={}]\n * @param {string} [opions.fromLabel='H']\n * @param {string} [opions.toLabel='H']\n * @param {string} [opions.maxLength=4]\n * @returns {Array<Array>} A matrix containing on each cell (i,j) the shortest path from atom i to atom j\n */\nexport function getShortestPaths(molecule, options = {}) {\n    const OCL = molecule.getOCL();\n    const { fromLabel = '', toLabel = '', maxLength = 3 } = options;\n    const fromAtomicNumber = OCL.Molecule.getAtomicNoFromLabel(fromLabel);\n    const toAtomicNumber = OCL.Molecule.getAtomicNoFromLabel(toLabel);\n    const nbAtoms = molecule.getAllAtoms();\n    const allShortestPaths = new Array(nbAtoms);\n    for (let i = 0; i < nbAtoms; i++) {\n        allShortestPaths[i] = new Array(nbAtoms);\n    }\n    for (let from = 0; from < nbAtoms; from++) {\n        allShortestPaths[from][from] = [from];\n        for (let to = from + 1; to < nbAtoms; to++) {\n            if ((fromAtomicNumber === 0 ||\n                molecule.getAtomicNo(from) === fromAtomicNumber) &&\n                (toAtomicNumber === 0 || molecule.getAtomicNo(to) === toAtomicNumber)) {\n                const path = [];\n                molecule.getPath(path, from, to, maxLength);\n                if (path.length > 0) {\n                    allShortestPaths[from][to] = path.slice();\n                    allShortestPaths[to][from] = path.reverse();\n                }\n                else {\n                    allShortestPaths[from][to] = null;\n                    allShortestPaths[to][from] = null;\n                }\n            }\n            else {\n                allShortestPaths[from][to] = null;\n                allShortestPaths[to][from] = null;\n            }\n        }\n    }\n    return allShortestPaths;\n}\n//# sourceMappingURL=getShortestPaths.js.map","/* @license\nPapa Parse\nv5.5.3\nhttps://github.com/mholt/PapaParse\nLicense: MIT\n*/\n((e,t)=>{\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof module&&\"undefined\"!=typeof exports?module.exports=t():e.Papa=t()})(this,function r(){var n=\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:void 0!==n?n:{};var d,s=!n.document&&!!n.postMessage,a=n.IS_PAPA_WORKER||!1,o={},h=0,v={};function u(e){this._handle=null,this._finished=!1,this._completed=!1,this._halted=!1,this._input=null,this._baseIndex=0,this._partialLine=\"\",this._rowCount=0,this._start=0,this._nextChunk=null,this.isFirstChunk=!0,this._completeResults={data:[],errors:[],meta:{}},function(e){var t=b(e);t.chunkSize=parseInt(t.chunkSize),e.step||e.chunk||(t.chunkSize=null);this._handle=new i(t),(this._handle.streamer=this)._config=t}.call(this,e),this.parseChunk=function(t,e){var i=parseInt(this._config.skipFirstNLines)||0;if(this.isFirstChunk&&0<i){let e=this._config.newline;e||(r=this._config.quoteChar||'\"',e=this._handle.guessLineEndings(t,r)),t=[...t.split(e).slice(i)].join(e)}this.isFirstChunk&&U(this._config.beforeFirstChunk)&&void 0!==(r=this._config.beforeFirstChunk(t))&&(t=r),this.isFirstChunk=!1,this._halted=!1;var i=this._partialLine+t,r=(this._partialLine=\"\",this._handle.parse(i,this._baseIndex,!this._finished));if(!this._handle.paused()&&!this._handle.aborted()){t=r.meta.cursor,i=(this._finished||(this._partialLine=i.substring(t-this._baseIndex),this._baseIndex=t),r&&r.data&&(this._rowCount+=r.data.length),this._finished||this._config.preview&&this._rowCount>=this._config.preview);if(a)n.postMessage({results:r,workerId:v.WORKER_ID,finished:i});else if(U(this._config.chunk)&&!e){if(this._config.chunk(r,this._handle),this._handle.paused()||this._handle.aborted())return void(this._halted=!0);this._completeResults=r=void 0}return this._config.step||this._config.chunk||(this._completeResults.data=this._completeResults.data.concat(r.data),this._completeResults.errors=this._completeResults.errors.concat(r.errors),this._completeResults.meta=r.meta),this._completed||!i||!U(this._config.complete)||r&&r.meta.aborted||(this._config.complete(this._completeResults,this._input),this._completed=!0),i||r&&r.meta.paused||this._nextChunk(),r}this._halted=!0},this._sendError=function(e){U(this._config.error)?this._config.error(e):a&&this._config.error&&n.postMessage({workerId:v.WORKER_ID,error:e,finished:!1})}}function f(e){var r;(e=e||{}).chunkSize||(e.chunkSize=v.RemoteChunkSize),u.call(this,e),this._nextChunk=s?function(){this._readChunk(),this._chunkLoaded()}:function(){this._readChunk()},this.stream=function(e){this._input=e,this._nextChunk()},this._readChunk=function(){if(this._finished)this._chunkLoaded();else{if(r=new XMLHttpRequest,this._config.withCredentials&&(r.withCredentials=this._config.withCredentials),s||(r.onload=y(this._chunkLoaded,this),r.onerror=y(this._chunkError,this)),r.open(this._config.downloadRequestBody?\"POST\":\"GET\",this._input,!s),this._config.downloadRequestHeaders){var e,t=this._config.downloadRequestHeaders;for(e in t)r.setRequestHeader(e,t[e])}var i;this._config.chunkSize&&(i=this._start+this._config.chunkSize-1,r.setRequestHeader(\"Range\",\"bytes=\"+this._start+\"-\"+i));try{r.send(this._config.downloadRequestBody)}catch(e){this._chunkError(e.message)}s&&0===r.status&&this._chunkError()}},this._chunkLoaded=function(){4===r.readyState&&(r.status<200||400<=r.status?this._chunkError():(this._start+=this._config.chunkSize||r.responseText.length,this._finished=!this._config.chunkSize||this._start>=(e=>null!==(e=e.getResponseHeader(\"Content-Range\"))?parseInt(e.substring(e.lastIndexOf(\"/\")+1)):-1)(r),this.parseChunk(r.responseText)))},this._chunkError=function(e){e=r.statusText||e;this._sendError(new Error(e))}}function l(e){(e=e||{}).chunkSize||(e.chunkSize=v.LocalChunkSize),u.call(this,e);var i,r,n=\"undefined\"!=typeof FileReader;this.stream=function(e){this._input=e,r=e.slice||e.webkitSlice||e.mozSlice,n?((i=new FileReader).onload=y(this._chunkLoaded,this),i.onerror=y(this._chunkError,this)):i=new FileReaderSync,this._nextChunk()},this._nextChunk=function(){this._finished||this._config.preview&&!(this._rowCount<this._config.preview)||this._readChunk()},this._readChunk=function(){var e=this._input,t=(this._config.chunkSize&&(t=Math.min(this._start+this._config.chunkSize,this._input.size),e=r.call(e,this._start,t)),i.readAsText(e,this._config.encoding));n||this._chunkLoaded({target:{result:t}})},this._chunkLoaded=function(e){this._start+=this._config.chunkSize,this._finished=!this._config.chunkSize||this._start>=this._input.size,this.parseChunk(e.target.result)},this._chunkError=function(){this._sendError(i.error)}}function c(e){var i;u.call(this,e=e||{}),this.stream=function(e){return i=e,this._nextChunk()},this._nextChunk=function(){var e,t;if(!this._finished)return e=this._config.chunkSize,i=e?(t=i.substring(0,e),i.substring(e)):(t=i,\"\"),this._finished=!i,this.parseChunk(t)}}function p(e){u.call(this,e=e||{});var t=[],i=!0,r=!1;this.pause=function(){u.prototype.pause.apply(this,arguments),this._input.pause()},this.resume=function(){u.prototype.resume.apply(this,arguments),this._input.resume()},this.stream=function(e){this._input=e,this._input.on(\"data\",this._streamData),this._input.on(\"end\",this._streamEnd),this._input.on(\"error\",this._streamError)},this._checkIsFinished=function(){r&&1===t.length&&(this._finished=!0)},this._nextChunk=function(){this._checkIsFinished(),t.length?this.parseChunk(t.shift()):i=!0},this._streamData=y(function(e){try{t.push(\"string\"==typeof e?e:e.toString(this._config.encoding)),i&&(i=!1,this._checkIsFinished(),this.parseChunk(t.shift()))}catch(e){this._streamError(e)}},this),this._streamError=y(function(e){this._streamCleanUp(),this._sendError(e)},this),this._streamEnd=y(function(){this._streamCleanUp(),r=!0,this._streamData(\"\")},this),this._streamCleanUp=y(function(){this._input.removeListener(\"data\",this._streamData),this._input.removeListener(\"end\",this._streamEnd),this._input.removeListener(\"error\",this._streamError)},this)}function i(m){var n,s,a,t,o=Math.pow(2,53),h=-o,u=/^\\s*-?(\\d+\\.?|\\.\\d+|\\d+\\.\\d+)([eE][-+]?\\d+)?\\s*$/,d=/^((\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+([+-][0-2]\\d:[0-5]\\d|Z))|(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d([+-][0-2]\\d:[0-5]\\d|Z))|(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d([+-][0-2]\\d:[0-5]\\d|Z)))$/,i=this,r=0,f=0,l=!1,e=!1,c=[],p={data:[],errors:[],meta:{}};function y(e){return\"greedy\"===m.skipEmptyLines?\"\"===e.join(\"\").trim():1===e.length&&0===e[0].length}function g(){if(p&&a&&(k(\"Delimiter\",\"UndetectableDelimiter\",\"Unable to auto-detect delimiting character; defaulted to '\"+v.DefaultDelimiter+\"'\"),a=!1),m.skipEmptyLines&&(p.data=p.data.filter(function(e){return!y(e)})),_()){if(p)if(Array.isArray(p.data[0])){for(var e=0;_()&&e<p.data.length;e++)p.data[e].forEach(t);p.data.splice(0,1)}else p.data.forEach(t);function t(e,t){U(m.transformHeader)&&(e=m.transformHeader(e,t)),c.push(e)}}function i(e,t){for(var i=m.header?{}:[],r=0;r<e.length;r++){var n=r,s=e[r],s=((e,t)=>(e=>(m.dynamicTypingFunction&&void 0===m.dynamicTyping[e]&&(m.dynamicTyping[e]=m.dynamicTypingFunction(e)),!0===(m.dynamicTyping[e]||m.dynamicTyping)))(e)?\"true\"===t||\"TRUE\"===t||\"false\"!==t&&\"FALSE\"!==t&&((e=>{if(u.test(e)){e=parseFloat(e);if(h<e&&e<o)return 1}})(t)?parseFloat(t):d.test(t)?new Date(t):\"\"===t?null:t):t)(n=m.header?r>=c.length?\"__parsed_extra\":c[r]:n,s=m.transform?m.transform(s,n):s);\"__parsed_extra\"===n?(i[n]=i[n]||[],i[n].push(s)):i[n]=s}return m.header&&(r>c.length?k(\"FieldMismatch\",\"TooManyFields\",\"Too many fields: expected \"+c.length+\" fields but parsed \"+r,f+t):r<c.length&&k(\"FieldMismatch\",\"TooFewFields\",\"Too few fields: expected \"+c.length+\" fields but parsed \"+r,f+t)),i}var r;p&&(m.header||m.dynamicTyping||m.transform)&&(r=1,!p.data.length||Array.isArray(p.data[0])?(p.data=p.data.map(i),r=p.data.length):p.data=i(p.data,0),m.header&&p.meta&&(p.meta.fields=c),f+=r)}function _(){return m.header&&0===c.length}function k(e,t,i,r){e={type:e,code:t,message:i};void 0!==r&&(e.row=r),p.errors.push(e)}U(m.step)&&(t=m.step,m.step=function(e){p=e,_()?g():(g(),0!==p.data.length&&(r+=e.data.length,m.preview&&r>m.preview?s.abort():(p.data=p.data[0],t(p,i))))}),this.parse=function(e,t,i){var r=m.quoteChar||'\"',r=(m.newline||(m.newline=this.guessLineEndings(e,r)),a=!1,m.delimiter?U(m.delimiter)&&(m.delimiter=m.delimiter(e),p.meta.delimiter=m.delimiter):((r=((e,t,i,r,n)=>{var s,a,o,h;n=n||[\",\",\"\\t\",\"|\",\";\",v.RECORD_SEP,v.UNIT_SEP];for(var u=0;u<n.length;u++){for(var d,f=n[u],l=0,c=0,p=0,g=(o=void 0,new E({comments:r,delimiter:f,newline:t,preview:10}).parse(e)),_=0;_<g.data.length;_++)i&&y(g.data[_])?p++:(d=g.data[_].length,c+=d,void 0===o?o=d:0<d&&(l+=Math.abs(d-o),o=d));0<g.data.length&&(c/=g.data.length-p),(void 0===a||l<=a)&&(void 0===h||h<c)&&1.99<c&&(a=l,s=f,h=c)}return{successful:!!(m.delimiter=s),bestDelimiter:s}})(e,m.newline,m.skipEmptyLines,m.comments,m.delimitersToGuess)).successful?m.delimiter=r.bestDelimiter:(a=!0,m.delimiter=v.DefaultDelimiter),p.meta.delimiter=m.delimiter),b(m));return m.preview&&m.header&&r.preview++,n=e,s=new E(r),p=s.parse(n,t,i),g(),l?{meta:{paused:!0}}:p||{meta:{paused:!1}}},this.paused=function(){return l},this.pause=function(){l=!0,s.abort(),n=U(m.chunk)?\"\":n.substring(s.getCharIndex())},this.resume=function(){i.streamer._halted?(l=!1,i.streamer.parseChunk(n,!0)):setTimeout(i.resume,3)},this.aborted=function(){return e},this.abort=function(){e=!0,s.abort(),p.meta.aborted=!0,U(m.complete)&&m.complete(p),n=\"\"},this.guessLineEndings=function(e,t){e=e.substring(0,1048576);var t=new RegExp(P(t)+\"([^]*?)\"+P(t),\"gm\"),i=(e=e.replace(t,\"\")).split(\"\\r\"),t=e.split(\"\\n\"),e=1<t.length&&t[0].length<i[0].length;if(1===i.length||e)return\"\\n\";for(var r=0,n=0;n<i.length;n++)\"\\n\"===i[n][0]&&r++;return r>=i.length/2?\"\\r\\n\":\"\\r\"}}function P(e){return e.replace(/[.*+?^${}()|[\\]\\\\]/g,\"\\\\$&\")}function E(C){var S=(C=C||{}).delimiter,O=C.newline,x=C.comments,I=C.step,A=C.preview,T=C.fastMode,D=null,L=!1,F=null==C.quoteChar?'\"':C.quoteChar,j=F;if(void 0!==C.escapeChar&&(j=C.escapeChar),(\"string\"!=typeof S||-1<v.BAD_DELIMITERS.indexOf(S))&&(S=\",\"),x===S)throw new Error(\"Comment character same as delimiter\");!0===x?x=\"#\":(\"string\"!=typeof x||-1<v.BAD_DELIMITERS.indexOf(x))&&(x=!1),\"\\n\"!==O&&\"\\r\"!==O&&\"\\r\\n\"!==O&&(O=\"\\n\");var z=0,M=!1;this.parse=function(i,t,r){if(\"string\"!=typeof i)throw new Error(\"Input must be a string\");var n=i.length,e=S.length,s=O.length,a=x.length,o=U(I),h=[],u=[],d=[],f=z=0;if(!i)return w();if(T||!1!==T&&-1===i.indexOf(F)){for(var l=i.split(O),c=0;c<l.length;c++){if(d=l[c],z+=d.length,c!==l.length-1)z+=O.length;else if(r)return w();if(!x||d.substring(0,a)!==x){if(o){if(h=[],k(d.split(S)),R(),M)return w()}else k(d.split(S));if(A&&A<=c)return h=h.slice(0,A),w(!0)}}return w()}for(var p=i.indexOf(S,z),g=i.indexOf(O,z),_=new RegExp(P(j)+P(F),\"g\"),m=i.indexOf(F,z);;)if(i[z]===F)for(m=z,z++;;){if(-1===(m=i.indexOf(F,m+1)))return r||u.push({type:\"Quotes\",code:\"MissingQuotes\",message:\"Quoted field unterminated\",row:h.length,index:z}),E();if(m===n-1)return E(i.substring(z,m).replace(_,F));if(F===j&&i[m+1]===j)m++;else if(F===j||0===m||i[m-1]!==j){-1!==p&&p<m+1&&(p=i.indexOf(S,m+1));var y=v(-1===(g=-1!==g&&g<m+1?i.indexOf(O,m+1):g)?p:Math.min(p,g));if(i.substr(m+1+y,e)===S){d.push(i.substring(z,m).replace(_,F)),i[z=m+1+y+e]!==F&&(m=i.indexOf(F,z)),p=i.indexOf(S,z),g=i.indexOf(O,z);break}y=v(g);if(i.substring(m+1+y,m+1+y+s)===O){if(d.push(i.substring(z,m).replace(_,F)),b(m+1+y+s),p=i.indexOf(S,z),m=i.indexOf(F,z),o&&(R(),M))return w();if(A&&h.length>=A)return w(!0);break}u.push({type:\"Quotes\",code:\"InvalidQuotes\",message:\"Trailing quote on quoted field is malformed\",row:h.length,index:z}),m++}}else if(x&&0===d.length&&i.substring(z,z+a)===x){if(-1===g)return w();z=g+s,g=i.indexOf(O,z),p=i.indexOf(S,z)}else if(-1!==p&&(p<g||-1===g))d.push(i.substring(z,p)),z=p+e,p=i.indexOf(S,z);else{if(-1===g)break;if(d.push(i.substring(z,g)),b(g+s),o&&(R(),M))return w();if(A&&h.length>=A)return w(!0)}return E();function k(e){h.push(e),f=z}function v(e){var t=0;return t=-1!==e&&(e=i.substring(m+1,e))&&\"\"===e.trim()?e.length:t}function E(e){return r||(void 0===e&&(e=i.substring(z)),d.push(e),z=n,k(d),o&&R()),w()}function b(e){z=e,k(d),d=[],g=i.indexOf(O,z)}function w(e){if(C.header&&!t&&h.length&&!L){var s=h[0],a=Object.create(null),o=new Set(s);let n=!1;for(let r=0;r<s.length;r++){let i=s[r];if(a[i=U(C.transformHeader)?C.transformHeader(i,r):i]){let e,t=a[i];for(;e=i+\"_\"+t,t++,o.has(e););o.add(e),s[r]=e,a[i]++,n=!0,(D=null===D?{}:D)[e]=i}else a[i]=1,s[r]=i;o.add(i)}n&&console.warn(\"Duplicate headers found and renamed.\"),L=!0}return{data:h,errors:u,meta:{delimiter:S,linebreak:O,aborted:M,truncated:!!e,cursor:f+(t||0),renamedHeaders:D}}}function R(){I(w()),h=[],u=[]}},this.abort=function(){M=!0},this.getCharIndex=function(){return z}}function g(e){var t=e.data,i=o[t.workerId],r=!1;if(t.error)i.userError(t.error,t.file);else if(t.results&&t.results.data){var n={abort:function(){r=!0,_(t.workerId,{data:[],errors:[],meta:{aborted:!0}})},pause:m,resume:m};if(U(i.userStep)){for(var s=0;s<t.results.data.length&&(i.userStep({data:t.results.data[s],errors:t.results.errors,meta:t.results.meta},n),!r);s++);delete t.results}else U(i.userChunk)&&(i.userChunk(t.results,n,t.file),delete t.results)}t.finished&&!r&&_(t.workerId,t.results)}function _(e,t){var i=o[e];U(i.userComplete)&&i.userComplete(t),i.terminate(),delete o[e]}function m(){throw new Error(\"Not implemented.\")}function b(e){if(\"object\"!=typeof e||null===e)return e;var t,i=Array.isArray(e)?[]:{};for(t in e)i[t]=b(e[t]);return i}function y(e,t){return function(){e.apply(t,arguments)}}function U(e){return\"function\"==typeof e}return v.parse=function(e,t){var i=(t=t||{}).dynamicTyping||!1;U(i)&&(t.dynamicTypingFunction=i,i={});if(t.dynamicTyping=i,t.transform=!!U(t.transform)&&t.transform,!t.worker||!v.WORKERS_SUPPORTED)return i=null,v.NODE_STREAM_INPUT,\"string\"==typeof e?(e=(e=>65279!==e.charCodeAt(0)?e:e.slice(1))(e),i=new(t.download?f:c)(t)):!0===e.readable&&U(e.read)&&U(e.on)?i=new p(t):(n.File&&e instanceof File||e instanceof Object)&&(i=new l(t)),i.stream(e);(i=(()=>{var e;return!!v.WORKERS_SUPPORTED&&(e=(()=>{var e=n.URL||n.webkitURL||null,t=r.toString();return v.BLOB_URL||(v.BLOB_URL=e.createObjectURL(new Blob([\"var global = (function() { if (typeof self !== 'undefined') { return self; } if (typeof window !== 'undefined') { return window; } if (typeof global !== 'undefined') { return global; } return {}; })(); global.IS_PAPA_WORKER=true; \",\"(\",t,\")();\"],{type:\"text/javascript\"})))})(),(e=new n.Worker(e)).onmessage=g,e.id=h++,o[e.id]=e)})()).userStep=t.step,i.userChunk=t.chunk,i.userComplete=t.complete,i.userError=t.error,t.step=U(t.step),t.chunk=U(t.chunk),t.complete=U(t.complete),t.error=U(t.error),delete t.worker,i.postMessage({input:e,config:t,workerId:i.id})},v.unparse=function(e,t){var n=!1,_=!0,m=\",\",y=\"\\r\\n\",s='\"',a=s+s,i=!1,r=null,o=!1,h=((()=>{if(\"object\"==typeof t){if(\"string\"!=typeof t.delimiter||v.BAD_DELIMITERS.filter(function(e){return-1!==t.delimiter.indexOf(e)}).length||(m=t.delimiter),\"boolean\"!=typeof t.quotes&&\"function\"!=typeof t.quotes&&!Array.isArray(t.quotes)||(n=t.quotes),\"boolean\"!=typeof t.skipEmptyLines&&\"string\"!=typeof t.skipEmptyLines||(i=t.skipEmptyLines),\"string\"==typeof t.newline&&(y=t.newline),\"string\"==typeof t.quoteChar&&(s=t.quoteChar),\"boolean\"==typeof t.header&&(_=t.header),Array.isArray(t.columns)){if(0===t.columns.length)throw new Error(\"Option columns is empty\");r=t.columns}void 0!==t.escapeChar&&(a=t.escapeChar+s),t.escapeFormulae instanceof RegExp?o=t.escapeFormulae:\"boolean\"==typeof t.escapeFormulae&&t.escapeFormulae&&(o=/^[=+\\-@\\t\\r].*$/)}})(),new RegExp(P(s),\"g\"));\"string\"==typeof e&&(e=JSON.parse(e));if(Array.isArray(e)){if(!e.length||Array.isArray(e[0]))return u(null,e,i);if(\"object\"==typeof e[0])return u(r||Object.keys(e[0]),e,i)}else if(\"object\"==typeof e)return\"string\"==typeof e.data&&(e.data=JSON.parse(e.data)),Array.isArray(e.data)&&(e.fields||(e.fields=e.meta&&e.meta.fields||r),e.fields||(e.fields=Array.isArray(e.data[0])?e.fields:\"object\"==typeof e.data[0]?Object.keys(e.data[0]):[]),Array.isArray(e.data[0])||\"object\"==typeof e.data[0]||(e.data=[e.data])),u(e.fields||[],e.data||[],i);throw new Error(\"Unable to serialize unrecognized input\");function u(e,t,i){var r=\"\",n=(\"string\"==typeof e&&(e=JSON.parse(e)),\"string\"==typeof t&&(t=JSON.parse(t)),Array.isArray(e)&&0<e.length),s=!Array.isArray(t[0]);if(n&&_){for(var a=0;a<e.length;a++)0<a&&(r+=m),r+=k(e[a],a);0<t.length&&(r+=y)}for(var o=0;o<t.length;o++){var h=(n?e:t[o]).length,u=!1,d=n?0===Object.keys(t[o]).length:0===t[o].length;if(i&&!n&&(u=\"greedy\"===i?\"\"===t[o].join(\"\").trim():1===t[o].length&&0===t[o][0].length),\"greedy\"===i&&n){for(var f=[],l=0;l<h;l++){var c=s?e[l]:l;f.push(t[o][c])}u=\"\"===f.join(\"\").trim()}if(!u){for(var p=0;p<h;p++){0<p&&!d&&(r+=m);var g=n&&s?e[p]:p;r+=k(t[o][g],p)}o<t.length-1&&(!i||0<h&&!d)&&(r+=y)}}return r}function k(e,t){var i,r;return null==e?\"\":e.constructor===Date?JSON.stringify(e).slice(1,25):(r=!1,o&&\"string\"==typeof e&&o.test(e)&&(e=\"'\"+e,r=!0),i=e.toString().replace(h,a),(r=r||!0===n||\"function\"==typeof n&&n(e,t)||Array.isArray(n)&&n[t]||((e,t)=>{for(var i=0;i<t.length;i++)if(-1<e.indexOf(t[i]))return!0;return!1})(i,v.BAD_DELIMITERS)||-1<i.indexOf(m)||\" \"===i.charAt(0)||\" \"===i.charAt(i.length-1))?s+i+s:i)}},v.RECORD_SEP=String.fromCharCode(30),v.UNIT_SEP=String.fromCharCode(31),v.BYTE_ORDER_MARK=\"\\ufeff\",v.BAD_DELIMITERS=[\"\\r\",\"\\n\",'\"',v.BYTE_ORDER_MARK],v.WORKERS_SUPPORTED=!s&&!!n.Worker,v.NODE_STREAM_INPUT=1,v.LocalChunkSize=10485760,v.RemoteChunkSize=5242880,v.DefaultDelimiter=\",\",v.Parser=E,v.ParserHandle=i,v.NetworkStreamer=f,v.FileStreamer=l,v.StringStreamer=c,v.ReadableStreamStreamer=p,n.jQuery&&((d=n.jQuery).fn.parse=function(o){var i=o.config||{},h=[];return this.each(function(e){if(!(\"INPUT\"===d(this).prop(\"tagName\").toUpperCase()&&\"file\"===d(this).attr(\"type\").toLowerCase()&&n.FileReader)||!this.files||0===this.files.length)return!0;for(var t=0;t<this.files.length;t++)h.push({file:this.files[t],inputElem:this,instanceConfig:d.extend({},i)})}),e(),this;function e(){if(0===h.length)U(o.complete)&&o.complete();else{var e,t,i,r,n=h[0];if(U(o.before)){var s=o.before(n.file,n.inputElem);if(\"object\"==typeof s){if(\"abort\"===s.action)return e=\"AbortError\",t=n.file,i=n.inputElem,r=s.reason,void(U(o.error)&&o.error({name:e},t,i,r));if(\"skip\"===s.action)return void u();\"object\"==typeof s.config&&(n.instanceConfig=d.extend(n.instanceConfig,s.config))}else if(\"skip\"===s)return void u()}var a=n.instanceConfig.complete;n.instanceConfig.complete=function(e){U(a)&&a(e,n.file,n.inputElem),u()},v.parse(n.file,n.instanceConfig)}}function u(){h.splice(0,1),e()}}),a&&(n.onmessage=function(e){e=e.data;void 0===v.WORKER_ID&&e&&(v.WORKER_ID=e.workerId);\"string\"==typeof e.input?n.postMessage({workerId:v.WORKER_ID,results:v.parse(e.input,e.config),finished:!0}):(n.File&&e.input instanceof File||e.input instanceof Object)&&(e=v.parse(e.input,e.config))&&n.postMessage({workerId:v.WORKER_ID,results:e,finished:!0})}),(f.prototype=Object.create(u.prototype)).constructor=f,(l.prototype=Object.create(u.prototype)).constructor=l,(c.prototype=Object.create(c.prototype)).constructor=c,(p.prototype=Object.create(u.prototype)).constructor=p,v});","export default function getMoleculeCreators(OCL) {\n    const fields = new Map();\n    fields.set('oclid', OCL.Molecule.fromIDCode);\n    fields.set('idcode', OCL.Molecule.fromIDCode);\n    fields.set('smiles', OCL.Molecule.fromSmiles);\n    fields.set('molfile', OCL.Molecule.fromMolfile);\n    fields.set('smarts', (smarts) => {\n        const smilesParser = new OCL.SmilesParser({ smartsMode: 'smarts' });\n        return smilesParser.parseMolecule(smarts);\n    });\n    return fields;\n}\n//# sourceMappingURL=getMoleculeCreators.js.map","import { ensureString } from 'ensure-string';\nimport Papa from 'papaparse';\nimport getMoleculeCreators from './getMoleculeCreators.js';\nconst defaultCSVOptions = {\n    header: true,\n    dynamicTyping: true,\n    skipEmptyLines: true,\n};\nexport default async function appendCSV(moleculesDB, csv, options = {}) {\n    const { onStep } = options;\n    csv = ensureString(csv);\n    const moleculeCreators = getMoleculeCreators(moleculesDB.OCL);\n    if (typeof csv !== 'string') {\n        throw new TypeError('csv must be a string');\n    }\n    options = { ...defaultCSVOptions, ...options };\n    const parsed = Papa.parse(csv, options);\n    const fields = parsed.meta.fields;\n    const stats = new Array(fields.length);\n    const firstElement = parsed.data[0];\n    let moleculeCreator, moleculeField;\n    for (let i = 0; i < fields.length; i++) {\n        stats[i] = {\n            label: fields[i],\n            isNumeric: typeof firstElement[fields[i]] === 'number',\n        };\n        const lowerField = fields[i].toLowerCase();\n        if (moleculeCreators.has(lowerField)) {\n            moleculeCreator = moleculeCreators.get(lowerField);\n            moleculeField = fields[i];\n        }\n    }\n    if (!moleculeCreator) {\n        throw new Error('this document does not contain any molecule field');\n    }\n    for (let i = 0; i < parsed.data.length; i++) {\n        moleculesDB.pushEntry(moleculeCreator(parsed.data[i][moleculeField]), parsed.data[i]);\n        if (onStep) {\n            // eslint-disable-next-line no-await-in-loop\n            await onStep(i + 1, parsed.data.length);\n        }\n    }\n}\n//# sourceMappingURL=appendCSV.js.map","export default function appendColor(moleculesDB, options = {}) {\n    const { dataLabel, propertyLabel, minValue, maxValue, minHue = 0, maxHue = 360, saturation = 65, lightness = 65, colorLabel = 'color', } = options;\n    const db = moleculesDB.getDB();\n    let values;\n    if (dataLabel) {\n        values = db.flatMap((result) => result.data.map((datum) => ({ value: datum[dataLabel], data: datum })));\n    }\n    else if (propertyLabel) {\n        values = db.flatMap((result) => result.data.map((datum) => ({\n            value: result.properties[propertyLabel],\n            data: datum,\n        })));\n    }\n    else {\n        values = db.flatMap((result) => result.data.map((datum) => ({ value: undefined, data: datum })));\n    }\n    if (minValue !== undefined) {\n        for (const value of values) {\n            if (value.value !== undefined && value.value < minValue) {\n                value.value = minValue;\n            }\n        }\n    }\n    if (maxValue !== undefined) {\n        for (const value of values) {\n            if (value.value !== undefined && value.value > maxValue) {\n                value.value = maxValue;\n            }\n        }\n    }\n    const definedValues = values.filter((value) => value.value !== undefined);\n    const min = Math.min(...definedValues.map((value) => value.value));\n    const max = Math.max(...definedValues.map((value) => value.value));\n    for (const value of values) {\n        if (value.value !== undefined) {\n            value.data[colorLabel] = `hsl(${Math.floor(((value.value - min) / (max - min)) * (maxHue - minHue) + minHue)},${saturation}%,${lightness}%)`;\n        }\n        else {\n            value.data.color = 'black';\n        }\n    }\n}\n//# sourceMappingURL=appendColor.js.map","var __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// index.ts\nvar isObject = /* @__PURE__ */ __name((v) => v !== null && typeof v === \"object\", \"isObject\");\nvar join = /* @__PURE__ */ __name((segs, joinChar, options) => {\n  if (typeof options.join === \"function\") {\n    return options.join(segs);\n  }\n  return segs[0] + joinChar + segs[1];\n}, \"join\");\nvar split = /* @__PURE__ */ __name((path, splitChar, options) => {\n  if (typeof options.split === \"function\") {\n    return options.split(path);\n  }\n  return path.split(splitChar);\n}, \"split\");\nvar isValid = /* @__PURE__ */ __name((key, target = {}, options) => {\n  if (typeof options?.isValid === \"function\") {\n    return options.isValid(key, target);\n  }\n  return true;\n}, \"isValid\");\nvar isValidObject = /* @__PURE__ */ __name((v) => {\n  return isObject(v) || typeof v === \"function\";\n}, \"isValidObject\");\nvar getValue = /* @__PURE__ */ __name((target, path, options = {}) => {\n  if (!isObject(options)) {\n    options = { default: options };\n  }\n  if (!isValidObject(target)) {\n    return typeof options.default !== \"undefined\" ? options.default : target;\n  }\n  if (typeof path === \"number\") {\n    path = String(path);\n  }\n  const pathIsArray = Array.isArray(path);\n  const pathIsString = typeof path === \"string\";\n  const splitChar = options.separator || \".\";\n  const joinChar = options.joinChar || (typeof splitChar === \"string\" ? splitChar : \".\");\n  if (!pathIsString && !pathIsArray) {\n    return target;\n  }\n  if (target[path] !== void 0) {\n    return isValid(path, target, options) ? target[path] : options.default;\n  }\n  const segs = pathIsArray ? path : split(path, splitChar, options);\n  const len = segs.length;\n  let idx = 0;\n  do {\n    let prop = segs[idx];\n    if (typeof prop !== \"string\") {\n      prop = String(prop);\n    }\n    while (prop && prop.slice(-1) === \"\\\\\") {\n      prop = join([prop.slice(0, -1), segs[++idx] || \"\"], joinChar, options);\n    }\n    if (target[prop] !== void 0) {\n      if (!isValid(prop, target, options)) {\n        return options.default;\n      }\n      target = target[prop];\n    } else {\n      let hasProp = false;\n      let n = idx + 1;\n      while (n < len) {\n        prop = join([prop, segs[n++]], joinChar, options);\n        if (hasProp = target[prop] !== void 0) {\n          if (!isValid(prop, target, options)) {\n            return options.default;\n          }\n          target = target[prop];\n          idx = n - 1;\n          break;\n        }\n      }\n      if (!hasProp) {\n        return options.default;\n      }\n    }\n  } while (++idx < len && isValidObject(target));\n  if (idx === len) {\n    return target;\n  }\n  return options.default;\n}, \"getValue\");\nvar index_default = getValue;\nexport {\n  index_default as default\n};\n/*!\n * get-value <https://github.com/jonschlinkert/get-value>\n *\n * Copyright (c) 2014-present, Jon Schlinkert.\n * Released under the MIT License.\n */\n//# sourceMappingURL=index.mjs.map","import get from 'get-value';\n/**\n * Append an array of entries to the current database. An entry is an object that by default should contain a 'ocl' property containing idCode and optionally index and coordinates\n * @param {*} moleculesDB\n * @param {object[]} entries\n * @param {object} [options={}]\n * @param {string} [options.idCodePath='ocl.idCode']\n * @param {string} [options.indexPath='ocl.index']\n * @param {string} [options.coordinatesPath='ocl.coordinates']\n * @param {string} [options.mwPath='mw']\n * @param {string} [options.smilesPath]\n * @param {string} [options.molfilePath]\n * @param {Function} [options.onStep] - call back to execute after each molecule\n * @returns\n */\nexport default async function appendEntries(moleculesDB, entries, options = {}) {\n    const { onStep, idCodePath = 'ocl.idCode', indexPath = 'ocl.index', coordinatesPath = 'ocl.coordinates', mwPath = 'mw', smilesPath, molfilePath, } = options;\n    const Molecule = moleculesDB.OCL.Molecule;\n    for (let i = 0; i < entries.length; i++) {\n        let idCode;\n        const entry = entries[i];\n        let molecule;\n        if (smilesPath) {\n            molecule = Molecule.fromSmiles(get(entry, smilesPath));\n        }\n        if (molfilePath && !molecule) {\n            molecule = Molecule.fromMolfile(get(entry, molfilePath));\n        }\n        if (!molecule) {\n            idCode = get(entry, idCodePath);\n            if (idCode) {\n                const coordinates = get(entry, coordinatesPath);\n                molecule = Molecule.fromIDCode(idCode, coordinates || false);\n            }\n        }\n        const index = get(entry, indexPath);\n        const mw = get(entry, mwPath);\n        if (onStep) {\n            // eslint-disable-next-line no-await-in-loop\n            await onStep(i + 1, entries.length);\n        }\n        if (!moleculesDB.keepEmptyMolecules &&\n            (!molecule || molecule.getAllAtoms() === 0)) {\n            continue;\n        }\n        else if (!molecule) {\n            molecule = new moleculesDB.OCL.Molecule(0, 0);\n        }\n        if (molecule) {\n            moleculesDB.pushEntry(molecule, entry, { index, mw });\n        }\n    }\n}\n//# sourceMappingURL=appendEntries.js.map","/**\n *\n * @param {*} string\n * @param {*} substring\n * @param {*} eol\n * @returns\n */\nexport function getEntriesBoundaries(string, substring, eol) {\n  const res = [];\n  let previous = 0;\n  let next = 0;\n  while (next !== -1) {\n    next = string.indexOf(substring, previous);\n    if (next !== -1) {\n      res.push([previous, next]);\n      const nextMatch = string.indexOf(eol, next + substring.length);\n      if (nextMatch === -1) {\n        next = -1;\n      } else {\n        previous = nextMatch + eol.length;\n        next = previous;\n      }\n    } else {\n      res.push([previous, string.length]);\n    }\n  }\n  return res;\n}\n","/**\n * Parse the molfile and the properties with > < labels >\n * @param {string} sdfPart\n * @param {*} labels\n * @param {*} currentLabels\n * @param {object} options\n * @returns\n */\nexport function getMolecule(sdfPart, labels, currentLabels, options) {\n  let parts = sdfPart.split(`${options.eol}>`);\n  if (parts.length === 0 || parts[0].length <= 5) return;\n  let molecule = {};\n  molecule.molfile = parts[0] + options.eol;\n  for (let j = 1; j < parts.length; j++) {\n    let lines = parts[j].split(options.eol);\n    let from = lines[0].indexOf('<');\n    let to = lines[0].indexOf('>');\n    let label = lines[0].slice(from + 1, to);\n    currentLabels.push(label);\n    if (!labels[label]) {\n      labels[label] = {\n        counter: 0,\n        isNumeric: options.dynamicTyping,\n        keep: false,\n      };\n      if (\n        (!options.exclude || !options.exclude.includes(label)) &&\n        (!options.include || options.include.includes(label))\n      ) {\n        labels[label].keep = true;\n        if (options.modifiers[label]) {\n          labels[label].modifier = options.modifiers[label];\n        }\n        if (options.forEach[label]) {\n          labels[label].forEach = options.forEach[label];\n        }\n      }\n    }\n    if (labels[label].keep) {\n      for (let k = 1; k < lines.length - 1; k++) {\n        if (molecule[label]) {\n          molecule[label] += options.eol + lines[k];\n        } else {\n          molecule[label] = lines[k];\n        }\n      }\n      if (labels[label].modifier) {\n        let modifiedValue = labels[label].modifier(molecule[label]);\n        if (modifiedValue === undefined || modifiedValue === null) {\n          delete molecule[label];\n        } else {\n          molecule[label] = modifiedValue;\n        }\n      }\n      if (\n        labels[label].isNumeric &&\n        (!Number.isFinite(+molecule[label]) || molecule[label].match(/^0[0-9]/))\n      ) {\n        labels[label].isNumeric = false;\n      }\n    }\n  }\n  return molecule;\n}\n","import { ensureString } from 'ensure-string';\n\nimport { getEntriesBoundaries } from './getEntriesBoundaries';\nimport { getMolecule } from './util/getMolecule';\n/**\n *  Parse a SDF file\n * @param {string|ArrayBuffer|Uint8Array} sdf - SDF file to parse\n * @param {object} [options={}]\n * @param {string[]} [options.include] - List of fields to include\n * @param {string[]} [options.exclude] - List of fields to exclude\n * @param {Function} [options.filter] - Callback allowing to filter the molecules\n * @param {boolean} [options.dynamicTyping] - Dynamically type the data\n * @param {object} [options.modifiers] - Object containing callbacks to apply on some specific fields\n * @param {boolean} [options.mixedEOL=false] - Set to true if you know there is a mixture between \\r\\n and \\n\n * @param {string} [options.eol] - Specify the end of line character. Default will be the one found in the file\n * @returns {object} - Object containing the molecules, the labels and the statistics\n */\nexport function parse(sdf, options = {}) {\n  options = { ...options };\n  if (options.modifiers === undefined) options.modifiers = {};\n  if (options.forEach === undefined) options.forEach = {};\n  if (options.dynamicTyping === undefined) options.dynamicTyping = true;\n\n  sdf = ensureString(sdf);\n  if (typeof sdf !== 'string') {\n    throw new TypeError('Parameter \"sdf\" must be a string');\n  }\n\n  if (options.eol === undefined) {\n    options.eol = '\\n';\n    if (options.mixedEOL) {\n      sdf = sdf.replaceAll('\\r\\n', '\\n');\n      sdf = sdf.replaceAll('\\r', '\\n');\n    } else {\n      // we will find the delimiter in order to be much faster and not use regular expression\n      let header = new Set(sdf.slice(0, 1000));\n      if (header.has('\\r\\n')) {\n        options.eol = '\\r\\n';\n      } else if (header.has('\\r')) {\n        options.eol = '\\r';\n      }\n    }\n  }\n\n  let entriesBoundaries = getEntriesBoundaries(\n    sdf,\n    `${options.eol}$$$$`,\n    options.eol,\n  );\n  let molecules = [];\n  let labels = {};\n\n  let start = Date.now();\n\n  for (let i = 0; i < entriesBoundaries.length; i++) {\n    let sdfPart = sdf.slice(...entriesBoundaries[i]);\n    if (sdfPart.length < 40) continue;\n    let currentLabels = [];\n    const molecule = getMolecule(sdfPart, labels, currentLabels, options);\n    if (!molecule) continue;\n    if (!options.filter || options.filter(molecule)) {\n      molecules.push(molecule);\n      // only now we can increase the counter\n      for (let j = 0; j < currentLabels.length; j++) {\n        labels[currentLabels[j]].counter++;\n      }\n    }\n  }\n  // all numeric fields should be converted to numbers\n  for (let label in labels) {\n    let currentLabel = labels[label];\n    if (currentLabel.isNumeric) {\n      currentLabel.minValue = Infinity;\n      currentLabel.maxValue = -Infinity;\n      for (let j = 0; j < molecules.length; j++) {\n        if (molecules[j][label]) {\n          let value = Number.parseFloat(molecules[j][label]);\n          molecules[j][label] = value;\n          if (value > currentLabel.maxValue) {\n            currentLabel.maxValue = value;\n          }\n          if (value < currentLabel.minValue) {\n            currentLabel.minValue = value;\n          }\n        }\n      }\n    }\n  }\n\n  // we check that a label is in all the records\n  for (let key in labels) {\n    if (labels[key].counter === molecules.length) {\n      labels[key].always = true;\n    } else {\n      labels[key].always = false;\n    }\n  }\n\n  let statistics = [];\n  for (let key in labels) {\n    let statistic = labels[key];\n    statistic.label = key;\n    statistics.push(statistic);\n  }\n\n  return {\n    time: Date.now() - start,\n    molecules,\n    labels: Object.keys(labels),\n    statistics,\n  };\n}\n","import { ensureString } from 'ensure-string';\nimport { parse } from 'sdf-parser';\nexport default async function appendSDF(moleculesDB, sdf, options = {}) {\n    const { onStep, dynamicTyping, mixedEOL = true, eol } = options;\n    sdf = ensureString(sdf);\n    if (typeof sdf !== 'string') {\n        throw new TypeError('sdf must be a string');\n    }\n    const parsed = parse(sdf, { dynamicTyping, mixedEOL, eol });\n    for (let i = 0; i < parsed.molecules.length; i++) {\n        const molecule = parsed.molecules[i];\n        moleculesDB.pushEntry(moleculesDB.OCL.Molecule.fromMolfile(molecule.molfile), molecule);\n        if (onStep) {\n            // eslint-disable-next-line no-await-in-loop\n            await onStep(i + 1, parsed.molecules.length);\n        }\n    }\n}\n//# sourceMappingURL=appendSDF.js.map","import { ensureString } from 'ensure-string';\nexport default async function appendSmilesList(moleculesDB, text, options = {}) {\n    const { onStep } = options;\n    text = ensureString(text);\n    if (typeof text !== 'string') {\n        throw new TypeError('text must be a string');\n    }\n    const smilesArray = text\n        .split(/\\r?\\n/)\n        .map((line) => line.trim())\n        .filter(Boolean);\n    for (let i = 0; i < smilesArray.length; i++) {\n        const oneSmiles = smilesArray[i];\n        moleculesDB.pushEntry(moleculesDB.OCL.Molecule.fromSmiles(oneSmiles));\n        if (onStep) {\n            // eslint-disable-next-line no-await-in-loop\n            await onStep(i + 1, smilesArray.length);\n        }\n    }\n}\n//# sourceMappingURL=appendSmilesList.js.map","/**\n *\n * @param {MoleculesDB} moleculesDB\n * @param {import('openchemlib').Molecule} molecule\n * @param {object} data\n * @param {object} [moleculeInfo]\n * @param {string} [moleculeInfo.idCode]\n * @param {number[]} [moleculeInfo.index]\n */\nexport default function pushEntry(moleculesDB, molecule, data = {}, moleculeInfo = {}) {\n    // the following line could be the source of problems if the idCode version\n    // changes\n    const moleculeIDCode = getMoleculeIDCode(molecule, moleculeInfo);\n    const id = moleculeIDCode || crypto.randomUUID();\n    let entry = moleculesDB.db[id];\n    if (!entry) {\n        // a new molecule\n        // ensure helper arrays needed for substructure search\n        molecule.ensureHelperArrays(moleculesDB.OCL.Molecule.cHelperRings);\n        let index;\n        if (!moleculeInfo.index) {\n            index = molecule.getIndex();\n        }\n        else {\n            index = moleculeInfo.index;\n        }\n        const molecularFormula = molecule.getMolecularFormula();\n        entry = {\n            molecule,\n            properties: {\n                mw: molecularFormula.relativeWeight,\n                em: molecularFormula.absoluteWeight,\n                mf: molecularFormula.formula,\n            },\n            data: [],\n            idCode: moleculeIDCode,\n            index,\n        };\n        moleculesDB.db[id] = entry;\n        if (moleculesDB.computeProperties) {\n            const properties = new moleculesDB.OCL.MoleculeProperties(molecule);\n            entry.properties = {\n                ...entry.properties,\n                acceptorCount: properties.acceptorCount,\n                donorCount: properties.donorCount,\n                logP: properties.logP,\n                logS: properties.logS,\n                polarSurfaceArea: properties.polarSurfaceArea,\n                rotatableBondCount: properties.rotatableBondCount,\n                stereoCenterCount: properties.stereoCenterCount,\n            };\n        }\n        updateStatistics(moleculesDB.calculatedStatistics, entry.properties);\n    }\n    entry.data.push(data);\n    updateStatistics(moleculesDB.dataStatistics, data);\n}\nfunction updateStatistics(statistics, data) {\n    for (const key in data) {\n        const value = data[key];\n        if (!statistics.has(key)) {\n            statistics.set(key, {\n                counter: 0,\n                kind: typeof value,\n            });\n        }\n        const stat = statistics.get(key);\n        stat.counter++;\n        if (stat.kind !== typeof value) {\n            stat.kind = 'mixed';\n        }\n    }\n}\nfunction getMoleculeIDCode(molecule, moleculeInfo) {\n    let idCode = moleculeInfo.idCode;\n    if (!idCode) {\n        idCode = molecule.getIDCode();\n    }\n    if (idCode === 'd@')\n        return ''; // empty molecule\n    return idCode;\n}\n//# sourceMappingURL=pushEntry.js.map","export default function pushMoleculeInfo(moleculesDB, moleculeInfo, data = {}) {\n    if (typeof moleculeInfo !== 'object') {\n        throw new Error('pushMoleculeInfo requires an object as first parameter');\n    }\n    const Molecule = moleculesDB.OCL.Molecule;\n    let molecule;\n    if (moleculeInfo.molfile) {\n        molecule = Molecule.fromMolfile(moleculeInfo.molfile);\n    }\n    if (moleculeInfo.smiles)\n        molecule = Molecule.fromSmiles(moleculeInfo.smiles);\n    if (moleculeInfo.idCode) {\n        if (moleculesDB.db[moleculeInfo.idCode]) {\n            molecule = moleculesDB.db[moleculeInfo.idCode].molecule;\n        }\n        else {\n            molecule = Molecule.fromIDCode(moleculeInfo.idCode, moleculeInfo.coordinates || false);\n        }\n    }\n    if (molecule) {\n        moleculesDB.pushEntry(molecule, data, moleculeInfo);\n    }\n}\n//# sourceMappingURL=pushMoleculeInfo.js.map","export async function noWait() {\n    return new Promise((resolve) => {\n        if (typeof setImmediate === 'function') {\n            setImmediate(() => resolve());\n        }\n        else {\n            // didn't find a better way to do it in the browser\n            setTimeout(() => resolve(), 0);\n        }\n    });\n}\n//# sourceMappingURL=noWait.js.map","import { noWait } from '../../util/noWait.js';\nimport getMoleculeCreators from './getMoleculeCreators.js';\nclass AbortError extends Error {\n    name = 'AbortError';\n    code = 20;\n}\nfunction getQuery(moleculesDB, query, options) {\n    const { format = 'idCode' } = options;\n    if (typeof query === 'string') {\n        const moleculeCreators = getMoleculeCreators(moleculesDB.OCL);\n        query = moleculeCreators.get(format.toLowerCase())(query);\n    }\n    else if (!(query instanceof moleculesDB.OCL.Molecule)) {\n        throw new TypeError('toSearch must be a Molecule or string');\n    }\n    return query;\n}\n/**\n * Internal function to search in the database\n * @param {import('../MoleculesDB.js').MoleculesDB} moleculesDB\n * @param {string} query\n * @param {Record<string, any>} [options={}]\n * @param {'exact'|'substructure'|'substructureOR'|'similarity'} [options.mode='substructure']\n * @returns\n */\nexport function search(moleculesDB, query = '', options = {}) {\n    const { mode = 'substructure' } = options;\n    query = getQuery(moleculesDB, query, options);\n    let result;\n    switch (mode.toLowerCase()) {\n        case 'exact':\n            result = exactSearch(moleculesDB, query);\n            break;\n        case 'exactnostereo':\n            result = exactSearchNoStereo(moleculesDB, query);\n            break;\n        case 'substructure':\n            result = substructureSearch(moleculesDB, query);\n            break;\n        case 'substructureor':\n            result = substructureSearchOR(moleculesDB, query);\n            break;\n        case 'similarity':\n            result = similaritySearch(moleculesDB, query);\n            break;\n        default:\n            throw new Error(`unknown search mode: ${options.mode}`);\n    }\n    return processResult(result, options);\n}\nexport async function searchAsync(moleculesDB, query = '', options = {}) {\n    const { mode = 'substructure' } = options;\n    query = getQuery(moleculesDB, query, options);\n    let result;\n    switch (mode.toLowerCase()) {\n        case 'exact':\n            result = exactSearch(moleculesDB, query);\n            break;\n        case 'exactnostereo':\n            result = exactSearchNoStereo(moleculesDB, query);\n            break;\n        case 'substructure':\n            result = await subStructureSearchAsync(moleculesDB, query, options);\n            break;\n        case 'substructureor':\n            result = substructureSearchOR(moleculesDB, query);\n            break;\n        case 'similarity':\n            result = similaritySearch(moleculesDB, query);\n            break;\n        default:\n            throw new Error(`unknown search mode: ${options.mode}`);\n    }\n    return processResult(result, options);\n}\n/**\n * Search for an exact match in the database including stereochemistry\n * @param {import('../MoleculesDB.js').MoleculesDB} moleculesDB\n * @param {import('openchemlib').Molecule} query\n * @returns\n */\nfunction exactSearch(moleculesDB, query) {\n    query = query.getCompactCopy();\n    query.setFragment(false);\n    const queryIDCode = query.getIDCode();\n    const searchResult = moleculesDB.db[queryIDCode]\n        ? [moleculesDB.db[queryIDCode]]\n        : [];\n    return searchResult;\n}\n/**\n * Search for an exact match without stereo information\n * @param {import('../MoleculesDB.js').MoleculesDB} moleculesDB\n * @param {import('openchemlib').Molecule}  query\n * @returns\n */\nfunction exactSearchNoStereo(moleculesDB, query) {\n    query = query.getCompactCopy();\n    query.setFragment(false);\n    query.stripStereoInformation();\n    const queryIDCode = query.getIDCode();\n    // first filter by molecular weight\n    const mw = query.getMolecularFormula().relativeWeight;\n    const results = [];\n    for (const idCode in moleculesDB.db) {\n        const entry = moleculesDB.db[idCode];\n        if (mw !== entry.properties.mw) {\n            continue;\n        }\n        const candidateMolecule = entry.molecule.getCompactCopy();\n        candidateMolecule.stripStereoInformation();\n        const candidateIDCode = candidateMolecule.getIDCode();\n        if (candidateIDCode !== queryIDCode) {\n            continue;\n        }\n        results.push(entry);\n    }\n    return results;\n}\n/**\n * No atoms in the query, we return all the molecules\n * @param {import('../MoleculesDB.js').MoleculesDB} moleculesDB\n * @param {import('openchemlib').Molecule} query\n * @returns\n */\nfunction substructureSearchBegin(moleculesDB, query) {\n    const searchResult = [];\n    if (query.getAllAtoms() === 0) {\n        for (const idCode in moleculesDB.db) {\n            searchResult.push(moleculesDB.db[idCode]);\n        }\n    }\n    return { searchResult };\n}\nfunction substructureSearchEnd(searchResult, queryMW) {\n    searchResult.sort((a, b) => {\n        return (Math.abs(queryMW - a.properties.mw) - Math.abs(queryMW - b.properties.mw));\n    });\n    return searchResult;\n}\n/**\n * Search by substructure in the database\n * If the substructure is composed of many fragments all the fragments must be present\n * @param {import('../MoleculesDB.js').MoleculesDB} moleculesDB\n * @param {import('openchemlib').Molecule} query\n * @returns\n */\nfunction substructureSearch(moleculesDB, query) {\n    const queryMW = getMW(query);\n    const { searchResult } = substructureSearchBegin(moleculesDB, query);\n    if (searchResult.length === 0) {\n        query = query.getCompactCopy();\n        query.setFragment(true);\n        const queryIndex = query.getIndex();\n        const searcher = moleculesDB.searcher;\n        searcher.setFragment(query, queryIndex);\n        for (const idCode in moleculesDB.db) {\n            const entry = moleculesDB.db[idCode];\n            searcher.setMolecule(entry.molecule, entry.index);\n            if (searcher.isFragmentInMolecule()) {\n                searchResult.push(entry);\n            }\n        }\n    }\n    return substructureSearchEnd(searchResult, queryMW);\n}\n/**\n * Search by substructure in the database\n * If the substructure is composed of many fragments only one fragment must be present\n * @param {import('../MoleculesDB.js').MoleculesDB} moleculesDB\n * @param {import('openchemlib').Molecule} query\n * @returns\n */\nfunction substructureSearchOR(moleculesDB, query) {\n    const queryMW = getMW(query);\n    const { searchResult } = substructureSearchBegin(moleculesDB, query);\n    if (searchResult.length === 0) {\n        query = query.getCompactCopy();\n        query.setFragment(true);\n        const queries = [];\n        for (const fragment of query.getFragments()) {\n            queries.push({\n                fragment,\n                queryIndex: fragment.getIndex(),\n            });\n        }\n        const searcher = moleculesDB.searcher;\n        molecule: for (const idCode in moleculesDB.db) {\n            const entry = moleculesDB.db[idCode];\n            searcher.setMolecule(entry.molecule, entry.index);\n            for (const { fragment, queryIndex } of queries) {\n                searcher.setFragment(fragment, queryIndex);\n                if (searcher.isFragmentInMolecule()) {\n                    searchResult.push(entry);\n                    continue molecule;\n                }\n            }\n        }\n    }\n    return substructureSearchEnd(searchResult, queryMW);\n}\nasync function subStructureSearchAsync(moleculesDB, query, options = {}) {\n    const queryMW = getMW(query); // we\n    query = query.getCompactCopy();\n    query.setFragment(true);\n    const { interval = 100, onStep, controller } = options;\n    let shouldAbort = false;\n    if (controller) {\n        const abortEventListener = () => {\n            shouldAbort = true;\n        };\n        controller.signal.addEventListener('abort', abortEventListener);\n    }\n    const { searchResult } = substructureSearchBegin(moleculesDB, query);\n    let begin = performance.now();\n    if (searchResult.length === 0) {\n        const queryIndex = query.getIndex();\n        const searcher = moleculesDB.searcher;\n        searcher.setFragment(query, queryIndex);\n        let index = 0;\n        const length = Object.keys(moleculesDB.db).length;\n        for (const idCode in moleculesDB.db) {\n            if (shouldAbort) {\n                throw new AbortError('Query aborted');\n            }\n            const entry = moleculesDB.db[idCode];\n            searcher.setMolecule(entry.molecule, entry.index);\n            if (searcher.isFragmentInMolecule()) {\n                searchResult.push(entry);\n            }\n            if ((onStep || controller) && performance.now() - begin >= interval) {\n                begin = performance.now();\n                if (onStep) {\n                    onStep(index, length);\n                }\n                if (controller && !onStep) {\n                    // eslint-disable-next-line no-await-in-loop\n                    await noWait();\n                }\n            }\n            index++;\n        }\n    }\n    return substructureSearchEnd(searchResult, queryMW);\n}\nfunction similaritySearch(moleculesDB, query) {\n    const queryIndex = query.getIndex();\n    const queryMW = getMW(query);\n    const queryIdCode = query.getIDCode();\n    const searchResult = [];\n    let similarity;\n    for (const idCode in moleculesDB.db) {\n        const entry = moleculesDB.db[idCode];\n        if (entry.idCode === queryIdCode) {\n            similarity = Number.MAX_SAFE_INTEGER;\n        }\n        else {\n            similarity =\n                moleculesDB.OCL.SSSearcherWithIndex.getSimilarityTanimoto(queryIndex, entry.index) *\n                    1000000 -\n                    Math.abs(queryMW - entry.properties.mw) / 10000;\n        }\n        searchResult.push({ similarity, entry });\n    }\n    searchResult.sort((a, b) => {\n        return b.similarity - a.similarity;\n    });\n    return searchResult.map((entry) => entry.entry);\n}\nfunction getMW(query) {\n    const copy = query.getCompactCopy();\n    copy.setFragment(false);\n    return copy.getMolecularFormula().relativeWeight;\n}\nfunction processResult(entries, options = {}) {\n    const { flattenResult = true, keepMolecule = false, limit = Number.MAX_SAFE_INTEGER, } = options;\n    const results = [];\n    if (flattenResult) {\n        for (const entry of entries) {\n            for (const data of entry.data) {\n                const result = {\n                    data,\n                    idCode: entry.idCode,\n                    properties: entry.properties,\n                };\n                if (keepMolecule) {\n                    result.molecule = entry.molecule;\n                }\n                results.push(result);\n            }\n        }\n    }\n    else {\n        for (const entry of entries) {\n            results.push({\n                data: entry.data,\n                idCode: entry.idCode,\n                properties: entry.properties,\n                molecule: keepMolecule ? entry.molecule : undefined,\n            });\n        }\n    }\n    if (limit < results.length)\n        results.length = limit;\n    return results;\n}\n//# sourceMappingURL=search.js.map","import appendCSV from './utils/appendCSV.js';\nimport appendColor from './utils/appendColor.js';\nimport appendEntries from './utils/appendEntries.js';\nimport appendSDF from './utils/appendSDF.js';\nimport appendSmilesList from './utils/appendSmilesList.js';\nimport pushEntry from './utils/pushEntry.js';\nimport pushMoleculeInfo from './utils/pushMoleculeInfo.js';\nimport { search, searchAsync } from './utils/search.js';\n/*\n * @typedef {object} InternalStatistics\n * @property {number} counter - number of entries\n * @property {'number'|'boolean'|'string'|'object'|'mixed'} kind - kind of value\n */\n/**\n * this.db is an object with properties 'oclID' that has as value\n * an object that contains the following properties:\n * molecule: an OCL molecule instance\n * index: OCL index used for substructure searching\n * properties: all the calculates properties\n * data: array containing free data associated with this molecule\n */\nexport class MoleculesDB {\n    /**\n     * Creates an instance of MoleculesDB.\n     * @param {typeof import('openchemlib')} OCL - openchemlib library\n     * @param {object} [options={}] - Options.\n     * @param {boolean} [options.computeProperties=false]\n     * @param {boolean} [options.keepEmptyMolecules=false]\n     */\n    constructor(OCL, options = {}) {\n        const { computeProperties = false, keepEmptyMolecules = false } = options;\n        this.OCL = OCL;\n        this.db = {};\n        /**\n         * @type {Map<string, InternalStatistics>}\n         */\n        this.dataStatistics = new Map();\n        /**\n         * @type {Map<string, InternalStatistics>}\n         */\n        this.calculatedStatistics = new Map();\n        this.computeProperties = computeProperties;\n        this.keepEmptyMolecules = keepEmptyMolecules;\n        this.searcher = new OCL.SSSearcherWithIndex();\n    }\n    clear() {\n        this.db = {};\n        this.dataStatistics.clear();\n        this.calculatedStatistics.clear();\n    }\n    get nbMolecules() {\n        return Object.keys(this.db).length;\n    }\n    get nbData() {\n        let number = 0;\n        for (const entry of Object.values(this.db)) {\n            number += entry.data.length;\n        }\n        return number;\n    }\n    get statistics() {\n        const nbData = this.nbData;\n        const nbMolecules = this.nbMolecules;\n        const statistics = {\n            data: [],\n            calculated: [],\n        };\n        for (const [key, value] of this.dataStatistics.entries()) {\n            const statistic = {\n                label: key,\n                counter: value.counter,\n                kind: value.kind,\n                always: value.counter === nbData,\n                isNumber: false,\n            };\n            statistics.data.push(statistic);\n            // if kind is numeric, add minValue and maxValue. Need to go through all the values\n            if (value.kind === 'number') {\n                statistic.isNumeric = true;\n                statistic.minValue = Number.POSITIVE_INFINITY;\n                statistic.maxValue = Number.NEGATIVE_INFINITY;\n                for (const entry of Object.values(this.db)) {\n                    for (const data of entry.data) {\n                        if (data[key] < statistic.minValue) {\n                            statistic.minValue = data[key];\n                        }\n                        if (data[key] > statistic.maxValue) {\n                            statistic.maxValue = data[key];\n                        }\n                    }\n                }\n            }\n        }\n        for (const [key, value] of this.calculatedStatistics.entries()) {\n            const statistic = {\n                label: key,\n                counter: value.counter,\n                kind: value.kind,\n                always: value.counter === nbMolecules,\n                isNumeric: false,\n            };\n            statistics.calculated.push(statistic);\n            // if kind is numeric, add minValue and maxValue. Need to go through all the values\n            if (value.kind === 'number') {\n                statistic.isNumeric = true;\n                statistic.minValue = Number.POSITIVE_INFINITY;\n                statistic.maxValue = Number.NEGATIVE_INFINITY;\n                for (const entry of Object.values(this.db)) {\n                    if (entry.properties[key] < statistic.minValue) {\n                        statistic.minValue = entry.properties[key];\n                    }\n                    if (entry.properties[key] > statistic.maxValue) {\n                        statistic.maxValue = entry.properties[key];\n                    }\n                }\n            }\n        }\n        return statistics;\n    }\n    /**\n     * Append an array of entries to the current database. An entry is an object that by default should contain a 'ocl' property containing idCode and optionally index and coordinates\n     * @param {*} moleculesDB\n     * @param {object[]} entries\n     * @param {object} [options={}]\n     * @param {string} [options.idCodePath='ocl.idCode']\n     * @param {string} [options.indexPath='ocl.index']\n     * @param {string} [options.coordinatesPath='ocl.coordinates']\n     * @param {string} [options.mwPath='mw']\n     * @param {string} [options.smilesPath]\n     * @param {string} [options.molfilePath]\n     * @param {Function} [options.onStep] - call back to execute after each molecule\n     * @returns {Promise<void>}\n     */\n    appendEntries(entries, options) {\n        return appendEntries(this, entries, {\n            computeProperties: this.computeProperties,\n            ...options,\n        });\n    }\n    /**\n     * append to the current database a CSV file\n     * @param {string|ArrayBuffer} csv - text file containing the comma separated value file\n     * @param {object} [options={}] - options.\n     * @param {boolean} [options.header=true] - if the first line of the file is a header\n     * @param {boolean} [options.dynamicTyping=true] - dynamically type the data (convert values to number of boolean if possible)\n     * @param {boolean} [options.skipEmptyLines=true] - skip empty lines\n     * @param {Function} [options.onStep] - call back to execute after each molecule\n     * @returns {Promise<void>}\n     */\n    appendCSV(csv, options) {\n        return appendCSV(this, csv, options);\n    }\n    /**\n     * Append a SDF to the current database\n     * @param {string|ArrayBuffer} sdf - text file containing the sdf\n     * @param {object} [options={}] - options\n     * @param {Function} [options.onStep] - callback to execute after each molecule\n     * @param {boolean} [options.dynamicTyping=true] - Dynamically type the data\n     * @param {boolean} [options.mixedEOL=false] - Set to true if you know there is a mixture between \\r\\n and \\n\n     * @param {string} [options.eol] - Specify the end of line character. Default will be the one found in the file\n     * @returns {Promise<void>}\n     */\n    appendSDF(sdf, options) {\n        return appendSDF(this, sdf, options);\n    }\n    /**\n     * Append a list of SMILES to the current database.\n     * @param {string|ArrayBuffer} smiles - text file containing a list of smiles\n     * @param {object} [options={}] - Options\n     * @param {Function} [options.onStep] - call back to execute after each molecule\n     * @returns {Promise<void>}\n     */\n    appendSmilesList(smiles, options) {\n        return appendSmilesList(this, smiles, options);\n    }\n    /**\n     * Add a molecule to the current database.\n     * @param {import('openchemlib').Molecule} molecule - The molecule to append.\n     * @param {object} [data={}] - Options.\n     * @param {object} [moleculeInfo={}] - May contain precalculated index and mw.\n     */\n    pushEntry(molecule, data, moleculeInfo) {\n        pushEntry(this, molecule, data, moleculeInfo);\n    }\n    /**\n     * Add an entry in the database.\n     * @param {object} moleculeInfo - a molecule as a JSON that may contain the following properties: molfile, smiles, idCode, mf, index\n     * @param {object} [data={}]\n     */\n    pushMoleculeInfo(moleculeInfo, data) {\n        return pushMoleculeInfo(this, moleculeInfo, data);\n    }\n    /**\n     * Search in a MoleculesDB\n     * Inside the database all the same molecules are group together\n     * @param {string|import('openchemlib').Molecule} [query] - smiles, molfile, idlCode or instance of Molecule to look for\n     * @param {object} [options={}] - Options\n     * @param {'smiles'|'idCode'|'smarts'|'molfile'} [options.format='idCode'] - query format\n     * @param {'substructure'|'substructureOR'|'exact'|'exactNoStereo'|'similarity'} [options.mode='substructure'] - search algorithm\n     * @param {boolean} [options.flattenResult=true] - The database group the data for the same product. This allows to flatten the result\n     * @param {boolean} [options.keepMolecule=false] - keep the OCL.Molecule object in the result\n     * @param {number} [options.limit=Number.MAX_SAFE_INTEGER] - maximal number of result\n     * @returns {Array} array of object of the type {(molecule), idCode, data, properties}\n     */\n    search(query, options) {\n        return search(this, query, options);\n    }\n    /**\n     * Search in a MoleculesDB\n     * Inside the database all the same molecules are group together\n     * @param {string|import('openchemlib').Molecule} [query] - smiles, molfile, idCode or instance of Molecule to look for\n     * @param {object} [options={}] - Options.\n     * @param {'smiles'|'idCode'|'smarts'|'molfile'} [options.format='idCode'] - query format\n     * @param {'substructure'|'substructureOR'|'exact'|'exactNoStereo'|'similarity'} [options.mode='substructure'] - search algorithm\n     * @param {boolean} [options.flattenResult=true] - The database group the data for the same product. This allows to flatten the result\n     * @param {boolean} [options.keepMolecule=false] - keep the OCL.Molecule object in the result\n     * @param {number} [options.limit=Number.MAX_SAFE_INTEGER] - maximal number of result\n     * @param {number} [options.interval=100] - interval in ms to call the onStep callback\n     * @param {Function} [options.onStep] - callback to execute after each interval\n     * @param {AbortController} [options.controler] - callback to execute to check if the search should be aborted\n     * @returns {Promise<Array>} array of object of the type {(molecule), idCode, data, properties}\n     */\n    searchAsync(query, options) {\n        return searchAsync(this, query, options);\n    }\n    /**\n     * Returns an array with the current database\n     * @returns\n     */\n    getDB() {\n        return Object.keys(this.db).map((key) => this.db[key]);\n    }\n    /**\n     * Append the property `data.color` to each entry based on a data or property label\n     * {object} [options={}]\n     * {string} [options.dataLabel] name of the property from `data` to use\n     * {string} [options.propertyLabel] name of the property from `properties` to use\n     * {number} [options.colorLabel='color'] name of the property to add in data that will contain the color\n     * {number} [options.minValue]\n     * {number} [options.maxValue]\n     * {number} [options.minHue=0]\n     * {number} [options.maxHue=360]\n     * {number} [options.saturation=65] percent of color saturation\n     * {number} [options.lightness=65] percent of color lightness\n     * @param options\n     */\n    appendColor(options) {\n        appendColor(this, options);\n    }\n}\n//# sourceMappingURL=MoleculesDB.js.map","import { makeRacemic } from '../util/makeRacemic.js';\nexport function getAtomFeatures(originalMolecule, options = {}) {\n    const OCL = originalMolecule.getOCL();\n    const { sphere = 1 } = options;\n    const fragment = new OCL.Molecule(0, 0);\n    const results = [];\n    for (let rootAtom = 0; rootAtom < originalMolecule.getAllAtoms(); rootAtom++) {\n        let min = 0;\n        let max = 0;\n        const atomMask = new Array(originalMolecule.getAtoms());\n        const atomList = new Array(originalMolecule.getAtoms());\n        const molecule = originalMolecule.getCompactCopy();\n        for (let currentSphere = 0; currentSphere <= sphere; currentSphere++) {\n            if (max === 0) {\n                atomList[max] = rootAtom;\n                atomMask[rootAtom] = true;\n                max++;\n            }\n            else {\n                let newMax = max;\n                for (let i = min; i < max; i++) {\n                    const atom = atomList[i];\n                    for (let j = 0; j < molecule.getAllConnAtoms(atom); j++) {\n                        const connAtom = molecule.getConnAtom(atom, j);\n                        if (!atomMask[connAtom]) {\n                            atomMask[connAtom] = true;\n                            atomList[newMax++] = connAtom;\n                        }\n                    }\n                }\n                min = max;\n                max = newMax;\n            }\n            molecule.copyMoleculeByAtoms(fragment, atomMask, true, null);\n            if (currentSphere === sphere) {\n                makeRacemic(fragment);\n                results.push(fragment.getCanonizedIDCode());\n            }\n        }\n    }\n    const atoms = {};\n    for (const result of results) {\n        if (!atoms[result]) {\n            atoms[result] = 1;\n        }\n        else {\n            atoms[result]++;\n        }\n    }\n    return atoms;\n}\n//# sourceMappingURL=getAtomFeatures.js.map","let rAtomicNumber = 0;\n/**\n * Returns the atomic number of the X atom\n * @param {import('openchemlib').Molecule} molecule - An instance of a molecule\n * @returns\n */\nexport function getRAtomicNumber(molecule) {\n    if (!rAtomicNumber) {\n        const OCL = molecule.getOCL();\n        rAtomicNumber = OCL.Molecule.getAtomicNoFromLabel('R', OCL.Molecule.cPseudoAtomR);\n    }\n    return rAtomicNumber;\n}\n//# sourceMappingURL=getRAtomicNumber.js.map","import { getMF } from '../util/getMF.js';\nimport { getRAtomicNumber } from '../util/getRAtomicNumber.js';\nexport function fragmentAcyclicSingleBonds(molecule) {\n    const OCL = molecule.getOCL();\n    const atoms = [];\n    for (let i = 0; i < molecule.getAllAtoms(); i++) {\n        const atom = {};\n        atoms.push(atom);\n        atom.i = i;\n        atom.links = []; // we will store connected atoms of broken bonds\n    }\n    const bonds = [];\n    for (let i = 0; i < molecule.getAllBonds(); i++) {\n        const bond = {};\n        bonds.push(bond);\n        bond.i = i;\n        bond.order = molecule.getBondOrder(i);\n        bond.atom1 = molecule.getBondAtom(0, i);\n        bond.atom2 = molecule.getBondAtom(1, i);\n        bond.type = molecule.getBondType(i);\n        bond.isAromatic = molecule.isAromaticBond(i);\n        bond.isRingBond = molecule.isRingBond(i);\n        if (!bond.isAromatic && (bond.type & 0b11) === 1 && !bond.isRingBond) {\n            bond.selected = true;\n            atoms[bond.atom1].links.push(bond.atom2);\n            atoms[bond.atom2].links.push(bond.atom1);\n        }\n    }\n    const brokenMolecule = molecule.getCompactCopy();\n    for (const bond of bonds) {\n        if (bond.selected) {\n            brokenMolecule.markBondForDeletion(bond.i);\n        }\n    }\n    brokenMolecule.deleteMarkedAtomsAndBonds();\n    const fragmentMap = [];\n    const nbFragments = brokenMolecule.getFragmentNumbers(fragmentMap);\n    const results = [];\n    for (let i = 0; i < nbFragments; i++) {\n        const result = {};\n        result.atomMap = [];\n        const includeAtom = fragmentMap.map((id) => {\n            return id === i;\n        });\n        const fragment = new OCL.Molecule(0, 0);\n        const atomMap = [];\n        brokenMolecule.copyMoleculeByAtoms(fragment, includeAtom, false, atomMap);\n        // we will add some R groups at the level of the broken bonds\n        for (let j = 0; j < atomMap.length; j++) {\n            if (atomMap[j] > -1) {\n                result.atomMap.push(j);\n                if (atoms[j].links.length > 0) {\n                    for (let k = 0; k < atoms[j].links.length; k++) {\n                        fragment.addBond(atomMap[j], fragment.addAtom(getRAtomicNumber(brokenMolecule)), 1);\n                    }\n                }\n            }\n        }\n        fragment.setFragment(false);\n        result.idCode = fragment.getIDCode();\n        result.mf = getMF(fragment).mf.replace(/R[1-9]?/, '');\n        results.push(result);\n    }\n    return results;\n}\n//# sourceMappingURL=fragmentAcyclicSingleBonds.js.map","/**\n * @description Append the OCL reaction to the reaction object\n * @param {Array} reactions - array of reactions objects with rxnCode and label\n * @param {typeof import('openchemlib')} OCL - OCL object\n * @param {object} [options={}]\n * @param {import('cheminfo-types').Logger} [options.logger]\n * @returns {Array} array of reactions objects with rxnCode, label and oclReaction (a decoded version of rxnCode reaction)\n */\nexport function appendOCLReaction(reactions, OCL, options = {}) {\n    const { logger } = options;\n    const newReactions = [];\n    for (const reaction of reactions) {\n        if (reaction.rxnCode) {\n            newReactions.push({\n                ...reaction,\n                oclReaction: OCL.ReactionEncoder.decode(reaction.rxnCode),\n            });\n        }\n        else if (logger) {\n            logger.warn(reaction, 'Reaction without rxnCode');\n        }\n    }\n    return newReactions;\n}\n//# sourceMappingURL=appendOCLReaction.js.map","/**\n *\n * @param {*} processedMolecules\n * @param {import('openchemlib').Molecule|string} molecule\n * @param {*} options\n * @returns\n */\nexport function checkIfExistsOrAddInfo(processedMolecules, molecule, options) {\n    const { moleculeInfoCallback, asReagent, asProduct } = options;\n    const idCode = typeof molecule === 'string' ? idCode : molecule.getIDCode();\n    if (processedMolecules.has(idCode)) {\n        const entry = processedMolecules.get(idCode);\n        let exists = false;\n        if (asReagent) {\n            if (entry.asReagent) {\n                exists = true;\n            }\n            else {\n                entry.asReagent = true;\n            }\n        }\n        if (asProduct) {\n            if (entry.asProduct) {\n                exists = true;\n            }\n            else {\n                entry.asProduct = true;\n            }\n        }\n        return { exists, info: entry };\n    }\n    else {\n        let info = {\n            idCode,\n            asReagent,\n            asProduct,\n            info: {},\n        };\n        if (moleculeInfoCallback) {\n            info.info = moleculeInfoCallback(molecule);\n        }\n        processedMolecules.set(idCode, info);\n        return { exists: false, info };\n    }\n}\n//# sourceMappingURL=checkIfExistsOrAddInfo.js.map","import { checkIfExistsOrAddInfo } from './checkIfExistsOrAddInfo.js';\n/**\n * @description apply one reaction to one reactant\n * @param {import('openchemlib').Molecule[]} reactants\n * @param tree\n * @param {Array<object>} reactions - rxnCode of the reaction\n * @param {object} options - options to apply the reaction\n * @param {number} options.currentDepth - current depth of the recursion\n * @param {number} options.maxDepth - max depth of the recursion\n * @param {number} options.maxCurrentDepth - max depth of the recursion for this set of reactions\n * @param {number} options.limitReactions - limit the number of reactions\n * @param {object} options.stats - stats of the recursion\n * @param {number} options.stats.counter - number of reactions\n * @param {Map} options.processedMolecules - set of processed molecules\n * @param {Array} options.trees - array of trees of previous recursions\n * @param {object} options.OCL - OCL object\n * @returns {Array} array of results\n */\nexport function applyOneReactantReactions(tree, reactions, options) {\n    const { currentDepth, maxDepth, maxCurrentDepth, processedMolecules, OCL, logger, } = options;\n    if (tree.molecules.length !== 1) {\n        logger?.warn('applyOneReactantReactions:tree.reactants.length!==1', tree.reactants.length);\n        return [];\n    }\n    const reactant = OCL.Molecule.fromIDCode(tree.molecules[0].idCode);\n    const todoNextDepth = [];\n    // if the current depth is greater than the max depth, we stop the recursion and return an empty array\n    if (currentDepth > maxCurrentDepth || tree.depth >= maxDepth) {\n        return [];\n    }\n    const existsAndInfo = checkIfExistsOrAddInfo(processedMolecules, reactant, {\n        ...options,\n        asReagent: true,\n    });\n    // check if the reactant has already been processed\n    if (existsAndInfo.exists) {\n        return [];\n    }\n    for (const reaction of reactions) {\n        if (options.stats.counter >= options.limitReactions) {\n            return [];\n        }\n        const reactor = new OCL.Reactor(reaction.oclReaction);\n        // isMatching is true if the reactant is matching the reaction else we continue to the next reaction\n        const isMatching = Boolean(reactor.setReactant(0, reactant));\n        if (isMatching) {\n            options.stats.counter++;\n            // get the products of the reaction\n            const oneReactionProducts = reactor.getProducts();\n            for (const oneReactionProduct of oneReactionProducts) {\n                for (const reactionProduct of oneReactionProduct) {\n                    // get the info of the product (idCode, mf)\n                    const productExistsAndInfo = checkIfExistsOrAddInfo(processedMolecules, reactionProduct, { ...options, asProduct: true });\n                    // if the product has not been processed yet, we add it to the list of products and we add it to the list of todoNextDepth\n                    if (!productExistsAndInfo.exists) {\n                        // eslint-disable-next-line no-unused-vars\n                        const { oclReaction, needToBeCharged, ...reactionWithoutOCL } = reaction;\n                        const oneReaction = {\n                            reaction: reactionWithoutOCL,\n                            depth: tree.depth + 1,\n                            isValid: true,\n                            currentDepth,\n                            molecules: [\n                                checkIfExistsOrAddInfo(processedMolecules, reactionProduct, options).info,\n                            ],\n                        };\n                        if (!tree.children)\n                            tree.children = [];\n                        tree.children.push(oneReaction);\n                        todoNextDepth.push(() => {\n                            return applyOneReactantReactions(oneReaction, reactions, {\n                                ...options,\n                                currentDepth: options.currentDepth + 1,\n                            });\n                        });\n                    }\n                }\n            }\n        }\n    }\n    // by returning todoNextDepth, we make sure that the recursion will continue\n    return todoNextDepth;\n}\n//# sourceMappingURL=applyOneReactantReactions.js.map","export function getFilteredTrees(reactions, options = {}) {\n    const { filter = () => true } = options;\n    const nodesToKeep = reactions.getNodes().filter(filter);\n    const parentMap = reactions.getParentMap();\n    for (let currentNode of nodesToKeep) {\n        const parent = parentMap.get(currentNode);\n        if (parent && nodesToKeep.includes(parent) === false) {\n            nodesToKeep.push(parent);\n        }\n    }\n    return getValidChildren(reactions.trees, { nodesToKeep });\n}\nfunction getValidChildren(nodes, options) {\n    const { nodesToKeep } = options;\n    const validNodes = nodes\n        .filter((node) => nodesToKeep.includes(node))\n        .map((node) => ({ ...node }));\n    for (const node of validNodes) {\n        if (node.children) {\n            const validChildren = node.children.filter((child) => nodesToKeep.includes(child));\n            if (validChildren.length > 0) {\n                node.children = getValidChildren(validChildren, { nodesToKeep });\n            }\n            else {\n                delete node.children;\n            }\n        }\n    }\n    return validNodes;\n}\n//# sourceMappingURL=getFilteredTrees.js.map","export function getLeaves(trees) {\n    const leaves = [];\n    for (const tree of trees) {\n        appendLeavesSS(leaves, tree);\n    }\n    return leaves;\n}\nfunction appendLeavesSS(leaves, currentBranch) {\n    if (!currentBranch.children || currentBranch.children.length === 0) {\n        leaves.push(currentBranch);\n        return;\n    }\n    for (const child of currentBranch.children) {\n        appendLeavesSS(leaves, child);\n    }\n}\n//# sourceMappingURL=getLeaves.js.map","export function getNodes(trees) {\n    const nodes = [];\n    for (const tree of trees) {\n        getNodesSS(nodes, tree);\n    }\n    return nodes;\n}\nfunction getNodesSS(nodes, currentBranch) {\n    nodes.push(currentBranch);\n    for (const child of currentBranch?.children || []) {\n        getNodesSS(nodes, child);\n    }\n}\n//# sourceMappingURL=getNodes.js.map","import { appendOCLReaction } from './utils/appendOCLReaction.js';\nimport { applyOneReactantReactions } from './utils/applyOneReactantReactions.js';\nimport { checkIfExistsOrAddInfo } from './utils/checkIfExistsOrAddInfo.js';\nimport { getFilteredTrees } from './utils/getFilteredTrees.js';\nimport { getLeaves } from './utils/getLeaves.js';\nimport { getNodes } from './utils/getNodes.js';\nexport class Reactions {\n    /**\n     *\n     * @param OCL\n     * @param {object} [options={}]\n     * @param {import('cheminfo-types').Logger} logger\n     * @param {number} [options.maxDepth=5]\n     * @param {Function} [options.moleculeInfoCallback]\n     * @param {boolean} [options.skipProcessed=true]\n     */\n    constructor(OCL, options = {}) {\n        this.moleculeInfoCallback = options.moleculeInfoCallback;\n        this.maxDepth = options.maxDepth ?? 5;\n        this.limitReactions = options.limitReactions ?? 200;\n        this.skipProcessed = options.skipProcessed ?? true;\n        this.logger = options.logger;\n        this.processedMolecules = new Map();\n        this.OCL = OCL;\n        this.trees = [];\n        this.moleculeInfo = {}; // a cache containing molecule information like mw, etc.\n    }\n    /**\n     * We need to call this method for all the reactants on which we want to apply the reactions.\n     * If there is only one reactant, we call this method with an array of one reactant.\n     * If there are multiple reactants, we call this method with an array of the reactants.\n     * This method has to be called for all the reactants\n     * @param {import('openchemlib').Molecule[]|string[]} molecules\n     * @param moleculesOrIDCodes\n     */\n    appendHead(moleculesOrIDCodes) {\n        if (!Array.isArray(moleculesOrIDCodes)) {\n            throw new TypeError('reactants must be an array');\n        }\n        const molecules = moleculesOrIDCodes.map((molecule) => checkIfExistsOrAddInfo(this.processedMolecules, molecule, {\n            moleculeInfoCallback: this.moleculeInfoCallback,\n        }).info);\n        const tree = {\n            molecules,\n            depth: 0,\n            isValid: true, // this node could be implied in reactions\n        };\n        this.trees.push(tree);\n    }\n    /**\n     * Returns all the leaves of the trees\n     * @returns\n     */\n    getLeaves() {\n        return getLeaves(this.trees);\n    }\n    /**\n     * Returns all the nodes of the trees\n     * @returns\n     */\n    getNodes() {\n        return getNodes(this.trees);\n    }\n    getParentMap() {\n        const parentMap = new Map();\n        const nodes = this.getNodes();\n        for (const node of nodes) {\n            if (node.children) {\n                for (const child of node.children) {\n                    parentMap.set(child, node);\n                }\n            }\n        }\n        return parentMap;\n    }\n    /**\n     * When applying reactions some branches may be dead because it can not be implied in any reaction.\n     * This is the case when we specify a 'min' reaction depth.\n     * This will returno only the valid nodes\n     * @returns\n     */\n    getValidNodes() {\n        return this.getNodes().filter((node) => node.isValid);\n    }\n    /**\n     *\n     * @param {object} [options={}]\n     * @param {(object):boolean} [options.filter] - a function that will be called for each node and return true if the node should be kept\n     */\n    getFilteredReactions(options = {}) {\n        const filteredReactions = new Reactions();\n        filteredReactions.moleculeInfoCallback = this.moleculeInfoCallback;\n        filteredReactions.maxDepth = this.maxDepth;\n        filteredReactions.limitReactions = this.limitReactions;\n        filteredReactions.skipProcessed = this.skipProcessed;\n        filteredReactions.logger = this.logger;\n        filteredReactions.processedMolecules = this.processedMolecules;\n        filteredReactions.OCL = this.OCL;\n        filteredReactions.moleculeInfo = this.moleculeInfo; // a cache containing molecule information like mw, etc.\n        filteredReactions.trees = getFilteredTrees(this, options);\n        return filteredReactions;\n    }\n    /**\n     *\n     * @param {object[]} reactions - array of reactions that should be applied\n     * @param {object} [options={}]\n     * @param {number} [options.min=0] - min depth of the reaction\n     * @param {number} [options.max=3] - max depth of the reaction\n     */\n    applyOneReactantReactions(reactions, options = {}) {\n        const { min = 0, max = 3 } = options;\n        clearAsFromProcessedMolecules(this.processedMolecules);\n        const nodes = this.getNodes().filter((node) => node.isValid);\n        for (const node of nodes) {\n            node.currentDepth = 0;\n        }\n        reactions = appendOCLReaction(reactions, this.OCL);\n        const stats = { counter: 0 };\n        // Start the recursion by applying the first level of reactions\n        for (const node of nodes) {\n            let todoCurrentLevel = applyOneReactantReactions(node, reactions, {\n                OCL: this.OCL,\n                currentDepth: 1,\n                processedMolecules: this.processedMolecules,\n                moleculeInfoCallback: this.moleculeInfoCallback,\n                maxDepth: this.maxDepth,\n                maxCurrentDepth: max,\n                stats,\n                limitReactions: this.limitReactions,\n            });\n            do {\n                const nexts = [];\n                for (const todo of todoCurrentLevel) {\n                    nexts.push(todo());\n                }\n                todoCurrentLevel = nexts.flat();\n            } while (todoCurrentLevel.length > 0);\n        }\n        const newNodes = this.getNodes().filter((node) => node.isValid);\n        for (const node of newNodes) {\n            if (node.currentDepth < min || node.currentDepth > max) {\n                node.isValid = false;\n            }\n            delete node.currentDepth;\n        }\n    }\n}\nfunction clearAsFromProcessedMolecules(processedMolecules) {\n    for (const [, value] of processedMolecules) {\n        if (value.asReagent) {\n            value.asReagent = false;\n        }\n        if (value.asProduct) {\n            value.asProduct = false;\n        }\n    }\n}\n//# sourceMappingURL=Reactions.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fragmentAcyclicBonds = fragmentAcyclicBonds;\nconst mf_parser_1 = require(\"mf-parser\");\nconst openchemlib_utils_1 = require(\"openchemlib-utils\");\n/**\n * The function performs the fragmentation of all single linear bonds\n * @param {import('openchemlib').Molecule} molecule - The OCL molecule to be fragmented\n * @param {object} [options={}]\n * @param {boolean} [options.calculateHoseCodes=false] - calculating hose code for bonds is quite time consuming\n * @param {string} [options.parentIDCode=molecule.getIDCode()]\n * @returns Results fragmentation of acyclic bonds\n */\nfunction fragmentAcyclicBonds(molecule, options = {}) {\n    const { Molecule } = molecule.getOCL();\n    const { calculateHoseCodes, parentIDCode = molecule.getIDCode() } = options;\n    let atoms = [];\n    // Prepare object with lenght equal to number of atoms\n    for (let i = 0; i < molecule.getAllAtoms(); i++) {\n        let atom = {};\n        atoms.push(atom);\n        atom.i = i;\n        atom.links = [];\n    }\n    let bonds = [];\n    for (let i = 0; i < molecule.getAllBonds(); i++) {\n        let bond = {};\n        // get informations of bonds\n        bond.index = i;\n        bond.order = molecule.getBondOrder(i); // dative, single , double, triple\n        bond.atom1 = molecule.getBondAtom(0, i); // atom 1 index\n        bond.atom2 = molecule.getBondAtom(1, i); // atom 2 index\n        bond.type = molecule.getBondType(i); // cBondTypeSingle,cBondTypeDouble,cBondTypeTriple,cBondTypeDelocalized\n        bond.isAromatic = molecule.isAromaticBond(i);\n        bond.isRingBond = molecule.isRingBond(i);\n        // Mapping of bonds to be fragmented, only if they are single bond not aromatic and cyclic the mapping occurs\n        if (bond.isAromatic ||\n            bond.type > 1 ||\n            bond.isRingBond ||\n            bond.order !== 1) {\n            continue;\n        }\n        else {\n            bond.selected = true;\n            atoms[bond.atom1].links.push(bond.atom2);\n            atoms[bond.atom2].links.push(bond.atom1);\n        }\n        bonds.push(bond);\n    }\n    let brokenMolecule = {};\n    let fragmentMap = [];\n    let nbFragments = 0;\n    let results = [];\n    for (let bond of bonds) {\n        if (bond.selected) {\n            // if bond.selected is true (line 46) the molecule will be fragmented\n            brokenMolecule[bond.index] = molecule.getCompactCopy(); // get a copy of the molecule\n            brokenMolecule[bond.index].setAtomCustomLabel(bond.atom1, '*');\n            brokenMolecule[bond.index].setAtomCustomLabel(bond.atom2, '*');\n            brokenMolecule[bond.index].markBondForDeletion(bond.index); //mark bond to be deleted\n            // the function returns an array of map\n            brokenMolecule[bond.index].deleteMarkedAtomsAndBonds(); // delete marked bonds\n        }\n        nbFragments = brokenMolecule[bond.index].getFragmentNumbers(fragmentMap);\n        // only if there are 2 fragments code can continue\n        if (nbFragments === 2) {\n            for (let i = 0; i < nbFragments; i++) {\n                const result = {};\n                if (calculateHoseCodes) {\n                    result.hoses = (0, openchemlib_utils_1.getHoseCodesForAtoms)(molecule, [\n                        bond.atom1,\n                        bond.atom2,\n                    ]);\n                }\n                result.atomMap = [];\n                // assign fragment id to index of for loop\n                let includeAtom = fragmentMap.map((id) => {\n                    return id === i;\n                });\n                let fragment = new Molecule(100, 100);\n                let atomMap = [];\n                brokenMolecule[bond.index].copyMoleculeByAtoms(fragment, includeAtom, false, atomMap);\n                for (let j = 0; j < atomMap.length; j++) {\n                    if (fragment.getAtomCustomLabel(atomMap[j]) === '*') {\n                        result.atomMap.push(j);\n                        if (atoms[j].links.length > 0) {\n                            fragment.addBond(atomMap[j], fragment.addAtom(154));\n                        }\n                    }\n                }\n                fragment.removeAtomCustomLabels();\n                fragment.setFragment(false);\n                result.idCode = fragment.getIDCode();\n                result.parentIDCode = parentIDCode;\n                result.cleavedBonds = [\n                    {\n                        index: bond.index,\n                        order: bond.order,\n                        atom1: bond.atom1,\n                        atom2: bond.atom2,\n                    },\n                ];\n                result.mfInfo = new mf_parser_1.MF((0, openchemlib_utils_1.getMF)(fragment).mf.replace(/R[1-9]?/, '')).getInfo();\n                result.fragmentType = 'acyclic';\n                results.push(result);\n            }\n        }\n    }\n    // sort result in order fragment 1-2; 3-4; ...\n    results = results.sort((a, b) => {\n        return a.mfInfo.monoisotopicMass - b.mfInfo.monoisotopicMass;\n    });\n    return results;\n}\n//# sourceMappingURL=fragmentAcyclicBonds.js.map","\"use strict\";\n/**\n * This function returns ringBond, and object that contains information about the bonds of each ring\n * @param {import('openchemlib').Molecule} molecule - The OCL molecule to be fragmented\n * @returns Information of ring bonds for each ring in the molecule\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRingsInfo = getRingsInfo;\nfunction getRingsInfo(molecule) {\n    const ringSet = molecule.getRingSet();\n    let ringBonds = [];\n    // create a new array with the length of the number of bonds in the molecule and fills it with 0\n    let nbRingForBonds = new Array(molecule.getAllBonds()).fill(0);\n    for (let i = 0; i < ringSet.getSize(); i++) {\n        for (let bond of ringSet.getRingBonds(i)) {\n            nbRingForBonds[bond]++;\n        }\n    }\n    for (let i = 0; i < ringSet.getSize(); i++) {\n        ringBonds.push({\n            bonds: ringSet.getRingBonds(i).map((bondIndex) => ({\n                index: bondIndex,\n                ringIndex: i,\n                nbRings: nbRingForBonds[bondIndex], // in how many rings this bond is included\n                order: molecule.getBondOrder(bondIndex),\n                isAromatic: ringSet.isAromatic(i),\n                atom1: molecule.getBondAtom(0, bondIndex),\n                atom2: molecule.getBondAtom(1, bondIndex),\n            })),\n        });\n    }\n    return ringBonds;\n}\n//# sourceMappingURL=getRingsInfo.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getFragmentableRings = getFragmentableRings;\nconst getRingsInfo_js_1 = require(\"./getRingsInfo.js\");\n/**\n * This function returns an array of objects with all combination of 2 bonds who can be fragmented in the same ring\n * @param {import('openchemlib').Molecule} molecule - The OCL molecule to be fragmented\n * @returns All combination of 2 bonds who can be fragmented in the same ring\n */\nfunction getFragmentableRings(molecule) {\n    let ringsInfo = (0, getRingsInfo_js_1.getRingsInfo)(molecule);\n    let fragmentableRingBonds = [];\n    for (let ring = 0; ring < ringsInfo.length; ring++) {\n        let bonds = ringsInfo[ring].bonds;\n        // we prevent to consecutive bonds to be cleaved\n        for (let first = 0; first < bonds.length; first++) {\n            let end = first === 0 ? bonds.length - 1 : bonds.length;\n            for (let second = first + 2; second < end; second++) {\n                if (bonds[first].order === 1 &&\n                    bonds[second].order === 1 &&\n                    !bonds[first].isAromatic &&\n                    !bonds[second].isAromatic &&\n                    bonds[first].nbRings < 2 &&\n                    bonds[second].nbRings < 2) {\n                    fragmentableRingBonds.push({ bonds: [bonds[first], bonds[second]] });\n                }\n            }\n        }\n    }\n    return fragmentableRingBonds;\n}\n//# sourceMappingURL=getFragmentableRings.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fragmentRings = fragmentRings;\nconst mf_parser_1 = require(\"mf-parser\");\nconst openchemlib_utils_1 = require(\"openchemlib-utils\");\nconst getFragmentableRings_js_1 = require(\"./utils/getFragmentableRings.js\");\n/**\n * The function performs the fragmentation of all single ring bonds not belonging to aromatic rings\n * @param {import('openchemlib').Molecule} molecule - The OCL molecule to be fragmented\n * @param {object} [options={}]\n * @param {boolean} [options.calculateHoseCodes=false] - calculating hose code for bonds is quite time consuming\n * @param {string} [options.parentIDCode=molecule.getIDCode()]\n * @returns  Array with results for the fragmentation of ring bonds\n */\nfunction fragmentRings(molecule, options = {}) {\n    const { Molecule } = molecule.getOCL();\n    const { calculateHoseCodes, parentIDCode = molecule.getIDCode() } = options;\n    const fragmentableRingBonds = (0, getFragmentableRings_js_1.getFragmentableRings)(molecule);\n    let fragmentationResults = [];\n    for (let ringBonds of fragmentableRingBonds) {\n        const brokenMolecule = molecule.getCompactCopy();\n        let fragmentMap = [];\n        let atoms = [];\n        let rLinks = {};\n        for (let bond of ringBonds.bonds) {\n            brokenMolecule.markBondForDeletion(bond.index);\n            brokenMolecule.setAtomCustomLabel(bond.atom1, '*');\n            brokenMolecule.setAtomCustomLabel(bond.atom2, '*');\n            atoms.push(bond.atom1, bond.atom2);\n            rLinks[bond.atom1] = bond.atom2;\n            rLinks[bond.atom2] = bond.atom1;\n        }\n        brokenMolecule.deleteMarkedAtomsAndBonds();\n        const nbFragments = brokenMolecule.getFragmentNumbers(fragmentMap);\n        for (let i = 0; i < nbFragments; i++) {\n            const result = {};\n            if (calculateHoseCodes) {\n                result.hoses = (0, openchemlib_utils_1.getHoseCodesForAtoms)(molecule, atoms);\n            }\n            result.atomMap = [];\n            let includeAtom = fragmentMap.map((id) => {\n                return id === i;\n            });\n            let fragment = new Molecule(0, 0);\n            let atomMap = [];\n            brokenMolecule.copyMoleculeByAtoms(fragment, includeAtom, false, atomMap);\n            // if includeAtom has more then 3 true all true should become false and all false should become true\n            for (let j = 0; j < atomMap.length; j++) {\n                if (fragment.getAtomCustomLabel(atomMap[j]) === '*') {\n                    result.atomMap.push(j);\n                    if (rLinks[j] !== undefined) {\n                        fragment.addBond(atomMap[j], fragment.addAtom(154));\n                    }\n                }\n            }\n            fragment.removeAtomCustomLabels();\n            fragment.setFragment(false);\n            //      console.log(fragment.getIDCode(), getMF(fragment).mf);\n            result.idCode = fragment.getIDCode();\n            result.parentIDCode = parentIDCode;\n            result.cleavedBonds = ringBonds.bonds;\n            result.mfInfo = new mf_parser_1.MF((0, openchemlib_utils_1.getMF)(fragment).mf.replace(/R[1-9]?/, '')).getInfo();\n            result.fragmentType = 'cyclic';\n            fragmentationResults.push(result);\n        }\n    }\n    fragmentationResults = fragmentationResults.sort((a, b) => {\n        return a.mfInfo.monoisotopicMass - b.mfInfo.monoisotopicMass;\n    });\n    return fragmentationResults;\n}\n//# sourceMappingURL=fragmentRings.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fragment = fragment;\nconst mf_parser_1 = require(\"mf-parser\");\nconst openchemlib_utils_1 = require(\"openchemlib-utils\");\nconst fragmentAcyclicBonds_js_1 = require(\"./fragmentAcyclicBonds.js\");\nconst fragmentRings_js_1 = require(\"./fragmentRings.js\");\n/**\n * This function fragment both acyclic and cyclic bonds of the molecule\n * @param {import('openchemlib').Molecule} molecule - The OCL molecule to be fragmented\n * @param {object} [options={}]\n * @param {boolean} [options.calculateHoseCodes=false] - calculating hose code for bonds is quite time consuming\n * @param {boolean} [options.cyclic=true] - calculate cyclic fragmentation\n * @param {boolean} [options.acyclic=true] - calculate acyclic fragmentation\n * @param {boolean} [options.full=true] - calculate the molecular formula of the full molecule\n * @returns {object} In-Silico fragmentation results\n */\nfunction fragment(molecule, options = {}) {\n    const { cyclic = true, acyclic = true, full = true, calculateHoseCodes = false, } = options;\n    const parentIDCode = molecule.getIDCode();\n    let molecularIon = full\n        ? [\n            {\n                idCode: parentIDCode,\n                parentIDCode,\n                mfInfo: new mf_parser_1.MF((0, openchemlib_utils_1.getMF)(molecule).mf).getInfo(),\n                fragmentType: 'molecule',\n            },\n        ]\n        : [];\n    let acyclicBonds = acyclic\n        ? (0, fragmentAcyclicBonds_js_1.fragmentAcyclicBonds)(molecule, { calculateHoseCodes, parentIDCode })\n        : [];\n    let cyclicBonds = cyclic\n        ? (0, fragmentRings_js_1.fragmentRings)(molecule, { calculateHoseCodes, parentIDCode })\n        : [];\n    let result = [...molecularIon, ...acyclicBonds, ...cyclicBonds];\n    return result.sort((a, b) => a.mfInfo.monoisotopicMass - b.mfInfo.monoisotopicMass);\n}\n//# sourceMappingURL=fragment.js.map","var NP=class{copyMolecule(Dt){let Ht=Dt.getIDCodeAndCoordinates();navigator.clipboard.writeText(`${Ht.idCode} ${Ht.coordinates}`)}pasteMolecule(){return null}};var Lu=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",zA=new Uint8Array(256);for(let k=0;k<Lu.length;k++)zA[Lu.charCodeAt(k)]=k;function Uu(k){let Dt=k.length*.75,Ht=k.length,Vt,Zt=0,H1,Ot,Q1,D1;k.at(-1)===\"=\"&&(Dt--,k.at(-2)===\"=\"&&Dt--);let R1=new ArrayBuffer(Dt),p1=new Uint8Array(R1);for(Vt=0;Vt<Ht;Vt+=4)H1=zA[k.charCodeAt(Vt)],Ot=zA[k.charCodeAt(Vt+1)],Q1=zA[k.charCodeAt(Vt+2)],D1=zA[k.charCodeAt(Vt+3)],p1[Zt++]=H1<<2|Ot>>4,p1[Zt++]=(Ot&15)<<4|Q1>>2,p1[Zt++]=(Q1&3)<<6|D1&63;return R1}function xP(k){return k.toString(16).padStart(2,\"0\")}var Xe=globalThis.devicePixelRatio||1;var $n=class{constructor(Dt){this.ctx=Dt,this.ctx.textAlign=\"left\",this.ctx.textBaseline=\"top\",this.currentFontSize=12,this.currentFont=\"12px sans-serif\",this.ctx.font=this.currentFont,this.currentColor=\"#000000\",this.currentLineWidth=1,this.canvasCache=new Map}clearRect(Dt,Ht,Vt,Zt){this.ctx.clearRect(Dt,Ht,Vt,Zt)}getBackgroundRGB(){return 16777215}getForegroundRGB(){return 0}getSelectionBackgroundRGB(){return 12310268}getLineWidth(){return this.currentLineWidth}setRGB(Dt){let Ht=Dt>>>16&255,Vt=Dt>>>8&255,Zt=Dt>>>0&255;this.currentColor=`#${xP(Ht)}${xP(Vt)}${xP(Zt)}`,this.ctx.fillStyle=this.currentColor,this.ctx.strokeStyle=this.currentColor}setFont(Dt,Ht,Vt){this.currentFontSize=Dt,this.currentFont=`${Ht?\"bold\":\"\"} ${Vt?\"italic\":\"\"} ${Dt}px sans-serif`,this.ctx.font=this.currentFont}getFontSize(){return this.currentFontSize}getBounds(Dt){let Ht=this.ctx.measureText(Dt);return{x:Ht.actualBoundingBoxLeft,y:Ht.actualBoundingBoxAscent,width:Ht.actualBoundingBoxRight,height:Ht.actualBoundingBoxAscent}}drawString(Dt,Ht,Vt){this.ctx.fillText(Vt,Dt,Ht)}drawCenteredString(Dt,Ht,Vt){this.ctx.textAlign=\"center\",this.ctx.textBaseline=\"middle\",this.ctx.fillText(Vt,Dt,Ht),this.ctx.textAlign=\"left\",this.ctx.textBaseline=\"top\"}setLineWidth(Dt){this.currentLineWidth=Dt,this.ctx.lineWidth=Dt}fillRectangle(Dt,Ht,Vt,Zt){this.ctx.fillRect(Dt,Ht,Vt,Zt)}fillCircle(Dt,Ht,Vt){let Zt=Vt/2;this.ctx.beginPath(),this.ctx.arc(Dt+Zt,Ht+Zt,Zt,0,2*Math.PI),this.ctx.fill()}drawLine(Dt,Ht,Vt,Zt){this.ctx.beginPath(),this.ctx.moveTo(Dt,Ht),this.ctx.lineTo(Vt,Zt),this.ctx.stroke()}drawPolygon(Dt){this.ctx.beginPath(),this.ctx.moveTo(Dt.getX(0),Dt.getY(0));for(let Ht=1;Ht<Dt.getSize();Ht++)this.ctx.lineTo(Dt.getX(Ht),Dt.getY(Ht));this.ctx.stroke()}drawRectangle(Dt,Ht,Vt,Zt){this.ctx.strokeRect(Dt,Ht,Vt,Zt)}fillPolygon(Dt){this.ctx.beginPath(),this.ctx.moveTo(Dt.getX(0),Dt.getY(0));for(let Ht=1;Ht<Dt.getSize();Ht++)this.ctx.lineTo(Dt.getX(Ht),Dt.getY(Ht));this.ctx.fill()}drawImage(Dt,Ht,Vt,Zt,H1,Ot,Q1,D1,R1){if(arguments.length!==9)throw new Error(`drawImage call with ${arguments.length} arguments unimplemented`);let p1=this.canvasCache.get(Dt);if(!p1){p1=document.createElement(\"canvas\");let N1=Dt.imageData;p1.width=N1.width,p1.height=N1.height;let b1=p1.getContext(\"2d\");b1.globalAlpha=0,b1.putImageData(N1,0,0),this.canvasCache.set(Dt,p1)}this.ctx.drawImage(p1,Ht,Vt,Zt,H1,Ot,Q1,D1,R1)}isDarkBackground(){return!1}};var GP=class{constructor(Dt,Ht){this.canvasElement=Dt,this.changeListener=Ht,this.drawContext=new $n(this.canvasElement.getContext(\"2d\"))}getBackgroundRGB(){return 16777215}getCanvasWidth(){return this.canvasElement.width}getCanvasHeight(){return this.canvasElement.height}getDrawContext(){return this.drawContext}onChange(Dt,Ht){this.changeListener?.({what:Dt,isUserEvent:Ht})}getClipboardHandler(){return new NP}};var e2=`\n/* We can customize editor styles here. */\n`,R8;function yu(){if(R8)return R8;let k=new CSSStyleSheet;return k.replaceSync(e2),R8=k,k}function S8(k,Dt,Ht){let Vt=-1;function Zt(Ot,Q1,D1=0){Q1.button>0||Dt.fireMouseEvent(Ot,Q1.button+1,D1,Math.round(Q1.offsetX*Xe),Math.round(Q1.offsetY*Xe),Q1.shiftKey,Q1.ctrlKey,Q1.altKey,Q1.button===2)}k.addEventListener(\"pointerdown\",Ot=>{Vt===-1&&(Vt=Ot.pointerId,Zt(Ht.MOUSE_EVENT_PRESSED,Ot))});function H1(Ot){Vt===Ot.pointerId&&(Vt=-1,Zt(Ht.MOUSE_EVENT_RELEASED,Ot))}return document.addEventListener(\"pointerup\",H1),k.addEventListener(\"click\",Ot=>{Zt(Ht.MOUSE_EVENT_CLICKED,Ot,Ot.detail)}),k.addEventListener(\"pointerenter\",Ot=>{Zt(Ht.MOUSE_EVENT_ENTERED,Ot)}),k.addEventListener(\"pointerleave\",Ot=>{Zt(Ht.MOUSE_EVENT_EXITED,Ot)}),k.addEventListener(\"pointermove\",Ot=>{Vt!==-1?Vt===Ot.pointerId&&Zt(Ht.MOUSE_EVENT_DRAGGED,Ot):Zt(Ht.MOUSE_EVENT_MOVED,Ot)}),()=>{document.removeEventListener(\"pointerup\",H1)}}function wu(k,Dt,Ht,Vt,Zt){let H1=typeof navigator<\"u\"&&navigator.platform===\"MacIntel\",Ot=D1=>H1&&D1.metaKey||!H1&&D1.ctrlKey;function Q1(D1,R1){let p1=n2(R1,Vt);p1!==null&&Ht.fireKeyEvent(D1,p1,R1.altKey,R1.ctrlKey,R1.shiftKey,Ot(R1))}return Dt.addEventListener(\"keydown\",D1=>{Ot(D1)&&D1.key===\"c\"||Ot(D1)&&D1.key===\"v\"||Q1(Vt.KEY_EVENT_PRESSED,D1)}),Dt.addEventListener(\"keyup\",D1=>{Q1(Vt.KEY_EVENT_RELEASED,D1)}),k.addEventListener(\"paste\",D1=>{let R1=D1.clipboardData.getData(\"text\"),p1=Zt.fromText(R1);p1&&p1.getAllAtoms()>0&&Ht.addPastedOrDropped(p1)}),()=>{}}function n2(k,Dt){switch(k.key){case\"Control\":return Dt.KEY_CTRL;case\"Alt\":return Dt.KEY_ALT;case\"Shift\":return Dt.KEY_SHIFT;case\"Delete\":case\"Backspace\":return Dt.KEY_DELETE;case\"F1\":return Dt.KEY_HELP;case\"Escape\":return Dt.KEY_ESCAPE;case\"Enter\":return Dt.KEY_ENTER;default:return k.key.length===1?k.key.codePointAt(0):null}}var OP=class{constructor(Dt){this.canvasElement=Dt,this.drawContext=new $n(this.canvasElement.getContext(\"2d\"))}setDimensions(Dt,Ht){this.canvasElement.width=Dt,this.canvasElement.style.width=`${Dt/Xe}px`,this.canvasElement.height=Ht,this.canvasElement.style.height=`${Ht/Xe}px`}getDrawContext(){return this.drawContext}getBackgroundRGB(){return 16777215}getForegroundRGB(){return 0}};var su={\"chain.png\":\"url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAQAAABKfvVzAAAB2UlEQVR4XmNgGJmAkYGJgQULZGXAhCygIGICQg4GdjTIARRDh5xAEQwNKYzXeK4xY1Oez3SNfz8TmoYUxq+6m9bfqLjDI4tmfhzLff9VR17FoWhwZXpkOm2v1C+79+cbD4gga8lneuhrfdv6/+ItSBpSGB+bTDos9IfzP9N/k3cX6+7wwByWz/TWR/E1w/+kO+8j4BpSGL9rz9wh+Efs14TF3heY/tu/vlF2hxtkSxzLY2/FVyz/om69jT0G8kM6QyNDM9MT41nbZX9y/J/ct1/4iU7aIYb/9q8uVx0UbmF64mV7i/1/0s0HSVM5dRgYrjB84/8U+bh80iH+34z/17Xc51ZhUGX8qpkK1GL6+krltyClVyz/c+69C57CwQsK1v+Sl9rdvgr8Z/7P9WvKxNs8fsD44ABqeWLkdYHhv9sL8e+s/xJuv4k4yajEAI6H/+6llxn+g6DUh75gSXhgugEdmXIUJB5150HSFA59oHKIBteGSyBhpv+q9wsVQaZDICdDKuNnneRjCY9exU3l5AUrh2gQelAQ/8Tgve2Tb25NjIgYBkmnMl5Sumi+hQmiGKqhgaGB57Pts4Bfek0sjkjmIxQhs8BpiZFBh0EPCLGlTnQxcGod8gAAp9es6fCW8G8AAAAASUVORK5CYII=)\",\"eraser.png\":\"url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAQAAABKfvVzAAAC1UlEQVR4XnWU309SYRjHn8OYTTM3zTmjC8NFFBR10dJu27wx11VX/QNdeGebTsvua93mRbUmLhURzYgKRZRJUJLibLPpRDCZC3/b1AMc4Tw97+EAR2e8FzD4fr7v53nPOQDCDkT/s2KAKiwROOXvFP8JLnDDGHhgArzgg28wCQGYgiDMw6E+1pY2rsECLEIIIrAC1O2CV/AWzPAOLGCFQbDDJ/hC+CQktU5bXWJoMGlaVv0iPAy/GeCmeBf0QB/YYECKO6kkzAl6Z/+t+BmsSJotgmmN4lFYZcA4tfdQez+1D8Fnio+S1oHe5TAcFuJHVBNit4nGLYrHGOCBbin+ntodMEzxKMkMWy8LpfgSEUN4niC7TTBtqzYYMCG3Z9xHadgD/bC1hi+U4uw1TkhFsqs3adpngJdGHSAZB8VHYAZ4vdt+RSjED3KcvYWYWMJuFY0E+MjdQe5MZgYE7YhFL8soCJzDU1iKwdcE+HOjBoG/NNJbq5DJI40EPNiIPCLgO/Wzk4lS3D2kPyaTQe5hETZsLDfxRRQLkLuLDjJd7u8wJs/mRs22J7CR4re3Qq3xIpENPUUHG+biuqX2UVsVX41epTp9ZjINm0ttqTIEZECQboK0ztd/Ya951t+nRi2GFYgksxluSlO7BMTYLVblMVcmOOTEZ9N+i4YvkREmAySz2JaNE4CqtM5jvrZHcbbE5lmLU8NrJTEmc3drsT1VlmmXdsCbgTdSu7wKUi2zPqsaq7GWZCjeJBZnwxlAN9dRyecBtsvzH/4+DV+MNdsLT4/GJSU0jHde3T2KtMxYnA8X5tvT5cp2eehDLnVxrPPoLgWpx4Hd+8Lp/Zx7boYoe/g40eDtViIF6Se+xPX8qPl96DqECImrRMOY2fg3e1atwd16UX1cR75wEXr4VmGdxL52atbpX2HnxfTenfiJcelKr9CjvQp/IMWJ57AO62ndOKk7890/iSWBU4XaZc0AAAAASUVORK5CYII=)\",\"fist.png\":\"url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAQAAABKfvVzAAABj0lEQVR4Xu2S3yuDYRTHz7IZsfdCUrYLG4VCpJV6d0mS/A1zg79ArRArP4q5s4ulVousFCn/gX/g5WK7wkZMzIXMxjZ793XeMdn7vpM/wDn1PD1P53PO95znIfq3rwmYyU5tZPr7PJYoTjGaZ8xB1t+xZQqyP60iAEeWsThFGKpqbiE9CRECrnCHLnTAj17QbLV4E3mFXALbcOAGSXRiClnMgZLkZR/QYg0UEpDBDuxI4IHzT6OADdRiEK2gE12gBWmWE8Yj7weQIGOT650zaoiqAVtjDx2KeEWR8xZ4lUt+jEWkWJxJBYgkWa7NLy5WXWl5FilzhfoKwEAzzkwYI3DhTQUoVYpYR10FYCTPaDbJ2heQUwGfR0kFELmt6Utu9Jmz6dmFpmmR7v141w1XBiCBNFNacyKmCxT59kgHGBIQ4g7UkpRzESuwaCoQ+YZxqwGUGaUwrvvStqazLeRLj/bTZUTQB5rQfg1jjac9e8qAzFgZKbDMALpj1Kz3Z0WKjiGIfex++x6H98PgK4d/APiDpdwStyBoAAAAAElFTkSuQmCC)\",\"hand.png\":\"url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAQAAABKfvVzAAAB50lEQVR4Xq2TwUsUcRzF3yy52TboHiKVLBCElb1479g5kgKPCkKs4ME6eAiiP0GELileStew6NLJq5Sihw6BG2VlECymB2PVXd10Zl7vN+OuOjNLl35fZhiY+fzee9/vb4D/tAow9fafu90BsqrvnXzNBwSTTBAZ2I3BkSbeYBMzLHNRn9/nEFHCvYZAutDHDfb5wDvanOVnoozBhkBzIUeHOQEHfO8DW0QV0xjC3VjoUh2onAC/ZPAme4giemMQo+BKoaeusCmdSa41MmYL8HxLgUKe27q/UKLzSSxcwUOMwk7VgTKX6sBz7oeA61hJHSUP8ST1raZQA7Z8hb0QkO1WE+d5lZdlx+UbTsjSR95i0bc0E7GUzfIHdziouRqFPzwU5ii4IzOP+SFiqe3i8jyP1A1bgKPyVGa5/M2S7iaDdWZ8KUwNe1Uus923FHx8ujwZPA9YGO48+CK/Ywp4un8N8SIZgG78fCTvFV1n9w+ePe6GFMzMJ7u4zuOInQDYYaKcDB3Ba63FGQWPLk8mt2MAWKv96kk0sKM2TBFfkQ4fvkx6fyHSH9NalwO0PkXPaktirt8rhRpqelblbV6IASzkmivP9NrEdE9AM/FXbCPG4v+6p+3VcZ2ql5zTZSqv+XcQ6+gKgL8a/RiIJPdySgAAAABJRU5ErkJggg==)\",\"handPlus.png\":\"url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAQAAABKfvVzAAACAUlEQVR4Xq2Tz0sUcRjGn1lytW2wPUQamSAIK3vp7kk6i1LgMUGIFTqUBw9BiPsPhNAlpUtuKhpdOnVUKqlDh6CNsh+CsJQdjC13ddOZeXq+M7uTzu7SpXmZLwvzfr7P8/5Y4D89eZh48s/bhoC04nMXH/EmwThjRAp2c/B6C7vZwhRLXFP6NY4RRVxpCiTzw/zCYR94RpsP+Z4oYbQp0JbP0GFGwB6f+8A2UcF9jOFyQ+hkCJSrwDcZ7GcfUcDFBohRcKXQFyp8lc4s3zYzZgvwfEuBwgK/65xXRccrsXAGE7gBOxECJb4IgQfcjQAX8DJxEN/HVOJTTaEGbPsKvyJAuldNXOZZnpIdl485I0tveIkF31KuzlI6zU3ucFRzNQq/uS/MUeGOzNzm6zpLHa3ryzxQN2wBjsIT4JE6f7Co09RgHRlfAnPjXoXr7PQtmdSsNqn2eDJ4HLAw3rX3QX4nVaC534sA0bYCvdi6Je9lveb+mkLw2+PPiIKZ+WwPN3ioj9MyczQMsMNYKR5ZwfOnCzkVTq7KTpYDgrKCp5XuyGw9AOvViHoSmPhryaS7nCM+IhldvlRy92nYmaBLQWtdXqX1rn5X22OLI16xihhjBjA9q3CQJxoAFjJt5Xv6bBLdKmgmvsIOYrLxv+5uZ+WOtmqJi3pNLGj+54gN9ATAH0reBFwT+FQbAAAAAElFTkSuQmCC)\",\"invisible.png\":\"url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAQAAABKfvVzAAACjUlEQVR4XnWTS09TURSF178wMUExvhIfiY+0Q6MThwwEHYk6MODAqHHgzD9gHDgWYhQBAUWMqY/SogSkCGJJNAiFUiyV2qqURkFa7cPvnJZiBXMH7Tl3rbXX2ntf5bWgyH+emPI8v8reAn8nj3r0Qr3qU78GNKghDWtEfk3ot2LKKq6AphTUjGYF26ObuqU7alabOvRQj/VEz6APKS23jvI/rY/6AD2ksCH0AG9Sq9r1QJ0W/hyREFbcOqQNcqiL/3FuIpozhJeot6J+H/VHegrci60lSA7t0VVtlRNqTvPAY4bQqxYL70LdxSsvd2l164B2qVHLVN4L0U2VhL4aQl9RveDdS9gl4IcBNWpRUShNUJxUT3OG0E/UTo4u4N0a1U9SHdRu3QOQIOw8N+0Yc/A2ZwgDeHfh3ZgZpbBH+zDTAPy7Jok6qU/K0Jht2k91CL5SVD9aHh1BvYHiCxYe1nV9w9h5bVcdk4DwGn3TmYg1Y9Rb8P2FQYVQbOM+qjPaDDwMguMw3j00Mst0narUDaUgBICPI5VgAhe5rUVguZBhhMaGOEzrrU6pQpfpdoqeB8k2hvoF7UB9mhxmsyD4WYIs0c/ifEKnoVxSEsptQke5rdQ5vGdRt4SYXTEf2lWq1l1s1GojlDiAgpmTLN4KHEKegw+NKvsco8oglApd0XtoOzEzhZmCuq2QJ7RRX3lqmO84xjaxGltUj/dVcJEwhuIqwVRptsZMZwL/wG2FPIHryijVVBnUNdJlS1ZKlmJEzkApr1JDj5KsyeJaQsR+fDlW8G/KCWyl1tgpziEIxczwVcnYcT6p5LpwO7gZ5jzH7mT0hmbW0+IO/UBixXX5L4RZlmpOn8u6vT7Y3P4BKLGmkBK1qvgAAAAASUVORK5CYII=)\",\"lasso.png\":\"url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAQAAABKfvVzAAADg0lEQVR4Xk2UXWxTZRjHn7XYfWhh4DKlIFLRdlucImbGr2gEwYwsAjGRXXihRlTOFrOoF0RcdWwhEVnQdgOmbgzoliEhAZJlvZwdMQg6No/U2IYOWVrK1q1d19q1Pef8fU7bsy3/nIvznv/ved/n47xEZKDivNpK8RoE6XC4J9gX7A/2hXukwxCwta1UcxhUu4PcLFHnqZnaf+/E0FhTqDpiiaqqjjSFhsbvnZja76kRdarLQRzbTSjAuozgczaHVoJYhShX1krlSmH2bSWaQz5nRsA6MJQDrHMtx0Y3y4QS7Eo0eTpG3K5rP7tdHSNNnl2JNQxtlo+NzrXAmgXEDcnWA/5ihbAtOeyKtKf3wmIvs6+2l8GS3hv51u3aliQUKwf8yVZxA2GNIvSIBCNaJmPt/jrR6KZfyL6omQdQF2tvmTTyPt2iIhDq/f1mth/1LtjCVTa9QAIN8dEl8tK8mgJBj6oF21GvEWb4+wlft08Sds+FHbPmDl2A/mOl2Ran7SQylkV0MIcdu+cI7J3utUb0aL2q1DZSlDiRvObpKdpCZymVf1dqW6/qYY1QsM8SXYULw3jcq8XLWlSghOrJpYUwXxpeDUuUZn6smNWheUx6l7uxGD8HrKXz9A2doQidJnnPoWt6VEQItm4/4aX0LSd2wLCEqMB6+otmqYt8K1LVd3+oTRA6/yXUTXe+mCHsjE048QbWw8R6EHoNAMlGbA+d/PSOAZXKZC9tKbr19m+DFZztc/E/B2/3jp//x5logyC/8oyBd9DBIjeODj4/X8hTcO4PZZ/a6RKpYfBKWb6CuTQ+i41elD5A5cLHga7jPjOvWDIDv6e/EE25WXo49N0mPmF21OR3wm/FTahMf3/dNtLoe4GPa1LeC9y4xGUxacNnvHnykfTG+IWxJzOlyhnPzHH7bUJRvgINiSuu+CE8i2Jw8NwORq/jidRDktMz4COU46twnVyEx+brwxfFQDc+weu4P0drQFHq/Z+uP73UZq7vh8FAV6oeL2OTZl4OFMCUaZw4NXDjyNTBWENylaLDwXFpH+5Tm5mku4sN1XZQFwrkR+OvyjvxpvT5kTuEHcmpDh5i/qIQ/1l5LQd4RifUOS1A1XTnRq76r5dhzRlTPBxx7vlSDstmiA0r8NGXUcLZm6jJARkGZvnJAtqtod4JmhJbT/9tiZ4bS9QsX83dGv8DIrFVpnd+f4UAAAAASUVORK5CYII=)\",\"lassoPlus.png\":\"url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAQAAABKfvVzAAADiklEQVR4XlVUbWxTVRh+12K3oYWBy9SCSAHbbXGRaGb8SoygmJFFICayH/5AIyrdYhb1BxFXHWswQRa03WVM3RzYjaEhYcZl/Tk6QhB0bN62xjV0yNJStm7tutbetvfex3N7e3XmyUnuOXme9+O8zz1EZKDyIhwVeBE28VisLzIQGYwMxPrEY7Bhh6NCYxgUuou8DLwuUD936G736GRrtC5uSSioi7dGR6fuds8dCtTzOoXlIhbbSyjBhrwt6G6LrgExlKJKfkiskksLuzVoiwbdeRs2gIlUgXWp/eTEdomwGnvSrYGuca/n2g9eT9d4a2BPej0TbZdOTiy1w1oQ8JsyHYdD5TJhZ2bME+/M7YfFWelc56yEJbc//oXXszNDKJcPhzId/CbCetnWxxOMaJ9NdoYaeaOXLpHg8HOCw0lOWrgPjcnO9lkjy9PLyzZCU2jQzOgnpgV7rNaut5GNRsnPEXzcstICQY9awX5i2ggzQoOEzzpnCXuXYq5Fc5cuTH8z5IoCnkRVooM55tq7RGDc+X5rXI+Oq3JDCyVILhTj54bPEYbPKV+CoyAhuaHjqh7WOEUGLIm1uDCGbdOFeEoxK+Hjilvz8Ng6WBK08E31og5tk+IBNg3GFBw+zlfMoHwJjrMUpzMk7Tt6TY/qOMHeGyI8l7vpxi4YtOBq0xvJR4vUQ8FV2bo7XzekCdxfhMZ57tk8YXdyxo1XsBEmhvv93ZoAJBnxcvT0B7cNqJFn++mJspuv/zJSzcb2VOr3kVv9Uz/+6U47BI/vZ+FzlkEHi9QyMfL0cilzwfnf5IPKpFeLzSOXK4s3qDb8YXLiovg2aoT3wj2ngmZ2YskP/Zr7mDepXnow+uVWVmHBatIbsddSJtTkvrpuH28JPsPKNclvhm8Ms2sxaeYz+k8/nNucujD5WL5CPhtYOOW8RSgr3kBz+rIndRRPohwsuJrBOO16NPuA6A4MBQlV+DTWKJVhy3JT7CIf7sX7eAn3qmpNUJZ969vrj7PGNRjwTiTck23C89iqkVcKSmDKt8x8N3Tj+NyRZHNmrazDkSnxIO5RhpmhO/9G0jIoByXSI6kXpN14Vfzo+G3CrsxcFzOx4iJif1YRKwXMozNssZi189xmdutXfoJVJWaZOVJs5v/18H+/rcK7nyQI3/tRrwryTLDIVkGgvRrKm6AhvePMH5bE+cl0/cpT9dX4B08ibwJFFp9KAAAAAElFTkSuQmCC)\",\"pointingHand.png\":\"url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAADe0lEQVR4Xq2V+yvrYRzHnWwuaaUst9mY21iyHcVySghxJJLLDy7L2Y9S4geHThx+5ISc0vCDf0AS6fj1rPxkRJ2dJjvtjNolt1y+NMY+5/N5yonZbIunvm179nyf1/N+fy5PSMgLo6OjwxAWFgaxsbHQ2NhonJiYELy0Pqj/CgoKPqSmpjoGBgZgfHwciouLna2tre+D2uSlxXK5XJ2UlMTt7e2B2WyGjIwMiImJ+fhmADy9OjMzk7PZbHB0dAT4HXp6en6+GSA5OVktk8k4u90Ox8fHTEF3d/fvNwNIpVKm4AFACgYHB//Mzc0pUZ3o1SBPgEKhgKysLFd5ebkdlekTExMLUKUU56VVVVVhQQM9AdnZ2dDe3g5bW1tQU1MDKSkpNrTtr0qlsvT3939/NSA9PR2mp6fh7u4OhoaGWG2gXdDZ2Qnx8fFWBH3CR4P1IvMFe4feqoqKir7k5OQoSQEF2Wq1siwiwMzMDLjdbhgeHoa8vDw4OztjiiIiIqCyshLq6uoA39mRSCSKZ5DQ0FAxnuQXeutG+Yb8/Hwt1gIDHB4eMsDs7Czc399TsAFPCxzHwe7uLojFYlhdXQWDwQBKpZLDfdTeVMhra2vBaDRCV1cX2zAtLQ0IcHp6yuYWFxeZRfPz89DX18cAVIgYbNje3oaTkxPAJODwsN4BLS0tTPbGxgagTBCJRECFdnt7C+fn53B9fc0UXF1dweXlJbhcLnA4HAxmsVhYvVRUVHA8Hu85IDIyUl5SUgImk4mduKmp6T+ANiXvHz+Ag+ZJEYHpkxTgHt4VCIVCCTY009TUFNzc3MDk5CTlPRwcHLCN/A2CE6C0tNQ7IDw8nI8Z8LWhoeGWFGxubkJvby+THSyAz+d7jUEIpp46ISGB0+l0zHeKh9PpDAhACimd0QUuKirKO4BSC3uOTqPRwMXFBQvig/+BWER9C+8RLjo62jcAPayhvqPX6xmAgkf++hu0huKF2cdhivsGjIyMCAsLC81jY2PMHgIEMgiwvr4OcXFxHNaCbwDZ1NbW9q2srAz29/fZ6QOB0LrR0VHAdPd/ZwgEAhF6uaPVap/EwbMOHpTRPGUbKgfsBv5vPawJXn19/WfsR04qPMoozzg8hlEirK2tMUBzc3Pg93Zubq6uurqa9aCVlZUnz/LyMvu9tLQECwsLgPVD1f/Ds8n9AyubuM4FiwqZAAAAAElFTkSuQmCC)\",\"rect.png\":\"url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAQAAABKfvVzAAACc0lEQVR4Xo2UT0hUURTGf7uipMy8GbUwigx0WbiwpCgQKmgl1CYj3Plahtg/eguFUIoamNxUCEFCGlIgEhSORmQRNeVMSkhpWcSU1KSOQ9i8vvfmpiMZOB8Xzjv3fPPd8+dertPHQICX/OAVnTRTz1GOaNXL7pQvSdTG9KHwCVJMyzlMFw1UsJFC8lmtVSi7Qr4u7SUVk1KsmCkyZtJETchUmTKh3NSYk6ZBq0a276nSXtRMGc+kfMIkiRY3shQkWiZ9wjjxMN5SEAuPQ5qegBALe07a+eiMCj9lxZ0ZJ+N483A9oQf6qbWED6rITW4IcQGaGJuT/Y0f7rm1cJliS+jnLjNkAviEDXTwVbZ/2gwjobLESKgY6iiwhI5gyw/N/T2zKtljF0CN6p39SAZbCVyhTpwVLKOUM8wGmn4lEy35yGH+Jp1TKF9nrRp3mzbOMcp9m0MhtLPrvwRDr/6/mwda6cZ4ON24Hd5z1RISfGNIAdmDnWabtHtlzxLjtY1pgucM2o8rPOUhj+UZY0qDWGEJad5y0ca8mO90LLyKA+yjkirN6QWeaO0kwjvucZw8m0MwGinLzmelUi1nP3vYQrUCH3GNY5Qp+UpbpelcQjNnWcchVWRQhc2jiPWsYTl7aZRetvTBtP5VaJW7la0c5g4npFbCbk5xSzlNKPGRUKk6vYCwScIH2ax2lagH1VJ6wxdbNVUumKUFhGFNaMxiyEk4v3Jn1VmE4LluBK804W/5zdDA/+OxCtk58dzeNjcS7vYJ/v1bzGMJnm7rPDLmkzlvdph2E5/zRs13M2BS/p3OvhoLkVSBi7jE5zn/VPCy+K/GH86K+gV5WsL6AAAAAElFTkSuQmCC)\",\"rectPlus.png\":\"url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAQAAABKfvVzAAACi0lEQVR4Xo2UT0hUQRzHP6c2KmrTnYoKjCAP+45FB0uKAqECT0FdMsKbr2OIUdE76EUpamHzUmoEGWmIgUnQn9UOWURp7ksJKSuLeCW1qesStq/fvB11lzr4vgzM/Ob3md+b3/xmuEYfA4Fe8ZMhOmmklmMclVYr/U6xpRg0Pn2I+yRpZsQ4Shd1lLGJCGHWSItIv0xsXTKXEp+0+AqZJqum1KCKqQpliXaqKnVK1Umrkr62VMjcoJpWvkprYAqvyUksRV7TlAYmcOP4S1EyPgEZegMgGfftjP3JHhf9kp5rz9pZ21+U44t6oZ9qA3yUjNygReSKoIEPC2H/oN19pxouUWKAfrqZJRtIAxvp4Jv09d9mGYtZ3lisBGooMkBHMKVd5QsRlSbfcxMl99tFUCX5zg1SwZSHI6qJ4q+wNHWGuSCmzqTXFEYMan7TeYlyBSi2ItymjXOMc9/sIQLt7C4AMiE36ka7K/HDlUXR1uh0qIcH9JCpd+OZ+u3wnisG8PjOCEOydr6S1hxJXhufBnjBsBlc5hkPeRS6bt2zbuUiWK1WJpThLReMz8vFk07GV3OQ/ZRTIXWqN11t7SLBO+5yglVmD0FppA0dZqWkcScH2MtmAVqsJ1zlOJZUbbnJ0kw+0MhZ1lEpGRnGCS2zVGgDa1nOPup5ahYNqnU+QrOYm9nGEe5wUqKVsofT3JRdTspZjMWictIFwBYJfIitcsClFHNYIr3hq7iapAW1VACMSoUmjUZsz/6dX6t2rvgKAN9xEvhRT0/oZaXg/7EYIFcnvvO4zUnEezSg79//LAbw5bYuKqs+q/Nqh2pX7oJ1UP1QAyqt73Tu1ShUShK8not8WbBPBy+LfjX+AjC0Avv8MQHTAAAAAElFTkSuQmCC)\",\"zoom.png\":\"url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAQAAABKfvVzAAACiUlEQVR4XpVTTUgUYRh+nJWCxUsNevBiYGm7UjAnFyoI9ORKSxt4a71Ei9I10EPg0VO7hOE1ikQSofXiYv6QRX9bkTAjbbM/B2mz8id3Z2f/ZvbtndR0NYn9XuYbPuZ55n3f730efMQCZjCLOX4/xyJe4BXe4C3e4QNi0JDCBu8JRPkURxIMm8BjjOMJJvEUU8jadUn36D79Zs5X8JhSyb6AX/iBzxxfLMIMwx/gIcYwXRMTNa86Mhrp23QXOwx3sW9zNKKOaF5NzAlrnCWBFXAx43jE8PeC0b4U9KstJmh/tJh+dSlotJeEDYZ/Bea5GAtudoZDkm5jcCP1poejd+XhaG+6kc82kvRwiDpLwha+A1RX8K4OaDfCU038UTQGk/GA2qO4lDbFpfbEA4NJ0QA1UThktOeFDBPOLd+/qF9PtOZBDi30LNU91FBfgz+rvmaoIdUVmnZo4CxLQU3cYsLJ7G1HebvqC7nIhHJ6G7y7mmsNKTQtGjbyq5p3Dnzv2au31i24QK35cEhpriQAzbUp92AS1GKqI7odL5F1jM9bzV7KzoyVLvfbDhKAoYZ4wGp/NFKU8Br6scS9VrM7Fw8a56/8A271ovb0pkF9m2UPy2AWGd/k4sYdpal/7+fH4cTxvaPsGo6C3EXysWYWQafIR2cqSnFyV237CM6ADOowyM8Si+xkkCsztB2RIYZCFT2QB1mYVdwSSSza/N85nD1qDl27cyA76EQ1k6bqtESiRagrXFsdyBxQq+ySnfIhtbJ6gHX2bBprQvmAHwKH/GDBmRCDyibP4Od/HLcNZ0KcCSnkmLQsKEd4mmvfgTMhybGCb0zI4RPb1bSbUtnDUvHz4yGJ7BUWx2+5Iu7Rc33AhQAAAABJRU5ErkJggg==)\"};var H8=Object.create(null),Tu=3/4,ZP=class{constructor(Dt){this.HOTSPOT_32=Dt.HOTSPOT_32,this.IMAGE_NAME_32=Dt.IMAGE_NAME_32,this.cPointerCursor=Dt.cPointerCursor,this.cTextCursor=Dt.cTextCursor}getCursor(Dt){if(H8[Dt])return H8[Dt];if(this.IMAGE_NAME_32[Dt])return this.buildCursor(Dt);switch(Dt){case this.cPointerCursor:return\"default\";case this.cTextCursor:return\"text\";default:throw new Error(`Unknown cursor: ${Dt}`)}}buildCursor(Dt){let Ht=this.IMAGE_NAME_32[Dt],Zt=`${su[Ht]} ${this.HOTSPOT_32[Dt*2]*Tu} ${this.HOTSPOT_32[Dt*2+1]*Tu}, default`;return H8[Dt]=Zt,Zt}};var JP=class{constructor(Dt,Ht){this.title=Dt,this.rootElement=Ht,this.elements=[],this.dialogElement=null}setLayout(Dt,Ht){this.hLayout=hu(Dt),this.vLayout=hu(Ht)}add(Dt,Ht,Vt,Zt,H1){this.elements.push({component:Dt,x:Ht,y:Vt,x2:Zt,y2:H1})}createTextField(Dt,Ht){return new z8(Dt,Ht)}createLabel(Dt){return new M8(Dt)}createComboBox(){return new V8}createCheckBox(Dt){return new q8(Dt)}setEventConsumer(Dt){this.consumer=Dt}showMessage(Dt){window.alert(Dt)}showDialog(){let Dt=document.createElement(\"dialog\"),Ht=this.rootElement.getBoundingClientRect();Object.assign(Dt.style,{position:\"absolute\",marginBlock:0,left:`${Ht.left}px`,right:`${document.body.parentElement.clientWidth-Ht.right}px`,top:`${this.rootElement.offsetTop+30}px`}),this.dialogElement=Dt,this.rootElement.getRootNode().append(Dt);let Vt=document.createElement(\"div\");Vt.style.display=\"grid\",Vt.style.gridTemplateColumns=this.hLayout,Vt.style.gridTemplateRows=this.vLayout,Dt.append(Vt);for(let{component:Q1,x:D1,y:R1,x2:p1,y2:N1}of this.elements){let b1=document.createElement(\"div\");p1===void 0?(b1.style.gridColumn=`${D1+1} / ${D1+2}`,b1.style.gridRow=`${R1+1} / ${R1+2}`):(b1.style.gridColumn=`${D1+1} / ${p1+2}`,b1.style.gridRow=`${R1+1} / ${N1+2}`),b1.append(Q1.getElement()),Vt.append(b1)}let Zt=document.createElement(\"div\");Zt.style.display=\"flex\",Zt.style.flexDirection=\"row-reverse\",Zt.style.gap=\"15px\";let H1=document.createElement(\"button\");H1.textContent=\"OK\",H1.addEventListener(\"click\",()=>{this.consumer.fireOk()}),Zt.append(H1);let Ot=document.createElement(\"button\");Ot.textContent=\"Cancel\",Ot.addEventListener(\"click\",()=>{this.consumer.fireCancel()}),Zt.append(Ot),Dt.append(Zt),Dt.showModal(),Dt.addEventListener(\"cancel\",()=>{this.consumer.fireCancel()})}disposeDialog(){this.dialogElement!==null&&(this.dialogElement.remove(),this.dialogElement=null)}},an=class{setEventHandler(Dt){this.eventHandler=Dt}fireEvent(Dt,Ht){this.eventHandler(Dt,Ht)}},M8=class extends an{constructor(Dt){super(),this.element=document.createElement(\"label\"),this.setText(Dt)}setText(Dt){this.element.textContent=Dt}getElement(){return this.element}},z8=class extends an{constructor(){super(),this.element=document.createElement(\"input\"),this.element.type=\"text\"}setText(Dt){this.element.value=Dt}getText(){return this.element.value}getElement(){return this.element}},V8=class extends an{constructor(){super(),this.element=document.createElement(\"select\"),this.element.addEventListener(\"change\",()=>{this.fireEvent(2,this.element.selectedIndex)})}setEnabled(Dt){this.element.disabled=!Dt}addItem(Dt){let Ht=document.createElement(\"option\");Ht.textContent=Dt,this.element.append(Ht)}getSelectedIndex(){return this.element.selectedIndex}setSelectedIndex(Dt){this.element.selectedIndex=Dt}setSelectedItem(Dt){let Ht=this.element.options;for(let Vt=0;Vt<Ht.length;Vt++)Ht[Vt].textContent===Dt&&(this.element.selectedIndex=Vt)}getSelectedItem(){return this.element.options[this.element.selectedIndex].textContent}removeAllItems(){this.element.innerHTML=\"\"}getElement(){return this.element}},q8=class extends an{constructor(Dt){super();let Ht=document.createElement(\"label\"),Vt=document.createElement(\"input\");Vt.type=\"checkbox\",Vt.addEventListener(\"change\",()=>{this.fireEvent(3,Vt.checked?1:0)}),Ht.append(Vt),Ht.append(Dt),this.element=Ht,this.checkBox=Vt}setEnabled(Dt){this.checkBox.disabled=!Dt}isSelected(){return this.checkBox.checked}setSelected(Dt){this.checkBox.checked=Dt}getElement(){return this.element}};function hu(k){return k.map(Dt=>Dt>0?`${Dt}px`:\"auto\").join(\" \")}var VA=class{constructor(Dt){this.imageData=Dt,this.dataView=new DataView(Dt.data.buffer)}getWidth(){return this.imageData.width}getHeight(){return this.imageData.height}getRGB(Dt,Ht){let Vt=this.dataView.getInt32((Ht*this.imageData.width+Dt)*4,!1);return(Vt&255)<<24|Vt>>>8}setRGB(Dt,Ht,Vt){let Zt=Vt>>>24&255,H1=Vt<<8|Zt;this.dataView.setInt32((Ht*this.imageData.width+Dt)*4,H1,!1)}toDataURL(){let Dt=document.createElement(\"canvas\"),Ht=Dt.getContext(\"2d\");return Dt.width=this.imageData.width,Dt.height=this.imageData.height,Ht.putImageData(this.imageData,0,0),Dt.toDataURL(\"image/png\")}};var KP=class{constructor(Dt,Ht,Vt){this.canvasElement=Dt,this.dialogRoot=Ht,this.JavaEditorArea=Vt}register(Dt){this.javaUiHelper=Dt,this.cursorManager=new ZP(this.JavaEditorArea,Dt)}grabFocus(){this.canvasElement.focus({preventScroll:!0})}setCursor(Dt){this.canvasElement.style.cursor=this.cursorManager.getCursor(Dt)}showHelpDialog(){}createImage(Dt,Ht){let Vt=new ImageData(Dt,Ht);return new VA(Vt)}createImageFromBase64(Dt,Ht,Vt){Vt=Vt.replaceAll(/%\\d+%/g,Q1=>\"A\".repeat(Number(Q1.slice(1,-1))));let Zt=Uu(Vt),H1=new Uint8ClampedArray(Zt),Ot=new ImageData(H1,Dt,Ht);return new VA(Ot)}createDialog(Dt){return new JP(Dt,this.dialogRoot)}runLater(Dt){typeof requestAnimationFrame==\"function\"?requestAnimationFrame(Dt):typeof setImmediate==\"function\"?setImmediate(Dt):setTimeout(Dt,0)}};function bu(k,Dt,Ht,Vt,Zt,H1,Ot,Q1){let{readOnly:D1=!1,initialMode:R1=\"molecule\",initialFragment:p1=!1}=Dt,N1=document.createElement(\"div\");N1.dataset.openchemlibCanvasEditor=\"true\",Object.assign(N1.style,{width:\"100%\",height:\"100%\",display:\"flex\",flexDirection:\"row\",alignItems:\"start\",backgroundColor:\"white\",touchAction:\"none\",userSelect:\"none\",webkitUserSelect:\"none\"});let b1=N1.attachShadow({mode:\"open\"});b1.adoptedStyleSheets=[yu()];let de=null;D1||(de=document.createElement(\"canvas\"),b1.append(de));let I0=document.createElement(\"div\");Object.assign(I0.style,{width:\"100%\",height:\"100%\"}),b1.append(I0);let o0=document.createElement(\"canvas\");o0.tabIndex=0,Object.assign(o0.style,{outline:\"none\"}),I0.append(o0),k.append(N1);let Ae=new H1(new KP(o0,I0,Vt)),Mt=new Vt(A2(R1,Vt),new GP(o0,Ht),Ae);if(p1)if(R1===\"molecule\"){let r1=new Ot(0,0);r1.setFragment(!0),Mt.setMolecule(r1)}else{let r1=Q1.create();r1.setFragment(!0),Mt.setReaction(r1)}Ae.setEditorArea(Mt);let He=D1?null:new Zt(Mt,new OP(de),Ae);function Pe(r1){o0.style.width=`${r1.width}px`,o0.width=Math.floor(r1.width*Xe),o0.style.height=`${r1.height}px`,o0.height=Math.floor(r1.height*Xe),r1.width>0&&r1.height>0&&Mt.repaint()}let qA=I0.getBoundingClientRect();Pe(qA);let v1=new ResizeObserver(([r1])=>{Pe(r1.contentRect)});v1.observe(I0);let B0=null,vn=null,yt=null;D1||(B0=S8(o0,Mt,Vt),vn=wu(I0,o0,Mt,Vt,Ot),yt=S8(de,He,Vt));function z1(){N1.remove(),v1.disconnect(),B0?.(),vn?.(),yt?.()}return{editorArea:Mt,toolbar:He,uiHelper:Ae,destroy:z1}}function A2(k,Dt){switch(k){case\"molecule\":return 0;case\"reaction\":return Dt.MODE_REACTION|Dt.MODE_MULTIPLE_FRAGMENTS;default:throw new Error(`Invalid initial mode: ${k}`)}}function cu(k,Dt,Ht,Vt,Zt){class H1{#t;#e;#P;#A;#f;#r;constructor(Q1,D1={}){let{editorArea:R1,toolbar:p1,uiHelper:N1,destroy:b1}=bu(Q1,D1,de=>this.#i(de),k,Dt,Ht,Vt,Zt);this.#t=R1,this.#e=p1,this.#P=N1,this.#A=null,this.#f={[k.EDITOR_EVENT_MOLECULE_CHANGED]:\"molecule\",[k.EDITOR_EVENT_SELECTION_CHANGED]:\"selection\",[k.EDITOR_EVENT_HIGHLIGHT_ATOM_CHANGED]:\"highlight-atom\",[k.EDITOR_EVENT_HIGHLIGHT_BOND_CHANGED]:\"highlight-bond\"},this.#r=b1}getMode(){return this.#n(),this.#t.getMode()&k.MODE_REACTION!==0?\"reaction\":\"molecule\"}setMolecule(Q1){this.#n(),this.#t.setMolecule(Q1)}getMolecule(){return this.#n(),this.#t.getMolecule()}setReaction(Q1){this.#n(),this.#t.setReaction(Q1)}getReaction(){return this.#n(),this.#t.getReaction()}setOnChangeListener(Q1){this.#n(),this.#A=Q1}removeOnChangeListener(){this.#n(),this.#A=null}clearAll(){this.#n(),this.#t.clearAll()}destroy(){this.#n(),this.#r(),this.#t=null,this.#e=null,this.#P=null,this.#A=null,this.#r=null}get isDestroyed(){return!this.#t}moleculeChanged(){this.#n(),this.#t.moleculeChanged()}#n(){if(this.isDestroyed)throw new Error(\"CanvasEditor has been destroyed\")}#i(Q1){if(!this.#A)return;let{what:D1,isUserEvent:R1}=Q1;this.#A({type:this.#f[D1],isUserEvent:R1})}}return H1}function gu(k,Dt,Ht,Vt){class Zt extends HTMLElement{static MODE=Object.freeze(Object.create({MOLECULE:\"molecule\",REACTION:\"reaction\"}));static observedAttributes=Object.freeze([\"idcode\",\"fragment\",\"mode\",\"readonly\"]);#t={idcode:\"\",fragment:!1,mode:Zt.MODE_MOLECULE,readonly:!1};get idcode(){return this.#t.idcode}set idcode(Ot){this.#t.idcode=String(Ot),this.setAttribute(\"idcode\",this.#t.idcode)}get fragment(){return this.#t.fragment}set fragment(Ot){this.#t.fragment=!!Ot,this.#t.fragment?this.setAttribute(\"fragment\",\"\"):this.removeAttribute(\"fragment\")}get mode(){return this.#t.mode}set mode(Ot){this.#t.mode=String(Ot),this.setAttribute(\"mode\",this.#t.mode)}get readonly(){return this.#t.readonly}set readonly(Ot){this.#t.readonly=!!Ot,this.#t.readonly?this.setAttribute(\"readonly\",\"\"):this.removeAttribute(\"readonly\")}setMolecule(Ot){this.fragment=Ot.isFragment(),this.idcode=`${Ot.getIDCode()} ${Ot.getIDCoordinates()}`,this.#e.setMolecule(Ot)}getMolecule(){return this.#e.getMolecule()}setReaction(Ot){this.fragment=Ot.isFragment(),this.idcode=Vt.encode(Ot,{keepAbsoluteCoordinates:!0,mode:Vt.INCLUDE_MAPPING|Vt.INCLUDE_COORDS|Vt.RETAIN_REACTANT_AND_PRODUCT_ORDER})??\"\",this.#e.setReaction(Ot)}getReaction(){return this.#e.getReaction()}clearAll(){this.#e.clearAll(),this.idcode=\"\"}moleculeChanged(){this.#e.moleculeChanged()}#e;#P(){this.#e||(this.#e=new k(this,{readOnly:this.readonly,initialMode:this.mode}),this.#e.setOnChangeListener(this.#l),requestIdleCallback(()=>this.#A()))}#A(){switch(this.mode){case Zt.MODE.MOLECULE:return this.#r();case Zt.MODE.REACTION:return this.#n();default:throw new Error(`Mode ${this.mode} is not supported`)}}#f(Ot){let Q1=Ot.indexOf(\" \");if(Q1===-1)return Dt.fromIDCode(Ot);let D1=Ot.slice(0,Q1),R1=Ot.slice(Q1+1);return Dt.fromIDCode(D1,R1)}#r(){let Ot=this.#f(this.idcode);Ot.setFragment(this.fragment),this.#e.setMolecule(Ot)}#n(){let Ot=Vt.decode(this.idcode,{ensureCoordinates:!0})??Ht.create();Ot.setFragment(this.fragment),this.#e.setReaction(Ot)}#i=!1;#o(Ot){this.#i=!0;try{Ot()}finally{this.#i=!1}}#l=Ot=>{let Q1=this.idcode,D1=this.fragment;this.#o(()=>{if(Ot.type===\"molecule\")switch(this.mode){case Zt.MODE.MOLECULE:{let p1=this.getMolecule();this.idcode=`${p1.getIDCode()} ${p1.getIDCoordinates()}`,this.fragment=p1.isFragment();break}case Zt.MODE.REACTION:{let p1=this.getReaction();this.idcode=Vt.encode(p1,{keepAbsoluteCoordinates:!0,mode:Vt.INCLUDE_MAPPING|Vt.INCLUDE_COORDS|Vt.RETAIN_REACTANT_AND_PRODUCT_ORDER}),this.fragment=p1.isFragment();break}default:throw new Error(`Unsupported mode ${this.mode}`)}});let R1=new CustomEvent(\"change\",{detail:Ot,bubbles:!0});if(this.dispatchEvent(R1),Ot.mode===\"molecule\"){if(this.idcode!==Q1){let p1=new CustomEvent(\"idcode-changed\",{detail:this.idcode,bubbles:!0});this.dispatchEvent(p1)}if(this.fragment!==D1){let p1=new CustomEvent(\"fragment-changed\",{detail:this.fragment,bubbles:!0});this.dispatchEvent(p1)}}};#D(){this.#e&&(this.#e.destroy(),this.#e=void 0)}#u(){this.#D(),this.#P()}connectedCallback(){this.#t={idcode:this.getAttribute(\"idcode\")||\"\",fragment:this.hasAttribute(\"fragment\"),mode:this.getAttribute(\"mode\")||Zt.MODE.MOLECULE,readonly:this.hasAttribute(\"readonly\")},this.#P()}disconnectedCallback(){this.#D()}adoptedCallback(){this.connectedCallback()}attributeChangedCallback(Ot,Q1,D1){if(!this.#e||this.#i)return;(()=>{switch(Ot){case\"idcode\":return this.#t.idcode=String(D1),()=>this.#A();case\"fragment\":return this.#t.fragment=D1!==null,()=>this.#A();case\"mode\":return this.#t.mode=String(D1),()=>this.#u();case\"readonly\":return this.#t.readonly=D1!==null,()=>this.#u();default:throw new Error(\"unsupported attribute change\")}})()()}}return Zt}function I8(k){let{GenericEditorArea:Dt,GenericEditorToolbar:Ht,GenericUIHelper:Vt,Molecule:Zt,Reaction:H1,ReactionEncoder:Ot}=k,Q1=cu(Dt,Ht,Vt,Zt,H1);function D1(){let R1=customElements.get(\"openchemlib-editor\");if(R1)return R1;let p1=gu(Q1,Zt,H1,Ot);customElements.define(\"openchemlib-editor\",p1);let N1=document.createElement(\"style\");return N1.id=\"openchemlib-editor-default-style\",N1.innerHTML=`\n    /* dynamicaly added from openchemlib registerCustomElement with low priority */\n    openchemlib-editor:defined {\n      display: block;\n      height: 400px;\n      width: 600px;\n    }\n    `,document.head.prepend(N1),p1}k.CanvasEditor=Q1,k.registerCustomElement=D1,delete k.GenericEditorArea,delete k.GenericEditorToolbar,delete k.GenericUIHelper}function du(k){let{ConformerGenerator:Dt,ForceFieldMMFF94:Ht,Molecule:Vt}=k;Dt.prototype.molecules=function*(){let D1;for(;(D1=this.getNextConformerAsMolecule())!==null;)yield D1};let Zt={maxIts:4e3,gradTol:1e-4,funcTol:1e-6},H1=Ht.prototype._minimise;delete Ht.prototype._minimise,Ht.prototype.minimise=function(D1){return D1={...Zt,...D1},H1.call(this,D1.maxIts,D1.gradTol,D1.funcTol)};function Ot(Q1){if(!Q1)return null;if(Q1.includes(\"V2000\")||Q1.includes(\"V3000\"))return Vt.fromMolfile(Q1);try{return Vt.fromSmiles(Q1)}catch{}try{return Vt.fromIDCode(Q1)}catch{}return null}Vt.fromText=function(D1){let R1=Ot(D1);return R1&&R1.getAllAtoms()>0?R1:null},Vt.prototype.getOCL=function(){return k}}function Fn(){}function P2(k){let Dt=k.document,Ht={},Vt={userAgent:\"webkit\"},Zt=Fn;Zt.__moduleStartupDone=Fn;let H1=Fn,Ot,Q1;var D1=\"object\",R1=\"anonymous\",p1=\"fnStack\",N1=`\n`,b1={4:1,9:1,5:1,8:1},de=\"Unknown\",I0=\"boolean\",o0=\"number\",Ae=\"string\",Mt=2147483647,He='For input string: \"',Pe=\"null\",qA=\"__noinit__\",v1={4:1,5:1,8:1},B0={4:1,19:1,33:1,27:1},vn=\" (copy)\",yt={4:1,9:1,14:1,5:1,11:1,8:1,13:1},z1=65536,r1=65535,Z0=1e4,tA=\"fromIndex: \",E8=\" > toIndex: \",YP=\", toIndex: \",N8=\", length: \",XP=\"Index: \",WP=\", Size: \",Bt={15:1,4:1,5:1},fn={4:1},H={7:1,4:1,5:1},We=16777215,J0=65280,Dn=.30000001192092896,Me=545460846592,le=4294967296,ze=8589934592,Ve=17179869184,qe=34359738368,Ie=68719476736,Ee=137438953472,un=274877906944,wt={12:1,4:1,5:1},P0=536870912,_P=2.617993878,$P=3.665191429,G1=6.283185307179586,t1=3.141592653589793,k0=1.5707963267948966,E0=16384,IA=-8355712,J1=4096,eA={l:0,m:0,h:1},nA={l:0,m:0,h:2},AA={l:0,m:0,h:4},K0=1920,r0=1024,Be=234881024,PA=167772160,on=100663296,ln=201326592,_e=114688,$e=4063232,rA=3801088,pn=3538944,Cn=3014656,iA=3145728,m0=2097152,ae=393216,re=917504,Qn=1966080,Ln=0xf8000000000,EA=0xf0000000000,NA=0xe8000000000,xA=0xd8000000000,GA=0xb8000000000,aP=0xe0000000000,tr=0xc0000000000,fA=8796093022208,Rn=549755813888,OA=1649267441664,ZA=3848290697216,DA=8246337208320,er=0xc8000000000,nr=9345848836096,Ar=0x98000000000,ke=29360128,Ne=268435456,l0=8192,c1=2048,uA=-1.5707963267948966,Qe=130560,oA=6291456,Pr=-2.0943951023931953,s0=1.0471975511965976,Sn=.5235987755982988,U1=786432,Le=524288,Ue=262144,N0=-16777216,ie=-65536,JA=-32768,rr='<DrawingObject type=\"',KA=\"></DrawingObject>\",Jt={4:1,5:1,16:1},e0={4:1,5:1},ir=\"unsupported atomicNo:\",x8=2.8415926535897933,M1={28:1,4:1,9:1,5:1,8:1},Hn={4:1,5:1,11:1,8:1},Y={10:1,4:1,5:1},T0={4:1,9:1,5:1,8:1,30:1},n0=131072,YA=196608,XA={l:6,m:0,h:4},je=1048576,ye=3221225472,fr={l:0,m:0,h:3},Mn=8388608,Dr={l:0,m:0,h:120},WA={36:1,43:1,38:1},L0={4:1,9:1,5:1,11:1,8:1},G8={36:1,43:1,96:1,38:1,84:1},_A={4:1,5:1,36:1,43:1,96:1,21:1,38:1,84:1,129:1},U0=17976931348623157e292,ur=-17976931348623157e292,xe={88:1,74:1,75:1,4:1,9:1,5:1,8:1},F1=\"??\",we={58:1,4:1,9:1,5:1,8:1},se=2013265920,j0=32505856,S0=31744,$A=122880,zn={131:1,4:1,9:1,5:1,11:1,8:1},lA=33554432,H0=67108864,Ge=32768,aA=-131073,tP=-33554433,eP=-33292289,or=-3.141592653589793,_1=4194303,M0=3072,h0={46:1,4:1,5:1},lr=.7853981633974483,O8=3.061592653589793,z0=1073741824,Z8=541165879296,zt={17:1,4:1,5:1,8:1},nP=281.17,AP=289.19,PP=294.21,rP=\"0.0000\",iP=\"NOSEARCH_OCL_CUSTOM_LABEL\",me=\"M  END\",Vn=\"ATOMS\",n1=-2147483648,QA=\"$$$$\",LA=\"M  V30 \",J8=\"M  V30 COUNTS \",K8=\"M  V30 MDLV30/STEREL\",Y8=\"M  V30 MDLV30/STERAC\",Qr=\"M  V30 END CTAB\",X8=34028234663852886e22,Lr={l:2,m:0,h:4},Y0=4194304,Ur={l:4179966,m:4063288,h:7},W8={l:4194302,m:4193343,h:127},K1='\" ',yr='stroke=\"',fP='stroke-width=\"',DP='\" />',_8='class=\"event\" ',$8='opacity=\"0\" />',X0=16711680,a8=\"' position:\",t9=\"'. Position:\",e9=1099511627776,n9=2199023255552,A9=4398046511104,wr=\"', position:\",P9=\"Assignment of aromatic double bonds failed\",UA=2147483646,r9={103:1,4:1},sr=\"Members of ESR groups must only be stereo centers with known configuration.\",Tr=\"Over- or under-specified stereo feature or more than one racemic type bond\",hr=\"Ambiguous configuration at stereo center because of 2 parallel bonds\",i9={116:1,89:1,25:1,4:1},uP=1e5,yA=1.399999976158142,qn=3.1415927410125732,br=1.5707963705062866,f9=.029999999329447746,D9=6.2831854820251465,u9=1.9106119871139526,o9=2.2639999389648438,cr=2.16759991645813,l9=2.0662999153137207,Q9=2.3561999797821045,L9=2.2844998836517334,U9=1.9106120066311025,y9=2.094395160675049,wA=.6000000238418579,oP=1.7999999523162842,gr=.05000000074505806,A0={4:1,9:1,5:1,8:1,37:1},lP=.2617993950843811,In=2.0943951023931953,sA=1.2000000476837158,dr=1.4299999475479126,QP=1.659999966621399,Br=1.4600000381469727,kr=1.899999976158142,w9=1.8200000524520874,s9=2.4600000381469727,T9=2.4200000762939453,LP=2.450000047683716,jr=2.440000057220459,h9=2.4000000953674316,mr=2.319999933242798,Fr=2.2899999618530273,b9=1.8600000143051147,c9=2.5299999713897705,g9=2.490000009536743,d9=2.4700000286102295,B9=2.880000114440918,k9=2.9200000762939453,j9=2.869999885559082,vr=2.8299999237060547,m9=2.7899999618530273,F9=2.809999942779541,v9=2.799999952316284,p9=3.049999952316284,pr=.3199999928474426,C9=1.3300000429153442,TA=.8500000238418579,R9=1.600000023841858,S9=1.3899999856948853,Cr=1.159999966621399,H9=1.1100000143051147,M9=1.0700000524520874,z9=1.9600000381469727,V9=1.7100000381469727,Rr=1.3600000143051147,q9=1.340000033378601,I9=1.2200000286102295,E9=1.2400000095367432,UP=1.2100000381469727,N9=2.0999999046325684,Sr=1.850000023841858,Hr=1.6299999952316284,x9=1.4700000286102295,G9=1.2799999713897705,O9=1.440000057220459,Z9=1.7599999904632568,J9=1.7300000190734863,K9=1.7200000286102295,yP=1.6799999475479126,Y9=1.690000057220459,X9=1.6699999570846558,Mr=1.649999976158142,hA=1.7000000476837158,W9=1.6200000047683716,_9=1.3700000047683716,$9=1.2899999618530273,a9=1.4500000476837158,ti=1.5700000524520874,zr=-.5235987755982988,bA=-1.0471975511965976,ei=-.7853981633974483,ni=.017453292519943295,Ai=.17453292519943295,cA=1e-4,Un={147:1},yn=57.29577951308232,Pi=.021922173386725217,gA=1e-8,fe=2.5120960256267386,dA=1e-5,wP=\"MMFF94s+\",ri=\"nonbonded cutoff\",ii=\"dielectric constant\",fi=\"dielectric model\",Di=\"angle bend\",ui=\"bond stretch\",oi=\"electrostatic\",li=\"out of plane\",Qi=\"stretch bend\",Li=\"torsion angle\",Ui=\"van der waals\",yi=.07000000000000006,wi=.1200000000000001,si=-7.840000000000001,sP=\"OCL_RXN_V1.0:\",Ti=\"$RXN V3000\",hi=\"'$MOL' tag not found\",bi=\"'M  END' not found\",ci=\"M  V30 BEGIN REACTANT\",gi=`\nActelion Java MolfileCreator 2.0\n\n  0  0  0  0  0  0              0 V3000\n`,di=\"M  V30 BEGIN PRODUCT\",Bi=2475109711874,ki=2475109711875,ji=2887426572290,mi=2887426572291,Fi=2887627898882,vi=2887627898883,pi=2887627997186,Ci=3437182386178,Ri=3437182386179,Si=3437383712770,Hi=3437383811074,Mi=3437652148226,zi=3437652377602,Vi=4674132967426,qi=4674334294018,Ii=4674334392322,Ei=4674602729474,Ni=4674602958850,xi=5086449827842,Gi=5086449827848,Oi=5086651154434,Zi=5086651252738,Ji=5086651252743,Ki=5086919589890,Yi=5086919688194,Xi=5636406968322,Wi=5636407066626,_i=5636675502082,$i={l:589826,m:590112,h:4},ai={l:589827,m:590112,h:4},tf={l:589826,m:590160,h:4},ef={l:589827,m:590160,h:4},nf={l:688130,m:590160,h:4},Af={l:589826,m:590224,h:4},Pf={l:589827,m:590224,h:4},rf={l:819203,m:590224,h:4},ff={l:589826,m:590368,h:4},Df={l:688130,m:590368,h:4},uf={l:819202,m:590368,h:4},of={l:819208,m:590368,h:4},lf={l:589826,m:590416,h:4},Qf={l:589832,m:590416,h:4},Lf={l:688130,m:590416,h:4},Uf={l:819202,m:590416,h:4},yf={l:589826,m:598304,h:4},wf={l:589827,m:598304,h:4},sf={l:688130,m:598304,h:4},Tf={l:1114114,m:598304,h:4},hf={l:1212418,m:598304,h:4},bf={l:589826,m:598308,h:4},cf={l:589826,m:688416,h:4},gf={l:589826,m:688464,h:4},df={l:589826,m:688720,h:4},Bf={l:688130,m:688720,h:4},kf={l:589826,m:590112,h:288},jf={l:589826,m:590112,h:336},mf={l:589826,m:688416,h:336},Ff={l:589826,m:688464,h:336},vf={l:688130,m:688464,h:336},pf={l:589826,m:590112,h:400},Cf={l:589826,m:688416,h:400},Rf={l:589826,m:688464,h:400},Sf={l:688130,m:688464,h:400},Hf={l:589826,m:819488,h:400},Mf={l:589826,m:819536,h:400},zf={l:589826,m:819600,h:400},Vf={l:688130,m:819600,h:400},qf={l:819202,m:819600,h:400},If={l:589831,m:688416,h:592},Ef={l:589831,m:688464,h:592},Nf={l:688135,m:688464,h:592},xf={l:589831,m:819536,h:592},Gf={l:688135,m:819536,h:592},Of={l:688135,m:819600,h:592},Zf={l:589832,m:1212704,h:592},Jf={l:589832,m:1212752,h:592},Kf={l:688136,m:1212752,h:592},Yf={l:589831,m:688464,h:656},Xf={l:589826,m:590112,h:8480},Wf={l:589826,m:688416,h:8480},_f={l:589826,m:688464,h:8480},$f={l:688130,m:688464,h:8480},af={l:819202,m:819600,h:8480},tD={l:688135,m:1212752,h:8480},eD={l:589832,m:1213008,h:8480},nD={l:688136,m:1213008,h:8480},AD={l:589826,m:590112,h:8484},PD={l:589826,m:590160,h:8484},rD={l:688130,m:598304,h:8484},iD=.6262000203132629,fD=-1.3825000524520874,TP=.33169999718666077,DD=-1.4915000200271606,uD=.3540000021457672,oD=.38179999589920044,lD=-.6019999980926514,QD=.07999999821186066,LD=-.7379999756813049,UD=\"Atom-types are 64-bit numbers describing atoms and their near surrounding.\",Vr=\"Recognized atom types and their contributions are:\",yD=\"Druglikeness predictor not properly initialized.\",wD=3.009999990463257,sD=-.17000000178813934,TD=-.1809999942779541,hD=-.2029999941587448,BA=2147483648,bD=\"ene-Metathesis\",cD=\"Halogenation ring closure\",gD=\" (rootPairSets:\",qr=-1e10,hP={203:1,4:1,9:1,5:1,8:1,30:1},bP=-99999,Te=\"any\",dD=\"is not in a ring\",Ir=\"Excluded atoms:\",cP=\"exactly 1\",gP=\"exactly 2\",Er=\"less than 3\",BD=\"less than 4\",dP=\"at least 1\",Nr=\"at least 2\",xr=\"at least 3\",kD=\"at least 4\",Gr=\"1 or 2\",jD=\"less than 2\",mD=\"Allowed atoms:\",wn={138:1},FD=\"Atom Properties\",BP=-8346432,vD=\"/html/editor/editor.html\",pD=\"Structure Editor Help\",kP=\"Dummy look and feel\",En=\"Substance Graphite\",Nn=\"Radiance Graphite\",xn=\"Radiance Night\",CD=.6499999761581421,RD=.3499999940395355,Or=\"editorButtons.png\",SD=\"esrButtons.png\",sn=.800000011920929,Zr=-1774190527,Jr=-1438646166,Gn=-1433403286,jP=-1431655766,mP=-1448432982,Fe=1073741866,Tn=1073741930,Kr=\"MMFF94\",Yr=\"MMFF94s\",HD=\"/resources/forcefield/mmff94/94s/outofplane.csv\",On=\"undefined\",Xr={171:1,4:1,5:1,8:1},MD=.08726646502812703,Wr=.003921568859368563,v0=1048575,W0=17592186044416,hn=1e9,Zn=-17592186044416,b0=5.56,i0=11.12,ve=13.34,bn=14.44,kA=.3010299956639812,zD=\"BigInteger divide by zero\",i1=4294967295,VD={l:0,m:0,h:524288},FP={32:1,117:1},_r={108:1,112:1},Jn={36:1,43:1,38:1,86:1},vP=16777619,qD={36:1,38:1,86:1},pP=\"delete\",CP=15525485,ID=5960464477539063e-23,$r=16777216,RP={4:1,32:1,56:1,81:1},ar=\"Invalid UTF8 sequence\",t8=.20000000298023224,ED=\" distance:\",ND=\"gGP`@dfyjidNcGI[WQCP`<\",Kn={48:1},l={},T={},s1={},xt={},c={},De={},n={},y={},I={},Kt={},X={},he={},K={},At={},A1={},e1={},nt={},tt={},$={},V={},Tt={},d1={},j={},_={},R={},Y1={},lt={},m1={},c0={},pt={},C={},V1={},D0={},u0={},x0={},gt={},Wt={},W={},a={},U,jA,SP,ku=-1;l.veb=function(){};function ju(f,t){typeof window===D1&&typeof window.$gwt===D1&&(window.$gwt[f]=t)}function mu(f,t,e,A){l.ifb();var P=SP;Ot=t,Q1=e,ku=A;function r(){for(var i=0;i<P.length;i++)P[i]()}if(f)try{_D(r)()}catch(i){f(t,i)}else _D(r)()}l.ifb=function(){SP==null&&(SP=[])};function Fu(){l.ifb();for(var f=SP,t=0;t<arguments.length;t++)f.push(arguments[t])}l.gfb=function(){};function Yn(){}function Xn(f){return Array.isArray(f)&&f.wd===Yn?T.Uc(f):f.toString()}function q1(f,t){var e=k;if(f===\"\")return e;var A=f.split(\".\");if(!(A[0]in e)&&e.execScript&&e.execScript(\"var \"+A[0]),t){var P=t.prototype.ud;P.e=t}for(var r;A.length&&(r=A.shift());)e=e[r]=e[r]||!A.length&&t||{};return e}l.tfb=function(t){function e(){}return e.prototype=t||{},new e},l.sfb=function(t){return t instanceof Array?t[0]:null};function y0(f,t,e){var A=function(){return f.apply(A,arguments)};return t.apply(A,e),A}function u1(){}function _0(f,t){for(var e in t)t[e].configurable=!0;Object.defineProperties(f,t)}function G(f,t,e){var A=jA,P=A[f],r=l.sfb(P);P&&!r?U=P:(U=l.nfb(t),U.vd=e,!t&&(U.wd=Yn),A[f]=U);for(var i=3;i<arguments.length;++i)arguments[i].prototype=U;r&&(U.ud=r)}l.nfb=function(t){var e=t&&t.prototype;return!e&&(e=jA[t]),l.tfb(e)},l.mfb=function(){},k.goog=k.goog||{},k.goog.global=k.goog.global||k,jA={},T.Jc=function(t,e){return j1(t)===j1(e)},T.Kc=function(t){return t.ud},T.Lc=function(t){return c.yzb(t)};function xD(){}T.Oc=function(t,e){return pe(t)?T._ib(t,e):cn(t)?T.Qhb(t,e):mA(t)?T.Igb(t,e):n8(t)?t.lb(e):e8(t)?T.Jc(t,e):s1.s4(t,e)},T.Qc=function(t){return pe(t)?T.djb():cn(t)?T.Rhb():mA(t)?T.Jgb():n8(t)?t.ud:e8(t)?T.Kc(t):s1.t4(t)},T.Sc=function(t){return pe(t)?T.ejb(t):cn(t)?T.Shb(t):mA(t)?T.Kgb(t):n8(t)?t.nb():e8(t)?T.Lc(t):s1.u4(t)},T.Uc=function(t){var e;return T.khb(T.Qc(t))+\"@\"+(e=c.Szb(c.Rzb(T.Sc(t))),e.toString(16))},G(1,null,{},xD),U.lb=function(t){return T.Jc(this,t)},U.mb=function(){return T.Kc(this)},U.nb=function(){return T.Lc(this)},U.ob=function(){var t;return T.khb(T.Qc(this))+\"@\"+(t=c.Szb(c.Rzb(T.Sc(this))),t.toString(16))},U.equals=function(f){return this.lb(f)},U.hashCode=function(){return this.nb()},U.toString=function(){return this.ob()},s1.s4=function(t,e){return s1.y4(t)?s1.v4(t,e):j1(t)===j1(e)},s1.t4=function(t){return t.ud||Array.isArray(t)&&F(l.Qab,1)||l.Qab},s1.u4=function(t){return s1.z4(t)?s1.w4(t):c.yzb(t)},s1.v4=function(t,e){return t.equals(e)},s1.w4=function(t){return t.hashCode()},s1.x4=function(){return[]},s1.y4=function(t){return!!t&&!!t.equals},s1.z4=function(t){return!!t&&!!t.hashCode},s1.A4=function(t){return t.toString?t.toString():\"[JavaScriptObject]\"},xt.e5=function(){xt.e5=u1;var t,e;e=!xt.n5(),t=new xt.w5,xt.d5=e?new xt.o5:t},xt.f5=function(t){xt.e5(),xt.d5.Lc(t)},xt.g5=function(t){xt.e5();var e;return e=xt.d5.Mc(t),xt.h5(e)},xt.h5=function(t){var e,A,P,r;for(e=\"f5\",A=\"YB\",r=k.Math.min(t.length,5),P=r-1;P>=0;P--)if(T._ib(t[P].d,e)||T._ib(t[P].d,A)){t.length>=P+1&&c.Szb(t).splice(0,P+1);break}return t},xt.i5=function(t){var e=/function(?:\\s+([\\w$]+))?\\s*\\(/,A=e.exec(t);return A&&A[1]||R1},xt.j5=function(t){return xt.e5(),t&&t[p1]?t[p1]:[]},xt.k5=function(t){return xt.e5(),t.name||(t.name=xt.i5(t.toString()))},xt.l5=function(t){return xt.e5(),parseInt(t)||-1},xt.m5=function(t){xt.e5();var e=t.backingJsObject;if(e&&e.stack){var A=e.stack,P=e+N1;return A.substring(0,P.length)==P&&(A=A.substring(P.length)),A.split(N1)}return[]},xt.n5=function(){return Error.stackTraceLimit>0?(k.Error.stackTraceLimit=Error.stackTraceLimit=64,!0):\"stack\"in new Error},G(436,1,{}),xt.o5=function(){},G(306,436,{},xt.o5),U.Lc=function(t){var e={},A=[];t[p1]=A;for(var P=arguments.callee.caller;P;){var r=xt.k5(P);A.push(r);var i=\":\"+r,D=e[i];if(D){var u,o;for(u=0,o=D.length;u<o;u++)if(D[u]===P)return}(D||(e[i]=[])).push(P),P=P.caller}},U.Mc=function(t){var e,A,P,r;for(P=xt.j5(t),A=s1.G4(P),r=d(l.Jbb,b1,91,A,0,1),e=0;e<A;e++)r[e]=new T.Pib(s1.F4(P,e),null,-1);return r},xt.r5=function(t,e){var A,P,r,i,D,u,o,Q,L;return Q=\"\",c.Szb(e).length==0?t.Nc(de,R1,-1,-1):(L=T.rjb(e),T._ib(c.Szb(L).substr(0,3),\"at \")&&(L=(c.Nzb(3,c.Szb(L).length+1),c.Szb(L).substr(3))),L=xt.s5(L),D=c.Szb(L).indexOf(\"(\"),D==-1?(D=c.Szb(L).indexOf(\"@\"),D==-1?(Q=L,L=\"\"):(Q=T.rjb((c.Nzb(D+1,c.Szb(L).length+1),c.Szb(L).substr(D+1))),L=T.rjb((c.Mzb(0,D,c.Szb(L).length),c.Szb(L).substr(0,D))))):(A=c.Szb(L).indexOf(\")\",D),Q=(c.Mzb(D+1,A,c.Szb(L).length),c.Szb(L).substr(D+1,A-(D+1))),L=T.rjb((c.Mzb(0,D,c.Szb(L).length),c.Szb(L).substr(0,D)))),D=T.gjb(L,X1(46)),D!=-1&&(L=(c.Nzb(D+1,c.Szb(L).length+1),c.Szb(L).substr(D+1))),(c.Szb(L).length==0||T._ib(L,\"Anonymous function\"))&&(L=R1),u=T.jjb(Q,X1(58)),r=T.kjb(Q,X1(58),u-1),o=-1,P=-1,i=de,u!=-1&&r!=-1&&(i=(c.Mzb(0,r,c.Szb(Q).length),c.Szb(Q).substr(0,r)),o=xt.l5((c.Mzb(r+1,u,c.Szb(Q).length),c.Szb(Q).substr(r+1,u-(r+1)))),P=xt.l5((c.Nzb(u+1,c.Szb(Q).length+1),c.Szb(Q).substr(u+1)))),t.Nc(i,L,o,P))},xt.s5=function(t){return t.replace(/\\[.*?\\]/g,\"\")},G(437,436,{}),U.Lc=function(t){},U.Nc=function(t,e,A,P){return new T.Pib(e,t+\"@\"+P,A<0?-1:A)},U.Mc=function(t){var e,A,P,r,i,D;if(r=xt.m5(t),i=d(l.Jbb,b1,91,0,0,1),e=0,P=s1.G4(r),P==0)return i;for(D=xt.r5(this,s1.F4(r,0)),T._ib(D.d,R1)||(i[e++]=D),A=1;A<P;A++)i[e++]=xt.r5(this,s1.F4(r,A));return i},xt.w5=function(){},G(307,437,{},xt.w5),U.Nc=function(t,e,A,P){return new T.Pib(e,t,-1)},l.y5=function(t){return t};function F(f,t){return l.A5(f,t)}l.A5=function(t,e){return T.vhb(t,e)},l.B5=function(t){return t.__elementTypeCategory$==null?10:t.__elementTypeCategory$},l.C5=function(t){return t.__elementTypeId$};function w1(f,t,e,A,P,r){return l.E5(f,t,e,A,P,0,r)}l.E5=function(t,e,A,P,r,i,D){var u,o,Q,L,w;if(L=r[i],Q=i==D-1,u=Q?P:0,w=l.G5(u,L),P!=10&&v(F(t,D-i),e[i],A[i],u,w),!Q)for(++i,o=0;o<L;++o)l.I5(w,o,l.E5(t,e,A,P,r,i,D));return w};function d(f,t,e,A,P,r){var i;return i=l.G5(P,A),P!=10&&v(F(f,r),t,e,P,i),i}l.G5=function(t,e){var A=new Array(e),P;switch(t){case 14:case 15:P=0;break;case 16:P=!1;break;default:return A}for(var r=0;r<e;++r)A[r]=P;return A};function e8(f){return Array.isArray(f)&&f.wd===Yn}l.I5=function(t,e,A){return t[e]=A};function $1(f,t,e){return l.I5(f,t,e)}l.K5=function(t,e){t.ud=e},l.L5=function(t,e){t.__elementTypeCategory$=e},l.M5=function(t,e){t.__elementTypeId$=e};function v(f,t,e,A,P){return l.K5(P,f),P.vd=t,P.wd=Yn,l.M5(P,e),l.L5(P,A),P}l.O5=function(t,e){return l.B5(e)!=10&&v(T.Qc(e),e.vd,l.C5(e),l.B5(e),t),l.y5(t)};function vu(f,t){return pe(f)?!!KD[t]:f.vd?!!f.vd[t]:cn(f)?!!JD[t]:mA(f)?!!ZD[t]:!1}function n8(f){return!Array.isArray(f)&&f.wd===Yn}function Yt(f,t){return f!=null&&vu(f,t)}function mA(f){return typeof f===I0}function cn(f){return typeof f===o0}function GD(f){return f!=null&&l.R6(f)&&f.wd!==Yn}function OD(f,t){return l.S6(f,t)}function pe(f){return typeof f===Ae}l.R6=function(t){return typeof t===D1||typeof t==\"function\"},l.S6=function(t,e){return t&&e&&t instanceof e};function j1(f){return f??null}function mt(f){return Math.max(Math.min(f,Mt),-2147483648)|0}var ZD,JD,KD;l.web=function(t){return t&&t.__java$exception};function C1(f){var t;return Yt(f,27)?f:(t=l.web(f),t||(t=new s1.m4(f),xt.f5(t)),t)}function Qt(f){return f.backingJsObject}function pu(f){var t;return f==null?!1:(t=typeof f,T._ib(t,I0)||T._ib(t,o0)||T._ib(t,Ae)||f.$implements__java_io_Serializable||Array.isArray(f))}function Cu(f){var t;return t=typeof f,T._ib(t,I0)||T._ib(t,o0)||T._ib(t,Ae)?!0:f!=null&&f.$implements__java_lang_Comparable}T.Egb=function(){T.Egb=u1,FA=c.Szb(!1),c.Szb(!0)},T.Fgb=function(t){return c.Tzb((c.Gzb(t),t))},T.Ggb=function(t,e){return Su(c.Tzb((c.Gzb(t),t)),c.Tzb((c.Gzb(e),e)))},T.Hgb=function(t,e){return T.Ggb(t,e)},T.Igb=function(t,e){return c.Gzb(t),j1(t)===j1(e)},T.Jgb=function(){return l.rbb},T.Kgb=function(t){return c.Tzb((c.Gzb(t),t))?1231:1237};function Ru(f){return T.Egb(),T._ib(I0,typeof f)}function Su(f,t){return T.Egb(),f==t?0:f?1:-1}T.Ngb=function(t,e){return T.Egb(),pe(t)?T.Uib(t,e):cn(t)?T.Ohb(t,e):mA(t)?T.Hgb(t,e):t.Rb(e)},ZD={4:1,301:1,32:1};var FA;function Hu(f){return T._ib(typeof f,Ae)?!0:f!=null&&f.$implements__java_lang_CharSequence}T.ihb=function(t){t.i=Vu++},T.jhb=function(t){t.n==null&&T.zhb(t)},T.khb=function(t){return T.jhb(t),t.n},T.lhb=function(t){return(t.f&4)!=0},T.mhb=function(t){return(t.f&1)!=0},T.nhb=function(){T.ihb(this),this.n=null,this.j=null,this.g=null,this.d=null,this.b=null,this.k=null,this.a=null},T.phb=function(t){var e;return e=new T.nhb,e.n=\"Class$\"+(t?\"S\"+t:\"\"+e.i),e.b=e.n,e.j=e.n,e};function O(f){var t;return t=T.phb(f),T.Dhb(f,t),t}function Oe(f,t){var e;return e=T.phb(f),T.Dhb(f,e),e.f=t?8:0,e}function Mu(){var f;return f=T.phb(null),f.f=2,f}function tn(f){var t;return t=T.phb(f),t.k=f,t.f=1,t}T.vhb=function(t,e){var A=t.a=t.a||[];return A[e]||(A[e]=t.Tc(e))};function zu(f){if(f.Yc())return null;var t=f.k;return jA[t]}T.zhb=function(t){if(t.Xc()){var e=t.c;e.Yc()?t.n=\"[\"+e.k:e.Xc()?t.n=\"[\"+e.Vc():t.n=\"[L\"+e.Vc()+\";\",t.b=e.Uc()+\"[]\",t.j=e.Wc()+\"[]\";return}var A=t.g,P=t.d;P=P.split(\"/\"),t.n=T.Chb(\".\",[A,T.Chb(\"$\",P)]),t.b=T.Chb(\".\",[A,T.Chb(\".\",P)]),t.j=P[P.length-1]},T.Chb=function(t,e){for(var A=0;!e[A]||e[A]==\"\";)A++;for(var P=e[A++];A<e.length;A++)!e[A]||e[A]==\"\"||(P+=t+e[A]);return P},T.Dhb=function(t,e){var A;if(t){e.k=t;var P=zu(e);if(!P){jA[t]=[e];return}P.ud=e}},G(206,1,{},T.nhb),U.Tc=function(t){var e;return e=new T.nhb,e.f=4,t>1?e.c=T.vhb(this,t-1):e.c=this,e},U.Uc=function(){return T.jhb(this),this.b},U.Vc=function(){return T.khb(this)},U.Wc=function(){return T.jhb(this),this.j},U.Xc=function(){return T.lhb(this)},U.Yc=function(){return T.mhb(this)},U.ob=function(){return((this.f&2)!=0?\"interface \":(this.f&1)!=0?\"\":\"class \")+(T.jhb(this),this.n)},U.f=0,U.i=0;var Vu=1;T.Ihb=function(t){return T._ib(o0,typeof t)||OD(t,k.java.lang.Number$impl)},T.Jhb=function(t){if(T.Hhb==null&&(T.Hhb=new RegExp(\"^\\\\s*[+-]?(NaN|Infinity|((\\\\d+\\\\.?\\\\d*)|(\\\\.\\\\d+))([eE][+-]?\\\\d+)?[dDfF]?)\\\\s*$\")),!T.Hhb.test(t))throw Qt(new T.Oib(He+t+'\"'));return parseFloat(t)},T.Khb=function(t,e,A){var P,r,i,D,u;if(t==null)throw Qt(new T.Oib(Pe));for(i=c.Szb(t).length,D=i>0&&(c.Nzb(0,c.Szb(t).length),c.Szb(t).charCodeAt(0)==45||(c.Nzb(0,c.Szb(t).length),c.Szb(t).charCodeAt(0)==43))?1:0,P=D;P<i;P++)if(Ju((c.Nzb(P,c.Szb(t).length),c.Szb(t).charCodeAt(P)))==-1)throw Qt(new T.Oib(He+t+'\"'));if(u=parseInt(t,10),r=u<e,isNaN(u))throw Qt(new T.Oib(He+t+'\"'));if(r||u>A)throw Qt(new T.Oib(He+t+'\"'));return u},T.Lhb=function(t){return cn(t)?T.Phb(t):t.Zc()},T.Mhb=function(t){return cn(t)?T.Thb(t):t.$c()},G(123,1,{4:1,123:1}),T.Nhb=function(t,e){return en(c.Uzb((c.Gzb(t),t)),c.Uzb((c.Gzb(e),e)))},T.Ohb=function(t,e){return T.Nhb(t,e)},T.Phb=function(t){return c.Uzb((c.Gzb(t),t))},T.Qhb=function(t,e){return c.Gzb(t),j1(t)===j1(e)},T.Rhb=function(){return l.ubb},T.Shb=function(t){return mt(c.Uzb((c.Gzb(t),t)))},T.Thb=function(t){return mt(c.Uzb((c.Gzb(t),t)))};function qu(f){return T._ib(o0,typeof f)}function en(f,t){return f<t?-1:f>t?1:f==t?f==0?en(1/f,1/t):0:isNaN(f)?isNaN(t)?0:1:-1}function HP(f){return isNaN(f)?{l:0,m:0,h:524160}:c.Ozb(f)}JD={4:1,32:1,302:1,123:1},T.FB=function(t){t.g=d(l.Jbb,b1,91,0,0,1)},T.GB=function(t){xt.f5(t)},T.HB=function(t){return xt.g5(t)},T.IB=function(t){return t.j&&(t.backingJsObject!==qA&&t.ic(),t.g=null),t},T.JB=function(t){return t.e},T.KB=function(t,e){if(e instanceof Object)try{if(e.__java$exception=t,Vt.userAgent.toLowerCase().indexOf(\"msie\")!=-1&&Dt.documentMode<9)return;var A=t;Object.defineProperties(e,{cause:{get:function(){var P=A.gc();return P&&P.ec()}},suppressed:{get:function(){return A.fc()}}})}catch{}},T.LB=function(t,e,A){var P,r,i,D,u;for(T.MB(t),r=(t.i==null&&(t.i=d(l.Obb,b1,27,0,0,1)),t.i),i=0,D=r.length;i<D;++i)P=r[i],T.LB(P,e,\"\t\"+A);u=t.e,u&&T.LB(u,e,A)},T.MB=function(t){var e,A,P;for(e=(t.g==null&&(t.g=T.HB(t)),t.g),A=0,P=e.length;A<P;++A);},T.NB=function(t,e){t.backingJsObject=e,T.KB(t,e)},T.OB=function(t){return T.PB(t,t.hc())},T.PB=function(t,e){var A;return A=T.khb(t.ud),e==null?A:A+\": \"+e},T.QB=function(){T.FB(this),T.IB(this),this.ic()},T.RB=function(t){T.FB(this),this.f=t,T.IB(this),this.ic()},T.TB=function(t){if(!(\"stack\"in t))try{throw t}catch{}return t};function Iu(f){var t;return f!=null&&(t=f.__java$exception,t)?t:OD(f,TypeError)?new T.Lib(f):new T.e4(f)}G(27,1,{4:1,27:1}),U.dc=function(t){return new Error(t)},U.ec=function(){return this.backingJsObject},U.fc=function(){var t,e,A;for(A=(this.i==null&&(this.i=d(l.Obb,b1,27,0,0,1)),this.i),e=d(l.Hbb,v1,1,A.length,5,1),t=0;t<A.length;t++)e[t]=A[t].backingJsObject;return e},U.gc=function(){return T.JB(this)},U.hc=function(){return this.f},U.ic=function(){T.NB(this,T.TB(this.dc(T.PB(this,this.f)))),T.GB(this)},U.ob=function(){return T.OB(this)},U.backingJsObject=qA,U.j=!0,T._B=function(){T.QB.call(this)},T.aC=function(t){T.FB(this),T.IB(this),this.backingJsObject=t,T.KB(this,t),this.f=t==null?Pe:Xn(t)},T.bC=function(t){T.RB.call(this,t)},G(19,27,{4:1,19:1,27:1},T.bC),T.cC=function(){T._B.call(this)},T.dC=function(t){T.aC.call(this,t)},T.eC=function(t){T.bC.call(this,t)},G(33,19,B0),T.zgb=function(){T.cC.call(this)},T.Agb=function(t){T.eC.call(this,t)},G(80,33,B0,T.zgb,T.Agb),T.d4=function(){T.cC.call(this)},T.e4=function(t){T.dC.call(this,t)},T.f4=function(t){T.eC.call(this,t)},G(132,33,B0,T.e4),T.Kib=function(){T.d4.call(this)},T.Lib=function(t){T.e4.call(this,t)},T.Mib=function(t){T.f4.call(this,t)},G(69,132,B0,T.Kib,T.Lib,T.Mib),U.dc=function(t){return new TypeError(t)},T.Tib=function(t,e){return c.Nzb(e,c.Szb(t).length),c.Szb(t).charCodeAt(e)},T.Uib=function(t,e){return T.Vib(t,e)},T.Vib=function(t,e){var A,P;return A=T.Phb(c.Szb(t)),P=T.Phb(c.Szb(e)),A==P?0:A<P?-1:1},T.Wib=function(t,e){return T.Vib(c.Szb(t).toLowerCase(),c.Szb(e).toLowerCase())},T.Xib=function(t,e){return c.Gzb(t),t+(\"\"+(c.Gzb(e),e))},T.Yib=function(t){var e;return T.wjb(c.qzb(t,0,(e=t.length,c.nzb(),e)))},T.Zib=function(t){return T.wjb(c.qzb(t,0,t.length))},T.$ib=function(t){var e;return e=c.Szb(vn).length,T._ib(c.Szb(t).substr(c.Szb(t).length-e,e),vn)},T._ib=function(t,e){return c.Gzb(t),j1(t)===j1(e)},T.ajb=function(t,e){return c.Gzb(t),e==null?!1:T._ib(t,e)?!0:c.Szb(t).length==c.Szb(e).length&&T._ib(c.Szb(t).toLowerCase(),c.Szb(e).toLowerCase())},T.bjb=function(t,e,A,P,r){c.Mzb(e,A,c.Szb(t).length),c.Mzb(r,r+(A-e),P.length),T.cjb(t,e,A,P,r)},T.cjb=function(t,e,A,P,r){for(;e<A;)P[r++]=T.Tib(t,e++)},T.djb=function(){return l.Nbb},T.ejb=function(t){var e,A;for(e=0,A=0;A<c.Szb(t).length;A++)e=(e<<5)-e+(c.Nzb(A,c.Szb(t).length),c.Szb(t).charCodeAt(A))|0;return e},T.fjb=function(t,e,A){return T.hjb(t,X1(e),A)},T.gjb=function(t,e){return c.Szb(t).indexOf(e)},T.hjb=function(t,e,A){return c.Szb(t).indexOf(e,A)};function Eu(f){return T._ib(Ae,typeof f)}T.jjb=function(t,e){return c.Szb(t).lastIndexOf(e)},T.kjb=function(t,e,A){return c.Szb(t).lastIndexOf(e,A)},T.ljb=function(t,e){var A;return A=T.mjb(e,\"([/\\\\\\\\\\\\.\\\\*\\\\+\\\\?\\\\|\\\\(\\\\)\\\\[\\\\]\\\\{\\\\}$^])\",\"\\\\\\\\$1\"),T.mjb(t,A,\"\")},T.mjb=function(t,e,A){return A=T.vjb(A),c.Szb(t).replace(new RegExp(e,\"g\"),A)},T.njb=function(t,e){var A,P,r,i,D,u,o,Q;for(A=new RegExp(e,\"g\"),o=d(l.Nbb,yt,2,0,6,1),P=0,Q=t,i=null;;)if(u=A.exec(Q),u==null||Q==\"\"){o[P]=Q;break}else D=u.index,o[P]=(c.Mzb(0,D,c.Szb(Q).length),c.Szb(Q).substr(0,D)),Q=T.qjb(Q,D+c.Szb(c.Szb(u)[0]).length,c.Szb(Q).length),A.lastIndex=0,i==Q&&(o[P]=(c.Mzb(0,1,c.Szb(Q).length),c.Szb(Q).substr(0,1)),Q=(c.Nzb(1,c.Szb(Q).length+1),c.Szb(Q).substr(1))),i=Q,++P;if(c.Szb(t).length>0){for(r=o.length;r>0&&o[r-1]==\"\";)--r;r<o.length&&(c.Szb(o).length=r)}return o},T.ojb=function(t,e){return T._ib(c.Szb(t).substr(0,c.Szb(e).length),e)},T.pjb=function(t,e){return c.Nzb(e,c.Szb(t).length+1),c.Szb(t).substr(e)},T.qjb=function(t,e,A){return c.Mzb(e,A,c.Szb(t).length),c.Szb(t).substr(e,A-e)},T.rjb=function(t){var e,A,P;for(A=c.Szb(t).length,P=0;P<A&&(c.Nzb(P,c.Szb(t).length),c.Szb(t).charCodeAt(P)<=32);)++P;for(e=A;e>P&&(c.Nzb(e-1,c.Szb(t).length),c.Szb(t).charCodeAt(e-1)<=32);)--e;return P>0||e<A?(c.Mzb(P,e,c.Szb(t).length),c.Szb(t).substr(P,e-P)):t},T.sjb=function(t){return String.fromCharCode.apply(null,t)};function X1(f){var t,e;return f>=z1?(t=55296+(f-z1>>10&1023)&r1,e=56320+(f-z1&1023)&r1,String.fromCharCode(t)+(\"\"+String.fromCharCode(e))):String.fromCharCode(f&r1)}T.ujb=function(t){var e,A,P,r,i;for(i=new y.Evb,A=t,P=0,r=A.length;P<r;++P)e=A[P],i.a?T.Ijb(i.a,i.b):i.a=new T.Mjb(i.d),T.Hjb(i.a,e);return i.a?c.Szb(i.e).length==0?i.a.a:i.a.a+(\"\"+i.e):i.c},T.vjb=function(t){var e;for(e=0;0<=(e=c.Szb(t).indexOf(\"\\\\\",e));)c.Nzb(e+1,c.Szb(t).length),c.Szb(t).charCodeAt(e+1)==36?t=(c.Mzb(0,e,c.Szb(t).length),c.Szb(t).substr(0,e)+\"$\"+T.pjb(t,++e)):t=(c.Mzb(0,e,c.Szb(t).length),c.Szb(t).substr(0,e)+(\"\"+T.pjb(t,++e)));return t},T.wjb=function(t){return T.xjb(t,0,t.length)},T.xjb=function(t,e,A){var P,r,i,D;for(i=e+A,c.Mzb(e,i,t.length),D=\"\",r=e;r<i;)P=k.Math.min(r+Z0,i),D+=T.sjb(c.Szb(t).slice(r,P)),r=P;return D},KD={4:1,205:1,32:1,2:1},T.Njb=function(t){T.Agb.call(this,t)},G(231,80,B0,T.Njb),c.czb=function(t){var e;return e=c.Szb(t).slice(),c.mzb(e,t)},c.dzb=function(t,e,A,P,r,i){var D,u,o,Q,L;if(r!=0)for(j1(t)===j1(A)&&(t=c.Szb(t).slice(e,e+r),e=0),o=c.Szb(A),u=e,Q=e+r;u<Q;)D=k.Math.min(u+Z0,Q),r=D-u,L=c.Szb(t).slice(u,D),c.Szb(L).splice(0,0,c.Szb(P),c.Szb(i?r:0)),Array.prototype.splice.apply(o,L),u=D,P+=r},c.ezb=function(t,e){return c.mzb(new Array(e),t)},c.fzb=function(t,e,A){c.Szb(t).splice(e,0,A)},c.gzb=function(t,e,A){c.dzb(A,0,t,e,A.length,!1)},c.hzb=function(t,e){c.Szb(t).push(e)},c.izb=function(t,e){c.Szb(t).push(e)},c.jzb=function(t,e,A){c.Szb(t).splice(e,A)},c.kzb=function(t,e){c.Szb(t).length=e},c.lzb=function(t,e){c.Szb(t).sort(e)},G(500,1,{}),c.vzb=function(){},c.wzb=function(t){switch(typeof t){case Ae:return T.ejb(c.Szb(t));case o0:return T.Shb(c.Szb(t));case I0:return T.Kgb(c.Szb(t));default:return t==null?0:c.yzb(t)}},c.xzb=function(){return++c.uzb},c.yzb=function(t){return t.$H||(t.$H=c.xzb())},G(434,1,{},c.vzb),c.uzb=0,c.zzb=function(t){if(!t)throw Qt(new T.Yhb)},c.Azb=function(t,e){if(!t)throw Qt(new T.Zhb(e))},c.Bzb=function(t,e,A){if(t>e)throw Qt(new T.Zhb(tA+t+E8+e));if(t<0||e>A)throw Qt(new T.Cgb(tA+t+YP+e+N8+A))},c.Czb=function(t){if(t<0)throw Qt(new T.Jib(\"Negative array size: \"+t))},c.Dzb=function(t,e){if(t!=e)throw Qt(new y.mtb)},c.Ezb=function(t){if(!t)throw Qt(new y.Gub)},c.Fzb=function(t,e){if(t<0||t>=e)throw Qt(new T.Agb(XP+t+WP+e))},c.Gzb=function(t){if(t==null)throw Qt(new T.Kib);return t},c.Hzb=function(t,e){if(t==null)throw Qt(new T.Mib(e))},c.Izb=function(t,e){if(t<0||t>e)throw Qt(new T.Agb(XP+t+WP+e))},c.Jzb=function(t,e,A){if(t<0||e>A)throw Qt(new T.Agb(tA+t+YP+e+\", size: \"+A));if(t>e)throw Qt(new T.Zhb(tA+t+E8+e))},c.Kzb=function(t){if(!t)throw Qt(new T.$hb)},c.Lzb=function(t){if(!t)throw Qt(new T._hb(\"Unable to add element to queue\"))},c.Mzb=function(t,e,A){if(t<0||e>A||e<t)throw Qt(new T.Njb(tA+t+YP+e+N8+A))},c.Nzb=function(t,e){if(t<0||t>=e)throw Qt(new T.Njb(XP+t+WP+e))},c.Ozb=function(t){var e,A;return e=new ArrayBuffer(8),c.Szb(new Float64Array(e))[0]=t,A=c.Szb(new Uint32Array(e)),c.Vzb(A[0]|0,A[1]|0)},c.Pzb=function(t,e){return t[e]},c.Qzb=function(t){return t===void 0},c.Rzb=function(t){return t>>>0},c.Szb=function(t){return t},c.Tzb=function(t){return t},c.Uzb=function(t){return t},G(435,1,{}),l.Hbb=O(1),l.Qab=O(0),l.Xab=O(436),l.Uab=O(306),l.Wab=O(437),l.Vab=O(307),l.rbb=O(301),l.tbb=O(206),l.Gbb=O(123),l.ubb=O(302),l.Obb=O(27),l.wbb=O(19),l.Ibb=O(33),l.zbb=O(80),l.Bbb=O(132),l.Ebb=O(69),l.Nbb=O(2),l.Mbb=O(231),l.Odb=O(434),l.Pdb=O(435),De.Vc=function(t){var e,A,P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S,p,M,z,q,x,J,E,N,ft,Lt,ot,st,ut,rt,Ut,ht,it,bt,ct,$t;for(this.c=t.length,this.d=t[0].length,Lt=k.Math.min(this.c,this.d),this.e=d(l.X6,Bt,6,k.Math.min(this.c+1,this.d),15,1),this.a=w1(l.X6,[b1,Bt],[15,6],15,[this.c,Lt],2),this.b=w1(l.X6,[b1,Bt],[15,6],15,[this.d,this.d],2),r=d(l.X6,Bt,6,this.d,15,1),$t=d(l.X6,Bt,6,this.c,15,1),N=k.Math.min(this.c-1,this.d),ft=k.Math.max(0,k.Math.min(this.d-2,this.c)),z=0;z<k.Math.max(N,ft);z++){if(z<N){for(this.e[z]=0,w=z;w<this.c;w++)this.e[z]=De.Wc(this.e[z],t[w][z]);if(this.e[z]!=0){for(t[z][z]<0&&(this.e[z]=-this.e[z]),L=z;L<this.c;L++)t[L][z]/=this.e[z];t[z][z]+=1}this.e[z]=-this.e[z]}for(B=z+1;B<this.d;B++){if(z<N&this.e[z]!=0){for(ct=0,w=z;w<this.c;w++)ct+=t[w][z]*t[w][B];for(ct=-ct/t[z][z],L=z;L<this.c;L++)t[L][B]+=ct*t[L][z]}r[B]=t[z][B]}if(!0&z<N)for(L=z;L<this.c;L++)this.a[L][z]=t[L][z];if(z<ft){for(r[z]=0,w=z+1;w<this.d;w++)r[z]=De.Wc(r[z],r[w]);if(r[z]!=0){for(r[z+1]<0&&(r[z]=-r[z]),s=z+1;s<this.d;s++)r[s]/=r[z];r[z+1]+=1}if(r[z]=-r[z],z+1<this.c&r[z]!=0){for(s=z+1;s<this.c;s++)$t[s]=0;for(m=z+1;m<this.d;m++)for(h=z+1;h<this.c;h++)$t[h]+=r[m]*t[h][m];for(S=z+1;S<this.d;S++)for(ct=-r[S]/r[z+1],h=z+1;h<this.c;h++)t[h][S]+=ct*$t[h]}for(L=z+1;L<this.d;L++)this.b[L][z]=r[L]}}for(ot=k.Math.min(this.d,this.c+1),N<this.d&&(this.e[N]=t[N][N]),this.c<ot&&(this.e[ot-1]=0),ft+1<ot&&(r[ft]=t[ft][ot-1]),r[ot-1]=0,p=N;p<Lt;p++){for(L=0;L<this.c;L++)this.a[L][p]=0;this.a[p][p]=1}for(q=N-1;q>=0;q--)if(this.e[q]!=0){for(g=q+1;g<Lt;g++){for(ct=0,w=q;w<this.c;w++)ct+=this.a[w][q]*this.a[w][g];for(ct=-ct/this.a[q][q],s=q;s<this.c;s++)this.a[s][g]+=ct*this.a[s][q]}for(h=q;h<this.c;h++)this.a[h][q]=-this.a[h][q];for(this.a[q][q]=1+this.a[q][q],L=0;L<q-1;L++)this.a[L][q]=0}else{for(L=0;L<this.c;L++)this.a[L][q]=0;this.a[q][q]=1}for(x=this.d-1;x>=0;x--){if(x<ft&r[x]!=0)for(g=x+1;g<Lt;g++){for(ct=0,w=x+1;w<this.d;w++)ct+=this.b[w][x]*this.b[w][g];for(ct=-ct/this.b[x+1][x],s=x+1;s<this.d;s++)this.b[s][g]+=ct*this.b[s][x]}for(L=0;L<this.d;L++)this.b[L][x]=0;this.b[x][x]=1}for(st=ot-1,b=0,u=k.Math.pow(2,-52);ot>0;){for(M=ot-2;M>=-1&&M!=-1;M--)if(k.Math.abs(r[M])<=u*(k.Math.abs(this.e[M])+k.Math.abs(this.e[M+1]))){r[M]=0;break}if(M==ot-2)J=4;else{for(E=ot-1;E>=M&&E!=M;E--)if(ct=(E!=ot?k.Math.abs(r[E]):0)+(E!=M+1?k.Math.abs(r[E-1]):0),k.Math.abs(this.e[E])<=u*ct){this.e[E]=0;break}E==M?J=3:E==ot-1?J=1:(J=2,M=E)}switch(++M,J){case 1:for(o=r[ot-2],r[ot-2]=0,g=ot-2;g>=M;g--)for(ct=De.Wc(this.e[g],o),P=this.e[g]/ct,ht=o/ct,this.e[g]=ct,g!=M&&(o=-ht*r[g-1],r[g-1]=P*r[g-1]),L=0;L<this.d;L++)ct=P*this.b[L][g]+ht*this.b[L][ot-1],this.b[L][ot-1]=-ht*this.b[L][g]+P*this.b[L][ot-1],this.b[L][g]=ct;break;case 2:for(o=r[M-1],r[M-1]=0,g=M;g<ot;g++)for(ct=De.Wc(this.e[g],o),P=this.e[g]/ct,ht=o/ct,this.e[g]=ct,o=-ht*r[g],r[g]=P*r[g],L=0;L<this.c;L++)ct=P*this.a[L][g]+ht*this.a[L][M-1],this.a[L][M-1]=-ht*this.a[L][g]+P*this.a[L][M-1],this.a[L][g]=ct;break;case 3:{for(ut=k.Math.max(k.Math.max(k.Math.max(k.Math.max(k.Math.abs(this.e[ot-1]),k.Math.abs(this.e[ot-2])),k.Math.abs(r[ot-2])),k.Math.abs(this.e[M])),k.Math.abs(r[M])),it=this.e[ot-1]/ut,bt=this.e[ot-2]/ut,D=r[ot-2]/ut,Ut=this.e[M]/ut,i=r[M]/ut,e=((bt+it)*(bt-it)+D*D)/2,A=it*D*(it*D),rt=0,e!=0|A!=0&&(rt=k.Math.sqrt(e*e+A),e<0&&(rt=-rt),rt=A/(e+rt)),o=(Ut+it)*(Ut-it)+rt,Q=Ut*i,g=M;g<ot-1;g++){for(ct=De.Wc(o,Q),P=o/ct,ht=Q/ct,g!=M&&(r[g-1]=ct),o=P*this.e[g]+ht*r[g],r[g]=P*r[g]-ht*this.e[g],Q=ht*this.e[g+1],this.e[g+1]=P*this.e[g+1],w=0;w<this.d;w++)ct=P*this.b[w][g]+ht*this.b[w][g+1],this.b[w][g+1]=-ht*this.b[w][g]+P*this.b[w][g+1],this.b[w][g]=ct;if(ct=De.Wc(o,Q),P=o/ct,ht=Q/ct,this.e[g]=ct,o=P*r[g]+ht*this.e[g+1],this.e[g+1]=-ht*r[g]+P*this.e[g+1],Q=ht*r[g+1],r[g+1]=P*r[g+1],g<this.c-1)for(L=0;L<this.c;L++)ct=P*this.a[L][g]+ht*this.a[L][g+1],this.a[L][g+1]=-ht*this.a[L][g]+P*this.a[L][g+1],this.a[L][g]=ct}r[ot-2]=o,b=b+1}break;case 4:{if(this.e[M]<=0)for(this.e[M]=this.e[M]<0?-this.e[M]:0,L=0;L<=st;L++)this.b[L][M]=-this.b[L][M];for(;M<st&&!(this.e[M]>=this.e[M+1]);){if(ct=this.e[M],this.e[M]=this.e[M+1],this.e[M+1]=ct,M<this.d-1)for(L=0;L<this.d;L++)ct=this.b[L][M+1],this.b[L][M+1]=this.b[L][M],this.b[L][M]=ct;if(M<this.c-1)for(L=0;L<this.c;L++)ct=this.a[L][M+1],this.a[L][M+1]=this.a[L][M],this.a[L][M]=ct;++M}b=0,--ot}}}},De.Wc=function(t,e){var A;return k.Math.abs(t)>k.Math.abs(e)?(A=e/t,A=k.Math.abs(t)*k.Math.sqrt(1+A*A)):e!=0?(A=t/e,A=k.Math.abs(e)*k.Math.sqrt(1+A*A)):A=0,A},G(199,1,fn,De.Vc),U.c=0,U.d=0,l._6=O(199),n._c=function(){n._c=u1,n.Xc=v(F(l.Z6,1),H,6,15,[0,We,14286847,13402367,12779264,16758197,9474192,3166456,16715021,9494608,11789301,11230450,9109248,12560038,1578e4,16744448,16777008,2093087,8442339,9388244,4062976,15132390,12567239,10921643,9083335,10255047,14706227,15765664,5296208,13140019,8224944,12750735,6721423,12419299,16752896,10889513,6076625,7351984,J0,9764863,9756896,7586505,5551541,3907230,2396047,687500,27013,12632256,16767375,10909043,6717568,10380213,13924864,9699476,4366e3,5707663,51456,7394559,16777159,14286791,13107143,10747847,9437127,6422471,4587463,3211207,2097095,65436,58997,54354,48952,43812,5096191,5089023,2200790,2522539,2516630,1528967,13684960,16765219,12105936,10900557,5724513,10375093,11230208,7688005,4358806,4325478,32e3,7384058,47871,41471,36863,33023,27647,5528818,7888099,9064419,10565332,11739092,11739066,11734438,12389767,13041766,13369433,13697103,14221381,14680120,15073326,15400998,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13158600,1334015,56540,15075850,15132160,56540,15075850,15461355,8553170,1016335,1016335,1334015,15132160,3289770,14456450,16422400,16422400,11819700,3289770,1016335])},n.ad=function(t){t.v=new Tt.EN},n.bd=function(t){var e,A;(t.G&32)==0&&(A=n.dw(t.L),A!=null&&(t.w.a==0&&t.w.b==0&&(e=t.R.c*n.Pl(t.L),t.v=n.Zd(t),n.od(t,e),n.Ud(t,null,e,0)),t.Bb(mt(t.A)),t.L.O!=1&&n.Vd(t,448),t.sb(A,t.w.a,t.w.b+Dn*t.A)))},n.cd=function(t,e){return t==null?e:e==null?t:t+\",\"+e},n.dd=function(t,e){n.ri(e,t.R),n.ui(e,t.v),n.ti(e,t.w)},n.ed=function(t){var e;e=t.R.c*(t.r!=0?t.r:n.Pl(t.L)),t.Y=e*n.Zc,t.T=e*n.Yc,t.S=e*.38,t.W=e*.47,t.X=mt(e*t.J*n.$c+.5),t.V=e*.12,t.Z=e*.4,t.A=e*.5+.5},n.fd=function(t){var e,A;for(t=Z(t,Me),A=0;A<(V.rK(),V.qK).length;A++)if(S1(t,V.qK[A]))return V.pK[A];return e=new T.Mjb(\"R\"),jt(Z(t,le),0)&&(e.a+=\"0\"),jt(Z(t,ze),0)&&(e.a+=\"3\"),jt(Z(t,Ve),0)&&(e.a+=\"4\"),jt(Z(t,qe),0)&&(e.a+=\"5\"),jt(Z(t,Ie),0)&&(e.a+=\"6\"),jt(Z(t,Ee),0)&&(e.a+=\"7\"),jt(Z(t,un),0)&&(e.a+=\"8\"),e.a},n.gd=function(t,e,A,P){var r,i;r=new n.je,i=new n.je,r.a=e.a,r.c=e.c,r.b=(e.a+e.b)/2,r.d=(e.c+e.d)/2,i.a=r.b,i.c=r.d,i.b=e.b,i.d=e.d,n.Rd(t,r)&&(n.Vd(t,t.p[A]),t.pb(r)),n.Rd(t,i)&&(n.Vd(t,t.p[P]),t.pb(i)),n.Vd(t,t.Q)},n.hd=function(t,e,A,P){var r,i,D,u,o;u=(e.b-e.a)/10,o=(e.d-e.c)/10,r=new n.je,n.zm(t.L,n.To(t.L,A,P))?(i=-3,D=-3):(i=t.p[A],D=t.p[P]),n.Vd(t,i),r.a=e.a,r.c=e.c,r.b=e.a+u*2,r.d=e.c+o*2,t.pb(r),r.a=e.a+u*4,r.c=e.c+o*4,r.b=e.a+u*5,r.d=e.c+o*5,t.pb(r),n.Vd(t,D),r.a=e.a+u*5,r.c=e.c+o*5,r.b=e.a+u*6,r.d=e.c+o*6,t.pb(r),r.a=e.a+u*8,r.c=e.c+o*8,r.b=e.b,r.d=e.d,t.pb(r),n.Vd(t,t.Q)},n.jd=function(t,e,A){t.tb(e-t.V/2,A-t.V/2,t.V)},n.kd=function(t,e,A,P){n.zm(t.L,n.To(t.L,A,P))?(n.Vd(t,-3),t.pb(e),n.Vd(t,t.Q)):t.p[A]!=t.p[P]?n.gd(t,e,A,P):t.p[A]!=0?(n.Vd(t,t.p[A]),t.pb(e),n.Vd(t,t.Q)):t.pb(e)},n.ld=function(t,e,A,P,r,i,D){D.a=e.a+r,D.c=e.c+i,D.b=e.b+r,D.d=e.d+i,n.kd(t,D,A,P)},n.md=function(t,e,A,P){var r,i,D,u,o,Q,L,w,s,h,b,g;for(w=e.b-e.a,b=e.d-e.c,o=k.Math.sqrt(w*w+b*b),Q=2*Gt(h1(k.Math.round(o/(4*t.Y)))),s=w/(Q-1),g=b/(Q-1),n.zm(t.L,n.To(t.L,A,P))?(r=-3,i=-3):(r=t.p[A],i=t.p[P]),L=e.a-t.Y/2,h=e.c-t.Y/2,n.Vd(t,r),u=0;u<(Q/2|0);u++)t.tb(L,h,t.Y),L+=s,h+=g;for(n.Vd(t,i),D=0;D<(Q/2|0);D++)t.tb(L,h,t.Y),L+=s,h+=g;n.Vd(t,t.Q)},n.nd=function(t,e,A,P){var r,i,D,u,o,Q,L,w,s,h,b,g,B,m;o=(e.c-e.d)/9,h=(e.b-e.a)/9,Q=e.b+o,b=e.d+h,L=e.b-o,g=e.d-h,w=(e.a+Q)/2,B=(e.c+b)/2,s=(e.a+L)/2,m=(e.c+g)/2,D=new Tt.yN(3),u=new Tt.yN(4),Tt.tN(D,e.a,e.c),Tt.tN(D,w,B),Tt.tN(D,s,m),Tt.tN(u,s,m),Tt.tN(u,w,B),Tt.tN(u,Q,b),Tt.tN(u,L,g),n.zm(t.L,n.To(t.L,A,P))?(r=-3,i=-3):(r=t.p[A],i=t.p[P],t.L.O!=1&&(i=n.qd(t,A),r==n.yl(t.L,A)&&(r=i))),n.Vd(t,r),t.rb(D),n.Vd(t,i),t.rb(u),n.Vd(t,t.Q)},n.od=function(t,e){var A,P;for(P=0;P<t.$.a.length;P++)t.v=Tt.DN(t.v,y.uj(t.$,P));n.pd(t,e),A=.1*e,t.v.c-=A,t.v.d-=A,t.v.b+=2*A,t.v.a+=2*A},n.pd=function(t,e){var A,P,r,i,D,u,o;for(r=d(l.teb,wt,6,t.L.q,16,1),P=0;P<t.L.r;P++)n.xm(t.L,P)&&(r[n.Ul(t.L,0,P)]=!0,r[n.Ul(t.L,1,P)]=!0);for(D=new Tt.EN,A=0;A<t.L.q;A++)i=n.Fm(t.L,A)?e*.47:r[A]?e*.38:0,i!=0&&(u=n.xi(t.R,n.Ll(t.L,A)),o=n.yi(t.R,n.Ml(t.L,A)),Tt.CN(D,u-i,o-i,i*2,i*2),t.v=Tt.DN(t.v,D))},n.qd=function(t,e){var A,P;if((t.G&4224)!=0||(P=n.rd(t,e),P==-1&&(A=n.Bo(t.L,e),A!=-1&&(e=A,P=n.rd(t,e))),P==-1))return t.p[e];switch(P&255){case 1:return 384;case 2:return 64;default:return 448}},n.rd=function(t,e){var A,P,r;return r=-1,P=-1,(t.G&128)!=0||(n.vm(t.L,e)&&(r=n.Cl(t.L,e),P=n.Bl(t.L,e)),A=n.Do(t.L,e),A!=-1&&(r=n.Zl(t.L,A),P=n.Yl(t.L,A)),r!=-1&&r!=0&&(r|=P<<8)),r},n.sd=function(t){var e,A,P,r;for(t.zb(2*t.S),r=new n.je,P=0;P<t.L.r;P++)e=n.Ul(t.L,0,P),A=n.Ul(t.L,1,P),n.xm(t.L,P)&&(r.a=n.xi(t.R,n.Ll(t.L,e)),r.c=n.yi(t.R,n.Ml(t.L,e)),r.b=n.xi(t.R,n.Ll(t.L,A)),r.d=n.yi(t.R,n.Ml(t.L,A)),n.Vd(t,-2),t.pb(r))},n.td=function(t){var e,A,P,r,i,D;if(t.L.K){for(D=t.W,n.Vd(t,-7),e=0;e<t.L.f;e++)n.Fm(t.L,e)&&t.tb(n.xi(t.R,n.Ll(t.L,e))-D,n.yi(t.R,n.Ml(t.L,e))-D,2*D);for(t.zb(2*t.W),i=new n.je,r=0;r<t.L.r;r++)A=n.Ul(t.L,0,r),P=n.Ul(t.L,1,r),jt(Z(Z(n.Jl(t.L,A),n.Jl(t.L,P)),P0),0)&&(i.a=n.xi(t.R,n.Ll(t.L,A)),i.c=n.yi(t.R,n.Ml(t.L,A)),i.b=n.xi(t.R,n.Ll(t.L,P)),i.d=n.yi(t.R,n.Ml(t.L,P)),t.pb(i))}},n.ud=function(t){var e,A,P,r;if(t.L.K){if(n.Vd(t,320),(t.G&8)!=0)for(e=0;e<t.L.f;e++)jt(Z(n.Jl(t.L,e),-536870913),0)&&t.tb(n.xi(t.R,n.Ll(t.L,e))-t.Z/2,n.yi(t.R,n.Ml(t.L,e))-t.Z/2,t.Z);for(r=0;r<t.L.g;r++)n.cm(t.L,r)!=0&&(A=n.Ul(t.L,0,r),P=n.Ul(t.L,1,r),t.tb((n.xi(t.R,n.Ll(t.L,A))+n.xi(t.R,n.Ll(t.L,P))-t.Z)/2,(n.yi(t.R,n.Ml(t.L,A))+n.yi(t.R,n.Ml(t.L,P))-t.Z)/2,t.Z))}},n.vd=function(t){t.J=1,t.R=new n.zi,t.$=new y.Jj,t.U=new y.Jj,t.s=d(l.teb,wt,6,t.L.q,16,1),t.w=new Tt.qN,t.Q=0,t.C=-1,n._d(t)},n.wd=function(t,e){var A;if(n.Ho(t.L,e)==0)return!1;for(A=0;A<n.Ho(t.L,e);A++)if(!n.zm(t.L,n.Xo(t.L,e,A)))return!1;return!0},n.xd=function(t){var e;for(t.q=d(l.teb,wt,6,t.L.q,16,1),e=0;e<t.L.r;e++)t.q[n.Ul(t.L,0,e)]=!0,t.q[n.Ul(t.L,1,e)]=!0},n.yd=function(t,e){var A;if(n.Wo(t.L,e)!=2)return!1;for(A=0;A<2;A++)if(n.Yo(t.L,e,A)!=2)return!1;return!0},n.zd=function(t,e,A,P,r){var i,D,u,o,Q,L,w,s,h,b;for(s=!1,r.a=0,r.b=0,P>0?i=_P:i=$P,b=n.Tl(t.L,e,A),L=0;L<n.Wo(t.L,e);L++)D=n.Xo(t.L,e,L),u=b,n.Ul(t.L,0,D)==e?w=n.Ul(t.L,1,D):w=n.Ul(t.L,0,D),w!=A&&(h=n.Tl(t.L,e,w),u<h&&(u+=G1),o=u-h,P>0?(o<t1&&(s=!0),o>_P&&(o=_P),o<.523598776&&(o=.523598776),o<=i&&(i=o,Q=t.T*k.Math.tan(i-k0)/2,r.a=-(Q*k.Math.sin(u)),r.b=-(Q*k.Math.cos(u)))):(o>=t1&&(s=!0),o<$P&&(o=$P),o>5.759586531&&(o=5.759586531),o>=i&&(i=o,Q=t.T*k.Math.tan(4.712388981-i)/2,r.a=-(Q*k.Math.sin(u)),r.b=-(Q*k.Math.cos(u)))));return s},n.Ad=function(t,e,A,P){var r;if(e==0){A<0?P.a=t.T:P.a=-t.T,P.b=0;return}r=k.Math.atan(A/e),e<0&&(r+=t1),P.a=-(t.T*k.Math.sin(r)),P.b=t.T*k.Math.cos(r)},n.Bd=function(t,e,A,P){var r,i,D,u,o,Q,L,w,s,h,b,g;r=new n.je,o=new n.je,L=new Tt.qN,Q=new Tt.qN,D=n.Ul(t.L,0,A),u=n.Ul(t.L,1,A),P&&(s=e.a,e.a=e.b,e.b=s,s=e.c,e.c=e.d,e.d=s,h=D,D=u,u=h),n.Rd(t,e)&&(n.cq(t.L,A)?(r.a=e.a,r.c=e.c,r.b=e.b,r.d=e.d,w=P?-n.zp(t.L,A):n.zp(t.L,A),w==0&&(w=1),n.Ad(t,e.b-e.a,e.d-e.c,L),w>0?(o.a=e.a+L.a,o.c=e.c+L.b,o.b=e.b+L.a,o.d=e.d+L.b,(n.zd(t,D,u,1,Q)||n.Wo(t.L,D)>1)&&(o.a+=Q.a+L.b,o.c+=Q.b-L.a)):(o.a=e.a-L.a,o.c=e.c-L.b,o.b=e.b-L.a,o.d=e.d-L.b,(n.zd(t,D,u,-1,Q)||n.Wo(t.L,D)>1)&&(o.a+=Q.a+L.b,o.c+=Q.b-L.a)),n.dm(t.L,A)==386&&n.Qd(r,o),n.Rd(t,r)&&n.kd(t,r,D,u),n.dm(t.L,A)==8?n.Rd(t,o)&&n.hd(t,o,D,u):n.Rd(t,o)&&n.kd(t,o,D,u)):(n.Ad(t,e.b-e.a,e.d-e.c,L),b=L.a/2,g=L.b/2,i=!1,r.a=e.a+b,r.c=e.c+g,r.b=e.b+b,r.d=e.d+g,n.Wo(t.L,D)>1&&(n.zd(t,D,u,1,Q)?(r.a+=Q.a,r.c+=Q.b,n.Wo(t.L,D)==2&&(Q.a!=0||Q.b!=0)&&(r.a+=L.b,r.c-=L.a)):t.o[D]=new Tt.rN(r.a,r.c)),o.a=e.a-b,o.c=e.c-g,o.b=e.b-b,o.d=e.d-g,n.Wo(t.L,D)>1&&(n.zd(t,D,u,0,Q)?(o.a+=Q.a,o.c+=Q.b,n.Wo(t.L,D)==2&&(Q.a!=0||Q.b!=0)&&(o.a+=L.b,o.c-=L.a)):(t.o[D]=new Tt.rN(o.a,o.c),i=!0)),n.dm(t.L,A)==386&&n.Qd(r,o),n.dm(t.L,A)==8?i?(n.hd(t,r,D,u),n.kd(t,o,D,u)):(n.kd(t,r,D,u),n.hd(t,o,D,u)):(n.kd(t,r,D,u),n.kd(t,o,D,u))))},n.Cd=function(t,e){var A,P,r,i,D,u,o,Q,L,w,s,h,b;for(L=t.Q,w=t.F,(t.G&E0)!=0&&(t.Q=-6,t.F=IA,n.Vd(t,1)),t.o=d(l.W9,v1,55,t.L.q,0,1),o=0;o<t.L.r;o++)(n.dm(t.L,o)==2||n.dm(t.L,o)==386||n.dm(t.L,o)==8)&&n.Fd(t,o);for(Q=0;Q<t.L.r;Q++)n.dm(t.L,Q)!=2&&n.dm(t.L,Q)!=386&&n.dm(t.L,Q)!=8&&n.Fd(t,Q);if((t.G&64)==0)for(u=0;u<t.L.r;u++)n.Xl(t.L,u)!=0&&(r=null,n.Xl(t.L,u)==1||n.Xl(t.L,u)==2?(n.am(t.L,u)==2||n.Zl(t.L,u)==0||e[n.Zl(t.L,u)][n.Yl(t.L,u)]>1)&&(n.Xl(t.L,u)==1?r=n.am(t.L,u)==2?\"E\":n.Bm(t.L,u)?\"p\":\"P\":r=n.am(t.L,u)==2?\"Z\":n.Bm(t.L,u)?\"m\":\"M\"):r=\"?\",r!=null&&(t.Bb((t.X*2+1)/3|0),n.Vd(t,n.zm(t.L,u)?-3:t.L.O==1||(t.G&J1)!=0?t.Q:448),A=n.Ul(t.L,0,u),P=n.Ul(t.L,1,u),h=(n.xi(t.R,n.Ll(t.L,A))+n.xi(t.R,n.Ll(t.L,P)))/2,b=(n.yi(t.R,n.Ml(t.L,A))+n.yi(t.R,n.Ml(t.L,P)))/2,i=(n.xi(t.R,n.Ll(t.L,A))-n.xi(t.R,n.Ll(t.L,P)))/3,D=(n.yi(t.R,n.Ml(t.L,A))-n.yi(t.R,n.Ml(t.L,P)))/3,n.Id(t,h+D,b-i,r,!0),n.Vd(t,t.Q),t.Bb(t.X)));if((t.G&4)!=0){for(t.Bb((t.X*2+1)/3|0),n.Vd(t,384),u=0;u<t.L.r;u++)A=n.Ul(t.L,0,u),P=n.Ul(t.L,1,u),s=n.Up(t.L,u)?\"d\":n.Qp(t.L,u)?\"a\":\"\",h=(n.xi(t.R,n.Ll(t.L,A))+n.xi(t.R,n.Ll(t.L,P)))/2,b=(n.yi(t.R,n.Ml(t.L,A))+n.yi(t.R,n.Ml(t.L,P)))/2,n.Id(t,h,b,s+(\"\"+u),!0);n.Vd(t,t.Q),t.Bb(t.X)}(t.G&E0)!=0&&(t.Q=L,t.F=w)},n.Dd=function(t){var e,A;for(A=new y.rqb(t.U);A.a<A.c.a.length;)e=y.qqb(A),n.Vd(t,e.a),n.jd(t,e.b,e.c);n.Vd(t,t.Q)},n.Ed=function(t,e,A){var P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S,p,M,z,q,x,J,E,N,ft,Lt,ot,st,ut,rt,Ut,ht,it,bt,ct,$t,Ft,Rt,Et,Nt,It,vt;if(t.K||t.xb(e,n.Dl(t.L,e),n.xi(t.R,n.Ll(t.L,e)),n.yi(t.R,n.Ml(t.L,e))),ht=null,n.xl(t.L,e)!=0&&(Rt=k.Math.abs(n.xl(t.L,e))==1?\"\":\"\"+k.Math.abs(n.xl(t.L,e)),ht=n.xl(t.L,e)<0?Rt+\"-\":Rt+\"+\"),N=null,it=n.Jl(t.L,e),et(it,0)!=0&&(jt(Z(it,eA),0)&&(N=N==null?\"*\":N+\",*\"),jt(Z(it,nA),0)&&(N=N==null?\"!*\":N+\",!*\"),jt(Z(it,AA),0)?N=N==null?\"ha\":N+\",ha\":jt(Z(it,2),0)?N=N==null?\"a\":N+\",a\":jt(Z(it,4),0)&&(N=N==null?\"!a\":N+\",!a\"),jt(Z(it,J1),0)&&(N=N==null?\"s\":N+\",s\"),jt(Z(it,K0),0)&&(q=Z(it,K0),et(q,1792)==0?N=N==null?\"h0\":N+\",h0\":et(q,1664)==0?N=N==null?\"h1\":N+\",h1\":et(q,1408)==0?N=N==null?\"h2\":N+\",h2\":et(q,128)==0?N=N==null?\"h>0\":N+\",h>0\":et(q,384)==0?N=N==null?\"h>1\":N+\",h>1\":et(q,896)==0?N=N==null?\"h>2\":N+\",h>2\":et(q,r0)==0?N=N==null?\"h<3\":N+\",h<3\":et(q,1536)==0?N=N==null?\"h<2\":N+\",h<2\":et(q,1152)==0&&(N=N==null?\"h1-2\":N+\",h1-2\")),jt(Z(it,Be),0)&&(o=Z(it,Be),et(o,PA)==0?N=N==null?\"c0\":N+\",c0\":et(o,on)==0?N=N==null?\"c+\":N+\",c+\":et(o,ln)==0&&(N=N==null?\"c-\":N+\",c-\")),jt(Z(it,_e),0)&&(Ut=Z(it,_e),et(Ut,98304)==0?N=N==null?\"pi0\":N+\",pi0\":et(Ut,81920)==0?N=N==null?\"pi1\":N+\",pi1\":et(Ut,49152)==0?N=N==null?\"pi2\":N+\",pi2\":et(Ut,E0)==0&&(N=N==null?\"pi>0\":N+\",pi>0\")),jt(Z(it,$e),0)&&(rt=Z(it,$e),et(rt,rA)==0?N=N==null?\"n1\":N+\",n1\":et(rt,pn)==0?N=N==null?\"n2\":N+\",n2\":et(rt,Cn)==0?N=N==null?\"n3\":N+\",n3\":et(rt,iA)==0?N=N==null?\"n<3\":N+\",n<3\":et(rt,m0)==0?N=N==null?\"n<4\":N+\",n<4\":et(rt,ae)==0?N=N==null?\"n>1\":N+\",n>1\":et(rt,re)==0?N=N==null?\"n>2\":N+\",n>2\":et(rt,Qn)==0?N=N==null?\"n>3\":N+\",n>3\":et(rt,3276800)==0?N=N==null?\"n1-2\":N+\",n1-2\":et(rt,2228224)==0?N=N==null?\"n1-3\":N+\",n1-3\":et(rt,2490368)==0&&(N=N==null?\"n2-3\":N+\",n2-3\")),jt(Z(it,Ln),0)&&(b=Z(it,Ln),et(b,EA)==0?N=N==null?\"e0\":N+\",e0\":et(b,NA)==0?N=N==null?\"e1\":N+\",e1\":et(b,xA)==0?N=N==null?\"e2\":N+\",e2\":et(b,GA)==0?N=N==null?\"e3\":N+\",e3\":et(b,aP)==0?N=N==null?\"e<2\":N+\",e<2\":et(b,tr)==0?N=N==null?\"e<3\":N+\",e<3\":et(b,fA)==0?N=N==null?\"e<4\":N+\",e<4\":et(b,Rn)==0?N=N==null?\"e>0\":N+\",e>0\":et(b,OA)==0?N=N==null?\"e>1\":N+\",e>1\":et(b,ZA)==0?N=N==null?\"e>2\":N+\",e>2\":et(b,DA)==0?N=N==null?\"e>3\":N+\",e>3\":et(b,er)==0?N=N==null?\"e1-2\":N+\",e1-2\":et(b,nr)==0?N=N==null?\"e1-3\":N+\",e1-3\":et(b,Ar)==0&&(N=N==null?\"e2-3\":N+\",e2-3\")),jt(Z(it,120),0)&&(bt=Z(it,120),et(bt,112)==0?N=N==null?\"!r\":N+\",!r\":et(bt,8)==0?N=N==null?\"r\":N+\",r\":et(bt,96)==0?N=N==null?\"rb<3\":N+\",rb<3\":et(bt,104)==0?N=N==null?\"rb2\":N+\",rb2\":et(bt,88)==0?N=N==null?\"rb3\":N+\",rb3\":et(bt,56)==0&&(N=N==null?\"rb4\":N+\",rb4\")),jt(Z(it,ke),0)&&(N=N==null?\"r\"+Q0(a1(Z(it,ke),22)):N+\",\"+(\"r\"+Q0(a1(Z(it,ke),22)))),jt(Z(it,Me),0)&&(N=n.cd(N,n.fd(it))),jt(Z(it,Ne),0)&&(N=N==null?\"f\":N+\",f\")),n.Hl(t.L,e)!=0&&(N=n.cd(N,\"\"+n.Hl(t.L,e))),Ft=0,n.Kl(t.L,e)!=0)switch(n.Kl(t.L,e)){case 16:ht=ht==null?\"|\":ht+\",|\";break;case 32:Ft=1;break;case 48:Ft=2}if(w=null,(t.G&64)==0){if(n.sm(t.L,e))w=\"?\";else if(n.wl(t.L,e)!=0&&(n.Cl(t.L,e)==0||A==null||A[n.Cl(t.L,e)][n.Bl(t.L,e)]>1))if(n.Wo(t.L,e)==2)switch(n.wl(t.L,e)){case 2:w=n.um(t.L,e)?\"p\":\"P\";break;case 1:w=n.um(t.L,e)?\"m\":\"M\";break;default:w=\"*\"}else switch(n.wl(t.L,e)){case 1:w=n.um(t.L,e)?\"r\":\"R\";break;case 2:w=n.um(t.L,e)?\"s\":\"S\";break;default:w=\"*\"}}if((t.G&768)!=0&&(w=n.cd(w,\"\"+n.lw(t.L,e))),st=null,(t.G&16)!=0&&n.Gl(t.L,e)!=0&&(st=\"\"+n.Gl(t.L,e)),B=null,n.Ep(t.L,e)!=-1&&(g=n.rd(t,e),g!=-1&&(B=g==0?\"abs\":((g&255)==1?\"&\":\"or\")+(1+(g>>8)))),x=0,(t.G&l0)==0&&(t.L.K?jt(Z(n.Jl(t.L,e),c1),0)&&(x=n.kp(t.L,e)):(n.Ol(t.L,e)!=6||n.Hl(t.L,e)!=0||!t.q[e]||n.Kl(t.L,e)!=0)&&(x=n.kp(t.L,e))),ot=!1,i=n.zl(t.L,e),i!=null&&T._ib(c.Szb(i).substr(0,1),\"]\")&&(N=n.cd((c.Nzb(1,c.Szb(i).length+1),c.Szb(i).substr(1)),N),i=null,ot=!0),i!=null?x=0:n.El(t.L,e)!=null?(r=jt(Z(n.Jl(t.L,e),1),0)?\"[!\":\"[\",i=r+n.Fl(t.L,e)+\"]\",c.Szb(i).length>5&&(i=r+n.El(t.L,e).length+\"]\"),jt(Z(n.Jl(t.L,e),c1),0)&&(x=-1)):jt(Z(n.Jl(t.L,e),1),0)?(i=\"?\",jt(Z(n.Jl(t.L,e),c1),0)&&(x=-1)):(n.Ol(t.L,e)!=6||ht!=null||N!=null||x>0||!t.q[e])&&(i=n.Dl(t.L,e)),Lt=0,!n.Lm(t.L,e)&n.Fm(t.L,e)&&n.Vd(t,-8),i!=null?(Lt=t.ub(i),n.Id(t,n.xi(t.R,n.Ll(t.L,e)),n.yi(t.R,n.Ml(t.L,e)),i,!0),t.s[e]=!0):n.yd(t,e)&&n.Hd(t,n.xi(t.R,n.Ll(t.L,e)),n.yi(t.R,n.Ml(t.L,e)),e),ht!=null&&(t.Bb((t.X*2+1)/3|0),Et=n.xi(t.R,n.Ll(t.L,e))+((Lt+t.ub(ht))/2+1),It=n.yi(t.R,n.Ml(t.L,e))-((t.vb()*4-4)/8|0),n.Id(t,Et,It,ht,!0),t.Bb(t.X)),(t.G&2)!=0&&(N=\"\"+e),N!=null&&(ot?t.Bb((t.X*5+1)/6|0):t.Bb((t.X*2+1)/3|0),Et=n.xi(t.R,n.Ll(t.L,e))-(Lt+t.ub(N))/2,It=n.yi(t.R,n.Ml(t.L,e))-((t.vb()*4-4)/8|0),n.Id(t,Et,It,N,!0),t.Bb(t.X)),w!=null&&(t.Bb((t.X*2+1)/3|0),Et=n.xi(t.R,n.Ll(t.L,e))-(Lt+t.ub(w))/2,It=n.yi(t.R,n.Ml(t.L,e))+((t.vb()*4+4)/8|0),$t=t.C,t.L.O!=1&&(t.G&J1)==0&&n.Vd(t,448),n.Id(t,Et,It,w,!1),n.Vd(t,$t),t.Bb(t.X)),st!=null&&(t.Bb((t.X*2+1)/3|0),Et=n.xi(t.R,n.Ll(t.L,e))+((Lt+t.ub(st))/2+1),It=n.yi(t.R,n.Ml(t.L,e))+((t.vb()*4+4)/8|0),$t=t.C,n.Vd(t,n.wm(t.L,e)?384:448),n.Id(t,Et,It,st,!0),n.Vd(t,$t),t.Bb(t.X)),B!=null&&(P=n.Md(t,e),t.Bb((t.X*2+1)/3|0),Et=n.xi(t.R,n.Ll(t.L,e))+.7*t.vb()*k.Math.sin(P),It=n.yi(t.R,n.Ml(t.L,e))+.7*t.vb()*k.Math.cos(P),$t=t.C,!t.K&&t.L.O!=1&&n.Vd(t,n.qd(t,e)),n.Id(t,Et,It,B,!1),n.Vd(t,$t),t.Bb(t.X)),x==0&&Ft==0){t.C==-8&&n.Vd(t,-9);return}for(M=d(l.X6,Bt,6,4,15,1),E=0;E<n.Io(t.L,e);E++)for(u=n.Xo(t.L,e,E),ft=0;ft<2;ft++)n.Ul(t.L,ft,u)==e&&(ct=n.Tl(t.L,n.Ul(t.L,ft,u),n.Ul(t.L,1-ft,u)),ct<uA?(M[0]-=ct+k0,M[3]+=ct+t1):ct<0?(M[2]+=ct+k0,M[3]-=ct):ct<k0?(M[1]+=ct,M[2]+=k0-ct):(M[0]+=ct-k0,M[1]+=t1-ct));if(n.Wo(t.L,e)==0?n.Dm(t.L,e)?M[3]-=.2:M[1]-=.2:M[1]-=.1,(ht!=null||st!=null)&&(M[1]+=10),(N!=null||w!=null)&&(M[3]+=10),S=\"\",x!=0&&(z=t.ub(\"H\"),p=0,m=t.vb(),x==-1?(S=\"n\",t.Bb((t.X*2+1)/3|0),p=t.ub(S)):x>1&&(S=\"\"+x,t.Bb((t.X*2+1)/3|0),p=t.ub(S)),M[1]<.6||M[3]<.6?(L=n.yi(t.R,n.Ml(t.L,e)),M[1]<=M[3]?(M[1]+=10,Q=n.xi(t.R,n.Ll(t.L,e))+(Lt+z)/2):(M[3]+=10,Q=n.xi(t.R,n.Ll(t.L,e))-(Lt+z)/2-p)):(Q=n.xi(t.R,n.Ll(t.L,e)),M[0]<M[2]?(M[0]+=10,L=n.yi(t.R,n.Ml(t.L,e))-m):(M[2]+=10,L=n.yi(t.R,n.Ml(t.L,e))+m)),p>0&&(Et=Q+(z+p)/2,It=L+((t.vb()*4+4)/8|0),n.Id(t,Et,It,S,!0),t.Bb(t.X)),n.Id(t,Q,L,\"H\",!0)),D=0,Ft!=0){for(ut=50,s=0,J=0;J<4;J++)h=J>1?J-2:J+2,M[J]<ut?(D=J,ut=M[J],s=M[h]):M[J]==ut&&M[h]>s&&(D=J,s=M[h]);switch(D){case 0:Q=n.xi(t.R,n.Ll(t.L,e)),L=n.yi(t.R,n.Ml(t.L,e))-t.V-Lt/2;break;case 1:Q=n.xi(t.R,n.Ll(t.L,e))+t.V+Lt/2,L=n.yi(t.R,n.Ml(t.L,e));break;case 2:Q=n.xi(t.R,n.Ll(t.L,e)),L=n.yi(t.R,n.Ml(t.L,e))+t.V+Lt/2;break;default:Q=n.xi(t.R,n.Ll(t.L,e))-t.V-Lt/2,L=n.yi(t.R,n.Ml(t.L,e))}if(Ft==1)y.pj(t.$,new Tt.FN(Q-t.V,L-t.V,2*t.V,2*t.V)),t.K||y.pj(t.U,new n.ie(Q,L,n.wd(t,e)?-3:t.p[e]));else{switch(D){case 2:case 0:Nt=2*t.V,vt=0,Q-=t.V;break;case 1:Nt=0,vt=2*t.V,L-=t.V;break;default:Nt=0,vt=2*t.V,L-=t.V}y.pj(t.$,new Tt.FN(Q-t.V,L-t.V,2*t.V,2*t.V)),t.K||y.pj(t.U,new n.ie(Q,L,n.wd(t,e)?-3:t.p[e])),y.pj(t.$,new Tt.FN(Q+Nt-t.V,L+vt-t.V,2*t.V,2*t.V)),t.K||y.pj(t.U,new n.ie(Q+Nt,L+vt,n.wd(t,e)?-3:t.p[e]))}}t.C==-8&&n.Vd(t,-9)},n.Fd=function(t,e){var A,P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S,p,M,z;if(p=new n.je,A=new n.je,D=new n.je,B=new Tt.qN,g=new Tt.qN,r=n.Ul(t.L,0,e),i=n.Ul(t.L,1,e),t.yb(e,n.xi(t.R,n.Ll(t.L,r)),n.yi(t.R,n.Ml(t.L,r)),n.xi(t.R,n.Ll(t.L,i)),n.yi(t.R,n.Ml(t.L,i))),!n.Lm(t.L,r)&&!n.Lm(t.L,i)&&jt(Z(Pt(n.Jl(t.L,r),n.Jl(t.L,i)),P0),0)&&n.Vd(t,-8),t.o[r]?(p.a=t.o[r].a,p.c=t.o[r].b):(p.a=n.xi(t.R,n.Ll(t.L,r)),p.c=n.yi(t.R,n.Ml(t.L,r))),t.o[i]?(p.b=t.o[i].a,p.d=t.o[i].b):(p.b=n.xi(t.R,n.Ll(t.L,i)),p.d=n.yi(t.R,n.Ml(t.L,i))),(n.cm(t.L,e)&Qe)!=0){n.Rd(t,p)&&t.qb(p),n.Vd(t,-9);return}switch(u=n.dm(t.L,e)==8?0:n.dm(t.L,e)==16?1:n.am(t.L,e),u){case 1:if(o=n.dm(t.L,e),(t.G&128)!=0&&(o==257||o==129)&&(S=n.Ul(t.L,0,e),h=n.Cl(t.L,S),h!=0)){for(s=n.Bl(t.L,S),w=0,P=0;P<t.L.f;P++)n.Cl(t.L,P)==h&&n.Bl(t.L,P)==s&&++w;w==1&&(o=1)}switch(o){case 1:n.Rd(t,p)&&n.kd(t,p,r,i);break;case 257:n.Od(t,p,r,i);break;case 129:for(M=p.b-p.a,z=p.d-p.c,n.zm(t.L,n.To(t.L,r,i))?(Q=-3,L=-3):(Q=t.p[r],L=n.qd(t,r),Q==n.yl(t.L,r)&&(Q=L)),b=2;b<17;b+=2)A.a=p.a+b*M/17-b*z/128,A.c=p.c+b*z/17+b*M/128,A.b=p.a+b*M/17+b*z/128,A.d=p.c+b*z/17-b*M/128,n.Rd(t,A)&&(n.Vd(t,b<9?Q:L),t.pb(A),n.Vd(t,t.Q));break;case 16:n.Rd(t,p)&&n.md(t,p,r,i)}break;case 0:case 2:if((t.s[r]||n.Mo(t.L,r)==2)&&(t.s[i]||n.Mo(t.L,i)==2)&&!n.cq(t.L,e)&&u==2){if(!n.Rd(t,p))break;n.Ad(t,p.b-p.a,p.d-p.c,B),M=B.a/2,z=B.b/2,A.a=p.a+M,A.c=p.c+z,A.b=p.b+M,A.d=p.d+z,D.a=p.a-M,D.c=p.c-z,D.b=p.b-M,D.d=p.d-z,n.dm(t.L,e)==386&&n.Qd(A,D),n.kd(t,A,r,i),u==2?n.kd(t,D,r,i):n.hd(t,D,r,i)}else(t.s[i]||n.Mo(t.L,i)==2)&&u==2?n.Bd(t,p,e,!1):(t.s[r]||n.Mo(t.L,r)==2)&&u==2?n.Bd(t,p,e,!0):(m=n.zp(t.L,e),m==0&&(m=1),A.a=p.a,A.c=p.c,A.b=p.b,A.d=p.d,n.Ad(t,p.b-p.a,p.d-p.c,B),m>0?(D.a=p.a+B.a,D.c=p.c+B.b,D.b=p.b+B.a,D.d=p.d+B.b,(n.zd(t,r,i,1,g)||n.Wo(t.L,r)>1)&&(D.a+=g.a+B.b,D.c+=g.b-B.a),(n.zd(t,i,r,-1,g)||n.Wo(t.L,i)>1)&&(D.b+=g.a-B.b,D.d+=g.b+B.a)):(D.a=p.a-B.a,D.c=p.c-B.b,D.b=p.b-B.a,D.d=p.d-B.b,(n.zd(t,r,i,-1,g)||n.Wo(t.L,r)>1)&&(D.a+=g.a+B.b,D.c+=g.b-B.a),(n.zd(t,i,r,1,g)||n.Wo(t.L,i)>1)&&(D.b+=g.a-B.b,D.d+=g.b+B.a)),n.dm(t.L,e)==386&&n.Qd(A,D),n.Rd(t,A)&&n.kd(t,A,r,i),u==2?n.Rd(t,D)&&n.kd(t,D,r,i):n.Rd(t,D)&&n.hd(t,D,r,i));break;case 3:n.Rd(t,p)&&(n.kd(t,p,r,i),n.Ad(t,p.b-p.a,p.d-p.c,B),n.ld(t,p,r,i,B.a,B.b,A),n.ld(t,p,r,i,-B.a,-B.b,A));break;case 4:n.Rd(t,p)&&(n.Ad(t,p.b-p.a,p.d-p.c,B),n.ld(t,p,r,i,1.5*B.a,1.5*B.b,A),n.ld(t,p,r,i,.5*B.a,.5*B.b,A),n.ld(t,p,r,i,-.5*B.a,-.5*B.b,A),n.ld(t,p,r,i,-1.5*B.a,-1.5*B.b,A));break;case 5:n.Rd(t,p)&&(n.kd(t,p,r,i),n.Ad(t,p.b-p.a,p.d-p.c,B),n.ld(t,p,r,i,2*B.a,2*B.b,A),n.ld(t,p,r,i,B.a,B.b,A),n.ld(t,p,r,i,-B.a,-B.b,A),n.ld(t,p,r,i,-2*B.a,-2*B.b,A))}t.C==-8&&n.Vd(t,-9)},n.Gd=function(t){var e,A,P,r,i,D,u,o,Q,L,w,s,h,b,g;for(h=!1,P=0;P<t.L.g;P++)Q=null,n.ym(t.L,P)?(w=n.Wl(t.L,P),L=n.Vl(t.L,P),Q=w==L?\"[\"+w+\"]\":\"[\"+w+\":\"+L+\"]\"):(n.cm(t.L,P)&oA)!=0?Q=(n.cm(t.L,P)&oA)==m0?\"a\":(n.cm(t.L,P)&384)==256?\"r!a\":\"!a\":(n.cm(t.L,P)&384)!=0&&(Q=(n.cm(t.L,P)&384)==256?\"r\":\"!r\"),s=(n.cm(t.L,P)&re)>>17,s!=0&&(Q=(Q??\"\")+s),Q!=null&&(e=n.Ul(t.L,0,P),A=n.Ul(t.L,1,P),h||(t.Bb((t.X*2+1)/3|0),h=!0),b=(n.xi(t.R,n.Ll(t.L,e))+n.xi(t.R,n.Ll(t.L,A)))/2,g=(n.yi(t.R,n.Ml(t.L,e))+n.yi(t.R,n.Ml(t.L,A)))/2,i=n.xi(t.R,n.Ll(t.L,A))-n.xi(t.R,n.Ll(t.L,e)),D=n.yi(t.R,n.Ml(t.L,A))-n.yi(t.R,n.Ml(t.L,e)),r=k.Math.sqrt(i*i+D*D),o=.6*t.ub(Q),u=.55*t.vb(),r!=0&&(i>0?n.Id(t,b+o*D/r,g-u*i/r,Q,!0):n.Id(t,b-o*D/r,g+u*i/r,Q,!0)));h&&t.Bb(t.X)},n.Hd=function(t,e,A,P){y.pj(t.$,new Tt.FN(e-t.V,A-t.V,2*t.V,2*t.V)),t.K||y.pj(t.U,new n.ie(e,A,n.wd(t,P)?-3:t.p[P]))},n.Id=function(t,e,A,P,r){var i,D,u;r&&(i=t.ub(P),D=i/2+(t.vb()/8|0),u=t.vb()/2|0,(P==\"+\"||P==\"-\")&&(u=u*2/3),y.pj(t.$,new Tt.FN(e-D,A-u,2*D,2*u))),t.K||t.sb(P,e,A)},n.Jd=function(t){var e;e=t.a,t.a=t.b,t.b=e,e=t.c,t.c=t.d,t.d=e},n.Kd=function(t,e,A){var P;return P=e==0?G1+t[0]-t[t.length-1]:t[e]-t[e-1],A>Pr&&A<s0?P-=2*k.Math.cos(A+Sn):P-=.5*k.Math.cos(A+Sn),P},n.Ld=function(t){var e;return e=new Tt.EN,t.a<=t.b?(e.c=t.a,e.b=t.b-t.a):(e.c=t.b,e.b=t.a-t.b),t.c<=t.d?(e.d=t.c,e.a=t.d-t.c):(e.d=t.d,e.a=t.c-t.d),e},n.Md=function(t,e){var A,P,r,i,D,u,o;for(A=d(l.X6,Bt,6,n.Ho(t.L,e),15,1),r=0;r<n.Ho(t.L,e);r++)A[r]=n.Tl(t.L,e,n.Vo(t.L,e,r));for(c.lzb(A,c.Szb(y0(y.Xqb.prototype.jd,y.Xqb,[]))),i=n.Nd(A,0),D=n.Kd(A,0,i),P=1;P<A.length;P++)u=n.Nd(A,P),o=n.Kd(A,P,u),D<o&&(D=o,i=u);return i},n.Nd=function(t,e){var A;return e>0?(t[e]+t[e-1])/2:(A=t1+(t[0]+t[t.length-1])/2,A>t1?A-G1:A)},n.Od=function(t,e,A,P){var r,i,D,u;if(u=new n.je,!(e.a==e.b&&e.c==e.d)){for(u.a=e.a,u.c=e.c,u.b=e.b,u.d=e.d,D=n.Ld(u),r=0;r<t.$.a.length;r++)if(i=y.uj(t.$,r),!(i.c>D.c+D.b||i.d>D.d+D.a||D.c>i.c+i.b||D.d>i.d+i.a)){if(n.Pd(t,u.a,u.c,r)){if(n.Pd(t,u.b,u.d,r))return;n.Sd(t,u,0,r),n.Od(t,u,A,P);return}if(n.Pd(t,u.b,u.d,r)){n.Sd(t,u,1,r),n.Od(t,u,A,P);return}}n.nd(t,u,A,P)}},n.Pd=function(t,e,A,P){var r;return(t.G&1)!=0?!1:(r=y.uj(t.$,P),e>r.c&&e<r.c+r.b&&A>r.d&&A<r.d+r.a)},n.Qd=function(t,e){var A;A=t.b,t.b=e.b,e.b=A,A=t.d,t.d=e.d,e.d=A},n.Rd=function(t,e){var A,P,r,i,D,u;if(e.a==e.b&&e.c==e.d){for(D=new y.rqb(t.$);D.a<D.c.a.length;)if(i=y.qqb(D),Tt.AN(i,e.a,e.c))return!1;return!0}for(u=n.Ld(e),A=!1,e.a>e.b&&(n.Jd(e),A=!0),P=0;P<t.$.a.length;P++)if(i=y.uj(t.$,P),!(i.c>u.c+u.b||i.d>u.d+u.a||u.c>i.c+i.b||u.d>i.d+i.a)){if(n.Pd(t,e.a,e.c,P))return n.Pd(t,e.b,e.d,P)?(A&&n.Jd(e),!1):(n.Sd(t,e,0,P),r=n.Rd(t,e),A&&n.Jd(e),r);if(n.Pd(t,e.b,e.d,P))return n.Sd(t,e,1,P),r=n.Rd(t,e),A&&n.Jd(e),r}return A&&n.Jd(e),!0},n.Sd=function(t,e,A,P){var r,i,D,u,o,Q,L,w,s,h,b;A==0?(w=e.a,h=e.c,s=e.b,b=e.d):(w=e.b,h=e.d,s=e.a,b=e.c),L=y.uj(t.$,P),o=s>w?L.c+L.b:L.c,Q=b>h?L.d+L.a:L.d,r=s-w,i=b-h,k.Math.abs(r)>k.Math.abs(i)?h==b?(D=o,u=h):(D=w+r*(Q-h)/i,s>w==o>D?u=Q:(D=o,u=h+i*(o-w)/r)):w==s?(D=w,u=Q):(u=h+i*(o-w)/r,b>h==Q>u?D=o:(D=w+r*(Q-h)/i,u=Q)),A==0?(e.a=D,e.c=u):(e.b=D,e.d=u)},n.Td=function(t,e){var A,P,r,i,D,u;if(t.L.q!=0){for(n.aw(t.L,(t.G&256)!=0?63:(t.G&512)!=0?95:31),t.B=e,n.ed(t),r=n.fw(t.L),i=!1,t.p=d(l.Z6,H,6,t.L.q,15,1),A=0;A<t.L.q;A++)t.p[A]=n.yl(t.L,A),t.p[A]!=0&&(i=!0),n.Lm(t.L,A)&&(t.p[A]=128),n.nm(t.L,A)&&(t.G&c1)==0&&(t.p[A]=256);for(n.Vd(t,-10),n.td(t),n.sd(t),n.ud(t),n.bd(t),t.Bb(t.X),t.zb(t.Y),n.Vd(t,t.Q),n.xd(t),c.kzb(t.U.a,0),c.kzb(t.$.a,0),(t.G&1)!=0&&(n.Cd(t,r),n.Dd(t),n.Gd(t)),D=0;D<t.L.q;D++)n.wd(t,D)?(n.Vd(t,-3),n.Ed(t,D,r),n.Vd(t,t.Q)):t.p[D]!=0?(n.Vd(t,t.p[D]),n.Ed(t,D,r),n.Vd(t,t.Q)):!i&&t.L.O!=1&&n.Ol(t.L,D)!=1&&n.Ol(t.L,D)!=6&&(t.G&r0)==0&&n.El(t.L,D)==null&&n.Ol(t.L,D)<n.Xc.length&&n.Xc[n.Ol(t.L,D)]!=0?(u=n.Xc[n.Ol(t.L,D)],n.Yd(t,(P=t.M!=0?t.M:t.D!=0?t.D:-1,lt.H3(u,P))),n.Ed(t,D,r),n.Vd(t,t.Q)):n.Ed(t,D,r);(t.G&1)==0&&(n.Dd(t),n.Gd(t),n.Cd(t,r))}},n.Ud=function(t,e,A,P){var r;switch(r=A/2,P&U1){case U1:if(e){t.w.a=e.c+e.b/2,t.w.b=e.d+e.a-r;break}case 0:t.w.a=t.v.c+t.v.b/2,t.w.b=t.v.d+t.v.a+r,e&&t.w.b>e.d+e.a-r&&(t.w.b=e.d+e.a-r);break;case Le:if(e){t.w.a=e.c+e.b/2,t.w.b=e.d+r;break}case Ue:t.w.a=t.v.c+t.v.b/2,t.w.b=t.v.d-r,e&&t.w.b<e.d+r&&(t.w.b=e.d+r)}},n.Vd=function(t,e){if(!t.K&&(e==-10&&(t.C=-999,e=t.Q),e!=-2&&e!=-7&&t.N!=0&&(e=-4),e!=t.C&&!(t.C==-8&&e!=-9)))switch(e==-8&&(t.O=t.C),e==-9&&(e=t.O),t.C=e,e){case 0:t.Ab(t.F==0?N0:t.F);break;case-6:t.Ab(t.F);break;case-4:t.Ab(t.N);break;case-2:t.Ab(t.t);break;case-3:t.Ab(t.u);break;case-7:t.Ab(t.H);break;case-8:t.Ab(t.I);break;case-5:t.Ab(t.P);break;case 64:t.Ab(-14655233);break;case 128:t.Ab(ie);break;case 256:t.Ab(-4194049);break;case 192:t.Ab(-16711936);break;case 320:t.Ab(-24576);break;case 384:t.Ab(-16744448);break;case 448:t.Ab(-6291456);break;case 1:t.Ab(IA);break;default:t.Ab(N0)}},n.Wd=function(t,e){t.G=e},n.Xd=function(t,e,A){t.Q=-6,t.F=e,t.D=A,n._d(t)},n.Yd=function(t,e){if(t.N!=0){t.C!=-4&&(t.C=-4,t.Ab(t.N));return}t.C=-5,t.P=e,t.Ab(e)},n.Zd=function(t){var e,A,P,r,i;for(r=n.xi(t.R,n.Ll(t.L,0)),A=n.xi(t.R,n.Ll(t.L,0)),i=n.yi(t.R,n.Ml(t.L,0)),P=n.yi(t.R,n.Ml(t.L,0)),e=0;e<t.L.q;e++)r>n.xi(t.R,n.Ll(t.L,e))&&(r=n.xi(t.R,n.Ll(t.L,e))),A<n.xi(t.R,n.Ll(t.L,e))&&(A=n.xi(t.R,n.Ll(t.L,e))),i>n.yi(t.R,n.Ml(t.L,e))&&(i=n.yi(t.R,n.Ml(t.L,e))),P<n.yi(t.R,n.Ml(t.L,e))&&(P=n.yi(t.R,n.Ml(t.L,e)));return new Tt.FN(r,i,A-r,P-i)},n.$d=function(t,e,A){var P,r;return t.L.q==0?null:(t.v=n.Zd(t),P=t.R.c*n.Pl(t.L),r=new n.Bi(t.v,e,P,A),r.c==1&&r.a==0&&r.b==0?r=null:(n.ri(r,t.R),n.ui(r,t.v)),n.Ud(t,e,P,A),r)},n._d=function(t){var e;e=t.M!=0?t.M:t.D!=0?t.D:-1,t.t=lt.I3(e),t.u=lt.H3(JA,e),t.H=-24321,t.I=-6291392},n.ae=function(t,e,A,P){var r;return n.be(t,e,A,P),n.wi(t.R)?null:(r=t.R,n.si(t.R,t.L),t.R=new n.zi,r)},n.be=function(t,e,A,P){var r,i,D,u;if(t.L.q==0)return null;for(D=t.Cb(A,P),n.aw(t.L,(t.G&256)!=0?63:(t.G&512)!=0?95:31),n.xd(t),c.kzb(t.U.a,0),c.kzb(t.$.a,0),t.B=e,n.ed(t),t.Bb(t.X),t.K=!0,i=0;i<t.L.q;i++)n.Ed(t,i,null);return t.K=!1,r=t.R.c*n.Pl(t.L),n.od(t,r),n.Ud(t,A,r,P),!A||Tt.BN(A,t.v)?D:(u=new n.Bi(t.v,A,r,P),n.ri(u,t.R),n.ui(u,t.v),n.ti(u,t.w),D?(n.ri(u,D),D):u)},n.ce=function(t){n.de.call(this,t,0)},n.de=function(t,e){n.ad(this),this.L=t,this.G=e,this.wb()},G(124,1,{124:1}),U.wb=function(){n.vd(this)},U.xb=function(t,e,A,P){},U.yb=function(t,e,A,P,r){},U.Cb=function(t,e){return n.$d(this,t,e)},U.r=0,U.t=0,U.u=0,U.A=0,U.C=0,U.D=0,U.F=0,U.G=0,U.H=0,U.I=0,U.J=0,U.K=!1,U.M=0,U.N=0,U.O=0,U.P=0,U.Q=0,U.S=0,U.T=0,U.V=0,U.W=0,U.X=0,U.Y=0,U.Z=0,n.Yc=.15,n.Zc=.06,n.$c=.6,l.c7=O(124),n.ie=function(t,e,A){this.b=t,this.c=e,this.a=A},G(142,1,{142:1},n.ie),U.a=0,U.b=0,U.c=0,l.a7=O(142),n.je=function(){},G(67,1,{},n.je),U.a=0,U.b=0,U.c=0,U.d=0,l.b7=O(67),n.ke=function(t,e){var A;if(t.i==null)return!1;for(A=0;A<t.i.length;A++)if(!e.Gb(t.i[A].a,t.i[A].b))return!1;return!0},n.le=function(t,e,A){var P;if(t.i!=null)for(P=0;P<t.i.length;P++)t.i[P].a+=e,t.i[P].b+=A},n.me=function(t,e){var A;if(t.i!=null)for(A=0;A<t.i.length;A++)t.i[A].a*=e,t.i[A].b*=e},n.ne=function(t,e,A){var P;if(t.i!=null)for(P=0;P<t.i.length;P++)t.i[P].a=t.o[P]+e-t.k,t.i[P].b=t.p[P]+A-t.n},n.oe=function(t,e,A){var P,r;if(t.k=e,t.n=A,t.i!=null)for(r=t.i.length,t.o=d(l.X6,Bt,6,r,15,1),t.p=d(l.X6,Bt,6,r,15,1),P=0;P<r;P++)t.o[P]=t.i[P].a,t.p[P]=t.i[P].b},n.pe=function(t,e,A){var P,r,i;if(t.i!=null)for(P=0;P<t.i.length;P++)i=t.p[P]*e,r=t.o[P]-A,t.i[P].a=t.k+i*k.Math.sin(r),t.i[P].b=t.n+i*k.Math.cos(r)},n.qe=function(t,e,A){var P,r,i,D;if(t.k=e,t.n=A,t.i!=null)for(D=t.i.length,t.o=d(l.X6,Bt,6,D,15,1),t.p=d(l.X6,Bt,6,D,15,1),i=0;i<D;i++)P=e-t.i[i].a,r=A-t.i[i].b,t.p[i]=k.Math.sqrt(P*P+r*r),t.o[i]=n.jo(e,A,t.i[i].a,t.i[i].b)},G(192,1,{192:1}),U.Ib=function(t){var e,A;if(this.i==null)return null;for(e=new Tt.FN(this.i[0].a,this.i[0].b,0,0),A=1;A<this.i.length;A++)e.c>this.i[A].a?(e.b+=e.c-this.i[A].a,e.c=this.i[A].a):e.b<this.i[A].a-e.c&&(e.b=this.i[A].a-e.c),e.d>this.i[A].b?(e.a+=e.d-this.i[A].b,e.d=this.i[A].b):e.a<this.i[A].b-e.d&&(e.a=this.i[A].b-e.d);return e},U.Mb=function(t){n.me(this,t)},U.ob=function(){var t;return t=new T.Bjb,T.Ajb(t,rr+this.Kb()+'\"'+this.Jb()+KA),t.a},U.Nb=function(t,e){n.ne(this,t,e)},U.Ob=function(t,e){n.pe(this,t,e)},U.Pb=function(t,e){n.qe(this,t,e)},U.g=!1,U.j=!1,U.k=0,U.n=0,l.d7=O(192),n.xe=function(t,e,A){if(t.f[e])return 0;if(n.Ol(t.k,e)==7){if(n.Ho(t.k,e)==3)return 6;if(n.Wo(t.k,e)==2)return t.a?0:4}else{if(n.Ol(t.k,e)==8)return 10;if(n.Ol(t.k,e)==15||n.Ol(t.k,e)==33){if(n.Wo(t.k,e)==3)return 8}else if(n.Ol(t.k,e)==16||n.Ol(t.k,e)==34||n.Ol(t.k,e)==52){if(n.Wo(t.k,e)==2)return 11;if(n.Wo(t.k,e)==3)return n.xl(t.k,e)==1?12:(A&&n.en(t.k,e,1),5)}else if(n.Ol(t.k,e)==6)return n.xl(t.k,e)==-1?n.Ho(t.k,e)==3?16:n.Io(t.k,e)==3?15:14:(A&&n.en(t.k,e,-1),n.Ho(t.k,e)!=n.Io(t.k,e)?2:3)}return 0},n.ye=function(t,e,A){if(t.f[e])return 0;if(t.a){if(n.Ho(t.k,e)!=3)return 0}else if(n.Ho(t.k,e)>3)return 0;return n.Ol(t.k,e)==6?(A&&n.en(t.k,e,1),2):n.Ol(t.k,e)==5?4:0},n.ze=function(t,e,A){if(n.xl(t.k,e)!=0)return 0;if(t.a){if(n.Ol(t.k,e)==5)return n.rp(t.k,e)!=2?0:(A&&n.en(t.k,e,1),1);if(n.Ol(t.k,e)==7)return n.rp(t.k,e)!=2?0:(A&&n.en(t.k,e,-1),n.Ce(t,e)?6:3);if(n.Ol(t.k,e)==8)return n.rp(t.k,e)!=1?0:(A&&n.en(t.k,e,-1),n.Ce(t,e)?7:4);if(n.Ol(t.k,e)==16)return n.rp(t.k,e)!=1?0:(A&&n.en(t.k,e,-1),n.Ce(t,e)?5:2);if(n.Ol(t.k,e)==34)return n.rp(t.k,e)!=1?0:(A&&n.en(t.k,e,-1),n.Ce(t,e)?4:1)}else{if(n.Ol(t.k,e)==5)return n.rp(t.k,e)>2?0:(A&&n.en(t.k,e,1),1);if(n.Ol(t.k,e)==7)return n.rp(t.k,e)>2?0:(A&&n.en(t.k,e,-1),n.Ce(t,e)?5:3);if(n.Ol(t.k,e)==8)return n.rp(t.k,e)>1?0:(A&&n.en(t.k,e,-1),n.Ce(t,e)?7:4);if(n.Ol(t.k,e)==16)return n.rp(t.k,e)>1?0:(A&&n.en(t.k,e,-1),n.Ce(t,e)?5:2)}return 0},n.Ae=function(t,e,A){var P,r,i;if(P=n.Ol(t.k,e),P>=5&&P<=8||P==15||P==16||P==33||P==34||P==52){if(i=n.lp(t.k,e),i!=0)return!0;if(r=n.xl(t.k,e),P==5&&r>=0)return A&&n.en(t.k,e,r-1),!0;if(P!=5&&r<=0)return A&&n.en(t.k,e,r+1),!0}return!1},n.Be=function(t){var e,A,P,r,i,D,u,o,Q,L,w,s,h,b;for(e=0;e<t.k.f;e++)if(n.aw(t.k,1),t.d[e])for(D=!1,u=d(l.Z6,H,6,t.k.f,15,1),b=d(l.Z6,H,6,t.k.f,15,1),o=d(l.Z6,H,6,t.k.f,15,1),u[0]=e,b[e]=-1,o[e]=1,r=0,Q=0;r<=Q&&!D;){for(i=u[r],L=0;L<n.Wo(t.k,i)&&!D;L++)if(w=(o[i]&1)==1^n.am(t.k,n.Xo(t.k,i,L))>1,P=n.Vo(t.k,i,L),o[P]==0&&w)if(t.d[P]){if((o[i]&1)==1){for(t.d[e]=!1,t.d[P]=!1,t.n+=2,h=i,s=0;s<o[i];s++)A=n.To(t.k,P,h),t.e[A]&&(t.e[A]=!1,--t.c),n.En(t.k,A,n.am(t.k,A)==1?2:n.am(t.k,A)-1),P=h,h=b[P];D=!0}}else u[++Q]=P,b[P]=i,o[P]=o[i]+1;++r}},n.Ce=function(t,e){var A;for(A=0;A<n.Wo(t.k,e);A++)if(n.Hm(t.k,n.Vo(t.k,e,A)))return!0;return!1},n.De=function(t,e,A){var P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m;if(e!=null)t.e=e;else for(t.e=d(l.teb,wt,6,t.k.g,16,1),s=0;s<t.k.g;s++)n.dm(t.k,s)==8&&(t.e[s]=!0,n.In(t.k,s,1));for(h=0;h<t.k.g;h++)t.e[h]&&++t.c;for(t.d=d(l.teb,wt,6,t.k.f,16,1),t.f=d(l.teb,wt,6,t.k.f,16,1),u=0;u<t.k.f;u++){for(b=0,g=0;g<n.Wo(t.k,u);g++)t.e[n.Xo(t.k,u,g)]&&++b;b>0&&(t.d[u]=!0,++t.b,b==3&&(t.f[u]=!0))}for(t.i=d(l.teb,wt,6,A.i.a.length,16,1),m=0;m<A.i.a.length;m++)for(t.i[m]=!0,Q=y.uj(A.j,m),L=0,w=Q.length;L<w;++L)if(o=Q[L],!t.e[o]){t.i[m]=!1;break}for(t.j=d(l.teb,wt,6,t.k.f,16,1),t.g=d(l.teb,wt,6,t.k.f,16,1),B=0;B<A.i.a.length;B++)if(t.i[B]&&y.uj(A.j,B).length!=6)for(r=y.uj(A.i,B),i=0,D=r.length;i<D;++i)P=r[i],y.uj(A.j,B).length==5?t.g[P]=!0:t.j[P]=!0;t.n=0},n.Ee=function(t,e,A){var P,r,i,D;if(n.aw(t.k,1),D=new n.zt(t.k,1),n.De(t,e,D),t.c==0)return!0;if(A)for(r=0;r<t.k.f;r++)t.d[r]&&n.Ol(t.k,r)==7&&(t.f[r]||n.Wo(t.k,r)==3&&!t.g[r])&&n.en(t.k,r,1);for(t.a=!1,n.Pe(t,A),t.k.K&&n.He(t),n.Qe(t,D),n.Me(t,D),n.Oe(t),n.Ie(t);n.Ke(t,D,A);)n.Ie(t);for(n.Le(t,D,A)&&n.Ie(t);n.Je(t,D,A);)n.Ie(t);for(;t.c!=0;)for(i=0;i<t.k.g;i++)t.e[i]&&(n.Ge(t,i),n.Ie(t));for(A&&n.Re(t),t.b-t.n>=2&&n.Be(t),P=0;P<t.k.f;P++)t.d[P]&&n.kp(t.k,P)!=0&&(A&&(n.xl(t.k,P)==1&&n.Dm(t.k,P)||n.xl(t.k,P)==-1&&n.Ol(t.k,P)==5)?n.en(t.k,P,0):n.sn(t.k,P,32),++t.n);return t.b==t.n},n.Fe=function(t,e){return t==e-1?0:t+1},n.Ge=function(t,e){var A,P,r,i;for(n.dm(t.k,e)==1&&(n.In(t.k,e,2),t.n+=2),r=0;r<2;r++)for(A=n.Ul(t.k,r,e),t.d[A]=!1,i=0;i<n.Wo(t.k,A);i++)P=n.Xo(t.k,A,i),t.e[P]&&(t.e[P]=!1,--t.c)},n.He=function(t){var e,A,P,r,i,D,u,o;for(A=0;A<t.k.g;A++)if(t.e[A])for(r=0;r<2;r++){for(u=n.Ul(t.k,r,A),e=!1,D=0;D<n.Wo(t.k,u);D++)if(A!=n.Xo(t.k,u,D)&&t.e[n.Xo(t.k,u,D)]){e=!0;break}if(!e){for(o=A,P=n.Ul(t.k,1-r,A);o!=-1;)for(t.d[u]=!1,t.e[o]=!1,--t.c,n.In(t.k,o,8),o=-1,u=P,i=0;i<n.Wo(t.k,u);i++)if(t.e[n.Xo(t.k,u,i)])if(o==-1)o=n.Xo(t.k,u,i),P=n.Vo(t.k,u,i);else{u=-1,o=-1;break}u!=-1&&(t.d[P]=!1);break}}},n.Ie=function(t){var e,A,P,r,i,D,u;do for(u=!1,A=0;A<t.k.g;A++)if(t.e[A]){for(i=!1,r=0;r<2;r++){for(P=n.Ul(t.k,r,A),e=!1,D=0;D<n.Wo(t.k,P);D++)if(A!=n.Xo(t.k,P,D)&&t.e[n.Xo(t.k,P,D)]){e=!0;break}if(!e){i=!0;break}}i&&(u=!0,n.Ge(t,A))}while(u)},n.Je=function(t,e,A){var P,r,i,D,u,o,Q,L,w,s,h,b,g,B;for(b=0;b<e.i.a.length;b++)if(y.uj(e.j,b).length!=6&&t.i[b]){for(w=!0,B=y.uj(e.j,b),L=0;L<B.length;L++)if(!t.e[B[L]]){w=!1;break}if(w){for(u=-1,o=0,g=y.uj(e.i,b),Q=0;Q<g.length;Q++)P=g[Q],h=t.g[P]?n.xe(t,P,!1):n.ye(t,P,!1),o<h&&(o=h,u=Q);if(u!=-1){if(s=g[u],A){for(r=g,i=0,D=r.length;i<D;++i)P=r[i],P!=s&&n.Ae(t,P,!0);t.g[s]?n.xe(t,s,!0):n.ye(t,s,!0)}return n.Ne(t,s),!0}}}return!1},n.Ke=function(t,e,A){var P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S;for(S=d(l.Z6,H,6,t.k.g,15,1),g=0;g<e.i.a.length;g++){for(m=y.uj(e.j,g),w=!0,o=0;o<m.length;o++)if(!t.e[m[o]]){w=!1;break}if(w)for(u=0;u<m.length;u++)++S[m[u]]}for(r=t.c,b=0;b<e.i.a.length;b++)for(D=!1,B=y.uj(e.i,b),m=y.uj(e.j,b),u=0;u<m.length&&!D;u++)if(S[m[u]]>1&&(i=n.Fe(u,m.length),S[m[i]]==1)){for(Q=!1,h=n.Fe(i,m.length);S[m[h]]==1;)(!n.Ae(t,B[h],!1)||m.length!=6&&n.Ol(t.k,B[h])!=6)&&(Q=!0),h=n.Fe(h,m.length);if(!Q&&(P=h>i?h-i:h+m.length-i,P>2&&(P&1)==1)){for(s=1;s<P;s+=2)L=i+s<m.length?i+s:i+s-m.length,A&&(n.Ae(t,B[L],!0),n.Ae(t,B[L==B.length-1?0:L+1],!0)),n.Ge(t,m[L]);D=!0}}return r!=t.c},n.Le=function(t,e,A){var P,r,i,D,u,o,Q,L;for(P=!1,o=0;o<e.i.a.length;o++)if(y.uj(e.j,o).length==6){for(u=!0,Q=y.uj(e.i,o),L=y.uj(e.j,o),i=0;i<6;i++)if(!n.Ae(t,Q[i],!1)||!t.e[L[i]]){u=!1;break}if(u){if(A)for(D=0;D<6;D++)n.Ae(t,Q[D],!0);for(r=0;r<6;r+=2)n.Ge(t,L[r]);P=!0;break}}return P},n.Me=function(t,e){var A;for(A=0;A<t.k.g;A++)t.e[A]&&n.st(e,A)&&(n.Ne(t,n.Ul(t.k,0,A)),n.Ne(t,n.Ul(t.k,1,A)))},n.Ne=function(t,e){var A,P;for(t.d[e]&&(t.d[e]=!1,--t.b),P=0;P<n.Wo(t.k,e);P++)A=n.Xo(t.k,e,P),t.e[A]&&(t.e[A]=!1,--t.c)},n.Oe=function(t){var e,A,P,r,i;for(A=0;A<t.k.g;A++)if(n.am(t.k,A)==2){for(r=0;r<2;r++)if(e=n.Ul(t.k,r,A),n.Ol(t.k,e)<=8){for(i=0;i<n.Wo(t.k,e);i++)if(P=n.Xo(t.k,e,i),t.e[P]){n.Ne(t,e);break}}}},n.Pe=function(t,e){var A;for(A=0;A<t.k.f;A++)t.d[A]&&n.lp(t.k,A)==0&&(!e||n.Ol(t.k,A)==5&&n.xl(t.k,A)<0||n.Ol(t.k,A)==6||n.Ol(t.k,A)==14||n.Dm(t.k,A)&&n.xl(t.k,A)>0)&&n.Ne(t,A)},n.Qe=function(t,e){var A,P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S,p,M,z,q,x,J,E,N,ft,Lt;for(p=d(l.teb,wt,6,t.k.f,16,1),E=0;E<e.i.a.length;E++)if(N=y.uj(e.j,E).length,(N==3||N==5||N==6||N==7)&&t.i[E])for(P=y.uj(e.i,E),r=0,i=P.length;r<i;++r)A=P[r],p[A]=!0;for(s=d(l.Z6,H,6,t.k.f,15,1),b=d(l.teb,wt,6,t.k.f,16,1),Q=0;Q<t.k.g;Q++)D=n.Ul(t.k,0,Q),u=n.Ul(t.k,1,Q),!p[D]&&!p[u]&&(t.e[Q]&&(++s[D],++s[u]),n.dm(t.k,Q)==16&&(b[D]=!0,b[u]=!0));for(J=d(l.Z6,H,6,t.k.f,15,1),h=d(l.Z6,H,6,t.k.f,15,1),Lt=0;Lt<t.k.f;Lt++)if(s[Lt]==1)for(h[0]=Lt,w=0,g=0;w<=g;){for(B=0;B<n.Wo(t.k,h[w]);B++)if(t.e[n.Xo(t.k,h[w],B)]&&(L=n.Vo(t.k,h[w],B),(w==0||L!=h[w-1])&&s[L]!=0)){if(h[++g]=L,(s[L]&1)!=0){for(z=1;z<g;z+=2)J[h[z]]=-1;g=0}break}++w}for(o=d(l.teb,wt,6,t.k.f,16,1),ft=0;ft<t.k.f;ft++)if(!o[ft]&&s[ft]!=0){for(h[0]=ft,o[ft]=!0,w=0,g=0;w<=g;){for(B=0;B<n.Wo(t.k,h[w]);B++)t.e[n.Xo(t.k,h[w],B)]&&(L=n.Vo(t.k,h[w],B),o[L]||(h[++g]=L,o[L]=!0));++w}if((g&1)==0){for(m=0;m<=g;m++)J[h[m]]==0&&(J[h[m]]=n.ze(t,h[m],!1));for(M=!0,S=0;S<=g;S++)if(J[h[S]]<=0&&!n.Ae(t,h[S],!1)){M=!1;break}if(M){for(x=0,q=-1,B=0;B<=g;B++)x<J[h[B]]&&(x=J[h[B]],q=h[B]);x>0&&(n.ze(t,q,!0),n.Ne(t,q))}}}},n.Re=function(t){var e,A,P,r,i,D,u,o,Q,L,w,s,h,b;for(e=0;e<t.k.f;e++)if(n.aw(t.k,1),n.Ol(t.k,e)==7&&n.xl(t.k,e)==1&&n.Mo(t.k,e)==1)for(D=!1,u=d(l.Z6,H,6,t.k.f,15,1),b=d(l.Z6,H,6,t.k.f,15,1),o=d(l.Z6,H,6,t.k.f,15,1),u[0]=e,b[e]=-1,o[e]=1,r=0,Q=0;r<=Q&&!D;){for(i=u[r],L=0;L<n.Wo(t.k,i)&&!D;L++)if(w=(o[i]&1)==0^n.am(t.k,n.Xo(t.k,i,L))>1,P=n.Vo(t.k,i,L),o[P]==0&&w)if(n.Ol(t.k,P)==7&&n.Mo(t.k,P)==0&&n.Wo(t.k,P)==2){if((o[i]&1)==0){for(n.en(t.k,e,0),h=i,s=0;s<o[i];s++)A=n.To(t.k,P,h),n.En(t.k,A,n.am(t.k,A)==1?2:n.am(t.k,A)-1),P=h,h=b[P];D=!0}}else u[++Q]=P,b[P]=i,o[P]=o[i]+1;++r}},n.Se=function(t){n.Te.call(this,t)},n.Te=function(t){this.k=t},G(90,1,{},n.Se),U.a=!1,U.b=0,U.c=0,U.n=0,l.e7=O(90),n.Ue=function(t,e){var A,P;for(A=0,P=0;P<t.j[e];P++)t.n[e][P]==2&&(n.Ol(t,t.i[e][P])==7||n.Ol(t,t.i[e][P])==8||n.Ol(t,t.i[e][P])==16)&&++A;return A},n.Ve=function(t,e){var A,P,r,i,D,u;if(t.s[e]==0)return!1;for(u=!0,A=t.s[e],i=t.j[e],D=0,P=0;P<i;P++)r=t.i[e][P],D+=t.s[r];return k.Math.abs(A)<=k.Math.abs(D)&&T.Iib(A)!=T.Iib(D)&&(u=!1),u},n.We=function(t,e){var A,P,r,i,D,u,o;if(t.C[e]!=8||t.s[e]!=0||t.j[e]!=1||t.n[e][0]!=1)return!1;if(A=t.i[e][0],t.C[A]==6){for(D=t.j[A],P=0;P<D;P++)if(r=t.i[A][P],r!=e&&t.C[r]==8&&(i=n.To(t,A,r),t.H[i]==2))return!0}else if(t.C[A]==7){if(t.s[A]==1)return!0}else if(t.C[A]==16){for(u=t.j[A],o=0,P=0;P<u;P++)r=t.i[A][P],r!=e&&t.C[r]==8&&(i=n.To(t,A,r),t.H[i]==2&&++o);if(o==2)return!0}else if(n.Xe(t,e))return!0;return!1},n.Xe=function(t,e){var A,P,r,i,D;if(t.C[e]!=8||t.j[e]!=1)return!1;if(A=t.i[e][0],t.C[A]==15){for(D=t.j[A],P=0;P<D;P++)if(r=t.i[A][P],r!=e&&t.C[r]==8&&(i=n.To(t,A,r),t.H[i]==2))return!0}return!1},n.Ye=function(t,e){var A,P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S,p,M,z,q,x;if(t.C[e]!=7||t.s[e]!=0||t.j[e]+t.o[e]>3)return!1;if(e<t.f&&n.kt(t.p,e)){if(t.o[e]!=1||n.Po(t,e,7)!=1)return!1;for(M=(n.aw(t,7),t.p),S=0;S<M.i.a.length;S++)if(n.mt(M,S,e)){if(y.uj(M.j,S).length==5||y.uj(M.j,S).length==6){for(z=y.uj(M.i,S),B=-1,o=0;o<z.length;o++)if(z[o]==e){B=o;break}for(r=0,m=null,g=null,z.length==5&&(m=d(l.Z6,H,6,2,15,1),m[0]=z[B-1<0?B+4:B-1],m[1]=z[B-4<0?B+1:B-4],g=d(l.Z6,H,6,2,15,1),g[0]=z[B-2<0?B+3:B-2],g[1]=z[B-3<0?B+2:B-3]),z.length==6&&(m=d(l.Z6,H,6,3,15,1),m[0]=z[B-1<0?B+5:B-1],m[1]=z[B-3<0?B+3:B-3],m[2]=z[B-5<0?B+1:B-5],g=d(l.Z6,H,6,2,15,1),g[0]=z[B-2<0?B+4:B-2],g[1]=z[B-4<0?B+2:B-4]),Q=0;Q<z.length;Q++)e!=z[Q]&&n.Ol(t,z[Q])==7&&n.Mo(t,z[Q])==1&&--r;for(L=0;L<m.length;L++){for(i=-1,D=-1,b=0;b<n.Wo(t,m[L]);b++)if(!n.Qp(t,n.Xo(t,m[L],b))){i=n.Vo(t,m[L],b),D=n.Xo(t,m[L],b);break}if(i!=-1){if(t.C[i]==7&&t.o[i]==0&&t.j[i]+t.o[i]<=3&&!n.Ze(t,i,!1)){++r;continue}if(t.C[i]==8&&t.j[i]==1){r+=2;continue}if(D<t.g&&n.lt(t.p,D)){for(q=0;q<M.i.a.length;q++)if(M.d[q]&&n.mt(M,q,i)){for(p=y.uj(M.i,q),h=0;h<p.length;h++)if(n.Ol(t,p[h])==7&&n.Mo(t,p[h])==1){--r;break}break}}}}for(w=0;w<g.length;w++){for(i=-1,h=0;h<n.Wo(t,g[w]);h++)n.Qp(t,n.Xo(t,g[w],h))||(i=n.Vo(t,g[w],h));n.Ol(t,g[w])==6?i!=-1&&n.Ue(t,i)!=0&&--r:n.Ol(t,g[w])==7&&n.Mo(t,g[w])==0&&(i==-1||!(i<t.f&&n.kt(t.p,i))&&n.Ue(t,i)==0)&&++r}return r>0}break}return!1}if(t.o[e]>1)return!1;if(t.o[e]==1){for(s=-1,x=0,o=0;o<t.j[e];o++){if(P=t.i[e][o],t.n[e][o]==2){if(t.C[P]!=6)return!1;s=P;continue}if(t.C[P]==8)return!1;if(t.C[P]==7){--x,n.Ze(t,P,!1)&&--x;continue}P<t.f&&n.kt(t.p,P)&&--x}if(s==-1)return!1;for(A=0,Q=0;Q<t.j[s];Q++)if(t.n[s][Q]==1){if(P=t.i[s][Q],n.Ue(t,P)!=0)return!1;P<t.f&&n.kt(t.p,P)&&++A,t.C[P]==7&&!n.Ze(t,P,!0)&&++x,(t.C[P]==8||t.C[P]==16)&&--x}return A==2&&--x,x>=0}for(u=0;u<t.j[e];u++)if(P=t.i[e][u],P<t.f&&n.kt(t.p,P)||t.C[P]!=6||n.Ue(t,P)!=0||t.o[P]!=0&&n.$e(t,P))return!1;return!0},n.Ze=function(t,e,A){var P,r,i;for(P=!1,i=0;i<t.j[e];i++)if(!n.Qp(t,t.k[e][i])&&t.n[e][i]==1&&(r=t.i[e][i],!(r<t.f&&n.kt(t.p,r))&&(t.C[r]==6&&n.Ue(t,r)==1||t.C[r]==16&&n.Ue(t,r)==2))){if(P||!A)return!0;P=!0}return!1},n.$e=function(t,e){var A,P,r;for(P=0;P<t.j[e];P++)if(t.n[e][P]!=1){for(A=t.i[e][P],r=0;r<t.j[A];r++)if(t.n[A][r]==1&&n.Ue(t,t.i[A][r])!=0)return!0}return!1},n.bf=function(){n.bf=u1,n._e=v(F(l.seb,1),Jt,6,15,[-1,-1,-1,0,0,1,2,3,4,5,-1,0,0,0,6,7,8,9,-1,0,0,10,10,10,10,10,10,10,10,10,10,1,11,11,12,13,-1,0,0,10,10,10,10,10,10,10,10,10,10,0,0,0,11,14,-1,0,0,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,10,10,10,10,10,10,10,10,1,1,1,1,-1,-1,-1,-1,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]),n.af=v(F(l.seb,1),Jt,6,15,[-1,-1,-1,0,0,0,2,5,5,5,-1,0,0,0,0,9,9,9,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1])},n.cf=function(t,e,A){n.bf();var P,r,i,D,u,o,Q,L,w,s,h,b,g,B;for(n.aw(t,7),h=d(l.$6,e0,6,t.j[e],14,1),s=0,o=0;o<t.j[e];o++)if(r=t.i[e][o],t.C[r]!=1){if(D=0,(A&32)!=0&&(i=Ct(t.n[e][o]),A==32190?et(i,3)<0&&n.Up(t,t.k[e][o])&&t.o[e]==1&&(i=0):et(i,3)<0&&n.Qp(t,t.k[e][o])&&(i=0),D=Pt(D,T1(i,4))),(A&128)!=0){if(n._e[t.C[r]]==-1)throw Qt(new T.bC(ir+t.C[r]));D=B1(D,Ct(n._e[t.C[r]]))}else if((A&64)!=0){if(n.af[t.C[r]]==-1)throw Qt(new T.bC(ir+t.C[r]));D=B1(D,Ct(n.af[t.C[r]]))}for((A&256)!=0&&(b=t.j[r]-1,b>3&&(b=3),(A&512)==0&&b>1&&(b=1),D=Pt(D,l.Ieb(b<<6))),(A&r0)!=0&&(t.u[r]&8)!=0&&(D=Pt(D,256)),(A&c1)!=0&&r<t.f&&n.kt(t.p,r)&&(D=Pt(D,512)),(A&E0)!=0&&(t.u[r]&l0)!=0&&(D=Pt(D,r0)),L=0;et(D,h[L])<0;)++L;for(w=o;w>L;w--)h[w]=h[w-1];h[L]=D,++s}for(s>4&&(s=4),P=0,Q=0;Q<s;Q++)P=T1(P,11),P=Pt(P,h[Q]);if(P=T1(P,15),n._e[t.C[e]]==-1)throw Qt(new T.bC(ir+t.C[e]));if(P=Pt(P,Ct(n._e[t.C[e]])),(A&2)!=0?(B=t.p&&e<t.f?n._s(t.p,e):0,B>9&&(B=9),B>2&&(B-=2),P=Pt(P,l.Ieb(B<<4))):(A&1)!=0&&(t.u[e]&8)!=0&&(P=Pt(P,64)),(A&4)!=0&&e<t.f&&n.kt(t.p,e)&&(P=Pt(P,r0)),(A&8)!=0&&(t.u[e]&J1)!=0&&(P=Pt(P,c1)),(A&16)!=0&&(t.u[e]&l0)!=0&&(P=Pt(P,J1)),(A&J1)!=0&&(n.Ve(t,e)&&(P=Pt(P,l0)),n.Ye(t,e))){for(u=0;u<t.f;u++)if(n.We(t,u)){P=Pt(P,E0);break}}return(A&l0)!=0&&(g=Ct(n.Po(t,e,10)),P=Pt(P,T1(g,7))),P},n.df=function(t,e,A,P,r,i){var D,u,o,Q;for(o=0,u=0;u<t.R.f;u++)jt(Z(n.Jl(t.R,t.B[u]),P),0)&&++o;if(o!=0)for(n.bg(t,e),n.Yf(t,l.Ieb(o),A),D=0;D<t.R.f;D++)Q=Z(n.Jl(t.R,t.B[D]),P),et(Q,0)!=0&&(n.Yf(t,l.Ieb(D),A),r!=1&&n.Yf(t,a1(Q,i),r))},n.ef=function(t,e,A,P,r,i){var D,u,o,Q;for(o=0,u=0;u<t.R.g;u++)(n.cm(t.R,t.C[u])&P)!=0&&++o;if(o!=0)for(n.bg(t,e),n.Yf(t,l.Ieb(o),A),D=0;D<t.R.g;D++)Q=n.cm(t.R,t.C[D])&P,Q!=0&&(n.Yf(t,l.Ieb(D),A),r!=1&&n.Yf(t,l.Ieb(Q>>i),r))},n.ff=function(t){for(var e,A,P,r,i,D;;){for(i=d(l.teb,wt,6,t.U+1,16,1),P=-1,A=0;A<t.R.f;A++)n.lp(t.R,A)!=0&&(i[t.f[A]]&&P<t.f[A]&&(P=t.f[A]),i[t.f[A]]=!0);if(P==-1)break;for(r=0,e=0;e<t.R.f;e++)D=0,t.f[e]==P&&(D=++r),n.ah(t.e[e],e),n.Zg(t.e[e],t.c,Ct(t.f[e])),n.Zg(t.e[e],8,l.Ieb(D));t.U=n.Hf(t)}},n.gf=function(t){var e,A,P,r;for(A=0;A<t.R.f;A++)n.ah(t.e[A],A),n.Zg(t.e[A],2*t.c+4,T1(Ct(t.f[A]),t.c+4));for(r=!1,e=0;e<t.R.f;e++)r=r|n.uf(t,e,3);for(P=0;P<t.R.g;P++)r=r|n.pf(t,P,3);if(!r)return!1;for(;t.U<t.R.f&&(r=n.Ef(t),!!r);)n.Gf(t),t.P&&n.rh(t.P,t.f);return!0},n.hf=function(t){var e,A,P,r,i;for(A=0;A<t.R.f;A++)n.ah(t.e[A],A),n.Zg(t.e[A],t.c+1,V0(2,Ct(t.f[A])));for(i=d(l.Z6,H,6,t.U+1,15,1),P=0;P<t.R.f;P++)++i[t.f[P]];for(r=1;i[r]==1;)++r;for(e=0;e<t.R.f;e++)if(t.f[e]==r){n.$g(t.e[e],1);break}t.U=n.Hf(t)},n.jf=function(t,e,A){var P,r,i,D,u;return n.Ol(t.R,e)!=6&&n.Ol(t.R,e)!=7||(r=n.Vo(t.R,e,0),i=n.Vo(t.R,e,1),n.Mo(t.R,r)!=1||n.Mo(t.R,i)!=1)||n.Wo(t.R,r)==1||n.Wo(t.R,i)==1||n.Ho(t.R,r)>3||n.Ho(t.R,i)>3||(D=new n.ik(t.R,t.f,e,r),D.f&&A==1)||(u=new n.ik(t.R,t.f,e,i),u.f&&A==1)||D.f&&u.f?!1:(A==3&&(D.f&&D.c&&(t.W[e]=!0),u.f&&u.c&&(t.W[e]=!0)),P=t.jb?n.lf(t,D,u):n.kf(D,u),A==1?t.db[e]=P:A==2&&(D.f&&(P==1?n.$g(t.e[D.b],Ct(t.f[r])):n.$g(t.e[D.d],Ct(t.f[r]))),u.f&&(P==2?n.$g(t.e[u.b],Ct(t.f[i])):n.$g(t.e[u.d],Ct(t.f[i])))),!0)},n.kf=function(t,e){var A,P,r;if(P=n.hk(t),r=n.hk(e),P==-1||r==-1||(P+r&1)==0)return 3;switch(A=0,P+r){case 3:case 7:A=2;break;case 5:A=1}return A},n.lf=function(t,e,A){var P,r;return P=d(l.Z6,H,6,4,15,1),P[0]=e.b,P[1]=e.a,P[2]=A.a,P[3]=A.b,r=n.al(t.R,P),k.Math.abs(r)<.3||k.Math.abs(r)>x8?3:r<0?2:1},n.mf=function(t,e,A){var P,r,i,D,u;return!n.Rp(t.R,e)||(P=n.Ul(t.R,0,e),r=n.Ul(t.R,1,e),D=new n.ik(t.R,t.f,P,r),D.f&&A==1)||(u=new n.ik(t.R,t.f,r,P),u.f&&A==1)||D.f&&u.f?!1:(A==3&&(D.f&&(t.V[e]=n.ug(t,r)),u.f&&(t.V[e]=n.ug(t,P))),i=t.jb?n.of(t,D,u):n.nf(D,u),A==1?t.o[e]=i:A==2&&(D.f&&(i==2?n.$g(t.e[D.b],Ct(t.f[r])):n.$g(t.e[D.d],Ct(t.f[r]))),u.f&&(i==2?n.$g(t.e[u.b],Ct(t.f[P])):n.$g(t.e[u.d],Ct(t.f[P])))),!0)},n.nf=function(t,e){var A,P,r;if(P=n.hk(t),r=n.hk(e),P==-1||r==-1||(P+r&1)==0)return 3;switch(A=0,P+r){case 3:case 7:A=1;break;case 5:A=2}return A},n.of=function(t,e,A){var P,r;return P=d(l.Z6,H,6,4,15,1),P[0]=e.b,P[1]=e.a,P[2]=A.a,P[3]=A.b,r=n.al(t.R,P),k.Math.abs(r)<.3||k.Math.abs(r)>x8?3:r<0?1:2},n.pf=function(t,e,A){var P,r,i,D,u,o,Q,L;if(t.o[e]!=0)return!1;if(t.R.K){for(Q=0;Q<2;Q++)for(P=n.Ul(t.R,Q,e),L=0;L<n.Ho(t.R,P);L++)if(n.Fm(t.R,n.Vo(t.R,P,L)))return!1}return n.am(t.R,e)==1?n.mf(t,e,A):n.am(t.R,e)!=2||n.Qp(t.R,e)||(i=n.Ul(t.R,0,e),D=n.Ul(t.R,1,e),n.Wo(t.R,i)==1||n.Wo(t.R,D)==1)||n.Wo(t.R,i)>3||n.Wo(t.R,D)>3||n.Mo(t.R,i)==2||n.Mo(t.R,D)==2||(u=new n.ik(t.R,t.f,D,i),u.f&&A==1)||(o=new n.ik(t.R,t.f,i,D),o.f&&A==1)||u.f&&o.f?!1:(A==3&&(u.f&&u.c&&(t.V[e]=!0),o.f&&o.c&&(t.V[e]=!0)),r=n.Cm(t.R,e)?3:t.jb?n.rf(t,u,o):n.qf(u,o),A==1?t.o[e]=r:A==2&&(u.f&&(r==1?n.$g(t.e[u.b],Ct(t.f[i])):r==2&&n.$g(t.e[u.d],Ct(t.f[i]))),o.f&&(r==1?n.$g(t.e[o.b],Ct(t.f[D])):r==2&&n.$g(t.e[o.d],Ct(t.f[D])))),!0)},n.qf=function(t,e){return n.hk(t)==-1||n.hk(e)==-1||((n.hk(t)|n.hk(e))&1)!=0?3:n.hk(t)==n.hk(e)?1:2},n.rf=function(t,e,A){var P,r,i,D,u,o,Q;return i=d(l.X6,Bt,6,3,15,1),i[0]=n.Ll(t.R,A.a)-n.Ll(t.R,e.a),i[1]=n.Ml(t.R,A.a)-n.Ml(t.R,e.a),i[2]=n.Nl(t.R,A.a)-n.Nl(t.R,e.a),o=d(l.X6,Bt,6,3,15,1),o[0]=n.Ll(t.R,e.b)-n.Ll(t.R,e.a),o[1]=n.Ml(t.R,e.b)-n.Ml(t.R,e.a),o[2]=n.Nl(t.R,e.b)-n.Nl(t.R,e.a),Q=d(l.X6,Bt,6,3,15,1),Q[0]=n.Ll(t.R,A.b)-n.Ll(t.R,A.a),Q[1]=n.Ml(t.R,A.b)-n.Ml(t.R,A.a),Q[2]=n.Nl(t.R,A.b)-n.Nl(t.R,A.a),D=d(l.X6,Bt,6,3,15,1),D[0]=i[1]*o[2]-i[2]*o[1],D[1]=i[2]*o[0]-i[0]*o[2],D[2]=i[0]*o[1]-i[1]*o[0],u=d(l.X6,Bt,6,3,15,1),u[0]=i[1]*D[2]-i[2]*D[1],u[1]=i[2]*D[0]-i[0]*D[2],u[2]=i[0]*D[1]-i[1]*D[0],P=(o[0]*u[0]+o[1]*u[1]+o[2]*u[2])/(k.Math.sqrt(o[0]*o[0]+o[1]*o[1]+o[2]*o[2])*k.Math.sqrt(u[0]*u[0]+u[1]*u[1]+u[2]*u[2])),r=(Q[0]*u[0]+Q[1]*u[1]+Q[2]*u[2])/(k.Math.sqrt(Q[0]*Q[0]+Q[1]*Q[1]+Q[2]*Q[2])*k.Math.sqrt(u[0]*u[0]+u[1]*u[1]+u[2]*u[2])),P<0^r<0?1:2},n.sf=function(t,e){var A,P,r,i;return A=n.vl(t.R,e),P=n.ip(t.R,e,!1),r=n.ip(t.R,e,!0),i=-1,P!=r?A!=-1&&A>P?i=A<<24>>24:i=P<<24>>24:A!=-1?(A>r||A<r&&A>=n.rp(t.R,e))&&(i=A<<24>>24):!n.wq(t.R,e)&&n.$o(t.R,e)!=0&&(i=n.rp(t.R,e),i-=n.im(t.R,e,i)),n.Of(t,e,i),i},n.tf=function(t){var e,A,P,r,i,D,u,o,Q,L,w;for(P=d(l.Z6,H,6,t.O,15,1),e=0;e<t.R.f;e++){for(L=n.Wo(t.R,e)+n.np(t.R,e),Q=0,i=0;i<n.Io(t.R,e);i++)if(i<n.Wo(t.R,e)||i>=n.Ho(t.R,e)){for(w=2*t.f[n.Vo(t.R,e,i)],A=n.Xo(t.R,e,i),n.am(t.R,A)==2&&(n.Qp(t.R,A)||++w),u=0;u<Q&&!(w<P[u]);u++);for(o=Q;o>u;o--)P[o]=P[o-1];P[u]=w,++Q}for(n.ah(t.e[e],e),n.Zg(t.e[e],t.c,Ct(t.f[e])),D=L;D<t.O;D++)n.Zg(t.e[e],t.c+1,0);for(r=0;r<L;r++)n.Zg(t.e[e],t.c+1,l.Ieb(P[r]))}},n.uf=function(t,e,A){var P,r,i,D,u,o,Q,L,w,s,h,b,g;if(t.db[e]!=0||n.Ol(t.R,e)!=5&&n.Ol(t.R,e)!=6&&n.Ol(t.R,e)!=7&&n.Ol(t.R,e)!=14&&n.Ol(t.R,e)!=15&&n.Ol(t.R,e)!=16||(t.Q&J1)!=0&&n.Ol(t.R,e)>=14)return!1;if(n.Mo(t.R,e)!=0){if(n.Sp(t.R,e))return n.jf(t,e,A);if(n.Ol(t.R,e)!=15&&n.Ol(t.R,e)!=16)return!1}if(n.Wo(t.R,e)<3||n.Ho(t.R,e)>4||n.xl(t.R,e)>0&&n.Ol(t.R,e)==6||n.Ol(t.R,e)==5&&n.Ho(t.R,e)!=4)return!1;if(t.R.K){if(n.Fm(t.R,e))return!1;for(u=0;u<n.Ho(t.R,e);u++)if(n.Fm(t.R,n.Vo(t.R,e,u)))return!1}if(n.Ol(t.R,e)==7&&!t.S[e])return!1;for(b=d(l.Z6,H,6,4,15,1),g=d(l.Z6,H,6,4,15,1),L=d(l.teb,wt,6,4,16,1),o=0;o<n.Ho(t.R,e);o++){for(i=-1,r=0,Q=0;Q<n.Ho(t.R,e);Q++)L[Q]||i<t.f[n.Vo(t.R,e,Q)]&&(i=t.f[n.Vo(t.R,e,Q)],r=Q);b[o]=r,g[o]=i,L[r]=!0}if(n.Ho(t.R,e)==4&&g[0]==g[1]&&g[2]==g[3]||n.Ho(t.R,e)==4&&(g[0]==g[2]||g[1]==g[3])||n.Ho(t.R,e)==3&&g[0]==g[2])return!1;for(w=0,s=0,h=!1,D=1;D<n.Ho(t.R,e);D++)if(g[D-1]==g[D]){if(A==1||g[D]==0)return!1;w=n.Vo(t.R,e,b[D-1]),s=n.Vo(t.R,e,b[D]),A==3&&n.cq(t.R,n.Xo(t.R,e,b[D]))&&(t.W[e]=!0),h=!0}return A!=1&&!h?!1:(P=t.jb?n.wf(t,e,b):n.vf(t,e,b),A==1?t.db[e]=P:A==2&&(P==1?n.$g(t.e[w],Ct(t.f[e])):P==2&&n.$g(t.e[s],Ct(t.f[e]))),!0)},n.vf=function(t,e,A){var P,r,i,D,u,o,Q,L,w,s;for(s=v(F(l.Z6,2),M1,7,0,[v(F(l.Z6,1),H,6,15,[2,1,2,1]),v(F(l.Z6,1),H,6,15,[1,2,2,1]),v(F(l.Z6,1),H,6,15,[1,1,2,2]),v(F(l.Z6,1),H,6,15,[2,1,1,2]),v(F(l.Z6,1),H,6,15,[2,2,1,1]),v(F(l.Z6,1),H,6,15,[1,2,1,2])]),P=d(l.X6,Bt,6,n.Ho(t.R,e),15,1),D=0;D<n.Ho(t.R,e);D++)P[D]=n.Tl(t.R,n.Vo(t.R,e,A[D]),e);if(Q=n.ap(t.R,e,A,P,null)<<24>>24,Q!=3)return Q;for(L=0,w=0,u=0;u<n.Ho(t.R,e);u++)r=n.Xo(t.R,e,A[u]),n.Ul(t.R,0,r)==e&&(n.dm(t.R,r)==129&&(w!=0&&n.Rn(t.R,e),L=u,w=1),n.dm(t.R,r)==257&&(w!=0&&n.Rn(t.R,e),L=u,w=2));if(w==0)return 3;for(i=1;i<n.Ho(t.R,e);i++)P[i]<P[0]&&(P[i]+=G1);if(n.Ho(t.R,e)==3){switch(L){case 0:(P[1]<P[2]&&P[2]-P[1]<t1||P[1]>P[2]&&P[1]-P[2]>t1)&&(w=3-w);break;case 1:P[2]-P[0]>t1&&(w=3-w);break;case 2:P[1]-P[0]<t1&&(w=3-w)}return w==1?2:1}return o=0,P[1]<=P[2]&&P[2]<=P[3]?o=0:P[1]<=P[3]&&P[3]<=P[2]?o=1:P[2]<=P[1]&&P[1]<=P[3]?o=2:P[2]<=P[3]&&P[3]<=P[1]?o=3:P[3]<=P[1]&&P[1]<=P[2]?o=4:P[3]<=P[2]&&P[2]<=P[1]&&(o=5),s[o][L]==w?2:1},n.wf=function(t,e,A){var P,r,i,D,u,o;for(P=d(l.Z6,H,6,4,15,1),u=0;u<n.Ho(t.R,e);u++)P[u]=n.Vo(t.R,e,A[u]);for(n.Ho(t.R,e)==3&&(P[3]=e),r=w1(l.X6,[b1,Bt],[15,6],15,[3,3],2),D=0;D<3;D++)r[D][0]=n.Ll(t.R,P[D+1])-n.Ll(t.R,P[0]),r[D][1]=n.Ml(t.R,P[D+1])-n.Ml(t.R,P[0]),r[D][2]=n.Nl(t.R,P[D+1])-n.Nl(t.R,P[0]);return o=d(l.X6,Bt,6,3,15,1),o[0]=r[0][1]*r[1][2]-r[0][2]*r[1][1],o[1]=r[0][2]*r[1][0]-r[0][0]*r[1][2],o[2]=r[0][0]*r[1][1]-r[0][1]*r[1][0],i=(r[2][0]*o[0]+r[2][1]*o[1]+r[2][2]*o[2])/(k.Math.sqrt(r[2][0]*r[2][0]+r[2][1]*r[2][1]+r[2][2]*r[2][2])*k.Math.sqrt(o[0]*o[0]+o[1]*o[1]+o[2]*o[2])),i>0?1:2},n.xf=function(t){var e,A;for(e=0,y.Tqb(t.e),A=0;A<t.e.length;A++)(A==0||n._g(t.e[A],t.e[A-1])!=0)&&++e,t.f[t.e[A].a]=e;return e},n.yf=function(t){var e,A,P,r,i,D,u,o,Q,L,w,s;if(!t.A){for(t.A=new y.Jj,L=0,w=d(l.Z6,H,6,t.R.f,15,1),D=d(l.Z6,H,6,t.R.f,15,1),o=d(l.Z6,H,6,t.R.g,15,1),e=0;e<t.R.f;e++)if(w[e]==0&&(n.bq(t.R,e)||n.Mo(t.R,e)==1)){for(D[0]=e,u=1,Q=0,w[e]=++L,A=d(l.teb,wt,6,t.R.g,16,1),i=0;i<u;i++)for(s=0;s<n.Wo(t.R,D[i]);s++)r=n.Xo(t.R,D[i],s),(n.cq(t.R,r)||n.am(t.R,r)==2||n.Rp(t.R,r))&&(P=n.Vo(t.R,D[i],s),A[r]||(o[Q++]=r,A[r]=!0),w[P]==0&&(D[u++]=P,w[P]=L));y.pj(t.A,new n.hh(D,u,o,Q))}}},n.zf=function(t){var e;for(t.S=d(l.teb,wt,6,t.R.f,16,1),e=0;e<t.R.f;e++)if(n.Ol(t.R,e)==7){if(n.Wo(t.R,e)==4){t.S[e]=!0;continue}if(n.Wo(t.R,e)==3){if(n.Qo(t.R,e)==3){t.S[e]=!0;continue}if(n.xl(t.R,e)==1){t.S[e]=!0;continue}if(n.Wp(t.R,e,!0))continue;if((t.Q&32)!=0){t.S[e]=!0;continue}if(n.aq(t.R,e)){t.S[e]=!0;continue}}}},n.Af=function(t,e){var A,P,r,i;for(r=!1,P=0;P<t.R.g;P++)n.pf(t,P,1)&&(t.q[P]=t.L,e&&n.Pf(t,P),r=!0);for(i=!1,A=0;A<t.R.f;A++)n.uf(t,A,1)&&(t.ib[A]=t.L,e&&n.Qf(t,A),i=!0);return i&&(t.L=!t.L),r||i},n.Bf=function(t){var e,A,P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S,p,M,z,q,x,J;for(S=d(l.teb,wt,6,t.R.f,16,1),p=d(l.teb,wt,6,t.R.g,16,1),e=0,z=!1,(t.Q&128)!=0&&(t.Y=d(l.Z6,H,6,t.R.f,15,1),t.X=d(l.Z6,H,6,t.R.g,15,1)),P=0;P<t.R.f;P++)t.W[P]&&(t.fb[P]||n.uf(t,P,1)&&(t.fb[P]=!0,S[P]=!0,++e));for(i=0;i<t.R.g;i++)t.V[i]&&(t.p[i]||n.pf(t,i,1)&&(t.p[i]=!0,p[i]=!0,++e));if(e==1){for(A=0;A<t.R.f;A++)if(S[A]){t.db[A]=0;break}for(r=0;r<t.R.g;r++)if(p[r]){t.o[r]=0;break}}else if(e>1)for(n.yf(t),t.T=0,u=new y.rqb(t.A);u.a<u.c.a.length;){for(D=y.qqb(u),M=0,q=0,L=0,Q=0,w=-1,o=-1,b=0;b<D.a.length;b++)S[D.a[b]]&&(++M,(t.db[D.a[b]]==1||t.db[D.a[b]]==2)&&(++q,z=!0,w<t.f[D.a[b]]&&(w=t.f[D.a[b]],L=D.a[b])));for(g=0;g<D.b.length;g++)p[D.b[g]]&&(++M,x=t.f[n.Ul(t.R,0,D.b[g])],J=t.f[n.Ul(t.R,1,D.b[g])],s=x>J?(x<<16)+J:(J<<16)+x,(t.o[D.b[g]]==1||t.o[D.b[g]]==2)&&(++q,z=!0,o<s&&(o=s,Q=D.b[g])));if(M!=0)if(M==1){for(B=0;B<D.a.length;B++)S[D.a[B]]&&(t.db[D.a[B]]=0);for(h=0;h<D.b.length;h++)p[D.b[h]]&&(t.o[D.b[h]]=0)}else if(q==1){for(B=0;B<D.a.length;B++)S[D.a[B]]&&(t.db[D.a[B]]=3);for(h=0;h<D.b.length;h++)p[D.b[h]]&&(t.o[D.b[h]]=3)}else{if((t.Q&128)!=0){for(++t.T,B=0;B<D.a.length;B++)S[D.a[B]]&&(t.Y[D.a[B]]=t.T);for(h=0;h<D.b.length;h++)p[D.b[h]]&&(t.X[D.b[h]]=t.T)}if(m=!1,w!=-1?t.db[L]==2&&(m=!0):t.o[Q]==2&&(m=!0),m){for(B=0;B<D.a.length;B++)if(S[D.a[B]])switch(t.db[D.a[B]]){case 1:t.db[D.a[B]]=2;break;case 2:t.db[D.a[B]]=1}for(h=0;h<D.b.length;h++)if(p[D.b[h]])switch(t.o[D.b[h]]){case 1:t.o[D.b[h]]=2;break;case 2:t.o[D.b[h]]=1}}}}return z},n.Cf=function(t,e){var A,P,r,i,D,u,o,Q,L,w,s;for(i=w1(l.Z6,[M1,H],[7,6],15,[2,32],2),D=0;D<2;D++){for(A=d(l.Z6,M1,7,32,0,2),s=0,r=0;r<32;r++)if(e[D][r]!=null){for(L=e[D][r].length,A[r]=d(l.Z6,H,6,L,15,1),u=0;u<L;u++)A[r][u]=t.f[e[D][r][u]];c.lzb(A[r],c.Szb(y0(y.lrb.prototype.jd,y.lrb,[]))),++s}for(w=s;w>0;w--){for(Q=0,o=null,P=0;P<32;P++)if(A[P]!=null){if(o==null||o.length<A[P].length)o=A[P],Q=P;else if(o.length==A[P].length){for(u=o.length-1;u>=0;u--)if(o[u]<A[P][u]){o=A[P],Q=P;break}}}i[D][Q]=w,A[Q]=null}}return i},n.Df=function(t){var e,A,P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S,p;if(w=!1,t.R.K){for(Q=0;Q<t.R.g;Q++)if(n.cm(t.R,Q)!=0){w=!0;break}}for(t.O=2,A=0;A<t.R.f;A++)t.O=k.Math.max(t.O,n.Wo(t.R,A)+n.np(t.R,A));for(o=k.Math.max(2,w?(62+t.c+t.O*(t.c+23))/63|0:(62+t.c+t.O*(t.c+5))/63|0),t.f=d(l.Z6,H,6,t.R.q,15,1),t.e=d(l.j7,Hn,102,t.R.f,0,1),P=0;P<t.R.f;P++)t.e[P]=new n.bh(o);for(u=!1,r=0;r<t.R.f;r++)n.ah(t.e[r],r),jt(Z(n.Jl(t.R,r),1),0)||n.El(t.R,r)!=null?n.Zg(t.e[r],8,6):n.Zg(t.e[r],8,Ct(n.Ol(t.R,r))),n.Zg(t.e[r],8,Ct(n.Hl(t.R,r))),n.Zg(t.e[r],2,Ct(n.Mo(t.R,r))),n.Zg(t.e[r],4,Ct(n.Wo(t.R,r)+n.np(t.R,r))),jt(Z(n.Jl(t.R,r),1),0)?n.Zg(t.e[r],4,8):n.Zg(t.e[r],4,Ct(8+n.xl(t.R,r))),n.Zg(t.e[r],5,Ct(k.Math.min(31,n.Qo(t.R,r)))),n.Zg(t.e[r],4,Ct(n.sf(t,r)+1)),n.Zg(t.e[r],2,Ct(n.Kl(t.R,r)>>4)),t.R.K&&(n.Zg(t.e[r],51,n.Jl(t.R,r)),n.El(t.R,r)!=null&&(u=!0));if(t.U=n.Hf(t),t.U<t.R.f){for(e=0;e<t.R.f;e++){for(n.ah(t.e[e],e),n.Zg(t.e[e],t.c,Ct(t.f[e])),s=d(l.Z6,H,6,n.Wo(t.R,e),15,1),b=0;b<n.Wo(t.R,e);b++)s[b]=t.f[n.Vo(t.R,e,b)]<<5,s[b]|=k.Math.min(31,n.Uo(t.R,n.Xo(t.R,e,b)));for(c.lzb(s,c.Szb(y0(y.lrb.prototype.jd,y.lrb,[]))),g=t.O;g>s.length;g--)n.Zg(t.e[e],t.c+5,0);for(h=s.length-1;h>=0;h--)n.Zg(t.e[e],t.c+5,l.Ieb(s[h]))}t.U=n.Hf(t)}if(u&&t.U<t.R.f){for(e=0;e<t.R.f;e++){for(n.ah(t.e[e],e),n.Zg(t.e[e],t.c,Ct(t.f[e])),D=n.El(t.R,e),S=D==null?0:k.Math.min(12,D.length),b=12;b>S;b--)n.Zg(t.e[e],8,0);for(h=S-1;h>=0;h--)n.Zg(t.e[e],8,l.Ieb(D[h]))}t.U=n.Hf(t)}if(w&&t.U<t.R.f){for(e=0;e<t.R.f;e++){for(n.ah(t.e[e],e),n.Zg(t.e[e],t.c,Ct(t.f[e])),L=d(l.$6,e0,6,n.Wo(t.R,e)+n.np(t.R,e),14,1),B=0,b=0;b<n.Io(t.R,e);b++)(b<n.Wo(t.R,e)||b>=n.Ho(t.R,e))&&(L[B]=Ct(t.f[n.Vo(t.R,e,b)]),L[B]=T1(L[B],23),L[B]=Pt(L[B],Ct(n.cm(t.R,n.Xo(t.R,e,b)))),++B);for(c.lzb(L,c.Szb(y0(y.$qb.prototype.kd,y.$qb,[]))),g=t.O;g>L.length;g--)n.Zg(t.e[e],t.c+23,0);for(h=L.length-1;h>=0;h--)n.Zg(t.e[e],t.c+23,L[h])}t.U=n.Hf(t)}if((t.Q&8)!=0&&t.U<t.R.f){for(m=new n.Yv,i=0;i<t.R.f;i++)n.zl(t.R,i)!=null&&n.Wv(m,n.zl(t.R,i));for(e=0;e<t.R.f;e++)p=n.zl(t.R,e)==null?0:1+n.Xv(m,n.zl(t.R,e)),n.ah(t.e[e],e),n.Zg(t.e[e],t.c,Ct(t.f[e])),n.Zg(t.e[e],t.c,l.Ieb(p));t.U=n.Hf(t)}if((t.Q&16)!=0&&t.U<t.R.f){for(e=0;e<t.R.f;e++)n.ah(t.e[e],e),n.Zg(t.e[e],t.c,Ct(t.f[e])),n.Zg(t.e[e],1,Ct(n.Lm(t.R,e)?1:0));t.U=n.Hf(t)}(t.Q&512)!=0&&t.R.K&&n.ff(t)},n.Ef=function(t){var e,A,P,r,i,D,u,o,Q;for(A=0;A<t.R.f;A++)n.ah(t.e[A],A),n.Zg(t.e[A],2*t.c+4,T1(Ct(t.f[A]),t.c+4));for(o=1;o<=t.U;o++){for(r=!1,P=0;P<t.R.f;P++)t.f[P]==o&&(r=r|n.uf(t,P,2));if(r){if(u=t.U,t.U=n.Hf(t),t.U!=u)return!0;for(e=0;e<t.R.f;e++)n.ah(t.e[e],e),n.Zg(t.e[e],2*t.c+4,T1(Ct(t.f[e]),t.c+4))}}for(Q=d(l.k7,Hn,172,t.R.g,0,1),D=0;D<Q.length;D++)Q[D]=new n.fh(t.f[n.Ul(t.R,0,D)],t.f[n.Ul(t.R,1,D)],D);for(y.Rqb(Q,0,Q.length,null),i=0;i<Q.length;i++)if(n.pf(t,Q[i].a,2)){for(;i+1<Q.length&&n.eh(Q[i],Q[i+1])==0;)n.pf(t,Q[++i].a,2);if(u=t.U,t.U=n.Hf(t),t.U!=u)return!0;for(e=0;e<t.R.f;e++)n.ah(t.e[e],e),n.Zg(t.e[e],2*t.c+4,T1(Ct(t.f[e]),t.c+4))}return!1},n.Ff=function(t){var e,A,P,r,i,D,u,o,Q,L;for(i=0,A=0;A<t.R.f;A++)t.bb[A]!=0&&(t.bb[A]!=2||(t.Q&256)==0)&&++i;if(i!=0){for(L=d(l.Z6,H,6,i,15,1),i=0,P=0;P<t.R.f;P++)t.bb[P]!=0&&(t.bb[P]!=2||(t.Q&256)==0)&&(L[i]=t.bb[P]<<29|t.ab[P]<<24|t.f[P]<<12|P,++i);for(c.lzb(L,c.Szb(y0(y.lrb.prototype.jd,y.lrb,[]))),D=0,Q=0,u=L[0]&N0;;)if(++Q,Q==L.length||u!=(L[Q]&N0)){for(r=d(l.Z6,H,6,Q-D,15,1),o=D;o<Q;o++)e=L[o]&4095,r[o-D]=e,t.gb[e]=!0;if(y.pj(t.hb,r),Q==L.length)break;u=L[Q]&N0,D=Q}}},n.Gf=function(t){var e,A,P,r,i,D,u,o,Q,L,w,s,h;for(u=!1,o=0;o<t.hb.a.length;o++){for(D=y.uj(t.hb,o),e=!0,h=-1,Q=!1,w=0;w<D.length;w++){if(A=D[w],t.db[A]==0){e=!1;break}if(t.db[A]!=3){for(L=!0,s=0;s<D.length;s++)if(s!=w&&t.f[A]==t.f[D[s]]){L=!1;break}L&&h<t.f[A]&&(h=t.f[A],Q=t.db[A]==1)}}if(e&&h!=-1){for(P=D,r=0,i=P.length;r<i;++r)A=P[r],(t.db[A]==1||t.db[A]==2)&&(t.eb[A]=Q),t.gb[A]=!1;y.Cj(t.hb,D),u=!0,--o}}return u},n.Hf=function(t){var e,A;e=n.xf(t);do A=e,n.tf(t),e=n.xf(t);while(A!=e);return e},n.If=function(t){for((t.Q&1)!=0&&(t.Q&2)==0&&(t.g=y.zqb(t.f,t.R.f)),(t.Q&c1)==0&&(t.W=d(l.teb,wt,6,t.R.f,16,1),t.V=d(l.teb,wt,6,t.R.g,16,1),t.U<t.R.f&&(n.gf(t),(t.Q&c1)==0&&(n.Gf(t),t.P&&n.rh(t.P,t.f)))),t.g==null&&(t.Q&1)!=0&&(t.Q&2)!=0&&(t.g=y.zqb(t.f,t.R.f));t.U<t.R.f;)n.hf(t),(t.Q&c1)==0&&(n.Gf(t),t.P&&n.rh(t.P,t.f));(t.Q&c1)==0&&(n.Gf(t),n.Bf(t),n.eg(t))},n.Jf=function(t){var e,A,P,r,i;for(i=t.U,r=y.zqb(t.f,t.R.f),t.R.K||(n.Lf(t),n.zg(t,i,r)),t.bb=d(l.V6,Y,6,t.R.f,15,1),t.ab=d(l.V6,Y,6,t.R.f,15,1),A=0;A<t.R.f;A++)t.bb[A]=n.Cl(t.R,A)<<24>>24,t.ab[A]=n.Bl(t.R,A)<<24>>24;for(t.n=d(l.V6,Y,6,t.R.g,15,1),t.k=d(l.V6,Y,6,t.R.g,15,1),P=0;P<t.R.g;P++)t.n[P]=n.Zl(t.R,P)<<24>>24,t.k[P]=n.Yl(t.R,P)<<24>>24;for(n.Kf(t),t.Z=!1,t.M=d(l.teb,wt,6,t.R.f,16,1),e=0;e<t.R.f;e++)t.db[e]!=0&&(t.M[e]=!0,t.Z=!0);n.Nf(t),t.P=null,t.cb=d(l.teb,wt,6,t.R.f,16,1),t.Z&&(t.P=new n.xh(t.R,r,t.M,t.db,t.o,t.bb,t.ab,t.ib,t.q,t.cb),n.sh(t.P)),t.eb=d(l.teb,wt,6,t.R.f,16,1),t.gb=d(l.teb,wt,6,t.R.f,16,1),t.hb=new y.Jj,t.P&&n.rh(t.P,t.f),n.Ff(t),n.zg(t,i,r),n.Mf(t),t.P&&(t.K=n.oh(t.P)),n.Xf(t)},n.Kf=function(t){var e,A,P,r,i,D;for(t.L=!0,i=n.Af(t,!1);t.U<t.R.f&&i;){for(e=0;e<t.R.f;e++)n.ah(t.e[e],e),n.Zg(t.e[e],t.c,Ct(t.f[e])),D=t.db[e]<<7,(t.db[e]==1||t.db[e]==2)&&t.bb[e]!=0&&(D|=t.bb[e]<<5,D|=t.ab[e]),n.Zg(t.e[e],18,T1(l.Ieb(D),9));for(A=0;A<t.R.g;A++)P=t.o[A]<<7,(t.o[A]==1||t.o[A]==2)&&n.dm(t.R,A)==1&&t.n[A]!=0&&(P|=t.n[A]<<5,P|=t.k[A]),n.$g(t.e[n.Ul(t.R,0,A)],l.Ieb(P)),n.$g(t.e[n.Ul(t.R,1,A)],l.Ieb(P));if(r=n.Hf(t),t.U==r)break;t.U=r,i=n.Af(t,!1)}},n.Lf=function(t){var e,A,P,r;for(t.L=!0,t.$=d(l.V6,Y,6,t.R.f,15,1),t.i=d(l.V6,Y,6,t.R.g,15,1),r=n.Af(t,!0);t.U<t.R.f&&r;){for(e=0;e<t.R.f;e++)n.ah(t.e[e],e),n.Zg(t.e[e],t.c+4,Pt(T1(Ct(t.f[e]),4),Ct(t.db[e]<<2)));for(A=0;A<t.R.g;A++)n.$g(t.e[n.Ul(t.R,0,A)],Ct(t.o[A])),n.$g(t.e[n.Ul(t.R,1,A)],Ct(t.o[A]));if(P=n.Hf(t),t.U==P)break;t.U=P,r=n.Af(t,!0)}},n.Mf=function(t){var e,A,P,r,i,D,u;for(t.L=!0,P=n.Wf(t),t.P&&n.rh(t.P,t.f)&&(P=n.Wf(t)),n.Af(t,!1)&&n.Gf(t),D=!0;t.U<t.R.f&&D;){for(r=n.Cf(t,P),e=0;e<t.R.f;e++)n.ah(t.e[e],e),n.Zg(t.e[e],t.c,Ct(t.f[e])),n.Zg(t.e[e],20,0),!t.cb[e]&&t.bb[e]!=0&&n.$g(t.e[e],B1(Ct(t.bb[e]<<18),T1(Ct(r[t.bb[e]==1?0:1][t.ab[e]]),8))),u=t.db[e],t.eb[e]&&(u==1?u=2:u==2&&(u=1)),n.$g(t.e[e],l.Ieb(u<<4));for(A=0;A<t.R.g;A++)n.$g(t.e[n.Ul(t.R,0,A)],Ct(t.o[A])),n.$g(t.e[n.Ul(t.R,1,A)],Ct(t.o[A]));if(i=n.Hf(t),t.U==i)break;t.U=i,D=!1,t.P&&n.rh(t.P,t.f)&&(D=!0,P=n.Wf(t)),n.Af(t,!1)&&(D=!0,n.Gf(t))}},n.Nf=function(t){var e,A;for(e=0;e<t.R.f;e++)(!t.M[e]||t.db[e]==3)&&(t.bb[e]=0);for(A=0;A<t.R.g;A++)(n.dm(t.R,A)!=1||t.o[A]==0||t.o[A]==3)&&(t.n[A]=0)},n.Of=function(t,e,A){t.a==null&&(t.a=d(l.V6,Y,6,t.R.f,15,1),y.Cqb(t.a)),t.a[e]=A<<24>>24},n.Pf=function(t,e){var A,P,r,i,D,u;if((t.o[e]==1||t.o[e]==2)&&!n.fq(t.R,e)){D=!1;try{for(i=0;i<2;i++)if(A=n.Ul(t.R,i,e),n.Wo(t.R,A)==3){for(P=d(l.Z6,H,6,2,15,1),r=0,u=0;u<n.Wo(t.R,A);u++)n.Xo(t.R,A,u)!=e&&(P[r++]=n.Vo(t.R,A,u));t.f[P[0]]>t.f[P[1]]^n.Rf(t,A,P[0],P[1])&&(D=!D)}}catch(o){if(o=C1(o),Yt(o,19)){t.i[e]=3;return}else throw Qt(o)}t.o[e]==1^D?t.i[e]=1:t.i[e]=2}},n.Qf=function(t,e){var A,P,r,i,D,u,o;if(t.db[e]==1||t.db[e]==2){if(u=!1,n.Mo(t.R,e)==2&&n.Wo(t.R,e)==2)try{for(D=0;D<2;D++)if(A=n.Vo(t.R,e,D),n.Wo(t.R,A)==3){for(r=d(l.Z6,H,6,2,15,1),i=0,o=0;o<n.Wo(t.R,A);o++)n.Yo(t.R,A,o)==1&&(r[i++]=n.Vo(t.R,A,o));t.f[r[0]]>t.f[r[1]]^n.Rf(t,A,r[0],r[1])&&(u=!u)}}catch(Q){if(Q=C1(Q),Yt(Q,19)){t.$[e]=3;return}else throw Qt(Q)}else{try{P=n.Tf(t,e)}catch(Q){if(Q=C1(Q),Yt(Q,19)){t.$[e]=3;return}else throw Qt(Q)}for(D=1;D<P.length;D++)for(o=0;o<D;o++)t.f[P[D]]<t.f[P[o]]&&(u=!u)}t.db[e]==1^u?t.$[e]=1:t.$[e]=2}},n.Rf=function(t,e,A,P){var r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S,p,M,z,q,x,J,E,N,ft,Lt,ot,st,ut,rt,Ut;if(n.Ol(t.R,A)!=n.Ol(t.R,P))return n.Ol(t.R,A)>n.Ol(t.R,P);if(n.Hl(t.R,A)!=n.Hl(t.R,P))return ot=n.Im(t.R,A)?(n.Ok(),n.Mk)[n.Ol(t.R,A)]:n.Hl(t.R,A),st=n.Im(t.R,P)?(n.Ok(),n.Mk)[n.Ol(t.R,P)]:n.Hl(t.R,P),ot>st;for(q=t.R.f,S=d(l.Z6,H,6,q,15,1),M=d(l.Z6,H,6,q,15,1),z=d(l.Z6,H,6,q,15,1),p=d(l.teb,wt,6,q,16,1),o=d(l.teb,wt,6,t.R.q,16,1),S[0]=e,S[1]=A,S[2]=P,M[0]=-1,M[1]=0,M[2]=0,o[e]=!0,o[A]=!0,o[P]=!0,s=1,x=2,Lt=d(l.Z6,H,6,64,15,1),Lt[1]=1,Lt[2]=3,b=2;s<=x;){for(;s<Lt[b];){if(h=S[s],!p[s]){for(g=0,B=0,E=0;E<n.Wo(t.R,h);E++){if(L=n.Vo(t.R,h,E),x+n.Yo(t.R,h,E)+1>=q&&(q+=t.R.f,S=n.Dg(S,q),M=n.Dg(M,q),z=n.Dg(z,q),p=n.Eg(p,q)),n.Up(t.R,n.Xo(t.R,h,E)))++g,B+=n.Ol(t.R,L);else if(L!=e)for(ft=1;ft<n.Yo(t.R,h,E);ft++)++x,S[x]=L,M[x]=s,p[x]=!0;if(rt=M[s],L!=S[rt]){if(u=!1,o[L])for(ut=M[rt];ut!=-1;){if(L==S[ut]){u=!0;break}ut=M[ut]}u?(++x,S[x]=L,M[x]=s,p[x]=!0):(++x,S[x]=L,M[x]=s,o[L]=!0)}}g!=0&&(++x,z[x]=(B<<2)/g|0,M[x]=s,p[x]=!0)}if(++s,s==Z0)throw Qt(new T.bC(\"Emergency break in while loop.\"))}for(Lt.length==b+1&&(Lt=n.Dg(Lt,Lt.length+64)),Lt[b+1]=x+1,J=Lt[b];J<Lt[b+1];J++)z[J]==0&&(z[J]=(n.Ol(t.R,S[J])==151||n.Ol(t.R,S[J])==152?1:n.Ol(t.R,S[J]))<<2),z[J]+=z[M[J]]<<16;if(n.Vf(t,p,z,M,S,Lt,b),z[1]!=z[2])return z[1]>z[2];b>1&&n.Sf(z,M,Lt,b),++b}for(w=d(l.Z6,H,6,t.R.f,15,1),N=!1,i=0;i<t.R.f;i++)if(o[i]&&!n.Im(t.R,i)){N=!0;break}if(N){for(D=0;D<t.R.f;D++)w[D]=n.Im(t.R,D)?(n.Ok(),n.Mk)[n.Ol(t.R,D)]:n.Hl(t.R,D);if(n.Uf(t,p,z,M,S,w,Lt,b))return z[1]>z[2]}for(y.Jqb(w,w.length,0),m=!1,Q=0;Q<t.R.g;Q++)(o[n.Ul(t.R,0,Q)]||o[n.Ul(t.R,1,Q)])&&(t.i[Q]==1?(w[n.Ul(t.R,0,Q)]=1,w[n.Ul(t.R,1,Q)]=1,m=!0):t.i[Q]==2&&(w[n.Ul(t.R,0,Q)]=2,w[n.Ul(t.R,1,Q)]=2,m=!0));if(m&&n.Uf(t,p,z,M,S,w,Lt,b))return z[1]>z[2];for(y.Jqb(w,w.length,0),Ut=!1,r=0;r<t.R.f;r++)o[r]&&(t.$[r]==2?(w[r]=1,Ut=!0):t.$[r]==1&&(w[r]=2,Ut=!0));if(Ut&&n.Uf(t,p,z,M,S,w,Lt,b))return z[1]>z[2];throw t.d=!0,Qt(new T.bC(\"no distinction applying CIP rules\"))},n.Sf=function(t,e,A,P){var r,i,D,u,o,Q,L,w,s;for(w=A[P],D=A[P+1]-w,s=d(l.h7,v1,174,D,0,1),o=0;o<D;o++)s[o]=new n.Yg,s[o].c=t[o+w],s[o].b=e[o+w],s[o].a=o+w;for(r=new n.Vg,L=P;L>1;L--){for(Q=0;Q<D;Q++)s[Q].c+=t[s[Q].b]<<16,s[Q].b=e[s[Q].b];for(y.Rqb(s,0,s.length,r),i=1,u=0;u<D;u++)t[s[u].a]=i,u!=D-1&&n.Ug(s[u],s[u+1])!=0&&++i}},n.Tf=function(t,e){var A,P,r,i,D,u,o;for(D=n.Ho(t.R,e),u=d(l.Z6,H,6,D,15,1),r=0;r<D;r++)u[r]=n.Vo(t.R,e,r);for(P=D;P>1;P--){for(A=!1,i=1;i<P;i++)n.Rf(t,e,u[i-1],u[i])&&(A=!0,o=u[i-1],u[i-1]=u[i],u[i]=o);if(!A)break}return u},n.Uf=function(t,e,A,P,r,i,D,u){var o,Q;for(Q=1;Q<u;Q++){for(o=D[Q];o<D[Q+1];o++)A[o]=i[r[o]]+(A[P[o]]<<8);if(n.Vf(t,e,A,P,r,D,Q),A[1]!=A[2])return!0;Q>1&&n.Sf(A,P,D,Q)}return!1},n.Vf=function(t,e,A,P,r,i,D){var u,o,Q,L,w,s,h,b,g,B,m;for(w=D;w>1;w--){for(g=i[w]-i[w-1],m=d(l.f7,v1,173,g,0,1),u=i[w],b=0;b<g;b++){for(B=i[w-1]+b,s=u;s<i[w+1]&&P[s]==B;)++s;for(m[b]=new n.Sg,m[b].c=B,m[b].d=A[B],m[b].b=e[B]?0:n.yp(t.R,r[B]),m[b].a=d(l.Z6,H,6,s-u,15,1),L=u;L<s;L++)m[b].a[L-u]=A[L];c.lzb(m[b].a,c.Szb(y0(y.lrb.prototype.jd,y.lrb,[]))),u=s}for(o=new n.Pg,y.Rqb(m,0,m.length,o),Q=1,h=0;h<g;h++)A[m[h].c]=Q,h!=g-1&&n.Og(m[h],m[h+1])!=0&&++Q}},n.Wf=function(t){var e,A;for(A=w1(l.Z6,[T0,M1],[28,7],0,[2,32],2),e=0;e<t.R.f;e++)t.M[e]&&(t.bb[e]==1?A[0][t.ab[e]]=n.yh(A[0][t.ab[e]],e):t.bb[e]==2&&(A[1][t.ab[e]]=n.yh(A[0][t.ab[e]],e)));return A},n.Xf=function(t){var e,A,P,r,i,D,u,o,Q,L,w,s;for(i=0,L=0,D=0,u=0,o=0,Q=0,w=0,s=!1,e=d(l.teb,wt,6,32,16,1),A=0;A<t.R.f;A++)t.db[A]!=0&&(++i,t.db[A]==3?++L:t.bb[A]==0?(++D,t.P&&n.nh(t.P,A)&&++u):t.bb[A]==2?t.ab[A]==0&&++Q:t.bb[A]==1&&(r=t.ab[A],e[r]||(++w,e[r]=!0),t.ab[A]==0&&++o,t.P&&n.nh(t.P,A)&&(s=!0)));for(P=0;P<t.R.g;P++)t.o[P]!=0&&n.dm(t.R,P)==1&&(++i,t.o[P]==3?++L:t.n[P]==0?(++D,t.P&&n.nh(t.P,n.Ul(t.R,0,P))&&n.nh(t.P,n.Ul(t.R,1,P))&&++u):t.n[P]==2?t.k[P]==0&&++Q:t.n[P]==1&&(r=t.k[P],e[r]||(++w,e[r]=!0),t.k[P]==0&&++o,t.P&&n.nh(t.P,n.Ul(t.R,0,P))&&n.nh(t.P,n.Ul(t.R,1,P))&&(s=!0)));if(i==0){n.Jn(t.R,z1);return}if(L!=0){n.Jn(t.R,0);return}if(t.K){n.Jn(t.R,n0+(1<<w));return}o+u==i&&!s?n.Jn(t.R,YA):D==i?n.Jn(t.R,Ue):Q==i?n.Jn(t.R,327680):D==i-1&&o==1?n.Jn(t.R,ae):n.Jn(t.R,458752+(1<<w))},n.Yf=function(t,e,A){for(;A!=0;)t.t==0&&((!t.r||t.v!=63)&&(t.v+=64),T.Ejb(t.u,t.v&r1),t.t=6,t.v=0),t.v<<=1,t.v=Gt(Pt(Ct(t.v),Z(e,1))),e=a1(e,1),--A,--t.t},n.Zf=function(t){return t.v<<=t.t,(!t.r||t.v!=63)&&(t.v+=64),T.Ejb(t.u,t.v&r1),t.u.a},n.$f=function(t,e){t.u=new T.Kjb,t.t=6,t.v=0,t.r=e},n._f=function(t,e,A){var P,r,i,D,u,o,Q,L,w,s,h,b,g,B;if(t.R.f==0){t.s=\"\";return}for(w=t.jb&t.b,B=t.jb?16:8,n.$f(t,!0),T.Ejb(t.u,w?35:33),n.Yf(t,Ct(t.jb?1:0),1),n.Yf(t,l.Ieb(e?1:0),1),n.Yf(t,l.Ieb(B>>1),4),b=0,o=1;o<t.R.f;o++)b=n.pg(t,t.B[o],t.F[o]==-1?-1:t.B[t.F[o]],b,A);if(w)for(Q=0;Q<t.R.f;Q++)for(P=t.B[Q],h=n.Wo(t.R,P);h<n.Ho(t.R,P);h++)b=n.pg(t,n.Vo(t.R,P,h),P,b,A);if(t.R.f>1&&b==0){t.s=\"\";return}for(D=1<<B,s=b/((D>>1)-1),g=b+.5*s,L=1;L<t.R.f;L++)n.ag(t,t.B[L],t.F[L]==-1?-1:t.B[t.F[L]],g,s,B,A);if(w)for(u=0;u<t.R.f;u++)for(P=t.B[u],h=n.Wo(t.R,P);h<n.Ho(t.R,P);h++)n.ag(t,n.Vo(t.R,P,h),P,g,s,B,A);e&&(i=t.jb?1.5:(n.Ok(),n.Ok(),n.Nk),r=n.Sl(t.R,w?t.R.q:t.R.f,w?t.R.r:t.R.g,i,A),n.Yf(t,Ct(k.Math.min(D-1,k.Math.max(0,mt(.5+k.Math.log(r/.1)*k.Math.LOG10E/(k.Math.log(2e3)*k.Math.LOG10E)*(D-1))))),B),n.Yf(t,Ct(n.dg(A[t.B[0]].a/r,D)),B),n.Yf(t,Ct(n.dg(A[t.B[0]].b/r,D)),B),t.jb&&n.Yf(t,Ct(n.dg(A[t.B[0]].c/r,D)),B)),t.s=n.Zf(t)},n.ag=function(t,e,A,P,r,i,D){var u,o,Q;u=A==-1?(D[e].a-D[t.B[0]].a)/8:D[e].a-D[A].a,o=A==-1?(D[e].b-D[t.B[0]].b)/8:D[e].b-D[A].b,n.Yf(t,Ct(mt((P+u)/r)),i),n.Yf(t,Ct(mt((P+o)/r)),i),t.jb&&(Q=A==-1?(D[e].c-D[t.B[0]].c)/8:D[e].c-D[A].c,n.Yf(t,Ct(mt((P+Q)/r)),i))},n.bg=function(t,e){var A;for(A=0;A<t.w;A++)e-=16;for(e<0&&T.Pjb();e>15;)n.Yf(t,1,1),n.Yf(t,15,4),e-=16,++t.w;n.Yf(t,1,1),n.Yf(t,l.Ieb(e),4)},n.cg=function(t){var e,A,P,r,i,D;if(t.R.f==0){t.N=\"\";return}for(i=0,P=!1,r=!1,A=0;A<t.R.f;A++)i<n.Gl(t.R,A)&&(i=n.Gl(t.R,A)),n.wm(t.R,A)?P=!0:r=!0;if(i==0){t.N=\"\";return}for(D=n.Mg(i),n.$f(t,!0),n.Yf(t,l.Ieb(D),4),n.Yf(t,l.Ieb(P?1:0),1),n.Yf(t,l.Ieb(r?1:0),1),e=0;e<t.R.f;e++)n.Yf(t,Ct(n.Gl(t.R,t.B[e])),D),P&&r&&n.Yf(t,Ct(n.wm(t.R,t.B[e])?1:0),1);t.N=n.Zf(t)},n.dg=function(t,e){var A,P,r,i;return A=e/2|0,r=t<0,t=k.Math.abs(t),i=e/32|0,P=k.Math.min(A-1,Gt(h1(k.Math.round(t*A/(t+i))))),r?A+P:P},n.eg=function(t){var e,A,P;for(e=0;e<t.R.f;e++)t.db[e]==3&&!n.sm(t.R,e)&&n.Rn(t.R,e),(n.Cl(t.R,e)==1||n.Cl(t.R,e)==2)&&t.db[e]==3&&n.Rn(t.R,e),n.sm(t.R,e)&&t.db[e]!=3&&!n.Bg(t,e)&&n.Rn(t.R,e);for(P=0;P<t.R.r;P++)n.Nm(t.R,P)&&!n.Ag(t,P)&&n.Rn(t.R,n.Ul(t.R,0,P));for(A=0;A<t.R.g;A++)n.am(t.R,A)==2&&(n.Cm(t.R,A)&&(t.o[A]==1||t.o[A]==2)&&(t.o[A]=3,n.In(t.R,A,386)),t.o[A]==3&&!t.p[A]&&n.dm(t.R,A)!=386&&(n.Rn(t.R,n.Ul(t.R,0,A)),n.Rn(t.R,n.Ul(t.R,1,A)))),n.dm(t.R,A)==1&&t.o[A]==3&&!n.sm(t.R,n.Ul(t.R,0,A))&&!n.sm(t.R,n.Ul(t.R,1,A))&&(n.Rn(t.R,n.Ul(t.R,0,A)),n.Rn(t.R,n.Ul(t.R,1,A))),(n.Zl(t.R,A)==1||n.Zl(t.R,A)==2)&&(n.dm(t.R,A)!=1||t.o[A]!=1&&t.o[A]!=2)&&(n.Rn(t.R,n.Ul(t.R,0,A)),n.Rn(t.R,n.Ul(t.R,1,A)))},n.fg=function(t){var e,A,P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S,p,M,z;if(t.R.f!=0&&!t.G){for(t.I=0,z=0,A=1;A<t.R.f;A++)t.f[A]>t.f[z]&&(z=A);for(P=d(l.teb,wt,6,t.R.f,16,1),D=d(l.teb,wt,6,t.R.g,16,1),t.H=d(l.Z6,H,6,t.R.f,15,1),t.B=d(l.Z6,H,6,t.R.f,15,1),t.F=d(l.Z6,H,6,t.R.f,15,1),t.C=d(l.Z6,H,6,t.R.g,15,1),t.B[0]=z,t.H[z]=0,P[z]=!0,r=1,o=0,Q=1,L=0;o<t.R.f;)if(o<Q){for(;;){for(b=0,g=0,s=-1,e=t.B[o],B=0;B<n.Io(t.R,e);B++)(B<n.Wo(t.R,e)||B>=n.Ho(t.R,e))&&(u=n.Vo(t.R,e,B),!P[u]&&t.f[u]>s&&(b=u,g=n.Xo(t.R,e,B),s=t.f[u]));if(s==-1)break;t.H[b]=Q,t.F[Q]=o,t.B[Q++]=b,t.C[L++]=g,P[b]=!0,D[g]=!0}++o}else{for(h=0,s=-1,e=0;e<t.R.f;e++)!P[e]&&t.f[e]>s&&(h=e,s=t.f[e]);++r,t.H[h]=Q,t.F[Q]=-1,t.B[Q++]=h,P[h]=!0}for(t.D=d(l.Z6,H,6,2*(t.R.g-L),15,1);;){for(S=t.R.M,p=t.R.M,M=-1,i=0;i<t.R.g;i++)D[i]||(t.H[n.Ul(t.R,0,i)]<t.H[n.Ul(t.R,1,i)]?(m=t.H[n.Ul(t.R,0,i)],w=t.H[n.Ul(t.R,1,i)]):(m=t.H[n.Ul(t.R,1,i)],w=t.H[n.Ul(t.R,0,i)]),(m<S||m==S&&w<p)&&(S=m,p=w,M=i));if(M==-1)break;D[M]=!0,t.C[L++]=M,t.D[2*t.I]=S,t.D[2*t.I+1]=p,++t.I}t.G=!0}},n.gg=function(t){var e,A,P,r,i,D,u,o,Q,L,w,s,h,b;for(o=null,b=n.Ap(t.R),w=0;w<b.i.a.length;w++)if(b.e[w]){for(i=0,s=y.uj(b.i,w),A=s,P=0,r=A.length;P<r;++P)e=A[P],n.vg(t,e)&&++i;if(i!=0)if(h=y.uj(b.j,w),o==null&&(o=d(l.teb,wt,6,t.R.g,16,1)),i==s.length){for(Q=-1,L=Mt,D=0;D<s.length;D++)L>t.B[h[D]]&&(L=t.B[h[D]],Q=D);for(;i>0;)o[h[Q]]=!0,Q=n.Jg(Q+2,s.length),i-=2}else{for(u=0;n.vg(t,s[u]);)++u;for(;!n.vg(t,s[u]);)u=n.Jg(u+1,s.length);for(;i>0;)for(o[h[u]]=!0,u=n.Jg(u+2,s.length),i-=2;!n.vg(t,s[u]);)u=n.Jg(u+1,s.length)}}return o},n.hg=function(t,e){var A,P,r,i,D,u,o,Q,L;for(n.fg(t),Q=new n.tw(t.R.f,t.R.g),n.Kn(Q,t.R.K),D=0;D<t.R.f;D++)n.hl(t.R,Q,t.B[D],0,0),n.kn(Q,D,t.bb[t.B[D]],t.ab[t.B[D]]);for(u=0;u<t.R.g;u++)n.jl(t.R,Q,t.C[u],0,0,t.H,!1),!(Q.H[u]==257||Q.H[u]==129)&&Q.D[0][u]>Q.D[1][u]&&(L=Q.D[0][u],n.zn(Q,0,u,Q.D[1][u]),Q.D[1][u]=L,Q.T=0),n.Cn(Q,u,t.n[t.C[u]],t.k[t.C[u]]);if(e)for(i=0;i<t.R.f;i++)for(A=t.B[i],o=n.Wo(t.R,A);o<n.Ho(t.R,A);o++)r=n.hl(t.R,Q,n.Vo(t.R,A,o),0,0),n.il(t.R,Q,n.Xo(t.R,A,o),0,0,t.H[A],r,!1);for(P=0;P<Q.r;P++)A=Q.D[0][P],t.eb[t.B[A]]&&(Q.H[P]==257?(Q.H[P]=129,Q.T=0):Q.H[P]==129&&(Q.H[P]=257,Q.T=0));return n._v(t.R,Q),Q.T&=-9,Q},n.ig=function(t,e){return t.o[e]},n.jg=function(t){return n.kg(t,t.jb)},n.kg=function(t,e){return t.s==null&&(n.fg(t),n._f(t,e,t.R.J)),t.s},n.lg=function(t){return t.N==null&&(n.fg(t),n.cg(t)),t.N},n.mg=function(t){return n.fg(t),t.B},n.ng=function(t){return n.fg(t),t.H},n.og=function(t){return t.J==null&&(n.fg(t),(t.Q&c1)==0&&(n.xg(t),n.yg(t,1),n.yg(t,2)),n.wg(t)),t.J},n.pg=function(t,e,A,P,r){var i,D,u;return i=A==-1?k.Math.abs(r[e].a-r[t.B[0]].a)/8:k.Math.abs(r[e].a-r[A].a),P<i&&(P=i),D=A==-1?k.Math.abs(r[e].b-r[t.B[0]].b)/8:k.Math.abs(r[e].b-r[A].b),P<D&&(P=D),t.jb&&(u=A==-1?k.Math.abs(r[e].c-r[t.B[0]].c)/8:k.Math.abs(r[e].c-r[A].c),P<u&&(P=u)),P},n.qg=function(t,e){return t.X[e]},n.rg=function(t,e){return t.Y[e]},n.sg=function(t,e){return t.g==null?-1:t.g[e]},n.tg=function(t,e){return t.db[e]},n.ug=function(t,e){var A,P,r,i,D,u,o;for(o=n.Ap(t.R),A=0;A<o.i.a.length;A++)if(o.d[A]&&n.mt(o,A,e)){for(r=y.uj(o.i,A),i=0,D=r.length;i<D;++i)if(P=r[i],P!=e){for(u=0;u<n.Wo(t.R,P);u++)if(n.Rp(t.R,n.Xo(t.R,P,u)))return!0}return!1}return!1},n.vg=function(t,e){var A,P,r;if(n.Mo(t.R,e)<2)return!1;if(n.Wo(t.R,e)==2)return!0;for(A=0,r=0;r<n.Wo(t.R,e);r++)P=n.Xo(t.R,e,r),n.Qp(t.R,P)&&(A+=n.am(t.R,P)-1);return A>1},n.wg=function(t){var e,A,P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S,p,M,z,q,x,J,E,N,ft,Lt,ot,st,ut,rt,Ut,ht,it,bt,ct,$t,Ft,Rt,Et,Nt,It,vt,kt,L1,f1,St,Xt;if(n.$f(t,!1),n.Yf(t,9,4),kt=k.Math.max(n.Mg(t.R.f),n.Mg(t.R.g)),n.Yf(t,l.Ieb(kt),4),kt==0){n.Yf(t,Ct(t.R.K?1:0),1),n.Yf(t,0,1),t.J=n.Zf(t);return}for(L1=St=f1=ot=0,o=0;o<t.R.f;o++)if(S1(Z(n.Jl(t.R,o),1),0)){switch(n.Ol(t.R,o)){case 6:break;case 7:++L1;break;case 8:++St;break;default:++f1}n.xl(t.R,o)!=0&&++ot}for(n.Yf(t,Ct(t.R.f),kt),n.Yf(t,Ct(t.R.g),kt),n.Yf(t,l.Ieb(L1),kt),n.Yf(t,l.Ieb(St),kt),n.Yf(t,l.Ieb(f1),kt),n.Yf(t,l.Ieb(ot),kt),Q=0;Q<t.R.f;Q++)n.Ol(t.R,t.B[Q])==7&&S1(Z(n.Jl(t.R,t.B[Q]),1),0)&&n.Yf(t,l.Ieb(Q),kt);for(s=0;s<t.R.f;s++)n.Ol(t.R,t.B[s])==8&&S1(Z(n.Jl(t.R,t.B[s]),1),0)&&n.Yf(t,l.Ieb(s),kt);for(h=0;h<t.R.f;h++)n.Ol(t.R,t.B[h])!=6&&n.Ol(t.R,t.B[h])!=7&&n.Ol(t.R,t.B[h])!=8&&S1(Z(n.Jl(t.R,t.B[h]),1),0)&&(n.Yf(t,l.Ieb(h),kt),n.Yf(t,Ct(n.Ol(t.R,t.B[h])),8));for(b=0;b<t.R.f;b++)n.xl(t.R,t.B[b])!=0&&S1(Z(n.Jl(t.R,t.B[b]),1),0)&&(n.Yf(t,l.Ieb(b),kt),n.Yf(t,Ct(8+n.xl(t.R,t.B[b])),4));for(vt=0,z=0,g=1;g<t.R.f;g++)t.F[g]==-1?it=0:(it=1+t.F[g]-z,z=t.F[g]),vt<it&&(vt=it);for(ht=n.Mg(vt),n.Yf(t,l.Ieb(ht),4),z=0,B=1;B<t.R.f;B++)t.F[B]==-1?it=0:(it=1+t.F[B]-z,z=t.F[B]),n.Yf(t,l.Ieb(it),ht);for($t=0;$t<2*t.I;$t++)n.Yf(t,Ct(t.D[$t]),kt);for(x=0;x<t.R.g;x++)Lt=(n.cm(t.R,t.C[x])&Qe)!=0||n.dm(t.R,t.C[x])==16?1:n.Up(t.R,t.C[x])?0:k.Math.min(3,n.am(t.R,t.C[x])),n.Yf(t,l.Ieb(Lt),2);if(A=0,(t.Q&c1)==0)for(m=0;m<t.R.f;m++)t._[t.B[m]]!=0&&t._[t.B[m]]!=3&&++A;if(n.Yf(t,l.Ieb(A),kt),(t.Q&c1)==0)for(m=0;m<t.R.f;m++)t._[t.B[m]]!=0&&t._[t.B[m]]!=3&&(n.Yf(t,l.Ieb(m),kt),t.bb[t.B[m]]==0?n.Yf(t,Ct(t._[t.B[m]]),3):(Xt=t._[t.B[m]]==1?t.bb[t.B[m]]==1?4:6:t.bb[t.B[m]]==1?5:7,n.Yf(t,l.Ieb(Xt),3),n.Yf(t,Ct(t.ab[t.B[m]]),3)));if(e=0,(t.Q&c1)==0)for(J=0;J<t.R.g;J++)t.j[t.C[J]]!=0&&t.j[t.C[J]]!=3&&(!n.fq(t.R,t.C[J])||n.dm(t.R,t.C[J])==1)&&++e;if(n.Yf(t,l.Ieb(e),kt),(t.Q&c1)==0)for(J=0;J<t.R.g;J++)t.j[t.C[J]]!=0&&t.j[t.C[J]]!=3&&(!n.fq(t.R,t.C[J])||n.dm(t.R,t.C[J])==1)&&(n.Yf(t,l.Ieb(J),kt),n.dm(t.R,t.C[J])==1?t.n[t.C[J]]==0?n.Yf(t,Ct(t.j[t.C[J]]),3):(Xt=t.j[t.C[J]]==1?t.n[t.C[J]]==1?4:6:t.n[t.C[J]]==1?5:7,n.Yf(t,l.Ieb(Xt),3),n.Yf(t,Ct(t.k[t.C[J]]),3)):n.Yf(t,Ct(t.j[t.C[J]]),2));for(n.Yf(t,Ct(t.R.K?1:0),1),rt=0,S=0;S<t.R.f;S++)n.Hl(t.R,t.B[S])!=0&&++rt;if(rt!=0)for(n.bg(t,1),n.Yf(t,l.Ieb(rt),kt),m=0;m<t.R.f;m++)n.Hl(t.R,t.B[m])!=0&&(n.Yf(t,l.Ieb(m),kt),n.Yf(t,Ct(n.Hl(t.R,t.B[m])),8));if(t.w=0,t.R.K){for(n.df(t,0,kt,c1,1,-1),n.df(t,3,kt,J1,1,-1),n.df(t,4,kt,120,4,3),n.df(t,5,kt,XA,2,1),n.df(t,6,kt,1,1,-1),n.df(t,7,kt,K0,4,7),rt=0,m=0;m<t.R.f;m++)n.El(t.R,t.B[m])!=null&&++rt;if(rt>0){for(n.bg(t,8),n.Yf(t,l.Ieb(rt),kt),p=0;p<t.R.f;p++)if(M=n.El(t.R,t.B[p]),M!=null)for(n.Yf(t,l.Ieb(p),kt),n.Yf(t,Ct(M.length),4),r=M,i=0,D=r.length;i<D;++i)P=r[i],n.Yf(t,l.Ieb(P),8)}n.ef(t,9,kt,384,2,7),n.ef(t,10,kt,31,5,0),n.df(t,11,kt,l0,1,-1),n.ef(t,12,kt,Qe,8,9),n.df(t,13,kt,_e,3,14),n.df(t,14,kt,$e,5,17),n.df(t,16,kt,ke,3,22)}for(rt=0,L=0;L<t.R.f;L++)t.a!=null&&t.a[t.B[L]]!=-1&&++rt;if(rt!=0)for(n.bg(t,17),n.Yf(t,l.Ieb(rt),kt),m=0;m<t.R.f;m++)t.a!=null&&t.a[t.B[m]]!=-1&&(n.Yf(t,l.Ieb(m),kt),n.Yf(t,Ct(t.a[t.B[m]]),4));if((t.Q&8)!=0||(t.Q&r0)!=0){for(rt=0,It=0,m=0;m<t.R.f;m++)Et=n.zl(t.R,t.B[m]),Et!=null&&(++rt,It=k.Math.max(It,c.Szb(Et).length));if(rt!=0){for(Nt=n.Mg(It),n.bg(t,18),n.Yf(t,l.Ieb(rt),kt),n.Yf(t,l.Ieb(Nt),4),p=0;p<t.R.f;p++)if(Ut=n.zl(t.R,t.B[p]),Ut!=null)for(n.Yf(t,l.Ieb(p),kt),n.Yf(t,Ct(c.Szb(Ut).length),Nt),ct=0;ct<c.Szb(Ut).length;ct++)n.Yf(t,(c.Nzb(ct,c.Szb(Ut).length),Ct(c.Szb(Ut).charCodeAt(ct))),7)}}for(t.R.K&&(n.df(t,19,kt,Be,3,25),n.ef(t,20,kt,re,3,17)),rt=0,w=0;w<t.R.f;w++)n.Kl(t.R,t.B[w])!=0&&++rt;if(rt!=0)for(n.bg(t,21),n.Yf(t,l.Ieb(rt),kt),u=0;u<t.R.f;u++)n.Kl(t.R,t.B[u])!=0&&(n.Yf(t,l.Ieb(u),kt),n.Yf(t,Ct(n.Kl(t.R,t.B[u])>>4),2));if(t.R.K&&(n.df(t,22,kt,Ne,1,-1),n.ef(t,23,kt,je,1,-1),n.ef(t,24,kt,oA,2,21)),(t.Q&16)!=0){for(u=0;u<t.R.f;u++)if(n.Lm(t.R,t.B[u])){for(n.bg(t,25),P=0;P<t.R.f;P++)n.Yf(t,Ct(n.Lm(t.R,t.B[P])?1:0),1);break}}if(Ft=n.gg(t),Ft!=null){for(rt=0,J=0;J<t.R.g;J++)Ft[t.C[J]]&&++rt;for(n.bg(t,26),n.Yf(t,l.Ieb(rt),kt),E=0;E<t.R.g;E++)Ft[t.C[E]]&&n.Yf(t,l.Ieb(E),kt)}for(t.R.K&&n.df(t,27,kt,P0,1,-1),rt=0,N=0;N<t.R.g;N++)n.dm(t.R,t.C[N])==16&&++rt;if(rt!=0)for(n.bg(t,28),n.Yf(t,l.Ieb(rt),kt),J=0;J<t.R.g;J++)n.dm(t.R,t.C[J])==16&&n.Yf(t,l.Ieb(J),kt);for(t.R.K&&(n.df(t,29,kt,ye,2,30),n.df(t,30,kt,Me,7,32),n.df(t,32,kt,fr,2,44),n.df(t,33,kt,Ln,5,39),n.df(t,34,kt,AA,1,-1),n.ef(t,35,kt,Mn,1,-1),n.ef(t,36,kt,96,2,5)),rt=0,ft=0;ft<t.R.g;ft++)(n.dm(t.R,t.C[ft])==32||n.dm(t.R,t.C[ft])==64)&&++rt;if(rt!=0)for(n.bg(t,37),n.Yf(t,l.Ieb(rt),kt),q=0;q<t.R.g;q++)(n.dm(t.R,t.C[q])==32||n.dm(t.R,t.C[q])==64)&&(n.Yf(t,l.Ieb(q),kt),n.Yf(t,Ct(n.dm(t.R,t.C[q])==32?0:1),1));if(t.b&&(t.Q&16)!=0){for(rt=0,st=0,m=0;m<t.R.f;m++){for(ut=0,Rt=n.Wo(t.R,t.B[m]);Rt<n.Ho(t.R,t.B[m]);Rt++)n.Lm(t.R,n.Vo(t.R,t.B[m],Rt))&&(bt=Rt-n.Wo(t.R,t.B[m]),ut|=1<<bt,st=k.Math.max(st,bt+1));ut!=0&&++rt}if(rt!=0)for(n.bg(t,38),n.Yf(t,l.Ieb(rt),kt),n.Yf(t,l.Ieb(st),3),u=0;u<t.R.f;u++){for(ut=0,Rt=n.Wo(t.R,t.B[u]);Rt<n.Ho(t.R,t.B[u]);Rt++)n.Lm(t.R,n.Vo(t.R,t.B[u],Rt))&&(bt=Rt-n.Wo(t.R,t.B[u]),ut|=1<<bt);ut!=0&&(n.Yf(t,l.Ieb(u),kt),n.Yf(t,l.Ieb(ut),st))}}t.R.K&&n.df(t,39,kt,Dr,4,47),n.Yf(t,0,1),t.J=n.Zf(t)},n.xg=function(t){var e,A,P,r,i,D,u,o,Q,L,w;for(t._=d(l.V6,Y,6,t.R.f,15,1),e=0;e<t.R.f;e++)if(t.db[e]==1||t.db[e]==2){if(o=t.eb[e],n.Sp(t.R,e))for(u=0;u<n.Wo(t.R,e);u++){for(r=n.Vo(t.R,e,u),w=0,L=d(l.Z6,H,6,3,15,1),Q=0;Q<n.Wo(t.R,r);Q++)L[w]=n.Vo(t.R,r,Q),L[w]!=e&&++w;w==2&&t.f[L[0]]>t.f[L[1]]^t.H[L[0]]<t.H[L[1]]&&(o=!o)}else for(u=1;u<n.Wo(t.R,e);u++)for(Q=0;Q<u;Q++)i=n.Vo(t.R,e,u),D=n.Vo(t.R,e,Q),t.f[i]>t.f[D]&&(o=!o),t.H[i]<t.H[D]&&(o=!o);t._[e]=t.db[e]==1^o?1:2}else t._[e]=t.db[e];for(t.j=d(l.V6,Y,6,t.R.g,15,1),A=0;A<t.R.g;A++)if(t.o[A]==1||t.o[A]==2){for(o=!1,u=0;u<2;u++)if(P=n.Ul(t.R,u,A),n.Wo(t.R,P)==3){for(L=d(l.Z6,H,6,2,15,1),w=0,Q=0;Q<3;Q++)n.Vo(t.R,P,Q)!=n.Ul(t.R,1-u,A)&&(L[w++]=n.Vo(t.R,P,Q));t.f[L[0]]>t.f[L[1]]&&(o=!o),t.H[L[0]]<t.H[L[1]]&&(o=!o)}t.j[A]=t.o[A]==1^o?1:2}else t.j[A]=t.o[A]},n.yg=function(t,e){var A,P,r,i,D,u,o,Q,L,w,s,h,b;for(o=d(l.Z6,H,6,32,15,1),Q=0,P=0;P<t.R.f;P++)(t._[P]==1||t._[P]==2)&&t.bb[P]==e&&(u=t.ab[P],o[u]<t.f[P]&&(o[u]==0&&++Q,o[u]=t.f[P]));for(i=0;i<t.R.g;i++)(t.j[i]==1||t.j[i]==2)&&t.n[i]==e&&n.dm(t.R,i)==1&&(u=t.k[i],b=k.Math.max(t.f[n.Ul(t.R,0,i)],t.f[n.Ul(t.R,1,i)]),o[u]<b&&(o[u]==0&&++Q,o[u]=b));for(D=d(l.V6,Y,6,32,15,1),L=0;L<Q;L++){for(s=-1,h=0,w=0;w<32;w++)h<o[w]&&(h=o[w],s=w);o[s]=0,D[s]=L<<24>>24}for(A=0;A<t.R.f;A++)(t._[A]==1||t._[A]==2)&&t.bb[A]==e&&(t.ab[A]=D[t.ab[A]]);for(r=0;r<t.R.g;r++)(t.j[r]==1||t.j[r]==2)&&t.n[r]==e&&n.dm(t.R,r)==1&&(t.k[r]=D[t.k[r]])},n.zg=function(t,e,A){var P,r;for(t.U=e,P=0;P<t.R.f;P++)t.f[P]=A[P],t.db[P]=0,t.ib[P]=!1;for(r=0;r<t.R.g;r++)t.o[r]=0,t.q[r]=!1},n.Ag=function(t,e){var A,P,r;if(A=n.Ul(t.R,0,e),A>=t.R.f)return!1;if(t.db[A]==1||t.db[A]==2)return!0;if(t.db[A]==3)return!1;if(P=n.Do(t.R,A),P!=-1)return t.o[P]==1||t.o[P]==2;for(r=0;r<n.Wo(t.R,A);r++)if(n.Yo(t.R,A,r)==2&&(t.db[n.Vo(t.R,A,r)]==1||t.db[n.Vo(t.R,A,r)]==2))return!0;return!1},n.Bg=function(t,e){var A;for(A=0;A<n.Wo(t.R,e);A++)if(t.o[n.Xo(t.R,e,A)]==3&&n.Yo(t.R,e,A)==1)return!0;return!1},n.Cg=function(t){var e,A,P,r,i,D,u;for(D=d(l.Z6,H,6,t.U+1,15,1),A=0;A<t.R.f;A++)n.Cl(t.R,A)==0&&(t.db[A]==1?++D[t.f[A]]:t.db[A]==2&&--D[t.f[A]]);for(r=0;r<t.R.g;r++)n.am(t.R,r)==1&&n.Zl(t.R,r)==0&&(t.o[r]==1?(++D[t.f[n.Ul(t.R,0,r)]],++D[t.f[n.Ul(t.R,1,r)]]):t.o[r]==2&&(--D[t.f[n.Ul(t.R,0,r)]],--D[t.f[n.Ul(t.R,1,r)]]));for(u=1;u<=t.U;u++)if(D[u]!=0){if(i=D[u]<0,i){for(e=0;e<t.R.f;e++)n.Cl(t.R,e)==0&&(t.db[e]==1?t.db[e]=2:t.db[e]==2&&(t.db[e]=1));for(P=0;P<t.R.g;P++)n.am(t.R,P)==1&&n.Zl(t.R,P)==0&&(t.o[P]==1?t.o[P]=2:t.o[P]==2&&(t.o[P]=1))}return i}return!1},n.Dg=function(t,e){var A;return A=d(l.Z6,H,6,e,15,1),T.Qjb(t,0,A,0,t.length),A},n.Eg=function(t,e){var A;return A=d(l.teb,wt,6,e,16,1),T.Qjb(t,0,A,0,t.length),A},n.Fg=function(t){var e,A;if(t.$!=null)for(e=0;e<t.R.f;e++)n.dn(t.R,e,t.$[e]);if(t.i!=null)for(A=0;A<t.R.g;A++)n.Bn(t.R,A,t.i[A])},n.Gg=function(t){var e,A,P,r,i,D,u,o,Q,L,w;for(e=0;e<t.R.f;e++)if(t.db[e]==1||t.db[e]==2){if(o=!1,n.Sp(t.R,e))for(u=0;u<n.Wo(t.R,e);u++){for(r=n.Vo(t.R,e,u),w=0,L=d(l.Z6,H,6,3,15,1),Q=0;Q<n.Wo(t.R,r);Q++)L[w]=n.Vo(t.R,r,Q),L[w]!=e&&++w;w==2&&t.f[L[0]]>t.f[L[1]]^L[0]<L[1]&&(o=!o)}else for(u=1;u<n.Wo(t.R,e);u++)for(Q=0;Q<u;Q++)i=n.Vo(t.R,e,u),D=n.Vo(t.R,e,Q),t.f[i]>t.f[D]&&(o=!o),i<D&&(o=!o);n.qn(t.R,e,t.db[e]==1^o?1:2,t.fb[e])}else n.qn(t.R,e,t.db[e],t.fb[e]);for(A=0;A<t.R.g;A++)if(t.o[A]==1||t.o[A]==2){for(o=!1,u=0;u<2;u++)if(P=n.Ul(t.R,u,A),n.Wo(t.R,P)==3){for(L=d(l.Z6,H,6,2,15,1),w=0,Q=0;Q<3;Q++)n.Vo(t.R,P,Q)!=n.Ul(t.R,1-u,A)&&(L[w++]=n.Vo(t.R,P,Q));t.f[L[0]]>t.f[L[1]]&&(o=!o),L[0]<L[1]&&(o=!o)}n.Fn(t.R,A,t.o[A]==1^o?1:2,t.p[A])}else n.Fn(t.R,A,t.o[A],t.p[A])},n.Hg=function(t){var e;for(e=0;e<t.R.f;e++)n.un(t.R,e,t.M[e])},n.Ig=function(t){var e,A,P;for(e=0;e<t.R.f;e++)!n.sm(t.R,e)&&t.db[e]==3&&n.gn(t.R,e,!0);for(A=0;A<t.R.g;A++)t.o[A]==3&&(P=n.am(t.R,A),P==1?n.gn(t.R,n.Ul(t.R,0,A),!0):P==2&&n.In(t.R,A,386))},n.Jg=function(t,e){return t<e?t:t-e},n.Kg=function(t){n.Lg.call(this,t,0)},n.Lg=function(t,e){this.R=t,this.Q=e,n.aw(this.R,7),this.c=n.Mg(this.R.f),(this.Q&c1)==0&&n.zf(this),this.jb=(e&64)!=0||n.rm(this.R),this.b=n.jp(this.R)==0,(this.Q&c1)==0&&(this.db=d(l.V6,Y,6,this.R.f,15,1),this.fb=d(l.teb,wt,6,this.R.f,16,1),this.ib=d(l.teb,wt,6,this.R.f,16,1),this.o=d(l.V6,Y,6,this.R.g,15,1),this.q=d(l.teb,wt,6,this.R.g,16,1),this.p=d(l.teb,wt,6,this.R.g,16,1)),this.d=!1,n.Df(this),(this.Q&c1)==0&&n.Jf(this),n.If(this)},n.Mg=function(t){var e;for(e=0;t>0;)t>>=1,++e;return e},G(34,1,{},n.Kg,n.Lg),U.b=!1,U.c=0,U.d=!1,U.r=!1,U.t=0,U.v=0,U.w=0,U.G=!1,U.I=0,U.K=!1,U.L=!1,U.O=0,U.Q=0,U.T=0,U.U=0,U.Z=!1,U.jb=!1,l.p7=O(34),n.Ng=function(t,e){var A,P,r,i;if(t.d!=e.d)return t.d>e.d?1:-1;for(r=t.a.length,i=e.a.length,A=k.Math.min(r,i),P=0;P<A;P++)if(--r,--i,t.a[r]!=e.a[i])return t.a[r]>e.a[i]?1:-1;return r!=i?r>i?1:-1:t.b!=e.b?t.b>e.b?1:-1:0},n.Og=function(t,e){return n.Ng(t,e)},n.Pg=function(){},G(267,1,{},n.Pg),U.Qb=function(t,e){return n.Og(t,e)},U.lb=function(t){return this===t},l.g7=O(267),n.Sg=function(){},G(173,1,{173:1},n.Sg),U.b=0,U.c=0,U.d=0,l.f7=O(173),n.Tg=function(t,e){return t.c!=e.c?t.c>e.c?1:-1:0},n.Ug=function(t,e){return n.Tg(t,e)},n.Vg=function(){},G(268,1,{},n.Vg),U.Qb=function(t,e){return n.Ug(t,e)},U.lb=function(t){return this===t},l.i7=O(268),n.Yg=function(){},G(174,1,{174:1},n.Yg),U.a=0,U.b=0,U.c=0,l.h7=O(174),n.Zg=function(t,e,A){t.b==0&&(++t.c,t.b=63),t.b==63?(t.d[t.c]=Pt(t.d[t.c],A),t.b-=e):t.b>=e?(t.d[t.c]=T1(t.d[t.c],e),t.d[t.c]=Pt(t.d[t.c],A),t.b-=e):(t.d[t.c]=T1(t.d[t.c],t.b),t.d[t.c]=Pt(t.d[t.c],a1(A,e-t.b)),e-=t.b,++t.c,t.b=63-e,t.d[t.c]=Pt(t.d[t.c],Z(A,l.Ieb((1<<e)-1))))},n.$g=function(t,e){t.d[t.c]=B1(t.d[t.c],e)},n._g=function(t,e){var A;for(A=0;A<t.c;A++)if(jt(t.d[A],e.d[A]))return dn(t.d[A],e.d[A])?-1:1;return S1(t.d[t.c],e.d[t.c])?0:dn(t.d[t.c],e.d[t.c])?-1:1},n.ah=function(t,e){t.a=e,t.c=0,t.b=63,y.Eqb(t.d)},n.bh=function(t){this.d=d(l.$6,e0,6,t,14,1)},G(102,1,{102:1,32:1},n.bh),U.Rb=function(t){return n._g(this,t)},U.a=0,U.b=0,U.c=0,l.j7=O(102),n.eh=function(t,e){return t.b!=e.b?t.b>e.b?-1:1:t.c!=e.c?t.c>e.c?-1:1:0},n.fh=function(t,e,A){this.b=k.Math.max(t,e),this.c=k.Math.min(t,e),this.a=A},G(172,1,{172:1,32:1},n.fh),U.Rb=function(t){return n.eh(this,t)},U.a=0,U.b=0,U.c=0,l.k7=O(172),n.hh=function(t,e,A,P){this.a=(c.Czb(e),y.Bqb(t,d(l.Z6,H,6,e,15,1),0,e)),this.b=(c.Czb(P),y.Bqb(A,d(l.Z6,H,6,P,15,1),0,P))},G(207,1,{207:1},n.hh),l.l7=O(207),n.ih=function(t,e){var A,P;for(P=0;P<t.g[e].length;P++)if(A=t.g[e][P],t.f[A]&&(t.o[A]==1||t.o[A]==2)&&t.k[A]==0)return!0;return!1},n.jh=function(t,e,A){var P,r,i,D,u;for(r=0,D=0,u=0;u<t.g[e].length;u++)P=t.g[e][u],t.k[P]==A&&(i=1<<t.j[P],(D&i)==0&&(D|=i,++r));return r},n.kh=function(t){var e,A,P,r,i,D,u,o,Q,L,w,s;for(L=new y.Nwb,w=0;w<t.i.f;w++)if(n.Mo(t.i,w)<2||n.Wo(t.i,w)>2)for(D=1;D<n.Wo(t.i,w);D++)for(e=n.Vo(t.i,w,D),u=0;u<D;u++)A=n.Vo(t.i,w,u),n.ph(t,e,A)&&(o=n.wh(t,e,A),o&&n.Cr(o,t.f)&&y.Pvb(L.a,o,(T.Egb(),FA))==null);for(s=0;s<t.i.g;s++)t.c[s]!=0&&(n.am(t.i,s)!=2||t.c[s]!=2)||(e=n.Ul(t.i,0,s),A=n.Ul(t.i,1,s),n.ph(t,e,A)&&(o=n.wh(t,e,A),o&&n.Cr(o,t.f)&&y.Pvb(L.a,o,(T.Egb(),FA))==null));for(t.g=d(l.Z6,M1,7,L.a.c,0,2),t.e=d(l.teb,wt,6,t.i.f,16,1),i=0,Q=(r=new y.fwb(new y.lwb(new y.spb(L.a).a).b),new y.Bpb(r));y.aob(Q.a.a);)for(o=(P=y.dwb(Q.a),P.fd()),t.g[i++]=o.b,D=0;D<o.b.length;D++)t.e[o.b[D]]=!0},n.lh=function(t,e,A,P){var r,i,D,u,o,Q,L;for(r=d(l.Z6,H,6,n.Wo(t.i,A),15,1),u=0,D=0;D<n.Wo(t.i,A);D++)r[u]=n.Vo(t.i,A,D),!P[r[u]]&&n.ph(t,e,r[u])&&++u;if(u==0)return-1;if(u==1)return r[0];for(o=-1,Q=Mt,i=0;i<u;i++)L=n.xp(t.i,e,r[i],Mt,P),L<Q&&(Q=L,o=r[i]);return o},n.mh=function(t,e){return t.f[e]&&(t.o[e]==1||t.o[e]==2)},n.nh=function(t,e){return t.e[e]},n.oh=function(t){var e,A;for(A=!0,e=0;e<t.i.f;e++)if(t.o[e]!=0&&!t.e[e]){A=!1;break}return A},n.ph=function(t,e,A){var P,r,i,D,u;if(e==A||t.a[e]!=t.a[A]||t.o[e]!=0&&(t.o[e]==3||t.o[A]==3||t.p[e]^t.o[e]!==t.o[A]||t.k[e]!==t.k[A]||t.j[e]!==t.j[A])||(P=n.To(t.i,e,A),P!=-1&&(n.am(t.i,P)==1&&t.c[P]!=0||n.am(t.i,P)==2&&t.c[P]==1)))return!1;if(n.Mo(t.i,e)==1&&!n.Pp(t.i,e)){for(r=-1,u=0;u<n.Wo(t.i,e);u++)if(n.Vo(t.i,e,u)!=A&&n.Yo(t.i,e,u)==2){r=n.Xo(t.i,e,u);break}for(i=-1,D=0;D<n.Wo(t.i,A);D++)if(n.Vo(t.i,A,D)!=e&&n.Yo(t.i,A,D)==2){i=n.Xo(t.i,A,D);break}if(r!=-1&&t.c[r]!=0&&t.d[r]^t.c[r]===t.c[i])return!1}return!0},n.qh=function(t,e,A,P,r){var i,D,u,o,Q,L;for(o=null,i=null,L=0;L<t.g[e].length;L++)D=t.g[e][L],t.f[D]&&(t.o[D]==1||t.o[D]==2)&&(t.k[D]==0?i=n.yh(i,(r[D]<<16)+D):t.k[D]==P&&t.j[D]==A&&(o=n.yh(o,(r[D]<<16)+D)));if(u=n.Mh(o,i),u==0)return!1;if(u<0)for(Q=0;Q<t.g[e].length;Q++)D=t.g[e][Q],t.f[D]&&(t.o[D]==1||t.o[D]==2)&&(t.k[D]==0?(t.k[D]=P<<24>>24,t.j[D]=A<<24>>24):t.k[D]==P&&t.j[D]==A&&(t.k[D]=0,t.j[D]=-1));return!0},n.rh=function(t,e){var A,P,r,i,D,u;if(!t.b)return!1;for(r=!1,i=t.b.a.length-1;i>=0;i--)if(P=!1,D=y.uj(t.b,i),D.a==2?P=n.qh(t,D.b,D.c,D.d,e):D.a==1&&(P=n.vh(t,D.b,e)),P){for(y.Cj(t.b,D),u=0;u<t.g[D.b].length;u++)A=t.g[D.b][u],t.n[A]=!1;r=!0}return r},n.sh=function(t){var e,A,P,r,i,D,u,o;if(t.g!=null)for(D=new n.Lh(t),t.b=new y.Jj,r=0;r<t.g.length;r++)P=n.Dh(D,r),P==0?(n.zh(D,r),u=n.jh(t,r,2),e=n.jh(t,r,1),A=n.ih(t,r),u==1&&e==1&&!A&&(n.uh(t,r,D.a+D.f++),y.pj(t.b,new n.gk(r,1,-1,-1))),u>0?(A&&(n.th(t,r,D.i+D.g++,2),++u),y.pj(t.b,new n.gk(r,1,-1,-1))):e>0?(A&&n.th(t,r,D.a+D.f++,1),y.pj(t.b,new n.gk(r,1,-1,-1))):A&&(n.th(t,r,D.a+D.f++,1),y.pj(t.b,new n.gk(r,1,-1,-1)))):P==1&&(n.ih(t,r)?(i=n.Ch(D,r),o=n.Eh(D,r),y.pj(t.b,new n.gk(r,2,i,o))):(n.zh(D,r),y.pj(t.b,new n.gk(r,1,-1,-1))))},n.th=function(t,e,A,P){var r,i;for(i=0;i<t.g[e].length;i++)r=t.g[e][i],t.f[r]&&(t.o[r]==1||t.o[r]==2)&&t.k[r]==0&&(t.k[r]=P<<24>>24,t.j[r]=A<<24>>24)},n.uh=function(t,e,A){var P,r;for(r=0;r<t.g[e].length;r++)P=t.g[e][r],t.k[P]==2&&(t.k[P]=1,t.j[P]=A<<24>>24)},n.vh=function(t,e,A){var P,r,i,D,u,o,Q,L;for(i=t.g[e],r=1,o=0;o<i.length;o++)if(P=i[o],t.f[P]&&t.k[P]==2){r=2;break}for(D=d(l.Z6,M1,7,32,0,2),Q=0;Q<i.length;Q++)P=i[Q],t.f[P]&&t.k[P]==r&&(D[t.j[P]]=n.yh(D[t.j[P]],(A[P]<<16)+P));for(L=0;L<32;L++)D[L]!=null&&c.lzb(D[L],c.Szb(y0(y.lrb.prototype.jd,y.lrb,[])));if(y.Vqb(D,new n.Nh),n.Mh(D[0],D[1])==0)return!1;for(u=0;u<D[0].length;u++)P=D[0][u]&r1,t.k[P]=0,t.j[P]=-1;return!0},n.wh=function(t,e,A){var P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S,p,M,z;for(o=d(l.Z6,H,6,t.i.f,15,1),m=d(l.Z6,H,6,t.i.f,15,1),b=d(l.teb,wt,6,t.i.f,16,1),Q=d(l.teb,wt,6,t.i.f,16,1),S=new n.Dr(t.i.f),o[0]=e,m[e]=A,m[A]=-2,S.a[e]=!0,S.a[A]=!0,i=0,L=0;i<=L;){if(D=o[i],m[D]==D){for(w=0;w<n.Wo(t.i,D);w++)if(P=n.Vo(t.i,D,w),!S.a[P]){if(n.Yo(t.i,D,w)==2&&n.Ol(t.i,P)<10)o[++L]=P,m[P]=P,Q[P]=Q[D]||n.Mo(t.i,P)==2,b[P]=Q[D]&&!b[D],S.a[P]=!0;else if(Q[D]&&b[D]){if(p=n.lh(t,P,m[D],S.a),p==-1)return null;o[++L]=P,m[P]=p,m[p]=-2,Q[P]=!1,S.a[P]=!0,S.a[p]=!0}else if(n.cq(t.i,n.Xo(t.i,D,w))&&(o[++L]=P,m[P]=P,Q[P]=!1,S.a[P]=!0,(n.Ol(t.i,P)==6&&n.Mo(t.i,P)==0||n.Ol(t.i,P)==7&&n.xl(t.i,P)==1||n.Ol(t.i,P)==14||n.Ol(t.i,P)==15&&n.Wo(t.i,P)>2||n.Ol(t.i,P)==16&&n.Wo(t.i,P)>2)&&n.Wo(t.i,P)>2)){for(u=!1,g=1;g<n.Wo(t.i,P);g++)if(M=n.Vo(t.i,P,g),!S.a[M])for(B=0;B<g;B++)z=n.Vo(t.i,P,B),S.a[z]||n.ph(t,M,z)&&(o[++L]=M,m[M]=z,m[z]=-2,Q[M]=!1,S.a[M]=!0,S.a[z]=!0,u=!0);if(!u)return null}}}else{for(r=d(l.teb,wt,6,n.Wo(t.i,D),16,1),s=0;s<n.Wo(t.i,D);s++)if(P=n.Vo(t.i,D,s),S.a[P])r[s]=m[P]==P;else for(g=0;g<n.Wo(t.i,P);g++)if(n.Vo(t.i,P,g)==m[D]){r[s]=!0;break}for(h=0;h<n.Wo(t.i,D);h++)if(r[h])if(P=n.Vo(t.i,D,h),S.a[P]){if(n.To(t.i,P,m[D])==-1)return null}else o[++L]=P,m[P]=P,b[P]=!1,Q[P]=!0,S.a[P]=!0;for(w=0;w<n.Wo(t.i,D);w++)if(!r[w]&&(P=n.Vo(t.i,D,w),!S.a[P])){if(p=n.lh(t,P,m[D],S.a),p==-1)return null;o[++L]=P,m[P]=p,m[p]=-2,Q[P]=!1,S.a[P]=!0,S.a[p]=!0}}++i}return S},n.xh=function(t,e,A,P,r,i,D,u,o,Q){this.i=t,this.a=e,this.f=A,this.o=P,this.c=r,this.k=i,this.j=D,this.p=u,this.d=o,this.n=Q,n.kh(this)},n.yh=function(t,e){var A,P;for(P=d(l.Z6,H,6,t==null?1:t.length+1,15,1),A=0;A<P.length-1;A++)P[A]=t[A];return P[P.length-1]=e,P},G(266,1,{},n.xh),l.n7=O(266),n.zh=function(t,e){var A,P,r,i,D,u;for(r=0;r<t.b;r++)if(t.e[r][e]&&t.c[r]!=-3){for(P=0;P<=t.j.g.length;P++)if(P!=e&&t.e[r][P])for(t.e[r][e]=!1,u=r<t.a?r:r<t.b?r-t.a:-1,D=n.Jh(t,r<t.a?1:r<t.b?2:0),i=0;i<t.j.g[e].length;i++)A=t.j.g[e][i],n.mh(t.j,A)&&t.j.j[A]==u&&(t.j.j[A]=D<<24>>24)}},n.Ah=function(t,e,A){var P,r,i,D,u;for(u=!1,D=1,e[A]=D,P=!0;P;){for(P=!1,r=0;r<t.b;r++)if(e[r]==D)for(i=0;i<t.b;i++)e[i]==0&&n.Ih(t,r,i)&&(t.c[i]==-2?(e[i]=D+1,P=!0):t.c[i]!=t.c[A]&&(e[i]=D+1,u=!0));++D}return u},n.Bh=function(t,e,A,P){var r,i,D,u,o,Q,L,w,s,h,b;for(o=P+1;o<t.j.g.length;o++)if(o!=P&&t.e[e][o]&&t.e[A][o])return D=d(l.Z6,H,6,2,15,1),D[0]=A,D[1]=e,D;for(b=d(l.Z6,H,6,t.b,15,1),L=d(l.Z6,H,6,t.b,15,1),Q=d(l.Z6,H,6,t.b,15,1),i=0,w=0,Q[0]=e,L[e]=1;i<=w;){for(s=0;s<t.d[Q[i]].length;s++){if(r=t.d[Q[i]][s],r==A){if(i==0)continue;for(u=L[Q[i]]+1,D=d(l.Z6,H,6,u,15,1),D[0]=r,D[1]=Q[i],h=2;h<u;h++)D[h]=b[D[h-1]];return D}L[r]==0&&t.c[r]!=-3&&(L[r]=L[Q[i]]+1,Q[++w]=r,b[r]=Q[i])}++i}return null},n.Ch=function(t,e){var A;for(A=0;A<t.b;A++)if(t.e[A][e]&&t.c[A]==-3)return A<t.a?A:A<t.b?A-t.a:-1;return-1},n.Dh=function(t,e){var A,P;for(A=0,P=0;P<t.b;P++)t.e[P][e]&&t.c[P]==-3&&++A;return A},n.Eh=function(t,e){var A;for(A=0;A<t.b;A++)if(t.e[A][e]&&t.c[A]==-3)return A<t.a?1:A<t.b?2:0;return-1},n.Fh=function(t,e){return e<t.a?e:e<t.b?e-t.a:-1},n.Gh=function(t,e){return e<t.a?1:e<t.b?2:0},n.Hh=function(t,e){var A,P;return P=t.j.k[e],A=t.j.j[e],P==0?t.b:P==1?A:t.a+A},n.Ih=function(t,e,A){var P;for(P=0;P<t.j.g.length;P++)if(t.e[e][P]&&t.e[A][P])return!0;return!1},n.Jh=function(t,e){return e==1?t.a+t.f++:t.i+t.g++},n.Kh=function(t,e){var A,P,r,i,D,u,o,Q,L,w;for(L=Mt,o=-1,w=-1,Q=-1,P=0;P<t.j.i.f;P++)if(n.mh(t.j,P)&&t.j.k[P]!=0)for(u=0;u<e.length;u++)r=n.Fh(t,e[u]),i=n.Gh(t,e[u]),t.j.k[P]==i&&t.j.j[P]==r&&L>t.j.a[P]+(i==1?z1:0)&&(L=t.j.a[P]+(i==1?z1:0),o=r,w=i,Q=e[u]);for(A=0;A<t.j.i.f;A++)n.mh(t.j,A)&&t.j.k[A]==w&&t.j.j[A]==o&&(t.j.k[A]=0,t.j.j[A]=-1);for(D=0;D<t.j.g.length;D++)t.e[Q][D]=!1},n.Lh=function(t){var e,A,P,r,i,D,u,o,Q,L,w,s,h,b,g,B;for(this.j=t,P=0;P<t.i.f;P++)t.f[P]&&(t.o[P]==1||t.o[P]==2)&&(t.k[P]==1?this.a<=t.j[P]&&(this.a=1+t.j[P]):t.k[P]==2&&this.i<=t.j[P]&&(this.i=1+t.j[P]));for(this.b=this.a+this.i,this.e=w1(l.teb,[b1,wt],[12,6],16,[this.b+1,t.g.length+1],2),r=0;r<t.i.f;r++)t.f[r]&&(t.o[r]==1||t.o[r]==2)&&!t.e[r]&&(this.e[n.Hh(this,r)][t.g.length]=!0);for(o=0;o<t.g.length;o++)for(B=0;B<t.g[o].length;B++)A=t.g[o][B],t.f[A]&&(t.o[A]==1||t.o[A]==2)&&(this.e[n.Hh(this,A)][o]=!0);for(this.d=d(l.Z6,M1,7,this.b,0,2),Q=0;Q<t.g.length;Q++)for(h=1;h<this.b;h++)if(this.e[h][Q])for(b=0;b<h;b++)this.e[b][Q]&&(this.d[h]=n.yh(this.d[h],b),this.d[b]=n.yh(this.d[b],h));for(this.c=d(l.Z6,H,6,this.b+1,15,1),s=0;s<this.b;s++)this.e[s][t.g.length]?this.c[s]=-1:this.c[s]=-2;for(L=0;L<t.g.length;L++)if(this.e[this.b][L])for(w=0;w<this.b;w++)this.e[w][L]&&this.c[w]!=L&&(this.c[w]==-2?this.c[w]=L:this.c[w]=-3);for(e=0;e<this.b;e++)if(this.c[e]>=-1&&(i=d(l.Z6,H,6,this.b,15,1),n.Ah(this,i,e)))for(w=0;w<this.b;w++)i[w]!=0&&(this.c[w]=-3);for(u=0;u<t.g.length-1;u++)for(h=1;h<this.b;h++)if(this.e[h][u]&&this.c[h]!=-3){for(b=0;b<h;b++)if(this.e[b][u]&&this.c[b]!=-3&&(D=n.Bh(this,h,b,u),D!=null)){for(g=0;g<D.length;g++)this.c[D[g]]=-3;n.Kh(this,D);break}}},G(359,1,{},n.Lh),U.a=0,U.b=0,U.f=0,U.g=0,U.i=0,l.m7=O(359),n.Mh=function(t,e){var A,P;if(t==null)return e==null?0:1;if(e==null)return-1;for(A=k.Math.min(t.length,e.length),P=0;P<A;P++)if((t[P]&ie)!=(e[P]&ie))return(t[P]&ie)<(e[P]&ie)?-1:1;return t.length==e.length?0:t.length<e.length?-1:1},n.Nh=function(){},G(360,1,{},n.Nh),U.Qb=function(t,e){return n.Mh(t,e)},U.lb=function(t){return this===t},l.o7=O(360),n.Qh=function(t,e){switch(e){case 0:return n.Rh(t,!1);case 1:return n.Th(t);case 2:return n.Sh(t);case 3:return n.Vh(t);case 4:return n.Uh(t)}return null},n.Rh=function(t,e){try{return e?(t=n.ew(t),n.vq(t,!0),n.Pr(t),n.og(new n.Kg(t))):n.og(new n.Kg(t))}catch(A){if(A=C1(A),Yt(A,27))return T.Pjb(),null;throw Qt(A)}},n.Sh=function(t){var e,A;try{for(t=n.ew(t),n.ow(t),e=t.r,A=0;A<e;A++)t.H[A]=1,t.T=0;return n.og(new n.Kg(t))}catch(P){if(P=C1(P),Yt(P,27))return T.Pjb(),null;throw Qt(P)}},n.Th=function(t){try{return t=n.ew(t),n.ow(t),n.og(new n.Kg(t))}catch(e){if(e=C1(e),Yt(e,27))return T.Pjb(),null;throw Qt(e)}},n.Uh=function(t){var e;try{return t=n.ew(t),n.ow(t),e=n.Gw(new n.Jw(t)),n.og(new n.Lg(e,8))}catch(A){if(A=C1(A),Yt(A,27))return T.Pjb(),null;throw Qt(A)}},n.Vh=function(t){var e;try{return e=n.Gw(new n.Jw(t)),n.og(new n.Lg(e,8))}catch(A){if(A=C1(A),Yt(A,27))return T.Pjb(),null;throw Qt(A)}},n.Wh=function(t,e,A,P){t.a+=e,t.b+=A,t.c+=P},n.Xh=function(t,e){return t.a+=e.a,t.b+=e.b,t.c+=e.c,t},n.Yh=function(t,e){return new n.li(t.a+e.a,t.b+e.b,t.c+e.c)},n.Zh=function(t,e){return t.a=(t.a+e.a)/2,t.b=(t.b+e.b)/2,t.c=(t.c+e.c)/2,t},n.$h=function(t,e){return t.a!=e.a?t.a<e.a?-1:1:t.b!=e.b?t.b<e.b?-1:1:t.c!=e.c?t.c<e.c?-1:1:0},n._h=function(t,e){return new n.li(t.b*e.c-t.c*e.b,-(t.a*e.c-t.c*e.a),t.a*e.b-t.b*e.a)},n.ai=function(t,e){return k.Math.sqrt((e.a-t.a)*(e.a-t.a)+(e.b-t.b)*(e.b-t.b)+(e.c-t.c)*(e.c-t.c))},n.bi=function(t,e){var A;return e==null||!Yt(e,29)?!1:(A=e,k.Math.abs(A.a-t.a)+k.Math.abs(A.b-t.b)+k.Math.abs(A.c-t.c)<1e-6)},n.ci=function(t,e){var A,P,r;return P=t.a*t.a+t.b*t.b+t.c*t.c,r=e.a*e.a+e.b*e.b+e.c*e.c,P==0||r==0||(A=(t.a*e.a+t.b*e.b+t.c*e.c)/k.Math.sqrt(P*r),A>=1)?0:A<=-1?t1:k.Math.acos(A)},n.di=function(t,e){var A,P,r;return A=t.a,P=t.b,r=t.c,t.a=A*e[0][0]+P*e[1][0]+r*e[2][0],t.b=A*e[0][1]+P*e[1][1]+r*e[2][1],t.c=A*e[0][2]+P*e[1][2]+r*e[2][2],t},n.ei=function(t,e){return t.a*=e,t.b*=e,t.c*=e,t},n.fi=function(t,e,A,P){t.a=e,t.b=A,t.c=P},n.gi=function(t,e){return n.fi(t,e.a,e.b,e.c),t},n.hi=function(t,e){return t.a-=e.a,t.b-=e.b,t.c-=e.c,t},n.ii=function(t,e){return new n.li(t.a-e.a,t.b-e.b,t.c-e.c)},n.ji=function(t){var e;return e=k.Math.sqrt(t.a*t.a+t.b*t.b+t.c*t.c),e==0?(T.Pjb(),t.a=1,t.b=0,t.c=0,t):(t.a/=e,t.b/=e,t.c/=e,t)},n.ki=function(){},n.li=function(t,e,A){this.a=t,this.b=e,this.c=A},n.mi=function(t){n.li.call(this,t.a,t.b,t.c)},G(29,1,{29:1,4:1,32:1},n.ki,n.li,n.mi),U.Rb=function(t){return n.$h(this,t)},U.lb=function(t){return n.bi(this,t)},U.ob=function(){var t;return t=new D0.Hmb(\"0.00\"),\"[\"+D0.Dmb(t,this.a)+\", \"+D0.Dmb(t,this.b)+\", \"+D0.Dmb(t,this.c)+\"]\"},U.a=0,U.b=0,U.c=0,l.q7=O(29),n.qi=function(t,e){e.Mb(t.c),n.le(e,t.a,t.b)},n.ri=function(t,e){e.c*=t.c,e.a=e.a*t.c+t.a,e.b=e.b*t.c+t.b},n.si=function(t,e){n._m(e,t.c),n.Xn(e,t.a,t.b)},n.ti=function(t,e){e.a=e.a*t.c+t.a,e.b=e.b*t.c+t.b},n.ui=function(t,e){e.c=e.c*t.c+t.a,e.d=e.d*t.c+t.b,e.b*=t.c,e.a*=t.c},n.vi=function(t){t.a=0,t.b=0,t.c=1},n.wi=function(t){return t.c==1&&t.a==0&&t.b==0},n.xi=function(t,e){return e*t.c+t.a},n.yi=function(t,e){return e*t.c+t.b},n.zi=function(){n.vi(this)},n.Ai=function(t,e){this.c=1,this.a=t,this.b=e},n.Bi=function(t,e,A,P){var r,i,D,u;n.vi(this),e?(P&YA)==0?Tt.AN(e,t.c,t.d)&&Tt.AN(e,t.c+t.b,t.d+t.a)||((t.b>e.b||t.a>e.a)&&(i=e.b/t.b,u=e.a/t.a,this.c=k.Math.min(i,u)),t.c*this.c<e.c?this.a=e.c-t.c*this.c:(t.c+t.b)*this.c>e.c+e.b&&(this.a=e.c+e.b-(t.c+t.b)*this.c),t.d*this.c<e.d?this.b=e.d-t.d*this.c:(t.d+t.a)*this.c>e.d+e.a&&(this.b=e.d+e.a-(t.d+t.a)*this.c)):(i=e.b/t.b,u=e.a/t.a,D=P&r1,D==0?D=24:(P&n0)!=0&&(D/=256),r=D/A,this.c=k.Math.min(r,k.Math.min(i,u)),this.a=e.c+e.b/2-this.c*(t.c+t.b/2),this.b=e.d+e.a/2-this.c*(t.d+t.a/2)):(P&z1)!=0&&(D=(P&r1)!=0?P&r1:24,this.c=D/A)},G(79,1,{},n.zi,n.Ai,n.Bi),U.ob=function(){return\"DepictorTransformation Offset: \"+this.a+\",\"+this.b+\" Scaling: \"+this.c},U.a=0,U.b=0,U.c=0,l.r7=O(79),n.Di=function(t){var e,A,P,r;return!T._ib(c.Szb(t).substr(0,21),rr)||(P=c.Szb(KA).length,!T._ib(c.Szb(t).substr(c.Szb(t).length-P,P),KA))||(A=T.hjb(t,X1(34),21),A==-1)?null:(r=(c.Mzb(21,A,c.Szb(t).length),c.Szb(t).substr(21,A-21)),e=T.qjb(t,21+c.Szb(r).length+1,c.Szb(t).length-17),T._ib(r,\"arrow\")?new tt.GH(e):T._ib(r,\"text\")?new n.ax(e):null)},y.yrb=function(t){return new y.Avb(t)},y.zrb=function(t){return new gt.Vyb(t.Tb())},y.Ei=function(t,e){var A,P,r;for(c.Gzb(e),A=!1,r=e.Sb();r.cd();)P=r.dd(),A=A|t.add(P);return A},y.Fi=function(t,e,A){var P,r;for(r=t.Sb();r.cd();)if(P=r.dd(),j1(e)===j1(P)||e!=null&&T.Oc(e,P))return A&&r.ed(),!0;return!1},y.Gi=function(t,e){var A,P;for(c.Gzb(e),P=e.Sb();P.cd();)if(A=P.dd(),!t.contains(A))return!1;return!0},y.Hi=function(t,e){var A,P,r;for(c.Gzb(e),A=!1,P=t.Sb();P.cd();)r=P.dd(),e.contains(r)&&(P.ed(),A=!0);return A},y.Ii=function(t,e){var A,P,r;for(c.Gzb(e),A=!1,P=t.Sb();P.cd();)r=P.dd(),e.contains(r)||(P.ed(),A=!0);return A},y.Ji=function(t,e){var A,P,r,i;for(i=t.size(),e.length<i&&(e=c.mzb(new Array(i),e)),r=e,P=t.Sb(),A=0;A<i;++A)$1(r,A,P.dd());return e.length>i&&l.I5(e,i,null),e},y.Ki=function(t){var e,A,P;for(P=new y.Fvb(\", \",\"[\",\"]\"),A=t.Sb();A.cd();)e=A.dd(),y.Cvb(P,j1(e)===j1(t)?\"(this Collection)\":e==null?Pe:Xn(e));return P.a?c.Szb(P.e).length==0?P.a.a:P.a.a+(\"\"+P.e):P.c},G(43,1,WA),U.Tb=function(){return new y.Avb(this)},U.Ub=function(){return new gt.Vyb(this.Tb())},U.add=function(t){throw Qt(new T.Tjb(\"Add not supported on this collection\"))},U.addAll=function(t){return y.Ei(this,t)},U.clear=function(){var t;for(t=this.Sb();t.cd();)t.dd(),t.ed()},U.contains=function(t){return y.Fi(this,t,!1)},U.containsAll=function(t){return y.Gi(this,t)},U.isEmpty=function(){return this.size()==0},U.remove=function(t){return y.Fi(this,t,!0)},U.removeAll=function(t){return y.Hi(this,t)},U.retainAll=function(t){return y.Ii(this,t)},U.toArray=function(){return this.Vb(d(l.Hbb,v1,1,this.size(),5,1))},U.Vb=function(t){return y.Ji(this,t)},U.ob=function(){return y.Ki(this)},l.Xbb=O(43),y.rub=function(t){return new y.Avb(t)},y.tub=function(t){var e;return gt.Tyb(t.Ub(),(e=gt.byb(new gt.iyb,gt.Rxb(new gt.gyb,new gt.eyb,new gt.Iyb,v(F(l.ndb,1),L0,98,0,[(gt.Vxb(),gt.Txb)]))),gt.Zxb(e,new gt.lyb)))},y.Zi=function(t,e){var A,P;for(A=0,P=t.size();A<P;++A)if(y.Hub(e,t.getAtIndex(A)))return A;return-1},y.$i=function(t,e,A){return new y.lob(t,e,A)},G(96,43,G8),U.Tb=function(){return new y.Avb(this)},U.addAtIndex=function(t,e){throw Qt(new T.Tjb(\"Add not supported on this list\"))},U.add=function(t){return this.addAtIndex(this.size(),t),!0},U.addAllAtIndex=function(t,e){var A,P,r;for(c.Gzb(e),A=!1,r=e.Sb();r.cd();)P=r.dd(),this.addAtIndex(t++,P),A=!0;return A},U.clear=function(){this.Wb(0,this.size())},U.lb=function(t){var e,A,P,r,i;if(t===this)return!0;if(!Yt(t,84)||(i=t,this.size()!=i.size()))return!1;for(r=i.Sb(),A=this.Sb();A.cd();)if(e=A.dd(),P=r.dd(),!(j1(e)===j1(P)||e!=null&&T.Oc(e,P)))return!1;return!0},U.nb=function(){return y.Brb(this)},U.indexOf=function(t){return y.Zi(this,t)},U.Sb=function(){return new y.dob(this)},U.lastIndexOf=function(t){var e;for(e=this.size()-1;e>-1;--e)if(y.Hub(t,this.getAtIndex(e)))return e;return-1},U.removeAtIndex=function(t){throw Qt(new T.Tjb(\"Remove not supported on this list\"))},U.Wb=function(t,e){var A,P;for(P=new y.job(this,t),A=t;A<e;++A)c.Ezb(P.a<P.c.size()),P.c.getAtIndex(P.b=P.a++),y.cob(P)},U.setAtIndex=function(t,e){throw Qt(new T.Tjb(\"Set not supported on this list\"))},U.subList=function(t,e){return y.$i(this,t,e)},l.ccb=O(96);function Nu(f){return f==null?!1:f.$implements__java_lang_Cloneable||Array.isArray(f)}y.nj=function(t){t.a=d(l.Hbb,v1,1,0,5,1)},y.oj=function(t,e,A){c.Izb(e,t.a.length),c.fzb(t.a,e,A)},y.pj=function(t,e){return c.izb(t.a,e),!0},y.qj=function(t,e,A){var P,r;return c.Izb(e,t.a.length),P=A.toArray(),r=P.length,r==0?!1:(c.gzb(t.a,e,P),!0)},y.rj=function(t,e){var A,P;return A=e.toArray(),P=A.length,P==0?!1:(c.gzb(t.a,t.a.length,A),!0)},y.sj=function(t){c.kzb(t.a,0)},y.tj=function(t,e){return y.wj(t,e,0)!=-1},y.uj=function(t,e){return c.Fzb(e,t.a.length),t.a[e]},y.vj=function(t,e){return y.wj(t,e,0)},y.wj=function(t,e,A){for(;A<t.a.length;++A)if(y.Hub(e,t.a[A]))return A;return-1},y.xj=function(t){return t.a.length==0},y.yj=function(t){return new y.rqb(t)},y.zj=function(t,e){return y.Aj(t,e,t.a.length-1)},y.Aj=function(t,e,A){for(;A>=0;--A)if(y.Hub(e,t.a[A]))return A;return-1},y.Bj=function(t,e){var A;return A=(c.Fzb(e,t.a.length),t.a[e]),c.jzb(t.a,e,1),A},y.Cj=function(t,e){var A;return A=y.wj(t,e,0),A==-1?!1:(y.Bj(t,A),!0)},y.Dj=function(t,e,A){var P;c.Jzb(e,A,t.a.length),P=A-e,c.jzb(t.a,e,P)},y.Ej=function(t,e,A){var P;return P=(c.Fzb(e,t.a.length),t.a[e]),t.a[e]=A,P},y.Fj=function(t){return t.a.length},y.Gj=function(t,e){y.Uqb(t.a,t.a.length,e)},y.Hj=function(t){return c.czb(t.a)},y.Ij=function(t,e){var A,P;for(P=t.a.length,e.length<P&&(e=c.mzb(new Array(P),e)),A=0;A<P;++A)$1(e,A,t.a[A]);return e.length>P&&l.I5(e,P,null),e},y.Jj=function(){y.nj(this)},y.Kj=function(t){y.nj(this),c.Azb(t>=0,\"Initial capacity must not be negative\")},G(21,96,_A,y.Jj,y.Kj),U.addAtIndex=function(t,e){y.oj(this,t,e)},U.add=function(t){return y.pj(this,t)},U.addAllAtIndex=function(t,e){return y.qj(this,t,e)},U.addAll=function(t){return y.rj(this,t)},U.clear=function(){y.sj(this)},U.contains=function(t){return y.tj(this,t)},U.getAtIndex=function(t){return y.uj(this,t)},U.indexOf=function(t){return y.vj(this,t)},U.isEmpty=function(){return y.xj(this)},U.Sb=function(){return y.yj(this)},U.lastIndexOf=function(t){return y.zj(this,t)},U.removeAtIndex=function(t){return y.Bj(this,t)},U.remove=function(t){return y.Cj(this,t)},U.Wb=function(t,e){y.Dj(this,t,e)},U.setAtIndex=function(t,e){return y.Ej(this,t,e)},U.size=function(){return y.Fj(this)},U.toArray=function(){return y.Hj(this)},U.Vb=function(t){return y.Ij(this,t)},l.ucb=O(21),n.bk=function(t){var e,A,P;for(P=new T.Kjb,A=new y.rqb(t);A.a<A.c.a.length;)e=y.qqb(A),T.Ijb(T.Ijb(P,rr+e.Kb()+'\"'+e.Jb()+KA),N1);return P.a},n.ck=function(){y.Jj.call(this)},n.dk=function(t){var e,A;y.Jj.call(this);try{if(t)for(A=new y.rqb(t);A.a<A.c.a.length;)e=y.qqb(A),y.pj(this,e.Fb())}catch(P){if(P=C1(P),!Yt(P,19))throw Qt(P)}},n.ek=function(t){var e,A,P;if(y.Jj.call(this),!(t==null||c.Szb(t).length==0))for(e=0,A=T.gjb(t,X1(10));A!=-1;)P=n.Di((c.Mzb(e,A,c.Szb(t).length),c.Szb(t).substr(e,A-e))),P&&c.izb(this.a,P),e=A+1,A=T.hjb(t,X1(10),e)},G(104,21,_A,n.ck,n.dk,n.ek),U.ob=function(){return n.bk(this)},l.s7=O(104),n.gk=function(t,e,A,P){this.b=t,this.a=e,this.c=A,this.d=P},G(110,1,{110:1},n.gk),U.a=0,U.b=0,U.c=0,U.d=0,l.t7=O(110),n.hk=function(t){var e,A,P,r,i,D;if(t.j!=0)return t.j;if(t.i&&n.Ol(t.e,t.a)!=15&&n.Ol(t.e,t.a)!=16){for(D=0;D<n.Ho(t.e,t.a);D++)if(i=n.Xo(t.e,t.a,D),n.Om(t.e,i,t.a))return n.Vo(t.e,t.a,D)==t.b?t.j=n.dm(t.e,i)==257?3:1:t.j=n.dm(t.e,i)==257?1:3,t.j}return e=n.Tl(t.e,t.a,t.g),P=n.Tl(t.e,t.a,t.b),P<e&&(P+=G1),n.Ho(t.e,t.a)==2?(A=P-e,A>3.0915926535897933&&A<3.191592653589793?(t.j=-1,t.j):(t.j=A<t1?4:2,t.j)):(r=n.Tl(t.e,t.a,t.d),r<e&&(r+=G1),t.j=r<P?2:4,t.j)},n.ik=function(t,e,A,P){var r,i,D,u;for(this.e=t,this.g=A,this.a=P,D=-1,u=0;u<n.Ho(this.e,this.a);u++){if(r=n.Vo(this.e,this.a,u),i=n.Xo(this.e,this.a,u),r==this.g){n.dm(this.e,i)==386&&(this.j=-1);continue}n.Om(this.e,i,this.a)&&(this.i&&(t.u[P]|=z1),this.i=!0),D==e[r]?(this.d=r,this.f=!0,this.c=n.cq(this.e,i)):D<e[r]?(D=e[r],this.d=this.b,this.b=r):this.d=r}},G(119,1,{},n.ik),U.a=0,U.b=0,U.c=!1,U.d=0,U.f=!1,U.g=0,U.i=!1,U.j=0,l.u7=O(119),n.jk=function(t,e,A,P){this.c=t,this.b=e,this.d=A,this.a=P},G(18,1,{18:1},n.jk),U.ob=function(){return this.d},U.a=0,U.c=0,l.v7=O(18),n.lk=function(t){var e,A,P,r,i;if(r=new y.Uub(new n.Ek),i=new y.Rub,t.k!=null)for(P=0;P<t.k.length;P++)for(e=0;e<t.k[P].r;e++)y.Nub(r,c.Szb(t.e[P].R.c*n.$l(t.k[P],e))),y.Nub(i,y.Oub(r)),r.b.a.length<i.b.a.length&&y.Nub(r,y.Oub(i));return A=r.b.a.length+i.b.a.length,A==0?n.mk(t):t.p.c*(A%2==0?(T.Phb(r.b.a.length==0?null:y.uj(r.b,0))+T.Phb(i.b.a.length==0?null:y.uj(i.b,0)))/2:T.Phb(r.b.a.length==0?null:y.uj(r.b,0)))},n.mk=function(t){var e,A,P,r,i,D,u,o,Q,L,w,s,h,b,g;if(w=U0,s=ur,b=U0,g=ur,r=0,t.k!=null)for(u=0;u<t.k.length;u++)for(A=0;A<t.k[u].q;A++)L=n.xi(t.e[u].R,n.gm(t.k[u],A).a),h=n.yi(t.e[u].R,n.gm(t.k[u],A).b),w=k.Math.min(w,L),s=k.Math.max(s,L),b=k.Math.min(b,h),g=k.Math.max(g,h),++r;return r<=1?t.d:(i=s-w,D=g-b,o=(i+D)/2,Q=3*r,e=i*D,P=o/(1-Q),k.Math.sqrt(P*P-e/(1-Q))-P)},n.nk=function(t){var e;if(t.p=new n.zi,t.k!=null)for(t.e=d(l.R9,v1,106,t.k.length,0,1),e=0;e<t.k.length;e++)t.e[e]=new Tt.YM(t.k[e]);if(t.a!=null)for(t.b=d(l.R9,v1,106,t.a.length,0,1),e=0;e<t.a.length;e++)t.b[e]=new Tt.YM(t.a[e]);t.d=24},n.ok=function(t,e){var A,P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S,p,M,z;for(r=d(l.Y9,v1,35,t.k.length,0,1),z=0,M=0,h=0;h<t.k.length;h++)n.be(t.e[h],e,null,z1),r[h]=t.e[h].v,z+=r[h].b,M=k.Math.max(M,r[h].a);for(u=d(l.Y9,v1,35,t.a.length,0,1),p=0,S=0,b=0;b<t.a.length;b++)n.be(t.b[b],e,null,65552),u[b]=t.b[b].v,p=k.Math.max(p,u[b].b),S+=u[b].a+12;if(P=k.Math.max(48,p+24),M=k.Math.max(M,24+2*S),A=-1,!t.g)t.g=new n.ck,y.pj(t.g,new tt.FH),A=0;else{for(g=0;g<t.g.a.length;g++)if(Yt(y.uj(t.g,g),61)){A=g;break}A==-1&&(A=t.g.a.length,y.pj(t.g,new tt.FH))}for(m=18,s=0;s<t.k.length;s++){if(s==t.n){for(tt.EH(y.uj(t.g,A),m-18,M/2,m-18+P,M/2),i=m+-6,D=.5*(M-12)-S,B=0;B<t.a.length;B++)Q=i+.5*(p-u[B].b)-u[B].c,w=D-u[B].d,n.dd(t.b[B],new n.Ai(Q,w)),D+=12+u[B].a;m+=P}o=m-r[s].c,L=.5*(M-r[s].a)-r[s].d,n.dd(t.e[s],new n.Ai(o,L)),m+=36+r[s].b}t.o=!1},n.pk=function(t,e){var A,P;if(t.g)for(P=new y.rqb(t.g);P.a<P.c.a.length;)A=y.qqb(P),A.Hb(e,t.p)},n.qk=function(t,e){var A,P,r,i,D;if(t.i!=0&&t.k!=null){for(P=n.lk(t)/t.p.c,R.R2(e,t.i),R.P2(e,mt(1.6*P),!0,!1),i=0;i<t.k.length;i++)if(t.k[i].q!=0){for(r=new m1.Lfb,A=0;A<t.k[i].q;A++)r.a=mt(r.a+n.Ll(t.k[i],A)),r.b=mt(r.b+n.Ml(t.k[i],A));r.a=r.a/t.k[i].q|0,r.b=r.b/t.k[i].q|0,r.a=mt(n.xi(t.e[i].R,r.a)),r.b=mt(n.yi(t.e[i].R,r.b)),D=t.c==0?\"\"+(i+1):t.c==2?i<t.j?\"\"+String.fromCharCode(65+i&r1):\"R\"+(i+1-t.j):t.c==1?i<t.n?\"\"+String.fromCharCode(65+i&r1):\"P\"+(i+1-t.n):\"?\"+(i+1),R.y2(e,r.a,r.b,D)}}},n.rk=function(t,e){var A,P,r,i,D;if(t.e!=null)for(A=n.lk(t)/t.p.c,r=t.e,i=0,D=r.length;i<D;++i)P=r[i],n.Wd(P,t.f),P.r=A/P.R.c,n.Td(P,e);if(t.b!=null)for(r=t.b,i=0,D=r.length;i<D;++i)P=r[i],n.Td(P,e)},n.sk=function(t,e){t.d=e},n.tk=function(t,e){t.f=e},n.uk=function(t,e){var A,P,r,i;if(t.e!=null)for(P=t.e,r=0,i=P.length;r<i;++r)A=P[r],A.J=e},n.vk=function(t,e,A){var P,r,i,D,u,o,Q;if(t.e!=null)for(i=t.e,u=0,Q=i.length;u<Q;++u)P=i[u],n.Xd(P,e,A);if(t.b!=null)for(r=t.b,D=0,o=r.length;D<o;++D)P=r[D],n.Xd(P,e,A)},n.wk=function(t,e){t.i=e},n.xk=function(t,e,A,P){var r,i,D,u,o,Q,L,w,s,h,b,g,B,m;if(n.yk(t,e,A,P),n.wi(t.p))return null;if(t.k!=null)for(s=t.k,h=0,b=s.length;h<b;++h)w=s[h],n.si(t.p,w);if(t.g)for(B=new y.rqb(t.g);B.a<B.c.a.length;)g=y.qqb(B),n.qi(t.p,g);if(t.e!=null)for(D=t.e,o=0,L=D.length;o<L;++o)r=D[o],n.vi(r.R);if(t.b!=null)for(i=t.b,u=0,Q=i.length;u<Q;++u)r=i[u],n.vi(r.R);return m=t.p,t.p=new n.zi,m},n.yk=function(t,e,A,P){var r,i,D,u,o,Q,L,w,s,h,b,g,B;if(t.o&&n.ok(t,e),i=null,t.e!=null)for(u=t.e,Q=0,w=u.length;Q<w;++Q)D=u[Q],n.be(D,e,null,0),i=i?Tt.DN(i,D.v):D.v;if(t.b!=null)for(u=t.b,Q=0,w=u.length;Q<w;++Q)D=u[Q],n.be(D,e,null,0),i=i?Tt.DN(i,D.v):D.v;if(t.g)for(b=new y.rqb(t.g);b.a<b.c.a.length;)h=y.qqb(b),g=h.Ib(e),n.ui(t.p,g),i=i?Tt.DN(i,g):g;if(!i)return null;if(r=n.lk(t),B=new n.Bi(i,A,r,P),!(B.c==1&&B.a==0&&B.b==0)){if(n.ri(B,t.p),t.e!=null)for(o=t.e,L=0,s=o.length;L<s;++L)D=o[L],n.dd(D,B);if(t.b!=null)for(u=t.b,Q=0,w=u.length;Q<w;++Q)D=u[Q],n.dd(D,B);return B}return null},n.zk=function(t,e){t&&(this.k=d(l.$7,xe,25,1,0,1),this.k[0]=t),this.c=0,this.g=e,n.nk(this)},n.Ak=function(t,e){var A,P;for(this.k=d(l.$7,xe,25,t.g.a.length+t.f.a.length,0,1),P=0;P<t.g.a.length+t.f.a.length;P++)this.k[P]=P<t.g.a.length?y.uj(t.g,P):y.uj(t.f,P-t.g.a.length);for(this.n=t.g.a.length,this.a=d(l.$7,xe,25,t.a.a.length,0,1),A=0;A<t.a.a.length;A++)this.a[A]=y.uj(t.a,A);this.o=!1,this.c=1,this.g=e,n.nk(this)},n.Bk=function(t,e,A){this.k=t,this.c=2,this.g=A,this.j=e,n.nk(this)},n.Ck=function(t,e){this.k=t,this.c=0,this.g=e,n.nk(this)},n.Dk=function(t,e){return c.Uzb((c.Gzb(t),t))>c.Uzb((c.Gzb(e),e))?-1:c.Uzb((c.Gzb(t),t))<c.Uzb((c.Gzb(e),e))?1:0},G(157,1,{},n.zk,n.Ak,n.Bk,n.Ck),U.c=0,U.d=0,U.f=0,U.i=0,U.j=0,U.n=0,U.o=!1,l.x7=O(157),n.Ek=function(){},G(358,1,{},n.Ek),U.Qb=function(t,e){return n.Dk(t,e)},U.lb=function(t){return this===t},l.w7=O(358),n.Ok=function(){n.Ok=u1,n.Ik=v(F(l.Nbb,1),yt,2,6,[\"?\",\"H\",\"He\",\"Li\",\"Be\",\"B\",\"C\",\"N\",\"O\",\"F\",\"Ne\",\"Na\",\"Mg\",\"Al\",\"Si\",\"P\",\"S\",\"Cl\",\"Ar\",\"K\",\"Ca\",\"Sc\",\"Ti\",\"V\",\"Cr\",\"Mn\",\"Fe\",\"Co\",\"Ni\",\"Cu\",\"Zn\",\"Ga\",\"Ge\",\"As\",\"Se\",\"Br\",\"Kr\",\"Rb\",\"Sr\",\"Y\",\"Zr\",\"Nb\",\"Mo\",\"Tc\",\"Ru\",\"Rh\",\"Pd\",\"Ag\",\"Cd\",\"In\",\"Sn\",\"Sb\",\"Te\",\"I\",\"Xe\",\"Cs\",\"Ba\",\"La\",\"Ce\",\"Pr\",\"Nd\",\"Pm\",\"Sm\",\"Eu\",\"Gd\",\"Tb\",\"Dy\",\"Ho\",\"Er\",\"Tm\",\"Yb\",\"Lu\",\"Hf\",\"Ta\",\"W\",\"Re\",\"Os\",\"Ir\",\"Pt\",\"Au\",\"Hg\",\"Tl\",\"Pb\",\"Bi\",\"Po\",\"At\",\"Rn\",\"Fr\",\"Ra\",\"Ac\",\"Th\",\"Pa\",\"U\",\"Np\",\"Pu\",\"Am\",\"Cm\",\"Bk\",\"Cf\",\"Es\",\"Fm\",\"Md\",\"No\",\"Lr\",\"Rf\",\"Db\",\"Sg\",\"Bh\",\"Hs\",\"Mt\",\"Ds\",\"Rg\",\"Cn\",\"Nh\",\"Fl\",\"Mc\",\"Lv\",\"Ts\",\"Og\",F1,F1,F1,F1,F1,F1,F1,F1,F1,F1,\"R4\",\"R5\",\"R6\",\"R7\",\"R8\",\"R9\",\"R10\",\"R11\",\"R12\",\"R13\",\"R14\",\"R15\",\"R16\",\"R1\",\"R2\",\"R3\",\"A\",\"A1\",\"A2\",\"A3\",F1,F1,\"D\",\"T\",\"X\",\"R\",\"H2\",\"H+\",\"Nnn\",\"HYD\",\"Pol\",F1,F1,F1,F1,F1,F1,F1,F1,F1,F1,F1,\"Ala\",\"Arg\",\"Asn\",\"Asp\",\"Cys\",\"Gln\",\"Glu\",\"Gly\",\"His\",\"Ile\",\"Leu\",\"Lys\",\"Met\",\"Phe\",\"Pro\",\"Ser\",\"Thr\",\"Trp\",\"Tyr\",\"Val\"]),n.Mk=v(F(l.seb,1),Jt,6,15,[0,1,4,7,9,11,12,14,16,19,20,23,24,27,28,31,32,35,40,39,40,45,48,51,52,55,56,59,58,63,64,69,74,75,80,79,84,85,88,89,90,93,98,0,102,103,106,107,114,115,120,121,130,127,132,133,138,139,140,141,142,0,152,153,158,159,164,165,166,169,174,175,180,181,184,187,192,193,195,197,202,205,208,209,209,210,222,223,226,227,232,231,238,237,244,243,247,247,251,252,257,258,259,262,267,268,271,270,277,276,281,281,283,285,289,289,293,294,294,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,156,114,115,103,128,129,57,137,113,113,128,131,147,97,87,101,186,163,99]),n.Lk=v(F(l.V6,1),Y,6,15,[6]),n.Hk=v(F(l.V6,1),Y,6,15,[2]),n.Jk=v(F(l.V6,2),we,10,0,[null,v(F(l.V6,1),Y,6,15,[1]),v(F(l.V6,1),Y,6,15,[0]),v(F(l.V6,1),Y,6,15,[1]),v(F(l.V6,1),Y,6,15,[2]),v(F(l.V6,1),Y,6,15,[3]),v(F(l.V6,1),Y,6,15,[4]),v(F(l.V6,1),Y,6,15,[3]),v(F(l.V6,1),Y,6,15,[2]),v(F(l.V6,1),Y,6,15,[1]),v(F(l.V6,1),Y,6,15,[0]),v(F(l.V6,1),Y,6,15,[1]),v(F(l.V6,1),Y,6,15,[2]),v(F(l.V6,1),Y,6,15,[3]),v(F(l.V6,1),Y,6,15,[4]),v(F(l.V6,1),Y,6,15,[3,5]),v(F(l.V6,1),Y,6,15,[2,4,6]),v(F(l.V6,1),Y,6,15,[1,3,5,7]),v(F(l.V6,1),Y,6,15,[0]),v(F(l.V6,1),Y,6,15,[1]),v(F(l.V6,1),Y,6,15,[2]),null,null,null,null,null,null,null,null,null,null,v(F(l.V6,1),Y,6,15,[2,3]),v(F(l.V6,1),Y,6,15,[2,4]),v(F(l.V6,1),Y,6,15,[3,5]),v(F(l.V6,1),Y,6,15,[2,4,6]),v(F(l.V6,1),Y,6,15,[1,3,5,7]),v(F(l.V6,1),Y,6,15,[0,2]),v(F(l.V6,1),Y,6,15,[1]),v(F(l.V6,1),Y,6,15,[2]),null,null,null,null,null,null,null,null,null,null,v(F(l.V6,1),Y,6,15,[1,2,3]),v(F(l.V6,1),Y,6,15,[2,4]),v(F(l.V6,1),Y,6,15,[3,5]),v(F(l.V6,1),Y,6,15,[2,4,6]),v(F(l.V6,1),Y,6,15,[1,3,5,7]),v(F(l.V6,1),Y,6,15,[0,2,4,6]),v(F(l.V6,1),Y,6,15,[1]),v(F(l.V6,1),Y,6,15,[2]),null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,v(F(l.V6,1),Y,6,15,[2]),v(F(l.V6,1),Y,6,15,[2]),v(F(l.V6,1),Y,6,15,[2]),v(F(l.V6,1),Y,6,15,[2]),v(F(l.V6,1),Y,6,15,[3]),v(F(l.V6,1),Y,6,15,[2]),v(F(l.V6,1),Y,6,15,[2]),v(F(l.V6,1),Y,6,15,[2]),v(F(l.V6,1),Y,6,15,[2]),v(F(l.V6,1),Y,6,15,[2]),v(F(l.V6,1),Y,6,15,[2]),v(F(l.V6,1),Y,6,15,[2]),v(F(l.V6,1),Y,6,15,[2]),v(F(l.V6,1),Y,6,15,[2]),v(F(l.V6,1),Y,6,15,[2]),v(F(l.V6,1),Y,6,15,[2]),v(F(l.V6,1),Y,6,15,[2]),v(F(l.V6,1),Y,6,15,[2]),v(F(l.V6,1),Y,6,15,[2]),v(F(l.V6,1),Y,6,15,[2])]),n.Kk=v(F(l.V6,2),we,10,0,[null,v(F(l.V6,1),Y,6,15,[1]),null,v(F(l.V6,1),Y,6,15,[1]),v(F(l.V6,1),Y,6,15,[2]),null,null,v(F(l.V6,1),Y,6,15,[-3]),v(F(l.V6,1),Y,6,15,[-2]),v(F(l.V6,1),Y,6,15,[-1]),null,v(F(l.V6,1),Y,6,15,[1]),v(F(l.V6,1),Y,6,15,[2]),v(F(l.V6,1),Y,6,15,[3]),null,v(F(l.V6,1),Y,6,15,[-3]),v(F(l.V6,1),Y,6,15,[-2]),v(F(l.V6,1),Y,6,15,[-1]),null,v(F(l.V6,1),Y,6,15,[1]),v(F(l.V6,1),Y,6,15,[2]),v(F(l.V6,1),Y,6,15,[3]),v(F(l.V6,1),Y,6,15,[2,3,4]),v(F(l.V6,1),Y,6,15,[2,3,4,5]),v(F(l.V6,1),Y,6,15,[2,3,6]),v(F(l.V6,1),Y,6,15,[2,3,4,7]),v(F(l.V6,1),Y,6,15,[2,3]),v(F(l.V6,1),Y,6,15,[2,3]),v(F(l.V6,1),Y,6,15,[2,3]),v(F(l.V6,1),Y,6,15,[1,2]),v(F(l.V6,1),Y,6,15,[2]),v(F(l.V6,1),Y,6,15,[3]),v(F(l.V6,1),Y,6,15,[2,4]),v(F(l.V6,1),Y,6,15,[-3,3,5]),v(F(l.V6,1),Y,6,15,[-2]),v(F(l.V6,1),Y,6,15,[-1]),null,v(F(l.V6,1),Y,6,15,[1]),v(F(l.V6,1),Y,6,15,[2]),v(F(l.V6,1),Y,6,15,[3]),v(F(l.V6,1),Y,6,15,[4]),v(F(l.V6,1),Y,6,15,[3,5]),v(F(l.V6,1),Y,6,15,[6]),v(F(l.V6,1),Y,6,15,[4,6,7]),v(F(l.V6,1),Y,6,15,[3]),v(F(l.V6,1),Y,6,15,[3]),v(F(l.V6,1),Y,6,15,[2,4]),v(F(l.V6,1),Y,6,15,[1]),v(F(l.V6,1),Y,6,15,[2]),v(F(l.V6,1),Y,6,15,[3]),v(F(l.V6,1),Y,6,15,[2,4]),v(F(l.V6,1),Y,6,15,[-3,3,5]),v(F(l.V6,1),Y,6,15,[-2,4,6]),v(F(l.V6,1),Y,6,15,[-1]),null,v(F(l.V6,1),Y,6,15,[1]),v(F(l.V6,1),Y,6,15,[2]),v(F(l.V6,1),Y,6,15,[3]),v(F(l.V6,1),Y,6,15,[3,4]),v(F(l.V6,1),Y,6,15,[3]),v(F(l.V6,1),Y,6,15,[3]),v(F(l.V6,1),Y,6,15,[3]),v(F(l.V6,1),Y,6,15,[2,3]),v(F(l.V6,1),Y,6,15,[2,3]),v(F(l.V6,1),Y,6,15,[3]),v(F(l.V6,1),Y,6,15,[3]),v(F(l.V6,1),Y,6,15,[3]),v(F(l.V6,1),Y,6,15,[3]),v(F(l.V6,1),Y,6,15,[3]),v(F(l.V6,1),Y,6,15,[3]),v(F(l.V6,1),Y,6,15,[2,3]),v(F(l.V6,1),Y,6,15,[3]),v(F(l.V6,1),Y,6,15,[4]),v(F(l.V6,1),Y,6,15,[5]),v(F(l.V6,1),Y,6,15,[6]),v(F(l.V6,1),Y,6,15,[4,6,7]),v(F(l.V6,1),Y,6,15,[3,4]),v(F(l.V6,1),Y,6,15,[3,4]),v(F(l.V6,1),Y,6,15,[2,4]),v(F(l.V6,1),Y,6,15,[1,3]),v(F(l.V6,1),Y,6,15,[1,2]),v(F(l.V6,1),Y,6,15,[1,3]),v(F(l.V6,1),Y,6,15,[2,4]),v(F(l.V6,1),Y,6,15,[3,5]),v(F(l.V6,1),Y,6,15,[-2,2,4]),v(F(l.V6,1),Y,6,15,[-1,1]),null,v(F(l.V6,1),Y,6,15,[1]),v(F(l.V6,1),Y,6,15,[2]),v(F(l.V6,1),Y,6,15,[3]),v(F(l.V6,1),Y,6,15,[4]),v(F(l.V6,1),Y,6,15,[4,5]),v(F(l.V6,1),Y,6,15,[3,4,5,6]),v(F(l.V6,1),Y,6,15,[3,4,5,6]),v(F(l.V6,1),Y,6,15,[3,4,5,6]),v(F(l.V6,1),Y,6,15,[3,4,5,6]),v(F(l.V6,1),Y,6,15,[3]),v(F(l.V6,1),Y,6,15,[3,4]),v(F(l.V6,1),Y,6,15,[3]),v(F(l.V6,1),Y,6,15,[3]),v(F(l.V6,1),Y,6,15,[3]),v(F(l.V6,1),Y,6,15,[2,3]),v(F(l.V6,1),Y,6,15,[2,3]),v(F(l.V6,1),Y,6,15,[3])])},n.Pk=function(t,e){var A,P;A=-1,P=0,(t.G[e]&16)!=0&&(A=16,++P),(t.G[e]&64)!=0&&(A=64,++P),(t.G[e]&32)!=0&&(A=32,++P),(t.G[e]&4)!=0&&(A=4,++P),(t.G[e]&2)!=0&&(A=2,++P),(t.G[e]&8)!=0&&(A=8,++P),(t.G[e]&1)!=0&&(A=1,++P),A!=-1&&A!=(t.H[e]&127)&&(t.H[e]=A),P<2&&(t.G[e]&=-128)},n.Qk=function(t,e,A,P){var r;return r=n.Rk(t,6),n.fi(t.J[r],e,A,P),r},n.Rk=function(t,e){return t.q>=t.M&&n.Nn(t,t.M*2),t.C[t.q]=0,n.yn(t,t.q,e),t.s[t.q]=0,t.u[t.q]=0,t.B[t.q]=0,t.w[t.q]=0,n.fi(t.J[t.q],0,0,0),t.v!=null&&(t.v[t.q]=null),t.t!=null&&(t.t[t.q]=null),t.T=0,t.q++},n.Sk=function(t,e,A){return n.Tk(t,e,A,n.Hm(t,e)||n.Hm(t,A)?16:1)},n.Tk=function(t,e,A,P){var r;if(e==A)return-1;for(r=0;r<t.r;r++)if(t.D[0][r]==e&&t.D[1][r]==A||t.D[0][r]==A&&t.D[1][r]==e)return t.H[r]<P&&(t.H[r]=P),r;return t.r>=t.N&&n.On(t,t.N*2),t.D[0][t.r]=e,t.D[1][t.r]=A,t.H[t.r]=P,t.F[t.r]=0,t.G[t.r]=0,t.T=0,t.r++},n.Uk=function(t,e){return n.Vk(t,e,e.q,e.r,!0)},n.Vk=function(t,e,A,P,r){var i,D,u,o,Q;for(t.K=t.K|e.K,D=d(l.Z6,H,6,e.q,15,1),o=n.$m(t,1),Q=n.$m(t,2),i=0;i<A;i++)(r||S1(Z(e.B[i],P0),0))&&(D[i]=n.hl(e,t,i,o,Q));for(u=0;u<P;u++)(r||!n.Fm(e,e.D[0][u])&&!n.Fm(e,e.D[1][u]))&&n.il(e,t,u,o,Q,D[e.D[0][u]],D[e.D[1][u]],!1);return t.L=t.L&&e.L,t.I=0,t.T=0,D},n.Wk=function(t,e,A,P,r,i,D,u){var o,Q;return o=n.tl(t,e,A),o==-1?(t.q>=t.M&&n.Nn(t,t.M*2),o=n.Rk(t,P),n.fi(t.J[o],e,A,0),t.A[o]=r,n.cn(t,o,i),n.sn(t,o,D),n.hn(t,o,u),!0):(Q=n.bl(t,o,P,r,i,D),n.hn(t,o,u),Q)},n.Xk=function(t,e,A,P){var r;for(r=0;r<t.r;r++)if(t.D[0][r]==e&&t.D[1][r]==A||t.D[0][r]==A&&t.D[1][r]==e)return n.el(t,r,P),t.T=0,r;return t.r>=t.N&&n.On(t,t.N*2),t.D[0][t.r]=e,t.D[1][t.r]=A,t.H[t.r]=P,t.F[t.r]=0,t.G[t.r]=0,t.T=0,t.r++},n.Yk=function(t,e,A,P,r,i){for(var D,u,o;t.q+P>t.M;)n.Nn(t,t.M*2);for(;t.r+P>t.N;)n.On(t,t.N*2);return D=n.tl(t,e,A),D!=-1?n.Zk(t,D,P,r,i):(u=n.ul(t,e,A),u!=-1?n.$k(t,u,P,r,i):(D=n.Qk(t,e,A,0),o=t1*(P-2)/P,n.Sm(t,D,P,D,r,0,t1-o,i),t.T=0,!0))},n.Zk=function(t,e,A,P,r){var i,D,u,o,Q,L;if(P&&n.rp(t,e)>1||!P&&n.rp(t,e)>2)return!1;for(D=0,i=d(l.X6,Bt,6,4,15,1),o=0;o<t.r;o++){for(Q=0;Q<2;Q++)if(t.D[Q][o]==e){if(D==2){D=3;break}i[D++]=n.Tl(t,e,t.D[1-Q][o])}if(D==3)break}return D==3?!1:(L=D==1?i[0]+t1:k.Math.abs(i[0]-i[1])>t1?(i[0]+i[1])/2:(i[0]+i[1])/2+t1,u=t1*(A-2)/A,n.Sm(t,e,A,e,P,L-u/2,t1-u,r),t.T=0,!0)},n.$k=function(t,e,A,P,r){var i,D,u,o,Q,L,w,s,h,b,g;if(Q=d(l.Z6,H,6,2,15,1),o=d(l.X6,Bt,6,2,15,1),Q[0]=t.D[0][e],Q[1]=t.D[1][e],n.rp(t,Q[0])>3||n.rp(t,Q[1])>3)return!1;for(D=0,i=d(l.X6,Bt,6,4,15,1),s=0;s<t.r;s++)if(s!=e){for(h=0;h<2;h++){for(b=0;b<2;b++)if(t.D[h][s]==Q[b]){if(D==4){D=5;break}i[D++]=n.Tl(t,Q[b],t.D[1-h][s])}if(D==5)break}if(D==5)break}if(D==5)return!1;for(o[0]=n.Tl(t,Q[0],Q[1]),o[0]<0?(o[1]=o[0]+t1,u=0):(o[1]=o[0],o[0]=o[1]-t1,u=1),g=0,w=0;w<D;w++)i[w]>o[0]&&i[w]<o[1]?--g:++g;return u=g>0?1-u:u,L=t1*(A-2)/A,n.Sm(t,Q[u],A-1,Q[1-u],P,o[g>0?0:1]+t1-L,t1-L,r),t.T=0,!0},n._k=function(t,e,A){var P,r,i,D,u,o,Q,L,w,s,h,b,g;for(r=d(l.Z6,H,6,e.q,15,1),o=n.$m(t,1),Q=n.$m(t,2),P=0;P<e.q;P++)if(e.C[P]!=0||(e.t==null||e.t[P]==null?null:T.Zib((h=e.t[P],V1.Cmb(),h)))!=null)r[P]=n.hl(e,t,P,o,Q);else if(r[P]=A,(e.T&8)!=0){for(u=0;u<e.r;u++)for(L=0;L<2;L++)if(e.D[L][u]==P){if(b=e.D[1-L][u],g=e.u[b]&3,w=!1,g==1||g==2){for(i=0;i<e.r;i++)if(i!=u)for(s=0;s<2;s++)e.D[s][i]==b&&e.D[1-s][i]<P&&(w=!w)}w&&n.qn(e,b,g==1?2:1,(e.u[b]&4)!=0)}}for(D=0;D<e.r;D++)n.il(e,t,D,o,Q,r[e.D[0][D]],r[e.D[1][D]],!1);return t.L=t.L&&e.L,t.I=0,t.T=0,r},n.al=function(t,e){var A,P,r,i,D,u,o,Q,L;return A=t.J[e[0]],P=t.J[e[1]],r=t.J[e[2]],i=t.J[e[3]],o=new n.li(P.a-A.a,P.b-A.b,P.c-A.c),Q=new n.li(r.a-P.a,r.b-P.b,r.c-P.c),L=new n.li(i.a-r.a,i.b-r.b,i.c-r.c),D=new n.li(o.b*Q.c-o.c*Q.b,-(o.a*Q.c-o.c*Q.a),o.a*Q.b-o.b*Q.a),u=new n.li(Q.b*L.c-Q.c*L.b,-(Q.a*L.c-Q.c*L.a),Q.a*L.b-Q.b*L.a),-k.Math.atan2(k.Math.sqrt(Q.a*Q.a+Q.b*Q.b+Q.c*Q.c)*(o.a*u.a+o.b*u.b+o.c*u.c),D.a*u.a+D.b*u.b+D.c*u.c)},n.bl=function(t,e,A,P,r,i){return(A==1||A==151||A==152)&&n.rp(t,e)>1||(t.B[e]=Z(t.B[e],-2),t.v!=null&&(t.v[e]=null),t.t!=null&&(t.t[e]=null),A==t.C[e]&&P==t.A[e]&&r==((t.u[e]&se)>>>27)-1&&i==(t.u[e]&48))?!1:((A==151||A==152)&&(P=A-149,A=1),t.u[e]&=960,t.C[e]=A,t.A[e]=P,t.s[e]=0,t.B[e]=0,n.cn(t,e,r),n.sn(t,e,i),n.Ym(t,t.w[e]),t.T=0,!0)},n.cl=function(t,e,A,P){var r;return r=n.tl(t,e,A),r!=-1&&n.dl(t,r,P)},n.dl=function(t,e,A){if(A){if(t.s[e]>8)return!1;++t.s[e]}else{if(t.s[e]<-8)return!1;--t.s[e]}return t.T=0,!0},n.el=function(t,e,A){var P,r,i,D,u;return i=!1,D=t.H[e],A==511?i=n.om(t,e):n.Aq(t,e,A)&&(A==257||A==129?(P=n.Tm(t,e,t.D[0][e]),r=n.Tm(t,e,t.D[1][e]),A==D?(P==r||r)&&(u=t.D[0][e],t.D[0][e]=t.D[1][e],t.D[1][e]=u,i=!0):(!P&&r&&(u=t.D[0][e],t.D[0][e]=t.D[1][e],t.D[1][e]=u),t.H[e]=A,i=!0)):(t.H[e]=A,i=!0)),i&&(t.T=(D&127)==(A&127)?t.T&7:0,t.G[e]=0),i},n.fl=function(t){t.q=0,t.r=0,t.K=!1,t.L=!1,t.I=0,t.v=null,t.t=null,t.P=null,t.T=0},n.gl=function(t){var e,A,P,r,i,D,u,o;for(D=0;D<t.r;D++)t.H[D]==512&&(A=t.D[0][D],P=t.D[1][D],t.C[A]==-1^t.C[P]==-1&&t.s[A]!=0&&t.s[P]!=0&&t.s[A]<0^t.s[P]<0&&(t.s[A]<0?(++t.s[A],--t.s[P]):(--t.s[A],++t.s[P])));for(o=d(l.Z6,H,6,t.q,15,1),r=0,e=0;e<t.q;e++){if(t.C[e]==-1){o[e]=-1;continue}r<e&&(t.C[r]=t.C[e],t.s[r]=t.s[e],t.A[r]=t.A[e],t.u[r]=t.u[e],t.B[r]=t.B[e],t.w[r]=t.w[e],n.gi(t.J[r],t.J[e]),t.v!=null&&(t.v[r]=t.v[e]),t.t!=null&&(t.t[r]=t.t[e])),o[e]=r,++r}for(t.q=r,u=0,i=0;i<t.r;i++)t.H[i]!=512&&(t.H[u]=t.H[i],t.F[u]=t.F[i],t.G[u]=t.G[i],t.D[0][u]=o[t.D[0][i]],t.D[1][u]=o[t.D[1][i]],++u);return t.r=u,o},n.hl=function(t,e,A,P,r){var i,D,u;return i=e.q,i>=e.M&&n.Nn(e,e.M*2),u=(t.u[A]&U1)>>18,D=-1,u==1?P==-1?D=n.$m(e,u):D=k.Math.min(31,P+((t.u[A]&U1)>>18!=1&&(t.u[A]&U1)>>18!=2?-1:(t.u[A]&j0)>>20)):u==2&&(r==-1?D=n.$m(e,u):D=k.Math.min(31,r+((t.u[A]&U1)>>18!=1&&(t.u[A]&U1)>>18!=2?-1:(t.u[A]&j0)>>20))),e.C[i]=t.C[A],e.s[i]=t.s[A],e.A[i]=t.A[A],e.u[i]=t.u[A],e.B[i]=e.K?t.B[A]:0,n.gi(e.J[i],t.J[A]),e.w[i]=t.w[A],e.v!=null&&(e.v[i]=null),t.v!=null&&t.v[A]!=null&&e.K&&(e.v==null&&(e.v=d(l.Z6,M1,7,e.C.length,0,2)),e.v[i]=y.zqb(t.v[A],t.v[A].length)),e.t!=null&&(e.t[i]=null),t.t!=null&&t.t[A]!=null&&(e.t==null&&(e.t=d(l.V6,we,10,e.C.length,0,2)),e.t[i]=y.xqb(t.t[A],t.t[A].length)),D!=-1&&(e.u[i]&=-32505857,e.u[i]|=D<<20),++e.q,e.T=0,i},n.il=function(t,e,A,P,r,i,D,u){var o,Q,L,w;return Q=e.r,Q>=e.N&&n.On(e,e.N*2),w=(t.F[A]&768)>>8,L=-1,w==1&&(P==-1?L=n.$m(e,w):L=k.Math.min(32,P+((t.F[A]&768)>>8!=1&&(t.F[A]&768)>>8!=2?-1:(t.F[A]&S0)>>10))),w==2&&(r==-1?L=n.$m(e,w):L=k.Math.min(32,r+((t.F[A]&768)>>8!=1&&(t.F[A]&768)>>8!=2?-1:(t.F[A]&S0)>>10))),e.D[0][Q]=i,e.D[1][Q]=D,o=u&&t.Yb(A)?8:t.H[A],e.H[Q]=o,e.F[Q]=t.F[A],e.G[Q]=e.K?t.G[A]:0,L!=-1&&(e.F[Q]&=-31745,e.F[Q]|=L<<10),++e.r,e.T=0,Q},n.jl=function(t,e,A,P,r,i,D){return n.il(t,e,A,P,r,i==null?t.D[0][A]:i[t.D[0][A]],i==null?t.D[1][A]:i[t.D[1][A]],D)},n.kl=function(t,e){var A,P;for(e.v=null,e.t=null,e.K=t.K,e.q=0,A=0;A<t.q;A++)n.hl(t,e,A,0,0);for(e.r=0,P=0;P<t.r;P++)n.il(t,e,P,0,0,t.D[0][P],t.D[1][P],!1);t.Xb(e)},n.ll=function(t,e){e.K=t.K,e.L=t.L,e.S=t.S,e.I=t.I,e.P=t.P,e.T=t.T&24},n.ml=function(t,e){var A,P;for(A=0;A<t.r;A++)for(P=0;P<2;P++)t.D[P][A]==e&&(t.H[A]=512);n.Ym(t,t.w[e]),t.C[e]=-1,t.v!=null&&(t.v[e]=null),t.t!=null&&(t.t[e]=null),n.gl(t),t.T=0},n.nl=function(t,e,A){var P,r;return P=n.tl(t,e,A),P!=-1?((t.u[P]&512)!=0?n.sl(t):n.ml(t,P),t.T=0,!0):(r=n.ul(t,e,A),r!=-1?((t.u[t.D[0][r]]&t.u[t.D[1][r]]&512)!=0?n.sl(t):n.ql(t,r),t.T=0,!0):!1)},n.ol=function(t,e){var A,P,r,i;if(e.length==0)return null;for(P=e,r=0,i=P.length;r<i;++r)A=P[r],t.C[A]=-1;return n.rl(t)},n.pl=function(t,e){t.H[e]=512,n.gl(t),t.T=0},n.ql=function(t,e){var A,P,r;for(P=0;P<2;P++){for(A=0,r=0;r<t.r;r++)r!=e&&(t.D[0][r]==t.D[P][e]||t.D[1][r]==t.D[P][e])&&++A;A==0&&(n.Ym(t,t.w[t.D[P][e]]),t.C[t.D[P][e]]=-1)}t.H[e]=512,n.gl(t),t.T=0},n.rl=function(t){var e,A,P;for(P=!1,e=0;e<t.q;e++)t.C[e]==-1&&(P=!0,n.Ym(t,t.w[e]));for(A=0;A<t.r;A++)t.H[A]==512?P=!0:(t.C[t.D[0][A]]==-1||t.C[t.D[1][A]]==-1)&&(t.H[A]=512,P=!0);return P?(t.T=0,n.gl(t)):null},n.sl=function(t){var e,A;for(A=!1,e=0;e<t.q;e++)(t.u[e]&512)!=0&&(t.C[e]=-1,A=!0);return A&&n.rl(t)!=null},n.tl=function(t,e,A){var P,r,i,D,u,o,Q,L;for(D=-1,r=n.Rl(t,t.q,t.r,n.Nk),u=U0,o=r*r/12,P=0;P<t.q;P++)Q=t.J[P].a,L=t.J[P].b,i=(e-Q)*(e-Q)+(A-L)*(A-L),i<o&&i<u&&(u=i,D=P);return D},n.ul=function(t,e,A){var P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S;for(s=-1,b=n.Rl(t,t.q,t.r,n.Nk),h=U0,P=0;P<t.r;P++)g=t.J[t.D[0][P]].a,m=t.J[t.D[0][P]].b,B=t.J[t.D[1][P]].a,S=t.J[t.D[1][P]].b,L=B-g,w=S-m,r=k.Math.sqrt(L*L+w*w),i=(g+B)/2,D=(m+S)/2,L=e-i,w=A-D,!(k.Math.sqrt(L*L+w*w)>r/2)&&(B==g?Q=k.Math.abs(g-e):(u=(S-m)/(g-B),o=-u*g-m,Q=k.Math.abs((u*e+A+o)/k.Math.sqrt(u*u+1))),Q<b&&Q<h&&(h=Q,s=P));return s},n.vl=function(t,e){return((t.u[e]&se)>>>27)-1},n.wl=function(t,e){return(t.u[e]&49152)>>14},n.xl=function(t,e){return t.s[e]},n.yl=function(t,e){return t.u[e]&448},n.zl=function(t,e){var A;return t.t==null||t.t[e]==null?null:T.Zib((A=t.t[e],V1.Cmb(),A))},n.Al=function(t,e){return t.t==null?null:t.t[e]},n.Bl=function(t,e){return(t.u[e]&U1)>>18!=1&&(t.u[e]&U1)>>18!=2?-1:(t.u[e]&j0)>>20},n.Cl=function(t,e){return(t.u[e]&U1)>>18},n.Dl=function(t,e){return n.Ik[t.C[e]]},n.El=function(t,e){return t.v==null?null:t.v[e]},n.Fl=function(t,e){var A,P,r;if(t.v==null||t.v[e]==null)return jt(Z(t.B[e],1),0)?\"\":n.Ik[t.C[e]];for(r=\"\",P=0;P<t.v[e].length;P++)P>0&&(r=(c.Gzb(r),r+(c.Gzb(\",\"),\",\"))),A=t.v[e][P],r=T.Xib(r,n.Ik[A]);return r},n.Gl=function(t,e){return k.Math.abs(t.w[e])},n.Hl=function(t,e){return t.A[e]},n.Il=function(t,e){return t.u[e]&3},n.Jl=function(t,e){return t.B[e]},n.Kl=function(t,e){return t.u[e]&48},n.Ll=function(t,e){return t.J[e].a},n.Ml=function(t,e){return t.J[e].b},n.Nl=function(t,e){return t.J[e].c},n.Ol=function(t,e){return t.C[e]},n.Pl=function(t){return n.Rl(t,t.q,t.r,n.Nk)},n.Ql=function(t,e){return n.Rl(t,t.q,t.r,e)},n.Rl=function(t,e,A,P){return n.Sl(t,e,A,P,t.J)},n.Sl=function(t,e,A,P,r){var i,D,u,o,Q,L,w,s,h,b;for(w=!1,s=0,Q=0;Q<A;Q++)t.H[Q]!=16&&(t.G[Q]&Qe)==0&&++s;if(s==0){for(L=0;L<A;L++)(t.G[L]&Qe)==0&&++s;w=!0}if(s==0){if(e<2)return P;for(b=U0,i=1;i<e;i++)for(D=0;D<i;D++)h=n.ai(r[i],r[D]),h>0&&h<b&&(b=h);return b!=U0?.6*b:P}for(u=0,o=0;o<A;o++)(w||t.H[o]!=16)&&(t.G[o]&Qe)==0&&(u+=n.ai(r[t.D[1][o]],r[t.D[0][o]]));return u/s},n.Tl=function(t,e,A){return n.jo(t.J[e].a,t.J[e].b,t.J[A].a,t.J[A].b)},n.Ul=function(t,e,A){return t.D[e][A]},n.Vl=function(t,e){return((t.G[e]&7680)>>9)+((t.G[e]&$A)>>13)},n.Wl=function(t,e){return(t.G[e]&7680)>>9},n.Xl=function(t,e){return(t.F[e]&48)>>4},n.Yl=function(t,e){return(t.F[e]&768)>>8!=1&&(t.F[e]&768)>>8!=2?-1:(t.F[e]&S0)>>10},n.Zl=function(t,e){return(t.F[e]&768)>>8},n.$l=function(t,e){var A,P,r,i;return A=t.D[0][e],P=t.D[1][e],r=t.J[P].a-t.J[A].a,i=t.J[P].b-t.J[A].b,k.Math.sqrt(r*r+i*i)},n._l=function(t,e,A){var P;for(P=0;P<t.r;P++)if((t.D[0][P]==e&&t.D[1][P]==A||t.D[0][P]==A&&t.D[1][P]==e)&&t.H[P]!=512)return P;return-1},n.am=function(t,e){if(t.K&&(t.G[e]&127)!=0){if((t.G[e]&9)!=0)return 1;if((t.G[e]&2)!=0)return 2;if((t.G[e]&4)!=0)return 3;if((t.G[e]&32)!=0)return 4;if((t.G[e]&64)!=0)return 5;if((t.G[e]&16)!=0)return 0}switch(t.H[e]&127){case 1:case 8:return 1;case 2:return 2;case 4:return 3;case 32:return 4;case 64:return 5;default:return 0}},n.bm=function(t,e){return t.F[e]&3},n.cm=function(t,e){return t.G[e]},n.dm=function(t,e){return t.H[e]},n.em=function(t,e){return t.H[e]&127},n.fm=function(t,e){var A,P,r,i,D;if(t.q==0)return null;for(P=t.J[0].a,i=t.J[0].b,r=t.J[0].a,D=t.J[0].b,A=1;A<t.q;A++)P>t.J[A].a?P=t.J[A].a:r<t.J[A].a&&(r=t.J[A].a),i>t.J[A].b?i=t.J[A].b:D<t.J[A].b&&(D=t.J[A].b);return e?(e.c=P,e.d=i,e.b=r-P,e.a=D-i):e=new Tt.FN(P,i,r-P,D-i),e},n.gm=function(t,e){return t.J[e]},n.hm=function(t,e){var A;return A=t.C[e]<n.Jk.length?n.Jk[t.C[e]]:null,A==null?6:A[A.length-1]},n.im=function(t,e,A){return n.jm(t,e,A,t.C[e])},n.jm=function(t,e,A,P){var r,i;return P>=171&&P<=190?0:(i=0,(t.u[e]&48)==32&&(i-=1),((t.u[e]&48)==16||(t.u[e]&48)==48)&&(i-=2),r=t.s[e],r==0&&t.K&&(S1(Z(t.B[e],Be),ln)&&(r=-1),S1(Z(t.B[e],Be),on)&&(r=1)),P==7||P==8||P==9?i+=r:P==6||P==14||P==32?i-=k.Math.abs(r):P==15||P==33?A-i-r<=3?i+=r:i-=r:P==16||P==34||P==52?A-i-r<=4?i+=r:i-=k.Math.abs(r):P==17||P==35||P==53?A-i-r<=5?i+=r:i-=k.Math.abs(r):i-=r,i)},n.km=function(t,e){var A;return A=n.lm(t,e),A+n.jm(t,e,A,t.C[e])},n.lm=function(t,e){var A,P;return A=((t.u[e]&se)>>>27)-1,A==-1&&(A=(P=t.C[e]<n.Jk.length?n.Jk[t.C[e]]:null,P==null?6:P[P.length-1])),A},n.mm=function(t,e){var A,P,r,i,D;for(i=n.Pm(t,t.D[0][e])||n.Pm(t,t.D[1][e])?5:3,P=0;P<2;P++)A=t.D[P][e],r=n.am(t,e)+(D=n.lm(t,A),D+n.jm(t,A,D,t.C[A]))-n.rp(t,A),i>r&&(i=r);return i},n.nm=function(t,e){return(t.u[e]&z1)!=0},n.om=function(t,e){var A,P,r;return P=n.mm(t,e),A=n.Hm(t,t.D[0][e])||n.Hm(t,t.D[1][e]),r=A?16:1,t.H[e]==64?(t.H[e]=r,t.T=0,!0):t.H[e]==32?(t.H[e]=P>4?64:r,t.T=0,!0):t.H[e]==4?(t.H[e]=P>3?32:r,t.T=0,!0):t.H[e]==2&&(t.H[e]=386,t.T&=7,(t.F[e]&128)==0)?!0:t.H[e]==386?(P>2?t.H[e]=4:t.H[e]=r,t.T=0,!0):(384&t.H[e])!=0?(t.H[e]=1,t.T&=7,!0):!A&&P<2?!1:t.H[e]==1?(t.H[e]=2,t.T=0,!0):P<1?!1:t.H[e]==16?(t.H[e]=1,t.T=0,!0):!1},n.pm=function(t){var e;for(t.T=0,t.C=d(l.Z6,H,6,t.M,15,1),t.s=d(l.Z6,H,6,t.M,15,1),t.w=d(l.Z6,H,6,t.M,15,1),t.J=d(l.q7,zn,29,t.M,0,1),e=0;e<t.M;e++)t.J[e]=new n.ki;t.A=d(l.Z6,H,6,t.M,15,1),t.u=d(l.Z6,H,6,t.M,15,1),t.B=d(l.$6,e0,6,t.M,14,1),t.v=null,t.t=null,t.D=w1(l.Z6,[M1,H],[7,6],15,[2,t.N],2),t.H=d(l.Z6,H,6,t.N,15,1),t.F=d(l.Z6,H,6,t.N,15,1),t.G=d(l.Z6,H,6,t.N,15,1)},n.qm=function(t,e){t.T&=~e},n.rm=function(t){var e;for(e=0;e<t.q;e++)if(t.J[e].c!=0)return!0;return!1},n.sm=function(t,e){return(t.u[e]&lA)!=0},n.tm=function(t,e){return t.C[e]==-1},n.um=function(t,e){return(t.u[e]&4)!=0},n.vm=function(t,e){return(t.u[e]&H0)!=0},n.wm=function(t,e){return t.w[e]<0},n.xm=function(t,e){return(t.F[e]&Ge)!=0},n.ym=function(t,e){return(t.G[e]&Qe)!=0},n.zm=function(t,e){return(t.F[e]&z1)!=0},n.Am=function(t,e){return t.H[e]==512},n.Bm=function(t,e){return(t.F[e]&4)!=0},n.Cm=function(t,e){return(t.F[e]&n0)!=0},n.Dm=function(t,e){var A,P,r,i;if(t.K){if(jt(Z(t.B[e],1),0))return!1;if(t.v!=null&&t.v[e]!=null){for(P=t.v[e],r=0,i=P.length;r<i;++r)if(A=P[r],!n.mo(A))return!1}}return n.mo(t.C[e])},n.Em=function(t,e){var A,P,r,i;if(t.K){if(jt(Z(t.B[e],1),0))return!1;if(t.v!=null&&t.v[e]!=null){for(P=t.v[e],r=0,i=P.length;r<i;++r)if(A=P[r],!n.no(A))return!1}}return n.no(t.C[e])},n.Fm=function(t,e){return jt(Z(t.B[e],P0),0)},n.Gm=function(t,e){return(t.u[e]&n0)!=0},n.Hm=function(t,e){var A,P,r,i;if(t.K){if(jt(Z(t.B[e],1),0))return!1;if(t.v!=null&&t.v[e]!=null){for(P=t.v[e],r=0,i=P.length;r<i;++r)if(A=P[r],!(A>=3&&A<=4||A>=11&&A<=13||A>=19&&A<=31||A>=37&&A<=51||A>=55&&A<=84||A>=87&&A<=112))return!1}}return n.oo(t.C[e])},n.Im=function(t,e){return t.A[e]==0},n.Jm=function(t,e){var A,P,r,i;if(t.K){if(jt(Z(t.B[e],1),0))return!1;if(t.v!=null&&t.v[e]!=null){for(P=t.v[e],r=0,i=P.length;r<i;++r)if(A=P[r],!(A==1||A>=5&&A<=9||A>=14&&A<=17||A>=32&&A<=35||A>=52&&A<=53))return!1}}return n.qo(t.C[e])},n.Km=function(t){var e;for(e=0;e<t.q;e++)switch(t.C[e]){case 1:case 5:case 6:case 7:case 8:case 9:case 14:case 15:case 16:case 17:case 33:case 34:case 35:case 52:case 53:continue;default:return!1}return!0},n.Lm=function(t,e){return(t.u[e]&512)!=0},n.Mm=function(t,e){return(t.u[t.D[0][e]]&t.u[t.D[1][e]]&512)!=0},n.Nm=function(t,e){return t.H[e]==257||t.H[e]==129},n.Om=function(t,e,A){return(t.H[e]==257||t.H[e]==129)&&t.D[0][e]==A},n.Pm=function(t,e){var A,P,r,i;if(t.K){if(jt(Z(t.B[e],1),0))return!1;if(t.v!=null&&t.v[e]!=null){for(P=t.v[e],r=0,i=P.length;r<i;++r)if(A=P[r],!(A>=21&&A<=30||A>=39&&A<=48||A==57||A>=72&&A<=80||A==89||A>=104&&A<=112))return!1}}return n.ro(t.C[e])},n.Qm=function(t,e){t.C[e]=-1},n.Rm=function(t,e){t.H[e]=512},n.Sm=function(t,e,A,P,r,i,D,u){var o,Q,L,w,s,h,b,g,B,m;for(e!=P&&(B=t.J[e].a-t.J[P].a,m=t.J[e].b-t.J[P].b,u=k.Math.sqrt(B*B+m*m)),o=e,L=n.Sn(t,e)!=3,g=1;g<A;g++){for(s=t.J[o].a+u*k.Math.sin(i),h=t.J[o].b+u*k.Math.cos(i),b=-1,w=0;w<t.q;w++)if(k.Math.abs(s-t.J[w].a)<4&&k.Math.abs(h-t.J[w].b)<4){b=w;break}b==-1&&(b=n.Qk(t,s,h,0),t.J[b].a=s,t.J[b].b=h,t.J[b].c=0),Q=n._l(t,o,b),Q==-1&&(Q=n.Tk(t,o,b,n.Hm(t,o)||n.Hm(t,b)?16:1),r&&(L&&n.Sn(t,t.D[0][Q])<4&&n.Sn(t,t.D[1][Q])<3&&(t.H[Q]=2),L=!L)),o=b,i+=D}Q=n._l(t,o,P),Q==-1&&(Q=n.Tk(t,o,P,n.Hm(t,o)||n.Hm(t,P)?16:1)),r&&L&&n.Sn(t,t.D[0][Q])<4&&n.Sn(t,t.D[1][Q])<4&&(t.H[Q]=2)},n.Tm=function(t,e,A){var P,r;if(n.am(t,e)!=1)return!1;if((t.u[A]&3)!=0)return!0;for(r=0;r<t.r;r++)if(r!=e&&t.H[r]==2&&(t.D[0][r]==A&&(t.u[t.D[1][r]]&3)!=0||t.D[1][r]==A&&(t.u[t.D[0][r]]&3)!=0))return!0;for(P=0;P<t.r;P++)if(P!=e&&t.H[P]==1&&(t.D[0][P]==A||t.D[1][P]==A)&&(t.F[P]&3)!=0)return!0;return!1},n.Um=function(t){var e;for(e=0;e<t.q;e++)t.u[e]&=-449},n.Vm=function(t){var e;for(e=0;e<t.q;e++)t.u[e]&=aA},n.Wm=function(t){var e;for(e=0;e<t.q;e++)t.u[e]&=-513},n.Xm=function(t){var e;for(e=0;e<t.r;e++)t.F[e]&=-98305},n.Ym=function(t,e){var A;for(A=0;A<t.q;A++)k.Math.abs(t.w[A])==k.Math.abs(e)&&(t.w[A]=0)},n.Zm=function(t){var e,A,P,r;for(r=!1,A=0;A<t.q;A++)jt(Z(t.B[A],P0),0)&&(t.C[A]=-1,r=!0);for(r&&n.rl(t),t.v!=null&&(t.v=null,r=!0),e=0;e<t.q;e++)jt(t.B[e],0)&&(t.B[e]=0,r=!0);for(P=0;P<t.r;P++)t.G[P]!=0&&(t.G[P]=0,r=!0),t.H[P]==8&&(t.H[P]=1,r=!0);return r&&(t.T=0),r},n.$m=function(t,e){var A,P,r,i,D,u,o,Q,L;if(e==0)return 0;for(u=null,P=0;P<t.q;P++)(t.u[P]&U1)>>18==e&&(u==null&&(u=d(l.teb,wt,6,32,16,1)),u[(t.u[P]&U1)>>18!=1&&(t.u[P]&U1)>>18!=2?-1:(t.u[P]&j0)>>20]=!0);for(i=0;i<t.r;i++)(t.F[i]&768)>>8==e&&(u==null&&(u=d(l.teb,wt,6,32,16,1)),u[(t.F[i]&768)>>8!=1&&(t.F[i]&768)>>8!=2?-1:(t.F[i]&S0)>>10]=!0);if(L=0,u!=null){for(Q=d(l.Z6,H,6,32,15,1),o=0;o<32;o++)u[o]&&(Q[o]=L++);for(A=0;A<t.q;A++)(t.u[A]&U1)>>18==e&&(D=Q[(t.u[A]&U1)>>18!=1&&(t.u[A]&U1)>>18!=2?-1:(t.u[A]&j0)>>20],t.u[A]&=-32505857,t.u[A]|=D<<20);for(r=0;r<t.r;r++)(t.F[r]&768)>>8==e&&(D=Q[(t.F[r]&768)>>8!=1&&(t.F[r]&768)>>8!=2?-1:(t.F[r]&S0)>>10],t.F[r]&=-31745,t.F[r]|=D<<10)}return L},n._m=function(t,e){var A;for(A=0;A<t.q;A++)t.J[A].a*=e,t.J[A].b*=e},n.an=function(t,e){t.q=e,t.T=0},n.bn=function(t,e){t.r=e,t.T=0},n.cn=function(t,e,A){A>=-1&&A<=14&&(t.u[e]&=-2013265921,t.u[e]|=1+A<<27,t.C[e]==6&&(A==-1||A==0||A==2||A==4)&&(t.u[e]&=-49,A==2&&(t.u[e]|=16)))},n.dn=function(t,e,A){t.u[e]&=-49153,t.u[e]|=A<<14},n.en=function(t,e,A){t.s[e]=A,t.T=0},n.fn=function(t,e,A){t.u[e]&=-449,t.u[e]|=A},n.gn=function(t,e,A){A?t.u[e]|=lA:t.u[e]&=tP,t.T&=7},n.hn=function(t,e,A){var P,r;A!=null&&(c.Szb(A).length==0?A=null:(P=n.lo(A,321),(P!=0&&P==t.C[e]||T._ib(A,\"?\"))&&(n.yn(t,e,P),A=null))),A==null?t.t!=null&&(t.t[e]=null):(t.t==null&&(t.t=d(l.V6,we,10,t.M,0,2)),t.t[e]=c.szb((r=A,V1.Cmb(),r)))},n.jn=function(t,e,A){A!=null&&A.length==0&&(A=null),A==null?t.t!=null&&(t.t[e]=null):(t.t==null&&(t.t=d(l.V6,we,10,t.M,0,2)),t.t[e]=A)},n.kn=function(t,e,A,P){var r,i,D;if(A==0)t.u[e]&=eP,t.u[e]|=A<<18;else{if(P>=32)return;if(P==-1){for(D=-1,i=0;i<t.q;i++)i!=e&&A==(t.u[i]&U1)>>18&&D<((t.u[i]&U1)>>18!=1&&(t.u[i]&U1)>>18!=2?-1:(t.u[i]&j0)>>20)&&(D=(t.u[i]&U1)>>18!=1&&(t.u[i]&U1)>>18!=2?-1:(t.u[i]&j0)>>20);for(r=0;r<t.r;r++)A==(t.F[r]&768)>>8&&D<((t.F[r]&768)>>8!=1&&(t.F[r]&768)>>8!=2?-1:(t.F[r]&S0)>>10)&&(D=(t.F[r]&768)>>8!=1&&(t.F[r]&768)>>8!=2?-1:(t.F[r]&S0)>>10);if(P=D+1,P>=32)return}t.u[e]&=eP,t.u[e]|=A<<18|P<<20}t.T&=7},n.ln=function(t,e,A){t.v==null&&(t.v=d(l.Z6,M1,7,t.M,0,2)),c.lzb(A,c.Szb(y0(y.lrb.prototype.jd,y.lrb,[]))),t.v[e]=A,t.T=0,t.K=!0},n.mn=function(t,e,A,P){var r;if(A==null){t.v!=null&&(t.v[e]=null);return}if(A.length==1&&!P){r=A[0],t.C[e]!=r&&n.bl(t,e,r,0,-1,0),t.v!=null&&(t.v[e]=null);return}t.v==null&&(t.v=d(l.Z6,M1,7,t.M,0,2)),t.v[e]=A,P&&(t.B[e]=Pt(t.B[e],1)),t.T=0,t.K=!0},n.nn=function(t,e,A,P){t.w[e]=P?-A:A},n.on=function(t,e,A){A?t.u[e]|=n0:t.u[e]&=aA},n.pn=function(t,e,A){t.A[e]=A,t.T&=t.C[e]==1?0:7},n.qn=function(t,e,A,P){t.u[e]&=-8,A!=3&&(t.u[e]&=tP),t.u[e]|=A,P&&(t.u[e]|=4)},n.rn=function(t,e,A,P){P?t.B[e]=Pt(t.B[e],A):t.B[e]=Z(t.B[e],$0(A)),t.T=0,t.K=!0},n.sn=function(t,e,A){t.u[e]&=-49,t.u[e]|=A,t.T&=7},n.tn=function(t,e,A){A?t.u[e]|=512:t.u[e]&=-513},n.un=function(t,e,A){t.u[e]&=-67108865,A&&(t.u[e]|=H0)},n.vn=function(t,e,A){t.J[e].a=A,t.T&=7},n.wn=function(t,e,A){t.J[e].b=A,t.T&=7},n.xn=function(t,e,A){t.J[e].c=A,t.T&=7},n.yn=function(t,e,A){A>=0&&A<=190&&(A==151||A==152?(t.C[e]=1,t.A[e]=A-149):(t.C[e]=A,t.A[e]=0),t.u[e]&=-2013265921,t.T=0)},n.zn=function(t,e,A,P){t.D[e][A]=P,t.T=0},n.An=function(t,e,A){A?t.F[e]|=Ge:t.F[e]&=-32769},n.Bn=function(t,e,A){t.F[e]&=-49,t.F[e]|=A<<4},n.Cn=function(t,e,A,P){var r,i,D;if(A==0)t.F[e]&=-32513,t.F[e]|=A<<8;else{if(P>=32)return;if(P==-1){for(D=-1,i=0;i<t.q;i++)A==(t.u[i]&U1)>>18&&D<((t.u[i]&U1)>>18!=1&&(t.u[i]&U1)>>18!=2?-1:(t.u[i]&j0)>>20)&&(D=(t.u[i]&U1)>>18!=1&&(t.u[i]&U1)>>18!=2?-1:(t.u[i]&j0)>>20);for(r=0;r<t.r;r++)r!=e&&A==(t.F[r]&768)>>8&&D<((t.F[r]&768)>>8!=1&&(t.F[r]&768)>>8!=2?-1:(t.F[r]&S0)>>10)&&(D=(t.F[r]&768)>>8!=1&&(t.F[r]&768)>>8!=2?-1:(t.F[r]&S0)>>10);if(P=D+1,P>=32)return}t.F[e]&=-32513,t.F[e]|=A<<8|P<<10}t.T&=7},n.Dn=function(t,e,A){A?t.F[e]|=z1:t.F[e]&=-65537},n.En=function(t,e,A){t.H[e]=A==1?1:A==2?2:A==3?4:16,t.T=0},n.Fn=function(t,e,A,P){t.F[e]&=-131080,t.F[e]|=A,P&&(t.F[e]|=4)},n.Gn=function(t,e){t.F[e]|=n0},n.Hn=function(t,e,A,P){P?t.G[e]|=A:t.G[e]&=~A,t.T=0,P&&A!=0&&(t.K=!0)},n.In=function(t,e,A){t.H[e]=A,t.T=0},n.Jn=function(t,e){t.I=e},n.Kn=function(t,e){t.K!=e&&(t.K=e,e||n.Zm(t),t.T=0)},n.Ln=function(t,e){t.T=e},n.Mn=function(t,e){t.S=e},n.Nn=function(t,e){var A,P;for(t.C=n.co(t.C,e),t.s=n.co(t.s,e),t.w=n.co(t.w,e),P=t.J.length,t.J=n.fo(t.J,e),A=P;A<e;A++)t.J[A]=new n.ki;t.A=n.co(t.A,e),t.u=n.co(t.u,e),t.B=n.eo(t.B,e),t.v!=null&&(t.v=n.ho(t.v,e)),t.t!=null&&(t.t=n.go(t.t,e)),t.M=e},n.On=function(t,e){t.D[0]=n.co(t.D[0],e),t.D[1]=n.co(t.D[1],e),t.H=n.co(t.H,e),t.F=n.co(t.F,e),t.G=n.co(t.G,e),t.N=e},n.Pn=function(t,e){t.O=e},n.Qn=function(t,e){t.P=e},n.Rn=function(t,e){t.u[e]|=z1},n.Sn=function(t,e){var A,P;for(P=0,A=0;A<t.r;A++)(t.D[0][A]==e||t.D[1][A]==e)&&(P+=n.am(t,A));return P},n.Tn=function(t){var e,A,P;for(A=!1,P=!1,e=0;e<t.q;e++)t.A[e]!=0&&(t.A[e]=0,A=!0,t.C[e]==1&&(P=!0));return P&&(t.T=0),A},n.Un=function(t,e,A){return n.Hm(t,e)||n.Hm(t,A)?16:1},n.Vn=function(t,e,A){var P,r,i,D,u,o;for(D=t.C[e],t.C[e]=t.C[A],t.C[A]=D,D=t.s[e],t.s[e]=t.s[A],t.s[A]=D,D=t.A[e],t.A[e]=t.A[A],t.A[A]=D,D=t.u[e],t.u[e]=t.u[A],t.u[A]=D,o=t.B[e],t.B[e]=t.B[A],t.B[A]=o,D=t.w[e],t.w[e]=t.w[A],t.w[A]=D,i=t.J[e],t.J[e]=t.J[A],t.J[A]=i,t.v!=null&&(u=t.v[e],t.v[e]=t.v[A],t.v[A]=u),t.t!=null&&(u=t.t[e],t.t[e]=t.t[A],t.t[A]=u),P=0;P<t.r;P++)for(r=0;r<2;r++)t.D[r][P]==e?t.D[r][P]=A:t.D[r][P]==A&&(t.D[r][P]=e);t.T=0},n.Wn=function(t,e,A){var P;P=t.D[0][e],t.D[0][e]=t.D[0][A],t.D[0][A]=P,P=t.D[1][e],t.D[1][e]=t.D[1][A],t.D[1][A]=P,P=t.H[e],t.H[e]=t.H[A],t.H[A]=P,P=t.F[e],t.F[e]=t.F[A],t.F[A]=P,P=t.G[e],t.G[e]=t.G[A],t.G[A]=P,t.T=0},n.Xn=function(t,e,A){var P;for(P=0;P<t.q;P++)t.J[P].a+=e,t.J[P].b+=A;t.U+=e,t.V+=A},n.Yn=function(t,e,A){var P,r;switch(r=A&127,P=n.mm(t,e),r){case 1:case 8:return P>=1;case 2:return P>=2;case 4:return P>=3;case 32:return P>=4;case 64:return P>=5;case 16:return!0;default:return!1}},n.Zn=function(t,e,A,P){var r,i,D;for(r=0;r<t.q;r++)(!P||(t.u[r]&512)!=0)&&(D=t.R[r]*e,i=t.Q[r]-A,t.J[r].a=t.U+D*k.Math.sin(i),t.J[r].b=t.V+D*k.Math.cos(i));P&&(t.T&=7)},n.$n=function(t,e,A){var P,r,i;for(t.U=e,t.V=A,t.Q=d(l.X6,Bt,6,t.q,15,1),t.R=d(l.X6,Bt,6,t.q,15,1),P=0;P<t.q;P++)r=e-t.J[P].a,i=A-t.J[P].b,t.R[P]=k.Math.sqrt(r*r+i*i),t.Q[P]=n.jo(e,A,t.J[P].a,t.J[P].b)},n._n=function(){n.Ok(),this.M=this.N=256,n.pm(this)},n.ao=function(t,e){this.M=k.Math.max(1,t),this.N=k.Math.max(1,e),n.pm(this)},n.co=function(t,e){var A;return A=d(l.Z6,H,6,e,15,1),T.Qjb(t,0,A,0,k.Math.min(t.length,e)),A},n.eo=function(t,e){var A;return A=d(l.$6,e0,6,e,14,1),T.Qjb(t,0,A,0,k.Math.min(t.length,e)),A},n.fo=function(t,e){var A,P;for(A=d(l.q7,zn,29,e,0,1),P=0;P<t.length;P++)t[P]&&(A[P]=new n.mi(t[P]));return A},n.go=function(t,e){var A,P;for(A=d(l.V6,we,10,e,0,2),P=0;P<t.length;P++)t[P]!=null&&(A[P]=d(l.V6,Y,6,t[P].length,15,1),T.Qjb(t[P],0,A[P],0,t[P].length));return A},n.ho=function(t,e){var A,P;for(A=d(l.Z6,M1,7,e,0,2),P=0;P<t.length;P++)t[P]!=null&&(A[P]=d(l.Z6,H,6,t[P].length,15,1),T.Qjb(t[P],0,A[P],0,t[P].length));return A},n.io=function(t){return n.Ok(),t>=0&&t<n.Jk.length&&n.Jk[t]!=null?n.Jk[t]:t>=171&&t<=190?n.Hk:n.Lk},n.jo=function(t,e,A,P){n.Ok();var r,i,D;return i=A-t,D=P-e,D!=0?(r=k.Math.atan(i/D),D<0&&(i<0?r-=t1:r+=t1)):r=i>0?k0:uA,r},n.ko=function(t,e){n.Ok();var A;for(A=t-e;A<or;)A+=G1;for(;A>t1;)A-=G1;return A},n.lo=function(t,e){n.Ok();var A,P,r,i,D;if((e&256)!=0&&T._ib(t,\"?\"))return 0;for(P=1;P<=128;P++)if(!T._ib(t,F1)&&T.ajb(t,n.Ik[P]))return P;if((e&2)!=0){for(r=129;r<=144;r++)if(T.ajb(t,n.Ik[r]))return r}if((e&4)!=0){for(i=146;i<=148;i++)if(T.ajb(t,n.Ik[i]))return i}if((e&1)!=0){for(D=151;D<=152;D++)if(T.ajb(t,n.Ik[D]))return D}if((e&32)!=0&&T.ajb(t,n.Ik[153]))return 153;if((e&8)!=0&&T.ajb(t,n.Ik[154]))return 154;if((e&16)!=0&&T.ajb(t,n.Ik[145]))return 145;if((e&128)!=0&&T.ajb(t,n.Ik[159]))return 159;if((e&64)!=0){for(A=171;A<=190;A++)if(T.ajb(t,n.Ik[A]))return A}return 0},n.mo=function(t){switch(n.Ok(),t){case 7:case 8:case 9:case 15:case 16:case 17:case 33:case 34:case 35:case 52:case 53:return!0}return!1},n.no=function(t){return n.Ok(),!(t==1||t==6||n.mo(t)||t==2||t==10||t==18||t==36||t==54||t==86||t>103)},n.oo=function(t){return t>=3&&t<=4||t>=11&&t<=13||t>=19&&t<=31||t>=37&&t<=51||t>=55&&t<=84||t>=87&&t<=112},n.po=function(t){return t==2||t==10||t==18||t==36||t==54||t==86},n.qo=function(t){return t==1||t>=5&&t<=9||t>=14&&t<=17||t>=32&&t<=35||t>=52&&t<=53},n.ro=function(t){return t>=21&&t<=30||t>=39&&t<=48||t==57||t>=72&&t<=80||t==89||t>=104&&t<=112},G(89,1,{89:1,4:1},n._n),U.Xb=function(t){n.ll(this,t)},U.Yb=function(t){return this.H[t]==8},U.q=0,U.r=0,U.I=0,U.K=!1,U.L=!1,U.M=0,U.N=0,U.O=0,U.S=!1,U.T=0,U.U=0,U.V=0,n.Nk=24,l.F7=O(89),n.to=function(t,e,A,P){var r,i,D,u,o,Q,L,w,s;for(n.aw(e,1),P==null&&(P=d(l.Z6,H,6,e.q,15,1)),u=n.$m(t,1),o=n.$m(t,2),s=d(l.teb,wt,6,e.q,16,1),Q=d(l.Z6,H,6,e.q,15,1),Q[0]=A,s[A]=!0,P[A]=n.hl(e,t,A,u,o),D=0,L=0;D<=L;){for(w=0;w<n.Ho(e,Q[D]);w++)i=e.i[Q[D]][w],s[i]||(Q[++L]=i,s[i]=!0,P[i]=n.hl(e,t,i,u,o));++D}for(r=0;r<e.r;r++)s[e.D[0][r]]&&n.il(e,t,r,u,o,P==null?e.D[0][r]:P[e.D[0][r]],P==null?e.D[1][r]:P[e.D[1][r]],!1);n.$m(t,1),n.$m(t,2),t.T=0},n.uo=function(t){var e,A,P,r,i,D,u,o,Q,L,w,s;for(t.j=d(l.Z6,H,6,t.q,15,1),t.e=d(l.Z6,H,6,t.q,15,1),t.i=d(l.Z6,M1,7,t.q,0,2),t.k=d(l.Z6,M1,7,t.q,0,2),t.n=d(l.Z6,M1,7,t.q,0,2),t.o=d(l.Z6,H,6,t.f,15,1),Q=d(l.Z6,H,6,t.q,15,1),D=0;D<t.r;D++)++Q[t.D[0][D]],++Q[t.D[1][D]];for(P=0;P<t.q;P++)t.i[P]=d(l.Z6,H,6,Q[P],15,1),t.k[P]=d(l.Z6,H,6,Q[P],15,1),t.n[P]=d(l.Z6,H,6,Q[P],15,1);for(w=!1,u=0;u<t.g;u++){if(s=n.am(t,u),s==0){w=!0;continue}for(L=0;L<2;L++)A=t.D[L][u],e=t.e[A],t.n[A][e]=s,t.i[A][e]=t.D[1-L][u],t.k[A][e]=u,++t.e[A],++t.j[A],A<t.f&&(s>1?t.o[A]+=s-1:t.H[u]==8&&(t.o[A]=1))}for(o=t.g;o<t.r;o++){if(s=n.am(t,o),s==0){w=!0;continue}for(L=0;L<2;L++)A=t.D[L][o],e=t.e[A],t.n[A][e]=s,t.i[A][e]=t.D[1-L][o],t.k[A][e]=o,++t.e[A],t.D[1-L][o]<t.f&&++t.j[A]}if(w){for(e=d(l.Z6,H,6,t.q,15,1),r=0;r<t.q;r++)e[r]=t.e[r];for(i=0;i<t.r;i++)if(s=n.am(t,i),s==0)for(L=0;L<2;L++)A=t.D[L][i],t.n[A][e[A]]=s,t.i[A][e[A]]=t.D[1-L][i],t.k[A][e[A]]=i,++e[A]}},n.vo=function(t,e,A){var P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S,p,M,z,q;for(n.aw(t,1),A&&(e=!0),o=0;o<t.r;o++)if(Q=n.am(t,o),Q==1||Q==2){if(t.s[t.D[0][o]]>0&&t.s[t.D[1][o]]<0)i=t.D[0][o],D=t.D[1][o];else if(t.s[t.D[0][o]]<0&&t.s[t.D[1][o]]>0)i=t.D[1][o],D=t.D[0][o];else continue;if(n.Hm(t,i)||n.Hm(t,D)||t.C[i]<9&&n.rp(t,i)>3||t.C[D]<9&&n.rp(t,D)>3)continue;w=n.kp(t,i)!=0,t.s[i]-=1,t.s[D]+=1,w||(S=t.H[o],Q==1?t.H[o]=2:t.H[o]=4,(S==129||S==257)&&(q=t.D[0][o],m=n.lq(t,q,!1),t.D[0][m]!=q&&(t.D[1][m]=t.D[0][m],t.D[1][m]=q))),t.T=0}for(p=0,g=0,h=0,r=0;r<t.q;r++)p+=t.s[r],t.s[r]<0&&!n.Lp(t,r)&&(++g,n.Dm(t,r)&&(h-=t.s[r]));if(!e&&p!=0)throw Qt(new T.bC(\"molecule's overall charges are not balanced\"));for(n.aw(t,1),M=0,z=A?p+h:h,u=0;u<t.q;u++)t.s[u]>0&&!n.Kp(t,u)&&n.Dm(t,u)&&(L=k.Math.min(n.kp(t,u),t.s[u]),L!=0&&z>=L&&(p-=L,M-=L,z-=L,t.s[u]-=L,t.T&=1));if(B=A?p:M,B<0){for(b=d(l.Z6,H,6,g,15,1),g=0,i=0;i<t.q;i++)t.s[i]<0&&!n.Lp(t,i)&&(b[g++]=(t.C[i]<<22)+i);for(c.lzb(b,c.Szb(y0(y.lrb.prototype.jd,y.lrb,[]))),s=b.length-1;B<0&&s>=b.length-g;s--)P=b[s]&_1,n.Dm(t,P)&&(L=k.Math.min(-B,-t.s[P]),p+=L,B+=L,t.s[P]+=L,t.T&=1)}return p},n.wo=function(t){var e,A,P,r,i,D,u,o,Q,L,w,s,h;for(A=0;A<t.q;A++)h=n.lm(t,A),h+n.jm(t,A,h,t.C[A])-n.rp(t,A)<=0&&!(t.s[A]==0&&(t.C[A]==5||(r=t.C[A],r==7||r==15||r==33)||(P=t.C[A],P==8||P==16||P==34||P==52||P==84)))&&(t.B[A]=Z(t.B[A],-6145));if(t.S)return!1;for(D=!1,e=0;e<t.f;e++)if(u=t.e[e]-t.j[e],u>0)for(S1(Z(t.B[e],c1),0)&&(L=S1(Z(t.B[e],K0),896)?3:S1(Z(t.B[e],K0),384)?2:S1(Z(t.B[e],128),128)?1:0,o=(h=n.lm(t,e),h+n.jm(t,e,h,t.C[e])-n.rp(t,e)),t.s[e]==0&&S1(Z(t.B[e],Be),0)&&t.C[e]!=6&&++o,w=u,w>3-L&&(w=3-L),w>o+u-L&&(w=o+u-L),w>0&&(s=L==0?0:T1(Z(t.B[e],K0),w),s=Pt(s,l.Ieb((w==3?7:u==2?3:1)<<7)),t.B[e]=Z(t.B[e],-1921),t.B[e]=Pt(t.B[e],Z(K0,s)))),Q=t.j[e];Q<t.e[e];Q++)i=t.k[e][Q],t.H[i]==1&&(t.C[t.i[e][Q]]=-1,t.H[i]=512,D=!0);return D&&n.gl(t),D},n.xo=function(t,e){var A,P,r,i;if(t.o[e]==2&&t.j[e]==2&&t.n[e][0]==2){for(r=0;r<2;r++)if(A=n.Co(t,e,t.i[e][r]),A!=-1)for(i=0;i<t.j[A];i++)P=t.k[A][i],(t.H[P]==257||t.H[P]==129)&&t.D[0][P]==A&&(t.H[t.k[A][i]]=1);return}if(t.o[e]==0||t.C[e]>=15)for(r=0;r<t.e[e];r++)P=t.k[e][r],(t.H[P]==257||t.H[P]==129)&&t.D[0][P]==e&&t.D[0][P]==e&&(t.H[P]=1)},n.yo=function(t,e,A,P,r){var i,D,u,o,Q,L,w,s;for(n.aw(t,P?7:1),e.v=null,t.K&&n.Kn(e,!0),o=A.length,r==null&&(r=d(l.Z6,H,6,o,15,1)),e.q=0,i=0;i<o;i++)if(A[i]){if(r[i]=n.hl(t,e,i,0,0),t.C[i]==1&&(s=n.rp(t,i),s>1)){for(w=0;w<t.e[i];w++)if(!A[t.i[i][w]]){n.cn(e,r[i],s);break}}}else r[i]=-1;for(L=d(l.Z6,H,6,t.r,15,1),y.Jqb(L,L.length,-1),e.r=0,Q=0;Q<t.r;Q++)D=t.D[0][Q],u=t.D[1][Q],D<o&&u<o&&(A[D]&&A[u]?L[Q]=n.il(t,e,Q,0,0,r==null?t.D[0][Q]:r[t.D[0][Q]],r==null?t.D[1][Q]:r[t.D[1][Q]],P):t.s[D]!=0&&t.s[u]!=0&&t.s[D]<0^t.s[u]<0&&(A[D]&&(e.s[r[D]]+=t.s[D]<0?1:-1),A[u]&&(e.s[r[u]]+=t.s[u]<0?1:-1)));n.ll(t,e),t.d&&(e.T=0),e.T=0,n.$m(e,1),n.$m(e,2),e.q!=o&&n.Kn(e,!0),n.oq(t,e,o,r,L),n.nq(t,e,o,r),P&&n.Ee(new n.Se(e),null,!1)},n.zo=function(t,e,A,P,r){var i,D,u,o,Q,L,w,s;for(n.aw(t,P?7:1),e.v=null,t.K&&n.Kn(e,!0),r==null&&(r=d(l.Z6,H,6,t.q,15,1)),e.q=0,i=0;i<t.q;i++)for(r[i]=-1,L=0;L<t.j[i];L++)if(A[t.k[i][L]]){if(r[i]=n.hl(t,e,i,0,0),t.C[i]==1&&(s=n.rp(t,i),s>1)){for(w=0;w<t.e[i];w++)if(!A[t.k[i][w]]){n.cn(e,r[i],s);break}}break}for(Q=d(l.Z6,H,6,t.r,15,1),e.r=0,o=0;o<t.r;o++)A[o]?Q[o]=n.il(t,e,o,0,0,r==null?t.D[0][o]:r[t.D[0][o]],r==null?t.D[1][o]:r[t.D[1][o]],P):(Q[o]=-1,D=t.D[0][o],u=t.D[1][o],r[D]==-1^r[u]==-1&&t.s[D]!=0&&t.s[u]!=0&&t.s[D]<0^t.s[u]<0&&(r[D]!=-1&&(e.s[r[D]]+=t.s[D]<0?1:-1),r[u]!=-1&&(e.s[r[u]]+=t.s[u]<0?1:-1)));return n.ll(t,e),t.d&&(e.T=0),e.T=0,n.$m(e,1),n.$m(e,2),e.q!=t.q&&n.Kn(e,!0),n.oq(t,e,t.q,r,Q),n.nq(t,e,t.q,r),P&&n.Ee(new n.Se(e),null,!1),r},n.Ao=function(t,e){var A,P,r,i,D,u,o,Q,L,w;if((e&~t.T)!=0&&((t.T&1)==0&&(n.Jp(t),n.uo(t),t.T|=1,t.K&&!n.rm(t)&&n.wo(t)&&(n.Jp(t),n.uo(t),t.T|=1)),(e&~t.T)!=0)){if((t.T&-7)!=0){for(P=0;P<t.f;P++)t.u[P]&=-15369;for(i=0;i<t.g;i++)t.F[i]&=-705;if((e&4)==0){n.Fo(t,1),t.T|=2;return}for(n.Fo(t,7),r=0;r<t.f;r++)for(L=0;L<t.j[r];L++)if(o=t.k[r][L],!(o<t.g&&n.lt(t.p,o)))for(u=t.i[r][L],w=0;w<t.j[u];w++)t.k[u][w]!=o&&t.n[u][w]>1&&(t.C[t.i[u][w]]==6?t.u[r]|=J1:!n.Qp(t,t.k[u][w])&&n.Dm(t,t.i[u][w])&&(t.u[r]|=l0));for(;;){for(Q=!1,A=0;A<t.f;A++)if(t.o[A]>0&&(t.u[A]&l0)!=0&&!n.kt(t.p,A)){for(L=0;L<t.j[A];L++)if(t.n[A][L]>1)for(u=t.i[A][L],o=t.k[A][L],w=0;w<t.j[u];w++)t.k[u][w]!=o&&(D=t.i[u][w],(t.u[D]&l0)==0&&(t.u[D]|=l0,Q=!0))}if(!Q)break}}t.T|=6}},n.Bo=function(t,e){var A,P,r,i,D;if(A=-1,t.o[e]==1){for(i=0;i<t.j[e];i++)if(t.n[e][i]==2){if(P=t.i[e][i],t.j[P]==2&&t.o[P]==2){for(D=0;D<2;D++)if(r=t.i[P][D],r!=e&&t.o[r]==1){A=P;break}}break}}return A},n.Co=function(t,e,A){var P,r;for(P=e;t.j[A]==2&&t.o[A]==2&&A!=P;)r=A,A=t.i[A][0]==e?t.i[A][1]:t.i[A][0],e=r;return A==P?-1:A},n.Do=function(t,e){var A;if(t.j[e]==3&&e<t.f&&n.kt(t.p,e)&&(t.p&&e<t.f?n._s(t.p,e):0)>=5){for(A=0;A<t.j[e];A++)if(n.Rp(t,t.k[e][A]))return t.k[e][A]}return-1},n.Eo=function(t,e,A,P,r){var i,D,u,o,Q,L;if(n.aw(t,7),!((t.u[e]&M0)==0||A&&!(e<t.f&&n.kt(t.p,e))))for(o=d(l.Z6,H,6,t.f,15,1),o[0]=e,P[e]=!0,u=0,Q=0;u<=Q;){for(L=0;L<t.j[o[u]];L++)D=t.k[o[u]][L],!r[D]&&(t.F[D]&64)!=0&&(!A||D<t.g&&n.lt(t.p,D))&&(r[D]=!0,i=t.i[o[u]][L],P[i]||(P[i]=!0,o[++Q]=i));++u}},n.Fo=function(t,e){var A,P,r,i,D,u,o,Q;for(t.p=new n.zt(t,e),P=d(l.Z6,H,6,t.f,15,1),r=0;r<t.g;r++)n.bt(t.p,r)!=0&&(t.F[r]|=64,++P[t.D[0][r]],++P[t.D[1][r]]);for(A=0;A<t.f;A++)P[A]==2?t.u[A]|=r0:P[A]==3?t.u[A]|=c1:P[A]>3&&(t.u[A]|=M0);for(Q=0;Q<t.p.i.a.length;Q++)for(D=n.dt(t.p,Q),o=n.et(t.p,Q),u=D.length,i=0;i<u;i++)t.u[D[i]]|=8,t.F[o[i]]|=128,t.H[o[i]]==386&&(t.H[o[i]]=2)},n.Go=function(t){var e,A,P,r,i,D,u,o;for(u=d(l.teb,wt,6,t.q,16,1),A=0;A<t.q;A++)u[A]=t.C[A]==1&&t.A[A]==0&&t.s[A]==0&&(t.u[A]&se)==0&&(t.t==null||t.t[A]==null);for(o=d(l.teb,wt,6,t.q,16,1),D=0;D<t.r;D++){if(P=t.D[0][D],r=t.D[1][D],n.am(t,D)!=1){u[P]=!1,u[r]=!1;continue}o[P]&&(u[P]=!1),o[r]&&(u[r]=!1),u[P]&&n.Hm(t,r)&&t.C[r]!=13&&(u[P]=!1),u[r]&&n.Hm(t,P)&&t.C[P]!=13&&(u[r]=!1),o[P]=!0,o[r]=!0}for(i=0;i<t.r;i++)u[t.D[0][i]]&&u[t.D[1][i]]&&(u[t.D[0][i]]=!1,u[t.D[1][i]]=!1);for(e=0;e<t.q;e++)o[e]||(u[e]=!1);return u},n.Ho=function(t,e){return t.e[e]},n.Io=function(t,e){return t.i[e].length},n.Jo=function(t,e){return t.e[e]-n.pp(t,e)+n.kp(t,e)},n.Ko=function(t){var e,A;for(n.aw(t,7),e=0,A=0;A<t.p.i.a.length;A++)n.jt(t.p,A)&&++e;return e},n.Lo=function(t,e){var A,P;for(A=0,P=0;P<t.j[e];P++)n.Dm(t,t.i[e][P])&&!n.ym(t,t.k[e][P])&&++A;return A},n.Mo=function(t,e){return t.o[e]},n.No=function(t,e){return n.aw(t,7),t.o[e]==2&&t.j[e]==2?n.jq(t,e,!1):n.lq(t,e,!1)},n.Oo=function(t,e){var A;return A=t.u[e]&M0,A==0?0:A==r0?2:A==c1?3:4},n.Po=function(t,e,A){var P,r,i,D,u,o,Q,L,w,s,h,b;for(n.aw(t,7),i=d(l.teb,wt,6,t.g,16,1),w=d(l.teb,wt,6,t.g,16,1),b=d(l.Z6,H,6,t.f,15,1),D=0,u=1;u<t.j[e];u++)if(P=t.k[e][u],(t.F[P]&64)!=0){for(Q=0;Q<u;Q++)if(r=t.k[e][Q],(t.F[r]&64)!=0&&(w[P]=!0,w[r]=!0,h=n.up(t,b,t.i[e][u],t.i[e][Q],A-2,null,w),w[P]=!1,w[r]=!1,h!=-1)){for(o=!1,s=d(l.Z6,H,6,h,15,1),n.vp(t,b,s,h),L=0;L<h;L++)i[s[L]]||(i[s[L]]=!0,o=!0);o&&++D}}return D},n.Qo=function(t,e){return t.p&&e<t.f?n._s(t.p,e):0},n.Ro=function(t,e){return e?(n.aw(t,1),n.Rl(t,t.f,t.g,n.Nk)):n.Rl(t,t.q,t.r,n.Nk)},n.So=function(t){var e,A,P,r,i,D,u,o;for(n.aw(t,1),u=d(l.Y6,h0,6,t.f,15,1),P=d(l.Z6,H,6,t.f,15,1),o=0;o<t.f;o++){for(P[0]=o,r=d(l.Z6,H,6,t.f,15,1),r[o]=1,A=0,i=0;A<=i;){for(D=0;D<t.j[P[A]];D++)e=t.i[P[A]][D],r[e]==0&&(r[e]=r[P[A]]+1,P[++i]=e,u[o]+=r[e]-1);++A}u[o]/=i}return u},n.To=function(t,e,A){var P;for(P=0;P<t.i[e].length;P++)if(t.i[e][P]==A)return t.k[e][P];return-1},n.Uo=function(t,e){return t.p&&e<t.g?n.bt(t.p,e):0},n.Vo=function(t,e,A){return t.i[e][A]},n.Wo=function(t,e){return t.j[e]},n.Xo=function(t,e,A){return t.k[e][A]},n.Yo=function(t,e,A){return t.n[e][A]},n.Zo=function(t,e){var A,P;if(A=0,t.K)for(P=0;P<t.j[e];P++)n.Fm(t,t.i[e][P])&&++A;return A},n.$o=function(t,e){return t.e[e]-t.j[e]},n._o=function(t,e,A,P,r){var i,D,u,o;if(D=t.e[e],t.o[e]!=0||e<t.f&&n.kt(t.p,e)||t.j[e]<3||D>4)return!1;for(o=d(l.teb,wt,6,4,16,1),u=0;u<D;u++){if(i=3.9269908169872414-P[u],k.Math.abs(lr-i%k0)>.0872664675116539||(r[u]=3&mt(i/k0),o[r[u]]))return!1;if(o[r[u]]=!0,(r[u]&1)==0){if(t.H[t.k[e][A[u]]]!=1)return!1}else if(!n.Om(t,t.k[e][A[u]],e))return!1}return o[0]&&o[2]},n.ap=function(t,e,A,P,r){var i,D,u,o,Q,L,w,s;if((t.p&&e<t.f?n._s(t.p,e):0)>24||(i=t.e[e],r==null&&(r=d(l.Z6,H,6,i,15,1)),!n._o(t,e,A,P,r)))return 3;for(o=-1,Q=0;Q<i;Q++)if((r[Q]&1)==1){if(D=t.H[t.k[e][A[Q]]],o!=-1&&o!=D)return 3;o=D}return L=k.Math.abs(r[0]-r[1])==2?1:0,u=r[L]-r[L+1],s=k.Math.abs(u)==3^r[L]<r[L+1],w=i==3||(r[3]&1)==1,s^w^o==129?1:2},n.bp=function(t,e,A){var P,r,i,D;for(D=D=d(l.teb,wt,6,t.q,16,1),i=n.cp(t,e,A,D),r=d(l.Z6,H,6,i,15,1),i=0,P=0;P<t.q;P++)D[P]&&(r[i++]=P);return r},n.cp=function(t,e,A,P){var r,i,D,u,o,Q,L;for(n.aw(t,1),P==null&&(P=d(l.teb,wt,6,t.q,16,1)),o=d(l.Z6,H,6,t.q,15,1),o[0]=e,P[e]=!0,D=0,Q=0,u=1;D<=Q;){for(i=A?n.Io(t,o[D]):t.e[o[D]],L=0;L<i;L++)r=t.i[o[D]][L],r<P.length&&!P[r]&&(o[++Q]=r,P[r]=!0,++u);++D}return u},n.dp=function(t,e,A,P){var r,i,D,u,o,Q,L,w,s;for(n.aw(t,1),i=0;i<t.q;i++)e[i]=-1;for(Q=0,r=0;r<t.q;r++)if(e[r]==-1&&(!A||(t.u[r]&n0)!=0)){for(e[r]=Q,L=d(l.Z6,H,6,t.q,15,1),L[0]=r,o=0,w=0;o<=w;){for(u=P?n.Io(t,L[o]):t.e[L[o]],s=0;s<u;s++)D=t.i[L[o]][s],e[D]==-1&&(!A||(t.u[D]&n0)!=0)&&(L[++w]=D,e[D]=Q);++o}++Q}return Q},n.ep=function(t,e,A,P){var r,i,D,u,o,Q,L,w,s;for(n.aw(t,1),i=0;i<t.q;i++)e[i]=-1;for(Q=0,r=0;r<t.q;r++)if(e[r]==-1){for(e[r]=Q,L=d(l.Z6,H,6,t.q,15,1),L[0]=r,o=0,w=0;o<=w;){for(u=P?n.Io(t,L[o]):t.e[L[o]],s=0;s<u;s++)D=t.i[L[o]][s],e[D]==-1&&!A[t.k[L[o]][s]]&&(L[++w]=D,e[D]=Q);++o}++Q}return Q},n.fp=function(t,e){var A;return A=n.lm(t,e),A+n.jm(t,e,A,t.C[e])-n.rp(t,e)},n.gp=function(t,e){var A,P,r,i,D,u;for(i=d(l.Z6,H,6,t.q,15,1),P=0;P<t.q;P++)i[P]=P;r=t.q;do--r;while(r>=0&&e[r]);for(A=0;A<r;A++)if(e[i[A]]){u=i[A],i[A]=i[r],i[r]=u,D=e[A],e[A]=e[r],e[r]=D;do--r;while(e[r])}return i},n.hp=function(t){return n.gp(t,n.Go(t))},n.ip=function(t,e,A){var P,r,i;if(r=n.rp(t,e),r-=n.jm(t,e,r,t.C[e]),A&&(r-=t.e[e]-t.j[e]),i=n.io(t.C[e]),r<=i[0])return-1;for(P=1;P<i.length;P++)if(i[P]>=r)return i[P];return r},n.jp=function(t){var e,A;if(t.K)return 0;for(n.aw(t,1),A=0,e=0;e<t.f;e++)A+=n.kp(t,e);return A},n.kp=function(t,e){var A,P,r,i,D,u,o;if(t.K&&S1(Z(t.B[e],c1),0)||!n.wq(t,e))return 0;if(t.C[e]==0||T._ib(\"*\",t.t==null||t.t[e]==null?null:T.Zib((i=t.t[e],V1.Cmb(),i))))return t.e[e]==0?1:0;for(n.aw(t,1),u=0,r=0;r<t.e[e];r++)u+=t.n[e][r];if(t.K){for(A=1,P=0;P<t.j[e];P++)t.H[t.k[e][P]]==8&&++A;u+=A>>1}if(u-=n.jm(t,e,u,t.C[e]),D=((t.u[e]&se)>>>27)-1,D==-1)for(o=n.io(t.C[e]),D=o[0],P=1;D<u&&P<o.length;P++)D=o[P];return k.Math.max(0,D-u)},n.lp=function(t,e){var A,P,r,i,D;if(!t.K||t.v==null||t.v[e]==null)return n.mp(t,e,t.C[e]);for(D=0,P=t.v[e],r=0,i=P.length;r<i;++r)A=P[r],D=k.Math.max(D,n.mp(t,e,A));return D},n.mp=function(t,e,A){var P,r,i,D,u;if(i=n.rp(t,e),P=n.jm(t,e,i,A),D=((t.u[e]&se)>>>27)-1,D==-1){for(u=n.io(t.C[e]),r=0;r<u.length-1&&i>u[r]+P;)++r;D=u[r]}return D+P-i},n.np=function(t,e){return t.i[e].length-t.e[e]},n.op=function(t){var e,A,P,r;for(n.aw(t,1),r=0,e=0;e<t.q;e++)P=t.A[e]!=0?t.A[e]:n.Mk[t.C[e]],r+=P+n.kp(t,e)*n.Mk[1],t.C[e]>=171&&t.C[e]<=190&&(A=t.e[e],A>2&&(r-=(A-2)*n.Mk[1]));return r},n.pp=function(t,e){var A,P;for(A=t.j[e],P=0;P<t.j[e];P++)t.C[t.i[e][P]]==1&&--A;return A},n.qp=function(t,e){return t.j[e]-n.Zo(t,e)},n.rp=function(t,e){var A,P,r,i,D,u;for(t.Zb(1),D=!1,P=!1,u=0,r=0;r<t.e[e];r++)(!t.K||!n.Fm(t,t.i[e][r]))&&(i=t.n[e][r],u+=i,i>1&&(D=!0),A=t.k[e][r],t.H[A]==8&&(P=!0));return P&&!D&&++u,u},n.sp=function(t,e,A){var P,r,i;for(r=0,i=0;i<t.j[e];i++)P=t.i[e][i],P!=A&&t.j[P]>2&&++r;return r},n.tp=function(t,e){var A,P,r,i,D,u,o,Q,L,w;if(n.po(t.C[e]))return 0;if(t.C[e]==1)return t.j[e]==0?0:n.no(t.C[t.i[e][0]])?-1:1;if(w=t.s[e],o=t.e[e]-n.pp(t,e)+n.kp(t,e),t.C[e]!=1&&t.C[e]!=15&&(n.no(t.C[e])?w+=o:w-=o),t.j[e]==0)return w;for(L=0;L<t.j[e];L++)i=t.i[e][L],A=n.Up(t,t.k[e][L])?1:t.n[e][L],n.no(t.C[e])?n.no(t.C[i])||(w+=A):n.no(t.C[i])?w-=A:t.C[e]!=t.C[i]&&(n.Ts(t.C[e]).a<n.Ts(t.C[i]).a?w+=A:w-=A);if(e<t.f&&n.pt(t.p,e)){for(P=0,r=0,u=0,Q=0;Q<t.j[e];Q++)n.Up(t,t.k[e][Q])&&(D=t.C[t.i[e][Q]],D==6?++r:n.mo(D)?++u:++P);t.C[e]==6?P>1?--w:u>1&&++w:n.Dm(t,e)?P+r>1&&--w:u+r>1&&++w}return w},n.up=function(t,e,A,P,r,i,D){var u,o,Q,L,w,s,h,b,g;if(A==P)return e[0]=A,0;for(t.Zb(1),L=d(l.Z6,H,6,t.q,15,1),Q=d(l.Z6,H,6,t.q,15,1),g=d(l.Z6,H,6,t.q,15,1),Q[0]=A,L[A]=1,o=0,w=0;o<=w&&L[Q[o]]<=r;){for(b=Q[o],s=0;s<t.e[b];s++)if(D==null||D.length<=t.k[b][s]||!D[t.k[b][s]]){if(u=t.i[b][s],u==P){for(h=L[b],e[h]=u,e[--h]=b;h>0;)e[h-1]=g[e[h]],--h;return L[b]}L[u]==0&&(i==null||i.length<=u||!i[u])&&(Q[++w]=u,L[u]=L[b]+1,g[u]=b)}++o}return-1},n.vp=function(t,e,A,P){var r,i;for(n.aw(t,1),r=0;r<P;r++)for(i=0;i<t.e[e[r]];i++)if(t.i[e[r]][i]==e[r+1]){A[r]=t.k[e[r]][i];break}},n.wp=function(t,e,A){var P,r,i,D,u,o;if(e==A)return 0;for(n.aw(t,1),D=d(l.Z6,H,6,t.q,15,1),i=d(l.Z6,H,6,t.q,15,1),i[0]=e,D[e]=1,r=0,u=0;r<=u;){for(o=0;o<t.e[i[r]];o++){if(P=t.i[i[r]][o],P==A)return D[i[r]];D[P]==0&&(i[++u]=P,D[P]=D[i[r]]+1)}++r}return-1},n.xp=function(t,e,A,P,r){var i,D,u,o,Q,L;if(e==A)return 0;for(t.Zb(1),o=d(l.Z6,H,6,t.q,15,1),u=d(l.Z6,H,6,t.q,15,1),u[0]=e,o[e]=1,D=0,Q=0;D<=Q&&o[u[D]]<=P;){for(L=0;L<t.e[u[D]];L++){if(i=t.i[u[D]][L],i==A)return o[u[D]];o[i]==0&&(r==null||r.length<=i||!r[i])&&(u[++Q]=i,o[i]=o[u[D]]+1)}++D}return-1},n.yp=function(t,e){return t.e[e]-t.j[e]+n.kp(t,e)},n.zp=function(t,e){var A,P,r,i,D,u,o,Q,L,w,s,h,b;for(b=d(l.Z6,H,6,16,15,1),A=d(l.X6,Bt,6,16,15,1),i=d(l.X6,Bt,6,2,15,1),P=0,L=0;L<2;L++)for(r=t.D[L][e],w=0;w<t.j[r];w++)if(o=t.k[r][w],o!=e){if(P==4)return 0;u=t.i[r][w],b[P]=16,t.o[u]!=0&&(b[P]+=(t.u[u]&M0)!=0?1:4),(t.F[e]&64)!=0&&(t.F[o]&64)!=0&&(s=n.ht(t.p,e,o),s!=-1&&(b[P]+=n.jt(t.p,s)?64:6)),A[P++]=n.jo(t.J[r].a,t.J[r].b,t.J[u].a,t.J[u].b)}for(i[0]=n.Tl(t,t.D[0][e],t.D[1][e]),i[0]<0?(i[1]=i[0]+t1,D=!1):(i[1]=i[0],i[0]=i[1]-t1,D=!0),h=0,Q=0;Q<P;Q++)A[Q]>i[0]&&A[Q]<i[1]?h-=b[Q]:h+=b[Q];return D?-h:h},n.Ap=function(t){return n.aw(t,7),t.p},n.Bp=function(t){var e,A,P,r,i,D,u,o,Q;for(Q=0,n.aw(t,7),P=0;P<t.g;P++)if(n.am(t,P)==1&&(t.F[P]&64)==0){for(u=!0,D=0;D<2;D++){if(e=t.D[D][P],t.j[e]==1){u=!1;break}if(t.C[e]==7&&!(e<t.f&&n.kt(t.p,e))){for(A=t.D[1-D][P],o=0;o<t.j[A];o++)if(r=t.i[A][o],i=t.k[A][o],i!=P&&n.am(t,i)>1&&!(r<t.f&&n.kt(t.p,r))&&n.Dm(t,r)){u=!1;break}}}u&&!n.$p(t,P)&&++Q}return Q},n.Cp=function(t,e,A){var P,r,i,D,u,o;for(r=0,i=0;i<t.j[e];i++)if(P=t.i[e][i],P!=A){for(D=0,u=0;u<t.j[P];u++)o=t.i[P][u],o!=e&&n.Qp(t,t.k[P][u])&&t.j[o]>2&&++D;D==2&&++r}return r},n.Dp=function(t,e){var A,P,r,i;for(A=t.e[e],i=d(l.Z6,H,6,A,15,1),r=0;r<A;r++)i[r]=(t.i[e][r]<<16)+r;for(c.lzb(i,c.Szb(y0(y.lrb.prototype.jd,y.lrb,[]))),P=0;P<A;P++)i[P]&=r1;return i},n.Ep=function(t,e){var A,P;if(n.aw(t,1),t.j[e]==2&&t.n[e][0]==2&&t.n[e][1]==2){for(A=0;A<2;A++)for(P=0;P<t.e[t.i[e][A]];P++)if(n.Om(t,t.k[t.i[e][A]][P],t.i[e][A]))return t.k[t.i[e][A]][P]}else for(A=0;A<t.e[e];A++)if(n.Om(t,t.k[e][A],e))return t.k[e][A];return-1},n.Fp=function(t,e,A){return n.am(t,e)!=1?0:16-t.e[A]+16*k.Math.max(0,k.Math.min(9,t.p&&e<t.g?n.bt(t.p,e):0)-2)+((t.H[e]&384)==0||t.D[0][e]!=A?Ge:0)+((t.u[A]&3)==0?J1:0)+(t.C[A]==1?c1:0)+(t.e[A]==1?r0:0)+((t.F[e]&64)!=0?0:512)+(t.C[A]!=6?256:0)},n.Gp=function(t,e,A,P,r,i){var D,u,o,Q,L;for(n.aw(t,1),r&&(n.fl(r),r.d=null,r.K=!1),o=d(l.Z6,H,6,t.q,15,1),P==null?P=d(l.teb,wt,6,t.q,16,1):y.Nqb(P,P.length),o[0]=e,o[1]=A,P[e]=!0,P[A]=!0,u=1,Q=1;u<=Q;){for(L=0;L<t.e[o[u]];L++){if(D=t.i[o[u]][L],D==e&&u!=1)return-1;P[D]||(P[D]=!0,o[++Q]=D)}++u}return r&&(i==null&&(i=d(l.Z6,H,6,P.length,15,1)),n.yo(t,r,P,!1,i),n.bl(r,i[e],0,0,-1,0)),P[e]=!1,Q},n.Hp=function(t,e,A){var P,r,i,D,u,o;for(n.aw(t,1),i=d(l.Z6,H,6,t.f,15,1),o=d(l.teb,wt,6,t.f,16,1),i[0]=e,i[1]=A,o[e]=!0,o[A]=!0,r=1,D=1;r<=D;){for(u=0;u<t.j[i[r]];u++){if(P=t.i[i[r]][u],P==e&&r!=1)return-1;o[P]||(o[P]=!0,i[++D]=P)}++r}return D},n.Ip=function(t,e,A){var P,r,i,D,u,o,Q,L,w,s,h;if(n.am(t,A)!=2&&!(A<t.g&&n.lt(t.p,A))||(h=t.F[A]&3,h!=1&&h!=2))return-1;for(o=0;o<2;o++){for(P=t.D[o][A],r=t.D[1-o][A],s=-1,D=!1,L=0;L<t.j[P];L++)i=t.i[P][L],i!=r&&(i==e?D=!0:s=i);if(D){for(w=-1,u=-1,Q=0;Q<t.j[r];Q++)i=t.i[r][Q],i!=P&&(w==-1?w=i:i>w?u=i:(u=w,w=i));return t.j[P]==2?t.j[r]==2?h==2?w:-1:h==2?w:u:t.j[r]==2?h==2^e<s?-1:w:h==2^e<s?u:w}}return-1},n.Jp=function(t){var e,A,P,r,i,D,u,o,Q,L;D=n.Go(t),o=t.q;do--o;while(o>=0&&D[o]);for(e=0;e<o;e++)if(D[e]){n.Vn(t,e,o),L=D[e],D[e]=D[o],D[o]=L;do--o;while(D[o])}if(t.f=o+1,t.q==t.f){t.g=t.r;return}for(u=d(l.teb,wt,6,t.r,16,1),i=0;i<t.r;i++)A=t.D[0][i],P=t.D[1][i],(D[A]||D[P])&&(u[i]=!0);Q=t.r;do--Q;while(Q>=0&&u[Q]);for(r=0;r<Q;r++)if(u[r]){n.Wn(t,r,Q),u[r]=!1;do--Q;while(u[Q])}t.g=Q+1},n.Kp=function(t,e){var A;for(A=0;A<t.j[e];A++)if(t.s[t.i[e][A]]<0)return!0;return!1},n.Lp=function(t,e){var A;for(A=0;A<t.j[e];A++)if(t.s[t.i[e][A]]>0)return!0;return!1},n.Mp=function(t,e){var A;return A=t.C[e],A==3||A==11||A==19||A==37||A==55||A==87},n.Np=function(t,e){return(t.u[e]&J1)!=0},n.Op=function(t,e){var A,P,r,i,D,u;for(n.aw(t,1),D=0;D<2;D++)if(A=t.D[D][e],t.C[A]==7){for(P=t.D[1-D][e],u=0;u<t.j[P];u++)if(r=t.i[P][u],i=t.k[P][u],(t.C[r]==7||t.C[r]==8||t.C[r]==16)&&n.am(t,i)>=2)return!0}return!1},n.Pp=function(t,e){return e<t.f&&n.kt(t.p,e)},n.Qp=function(t,e){return e<t.g&&n.lt(t.p,e)},n.Rp=function(t,e){var A,P,r,i,D,u;return t.H[e]!=1||e<t.g&&n.lt(t.p,e)||(t.F[e]&64)!=0&&(t.p&&e<t.g?n.bt(t.p,e):0)<7||(A=t.D[0][e],!(A<t.f&&n.kt(t.p,A))||(t.p&&A<t.f?n._s(t.p,A):0)<5)||(P=t.D[1][e],!(P<t.f&&n.kt(t.p,P))||(t.p&&P<t.f?n._s(t.p,P):0)<5)?!1:(r=n.sp(t,A,P),i=n.sp(t,P,A),(t.p&&A<t.f?n._s(t.p,A):0)>5&&(t.p&&P<t.f?n._s(t.p,P):0)>5?r+i>2:(D=n.Cp(t,A,P),u=n.Cp(t,P,A),r==2&&u>=1||i==2&&D>=1||D==2&&(i>=1||u>=1)||u==2&&(r>=1||D>=1)))},n.Sp=function(t,e){return t.o[e]==2&&t.j[e]==2&&t.n[e][0]==2&&t.n[e][1]==2&&t.C[e]<=7},n.Tp=function(t,e){var A;return A=t.C[e],A==8||A==16||A==34||A==52||A==84},n.Up=function(t,e){return e<t.g&&(n.qt(t.p,e)||t.H[e]==8)},n.Vp=function(t,e){var A;return A=t.C[e],A==4||A==12||A==20||A==38||A==56||A==88},n.Wp=function(t,e,A){var P,r,i,D,u,o,Q,L,w,s,h,b,g;if(t.C[e]!=7||t.j[e]==4)return!1;if(e<t.f&&n.kt(t.p,e)||t.o[e]!=0||jt(Z(t.B[e],Ne),0))return!0;if(t.s[e]==1)return!1;for(o=0;o<t.j[e];o++)if(n.Uo(t,t.k[e][o])==3)return!1;for(D=0,Q=0;Q<t.j[e];Q++)t.n[e][Q]==1&&(P=t.C[t.i[e][Q]],(P==8||P==9||P==17)&&++D);if(D==0){for(u=0;u<t.j[e];u++)if(r=t.i[e][u],t.o[r]!=0){if(r<t.f&&n.kt(t.p,r)){if((t.p&&r<t.f?n._s(t.p,r):0)>=5){for(g=0,s=0;s<t.j[r];s++)b=t.i[r][s],b!=e&&n.pp(t,b)>=3&&++g;if(h=n.pp(t,e),g==2&&h>=2||g==1&&h==3)continue}return!A||!n.aq(t,e)}for(w=0;w<t.j[r];w++)if(t.n[r][w]==2||n.Qp(t,t.k[r][w]))return!A||!n.aq(t,e)}}if(D<2)for(u=0;u<t.j[e];u++){for(r=t.i[e][u],L=!1,i=!1,w=0;w<t.j[r];w++)t.i[r][w]!=e&&(t.n[r][w]!=1&&(t.C[t.i[r][w]]==7||t.C[t.i[r][w]]==8||t.C[t.i[r][w]]==16)&&(L=!0),t.n[r][w]==1&&t.C[t.i[r][w]]==7&&(i=!0));if(L&&(!i||D==0))return!A||!n.aq(t,e)}return!1},n.Xp=function(t,e){var A;return A=t.C[e],A==9||A==17||A==35||A==53||A==85},n.Yp=function(t,e){return e<t.f&&n.rt(t.p,e)},n.Zp=function(t,e){var A;return A=t.C[e],A==7||A==15||A==33},n.$p=function(t,e){var A,P,r,i,D,u;if(n.am(t,e)!=1)return!1;for(i=0;i<2;i++){for(A=t.D[i][e],u=t.D[1-i][e];t.o[A]==2&&t.j[A]==2&&t.C[A]<10;)for(D=0;D<2;D++)if(P=t.i[A][D],P!=u){if(t.j[P]==1||(r=t.k[A][D],n.am(t,r)==1&&r<e))return!0;u=A,A=P;break}if(t.j[A]==1)return!0}return!1},n._p=function(t,e,A,P,r){var i,D,u,o,Q,L,w,s,h,b,g,B,m,S;if(s=d(l.teb,wt,6,t.g,16,1),s[r]=!0,h=d(l.Z6,H,6,11,15,1),b=n.up(t,h,P,e,10,null,s),b==-1)return!1;for(D=1;!n.mt(t.p,A,h[D]);)++D;if(i=b-D,u=h[D],S=n.gt(t.p,A),S==6&&i==2&&D==3&&n.Oo(t,h[1])>=3){for(m=n.dt(t.p,A),w=0;w<6;w++)if(e==m[w]){if(B=n.yt(t.p,A,u==m[n.yt(t.p,A,w+2)]?w-2:w+2),g=m[B],L=t.u[g]&M0,(L==0?0:L==r0?2:L==c1?3:4)>=3&&n.xp(t,h[1],g,2,null)==2)return!0;break}}if(o=t.o[u]==1||u<t.f&&n.kt(t.p,u)||n.Wp(t,u,!1),Q=!o&&t.C[u]==7&&t.s[u]!=1,i==1)return!o&&!Q&&S<=4&&D<=3;switch(S){case 4:if(!o&&!Q&&D<=4)return!0;break;case 5:if(Q){if(D<=3)return!0}else if(!o&&D<=4)return!0;break;case 6:if(i==2){if(o){if(D<=4)return!0}else if(!Q&&D<=3)return!0}else if(i==3){if(o){if(D<=6)return!0}else if(D<=4)return!0}break;case 7:if(i==3&&D<=3)return!0}return!1},n.aq=function(t,e){var A,P,r,i,D;if(e<t.f&&n.kt(t.p,e)||t.o[e]!=0||jt(Z(t.B[e],Ne),0)||(P=t.u[e]&M0,(P==0?0:P==r0?2:P==c1?3:4)<3)||(D=t.p&&e<t.f?n._s(t.p,e):0,D>7))return!1;for(i=0;i<t.p.i.a.length&&!(n.gt(t.p,i)==D&&n.mt(t.p,i,e));)++i;if(i>=r0&&i==t.p.i.a.length)return!1;for(r=0;r<t.j[e];r++)if(A=t.k[e][r],!n.nt(t.p,i,A)&&n._p(t,e,i,t.i[e][r],A))return!0;return!1},n.bq=function(t,e){return(t.u[e]&M0)!=0},n.cq=function(t,e){return(t.F[e]&64)!=0},n.dq=function(t,e){return t.C[e]==1&&t.A[e]==0&&t.s[e]==0&&(t.u[e]&se)==0&&(t.t==null||t.t[e]==null)},n.eq=function(t,e){return(t.u[e]&8)!=0},n.fq=function(t,e){return(t.F[e]&128)!=0},n.gq=function(t,e){return(t.u[e]&l0)!=0},n.hq=function(t){var e,A,P,r,i,D,u,o,Q,L,w;for(n.aw(t,1),n.iq(t),Q=!1,A=0;A<t.f;A++)if(t.C[A]==7&&t.s[A]==0){if(w=n.rp(t,A),w==4){for(L=0;L<t.j[A];L++)if(u=t.i[A][L],t.n[A][L]==1&&t.C[u]==8&&t.j[u]==1&&t.s[u]==0){Q=!0,++t.s[A],--t.s[u];break}}else if(w==5)for(L=0;L<t.j[A];L++){if(u=t.i[A][L],o=t.k[A][L],t.n[A][L]==2&&t.C[u]==8){Q=!0,++t.s[A],--t.s[u],t.H[o]=1;break}if(t.n[A][L]==3&&t.C[u]==7){Q=!0,++t.s[A],--t.s[u],t.H[o]=2;break}}}for(D=!1,i=0;i<t.g;i++)for(L=0;L<2;L++)if(n.Dm(t,t.D[L][i])){e=t.D[1-L][i],r=t.C[e],(r==3||r==11||r==19||r==37||r==55||r==87||(P=t.C[e],P==4||P==12||P==20||P==38||P==56||P==88))&&(n.am(t,i)==1?(++t.s[e],--t.s[t.D[L][i]],t.H[i]=512,D=!0):t.H[i]==16&&(t.H[i]=512,D=!0));break}return D&&(n.gl(t),Q=!0),Q&&(t.T=0),Q},n.iq=function(t){var e;for(e=0;e<t.g;e++)if(t.H[e]==8)return n.Ee(new n.Se(t),null,!1);return!1},n.jq=function(t,e,A){var P,r,i,D,u,o,Q,L;for(Q=-1,r=0,u=0;u<2;u++)for(P=t.i[e][u],o=0;o<t.e[P];o++)i=t.i[P][o],i!=e&&(D=t.k[P][o],L=n.Fp(t,D,i),r<L&&(!A||!(t.H[D]==257||t.H[D]==129))&&(r=L,Q=D));return Q},n.kq=function(t,e){var A,P,r,i,D,u,o,Q;for(o=-1,P=0,D=0;D<2;D++)for(A=t.D[D][e],u=0;u<t.e[A];u++)r=t.i[A][u],r!=t.D[1-D][e]&&(i=t.k[A][u],Q=n.Fp(t,i,r),P<Q&&(P=Q,o=i));return o},n.lq=function(t,e,A){var P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S;for(P=t.e[e],r=d(l.X6,Bt,6,P,15,1),h=0;h<P;h++)r[h]=n.Tl(t,e,t.i[e][h]);for(b=1;b<P;b++)for(g=0;g<b;g++)if(i=k.Math.abs(n.ko(r[b],r[g])),i<.08||i>O8){for(D=0,u=0,B=0;B<P;B++)B!=b&&B!=g&&(D+=k.Math.abs(lt.v3(r[b],r[B])),u+=k.Math.abs(lt.v3(r[g],r[B])));if(Q=D<u?t.k[e][b]:t.k[e][g],n.am(t,Q)==1&&(!A||!(t.H[Q]==257||t.H[Q]==129)))return Q}for(m=-1,o=0,s=0;s<P;s++)L=t.i[e][s],w=t.k[e][s],S=n.Fp(t,w,L),o<S&&(!A||!(t.H[w]==257||t.H[w]==129))&&(o=S,m=w);return m},n.mq=function(t,e){var A,P,r,i,D,u;for(n.aw(t,e?15:1),t.q=t.f,t.r=t.g,u=d(l.teb,wt,6,t.f,16,1),r=0;r<t.f;r++)t.e[r]!=t.j[r]&&(A=n.ip(t,r,!1),u[r]=t.e[r]==t.j[r]+1&&n.Nm(t,t.k[r][t.j[r]]),t.e[r]=t.j[r],A!=-1&&(D=n.ip(t,r,!0),A!=D&&(i=((t.u[r]&se)>>>27)-1,(i==-1||i<A)&&n.cn(t,r,A))));if(e)for(P=0;P<t.f;P++)u[P]&&n.sq(t,P);t.T=0},n.nq=function(t,e,A,P){var r,i,D,u;for(n.aw(e,1),i=0;i<A;i++)P[i]!=-1&&t.C[i]!=1&&t.e[i]!=n.Ho(e,P[i])&&(r=n.ip(t,i,!1),r!=-1&&(u=n.ip(e,P[i],!1),r!=u&&(D=n.vl(e,P[i]),(D==-1||D<r)&&n.cn(e,P[i],r))))},n.oq=function(t,e,A,P,r){var i,D,u,o,Q,L,w,s,h,b,g;for(u=0;u<A;u++)if(P[u]!=-1&&t.e[u]>3&&(t.u[u]&H0)!=0){for(g=0,s=-1,w=-1,L=0;L<t.e[u];L++)r[t.k[u][L]]!=-1?++g:t.n[u][L]==1&&n.Nm(t,t.k[u][L])&&t.D[0][t.k[u][L]]==u&&(s=t.k[u][L],w=t.i[u][L]);if(s!=-1&&g>=3){for(i=n.jo(t.J[u].a,t.J[u].b,t.J[w].a,t.J[w].b),h=10,b=-1,Q=0;Q<t.e[u];Q++)t.n[u][Q]==1&&(!n.Nm(t,t.k[u][Q])||t.D[0][t.k[u][Q]]==u)&&r[t.k[u][Q]]!=-1&&(D=k.Math.abs(n.ko(i,n.Tl(t,u,t.i[u][Q]))),h>D&&(h=D,b=t.k[u][Q]));b!=-1&&(o=r[b],n.In(e,o,t.H[b]==257?129:257),t.D[0][b]!=u&&(n.zn(e,1,o,P[t.D[0][b]]),n.zn(e,0,o,P[u])))}}},n.pq=function(t,e){var A,P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S,p,M,z,q,x;if(t.j[e]!=2||t.n[e][0]!=2||t.n[e][1]!=2||t.j[t.i[e][0]]<2||t.j[t.i[e][1]]<2||t.o[t.i[e][0]]!=1||t.o[t.i[e][1]]!=1){n.qn(t,e,0,!1);return}for(z=-1,M=-1,p=-1,B=-1,i=0,w=0;w<2;w++)for(P=t.i[e][w],b=0;b<t.e[P];b++)D=t.i[P][b],D!=e&&(u=t.k[P][b],q=n.Fp(t,u,D),i<q&&(i=q,M=D,z=u,p=P,B=t.i[e][1-w]));if(M!=-1){for(s=0;s<2;s++)for(P=t.i[e][s],b=0;b<t.e[P];b++)D=t.i[P][b],u=t.k[P][b],D!=e&&t.D[0][u]==P&&(t.H[u]=1);for(t.D[1][z]!=M&&(t.D[0][z]=t.D[1][z],t.D[1][z]=M),o=Mt,h=0;h<t.j[p];h++)D=t.i[p][h],D!=e&&o>D&&(o=D);for(m=d(l.Z6,H,6,2,15,1),S=0,L=0;L<t.j[B];L++)D=t.i[B][L],D!=e&&(m[S++]=D);A=n.jo(t.J[e].a,t.J[e].b,t.J[B].a,t.J[B].b),r=0,S==2?(m[0]>m[1]&&(x=m[0],m[0]=m[1],m[1]=x),Q=n.ko(A,n.Tl(t,B,m[0])),g=n.ko(A,n.Tl(t,B,m[1])),r=Q-g):r=n.ko(A,n.Tl(t,B,m[0])),r<0^(t.u[e]&3)==1^o==M?t.H[z]=257:t.H[z]=129}},n.qq=function(t,e,A,P){var r,i,D,u,o,Q;if(r=t.e[e],u=d(l.Z6,H,6,r,15,1),Q=n.ap(t,e,A,P,u),Q==3)return!1;for(D=(t.u[e]&3)==Q?257:129,o=0;o<r;o++)(u[o]&1)==1&&(i=t.k[e][A[o]],t.H[i]=D,t.D[0][i]!=e&&(t.D[1][i]=t.D[0][i],t.D[0][i]=e));return!0},n.rq=function(t,e){t.T|=248&(8|e)},n.sq=function(t,e){var A,P,r,i,D,u,o,Q,L,w,s,h,b,g,B;if(n.xo(t,e),!((t.u[e]&3)==0||(t.u[e]&3)==3)){if(t.o[e]==2&&t.j[e]==2){n.pq(t,e);return}if(t.j[e]<3||t.j[e]>4){n.qn(t,e,0,!1);return}for(A=t.e[e],b=!1,D=0;D<A;D++)if(n.am(t,t.k[e][D])==1){b=!0;break}if(b){for(g=n.Dp(t,e),P=d(l.X6,Bt,6,A,15,1),u=0;u<A;u++)P[u]=n.Tl(t,t.i[e][g[u]],e);for(o=0;o<A;o++)t.D[0][t.k[e][o]]==e&&n.am(t,t.k[e][o])==1&&(t.H[t.k[e][o]]=1);if(!((t.p&&e<t.f?n._s(t.p,e):0)<=24&&n.qq(t,e,g,P))&&(s=n.lq(t,e,!0),s!=-1)){for(t.D[0][s]!=e&&(t.D[1][s]=t.D[0][s],t.D[0][s]=e),h=-1,Q=0;Q<A;Q++)if(s==t.k[e][g[Q]]){h=Q;break}for(B=v(F(l.Z6,2),M1,7,0,[v(F(l.Z6,1),H,6,15,[2,1,2,1]),v(F(l.Z6,1),H,6,15,[1,2,2,1]),v(F(l.Z6,1),H,6,15,[1,1,2,2]),v(F(l.Z6,1),H,6,15,[2,1,1,2]),v(F(l.Z6,1),H,6,15,[2,2,1,1]),v(F(l.Z6,1),H,6,15,[1,2,1,2])]),i=1;i<A;i++)P[i]<P[0]&&(P[i]+=G1);if(A==3){switch(L=!1,h){case 0:L=P[1]<P[2]&&P[2]-P[1]<t1||P[1]>P[2]&&P[1]-P[2]>t1;break;case 1:L=P[2]-P[0]>t1;break;case 2:L=P[1]-P[0]<t1}r=(t.u[e]&3)==1^L?257:129}else w=0,P[1]<=P[2]&&P[2]<=P[3]?w=0:P[1]<=P[3]&&P[3]<=P[2]?w=1:P[2]<=P[1]&&P[1]<=P[3]?w=2:P[2]<=P[3]&&P[3]<=P[1]?w=3:P[3]<=P[1]&&P[1]<=P[2]?w=4:P[3]<=P[2]&&P[2]<=P[1]&&(w=5),r=(t.u[e]&3)==1^B[w][h]==1?129:257;t.H[s]=r}}}},n.tq=function(t,e){var A,P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S,p,M,z,q,x;if(!((t.F[e]&3)==0||(t.F[e]&3)==3||!n.Rp(t,e))){for(z=-1,p=-1,M=-1,S=-1,r=0,w=0;w<2;w++)for(P=t.D[w][e],b=0;b<t.e[P];b++)u=t.k[P][b],u!=e&&n.am(t,u)==1&&(D=t.i[P][b],q=n.Fp(t,u,D),r<q&&(r=q,p=D,z=u,M=P,S=t.D[1-w][e]));if(p!=-1){for(s=0;s<2;s++)for(b=0;b<t.e[t.D[s][e]];b++)u=t.k[t.D[s][e]][b],u!=e&&n.am(t,u)==1&&(t.H[u]=1);for(t.D[1][z]!=p&&(t.D[0][z]=t.D[1][z],t.D[1][z]=p),o=Mt,h=0;h<t.j[M];h++)D=t.i[M][h],t.k[M][h]!=e&&o>D&&(o=D);for(B=d(l.Z6,H,6,2,15,1),m=0,L=0;L<t.j[S];L++)t.k[S][L]!=e&&(B[m++]=t.i[S][L]);i=n.jo(t.J[M].a,t.J[M].b,t.J[S].a,t.J[S].b),A=0,m==2?(B[0]>B[1]&&(x=B[0],B[0]=B[1],B[1]=x),Q=n.ko(i,n.Tl(t,S,B[0])),g=n.ko(i,n.Tl(t,S,B[1])),A=Q-g):A=n.ko(i,n.Tl(t,S,B[0])),A<0^(t.F[e]&3)==2^o==p?t.H[z]=257:t.H[z]=129}}},n.uq=function(t){var e,A,P,r;for(n.aw(t,7),P=0;P<t.g;P++)(t.H[P]==257||t.H[P]==129)&&(t.H[P]=1);for(e=0;e<t.f;e++)n.sq(t,e);for(r=0;r<t.g;r++)n.tq(t,r);for(A=0;A<t.g;A++)t.H[A]==2&&(t.F[A]&3)==3&&(t.H[A]=386)},n.vq=function(t,e){var A,P,r,i,D,u,o,Q,L,w;if(u=d(l.Z6,H,6,t.q,15,1),D=n.dp(t,u,!1,e),D<=1)return null;for(o=d(l.Z6,H,6,D,15,1),P=0;P<t.f;P++)++o[u[P]];for(L=0,w=o[0],Q=1;Q<D;Q++)w<o[Q]&&(w=o[Q],L=Q);for(A=0;A<t.q;A++)u[A]!=L&&(t.C[A]=-1);for(i=0;i<t.r;i++)(!e&&t.H[i]==16||u[t.D[0][i]]!=L)&&(t.H[i]=512);r=n.gl(t),t.T=0;try{n.vo(t,!0,!0)}catch(s){if(s=C1(s),!Yt(s,19))throw Qt(s)}return r},n.wq=function(t,e){return(t.u[e]&se)!=0?!0:t.C[e]<=1?!1:n.Jm(t,e)||t.C[e]==13||t.C[e]>=171},n.xq=function(t){var e,A,P,r,i,D,u,o,Q,L;for(i=n.Rl(t,t.q,t.r,n.Nk),D=i*i/16,P=1;P<t.q;P++)for(r=0;r<P;r++)if(o=t.J[r].a-t.J[P].a,Q=t.J[r].b-t.J[P].b,L=t.J[r].c-t.J[P].c,o*o+Q*Q+L*L<D)throw Qt(new T.bC(\"The distance between two atoms is too close.\"));for(n.aw(t,1),e=0,A=0;A<t.f;A++){if(n.rp(t,A)>(u=n.lm(t,A),u+n.jm(t,A,u,t.C[A])))throw Qt(new T.bC(\"atom valence exceeded\"));e+=t.s[A]}if(e!=0)throw Qt(new T.bC(\"unbalanced atom charge\"))},n.yq=function(t){var e,A;if(t.K)for(n.aw(t,7),e=0;e<t.f;e++)(t.u[e]&M0)!=0&&(S1(Z(t.B[e],120),8)&&(t.B[e]=Z(t.B[e],-9)),t.B[e]=Z(t.B[e],-4294967297)),e<t.f&&n.kt(t.p,e)?t.B[e]=Z(t.B[e],{l:4194297,m:_1,h:1048571}):jt(Z(t.B[e],2),0)&&(t.B[e]=Z(t.B[e],-5)),(jt(Z(t.B[e],ke),0)||jt(Z(t.B[e],Me),0)&&S1(Z(t.B[e],le),0))&&S1(Z(t.B[e],120),8)&&(t.B[e]=Z(t.B[e],-9)),t.s[e]!=0&&(t.B[e]=Z(t.B[e],-234881025)),n.rp(t,e)==(A=n.lm(t,e),A+n.jm(t,e,A,t.C[e]))&&(t.B[e]=Z(t.B[e],-4063233),t.B[e]=Z(t.B[e],-0xf8000000001),t.B[e]=Z(t.B[e],-1921),t.B[e]=Z(t.B[e],-114689)),jt(Z(t.B[e],P0),0)&&t.w[e]!=0&&n.Ym(t,t.w[e])},n.zq=function(t){var e,A,P;if(t.K)for(n.aw(t,7),e=0;e<t.g;e++)P=Pn(t.G[e]&127),(e<t.g&&(n.qt(t.p,e)||t.H[e]==8))&(t.G[e]&8)!=0&&(t.G[e]&=-9,--P),P!=0&&(A=t.H[e]&127,A==1?t.G[e]|=1:A==2?t.G[e]|=2:A==4?t.G[e]|=4:A==32?t.G[e]|=32:A==64?t.G[e]|=64:A==16?t.G[e]|=16:A==8&&(t.G[e]|=8))},n.Aq=function(t,e,A){var P;return P=n.Yn(t,e,A),P&&A==386&&(n.aw(t,7),P=P&(t.F[e]&128)==0),P},n.Bq=function(){n._n.call(this)},n.Cq=function(t,e){n.ao.call(this,t,e)},n.Dq=function(t){n.ao.call(this,t?t.M:256,t?t.N:256),t&&n.kl(t,this)},G(116,89,{116:1,89:1,4:1}),U.Zb=function(t){n.Ao(this,t)},U.Yb=function(t){return n.Up(this,t)},U.f=0,U.g=0,l.y7=O(116),n.Gq=function(t,e){return k.Math.pow(10,k.Math.log(2e3)*k.Math.LOG10E*t/(e-1)-1)},n.Hq=function(t,e){var A,P;for(A=e,P=0;e!=0;)t.d==0&&(t.f=(t.c[++t.e]&63)<<11,t.d=6),P|=(z1&t.f)>>16-A+e,t.f<<=1,--e,--t.d;return P},n.Iq=function(t,e,A){t.d=6,t.e=A,t.c=e,t.f=(e[t.e]&63)<<11},n.Jq=function(t,e){var A,P,r,i;return P=e/2|0,r=t>=P,r&&(t-=P),i=e/32,A=i*t/(P-t),r?-A:A},n.Kq=function(t){var e,A,P,r;if(t.g.K)for(e=0;e<t.g.r;e++)P=n.cm(t.g,e),(P&127)!=0&&(A=-1,r=0,(P&16)!=0&&(A=16,++r),(P&64)!=0&&(A=64,++r),(P&32)!=0&&(A=32,++r),(P&4)!=0&&(A=4,++r),(P&2)!=0&&(A=2,++r),(P&8)!=0&&(A=8,++r),(P&1)!=0&&(A=1,++r),A!=-1&&(n.In(t.g,e,A),r==1&&n.Hn(t.g,e,127,!1)))},n.Lq=function(t,e){var A;return e==null||c.Szb(e).length==0?null:n.Nq(t,c.szb((A=e,V1.Cmb(),A)))},n.Mq=function(t,e,A){var P,r;return e==null?null:n.Oq(t,c.szb((r=e,V1.Cmb(),r)),A==null?null:c.szb((P=A,P)),0)},n.Nq=function(t,e){var A;if(e==null||e.length==0)return null;for(A=2;A<e.length-2;A++)if(e[A]==32)return n.Oq(t,e,e,A+1);return n.Oq(t,e,null,0)},n.Oq=function(t,e,A,P){var r,i,D,u,o;return e==null?null:(n.Iq(t,e,0),r=n.Hq(t,4),u=n.Hq(t,4),r>8&&(r=u),i=n.Hq(t,r),D=n.Hq(t,u),o=new n.tw(i,D),n.Rq(t,o,e,A,P),o)},n.Pq=function(t,e,A){var P,r,i,D;if(A==null||c.Szb(A).length==0){n.Qq(t,e,null,null);return}P=T.gjb(A,X1(32)),P>0&&P<c.Szb(A).length-1?n.Qq(t,e,c.szb((i=(c.Mzb(0,P,c.Szb(A).length),c.Szb(A).substr(0,P)),V1.Cmb(),i)),c.szb((D=(c.Nzb(P+1,c.Szb(A).length+1),c.Szb(A).substr(P+1)),D))):n.Qq(t,e,c.szb((r=A,V1.Cmb(),r)),null)},n.Qq=function(t,e,A,P){if(A==null||A.length==0){n.fl(e),e.d=null;return}n.Rq(t,e,A,P,0)},n.Rq=function(t,e,A,P,r){var i,D,u,o,Q,L,w,s,h,b,g,B,m,S,p,M,z,q,x,J,E,N,ft,Lt,ot,st,ut,rt,Ut,ht,it,bt,ct,$t,Ft,Rt,Et,Nt,It,vt,kt,L1,f1,St,Xt,k1,qt,P1,E1,y1,o1,I1,O1,F0,Z1,l1,f0,w0,d0,Ce,be,te,ee,p0,Re,O0,C0,Ke,Bn,dt,_t,ce,kn,jn,mn,r8,i8,f8,D8,u8,o8,l8,Q8,VP,qP,L8,U8,y8,w8,s8,T8,R0,h8,b8,c8,g8,d8,B8,k8,j8,m8,F8,ue,v8,rn,p8,Wn,tu,eu,nu,Au,Pu,at,C8,ru,iu,fu,Ye,Du,oe,_n,IP,RA,uu,ne,EP,ou,SA,lu,HA,Qu,MA;if(n.fl(e),e.d=null,!(A==null||0>=A.length)){if(t.g=e,EP=8,P!=null&&(r<0||r>=P.length)&&(P=null),n.Iq(t,A,0),u=n.Hq(t,4),x=n.Hq(t,4),u>8&&(EP=u,u=x),u==0){n.Kn(t.g,n.Hq(t,1)==1);return}for(o=n.Hq(t,u),Q=n.Hq(t,x),Pu=n.Hq(t,u),fu=n.Hq(t,u),ru=n.Hq(t,u),it=n.Hq(t,u),h=0;h<o;h++)n.Rk(t.g,6);for(w0=0;w0<Pu;w0++)n.yn(t.g,n.Hq(t,u),7);for(d0=0;d0<fu;d0++)n.yn(t.g,n.Hq(t,u),8);for(dt=0;dt<ru;dt++)n.yn(t.g,n.Hq(t,u),n.Hq(t,8));for(o8=0;o8<it;o8++)n.en(t.g,n.Hq(t,u),n.Hq(t,4)-8);for(bt=1+Q-o,vt=n.Hq(t,4),q=0,n.vn(t.g,0,0),n.wn(t.g,0,0),n.xn(t.g,0,0),kt=P!=null&&P[r]>=39,ne=0,SA=0,HA=0,MA=0,Rt=!1,Et=!1,kt&&(P.length>2*o-2&&P[2*o-2]==39||P.length>3*o-3&&P[3*o-3]==39?(Et=!0,Rt=P.length==3*o-3+9,ue=Rt?3*o-3:2*o-2,z=86*(P[ue+1]-40)+P[ue+2]-40,ne=k.Math.pow(10,z/2e3-1),ue+=2,ou=86*(P[ue+1]-40)+P[ue+2]-40,SA=k.Math.pow(10,ou/1500-1),ue+=2,lu=86*(P[ue+1]-40)+P[ue+2]-40,HA=k.Math.pow(10,lu/1500-1),Rt&&(ue+=2,Qu=86*(P[ue+1]-40)+P[ue+2]-40,MA=k.Math.pow(10,Qu/1500-1))):Rt=P.length==3*o-3),t.$b()&&Rt&&(P=null,kt=!1),R0=1;R0<o;R0++){if(St=n.Hq(t,vt),St==0){kt&&(n.vn(t.g,R0,n.Ll(t.g,0)+8*(P[R0*2-2]-83)),n.wn(t.g,R0,n.Ml(t.g,0)+8*(P[R0*2-1]-83)),Rt&&n.xn(t.g,R0,n.Nl(t.g,0)+8*(P[2*o-3+R0]-83))),++bt;continue}q+=St-1,kt&&(n.vn(t.g,R0,n.Ll(t.g,q)+P[R0*2-2]-83),n.wn(t.g,R0,n.Ml(t.g,q)+P[R0*2-1]-83),Rt&&n.xn(t.g,R0,n.Nl(t.g,q)+(P[2*o-3+R0]-83))),n.Tk(t.g,q,R0,1)}for(B8=0;B8<bt;B8++)n.Tk(t.g,n.Hq(t,u),n.Hq(t,u),1);for(v8=d(l.teb,wt,6,Q,16,1),ot=0;ot<Q;ot++)switch(st=n.Hq(t,2),st){case 0:v8[ot]=!0;break;case 2:n.In(t.g,ot,2);break;case 3:n.In(t.g,ot,4)}for(D=n.Hq(t,u),k8=0;k8<D;k8++)if(s=n.Hq(t,u),EP==8)Ye=n.Hq(t,2),Ye==3?(n.kn(t.g,s,1,0),n.qn(t.g,s,1,!1)):n.qn(t.g,s,Ye,!1);else switch(Ye=n.Hq(t,3),Ye){case 4:n.qn(t.g,s,1,!1),n.kn(t.g,s,1,n.Hq(t,3));break;case 5:n.qn(t.g,s,2,!1),n.kn(t.g,s,1,n.Hq(t,3));break;case 6:n.qn(t.g,s,1,!1),n.kn(t.g,s,2,n.Hq(t,3));break;case 7:n.qn(t.g,s,2,!1),n.kn(t.g,s,2,n.Hq(t,3));break;default:n.qn(t.g,s,Ye,!1)}for(EP==8&&n.Hq(t,1)==0&&(t.g.L=!0),i=n.Hq(t,x),j8=0;j8<i;j8++)if(E=n.Hq(t,x),n.dm(t.g,E)==1)switch(Ye=n.Hq(t,3),Ye){case 4:n.Fn(t.g,E,1,!1),n.Cn(t.g,E,1,n.Hq(t,3));break;case 5:n.Fn(t.g,E,2,!1),n.Cn(t.g,E,1,n.Hq(t,3));break;case 6:n.Fn(t.g,E,1,!1),n.Cn(t.g,E,2,n.Hq(t,3));break;case 7:n.Fn(t.g,E,2,!1),n.Cn(t.g,E,2,n.Hq(t,3));break;default:n.Fn(t.g,E,Ye,!1)}else n.Fn(t.g,E,n.Hq(t,2),!1);for(n.Kn(t.g,n.Hq(t,1)==1),w=null,RA=null,C8=0;n.Hq(t,1)==1;)switch(It=C8+n.Hq(t,4),It){case 0:for(at=n.Hq(t,u),m8=0;m8<at;m8++)s=n.Hq(t,u),n.rn(t.g,s,c1,!0);break;case 1:for(at=n.Hq(t,u),F8=0;F8<at;F8++)s=n.Hq(t,u),nu=n.Hq(t,8),n.pn(t.g,s,nu);break;case 2:for(at=n.Hq(t,x),Ce=0;Ce<at;Ce++)n.Hq(t,x);break;case 3:for(at=n.Hq(t,u),be=0;be<at;be++)s=n.Hq(t,u),n.rn(t.g,s,J1,!0);break;case 4:for(at=n.Hq(t,u),te=0;te<at;te++)s=n.Hq(t,u),IP=T1(Ct(n.Hq(t,4)),3),n.rn(t.g,s,IP,!0);break;case 5:for(at=n.Hq(t,u),ee=0;ee<at;ee++)s=n.Hq(t,u),L=T1(Ct(n.Hq(t,2)),1),n.rn(t.g,s,L,!0);break;case 6:for(at=n.Hq(t,u),p0=0;p0<at;p0++)s=n.Hq(t,u),n.rn(t.g,s,1,!0);break;case 7:for(at=n.Hq(t,u),Re=0;Re<at;Re++)s=n.Hq(t,u),Z1=T1(Ct(n.Hq(t,4)),7),n.rn(t.g,s,Z1,!0);break;case 8:for(at=n.Hq(t,u),O0=0;O0<at;O0++){for(s=n.Hq(t,u),S=n.Hq(t,4),B=d(l.Z6,H,6,S,15,1),rn=0;rn<S;rn++)m=n.Hq(t,8),B[rn]=m;n.ln(t.g,s,B)}break;case 9:for(at=n.Hq(t,x),C0=0;C0<at;C0++)E=n.Hq(t,x),IP=n.Hq(t,2)<<7,n.Hn(t.g,E,IP,!0);break;case 10:for(at=n.Hq(t,x),Ke=0;Ke<at;Ke++)E=n.Hq(t,x),rt=n.Hq(t,5),n.Hn(t.g,E,rt,!0);break;case 11:for(at=n.Hq(t,u),Bn=0;Bn<at;Bn++)s=n.Hq(t,u),n.rn(t.g,s,l0,!0);break;case 12:for(at=n.Hq(t,x),_t=0;_t<at;_t++)E=n.Hq(t,x),Ut=n.Hq(t,8)<<9,n.Hn(t.g,E,Ut,!0);break;case 13:for(at=n.Hq(t,u),ce=0;ce<at;ce++)s=n.Hq(t,u),Du=T1(Ct(n.Hq(t,3)),14),n.rn(t.g,s,Du,!0);break;case 14:for(at=n.Hq(t,u),kn=0;kn<at;kn++)s=n.Hq(t,u),Au=T1(Ct(n.Hq(t,5)),17),n.rn(t.g,s,Au,!0);break;case 15:case 31:C8+=16;break;case 16:for(at=n.Hq(t,u),jn=0;jn<at;jn++)s=n.Hq(t,u),_n=T1(Ct(n.Hq(t,3)),22),n.rn(t.g,s,_n,!0);break;case 17:for(at=n.Hq(t,u),mn=0;mn<at;mn++)s=n.Hq(t,u),n.cn(t.g,s,n.Hq(t,4));break;case 18:for(at=n.Hq(t,u),eu=n.Hq(t,4),r8=0;r8<at;r8++){for(s=n.Hq(t,u),Nt=n.Hq(t,eu),p8=d(l.V6,Y,6,Nt,15,1),rn=0;rn<Nt;rn++)p8[rn]=n.Hq(t,7)<<24>>24;n.hn(t.g,s,T.Zib((Wn=p8,V1.Cmb(),Wn)))}break;case 19:for(at=n.Hq(t,u),i8=0;i8<at;i8++)s=n.Hq(t,u),ht=T1(Ct(n.Hq(t,3)),25),n.rn(t.g,s,ht,!0);break;case 20:for(at=n.Hq(t,x),f8=0;f8<at;f8++)E=n.Hq(t,x),_n=n.Hq(t,3)<<17,n.Hn(t.g,E,_n,!0);break;case 21:for(at=n.Hq(t,u),D8=0;D8<at;D8++)s=n.Hq(t,u),n.sn(t.g,s,n.Hq(t,2)<<4);break;case 22:for(at=n.Hq(t,u),u8=0;u8<at;u8++)s=n.Hq(t,u),n.rn(t.g,s,Ne,!0);break;case 23:for(at=n.Hq(t,x),l8=0;l8<at;l8++)E=n.Hq(t,x),n.Hn(t.g,E,je,!0);break;case 24:for(at=n.Hq(t,x),Q8=0;Q8<at;Q8++)E=n.Hq(t,x),L=n.Hq(t,2)<<21,n.Hn(t.g,E,L,!0);break;case 25:for(VP=0;VP<o;VP++)n.Hq(t,1)==1&&n.tn(t.g,VP,!0);break;case 26:for(at=n.Hq(t,x),w=d(l.Z6,H,6,at,15,1),qP=0;qP<at;qP++)w[qP]=n.Hq(t,x);break;case 27:for(at=n.Hq(t,u),L8=0;L8<at;L8++)s=n.Hq(t,u),n.rn(t.g,s,P0,!0);break;case 28:for(at=n.Hq(t,x),U8=0;U8<at;U8++)n.In(t.g,n.Hq(t,x),16);break;case 29:for(at=n.Hq(t,u),y8=0;y8<at;y8++)s=n.Hq(t,u),F0=T1(Ct(n.Hq(t,2)),30),n.rn(t.g,s,F0,!0);break;case 30:for(at=n.Hq(t,u),w8=0;w8<at;w8++)s=n.Hq(t,u),_n=T1(Ct(n.Hq(t,7)),32),n.rn(t.g,s,_n,!0);break;case 32:for(at=n.Hq(t,u),s8=0;s8<at;s8++)s=n.Hq(t,u),uu=T1(Ct(n.Hq(t,2)),44),n.rn(t.g,s,uu,!0);break;case 33:for(at=n.Hq(t,u),T8=0;T8<at;T8++)s=n.Hq(t,u),E1=T1(Ct(n.Hq(t,5)),39),n.rn(t.g,s,E1,!0);break;case 34:for(at=n.Hq(t,u),h8=0;h8<at;h8++)s=n.Hq(t,u),n.rn(t.g,s,AA,!0);break;case 35:for(at=n.Hq(t,x),b8=0;b8<at;b8++)E=n.Hq(t,x),n.Hn(t.g,E,Mn,!0);break;case 36:for(at=n.Hq(t,x),c8=0;c8<at;c8++)E=n.Hq(t,x),ut=n.Hq(t,2)<<5,n.Hn(t.g,E,ut,!0);break;case 37:for(at=n.Hq(t,x),g8=0;g8<at;g8++)E=n.Hq(t,x),ut=n.Hq(t,1)==0?32:64,n.In(t.g,E,ut);break;case 38:for(at=n.Hq(t,u),ct=n.Hq(t,3),RA=d(l.Z6,H,6,o,15,1),d8=0;d8<at;d8++)s=n.Hq(t,u),$t=n.Hq(t,ct),RA[s]=$t;break;case 39:for(at=n.Hq(t,u),f0=0;f0<at;f0++)s=n.Hq(t,u),iu=T1(Ct(n.Hq(t,4)),47),n.rn(t.g,s,iu,!0)}if(n.Ee(new n.Se(t.g),v8,!1),w!=null)for(N=w,ft=0,Lt=N.length;ft<Lt;++ft)E=N[ft],n.In(t.g,E,n.dm(t.g,E)==2?4:2);if(P==null&&!t.i&&A.length>t.e+1&&(A[t.e+1]==32||A[t.e+1]==9)&&(P=A,r=t.e+2),P!=null)try{if(P[r]==33||P[r]==35){for(n.Iq(t,P,r+1),Rt=n.Hq(t,1)==1,Et=n.Hq(t,1)==1,oe=2*n.Hq(t,4),J=1<<oe,I1=0,E=0,b=1;b<o;b++)E<Q&&n.Ul(t.g,1,E)==b?(I1=n.Ul(t.g,0,E++),o1=1):(I1=0,o1=8),L1=o1*(n.Hq(t,oe)+1-(J>>1)),f1=o1*(n.Hq(t,oe)+1-(J>>1)),n.vn(t.g,b,n.Ll(t.g,I1)+L1),n.wn(t.g,b,n.Ml(t.g,I1)+f1),Rt&&n.xn(t.g,b,n.Nl(t.g,I1)+o1*(n.Hq(t,oe)+1-(J>>1)));if(P[r]==35){for(l1=0,O1=d(l.Z6,H,6,o,15,1),g=0;g<o;g++)l1+=O1[g]=n.kp(t.g,g);for(s=0;s<o;s++)for(f0=0;f0<O1[s];f0++)Z1=n.Rk(t.g,1),n.Tk(t.g,s,Z1,1),n.vn(t.g,Z1,n.Ll(t.g,s)+(n.Hq(t,oe)+1-(J>>1))),n.wn(t.g,Z1,n.Ml(t.g,s)+(n.Hq(t,oe)+1-(J>>1))),Rt&&n.xn(t.g,Z1,n.Nl(t.g,s)+(n.Hq(t,oe)+1-(J>>1))),RA!=null&&(RA[s]&1<<f0)!=0&&n.tn(t.g,Z1,!0);o+=l1,Q+=l1}if(M=Rt?1.5:(n.Ok(),n.Ok(),n.Nk),p=n.Rl(t.g,o,Q,M),Et)for(ne=n.Gq(n.Hq(t,oe),J),SA=ne*n.Jq(n.Hq(t,oe),J),HA=ne*n.Jq(n.Hq(t,oe),J),Rt&&(MA=ne*n.Jq(n.Hq(t,oe),J)),o1=ne/p,s=0;s<o;s++)n.vn(t.g,s,SA+o1*n.Ll(t.g,s)),n.wn(t.g,s,HA+o1*n.Ml(t.g,s)),Rt&&n.xn(t.g,s,MA+o1*n.Nl(t.g,s));else for(ne=1.5,o1=ne/p,s=0;s<o;s++)n.vn(t.g,s,o1*n.Ll(t.g,s)),n.wn(t.g,s,o1*n.Ml(t.g,s)),Rt&&n.xn(t.g,s,o1*n.Nl(t.g,s))}else if(Rt&&!Et&&ne==0&&(ne=1.5),ne!=0&&t.g.r!=0){for(p=0,E=0;E<t.g.r;E++)Xt=n.Ll(t.g,n.Ul(t.g,0,E))-n.Ll(t.g,n.Ul(t.g,1,E)),k1=n.Ml(t.g,n.Ul(t.g,0,E))-n.Ml(t.g,n.Ul(t.g,1,E)),qt=Rt?n.Nl(t.g,n.Ul(t.g,0,E))-n.Nl(t.g,n.Ul(t.g,1,E)):0,p+=k.Math.sqrt(Xt*Xt+k1*k1+qt*qt);for(p/=t.g.r,y1=ne/p,s=0;s<t.g.q;s++)n.vn(t.g,s,n.Ll(t.g,s)*y1+SA),n.wn(t.g,s,n.Ml(t.g,s)*y1+HA),Rt&&n.xn(t.g,s,n.Nl(t.g,s)*y1+MA)}}catch(ge){if(ge=C1(ge),Yt(ge,19))P1=ge,T.LB(P1,(T.Pjb(),T.Ojb),\"\"),\"\"+P1+T.Zib((tu=A,V1.Cmb(),tu))+T.Zib((Wn=P,Wn)),P=null,Rt=!1;else throw Qt(ge)}if(Ft=P!=null&&!Rt,n.Kq(t),Ft||t.$b())for(n.aw(t.g,7),E=0;E<t.g.g;E++)n.am(t.g,E)==2&&!n.fq(t.g,E)&&n.bm(t.g,E)==0&&n.Gn(t.g,E);if(n.rq(t.g,0),!Ft&&t.$b())try{t._b(t.g),Ft=!0}catch(ge){if(ge=C1(ge),Yt(ge,19))P1=ge,T.LB(P1,(T.Pjb(),T.Ojb),\"\"),\"\"+P1+T.Zib((Wn=A,V1.Cmb(),Wn));else throw Qt(ge)}Ft?(n.uq(t.g),n.nw(t.g)):Rt||n.rq(t.g,0)}},n.Sq=function(t,e){var A,P,r,i,D,u;if(!(e.length<=0||e[0]<64))for(n.Iq(t,e,0),u=n.Hq(t,4),r=n.Hq(t,1)==1,i=n.Hq(t,1)==1,A=0;A<t.g.f;A++)D=n.Hq(t,u),P=r,r&&i&&(P=n.Hq(t,1)==1),n.nn(t.g,A,D,P)},n.Tq=function(){},G(313,1,{},n.Tq),U.$b=function(){return!1},U._b=function(t){throw Qt(new T.bC(\"Unexpected request to invent coordinates. Check source code logic!\"))},U.d=0,U.e=0,U.f=0,U.i=!1,l.z7=O(313),n.Wq=function(t){},n.Xq=function(t){n.Wq(this),this.b=t},G(50,313,{},n.Xq),U.$b=function(){return this.b},U._b=function(t){var e;e=new X.BA(this.a),e.g=new y.uvb(78187493520),X.iA(e,t)},U.a=2,U.b=!1,l.A7=O(50),n.$q=function(t,e,A,P){var r,i,D,u,o,Q,L,w,s,h,b,g,B,m;r=e.a,h=e.g,Q=jt(Z(n.Jl(t.k,r),1),0),i=n.El(t.k,r),w=i!=null?n.fr(t,r,i,P):Q?\"*\":n.Dl(t.k,r),!Q&&i==null&&n.Pp(t.k,r)&&(t.j&4)==0&&(n.Mo(t.k,r)!=0||n.vl(t.k,r)==-1&&n.Kl(t.k,r)==0)&&(w=c.Szb(w).toLowerCase()),e.f&&(A.a+=\"(\"),h!=-1&&n.cr(t,n.To(t.k,e.a,e.g),e.g,A),D=n.xl(t.k,r),D==0&&(t.j&1)!=0&&(u=Z(n.Jl(t.k,r),Be),et(u,ln)==0?D=-1:et(u,on)==0&&(D=1)),L=n.Hl(t.k,r),s=(t.j&2)!=0?n.Gl(t.k,r):0,b=(t.j&1)!=0?n.lr(t,r,P):null,m=!Q&&!n.sr(n.Ol(t.k,r))||i!=null||(n.Il(t.k,r)==1||n.Il(t.k,r)==2)&&(B=n.Cl(t.k,r)-1,!(B!=-1&&t.i[B][n.Bl(t.k,r)]<=1))&&(n.Ol(t.k,r)!=7||n.xl(t.k,r)>0)||n.Pp(t.k,r)&&n.Mo(t.k,r)==0&&(t.j&4)==0||D!=0||L!=0||s!=0||n.vl(t.k,r)!=-1||n.Kl(t.k,r)!=0||b!=null,m&&(A.a+=\"[\"),L!=0&&(A.a+=L),A.a+=\"\"+w,(n.Il(t.k,r)==1||n.Il(t.k,r)==2)&&(g=n.Cl(t.k,r)-1,!(g!=-1&&t.i[g][n.Bl(t.k,r)]<=1))&&(n.Ol(t.k,r)!=7||n.xl(t.k,r)>0)&&T.Ijb(A,n.kr(t,r,h)),(t.j&1)==0&&m&&(o=n.yp(t.k,r),o==1?A.a+=\"H\":o>1&&(A.a+=\"H\"+o)),D!=0&&(A.a+=String.fromCharCode(D>0?43:45),k.Math.abs(D)>1&&T.Fjb(A,k.Math.abs(D))),b!=null&&(A.a+=\"\"+b),s!=0&&(A.a+=\":\",A.a+=s),m&&(A.a+=\"]\"),n.dr(t,e,A),e.e&&(A.a+=\")\")},n._q=function(t,e,A){var P,r,i,D,u;for(i=!0,u=y.uj(t.g,e).a,D=n.or(t,u);D!=-1;)P=n.Vo(t.k,u,D),r=n.Xo(t.k,u,D),D=n.or(t,P),n.br(t,new n.Vu(P,r,u,A&&i,A&&D==-1),++e),u=P,i=!1},n.ar=function(t,e,A){var P,r,i,D;for(r=e,i=0,D=r.length;i<D;++i)P=r[i],t.f[P&1073741823]=(P&z0)!=0^A?2:1},n.br=function(t,e,A){y.oj(t.g,A,e),t.b[e.a]=!0,e.g!=-1&&(t.c[n.To(t.k,e.a,e.g)]=!0)},n.cr=function(t,e,A,P){var r,i,D,u,o;o=c.Szb(P.a).length,t.f[e]!=0&&T.Ejb(P,t.f[e]==1?47:92),t.j==1&&(r=n.cm(t.k,e)&127,r!=0&&((r&1)!=0&&t.f[e]==0&&(P.a+=\"-\"),(r&2)!=0&&(c.Szb(P.a).length!=o&&(P.a+=\",\"),P.a+=\"=\"),(r&4)!=0&&(c.Szb(P.a).length!=o&&(P.a+=\",\"),P.a+=\"#\"),(r&32)!=0&&(c.Szb(P.a).length!=o&&(P.a+=\",\"),P.a+=\"$\"),(r&64)!=0&&(c.Szb(P.a).length!=o&&(P.a+=\",\"),P.a+=\"$\"),(r&8)!=0&&(c.Szb(P.a).length!=o&&(P.a+=\",\"),P.a+=\":\"),(r&16)!=0&&(c.Szb(P.a).length!=o&&(P.a+=\",\"),T.Ijb(P,n.Hm(t.k,A)?\"<-\":\"->\")))),o==c.Szb(P.a).length&&(!n.Qp(t.k,e)||(t.j&4)!=0)&&(i=n.dm(t.k,e)&127,i==1?n.Pp(t.k,n.Ul(t.k,0,e))&&n.Pp(t.k,n.Ul(t.k,1,e))&&(t.j&4)==0&&t.f[e]==0&&(P.a+=\"-\"):i==2?P.a+=\"=\":i==4?P.a+=\"#\":i==32||i==64?P.a+=\"$\":i==8?P.a+=\":\":i==16&&T.Ijb(P,n.Hm(t.k,A)?\"<-\":\"->\")),t.j==1&&(D=o==c.Szb(P.a).length?\"\":\";\",u=n.cm(t.k,e)&384,u==256?P.a+=D+\"@\":u==128&&(P.a+=D+\"!@\"))},n.dr=function(t,e,A){var P,r,i;if(e.c!=null)for(r=0;r<e.c.length;r++)for(i=0;i<n.Wo(t.k,e.a);i++)e.c[r]==n.Vo(t.k,e.a,i)&&(P=n.Xo(t.k,e.a,i),e.d[r]||n.cr(t,P,e.a,A),t.e[P]>9&&(A.a+=\"%\"),T.Fjb(A,t.e[P]))},n.er=function(t){var e,A,P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S,p,M,z,q,x,J,E,N,ft,Lt,ot,st,ut,rt,Ut,ht,it,bt;for(ht=new y.Jj,m=new y.rqb(t.g);m.a<m.c.a.length;)if(B=y.qqb(m),B.g!=-1&&(p=n.To(t.k,B.a,B.g),!n.Rp(t.k,p)&&!n.fq(t.k,p)&&(n.bm(t.k,p)==1||n.bm(t.k,p)==2))){if(rt=y.uj(t.g,t.q[B.g]),A=d(l.Z6,H,6,n.Wo(t.k,B.a)+n.Wo(t.k,rt.a)-2,15,1),J=0,Ut=!1,rt.g!=-1)A[J++]=rt.b;else{for(M=-1,it=-1,z=Mt,N=0;N<n.Wo(t.k,rt.a);N++)w=n.Vo(t.k,rt.a,N),w!=B.a&&(M==-1?(M=N,z=t.q[w]):z<t.q[w]?it=N:(it=M,M=N));it==-1?(ot=n.Vo(t.k,rt.a,M),st=n.Xo(t.k,rt.a,M),A[J++]=st|(n.qr(t,rt.a,ot)?z0:0)):(s=n.Vo(t.k,rt.a,M),b=n.Xo(t.k,rt.a,M),h=n.Vo(t.k,rt.a,it),g=n.Xo(t.k,rt.a,it),A[J++]=b|(n.qr(t,rt.a,s)?z0:0),A[J++]=g|(n.qr(t,rt.a,h)?0:z0))}if(n.Wo(t.k,rt.a)==3&&rt.g!=-1){for(N=0;N<n.Wo(t.k,rt.a);N++)if(w=n.Vo(t.k,rt.a,N),w!=rt.g&&w!=B.a){P=n.Xo(t.k,rt.a,N),A[J++]=P|(n.qr(t,rt.a,w)?z0:0),w<rt.g&&(Ut=!Ut);break}}for(n.bm(t.k,p)==2&&(Ut=!Ut),E=0;E<n.Wo(t.k,B.a);E++)if(o=n.Vo(t.k,B.a,E),o!=B.g){if(x=Ut,n.Wo(t.k,B.a)==3){for(Lt=0;Lt<n.Wo(t.k,B.a);Lt++)if(w=n.Vo(t.k,B.a,Lt),w!=B.g&&w!=o){w<o&&(x=!x);break}}n.Bm(t.k,p)&&(q=n.qg(t.d,p),t.n[q]||(t.n[q]=!0,t.o[q]=x),t.o[q]&&(x=!x)),Q=n.To(t.k,B.a,o),A[J++]=Q|(x^n.qr(t,B.a,o)?0:z0)}c.izb(ht.a,A)}for(t.f=d(l.Z6,H,6,t.k.g,15,1),ht.a.length!=0&&n.ar(t,y.Bj(ht,0),!1);ht.a.length!=0;){for(bt=ht.a.length,E=ht.a.length-1;E>=0;E--){for(A=(c.Fzb(E,ht.a.length),ht.a[E]),ut=0,ft=!1,L=!1,i=A,D=0,u=i.length;D<u;++D)r=i[D],e=r&1073741823,t.f[e]!=0&&(S=(r&z0)!=0^t.f[e]==2,ut==0?ft=S:ft!=S&&(L=!0),++ut);ut!=0&&(A=y.Bj(ht,E),L||n.ar(t,A,ft))}bt==ht.a.length&&n.ar(t,y.Bj(ht,0),!1)}},n.fr=function(t,e,A,P){var r,i,D,u,o,Q,L;for(L=c.Szb(P.a).length,0<L?P.a=T.qjb(P.a,0,0):0>L&&(P.a+=T.wjb(d(l.W6,e0,6,-L,15,1))),o=n.Pp(t.k,e)&&(t.j&4)==0,i=A,D=0,u=i.length;D<u;++D)r=i[D],c.Szb(P.a).length!=0&&(P.a+=\",\"),Q=(n.Ok(),n.Ik)[r],T.Ijb(P,o?c.Szb(Q).toLowerCase():Q);return P.a},n.gr=function(t){var e,A,P,r,i,D,u,o;if(!t.k||t.k.q==0)return\"\";for(n.aw(t.k,15),t.d=new n.Lg(t.k,129),r=t.d.T,t.o=d(l.teb,wt,6,r+1,16,1),t.n=d(l.teb,wt,6,r+1,16,1),t.i=w1(l.Z6,[M1,H],[7,6],15,[2,32],2),e=0;e<t.k.f;e++)o=n.Cl(t.k,e)-1,o!=-1&&++t.i[o][n.Bl(t.k,e)];for(n.jr(t),n.hr(t),n.er(t),P=new T.Kjb,A=new T.Kjb,i=!0,u=new y.rqb(t.g);u.a<u.c.a.length;)D=y.qqb(u),D.g==-1&&(i?i=!1:P.a+=\".\"),n.$q(t,D,P,A);return P.a},n.hr=function(t){var e,A,P,r,i,D,u,o,Q,L,w;for(w=new y.rqb(t.g);w.a<w.c.a.length;){for(Q=y.qqb(w),A=0,i=0;i<n.Wo(t.k,Q.a);i++)t.c[n.Xo(t.k,Q.a,i)]||++A;if(A!=0){for(Q.c=d(l.Z6,H,6,A,15,1),A=0,D=0;D<n.Wo(t.k,Q.a);D++)t.c[n.Xo(t.k,Q.a,D)]||(o=n.Vo(t.k,Q.a,D),Q.c[A++]=t.q[o]<<16|o);for(c.lzb(Q.c,c.Szb(y0(y.lrb.prototype.jd,y.lrb,[]))),r=0;r<Q.c.length;r++)Q.c[r]=r1&Q.c[r]}}for(P=d(l.teb,wt,6,t.k.g,16,1),t.e=d(l.Z6,H,6,t.k.g,15,1),L=new y.rqb(t.g);L.a<L.c.a.length;)if(Q=y.qqb(L),Q.c!=null){for(Q.d=d(l.teb,wt,6,Q.c.length,16,1),r=0;r<Q.c.length;r++)for(u=0;u<n.Wo(t.k,Q.a);u++)if(Q.c[r]==n.Vo(t.k,Q.a,u))if(e=n.Xo(t.k,Q.a,u),t.c[e])P[t.e[e]]=!1;else{for(t.c[e]=!0,Q.d[r]=!0,t.e[e]=1;P[t.e[e]];)++t.e[e];P[t.e[e]]=!0}}},n.ir=function(t){var e,A,P,r;for(P=-1,r=Mt,e=0;e<t.k.f;e++)t.b[e]||(A=t.a[e],n.Fm(t.k,e)&&(A+=z0),n.Wo(t.k,e)==0?A+=1056964608:A+=n.Wo(t.k,e)<<24,r>A&&(r=A,P=e));return P},n.jr=function(t){var e,A,P,r,i;for(t.a=t.d.f,t.b=d(l.teb,wt,6,t.k.f,16,1),t.c=d(l.teb,wt,6,t.k.g,16,1),t.g=new y.Jj,e=n.ir(t);e!=-1;){if(A=t.g.a.length,n.br(t,new n.Vu(e,-1,-1,!1,!1),A),n.Wo(t.k,e)!=0)for(n._q(t,A,!1);A<t.g.a.length-1;){for(;n.pr(t,y.uj(t.g,A).a);)n._q(t,A,!0);++A}e=n.ir(t)}for(t.q=d(l.Z6,H,6,t.k.f,15,1),P=0,i=new y.rqb(t.g);i.a<i.c.a.length;)r=y.qqb(i),t.q[r.a]=P++},n.kr=function(t,e,A){var P,r,i,D,u,o,Q,L,w,s,h,b;if(o=!1,n.Mo(t.k,e)!=0&&n.Wo(t.k,e)==2&&n.Yo(t.k,e,0)==2&&n.Yo(t.k,e,1)==2){for(D=0;D<n.Wo(t.k,e);D++)if(P=n.Vo(t.k,e,D),P!=A&&n.Wo(t.k,P)==2){o=!0;break}for(i=0;i<n.Wo(t.k,e);i++){for(P=n.Vo(t.k,e,i),b=0,h=d(l.Z6,H,6,3,15,1),L=0;L<n.Wo(t.k,P);L++)h[b]=n.Vo(t.k,P,L),h[b]!=e&&++b;b==2&&t.q[h[0]]<t.q[h[1]]^h[0]<h[1]&&(o=!o)}}else{for(w=d(l.Z6,H,6,4,15,1),s=d(l.Z6,H,6,4,15,1),u=0,A!=-1&&(w[u]=A,s[u++]=8*t.q[A]),(n.kp(t.k,e)!=0||n.Wo(t.k,e)==3)&&(w[u]=Mt,s[u++]=8*t.q[e]),i=0;i<n.Wo(t.k,e);i++)P=n.Vo(t.k,e,i),P!=A&&(w[u]=P,s[u++]=n.nr(t,e,i));o=n.rr(w,s)}return Q=n.Il(t.k,e)==1^o,n.um(t.k,e)&&(r=n.rg(t.d,e),t.n[r]||(t.n[r]=!0,t.o[r]=Q),t.o[r]&&(Q=!Q)),Q?\"@@\":\"@\"},n.lr=function(t,e,A){var P,r,i,D,u,o,Q,L;switch(u=c.Szb(A.a).length,0<u?A.a=T.qjb(A.a,0,0):0>u&&(A.a+=T.wjb(d(l.W6,e0,6,-u,15,1))),o=n.Jl(t.k,e),r=Gt(a1(Z(o,Be),3)),r){case 20971520:A.a+=\"+0\";break;case 25165824:n.xl(t.k,e)==0&&(A.a+=\"-\");break;case 12582912:n.xl(t.k,e)==0&&(A.a+=\"+\")}return P=Z(o,XA),et(P,2)==0?A.a+=\";a\":et(P,4)==0&&(A.a+=\";A\"),i=Z(o,K0),et(i,0)!=0&&(et(i,1792)==0?A.a+=\";H0\":et(i,1664)==0?A.a+=\";H1\":et(i,1408)==0?A.a+=\";H2\":et(i,896)==0?A.a+=\";H3\":et(i,128)==0?A.a+=\";!H0\":et(i,384)==0?A.a+=\";!H0;!H1\":et(i,1536)==0?A.a+=\";!H2;!H3\":et(i,r0)==0&&(A.a+=\";!H3\")),L=Z(o,120),et(L,8)==0?A.a+=\";!R0\":et(L,16)==0?A.a+=\";!R1\":et(L,32)==0?A.a+=\";!R2\":et(L,64)==0?A.a+=\";!R3\":et(L,112)==0?A.a+=\";R0\":et(L,104)==0?A.a+=\";R1\":et(L,88)==0?A.a+=\";R2\":et(L,56)==0&&(A.a+=\";R3\"),Q=Z(o,Me),et(Q,le)==0?A.a+=\";!r\"+Q0(Q):et(Q,Z8)==0?A.a+=\";r\"+Q0(Q):et(Q,0)!=0&&(jt(Z(Q,un),0)?(S1(Z(Q,le),0)&&(A.a+=\";!r0\"+Q0(Q)),S1(Z(Q,ze),0)&&(A.a+=\";!r3\"+Q0(Q)),S1(Z(Q,Ve),0)&&(A.a+=\";!r4\"+Q0(Q)),S1(Z(Q,qe),0)&&(A.a+=\";!r5\"+Q0(Q)),S1(Z(Q,Ie),0)&&(A.a+=\";!r6\"+Q0(Q)),S1(Z(Q,Ee),0)&&(A.a+=\";!r7\"+Q0(Q))):(A.a+=\";\",jt(Z(Q,le),0)&&(A.a+=\"r0,\"+Q0(Q)),jt(Z(Q,ze),0)&&(A.a+=\"r3,\"+Q0(Q)),jt(Z(Q,Ve),0)&&(A.a+=\"r4,\"+Q0(Q)),jt(Z(Q,qe),0)&&(A.a+=\"r5,\"+Q0(Q)),jt(Z(Q,Ie),0)&&(A.a+=\"r6,\"+Q0(Q)),jt(Z(Q,Ee),0)&&(A.a+=\"r7,\"+Q0(Q)),T.ugb(A,c.Szb(A.a).length-1))),et(Q,0)==0&&(Q=a1(Z(o,ke),22),et(Q,0)!=0&&(A.a+=\";r\"+Q0(Q))),D=Z(o,$e),et(D,rA)==0&&(A.a+=\";D1\"),et(D,pn)==0&&(A.a+=\";D2\"),et(D,Cn)==0&&(A.a+=\";D3\"),et(D,iA)==0&&(A.a+=\";!D3;!D4\"),et(D,m0)==0&&(A.a+=\";!D4\"),et(D,ae)==0&&(A.a+=\";!D0;!D1\"),et(D,re)==0&&(A.a+=\";!D0;!D1;!D2\"),et(D,Qn)==0&&(A.a+=\";!D0;!D1;!D2;!D3\"),jt(Z(o,c1),0)&&T.Ijb(A,\";D\"+n.Wo(t.k,e)),jt(Z(o,J1),0)&&T.Ijb(A,\";!D\"+n.Wo(t.k,e)),c.Szb(A.a).length==0?null:A.a},n.mr=function(t){return t.p==null&&(t.p=n.gr(t)),t.p},n.nr=function(t,e,A){var P,r,i,D,u;if(P=n.Xo(t.k,e,A),D=n.Vo(t.k,e,A),t.e[P]!=0){for(u=8*t.q[e]+1,r=y.uj(t.g,t.q[e]).c,i=0;i<r.length&&D!=r[i];i++)++u;return u}return 8*t.q[D]},n.or=function(t,e){var A,P,r,i,D;for(A=-1,P=-1,i=0;i<n.Wo(t.k,e);i++)r=n.Vo(t.k,e,i),D=(n.Yo(t.k,e,i)<<24)+t.a[r],!t.b[r]&&(A==-1||P<D)&&(A=i,P=D);return A},n.pr=function(t,e){var A;for(A=0;A<n.Wo(t.k,e);A++)if(!t.b[n.Vo(t.k,e,A)])return!0;return!1},n.qr=function(t,e,A){var P,r;return P=y.uj(t.g,t.q[e]),P.g==A?!1:(r=y.uj(t.g,t.q[A]),r.g==e?!0:n.Uu(r,e))},n.rr=function(t,e){var A,P,r;for(P=!1,A=1;A<4;A++)for(r=0;r<A;r++)t[r]>t[A]&&(P=!P),e[r]>e[A]&&(P=!P);return P},n.sr=function(t){return t>=5&&t<=9||t>=15&&t<=17||t==35||t==53},n.tr=function(t){n.ur.call(this,t,0)},n.ur=function(t,e){this.k=t,this.j=e},n.vr=function(t){var e,A,P,r;for(r=new T.Kjb,A=0;A<t.g.a.length;A++)A!=0&&(r.a+=\".\"),T.Ijb(r,n.mr(new n.ur(y.uj(t.g,A),2)));for(r.a+=\">\",P=0;P<t.a.a.length;P++)P!=0&&(r.a+=\".\"),T.Ijb(r,n.mr(new n.tr(y.uj(t.a,P))));for(r.a+=\">\",e=0;e<t.f.a.length;e++)e!=0&&(r.a+=\".\"),T.Ijb(r,n.mr(new n.ur(y.uj(t.f,e),2)));return r.a},G(113,1,{},n.tr,n.ur),U.j=0,l.B7=O(113),n.wr=function(t,e){this.b=t,this.a=e},G(3,1,{3:1},n.wr),U.a=0,U.b=0,l.C7=O(3),n.yr=function(){n.yr=u1,n.xr=v(F(l.C7,2),T0,17,0,[null,v(F(l.C7,1),zt,3,0,[new n.wr(0,1.007825032),new n.wr(1,2.014101778),new n.wr(2,3.016049268),new n.wr(3,4.027834627),new n.wr(4,5.039542911),new n.wr(5,6.044942608)]),v(F(l.C7,1),zt,3,0,[new n.wr(1,3.01602931),new n.wr(2,4.00260325),new n.wr(3,5.012223628),new n.wr(4,6.018888072),new n.wr(5,7.028030527),new n.wr(6,8.033921838),new n.wr(7,9.043820323),new n.wr(8,10.052399713)]),v(F(l.C7,1),zt,3,0,[new n.wr(1,4.027182329),new n.wr(2,5.012537796),new n.wr(3,6.015122281),new n.wr(4,7.016004049),new n.wr(5,8.02248667),new n.wr(6,9.026789122),new n.wr(7,10.035480884),new n.wr(8,11.043796166),new n.wr(9,12.05378)]),v(F(l.C7,1),zt,3,0,[new n.wr(1,5.04079),new n.wr(2,6.019725804),new n.wr(3,7.016929246),new n.wr(4,8.005305094),new n.wr(5,9.012182135),new n.wr(6,10.01353372),new n.wr(7,11.021657653),new n.wr(8,12.026920631),new n.wr(9,13.036133834),new n.wr(10,14.042815522)]),v(F(l.C7,1),zt,3,0,[new n.wr(2,7.029917389),new n.wr(3,8.024606713),new n.wr(4,9.013328806),new n.wr(5,10.012937027),new n.wr(6,11.009305466),new n.wr(7,12.014352109),new n.wr(8,13.017780267),new n.wr(9,14.025404064),new n.wr(10,15.031097291),new n.wr(11,16.039808836),new n.wr(12,17.046931399),new n.wr(13,18.05617),new n.wr(14,19.06373)]),v(F(l.C7,1),zt,3,0,[new n.wr(2,8.037675026),new n.wr(3,9.031040087),new n.wr(4,10.01685311),new n.wr(5,11.011433818),new n.wr(6,12),new n.wr(7,13.003354838),new n.wr(8,14.003241988),new n.wr(9,15.010599258),new n.wr(10,16.014701243),new n.wr(11,17.022583712),new n.wr(12,18.026757058),new n.wr(13,19.035248094),new n.wr(14,20.040322395),new n.wr(15,21.04934),new n.wr(16,22.05645)]),v(F(l.C7,1),zt,3,0,[new n.wr(3,10.042618),new n.wr(4,11.026796226),new n.wr(5,12.018613202),new n.wr(6,13.005738584),new n.wr(7,14.003074005),new n.wr(8,15.000108898),new n.wr(9,16.006101417),new n.wr(10,17.008449673),new n.wr(11,18.014081827),new n.wr(12,19.017026896),new n.wr(13,20.023367295),new n.wr(14,21.027087574),new n.wr(15,22.034440259),new n.wr(16,23.04051),new n.wr(17,24.0505)]),v(F(l.C7,1),zt,3,0,[new n.wr(4,12.034404776),new n.wr(5,13.0248104),new n.wr(6,14.008595285),new n.wr(7,15.003065386),new n.wr(8,15.994914622),new n.wr(9,16.999131501),new n.wr(10,17.999160419),new n.wr(11,19.00357873),new n.wr(12,20.00407615),new n.wr(13,21.008654631),new n.wr(14,22.009967157),new n.wr(15,23.015691325),new n.wr(16,24.020369922),new n.wr(17,25.02914),new n.wr(18,26.03775)]),v(F(l.C7,1),zt,3,0,[new n.wr(5,14.03608),new n.wr(6,15.018010856),new n.wr(7,16.01146573),new n.wr(8,17.002095238),new n.wr(9,18.000937667),new n.wr(10,18.998403205),new n.wr(11,19.999981324),new n.wr(12,20.999948921),new n.wr(13,22.00299925),new n.wr(14,23.003574385),new n.wr(15,24.008099371),new n.wr(16,25.012094963),new n.wr(17,26.019633157),new n.wr(18,27.026892316),new n.wr(19,28.03567),new n.wr(20,29.04326)]),v(F(l.C7,1),zt,3,0,[new n.wr(6,16.025756907),new n.wr(7,17.017697565),new n.wr(8,18.005697066),new n.wr(9,19.001879839),new n.wr(10,19.992440176),new n.wr(11,20.993846744),new n.wr(12,21.99138551),new n.wr(13,22.994467337),new n.wr(14,23.993615074),new n.wr(15,24.997789899),new n.wr(16,26.000461498),new n.wr(17,27.0076152),new n.wr(18,28.012108072),new n.wr(19,29.019345902),new n.wr(20,30.023872),new n.wr(21,31.03311),new n.wr(22,32.03991)]),v(F(l.C7,1),zt,3,0,[new n.wr(7,18.02718),new n.wr(8,19.01387945),new n.wr(9,20.00734826),new n.wr(10,20.997655099),new n.wr(11,21.994436782),new n.wr(12,22.989769675),new n.wr(13,23.990963332),new n.wr(14,24.989954352),new n.wr(15,25.992589898),new n.wr(16,26.994008702),new n.wr(17,27.99889041),new n.wr(18,29.002811301),new n.wr(19,30.009226487),new n.wr(20,31.013595108),new n.wr(21,32.019649792),new n.wr(22,33.027386),new n.wr(23,34.0349),new n.wr(24,35.04418)]),v(F(l.C7,1),zt,3,0,[new n.wr(8,20.018862744),new n.wr(9,21.011714174),new n.wr(10,21.999574055),new n.wr(11,22.99412485),new n.wr(12,23.985041898),new n.wr(13,24.985837023),new n.wr(14,25.98259304),new n.wr(15,26.984340742),new n.wr(16,27.983876703),new n.wr(17,28.988554743),new n.wr(18,29.990464529),new n.wr(19,30.996548459),new n.wr(20,31.999145889),new n.wr(21,33.005586975),new n.wr(22,34.00907244),new n.wr(23,35.018669),new n.wr(24,36.02245),new n.wr(25,37.03124)]),v(F(l.C7,1),zt,3,0,[new n.wr(8,21.02804),new n.wr(9,22.01952),new n.wr(10,23.0072649),new n.wr(11,23.999940911),new n.wr(12,24.990428555),new n.wr(13,25.986891659),new n.wr(14,26.981538441),new n.wr(15,27.981910184),new n.wr(16,28.980444848),new n.wr(17,29.982960304),new n.wr(18,30.983946023),new n.wr(19,31.988124379),new n.wr(20,32.990869587),new n.wr(21,33.996927255),new n.wr(22,34.99993765),new n.wr(23,36.006351501),new n.wr(24,37.01031),new n.wr(25,38.0169),new n.wr(26,39.0219)]),v(F(l.C7,1),zt,3,0,[new n.wr(8,22.03453),new n.wr(9,23.02552),new n.wr(10,24.011545711),new n.wr(11,25.00410664),new n.wr(12,25.992329935),new n.wr(13,26.986704764),new n.wr(14,27.976926533),new n.wr(15,28.976494719),new n.wr(16,29.973770218),new n.wr(17,30.975363275),new n.wr(18,31.974148129),new n.wr(19,32.97800052),new n.wr(20,33.978575745),new n.wr(21,34.984584158),new n.wr(22,35.986687363),new n.wr(23,36.99299599),new n.wr(24,37.99598),new n.wr(25,39.0023),new n.wr(26,40.0058),new n.wr(27,41.0127),new n.wr(28,42.0161)]),v(F(l.C7,1),zt,3,0,[new n.wr(9,24.03435),new n.wr(10,25.02026),new n.wr(11,26.01178),new n.wr(12,26.999191645),new n.wr(13,27.99231233),new n.wr(14,28.981801376),new n.wr(15,29.978313807),new n.wr(16,30.973761512),new n.wr(17,31.973907163),new n.wr(18,32.971725281),new n.wr(19,33.973636381),new n.wr(20,34.973314249),new n.wr(21,35.978259824),new n.wr(22,36.979608338),new n.wr(23,37.98447),new n.wr(24,38.98642),new n.wr(25,39.99105),new n.wr(26,40.9948),new n.wr(27,42.00009),new n.wr(28,43.00331),new n.wr(29,44.00988),new n.wr(30,45.01514),new n.wr(31,46.02383)]),v(F(l.C7,1),zt,3,0,[new n.wr(10,26.02788),new n.wr(11,27.018795),new n.wr(12,28.004372661),new n.wr(13,28.996608805),new n.wr(14,29.984902954),new n.wr(15,30.979554421),new n.wr(16,31.97207069),new n.wr(17,32.971458497),new n.wr(18,33.967866831),new n.wr(19,34.96903214),new n.wr(20,35.96708088),new n.wr(21,36.971125716),new n.wr(22,37.971163443),new n.wr(23,38.975135275),new n.wr(24,39.97547),new n.wr(25,40.98003),new n.wr(26,41.98149),new n.wr(27,42.9866),new n.wr(28,43.98832),new n.wr(29,44.99482),new n.wr(30,45.99957),new n.wr(31,47.00762),new n.wr(32,48.01299),new n.wr(33,49.02201)]),v(F(l.C7,1),zt,3,0,[new n.wr(11,28.02851),new n.wr(12,29.01411),new n.wr(13,30.00477),new n.wr(14,30.992416014),new n.wr(15,31.985688908),new n.wr(16,32.977451798),new n.wr(17,33.973761967),new n.wr(18,34.968852707),new n.wr(19,35.968306945),new n.wr(20,36.9659026),new n.wr(21,37.96801055),new n.wr(22,38.968007677),new n.wr(23,39.970415555),new n.wr(24,40.970650212),new n.wr(25,41.973174994),new n.wr(26,42.974203385),new n.wr(27,43.978538712),new n.wr(28,44.9797),new n.wr(29,45.98412),new n.wr(30,46.98795),new n.wr(31,47.99485),new n.wr(32,48.99989),new n.wr(33,50.00773),new n.wr(34,51.01353)]),v(F(l.C7,1),zt,3,0,[new n.wr(12,30.02156),new n.wr(13,31.012126),new n.wr(14,31.99766066),new n.wr(15,32.989928719),new n.wr(16,33.980270118),new n.wr(17,34.975256726),new n.wr(18,35.967546282),new n.wr(19,36.966775912),new n.wr(20,37.962732161),new n.wr(21,38.964313413),new n.wr(22,39.962383123),new n.wr(23,40.964500828),new n.wr(24,41.963046386),new n.wr(25,42.965670701),new n.wr(26,43.965365269),new n.wr(27,44.968094979),new n.wr(28,45.968093467),new n.wr(29,46.972186238),new n.wr(30,47.97507),new n.wr(31,48.98218),new n.wr(32,49.98594),new n.wr(33,50.99324),new n.wr(34,51.99817),new n.wr(35,53.006227)]),v(F(l.C7,1),zt,3,0,[new n.wr(13,32.02192),new n.wr(14,33.00726),new n.wr(15,33.99841),new n.wr(16,34.988011615),new n.wr(17,35.981293405),new n.wr(18,36.973376915),new n.wr(19,37.969080107),new n.wr(20,38.963706861),new n.wr(21,39.963998672),new n.wr(22,40.961825972),new n.wr(23,41.962403059),new n.wr(24,42.960715746),new n.wr(25,43.961556146),new n.wr(26,44.960699658),new n.wr(27,45.961976203),new n.wr(28,46.961677807),new n.wr(29,47.965512946),new n.wr(30,48.967450084),new n.wr(31,49.972782832),new n.wr(32,50.97638),new n.wr(33,51.98261),new n.wr(34,52.98712),new n.wr(35,53.99399),new n.wr(36,54.999388)]),v(F(l.C7,1),zt,3,0,[new n.wr(14,34.01412),new n.wr(15,35.004765),new n.wr(16,35.993087234),new n.wr(17,36.985871505),new n.wr(18,37.976318637),new n.wr(19,38.970717729),new n.wr(20,39.962591155),new n.wr(21,40.962278349),new n.wr(22,41.958618337),new n.wr(23,42.958766833),new n.wr(24,43.955481094),new n.wr(25,44.956185938),new n.wr(26,45.953692759),new n.wr(27,46.954546459),new n.wr(28,47.952533512),new n.wr(29,48.955673302),new n.wr(30,49.957518286),new n.wr(31,50.961474238),new n.wr(32,51.9651),new n.wr(33,52.97005),new n.wr(34,53.97468),new n.wr(35,54.98055),new n.wr(36,55.98579),new n.wr(37,56.992356)]),v(F(l.C7,1),zt,3,0,[new n.wr(15,36.01492),new n.wr(16,37.00305),new n.wr(17,37.9947),new n.wr(18,38.984790009),new n.wr(19,39.977964014),new n.wr(20,40.969251316),new n.wr(21,41.965516761),new n.wr(22,42.96115098),new n.wr(23,43.959403048),new n.wr(24,44.955910243),new n.wr(25,45.95517025),new n.wr(26,46.952408027),new n.wr(27,47.952234991),new n.wr(28,48.950024065),new n.wr(29,49.952187008),new n.wr(30,50.9536027),new n.wr(31,51.95665),new n.wr(32,52.95817),new n.wr(33,53.963),new n.wr(34,54.9694),new n.wr(35,55.97266),new n.wr(36,56.97704),new n.wr(37,57.98307),new n.wr(38,58.988041)]),v(F(l.C7,1),zt,3,0,[new n.wr(16,38.00977),new n.wr(17,39.001323),new n.wr(18,39.990498907),new n.wr(19,40.983131),new n.wr(20,41.973031622),new n.wr(21,42.968523342),new n.wr(22,43.959690235),new n.wr(23,44.958124349),new n.wr(24,45.952629491),new n.wr(25,46.951763792),new n.wr(26,47.947947053),new n.wr(27,48.947870789),new n.wr(28,49.944792069),new n.wr(29,50.946616017),new n.wr(30,51.946898175),new n.wr(31,52.949731709),new n.wr(32,53.95087),new n.wr(33,54.95512),new n.wr(34,55.95799),new n.wr(35,56.9643),new n.wr(36,57.96611),new n.wr(37,58.97196),new n.wr(38,59.97564),new n.wr(39,60.982018)]),v(F(l.C7,1),zt,3,0,[new n.wr(17,40.01109),new n.wr(18,40.99974),new n.wr(19,41.99123),new n.wr(20,42.98065),new n.wr(21,43.9744),new n.wr(22,44.965782286),new n.wr(23,45.960199491),new n.wr(24,46.954906918),new n.wr(25,47.95225448),new n.wr(26,48.948516914),new n.wr(27,49.947162792),new n.wr(28,50.943963675),new n.wr(29,51.944779658),new n.wr(30,52.944342517),new n.wr(31,53.946444381),new n.wr(32,54.947238194),new n.wr(33,55.95036),new n.wr(34,56.95236),new n.wr(35,57.95665),new n.wr(36,58.9593),new n.wr(37,59.9645),new n.wr(38,60.96741),new n.wr(39,61.97314),new n.wr(40,62.97675)]),v(F(l.C7,1),zt,3,0,[new n.wr(18,42.00643),new n.wr(19,42.997707),new n.wr(20,43.98547),new n.wr(21,44.97916),new n.wr(22,45.968361649),new n.wr(23,46.962906512),new n.wr(24,47.954035861),new n.wr(25,48.951341135),new n.wr(26,49.946049607),new n.wr(27,50.944771767),new n.wr(28,51.940511904),new n.wr(29,52.940653781),new n.wr(30,53.938884921),new n.wr(31,54.940844164),new n.wr(32,55.940645238),new n.wr(33,56.9437538),new n.wr(34,57.94425),new n.wr(35,58.94863),new n.wr(36,59.94973),new n.wr(37,60.95409),new n.wr(38,61.9558),new n.wr(39,62.96186),new n.wr(40,63.9642),new n.wr(41,64.97037)]),v(F(l.C7,1),zt,3,0,[new n.wr(19,44.00687),new n.wr(20,44.99451),new n.wr(21,45.98672),new n.wr(22,46.9761),new n.wr(23,47.96887),new n.wr(24,48.959623415),new n.wr(25,49.95424396),new n.wr(26,50.948215487),new n.wr(27,51.945570079),new n.wr(28,52.941294702),new n.wr(29,53.940363247),new n.wr(30,54.938049636),new n.wr(31,55.938909366),new n.wr(32,56.938287458),new n.wr(33,57.939986451),new n.wr(34,58.940447166),new n.wr(35,59.943193998),new n.wr(36,60.94446),new n.wr(37,61.94797),new n.wr(38,62.94981),new n.wr(39,63.95373),new n.wr(40,64.9561),new n.wr(41,65.96082),new n.wr(42,66.96382)]),v(F(l.C7,1),zt,3,0,[new n.wr(19,45.01456),new n.wr(20,46.00081),new n.wr(21,46.99289),new n.wr(22,47.98056),new n.wr(23,48.97361),new n.wr(24,49.962993316),new n.wr(25,50.956824936),new n.wr(26,51.948116526),new n.wr(27,52.945312282),new n.wr(28,53.939614836),new n.wr(29,54.938298029),new n.wr(30,55.934942133),new n.wr(31,56.935398707),new n.wr(32,57.933280458),new n.wr(33,58.934880493),new n.wr(34,59.934076943),new n.wr(35,60.936749461),new n.wr(36,61.936770495),new n.wr(37,62.940118442),new n.wr(38,63.94087),new n.wr(39,64.94494),new n.wr(40,65.94598),new n.wr(41,66.95),new n.wr(42,67.95251),new n.wr(43,68.9577)]),v(F(l.C7,1),zt,3,0,[new n.wr(21,48.00176),new n.wr(22,48.98972),new n.wr(23,49.98154),new n.wr(24,50.97072),new n.wr(25,51.96359),new n.wr(26,52.954224985),new n.wr(27,53.948464147),new n.wr(28,54.942003149),new n.wr(29,55.939843937),new n.wr(30,56.936296235),new n.wr(31,57.935757571),new n.wr(32,58.933200194),new n.wr(33,59.933822196),new n.wr(34,60.932479381),new n.wr(35,61.934054212),new n.wr(36,62.933615218),new n.wr(37,63.935813523),new n.wr(38,64.936484581),new n.wr(39,65.939825412),new n.wr(40,66.94061),new n.wr(41,67.94436),new n.wr(42,68.9452),new n.wr(43,69.94981),new n.wr(44,70.95173),new n.wr(45,71.95641)]),v(F(l.C7,1),zt,3,0,[new n.wr(22,49.99593),new n.wr(23,50.98772),new n.wr(24,51.97568),new n.wr(25,52.96846),new n.wr(26,53.957910508),new n.wr(27,54.951336329),new n.wr(28,55.942136339),new n.wr(29,56.939800489),new n.wr(30,57.935347922),new n.wr(31,58.934351553),new n.wr(32,59.930790633),new n.wr(33,60.931060442),new n.wr(34,61.928348763),new n.wr(35,62.929672948),new n.wr(36,63.927969574),new n.wr(37,64.930088013),new n.wr(38,65.929115232),new n.wr(39,66.931569638),new n.wr(40,67.931844932),new n.wr(41,68.935181837),new n.wr(42,69.93614),new n.wr(43,70.94),new n.wr(44,71.9413),new n.wr(45,72.94608),new n.wr(46,73.94791),new n.wr(47,74.95297),new n.wr(48,75.95533),new n.wr(49,76.96083),new n.wr(50,77.9638)]),v(F(l.C7,1),zt,3,0,[new n.wr(23,51.99718),new n.wr(24,52.98555),new n.wr(25,53.97671),new n.wr(26,54.96605),new n.wr(27,55.95856),new n.wr(28,56.949215695),new n.wr(29,57.944540734),new n.wr(30,58.939504114),new n.wr(31,59.937368123),new n.wr(32,60.933462181),new n.wr(33,61.932587299),new n.wr(34,62.929601079),new n.wr(35,63.929767865),new n.wr(36,64.927793707),new n.wr(37,65.928873041),new n.wr(38,66.927750294),new n.wr(39,67.929637875),new n.wr(40,68.929425281),new n.wr(41,69.932409287),new n.wr(42,70.932619818),new n.wr(43,71.93552),new n.wr(44,72.93649),new n.wr(45,73.9402),new n.wr(46,74.9417),new n.wr(47,75.94599),new n.wr(48,76.94795),new n.wr(49,77.95281),new n.wr(50,78.95528),new n.wr(51,79.96189)]),v(F(l.C7,1),zt,3,0,[new n.wr(24,53.99295),new n.wr(25,54.98398),new n.wr(26,55.97238),new n.wr(27,56.96491),new n.wr(28,57.954596465),new n.wr(29,58.949267074),new n.wr(30,59.941832031),new n.wr(31,60.939513907),new n.wr(32,61.934334132),new n.wr(33,62.933215563),new n.wr(34,63.929146578),new n.wr(35,64.929245079),new n.wr(36,65.926036763),new n.wr(37,66.927130859),new n.wr(38,67.924847566),new n.wr(39,68.926553538),new n.wr(40,69.92532487),new n.wr(41,70.927727195),new n.wr(42,71.926861122),new n.wr(43,72.929779469),new n.wr(44,73.929458261),new n.wr(45,74.932937379),new n.wr(46,75.933394207),new n.wr(47,76.937085857),new n.wr(48,77.938569576),new n.wr(49,78.942095175),new n.wr(50,79.944414722),new n.wr(51,80.95048),new n.wr(52,81.95484)]),v(F(l.C7,1),zt,3,0,[new n.wr(25,55.99491),new n.wr(26,56.98293),new n.wr(27,57.97425),new n.wr(28,58.96337),new n.wr(29,59.95706),new n.wr(30,60.94917),new n.wr(31,61.944179608),new n.wr(32,62.939141527),new n.wr(33,63.936838307),new n.wr(34,64.932739322),new n.wr(35,65.931592355),new n.wr(36,66.928204915),new n.wr(37,67.927983497),new n.wr(38,68.925580912),new n.wr(39,69.926027741),new n.wr(40,70.92470501),new n.wr(41,71.92636935),new n.wr(42,72.925169832),new n.wr(43,73.926940999),new n.wr(44,74.926500645),new n.wr(45,75.928928262),new n.wr(46,76.929281189),new n.wr(47,77.93165595),new n.wr(48,78.932916371),new n.wr(49,79.936588154),new n.wr(50,80.937752955),new n.wr(51,81.94316),new n.wr(52,82.94687),new n.wr(53,83.95234)]),v(F(l.C7,1),zt,3,0,[new n.wr(26,57.99101),new n.wr(27,58.98175),new n.wr(28,59.97019),new n.wr(29,60.96379),new n.wr(30,61.95465),new n.wr(31,62.94964),new n.wr(32,63.941572638),new n.wr(33,64.939440762),new n.wr(34,65.933846798),new n.wr(35,66.932738415),new n.wr(36,67.928097266),new n.wr(37,68.927972002),new n.wr(38,69.924250365),new n.wr(39,70.924953991),new n.wr(40,71.922076184),new n.wr(41,72.923459361),new n.wr(42,73.921178213),new n.wr(43,74.922859494),new n.wr(44,75.921402716),new n.wr(45,76.923548462),new n.wr(46,77.922852886),new n.wr(47,78.92540156),new n.wr(48,79.925444764),new n.wr(49,80.928821065),new n.wr(50,81.929550326),new n.wr(51,82.93451),new n.wr(52,83.93731),new n.wr(53,84.94269),new n.wr(54,85.94627)]),v(F(l.C7,1),zt,3,0,[new n.wr(27,59.99313),new n.wr(28,60.98062),new n.wr(29,61.9732),new n.wr(30,62.96369),new n.wr(31,63.957572),new n.wr(32,64.949484),new n.wr(33,65.944099147),new n.wr(34,66.939190417),new n.wr(35,67.936792976),new n.wr(36,68.932280154),new n.wr(37,69.930927811),new n.wr(38,70.927114724),new n.wr(39,71.926752647),new n.wr(40,72.923825288),new n.wr(41,73.923929076),new n.wr(42,74.921596417),new n.wr(43,75.922393933),new n.wr(44,76.920647703),new n.wr(45,77.921828577),new n.wr(46,78.920948498),new n.wr(47,79.922578162),new n.wr(48,80.922132884),new n.wr(49,81.924504668),new n.wr(50,82.924980625),new n.wr(51,83.92906),new n.wr(52,84.93181),new n.wr(53,85.93623),new n.wr(54,86.93958),new n.wr(55,87.94456),new n.wr(56,88.94923)]),v(F(l.C7,1),zt,3,0,[new n.wr(31,64.96466),new n.wr(32,65.95521),new n.wr(33,66.95009),new n.wr(34,67.94187),new n.wr(35,68.939562155),new n.wr(36,69.933504),new n.wr(37,70.931868378),new n.wr(38,71.927112313),new n.wr(39,72.9267668),new n.wr(40,73.922476561),new n.wr(41,74.922523571),new n.wr(42,75.919214107),new n.wr(43,76.91991461),new n.wr(44,77.917309522),new n.wr(45,78.918499802),new n.wr(46,79.916521828),new n.wr(47,80.917992931),new n.wr(48,81.9167),new n.wr(49,82.919119072),new n.wr(50,83.918464523),new n.wr(51,84.922244678),new n.wr(52,85.924271165),new n.wr(53,86.928520749),new n.wr(54,87.931423982),new n.wr(55,88.93602),new n.wr(56,89.93942),new n.wr(57,90.94537),new n.wr(58,91.94933)]),v(F(l.C7,1),zt,3,0,[new n.wr(32,66.96479),new n.wr(33,67.958248),new n.wr(34,68.950178),new n.wr(35,69.944208),new n.wr(36,70.939246),new n.wr(37,71.936496876),new n.wr(38,72.931794889),new n.wr(39,73.929891152),new n.wr(40,74.92577641),new n.wr(41,75.924541974),new n.wr(42,76.921380123),new n.wr(43,77.92114613),new n.wr(44,78.918337647),new n.wr(45,79.918529952),new n.wr(46,80.91629106),new n.wr(47,81.916804666),new n.wr(48,82.915180219),new n.wr(49,83.916503685),new n.wr(50,84.915608027),new n.wr(51,85.918797162),new n.wr(52,86.920710713),new n.wr(53,87.924065908),new n.wr(54,88.92638726),new n.wr(55,89.930634988),new n.wr(56,90.9339653),new n.wr(57,91.939255258),new n.wr(58,92.9431),new n.wr(59,93.94868)]),v(F(l.C7,1),zt,3,0,[new n.wr(33,68.96532),new n.wr(34,69.95601),new n.wr(35,70.95051),new n.wr(36,71.94190754),new n.wr(37,72.938931115),new n.wr(38,73.933258225),new n.wr(39,74.931033794),new n.wr(40,75.925948304),new n.wr(41,76.92466788),new n.wr(42,77.920386271),new n.wr(43,78.920082992),new n.wr(44,79.91637804),new n.wr(45,80.916592419),new n.wr(46,81.913484601),new n.wr(47,82.914135952),new n.wr(48,83.911506627),new n.wr(49,84.912526954),new n.wr(50,85.910610313),new n.wr(51,86.913354251),new n.wr(52,87.914446951),new n.wr(53,88.917632505),new n.wr(54,89.919523803),new n.wr(55,90.923442418),new n.wr(56,91.926152752),new n.wr(57,92.931265246),new n.wr(58,93.934362),new n.wr(59,94.93984),new n.wr(60,95.94307),new n.wr(61,96.94856)]),v(F(l.C7,1),zt,3,0,[new n.wr(34,70.96532),new n.wr(35,71.95908),new n.wr(36,72.950366),new n.wr(37,73.944470376),new n.wr(38,74.938569199),new n.wr(39,75.935071448),new n.wr(40,76.930406599),new n.wr(41,77.928141485),new n.wr(42,78.923996719),new n.wr(43,79.922519322),new n.wr(44,80.918994165),new n.wr(45,81.918207691),new n.wr(46,82.915111951),new n.wr(47,83.914384676),new n.wr(48,84.911789341),new n.wr(49,85.91116708),new n.wr(50,86.909183465),new n.wr(51,87.911318556),new n.wr(52,88.912279939),new n.wr(53,89.914808941),new n.wr(54,90.91653416),new n.wr(55,91.919725442),new n.wr(56,92.922032765),new n.wr(57,93.926407326),new n.wr(58,94.92931926),new n.wr(59,95.934283962),new n.wr(60,96.937342863),new n.wr(61,97.941703557),new n.wr(62,98.945420616),new n.wr(63,99.94987),new n.wr(64,100.953195994),new n.wr(65,101.95921)]),v(F(l.C7,1),zt,3,0,[new n.wr(35,72.96597),new n.wr(36,73.95631),new n.wr(37,74.94992),new n.wr(38,75.94161),new n.wr(39,76.937761511),new n.wr(40,77.932179362),new n.wr(41,78.929707076),new n.wr(42,79.924524588),new n.wr(43,80.923213095),new n.wr(44,81.918401258),new n.wr(45,82.917555029),new n.wr(46,83.913424778),new n.wr(47,84.912932689),new n.wr(48,85.909262351),new n.wr(49,86.908879316),new n.wr(50,87.905614339),new n.wr(51,88.907452906),new n.wr(52,89.907737596),new n.wr(53,90.910209845),new n.wr(54,91.911029895),new n.wr(55,92.91402241),new n.wr(56,93.915359856),new n.wr(57,94.919358213),new n.wr(58,95.921680473),new n.wr(59,96.926148757),new n.wr(60,97.928471177),new n.wr(61,98.933315038),new n.wr(62,99.935351729),new n.wr(63,100.940517434),new n.wr(64,101.943018795),new n.wr(65,102.94895),new n.wr(66,103.95233)]),v(F(l.C7,1),zt,3,0,[new n.wr(38,76.94962),new n.wr(39,77.9435),new n.wr(40,78.937350712),new n.wr(41,79.931982402),new n.wr(42,80.929128719),new n.wr(43,81.926792071),new n.wr(44,82.922352572),new n.wr(45,83.920387768),new n.wr(46,84.916427076),new n.wr(47,85.914887724),new n.wr(48,86.910877833),new n.wr(49,87.909503361),new n.wr(50,88.905847902),new n.wr(51,89.907151443),new n.wr(52,90.907303415),new n.wr(53,91.908946832),new n.wr(54,92.909581582),new n.wr(55,93.911594008),new n.wr(56,94.912823709),new n.wr(57,95.915897787),new n.wr(58,96.918131017),new n.wr(59,97.922219525),new n.wr(60,98.924634736),new n.wr(61,99.927756402),new n.wr(62,100.930313395),new n.wr(63,101.933555501),new n.wr(64,102.93694),new n.wr(65,103.94145),new n.wr(66,104.94509),new n.wr(67,105.95022)]),v(F(l.C7,1),zt,3,0,[new n.wr(39,78.94916),new n.wr(40,79.94055),new n.wr(41,80.936815296),new n.wr(42,81.931086249),new n.wr(43,82.92865213),new n.wr(44,83.92325),new n.wr(45,84.92146522),new n.wr(46,85.916472851),new n.wr(47,86.914816578),new n.wr(48,87.910226179),new n.wr(49,88.908888916),new n.wr(50,89.904703679),new n.wr(51,90.905644968),new n.wr(52,91.905040106),new n.wr(53,92.906475627),new n.wr(54,93.906315765),new n.wr(55,94.908042739),new n.wr(56,95.908275675),new n.wr(57,96.910950716),new n.wr(58,97.912746366),new n.wr(59,98.916511084),new n.wr(60,99.917761704),new n.wr(61,100.921139958),new n.wr(62,101.922981089),new n.wr(63,102.926597062),new n.wr(64,103.92878),new n.wr(65,104.93305),new n.wr(66,105.93591),new n.wr(67,106.94086),new n.wr(68,107.94428)]),v(F(l.C7,1),zt,3,0,[new n.wr(40,80.94905),new n.wr(41,81.94313),new n.wr(42,82.936703713),new n.wr(43,83.93357),new n.wr(44,84.927906486),new n.wr(45,85.925037588),new n.wr(46,86.920361435),new n.wr(47,87.91833144),new n.wr(48,88.913495503),new n.wr(49,89.911264109),new n.wr(50,90.906990538),new n.wr(51,91.907193214),new n.wr(52,92.906377543),new n.wr(53,93.907283457),new n.wr(54,94.906835178),new n.wr(55,95.908100076),new n.wr(56,96.908097144),new n.wr(57,97.91033069),new n.wr(58,98.911617864),new n.wr(59,99.914181434),new n.wr(60,100.915251567),new n.wr(61,101.918037417),new n.wr(62,102.919141297),new n.wr(63,103.922459464),new n.wr(64,104.923934023),new n.wr(65,105.92819),new n.wr(66,106.93031),new n.wr(67,107.93501),new n.wr(68,108.93763),new n.wr(69,109.94268)]),v(F(l.C7,1),zt,3,0,[new n.wr(41,82.94874),new n.wr(42,83.94009),new n.wr(43,84.93659),new n.wr(44,85.930695167),new n.wr(45,86.92732683),new n.wr(46,87.921952728),new n.wr(47,88.919480562),new n.wr(48,89.913936161),new n.wr(49,90.911750754),new n.wr(50,91.90681048),new n.wr(51,92.906812213),new n.wr(52,93.905087578),new n.wr(53,94.905841487),new n.wr(54,95.904678904),new n.wr(55,96.906021033),new n.wr(56,97.905407846),new n.wr(57,98.907711598),new n.wr(58,99.907477149),new n.wr(59,100.910346543),new n.wr(60,101.910297162),new n.wr(61,102.913204596),new n.wr(62,103.913758387),new n.wr(63,104.916972087),new n.wr(64,105.918134284),new n.wr(65,106.921694724),new n.wr(66,107.923973837),new n.wr(67,108.92781),new n.wr(68,109.92973),new n.wr(69,110.93451),new n.wr(70,111.93684),new n.wr(71,112.94203)]),v(F(l.C7,1),zt,3,0,[new n.wr(42,84.94894),new n.wr(43,85.94288),new n.wr(44,86.93653),new n.wr(45,87.93283),new n.wr(46,88.92754288),new n.wr(47,89.92355583),new n.wr(48,90.9184282),new n.wr(49,91.915259655),new n.wr(50,92.910248473),new n.wr(51,93.909656309),new n.wr(52,94.907656454),new n.wr(53,95.907870803),new n.wr(54,96.906364843),new n.wr(55,97.907215692),new n.wr(56,98.906254554),new n.wr(57,99.907657594),new n.wr(58,100.90731438),new n.wr(59,101.909212938),new n.wr(60,102.909178805),new n.wr(61,103.911444898),new n.wr(62,104.911658043),new n.wr(63,105.914355408),new n.wr(64,106.915081691),new n.wr(65,107.918479973),new n.wr(66,108.919980998),new n.wr(67,109.92339),new n.wr(68,110.92505),new n.wr(69,111.92924),new n.wr(70,112.93133),new n.wr(71,113.93588),new n.wr(72,114.93828)]),v(F(l.C7,1),zt,3,0,[new n.wr(43,86.94918),new n.wr(44,87.94042),new n.wr(45,88.93611),new n.wr(46,89.92978),new n.wr(47,90.926377434),new n.wr(48,91.92012),new n.wr(49,92.917051523),new n.wr(50,93.911359569),new n.wr(51,94.910412729),new n.wr(52,95.907597681),new n.wr(53,96.907554546),new n.wr(54,97.905287111),new n.wr(55,98.905939307),new n.wr(56,99.904219664),new n.wr(57,100.905582219),new n.wr(58,101.904349503),new n.wr(59,102.906323677),new n.wr(60,103.905430145),new n.wr(61,104.907750341),new n.wr(62,105.907326913),new n.wr(63,106.909907207),new n.wr(64,107.910192211),new n.wr(65,108.913201565),new n.wr(66,109.913966185),new n.wr(67,110.91756),new n.wr(68,111.918821673),new n.wr(69,112.92254),new n.wr(70,113.923891981),new n.wr(71,114.92831),new n.wr(72,115.93016),new n.wr(73,116.93479),new n.wr(74,117.93703)]),v(F(l.C7,1),zt,3,0,[new n.wr(44,88.94938),new n.wr(45,89.94287),new n.wr(46,90.93655),new n.wr(47,91.93198),new n.wr(48,92.92574),new n.wr(49,93.921698),new n.wr(50,94.915898541),new n.wr(51,95.914518212),new n.wr(52,96.911336643),new n.wr(53,97.910716431),new n.wr(54,98.908132101),new n.wr(55,99.90811663),new n.wr(56,100.906163526),new n.wr(57,101.906842845),new n.wr(58,102.905504182),new n.wr(59,103.906655315),new n.wr(60,104.905692444),new n.wr(61,105.907284615),new n.wr(62,106.90675054),new n.wr(63,107.908730768),new n.wr(64,108.908735621),new n.wr(65,109.910949525),new n.wr(66,110.91166),new n.wr(67,111.913969253),new n.wr(68,112.91542),new n.wr(69,113.91734336),new n.wr(70,114.920124676),new n.wr(71,115.922746643),new n.wr(72,116.92535),new n.wr(73,117.92943),new n.wr(74,118.93136),new n.wr(75,119.93578),new n.wr(76,120.93808)]),v(F(l.C7,1),zt,3,0,[new n.wr(45,90.94948),new n.wr(46,91.94042),new n.wr(47,92.93591),new n.wr(48,93.92877),new n.wr(49,94.92469),new n.wr(50,95.91822194),new n.wr(51,96.916478921),new n.wr(52,97.912720751),new n.wr(53,98.911767757),new n.wr(54,99.908504596),new n.wr(55,100.908289144),new n.wr(56,101.905607716),new n.wr(57,102.906087204),new n.wr(58,103.904034912),new n.wr(59,104.905084046),new n.wr(60,105.903483087),new n.wr(61,106.905128453),new n.wr(62,107.903894451),new n.wr(63,108.905953535),new n.wr(64,109.905152385),new n.wr(65,110.907643952),new n.wr(66,111.907313277),new n.wr(67,112.910151346),new n.wr(68,113.910365322),new n.wr(69,114.91368341),new n.wr(70,115.914158288),new n.wr(71,116.91784),new n.wr(72,117.918983915),new n.wr(73,118.92268),new n.wr(74,119.92403),new n.wr(75,120.92818),new n.wr(76,121.9298),new n.wr(77,122.93426)]),v(F(l.C7,1),zt,3,0,[new n.wr(47,93.94278),new n.wr(48,94.93548),new n.wr(49,95.93068),new n.wr(50,96.924),new n.wr(51,97.921759995),new n.wr(52,98.917597103),new n.wr(53,99.916069387),new n.wr(54,100.912802135),new n.wr(55,101.911999996),new n.wr(56,102.908972453),new n.wr(57,103.908628228),new n.wr(58,104.906528234),new n.wr(59,105.906666431),new n.wr(60,106.90509302),new n.wr(61,107.905953705),new n.wr(62,108.904755514),new n.wr(63,109.90611046),new n.wr(64,110.905294679),new n.wr(65,111.907004132),new n.wr(66,112.906565708),new n.wr(67,113.908807907),new n.wr(68,114.908762282),new n.wr(69,115.911359558),new n.wr(70,116.911684187),new n.wr(71,117.914582383),new n.wr(72,118.915666045),new n.wr(73,119.918788609),new n.wr(74,120.919851074),new n.wr(75,121.92332),new n.wr(76,122.9249),new n.wr(77,123.92853),new n.wr(78,124.93054),new n.wr(79,125.9345),new n.wr(80,126.93688)]),v(F(l.C7,1),zt,3,0,[new n.wr(48,95.93977),new n.wr(49,96.93494),new n.wr(50,97.927579),new n.wr(51,98.92501),new n.wr(52,99.920230232),new n.wr(53,100.918681442),new n.wr(54,101.914777255),new n.wr(55,102.913418952),new n.wr(56,103.909848091),new n.wr(57,104.909467818),new n.wr(58,105.906458007),new n.wr(59,106.906614232),new n.wr(60,107.904183403),new n.wr(61,108.904985569),new n.wr(62,109.903005578),new n.wr(63,110.904181628),new n.wr(64,111.902757226),new n.wr(65,112.904400947),new n.wr(66,113.903358121),new n.wr(67,114.905430553),new n.wr(68,115.904755434),new n.wr(69,116.907218242),new n.wr(70,117.906914144),new n.wr(71,118.909922582),new n.wr(72,119.909851352),new n.wr(73,120.91298039),new n.wr(74,121.9135),new n.wr(75,122.917003675),new n.wr(76,123.917648302),new n.wr(77,124.92124717),new n.wr(78,125.922353996),new n.wr(79,126.926434822),new n.wr(80,127.927760617),new n.wr(81,128.93226),new n.wr(82,129.93398)]),v(F(l.C7,1),zt,3,0,[new n.wr(49,97.94224),new n.wr(50,98.93461),new n.wr(51,99.931149033),new n.wr(52,100.92656),new n.wr(53,101.924707541),new n.wr(54,102.919913896),new n.wr(55,103.918338416),new n.wr(56,104.914673434),new n.wr(57,105.913461134),new n.wr(58,106.910292195),new n.wr(59,107.909719683),new n.wr(60,108.907154078),new n.wr(61,109.907168783),new n.wr(62,110.905110677),new n.wr(63,111.905533338),new n.wr(64,112.904061223),new n.wr(65,113.904916758),new n.wr(66,114.903878328),new n.wr(67,115.905259995),new n.wr(68,116.904515731),new n.wr(69,117.906354623),new n.wr(70,118.905846334),new n.wr(71,119.907961505),new n.wr(72,120.907848847),new n.wr(73,121.910277103),new n.wr(74,122.910438951),new n.wr(75,123.913175916),new n.wr(76,124.913601387),new n.wr(77,125.916464532),new n.wr(78,126.917344048),new n.wr(79,127.920170658),new n.wr(80,128.921657958),new n.wr(81,129.924854941),new n.wr(82,130.926767408),new n.wr(83,131.932919005),new n.wr(84,132.93834),new n.wr(85,133.94466)]),v(F(l.C7,1),zt,3,0,[new n.wr(50,99.938954),new n.wr(51,100.93606),new n.wr(52,101.93049),new n.wr(53,102.92813),new n.wr(54,103.923185469),new n.wr(55,104.921390409),new n.wr(56,105.916880472),new n.wr(57,106.915666702),new n.wr(58,107.911965339),new n.wr(59,108.911286879),new n.wr(60,109.907852688),new n.wr(61,110.907735404),new n.wr(62,111.90482081),new n.wr(63,112.905173373),new n.wr(64,113.902781816),new n.wr(65,114.903345973),new n.wr(66,115.901744149),new n.wr(67,116.902953765),new n.wr(68,117.901606328),new n.wr(69,118.90330888),new n.wr(70,119.902196571),new n.wr(71,120.904236867),new n.wr(72,121.903440138),new n.wr(73,122.905721901),new n.wr(74,123.90527463),new n.wr(75,124.907784924),new n.wr(76,125.907653953),new n.wr(77,126.91035098),new n.wr(78,127.910534953),new n.wr(79,128.913439976),new n.wr(80,129.913852185),new n.wr(81,130.916919144),new n.wr(82,131.917744455),new n.wr(83,132.923814085),new n.wr(84,133.928463576),new n.wr(85,134.93473),new n.wr(86,135.93934),new n.wr(87,136.94579)]),v(F(l.C7,1),zt,3,0,[new n.wr(52,102.94012),new n.wr(53,103.936287),new n.wr(54,104.931528593),new n.wr(55,105.928183134),new n.wr(56,106.92415),new n.wr(57,107.92216),new n.wr(58,108.918136092),new n.wr(59,109.917533911),new n.wr(60,110.912534147),new n.wr(61,111.91239464),new n.wr(62,112.909377941),new n.wr(63,113.909095876),new n.wr(64,114.906598812),new n.wr(65,115.906797235),new n.wr(66,116.90483959),new n.wr(67,117.905531885),new n.wr(68,118.90394646),new n.wr(69,119.905074315),new n.wr(70,120.903818044),new n.wr(71,121.905175415),new n.wr(72,122.904215696),new n.wr(73,123.905937525),new n.wr(74,124.905247804),new n.wr(75,125.907248153),new n.wr(76,126.906914564),new n.wr(77,127.90916733),new n.wr(78,128.909150092),new n.wr(79,129.911546459),new n.wr(80,130.911946487),new n.wr(81,131.914413247),new n.wr(82,132.915236466),new n.wr(83,133.920551554),new n.wr(84,134.925167962),new n.wr(85,135.93066),new n.wr(86,136.93531),new n.wr(87,137.94096),new n.wr(88,138.94571)]),v(F(l.C7,1),zt,3,0,[new n.wr(54,105.937702),new n.wr(55,106.935036),new n.wr(56,107.929486838),new n.wr(57,108.927456483),new n.wr(58,109.922407164),new n.wr(59,110.921120589),new n.wr(60,111.917061617),new n.wr(61,112.915452551),new n.wr(62,113.912498025),new n.wr(63,114.911578627),new n.wr(64,115.908420253),new n.wr(65,116.90863418),new n.wr(66,117.905825187),new n.wr(67,118.90640811),new n.wr(68,119.904019891),new n.wr(69,120.904929815),new n.wr(70,121.903047064),new n.wr(71,122.904272951),new n.wr(72,123.902819466),new n.wr(73,124.904424718),new n.wr(74,125.903305543),new n.wr(75,126.90521729),new n.wr(76,127.904461383),new n.wr(77,128.906595593),new n.wr(78,129.906222753),new n.wr(79,130.90852188),new n.wr(80,131.908523782),new n.wr(81,132.910939068),new n.wr(82,133.911540546),new n.wr(83,134.916450782),new n.wr(84,135.920103155),new n.wr(85,136.925324769),new n.wr(86,137.92922),new n.wr(87,138.93473),new n.wr(88,139.9387),new n.wr(89,140.94439),new n.wr(90,141.9485)]),v(F(l.C7,1),zt,3,0,[new n.wr(55,107.943291),new n.wr(56,108.938191658),new n.wr(57,109.934634181),new n.wr(58,110.930276),new n.wr(59,111.92797),new n.wr(60,112.923644245),new n.wr(61,113.92185),new n.wr(62,114.918272),new n.wr(63,115.916735014),new n.wr(64,116.913647692),new n.wr(65,117.91337523),new n.wr(66,118.910180837),new n.wr(67,119.910047843),new n.wr(68,120.907366063),new n.wr(69,121.907592451),new n.wr(70,122.905597944),new n.wr(71,123.906211423),new n.wr(72,124.90462415),new n.wr(73,125.905619387),new n.wr(74,126.90446842),new n.wr(75,127.905805254),new n.wr(76,128.904987487),new n.wr(77,129.906674018),new n.wr(78,130.906124168),new n.wr(79,131.907994525),new n.wr(80,132.907806465),new n.wr(81,133.909876552),new n.wr(82,134.91005031),new n.wr(83,135.914655105),new n.wr(84,136.917872653),new n.wr(85,137.922383666),new n.wr(86,138.926093402),new n.wr(87,139.93121),new n.wr(88,140.93483),new n.wr(89,141.94018),new n.wr(90,142.94407),new n.wr(91,143.94961)]),v(F(l.C7,1),zt,3,0,[new n.wr(56,109.944476),new n.wr(57,110.941632),new n.wr(58,111.93566535),new n.wr(59,112.933382836),new n.wr(60,113.928145),new n.wr(61,114.926979032),new n.wr(62,115.921394197),new n.wr(63,116.920564355),new n.wr(64,117.91657092),new n.wr(65,118.915554295),new n.wr(66,119.91215199),new n.wr(67,120.911386497),new n.wr(68,121.908548396),new n.wr(69,122.908470748),new n.wr(70,123.905895774),new n.wr(71,124.906398236),new n.wr(72,125.904268868),new n.wr(73,126.905179581),new n.wr(74,127.903530436),new n.wr(75,128.904779458),new n.wr(76,129.903507903),new n.wr(77,130.90508192),new n.wr(78,131.904154457),new n.wr(79,132.90590566),new n.wr(80,133.905394504),new n.wr(81,134.907207499),new n.wr(82,135.907219526),new n.wr(83,136.911562939),new n.wr(84,137.913988549),new n.wr(85,138.918786859),new n.wr(86,139.921635665),new n.wr(87,140.926646282),new n.wr(88,141.929702981),new n.wr(89,142.93489),new n.wr(90,143.93823),new n.wr(91,144.94367),new n.wr(92,145.9473),new n.wr(93,146.95301)]),v(F(l.C7,1),zt,3,0,[new n.wr(57,111.950331),new n.wr(58,112.944535512),new n.wr(59,113.940841319),new n.wr(60,114.935939),new n.wr(61,115.932914152),new n.wr(62,116.928639484),new n.wr(63,117.926554883),new n.wr(64,118.922370879),new n.wr(65,119.920678219),new n.wr(66,120.917183637),new n.wr(67,121.916121946),new n.wr(68,122.912990168),new n.wr(69,123.912245731),new n.wr(70,124.909724871),new n.wr(71,125.909447953),new n.wr(72,126.9074176),new n.wr(73,127.907747919),new n.wr(74,128.906063369),new n.wr(75,129.906706163),new n.wr(76,130.905460232),new n.wr(77,131.906429799),new n.wr(78,132.90544687),new n.wr(79,133.906713419),new n.wr(80,134.905971903),new n.wr(81,135.907305741),new n.wr(82,136.907083505),new n.wr(83,137.911010537),new n.wr(84,138.913357921),new n.wr(85,139.917277075),new n.wr(86,140.920043984),new n.wr(87,141.924292317),new n.wr(88,142.927330292),new n.wr(89,143.932027373),new n.wr(90,144.935388226),new n.wr(91,145.940162028),new n.wr(92,146.943864435),new n.wr(93,147.948899539),new n.wr(94,148.95272),new n.wr(95,149.95797),new n.wr(96,150.962)]),v(F(l.C7,1),zt,3,0,[new n.wr(58,113.950941),new n.wr(59,114.94771),new n.wr(60,115.94168),new n.wr(61,116.937700229),new n.wr(62,117.93344),new n.wr(63,118.931051927),new n.wr(64,119.926045941),new n.wr(65,120.924485908),new n.wr(66,121.92026),new n.wr(67,122.91885),new n.wr(68,123.915088437),new n.wr(69,124.914620234),new n.wr(70,125.911244146),new n.wr(71,126.911121328),new n.wr(72,127.90830887),new n.wr(73,128.908673749),new n.wr(74,129.906310478),new n.wr(75,130.906930798),new n.wr(76,131.905056152),new n.wr(77,132.906002368),new n.wr(78,133.904503347),new n.wr(79,134.905682749),new n.wr(80,135.904570109),new n.wr(81,136.905821414),new n.wr(82,137.905241273),new n.wr(83,138.908835384),new n.wr(84,139.910599485),new n.wr(85,140.914406439),new n.wr(86,141.916448175),new n.wr(87,142.920617184),new n.wr(88,143.922940468),new n.wr(89,144.926923807),new n.wr(90,145.930106645),new n.wr(91,146.933992519),new n.wr(92,147.937682377),new n.wr(93,148.94246),new n.wr(94,149.94562),new n.wr(95,150.9507),new n.wr(96,151.95416),new n.wr(97,152.95961)]),v(F(l.C7,1),zt,3,0,[new n.wr(60,116.95001),new n.wr(61,117.94657),new n.wr(62,118.94099),new n.wr(63,119.93807),new n.wr(64,120.93301),new n.wr(65,121.93071),new n.wr(66,122.92624),new n.wr(67,123.92453),new n.wr(68,124.92067),new n.wr(69,125.91937),new n.wr(70,126.91616),new n.wr(71,127.91544794),new n.wr(72,128.912667334),new n.wr(73,129.91232),new n.wr(74,130.910108489),new n.wr(75,131.910110399),new n.wr(76,132.908396372),new n.wr(77,133.908489607),new n.wr(78,134.906971003),new n.wr(79,135.907651181),new n.wr(80,136.906465656),new n.wr(81,137.907106826),new n.wr(82,138.90634816),new n.wr(83,139.909472552),new n.wr(84,140.910957016),new n.wr(85,141.914074489),new n.wr(86,142.916058646),new n.wr(87,143.919591666),new n.wr(88,144.92163837),new n.wr(89,145.925700146),new n.wr(90,146.927819639),new n.wr(91,147.932191197),new n.wr(92,148.93437),new n.wr(93,149.93857),new n.wr(94,150.94156),new n.wr(95,151.94611),new n.wr(96,152.94945),new n.wr(97,153.9544),new n.wr(98,154.95813)]),v(F(l.C7,1),zt,3,0,[new n.wr(61,118.95276),new n.wr(62,119.94664),new n.wr(63,120.94367),new n.wr(64,121.93801),new n.wr(65,122.93551),new n.wr(66,123.93052),new n.wr(67,124.92854),new n.wr(68,125.9241),new n.wr(69,126.92275),new n.wr(70,127.91887),new n.wr(71,128.918679183),new n.wr(72,129.914339361),new n.wr(73,130.914424137),new n.wr(74,131.91149),new n.wr(75,132.91155),new n.wr(76,133.909026379),new n.wr(77,134.909145555),new n.wr(78,135.907143574),new n.wr(79,136.907777634),new n.wr(80,137.905985574),new n.wr(81,138.906646605),new n.wr(82,139.905434035),new n.wr(83,140.908271103),new n.wr(84,141.909239733),new n.wr(85,142.912381158),new n.wr(86,143.913642686),new n.wr(87,144.917227871),new n.wr(88,145.918689722),new n.wr(89,146.922510962),new n.wr(90,147.924394738),new n.wr(91,148.928289207),new n.wr(92,149.930226399),new n.wr(93,150.93404),new n.wr(94,151.93638),new n.wr(95,152.94058),new n.wr(96,153.94332),new n.wr(97,154.94804),new n.wr(98,155.95126),new n.wr(99,156.95634)]),v(F(l.C7,1),zt,3,0,[new n.wr(62,120.955364),new n.wr(63,121.95165),new n.wr(64,122.94596),new n.wr(65,123.94296),new n.wr(66,124.93783),new n.wr(67,125.93531),new n.wr(68,126.93083),new n.wr(69,127.9288),new n.wr(70,128.92486),new n.wr(71,129.92338),new n.wr(72,130.920060245),new n.wr(73,131.91912),new n.wr(74,132.9162),new n.wr(75,133.915672),new n.wr(76,134.91313914),new n.wr(77,135.912646935),new n.wr(78,136.910678351),new n.wr(79,137.910748891),new n.wr(80,138.908932181),new n.wr(81,139.909071204),new n.wr(82,140.907647726),new n.wr(83,141.910039865),new n.wr(84,142.910812233),new n.wr(85,143.913300595),new n.wr(86,144.914506897),new n.wr(87,145.917588016),new n.wr(88,146.918979001),new n.wr(89,147.922183237),new n.wr(90,148.923791056),new n.wr(91,149.926995031),new n.wr(92,150.928227869),new n.wr(93,151.9316),new n.wr(94,152.93365),new n.wr(95,153.93739),new n.wr(96,154.93999),new n.wr(97,155.94412),new n.wr(98,156.94717),new n.wr(99,157.95178),new n.wr(100,158.95523)]),v(F(l.C7,1),zt,3,0,[new n.wr(66,125.94307),new n.wr(67,126.9405),new n.wr(68,127.93539),new n.wr(69,128.932385),new n.wr(70,129.92878),new n.wr(71,130.927102697),new n.wr(72,131.92312),new n.wr(73,132.92221),new n.wr(74,133.918645),new n.wr(75,134.91824),new n.wr(76,135.915020542),new n.wr(77,136.91463973),new n.wr(78,137.91291745),new n.wr(79,138.91192415),new n.wr(80,139.909309824),new n.wr(81,140.9096048),new n.wr(82,141.907718643),new n.wr(83,142.909809626),new n.wr(84,143.910082629),new n.wr(85,144.912568847),new n.wr(86,145.913112139),new n.wr(87,146.916095794),new n.wr(88,147.916888516),new n.wr(89,148.92014419),new n.wr(90,149.920886563),new n.wr(91,150.923824739),new n.wr(92,151.924682428),new n.wr(93,152.927694534),new n.wr(94,153.929483295),new n.wr(95,154.932629551),new n.wr(96,155.9352),new n.wr(97,156.93927),new n.wr(98,157.94187),new n.wr(99,158.94639),new n.wr(100,159.94939),new n.wr(101,160.95433)]),v(F(l.C7,1),zt,3,0,[new n.wr(67,127.94826),new n.wr(68,128.94316),new n.wr(69,129.94045),new n.wr(70,130.9358),new n.wr(71,131.93375),new n.wr(72,132.92972),new n.wr(73,133.92849),new n.wr(74,134.924617),new n.wr(75,135.923447865),new n.wr(76,136.920713),new n.wr(77,137.920432261),new n.wr(78,138.916759814),new n.wr(79,139.915801649),new n.wr(80,140.913606636),new n.wr(81,141.912950738),new n.wr(82,142.910927571),new n.wr(83,143.912585768),new n.wr(84,144.912743879),new n.wr(85,145.914692165),new n.wr(86,146.915133898),new n.wr(87,147.917467786),new n.wr(88,148.918329195),new n.wr(89,149.920979477),new n.wr(90,150.921202693),new n.wr(91,151.923490557),new n.wr(92,152.924113189),new n.wr(93,153.926547019),new n.wr(94,154.928097047),new n.wr(95,155.931060357),new n.wr(96,156.9332),new n.wr(97,157.93669),new n.wr(98,158.93913),new n.wr(99,159.94299),new n.wr(100,160.94586),new n.wr(101,161.95029),new n.wr(102,162.95352)]),v(F(l.C7,1),zt,3,0,[new n.wr(68,129.94863),new n.wr(69,130.94589),new n.wr(70,131.94082),new n.wr(71,132.93873),new n.wr(72,133.93402),new n.wr(73,134.93235),new n.wr(74,135.9283),new n.wr(75,136.927046709),new n.wr(76,137.92354),new n.wr(77,138.922302),new n.wr(78,139.918991),new n.wr(79,140.918468512),new n.wr(80,141.915193274),new n.wr(81,142.914623555),new n.wr(82,143.91199473),new n.wr(83,144.913405611),new n.wr(84,145.91303676),new n.wr(85,146.914893275),new n.wr(86,147.914817914),new n.wr(87,148.917179521),new n.wr(88,149.917271454),new n.wr(89,150.919928351),new n.wr(90,151.919728244),new n.wr(91,152.922093907),new n.wr(92,153.922205303),new n.wr(93,154.92463594),new n.wr(94,155.925526236),new n.wr(95,156.928354506),new n.wr(96,157.929987938),new n.wr(97,158.9332),new n.wr(98,159.93514),new n.wr(99,160.93883),new n.wr(100,161.94122),new n.wr(101,162.94536),new n.wr(102,163.94828),new n.wr(103,164.95298)]),v(F(l.C7,1),zt,3,0,[new n.wr(69,131.95416),new n.wr(70,132.9489),new n.wr(71,133.94632),new n.wr(72,134.94172),new n.wr(73,135.9395),new n.wr(74,136.93521),new n.wr(75,137.93345),new n.wr(76,138.92882915),new n.wr(77,139.928083921),new n.wr(78,140.924885867),new n.wr(79,141.923400033),new n.wr(80,142.920286634),new n.wr(81,143.918774116),new n.wr(82,144.916261285),new n.wr(83,145.917199714),new n.wr(84,146.916741206),new n.wr(85,147.918153775),new n.wr(86,148.917925922),new n.wr(87,149.919698294),new n.wr(88,150.919846022),new n.wr(89,151.921740399),new n.wr(90,152.921226219),new n.wr(91,153.922975386),new n.wr(92,154.922889429),new n.wr(93,155.924750855),new n.wr(94,156.925419435),new n.wr(95,157.927841923),new n.wr(96,158.9290845),new n.wr(97,159.931460406),new n.wr(98,160.93368),new n.wr(99,161.93704),new n.wr(100,162.93921),new n.wr(101,163.94299),new n.wr(102,164.94572),new n.wr(103,165.94997),new n.wr(104,166.95305)]),v(F(l.C7,1),zt,3,0,[new n.wr(72,135.94707),new n.wr(73,136.94465),new n.wr(74,137.93997),new n.wr(75,138.93808),new n.wr(76,139.933236934),new n.wr(77,140.93221),new n.wr(78,141.927908919),new n.wr(79,142.926738636),new n.wr(80,143.923390357),new n.wr(81,144.921687498),new n.wr(82,145.918305344),new n.wr(83,146.919089446),new n.wr(84,147.918109771),new n.wr(85,148.919336427),new n.wr(86,149.918655455),new n.wr(87,150.920344273),new n.wr(88,151.919787882),new n.wr(89,152.921746283),new n.wr(90,153.920862271),new n.wr(91,154.922618801),new n.wr(92,155.922119552),new n.wr(93,156.923956686),new n.wr(94,157.924100533),new n.wr(95,158.926385075),new n.wr(96,159.927050616),new n.wr(97,160.929665688),new n.wr(98,161.930981211),new n.wr(99,162.93399),new n.wr(100,163.93586),new n.wr(101,164.93938),new n.wr(102,165.9416),new n.wr(103,166.94557),new n.wr(104,167.94836),new n.wr(105,168.95287)]),v(F(l.C7,1),zt,3,0,[new n.wr(73,137.95287),new n.wr(74,138.94803),new n.wr(75,139.945367985),new n.wr(76,140.94116),new n.wr(77,141.939073781),new n.wr(78,142.93475),new n.wr(79,143.93253),new n.wr(80,144.92888),new n.wr(81,145.927180629),new n.wr(82,146.924037176),new n.wr(83,147.924298636),new n.wr(84,148.92324163),new n.wr(85,149.923654158),new n.wr(86,150.923098169),new n.wr(87,151.924071324),new n.wr(88,152.923430858),new n.wr(89,153.924686236),new n.wr(90,154.923500411),new n.wr(91,155.924743749),new n.wr(92,156.924021155),new n.wr(93,157.92541026),new n.wr(94,158.925343135),new n.wr(95,159.927164021),new n.wr(96,160.927566289),new n.wr(97,161.929484803),new n.wr(98,162.930643942),new n.wr(99,163.933347253),new n.wr(100,164.93488),new n.wr(101,165.93805),new n.wr(102,166.94005),new n.wr(103,167.94364),new n.wr(104,168.94622),new n.wr(105,169.95025),new n.wr(106,170.9533)]),v(F(l.C7,1),zt,3,0,[new n.wr(74,139.95379),new n.wr(75,140.95119),new n.wr(76,141.946695946),new n.wr(77,142.94383),new n.wr(78,143.93907),new n.wr(79,144.936717),new n.wr(80,145.932720118),new n.wr(81,146.930878496),new n.wr(82,147.927177882),new n.wr(83,148.927333981),new n.wr(84,149.925579728),new n.wr(85,150.92617963),new n.wr(86,151.924713874),new n.wr(87,152.925760865),new n.wr(88,153.924422046),new n.wr(89,154.92574895),new n.wr(90,155.924278273),new n.wr(91,156.925461256),new n.wr(92,157.924404637),new n.wr(93,158.92573566),new n.wr(94,159.925193718),new n.wr(95,160.926929595),new n.wr(96,161.926794731),new n.wr(97,162.928727532),new n.wr(98,163.929171165),new n.wr(99,164.931699828),new n.wr(100,165.932803241),new n.wr(101,166.935649025),new n.wr(102,167.93723),new n.wr(103,168.940303648),new n.wr(104,169.94267),new n.wr(105,170.94648),new n.wr(106,171.94911),new n.wr(107,172.95344)]),v(F(l.C7,1),zt,3,0,[new n.wr(75,141.95986),new n.wr(76,142.95469),new n.wr(77,143.95164),new n.wr(78,144.94688),new n.wr(79,145.9441),new n.wr(80,146.93984),new n.wr(81,147.937269),new n.wr(82,148.933789944),new n.wr(83,149.932760914),new n.wr(84,150.931680791),new n.wr(85,151.931740598),new n.wr(86,152.930194506),new n.wr(87,153.930596268),new n.wr(88,154.929079084),new n.wr(89,155.929001869),new n.wr(90,156.928188059),new n.wr(91,157.92894573),new n.wr(92,158.927708537),new n.wr(93,159.928725679),new n.wr(94,160.927851662),new n.wr(95,161.92909242),new n.wr(96,162.928730286),new n.wr(97,163.930230577),new n.wr(98,164.930319169),new n.wr(99,165.932281267),new n.wr(100,166.933126195),new n.wr(101,167.935496424),new n.wr(102,168.936868306),new n.wr(103,169.939614951),new n.wr(104,170.941461227),new n.wr(105,171.94482),new n.wr(106,172.94729),new n.wr(107,173.95115),new n.wr(108,174.95405)]),v(F(l.C7,1),zt,3,0,[new n.wr(76,143.96059),new n.wr(77,144.95746),new n.wr(78,145.95212),new n.wr(79,146.94931),new n.wr(80,147.94444),new n.wr(81,148.942780527),new n.wr(82,149.937171034),new n.wr(83,150.93746),new n.wr(84,151.935078452),new n.wr(85,152.935093125),new n.wr(86,153.932777294),new n.wr(87,154.933204273),new n.wr(88,155.931015001),new n.wr(89,156.931945517),new n.wr(90,157.929912),new n.wr(91,158.930680718),new n.wr(92,159.929078924),new n.wr(93,160.930001348),new n.wr(94,161.928774923),new n.wr(95,162.930029273),new n.wr(96,163.929196996),new n.wr(97,164.9307228),new n.wr(98,165.93028997),new n.wr(99,166.932045448),new n.wr(100,167.932367781),new n.wr(101,168.934588082),new n.wr(102,169.935460334),new n.wr(103,170.938025885),new n.wr(104,171.939352149),new n.wr(105,172.9424),new n.wr(106,173.94434),new n.wr(107,174.94793),new n.wr(108,175.95029),new n.wr(109,176.95437)]),v(F(l.C7,1),zt,3,0,[new n.wr(77,145.966495),new n.wr(78,146.961081),new n.wr(79,147.95755),new n.wr(80,148.95265),new n.wr(81,149.94967),new n.wr(82,150.944842),new n.wr(83,151.9443),new n.wr(84,152.942027631),new n.wr(85,153.940832325),new n.wr(86,154.939191562),new n.wr(87,155.939006895),new n.wr(88,156.936756069),new n.wr(89,157.936996),new n.wr(90,158.934808966),new n.wr(91,159.935090772),new n.wr(92,160.933398042),new n.wr(93,161.933970147),new n.wr(94,162.932647648),new n.wr(95,163.933450972),new n.wr(96,164.932432463),new n.wr(97,165.933553133),new n.wr(98,166.932848844),new n.wr(99,167.934170375),new n.wr(100,168.934211117),new n.wr(101,169.935797877),new n.wr(102,170.936425817),new n.wr(103,171.938396118),new n.wr(104,172.939600336),new n.wr(105,173.942164618),new n.wr(106,174.943832897),new n.wr(107,175.946991412),new n.wr(108,176.94904),new n.wr(109,177.95264),new n.wr(110,178.95534)]),v(F(l.C7,1),zt,3,0,[new n.wr(78,147.96676),new n.wr(79,148.96348),new n.wr(80,149.95799),new n.wr(81,150.954657965),new n.wr(82,151.950167),new n.wr(83,152.94921),new n.wr(84,153.945651145),new n.wr(85,154.945792),new n.wr(86,155.942847109),new n.wr(87,156.94265865),new n.wr(88,157.939857897),new n.wr(89,158.940153735),new n.wr(90,159.93756),new n.wr(91,160.937357719),new n.wr(92,161.93575),new n.wr(93,162.936265492),new n.wr(94,163.93452),new n.wr(95,164.935397592),new n.wr(96,165.933879623),new n.wr(97,166.934946862),new n.wr(98,167.933894465),new n.wr(99,168.93518712),new n.wr(100,169.934758652),new n.wr(101,170.936322297),new n.wr(102,171.936377696),new n.wr(103,172.938206756),new n.wr(104,173.938858101),new n.wr(105,174.941272494),new n.wr(106,175.942568409),new n.wr(107,176.945257126),new n.wr(108,177.946643396),new n.wr(109,178.95017),new n.wr(110,179.95233),new n.wr(111,180.95615)]),v(F(l.C7,1),zt,3,0,[new n.wr(79,149.972668),new n.wr(80,150.967147),new n.wr(81,151.96361),new n.wr(82,152.95869),new n.wr(83,153.9571),new n.wr(84,154.953641324),new n.wr(85,155.952907),new n.wr(86,156.950101536),new n.wr(87,157.948577981),new n.wr(88,158.946615113),new n.wr(89,159.945383),new n.wr(90,160.943047504),new n.wr(91,161.943222),new n.wr(92,162.941203796),new n.wr(93,163.941215),new n.wr(94,164.939605886),new n.wr(95,165.939762646),new n.wr(96,166.938307056),new n.wr(97,167.938698576),new n.wr(98,168.937648757),new n.wr(99,169.93847219),new n.wr(100,170.937909903),new n.wr(101,171.939082239),new n.wr(102,172.938926901),new n.wr(103,173.940333522),new n.wr(104,174.940767904),new n.wr(105,175.942682399),new n.wr(106,176.943754987),new n.wr(107,177.945951366),new n.wr(108,178.947324216),new n.wr(109,179.949879968),new n.wr(110,180.95197),new n.wr(111,181.95521),new n.wr(112,182.95757),new n.wr(113,183.96117)]),v(F(l.C7,1),zt,3,0,[new n.wr(82,153.96425),new n.wr(83,154.96276),new n.wr(84,155.959247),new n.wr(85,156.958127),new n.wr(86,157.95405528),new n.wr(87,158.954003),new n.wr(88,159.950713588),new n.wr(89,160.950330852),new n.wr(90,161.947202977),new n.wr(91,162.947057),new n.wr(92,163.944422),new n.wr(93,164.94454),new n.wr(94,165.94225),new n.wr(95,166.9426),new n.wr(96,167.94063),new n.wr(97,168.941158567),new n.wr(98,169.93965),new n.wr(99,170.94049),new n.wr(100,171.93945798),new n.wr(101,172.94065),new n.wr(102,173.940040159),new n.wr(103,174.941502991),new n.wr(104,175.941401828),new n.wr(105,176.943220013),new n.wr(106,177.943697732),new n.wr(107,178.945815073),new n.wr(108,179.94654876),new n.wr(109,180.949099124),new n.wr(110,181.950552893),new n.wr(111,182.953531012),new n.wr(112,183.95544788),new n.wr(113,184.95878),new n.wr(114,185.96092)]),v(F(l.C7,1),zt,3,0,[new n.wr(83,155.971689),new n.wr(84,156.968145),new n.wr(85,157.966368),new n.wr(86,158.96232309),new n.wr(87,159.961358),new n.wr(88,160.958372992),new n.wr(89,161.956556553),new n.wr(90,162.95431665),new n.wr(91,163.95357),new n.wr(92,164.950817),new n.wr(93,165.95047),new n.wr(94,166.948639),new n.wr(95,167.947787),new n.wr(96,168.94592),new n.wr(97,169.94609),new n.wr(98,170.94446),new n.wr(99,171.944739818),new n.wr(100,172.94459),new n.wr(101,173.944167937),new n.wr(102,174.94365),new n.wr(103,175.944740551),new n.wr(104,176.944471766),new n.wr(105,177.945750349),new n.wr(106,178.945934113),new n.wr(107,179.947465655),new n.wr(108,180.947996346),new n.wr(109,181.950152414),new n.wr(110,182.951373188),new n.wr(111,183.954009331),new n.wr(112,184.955559086),new n.wr(113,185.9585501),new n.wr(114,186.96041),new n.wr(115,187.96371)]),v(F(l.C7,1),zt,3,0,[new n.wr(84,157.973939),new n.wr(85,158.97228),new n.wr(86,159.968369),new n.wr(87,160.967089),new n.wr(88,161.962750303),new n.wr(89,162.962532),new n.wr(90,163.95898381),new n.wr(91,164.958335962),new n.wr(92,165.955019896),new n.wr(93,166.954672),new n.wr(94,167.951863),new n.wr(95,168.951759),new n.wr(96,169.948473988),new n.wr(97,170.94946),new n.wr(98,171.948228837),new n.wr(99,172.948884),new n.wr(100,173.94616),new n.wr(101,174.94677),new n.wr(102,175.94559),new n.wr(103,176.94662),new n.wr(104,177.945848364),new n.wr(105,178.947071733),new n.wr(106,179.946705734),new n.wr(107,180.948198054),new n.wr(108,181.948205519),new n.wr(109,182.950224458),new n.wr(110,183.950932553),new n.wr(111,184.953420586),new n.wr(112,185.954362204),new n.wr(113,186.957158365),new n.wr(114,187.958486954),new n.wr(115,188.96191222),new n.wr(116,189.963179541)]),v(F(l.C7,1),zt,3,0,[new n.wr(85,159.981485),new n.wr(86,160.977661),new n.wr(87,161.975707),new n.wr(88,162.971375872),new n.wr(89,163.970319),new n.wr(90,164.967050268),new n.wr(91,165.965211372),new n.wr(92,166.962564),new n.wr(93,167.961609),new n.wr(94,168.95883),new n.wr(95,169.958163),new n.wr(96,170.955547),new n.wr(97,171.955285),new n.wr(98,172.953062),new n.wr(99,173.952114),new n.wr(100,174.951393),new n.wr(101,175.95157),new n.wr(102,176.95027),new n.wr(103,177.950851081),new n.wr(104,178.949981038),new n.wr(105,179.95078768),new n.wr(106,180.950064596),new n.wr(107,181.951211444),new n.wr(108,182.950821349),new n.wr(109,183.952524289),new n.wr(110,184.952955747),new n.wr(111,185.954986529),new n.wr(112,186.955750787),new n.wr(113,187.958112287),new n.wr(114,188.959228359),new n.wr(115,189.961816139),new n.wr(116,190.963123592),new n.wr(117,191.96596)]),v(F(l.C7,1),zt,3,0,[new n.wr(86,161.983819),new n.wr(87,162.982048),new n.wr(88,163.977927),new n.wr(89,164.976475),new n.wr(90,165.971934911),new n.wr(91,166.971554),new n.wr(92,167.967832911),new n.wr(93,168.967076205),new n.wr(94,169.963569716),new n.wr(95,170.96304),new n.wr(96,171.960078),new n.wr(97,172.959791),new n.wr(98,173.956307704),new n.wr(99,174.95708),new n.wr(100,175.953757941),new n.wr(101,176.955045),new n.wr(102,177.953348225),new n.wr(103,178.953951),new n.wr(104,179.952308241),new n.wr(105,180.953274494),new n.wr(106,181.952186222),new n.wr(107,182.95311),new n.wr(108,183.952490808),new n.wr(109,184.954043023),new n.wr(110,185.953838355),new n.wr(111,186.955747928),new n.wr(112,187.955835993),new n.wr(113,188.958144866),new n.wr(114,189.95844521),new n.wr(115,190.960927951),new n.wr(116,191.961479047),new n.wr(117,192.964148083),new n.wr(118,193.965179314),new n.wr(119,194.968123889),new n.wr(120,195.96962255)]),v(F(l.C7,1),zt,3,0,[new n.wr(88,164.98758),new n.wr(89,165.985506),new n.wr(90,166.980951577),new n.wr(91,167.979966),new n.wr(92,168.976390868),new n.wr(93,169.974441697),new n.wr(94,170.971779),new n.wr(95,171.970643),new n.wr(96,172.967707),new n.wr(97,173.966804),new n.wr(98,174.964279),new n.wr(99,175.963511),new n.wr(100,176.96117),new n.wr(101,177.960084944),new n.wr(102,178.95915),new n.wr(103,179.958555615),new n.wr(104,180.957642156),new n.wr(105,181.958127689),new n.wr(106,182.956814),new n.wr(107,183.957388318),new n.wr(108,184.95659),new n.wr(109,185.957951104),new n.wr(110,186.95736083),new n.wr(111,187.958851962),new n.wr(112,188.958716473),new n.wr(113,189.960592299),new n.wr(114,190.960591191),new n.wr(115,191.962602198),new n.wr(116,192.9629237),new n.wr(117,193.96507561),new n.wr(118,194.9659768),new n.wr(119,195.968379906),new n.wr(120,196.969636496),new n.wr(121,197.97228),new n.wr(122,198.973787159)]),v(F(l.C7,1),zt,3,0,[new n.wr(90,167.988035),new n.wr(91,168.986421),new n.wr(92,169.981734918),new n.wr(93,170.981251),new n.wr(94,171.977376138),new n.wr(95,172.976499642),new n.wr(96,173.972811276),new n.wr(97,174.972276),new n.wr(98,175.969),new n.wr(99,176.968453),new n.wr(100,177.964894223),new n.wr(101,178.965475),new n.wr(102,179.962023729),new n.wr(103,180.963177),new n.wr(104,181.961267637),new n.wr(105,182.961729),new n.wr(106,183.959851685),new n.wr(107,184.960753782),new n.wr(108,185.959432346),new n.wr(109,186.960697),new n.wr(110,187.959395697),new n.wr(111,188.9608319),new n.wr(112,189.959930073),new n.wr(113,190.961684653),new n.wr(114,191.961035158),new n.wr(115,192.962984504),new n.wr(116,193.962663581),new n.wr(117,194.964774449),new n.wr(118,195.964934884),new n.wr(119,196.967323401),new n.wr(120,197.967876009),new n.wr(121,198.970576213),new n.wr(122,199.971423885),new n.wr(123,200.974496467),new n.wr(124,201.97574)]),v(F(l.C7,1),zt,3,0,[new n.wr(92,170.991183),new n.wr(93,171.990109),new n.wr(94,172.986398138),new n.wr(95,173.984325861),new n.wr(96,174.981552),new n.wr(97,175.980269),new n.wr(98,176.977215),new n.wr(99,177.975975),new n.wr(100,178.973412),new n.wr(101,179.972396),new n.wr(102,180.969948),new n.wr(103,181.968621416),new n.wr(104,182.96762),new n.wr(105,183.966776046),new n.wr(106,184.965806956),new n.wr(107,185.965997671),new n.wr(108,186.964562),new n.wr(109,187.965321662),new n.wr(110,188.9642243),new n.wr(111,189.964698757),new n.wr(112,190.963649239),new n.wr(113,191.964810107),new n.wr(114,192.964131745),new n.wr(115,193.96533889),new n.wr(116,194.965017928),new n.wr(117,195.966551315),new n.wr(118,196.966551609),new n.wr(119,197.968225244),new n.wr(120,198.968748016),new n.wr(121,199.970717886),new n.wr(122,200.971640839),new n.wr(123,201.973788431),new n.wr(124,202.975137256),new n.wr(125,203.977705),new n.wr(126,204.97961)]),v(F(l.C7,1),zt,3,0,[new n.wr(95,174.991411),new n.wr(96,175.987413248),new n.wr(97,176.986336874),new n.wr(98,177.982476325),new n.wr(99,178.981783),new n.wr(100,179.978322),new n.wr(101,180.977806),new n.wr(102,181.97393546),new n.wr(103,182.974561),new n.wr(104,183.970705219),new n.wr(105,184.971983),new n.wr(106,185.969460021),new n.wr(107,186.969785),new n.wr(108,187.967511693),new n.wr(109,188.968733187),new n.wr(110,189.966958568),new n.wr(111,190.96706311),new n.wr(112,191.965921572),new n.wr(113,192.966644169),new n.wr(114,193.965381832),new n.wr(115,194.966638981),new n.wr(116,195.965814846),new n.wr(117,196.967195333),new n.wr(118,197.96675183),new n.wr(119,198.968262489),new n.wr(120,199.968308726),new n.wr(121,200.970285275),new n.wr(122,201.970625604),new n.wr(123,202.972857096),new n.wr(124,203.97347564),new n.wr(125,204.976056104),new n.wr(126,205.977498672),new n.wr(127,206.982577025),new n.wr(128,207.98594)]),v(F(l.C7,1),zt,3,0,[new n.wr(96,176.996881),new n.wr(97,177.994637),new n.wr(98,178.991466),new n.wr(99,179.990194),new n.wr(100,180.986904),new n.wr(101,181.98561),new n.wr(102,182.982697),new n.wr(103,183.98176),new n.wr(104,184.9791),new n.wr(105,185.977549881),new n.wr(106,186.97617),new n.wr(107,187.97592),new n.wr(108,188.974290451),new n.wr(109,189.974473379),new n.wr(110,190.972261952),new n.wr(111,191.972770785),new n.wr(112,192.970548),new n.wr(113,193.971053),new n.wr(114,194.96965),new n.wr(115,195.970515),new n.wr(116,196.9695362),new n.wr(117,197.970466294),new n.wr(118,198.969813837),new n.wr(119,199.970945394),new n.wr(120,200.97080377),new n.wr(121,201.972090569),new n.wr(122,202.972329088),new n.wr(123,203.973848646),new n.wr(124,204.97441227),new n.wr(125,205.976095321),new n.wr(126,206.977407908),new n.wr(127,207.982004653),new n.wr(128,208.985349125),new n.wr(129,209.990065574)]),v(F(l.C7,1),zt,3,0,[new n.wr(99,180.996714),new n.wr(100,181.992676101),new n.wr(101,182.99193),new n.wr(102,183.988198),new n.wr(103,184.98758),new n.wr(104,185.983485388),new n.wr(105,186.98403),new n.wr(106,187.979869108),new n.wr(107,188.98088),new n.wr(108,189.978180008),new n.wr(109,190.9782),new n.wr(110,191.975719811),new n.wr(111,192.97608),new n.wr(112,193.974648056),new n.wr(113,194.975920279),new n.wr(114,195.97271),new n.wr(115,196.97338),new n.wr(116,197.97198),new n.wr(117,198.972909384),new n.wr(118,199.97181556),new n.wr(119,200.972846589),new n.wr(120,201.972143786),new n.wr(121,202.973375491),new n.wr(122,203.973028761),new n.wr(123,204.974467112),new n.wr(124,205.974449002),new n.wr(125,206.975880605),new n.wr(126,207.97663585),new n.wr(127,208.981074801),new n.wr(128,209.984173129),new n.wr(129,210.988731474),new n.wr(130,211.991887495),new n.wr(131,212.9965),new n.wr(132,213.999798147)]),v(F(l.C7,1),zt,3,0,[new n.wr(102,184.997708),new n.wr(103,185.99648),new n.wr(104,186.993458),new n.wr(105,187.992173),new n.wr(106,188.989505),new n.wr(107,189.987520007),new n.wr(108,190.986053),new n.wr(109,191.985368),new n.wr(110,192.983662229),new n.wr(111,193.983430186),new n.wr(112,194.98112697),new n.wr(113,195.981236107),new n.wr(114,196.978934287),new n.wr(115,197.979024396),new n.wr(116,198.977576953),new n.wr(117,199.978141983),new n.wr(118,200.976970721),new n.wr(119,201.977674504),new n.wr(120,202.976868118),new n.wr(121,203.977805161),new n.wr(122,204.977374688),new n.wr(123,205.978482854),new n.wr(124,206.978455217),new n.wr(125,207.979726699),new n.wr(126,208.980383241),new n.wr(127,209.984104944),new n.wr(128,210.987258139),new n.wr(129,211.991271542),new n.wr(130,212.994374836),new n.wr(131,213.998698664),new n.wr(132,215.001832349),new n.wr(133,216.006199)]),v(F(l.C7,1),zt,3,0,[new n.wr(106,189.994293888),new n.wr(107,190.994653),new n.wr(108,191.99033039),new n.wr(109,192.991102),new n.wr(110,193.988284107),new n.wr(111,194.988045),new n.wr(112,195.985469432),new n.wr(113,196.985567),new n.wr(114,197.984024384),new n.wr(115,198.985044507),new n.wr(116,199.981735),new n.wr(117,200.982209),new n.wr(118,201.980704),new n.wr(119,202.981412863),new n.wr(120,203.980307113),new n.wr(121,204.981165396),new n.wr(122,205.980465241),new n.wr(123,206.981578228),new n.wr(124,207.981231059),new n.wr(125,208.982415788),new n.wr(126,209.982857396),new n.wr(127,210.986636869),new n.wr(128,211.988851755),new n.wr(129,212.992842522),new n.wr(130,213.995185949),new n.wr(131,214.999414609),new n.wr(132,216.001905198),new n.wr(133,217.006253),new n.wr(134,218.008965773)]),v(F(l.C7,1),zt,3,0,[new n.wr(108,193.000188),new n.wr(109,193.997973),new n.wr(110,194.996554),new n.wr(111,195.995702),new n.wr(112,196.993891293),new n.wr(113,197.99343368),new n.wr(114,198.991008569),new n.wr(115,199.990920883),new n.wr(116,200.988486908),new n.wr(117,201.988448629),new n.wr(118,202.986847216),new n.wr(119,203.987261559),new n.wr(120,204.986036352),new n.wr(121,205.986599242),new n.wr(122,206.985775861),new n.wr(123,207.986582508),new n.wr(124,208.986158678),new n.wr(125,209.987131308),new n.wr(126,210.987480806),new n.wr(127,211.990734657),new n.wr(128,212.99292115),new n.wr(129,213.996356412),new n.wr(130,214.998641245),new n.wr(131,216.002408839),new n.wr(132,217.004709619),new n.wr(133,218.008681458),new n.wr(134,219.011296478),new n.wr(135,220.015301),new n.wr(136,221.01814),new n.wr(137,222.02233),new n.wr(138,223.02534)]),v(F(l.C7,1),zt,3,0,[new n.wr(110,196.001117268),new n.wr(111,197.001661),new n.wr(112,197.998779978),new n.wr(113,198.998309),new n.wr(114,199.995634148),new n.wr(115,200.995535),new n.wr(116,201.993899382),new n.wr(117,202.994765192),new n.wr(118,203.991365),new n.wr(119,204.991668),new n.wr(120,205.99016),new n.wr(121,206.990726826),new n.wr(122,207.989631237),new n.wr(123,208.990376634),new n.wr(124,209.989679862),new n.wr(125,210.99058541),new n.wr(126,211.990688899),new n.wr(127,212.993868354),new n.wr(128,213.995346275),new n.wr(129,214.998729195),new n.wr(130,216.000258153),new n.wr(131,217.003914555),new n.wr(132,218.005586315),new n.wr(133,219.009474831),new n.wr(134,220.011384149),new n.wr(135,221.015455),new n.wr(136,222.017570472),new n.wr(137,223.02179),new n.wr(138,224.02409),new n.wr(139,225.02844),new n.wr(140,226.03089),new n.wr(141,227.035407),new n.wr(142,228.038084)]),v(F(l.C7,1),zt,3,0,[new n.wr(113,200.006499),new n.wr(114,201.00458692),new n.wr(115,202.00396885),new n.wr(116,203.001423829),new n.wr(117,204.001221209),new n.wr(118,204.998663961),new n.wr(119,205.998486886),new n.wr(120,206.996859385),new n.wr(121,207.997133849),new n.wr(122,208.995915421),new n.wr(123,209.996398327),new n.wr(124,210.995529332),new n.wr(125,211.996194988),new n.wr(126,212.996174845),new n.wr(127,213.99895474),new n.wr(128,215.000326029),new n.wr(129,216.003187873),new n.wr(130,217.004616452),new n.wr(131,218.007563326),new n.wr(132,219.009240843),new n.wr(133,220.012312978),new n.wr(134,221.014245654),new n.wr(135,222.017543957),new n.wr(136,223.019730712),new n.wr(137,224.023235513),new n.wr(138,225.025606914),new n.wr(139,226.029343423),new n.wr(140,227.031833167),new n.wr(141,228.034776087),new n.wr(142,229.038426),new n.wr(143,230.04251),new n.wr(144,231.045407),new n.wr(145,232.049654)]),v(F(l.C7,1),zt,3,0,[new n.wr(115,203.00921),new n.wr(116,204.006434513),new n.wr(117,205.006187),new n.wr(118,206.004463814),new n.wr(119,207.005176607),new n.wr(120,208.001776),new n.wr(121,209.001944),new n.wr(122,210.000446),new n.wr(123,211.000893996),new n.wr(124,211.999783492),new n.wr(125,213.000345847),new n.wr(126,214.000091141),new n.wr(127,215.002704195),new n.wr(128,216.003518402),new n.wr(129,217.00630601),new n.wr(130,218.007123948),new n.wr(131,219.010068787),new n.wr(132,220.011014669),new n.wr(133,221.013907762),new n.wr(134,222.01536182),new n.wr(135,223.01849714),new n.wr(136,224.020202004),new n.wr(137,225.023604463),new n.wr(138,226.025402555),new n.wr(139,227.029170677),new n.wr(140,228.031064101),new n.wr(141,229.034820309),new n.wr(142,230.037084774),new n.wr(143,231.04122),new n.wr(144,232.043693),new n.wr(145,233.047995),new n.wr(146,234.050547)]),v(F(l.C7,1),zt,3,0,[new n.wr(118,207.012469754),new n.wr(119,208.012112949),new n.wr(120,209.009568736),new n.wr(121,210.009256802),new n.wr(122,211.007648196),new n.wr(123,212.007811441),new n.wr(124,213.006573689),new n.wr(125,214.006893072),new n.wr(126,215.006450832),new n.wr(127,216.008721268),new n.wr(128,217.009332676),new n.wr(129,218.011625045),new n.wr(130,219.012404918),new n.wr(131,220.014752105),new n.wr(132,221.015575746),new n.wr(133,222.017828852),new n.wr(134,223.01912603),new n.wr(135,224.021708435),new n.wr(136,225.023220576),new n.wr(137,226.026089848),new n.wr(138,227.027746979),new n.wr(139,228.031014825),new n.wr(140,229.032930871),new n.wr(141,230.036025144),new n.wr(142,231.038551503),new n.wr(143,232.042022474),new n.wr(144,233.04455),new n.wr(145,234.04842),new n.wr(146,235.051102),new n.wr(147,236.055178)]),v(F(l.C7,1),zt,3,0,[new n.wr(120,210.015711883),new n.wr(121,211.016306912),new n.wr(122,212.012916),new n.wr(123,213.012962),new n.wr(124,214.011451),new n.wr(125,215.011726597),new n.wr(126,216.011050963),new n.wr(127,217.013066169),new n.wr(128,218.013267744),new n.wr(129,219.015521253),new n.wr(130,220.015733126),new n.wr(131,221.018171499),new n.wr(132,222.018454131),new n.wr(133,223.020795153),new n.wr(134,224.02145925),new n.wr(135,225.023941441),new n.wr(136,226.024890681),new n.wr(137,227.027698859),new n.wr(138,228.028731348),new n.wr(139,229.03175534),new n.wr(140,230.033126574),new n.wr(141,231.03629706),new n.wr(142,232.03805036),new n.wr(143,233.041576923),new n.wr(144,234.043595497),new n.wr(145,235.04750442),new n.wr(146,236.04971),new n.wr(147,237.053894),new n.wr(148,238.056243)]),v(F(l.C7,1),zt,3,0,[new n.wr(122,213.021183209),new n.wr(123,214.02073923),new n.wr(124,215.019097612),new n.wr(125,216.019109649),new n.wr(126,217.018288571),new n.wr(127,218.020007906),new n.wr(128,219.019880348),new n.wr(129,220.021876493),new n.wr(130,221.021863742),new n.wr(131,222.023726),new n.wr(132,223.023963748),new n.wr(133,224.025614854),new n.wr(134,225.026115172),new n.wr(135,226.02793275),new n.wr(136,227.028793151),new n.wr(137,228.031036942),new n.wr(138,229.032088601),new n.wr(139,230.034532562),new n.wr(140,231.035878898),new n.wr(141,232.03858172),new n.wr(142,233.040240235),new n.wr(143,234.043302325),new n.wr(144,235.045436759),new n.wr(145,236.048675176),new n.wr(146,237.05113943),new n.wr(147,238.054497046),new n.wr(148,239.05713),new n.wr(149,240.06098)]),v(F(l.C7,1),zt,3,0,[new n.wr(126,218.023487),new n.wr(127,219.024915423),new n.wr(128,220.024712),new n.wr(129,221.026351),new n.wr(130,222.02607),new n.wr(131,223.027722956),new n.wr(132,224.027590139),new n.wr(133,225.029384369),new n.wr(134,226.02933975),new n.wr(135,227.031140069),new n.wr(136,228.031366357),new n.wr(137,229.033496137),new n.wr(138,230.033927392),new n.wr(139,231.036289158),new n.wr(140,232.03714628),new n.wr(141,233.039628196),new n.wr(142,234.040945606),new n.wr(143,235.043923062),new n.wr(144,236.045561897),new n.wr(145,237.048723955),new n.wr(146,238.050782583),new n.wr(147,239.054287777),new n.wr(148,240.056585734),new n.wr(149,241.06033),new n.wr(150,242.062925)]),v(F(l.C7,1),zt,3,0,[new n.wr(132,225.033899689),new n.wr(133,226.035129),new n.wr(134,227.034958261),new n.wr(135,228.03618),new n.wr(136,229.036246866),new n.wr(137,230.037812591),new n.wr(138,231.038233161),new n.wr(139,232.040099),new n.wr(140,233.04073235),new n.wr(141,234.042888556),new n.wr(142,235.044055876),new n.wr(143,236.046559724),new n.wr(144,237.048167253),new n.wr(145,238.050940464),new n.wr(146,239.052931399),new n.wr(147,240.056168828),new n.wr(148,241.058246266),new n.wr(149,242.061635),new n.wr(150,243.064273),new n.wr(151,244.06785)]),v(F(l.C7,1),zt,3,0,[new n.wr(134,228.038727686),new n.wr(135,229.040138934),new n.wr(136,230.039645603),new n.wr(137,231.041258),new n.wr(138,232.041179445),new n.wr(139,233.04298757),new n.wr(140,234.043304681),new n.wr(141,235.0452815),new n.wr(142,236.046048088),new n.wr(143,237.048403774),new n.wr(144,238.0495534),new n.wr(145,239.052156519),new n.wr(146,240.05380746),new n.wr(147,241.056845291),new n.wr(148,242.058736847),new n.wr(149,243.061997013),new n.wr(150,244.06419765),new n.wr(151,245.067738657),new n.wr(152,246.070198429),new n.wr(153,247.07407)]),v(F(l.C7,1),zt,3,0,[new n.wr(136,231.04556),new n.wr(137,232.04659),new n.wr(138,233.046472),new n.wr(139,234.047794),new n.wr(140,235.048029),new n.wr(141,236.049569),new n.wr(142,237.049970748),new n.wr(143,238.051977839),new n.wr(144,239.053018481),new n.wr(145,240.055287826),new n.wr(146,241.056822944),new n.wr(147,242.059543039),new n.wr(148,243.061372686),new n.wr(149,244.064279429),new n.wr(150,245.066445398),new n.wr(151,246.069768438),new n.wr(152,247.072086),new n.wr(153,248.075745),new n.wr(154,249.07848)]),v(F(l.C7,1),zt,3,0,[new n.wr(137,233.0508),new n.wr(138,234.05024),new n.wr(139,235.051591),new n.wr(140,236.051405),new n.wr(141,237.052891),new n.wr(142,238.053016298),new n.wr(143,239.054951),new n.wr(144,240.055519046),new n.wr(145,241.057646736),new n.wr(146,242.058829326),new n.wr(147,243.061382249),new n.wr(148,244.062746349),new n.wr(149,245.065485586),new n.wr(150,246.067217551),new n.wr(151,247.070346811),new n.wr(152,248.072342247),new n.wr(153,249.075947062),new n.wr(154,250.078350687),new n.wr(155,251.082277873),new n.wr(156,252.08487)]),v(F(l.C7,1),zt,3,0,[new n.wr(138,235.05658),new n.wr(139,236.05733),new n.wr(140,237.057127),new n.wr(141,238.058266),new n.wr(142,239.058362),new n.wr(143,240.059749),new n.wr(144,241.060223),new n.wr(145,242.06205),new n.wr(146,243.06300157),new n.wr(147,244.065167882),new n.wr(148,245.066355386),new n.wr(149,246.068666836),new n.wr(150,247.070298533),new n.wr(151,248.07308),new n.wr(152,249.074979937),new n.wr(153,250.078310529),new n.wr(154,251.08075344),new n.wr(155,252.084303),new n.wr(156,253.08688),new n.wr(157,254.0906)]),v(F(l.C7,1),zt,3,0,[new n.wr(139,237.06207),new n.wr(140,238.06141),new n.wr(141,239.062579),new n.wr(142,240.062295),new n.wr(143,241.063716),new n.wr(144,242.063688713),new n.wr(145,243.065421),new n.wr(146,244.06599039),new n.wr(147,245.068039),new n.wr(148,246.068798807),new n.wr(149,247.070992043),new n.wr(150,248.07217808),new n.wr(151,249.074846818),new n.wr(152,250.076399951),new n.wr(153,251.079580056),new n.wr(154,252.081619582),new n.wr(155,253.085126791),new n.wr(156,254.087316198),new n.wr(157,255.091039),new n.wr(158,256.09344)]),v(F(l.C7,1),zt,3,0,[new n.wr(141,240.06892),new n.wr(142,241.068662),new n.wr(143,242.069699),new n.wr(144,243.069631),new n.wr(145,244.070969),new n.wr(146,245.071317),new n.wr(147,246.072965),new n.wr(148,247.07365),new n.wr(149,248.075458),new n.wr(150,249.076405),new n.wr(151,250.078654),new n.wr(152,251.079983592),new n.wr(153,252.082972247),new n.wr(154,253.084817974),new n.wr(155,254.088016026),new n.wr(156,255.090266386),new n.wr(157,256.093592),new n.wr(158,257.095979)]),v(F(l.C7,1),zt,3,0,[new n.wr(142,242.07343),new n.wr(143,243.07451),new n.wr(144,244.074077),new n.wr(145,245.075375),new n.wr(146,246.075281634),new n.wr(147,247.076819),new n.wr(148,248.077184411),new n.wr(149,249.079024),new n.wr(150,250.079514759),new n.wr(151,251.081566467),new n.wr(152,252.082460071),new n.wr(153,253.085176259),new n.wr(154,254.086847795),new n.wr(155,255.089955466),new n.wr(156,256.091766522),new n.wr(157,257.095098635),new n.wr(158,258.097069),new n.wr(159,259.100588)]),v(F(l.C7,1),zt,3,0,[new n.wr(144,245.081017),new n.wr(145,246.081933),new n.wr(146,247.081804),new n.wr(147,248.082909),new n.wr(148,249.083002),new n.wr(149,250.084488),new n.wr(150,251.084919),new n.wr(151,252.08663),new n.wr(152,253.08728),new n.wr(153,254.089725),new n.wr(154,255.091075196),new n.wr(155,256.094052757),new n.wr(156,257.095534643),new n.wr(157,258.098425321),new n.wr(158,259.100503),new n.wr(159,260.103645)]),v(F(l.C7,1),zt,3,0,[new n.wr(147,249.087823),new n.wr(148,250.087493),new n.wr(149,251.08896),new n.wr(150,252.088965909),new n.wr(151,253.090649),new n.wr(152,254.090948746),new n.wr(153,255.093232449),new n.wr(154,256.094275879),new n.wr(155,257.096852778),new n.wr(156,258.0982),new n.wr(157,259.101024),new n.wr(158,260.102636),new n.wr(159,261.105743),new n.wr(160,262.10752)]),v(F(l.C7,1),zt,3,0,[new n.wr(148,251.09436),new n.wr(149,252.09533),new n.wr(150,253.095258),new n.wr(151,254.096587),new n.wr(152,255.096769),new n.wr(153,256.098763),new n.wr(154,257.099606),new n.wr(155,258.101883),new n.wr(156,259.10299),new n.wr(157,260.105572),new n.wr(158,261.106941),new n.wr(159,262.109692),new n.wr(160,263.111394)]),v(F(l.C7,1),zt,3,0,[new n.wr(149,253.100679),new n.wr(150,254.100166),new n.wr(151,255.101492),new n.wr(152,256.101179573),new n.wr(153,257.103072),new n.wr(154,258.103568),new n.wr(155,259.105628),new n.wr(156,260.106434),new n.wr(157,261.108752),new n.wr(158,262.109918),new n.wr(159,263.11254),new n.wr(160,264.113978)]),v(F(l.C7,1),zt,3,0,[new n.wr(150,255.107398),new n.wr(151,256.10811),new n.wr(152,257.107858),new n.wr(153,258.109438),new n.wr(154,259.109721),new n.wr(155,260.111427),new n.wr(156,261.112106),new n.wr(157,262.114153),new n.wr(158,263.115078),new n.wr(159,264.117473),new n.wr(160,265.118659)]),v(F(l.C7,1),zt,3,0,[new n.wr(152,258.113151),new n.wr(153,259.114652),new n.wr(154,260.114435447),new n.wr(155,261.116199),new n.wr(156,262.116477),new n.wr(157,263.118313),new n.wr(158,264.118924),new n.wr(159,265.121066),new n.wr(160,266.121928)]),v(F(l.C7,1),zt,3,0,[new n.wr(153,260.121803),new n.wr(154,261.1218),new n.wr(155,262.123009),new n.wr(156,263.123146),new n.wr(157,264.12473),new n.wr(158,265.125198),new n.wr(159,266.127009),new n.wr(160,267.12774)]),v(F(l.C7,1),zt,3,0,[new n.wr(155,263.12871),new n.wr(156,264.128408258),new n.wr(157,265.130001),new n.wr(158,266.130042),new n.wr(159,267.131774),new n.wr(160,268.132156),new n.wr(161,269.134114)]),v(F(l.C7,1),zt,3,0,[new n.wr(156,265.136567),new n.wr(157,266.13794),new n.wr(158,267.137526),new n.wr(159,268.138816),new n.wr(160,269.139106),new n.wr(161,270.140723),new n.wr(162,271.141229)])])},n.zr=function(t,e){n.yr();var A,P;for(P=e-t,A=0;A<n.xr[t].length;A++)if(n.xr[t][A].b==P)return n.xr[t][A].a;return NaN},n.Ar=function(t,e){var A;if(t.b.length!=e.b.length)return t.b.length<e.b.length?-1:1;for(A=0;A<t.b.length;A++)if(t.b[A]!=e.b[A])return t.b[A]<e.b[A]?-1:1;return 0},n.Br=function(t){var e,A,P,r,i,D;for(A=0,r=t.a,i=0,D=r.length;i<D;++i)P=r[i],P&&++A;for(t.b=d(l.Z6,H,6,A,15,1),A=0,e=0;e<t.a.length;e++)t.a[e]&&(t.b[A++]=e)},n.Cr=function(t,e){var A;for(n.Br(t),A=0;A<t.b.length;A++)if(e[t.b[A]])return!0;return!1},n.Dr=function(t){this.a=d(l.teb,wt,6,t,16,1)},G(239,1,{239:1,32:1},n.Dr),U.Rb=function(t){return n.Ar(this,t)},l.D7=O(239),n.Ir=function(){n.Ir=u1,n.Hr=v(F(l.X6,1),Bt,6,15,[0,1.00794,4.0026,6.941,9.0122,10.811,12.011,14.007,15.999,18.998,20.18,22.99,24.305,26.982,28.086,30.974,32.066,35.453,39.948,39.098,40.078,44.956,47.867,50.942,51.996,54.938,55.845,58.933,58.693,63.546,65.39,69.723,72.61,74.922,78.96,79.904,83.8,85.468,87.62,88.906,91.224,92.906,95.94,98.906,101.07,102.91,106.42,107.87,112.41,114.82,118.71,121.76,127.6,126.9,131.29,132.91,137.33,138.91,140.12,140.91,144.24,146.92,150.36,151.96,157.25,158.93,162.5,164.93,167.26,168.93,173.04,174.97,178.49,180.95,183.84,186.21,190.23,192.22,195.08,196.97,200.59,204.38,207.2,208.98,209.98,209.99,222.02,223.02,226.03,227.03,232.04,231.04,238.03,237.05,239.05,241.06,244.06,249.08,252.08,252.08,257.1,258.1,259.1,262.11,267.12,268.13,271.13,270.13,277.15,276.15,nP,nP,283.17,285.18,AP,AP,293.2,PP,PP,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2.0141,3.016,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71.0787,156.18828,114.10364,115.0877,103.1447,128.13052,129.11458,57.05182,137.14158,113.15934,113.15934,128.17428,131.19846,147.17646,97.11658,87.0777,101.10458,186.2134,163.17546,99.13246]),n.Fr=v(F(l.X6,1),Bt,6,15,[0,1.007825,4.0026,7.016003,9.012182,11.009305,12,14.003074,15.994915,18.998403,19.992435,22.989767,23.985042,26.98153,27.976927,30.973762,31.97207,34.968852,39.962384,38.963707,39.962591,44.95591,47.947947,50.943962,51.940509,54.938047,55.934939,58.933198,57.935346,62.939598,63.929145,68.92558,73.921177,74.921594,79.91652,78.918336,83.911507,84.911794,87.905619,88.905849,89.904703,92.906377,97.905406,89.92381,101.904348,102.9055,105.903478,106.905092,113.903357,114.90388,119.9022,120.903821,129.906229,126.904473,131.904144,132.905429,137.905232,138.906346,139.905433,140.907647,141.907719,135.92398,151.919729,152.921225,157.924099,158.925342,163.929171,164.930319,165.93029,168.934212,173.938859,174.94077,179.946545,180.947992,183.950928,186.955744,191.961467,192.962917,194.964766,196.966543,201.970617,204.974401,207.976627,208.980374,193.98818,195.99573,199.9957,201.00411,206.0038,210.00923,232.038054,216.01896,238.050784,229.03623,232.041169,237.05005,238.05302,242.06194,240.06228,243.06947,243.07446,248.08275,251.08887,253.09515,257.10295,257.10777,271.13,270.13,277.15,276.15,nP,nP,283.17,285.18,AP,AP,291.2,PP,PP,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2.014,3.01605,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),n.Gr=v(F(l.Z6,1),H,6,15,[6,1,7,8])},n.Jr=function(t){var e,A;for(A=t.a,e=0;e<t.b.length;e++)A+=t.b[e]*n.Fr[t.c[e]];return A},n.Kr=function(t){var e,A;for(e=new T.Bjb,A=0;A<t.b.length;A++)T.Ajb(e,(n.Ok(),n.Ik)[t.c[A]]),t.b[A]>1&&T.zjb(e,t.b[A]);return e.a},n.Lr=function(t){var e,A;for(A=t.d,e=0;e<t.b.length;e++)A+=t.b[e]*n.Hr[t.c[e]];return A},n.Mr=function(t){var e,A,P,r,i,D,u,o,Q,L,w;for(n.aw(t,1),r=d(l.Z6,H,6,191,15,1),A=0;A<t.q;A++)switch(t.C[A]){case 171:r[1]+=5,r[6]+=3,r[7]+=1,r[8]+=1;break;case 172:r[1]+=12,r[6]+=6,r[7]+=4,r[8]+=1;break;case 173:r[1]+=6,r[6]+=4,r[7]+=2,r[8]+=2;break;case 174:r[1]+=5,r[6]+=4,r[7]+=1,r[8]+=3;break;case 175:r[1]+=5,r[6]+=3,r[7]+=1,r[8]+=1,r[16]+=1;break;case 176:r[1]+=8,r[6]+=5,r[7]+=2,r[8]+=2;break;case 177:r[1]+=7,r[6]+=5,r[7]+=1,r[8]+=3;break;case 178:r[1]+=3,r[6]+=2,r[7]+=1,r[8]+=1;break;case 179:r[1]+=7,r[6]+=6,r[7]+=3,r[8]+=1;break;case 181:case 180:r[1]+=11,r[6]+=6,r[7]+=1,r[8]+=1;break;case 182:r[1]+=12,r[6]+=6,r[7]+=2,r[8]+=1;break;case 183:r[1]+=9,r[6]+=5,r[7]+=1,r[8]+=1,r[16]+=1;break;case 184:r[1]+=9,r[6]+=9,r[7]+=1,r[8]+=1;break;case 185:r[1]+=7,r[6]+=5,r[7]+=1,r[8]+=1;break;case 186:r[1]+=5,r[6]+=3,r[7]+=1,r[8]+=2;break;case 187:r[1]+=7,r[6]+=4,r[7]+=1,r[8]+=2;break;case 188:r[1]+=10,r[6]+=11,r[7]+=2,r[8]+=1;break;case 189:r[1]+=9,r[6]+=9,r[7]+=1,r[8]+=2;break;case 190:r[1]+=9,r[6]+=5,r[7]+=1,r[8]+=1;break;case 1:switch(t.A[A]){case 0:case 1:++r[1];break;case 2:++r[151];break;case 3:++r[152]}break;default:++r[t.C[A]]}for(P=0;P<t.q;P++)t.C[P]>=171&&t.C[P]<=190?r[1]+=2-n.rp(t,P):r[1]+=n.kp(t,P);for(u=0,Q=1;Q<=190;Q++)r[Q]!=0&&++u;for(this.b=d(l.Z6,H,6,u,15,1),this.c=d(l.Z6,H,6,u,15,1),u=0,o=0;o<n.Gr.length;o++)r[n.Gr[o]]!=0&&(this.b[u]=r[n.Gr[o]],this.c[u]=n.Gr[o],++u,r[n.Gr[o]]=0);for(;;){for(w=\"zzz\",L=-1,D=1;D<=190;D++)r[D]>0&&T.Vib(w,(n.Ok(),n.Ik)[D])>0&&(w=(n.Ok(),n.Ik)[D],L=D);if(L==-1)break;this.b[u]=r[L],this.c[u]=L,++u,r[L]=0}for(this.a=0,this.d=0,e=0;e<t.f;e++)t.C[e]!=1&&t.A[e]!=0&&(D=t.C[e],i=t.A[e],this.a+=n.zr(D,i)-n.Fr[D],this.d+=n.zr(D,i)-n.Hr[D])},G(151,1,{151:1}),U.lb=function(t){var e;if(t===this)return!0;if(!Yt(t,151))return!1;for(e=0;e<this.b.length;e++)if(this.b[e]!=t.b[e])return!1;return!0},U.a=0,U.d=0,l.E7=O(151),n.Or=function(t){switch(t){case 6:return 1;case 53:return 2;case 33:return 3;case 34:return 4;case 35:return 5;case 15:return 6;case 16:return 7;case 17:return 8;case 7:return 9;case 8:return 10;case 9:return 11}return 0},n.Pr=function(t){var e,A,P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S,p,M,z,q,x,J,E;for(n.aw(t,7),J=0,h=d(l.teb,wt,6,t.f,16,1),E=d(l.Z6,H,6,t.f,15,1),i=0;i<t.g;i++)A=t.D[0][i],P=t.D[1][i],D=t.s[A],u=t.s[P],D!=0&&u!=0&&D<0^u<0&&(h[A]=!0,h[P]=!0),E[A]+=n.am(t,i),E[P]+=n.am(t,i);for(o=0;o<t.f;o++)if(J+=t.s[o],t.s[o]==1){if(t.C[o]==7&&!h[o]){if(E[o]<=3)J-=1,t.s[o]=0,t.T=0,t.j[o]!=t.e[o]&&(n.ml(t,n.Vo(t,o,t.e[o]-1)),n.aw(t,7));else if(o<t.f&&n.kt(t.p,o)){for(m=d(l.teb,wt,6,t.f,16,1),S=d(l.teb,wt,6,t.g,16,1),n.Eo(t,o,!0,m,S),L=0;L<t.f;L++)if(m[L]&&t.C[L]==7&&t.s[L]==0&&E[L]==2&&n.Sr(t,S,o,L)){J-=1;break}}}}else if(t.s[o]<0&&(t.C[o]==6||t.C[o]==7||t.C[o]==8||t.C[o]==16))if(h[o]){for(z=d(l.Z6,H,6,16,15,1),z[0]=o,x=1,q=0;q<x;){for(r=0;r<t.r;r++)if(e=-1,t.D[0][r]==z[q]?e=t.D[1][r]:t.D[1][r]==z[q]&&(e=t.D[0][r]),e!=-1&&t.s[e]!=0){for(w=!1,g=0;g<x;g++)if(e==z[g]){w=!0;break}w||(x==z.length&&(Q=d(l.Z6,H,6,2*z.length,15,1),T.Qjb(z,0,Q,0,z.length),z=Q),z[x++]=e)}++q}for(s=0,B=0;B<x;B++)s+=n.xl(t,z[B]);if(s<0){for(p=-1,M=99,b=0;b<x;b++)n.xl(t,z[b])<0&&M>n.Or(n.Ol(t,z[b]))&&(M=n.Or(n.Ol(t,z[b])),p=z[b]);p!=-1&&(J-=t.s[p],t.s[p]=0,t.T=0)}}else J-=t.s[o],t.s[o]=0,t.T=0;return J>0&&(J=n.Qr(t,J)),J},n.Qr=function(t,e){var A,P,r,i;if(e>0&&(e=n.Tr(t,e,9)),e>0&&(e=n.Tr(t,e,17)),e>0&&(e=n.Tr(t,e,35)),e>0&&(e=n.Tr(t,e,53)),e>0){for(A=0;A<t.f;A++)if(t.s[A]>0){for(r=!1,i=0;i<t.j[A];i++)if(P=t.i[A][i],t.s[P]==0&&n.Dm(t,P)&&n.kp(t,P)>0){if(t.s[P]=-1,t.T=0,--e,e==0)return 0;r=!0;break}if(r)continue}}return e>0&&(e=n.Rr(t,e,8,16)),e>0&&(e=n.Rr(t,e,8,15)),e>0&&(e=n.Rr(t,e,8,6)),e>0&&(e=n.Rr(t,e,7,16)),e},n.Rr=function(t,e,A,P){var r,i,D,u,o,Q,L,w;for(r=0;r<t.f;r++)if(t.C[r]==A&&t.s[r]==0&&n.kp(t,r)>0)for(u=!1,Q=0;Q<t.j[r];Q++){if(t.n[r][Q]==1&&(i=t.i[r][Q],t.C[i]==P)){for(w=!1,o=!1,L=0;L<t.j[i];L++){if(D=t.i[i][L],t.s[D]<0){o=!0;break}D!=r&&t.C[D]==8&&t.n[i][L]==2&&(w=!0)}if(!o&&w){if(t.s[r]=-1,t.T=0,--e,e==0)return 0;u=!0}}if(u)break}return e},n.Sr=function(t,e,A,P){var r,i,D,u,o,Q,L,w;for(w=d(l.Z6,H,6,t.g,15,1),o=d(l.teb,wt,6,t.g,16,1),D=0;D<t.g;D++)w[D]=t.H[D],e[D]&&(o[D]=!0,t.H[D]=1,t.T=0);for(r=0;r<t.f;r++)if(r!=P&&t.o[r]==0&&o[t.k[P][0]])for(L=0;L<t.j[r];L++)u=t.k[r][L],t.H[u]=1,t.T=0,o[u]=!1;for(Q=0;Q<t.j[A];Q++)u=t.k[A][Q],t.H[u]=1,t.T=0,o[u]=!1;if(n.Ee(new n.Se(t),o,!1))return t.s[A]=0,t.T=0,t.j[P]!=t.e[P]&&n.ml(t,n.Vo(t,P,t.e[P]-1)),n.aw(t,7),!0;for(i=0;i<t.g;i++)n.In(t,i,w[i]);return!1},n.Tr=function(t,e,A){var P;for(P=0;P<t.f;P++)if(t.C[P]==A&&t.s[P]==0&&t.j[P]==0&&(t.s[P]=-1,t.T=0,--e,e==0))return 0;return e},n.Ur=function(t,e){var A,P;for(P=D0.Dmb(t.b,e),A=c.Szb(P).length;A<10;A++)T.Ejb(t.a,32);T.Ijb(t.a,P)},n.Vr=function(t,e){var A,P,r;if(e<0||e>999){T.Ijb(t.a,\"  ?\");return}for(A=!1,P=0;P<3;P++)r=e/100|0,r==0?P==2||A?T.Ejb(t.a,48):T.Ejb(t.a,32):(T.Ejb(t.a,48+r&r1),A=!0),e=10*(e%100)},n.Wr=function(t,e){pt.qgb(e,t.a.a)},n.Xr=function(t){n.Yr.call(this,t)},n.Yr=function(t){n.$r.call(this,t,new T.Ljb)},n.Zr=function(t,e,A){var P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S,p,M,z,q,x,J,E,N,ft,Lt,ot,st,ut,rt,Ut,ht,it,bt,ct,$t,Ft,Rt,Et,Nt,It,vt,kt,L1,f1,St,Xt,k1,qt,P1;for(this.b=new D0.Imb((ct=rP,ct)),It=(T.Pjb(),N1),n.aw(t,15),ht=!0,r=0;r<t.f;r++)if((t.u[r]&3)!=0&&(t.u[r]&3)!=3&&(t.u[r]&U1)>>18!=1){ht=!1;break}if(Ft=-1,ht){for(Lt=d(l.Z6,H,6,32,15,1),Rt=0,i=0;i<t.f;i++)if((t.u[i]&3)!=0&&(t.u[i]&3)!=3&&(t.u[i]&U1)>>18==1){st=(t.u[i]&U1)>>18!=1&&(t.u[i]&U1)>>18!=2?-1:(t.u[i]&j0)>>20,++Lt[st],Rt<Lt[st]&&(Rt=Lt[st],Ft=st);break}}for(this.a=A||new T.Kjb,Nt=t.P!=null?t.P:\"\",T.Ijb(this.a,Nt+It),T.Ijb(this.a,\"Actelion Java MolfileCreator 1.0\"+It+It),n.Vr(this,t.q),n.Vr(this,t.r),T.Ijb(this.a,\"  0  0\"),n.Vr(this,ht?0:1),T.Ijb(this.a,\"  0  0  0  0  0999 V2000\"+It),ut=t.q==1,Q=1;Q<t.q;Q++)if(t.J[Q].a!=t.J[0].a||t.J[Q].b!=t.J[0].b||t.J[Q].c!=t.J[0].c){ut=!0;break}if(ot=1,ut)if(e!=0)ot=e;else if(p=n.Rl(t,t.q,t.r,(n.Ok(),n.Nk)),p!=0)(p<1||p>3)&&(ot=1.5/p);else{for(Et=U0,i=1;i<t.q;i++)for(o=0;o<i;o++)E=t.J[o].a-t.J[i].a,N=t.J[o].b-t.J[i].b,ft=t.J[o].c-t.J[i].c,J=E*E+N*N+ft*ft,Et>J&&(Et=J);ot=3/Et}for(L=0;L<t.q;L++)ut?(n.Ur(this,ot*t.J[L].a),n.Ur(this,ot*-t.J[L].b),n.Ur(this,ot*-t.J[L].c)):T.Ijb(this.a,\"    0.0000    0.0000    0.0000\"),(t.v==null?null:t.v[L])!=null?T.Ijb(this.a,\" L  \"):jt(Z(t.B[L],1),0)?T.Ijb(this.a,\" A  \"):t.C[L]>=129&&t.C[L]<=144||t.C[L]==154?T.Ijb(this.a,\" R# \"):(B=(n.Ok(),n.Ik)[t.C[L]],T.Ijb(this.a,\" \"+B),c.Szb(B).length==1?T.Ijb(this.a,\"  \"):c.Szb(B).length==2&&T.Ijb(this.a,\" \")),T.Ijb(this.a,\" 0  0  0\"),rt=Z(K0,t.B[L]),et(rt,0)==0?T.Ijb(this.a,\"  0\"):et(rt,384)==0?T.Ijb(this.a,\"  3\"):et(rt,128)==0?T.Ijb(this.a,\"  2\"):et(rt,1792)==0?T.Ijb(this.a,\"  1\"):et(rt,1664)==0&&T.Ijb(this.a,\"  2\"),T.Ijb(this.a,jt(Z(t.B[L],l0),0)?\"  1\":\"  0\"),P1=((t.u[L]&se)>>>27)-1,P1==-1?T.Ijb(this.a,\"  0\"):P1==0?T.Ijb(this.a,\" 15\"):n.Vr(this,P1),T.Ijb(this.a,\"  0  0  0\"),n.Vr(this,k.Math.abs(t.w[L])),T.Ijb(this.a,\"  0  0\"+It);for(M=0;M<t.r;M++){switch(t.H[M]){case 1:kt=1,Xt=0;break;case 2:kt=2,Xt=0;break;case 4:kt=3,Xt=0;break;case 129:kt=1,Xt=6;break;case 257:kt=1,Xt=1;break;case 386:kt=2,Xt=3;break;case 8:kt=4,Xt=0;break;case 16:kt=8,Xt=0;break;default:kt=1,Xt=0}ht&&(Xt==1||Xt==6)&&(i=t.D[0][M],(t.u[i]&U1)>>18==2?Xt=0:(t.u[i]&U1)>>18==1&&((t.u[i]&U1)>>18!=1&&(t.u[i]&U1)>>18!=2?-1:(t.u[i]&j0)>>20)!=Ft&&(Xt=4)),z=t.G[M]&31,z!=0&&(z==8?kt=4:z==3?kt=5:z==9?kt=6:z==10?kt=7:kt=8),f1=t.G[M]&384,qt=f1==0?0:f1==256?1:2,n.Vr(this,1+t.D[0][M]),n.Vr(this,1+t.D[1][M]),n.Vr(this,kt),n.Vr(this,Xt),T.Ijb(this.a,\"  0\"),n.Vr(this,qt),T.Ijb(this.a,\"  0\"+It)}for(vt=0,w=0;w<t.q;w++)t.s[w]!=0&&++vt;if(vt!=0)for(x=0,i=0;i<t.q;i++)t.s[i]!=0&&(x==0&&(T.Ijb(this.a,\"M  CHG\"),n.Vr(this,k.Math.min(8,vt))),T.Ijb(this.a,\" \"),n.Vr(this,i+1),q=t.s[i],q<0?(T.Ijb(this.a,\"  -\"),q=-q):T.Ijb(this.a,\"   \"),T.Ejb(this.a,48+q&r1),--vt,(++x==8||vt==0)&&(x=0,T.Ijb(this.a,It)));for(vt=0,s=0;s<t.q;s++)t.A[s]==0||++vt;if(vt!=0)for(x=0,i=0;i<t.q;i++)t.A[i]!=0&&(x==0&&(T.Ijb(this.a,\"M  ISO\"),n.Vr(this,k.Math.min(8,vt))),T.Ijb(this.a,\" \"),n.Vr(this,i+1),T.Ijb(this.a,\" \"),n.Vr(this,t.A[i]),--vt,(++x==8||vt==0)&&(x=0,T.Ijb(this.a,It)));for(vt=0,h=0;h<t.q;h++)(t.u[h]&48)!=0&&++vt;if(vt!=0){for(x=0,i=0;i<t.q;i++)if((t.u[i]&48)!=0){switch(x==0&&(T.Ijb(this.a,\"M  RAD\"),n.Vr(this,k.Math.min(8,vt))),T.Ijb(this.a,\" \"),n.Vr(this,i+1),t.u[i]&48){case 16:T.Ijb(this.a,\"   1\");break;case 32:T.Ijb(this.a,\"   2\");break;case 48:T.Ijb(this.a,\"   3\")}--vt,(++x==8||vt==0)&&(x=0,T.Ijb(this.a,It))}}for(vt=0,b=0;b<t.q;b++)(t.C[b]>=129&&t.C[b]<=144||t.C[b]==154)&&++vt;if(vt!=0)for(x=0,i=0;i<t.q;i++)S=t.C[i],(S>=129&&S<=144||S==154)&&(x==0&&(T.Ijb(this.a,\"M  RGP\"),n.Vr(this,k.Math.min(8,vt))),T.Ijb(this.a,\" \"),n.Vr(this,i+1),T.Ijb(this.a,\" \"),n.Vr(this,S==154?0:S>=142?S-141:S-125),--vt,(++x==8||vt==0)&&(x=0,T.Ijb(this.a,It)));if(t.K){for(vt=0,i=0;i<t.q;i++)jt(Z(t.B[i],120),0)&&++vt;if(vt!=0)for(x=0,o=0;o<t.q;o++)L1=Z(t.B[o],120),et(L1,0)!=0&&(x==0&&(T.Ijb(this.a,\"M  RBC\"),n.Vr(this,k.Math.min(8,vt))),T.Ijb(this.a,\" \"),n.Vr(this,o+1),et(L1,112)==0?T.Ijb(this.a,\"  -1\"):et(L1,8)==0?T.Ijb(this.a,\"   1\"):et(L1,104)==0?T.Ijb(this.a,\"   2\"):et(L1,88)==0?T.Ijb(this.a,\"   3\"):et(L1,56)==0&&T.Ijb(this.a,\"   4\"),--vt,(++x==8||vt==0)&&(x=0,T.Ijb(this.a,It)));for(g=0;g<t.q;g++)if(m=t.v==null?null:t.v[g],m!=null){for(T.Ijb(this.a,\"M  ALS \"),n.Vr(this,g+1),n.Vr(this,m.length),T.Ijb(this.a,jt(Z(t.B[g],1),0)?\" T \":\" F \"),Ut=0;Ut<m.length;Ut++)switch(it=(n.Ok(),n.Ik)[m[Ut]],c.Szb(it).length){case 1:T.Ijb(this.a,it+\"   \");break;case 2:T.Ijb(this.a,it+\"  \");break;case 3:T.Ijb(this.a,it+\" \");break;default:T.Ijb(this.a,\"   ?\")}T.Ijb(this.a,It)}for(vt=0,D=0;D<t.q;D++)jt(Z(t.B[D],6144),0)&&++vt;if(vt!=0)for(x=0,o=0;o<t.q;o++)k1=Z(t.B[o],6144),et(k1,0)!=0&&(x==0&&(T.Ijb(this.a,\"M  SUB\"),n.Vr(this,k.Math.min(8,vt))),T.Ijb(this.a,\" \"),n.Vr(this,o+1),jt(Z(k1,J1),0)?T.Ijb(this.a,\"   \"+(t.e[o]+1)):T.Ijb(this.a,\"  -2\"),--vt,(++x==8||vt==0)&&(x=0,T.Ijb(this.a,It)))}for(vt=0,u=0;u<t.q;u++)(t.t==null||t.t[u]==null?null:T.Zib(($t=t.t[u],V1.Cmb(),$t)))!=null&&++vt;if(vt!=0)for(St=0,P=0;P<t.q;P++)it=t.t==null||t.t[P]==null?null:T.Zib((bt=t.t[P],V1.Cmb(),bt)),it!=null&&(++St,T.Ijb(this.a,\"M  STY  1 \"),n.Vr(this,St),T.Ijb(this.a,\" DAT\"),T.Ijb(this.a,It),T.Ijb(this.a,\"M  SLB  1 \"),n.Vr(this,St),T.Ijb(this.a,\" \"),n.Vr(this,St),T.Ijb(this.a,It),T.Ijb(this.a,\"M  SAL \"),n.Vr(this,St),T.Ijb(this.a,\"  1 \"),n.Vr(this,P+1),T.Ijb(this.a,It),T.Ijb(this.a,\"M  SDT \"),n.Vr(this,St),T.Ijb(this.a,\" \"),T.Ijb(this.a,iP),T.Ijb(this.a,It),T.Ijb(this.a,\"M  SDD \"),n.Vr(this,St),T.Ijb(this.a,\" \"),n.Ur(this,t.J[P].a),n.Ur(this,t.J[P].b),T.Ijb(this.a,\"    DA    ALL  1       5\"),T.Ijb(this.a,It),T.Ijb(this.a,\"M  SED \"),n.Vr(this,St),T.Ijb(this.a,\" \"),T.Ijb(this.a,it),T.Ijb(this.a,It));T.Ijb(this.a,me+It)},n.$r=function(t,e){n.Zr.call(this,t,0,e)},G(114,1,{},n.Xr,n.Zr),l.G7=O(114),n._r=function(t,e,A,P,r,i){var D,u,o,Q;switch(Q=1,u=!1,r){case 1:Q=257;break;case 3:Q=386;break;case 4:Q=257,u=!0;break;case 6:Q=129;break;default:switch(P){case 1:Q=1;break;case 2:Q=2;break;case 3:Q=4;break;case 4:Q=8;break;case 9:Q=16}}if(D=n.Tk(t.j,e,A,Q),o=0,u&&n.kn(t.j,e,1,-1),P>4)switch(P){case 5:o|=3;break;case 6:o|=9;break;case 7:o|=10;break;case 8:Q!=16&&(o|=127)}return i==1&&(o|=256),i==2&&(o|=128),o!=0&&n.Hn(t.j,D,o,!0),D},n.as=function(t){var e,A,P,r,i,D,u,o,Q,L,w;for(D=d(l.Z6,H,6,t.j.q,15,1),A=0;A<t.j.q;A++)D[A]=-n.xl(t.j,A);for(n.Ee(new n.Se(t.j),null,!0),P=0;P<t.j.q;P++)D[P]+=n.xl(t.j,P);for(e=0;e<t.j.q;e++)if(D[e]!=0)for(u=-D[e],r=0;r<t.j.r;r++)for(Q=0;Q<2;Q++)u>0&&n.dm(t.j,r)==16&&n.Ul(t.j,1-Q,r)==e&&(w=n.Ul(t.j,Q,r),n.Hm(t.j,w)&&(L=n.cs(t,w),i=n.xl(t.j,w),i<L&&(o=k.Math.min(u,L-i),n.en(t.j,w,i+o),u-=o)))},n.bs=function(t,e){return t.j=null,n.ws(t,new pt.cgb(new pt.ngb(e)))?t.j:null},n.cs=function(t,e){var A,P;return A=n.Ol(t.j,e),P=A<(n.Ok(),n.Kk).length?n.Kk[A]:null,P==null?0:P[P.length-1]},n.ds=function(t,e){var A;return A=t.b?y.epb(t.b,T.pib(e)):null,A?A.a:e-1},n.es=function(t,e){var A;return A=t.c?y.epb(t.c,T.pib(e)):null,A?A.a:e-1},n.fs=function(t,e){var A,P;if(e!=null)for(n.aw(t.j,1),A=0;A<t.j.f;A++)e[A]!=0&&(P=n.im(t.j,A,n.rp(t.j,A)),e[A]==15?P>=0&&n.cn(t.j,A,0):e[A]!=n.km(t.j,A)&&n.cn(t.j,A,e[A]-P))},n.gs=function(t,e){var A,P;for(A=e;A<c.Szb(t).length;A++){if(P=(c.Nzb(A,c.Szb(t).length),c.Szb(t).charCodeAt(A)),P==32||P==9)return-1;if(P==61)return A}return-1},n.hs=function(t,e){var A;if(e==-1)return-1;for(A=e+1;A<c.Szb(t).length;A++)if(c.Nzb(A,c.Szb(t).length),c.Szb(t).charCodeAt(A)!=32&&(c.Nzb(A,c.Szb(t).length),c.Szb(t).charCodeAt(A)!=9))return A;return-1},n.is=function(t,e){var A,P,r,i;for(A=!1,r=!1,P=e;P<c.Szb(t).length;P++)if(i=(c.Nzb(P,c.Szb(t).length),c.Szb(t).charCodeAt(P)),i==40?A=!0:i==41?A=!1:i==34&&(r=!r),!A&&!r&&(i==32||i==9))return P;return-1},n.js=function(t){return c.Szb(t).indexOf(\"ATOMS=(\")!=-1?Vn:c.Szb(t).indexOf(\"BONDS=(\")!=-1?\"BONDS\":null},n.ks=function(t,e){var A,P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S,p,M,z,q,x,J,E,N,ft;for(g=0,B=(u=n.is(e,g),u==-1?c.Szb(e).length:u),P=T.Khb((c.Mzb(g,B,c.Szb(e).length),c.Szb(e).substr(g,B-g)),n1,Mt),g=n.hs(e,B),B=(o=n.is(e,g),o==-1?c.Szb(e).length:o),S=(c.Mzb(g,B,c.Szb(e).length),c.Szb(e).substr(g,B-g)),x=null,r=!1,m=n.ss(e),m!=0&&(x=n.ls(e),m<0&&(r=!0),B=k.Math.abs(m)),g=n.hs(e,B),B=(Q=n.is(e,g),Q==-1?c.Szb(e).length:Q),E=q0((c.Mzb(g,B,c.Szb(e).length),c.Szb(e).substr(g,B-g))),g=n.hs(e,B),B=(L=n.is(e,g),L==-1?c.Szb(e).length:L),N=q0((c.Mzb(g,B,c.Szb(e).length),c.Szb(e).substr(g,B-g))),g=n.hs(e,B),B=(w=n.is(e,g),w==-1?c.Szb(e).length:w),ft=q0((c.Mzb(g,B,c.Szb(e).length),c.Szb(e).substr(g,B-g))),g=n.hs(e,B),B=(s=n.is(e,g),s==-1?c.Szb(e).length:s),M=T.Khb((c.Mzb(g,B,c.Szb(e).length),c.Szb(e).substr(g,B-g)),n1,Mt),A=n.Qk(t.j,E,-N,-ft),A+1!=P&&(!t.b&&(t.b=new y.Xvb),y.Pvb(t.b,T.pib(P),T.pib(A))),x!=null&&(n.yn(t.j,A,6),n.mn(t.j,A,x,r)),M!=0&&n.nn(t.j,A,M,!1),T._ib(S,\"A\")||T._ib(S,\"*\")?n.rn(t.j,A,1,!0):T._ib(S,\"Q\")?(p=d(l.Z6,H,6,1,15,1),p[0]=6,n.mn(t.j,A,p,!0)):n.yn(t.j,A,n.lo(S,67));(g=n.hs(e,B))!=-1;)if(B=(D=n.is(e,g),D==-1?c.Szb(e).length:D),z=(c.Mzb(g,B,c.Szb(e).length),c.Szb(e).substr(g,B-g)),b=T.gjb(z,X1(61)),h=(c.Mzb(0,b,c.Szb(z).length),c.Szb(z).substr(0,b)),J=T.Khb((c.Nzb(b+1,c.Szb(z).length+1),c.Szb(z).substr(b+1)),n1,Mt),T._ib(h,\"CHG\"))n.en(t.j,A,J);else if(T._ib(h,\"RAD\"))switch(J){case 1:n.sn(t.j,A,16);break;case 2:n.sn(t.j,A,32);break;case 3:n.sn(t.j,A,48)}else if(!T._ib(h,\"CFG\")){if(T._ib(h,\"MASS\"))n.pn(t.j,A,J);else if(T._ib(h,\"VAL\"))n.cn(t.j,A,J==-1?0:J==0?-1:J);else if(T._ib(h,\"HCOUNT\"))switch(J){case 0:break;case-1:n.rn(t.j,A,1792,!0);break;case 1:n.rn(t.j,A,128,!0);break;case 2:n.rn(t.j,A,384,!0);break;default:n.rn(t.j,A,896,!0)}else if(T._ib(h,\"SUBST\")){if(J==-1)n.rn(t.j,A,c1,!0);else if(J>0){for(q=0,i=0;i<t.j.r;i++)(n.Ul(t.j,0,i)==A||n.Ul(t.j,1,i)==A)&&++q;J>q&&n.rn(t.j,A,J1,!0)}}else if(T._ib(h,\"RBCNT\"))switch(J){case 3:case-1:n.rn(t.j,A,112,!0);break;case 1:n.rn(t.j,A,8,!0);break;case 2:n.rn(t.j,A,104,!0);break;case 4:n.rn(t.j,A,56,!0)}}},n.ls=function(t){var e,A,P,r,i,D,u,o;if(u=null,A=c.Szb(t).indexOf(\"[\"),P=c.Szb(t).indexOf(\"]\",A),A>=0&&P>0){for(e=d(l.Z6,H,6,16,15,1),o=(c.Mzb(A+1,P,c.Szb(t).length),c.Szb(t).substr(A+1,P-(A+1))),r=0,D=!0;D&&r<16;)A=c.Szb(o).indexOf(\",\"),i=null,A==-1?(i=o,D=!1):(i=(c.Mzb(0,A,c.Szb(o).length),c.Szb(o).substr(0,A)),o=(c.Nzb(A+1,c.Szb(o).length+1),c.Szb(o).substr(A+1))),e[r++]=n.lo(i,1);u=d(l.Z6,H,6,r,15,1),T.Qjb(e,0,u,0,r)}return u},n.ms=function(t,e){var A,P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S,p;for(b=0,g=(o=n.is(e,b),o==-1?c.Szb(e).length:o),i=T.Khb((c.Mzb(b,g,c.Szb(e).length),c.Szb(e).substr(b,g-b)),n1,Mt),b=n.hs(e,g),g=(Q=n.is(e,b),Q==-1?c.Szb(e).length:Q),D=T.Khb((c.Mzb(b,g,c.Szb(e).length),c.Szb(e).substr(b,g-b)),n1,Mt),b=n.hs(e,g),g=(L=n.is(e,b),L==-1?c.Szb(e).length:L),A=n.ds(t,T.Khb((c.Mzb(b,g,c.Szb(e).length),c.Szb(e).substr(b,g-b)),n1,Mt)),b=n.hs(e,g),g=(w=n.is(e,b),w==-1?c.Szb(e).length:w),P=n.ds(t,T.Khb((c.Mzb(b,g,c.Szb(e).length),c.Szb(e).substr(b,g-b)),n1,Mt)),m=0,S=0;(b=n.hs(e,g))!=-1;)if(g=(u=n.is(e,b),u==-1?c.Szb(e).length:u),B=(c.Mzb(b,g,c.Szb(e).length),c.Szb(e).substr(b,g-b)),h=T.gjb(B,X1(61)),s=(c.Mzb(0,h,c.Szb(B).length),c.Szb(B).substr(0,h)),p=T.Khb((c.Nzb(h+1,c.Szb(B).length+1),c.Szb(B).substr(h+1)),n1,Mt),T._ib(s,\"CFG\"))switch(p){case 1:m=1;break;case 2:m=D==2?3:4;break;case 3:m=6}else T._ib(s,\"TOPO\")&&(S=p);r=n._r(t,A,P,D,m,S),r+1!=i&&(!t.c&&(t.c=new y.Xvb),y.Pvb(t.c,T.pib(i),T.pib(r)))},n.ns=function(t,e){var A,P,r,i,D,u;if(u=n.js(e),u!=null){if(D=n.ps(e,u),T._ib(c.Szb(e).substr(0,13),\"MDLV30/STEABS\"))if(T._ib(u,Vn))for(i=0;i<D.length;i++)n.kn(t.j,n.ds(t,D[i]),0,-1);else for(r=0;r<D.length;r++)n.Cn(t.j,n.es(t,D[r]),0,-1);else if(T._ib(c.Szb(e).substr(0,13),\"MDLV30/STERAC\"))if(P=T.Khb(T.qjb(e,13,n.is(e,13)),n1,Mt),T._ib(u,Vn))for(i=0;i<D.length;i++)n.kn(t.j,n.ds(t,D[i]),1,P-1);else for(r=0;r<D.length;r++)n.Cn(t.j,n.es(t,D[r]),1,P-1);else if(T._ib(c.Szb(e).substr(0,13),\"MDLV30/STEREL\"))if(P=T.Khb(T.qjb(e,13,n.is(e,13)),n1,Mt),T._ib(u,Vn))for(i=0;i<D.length;i++)n.kn(t.j,n.ds(t,D[i]),2,P-1);else for(r=0;r<D.length;r++)n.Cn(t.j,n.es(t,D[r]),2,P-1);else if(T._ib(c.Szb(e).substr(0,13),\"MDLV30/HILITE\"))if(T._ib(u,Vn))for(r=0;r<D.length;r++)n.fn(t.j,n.ds(t,D[r]),448);else for(r=0;r<D.length;r++)A=n.es(t,D[r]),n.fn(t.j,n.Ul(t.j,0,A),448),n.fn(t.j,n.Ul(t.j,1,A),448)}},n.os=function(t,e){var A,P,r;t.j||T._ib(c.Szb(e).substr(0,6),\"COUNTS\")&&(A=n.hs(e,n.is(e,7)),P=T.Khb(T.qjb(e,7,n.is(e,7)),n1,Mt),r=T.Khb(T.qjb(e,A,n.is(e,A)),n1,Mt),t.j=new n.tw(P,r))},n.ps=function(t,e){var A,P,r,i,D,u;for(i=c.Szb(t).indexOf(e+\"=(\")+c.Szb(e).length+2,D=T.hjb(t,X1(41),i),r=n.is(t,i),A=T.Khb((c.Mzb(i,r,c.Szb(t).length),c.Szb(t).substr(i,r-i)),n1,Mt),u=d(l.Z6,H,6,A,15,1),P=0;P<A;P++)i=n.hs(t,r),r=n.is(t,i),(r==-1||r>D)&&(r=D),u[P]=T.Khb((c.Mzb(i,r,c.Szb(t).length),c.Szb(t).substr(i,r-i)),n1,Mt);return u},n.qs=function(t,e){var A,P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S,p;if(s=0,h=(i=n.is(e,s),i==-1?c.Szb(e).length:i),p=(c.Mzb(s,h,c.Szb(e).length),c.Szb(e).substr(s,h-s)),T._ib(\"DEFAULT\",p)&&(s=n.hs(e,h),h=(D=n.is(e,s),D==-1?c.Szb(e).length:D),p=(c.Mzb(s,h,c.Szb(e).length),c.Szb(e).substr(s,h-s)),T._ib(c.Szb(p).substr(0,5),\"CLASS\")&&(s=n.hs(e,h),h=(u=n.is(e,s),u==-1?c.Szb(e).length:u),p=(c.Mzb(s,h,c.Szb(e).length),c.Szb(e).substr(s,h-s)),T._ib(\"-\",p)&&(s=n.hs(e,h),h=(o=n.is(e,s),o==-1?c.Szb(e).length:o),p=(c.Mzb(s,h,c.Szb(e).length),c.Szb(e).substr(s,h-s))))),T.Khb(p,n1,Mt),s=n.hs(e,h),h=(Q=n.is(e,s),Q==-1?c.Szb(e).length:Q),S=(c.Mzb(s,h,c.Szb(e).length),c.Szb(e).substr(s,h-s)),!!T._ib(\"DAT\",S)){for(s=n.hs(e,h),h=(r=n.is(e,s),r==-1?c.Szb(e).length:r),T.Khb((c.Mzb(s,h,c.Szb(e).length),c.Szb(e).substr(s,h-s)),n1,Mt),m=new y.Xvb,s=n.hs(e,h);s!=-1;)s=n.vs(m,e,s);P=(g=Vn,y.Xmb(y.Kvb(m,g))),w=(B=\"FIELDNAME\",y.Xmb(y.Kvb(m,B))),L=(b=\"FIELDDATA\",y.Xmb(y.Kvb(m,b))),!(!T._ib(iP,w)||P==null||L==null)&&(A=T.njb(P,\" \"),A.length==2&&n.hn(t.j,T.Khb(A[1],n1,Mt)-1,L))}},n.rs=function(t){var e,A,P,r,i,D,u,o,Q;for(o=d(l.Z6,H,6,t.j.q,15,1),P=0;P<t.j.r;P++)if(n.dm(t.j,P)==8)for(D=0;D<2;D++)o[n.Ul(t.j,D,P)]=1;for(r=0;r<t.j.r;r++)for(Q=n.am(t.j,r),i=0;i<2;i++)o[n.Ul(t.j,i,r)]+=Q;for(A=0;A<t.j.r;A++)if(n.am(t.j,A)==1){for(i=0;i<2;i++)if(u=n.Ul(t.j,1-i,A),n.Hm(t.j,u)&&(e=n.Ul(t.j,i,A),n.Dm(t.j,e)&&o[e]>n.km(t.j,e))){n.In(t.j,A,16);continue}}},n.ss=function(t){var e,A;if(c.Szb(t).indexOf(\"[\")>=0){if(e=c.Szb(t).indexOf(\" NOT[\"),A=c.Szb(t).indexOf(\"]\",e),e>=0&&A>0)return-(A+1);if(e=c.Szb(t).indexOf(\" [\"),A=c.Szb(t).indexOf(\"]\",e),e>=0&&A>0)return A+1;if(e=c.Szb(t).indexOf(\" 'NOT[\"),A=c.Szb(t).indexOf(\"]'\",e),e>=0&&A>0)return-(A+2);if(e=c.Szb(t).indexOf(\" '[\"),A=c.Szb(t).indexOf(\"]'\",e),e>=0&&A>0)return A+2;T.Pjb()}return 0},n.ts=function(t,e,A){return t.j=e,n.ws(t,A)},n.us=function(t){return c.Szb(t).length==0?0:T.Khb(t,n1,Mt)},n.vs=function(t,e,A){var P,r,i,D,u,o,Q;return i=n.gs(e,A),i==-1?-1:(r=(P=n.is(e,i+1),P==-1?c.Szb(e).length:P),D=(c.Mzb(A,i,c.Szb(e).length),c.Szb(e).substr(A,i-A)),Q=(c.Mzb(i+1,r,c.Szb(e).length),c.Szb(e).substr(i+1,r-(i+1))),(T._ib(c.Szb(Q).substr(0,1),\"(\")&&(o=c.Szb(\")\").length,T._ib(c.Szb(Q).substr(c.Szb(Q).length-o,o),\")\"))||T._ib(c.Szb(Q).substr(0,1),'\"')&&(u=c.Szb('\"').length,T._ib(c.Szb(Q).substr(c.Szb(Q).length-u,u),'\"')))&&(Q=T.qjb(Q,1,c.Szb(Q).length-1)),y.Pvb(t,D,Q),n.hs(e,r))},n.ws=function(t,e){var A,P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S,p,M,z,q,x,J,E,N,ft,Lt,ot,st,ut,rt,Ut,ht,it,bt,ct,$t,Ft,Rt,Et,Nt,It,vt,kt,L1,f1,St,Xt,k1,qt;f1=null,b=null;try{if(t.f=null,t.j&&(n.$v(t.j),n.Kn(t.j,!1)),st=E=pt.bgb(e),st==null||(E=pt.bgb(e))==null||(E=pt.bgb(e))==null||(t.k=c.Szb(E).indexOf(\"From CSD data. Using bond type 'Any'\")!=-1,t.e=c.Szb(E).indexOf(\"From CSD data.\")!=-1,(E=pt.bgb(e))==null))return!1;t.g=!1,t.d=t.a;try{ut=T.Khb(T.rjb((c.Mzb(0,3,c.Szb(E).length),c.Szb(E).substr(0,3))),n1,Mt),rt=T.Khb(T.rjb((c.Mzb(3,6,c.Szb(E).length),c.Szb(E).substr(3,3))),n1,Mt),Ut=n.us(T.rjb((c.Mzb(6,9,c.Szb(E).length),c.Szb(E).substr(6,3)))),t.d=t.d|n.us(T.rjb((c.Mzb(12,15,c.Szb(E).length),c.Szb(E).substr(12,3))))==1,t.g=c.Szb(E).length>=39&&T._ib(c.Szb(E).substr(34,c.Szb(\"V3000\").length),\"V3000\")}catch(P1){if(P1=C1(P1),Yt(P1,19))return!1;throw Qt(P1)}if(t.g)return ct=n.xs(t,e),n.Qn(t.j,st),ct;if(!t.j&&(t.j=new n.tw(ut,rt)),n.Qn(t.j,st),t.d||(t.j.L=!0),ut==0){for(;E!=null&&!(T._ib(E,me)||T._ib(E,QA)||T._ib((c.Nzb(1,c.Szb(E).length+1),c.Szb(E).substr(1)),\"$\"));)E=pt.bgb(e);return!0}for(p=0;p<ut;p++){if((E=pt.bgb(e))==null)return!1;switch(Xt=q0(T.rjb((c.Mzb(0,10,c.Szb(E).length),c.Szb(E).substr(0,10)))),k1=q0(T.rjb((c.Mzb(10,20,c.Szb(E).length),c.Szb(E).substr(10,10)))),qt=q0(T.rjb((c.Mzb(20,30,c.Szb(E).length),c.Szb(E).substr(20,10)))),P=n.Qk(t.j,Xt,-k1,-qt),J=T.rjb((c.Mzb(31,34,c.Szb(E).length),c.Szb(E).substr(31,3))),T._ib(J,\"A\")||T._ib(J,\"*\")?n.rn(t.j,P,1,!0):T._ib(J,\"Q\")?(N=d(l.Z6,H,6,1,15,1),N[0]=6,n.mn(t.j,P,N,!0)):(D=n.lo(J,67),n.yn(t.j,P,D)),ot=n.us(T.rjb((c.Mzb(34,36,c.Szb(E).length),c.Szb(E).substr(34,2)))),ot!=0&&n.pn(t.j,P,(n.Ok(),n.Mk)[n.Ol(t.j,P)]+ot),w=n.us(T.rjb((c.Mzb(36,39,c.Szb(E).length),c.Szb(E).substr(36,3)))),w!=0&&(w==4?n.sn(t.j,P,32):n.en(t.j,P,4-w)),ft=c.Szb(E).length<63?0:n.us(T.rjb((c.Mzb(60,63,c.Szb(E).length),c.Szb(E).substr(60,3)))),n.nn(t.j,P,ft,!1),m=c.Szb(E).length<45?0:n.us(T.rjb((c.Mzb(42,45,c.Szb(E).length),c.Szb(E).substr(42,3)))),m){case 0:break;case 1:n.rn(t.j,P,768,!0);break;case 2:n.rn(t.j,P,128,!0);break;case 3:n.rn(t.j,P,384,!0);break;default:n.rn(t.j,P,896,!0)}c.Szb(E).length>=48&&(c.Nzb(47,c.Szb(E).length),c.Szb(E).charCodeAt(47)==49)&&n.rn(t.j,P,l0,!0),L1=c.Szb(E).length<51?0:n.us(T.rjb((c.Mzb(48,51,c.Szb(E).length),c.Szb(E).substr(48,3)))),L1!=0&&(f1==null&&(f1=d(l.Z6,H,6,ut,15,1)),f1[P]=L1)}for(M=0;M<rt;M++){if((E=pt.bgb(e))==null)return!1;r=T.Khb(T.rjb((c.Mzb(0,3,c.Szb(E).length),c.Szb(E).substr(0,3))),n1,Mt)-1,i=T.Khb(T.rjb((c.Mzb(3,6,c.Szb(E).length),c.Szb(E).substr(3,3))),n1,Mt)-1,Q=T.Khb(T.rjb((c.Mzb(6,9,c.Szb(E).length),c.Szb(E).substr(6,3))),n1,Mt),Et=c.Szb(E).length<12?0:n.us(T.rjb((c.Mzb(9,12,c.Szb(E).length),c.Szb(E).substr(9,3)))),kt=c.Szb(E).length<18?0:n.us(T.rjb((c.Mzb(15,18,c.Szb(E).length),c.Szb(E).substr(15,3)))),Q==8&&(t.k||n.Hm(t.j,r)||n.Hm(t.j,i))&&(Q=9),n._r(t,r,i,Q,Et,kt)}for(S=0;S<Ut;S++)if((E=pt.bgb(e))==null)return!1;if((E=pt.bgb(e))==null)return(t.i&1)!=0&&(t.f=n.hp(t.j)),n.fs(t,f1),t.d||n.aw(t.j,15),!0;for(;E!=null&&!(T._ib(E,me)||T._ib(E,QA));){if(T._ib(c.Szb(E).substr(0,6),\"M  CHG\")&&(z=T.Khb(T.rjb((c.Mzb(6,9,c.Szb(E).length),c.Szb(E).substr(6,3))),n1,Mt),z>0))for(A=10,St=14,q=1;q<=z;++q,A+=8,St+=8)P=T.Khb(T.rjb((c.Mzb(A,A+3,c.Szb(E).length),c.Szb(E).substr(A,A+3-A))),n1,Mt)-1,L=T.Khb(T.rjb((c.Mzb(St,St+3,c.Szb(E).length),c.Szb(E).substr(St,St+3-St))),n1,Mt),n.en(t.j,P,L);if(T._ib(c.Szb(E).substr(0,6),\"M  ISO\")&&(z=T.Khb(T.rjb((c.Mzb(6,9,c.Szb(E).length),c.Szb(E).substr(6,3))),n1,Mt),z>0))for(A=10,St=14,q=1;q<=z;++q,A+=8,St+=8)P=T.Khb(T.rjb((c.Mzb(A,A+3,c.Szb(E).length),c.Szb(E).substr(A,A+3-A))),n1,Mt)-1,Lt=T.Khb(T.rjb((c.Mzb(St,St+3,c.Szb(E).length),c.Szb(E).substr(St,St+3-St))),n1,Mt),n.pn(t.j,P,Lt);if(T._ib(c.Szb(E).substr(0,6),\"M  RAD\")&&(z=T.Khb(T.rjb((c.Mzb(6,9,c.Szb(E).length),c.Szb(E).substr(6,3))),n1,Mt),z>0))for(A=10,St=14,q=1;q<=z;++q,A+=8,St+=8)switch(P=T.Khb(T.rjb((c.Mzb(A,A+3,c.Szb(E).length),c.Szb(E).substr(A,A+3-A))),n1,Mt)-1,bt=T.Khb(T.rjb((c.Mzb(St,St+3,c.Szb(E).length),c.Szb(E).substr(St,St+3-St))),n1,Mt),bt){case 1:n.sn(t.j,P,16);break;case 2:n.sn(t.j,P,32);break;case 3:n.sn(t.j,P,48)}if((T._ib(c.Szb(E).substr(0,6),\"M  RBC\")||T._ib(c.Szb(E).substr(0,6),\"M  RBD\"))&&(z=T.Khb(T.rjb((c.Mzb(6,9,c.Szb(E).length),c.Szb(E).substr(6,3))),n1,Mt),z>0))for(A=10,St=14,q=1;q<=z;++q,A+=8,St+=8)switch(P=T.Khb(T.rjb((c.Mzb(A,A+3,c.Szb(E).length),c.Szb(E).substr(A,A+3-A))),n1,Mt)-1,$t=T.Khb(T.rjb((c.Mzb(St,St+3,c.Szb(E).length),c.Szb(E).substr(St,St+3-St))),n1,Mt),$t){case 3:case-1:n.rn(t.j,P,112,!0);break;case 1:n.rn(t.j,P,8,!0);break;case 2:n.rn(t.j,P,104,!0);break;case 4:n.rn(t.j,P,56,!0)}if(T._ib(c.Szb(E).substr(0,6),\"M  ALS\")&&(P=T.Khb(T.rjb((c.Mzb(7,10,c.Szb(E).length),c.Szb(E).substr(7,3))),n1,Mt)-1,P>=0)){for(ht=T.Khb(T.rjb((c.Mzb(10,13,c.Szb(E).length),c.Szb(E).substr(10,3))),n1,Mt),u=(c.Nzb(14,c.Szb(E).length),c.Szb(E).charCodeAt(14)==84),L1=d(l.Z6,H,6,ht,15,1),A=16,q=0;q<ht;++q,A+=4)vt=T.rjb((c.Mzb(A,A+4,c.Szb(E).length),c.Szb(E).substr(A,A+4-A))),L1[q]=n.lo(vt,1);n.yn(t.j,P,6),n.mn(t.j,P,L1,u)}if(T._ib(c.Szb(E).substr(0,6),\"M  SUB\")&&(z=T.Khb(T.rjb((c.Mzb(6,9,c.Szb(E).length),c.Szb(E).substr(6,3))),n1,Mt),z>0)){for(A=10,St=14,q=1;q<=z;++q,A+=8,St+=8)if(P=T.Khb(T.rjb((c.Mzb(A,A+3,c.Szb(E).length),c.Szb(E).substr(A,A+3-A))),n1,Mt)-1,Nt=T.Khb(T.rjb((c.Mzb(St,St+3,c.Szb(E).length),c.Szb(E).substr(St,St+3-St))),n1,Mt),Nt==-2)n.rn(t.j,P,c1,!0);else if(Nt>0){for(It=0,o=0;o<t.j.r;o++)(n.Ul(t.j,0,o)==P||n.Ul(t.j,1,o)==P)&&++It;Nt>It&&n.rn(t.j,P,J1,!0)}}if(T._ib(c.Szb(E).substr(0,6),\"M  RGP\")&&(z=T.Khb(T.rjb((c.Mzb(6,9,c.Szb(E).length),c.Szb(E).substr(6,3))),n1,Mt),z>0))for(A=10,St=14,q=1;q<=z;++q,A+=8,St+=8)P=T.Khb(T.rjb((c.Mzb(A,A+3,c.Szb(E).length),c.Szb(E).substr(A,A+3-A))),n1,Mt)-1,Ft=T.Khb(T.rjb((c.Mzb(St,St+3,c.Szb(E).length),c.Szb(E).substr(St,St+3-St))),n1,Mt),Ft>=1&&Ft<=20&&n.yn(t.j,P,n.lo(\"R\"+Ft,2));(T._ib(c.Szb(E).substr(0,6),\"M  SAL\")&&c.Szb(E).length>=17||T._ib(c.Szb(E).substr(0,6),\"M  SDT\")&&c.Szb(E).length>=12||T._ib(c.Szb(E).substr(0,6),\"M  SED\")&&c.Szb(E).length>=12)&&(!b&&(b=new y.Xvb),Rt=(c.Mzb(7,10,c.Szb(E).length),c.Szb(E).substr(7,3)),s=(x=Rt,y.Xmb(y.Kvb(b,x))),s||(s=new n.As,y.Pvb(b,Rt,s)),T._ib(c.Szb(E).substr(0,6),\"M  SAL\")&&T._ib(c.Szb(E).substr(10,c.Szb(\"  1\").length),\"  1\")?s.a=T.Khb(T.rjb((c.Mzb(13,17,c.Szb(E).length),c.Szb(E).substr(13,4))),n1,Mt):T._ib(c.Szb(E).substr(0,6),\"M  SDT\")?s.b=T.ojb((c.Nzb(11,c.Szb(E).length+1),c.Szb(E).substr(11)),iP):T._ib(c.Szb(E).substr(0,6),\"M  SED\")&&(s.c=T.rjb((c.Nzb(11,c.Szb(E).length+1),c.Szb(E).substr(11))))),E=pt.bgb(e)}}catch(P1){if(P1=C1(P1),Yt(P1,19))return g=P1,T.LB(g,(T.Pjb(),T.Ojb),\"\"),!1;throw Qt(P1)}if(b)for(h=(it=new y.Eob(b).a.ad().Sb(),new y.Lob(it));h.a.cd();)s=(B=h.a.dd(),B.gd()),s.b&&s.a!=0&&s.c!=null&&n.hn(t.j,s.a-1,s.c);return t.e&&(n.rs(t),n.as(t)),(t.i&1)!=0&&(t.f=n.hp(t.j)),n.fs(t,f1),n.aw(t.j,15),!0},n.xs=function(t,e){var A,P,r,i,D;for(t.b&&y.Ivb(t.b),t.c&&y.Ivb(t.c),r=0,P=pt.bgb(e);P!=null&&T._ib(c.Szb(P).substr(0,7),LA);){for(P=T.rjb((c.Nzb(7,c.Szb(P).length+1),c.Szb(P).substr(7)));D=c.Szb(\"-\").length,T._ib(c.Szb(P).substr(c.Szb(P).length-D,D),\"-\");){if(A=pt.bgb(e),!T._ib(c.Szb(A).substr(0,7),LA))return!1;P=T.rjb(T.Xib(T.qjb(P,0,c.Szb(P).length-1),(c.Nzb(7,c.Szb(A).length+1),c.Szb(A).substr(7))))}if(T._ib(c.Szb(P).substr(0,5),\"BEGIN\"))if(i=T.rjb((c.Nzb(6,c.Szb(P).length+1),c.Szb(P).substr(6))),T._ib(c.Szb(i).substr(0,4),\"CTAB\"))r=1;else if(T._ib(c.Szb(i).substr(0,4),\"ATOM\"))r=2;else if(T._ib(c.Szb(i).substr(0,4),\"BOND\"))r=3;else if(T._ib(c.Szb(i).substr(0,6),\"SGROUP\"))r=4;else if(T._ib(c.Szb(i).substr(0,10),\"COLLECTION\"))r=5;else return!1;else if(T._ib(c.Szb(P).substr(0,3),\"END\"))r=0;else if(r==1)n.os(t,P);else if(r==2)n.ks(t,P);else if(r==3)n.ms(t,P);else if(r==4)n.qs(t,P);else if(r==5)n.ns(t,P);else return!1;P=pt.bgb(e)}for(;P!=null&&!(T._ib(c.Szb(P).substr(0,6),me)||T._ib(P,QA));)P=pt.bgb(e);return!0},n.ys=function(){this.i=0},n.zs=function(){this.i=1},G(130,1,{},n.ys,n.zs),U.a=!1,U.d=!1,U.e=!1,U.g=!1,U.i=0,U.k=!1,l.I7=O(130),n.As=function(){},G(224,1,{224:1},n.As),U.a=0,U.b=!1,l.H7=O(224),n.Bs=function(t){},n.Cs=function(t,e){var A,P;for(P=D0.Dmb(t.a,e),A=c.Szb(P).length;A<10;A++)T.Ejb(t.b,32);T.Ijb(t.b,P)},n.Ds=function(t,e,A){var P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S,p,M,z,q,x,J,E,N,ft,Lt,ot,st,ut,rt,Ut,ht,it,bt,ct,$t;for(N=(T.Pjb(),N1),T.Ijb(t.b,\"M  V30 BEGIN CTAB\"+N),T.Ijb(t.b,J8+e.q+\" \"+e.r+\" 0 0 0\"+N),T.Ijb(t.b,\"M  V30 BEGIN ATOM\"+N),o=0;o<e.q;o++){if(T.Ijb(t.b,LA+(o+1)),(e.v==null?null:e.v[o])!=null){for(s=e.v==null?null:e.v[o],ft=jt(Z(e.B[o],1),0),T.Ijb(t.b,ft?\" NOT[\":\" [\"),q=0;q<s.length;q++)switch(q>0&&T.Ijb(t.b,\",\"),x=(n.Ok(),n.Ik)[s[q]],c.Szb(x).length){case 2:case 3:case 1:T.Ijb(t.b,x);break;default:T.Ijb(t.b,\"?\")}T.Ijb(t.b,\"]\")}else jt(Z(e.B[o],1),0)?T.Ijb(t.b,\" A\"):e.C[o]>=129&&e.C[o]<=144||e.C[o]==154?T.Ijb(t.b,\" R#\"):T.Ijb(t.b,\" \"+(n.Ok(),n.Ik)[e.C[o]]);if(A?(T.Ijb(t.b,\" \"+mt(Z0*t.c*e.J[o].a)/Z0),T.Ijb(t.b,\" \"+mt(Z0*t.c*-e.J[o].b)/Z0),T.Ijb(t.b,\" \"+mt(Z0*t.c*-e.J[o].c)/Z0)):T.Ijb(t.b,\" 0 0 0\"),T.Ijb(t.b,\" \"+k.Math.abs(e.w[o])),e.s[o]!=0&&T.Ijb(t.b,\" CHG=\"+e.s[o]),(e.u[o]&48)!=0)switch(T.Ijb(t.b,\" RAD=\"),e.u[o]&48){case 16:T.Ijb(t.b,\"1\");break;case 32:T.Ijb(t.b,\"2\");break;case 48:T.Ijb(t.b,\"3\")}((e.u[o]&3)==1||(e.u[o]&3)==2)&&(T.Ijb(t.b,\" CFG=\"),(e.u[o]&3)==1?T.Ijb(t.b,\"1\"):T.Ijb(t.b,\"2\")),e.A[o]!=0&&T.Ijb(t.b,\" MASS=\"+e.A[o]),$t=((e.u[o]&se)>>>27)-1,$t!=-1&&T.Ijb(t.b,\" VAL=\"+($t==0?\"-1\":T.pib($t))),h=e.C[o],(h>=129&&h<=144||h==154)&&T.Ijb(t.b,\" RGROUPS=(1 \"+(h==154?0:h>=142?h-141:h-125)+\")\"),z=Z(K0,e.B[o]),et(z,384)==0?T.Ijb(t.b,\" HCOUNT=2\"):et(z,128)==0?T.Ijb(t.b,\" HCOUNT=1\"):et(z,1792)==0?T.Ijb(t.b,\" HCOUNT=-1\"):et(z,1664)==0&&T.Ijb(t.b,\" HCOUNT=1\"),it=Z(e.B[o],6144),et(it,0)!=0&&(jt(Z(it,J1),0)?T.Ijb(t.b,\" SUBST=\"+(e.e[o]+1)):T.Ijb(t.b,\" SUBST=-1\")),rt=Z(e.B[o],120),et(rt,0)!=0&&(et(rt,112)==0?T.Ijb(t.b,\" RBCNT=-1\"):et(rt,8)==0||et(rt,104)==0?T.Ijb(t.b,\" RBCNT=2\"):et(rt,88)==0?T.Ijb(t.b,\" RBCNT=3\"):et(rt,56)==0&&T.Ijb(t.b,\" RBCNT=4\")),T.Ijb(t.b,N)}for(T.Ijb(t.b,\"M  V30 END ATOM\"+N),T.Ijb(t.b,\"M  V30 BEGIN BOND\"+N),g=0;g<e.r;g++){switch(T.Ijb(t.b,LA+(g+1)),e.H[g]){case 1:st=1,ht=0;break;case 2:st=2,ht=0;break;case 4:st=3,ht=0;break;case 129:st=1,ht=3;break;case 257:st=1,ht=1;break;case 386:st=2,ht=2;break;case 8:st=4,ht=0;break;case 16:st=9,ht=0;break;default:st=1,ht=0}m=e.G[g]&31,m!=0&&(m==8?st=4:m==3?st=5:m==9?st=6:m==10?st=7:st=8),T.Ijb(t.b,\" \"+st+\" \"+(e.D[0][g]+1)+\" \"+(e.D[1][g]+1)),ht!=0&&T.Ijb(t.b,\" CFG=\"+ht),Ut=e.G[g]&384,bt=Ut==0?0:Ut==256?1:2,bt!=0&&T.Ijb(t.b,\" TOPO=\"+bt),T.Ijb(t.b,N)}for(T.Ijb(t.b,\"M  V30 END BOND\"+N),p=!1,Q=0;Q<e.q;Q++)if((e.t==null||e.t[Q]==null?null:T.Zib((J=e.t[Q],V1.Cmb(),J)))!=null){p=!0;break}if(p){for(T.Ijb(t.b,\"M  V30 BEGIN SGROUP\"+N),S=0,L=0;L<e.q;L++)(e.t==null||e.t[L]==null?null:T.Zib((E=e.t[L],V1.Cmb(),E)))!=null&&(++S,T.Ijb(t.b,LA+S+\" DAT \"+S+\" ATOMS=(1 \"+(L+1)+') FIELDNAME=\"'+iP+'\" -'+N),T.Ijb(t.b,'M  V30 FIELDDISP=\"'),n.Cs(t,A?t.c*e.J[L].a:0),n.Cs(t,A?t.c*e.J[L].b:0),T.Ijb(t.b,'    DA    ALL  1       5\" FIELDDATA=\"'+(e.t==null||e.t[L]==null?null:T.Zib((J=e.t[L],V1.Cmb(),J)))+'\"'+N));T.Ijb(t.b,\"M  V30 END SGROUP\"+N)}for(ut=!1,P=0,Lt=d(l.Z6,H,6,32,15,1),i=d(l.Z6,H,6,32,15,1),w=0;w<e.f;w++)((e.u[w]&3)==1||(e.u[w]&3)==2)&&(ut=!0,ct=(e.u[w]&U1)>>18,ct==1?++i[(e.u[w]&U1)>>18!=1&&(e.u[w]&U1)>>18!=2?-1:(e.u[w]&j0)>>20]:ct==2?++Lt[(e.u[w]&U1)>>18!=1&&(e.u[w]&U1)>>18!=2?-1:(e.u[w]&j0)>>20]:++P);for(r=0,ot=d(l.Z6,H,6,32,15,1),D=d(l.Z6,H,6,32,15,1),B=0;B<e.g;B++)n.am(e,B)!=2&&((e.F[B]&3)==1||(e.F[B]&3)==2)&&(ut=!0,ct=(e.F[B]&768)>>8,ct==1?++D[(e.F[B]&768)>>8!=1&&(e.F[B]&768)>>8!=2?-1:(e.F[B]&S0)>>10]:ct==2?++ot[(e.F[B]&768)>>8!=1&&(e.F[B]&768)>>8!=2?-1:(e.F[B]&S0)>>10]:++r);if(ut){if(T.Ijb(t.b,\"M  V30 BEGIN COLLECTION\"+N),P!=0){for(T.Ijb(t.b,\"M  V30 MDLV30/STEABS ATOMS=(\"+P),u=0;u<e.f;u++)((e.u[u]&3)==1||(e.u[u]&3)==2)&&(e.u[u]&U1)>>18==0&&T.Ijb(t.b,\" \"+(u+1));T.Ijb(t.b,\")\"+N)}if(r!=0){for(T.Ijb(t.b,\"M  V30 MDLV30/STEABS BONDS=(\"+r),b=0;b<e.g;b++)n.am(e,b)!=2&&((e.F[b]&3)==1||(e.F[b]&3)==2)&&(e.F[b]&768)>>8==0&&T.Ijb(t.b,\" \"+(b+1));T.Ijb(t.b,\")\"+N)}for(M=0;M<32;M++){if(Lt[M]!=0){for(T.Ijb(t.b,K8+(M+1)+\" ATOMS=(\"+Lt[M]),u=0;u<e.f;u++)((e.u[u]&3)==1||(e.u[u]&3)==2)&&(e.u[u]&U1)>>18==2&&((e.u[u]&U1)>>18!=1&&(e.u[u]&U1)>>18!=2?-1:(e.u[u]&j0)>>20)==M&&T.Ijb(t.b,\" \"+(u+1));T.Ijb(t.b,\")\"+N)}if(i[M]!=0){for(T.Ijb(t.b,Y8+(M+1)+\" ATOMS=(\"+i[M]),u=0;u<e.f;u++)((e.u[u]&3)==1||(e.u[u]&3)==2)&&(e.u[u]&U1)>>18==1&&((e.u[u]&U1)>>18!=1&&(e.u[u]&U1)>>18!=2?-1:(e.u[u]&j0)>>20)==M&&T.Ijb(t.b,\" \"+(u+1));T.Ijb(t.b,\")\"+N)}if(ot[M]!=0){for(T.Ijb(t.b,K8+(M+1)+\" BONDS=(\"+ot[M]),b=0;b<e.g;b++)n.am(e,b)!=2&&((e.F[b]&3)==1||(e.F[b]&3)==2)&&(e.F[b]&768)>>8==2&&((e.F[b]&768)>>8!=1&&(e.F[b]&768)>>8!=2?-1:(e.F[b]&S0)>>10)==M&&T.Ijb(t.b,\" \"+(b+1));T.Ijb(t.b,\")\"+N)}if(D[M]!=0){for(T.Ijb(t.b,Y8+(M+1)+\" BONDS=(\"+D[M]),b=0;b<e.g;b++)n.am(e,b)!=2&&((e.F[b]&3)==1||(e.F[b]&3)==2)&&(e.F[b]&768)>>8==1&&((e.F[b]&768)>>8!=1&&(e.F[b]&768)>>8!=2?-1:(e.F[b]&S0)>>10)==M&&T.Ijb(t.b,\" \"+(b+1));T.Ijb(t.b,\")\"+N)}}T.Ijb(t.b,\"M  V30 END COLLECTION\"+N)}T.Ijb(t.b,Qr+N)},n.Es=function(){n.Bs(this),this.b=new T.Ljb},n.Fs=function(t){n.Gs.call(this,t)},n.Gs=function(t){n.Hs.call(this,t,new T.Ljb)},n.Hs=function(t,e){var A,P,r,i;n.Bs(this),this.a=new D0.Imb((P=rP,P)),n.aw(t,15),i=(T.Pjb(),N1),this.b=e,r=t.P!=null?t.P:\"\",T.Ijb(this.b,r+i),T.Ijb(this.b,\"Actelion Java MolfileCreator 2.0\"+i+i),T.Ijb(this.b,\"  0  0  0  0  0  0              0 V3000\"+i),this.c=1,A=n.Js(t),A&&(this.c=n.Is(t)),n.Ds(this,t,A),T.Ijb(this.b,me+i)},n.Is=function(t){var e,A,P,r,i,D,u,o,Q;if(Q=1,P=n.Rl(t,t.q,t.r,(n.Ok(),n.Nk)),P!=0)(P<1||P>3)&&(Q=1.5/P);else{for(o=X8,e=1;e<t.q;e++)for(A=0;A<e;A++)i=t.J[A].a-t.J[e].a,D=t.J[A].b-t.J[e].b,u=t.J[A].c-t.J[e].c,r=i*i+D*D+u*u,o>r&&(o=r);Q=3/k.Math.max(.75,o)}return Q},n.Js=function(t){var e;if(t.q==1)return!0;for(e=1;e<t.q;e++)if(t.J[e].a!=t.J[0].a||t.J[e].b!=t.J[0].b||t.J[e].c!=t.J[0].c)return!0;return!1},n.Ks=function(t,e){var A;return A=new n.Es,A.c=e,n.aw(t,15),n.Ds(A,t,!0),A.b.a},G(148,1,{},n.Es,n.Fs),U.c=1,l.J7=O(148),n.Ns=function(){n.Ns=u1,n.Ls=v(F(l.Nbb,2),T0,13,0,[v(F(l.Nbb,1),yt,2,6,[\"Acyl\",\"gCaHA`AIf`@\"]),v(F(l.Nbb,1),yt,2,6,[\"Alloc\",\"gNph@l@ILzuR@@\"]),v(F(l.Nbb,1),yt,2,6,[\"Allyl\",\"Al\"]),v(F(l.Nbb,1),yt,2,6,[\"Benzyl;Bn\",\"daD@`F@DjUZxHH@@\"]),v(F(l.Nbb,1),yt,2,6,[\"Boc\",\"daxD`@S@AIgijj@@\"]),v(F(l.Nbb,1),yt,2,6,[\"BOM;BzOM\",\"deTH`@H@Re[TYj`@@@\"]),v(F(l.Nbb,1),yt,2,6,[\"Bs\",\"dmtDpAdLS`aPAIe]jf`@e`@@\"]),v(F(l.Nbb,1),yt,2,6,[\"Bt\",\"dew@`@aJ@DiY]paej`@@@\"]),v(F(l.Nbb,1),yt,2,6,[\"Btm\",\"did@P@BJ@Die_ahH@@@\"]),v(F(l.Nbb,1),yt,2,6,[\"Butyl;nButyl\",\"gJPHB@IRuP@\"]),v(F(l.Nbb,1),yt,2,6,[\"Benzoyl;Bz\",\"didH`@p@RYm^Eh@@@@\"]),v(F(l.Nbb,1),yt,2,6,[\"Bzh\",\"dg|@`N@LdbRbtJUB]aAP@@@@\"]),v(F(l.Nbb,1),yt,2,6,[\"Cbz\",\"dmtD`@S@AIgYVUZh@@@@\"]),v(F(l.Nbb,1),yt,2,6,[\"cButyl\",\"gKPHL@IThuT@@\"]),v(F(l.Nbb,1),yt,2,6,[\"cHeptyl\",\"daD@`L@DjWVzjj`@\"]),v(F(l.Nbb,1),yt,2,6,[\"cHexyl\",\"gOpHL@IToWUU@@\"]),v(F(l.Nbb,1),yt,2,6,[\"cOctyl\",\"did@`L@DjWWajjj@@\"]),v(F(l.Nbb,1),yt,2,6,[\"cPentyl\",\"gFpHL@ITimUP@\"]),v(F(l.Nbb,1),yt,2,6,[\"cPropyl\",\"gBPHL@Qxjh@\"]),v(F(l.Nbb,1),yt,2,6,[\"COOH\",\"gC`h@l@ILt@@ !Bb@K~@Hc}\"]),v(F(l.Nbb,1),yt,2,6,[\"DEAE\",\"daz@`@x@RiUjj`@\"]),v(F(l.Nbb,1),yt,2,6,[\"DEIPS\",\"diD@P@\\\\B@DjfVjj`@\"]),v(F(l.Nbb,1),yt,2,6,[\"DMIPS\",\"gNpD@xD@RjZjh@\"]),v(F(l.Nbb,1),yt,2,6,[\"DMPM\",\"dcLD`@kPCIEMDdcttDDT@@\"]),v(F(l.Nbb,1),yt,2,6,[\"DMPS\",\"deT@P@\\\\B@LddTjPsU@@@@\"]),v(F(l.Nbb,1),yt,2,6,[\"DMTr\",\"fak@b@@Mt@ISZ{SMjo{NQKfm@AU@@@E@@@@\"]),v(F(l.Nbb,1),yt,2,6,[\"DNP\",\"dkmB`hdDt~@HeNfS{HihheCAUhBHX@@\"]),v(F(l.Nbb,1),yt,2,6,[\"DNS;Dan\",\"fhi`a@KPP@HH@YIHYheEhYKQgKP@@QP@@@\"]),v(F(l.Nbb,1),yt,2,6,[\"DPIPS\",\"fdyAA@H@\\\\B@FRRIQSQIHzp_Qjh@h@@@@@\"]),v(F(l.Nbb,1),yt,2,6,[\"DPTBS\",\"fleAA@H@\\\\B@FRRIQSRIIWNbEMU@EP@@@@@\"]),v(F(l.Nbb,1),yt,2,6,[\"DTBMS\",\"dmT@P@\\\\B@Djffjjjh@@\"]),v(F(l.Nbb,1),yt,2,6,[\"Ethyl\",\"eMBD@ch@\"]),v(F(l.Nbb,1),yt,2,6,[\"Fmoc\",\"fde@b@@Hp@IL{LrjxeVCzKUT@@@P@@@\"]),v(F(l.Nbb,1),yt,2,6,[\"iAmyl\",\"gGPHJ@YIDZj@@\"]),v(F(l.Nbb,1),yt,2,6,[\"iButyl\",\"gJPHB@ITuP@\"]),v(F(l.Nbb,1),yt,2,6,[\"Im\",\"gFtHAj@IRnKSP@\"]),v(F(l.Nbb,1),yt,2,6,[\"iPropyl\",\"gC`HL@Qz`@\"]),v(F(l.Nbb,1),yt,2,6,[\"MDIPS\",\"diD@P@\\\\B@DjfZjj`@\"]),v(F(l.Nbb,1),yt,2,6,[\"MDPS\",\"foA@A@@NA@CIIEEBdeeVLzj@@@@@@\"]),v(F(l.Nbb,1),yt,2,6,[\"Methyl\",\"eFBH@c@@\"]),v(F(l.Nbb,1),yt,2,6,[\"MEM\",\"gNphAR@IRoUT@@\"]),v(F(l.Nbb,1),yt,2,6,[\"Mes\",\"deT@`J@DjY{[`bB`@@\"]),v(F(l.Nbb,1),yt,2,6,[\"MMTr\",\"ffcAB@@Z@Dim]ifuWYrI\\\\uh@Jh@@@@@@\"]),v(F(l.Nbb,1),yt,2,6,[\"MOM\",\"gCaHA`AJZ`@\"]),v(F(l.Nbb,1),yt,2,6,[\"MPM;PMB\",\"deTH`@d@Rfuunh@J@@\"]),v(F(l.Nbb,1),yt,2,6,[\"Ms\",\"gJPdH`DD@cuh@\"]),v(F(l.Nbb,1),yt,2,6,[\"MTM\",\"gC`D@DX@Rfh@\"]),v(F(l.Nbb,1),yt,2,6,[\"mTolyl\",\"daD@`N@DjWjXHB@@\"]),v(F(l.Nbb,1),yt,2,6,[\"N3\",\"gClHaE`@RnReX@\"]),v(F(l.Nbb,1),yt,2,6,[\"nAmyl;Amyl\",\"gGPHJ@IRmU@@\"]),v(F(l.Nbb,1),yt,2,6,[\"neoAm\",\"gGPHJ@IUMU@@\"]),v(F(l.Nbb,1),yt,2,6,[\"NO2,Nitro\",\"gChhhE`BRnRYh@\"]),v(F(l.Nbb,1),yt,2,6,[\"Np\",\"deVDaHAI@HeNR[e_aZ@B@@\"]),v(F(l.Nbb,1),yt,2,6,[\"nPropyl;Propyl\",\"gC`HL@IST@@\"]),v(F(l.Nbb,1),yt,2,6,[\"oTolyl\",\"daD@`J@DjYvxH`@@\"]),v(F(l.Nbb,1),yt,2,6,[\"Phenyl\",\"gOpHL@IToVD@@@\"]),v(F(l.Nbb,1),yt,2,6,[\"Pht\",\"dcLL`@RU@Dfyed]ZBA`@@\"]),v(F(l.Nbb,1),yt,2,6,[\"Piv;Pv\",\"gNqHA`AIffj`@\"]),v(F(l.Nbb,1),yt,2,6,[\"PMBM\",\"dcLD`@T`AJUm]FZh@J@@\"]),v(F(l.Nbb,1),yt,2,6,[\"PNB\",\"dcNLaHAEt@bTyInUvxV`@f@@\"]),v(F(l.Nbb,1),yt,2,6,[\"Poc\",\"didD`@S@AIgexVjj`@\"]),v(F(l.Nbb,1),yt,2,6,[\"PPi\",\"diDFsHSB[`|J|A@Lxn{lddqdZih@@\"]),v(F(l.Nbb,1),yt,2,6,[\"pTolyl\",\"daD@`N@DjWzXHB@@\"]),v(F(l.Nbb,1),yt,2,6,[\"sAmyl\",\"gGPHL@YIDZj@@\"]),v(F(l.Nbb,1),yt,2,6,[\"sButyl\",\"gJPHL@ITuP@\"]),v(F(l.Nbb,1),yt,2,6,[\"SEM\",\"diDHPFApD@rRQUJjj`@\"]),v(F(l.Nbb,1),yt,2,6,[\"SES\",\"dedDpHP@``AgCIICeHmUT@@\"]),v(F(l.Nbb,1),yt,2,6,[\"SO3H\",\"gJQdHl@``D^m@@\"]),v(F(l.Nbb,1),yt,2,6,[\"tAmyl\",\"gGPHB@IUMU@@\"]),v(F(l.Nbb,1),yt,2,6,[\"TBDMS;TBS\",\"dax@P@\\\\B@Djfjjh@@\"]),v(F(l.Nbb,1),yt,2,6,[\"TBDPS\",\"fdy@A@@NA@CIIEEEIde]XOhuPAT@@@@@\"]),v(F(l.Nbb,1),yt,2,6,[\"TBMPS\",\"dg\\\\HPHApH@rRQJJPjg]UAT@@@\"]),v(F(l.Nbb,1),yt,2,6,[\"tButyl,tBu\",\"gJPHB@Q}T@@\"]),v(F(l.Nbb,1),yt,2,6,[\"TDS\",\"ded@P@\\\\B@LddTeeUUP@@\"]),v(F(l.Nbb,1),yt,2,6,[\"Tf\",\"daxDhHP@``BiAiCiCIICHmU@@\"]),v(F(l.Nbb,1),yt,2,6,[\"TFA\",\"gNqBJIARFdF@YEHYUL@@\"]),v(F(l.Nbb,1),yt,2,6,[\"Thexyl\",\"gNpHB@IUMUT@@\"]),v(F(l.Nbb,1),yt,2,6,[\"THF\",\"gFqH@PAJYujj@@\"]),v(F(l.Nbb,1),yt,2,6,[\"THP\",\"gOqH@PAJYZzjh@\"]),v(F(l.Nbb,1),yt,2,6,[\"TIPS\",\"dmT@P@\\\\B@DjfYjjjh@@\"]),v(F(l.Nbb,1),yt,2,6,[\"TMS\",\"gJPD@xD@czh@\"]),v(F(l.Nbb,1),yt,2,6,[\"Tosyl;Ts\",\"dmtDPHP@``CIICLeaeZ@B@@\"]),v(F(l.Nbb,1),yt,2,6,[\"Troc\",\"diDDHJxHaHcH`PCHiBeJjf@@\"]),v(F(l.Nbb,1),yt,2,6,[\"Trt\",\"fbm@B@A@FRQIRKQPiIZdoIcdHJ`@@@@@@\"]),v(F(l.Nbb,1),yt,2,6,[\"Xyl\",\"did@`J@DjYynBHH@@\"])])},n.Os=function(){n.Ns();var t,e,A,P,r,i,D,u,o;for(n.Ms=new y.Xvb,D=n.Ls,u=0,o=D.length;u<o;++u)for(i=D[u],r=T.njb(i[0],\";\"),e=r,A=0,P=e.length;A<P;++A)t=e[A],y.Pvb(n.Ms,T.ljb(c.Szb(t).toLowerCase(),\"-\"),i[1])},n.Ps=function(t){n.Ns();var e,A,P,r,i,D,u,o,Q,L;if(t==null||c.Szb(t).length==0)return null;for(D=null,t=T.ljb(c.Szb(t).toLowerCase(),\"-\"),o=n.Ls,Q=0,L=o.length;Q<L;++Q)for(u=o[Q],i=T.njb(u[0],\";\"),A=i,P=0,r=A.length;P<r;++P){if(e=A[P],T._ib(T.ljb(c.Szb(e).toLowerCase(),\"-\"),t))return e;if(T.ojb(T.ljb(c.Szb(e).toLowerCase(),\"-\"),t))if(D==null)D=e;else return\"\"}return D},n.Ms=null,n.Ss=function(){var t,e,A,P;for(this.b=new y.ptb,this.c=new y.ptb,this.d=new y.ptb,n.Qs=v(F(l.v7,1),v1,18,0,[new n.jk(1,\"Hydrogen\",\"H\",2.2),new n.jk(2,\"Helium\",\"He\",0),new n.jk(3,\"Lithium\",\"Li\",.98),new n.jk(4,\"Beryllium\",\"Be\",1.57),new n.jk(5,\"Boron\",\"B\",2.04),new n.jk(6,\"Carbon\",\"C\",2.55),new n.jk(7,\"Nitrogen\",\"N\",3.04),new n.jk(8,\"Oxygen\",\"O\",3.44),new n.jk(9,\"Fluorine\",\"F\",3.98),new n.jk(10,\"Neon\",\"Ne\",0),new n.jk(11,\"Sodium\",\"Na\",.93),new n.jk(12,\"Magnesium\",\"Mg\",1.31),new n.jk(13,\"Aluminum\",\"Al\",1.61),new n.jk(14,\"Silicon\",\"Si\",1.9),new n.jk(15,\"Phosphorus\",\"P\",2.19),new n.jk(16,\"Sulfur\",\"S\",2.58),new n.jk(17,\"Chlorine\",\"Cl\",3.16),new n.jk(18,\"Argon\",\"Ar\",0),new n.jk(19,\"Potassium\",\"K\",1),new n.jk(20,\"Calcium\",\"Ca\",1.36),new n.jk(21,\"Scandium\",\"Sc\",1.54),new n.jk(22,\"Titanium\",\"Ti\",1.63),new n.jk(23,\"Vanadium\",\"V\",1.66),new n.jk(24,\"Chromium\",\"Cr\",1.55),new n.jk(25,\"Manganese\",\"Mn\",1.83),new n.jk(26,\"Iron\",\"Fe\",1.88),new n.jk(27,\"Cobalt\",\"Co\",1.91),new n.jk(28,\"Nickel\",\"Ni\",1.9),new n.jk(29,\"Copper\",\"Cu\",1.65),new n.jk(30,\"Zinc\",\"Zn\",1.81),new n.jk(31,\"Gallium\",\"Ga\",2.01),new n.jk(32,\"Germanium\",\"Ge\",0),new n.jk(33,\"Arsenic\",\"As\",2.18),new n.jk(34,\"Selenium\",\"Se\",2.55),new n.jk(35,\"Bromine\",\"Br\",0),new n.jk(36,\"Krypton\",\"Kr\",2.96),new n.jk(37,\"Rubidium\",\"Rb\",0),new n.jk(38,\"Strontium\",\"Sr\",.82),new n.jk(39,\"Yttrium\",\"Y\",.95),new n.jk(40,\"Zirconium\",\"Zr\",1.22),new n.jk(41,\"Niobium\",\"Nb\",1.33),new n.jk(42,\"Molybdenum\",\"Mo\",1.6),new n.jk(43,\"Technetium\",\"Tc\",2.16),new n.jk(44,\"Ruthenium\",\"Ru\",1.9),new n.jk(45,\"Rhodium\",\"Rh\",2.2),new n.jk(46,\"Palladium\",\"Pd\",2.28),new n.jk(47,\"Silver\",\"Ag\",2.2),new n.jk(48,\"Cadmium\",\"Cd\",1.93),new n.jk(49,\"Indium\",\"In\",1.69),new n.jk(50,\"Tin\",\"Sn\",1.78),new n.jk(51,\"Antimony\",\"Sb\",1.96),new n.jk(52,\"Tellurium\",\"Te\",0),new n.jk(53,\"Iodine\",\"I\",2.05),new n.jk(54,\"Xenon\",\"Xe\",2.1),new n.jk(55,\"Cesium\",\"Cs\",2.66),new n.jk(56,\"Barium\",\"Ba\",2.6),new n.jk(57,\"Lanthanum\",\"La\",.79),new n.jk(58,\"Cerium\",\"Ce\",.89),new n.jk(59,\"Praesodymium\",\"Pr\",1.1),new n.jk(60,\"Neodymium\",\"Nd\",1.12),new n.jk(61,\"Promethium\",\"Pm\",1.13),new n.jk(62,\"Samarium\",\"Sm\",1.14),new n.jk(63,\"Europium\",\"Eu\",0),new n.jk(64,\"Gadolinium\",\"Gd\",1.17),new n.jk(65,\"Terbium\",\"Tb\",0),new n.jk(66,\"Dyprosium\",\"Dy\",1.2),new n.jk(67,\"Holmium\",\"Ho\",0),new n.jk(68,\"Erbium\",\"Er\",1.22),new n.jk(69,\"Thulium\",\"Tm\",1.23),new n.jk(70,\"Ytterbium\",\"Yb\",1.24),new n.jk(71,\"Lutetium\",\"Lu\",1.25),new n.jk(72,\"Hafnium\",\"Hf\",0),new n.jk(73,\"Tantalium\",\"Ta\",1.27),new n.jk(74,\"Wolfram\",\"W\",1.3),new n.jk(75,\"Rhenium\",\"Re\",1.5),new n.jk(76,\"Osmium\",\"Os\",2.36),new n.jk(77,\"Iridium\",\"Ir\",1.9),new n.jk(78,\"Platinum\",\"Pt\",2.2),new n.jk(79,\"Gold\",\"Au\",2.2),new n.jk(80,\"Mercury\",\"Hg\",2.28),new n.jk(81,\"Thallium\",\"Tl\",2.54),new n.jk(82,\"Lead\",\"Pb\",2),new n.jk(83,\"Bismuth\",\"Bi\",1.62),new n.jk(84,\"Polonium\",\"Po\",2.33),new n.jk(85,\"Astatine\",\"At\",2.02),new n.jk(86,\"Radon\",\"Rn\",2),new n.jk(87,\"Francium\",\"Fr\",2.2),new n.jk(88,\"Radium\",\"Ra\",0),new n.jk(89,\"Actinium\",\"Ac\",.7),new n.jk(90,\"Thorium\",\"Th\",.89),new n.jk(91,\"Protactinium\",\"Pa\",1.1),new n.jk(92,\"Uranium\",\"U\",1.3),new n.jk(93,\"Neptunium\",\"Np\",1.5),new n.jk(94,\"Plutonium\",\"Pu\",1.38),new n.jk(95,\"Americium\",\"Am\",1.36),new n.jk(96,\"Curium\",\"Cm\",1.28),new n.jk(97,\"Berkelium\",\"Bk\",1.3),new n.jk(98,\"Californium\",\"Cf\",1.3),new n.jk(99,\"Einsteinium\",\"E\",1.3),new n.jk(100,\"Fermium\",\"Fm\",1.3),new n.jk(101,\"Mendelevium\",\"Mv\",1.3)]),e=n.Qs,A=0,P=e.length;A<P;++A)t=e[A],y.qnb(this.b,T.pib(t.c),t),y.rnb(this.c,t.b,t),y.rnb(this.d,t.d,t);this.a=d(l.teb,wt,6,n.Qs.length,16,1),this.a[3]=!0,this.a[11]=!0,this.a[19]=!0,this.a[37]=!0,this.a[55]=!0,this.a[87]=!0},n.Ts=function(t){return y.nnb((!n.Rs&&(n.Rs=new n.Ss),n.Rs).b,T.pib(t))},G(393,1,{},n.Ss),U.ob=function(){return\"\"},l.K7=O(393),n.Vs=function(t,e,A){var P,r,i,D,u,o,Q,L,w,s,h,b,g;for(Q=t.g.M,L=0,i=0;i<A;i++)Q>e[i]&&(Q=e[i],L=i);for(g=d(l.Z6,H,6,A,15,1),o=L>0?L-1:A-1,w=L<A-1?L+1:0,D=e[o]<e[w],r=0;r<A;r++)g[r]=e[L],D?--L<0&&(L=A-1):++L==A&&(L=0);for(b=new y.rqb(t.i);b.a<b.c.a.length;)if(h=y.qqb(b),h.length==A){for(P=!0,u=0;u<A;u++)if(h[u]!=g[u]){P=!1;break}if(P)return}y.pj(t.i,g),s=n.ft(t,g),y.pj(t.j,s),n.xt(t,g,s)},n.Ws=function(t,e,A){var P,r,i,D,u,o,Q;for(o=d(l.Z6,H,6,t.f,15,1),D=d(l.Z6,H,6,t.f,15,1),Q=d(l.teb,wt,6,t.g.f,16,1),P=n.Ul(t.g,0,e),r=n.Ul(t.g,1,e),o[0]=P,o[1]=r,D[1]=-1,Q[r]=!0,u=1;u>=1;){if(++D[u],D[u]==n.Wo(t.g,o[u])){Q[o[u]]=!1,--u;continue}if(i=n.Vo(t.g,o[u],D[u]),!(Q[i]||A[i])){if(i==P&&u>1){if(n.Vs(t,o,u+1),t.i.a.length>=r0)return;continue}u+1<t.f&&(++u,o[u]=i,Q[i]=!0,D[u]=-1)}}},n.Xs=function(t,e,A,P,r,i,D,u){var o,Q,L,w,s,h,b,g,B,m,S,p,M,z,q,x,J,E,N;for(x=y.uj(t.i,e),w=x,s=0,h=w.length;s<h;++s)if(L=w[s],!n.tt(t,L))return!0;for(J=y.uj(t.j,e),E=J.length,b=0,Q=0,N=!1,z=0;z<E;z++)b<<=1,Q<<=1,n.vt(t,J[z])?b|=1:u&&n.st(t,J[z])?(b|=1,Q|=1):(o=A[e][z],o!=-1&&(P[o]?r[o]&&(b|=1,i[o]||(Q|=1)):N=!0));switch(M=!1,E){case 3:for(g=v(F(l.Z6,1),H,6,15,[2,1,4]),M=!0,p=0;p<3;p++)(b&g[p])==g[p]&&(n.Ol(t.g,x[p])==6&&n.xl(t.g,x[p])==1||n.Ol(t.g,x[p])==5&&n.xl(t.g,x[p])==0)&&(r[e]=!0,D[e]=p,(Q&g[p])==0&&(M=!1));break;case 5:for(B=v(F(l.Z6,1),H,6,15,[10,5,18,9,20]),M=!0,q=0;q<5;q++)if((b&B[q])==B[q])switch(n.Ol(t.g,x[q])){case 6:n.xl(t.g,x[q])==-1&&(r[e]=!0,D[e]=q,(Q&B[q])==0&&(M=!1));break;case 7:n.xl(t.g,x[q])<=0&&(r[e]=!0,D[e]=q);break;case 8:r[e]=!0,D[e]=q;break;case 16:case 34:case 52:n.Wo(t.g,x[q])==2&&(r[e]=!0,D[e]=q)}break;case 6:M=!0,(b&21)==21&&(r[e]=!0,(Q&21)==0&&(M=!1)),(b&42)==42&&(r[e]=!0,(Q&42)==0&&(M=!1));break;case 7:for(m=v(F(l.Z6,1),H,6,15,[42,21,74,37,82,41,84]),M=!0,S=0;S<7;S++)(b&m[S])==m[S]&&(n.Ol(t.g,x[S])==6&&(n.xl(t.g,x[S])==1||u&&n.it(t,x[S]))||n.Ol(t.g,x[S])==5&&n.xl(t.g,x[S])==0)&&(r[e]=!0,D[e]=S,(Q&m[S])==0&&(M=!1))}return r[e]&&!M&&(i[e]=!0),r[e]?!0:!N},n.Ys=function(t,e,A,P,r){var i,D,u,o,Q,L,w,s,h,b,g,B;for(i=d(l.Z6,M1,7,t.i.a.length,0,2),Q=0;Q<t.i.a.length;Q++)for(i[Q]=d(l.Z6,H,6,y.uj(t.i,Q).length,15,1),L=0;L<y.uj(t.i,Q).length;L++)i[Q][L]=-1;for(g=d(l.Z6,H,6,t.g.g,15,1),h=0;h<t.j.a.length;h++)if(b=y.uj(t.j,h),b.length==3||b.length>=5&&b.length<=7)for(o=0;o<b.length;o++)u=b[o],n.Wo(t.g,n.Ul(t.g,0,u))==3&&n.Wo(t.g,n.Ul(t.g,1,u))==3&&(g[u]>0?(i[g[u]>>>16][g[u]&32767]=h,i[h][o]=g[u]>>>16):g[u]=(h<<16)+Ge+o);for(D=d(l.teb,wt,6,t.i.a.length,16,1),B=0,w=-1;B>w;)for(w=B,s=0;s<t.i.a.length;s++)D[s]||n.Xs(t,s,i,D,e,A,P,r)&&(D[s]=!0,++B)},n.Zs=function(t,e,A){var P,r,i,D,u,o,Q,L,w,s,h,b;for(r=n.Ul(t.g,0,e),i=n.Ul(t.g,1,e),o=d(l.Z6,H,6,t.g.f,15,1),Q=d(l.Z6,H,6,t.g.f,15,1),L=d(l.Z6,H,6,t.g.f,15,1),o[0]=r,o[1]=i,Q[r]=1,Q[i]=2,L[r]=-1,L[i]=r,u=1,w=1;u<=w;){for(s=0;s<n.Wo(t.g,o[u]);s++){if(D=n.Vo(t.g,o[u],s),u>1&&D==r){for(b=d(l.Z6,H,6,Q[o[u]],15,1),P=o[u],h=0;h<b.length;h++)b[h]=P,P=L[P];return b}Q[D]==0&&!A[D]&&(o[++w]=D,Q[D]=Q[o[u]]+1,L[D]=o[u])}++u}return null},n.$s=function(t,e,A){var P,r;for(r=y.uj(t.i,e),P=0;P<r.length;P++)if(A==r[P])return P;return-1},n._s=function(t,e){return t.a[e]&r1},n.at=function(t,e,A){var P,r;for(r=y.uj(t.j,e),P=0;P<r.length;P++)if(A==r[P])return P;return-1},n.bt=function(t,e){return t.b[e]&r1},n.ct=function(t,e){return t.c[e]},n.dt=function(t,e){return y.uj(t.i,e)},n.et=function(t,e){return y.uj(t.j,e)},n.ft=function(t,e){var A,P,r,i,D;for(i=e.length,D=d(l.Z6,H,6,i,15,1),P=0;P<i;P++)for(A=P==i-1?e[0]:e[P+1],r=0;r<n.Wo(t.g,e[P]);r++)if(n.Vo(t.g,e[P],r)==A){D[P]=n.Xo(t.g,e[P],r);break}return D},n.gt=function(t,e){return y.uj(t.j,e).length},n.ht=function(t,e,A){var P;for(P=0;P<t.j.a.length;P++)if(n.nt(t,P,e)&&n.nt(t,P,A))return P;return-1},n.it=function(t,e){var A;for(A=0;A<n.Wo(t.g,e);A++)if(n.Yo(t.g,e,A)==2&&n.Ol(t.g,n.Vo(t.g,e,A))==8)return!0;return!1},n.jt=function(t,e){return t.d[e]},n.kt=function(t,e){return(t.a[e]&z1)!=0},n.lt=function(t,e){return(t.b[e]&z1)!=0},n.mt=function(t,e,A){var P,r;for(r=y.uj(t.i,e),P=0;P<r.length;P++)if(A==r[P])return!0;return!1},n.nt=function(t,e,A){var P,r;for(r=y.uj(t.j,e),P=0;P<r.length;P++)if(A==r[P])return!0;return!1},n.ot=function(t,e){return t.e[e]},n.pt=function(t,e){return(t.a[e]&n0)!=0},n.qt=function(t,e){return(t.b[e]&n0)!=0},n.rt=function(t,e){return(t.a[e]&Ue)!=0},n.st=function(t,e){var A,P,r,i,D,u;for(D=0;D<2;D++)if(A=n.Ul(t.g,D,e),n.Ol(t.g,A)==7&&n.Wo(t.g,A)==2&&(P=n.Ul(t.g,1-D,e),n.Ol(t.g,P)==6)){for(u=0;u<n.Wo(t.g,P);u++)if(r=n.Vo(t.g,P,u),i=n.Xo(t.g,P,u),(n.Ol(t.g,r)==8||n.Ol(t.g,r)==16)&&n.am(t.g,i)==2&&n.Wo(t.g,r)==1)return!0}return!1},n.tt=function(t,e){var A,P,r,i,D;if(t.g.K){if(jt(Z(n.Jl(t.g,e),1),0))return!0;if(D=n.El(t.g,e),D!=null){for(P=D,r=0,i=P.length;r<i;++r)if(A=P[r],A==5||A==6||A==7||A==8||A==15||A==16||A==33||A==34)return!0;return!1}}return n.Bt(n.Ol(t.g,e))},n.ut=function(t,e){var A,P,r,i,D;if(t.g.K){if(jt(Z(n.Jl(t.g,e),1),0))return!1;if(A=n.El(t.g,e),A!=null){for(r=A,i=0,D=r.length;i<D;++i)if(P=r[i],!n.mo(P))return!1;return!0}}return n.mo(n.Ol(t.g,e))},n.vt=function(t,e){return n.am(t.g,e)>1||n.dm(t.g,e)==8},n.wt=function(t){var e,A,P,r,i,D,u,o,Q,L,w,s,h,b,g,B;for(B=0;B<t.d.length;B++)if(t.d[B]){for(g=!1,P=y.uj(t.i,B),i=0,u=P.length;i<u;++i)e=P[i],t.a[e]|=z1,n.ut(t,e)&&(g=!0);for(L=y.uj(t.j,B),s=0,b=L.length;s<b;++s)o=L[s],t.b[o]|=z1;if(t.e[B]){for(A=y.uj(t.i,B),r=0,D=A.length;r<D;++r)e=A[r],t.a[e]|=n0;for(Q=y.uj(t.j,B),w=0,h=Q.length;w<h;++w)o=Q[w],t.b[o]|=n0}if(g){for(A=y.uj(t.i,B),r=0,D=A.length;r<D;++r)e=A[r],t.a[e]|=Ue;for(Q=y.uj(t.j,B),w=0,h=Q.length;w<h;++w)o=Q[w],t.b[o]|=Ue}}},n.xt=function(t,e,A){var P,r,i,D;for(D=e.length,i=0;i<D;i++)P=t.a[e[i]]&r1,(P==0||P>D)&&(t.a[e[i]]&=ie,t.a[e[i]]|=D);for(r=0;r<D;r++)P=t.b[A[r]]&r1,(P==0||P>D)&&(t.b[A[r]]&=ie,t.b[A[r]]|=D)},n.yt=function(t,e,A){var P;for(P=y.uj(t.j,e).length;A>=P;)A-=P;for(;A<0;)A+=P;return A},n.zt=function(t,e){n.At.call(this,t,e)},n.At=function(t,e){var A,P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S;this.g=t,this.f=7,this.i=new y.Jj,this.j=new y.Jj,this.a=d(l.Z6,H,6,this.g.f,15,1),this.b=d(l.Z6,H,6,this.g.g,15,1),this.g.Zb(1),s=d(l.teb,wt,6,this.g.f,16,1),h=d(l.teb,wt,6,this.g.g,16,1);do for(D=!1,A=0;A<this.g.f;A++)if(!s[A]){for(B=0,w=0;w<n.Wo(this.g,A);w++)s[n.Vo(this.g,A,w)]||++B;if(B<2){for(s[A]=!0,L=0;L<n.Wo(this.g,A);L++)h[n.Xo(this.g,A,L)]=!0;D=!0}}while(D);for(S=0;S<this.g.f&&s[S];)++S;if(S!=this.g.f){for(o=d(l.Z6,H,6,this.g.f,15,1),o[0]=S,g=d(l.Z6,H,6,this.g.f,15,1),g[0]=-1,u=d(l.Z6,H,6,this.g.f,15,1),u[S]=1,i=0,Q=0,b=1;i<=Q;){for(L=0;L<n.Wo(this.g,o[i]);L++)if(r=n.Vo(this.g,o[i],L),r!=g[o[i]]){if(u[r]!=0){n.Ws(this,n.Xo(this.g,o[i],L),s);continue}s[r]||(u[r]=b,g[r]=o[i],o[++Q]=r)}if(++i,i>Q){for(A=0;A<this.g.f;A++)if(u[A]==0&&!s[A]){u[A]=++b,o[++Q]=A,g[A]=-1;break}}}if((e&4)!=0&&(this.d=d(l.teb,wt,6,this.i.a.length,16,1),this.e=d(l.teb,wt,6,this.i.a.length,16,1),this.c=d(l.Z6,H,6,this.i.a.length,15,1),n.Ys(this,this.d,this.e,this.c,(e&8)!=0),n.wt(this)),(e&2)!=0)for(P=0;P<this.g.g;P++)!h[P]&&n.am(this.g,P)!=0&&(m=n.Zs(this,P,s),m!=null&&n.xt(this,m,n.ft(this,m)))}},n.Bt=function(t){return t==5||t==6||t==7||t==8||t==15||t==16||t==33||t==34},G(149,1,{},n.zt),U.f=0,l.L7=O(149),n.Ct=function(t,e){var A,P,r,i,D,u,o,Q,L,w,s;if(e==2||e==5)y.pj(t.F,n.gu(t.G,t.G.length)),t.b&&y.pj(t.a,n.hu(t.C,t.C.length));else if(e==4)s=n.Ot(n.gu(t.G,t.G.length)),y.Kwb(t.O,s)||(y.Iwb(t.O,s),y.pj(t.F,n.gu(t.G,t.G.length)),t.b&&y.pj(t.a,n.hu(t.C,t.C.length)));else if(e==3){if(s=n.Ot(n.gu(t.G,t.G.length)),!y.Kwb(t.O,s)){for(w=!1,Q=(u=new y.fwb(new y.lwb(new y.spb(t.O.a).a).b),new y.Bpb(u));y.aob(Q.a.a);){for(o=(D=y.dwb(Q.a),D.fd()),L=0,P=s,r=0,i=P.length;r<i;++r){for(A=P[r];L<o.length&&o[L]<A;)++L;if(L<o.length&&A==o[L]){w=!0;break}}if(w)break}w||(y.Iwb(t.O,s),y.pj(t.F,n.gu(t.G,t.G.length)),t.b&&y.pj(t.a,n.hu(t.C,t.C.length)))}}else e==6&&(s=n.Pt(t,n.gu(t.G,t.G.length)),y.Kwb(t.O,s)||(y.Iwb(t.O,s),y.pj(t.F,n.gu(t.G,t.G.length)),t.b&&y.pj(t.a,n.hu(t.C,t.C.length))))},n.Dt=function(t,e,A){var P,r,i,D,u,o,Q,L,w,s,h;if(u=n.Wo(t.H,e),P=t.o[A],P>u)return!1;if(Q=n.Jl(t.H,e),i=n.Jl(t.g,A),r=n.El(t.g,A),o=n.El(t.H,e),jt(Z(i,1),0)){if(r!=null){if(jt(Z(Q,1),0)){if(o==null||!n.Ut(r,o))return!1}else if(o!=null){if(n.Wt(o,r))return!1}else if(n.Tt(n.Ol(t.H,e),r))return!1}}else{if(jt(Z(Q,1),0))return!1;if(r!=null){if(o!=null){if(!n.Ut(o,r))return!1}else if(!n.Tt(n.Ol(t.H,e),r))return!1}else if(o!=null||t.J[e]!=t.k[A])return!1}if(jt(Pt(Q,i),0)){if(jt(Z(i,c1),0)){if(t.H.K&&S1(Z(Q,c1),0))return!1;if(P!=u)return!1}if(jt(Z(i,J1),0)&&P>=u&&S1(Z(Q,J1),0))return!1}if(jt(Z(t.I[e],$0(t.j[A])),0)||jt(Z(t.B[A],$0(t.M[e])),0))return!1;if(D=Z(i,Me),t.H.K){if(L=Z(i,Me),et(L,0)!=0&&(et(D,0)==0||jt(Z(D,$0(L)),0)))return!1}else if(et(D,0)!=0&&S1(Z(D,t.M[e]),0))return!1;return n.xl(t.g,A)!=0&&n.xl(t.g,A)!=n.xl(t.H,e)||n.Hl(t.g,A)!=0&&n.Hl(t.g,A)!=n.Hl(t.H,e)||n.Kl(t.g,A)!=0&&n.Kl(t.g,A)!=n.Kl(t.H,e)||(w=Z(i,Dr),et(w,0)!=0&&n.tp(t.H,e)!=Gt(a1(w,47))-7)?!1:(s=Z(i,ke),et(s,0)!=0?(s=a1(s,22),t.H.K?(h=Gt(a1(Z(n.Jl(t.H,e),ke),22)),Gt(s)==h):n.Qo(t.H,e)==Gt(s)):!0)},n.Et=function(t,e,A){var P,r,i,D,u,o,Q,L,w,s;if(Q=t.K[e],D=t.n[A],(n.cm(t.g,A)&Mn)!=0){if(o=n.em(t.H,e),r=n.em(t.g,A),i=n.cm(t.g,A)&127,o!=r&&!(o==1&&(i&1)!=0)&&!(o==2&&(i&2)!=0)&&!(o==4&&(i&4)!=0)&&!(o==32&&(i&32)!=0)&&!(o==64&&(i&64)!=0)&&!(o==16&&(i&16)!=0)&&!(o==8&&(i&8)!=0))return!1;Q&=-128,D&=-128}if((Q&~D)!=0)return!1;if(s=(n.cm(t.g,A)&re)>>17,s!=0){if(t.H.K&&s==(n.cm(t.H,A)&re)>>17)return!0;if(s<=2)return L=n.Uo(t.H,e),s==1?L>=8&&L<=12:L>=12;for(P=!1,w=n.Ap(t.H),u=0;u<w.i.a.length;u++)if(y.uj(w.j,u).length==s&&n.nt(w,u,e)){P=!0;break}if(!P)return!1}return!0},n.Ft=function(t){var e,A;for(t.b=null,e=0;e<t.g.g;e++)n.ym(t.g,e)&&(!t.b&&(t.b=new y.Jj),A=new n.iu,A.a=n.Ul(t.g,0,e),A.b=n.Ul(t.g,1,e),A.d=n.Wl(t.g,e),A.c=n.Vl(t.g,e),y.pj(t.b,A))},n.Gt=function(t){var e,A,P,r,i,D,u,o,Q,L,w,s;for(n.aw(t.g,t.N),o=k.Math.max(t.g.f,t.g.g)+16,t.s=d(l.Z6,H,6,o,15,1),t.u=d(l.Z6,H,6,o,15,1),t.v=d(l.Z6,H,6,o,15,1),t.t=d(l.teb,wt,6,o+1,16,1),D=d(l.teb,wt,6,t.g.f,16,1),u=d(l.teb,wt,6,t.g.g,16,1),P=0,A=0;A<t.g.f;A++)if(!t.D[A]&&!D[A])for(t.s[P]=A,t.v[P]=-1,t.u[P]=-1,Q=P;P<=Q;){for(L=0;L<n.Io(t.g,t.s[P]);L++)Q=n.du(t,P,Q,L,D,u,-1);for(;t.t[++P];);}if(t.w=P,t.p!=0){for(Q=t.w-1,i=0;i<t.d;i++)for(P=0;P<=Q;){for(w=0;w<n.Io(t.g,t.s[P]);w++)Q=n.du(t,P,Q,w,D,u,i);for(;t.t[++P];);}for(e=0;e<t.g.f;e++)if(t.D[e]&&!D[e])for(t.s[P]=e,t.v[P]=-1,t.u[P]=-1,Q=P;P<=Q;){for(w=0;w<n.Io(t.g,t.s[P]);w++)n.Vo(t.g,t.s[P],w)<t.g.f&&(Q=n.du(t,P,Q,w,D,u,t.f[e]));for(;t.t[++P];);}for(t.e=d(l.Z6,H,6,t.d,15,1),s=0;s<t.d;s++)t.e[s]=-1;for(L=t.w;L<P;L++)r=t.f[t.s[L]],t.e[r]==-1&&(t.e[r]=L)}t.A=P},n.Ht=function(t,e){var A,P,r,i,D,u,o,Q;for(Q=n.Ap(t.H),u=0;u<Q.i.a.length;u++)if(n.nt(Q,u,e)){for(o=d(l.Z6,H,6,2,15,1),r=0;r<2;r++)for(o[r]=Mt,P=n.Ul(t.H,r,e),i=0;i<n.Wo(t.H,P);i++)A=n.Vo(t.H,P,i),A!=n.Ul(t.H,1-r,e)&&o[r]>A&&(o[r]=A);return D=0,n.mt(Q,u,o[0])&&++D,n.mt(Q,u,o[1])&&++D,D==2?2:D==1?1:2}return 0},n.It=function(t,e,A){var P,r,i,D,u;if(t.b){for(t.C=d(l.teb,wt,6,e.length,16,1),r=new y.rqb(t.b);r.a<r.c.a.length;)if(P=y.qqb(r),t.f==null||A==-1&&t.f[P.a]==-1&&t.f[P.b]==-1||A!=-1&&(t.f[P.a]==A||t.f[P.b]==A)){if(u=d(l.Z6,H,6,P.c+2,15,1),i=n.up(t.H,u,t.G[P.a],t.G[P.b],P.c+1,e,null)-1,i<P.d||i>P.c)return!1;for(D=1;D<=i;D++)t.C[u[D]]=!0}}return!0},n.Jt=function(t,e){var A,P,r,i,D,u,o,Q;for(r=0;r<t.g.g;r++)if((n.cm(t.g,r)&je)!=0){if(i=n.bm(t.g,r),i==0)continue;if(A=n.Ul(t.g,0,r),P=n.Ul(t.g,1,r),t.f==null||e==-1&&t.f[A]==-1&&t.f[P]==-1||e!=-1&&(t.f[A]==e||t.f[P]==e)){if(D=t.G[A],u=t.G[P],o=n.To(t.H,D,u),Q=n.bm(t.H,o),Q==0&&(n.fq(t.H,o)&&(Q=n.Ht(t,o)),Q==0)||i==3||Q==3)continue;if(n.Qt(t,r)==(i==Q))return!1}}return!0},n.Kt=function(t,e){var A,P,r,i,D,u,o,Q,L,w,s,h,b,g;for(D=0,o=0;o<t.g.f;o++)if((t.f==null||t.f[o]==e)&&jt(Z(n.Jl(t.g,o),l0),0)){if(s=t.G[o],w=n.Il(t.g,o),b=n.Il(t.H,s),w==0||w==3)continue;if(b==0||b==3)return!1;if(n.Cl(t.g,o)==1){++D;continue}if(n.Cl(t.H,s)==1)return!1;if(n.Cl(t.g,o)==2){++D;continue}if(n.Cl(t.H,s)==2||n.Vt(t,o)==(w==b))return!1}if(D!=0){for(r=d(l.Z6,H,6,D,15,1),i=0,Q=0;Q<t.g.f;Q++)(t.f==null||t.f[Q]==e)&&jt(Z(n.Jl(t.g,Q),l0),0)&&(w=n.Il(t.g,Q),w!=0&&w!=3&&(r[i++]=n.Bl(t.g,Q)<<24|n.Cl(t.g,Q)<<22|Q));for(c.lzb(r,c.Szb(y0(y.lrb.prototype.jd,y.lrb,[]))),i=0;i<r.length;)for(L=r[i]&_1,h=t.G[L],A=r[i]&-4194304,P=n.Vt(t,L)^n.Il(t.g,L)==n.Il(t.H,h),++i;i<r.length&&(r[i]&-4194304)==A;i++)if(u=r[i]&_1,s=t.G[u],n.Cl(t.H,s)!=n.Cl(t.H,h)||n.Bl(t.H,s)!=n.Bl(t.H,h)||(g=n.Vt(t,u)^n.Il(t.g,u)==n.Il(t.H,s),g!=P))return!1}return!0},n.Lt=function(t,e,A){var P,r,i,D,u,o,Q;if(t.P=!1,t.F=new y.Jj,t.a=new y.Jj,y.Ivb(t.O.a),!t.H||!t.g||t.g.f-t.p>t.H.f||t.g.g-t.q>t.H.g||t.g.f==0)return 0;for(e==6&&(t.N=63),n._t(t,A),P=d(l.teb,wt,6,t.H.f,16,1),t.G=d(l.Z6,H,6,t.g.f,15,1),y.Dqb(t.G,-1),u=d(l.Z6,H,6,t.A,15,1),y.Jqb(u,u.length,-1),i=0;!t.P;){if(t.w!=0){if(Q=t.u[i]==-1?t.H.f:n.Io(t.H,t.G[t.u[i]]),++u[i],u[i]==Q){if(u[i]=-1,i==0)break;--i,t.t[i]||(P[t.G[t.s[i]]]=!1);continue}if(t.u[i]==-1)P[u[i]]||n.Dt(t,u[i],t.s[i])&&(t.G[t.s[i]]=u[i],P[u[i]]=!0,++i);else{if(n.Vo(t.H,t.G[t.u[i]],u[i])>=t.H.f)continue;r=n.Vo(t.H,t.G[t.u[i]],u[i]),t.t[i]?r==t.G[t.s[i]]&&n.Et(t,n.Xo(t.H,t.G[t.u[i]],u[i]),t.v[i])&&++i:P[r]||n.Dt(t,r,t.s[i])&&n.Et(t,n.Xo(t.H,t.G[t.u[i]],u[i]),t.v[i])&&(P[r]=!0,t.G[t.s[i]]=r,++i)}}if(i==t.w){if(n.Kt(t,-1)&&n.Jt(t,-1)&&n.It(t,P,-1)){for(o=!1,D=0;D<t.d;D++)if(n.Rt(t,P,u,D)){o=!0;break}if(e==1&&!o||!o&&(n.Ct(t,e),e==2))return 1}if(i==0)break;--i,t.t[i]||(P[t.G[t.s[i]]]=!1)}}return t.F.a.length},n.Mt=function(t,e){var A,P,r,i,D,u,o,Q;if(o=0,t.K){switch(e<t.f&&n.rt(t.p,e)?o=Pt(o,Lr):e<t.f&&n.kt(t.p,e)&&(o=Pt(o,2)),Q=(r=t.u[e]&M0,r==0?0:r==r0?2:r==c1?3:4),Q!=0&&(o=Pt(o,8),Q>2&&(o=Pt(o,16)),Q>3&&(o=Pt(o,32))),A=t.s[e],A<0?o=Pt(o,ln):A>0&&(o=Pt(o,on)),D=t.j[e],D){case 0:break;case 1:o=Pt(o,n0);break;case 2:o=Pt(o,ae);break;case 3:o=Pt(o,re);break;default:o=Pt(o,Qn)}switch(P=n.Lo(t,e),P){case 0:break;case 1:o=Pt(o,Rn);break;case 2:o=Pt(o,OA);break;case 3:o=Pt(o,ZA);break;default:o=Pt(o,DA)}u=t.o[e],u>0&&(o=Pt(o,E0)),u>1&&(o=Pt(o,Ge))}else{switch(e<t.f&&n.rt(t.p,e)?o=Pt(o,Lr):e<t.f&&n.kt(t.p,e)?o=Pt(o,2):o=Pt(o,4),(t.u[e]&H0)!=0?o=Pt(o,eA):o=Pt(o,nA),Q=(r=t.u[e]&M0,r==0?0:r==r0?2:r==c1?3:4),Q==0?o=Pt(o,112):Q==2?o=Pt(o,104):Q==3?o=Pt(o,88):o=Pt(o,56),A=t.s[e],A==0?o=Pt(o,PA):A<0?o=Pt(o,ln):o=Pt(o,on),i=t.e[e]-n.pp(t,e)+n.kp(t,e),i){case 0:o=Pt(o,1792);break;case 1:o=Pt(o,1664);break;case 2:o=Pt(o,1408);break;default:o=Pt(o,896)}switch(D=t.j[e],D){case 0:o=Pt(o,3932160);break;case 1:o=Pt(o,rA);break;case 2:o=Pt(o,pn);break;case 3:o=Pt(o,Cn);break;default:o=Pt(o,Qn)}switch(P=n.Lo(t,e),P){case 0:o=Pt(o,EA);break;case 1:o=Pt(o,NA);break;case 2:o=Pt(o,xA);break;case 3:o=Pt(o,GA);break;default:o=Pt(o,DA)}switch(u=t.o[e],u){case 0:o=Pt(o,98304);break;case 1:o=Pt(o,81920);break;default:o=Pt(o,49152)}}return o},n.Nt=function(t,e){var A;if(A=0,e<t.g&&(n.qt(t.p,e)||t.H[e]==8)||t.H[e]==8)A|=8;else switch(n.am(t,e)){case 0:A|=16;break;case 1:A|=1;break;case 2:A|=2;break;case 3:A|=4;break;case 4:A|=32;break;case 5:A|=64}return(t.F[e]&64)!=0?A|=256:t.K||(A|=128),e<t.g&&n.lt(t.p,e)?A|=m0:t.K||(A|=Y0),A},n.Ot=function(t){var e,A,P,r,i,D,u,o,Q,L;for(o=0,P=t,i=0,u=P.length;i<u;++i)e=P[i],e==-1&&++o;if(o!=0)for(L=t,t=d(l.Z6,H,6,L.length-o,15,1),Q=0,A=L,r=0,D=A.length;r<D;++r)e=A[r],e!=-1&&(t[Q++]=e);return c.lzb(t,c.Szb(y0(y.lrb.prototype.jd,y.lrb,[]))),t},n.Pt=function(t,e){var A,P,r,i,D,u,o,Q;for(D=0,P=e,r=0,i=P.length;r<i;++r)A=P[r],A==-1&&++D;for(Q=d(l.Z6,H,6,e.length-D,15,1),o=0,u=0;u<e.length;u++)e[u]!=-1&&(Q[o]=n.lw(t.g,u)<<16|n.lw(t.H,e[u]),t.i!=null&&(Q[o]|=t.i[u]<<24),++o);return c.lzb(Q,c.Szb(y0(y.lrb.prototype.jd,y.lrb,[]))),Q},n.Qt=function(t,e){var A,P,r,i,D,u,o,Q,L,w,s,h;for(i=!1,r=0;r<2;r++)if(A=n.Ul(t.g,r,e),L=t.G[A],n.Wo(t.H,L)>2){for(s=n.Ul(t.g,1-r,e),o=Mt,u=0;u<n.Wo(t.g,A);u++)P=n.Vo(t.g,A,u),P!=s&&o>P&&(o=P);for(h=t.G[s],Q=Mt,D=0;D<n.Wo(t.H,L);D++)w=n.Vo(t.H,L,D),w!=h&&Q>w&&(Q=w);t.G[o]!=Q&&(i=!i)}return i},n.Rt=function(t,e,A,P){var r,i,D,u,o,Q,L,w;for(u=t.e[P],o=u+1;o<t.A&&t.f[t.s[o]]==P;)++o;for(L=u;L<o;L++)A[L]=-1;for(D=u;;){if(w=t.u[D]==-1?t.H.f:n.Io(t.H,t.G[t.u[D]]),++A[D],A[D]==w){if(A[D]=-1,D==u)break;--D,t.t[D]||(e[t.G[t.s[D]]]=!1,t.G[t.s[D]]=-1);continue}if(t.u[D]==-1)e[A[D]]||n.Dt(t,A[D],t.s[D])&&(t.G[t.s[D]]=A[D],e[A[D]]=!0,++D);else{if(n.Vo(t.H,t.G[t.u[D]],A[D])>=t.H.f){++A[D];continue}i=n.Vo(t.H,t.G[t.u[D]],A[D]),t.t[D]?i==t.G[t.s[D]]&&n.Et(t,n.Xo(t.H,t.G[t.u[D]],A[D]),t.v[D])&&++D:e[i]||n.Dt(t,i,t.s[D])&&n.Et(t,n.Xo(t.H,t.G[t.u[D]],A[D]),t.v[D])&&(e[i]=!0,t.G[t.s[D]]=i,++D)}if(D==o){if(n.Kt(t,P)&&n.Jt(t,P)&&n.It(t,e,P)){for(Q=u;Q<o;Q++)t.t[Q]||(r=t.s[Q],e[t.G[r]]=!1,t.G[r]=-1);return!0}--D,t.t[D]||(e[t.G[t.s[D]]]=!1,t.G[t.s[D]]=-1)}}return!1},n.St=function(t){return n.Lt(t,1,t.c)>0},n.Tt=function(t,e){var A;for(A=0;A<e.length;A++)if(e[A]==t)return!0;return!1},n.Ut=function(t,e){var A,P,r;for(r=0,P=0;P<t.length;P++){for(A=t[P];e[r]<A;)if(++r,r==e.length)return!1;if(e[r]>A)return!1}return!0},n.Vt=function(t,e){var A,P,r,i,D,u,o,Q;if(D=!1,n.Mo(t.g,e)==0)for(i=1;i<n.Wo(t.g,e);i++)for(u=0;u<i;u++)P=n.Vo(t.g,e,i),r=n.Vo(t.g,e,u),t.G[P]>t.G[r]^P>r&&(D=!D);else for(i=0;i<n.Wo(t.g,e);i++){for(A=n.Vo(t.g,e,i),Q=0,o=d(l.Z6,H,6,3,15,1),u=0;u<n.Wo(t.g,A);u++)o[Q]=n.Vo(t.g,A,u),o[Q]!=e&&++Q;Q==2&&t.G[o[0]]>t.G[o[1]]^o[0]>o[1]&&(D=!D)}return D},n.Wt=function(t,e){var A,P,r,i;for(r=0,i=0;r<t.length&&i<e.length;){if(A=t[r],P=e[i],A==P)return!0;A<P?++r:++i}return!1},n.Xt=function(t,e){var A,P,r,i,D;if(!e||e.q==0||!e.K){t.g=null;return}for(t.g=e,t.r=!1,n.aw(t.g,1),t.N=7,P=0;P<t.g.f;P++)jt(Z(n.Jl(t.g,P),{l:l0,m:0,h:3}),0)&&(t.N=15);for(D=0;D<t.g.g;D++)(n.cm(t.g,D)&je)!=0&&(t.N=15);for(t.L&&t.N!=7&&n.aw(t.H,t.N),t.p=0,t.q=0,t.D=d(l.teb,wt,6,t.g.f,16,1),r=0;r<t.g.f;r++)t.D[r]=n.Fm(t.g,r),t.D[r]&&++t.p;if(t.d=0,t.f=null,t.i=null,t.p!=0){for(i=0;i<t.g.g;i++)(t.D[n.Ul(t.g,0,i)]||t.D[n.Ul(t.g,1,i)])&&++t.q;for(A=0;A<t.g.q;A++)n.on(t.g,A,t.D[A]);t.f=d(l.Z6,H,6,t.g.q,15,1),t.d=n.dp(t.g,t.f,!0,!1)}},n.Yt=function(t,e){t.i=e},n.Zt=function(t,e,A){n.$t(t,A),n.Xt(t,e)},n.$t=function(t,e){if(!e||e.q==0){t.H=null;return}t.H=e,t.L=!1,n.aw(t.H,1)},n._t=function(t,e){t.L||(n.cu(t,e),t.L=!0),t.r||(n.au(t,e),n.Gt(t),n.Ft(t),t.r=!0)},n.au=function(t,e){var A,P,r,i,D,u,o,Q,L,w;for(i=null,o=null,D=null,n.aw(t.g,t.N),t.o=d(l.Z6,H,6,t.g.f,15,1),P=0;P<t.g.f;P++)t.o[P]=n.Wo(t.g,P);if(t.p!=0){for(Q=new n.tw(t.g.q,t.g.r),w=d(l.teb,wt,6,t.g.q,16,1),r=0;r<t.g.q;r++)w[r]=!t.D[r];for(n.yo(t.g,Q,w,!0,null),n.aw(Q,t.N),n.bu(t,Q,e),i=t.j,o=t.n,D=t.k,L=0,A=0;A<t.g.f;A++)t.D[A]||(t.o[A]=n.Wo(Q,L++))}if(n.bu(t,t.g,e),t.p!=0){for(L=0,A=0;A<t.g.q;A++)t.D[A]||(t.j[A]=i[L],t.k[A]=D[L++]);for(L=0,u=0;u<t.g.r;u++)!t.D[n.Ul(t.g,0,u)]&&!t.D[n.Ul(t.g,1,u)]&&(t.n[u]=o[L++])}},n.bu=function(t,e,A){var P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S;for(g=e.f,t.j=d(l.$6,e0,6,e.f,14,1),t.k=d(l.Z6,H,6,e.f,15,1),u=0;u<g;u++)t.j[u]=An(Z(Pt(n.Mt(e,u),e.B[u]),Ur),W8),t.k[u]=e.C[u],(A&1)!=0&&(t.k[u]+=e.s[u]+16<<8),(A&2)!=0&&(t.k[u]+=e.A[u]<<16);for(t.B=d(l.$6,e0,6,e.f,14,1),m=(n.aw(e,7),e.p),b=0;b<m.i.a.length;b++){for(h=!1,Q=y.uj(m.j,b),L=0,w=Q.length;L<w;++L)if(s=Q[L],(e.G[s]&Qe)!=0){h=!0;break}if(!h)for(S=y.uj(m.j,b).length,r=y.uj(m.i,b),i=0,D=r.length;i<D;++i)P=r[i],S==3?t.B[P]=Pt(t.B[P],ze):S==4?t.B[P]=Pt(t.B[P],Ve):S==5?t.B[P]=Pt(t.B[P],qe):S==6?t.B[P]=Pt(t.B[P],Ie):S==7&&(t.B[P]=Pt(t.B[P],Ee))}for(B=e.g,t.n=d(l.Z6,H,6,e.g,15,1),o=0;o<B;o++)t.n[o]=(n.Nt(e,o)|e.G[o])&6291967^6291840,(A&4)!=0?(t.n[o]&2)!=0&&(t.n[o]|=8):(A&8)!=0&&(t.n[o]&2)!=0&&o<e.g&&n.lt(e.p,o)&&(t.n[o]|=8)},n.cu=function(t,e){var A,P,r,i,D,u,o,Q,L,w,s,h;for(n.aw(t.H,t.N),L=t.H.f,t.J=d(l.Z6,H,6,L,15,1),t.I=d(l.$6,e0,6,L,14,1),D=0;D<L;D++)t.I[D]=An(Z(Pt(n.Mt(t.H,D),n.Jl(t.H,D)),Ur),W8),t.J[D]=n.Ol(t.H,D),(e&1)!=0&&(t.J[D]+=n.xl(t.H,D)+16<<8),(e&2)!=0&&(t.J[D]+=n.Hl(t.H,D)<<16);for(t.M=d(l.$6,e0,6,L,14,1),s=n.Ap(t.H),Q=0;Q<s.i.a.length;Q++)for(h=y.uj(s.j,Q).length,P=y.uj(s.i,Q),r=0,i=P.length;r<i;++r)u=P[r],h==3?t.M[u]=Pt(t.M[u],ze):h==4?t.M[u]=Pt(t.M[u],Ve):h==5?t.M[u]=Pt(t.M[u],qe):h==6?t.M[u]=Pt(t.M[u],Ie):h==7&&(t.M[u]=Pt(t.M[u],Ee));for(A=0;A<L;A++)h=n.Qo(t.H,A),h==0?t.M[A]=Pt(t.M[A],le):h>7&&(t.M[A]=Pt(t.M[A],un));for(w=t.H.g,t.K=d(l.Z6,H,6,w,15,1),o=0;o<w;o++)t.K[o]=(n.Nt(t.H,o)|n.cm(t.H,o))&6422527^6291840},n.du=function(t,e,A,P,r,i,D){var u,o;return u=n.Vo(t.g,t.s[e],P),(!t.D[u]||t.f[u]==D)&&u!=t.u[e]&&(o=n.Xo(t.g,t.s[e],P),!i[o]&&!n.ym(t.g,o)&&(t.s[++A]=u,t.u[A]=t.s[e],t.v[A]=o,i[o]=!0,r[u]?t.t[A]=!0:r[u]=!0)),A},n.eu=function(){this.c=8,this.O=new y.Owb(new lt.P3)},n.fu=function(){this.c=1,this.O=new y.Owb(new lt.P3)},n.gu=function(t,e){var A;return A=d(l.Z6,H,6,e,15,1),T.Qjb(t,0,A,0,k.Math.min(t.length,e)),A},n.hu=function(t,e){var A;return A=d(l.teb,wt,6,e,16,1),T.Qjb(t,0,A,0,k.Math.min(t.length,e)),A},G(64,1,{},n.eu,n.fu),U.c=0,U.d=0,U.p=0,U.q=0,U.r=!1,U.w=0,U.A=0,U.L=!1,U.N=0,U.P=!1,l.O7=O(64),n.iu=function(){},G(215,1,{215:1},n.iu),U.a=0,U.b=0,U.c=0,U.d=0,l.M7=O(215),n.lu=function(){n.lu=u1,n.ju=v(F(l.Nbb,1),yt,2,6,[\"QM@HzAmdqjF@\",\"RF@Q``\",\"qC`@ISTAlQE`\",\"`J@H\",\"QM@HzAmdqbF@\",\"qC`@ISTAlQEhqPp@\",\"sJP@DiZhAmQEb\",\"RF@QPvR@\",\"QM@HzA@\",\"qC`@ISTAlQEhpPp@\",\"qC`@Qz`MbHl\",\"sJP@DiZhAmQEcFZF@\",\"RFPDXH\",\"qC`@IVtAlQE`\",\"QM@HvAmdqfF@\",\"sGP@DiVj`FsDVM@\",\"`L@H\",\"sJP@DizhAmQEcFBF@\",\"sJP@DjvhAmQEb\",\"sFp@DiTt@@AlqEcP\",\"sGP@LdbMU@MfHlZ\",\"QMHAIhD\",\"QM@HzAy@\",\"sJP@DkVhAmQEb\",\"sNp@DiUjj@[\\\\QXu`\",\"sJP@DiZhAmQEcFBF@\",\"sGP@DjVj`FsDVM@\",\"RFPDTH\",\"RG@DXOH@\",\"sGP@Divj`FsDVMcAC@\",\"sGP@Dj}j`FsDVM@\",\"qC`@Qz`MbHmFRF@\",\"sNp@LdbJjj@[\\\\QXu`\",\"QMHAIhGe@\",\"QM@HzAyd`\",\"QM`AIhD\",\"qC`@ISTA@\",\"sGP@DkUj`FsDVM@\",\"qC`@IVtAlQEhqPp@\",\"sNp@DiUjj@[\\\\QXuqea`@\",\"KAx@@IRjuUPAlHPfES\\\\\",\"QM`BN`P\",\"sJP@DjZhAmQEcFJF@\",\"Hid@@DjU^nBBH@FtaBXUMp`\",\"sNp@Diujj@[\\\\QXuq`a`@\",\"sJP@DjvhAmQEcFZF@\",\"sJP@DjZhAmQEcFFF@\",\"sOp@DjWkB@@FwDVM\\\\YhX@\",\"sNp@Dj}Zj@[\\\\QXu`\",\"sNp@DiWjj@[\\\\QXuq`a`@\",\"sOp@DjWkB@@D\",\"KAx@@ITouUPAlHPfES\\\\\",\"KAx@@YIDTjjh@vDHSBin@\",\"sNp@DkUZj@[\\\\QXu`\",\"RFPDXOH@\",\"QM`BN`^L`\",\"qC`@ISTAy@\",\"sGP@LdbMU@MfHl[FVF@\",\"qCb@AIZ`H\",\"KAx@@IRjuUPAlHPfES]FFa`@\",\"KAx@@ITnuUPAlHPfES\\\\\",\"HiD@@DiUVjj`AmHPfES\\\\H\",\"sNp@DjUjj@[\\\\QXu`\",\"sJP@DkVhAmQEcFJF@\",\"sGP@DjVj`FsDVMcCC@\",\"qC`@Qz`MbHmFBF@\",\"sJP@DkfhAmQEb\",\"qC`@IVtAlQEhsPp@\",\"sGP@Djuj`FsDVM@\",\"sGP@Dj}j`FsDVMcMC@\",\"sJP@DiZhA@\",\"KAx@@ISjuUPAlHPfES]F@a`@\",\"sJP@DjZhAmQEcFRF@\",\"KAx@@IRnuUPAlHPfES]F@a`@\",\"HiD@@DjWvjj`AmHPfES\\\\H\",\"QMHAIhGd@\",\"sNp@DiUjj@[\\\\QXuq`a`@\",\"KAx@@IVjmUPAlHPfES\\\\\",\"sGP@DjVj`FsDVMcMC@\",\"QM`AIhGe@\",\"HiD@@LdbJRjjh@[RDIaTwB\",\"qCp@AIZ`H\",\"sGP@LdbMU@MfHl[FFF@\",\"QMDARVA@\",\"sNp@LdbJjj@[\\\\QXuqba`@\",\"sNp@LdbJjj@[\\\\QXuqca`@\",\"sGP@Dkej`FsDVM@\",\"qCb@AIZ`OI@\",\"HaD@@DjUZxHH@AlHPfES]FLa`@\",\"sGP@DkYj`FsDVM@\",\"qCb@AIV`H\",\"sNp@LdbJjj@[\\\\QXuqea`@\",\"sGP@DkUj`FsDVMcEC@\",\"sFp@DiTt@@Axa@\",\"Hmt@@DjU_ZxHHj@AmhPfES\\\\Lj\",\"QM`BN`^P\",\"qCb@AIZ`OH`\",\"sFp@DiTt@@AxaP\",\"sGP@Djuj`FsDVMcEC@\",\"sGP@Djuj`FsDVMcIC@\",\"sGP@DkUj`FsDVMcKC@\",\"sJP@DkfhAmQEcFRF@\",\"sGP@DjVj`FsDVMcIC@\",\"HaD@@DjUZxHH@AlHPfES]FFa`@\",\"qC`@IRtDVqDV@\",\"sNp@Dj}Zj@[\\\\QXuqfa`@\",\"KAx@@ITnuUPAlHPfES]FFa`@\",\"HiD@@DkUUjj`AmHPfES\\\\H\",\"sJQ@@dkU@H\",\"qC`@Qz`H\",\"KAx@@IUkmUPAlHPfES\\\\\",\"KAx@@ITouUPAlHPfES]FJa`@\",\"sJP@H~j@[TQX`\",\"sGP@DjZj`FsDVM@\",\"sJP@DkVhAmQEcFFF@\",\"sJX@@eKU@H\",\"sJP@DizhAy@\",\"QMHAIhGbP\",\"KAx@@ITouUPAlHPfES]FNa`@\",\"HaD@@DjUZxHD@AlHPfES\\\\\",\"HaD@@DjUZxHH@A@\",\"sNp@LdbJjj@[\\\\QXuqaa`@\",\"Hed@@LdbRQUUUP@vTHSBinFP\",\"KAx@@ITouUPAlHPfES]FLa`@\",\"sNp@DkUZj@[\\\\QXuqba`@\",\"KAx@@ITjuUPAlHPfES]FNa`@\",\"KAx@@YIDTjjh@vDHSBincGPp@\",\"HaD@@DjYvxH`@AlHPfES]FLa`@\",\"RF@QP`\",\"qCb@AIj`H\",\"sNp@DjUjj@[\\\\QXuqaa`@\",\"sNp@DkVZj@[\\\\QXu`\",\"KAx@@YIDUJjh@vDHSBin@\",\"sGP@DkYj`FsDVMcIC@\",\"sGP@DjVj`FsDVMcAC@\",\"sGP@DiVj`D\",\"sJP@DkVhAmQEcFZF@\",\"sNp@LdbLjj@[\\\\QXu`\",\"QM@HvAmdqbF@\",\"HaD@@DjWjXHB@AlHPfES\\\\\",\"sNp@DjwZj@[\\\\QXuqba`@\",\"sNp@LdbJjj@[\\\\QXuqda`@\",\"sFp@DiTt@@Axa`\",\"HiD@@Djuujj`AmHPfES\\\\H\",\"sNp@DkUZj@[\\\\QXuqca`@\",\"sJP@DiZhAy@\",\"KAx@@YIDTjjh@vDHSBincCPp@\",\"KAx@@IWNmUPAlHPfES\\\\\",\"KAx@@IVkMUPAlHPfES\\\\\",\"sJQ@@dju@H\",\"qCb@AIZ`OH@\",\"qC`@ISTAxa@\",\"sNp@DjyZj@[\\\\QXu`\",\"Hid@@DjUfaBB`@FtaBXUMp`\",\"HiD@@DiUVjj`AmHPfES\\\\LXBF@\",\"KAx@@IUjmUPAlHPfES\\\\\",\"HiD@@DjWvjj`AmHPfES\\\\LXjF@\",\"sJP@DjVhAmQEb\",\"qCb@AIV`OH`\",\"HiD@@LdbJRjjh@[RDIaTwCFDa`@\",\"KAx@@YIDTjjh@vDHSBinc@Pp@\",\"sNp@DjUjj@[\\\\QXuqda`@\",\"qC`@Qz`OED\",\"sJP@DkfhAmQEcFZF@\",\"KAx@@YIDbjjh@vDHSBincDPp@\",\"sGP@Djyj`FsDVMcMC@\",\"KAx@@IVrmUPAlHPfES\\\\\",\"qCp@AIZ`OI@\",\"sJX@@dkU@H\",\"sJQ@@dkU@OH`\",\"sNp@Di]ZjBBvxbqk@\",\"Hkl@@DjU_Uk``bj`@[VDIaTwCJzX\",\"sGP@DjZj`FsDVMcEC@\",\"Hid@@DjU^nBBH@FtaBXUMpqcHX@\",\"sNp@DkeZj@[\\\\QXu`\",\"sNp@DjYjj@[\\\\QXuqca`@\",\"sGQ@@djuT@`\",\"HiD@@LdbJTjjh@[RDIaTwB\",\"sOp@DjWkB@@Gd`\",\"HeT@@LdbbRKBDQD@CYPaLJfxY@\",\"qCr@XIKTA@\",\"HiD@@DjW^jj`AmHPfES\\\\LXJF@\",\"HeT@@DjU]k``b`@[JDIaTwCH\",\"sGP@Djuj`FsDVMcCC@\",\"`IH`B\",\"sOp@DjWkB@@GdX\",\"sJQ@@eKU@H\",\"KAx@@YIDUJjh@vDHSBincBPp@\",\"sJX@@eKU@OH@\",\"KAx@@YIDTjjh@vDHSBincAPp@\",\"sOq@@drm\\\\@@@`\",\"KAx@@IUkMUPAlHPfES\\\\\",\"qCp@AIj`H\",\"Hed@@DjUUjjj@FraBXUMpr\",\"sGX@@eJuT@`\",\"sGP@DkUj`FsDVMcCC@\",\"HiD@@Dj}Ujj`AmHPfES\\\\LXrF@\",\"KAx@@ITouUPAlHPfES]FHa`@\",\"Hed@@DjWujjj@FraBXUMpsFIa`@\",\"sGP@DiUj``mfHlZ\",\"sFp@DiTvjhAlqEcP\",\"Hid@@DjU^nBBH@FtaBXUMpq`XX@\",\"sJP@DkVdAmQEb\",\"qCp@AIZ`OH`\",\"QMhDRVA@\",\"qC`@ISJAlQE`\",\"qCp@BOTAyhl\",\"sJX@@eOU@ODB\",\"sFp@DiTt@@AyaB\",\"sGP@DkUj`FsDVMcMC@\",\"Hid@@DjYUaBH`@FtaBXUMpqcHX@\",\"qC`@Qz`OH@\",\"HiD@@DjUVjj`AmHPfES\\\\LXZF@\",\"sJP@H~j@[TQXqda`@\",\"sJX@@eKU@OI@\",\"sNp@Djejj@[\\\\QXu`\",\"sJQ@@dsU@H\",\"sJQ@@dkU@OI`\",\"KAx@@YIMDVjh@vDHSBin@\",\"Hid@@DjU^nBBD@FtaBXUMp`\",\"sNp@DkgZj@[\\\\QXuqca`@\",\"qC`@IRtDVqDVcEC@\",\"Hed@@LdbRQeUUP@vTHSBinFP\",\"sNp@DiUjj@P\",\"qC`@IRtDT\",\"sNp@DkYZj@[\\\\QXuqca`@\",\"KAx@@IUkmUPAlHPfES]FDa`@\",\"KAx@@IVjmUPAlHPfES]FNa`@\",\"sOx@@drm\\\\@@@`\",\"KAx@@ITjuUPAlHPfES]FBa`@\",\"QMDARVAyH\",\"sJP`@dfvhA@\",\"HeT@@DjU_k``b`@[JDIaTwCLXfF@\",\"KAx@@IToUUPAlHPfES]FJa`@\",\"sGP@DkYj`FsDVMcEC@\",\"qCb@AIZ`ODH\",\"`I@`B\",\"KAx@@IUzmUPAlHPfES]FFa`@\",\"sNp@DkfZj@[\\\\QXu`\",\"KAx@@ITnuUPAlHPfES]F@a`@\",\"HiD@@LddURjjh@[RDIaTwB\",\"sNp@Dj~Zj@[\\\\QXuqfa`@\",\"Hed@@Dj{uZjj@FraBXUMpr\",\"KAx@@ITsUUPAlHPfES\\\\\",\"Hid@@LdbRQk``b@AmHPfES\\\\LXrF@\",\"sOp@DjWkB@@GdH\",\"sJQ@@dkU@OH@\",\"Hid@@DjU^nBBH@FtaBXUMpqahX@\",\"sGP@DiYj``mfHlZ\",\"KAx@@IToUUPAlHPfES]FLa`@\",\"qCp@AJZ`ODH\",\"Hmt@@DjU]ZxHHj@AmhPfES\\\\Lj\",\"sGP@DkUjPFsDVM@\",\"qC`@IVtA@\",\"Hed@@LdbJReUUP@vTHSBinFP\",\"sNp@DjuZj@[\\\\QXuqea`@\",\"KAx@@IUkmUPAlHPfES]FNa`@\",\"HiD@@DkVUjj`AmHPfES\\\\H\",\"Hed@@DkUeZjj@FraBXUMpr\",\"sNp@DkVZj@[\\\\QXuqea`@\",\"sJP@DiVhHKZbKFLLL@\",\"HiD@@Djuyjj`AmHPfES\\\\H\",\"sNp@DjUjj@[\\\\QXuq`a`@\",\"HeT@@DjYUXPbH`@[JDIaTwCH\",\"HiD@@DjwUjj`AmHPfES\\\\LXRF@\",\"sNq@@djmUPB\",\"KAx@@YIEEZjh@vDHSBincCPp@\",\"sGP@Di^V`dmfHlZ\",\"Hid@@DjYUaBHP@FtaBXUMp`\",\"sNp@DjYjj@[\\\\QXuqba`@\",\"sGP@Dkej`FsDVMcKC@\",\"HeT@@DjU^k``b`@[JDIaTwCH\",\"qC`@Qv`MbHmFBF@\",\"sGQ@@djmT@`\",\"qCr@XIKTAyH\",\"qC`@IVtAlQEhpPp@\",\"Hid@@LdbbQxXF@@AmHPfES\\\\LXjF@\",\"sGP@DkYj`FsDVMcCC@\",\"KAx@@IVsMUPAlHPfES\\\\\",\"qCp@AIj`ODl\",\"HiD@@DkeUjj`AmHPfES\\\\H\",\"deT@@DjU[k``b`@vTHSBinFP\",\"sJP@DkVdAmQEcFRF@\",\"HiD@@LdbJTjjh@[RDIaTwCFDa`@\",\"HiD@@DkYyjj`AmHPfES\\\\H\",\"sJP@DjZhAyH\",\"KAx@@IVkMUPAlHPfES]FDa`@\",\"sJX@@dkU@OI@\",\"Hed@@LdbRQUUUP@vTHSBinFXpLL@\",\"Hed@@DjuUZjj@FraBXUMpr\",\"sGP@Djfj`FsDVMcKC@\",\"sNp@DkVZj@[\\\\QXuqba`@\",\"sNp@DjyZj@[\\\\QXuqfa`@\",\"qCb@AIj`OH@\",\"sNp@DjUZj@[\\\\QXu`\",\"KAx@@IWOMUPAlHPfES\\\\\",\"Hid@@DjU^nBBH@D\",\"Hed@@DjuvZjj@FraBXUMpr\",\"sJP@DiVhHKZbKFLtL@\",\"dmt@@DjU_ZxHHj@C[PaLJfxYVLKC@\",\"sNp@DjuZj@[\\\\QXuqca`@\",\"sJP@DkfhAmQEcFJF@\",\"sNp@LdbJZj@[\\\\QXu`\",\"HeT@@DjU_k``b`@[JDIaTwCLXFF@\",\"KAx@@IVlmUPAlHPfES]FNa`@\",\"HeT@@LdbbRKBDQD@CYPaLJfxYcEPp@\",\"Hid@@DjUZnBBH@FtaBXUMpqcHX@\",\"qCa@CIKTA@\",\"HiD@@Dj~]jj`AmHPfES\\\\LXFF@\",\"sKP@Di\\\\Zj@[TQX`\",\"sGP@Djfj`FsDVMcEC@\",\"HiD@@DkgYjj`AmHPfES\\\\H\",\"sNp@DjuZj@[\\\\QXuqaa`@\",\"KAx@@YIMDVjh@vDHSBincDPp@\",\"sJP@DjVhHKZbKFLTL@\",\"Hid@@LdbRQk``b@AmHPfES\\\\LXZF@\",\"HiD@@Dj}Ujj`AmHPfES\\\\LXzF@\",\"HeT@@DjU_k``bP@[JDIaTwCH\",\"sNp@DkUZi@[\\\\QXu`\",\"HiD@@DjYfjj`AmHPfES\\\\H\",\"sGP@DjZj`FsDVMcAC@\",\"Hmt@@DjU_jxHHj@AmhPfES\\\\Lj\",\"Hid@@LdbRQk``R@AmHPfES\\\\H\",\"KAx@@YIDUJjh@vDHSBincDPp@\",\"qCr@XIKTAyD\",\"sOq@@drm\\\\@@@|`@\",\"Hed@@DjW^jjj@FraBXUMpsFBa`@\",\"HeT@@DjY]zXFB@@[JDIaTwCH\",\"Hkl@@DjU_Vk``bj`@[VDIaTwCJzX\",\"Hid@@DjY}nBHH@FtaBXUMpqcHX@\",\"sGX@@eKuT@|d@\",\"sGP@Dj^Y`FsDVM@\",\"HcL@@DjU_ZnBBJh@FqaBXUMprn`\",\"sJP@DkVdAmQEcFJF@\",\"sOq@@drm\\\\@@@|b@\",\"sNp@DjyZj@[\\\\QXuqaa`@\",\"HaD@@DjUZxHH@AyD@\",\"qC`@Qv`H\",\"dmt@@DjU_ZxHHj@C[PaLJfxYVLYC@\",\"sGP@Dkej`FsDVMcMC@\",\"Hed@@DjUUjjj@FraBXUMpsFHa`@\",\"HeT@@LdbbRkBDQD@CYPaLJfxY@\",\"KAx@@IU{MUPAlHPfES]FLa`@\",\"RG@DTH\",\"sJY@DDeVhA@\",\"KAx@@YIDUJjh@vDHSBinc@Pp@\",\"sJX@@dkU@OI`\",\"sJQ@@dju@OI`\",\"HeT@@LdbbRKBDQD@CYPaLJfxYcFPp@\",\"sFp@DiTvjhAlqEcXpPp@\",\"HaD@@DjUZxHH@AyG@\",\"sNx@@eJ}UPB\",\"sNp@LddUjj@[\\\\QXuqca`@\",\"HaDH@@RVU[j@@@D\",\"sNp@DkgZi@[\\\\QXu`\",\"sGY@LDeVj`D\",\"sNp@LdbJfZBZvxbqk@\",\"sJP`@dfvhAyL\",\"sGX@AddQjhAxe`\",\"Hmt@@DjU_ZxHHj@AmhPfES\\\\LkFIa`@\",\"qCh@CIKTA@\",\"sNp@LdbLjj@[\\\\QXuq`a`@\",\"sOq@@drm\\\\@@@|a@\",\"KAx@@IUzmUPAlHPfES]FJa`@\",\"sNx@AddQUUPB\",\"sGP@Di]jP`mfHlZ\",\"sJP`@TeZhA@\",\"KAx@@IRjmUPHKXPaLJfx\",\"HeT@@LdbRTM\\\\DDT@CYPaLJfxY@\",\"HaF@@@Rfu[j@@@D\",\"Hid@@DjYUaBH`@FtaBXUMpqchX@\",\"KAx@@IUjmTpAlHPfES\\\\\",\"Hid@@DjU^nBBD@FtaBXUMpqcHX@\",\"sGP@DiUj``mfHl[FFF@\",\"KAx@@IUvmUPAlHPfES]FLa`@\",\"Hed@@LdbQTUUUP@vTHSBinFXqDL@\",\"sJP@DkVhA@\",\"sOx@@drm\\\\@@@|b@\",\"KAx@@IUkMUPAlHPfES]FDa`@\",\"HeT@@LdbRQU\\\\DDT@CYPaLJfxY@\",\"HiD@@Dj}Yjj`AmHPfES\\\\LXrF@\",\"HiD@@Dj{ujj`AmHPfES\\\\LXFF@\",\"KAx@@IWNmUPAlHPfES]FFa`@\",\"KAx@@IRkMUPHKXPaLJfx\",\"sJP@DjYdAmQEcFZF@\",\"sJY@LDeZhAyL\",\"HaDH@@RVU[f@@@D\",\"sJP`@deVhAyB\",\"HaD@@DjWjZjj`AlHPfES\\\\\",\"sGP@DkYj`FsDVMcMC@\",\"sNp@DkgZj@[\\\\QXuqea`@\",\"sJQ@@dlu@H\",\"HeT@@DjU]k``b`@[JDIaTwCLXrF@\",\"sJX@@dkU@OH`\",\"RFDDQFCr`\",\"sJP@DiYXIKZbKFLLL@\",\"KAx@@YIHjjjh@vDHSBincGPp@\",\"Hk\\\\@@DjU^ukmLHH@@@AmXPfES\\\\Lki`\",\"sGQ@@djmT@|b@\",\"Hid@@DjUfaBB`@FtaBXUMpqahX@\",\"sNx@@eRmUPB\",\"Hmt@@LdbRVak``ah@FvaBXUMprh\",\"qCr@XIJtA@\",\"KAx@@IWMmUPAlHPfES]FNa`@\",\"HeT@@DjYYZPbJ@@[JDIaTwCH\",\"sNp@DkfZj@[\\\\QXuqea`@\",\"Hid@@DjU^nBAHAEVtaBXUMp`\",\"dmt@@DjUgZDHJJ@C[PaLJfxYT\",\"sGP@DkejPFsDVM@\",\"sNx@@eJmUPB\",\"qCb@AIf`H\",\"HcL@@DjU_VnBBJh@FqaBXUMprnqcXX@\",\"Hid@@DjUZnBBH@FtaBXUMpqahX@\",\"sNp@LdbQZjBBvxbqkcGC@\",\"sOx@@drm\\\\@@@|c@\",\"sJP@H~j@^R@\",\"KAx@@YIDcFjhDElHPfES\\\\\",\"Hid@@DjUZnBAH@FtaBXUMp`\",\"sNp@LddUji@[\\\\QXu`\",\"sGP@DjfjPFsDVM@\",\"HeT@@DjYUXPbD`@[JDIaTwCH\",\"KAx@@IUoMUPAlHPfES]FDa`@\",\"sFp@DiTt@@AyaD\",\"Hed@@DjuuZjj@FraBXUMpsFIa`@\",\"HeT@@DjUghP`h`@[JDIaTwCLXfF@\",\"sOp@DjWkjj`FwDVM\\\\YhX@\",\"sGP@Djfj`FsDVMcIC@\",\"KAx@@IRkmUPHKXPaLJfzL]C@\",\"sNx@@djmUPB\",\"QM`AIdD\",\"sOp@DjWkB@@Gbe@\",\"sNp@DjyZj@[\\\\QXuqca`@\",\"QM@HuAmd`\",\"sNp@LddUjj@[\\\\QXuqea`@\",\"daD@@DjUZxHD@CXPaLJfzLYC@\",\"qCb@AIZPH\",\"HiD@@LdbJTjjh@[RDIaTwCF@a`@\",\"Hmt@@DjU_ZxHHi@AmhPfES\\\\Lj\",\"HaDH@@RYWih@H@D\",\"HiD@@LdbJTjjh@[RDIaTwCFHa`@\",\"sGX@@djuT@|a@\",\"sNp@DkfZj@[\\\\QXuqaa`@\",\"Hid@@DjU^nBBH@GdL\",\"KAx@@IVkMUPAlHPfES]FJa`@\",\"qCr@XIKTAy@\",\"HmT@@Dj{uVjjh@[ZDIaTwCJqaXX@\",\"dmt@@DjYWVDHbJ@C[PaLJfxYT\",\"Hif@@@RUe^Fh@@@P\",\"HaDH@@Rfu[j@@@GdH\",\"KAx@@IVsMUPAlHPfES]FDa`@\",\"sKP@Di\\\\Zj@[TQXq`a`@\",\"sJX@@eMU@OH@\",\"HeT@@DjU^k``b`@[JDIaTwCLXFF@\",\"Hmt@@LdbbRJXPbHh@FvaBXUMprh\",\"sJP@DjvhAmQEcFBF@\",\"dmt@@LdbbRNXPbHh@MmBDpj[aeXplL@\",\"sJP`@dfvhAyD\",\"sGP@Di^V`dmfHl[FVF@\",\"KAx@@IVsmUPAlHPfES]FBa`@\",\"sOq@@drm\\\\@@@|PP\",\"sJY@BDeZhA@\",\"HeT@@LdbRbmBDED@CYPaLJfxY@\",\"Hed@@Djy[Zjj@FraBXUMpr\",\"HeT@@DjU]k``b`@[JDIaTwCLXFF@\",\"Hid@@DjUfaBB`@D\",\"qCa@CIJtA@\",\"QMPARVA@\",\"Hid@@DjUfaBB`@FtaBXUMpqcHX@\",\"sJY@BDfZhA@\",\"HeT@@DjUghP`hP@[JDIaTwCH\",\"Hed@@Dj{uZjj@FraBXUMpsFIa`@\",\"dmt@@DjYUvDHbJ@C[PaLJfxYVLUC@\",\"sNp`@dfuZj@P\",\"sJQ@@dmU@OH@\",\"sJX@@dmU@H\",\"HeT@@DjU]k``b`@[JDIaTwCLXZF@\",\"HiD@@LdfbJZjh@[RDIaTwCFAa`@\",\"sOx@@drm\\\\@@@|a@\",\"deT@@DjUfhP`h`@vTHSBinFP\",\"dmt@@DjU]ZxHHj@C[PaLJfxYVLKC@\",\"sOp@DjWkjj`FwDVM\\\\XHX@\",\"HcL@@LdbbRNSBDQEP@McBDpj[ae]cFpp@\",\"HiD@@Dj}Yji`AmHPfES\\\\H\",\"HaDH@@RYe[hB@@D\",\"Hid@@DjU^njjj@FtaBXUMpq`XX@\",\"deT@@LdbbRKBDQB@FraBXUMpr\",\"QMPARZA@\",\"sOq@@drm\\\\@@@|QX\",\"HaD@@DjYvxH`@A@\",\"HcL@@LdbbRNcBDQEP@McBDpj[ae]@\",\"QMhDRZA@\",\"RG@DXLHmP\",\"QM`BN`XQYd\",\"RG@DTLHmP\",\"QMHAIXFEVd\",\"QMDARVAaH\",\"RFPDXLHmP\",\"RF@Q`vRbdLEC@\",\"RF@QpvR@\",\"QO@HyjAmd`\",\"`II@B\",\"`II@CFspqJp\",\"`II@CF[@hM@prB`\",\"`H@[T[|B`XN@PdM@p|@bHrBcDk@\",\"RG@DXMj}F@\",\"QM`BN`[L~b@\",\"RG@DTMj}D@\",\"QMHAIXFt~j@\",\"QMDARVA}L@\",\"RFPDXMj}D@\",\"sKP@Di\\\\YZ@[TQXqaa`@\",\"eF`BHD\"])},n.mu=function(t,e){var A,P;if(!e)return null;for(P=d(l.Z6,H,6,(n.ju.length+31)/32|0,15,1),e=n.ru(e),n.$t(t.g,e),A=0;A<n.ju.length;A++)n.Xt(t.g,n.ku[A]),n.Lt(t.g,1,4)>0&&(P[A/32|0]|=1<<31-A%32);return P},n.nu=function(t,e){var A,P;if(!e)return null;for(P=d(l.$6,e0,6,(n.ju.length+63)/64|0,14,1),e=n.ru(e),n.$t(t.g,e),A=0;A<n.ju.length;A++)n.Xt(t.g,n.ku[A]),n.Lt(t.g,1,4)>0&&(P[A/64|0]=Pt(P[A/64|0],T1(1,63-A%64)));return P},n.ou=function(){var t,e;if(n.ku==null)for(e=new n.Xq(!1),n.ku=d(l.$7,xe,25,n.ju.length,0,1),t=0;t<n.ju.length;t++)n.ku[t]=n.Lq(e,n.ju[t]),n.aw(n.ku[t],1)},n.pu=function(t){var e;if(t.f!=null){for(e=0;e<t.f.length;e++)if((t.c[e]&~t.f[e])!=0)return!1}else return!1;return n.qu(t)},n.qu=function(t){return!t.d&&(t.d=n.Nq(new n.Xq(!1),t.e)),!t.a&&(t.a=n.Nq(new n.Xq(!1),t.b)),n.$t(t.g,t.d),n.Xt(t.g,t.a),n.St(t.g)},n.ru=function(t){var e,A;if(t.K){for(e=0;e<t.q;e++)if(jt(Z(t.B[e],P0),0)){for(t=new n.uw(t),A=e;A<t.q;A++)jt(Z(t.B[A],P0),0)&&(t.C[A]=-1);n.rl(t)}}return t},n.su=function(t,e,A){t.b=null,t.a=e,A==null?t.c=n.mu(t,e):t.c=A},n.tu=function(t,e,A){t.e=null,t.d=e,A==null?t.f=n.mu(t,e):t.f=A},n.uu=function(){n.lu(),this.g=new n.eu,n.ou()},n.vu=function(t){n.lu();var e,A,P,r,i,D;if(t==null)return null;for(e=d(l.V6,Y,6,t.length*8,15,1),P=0;P<t.length;P++)for(D=t[P],r=7;r>=0;r--)A=D&15,A>9&&(A+=7),e[P*8+r]=48+A<<24>>24,D>>=4;return T.Zib((i=e,V1.Cmb(),i))},n.wu=function(t){n.lu();var e,A,P,r;if(c.Szb(t).length==0||(c.Szb(t).length&7)!=0)return null;for(P=d(l.Z6,H,6,c.Szb(t).length/8|0,15,1),A=0;A<c.Szb(t).length;A++)r=A/8|0,e=(c.Nzb(A,c.Szb(t).length),c.Szb(t).charCodeAt(A)-48),e>16&&(e-=7),P[r]<<=4,P[r]+=e;return P},n.xu=function(t,e){n.lu();var A,P,r,i;for(i=0,P=0,r=0,A=0;A<t.length;A++)i+=Pn(t[A]&e[A]),P+=Pn(t[A]),r+=Pn(e[A]);return i/k.Math.sqrt(P*r)},n.yu=function(t,e){n.lu();var A,P,r;for(r=0,A=0,P=0;P<t.length;P++)r+=Pn(t[P]&e[P]),A+=Pn(t[P]|e[P]);return r/A},G(178,1,{},n.uu),l.N7=O(178),n.Au=function(t){t.j=1,t.k=10,t.n=400,t.f=400,t.i=!0,t.d=\"black\",t.b=new y.Jj,t.a=new y.Jj,t.c=new T.Kjb,t.e=new m1.Hfb(12)},n.Bu=function(t,e){var A,P;return A=(P=m1.Ffb(t.e,e),new c0.Zfb(P)).b,A},n.Cu=function(t){return t.k},n.Du=function(t){var e,A,P,r,i,D;if(i='<svg id=\"'+(t.g!=null?t.g:\"mol\"+n.zu)+K1+'xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" width=\"'+t.n+'px\" height=\"'+t.f+'px\" viewBox=\"0 0 '+t.n+\" \"+t.f+`\">\n`,D=t.i?\"<style> #\"+(t.g!=null?t.g:\"mol\"+n.zu)+\" { pointer-events:none; } #\"+(t.g!=null?t.g:\"mol\"+n.zu)+` .event  { pointer-events:all; } line { stroke-linecap:round; } polygon { stroke-linejoin:round; } </style>\n`:'<g style=\"font-size:'+t.k+'px; fill-opacity:1; stroke-opacity:1; fill:black; stroke:black; font-weight:normal; text-rendering:optimizeLegibility; font-family:sans-serif; stroke-linejoin:round; stroke-linecap:round; stroke-dashoffset:0;\">',i+=\"  \",i+=D,t.i){for(r=new y.rqb(t.b);r.a<r.c.a.length;)P=y.qqb(r),n.Eu(t,P);for(A=new y.rqb(t.a);A.a<A.c.a.length;)e=y.qqb(A),n.Eu(t,e)}return t.i||n.Eu(t,\"</g>\"),i+t.c.a+\"</svg>\"},n.Eu=function(t,e){T.Ijb(t.c,\"  \"),T.Ijb(t.c,e),T.Ijb(t.c,N1)},n.Fu=function(t,e,A){n._c(),n.de.call(this,t,e),n.Au(this),this.g=A,++n.zu},G(260,124,{124:1},n.Fu),U.pb=function(t){var e;e='<line x1=\"'+T.Jhb(C.kkb(C.gkb(new C.lkb(t.a),(C.tmb(),C.pmb))))+K1+'y1=\"'+T.Jhb(C.kkb(C.gkb(new C.lkb(t.c),C.pmb)))+K1+'x2=\"'+T.Jhb(C.kkb(C.gkb(new C.lkb(t.b),C.pmb)))+K1+'y2=\"'+T.Jhb(C.kkb(C.gkb(new C.lkb(t.d),C.pmb)))+K1+yr+this.d+K1+fP+this.j+DP,n.Eu(this,e)},U.qb=function(t){var e,A;e=T.Jhb(C.kkb(C.gkb(new C.lkb(3*this.j),(C.tmb(),C.pmb)))),A='<line stroke-dasharray=\"'+e+\",\"+e+K1+'x1=\"'+T.Jhb(C.kkb(C.gkb(new C.lkb(t.a),C.pmb)))+K1+'y1=\"'+T.Jhb(C.kkb(C.gkb(new C.lkb(t.c),C.pmb)))+K1+'x2=\"'+T.Jhb(C.kkb(C.gkb(new C.lkb(t.b),C.pmb)))+K1+'y2=\"'+T.Jhb(C.kkb(C.gkb(new C.lkb(t.d),C.pmb)))+K1+yr+this.d+K1+\"stroke-width:\"+this.j+DP,n.Eu(this,A)},U.rb=function(t){var e,A;for(A=new T.Mjb('<polygon points=\"'),e=0;e<t.a;e++)T.Gjb(A,h1(k.Math.round(t.b[e]))),A.a+=\",\",T.Gjb(A,h1(k.Math.round(t.c[e]))),A.a+=\" \";T.Ijb(A,'\" fill=\"'+this.d+K1+yr+this.d+K1+fP+this.j+DP),n.Eu(this,A.a)},U.sb=function(t,e,A){var P,r,i,D;i=(P=(D=m1.Ffb(this.e,t),new c0.Zfb(D)).b,P),r='<text x=\"'+T.Jhb(C.kkb(C.gkb(new C.lkb(e-i/2),(C.tmb(),C.pmb))))+K1+'y=\"'+T.Jhb(C.kkb(C.gkb(new C.lkb(A+this.k/3),C.pmb)))+K1+'stroke=\"none\" font-size=\"'+this.e.b+K1+'fill=\"'+this.d+'\">'+t+\"</text>\",n.Eu(this,r)},U.tb=function(t,e,A){var P;P='<circle cx=\"'+T.Jhb(C.kkb(C.gkb(new C.lkb(t+A/2),(C.tmb(),C.pmb))))+K1+'cy=\"'+T.Jhb(C.kkb(C.gkb(new C.lkb(e+A/2),C.pmb)))+K1+'r=\"'+T.Jhb(C.kkb(C.gkb(new C.lkb(A/2),C.pmb)))+K1+'fill=\"'+this.d+DP,n.Eu(this,P)},U.ub=function(t){return n.Bu(this,t)},U.vb=function(){return n.Cu(this)},U.xb=function(t,e,A,P){var r,i;r=n.Gl(this.L,t),i='<circle id=\"'+(this.g!=null?this.g:\"mol\"+n.zu)+\":Atom:\"+t+K1+_8+(r==0?\"\":'data-atom-map-no=\"'+r+K1)+'cx=\"'+T.Jhb(C.kkb(C.gkb(new C.lkb(A),(C.tmb(),C.pmb))))+K1+'cy=\"'+T.Jhb(C.kkb(C.gkb(new C.lkb(P),C.pmb)))+K1+'r=\"8'+K1+$8,y.pj(this.a,i)},U.yb=function(t,e,A,P,r){var i;i='<line id=\"'+(this.g!=null?this.g:\"mol\"+n.zu)+\":Bond:\"+t+K1+_8+'x1=\"'+T.Jhb(C.kkb(C.gkb(new C.lkb(e),(C.tmb(),C.pmb))))+K1+'y1=\"'+T.Jhb(C.kkb(C.gkb(new C.lkb(A),C.pmb)))+K1+'x2=\"'+T.Jhb(C.kkb(C.gkb(new C.lkb(P),C.pmb)))+K1+'y2=\"'+T.Jhb(C.kkb(C.gkb(new C.lkb(r),C.pmb)))+K1+fP+8+K1+$8,y.pj(this.b,i)},U.zb=function(t){this.j=nn(h1(k.Math.round(100*k.Math.max(t,1))))/100},U.Ab=function(t){this.d=\"rgb(\"+((t&X0)>>16)+\",\"+((t&J0)>>8)+\",\"+(t&255)+\")\"},U.Bb=function(t){this.k!=t&&(this.k=t,this.e=new m1.Hfb(t))},U.Cb=function(t,e){return this.n=Gt(h1(k.Math.round(t.b))),this.f=Gt(h1(k.Math.round(t.a))),n.$d(this,t,e)},U.ob=function(){return n.Du(this)},U.f=0,U.i=!1,U.j=0,U.k=0,U.n=0,n.zu=0,l.P7=O(260),n.Uu=function(t,e){var A;if(t.c!=null){for(A=0;A<t.c.length;A++)if(e==t.c[A]&&t.d[A])return!0}return!1},n.Vu=function(t,e,A,P,r){this.a=t,this.b=e,this.g=A,this.f=P,this.e=r},G(183,1,{183:1},n.Vu),U.a=0,U.b=0,U.e=!1,U.f=!1,U.g=0,l.T7=O(183),n.Wu=function(t,e){!t.b&&(t.b=new lt.Z3),lt.T3(t.b,T.pib(e))},n.Xu=function(t,e,A,P){var r,i,D,u,o,Q;if(r=n.Rk(e,t.d),n.en(e,r,t.e),n.nn(e,r,t.o,!1),n.cn(e,r,t.a),jt(t.c,0)&&(jt(Z(t.c,2),0)?(t.c=Z(t.c,-3),e.u[r]|=n0):e.u[r]&=aA,n.rn(e,r,t.c,!0)),t.b){for(Q=d(l.Z6,H,6,t.b.d.a.length,15,1),o=0;o<t.b.d.a.length;o++)Q[o]=lt.V3(t.b,o).a;n.ln(e,r,Q),c.kzb(t.b.d.a,0)}else if(String.fromCharCode(A).toLowerCase().charCodeAt(0)==A&&T.$gb(A)){if(t.d!=5&&t.d!=6&&t.d!=7&&t.d!=8&&t.d!=15&&t.d!=16&&t.d!=33&&t.d!=34)throw Qt(new T.bC(\"SmilesParser: atomicNo \"+t.d+\" must not be aromatic. Position:\"+(P-1)));e.u[r]|=n0}else e.u[r]&=aA;if(t.f)for(u=new y.rqb(t.f);u.a<u.c.a.length;)D=y.qqb(u),t.r=!0,n.yn(D,0,0),n.Kn(e,!0),n._k(e,D,r);return t.g!=-1&&t.d!=1&&(i=d(l.V6,Y,6,1,15,1),i[0]=t.g<<24>>24,n.jn(e,r,i)),r},n.Yu=function(t,e){var A;for(A=0;e<t.length&&(t[e]!=93||A!=0);)t[e]==91?++A:t[e]==93&&--A,++e;if(e==t.length)throw Qt(new T.bC(\"SmilesParser: No matching closing bracket found.\"));return e+1},n.Zu=function(t,e,A){var P,r;if(e<3||(P=e-1,(t[P]==43||t[P]==45)&&--P,!a0(t[P]&r1))||(--P,t[P]!=68&&t[P]!=82&&t[P]!=88&&t[P]!=122))return!1;for(A[0]=0;P>0&&WD(t[P-1]);)--P,++A[0];for(r=e+1;WD(t[P]);){if(t.length<=r||t[P]!==t[r])return!1;++P,++r}return!0},n.$u=function(t,e,A,P,r,i){var D,u,o,Q,L,w,s,h,b,g,B,m,S,p,M,z;if(e[A-1]==36){if(t.r=!0,t.q=new y.Jj,A+=n.cv(t,e,A-1,t.q)-1,e[A++]!=93){if(!i)throw Qt(new T.bC(\"SmilesParser: A positive recursive SMARTS followed by another one or by atom query features is not supported. Position:\"+(A-1)));(t.k&128)==0&&(A=n.Yu(e,A))}return A}if(e[A-1]==42)t.d=6,t.c=Pt(t.c,1);else if(e[A-1]==63)t.d=0;else if(Q=e[A-1]==33,Q&&(t.r=!0,t.c=Pt(t.c,1),++A),e[A-1]==82&&r&&(a0(e[A]&r1)||t.j&&e[A]==123))t.d=6,t.c=Pt(t.c,1),--A,Q&&--A;else{if(L=new n.ev,!n._u(t,e,A-1,P,L))throw Qt(new T.bC(\"SmilesParser: Unexpected character in atom definition:'\"+String.fromCharCode(e[A-1]&r1)+a8+(A-1)));if(t.d=L.a,A+=L.b-1,(t.k&3)!=2&&(t.g=9),r&&(e[A]==44||Q)){for(h=L.d,s=L.c,p=A-L.b;p<P;){if(!n._u(t,e,p,P,L)){if(!Q)throw Qt(new T.bC(\"SmilesParser: Unexpected character in atom list:'\"+String.fromCharCode(e[p]&r1)+t9+p));break}if(L.a==1){if(!Q)throw Qt(new T.bC(\"SmilesParser: Hydrogen is not supported in positive atom lists:'\"+T.Yib((y.wqb(e,p,P),y.Bqb(e,d(l.V6,Y,6,P-p,15,1),p,P)))+t9+p))}else n.Wu(t,L.a),h=h|L.d,s=s|L.c;if(p+=L.b,Q&&e[p]!=59&&e[p]!=38||!Q&&e[p]!=44||Q&&e[p+1]!=33)break;++p,e[p]==33&&++p}t.b&&t.b.d.a.length>1&&(t.g=-1,s?h||(t.c=Pt(t.c,4)):t.c=Pt(t.c,2)),A=p}}for(g=new n.iv(e),m=d(l.Z6,H,6,1,15,1),S=!0;S;){if(e[A]==64){++A,e[A]==64&&(t.i=!0,++A),t.p=!0;continue}if(e[A]==58){for(++A;a0(e[A]&r1);)t.o=10*t.o+e[A]-48,++A;continue}if(e[A]==91)throw Qt(new T.bC(\"SmilesParser: nested square brackets found. Position:\"+A));if(e[A]==93){++A,S=!1;continue}if(t.e=n.bv(e,A,m),m[0]!=0){A+=m[0],t.e==0&&(t.c=Pt(t.c,PA));continue}if(o=e[A]==33,o&&++A,e[A]==72){++A,A+=n.fv(g,A,1),D=0,g.c<=0&&g.b>=0&&(D=Pt(D,128)),g.c<=1&&g.b>=1&&(D=Pt(D,256)),g.c<=2&&g.b>=2&&(D=Pt(D,512)),g.c<=3&&g.b>=3&&(D=Pt(D,r0)),o?(t.c=Pt(t.c,D),t.g=-1):g.b==g.c?t.g=g.c:(t.c=Pt(t.c,Z(K0,$0(D))),t.g=-1);continue}if(e[A]==68||e[A]==100){++A,A+=n.fv(g,A,1),D=0,g.c<=0&&g.b>=0&&(D=Pt(D,n0)),g.c<=1&&g.b>=1&&(D=Pt(D,Ue)),g.c<=2&&g.b>=2&&(D=Pt(D,Le)),g.c<=3&&g.b>=3&&(D=Pt(D,je)),g.c<=4&&g.b>=4&&(D=Pt(D,m0)),et(D,0)!=0&&(o?t.c=Pt(t.c,D):jt(Z(t.c,$e),0)?t.c=Z(t.c,$0(D)):(D=An(D,$e),t.c=Pt(t.c,D)));continue}if(e[A]==122&&t.j){++A,A+=n.fv(g,A,4),D=0,g.c<=0&&g.b>=0&&(D=Pt(D,Rn)),g.c<=1&&g.b>=1&&(D=Pt(D,e9)),g.c<=2&&g.b>=2&&(D=Pt(D,n9)),g.c<=3&&g.b>=3&&(D=Pt(D,A9)),g.c<=4&&g.b>=4&&(D=Pt(D,fA)),et(D,0)!=0&&(o?t.c=Pt(t.c,D):jt(Z(t.c,Ln),0)?t.c=Z(t.c,$0(D)):(D=An(D,Ln),t.c=Pt(t.c,D)));continue}if(e[A]==88){if(++A,A+=n.fv(g,A,1),z=(n.Ok(),n.Jk)[t.d],z==null)continue;M=z[0],w=n.bv(e,A,m),m[0]!=0&&(n.mo(t.d)?M+=w:t.d==6?M-=k.Math.abs(w):M-=w),D=0,M-g.c<=0&&M-g.b>=0&&(D=Pt(D,E0)),M-g.c<=1&&M-g.b>=1&&(D=Pt(D,Ge)),M-g.c<=2&&M-g.b>=2&&(D=Pt(D,z1)),et(D,0)!=0&&(o?t.c=Pt(t.c,D):jt(Z(t.c,_e),0)?t.c=Z(t.c,$0(D)):(D=An(D,_e),t.c=Pt(t.c,D)));continue}if(e[A]==65||e[A]==97){t.c=Pt(t.c,o^e[A]==65?4:2),++A;continue}if(e[A]==82){++A,A+=n.fv(g,A,3),D=0,g.c<=0&&g.b>=0&&(D=Pt(D,8)),g.c<=1&&g.b>=1&&(D=Pt(D,16)),g.c<=2&&g.b>=2&&(D=Pt(D,32)),g.c<=3&&g.b>=3&&(D=Pt(D,64)),g.b>3&&n.Gv(t.n,(o?\"!R\":\"R\")+g.b),et(D,0)!=0&&(o?t.c=Pt(t.c,D):jt(Z(t.c,120),0)?t.c=Z(t.c,$0(D)):(D=An(D,120),t.c=Pt(t.c,D)));continue}if(e[A]==114){if(++A,A+=n.fv(g,A,1),g.a){o?t.c=Pt(t.c,384):t.c=Pt(t.c,8);continue}B=g.c,g.b>g.c&&n.Gv(t.n,(o?\"!r\":\"r\")+(\"{\"+g.c+\"-\"+g.b+\"}\")),!o&&B>=3&&B<=7?t.c=Pt(t.c,l.Ieb(B<<22)):g.b>g.c||n.Gv(t.n,(o?\"!r\":\"r\")+B);continue}if(e[A]==118){++A,A+=n.fv(g,A,1),M=g.c,g.b>g.c&&n.Gv(t.n,(o?\"!v\":\"v\")+(\"{\"+g.c+\"-\"+g.b+\"}\")),!o&&M<=14?t.a=M:g.b>g.c||n.Gv(t.n,(o?\"!v\":\"v\")+M);continue}if(e[A]==94){if(++A,u=e[A++]-48,u<1||u>3)throw Qt(new T.bC(\"SmilesParser: Unsupported hybridization. Position:\"+A));b=u==1?z1:u==2?Ge:E0,o||(b=Z(_e,$0(b))),t.c=Pt(t.c,b);continue}if(e[A]==36){if(!o)throw Qt(new T.bC(\"SmilesParser: non-negated recursive SMARTS relating to preceding atom are not supported yet. Position:\"+A));!t.f&&(t.f=new y.Jj),t.r=!0,A+=n.cv(t,e,A,t.f);continue}if(r&&(e[A]==59||e[A]==38)){t.r=!0,++A;continue}if(r&&e[A]==44&&n.Zu(e,A,m)){t.r=!0,A+=m[0]+1;continue}if(r&&e[A]==44&&(t.k&128)!=0){t.r=!0,A+=1;break}throw e[A]==44?Qt(new T.bC(\"SmilesParser: alternative atom definitions not supported. (Tip: enumerate SMARTS): '\"+String.fromCharCode(e[A]&r1)+wr+A)):Qt(new T.bC(\"SmilesParser: unexpected character inside brackets: '\"+String.fromCharCode(e[A]&r1)+wr+A))}return A},n._u=function(t,e,A,P,r){var i,D;if(r.d=!0,r.c=!0,e[A]==35){for(++A,t.r=!0,r.a=0,r.b=1;A<P&&a0(e[A]&r1);)r.a=10*r.a+e[A]-48,++r.b,++A;if(r.a==0||r.a>=(n.Ok(),n.Ik).length)throw Qt(new T.bC(\"SmilesParser: Atomic number out of range. position:\"+(A-1)));return!0}if(e[A]>=65&&e[A]<=90){if(r.b=e[A+1]>=97&&e[A+1]<=122?2:1,r.a=(n.Ok(),n.lo(T.wjb(c.qzb(e,A,(D=r.b,V1.Cmb(),D))),321)),r.b==2&&r.a==0&&(r.b=1,r.a=n.lo(T.wjb(c.qzb(e,A,(i=r.b,i))),321)),r.d=!1,r.a==0)throw Qt(new T.bC(\"SmilesParser: Unknown atom label. position:\"+(A-1)));return!0}return e[A]==65&&e[A+1]==115||e[A]==83&&e[A+1]==101?(r.b=2,r.a=(n.Ok(),n.lo(T.wjb(c.qzb(e,A,(i=r.b,V1.Cmb(),i))),321)),r.c=!1,!0):e[A]==99||e[A]==110||e[A]==111||e[A]==112||e[A]==115?(r.b=1,r.a=(n.Ok(),n.lo(T.wjb(c.qzb(e,A,(i=r.b,V1.Cmb(),i))),321)),r.c=!1,!0):!1},n.av=function(t,e,A,P,r){if(e[A-1]==42)t.d=6,t.c=Pt(t.c,1);else if(e[A-1]==63)t.d=0;else if((e[A-1]==65||e[A-1]==97)&&r)t.d=6,t.c=Pt(t.c,1),t.c=Pt(t.c,e[A-1]==65?4:2),t.r=!0;else switch(String.fromCharCode(e[A-1]).toUpperCase().charCodeAt(0)){case 66:A<P&&e[A]==114?(t.d=35,++A):t.d=5;break;case 67:A<P&&e[A]==108?(t.d=17,++A):t.d=6;break;case 70:t.d=9;break;case 73:t.d=53;break;case 78:t.d=7;break;case 79:t.d=8;break;case 80:t.d=15;break;case 83:t.d=16}return A},n.bv=function(t,e,A){var P,r;if(A[0]=0,t[e]==43||t[e]==45){for(r=t[e],P=1,++A[0];t[e+A[0]]==r;)++P,++A[0];return P==1&&a0(t[e+1]&r1)&&(P=t[e+1]-48,++A[0]),r==43?P:-P}return 0},n.cv=function(t,e,A,P){var r,i,D,u,o;if(e[A+1]!=40)throw Qt(new T.bC(\"SmilesParser: '$' for recursive SMARTS must be followed by '('. position:\"+A));for(u=1,i=A+2;i<e.length&&u>0;)e[i]==40?++u:e[i]==41&&--u,++i;if(u>0)throw Qt(new T.bC(\"SmilesParser: Missing closing ')' for recursive SMARTS. '('-position:\"+(A+1)));if(D=new n.tw(16,16),o=new n.Iv(t.k),n.Ev(o,t.n.f),n.wv(o,D,e,A+2,i-1,!0,!0),n.Kn(D,!0),c.izb(P.a,D),e[A-1]==33)for(r=0;r<D.q;r++)n.rn(D,r,P0,!0);return i-A},n.dv=function(t,e){this.n=t,this.k=e,this.j=(e&16)==0,this.d=-1,this.e=0,this.o=0,this.a=-1,this.g=-1,this.c=0},G(284,1,{},n.dv),U.a=0,U.c=0,U.d=0,U.e=0,U.g=0,U.i=!1,U.j=!1,U.k=0,U.o=0,U.p=!1,U.r=!1,l.S7=O(284),n.ev=function(){this.a=-1},G(363,1,{},n.ev),U.a=0,U.b=0,U.c=!1,U.d=!1,l.Q7=O(363),n.fv=function(t,e,A){var P,r,i,D,u;if(t.a=!1,t.d=e,a0(t.e[e]&r1)){for(u=n.gv(t),t.c=t.b=u,P=e-1;P>1&&Yu(t.e[P-1]);)--P;for(;t.e[t.d]==44;){for(D=!0,i=e-P,r=0;r<i;r++)if(t.e[P+r]!==t.e[t.d+1+r]){D=!1;break}if(!D)break;t.d+=1+i,u=n.gv(t),t.c>u?t.c=u:t.b<u&&(t.b=u)}return t.d-e}return t.e[e]==123&&a0(t.e[e+1]&r1)?(++t.d,t.c=n.gv(t),t.e[t.d++]!=45||!a0(t.e[t.d]&r1)||(t.b=n.gv(t),t.e[t.d++]!=125)?0:t.d-e):(t.c=1,t.b=A,t.a=!0,0)},n.gv=function(t){var e;return e=t.e[t.d++]-48,a0(t.e[t.d]&r1)&&(e=10*e+(t.e[t.d++]-48)),e},n.hv=function(t){return\"{\"+t.c+\"-\"+t.b+\"}\"},n.iv=function(t){this.e=t},G(364,1,{},n.iv),U.ob=function(){return n.hv(this)},U.a=!1,U.b=0,U.c=0,U.d=0,l.R7=O(364),n.kv=function(t,e){var A,P,r,i;for(i=!1,t.b=e,n.aw(t.b,15),A=t.b.f,P=t.b.g,t.j=d(l.teb,wt,6,P,16,1),r=0;r<P;++r)t.j[r]=!1;for(t.g=d(l.teb,wt,6,A,16,1),t.c=d(l.Z6,H,6,A,15,1),r=0;r<A;++r)t.g[r]=!1,t.c[r]=-1;for(t.e=d(l.Nbb,yt,2,3*A,6,1),t.i=0,t.d=0,t.a=0;!i;){for(r=0;r<A;++r)if(!t.g[r]){t.a>0&&(t.e[t.i++]=\".\"),n.mv(t,r,-1),++t.a;break}r==A&&(i=!0)}for(t.f=\"\",r=0;r<t.i;++r)t.f+=\"\"+t.e[r];return t.f},n.lv=function(t){switch(t){case 5:case 6:case 7:case 8:case 9:case 15:case 16:case 17:case 35:case 53:return!0;default:return!1}},n.mv=function(t,e,A){var P,r,i,D,u,o,Q,L,w,s,h,b,g;if(P=!0,o=0,g=0,s=t.i,t.c[e]=s,u=n.Ol(t.b,e),D=n.Dl(t.b,e),r=n.xl(t.b,e),i=n.Hl(t.b,e),L=n.Wo(t.b,e),r==0&&i==0&&n.lv(u)&&(P=!1),t.e[s]=\"\",A!=-1)switch(n.am(t.b,A)){case 0:t.e[s]+=\"~\";break;case 2:t.e[s]+=\"=\";break;case 3:t.e[s]+=\"#\"}for(P&&(t.e[s]+=\"[\"),i!=0&&(t.e[s]+=\"\"+i),t.e[s]+=\"\"+D,P&&0<(b=n.kp(t.b,e))&&(t.e[s]+=\"H\",1<b&&(t.e[s]+=b)),r!=0&&(r>0?t.e[s]+=\"+\":t.e[s]+=\"-\",k.Math.abs(r)>1&&(t.e[s]+=\"\"+k.Math.abs(r))),P&&(t.e[s]+=\"]\"),A!=-1&&(t.j[A]=!0),t.g[e]=!0,++t.i,h=0;h<L;++h)t.j[n.Xo(t.b,e,h)]||++o;for(h=0;h<L;++h){if(Q=n.Vo(t.b,e,h),w=n.Xo(t.b,e,h),t.j[w]){++g;continue}if(t.g[Q]){switch(++t.d,t.j[w]=!0,n.am(t.b,w)){case 0:t.e[t.c[Q]]+=\"~\",t.e[s]+=\"~\";break;case 2:t.e[t.c[Q]]+=\"=\",t.e[s]+=\"=\";break;case 3:t.e[t.c[Q]]+=\"#\",t.e[s]+=\"3\"}t.d>9&&(t.e[t.c[Q]]+=\"%\",t.e[s]+=\"%\"),t.e[t.c[Q]]+=\"\"+t.d,t.e[s]+=\"\"+t.d;continue}h-g<o-1&&(t.e[t.i++]=\"(\"),n.mv(t,Q,w),h-g<o-1&&(t.e[t.i++]=\")\")}},n.nv=function(){},G(259,1,{},n.nv),U.a=0,U.d=0,U.i=0,l.U7=O(259),n.ov=function(t,e,A,P,r,i){var D;return D=n.Tk(t.k,e,A,P),y.rnb(t.s,e+\"_\"+A,v(F(l.Z6,1),H,6,15,[r,i])),y.rnb(t.s,A+\"_\"+e,v(F(l.Z6,1),H,6,15,[r,i])),y.qrb(t.a,e),y.qrb(t.a,A),D},n.pv=function(t,e){var A,P,r,i,D,u,o,Q,L,w,s,h,b;for(Q=d(l.Z6,H,6,t.k.f,15,1),u=d(l.Z6,H,6,t.k.f,15,1),o=d(l.Z6,H,6,t.k.f,15,1),L=d(l.Z6,H,6,t.k.f,15,1),A=n.Ul(t.k,0,e),P=n.Ul(t.k,1,e),u[0]=A,u[1]=P,o[0]=-1,o[1]=e,Q[A]=1,Q[P]=2,L[A]=-1,L[P]=A,D=1,w=1;D<=w&&Q[u[D]]<15;){for(b=u[D],s=0;s<n.Wo(t.k,b);s++)if(r=n.Vo(t.k,b,s),r!=L[b]){if(i=n.Xo(t.k,b,s),r==A){for(o[0]=i,h=0;h<=w;h++)t.g[o[s]]||(t.g[o[s]]=!0,++t.c);return}n.Gm(t.k,r)&&Q[r]==0&&(++w,u[w]=r,o[w]=i,Q[r]=Q[b]+1,L[r]=b)}++D}},n.qv=function(t){var e,A,P,r,i,D,u,o,Q,L,w,s,h;for(n.aw(t.k,7),w=!1,s=d(l.Z6,H,6,2,15,1),h=d(l.Z6,H,6,2,15,1),L=d(l.Z6,H,6,2,15,1),P=0;P<t.k.g;P++)if(!n.fq(t.k,P)&&n.dm(t.k,P)==2){for(D=0;D<2;D++){for(s[D]=-1,L[D]=-1,e=n.Ul(t.k,D,P),Q=0;Q<n.Wo(t.k,e);Q++)r=n.Xo(t.k,e,Q),r!=P&&(s[D]==-1&&(n.dm(t.k,r)==257||n.dm(t.k,r)==129)?(s[D]=n.Vo(t.k,e,Q),h[D]=r):L[D]=n.Vo(t.k,e,Q));if(s[D]==-1)break}if(s[0]!=-1&&s[1]!=-1){for(o=n.dm(t.k,h[0])==n.dm(t.k,h[1]),u=0;u<2;u++)s[u]==n.Ul(t.k,0,h[u])&&(o=!o);for(i=0;i<2;i++)L[i]!=-1&&L[i]<s[i]&&(o=!o);n.Fn(t.k,P,o?2:1,!1),w=!0}}for(A=0;A<t.k.g;A++)(n.dm(t.k,A)==257||n.dm(t.k,A)==129)&&n.In(t.k,A,1);return w},n.rv=function(t){return t==61?2:t==35?4:t==36?32:t==58?8:t==62?16:t==126?127:1},n.sv=function(t,e){var A,P,r,i,D,u,o,Q,L,w,s;for(A=0;A<t.k.f;A++)if(n.Gm(t.k,A))for(o=d(l.Z6,H,6,t.k.f,15,1),u=d(l.Z6,H,6,t.k.f,15,1),Q=d(l.Z6,H,6,t.k.f,15,1),u[0]=A,o[A]=1,Q[A]=-1,D=0,L=0;D<=L;){for(r=(o[u[D]]&1)==1?1:2,w=0;w<n.Wo(t.k,u[D]);w++)if(P=n.Xo(t.k,u[D],w),n.am(t.k,P)==r&&e[P]&&(i=n.Vo(t.k,u[D],w),o[i]==0)){if(r==1&&n.Gm(t.k,i)){for(s=u[D];s!=-1;)n.In(t.k,n.To(t.k,i,s),r==1?2:1),r=3-r,i=s,s=Q[s];return n.on(t.k,A,!1),n.on(t.k,i,!1),t.b-=2,!0}u[++L]=i,Q[i]=u[D],o[i]=o[u[D]]+1}++D}return!1},n.tv=function(t){var e,A,P,r;for(e=0;e<t.k.f;e++)if(n.Ol(t.k,e)==7&&n.xl(t.k,e)==0&&n.rp(t.k,e)>3&&n.Mo(t.k,e)>0){for(r=0;r<n.Wo(t.k,e);r++)if(A=n.Vo(t.k,e,r),P=n.Xo(t.k,e,r),n.am(t.k,P)>1&&n.Dm(t.k,A)){n.dm(t.k,P)==4?n.In(t.k,P,2):n.In(t.k,P,1),n.en(t.k,e,n.xl(t.k,e)+1),n.en(t.k,A,n.xl(t.k,A)-1),n.cn(t.k,e,-1);break}}},n.uv=function(t){return t.r?\"Unresolved SMARTS features:\"+t.r:\"\"},n.vv=function(t,e,A){var P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S,p,M,z,q,x,J,E,N,ft,Lt,ot,st,ut,rt,Ut,ht,it,bt,ct,$t,Ft,Rt,Et,Nt;for(n.aw(t.k,1),t.g=d(l.teb,wt,6,t.k.g,16,1),t.c=0,w=0;w<t.k.g;w++)n.dm(t.k,w)==8&&(n.In(t.k,w,1),t.g[w]=!0,++t.c);for(p=d(l.teb,wt,6,t.k.f,16,1),Nt=new n.zt(t.k,3),S=d(l.teb,wt,6,Nt.i.a.length,16,1),$t=0;$t<Nt.i.a.length;$t++){for(Rt=y.uj(Nt.i,$t),S[$t]=!0,x=Rt,N=0,ot=x.length;N<ot;++N)if(z=x[N],!n.Gm(t.k,z)){S[$t]=!1;break}if(S[$t]){for(J=Rt,ft=0,st=J.length;ft<st;++ft)z=J[ft],p[z]=!0;for(Et=y.uj(Nt.j,$t),q=Et,E=0,Lt=q.length;E<Lt;++E)z=q[E],t.g[z]||(t.g[z]=!0,++t.c)}}for(s=0;s<t.k.g;s++)!t.g[s]&&(Nt.b[s]&r1)!=0&&n.Gm(t.k,n.Ul(t.k,0,s))&&n.Gm(t.k,n.Ul(t.k,1,s))&&n.pv(t,s);for(h=0;h<t.k.g;h++)t.g[h]||(i=n.Ul(t.k,0,h),D=n.Ul(t.k,1,h),!p[i]&&!p[D]&&n.Gm(t.k,i)&&n.Gm(t.k,D)&&(t.g[h]=!0,++t.c));for(n.aw(t.k,7),(t.q==2||t.q==1&&t.p)&&n.Cv(t),m=d(l.teb,wt,6,t.k.g,16,1),t.k.g>=0&&T.Qjb(t.g,0,m,0,t.k.g),Ft=0;Ft<Nt.i.a.length;Ft++)if(S[Ft]){for(Rt=y.uj(Nt.i,Ft),rt=Rt,Ut=0,ht=rt.length;Ut<ht;++Ut)if(ut=rt[Ut],!n.Dv(t,ut))for(n.Gm(t.k,ut)&&(n.on(t.k,ut,!1),--t.b),z=0;z<n.Wo(t.k,ut);z++)g=n.Xo(t.k,ut,z),t.g[g]&&(t.g[g]=!1,--t.c)}for(n.Bv(t),ct=0;ct<Nt.i.a.length;ct++)if(S[ct]&&y.uj(Nt.j,ct).length==6){for(Et=y.uj(Nt.j,ct),M=!0,o=Et,Q=0,L=o.length;Q<L;++Q)if(u=o[Q],!t.g[u]){M=!1;break}M&&(n.Av(t,Et[0]),n.Av(t,Et[2]),n.Av(t,Et[4]),n.Bv(t))}for(bt=5;bt>=4;bt--)do for(it=!1,u=0;u<t.k.g;u++)if(t.g[u]){for(P=0,B=0;B<2;B++)for(b=n.Ul(t.k,B,u),z=0;z<n.Wo(t.k,b);z++)t.g[n.Xo(t.k,b,z)]&&++P;if(P==bt){n.Av(t,u),n.Bv(t),it=!0;break}}while(it);for(;t.b>=2&&n.sv(t,m););if(e){if(t.b!=0)for(r=0;r<t.k.f;r++)n.Gm(t.k,r)&&(n.on(t.k,r,!1),n.rn(t.k,r,2,!0),--t.b,A=!0);if(t.c!=0)for(u=0;u<t.k.g;u++)t.g[u]&&(t.g[u]=!1,n.In(t.k,u,8),--t.c,A=!0)}else for(r=0;r<t.k.f;r++)n.Gm(t.k,r)&&n.kp(t.k,r)!=0&&(n.on(t.k,r,!1),n.sn(t.k,r,32),--t.b);if(t.q==0||t.q==1&&!A){if(t.b!=0)throw Qt(new T.bC(P9));if(t.c!=0)throw Qt(new T.bC(P9))}},n.wv=function(t,e,A,P,r,i,D){var u,o,Q,L,w,s,h,b,g,B,m,S,p,M,z,q,x,J,E,N,ft,Lt,ot,st,ut,rt,Ut,ht,it,bt,ct,$t,Ft,Rt,Et,Nt,It,vt,kt,L1,f1,St,Xt,k1,qt,P1,E1,y1,o1,I1,O1;for(t.k=e,n.$v(t.k),t.s=new y.ptb,t.a=new y.rrb,t.r&&T.ugb(t.r,0),t.b=0,t.p=!1,Q=t.q!=0,Et=null,b=d(l.Z6,H,6,32,15,1),b[0]=-1,L1=d(l.Z6,H,6,16,15,1),Xt=d(l.Z6,H,6,16,15,1),St=d(l.Z6,H,6,16,15,1),f1=d(l.Z6,H,6,16,15,1),ut=0;ut<16;ut++)L1[ut]=-1;for(s=0,E=-1,k1=!1,Ut=!1,Lt=!1,p=0,m=1,B=0;A[P]<=32;)++P;for(;P<r;){if(qt=A[P++]&r1,T.$gb(qt)||qt==42||qt==63||qt==33&&Q&&k1||qt==35&&Q&&k1||qt==36&&Q&&k1){if(h=new n.dv(t,t.j|t.q),k1)if((t.j&128)!=0){if(q=new n.Kv(P-1),P=n.$u(h,A,P,r,!0,!0),A[P-1]!=93){for(;A[P-1]!=93;)P=n.$u(h,A,P+1,r,!0,!0),++q.a;t.f.add(q)}}else P=n.$u(h,A,P,r,Q,!1);else P=n.av(h,A,P,r,Q);if(k1=!1,h.q&&y.uj(h.q,0)){E=b[p],b[p]=e.q,n.Uk(e,h.q?y.uj(h.q,0):null),E!=-1&&m!=512&&(g=n.Tk(t.k,E,E,m),B!=0&&(t.p=!0,n.Hn(t.k,g,B,!0),n.Pk(t.k,g))),m=1,B=0;continue}if(h.d==-1&&qt!=63)throw Qt(new T.bC(\"SmilesParser: unknown element label found. Position:\"+(P-1)));h.r&&(t.p=!0),w=n.Xu(h,t.k,qt,P),n.Gm(t.k,w)&&++t.b,E=b[p],E!=-1&&m!=512&&(g=n.Tk(t.k,E,w,m),B!=0&&(t.p=!0,n.Hn(t.k,g,B,!0),n.Pk(t.k,g))),m=1,B=0,b[p]=w,s!=0&&(n.pn(t.k,w,s),s=0),D&&(Ft=Et?y.epb(Et,T.pib(E)):null,Ft&&n.Mv(Ft,w,(ht=P,h.d==1&&n.Hl(t.k,w)==0,ht)),h.p&&(!Et&&(Et=new y.Xvb),ot=h.g==9?0:h.g,y.Pvb(Et,T.pib(w),new n.Sv(t,w,P-2,E,ot,h.i))));continue}if(qt==46){b[p]=-1,m=512;continue}if(qt==45||qt==61||qt==35||qt==36||qt==58||qt==47||qt==92||qt==60||qt==126||qt==33||qt==64){if(k1)throw Qt(new T.bC(\"SmilesParser: unexpected bond symbol inside square brackets: '\"+String.fromCharCode(qt)+wr+(P-1)));for(x=0;qt==45||qt==61||qt==35||qt==36||qt==58||qt==47||qt==92||qt==60||qt==126||qt==33||qt==64;){if(qt==33)if(qt=A[P++]&r1,qt==64)B|=128;else if(qt==45&&A[P]==62||qt==60&&A[P]==45)x|=16,++P;else if(qt==45)x|=1;else if(qt==61)x|=2;else if(qt==35)x|=4;else if(qt==36)x|=32;else if(qt==58)x|=8;else throw Qt(new T.bC(\"SmilesParser: bond symbol '\"+String.fromCharCode(qt)+\"' not allowed after '!'. Position:\"+(P-1)));else if(qt==64?B|=256:qt==61?m=2:qt==35?m=4:qt==36?m=32:qt==58?m=8:qt==126?B|=15:qt==47?D&&(m=257):qt==92?D&&(m=129):(qt==45&&A[P]==62||qt==60&&A[P]==45)&&(m=16,++P),A[P]==44)for(B|=(m==16?62:qt)==61?2:(m==16?62:qt)==35?4:(m==16?62:qt)==36?32:(m==16?62:qt)==58?8:(m==16?62:qt)==62?16:(m==16?62:qt)==126?127:1;A[P]==44;)A[P+1]==60&&A[P+2]==45||A[P+1]==45&&A[P+2]==62?(B|=16,P+=3):(B|=n.rv(A[P+1]&r1),P+=2);if(A[P]==59){++P,qt=A[P++]&r1;continue}x!=0&&(B|=127&~x);break}continue}if(qt<=32){P=r;continue}if(a0(qt)){if(bt=qt-48,k1){for(;P<r&&a0(A[P]&r1);)bt=10*bt+A[P]-48,++P;s=bt}else{if(S=Ut?P-3:P-2,ft=A[S]==45||A[S]==47||A[S]==92||A[S]==61||A[S]==35||A[S]==36||A[S]==58||A[S]==62||A[S]==126,Ut&&P<r&&a0(A[P]&r1)&&(bt=10*bt+A[P]-48,Ut=!1,++P),bt>=L1.length){if(bt>=100)throw Qt(new T.bC(\"SmilesParser: ringClosureAtom number out of range: \"+bt));for(ct=L1.length,it=L1.length;it<=bt;)it=k.Math.min(100,it+16);for(L1=(c.Czb(it),y.Bqb(L1,d(l.Z6,H,6,it,15,1),0,it)),Xt=(c.Czb(it),y.Bqb(Xt,d(l.Z6,H,6,it,15,1),0,it)),St=(c.Czb(it),y.Bqb(St,d(l.Z6,H,6,it,15,1),0,it)),f1=(c.Czb(it),y.Bqb(f1,d(l.Z6,H,6,it,15,1),0,it)),st=ct;st<it;st++)L1[st]=-1}if(L1[bt]==-1)L1[bt]=b[p],Xt[bt]=P-1,St[bt]=ft?m:-1,f1[bt]=ft?B:0;else{if(L1[bt]==b[p])throw Qt(new T.bC(\"SmilesParser: ring closure to same atom\"));D&&Et&&(Ft=y.epb(Et,T.pib(L1[bt])),Ft&&n.Mv(Ft,b[p],Xt[bt]),Ft=y.epb(Et,T.pib(b[p])),Ft&&n.Mv(Ft,L1[bt],P-1)),St[bt]!=-1?m=St[bt]:m==257?m=129:m==129&&(m=257),u=L1[bt],o=b[p],g=n.ov(t,u,o,m,Xt[bt],P-1),f1[bt]!=0&&(B=f1[bt]),B!=0&&(t.p=!0,n.Hn(t.k,g,f1[bt],!0),n.Pk(t.k,g)),L1[bt]=-1}m=1,B=0}continue}if(qt==43)throw Qt(new T.bC(\"SmilesParser: '+' found outside brackets. Position:\"+(P-1)));if(qt==40){if(b[p]==-1){Lt=!0;continue}++p,b.length==p&&(b=y.zqb(b,b.length+32)),b[p]=b[p-1];continue}if(qt==41){if(p==0){if(!Lt)throw Qt(new T.bC(\"SmilesParser: Closing ')' without opening counterpart. Position:\"+(P-1)));b[0]=-1,Lt=!1;continue}--p;continue}if(qt==91){k1=!0;continue}if(qt==93)throw Qt(new T.bC(\"SmilesParser: closing bracket at unexpected position:\"+(P-1)));if(qt==37){Ut=!0;continue}throw Qt(new T.bC(\"SmilesParser: unexpected character outside brackets: '\"+String.fromCharCode(qt)+a8+(P-1)))}if(m!=1)throw Qt(new T.bC(\"SmilesParser: dangling open bond\"));for(It=L1,vt=0,kt=It.length;vt<kt;++vt)if(Nt=It[vt],Nt!=-1)throw Qt(new T.bC(\"SmilesParser: dangling ring closure.\"));for(N=n.hp(t.k),n.Mn(t.k,!0),n.aw(t.k,1),L=0;L<t.k.q;L++)if(n.zl(t.k,L)!=null)if(J=n.Al(t.k,L)[0],t.p||t.q==2){if(J!=9)if(t.i)for(st=0;st<J;st++)n.Tk(t.k,L,n.Rk(t.k,1),1);else J==0&&n.rn(t.k,L,1792,!0),J==1&&n.rn(t.k,L,1664,!0),J==2&&n.rn(t.k,L,1408,!0),J==3&&n.rn(t.k,L,896,!0)}else{if(J==9&&(J=0),!n.Hm(t.k,L)&&(!n.Gm(t.k,L)||n.Ol(t.k,L)==6&&n.xl(t.k,L)==0)){for(O1=n.io(n.Ol(t.k,L)),M=!1,P1=n.rp(t.k,L),P1-=n.im(t.k,L,P1),P1+=J,n.Gm(t.k,L)&&++P1,y1=O1,o1=0,I1=y1.length;o1<I1;++o1)if(E1=y1[o1],P1<=E1){M=!0,E1==P1+2?n.sn(t.k,L,48):E1==P1+1?n.sn(t.k,L,32):(E1!=P1||E1!=O1[0])&&n.cn(t.k,L,P1);break}M||n.cn(t.k,L,P1)}if(t.i||!n.wq(t.k,L))for(st=0;st<J;st++)n.Tk(t.k,L,n.Rk(t.k,1),1)}else!t.i&&(t.p||t.q==2)&&(J=n.$o(t.k,L),J>=1&&n.rn(t.k,L,128,!0),J>=2&&n.rn(t.k,L,256,!0),J>=3&&n.rn(t.k,L,512,!0),J>=4&&n.rn(t.k,L,r0,!0));if(!t.i&&(t.p||t.q==2)&&n.mq(t.k,!1),n.aw(t.k,1),n.tv(t),n.vv(t,Q,t.p),t.k.t=null,n.Mn(t.k,!1),D&&(n.qv(t),Et)){for(Rt=($t=new y.Eob(Et).a.ad().Sb(),new y.Lob($t));Rt.a.cd();)Ft=(z=Rt.a.dd(),z.gd()),n.qn(t.k,N[Ft.a],n.Nv(Ft,N),!1);n.rq(t.k,0)}n.rq(t.k,0),i&&(rt=new X.BA(t.d),jt(t.n,0)&&X.xA(rt,t.n),X.iA(rt,t.k),D&&n.nw(t.k)),(t.p||t.q==2)&&(n.Kn(t.k,!0),n.yq(t.k),n.zq(t.k))},n.xv=function(t,e,A,P,r){n.wv(t,e,A,0,A.length,P,r)},n.yv=function(t,e){var A;return e==null?null:n.zv(t,c.szb((A=e,V1.Cmb(),A)))},n.zv=function(t,e){var A,P,r,i,D,u,o,Q,L,w,s;for(D=lt.w3(e,0);D>0&&e[D-1]==45;)D=lt.w3(e,D+1);for(u=D==-1?-1:lt.w3(e,D+1);u>0&&e[u-1]==45;)u=lt.w3(e,u+1);if(u==-1)throw Qt(new T.bC(\"Missing one or both separators ('>').\"));if(lt.w3(e,u+1)!=-1)throw Qt(new T.bC(\"Found more than 2 separators ('>').\"));for(s=new tt.yH,w=0,i=0,A=-1;i<e.length;){for(;i<e.length&&e[i]==46;)++i;if(e[i]==40){if(A!=-1)throw Qt(new T.bC(\"Second open group bracket found before closing first one.\"));for(++i,o=0,r=i;r<e.length;r++)if(e[r]==40)++o;else if(e[r]==41&&o--==0){A=r;break}}for(P=i;P<e.length&&e[P]!=62&&!(e[P]==46&&(t.o&&A==-1||A==P-1||P+1==e.length||e[P+1]==46));)++P;if(L=P,A==P-1&&(--L,A=-1),i!=L){if(Q=new n.sw,n.wv(t,Q,e,i,L,!0,!0),t.q==1&&t.p)return n.zv(new n.Iv(t.j|2),e);w==0?(y.pj(s.g,Q),s.d=-1):w==1?y.pj(s.a,Q):(y.pj(s.f,Q),s.d=-1)}for(i=P;i<e.length&&e[i]==62;)++i,++w}return s},n.Av=function(t,e){var A,P,r,i;for(n.dm(t.k,e)==1&&n.In(t.k,e,2),r=0;r<2;r++)for(A=n.Ul(t.k,r,e),n.Gm(t.k,A)&&(n.on(t.k,A,!1),--t.b),i=0;i<n.Wo(t.k,A);i++)P=n.Xo(t.k,A,i),t.g[P]&&(t.g[P]=!1,--t.c)},n.Bv=function(t){var e,A,P,r,i,D,u;do for(u=!1,A=0;A<t.k.g;A++)if(t.g[A]){for(i=!1,r=0;r<2;r++){for(e=!1,P=n.Ul(t.k,r,A),D=0;D<n.Wo(t.k,P);D++)if(A!=n.Xo(t.k,P,D)&&t.g[n.Xo(t.k,P,D)]){e=!0;break}if(!e){i=!0;break}}i&&(u=!0,n.Av(t,A))}while(u)},n.Cv=function(t){var e,A,P,r,i,D;for(e=0;e<t.k.g;e++)if(t.g[e]){for(i=!0,r=0;r<2&&i;r++)for(A=n.Ul(t.k,r,e),D=0;D<n.Wo(t.k,A)&&i;D++)e!=n.Xo(t.k,A,D)&&t.g[n.Xo(t.k,A,D)]&&(i=!1);if(i)for(n.In(t.k,e,8),--t.c,P=0;P<2;P++)A=n.Ul(t.k,P,e),n.Gm(t.k,A)&&(n.on(t.k,A,!1),--t.b)}},n.Dv=function(t,e){var A,P;return!n.Bt(n.Ol(t.k,e))||n.Ol(t.k,e)==6&&(!n.Gm(t.k,e)||n.xl(t.k,e)>0)||(A=n.zl(t.k,e)==null||n.Al(t.k,e)[0]==9?0:n.Al(t.k,e)[0],P=n.fp(t.k,e)-A,P<1)?!1:n.Ol(t.k,e)==16||n.Ol(t.k,e)==34||n.Ol(t.k,e)==52?n.Wo(t.k,e)==2&&n.xl(t.k,e)<=0?!1:P!=2:!0},n.Ev=function(t,e){t.f=e},n.Fv=function(t,e){t.n=e},n.Gv=function(t,e){t.e&&(!t.r&&(t.r=new T.Kjb),T.Ijb(t.r,\" \"),T.Ijb(t.r,e))},n.Hv=function(){n.Iv.call(this,0)},n.Iv=function(t){this.j=t&-4,this.q=t&3,this.o=(t&32)!=0,this.e=(t&64)!=0,this.i=(t&8)!=0,this.d=2,(t&4)!=0&&(this.d|=1),this.i&&(this.d&=-3)},G(115,1,{},n.Hv,n.Iv),U.b=0,U.c=0,U.d=0,U.e=!1,U.i=!1,U.j=0,U.n=0,U.o=!1,U.p=!1,U.q=0,l.Y7=O(115),n.Jv=function(t,e){return P8(e.b,t.b)},n.Kv=function(t){this.b=t,this.a=1},G(216,1,{216:1,32:1},n.Kv),U.Rb=function(t){return n.Jv(this,t)},U.a=0,U.b=0,l.V7=O(216),n.Mv=function(t,e,A){if(!t.c){if(t.e.a.length==4){t.c=!0;return}y.pj(t.e,new n.Tv(t,e,A))}},n.Nv=function(t,e){var A,P,r;if(t.c)return 3;for(r=new y.rqb(t.e);r.a<r.c.a.length;)P=y.qqb(r),P.a!=UA&&P.a!=Mt&&(P.a=e[P.a]);switch(A=!1,t.e.a.length){case 2:if(y.uj(t.e,0).a>=UA||y.uj(t.e,1).a>=UA)return 3;A=n.Qv(t,e);break;case 3:y.pj(t.e,new n.Tv(t,Mt,t.b));case 4:A=n.Rv(t);break;default:return 3}return t.d^A?1:2},n.Ov=function(t,e,A,P){var r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S,p,M,z,q,x,J,E,N,ft,Lt,ot;if(p=t.f.k,r=y.uj(t.e,A),ot=r.a,w=e[t.a],B=n.kp(p,ot)>0&&p.j[ot]==p.e[ot],g=y.nrb(t.f.a,t.f.t[ot]),!B&&!g)return D=p.i[ot][2],p.C[D]==1&&(D=t.f.t[D],(A==0?D>ot:t.f.t[p.i[ot][1]]>D)&&(P=!P)),P;if(B&&(i=p.i[ot][A],D=t.f.t[i],D>ot&&(P=!P,p.C[i]==1&&(P=!P))),g){for(M=p.e[ot],h=d(l.Z6,H,6,M-1,15,1),b=d(l.Z6,H,6,M-1,15,1),z=0,m=0,x=0;m<M;m++)D=p.i[ot][m],D!=w&&(h[x]=D,Q=n.To(p,ot,D),N=y.onb(t.f.s,t.f.t[ot]+\"_\"+t.f.t[D]),b[x++]=N==null?-1:Q,N!=null&&++z);if(B)h[0]<ot&&(P=!P);else switch(z){case 1:if(n.kp(p,ot)>0)break;S=b[0]>=0,s=h[S?0:1],q=h[S?1:0],q>ot?s>ot&&p.C[q]!=1&&(P=!P):s<ot&&(P=!P);break;case 2:u=n.Pv(t,b[0],ot),o=n.Pv(t,b[1],ot),ft=y.onb(t.f.s,ot+\"_\"+t.f.t[u]),Lt=y.onb(t.f.s,ot+\"_\"+t.f.t[o]),L=t.b,A==0?(J=ft[1]<L?ft[1]:ft[0],E=Lt[1]<L?Lt[1]:Lt[0]):(J=ft[0]<L?ft[1]:ft[0],E=Lt[0]<L?Lt[1]:Lt[0]),J<E!=u<o&&(P=!P)}}return P},n.Pv=function(t,e,A){return t.f.k.D[0][e]==A?t.f.k.D[1][e]:t.f.k.D[0][e]},n.Qv=function(t,e){var A,P;if(P=!1,t.f.t==null)for(t.f.t=d(l.Z6,H,6,e.length,15,1),A=t.f.t.length;--A>=0;)t.f.t[e[A]]=A;return P=n.Ov(t,e,0,P),P=n.Ov(t,e,1,P),P},n.Rv=function(t){var e,A,P;for(A=!1,e=1;e<t.e.a.length;e++)for(P=0;P<e;P++)y.uj(t.e,P).a>y.uj(t.e,e).a&&(A=!A),y.uj(t.e,P).b>y.uj(t.e,e).b&&(A=!A);return A},n.Sv=function(t,e,A,P,r,i){this.f=t,r!=0&&r!=1?this.c=!0:(this.a=e,this.b=A,this.d=i,this.e=new y.Jj,P!=-1&&n.Mv(this,P,A-1),P!=-1&&r==1&&n.Mv(this,UA,A+1))},G(217,1,{217:1},n.Sv),U.a=0,U.b=0,U.c=!1,U.d=!1,l.X7=O(217),n.Tv=function(t,e,A){this.c=t,this.a=e,this.b=A},G(180,1,{180:1},n.Tv),U.ob=function(){return\"[\"+(this.a==UA?\"h\":this.a==Mt?\"lp\":n.Dl(this.c.f.k,this.a))+this.b+\"]\"},U.a=0,U.b=0,l.W7=O(180),n.Vv=function(t){t.c=new y.Jj},n.Wv=function(t,e){var A,P,r,i;if(i=t.c.a.length,i==0)return y.oj(t.c,0,e),0;for(r=1;2*r<=i;)r<<=1;for(P=r,--r;P!=0;){if(P>>=1,r>=i){r-=P;continue}if(A=T.Vib(e,y.uj(t.c,r)),A==0)return-1;if(P==0)break;A<0?r-=P:r+=P}return r<i&&T.Vib(e,y.uj(t.c,r))>0&&++r,y.oj(t.c,r,e),r},n.Xv=function(t,e){var A,P,r,i;if(i=t.c.a.length,i==0)return-1;for(r=1;2*r<=i;)r<<=1;for(P=r,--r;P!=0;){if(P>>=1,r>=i){r-=P;continue}if(A=T.Vib(e,y.uj(t.c,r)),A==0)return r;if(P==0)break;A<0?r-=P:r+=P}return-1},n.Yv=function(){n.Vv(this)},G(103,1,r9,n.Yv),U.ac=function(t){return n.Xv(this,t)},l.Z7=O(103),n.$v=function(t){n.fl(t),t.d=null},n._v=function(t,e){n.ll(t,e),t.d&&(e.T=0)},n.aw=function(t,e){var A,P,r,i;if(n.Ao(t,e),(e&~t.T)!=0){for((t.T&15)!=0&&t.q>1&&n.bi(t.J[0],t.J[1])&&X.iA(new X.BA(0),t),t.c&&(e|=128),A=0;A<t.q;A++)t.u[A]&=-67223560;for(P=0;P<t.g;P++)t.F[P]&=-64;r=0,i=0,(e&32)!=0?(r=32,i=1):(e&64)!=0&&(r=64,i=3),(e&128)!=0&&(r|=128,i|=32),t.d=new n.Lg(t,i),n.Gg(t.d),n.Hg(t.d),n.Fg(t.d),n.rw(t)&&(t.d=new n.Lg(t,i)),t.T|=24|r}},n.bw=function(t,e){return n.tg(t.d,e)},n.cw=function(t,e){return n.ig(t.d,e)},n.dw=function(t){var e;switch(n.aw(t,31),e=t.I&r1,t.I&ie){case z1:return null;case n0:return e==1?\"meso\":\"\"+e+\" meso diastereomers\";case 0:return\"unknown chirality\";case YA:return\"both enantiomers\";case Ue:return\"this enantiomer\";case 327680:return\"this or other enantiomer\";case ae:return\"two epimers\";default:return e==1?\"one stereo isomer\":\"\"+e+\" stereo isomers\"}},n.ew=function(t){var e;return e=new n.tw(t.q,t.r),n.kl(t,e),e},n.fw=function(t){var e,A,P,r,i,D,u;for(n.aw(t,15),D=d(l.Z6,H,6,3,15,1),A=0;A<t.f;A++)(t.u[A]&H0)!=0&&(u=(t.u[A]&U1)>>18,u!=0&&(D[u]=k.Math.max(D[u],(t.u[A]&U1)>>18!=1&&(t.u[A]&U1)>>18!=2?-1:(t.u[A]&j0)>>20)));for(r=0;r<t.g;r++)((t.F[r]&3)==1||(t.F[r]&3)==2)&&t.H[r]==1&&(u=(t.F[r]&768)>>8,u!=0&&(D[u]=k.Math.max(D[u],(t.F[r]&768)>>8!=1&&(t.F[r]&768)>>8!=2?-1:(t.F[r]&S0)>>10)));for(i=d(l.Z6,M1,7,3,0,2),i[1]=d(l.Z6,H,6,1+D[1],15,1),i[2]=d(l.Z6,H,6,1+D[2],15,1),e=0;e<t.f;e++)(t.u[e]&H0)!=0&&(u=(t.u[e]&U1)>>18,u!=0&&++i[u][(t.u[e]&U1)>>18!=1&&(t.u[e]&U1)>>18!=2?-1:(t.u[e]&j0)>>20]);for(P=0;P<t.g;P++)((t.F[P]&3)==1||(t.F[P]&3)==2)&&t.H[P]==1&&(u=(t.F[P]&768)>>8,u!=0&&++i[u][(t.F[P]&768)>>8!=1&&(t.F[P]&768)>>8!=2?-1:(t.F[P]&S0)>>10]);return i},n.gw=function(t){var e,A;return e=d(l.Z6,H,6,t.q,15,1),A=n.dp(t,e,!1,!1),n.hw(t,e,A)},n.hw=function(t,e,A){var P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m;for(B=d(l.$7,xe,25,A,0,1),D=d(l.Z6,H,6,A,15,1),Q=d(l.Z6,H,6,A,15,1),i=d(l.Z6,H,6,t.q,15,1),r=0;r<t.q;r++)e[r]!=-1&&(i[r]=D[e[r]]++);for(o=0;o<t.r;o++)b=e[t.D[0][o]],g=e[t.D[1][o]],b==g&&b!=-1&&++Q[b];for(m=0;m<A;m++)B[m]=new n.tw(D[m],Q[m]),n._v(t,B[m]);for(P=0;P<t.q;P++)e[P]!=-1&&n.hl(t,B[e[P]],P,0,0);for(u=0;u<t.r;u++)b=e[t.D[0][u]],g=e[t.D[1][u]],b==g&&b!=-1&&n.jl(t,B[b],u,0,0,i,!1);for(w=B,s=0,h=w.length;s<h;++s)L=w[s],n.$m(L,1),n.$m(L,2);return B},n.iw=function(t){return n.aw(t,15),!t.d&&(t.f<2||!n.bi(t.J[0],t.J[1]))&&(t.d=new n.Kg(t)),t.d?n.og(t.d):null},n.jw=function(t){return n.aw(t,15),!t.d&&(t.f<2||!n.bi(t.J[0],t.J[1]))&&(t.d=new n.Kg(t)),t.d?n.jg(t.d):null},n.kw=function(t){var e,A;for(n.aw(t,31),A=0,e=0;e<t.f;e++)(t.u[e]&3)!=0&&(t.u[e]&4)==0&&++A;return A},n.lw=function(t,e){return n.sg(t.d,e)},n.mw=function(t,e){t.c=e,t.T&=-144},n.nw=function(t){n.aw(t,31),t.d&&n.Ig(t.d)},n.ow=function(t){var e,A;for(n.aw(t,15),t.L=!1,e=0;e<t.q;e++)t.u[e]&=eP,(t.u[e]&3)!=0?t.u[e]|=lA:t.u[e]&=tP;for(A=0;A<t.r;A++)(t.F[A]&3)!=0&&n.am(t,A)==2?t.H[A]=386:t.H[A]&=-385;t.T&=-249},n.pw=function(t,e,A){var P,r,i,D,u,o,Q,L,w;if(w=t.u[e]&3,w==1||w==2){if(u=!1,t.o[e]==2&&t.j[e]==2&&t.n[e][0]==2&&t.n[e][1]==2&&t.C[e]<=7)for(D=0;D<t.j[e];D++){for(P=t.i[e][D],L=0,Q=d(l.Z6,H,6,3,15,1),o=0;o<t.j[P];o++)Q[L]=t.i[P][o],Q[L]!=e&&++L;L==2&&Q[0]<Q[1]^A[Q[0]]<A[Q[1]]&&(u=!u)}else for(D=1;D<t.j[e];D++)for(o=0;o<D;o++)r=t.i[e][D],i=t.i[e][o],r<i^A[r]<A[i]&&(u=!u);u&&(w=w==1?2:1)}return w},n.qw=function(t){var e,A,P,r,i,D;for(n.xq(t),n.aw(t,31),P=0;P<t.f;P++){if(((t.u[P]&U1)>>18==1||(t.u[P]&U1)>>18==2)&&((t.u[P]&H0)==0||(t.u[P]&3)==3))throw Qt(new T.bC(sr));if((t.u[P]&z1)!=0)throw Qt(new T.bC(Tr));if(((t.u[P]&3)==1||(t.u[P]&3)==2)&&t.o[P]==0){for(e=d(l.X6,Bt,6,t.j[P],15,1),i=0;i<t.j[P];i++)e[i]=n.Tl(t,P,t.i[P][i]);for(r=1;r<t.j[P];r++)if(!n.Om(t,t.k[P][r],P)){for(D=0;D<r;D++)if(!n.Om(t,t.k[P][D],P)&&(A=k.Math.abs(n.ko(e[r],e[D])),A<.08||A>O8))throw Qt(new T.bC(hr))}}}},n.rw=function(t){var e,A,P,r,i,D,u;for(u=!1,A=0;A<t.f;A++)((t.u[A]&H0)==0||(t.u[A]&3)==3)&&(t.u[A]&=eP);for(i=0;i<t.g;i++)(n.am(t,i)!=1||(t.F[i]&3)==0||(t.F[i]&3)==3)&&(t.F[i]&=-32513);if(t.L){if((t.I&ie)!=n0){for(D=d(l.teb,wt,6,t.f,16,1),P=0;P<t.f;P++)(t.u[P]&H0)!=0&&(t.u[P]&3)!=3&&(t.u[P]&U1)>>18==1&&(D[P]=!0);for(r=0;r<t.f;r++)(t.u[r]&H0)!=0&&(t.u[r]&3)!=3&&(n.kn(t,r,1,0),u=!0);for(e=0;e<t.f;e++)D[e]&&(n.qn(t,e,1,!1),n.kn(t,e,1,-1),u=!0)}t.L=!1}return n.$m(t,1),n.$m(t,2),u},n.sw=function(){n.Ok(),n.Bq.call(this)},n.tw=function(t,e){n.Ok(),n.Cq.call(this,t,e)},n.uw=function(t){n.Ok(),n.Dq.call(this,t)},G(25,116,i9,n.sw,n.tw,n.uw),U.Xb=function(t){n._v(this,t)},U.Zb=function(t){n.aw(this,t)},U.c=!1,l.$7=O(25),n.yw=function(t,e){var A,P,r,i,D,u,o,Q,L,w,s;for(u=new y.Jj,n.aw(e,1),Q=d(l.teb,wt,6,e.f,16,1),A=0;A<e.f;A++)if(t.f[A]&&(n.Ol(t.i,A)==7||n.Ol(t.i,A)==8||n.Ol(t.i,A)==16||n.Ol(t.i,A)==34||n.Ol(t.i,A)==52)){for(Q[A]=!0,o=0;o<e.j[A];o++)if(P=e.i[A][o],i=e.k[A][o],w=e.n[A][o],e.o[P]!=0&&e.o[A]<w){for(Q[P]=!0,y.pj(u,T.pib(i)),L=0;L<e.j[P];L++)r=e.i[P][L],Q[r]||(Q[r]=!0,D=e.k[P][L],s=e.n[P][L],e.o[P]+2==w+s&&(y.pj(u,T.pib(D)),w>=s&&(e.o[r]<s?n.Hw(e,r)&&n.Bw(t,e,r,!0,!1,Q,u):n.Bw(t,e,r,!0,!0,Q,u)),s>=w&&n.Hw(e,A)&&n.Bw(t,e,r,!1,!1,Q,u),t.f[r]&&(n.Ol(t.i,r)==5||n.Ol(t.i,r)==6||n.Ol(t.i,r)==7||n.Ol(t.i,r)==8||n.Ol(t.i,r)==16||n.Ol(t.i,r)==34||n.Ol(t.i,r)==52)&&e.o[r]<s&&(w<=2&&s>=2&&n.Hw(e,A)&&n.zw(t,e,i,D),w>=2&&s<=2&&n.Hw(e,r)&&n.zw(t,e,D,i)),y.Bj(u,u.a.length-1)),Q[r]=!1);y.Bj(u,u.a.length-1),Q[P]=!1}Q[A]=!1}},n.zw=function(t,e,A,P){var r;r=new n.Nw(t,e),n.Mw(r,A,n.am(e,A)==1?2:3),n.Mw(r,P,n.am(e,P)==2?1:2),t.g[A]=!0,t.g[P]=!0,y.Iwb(t.e,r)&&y.Kpb(t.d,r)},n.Aw=function(t,e){y.Iwb(t.e,e)&&y.Kpb(t.d,e)},n.Bw=function(t,e,A,P,r,i,D){var u,o,Q,L,w,s,h,b,g,B,m,S;for(h=0;h<e.j[A];h++)if(u=e.i[A][h],!i[u]&&(L=e.k[A][h],m=n.am(e,L),P&&m>=2||!P&&m<=2)){for(i[u]=!0,D.add(T.pib(L)),b=0;b<e.j[u];b++)if(o=e.i[u][b],!i[o]&&(w=e.k[u][b],S=n.am(e,w),e.o[u]+2==m+S&&(P&&S<=2||!P&&S>=2))){if(i[o]=!0,D.add(T.pib(w)),t.f[o]&&(n.Ol(t.i,o)==5||n.Ol(t.i,o)==6||n.Ol(t.i,o)==7||n.Ol(t.i,o)==8||n.Ol(t.i,o)==16||n.Ol(t.i,o)==34||n.Ol(t.i,o)==52)&&(!P||n.Hw(e,o))){for(s=new n.Nw(t,e),g=0;g<D.a.length;g++)Q=(c.Fzb(g,D.a.length),D.a[g]).a,B=g<2?P^(g&1)==0:r^(g&1)==0,B?n.Mw(s,Q,n.am(e,Q)==1?2:3):n.Mw(s,Q,n.am(e,Q)==2?1:2),t.g[Q]=!0;y.Iwb(t.e,s)&&y.Kpb(t.d,s)}else n.Bw(t,e,o,P,r,i,D);y.Bj(D,D.a.length-1),i[o]=!1}y.Bj(D,D.a.length-1),i[u]=!1}return!1},n.Cw=function(t){var e,A,P,r,i,D,u,o,Q,L,w;for(t.b=d(l.Z6,H,6,t.i.f,15,1),u=d(l.Z6,H,6,t.i.f,15,1),P=d(l.teb,wt,6,t.i.g,16,1),w=0,A=0;A<t.i.g;A++)if(!P[A]&&t.g[A])for(++w,t.b[n.Ul(t.i,0,A)]=w,t.b[n.Ul(t.i,1,A)]=w,P[A]=!0,Q=0;Q<2;Q++)for(e=n.Ul(t.i,Q,A),t.b[e]=w,D=0,o=0,u[0]=e;D<=o;){for(L=0;L<n.Wo(t.i,u[D]);L++)i=n.Xo(t.i,u[D],L),!P[i]&&t.g[i]&&(P[i]=!0,r=n.Vo(t.i,u[D],L),t.b[r]==0&&(t.b[r]=w,u[++o]=r));++D}t.j=w},n.Dw=function(t){var e,A,P;for(t.n=d(l.Z6,H,6,t.j,15,1),t.k=d(l.Z6,H,6,t.j,15,1),t.o=d(l.Z6,H,6,t.j,15,1),e=0;e<t.i.f;e++)t.b[e]!=0&&(P=t.b[e]-1,t.a!=null&&(t.k[P]+=t.a[e]),t.c!=null&&(t.o[P]+=t.c[e]));for(A=0;A<t.i.g;A++)t.g[A]&&n.am(t.i,A)==2&&(t.n[t.b[n.Ul(t.i,0,A)]-1]+=2)},n.Ew=function(t){var e,A,P,r;for(P=0;P<t.i.r;P++)for(r=0;r<2;r++)e=n.Ul(t.i,r,P),A=n.Ul(t.i,1-r,P),n.Ol(t.i,e)==1&&n.Hl(t.i,e)>1&&n.Ol(t.i,A)>1&&t.b[A]!=0&&(n.Hl(t.i,e)==2?(t.a==null&&(t.a=d(l.Z6,H,6,t.i.q,15,1)),++t.a[A]):(t.c==null&&(t.c=d(l.Z6,H,6,t.i.q,15,1)),++t.c[A]),n.Qm(t.i,e));(t.a!=null||t.c!=null)&&n.rl(t.i)},n.Fw=function(t){var e;for(t.e=new y.Nwb,t.d=new y.Wpb,n.Aw(t,new n.Nw(t,t.i)),e=n.ew(t.i);!y.Opb(t.d);)if(n.Lw(y.Qpb(t.d),e),n.yw(t,e),t.e.a.c>=n.xw){T.Pjb(),\"\"+n.og(new n.Kg(t.i));break}},n.Gw=function(t){var e,A,P,r,i,D,u,o,Q,L;if(t.e.a.c==1)return t.i;for(Q=n.ew(t.i),n.Kn(Q,!0),n.aw(Q,7),r=0;r<Q.g;r++)t.g[r]&&(Q.H[r]=1,Q.T=0,n.Hn(Q,r,3,!0));for(A=0;A<Q.f;A++)t.b[A]!=0&&n.pp(t.i,A)<4&&(n.xo(Q,A),Q.u[A]&=tP,Q.T&=7,n.kn(Q,A,0,-1));for(u=d(l.Z6,H,6,t.j,15,1),o=d(l.Z6,H,6,t.j,15,1),P=new n.Kg(Q).f,e=0;e<Q.f;e++)t.b[e]!=0&&(L=t.b[e]-1,o[L]<P[e]&&(o[L]=P[e],u[L]=e));for(i=0;i<t.j;i++)D=\"\"+t.n[i]+\"|\"+t.k[i]+\"|\"+t.o[i],n.hn(Q,u[i],D);return Q},n.Hw=function(t,e){return t.e[e]-n.pp(t,e)+n.kp(t,e)<=0?!1:n.Dm(t,e)?!0:t.o[e]==0},n.Iw=function(t){var e,A,P,r,i,D,u,o;n.aw(t.i,1),u=t.i.f;do--u;while(u>=0&&n.Ol(t.i,u)==1);for(e=0;e<u;e++)if(n.Ol(t.i,e)==1){n.Vn(t.i,e,u);do--u;while(n.Ol(t.i,u)==1)}if(u!=t.i.f-1){for(D=d(l.teb,wt,6,t.i.g,16,1),i=0;i<t.i.g;i++)A=n.Ul(t.i,0,i),P=n.Ul(t.i,1,i),(n.Ol(t.i,A)==1||n.Ol(t.i,P)==1)&&(D[i]=!0);o=t.i.g;do--o;while(o>=0&&D[o]);for(r=0;r<o;r++)if(D[r]){n.Wn(t.i,r,o),D[r]=!1;do--o;while(D[o])}}},n.Jw=function(t){var e,A;for(this.i=n.ew(t),n.Iw(this),n.aw(this.i,7),this.g=d(l.teb,wt,6,this.i.g,16,1),this.f=d(l.teb,wt,6,this.i.f,16,1),e=0;e<this.i.f;e++)A=n.io(n.Ol(this.i,e))[0],this.f[e]=n.pp(this.i,e)<A;n.Fw(this),n.Cw(this),n.Ew(this),n.Dw(this)},G(241,1,{},n.Jw),U.j=0,n.xw=uP,l.a8=O(241),n.Kw=function(t,e){return lt.O3(t.a,e.a)},n.Lw=function(t,e){var A,P;for(P=0;P<t.b.i.g;P++)t.b.g[P]&&(A=3&t.a[P>>4]>>2*(P&15),n.In(e,P,A==1?1:A==2?t.b.g[P]&&!n.fq(t.b.i,P)?386:2:A==3?4:16))},n.Mw=function(t,e,A){var P,r;P=e>>4,r=2*(e&15),t.a[P]&=~(3<<r),t.a[P]|=A<<r},n.Nw=function(t,e){var A;for(this.b=t,this.a=d(l.Z6,H,6,(t.i.g+15)/16|0,15,1),A=0;A<t.i.g;A++)this.a[A>>4]|=k.Math.min(3,n.am(e,A))<<2*(A&15)},G(165,1,{165:1,32:1},n.Nw),U.Rb=function(t){return n.Kw(this,t)},l._7=O(165),n.Pw=function(t,e,A){var P,r,i,D,u;for(r=0,D=new y.rqb(A);D.a<D.c.a.length;)i=y.qqb(D),c.Szb(i).length!=0&&(u=R.J2(e,i).b,r<u&&(r=u));return P=t.c*yA*(A.a.length-1)+t.c,new Tt.FN(t.i[0].a,t.i[0].b-t.c/2,r,P)},n.Qw=function(t,e,A){return!!t.b&&Tt.AN(t.b,e,A)},n.Rw=function(t){var e,A,P,r,i;if(A=T.gjb(t,X1(38)),A==-1)return t;for(r=0,i=new T.Bjb;A!=-1;)T.Ajb(i,(c.Mzb(r,A,c.Szb(t).length),c.Szb(t).substr(r,A-r))),c.Nzb(A+1,c.Szb(t).length),c.Szb(t).charCodeAt(A+1)==38?(i.a+=\"&\",r=A+2):(e=(c.Nzb(A+1,c.Szb(t).length),c.Szb(t).charCodeAt(A+1)),e=e-(e<65?48:e<97?65:97),P=(c.Nzb(A+2,c.Szb(t).length),c.Szb(t).charCodeAt(A+2)),P=P-(P<65?48:P<97?65:97),T.yjb(i,16*e+P&r1),r=A+3),A=T.hjb(t,X1(38),r);return T.Ajb(i,(c.Nzb(r,c.Szb(t).length+1),c.Szb(t).substr(r))),i.a},n.Sw=function(t){var e,A;for(A=new T.Bjb,e=0;e<c.Szb(t).length;e++)switch(c.Nzb(e,c.Szb(t).length),c.Szb(t).charCodeAt(e)){case 38:A.a+=\"&&\";break;case 9:A.a+=\"&09\";break;case 10:A.a+=\"&0A\";break;case 32:A.a+=\"&20\";break;default:T.yjb(A,(c.Nzb(e,c.Szb(t).length),c.Szb(t).charCodeAt(e)))}return A.a},n.Tw=function(t,e){var A;return A=n.Uw(t),n.Pw(t,e,A)},n.Uw=function(t){var e,A,P;if(A=new y.Jj,e=T.gjb(t.e,X1(10)),e==-1)y.pj(A,t.e);else{for(P=0;e!=-1;)y.pj(A,T.qjb(t.e,P,e)),P=e+1,e=T.fjb(t.e,10,P);y.pj(A,T.pjb(t.e,P))}return A},n.Vw=function(t,e,A){t.i[0].a=e,t.i[0].b=A},n.Ww=function(t,e){try{t.c=q0(e)}catch(A){if(A=C1(A),!Yt(A,40))throw Qt(A)}},n.Xw=function(t,e){try{t.d=T.Khb(e,n1,Mt)}catch(A){if(A=C1(A),!Yt(A,40))throw Qt(A)}},n.Yw=function(t,e,A,P){t.e=e,t.c=A,t.d=P},n.Zw=function(t,e){try{t.i[0].a=q0(e)}catch(A){if(A=C1(A),!Yt(A,40))throw Qt(A)}},n.$w=function(t,e){try{t.i[0].b=q0(e)}catch(A){if(A=C1(A),!Yt(A,40))throw Qt(A)}},n._w=function(){n.bx.call(this,new Tt.qN)},n.ax=function(t){var e,A,P,r;for(n._w.call(this),e=0;e!=-1&&(A=c.Szb(t).indexOf('=\"',e),A!=-1);)P=(c.Mzb(e+1,A,c.Szb(t).length),c.Szb(t).substr(e+1,A-(e+1))),e=c.Szb(t).indexOf('\"',A+2),r=e==-1?(c.Nzb(A+1,c.Szb(t).length+1),c.Szb(t).substr(A+1)):(c.Mzb(A+1,e,c.Szb(t).length),c.Szb(t).substr(A+1,e-(A+1))),T._ib(P,\"text\")?this.e=n.Rw(r):T._ib(P,\"x\")?n.Zw(this,r):T._ib(P,\"y\")?n.$w(this,r):T._ib(P,\"size\")?n.Ww(this,r):T._ib(P,\"style\")&&n.Xw(this,r)},n.bx=function(t){this.e=\"\",this.c=9,this.d=0,this.i=d(l.W9,v1,55,1,0,1),this.i[0]=t},G(95,192,{192:1,95:1},n._w,n.ax),U.Db=function(t,e){return this.a=!!this.b&&Tt.AN(this.b,t,e),this.a},U.Eb=function(){this.a=!1},U.Fb=function(){var t;return t=new n._w,n.Yw(t,this.e,this.c,this.d),n.Vw(t,this.i[0].a,this.i[0].b),t.g=this.g,t},U.Gb=function(t,e){return n.Qw(this,t,e)},U.Hb=function(t,e){var A,P,r;for(P=e?e.c*this.c:this.c,R.P2(t,mt(k.Math.round(P)),(this.d&1)!=0,(this.d&2)!=0),R.R2(t,this.g?ie:R.O2(t)?-1:N0),r=n.Uw(this),this.b=n.Pw(this,t,r),e&&n.ui(e,this.b),A=0;A<r.a.length;A++)R.E2(t,this.b.c,this.b.d+1+P*5/6+P*yA*A,(c.Fzb(A,r.a.length),r.a[A]))},U.Ib=function(t){return n.Tw(this,t)},U.Jb=function(){var t;return t=new T.Kjb,T.Ijb(t,' text=\"'+n.Sw(this.e)+'\"'),T.Ijb(t,' x=\"'+this.i[0].a+'\"'),T.Ijb(t,' y=\"'+this.i[0].b+'\"'),this.c!=9&&T.Ijb(t,' size=\"'+C.kkb(new C.nkb(this.c,new C.Ulb))+'\"'),this.d!=0&&T.Ijb(t,' style=\"'+this.d+'\"'),t.a},U.Kb=function(){return\"text\"},U.Lb=function(t){var e,A;e=(A=n.Uw(this),n.Pw(this,t,A)),R.R2(t,R.N2(t)),R.H2(t,e.c,e.d,e.b,e.a)},U.Mb=function(t){n.me(this,t),this.c*=t},U.Ob=function(t,e){n.pe(this,t,e),this.c=this.f*t},U.Pb=function(t,e){n.qe(this,t,e),this.f=this.c},U.a=!1,U.c=0,U.d=0,U.f=0,l.b8=O(95),n.ox=function(t){t.b=new y.Jj,t.a=new y.Jj},n.px=function(t,e){var A,P;return A=n.Wv(t,e),A==-1?-1:(P=t.b.a.length,y.pj(t.b,e),y.oj(t.a,A,T.pib(P)),P)},n.qx=function(){n.Yv.call(this),n.ox(this)},G(283,103,r9,n.qx),U.ac=function(t){var e;return e=n.Xv(this,t),e==-1?-1:y.uj(this.a,e).a},l.c8=O(283),I.sx=function(t,e){var A,P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S,p,M,z,q,x,J,E,N,ft,Lt,ot,st,ut,rt,Ut,ht,it;for(rt=n.Ap(t.e),Ut=y.uj(rt.j,e).length,st=y.uj(rt.i,e),ut=y.uj(rt.j,e),E=!0,m=1;m<Ut;m++)if(I.Hx(t.b,ut[m])!=I.Hx(t.b,ut[0])){E=!1;break}if(E){for(i=(Ut-2)*qn/Ut,S=0;S<Ut;S++)I.xx(t,st[S],ut[S],ut[S==0?Ut-1:S-1],i);return}for(Lt=d(l.Y6,h0,6,Ut,15,1),r=0,p=0;p<Ut;p++)Lt[p]=n.Mo(t.e,st[p])==0?1.9106119386631804:n.Mo(t.e,st[p])==1?2.094499897810209:qn,r+=Lt[p];for(P=((Ut-2)*qn-r)/Ut,M=0;M<Ut;M++)Lt[M]+=P;for(L=d(l.Y6,h0,6,Ut,15,1),z=1;z<Ut;z++)L[z]=L[z-1]+qn-Lt[z];for(u=d(l.Y6,h0,6,Ut,15,1),D=0;D<100;D++){for(ht=0,it=0,S=0;S<Ut;S++)ht+=I.Hx(t.b,ut[S])*k.Math.sin(L[S]),it+=I.Hx(t.b,ut[S])*k.Math.cos(L[S]);for(h=n.jo(0,0,ht,it),g=k.Math.sqrt(ht*ht+it*it),ft=-1,N=0,q=0;q<Ut;q++)x=q==0?Ut-1:q-1,J=q+1==Ut?0:q+1,o=n.ko(L[q],L[x]),Q=n.ko(L[J],L[q]),ot=n.ko(Lt[q],Lt[J]),u[q]=2*o-2*Q+2*ot,b=k.Math.cos(L[q]-br-h),s=g*b-f9*u[q],k.Math.abs(s)>k.Math.abs(N)&&(N=s,ft=q);w=k.Math.exp(-5*D/100),L[ft]+=w*N}for(B=0;B<Ut;B++)x=B==0?Ut-1:B-1,A=L[x]+qn-L[B],A>G1&&(A-=G1),I.xx(t,st[B],ut[x],ut[B],A)},I.tx=function(t,e){var A,P,r,i,D,u,o,Q,L;for(o=n.Ap(t.e),Q=y.uj(o.j,e).length,u=y.uj(o.j,e),L=!1,r=0;r<Q;r++)if(t.f[u[r]]==0){L=!0;break}if(L){for(A=(180*Q-360)/Q*.01745329238474369,D=y.uj(o.i,e),i=0;i<Q;i++)I.xx(t,D[i],u[i==0?Q-1:i-1],u[i],A);if(Q<=4)for(P=0;P<Q;P++)t.f[u[P]]+=Q}},I.ux=function(t,e,A,P){var r,i,D,u;for(i=-1,D=-1,u=0;u<n.Ho(t.e,e);u++)if(r=n.Vo(t.e,e,u),r==A||r==P)if(D==-1)D=u;else{i=u;break}return t.a[e][i][D]},I.vx=function(t,e,A,P){return A<P?t.a[e][P][A]:t.a[e][A][P]},I.wx=function(t,e){var A,P,r,i,D,u,o;for(P=d(l.teb,wt,6,n.Wo(t.e,e),16,1),o=0,r=0;r<n.Wo(t.e,e);r++){for(u=0,D=-1,i=0;i<n.Wo(t.e,e);i++)P[i]||(A=n.Xo(t.e,e,i),u<t.f[A]&&(u=t.f[A],D=i));if(u==0)return o;o<<=8,o+=u,P[D]=!0}return o},I.xx=function(t,e,A,P,r){var i,D,u,o;for(i=-1,D=-1,o=0;o<n.Ho(t.e,e);o++)if(u=n.Xo(t.e,e,o),u==A||u==P)if(i==-1)i=o;else{D=o;break}t.a[e][D][i]==0&&(t.a[e][D][i]=r,t.d[e]+=r,++t.c[e])},I.yx=function(t,e,A,P,r){var i,D,u,o,Q,L;for(i=n.Ho(t.e,e),o=n.Wo(t.e,e),Q=1;Q<i;Q++)for(D=Q<o?t.f[n.Xo(t.e,e,Q)]:0,L=0;L<Q;L++)t.a[e][Q][L]==0&&(u=L<o?t.f[n.Xo(t.e,e,L)]:0,(D==A&&u==P||D==P&&u==A)&&(t.a[e][Q][L]=r))},I.zx=function(t,e){var A,P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S,p,M,z,q,x;for(this.b=e,this.e=t,this.a=d(l.Y6,T0,455,this.e.f,0,3),r=0;r<this.e.f;r++)for(this.a[r]=d(l.Y6,{455:1,4:1,9:1,5:1,8:1},46,n.Ho(this.e,r),0,2),o=1;o<n.Ho(this.e,r);o++)this.a[r][o]=d(l.Y6,h0,6,o,15,1);for(this.c=d(l.Z6,H,6,this.e.f,15,1),this.d=d(l.Y6,h0,6,this.e.f,15,1),this.f=d(l.Z6,H,6,this.e.g,15,1),q=n.Ap(this.e),s=d(l.teb,wt,6,q.i.a.length,16,1),n.Ys(q,s,d(l.teb,wt,6,q.i.a.length,16,1),d(l.Z6,H,6,q.i.a.length,15,1),!0),u=3;u<=7;u++)for(m=0;m<q.i.a.length;m++)x=y.uj(q.j,m).length,x==u&&(s[m]?I.sx(this,m):x<=4&&I.tx(this,m));for(w=d(l.teb,wt,6,this.e.f,16,1),B=0;B<q.i.a.length;B++)if(s[B])for(p=y.uj(q.i,B),M=0,z=p.length;M<z;++M)S=p[M],w[S]=!0;for(i=v(F(l.Z6,1),H,6,15,[0,0,1,3,6,10,15,21]),P=0;P<this.e.f;P++){if(D=n.Ho(this.e,P),D>4){for(o=1;o<D;o++)for(b=0;b<o;b++)this.a[P][o][b]=br;this.c[P]=i[D];continue}if(this.c[P]!=i[D])if(n.eq(this.e,P)&&(w[P]||n.Qo(this.e,P)<=4&&n.Mo(this.e,P)>0)){if(D>2){if(this.c[P]==1)n.Ol(this.e,P)<=14?A=(D9-this.d[P])/2:A=u9+(u9-this.d[P])*.18000000715255737;else if(A=D9-this.d[P],D>3){if(this.c[P]==2){for(h=d(l.teb,wt,6,n.Ho(this.e,P),16,1),Q=1;Q<D;Q++)for(g=0;g<Q;g++)this.a[P][Q][g]!=0&&(h[Q]=!h[Q],h[g]=!h[g]);for(L=0;L<D;L++)if(h[L]){for(g=L+1;g<D;g++)if(h[g]){this.a[P][g][L]=A;break}break}}A=br}for(o=1;o<D;o++)for(b=0;b<o;b++)this.a[P][o][b]==0&&(this.a[P][o][b]=A)}}else if(n.eq(this.e,P)&&n.Qo(this.e,P)<=4)switch(I.wx(this,P)){case 771:I.yx(this,P,0,3,2.0653998851776123),I.yx(this,P,0,0,1.9814722631346626);break;case 1028:I.yx(this,P,0,4,1.9797999858856201),I.yx(this,P,0,0,1.94691481878138);break;case 393987:I.yx(this,P,0,3,o9),I.yx(this,P,0,6,o9),I.yx(this,P,3,3,1.7229016938441077);break;case 459779:I.yx(this,P,0,3,cr),I.yx(this,P,0,4,cr),I.yx(this,P,0,7,cr),I.yx(this,P,3,4,1.9322539839360076);break;case 525316:I.yx(this,P,0,4,l9),I.yx(this,P,0,8,l9),I.yx(this,P,4,4,1.99944913298566);case 394758:I.yx(this,P,0,6,2.526099920272827);break;case 460550:I.yx(this,P,0,6,Q9),I.yx(this,P,0,7,Q9);break;case 526087:I.yx(this,P,0,7,L9),I.yx(this,P,0,8,L9);break;case 526344:I.yx(this,P,0,8,2.186300039291382);break;case 50529027:I.yx(this,P,3,3,2.4189000129699707);break;case 67371779:I.yx(this,P,3,4,2.2298998832702637);break;case 67372036:I.yx(this,P,4,4,2.094399929046631);break;case 101057283:I.yx(this,P,3,6,1.839926051241747),I.yx(this,P,3,3,2.9061476191098734);break;case 117834755:I.yx(this,P,3,4,2.812249087174905),I.yx(this,P,3,7,1.7910569124592968),I.yx(this,P,4,6,2.1224948975613245);break;case 134677507:I.yx(this,P,3,4,2.642428360523752),I.yx(this,P,3,8,2.027723514585844),I.yx(this,P,4,7,2.251474717631936);break;case 117900035:I.yx(this,P,3,7,2.109753935530918),I.yx(this,P,3,3,3.1052897491356646);break;case 117900292:I.yx(this,P,4,7,2.090729910747413),I.yx(this,P,4,4,2.551671293386306);break;case 134743044:I.yx(this,P,4,8,2.139250042271712),I.yx(this,P,4,4,2.3520055858942612)}else for(A=n.Ol(this.e,P)>10?U9:n.Mo(this.e,P)==2?qn:n.Wp(this.e,P,!0)?y9:n.Mo(this.e,P)==0?U9:y9,o=1;o<D;o++)for(b=0;b<o;b++)this.a[P][o][b]=A}},G(374,1,{},I.zx),l.d8=O(374),I.Gx=function(){I.Gx=u1,I.Ex=v(F(l.teb,1),wt,6,16,[!1,!1,!1,!1,!1,!0,!0,!0,!0,!1,!1,!1,!1,!1,!1,!0,!0])},I.Hx=function(t,e){return t.a[e]},I.Ix=function(t){I.Gx();var e,A;for(n.aw(t,7),this.a=d(l.Y6,h0,6,t.r,15,1),this.b=d(l.Y6,h0,6,t.r,15,1),e=0;e<t.r;e++)A=I.Mx(t,e),A==-1?(this.a[e]=I.Nx(t,e),this.b[e]=I.Ox(t,e)):(this.a[e]=A==-1?2.000499963760376:I.Cx[A],this.b[e]=A==-1?1:I.Dx[A])},I.Jx=function(t,e){return e>=t.f?0:e<t.f&&n.kt(t.p,e)&&t.C[e]==6&&t.s[e]!=0?1:t.o[e]},I.Kx=function(t,e,A,P,r,i,D,u,o){var Q,L,w,s,h;return s=P<I.Ex.length&&I.Ex[P]?k.Math.min(3,i):0,h=r<I.Ex.length&&I.Ex[r]?k.Math.min(3,D):0,u=k.Math.min(7,u),o=k.Math.min(7,o),Q=u+(s<<3)+(k.Math.min(127,P)<<5),L=o+(h<<3)+(k.Math.min(127,r)<<5),w=A?8:e?8+t:t,(w<<24)+(Q<L?(Q<<12)+L:(L<<12)+Q)},I.Lx=function(t,e,A,P,r,i,D,u,o,Q){var L;return L=I.Qx(I.Kx(t,e,A,P,r,i,D,u,o)),!Q&&L==-1&&(L=I.Qx(I.Kx(t,e,A,P,r,i,D,7,7)),L==-1&&(L=I.Qx(I.Kx(t,e,A,P,r,3,3,7,7)))),L},I.Mx=function(t,e){var A,P,r,i,D,u;return A=t.D[0][e],P=t.D[1][e],r=t.C[A],i=t.C[P],D=t.j[A],u=t.j[P],I.Lx(n.am(t,e),e<t.g&&n.lt(t.p,e),e<t.g&&(n.qt(t.p,e)||t.H[e]==8),r,i,I.Jx(t,A),I.Jx(t,P),D,u,!1)},I.Nx=function(t,e){var A,P;return A=n.Ol(t,t.D[0][e]),P=n.Ol(t,t.D[1][e]),(A<(I.pz(),I.nz).length?I.nz[A]:A<I.oz.length?wA*I.oz[A]:oP)+(P<I.nz.length?I.nz[P]:P<I.oz.length?wA*I.oz[P]:oP)},I.Ox=function(t,e){var A,P;return A=n.Ol(t,t.D[0][e]),P=n.Ol(t,t.D[1][e]),(A<(I.pz(),I.nz).length?gr:.125)+(P<I.nz.length?gr:.125)},I.Px=function(){var t,e,A,P,r,i,D;if(!I.Fx)try{for(t=I.Dy(\"bondLengthData.txt\"),A=pt.bgb(t),e=A==null?0:T.Khb(A,n1,Mt),I.Bx=d(l.Z6,H,6,e,15,1),I.Cx=d(l.Y6,h0,6,e,15,1),I.Dx=d(l.Y6,h0,6,e,15,1),I.Ax=d(l.Z6,H,6,e,15,1),r=0;r<e;r++)if(D=pt.bgb(t),D!=null&&(i=T.njb(D,\"\\\\t\"),i.length==4))try{I.Bx[r]=T.Khb(i[0],n1,Mt),I.Cx[r]=q0(i[1]),I.Dx[r]=q0(i[2]),I.Ax[r]=T.Khb(i[3],n1,Mt)}catch(u){if(u=C1(u),Yt(u,40))break;throw Qt(u)}I.Fx=!0}catch(u){if(u=C1(u),Yt(u,76))P=u,T.LB(P,(T.Pjb(),T.Ojb),\"\");else throw Qt(u)}},I.Qx=function(t){var e,A,P,r;for(I.Fx||I.Px(),r=J1,P=c1,A=0;A<13;A++){if(e=r>=I.Bx.length||t<I.Bx[r]?-1:t==I.Bx[r]?0:1,e==0)return r;r=e<0?r-P:r+P,P=P/2|0}return-1},G(373,1,{},I.Ix),I.Fx=!1,l.e8=O(373),I.Rx=function(t,e){t.q=I.Qy(new I.Ty(t.o,e),t)},I.Sx=function(t,e){var A,P,r,i,D,u,o,Q,L;return A=I.Yx(t,e[0]),P=I.Yx(t,e[1]),r=I.Yx(t,e[2]),i=I.Yx(t,e[3]),o=new n.li(P.a-A.a,P.b-A.b,P.c-A.c),Q=new n.li(r.a-P.a,r.b-P.b,r.c-P.c),L=new n.li(i.a-r.a,i.b-r.b,i.c-r.c),D=new n.li(o.b*Q.c-o.c*Q.b,-(o.a*Q.c-o.c*Q.a),o.a*Q.b-o.b*Q.a),u=new n.li(Q.b*L.c-Q.c*L.b,-(Q.a*L.c-Q.c*L.a),Q.a*L.b-Q.b*L.a),-k.Math.atan2(k.Math.sqrt(Q.a*Q.a+Q.b*Q.b+Q.c*Q.c)*(o.a*u.a+o.b*u.b+o.c*u.c),D.a*u.a+D.b*u.b+D.c*u.c)},I.Tx=function(t,e){return I.Wx(t,e),I.Ey(t.q,e.q)},I.Ux=function(t,e){var A;for(A=0;A<e.q;A++)n.gi(t.k[A],e.J[A])},I.Vx=function(t,e){var A;for(A=0;A<e.k.length;A++)n.gi(t.k[A],e.k[A]);e.j==null?t.j=null:t.j=y.Aqb(e.j,e.j.length)},I.Wx=function(t,e){var A;(!t.q||!e.q)&&(A=new I.Sy(t.o),!t.q&&(t.q=I.Qy(A,t)),!e.q&&(e.q=I.Qy(A,e)))},I.Xx=function(t,e){return t.j==null?-1:t.j[e]},I.Yx=function(t,e){return t.k[e]},I.Zx=function(t){return t.p==null?t.o.P:t.p},I.$x=function(t,e){return t.k[e].a},I._x=function(t,e){return t.k[e].b},I.ay=function(t,e){return t.k[e].c},I.by=function(t,e,A){for(t.j==null&&(t.j=d(l.seb,Jt,6,t.o.r,15,1),y.Gqb(t.j));A<0;)A=A+360<<16>>16;for(;A>=360;)A=A-360<<16>>16;t.j[e]=A},I.cy=function(t,e,A){n.gi(t.k[e],A)},I.dy=function(t,e,A){t.k[e]=A},I.ey=function(t,e){t.p=e},I.fy=function(t,e,A){t.k[e].a=A},I.gy=function(t,e,A){t.k[e].b=A},I.hy=function(t,e,A){t.k[e].c=A},I.iy=function(t,e){var A;for(!e&&(e=n.ew(t.o)),A=0;A<e.q;A++)n.gi(e.J[A],t.k[A]);return t.p!=null&&n.Qn(e,t.p),e},I.jy=function(t){var e;for(this.o=t,this.k=d(l.q7,zn,29,t.q,0,1),e=0;e<t.q;e++)this.k[e]=new n.mi(t.J[e]);this.n=NaN},I.ky=function(t){I.ly.call(this,t,t.o)},I.ly=function(t,e){var A;for(this.o=e,this.k=d(l.q7,zn,29,t.k.length,0,1),A=0;A<this.k.length;A++)this.k[A]=new n.mi(t.k[A]);t.j!=null&&(this.j=y.Aqb(t.j,t.j.length)),this.p=t.p==null||T.$ib(t.p)?t.p:T.Xib(t.p,vn),this.n=NaN},G(63,1,{63:1,32:1},I.ky),U.Rb=function(t){return I.Tx(this,t)},U.n=0,l.f8=O(63),I.py=function(t,e){var A,P,r,i,D;return e==null?null:(D=y.epb(t.c,e),D||(P=c.Szb(\"<\").length,(T._ib(c.Szb(e).substr(c.Szb(e).length-P,P),\"<\")||(r=c.Szb(\"-\").length,T._ib(c.Szb(e).substr(c.Szb(e).length-r,r),\"-\")))&&(D=y.epb(t.c,(i=c.Szb(\"<\").length,T._ib(c.Szb(e).substr(c.Szb(e).length-i,i),\"<\")?T.qjb(e,0,c.Szb(e).length-1)+\">\":(A=c.Szb(\"-\").length,T._ib(c.Szb(e).substr(c.Szb(e).length-A,A),\"-\")?T.qjb(e,0,c.Szb(e).length-1)+\"+\":e))),D)?(D=new I.lz(D),y.Pvb(t.c,e,D),D):null))},I.qy=function(t,e){var A,P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S,p,M;t.b|=e;try{for(p=I.Dy(\"torsionID.txt\"),P=(e&1)==0?null:I.Dy(\"torsionAngle.txt\"),s=(e&1)==0?null:I.Dy(\"torsionRange.txt\"),u=(e&1)==0?null:I.Dy(\"torsionFrequency.txt\"),i=(e&2)==0?null:I.Dy(\"torsionBins.txt\"),M=pt.bgb(p);M!=null;){if(S=y.epb(t.c,M),S||(S=new I.kz((b=c.Szb(\"<\").length,T._ib(c.Szb(M).substr(c.Szb(M).length-b,b),\"<\")||(g=c.Szb(\">\").length,T._ib(c.Szb(M).substr(c.Szb(M).length-g,g),\">\"))?0:(B=c.Szb(\"-\").length,T._ib(c.Szb(M).substr(c.Szb(M).length-B,B),\"-\")||(m=c.Szb(\"+\").length,T._ib(c.Szb(M).substr(c.Szb(M).length-m,m),\"+\"))?1:(h=c.Szb(\"=\").length,T._ib(c.Szb(M).substr(c.Szb(M).length-h,h),\"=\")?3:2)))),y.Pvb(t.c,M,S)),P)for(A=T.njb(pt.bgb(P),\",\"),S.a=d(l.seb,Jt,6,A.length,15,1),Q=0;Q<A.length;Q++)S.a[Q]=T.Khb(A[Q],JA,32767)<<16>>16;if(s)for(w=T.njb(pt.bgb(s),\",\"),S.d=w1(l.seb,[A0,Jt],[16,6],15,[w.length,2],2),Q=0;Q<w.length;Q++)L=T.fjb(w[Q],45,1),S.d[Q][0]=T.Khb(T.qjb(w[Q],0,L),JA,32767)<<16>>16,S.d[Q][1]=T.Khb(T.pjb(w[Q],L+1),JA,32767)<<16>>16;if(u)for(o=T.njb(pt.bgb(u),\",\"),S.c=d(l.seb,Jt,6,o.length,15,1),Q=0;Q<o.length;Q++)S.c[Q]=T.Khb(o[Q],-128,127)<<24>>24;if(i)for(r=T.njb(pt.bgb(i),\",\"),S.b=d(l.V6,Y,6,r.length,15,1),Q=0;Q<r.length;Q++)S.b[Q]=T.Khb(r[Q],-128,127)<<24>>24;M=pt.bgb(p)}}catch(z){if(z=C1(z),Yt(z,76))D=z,T.LB(D,(T.Pjb(),T.Ojb),\"\");else throw Qt(z)}},I.ry=function(t){var e,A,P,r;for(t.a=15,r=(A=new y.Eob(t.c).a.ad().Sb(),new y.Lob(A));r.a.cd();)P=(e=r.a.dd(),e.gd()),I.iz(P)},I.sy=function(){this.c=new y.Xvb,this.b=0},I.ty=function(t,e,A){var P,r,i,D,u,o,Q,L,w,s,h,b,g,B;for(P=d(l.X6,Bt,6,2,15,1),h=I.wy(t,A),o=0;o<2;o++)if(A[3*o]!=-1){for(i=2-o,b=3-3*o,Q=0,s=0;s<3;s++)D=n.Vo(t,A[i],s),D!=h[1-o]&&t.C[D]!=1&&(A[b]=D,e?P[Q++]=I.Sx(e,A):P[Q++]=n.al(t,A));return A[b]=-1,I.vy(P)}for(r=d(l.X6,Bt,6,2,15,1),L=0,u=0;u<3;u++)if(g=n.Vo(t,A[1],u),g!=h[0]&&t.C[g]!=1){for(A[0]=g,w=0,s=0;s<3;s++)B=n.Vo(t,A[2],s),B!=h[1]&&t.C[B]!=1&&(A[3]=B,e?r[w++]=I.Sx(e,A):r[w++]=n.al(t,A));P[L++]=I.vy(r)}return A[0]=-1,A[3]=-1,I.vy(P)},I.uy=function(t,e){return e[0]!=-1&&e[3]!=-1?I.Sx(t,e):I.ty(t.o,t,e)},I.vy=function(t){var e,A;return A=(t[1]+t[0])/2,e=k.Math.abs(t[1]-t[0]),e>t1?A:A<0?A+t1:A-t1},I.wy=function(t,e){var A,P,r;return r=d(l.Z6,H,6,2,15,1),n.To(t,e[1],e[2])!=-1?(r[0]=e[2],r[1]=e[1]):(A=d(l.Z6,H,6,16,15,1),P=n.up(t,A,e[1],e[2],15,null,null),r[0]=A[1],r[1]=A[P-1]),r},I.xy=function(t,e){var A,P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m;for(n.aw(t,7),Q=0,r=0;r<t.g;r++)n.am(t,r)==1&&!(r<t.g&&n.lt(t.p,r))&&n.pp(t,t.D[0][r])>1&&n.pp(t,t.D[1][r])>1&&(t.F[r]&64)==0&&!((t.F[r]&128)!=0&&(t.p&&r<t.g?n.bt(t.p,r):0)<=5)&&(e[r]=!0,++Q);for(D=d(l.Z6,H,6,2,15,1),h=d(l.Z6,H,6,2,15,1),i=null,P=0;P<t.g;P++)if(e[P]&&(i==null||!i[P])){for(A=0,w=0;w<2;w++)for(D[w]=t.D[w][P],h[w]=t.D[1-w][P],g=h[w];n.Mo(t,D[w])==2&&n.pp(t,D[w])==2&&n.Ol(t,D[w])<10;){for(s=0;s<2;s++)if(u=n.Vo(t,D[w],s),u!=h[w]){o=n.Xo(t,D[w],s),e[o]&&n.am(t,o)==1&&(e[o]=!1,--Q),h[w]=D[w],D[w]=u,++A;break}if(D[w]==g){A=0;break}}A!=0&&(e[P]=!1,--Q,n.pp(t,D[0])>1&&n.pp(t,D[1])>1&&(B=n.Hp(t,h[0],D[0]),m=n.Hp(t,h[1],D[1]),L=B<m?0:1,b=n.To(t,h[L],D[L]),i==null&&(i=d(l.teb,wt,6,t.g,16,1)),i[b]=!0,e[b]=!0,++Q))}return Q},I.yy=function(t){var e;return e=I.py(I.oy,t),e?I.fz(e):null},I.zy=function(t,e,A,P){return I._y(P,t,e),A!=null&&(A[0]=P.f[0],A[1]=P.b[0],A[2]=P.b[1],A[3]=P.f[1]),P.d},I.Ay=function(t){var e;return e=I.py(I.oy,t),e?I.gz(e):null},I.By=function(t){var e;return e=I.py(I.oy,t),e?I.ez(e):null},I.Cy=function(){var t;!I.oy&&(I.oy=new I.sy),(I.oy.b&1)!=0&&I.oy.a!=15&&T.Pjb(),t=1&~I.oy.b,t!=0&&(I.qy(I.oy,t),t==1&&I.ry(I.oy))},I.Dy=function(t){var e,A,P;if(I.ny==null){if(e=Wt.cAb(\"/resources/csd/\"+t),e)return I.ny=\"csd/\",new pt.cgb(new pt.hgb((P=e,V1.Cmb(),P)));I.ny=\"cod/\"}return new pt.cgb(new pt.hgb((A=Wt.cAb(\"/resources/\"+I.ny+t),V1.Cmb(),A)))},G(365,1,{},I.sy),U.a=0,U.b=0,l.g8=O(365),I.Ey=function(t,e){var A,P;for(P=0;P<t.b.length;P++)if(A=k.Math.abs(t.b[P]-e.b[P]),A>lP&&A<t.a[P]-lP)return A<t.a[P]/2^t.b[P]<e.b[P]?1:-1;return 0},I.Fy=function(t,e){var A,P;for(P=0;P<t.b.length;P++)if(A=k.Math.abs(t.b[P]-e.b[P]),A>lP&&A<t.a[P]-lP)return!1;return!0},I.Gy=function(t,e){this.b=t,this.a=e},G(256,1,{256:1,32:1},I.Gy),U.Rb=function(t){return I.Ey(this,t)},U.ob=function(){var t,e;for(e=new T.Kjb,t=0;t<this.b.length;t++)e.a+=t==0?\"Torsions: \":\", \",T.Ijb(e,(lt.K3(),lt.L3(this.b[t],3)+\"(\"+mt(k.Math.round(this.a[t]+.5))+\")\"));return e.a},l.i8=O(256),I.Ly=function(){I.Ly=u1,I.Ky=v(F(l.X6,1),Bt,6,15,[G1,t1,In,s0]),I.Jy=v(F(l.Z6,2),M1,7,0,[v(F(l.Z6,1),H,6,15,[0,0,0,2]),v(F(l.Z6,1),H,6,15,[0,0,1,2]),v(F(l.Z6,1),H,6,15,[0,1,1,3]),v(F(l.Z6,1),H,6,15,[2,2,3,2])])},I.My=function(t,e,A,P){var r,i,D,u;if(P==1&&!I.Ry(t,e)){if(n.Wo(t.b,e)==3)return-1;if(n.Wo(t.b,e)==3)return r=I.Py(t,e,A),n.lw(t.b,r[0])==n.lw(t.b,r[1])?r[2]:n.lw(t.b,r[0])==n.lw(t.b,r[2])?r[1]:r[0]}for(D=-1,u=-1,i=0;i<n.Wo(t.b,e);i++)r=n.Vo(t.b,e,i),r!=A&&D<n.lw(t.b,r)&&(D=n.lw(t.b,r),u=r);return u},I.Ny=function(t){var e,A,P,r,i;for(t.a=w1(l.Z6,[M1,H],[7,6],15,[t.d.length,4],2),t.c=w1(l.Z6,[M1,H],[7,6],15,[t.d.length,2],2),t.e=d(l.Z6,H,6,t.d.length,15,1),e=d(l.Z6,H,6,2,15,1),r=0;r<t.d.length;r++){for(i=0;i<2;i++)e[0]=n.Ul(t.b,1-i,t.d[r]),e[1]=n.Ul(t.b,i,t.d[r]),I.Xy(t.b,e[1])&&I.Vy(t.b,e[0],e,null),t.a[r][1+i]=e[1],t.c[r][i]=e[0];A=I.Oy(t,t.a[r][1],t.c[r][0]),P=I.Oy(t,t.a[r][2],t.c[r][1]),t.e[r]=I.Jy[A][P],t.a[r][0]=I.My(t,t.a[r][1],t.c[r][0],A),t.a[r][3]=I.My(t,t.a[r][2],t.c[r][1],P)}},I.Oy=function(t,e,A){var P;if(n.Wo(t.b,e)==2)return 1;if(P=I.Py(t,e,A),n.Wo(t.b,e)==3)return n.lw(t.b,P[0])==n.lw(t.b,P[1])?I.Ry(t,e)?2:1:I.Ry(t,e)?1:0;if(n.Wo(t.b,e)==4){if(n.lw(t.b,P[0])==n.lw(t.b,P[1])&&n.lw(t.b,P[0])==n.lw(t.b,P[2]))return 3;if(n.lw(t.b,P[0])==n.lw(t.b,P[1])||n.lw(t.b,P[0])==n.lw(t.b,P[2])||n.lw(t.b,P[1])==n.lw(t.b,P[2]))return 1}return 0},I.Py=function(t,e,A){var P,r,i;for(i=0,P=d(l.Z6,H,6,n.Wo(t.b,e)-1,15,1),r=0;r<n.Wo(t.b,e);r++)n.Vo(t.b,e,r)!=A&&(P[i++]=n.Vo(t.b,e,r));return P},I.Qy=function(t,e){var A,P,r;for(r=d(l.Y6,h0,6,t.d.length,15,1),P=d(l.Y6,h0,6,t.d.length,15,1),A=0;A<t.d.length;A++)r[A]=I.Wy(I.uy(e,t.a[A]),t.e[A]),P[A]=I.Ky[t.e[A]];return new I.Gy(r,P)},I.Ry=function(t,e){return!!(n.Mo(t.b,e)==1&&n.Ol(t.b,e)<10||n.Pp(t.b,e)||n.Wp(t.b,e,!0))},I.Sy=function(t){I.Ly(),this.b=t,n.aw(this.b,63),this.d=I.Uy(t),I.Ny(this)},I.Ty=function(t,e){I.Ly(),this.b=t,n.aw(this.b,63),this.d=e,I.Ny(this)},I.Uy=function(t){I.Ly();var e,A,P,r,i;for(n.aw(t,7),r=d(l.teb,wt,6,t.g,16,1),P=0,A=0;A<t.g;A++)I.Yy(t,A)&&(r[A]=!0,++P);for(i=d(l.Z6,H,6,P,15,1),P=0,e=0;e<t.g;e++)r[e]&&(i[P++]=e);return i},I.Vy=function(t,e,A,P){var r,i,D;for(r=0;r<2;r++)if(i=n.Vo(t,A[1],r),i!=A[0])return i==e||(D=n.Xo(t,A[1],r),A[0]=A[1],A[1]=i,t.j[i]==1)?!1:(P!=null&&!n.Gm(t,A[0])&&!n.Gm(t,A[1])&&(P[0]=k.Math.max(P[0],D)),t.j[i]==2&&t.o[i]==2&&t.C[i]<=7?I.Vy(t,e,A,P):!0);return!1},I.Wy=function(t,e){var A;for(A=I.Ky[e]/2;t<-A;)t+=G1;for(;t>=A;)t-=I.Ky[e];return t},I.Xy=function(t,e){return t.j[e]==2&&t.o[e]==2&&t.C[e]<=7},I.Yy=function(t,e){var A,P,r,i,D,u,o,Q,L,w,s;if(n.am(t,e)!=1||e<t.g&&n.lt(t.p,e)||(t.p&&e<t.g?n.bt(t.p,e):0)==3)return!1;for(A=d(l.Z6,H,6,2,15,1),u=0;u<2;u++)if(A[u]=t.D[u][e],n.Gm(t,A[u])||n.pp(t,A[u])<=1)return!1;if(I.Xy(t,A[0])||I.Xy(t,A[1])){for(w=d(l.Z6,H,6,1,15,1),w[0]=e,P=d(l.Z6,M1,7,2,0,2),o=0;o<2;o++)if(I.Xy(t,A[o])&&(P[o]=d(l.Z6,H,6,2,15,1),P[o][0]=A[1-o],P[o][1]=A[o],!I.Vy(t,A[1-o],P[o],w)))return!1;if(e!=w[0])return!1;for(Q=0;Q<2;Q++)P[Q]!=null&&(A[Q]=P[Q][1])}for(D=0;D<2;D++){if(i=n.Wo(t,A[D]),i==1)return!1;for(s=0,L=0;L<i;L++)r=n.Vo(t,A[D],L),(t.u[r]&n0)!=0||++s;if(s<2)return!1}return!0},G(254,1,{},I.Sy,I.Ty),l.h8=O(254),I.$y=function(){I.$y=u1,I.Zy=v(F(l.Z6,2),M1,7,0,[v(F(l.Z6,1),H,6,15,[0,0,1]),v(F(l.Z6,1),H,6,15,[0,2,3]),v(F(l.Z6,1),H,6,15,[1,3,3])])},I._y=function(t,e,A){var P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S,p,M,z,q,x,J,E,N,ft,Lt,ot,st,ut,rt,Ut,ht,it,bt,ct,$t,Ft,Rt,Et,Nt,It;if(n.$v(t.c),t.d=null,n.aw(e,63),n.am(e,A)!=1||A<e.g&&n.lt(e.p,A)||n.Ol(e,e.D[0][A])==1||n.Ol(e,e.D[1][A])==1||(st=(e.F[A]&128)!=0,st&&(e.p&&A<e.g?n.bt(e.p,A):0)<6))return!1;for(r=d(l.teb,wt,6,e.f,16,1),t.a=0,x=0;x<2;x++){for(t.b[x]=e.D[x][A],t.e[x]=e.D[1-x][A];n.Mo(e,t.b[x])==2&&n.pp(e,t.b[x])==2&&n.Ol(e,t.b[x])<10;)for(ut=0;ut<n.Wo(e,t.b[x]);ut++)if(D=n.Vo(e,t.b[x],ut),D!=t.e[x]&&e.C[D]!=1){if(e.j[D]==1||t.a==16)return!1;r[t.b[x]]=!0,t.e[x]=t.b[x],t.b[x]=D,++t.a;break}if(rt=n.pp(e,t.b[x]),rt>4||rt==1)return!1;r[t.b[x]]=!0}for(J=0;J<2;J++)for(ut=0;ut<n.Wo(e,t.b[J]);ut++)D=n.Vo(e,t.b[J],ut),e.C[D]!=1&&(r[D]=!0);for(t.g=d(l.Z6,H,6,e.f,15,1),n.yo(e,t.c,r,!0,t.g),E=0;E<t.g.length;E++)t.g[E]!=-1&&(t.i[t.g[E]]=E);if(n.Kn(t.c,!0),st&&(i=n.To(t.c,t.g[t.b[0]],t.g[t.b[1]]),i!=-1)){for(n.Hn(t.c,i,256,!0),Ft=(n.aw(e,7),e.p),$t=0;$t<Ft.i.a.length;$t++)if(n.nt(Ft,$t,A)){for(N=0;N<2;N++)for(ut=0;ut<n.Wo(e,t.b[N]);ut++)if(D=n.Vo(e,t.b[N],ut),D!=t.e[N]&&n.mt(Ft,$t,D)&&e.C[D]!=1){n.Hn(t.c,n.To(t.c,t.g[t.b[N]],t.g[D]),256,!0);break}}}for(ft=0;ft<2;ft++){for(n.Wp(e,t.b[ft],!0)&&n.rn(t.c,t.g[t.b[ft]],Ne,!0),o=!1,ut=0;ut<n.Wo(e,t.b[ft]);ut++)D=n.Vo(e,t.b[ft],ut),D!=t.e[ft]&&e.C[D]!=1&&(m=n.To(t.c,t.g[t.b[ft]],t.g[D]),n.dm(t.c,m)==8?o=!0:e.C[D]==6&&!n.Pp(e,t.b[ft])&&(B=D<e.f&&n.kt(e.p,D)?2:4,n.rn(t.c,t.g[D],B,!0)),u=n.Xo(e,t.b[ft],ut),Rt=e.p&&u<e.g?n.bt(e.p,u):0,(Rt==3||Rt==4)&&n.Hn(t.c,m,Rt<<17,!0),(u<e.g&&n.lt(e.p,u)||n.Yo(e,t.b[ft],ut)==2)&&(rt=n.pp(e,D),z=rt==3,!z&&rt==2&&(e.u[D]&M0)==0&&(z=n.Ip(e,t.b[1-ft],u)!=-1),z?n.rn(t.c,t.g[D],Cn,!0):u<e.g&&n.lt(e.p,u)&&n.rn(t.c,t.g[D],pn,!0)),n.Yo(e,t.b[ft],ut)==1&&(n.pp(e,D)==4?n.rn(t.c,t.g[D],Qn,!0):e.C[D]==6&&n.rn(t.c,t.g[D],m0,!0)));o||(n.Pp(e,t.b[ft])?n.rn(t.c,t.g[t.b[ft]],2,!0):n.rn(t.c,t.g[t.b[ft]],4,!0))}for(n.aw(t.c,191),q=0;q<2;q++)if(S=t.g[t.b[q]],n.Il(t.c,S)==3){if(n.Il(e,t.b[q])==3)return!1;Ut=n.No(t.c,S),n.In(t.c,Ut,257),n.Ul(t.c,0,Ut)!=S&&(n.zn(t.c,1,Ut,n.Ul(t.c,0,Ut)),n.zn(t.c,0,Ut,S)),n.aw(t.c,191)}if(s=t.g[t.b[0]],h=t.g[t.b[1]],bt=t.g[t.e[0]],ct=t.g[t.e[1]],Q=n.Cl(t.c,s),L=n.Cl(t.c,h),n.vm(t.c,s)&&n.vm(t.c,h)&&(Q!=0||L!=0)&&(Q!=L||n.Bl(t.c,s)!=n.Bl(t.c,h)))return!1;if(w=!1,n.vm(t.c,s)&&Q!=0&&(n.kn(t.c,s,0,-1),w=!0),n.vm(t.c,h)&&L!=0&&(n.kn(t.c,h,0,-1),w=!0),w&&n.aw(t.c,191),ht=n.lw(t.c,s),it=n.lw(t.c,h),ht<it&&(It=t.b[0],t.b[0]=t.b[1],t.b[1]=It,It=t.e[0],t.e[0]=t.e[1],t.e[1]=It,It=s,s=h,h=It,It=bt,bt=ct,ct=It),ot=!1,(n.vm(t.c,s)||n.vm(t.c,h))&&(n.vm(t.c,s)?ot=n.bw(t.c,s)==1:n.vm(t.c,h)&&(ot=n.bw(t.c,h)==1),ot)){for(P=0;P<t.c.q;P++)n.vn(t.c,P,-n.Ll(t.c,P));n.aw(t.c,191)}return b=I.bz(t,s,bt),g=I.bz(t,h,ct),t.f[0]=b==-1?-1:t.i[b],t.f[1]=g==-1?-1:t.i[g],Lt=n.iw(t.c),Lt==null?!1:(p=I.az(t,s,bt),M=I.az(t,h,ct),p==0&&M==0&&(t.c.I&ie)==n0?Nt=2:Nt=I.Zy[p][M],Et=Nt==0?ot?\"<\":\">\":Nt==1?ot?\"-\":\"+\":Nt==3?\"=\":\"\",t.d=Lt+Et,!0)},I.az=function(t,e,A){var P,r,i,D;if(n.Wo(t.c,e)==2)return 1;if(P=I.cz(t,e,A),n.Wo(t.c,e)==3)return n.lw(t.c,P[0])==n.lw(t.c,P[1])?n.Mo(t.c,e)==1&&n.Ol(t.c,e)<10||n.Pp(t.c,e)||n.Wp(t.c,e,!0)?2:1:n.Mo(t.c,e)==1&&n.Ol(t.c,e)<10||n.Pp(t.c,e)||n.Wp(t.c,e,!0)?1:0;if(n.Wo(t.c,e)==4){for(r=0;r<P.length;r++)for(D=n.lw(t.c,P[r]),i=r+1;i<P.length;i++)if(D==n.lw(t.c,P[i]))return 1}return 0},I.bz=function(t,e,A){var P,r,i,D,u,o,Q,L,w,s;for(L=-1,w=-1,s=-1,i=d(l.teb,wt,6,n.Wo(t.c,e),16,1),o=0;o<n.Wo(t.c,e);o++)if(!i[o]&&(r=n.Vo(t.c,e,o),r!=A&&(D=n.lw(t.c,r),w<D))){for(u=!1,Q=o+1;Q<n.Wo(t.c,e);Q++)if(P=n.Vo(t.c,e,Q),P!=A&&n.lw(t.c,P)==D){if(i[Q]=!0,u)return r;u=!0}u?s=r:(w=D,L=r)}return L==-1&&(n.Mo(t.c,e)==1&&n.Ol(t.c,e)<10||n.Pp(t.c,e)||n.Wp(t.c,e,!0))?s:L},I.cz=function(t,e,A){var P,r,i;for(i=0,P=d(l.Z6,H,6,n.Wo(t.c,e)-1,15,1),r=0;r<n.Wo(t.c,e);r++)n.Vo(t.c,e,r)!=A&&(P[i++]=n.Vo(t.c,e,r));return P},I.dz=function(){I.$y(),this.c=new n.tw(24,29),this.i=d(l.Z6,H,6,24,15,1),this.b=d(l.Z6,H,6,2,15,1),this.e=d(l.Z6,H,6,2,15,1),this.f=d(l.Z6,H,6,2,15,1)},G(250,1,{},I.dz),U.a=0,l.j8=O(250),I.ez=function(t){var e,A,P,r,i,D,u,o,Q;switch(e=null,t.e){case 1:for(e=d(l.seb,Jt,6,2*t.a.length,15,1),P=0;P<t.a.length;P++)e[P]=t.a[P],e[t.a.length+P]=180+t.a[P]<<16>>16;return e;case 2:for(r=t.a[0]==0?1:0,i=t.a[t.a.length-1]==180?t.a.length-1:t.a.length,Q=i-r,e=d(l.seb,Jt,6,t.a.length+Q,15,1),D=0;D<t.a.length;D++)e[D]=t.a[D];for(u=r;u<i;u++)e[e.length-1-u+r]=360-t.a[u]<<16>>16;return e;case 3:for(r=t.a[0]==0?1:0,i=t.a[t.a.length-1]==90?t.a.length-1:t.a.length,Q=i-r,e=d(l.seb,Jt,6,2*t.a.length+2*Q,15,1),o=0;o<t.a.length;o++)e[o]=t.a[o],e[t.a.length+Q+o]=180+t.a[o]<<16>>16;for(A=r;A<i;A++)e[t.a.length+Q-1-A+r]=180-t.a[A]<<16>>16,e[e.length-1-A+r]=360-t.a[A]<<16>>16;return e;default:return t.a}},I.fz=function(t){var e,A,P,r,i,D,u,o,Q,L;switch(e=null,L=t.c.length,t.e){case 1:for(e=d(l.seb,Jt,6,2*L,15,1),P=0;P<L;P++)e[P]=t.c[P],e[L+P]=t.c[P];return e;case 2:for(r=t.a[0]==0?1:0,i=t.a[L-1]==180?L-1:L,Q=i-r,e=d(l.seb,Jt,6,L+Q,15,1),D=0;D<L;D++)e[D]=t.c[D];for(u=r;u<i;u++)e[e.length-1-u+r]=t.c[u];return e;case 3:for(r=t.a[0]==0?1:0,i=t.a[L-1]==90?L-1:L,Q=i-r,e=d(l.seb,Jt,6,2*L+2*Q,15,1),o=0;o<L;o++)e[o]=t.c[o],e[L+Q+o]=t.c[o];for(A=r;A<i;A++)e[L+Q-1-A+r]=t.c[A],e[e.length-1-A+r]=t.c[A];return e;default:return t.c}},I.gz=function(t){var e,A,P,r,i,D,u,o,Q,L;switch(e=null,L=t.d.length,t.e){case 1:for(e=w1(l.seb,[A0,Jt],[16,6],15,[2*L,2],2),P=0;P<L;P++)e[P][0]=t.d[P][0],e[P][1]=t.d[P][1],e[L+P][0]=180+t.d[P][0]<<16>>16,e[L+P][1]=180+t.d[P][1]<<16>>16;return e;case 2:for(r=t.a[0]==0?1:0,i=t.a[L-1]==180?L-1:L,Q=i-r,e=w1(l.seb,[A0,Jt],[16,6],15,[L+Q,2],2),D=0;D<L;D++)e[D][0]=t.d[D][0],e[D][1]=t.d[D][1];for(u=r;u<i;u++)e[e.length-1-u+r][0]=360-t.d[u][1]<<16>>16,e[e.length-1-u+r][1]=360-t.d[u][0]<<16>>16;return e;case 3:for(r=t.a[0]==0?1:0,i=t.a[L-1]==90?L-1:L,Q=i-r,e=w1(l.seb,[A0,Jt],[16,6],15,[2*L+2*Q,2],2),o=0;o<L;o++)e[o][0]=t.d[o][0],e[o][1]=t.d[o][1],e[L+Q+o][0]=180+t.d[o][0]<<16>>16,e[L+Q+o][1]=180+t.d[o][1]<<16>>16;for(A=r;A<i;A++)e[L+Q-1-A+r][0]=180-t.d[A][1]<<16>>16,e[L+Q-1-A+r][1]=180-t.d[A][0]<<16>>16,e[e.length-1-A+r][0]=360-t.d[A][1]<<16>>16,e[e.length-1-A+r][1]=360-t.d[A][0]<<16>>16;return e;default:return t.d}},I.hz=function(t,e,A,P,r,i){var D,u,o,Q,L,w;for(t.a[A]=e<<16>>16,t.c[A]=t.c[A]+t.c[P]<<16>>16,t.d[A][0]=r<<16>>16,t.d[A][1]=i<<16>>16,w=t.a.length-1,o=d(l.seb,Jt,6,w,15,1),Q=d(l.seb,Jt,6,w,15,1),L=d(l.seb,A0,16,w,0,2),u=0,D=0;D<t.a.length;D++)D!=P&&(o[u]=t.a[D],Q[u]=t.c[D],L[u]=t.d[D],++u);t.a=o,t.c=Q,t.d=L},I.iz=function(t){var e,A,P,r,i,D,u,o,Q,L,w,s;for(e=0;t.a.length!=0;){if(t.a.length==1){if(t.e==1||t.e==0)break;if(t.e==2&&(t.a[0]==0||t.a[0]==180))break;if(t.e==3&&(t.a[0]==0||t.a[0]==90))break}for(s=t.a[0]!=0&&(t.e==2||t.e==3)?-1:0,w=-1,L=Mt,D=s;D<t.a.length;D++)o=D+1,A=D>=0?t.a[D]:-t.a[0],P=o<t.a.length?t.a[o]:t.e==1?t.a[0]+180:t.e==2?360-t.a[t.a[D]==180?D-1:D]:t.e==3?180-t.a[t.a[D]==90?D-1:D]:t.a[0]+360,L>P-A&&(L=P-A,w=D);if(L>15)break;i=w,u=i+1,i==-1?(e+=t.c[0],t.a[0]=0,t.c[0]=t.c[0]*2<<16>>16,t.d[0][0]=-t.d[0][1]):u<t.a.length?(Q=I.jz(t,i,u,t.a[u]),I.hz(t,Q,i,u,t.d[i][0],t.d[u][1])):t.e==1?(u=0,Q=I.jz(t,i,u,t.a[u]+180),Q<=180?I.hz(t,Q,i,u,t.d[i][0],t.d[u][1]+180):I.hz(t,Q-180,u,i,t.d[u][0],t.d[i][1]-180)):t.e==2?(u=t.a[i]==180?i-1:i,t.a[i]<180?(e+=t.c[i],t.a[i]=180,t.c[i]=t.c[i]*2<<16>>16,t.d[i][1]=360-t.d[i][0]<<16>>16):(T.Pjb(),Q=I.jz(t,i,u,t.a[u]),I.hz(t,Q,u,i,t.d[u][0],t.d[i][1]))):t.e==3?(u=t.a[i]==90?i-1:i,t.a[i]<90?(e+=t.c[i],t.a[i]=90,t.c[i]=t.c[i]*2<<16>>16,t.d[i][1]=180-t.d[i][0]<<16>>16):(T.Pjb(),Q=I.jz(t,i,u,t.a[u]),I.hz(t,Q,u,i,t.d[u][0],t.d[i][1]))):(u=0,Q=I.jz(t,i,u,t.a[u]+360),Q<=360?I.hz(t,Q,i,u,t.d[i][0],t.d[u][1]+360):I.hz(t,Q-360,u,i,t.d[u][0],t.d[i][1]-360))}if(e!=0)for(r=0;r<t.c.length;r++)t.c[r]=mt(k.Math.round(100*t.c[r]/(100+e)))<<16>>16},I.jz=function(t,e,A,P){return mt(k.Math.round((t.a[e]*t.c[e]+P*t.c[A])/(t.c[e]+t.c[A])))},I.kz=function(t){this.e=t},I.lz=function(t){var e;if(this.e=t.e,t.a!=null)for(this.a=d(l.seb,Jt,6,t.a.length,15,1),e=0;e<this.a.length;e++)this.a[e]=360-t.a[this.a.length-e-1]<<16>>16;if(t.d!=null)for(this.d=w1(l.seb,[A0,Jt],[16,6],15,[t.d.length,2],2),e=0;e<this.d.length;e++)this.d[e][0]=360-t.d[this.a.length-e-1][1]<<16>>16,this.d[e][1]=360-t.d[this.a.length-e-1][0]<<16>>16;if(t.c!=null)for(this.c=d(l.seb,Jt,6,t.c.length,15,1),e=0;e<this.c.length;e++)this.c[e]=t.c[this.c.length-e-1];if(t.b!=null)for(this.b=d(l.V6,Y,6,t.b.length,15,1),e=0;e<this.b.length;e++)this.b[e]=t.b[this.b.length-e-1]},G(193,1,{193:1},I.kz,I.lz),U.e=0,l.k8=O(193),I.mz=function(t,e){var A,P,r,i;A=e[1],P=e[2],r=t.j[A]-1,i=t.j[P]-1,r>3||i>3?(this.b=d(l.seb,Jt,6,4,15,1),this.b[0]=45,this.b[1]=135,this.b[2]=225,this.b[2]=315,this.c=w1(l.seb,[A0,Jt],[16,6],15,[4,2],2),this.c[0][0]=30,this.c[0][1]=60,this.c[1][0]=120,this.c[1][1]=150,this.c[2][0]=210,this.c[2][1]=240,this.c[2][0]=300,this.c[2][1]=330,this.a=d(l.seb,Jt,6,4,15,1),this.a[0]=25,this.a[1]=25,this.a[2]=25,this.a[3]=25):(t.o[A]==0||t.C[A]>9)&&(t.o[P]==0||t.C[P]>9)?r==3&&i==3||r==3&&i==2||r==3&&i==1||r==2&&i==3||r==1&&i==3||r==2&&i==2&&(e[0]!=-1||e[3]!=-1)?(this.b=d(l.seb,Jt,6,3,15,1),this.b[0]=60,this.b[1]=180,this.b[2]=300,this.c=w1(l.seb,[A0,Jt],[16,6],15,[3,2],2),this.c[0][0]=45,this.c[0][1]=75,this.c[1][0]=165,this.c[1][1]=195,this.c[2][0]=285,this.c[2][1]=315,this.a=d(l.seb,Jt,6,3,15,1),this.a[0]=33,this.a[1]=33,this.a[2]=33):r==1&&i==2&&e[3]==-1||r==2&&i==1&&e[0]==-1?(this.b=d(l.seb,Jt,6,3,15,1),this.b[0]=60,this.b[1]=180,this.b[2]=300,this.c=w1(l.seb,[A0,Jt],[16,6],15,[3,2],2),this.c[0][0]=45,this.c[0][1]=75,this.c[1][0]=165,this.c[1][1]=195,this.c[2][0]=285,this.c[2][1]=315,this.a=d(l.seb,Jt,6,3,15,1),this.a[0]=40,this.a[1]=20,this.a[2]=40):(r==1&&i==1||r==1&&i==2&&e[3]!=-1||r==2&&i==1&&e[0]!=-1||r==2&&i==2&&e[0]==-1&&e[3]==-1)&&(this.b=d(l.seb,Jt,6,3,15,1),this.b[0]=60,this.b[1]=180,this.b[2]=300,this.c=w1(l.seb,[A0,Jt],[16,6],15,[3,2],2),this.c[0][0]=45,this.c[0][1]=75,this.c[1][0]=165,this.c[1][1]=195,this.c[2][0]=285,this.c[2][1]=315,this.a=d(l.seb,Jt,6,3,15,1),this.a[0]=25,this.a[1]=50,this.a[2]=25):(t.o[A]==0||t.C[A]>9)&&t.o[P]==1||(t.o[P]==0||t.C[P]>9)&&t.o[A]==1?r==3||i==3?(this.b=d(l.seb,Jt,6,6,15,1),this.b[0]=0,this.b[1]=60,this.b[2]=120,this.b[3]=180,this.b[4]=240,this.b[5]=300,this.c=w1(l.seb,[A0,Jt],[16,6],15,[6,2],2),this.c[0][0]=-15,this.c[0][1]=15,this.c[1][0]=45,this.c[1][1]=75,this.c[2][0]=105,this.c[2][1]=135,this.c[3][0]=165,this.c[3][1]=195,this.c[4][0]=225,this.c[4][1]=255,this.c[5][0]=285,this.c[5][1]=315,this.a=d(l.seb,Jt,6,6,15,1),this.a[0]=16,this.a[1]=16,this.a[2]=16,this.a[3]=16,this.a[4]=16,this.a[5]=16):r==1&&i==1?(this.b=d(l.seb,Jt,6,2,15,1),this.b[0]=120,this.b[1]=240,this.c=w1(l.seb,[A0,Jt],[16,6],15,[2,2],2),this.c[0][0]=105,this.c[0][1]=135,this.c[1][0]=225,this.c[1][1]=255,this.a=d(l.seb,Jt,6,2,15,1),this.a[0]=50,this.a[1]=50):t.o[A]==1&&r==2&&i==1||t.o[P]==1&&i==2&&r==1?(this.b=d(l.seb,Jt,6,2,15,1),this.b[0]=90,this.b[1]=270,this.c=w1(l.seb,[A0,Jt],[16,6],15,[2,2],2),this.c[0][0]=75,this.c[0][1]=105,this.c[1][0]=255,this.c[1][1]=285,this.a=d(l.seb,Jt,6,2,15,1),this.a[0]=50,this.a[1]=50):t.o[A]==1&&r==1&&i==2&&e[3]==-1||t.o[P]==1&&i==1&&r==2&&e[0]==-1?(this.b=d(l.seb,Jt,6,3,15,1),this.b[0]=0,this.b[1]=120,this.b[2]=240,this.c=w1(l.seb,[A0,Jt],[16,6],15,[3,2],2),this.c[0][0]=-15,this.c[0][1]=15,this.c[1][0]=105,this.c[1][1]=135,this.c[2][0]=225,this.c[2][1]=255,this.a=d(l.seb,Jt,6,3,15,1),this.a[0]=60,this.a[1]=20,this.a[2]=20):t.o[A]==1&&r==1&&i==2&&e[3]!=-1||t.o[P]==1&&i==1&&r==2&&e[0]!=-1?(this.b=d(l.seb,Jt,6,3,15,1),this.b[0]=0,this.b[1]=120,this.b[2]=240,this.c=w1(l.seb,[A0,Jt],[16,6],15,[3,2],2),this.c[0][0]=-15,this.c[0][1]=15,this.c[1][0]=105,this.c[1][1]=135,this.c[2][0]=225,this.c[2][1]=255,this.a=d(l.seb,Jt,6,3,15,1),this.a[0]=20,this.a[1]=40,this.a[2]=40):r==2&&i==2&&(e[0]==-1||e[3]==-1?(this.b=d(l.seb,Jt,6,2,15,1),this.b[0]=0,this.b[1]=180,this.c=w1(l.seb,[A0,Jt],[16,6],15,[2,2],2),this.c[0][0]=-15,this.c[0][1]=15,this.c[1][0]=165,this.c[1][1]=195,this.a=d(l.seb,Jt,6,2,15,1),this.a[0]=50,this.a[1]=50):(this.b=d(l.seb,Jt,6,2,15,1),this.b[0]=90,this.b[1]=270,this.c=w1(l.seb,[A0,Jt],[16,6],15,[2,2],2),this.c[0][0]=75,this.c[0][1]=105,this.c[1][0]=255,this.c[1][1]=285,this.a=d(l.seb,Jt,6,2,15,1),this.a[0]=50,this.a[1]=50)):t.o[A]==1&&t.o[P]==1?r==1&&i==1?(this.b=d(l.seb,Jt,6,2,15,1),this.b[0]=0,this.b[1]=180,this.c=w1(l.seb,[A0,Jt],[16,6],15,[2,2],2),this.c[0][0]=-15,this.c[0][1]=15,this.c[1][0]=165,this.c[1][1]=195,this.a=d(l.seb,Jt,6,2,15,1),this.a[0]=10,this.a[1]=90):(this.b=d(l.seb,Jt,6,6,15,1),this.b[0]=0,this.b[1]=50,this.b[2]=130,this.b[3]=180,this.b[4]=230,this.b[5]=310,this.c=w1(l.seb,[A0,Jt],[16,6],15,[6,2],2),this.c[0][0]=-15,this.c[0][1]=15,this.c[1][0]=35,this.c[1][1]=65,this.c[2][0]=115,this.c[2][1]=145,this.c[3][0]=165,this.c[3][1]=195,this.c[4][0]=215,this.c[4][1]=245,this.c[5][0]=295,this.c[5][1]=325,this.a=d(l.seb,Jt,6,6,15,1),this.a[0]=40,this.a[1]=5,this.a[2]=5,this.a[3]=40,this.a[4]=5,this.a[5]=5):(this.b=d(l.seb,Jt,6,1,15,1),this.b[0]=180,this.c=w1(l.seb,[A0,Jt],[16,6],15,[1,2],2),this.c[0][0]=165,this.c[0][1]=195,this.a=d(l.seb,Jt,6,1,15,1),this.a[0]=100)},G(251,1,{},I.mz),l.l8=O(251),I.pz=function(){I.pz=u1,I.oz=v(F(l.Y6,1),h0,6,15,[1,sA,dr,2.119999885559082,1.9800000190734863,1.909999966621399,1.7699999809265137,QP,1.5,Br,1.5800000429153442,2.5,2.509999990463257,2.25,2.190000057220459,kr,1.8899999856948853,w9,1.8300000429153442,2.7300000190734863,2.619999885559082,2.5799999237060547,s9,T9,LP,LP,jr,h9,h9,2.380000114440918,2.390000104904175,mr,Fr,1.8799999952316284,w9,b9,2.25,3.2100000381469727,2.8399999141693115,2.75,2.5199999809265137,2.559999942779541,LP,jr,s9,jr,2.1500000953674316,c9,g9,2.430000066757202,T9,d9,1.9900000095367432,2.0399999618530273,2.059999942779541,3.4800000190734863,3.0299999713897705,2.9800000190734863,B9,k9,2.950000047683716,k9,2.9000000953674316,j9,vr,m9,j9,F9,vr,m9,v9,2.740000009536743,2.630000114440918,c9,2.569999933242798,g9,2.4800000190734863,2.4100000858306885,Fr,mr,LP,d9,2.5999999046325684,2.5399999618530273,2.5,2.5,2.5,2.5,2.5,v9,2.930000066757202,B9,2.7100000381469727,2.819999933242798,F9,vr,p9,3.4000000953674316,p9,2.700000047683716]),I.nz=v(F(l.Y6,1),h0,6,15,[.25,pr,.46000000834465027,C9,1.0199999809265137,TA,.75,.7099999785423279,.6299999952316284,.6399999856948853,.9599999785423279,R9,S9,1.2599999904632568,Cr,H9,1.0299999713897705,.9900000095367432,M9,z9,V9,1.4800000190734863,Rr,q9,I9,1.190000057220459,Cr,H9,1.100000023841858,sA,sA,E9,UP,UP,Cr,1.1399999856948853,UP,N9,Sr,Hr,1.5399999618530273,x9,1.3799999952316284,G9,1.25,1.25,sA,S9,O9,Br,yA,yA,Rr,C9,1.350000023841858,mr,z9,oP,Hr,Z9,1.7400000095367432,J9,K9,yP,Y9,yP,X9,QP,Mr,1.6399999856948853,hA,W9,1.5199999809265137,Br,_9,1.309999942779541,$9,I9,1.2300000190734863,E9,1.4199999570846558,1.5,O9,1.5099999904632568,a9,x9,a9,2.2300000190734863,2.009999990463257,b9,1.75,Y9,hA,V9,K9,QP,QP,yP,yP,Mr,X9,J9,Z9,1.6100000143051147,ti,1.4900000095367432,dr,1.409999966621399,q9,$9,G9,UP,_9,Rr,dr,W9,1.75,Mr,ti])},Kt.rz=function(){Kt.rz=u1,Kt.qz=n.lo(\"X\",32)},Kt.sz=function(t,e){Kt.rz();var A,P,r,i,D;for(r=0;r<t.q;r++)for(D=n.ew(t),n.yn(D,r,Kt.qz),n.aw(D,15),P=0;P<D.f;P++)(D.u[P]&H0)!=0&&n.Ep(D,P)==-1&&(i=(n.aw(D,7),D.o[P]==2&&D.j[P]==2?n.jq(D,P,!1):n.lq(D,P,!1)),i!=-1&&(t.H[i]=257,t.T=0,t.D[1][i]==P&&(A=t.D[0][i],t.D[0][i]=P,t.T=0,t.D[1][i]=A,t.T=0),n.kn(t,P,e,0)))},Kt.tz=function(t){Kt.rz();var e,A,P,r;for(Kt.sz(t,1),P=t.q,A=d(l.Nbb,yt,2,P,6,1),e=0;e<P;e++)r=n.ew(t),n.hn(r,e,(n.Ok(),n.Ik)[r.C[e]]+\"*\"),r.C[e]==1?n.yn(r,e,Kt.qz):n.pn(r,e,r.A[e]+5),Kt.uz(r),A[e]=n.og(new n.Lg(r,8));return A},Kt.uz=function(t){var e;for(n.aw(t,15),e=0;e<t.q;e++)(t.u[e]&3)!=0&&n.kn(t,e,1,0)},Kt.qz=0,Kt.vz=function(t,e,A){var P,r;for(P=w1(l.Nbb,[T0,yt],[13,2],6,[t.f,e],2),n.aw(t,7),r=0;r<t.f;r++)P[r]=Kt.wz(t,r,e,A);return P},Kt.wz=function(t,e,A,P){var r,i,D,u,o,Q,L,w,s,h,b,g;for(o=new n.tw(t.f,t.g),L=new y.Zwb,h=0,s=0,D=d(l.teb,wt,6,t.f,16,1),i=d(l.Z6,H,6,t.f,15,1),g=0;g<A&&s<t.f;g++){if(s==0)i[0]=e,D[e]=!0,s=1;else{for(b=s,Q=h;Q<s;Q++)for(r=i[Q],w=0;w<t.j[r];w++)if(u=t.i[r][w],!D[u])switch(P){case 0:D[u]=!0,i[b++]=u;break;case 1:Kt.yz(t,r)&&Kt.yz(t,u)||(D[u]=!0,i[b++]=u)}h=s,s=b}n.yo(t,o,D,!0,null),y.Wwb(L,n.og(new n.Lg(o,8)))}return y.Ywb(L,d(l.Nbb,yt,2,L.a.a.length,6,1))},Kt.xz=function(t,e,A){var P,r,i,D,u,o;for(u=n.Lq(new n.Xq(!0),t),r=-1,i=0;i<u.q;i++)if(P=u.t==null||u.t[i]==null?null:T.Zib((D=u.t[i],V1.Cmb(),D)),P!=null&&(o=c.Szb(\"*\").length,T._ib(c.Szb(P).substr(c.Szb(P).length-o,o),\"*\"))){r=i;break}return r>=0?Kt.wz(u,r,e,A):d(l.Nbb,yt,2,0,6,1)},Kt.yz=function(t,e){return!(t.C[e]!=6||t.s[e]!=0||n.kp(t,e)+t.j[e]!=4)},Kt.Jz=function(){Kt.Jz=u1,Kt.zz=k.Math.cos(Sn),Kt.Ez=k.Math.sin(Sn),Kt.Bz=k.Math.cos(zr),Kt.Gz=k.Math.sin(zr),Kt.Dz=k.Math.cos(s0),Kt.Iz=k.Math.sin(s0),Kt.Az=k.Math.cos(bA),Kt.Fz=k.Math.sin(bA),Kt.Cz=k.Math.cos(lr),Kt.Hz=k.Math.sin(lr),k.Math.cos(ei),k.Math.sin(ei)},Kt.Kz=function(t){Kt.Jz();var e,A;for(n.aw(t,1),A=t.f,e=0;e<A;e++)Kt.Lz(t,e)},Kt.Lz=function(t,e){Kt.Jz();var A,P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S,p,M,z,q,x,J,E,N,ft,Lt,ot,st,ut;switch(x=n.kp(t,e),st=t.J[e].a,ut=t.J[e].b,x){case 1:{if(E=t.j[e],E==0?(L=n.Ro(t,!0),h=0):(L=st-n.Ll(t,t.i[e][0]),h=ut-n.Ml(t,t.i[e][0])),E==1)p=n.Qk(t,st+Kt.Cz*L+Kt.Hz*h,ut-Kt.Hz*L+Kt.Cz*h,0);else if(E==2)L=st-.5*(n.Ll(t,t.i[e][0])+n.Ll(t,t.i[e][1])),h=ut-.5*(n.Ml(t,t.i[e][0])+n.Ml(t,t.i[e][1])),p=n.Qk(t,st+L,ut+h,0);else if(E==3){for(ft=t.i[e][0],m=1;m<3;m++)u=t.k[e][m],(t.H[u]==129||t.H[u]==257)&&(ft=t.i[e][m]);if(A=k.Math.abs(n.ko(n.jo(t.J[e].a,t.J[e].b,n.Ll(t,t.i[e][0]),n.Ml(t,t.i[e][0])),n.jo(t.J[e].a,t.J[e].b,n.Ll(t,t.i[e][1]),n.Ml(t,t.i[e][1])))),P=k.Math.abs(n.ko(n.jo(t.J[e].a,t.J[e].b,n.Ll(t,t.i[e][0]),n.Ml(t,t.i[e][0])),n.jo(t.J[e].a,t.J[e].b,n.Ll(t,t.i[e][2]),n.Ml(t,t.i[e][2])))),r=k.Math.abs(n.ko(n.jo(t.J[e].a,t.J[e].b,n.Ll(t,t.i[e][1]),n.Ml(t,t.i[e][1])),n.jo(t.J[e].a,t.J[e].b,n.Ll(t,t.i[e][2]),n.Ml(t,t.i[e][2])))),N=!0,A>P&&A>r?P+r<t1&&(N=!1,L=st-.5*(n.Ll(t,t.i[e][0])+n.Ll(t,t.i[e][1])),h=ut-.5*(n.Ml(t,t.i[e][0])+n.Ml(t,t.i[e][1]))):P>A&&P>r?A+r<t1&&(N=!1,L=st-.5*(n.Ll(t,t.i[e][0])+n.Ll(t,t.i[e][2])),h=ut-.5*(n.Ml(t,t.i[e][0])+n.Ml(t,t.i[e][2]))):A+P<t1&&(N=!1,L=st-.5*(n.Ll(t,t.i[e][1])+n.Ll(t,t.i[e][2])),h=ut-.5*(n.Ml(t,t.i[e][1])+n.Ml(t,t.i[e][2]))),N){for(Lt=t.i[e][0],Q=U0,B=0;B<3;B++)i=t.i[e][B],i!=ft&&(o=k.Math.pow(t.J[e].a-t.J[i].a,2)+k.Math.pow(t.J[e].b-t.J[i].b,2),o<Q&&(Lt=i,Q=o,T.Pjb()));p=n.Qk(t,(t.J[ft].a+t.J[Lt].a)/2,(t.J[ft].b+t.J[Lt].b)/2,0)}else p=n.Qk(t,st+L,ut+h,0)}else p=n.Qk(t,st+L,ut+h,0);n.yn(t,p,1),n.Tk(t,e,p,1)}break;case 2:if(J=t.j[e],J==1)L=st-n.Ll(t,t.i[e][0]),h=ut-n.Ml(t,t.i[e][0]),p=n.Qk(t,st+(Kt.Dz*L-Kt.Iz*h)*.7,ut+(Kt.Iz*L+Kt.Dz*h)*.7,0),n.yn(t,p,1),n.Tk(t,e,p,1),p=n.Qk(t,st+(Kt.Az*L-Kt.Fz*h)*.7,ut+(Kt.Fz*L+Kt.Az*h)*.7,0),n.yn(t,p,1),n.Tk(t,e,p,1);else if(J==2)w=st-n.Ll(t,t.i[e][0]),b=ut-n.Ml(t,t.i[e][0]),s=st-n.Ll(t,t.i[e][1]),g=ut-n.Ml(t,t.i[e][1]),z=k.Math.sqrt(w*w+b*b)*.7,q=k.Math.sqrt(s*s+g*g)*.7,L=w+s,h=b+g,M=k.Math.sqrt(L*L+h*h),D=(z+q)/2,L=L/M*D,h=h/M*D,ot=n.Ep(t,e),p=n.Qk(t,st+Kt.zz*L-Kt.Ez*h,ut+Kt.Ez*L+Kt.zz*h,0),n.yn(t,p,1),ot>-1?n.Tk(t,e,p,1):n.Tk(t,e,p,257),p=n.Qk(t,st+Kt.Bz*L-Kt.Gz*h,ut+Kt.Gz*L+Kt.Bz*h,0),n.yn(t,p,1),n.Tk(t,e,p,1);else for(S=0;S<x;S++)p=n.Qk(t,st,ut,0),n.yn(t,p,1),n.Tk(t,e,p,1);break;case 3:t.i[e][0]>0?(L=(st-n.Ll(t,t.i[e][0]))*.7,h=(ut-n.Ml(t,t.i[e][0]))*.7,p=n.Qk(t,st+L,ut+h,0),n.yn(t,p,1),n.Tk(t,e,p,1),p=n.Qk(t,st-h,ut+L,0),n.yn(t,p,1),n.Tk(t,e,p,1),p=n.Qk(t,st+h,ut-L,0),n.yn(t,p,1),n.Tk(t,e,p,1)):(L=n.Ro(t,!0),h=n.Ro(t,!0),p=n.Qk(t,st+L,ut+h,0),n.yn(t,p,1),n.Tk(t,e,p,1),p=n.Qk(t,st-h*Kt.Dz,ut+L*Kt.Iz,0),n.yn(t,p,1),n.Tk(t,e,p,1),p=n.Qk(t,st-h*Kt.Dz,ut-L*Kt.Iz,0),n.yn(t,p,1),n.Tk(t,e,p,1));break;default:{for(S=0;S<x;S++)p=n.Qk(t,st,ut,0),n.yn(t,p,1),n.Tk(t,e,p,1);break}}},Kt.Mz=function(t){Kt.Jz();var e,A;for(n.aw(t,1),A=0,e=0;e<t.q;e++)t.C[e]==1?++A:A+=t.e[e]-t.j[e]+n.kp(t,e);return A},Kt.zz=0,Kt.Az=0,Kt.Bz=0,Kt.Cz=0,Kt.Dz=0,Kt.Ez=0,Kt.Fz=0,Kt.Gz=0,Kt.Hz=0,Kt.Iz=0,X.Oz=function(t,e,A){var P,r,i;for(i=e.length,P=new X.tB(t.f,i,!1),P.a[0]=0,P.b[0]=0,r=0;r<i;r++)P.k[r]=128-i,P.e[r]=e[r];i<8?X.Xz(P):X.Vz(t,P,e,A),X.EA(t.d,P)},X.Pz=function(t,e,A,P,r){var i,D,u,o,Q,L,w,s;for(D=d(l.Z6,H,6,r,15,1),i=0;i<t.f.q;i++){for(o=0;o<n.Ho(t.f,i);o++){for(s=A[n.Vo(t.f,i,o)],Q=0;Q<o&&!(s<D[Q]);Q++);for(L=o;L>Q;L--)D[L]=D[L-1];D[Q]=s}for(w=n.Ho(t.f,i),n.ah(e[i],i),n.Zg(e[i],P,l.Ieb(A[i])),n.Zg(e[i],(r-w)*(P+1),0),u=0;u<w;u++)n.Zg(e[i],P+1,l.Ieb(D[u]))}},X.Qz=function(t){var e,A,P,r,i,D,u,o,Q,L,w;for(P=n.Mg(t.f.f),o=2,A=0;A<t.f.f;A++)o=k.Math.max(o,n.Ho(t.f,A));for(i=(62+2*P+o*(P+1))/63|0,r=d(l.j7,Hn,102,t.f.q,0,1),e=0;e<t.f.q;e++)r[e]=new n.bh(i),n.ah(r[e],e);for(w=d(l.Z6,H,6,t.f.q,15,1),D=0;D<t.f.g;D++)u=n.bm(t.f,D),(u==1||u==2)&&(n.$g(r[n.Ul(t.f,0,D)],l.Ieb(u)),n.$g(r[n.Ul(t.f,1,D)],l.Ieb(u)));Q=X.Rz(r,w);do L=Q,X.Pz(t,r,w,P,o),Q=X.Rz(r,w);while(L!=Q);return w},X.Rz=function(t,e){var A,P;for(P=0,y.Rqb(t,0,t.length,null),A=0;A<t.length;A++)(A==0||n._g(t[A],t[A-1])!=0)&&++P,e[t[A].a]=P;return P},X.Sz=function(t){var e,A,P,r,i,D,u,o,Q,L,w,s;for(o=new y.rqb(t.d);o.a<o.c.a.length;)for(u=y.qqb(o),Q=0;Q<u.f.length;Q++)if(P=u.f[Q],n.am(t.f,P)==2&&(!n.fq(t.f,P)&&(n.bm(t.f,P)==3||n.bm(t.f,P)==0)&&n.Gn(t.f,P),!n.cq(t.f,P)&&n.Wo(t.f,n.Ul(t.f,0,P))>1&&n.Wo(t.f,n.Ul(t.f,1,P))>1&&(n.bm(t.f,P)==1||n.bm(t.f,P)==2))){for(s=d(l.Z6,H,6,2,15,1),r=d(l.Z6,H,6,2,15,1),L=0;L<2;L++)for(s[L]=t.f.M,r[L]=n.Ul(t.f,L,P),w=0;w<n.Ho(t.f,r[L]);w++)i=n.Vo(t.f,r[L],w),i!=n.Ul(t.f,1-L,P)&&s[L]>i&&(s[L]=i);D=X.ZA(u.a[u.g[r[0]]],u.b[u.g[r[0]]],u.a[u.g[r[1]]],u.b[u.g[r[1]]]),e=X.ZA(u.a[u.g[s[0]]],u.b[u.g[s[0]]],u.a[u.g[r[0]]],u.b[u.g[r[0]]]),A=X.ZA(u.a[u.g[r[1]]],u.b[u.g[r[1]]],u.a[u.g[s[1]]],u.b[u.g[s[1]]]),X.Zz(D,e)<0^X.Zz(D,A)<0^n.bm(t.f,P)==2&&X.hB(u,P)}},X.Tz=function(t){var e,A,P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m;for(s=new y.Jj,m=new y.Jj,P=new y.Jj,i=new y.rqb(t.d);i.a<i.c.a.length;){for(r=y.qqb(i),D=0,c.kzb(P.a,0),u=0;u<r.e.length;u++)e=r.e[u],A=t.i[e],A!=0&&(y.pj(P,new X._A(r,u,A)),D+=A);if(D!=0)for(y.Gj(P,new X.QA),Q=new y.rqb(P);Q.a<Q.c.a.length&&(o=y.qqb(Q),!(D*o.b>0&&(A=k.Math.abs(D)>=k.Math.abs(o.b)?o.b:D,D-=A,y.pj(A<0?s:m,new X._A(r,o.a,A)),D==0))););}if(s.a.length==0||m.a.length==0)return null;for(y.Gj(m,new X.JA),y.Gj(s,new X.NA),g=new y.rqb(m);g.a<g.c.a.length;)for(h=y.qqb(g),w=new y.rqb(s);w.a<w.c.a.length;)if(L=y.qqb(w),h.b==-L.b)return t.i[X.lB(h.c,h.a)]-=h.b,t.i[X.lB(L.c,L.a)]-=L.b,new X.WA(h.c,L.c,h.a,L.a);for(B=new y.rqb(m);B.a<B.c.a.length;)for(h=y.qqb(B),w=new y.rqb(s);w.a<w.c.a.length;)if(L=y.qqb(w),h.b>-L.b)return t.i[X.lB(h.c,h.a)]+=L.b,t.i[X.lB(L.c,L.a)]-=L.b,new X.WA(h.c,L.c,h.a,L.a);for(b=new y.rqb(m);b.a<b.c.a.length;)for(h=y.qqb(b),w=new y.rqb(s);w.a<w.c.a.length;)if(L=y.qqb(w),h.b<-L.b)return t.i[X.lB(h.c,h.a)]-=h.b,t.i[X.lB(L.c,L.a)]+=h.b,new X.WA(h.c,L.c,h.a,L.a);return null},X.Uz=function(t){return t.d.a.length<2?null:new X.VA(y.uj(t.d,0),y.uj(t.d,1))},X.Vz=function(t,e,A,P){var r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S,p,M,z,q,x,J,E;if(L=v(F(l.X6,2),b1,15,0,[v(F(l.X6,1),Bt,6,15,[20]),null,null,v(F(l.X6,1),Bt,6,15,[0,10]),null,null,v(F(l.X6,1),Bt,6,15,[-4,12]),v(F(l.X6,1),Bt,6,15,[0,0,-7.5]),null,null,null,null,v(F(l.X6,1),Bt,6,15,[8.571428571428571,-8.571428571428571]),null,null,null,v(F(l.X6,1),Bt,6,15,[-2.4])]),w=v(F(l.Z6,2),M1,7,0,[v(F(l.Z6,1),H,6,15,[146]),v(F(l.Z6,1),H,6,15,[627]),null,v(F(l.Z6,1),H,6,15,[2457,1170]),null,v(F(l.Z6,1),H,6,15,[2451,8643,2519]),v(F(l.Z6,1),H,6,15,[9362,14798]),v(F(l.Z6,1),H,6,15,[34377,-2147448999,26214]),null,v(F(l.Z6,1),H,6,15,[37449,137313,95703,34371,37815,54891,132867,-2147309741,54857,55129,-2147449005,-2147449065]),null,v(F(l.Z6,1),H,6,15,[530697,531819,899169,137289,694617,-2146951863,-2146952797,-2146939175,-2146929547,-2146929564,-2146625111,-2146931799,-2146940503,-2146931935]),v(F(l.Z6,1),H,6,15,[1007293,610915]),v(F(l.Z6,1),H,6,15,[542985,137283,2122017,530691,2206773,-2144711351,219209,2840841,137555,-2146871031,-2147264167,613705,-2145360543,-2146625271,694611,2454837,-2145356703,-2147345133,-2146928951,-2146931805,-2144641719,-2146951869,-2146625237,-2146624183,2841963,1074905,-2146625117,2799955,-2144723645,138583,859225,-2145264843,-2145216253,-2146624149,-2144700727,-2146928917,-2143905527,-2144045771,-2146789097,2288547,544407,2104323,-2146911977,-2144479405,3633737,-2146870089,-2146952169]),null,v(F(l.Z6,1),H,6,15,[8487297,2172633,2116611,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8829813]),v(F(l.Z6,1),H,6,15,[14071213])]),S=1<<e.e.length,D=0,o=0,e.e.length>7)for(h=0;h<e.e.length;h++)u=X.bA(t,A,P,h),u==1?D+=S:u==2&&(o+=S),D>>>=1,o>>>=1;if(z=e.e.length-9,e.e.length>=9&&e.e.length<=25&&w[z]!=null)for(E=0;E<w[z].length;E++)for(m=(n1&w[z][E])==0,Q=Mt&w[z][E],g=!1;!g;g=!g){if(g){if(m)break;for(p=0,r=1;r!=S;r<<=1)p<<=1,(Q&r)!=0&&(p|=1);Q=p}for(q=0;q<e.e.length;q++){if((Q&D)==0&&(~Q&o)==0){for(i=0,s=ni*(L[z]==null?0:L[z][E]),M=0,x=Q,B=!0,b=0;b<e.e.length;b++)B&&++M,(x&1)==0&&(B=!B),x>>>=1;for(J=M>(e.e.length/2|0),h=1;h<e.e.length;h++)e.a[h]=e.a[h-1]+k.Math.sin(i),e.b[h]=e.b[h-1]+k.Math.cos(i),(Q&1)==0&&(J=!J),i+=s+(J?s0:bA),Q>>>=1;return}(Q&1)!=0&&(Q|=S),Q>>>=1}}X.Yz(e,D,o)},X.Wz=function(t){var e,A,P,r,i,D,u,o,Q,L;for(e=null,Q=null,D=0;D<t.f.g;D++)if(n.dm(t.f,D)==16){for(A=n.Ul(t.f,0,D),r=-1,u=0;u<t.d.a.length&&(r=X.mB(y.uj(t.d,u),A),r==-1);u++);for(P=n.Ul(t.f,1,D),i=-1,o=0;o<t.d.a.length&&(i=X.mB(y.uj(t.d,o),P),i==-1);o++);u!=o&&(u>o&&(L=u,u=o,o=L,L=r,r=i,i=L),Q==null&&(Q=d(l.r8,T0,450,t.d.a.length,0,2)),Q[o]==null&&(Q[o]=d(l.r8,{450:1,4:1,5:1,8:1},107,o,0,1)),Q[o][u]?X.TA(Q[o][u],r,i):($1(Q[o],u,new X.WA(y.uj(t.d,u),y.uj(t.d,o),r,i)),!e&&(e=new y.Jj),y.pj(e,Q[o][u])))}return e},X.Xz=function(t){var e,A;for(e=t1-t1*(t.e.length-2)/t.e.length,A=1;A<t.e.length;A++)t.a[A]=t.a[A-1]+k.Math.sin(e*(A-1)),t.b[A]=t.b[A-1]+k.Math.cos(e*(A-1))},X.Yz=function(t,e,A){var P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m;if(e==0||(e&A)!=0){X.Xz(t);return}for(B=-1,m=0,i=1<<t.e.length-2,r=1<<t.e.length-1,u=1,D=2,Q=0;Q<t.e.length;Q++)(A&(r|u))==0&&(e&(r|u))!=0&&(e&i)==0&&(b=0,(A&i)!=0&&(b+=4),(e&r)!=0&&(b+=2),(e&u)!=0&&(b+=1),m<b&&(m=b,B=Q)),i=r,r=u,u=D,D=1<<(Q+2<t.e.length?Q+2:Q+2-t.e.length);if(B==-1){X.Xz(t);return}for(s=0,s|=1<<B,h=2;h<t.e.length-1;){if(w=B+h<t.e.length?B+h:B+h-t.e.length,r=1<<(w==0?t.e.length-1:w-1),(A&r)!=0){++h;continue}if(u=1<<w,(e&r)!=0){if((A&u)!=0){X.Xz(t);return}s|=u,h+=2;continue}if(D=1<<(w+1<t.e.length?w+1:w+1-t.e.length),(e&u)!=0&&(A&D)!=0){s|=u,h+=3;continue}++h}if(s==0){X.Xz(t);return}for(P=t1-t1*(t.e.length-2)/t.e.length,L=1;L<t.e.length;L++)t.a[L]=t.a[L-1]+k.Math.sin(P*(L-1)),t.b[L]=t.b[L-1]+k.Math.cos(P*(L-1));for(u=1,g=2*k.Math.sin(P/2),o=0;o<t.e.length;o++)(s&u)!=0&&(t.a[o]+=g*k.Math.cos(P*(o-.5)),t.b[o]-=g*k.Math.sin(P*(o-.5))),u<<=1},X.Zz=function(t,e){var A;for(A=t-e;A<or;)A+=G1;for(;A>t1;)A-=G1;return A},X.$z=function(t,e,A){var P,r;for(P=0,r=0;r<n.Ho(t.f,A);r++)X.oB(e,n.Vo(t.f,A,r))&&++P;return P},X._z=function(t,e,A,P){var r,i,D,u,o;return u=X.mB(e,P),o=X.mB(A,P),X.sB(A,e.a[u]-A.a[o],e.b[u]-A.b[o]),r=X.yA(t,e,P),i=X.yA(t,A,P),D=0,X.$z(t,e,P)==1&&X.$z(t,A,P)==1&&(D=s0),X.rB(A,A.a[o],A.b[o],r-i+D+t1),X.eA(t,e,A,1)},X.aA=function(t,e,A,P,r){var i,D,u,o,Q,L,w,s,h,b,g,B,m,S,p,M,z,q,x,J,E,N,ft,Lt,ot,st,ut,rt,Ut;for(p=d(l.Z6,H,6,r,15,1),M=d(l.Z6,H,6,r,15,1),g=0;g<r;g++)p[g]=X.mB(e,P[g]),M[g]=X.mB(A,P[g]);for(ft=0,ot=0,Lt=0,st=0,B=0;B<r;B++)ft+=e.a[p[B]],ot+=e.b[p[B]],Lt+=A.a[M[B]],st+=A.b[M[B]];for(ft/=r,ot/=r,Lt/=r,st/=r,X.sB(A,ft-Lt,ot-st),Q=d(l.s8,v1,41,r,0,1),w=d(l.s8,v1,41,r,0,1),i=d(l.s8,v1,41,r,0,1),D=d(l.s8,v1,41,r,0,1),m=0;m<r;m++)Q[m]=new X.YA(ft,ot,e.a[p[m]],e.b[p[m]]),w[m]=new X.YA(ft,ot,A.a[M[m]],A.b[M[m]]),i[m]=new X.XA(Q[m].a-w[m].a,Q[m].b*w[m].b),D[m]=new X.XA(Q[m].a+w[m].a,Q[m].b*w[m].b);for(q=X.CA(i,r),x=X.CA(D,r),rt=0,Ut=0,S=0;S<r;S++)for(z=0;z<n.Ho(t.f,P[S]);z++)u=n.Vo(t.f,P[S],z),X.oB(e,u)&&!X.oB(A,u)&&++rt,!X.oB(e,u)&&X.oB(A,u)&&++Ut;for(L=d(l.s8,v1,41,rt,0,1),s=d(l.s8,v1,41,Ut,0,1),h=d(l.s8,v1,41,Ut,0,1),rt=0,Ut=0,b=0;b<r;b++)for(z=0;z<n.Ho(t.f,P[b]);z++)u=n.Vo(t.f,P[b],z),X.oB(e,u)&&!X.oB(A,u)&&(o=X.mB(e,u),L[rt]=new X.YA(e.a[p[b]],e.b[p[b]],e.a[o],e.b[o]),++rt),!X.oB(e,u)&&X.oB(A,u)&&(o=X.mB(A,u),ut=new X.YA(A.a[M[b]],A.b[M[b]],A.a[o],A.b[o]),s[Ut]=new X.XA(q.a+ut.a,ut.b),h[Ut]=new X.XA(x.a-ut.a,ut.b),++Ut);return J=X.CA(L,rt),E=X.CA(s,Ut),N=X.CA(h,Ut),k.Math.abs(X.Zz(J.a,E.a))>k.Math.abs(X.Zz(J.a,N.a))?X.rB(A,ft,ot,q.a):(X.gB(A,ft,ot),X.rB(A,ft,ot,x.a)),X.eA(t,e,A,r)},X.bA=function(t,e,A,P){var r,i,D,u,o,Q;return i=P==e.length-1?0:P+1,u=P==0?e.length-1:P-1,D=i==e.length-1?0:i+1,n.am(t.f,A[P])==2&&(r=n.bm(t.f,A[P]),r==1||r==2)?(X.jA(t,e[u],e[P],e[i])^X.jA(t,e[D],e[i],e[P])&&(r=r==1?2:1),r):n.fq(t.f,A[P])?(o=n.ht(n.Ap(t.f),A[u],A[P]),Q=n.ht(n.Ap(t.f),A[i],A[P]),o!=-1||Q!=-1?o==Q?2:1:2):0},X.cA=function(t,e){var A,P,r,i,D,u,o,Q,L,w,s,h;for(r=d(l.Z6,H,6,t.f.q,15,1),i=d(l.Z6,H,6,t.f.q,15,1),D=d(l.Z6,H,6,t.f.q,15,1),u=d(l.Z6,H,6,t.f.q,15,1),r[0]=e,D[e]=1,u[0]=-1,P=0,o=0;P<=o;){if(P==0||!t.b[r[P]])for(Q=0;Q<n.Ho(t.f,r[P]);Q++)A=n.Vo(t.f,r[P],Q),s=n.Xo(t.f,r[P],Q),D[A]==0&&!t.c[s]&&(r[++o]=A,i[o]=s,D[A]=D[r[P]]+1,u[o]=P);if(P==o){for(h=new X.$A(D[r[P]]),L=P,w=0;w<h.a.length;w++)h.a[w]=r[L],h.b[w]=i[L],L=u[L];return h}++P}return null},X.dA=function(t){var e,A,P,r;for(r=0,P=null,A=new y.rqb(t);A.a<A.c.a.length;)e=y.qqb(A),r<e.b[0].e.length*e.b[1].e.length&&(r=e.b[0].e.length*e.b[1].e.length,P=e);return P},X.eA=function(t,e,A,P){var r,i,D,u,o;for(i=new X.tB(t.f,e.e.length+A.e.length-P,e.i|A.i),r=0,u=0;u<e.e.length;u++)i.e[r]=e.e[u],i.k[r]=e.k[u],i.a[r]=e.a[u],i.b[r++]=e.b[u];for(D=0;D<A.e.length;D++)o=X.mB(e,A.e[D]),o==-1?(i.e[r]=A.e[D],i.k[r]=A.k[D],i.a[r]=A.a[D],i.b[r++]=A.b[D]):i.k[o]<A.k[D]&&(i.k[o]=A.k[D],i.a[o]=A.a[D],i.b[o]=A.b[D]);return i},X.fA=function(t,e,A){var P,r,i,D,u,o,Q,L,w,s,h,b;for(u=d(l.Z6,H,6,t.f.q,15,1),o=d(l.Z6,H,6,t.f.q,15,1),Q=d(l.Z6,H,6,t.f.q,15,1),L=d(l.Z6,H,6,t.f.q,15,1),u[0]=A,Q[A]=1,L[0]=-1,D=0,w=0;D<=w;){for(s=0;s<n.Ho(t.f,u[D]);s++){if(r=n.Vo(t.f,u[D],s),b=n.Xo(t.f,u[D],s),r==e){for(i=Q[u[D]],P=d(l.Z6,H,6,i,15,1),P[0]=b,h=1;h<i;h++)P[h]=o[D],D=L[D];return P}Q[r]==0&&(u[++w]=r,o[w]=b,Q[r]=Q[u[D]]+1,L[w]=D)}if(D==w)return null;++D}return null},X.gA=function(t,e){var A,P,r,i,D,u,o,Q,L,w,s,h,b;for(A=n.Ul(t.f,0,e),P=n.Ul(t.f,1,e),D=d(l.Z6,H,6,t.f.q,15,1),u=d(l.Z6,H,6,t.f.q,15,1),o=d(l.Z6,H,6,t.f.q,15,1),Q=d(l.Z6,H,6,t.f.q,15,1),D[0]=A,D[1]=P,u[1]=e,o[A]=1,o[P]=2,Q[0]=-1,Q[1]=0,i=1,L=1;i<=L;){for(w=0;w<n.Wo(t.f,D[i]);w++){if(r=n.Vo(t.f,D[i],w),i>1&&r==A){for(b=new X.$A(o[D[i]]),u[0]=n.Xo(t.f,D[i],w),s=i,h=0;h<b.a.length;h++)b.a[h]=D[s],b.b[h]=u[s],s=Q[s];return b}o[r]==0&&n.bq(t.f,r)&&(D[++L]=r,u[L]=n.Xo(t.f,D[i],w),o[r]=o[D[i]]+1,Q[L]=i)}++i}return null},X.hA=function(t,e,A,P){var r,i,D,u,o,Q;for(D=d(l.Z6,H,6,t.f.q,15,1),u=d(l.Z6,H,6,t.f.q,15,1),D[0]=A,D[1]=e,u[A]=1,u[e]=2,i=1,o=1;i<=o;){for(Q=0;Q<n.Wo(t.f,D[i]);Q++){if(r=n.Vo(t.f,D[i],Q),r==P)return 1+u[D[i]];u[r]==0&&n.bq(t.f,r)&&(D[++o]=r,u[r]=u[D[i]]+1)}++i}return 0},X.iA=function(t,e){var A,P,r,i,D,u,o;for(u=(e.T&15)!=0,o=e.T&248,!t.g&&(t.g=new y.tvb),(t.e&2)!=0&&n.mq(e,!1),t.f=e,n.aw(t.f,7),t.d=new X.GA,t.b=d(l.teb,wt,6,t.f.q,16,1),t.c=d(l.teb,wt,6,t.f.r,16,1),t.i=d(l.Z6,H,6,t.f.q,15,1),A=0;A<t.f.q;A++)t.i[A]=n.xl(t.f,A);for((t.e&12)!=0&&X.tA(t),(t.e&1)==0&&X.Nz&&X.vA(t,X.Nz),X.sA(t),X.oA(t),X.qA(t),X.oA(t),i=new y.rqb(t.d);i.a<i.c.a.length;)P=y.qqb(i),X.pB(P);for(X.Sz(t),X.wA(t),X.uA(t),X.nA(t),X.lA(t),X.pA(t),r=new y.rqb(t.d);r.a<r.c.a.length;)for(P=y.qqb(r),D=0;D<P.e.length;D++)n.vn(t.f,P.e[D],P.a[D]),n.wn(t.f,P.e[D],P.b[D]),n.xn(t.f,P.e[D],0);u&&(n.rq(t.f,o),n.uq(t.f)),t.a&&n.Vm(t.f)},X.jA=function(t,e,A,P){var r,i;for(i=0;i<n.Wo(t.f,A);i++)if(r=n.Vo(t.f,A,i),r!=P&&r<e)return!1;return!0},X.kA=function(t,e,A){var P;X.UA(e,A,(t.e&12)!=0),P=X.eA(t,e.b[0],e.b[1],0),X.zA(t,e.b[0],e.b[1],P)},X.lA=function(t){var e;for(e=X.Tz(t);e;)X.kA(t,e,yA),e=X.Tz(t)},X.mA=function(t,e,A,P){var r,i,D,u,o;for(r=d(l.Z6,H,6,P,15,1),i=0,D=0;D<e.e.length;D++)for(u=0;u<A.e.length;u++)e.e[D]==A.e[u]&&(r[i++]=e.e[D]);o=P==1?X._z(t,e,A,r[0]):X.aA(t,e,A,r,P),X.zA(t,e,A,o)},X.nA=function(t){var e,A;for(A=X.Wz(t);A;)e=X.dA(A),X.kA(t,e,sA),A=X.Wz(t)},X.oA=function(t){for(var e,A,P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S;;){for(S=0,h=0,B=null,m=null,D=1;D<t.d.a.length;D++)for(P=y.uj(t.d,D),u=0;u<D;u++){for(r=y.uj(t.d,u),e=0,A=0,b=0,g=0,L=0;L<P.e.length;L++)for(s=0;s<r.e.length;s++)P.e[L]==r.e[s]&&(++A,e=P.e[L],b<P.k[L]&&(b=P.k[L]),g<r.k[s]&&(g=r.k[s]));if(A>0&&(i=A==1&&X.$z(t,P,e)==1&&X.$z(t,r,e)==1?0:1,b>g?o=(i<<24)+(b<<16)+(g<<8)+A:o=(i<<24)+(g<<16)+(b<<8)+A,S<o)){for(S=o,h=A,b=0,g=0,w=0;w<P.e.length;w++)b<P.k[w]&&(b=P.k[w]);for(Q=0;Q<r.e.length;Q++)g<r.k[Q]&&(g=r.k[Q]);b>g?(B=P,m=r):(B=r,m=P)}}if(S==0)break;h==B.e.length?y.Cj(t.d,B):h==m.e.length?y.Cj(t.d,m):X.mA(t,B,m,h)}},X.pA=function(t){var e;for(e=X.Uz(t);e;)X.kA(t,e,R9),e=X.Uz(t)},X.qA=function(t){for(var e,A,P,r,i,D,u;;){for(i=null,e=0;e<t.f.q;e++){for(u=0,r=0;r<n.Ho(t.f,e);r++)t.c[n.Xo(t.f,e,r)]||++u;u==1&&(D=X.cA(t,e),(!i||D.a.length>i.a.length)&&(i=D))}if(!i)break;for(A=new X.tB(t.f,i.a.length,!1),P=0;P<i.a.length;P++)t.b[i.a[P]]=!0,P<i.a.length-1&&(t.c[i.b[P]]=!0),A.e[P]=i.a[P],A.a[P]=k.Math.cos(Sn)*P,A.b[P]=(P&1)==1?0:.5,A.k[P]=128+i.a.length;X.EA(t.d,A)}},X.rA=function(t,e,A){var P,r,i,D,u,o,Q,L,w,s;for(i=0;i<t.f.r;i++)if(P=n.Ul(t.f,0,i),r=n.Ul(t.f,1,i),!(n.cq(t.f,i)||n.am(t.f,i)!=1||n.Ho(t.f,P)==1||n.Ho(t.f,r)==1)&&!((t.e&4)!=0&&n.Gm(t.f,P)&&n.Gm(t.f,r))){for(w=!1,Q=0;Q<2;Q++)if(D=n.Ul(t.f,Q,i),n.Ho(t.f,D)>2){for(s=!0,o=-1,L=0;L<n.Ho(t.f,D);L++)u=n.Vo(t.f,D,L),u!=n.Ul(t.f,1-Q,i)&&(o==-1?o=A[u]:o!=A[u]&&(s=!1));if(s){w=!0;break}}w||((t.e&8)!=0&&n.Gm(t.f,P)&&n.Gm(t.f,r)?e[i]=1:e[i]=2)}},X.sA=function(t){var e,A,P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S,p,M,z,q,x,J,E,N,ft,Lt,ot,st,ut,rt,Ut,ht;for(P=0;P<t.f.f;P++)if(n.Ho(t.f,P)>4){for(s=new X.tB(t.f,1+n.Ho(t.f,P),!1),s.a[n.Ho(t.f,P)]=0,s.b[n.Ho(t.f,P)]=0,s.k[n.Ho(t.f,P)]=32,s.e[n.Ho(t.f,P)]=P,t.b[P]=!0,b=0;b<n.Ho(t.f,P);b++)Q=n.Vo(t.f,P,b),s.a[b]=k.Math.sin(s0*b-In),s.b[b]=k.Math.cos(s0*b-In),s.k[b]=32,s.e[b]=Q,t.b[Q]=!0,t.c[n.Xo(t.f,P,b)]=!0;X.EA(t.d,s)}for(st=n.Ap(t.f),ot=0;ot<st.i.a.length;ot++){if(ut=y.uj(st.j,ot).length,ft=y.uj(st.i,ot),rt=!1,(t.e&12)!=0){for(rt=!0,b=0;b<ut;b++)if(!n.Gm(t.f,ft[b])){rt=!1;break}}if(!rt){for(m=!1,g=0;g<ut;g++)if(n.Qo(t.f,ft[g])==ut){m=!0;break}if(m)for(Lt=y.uj(st.j,ot),X.Oz(t,ft,Lt),b=0;b<ut;b++)t.b[ft[b]]=!0,t.c[Lt[b]]=!0}}for(u=0;u<t.f.g;u++)if(n.cq(t.f,u)&&!t.c[u])for(ht=X.gA(t,u),ft=ht.a,Lt=ht.b,X.Oz(t,ft,Lt),b=0;b<ht.a.length;b++)t.b[ft[b]]=!0,t.c[Lt[b]]=!0;for(o=0;o<t.f.r;o++)if(!t.c[o]&&n.am(t.f,o)==3&&(r=n.Ul(t.f,0,o),i=n.Ul(t.f,1,o),q=n.Ho(t.f,r)+n.Ho(t.f,i),q>2)){for(s=new X.tB(t.f,q,!1),L=0,g=0;g<n.Ho(t.f,r);g++)Q=n.Vo(t.f,r,g),Q!=i&&(s.e[L++]=Q,t.b[Q]=!0,t.c[n.Xo(t.f,r,g)]=!0);for(s.e[L++]=r,s.e[L++]=i,B=0;B<n.Ho(t.f,i);B++)Q=n.Vo(t.f,i,B),Q!=r&&(s.e[L++]=Q,t.b[Q]=!0,t.c[n.Xo(t.f,i,B)]=!0);for(b=0;b<q;b++)s.a[b]=b,s.b[b]=0,s.k[b]=1;t.b[r]=!0,t.b[i]=!0,t.c[o]=!0,X.EA(t.d,s)}for(D=0;D<t.f.r;D++)if(!t.c[D]&&n.am(t.f,D)==2){for(e=d(l.Z6,H,6,t.f.q,15,1),b=0;b<2;b++)if(e[0]=n.Ul(t.f,b,D),e[1]=n.Ul(t.f,1-b,D),n.Mo(t.f,e[0])==1&&n.Mo(t.f,e[1])==2&&n.Ho(t.f,e[1])==2){t.b[e[0]]=!0,t.b[e[1]]=!0,t.c[D]=!0,z=1;do{if(x=n.Vo(t.f,e[z],0)==e[z-1]?1:0,e[z+1]=n.Vo(t.f,e[z],x),n.Mo(t.f,e[z+1])==2&&n.Ho(t.f,e[z+1])>2)break;t.b[e[z+1]]=!0,t.c[n.Xo(t.f,e[z],x)]=!0,++z}while(n.Mo(t.f,e[z])==2&&n.Ho(t.f,e[z])==2);for(q=n.Ho(t.f,e[0])+n.Ho(t.f,e[z])+z-1,s=new X.tB(t.f,q,!1),p=0;p<=z;p++)s.a[p]=p,s.b[p]=0,s.k[p]=64,s.e[p]=e[p];for(w=z+1,h=!1,M=0;M<n.Ho(t.f,e[0]);M++)Q=n.Vo(t.f,e[0],M),Q!=e[1]&&(s.a[w]=-.5,s.b[w]=h?k.Math.sin(s0):-k.Math.sin(s0),s.k[w]=64,s.e[w]=Q,++w,h=!0);for(h=!1,S=0;S<n.Ho(t.f,e[z]);S++)Q=n.Vo(t.f,e[z],S),Q!=e[z-1]&&(s.a[w]=z+.5,s.b[w]=h?-k.Math.sin(s0):k.Math.sin(s0),s.k[w]=64,s.e[w]=Q,++w,h=!0);X.EA(t.d,s)}}for(A=0;A<t.f.q;A++)if(n.Ho(t.f,A)==4){for(J=d(l.Z6,H,6,4,15,1),E=d(l.Z6,H,6,4,15,1),N=0,g=0;g<4;g++)J[N]=n.Vo(t.f,A,g),E[N]=n.Xo(t.f,A,g),n.Ho(t.f,J[N])==1&&!t.c[E[N]]&&++N;if(N==2){for(s=new X.tB(t.f,3,!1),b=0;b<2;b++)t.b[J[b]]=!0,t.c[E[b]]=!0,s.e[b]=J[b],s.k[b]=32;s.a[0]=-.5,s.b[0]=.866,s.a[1]=.5,s.b[1]=.866,s.a[2]=0,s.b[2]=0,s.k[2]=32,s.e[2]=A,X.EA(t.d,s)}if(N==3){for(B=0;B<2;B++)n.am(t.f,E[B])==1&&(Ut=J[B],J[B]=J[2],J[2]=Ut,Ut=E[B],E[B]=E[2],E[2]=Ut);for(s=new X.tB(t.f,4,!1),b=0;b<3;b++)t.b[J[b]]=!0,t.c[E[b]]=!0,s.e[b]=J[b],s.k[b]=32;s.a[0]=-1,s.b[0]=0,s.a[1]=1,s.b[1]=0,s.a[2]=0,s.b[2]=1,s.a[3]=0,s.b[3]=0,s.k[3]=32,s.e[3]=A,X.EA(t.d,s)}}},X.tA=function(t){var e,A,P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S,p,M,z;for(u=0,A=0;A<t.f.q;A++)n.Gm(t.f,A)&&++u;if(!(u<2)){for(w=0,Q=0,L=0;L<t.f.r;L++)P=n.Ul(t.f,0,L),r=n.Ul(t.f,1,L),n.Gm(t.f,P)&&n.Gm(t.f,r)&&(t.c[L]=!0,t.b[P]=!0,t.b[r]=!0,Q+=n.$l(t.f,L),++w);for(w!=0&&Q!=0?Q/=w:Q=n.Pl(t.f),i=0;i<t.f.q;i++)n.Gm(t.f,i)&&!t.b[i]&&--u;if(!(u<2)){for(p=d(l.Z6,H,6,t.f.q,15,1),s=n.dp(t.f,p,!0,!0),S=d(l.Z6,H,6,s,15,1),D=0;D<t.f.q;D++)p[D]!=-1&&++S[p[D]];for(m=d(l.w8,v1,47,s,0,1),b=0;b<s;b++)m[b]=new X.tB(t.f,S[b],!0);for(o=d(l.Z6,H,6,s,15,1),e=0;e<t.f.q;e++)g=p[e],g!=-1&&(m[g].k[o[g]]=r0,m[g].e[o[g]]=e,m[g].a[o[g]]=n.Ll(t.f,e)/Q,m[g].b[o[g]]=n.Ml(t.f,e)/Q,++o[g]);for(M=-1,z=0,B=0;B<s;B++)z<S[B]&&(z=S[B],M=B);for(X.EA(t.d,m[M]),h=0;h<s;h++)h!=M&&X.EA(t.d,m[h])}}},X.uA=function(t){var e,A;for(e=0;e<t.f.q;e++)!t.b[e]&&n.Ho(t.f,e)==0&&(A=new X.tB(t.f,1,!1),t.b[e]=!0,A.e[0]=e,A.a[0]=0,A.b[0]=0,A.k[0]=0,X.EA(t.d,A))},X.vA=function(t,e){var A,P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S;for(b=null,b=new n.eu,n.$t(b,t.f),D=d(l.teb,wt,6,t.f.f,16,1),B=e.Sb();B.cd();)if(g=B.dd(),h=null,S=g.b,n.Xt(b,S),n.Lt(b,4,8)!=0&&(h=b.F),h)for(s=new y.rqb(h);s.a<s.c.a.length;){for(w=y.qqb(s),m=0,P=w,r=0,i=P.length;r<i;++r)A=P[r],D[A]&&++m;if(m<=1){for(o=g.c,t.a?o=!1:t.a=!0,Q=new X.tB(t.f,w.length,o),L=0;L<w.length;L++)A=w[L],o&&n.on(t.f,A,!0),Q.k[L]=256,Q.e[L]=A,Q.a[L]=n.Ll(g.b,L)/g.a,Q.b[L]=n.Ml(g.b,L)/g.a,D[A]=!0,t.b[A]=!0;for(u=0;u<S.g;u++)t.c[n.To(t.f,w[S.D[0][u]],w[S.D[1][u]])]=!0;X.EA(t.d,Q)}}return D},X.wA=function(t){var e,A,P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S,p,M;for(e=X.Qz(t),i=d(l.V6,Y,6,t.f.r,15,1),X.rA(t,i,e),r=0;r<t.f.r;r++)i[r]==2&&(n.bq(t.f,n.Ul(t.f,0,r))||n.bq(t.f,n.Ul(t.f,1,r)))&&(i[r]=3);for(h=0;h<t.d.a.length;h++){for(w=y.uj(t.d,h),o=X.kB(w),m=w.c,B=new X.uB(w),g=-1,s=0;s<224&&o.a.length!=0;s++){if(Q=y.qvb(t.g,o.a.length),u=(c.Fzb(Q,o.a.length),o.a[Q]),D=X.fA(t,u[0],u[1]),A=d(l.Z6,H,6,D.length,15,1),P=0,s<32)for(b=1;b<D.length-1;b++)i[D[b]]==3&&(A[P++]=D[b]);else if(s<96)for(b=1;b<D.length-1;b++)i[D[b]]>=2&&(A[P++]=D[b]);else for(b=1;b<D.length-1;b++)i[D[b]]>=1&&(A[P++]=D[b]);if(P!=0){if(p=A[0],P>1)do p=A[y.qvb(t.g,P)];while(p==g);p!=g&&(g=p,X.hB(w,p),o=X.kB(w),m>w.c&&(m=w.c,B=new X.uB(w)))}}y.Ej(t.d,h,B),w=B,L=1;do{for(S=9999,b=0;b<w.e.length;b++)M=e[w.e[b]],M==L?X.qB(w,b):M>L&&M<S&&(S=M);L=S}while(S!=9999)}},X.xA=function(t,e){t.g=new y.uvb(e)},X.yA=function(t,e,A){var P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S,p;for(r=d(l.X6,Bt,6,n.Ho(t.f,A)+1,15,1),D=d(l.Z6,H,6,n.Ho(t.f,A)+1,15,1),u=d(l.Z6,H,6,n.Ho(t.f,A)+1,15,1),B=X.mB(e,A),i=0,Q=0;Q<n.Ho(t.f,A);Q++)D[i]=n.Vo(t.f,A,Q),u[i]=n.Xo(t.f,A,Q),w=X.mB(e,D[i]),w!=-1&&(r[i++]=X.ZA(e.a[B],e.b[B],e.a[w],e.b[w]));if(i==1)return r[0]+t1;for(L=i-1;L>0;L--)for(s=0;s<L;s++)r[s]>r[s+1]&&(m=r[s],r[s]=r[s+1],r[s+1]=m,S=D[s],D[s]=D[s+1],D[s+1]=S,p=u[s],u[s]=u[s+1],u[s+1]=p);for(r[i]=r[0]+G1,D[i]=D[0],u[i]=u[0],h=-100,b=0,o=0;o<i;o++)P=r[o+1]-r[o],i>2&&n.cq(t.f,u[o])&&n.cq(t.f,u[o+1])&&(g=X.hA(t,D[o],A,D[o+1]),g!=0&&(P-=100-g)),h<P&&(h=P,b=o);return(r[b]+r[b+1])/2},X.zA=function(t,e,A,P){var r;r=k.Math.min(y.wj(t.d,e,0),y.wj(t.d,A,0)),y.oj(t.d,r,P),y.Cj(t.d,e),y.Cj(t.d,A)},X.AA=function(){X.BA.call(this,2)},X.BA=function(t){this.e=t,(t&1)==0&&!X.Nz&&!X.Nz&&(X.Nz=new X.cB)},X.CA=function(t,e){var A,P,r,i,D;for(D=0,A=0,P=0;P<e;P++)D+=t[P].b*k.Math.sin(t[P].a),A+=t[P].b*k.Math.cos(t[P].a);return A==0?i=D>0?k0:uA:(i=k.Math.atan(D/A),A<0&&(i+=t1)),r=k.Math.sqrt(D*D+A*A)/e,new X.XA(i,r)},X.DA=function(t,e){var A,P;return A=k.Math.abs(t.b),P=k.Math.abs(e.b),A<P?-1:A>P?1:0},G(68,1,{},X.AA,X.BA),U.a=!1,U.e=0,l.q8=O(68),X.EA=function(t,e){var A,P;for(P=new y.rqb(t);P.a<P.c.a.length;)if(A=y.qqb(P),X.fB(A,e))return!1;return c.izb(t.a,e),!0},X.FA=function(t,e){return X.EA(t,e)},X.GA=function(){y.Jj.call(this)},G(309,21,_A,X.GA),U.add=function(t){return X.FA(this,t)},l.m8=O(309),X.IA=function(t){var e,A;return e=t.c.e.length,A=t.c.e.length,A<e?-1:A>e?1:0},X.JA=function(){},G(311,1,{},X.JA),U.Qb=function(t,e){var A;return X.IA((A=t,A))},U.lb=function(t){return this===t},l.n8=O(311),X.MA=function(t){var e,A;return e=t.c.e.length,A=t.c.e.length,e<A?-1:e>A?1:0},X.NA=function(){},G(312,1,{},X.NA),U.Qb=function(t,e){var A;return X.MA((A=t,A))},U.lb=function(t){return this===t},l.o8=O(312),X.QA=function(){},G(310,1,{},X.QA),U.Qb=function(t,e){return X.DA(t,e)},U.lb=function(t){return this===t},l.p8=O(310),X.TA=function(t,e,A){t.c[0]+=X.iB(t.b[0],e),t.d[0]+=X.jB(t.b[0],e),t.c[1]+=X.iB(t.b[1],A),t.d[1]+=X.jB(t.b[1],A),++t.a[0],++t.a[1]},X.UA=function(t,e,A){var P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S,p,M,z,q;for(P=d(l.X6,Bt,6,2,15,1),Q=0;Q<2;Q++)t.c[Q]/=t.a[Q],t.d[Q]/=t.a[Q],P[Q]=X.dB(t.b[Q],t.c[Q],t.d[Q],t.b[1-Q].e.length,e);for(X.rB(t.b[0],t.c[0],t.d[0],k0-P[0]),X.rB(t.b[1],t.c[1],t.d[1],4.71238898038469-P[1]),q=U0,z=ur,D=t.d[0]-t.d[1],L=0;L<t.b[1].b.length;L++)t.b[1].b[L]+=D,q>t.b[1].b[L]&&(q=t.b[1].b[L]),z<t.b[1].b[L]&&(z=t.b[1].b[L]);for(p=z-q+2*e,r=mt(k.Math.ceil(p)),q+=(p-r)/2-e,m=d(l.X6,Bt,6,r,15,1),w=0;w<r;w++)m[w]=t.c[1]+e;for(s=0;s<t.b[1].b.length;s++)for(M=t.b[1].b[s]-q,S=mt(M-e),u=k.Math.min(mt(M+e),r-1),B=S;B<=u;B++)m[B]>t.b[1].a[s]&&(m[B]=t.b[1].a[s]);for(h=0;h<r;h++)m[h]-=e;for(i=t.c[0]-t.c[1],b=0;b<t.b[0].a.length;b++)g=mt(t.b[0].b[b]-q),g>=0&&g<m.length&&i<t.b[0].a[b]-m[g]&&(i=t.b[0].a[b]-m[g]);for(o=0;o<t.b[1].a.length;o++)t.b[1].a[o]+=i;A&&(X.rB(t.b[0],t.c[0],t.d[0],P[0]-k0),X.rB(t.b[1],t.c[0],t.d[0],P[0]-k0))},X.VA=function(t,e){var A,P;for(this.b=d(l.w8,v1,47,2,0,1),this.b[0]=t,this.b[1]=e,this.c=d(l.X6,Bt,6,2,15,1),this.d=d(l.X6,Bt,6,2,15,1),this.a=d(l.Z6,H,6,2,15,1),A=0;A<2;A++){for(P=0;P<this.b[A].e.length;P++)this.c[A]+=X.iB(this.b[A],P),this.d[A]+=X.jB(this.b[A],P);this.a[A]=this.b[A].e.length}},X.WA=function(t,e,A,P){this.b=d(l.w8,v1,47,2,0,1),this.b[0]=t,this.b[1]=e,this.c=d(l.X6,Bt,6,2,15,1),this.d=d(l.X6,Bt,6,2,15,1),this.c[0]=X.iB(this.b[0],A),this.d[0]=X.jB(this.b[0],A),this.c[1]=X.iB(this.b[1],P),this.d[1]=X.jB(this.b[1],P),this.a=d(l.Z6,H,6,2,15,1),this.a[0]=1,this.a[1]=1},G(107,1,{107:1},X.VA,X.WA),l.r8=O(107),X.XA=function(t,e){this.a=t,this.b=e},X.YA=function(t,e,A,P){var r,i;this.a=X.ZA(t,e,A,P),r=A-t,i=P-e,this.b=k.Math.sqrt(r*r+i*i)},X.ZA=function(t,e,A,P){var r,i,D;return i=A-t,D=P-e,D!=0?(r=k.Math.atan(i/D),D<0&&(i<0?r-=t1:r+=t1)):r=i>0?k0:uA,r},G(41,1,{41:1},X.XA,X.YA),U.a=0,U.b=0,l.s8=O(41),X.$A=function(t){this.a=d(l.Z6,H,6,t,15,1),this.b=d(l.Z6,H,6,t,15,1)},G(247,1,{},X.$A),l.t8=O(247),X._A=function(t,e,A){this.c=t,this.a=e,this.b=A},G(196,1,{196:1},X._A),U.a=0,U.b=0,l.u8=O(196),X.bB=function(){X.bB=u1,X.aB=v(F(l.Nbb,1),yt,2,6,[\"gkvt@@@@LddTTTrbTRTRTRRRRRRRRRRRRRrVRrIh\\\\IAaQxlY@gRHdJCJcRXlv_CfJx|A\\\\hRHejiLaQjTje^kSjtFcIhvXmVKMjt{lN{Kavy\\\\^wGjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjh@@vo@HBC@PhLN@bPhtFKCcpDbILaRhtzCIbsX\\\\nOO`JDbqDjSKdJeJmQjtz}Ahr[LVkMnpz\\\\nwGj{PBhBdBlBBBjBfBnBaBiBeBmBcBkBgBoB`bhbdblbbbjbfbnbabibebmbcbkbgbob`RhRdRlRbRjRfRnRaRiReRmRcRkRgRoR`rhrdrlrbrjrfrnrarirermrcrkrgror`JhJdJlJbJjJfJnJaJiJeJmJcJkJgJoJ`jhjdjljbjjjfjnjajijej` !BnkjyVwsVr|iQn|Q|goTZWPIJwbudnRkVYBez]siZymNJZUqNFBqZWxS~iCXVU]SeRjwrtSPAjkvXLpBAZauDPzq]PfMlecrMnkv|@\\\\SFD`m|mWiEoCXp`SIe_J[l|[XCbloTV`[Gc@FJGopyyoOlFQfUy^w\\\\Bgz|\",\"gcrt@@@@LdbbbbTRbRbRbRRRRRRRRRRRRVRrVQIA`HtRGAaIxZAHfShTjCIbqylQGKgqdBaXeQJeruBiPitZmFoPZLFSYbvZlVGMnsZ]vWSmr{]UUUUUUUUUUUUUUUUUUUUUUUUUUUUUT@@[G`DAA`HTFG@QHTZCEaqxBQDfPiTZ]AdqYlNWGgpEBQXbUIerEReVhuZ]^`tYMfKUfwX]NW[jkPBhBdBlBbBjBfBnBaBiBeBmBcBkBgBoB`bhbdblbbbjbfbnbabibebmbcbkbgbob`RhRdRlRbRjRfRnRaRiReRmRcRkRgRoR`rhrdrlrbrjrfrnrarirermrcrkrgror`JhJdJlJbJjJfJnJaJiJeJmJcJkJgJoJ`jhjdjljbjjjfjnjajij` !B^cR]`]Fm]QkfljE\\\\p\\x7FUVfgOmFXsQe_gXPyXis_wF|vUUX_XbxpzU]HUFgYViwFo~@uemc@}~T\\x7FIEPioYVwr]JnM~[ZEC\\\\g}~o_pUfdo~irsklTLiyVJshnw^iVAsZ`_~}PYkckURH{FYMImFaRaccUlCZSHMfP\",\"dml@@Dje^VGiyZjjjh@vtHSBinFU@ !BPTCTy[skMzUPF`AJbBixEZHS[Il\",\"dml@@DjYVvGiyZjjjh@vtHSBinFU@ !BwLo~BJ~UquhXBinZ\\\\ykA@F_eMrT\",\"dml@@LdfbbQX^fUZjjj`C[PaLJfxYT !BzxIHVc{OiJVRpprePho~]}y\\x7FwLl\",\"deL@@DjUYkfEijjjj@MeBDpj[ad !B\\x7FaA\\x7FMVr[AvkKzm_jKvVbD{sk\",\"dil@@LddTQRl[NX^Fjjjj@MiBDpj[a@ !BPfL@\\x7Fox@M~T@\\x7Fox@\\x7F`C~@@\",\"daL@@DjYtKJqjynjjjj@MaBDpj[` !B`bL@_gx@@Gy~@Gx@_`@\"])},X.cB=function(){X.bB();var t,e,A,P,r,i,D;for(y.Jj.call(this),i=new n.uu,A=X.aB,P=0,r=A.length;P<r;++P)e=A[P],t=n.Lq(new n.Tq,e),n.nu(i,t),D=new X.vB(t),D.a=n.Pl(D.b),c.izb(this.a,D)},G(362,21,_A,X.cB),l.v8=O(362),X.dB=function(t,e,A,P,r){var i,D,u,o,Q,L,w,s,h,b,g,B,m,S,p,M,z,q,x,J,E,N,ft,Lt;if(t.e.length==1)return 0;for(E=r+k.Math.sqrt(P),L=d(l.X6,Bt,6,36,15,1),b=0;b<t.e.length;b++)i=X.ZA(e,A,t.a[b],t.b[b]),u=X.eB(Gt(h1(k.Math.round(i*36/G1)))),w=e-t.a[b],s=A-t.b[b],ft=w*w+s*s,L[u]<ft&&(L[u]=ft);for(z=-1,M=-1,g=0;g<36;g++)L[g]=k.Math.sqrt(L[g]),z<L[g]&&(z=L[g],M=g);for(N=M-18<0?M-18+36:M-18>=36?M-18-36:M-18,B=0;B<=18;B++)L[N+B<0?N+B+36:N+B>=36?N+B-36:N+B]+=.01*B,L[N-B<0?N-B+36:N-B>=36?N-B-36:N-B]+=.01*B;for(Lt=d(l.X6,Bt,6,9,15,1),o=d(l.X6,Bt,6,9,15,1),m=1;m<9;m++)Lt[m]=k.Math.sin(m*Ai),o[m]=k.Math.cos(m*Ai);for(x=U0,q=-1,D=0;D<36;D++)if(!(L[D]>=x)){for(p=L[D],h=1;h<9;h++){for(S=-1;S<=1&&(J=D+S*h<0?D+S*h+36:D+S*h>=36?D+S*h-36:D+S*h,!(!(L[J]*o[h]<=p)&&(Q=o[h]*k.Math.min(L[J],E/Lt[h]),p<Q&&(p=Q,x<=p))));S+=2);if(x<=p)break}x>p&&(x=p,q=D)}return G1*q/36},X.eB=function(t){return t<0?t+36:t>=36?t-36:t},X.fB=function(t,e){var A,P,r;if(e.e.length!=t.e.length)return!1;for(P=X.nB(t),r=X.nB(e),A=0;A<P.length;A++)if(P[A]!=r[A])return!1;return!0},X.gB=function(t,e,A){var P,r,i;for(i=0;i<t.e.length;i++)r=k.Math.sqrt((t.a[i]-e)*(t.a[i]-e)+(t.b[i]-A)*(t.b[i]-A)),P=0-X.ZA(e,A,t.a[i],t.b[i]),t.a[i]=e+r*k.Math.sin(P),t.b[i]=A+r*k.Math.cos(P)},X.hB=function(t,e){var A,P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S,p,M,z,q;if(t.d==null&&(t.d=d(l.Z6,M1,7,t.j.r,0,2)),t.d[e]==null){for(h=d(l.Z6,H,6,t.e.length,15,1),p=d(l.teb,wt,6,t.j.q,16,1),r=n.Ul(t.j,0,e),i=n.Ul(t.j,1,e),h[0]=r,p[r]=!0,L=0,b=0;L<=b;){for(B=0;B<n.Ho(t.j,h[L]);B++)D=n.Vo(t.j,h[L],B),!p[D]&&D!=i&&(h[++b]=D,p[D]=!0);if(L==b)break;++L}if(s=b+1>(t.e.length/2|0),t.i){for(o=!1,u=!1,B=0;B<t.e.length;B++)P=t.e[B],n.Gm(t.j,P)&&P!=r&&P!=i&&(p[t.e[B]]?o=!0:u=!0);o!=u&&(s=o)}for(Q=2,t.d[e]=d(l.Z6,H,6,s?t.e.length-b:b+2,15,1),m=0;m<t.e.length;m++)t.e[m]==r?t.d[e][s?0:1]=m:t.e[m]==i?t.d[e][s?1:0]=m:s^p[t.e[m]]&&(t.d[e][Q++]=m)}for(z=t.a[t.d[e][0]],q=t.b[t.d[e][0]],M=X.ZA(z,q,t.a[t.d[e][1]],t.b[t.d[e][1]]),g=2;g<t.d[e].length;g++)S=t.d[e][g],w=k.Math.sqrt((t.a[S]-z)*(t.a[S]-z)+(t.b[S]-q)*(t.b[S]-q)),A=2*M-X.ZA(z,q,t.a[S],t.b[S]),t.a[S]=z+w*k.Math.sin(A),t.b[S]=q+w*k.Math.cos(A)},X.iB=function(t,e){return t.a[e]},X.jB=function(t,e){return t.b[e]},X.kB=function(t){var e,A,P,r,i,D,u,o;for(t.c=0,A=new y.Jj,r=1;r<t.e.length;r++)for(i=0;i<r;i++)u=k.Math.abs(t.a[r]-t.a[i]),o=k.Math.abs(t.b[r]-t.b[i]),P=k.Math.sqrt(u*u+o*o),P<.8&&(e=d(l.Z6,H,6,2,15,1),e[0]=t.e[r],e[1]=t.e[i],c.izb(A.a,e)),D=1-k.Math.min(P,1),t.c+=D*D;return A},X.lB=function(t,e){return t.e[e]},X.mB=function(t,e){var A;for(A=0;A<t.e.length;A++)if(e==t.e[A])return A;return-1},X.nB=function(t){return t.n==null&&(t.n=y.zqb(t.e,t.e.length),c.lzb(t.n,c.Szb(y0(y.lrb.prototype.jd,y.lrb,[])))),t.n},X.oB=function(t,e){var A;for(A=0;A<t.e.length;A++)if(e==t.e[A])return!0;return!1},X.pB=function(t){var e,A,P,r,i,D;for(P=0,i=0;i<t.e.length;i++)for(e=t.e[i],A=n.Ho(t.j,e),D=0;D<A;D++)n.Vo(t.j,e,D)>e&&++P;for(t.f=d(l.Z6,H,6,P,15,1),t.g=d(l.Z6,H,6,t.j.q,15,1),P=0,r=0;r<t.e.length;r++)for(e=t.e[r],A=n.Ho(t.j,e),t.g[e]=r,D=0;D<A;D++)n.Vo(t.j,e,D)>e&&(t.f[P++]=n.Xo(t.j,e,D))},X.qB=function(t,e){var A,P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S,p,M,z;for(b=t.a[e],S=t.b[e],i=d(l.s8,v1,41,4,0,1),L=0,w=0;w<t.f.length&&!(L>=4);w++)if(!(e==t.g[n.Ul(t.j,0,t.f[w])]||e==t.g[n.Ul(t.j,1,t.f[w])])){if(g=t.a[t.g[n.Ul(t.j,0,t.f[w])]],p=t.b[t.g[n.Ul(t.j,0,t.f[w])]],B=t.a[t.g[n.Ul(t.j,1,t.f[w])]],M=t.b[t.g[n.Ul(t.j,1,t.f[w])]],u=k.Math.sqrt((g-b)*(g-b)+(p-S)*(p-S)),o=k.Math.sqrt((B-b)*(B-b)+(M-S)*(M-S)),r=k.Math.sqrt((B-g)*(B-g)+(M-p)*(M-p)),u<r&&o<r){g==B?(D=k.Math.abs(b-g),D<.5&&(i[L++]=new X.XA(X.ZA(g,S,b,S),(.5-D)/2))):p==M?(D=k.Math.abs(S-p),D<.5&&(i[L++]=new X.XA(X.ZA(b,p,b,S),(.5-D)/2))):(s=(M-p)/(B-g),h=-1/s,A=p-s*g,P=S-h*b,m=(P-A)/(s-h),z=s*m+A,D=k.Math.sqrt((m-b)*(m-b)+(z-S)*(z-S)),D<.5&&(i[L++]=new X.XA(X.ZA(m,z,b,S),(.5-D)/2)));continue}if(u<.5){i[L++]=new X.XA(X.ZA(g,p,b,S),(.5-u)/2);continue}if(o<.5){i[L++]=new X.XA(X.ZA(B,M,b,S),(.5-o)/2);continue}}L>0&&(Q=X.CA(i,L),t.a[e]+=Q.b*k.Math.sin(Q.a),t.b[e]+=Q.b*k.Math.cos(Q.a))},X.rB=function(t,e,A,P){var r,i,D;for(D=0;D<t.e.length;D++)i=k.Math.sqrt((t.a[D]-e)*(t.a[D]-e)+(t.b[D]-A)*(t.b[D]-A)),r=X.ZA(e,A,t.a[D],t.b[D])+P,t.a[D]=e+i*k.Math.sin(r),t.b[D]=A+i*k.Math.cos(r)},X.sB=function(t,e,A){var P;for(P=0;P<t.e.length;P++)t.a[P]+=e,t.b[P]+=A},X.tB=function(t,e,A){this.j=t,this.i=A,this.e=d(l.Z6,H,6,e,15,1),this.k=d(l.Z6,H,6,e,15,1),this.a=d(l.X6,Bt,6,e,15,1),this.b=d(l.X6,Bt,6,e,15,1)},X.uB=function(t){var e,A;for(this.j=t.j,this.i=t.i,this.e=d(l.Z6,H,6,t.e.length,15,1),this.k=d(l.Z6,H,6,t.e.length,15,1),this.a=d(l.X6,Bt,6,t.e.length,15,1),this.b=d(l.X6,Bt,6,t.e.length,15,1),A=0;A<t.e.length;A++)this.e[A]=t.e[A],this.k[A]=t.k[A],this.a[A]=t.a[A],this.b[A]=t.b[A];if(t.f!=null)for(this.f=d(l.Z6,H,6,t.f.length,15,1),e=0;e<t.f.length;e++)this.f[e]=t.f[e];if(t.g!=null)for(this.g=d(l.Z6,H,6,t.g.length,15,1),e=0;e<t.g.length;e++)this.g[e]=t.g[e]},G(47,1,{47:1},X.tB,X.uB),U.c=0,U.i=!1,l.w8=O(47),X.vB=function(t){this.b=t,this.c=!1},G(246,1,{246:1},X.vB),U.a=0,U.c=!1,l.x8=O(246),he.wB=function(t){t.c=new y.Jj},he.xB=function(t,e,A,P,r,i){var D,u,o,Q,L,w,s,h,b,g,B,m,S,p,M,z,q,x,J,E,N,ft;for(p=-1,x=0,q=0,E=0,B=0,m=0,S=0,N=0,ft=0,x=0,L=0;L<t.d;L++)x+=P[L]*P[L];if(x=k.Math.sqrt(x),x>i)for(w=0;w<t.d;w++)P[w]*=i/x;for(q=0,s=0;s<t.d;s++)q+=P[s]*t.e[s];if(q>=0)return p;for(E=0,h=0;h<t.d;h++)J=k.Math.abs(P[h])/k.Math.max(k.Math.abs(e[h]),1),J>E&&(E=J);for(S=1e-7/E,B=1,g=0;g<1e3;){if(B<S){p=1;break}for(b=0;b<t.d;b++)r[b]=e[b]+B*P[b];if(t.k=K.wC(t,r),t.k-A<=cA*B*q)return 0;g==0?N=-q/(2*(t.k-A-q)):(M=t.k-A-B*q,z=ft-A-m*q,D=(M/(B*B)-z/(m*m))/(B-m),u=(-m*M/(B*B)+B*z/(m*m))/(B-m),D==0?N=-q/(2*u):(o=u*u-3*D*q,o<0?N=.5*B:u<=0?N=(-u+k.Math.sqrt(o))/(3*D):N=-q/(u+k.Math.sqrt(o))),N>.5*B&&(N=.5*B)),m=B,ft=t.k,B=k.Math.max(N,.1*B),++g}for(Q=0;Q<t.d;Q++)r[Q]=e[Q];return p},he.yB=function(t,e,A){var P,r,i,D;for(D=1,r=0;r<t.g.q;r++)t.i[3*r]=n.Ll(t.g,r),t.i[3*r+1]=n.Ml(t.g,r),t.i[3*r+2]=n.Nl(t.g,r);if(D=he.zB(t,e,A),D==0)for(P=0;P<t.g.q;P++)n.vn(t.g,P,t.i[3*P]),n.wn(t.g,P,t.i[3*P+1]),n.xn(t.g,P,t.i[3*P+2]);for(i=new y.rqb(t.c);i.a<i.c.a.length;)y.qqb(i),null.xd();return D},he.zB=function(t,e,A){var P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S,p,M,z,q,x,J,E,N,ft,Lt,ot,st,ut,rt,Ut,ht,it,bt;for(t.e=d(l.X6,Bt,6,t.d,15,1),P=d(l.X6,Bt,6,t.d,15,1),Q=d(l.X6,Bt,6,t.d,15,1),J=d(l.X6,Bt,6,t.d,15,1),bt=d(l.X6,Bt,6,t.d,15,1),S=d(l.X6,Bt,6,t.d*t.d,15,1),w=0;w<t.d;w++)J[w]=t.i[w];for(u=K.wC(t,t.i),K.xC(t),N=0,s=0;s<t.d;s++)S[s*t.d+s]=1,bt[s]=-t.e[s],N+=t.i[s]*t.i[s];for(x=100*k.Math.max(k.Math.sqrt(N),t.d),ot=(T.Pjb(),h1(Date.now())),M=1;M<=e&&!t.f;M++){if(E=he.xB(t,t.i,u,bt,J,x),E<0)return 2;for(u=t.k,Ut=0,h=0;h<t.d;h++)bt[h]=J[h]-t.i[h],t.i[h]=J[h],ut=k.Math.abs(bt[h])/k.Math.max(k.Math.abs(t.i[h]),1),ut>Ut&&(Ut=ut),P[h]=t.e[h];if(Ut<12e-8)return 0;for(o=K.xC(t),Ut=0,rt=k.Math.max(t.k*o,1),b=0;b<t.d;b++)it=k.Math.abs(t.e[b])*k.Math.max(k.Math.abs(t.i[b]),1),Ut=k.Math.max(Ut,it),P[b]=t.e[b]-P[b];if(Ut/=rt,Ut<A)return 0;for(r=0,D=0,ft=0,Lt=0,g=0;g<t.d;g++){for(p=g*t.d,Q[g]=0,z=0;z<t.d;z++)Q[g]+=S[p+z]*P[z];r+=P[g]*bt[g],D+=P[g]*Q[g],ft+=P[g]*P[g],Lt+=bt[g]*bt[g]}if(r>k.Math.sqrt(3e-8*ft*Lt)){for(r=1/r,i=1/D,B=0;B<t.d;B++)P[B]=r*bt[B]-i*Q[B];for(m=0;m<t.d;m++)for(p=m*t.d,z=m;z<t.d;z++)S[p+z]+=r*bt[m]*bt[z]-i*Q[m]*Q[z]+D*P[m]*P[z],S[z*t.d+m]=S[p+z]}for(L=0;L<t.d;L++)for(p=L*t.d,bt[L]=0,z=0;z<t.d;z++)bt[L]-=S[p+z]*t.e[z];if(st=h1(Date.now()),ht=x1(st,ot),gn(ht,t.j)){for(q=new y.rqb(t.c);q.a<q.c.a.length;)y.qqb(q),null.xd();ot=st}}return 1},he.AB=function(t){var e,A,P;for(he.wB(this),P=0,e=0;e<t.f;e++)P+=n.kp(t,e);if(P>0)throw Qt(new T.Zhb(\"molecule needs explicit hydrogen atoms for force field calculations\"));for(this.g=t,this.d=3*t.q,this.e=d(l.X6,Bt,6,this.d,15,1),this.i=d(l.X6,Bt,6,this.d,15,1),this.f=!1,this.j=20,A=0;A<t.q;A++)this.i[3*A]=t.J[A].a,this.i[3*A+1]=t.J[A].b,this.i[3*A+2]=t.J[A].c},G(276,1,{}),U.d=0,U.f=!1,U.j=0,U.k=0,l.y8=O(276),K.BB=function(t,e,A,P,r){this.a=A,this.b=P,this.c=r,this.d=At.aE(t.b,e.a[P]),this.f=At.VD(t.a,e,A,P,r),this.e=At.UD(t.a,e,A,P,r)},K.CB=function(t,e){var A,P,r,i,D,u;for(A=new y.Jj,P=0;P<e.q;P++)if(e.e[P]>1)for(r=0;r<e.e[P];r++)for(D=e.i[P][r],i=r+1;i<e.e[P];i++)u=e.i[P][i],y.pj(A,new K.BB(t,e,D,P,u));return A},G(353,1,Un,K.BB),U.bc=function(t,e){var A,P,r;return r=K.CD(new K.OD(t,this.b,this.a),new K.OD(t,this.b,this.c)),A=r*yn-this.f,P=this.d?143.9325*this.e*(1+k.Math.cos(r)):Pi*this.e*A*A*(1+-.006981317*A),P},U.cc=function(t,e){var A,P,r,i,D,u,o,Q,L,w;o=K.HD(new K.OD(t,this.b,this.a)),Q=K.HD(new K.OD(t,this.b,this.c)),D=K.GD(new K.OD(t,this.b,this.a)),u=K.GD(new K.OD(t,this.b,this.c)),P=(o.a*Q.a+o.b*Q.b+o.c*Q.c)/(k.Math.sqrt(o.a*o.a+o.b*o.b+o.c*o.c)*k.Math.sqrt(Q.a*Q.a+Q.b*Q.b+Q.c*Q.c)),w=1-P*P,L=gA,w>0&&(L=k.Math.sqrt(w)),A=yn*k.Math.acos(P)-this.f,i=fe*this.e*A*(1+-.0104719755*A),this.d&&(i=-143.9325*this.e*L),r=v(F(l.X6,1),Bt,6,15,[1/D*(Q.a-P*o.a),1/D*(Q.b-P*o.b),1/D*(Q.c-P*o.c),1/u*(o.a-P*Q.a),1/u*(o.b-P*Q.b),1/u*(o.c-P*Q.c)]),e[3*this.a]+=i*r[0]/-L,e[3*this.a+1]+=i*r[1]/-L,e[3*this.a+2]+=i*r[2]/-L,e[3*this.b]+=i*(-r[0]-r[3])/-L,e[3*this.b+1]+=i*(-r[1]-r[4])/-L,e[3*this.b+2]+=i*(-r[2]-r[5])/-L,e[3*this.c]+=i*r[3]/-L,e[3*this.c+1]+=i*r[4]/-L,e[3*this.c+2]+=i*r[5]/-L},U.a=0,U.b=0,U.c=0,U.d=!1,U.e=0,U.f=0,l.z8=O(353),K.fC=function(t){T.eC.call(this,t)},G(184,33,{184:1,4:1,19:1,33:1,27:1},K.fC),l.A8=O(184),K.gC=function(){T.cC.call(this)},G(316,33,B0,K.gC),l.B8=O(316),K.hC=function(t,e,A){K.iC.call(this,t,e,e.D[0][A],e.D[1][A])},K.iC=function(t,e,A,P){this.a=A,this.b=P,this.d=At.oE(t.d,e,A,P),this.c=At.nE(t.d,e,A,P)},K.jC=function(t,e){var A,P;for(P=new y.Jj,A=0;A<e.r;A++)y.pj(P,new K.hC(t,e,A));return P},G(237,1,Un,K.hC),U.bc=function(t,e){var A,P,r;return P=K.ED(new K.ND(t,this.a),new K.ND(t,this.b)),A=(P-this.d)*(P-this.d),r=71.96625*this.c*A*(1+-2*(P-this.d)+2.3333333333333335*A),r},U.cc=function(t,e){var A,P,r,i;if(P=K.ED(new K.ND(t,this.a),new K.ND(t,this.b)),r=P-this.d,A=143.9325*this.c*r*(1+-3*r+4.666666666666667*r*r),P>0)for(i=0;i<3;i++)e[3*this.a+i]+=A*(t[3*this.a+i]-t[3*this.b+i])/P,e[3*this.b+i]-=A*(t[3*this.a+i]-t[3*this.b+i])/P},U.a=0,U.b=0,U.c=0,U.d=0,l.C8=O(237),K.mC=function(t){var e,A,P,r,i,D,u,o,Q;e=null;try{for(e=new pt.cgb(new pt.hgb((r=Wt.cAb(t),V1.Cmb(),r))),o=T.Khb(T.rjb(pt.bgb(e)),n1,Mt),P=T.njb(T.rjb(pt.bgb(e)),\",\"),Q=w1(l.Hbb,[T0,v1],[8,1],5,[o,P.length],2),D=0;(i=pt.bgb(e))!=null&&D<o;D++)for(u=T.njb(T.rjb(i),\",\"),A=0;A<P.length;A++)switch(T.Tib(P[A],0)){case 105:$1(Q[D],A,T.pib(T.Khb(T.rjb(u[A]),n1,Mt)));break;case 102:$1(Q[D],A,c.Szb(T.Jhb(T.rjb(u[A]))));break;case 99:$1(Q[D],A,$u(T.Tib(T.ljb(T.ljb(T.rjb(u[A]),\"'\"),'\"'),0)))}return Q}catch(L){if(L=C1(L),Yt(L,76))T.Pjb();else throw Qt(L)}return w1(l.Hbb,[T0,v1],[8,1],5,[1,1],2)},K.nC=function(t){var e,A,P,r,i,D;for(D=K.mC(t),i=D.length,e=D[0].length,r=w1(l.Z6,[M1,H],[7,6],15,[i,e],2),A=0;A<i;A++)for(P=0;P<e;P++)r[A][P]=D[A][P].a;return r},K.oC=function(t,e,A,P,r,i,D){this.a=t,this.b=e,this.e=A,this.d=i,this.c=P*r/D},K.pC=function(t,e,A,P,r,i){var D,u,o,Q,L;for(u=new y.Jj,D=A1.BF(t,e),o=0;o<e.q;o++)for(Q=0;Q<o+1;Q++)L=K.YC(A,new K.hD(o,Q)),(L==(K.dD(),K.$C)||L==K.cD)&&k.Math.abs(D[o])>dA&&k.Math.abs(D[Q])>dA&&K.GD(new K.LD(e,o,Q))<P&&y.pj(u,new K.oC(o,Q,L,D[o],D[Q],r,i));return u},G(354,1,Un,K.oC),U.bc=function(t,e){var A,P,r;return P=K.GD(new K.OD(t,this.a,this.b)),A=P+.05,this.d&&(A*=A),r=332.0716*this.c/A*(this.e==(K.dD(),K.$C)?.75:1),r},U.cc=function(t,e){var A,P,r,i,D;for(i=K.GD(new K.OD(t,this.a,this.b)),A=i+.05,A*=this.d?A*A:A,P=-332.0716*(this.d?2:1)*this.c/A*(this.e==(K.dD(),K.$C)?.75:1),D=0;D<3;D++)r=.02,i>0&&(r=P*(t[3*this.a+D]-t[3*this.b+D])/i),e[3*this.a+D]+=r,e[3*this.b+D]-=r},U.a=0,U.b=0,U.c=0,U.d=!1,l.D8=O(354),K.tC=function(){K.tC=u1,K.sC=new y.ptb},K.uC=function(t){t.a=new y.Jj},K.vC=function(t){return K.wC(t,t.i)},K.wC=function(t,e){var A,P,r;for(r=0,P=new y.rqb(t.a);P.a<P.c.a.length;)A=y.qqb(P),r+=A.bc(e,null);return r},K.xC=function(t){var e,A,P,r,i,D;for(t.e=d(l.X6,Bt,6,t.d,15,1),A=new y.rqb(t.a);A.a<A.c.a.length;)e=y.qqb(A),e.cc(t.i,t.e);for(D=-1e8,P=.1,i=0;i<t.d;i++)t.e[i]*=P,t.e[i]>D&&(D=t.e[i]);if(D>10){for(;D*P>10;)P*=.5;for(r=0;r<t.d;r++)t.e[r]*=P}return P},K.yC=function(t){K.tC(),K.zC.call(this,t,wP,new y.ptb)},K.zC=function(t,e,A){K.tC();var P,r,i,D,u;he.AB.call(this,t),K.uC(this),this.b=new K.BC(t),n.aw(this.g,7),u=y.onb(K.sC,e),i=y.Xtb(A.c,ri)?T.Phb(y.Ytb(A.c,ri)):100,P=y.Xtb(A.c,ii)?T.Phb(y.Ytb(A.c,ii)):1,r=y.Xtb(A.c,fi)&&T.Oc(y.Ytb(A.c,fi),\"distance\"),D=new K.ZC(this.b),(!y.Xtb(A.c,Di)||T.Fgb(y.Ytb(A.c,Di)))&&y.rj(this.a,K.CB(u,this.b)),(!y.Xtb(A.c,ui)||T.Fgb(y.Ytb(A.c,ui)))&&y.rj(this.a,K.jC(u,this.b)),(!y.Xtb(A.c,oi)||T.Fgb(y.Ytb(A.c,oi)))&&y.rj(this.a,K.pC(u,this.b,D,i,r,P)),(!y.Xtb(A.c,li)||T.Fgb(y.Ytb(A.c,li)))&&y.rj(this.a,K.DC(u,this.b)),(!y.Xtb(A.c,Qi)||T.Fgb(y.Ytb(A.c,Qi)))&&y.rj(this.a,K.nD(u,this.b)),(!y.Xtb(A.c,Li)||T.Fgb(y.Ytb(A.c,Li)))&&y.rj(this.a,K.tD(u,this.b)),(!y.Xtb(A.c,Ui)||T.Fgb(y.Ytb(A.c,Ui)))&&y.rj(this.a,K.zD(u,this.b,D,i))},K.AC=function(t,e){K.tC(),y.pnb(K.sC,t)||y.rnb(K.sC,t,e)},G(177,276,{},K.yC,K.zC),l.E8=O(177),K.BC=function(t){n.Ok();var e,A,P,r,i;for(n.uw.call(this,t),n.gp(this,n.Go(this)),i=(n.aw(this,7),this.p),this.b=d(l.H8,H,6,i.i.a.length,15,1),y.Fqb(this.b),e=!1,A=!0;!e&&A;)for(e=!0,A=!1,r=0;r<i.i.a.length;r++)this.b[r]==2&&(this.b[r]=A1.yF(this,r),this.b[r]!=2&&(A=!0)),this.b[r]==2&&(e=!1);if(!e)throw Qt(new K.gC);for(this.a=d(l.Z6,H,6,this.q,15,1),P=0;P<this.a.length;P++)if(this.a[P]=-1,this.a[P]=A1.sF(this,P),this.a[P]==0)throw Qt(new K.fC(\"Couldn't assign an atom type to atom \"+P+\" (\"+n.Ik[this.C[P]]+\")\"))},G(277,25,i9,K.BC),l.F8=O(277),K.CC=function(t,e,A,P,r,i){this.d=A,this.a=P,this.b=r,this.c=i,this.e=At.PE(t.k,e,A,P,r,i)},K.DC=function(t,e){var A,P,r,i,D;for(D=new y.Jj,i=0;i<e.q;i++)e.e[i]==3&&(A=e.i[i][0],P=e.i[i][1],r=e.i[i][2],y.pj(D,new K.CC(t,e,i,A,P,r)),y.pj(D,new K.CC(t,e,i,A,r,P)),y.pj(D,new K.CC(t,e,i,P,r,A)));return D},G(191,1,Un,K.CC),U.bc=function(t,e){var A,P,r,i,D,u;return i=K.HD(new K.OD(t,this.d,this.a)),D=K.HD(new K.OD(t,this.d,this.b)),u=K.HD(new K.OD(t,this.d,this.c)),r=K.HD(new K.JD(i.b*D.c-i.c*D.b,i.c*D.a-i.a*D.c,i.a*D.b-i.b*D.a)),A=yn*k.Math.asin(r.a*u.a+r.b*u.b+r.c*u.c),P=Pi*this.e*A*A,P},U.cc=function(t,e){var A,P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S,p,M,z,q,x,J,E;for(s=new K.OD(t,this.d,this.a),h=new K.OD(t,this.d,this.b),b=new K.OD(t,this.d,this.c),u=k.Math.sqrt(s.a*s.a+s.b*s.b+s.c*s.c),o=k.Math.sqrt(h.a*h.a+h.b*h.b+h.c*h.c),Q=k.Math.sqrt(b.a*b.a+b.b*b.b+b.c*b.c),s=K.HD(s),h=K.HD(h),b=K.HD(b),w=K.HD(K.DD(new K.JD(-s.a,-s.b,-s.c),h)),g=b.a*w.a+b.b*w.b+b.c*w.c,r=1-g*g,P=k.Math.max(r>0?k.Math.sqrt(r):0,gA),A=yn*k.Math.asin(g),i=s.a*h.a+s.b*h.b+s.c*h.c,m=k.Math.max(1-i*i,gA),B=k.Math.max(m>0?k.Math.sqrt(m):0,gA),D=fe*this.e*A,S=new K.JD(b.b*h.c-b.c*h.b,b.c*h.a-b.a*h.c,b.a*h.b-b.b*h.a),p=new K.JD(s.b*b.c-s.c*b.b,s.c*b.a-s.a*b.c,s.a*b.b-s.b*b.a),M=new K.JD(h.b*s.c-h.c*s.b,h.c*s.a-h.a*s.c,h.a*s.b-h.b*s.a),z=P*B,q=g/(P*m),x=v(F(l.X6,1),Bt,6,15,[(S.a/z-(s.a-h.a*i)*q)/u,(S.b/z-(s.b-h.b*i)*q)/u,(S.c/z-(s.c-h.c*i)*q)/u]),J=v(F(l.X6,1),Bt,6,15,[(p.a/z-(h.a-s.a*i)*q)/o,(p.b/z-(h.b-s.b*i)*q)/o,(p.c/z-(h.c-s.c*i)*q)/o]),E=v(F(l.X6,1),Bt,6,15,[(M.a/z-b.a*g/P)/Q,(M.b/z-b.b*g/P)/Q,(M.c/z-b.c*g/P)/Q]),L=0;L<3;L++)e[3*this.a+L]+=D*x[L],e[3*this.d+L]+=-D*(x[L]+J[L]+E[L]),e[3*this.b+L]+=D*J[L],e[3*this.c+L]+=D*E[L]},U.a=0,U.b=0,U.c=0,U.d=0,U.e=0,l.G8=O(191),K.GC=function(t){return t<3?0:t<11?1:t<19?2:t<37?3:t<55?4:0},K.HC=function(t){var e;return e=0,t==2?e=1:t>=3&&t<=10?e=2:t>=11&&t<=18?e=3:t>=19&&t<=36?e=4:t>=37&&t<=54&&(e=5),(t>=21&&t<=30||t>=39&&t<=48)&&(e*=10),e},T.IC=function(t,e){return t.b-e.b},T.JC=function(t){return t.a!=null?t.a:\"\"+t.b},T.KC=function(t){return t.b};function vA(f,t){this.a=f,this.b=t}G(56,1,{4:1,32:1,56:1}),U.Rb=function(t){return T.IC(this,t)},U.compareTo=function(t){return T.IC(this,t)},U.equals=function(t){return this===t},U.lb=function(f){return this.equals(f)},U.hashCode=function(){return c.yzb(this)},U.nb=function(){return this.hashCode()},U.name=function(){return T.JC(this)},U.ordinal=function(){return T.KC(this)},U.toString=function(){return this.a!=null?this.a:\"\"+this.b},U.ob=function(){return this.toString()},U.b=0,l.vbb=O(56),K.TC=function(){return v(F(l.H8,1),H,6,15,[0,1,2])},l.H8=Oe(null,K.TC),K.UC=function(t,e,A,P,r,i){var D,u,o,Q;if(A=k.Math.max(0,A),P=k.Math.min(i.kc(),P),D=(P-A)/2|0,o=A,u=P,i.jc(o,t)>e||i.jc(u-1,t)<e)return-1;for(;P>=A;){if(D=A+((P-A)/2|0),Q=i.jc(D,t),Q==e)if(r&&D>o&&i.jc(D-1,t)==e)P=D;else if(!r&&D<u-1&&i.jc(D+1,t)==e)A=D;else return D;else Q>e?P=D:Q<e&&(A=D);if(P-A==1&&i.jc(A,t)<e&&i.jc(P,t)>e)break}return-1},K.VC=function(t,e){return K.UC(0,t,0,e.a.length,!0,e)},K.WC=function(t,e,A){var P,r,i;if(t.length!=e.length)return-1;for(i=0,P=A.kc(),r=0;r<t.length-1;r++)if(i=K.UC(t[r],e[r],i,P+1,!0,A),P=K.UC(t[r],e[r],i,P+1,!1,A),i==-1||P==-1)return-1;return K.UC(t[r],e[r],i,P+1,!0,A)},K.XC=function(t){t.a=new y.ptb},K.YC=function(t,e){return y.nnb(t.a,e)!=null?y.nnb(t.a,e):(K.dD(),K.cD)},K.ZC=function(t){var e,A,P,r,i,D,u,o,Q,L;for(K.XC(this),e=0;e<t.q;e++)for(y.qnb(this.a,new K.hD(e,e),(K.dD(),K._C)),A=0;A<t.e[e];A++)for(o=t.i[e][A],u=new K.hD(e,o),y.qnb(this.a,u,K.bD),P=0;P<t.e[o];P++)for(Q=t.i[o][P],D=new K.hD(e,Q),(!y.jnb(this.a,D)||j1(y.nnb(this.a,D))===j1(K.$C))&&y.qnb(this.a,D,K.aD),r=0;r<t.e[Q];r++)L=t.i[Q][r],i=new K.hD(e,L),y.jnb(this.a,i)||y.qnb(this.a,i,K.$C)},G(278,1,{},K.ZC),l.J8=O(278),K.dD=function(){K.dD=u1,K._C=new K.eD(\"ONE_ONE\",0),K.bD=new K.eD(\"ONE_TWO\",1),K.aD=new K.eD(\"ONE_THREE\",2),K.$C=new K.eD(\"ONE_FOUR\",3),K.cD=new K.eD(\"ONE_X\",4)},K.eD=function(t,e){vA.call(this,t,e)},K.fD=function(){return K.dD(),v(F(l.I8,1),L0,109,0,[K._C,K.bD,K.aD,K.$C,K.cD])},G(109,56,{109:1,4:1,32:1,56:1},K.eD),l.I8=Oe(109,K.fD),K.gD=function(t,e){return t.a>e.a?1:t.a<e.a?-1:t.b>e.b?1:t.b<e.b?-1:0},K.hD=function(t,e){this.a=t>e?t:e,this.b=t>e?e:t},G(100,1,{100:1,32:1},K.hD),U.Rb=function(t){return K.gD(this,t)},U.lb=function(t){var e;return t===this?!0:Yt(t,100)?(e=t,this.a==e.a&&this.b==e.b):!1},U.nb=function(){return new T.dib(this.a).a^new T.dib(this.b).a},U.ob=function(){return this.a+\",\"+this.b},U.a=0,U.b=0,l.K8=O(100),K.mD=function(t,e,A,P,r){this.a=A,this.b=P,this.c=r,this.i=At.VD(t.a,e,A,P,r),this.f=At.oE(t.d,e,A,P),this.g=At.oE(t.d,e,r,P),this.d=At.UE(t.n,e,A,P,r),this.e=At.UE(t.n,e,r,P,A)},K.nD=function(t,e){var A,P,r,i,D,u,o,Q;for(Q=new y.Jj,A=0;A<e.q;A++)if(P=e.a[A],!(e.e[A]<=1&&At.aE(t.b,P)))for(i=0;i<e.e[A];i++)for(u=e.i[A][i],D=0;D<e.e[A];D++)o=e.i[A][D],!(u>o)&&K.qD(t,e,u,A,o)&&(r=new K.mD(t,e,u,A,o),(k.Math.abs(r.d)>cA||k.Math.abs(r.e)>cA)&&c.izb(Q.a,r));return Q},K.qD=function(t,e,A,P,r){var i;return i=e.a[P],!(At.aE(t.b,i)||A==r||n.To(e,A,P)==-1||n.To(e,P,r)==-1)},G(355,1,Un,K.mD),U.bc=function(t,e){var A,P,r,i,D;return A=K.GD(new K.OD(t,this.b,this.a)),P=K.GD(new K.OD(t,this.b,this.c)),D=K.CD(new K.OD(t,this.b,this.a),new K.OD(t,this.b,this.c)),i=fe*(D*yn-this.i),r=i*(A-this.f)*this.d+i*(P-this.g)*this.e,r},U.cc=function(t,e){var A,P,r,i,D,u,o,Q,L,w,s,h,b,g,B;L=K.GD(new K.OD(t,this.b,this.a)),w=K.GD(new K.OD(t,this.b,this.c)),h=K.HD(new K.OD(t,this.b,this.a)),b=K.HD(new K.OD(t,this.b,this.c)),P=h.a*b.a+h.b*b.b+h.c*b.c,B=1-P*P,g=k.Math.max(B>0?k.Math.sqrt(B):0,gA),A=yn*k.Math.acos(P)-this.i,s=yn*(this.d*(L-this.f)+this.e*(w-this.g)),r=1/L*(b.a-P*h.a),i=1/L*(b.b-P*h.b),D=1/L*(b.c-P*h.c),u=1/w*(h.a-P*b.a),o=1/w*(h.b-P*b.b),Q=1/w*(h.c-P*b.c),e[3*this.a]+=fe*(h.a*this.d*A+r/-g*s),e[3*this.a+1]+=fe*(h.b*this.d*A+i/-g*s),e[3*this.a+2]+=fe*(h.c*this.d*A+D/-g*s),e[3*this.b]+=fe*((-h.a*this.d-b.a*this.e)*A+(-r-u)/-g*s),e[3*this.b+1]+=fe*((-h.b*this.d-b.b*this.e)*A+(-i-o)/-g*s),e[3*this.b+2]+=fe*((-h.c*this.d-b.c*this.e)*A+(-D-Q)/-g*s),e[3*this.c]+=fe*(b.a*this.e*A+u/-g*s),e[3*this.c+1]+=fe*(b.b*this.e*A+o/-g*s),e[3*this.c+2]+=fe*(b.c*this.e*A+Q/-g*s)},U.a=0,U.b=0,U.c=0,U.d=0,U.e=0,U.f=0,U.g=0,U.i=0,l.L8=O(355),K.rD=function(t,e){this.a=new At.WD(this),this.e=new At.vE,this.b=new At.fE,this.c=new At.kE,this.d=new At.pE(this),this.f=new At.CE,this.i=new At.IE,this.g=new At.FE,this.j=new At.ME,this.k=new At.QE(this,t),this.n=new At.VE(this),this.o=new At.ZE(this,e),this.p=new At.kF},G(153,1,{153:1},K.rD),l.M8=O(153),K.sD=function(t,e,A,P,r,i){var D;this.a=A,this.b=P,this.c=r,this.d=i,D=At.YE(t.o,e,A,P,r,i),this.e=D.a,this.f=D.b,this.g=D.c},K.tD=function(t,e){var A,P,r,i,D,u,o,Q,L;for(L=new y.Jj,A=0;A<e.q;A++)for(D=0;D<e.e[A];D++)for(P=e.i[A][D],u=0;u<e.e[P];u++)if(r=e.i[P][u],A!=r)for(o=0;o<e.e[r];o++)i=e.i[r][o],!(P==i||A==i)&&i>A&&(Q=new K.sD(t,e,A,P,r,i),(k.Math.abs(Q.e)>.001||k.Math.abs(Q.f)>.001||k.Math.abs(Q.g)>.001)&&c.izb(L.a,Q));return L},G(356,1,Un,K.sD),U.bc=function(t,e){var A,P,r,i,D,u,o,Q,L,w;return D=new K.OD(t,this.a,this.b),u=new K.OD(t,this.c,this.b),o=new K.OD(t,this.b,this.c),Q=new K.OD(t,this.d,this.c),L=new K.JD(D.b*u.c-D.c*u.b,D.c*u.a-D.a*u.c,D.a*u.b-D.b*u.a),w=new K.JD(o.b*Q.c-o.c*Q.b,o.c*Q.a-o.a*Q.c,o.a*Q.b-o.b*Q.a),r=(L.a*w.a+L.b*w.b+L.c*w.c)/(k.Math.sqrt(L.a*L.a+L.b*L.b+L.c*L.c)*k.Math.sqrt(w.a*w.a+w.b*w.b+w.c*w.c)),A=2*r*r-1,P=r*(2*A-1),i=.5*(this.e*(1+r)+this.f*(1-A)+this.g*(1+P)),i},U.cc=function(t,e){var A,P,r,i,D,u,o,Q,L,w,s;D=v(F(l.P8,1),v1,22,0,[new K.OD(t,this.b,this.a),new K.OD(t,this.b,this.c),new K.OD(t,this.c,this.b),new K.OD(t,this.c,this.d)]),s=v(F(l.P8,1),v1,22,0,[K.DD(D[0],D[1]),K.DD(D[2],D[3])]),P=v(F(l.X6,1),Bt,6,15,[K.GD(s[0]),K.GD(s[1])]),!(k.Math.abs(P[0])<dA||k.Math.abs(P[1])<dA)&&(s[0]=K.HD(s[0]),s[1]=K.HD(s[1]),A=K.FD(s[0],s[1]),L=1-A*A,Q=L>0?k.Math.sqrt(L):0,u=2*Q*A,o=3*Q-4*Q*L,i=.5*(-this.e*Q+2*this.f*u-3*this.g*o),w=-i*(k.Math.abs(Q)<dA?1/A:1/Q),r=v(F(l.X6,1),Bt,6,15,[1/P[0]*(s[1].a-A*s[0].a),1/P[0]*(s[1].b-A*s[0].b),1/P[0]*(s[1].c-A*s[0].c),1/P[1]*(s[0].a-A*s[1].a),1/P[1]*(s[0].b-A*s[1].b),1/P[1]*(s[0].c-A*s[1].c)]),e[3*this.a]+=w*(r[2]*D[1].b-r[1]*D[1].c),e[3*this.a+1]+=w*(r[0]*D[1].c-r[2]*D[1].a),e[3*this.a+2]+=w*(r[1]*D[1].a-r[0]*D[1].b),e[3*this.b]+=w*(r[1]*(D[1].c-D[0].c)+r[2]*(D[0].b-D[1].b)+r[4]*-D[3].c+r[5]*D[3].b),e[3*this.b+1]+=w*(r[0]*(D[0].c-D[1].c)+r[2]*(D[1].a-D[0].a)+r[3]*D[3].c+r[5]*-D[3].a),e[3*this.b+2]+=w*(r[0]*(D[1].b-D[0].b)+r[1]*(D[0].a-D[1].a)+r[3]*-D[3].b+r[4]*D[3].a),e[3*this.c]+=w*(r[1]*D[0].c+r[2]*-D[0].b+r[4]*(D[3].c-D[2].c)+r[5]*(D[2].b-D[3].b)),e[3*this.c+1]+=w*(r[0]*-D[0].c+r[2]*D[0].a+r[3]*(D[2].c-D[3].c)+r[5]*(D[3].a-D[2].a)),e[3*this.c+2]+=w*(r[0]*D[0].b+r[1]*-D[0].a+r[3]*(D[3].b-D[2].b)+r[4]*(D[2].a-D[3].a)),e[3*this.d]+=w*(r[4]*D[2].c-r[5]*D[2].b),e[3*this.d+1]+=w*(r[5]*D[2].a-r[3]*D[2].c),e[3*this.d+2]+=w*(r[3]*D[2].b-r[4]*D[2].a))},U.a=0,U.b=0,U.c=0,U.d=0,U.e=0,U.f=0,U.g=0,l.N8=O(356),K.wD=function(t,e){var A,P,r,i,D;return i=At.jF(e.p,t.b),D=At.jF(e.p,t.d),A=At.fF(e.p,t.b),P=At.fF(e.p,t.d),r=(i-D)/(i+D),.5*(i+D)*(1+(A==68||P==68?0:.2*(1-k.Math.exp(-12*r*r))))},K.xD=function(t,e,A){var P,r,i,D,u,o,Q;return i=At.gF(e.p,t.b),D=At.gF(e.p,t.d),P=At.eF(e.p,t.b),r=At.eF(e.p,t.d),u=At.iF(e.p,t.b),o=At.iF(e.p,t.d),Q=A*A,181.16*i*D*P*r/((k.Math.sqrt(P/u)+k.Math.sqrt(r/o))*Q*Q*Q)},K.yD=function(t,e,A,P){var r,i;this.b=e.a[A],this.d=e.a[P],this.a=A,this.c=P,r=K.wD(this,t),i=K.xD(this,t,r),this.e=At.fF(t.p,this.b),this.f=At.fF(t.p,this.d),(this.e==68&&this.f==65||this.e==65&&this.f==68)&&(r=r*.8,i*=.5),this.g=r,this.i=i},K.zD=function(t,e,A,P){var r,i,D,u,o;for(o=new y.Jj,i=0;i<e.q;i++)for(D=i+1;D<e.q;D++)r=new K.hD(i,D),u=y.nnb(A.a,r)!=null?y.nnb(A.a,r):(K.dD(),K.cD),(u==(K.dD(),K.$C)||u==K.cD)&&K.GD(new K.LD(e,i,D))<P&&y.pj(o,new K.yD(t,e,i,D));return o},G(357,1,Un,K.yD),U.bc=function(t,e){var A,P,r,i,D,u,o,Q,L,w;return D=K.GD(new K.OD(t,this.a,this.c)),u=D*D,o=u*u*u*D,A=1.07*this.g/(D+yi*this.g),P=A*A,r=P*P*P*A,L=this.g*this.g,w=L*L*L*this.g,i=1.12*w/(o+wi*w)-2,Q=r*i*this.i,Q},U.cc=function(t,e){var A,P,r,i,D,u,o,Q,L,w,s,h;for(r=K.GD(new K.OD(t,this.a,this.c)),D=r/this.g,u=D*D,o=u*u*u,Q=o*D,L=Q+wi,w=1.07/(D+1.07-1),s=w*w,h=s*s*s*w,A=this.i/this.g*h*(si*o/(L*L)+(si/L+14)/(D+yi)),i=0;i<3;i++)P=.01*this.g,r>0&&(P=A*(t[3*this.a+i]-t[3*this.c+i])/r),e[3*this.a+i]+=P,e[3*this.c+i]-=P},U.a=0,U.b=0,U.c=0,U.d=0,U.e=0,U.f=0,U.g=0,U.i=0,l.O8=O(357),K.CD=function(t,e){return k.Math.acos((t.a*e.a+t.b*e.b+t.c*e.c)/(k.Math.sqrt(t.a*t.a+t.b*t.b+t.c*t.c)*k.Math.sqrt(e.a*e.a+e.b*e.b+e.c*e.c)))},K.DD=function(t,e){return new K.JD(t.b*e.c-t.c*e.b,t.c*e.a-t.a*e.c,t.a*e.b-t.b*e.a)},K.ED=function(t,e){return k.Math.sqrt((t.a-e.a)*(t.a-e.a)+(t.b-e.b)*(t.b-e.b)+(t.c-e.c)*(t.c-e.c))},K.FD=function(t,e){return t.a*e.a+t.b*e.b+t.c*e.c},K.GD=function(t){return k.Math.sqrt(t.a*t.a+t.b*t.b+t.c*t.c)},K.HD=function(t){return k.Math.sqrt(t.a*t.a+t.b*t.b+t.c*t.c)>0?new K.JD(t.a/k.Math.sqrt(t.a*t.a+t.b*t.b+t.c*t.c),t.b/k.Math.sqrt(t.a*t.a+t.b*t.b+t.c*t.c),t.c/k.Math.sqrt(t.a*t.a+t.b*t.b+t.c*t.c)):new K.JD(0,0,0)},K.ID=function(t,e){return new K.JD(e.a-t.a,e.b-t.b,e.c-t.c)},K.JD=function(t,e,A){this.a=t,this.b=e,this.c=A},K.KD=function(t,e){this.a=t.J[e].a,this.b=t.J[e].b,this.c=t.J[e].c},K.LD=function(t,e,A){K.MD.call(this,K.ID(new K.KD(t,e),new K.KD(t,A)))},K.MD=function(t){this.a=t.a,this.b=t.b,this.c=t.c},K.ND=function(t,e){this.a=t[3*e],this.b=t[3*e+1],this.c=t[3*e+2]},K.OD=function(t,e,A){K.MD.call(this,K.ID(new K.ND(t,e),new K.ND(t,A)))},G(22,1,{22:1},K.JD,K.KD,K.LD,K.ND,K.OD),U.lb=function(t){var e;return t===this?!0:Yt(t,22)?(e=t,k.Math.abs(this.a-e.a)<.01&&k.Math.abs(this.b-e.b)<.01&&k.Math.abs(this.c-e.c)<.01):!1},U.nb=function(){return T.Shb(c.Szb(this.a))+T.Shb(c.Szb(this.b))+T.Shb(c.Szb(this.c))},U.a=0,U.b=0,U.c=0,l.P8=O(22),At.RD=function(t,e,A,P,r,i){var D,u,o,Q,L,w,s,h,b;for(b=v(F(l.X6,1),Bt,6,15,[0,0,0]),Q=v(F(l.X6,1),Bt,6,15,[0,0,0]),u=v(F(l.Z6,1),H,6,15,[e.C[A],e.C[P],e.C[r]]),o=1.75,L=0;L<3;L++)switch(u[L]){case 1:b[L]=1.395;break;case 6:b[L]=2.494,Q[L]=1.016;break;case 7:b[L]=2.711,Q[L]=1.113;break;case 8:b[L]=3.045,Q[L]=1.337;break;case 9:b[L]=2.847;break;case 14:b[L]=2.35,Q[L]=.811;break;case 15:b[L]=2.35,Q[L]=1.068;break;case 16:b[L]=2.98,Q[L]=1.249;break;case 17:b[L]=2.909,Q[L]=1.078;break;case 35:b[L]=3.017;break;case 53:b[L]=3.086}return w=At.oE(t.a.d,e,A,P),s=At.oE(t.a.d,e,P,r),D=(w-s)*(w-s)/((w+s)*(w+s)),h=ni*i,A1.pF(e,A,P,r,4)?o*=.85:A1.pF(e,A,P,r,3)&&(o*=.05),o*b[0]*Q[1]*b[2]/((w+s)*h*h*k.Math.exp(2*D))},At.SD=function(t,e,A,P,r){var i;if(A1.pF(e,A,P,r,3))return 60;if(A1.pF(e,A,P,r,4))return 90;switch(i=e.a[P],At.$D(t.a.b,i)){case 2:if(e.C[P]==8)return 105;if(At.aE(t.a.b,i))return 180;break;case 3:if(At.eE(t.a.b,i)==3&&At.bE(t.a.b,i)==0)return e.C[P]==7?107:92;break;case 4:return 109.45}return 120},At.TD=function(t,e,A,P,r){var i,D,u,o,Q,L,w,s,h;for(i=e.a[A],u=e.a[P],o=e.a[r],L=A1.oF(t.a,e,A,P,r),s=-1,w=0;w<5&&s<0;w++)D=t.a.g.a[i-1][w],Q=t.a.g.a[o-1][w],D>Q&&(D=(h=T.pib(Q),T.pib(Q=D),h).a),s=K.WC(v(F(l.Z6,1),H,6,15,[2,1,3,0]),v(F(l.Z6,1),H,6,15,[u,D,Q,L]),t);return s},At.UD=function(t,e,A,P,r){var i;return i=At.TD(t,e,A,P,r),i<0?At.RD(t,e,A,P,r,At.SD(t,e,A,P,r)):k.Math.abs(T.Lhb(t.b[i][4]))<.001?At.RD(t,e,A,P,r,T.Lhb(t.b[i][5])):T.Lhb(t.b[i][4])},At.VD=function(t,e,A,P,r){var i;return i=At.TD(t,e,A,P,r),i<0?At.SD(t,e,A,P,r):T.Lhb(t.b[i][5])},At.WD=function(t){this.b=K.mC(\"/resources/forcefield/mmff94/angle.csv\"),this.a=t},G(377,1,{},At.WD),U.jc=function(t,e){return T.Mhb(this.b[t][e])},U.kc=function(){return this.b.length},l.Q8=O(377),At.ZD=function(t,e){return t.a[K.UC(0,e,0,t.a.length,!0,t)][6]>0},At.$D=function(t,e){return t.a[K.UC(0,e,0,t.a.length,!0,t)][2]},At._D=function(t){return t.a.length},At.aE=function(t,e){var A;return A=K.UC(0,e,0,t.a.length,!0,t),A>=0&&t.a[A][7]>0},At.bE=function(t,e){return t.a[K.UC(0,e,0,t.a.length,!0,t)][5]},At.cE=function(t,e){return t.a[K.UC(0,e,0,t.a.length,!0,t)][4]},At.dE=function(t,e){return t.a[K.UC(0,e,0,t.a.length,!0,t)][8]>0},At.eE=function(t,e){return t.a[K.UC(0,e,0,t.a.length,!0,t)][3]},At.fE=function(){this.a=K.nC(\"/resources/forcefield/mmff94/atom.csv\")},G(372,1,{},At.fE),U.jc=function(t,e){return this.a[t][e]},U.kc=function(){return At._D(this)},l.R8=O(372),At.iE=function(t,e){return T.Lhb(t.a[e][3])},At.jE=function(t,e){return T.Lhb(t.a[e][2])},At.kE=function(){this.a=K.mC(\"/resources/forcefield/mmff94/bndk.csv\")},G(384,1,{},At.kE),U.jc=function(t,e){return T.Mhb(this.a[t][e])},U.kc=function(){return this.a.length},l.S8=O(384),At.nE=function(t,e,A,P){var r,i,D,u,o,Q,L,w,s,h,b,g;return L=A1.zF(t.a,e,n.To(e,A,P)),i=e.a[A],u=e.a[P],i>u&&(i=(b=T.pib(u),T.pib(u=i),b).a),s=K.WC(v(F(l.Z6,1),H,6,15,[1,2,0]),v(F(l.Z6,1),H,6,15,[i,u,L]),t),s>=0?T.Lhb(t.b[s][3]):(r=e.C[A],D=e.C[P],r>D&&(r=(h=T.pib(D),T.pib(D=r),h).a),g=At.oE(t,e,A,P),Q=K.WC(v(F(l.Z6,1),H,6,15,[0,1]),v(F(l.Z6,1),H,6,15,[r,D]),t.a.c),Q>=0?(w=k.Math.pow(At.jE(t.a.c,Q)/g,6),At.iE(t.a.c,Q)*w):(o=K.WC(v(F(l.Z6,1),H,6,15,[0,1]),v(F(l.Z6,1),H,6,15,[K.HC(r),K.HC(D)]),t.a.j),k.Math.pow(10,-(g-At.LE(t.a.j,o,2))/At.LE(t.a.j,o,3))))},At.oE=function(t,e,A,P){var r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S;return L=A1.zF(t.a,e,n.To(e,A,P)),D=e.a[A],Q=e.a[P],D>Q&&(D=(B=T.pib(Q),T.pib(Q=D),B).a),b=K.WC(v(F(l.Z6,1),H,6,15,[1,2,0]),v(F(l.Z6,1),H,6,15,[D,Q,L]),t),b>=0?T.Lhb(t.b[b][4]):(i=e.C[A],o=e.C[P],i>o&&(i=(g=T.pib(o),T.pib(o=i),g).a),r=K.VC(i,t.a.f),u=K.VC(o,t.a.f),m=At.BE(t.a.f,r),S=At.BE(t.a.f,u),s=At.zE(t.a.f,r),h=At.zE(t.a.f,u),w=i==1||o==1?.05:.085,m+S-w*k.Math.pow(k.Math.abs(s-h),1.4))},At.pE=function(t){this.b=K.mC(\"/resources/forcefield/mmff94/bond.csv\"),this.a=t},G(380,1,{},At.pE),U.jc=function(t,e){return T.Mhb(this.b[t][e])},U.kc=function(){return this.b.length},l.T8=O(380),At.sE=function(t,e,A,P){return K.UC(1,e,0,A,P,new At.wE(t))},At.tE=function(t,e){return T.Lhb(t.b[e-1][2])},At.uE=function(t,e,A,P){var r,i,D,u,o,Q,L;return L=A>P?1:-1,Q=A>P?P:A,o=A>P?A:P,i=At.sE(t,Q,t.a.length,!0),r=At.sE(t,Q,t.a.length,!1),i==-1||r==-1||(u=K.UC(2,o,i,r+1,!0,new At.wE(t)),D=K.UC(2,o,i,r+1,!1,new At.wE(t)),u==-1||D==-1)?T.Lhb(t.b[A-1][1])-T.Lhb(t.b[P-1][1]):e==0&&T.Mhb(t.a[u][0])==0?L*T.Lhb(t.a[u][3]):e==1&&T.Mhb(t.a[D][0])==1?L*T.Lhb(t.a[D][3]):T.Lhb(t.b[A-1][1])-T.Lhb(t.b[P-1][1])},At.vE=function(){this.b=K.mC(\"/resources/forcefield/mmff94/pbci.csv\"),this.a=K.mC(\"/resources/forcefield/mmff94/bci.csv\")},G(378,1,{},At.vE),l.V8=O(378),At.wE=function(t){this.a=t},G(195,1,{},At.wE),U.jc=function(t,e){return T.Mhb(this.a.a[t][e])},U.kc=function(){return this.a.a.length},l.U8=O(195),At.zE=function(t,e){return T.Lhb(t.a[e][2])},At.AE=function(t){return t.a.length},At.BE=function(t,e){return T.Lhb(t.a[e][1])},At.CE=function(){this.a=K.mC(\"/resources/forcefield/mmff94/covrad.csv\")},G(385,1,{},At.CE),U.jc=function(t,e){return T.Mhb(this.a[t][e])},U.kc=function(){return At.AE(this)},l.W8=O(385),At.FE=function(){this.a=K.nC(\"/resources/forcefield/mmff94/def.csv\")},G(387,1,{},At.FE),l.X8=O(387),At.GE=function(t,e,A,P,r){var i,D,u,o;return i=K.GC(e.C[A]),D=K.GC(e.C[P]),u=K.GC(e.C[r]),i>u&&(i=(o=T.pib(u),T.pib(u=i),o).a),K.WC(v(F(l.Z6,1),H,6,15,[1,0,2]),v(F(l.Z6,1),H,6,15,[D,i,u]),t)},At.HE=function(t,e,A,P,r){var i,D,u,o;return i=K.GC(e.C[A]),D=K.GC(e.C[r]),u=i>D?4:3,o=At.GE(t,e,A,P,r),o>=0?T.Lhb(t.a[o][u]):0},At.IE=function(){this.a=K.mC(\"/resources/forcefield/mmff94/dfsb.csv\")},G(386,1,{},At.IE),U.jc=function(t,e){return T.Mhb(this.a[t][e])},U.kc=function(){return this.a.length},l.Y8=O(386),At.LE=function(t,e,A){return T.Lhb(t.a[e][A])},At.ME=function(){this.a=K.mC(\"/resources/forcefield/mmff94/herschbachlaurie.csv\")},G(388,1,{},At.ME),U.jc=function(t,e){return T.Mhb(this.a[t][e])},U.kc=function(){return this.a.length},l.Z8=O(388),At.PE=function(t,e,A,P,r,i){var D,u,o,Q,L,w;for(D=e.a[A],L=v(F(l.Z6,1),H,6,15,[e.a[P],e.a[r],e.a[i]]),u=0;u<4;u++){for(w=d(l.Z6,H,6,3,15,1),Q=0;Q<3;Q++)w[Q]=t.a.g.a[L[Q]-1][u+1];if(c.lzb(w,c.Szb(y0(y.lrb.prototype.jd,y.lrb,[]))),o=K.WC(v(F(l.Z6,1),H,6,15,[1,0,2,3]),v(F(l.Z6,1),H,6,15,[D,w[0],w[1],w[2]]),t),o>=0)return T.Lhb(t.b[o][4])}return 0},At.QE=function(t,e){this.b=K.mC(e),this.a=t},G(379,1,{},At.QE),U.jc=function(t,e){return T.Mhb(this.b[t][e])},U.kc=function(){return this.b.length},l.$8=O(379),At.TE=function(t,e,A,P,r){var i,D,u,o,Q;return i=e.a[A],D=e.a[P],u=e.a[r],o=A1.nF(t.a,e,A,P,r),i>u&&(i=(Q=T.pib(u),T.pib(u=i),Q).a),K.WC(v(F(l.Z6,1),H,6,15,[2,1,3,0]),v(F(l.Z6,1),H,6,15,[D,i,u,o]),t)},At.UE=function(t,e,A,P,r){var i,D,u,o,Q,L;return i=e.a[A],D=e.a[r],o=A1.AF(t.a,e,A,P),Q=A1.AF(t.a,e,P,r),L=At.TE(t,e,A,P,r),u=i>D||i==D&&o<Q?1:0,L>=0?T.Lhb(t.b[L][4+u]):At.HE(t.a.i,e,A,P,r)},At.VE=function(t){this.b=K.mC(\"/resources/forcefield/mmff94/stbn.csv\"),this.a=t},G(381,1,{},At.VE),U.jc=function(t,e){return T.Mhb(this.b[t][e])},U.kc=function(){return this.b.length},l._8=O(381),At.YE=function(t,e,A,P,r,i){var D,u,o,Q,L,w,s,h,b,g,B,m,S,p,M,z,q,x,J,E,N,ft,Lt,ot,st,ut,rt,Ut;for(L=e.a[A],w=e.a[P],s=e.a[r],h=e.a[i],ut=A1.DF(t.a,e,A,P,r,i),rt=ut>10?ut/10|0:ut,Ut=ut>10?ut-rt*10:0,J=-1,E=0,x=0,N=0,z=rt,ot=5;(E<ot&&(J==-1||ot==4)||E==4&&rt==5&&Ut>0)&&(ot==5&&E==4&&(ot=4,E=0,z=Ut),E==1?(x=1,N=3):E==2?(x=3,N=1):(x=E,N=E),m=t.a.g.a[L-1][k.Math.min(x+1,4)],S=w,p=s,M=t.a.g.a[h-1][k.Math.min(N+1,4)],S>p?(p=(Lt=T.pib(S),T.pib(S=p),Lt).a,M=(ft=T.pib(m),T.pib(m=M),ft).a):S==p&&m>M&&(M=(ft=T.pib(m),T.pib(m=M),ft).a),J=K.WC(v(F(l.Z6,1),H,6,15,[2,3,1,4,0]),v(F(l.Z6,1),H,6,15,[S,p,m,M,z]),t),!(J!=-1&&ot==4));)++E;if(J>=0)return new At.cF(t,J);for(B=n.To(e,P,r),u=v(F(l.X6,1),Bt,6,15,[0,0]),o=v(F(l.X6,1),Bt,6,15,[0,0]),Q=v(F(l.X6,1),Bt,6,15,[0,0]),b=v(F(l.Z6,1),H,6,15,[e.C[P],e.C[r]]),D=(At.$D(t.a.b,w)-1)*(At.$D(t.a.b,s)-1),q=0;q<2;q++)switch(b[q]){case 6:u[q]=2,o[q]=2.12;break;case 7:u[q]=2,o[q]=1.5;break;case 8:u[q]=2,o[q]=.2,Q[q]=2;break;case 14:u[q]=1.25,o[q]=1.22;break;case 15:u[q]=1.25,o[q]=2.4;break;case 16:u[q]=1.25,o[q]=.49,Q[q]=8}return At.aE(t.a.b,w)||At.aE(t.a.b,s)?new At.bF(0,0):At.ZD(t.a.b,w)&&At.ZD(t.a.b,s)&&B<e.g&&n.lt(e.p,B)?(g=At.eE(t.a.b,w)==3&&At.eE(t.a.b,s)==4||At.eE(t.a.b,w)==4&&At.eE(t.a.b,s)==3?3:6,st=At.cE(t.a.b,w)==0&&At.cE(t.a.b,s)==0?.5:.3,new At.bF(g*st*k.Math.sqrt(u[0]*u[1]),0)):n.am(e,B)==2?(st=At.bE(t.a.b,w)==2&&At.bE(t.a.b,s)==2?1:.4,new At.bF(6*st*k.Math.sqrt(u[0]*u[1]),0)):At.$D(t.a.b,w)==4&&At.$D(t.a.b,s)==4?new At.bF(0,k.Math.sqrt(o[0]*o[1])/D):At.$D(t.a.b,w)==4&&At.$D(t.a.b,s)!=4?At.$D(t.a.b,s)==3&&(At.eE(t.a.b,s)==4||At.eE(t.a.b,s)==34||At.bE(t.a.b,s)>0)||At.$D(t.a.b,s)==2&&(At.eE(t.a.b,s)==3||At.bE(t.a.b,s)>0)?new At.aF:new At.bF(0,k.Math.sqrt(o[0]*o[1])/D):At.$D(t.a.b,s)==4&&At.$D(t.a.b,w)!=4?At.$D(t.a.b,w)==3&&(At.eE(t.a.b,w)==4||At.eE(t.a.b,w)==34||At.bE(t.a.b,w)>0)||At.$D(t.a.b,w)==2&&(At.eE(t.a.b,w)==3||At.bE(t.a.b,w)>0)?new At.aF:new At.bF(0,k.Math.sqrt(o[0]*o[1])/D):n.am(e,B)==1&&At.bE(t.a.b,w)>0&&At.bE(t.a.b,s)>0||At.bE(t.a.b,w)>0&&At.cE(t.a.b,s)>0||At.cE(t.a.b,w)>0&&At.bE(t.a.b,s)>0?At.cE(t.a.b,w)>0&&At.cE(t.a.b,s)>0?new At.aF:At.cE(t.a.b,w)>0&&At.bE(t.a.b,s)>0?(st=0,At.bE(t.a.b,w)==1?st=.5:K.GC(b[0])==2&&K.GC(b[1])==2?st=.3:(K.GC(b[0])!=2||K.GC(b[1])!=2)&&(st=.15),new At.bF(6*st*k.Math.sqrt(u[0]*u[1]),0)):At.cE(t.a.b,s)>0&&At.bE(t.a.b,w)>0?(st=0,At.bE(t.a.b,s)==1?st=.5:K.GC(b[0])==2&&K.GC(b[1])==2?st=.3:(K.GC(b[0])!=2||K.GC(b[1])!=2)&&(st=.15),new At.bF(6*st*k.Math.sqrt(u[0]*u[1]),0)):(At.bE(t.a.b,w)==1||At.bE(t.a.b,s)==1)&&(b[0]!=6||b[1]!=6)?new At.bF(2.4000000000000004*k.Math.sqrt(u[0]*u[1]),0):new At.bF(.8999999999999999*k.Math.sqrt(u[0]*u[1]),0):(b[0]==8||b[0]==16)&&(b[1]==8||b[1]==16)?new At.bF(-k.Math.sqrt(Q[0]*Q[1]),0):new At.bF(0,k.Math.sqrt(o[0]*o[1])/D)},At.ZE=function(t,e){this.b=K.mC(e),this.a=t},G(382,1,{},At.ZE),U.jc=function(t,e){return T.Mhb(this.b[t][e])},U.kc=function(){return this.b.length},l.b9=O(382),At.aF=function(){this.a=0,this.b=0,this.c=0},At.bF=function(t,e){this.a=0,this.b=t,this.c=e},At.cF=function(t,e){this.a=T.Lhb(t.b[e][5]),this.b=T.Lhb(t.b[e][6]),this.c=T.Lhb(t.b[e][7])},G(49,1,{},At.aF,At.bF,At.cF),U.ob=function(){return this.a+\",\"+this.b+\",\"+this.c},U.a=0,U.b=0,U.c=0,l.a9=O(49),At.eF=function(t,e){return T.Lhb(t.a[K.UC(0,e,0,t.a.length,!0,t)][1])},At.fF=function(t,e){return t.a[K.UC(0,e,0,t.a.length,!0,t)][5].a},At.gF=function(t,e){return T.Lhb(t.a[K.UC(0,e,0,t.a.length,!0,t)][4])},At.hF=function(t){return t.a.length},At.iF=function(t,e){return T.Lhb(t.a[K.UC(0,e,0,t.a.length,!0,t)][2])},At.jF=function(t,e){var A;return A=K.UC(0,e,0,t.a.length,!0,t),T.Lhb(t.a[A][3])*k.Math.pow(T.Lhb(t.a[A][1]),.25)},At.kF=function(){this.a=K.mC(\"/resources/forcefield/mmff94/vanderwaals.csv\")},G(383,1,{},At.kF),U.jc=function(t,e){return T.Mhb(this.a[t][e])},U.kc=function(){return At.hF(this)},l.c9=O(383),A1.nF=function(t,e,A,P,r){var i,D,u,o,Q,L,w;switch(i=e.a[A],D=e.a[r],Q=A1.AF(t,e,A,P),w=A1.AF(t,e,P,r),o=i<=D?Q:w,L=i<D?w:Q,u=A1.oF(t,e,A,P,r),u){case 1:return o>0||o==L?1:2;case 2:return 3;case 3:return 5;case 4:return 4;case 5:return o>0||o==L?6:7;case 6:return 8;case 7:return o>0||o==L?9:10;case 8:return 11}return 0},A1.oF=function(t,e,A,P,r){var i,D;return i=A1.AF(t,e,A,P)+A1.AF(t,e,P,r),D=i,A1.pF(e,A,P,r,3)?D+=i>0?4:3:A1.pF(e,A,P,r,4)&&(D+=i>0?6:4),D},A1.pF=function(t,e,A,P,r){var i,D,u,o,Q,L,w,s;if(s=(n.aw(t,7),t.p),Q=new y.rtb,y.qtb(Q,T.pib(e)),y.qtb(Q,T.pib(A)),y.qtb(Q,T.pib(P)),n.To(t,e,A)>=0&&n.To(t,A,P)>=0){for(L=0;L<s.i.a.length;L++)if(y.uj(s.j,L).length==r){for(w=new y.rtb,D=y.uj(s.i,L),u=0,o=D.length;u<o;++u)i=D[u],y.qtb(w,T.pib(i));if(y.Gi(w,Q))return!0}}return!1},A1.qF=function(t,e){var A,P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S,p,M,z,q,x,J,E,N,ft,Lt,ot,st,ut,rt,Ut,ht,it,bt,ct,$t,Ft,Rt,Et,Nt,It,vt,kt,L1,f1,St,Xt,k1,qt,P1,E1,y1,o1,I1,O1,F0,Z1,l1,f0,w0,d0,Ce,be,te,ee,p0,Re,O0,C0,Ke,Bn,dt,_t,ce,kn,jn,mn;if(e<t.f&&n.kt(t.p,e)){if(A1.xF(t,e,5)){if(g=new y.Kj(t.q),S=new y.Kj(t.q),b=!1,N=!1,ft=!1,t.C[e]==6||t.C[e]==7){for(x=0;x<t.e[e];x++)if(dt=t.i[e][x],!!A1.xF(t,dt,5))for(A1.vF(t,e,dt)&&(t.C[dt]==8||t.C[dt]==16||t.C[dt]==7&&t.e[dt]+n.kp(t,dt)==3&&!A1.wF(t,dt))&&y.pj(g,T.pib(dt)),I1=0;I1<t.e[dt];I1++)_t=t.i[dt][I1],_t!=e&&A1.xF(t,_t,5)&&A1.vF(t,e,_t)&&(t.C[_t]==8||t.C[_t]==16||t.C[_t]==7&&t.e[_t]+n.kp(t,_t)==3&&!A1.wF(t,_t))&&y.pj(S,T.pib(_t));for(h=new y.rqb(g);h.a<h.c.a.length;)if(s=y.qqb(h).a,t.C[s]==8||t.C[s]==16){N=!0;break}for(m=new y.rqb(S);m.a<m.c.a.length;)if(B=y.qqb(m).a,t.C[B]==8||t.C[B]==16){ft=!0;break}for(q=0;q<g.a.length;q++)for(o1=q;o1<S.a.length;o1++)if(A1.vF(t,(c.Fzb(q,g.a.length),g.a[q]).a,(c.Fzb(o1,S.a.length),S.a[o1]).a)){b=!0;break}}switch(t.C[e]){case 6:if(S.a.length==0){for(w0=0,F0=0,l1=0,f0=0,q=0;q<t.e[e];q++)dt=t.i[e][q],t.C[dt]==7&&t.e[dt]+n.kp(t,dt)==3&&(++w0,t.s[dt]>0&&!A1.wF(t,dt)&&++F0,A1.xF(t,dt,5)&&++l1,A1.xF(t,dt,6)&&++f0);if((w0==2&&l1>0||w0==3&&l1==2)&&F0>0&&f0==0)return 80}if(!(g.a.length==0^S.a.length==0)){for(mn=!0,jn=!0,q=0;q<t.e[e];q++)dt=t.i[e][q],(t.C[dt]!=6||!A1.tF(t,dt))&&(mn=!1),A1.vF(t,e,dt)&&!(dt<t.f&&n.kt(t.p,dt))&&(jn=!1);if(g.a.length==0&&S.a.length==0&&!mn&&jn||g.a.length!=0&&g.a.length!=0&&(!b||!N&&!ft))return 78}if(g.a.length!=0&&(S.a.length==0||N))return 63;if(S.a.length!=0&&(g.a.length==0||ft))return 64;break;case 7:if(A1.wF(t,e))return 82;if(g.a.length==0&&S.a.length==0)return t.e[e]+n.kp(t,e)==3?39:76;if(t.e[e]+n.kp(t,e)==3&&g.a.length==0^S.a.length==0)return 81;if(g.a.length!=0&&(S.a.length==0||N))return 65;if(S.a.length!=0&&(g.a.length==0||ft))return 66;if(g.a.length!=0&&S.a.length!=0)return 79;break;case 8:return 59;case 16:return 44}}if(A1.xF(t,e,6))switch(t.C[e]){case 6:return 37;case 7:return A1.wF(t,e)?69:t.e[e]+n.kp(t,e)==3?58:38}}switch(t.C[e]){case 3:if(t.j[e]==0)return 92;break;case 6:if(t.e[e]+n.kp(t,e)==4)return(t.p&&e<t.f?n._s(t.p,e):0)==3?22:(t.p&&e<t.f?n._s(t.p,e):0)==4?20:1;if(t.e[e]+n.kp(t,e)==3){for(d0=0,Ce=0,te=0,O0=0,M=0,x=0;x<t.e[e];x++)dt=t.i[e][x],n.am(t,n.To(t,e,dt))==2&&(M=t.C[dt]),t.e[dt]+n.kp(t,dt)==1?(t.C[dt]==8&&++te,t.C[dt]==16&&++O0):t.C[dt]==7&&(t.e[dt]+n.kp(t,dt)==3?++Ce:t.e[dt]+n.kp(t,dt)==2&&n.am(t,n.To(t,e,dt))==2&&++d0);return Ce>=2&&d0==0&&M==7?57:te==2||O0==2?41:(t.p&&e<t.f?n._s(t.p,e):0)==4&&M==6?30:M==7||M==8||M==15||M==16?3:2}if(t.e[e]+n.kp(t,e)==2)return 4;if(t.e[e]+n.kp(t,e)==1)return 60;break;case 7:for(Ke=0,P1=!1,J=0;J<t.e[e];J++)if(dt=t.i[e][J],t.C[dt]==8&&t.e[dt]+n.kp(t,dt)==1&&++Ke,n.rp(t,e)+n.kp(t,e)>=3&&(t.C[dt]==15||t.C[dt]==16)){for(Re=0,o1=0;o1<t.e[dt];o1++)_t=t.i[dt][o1],t.C[_t]==8&&t.e[_t]+n.kp(t,_t)==1&&++Re;P1||(P1=Re>=2)}if(t.e[e]+n.kp(t,e)==4)return A1.wF(t,e)?68:34;if(t.e[e]+n.kp(t,e)==3){if(n.rp(t,e)+n.kp(t,e)>=4){for(z=!1,q=0;q<t.e[e];q++)if(dt=t.i[e][q],n.am(t,n.To(t,e,dt))==2&&(z=t.C[dt]==7||t.C[dt]==6,t.C[dt]==6))for(o1=0;z&&o1<t.e[dt];o1++)_t=t.i[dt][o1],_t!=e&&(z=!(t.C[_t]==7&&t.e[_t]+n.kp(t,_t)==3));if(Ke==1)return 67;if(Ke>=2)return 45;if(z)return 54}if(n.rp(t,e)+n.kp(t,e)>=3){for(it=!1,ht=!1,bt=!1,ct=!1,Nt=!1,Et=!1,A=0,P=0,r=0,i=0,u=0,L=0,q=0;q<t.e[e];q++)if(dt=t.i[e][q],t.C[dt]==6){for(Nt=!0,dt<t.f&&n.kt(t.p,dt)&&(t.p&&dt<t.f?n._s(t.p,dt):0)==6&&(Et=!0),r=0,i=0,u=0,L=0,F0=0,E=0,o1=0;o1<t.e[dt];o1++){if(_t=t.i[dt][o1],p=n.To(t,dt,_t),n.am(t,p)==2&&(t.C[_t]==8||t.C[_t]==16)&&(it=!0),(n.am(t,p)==2||p<t.g&&n.lt(t.p,p)&&(t.C[_t]==6||t.C[_t]==7&&A1.uF(t,_t)==1))&&(A=t.C[_t]),n.am(t,p)==3&&(P=t.C[_t]),t.C[_t]==7&&t.e[_t]+n.kp(t,_t)==3){for(t.s[_t]==1&&++F0,A1.xF(t,dt,6)&&++E,Q=0,O1=0;O1<t.e[_t];O1++)ce=t.i[_t][O1],t.C[ce]==8&&++Q;Q<2&&++i}t.C[_t]==7&&t.e[_t]+n.kp(t,_t)==2&&(n.am(t,p)==2||p<t.g&&n.lt(t.p,p))&&++r,_t<t.f&&n.kt(t.p,_t)&&(t.C[_t]==8&&++u,t.C[_t]==16&&++L)}A==7&&(i==2&&r==0&&F0>0&&E==0&&t.e[dt]+n.kp(t,dt)<4&&(ht=!0),i==3&&(bt=!0))}else if(t.C[dt]==7){for(D=0,o=0,w=0,o1=0;o1<t.e[dt];o1++)if(_t=t.i[dt][o1],p=n.To(t,dt,_t),n.am(t,p)==2){if(t.C[_t]==6){for(O1=0;O1<t.e[_t];O1++)ce=t.i[_t][O1],ce!=e&&(t.C[ce]==7?++D:t.C[ce]==8?++o:t.C[ce]==16&&++w);D==0&&o==0&&w==0&&!Et&&(ct=!0)}t.C[_t]==7&&!Et&&(ct=!0)}}if(Nt){if(P==7&&(P1=!0),ht)return 55;if(bt)return 56;if(!it&&!P1&&(u==0&&L==0&&Et||A==6||A==7||A==15||P==6))return 40}if(!P1&&(it||ct))return 10}}if(t.e[e]+n.kp(t,e)==2){if(n.rp(t,e)+n.kp(t,e)==4){for(rt=!1,q=0;!rt&&q<t.e[e];q++)dt=t.i[e][q],rt=n.am(t,n.To(t,e,dt))==3;return rt?61:53}if(n.rp(t,e)+n.kp(t,e)==3){for(vt=!1,ut=!1,q=0;q<t.e[e];q++)dt=t.i[e][q],n.am(t,n.To(t,e,dt))==2&&(vt=t.C[dt]==8&&Ke==1,ut=t.C[dt]==6||t.C[dt]==7);if(vt&&!ut)return 46;if(ut)return 9}if(n.rp(t,e)+n.kp(t,e)>=2){for(Ft=!1,q=0;q<t.e[e];q++)if(dt=t.i[e][q],t.C[dt]==16){for(Bn=0,o1=0;o1<t.e[dt];o1++)_t=t.i[dt][o1],t.C[_t]==8&&t.e[_t]+n.kp(t,_t)==1&&++Bn;Ft=Bn==1}if(Ft)return 48;if(!P1)return 62}}if(P1)return 43;if(t.e[e]+n.kp(t,e)==1){for(Rt=!1,Ut=!1,q=0;!Rt&&!Ut&&q<t.e[e];q++)if(dt=t.i[e][q],Rt=n.am(t,n.To(t,e,dt))==3,t.C[dt]==7&&t.e[dt]+n.kp(t,dt)==2)for(o1=0;!Ut&&o1<t.e[dt];o1++)_t=t.i[dt][o1],Ut=t.C[_t]==7&&t.e[_t]+n.kp(t,_t)==2||t.C[_t]==6&&t.e[_t]+n.kp(t,_t)==3;if(Rt)return 42;if(Ut)return 47}return 8;case 8:if(t.e[e]+n.kp(t,e)==3)return 49;if(t.e[e]+n.kp(t,e)==2){if(n.rp(t,e)+n.kp(t,e)==3)return 51;for(Z1=0,q=0;q<t.e[e];q++)dt=t.i[e][q],t.C[dt]==1&&++Z1;return Z1+n.kp(t,e)==2?70:6}if(t.j[e]<=1){for(be=0,p0=0,C0=0,St=t.e[e]-t.j[e]+n.kp(t,e)>0,ot=!1,Lt=!1,f1=!1,kt=!1,Xt=!1,$t=!1,It=!1,y1=!1,qt=!1,E1=!1,k1=!1,q=0;q<t.e[e]&&!(St||ot||Lt||f1||kt||Xt||$t||It||y1||qt||E1||k1);q++){if(dt=t.i[e][q],t.C[dt]==6||t.C[dt]==7||t.C[dt]==16)for(o1=0;o1<t.e[dt];o1++)_t=t.i[dt][o1],t.C[_t]==7&&t.e[_t]+n.kp(t,_t)==2&&++be,t.C[_t]==8&&t.e[_t]+n.kp(t,_t)==1&&++p0,t.C[_t]==16&&t.e[_t]+n.kp(t,_t)==1&&++C0;St=t.C[dt]==1,t.C[dt]==6&&(ot=p0==2,Lt=n.am(t,n.To(t,e,dt))==2,f1=n.am(t,n.To(t,e,dt))==1&&p0==1),t.C[dt]==7&&(kt=n.am(t,n.To(t,e,dt))==2,n.am(t,n.To(t,e,dt))==1&&p0==1&&(Xt=t.e[dt]+n.kp(t,dt)==2||n.rp(t,dt)+n.kp(t,dt)==3,$t=n.rp(t,dt)+n.kp(t,dt)==4),It=p0>=2),t.C[dt]==16&&(y1=C0==1,qt=n.am(t,n.To(t,e,dt))==1||n.am(t,n.To(t,e,dt))==2&&p0+be>1,E1=n.am(t,n.To(t,e,dt))==2&&p0+be==1),k1=t.C[dt]==15||t.C[dt]==17}if(f1||Xt||St)return 35;if(ot||It||$t||y1||qt||k1)return 32;if(Lt||kt||E1)return 7}break;case 9:if(t.j[e]==1)return 11;if(t.j[e]==0)return 89;break;case 11:if(t.j[e]==0)return 93;break;case 12:if(t.j[e]==0)return 99;break;case 14:return 19;case 15:if(t.e[e]+n.kp(t,e)==4)return 25;if(t.e[e]+n.kp(t,e)==3)return 26;if(t.e[e]+n.kp(t,e)==2)return 75;break;case 16:if(t.e[e]+n.kp(t,e)==3||t.e[e]+n.kp(t,e)==4){for(ee=0,C0=0,st=!1,q=0;q<t.e[e];q++)dt=t.i[e][q],t.C[dt]==6&&n.am(t,n.To(t,e,dt))==2&&(st=!0),(t.j[dt]==1&&t.C[dt]==8||t.e[dt]+n.kp(t,dt)==2&&t.C[dt]==7)&&++ee,t.j[dt]==1&&t.C[dt]==16&&++C0;return t.e[e]+n.kp(t,e)==3&&ee==2&&st||t.e[e]+n.kp(t,e)==4?18:ee>0&&C0>0||ee==2&&!st?73:17}if(t.e[e]+n.kp(t,e)==2){for(L1=!1,q=0;q<t.e[e];q++)dt=t.i[e][q],t.C[dt]==8&&n.am(t,n.To(t,e,dt))==2&&(L1=!0);return L1?74:15}if(t.e[e]+n.kp(t,e)==1){for(kn=0,st=!1,q=0;q<t.e[e];q++){for(dt=t.i[e][q],o1=0;o1<t.e[dt];o1++)_t=t.i[dt][o1],t.C[_t]==16&&t.e[_t]+n.kp(t,_t)==1&&++kn;t.C[dt]==6&&n.am(t,n.To(t,e,dt))==2&&(st=!0)}return st&&kn!=2?16:72}break;case 17:if(t.j[e]==4){for(te=0,q=0;q<t.e[e];q++)dt=t.i[e][q],t.C[dt]==8&&++te;if(te==4)return 77}if(t.j[e]==1)return 12;if(t.j[e]==0)return 90;break;case 19:if(t.j[e]==0)return 94;break;case 20:if(t.j[e]==0)return 96;break;case 26:if(t.j[e]==0){if(t.s[e]==2)return 87;if(t.s[e]==3)return 88}break;case 29:if(t.j[e]==0){if(t.s[e]==1)return 97;if(t.s[e]==2)return 98}break;case 30:if(t.j[e]==0)return 95;break;case 35:if(t.j[e]==1)return 13;if(t.j[e]==0)return 91;break;case 53:if(t.j[e]==1)return 14}return 0},A1.rF=function(t,e){var A,P,r,i,D,u,o,Q,L,w,s;for(P=0;P<t.e[e];P++)switch(L=t.i[e][P],t.C[L]){case 6:return 5;case 7:switch(A1.qF(t,L)){case 8:case 39:case 62:case 67:case 68:return 23;case 34:case 54:case 55:case 56:case 58:case 81:return 36;case 9:return 27;default:return 28}case 8:switch(A1.qF(t,L)){case 49:return 50;case 51:return 52;case 70:return 31;case 6:for(r=!1,i=!1,D=!1,u=!1,o=0;o<t.e[L];o++){if(w=t.i[L][o],t.C[w]==6)for(Q=0;Q<t.e[w];Q++)s=t.i[w][Q],s!=L&&(A=n.To(t,w,s),(t.C[s]==6||t.C[s]==7)&&(n.am(t,A)==2||A<t.g&&n.lt(t.p,A))&&(r=!0),t.C[s]==8&&n.am(t,A)==2&&(i=!0));t.C[w]==15&&(D=!0),t.C[w]==16&&(u=!0)}if(i||D)return 24;if(r)return 29;if(u)return 33;default:return 21}case 14:return 5;case 16:case 15:return 71}return 0},A1.sF=function(t,e){return t.a[e]>-1?t.a[e]:t.C[e]==1?A1.rF(t,e):A1.qF(t,e)},A1.tF=function(t,e){var A,P;if((t.u[e]&M0)!=0){for(P=(n.aw(t,7),t.p),A=0;A<P.i.a.length;A++)if(y.uj(P.j,A).length==6&&n.mt(P,A,e))return!0}return!1},A1.uF=function(t,e){var A,P,r;for(r=(n.aw(t,7),t.p),P=0,A=0;A<r.i.a.length;A++)n.$s(r,A,e)>=0&&++P;return P},A1.vF=function(t,e,A){var P,r;if((t.u[e]&M0)==0||(t.u[A]&M0)==0)return!1;for(r=(n.aw(t,7),t.p),P=0;P<r.i.a.length;P++)if(y.uj(r.j,P).length==5&&n.mt(r,P,e)&&n.mt(r,P,A))return!0;return!1},A1.wF=function(t,e){var A,P;if(t.C[e]==7&&t.e[e]+n.kp(t,e)>=3){for(A=0;A<t.e[e];A++)if(P=t.i[e][A],t.C[P]==8&&t.e[P]+n.kp(t,P)==1)return!0}return!1},A1.xF=function(t,e,A){var P,r;if(e<t.f&&n.kt(t.p,e)){for(r=(n.aw(t,7),t.p),P=0;P<r.i.a.length;P++)if(!(y.uj(r.j,P).length!=A||!n.mt(r,P,e))&&t.b[P]==0)return!0}return!1},A1.yF=function(t,e){var A,P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m;if(m=(n.aw(t,7),t.p),!m.d[e])return 1;if(y.uj(m.j,e).length==6){for(P=y.uj(m.i,e),r=0,i=P.length;r<i;++r)if(A=P[r],n.rp(t,A)+n.kp(t,A)!=t.e[A]+n.kp(t,A)+1)return 1;for(o=y.uj(m.j,e),Q=0,L=o.length;Q<L;++Q)if(u=o[Q],w=v(F(l.Z6,1),H,6,15,[-1,-1]),n.am(t,u)==1){for(h=0;h<=1;h++)for(D=t.D[h][u],s=0;s<t.e[D];s++)if(b=t.i[D][s],!n.mt(m,e,b)&&n.am(t,n.To(t,D,b))==2){w[h]=b;break}if(w[0]>-1&&w[1]>-1)for(B=0;B<m.i.a.length;B++){if(n.mt(m,B,w[0])&&n.mt(m,B,w[1])&&t.b[B]==2)return 2;if(n.mt(m,B,w[0])&&n.mt(m,B,w[1])&&t.b[B]!=0)return 1}}}if(y.uj(m.j,e).length==5)for(g=1,P=y.uj(m.i,e),r=0,i=P.length;r<i;++r){if(A=P[r],n.rp(t,A)+n.kp(t,A)==t.e[A]+n.kp(t,A)&&g>0){--g;continue}if(n.rp(t,A)+n.kp(t,A)!=t.e[A]+n.kp(t,A)+1)return 1}return 0},A1.zF=function(t,e,A){return A1.AF(t,e,e.D[0][A],e.D[1][A])},A1.AF=function(t,e,A,P){var r,i,D,u,o,Q,L,w,s,h;for(r=e.a[A],i=e.a[P],L=n.To(e,A,P),w=!0,h=(n.aw(e,7),e.p),s=0;s<h.i.a.length&&w;s++)for(u=y.uj(h.j,s),o=0,Q=u.length;o<Q;++o)if(D=u[o],D==L&&e.b[s]==0){w=!1;break}return n.am(e,L)==1&&w&&(At.ZD(t.b,r)&&At.ZD(t.b,i)||At.dE(t.b,r)&&At.dE(t.b,i))?1:0},A1.BF=function(t,e){var A,P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m;for(u=A1.CF(e),D=d(l.X6,Bt,6,u.length,15,1),P=0;P<u.length;P++){if(B=e.a[P],h=u[P],m=At.tE(t.e,B),A=At.$D(t.b,B),b=0,g=0,k.Math.abs(m)<cA)for(Q=0;Q<e.e[P];Q++)w=e.i[P][Q],u[w]<0&&(h+=u[w]/(2*e.e[w]));if(B==62)for(L=0;L<e.e[P];L++)w=e.i[P][L],u[w]>0&&(h-=u[w]/2);for(o=0;o<e.e[P];o++)w=e.i[P][o],r=n.To(e,P,w),s=e.a[w],i=A1.AF(t,e,e.D[0][r],e.D[1][r]),g+=At.uE(t.e,i,B,s),b+=u[w];D[P]=(1-A*m)*h+m*b+g}return D},A1.CF=function(t){var e,A,P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S,p,M,z,q,x,J,E;D=d(l.X6,Bt,6,t.q,15,1);t:for(i=0;i<D.length;i++){switch(E=t.a[i],D[i]=0,E){case 32:case 72:for(Q=0;Q<t.e[i];Q++){for(m=t.i[i][Q],M=t.a[m],g=0,B=0,w=0;w<t.e[m];w++)S=t.i[m][w],t.C[S]==7&&t.e[S]+n.kp(t,S)==2&&!(S<t.f&&n.kt(t.p,S))&&++g,(t.C[S]==8||t.C[S]==16)&&t.e[S]+n.kp(t,S)==1&&++B;if(t.C[m]==16&&B==2&&g==1&&(g=0),t.C[m]==6&&B>0){D[i]=B==1?-1:-(B-1)/B;continue t}if(M==45&&B==3){D[i]=-.3333333333333333;continue t}if(M==25&&B>0){D[i]=B==1?0:-(B-1)/B;continue t}if(M==18&&B>0){D[i]=g+B==2?0:-(g+B-2)/B;continue t}if(M==73&&B>0){D[i]=B==1?0:-(B-1)/B;continue t}if(M==77&&B>0){D[i]=-1/B;continue t}}break;case 76:for(x=0,J=(n.aw(t,7),t.p),q=0;q<J.i.a.length;q++)if(n.mt(J,q,i)){x=q;break}if(x<J.i.a.length){for(b=0,A=y.uj(J.i,x),P=0,r=A.length;P<r;++P)e=A[P],e>-1&&t.a[e]==76&&++b;if(b>0){D[i]=-1/b;continue t}}break;case 55:case 56:case 81:for(D[i]=t.s[i],h=1,z=0,u=d(l.teb,wt,6,t.q,16,1),u[i]=!0;h>z;)for(z=h,L=0;L<t.q;L++)if(u[L]){for(w=0;w<t.e[L];w++)if(m=t.i[L][w],M=t.a[m],!(M!=57&&M!=80))for(s=0;s<t.e[m];s++)S=t.i[m][s],p=t.a[S],!(p!=55&&p!=56&&p!=81)&&(u[S]||(u[S]=!0,D[i]+=t.s[S],++h))}D[i]/=h;continue t;case 61:for(o=0;o<t.e[i];o++)if(m=t.i[i][o],t.a[m]==42){D[i]=1;continue t}continue t;case 34:case 49:case 51:case 54:case 58:case 92:case 93:case 94:case 97:D[i]=1;continue t;case 87:case 95:case 96:case 98:case 99:D[i]=2;continue t;case 88:D[i]=3;continue t;case 35:case 62:case 89:case 90:case 91:D[i]=-1;continue t}D[i]=0}return D},A1.DF=function(t,e,A,P,r,i){var D,u,o,Q,L,w;return Q=n.To(e,P,r),D=A1.AF(t,e,A,P),u=A1.AF(t,e,P,r),o=A1.AF(t,e,r,i),w=u,u==0&&n.am(e,Q)==1&&(D==1||o==1)&&(w=2),L=A1.EF(e,A,P,r,i),L==4&&n.To(e,A,r)==-1&&n.To(e,P,i)==-1?40+w:L==5&&(e.a[A]==1||e.a[P]==1||e.a[r]==1||e.a[i]==1)?50+w:w},A1.EF=function(t,e,A,P,r){var i,D,u,o,Q,L,w,s;if(n.To(t,e,A)==-1||n.To(t,A,P)==-1||n.To(t,P,r)==-1)return 0;if(n.To(t,r,e)>=0)return 4;for(w=(n.aw(t,7),t.p),s=new y.rtb,y.qtb(s,T.pib(e)),y.qtb(s,T.pib(A)),y.qtb(s,T.pib(P)),y.qtb(s,T.pib(r)),Q=0;Q<w.i.a.length;Q++)if(y.uj(w.j,Q).length==5){for(L=new y.rtb,D=y.uj(w.i,Q),u=0,o=D.length;u<o;++u)i=D[u],y.qtb(L,T.pib(i));if(y.Gi(L,s))return 5}return 0},G(415,1,{}),l.d9=O(415),e1.GF=function(){e1.GF=u1,e1.FF=(T.Pjb(),N1)},e1.HF=function(t){},e1.IF=function(t){var e,A,P;for(e=0,A=0,P=0;P<t.g.a.length+t.f.a.length;P++)e+=n.Pl(P<t.g.a.length?y.uj(t.g,P):y.uj(t.f,P-t.g.a.length))*(P<t.g.a.length?y.uj(t.g,P):y.uj(t.f,P-t.g.a.length)).r,A+=(P<t.g.a.length?y.uj(t.g,P):y.uj(t.f,P-t.g.a.length)).r;return A!=0?A/e:1},e1.JF=function(t,e){e1.GF();var A,P,r,i;e1.HF(this),P=new tt.zH(t);try{for(i=new pt.rgb,pt.qgb(i,\"$RXN\"+e1.FF),T.Ajb(i.a,e??\"\"),pt.qgb(i,e1.FF+(\"\"+e1.FF)),pt.qgb(i,sP+tt.UH(t,!0,27)),pt.qgb(i,e1.FF),pt.qgb(i,\"  \"+P.g.a.length+\"  \"+P.f.a.length+e1.FF),r=e1.IF(P),A=0;A<P.g.a.length+P.f.a.length;A++)pt.qgb(i,\"$MOL\"+e1.FF),n.Wr(new n.Zr(A<P.g.a.length?y.uj(P.g,A):y.uj(P.f,A-P.g.a.length),r,null),i);this.a=i.a}catch(D){if(D=C1(D),Yt(D,19))T.Pjb();else throw Qt(D)}},G(280,1,{},e1.JF),U.a=null,l.e9=O(280),e1.KF=function(t){var e,A;return e=new tt.yH,A=new pt.cgb(new pt.ngb(t)),e1.LF(e,A),e},e1.LF=function(t,e){var A,P;if(P=pt.bgb(e),A=!1,P==null||!T._ib(c.Szb(P).substr(0,4),\"$RXN\"))throw Qt(new T.bC(\"'$RXN' tag not found\"));return T._ib(P,Ti)?A=e1.NF(t,e,!1):A=e1.MF(t,e,!1),A},e1.MF=function(t,e,A){var P,r,i,D,u,o,Q,L,w,s,h,b;if(Q=T.rjb(pt.bgb(e)),c.Szb(Q).length!=0&&(t.e=Q),pt.bgb(e),P=pt.bgb(e),!A&&T._ib(c.Szb(P).substr(0,13),sP)&&(r=(c.Nzb(13,c.Szb(P).length+1),c.Szb(P).substr(13)),tt.TH(r,!0,t)))return!0;for(b=pt.bgb(e),h=T.Khb(T.rjb((c.Mzb(0,3,c.Szb(b).length),c.Szb(b).substr(0,3))),n1,Mt),w=T.Khb(T.rjb((c.Mzb(3,6,c.Szb(b).length),c.Szb(b).substr(3,3))),n1,Mt),u=new n.ys,D=0;D<h;D++){if(b=pt.bgb(e),b==null||!T._ib(c.Szb(b).substr(0,4),\"$MOL\"))throw Qt(new T.bC(hi));s=new n.sw,o=new T.Cjb;do b=pt.bgb(e),o.a+=\"\"+b,o.a+=N1;while(b!=null&&!T._ib(c.Szb(b).substr(0,6),me));if(b==null)throw Qt(new T.bC(bi));n.ts(u,s,new pt.cgb(new pt.ngb(o.a))),y.pj(t.g,s),t.d=-1}for(i=0;i<w;i++){if(b=pt.bgb(e),b==null||!T._ib(c.Szb(b).substr(0,4),\"$MOL\"))throw Qt(new T.bC(hi));L=new n.sw,o=new T.Cjb;do b=pt.bgb(e),o.a+=\"\"+b,o.a+=N1;while(b!=null&&!T._ib(c.Szb(b).substr(0,6),me));if(b==null)throw Qt(new T.bC(bi));n.ts(u,L,new pt.cgb(new pt.ngb(o.a))),y.pj(t.f,L),t.d=-1}return!0},e1.NF=function(t,e,A){var P,r,i,D,u,o,Q,L,w,s,h,b;if(Q=T.rjb(pt.bgb(e)),c.Szb(Q).length!=0&&(t.e=Q),pt.bgb(e),P=pt.bgb(e),!A&&T._ib(c.Szb(P).substr(0,13),sP)&&(r=(c.Nzb(13,c.Szb(P).length+1),c.Szb(P).substr(13)),tt.TH(r,!0,t)))return!0;if(b=pt.bgb(e),D=new n.ys,b!=null&&T._ib(c.Szb(b).substr(0,13),\"M  V30 COUNTS\")){if(h=T.rjb((c.Nzb(13,c.Szb(b).length+1),c.Szb(b).substr(13))),L=T.njb(h,\" \"),s=T.Khb(L[0],n1,Mt),w=T.Khb(L[1],n1,Mt),s>0){if(b=pt.bgb(e),T._ib(ci,b))for(i=0;i<s;i++){u=new n.sw,o=new T.Cjb,o.a+=gi;do b=pt.bgb(e),o.a+=\"\"+b,o.a+=N1;while(b!=null&&!T._ib(c.Szb(b).substr(0,15),Qr));n.ts(D,u,new pt.cgb(new pt.ngb(o.a))),y.pj(t.g,u),t.d=-1}b=pt.bgb(e)}if(w>0&&(b=pt.bgb(e),T._ib(di,b))){for(i=0;i<w;i++){u=new n.sw,o=new T.Cjb,o.a+=gi;do b=pt.bgb(e),o.a+=\"\"+b,o.a+=N1;while(b!=null&&!T._ib(c.Szb(b).substr(0,15),Qr));n.ts(D,u,new pt.cgb(new pt.ngb(o.a))),y.pj(t.f,u),t.d=-1}b=pt.bgb(e)}return!0}return!1},e1.PF=function(){e1.PF=u1,e1.OF=(T.Pjb(),N1)},e1.QF=function(t){},e1.RF=function(t){var e,A,P;for(e=0,A=0,P=0;P<t.g.a.length+t.f.a.length;P++)e+=n.Pl(P<t.g.a.length?y.uj(t.g,P):y.uj(t.f,P-t.g.a.length))*(P<t.g.a.length?y.uj(t.g,P):y.uj(t.f,P-t.g.a.length)).r,A+=(P<t.g.a.length?y.uj(t.g,P):y.uj(t.f,P-t.g.a.length)).r;return A!=0?A/e:1},e1.SF=function(t,e){e1.PF();var A,P,r,i,D,u;e1.QF(this),i=new tt.zH(t);try{if(u=new pt.rgb,pt.qgb(u,Ti+e1.OF),T.Ajb(u.a,e??\"\"),pt.qgb(u,e1.OF+(\"\"+e1.OF)),pt.qgb(u,sP+tt.UH(t,!0,11)),pt.qgb(u,e1.OF),r=i.g.a.length,P=i.f.a.length,pt.qgb(u,J8+r+\" \"+P+e1.OF),D=e1.RF(i),r>0){for(pt.qgb(u,ci+e1.OF),A=0;A<i.g.a.length;A++)pt.qgb(u,n.Ks(y.uj(i.g,A),D));pt.qgb(u,\"M  V30 END REACTANT\"+e1.OF)}if(P>0){for(pt.qgb(u,di+e1.OF),A=0;A<i.f.a.length;A++)pt.qgb(u,n.Ks(y.uj(i.f,A),D));pt.qgb(u,\"M  V30 END PRODUCT\"+e1.OF)}pt.qgb(u,me+e1.OF),this.a=u.a}catch(o){if(o=C1(o),Yt(o,19))T.Pjb();else throw Qt(o)}},G(281,1,{},e1.SF),U.a=null,l.f9=O(281),e1.UF=function(){e1.UF=u1,e1.TF=v(F(l.Nbb,1),yt,2,6,[\"Idorsia No\",\"Actelion No\",\"ID\",\"IDNUMBER\",\"COMPOUND_ID\",\"NAME\",\"COMPND\"])},e1.VF=function(t){var e,A,P,r,i,D,u,o,Q;if(!t.i)return!1;T.ugb(t.g,0),T.ugb(t.b,0),t.f=null,Q=!1,A=-1,P=null,t.c=t.d==null?null:d(l.Nbb,yt,2,t.d.length,6,1),t.e=-1;do{try{if(o=pt.bgb(t.i),o==null)return T.ugb(t.g,0),!1}catch(L){if(L=C1(L),Yt(L,76))return T.ugb(t.g,0),!1;throw Qt(L)}if(Q)T.Ijb(t.b,o),T.Ejb(t.b,10);else if(T._ib(c.Szb(o).substr(0,1),\">\"))Q=!0,T.Ijb(t.g,me),T.Ejb(t.g,10),T.Ijb(t.b,o),T.Ejb(t.b,10);else{T.Ijb(t.g,o),T.Ejb(t.g,10),T._ib(c.Szb(o).substr(0,6),me)&&(Q=!0);continue}if(t.d!=null)if(c.Szb(o).length==0)A=-1;else if(A==-1){if(P=e1.XF(o),P!=null){for(A=-1,e=0;e<t.d.length;e++)if(T._ib(P,t.d[e])){A=e;break}if(t.e==-1){for(i=e1.TF,D=0,u=i.length;D<u;++D)if(r=i[D],T._ib(P,r)){t.e=A;break}}}}else t.c[A]==null?t.c[A]=o:t.c[A]=T.Xib(T.Xib(t.c[A],N1),o)}while(!T._ib(c.Szb(o).substr(0,4),QA));return!0},e1.WF=function(t,e){var A,P,r,i;for(i=0,P=new n.qx;i<e;){try{r=pt.bgb(t.i)}catch(D){if(D=C1(D),Yt(D,76))break;throw Qt(D)}if(r==null)break;T._ib(c.Szb(r).substr(0,4),QA)&&++i,T._ib(c.Szb(r).substr(0,1),\">\")&&(A=e1.XF(r),A!=null&&n.px(P,A))}t.d=y.Ij(P.b,d(l.Nbb,yt,2,0,6,1))},e1.XF=function(t){var e,A,P,r;if(c.Szb(t).length==0||(c.Nzb(0,c.Szb(t).length),c.Szb(t).charCodeAt(0)!=62))return null;for(P=1,r=0,e=0;P<c.Szb(t).length;){if(c.Nzb(P,c.Szb(t).length),c.Szb(t).charCodeAt(P)==60){if(r!=0)return null;r=P}else if(c.Nzb(P,c.Szb(t).length),c.Szb(t).charCodeAt(P)==62){if(e!=0)return null;e=P}++P}if(r!=0&&r<e)return c.Mzb(r+1,e,c.Szb(t).length),c.Szb(t).substr(r+1,e-(r+1));if(P=c.Szb(t).indexOf(\"DT\",1),P==-1)return null;for(A=P+2;c.Szb(t).length>A&&a0((c.Nzb(A,c.Szb(t).length),c.Szb(t).charCodeAt(A)));)++A;return A==P+2?null:(c.Mzb(P,A,c.Szb(t).length),c.Szb(t).substr(P,A-P))},e1.YF=function(t,e){return t.c==null?null:t.c[e]},e1.ZF=function(t){return t.d==null&&e1.WF(t,10240),t.d},e1.$F=function(t,e){return t.d==null&&e1.WF(t,e),t.d},e1._F=function(t){var e,A;return t.f||(A=new n.ys,t.a&&(A.a=!0),t.f=n.bs(A,(e=t.g.a,e)),t.f&&(t.f.P==null||c.Szb(t.f.P).length==0)&&n.Qn(t.f,t.e!=-1&&t.c!=null?t.c[t.e]:t.f?t.f.P:null)),t.f},e1.aG=function(t,e){e1.UF(),this.d=e,this.i=new pt.cgb(t),this.g=new T.Ljb,this.b=new T.Ljb},G(282,415,{},e1.aG),U.a=!1,U.e=0,l.g9=O(282),nt.eG=function(){nt.eG=u1,nt.bG=v(F(l.$6,1),e0,6,14,[524290,524292,589826,589827,589828,589829,589832,589833,589837,589838,598019,598020,598024,606211,688130,688131,688132,688137,688142,696324,819202,819203,819204,819205,819214,827396,1048580,1114114,1114115,1114116,1114120,1212420,1220611,1343492,1343496,1638402,1638403,17367042,17367043,17367044,17367045,17367048,17367049,17367053,17367054,17375236,17465346,17465348,17465353,17473540,1208483842,1208483848,1208483912,1208549378,1208549379,1208549380,1208549384,1208549388,1208549442,1208549443,1208549444,1208549448,1208557571,1208565763,1208565827,1409875970,1409875971,1409875972,1409875976,1409876034,1409876035,1409876036,1409876040,1409884163,1409974274,1409974280,1409974338,1678245892,1678311426,1678311427,1678311428,1678311432,1678311490,1678311491,1678311492,1678311496,1678409730,1678409731,1678409732,1678409794,1678540802,1678540808,1678540810,1678540866,2282291202,2282291203,2282291266,2282291267,2282389506,2282389507,2282389570,2282389571,2282389572,2282520578,2282520579,2282520642,2282520643,2282537027,2483617794,2483617795,2483617858,2483617859,2483617860,2483617864,2483716098,2483716099,2483716162,2483716163,2484150275,2484248579,2752675842,3356033026,3356139523,3557359618,3557457922,3557588994,34510798914,34510798915,34510798916,34510798920,34510807107,34510815299,34712125506,34712125507,34712125508,34712125512,34712223810,34712223811,34712223812,34712223816,34980560962,34980560963,34980659266,34980659267,34980659268,35568287746,35568287747,35568287748,35568287752,35568287756,35568287810,35568287811,35568287812,35568287816,35568287820,35568386050,35568386051,35568386052,35568386114,35568386120,35568517122,35568517123,35568517124,35568517128,35568517186,35568517187,35568517188,35568517192,35568812034,35568812035,35568812098,35568812099,35568910338,35568910339,35568910403,35569336322,35569434626,35585064962,35585064963,35585064964,35585064968,35585065026,35585065027,35585065028,35585065032,35769614338,35769614340,35769614402,35769712642,35770138626,35770236930,35786391554,35786391555,2475109646403,Bi,ki,2475109711938,2475109711939,2475109720067,2475109720131,2475109728259,2475109728323,ji,mi,2887426572354,2887426572355,Fi,vi,2887627898946,pi,2887627997250,Ci,Ri,3437182386242,3437182386243,Si,3437383712771,3437383712834,Hi,Mi,zi,Vi,4674132967490,4674132967491,4674132975619,qi,4674334294082,4674334294083,4674334302211,4674334302275,Ii,4674334392386,Ei,4674602729538,4674602827842,Ni,4674602958914,xi,Gi,5086449827906,5086449827907,5086449827912,Oi,5086651154498,5086651162627,Zi,Ji,5086651252802,5086651252808,5086651260931,Ki,5086919589954,Yi,5086919688258,5086919819330,5636205641794,Xi,5636406968386,Wi,5636407066690,5636675403842,_i,5636675502146,{l:589890,m:73760,h:4},{l:589891,m:73760,h:4},{l:598083,m:73760,h:4},{l:688194,m:73760,h:4},{l:688195,m:73760,h:4},{l:696387,m:73760,h:4},{l:819266,m:73760,h:4},{l:65602,m:73764,h:4},{l:65603,m:73764,h:4},{l:589890,m:172064,h:4},{l:589891,m:172064,h:4},{l:598083,m:172064,h:4},{l:688194,m:172064,h:4},{l:688195,m:172064,h:4},{l:696387,m:172064,h:4},{l:819266,m:172064,h:4},{l:65602,m:172068,h:4},{l:65603,m:172068,h:4},{l:589890,m:172112,h:4},{l:589891,m:172112,h:4},{l:688194,m:172112,h:4},{l:819266,m:172112,h:4},{l:65602,m:172116,h:4},{l:65608,m:172116,h:4},{l:163906,m:172116,h:4},{l:589890,m:303136,h:4},{l:688194,m:303136,h:4},{l:819266,m:303136,h:4},{l:65602,m:303140,h:4},{l:589890,m:303184,h:4},{l:688194,m:303184,h:4},{l:819266,m:303184,h:4},{l:65602,m:303188,h:4},{l:65602,m:303252,h:4},$i,ai,{l:589890,m:590112,h:4},{l:589891,m:590112,h:4},tf,ef,{l:589890,m:590160,h:4},{l:589891,m:590160,h:4},nf,{l:688194,m:590160,h:4},Af,Pf,{l:589890,m:590224,h:4},{l:589891,m:590224,h:4},{l:688131,m:590224,h:4},{l:688194,m:590224,h:4},rf,ff,{l:589890,m:590368,h:4},Df,{l:688194,m:590368,h:4},{l:696323,m:590368,h:4},uf,of,{l:819266,m:590368,h:4},lf,Qf,{l:589890,m:590416,h:4},{l:589891,m:590416,h:4},{l:589896,m:590416,h:4},Lf,{l:688136,m:590416,h:4},{l:688194,m:590416,h:4},{l:696323,m:590416,h:4},Uf,{l:819266,m:590416,h:4},{l:688130,m:590480,h:4},{l:688194,m:590480,h:4},{l:65602,m:598052,h:4},{l:65603,m:598052,h:4},{l:65602,m:598100,h:4},{l:65603,m:598100,h:4},{l:73795,m:598100,h:4},{l:163906,m:598100,h:4},{l:163907,m:598100,h:4},{l:65602,m:598164,h:4},{l:163906,m:598164,h:4},yf,wf,{l:589890,m:598304,h:4},{l:589891,m:598304,h:4},sf,{l:688194,m:598304,h:4},Tf,{l:1114178,m:598304,h:4},hf,{l:1212424,m:598304,h:4},{l:1212482,m:598304,h:4},bf,cf,{l:589890,m:688416,h:4},gf,{l:589890,m:688464,h:4},{l:589890,m:688528,h:4},df,Bf,{l:688130,m:688784,h:4},{l:65602,m:696356,h:4},{l:65602,m:696404,h:4},{l:163906,m:696404,h:4},{l:589826,m:696608,h:4},{l:1114178,m:696608,h:4},{l:1212418,m:696608,h:4},{l:589826,m:696612,h:4},{l:524355,m:590112,h:288},{l:589825,m:590112,h:288},kf,{l:589890,m:590112,h:288},{l:598019,m:590112,h:288},{l:598083,m:590112,h:288},jf,{l:589890,m:590112,h:336},{l:598019,m:590112,h:336},{l:598083,m:590112,h:336},mf,{l:589890,m:688416,h:336},Ff,{l:589890,m:688464,h:336},vf,pf,{l:589827,m:590112,h:400},{l:589890,m:590112,h:400},{l:589891,m:590112,h:400},Cf,Rf,Sf,Hf,{l:589890,m:819488,h:400},Mf,zf,Vf,qf,{l:589827,m:819488,h:544},If,Ef,Nf,{l:688199,m:688464,h:592},xf,Gf,Of,{l:688202,m:819600,h:592},Zf,{l:589896,m:1212704,h:592},Jf,Kf,{l:688200,m:1212752,h:592},Yf,{l:688135,m:688464,h:656},{l:688135,m:819536,h:656},{l:589891,m:65936,h:8228},Xf,{l:589890,m:590112,h:8480},{l:598019,m:590112,h:8480},Wf,{l:589890,m:688416,h:8480},_f,{l:589890,m:688464,h:8480},$f,af,tD,eD,{l:589896,m:1213008,h:8480},nD,{l:688200,m:1213008,h:8480},{l:688135,m:1343824,h:8480},AD,{l:589890,m:590112,h:8484},PD,{l:589890,m:590160,h:8484},{l:1212424,m:590416,h:8484},{l:1212488,m:590416,h:8484},rD,{l:688194,m:598304,h:8484},{l:589826,m:590112,h:8528},{l:589890,m:590112,h:8528}]),nt.cG=v(F(l.Y6,1),h0,6,15,[.6966999769210815,0,.4885999858379364,-.47269999980926514,-.07490000128746033,iD,.273499995470047,.5699999928474426,.7009999752044678,.9534000158309937,-3.6435000896453857,-2.150899887084961,.4975000023841858,-2.19950008392334,-.2809000015258789,-.8259999752044678,-.1784999966621399,-1.620300054550171,-1.0959999561309814,-.3619999885559082,.13950000703334808,-.29750001430511475,-1.2907999753952026,1.0161999464035034,fD,-2.5383999347686768,TP,.4291999936103821,-.5824000239372253,-.1834000051021576,.1306000053882599,-.5015000104904175,iD,-.5257999897003174,.4244000017642975,-.16099999845027924,-.2777999937534332,.5110999941825867,-.435699999332428,-.10409999638795853,.3424000144004822,-.061500001698732376,.6035000085830688,.7226999998092651,.43459999561309814,-1.6821000576019287,-.3310000002384186,-.49799999594688416,DD,-.3650999963283539,.45969998836517334,.3384000062942505,.6632999777793884,.4544000029563904,.15970000624656677,.633899986743927,.35040000081062317,.04490000009536743,.34200000762939453,.26109999418258667,.40459999442100525,.5218999981880188,-1.065000057220459,-1.2314000129699707,-1.802299976348877,-.36320000886917114,-.4108000099658966,.30570000410079956,-.14560000598430634,-.27129998803138733,-.5192999839782715,.45260000228881836,.5539000034332275,.8374000191688538,-.7070000171661377,-.48809999227523804,-.4099999964237213,0,.14790000021457672,.3447999954223633,.42980000376701355,.5579000115394592,-.1264999955892563,-.042500000447034836,.07670000195503235,.6635000109672546,-.38119998574256897,-.8367999792098999,1.0286999940872192,-.10209999978542328,.3587000072002411,-.5945000052452087,.16920000314712524,-.121799997985363,.32829999923706055,.22390000522136688,.20430000126361847,.05900000035762787,-.48350000381469727,.6165000200271606,-.4011000096797943,.5577999949455261,-.21639999747276306,-.017500000074505806,.29809999465942383,.10999999940395355,.27149999141693115,-.2994999885559082,-.46700000762939453,.1565999984741211,.046799998730421066,-.13210000097751617,1.3686000108718872,0,-.4115999937057495,1.0185999870300293,-.3935000002384186,.5223000049591064,.3684999942779541,.25769999623298645,1.5192999839782715,.2705000042915344,.3790999948978424,.012000000104308128,-.33970001339912415,.14830000698566437,.2766000032424927,.35929998755455017,.7714999914169312,.3149999976158142,-1.618499994277954,.18889999389648438,-.2651999890804291,-.09650000184774399,.420199990272522,.18709999322891235,-.3684000074863434,-.07779999822378159,.8942999839782715,.3693999946117401,.28790000081062317,.4489000141620636,-.26010000705718994,.4771000146865845,.1923000067472458,.43810001015663147,.16949999332427979,.45249998569488525,.3352000117301941,.1582999974489212,.4036000072956085,-.04800000041723251,.5023000240325928,-.26489999890327454,.76910001039505,-.35519999265670776,1.0300999879837036,-.11410000175237656,-.5932000279426575,.17489999532699585,.13130000233650208,-.18039999902248383,.399399995803833,.22910000383853912,.31690001487731934,.35989999771118164,-.0038999998942017555,-.2955999970436096,.4408999979496002,-.16089999675750732,.3774999976158142,-.13459999859333038,.2838999927043915,.5128999948501587,.1265999972820282,.4293999969959259,.28060001134872437,.49070000648498535,uD,.219200000166893,.15649999678134918,.6934999823570251,.3617999851703644,.6735000014305115,.5777999758720398,-.5636000037193298,.5569000244140625,.30379998683929443,-.32760000228881836,-.6991999745368958,.010300000198185444,-.4659000039100647,oD,TP,.18410000205039978,.707099974155426,.12269999831914902,.7949000000953674,-.6592000126838684,-1.3148000240325928,-.4066999852657318,-.1316000074148178,-.4925000071525574,-.09290000051259995,-.4352000057697296,-.2206999957561493,-.9959999918937683,-.723800003528595,-.5468999743461609,-1.2939000129699707,-.01360000018030405,.065700002014637,.7189000248908997,.05700000002980232,.661899983882904,-.6381000280380249,-.8072999715805054,.23549999296665192,.30480000376701355,-.019899999722838402,-.07519999891519547,.44609999656677246,.1559000015258789,1.1167999505996704,-1.8039000034332275,.23649999499320984,-.22059999406337738,.4480000138282776,-1.1339999437332153,-.5652999877929688,-.40529999136924744,-.13609999418258667,.2198999971151352,.053599998354911804,-.020999999716877937,.6984999775886536,.9642999768257141,-.41519999504089355,-1.0369000434875488,-.18299999833106995,.5882999897003174,-.29179999232292175,-.5293999910354614,-.6541000008583069,.9473000168800354,-.19059999287128448,-.8483999967575073,-.3456999957561493,.9541000127792358,1.4230999946594238,-.7924000024795532,lD,QD,-.2596000134944916,.8381999731063843,-.4415999948978424,-.37040001153945923,-.7487000226974487,-.10790000110864639,-.29919999837875366,-.3276999890804291,.025100000202655792,-.9187999963760376,.10939999669790268,.8230999708175659,-3.233299970626831,.03500000014901161,oD,LD,.2791000008583069,.3206000030040741,.5662000179290771,-.3783999979496002,.4032000005245209,-1.794800043106079,-.15539999306201935,.3785000145435333,.05339999869465828,-.16529999673366547,-.09870000183582306,-.10050000250339508,-.6460999846458435,.8034999966621399,-.24050000309944153,-.12380000203847885,-.35760000348091125,.09610000252723694,-.6401000022888184,.2029000073671341,.23589999973773956,.4950999915599823,.19210000336170197,-.37450000643730164,.34630000591278076,.289900004863739,-.15330000221729279,-.4169999957084656,.37700000405311584,.6998000144958496,.593999981880188,.5911999940872192,-.5570999979972839,.023800000548362732,-.2475000023841858,.030700000002980232,-.38749998807907104,-.7437000274658203,.5144000053405762,.00570000009611249,.765500009059906,.1720000058412552,-2.5624001026153564,-.30660000443458557,.36469998955726624,.17270000278949738,-.03290000185370445,-.18930000066757202,.07020000368356705,-1.2453999519348145,.14959999918937683,fD,.4146000146865845,-.2667999863624573,-.11060000211000443,.03620000183582306,-.3188999891281128,-.7278000116348267,-.08940000087022781,-.22769999504089355,-.2393999993801117,1.011199951171875,-.2962000072002411,.7775999903678894,.2944999933242798,-.22339999675750732,.27639999985694885,.8011000156402588,-.17440000176429749,.15809999406337738,-1.7552000284194946,-.384799987077713,.5993000268936157,.5267999768257141,-.04170000180602074,.4733000099658966,-.3400999903678894,-.14499999582767487,.7088000178337097,-.13179999589920044,.04259999841451645,-.5027999877929688,.3831999897956848,-.011800000444054604,-.4357999861240387,.3749000132083893,-.12030000239610672,-.5648000240325928,-.1972000002861023,-.8769000172615051,-.3675000071525574,-.2003999948501587,-.6069999933242798,-.18569999933242798,.3467999994754791,-.36239999532699585,.5357999801635742,-.3700999915599823,.13359999656677246,.9545000195503235,.11389999836683273,-.16990000009536743,TP,.2890999913215637,.2612999975681305,-.03440000116825104,-1.9498000144958496,-2.024899959564209,-.6004999876022339,-.6258000135421753,-1.2348999977111816,.328000009059906,-.54339998960495,-.7712000012397766,-.9057000279426575,-.16680000722408295,-.9904999732971191,-.03720000013709068,-1.1638000011444092,.12620000541210175,-.5248000025749207,-.15379999577999115,-.36820000410079956,.3249000012874603,.06499999761581421,.051100000739097595,-.46070000529289246,.22310000658035278,.28220000863075256,.1396999955177307,-.49380001425743103,.39480000734329224,-.4074999988079071,-.6410999894142151,-.009100000374019146,-.13330000638961792,-.5192000269889832,-.16609999537467957,TP,-.07069999724626541,.4805999994277954,.38280001282691956,.22290000319480896,.6159999966621399,.33709999918937683,.188400000333786,.13809999823570251,DD,.2833000123500824,-.1225999966263771,-3.9189000129699707,-.459199994802475,-.3434999883174896,-.6654000282287598,-.5055999755859375,-.863099992275238,.15360000729560852,-.6427000164985657,-.08839999884366989,-.0471000000834465,.11060000211000443,.382099986076355,-.23919999599456787,-.4050999879837036,.08910000324249268,-.6972000002861023,-.4699000120162964,.09220000356435776,.08060000091791153,-.6773999929428101,-.062199998646974564,-.9300000071525574,.13369999825954437])},nt.fG=function(t){var e,A,P,r,i;for(A=0,n.hq(t),n.aw(t,7),e=0;e<t.f;e++)try{i=n.cf(t,e,6241),r=(P=lt.W3(nt.dG,T.Eib(i)),P<0?-1:P),r!=-1&&(A+=nt.cG[r])}catch(D){if(D=C1(D),!Yt(D,19))throw Qt(D)}return A},nt.gG=function(t){var e,A,P,r,i,D,u,o,Q,L,w,s,h,b,g;if(r=new nt.vG,y.pj(r.a,new nt.sG(\"cLogP Values are estimated applying an atom-type based increment system.\",2)),y.pj(r.a,new nt.sG(UD,2)),y.pj(r.a,new nt.sG(Vr,2)),t){for(n.hq(t),n.aw(t,7),u=0,P=new y.Xvb,o=new D0.Hmb(\"#0.000\"),e=0;e<t.f;e++)try{A=n.cf(t,e,6241),g=y.epb(P,new T.uib(A)),g?y.Pvb(P,new T.uib(A),new T.dib(g.a+1)):y.Pvb(P,new T.uib(A),new T.dib(1))}catch(B){if(B=C1(B),Yt(B,19))++u;else throw Qt(B)}for(u!=0&&y.pj(r.a,new nt.sG(\"Warning: \"+u+\" atom type(s) could not be determined.\",2)),b=(D=new y.fwb(new y.lwb(new y.spb(P).a).b),new y.Bpb(D));y.aob(b.a.a);)h=(i=y.dwb(b.a),i.fd()),L=lt.W3(nt.dG,h),(L<0?-1:L)!=-1?nt.uG(r,(s=h,y.Xmb(y.Kvb(P,s))+\" * \"+D0.Emb(o,nt.cG[Q=lt.W3(nt.dG,h),Q<0?-1:Q])+\" AtomType: 0x\"+T.Cib(h.a)),2):nt.uG(r,\"Warning: For atom type 0x\"+T.Cib(h.a)+\" (\"+(w=h,y.Xmb(y.Kvb(P,w)))+\" times found) is no increment available.\",2)}return r},nt.hG=function(){nt.eG();var t,e,A,P;if(!nt.dG&&!nt.dG)for(nt.dG=new lt.Z3,e=nt.bG,A=0,P=e.length;A<P;++A)t=T.Eib(e[A]),lt.T3(nt.dG,t)},G(212,1,{},nt.hG),l.h9=O(212),nt.iG=function(t,e,A,P,r){var i,D,u,o,Q,L;for(i=1/(1+k.Math.exp(t-5)),L=1-1/(1+k.Math.exp(e+5)),Q=1/(1+k.Math.exp(.012*A-6)),D=1-1/(1+k.Math.exp(P)),u=(.5+i/2)*(.5+L/2)*(.5+Q/2)*(.5+D/2),o=0;r!=null&&o<r.length;o++)r[o]==2?u*=.8:r[o]==3&&(u*=.6);return u},nt.lG=function(t,e){var A,P,r,i,D,u,o,Q,L;if(A=new nt.vG,!nt.kG)return y.pj(A.a,new nt.sG(yD,2)),-999;for(y.pj(A.a,new nt.sG(\"Found sub-structure fragments and their contributions:\",2)),y.pj(A.a,new nt.sG(\"(yellow atoms carry at least one more substituent)\",2)),Q=0,o=0,i=0,L=new n.fu,r=new n.sw,D=0;D<nt.jG.a.a.length;D++)n.Pq(new n.Xq(!1),r,nt.oG(nt.jG,D)),n.$t(L,e),n.Xt(L,r),n.Lt(L,1,L.c)>0&&(u=nt.pG(nt.jG,D),u<-1?Q+=u:(o+=u,++i),nt.uG(A,nt.oG(nt.jG,D),1),y.pj(A.a,new nt.sG(\"\"+u,3)));return i==0?-1:(P=Q+o/k.Math.sqrt(i),P=P+.0625*(i-40),t.a=A,P)},nt.mG=function(t){var e,A,P,r,i,D;if(!nt.kG)return yD;for(i=0,P=0,D=new n.fu,A=new n.sw,r=0;r<nt.jG.a.a.length;r++)n.Pq(new n.Xq(!1),A,nt.oG(nt.jG,r)),n.$t(D,t),n.Xt(D,A),n.Lt(D,1,D.c)>0&&(i+=nt.pG(nt.jG,r),++P);return e=P==0?-1:i/k.Math.sqrt(P),e+\"\t\"+P+\"\t\"+t.f},nt.nG=function(){if(!nt.kG)try{nt.jG=new nt.qG,nt.kG=!0}catch(t){if(t=C1(t),Yt(t,19))T.Pjb();else throw Qt(t)}},G(274,1,{},nt.nG),nt.kG=!1,l.i9=O(274),nt.oG=function(t,e){return y.uj(t.a,e).a},nt.pG=function(t,e){return y.uj(t.a,e).b},nt.qG=function(){var t,e,A,P,r,i;for(i=new pt.cgb(new pt.hgb((A=Wt.cAb(\"/resources/druglikenessNoIndex.txt\"),V1.Cmb(),A))),this.a=new y.Jj;r=pt.bgb(i),r!=null;){if(P=T.gjb(r,X1(9)),P==-1)throw Qt(new T.bC(\"line without TAB\"));t=(c.Mzb(0,P,c.Szb(r).length),c.Szb(r).substr(0,P)),e=T.Phb(c.Szb(T.Jhb((c.Nzb(P+1,c.Szb(r).length+1),c.Szb(r).substr(P+1))))),y.pj(this.a,new nt.rG(t,e))}},G(275,1,{},nt.qG),l.k9=O(275),nt.rG=function(t,e){this.a=t,this.b=e},G(236,1,{236:1},nt.rG),U.b=0,l.j9=O(236),nt.sG=function(t,e){this.a=t,this.b=e},G(45,1,{45:1},nt.sG),U.b=0,l.m9=O(45),nt.tG=function(t){t.a=new y.Jj},nt.uG=function(t,e,A){y.pj(t.a,new nt.sG(e,A))},nt.vG=function(){nt.tG(this)},G(134,1,{},nt.vG),l.l9=O(134),nt.yG=function(){nt.yG=u1,nt.wG=v(F(l.Nbb,1),yt,2,6,[\"[N](-*)(-*)-*\",\"[N](-*)=*\",\"[N]#*\",\"[N](-*)(=*)=* as in nitro\",\"[N](=*)#* middle atom of azide\",\"[N]1(-*)-*-*-1 3-membered ring\",\"[NH](-*)-*\",\"[NH]1-*-*-1 3-membered ring\",\"[NH]=*\",\"[NH2]-*\",\"[N+](-*)(-*)(-*)-*\",\"[N+](-*)(-*)=*\",\"[N+](-*)#* N in isocyano\",\"[NH+](-*)(-*)-*\",\"[NH+](-*)=*\",\"[NH2+](-*)-*\",\"[NH2+]=*\",\"[NH3+]-*\",\"[n](:*):*\",\"[n](:*)(:*):*\",\"[n](-*)(:*):*\",\"[n](=*)(:*):* as in pyridine-N-oxid\",\"[nH](:*):*\",\"[n+](:*)(:*):*\",\"[n+](-*)(:*):*\",\"[nH+](:*):*\",\"[O](-*)-*\",\"[O]1-*-*-1 3-membered ring\",\"[O]=*\",\"[OH]-*\",\"[O-]-*\",\"[o](:*):*\",\"[S](-*)-*\",\"[S]=*\",\"[S](-*)(-*)=*\",\"[S](-*)(-*)(=*)=*\",\"[SH]-*\",\"[s](:*):*\",\"[s](=*)(:*):*\",\"[P](-*)(-*)-*\",\"[P](-*)=*\",\"[P](-*)(-*)(-*)=*\",\"[PH](-*)(-*)=*\"]),nt.xG=v(F(l.Y6,1),h0,6,15,[3.240000009536743,12.359999656677246,23.790000915527344,11.680000305175781,13.600000381469727,wD,12.029999732971191,21.940000534057617,23.850000381469727,26.020000457763672,0,wD,4.360000133514404,4.440000057220459,13.970000267028809,16.610000610351562,25.59000015258789,27.639999389648438,12.890000343322754,4.409999847412109,4.929999828338623,8.390000343322754,15.789999961853027,4.099999904632568,3.880000114440918,14.140000343322754,9.229999542236328,12.529999732971191,17.06999969482422,20.229999542236328,23.059999465942383,13.140000343322754,25.299999237060547,32.09000015258789,19.209999084472656,8.380000114440918,38.79999923706055,28.239999771118164,21.700000762939453,13.59000015258789,34.13999938964844,9.8100004196167,23.469999313354492])},nt.zG=function(t,e){var A,P;for(A=nt.DG(t),P=0;P<nt.xG.length;P++)A[P]!=0&&nt.uG(e,\"\"+A[P]+\" * \"+nt.xG[P]+\"   AtomType: \"+nt.wG[P],2)},nt.AG=function(t){var e,A,P;for(e=nt.DG(t),P=0,A=0;A<nt.xG.length;A++)P+=e[A]*nt.xG[A];return P},nt.BG=function(t){var e;return e=new nt.vG,y.pj(e.a,new nt.sG(\"The polar surface area prediction is based on an atom-type based\",2)),y.pj(e.a,new nt.sG(\"increment system, published by P. Ertl, B. Rohde, P. Selzer\",2)),y.pj(e.a,new nt.sG(\"in J. Med. Chem. 2000, 43, 3714-3717\",2)),y.pj(e.a,new nt.sG(Vr,2)),nt.zG(t,e),e},nt.CG=function(t,e){var A;switch(t.C[e]){case 7:if(e<t.f&&n.kt(t.p,e)){if(t.s[e]==0)if(t.e[e]-n.pp(t,e)+n.kp(t,e)==0){if(n.pp(t,e)==2)return 18;for(A=0;A<n.pp(t,e);A++)if(!n.Qp(t,t.k[e][A]))return 20;return 19}else return 22;else if(t.s[e]==1)if(t.e[e]-n.pp(t,e)+n.kp(t,e)==0){for(A=0;A<n.pp(t,e);A++)if(!n.Qp(t,t.k[e][A]))return n.xl(t,t.i[e][A])<0?21:24;return 23}else return 25}else if(t.s[e]==0)switch(t.e[e]-n.pp(t,e)+n.kp(t,e)){case 0:switch(t.o[e]){case 0:return(t.p&&e<t.f?n._s(t.p,e):0)==3?5:0;case 1:return 1;case 2:return 2}break;case 1:switch(t.o[e]){case 0:return(t.p&&e<t.f?n._s(t.p,e):0)==3?7:6;case 1:return 8}break;case 2:return 9}else if(t.s[e]==1)switch(t.e[e]-n.pp(t,e)+n.kp(t,e)){case 0:switch(t.o[e]){case 0:return 10;case 1:return nt.EG(t,e)?3:11;case 2:return t.n[e][0]==2?nt.EG(t,e)?4:nt.xG.length+1:12}break;case 1:switch(t.o[e]){case 0:return 13;case 1:return 14}break;case 2:return t.o[e]==0?15:16;case 3:return 17}return nt.xG.length+1;case 8:if(e<t.f&&n.kt(t.p,e)){if(t.s[e]==0)return 31}else{if(t.s[e]==0)return t.o[e]>0?28:n.pp(t,e)==1?29:(t.p&&e<t.f?n._s(t.p,e):0)==3?27:26;if(t.s[e]==-1)return n.pp(t,e)==1&&n.xl(t,t.i[e][0])>0?28:30}return nt.xG.length+1;case 15:if(t.s[e]==0){if(t.e[e]-n.pp(t,e)+n.kp(t,e)==0){if(n.pp(t,e)==3&&t.o[e]==0)return 39;if(n.pp(t,e)==2&&t.o[e]==1)return 40;if(n.pp(t,e)==4&&t.o[e]==1)return 41}else if(t.e[e]-n.pp(t,e)+n.kp(t,e)==1&&n.pp(t,e)==3&&t.o[e]==1)return 42}return nt.xG.length+1;case 16:if(t.s[e]==0){if(e<t.f&&n.kt(t.p,e))return n.pp(t,e)==2?37:38;if(t.e[e]-n.pp(t,e)+n.kp(t,e)==0){if(n.pp(t,e)==2&&t.o[e]==0)return 32;if(n.pp(t,e)==1&&t.o[e]==1)return 33;if(n.pp(t,e)==3&&t.o[e]==1)return 34;if(n.pp(t,e)==4&&t.o[e]==2)return 35}else if(t.e[e]-n.pp(t,e)+n.kp(t,e)==1&&n.pp(t,e)==1)return 36}return nt.xG.length+1}return nt.xG.length},nt.DG=function(t){var e,A;for(A=d(l.Z6,H,6,nt.xG.length+2,15,1),n.aw(t,7),e=0;e<t.f;e++)++A[nt.CG(t,e)];return A},nt.EG=function(t,e){var A;for(A=0;A<t.j[e];A++)if(n.xl(t,t.i[e][A])<0)return!0;return!1},nt.FG=function(t){var e,A;for(A=0,e=0;e<t.a.q;e++)(n.Ol(t.a,e)==7||n.Ol(t.a,e)==8)&&++A;return A},nt.GG=function(t){var e,A;for(A=0,e=0;e<t.a.q;e++)(n.Ol(t.a,e)==7||n.Ol(t.a,e)==8)&&n.Jo(t.a,e)>0&&++A;return A},nt.HG=function(t){var e;try{return nt.fG((new nt.hG,t.a))}catch(A){if(A=C1(A),Yt(A,19))return e=A,T.LB(e,(T.Pjb(),T.Ojb),\"\"),-999;throw Qt(A)}},nt.IG=function(t){this.a=t,n.hq(t)},G(279,1,{}),l.n9=O(279),nt.LG=function(){nt.LG=u1,nt.JG=v(F(l.$6,1),e0,6,14,[524290,524292,524297,524301,589826,589827,589828,589829,589832,589833,589837,589838,688130,688131,688132,688137,688141,819202,819203,819204,819205,819208,819209,1114114,1114115,1114116,1114120,1212420,1343492,1343496,1638402,1638403,17367042,17367043,17367044,17367045,17367048,17367049,17367053,17367054,17465346,1074266116,1208483842,1208483844,1208549378,1208549379,1208549380,1208549384,1208549388,1409810434,1409875970,1409875971,1409875972,1409875976,1409974274,1409974280,1409974284,1678311426,1678311427,1678311428,1678311432,1678311436,1678409730,1678409731,1678409732,1678540802,1678540803,1678540804,1678540808,2282291202,2282291203,2282389506,2282389507,2282520578,2282520579,2483617794,2483617795,2483716098,2483716099,2752675842,3356033026,3557359618,3557457922,3557588994,34510798850,34510798851,34510798852,34510798856,34712125442,34712125443,34712125444,34712125448,34712223746,34712223747,34712223748,34980560898,34980560899,34980659202,35568287746,35568287747,35568287748,35568287752,35568386050,35568386051,35568386052,35568517122,35568517123,35568517124,35568517128,35568812034,35568812035,35568910338,35568910339,35568910350,35569336322,35585064962,35585064963,35585064964,35585064968,35769548802,35769614338,35769712642,35769843714,35786391554,Bi,ki,ji,mi,Fi,vi,pi,Ci,Ri,Si,Hi,Mi,zi,3437652377603,Vi,qi,4674334294019,Ii,Ei,4674602827778,Ni,xi,Gi,Oi,5086651154435,Zi,5086651252739,Ji,5086651252744,Ki,5086919589896,Yi,5086919819266,Xi,Wi,_i,5636675633154,{l:589826,m:73760,h:4},{l:589827,m:73760,h:4},{l:688130,m:73760,h:4},{l:819202,m:73760,h:4},{l:65538,m:73764,h:4},{l:65539,m:73764,h:4},{l:589826,m:172064,h:4},{l:589827,m:172064,h:4},{l:688130,m:172064,h:4},{l:819202,m:172064,h:4},{l:819203,m:172064,h:4},{l:65538,m:172068,h:4},{l:65539,m:172068,h:4},{l:589826,m:172112,h:4},{l:589827,m:172112,h:4},{l:688130,m:172112,h:4},{l:819202,m:172112,h:4},{l:65538,m:172116,h:4},{l:163842,m:172116,h:4},{l:589826,m:303136,h:4},{l:688130,m:303136,h:4},{l:819202,m:303136,h:4},{l:65538,m:303140,h:4},{l:589826,m:303184,h:4},{l:688130,m:303184,h:4},{l:819202,m:303184,h:4},{l:65538,m:303188,h:4},$i,ai,tf,ef,nf,Af,Pf,{l:688130,m:590224,h:4},{l:819202,m:590224,h:4},rf,ff,Df,uf,of,lf,Qf,Lf,{l:688135,m:590416,h:4},Uf,{l:1212430,m:590416,h:4},{l:65538,m:598052,h:4},{l:65538,m:598100,h:4},{l:65539,m:598100,h:4},{l:163842,m:598100,h:4},{l:163843,m:598100,h:4},yf,wf,sf,{l:688131,m:598304,h:4},Tf,hf,bf,cf,gf,{l:589826,m:688672,h:4},df,Bf,kf,jf,{l:589827,m:590112,h:336},mf,Ff,vf,pf,Cf,Rf,Sf,Hf,Mf,{l:688130,m:819536,h:400},zf,Vf,qf,{l:589831,m:590112,h:592},If,Ef,Nf,xf,Gf,Of,{l:819207,m:819600,h:592},Zf,Jf,Kf,{l:589832,m:1212816,h:592},{l:688136,m:1212816,h:592},Yf,Xf,Wf,_f,$f,{l:589826,m:819488,h:8480},af,tD,eD,nD,{l:819208,m:1213008,h:8480},AD,PD,{l:688130,m:590160,h:8484},{l:589826,m:598304,h:8484},rD,{l:819202,m:598304,h:8484}]),nt.KG=v(F(l.Y6,1),h0,6,15,[-.1899999976158142,1.2699999809265137,-.7009999752044678,2.690999984741211,-.22699999809265137,f9,.10599999874830246,-.47600001096725464,-.44699999690055847,-.19099999964237213,-.3330000042915344,.0860000029206276,.24699999392032623,-.06199999898672104,.01600000075995922,.3869999945163727,.23499999940395355,-.4320000112056732,-.902999997138977,.38999998569488525,.5809999704360962,4.52400016784668,-.6349999904632568,-.2800000011920929,.7699999809265137,-.05000000074505806,1.0870000123977661,.19200000166893005,.19599999487400055,-.5199999809265137,.5419999957084656,.3630000054836273,.7919999957084656,.5920000076293945,.9639999866485596,uD,-.6850000023841858,-.3149999976158142,-.4129999876022339,-.5950000286102295,.2199999988079071,-1.4320000410079956,-2.253999948501587,.4399999976158142,-.27000001072883606,-.13300000131130219,-.26899999380111694,.2669999897480011,.5720000267028809,-.5680000185966492,.17399999499320984,-.1850000023841858,-.23499999940395355,sD,TD,-.34200000762939453,-.3479999899864197,-.43700000643730164,-.8040000200271606,-.41200000047683716,-.2150000035762787,-.625,-.8309999704360962,.4970000088214874,-.4309999942779541,-1.3309999704360962,.5070000290870667,-.6320000290870667,-.5989999771118164,-.15600000321865082,-.3529999852180481,-.164000004529953,-.4410000145435333,-.4970000088214874,-1.059999942779541,.11500000208616257,-.22499999403953552,-.15399999916553497,-.03099999949336052,-1.5740000009536743,-1.093000054359436,LD,-.44999998807907104,-.5559999942779541,TD,2.384000062942505,1.75,-1.6660000085830688,-1.065999984741211,1.3270000219345093,.8029999732971191,-1.5049999952316284,-2.5369999408721924,sD,.14900000393390656,.5210000276565552,2.9049999713897705,-.25200000405311584,.8600000143051147,.3610000014305115,.40299999713897705,.004999999888241291,1.1460000276565552,.9359999895095825,-.30000001192092896,.20900000631809235,-.5830000042915344,-.024000000208616257,-.009999999776482582,.6110000014305115,.4860000014305115,.8619999885559082,-.03500000014901161,-.5960000157356262,1.1610000133514404,1.6469999551773071,.843999981880188,.125,.1420000046491623,-.17100000381469727,.44200000166893005,.08799999952316284,3.065999984741211,1.6519999504089355,hD,-.017999999225139618,.023000000044703484,.0729999989271164,.2540000081062317,.5540000200271606,.5950000286102295,-.4059999883174896,-.6370000243186951,-.17399999499320984,-.10100000351667404,-.5429999828338623,-2.4059998989105225,-3.2920000553131104,-.05299999937415123,-.19300000369548798,Sr,-1.2610000371932983,-.656000018119812,-.7300000190734863,-.9380000233650208,.12800000607967377,1.1540000438690186,.24199999868869781,-.5289999842643738,-.27799999713897705,-.8019999861717224,.9120000004768372,-1.38100004196167,.46299999952316284,1.0740000009536743,-.628000020980835,-.9620000123977661,-1.8320000171661377,-1.4989999532699585,-2.115999937057495,-2.2070000171661377,-1.3170000314712524,2.500999927520752,-.8489999771118164,lD,-.621999979019165,2.121999979019165,-2.2260000705718994,.9129999876022339,-2.259000062942505,-1.25,1.3940000534057617,-1.4019999504089355,2.072999954223633,-2.9570000171661377,.29100000858306885,-3.4760000705718994,-2.7269999980926514,-3.131999969482422,-2.119999885559082,-.7250000238418579,-.296999990940094,.08299999684095383,.34700000286102295,-1.4249999523162842,-1.659999966621399,-1.281999945640564,-1.2649999856948853,.718999981880188,.1379999965429306,1.3020000457763672,.859000027179718,1.3589999675750732,.6589999794960022,-.9399999976158142,.8999999761581421,.3190000057220459,-2.571000099182129,1.1089999675750732,.972000002861023,1.652999997138977,2.6019999980926514,.7289999723434448,1.065999984741211,1.0670000314712524,-.3109999895095825,.03099999949336052,hD,-.6809999942779541,-1.2580000162124634,M9,-3.0959999561309814,-.2280000001192093,1.9329999685287476,.11900000274181366,2.1080000400543213,.11299999803304672,1.628000020980835,1.3079999685287476,3.3359999656677246,.7540000081062317,-.4650000035762787,-.3970000147819519,.07699999958276749,-.4790000021457672,-.15299999713897705,.14100000262260437,2.134999990463257,.23399999737739563,.460999995470047,.6700000166893005,-.3610000014305115,-1.0390000343322754,-.4830000102519989,.13699999451637268,-.7680000066757202,-.5109999775886536,3.4240000247955322,-.8550000190734863,-.5849999785423279,-1.5670000314712524,3.3429999351501465,1.840000033378601,.3889999985694885,1.121999979019165,Hr,1.3350000381469727,.3659999966621399,-.5569999814033508,.4320000112056732,.20399999618530273,.8820000290870667,.4659999907016754,-.4580000042915344,.40400001406669617,.6570000052452087,1.1150000095367432,1.9759999513626099,1.7860000133514404,-.035999998450279236,-1.0499999523162842,1.0449999570846558,.04399999976158142,1.0329999923706055,-1.0800000429153442,2.5390000343322754,2.234999895095825,Fr,3.121000051498413,3.931999921798706,2.75])},nt.MG=function(t){var e,A,P,r;for(P=-.5299999713897705,n.hq(t),n.aw(t,7),e=0;e<t.f;e++){r=-1;try{r=n.cf(t,e,2144)}catch(i){if(i=C1(i),!Yt(i,19))throw Qt(i)}for(A=0;A<nt.KG.length;A++)if(S1(nt.JG[A],r)){P+=nt.KG[A];break}}return P},nt.NG=function(t){var e,A,P,r,i,D,u;if(P=new nt.vG,y.pj(P.a,new nt.sG(\"Solubility values are estimated applying an atom-type based increment system.\",2)),y.pj(P.a,new nt.sG(UD,2)),y.pj(P.a,new nt.sG(Vr,2)),y.pj(P.a,new nt.sG(\"Base value = -0.530\",2)),A=d(l.Z6,H,6,nt.KG.length,15,1),t)for(n.hq(t),n.aw(t,7),e=0;e<t.f;e++){u=-1;try{u=n.cf(t,e,2144)}catch(o){if(o=C1(o),!Yt(o,19))throw Qt(o)}for(D=0;D<nt.KG.length;D++)if(S1(nt.JG[D],u)){++A[D];break}}for(r=new D0.Hmb(\"#0.000\"),i=0;i<nt.KG.length;i++)A[i]!=0&&nt.uG(P,\"\"+A[i]+\" * \"+D0.Emb(r,nt.KG[i])+\"   AtomType: 0x\"+T.Cib(nt.JG[i]),2);return P},nt.UG=function(){nt.UG=u1,nt.OG=v(F(l.Nbb,1),yt,2,6,[\"mutagenic\",\"tumorigenic\",\"irritant\",\"reproductive effective\"]),nt.PG=v(F(l.Nbb,1),yt,2,6,[\"Mutagenicity\",\"Tumorigenicity\",\"Irritating effects\",\"Reproductive effects\"])},nt.VG=function(t,e){var A,P,r,i;if(!nt.RG)return 0;if(nt.TG[e].ac(n.og(new n.Kg(t)))!=-1)return 3;for(i=new n.fu,A=new n.sw,r=0;r<nt.QG[e].a.length;r++)if(n.Pq(new n.Xq(!1),A,y.uj(nt.QG[e],r)),n.$t(i,t),n.Xt(i,A),n.Lt(i,1,i.c)>0)return 3;for(P=0;P<nt.SG[e].a.length;P++)if(n.Pq(new n.Xq(!1),A,y.uj(nt.SG[e],P)),n.$t(i,t),n.Xt(i,A),n.Lt(i,1,i.c)>0)return 2;return 1},nt.WG=function(t,e){var A,P,r,i,D,u,o;if(o=new nt.vG,!nt.RG)return y.pj(o.a,new nt.sG(\"Toxicity predictor not properly initialized.\",2)),o;if(D=n.og(new n.Kg(t)),nt.TG[e].ac(D)!=-1)return nt.uG(o,\"This molecule is known to be \"+nt.OG[e]+\":\",2),y.pj(o.a,new nt.sG(D,1)),o;for(u=new n.fu,A=!1,P=new n.sw,i=0;i<nt.QG[e].a.length;i++)n.Pq(new n.Xq(!1),P,y.uj(nt.QG[e],i)),n.$t(u,t),n.Xt(u,P),n.Lt(u,1,u.c)>0&&(A||nt.uG(o,\"High-risk fragments indicating \"+nt.PG[e]+\":\",2),A=!0,nt.uG(o,y.uj(nt.QG[e],i),1));for(A=!1,r=0;r<nt.SG[e].a.length;r++)n.Pq(new n.Xq(!1),P,y.uj(nt.SG[e],r)),n.$t(u,t),n.Xt(u,P),n.Lt(u,1,u.c)>0&&(A||nt.uG(o,\"Medium-risk fragments indicating \"+nt.PG[e]+\":\",2),A=!0,nt.uG(o,y.uj(nt.SG[e],r),1));return o.a.a.length==0&&nt.uG(o,\"No indication for \"+nt.PG[e]+\" found.\",2),o},nt.XG=function(t){var e,A,P,r;for(r=new pt.cgb(new pt.hgb((A=Wt.cAb(t),V1.Cmb(),A))),P=new n.Yv;;)try{if(e=pt.bgb(r),e!=null)n.Wv(P,e);else break}catch(i){if(i=C1(i),Yt(i,76))break;throw Qt(i)}return P},nt.YG=function(t){var e,A,P,r;for(r=new pt.cgb(new pt.hgb((P=Wt.cAb(t),V1.Cmb(),P))),e=new y.Jj;;)try{if(A=pt.bgb(r),A!=null)c.izb(e.a,A);else break}catch(i){if(i=C1(i),Yt(i,76))break;throw Qt(i)}return e},nt.ZG=function(){if(nt.UG(),!nt.RG)try{nt.TG=d(l.Z7,b1,103,4,0,1),nt.QG=d(l.ucb,b1,21,4,0,1),nt.SG=d(l.ucb,b1,21,4,0,1),nt.QG[0]=nt.YG(\"/resources/toxpredictor/m1.txt\"),nt.QG[1]=nt.YG(\"/resources/toxpredictor/t1.txt\"),nt.QG[2]=nt.YG(\"/resources/toxpredictor/i1.txt\"),nt.QG[3]=nt.YG(\"/resources/toxpredictor/r1.txt\"),nt.SG[0]=nt.YG(\"/resources/toxpredictor/m2.txt\"),nt.SG[1]=nt.YG(\"/resources/toxpredictor/t2.txt\"),nt.SG[2]=nt.YG(\"/resources/toxpredictor/i2.txt\"),nt.SG[3]=nt.YG(\"/resources/toxpredictor/r2.txt\"),nt.TG[0]=nt.XG(\"/resources/toxpredictor/m3.txt\"),nt.TG[1]=nt.XG(\"/resources/toxpredictor/t3.txt\"),nt.TG[2]=nt.XG(\"/resources/toxpredictor/i3.txt\"),nt.TG[3]=nt.XG(\"/resources/toxpredictor/r3.txt\"),nt.RG=!0}catch(t){if(t=C1(t),Yt(t,19))T.Pjb();else throw Qt(t)}},G(285,1,{},nt.ZG),nt.RG=!1,l.o9=O(285),tt.$G=function(t,e){y.pj(t.a,e)},tt._G=function(t,e,A){y.oj(t.a,A,e)},tt.aH=function(t,e){y.pj(t.f,e),t.d=-1},tt.bH=function(t,e,A){y.oj(t.f,A,e),t.d=-1},tt.cH=function(t,e){y.pj(t.g,e),t.d=-1},tt.dH=function(t,e,A){y.oj(t.g,A,e),t.d=-1},tt.eH=function(t){c.kzb(t.g.a,0),c.kzb(t.f.a,0),c.kzb(t.a.a,0),t.b=null,t.d=-1},tt.fH=function(t){var e,A,P;for(P=new y.rqb(t.g);P.a<P.c.a.length;)if(e=y.qqb(P),e.K)return!0;for(A=new y.rqb(t.f);A.a<A.c.a.length;)if(e=y.qqb(A),e.K)return!0;return!1},tt.gH=function(t){var e,A,P,r;for(A=0,e=0,P=0;P<t.g.a.length+t.f.a.length;P++)r=P<t.g.a.length?y.uj(t.g,P):y.uj(t.f,P-t.g.a.length),r.r!=0&&(A+=r.r,e+=n.Rl(r,r.q,r.r,(n.Ok(),n.Nk))*r.r);return A==0?(n.Ok(),n.Ok(),n.Nk):e/A},tt.hH=function(t,e){return y.uj(t.a,e)},tt.iH=function(t){var e,A,P;if(t.d!=-1)return t.d;for(t.d=0,A=0;A<t.g.a.length+t.f.a.length;A++)for(P=A<t.g.a.length?y.uj(t.g,A):y.uj(t.f,A-t.g.a.length),e=0;e<P.q;e++)t.d<k.Math.abs(P.w[e])&&(t.d=k.Math.abs(P.w[e]));return t.d},tt.jH=function(t){var e,A,P,r;if(A=new tt.yH,t.g.a.length!=0){for(r=new n.uw(y.uj(t.g,0)),e=1;e<t.g.a.length;e++)n.Uk(r,y.uj(t.g,e));y.pj(A.g,r),A.d=-1}if(t.f.a.length!=0){for(P=new n.uw(y.uj(t.f,0)),e=1;e<t.f.a.length;e++)n.Uk(P,y.uj(t.f,e));y.pj(A.f,P),A.d=-1}return A},tt.kH=function(t,e){return e<t.g.a.length?y.uj(t.g,e):y.uj(t.f,e-t.g.a.length)},tt.lH=function(t){return t.g.a.length+t.f.a.length},tt.mH=function(t){return t.e==null?\"\":t.e},tt.nH=function(t,e){return y.uj(t.f,e)},tt.oH=function(t,e){return y.uj(t.g,e)},tt.pH=function(t){var e,A,P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S,p;if(t.g.a.length==0||t.f.a.length==0||(s=tt.iH(t),s==0))return null;for(w=d(l.Z6,M1,7,t.f.a.length,0,2),i=0;i<t.f.a.length;i++)for(g=y.uj(t.f,i),n.aw(g,15),w[i]=d(l.Z6,H,6,s+1,15,1),y.Dqb(w[i],-1),e=0;e<g.q;e++){if(L=k.Math.abs(g.w[e]),L!=0&&w[i][L]!=-1)return null;w[i][L]=e}for(D=d(l.teb,wt,6,s+1,16,1),r=0;r<t.g.a.length;r++)for(p=y.uj(t.g,r),n.aw(p,15),m=0;m<p.q;m++)if(L=k.Math.abs(p.w[m]),L!=0&&!D[L]){for(u=0;u<t.f.a.length;u++)if(h=w[u][L],h!=-1){if(g=y.uj(t.f,u),p.j[m]!=g.j[h]){D[L]=!0;break}if((p.u[m]&3)!=(g.u[h]&3)){D[L]=!0;break}for(o=0;o<p.j[m];o++)if(A=n.Gl(p,p.i[m][o]),A==0)D[L]=!0;else{for(S=p.k[m][o],P=!1,Q=0;Q<g.j[h];Q++){if(B=n.Gl(g,g.i[h][Q]),B==0){D[L]=!0;break}if(B==A){if(P=!0,b=g.k[h][Q],(S<p.g&&(n.qt(p.p,S)||p.H[S]==8))^(b<g.g&&(n.qt(g.p,b)||g.H[b]==8))||!(S<p.g&&(n.qt(p.p,S)||p.H[S]==8))&&(n.am(p,S)!=n.am(g,b)||(p.F[S]&3)!=(g.F[b]&3))){D[L]=!0,D[A]=!0;break}break}}P||(D[L]=!0)}}}return D},tt.qH=function(t){var e,A,P,r;for(P=new y.rqb(t.g);P.a<P.c.a.length;)if(e=y.qqb(P),e.q!=0)return!1;for(r=new y.rqb(t.f);r.a<r.c.a.length;)if(e=y.qqb(r),e.q!=0)return!1;for(A=new y.rqb(t.a);A.a<A.c.a.length;)if(e=y.qqb(A),e.q!=0)return!1;return!0},tt.rH=function(t){return t.c||tt.fH(t)},tt.sH=function(t){var e,A,P,r,i,D,u,o,Q,L,w;for(A=0,w=new y.rqb(t.g);w.a<w.c.a.length;)if(Q=y.qqb(w),n.aw(Q,1),Q.K)for(e=0;e<Q.f;e++)if(jt(Z(Q.B[e],P0),0)){if(k.Math.abs(Q.w[e])!=0)return!1}else++A;else A+=Q.f;for(o=new y.rqb(t.f);o.a<o.c.a.length;)if(D=y.qqb(o),n.aw(D,1),D.K)for(e=0;e<D.f;e++)if(jt(Z(D.B[e],P0),0)){if(k.Math.abs(D.w[e])!=0)return!1}else--A;else A-=D.f;if(A!=0)return!1;for(i=tt.iH(t),P=d(l.teb,wt,6,i+1,16,1),L=new y.rqb(t.g);L.a<L.c.a.length;)for(Q=y.qqb(L),e=0;e<Q.f;e++)if(!Q.K||S1(Z(Q.B[e],P0),0)){if(r=k.Math.abs(Q.w[e]),P[r])return!1;P[r]=!0}for(u=new y.rqb(t.f);u.a<u.c.a.length;)for(D=y.qqb(u),n.aw(D,1),e=0;e<D.f;e++)if(!D.K||S1(Z(D.B[e],P0),0)){if(r=k.Math.abs(D.w[e]),r>=i||!P[r])return!1;P[r]=!1}return!0},tt.tH=function(t){var e,A,P,r;if(t.g.a.length+t.f.a.length<=1)return!1;for(e=tt.gH(t),r=d(l.Y9,v1,35,t.g.a.length+t.f.a.length,0,1),A=0;A<t.g.a.length+t.f.a.length;A++)if(r[A]=n.fm(A<t.g.a.length?y.uj(t.g,A):y.uj(t.f,A-t.g.a.length),null),r[A]){for(P=0;P<A;P++)if(r[P]&&(r[A].c+r[A].b>=r[P].c&&r[A].c<=r[P].c+r[P].b||r[A].d+r[A].a>=r[P].d&&r[A].d<=r[P].d+r[P].a))return!0;if(A!=0&&r[A-1]&&(r[A].c-r[A-1].c-r[A].b>5*e||r[A].d-r[A-1].d-r[A].a>5*e))return!0}return!1},tt.uH=function(t,e){t.b=e},tt.vH=function(t,e){var A,P,r;for(t.c=e,r=new y.rqb(t.g);r.a<r.c.a.length;)A=y.qqb(r),n.Kn(A,e);for(P=new y.rqb(t.f);P.a<P.c.a.length;)A=y.qqb(P),n.Kn(A,e)},tt.wH=function(t,e){t.e=e},tt.xH=function(t){var e,A,P,r,i,D,u,o,Q,L,w,s,h,b;for(u=tt.iH(t),D=d(l.teb,wt,6,u+1,16,1),b=new y.rqb(t.g);b.a<b.c.a.length;)for(s=y.qqb(b),A=0;A<s.q;A++)if(r=k.Math.abs(s.w[A]),r!=0){if(D[r])throw Qt(new T.bC(\"Duplicate mapping no in reactants\"));D[r]=!0}for(i=d(l.teb,wt,6,u+1,16,1),w=new y.rqb(t.f);w.a<w.c.a.length;)for(Q=y.qqb(w),A=0;A<Q.q;A++)if(r=k.Math.abs(Q.w[A]),r!=0){if(i[r])throw Qt(new T.bC(\"Duplicate mapping no in products\"));i[r]=!0}for(o=d(l.Z6,H,6,u+1,15,1),P=0,e=1;e<=u;e++)D[e]&&i[e]&&(o[e]=++P);if(P!=u){for(h=new y.rqb(t.g);h.a<h.c.a.length;)for(s=y.qqb(h),A=0;A<s.q;A++)n.nn(s,A,o[k.Math.abs(s.w[A])],s.w[A]<0);for(L=new y.rqb(t.f);L.a<L.c.a.length;)for(Q=y.qqb(L),A=0;A<Q.q;A++)n.nn(Q,A,o[k.Math.abs(Q.w[A])],Q.w[A]<0)}},tt.yH=function(){this.g=new y.Jj,this.f=new y.Jj,this.a=new y.Jj,this.d=-1,this.c=!1},tt.zH=function(t){var e,A,P,r,i,D;for(tt.yH.call(this),D=t&&t.g?t.g.a.length:0,i=t&&t.f?t.f.a.length:0,e=t&&t.a?t.a.a.length:0,P=0;P<D;P++)y.pj(this.g,new n.uw(y.uj(t.g,P)));for(r=0;r<i;r++)y.pj(this.f,new n.uw(y.uj(t.f,r)));for(A=0;A<e;A++)y.pj(this.a,new n.uw(y.uj(t.a,A)));this.b=new n.dk(t.b),t.e!=null&&(this.e=t.e),this.c=t.c||tt.fH(t)},tt.AH=function(t,e){tt.yH.call(this),t!=null&&(y.rj(this.g,new y.lob(new y.drb(t),0,e)),y.rj(this.f,new y.lob(new y.drb(t),e,t.length))),this.c=tt.fH(this)},G(53,1,fn,tt.yH,tt.zH,tt.AH),U.c=!1,U.d=0,l.q9=O(53),tt.BH=function(t,e,A){var P,r,i;return i=k.Math.sqrt((t.i[0].a-e)*(t.i[0].a-e)+(t.i[0].b-A)*(t.i[0].b-A)),i<8?1:(r=k.Math.sqrt((t.i[1].a-e)*(t.i[1].a-e)+(t.i[1].b-A)*(t.i[1].b-A)),r<8?2:(P=k.Math.sqrt((t.i[1].a-t.i[0].a)*(t.i[1].a-t.i[0].a)+(t.i[1].b-t.i[0].b)*(t.i[1].b-t.i[0].b)),i+r<P+5?3:0))},tt.CH=function(t){var e,A;return e=mt(t.i[1].a-t.i[0].a),A=mt(t.i[1].b-t.i[0].b),k.Math.sqrt(e*e+A*A)},tt.DH=function(t,e,A){var P,r,i,D,u,o;return P=t.i[1].a-t.i[0].a,r=t.i[1].b-t.i[0].b,D=(t.i[0].a+t.i[1].a)/2,u=(t.i[0].b+t.i[1].b)/2,P==0?r<0^A>u:r==0?P<0^e>D:(i=-P/r,o=(t.i[0].a+i*i*e-i*A+i*t.i[0].b)/(1+i*i),P<0^o>D)},tt.EH=function(t,e,A,P,r){t.i[0].a=e,t.i[0].b=A,t.i[1].a=P,t.i[1].b=r},tt.FH=function(){this.i=d(l.W9,v1,55,2,0,1),this.i[0]=new Tt.qN,this.i[1]=new Tt.qN,this.a=0},tt.GH=function(t){var e,A,P,r;for(tt.FH.call(this),e=0;e!=-1&&(A=c.Szb(t).indexOf('=\"',e),A!=-1);)if(P=(c.Mzb(e+1,A,c.Szb(t).length),c.Szb(t).substr(e+1,A-(e+1))),e=c.Szb(t).indexOf('\"',A+2),r=e==-1?(c.Nzb(A+1,c.Szb(t).length+1),c.Szb(t).substr(A+1)):(c.Mzb(A+1,e,c.Szb(t).length),c.Szb(t).substr(A+1,e-(A+1))),T._ib(P,\"x1\"))try{this.i[0].a=q0(r)}catch(i){if(i=C1(i),!Yt(i,40))throw Qt(i)}else if(T._ib(P,\"y1\"))try{this.i[0].b=q0(r)}catch(i){if(i=C1(i),!Yt(i,40))throw Qt(i)}else if(T._ib(P,\"x2\"))try{this.i[1].a=q0(r)}catch(i){if(i=C1(i),!Yt(i,40))throw Qt(i)}else if(T._ib(P,\"y2\"))try{this.i[1].b=q0(r)}catch(i){if(i=C1(i),!Yt(i,40))throw Qt(i)}},G(61,192,{192:1,61:1},tt.FH,tt.GH),U.Db=function(t,e){return this.a=tt.BH(this,t,e),this.a!=0},U.Eb=function(){this.a=0},U.Fb=function(){var t;return t=new tt.FH,t.i[0].a=this.i[0].a,t.i[0].b=this.i[0].b,t.i[1].a=this.i[1].a,t.i[1].b=this.i[1].b,t.g=this.g,t},U.Gb=function(t,e){return tt.BH(this,t,e)!=0},U.Hb=function(t,e){var A,P,r,i,D,u,o;R.R2(t,this.g?lt.H3(X0,R.I2(t)):R.L2(t)),i=e?n.xi(e,this.i[0].a):this.i[0].a,u=e?n.yi(e,this.i[0].b):this.i[0].b,D=e?n.xi(e,this.i[1].a):this.i[1].a,o=e?n.yi(e,this.i[1].b):this.i[1].b,A=D-i,P=o-u,R.Q2(t,k.Math.max(1,.019999999552965164*k.Math.sqrt(A*A+P*P))),R.B2(t,i,u,D,o),r=new Tt.yN(4),Tt.tN(r,D+A/40,o+P/40),Tt.tN(r,D-A/5+P/10,o-P/5-A/10),Tt.tN(r,D-A/20,o-P/20),Tt.tN(r,D-A/5-P/10,o-P/5+A/10),R.G2(t,new R.e3(r))},U.Ib=function(t){var e,A,P,r,i,D;return D=tt.CH(this),i=k.Math.max(D/8,3),e=n.jo(this.i[0].a,this.i[0].b,this.i[1].a,this.i[1].b),P=k.Math.abs(i*k.Math.cos(e)),r=k.Math.abs(i*k.Math.sin(e)),A=new Tt.EN,this.i[0].a<this.i[1].a?(A.c=this.i[0].a-P,A.b=this.i[1].a-this.i[0].a+2*P):(A.c=this.i[1].a-P,A.b=this.i[0].a-this.i[1].a+2*P),this.i[0].b<this.i[1].b?(A.d=this.i[0].b-r,A.a=this.i[1].b-this.i[0].b+2*r):(A.d=this.i[1].b-r,A.a=this.i[0].b-this.i[1].b+2*r),A},U.Jb=function(){var t;return t=new T.Kjb,T.Ijb(t,' x1=\"'+this.i[0].a+'\"'),T.Ijb(t,' y1=\"'+this.i[0].b+'\"'),T.Ijb(t,' x2=\"'+this.i[1].a+'\"'),T.Ijb(t,' y2=\"'+this.i[1].b+'\"'),t.a},U.Kb=function(){return\"arrow\"},U.Lb=function(t){var e,A,P,r,i,D;switch(R.R2(t,R.N2(t)),this.a){case 1:R.F2(t,this.i[0].a-8,this.i[0].b-8,16);break;case 2:R.F2(t,this.i[1].a-8,this.i[1].b-8,16);break;case 3:i=tt.CH(this),r=k.Math.max(i/8,3),e=n.jo(this.i[0].a,this.i[0].b,this.i[1].a,this.i[1].b),A=r*k.Math.cos(e),P=-r*k.Math.sin(e),D=new Tt.yN(4),Tt.tN(D,this.i[0].a+A,this.i[0].b+P),Tt.tN(D,this.i[1].a+A,this.i[1].b+P),Tt.tN(D,this.i[1].a-A,this.i[1].b-P),Tt.tN(D,this.i[0].a-A,this.i[0].b-P),R.G2(t,new R.e3(D))}},U.Nb=function(t,e){switch(this.a){case 1:this.i[0].a=this.o[0]+t-this.k,this.i[0].b=this.p[0]+e-this.n;break;case 2:this.i[1].a=this.o[1]+t-this.k,this.i[1].b=this.p[1]+e-this.n;break;default:n.ne(this,t,e)}},U.a=0,l.p9=O(61),tt.RH=function(t,e){var A,P,r,i,D,u,o,Q,L;return t==null?null:(u=t,Q=null,o=null,L=null,D=null,A=T.gjb(t,X1(35)),A==-1?u=t:(u=(c.Mzb(0,A,c.Szb(t).length),c.Szb(t).substr(0,A)),P=T.hjb(t,X1(35),A+1),P==-1?Q=(c.Nzb(A+1,c.Szb(t).length+1),c.Szb(t).substr(A+1)):(Q=(c.Mzb(A+1,P,c.Szb(t).length),c.Szb(t).substr(A+1,P-(A+1))),r=T.hjb(t,X1(35),P+1),r==-1?o=(c.Nzb(P+1,c.Szb(t).length+1),c.Szb(t).substr(P+1)):(o=(c.Mzb(P+1,r,c.Szb(t).length),c.Szb(t).substr(P+1,r-(P+1))),i=T.hjb(t,X1(35),r+1),i==-1?L=(c.Nzb(r+1,c.Szb(t).length+1),c.Szb(t).substr(r+1)):(L=(c.Mzb(r+1,i,c.Szb(t).length),c.Szb(t).substr(r+1,i-(r+1))),D=(c.Nzb(i+1,c.Szb(t).length+1),c.Szb(t).substr(i+1)))))),tt.SH(u,(e&1)!=0?Q:null,(e&2)!=0?o:null,(e&4)!=0?L:null,(e&8)!=0?D:null,!1,null))},tt.SH=function(t,e,A,P,r,i,D){var u,o,Q,L,w,s,h,b,g,B,m,S,p,M,z,q;if(t==null||c.Szb(t).length==0||(b=!1,w=0,p=0,o=0,q=T.gjb(t,X1(33)),q==-1))return null;for(D?tt.eH(D):D=new tt.yH;w!=-1;)w>q&&(b=!0),Q=T.hjb(t,X1(32),w),!b&&(Q>q||Q==-1)&&(Q=q),L=null,Q==-1?(L=(c.Nzb(w,c.Szb(t).length+1),c.Szb(t).substr(w)),w=-1):(L=(c.Mzb(w,Q,c.Szb(t).length),c.Szb(t).substr(w,Q-w)),w=Q+1),S=null,e!=null&&c.Szb(e).length!=0&&(Q=T.hjb(e,X1(32),p),Q==-1?S=(c.Nzb(p,c.Szb(e).length+1),c.Szb(e).substr(p)):(S=(c.Mzb(p,Q,c.Szb(e).length),c.Szb(e).substr(p,Q-p)),p=Q+1)),u=null,A!=null&&c.Szb(A).length!=0&&(Q=T.hjb(A,X1(32),o),Q==-1?u=(c.Nzb(o,c.Szb(A).length+1),c.Szb(A).substr(o)):(u=(c.Mzb(o,Q,c.Szb(A).length),c.Szb(A).substr(o,Q-o)),o=Q+1)),z=new n.Xq(i),M=L==null?null:n.Oq(z,c.szb((B=L,V1.Cmb(),B)),u==null?null:c.szb((m=u,m)),0),S!=null&&n.Sq(z,c.szb((g=S,V1.Cmb(),g))),b?(y.pj(D.f,M),D.d=-1):(y.pj(D.g,M),D.d=-1);if(P!=null&&c.Szb(P).length!=0&&tt.uH(D,new n.ek(P)),r!=null&&c.Szb(r).length!=0){for(z=new n.Xq(i),s=0,h=T.gjb(r,X1(43));h!=-1;)tt.$G(D,n.Lq(z,(c.Mzb(s,h,c.Szb(r).length),c.Szb(r).substr(s,h-s)))),s=h+1,h=T.hjb(r,X1(43),s);tt.$G(D,n.Lq(z,(c.Nzb(s,c.Szb(r).length+1),c.Szb(r).substr(s))))}return D},tt.TH=function(t,e,A){var P,r,i,D,u,o,Q,L,w;return t==null?null:(o=t,L=null,Q=null,w=null,u=null,P=T.gjb(t,X1(35)),P==-1?o=t:(o=(c.Mzb(0,P,c.Szb(t).length),c.Szb(t).substr(0,P)),r=T.hjb(t,X1(35),P+1),r==-1?L=(c.Nzb(P+1,c.Szb(t).length+1),c.Szb(t).substr(P+1)):(L=(c.Mzb(P+1,r,c.Szb(t).length),c.Szb(t).substr(P+1,r-(P+1))),i=T.hjb(t,X1(35),r+1),i==-1?Q=(c.Nzb(r+1,c.Szb(t).length+1),c.Szb(t).substr(r+1)):(Q=(c.Mzb(r+1,i,c.Szb(t).length),c.Szb(t).substr(r+1,i-(r+1))),D=T.hjb(t,X1(35),i+1),D==-1?w=(c.Nzb(i+1,c.Szb(t).length+1),c.Szb(t).substr(i+1)):(w=(c.Mzb(i+1,D,c.Szb(t).length),c.Szb(t).substr(i+1,D-(i+1))),u=(c.Nzb(D+1,c.Szb(t).length+1),c.Szb(t).substr(D+1)))))),tt.SH(o,L,Q,w,u,e,A))},tt.UH=function(t,e,A){var P,r;return r=tt.VH(t,e,(A&16)==0),r==null?null:(P=new T.Djb(r[0]),A!=0&&(P.a+=\"#\",(A&1)!=0&&r.length>1&&r[1]!=null&&T.Ajb(P,r[1])),A&=-2,A!=0&&(P.a+=\"#\",(A&2)!=0&&r.length>2&&r[2]!=null&&T.Ajb(P,r[2])),A&=-3,A!=0&&(P.a+=\"#\",(A&4)!=0&&r.length>3&&r[3]!=null&&T.Ajb(P,r[3])),A&=-5,A!=0&&(P.a+=\"#\",(A&8)!=0&&r.length>4&&r[4]!=null&&T.Ajb(P,r[4])),P.a)},tt.VH=function(t,e,A){var P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S;if(!t||t.g.a.length==0||t.f.a.length==0)return null;for(L=d(l.Nbb,yt,2,t.g.a.length+t.f.a.length,6,1),b=d(l.Nbb,yt,2,t.g.a.length+t.f.a.length,6,1),i=d(l.Nbb,yt,2,t.g.a.length+t.f.a.length,6,1),o=0;o<t.g.a.length+t.f.a.length;o++){if(m=o<t.g.a.length?y.uj(t.g,o):y.uj(t.f,o-t.g.a.length),m.K&&o<t.g.a.length)for(P=0;P<m.q;P++)n.rn(m,P,ye,!1);if(r=new n.Kg(m),L[o]=n.og(r),L[o]==null)return null;b[o]=n.lg(r),i[o]=n.kg(r,e)}for(w=new T.Kjb,D=new T.Kjb,g=new T.Kjb,Q=0;Q<t.g.a.length;Q++){if(s=Q,A)for(B=\"\",s=-1,h=0;h<t.g.a.length;h++)T.Vib(B,L[h])<0&&(B=L[h],s=h);Q>0&&(w.a+=\" \",g.a+=\" \",D.a+=\" \"),T.Ijb(w,L[s]),T.Ijb(g,b[s]),T.Ijb(D,i[s]),L[s]=\"\"}for(w.a+=\"!\",g.a+=\" \",D.a+=\" \",u=t.g.a.length;u<t.g.a.length+t.f.a.length;u++){if(s=u,A)for(B=\"\",s=-1,h=t.g.a.length;h<t.g.a.length+t.f.a.length;h++)T.Vib(B,L[h])<0&&(B=L[h],s=h);u>t.g.a.length&&(w.a+=\" \",g.a+=\" \",D.a+=\" \"),T.Ijb(w,L[s]),T.Ijb(g,b[s]),T.Ijb(D,i[s]),L[s]=\"\"}return S=d(l.Nbb,yt,2,5,6,1),S[0]=w.a,c.Szb(g.a).length>t.g.a.length+t.f.a.length-1&&(S[1]=g.a),c.Szb(D.a).length>t.g.a.length+t.f.a.length-1&&(S[2]=D.a),t.b&&(S[3]=n.bk(t.b)),t.a.a.length!=0&&(S[4]=tt.WH(t,e)),S},tt.WH=function(t,e){var A,P,r;for(r=new T.Kjb,P=0;P<t.a.a.length;P++)c.Szb(r.a).length!=0&&(r.a+=\"+\"),A=new n.Kg(y.uj(t.a,P)),T.Ijb(r,n.og(A)),e&&(r.a+=\" \",T.Ijb(r,n.kg(A,!0)));return r.a},tt.XH=function(t,e,A,P,r){var i,D,u,o;if((e.u[A]&3)!=0&&(e.u[A]&4)==0&&S1(Z(e.B[A],ye),0)&&(u=k.Math.abs(e.w[A]),u!=0)){for(D=0;D<t.c.g.a.length;D++)for(i=tt.oH(t.c,D),o=0;o<i.f;o++)if(k.Math.abs(i.w[o])==u)return!!(e.j[A]==P.j[r]||jt(Z(i.B[o],l0),0)||(i.u[o]&U1)>>18!=(e.u[A]&U1)>>18)}return!1},tt.YH=function(t,e,A,P){var r,i,D,u,o,Q,L,w,s,h;for(s=d(l.Z6,H,6,t.f,15,1),h=tt._H(t,e,s),D=!1,i=!1,w=new y.Jj,r=0;r<h;r++)n.um(t,s[r])&&(Q=n.pw(t,s[r],P),(Q==1||Q==2)&&(u=n.Il(A,P[s[r]]),(u==1||u==2)&&(Q==u?D=!0:i=!0)),o=d(l.Z6,H,6,2,15,1),o[0]=s[r],o[1]=Q,c.izb(w.a,o));if(!D||!i)for(L=new y.rqb(w);L.a<L.c.a.length;)Q=y.qqb(L),o=Q[1],(o==1||o==2)&&i&&(o=o==1?2:1),n.qn(A,P[Q[0]],o,!0)},tt.ZH=function(t){var e,A,P,r,i,D,u,o,Q,L,w;if(t.n==null){if(t.b)for(P=t.j+1,t.p=d(l.Z6,T0,28,t.o.length,0,3),i=0;i<t.o.length;i++){for(t.p[i]=d(l.Z6,M1,7,t.g[i].a.length,0,2),u=0;u<t.g[i].a.length;u++)t.p[i][u]=tt.dI(t,i,y.uj(t.g[i],u),P);for(P+=t.o[i].f,r=tt.oH(t.c,i),e=0;e<r.f;e++)jt(Z(r.B[e],P0),0)||--P}if(t.n=w1(l.$7,[T0,xe],[75,25],0,[t.q,t.c.f.a.length],2),t.d=w1(l.Nbb,[T0,yt],[13,2],6,[t.q,t.c.f.a.length],2),t.e=d(l.teb,wt,6,t.q,16,1),w=new n.Yv,L=new T.Kjb,D=0,A=0,t.q!=0){o=d(l.Z6,H,6,t.o.length,15,1);do{for(Q=c.Szb(L.a).length,0<Q?L.a=T.qjb(L.a,0,0):0>Q&&(L.a+=T.wjb(d(l.W6,e0,6,-Q,15,1))),i=0;i<t.c.f.a.length;i++)$1(t.n[D],i,tt.aI(t,t.g,o,i)),t.d[D][i]=n.og(new n.Kg(t.n[D][i])),T.Ijb(L,t.d[D][i]);t.e[D]=n.Wv(w,L.a)==-1,(!t.t||!t.e[D])&&++A,++D}while(tt.gI(t,o)&&A<t.i)}}},tt._H=function(t,e,A){var P,r,i,D,u,o;for(u=d(l.teb,wt,6,t.f,16,1),A[0]=e,o=1,u[e]=!0,i=0;i<o;i++)for(D=0;D<n.Wo(t,A[i]);D++)r=n.Xo(t,A[i],D),((t.F[r]&64)!=0||n.am(t,r)==2||n.Rp(t,r))&&(P=n.Vo(t,A[i],D),u[P]||(A[o++]=P,u[P]=!0));return o},tt.aI=function(t,e,A,P){var r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S,p,M,z,q,x,J,E,N,ft,Lt,ot,st,ut,rt,Ut,ht,it,bt,ct,$t,Ft,Rt,Et,Nt,It,vt,kt,L1,f1,St,Xt,k1,qt,P1,E1,y1,o1,I1,O1,F0,Z1,l1,f0,w0,d0,Ce,be,te,ee,p0,Re,O0,C0;for(J=tt.nH(t.c,P),l1=new n.sw,g=0,B=0,O0=null,it=0;it<t.o.length;it++){for(E=tt.oH(t.c,it),n.aw(t.o[it],1),y1=y.uj(e[it],A[it]),E1=d(l.Z6,H,6,t.o[it].f,15,1),p=d(l.teb,wt,6,t.o[it].f,16,1),M=d(l.teb,wt,6,t.o[it].g,16,1),Nt=0;Nt<E.f;Nt++)if(y1[Nt]!=-1)if(k.Math.abs(E.w[Nt])==0){for(z=y1[Nt],p[z]=!0,k1=0;k1<n.Wo(t.o[it],z);k1++)M[n.Xo(t.o[it],z,k1)]=!0;for(Xt=n.Ho(t.o[it],z);Xt<n.Io(t.o[it],z);Xt++)M[n.Xo(t.o[it],z,Xt)]=!0}else E1[y1[Nt]]=k.Math.abs(E.w[Nt]);for(It=0;It<E.g;It++)if(w=E.D[0][It],s=E.D[1][It],k.Math.abs(E.w[w])!=0&&k.Math.abs(E.w[s])!=0&&(u=y1[w],o=y1[s],u!=-1&&o!=-1)){for(Xt=0;Xt<t.o[it].g;Xt++)if(n.Ul(t.o[it],0,Xt)==u&&n.Ul(t.o[it],1,Xt)==o||n.Ul(t.o[it],0,Xt)==o&&n.Ul(t.o[it],1,Xt)==u){M[Xt]=!0;break}}for(O1=d(l.Z6,H,6,t.o[it].f,15,1),vt=0;vt<t.o[it].f;vt++)if(!p[vt]&&(O1[vt]=n.hl(t.o[it],l1,vt,g,B),t.b&&n.nn(l1,O1[vt],t.p[it][A[it]][vt],!1),E1[vt]!=0)){for(n.nn(l1,O1[vt],E1[vt],!1),Xt=0;Xt<J.f;Xt++)if(k.Math.abs(J.w[Xt])==E1[vt]){if(n.en(l1,O1[vt],J.s[Xt]),n.sn(l1,O1[vt],J.u[Xt]&48),t.f[P][Xt])if(Z1=n.Il(t.o[it],vt),w0=Z(J.B[Xt],ye),et(w0,0)==0)n.qn(l1,O1[vt],3,!1);else if(et(w0,ye)==0)!O0&&(O0=new y.Jj),y.pj(O0,T.pib(O1[vt]));else if(Z1==1||Z1==2){for(ct=et(w0,BA)==0,qt=0;qt<n.Wo(t.o[it],vt);qt++)if(h=n.Vo(t.o[it],vt,qt),p[h])for(P1=0;P1<n.Wo(t.o[it],vt);P1++)F0=n.Vo(t.o[it],vt,P1),!p[F0]&&F0>h&&(ct=!ct);ct&&(Z1=Z1==1?2:1),n.qn(l1,O1[vt],Z1,!1)}else n.qn(l1,O1[vt],0,!1);break}}for(kt=0;kt<t.o[it].g;kt++)M[kt]||n.jl(t.o[it],l1,kt,g,B,O1,!0);g=n.$m(l1,1),B=n.$m(l1,2)}for(I1=d(l.Z6,H,6,J.f,15,1),L1=0;L1<J.f;L1++)if(E1=k.Math.abs(J.w[L1]),E1==0)I1[L1]=n.hl(J,l1,L1,g,B);else for(Xt=0;Xt<l1.q;Xt++)if(k.Math.abs(l1.w[Xt])==E1){I1[L1]=Xt;break}if(t.r)for(Nt=0;Nt<J.f;Nt++)n.on(l1,I1[Nt],!0),n.vn(l1,I1[Nt],J.J[Nt].a),n.wn(l1,I1[Nt],J.J[Nt].b);for(N=0;N<J.g;N++)if((J.G[N]&Qe)==0&&(f0=n.il(J,l1,N,g,B,I1[J.D[0][N]],I1[J.D[1][N]],!1),d0=J.G[N]&31,d0!=0))for(x=!1,n.Hn(l1,f0,31,!1),ft=n.Gl(J,J.D[0][N]),Lt=n.Gl(J,J.D[1][N]),ht=0;!x&&ht<t.c.g.a.length;ht++)for(E=tt.oH(t.c,ht),ut=0;!x&&ut<E.g;ut++)ot=E.D[0][ut],st=E.D[1][ut],rt=k.Math.abs(E.w[ot]),Ut=k.Math.abs(E.w[st]),rt!=0&&Ut!=0&&(rt==ft&&Ut==Lt||rt==Lt&&Ut==ft)&&(x=!0,C0=E.G[ut]&31,C0!=0&&(y1=y.uj(e[ht],A[ht]),be=y1[ot],te=y1[st],ee=n.To(t.o[ht],be,te),Re=n.dm(t.o[ht],ee),p0=n.am(t.o[ht],ee),C0&=7,d0&=7,C0==3&&d0==6?(l1.H[f0]=p0<=1?2:4,l1.T=0):C0==6&&d0==3?(l1.H[f0]=p0==3?2:1,l1.T=0):(l1.H[f0]=Re,l1.T=0)));for(n.aw(l1,1),m=!1,f1=0;f1<J.f;f1++)k.Math.abs(J.w[f1])==0?(Z1=n.pw(J,f1,I1),n.qn(l1,I1[f1],Z1,!1)):t.f[P][f1]&&tt.XH(t,J,f1,l1,I1[f1])&&(Z1=n.pw(J,f1,I1),n.qn(l1,I1[f1],Z1,!1),(Z1==1||Z1==2)&&(S=(J.u[f1]&U1)>>18,b=(J.u[f1]&U1)>>18!=1&&(J.u[f1]&U1)>>18!=2?-1:(J.u[f1]&j0)>>20,S==1?b+=g:S==2&&(b+=B),n.kn(l1,I1[f1],S,b),m=!0));for(m&&(g=n.$m(l1,1),B=n.$m(l1,2)),Ce=d(l.teb,wt,6,J.q,16,1),St=0;St<J.f;St++)t.f[P][St]&&!Ce[St]&&(J.u[St]&4)!=0&&S1(Z(J.B[St],ye),0)&&J.j[St]==n.Wo(l1,I1[St])&&tt.YH(J,St,l1,I1);for(bt=d(l.teb,wt,6,l1.q,16,1),Ft=I1,Rt=0,Et=Ft.length;Rt<Et;++Rt)$t=Ft[Rt],bt[$t]=!0;for(q=!0;q;)for(q=!1,L=0;L<l1.r;L++)u=l1.D[0][L],o=l1.D[1][L],bt[u]&&!bt[o]?(bt[o]=!0,q=!0):bt[o]&&!bt[u]&&(bt[u]=!0,q=!0);for(D=0;D<l1.q;D++)n.tn(l1,D,!bt[D]);if(n.sl(l1),!t.b)for(Q=0;Q<l1.q;Q++)l1.w[Q]=0;if(n.Ee(new n.Se(l1),null,!1),l1.T|=8,o1=2|(t.r?8:0),X.iA(new X.BA(o1),l1),O0)for(n.aw(l1,15),i=new y.rqb(O0);i.a<i.c.a.length;)r=y.qqb(i).a,(l1.u[r]&H0)!=0&&(n.qn(l1,r,1,!1),n.kn(l1,r,1,g++));return l1},tt.bI=function(t){var e,A;if(e=t.q,t.t)for(A=0;A<t.q;A++)t.e[A]&&--e;return t.i>0&&e>t.i&&(e=t.i),e},tt.cI=function(t){var e,A,P;for(tt.ZH(t),P=d(l.$7,T0,75,tt.bI(t),0,2),e=0,A=0;A<t.q&&e<t.i;A++)(!t.t||!t.e[A])&&(P[e++]=t.n[A]);return P},tt.dI=function(t,e,A,P){var r,i,D,u;for(u=d(l.Z6,H,6,t.o[e].f,15,1),y.Jqb(u,u.length,-1),i=tt.oH(t.c,e),r=0;r<i.f;r++)A[r]!=-1&&(u[A[r]]=k.Math.abs(i.w[r]));for(D=0;D<u.length;D++)u[D]==-1&&(u[D]=P++);return u},tt.eI=function(t,e){var A,P,r,i;for(A=d(l.Z6,H,6,t.j[e]-n.Zo(t,e),15,1),i=0,r=0;r<t.j[e];r++)P=t.i[e][r],jt(Z(t.B[P],P0),0)||(A[i++]=t.C[P]);return c.lzb(A,c.Szb(y0(y.lrb.prototype.jd,y.lrb,[]))),A},tt.fI=function(t,e){var A,P,r,i;for(i=d(l.Z6,H,6,t.j[e]-n.Zo(t,e),15,1),r=0,P=0;P<t.j[e];P++)A=t.i[e][P],jt(Z(t.B[A],P0),0)||(i[r++]=k.Math.abs(t.w[A]));return c.lzb(i,c.Szb(y0(y.lrb.prototype.jd,y.lrb,[]))),i},tt.gI=function(t,e){var A;for(A=0;A<e.length;A++){if(e[A]<t.g[A].a.length-1)return++e[A],!0;e[A]=0}return!1},tt.hI=function(t,e){var A,P,r,i,D,u,o,Q,L,w;for(t.j=0,r=0;r<e.g.a.length+e.f.a.length;r++)for(o=tt.kH(t.c,r),A=0;A<o.f;A++)jt(Z(o.B[A],P0),0)?o.w[A]=0:t.j<k.Math.abs(o.w[A])&&(t.j=k.Math.abs(o.w[A]));for(w=d(l.teb,wt,6,t.j+1,16,1),i=0;i<e.g.a.length;i++)for(L=y.uj(e.g,i),A=0;A<L.f;A++)u=k.Math.abs(L.w[A]),u!=0&&(w[u]=!0);for(D=0;D<e.f.a.length;D++)for(Q=y.uj(e.f,D),A=0;A<Q.f;A++)u=k.Math.abs(Q.w[A]),u!=0&&(w[u]?w[u]=!1:Q.w[A]=0);for(P=0;P<e.g.a.length;P++)for(L=y.uj(e.g,P),A=0;A<L.f;A++)u=k.Math.abs(L.w[A]),u!=0&&w[u]&&(L.w[A]=0)},tt.iI=function(t,e,A){var P,r,i,D,u,o,Q,L;if(t.o[e]=A,t.n=null,r=tt.oH(t.c,e),n.Zt(t.s,r,t.o[e]),o=8+(t.a?0:1),n.Lt(t.s,5,o)==0)return t.g[e]=new y.Jj,t.q=0,!1;for(t.g[e]=t.s.F,D=t.g[e].a.length-1;D>=0;D--)for(Q=y.uj(t.g[e],D),u=0;u<Q.length;u++)if(Q[u]!=-1&&(P=0,t.a&&r.s[u]==0&&n.xl(t.o[e],Q[u])!=0&&(L=n.lm(t.o[e],Q[u]),P=n.im(t.o[e],Q[u],L)),t.k[e][u]>0&&t.k[e][u]>n.fp(t.o[e],Q[u])-P)){y.Bj(t.g[e],D);break}for(t.q=1,i=0;i<t.o.length;i++)t.q*=t.g[i]?t.g[i].a.length:0;return!0},tt.jI=function(t){var e,A,P,r,i,D,u,o,Q,L,w,s,h;for(this.r=!0,this.b=!1,this.t=!0,this.a=!1,this.i=Mt,this.c=t,this.o=d(l.$7,xe,25,t.g.a.length,0,1),P=0;P<t.g.a.length;P++)n.Kn(y.uj(t.g,P),!0),n.aw(y.uj(t.g,P),15);for(r=0;r<t.f.a.length;r++)n.aw(y.uj(t.f,r),15);for(tt.hI(this,t),this.k=d(l.Z6,M1,7,t.g.a.length,0,2),i=0;i<t.g.a.length;i++)for(w=y.uj(t.g,i),this.k[i]=d(l.Z6,H,6,w.f,15,1),D=0;D<w.f;D++)if(Q=k.Math.abs(w.w[D]),Q!=0)for(u=0;u<t.f.a.length;u++)for(L=y.uj(t.f,u),o=0;o<L.f;o++)k.Math.abs(L.w[o])==Q&&(e=(h=n.lm(w,D),h+n.jm(w,D,h,w.C[D])-n.rp(w,D)-(s=n.lm(L,o),s+n.jm(L,o,s,L.C[o])-n.rp(L,o))),this.k[i][D]=k.Math.max(e,0));for(this.f=d(l.teb,b1,12,t.f.a.length,0,2),A=0;A<t.f.a.length;A++)for(L=y.uj(t.f,A),this.f[A]=d(l.teb,wt,6,L.f,16,1),D=0;D<L.f;D++)if(Q=k.Math.abs(L.w[D]),Q!=0)for(u=0;u<t.g.a.length;u++)for(w=y.uj(t.g,u),o=0;o<w.f;o++)k.Math.abs(w.w[o])==Q&&(lt.O3(tt.fI(L,D),tt.fI(w,o))!=0||lt.O3(tt.eI(L,D),tt.eI(w,o))!=0)&&(this.f[A][D]=!0);this.s=new n.eu,this.g=d(l.ucb,b1,21,this.o.length,0,1)},tt.kI=function(t){tt.jI.call(this,t)},G(214,1,{},tt.kI),U.a=!1,U.b=!1,U.i=0,U.j=0,U.q=0,U.r=!1,U.t=!1,l.r9=O(214),tt.lI=function(t,e,A){var P,r,i;for(n.aw(e,1),r=y.uj(t.a,A),P=0;P<t.d.d.a.length;P++)i=lt.V3(t.d,P),tt.oI(i,e,r);n.rl(e)},tt.mI=function(t,e){var A,P,r;if(t.f=e,n.Zt(t.e,t.c,t.f),n.Lt(t.e,4,8)==0)return t.a=null,0;for(t.a=t.e.F,A=t.a.a.length-1;A>=0;A--)for(r=y.uj(t.a,A),P=0;P<r.length;P++)if(r[P]!=-1&&t.b[P]>0&&t.b[P]>n.fp(t.f,r[P])){y.Bj(t.a,A);break}return t.a.a.length},tt.nI=function(t,e){var A,P,r,i,D,u,o,Q,L,w,s;for(n.aw(t,7),n.aw(e,7),this.c=t,this.d=new lt.Z3,P=0;P<t.g;P++)lt.T3(this.d,new tt.rI(t,P));for(A=0;A<e.g;A++)L=new tt.rI(e,A),o=(u=lt.W3(this.d,L),u<0?-1:u),o==-1?(L.i=(tt.AI(),tt.wI),lt.T3(this.d,L)):tt.qI(lt.V3(this.d,o),L);for(D=this.d.d.a.length-1;D>=0;D--)L=lt.V3(this.d,D),L.i!=(tt.AI(),tt.zI)?lt.V3(this.d,D).i==tt.xI&&lt.X3(this.d,D):L.i=tt.yI;for(this.b=d(l.Z6,H,6,t.f,15,1),i=0;i<t.f;i++)for(Q=0;Q<e.f;Q++)if(k.Math.abs(e.w[Q])==k.Math.abs(t.w[i])){r=(s=n.lm(t,i),s+n.jm(t,i,s,t.C[i])-n.rp(t,i)-(w=n.lm(e,Q),w+n.jm(e,Q,w,e.C[Q])-n.rp(e,Q))),this.b[i]=r>0?r:0;break}this.e=new n.eu},G(286,1,{},tt.nI),l.u9=O(286),tt.oI=function(t,e,A){var P,r,i,D;if(P=A[t.a],r=A[t.b],t.i==(tt.AI(),tt.wI))return n.Tk(e,P,r,t.g),!0;if(i=n.To(e,P,r),t.i==tt.uI)return n.In(e,i,t.g),!0;if(t.i==tt.vI){if(D=n.am(e,i)+t.f,D>=0&&D<=3)return n.In(e,i,(n.Ok(),D==0?16:D==1?1:D==2?386:D==3?4:D==4?32:64)),!0}else if(t.i==tt.yI)return e.H[i]=512,!0;return!1},tt.pI=function(t,e){return t.d!=e.d?t.d<e.d?-1:1:t.e!=e.e?t.e<e.e?-1:1:0},tt.qI=function(t,e){var A,P;t.c==e.c?t.i=(tt.AI(),tt.xI):Pn(e.c)==1?(t.g=e.c==1?1:e.c==2?386:e.c==4?4:e.c==16?16:8,t.i=(tt.AI(),tt.uI)):(A=(t.c&16)!=0?0:(t.c&1)!=0?1:(t.c&2)!=0?2:3,P=(e.c&16)!=0?0:(e.c&1)!=0?1:(e.c&2)!=0?2:3,P==A?t.i=(tt.AI(),tt.xI):(t.f=P-A,t.i=(tt.AI(),tt.vI)))},tt.rI=function(t,e){var A,P,r;this.a=t.D[0][e],this.b=t.D[1][e],P=n.Gl(t,this.a),r=n.Gl(t,this.b),P<r?(this.d=P,this.e=r):(this.d=r,this.e=P),this.c=t.G[e]&31,A=t.H[e]&127,A==16?this.c|=16:A==2?this.c|=2:A==4?this.c|=4:this.c|=1,this.i=(tt.AI(),tt.zI)},G(181,1,{181:1,32:1},tt.rI),U.Rb=function(t){return tt.pI(this,t)},U.lb=function(t){return this.d==t.d&&this.e==t.e},U.a=0,U.b=0,U.c=0,U.d=0,U.e=0,U.f=0,U.g=0,l.t9=O(181),tt.AI=function(){tt.AI=u1,tt.wI=new tt.BI(\"CREATE\",0),tt.vI=new tt.BI(\"CHANGE_DIF\",1),tt.uI=new tt.BI(\"CHANGE_ABS\",2),tt.yI=new tt.BI(\"REMOVE\",3),tt.xI=new tt.BI(\"NO_CHANGE\",4),tt.zI=new tt.BI(\"UNKNOWN\",5)},tt.BI=function(t,e){vA.call(this,t,e)},tt.CI=function(){return tt.AI(),v(F(l.s9,1),L0,99,0,[tt.wI,tt.vI,tt.uI,tt.yI,tt.xI,tt.zI])},G(99,56,{99:1,4:1,32:1,56:1},tt.BI),l.s9=Oe(99,tt.CI),$.DI=function(t,e,A){var P,r,i,D,u,o,Q,L,w,s,h,b,g,B;for(n.aw(e,1),b=t.k,g=0,B=b.length;g<B;++g)h=b[g],Q=A[h.a],L=A[h.b],w=n.To(e,Q,L),w==-1?n.Tk(e,Q,L,h.e):h.e==-1?e.H[w]=512:h.e!=-2&&n.In(e,w,h.e);if(u=n.rl(e),t.a.length!=0)for(n.aw(e,7),r=t.a,i=0,D=r.length;i<D;++i)P=r[i],o=u==null?A[P]:u[A[P]],s=e.u[o]&3,n.qn(e,o,s==1?2:1,!1),n.sq(e,o);return u},$.EI=function(t){var e,A,P,r,i;for(i=new $.aJ(t.g,t.f),r=d(l.Z6,H,6,t.g.q,15,1),A=0;A<t.g.q;A++)r[A]=n.Gl(t.g,A);for(P=d(l.Z6,H,6,t.f.q,15,1),e=0;e<t.f.q;e++)P[e]=n.Gl(t.f,e);return-$._I(i,$.UI(i,r,P))*.25},$.FI=function(t,e){var A,P,r,i,D;for(t.i=d(l.Z6,H,6,t.g.f,15,1),P=0;P<t.f.f;P++)n.Gl(t.f,P)!=0&&(t.i[e[n.Gl(t.f,P)]]=n.lw(t.f,P));if(D=d(l.Z6,H,6,t.g.q,15,1),i=n.dp(t.g,D,!1,!1),i>1)for(r=d(l.Z6,H,6,i,15,1),A=0;A<t.g.f;A++)t.i[A]|=r[D[A]]++<<5},$.GI=function(t,e,A,P,r){var i,D,u,o;if(t.j.length==0||t.n.a.length==0)return null;for(o=d(l.teb,b1,12,e,0,2),u=d(l.teb,wt,6,P,16,1),D=0;D<r.length;D++)r[D]!=-1&&n.Gl(t.f,D)==0&&(u[r[D]]=!0);for(i=0;i<A.length;i++)A[i]!=-1&&n.Gl(t.g,i)==0&&(o[A[i]]=u);return o},$.HI=function(t,e,A){var P,r,i,D,u,o,Q;if(o=!1,n.Mo(t.g,e)==0)for(u=1;u<n.Wo(t.g,e);u++)for(Q=0;Q<u;Q++)P=n.Vo(t.g,e,u),r=n.Vo(t.g,e,Q),i=n.Gl(t.g,P),D=n.Gl(t.g,r),A[i]>A[D]^P>r&&(o=!o);return o},$.II=function(t,e){var A,P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S,p,M,z,q,x,J,E;for(this.d=t,E=tt.TH(e,!1,null),(E.g.a.length!=1||E.f.a.length!=1)&&T.Pjb(),E.c||tt.fH(E)||T.Pjb(),this.g=y.uj(E.g,0),this.f=y.uj(E.f,0),n.aw(this.g,1),n.aw(this.f,63),Q=new lt.Z3,this.c=d(l.Z6,H,6,this.g.f+1,15,1),this.c[0]=-1,P=0;P<this.g.f;P++)n.Gl(this.g,P)!=0&&(this.c[n.Gl(this.g,P)]=P);for($.FI(this,this.c),q=d(l.teb,wt,6,this.g.g,16,1),m=0;m<this.f.g;m++)g=n.Ul(this.f,0,m),B=n.Ul(this.f,1,m),s=n.Gl(this.f,g),h=n.Gl(this.f,B),s!=0&&h!=0&&(r=this.c[s],i=this.c[h],S=n.em(this.f,m),z=n.To(this.g,r,i),z==-1?lt.T3(Q,new $.KI(r,i,s,h,S)):((n.cm(this.g,z)&31)==0&&(x=n.em(this.g,z),x!=S&&lt.T3(Q,new $.KI(r,i,s,h,S))),q[z]=!0));for(o=0;o<this.g.g;o++)q[o]||(r=n.Ul(this.g,0,o),i=n.Ul(this.g,1,o),!n.Fm(this.g,r)&&!n.Fm(this.g,i)&&(s=n.Gl(this.g,r),h=n.Gl(this.g,i),(s!=0||h!=0)&&lt.T3(Q,new $.KI(r,i,s,h,-1))));for(this.k=lt.Y3(Q,d(l.v9,{463:1,4:1,5:1,11:1,8:1},146,0,0,1)),L=0,D=0;D<this.g.f;D++)n.Gl(this.g,D)==0&&!n.Fm(this.g,D)&&++L;for(this.j=d(l.Z6,H,6,L,15,1),L=0,u=0;u<this.g.f;u++)n.Gl(this.g,u)==0&&!n.Fm(this.g,u)&&(this.j[L++]=u);for(this.n=new y.Jj,w=d(l.teb,wt,6,this.f.f,16,1),A=0;A<this.f.f;A++)n.Gl(this.f,A)==0&&!n.Fm(this.f,A)&&!w[A]&&y.pj(this.n,new $.UJ(this.f,A,w));for(this.b=this.j.length==0&&this.n.a.length==0,this.a=d(l.Z6,H,6,0,15,1),b=0;b<this.f.f;b++)p=n.Il(this.f,b),(p==1||p==2)&&(M=this.c[n.Gl(this.f,b)],M!=-1&&(J=n.Il(this.g,M),$.HI(this,b,this.c)==(J==p)&&(this.a=y.zqb(this.a,this.a.length+1),this.a[this.a.length-1]=M)));this.e=$.EI(this)},G(198,1,{198:1},$.II),U.b=!1,U.e=0,l.x9=O(198),$.JI=function(t,e){return t.c<e.c?-1:t.c>e.c?1:t.d<e.d?-1:t.d>e.d?1:0},$.KI=function(t,e,A,P,r){A<P?(this.a=t,this.b=e,this.c=A,this.d=P):(this.a=e,this.b=t,this.c=P,this.d=A),this.e=r},G(146,1,{146:1,32:1},$.KI),U.Rb=function(t){return $.JI(this,t)},U.a=0,U.b=0,U.c=0,U.d=0,U.e=0,l.v9=O(146),$.OI=function(){$.OI=u1,$.MI=v(F(l.Nbb,2),T0,13,0,[v(F(l.Nbb,1),yt,2,6,[\"e\",\"daXJ@@PjyITuiX@`!dahJ@@SJYIMMfPB#IaLJfxP IaAhl[`#!BDpAl@AL@[@Be}aL@[@@ !B|Osp?QZR?O_}}zGze`@##\"]),v(F(l.Nbb,1),yt,2,6,[\"g\",\"gBa`@lde@XS@!gCA`@mDPOdku`#qbq qJt#!B[G|S_qgq !BjW}q]cga##\"]),v(F(l.Nbb,1),yt,2,6,[\"o\",\"gGQHDDqIUjdB!gGQHHDqAeMjhB#qbqk qfQ]#!B@AL@[@@S@Fp@Dp !BFQ{~_q|ZGvUSYp##\"]),v(F(l.Nbb,1),yt,2,6,[\"r\",\"gOQdEjHbAFQRBrtAaJ!gNQdEbHbABCTKPFDH#qbMwX qbM~X#!BNDm`ra?UjW~YBYX@ !Ba[zw?_x@?g~H?XO~##\"]),v(F(l.Nbb,1),yt,2,6,[\"s\",\"gOp`ATigujj`H!gOp`ATiVKjj`H#qnyS` qY~eP#!BTLtk^sE?BOs|]pc} !BbOvw?_y??g~H?[_}##\"]),v(F(l.Nbb,1),yt,2,6,[\"t\",\"gOP`@dcUZdB!gNp`@tiTMjj@`#q{ir` qkLrx#!Be`Bzr_wp?OC}|Osp !B?g~w@k_}m?vw@n[a##\"]),v(F(l.Nbb,1),yt,2,6,[\"u\",\"daXB`Hrn@HrPEILt`D!daXB`DJn@HRUMjV@H#IxVaLJ` IylJhPP#!B[G}l@OKyDpAl@AL@[@@ !B@Fp@DpAl@AN]?`Al@AL##\"]),v(F(l.Nbb,1),yt,2,6,[\"Sakurai\",\"gOQH@wAINvZ@pdcFe@x@!gOQH@wAIgJi@pdcFe@x@#qreKx qrLkx#!BDpAl@IknDw|S@Fp@ !Bb@JH?_x@b@JH?Ven##\"]),v(F(l.Nbb,1),yt,2,6,[\"Mitsunobu\",\"gFP`ATfRhdPp`}KEYg]d@!gFP`ATfRhd`pekL{l`#qrLk qZLn#!B@hc}b@C~@h`YM` !B@hc}b@C~@h`YM`##\"]),v(F(l.Nbb,1),yt,2,6,[\"Aldol-Addition\",\"gOQ@AdTAcS@[Q^crJTLES`DJsL?vH!gGQ@@dsuRAcJg@HUaX#qYEbp qYub#!BxOyBzLKg`dG~xG~{ !Bb@K~@Hc}FBIA@@##\"]),v(F(l.Nbb,1),yt,2,6,[\"Aldol-Condensation\",\"gOQ@AdTAcS@[Q^crJTLES`DJsL?vH!gFQ@@`rrpdlHHpipBEXf@#qYEbp q^aU#!B{ZRRqA?AQfyA@L_C !B}QFw@h`B_tnH_P##\"]),v(F(l.Nbb,1),yt,2,6,[\"Acetal-Aldol-Addition\",\"dmdB@@serQS@sJjfd@p`Xir\\\\@`j\\\\@aUJXK@!daxL@@[df[ZjT@qQdxACdxABjTqf@#qB@`OuX qBtM{#!B_]]}rHKWw?y}uy[~GJbBu{wWqG| !BfJK~TIa]fJJghg{`pP@##\"]),v(F(l.Nbb,1),yt,2,6,[\"Acetal-Aldol-Condensation\",\"dmdB@@serQS@sJjfd@p`Xir\\\\@`j\\\\@aUJXK@!gNp`CTjUiV@qQS`DJg@HUVXV@#qB@`OuX qqj{`#!B?[_}b@Jw_?{}m~[~[N@Bm?vwkN| !BfsK~yzPrw}m?rzQM##\"]),v(F(l.Nbb,1),yt,2,6,[\"Acetal-Aldol-Condensation-Cyclization\",\"dkLB@@ZURYUvUjljh@paHpr\\\\@`!didD@@yIfUXXHL@CFNS`D@#IXljNPY@@@ IXljIyA#!BbOw~_x`Bm?vH?[_}b@JH?_y?b@Jw?Xc} !BbOvH?Oy??`BH?Xa}?`C~_p##\"]),v(F(l.Nbb,1),yt,2,6,[\"Enolester-Cleavage\",\"gOQ`@fdscT`_Qp!gOQ`@cdTASS@P#q}Kr` q}cNP#!B@k]}mpC~@k]}mqdY !Bb@K~@Hc}BfzH@hc}##\"]),v(F(l.Nbb,1),yt,2,6,[\"propargylEnone\",\"gCa@@dmXFD@!gCa@@dkHD#qNT qLV#!BbOw~_?y? !B@AL@[@@S##\"]),v(F(l.Nbb,1),yt,2,6,[\"Arndt-Eistert\",\"daiDaJYBBHj^{HhAYMpAaA@!daiD`FzLBHPVsZl@p`@#IyHHZ[@ IzDGBi`#!B?`Bw?H`Bn]{~\\\\g?~@Ox !B@rzH?_y?b@JH?_n~bOt##\"]),v(F(l.Nbb,1),yt,2,6,[\"Curtius\",\"gO]IcVaDF[s{HhCIe@`!gN]HMWADHJfm`XP@#q~Jk` qytUX#!B@O{|b@Jw\\\\o{~_?x@ !Bj]y??g?~?[^G_hc}##\"]),v(F(l.Nbb,1),yt,2,6,[\"diazomethanHomologation\",\"gFU@lQioIIs\\\\AyH!gFU@CPdimXD#qbM^ qbqk#!B?X`BbFZN?`C~_p !B@AL@[@@Su[x@Dp##\"]),v(F(l.Nbb,1),yt,2,6,[bD,\"deD@@LdbEdSTu@FqHWSDda`JFChXIa`?tdKi@!deD@@Ldb`\\\\SUM@FqHPsDda`JF@XXIa`?tdHY@#qTEApX qQECf@#!BQzK~}ubbW`BEgcb]?a@gg[zO !BQzK~}ubbW`Ag{VVAQzJ~c?xP##\"]),v(F(l.Nbb,1),yt,2,6,[bD,\"deD@@LdbEdSTu@FqHWSDda`JFChXIa`?tdKi@!gC`@DiZDE@#qPDA@p qQf#!BmpK~_x`Bm?tAs[]}?`BH_[_| !B_vp@[G|S##\"]),v(F(l.Nbb,1),yt,2,6,[\"yne-Metathesis\",\"daX@@LdPLWWPAlRXwQIHXLa`ZFChXO}IL[`!daX@@LdPLWWPAlRXwQIHXLa`ZFChXO}IL[`#qT@q@ qt@Q@#!BZmoi@Fjo|SFe|IkGiU@ !BZmoi@Fjo|SFe|IkGiU@##\"]),v(F(l.Nbb,1),yt,2,6,[\"ene-yne-Metathesis\",\"dcd@@LdPLPLWSSPAlrXwKlVRFCHXFa`zFAXXMa`?udqnWP!dcT@@LdbbplTsTt@[MeMr{Ela`jFAhXNa`VFCXXO}[J[et#qe@N@S@ qeHP@s@#!B?g?~@Oy?^gG}bOvw?H`E@PJw@hc}mp !B?`BH?[_}mpJH@oy??`AuC`Jw@hc}mp##\"]),v(F(l.Nbb,1),yt,2,6,[\"Alkyne-Cyclisation\",\"gG`@DcO|CFAFC`@!gFp@DiTt@@CFAFC`@#qi\\\\V qiSt#!B_y[qA`Biu^zV@@ !B?g~w@k_}m?vw@`##\"]),v(F(l.Nbb,1),yt,2,6,[\"Elimination-Claisen\",\"gNp`AldTQji@~a`!gGQ@@djmRA@#qtHUX qtSi#!Bm?vH?[\\\\B?g~H@hc} !B@AL@[@@S@Fp@Dp##\"]),v(F(l.Nbb,1),yt,2,6,[\"imineFormationAzaCope\",\"daZH@LAIMUjd@pRL@!daZH@HAAn]jd@p`@#IGfaLJ` IFDzfK@#!BDpAl@IkqDpAl@AL@[@@ !BFaFw@h`BbOw~@H`BbOt##\"]),v(F(l.Nbb,1),yt,2,6,[\"didehydroCopeWithAromatisation\",\"gNp@Di]ejDcjcr|wK`!gOp@DjWkB@@H#qrLkx q\\\\oQp#!B?g~H?K_}bGvH?H`B !Bm?w~@Hc}mpJw@ox@##\"]),v(F(l.Nbb,1),yt,2,6,[\"symAldolNitrogenRing\",\"dovJ@GBfttf\\\\v\\\\qjViPCADGbDodnGp!doNJ@JCSmtefWTCaYjje@H#IlZXi]]yL~C IqMVCzaIim?#!BQtl_riY?Qtl_rfuvNCQ`uZd@NCQ`uVVu}?sA]P !B?`BH@ox@bGvH@k\\\\Bb@JH_Xa}b@K~_rYltUr|W@##\"]),v(F(l.Nbb,1),yt,2,6,[\"Diels-Alder\",\"gFP@LdPLjA@!gFp@DiTujhB#qiZf qMSf#!B?_C}}?spIPFV@@ !B?g~w@k_}m?vw@`##\"]),v(F(l.Nbb,1),yt,2,6,[\"Claisen-RA\",\"gGQ@@eKtRA@!gGQ@@djqRA@#qMsT qM\\\\V#!B_qL@Dw}l@Fp@Dp !B@AL@[@@S@Fp@Dp##\"]),v(F(l.Nbb,1),yt,2,6,[\"Cope\",\"gGQ@DeZmRAbhcApIF@P@!gGQ@HeZmRAbhc@HIFC`@#qkNT qi\\\\V#!B_vp@[@@S@Fp@Dp !B_vp@[@@S@Fp@Dp##\"]),v(F(l.Nbb,1),yt,2,6,[\"OxyCope\",\"gNq@@dr}SHFD@!gNq@@djkUHD#qynZ` qykbp#!B?g~w?Xc}mpJH@hc} !B@Fp@DpAl@AL@[@@S##\"]),v(F(l.Nbb,1),yt,2,6,[\"Vinylcyclopropane\",\"gKP@DklVj@`!gKP@Di\\\\Vj@`#qaVh qTqh#!Bm?vH?PC~?K\\\\ !B?g|_Fa}eTv\\\\##\"]),v(F(l.Nbb,1),yt,2,6,[\"Furan-CH2-OH-Rearrangement\",\"gOp`@tiguif`H!gOp`@tfWMZZ`H#qZna@ qZtM@#!BTLtk^sE?BOs|]pc} !BBOuPtdy?UGm@V]Ho##\"]),v(F(l.Nbb,1),yt,2,6,[\"rearrangement1032\",\"gOp`ATieMji`H!gOp`ATeekZj`H#qaSnx qa]~P#!BTLtk^pc|LW?|]pc} !BBOpH?UCRSg}T^tAY##\"]),v(F(l.Nbb,1),yt,2,6,[\"Pinacol-Rearrangement\",\"gNp`ATffjj@pPh!gOP`@tfXZhCAA`#qb^ix qb^oH#!B@k^H@k_}@k_~@Hc} !BbOvH@oy??`BH?PFf##\"]),v(F(l.Nbb,1),yt,2,6,[\"1,3-WaterEliminationWith12Shift\",\"gJQ@@dmU@_SP!gKa@@`vtA}A@#qiTp qjap#!BbOvH@ox@bOt !BJdE?[@Al@AL##\"]),v(F(l.Nbb,1),yt,2,6,[\"Epoxydation\",\"gB``ADcdCB@!gC``AhtUPGtt@#qqb qtQ#!BjW}Y\\\\YX@ !B?g~w?^Va##\"]),v(F(l.Nbb,1),yt,2,6,[\"oxydativePropargylAmine13Shift\",\"gKi@HDEZpLHOQP!gJY@BDeVXB#qMr` qNTh#!BqiXTy{U?mW| !B@Fp@DpAl@AL##\"]),v(F(l.Nbb,1),yt,2,6,[\"Baeyer-Villiger\",\"gFQ`@[dTAZ`LHP!gFQ`@jdrMPGtl@#qrak qrlK#!B_?{}mwvHs^FVP@ !BbOvH@oy?bOuQzP##\"]),v(F(l.Nbb,1),yt,2,6,[cD,\"gGa@@dYs@XHFJIBDQbUeHPbLRl@!gFQ@@eNUPFJIBDQbUeHPbLRls@`#qbq] qfQk#!B@AOIDW}l@tD@Dp !B_qL@Dw}l_qNcDP##\"]),v(F(l.Nbb,1),yt,2,6,[cD,\"gBa@@d\\\\`XP@!gJQ@@eOU@XpdHQFIVY`P#qbq qfQ@#!B@AOIDW}l !B_qL@Dw}l_qL##\"]),v(F(l.Nbb,1),yt,2,6,[\"Hantzsch Thiazol\",\"daZHPDp@chaIMefh@ppDzTD~hYmC^bhbcPp]dQbUg~pp!gKXHL@aJWFe`H#qNPe@ qNj`#!BvuK[KUxv_yS[k_zhvuH !BTqa`FbpX?`@##\"]),v(F(l.Nbb,1),yt,2,6,[\"Oxadiazole\",\"gOX`BEdTASW@XQ@!gOu@HPeKNMKTA@#qrDMX qpULX#!BmpK~@K_}Mlx@?`C~ !BZ?`C}v|m_rYR[z?\\\\##\"]),v(F(l.Nbb,1),yt,2,6,[\"Imidazole\",\"dmeHPNg@qJqLbTtATijZ@LLJnuDmhWtSDXUFC`?rIoTAP!gOt@ATieuej`H#qDPpM_@ q~ZM`#!BqvKGg_yOqvKGg_xphrGkLcz@_sD !BTMHkACD@BOw|B@QT##\"]),v(F(l.Nbb,1),yt,2,6,[\"1,2,3-Triazole\",\"gB`HAbIGXFDWiM@!gF|@ADeKXmT`P#QIp Q@v#!B_vpU?g}l !BTv]`YRqg?g|XK@##\"]),v(F(l.Nbb,1),yt,2,6,[\"1,2,4-Triazole\",\"deFD@NALbbfASUW@FD]YJZLUCAVJ}?nES@!gO|@ABeKNLuRA@#qDB@FM q@LuP#!BY?r~@F_]jDJW`j`}Iaxx[UC] !BTv]@IPqgog|hCBT_##\"])])},$.QI=function(t,e){var A,P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S,p,M,z,q,x,J,E,N,ft,Lt,ot;for($.TI(),o=new $.jK,$.gK(o,e),m=o.j,s=o.d,n.aw(m,1),n.aw(s,1),z=new n.eu,B=new n.eu,n.$t(z,m),n.$t(B,s),t.c=n1,D=null,i=null,r=0,N=0,t.a=new T.Kjb,A=new n.sw,x=$.NI,J=0,E=x.length;J<E&&(q=x[J],N++!=t.b);++J)if(n.Xt(z,q.g),n.Yt(z,q.i),n.Lt(z,6,8)!=0&&(n.Xt(B,q.f),n.Lt(B,2,8)!=0&&z.F.a.length<=512)){for(u=-1e4,g=y.uj(B.F,0),M=new y.rqb(z.F);M.a<M.c.a.length&&(p=y.qqb(M),!(N++>=t.b));)n.kl(m,A),Q=$.DI(q,A,p),ot=$.GI(q,m.f,p,s.f,g),n.aw(A,1),P=d(l.Z6,H,6,A.f,15,1),b=d(l.Z6,H,6,s.f,15,1),$.dK(o,A,s,P,b,ot),Lt=o.q-q.e,u<Lt&&(u=Lt),t.c<Lt&&(t.c=Lt,D=$.RI(P,b,Q,m.f),i=b,r=o.b);w=o.a<=1?\"\":gD+o.a+\")\",T.Ijb(t.a,q.d+(q.b?\"_S\":q.j.length==0?\"_L\":q.n.a.length==0?\"_I\":\"_U\")+(lt.K3(),lt.L3(u,5))+w+N1)}S=d(l.Z6,H,6,m.f,15,1),h=d(l.Z6,H,6,s.f,15,1),$.dK(o,m,s,S,h,null),ft=o.q,t.c<=ft&&(t.c=ft,D=S,i=h,r=o.b),L=o.a<=1?\"\":gD+o.a+\")\",T.Ijb(t.a,(lt.K3(),\"no rule:\"+lt.L3(ft,5)+L+N1)),t.c!=n1&&$.XJ(o,e,D,i,r)},$.RI=function(t,e,A,P){var r,i,D,u,o;for(D=d(l.teb,wt,6,t.length+1,16,1),o=d(l.Z6,H,6,P,15,1),u=0;u<P;u++)r=A==null?u:A[u],r!=-1&&(o[u]=t[r],D[o[u]]=!0);for(i=0;i<e.length;i++)D[e[i]]||(e[i]=0);return o},$.SI=function(){$.OI(),this.b=Mt},$.TI=function(){var t,e;if($.NI==null&&$.NI==null){for(t=d(l.x9,v1,198,$.MI.length,0,1),e=0;e<$.MI.length;e++)t[e]=new $.II($.MI[e][0],$.MI[e][1]);$.NI=t}},G(295,1,{},$.SI),U.b=0,U.c=0,l.w9=O(295),$.UI=function(t,e,A){var P,r,i,D;for(i=d(l.Z6,H,6,t.b.f+1,15,1),y.Jqb(i,i.length,-1),r=0;r<A.length;r++)A[r]!=0&&(i[A[r]]=r);for(D=d(l.Z6,H,6,t.b.f,15,1),y.Jqb(D,D.length,-1),P=0;P<e.length;P++)D[P]=i[e[P]];return D},$.VI=function(t,e){var A,P,r,i;return A=t.D[0][e],P=t.D[1][e],r=n.Dm(t,A),i=n.Dm(t,P),!r&&!i?e<t.g&&n.lt(t.p,e)?N9:kr+n.am(t,e)/10:r&&i||r&&n.Hm(t,P)||i&&n.Hm(t,A)?hA:r&&$.nK(t,P,A)||i&&$.nK(t,A,P)?oP:r&&$.lK(t,P,A)||i&&$.lK(t,A,P)?Sr:r&&P<t.f&&n.kt(t.p,P)||i&&A<t.f&&n.kt(t.p,A)?1.9500000476837158:kr},$.WI=function(t,e){return e<t.g&&(n.qt(t.p,e)||t.H[e]==8)?0:t.H[e]&127},$.XI=function(t,e){return e<t.g&&(n.qt(t.p,e)||t.H[e]==8)?1.5:n.am(t,e)},$.YI=function(t,e,A){var P,r,i;if(P=A[e],P!=-1&&n.Il(t.a,P)!=0&&$.ZI(t,e,P,A)){if(i=n.Il(t.b,e),r=n.Il(t.a,P),i==3){if(r==1||r==2)return 5}else if(r==3||$.$I(t,e,A)==(i==r))return 5}return 0},$.ZI=function(t,e,A,P){var r,i,D,u;if(n.Wo(t.b,e)!=n.Wo(t.a,A))return!1;for(i=0;i<n.Wo(t.b,e);i++){for(u=n.Vo(t.b,e,i),r=!1,D=0;D<n.Wo(t.a,A);D++)if(P[u]==n.Vo(t.a,A,D)){r=!0;break}if(!r)return!1}return!0},$.$I=function(t,e,A){var P,r,i,D,u,o,Q;if(o=!1,n.Mo(t.b,e)==0)for(u=1;u<n.Wo(t.b,e);u++)for(Q=0;Q<u;Q++)P=n.Vo(t.b,e,u),r=n.Vo(t.b,e,Q),i=A[P],D=A[r],i!=-1&&D!=-1&&i>D^P>r&&(o=!o);return o},$._I=function(t,e){var A,P,r,i,D,u,o,Q,L,w,s,h,b,g,B;for(w=0,D=d(l.teb,wt,6,t.a.f,16,1),P=e,r=0,i=P.length;r<i;++r)A=P[r],A!=-1&&(D[A]=!0);for(s=d(l.teb,wt,6,t.a.g,16,1),B=0;B<t.b.g;B++)if(b=n.Ul(t.b,0,B),g=n.Ul(t.b,1,B),!(t.b.K&&(n.Fm(t.b,b)||n.Fm(t.b,g)))){if(u=e[b],o=e[g],$.XI(t.b,B),u==-1||o==-1){(u!=-1||o!=-1)&&(w+=$.VI(t.b,B));continue}if(L=n.To(t.a,u,o),L==-1){w+=$.VI(t.b,B);continue}s[L]=!0,w+=$.WI(t.b,B)==$.WI(t.a,L)?0:1}for(Q=0;Q<t.a.g;Q++)t.a.K&&(n.Fm(t.a,n.Ul(t.a,0,Q))||n.Fm(t.a,n.Ul(t.a,1,Q)))||s[Q]||(w+=$.VI(t.a,Q));for(h=0;h<t.b.f;h++)n.Il(t.b,h)!=0&&(w+=$.YI(t,h,e));return-w},$.aJ=function(t,e){this.b=t,this.a=e},G(201,1,{},$.aJ),l.y9=O(201),$.bJ=function(t){var e,A,P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S,p,M,z;if(m=new $.aJ(t.e,t.c),g=$.UI(m,t.f,t.d),t.a.a.length==0)return $._I(m,g);for(S=1,M=new y.rqb(t.a);M.a<M.c.a.length;)p=y.qqb(M),S*=$.hJ(p);if(S>4e6)return T.Pjb(),-S;for(e=0,D=d(l.Z6,H,6,t.a.a.length,15,1),h=d(l.Z6,H,6,t.a.a.length,15,1),o=0;o<t.a.a.length;o++)p=y.uj(t.a,o),h[o]=$.kJ(p),D[o]=e,e+=p.a;for(i=qr,r=null,P=null,b=d(l.Z6,H,6,t.a.a.length,15,1),s=t.a.a.length!=0;s;){if(z=!1,t.i!=null){for(Q=0;Q<t.a.a.length;Q++)if($.lJ(y.uj(t.a,Q),b[Q],t.i)){z=!0;break}}if(!z){for(Q=0;Q<t.a.a.length;Q++)$.gJ(y.uj(t.a,Q),b[Q],g);if(B=$._I(m,g),i<B)for(i=B,r=d(l.Z6,H,6,e,15,1),P=d(l.Z6,H,6,e,15,1),A=0,L=0;L<t.a.a.length;L++)p=y.uj(t.a,L),$.jJ(p,b[L],r,A),$.iJ(p,b[L],P,A),A+=p.a}for(s=!1,u=0;u<b.length;u++){if(++b[u],b[u]<h[u]){s=!0;break}b[u]=0}}if(i!=qr)for(w=t.b,u=0;u<e;u++)++w,t.f[r[u]]=w,t.d[P[u]]=w;return i},$.cJ=function(t,e,A,P,r,i){var D,u,o,Q,L,w,s,h;for(this.e=t,this.c=e,this.f=A,this.d=P,this.g=r,this.b=r,this.i=i,Q=new y.Xvb,u=0;u<t.f;u++)A[u]==0&&(o=t.C[u]+(t.A[u]<<16),s=y.epb(Q,T.pib(o)),s||(s=new $.oJ(this),y.Pvb(Q,T.pib(o),s)),s.d=$.eJ(u,s.d),s.d.length<=s.c.length&&(s.a=s.d.length));for(D=0;D<e.f;D++)P[D]==0&&(o=e.C[D]+(e.A[D]<<16),s=y.epb(Q,T.pib(o)),s||(s=new $.oJ(this),y.Pvb(Q,T.pib(o),s)),s.c=$.eJ(D,s.c),s.c.length<=s.d.length&&(s.a=s.c.length));for(this.a=new y.Jj,h=(w=new y.Eob(Q).a.ad().Sb(),new y.Lob(w));h.a.cd();)s=(L=h.a.dd(),L.gd()),$.mJ(s)||y.pj(this.a,s)},G(399,1,{},$.cJ),U.b=0,U.g=0,l.A9=O(399),$.dJ=function(t){t.d=d(l.Z6,H,6,0,15,1),t.c=d(l.Z6,H,6,0,15,1)},$.eJ=function(t,e){var A,P;for(P=d(l.Z6,H,6,e.length+1,15,1),A=0;A<e.length;A++)P[A]=e[A];return P[e.length]=t,P},$.fJ=function(t,e){var A,P,r,i,D,u;for(P=t,r=0,i=P.length;r<i;++r)if(A=P[r],e.j[A]!=0)return!1;for(D=n.xl(e,t[0]),u=1;u<t.length;u++)if(n.xl(e,t[u])!=D)return!1;return!0},$.gJ=function(t,e,A){var P,r,i,D,u,o;if(o=y.uj(t.b,e),t.d.length<=t.c.length)for(u=0;u<t.a;u++)A[t.d[u]]=t.c[o[u]];else{for(r=t.d,i=0,D=r.length;i<D;++i)P=r[i],A[P]=-1;for(u=0;u<t.a;u++)A[t.d[o[u]]]=t.c[u]}},$.hJ=function(t){var e,A,P;for(P=k.Math.max(t.d.length,t.c.length),A=1,e=P-t.a+1;e<=P;e++)A*=e;return A},$.iJ=function(t,e,A,P){var r,i;if(t.d.length>t.c.length)for(r=0;r<t.a;r++)A[P+r]=t.c[r];else for(i=y.uj(t.b,e),r=0;r<t.a;r++)A[P+r]=t.c[i[r]]},$.jJ=function(t,e,A,P){var r,i;if(t.d.length<=t.c.length)for(r=0;r<t.a;r++)A[P+r]=t.d[r];else for(i=y.uj(t.b,e),r=0;r<t.a;r++)A[P+r]=t.d[i[r]]},$.kJ=function(t){var e,A;return t.b=new y.Jj,A=d(l.Z6,H,6,t.a,15,1),e=d(l.teb,wt,6,k.Math.max(t.d.length,t.c.length),16,1),$.nJ(t,0,e,A),t.b.a.length},$.lJ=function(t,e,A){var P,r;if(r=y.uj(t.b,e),t.d.length<=t.c.length){for(P=0;P<t.a;P++)if(A[t.d[P]]!=null&&A[t.d[P]][t.c[r[P]]])return!0}else for(P=0;P<t.a;P++)if(A[t.d[r[P]]]!=null&&A[t.d[r[P]]][t.c[P]])return!0;return!1},$.mJ=function(t){var e,A,P;if(t.a==0)return!0;if(t.d.length==1&&t.c.length==1)return(t.e.i==null||t.e.i[t.d[0]]==null||!t.e.i[t.d[0]][t.c[0]])&&(++t.e.b,t.e.f[t.d[0]]=t.e.b,t.e.d[t.c[0]]=t.e.b),!0;if($.fJ(t.d,t.e.e)||$.fJ(t.c,t.e.c)){for(e=k.Math.min(t.d.length,t.c.length),P=0;e!=0&&P<t.d.length;P++)for(A=0;A<t.c.length;A++)if(t.e.d[t.c[A]]==0&&(t.e.i==null||t.e.i[t.d[P]]==null||!t.e.i[t.d[P]][t.c[A]])){--e,++t.e.b,t.e.f[t.d[P]]=t.e.b,t.e.d[t.c[A]]=t.e.b;break}return!0}return!1},$.nJ=function(t,e,A,P){var r;for(r=0;r<A.length;r++)A[r]||(A[r]=!0,P[e]=r,e+1==P.length?y.pj(t.b,y.zqb(P,P.length)):$.nJ(t,e+1,A,P),A[r]=!1)},$.oJ=function(t){this.e=t,$.dJ(this)},G(200,1,{200:1},$.oJ),U.a=0,l.z9=O(200),$.pJ=function(t,e){return t.b<e.b?-1:t.b>e.b?1:t.a<e.a?-1:t.a>e.a?1:0},$.qJ=function(t,e){this.b=t,this.a=e},G(128,1,{128:1,32:1},$.qJ),U.Rb=function(t){return $.pJ(this,t)},U.a=0,U.b=0,l.E9=O(128),$.sJ=function(t,e){var A;return A=$.wJ(t.a,e),t.a=$.vJ(t.a,A),A},$.tJ=function(t){t.a=t.b},$.uJ=function(){this.b=new $.yJ,this.a=this.b},G(398,1,{},$.uJ),l.B9=O(398),$.vJ=function(t,e){return t.a[e]},$.wJ=function(t,e){if(t.b==-1)t.a=d(l.C9,v1,169,e,0,1),t.b=e,t.c=e-1;else do t.c=t.c==0?t.b-1:t.c-1;while(t.a[t.c]&&$.xJ(t.a[t.c]));return!t.a[t.c]&&(t.a[t.c]=new $.yJ),t.c},$.xJ=function(t){var e,A,P,r,i;if(!t.d)if(t.b==-1)t.d=!0;else{for(i=!1,A=t.a,P=0,r=A.length;P<r;++P)if(e=A[P],!e)i=!0;else if(!$.xJ(e))return!1;t.d=!i}return t.d},$.yJ=function(){this.b=-1},G(169,1,{169:1},$.yJ),U.b=0,U.c=0,U.d=!1,l.C9=O(169),$.zJ=function(t,e,A,P,r){var i,D,u,o,Q,L,w,s,h;for(h=d(l.teb,wt,6,P.length,16,1),u=t,Q=0,w=u.length;Q<w;++Q)if(i=u[Q],e[i]==0){if(P[A[i]]||h[A[i]])return!1;h[A[i]]=!0}for(s=-1,D=t,o=0,L=D.length;o<L;++o)if(i=D[o],e[i]==0){if(s==-1)s=r[i];else if(r[i]!=s)return!1}return!0},$.AJ=function(t){var e,A,P,r,i,D,u,o;for(t.t=new y.Jj,P=1,i=0,A=0;A<t.u.f;A++)n.Gl(t.u,A)!=0&&!n.wm(t.u,A)&&(i=k.Math.max(i,n.Gl(t.u,A)));if(i!=0){for(r=d(l.Z6,H,6,i+1,15,1),e=0;e<t.u.f;e++)n.Gl(t.u,e)!=0&&!n.wm(t.u,e)&&(r[n.Gl(t.u,e)]=e+1);for(u=0;u<t.D.f;u++)o=n.Gl(t.D,u),o!=0&&o<=i&&!n.wm(t.D,u)&&r[o]!=0&&(D=r[o]-1,t.I[u]=P,t.B[D]=P++,y.pj(t.t,new $.qJ(u,D)))}return t.t.a.length},$.BJ=function(t){var e,A,P,r,i,D,u,o,Q,L,w,s,h;for(w=$.EJ(t.D),u=$.EJ(t.u),D=d(l.hdb,b1,44,8,0,1),h=$.CJ(t.D,w),Q=$.CJ(t.u,u),L=0;L<=7;L++)for(D[L]=new y.Yvb(new lt.y3),i=(P=new y.fwb(new y.lwb(new y.spb(h[L]).a).b),new y.Bpb(P));y.aob(i.a.a);)r=(A=y.dwb(i.a),A.fd()),s=y.epb(h[L],r),o=y.epb(Q[L],r),o!=null&&(e=d(l.Z6,M1,7,2,0,2),e[0]=s,e[1]=o,y.Pvb(D[L],r,e));return D},$.CJ=function(t,e){var A,P,r,i,D;for(i=d(l.hdb,b1,44,8,0,1),D=0;D<=7;D++)for(i[D]=new y.Yvb(new lt.y3),A=0;A<t.f;A++)r=e[A][D],r!=null&&(P=y.epb(i[D],r),P=P==null?d(l.Z6,H,6,1,15,1):y.zqb(P,P.length+1),P[P.length-1]=A,y.Pvb(i[D],r,P));return i},$.DJ=function(t,e,A){var P,r,i,D,u,o,Q,L,w,s,h,b;for(D=d(l.Z6,H,6,t.s,15,1),r=0;r<e.f;r++){for(h=e.j[r]+(e.i[r].length-e.e[r]),s=0,o=0;o<e.i[r].length;o++)if(o<e.j[r]||o>=e.e[r]){for(b=2*A[e.i[r][o]],i=e.k[r][o],n.am(e,i)==2&&(i<e.g&&n.lt(e.p,i)||++b),L=0;L<s&&!(b<D[L]);L++);for(w=s;w>L;w--)D[w]=D[w-1];D[L]=b,++s}for(n.ah(t.b[r],r),n.Zg(t.b[r],t.a,l.Ieb(A[r])),Q=h;Q<t.s;Q++)n.Zg(t.b[r],t.a+1,0);for(u=0;u<h;u++)n.Zg(t.b[r],t.a+1,l.Ieb(D[u]))}for(P=e.f;P<t.b.length;P++)for(n.ah(t.b[P],P),n.Zg(t.b[P],t.a,Ct(e.f+1)),u=0;u<t.s;u++)n.Zg(t.b[P],t.a+1,0)},$.EJ=function(t){var e,A,P,r,i,D,u,o,Q,L,w,s,h,b,g,B;for(n.aw(t,7),o=new n.tw(t.f,t.g),u=w1(l.V6,[hP,we],[58,10],0,[t.f,8],2),P=d(l.Z6,H,6,t.f,15,1),r=d(l.teb,wt,6,t.f,16,1),i=d(l.teb,wt,6,t.g,16,1),g=0;g<t.f;g++){for(g!=0&&(y.Nqb(r,r.length),y.Nqb(i,i.length)),u[g][0]=d(l.V6,Y,6,2,15,1),u[g][0][0]=t.C[g]<<24>>24,u[g][0][1]=t.A[g]<<24>>24,P[0]=g,r[g]=!0,h=0,s=1,t.u[g]|=512,B=1;B<=7&&s<t.f;B++){for(b=s,Q=h;Q<s;Q++)for(A=P[Q],L=0;L<t.j[A];L++)D=t.i[A][L],r[D]||(r[D]=!0,P[b++]=D),i[t.k[A][L]]=!0;if(b==s)break;for(h=s,s=b,n.zo(t,o,i,!0,null),e=0;e<o.q;e++)o.s[e]=0,o.T=0,n.sn(o,e,0);u[g][B]=c.szb((w=n.og(new n.Lg(o,16)),V1.Cmb(),w))}t.u[g]&=-513}return u},$.FJ=function(t,e){var A,P,r;for(A=0,y.Tqb(t.b),P=0;P<e.length;P++)(P==0||n._g(t.b[P],t.b[P-1])!=0)&&++A,r=t.b[P].a,e[r]=A;return A},$.GJ=function(t,e,A){var P,r,i,D,u,o,Q,L,w,s;for(s=new y.Owb(new lt.P3),Q=e,L=0,w=Q.length;L<w;++L)for(o=Q[L],r=A,i=0,D=r.length;i<D;++i)P=r[i],u=d(l.Z6,H,6,2,15,1),u[0]=t.J[o],u[1]=t.C[P],y.Pvb(s.a,u,(T.Egb(),FA))==null;return y.Ji(s,d(l.Z6,M1,7,0,0,2))},$.HJ=function(t,e,A){return n.Wo(t.u,A)!=0&&(t.H[t.G[e]]=!0),n.Wo(t.D,e)!=0&&(t.A[t.w[A]]=!0),new $.qJ(e,A)},$.IJ=function(t,e,A,P,r){var i,D,u,o,Q;for(i=A[P],Q=!1,u=0;u<e.f;u++)if(u!=P&&A[u]==i){Q=!0;break}if(!Q)return r;for(D=0;D<e.f;D++)(D==P||A[D]>i)&&++A[D];++r;do o=r,$.DJ(t,e,A),r=$.FJ(t,A);while(o!=r);return r},$.JJ=function(t){var e,A,P,r,i,D,u;for(D=d(l.V6,hP,58,8,0,3),u=0;u<=7;u++)for(D[u]=d(l.V6,we,10,t[u].c,0,2),P=0,i=(A=new y.fwb(new y.lwb(new y.spb(t[u]).a).b),new y.Bpb(A));y.aob(i.a.a);)r=(e=y.dwb(i.a),e.fd()),D[u][P++]=r;return D},$.KJ=function(t,e){var A,P,r,i,D,u,o,Q,L;for(L=0,r=t,D=0,o=r.length;D<o;++D)A=r[D],e[A]==0&&++L;if(L==0)return null;for(Q=d(l.Z6,H,6,L,15,1),L=0,P=t,i=0,u=P.length;i<u;++i)A=P[i],e[A]==0&&(Q[L++]=A);return Q},$.LJ=function(t){return t.K++==64?!1:t.i?$.xJ(t.i.b)?!1:($.RJ(t),!0):(t.i=new $.uJ,!0)},$.MJ=function(t){var e,A,P,r,i;for(i=k.Math.max(t.D.f,t.u.f),t.a=n.Mg(i),t.s=2,A=0;A<t.D.f;A++)t.s=k.Math.max(t.s,n.Wo(t.D,A)+n.np(t.D,A));for(P=0;P<t.u.f;P++)t.s=k.Math.max(t.s,n.Wo(t.u,P)+n.np(t.u,P));for(r=k.Math.max(2,(62+t.a+t.s*(t.a+5))/63|0),t.b=d(l.j7,Hn,102,i,0,1),e=0;e<i;e++)t.b[e]=new n.bh(r);t.F=new n.Lg(t.D,1),t.v=new n.Lg(t.u,1)},$.NJ=function(t){var e,A,P,r,i,D,u,o,Q;for(Q=t.F.g,t.J=y.zqb(Q,Q.length),e=t.v.g,t.C=y.zqb(e,e.length),r=t.J,D=0,o=r.length;D<o;++D)A=r[D],t.o<A&&(t.o=A);for(P=t.C,i=0,u=P.length;i<u;++i)A=P[i],t.n<A&&(t.n=A)},$.OJ=function(t,e,A){var P,r,i,D,u,o,Q,L,w,s,h,b,g;if(g=$.KJ(e,t.I),g==null||(b=$.KJ(A,t.B),b==null))return null;if(g.length==1&&b.length==1)return new $.qJ(g[0],b[0]);if(h=$.GJ(t,g,b),h.length==1)return new $.qJ(g[0],b[0]);for(L=$.sJ(t.i,h.length),s=-1,i=g,u=0,Q=i.length;u<Q;++u)if(P=i[u],t.J[P]==h[L][0]){s=P;break}for(w=-1,r=b,D=0,o=r.length;D<o;++D)if(P=r[D],t.C[P]==h[L][1]){w=P;break}return t.o=$.IJ(t,t.D,t.J,s,t.o),t.n=$.IJ(t,t.u,t.C,w,t.n),new $.qJ(s,w)},$.PJ=function(t){var e,A,P,r,i;for(P=$.QJ(t);P;){for(i=!1,A=0;A<n.Wo(t.D,P.b);A++)t.I[n.Vo(t.D,P.b,A)]==0&&(i=!0);for(r=!1,e=0;e<n.Wo(t.u,P.a);e++)t.B[n.Vo(t.u,P.a,e)]==0&&(r=!0);if(i&&r)break;t.I[P.b]=bP,t.B[P.a]=bP,P=$.QJ(t)}if(!P){for(A=0;A<t.I.length;A++)t.I[A]==bP&&(t.I[A]=0);for(e=0;e<t.B.length;e++)t.B[e]==bP&&(t.B[e]=0)}return P},$.QJ=function(t){for(var e,A,P,r,i;t.t.a.length!=0;)if(P=y.Bj(t.t,0),t.I[P.b]==0&&t.B[P.a]==0)return P;for(;t.g>=0;){for(;t.g>=2&&t.c<t.j[t.g].length;){if(A=t.j[t.g][t.c],e=y.epb(t.k[t.g],A),n.Ol(t.D,e[0][0])==6&&(P=$.OJ(t,e[0],e[1]),P))return P;++t.c}for(;t.g>=2&&t.d<t.j[t.g].length;){if(A=t.j[t.g][t.d],e=y.epb(t.k[t.g],A),n.Ol(t.D,e[0][0])!=6&&(P=$.OJ(t,e[0],e[1]),P))return P;++t.d}for(;t.p&&t.g==0&&t.e<t.j[0].length;)if(A=t.j[0][t.e++],e=y.epb(t.k[t.g],A),e[0].length==1&&e[1].length==1&&(P=$.SJ(t,e[0][0],e[1][0]),P))return P;for(;t.g==0&&t.f<t.j[t.g].length;)if(A=t.j[t.g][t.f++],e=y.epb(t.k[t.g],A),e[0].length>=e[1].length&&$.zJ(e[0],t.I,t.G,t.H,t.J)||e[1].length>=e[0].length&&$.zJ(e[1],t.B,t.w,t.A,t.C)){for(i=0,r=0;i<e[0].length&&t.I[e[0][i]]!=0;)++i;for(;r<e[1].length&&t.B[e[1][r]]!=0;)++r;if(i<e[0].length&&r<e[1].length&&(P=$.SJ(t,e[0][i],e[1][r]),P))return P}--t.g,t.c=0,t.d=0,t.e=0,t.f=0}return null},$.RJ=function(t){y.Dqb(t.I,0),y.Dqb(t.B,0),y.Hqb(t.H),y.Hqb(t.A),$.NJ(t),$.tJ(t.i),t.q=$.AJ(t),t.g=7,t.c=0,t.d=0,t.e=0,t.f=0},$.SJ=function(t,e,A){return t.L!=null&&t.L[e]!=null&&t.L[e][A]?null:t.I[e]==0&&t.B[A]==0?$.HJ(t,e,A):null},$.TJ=function(t,e,A,P,r){var i,D,u,o,Q;for(this.D=t,this.u=e,this.I=A,this.B=P,this.L=r,$.MJ(this),$.NJ(this),this.k=$.BJ(this),this.j=$.JJ(this.k),this.r=0,Q=(u=new y.fwb(new y.lwb(new y.spb(this.k[0]).a).b),new y.Bpb(u));y.aob(Q.a.a);)o=(D=y.dwb(Q.a),D.fd()),i=y.epb(this.k[0],o),this.r+=k.Math.min(i[0].length,i[1].length);this.p=this.r==this.D.f&&this.D.f==this.u.f,this.G=d(l.Z6,H,6,this.D.f,15,1),this.w=d(l.Z6,H,6,this.u.f,15,1),this.H=d(l.teb,wt,6,n.dp(this.D,this.G,!1,!1),16,1),this.A=d(l.teb,wt,6,n.dp(this.u,this.w,!1,!1),16,1),this.q=$.AJ(this),this.g=7,this.K=0},G(397,1,{},$.TJ),U.a=0,U.c=0,U.d=0,U.e=0,U.f=0,U.g=0,U.n=0,U.o=0,U.p=!1,U.q=0,U.r=0,U.s=0,U.K=0,l.D9=O(397),$.UJ=function(t,e,A){var P,r,i,D,u;for(this.a=d(l.Z6,H,6,t.f,15,1),this.a[0]=e,A[e]=!0,i=0,D=0;i<=D;){for(r=n.Wo(t,this.a[i]),u=0;u<r;u++)P=n.Vo(t,this.a[i],u),k.Math.abs(t.w[P])==0&&S1(Z(t.B[P],P0),0)&&!A[P]&&(this.a[++D]=P,A[P]=!0);++i}},G(395,1,{},$.UJ),l.F9=O(395),$.VJ=function(t,e){var A,P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S,p,M;for(n.aw(t,7),L=new n.tw(t.f,t.g),Q=w1(l.V6,[T0,hP],[203,58],0,[t.f,8],2),P=d(l.Z6,H,6,t.f,15,1),r=d(l.Z6,H,6,t.f,15,1),i=d(l.teb,wt,6,t.f,16,1),p=0;p<t.f;p++)if(Q[p]=w1(l.V6,[hP,we],[58,10],0,[t.j[p],8],2),!(e&&t.C[p]!=6))for(o=0;o<t.j[p];o++){for(w=t.i[p][o],y.Nqb(i,i.length),m=1,B=2,t.u[w]|=512,M=0;M<8&&B<t.f;M++){if(M==0)P[0]=w,i[w]=!0,P[1]=p,i[p]=!0;else{for(S=B,h=m;h<B;h++)for(A=P[h],b=0;b<t.j[A];b++)u=t.i[A][b],!i[u]&&(!e||t.C[u]==6)&&(i[u]=!0,P[S++]=u);if(S==B){if(!e)for(s=M;s<8;s++)Q[p][o][s]=Q[p][o][s-1];break}m=B,B=S}if(M==0)Q[p][o][M]=d(l.V6,Y,6,2,15,1),Q[p][o][M][0]=t.C[p]<<24>>24,Q[p][o][M][1]=t.A[p]<<24>>24;else{for(n.yo(t,L,i,!0,r),n.en(L,r[w],0),n.sn(L,r[w],0),A=0;A<t.f;A++)r[A]!=-1&&t.j[A]>n.Wo(L,r[A])&&n.rn(L,r[A],J1,!0);if(e)for(D=0;D<L.g;D++)L.H[D]=1,L.T=0;Q[p][o][M]=c.szb((g=n.og(new n.Lg(L,16)),V1.Cmb(),g))}}t.u[w]&=-513}return Q},$.WJ=function(t,e,A){var P,r;for(P=0,r=0;r<t.j[e];r++)n.Ol(t,t.i[e][r])==A&&++P;return P},$.XJ=function(t,e,A,P,r){var i,D,u,o,Q,L,w,s;for(s=0,w=-1,D=0;D<t.j.f;D++){L=y.uj(e.g,s),n.aw(L,1);do++w==L.f&&(w=0,L=tt.oH(e,++s));while(L.K&&jt(Z(L.B[w],P0),0));n.nn(L,w,A[D],A[D]<=r)}for(Q=0,o=-1,i=0;i<t.d.f;i++){u=y.uj(e.f,Q),n.aw(u,1);do++o==u.f&&(o=0,u=tt.nH(e,++Q));while(u.K&&jt(Z(u.B[o],P0),0));n.nn(u,o,P[i],P[i]<=r)}},$.YJ=function(t,e,A,P,r){var i,D,u,o,Q;for(Q=-1,D=0;D<n.Wo(t.j,A);D++)if(n.Vo(t.j,A,D)==e){Q=D;break}for(u=-1,i=0;i<n.Wo(t.d,r);i++)if(n.Vo(t.d,r,i)==P){u=i;break}for(o=0;o<8;o++)if(lt.x3(t.k[A][Q][o],t.e[r][u][o])!=0)return o<<8;return c1},$.ZJ=function(t,e){return e<t.g&&(n.qt(t.p,e)||t.H[e]==8)?0:t.H[e]&127},$.$J=function(t,e,A){var P,r;for(r=0;r<t.j[A];r++)if(P=t.i[A][r],P!=e)return P;return-1},$._J=function(t,e){var A,P;for(A=t.o[e],P=0;P<t.j[e];P++)n.Dm(t,t.i[e][P])&&++A;return A},$.aK=function(t,e,A,P,r){var i,D,u,o,Q;for(Q=-1,D=0;D<n.Wo(t.j,A);D++)if(n.Vo(t.j,A,D)==e){Q=D;break}for(u=-1,i=0;i<n.Wo(t.d,r);i++)if(n.Vo(t.d,r,i)==P){u=i;break}for(o=2;o<8;o++)if(t.p[A][Q][o]==null||lt.x3(t.p[A][Q][o],t.i[r][u][o])!=0)return o-2<<8;return 1536},$.bK=function(t){var e,A,P,r,i,D,u,o;for(u=d(l.Z6,H,6,t.f,15,1),o=(n.aw(t,7),t.p),i=0;i<k.Math.min(32,o.i.a.length);i++)for(D=y.uj(o.i,i),A=D,P=0,r=A.length;P<r;++P)e=A[P],u[e]|=1<<i;return u},$.cK=function(t,e,A,P){return(P[t]&P[e]&~P[A])!=0},$.dK=function(t,e,A,P,r,i){var D,u,o,Q,L,w,s,h;for(t.j=e,t.d=A,t.n=d(l.Z6,H,6,P.length,15,1),t.f=d(l.Z6,H,6,r.length,15,1),t.k=$.VJ(t.j,!1),t.p=$.VJ(t.j,!0),t.e=$.VJ(t.d,!1),t.i=$.VJ(t.d,!0),t.o=$.bK(t.j),t.g=$.bK(t.d),t.q=qr,w=new $.TJ(e,A,t.n,t.f,i),t.a=0;$.LJ(w);){for(++t.a,t.c=w.q,Q=w.r,L=$.PJ(w);L;)$.eK(t,L),L=$.PJ(w);if(t.b=t.c,t.c<Q?(D=new $.cJ(t.j,t.d,t.n,t.f,t.c,i),s=$.bJ(D),t.c+=D.b-D.g):(h=new $.aJ(t.j,t.d),s=$._I(h,$.UI(h,t.n,t.f))),t.q<s){for(t.q=s,o=0;o<P.length;o++)P[o]=t.n[o];for(u=0;u<r.length;u++)r[u]=t.f[u]}}},$.eK=function(t,e){var A,P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S,p,M,z,q,x,J;for(Q=d(l.Z6,H,6,t.j.f,15,1),m=d(l.Z6,H,6,t.d.f,15,1),L=d(l.Z6,H,6,t.j.f,15,1),p=d(l.Z6,H,6,t.d.f,15,1),Q[0]=e.b,L[e.b]=e.b,m[0]=e.a,p[e.a]=e.a,t.n[e.b]==0&&(++t.c,t.n[e.b]=t.c,t.f[e.a]=t.c),u=0,w=0;u<=w;){for(q=Q[u],M=m[u],B=w1(l.Z6,[M1,H],[7,6],15,[n.Wo(t.j,q),n.Wo(t.d,M)],2),h=0;h<n.Wo(t.j,q);h++)if(z=n.Vo(t.j,q,h),t.n[z]==0)for(i=$.ZJ(t.j,n.Xo(t.j,q,h)),g=0;g<n.Wo(t.d,M);g++)S=n.Vo(t.d,M,g),t.f[S]==0&&n.Ol(t.j,z)==n.Ol(t.d,S)&&(D=n.Xo(t.d,M,g),J=$.aK(t,q,z,M,S),i==$.ZJ(t.d,D)||J!=0?$.hK(t,q,z,M,S)&&(o=$.YJ(t,q,z,M,S),x=k.Math.max(J,o),x!=0&&(b=$.fK(t,L[q],q,z,p[M],M,S),$.iK(t,q,z,M,S,x,b)&&(B[h][g]=x,b&&(B[h][g]+=64),$.cK(L[q],q,z,t.o)==$.cK(p[M],M,S,t.g)&&(B[h][g]+=128),$._J(t.j,z)==$._J(t.d,S)&&(B[h][g]+=1)))):$.YJ(t,q,z,M,S)==c1&&(B[h][g]=768));for(;;){for(A=0,r=-1,P=-1,s=0;s<B.length;s++)if(z=n.Vo(t.j,q,s),t.n[z]==0)for(g=0;g<B[s].length;g++)S=n.Vo(t.d,M,g),t.f[S]==0&&A<B[s][g]&&(A=B[s][g],r=z,P=S);if(A==0)break;++w,Q[w]=r,L[r]=Q[u],m[w]=P,p[P]=m[u],++t.c,t.n[r]=t.c,t.f[P]=t.c}++u}return w+1},$.fK=function(t,e,A,P,r,i,D){var u,o,Q,L,w;if(n.Wo(t.j,A)==3&&(n.Il(t.j,A)==1||n.Il(t.j,A)==2)&&n.Wo(t.d,i)==3&&(n.Il(t.d,i)==1||n.Il(t.d,i)==2)){for(w=e>P,Q=-1,o=0;o<n.Wo(t.j,A);o++)if(Q=n.Vo(t.j,A,o),Q!=e&&Q!=P){(Q>P&&Q<e||Q<P&&Q>e)&&(w=!w);break}for(L=r>D,u=0;u<n.Wo(t.d,i);u++)if(Q=n.Vo(t.d,i,u),Q!=r&&Q!=D){(Q>D&&Q<r||Q<D&&Q>r)&&(L=!L);break}return w==L==(n.Il(t.j,A)==n.Il(t.d,i))}return!0},$.gK=function(t,e){var A,P,r,i;for(t.j=new n.sw,P=0;P<e.g.a.length;P++)i=y.uj(e.g,P),n.aw(i,1),n.Vk(t.j,i,i.f,i.g,!i.K);for(t.d=new n.sw,A=0;A<e.f.a.length;A++)r=y.uj(e.f,A),n.aw(r,1),n.Vk(t.d,r,r.f,r.g,!r.K);n.hq(t.j),n.hq(t.d)},$.hK=function(t,e,A,P,r){var i,D;return!(n.Ol(t.j,A)==6&&k.Math.abs(n.Wo(t.j,A)-n.Wo(t.d,r))>1||n.Ol(t.j,A)==8&&n.Wo(t.j,A)==2&&$.WJ(t.j,e,8)>$.WJ(t.d,P,8)||n.Ol(t.d,r)==8&&n.Wo(t.d,r)==2&&$.WJ(t.j,e,8)<$.WJ(t.d,P,8)||n.Ol(t.j,A)==8&&n.Wo(t.j,A)==2&&n.Wo(t.d,r)==2&&(D=n.Vo(t.j,A,0)==e?0:1,i=n.Vo(t.d,r,0)==P?0:1,lt.x3(t.p[A][D][3],t.i[r][i][3])!=0)||n.Ol(t.j,A)==7&&$.WJ(t.j,e,7)<$.WJ(t.d,P,7)||n.Ol(t.d,r)==7&&$.WJ(t.j,e,7)>$.WJ(t.d,P,7)||n.Uo(t.j,n.To(t.j,e,A))==3^n.Uo(t.d,n.To(t.d,P,r))==3)},$.iK=function(t,e,A,P,r,i,D){return!(n.Ol(t.j,A)==8&&n.Mo(t.j,A)==0&&$.mK(t.j,e)&&$.mK(t.d,P)&&i!=c1||n.Ol(t.j,A)==8&&n.Wo(t.j,A)==2&&$.mK(t.j,$.$J(t.j,e,A))&&i<768||n.Ol(t.j,e)==8&&($.mK(t.j,A)||$.mK(t.d,r))&&i<512||!D&&(n.Ol(t.j,A)!=6||!$.kK(t.j,e))||n.Ol(t.j,A)==8&&n.Ol(t.j,e)!=6&&i!=c1||n.Ol(t.j,e)==5&&n.Ol(t.j,A)==6&&i<768)},$.jK=function(){},$.kK=function(t,e){var A;for(A=0;A<t.j[e];A++)if(n.Ol(t,t.i[e][A])!=6)return!0;return!1},$.lK=function(t,e,A){var P;for(P=0;P<t.j[e];P++)if(n.Ol(t,t.i[e][P])!=6&&t.i[e][P]!=A)return!0;return!1},$.mK=function(t,e){var A;for(A=0;A<t.j[e];A++)if(t.n[e][A]==2&&n.Ol(t,t.i[e][A])>6)return!0;return!1},$.nK=function(t,e,A){var P;for(P=0;P<t.j[e];P++)if(t.n[e][P]==2&&n.Ol(t,t.i[e][P])>6&&t.i[e][P]!=A)return!0;return!1},G(394,1,{},$.jK),U.a=0,U.b=0,U.c=0,U.q=0,l.G9=O(394),V.rK=function(){V.rK=u1,V.pK=v(F(l.Nbb,1),yt,2,6,[\"\",\"r0\",\"r\",\"r3\",\"r3-4\",\"r3-5\",\"r3-6\",\"r3-7\",\"r4\",\"r4-5\",\"r4-6\",\"r4-7\",\"r>3\",\"r5\",\"r5-6\",\"r5-7\",\"r>4\",\"r6\",\"r6-7\",\"r>5\",\"r7\",\"r>6\",\"r>7\"]),V.oK=v(F(l.Nbb,1),yt,2,6,[Te,dD,\"is in any ring\",\"3 members\",\"3-4 members\",\"3-5 members\",\"3-6 members\",\"3-7 members\",\"4 members\",\"4-5 members\",\"4-6 members\",\"4-7 members\",\"> 3 members\",\"5 members\",\"5-6 members\",\"5-7 members\",\"> 4 members\",\"6 members\",\"6-7 members\",\"> 5 members\",\"7 members\",\"> 6 members\",\"> 7 members\"]),V.qK=v(F(l.$6,1),e0,6,14,[0,le,Z8,ze,25769803776,60129542144,128849018880,266287972352,Ve,51539607552,120259084288,257698037760,532575944704,qe,103079215104,240518168576,515396075520,Ie,206158430208,481036337152,Ee,412316860416,un])},V.sK=function(t,e,A,P){var r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S,p,M,z;for(t.A=e,t.a=A,w=mt(k.Math.round((d1.IN==-1&&(d1.IN=d1.KN()),d1.IN*8))),s=v(F(l.Z6,1),H,6,15,[w,w/2|0,w*3/2|0,w/2|0,w/2|0,w/2|0,w/2|0,w/2|0,w/2|0,w/2|0,w/2|0,w/2|0,w*3/2|0,w/4|0,w/2|0,w/2|0,w/4|0]),h=v(F(l.Z6,1),H,6,15,[w*3/2|0,w/2|0]),b=v(F(l.Z6,1),H,6,15,[w,-2,w,-2,w]),z=d(l.Z6,H,6,1+2*s.length+(P?2*h.length:0),15,1),B=0,D=s,o=0,L=D.length;o<L;++o)r=D[o],z[B++]=r,z[B++]=-2;if(P)for(i=h,u=0,Q=i.length;u<Q;++u)r=i[u],z[B++]=r,z[B++]=-2;for(z[B++]=w,R.q2(t.v,b,z),t.b=R.k2(t.v,\"Any atomic number\"),R.M1(t.b,t),R.j2(t.v,t.b,1,1,3,1),t.w=R.m2(t.v,Ir),t.D=R.n2(t.v,16,1),R.i2(t.v,t.w,1,3),R.i2(t.v,t.D,3,3),t.g=R.l2(t.v),R.a2(t.g,Te),R.a2(t.g,\"is aromatic\"),R.a2(t.g,\"is hetero-aromatic\"),R.a2(t.g,\"is not aromatic\"),R.i2(t.v,R.m2(t.v,\"Aromaticity:\"),1,5),R.i2(t.v,t.g,3,5),t.s=R.l2(t.v),R.a2(t.s,Te),R.a2(t.s,\"0 (not in a ring)\"),R.a2(t.s,\"0 or 2 (0 or 1 ring)\"),R.a2(t.s,\">=2 (any ring count)\"),R.a2(t.s,\"2 (in 1 ring)\"),R.a2(t.s,\"3 (bridge head; 2 rings)\"),R.a2(t.s,\">3 (in more than 2 rings)\"),R.i2(t.v,R.m2(t.v,\"Ring bonds:\"),1,7),R.i2(t.v,t.s,3,7),t.t=R.l2(t.v),R.a2(t.t,Te),R.a2(t.t,\"3 members\"),R.a2(t.t,\"4 members\"),R.a2(t.t,\"5 members\"),R.a2(t.t,\"6 members\"),R.a2(t.t,\"7 members\"),R.i2(t.v,R.m2(t.v,\"Smallest ring size:\"),1,9),R.i2(t.v,t.t,3,9),t.r=R.l2(t.v),S=V.oK,p=0,M=S.length;p<M;++p)m=S[p],R.a2(t.r,m);for(R.i2(t.v,R.m2(t.v,\"Any ring size:\"),1,11),R.i2(t.v,t.r,3,11),t.i=R.l2(t.v),R.a2(t.i,Te),R.a2(t.i,\"not charged\"),R.a2(t.i,\"has negative charge\"),R.a2(t.i,\"has positive charge\"),R.i2(t.v,R.m2(t.v,\"Charge:\"),1,13),R.i2(t.v,t.i,3,13),t.n=R.l2(t.v),R.a2(t.n,Te),R.a2(t.n,cP),R.a2(t.n,gP),R.a2(t.n,\"exactly 3\"),R.a2(t.n,Er),R.a2(t.n,BD),R.a2(t.n,dP),R.a2(t.n,Nr),R.a2(t.n,xr),R.a2(t.n,kD),R.a2(t.n,Gr),R.a2(t.n,\"1,2, or 3\"),R.a2(t.n,\"2 or 3\"),R.i2(t.v,R.m2(t.v,\"Non-H neighbours:\"),1,15),R.i2(t.v,t.n,3,15),t.j=R.l2(t.v),R.a2(t.j,Te),R.a2(t.j,\"exactly 0\"),R.a2(t.j,cP),R.a2(t.j,gP),R.a2(t.j,\"exactly 3\"),R.a2(t.j,jD),R.a2(t.j,Er),R.a2(t.j,BD),R.a2(t.j,dP),R.a2(t.j,Nr),R.a2(t.j,xr),R.a2(t.j,kD),R.a2(t.j,Gr),R.a2(t.j,\"1,2, or 3\"),R.a2(t.j,\"2 or 3\"),R.i2(t.v,R.m2(t.v,\"Electroneg. neighbours:\"),1,17),R.i2(t.v,t.j,3,17),t.k=R.l2(t.v),R.a2(t.k,Te),R.a2(t.k,\"none\"),R.a2(t.k,cP),R.a2(t.k,gP),R.a2(t.k,dP),R.a2(t.k,Nr),R.a2(t.k,xr),R.a2(t.k,jD),R.a2(t.k,Er),R.a2(t.k,Gr),R.i2(t.v,R.m2(t.v,\"Hydrogen count:\"),1,19),R.i2(t.v,t.k,3,19),t.p=R.l2(t.v),R.a2(t.p,Te),R.a2(t.p,\"none\"),R.a2(t.p,cP),R.a2(t.p,gP),R.a2(t.p,dP),R.i2(t.v,R.m2(t.v,\"Pi-electron count:\"),1,21),R.i2(t.v,t.p,3,21),t.o=R.l2(t.v),R.a2(t.o,Te),g=1;g<15;g++)R.a2(t.o,\"\"+(g-7));R.i2(t.v,R.m2(t.v,\"Oxidation state:\"),1,23),R.i2(t.v,t.o,3,23),t.c=R.k2(t.v,\"prohibit further substitution\"),R.M1(t.c,t),R.j2(t.v,t.c,1,25,3,25),t.f=R.k2(t.v,\"require further substitution\"),R.M1(t.f,t),R.j2(t.v,t.f,1,27,3,27),t.u=R.l2(t.v),R.a2(t.u,Te),R.a2(t.u,\"is a stereo center\"),R.a2(t.u,\"is not a stereo center\"),R.i2(t.v,R.m2(t.v,\"Stereo center:\"),1,29),R.i2(t.v,t.u,3,29),t.e=R.k2(t.v,\"match stereo center\"),R.j2(t.v,t.e,1,31,3,31),t.d=R.k2(t.v,\"is part of exclude group\"),R.j2(t.v,t.d,1,33,3,33),P&&(R.j2(t.v,R.m2(t.v,\"Stereo center hint for product:\"),1,35,3,35),t.q=R.l2(t.v),R.a2(t.q,\"Copy from generic product\"),R.a2(t.q,\"Keep reactant configuration\"),R.a2(t.q,\"Invert reactant configuration\"),R.a2(t.q,\"Racemise configuration\"),R.j2(t.v,t.q,1,37,3,37)),n.aw(t.A,31),V.vK(t)},V.tK=function(t){var e,A,P,r,i,D,u,o,Q;for(u=null,o=T.rjb(R.i3(t.D));c.Szb(o).length!=0;){if(A=T.gjb(o,X1(44)),A==-1?(D=T.rjb(o),o=\"\"):(D=T.rjb((c.Mzb(0,A,c.Szb(o).length),c.Szb(o).substr(0,A))),o=T.rjb((c.Nzb(A+1,c.Szb(o).length+1),c.Szb(o).substr(A+1)))),T._ib(D,\"X\")){c.Szb(o).length!=0&&(o=\",\"),o=(c.Gzb(o),o+(c.Gzb(\"F,Cl,Br,I\"),\"F,Cl,Br,I\"));continue}if(e=(n.Ok(),n.lo(D,321)),e!=0)if(e==1)R.s2(t.v,\"'H' cannot be part of an atom list and is removed.\");else if(u==null)u=d(l.Z6,H,6,1,15,1),u[0]=e;else{for(P=!1,i=0;i<u.length;i++)if(e==u[i]){P=!0;break}if(!P){for(Q=d(l.Z6,H,6,u.length+1,15,1),r=0;r<u.length;r++)Q[r]=u[r];Q[u.length]=e,u=Q}}}return u!=null&&c.lzb(u,c.Szb(y0(y.lrb.prototype.jd,y.lrb,[]))),u},V.uK=function(t,e){e.j==0?(V.wK(t),t.B=!0,R.o2(t.v)):e.j==1?R.o2(t.v):j1(e.k)===j1(t.b)?e.a==1?(R.j3(t.D,\"\"),R.b3(t.w,Ir)):(R.j3(t.D,n.Dl(t.A,t.a)),R.b3(t.w,mD)):j1(e.k)===j1(t.c)?(R.U1(t.f,!1),R.f2(t.n,0),R.f2(t.j,0)):j1(e.k)===j1(t.f)&&R.U1(t.c,!1)},V.vK=function(t){var e,A,P,r,i,D,u,o,Q,L,w,s,h,b,g,B;for(L=n.Jl(t.A,t.a),jt(Z(L,1),0)?(R.U1(t.b,!0),R.b3(t.w,Ir)):R.b3(t.w,mD),R.j3(t.D,n.El(t.A,t.a)==null?\"\":n.Fl(t.A,t.a)),e=Z(L,XA),jt(Z(e,AA),0)?R.f2(t.g,2):et(e,2)==0?R.f2(t.g,1):et(e,4)==0?R.f2(t.g,3):R.f2(t.g,0),h=Z(L,120),et(h,112)==0?R.f2(t.s,1):et(h,96)==0?R.f2(t.s,2):et(h,8)==0?R.f2(t.s,3):et(h,104)==0?R.f2(t.s,4):et(h,88)==0?R.f2(t.s,5):et(h,56)==0?R.f2(t.s,6):R.f2(t.s,0),g=Gt(a1(Z(L,ke),22)),R.f2(t.t,g==0?0:g-2),s=Z(L,Me),u=-1,D=0;D<V.qK.length;D++)if(S1(s,V.qK[D])){u=D;break}u!=-1?R.f2(t.r,u):(P=new T.Mjb(\"Custom:\"),jt(Z(s,le),0)&&(P.a+=\" 0\"),jt(Z(s,ze),0)&&(P.a+=\" 3\"),jt(Z(s,Ve),0)&&(P.a+=\" 4\"),jt(Z(s,qe),0)&&(P.a+=\" 5\"),jt(Z(s,Ie),0)&&(P.a+=\" 6\"),jt(Z(s,Ee),0)&&(P.a+=\" 7\"),jt(Z(s,un),0)&&(P.a+=\" >=8\"),t.C=s,R.a2(t.r,P.a),R.f2(t.r,V.qK.length)),o=Z(L,$e),et(o,rA)==0?R.f2(t.n,1):et(o,pn)==0?R.f2(t.n,2):et(o,Cn)==0?R.f2(t.n,3):et(o,iA)==0?R.f2(t.n,4):et(o,m0)==0?R.f2(t.n,5):et(o,n0)==0?R.f2(t.n,6):et(o,ae)==0?R.f2(t.n,7):et(o,re)==0?R.f2(t.n,8):et(o,Qn)==0?R.f2(t.n,9):et(o,3276800)==0?R.f2(t.n,10):et(o,2228224)==0?R.f2(t.n,11):et(o,2490368)==0?R.f2(t.n,12):R.f2(t.n,0),r=Z(L,Ln),et(r,EA)==0?R.f2(t.j,1):et(r,NA)==0?R.f2(t.j,2):et(r,xA)==0?R.f2(t.j,3):et(r,GA)==0?R.f2(t.j,4):et(r,aP)==0?R.f2(t.j,5):et(r,tr)==0?R.f2(t.j,6):et(r,fA)==0?R.f2(t.j,7):et(r,Rn)==0?R.f2(t.j,8):et(r,OA)==0?R.f2(t.j,9):et(r,ZA)==0?R.f2(t.j,10):et(r,DA)==0?R.f2(t.j,11):et(r,er)==0?R.f2(t.j,12):et(r,nr)==0?R.f2(t.j,13):et(r,Ar)==0?R.f2(t.j,14):R.f2(t.j,0),A=Z(L,Be),et(A,PA)==0?R.f2(t.i,1):et(A,ln)==0?R.f2(t.i,2):et(A,on)==0?R.f2(t.i,3):R.f2(t.i,0),i=Z(L,K0),et(i,1792)==0?R.f2(t.k,1):et(i,1664)==0?R.f2(t.k,2):et(i,1408)==0?R.f2(t.k,3):et(i,128)==0?R.f2(t.k,4):et(i,384)==0?R.f2(t.k,5):et(i,896)==0?R.f2(t.k,6):et(i,1536)==0?R.f2(t.k,7):et(i,r0)==0?R.f2(t.k,8):et(i,1152)==0?R.f2(t.k,9):R.f2(t.k,0),Q=Z(L,_e),et(Q,98304)==0?R.f2(t.p,1):et(Q,81920)==0?R.f2(t.p,2):et(Q,49152)==0?R.f2(t.p,3):et(Q,E0)==0?R.f2(t.p,4):R.f2(t.p,0),w=a1(Z(L,Dr),47),R.f2(t.o,Gt(w)),jt(Z(L,c1),0)&&R.U1(t.c,!0),jt(Z(L,J1),0)&&R.U1(t.f,!0),B=Z(L,fr),S1(B,eA)?R.f2(t.u,1):S1(B,nA)?R.f2(t.u,2):R.f2(t.u,0),jt(Z(L,l0),0)&&R.U1(t.e,!0),jt(Z(L,P0),0)&&R.U1(t.d,!0),t.q&&(b=Z(L,ye),et(b,z0)==0?R.f2(t.q,1):et(b,BA)==0?R.f2(t.q,2):et(b,ye)==0?R.f2(t.q,3):R.f2(t.q,0))},V.wK=function(t){var e,A;if(A=V.tK(t),n.Lm(t.A,t.a))for(e=0;e<t.A.q;e++)n.Lm(t.A,e)&&V.xK(t,e,A);else V.xK(t,t.a,A);n.yq(t.A)},V.xK=function(t,e,A){var P,r,i,D,u,o;for(i=0,R.T1(t.b)?(i=Pt(i,1),n.mn(t.A,e,A,!0)):n.mn(t.A,e,A,!1),R.b2(t.g)==2?n.Yp(t.A,e)||(i=Pt(i,Lr)):n.Pp(t.A,e)||(R.b2(t.g)==1?i=Pt(i,2):R.b2(t.g)==3&&(i=Pt(i,4))),u=0,r=0;r<n.Wo(t.A,e);r++)jt(Z(n.Jl(t.A,n.Vo(t.A,e,r)),P0),0)&&n.cq(t.A,n.Xo(t.A,e,r))&&++u;switch(R.b2(t.s)){case 1:u==0&&(i=Pt(i,112));break;case 2:u<=2&&(i=Pt(i,96));break;case 3:i=Pt(i,8);break;case 4:u<3&&(i=Pt(i,104));break;case 5:u<4&&(i=Pt(i,88));break;case 6:i=Pt(i,56)}switch(R.b2(t.t)!=0&&(i=Pt(i,T1(Ct(R.b2(t.t)+2),22))),o=R.b2(t.r),o==V.qK.length?i=Pt(i,t.C):o!=0&&(i=Pt(i,V.qK[o])),R.b2(t.i)){case 1:i=Pt(i,PA);break;case 2:i=Pt(i,ln);break;case 3:i=Pt(i,on)}switch(D=n.qp(t.A,e),R.b2(t.n)){case 1:D==1?i=Pt(i,c1):D<1&&(i=Pt(i,rA));break;case 2:D==2?i=Pt(i,c1):D<2&&(i=Pt(i,pn));break;case 3:D==3?i=Pt(i,c1):D<3&&(i=Pt(i,Cn));break;case 4:D==2?i=Pt(i,c1):D<2&&(i=Pt(i,iA));break;case 5:D==3?i=Pt(i,c1):D<3&&(i=Pt(i,m0));break;case 6:D==0&&(i=Pt(i,J1));break;case 7:D==1?i=Pt(i,J1):D<1&&(i=Pt(i,ae));break;case 8:D==2?i=Pt(i,J1):D<2&&(i=Pt(i,re));break;case 9:D==3?i=Pt(i,J1):D<3&&(i=Pt(i,Qn));break;case 10:D==0?i=Pt(i,3276800):i=Pt(i,iA);break;case 11:D==0?i=Pt(i,2228224):i=Pt(i,m0);break;case 12:D<=1?i=Pt(i,1099513856e3):D<=3&&(i=Pt(i,m0))}switch(P=n.Lo(t.A,e),R.b2(t.j)){case 1:P==0&&(i=Pt(i,EA));break;case 2:P<=1&&(i=Pt(i,NA));break;case 3:P<=2&&(i=Pt(i,xA));break;case 4:P<=3&&(i=Pt(i,GA));break;case 5:P<2&&(i=Pt(i,aP));break;case 6:P<3&&(i=Pt(i,tr));break;case 7:P<4&&(i=Pt(i,fA));break;case 8:P==0&&(i=Pt(i,Rn));break;case 9:P<2&&(i=Pt(i,OA));break;case 10:P<3&&(i=Pt(i,ZA));break;case 11:P<4&&(i=Pt(i,DA));break;case 12:P<2&&(i=Pt(i,er));break;case 13:P<3&&(i=Pt(i,nr));break;case 14:P<3&&(i=Pt(i,Ar))}switch(R.b2(t.k)){case 1:i=Pt(i,1792);break;case 2:i=Pt(i,1664);break;case 3:i=Pt(i,1408);break;case 4:i=Pt(i,128);break;case 5:i=Pt(i,384);break;case 6:i=Pt(i,896);break;case 7:i=Pt(i,1536);break;case 8:i=Pt(i,r0);break;case 9:i=Pt(i,1152)}switch(R.b2(t.p)){case 1:i=Pt(i,98304);break;case 2:i=Pt(i,81920);break;case 3:i=Pt(i,49152);break;case 4:i=Pt(i,E0)}switch(R.b2(t.o)!=0&&(i=Pt(i,T1(Ct(R.b2(t.o)),47))),R.T1(t.c)&&(n.fp(t.A,e)>0||n.xl(t.A,e)==0&&(n.Ol(t.A,e)==5||n.Zp(t.A,e)||n.Tp(t.A,e)))&&(i=Pt(i,c1)),R.T1(t.f)&&(n.fp(t.A,e)>0||n.xl(t.A,e)==0&&(n.Ol(t.A,e)==5||n.Zp(t.A,e)||n.Tp(t.A,e)))&&(i=Pt(i,J1)),R.b2(t.u)){case 1:i=Pt(i,eA);break;case 2:i=Pt(i,nA)}if(R.T1(t.e)&&(i=Pt(i,l0)),R.T1(t.d)&&(i=Pt(i,P0)),t.q)switch(R.b2(t.q)){case 1:i=Pt(i,z0);break;case 2:i=Pt(i,BA);break;case 3:i=Pt(i,ye)}n.rn(t.A,e,-1,!1),n.rn(t.A,e,i,!0)},V.yK=function(t){return t.B=!1,R.r2(t.v),t.B},V.zK=function(t,e,A,P){V.rK(),this.v=_.l1(t,(e.u[A]&512)!=0?\"Atom Query Features (Multiple)\":\"Atom Query Features\",this),V.sK(this,e,A,P)},G(293,1,wn,V.zK),U.lc=function(t){V.uK(this,t)},U.a=0,U.B=!1,U.C=0,l.H9=O(293),V.BK=function(t,e,A){var P,r,i,D;for(t.u=e,t.a=A,P=mt(k.Math.round((d1.IN==-1&&(d1.IN=d1.KN()),d1.IN*8))),r=v(F(l.Z6,1),H,6,15,[P,-1,-2,-2,P]),D=v(F(l.Z6,1),H,6,15,[P,-2,P,-2,-2,-2,-2,-2,-2,-2,P,-2,P,-2,P,-2,P,-2,2*P,-2,P/2|0,-2,P/2|0,-2,2*P]),R.q2(t.s,r,D),R.j2(t.s,R.m2(t.s,\"Desired Bond type(s):\"),1,1,3,1),t.k=R.k2(t.s,\"Single\"),R.j2(t.s,t.k,1,3,3,3),t.c=R.k2(t.s,\"Double\"),R.j2(t.s,t.c,1,4,3,4),t.n=R.k2(t.s,\"Triple\"),R.j2(t.s,t.n,1,5,3,5),t.i=R.k2(t.s,\"Quadruple\"),R.j2(t.s,t.i,1,6,3,6),t.j=R.k2(t.s,\"Quintuple\"),R.j2(t.s,t.j,1,7,3,7),t.b=R.k2(t.s,\"Delocalized\"),R.j2(t.s,t.b,1,8,3,8),t.g=R.k2(t.s,\"Coordinate (0-order)\"),R.j2(t.s,t.g,1,9,3,9),t.q=R.l2(t.s),R.a2(t.q,\"any ring state\"),R.a2(t.q,dD),R.a2(t.q,\"is any ring bond\"),R.a2(t.q,\"is non-aromatic ring bond\"),R.a2(t.q,\"is aromatic bond\"),R.a2(t.q,\"is any non-aromatic bond\"),R.M1(t.q,t),R.j2(t.s,t.q,1,11,3,11),t.r=R.l2(t.s),R.a2(t.r,\"any ring size\"),R.a2(t.r,\"is in 3-membered ring\"),R.a2(t.r,\"is in 4-membered ring\"),R.a2(t.r,\"is in 5-membered ring\"),R.a2(t.r,\"is in 6-membered ring\"),R.a2(t.r,\"is in 7-membered ring\"),R.a2(t.r,\"smallest ring 8 to 11\"),R.a2(t.r,\"smallest ring >= 12\"),R.j2(t.s,t.r,1,13,3,13),t.e=R.k2(t.s,\"Match formal bond order\"),R.U1(t.e,(e.G[A]&Mn)!=0),R.M1(t.e,t),R.j2(t.s,t.e,1,15,3,15),t.f=R.k2(t.s,\"Match Stereo Configuration\"),R.U1(t.f,(e.G[A]&je)!=0),R.M1(t.f,t),R.j2(t.s,t.f,1,17,3,17),t.d=R.k2(t.s,\"Is atom bridge between\"),R.M1(t.d,t),R.j2(t.s,t.d,1,19,3,19),t.p=R.l2(t.s),i=0;i<16;i++)R.a2(t.p,\"\"+i);R.i2(t.s,t.p,2,21),R.i2(t.s,R.m2(t.s,\" and\"),3,21),R.M1(t.p,t),t.o=R.l2(t.s),V.FK(t,0),R.i2(t.s,t.o,2,23),R.i2(t.s,R.m2(t.s,\" atoms\"),3,23),n.aw(t.u,7),V.GK(t)},V.CK=function(t){var e;e=R.T1(t.d),R.O1(t.k,!e),R.O1(t.c,!e),R.O1(t.n,!e),R.O1(t.i,!e),R.O1(t.j,!e),R.O1(t.b,!e),R.O1(t.g,!e),R.O1(t.f,!e&&n.am(t.u,t.a)==2&&n.bm(t.u,t.a)!=0&&n.bm(t.u,t.a)!=3),R.O1(t.q,!e),R.O1(t.r,!e&&R.b2(t.q)!=1),R.O1(t.p,e),R.O1(t.o,e)},V.DK=function(t,e){var A,P,r;e.j==1?R.o2(t.s):e.j==0?(V.HK(t),t.v=!0,R.o2(t.s)):j1(e.k)===j1(t.d)||j1(e.k)===j1(t.q)?V.CK(t):j1(e.k)===j1(t.p)&&(r=R.b2(t.p),t.t!=r&&(P=t.t+R.b2(t.o),A=V.FK(t,r),P<r?R.f2(t.o,0):P<r+A?R.f2(t.o,P-r):R.f2(t.o,A-1),t.t=r))},V.EK=function(t,e){return n.Lm(t.u,n.Ul(t.u,0,e))&&n.Lm(t.u,n.Ul(t.u,1,e))},V.FK=function(t,e){var A;for(R.d2(t.o),A=0;A<16;A++)R.a2(t.o,\"\"+(e+A));return 16},V.GK=function(t){var e,A,P,r,i,D,u;i=n.cm(t.u,t.a),P=n.dm(t.u,t.a)==8||n.Up(t.u,t.a)?6:n.am(t.u,t.a),((i&1)!=0||P==1)&&R.U1(t.k,!0),((i&2)!=0||P==2)&&R.U1(t.c,!0),((i&4)!=0||P==3)&&R.U1(t.n,!0),((i&32)!=0||P==4)&&R.U1(t.i,!0),((i&64)!=0||P==5)&&R.U1(t.j,!0),((i&8)!=0||P==6)&&R.U1(t.b,!0),((i&16)!=0||P==0)&&R.U1(t.g,!0),(i&Mn)!=0&&R.U1(t.e,!0),(i&je)!=0&&R.U1(t.f,!0),u=i&384,e=i&oA,u==128?R.f2(t.q,1):e==m0?R.f2(t.q,4):u==256?R.f2(t.q,e==0?2:3):R.f2(t.q,e==0?0:5),D=(i&re)>>17,R.f2(t.r,D==0?0:D<=2?D+5:D-2),(i&Qe)!=0?(R.U1(t.d,!0),r=(i&7680)>>9,A=(i&$A)>>13,R.f2(t.p,r),V.FK(t,r),R.f2(t.o,A)):R.f2(t.o,0),V.CK(t)},V.HK=function(t){var e;if(V.EK(t,t.a))for(e=0;e<t.u.r;e++)n.Lm(t.u,n.Ul(t.u,0,e))&&n.Lm(t.u,n.Ul(t.u,1,e))&&V.IK(t,e);else V.IK(t,t.a);n.zq(t.u)},V.IK=function(t,e){var A,P,r,i,D;i=0,R.T1(t.d)?(r=R.b2(t.p),A=R.b2(t.o),i|=r<<9,i|=A<<13,i&=-128,n.In(t.u,e,1)):(R.T1(t.k)&&(i|=1),R.T1(t.c)&&(i|=2),R.T1(t.n)&&(i|=4),R.T1(t.i)&&(i|=32),R.T1(t.j)&&(i|=64),R.T1(t.b)&&(i|=8),R.T1(t.g)&&(i|=16),R.b2(t.q)!=0&&(R.b2(t.q)==1?n.cq(t.u,e)||(i|=128):R.b2(t.q)==2?n.cq(t.u,e)||(i|=256):R.b2(t.q)==3?n.Qp(t.u,e)||(i|=4194560):R.b2(t.q)==4?n.Qp(t.u,e)||(i|=m0):R.b2(t.q)==5&&(n.Qp(t.u,e)||(i|=Y0))),R.b2(t.r)!=0&&(D=R.b2(t.r)+2,D>7&&(D-=7),P=n.Uo(t.u,e),(D<=2||D!=P)&&(i|=D<<17))),n.Hn(t.u,e,We,!1),n.Hn(t.u,e,i,!0),n.Pk(t.u,e)},V.JK=function(t){return t.v=!1,R.r2(t.s),t.v},V.KK=function(t,e,A){this.s=_.l1(t,n.Lm(e,e.D[0][A])&&n.Lm(e,e.D[1][A])?\"Bond Query Features (Multiple)\":\"Bond Query Features\",this),V.BK(this,e,A)},G(294,1,wn,V.KK),U.lc=function(t){V.DK(this,t)},U.a=0,U.t=0,U.v=!1,l.I9=O(294),V.NK=function(){V.NK=u1,V.MK=v(F(l.Nbb,1),yt,2,6,[\"None\",\"One electron (duplet)\",\"Two electrons (triplet)\",\"Two electrons (singulet)\"])},V.OK=function(t){var e,A,P,r,i,D,u,o,Q;for(A=v(F(l.Z6,1),H,6,15,[8,-2,8,-2,8]),Q=v(F(l.Z6,1),H,6,15,[8,-2,4,-2,12,-2,4,-2,12,-2,4,-2,12,-2,8]),R.q2(t.c,A,Q),t.o=R.n2(t.c,1,1),R.M1(t.o,t),R.i2(t.c,R.m2(t.c,\"Atom Label:\"),1,1),R.i2(t.c,t.o,3,1),R.j2(t.c,R.m2(t.c,\"(examples: 'D', 'Li', 'Cys', 'R12', 'R3@C')\"),1,3,3,3),t.p=R.n2(t.c,1,1),R.M1(t.p,t),R.i2(t.c,R.m2(t.c,\"Atom Mass:\"),1,5),R.i2(t.c,t.p,3,5),R.j2(t.c,R.m2(t.c,\"(empty for natural abundance)\"),1,7,3,7),t.q=R.n2(t.c,1,1),R.M1(t.q,t),R.i2(t.c,R.m2(t.c,\"Abnormal Valence:\"),1,9),R.i2(t.c,t.q,3,9),R.j2(t.c,R.m2(t.c,\"(empty for default valence)\"),1,11,3,11),t.a==-1?(P=(n.Ok(),n.Ik)[t.k],R.j3(t.o,t.n==null?P:t.n+\"@\"+P),t.g!=0&&R.j3(t.p,\"\"+t.g),t.j!=-1&&R.j3(t.q,\"\"+t.j)):(P=n.Dl(t.e,t.a),e=n.zl(t.e,t.a),R.j3(t.o,e==null?P:e+\"@\"+P),n.Hl(t.e,t.a)!=0&&R.j3(t.p,\"\"+n.Hl(t.e,t.a)),n.vl(t.e,t.a)!=-1&&R.j3(t.q,\"\"+n.vl(t.e,t.a))),t.b=R.l2(t.c),i=V.MK,D=0,u=i.length;D<u;++D)r=i[D],R.a2(t.b,r);o=t.a==-1?t.i:n.Kl(t.e,t.a),R.f2(t.b,o==32?1:o==48?2:o==16?3:0),R.i2(t.c,R.m2(t.c,\"Radical State:\"),1,13),R.i2(t.c,t.b,3,13)},V.PK=function(t,e){e.j==1?(t.a!=-1&&(n.yn(t.e,t.a,t.k),n.pn(t.e,t.a,t.g),n.cn(t.e,t.a,t.j),n.sn(t.e,t.a,t.i),n.hn(t.e,t.a,t.n)),R.o2(t.c)):e.j==0&&(V.QK(t),R.o2(t.c))},V.QK=function(t){var e,A,P,r,i,D,u;if(D=R.i3(t.o),A=null,c.Szb(D).length!=0&&(P=T.gjb(D,X1(64)),P!=-1&&(A=(c.Mzb(0,P,c.Szb(D).length),c.Szb(D).substr(0,P)),D=(c.Nzb(P+1,c.Szb(D).length+1),c.Szb(D).substr(P+1)))),c.Szb(D).length!=0&&(e=n.lo(D,t.d.c),e!=0||T._ib(D,\"?\"))){if(r=0,c.Szb(R.i3(t.p)).length!=0)try{if(r=T.Khb(R.i3(t.p),n1,Mt),r<(n.Ok(),n.Mk)[e]-18||r>n.Mk[e]+12){R.s2(t.c,\"Your mass is out of range!\");return}}catch(o){if(o=C1(o),Yt(o,40)){R.s2(t.c,\"Your mass is not a number!\");return}else throw Qt(o)}if(u=-1,c.Szb(R.i3(t.q)).length!=0)try{if(u=T.Khb(R.i3(t.q),n1,Mt),u<0||u>15){R.s2(t.c,\"Your valence is out of range!\");return}}catch(o){if(o=C1(o),Yt(o,40)){R.s2(t.c,\"Your valence is not a number!\");return}else throw Qt(o)}i=R.b2(t.b)==1?32:R.b2(t.b)==2?48:R.b2(t.b)==3?16:0,V.$L(t.d,e,r,u,i,A),t.a!=-1&&(n.bl(t.e,t.a,e,r,u,i),n.hn(t.e,t.a,A)),t.f=!0,R.o2(t.c)}},V.RK=function(t){return t.f=!1,R.r2(t.c),t.f},V.SK=function(t,e,A,P,r,i,D){V.NK(),this.c=_.l1(t,FD,this),this.d=e,this.a=-1,this.k=A,this.g=P,this.j=r,this.i=i,this.n=D,V.OK(this)},V.TK=function(t,e,A,P){V.NK(),this.c=_.l1(t,FD,this),this.d=e,this.e=A,this.a=P,this.k=n.Ol(this.e,P),this.g=n.Hl(this.e,P),this.j=n.vl(this.e,P),this.i=n.Kl(this.e,P),this.n=n.zl(this.e,P),V.OK(this)},G(220,1,wn,V.SK,V.TK),U.lc=function(t){V.PK(this,t)},U.a=0,U.f=!1,U.g=0,U.i=0,U.j=0,U.k=0,l.J9=O(220),y.VK=function(t){this.k=t},G(318,1,{}),l.Jcb=O(318),Tt.WK=function(t,e){y.VK.call(this,e),this.j=t},G(161,318,{}),U.j=0,l.T9=O(161),V.XK=function(t,e,A){Tt.WK.call(this,e,t),this.a=A},G(24,161,{24:1},V.XK),U.a=!1,l.K9=O(24),V.ZK=function(t,e){y.pj(t.S,e)},V.$K=function(t,e){var A,P,r,i;if(!e||e.q==0)return!1;if(e.r!=0)for(P=n.Ql(t.V,24*t.ab),n.ae(new Tt.YM(e),new R.S2(_.A0(t.k)),new Tt.FN(0,0,_.y0(t.k),_.x0(t.k)),z1+mt(P));V.cL(t,e,.2*P);)n.Xn(e,.5*P,.5*P);if(V.iM(t),n.Um(e),n.Xm(e),r=t.V.K,t.V.q==0)n.kl(e,t.V),t.a||n.Kn(t.V,r),t.db=k.Math.max(t.db,4),_.D0(t.k),V.zL(t,new V.XK(t,1,!0));else{for(i=t.V.q,n.Uk(t.V,e),t.a||n.Kn(t.V,r),A=0;A<t.V.q;A++)n.tn(t.V,A,A>=i);t.db=k.Math.max(t.db,3),_.D0(t.k),V.zL(t,new V.XK(t,1,!0))}return!0},V._K=function(t,e){var A,P,r,i,D,u;for(D=(t.U&4)!=0,u=!1,r=!1,i=!1,A=null,P=0;P<t.V.q;P++)if(n.Lm(t.V,P))if(u){if(i!=tt.DH(A,n.Ll(t.V,P),n.Ml(t.V,P))){r=!0;break}}else{if(u=!0,!D)break;A=y.uj(t.I,0),i=tt.DH(A,n.Ll(t.V,P),n.Ml(t.V,P))}return e?D?r?(V.nL(t,!0),!0):u?(V.mL(t,!0),!1):(V.nL(t,!1),!0):(V.mL(t,u),!1):D&&(r||!u)},V.aL=function(t){var e,A;n.aw(t.V,15),e=d(l.Z6,H,6,t.V.q,15,1),A=n.dp(t.V,e,!1,!0),A=V.ML(t,e,A),V.hM(t,e,A),t.M=e,t.L=n.hw(t.V,e,A)},V.bL=function(t,e,A){var P,r,i,D,u;if(t.V.K){if(n.Fm(t.V,e)||n.Fm(t.V,A)||(P=n.El(t.V,e),r=n.El(t.V,A),P==null^r==null))return!1;if(P!=null){if(P.length!=r.length)return!1;for(i=0;i<P.length;i++)if(P[i]!=r[i])return!1}if(D=jt(Z(n.Jl(t.V,e),1),0),u=jt(Z(n.Jl(t.V,A),1),0),D!=u)return!1}return n.Ol(t.V,e)==n.Ol(t.V,A)},V.cL=function(t,e,A){var P,r,i,D,u,o,Q,L,w,s;for(P=0,A*=A,u=0;u<e.q;u++){for(Q=e.J[u].a,w=e.J[u].b,D=!1,o=0;o<t.V.q;o++)if(L=n.Ll(t.V,o),s=n.Ml(t.V,o),r=L-Q,i=s-w,r*r+i*i<A){D=!0;break}D&&++P}return P==e.q},V.dL=function(t){var e,A,P;for(V.aL(t),$.QI(new $.SI,V.EL(t)),P=d(l.Z6,H,6,t.L.length,15,1),e=0;e<t.V.q;e++)A=t.M[e],n.nn(t.V,e,n.Gl(t.L[A],P[A]),n.Gl(t.V,e)==0||n.wm(t.V,e)),++P[A]},V.eL=function(t,e){switch(e){case 0:V.lL(t);return;case 1:V.iM(t),t.db=k.Math.max(t.db,6),_.D0(t.k),V.zL(t,new V.XK(t,1,!0));return;case 17:V.XL(t),t.db=k.Math.max(t.db,2),_.D0(t.k),V.zL(t,new V.XK(t,1,!0));return}},V.fL=function(t,e){var A,P,r,i;for(P=0,r=0,i=0,A=0;A<t.V.q;A++)(!e||n.Lm(t.V,A))&&(r+=n.Ll(t.V,A),i+=n.Ml(t.V,A),++P);return P>1?new c0.Tfb(r/P,i/P):null},V.gL=function(t,e,A){var P,r,i,D,u;for(u=d(l._ab,b1,158,A,0,1),D=d(l.Z6,H,6,A,15,1),i=0;i<A;i++)u[i]=new c0.Sfb;for(P=0;P<t.V.q;P++)u[e[P]].a+=n.Ll(t.V,P),u[e[P]].b+=n.Ml(t.V,P),++D[e[P]];for(r=0;r<A;r++)u[r].a/=D[r],u[r].b/=D[r];return u},V.hL=function(t,e){V.iM(t),n.Wk(t.V,t.gb,t.jb,e,0,-1,0,null)&&(t.t=-1,t.db=k.Math.max(t.db,3),_.D0(t.k),V.zL(t,new V.XK(t,1,!0)))},V.iL=function(t,e){var A,P,r;for(P=0,A=0;A<t.V.q;A++)n.Lm(t.V,A)&&++P;r=P!=0&&P!=t.V.q,(t.U&1)!=0?V.kL(t,e,r):V.jL(t,e,r)},V.jL=function(t,e,A){var P;if(t.db==6){if(A)for(P=0;P<t.V.q;P++)n.on(t.V,P,!n.Lm(t.V,P));X.iA(new X.BA(A?4:0),t.V),A&&n.Vm(t.V)}n.xk(t.G,e,new Tt.FN(0,0,_.y0(t.k),_.x0(t.k)),z1|t.T)},V.kL=function(t,e,A){var P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S;if(A&&t.db==6)for(B=d(l.Z6,H,6,t.L.length,15,1),i=0;i<t.V.q;i++)s=t.M[i],n.on(t.L[s],B[s],!n.Lm(t.V,i)),++B[s];for(u=d(l.Y9,v1,35,t.L.length,0,1),h=0;h<t.L.length;h++)t.db==6&&(X.iA(new X.BA(A?4:0),t.L[h]),n.uq(t.L[h])),o=new Tt.YM(t.L[h]),n.ae(o,e,null,z1|t.T),u[h]=o.v;for(S=1.8000000715255737*t.T,D=n.Ql(t.V,24*t.ab),P=(t.U&4)==0?0:t.db==5?QD*_.y0(t.k):tt.CH(y.uj(t.I,0))*t.T/D,m=.5*S,b=0;b<=t.L.length&&((t.U&4)!=0&&b==t.Y&&(tt.EH(y.uj(t.I,0),m-S/2,_.x0(t.k)/2,m-S/2+P,_.x0(t.k)/2),m+=P),b!=t.L.length);b++)Q=m-u[b].c,L=.5*(_.x0(t.k)-u[b].a)-u[b].d,n.Xn(t.L[b],Q,L),m+=S+u[b].b;for(n.xk(t.G,e,new Tt.FN(0,0,_.y0(t.k),_.x0(t.k)),z1|t.T),g=d(l.Z6,H,6,t.L.length,15,1),r=0;r<t.V.q;r++)w=t.M[r],n.vn(t.V,r,n.Ll(t.L[w],g[w])),n.wn(t.V,r,n.Ml(t.L[w],g[w])),++g[w];n.uq(t.V)},V.lL=function(t){var e;t.I&&(c.kzb(t.I.a,0),t.db=k.Math.max(t.db,1),_.D0(t.k)),V.iM(t),e=t.V.K,n.$v(t.V),n.Kn(t.V,e),t.cb.q!=0?(t.db=k.Math.max(t.db,1),_.D0(t.k),V.zL(t,new V.XK(t,1,!0))):(t.db=k.Math.max(t.db,1),_.D0(t.k))},V.mL=function(t,e){return t.V.q!=0&&t.r?R.W1(t.r,e?V.FL(t.V):n.ew(t.V)):!1},V.nL=function(t,e){var A;return A=e?V.GL(t):V.EL(t),A&&t.r?R.X1():!1},V.oL=function(t,e,A){var P;return n.nl(t.V,e,A)?(t.db=k.Math.max(t.db,1),_.D0(t.k),V.zL(t,new V.XK(t,1,!0)),!0):(P=V.xL(t,e,A),P?(y.Cj(t.I,P),t.v=null,t.db=k.Math.max(t.db,1),_.D0(t.k),!0):!1)},V.pL=function(t){return t.t!=-1?(n.ml(t.V,t.t),t.t=-1,t.db=k.Math.max(t.db,1),_.D0(t.k),V.zL(t,new V.XK(t,1,!0)),!0):t.u!=-1?(n.ql(t.V,t.u),t.u=-1,t.db=k.Math.max(t.db,1),_.D0(t.k),V.zL(t,new V.XK(t,1,!0)),!0):t.v&&!t.v.j?(y.Cj(t.I,t.v),t.v=null,t.db=k.Math.max(t.db,1),_.D0(t.k),!0):!1},V.qL=function(t,e){var A,P,r;if(t.t!=-1&&(R.R2(e,(r=R.N2(e),r!=0?r:BP)),V.JL(t,e,t.t),t.w==19&&(P=n.Gl(t.V,t.t),P!=0)))for(A=0;A<t.V.f;A++)A!=t.t&&n.Gl(t.V,A)==P&&V.JL(t,e,A);t.u!=-1&&(R.R2(e,(r=R.N2(e),r!=0?r:BP)),V.KL(t,e,t.u)),t.v&&t.v.Lb(e)},V.rL=function(t){var e,A,P,r,i,D,u,o,Q,L,w,s,h,b;for(i=0,A=0;A<t.V.q;A++)n.Lm(t.V,A)&&++i;for(h=t.V.q,b=t.V.r,t.fb=y.yqb(t.fb,t.fb.length+i),t.ib=y.yqb(t.ib,t.ib.length+i),D=d(l.Z6,H,6,t.V.q,15,1),o=n.$m(t.V,1),Q=n.$m(t.V,2),P=0;P<h;P++)n.Lm(t.V,P)&&(w=t.V.q,t.fb[w]=t.fb[P],t.ib[w]=t.ib[P],D[P]=w,n.hl(t.V,t.V,P,o,Q));for(u=0;u<b;u++)n.Mm(t.V,u)&&n.jl(t.V,t.V,u,o,Q,D,!1);for(r=0;r<h;r++)n.tn(t.V,r,!1);for(e=h;e<t.V.q;e++)n.nn(t.V,e,0,!1);if(t.I)for(L=t.I.a.length-1;L>=0;L--)s=y.uj(t.I,L),s.g&&!Yt(s,61)&&y.pj(t.I,s.Fb())},V.sL=function(t,e){var A,P;for(new V.PM(t._,e),P=!1,A=0;A<c.Szb(e.e).length;A++)if(!Wu(T.Tib(e.e,A))){P=!0;break}P||y.Cj(t.I,e),_.D0(t.k)},V.tL=function(t){var e,A,P;if(null.xd()||null.xd())V._K(t,!0);else if(null.xd())t.r&&R.Z1();else if(null.xd())V.pM(t,null.xd());else if(null.xd())V.UL(t);else if(!null.xd())if(null.xd())V.dL(t),V.nM(t,k.Math.max(t.db,1));else if(null.xd())V.WL(t,!0,!0);else if(null.xd())V.WL(t,!1,!0);else if(null.xd())V.WL(t,!0,!1);else if(null.xd())V.PL(t);else if(null.xd())V.YK=!V.YK,V.YK&&V.dL(t);else if(null.xd())V.AL(t,!0);else if(null.xd())V.AL(t,!1);else if(null.xd())V.YL(t);else if(null.xd())_.v1(t._,vD,pD);else if(null.xd())if(null.xd(),e=T.Khb(null.xd(),n1,Mt),A=T.Khb(null.xd(),n1,Mt),n.Lm(t.V,e))for(P=0;P<t.V.f;P++)n.Lm(t.V,P)&&n.fn(t.V,P,A);else n.fn(t.V,e,A);else null.xd()?(t.H=6,t.db=k.Math.max(t.db,1),_.D0(t.k)):null.xd()?(t.H=256,t.db=k.Math.max(t.db,1),_.D0(t.k)):null.xd()&&V._L(t,t.w==19?16:0)},V.uL=function(t,e){var A,P,r,i,D,u,o,Q,L,w;if(!t.W){if(e.j==1)if(e.b==-3&&(t.Z=!0,V.oM(t)),e.b==-2&&(t.d=!0,V.oM(t)),e.b==-1&&V.oM(t),e.a)e.b==122?(V.XL(t),t.db=k.Math.max(t.db,2),_.D0(t.k),V.zL(t,new V.XK(t,1,!0))):e.b==99?V._K(t,!0):e.b==118&&((t.U&4)!=0&&t.r&&R.Z1(),V.UL(t));else if(e.b==-4)t.w!=19&&(V.iM(t),V.pL(t)||n.sl(t.V)&&(t.db=k.Math.max(t.db,1),_.D0(t.k),V.zL(t,new V.XK(t,1,!0))));else if(e.b==-6||t.t==-1&&e.b==63){_.v1(t._,vD,pD);return}else if(e.b==-8)c.Szb(t.i.a).length!=0&&(V.wL(t,t.i.a),T.ugb(t.i,0));else if(t.u!=-1)i=e.b,i==113&&t.V.K?V.fM(t,t.u):i==118?n.$k(t.V,t.u,3,!1,n.Ql(t.V,24*t.ab))&&(t.db=k.Math.max(t.db,3),_.D0(t.k),V.zL(t,new V.XK(t,1,!0))):i>=52&&i<=55?n.$k(t.V,t.u,i-48,!1,n.Ql(t.V,24*t.ab))&&(t.db=k.Math.max(t.db,3),_.D0(t.k),V.zL(t,new V.XK(t,1,!0))):i==97||i==98?n.$k(t.V,t.u,6,!0,n.Ql(t.V,24*t.ab))&&(t.db=k.Math.max(t.db,3),_.D0(t.k),V.zL(t,new V.XK(t,1,!0))):(r=i==48?(V.iM(t),n.el(t.V,t.u,16)):i==49?(V.iM(t),n.el(t.V,t.u,1)):i==50?(V.iM(t),n.el(t.V,t.u,2)):i==51?(V.iM(t),n.el(t.V,t.u,4)):i==117?(V.iM(t),n.el(t.V,t.u,257)):i==100?(V.iM(t),n.el(t.V,t.u,129)):i==99?(V.iM(t),n.el(t.V,t.u,386)):i==109&&(V.iM(t),n.el(t.V,t.u,16)),r&&(t.db=k.Math.max(t.db,1),_.D0(t.k),V.zL(t,new V.XK(t,1,!0))));else if(t.t!=-1)if(i=e.b,Q=c.Szb(t.i.a).length==0,Q?t.K=i:(t.K==108&&(T.ugb(t.i,0),T.Ejb(t.i,76)),t.K=-1),Q&&i==108)T.Ijb(t.i,\"Cl\"),t.db=k.Math.max(t.db,1),_.D0(t.k);else if(Q&&(i==43||i==45))V.iM(t),n.dl(t.V,t.t,i==43)&&(t.db=k.Math.max(t.db,3),_.D0(t.k),V.zL(t,new V.XK(t,1,!0)));else if(Q&&i==46)V.iM(t),w=n.Kl(t.V,t.t)==32?0:32,n.sn(t.V,t.t,w),t.db=k.Math.max(t.db,3),_.D0(t.k),V.zL(t,new V.XK(t,1,!0));else if(Q&&i==58)V.iM(t),w=n.Kl(t.V,t.t)==48?16:n.Kl(t.V,t.t)==16?0:48,n.sn(t.V,t.t,w),t.db=k.Math.max(t.db,3),_.D0(t.k),V.zL(t,new V.XK(t,1,!0));else if(Q&&i==113&&t.V.K)V.eM(t,t.t);else if(Q&&t.V.K&&(i==120||i==88))L=v(F(l.Z6,1),H,6,15,[9,17,35,53]),n.ln(t.V,t.t,L),t.db=k.Math.max(t.db,3),_.D0(t.k),V.zL(t,new V.XK(t,1,!0));else if(Q&&i==63)V.iM(t),n.bl(t.V,t.t,0,0,-1,0)&&(t.db=k.Math.max(t.db,3),_.D0(t.k),V.zL(t,new V.XK(t,1,!0)));else if(Q&&i>48&&i<=57){if(n.fp(t.V,t.t)>0){for(V.iM(t),D=i-47,A=t.t,u=t.V.q-t.V.f,o=1;o<D&&(V.kM(t,A),P=n.Qk(t.V,t.hb,t.kb,0),P!=-1);o++)n.Sk(t.V,A,P),A=P-u,n.aw(t.V,1);t.db=k.Math.max(t.db,3),_.D0(t.k),V.zL(t,new V.XK(t,1,!0))}}else!Q&&e.b==-7?(T.ugb(t.i,0),t.db=k.Math.max(t.db,1),_.D0(t.k)):!Q&&e.b==-5?(T.ugb(t.i,c.Szb(t.i.a).length-1),t.db=k.Math.max(t.db,1),_.D0(t.k)):i>=65&&i<=90||i>=97&&i<=122||i>=48&&i<=57||i==45?(T.Ejb(t.i,i&r1),t.db=k.Math.max(t.db,1),_.D0(t.k)):(i==10||i==13)&&V.wL(t,t.i.a);else(t.U&7)==0&&(i=e.b,i==104&&V.AL(t,!0),i==118&&V.AL(t,!1));e.j==2&&(e.b==-3&&(t.Z=!1,V.oM(t)),e.b==-2&&(t.d=!1,V.oM(t)),e.b==-1&&V.oM(t))}},V.vL=function(t,e){var A,P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S;if(e.j==1){if(t.t!=-1&&c.Szb(t.i.a).length!=0&&V.wL(t,t.i.a),T.ugb(t.i,0),e.e){V.IL(t);return}if(e.b==1){if(e.c==2)return;t.W=!0,V.oM(t),V.RL(t,e)}}if(e.j==2){if(e.e){V.IL(t);return}e.b==1&&(t.W=!1,V.oM(t),V.SL(t))}if(e.j==3&&e.b==1&&e.c==2){V.HL(t,e.g,e.i);return}if(e.j==4&&(_.r1(t._),V.oM(t)),e.j==6&&(t.W=!1,m=e.g,S=e.i,V.mM(t,m,S,!1)&&_.D0(t.k),V.oM(t)),e.j==7){switch(t.W=!0,t.hb=e.g,t.kb=e.i,s=V.mM(t,t.hb,t.kb,!0),t.X){case 2:V.jM(t)&&(s=!0);break;case 1:(t.hb-t.gb)*(t.hb-t.gb)+(t.kb-t.jb)*(t.kb-t.jb)<100&&V.kM(t,t.e),s=!0;break;case 3:n.vn(t.V,t.e,t.fb[t.e]+t.hb-t.gb),n.wn(t.V,t.e,t.ib[t.e]+t.kb-t.jb),t.f!=-1&&(n.vn(t.V,t.f,t.fb[t.f]+t.hb-t.gb),n.wn(t.V,t.f,t.ib[t.f]+t.kb-t.jb)),t.db=k.Math.max(t.db,2),_.D0(t.k);break;case 9:V.rL(t),t.X=4;case 4:if(t.I)for(i=new y.rqb(t.I);i.a<i.c.a.length;)r=y.qqb(i),r.g&&r.Nb(t.hb,t.kb);for(u=0;u<t.V.q;u++)n.Lm(t.V,u)&&(n.vn(t.V,u,t.fb[u]+t.hb-t.gb),n.wn(t.V,u,t.ib[u]+t.kb-t.jb));t.db=k.Math.max(t.db,2),_.D0(t.k);break;case 11:y.pj(t.I,t.v.Fb()),t.X=10;case 10:t.v.Nb(t.hb,t.kb),t.db=k.Math.max(t.db,2),_.D0(t.k);break;case 7:for(h=!1,P=0;P<t.V.q&&!h;P++)h=n.Lm(t.V,P);if(b=!1,t.I)for(o=0;o<t.I.a.length&&!b;o++)b=y.uj(t.I,o).g;if(L=k.Math.abs(t.kb-t.jb)<20?1:k.Math.exp((t.kb-t.jb)/100),A=k.Math.abs(t.hb-t.gb)<20?0:(t.hb-t.gb)/50,g=h||b,t.I&&(!g||b)){for(o=0;o<t.I.a.length;o++)(!g||y.uj(t.I,o).g)&&y.uj(t.I,o).Ob(L,A);t.db=k.Math.max(t.db,2),_.D0(t.k)}(!g||h)&&(n.Zn(t.V,L,A,g),t.db=k.Math.max(t.db,2),_.D0(t.k));break;case 5:case 6:if(B=null,t.X==5){if(k.Math.abs(t.hb-Tt.uN(t.R,t.R.a-1))<3&&k.Math.abs(t.kb-Tt.vN(t.R,t.R.a-1))<3)break;Tt.wN(t.R),Tt.tN(t.R,t.hb,t.kb),Tt.tN(t.R,t.gb,t.jb),B=t.R}else B=new Tt.FN(k.Math.min(t.gb,t.hb),k.Math.min(t.jb,t.kb),k.Math.abs(t.hb-t.gb),k.Math.abs(t.kb-t.jb));if(t.I)for(o=0;o<t.I.a.length;o++)w=y.uj(t.I,o),Q=n.ke(w,B),(!t.O||!t.Q[o])&&Q!=w.g&&(w.g=Q,t.db=k.Math.max(t.db,1));for(D=0;D<t.V.q;D++)Q=B.Gb(mt(n.Ll(t.V,D)),mt(n.Ml(t.V,D))),(!t.O||!t.P[D])&&Q!=n.Lm(t.V,D)&&(n.tn(t.V,D,Q),t.db=k.Math.max(t.db,1));s=!0;break;case 8:s=!0}s&&_.D0(t.k)}},V.wL=function(t,e){var A,P,r,i,D,u,o,Q,L,w,s,h;if(T.ugb(t.i,0),P=n.lo(e,t.c),P!=0)if(V.iM(t),n.bl(t.V,t.t,P,0,-1,0)){t.db=k.Math.max(t.db,3),_.D0(t.k),V.zL(t,new V.XK(t,1,!0));return}else t.db=k.Math.max(t.db,0),_.D0(t.k);if(t.j!=null&&c.Szb(t.j).length!=0&&(e=t.j),s=(n.Ns(),L=(!n.Ms&&n.Os(),y.epb(n.Ms,T.ljb(c.Szb(e).toLowerCase(),\"-\"))),L==null?null:n.Lq(new n.Xq(!1),L)),s){for(V.iM(t),o=new n.sw,n.to(o,t.V,t.t,null),w=n.Ql(o,t.ab*24),D=o.q,A=0;A<o.q;A++)o.u[A]|=n0;for(n._k(o,s,0),X.iA(new X.BA(4),o),r=n.Ll(t.V,t.t)-w*o.J[0].a,i=n.Ml(t.V,t.t)-w*o.J[0].b,u=t.V.q,n._k(t.V,s,t.t),h=t.V.q-u,Q=0;Q<h;Q++)n.vn(t.V,u+Q,w*o.J[D+Q].a+r),n.wn(t.V,u+Q,w*o.J[D+Q].b+i);n.uq(t.V),t.db=k.Math.max(t.db,3),_.D0(t.k),V.zL(t,new V.XK(t,1,!0))}},V.xL=function(t,e,A){var P,r;if(t.I){for(r=new y.rqb(t.I);r.a<r.c.a.length;)if(P=y.qqb(r),P.Gb(e,A))return P}return null},V.yL=function(t){var e,A,P,r,i,D;for(i=-1,D=U0,e=0;e<t.V.q;e++)P=t.gb-n.Ll(t.V,e),r=t.jb-n.Ml(t.V,e),A=k.Math.sqrt(P*P+r*r),A<24&&D>A&&(D=A,i=t.M[e]);return i},V.zL=function(t,e){var A;A=e.j,(A&t.J)==0&&(_.t1(t._,new V.sM(t,A,e)),t.J|=A)},V.AL=function(t,e){var A,P,r,i,D;for(D=!1,P=0;P<t.V.q;P++)if(n.Lm(t.V,P)){D=!0;break}if(i=V.fL(t,D),i){for(V.iM(t),A=0;A<t.V.q;A++)(!D||n.Lm(t.V,A))&&(e?n.vn(t.V,A,2*i.a-n.Ll(t.V,A)):n.wn(t.V,A,2*i.b-n.Ml(t.V,A)));for(r=0;r<t.V.r;r++)(!D||n.Mm(t.V,r))&&(n.dm(t.V,r)==257?n.In(t.V,r,129):n.dm(t.V,r)==129&&n.In(t.V,r,257));t.db=k.Math.max(t.db,1),_.D0(t.k)}},V.BL=function(t,e){return n.lo(e,t.c)!=0?1:(t.j=n.Ps(e),t.j==null?V.LL(e)?3:4:c.Szb(t.j).length==0?3:2)},V.CL=function(t,e){var A,P,r;if(A=n.Ul(t.V,0,e),n.Il(t.V,A)!=0)return n.um(t.V,A)||n.Il(t.V,A)!=1&&n.Il(t.V,A)!=2?-1:A;if(n.Mo(t.V,A)==1){for(r=0;r<n.Wo(t.V,A);r++)if(n.Yo(t.V,A,r)==2&&(P=n.Vo(t.V,A,r),n.Mo(t.V,P)==2&&(n.Il(t.V,P)==1||n.Il(t.V,P)==2)))return P}return-1},V.DL=function(t,e){var A;return A=n.Do(t.V,n.Ul(t.V,0,e)),A!=-1&&n.bm(t.V,A)!=1&&n.bm(t.V,A)!=2&&(A=-1),A},V.EL=function(t){var e,A;if((t.U&4)==0||t.L==null)return null;for(A=new tt.yH,e=0;e<t.L.length;e++)e<t.Y?tt.cH(A,t.L[e]):tt.aH(A,t.L[e]);return A},V.FL=function(t){var e,A,P,r,i,D,u;for(P=0,A=0;A<t.q;A++)(t.u[A]&512)!=0&&++P;if(P==0)return null;for(i=0,r=0;r<t.r;r++)(t.u[t.D[0][r]]&t.u[t.D[1][r]]&512)!=0&&++i;for(u=d(l.teb,wt,6,t.q,16,1),e=0;e<t.q;e++)u[e]=(t.u[e]&512)!=0;return D=new n.tw(P,i),n.yo(t,D,u,!1,null),D},V.GL=function(t){var e,A,P;for(A=new tt.yH,e=0;e<t.L.length;e++)P=V.FL(t.L[e]),P&&(e<t.Y?(y.pj(A.g,P),A.d=-1):(y.pj(A.f,P),A.d=-1));return A},V.HL=function(t,e,A){var P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m;if(i=n.tl(t.V,e,A),D=n.ul(t.V,e,A),t.w==2){if(t.V.K){if(i!=-1)V.eM(t,i);else if(D!=-1)V.fM(t,D);else if(t.v){if(!t.Z){for(s=0;s<t.V.q;s++)n.tn(t.V,s,!1);for(r=new y.rqb(t.I);r.a<r.c.a.length;)P=y.qqb(r),P.g=!1}t.v.g=!0,t.db=k.Math.max(t.db,1),_.D0(t.k)}}else if(m=-1,i!=-1?m=i:D!=-1&&(m=n.Ul(t.V,0,D)),m!=-1||t.v){if(!t.Z){for(s=0;s<t.V.q;s++)n.tn(t.V,s,!1);if(t.I)for(Q=new y.rqb(t.I);Q.a<Q.c.a.length;)o=y.qqb(Q),o.g=!1}if(m!=-1)if((t.U&1)!=0)for(L=t.M[m],s=0;s<t.V.q;s++)t.M[s]==L&&n.tn(t.V,s,!0);else for(w=n.bp(t.V,m,!1),s=0;s<w.length;s++)n.tn(t.V,w[s],!0);else t.v.g=!0;t.db=k.Math.max(t.db,1),_.D0(t.k)}}else if(t.w==18&&(L=-2,(t.U&1)!=0&&(L=V.yL(t)),L!=-1)){for(B=Mt,g=n1,h=0;h<t.V.q;h++)(L==-2||t.M[h]==L)&&(B>n.Ll(t.V,h)&&(B=n.Ll(t.V,h)),g<n.Ll(t.V,h)&&(g=n.Ll(t.V,h)));if(g>B){for(u=(g+B)/2,b=0;b<t.V.q;b++)(L==-2||t.M[b]==L)&&n.vn(t.V,b,2*u-n.Ll(t.V,b));for(s=0;s<t.V.r;s++)if(L==-2||t.M[n.Ul(t.V,0,s)]==L)switch(n.dm(t.V,s)){case 257:n.In(t.V,s,129);break;case 129:n.In(t.V,s,257)}}t.db=k.Math.max(t.db,1),_.D0(t.k),V.zL(t,new V.XK(t,1,!0))}},V.IL=function(t){t.r&&(V._K(t,!1),null.xd(),null.xd(),(t.U&4)!=0&&(null.xd(),null.xd()),(t.U&4)!=0&&null.xd()),(t.U&4)!=0&&t.w==19&&(null.xd(),null.xd(),null.xd(),null.xd(),null.xd(),null.xd()),t.w==18&&(null.xd(),null.xd(),null.xd()),t.g&&t.t!=-1&&(n.yl(t.V,t.t),null.xd(),null.xd(),null.xd(),null.xd(),null.xd(),null.xd(),null.xd(),null.xd(),null.xd(),null.xd()),null.xd()},V.JL=function(t,e,A){var P,r,i;P=mt(pr*n.Pl(t.V)),r=mt(n.Ll(t.V,A)),i=mt(n.Ml(t.V,A)),R.F2(e,r-P,i-P,2*P)},V.KL=function(t,e,A){var P,r,i,D,u,o;r=mt(pr*n.Pl(t.V)),i=mt(n.Ll(t.V,n.Ul(t.V,0,A))),u=mt(n.Ml(t.V,n.Ul(t.V,0,A))),D=mt(n.Ll(t.V,n.Ul(t.V,1,A))),o=mt(n.Ml(t.V,n.Ul(t.V,1,A))),P=R.M2(e),R.Q2(e,r),R.B2(e,i,u,D,o),R.Q2(e,P)},V.LL=function(t){var e;if(c.Szb(t).length<3){for(e=1;e<(n.Ok(),n.Ik).length;e++)if(T.ojb(n.Ik[e],t))return!0}return!1},V.ML=function(t,e,A){var P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S,p,M,z,q,x;if(A<2)return A;for(z=d(l.teb,b1,12,A,0,2),b=1;b<A;b++)z[b]=d(l.teb,wt,6,b,16,1);for(D=n.Ql(t.V,24*t.ab),r=1;r<t.V.q;r++)for(i=0;i<r;i++)o=n.Ll(t.V,i)-n.Ll(t.V,r),Q=n.Ml(t.V,i)-n.Ml(t.V,r),u=k.Math.sqrt(o*o+Q*Q),u<hA*D&&(w=e[r],s=e[i],w!=s&&(w>s?z[w][s]=!0:z[s][w]=!0));for(x=d(l.Z6,H,6,A,15,1),L=0;L<A;L++)x[L]=L;for(M=0,h=1;h<A;h++)for(m=0;m<h;m++)if(z[h][m]&&(g=x[h],B=x[m],g!=B))for(++M,q=k.Math.min(g,B),p=k.Math.max(g,B),S=0;S<A;S++)x[S]==p?x[S]=q:x[S]>p&&--x[S];for(P=0;P<t.V.q;P++)e[P]=x[e[P]];return A-M},V.NL=function(t,e,A){var P,r;for(t.J&=~e,r=new y.rqb(t.S);r.a<r.c.a.length;)P=y.qqb(r),P.lc(A)},V.OL=function(t,e,A,P){return(t.U&6)!=0&&A[1]!=P[1]?A[1]==0?-1:1:en(e[A[0]].a+e[A[0]].b,e[P[0]].a+e[P[0]].b)},V.PL=function(t){var e,A;for(A=!1,e=0;e<t.V.f;e++)n.Gl(t.V,e)!=0&&n.wm(t.V,e)&&(A||(V.iM(t),A=!0),n.nn(t.V,e,n.Gl(t.V,e),!1));A&&V.nM(t,k.Math.max(t.db,1))},V.QL=function(t){t.db=k.Math.max(t.db,4),_.D0(t.k),V.zL(t,new V.XK(t,1,!1))},V.RL=function(t,e){var A,P,r,i,D,u,o,Q,L,w,s,h,b;switch(t.gb=e.g,t.jb=e.i,t.w){case 18:if(h=t.gb,b=t.jb,t.e=n.tl(t.V,t.gb,t.jb),t.e!=-1&&(t.gb=n.Ll(t.V,t.e),t.jb=n.Ml(t.V,t.e)),n.$n(t.V,h,b),t.I)for(u=new y.rqb(t.I);u.a<u.c.a.length;)D=y.qqb(u),D.Pb(h,b);V.iM(t),t.X=7;break;case 2:if(t.X=0,t.e=n.tl(t.V,t.gb,t.jb),t.e!=-1&&(t.f=-1,t.gb=n.Ll(t.V,t.e),t.jb=n.Ml(t.V,t.e),n.Lm(t.V,t.e)?t.X=t.Z?9:4:t.X=3),t.X==0&&(r=n.ul(t.V,t.gb,t.jb),r!=-1&&(t.e=n.Ul(t.V,0,r),t.f=n.Ul(t.V,1,r),n.Mm(t.V,r)?t.X=t.Z?9:4:t.X=3)),t.X==0&&t.v&&(t.v.g?t.X=t.Z?9:4:t.X=t.Z&&!Yt(t.v,61)?11:10),t.X!=0){for(t.fb=d(l.X6,Bt,6,t.V.q,15,1),t.ib=d(l.X6,Bt,6,t.V.q,15,1),Q=0;Q<t.V.q;Q++)t.fb[Q]=n.Ll(t.V,Q),t.ib[Q]=n.Ml(t.V,Q);if(t.I)for(u=new y.rqb(t.I);u.a<u.c.a.length;)D=y.qqb(u),n.oe(D,t.gb,t.jb);V.iM(t);break}for(t.P=d(l.teb,wt,6,t.V.q,16,1),t.I&&(t.Q=d(l.teb,wt,6,t.I.a.length,16,1)),t.O=e.f,L=0;L<t.V.q;L++)t.P[L]=n.Lm(t.V,L);if(t.I)for(o=0;o<t.I.a.length;o++)t.Q[o]=y.uj(t.I,o).g;e.a?t.X=6:(t.R=new Tt.xN,Tt.tN(t.R,t.gb,t.jb),Tt.tN(t.R,t.gb,t.jb),t.X=5);break;case 4:V.iM(t),V.oL(t,t.gb,t.jb);break;case 3:s=n.tl(t.V,t.gb,t.jb),s!=-1&&(V.iM(t),n.gn(t.V,s,!n.sm(t.V,s)),t.db=k.Math.max(t.db,1),_.D0(t.k),V.zL(t,new V.XK(t,1,!0)));break;case 101:case 103:case 102:t.u!=-1&&V.VL(t,t.u)&&(V.iM(t),V.aM(t,t.u,t.w==101?0:t.w==103?1:2),t.db=k.Math.max(t.db,1),_.D0(t.k),V.zL(t,new V.XK(t,1,!0)));break;case 5:case 6:case 23:if(t.e=n.tl(t.V,t.gb,t.jb),t.e==-1){if(P=n.ul(t.V,t.gb,t.jb),P!=-1){V.iM(t),i=511,t.w==6?i=257:t.w==23&&(i=129),n.el(t.V,P,i)&&(t.db=k.Math.max(t.db,1),_.D0(t.k),V.zL(t,new V.XK(t,1,!0)));break}}else{if(n.Io(t.V,t.e)==8)return;t.gb=n.Ll(t.V,t.e),t.jb=n.Ml(t.V,t.e)}t.X=1,V.kM(t,t.e),_.D0(t.k);break;case 22:if(t.e=n.tl(t.V,t.gb,t.jb),t.e!=-1){if(n.Io(t.V,t.e)==8)return;t.gb=n.Ll(t.V,t.e),t.jb=n.Ml(t.V,t.e)}t.X=2,t.q=0;break;case 7:V.iM(t),n.Yk(t.V,t.gb,t.jb,3,!1,n.Ql(t.V,24*t.ab))&&(t.db=k.Math.max(t.db,3),_.D0(t.k),V.zL(t,new V.XK(t,1,!0)));break;case 24:V.iM(t),n.Yk(t.V,t.gb,t.jb,4,!1,n.Ql(t.V,24*t.ab))&&(t.db=k.Math.max(t.db,3),_.D0(t.k),V.zL(t,new V.XK(t,1,!0)));break;case 8:V.iM(t),n.Yk(t.V,t.gb,t.jb,5,!1,n.Ql(t.V,24*t.ab))&&(t.db=k.Math.max(t.db,3),_.D0(t.k),V.zL(t,new V.XK(t,1,!0)));break;case 25:V.iM(t),n.Yk(t.V,t.gb,t.jb,6,!1,n.Ql(t.V,24*t.ab))&&(t.db=k.Math.max(t.db,3),_.D0(t.k),V.zL(t,new V.XK(t,1,!0)));break;case 9:V.iM(t),n.Yk(t.V,t.gb,t.jb,7,!1,n.Ql(t.V,24*t.ab))&&(t.db=k.Math.max(t.db,3),_.D0(t.k),V.zL(t,new V.XK(t,1,!0)));break;case 26:V.iM(t),n.Yk(t.V,t.gb,t.jb,6,!0,n.Ql(t.V,24*t.ab))&&(t.db=k.Math.max(t.db,3),_.D0(t.k),V.zL(t,new V.XK(t,1,!0)));break;case 10:V.iM(t),n.cl(t.V,t.gb,t.jb,!0)&&(t.db=k.Math.max(t.db,3),_.D0(t.k),V.zL(t,new V.XK(t,1,!0)));break;case 27:V.iM(t),n.cl(t.V,t.gb,t.jb,!1)&&(t.db=k.Math.max(t.db,3),_.D0(t.k),V.zL(t,new V.XK(t,1,!0)));break;case 16:V.hL(t,1);break;case 11:V.hL(t,6);break;case 12:V.hL(t,7);break;case 13:V.hL(t,8);break;case 28:V.hL(t,14);break;case 29:V.hL(t,15);break;case 30:V.hL(t,16);break;case 14:V.hL(t,9);break;case 31:V.hL(t,17);break;case 15:V.hL(t,35);break;case 32:V.hL(t,53);break;case 33:e.d||e.a?(A=n.tl(t.V,t.gb,t.jb),A!=-1&&V.gM(t,A)):(V.iM(t),n.Wk(t.V,t.gb,t.jb,t.F,t.B,t.D,t.C,t.A)&&(t.t=-1,t.db=k.Math.max(t.db,3),_.D0(t.k),V.zL(t,new V.XK(t,1,!0))));break;case 19:t.e=n.tl(t.V,t.gb,t.jb),t.e!=-1&&t.e<t.V.f&&(!t.V.K||!n.Fm(t.V,t.e))&&(t.gb=n.Ll(t.V,t.e),t.jb=n.Ml(t.V,t.e),t.X=8);break;case 21:w=null,t.v?Yt(t.v,95)&&(w=t.v):(w=new n._w,n.Vw(w,t.gb,t.jb),y.pj(t.I,w)),V.sL(t,w),V.iM(t),t.db=k.Math.max(t.db,3),_.D0(t.k)}},V.SL=function(t){var e,A,P,r,i,D,u,o,Q,L,w,s,h,b,g;switch(s=t.X,t.X=0,s){case 1:if(b=n.tl(t.V,t.hb,t.kb),b!=-1&&n.Io(t.V,b)==8)return;V.iM(t),t.e==-1&&(t.e=n.Qk(t.V,t.gb,t.jb,0)),b==-1&&(b=n.Qk(t.V,t.hb,t.kb,0)),t.e!=-1&&b!=-1&&(r=n.Hm(t.V,t.e)||n.Hm(t.V,b)?16:1,t.w==6&&(r=257),t.w==23&&(r=129),n.Xk(t.V,t.e,b,r)),t.db=k.Math.max(t.db,3),_.D0(t.k),V.zL(t,new V.XK(t,1,!0));break;case 2:if(V.iM(t),t.q>0&&(t.e==-1&&(t.e=n.Qk(t.V,t.gb,t.jb,0)),t.n[0]==-1&&(t.n[0]=n.Qk(t.V,t.o[0],t.p[0],0)),t.n[0]!=-1&&n.Sk(t.V,t.e,t.n[0])),t.q>1)for(u=1;u<t.q;u++)t.n[u]==-1&&(t.n[u]=n.Qk(t.V,t.o[u],t.p[u],0)),t.n[u]!=-1&&n.Sk(t.V,t.n[u-1],t.n[u]);t.db=k.Math.max(t.db,3),_.D0(t.k),V.zL(t,new V.XK(t,1,!0));break;case 3:case 4:case 7:t.db=k.Math.max(t.db,3),_.D0(t.k),V.zL(t,new V.XK(t,1,!0));break;case 10:t.db=k.Math.max(t.db,3),_.D0(t.k);break;case 5:case 6:for(h=!1,D=0;D<t.V.q;D++)if(t.P[D]!=n.Lm(t.V,D)){h=!0;break}_.D0(t.k),h&&V.zL(t,new V.XK(t,2,!0));break;case 8:if(w=!1,P=t.t,P!=-1&&t.V.K&&n.Fm(t.V,P)&&(P=-1),Q=n.Gl(t.V,t.e),P==-1){if(V.iM(t),Q!=0){for(w=!0,g=!1,e=0;e<t.V.f;e++)n.Gl(t.V,e)==Q&&(g=g|n.wm(t.V,e),n.nn(t.V,e,0,!1));V.YK&&!g&&V.dL(t)}}else{if(V.iM(t),w=!0,g=!1,t.e==P)for(o=n.Gl(t.V,t.e),e=0;e<t.V.f;e++)n.Gl(t.V,e)==o&&(g=g|n.wm(t.V,e),n.nn(t.V,e,0,!1));else{for(L=n.Gl(t.V,P),A=0;A<t.V.f;A++)(n.Gl(t.V,A)==Q||n.Gl(t.V,A)==L)&&n.nn(t.V,A,0,!1);for(i=1,e=0;e<t.V.f;e++)n.Gl(t.V,e)==i&&(++i,e=-1);n.nn(t.V,t.e,i,!1),n.nn(t.V,P,i,!1)}V.YK&&!g&&V.dL(t)}w&&V.nM(t,k.Math.max(t.db,1)),_.D0(t.k)}},V.TL=function(t,e){var A,P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S,p,M,z,q,x,J,E,N,ft,Lt,ot,st,ut,rt,Ut,ht,it,bt;if((t.eb!=_.y0(t.k)||t.N!=_.x0(t.k))&&(t.eb=_.y0(t.k),t.N=_.x0(t.k),t.db<3&&(t.db=3)),r=R.I2(e),u=R.L2(e),R.R2(e,r),R.H2(e,0,0,t.eb,t.N),(t.U&4)!=0&&t.I.a.length==0&&(h=.5*t.eb,b=.5*t.N,i=.03999999910593033*t.eb,A=new tt.FH,tt.EH(A,h-i,b,h+i,b),A.j=!0,y.pj(t.I,A)),L=!1,t.db!=0){switch((t.U&1)!=0&&t.db!=5&&V.aL(t),t.G=(t.U&4)!=0?new n.Ak(new tt.AH(t.L,t.Y),t.I):(t.U&2)!=0?new n.Bk(t.L,t.Y,t.I):(t.U&1)!=0?new n.Ck(t.L,t.I):new n.zk(t.V,t.I),n.vk(t.G,u,r),n.sk(t.G,t.T),n.wk(t.G,(t.U&1)==0?0:(w=kP,T._ib(c.Szb(w).substr(0,18),En)||T._ib(c.Szb(w).substr(0,17),Nn)||T._ib(c.Szb(w).substr(0,14),xn)?lt.D3(r,TA):(lt.C3(),r&N0|mt(k.Math.round(TA*((r&X0)>>16)))<<16|mt(k.Math.round(TA*((r&J0)>>8)))<<8|mt(k.Math.round(TA*(r&255)))))),n.uk(t.G,t.$),n.tk(t.G,t.H|8|(t.w==19?80:0)),t.db){case 6:case 4:case 5:V.iL(t,e);break;case 3:z=n.xk(t.G,e,new Tt.FN(0,0,t.eb,t.N),0),z&&(t.U&1)!=0&&n.si(z,t.V);break;case 2:q=n.yk(t.G,e,new Tt.FN(0,0,t.eb,t.N),0),L=!!q&&!(q.c==1&&q.a==0&&q.b==0)}t.db=0}switch(t.G&&n.qk(t.G,e),L||V.qL(t,e),t.G&&(n.rk(t.G,e),n.pk(t.G,e)),t.t!=-1&&c.Szb(t.i.a).length!=0&&(E=mt(n.Ll(t.V,t.t)),ut=mt(n.Ml(t.V,t.t)),B=t.i.a,x=V.BL(t,B),R.R2(e,x==1?u:x==2?-16776961:IA),x==1?B=(n.Ok(),n.Ik)[n.lo(B,t.c)]:x==2&&(B=T.qjb(t.j,0,c.Szb(B).length)),D=3*R.K2(e)/2|0,R.P2(e,D,!1,!1),R.E2(e,E,ut,B),x==4&&(R.R2(e,ie),R.y2(e,E+R.J2(e,B).b/2,ut+D,\"<unknown>\")),x==2&&(R.R2(e,IA),R.E2(e,E+R.J2(e,B).b,ut,T.pjb(t.j,c.Szb(B).length)))),R.R2(e,u),t.X){case 1:switch(N=mt(t.gb),rt=mt(t.jb),t.t==-1||t.t==t.e?(ft=mt(t.hb),Ut=mt(t.kb)):(ft=mt(n.Ll(t.V,t.t)),Ut=mt(n.Ml(t.V,t.t))),t.w){case 5:R.B2(e,N,rt,ft,Ut);break;case 6:Lt=(rt-Ut)/9|0,ht=(ft-N)/9|0,g=new Tt.yN(3),Tt.tN(g,N,rt),Tt.tN(g,ft+Lt,Ut+ht),Tt.tN(g,ft-Lt,Ut-ht),R.G2(e,new R.e3(g));break;case 23:for(Lt=ft-N,ht=Ut-rt,Q=2;Q<17;Q+=2)ot=N+(Q*Lt/17|0)-(Q*ht/128|0),it=rt+(Q*ht/17|0)+(Q*Lt/128|0),st=N+(Q*Lt/17|0)+(Q*ht/128|0),bt=rt+(Q*ht/17|0)-(Q*Lt/128|0),R.B2(e,ot,it,st,bt)}break;case 2:if(t.q>0&&R.B2(e,mt(t.gb),mt(t.jb),mt(t.o[0]),mt(t.p[0])),t.q>1)for(Q=1;Q<t.q;Q++)R.B2(e,mt(t.o[Q-1]),mt(t.p[Q-1]),mt(t.o[Q]),mt(t.p[Q]));break;case 5:R.R2(e,(S=(p=R.N2(e),p!=0?p:BP),lt.F3(S,(s=kP,T._ib(c.Szb(s).substr(0,c.Szb(En).length),En)||T._ib(c.Szb(s).substr(0,c.Szb(Nn).length),Nn)||T._ib(c.Szb(s).substr(0,c.Szb(xn).length),xn)?CD:RD)))),R.C2(e,new R.e3(t.R)),R.R2(e,u);break;case 6:E=t.gb<t.hb?mt(t.gb):mt(t.hb),ut=t.jb<t.kb?mt(t.jb):mt(t.kb),J=mt(k.Math.abs(t.hb-t.gb)),o=mt(k.Math.abs(t.kb-t.jb)),R.R2(e,(M=(m=R.N2(e),m!=0?m:BP),lt.F3(M,(w=kP,T._ib(c.Szb(w).substr(0,c.Szb(En).length),En)||T._ib(c.Szb(w).substr(0,c.Szb(Nn).length),Nn)||T._ib(c.Szb(w).substr(0,c.Szb(xn).length),xn)?CD:RD)))),R.D2(e,E,ut,J,o),R.R2(e,u);break;case 8:N=mt(t.gb),rt=mt(t.jb),t.t==-1||t.t==t.e?(ft=mt(t.hb),Ut=mt(t.kb)):(ft=mt(n.Ll(t.V,t.t)),Ut=mt(n.Ml(t.V,t.t))),R.R2(e,(P=R.I2(e),lt.H3(-8388608,P))),R.B2(e,N,rt,ft,Ut),R.R2(e,u)}},V.UL=function(t){var e;return!!(t.r&&(e=R.Y1(t.r),V.$K(t,e)))},V.VL=function(t,e){return n.Nm(t.V,e)&&(V.CL(t,e)!=-1||V.DL(t,e)!=-1)},V.WL=function(t,e,A){var P,r;for(r=!1,P=0;P<t.V.f;P++)n.Gl(t.V,P)!=0&&(A&&!n.wm(t.V,P)||e&&n.wm(t.V,P))&&(r||(V.iM(t),r=!0),n.nn(t.V,P,0,!1));r&&(e||V.dL(t),V.nM(t,k.Math.max(t.db,1)))},V.XL=function(t){t.cb&&(n.kl(t.cb,t.V),t.I=t.bb?new n.dk(t.bb):null)},V.YL=function(t){var e,A,P,r;for(r=!1,A=0;A<t.V.q;A++)if(n.Lm(t.V,A)){r=!0;break}if(P=V.fL(t,r),P){for(V.iM(t),e=0;e<t.V.q;e++)(!r||n.Lm(t.V,e))&&(n.vn(t.V,e,2*P.a-n.Ll(t.V,e)),n.wn(t.V,e,2*P.b-n.Ml(t.V,e)));t.db=k.Math.max(t.db,1),_.D0(t.k)}},V.ZL=function(t,e){t.r=e},V.$L=function(t,e,A,P,r,i){t.F=e,t.B=A,t.D=P,t.C=r,t.A=i},V._L=function(t,e){t.H=e,t.db=k.Math.max(t.db,1),_.D0(t.k)},V.aM=function(t,e,A){var P,r,i,D,u,o,Q,L,w,s,h,b;if(u=-1,r=V.CL(t,e),D=r==-1?V.DL(t,e):-1,A!=0){for(h=-1,L=0;L<t.V.f;L++)L!=r&&n.Cl(t.V,L)==A&&(!n.Mm(t.V,e)||!n.Lm(t.V,L))&&(o=n.Bl(t.V,L),h<o&&(h=o));for(w=0;w<t.V.g;w++)w!=D&&n.Zl(t.V,w)==A&&(!n.Mm(t.V,e)||!n.Mm(t.V,w))&&(o=n.Yl(t.V,w),h<o&&(h=o));if((r==-1?n.Zl(t.V,D):n.Cl(t.V,r))!=A)u=k.Math.min(h+1,31);else if(u=r==-1?n.Yl(t.V,D):n.Bl(t.V,r),n.Mm(t.V,e)){for(b=!0,s=0;s<t.V.f;s++)if(s!=r&&n.Lm(t.V,s)&&n.Cl(t.V,s)==A&&n.Bl(t.V,s)!=u){b=!1;break}for(Q=0;Q<t.V.g;Q++)if(Q!=D&&n.Mm(t.V,Q)&&n.Zl(t.V,Q)==A&&n.Yl(t.V,Q)!=u){b=!1;break}b&&(u<=h?(++u,u==32&&(u=0)):u=0)}else u<=h?(++u,u==32&&(u=0)):u=0}if(n.Mm(t.V,e))for(Q=0;Q<t.V.g;Q++)n.Mm(t.V,Q)&&n.Nm(t.V,Q)&&(P=V.CL(t,Q),i=V.DL(t,Q),P!=-1?n.kn(t.V,P,A,u):i!=-1&&n.Cn(t.V,i,A,u));else r!=-1?n.kn(t.V,r,A,u):D!=-1&&n.Cn(t.V,D,A,u)},V.bM=function(t,e){t.V!=e&&(V.iM(t),t.V=e,t.U=0,t.I=null,t.db=k.Math.max(t.db,4),_.D0(t.k),V.zL(t,new V.XK(t,1,!1)))},V.cM=function(t,e){var A,P,r,i;for(n.$v(t.V),t.L=d(l.$7,xe,25,e.g.a.length+e.f.a.length,0,1),t.Y=e.g.a.length,r=0;r<e.g.a.length+e.f.a.length;r++)t.L[r]=r<e.g.a.length?y.uj(e.g,r):y.uj(e.f,r-e.g.a.length),n.Uk(t.V,t.L[r]);for(n.Kn(t.V,e.c||tt.fH(e)),V.iM(t),t.M=d(l.Z6,H,6,t.V.q,15,1),A=0,P=0;P<t.L.length;P++)for(i=0;i<t.L[P].q;i++)t.M[A++]=P;t.I=new n.ck,t.U=5,t.db=k.Math.max(t.db,5),_.D0(t.k),V.zL(t,new V.XK(t,1,!1))},V.dM=function(t,e,A){var P;return P=y.uj(t.I,0),tt.DH(P,n.Ll(t.V,e),n.Ml(t.V,e))==tt.DH(P,n.Ll(t.V,A),n.Ml(t.V,A))},V.eM=function(t,e){var A,P;t.b&&(V.iM(t),P=(t.U&4)!=0,A=new V.zK(t._,t.V,e,P),V.yK(A)&&(t.db=k.Math.max(t.db,1),_.D0(t.k),V.zL(t,new V.XK(t,1,!0))))},V.fM=function(t,e){var A;t.b&&(V.iM(t),A=new V.KK(t._,t.V,e),V.JK(A)&&(t.db=k.Math.max(t.db,1),_.D0(t.k),V.zL(t,new V.XK(t,1,!0))))},V.gM=function(t,e){var A;V.iM(t),A=e==-1?new V.SK(t._,t,t.F,t.B,t.D,t.C,t.A):new V.TK(t._,t,t.V,e),V.RK(A)&&e!=-1&&(t.db=k.Math.max(t.db,1),_.D0(t.k),V.zL(t,new V.XK(t,1,!0)))},V.hM=function(t,e,A){var P,r,i,D,u,o,Q,L,w,s,h;for(w=w1(l.Z6,[M1,H],[7,6],15,[A,(t.U&6)!=0?2:1],2),o=0;o<A;o++)w[o][0]=o;if(L=V.gL(t,e,A),(t.U&4)!=0)for(t.Y=0,P=(t.U&4)!=0?y.uj(t.I,0):null,Q=0;Q<A;Q++)w[Q][1]=tt.DH(P,L[Q].a,L[Q].b)?1:0,w[Q][1]==0&&++t.Y;else if((t.U&2)!=0)for(t.Y=A,r=0;r<t.V.q;r++)n.Ol(t.V,r)==0&&w[e[r]][1]==0&&(w[e[r]][1]=1,--t.Y);for(D=L,y.Vqb(w,new V.vM(t,D)),s=d(l.Z6,H,6,A,15,1),u=0;u<A;u++)h=w[u][0],s[h]=u;for(i=0;i<t.V.q;i++)e[i]=s[e[i]]},V.iM=function(t){!t.cb&&(t.cb=new n._n),n.kl(t.V,t.cb),t.bb=t.I?new n.dk(t.I):null},V.jM=function(t){var e,A,P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S,p,M;if(p=n.jo(t.gb,t.jb,t.hb,t.kb),m=t.hb-t.gb,S=t.kb-t.jb,w=t.q,s=0,b=0,h=0,g=0,w>0&&(s=Gt(h1(k.Math.round(t.o[0]))),b=Gt(h1(k.Math.round(t.p[0])))),w>1&&(h=Gt(h1(k.Math.round(t.o[1]))),g=Gt(h1(k.Math.round(t.p[1])))),o=0,t.e==-1||n.Io(t.V,t.e)==0)o=s0*nn(h1(k.Math.round(p*3/t1)));else if(n.Io(t.V,t.e)==1)A=n.Tl(t.V,n.Vo(t.V,t.e,0),t.e),P=A-s0,r=A+s0,o=k.Math.abs(n.ko(p,P))<k.Math.abs(n.ko(p,r))?P:r;else{for(i=d(l.X6,Bt,6,n.Io(t.V,t.e),15,1),L=0;L<n.Io(t.V,t.e);L++)i[L]=n.Tl(t.V,t.e,n.Vo(t.V,t.e,L));for(c.lzb(i,c.Szb(y0(y.Xqb.prototype.jd,y.Xqb,[]))),Q=0;Q<i.length;Q++){if(B=Q==0?i[i.length-1]-G1:i[Q-1],B<p&&p<i[Q]){o=(i[Q]+B)/2;break}if(B<p-G1&&p-G1<i[Q]){o=(i[Q]+B)/2;break}}}if(e=n.Ql(t.V,24*t.ab),t.q=k.Math.abs(n.ko(p,o))>s0?0:mt(k.Math.sqrt(m*m+S*S)/e),t.q>0){for((t.o==null||t.o.length<t.q)&&(t.o=d(l.X6,Bt,6,t.q,15,1),t.p=d(l.X6,Bt,6,t.q,15,1)),D=d(l.X6,Bt,6,2,15,1),u=d(l.X6,Bt,6,2,15,1),M=n.ko(p,o)<0?o-s0:o+s0,D[0]=e*k.Math.sin(o),u[0]=e*k.Math.cos(o),D[1]=e*k.Math.sin(M),u[1]=e*k.Math.cos(M),L=0;L<t.q;L++)t.o[L]=(L==0?t.gb:t.o[L-1])+D[L&1],t.p[L]=(L==0?t.jb:t.p[L-1])+u[L&1];for(t.n=d(l.Z6,H,6,t.q,15,1),Q=0;Q<t.q;Q++)t.n[Q]=n.tl(t.V,t.o[Q],t.p[Q]),t.n[Q]!=-1&&(t.o[Q]=n.Ll(t.V,t.n[Q]),t.p[Q]=n.Ml(t.V,t.n[Q]))}return w!=t.q||t.q!=0&&(s!=Gt(h1(k.Math.round(t.o[0])))||b!=Gt(h1(k.Math.round(t.p[0]))))||t.q>1&&(h!=Gt(h1(k.Math.round(t.o[1])))||g!=Gt(h1(k.Math.round(t.p[1]))))},V.kM=function(t,e){var A,P,r,i,D,u,o,Q,L,w,s;if(w=In,e!=-1){for(A=d(l.X6,Bt,6,9,15,1),D=0;D<n.Io(t.V,e);D++)A[D]=n.Tl(t.V,e,n.Vo(t.V,e,D));if(n.Io(t.V,e)==1)A[0]<-2.6179938779914944?w=s0:A[0]<uA?w=In:A[0]<zr?w=s0:A[0]<0?w=In:A[0]<Sn?w=Pr:A[0]<k0?w=bA:A[0]<2.6179938779914944?w=Pr:w=bA;else{for(u=n.Io(t.V,e)-1;u>0;u--)for(o=0;o<u;o++)A[o]>A[o+1]&&(s=A[o],A[o]=A[o+1],A[o+1]=s);for(A[n.Io(t.V,e)]=A[0]+G1,L=0,Q=0,i=0;i<n.Io(t.V,e);i++)P=A[i+1]-A[i],Q<P&&(Q=P,L=i);w=(A[L]+A[L+1])/2}}r=n.Ql(t.V,24*t.ab),t.hb=(e==-1?t.gb:n.Ll(t.V,e))+r*k.Math.sin(w),t.kb=(e==-1?t.jb:n.Ml(t.V,e))+r*k.Math.cos(w)},V.lM=function(t,e){t.w!=e&&(t.w==19||e==19?(t.w=e,t.db=k.Math.max(t.db,1),_.D0(t.k)):t.w=e)},V.mM=function(t,e,A,P){var r,i,D,u,o,Q;if(D=n.tl(t.V,e,A),u=-1,P&&t.X==8&&D!=-1&&(!V.bL(t,t.e,D)||n.Gl(t.V,t.e)!=0&&n.Gl(t.V,t.e)==n.Gl(t.V,D)&&!n.wm(t.V,t.e)||V.dM(t,t.e,D))&&(D=-1),D!=-1&&(t.w==101||t.w==103||t.w==102?(u=n.Ep(t.V,D),D=-1):t.w==19&&D>=t.V.f&&(D=-1)),u==-1&&D==-1&&t.w!=22&&t.w!=19&&t.w!=3&&t.w!=10&&t.w!=27&&t.w!=16&&t.w!=11&&t.w!=12&&t.w!=13&&t.w!=28&&t.w!=29&&t.w!=30&&t.w!=14&&t.w!=31&&t.w!=15&&t.w!=32&&t.w!=33&&(u=n.ul(t.V,e,A)),u!=-1&&(t.w==101||t.w==103||t.w==102)&&!(n.Nm(t.V,u)&&(V.CL(t,u)!=-1||V.DL(t,u)!=-1))&&(u=-1),r=t.v,!P&&t.I&&(r=null,D==-1&&u==-1&&(t.w==2||t.w==4||t.w==21))){for(Q=new y.rqb(t.I);Q.a<Q.c.a.length;)if(o=y.qqb(Q),(t.w==2||t.w==4&&!Yt(o,61)||t.w==21&&Yt(o,95))&&o.Db(e,A)){r=o,t.v&&t.v!=o&&t.v.Eb();break}}return i=t.t!=D||t.u!=u||t.v!=r||!!r,t.t!=D&&(t.t!=-1&&c.Szb(t.i.a).length!=0&&V.wL(t,t.i.a),t.t=D,T.ugb(t.i,0),V.zL(t,new V.XK(t,4,!0))),t.u!=u&&(t.u=u,V.zL(t,new V.XK(t,8,!0))),t.v=r,i},V.nM=function(t,e){t.db=k.Math.max(t.db,e),_.D0(t.k),V.zL(t,new V.XK(t,1,!0))},V.oM=function(t){var e;switch(e=-1,t.w){case 18:e=9;break;case 2:t.t!=-1&&n.Lm(t.V,t.t)||t.u!=-1&&n.Mm(t.V,t.u)?e=t.W?4:t.Z?3:2:t.t!=-1||t.u!=-1?e=11:t.v?e=t.W?4:t.Z&&!Yt(t.v,61)?3:2:e=t.Z?t.d?8:6:t.d?7:5;break;case 4:e=1;break;case 22:e=0;break;case 21:e=12;break;default:e=11}t.s!=e&&(t.s=e,_.u1(t._,e))},V.pM=function(t,e){V.iM(t),V.cM(t,tt.TH(e,!0,null))},V.qM=function(t,e,A,P){this.V=t,this.U=e,this._=A,this.k=P,this.S=new y.Jj,this.w=5,this.t=-1,this.u=-1,this.v=null,this.e=-1,this.F=6,this.B=0,this.D=-1,this.C=0,this.A=null,this.b=!0,this.a=!1,this.X=0,this.s=11,this.i=new T.Kjb,this.c=331,this.$=1,this.ab=(d1.IN==-1&&(d1.IN=d1.KN()),d1.IN),this.T=mt(k.Math.round((d1.IN==-1&&(d1.IN=d1.KN()),d1.IN*24))),(this.U&6)!=0&&(this.U|=1),(this.U&12)!=0&&(this.I=new n.ck),this.db=4},G(287,1,wn,V.qM),U.lc=function(t){var e;Yt(t,140)?V.tL((e=this,e)):Yt(t,182)?V.uL(this,t):Yt(t,155)&&V.vL(this,t)},U.a=!1,U.b=!1,U.c=0,U.d=!1,U.e=0,U.f=0,U.g=!1,U.q=0,U.s=0,U.t=0,U.u=0,U.w=0,U.B=0,U.C=0,U.D=0,U.F=0,U.H=0,U.J=0,U.K=0,U.N=0,U.O=!1,U.T=0,U.U=0,U.W=!1,U.X=0,U.Y=0,U.Z=!1,U.$=0,U.ab=0,U.db=0,U.eb=0,U.gb=0,U.hb=0,U.jb=0,U.kb=0,V.YK=!0,l.N9=O(287),V.sM=function(t,e,A){this.a=t,this.c=e,this.b=A},G(297,1,{263:1},V.sM),U.mc=function(){V.NL(this.a,this.c,this.b)},U.c=0,l.L9=O(297),V.vM=function(t,e){this.a=t,this.b=e},G(298,1,{},V.vM),U.Qb=function(t,e){return V.OL(this.a,this.b,t,e)},U.lb=function(t){return this===t},l.M9=O(298),V.AM=function(){V.AM=u1,V.yM=mt(k.Math.round(mt(k.Math.round((d1.IN==-1&&(d1.IN=d1.KN()),d1.IN*2))))),V.zM=(d1.IN==-1&&(d1.IN=d1.KN()),d1.IN*21)},V.BM=function(t,e,A,P,r){var i;P|=n1,i=V.DM(A),P!=-1&&(R.R2(e,P),R.H2(e,i[0],i[1],V.zM,V.zM)),A==20?R.A2(e,t.c,0,t.d*84,84,84,i[0],i[1],V.zM,V.zM):R.A2(e,r?t.g:t.i,(i[0]-V.yM)*t.j,(i[1]-V.yM)*t.j,84,84,i[0],i[1],V.zM,V.zM)},V.CM=function(t,e){var A,P;if(e.j==1){if(A=V.EM(t,e),!(A>=0&&A<34&&(A!=t.b||A==20||A==33)&&(A!=19||(t.a.U&4)!=0)&&(A!=21||(t.a.U&8)!=0)))return;A==20&&A==t.b&&(t.d=++t.d%3),t.k=A,_.b1(t.n)}else if(e.j==2){if(t.k==-1)return;if(P=V.EM(t,e),P!=t.k||t.k==19&&(t.a.U&4)==0||t.k==21&&(t.a.U&8)==0){t.k=-1,_.b1(t.n);return}if(t.k=-1,P==0||P==1||P==17){_.b1(t.n),V.eL(t.a,P);return}t.b=P,_.b1(t.n),t.b==20?V.lM(t.a,t.d==0?101:t.d==1?103:102):(t.b==33&&V.gM(t.a,-1),V.lM(t.a,P))}else(e.j==6||e.j==5)&&(A=V.EM(t,e),A==t.k&&(A=-1),A!=t.f&&(t.f=A,_.b1(t.n)))},V.DM=function(t){var e;return e=d(l.X6,Bt,6,2,15,1),e[0]=V.zM*(t/17|0)+V.yM,e[1]=V.zM*(t%17)+V.yM,e},V.EM=function(t,e){var A,P,r;return P=e.g-V.yM,r=e.i-V.yM,P<0||P>=2*V.zM||r<0||r>=17*V.zM?-1:(A=17*mt(P/V.zM)+mt(r/V.zM),A>=0&&A<34&&(A!=t.b||A==20||A==33)&&(A!=19||(t.a.U&4)!=0)&&(A!=21||(t.a.U&8)!=0)?A:-1)},V.FM=function(t){t.i=_.n1(t.a._,Or),d1.PN(t.i),t.g=_.n1(t.a._,Or),d1.JN(t.g),t.o=2*V.yM+d1.LN(R.X2(t.i)/4|0),t.e=2*V.yM+d1.LN(R.U2(t.i)/4|0),t.c=_.n1(t.a._,SD),t.j=(d1.IN==-1&&(d1.IN=d1.KN()),4/d1.IN),t.b=5,t.k=-1,t.f=-1},V.GM=function(t,e){var A,P,r,i,D,u,o;A=_.Z0(t.n),r=(lt.C3(),(lt.B3[0]*((A&X0)>>16)+lt.B3[1]*((A&J0)>>8)+lt.B3[2]*(A&255))/255<.5),P=r?lt.D3(A,Dn):A&N0|mt(k.Math.round(wA*((A&X0)>>16)))<<16|mt(k.Math.round(wA*((A&J0)>>8)))<<8|mt(k.Math.round(wA*(A&255))),D=r?lt.D3(A,.5):A&N0|mt(k.Math.round(sn*((A&X0)>>16)))<<16|mt(k.Math.round(sn*((A&J0)>>8)))<<8|mt(k.Math.round(sn*(A&255))),o=R.X2(t.i),u=R.U2(t.i),R.A2(e,t.i,0,0,o,u,V.yM,V.yM,o/t.j,u/t.j),i=V.DM(20),R.A2(e,t.c,0,t.d*84,84,84,i[0],i[1],V.zM,V.zM),(t.a.U&4)==0&&V.BM(t,e,19,-1,!0),(t.a.U&8)==0&&V.BM(t,e,21,-1,!0),V.BM(t,e,t.b,D,!1),t.f!=-1&&t.f!=t.k&&V.BM(t,e,t.f,P,!1),t.k!=-1&&V.BM(t,e,t.k,7167924,!1)},V.HM=function(t,e){V.AM(),this.n=t,this.a=e,V.FM(this)},G(299,1,wn,V.HM),U.lc=function(t){V.CM(this,t)},U.b=0,U.d=0,U.e=0,U.f=0,U.j=0,U.k=0,U.o=0,V.yM=0,V.zM=0,l.O9=O(299),V.MM=function(){V.MM=u1,V.KM=v(F(l.Z6,1),H,6,15,[0,2,1,3]),V.LM=v(F(l.Nbb,1),yt,2,6,[\"plain\",\"italic\",\"bold\",\"italics & bold\"]),V.JM=v(F(l.Nbb,1),yt,2,6,[\"8\",\"9\",\"10\",\"12\",\"14\",\"18\",\"24\",\"32\"])},V.NM=function(t){var e,A,P,r,i,D,u,o,Q,L,w;for(t.b=R.l2(t.c),i=V.JM,u=0,Q=i.length;u<Q;++u)P=i[u],R.a2(t.b,P);for(R.e2(t.b,!0),R.g2(t.b,\"\"+mt(t.e.c)),t.a=R.l2(t.c),r=V.LM,D=0,o=r.length;D<o;++D)P=r[D],R.a2(t.a,P);for(L=0,A=0;A<V.KM.length;A++)if(t.e.d==V.KM[A]){L=A;break}R.f2(t.a,L),e=v(F(l.Z6,1),H,6,15,[8,-2,4,-2,8]),w=v(F(l.Z6,1),H,6,15,[8,-2,4,-2,8,-2,8]),R.q2(t.c,e,w),R.i2(t.c,R.m2(t.c,\"Text size:\"),1,1),R.i2(t.c,t.b,3,1),R.i2(t.c,R.m2(t.c,\"Text style:\"),1,3),R.i2(t.c,t.a,3,3),t.d=R.n2(t.c,20,3),R.j3(t.d,t.e.e),R.j2(t.c,t.d,1,5,3,5)},V.OM=function(t,e){var A,P;if(e.j==0){try{A=T.Khb(R.c2(t.b),n1,Mt)}catch(r){if(r=C1(r),Yt(r,40)){R.s2(t.c,\"Illegal text size.\");return}else throw Qt(r)}P=V.KM[R.b2(t.a)],n.Yw(t.e,R.i3(t.d),A,P)}R.o2(t.c)},V.PM=function(t,e){V.MM(),this.c=_.l1(t,\"Edit Text\",this),this.e=e,V.NM(this)},G(296,1,wn,V.PM),U.lc=function(t){V.OM(this,t)},l.P9=O(296),Tt.RM=function(t,e,A){Tt.WK.call(this,e,t),this.a=A},G(140,161,{140:1},Tt.RM),U.a=0,l.Q9=O(140),Tt.WM=function(){Tt.WM=u1,Tt.UM=v(F(l.Z6,2),M1,7,0,[v(F(l.Z6,1),H,6,15,[-1432180054,-1434146134,-1441453406,-1471067516,-1589095916,-2060839854,1420461386,1454022954,1454024874]),v(F(l.Z6,1),H,6,15,[-1431677611,-1431764987,-1432092655,-1433403327,-1438646015,-1459616762,-1543499750,-1879031702,1431634346,1073809066,1073814186,1073834666,1431677610]),v(F(l.Z6,1),H,6,15,[-1431737686,-1453057622,-1542187926,-1542188954,-1459351471,-1459351487,Zr,1094713345,1077936134,-1879048186,-1543503866,-1543503846,-1459617766,Jr,Gn,Gn]),v(F(l.Z6,1),H,6,15,[-1431737686,-1453057622,-1542187926,-1542188954,-1459351471,-1459351487,Zr,1094713345,1077952518,-1879031802,-1543154682,-1543487462,-1459601382,Jr,Gn,Gn]),v(F(l.Z6,1),H,6,15,[jP,jP,-1431741782,-1437330070,-1459351462,-1459351482,Zr,-1858076671,-1874853882,-1879048186,-1543503866,-1543503846,-1459617766,Jr,Gn,Gn]),v(F(l.Z6,1),H,6,15,[jP,-1432005270,-1454374890,-1543503871,-1879048191,1073741825,1073741846,1073743210,-1795073366,1079421610,1147841194,-1783977302,mP,mP,-1498764630]),v(F(l.Z6,1),H,6,15,[jP,-1432005270,-1454374890,-1543438335,-1878982655,1075138561,1073807382,1073808746,-1795073366,1079421610,1147841194,-1783977302,mP,mP,-1498764630]),v(F(l.Z6,1),H,6,15,[1431655786,Fe,Tn,Fe,Tn,Fe,Tn,Fe,Tn,Fe,Tn,Fe,1145324650]),v(F(l.Z6,1),H,6,15,[1431655786,Fe,Tn,Fe,Tn,Fe,1073758314,1073758250,1074091114,1073758250,1073758314,Fe,1145324650]),v(F(l.Z6,1),H,6,15,[-1432003926,-1437248086,1767548266,1437248090,1437248086,1433053846,1433037477,-1431672155,-1432004955,1433037477,1433037462,1437248086,1437248090,1767548266,-1437248086,-1432003926]),null]),Tt.SM=v(F(l.Z6,1),H,6,15,[1,7,7,5,8,7,8,7,8,7,2,14,2,14,0,0,0,0,8,8,0,0]),Tt.TM=v(F(l.Z6,1),H,6,15,[4,20,10,29,18,18,18,18,18,18,16,11,16,11,4,5,4,5,16,16,16,16,0,0,0,0,12,2]),Tt.VM=v(F(l.Nbb,1),yt,2,6,[\"chain.png\",\"eraser.png\",\"hand.png\",\"handPlus.png\",\"fist.png\",\"lasso.png\",\"lassoPlus.png\",\"rect.png\",\"rectPlus.png\",\"zoom.png\",\"invisible.png\",null,null,\"pointingHand.png\"])},Tt.XM=function(t,e){Tt.WM();var A,P,r,i;if(Tt.UM[e]!=null){for(P=0;P<Tt.UM[e].length;P++)for(i=Tt.UM[e][P],r=15;r>=0;r--)(i&3)==0&&R.Y2(t,r,P,-1),i>>=2;for(A=0;A<Tt.UM[e].length;A++)for(i=Tt.UM[e][A],r=15;r>=0;r--)(i&3)==1&&R.Y2(t,r,A,N0),i>>=2}},Tt.YM=function(t){n._c(),n.ce.call(this,t)},G(106,124,{124:1,106:1},Tt.YM),U.pb=function(t){R.B2(this.B,t.a,t.c,t.b,t.d)},U.qb=function(t){R.z2(this.B,t.a,t.c,t.b,t.d)},U.rb=function(t){R.G2(this.B,new R.e3(t))},U.sb=function(t,e,A){R.y2(this.B,e,A,t)},U.tb=function(t,e,A){R.F2(this.B,t,e,A)},U.ub=function(t){return R.J2(this.B,t).b},U.vb=function(){return this.b},U.wb=function(){n.vd(this),this.a=1},U.zb=function(t){this.a=t,R.Q2(this.B,this.a)},U.Ab=function(t){R.R2(this.B,t)},U.Bb=function(t){this.b=t,this.B&&R.P2(this.B,t,!1,!1)},U.a=0,U.b=0,l.R9=O(106),Tt.iN=function(t,e){y.pj(t.a,e)},Tt.jN=function(t,e){var A,P;for(P=new y.rqb(t.a);P.a<P.c.a.length;)A=y.qqb(P),A.lc(e)},Tt.kN=function(){this.a=new y.Jj},G(221,1,{}),l.S9=O(221),Tt.lN=function(t,e,A,P){Tt.WK.call(this,t,P),this.b=e,this.a=A},G(182,161,{182:1},Tt.lN),U.a=!1,U.b=0,l.U9=O(182),Tt.nN=function(){Tt.nN=u1,Tt.mN=v(F(l.Nbb,1),yt,2,6,[\"none\",\"pressed\",\"released\",\"clicked\",\"entered\",\"exited\",\"moved\",\"dragged\"])},Tt.oN=function(t,e,A,P,r,i,D,u,o,Q){Tt.nN(),Tt.WK.call(this,t,Q),this.b=e,this.c=A,this.g=P,this.i=r,this.f=i,this.d=D,this.a=u,this.e=o},G(155,161,{155:1},Tt.oN),U.ob=function(){return Tt.mN[this.j]+\" x:\"+this.g+\" y:\"+this.i+\" button:\"+this.b+\" clicks:\"+this.c+(this.f?\" shift\":\"\")+(this.d?\" ctrl\":\"\")+(this.a?\" alt\":\"\")+\" isPopup:\"+(this.e?\"y\":\"n\")},U.a=!1,U.b=0,U.c=0,U.d=!1,U.e=!1,U.f=!1,U.g=0,U.i=0,l.V9=O(155),Tt.qN=function(){},Tt.rN=function(t,e){this.a=t,this.b=e},G(55,1,{55:1},Tt.qN,Tt.rN),U.ob=function(){return\"x:\"+this.a+\" y:\"+this.b},U.a=0,U.b=0,l.W9=O(55),Tt.tN=function(t,e,A){t.a==t.b.length&&(t.b=y.yqb(t.b,2*t.a),t.c=y.yqb(t.c,2*t.a)),t.b[t.a]=e,t.c[t.a]=A,++t.a},Tt.uN=function(t,e){return t.b[e]},Tt.vN=function(t,e){return t.c[e]},Tt.wN=function(t){t.a>0&&--t.a},Tt.xN=function(){this.b=d(l.X6,Bt,6,64,15,1),this.c=d(l.X6,Bt,6,64,15,1),this.a=0},Tt.yN=function(t){this.b=d(l.X6,Bt,6,t,15,1),this.c=d(l.X6,Bt,6,t,15,1),this.a=0},G(121,1,{404:1},Tt.xN,Tt.yN),U.Gb=function(t,e){var A,P,r;for(r=!1,P=this.a-1,A=0;A<this.a;A++)this.c[A]>e!=this.c[P]>e&&t<(this.b[P]-this.b[A])*(e-this.c[A])/(this.c[P]-this.c[A])+this.b[A]&&(r=!r),P=A;return r},U.a=0,l.X9=O(121),Tt.AN=function(t,e,A){return e>=t.c&&e<=t.c+t.b&&A>=t.d&&A<=t.d+t.a},Tt.BN=function(t,e){return Tt.AN(t,e.c,e.d)&&Tt.AN(t,e.c+e.b,e.d+e.a)},Tt.CN=function(t,e,A,P,r){t.c=e,t.d=A,t.b=P,t.a=r},Tt.DN=function(t,e){var A,P,r,i;return r=k.Math.min(t.c,e.c),i=k.Math.min(t.d,e.d),P=k.Math.max(t.c+t.b,e.c+e.b)-r,A=k.Math.max(t.d+t.a,e.d+e.a)-i,new Tt.FN(r,i,P,A)},Tt.EN=function(){},Tt.FN=function(t,e,A,P){this.c=t,this.d=e,this.b=A,this.a=P},G(35,1,{35:1,404:1},Tt.EN,Tt.FN),U.Gb=function(t,e){return Tt.AN(this,t,e)},U.ob=function(){return\"x:\"+this.c+\" y:\"+this.d+\" w:\"+this.b+\" h:\"+this.a},U.a=0,U.b=0,U.c=0,U.d=0,l.Y9=O(35),d1.JN=function(t){var e,A,P,r,i;for(A=lt.E3(new m1.zfb(238,238,238)),P=We&A.a,r=0;r<R.X2(t);r++)for(i=0;i<R.U2(t);i++)e=R.W2(t,r,i),R.Y2(t,r,i,(N0&e)+P)},d1.KN=function(){return globalThis.devicePixelRatio||1},d1.LN=function(t){return mt(k.Math.round((d1.IN==-1&&(d1.IN=d1.KN()),d1.IN*t)))},d1.IN=-1,d1.ON=function(){d1.ON=u1,d1.NN=v(F(l.Z6,1),H,6,15,[5258420,0]),d1.MN=v(F(l.Z6,1),H,6,15,[11837695,14737632])},d1.PN=function(t){d1.ON();var e;e=kP,(T._ib(c.Szb(e).substr(0,18),En)||T._ib(c.Szb(e).substr(0,17),Nn)||T._ib(c.Szb(e).substr(0,14),xn))&&d1.QN(t,d1.MN)},d1.QN=function(t,e){var A,P,r,i,D;for(i=0;i<R.X2(t);i++)for(D=0;D<R.U2(t);D++)for(A=R.W2(t,i,D),r=A&We,P=0;P<d1.NN.length;P++)if(r==d1.NN[P]){R.Y2(t,i,D,(N0&A)+e[P]);break}},j.RN=function(t){t=t||{};var e=0;return t.createSymmetryRank&&(e|=1),t.considerStereoheterotopicity&&(e|=2),t.encodeAtomCustomLabels&&(e|=8),t.encodeAtomSelection&&(e|=16),t.assignParitiesToTetrahedralN&&(e|=32),t.coordsAre3d&&(e|=64),t.createPseudoStereoGroups&&(e|=128),t.distinguishRacemicOrGroups&&(e|=256),t.tieBreakFreeValenceAtoms&&(e|=512),t.encodeAtomCustomLabelsWithoutRanking&&(e|=r0),t.neglectAnyStereoInformation&&(e|=c1),e},j.SN=function(t,e){this.a=new n.Lg(t.a,j.RN(e))},G(401,1,{},j.SN),U.getCanMolecule=function(t){var e;return e=n.hg(this.a,t),new j.rT(e)},U.getEncodedCoordinates=function(t){return n.kg(this.a,t)},U.getEncodedMapping=function(){return n.lg(this.a)},U.getFinalRank=function(){return this.a.f},U.getGraphAtoms=function(){return n.mg(this.a)},U.getGraphIndexes=function(){return n.ng(this.a)},U.getIDCode=function(){return n.og(this.a)},U.getSymmetryRank=function(t){return n.sg(this.a,t)},U.getSymmetryRanks=function(){return this.a.g},U.hasCIPParityDistinctionProblem=function(){return this.a.d},U.invalidateCoordinates=function(){this.a.s=null},U.normalizeEnantiomer=function(){return n.Cg(this.a)},U.setParities=function(){n.Gg(this.a)},l.$9=O(401),j.jO=function(){},j.kO=function(t,e){switch(e){default:case 0:return n.Qh(t.a,0);case 1:return n.Qh(t.a,1);case 2:return n.Qh(t.a,2);case 3:return n.Qh(t.a,3);case 4:return n.Qh(t.a,4)}},G(405,1,{},j.jO),j.eO=2,j.fO=0,j.gO=1,j.hO=4,j.iO=3,l.Z9=O(405),j.pO=function(t){j._Z||j.c$(),this.a=new W.OAb(l.Ieb(t))},G(406,1,{},j.pO),U.getConformerCount=function(){return this.a.p},U.getNextConformerAsMolecule=function(t){var e,A;return e=t?t.a:null,A=W.CAb(this.a,e),A?A==e?t:new j.rT(A):null},U.getOneConformerAsMolecule=function(t){var e;return e=W.EAb(this.a,t.a),e?t:null},U.getPotentialConformerCount=function(){return W.FAb(this.a)},U.oc=function(t,e,A,P){return W.IAb(this.a,t.a,e,A,P)},U.initializeConformers=function(t,e){e===void 0&&(e={});var A=e.strategy;A===void 0&&(A=3);var P=e.maxTorsionSets;P===void 0&&(P=uP);var r=e.use60degreeSteps;return r===void 0&&(r=!1),this.oc(t,A,P,r)},j.lO=4,j.mO=3,j.nO=1,j.oO=2,l._9=O(406),j.wO=function(){},j.xO=function(t,e,A,P,r){return nt.iG(t,e,A,P,r)},G(407,1,{},j.wO),l.aab=O(407),j.zO=function(){throw new Error(\"drug likeness must be assessed first\")},j.AO=function(){j._Z||j.c$(),this.a=new nt.nG},G(408,1,{},j.AO),U.assessDruglikeness=function(t){var e;return nt.lG(this.a,(e=t.a,!Y1.n3&&(Y1.n3=new Y1.o3),e))},U.getDetail=function(){var t;return t=this.a.a,!t&&j.zO(),Y1.q3(t)},U.getDruglikenessString=function(t){return nt.mG(t.a)},j.yO=-999,l.bab=O(408),j.KO=function(t,e,A){j._Z||j.c$(),j.NO(e),this.a=new K.zC(t.a,e,new y.ptb)},j.NO=function(t){T._ib(t,Kr)&&!j.HO?(K.tC(),K.AC(Kr,new K.rD(\"/resources/forcefield/mmff94/outofplane.csv\",\"/resources/forcefield/mmff94/torsion.csv\")),j.HO=!0):T._ib(t,Yr)&&!j.IO?(K.tC(),K.AC(Yr,new K.rD(HD,\"/resources/forcefield/mmff94/94s/torsion.csv\")),j.IO=!0):T._ib(t,wP)&&!j.JO&&(K.tC(),K.AC(wP,new K.rD(HD,\"/resources/forcefield/mmff94/94s/torsionPlus.csv\")),j.JO=!0)},G(409,1,{},j.KO),U._minimise=function(t,e,A){return he.yB(this.a,t,e)},U.getTotalEnergy=function(){return K.vC(this.a)},U.size=function(){return this.a.b.q},j.EO=Kr,j.FO=Yr,j.GO=wP,j.HO=!1,j.IO=!1,j.JO=!1,l.cab=O(409),j.mT=function(){j.mT=u1,j.lT=new Tt.EN,j.tP=v(F(l.Nbb,1),yt,2,6,[\"?\",\"H\",\"He\",\"Li\",\"Be\",\"B\",\"C\",\"N\",\"O\",\"F\",\"Ne\",\"Na\",\"Mg\",\"Al\",\"Si\",\"P\",\"S\",\"Cl\",\"Ar\",\"K\",\"Ca\",\"Sc\",\"Ti\",\"V\",\"Cr\",\"Mn\",\"Fe\",\"Co\",\"Ni\",\"Cu\",\"Zn\",\"Ga\",\"Ge\",\"As\",\"Se\",\"Br\",\"Kr\",\"Rb\",\"Sr\",\"Y\",\"Zr\",\"Nb\",\"Mo\",\"Tc\",\"Ru\",\"Rh\",\"Pd\",\"Ag\",\"Cd\",\"In\",\"Sn\",\"Sb\",\"Te\",\"I\",\"Xe\",\"Cs\",\"Ba\",\"La\",\"Ce\",\"Pr\",\"Nd\",\"Pm\",\"Sm\",\"Eu\",\"Gd\",\"Tb\",\"Dy\",\"Ho\",\"Er\",\"Tm\",\"Yb\",\"Lu\",\"Hf\",\"Ta\",\"W\",\"Re\",\"Os\",\"Ir\",\"Pt\",\"Au\",\"Hg\",\"Tl\",\"Pb\",\"Bi\",\"Po\",\"At\",\"Rn\",\"Fr\",\"Ra\",\"Ac\",\"Th\",\"Pa\",\"U\",\"Np\",\"Pu\",\"Am\",\"Cm\",\"Bk\",\"Cf\",\"Es\",\"Fm\",\"Md\",\"No\",\"Lr\",\"Rf\",\"Db\",\"Sg\",\"Bh\",\"Hs\",\"Mt\",\"Ds\",\"Rg\",\"Cn\",\"Nh\",\"Fl\",\"Mc\",\"Lv\",\"Ts\",\"Og\",F1,F1,F1,F1,F1,F1,F1,F1,F1,F1,\"R4\",\"R5\",\"R6\",\"R7\",\"R8\",\"R9\",\"R10\",\"R11\",\"R12\",\"R13\",\"R14\",\"R15\",\"R16\",\"R1\",\"R2\",\"R3\",\"A\",\"A1\",\"A2\",\"A3\",F1,F1,\"D\",\"T\",\"X\",\"R\",\"H2\",\"H+\",\"Nnn\",\"HYD\",\"Pol\",F1,F1,F1,F1,F1,F1,F1,F1,F1,F1,F1,\"Ala\",\"Arg\",\"Asn\",\"Asp\",\"Cys\",\"Gln\",\"Glu\",\"Gly\",\"His\",\"Ile\",\"Leu\",\"Lys\",\"Met\",\"Phe\",\"Pro\",\"Ser\",\"Thr\",\"Trp\",\"Tyr\",\"Val\"]),j.kT=v(F(l.seb,1),Jt,6,15,[0,1,4,7,9,11,12,14,16,19,20,23,24,27,28,31,32,35,40,39,40,45,48,51,52,55,56,59,58,63,64,69,74,75,80,79,84,85,88,89,90,93,98,0,102,103,106,107,114,115,120,121,130,127,132,133,138,139,140,141,142,0,152,153,158,159,164,165,166,169,174,175,180,181,184,187,192,193,195,197,202,205,208,209,209,210,222,223,226,227,232,231,238,237,244,243,247,247,251,252,257,258,259,262,267,268,271,270,277,276,281,281,283,285,289,289,293,294,294,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,156,114,115,103,128,129,57,137,113,113,128,131,147,97,87,101,186,163,99]),j.eR=v(F(l.V6,2),we,10,0,[null,v(F(l.V6,1),Y,6,15,[1]),v(F(l.V6,1),Y,6,15,[0]),v(F(l.V6,1),Y,6,15,[1]),v(F(l.V6,1),Y,6,15,[2]),v(F(l.V6,1),Y,6,15,[3]),v(F(l.V6,1),Y,6,15,[4]),v(F(l.V6,1),Y,6,15,[3]),v(F(l.V6,1),Y,6,15,[2]),v(F(l.V6,1),Y,6,15,[1]),v(F(l.V6,1),Y,6,15,[0]),v(F(l.V6,1),Y,6,15,[1]),v(F(l.V6,1),Y,6,15,[2]),v(F(l.V6,1),Y,6,15,[3]),v(F(l.V6,1),Y,6,15,[4]),v(F(l.V6,1),Y,6,15,[3,5]),v(F(l.V6,1),Y,6,15,[2,4,6]),v(F(l.V6,1),Y,6,15,[1,3,5,7]),v(F(l.V6,1),Y,6,15,[0]),v(F(l.V6,1),Y,6,15,[1]),v(F(l.V6,1),Y,6,15,[2]),null,null,null,null,null,null,null,null,null,null,v(F(l.V6,1),Y,6,15,[2,3]),v(F(l.V6,1),Y,6,15,[2,4]),v(F(l.V6,1),Y,6,15,[3,5]),v(F(l.V6,1),Y,6,15,[2,4,6]),v(F(l.V6,1),Y,6,15,[1,3,5,7]),v(F(l.V6,1),Y,6,15,[0,2]),v(F(l.V6,1),Y,6,15,[1]),v(F(l.V6,1),Y,6,15,[2]),null,null,null,null,null,null,null,null,null,null,v(F(l.V6,1),Y,6,15,[1,2,3]),v(F(l.V6,1),Y,6,15,[2,4]),v(F(l.V6,1),Y,6,15,[3,5]),v(F(l.V6,1),Y,6,15,[2,4,6]),v(F(l.V6,1),Y,6,15,[1,3,5,7]),v(F(l.V6,1),Y,6,15,[0,2,4,6]),v(F(l.V6,1),Y,6,15,[1]),v(F(l.V6,1),Y,6,15,[2]),null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,v(F(l.V6,1),Y,6,15,[2]),v(F(l.V6,1),Y,6,15,[2]),v(F(l.V6,1),Y,6,15,[2]),v(F(l.V6,1),Y,6,15,[2]),v(F(l.V6,1),Y,6,15,[3]),v(F(l.V6,1),Y,6,15,[2]),v(F(l.V6,1),Y,6,15,[2]),v(F(l.V6,1),Y,6,15,[2]),v(F(l.V6,1),Y,6,15,[2]),v(F(l.V6,1),Y,6,15,[2]),v(F(l.V6,1),Y,6,15,[2]),v(F(l.V6,1),Y,6,15,[2]),v(F(l.V6,1),Y,6,15,[2]),v(F(l.V6,1),Y,6,15,[2]),v(F(l.V6,1),Y,6,15,[2]),v(F(l.V6,1),Y,6,15,[2]),v(F(l.V6,1),Y,6,15,[2]),v(F(l.V6,1),Y,6,15,[2]),v(F(l.V6,1),Y,6,15,[2]),v(F(l.V6,1),Y,6,15,[2])]),j.xS=v(F(l.V6,2),we,10,0,[null,v(F(l.V6,1),Y,6,15,[1]),null,v(F(l.V6,1),Y,6,15,[1]),v(F(l.V6,1),Y,6,15,[2]),null,null,v(F(l.V6,1),Y,6,15,[-3]),v(F(l.V6,1),Y,6,15,[-2]),v(F(l.V6,1),Y,6,15,[-1]),null,v(F(l.V6,1),Y,6,15,[1]),v(F(l.V6,1),Y,6,15,[2]),v(F(l.V6,1),Y,6,15,[3]),null,v(F(l.V6,1),Y,6,15,[-3]),v(F(l.V6,1),Y,6,15,[-2]),v(F(l.V6,1),Y,6,15,[-1]),null,v(F(l.V6,1),Y,6,15,[1]),v(F(l.V6,1),Y,6,15,[2]),v(F(l.V6,1),Y,6,15,[3]),v(F(l.V6,1),Y,6,15,[2,3,4]),v(F(l.V6,1),Y,6,15,[2,3,4,5]),v(F(l.V6,1),Y,6,15,[2,3,6]),v(F(l.V6,1),Y,6,15,[2,3,4,7]),v(F(l.V6,1),Y,6,15,[2,3]),v(F(l.V6,1),Y,6,15,[2,3]),v(F(l.V6,1),Y,6,15,[2,3]),v(F(l.V6,1),Y,6,15,[1,2]),v(F(l.V6,1),Y,6,15,[2]),v(F(l.V6,1),Y,6,15,[3]),v(F(l.V6,1),Y,6,15,[2,4]),v(F(l.V6,1),Y,6,15,[-3,3,5]),v(F(l.V6,1),Y,6,15,[-2]),v(F(l.V6,1),Y,6,15,[-1]),null,v(F(l.V6,1),Y,6,15,[1]),v(F(l.V6,1),Y,6,15,[2]),v(F(l.V6,1),Y,6,15,[3]),v(F(l.V6,1),Y,6,15,[4]),v(F(l.V6,1),Y,6,15,[3,5]),v(F(l.V6,1),Y,6,15,[6]),v(F(l.V6,1),Y,6,15,[4,6,7]),v(F(l.V6,1),Y,6,15,[3]),v(F(l.V6,1),Y,6,15,[3]),v(F(l.V6,1),Y,6,15,[2,4]),v(F(l.V6,1),Y,6,15,[1]),v(F(l.V6,1),Y,6,15,[2]),v(F(l.V6,1),Y,6,15,[3]),v(F(l.V6,1),Y,6,15,[2,4]),v(F(l.V6,1),Y,6,15,[-3,3,5]),v(F(l.V6,1),Y,6,15,[-2,4,6]),v(F(l.V6,1),Y,6,15,[-1]),null,v(F(l.V6,1),Y,6,15,[1]),v(F(l.V6,1),Y,6,15,[2]),v(F(l.V6,1),Y,6,15,[3]),v(F(l.V6,1),Y,6,15,[3,4]),v(F(l.V6,1),Y,6,15,[3]),v(F(l.V6,1),Y,6,15,[3]),v(F(l.V6,1),Y,6,15,[3]),v(F(l.V6,1),Y,6,15,[2,3]),v(F(l.V6,1),Y,6,15,[2,3]),v(F(l.V6,1),Y,6,15,[3]),v(F(l.V6,1),Y,6,15,[3]),v(F(l.V6,1),Y,6,15,[3]),v(F(l.V6,1),Y,6,15,[3]),v(F(l.V6,1),Y,6,15,[3]),v(F(l.V6,1),Y,6,15,[3]),v(F(l.V6,1),Y,6,15,[2,3]),v(F(l.V6,1),Y,6,15,[3]),v(F(l.V6,1),Y,6,15,[4]),v(F(l.V6,1),Y,6,15,[5]),v(F(l.V6,1),Y,6,15,[6]),v(F(l.V6,1),Y,6,15,[4,6,7]),v(F(l.V6,1),Y,6,15,[3,4]),v(F(l.V6,1),Y,6,15,[3,4]),v(F(l.V6,1),Y,6,15,[2,4]),v(F(l.V6,1),Y,6,15,[1,3]),v(F(l.V6,1),Y,6,15,[1,2]),v(F(l.V6,1),Y,6,15,[1,3]),v(F(l.V6,1),Y,6,15,[2,4]),v(F(l.V6,1),Y,6,15,[3,5]),v(F(l.V6,1),Y,6,15,[-2,2,4]),v(F(l.V6,1),Y,6,15,[-1,1]),null,v(F(l.V6,1),Y,6,15,[1]),v(F(l.V6,1),Y,6,15,[2]),v(F(l.V6,1),Y,6,15,[3]),v(F(l.V6,1),Y,6,15,[4]),v(F(l.V6,1),Y,6,15,[4,5]),v(F(l.V6,1),Y,6,15,[3,4,5,6]),v(F(l.V6,1),Y,6,15,[3,4,5,6]),v(F(l.V6,1),Y,6,15,[3,4,5,6]),v(F(l.V6,1),Y,6,15,[3,4,5,6]),v(F(l.V6,1),Y,6,15,[3]),v(F(l.V6,1),Y,6,15,[3,4]),v(F(l.V6,1),Y,6,15,[3]),v(F(l.V6,1),Y,6,15,[3]),v(F(l.V6,1),Y,6,15,[3]),v(F(l.V6,1),Y,6,15,[2,3]),v(F(l.V6,1),Y,6,15,[2,3]),v(F(l.V6,1),Y,6,15,[3])]),j.dP=v(F(l.Nbb,1),yt,2,6,[sr,Tr,hr])},j.nT=function(t,e,A,P){return{x:t,y:e,width:A,height:P}},j.oT=function(t){return t.a},j.pT=function(){j.mT(),j.qT.call(this,32,32,null)},j.qT=function(t,e,A){j.mT(),A?this.a=A:this.a=new n.tw(t,e)},j.rT=function(t){j.mT(),j.qT.call(this,0,0,t)},j.VT=function(t,e){return{molecule:t,map:e}},j.jU=function(t,e){j.mT();var A;return typeof e===On&&(e=!0),typeof e===I0?A=j.lU(t,e):typeof e===Ae&&(A=j.kU(t,e)),A},j.kU=function(t,e){return new j.rT(n.Mq(new n.Xq(!1),t,e))},j.lU=function(t,e){return new j.rT(n.Lq(new n.Xq(e),t))},j.mU=function(t){return j.mT(),new j.rT(n.bs(new n.ys,t))},j.nU=function(t){j.mT();var e,A,P;return P=new n.zs,A=(P.j=null,n.ws(P,new pt.cgb(new pt.ngb(t)))?P.j:null),e=P.f==null?n.hp(P.j):P.f,j.VT(new j.rT(A),e)},j.oU=function(t,e){j.mT(),e=e||{};var A=!e.noCoordinates,P=!e.noStereo;return j.pU(t,A,P)},j.pU=function(t,e,A){var P,r,i;return i=new n.Hv,r=new j.pT,n.xv(i,r.a,c.szb((P=t,c.nzb(),P)),e,A),r},j.xU=function(t,e,A,P){return j.mT(),n.jo(t,e,A,P)},j.yU=function(t,e){return j.mT(),n.ko(t,e)},j.YU=function(t,e){return j.mT(),n.lo(t,e)},j.BV=function(){return j.mT(),n.Ok(),n.Ok(),n.Nk},j.HW=function(t){return j.mT(),n.mo(t)},j.IW=function(t){return j.mT(),n.no(t)},j.eY=function(t){j.mT(),n.Ok(),n.Nk=t},G(42,1,{42:1},j.pT,j.qT,j.rT),U.addAtom=function(t){return n.Rk(this.a,t)},U.addBond=function(t,e){return n.Sk(this.a,t,e)},U.addFragment=function(t,e,A){n.to(this.a,t.a,e,A)},U.pc=function(){Kt.Kz(this.a)},U.qc=function(t){Kt.Lz(this.a,t)},U.addImplicitHydrogens=function(t){t===void 0?this.pc():this.qc(t)},U.rc=function(){Kt.rz(),Kt.sz(this.a,1)},U.sc=function(t){Kt.sz(this.a,t)},U.addMissingChirality=function(t){t===void 0?this.rc():this.sc(t)},U.addMolecule=function(t){return n.Uk(this.a,t.a)},U.addOrChangeAtom=function(t,e,A,P,r,i,D){return n.Wk(this.a,t,e,A,P,r,i,D)},U.addOrChangeBond=function(t,e,A){return n.Xk(this.a,t,e,A)},U.addRing=function(t,e,A,P,r){return n.Yk(this.a,t,e,A,P,r)},U.addRingToAtom=function(t,e,A,P){return n.Zk(this.a,t,e,A,P)},U.addRingToBond=function(t,e,A,P){return n.$k(this.a,t,e,A,P)},U.addSubstituent=function(t,e){return n._k(this.a,t.a,e)},U.calculateTorsion=function(t){return n.al(this.a,t)},U.canonizeCharge=function(t){return n.vo(this.a,t,!1)},U.changeAtom=function(t,e,A,P,r){return n.bl(this.a,t,e,A,P,r)},U.changeAtomCharge=function(t,e){return n.dl(this.a,t,e)},U.changeBond=function(t,e){return n.el(this.a,t,e)},U.clear=function(){n.$v(this.a)},U.convertStereoBondsToSingleBonds=function(t){n.xo(this.a,t)},U.copyAtom=function(t,e,A,P){return n.hl(this.a,t.a,e,A,P)},U.copyBond=function(t,e,A,P,r,i){return n.jl(this.a,t.a,e,A,P,r,i)},U.copyMolecule=function(t){n.kl(this.a,t.a)},U.copyMoleculeByAtoms=function(t,e,A,P){n.yo(this.a,t.a,e,A,P)},U.copyMoleculeByBonds=function(t,e,A,P){return n.zo(this.a,t.a,e,A,P)},U.copyMoleculeProperties=function(t){n._v(this.a,t.a)},U.deleteAtom=function(t){n.ml(this.a,t)},U.deleteAtomOrBond=function(t,e){return n.nl(this.a,t,e)},U.deleteAtoms=function(t){return n.ol(this.a,t)},U.deleteBond=function(t){n.pl(this.a,t)},U.deleteBondAndSurrounding=function(t){n.ql(this.a,t)},U.deleteMarkedAtomsAndBonds=function(){return n.rl(this.a)},U.deleteMolecule=function(){n.$v(this.a)},U.deleteSelectedAtoms=function(){return n.sl(this.a)},U.ensureHelperArrays=function(t){n.aw(this.a,t)},U.findAlleneCenterAtom=function(t){return n.Bo(this.a,t)},U.findAlleneEndAtom=function(t,e){return n.Co(this.a,t,e)},U.findAtom=function(t,e){return n.tl(this.a,t,e)},U.findBINAPChiralityBond=function(t){return n.Do(this.a,t)},U.findBond=function(t,e){return n.ul(this.a,t,e)},U.findRingSystem=function(t,e,A,P){n.Eo(this.a,t,e,A,P)},U.getAbsoluteAtomParity=function(t){return n.bw(this.a,t)},U.getAbsoluteBondParity=function(t){return n.cw(this.a,t)},U.getAllAtoms=function(){return this.a.q},U.getAllBonds=function(){return this.a.r},U.getAllConnAtoms=function(t){return n.Ho(this.a,t)},U.getAllConnAtomsPlusMetalBonds=function(t){return n.Io(this.a,t)},U.getAllHydrogens=function(t){return n.Jo(this.a,t)},U.getAromaticRingCount=function(){return n.Ko(this.a)},U.getAtomAbnormalValence=function(t){return n.vl(this.a,t)},U.getAtomCIPParity=function(t){return n.wl(this.a,t)},U.getAtomCharge=function(t){return n.xl(this.a,t)},U.getAtomColor=function(t){return n.yl(this.a,t)},U.getAtomCustomLabel=function(t){return n.zl(this.a,t)},U.getAtomESRGroup=function(t){return n.Bl(this.a,t)},U.getAtomESRType=function(t){return n.Cl(this.a,t)},U.getAtomLabel=function(t){return n.Dl(this.a,t)},U.getAtomList=function(t){return n.El(this.a,t)},U.getAtomListString=function(t){return n.Fl(this.a,t)},U.getAtomMapNo=function(t){return n.Gl(this.a,t)},U.getAtomMass=function(t){return n.Hl(this.a,t)},U.getAtomParity=function(t){return n.Il(this.a,t)},U.getAtomPi=function(t){return n.Mo(this.a,t)},U.getAtomPreferredStereoBond=function(t){return n.No(this.a,t)},U.getAtomQueryFeaturesObject=function(t){return Y1.l3(this.a,t)},U.getAtomRadical=function(t){return n.Kl(this.a,t)},U.getAtomRingBondCount=function(t){return n.Oo(this.a,t)},U.getAtomRingCount=function(t,e){return n.Po(this.a,t,e)},U.getAtomRingSize=function(t){return n.Qo(this.a,t)},U.getAtomX=function(t){return n.Ll(this.a,t)},U.getAtomY=function(t){return n.Ml(this.a,t)},U.getAtomZ=function(t){return n.Nl(this.a,t)},U.getAtomicNo=function(t){return n.Ol(this.a,t)},U.getAtoms=function(){return this.a.f},U.getAverageBondLength=function(t){return n.Ro(this.a,t)},U.getAverageTopologicalAtomDistance=function(){return n.So(this.a)},U.getBond=function(t,e){return n.To(this.a,t,e)},U.getBondAngle=function(t,e){return n.Tl(this.a,t,e)},U.getBondAtom=function(t,e){return n.Ul(this.a,t,e)},U.getBondBridgeMaxSize=function(t){return n.Vl(this.a,t)},U.getBondBridgeMinSize=function(t){return n.Wl(this.a,t)},U.getBondCIPParity=function(t){return n.Xl(this.a,t)},U.getBondESRGroup=function(t){return n.Yl(this.a,t)},U.getBondESRType=function(t){return n.Zl(this.a,t)},U.getBondLength=function(t){return n.$l(this.a,t)},U.getBondOrder=function(t){return n.am(this.a,t)},U.getBondParity=function(t){return n.bm(this.a,t)},U.getBondPreferredStereoBond=function(t){return n.kq(this.a,t)},U.getBondQueryFeatures=function(t){return n.cm(this.a,t)},U.getBondQueryFeaturesObject=function(t){return Y1.m3(this.a,t)},U.getBondRingSize=function(t){return n.Uo(this.a,t)},U.getBondType=function(t){return n.dm(this.a,t)},U.getBondTypeSimple=function(t){return n.em(this.a,t)},U.getBonds=function(){return this.a.g},U.getBounds=function(){var t;return t=n.fm(this.a,j.lT),t?j.nT(t.c,t.d,t.b,t.a):null},U.getCanonizedIDCode=function(t){var e;return e=new n.Lg(this.a,t),n.og(e)},U.getChiralText=function(){return n.dw(this.a)},U.getChirality=function(){return this.a.I},U.getCompactCopy=function(){return new j.rT(n.ew(this.a))},U.getConnAtom=function(t,e){return n.Vo(this.a,t,e)},U.getConnAtoms=function(t){return n.Wo(this.a,t)},U.getConnBond=function(t,e){return n.Xo(this.a,t,e)},U.getConnBondOrder=function(t,e){return n.Yo(this.a,t,e)},U.getDefaultMaxValenceUncharged=function(t){return n.hm(this.a,t)},U.getDiastereotopicAtomIDs=function(){return Kt.tz(this.a)},U.getElectronValenceCorrection=function(t,e){return n.im(this.a,t,e)},U.getExcludedNeighbourCount=function(t){return n.Zo(this.a,t)},U.getExplicitHydrogens=function(t){return n.$o(this.a,t)},U.getFinalRanks=function(t){var e;return e=new n.Lg(this.a,t),e.f},U.getFisherProjectionParity=function(t,e,A,P){return n.ap(this.a,t,e,A,P)},U.getFragmentAtoms=function(t,e){return n.bp(this.a,t,e)},U.getFragmentNumbers=function(t,e,A){return n.dp(this.a,t,e,A)},U.getFragments=function(){var t,e,A;for(t=n.gw(this.a),A=d(l.eab,Xr,42,t.length,0,1),e=0;e<t.length;e++)A[e]=new j.rT(t[e]);return A},U.getFreeValence=function(t){return n.fp(this.a,t)},U.getHandleHydrogenMap=function(){return n.hp(this.a)},U.getHelperArrayStatus=function(){return this.a.T},U.getHoseCodes=function(t){t=t||{};var e=(typeof t.maxSphereSize===On?5:t.maxSphereSize)|0,A=(typeof t.type===On?0:t.type)|0;return Kt.vz(this.a,e,A)},U.getIDCode=function(){var t;return t=n.iw(this.a),t==null&&(t=n.og(new n.Kg(this.a))),t},U.getIDCodeAndCoordinates=function(){return{idCode:this.getIDCode(),coordinates:this.getIDCoordinates()}},U.getIDCoordinates=function(){var t;return t=n.jw(this.a),t==null&&(t=n.jg(new n.Kg(this.a))),t},U.getImplicitHigherValence=function(t,e){return n.ip(this.a,t,e)},U.getImplicitHydrogens=function(t){return n.kp(this.a,t)},U.getIndex=function(){return Y1.r3(this.a)},U.getLowestFreeValence=function(t){return n.lp(this.a,t)},U.getMaxAtoms=function(){return this.a.M},U.getMaxBonds=function(){return this.a.N},U.getMaxValence=function(t){return n.km(this.a,t)},U.getMaxValenceUncharged=function(t){return n.lm(this.a,t)},U.getMetalBondedConnAtoms=function(t){return n.np(this.a,t)},U.getMolecularFormula=function(){return new j.A_(this.a)},U.getMoleculeColor=function(){return this.a.O},U.getMolweight=function(){return n.op(this.a)},U.getName=function(){return this.a.P},U.getNonHydrogenNeighbourCount=function(t){return n.pp(this.a,t)},U.getNumberOfHydrogens=function(){return Kt.Mz(this.a)},U.getOccupiedValence=function(t){return n.rp(this.a,t)},U.getPath=function(t,e,A,P,r){return n.up(this.a,t,e,A,P,null,r)},U.getPathBonds=function(t,e,A){n.vp(this.a,t,e,A)},U.getPathLength=function(t,e){return n.wp(this.a,t,e)},U.getRingSet=function(){return new j.i$(n.Ap(this.a))},U.getRotatableBondCount=function(){return n.Bp(this.a)},U.tc=function(t,e,A,P,r,i,D){var u,o,Q,L,w,s,h,b,g,B,m;for(Q=!0,L=0;L<this.a.q-1;L++)if(n.Ll(this.a,L)!=n.Ll(this.a,L+1)||n.Ml(this.a,L)!=n.Ml(this.a,L+1)){Q=!1;break}return s=Q?n.ew(this.a):this.a,Q&&X.iA(new X.BA(0),s),w=Y1.s3(D),o=new n.Fu(s,w,i),o.J=A,n.be(o,null,new Tt.FN(0,0,t,e),z1),u=o.v,n.Td(o,null),m=n.Du(o),P?(b=Gt(h1(k.Math.round(u.b+r*2))),h=Gt(h1(k.Math.round(u.a+r*2))),g=Gt(h1(k.Math.round(u.c-r))),B=Gt(h1(k.Math.round(u.d-r))),T.mjb(m,'width=\"\\\\d+px\" height=\"\\\\d+px\" viewBox=\"0 0 \\\\d+ \\\\d+\"','width=\"'+b+'px\" height=\"'+h+'px\" viewBox=\"'+g+\" \"+B+\" \"+b+\" \"+h+'\"')):m},U.getStereoBond=function(t){return n.Ep(this.a,t)},U.getStereoCenterCount=function(){return n.kw(this.a)},U.uc=function(){return j.oT(this)},U.getStereoProblem=function(t){return n.nm(this.a,t)},U.getSubstituent=function(t,e,A,P,r){return n.Gp(this.a,t,e,A,P.a,r)},U.getSubstituentSize=function(t,e){return n.Hp(this.a,t,e)},U.getSymmetryRank=function(t){return n.lw(this.a,t)},U.getZNeighbour=function(t,e){return n.Ip(this.a,t,e)},U.invalidateHelperArrays=function(t){n.qm(this.a,t)},U.inventCoordinates=function(){var t;t=new X.AA,t.g=new y.uvb(0),X.iA(t,this.a),n.uq(this.a)},U.is3D=function(){return n.rm(this.a)},U.isAlkaliMetal=function(t){return n.Mp(this.a,t)},U.isAllylicAtom=function(t){return n.Np(this.a,t)},U.isAmideTypeBond=function(t){return n.Op(this.a,t)},U.isAromaticAtom=function(t){return n.Pp(this.a,t)},U.isAromaticBond=function(t){return n.Qp(this.a,t)},U.isAtomConfigurationUnknown=function(t){return n.sm(this.a,t)},U.isAtomMarkedForDeletion=function(t){return n.tm(this.a,t)},U.isAtomParityPseudo=function(t){return n.um(this.a,t)},U.isAtomStereoCenter=function(t){return n.vm(this.a,t)},U.isAutoMappedAtom=function(t){return n.wm(this.a,t)},U.isBINAPChiralityBond=function(t){return n.Rp(this.a,t)},U.isBondBackgroundHilited=function(t){return n.xm(this.a,t)},U.isBondBridge=function(t){return n.ym(this.a,t)},U.isBondForegroundHilited=function(t){return n.zm(this.a,t)},U.isBondMarkedForDeletion=function(t){return n.Am(this.a,t)},U.isBondParityPseudo=function(t){return n.Bm(this.a,t)},U.isBondParityUnknownOrNone=function(t){return n.Cm(this.a,t)},U.isChalcogene=function(t){return n.Tp(this.a,t)},U.isDelocalizedBond=function(t){return n.Up(this.a,t)},U.isEarthAlkaliMetal=function(t){return n.Vp(this.a,t)},U.isElectronegative=function(t){return n.Dm(this.a,t)},U.isElectropositive=function(t){return n.Em(this.a,t)},U.isFlatNitrogen=function(t){return n.Wp(this.a,t,!0)},U.isFragment=function(){return this.a.K},U.isHalogene=function(t){return n.Xp(this.a,t)},U.isMarkedAtom=function(t){return n.Gm(this.a,t)},U.isMetalAtom=function(t){return n.Hm(this.a,t)},U.isNaturalAbundance=function(t){return n.Im(this.a,t)},U.isNitrogenFamily=function(t){return n.Zp(this.a,t)},U.isOrganicAtom=function(t){return n.Jm(this.a,t)},U.isPseudoRotatableBond=function(t){return n.$p(this.a,t)},U.isPurelyOrganic=function(){return n.Km(this.a)},U.isRingAtom=function(t){return n.bq(this.a,t)},U.isRingBond=function(t){return n.cq(this.a,t)},U.isSelectedAtom=function(t){return n.Lm(this.a,t)},U.isSelectedBond=function(t){return n.Mm(this.a,t)},U.isSimpleHydrogen=function(t){return n.dq(this.a,t)},U.isSmallRingAtom=function(t){return n.eq(this.a,t)},U.isSmallRingBond=function(t){return n.fq(this.a,t)},U.isStabilizedAtom=function(t){return n.gq(this.a,t)},U.isStereoBond=function(t){return n.Nm(this.a,t)},U.markAtomForDeletion=function(t){n.Qm(this.a,t)},U.markBondForDeletion=function(t){n.Rm(this.a,t)},U.normalizeAmbiguousBonds=function(){return n.hq(this.a)},U.removeAtomColors=function(){n.Um(this.a)},U.removeAtomCustomLabels=function(){this.a.t=null},U.removeAtomMarkers=function(){n.Vm(this.a)},U.removeAtomSelection=function(){n.Wm(this.a)},U.removeBondHiliting=function(){n.Xm(this.a)},U.removeExplicitHydrogens=function(){n.mq(this.a,!0)},U.removeQueryFeatures=function(){return n.Zm(this.a)},U.renumberESRGroups=function(t){return n.$m(this.a,t)},U.scaleCoords=function(t){n._m(this.a,t)},U.setAllAtoms=function(t){n.an(this.a,t)},U.setAllBonds=function(t){n.bn(this.a,t)},U.setAssignParitiesToNitrogen=function(t){n.mw(this.a,t)},U.setAtomAbnormalValence=function(t,e){n.cn(this.a,t,e)},U.setAtomCIPParity=function(t,e){n.dn(this.a,t,e)},U.setAtomCharge=function(t,e){n.en(this.a,t,e)},U.setAtomColor=function(t,e){n.fn(this.a,t,e)},U.setAtomConfigurationUnknown=function(t,e){n.gn(this.a,t,e)},U.setAtomCustomLabel=function(t,e){n.hn(this.a,t,e)},U.setAtomESR=function(t,e,A){n.kn(this.a,t,e,A)},U.setAtomList=function(t,e,A){n.mn(this.a,t,e,A)},U.setAtomMapNo=function(t,e,A){n.nn(this.a,t,e,A)},U.setAtomMarker=function(t,e){n.on(this.a,t,e)},U.setAtomMass=function(t,e){n.pn(this.a,t,e)},U.setAtomParity=function(t,e,A){n.qn(this.a,t,e,A)},U.setAtomQueryFeature=function(t,e,A){n.rn(this.a,t,e,A)},U.setAtomRadical=function(t,e){n.sn(this.a,t,e)},U.setAtomSelection=function(t,e){n.tn(this.a,t,e)},U.setAtomX=function(t,e){n.vn(this.a,t,e)},U.setAtomY=function(t,e){n.wn(this.a,t,e)},U.setAtomZ=function(t,e){n.xn(this.a,t,e)},U.setAtomicNo=function(t,e){n.yn(this.a,t,e)},U.setBondAtom=function(t,e,A){n.zn(this.a,t,e,A)},U.setBondBackgroundHiliting=function(t,e){n.An(this.a,t,e)},U.setBondCIPParity=function(t,e){n.Bn(this.a,t,e)},U.setBondESR=function(t,e,A){n.Cn(this.a,t,e,A)},U.setBondForegroundHiliting=function(t,e){n.Dn(this.a,t,e)},U.setBondOrder=function(t,e){n.En(this.a,t,e)},U.setBondParity=function(t,e,A){n.Fn(this.a,t,e,A)},U.setBondParityUnknownOrNone=function(t){n.Gn(this.a,t)},U.setBondQueryFeature=function(t,e,A){n.Hn(this.a,t,e,A)},U.setBondType=function(t,e){n.In(this.a,t,e)},U.setChirality=function(t){n.Jn(this.a,t)},U.setFragment=function(t){n.Kn(this.a,t)},U.setHelperValidity=function(t){n.Ln(this.a,t)},U.setHydrogenProtection=function(t){n.Mn(this.a,t)},U.setMaxAtoms=function(t){n.Nn(this.a,t)},U.setMaxBonds=function(t){n.On(this.a,t)},U.setMoleculeColor=function(t){n.Pn(this.a,t)},U.setName=function(t){n.Qn(this.a,t)},U.setParitiesValid=function(t){n.rq(this.a,t)},U.setStereoBondFromAtomParity=function(t){n.sq(this.a,t)},U.setStereoBondFromBondParity=function(t){n.tq(this.a,t)},U.setStereoBondsFromParity=function(){n.uq(this.a)},U.setToRacemate=function(){this.a.L=!0},U.setUnknownParitiesToExplicitlyUnknown=function(){n.nw(this.a)},U.shareSameFragment=function(t,e){return n.wp(this.a,t,e)!=-1},U.stripIsotopInfo=function(){return n.Tn(this.a)},U.stripSmallFragments=function(t){return n.vq(this.a,t)},U.stripStereoInformation=function(){n.ow(this.a)},U.suggestBondType=function(t,e){return n.Un(this.a,t,e)},U.supportsImplicitHydrogen=function(t){return n.wq(this.a,t)},U.swapAtoms=function(t,e){n.Vn(this.a,t,e)},U.swapBonds=function(t,e){n.Wn(this.a,t,e)},U.toIsomericSmiles=function(t){t=t||{};var e=t.createSmarts===!0,A=t.includeMapping===!0,P=t.kekulizedOutput===!0;return this.vc(e,A,P)},U.vc=function(t,e,A){var P;return P=0,t&&(P|=1),e&&(P|=2),A&&(P|=4),n.mr(new n.ur(this.a,P))},U.toMolfile=function(){var t;return t=new n.Xr(this.a),t.a.a},U.toMolfileV3=function(){var t;return t=new n.Fs(this.a),t.b.a},U.toSVG=function(t,e,A,P){if(typeof t!==o0||typeof e!==o0)throw new Error(\"Molecule#toSVG requires width and height to be specified\");P=P||{};var r=P.factorTextSize||1,i=P.autoCrop===!0,D=typeof P.autoCropMargin===On?5:P.autoCropMargin,u=this.tc(t,e,r,i,D,A,P);return u=u.replace(\"<style>\",\"<style> text {font-family: sans-serif;}\"),P.fontWeight&&(u=u.replace(/font-size=/g,'font-weight=\"'+P.fontWeight+'\" font-size=')),P.strokeWidth&&(u=u.replace(/stroke-width=\"[^\"]+\"/g,fP+P.strokeWidth+'\"')),u},U.toSmarts=function(){return n.mr(new n.ur(this.a,1))},U.toSmiles=function(){return n.kv(new n.nv,this.a)},U.translateCoords=function(t,e){n.Xn(this.a,t,e)},U.validate=function(){n.qw(this.a)},U.zoomAndRotate=function(t,e,A){n.Zn(this.a,t,e,A)},U.zoomAndRotateInit=function(t,e){n.$n(this.a,t,e)},j.PO=32,j.QO=2,j.RO=4,j.SO=6,j.TO=64,j.UO=128,j.VO=1,j.WO=256,j.XO=8,j.YO=r0,j.ZO=16,j.$O=c1,j._O=512,j.aP=MD,j.bP=24,j.cP=MD,j.eP=hr,j.fP=sr,j.gP=Tr,j.hP=0,j.iP=3,j.jP=1,j.kP=2,j.lP=64,j.mP=384,j.nP=448,j.oP=192,j.pP=256,j.qP=0,j.rP=320,j.sP=128,j.uP=1,j.vP=2,j.wP=4,j.xP=0,j.yP=3,j.zP=1,j.AP=XA,j.BP=2,j.CP=1,j.DP=2,j.EP=Be,j.FP=3,j.GP=25,j.HP=5,j.IP=39,j.JP=Ln,j.KP=P0,j.LP=Ne,j.MP=AA,j.NP=K0,j.OP=4,j.PP=7,j.QP=nA,j.RP=eA,j.SP=l0,j.TP=J1,j.UP={l:4194302,m:4193343,h:7},j.VP=5,j.WP=17,j.XP=$e,j.YP=Me,j.ZP=7,j.$P=32,j._P=c1,j.aQ=46,j.bQ=Rn,j.cQ=128,j.dQ=n0,j.eQ=E0,j.fQ=e9,j.gQ=256,j.hQ=Ue,j.iQ=Ge,j.jQ=n9,j.kQ=512,j.lQ=Le,j.mQ=z1,j.nQ=16,j.oQ=A9,j.pQ=r0,j.qQ=je,j.rQ=32,j.sQ=fA,j.tQ=m0,j.uQ=64,j.vQ=4,j.wQ=8,j.xQ=H0,j.yQ=lA,j.zQ=134217728,j.AQ=3,j.BQ=14,j.CQ=_e,j.DQ=le,j.EQ=ze,j.FQ=Ve,j.GQ=qe,j.HQ=Ie,j.IQ=Ee,j.JQ=un,j.KQ=120,j.LQ=4,j.MQ=3,j.NQ=2,j.OQ=ye,j.PQ=BA,j.QQ=ye,j.RQ=z0,j.SQ=30,j.TQ=Ur,j.UQ=ke,j.VQ=3,j.WQ=22,j.XQ=fr,j.YQ=2,j.ZQ=44,j.$Q=48,j._Q=32,j.aR=0,j.bR=16,j.cR=4,j.dR=48,j.fR=1,j.gR=0,j.hR=3,j.iR=2,j.jR=1,j.kR=0,j.lR=3,j.mR=2,j.nR=We,j.oR=oA,j.pR=2,j.qR=21,j.rR=m0,j.sR=31,j.tR=5,j.uR=0,j.vR=Qe,j.wR=8,j.xR=7680,j.yR=4,j.zR=9,j.AR=9,j.BR=$A,j.CR=4,j.DR=13,j.ER=8,j.FR=2,j.GR=Mn,j.HR=je,j.IR=16,j.JR=6291840,j.KR=23,j.LR=Y0,j.MR=128,j.NR=32,j.OR=64,j.PR=96,j.QR=2,j.RR=5,j.SR=256,j.TR=re,j.UR=3,j.VR=17,j.WR=384,j.XR=2,j.YR=7,j.ZR=6291967,j.$R=1,j._R=4,j.aS=386,j.bS=512,j.cS=8,j.dS=2,j.eS=129,j.fS=511,j.gS=127,j.hS=384,j.iS=16,j.jS=32,j.kS=64,j.lS=1,j.mS=4,j.nS=257,j.oS=458752,j.pS=ae,j.qS=r1,j.rS=Ue,j.sS=n0,j.tS=z1,j.uS=YA,j.vS=0,j.wS=327680,j.yS=24,j.zS=321,j.AS=6,j.BS=5,j.CS=32,j.DS=0,j.ES=1,j.FS=2,j.GS=255,j.HS=16,j.IS=128,j.JS=1,j.KS=8,j.LS=4,j.MS=2,j.NS=32,j.OS=64,j.PS=248,j.QS=31,j.RS=1,j.SS=0,j.TS=15,j.US=7,j.VS=3,j.WS=63,j.XS=95,j.YS=190,j.ZS=16,j.$S=0,j._S=1,j.aT=16,j.bT=256,j.cT=128,j.dT=8,j.eT=32,j.fT=4,j.gT=511,j.hT=64,j.iT=1,j.jT=2,l.eab=O(42),j.LY=function(t){nt.IG.call(this,t.a)},G(410,279,{},j.LY),_0(U,{acceptorCount:{get:function(){return nt.FG(this)}}}),_0(U,{donorCount:{get:function(){return nt.GG(this)}}}),_0(U,{logP:{get:function(){return nt.HG(this)}}}),_0(U,{logPString:{get:function(){return Y1.q3(nt.gG((new nt.hG,this.a)))}}}),_0(U,{logS:{get:function(){return nt.MG((nt.LG(),this.a))}}}),_0(U,{logSString:{get:function(){return Y1.q3(nt.NG((nt.LG(),this.a)))}}}),_0(U,{polarSurfaceArea:{get:function(){return nt.AG((nt.yG(),this.a))}}}),_0(U,{polarSurfaceAreaString:{get:function(){return Y1.q3(nt.BG((nt.yG(),this.a)))}}}),_0(U,{rotatableBondCount:{get:function(){return n.Bp(this.a)}}}),_0(U,{stereoCenterCount:{get:function(){return n.kw(this.a)}}}),l.dab=O(410),j.WY=function(t){this.a=t},j.dZ=function(){return new j.WY(new tt.yH)},j.eZ=function(t,e){var A,P;for(P=d(l.$7,xe,25,t.length,0,1),A=0;A<t.length;A++)P[A]=t[A].a;return new j.WY(new tt.AH(P,e))},j.fZ=function(t){return new j.WY(e1.KF(t))},j.gZ=function(t){var e,A;return A=n.zv(new n.Hv,c.szb((e=t,c.nzb(),e))),new j.WY(A)},G(71,1,{},j.WY),U.addCatalyst=function(t){tt.$G(this.a,t.a)},U.addCatalystAt=function(t,e){tt._G(this.a,t.a,e)},U.addProduct=function(t){tt.aH(this.a,t.a)},U.addProductAt=function(t,e){tt.bH(this.a,t.a,e)},U.addReactant=function(t){tt.cH(this.a,t.a)},U.addReactantAt=function(t,e){tt.dH(this.a,t.a,e)},U.clear=function(){tt.eH(this.a)},U.clone=function(){return new j.WY(new tt.zH(this.a))},U.getAverageBondLength=function(){return tt.gH(this.a)},U.getCatalyst=function(t){return new j.rT(tt.hH(this.a,t))},U.getCatalysts=function(){return this.a.a.a.length},U.getHighestMapNo=function(){return tt.iH(this.a)},U.getMergedCopy=function(){return new j.WY(tt.jH(this.a))},U.getMolecule=function(t){return new j.rT(tt.kH(this.a,t))},U.getMolecules=function(){return tt.lH(this.a)},U.getName=function(){return tt.mH(this.a)},U.getProduct=function(t){return new j.rT(tt.nH(this.a,t))},U.getProducts=function(){return this.a.f.a.length},U.getReactant=function(t){return new j.rT(tt.oH(this.a,t))},U.getReactants=function(){return this.a.g.a.length},U.getReactionCenterMapNos=function(){return tt.pH(this.a)},U.isEmpty=function(){return tt.qH(this.a)},U.isFragment=function(){return tt.rH(this.a)},U.isPerfectlyMapped=function(){return tt.sH(this.a)},U.isReactionLayoutRequired=function(){return tt.tH(this.a)},U.removeCatalysts=function(){c.kzb(this.a.a.a,0)},U.setFragment=function(t){tt.vH(this.a,t)},U.setName=function(t){tt.wH(this.a,t)},U.toRxn=function(t){var e;return e=new e1.JF(this.a,t),e.a?e.a.a:null},U.toRxnV3=function(t){var e;return e=new e1.SF(this.a,t),e.a?e.a.a:null},U.toSmiles=function(){return n.vr(this.a)},U.validateMapping=function(){tt.xH(this.a)},l.gab=O(71),j.RZ=function(){},j.SZ=function(t,e){return!e&&(e={mode:3}),e=Object.assign({},e),\"ensureCoordinates\"in e?(e.ensureCoordinates=!!e.ensureCoordinates,j.TZ(t,e.ensureCoordinates)):(typeof e.mode!==o0&&(e.mode=3),e.mode=Math.trunc(e.mode),j.UZ(t,e.mode))},j.TZ=function(t,e){var A;return A=tt.TH(t,e,null),A?new j.WY(A):null},j.UZ=function(t,e){var A;return A=tt.RH(t,e),A?new j.WY(A):null},j.VZ=function(t,e){return!e&&(e={keepAbsoluteCoordinates:!1,mode:3}),e=Object.assign({},e),e.keepAbsoluteCoordinates=!!e.keepAbsoluteCoordinates,\"sortByIDCode\"in e?(e.sortByIDCode=!!e.sortByIDCode,j.XZ(t,e.keepAbsoluteCoordinates,e.sortByIDCode)):(typeof e.mode!==o0&&(e.mode=3),e.mode=Math.trunc(e.mode),j.WZ(t,e.keepAbsoluteCoordinates,e.mode))},j.WZ=function(t,e,A){return tt.UH(t.a,e,A)},j.XZ=function(t,e,A){return T.ujb(tt.VH(t.a,e,A))},G(411,1,{},j.RZ),j.FZ=\"+\",j.GZ=15,j.HZ=8,j.IZ=2,j.JZ=3,j.KZ=4,j.LZ=1,j.MZ=0,j.NZ=\" \",j.OZ=\"#\",j.PZ=\"!\",j.QZ=16,l.fab=O(411),j.YZ=function(t){this.a=new tt.kI(t.a)},G(412,1,{},j.YZ),U.getProducts=function(){var t,e,A,P;if(P=tt.cI(this.a),P.length==0)return w1(l.eab,[T0,Xr],[171,42],0,[0,0],2);for(A=w1(l.eab,[T0,Xr],[171,42],0,[P.length,P[0].length],2),t=0;t<P.length;t++)for(e=0;e<P[0].length;e++)$1(A[t],e,new j.rT(P[t][e]));return A},U.setReactant=function(t,e){return tt.iI(this.a,t,e.a)},l.hab=O(412),j.a$=function(){},j.b$=function(t){Wt.dAb(t),j._Z=!0},j.c$=function(){throw new Error(\"static resources must be registered first\")},G(413,1,{},j.a$),j._Z=!1,l.iab=O(413),j.i$=function(t){this.a=t},G(262,1,{},j.i$),U.determineAromaticity=function(t,e,A,P){n.Ys(this.a,t,e,A,P)},U.getAtomIndex=function(t,e){return n.$s(this.a,t,e)},U.getAtomRingSize=function(t){return n._s(this.a,t)},U.getBondIndex=function(t,e){return n.at(this.a,t,e)},U.getBondRingSize=function(t){return n.bt(this.a,t)},U.getHeteroPosition=function(t){return n.ct(this.a,t)},U.getRingAtoms=function(t){return n.dt(this.a,t)},U.getRingBonds=function(t){return n.et(this.a,t)},U.getRingSize=function(t){return n.gt(this.a,t)},U.getSharedRing=function(t,e){return n.ht(this.a,t,e)},U.getSize=function(){return this.a.i.a.length},U.isAromatic=function(t){return n.jt(this.a,t)},U.isAtomMember=function(t,e){return n.mt(this.a,t,e)},U.isBondMember=function(t,e){return n.nt(this.a,t,e)},U.isDelocalized=function(t){return n.ot(this.a,t)},U.qualifiesAsAmideTypeBond=function(t){return n.st(this.a,t)},U.validateMemberIndex=function(t,e){return n.yt(this.a,t,e)},j.d$=7,j.e$=3,j.f$=7,j.g$=5,j.h$=1,l.jab=O(262),j.A$=function(t,e){this.a=new e1.aG(new pt.ngb(t),e)},G(414,1,{},j.A$),U.getField=function(t){var e,A;for(A=e1.ZF(this.a),e=0;e<A.length;e++)if(T._ib(A[e],t))return e1.YF(this.a,e);return null},U.getFieldData=function(t){return e1.YF(this.a,t)},U.getFieldNames=function(t){return e1.$F(this.a,t)},U.getMolecule=function(){return new j.rT(e1._F(this.a))},U.getNextFieldData=function(){var t;return t=this.a.b.a,t},U.getNextMolFile=function(){var t;return t=this.a.g.a,t},U.next=function(){return e1.VF(this.a)},l.kab=O(414),j.I$=function(t){t.a=new n.eu},j.J$=function(t,e){n.Xt(t.a,e.a)},j.K$=function(t,e){n.$t(t.a,e.a)},j.L$=function(){j.I$(this)},G(416,1,{},j.L$),U.isFragmentInMolecule=function(){return n.St(this.a)},U.setFragment=function(t){j.J$(this,t)},U.setMol=function(t,e){n.$t(this.a,e.a),n.Xt(this.a,t.a)},U.setMolecule=function(t){j.K$(this,t)},l.mab=O(416),j.Q$=function(t){t.a=new n.uu},j.R$=function(){j.Q$(this)},j.S$=function(t){return Pn(t)},j.U$=function(t){return n.vu(t)},j.V$=function(t){return n.wu(t)},j.W$=function(){return n.lu(),n.ju},j.X$=function(t,e){return n.xu(t,e)},j.Y$=function(t,e){return n.yu(t,e)},G(417,1,{},j.R$),U.createIndex=function(t){return n.mu(this.a,t.a)},U.isFragmentInMolecule=function(){return n.pu(this.a)},U.setFragment=function(t,e){n.su(this.a,t.a,e)},U.setMolecule=function(t,e){n.tu(this.a,t.a,e)},l.lab=O(417),j.a_=function(t,e){e=e||{};var A=e.smartsMode||\"smiles\",P=e.skipCoordinateTemplates||!1,r=e.makeHydrogenExplicit||!1,i=e.noCactvs||!1,D=e.singleDotSeparator||!1,u=e.createSmartsWarnings||!1;t.wc(A,P,r,i,D,u)},j.b_=function(t){j.a_(this,t)},G(418,1,{},j.b_),U.getSmartsWarning=function(){return n.uv(this.a)},U.wc=function(t,e,A,P,r,i){var D;switch(D=0,t){case\"smarts\":D=2;break;case\"guess\":D=1}A&&(D|=8),e&&(D|=4),P&&(D|=16),r&&(D|=32),i&&(D|=64),this.a=new n.Iv(D)},U.xc=function(t,e,A,P){var r;return n.xv(this.a,t.a,c.szb((r=e,c.nzb(),r)),A,P),t},U.parseMolecule=function(t,e){e=e||{};var A=e.molecule||new j.pT,P=!e.noCoordinates,r=!e.noStereo;return this.xc(A,t,P,r)},U.parseReaction=function(t){return new j.WY(n.yv(this.a,t))},U.setRandomSeed=function(t){n.Fv(this.a,l.Ieb(t))},l.nab=O(418),j.r_=function(){j.r_=u1,j.k_=(nt.UG(),nt.PG)},j.s_=function(){j.r_(),j._Z||j.c$(),new nt.ZG},G(419,1,{},j.s_),U.assessRisk=function(t,e){var A;return nt.VG(t.a,(A=e,!Y1.n3&&(Y1.n3=new Y1.o3),A))},U.getDetail=function(t,e){return Y1.q3(nt.WG(t.a,e))},j.i_=3,j.j_=2,j.l_=1,j.m_=0,j.n_=2,j.o_=0,j.p_=3,j.q_=1,l.oab=O(419),j.v_=function(t,e,A){this.a=new tt.nI(t.a,e.a)},G(420,1,{},j.v_),U.applyTransformation=function(t,e){tt.lI(this.a,t.a,e)},U.setMolecule=function(t,e){return tt.mI(this.a,t.a)},l.pab=O(420),j.y_=function(){},j.z_=function(t,e){e=e||{};var A=(typeof e.maxSphereSize===On?5:e.maxSphereSize)|0,P=(typeof e.type===On?0:e.type)|0;return Kt.xz(t,A,P)},G(421,1,{},j.y_),l.qab=O(421),j.A_=function(t){n.Ir(),n.Mr.call(this,t)},G(261,151,{151:1},j.A_),_0(U,{absoluteWeight:{get:function(){return n.Jr(this)}}}),_0(U,{formula:{get:function(){return n.Kr(this)}}}),_0(U,{relativeWeight:{get:function(){return n.Lr(this)}}}),l.rab=O(261),_.v0=function(){_.v0=u1,_.K_=(Tt.WM(),Tt.UM),_.I_=Tt.SM,_.J_=Tt.TM,_.L_=Tt.VM},_.w0=function(t,e,A){var P=t.yc();return P.onChange(e,A)},_.x0=function(t){var e=t.yc();return e.getCanvasHeight()},_.y0=function(t){var e=t.yc();return e.getCanvasWidth()},_.z0=function(t){var e=t.yc();return e.getClipboardHandler()},_.A0=function(t){var e=t.yc();return e.getDrawContext()},_.B0=function(t){return t.a},_.C0=function(t){t.b=!1,V.TL(t.a,new R.S2(_.A0(t)))},_.D0=function(t){t.b||(t.b=!0,_.t1(t.f,new _.W0(t)))},_.E0=function(t,e,A){_.v0();var P;this.a=new V.qM(new n.sw,t,A,this),V.ZK(this.a,new _.U0(this)),this.c=e,this.f=A,this.e=new R.d3,Tt.iN(this.e,this.a),this.d=new R.a3,Tt.iN(this.d,this.a),P=_.z0(this),V.ZL(this.a,new R.$1(P))},G(422,1,{},_.E0),U.addPastedOrDropped=function(t,e,A){V.$K(this.a,t.a)},U.clearAll=function(){V.lL(this.a)},U.fireKeyEvent=function(t,e,A,P,r,i){var D;D=new Tt.lN(t,e,i,this.a),Tt.jN(this.d,D)},U.fireMouseEvent=function(t,e,A,P,r,i,D,u,o){var Q;Q=new Tt.oN(t,e,A,P,r,i,D,u,o,this.a),Tt.jN(this.e,Q)},U.getGenericEditorArea=function(){return _.B0(this)},U.yc=function(){return this.c},U.getMode=function(){return this.a.U},U.getMolecule=function(){return new j.rT(this.a.V)},U.getReaction=function(){return new j.WY(V.EL(this.a))},U.moleculeChanged=function(){V.QL(this.a)},U.repaint=function(){_.D0(this)},U.setMolecule=function(t){V.bM(this.a,t.a)},U.setReaction=function(t){V.cM(this.a,t.a)},U.toolChanged=function(t){V.lM(this.a,t)},U.b=!1,_.E_=4,_.F_=8,_.G_=1,_.H_=2,_.M_=-2,_.N_=-5,_.O_=-1,_.P_=-4,_.Q_=-8,_.R_=-7,_.S_=1,_.T_=2,_.U_=-6,_.V_=-3,_.W_=8,_.X_=2,_.Y_=1,_.Z_=4,_.$_=3,_.__=7,_.a0=4,_.b0=5,_.c0=6,_.d0=1,_.e0=2,_.f0=-1,_.g0=-2,_.h0=0,_.i0=1,_.j0=4,_.k0=2,_.l0=3,_.m0=10,_.n0=5,_.o0=6,_.p0=13,_.q0=11,_.r0=7,_.s0=8,_.t0=12,_.u0=9,l.uab=O(422),_.T0=function(t,e){_.w0(t.a,e.j,e.a)},_.U0=function(t){this.a=t},G(288,1,wn,_.U0),U.lc=function(t){_.T0(this,t)},l.sab=O(288),_.W0=function(t){this.a=t},G(291,1,{263:1},_.W0),U.mc=function(){_.C0(this.a)},l.tab=O(291),_.Y0=function(t){var e;t.a=!1,e=new R.S2(_.$0(t)),R.x2(e,0,0,t.b.o,t.b.e),V.GM(t.b,new R.S2(_.$0(t)))},_.Z0=function(t){var e=t.zc();return e.getBackgroundRGB()},_.$0=function(t){var e=t.zc();return e.getDrawContext()},_._0=function(t){return t.b.e},_.a1=function(t){return t.b.o},_.b1=function(t){t.a||(t.a=!0,_.t1(t.e,new _.j1(t)))},_.c1=function(t,e,A){var P=t.zc();return P.setDimensions(e,A)},_.d1=function(t,e,A){this.b=new V.HM(this,t.a),this.c=e,this.e=A,this.d=new R.d3,Tt.iN(this.d,this.b),_.c1(this,this.b.o,this.b.e),_.Y0(this)},G(424,1,{},_.d1),U.fireMouseEvent=function(t,e,A,P,r,i,D,u,o){var Q;Q=new Tt.oN(t,e,A,P,r,i,D,u,o,this.b),Tt.jN(this.d,Q)},U.getHeight=function(){return _._0(this)},U.zc=function(){return this.c},U.getWidth=function(){return _.a1(this)},U.setDimensions=function(t,e){_.c1(this,t,e)},U.a=!1,l.wab=O(424),_.j1=function(t){this.a=t},G(300,1,{263:1},_.j1),U.mc=function(){_.Y0(this.a)},l.vab=O(300),_.l1=function(t,e,A){var P;return P=new R.t2(_.p1(t,e),t.a),R.p2(P,A),P},_.m1=function(t,e,A){var P=t.Ac(),r=P.createImage(e,A);return new R.Z2(r)},_.n1=function(t,e){return T._ib(e,Or)?new R.Z2(_.o1(t,168,1428,\"%5968%UDy0ClA8tJ9QPLT6UDy08FA8tJVQPLQK%858%BQPLQdUDy0yVA8tP9QPLT/UDy0/1A8tP9QPLSW%362%D4BwYC+AYGAvgHBgE%303%D/AAAB/wAAAQ%159%FA8tC1QPLThUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTl%330%D5BgcB+AcGBPkHBhX5BwdN+QYHefgHB2/5Bwc8+AYGFfgGBgj5BgcF+AYGAvkHBgE%245%/wAAAf8AAAL/AAAG/wAAEP8AACP/AAA7/wAAP/8AAD3/AAAg/wAABw%154%UDy0RFA8tPJQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT5%325%PkFCAT4BgZE+QcHo/gHB+X5Bwb/+QcH//kHB//4Bwf9+QYH1vgHB5X5BwZD+QcGDvkHBwb5BgYD+QcGAQ%228%D/AAAS/wAARP8AAIL/AAC4/wAA2/8AAPf/AAD//wAA//8AAPj/AAB+/wAADw%148%BQPLRnUDy0+1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%314%D5BwYC+AYHK/kHBrb4Bwf4+AcH//gHB//5Bwf/+AcG//kHBv/5Bwf/+AYH//gHB/75Bwf3+AYHs/kHBkH5BgcR+QYGB/kFBgL6BgYB%197%P8AAAH/AAAI/wAAKP8AAIj/AADh/wAA9/8AAP3/AAD//wAA//8AAP//AAD6/wAAzv8AAGH/AAAq/wAAEw%143%FA8tI9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%304%+QYHAfoIBwX4BgZu+QcH6fkGB//5Bgf/+QYH//kHB//5Bwf/+QcG//kHBv/4Bwb/+AcH//gHB//5Bgf/+AcH//kHBvT5Bwas+QYGO/kGBgr5BgUG+gUFAQ%175%P8AAAE%5%/wAACv8AAFX/AACy/wAA8P8AAP//AAD//wAA//8AAP//AAD//wAA//8AANP/AACD/wAARf8AACz/AAAZ/wAACQ%132%BQPLQJUDy0qlA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%304%+QcGBPkGB374Bwf5+AcH//kHB//5Bwf/+QcH//kHBv/4Bwf/+AcH//gHB//5Bwf/+QcG//gHB//5Bwf/+QcG//gGB//4Bwb/+QYG8PkGBoD5BgYg+gYFCvoFBQQ%165%/wAAAf8AAA7/AABV/wAAzf8AAPv/AAD//wAA//8AAP//AAD//wAA//8AAPz/AADo/wAAkf8AAEr/AAAz/wAAH/8AAA//AAAG/wAAAQ%127%FA8tBNQPLTDUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%304%+QYGUvgHBvn4Bwf/+AcH//kHB//5Bwf/+QcH//kHB//4Bgf/+QcH//gHB//4Bwb/+AcH//gHB//4Bgf/+QcG//gGB//5Bwf/+QYG//kGBv76BgbL+gYFTfoFBQ76BQUH+gUEAQ%148%D/AAAG/wAAWf8AAMb/AAD9/wAA//8AAP//AAD//wAA//8AAP//AAD//wAA7P8AAJ3/AABW/wAANP8AACL/AAAS/wAAB/8AAAI%133%UDy0I1A8tNtQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%293%PkHBwH4BwYD+AYHwfgHB//4Bwb/+QYH//gGBv/4Bwf/+QYH//kGB//5Bwf/+AcH//gHB//5Bwb/+AcH//kGB//4Bwf/+AYG//kHB//4Bwb/+AYG//kHB//5BQb/+QYF8/oFBX76BQUd+wQFCfsEBAI%133%/wAABv8AADj/AAC5/wAA/P8AAP//AAD//wAA//8AAP//AAD//wAA//8AAPP/AAC6/wAAXv8AADn/AAAm/wAAE/8AAAj/AAAC/wAAAQ%132%BQPLQ7UDy06FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%293%PgGBgH4BggD+QcGqPgHB//4Bwf/+AcH//gHB//4Bwf/+AcG//gHB//4Bgf/+QYG//gGBv/5Bgb/+AcH//kHB//4Bgb/+QcH//gHB//5Bwf/+QcH//kHBv/5Bgb/+gYG//oFBfz6BQW++wQFMfoFBAz7BAQE%112%/wAAAQ%4%D/AAAf/wAAo/8AAPD/AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA0P8AAHL/AABB/wAAKf8AABb/AAAJ/wAAA/8AAAE%138%FA8tFNQPLT2UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%293%PgGBwH4BwcE+AcHJ/gHB8j4Bgf/+AcH//kHBv/4Bwf/+QcH//gHB//5Bgb/+AcG//gHB//4Bwf/+AYH//gHB//4Bwb/+QcH//kGB//5Bwf/+AYH//kHBv/5Bgb/+QYG//oFBv/6BQX/+gQF3foEBVL7BAQR+wMEBvwDAwE%101%/wAAEP8AAGj/AADm/wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAOj/AACX/wAASP8AADD/AAAb/wAADP8AAAT/AAAB%144%UDy0blA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0LlA8tAI%287%D5BgcC+QcGC/gGBir5Bwea+QcH9vkHB//4Bwb/+QYG//gHB//4Bwf/+QYG//gGB//4Bwf/+AcH//gGBv/4Bwf/+QYH//kGB//4Bgf/+QcH//gHBv/5Bgb/+QUG//kGBf/6BQX/+gUF//oEBfD7BAR0/AQEFPsDAwj8BAMC%80%/wAAAf8AAAL/AAA1/wAAyv8AAPr/AAD//wAA//8AAP//AAD//wAA//8AAP//AAD8/wAAwv8AAGD/AAA5/wAAI/8AABD/AAAG/wAAAg%143%FA8tAFQPLSRUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTmUDy0yFA8tJpQPLR4UDy0UFA8tCI%261%+AYHA/gGBw35BwYa+AYHWPkHBr75Bwf4+AcH//kHB//4Bwf/+AYH//gHB//5Bwf/+QcH//gHB//4Bwb/+QcG//kHBv/4Bwf/+QcG//gHBv/5Bgb/+QYG//oGBv/6BQX/+gUF//sEBf/7BAT+/AQEkvwDAx38AwMK/QMDAg%74%/wAAFP8AAIP/AADy/wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAO7/AACX/wAAR/8AAC7/AAAX/wAACf8AAAI%149%UDy0B1A8tKpQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTzUDy0v1A8tI1QPLRSUDy0Fw%239%PkHBwL4BwcI+AYGFPgHByf5Bgdh+AYHzPkHB/v5Bwf/+QcG//kHBv/4Bwb/+QcG//kHB//5Bwf/+QYG//gHBv/4Bwf/+QcH//gGB//5Bwb/+QYG//oGBv/6BgX/+gQF//oFBP/7BAT/+wQE/fwEBK/8BAMk/AMDDPwCAgM%53%/wAAAf8AAAP/AAA5/wAA0v8AAP3/AAD//wAA//8AAP//AAD//wAA//8AAP//AAD+/wAA3P8AAGz/AAA8/wAAIv8AAA//AAAF/wAAAQ%148%BQPLQTUDy0xlA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tNdQPLSTUDy0TlA8tAw%223%D4BgYB+QcHBPkHBgv4BwcV+AYGK/gHB3H4BwfM+AcH/vgHB//4Bgf/+QYG//gHB//4Bwb/+AYH//gHBv/5Bwf/+QcH//gHB//4Bwb/+QYG//kGBv/6Bgb/+gUF//sEBf/7BAT/+wQE//wEBP78AwS7/AMDLP0DAgz9AgID%37%P8AAAE%5%/wAAEP8AAIL/AADx/wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAC5/wAAVv8AADH/AAAa/wAACf8AAAI%154%FA8tCBQPLTZUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPxQPLS3UDy0aVA8tBg%218%PkHBwH5BwcF+QYHDPgHBxn5Bwct+QYHd/kHBt/5Bwb8+AcG//gHB//4Bwf/+QcG//gGBv/4Bwf/+AcG//gHB//5Bgb/+QcH//kGBv/6BgX/+gYF//oFBf/7BAX/+wUE//sEBP/7AwT//AMDy/0DAzP8AwIO/QIDB%32%P8AAAP/AAAr/wAAx/8AAP3/AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA9v8AAJz/AABG/wAAK/8AABP/AAAG/wAAAQ%154%UDy0NVA8tONQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLS2UDy0XlA8tAg%213%+QYGAfgHBgX4BwcN+QcHGPgHBzf4BgeF+QcH4/gGBv/4Bwb/+AcH//gHB//5Bwf/+QcG//gHB//5Bwb/+QYG//kGBv/5Bgb/+QYF//oFBf/7BQX/+gUE//sEBP/8BAP//AMD//wDAtD9AgI3/QICDv0CAgQ%21%/wAAAv8AAG7/AADo/wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AADq/wAAgf8AAD7/AAAk/wAADv8AAAQ%159%BQPLRJUDy09VA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tOxQPLSSUDy0L%213%D5BwcB+QYHBfgGBg/5Bgcb+AcGOfgHB6D5Bwfv+QcH//kGBv/5Bwb/+AcH//gGB//5Bwf/+QYG//kGBv/5Bgb/+gUG//oGBf/6BAX/+gQF//sEBP/7BAP/+wMD//wDA//9AwPW/QMCOf0CAg/9AQIE%5%P4BAQH/AQEd/wEApv8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AANz/AABo/wAAOP8AAB7/AAAL/wAAAw%159%FA8tGZQPLT5UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tLxQPLRB%213%PgHBwL5BgcH+AcHEPkHBh/5BgZN+AYHsfgGB/v4Bwf/+AYG//gHBv/4Bgf/+QYH//kGBv/5Bgb/+gYG//oFBf/6BQX/+gQF//sEBP/7BAP//AQE//wDA//8AwP//QID0/0CAjP9AgEP/QEBAv4BAUf+AQDX/wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAx/8AAFz/AAAz/wAAGP8AAAj/AAAB%160%UDy0elA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0zFA8tEQ%207%D5BgcB+QcHAvgHBwj4BwYT+AYGIfgHB2j5BgfW+QcH/PkHBv/5Bwf/+AYH//gHBv/5Bgb/+QUF//oFBv/7BQX/+gUF//sFBP/7BAT//AME//wDA//8AwL//AMD//wCAsv+AgI8/QEBfP4BAfb+AQH//wEA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAPv/AAC6/wAAUP8AAC7/AAAV/wAABv8AAAE%159%BQPLSYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTAUDy0Mw%207%PkHBwH4BwcD+QcHCvgHBhb5Bwcy+QYHh/kHB/H4Bwf/+AcH//kGBv/5Bgb/+QYG//oFBv/6BQX/+gUF//oFBP/7BAT/+wQD//sDA//8AwP//QMD//0DAv79AgLp/gIC+/4CAf/+AQH//wAB//8AAP//AAD//wAA//8AAP//AAD//wAA+f8AAKL/AABJ/wAAKf8AABH/AAAF%165%FA8tJdQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/lA8tJZQPLQO%208%+AYGAfkHBwT4BgYO+QYGGfgHB0n5Bwe7+QcH+vkHBv/5Bgb/+gYF//kGBv/6BgX/+wUF//oEBf/7BAT/+wME//wDA//8AwP//AMD//wCAv/9AgL//QIC//4BAf/+AQH//gAA//8AAf//AAD//wAA//8AAP//AAD1/wAAmf8AAEP/AAAm/wAADv8AAAQ%170%FA8tPNQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLToUDy0VQ%212%D4BwcC+AcHB/kHBxL5BgYm+QcHb/kGB+n5Bwf++QYG//kFBv/5BgX/+wUF//sFBf/7BAT/+wME//wDA//8AwT//AMD//0DAv/9AgL//QIC//4CAf/+AgH//gAB//4AAP//AAD//wAA//8AAPT/AACF/wAAQP8AACL/AAAN/wAAAw%175%FA8tPRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tK1QPLQP%208%+AcHAfkHBwT4BwcL+QcHF/gHBj/5Bgau+QYG+/oFBv/6BQX/+gUF//sFBf/7BQT/+wQE//sEBP/8AwP//AMD//wCA//9AgL//gEC//4CAf/+AQH//gEA//4BAf//AAD//wAA6/8AAHz/AAA7/wAAH/8AAAv/AAAC%181%FA8tHVQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTgUDy0Mw%212%D5BwYB+QcHBvgHBhH5Bwci+QYHbPoGBuX5Bgb++gUG//oFBf/7BAT/+wUE//sEBP/8AwT//AMD//0CAv/9AgL//QIC//4BAf/+AgL//gEB//8AAP/+AADs/wAAcv8AADr/AAAd/wAACv8AAAI%191%BQPLSNUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09VA8tFs%213%+AcHAfgHBwP4BwcK+QYGFfkGBkD5BQWz+gUF/PoFBf/7BAT/+wQE//sEBP/7BAP//AME//wDA//8AgL//QIC//0CAv/9AgL//gEB//8BAPf/AAB5/wAAPP8AABz/AAAI/wAAAQ%202%UDy0f1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLRt%218%D5BwYB+AYGBfkGBhH6BQYk+gUFqfsEBf77BAX/+wUF//sEBP/7BAP//AMD//wDA//9AwL//QMD//0BAv/+AQL//gEB//4BAf/+AAG//wAANP8AABH/AAAD%213%FA8tGhQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0iw%218%+AcGAfkGBgn6BgaD+QUF8foFBf/7BQX/+wUE//sEBP/7BAT//AMD//wDBP/9AwP//QMC//4CAv/+AQL//gIB//4BAf//AAD8/wAAjf8AABr/AAAI/wAAAQ%212%BQPLRSUDy09VA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tHM%213%+AcHEfkGB5X6BgX7+gYF//oFBf/6BAX/+wUE//sEBP/7AwT//AMD//wDA//8AwL//AMD//0CAv/+AgL//gIB//4BAf/+AQD//wAA9/8AAGH/AAAU/wAABg%218%UDy0OlA8tO9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLRf%202%D5BwcZ+AYHvfkGB/75Bgb/+gYG//oFBf/6BQX/+gQE//sEBP/7BAT//AQE//wDA//9AwP//AMD//0CAv/9AgL//gIB//4BAf/+AAD//wAA//8AAOT/AABE/wAAEf8AAAQ%218%FA8tCJQPLTfUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT2UDy0O%187%9wcIAfkHByz5BgfN+QcH//kGBv/5Bgb/+QYG//oFBf/6BQX/+gUE//sEBP/7BAT//AQE//wEA//9AwP//QID//0CAv/9AgL//QIC//4BAf//AQH//gAB//8AAf//AADB/wAAKP8AAAz/AAAC%218%BQPLQXUDy0yVA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy031A8tAw%175%D4BwcB+AcGPPgHB9/4Bwb/+AcH//kHBv/5Bgb/+gYG//kGBf/6BQX/+gUE//oFBP/7BAX/+wQE//wDA/38AwP//AMD//0CA//9AgL//QIB//4CAv/+AQH//wEB//8AAP//AAD+/wAAn/8AAB3/AAAI/wAAAQ%218%UDy0ClA8tLFQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tKM%165%+AcGAfgGBwP5BwdU+AcH7fgGB//5Bgf/+AcH//kHB//5Bgb/+QYG//kFBv/6BQX/+wUF//oFBP/7BAT/+wQE5fwDBIr8AwPM/AMD//0DA//9AgL//QIC//0BAv/+AQH//gEA//8BAP//AAD//wAA9f8AAGb/AAAV/wAABQ%223%FA8tAFQPLSXUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLQ7%160%+QcGAvkHB2D5Bgfx+AYH//kGBv/4Bwf/+QYH//kHBv/4Bgb/+QYG//oGBv/6Bgb/+gUF//sEBP/7BATp+wQEbPwDBD78AwM6/AMDuP0DA/79AgL//gIC//0CAf/+AQL//gEB//8AAP//AAD//wAA//8AAOX/AAA8/wAAEP8AAAQ%229%UDy0cVA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%10%BQPLQRUDy0MVA8tFJQPLRvUDy0lVA8tMdQPLTwUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTI%149%PgGBgH4BwYE+AYGcvgHB/r4Bwb/+QcG//kHB//5Bwb/+AcG//gHB//4Bwb/+QYG//kGBv/6BgX/+gUF//oEBev7BARy+wQENvsEBBz8AwQU/AMDKP0DA6b8AgL//QIC//4CAv/+AgH//gAB//4AAP//AAD//wAA//8AAP//AAC8/wAAJv8AAAz/AAAB%229%FA8tFNQPLT2UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%48%UDy0LFA8tGFQPLSgUDy05FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0Pw%138%+QcHAfkGBgT4Bgd5+QcG/PkHB//5Bwb/+AYH//gGB//5Bwf/+AcH//kGBv/5Bwf/+QYG//oGBv/5Bgb/+gUF8/oFBX/6BQU6+wQEGvwEBAj7AwQD/AMDDP0DAx39AgKV/QIC+f4CAv/9AQH//gEB//8AAf//AAD//wAA//8AAP//AAD7/wAAe/8AABj/AAAH/wAAAQ%228%BQPLQ7UDy051A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%69%FA8tClQPLSAUDy0z1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0rg%132%D4BgcB+QcGA/gGB3/5Bgf8+QcH//kHB//4Bwf/+QYH//gGBv/5Bgf/+AcG//gHBv/5Bwb/+AYG//kGBv/5Bgb8+gYGlfoFBT37BQQe+wUECfsEBAE%5%/AMDAvwCAwr8AwIb/QICi/4CAvn+AgH//gEB//4BAP/+AAD//wAA//8AAP//AAD//wAA7v8AAEz/AAAS/wAAAw%234%UDy0IlA8tNxQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%85%FA8tCdQPLSEUDy05lA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/FA8tBU%122%PkHBgH5BQcG+QcHfPgHB/75Bgb/+AYH//kGB//4Bwf/+QcG//gHB//5Bwf/+QcH//gHBv/5Bgf/+AcG//kGB/75Bgax+gUGRPkFBSL6BQQK+wQFAg%15%PwDAwL8AgIJ/QMCGP4CAYD+AQL2/gEB//4BAP//AQH//wAB//8AAP//AAD//wAA//8AAML/AAAp/wAADP8AAAI%234%FA8tBRQPLTCUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%96%UDy0CFA8tFpQPLTQUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tF4%117%+QcGAfkHBwP5Bwd8+QcG+/gHB//4Bwf/+QcH//kGB//5Bwf/+AcH//kHBv/5Bwf/+AcH//kHB//5Bwf/+QcH//kGBtD6BgZR+gYGKPoFBg36BQUC%26%D9AwMB/QIDCP0CAhf9AgJ5/gIB9/4BAf//AQH//wAA//8AAP//AAD//wAA//8AAPv/AAB7/wAAF/8AAAc%239%BQPLQJUDy0rVA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%112%UDy0UVA8tNlQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tJ8%117%+QcGBPkHBm34Bwf7+QYH//gGB//4Bwf/+AcH//kHB//5Bwf/+AcH//kHB//4Bwb/+AcH//gHB//4Bgf/+AcG5/gGB2D5BgYv+gUFEvoFBgM%37%/QICAf0CAgj+AgEW/gEBgP4BAfn+AQH//wAB//8AAP//AAD//wAA//8AAP//AADt/wAARP8AABH/AAAD%245%FA8tI5QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%122%BQPLRoUDy08FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tMw%111%D5BwcB+QcHXPgHB/T4Bwb/+QcG//kHB//5Bwf/+AcH//kHBv/5Bwf/+QcG//kHBv/4Bgb/+QcH//kHBv/5Bgf7+AcHhPkGBjj5BgYX+QYGBQ%47%P0DAgH9AgII/QECGP4BAYP+AQD7/wEA//4AAP//AAD//wAA//8AAP//AAD//wAAsv8AACP/AAAK/wAAAQ%244%BQPLRmUDy0+1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%128%UDy0HFA8tMBQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tO4%106%PkJBQH5BgdD+AcG7/gHBv/5Bgf/+QcG//gHB//4Bgf/+AcG//kHB//5Bwf/+AcH//gHB//4Bwf/+QcG//gGB/75Bwen+QcHPvkHBh75BgYI+QYGAQ%52%D+AgIB/QEBCf4BARj+AQGX/gEB/v8AAf//AAD//wAA//8AAP//AAD//wAA9/8AAGL/AAAV/wAABg%250%UDy0RFA8tPFQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT2%133%FA8tARQPLSVUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP8%101%+QcGAfkHByv4Bgfg+QcG//kHB//4Bwb/+QYG//kHB//4Bgb/+QcG//gHBv/5Bwf/+AcH//gGBv/5Bwf/+QcG//kHB9D4BwZP+QcGJ/gHBgv5BwcC%64%/QICAf0BAgn+AQEc/gEBo/8AAP//AAD//wAA//8AAP//AAD//wAA//8AANv/AAAx/wAADv8AAAI%250%FA8tCtQPLTgUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTd%144%UDy0i1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP8%95%D6BwcB+AcHFPgGB8j4Bwf/+AcG//gHB//4Bgf/+QcG//kHB//4Bwb/+QcG//kHB//4Bwf/+AYH//gHB//4Bgf/+QcH7vgHBmr5BwYw+AYHEfgHBgM%74%P4CAQH+AQEK/gEBJP8BALz/AAD//wAA//8AAP//AAD//wAA//8AAP3/AACQ/wAAHP8AAAc%255%BQPLQRUDy0wlA8tP9QPLT/UDy0/1A8tP9QPLSb%149%FA8tItQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP8%90%PkHBwH4BgcJ+AYHp/kHBv/4Bgf/+QYG//gHB//4Bgb/+AcH//kHBv/4Bwf/+QYH//kHB//4Bwf/+QYH//kHB//4Bgf7+QcHjPkGBzn5BwcY+QYGBQ%84%D9AQEC/gEBC/4AASv/AQDT/wAA//8AAP//AAD//wAA//8AAP//AADq/wAAQ/8AABL/AAAD%256%UDy0B1A8tIlQPLT8UDy0+1A8tKFQPLQK%154%BQPLSnUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPs%95%D5Bwdk+QcH+fgGB//4Bwf/+QcH//kHBv/4Bgf/+QcG//kHBv/4Bwf/+QcH//gHB//4Bwf/+AcH//kGB//5BwbA+QcHR/gHByL5BgcJ+AcHAQ%90%/gEBA/8BAAz/AABD/wAA5v8AAP//AAD//wAA//8AAP//AAD//wAAt/8AACP/AAAK/wAAAQ%436%BQPLQLUDy03lA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tN0%85%+AcGAfkGBy35Bgbw+QcH//kHB//5Bwf/+QYH//gGB//5Bgf/+AcG//kHB//4Bwb/+AcH//gGB//4Bgf/+QcH//kHBuf5Bwdb+AcGK/gHBg75BwcC%101%P4AAAT/AQEO/wAAZP8AAPn/AAD//wAA//8AAP//AAD//wAA9v8AAGP/AAAW/wAAB%443%UDy0UFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tL%80%D4BwYB+AcHC/gHBrb4Bwf/+QcH//gHB//5Bwf/+QcG//gGB//4Bgf/+QcH//gHB//4Bwf/+AYH//kHB//4Bwb/+AYH9/kHB4H4Bwc2+QcHFfgHBgU%111%D+AQEF/wAAEv8AAIb/AAD7/wAA//8AAP//AAD//wAA//8AAMb/AAAp/wAADf8AAAE%442%FA8tNJQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tHk%85%+AcGWfkHBvz5Bwb/+QYG//kHBv/4Bwb/+QYG//gHBv/4Bgf/+AcH//gHB//5Bgf/+QcH//gHB//4Bwf/+AcHu/gHBkT5BwYf+AYHB/gGBwE%111%D/AAAB/wEAB/8AAB3/AAC8/wAA//8AAP//AAD//wAA//8AAP//AABu/wAAFv8AAAU%442%FA8tHZQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tCo%74%PgHBwH5BwcV+AcH4PgHB//4Bgf/+QcH//kGB//5Bwb/+QcH//kHB//5Bwb/+QcH//gHB//5Bwb/+QYH//gHB//5Bwfh+QcHV/gHByn4BwcN+AcHAg%122%/wEAAf8AAAn/AAAu/wAA2/8AAP//AAD//wAA//8AAP//AADW/wAAMP8AAA3/AAAC%437%FA8tDFQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy01%80%PgHBwL5BgZ2+AYG/fgGB//5Bwf/+AYH//gHB//4Bwf/+AcG//gHB//4Bwf/+AcG//kHB//4Bwf/+AcH//gHB/j4BwaB+QcHNfkGBxT5BwcD%133%P8AAAP/AAAN/wAAWf8AAPT/AAD//wAA//8AAP//AAD4/wAAcf8AABn/AAAF%442%BQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0ag%79%PgHBw/4BwbO+QYH//kHBv/5Bwb/+AYH//kHBv/5Bwf/+QcG//gGB//4Bgb/+QYH//gHB//5Bgf/+QYH//gHB7r5BwdD+QcGHvkHBgf5BwcB%138%D/AAAE/wAAEf8AAJP/AAD//wAA//8AAP//AAD//wAAyP8AACn/AAAN/wAAAQ%436%BQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTmUDy0Cg%79%PkHBkb4Bgf9+QcH//gGBv/5Bwb/+AYH//gHB//4Bwb/+AcG//kHB//4Bwf/+AcG//kHBv/4Bwb/+QcG4/kHB1j4BwYp+AcGDfkGBwE%143%D/AAAB/wAAB/8AAB7/AADO/wAA//8AAP//AAD//wAA/v8AAGT/AAAX/wAABQ%436%BQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLRs%85%PkHB6H4Bgb/+QYH//kHBv/4Bwf/+QYH//kHBv/4Bwb/+AYH//kHBv/4Bgb/+QYH//gHBv/4Bwf5+QYGifkGBzj5BwYV+QcHB%155%/wAAAf8AAAv/AABW/wAA9v8AAP//AAD//wAA//8AAMH/AAAp/wAACv8AAAE%426%FA8tBdQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tNRQPLQE%80%+QcHGPgGB+j4Bgb/+AcH//gHB//4Bgf/+AcG//kGBv/5Bwb/+QYH//kGBv/5Bwf/+AcH//gGB//5Bwbw+AcHWPgGByT5BwYJ%165%P8AAAT/AAAP/wAAnv8AAP//AAD//wAA//8AAO7/AABN/wAAFP8AAAM%426%FA8tExQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0+lA8tDU%79%D5BgcB+AcHQ/gGBvj4Bwf/+AcH//gHB//5Bwb/+QcH//kHB//5Bwf/+QcH//kHB//4Bwf/+QcH//kHBv/5Bwfs+QcGS/kHBhn5BwcE%170%D/AAAH/wAAJf8AANj/AAD//wAA//8AAP7/AACL/wAAHv8AAAc%426%FA8tKNQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0dw%84%D4BwcC+QcHZ/kHB/v5Bwf/+AcH//gGBv/4Bwb/+AcH//kHBv/5Bwf/+AYH//kHB//4Bgf/+QcG//gHB//5Bwfs+AYHR/gGBhb5BgYD%170%D/AAAC/wAADP8AAGf/AAD8/wAA//8AAP//AADR/wAALf8AAA7/AAAC%416%UDy0FlA8tPZQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLSq%90%D4BgYC+AcHe/gHB/35Bwf/+QYH//kHBv/4Bgb/+QcH//kHBv/5Bgf/+AcG//kGB//4Bwb/+AcH//gGB//4Bwfs+AcGR/kHBhb5BwcD%176%/wAABP8AABL/AACz/wAA//8AAP//AAD8/wAAVP8AABX/AAAD%416%UDy0kVA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tMNQPLQJ%90%D5BwcD+AcHgPkGB/35Bwf/+QcH//gHB//4Bgb/+QcG//gGB//5Bwf/+QcH//gGBv/5Bwb/+QYH//kHB//4Bwbs+QcHR/kHBxX4BwcD%176%/wAAAf8AAAj/AAAy/wAA4/8AAP//AAD//wAAjf8AAB//AAAG%410%BQPLQ0UDy0/FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy00lA8tAs%95%D5BgcE+AYHePkGBvz5Bwf/+AcH//kGB//5Bwb/+QcH//gHB//4Bgf/+QcH//kGBv/4Bwf/+QYH//gGB//5Bwbm+QYHQPgGBxX4BwYD%181%P8AAAP/AAAO/wAAfP8AAP3/AAD//wAAvP8AACr/AAAL%405%FA8tBBQPLTeUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTDUDy0EQ%100%D4BwcD+AcHXfgGB/r4Bwb/+QcH//kGB//4Bwf/+QcH//kHB//5Bwf/+AYH//gHB//4Bwb/+AcH//kHB//4BwfQ+QYHOPkHBhL5BwYC%186%D/AAAF/wAAF/8AALz/AAD//wAA1v8AADb/AAAP/wAAAQ%394%UDy0ClA8tMJQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tLVQPLQK%106%D4BgcC+QYGNfkGB/b4Bwf/+QcH//gHBv/4Bwb/+QcH//gGB//5Bwf/+QcH//gGB//4Bwf/+AYG//kGB//4Bwem+AcGLfgHBw75BgYB%186%D/AAAB/wAACf8AADr/AADp/wAA3v8AADz/AAAS/wAAAg%388%BQPLQKUDy0uVA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0hVA8tAI%111%D4BwcC+AYGEPgHB9P5Bgf/+AcG//gHBv/4Bwf/+AcG//gHB//5Bgf/+AcH//gGB//5Bwb/+QcH//kHB/34BwZt+AcHJvkHBgn4BwcB%192%/wAAA/8AAA7/AAB2/wAA0v8AADH/AAAR/wAAAg%383%FA8tBxQPLTKUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tOtQPLRL%128%9wgHA/kGB275Bwf/+QYG//kHBv/4Bgf/+AcH//kHB//5Bwf/+QcH//gHB//4Bwb/+AcH//kHB9H5BwdF+QcHG/gHBgU%202%P8AAAb/AAAT/wAAOv8AABz/AAAK/wAAAQ%378%UDy0PlA8tOhQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0s1A8tBc%133%+QYHBPkGBxv5BwfO+AYG//gHB//5Bwf/+QcH//kGB//4Bwf/+QcG//kHB//5Bwf/+AcH+fkHB4T5Bwcx+AcHD/kHBwI%202%P8AAAH/AAAG/wAACv8AAAr/AAAE%373%FA8tA9QPLSWUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tOJQPLRS%144%+QcGAfgHBgr5BwZS+QYH8/kHBv/5Bwf/+QcH//gHBv/5Bwb/+QYH//gGB//4Bwf/+AcHs/gHB0H4Bwcd+QYHBw%212%D/AAAB/wAAAf8AAAH/AAAB%368%UDy0W1A8tOdQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT0UDy0ilA8tAs%154%PkHBgT5BgYO+QYHYvgHB+n5Bgb/+AYH//gHBv/4Bgb/+AYG//kHB/n5Bwa5+AcHSvkHBif5BgcN+QcHAQ%591%FA8tFFQPLTSUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0+lA8tJZQPLQb%165%PkHBwH5BwcG+QcGEvkHBkj5Bweq+QcG5fgHB/v4Bwbx+AYHzfgGB4b5BwdE+AcHJ/gGBxD4BgcD%592%UDy0blA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPJQPLSNUDy0Gw%186%+AcHBfkGBxH4Bwce+QcGOPgHBkz5BwdL+AcHPPkHBy/5Bwce+QYHDfgGBwM%597%UDy0mFA8tP9QPLT/UDy0/1A8tP9QPLTeUDy0clA8tA4%202%PkHBwP5BwcJ+QYHEPgGBxb4BgcY+AcGFfgHBg75BwYH+QcHAg%602%UDy0PlA8tOtQPLTtUDy0nlA8tERQPLQB%10133%FA8tEFQPLTPUDy0/1A8tOhQPLR3%128%UDy0Z1A8tOhQPLT/UDy01lA8tEQ%709%UDy0LFA8tPhQPLT/UDy0/1A8tP9QPLT/UDy0ag%116%BQPLRiUDy0/1A8tP9QPLT/UDy0/1A8tPhQPLQ0%704%UDy0kFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy06FA9tAM%106%FI+tQFQPLTgUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLSY%704%UDy0nVA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tFg%106%FA8tExQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLSe%704%UDy0c1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tL0%106%FA8tLNQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLR3%704%UDy0D1A8tPhQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLQo%96%UDy0IlA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPxQPLQZ%709%FA8tJpQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLSU%96%UDy0h1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tKg%714%FA8tDRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT0UDy0D%85%BQPLQHUDy061A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tE%720%BQPLTIUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0a%85%BQPLRbUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy00Q%724%BQPLRjUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy00g%84%BQPLTJUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0aw%724%BQPLQIUDy071A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tDg%74%FA8tDFQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTwUDy0Dg%730%UDy0ilA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tKY%74%FA8tJxQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLSa%736%UDy0JFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPtQPLQV%64%UDy0DVA8tPNQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLQt%741%FA8tLlQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLR9%64%UDy0blA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tMM%746%FA8tExQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTgUj+1AQ%58%UDy02VA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tFs%746%FE+tAFQPLTlUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0U%53%BQPLRAUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy06FA8tAc%751%BQPLR6UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0tQ%52%BQPLSrUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0h%757%BQPLQTUDy0+1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tBk%42%FA8tApQPLT8UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT+UDy0Hg%762%UDy0olA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tDI%42%FA8tCpQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLSv%768%UDy0O1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy07lA8tAk%42%FJAtQFQPLTnUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLQ/%506%BRPrQBUDy0IVE9tAM%111%BQPLQsUDy0kFA8tJ5QPLR/UDy0GQ%111%FA8tJhQPLT/UDy0/1A8tP9QPLT+UDy0Xw%52%BQPLRVUDy0/lA8tP9QPLT/UDy0/1A8tJs%111%BQPLQUUDy0eFA8tJ5QPLSYUDy0N%357%BQPLQBUDy0I1A8tHFQPLTNUDy0/FA8tJ1QPLQD%101%FA8tEFQPLT4UDy0/1A8tP9QPLT/UDy0/FA8tKhQPLRB%106%BQPLRQUDy0mFA8tI9QPLQ2%64%UDy0MFA8tI9QPLSYUDy0Ww%106%UDy0PVA8tKdQPLT4UDy0/1A8tP9QPLT/UDy0+FA8tEQ%335%BQPLQBUDy0I1A8tHFQPLTNUDy0/FA8tP9QPLT/UDy0/1A8tP9QPLSdUT20Aw%95%FA8tM9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy01lA8tGtQPLQR%288%UDy0DlA8tGpQPLTRUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tNY%319%BQPLQBUDy0I1A8tHFQPLTNUDy0/FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0nVE9tAM%90%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT1UDy0mlA8tC8%266%FA8tCxQPLSTUDy071A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP8%303%BQPLQBUDy0I1A8tHFQPLTNUDy0/FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tJ1RPbQD%85%FA8tOVQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTDUDy0XFA8tAc%234%FA8tAdQPLRUUDy0wFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tOg%287%BQPLQBUDy0I1A8tHFQPLTNUDy0/FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLSdUDy0Aw%79%FA8tGFQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tOxQPLSIUDy0Hg%212%BQPLQYUDy0glA8tOhQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tGc%271%BQPLQBUDy0I1A8tHFQPLTNUDy0/FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0nVE9tAM%79%BQPLRZUDy02VA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/lA8tK9QPLRH%192%UDy0PVA8tK9QPLT7UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTgUDy0Yg%260%BQPLQBUDy0I1A8tHFQPLTNUDy0/FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tJ1RPbQD%80%Uj61AVA8tEVQPLSzUDy0/lA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0qw%74%UDy0EFA8tEBQPLRkUDy0ZFA8tEJQPLQT%74%BQPLSbUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0tVA8tE9SP7UB%250%BQPLQBUDy0I1A8tHFQPLTNUDy0/FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLSdUT20Aw%90%UDy0HFA8tIZQPLTrUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tGI%58%FA8tEpQPLS6UDy0/VA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0xFA8tFY%58%FA8tFtQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy07FA8tI5QPLQk%250%BQPLQBUDy0I1A8tHFQPLTNUDy0/FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0nVA8tAM%95%BQPLQHUDy0W1A8tMRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tKE%47%BQPLQYUDy0t1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTAUDy0Hw%47%FA8tJhQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tMlQPLReUDy0CQ%244%BQPLQBUDy0I1A8tHFQPLTNUDy0/FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tJ1RPbQD%106%BQPLQwUDy0mlA8tPRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tJ0%42%FA8tCFQPLTgUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy07VA8tD%43%FA8tI9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPRQPLSdUDy0Mg%244%BQPLQBUDy0I1A8tHFQPLTNUDy0/FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLSdUT20Aw%111%FA8tA1QPLRuUDy02FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/lA8tDY%37%UDy0EVA8tOBQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tOdQPLQf%37%FA8tDBQPLT+UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTaUDy0cFA8tBQ%245%UDy0HVA8tGxQPLTHUDy091A8tPpQPLT6UDy0+lA8tPpQPLT6UDy0+lA8tPpQPLT6UDy0+lA8tPpQPLT6UDy0+lA8tPpQPLT8UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT+UDy0+lA8tPpQPLT6UDy0+lA8tPpQPLT6UDy0+lA8tPpQPLT6UDy0+lA8tPpQPLT6UDy0+lA8tPpQPLT6UDy0mFI+tQE%122%FA8tD9QPLSrUDy0/FA8tP9QPLTuUDy0Xw%42%UDy0r1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLS/%42%BQPLRVUDy051A8tP9QPLT9UDy0rVA8tEc%261%UT20A1A8tAVQPLQFUDy0BVA8tAVQPLQFUDy0BVA8tAVQPLQFUDy0BVA8tAVQPLQFUDy0BVA8tAVQPLQFUDy0BVA8tDhQPLTgUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPxQPLRiUDy0BVA8tAVQPLQFUDy0BVA8tAVQPLQFUDy0BVA8tAVQPLQFUDy0BVA8tAVQPLQFUDy0BVA8tAVQPLQFUDy0BQ%138%UDy0ClA8tC1RPrUB%42%BQPLRAUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0V%43%UkC1AVA8tCpQPLQO%352%UDy0UlA8tOxQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tI8%287%BQPLStUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0x%400%FA8tANQPLRwUDy0/FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0rVE9tAM%282%FA8tAVQPLT6UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tBM%389%UDy0BFA8tJ1QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTNUDy0Ew%287%FA8tDVQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tEo%383%BQPLQTUDy0y1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tOxQPLQj%293%FA8tF9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tGU%378%FA8tDJQPLTcUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0+1A8tDQ%298%FA8tGRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tGY%373%UDy0UlA8tOxQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT8UDy0Yg%303%FA8tFRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tGU%362%FA8tANQPLRwUDy0/FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLR/%309%FA8tClQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tDo%357%UDy0BFA8tJ1QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tJ5RPbQD%309%FJAtQFQPLTpUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09FA8tAo%351%BQPLQUUDy0y1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0zVA8tBE%261%UDy0E1A8tDJQPLQJ%42%BQPLSPUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0og%42%UDy0CFA8tDJQPLQZ%293%FA8tDJQPLTrUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTrUDy0F%251%Uj+1AVA8tEdQPLS0UDy0/VA8tP9QPLTyUDy0Yw%36%BQPLQfUDy09lA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT9UDy0Kw%36%BQPLRfUDy07lA8tP9QPLT/UDy0tFA8tFBSP7UB%272%UDy0YVA8tO5QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tO5QPLQy%245%FA8tBRQPLR0UDy031A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tD0%37%UDy0fVA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLSO%37%FA8tDBQPLT+UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTgUDy0d1A8tBU%250%FA8tANQPLR/UDy0/FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/FA8tGE%239%BQPLQ3UDy0oFA8tPRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tJ0%37%UT60AVA8tLdQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tMFQPLQJ%37%FA8tI9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPtQPLSkUDy0O%235%UDy0EVA8tJ5QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0fw%228%BQPLQMUDy0Y1A8tMpQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tKE%42%FA8tAlQPLSyUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0vlA8tAs%42%FA8tJhQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tNJQPLRmUDy0D%213%BQPLQ0UDy0zVA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLSdUDy0Aw%218%UDy0JFA8tI5QPLTtUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tFs%53%UDy0dlA8tPFQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPJQPLR7UT20Aw%47%FA8tFBQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09FA8tJNQPLQo%85%FA8tAVQPLQFUDy0BVA8tAVQPLQFUDy0BVA8tAVQPLQFUDy0BVA8tAVQPLQFUDy0BVA8tAVQPLQFUDy0BVA8tAVQPLQFUDy0BVA8tAVQPLQFUDy0BVA8tGJQPLT7UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tM9QPLQJUDy0BVA8tAVQPLQFUDy0BVA8tAVQPLQFUDy0BVA8tAVQPLQFUDy0BVA8tAVQPLQFUDy0BVA8tAVQPLQFUDy0BVA8tAVQPLQFUDy0BVA8tAVRPrUB%96%UD20A1A8tE9QPLS7UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0mw%63%FA8tA9QPLRyUDy0vlA8tPlQPLT/UDy0/1A8tPxQPLTFUDy0fVA8tBQ%63%BQPLSYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0vVA8tFhQPbQD%64%UT60AVA8tJhQPLT6UDy0+lA8tPpQPLT6UDy0+lA8tPpQPLT6UDy0+lA8tPpQPLT6UDy0+lA8tPpQPLT6UDy0+lA8tPpQPLT6UDy0+lA8tPpQPLT6UDy0+lA8tP5QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPxQPLT6UDy0+lA8tPpQPLT6UDy0+lA8tPpQPLT6UDy0+lA8tPpQPLT6UDy0+lA8tPpQPLT6UDy0+lA8tPpQPLT6UDy0+lA8tPpQPLT0UDy0q1A8tFpQPLQP%90%BQPLRiUDy05lA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0+1A8tKpQPLQ9%90%BRPbQBUDy0Bg%90%UDy0O1A8tKdQPLT7UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLToUDy0ag%63%FE9tANQPLSdUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT6UDy0sVA8tGBQPLQU%101%FA8tGFQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tOVQPLSCUDy0G%213%BQPLQTUDy0elA8tOVQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tHs%63%BRPbQDUDy0nVA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT6UDy0sVA8tGBQPLQU%117%FA8tOVQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLS+UDy0VFE+tQE%234%FE+tAFQPLRMUDy0uVA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tOo%69%UT20A1A8tJ1QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT6UDy0sVA8tGBQPLQU%133%FA8tP5QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTvUDy0klA8tCw%266%FA8tCRQPLSMUDy071A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP8%74%FE9tANQPLSdUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT6UDy0sVA8tGBQPLQU%149%FA8tMhQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy00FA8tGRQPLQM%288%UDy0CFA8tGNQPLTJUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tNY%79%BRPbQDUDy0nVA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT6UDy0sVA8tGBQPLQU%165%FA8tDlQPLT1UDy0/1A8tP9QPLT/UDy0+FA8tKJQPLQ5%106%BQPLRbUDy0oVA8tJ1QPLQ9%64%UDy0NlA8tJNQPLShUDy0Yg%106%UDy0NVA8tKBQPLT4UDy0/1A8tP9QPLT/UDy0+FA8tEQ%85%UT20A1A8tJ1QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT6UDy0sVA8tGBQPLQU%186%BQPLQkUDy0jlA8tJ5QPLR4UDy0FQ%111%FA8tJtQPLT/UDy0/1A8tP9QPLT/UDy0Yw%52%BQPLRVUDy0/lA8tP9QPLT/UDy0/1A8tKs%111%BQPLQPUDy0c1A8tJ1QPLSQUDy0L%96%FE9tANQPLSdUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT6UDy0sVA8tGBQPLQU%336%UDy0PFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy08lA8tAk%42%FJAtQFQPLTnUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLRH%234%BRPbQDUDy0nVA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT6UDy0sVA8tGBQPLQU%352%UDy0p1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tDI%42%FA8tCpQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLS3%240%UT20A1A8tJ1QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT6UDy0sVA8tGBQPLQU%362%BQPLQWUDy0+1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tBk%42%FA8tApQPLT8UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT+UDy0Hg%239%FE9tANQPLSdUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT6UDy0sVA8tGBQPLQU%378%BQPLR5UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0t%53%BQPLSoUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0ig%244%BRPbQDUDy0nVA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT6UDy0sVA8tGBQPLQU%389%FE+tAFQPLTlUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0T%53%BQPLQ/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy07FA8tAc%245%UT20A1A8tJ1QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT6UDy0sVA8tGBQPLQU%405%FA8tFBQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTfUj+1AQ%58%UDy02FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tFw%250%FE9tANQPLSdUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT6UDy0sVA8tGBQPLQU%421%FA8tLxQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLR0%64%UDy0bFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tMM%255%BRPbQDUDy0nVA8tP9QPLT/UDy0/1A8tP9QPLT6UDy0sVA8tGBQPLQU%432%UDy0JlA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPpQPLQV%64%UDy0DVA8tPRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLQv%256%UT20A1A8tJ1QPLT6UDy0sVA8tGBQPLQU%448%UDy0jFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tKQ%74%FA8tJRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLSb%261%FE9tANQPLQT%458%BQPLQIUDy071A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tDg%74%FA8tC9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT1UDy0EQ%724%BQPLRjUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy00Q%84%BQPLTEUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0bQ%724%BQPLTQUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0Zg%84%BQPLRbUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy01g%719%FA8tDVQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTtUDy0D%85%BQPLQHUDy061A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tEE%714%FA8tKFQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLST%96%UDy0hlA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tK0%709%UDy0EFA8tPhQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLQo%96%UDy0HFA8tP5QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPxQPLQZ%704%UDy0c1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tLw%106%FA8tLJQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLSB%704%UDy0nVA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tFQ%106%FA8tEVQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLSe%704%UDy0jlA8tP9QPLT/UDy0/1A8tP9QPLT/UDy05lA9tAM%106%FI+tQFQPLTZUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLSY%704%UDy0JFA8tPVQPLT/UDy0/1A8tP9QPLT/UDy0Yw%116%BQPLRZUDy0/1A8tP9QPLT/UDy0/1A8tPhQPLQ0%709%FA8tDlQPLTIUDy0/lA8tOhQPLRn%128%UDy0YVA8tOVQPLT/UDy0z1A8tEE%7914%FA8tAJQPLQNUDy0RVA8tG9QPLSFUDy0vFA8tMFQPLTgUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy04FA8tMFQPLS3UDy0g1A8tG1QPLRFUDy0DVA8tAI%762%FA8tBlQPLRaUDy0nFA8tNdQPLT9UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/VA8tNZQPLSdUDy0W1A8tBk%730%FA8tBpQPLRtUDy0vFA8tP1QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP1QPLS8UDy0bVA8tBo%485%UDy0P1A8tJZQPLTWUDy0+VA8tPlQPLTWUDy0llA8tD8%170%FA8tAJQPLREUDy0rFA8tPdQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPhQPLSrUDy0Q1A8tAI%458%FA8tBpQPLSTUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLSTUDy0Gg%148%BQPLQCUDy0SlA8tMdQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tMdQPLRKUDy0Ag%442%UDy0GlA8tKdQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0p1A8tBo%138%FA8tD9QPLTJUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy03VA8tLFQPLSUUDy0XVA8tFlQPLQjUDy0HFA8tBxQPLQcUDy0HFA8tBxQPLQcUDy0JFA8tFhQPLRdUDy0lFA8tLBQPLTeUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0yVA8tD4%437%UDy0k1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tJM%127%BQPLQWUDy0plA8tPtQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTeUDy0nFA8tFVQPLQXUDy0Ag%84%BQPLQCUDy0FlA8tFRQPLScUDy031A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPtQPLSlUDy0Fw%420%BQPLQ/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLQ/%117%FA8tExQPLTmUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLToUDy0j1A8tDFQPLQE%128%UDy0BFA8tDFQPLSPUDy06FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy05lA8tEw%415%BQPLSWUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLSW%106%BQPLQEUDy0j1A8tPxQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0z1A8tFpQPLQJ%160%UDy0CVA8tFlQPLTPUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPxQPLSPUDy0Aw%404%BQPLTWUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTW%101%FA8tA1QPLTBUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tM9QPLRRUDy0Ag%180%BQPLQCUDy0UVA8tM9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0wVA8tA0%399%BQPLT5UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT5%96%UDy0EFA8tMNQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTwUDy0a1A8tAQ%202%FA8tAVQPLRsUDy071A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tMNQPLQQ%394%BQPLT5UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT5%90%BQPLQOUDy0yVA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tLlQPLQf%224%UDy0HVA8tLlQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTHUDy0Dg%388%BQPLTWUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTW%85%FA8tA9QPLTFUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT4UDy0ew%244%BQPLR7UDy0+FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0xVA8tA8%383%BQPLSWUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLSW%80%UDy0AlA8tKxQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPhQPLRN%256%UDy0TVA8tPhQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tKtQPLQC%378%BQPLQ/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLQ/%80%UDy0cVA8tP9QPLT/UDy0/1A8tP9QPLT/UDy091A8tEs%266%FA8tEtQPLT3UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLRx%384%UDy0k1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tJM%79%BQPLQsUDy0+FA8tP9QPLT/UDy0/1A8tP9QPLT3UDy0Sg%276%BQPLRKUDy091A8tP9QPLT/UDy0/1A8tP9QPLT3UDy0LQ%378%UDy0GlA8tKdQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0p1A8tBo%74%FA8tANQPLTCUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLRc%288%UDy0XFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0wlA8tAM%378%FA8tBpQPLSTUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLSTUDy0Gg%79%FA8tE9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tJpQPLUB%288%UDy1AVA8tJpQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tE8%389%UDy0P1A8tJZQPLTWUDy0+VA8tPlQPLTWUDy0llA8tD8%85%UDy0A1A8tNFQPLT/UDy0/1A8tP9QPLT/UDy03VA8tA0%298%FA8tA1QPLTdUDy0/1A8tP9QPLT/UDy0/1A8tNFQPLQD%277%FE9tAJQPLSlUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP8%149%UDy0SlA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0W%309%BQPLRYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLRK%282%BQPLQFUDy0plA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP8%149%UDy0qVA8tP9QPLT/UDy0/1A8tP9QPLTSUDy0BQ%308%BQPLQFUDy00lA8tP9QPLT/UDy0/1A8tP9QPLSp%288%UDy0BVA8tKZQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP8%143%BQPLQLUDy081A8tP9QPLT/UDy0/1A8tP9QPLRe%320%UDy0XlA8tP9QPLT/UDy0/1A8tP9QPLT0UDy0Cw%287%FA8tAVQPLSmUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP8%143%BQPLRNUDy0/1A8tP9QPLT/UDy0/1A8tO9QPLQM%320%UDy0DFA8tO9QPLT/UDy0/1A8tP9QPLT/UDy0Tg%292%BQPLQFUDy0plA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP8%143%BQPLSHUDy0/1A8tP9QPLT/UDy0/1A8tLM%330%FA8tLFQPLT/UDy0/1A8tP9QPLT/UDy0hw%298%UDy0BVA8tLpQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP8%143%BQPLS+UDy0/1A8tP9QPLT/UDy0/1A8tH%331%FA8tG9QPLT/UDy0/1A8tP9QPLT/UDy0vg%298%UDy0fFA8tP5QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP8%143%BQPLTVUDy0/1A8tP9QPLT/UDy0/1A8tEQ%330%FA8tEVQPLT/UDy0/1A8tP9QPLT/UDy01w%292%BQPLQIUDy0+FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP8%143%BQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tCQ%330%FA8tCRQPLT/UDy0/1A8tP9QPLT/UDy0/w%292%BQPLQOUDy0/lA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP8%143%BQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tCQ%330%FA8tCRQPLT/UDy0/1A8tP9QPLT/UDy0/w%292%BQPLQEUDy06FA8tP9QPLT/UDy0/1A8tP5QPLS6UDy0/1A8tP9QPLT/UDy0/1A8tP8%143%BQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tCQ%330%FA8tCRQPLT/UDy0/1A8tP9QPLT/UDy0/w%271%FNAtQJQPLRlUDy01VA8tNVQPLRlUDy0N1A8tOhQPLT+UDy0+FA8tHxQPLQFUDy0plA8tP9QPLT/UDy0/1A8tP8%143%BQPLT9UDy0/1A8tP9QPLT/UDy0/1A8tCU%330%FA8tCRQPLT/UDy0/1A8tP9QPLT/UDy0/g%271%FA8tGVQPLT+UDy0/1A8tP9QPLT+UDy0ZVA8tARQPLQOUDy0C%11%UDy0BVA8tKZQPLT/UDy0/1A8tP8%143%BQPLTGUDy0/1A8tP9QPLT/UDy0/1A8tFs%330%FA8tFRQPLT/UDy0/1A8tP9QPLT/UDy0y%272%FA8tNVQPLT/UDy0/1A8tP9QPLT/UDy01Q%31%FA8tAVQPLSmUDy0/1A8tP8%143%BQPLSsUDy0/1A8tP9QPLT/UDy0/1A8tI0%213%UDy0BQ%111%FA8tIBQPLT/UDy0/1A8tP9QPLT/UDy0sw%271%FA8tNVQPLT/UDy0/1A8tP9QPLT/UDy01Q%36%BQPLQFUDy0plA8tP8%143%BQPLRvUDy0/1A8tP9QPLT/UDy0/1A8tNxQPLQC%208%UDy0n1A8tFNQPLQB%101%FA8tMNQPLT/UDy0/1A8tP9QPLT/UDy0f%256%FA9tAhQPLQOUT20BFA8tGVQPLT+UDy0/1A8tP9QPLT+UDy0ZQ%42%UD20BVA8tKU%143%BQPLQtUDy0/lA8tP9QPLT/UDy0/1A8tP9QPLQ9%208%UDy0sFA8tP9QPLSTUDy0Cg%90%UDy0HFA8tPdQPLT/UDy0/1A8tP9QPLT/UDy0P%251%UDy0fFA8tPhQPLT+UDy06FA8tDdQPLRlUDy01VA8tNVQPLRlUDy0Ag%47%FE9tAI%143%BQPLQDUDy01lA8tP9QPLT/UDy0/1A8tP9QPLSx%208%UDy0sFA8tP9QPLT/UDy0y1A8tCM%85%UDy0d1A8tP9QPLT/UDy0/1A8tP9QPLTmUDy0B%245%BQPLQ1UDy0/lA8tP9QPLT/UDy0/1A8tOhRPbQE%224%UDy0b1A8tP9QPLT/UDy0/1A8tP9QPLT9UDy0T%203%UDy0sFA8tP9QPLT/UDy0/1A8tPNQPLRY%74%BQPLQLUDy06FA8tP9QPLT/UDy0/1A8tP9QPLSb%250%BQPLSGUDy0/1A8tP9QPLT/UDy0/1A8tP5QPLQO%224%UDy0CVA8tOZQPLT/UDy0/1A8tP9QPLT/UDy02FA8tAw%197%UDy0sFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0mFA8tAo%63%BQPLR1UDy0/1A8tP9QPLT/UDy0/1A8tP5QPLQv%250%BQPLRaUDy0/1A8tP9QPLT/UDy0/1A8tPhQPLQI%229%FA8tG9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tKdQPLQD%192%UDy0sFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tNBQPLQk%53%FA8tCBQPLTzUDy0/1A8tP9QPLT/UDy0/1A8tLI%239%BQPLQ1UDy0hlA8tFpQPLQIUDy0zFA8tP9QPLT/UDy0/lA8tHw%234%FA8tAVQPLTMUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLRz%192%UDy0sFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT2UDy0XFA8tQE%37%UDy0BlA8tL5QPLT/UDy0/1A8tP9QPLT/UDy0/VA8tD%235%FA8tHxQPLT+UDy0/1A8tP9QPLTMUDy0CFA8tFpQPLSGUDy0NQ%244%BQPLQyUDy081A8tP9QPLT/UDy0/1A8tP9QPLT+UDy0d%187%UDy0sFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tJxQPLQJ%32%UDy0ilA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0n%235%UDy0CFA8tPhQPLT/UDy0/1A8tP9QPLT/UDy0Wg%266%UDy0a1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tHU%181%UDy0sFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTUUDy0Jw%20%BQPLQqUDy09lA8tP9QPLT/UDy0/1A8tP9QPLTlUDy0FQ%234%UDy0DlA8tP5QPLT/UDy0/1A8tP9QPLT/UDy0hg%266%UDy0BFA8tKBQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP5QPLR3%176%UDy0sFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy091A8tGFQPLQB%16%UDy0LlA8tNRQPLT/UDy0/1A8tPxQPLRJ%240%UDy0BFA8tOhQPLT/UDy0/1A8tP9QPLT+UDy0NQ%271%FA8tANQPLSuUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT+UDy0kFA8tAc%165%UDy0sFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLShUDy0EQ%15%FA8tBBQPLShUDy0/1A8tHw%170%FE9tAI%47%BTQLUCUDy0ZVA8tNVQPLTVUDy0ZVA8tDdQPLToUDy0/lA8tPhQPLR8%282%BQPLQRUDy0zFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tLJQPLQV%160%UDy0sFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy04FA8tDs%15%BQPLQDUDy0PFA8tAM%170%FA8tKVQPLQF%42%BQPLRlUDy0/lA8tP9QPLT/UDy0/lA8tGVQPLQEUDy0DlA8tAg%293%UDy0ElA8tLtQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTbUDy0Lw%4%BQPLQRUDy0M1A8tGpQPLRzUDy0qVA8tKpQPLSqUDy0qlA8tJBQPLRsUDy0UlA8tCk%85%UDy0sFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPdQPLR1%197%FA8tP9QPLSmUDy0BQ%36%BQPLTVUDy0/1A8tP9QPLT/UDy0/1A8tNU%314%FA8tARQPLSbUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09FA8tMlQPLT1UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP5QPLTnUDy0oVA8tFJQPLQF%64%UDy0sFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT+UDy0tVA8tAk%186%FA8tP9QPLT/UDy0plA8tAU%31%BQPLTVUDy0/1A8tP9QPLT/UDy0/1A8tNU%319%BQPLQCUDy0ilA8tPxQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTkUDy0eFA8tAY%53%UDy0sFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tL9QPLQi%181%FA8tP9QPLT/UDy0/1A8tKZQPLQF%10%BQPLQIUDy0DlA8tARQPLRlUDy0/lA8tP9QPLT/UDy0/lA8tGU%330%FA8tGZQPLT+UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tNlQPLQ2%48%UDy0sFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTgUDy0Qg%175%FA8tP9QPLT/UDy0/1A8tP9QPLSmUDy0BVA8tHxQPLT4UDy0/lA8tOhQPLQ3UDy0ZVA8tNVQPLTVUDy0ZVA8tAI%325%UDy0E1A8tMxQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT2UDy0ZQ%42%UDy0sFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT8UDy0ig%175%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0ulA8tP5QPLT/UDy0/1A8tP9QPLToUDy0B%341%BQPLQDUDy0t1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy08VA8tHlQPLRyUDy0clA8tHtQPLSwUDy01FA8tPhQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0+1A8tDo%37%UDy0sFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/lA8tMZQPLQs%181%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT+UDy0Dg%340%BQPLRcUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tMpQPLQc%21%FA8tBhQPLRTUDy0vFA8tP1QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tNxQPLRVUDy0alA8tJNQPLSZUDy0T%11%UDy0sFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTcUDy0Ug%191%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT4UDy0C%341%BQPLTLUDy0/1A8tP9QPLT/UDy0/1A8tPlQPLSIUDy0SVA8tOlQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTpUDy0Qw%31%FA8tDxQPLTUUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0Xw%10%UDy0sFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy08FA8tIJQPLQI%197%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP5QPLR8%341%FA8tAZQPLTxUDy0/1A8tP9QPLT/UDy0/lA8tFw%10%FA8tBdQPLTAUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09lA8tHI%31%BQPLQTUDy021A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0Xw%10%UDy0sFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0YQ%207%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tLpQPLQF%341%FA8tBJQPLT2UDy0/1A8tP9QPLT/UDy0+lA8tB8%15%BQPLQCUDy0g1A8tPxQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP5QPLSKUDy0Bw%26%UDy0qVA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0Xw%10%UDy0sFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy04FA8tAw%202%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLSmUDy0BQ%340%BQPLToUDy0/1A8tP9QPLT/UDy0/1A8tMBQPLQh%21%FA8tExQPLTrUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0slA8tAc%15%BQPLRzUDy0/FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0Xw%10%UDy0sFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tIM%202%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0plA8tAU%335%BQPLSUUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTzUDy0hFA8tBc%15%BQPLQmUDy0y1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tLNQPLQJUDy0SVA8tMdQPLT+UDy0/1A8tP9QPLT/UDy0/1A8tPxQPLTGUDy0lVA8tIlQPLR9UDy0H%11%UDy0sFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPlQPLQ1%197%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tKZQPLQF%330%BQPLQcUDy06lA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPpQPLS8UDy0fFA8tEJQPLQoUDy0FlA8tKxQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT3UDy0/lA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tIc%37%UDy0sFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tO5QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTCUDy0AQ%191%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLSmUD20BQ%330%UDy0V1A8tPtQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT9UDy0+lA8tPtQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0xlA8tAY%37%UDy0sFA8tP9QPLT/UDy0/1A8tP9QPLTUUDy0VVA8tDdQPLT+UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0d%192%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0pVE9tAI%330%FA8tFJQPLTpUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLSkUDy0Dw%42%UDy0sFA8tP9QPLT/UDy091A8tHRQPLQM%10%BQPLSWUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy091A8tBs%122%FA8tD9QPLSWUDy01lA8tPlQPLT5UDy01lA8tJZQPLQ/%442%BQPLQaUDy0sFA8tPtQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy05VA8tFxQPLQC%48%UDy0sFA8tPtQPLSfUDy0Gg%20%BQPLQeUDy08VA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tLVQPLQD%106%BQPLQaUDy0k1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0k1A8tBo%442%FA8tDNQPLSWUDy071A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0Uw%58%UDy0glA8tDY%37%UDy0dFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLRi%101%FA8tBpQPLSnUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tKdQPLQa%448%UDy0C1A8tD9QPLR9UDy0rVA8tOBQPLTnUDy0/1A8tP9QPLT/UDy0/1A8tPVQPLTgUDy03FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy04lA8tB%102%UDy0A1A8tNBQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTmUDy0F%96%FA8tJNQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLST%474%BQPLQFUDy0HFA8tBxQPLQcUDy0HFA8tBI%5%UDy0AVA8tJJQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tKJQPLQB%101%FA8tE1QPLT8UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0p%91%UDy0P1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0Pw%511%FA8tAlQPLTIUDy0/1A8tP9QPLT/UDy0/1A8tP5QPLQ7%106%BQPLSzUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/VA8tEE%85%UDy0llA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0lg%516%BQPLQoUDy09FA8tP9QPLT/UDy0/1A8tP9QPLS/UDy0AQ%100%BQPLQrUDy091A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tNhQPLQL%80%UDy01lA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy01g%522%UDy0dlA8tP9QPLT/UDy0/1A8tP9QPLT+UDy0Pw%106%UDy0klA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLSR%80%UDy0+VA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0+Q%522%UDy0CVA8tN1QPLT/UDy0/1A8tP9QPLT/UDy0sg%106%UDy0DlA8tOVQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTyUDy0HQ%74%UDy0+VA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0+Q%527%FA8tGVQPLT/UDy0/1A8tP9QPLT/UDy0+1A8tB8%106%FA8tG9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tMZQPLQ5%80%UDy01lA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy01g%527%FA8tAxQPLTuUDy0/1A8tP9QPLT/UDy0/1A8tG0%106%FA8tAFQPLTQUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTwUDy0ZFA8tAY%85%UDy0llA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0lg%532%BQPLSXUDy0/1A8tP9QPLT/UDy0/1A8tLQ%111%BQPLQ0UDy0/VA8tP9QPLT/UDy0+VA8tIxQPLQS%96%UDy0P1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0Pw%532%BQPLRIUDy0/1A8tP9QPLT/UDy0/1A8tPFQPLQB%106%BQPLUBUDy0qVA8tP5QPLS+UDy0Jw%111%FA8tJNQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLST%538%BQPLQRUDy09lA8tP9QPLT/UDy0/1A8tP5QPLQu%112%UDy0GVA8tFo%122%FA8tBpQPLSnUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tKdQPLQa%544%UDy02FA8tP9QPLT/UDy0/1A8tP9QPLRM%250%BQPLQaUDy0k1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0k1A8tBo%549%UDy0sVA8tP9QPLT/UDy0/1A8tP9QPLRz%261%FA8tD9QPLSWUDy01lA8tPlQPLT5UDy01lA8tJZQPLQ/%560%UDy0qlA8tP9QPLT/UDy0/1A8tP9QPLRz%864%UDy0eVA8tP9QPLT/UDy0/1A8tP9QPLRz%14133%FA8tAZQPLRgUDy0r1A8tLdQPLR8UDy0Fw%308%BQPLQGUDy0MVA8tDhQPLQO%528%UDy0BlA8tK1QPLT+UDy0/1A8tP9QPLT/UDy07VA8tH9QPLQT%288%UDy0AVA8tExQPLTZUDy0/lA8tP5QPLTtUDy0a1A8tAE%517%UDy0YFA8tP5QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTsUDy0f1A8tBM%266%FA8tAFQPLRBUDy0vlA8tP5QPLT/UDy0/1A8tP9QPLT/UDy0/VA8tFo%517%UDy0r1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tOtQPLRgUDy0B%245%BQPLQDUDy0TlA8tL5QPLT+UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tM9QPLQC%512%UDy0t1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy021A8tGBQPLQE%224%UDy0AVA8tEFQPLS+UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPZQPLQF%512%UDy0fFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTbUDy0YFA8tAM%202%FA8tAFQPLRBUDy0vlA8tP5QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tOBQPLQD%512%UDy0ElA8tNdQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tL5QPLRBUDy0AQ%186%UDy0MlA8tL5QPLT+UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tH4%522%FA8tBtQPLSkUDy0+1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT+UDy0vlA8tEFQPLQB%165%FA8tCRQPLSfUDy0+1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT9UDy0qFA8tAk%533%UDy0JFA8tJ9QPLT7UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP5QPLS+UDy0Mg%148%BQPLQkUDy0n1A8tPtQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/lA8tK1QPLQ+UDy0Ag%548%BQPLQkUDy0rVA8tP5QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0+1A8tJ9QPLQk%128%UDy0JFA8tJ9QPLT7UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP5QPLS+UDy0QVA8tAE%565%UDy0AVA8tEFQPLS+UDy0/lA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT7UDy0n1A8tCQ%106%FA8tCRQPLSfUDy0+1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT+UDy0vlA8tEFQPLQB%586%BQPLQBUDy0QVA8tL5QPLT+UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPtQPLSRUDy0F%85%BQPLQkUDy0n1A8tPtQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tM1QPLRBUDy0AQ%607%FA8tAFQPLRCUDy021A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0+lA8tIFQPLQT%64%UDy0JFA8tJ9QPLT7UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTbUDy0YFA8tAQ%629%UDy0BFA8tGBQPLTbUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTsUDy0f1A8tBM%42%FA8tCRQPLSfUDy0+1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy021A8tGBQPLQE%650%BQPLQEUDy0YFA8tNtQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tOtQPLRgUDy0B%21%BQPLQTUDy0kVA8tPtQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tNxQPLRgUDy0B%672%FA8tARQPLR+UDy07FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy021A8tGBQPLQEUDy0E1A8tH9QPLTsUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTsUDy0f1A8tBE%693%UDy0E1A8tH9QPLTsUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTdUDy07FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy07FA8tH9QPLQT%714%BQPLQTUDy0f1A8tOxQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tOxQPLR/UDy0Ew%735%FA8tBRQPLSfUDy0+1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT7UDy0n1A8tBQ%757%UDy0JFA8tJ9QPLT7UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0+1A8tJ9QPLQk%730%D/AAAD/wAAKP8AAE3/AABg/wAAYf8AAE3/AAAm/wAAAw%4%BQPLQnUDy0olA8tPxQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPtQPLSfUDy0J%16%FA8tARQPLR6UDy0fVA8tH1QPLR9UDy0Jg%682%/wAAC/8AAHH/AADZ/wAA/f8AAP//AAD//wAA//8AAP//AAD9/wAA2/8AAHX/AAAN/wAAAlA8tEFQPLS+UDy0/lA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT+UDy0vlA8tDI%26%FA8tAhQPLT6UDy0/1A8tP9QPLT/UDy0Tw%676%D/AAAs/wAA1f8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AADe/wAAPQ%4%BQPLQBUDy0QVA8tL5QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/lA8tL5QPLRBUDy0AQ%31%FA8tAhQPLT6UDy0/1A8tP9QPLT/UDy0Tw%671%P8AACH/AADm/wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA9P8AAEM%10%FA8tAdQPLT6UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0wVA8tAE%42%FA8tAhQPLT6UDy0/1A8tP9QPLT/UDy0Tw%666%/wAAAf8AALP/AAD//wAA//8AAP//AAD//wAA//8AAP//AAD8/wAA+/8AAP7/AAD//wAA//8AAP//AAD//wAA//8AAOj/AAAZ%5%FA8tAVQPLT6UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0vw%47%FA8tAhQPLT6UDy0/1A8tP9QPLT/UDy0Tw%666%/wAAMP8AAPz/AAD//wAA//8AAP//AAD//wAA7P8AAGj/AAAa/wAAEv8AAEn/AADP/wAA//8AAP//AAD//wAA//8AAP//AACR%5%FA8tAVQPLT6UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0vw%15%FA8tGhQPLRYUDy0E%16%FA8tAhQPLT6UDy0/1A8tP9QPLT/UDy0Tw%15%FA8tAZQPLQ/UDy0hlA8tAU%629%/wAAiP8AAP//AAD//wAA//8AAP//AAD0/wAANQ%20%D/AAAR/wAA0v8AAP//AAD//wAA//8AAP//AADr/wAACFA8tAVQPLT6UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0vw%10%UDy0B1A8tOdQPLT/UDy08lA8tK5QPLRaUDy0ElA8tAhQPLT6UDy0/1A8tP9QPLT/UDy0T1A8tAdQPLRCUDy0lVA8tONQPLT+UDy0/lA8tDs%623%D/AAAB/wAAx/8AAP//AAD//wAA//8AAP//AACI%32%/wAATP8AAP7/AAD//wAA//8AAP//AAD+/wAAMlA8tAVQPLT6UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0vw%10%UDy0QVA8tP5QPLT/UDy0/1A8tP9QPLT/UDy081A8tLRQPLT9UDy0/1A8tP9QPLT/UDy0wVA8tOVQPLT+UDy0/1A8tP9QPLT/UDy0/1A8tIo%623%D/AAAF/wAA7/8AAP//AAD//wAA//8AAP3/AAAw%32%/wAAC/8AAPf/AAD//wAA//8AAP//AAD//wAAUFA8tAVQPLT6UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0vw%10%UDy0kVA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tNdQPLQD%618%D/AAAS/wAA+/8AAP//AAD//wAA//8AAPr/AAAM%32%/wAABP8AAPD/AAD//wAA//8AAP//AAD//wAAVVA8tAhQPLT6UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0vw%4%BQPLQBUDy0e1A8tOFQPLT+UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09lA8tLdQPLQP%618%D/AAAM/wAAdP8AAHb/AAB2/wAAdv8AAHP/AAAC%32%/wAAIv8AAPz/AAD//wAA//8AAP//AAD//wAAQFA8tAVQPLT6UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0vw%15%FA8tAVQPLQ9UDy0kFA8tN9QPLT+UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy08lA8tLBQPLReUDy0FVA8tAE%687%D/AAAB/wAAlP8AAP//AAD//wAA//8AAP//AAD5/wAAGFA8tAVQPLT6UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0vw%31%FA8tARQPLQ6UDy0uFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tOJQPLRVUDy0Dw%708%D/AABh/wAA/P8AAP//AAD//wAA//8AAP//AAC2/wAAAVA8tAVQPLT6UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0vw%36%BQPLQVUDy04VA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPtQPLRH%704%/wAAAv8AAHj/AAD7/wAA//8AAP//AAD//wAA//8AAPT/AAAx%5%FA8tAVQPLT6UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0vw%31%FA8tAJQPLSrUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTiUDy0Fw%692%D/AAAG/wAAmv8AAP7/AAD//wAA//8AAP//AAD//wAA9v8AAFE%10%FA8tAVQPLT6UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0vw%31%FA8tGVQPLT+UDy0/1A8tP9QPLT/UDy03FA8tKpQPLT/UDy0/1A8tP9QPLT/UDy0rVA8tAI%682%P8AAAH/AACc/wAA//8AAP//AAD//wAA//8AAP//AADn/wAAQw%15%FA8tAVQPLT6UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0vw%26%UDy0KVA8tPFQPLT/UDy0/1A8tP9QPLT5UDy0PVA8tBBQPLTaUDy0/1A8tP9QPLT/UDy0/lA8tGc%682%P8AAE//AAD+/wAA//8AAP//AAD//wAA//8AALz/AAAe%21%FA8tAVQPLT6UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0vw%20%BQPLQIUDy0yFA8tP9QPLT/UDy0/1A8tP9QPLS%11%BQPLQ7UDy0+FA8tP9QPLT/UDy0/1A8tPJQPLQq%672%/wAAAv8AAMf/AAD//wAA//8AAP//AAD+/wAAkf8AAAY%26%FA8tAVQPLT6UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0vw%20%BQPLQdUDy001A8tP9QPLT/UDy0/1A8tMNQPLQG%16%UDy0fVA8tP9QPLT/UDy0/1A8tPBQPLRL%672%/wAAHP8AAPv/AAD//wAA//8AAP//AAC6/wAAAw%31%FA8tAVQPLT6UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0vw%26%UDy0DlA8tJ1QPLT+UDy07lA8tCQ%21%UDy0BlA8tMBQPLT/UDy0zFA8tCk%677%/wAAQf8AAP//AAD//wAA//8AAP//AABv%37%FA8tAVQPLT6UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0vw%31%FA8tAFQPLReUDy0W%32%FA8tCJQPLSKUDy0Cw%682%/wAASv8AAPH/AADx/wAA8f8AAPH/AABU%37%FA8tAVQPLT6UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0vw%778%/wAAAf8AAAT/AAAE/wAABP8AAAT/AAAC%37%FA8tAVQPLT6UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0vw%778%/wAAA/8AAAX/AAAF/wAABf8AAAX/AAAE%37%FA8tAVQPLT6UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0vw%778%/wAAqP8AAPT/AAD0/wAA9P8AAPT/AADh/wAAB%32%FA8tAVQPLT6UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0vw%778%/wAAr/8AAP//AAD//wAA//8AAP//AADr/wAAB%32%FA8tAVQPLT6UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0vw%778%/wAAr/8AAP//AAD//wAA//8AAP//AADr/wAAB%32%FA8tAVQPLT6UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0vw%778%/wAAr/8AAP//AAD//wAA//8AAP//AADr/wAAB%32%FA8tAVQPLT6UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0vw%778%/wAAr/8AAP//AAD//wAA//8AAP//AADr/wAAB%32%FA8tAVQPLT6UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0vw%778%/wAAWP8AAH//AAB//wAAf/8AAH//AAB2/wAAAg%31%FA8tAVQPLT6UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0vw%847%FA8tAVQPLT6UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0vw%847%FA8tAVQPLT6UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0vw%847%FA8tAVQPLT6UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0vw%847%FA8tAVQPLT6UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0vw%847%FA8tAVQPLT6UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0vw%847%FA8tAVQPLT6UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0vw%847%FA8tAVQPLT6UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0vw%847%FA8tAVQPLT6UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0vw%847%FA8tARQPLTrUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0rw%852%BQPLSfUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT+UDy0Y%853%BQPLQbUDy011A8tP9QPLT/UDy0/1A8tP5QPLStUDy0Bg%858%UDy0ElA8tHxQPLS3UDy0r1A8tGBQPLQG%19749%FA8tCxQPLTgUDy0/FA8tHk%869%UDy0K1A8tOlQPLT/UDy0/1A8tP9QPLSE%858%BQPLQqUDy06FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0dw%847%FA8tClQPLToUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tHU%837%UDy0KFA8tOdQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLSB%826%BQPLQnUDy05lA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT9UDy0e%816%FA8tCZQPLTlUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/lA8tH%806%UDy0JVA8tOVQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP5QPLR1UDy0AQ%788%BQPLQkUDy05FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTvUDy0uVA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0bw%783%FA8tCNQPLTjUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPBQPLQ2UDy0CFA8tKVQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/lA8tGtQPLQB%768%UDy0IlA8tONQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy08VA8tDc%10%FA8tAZQPLSqUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLRz%762%BQPLQhUDy04lA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTxUDy0O%21%BQPLQFUDy0rFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT+UDy0bg%751%FA8tCBQPLTcUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPJQPLQ5%32%UDy0AlA8tLZQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/lA8tGY%741%UDy0H1A8tOBQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy08lA8tDo%42%FA8tANQPLStUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP5QPLR1%730%BQPLQfUDy031A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTzUDy0Ow%52%BQPLQDUDy0rlA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT5UDy0Yw%719%FA8tB5QPLTeUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPNQPLQ9%64%UDy0ClA8tKpQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/lA8tGI%709%UDy0HVA8tN1QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09FA8tD4%74%FA8tAtQPLSvUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP5QPLRk%698%BQPLQcUDy03FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT0UDy0Pw%84%BQPLQFUDy0sFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0Yg%79%FE9tXVQPbSgUD20oFA9tKBQPbSgUD20oFA9tKBQPbSgUD20oFA9tKBQPbSgUD20oFA9tKBQPbSgUD20oFA9tKBQPbSgUD20oFA9tKBQPbSgUD20oFA9tKBQPbSgUD20oFA7tH0%474%FA8tBxQPLTbUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPVQPLR%97%UDy0ClA8tLRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/VA8tF0%74%FA8tLxQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tMg%469%UDy0G1A8tNpQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09VA8tEE%106%FA8tAVQPLTAUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP1QPLRc%69%FA8tLxQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tMg%218%Es8tBFQPbNQUD2zUFA9s1BQPbNQUD2zUE47tTQ%207%BQPLQaUDy02VA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT2UDy0Qw%116%BQPLQEUDy0uFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT8UDy0WQ%63%FA8tLxQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tMg%218%FI7tjhQPLT/UDy0/1A8tP9QPLT/UDy0/1A9tag%202%FA8tBpQPLTYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPZQPLRE%128%UDy0BVA8tMlQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0+Q%63%FA8tLxQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tMg%218%FI7tjhQPLT/UDy0/1A8tP9QPLT/UDy0/1A9tag%197%UDy0GVA8tNdQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09lA8tEY%133%UDy0SFA8tPVQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0w%64%FE9tXVQPbSgUD20oFA9tKBQPbSgUD20oFA9tKBQPbSgUD20oFA8tMtQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPFQPbSgUD20oFA9tKBQPbSgUD20oFA9tKBQPbSgUD20oFA7tH0%218%FI7tjhQPLT/UDy0/1A8tP9QPLT/UDy0/1A9tag%191%BQPLQYUDy01lA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT3UDy0Rw%132%BQPLRHUDy09VA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTPUDy0Gw%111%E87tHRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8s9g%266%FI7tjhQPLT/UDy0/1A8tP9QPLT/UDy0/1A9tag%186%FA8tBdQPLTVUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPdQPLRI%133%FA8tD9QPLT1UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tN1QPLQc%117%E87tHRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8s9g%69%gACAAk0zswo%186%FI7tjhQPLT/UDy0/1A8tP9QPLT/UDy0/1A9tag%181%UDy0FlA8tM9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0+FA8tEo%133%UDy0PlA8tPRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy03lA8tB0%122%E87tHRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8s9g%47%BVQLUYUDu0cFA7s71QPLToUDy0/VA8tP9QPLT5UDy00FA9tI9SPbMy%26%BgQL8ITz20pFA7tLBQO7SwUDu0sFA7tLBQO7SwUTy0q1VAqgw%26%FUrqgZQPLSmUDu0sFA7tLBQO7SwUDu0sFA7tLBQPLSpTjuxDUlJtgdSO7Y4Uju2OFA7tGNQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tLtSO7Y4Uju2OE47tTQ%159%BQPLQWUDy01FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT4UDy0Sw%132%BQPLRBUDy081A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTeUDy0GQ%127%E87tHRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8s9g%37%QEC/BFA7s3lQPLTzUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy1r0w5sxs%21%UD20bVA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tX8%26%FE8tW5QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLV8%5%FBAtyBQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP%155%FA8tBVQPLTTUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPlQPLRM%133%FA8tEFQPLTzUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tN9QPLQa%133%E87tHRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8s9g%31%BJSbYHUDu0sFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tOtOPrU+%18%D/AVA8tMNQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPJVPbYV%16%VUCqDFA8tOpQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tM9AQL8E%5%FBAtyBQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP%150%UDy0FFA8tNJQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0+VA8tE0%133%UDy0OlA8tPNQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy04FA8tC%139%E87tHRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8s9g%31%BRPLSrUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTyUj2zMg%15%FM+syVQPLT2UDy0/1A8tP9QPLT/UDy0/1A8tP9QO7SS%16%UDy1f1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0+04+tjE%10%FBAtyBQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP%144%BQPLQTUDy00VA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT6UDy0Tw%132%BQPLQ5UDy08lA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTbUDy0IQ%143%E87tHRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8s9g%26%FA8tV1QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QO7O9UT20flA7s3lQPLSmUDy0+FA8tP9QPLT/UDy0/1A8tP9QPLT/UTy01GYzzAU%15%BRPbV1UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT5Uzy0Ig%4%BNQLMUUDy08lA8tP9QPLT/UDy0/1A8tP9QPLT/Tzy0h%16%FE6uRZQO7SwUDu0sFE7tMFQPLT/UDy0/1A8tP9QPLT/UDy0/1E8tORQO7SwUDu0sFA8s6U%143%BQPLSIUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPpQPLRQ%133%FA8tDhQPLTxUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tN1QPLQi%149%E87tHRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8s9g%21%ZjPMBU88tOdQPLT/UDy0/1A8tP9QPLT/UDy0/FE8tFU%21%Uz6zJVA8tN5QPLT/UDy0/1A8tP9QPLT/UDy0/088tGo%15%BVVaoDUDy0yVA8tP9QPLT/UDy0/1A8tP9QPLT/UDyzpQ%4%BQPLWQUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTVSUm2Bw%31%FI7tjhQPLT/UDy0/1A8tP9QPLT/UDy0/1A9tag%159%BQPLSGUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPVQPLRX%128%UDy0N1A8tPFQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy04lA8tCM%154%E87tHRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8s9g%21%UT20WFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0j%32%FI7tjhQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tM8%21%TTuyK1A8tPlQPLT/UDy0/1A8tP9QPLT/UDy0/lA9s1BQPLT5UDy0/1A8tP9QPLT/UDy0/1A8tP1PPLU3%37%FI7tjhQPLT/UDy0/1A8tP9QPLT/UDy0/1A9tag%159%BQPLQQUDy0y1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT8UDy0VQ%116%BQPLQ2UDy08FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTjUDy0J%160%E87tHRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8s9g%21%UDu0sFA8tP9QPLT/UDy0/1A8tP9QPLT/UkC2H%37%BQPLTDUDy0/1A8tP9QPLT/UDy0/1A8tP9TObMo%21%FA7tH1QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPtQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tIw%42%FI7tjhQPLT/UDy0/1A8tP9QPLT/UDy0/1A9tag%143%D/AAAK/wAAC%11%UDy0EVA8tMxQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0+1A8tFQ%106%FA8tDVQPLTvUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tORQPLQf%165%E87tHRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8s9g%21%UDy06FA8tP9QPLT/UDy0/1A8tP9RPLTU%42%BQPLV/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPbVg%21%GYzzAVQPLTQUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UD2021U5qgk%42%FI7tjhQPLT/UDy0/1A8tP9QPLT/UDy0/1A9tag%133%/wAABv8AAKb/AAD//wAA+/8AAIM%10%FA8tBFQPLTNUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPtQPLRT%96%UDy0OVA8tO9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy05FA8tC%171%E87tHRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8s9g%15%BSQLYcUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTPTz21ZE89tWRPPbVkTz21ZE89tWRPPbVkTz21ZE89tWRQPLSdUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLSV%26%BOPrYxUDy0+1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT+Tj61Pg%47%FI7tjhQPLT/UDy0/1A8tP9QPLT/UDy0/1A9tag%127%D/AAAF/wAAtf8AAP//AAD//wAA//8AAP//AACI%10%BQPLQSUDy0z1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT6UDy0UQ%84%BQPLQ5UDy07lA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTeUDy0Iw%175%E87tHRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8s9g%15%BQPLQzUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QO7Sw%32%UD21hlA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLSV%53%FI7tjhQPLT/UDy0/1A8tP9QPLT/UDy0/1A9tag%122%P8AAAX/AAC5/wAA//8AAP//AAD//wAA//8AAP//AAD//wAAhg%10%UDy0E1A8tNBQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0+lA8tEs%74%FA8tDFQPLTyUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tOFQPLQn%181%E87tHRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8s9g%15%BPPLREUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLX%33%YEC/CFA8tPJQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPlLPLQR%53%FI7tjhQPLT/UDy0/1A8tP9QPLT/UDy0/1A9tag%117%/wAABf8AAK3/AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAIQ%10%FA8tBRQPLTRUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPlQPLRP%64%UDy0MFA8tPJQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy051A8tCg%186%E87tHRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8s9g%15%BSPbRLUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTM%32%UD20bVA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9RPLR7%53%FI7tjhQPLT/UDy0/1A8tP9QPLT/UDy0/1A9tag%111%D/AAAF/wAAq/8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AACD%10%BQPLQUUDy00lA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT5UDy0Tg%52%BQPLQzUDy07VA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLToUDy0KQ%191%E87tHRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8s9g%15%BSPbY7UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTLTzy0hE88tIRPPLSETzy0hE88tIRPPLSETzy0hE88tIRPPLSETzy0hE88tIRPPLSETzy0hE88tIRQPLRm%26%BNPrIhUDy09FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT5TTuyKw%47%FI7tjhQPLT/UDy0/1A8tP9QPLT/UDy0/1A9tag%106%P8AAAT/AACq/wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAgQ%10%UDy0FVA8tNNQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0+FA8tEw%42%FA8tDRQPLTrUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tOlQPLQq%197%E87tHRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8s9g%15%BRPrQpUDy0/1A8tP9QPLT/UDy0/1A8tP9RPLWh%104%/wFRPLS+UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UD21ylVVqgM%42%FI7tjhQPLT/UDy0/1A8tP9QPLT/UDy0/1A9tag%101%/wAABP8AAKj/AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAH8%10%FA8tBZQPLTUUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPhQPLRL%32%UDy0LVA8tOpQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy06VA8tCY%202%E87tHRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8s9g%15%BVK6oGTzy091A8tP9QPLT/UDy0/1A8tP9QPLTC%101%FA9tGlQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A9s3Y%42%FI7tjhQPLT/UDy0/1A8tP9QPLT/UDy0/1A9tag%95%D/AAAE/wAAp/8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAB+%10%BQPLQXUDy01VA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT4UDy0SQ%20%BQPLQyUDy06lA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTqUDy0Jw%207%E87tHRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8s9g%21%Tzy0xFA8tP9QPLT/UDy0/1A8tP9PPLT3Rka5Cw%36%BTPLQiTz21ZE89tWRPPbVkTz21ZE89tWRRPLMv%16%Ujq1H1A8tPJQPLT/UDy0/1A8tP9QPLT/UDy0/087tWdQPLT8UDy0/1A8tP9QPLT/UDy0/088tPdTObMo%37%FI7tjhQPLT/UDy0/1A8tP9QPLT/UDy0/1A9tag%90%P8AAAP/AACl/wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAf%11%UDy0F1A8tNZQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy091A8tEg%10%FA8tC9QPLTpUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tOtQPLQo%213%E87tHRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8s9g%21%UT21dVA8tP9QPLT/UDy0/1A8tP9QPLT/Tz21cQ%34%/wFQO7O9UDy0/1A8tP9QPLT/UDy0/1A8tP9QPbM2%16%UDy0u1A8tP9QPLT/UDy0/1A8tP9QPLT/UT20sQ%4%BRO7ObUDy0/1A8tP9QPLT/UDy0/1A8tP9QPbTGgACAAg%31%FI7tjhQPLT/UDy0/1A8tP9QPLT/UDy0/1A7s6w%85%/wAAA/8AAKT/AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAHo%10%FA8tBhQPLTXUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPdQPLRHUDy0L1A8tOlQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy06FA8tC0%218%E87tHRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8s9g%21%Szy0EVA8tPVQPLT/UDy0/1A8tP9QPLT/UDy09lE8tUw%21%TjuxDVE8taFQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tMU%15%BQPLRmUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT8UT60KQ%4%BOO7EaUDy09lA8tP9QPLT/UDy0/1A8tP9QPLT/UTyzcg%31%FA9szZQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tNI%79%D/AAAD/wAAo/8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAB4%10%BQPLQZUDy02FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT3UDy06FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTnUDy0Lw%223%E87tHRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8s9g%26%FE9tH5QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QO7POTzy0mlA8tZBQPLStUDy08lA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0+lI9szI%10%E8+sB1QPLTxUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLSZ%16%UD21hlA8tP9QPLT/UDy0/1A8tP9QPLT/UDy09lM+syU%26%FM5syhQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLO2UD20gk88tIQ%63%D/AACM/wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAdw%10%UDy0GlA8tNlQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tOdQPLQw%229%E87tHRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8s9g%26%FVVqgNQPLTFUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UTu0Xw%15%E88tLdQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPRVQLUY%16%VUS7D1A9tOxQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tMIAAP8B%21%GYzzAVQPLT0UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP%64%D/AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAHU%10%FA8tBpQPLTaUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy07FA8tDI%234%E87tHRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8s9g%31%BQQK8QUDy0wlA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPZQO7VW%16%UTy0YlA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/087tIE%26%FA7tHBQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPbRt%26%BRPLSYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP%64%D/AADW/wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AABz%10%BQPLQbUDy021A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTuUDy0Lw%239%E87tHRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8s9g%37%YEC/CFA9tIJQPLT1UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT+UDu0sFA6tiM%15%BMObMbUDy08FA8tP9QPLT/UDy0/1A8tP9QPLT/UDyz6VVAqgw%26%FUrqgZQPLTeUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT0Uzy0Ig%20%BVRLsPUDy0zFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP%64%D/AAAu/wAA6/8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAcQ%10%UDy0HFA8tNxQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tO9QPLQ0%330%BON7EXUD20aVE9tLFPPLTXUD207FA8tPBQPLTeTzy0t1A8tXxQOrYj%176%SUm2B1E8tWtQO7O9Tzy051A8tPRQPLPpUDy00E88s5E%69%/wAAL/8AAOv/AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAG8%10%FA8tBxQPLTdUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy071A8tC8%682%P8AADD/AADs/wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AABu%10%BQPLQdUDy03lA8tP9QPLT/UDy0/1A8tP9QPLTwUDy0Ng%692%D/AAAx/wAA7f8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAb%11%UDy0HlA8tN9QPLT/UDy0/1A8tOxQPLQ3%704%/wAAMv8AAO7/AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAGo%10%FA8tB9QPLSzUDy0v1A8tC0%714%P8AADP/AADu/wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AABp%746%D/AAA0/wAA7/8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD+/wAAZ%747%/wAANf8AAPD/AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA8v8AAB%747%P8AADb/AADw/wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AACU%751%D/AAA4/wAA8f8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAxQ%762%/wAAOf8AAPH/AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AADW/wAAFw%767%P8AADr/AADy/wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AANf/AAAY%778%D/AAA7/wAA8/8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA2P8AABg%789%/wAAPP8AAPP/AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AADZ/wAAGQ%799%P8AAD3/AAD0/wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AANr/AAAa%810%D/AAA//wAA9P8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA2/8AABs%821%/wAAQP8AAOT/AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAC8/wAAGw%24986%UDy0GFA8tI5QPLTHUDy0tVA8tFFQPLQB%858%BQPLQWUDy021A8tP9QPLT/UDy0/1A8tP1QPLRz%858%BQPLSFUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTzUDy0K%853%BQPLS3UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy071A8tD0%847%BQPLShUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPJQPLQ9%842%BQPLQ9UDy0+VA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTzUDy0Pg%842%UDy0aVA8tPVQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy081A8tD4%842%FA8tIxQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPNQPLQ/%842%BQPLSLUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTzUDy0Pw%431%FA8tANQPLRvUDy0cFA8tAM%229%UDy0D1A8tH9QPLRY%144%UDy0i1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09FA8tE%422%UDy0BFA8tK1QPLT/UDy0/1A8tLBQPLQG%218%BQPLQXUDy011A8tP9QPLT/UDy0Uw%143%FA8tIpQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPRQPLR%411%BQPLQDUDy0pFA8tP9QPLT/UDy0/1A8tP9QPLSqUDy0BQ%207%FA8tBJQPLTQUDy0/1A8tP9QPLT/UDy0xQ%148%BQPLSJUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT0UDy0QQ%399%FA8tAFQPLScUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0o1A8tAI%197%UDy0EFA8tMxQPLT/UDy0/1A8tP9QPLT/UDy0/lA8tAI%149%UDy0iFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09FA8tEI%394%FA8tJRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tJ0%191%BQPLQMUDy0x1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tAQ%154%FA8tIhQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPVQPLRC%384%UDy0jFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLSWUDy0AQ%175%FA8tApQPLTBUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tAI%159%BQPLSHUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTkUDy0HQ%372%BQPLSDUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0jQ%170%UDy0CFA8tLpQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0zQ%170%UDy0hlA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy021A8tB0%362%FA8tHpQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tIQ%159%BQPLQGUDy0s1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0Xw%175%FA8tIVQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tNtQPLQe%352%UDy0clA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLR7%149%FA8tARQPLSrUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLSZ%186%BQPLSLUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTcUDy0Hg%340%BQPLRqUDy0/lA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTPUDy0yVA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0cg%138%UDy0AlA8tKRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tKFQPLQC%186%BQPLQKUDy0ulA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy03FA8tB4%330%FA8tGRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tNFQPLQSUDy0EVA8tM9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tGk%127%BQPLQBUDy0nVA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0p1A8tAQ%197%UDy0CVA8tLpQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tN1QPLQf%320%UDy0W1A8tP5QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy01FA8tBg%10%FA8tBVQPLTUUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP5QPLRi%117%FA8tAFQPLSVUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLSuUDy0BQ%207%FA8tAlQPLS5UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTdUDy0Hw%308%BQPLRbUDy0/FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTcUDy0Fg%20%BQPLQYUDy02VA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT9UDy0Wg%111%FA8tI9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tLdQPLQD%218%BQPLQJUDy0uFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy03VA8tC%299%FA8tFdQPLT5UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tNxQPLQb%32%UDy0GlA8tN5QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0+lA8tFQ%101%UDy0h1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0u1A8tAc%229%UDy0CVA8tLhQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tN5QPLQg%288%UDy0S1A8tPdQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy03lA8tBw%42%FA8tCBQPLTgUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPlQPLRN%90%BQPLR7UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLS8UDy0Cg%239%FA8tAhQPLS3UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTeUDy0I%277%BQPLRHUDy0+1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTmUDy0I%53%BQPLQiUDy05VA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT3UDy0RQ%79%FA8tHlQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tMVQPLQL%250%BQPLQIUDy0t1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy031A8tCE%266%FA8tEVQPLT4UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tOZQPLQl%64%UDy0JFA8tOtQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0+FA8tEI%69%UDy0c1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0yFA8tA4%261%UDy0CFA8tLZQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tN9QPLQh%256%UDy0QFA8tPRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy05VA8tCY%74%FA8tCtQPLTqUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPRQPLRB%58%BQPLRqUDy0/lA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTJUDy0D%272%FA8tAhQPLS2UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTfUDy0Ig%244%BQPLQ8UDy08lA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTpUDy0Lg%84%BQPLQtUDy06FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTzUDy0Nw%47%FA8tGRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tNFQPLQR%282%BQPLQHUDy0tVA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy031A8tAk%234%FA8tDRQPLT0UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tO9QPLQx%96%UDy0L1A8tO5QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy08FA8tDU%37%UDy0YFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy001A8tBc%293%UDy0B1A8tLRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tLpQPLQJ%224%UDy0MVA8tPFQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy08FA8tDQ%106%FA8tDdQPLT0UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPJQPLQ0%26%BQPLRdUDy0/VA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTVUDy0Fg%303%FA8tAdQPLTMUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLS6UDy0CQ%212%BQPLQvUDy07FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT0UDy0Ow%116%BQPLQ4UDy08lA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTsUDy0L%16%FA8tFlQPLT5UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tNxQPLQb%314%BQPLQeUDy03FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0u1A8tAo%202%FA8tCpQPLTpUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPVQPLR%129%UDy0O1A8tPVQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy05lA8tCo%5%UDy0TVA8tPxQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy03lA8tBs%325%UDy0HlA8tNtQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tLtQPLQK%192%UDy0JFA8tOVQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy091A8tEY%138%FA8tERQPLT1UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tOdQPLRtUDy0+1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLThUDy0IQ%335%FA8tB1QPLTbUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLS8UDy0Cg%180%BQPLQfUDy04lA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT6UDy0Tg%148%BQPLRHUDy0+VA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tOZQPLQm%346%BQPLQdUDy021A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0vFA8tAo%170%FA8tANQPLTWUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPxQPLRV%160%UDy0TFA8tPxQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy06VA8tCk%357%UDy0HVA8tNpQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tL1QPLQK%165%FA8tFZQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/VA8tFw%170%FA8tFRQPLT7UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTsUDy0Lg%367%FA8tBxQPLTaUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLS9UDy0Cw%159%FA8tJRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT+UDy0Z%181%BQPLRcUDy0/FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPBQPLQ0%378%BQPLQcUDy02VA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0vlA8tAs%154%FA8tJpQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP5QPLRs%192%UDy0ZFA8tP5QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy081A8tDo%389%UDy0HFA8tNlQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tL9QPLQL%149%FA8tJpQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tHM%202%FA8tGtQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT1UDy0Q%400%FA8tBtQPLTZUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLS/UDy0Cw%143%FA8tGxQPLT/UDy0/1A8tP9QPLT/UDy0fg%212%BQPLR0UDy0/1A8tP9QPLT/UDy0/1A8tPhQPLRG%410%BQPLQbUDy02FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0wFA8tAw%138%FA8tBNQPLTvUDy0/1A8tP9QPLSG%224%UDy0fVA8tP9QPLT/UDy0+lA8tE0%421%UDy0GlA8tNhQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tMBQPLQM%138%BQPLRBUDy0tFA8tGg%234%FA8tHNQPLS0UDy0Tg%431%FA8tBtQPLTyUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLSh%842%BQPLQ+UDy081A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0jg%842%UDy0PVA8tPJQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tI4%842%FA8tD1QPLTyUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLSP%842%BQPLQ8UDy08lA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0k%843%UDy0PFA8tPJQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tJE%842%FA8tDtQPLTxUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLSHUDy0BQ%836%BQPLQ7UDy08VA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0jg%842%UDy0OlA8tPFQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0+VA8tBk%842%FA8tDpQPLTxUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tD8%847%BQPLQ5UDy07lA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0+1A8tB4%853%UDy0L1A8tPJQPLT/UDy0/1A8tP9QPLT/UDy0nQ%863%FA8tDxQPLTHUDy0+FA8tOlQPLSKUDy0Cg%868%BQPLQCUDy0CVA8tAY%22101%UDy0SFA8tNpQPLTsUDy0Xg%442%UDy0MlA8tLdQPLT/UDy0mFA8tCo%405%UDy04FA8tP9QPLT/UDy0/1A8tJFQPLQH%426%BQPLRGUDy0/FA8tP9QPLT/UDy0/1A8tO5QPLQO%400%UDy07FA8tP9QPLT/UDy0/1A8tP9QPLTVUDy0Kw%415%FA8tEZQPLT8UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLR6%400%UDy0XlA8tP9QPLT/UDy0/1A8tP9QPLT/UDy071A8tFw%405%UDy0R1A8tPxQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLR8%405%FA8tJFQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPJQPLRi%400%UDy01lA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLRE%405%FA8tAZQPLS9UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT8UDy0lVE9tAM%389%UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tItQPLQB%410%BQPLQYUDy03VA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tMNQPLQV%384%UDy07FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0i1A8tAE%421%UDy0N1A8tPFQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTkUDy0Mw%378%UDy0a1A8tP9QPLT/UDy0/1A8tP9QPLSLUDy0AQ%431%FA8tGJQPLT8UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy091A8tF8%378%FA8tDhQPLSyUDy0vVA8tERQPLQB%37%FA8tBdQPLSxUDy051A8tOVQPLRd%378%BQPLSVUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP5QPLSRUDy0BQ%426%UDy0F1A8tN1QPLT/UDy0/1A8tP9QPLT/UDy0Uw%372%BRPbQDUDy0w1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0vVA8tBc%415%BQPLQXUDy03VA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0q%379%UDy0FVA8tORQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tN5QPLQ1%405%FA8tBdQPLTdUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0r%384%FA8tDNQPLT3UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTyUDy0Y%395%UDy0F1A8tN1QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0cw%388%BQPLRfUDy0/lA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/FA8tJRQPLQE%378%BQPLQXUDy03VA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLSF%400%UDy0kVA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTCUDy0Fg%367%FA8tAFQPLTSUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tIU%405%UDy0BVA8tL1QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy041A8tDQ%362%FA8tC9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0hQ%42%UDy0AlA8tAhQPLQIUDy0AQ%351%FA8tBdQPLTeUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPdQPLRf%357%FA8tC1QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLSF%42%BQPLQgUDy0qVA8tP9QPLT/UDy0sFA8tAw%351%BQPLQ1UDy08lA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT+UDy0kVA8tAU%351%BQPLS9UDy0/1A8tP9QPLT/UDy0/1A8tIU%42%FA8tCBQPLTdUDy0/1A8tP9QPLT/UDy0/1A8tLw%357%UDy0YFA8tPxQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tL5QPLQX%346%BQPLQMUDy0oVA8tP5QPLT0UDy0cg%42%UDy0IFA8tN1QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPNQPLQT%357%FA8tJRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTgUDy0N%405%BQPLQhUDy03FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPFQPLQS%357%FA8tARQPLTCUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09FA8tF8%394%FA8tCFQPLTcUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tJ4%367%BQPLQWUDy041A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP1QPLSTUDy0Bg%378%UDy0IFA8tNxQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0x1A8tAo%373%UDy0NFA8tPdQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0wVA8tBc%367%BQPLQgUDy03VA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTIUDy0CQ%383%FA8tF9QPLT+UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tOJQPLQ1%357%FA8tB9QPLTdUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tMhQPLQJ%42%BQPLQ1UDy0R1A8tBQ%335%BQPLSRUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT3UDy0Xw%346%UDy0AlA8tMhQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0yFA8tAg%37%UDy0A1A8tK1QPLT9UDy0/1A8tPhQPLR%331%BQPLQFUDy0vlA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tJFQPLQF%336%UDy0QVA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTIUDy0C%37%BQPLQDUDy0rFA8tP9QPLT/UDy0/1A8tP9QPLT5UDy0F%331%UDy0F1A8tOBQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLS/UDy0Fg%330%UDy0WlA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tMhQPLQJ%37%FA8tARQPLSsUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0WQ%335%FA8tDRQPLT0UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy04FA8tDM%325%UDy0B1A8tPVQPLT/UDy0/1A8tP9QPLT/UDy0x1A8tAk%37%UDy0BFA8tKxQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0S%341%BQPLRfUDy0/VA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPVQPLRdUj+1AQ%319%FA8tD1QPLTpUDy0/1A8tP9QPLS3UDy0Cg%36%BQPLQEUDy0q1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT%353%UDy0k1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT+UDy0kVA8tAc%319%BQPLQLUDy0HVA8tB0%42%FA8tARQPLSrUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tMBQPLQJ%352%UDy0BlA8tMFQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tMBQPLQY%368%UDy0BFA8tKtQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0v1A8tAk%362%FA8tBdQPLTiUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLThUDy0NQ%356%BQPLQEUDy0rFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLS/UDy0Cg%42%UDy0LlA8tH1QPLQgUDy0Ag%308%BQPLQ1UDy091A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09lA8tF8%346%FA8tANQPLSsUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tL5QPLQK%37%FA8tARQPLSMUDy0/lA8tP9QPLT/UDy0mFA8tAI%309%UDy0X1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLSRUDy0BQ%330%UDy0A1A8tKxQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0vlA8tAs%37%UDy0BFA8tLRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tGo%314%FA8tJFQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0v1A8tBU%325%UDy0rVA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLS+UDy0Cw%36%BQPLQDUDy0tFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tKQ%314%FA8tAVQPLS/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tOFQPLQy%314%BQPLQ1UDy0/VA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tL9QPLQK%37%FA8tANQPLS1UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tHo%319%BQPLQWUDy04FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT3UDy0XFE+tAE%303%BQPLR8UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0v1A8tAo%37%UDy0AlA8tLVQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy07VA8tA8%325%UDy0M1A8tPVQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tI9QPLQJ%298%BQPLRGUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTAUDy0CQ%36%BQPLQCUDy0tVA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTsUDy0Kw%335%FA8tF1QPLT+UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLS+UDy0GQ%298%UDy0klA8tP9QPLT/UDy0/1A8tMBQPLQJ%37%FA8tAJQPLS2UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tOtQPLQs%341%FI/tQFQPLSRUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy04FA8tDY%298%FA8tFRQPLSdUDy0X1A8tAg%37%UDy0AlA8tLVQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy06lA8tC0%42%FA8tClQPLSSUDy0dFA8tB8%287%BQPLQHUDy0wFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPZQPLRf%346%BQPLQDUDy0tVA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTpUDy0Lg%42%UDy0aVA8tP9QPLT/UDy0/1A8tNpQPLQe%288%UDy0GFA8tOFQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0kVA8tAQ%330%FA8tANQPLS1UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tOlQPLQu%42%BQPLRpUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLS/%293%FA8tDVQPLT2UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tMBQPLQU%320%UDy0BFA8tLRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy06VA8tC8%42%FA8tGpQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%298%BQPLRfUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTiUDy0MQ%308%BQPLQEUDy0tFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTpUDy0Lw%42%UDy0alA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTJ%304%UDy0kVA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0+FA8tFtRPbQB%298%BQPLSmUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tOlQPLQu%42%BQPLRqUDy0/lA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLQp%304%UDy0BVA8tL9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLSE%293%FA8tE5QPLT+UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy06lA8tC4%42%FA8tGtQPLT+UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tGU%314%FA8tBVQPLThUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT8%293%FA8tHxQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTrUDy0LQ%42%UDy0a1A8tP5QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0ZQ%324%BQPLQyUDy091A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTo%293%FA8tGlQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tOxQPLQs%42%BQPLRrUDy0/lA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP5QPLRm%336%UDy0XFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPRQPLRB%293%FA8tAtQPLTbUDy0/1A8tP9QPLT/UDy07FA8tCs%42%FA8tGtQPLT+UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/lA8tGY%341%UT60AVA8tI9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09FA8tEE%303%BQPLQVUDy0q1A8tNxQPLSzUDy0L%43%UDy0a1A8tP5QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT+UDy0Zg%351%FA8tAlQPLS+UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT0UDy0QQ%372%BQPLRqUDy0/lA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP1QPLRn%362%BQPLQZUDy04FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPRQPLRB%373%FA8tGpQPLT+UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/VA8tGc%373%UDy0NlA8tPZQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09FA8tEE%373%UDy0alA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT9UDy0Zw%383%FA8tF9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT0UDy0QQ%372%BQPLRpUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP5QPLRn%394%BQPLSRUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPRQPLRB%373%FA8tGlQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/lA8tGY%399%BQPLQEUDy0wFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09FA8tEE%373%UDy0SFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT+UDy0Zg%410%UDy0FFA8tOJQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT0UDy0QQ%378%UDy0p1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLRm%421%FA8tDFQPLT4UDy0/1A8tP9QPLT/UDy0/1A8tPRQPLRB%384%UDy0pVA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tGU%431%BQPLRbUDy0/1A8tP9QPLT/UDy09FA8tEE%389%UDy0OVA8tP5QPLT/UDy0/1A8tP9QPLT/UDy0ZQ%436%BRPbQBUDy0hFA8tPxQPLToUDy0QQ%399%FA8tFFQPLT+UDy0/1A8tOVQPLRE%32549%FA8tAlQPLQ2UDy0K%421%BQPLQOUDy0I1A8tCNQPLQjUDy0I1A8tCNQPLQjUDy0I1A8tCNQPLQjUDy0I1A8tCNQPLQjUDy0I1A8tCNQPLQjUDy0I1A8tCNQPLQjUDy0I1A8tCNQPLQjUDy0I1A8tCNQPLQjUDy0I1A8tCNQPLQjUDy0I1A8tCNQPLQjUDy0Cg%282%UDy0E1A8tNpQPLT/UDy0/lA8tK1QPLQj%405%FA8tDFQPLTsUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy04lA8tCE%277%UDy0ZlA8tP9QPLT/UDy0/1A8tP9QPLT7UDy0g1A8tAs%394%FA8tKNQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tIc%277%UDy0aFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tN9QPLRbUT20Ag%383%FA8tKlQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tI0%277%UDy0aFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0ylA8tDM%378%FA8tKlQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tI0%277%UDy0aFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLSjUDy0H%368%FA8tKlQPLT/UDy0/1A8tP9QPLT0UDy0QFA8tEFQPLRBUDy0QVA8tEFQPLRBUDy0QVA8tEFQPLRBUDy0QVA8tEFQPLRBUDy0QVA8tEFQPLRBUDy0QVA8tEFQPLRBUDy0QVA8tEFQPLRBUDy0QVA8tEFQPLRBUDy03lA8tP9QPLT/UDy0/1A8tI0%277%UDy0aFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy07VA8tHpQPLQG%357%FA8tKlQPLT/UDy0/1A8tP9QPLTx%128%UDy001A8tP9QPLT/UDy0/1A8tI0%277%UDy0aFA8tP9QPLT/UDy0/1A8tPpQPLQ8UDy001A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTbUDy0UFJAtQE%346%FA8tKlQPLT/UDy0/1A8tP9QPLTx%128%UDy001A8tP9QPLT/UDy0/1A8tI0%277%UDy0aFA8tP9QPLT/UDy0/1A8tPpSPrUBUD20A1A8tG9QPLToUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tMJQPLQq%341%FA8tKlQPLT/UDy0/1A8tP9QPLTx%128%UDy001A8tP9QPLT/UDy0/1A8tI0%277%UDy0aFA8tP9QPLT/UDy0/1A8tPpSPrUB%10%BQPLQWUDy0jVA8tP1QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT9UDy0j1A8tBY%330%FA8tKlQPLT/UDy0/1A8tP9QPLTx%128%UDy001A8tP9QPLT/UDy0/1A8tI0%277%UDy0aFA8tP9QPLT/UDy0/1A8tPpSPrUB%21%FA8tCpQPLTAUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tOlQPLRwUT20Ag%319%FA8tKlQPLT/UDy0/1A8tP9QPLTx%128%UDy001A8tP9QPLT/UDy0/1A8tI0%277%UDy0aFA8tP9QPLT/UDy0/1A8tPpSPrUB%26%BRPrQBUDy0UFA8tNhQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy01VA8tD0%314%FA8tKlQPLT/UDy0/1A8tP9QPLTx%128%UDy001A8tP9QPLT/UDy0/1A8tI0%277%UDy0aFA8tP9QPLT/UDy0/1A8tPpSPrUB%37%FA8tAdQPLR5UDy07FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP5QPLSvUDy0J%304%FA8tKlQPLT/UDy0/1A8tP9QPLTx%128%UDy001A8tP9QPLT/UDy0/1A8tI0%277%UDy0aFA8tP9QPLT/UDy0/1A8tPpSPrUB%48%UDy0HFA8tKJQPLT9UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0+VA8tIVQPLQS%293%FA8tKlQPLT/UDy0/1A8tP9QPLTx%128%UDy001A8tP9QPLT/UDy0/1A8tI0%277%UDy0aFA8tP9QPLT/UDy0/1A8tPpSPrUB%58%BQPLQzUDy0yFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTjUDy0X%288%FA8tKlQPLT/UDy0/1A8tP9QPLTx%128%UDy001A8tP9QPLT/UDy0/1A8tI0%277%UDy0aFA8tP9QPLT/UDy0/1A8tPpSPrUB%64%UT60AVA8tFxQPLTcUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tM1QPLQ5%277%FA8tKlQPLT/UDy0/1A8tP9QPLTx%128%UDy001A8tP9QPLT/UDy0/1A8tI0%277%UDy0aFA8tP9QPLT/UDy0/1A8tPpSPrUB%74%BQPLQNUDy0g1A8tPlQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTI%277%FA8tKlQPLT/UDy0/1A8tP9QPLTx%128%UDy001A8tP9QPLT/UDy0/1A8tI0%277%UDy0aFA8tP9QPLT/UDy0/1A8tPpSPrUB%80%Uj+1AVA8tGFQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTxUDy0Bw%271%FA8tKlQPLT/UDy0/1A8tP9QPLTx%128%UDy001A8tP9QPLT/UDy0/1A8tI0%277%UDy0aFA8tP9QPLT/UDy0/1A8tPpSPrUB%74%BQPLQnUDy0sVA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLS0%277%FA8tKlQPLT/UDy0/1A8tP9QPLTx%128%UDy001A8tP9QPLT/UDy0/1A8tI0%277%UDy0aFA8tP9QPLT/UDy0/1A8tPpSPrUB%64%UDy0C1A8tIlQPLT9UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/lA8tJ5QPLQN%277%FA8tKlQPLT/UDy0/1A8tP9QPLTx%128%UDy001A8tP9QPLT/UDy0/1A8tI0%277%UDy0aFA8tP9QPLT/UDy0/1A8tPpSPrUB%53%FE9tAJQPLRfUDy05FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTGUDy0Lg%287%FA8tKlQPLT/UDy0/1A8tP9QPLTx%128%UDy001A8tP9QPLT/UDy0/1A8tI0%277%UDy0aFA8tP9QPLT/UDy0/1A8tPpSPrUB%48%UDy0N1A8tM9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy04VA8tGBRPrUB%293%FA8tKlQPLT/UDy0/1A8tP9QPLTx%128%UDy001A8tP9QPLT/UDy0/1A8tI0%277%UDy0aFA8tP9QPLT/UDy0/1A8tPpSPrUB%37%FA8tB5QPLSdUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPpQPLR+UDy0Dw%303%FA8tKlQPLT/UDy0/1A8tP9QPLTx%128%UDy001A8tP9QPLT/UDy0/1A8tI0%277%UDy0aFA8tP9QPLT/UDy0/1A8tPpSPrUB%26%BQPLQGUDy0f1A8tO9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0p1A8tB8%314%FA8tKlQPLT/UDy0/1A8tP9QPLTx%128%UDy001A8tP9QPLT/UDy0/1A8tI0%277%UDy0aFA8tP9QPLT/UDy0/1A8tPpSPrUB%21%FA8tFZQPLTfUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tM1QPLRC%325%FA8tKlQPLT/UDy0/1A8tP9QPLTx%128%UDy001A8tP9QPLT/UDy0/1A8tI0%277%UDy0aFA8tP9QPLT/UDy0/1A8tPpSPrUB%10%BQPLQvUDy0vFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTmUDy0a1A9tAM%330%FA8tKlQPLT/UDy0/1A8tP9QPLTx%128%UDy001A8tP9QPLT/UDy0/1A8tI0%277%UDy0aFA8tP9QPLT/UDy0/1A8tPpSPrUBUDy0GFA8tJRQPLT9UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/FA8tIhQPLQT%341%FA8tKlQPLT/UDy0/1A8tP9QPLTx%128%UDy001A8tP9QPLT/UDy0/1A8tI0%277%UDy0aFA8tP9QPLT/UDy0/1A8tPtQPLR3UDy061A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP5QPLS8UDy0Jw%351%FA8tKlQPLT/UDy0/1A8tP9QPLTx%128%UDy001A8tP9QPLT/UDy0/1A8tI0%277%UDy0aFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy00lA8tE0%362%FA8tKlQPLT/UDy0/1A8tP9QPLTx%128%UDy001A8tP9QPLT/UDy0/1A8tI0%277%UDy0aFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPVQPLR1UDy0Bw%367%FA8tKlQPLT/UDy0/1A8tP9QPLT3UDy0d1A8tHhQPLR4UDy0eFA8tHhQPLR4UDy0eFA8tHhQPLR4UDy0eFA8tHhQPLR4UDy0eFA8tHhQPLR4UDy0eFA8tHhQPLR4UDy0eFA8tHhQPLR4UDy0eFA8tHhQPLR3UDy06FA8tP9QPLT/UDy0/1A8tI0%277%UDy0aFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT7UDy0nlA8tBg%378%FA8tKlQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tI0%277%UDy0aFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/lA8tMJQPLQx%389%FA8tKlQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tI0%277%UDy0XlA8tP9QPLT/UDy0/1A8tP9QPLTiUDy0WQ%399%FA8tJhQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tIc%277%UDy0DFA8tL5QPLT/UDy091A8tH9QPLQO%405%FA8tCZQPLTeUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy03lA8tCE%282%FE9tAJQPLQQUDy0Cw%420%BQPLQHUDy0I1A8tCNQPLQjUDy0I1A8tCNQPLQjUDy0I1A8tCNQPLQjUDy0I1A8tCNQPLQjUDy0I1A8tCNQPLQjUDy0I1A8tCNQPLQjUDy0I1A8tCNQPLQjUDy0I1A8tCNQPLQjUDy0I1A8tCNQPLQjUDy0I1A8tCNQPLQjUT20Ag%33967%FA8tBhQPLQd%874%BQPLQYUDy0n1A8tPxQPLT/UDy0xlA8tC4%853%UT20AlA8tHZQPLTrUDy0/1A8tP9QPLT/UDy0/1A8tP1QPLSTUDy0G%837%BQPLRNUDy02FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy06lA8tHRRPbQC%816%UDy0KlA8tLFQPLT+UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTXUDy0QQ%420%BQPLQlUDy0TFA8tCU%362%FA8tBRQPLSKUDy0+VA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPtQPLT2UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/lA8tLJQPLQn%394%BQPLQjUDy0d1A8tMpQPLT+UDy0/1A8tPhQPLRM%346%BRPbQDUDy0a1A8tOVQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT+UDy0wVA8tDJQPLQaUDy0n1A8tPxQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT6UDy0iFA8tBQ%362%FNAtQFQPLQgUDy0elA8tMhQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTlUDy0Gw%335%FA8tDtQPLTOUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tNlQPLRZ%21%FA8tDFQPLTEUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tOVQPLRgUj+1AQ%340%BQPLQ2UDy0hFA8tNNQPLT+UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0wlE9tAM%319%BQPLQmUDy0plA8tP5QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT2UDy0gFA8tA0%31%BSP7UBUDy0WVA8tOJQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0z1A8tDg%319%BQPLQ0UDy0hlA8tNxQPLT+UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tIc%309%UDy0CFA8tH9QPLTzUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/VA8tKtQPLQb%53%FA8tA9QPLSAUDy091A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP1QPLSnUDy0Iw%287%FA8tAZQPLQuUDy0ilA8tNlQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPpQPLTaUDy0/1A8tP9QPLT/UDy0/1A8tPpQPLQ+%293%FE9tANQPLRUUDy04VA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTIUDy0Ow%74%UDy0HlA8tKtQPLT8UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09VA8tH9QPLQG%261%FA9tANQPLRFUDy0lVA8tOpQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPtQPLS+UDy0bVA8tBhRPbQCUDy0wlA8tP9QPLT/UDy0/1A8tP9QPLTeUDy0Cw%282%UDy0NVA8tMNQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy07FA8tGI%95%BQPLQ8UDy0y1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTeUDy0VVE9tAE%234%FE9tAJQPLRGUDy0llA8tOhQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPVQPLSxUDy0V1A8tA8%21%UDy0HVA8tO9QPLT/UDy0/1A8tP9QPLT/UDy0qlI/tQE%266%FA8tBVQPLSbUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPlQPLSLUDy0E%107%UDy0B1A8tGdQPLTqUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tMRQPLQy%213%FA8tAxQPLRLUDy0mFA8tOdQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPRQPLSyUDy0WVA8tA4%42%FA8tFZQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tGY%255%BQPLQHUDy0c1A8tO1QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0tFA8tC%128%BQPLQSUDy0jFA8tPhQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT6UDy0k1A8tBc%186%FA8tAZQPLRUUDy0pVA8tPVQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tO5QPLSnUDy0XVA8tAw%63%BQPLSfUDy0/1A8tP9QPLT/UDy0/1A8tPFQPLQo%240%UT60AVA8tElQPLTeUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tNVQPLRD%149%FA8tCFQPLS2UDy0/lA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tOtQPLRzUDy0BQ%175%FA8tK9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tO1QPLSgUDy0RVA8tAg%79%BQPLQOUDy00lA8tP9QPLT/UDy0/1A8tP9QPLTTUDy0Bw%228%BQPLQeUDy0ulA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTyUDy0a1A8tAk%165%UDy0UFA8tNRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy02lA8tEg%165%UDy0HFA8tP1QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tOxQPLShUDy0R1A8tAg%101%UDy0NVA8tPtQPLT/UDy0/1A8tP9QPLT/UDy0kQ%228%BQPLTNUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/VA8tJRQPLQU%181%FA8tApQPLRsUDy08lA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPtQPLQY%160%UDy0IlA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tOJQPLSLUDy0TVA8tAQ%122%FA8tG9QPLT/UDy0/1A8tP9QPLT/UDy0/FA8tE4%223%BQPLT2UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLS9UDy0Jw%202%UDy0FVA8tJZQPLT8UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLRb%160%UDy0IlA8tP9QPLT/UDy0/1A8tP9QPLS3UDy0NlA9tAM%143%BQPLS0UDy0/1A8tP9QPLT/UDy0/1A8tOtQPLQV%218%BQPLT2UDy0/1A8tP9QPLT/UDy03FA8tFhSP7UB%218%BQPLQzUDy0xFA8tP9QPLT/UDy0/1A8tP9QPLRb%160%UDy0IlA8tP9QPLT/UDy0/1A8tP9QPLR2%154%BQPLQZUDy05lA8tP9QPLT/UDy0/1A8tP9QPLS8UDy0BQ%212%BQPLT2UDy0/1A8tP9QPLT/UDy0bg%234%UDy0PVA8tP9QPLT/UDy0/1A8tP9QPLRb%160%UDy0IlA8tP9QPLT/UDy0/1A8tP9QPLR2%160%UDy0QlA8tP1QPLT/UDy0/1A8tP9QPLT/UDy0dw%212%BQPLT2UDy0/1A8tP9QPLT/UDy0bg%234%UDy0PVA8tP9QPLT/UDy0/1A8tP9QPLRb%160%UDy0IlA8tP9QPLT/UDy0/1A8tP9QPLR2%165%FA8tIlQPLT/UDy0/1A8tP9QPLT/UDy0+FA8tDc%207%BQPLT2UDy0/1A8tP9QPLT/UDy0bg%234%UDy0PVA8tP9QPLT/UDy0/1A8tP9QPLRb%160%UDy0IlA8tP9QPLT/UDy0/1A8tP9QPLR2%165%FA8tAlQPLTGUDy0/1A8tP9QPLT/UDy0/1A8tOJQPLQQ%202%BQPLT2UDy0/1A8tP9QPLT/UDy0bg%234%UDy0PVA8tP9QPLT/UDy0/1A8tP9QPLRb%160%UDy0IlA8tP9QPLT/UDy0/1A8tP9QPLR2%170%BQPLQlUDy09FA8tP9QPLT/UDy0/1A8tP9QPLSj%202%BQPLT2UDy0/1A8tP9QPLT/UDy0bg%234%UDy0PVA8tP9QPLT/UDy0/1A8tP9QPLRb%160%UDy0IlA8tP9QPLT/UDy0/1A8tP9QPLR2%176%UDy0WlA8tP5QPLT/UDy0/1A8tP9QPLT+UDy0YQ%196%BQPLT2UDy0/1A8tP9QPLT/UDy0bg%234%UDy0PVA8tP9QPLT/UDy0/1A8tP9QPLRb%160%UDy0IlA8tP9QPLT/UDy0/1A8tP9QPLR2%181%FA8tKRQPLT/UDy0/1A8tP9QPLT/UDy09FA8tCI%191%BQPLT2UDy0/1A8tP9QPLT/UDy0bg%234%UDy0PVA8tP9QPLT/UDy0/1A8tP9QPLRb%160%UDy0IlA8tP9QPLT/UDy0/1A8tP9QPLR2%181%FA8tA9QPLTbUDy0/1A8tP9QPLT/UDy0/1A8tMxQPLQM%186%BQPLT2UDy0/1A8tP9QPLT/UDy0bg%234%UDy0PVA8tP9QPLT/UDy0/1A8tP9QPLRb%160%UDy0IlA8tP9QPLT/UDy0/1A8tP9QPLR2%186%BQPLQxUDy091A8tP9QPLT/UDy0/1A8tP9QPLSI%186%BQPLT2UDy0/1A8tP9QPLT/UDy0bg%234%UDy0PVA8tP9QPLT/UDy0/1A8tP9QPLRb%160%UDy0IlA8tP9QPLT/UDy0/1A8tP9QPLR2%192%UDy0dlA8tP9QPLT/UDy0/1A8tP9QPLT9UDy0SQ%180%BQPLT2UDy0/1A8tP9QPLT/UDy0bg%234%UDy0PVA8tP9QPLT/UDy0/1A8tP9QPLRb%160%UDy0IlA8tP9QPLT/UDy0/1A8tP9QPLR2%192%UDy0BVA8tLZQPLT/UDy0/1A8tP9QPLT/UDy07VA8tBs%175%BQPLT2UDy0/1A8tP9QPLT/UDy0bg%234%UDy0PVA8tP9QPLT/UDy0/1A8tP9QPLRb%160%UDy0IlA8tP9QPLT/UDy0/1A8tP9QPLR2%197%FA8tBlQPLTrUDy0/1A8tP9QPLT/UDy0/1A8tJ4%175%BQPLT2UDy0/1A8tP9QPLT/UDy0bg%234%UDy0PVA8tP9QPLT/UDy0/1A8tP9QPLRb%160%UDy0IlA8tP9QPLT/UDy0/1A8tP9QPLR2%202%BQPLSrUDy0/1A8tP9QPLT/UDy0/1A8tLg%175%BQPLT2UDy0/1A8tP9QPLT/UDy0bg%234%UDy0PVA8tP9QPLT/UDy0/1A8tP9QPLRb%160%UDy0IlA8tP9QPLT/UDy0/1A8tP9QPLR2%197%FA8tFJQPLT+UDy0/1A8tP9QPLT/UDy0/1A8tF4%175%BQPLT2UDy0/1A8tP9QPLT/UDy0bg%234%UDy0PVA8tP9QPLT/UDy0/1A8tP9QPLRb%160%UDy0IlA8tP9QPLT/UDy0/1A8tP9QPLR2%192%UDy0HlA8tPJQPLT/UDy0/1A8tP9QPLT/UDy0rVA9tAM%175%BQPLT2UDy0/1A8tP9QPLT/UDy0bg%234%UDy0PVA8tP9QPLT/UDy0/1A8tP9QPLRb%160%UDy0IlA8tP9QPLT/UDy0/1A8tP9QPLR2%186%BSPrUBUDy0vlA8tP9QPLT/UDy0/1A8tP9QPLTmUDy0Ew%180%BQPLT2UDy0/1A8tP9QPLT/UDy0bg%234%UDy0PVA8tP9QPLT/UDy0/1A8tP9QPLRb%160%UDy0IlA8tP9QPLT/UDy0/1A8tP9QPLR2%186%BQPLSBUDy0/1A8tP9QPLT/UDy0/1A8tPhQPLR%187%BQPLT2UDy0/1A8tP9QPLT/UDy0bg%234%UDy0PVA8tP9QPLT/UDy0/1A8tP9QPLRb%160%UDy0IlA8tP9QPLT/UDy0/1A8tP9QPLR2%181%FA8tDpQPLT9UDy0/1A8tP9QPLT/UDy0/1A8tIk%191%BQPLT2UDy0/1A8tP9QPLT/UDy0bg%234%UDy0PVA8tP9QPLT/UDy0/1A8tP9QPLRb%160%UDy0IlA8tP9QPLT/UDy0/1A8tP9QPLR2%176%UDy0FlA8tN5QPLT/UDy0/1A8tP9QPLT/UDy0xFA8tAU%191%BQPLT2UDy0/1A8tP9QPLT/UDy0bg%234%UDy0PVA8tP9QPLT/UDy0/1A8tP9QPLRb%160%UDy0IlA8tP9QPLT/UDy0/1A8tP9QPLR2%176%UDy0plA8tP9QPLT/UDy0/1A8tP9QPLTtUDy0HQ%196%BQPLT2UDy0/1A8tP9QPLT/UDy0bg%234%UDy0PVA8tP9QPLT/UDy0/1A8tP9QPLRb%160%UDy0IlA8tP9QPLT/UDy0/1A8tP9QPLR2%170%BQPLRnUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLRa%202%BQPLT2UDy0/1A8tP9QPLT/UDy0bg%234%UDy0PVA8tP9QPLT/UDy0/1A8tP9QPLRb%160%UDy0IlA8tP9QPLT/UDy0/1A8tP9QPLR2%165%FA8tChQPLT5UDy0/1A8tP9QPLT/UDy0/1A8tJk%207%BQPLT2UDy0/1A8tP9QPLT/UDy0bg%234%UDy0PVA8tP9QPLT/UDy0/1A8tP9QPLRb%160%UDy0IlA8tP9QPLT/UDy0/1A8tP9QPLR2%160%UDy0BVA8tNBQPLT/UDy0/1A8tP9QPLT/UDy02FA8tAo%207%BQPLT2UDy0/1A8tP9QPLT/UDy0bg%234%UDy0PVA8tP9QPLT/UDy0/1A8tP9QPLRb%160%UDy0IlA8tP9QPLT/UDy0/1A8tP9QPLR2%160%UDy0l1A8tP9QPLT/UDy0/1A8tP9QPLTyUDy0MQ%212%BQPLT2UDy0/1A8tP9QPLT/UDy0bg%234%UDy0PVA8tP9QPLT/UDy0/1A8tP9QPLRb%160%UDy0IlA8tP9QPLT/UDy0/1A8tP9QPLR3%154%BQPLRNUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLR1%218%BQPLT2UDy0/1A8tP9QPLT/UDy0bg%234%UDy0PVA8tP9QPLT/UDy0/1A8tP9QPLRb%160%UDy0IlA8tP9QPLT/UDy0/1A8tP9QPLT3UDy0rlA8tFlQPLQQ%133%FA8tB9QPLTnUDy0/1A8tP9QPLT/UDy0/1A8tLJSP7UB%218%BQPLT2UDy0/1A8tP9QPLT/UDy0bg%234%UDy0PVA8tP9QPLT/UDy0/1A8tP9QPLRb%160%UDy0IlA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT4UDy0q1A8tFtQPLQO%112%UD20A1A8tLpQPLT/UDy0/1A8tP9QPLT/UDy05lA8tBI%223%BQPLT2UDy0/1A8tP9QPLT/UDy08VA8tHRQPLQI%213%FA9tANQPLRRUDy03VA8tP9QPLT/UDy0/1A8tP9QPLRb%160%UDy0CVA8tPBQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT1UDy0ulA8tGhQPLQa%96%UDy0fVA8tP9QPLT/UDy0/1A8tP9QPLT+UDy0RQ%228%BQPLT2UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTeUDy0T%203%UDy0KVA8tLlQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLRY%165%FA8tElQPLTdUDy0/lA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT7UDy0wVA8tGpQPLQa%74%BQPLQ2UDy0/FA8tP9QPLT/UDy0/1A8tP9QPLSE%234%BQPLTEUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tLJQPLQq%181%FA8tBFQPLSVUDy0+FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tOtQPLQV%176%UDy0NFA8tIRQPLTdUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT+UDy0u1A8tGxQPLQY%53%FA8tAxQPLTgUDy0/1A8tP9QPLT/UDy0/1A8tMhQPLQE%234%BQPLQWUDy0mlA8tPlQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT4UDy0lFA8tA8%159%BQPLQGUDy0alA8tO9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0u1A8tCk%191%BRPbQCUDy0MFA8tIpQPLTTUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT8UDy01FA8tHhQPLQp%32%UT20AlA8tK1QPLT/UDy0/1A8tP9QPLT/UDy07FA8tCY%250%FA8tDZQPLS6UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tO1QPLRpUDy0Bw%143%FA8tEVQPLTUUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tN9QPLRMUT20AQ%218%UDy0I1A8tHRQPLTNUDy0/FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT9UDy001A8tHhQPLQo%16%UDy0X1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0Xw%260%BQPbQDUDy0TlA8tN9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0yVA8tEU%127%BQPLQgUDy0sVA8tPxQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTxUDy0dVA8tAY%245%UDy0JVA8tHJQPLTQUDy0/FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0zVA8tIRQPLRZUDy08FA8tP9QPLT/UDy0/1A8tP9QPLSd%277%FA8tAhQPLR2UDy08VA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPxQPLStUDy0IQ%106%UDy0DlA8tIlQPLT3UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/lA8tJ1QPLQe%272%UDy0I1A8tHhQPLS2UDy0/VA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tNxQPLQL%288%UDy0HlA8tJ5QPLT9UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09VA8tIlQPLQN%85%FE9tAJQPLRhUDy07FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTGUDy0Og%298%UDy0FlA8tGVQPLS7UDy0+lA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0+lA8tDI%303%BQPLQ8UDy0xVA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTiUDy0XFA9tAQ%69%UDy0OlA8tMNQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy05lA8tFdSPrUB%320%UDy0FlA8tGNQPLTAUDy0+FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0bQ%314%UD20A1A8tFdQPLTnUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tMFQPLQ7%53%FA8tBhQPLSoUDy0/FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPRQPLSLUDy0CQ%346%UDy0FlA8tFtQPLSnUDy09lA8tP9QPLT/UDy0/1A8tP9QPLS4UT20Ag%324%BQPLQKUDy0i1A8tPZQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT6UDy0qFA8tBg%31%BQPLQJUDy0dFA8tPVQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0qVA8tCQ%373%UDy0DVA8tFRQPLSpUDy0w1A8tKtQPLQa%341%FA8tCRQPLSoUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPNQPLRzUDy0CQ%15%FA8tFdQPLTbUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tM1QPLRD%768%UDy0RFA8tNlQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy02lA8tFZQPLQxUDy0u1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTrUDy0a1A9tAM%778%FA9tANQPLRtUDy07FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT9UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09lA8tJVQPLQO%800%UDy0DlA8tJZQPLT4UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLSxUDy0L%821%BQPLQrUDy0vlA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy031A8tEtRPrUB%837%FA8tE5QPLTgUDy0/1A8tP9QPLT/UDy0/1A8tO5QPLR1UDy0Bw%852%BQPLQGUDy0dlA8tOhQPLT4UDy0p1A8tBU%874%FA8tARQPLQI%13829%FE9tANQPbQD%880%UDy0ZlA8tOVQPLTrUDy0u1A8tH5QPLRAUDy0EQ%847%FA8tAZQPLSMUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0+1A8tM1QPLSaUDy0V1A8tCE%821%UDy0FlA8tLpQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTjUDy0pFA8tHBQPLQxUDy0Cw%788%BQPLQxUDy03FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy08lA8tMFQPLSDUDy0T1A8tA4%383%BQPLQvUDy0VlA8tBM%362%FA8tFhQPLTyUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLToUDy0/FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP1QPLTUUDy0llA8tGRQPLQmUT20AQ%346%UDy0JFA8tKlQPLT9UDy0/1A8tPNQPLRtUD20Aw%340%BQPLQIUDy0ilA8tP5QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tL5QPLQeUT20AlA8tDpQPLR6UDy0rVA8tOZQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT+UDy05FA8tLJQPLR0UDy0QlA8tAs%314%FA8tAZQPLSBUDy09lA8tP9QPLT/UDy0/1A8tP9QPLT/UDy00VA8tEU%330%FA8tBpQPLTAUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0lFA8tAo%26%FA9tARQPLQpUDy0XVA8tJxQPLTPUDy0+lA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPhQPLTEUDy0kFA8tCk%287%BRPbQBUDy0WFA8tOBQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLSrUDy0IQ%314%UDy0N1A8tOBQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPlQPLRiUT20AQ%58%UDy0EVA8tEpQPLSDUDy0u1A8tPNQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tO5QPLQl%277%FA8tDRQPLTHUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0+lA8tIJQPLQR%293%FI+tQFQPLRgUDy09VA8tP9QPLT/UDy0/1A8tP9QPLT/UDy041A8tDY%90%FA8tAZQPLQ3UDy0alA8tKhQPLTnUDy0/VA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLSb%266%BQPLQZUDy0nVA8tP5QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT4UDy011A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTiUDy0Yw%282%UDy0ClA8tJJQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTDUDy0Gg%122%UDy0HlA8tFlQPLSMUDy0zFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT0UDy0Fg%250%UDy0BlA8tHZQPLTsUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/lA8tLRQPLQgUT20AlA8tF1QPLTgUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tMpQPLQx%266%BQPLQdUDy0vVA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tJdQPLQH%149%FA8tAdQPLRFUDy0hFA8tMxQPLT/UDy0/1A8tP9QPLT/UDy0hw%239%FE9tAJQPLRMUDy021A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTRUDy0Qw%20%BQPLQMUDy0g1A8tPJQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT9UDy0olA8tBw%250%FA8tDpQPLTdUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT7UDy0ZVI/tQE%170%FA8tB1QPLT3UDy0/1A8tP9QPLT/UDy09FA8tBU%229%UDy0LlA8tLtQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy08FA8tGpQPLQK%37%FA8tCVQPLSuUDy0/lA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPVQPLR4UDy0Dg%234%UDy0YlA8tPNQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tOpQPLQ2%186%BQPLSXUDy0/1A8tP9QPLT/UDy0/1A8tIk%218%FA8tBFQPLSQUDy09lA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPtQPLSUUDy0F%21%BQPLQ8UDy0vlA8tMlQPLRuUDy0BQ%10%UDy0P1A8tNFQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy02lA8tF%219%FE9tAJQPLSTUDy0/lA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0vFA8tBY%191%BQPLQeUDy0/1A8tP9QPLT/UDy0/1A8tPJQPLQU%202%BQPLQFUDy0alA8tOlQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0vFA8tDI%26%FA8tA5QPLTzUDy0/1A8tP9QPLT/UDy021A8tEU%10%FE9tANQPLRpUDy06lA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP5QPLTBUDy0Kw%202%UDy0FlA8tMNQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLSPUDy0BQ%202%UDy0rlA8tP9QPLT/UDy0/1A8tP9QPLR2%192%Uj+1AVA8tD9QPLTNUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tNpQPLRW%37%FA8tD9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLS3UDy0Jw%10%UDy0F1A8tJBQPLT7UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0+1A8tJdQPLQV%186%BQPLQ0UDy04lA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0+VA8tFw%213%UDy0M1A8tP5QPLT/UDy0/1A8tP9QPLTlUDy0C%181%BQPLQmUDy0p1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT2UDy0dFA8tAs%42%FA8tAZQPLThUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09FA8tI9QPLQL%10%BQPLQpUDy0u1A8tP5QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTnUDy0b1E9tAI%170%FA8tF5QPLT2UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTmUDy0Lw%223%FA8tLBQPLT/UDy0/1A8tP9QPLT/UDy0bg%170%UDy0ClA8tIpQPLTyUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/lA8tKhQPLQY%58%BQPLQrUDy0wVA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLToUDy0ZVE+tAE%10%FA8tEtQPLTWUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tNNQPLRG%154%BRPbQCUDy0kVA8tP5QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tMBQPLQS%229%FA8tDJQPLT9UDy0/1A8tP9QPLT/UDy041A8tAc%154%FE9tAJQPLRVUDy05VA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTFUDy0OQ%74%Uj61AVA8tF1QPLTfUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tNRQPLQ9%10%BQPLQMUDy0dlA8tPJQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT+UDy0tVA8tB8%138%FA8tBBQPLTAUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0kVA9tAQ%239%BQPLSzUDy0/1A8tP9QPLT/UDy0/1A8tG8%149%UDy0I1A8tNBQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy04VA8tGBRPrQB%90%BQPLQMUDy0elA8tPdQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT+UDy0olA8tC%11%FA8tBtQPLSdUDy0/FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPdQPLSIUD20Aw%127%FA8tI1QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPdQPLRf%250%BQPLRCUDy0/1A8tP9QPLT/UDy0/1A8tOJQPLQI%144%UDy0r1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPpQPLSJUDy0Dg%111%FA8tBxQPLSuUDy0/FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPJQPLSEUDy0Bg%10%UDy0LlA8tMVQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0Sw%127%FA8tLFQPLT/UDy0/1A8tP9QPLT/UDy05VA8tDQ%255%BRPrQBUDy0y1A8tP9QPLT/UDy0/1A8tP9QPLRQ%144%UDy09VA8tP9QPLT/UDy0/1A8tP9QPLT+UDy0sVA8tB8%133%UDy0QFA8tMdQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy04lA8tFFSP7UB%10%BQPLRgUDy03lA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0X%128%FA8tLFQPLT/UDy0/1A8tP9QPLTwUDy0F%267%UDy0S1A8tP9QPLT/UDy0/1A8tP9QPLTPUT61AQ%138%UDy09VA8tP9QPLT/UDy0/1A8tN1QPLRC%149%FA9tARQPLRlUDy05VA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTAUDy0NQ%10%UDy0D1A8tH5QPLT/UDy0/1A8tP9QPLT/UDy0X%128%FA8tLFQPLT/UDy0/1A8tP9QPLTp%272%UT20A1A8tMxQPLT/UDy0/1A8tP9QPLT/UDy0Ug%138%UDy09VA8tP9QPLT/UDy0/1A8tKQ%165%UDy0EVA8tJBQPLT4UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/VA8tEw%10%FA8tAZQPLT/UDy0/1A8tP9QPLT/UDy0X%128%FA8tLFQPLT/UDy0/1A8tP9QPLTp%277%FA8tExQPLT/UDy0/1A8tP9QPLT/UDy0zQ%138%UDy09VA8tP9QPLT/UDy0/1A8tKQ%10%FA8tC9QPLTTUDy06VA8tK1QPLQL%138%BQPLQlUDy0tlA8tP1QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tLw%10%FA8tAZQPLT/UDy0/1A8tP9QPLT/UDy0X%128%FA8tLFQPLT/UDy0/1A8tP9QPLTp%277%FE9tAJQPLTMUDy0/1A8tP9QPLT/UDy0/1A8tFI%133%UDy09VA8tP9QPLT/UDy0/1A8tKQ%10%FA8tNNQPLT/UDy0/1A8tP9QPLR1%149%FA8tEtQPLTOUDy0/1A8tP9QPLT/UDy0/1A8tLM%10%FA8tAZQPLT/UDy0/1A8tP9QPLT/UDy0X%128%FA8tLFQPLT/UDy0/1A8tP9QPLTp%282%BQPLRpUDy0/1A8tP9QPLT/UDy0/1A8tMM%133%UDy09VA8tP9QPLT/UDy0/1A8tKQ%5%UDy0DlA8tP9QPLT/UDy0/1A8tP9QPLSH%154%BQPLQJUDy0cFA8tPFQPLT/UDy06lA8tDc%10%FA8tAZQPLT/UDy0/1A8tP9QPLT/UDy0X%128%FA8tLFQPLT/UDy0/1A8tP9QPLTp%282%BQPLQIUDy04lA8tP9QPLT/UDy0/1A8tP9QPLQ3%128%UDy09VA8tP9QPLT/UDy0/1A8tKQ%5%UDy0DlA8tP9QPLT/UDy0/1A8tP9QPLSH%165%FA8tAhQPLQ6UD20Aw%15%FA8tAZQPLT/UDy0/1A8tP9QPLT/UDy0X%128%FA8tLFQPLT/UDy0/1A8tP9QPLTp%288%UDy0ZlA8tP9QPLT/UDy0/1A8tP9QPLSz%128%UDy09VA8tP9QPLT/UDy0/1A8tKQ%5%UDy0DlA8tP9QPLT/UDy0/1A8tP9QPLSH%197%FA8tAZQPLT/UDy0/1A8tP9QPLT/UDy0X%128%FA8tLFQPLT/UDy0/1A8tP9QPLTp%288%UDy0CVA8tOJQPLT/UDy0/1A8tP9QPLT/UDy0Ng%122%UDy09VA8tP9QPLT/UDy0/1A8tKQ%5%UDy0DlA8tP9QPLT/UDy0/1A8tP9QPLSH%197%FA8tAZQPLT/UDy0/1A8tP9QPLT/UDy0X%128%FA8tLFQPLT/UDy0/1A8tP9QPLTp%293%FA8tGhQPLT/UDy0/1A8tP9QPLT/UDy0tQ%122%UDy09VA8tP9QPLT/UDy0/1A8tKQ%5%UDy0DlA8tP9QPLT/UDy0/1A8tP9QPLSH%197%FA8tAZQPLT/UDy0/1A8tP9QPLT/UDy0X%128%FA8tLFQPLT/UDy0/1A8tP9QPLTp%293%FA8tAdQPLTsUDy0/1A8tP9QPLT/UDy0/VA8tDU%117%UDy09VA8tP9QPLT/UDy0/1A8tKQ%5%UDy0DlA8tP9QPLT/UDy0/1A8tP9QPLSH%197%FA8tAZQPLT/UDy0/1A8tP9QPLT/UDy0X%128%FA8tLFQPLT/UDy0/1A8tP9QPLTp%298%BQPLSDUDy0/1A8tP9QPLT/UDy0/1A8tJ8%117%UDy09VA8tP9QPLT/UDy0/1A8tKQ%5%UDy0DlA8tP9QPLT/UDy0/1A8tP9QPLSH%197%FA8tAZQPLT/UDy0/1A8tP9QPLT/UDy0X%128%FA8tLFQPLT/UDy0/1A8tP9QPLTp%298%BQPLQUUDy08lA8tP9QPLT/UDy0/1A8tPpQPLQg%112%UDy09VA8tP9QPLT/UDy0/1A8tKQ%5%UDy0DlA8tP9QPLT/UDy0/1A8tP9QPLSH%197%FA8tAZQPLT/UDy0/1A8tP9QPLT/UDy0X%128%FA8tLFQPLT/UDy0/1A8tP9QPLTp%304%UDy0hFA8tP9QPLT/UDy0/1A8tP9QPLSX%112%UDy09VA8tP9QPLT/UDy0/1A8tKQ%5%UDy0DlA8tP9QPLT/UDy0/1A8tP9QPLSH%197%FA8tAZQPLT/UDy0/1A8tP9QPLT/UDy0X%128%FA8tLFQPLT/UDy0/1A8tP9QPLTp%304%UDy0GFA8tP5QPLT/UDy0/1A8tP9QPLTI%112%UDy09VA8tP9QPLT/UDy0/1A8tKQ%5%UDy0DlA8tP9QPLT/UDy0/1A8tP9QPLSH%197%FA8tAZQPLT/UDy0/1A8tP9QPLT/UDy0X%128%FA8tLFQPLT/UDy0/1A8tP9QPLTp%304%UDy0X1A8tP9QPLT/UDy0/1A8tP9QPLS8%112%UDy09VA8tP9QPLT/UDy0/1A8tKQ%5%UDy0DlA8tP9QPLT/UDy0/1A8tP9QPLSH%197%FA8tAZQPLT/UDy0/1A8tP9QPLT/UDy0X%128%FA8tLFQPLT/UDy0/1A8tP9QPLTp%298%BRPbQCUDy0zFA8tP9QPLT/UDy0/1A8tP9QPLRT%112%UDy09VA8tP9QPLT/UDy0/1A8tKQ%5%UDy0DlA8tP9QPLT/UDy0/1A8tP9QPLSH%197%FA8tAZQPLT/UDy0/1A8tP9QPLT/UDy0X%128%FA8tLFQPLT/UDy0/1A8tP9QPLTp%298%BQPLRKUDy0/1A8tP9QPLT/UDy0/1A8tM9SP7UB%112%UDy09VA8tP9QPLT/UDy0/1A8tKQ%5%UDy0DlA8tP9QPLT/UDy0/1A8tP9QPLSH%197%FA8tAZQPLT/UDy0/1A8tP9QPLT/UDy0X%128%FA8tLFQPLT/UDy0/1A8tP9QPLTp%293%FE9tAJQPLTLUDy0/1A8tP9QPLT/UDy0/1A8tFE%117%UDy09VA8tP9QPLT/UDy0/1A8tKQ%5%UDy0DlA8tP9QPLT/UDy0/1A8tP9QPLSH%197%FA8tAZQPLT/UDy0/1A8tP9QPLT/UDy0X%128%FA8tLFQPLT/UDy0/1A8tP9QPLTp%293%FA8tExQPLT/UDy0/1A8tP9QPLT/UDy00FE9tAM%117%UDy09VA8tP9QPLT/UDy0/1A8tKQ%5%UDy0DlA8tP9QPLT/UDy0/1A8tP9QPLSH%197%FA8tAZQPLT/UDy0/1A8tP9QPLT/UDy0X%128%FA8tLFQPLT/UDy0/1A8tP9QPLTp%293%FA8tMpQPLT/UDy0/1A8tP9QPLT/UDy0Zg%122%UDy09VA8tP9QPLT/UDy0/1A8tKQ%5%UDy0DlA8tP9QPLT/UDy0/1A8tP9QPLSH%197%FA8tAZQPLT/UDy0/1A8tP9QPLT/UDy0X%128%FA8tLFQPLT/UDy0/1A8tP9QPLTp%288%UDy0OlA8tP9QPLT/UDy0/1A8tP9QPLTjUDy0Bw%122%UDy09VA8tP9QPLT/UDy0/1A8tKQ%5%UDy0DlA8tP9QPLT/UDy0/1A8tP9QPLSH%197%FA8tAZQPLT/UDy0/1A8tP9QPLT/UDy0X%128%FA8tLFQPLT/UDy0/1A8tP9QPLTp%288%UDy0sFA8tP9QPLT/UDy0/1A8tP9QPLRv%128%UDy09VA8tP9QPLT/UDy0/1A8tKQ%5%UDy0DlA8tP9QPLT/UDy0/1A8tP9QPLSH%197%FA8tAZQPLT/UDy0/1A8tP9QPLT/UDy0X%128%FA8tLFQPLT/UDy0/1A8tP9QPLTp%282%BQPLQyUDy0/lA8tP9QPLT/UDy0/1A8tOVQPLQI%128%UDy09VA8tP9QPLT/UDy0/1A8tKQ%5%UDy0DlA8tP9QPLT/UDy0/1A8tP9QPLSH%160%UDy0BlA8tGVQPLSaUDy0blI/tQE%10%FA8tAZQPLT/UDy0/1A8tP9QPLT/UDy0X%128%FA8tLFQPLT/UDy0/1A8tP9QPLTp%282%BQPLStUDy0/1A8tP9QPLT/UDy0/1A8tGw%133%UDy09VA8tP9QPLT/UDy0/1A8tKQ%5%UDy0CVA8tPNQPLT/UDy0/1A8tP9QPLSI%154%BQPLRMUDy04FA8tP9QPLT/UDy0/1A8tHE%10%FA8tAZQPLT/UDy0/1A8tP9QPLT/UDy0X%128%FA8tLFQPLT/UDy0/1A8tP9QPLTp%277%FA8tDJQPLT/UDy0/1A8tP9QPLT/UDy05lA8tAo%133%UDy09VA8tP9QPLT/UDy0/1A8tKQ%10%FA8tJ9QPLT/UDy0/1A8tP5QPLQ4%144%UDy0K1A8tL1QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tMM%10%FA8tAZQPLT/UDy0/1A8tP9QPLT/UDy0X%128%FA8tLFQPLT/UDy0/1A8tP9QPLTp%277%FA8tK5QPLT/UDy0/1A8tP9QPLT/UDy0ig%138%UDy09VA8tP9QPLT/UDy0/1A8tKQ%10%FA8tAdQPLRnUDy0iFA8tDg%138%FA8tA1QPLSVUDy09lA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tJQ%10%FA8tAZQPLT/UDy0/1A8tP9QPLT/UDy0X%128%FA8tLFQPLT/UDy0/1A8tP9QPLTrUT61AQ%266%UDy0HFA8tPZQPLT/UDy0/1A8tP9QPLT0UDy0FQ%138%UDy09VA8tP9QPLT/UDy0/1A8tK9SP7UB%154%BRPbQCUDy0a1A8tOxQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0sVA8tB0%10%FA8tBNQPLT/UDy0/1A8tP9QPLT/UDy0X%128%FA8tLFQPLT/UDy0/1A8tP9QPLT/UDy0mlA8tAw%261%UDy0k1A8tP9QPLT/UDy0/1A8tP9QPLSI%144%UDy09VA8tP9QPLT/UDy0/1A8tP9QPLS1UDy0Lw%143%FA8tENQPLTYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tNtQPLRY%10%BQPLQEUDy0YVA8tOtQPLT/UDy0/1A8tP9QPLT/UDy0X%128%FA8tJtQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tMNQPLQi%250%BQPLQdUDy0+FA8tP9QPLT/UDy0/1A8tPRQPLQX%144%UDy05FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0+VA8tI1QPLQL%122%BQPLQjUDy0p1A8tP5QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT1UDy0dFA8tAk%10%FA8tD1QPLTDUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0X%128%FA8tDpQPLT6UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLThUDy0QQ%244%BQPLSRUDy0/1A8tP9QPLT/UDy0/1A8tIg%149%UDy0h1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLToUDy0ZFA9tAQ%101%UDy0CVA8tIpQPLT1UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0+1A8tJ5QPLQY%10%BQPLQaUDy0qlA8tPpQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTyUDy0Iw%132%BQPLQvUDy02FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy09VA8tGs%234%FA8tBxQPLT4UDy0/1A8tP9QPLT/UDy0+1A8tBk%149%UD20BFA8tFhQPLThUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tNJQPLQ/%85%FE9tAJQPLRhUDy05lA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTCUDy0Ow%10%UDy0ClA8tHZQPLT0UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/lA8tKVQPLQi%144%UDy0E1A8tLRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP5QPLSdUDy0Bg%223%FA8tIhQPLT/UDy0/1A8tP9QPLT/UDy0pQ%164%BQPLQMUDy0e1A8tPRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT9UDy0olA8tB8%69%UDy0OlA8tMRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy04lA8tF9QPbQD%5%FI/tQFQPLRYUDy03FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTMUDy0Qg%159%FA8tARQPLSFUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0yVA8tCc%213%UDy0DlA8tOtQPLT/UDy0/1A8tP9QPLT9UDy0KQ%175%FA8tBhQPLSmUDy0/FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPNQPLSDUDy0Cg%52%BQPLSDUDy0/VA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPZQPLSKUDy0Dg%10%UDy0M1A8tLxQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy061A8tGpRPbQC%176%UDy0VFA8tPdQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tOVQPLRI%208%UDy0dlA8tP9QPLT/UDy0/1A8tP9QPLSj%192%UDy0QlA8tMhQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy05VA8tFhQPbQE%37%FA8tBtQPLT9UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT8UDy0sFA8tCE%10%FA8tBNQPLSUUDy0+lA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPdQPLSTUDy0D%192%FA8tChQPLTeUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT3UDy0cw%196%BQPLQNUDy061A8tP9QPLT/UDy0/1A8tP1QPLQr%197%FA8tAZQPLRdUDy06lA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLS8UDy0O%32%FA8tChQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tMpQPLRG%10%BQPLQGUDy0bFA8tPJQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0sFA8tCk%207%BQPLQPUDy0uFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/lA8tKZQPLQJ%186%BQPLR4UDy0/1A8tP9QPLT/UDy0/1A8tKU%213%UDy0DlA8tIZQPLT4UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0+VA8tJ5QPLQX%21%FE9tAJQPLS7UDy0/1A8tP9QPLTvUDy0alA8tAc%10%FA8tE9QPLTWUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tN9QPLRL%224%UD20A1A8tIhQPLT+UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTPUDy0I%176%FA8tAxQPLTqUDy0/1A8tP9QPLT/UDy0/1A8tDw%223%BQPLQoUDy0rlA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTvUDy0eFA8tAg%15%BQPLQMUDy0VVA8tGVQPLQR%10%BQPLQgUDy0s1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTvUDy0dFA8tAU%239%BQPLRWUDy09VA8tP9QPLT/UDy0/1A8tP9QPLT/UDy06VA8tEM%159%BRPbQCUDy0H1A8tIhQPLT/UDy0/1A8tP9QPLT/UDy0w%240%FA8tEpQPLTRUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tNdQPLRMUT20AQ%26%UDy0DlA8tIpQPLT6UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0+FA8tJ5QPLQS%256%UDy0LVA8tOFQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPpQPLRw%133%FA8tAZQPLQ6UDy0eFA8tKtQPLTnUDy0/lA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0Qg%244%BQPLQHUDy0clA8tPBQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0s1A8tC4%10%FA8tAVQPLRhUDy07VA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTEUDy0Mg%271%FA8tA5QPLSxUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0o1A8tAY%101%UDy0FVA8tFFQPLSJUDy0yVA8tPZQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT%262%FA8tBFQPLSaUDy0/FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPZQPLSNUDy0RVA8tM5QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy05VA8tFRRPbQC%282%BRPbQCUDy0f1A8tP1QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tNBQPLQZ%69%FA8tAVQPLQrUDy0YFA8tJ9QPLTdUDy0+lA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLRB%272%UDy0L1A8tLhQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPJQPLR+UDy0CQ%303%FA8tE5QPLTyUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTtUDy0Pw%42%UDy0C1A8tD9QPLR+UDy0u1A8tOhQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT+UDy041A8tHxRPrQB%282%BQPLRUUDy05FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0pVA8tCU%319%BQPLQnUDy03FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0+1A8tG4%15%BQPLQiUDy0U1A8tJBQPLTCUDy0/FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP5QPLTPUDy0lFA8tFVQPLQk%304%UDy0CFA8tHxQPLT0UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tMxQPLQ/Uj+1AQ%330%UDy0C1A8tLRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLSrUDy0oVA8tOBQPLT9UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy06lA8tL5QPLSAUDy0QVA8tA4%335%BQPLQWUDy0pVA8tPxQPLT/UDy0/1A8tP9QPLToUDy0XlA8tAQ%346%FE+tQFQPLSCUDy0/FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPtQPLTgUDy0oVA8tG5QPLQuUDy0Bg%367%FA8tDdQPLS1UDy0yVA8tJBQPLQQ%368%UDy0UlA8tO9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy091A8tMxQPLSMUDy0V1A8tBY%794%FA8tC1QPLTXUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP5QPLTqUDy0rVA8tHpQPLQ9UDy0C%821%BQPLQSUDy0tFA8tP9QPLT/UDy0/1A8tNFQPLSdUDy0X1A8tCxRPbQC%848%UT20A1A8tDpQPLRBUDy0Fg%31375%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%853%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%853%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%853%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%853%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%853%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%853%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%853%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%853%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%853%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%853%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%853%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%789%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%277%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%277%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%277%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%277%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%277%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%277%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%277%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%277%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%277%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%277%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%277%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%277%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%277%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%277%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%277%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%341%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%853%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%853%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%853%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%853%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%853%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%853%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%853%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%853%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%853%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%853%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%853%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%41162%BOO7cnUT21T1E8tW5QPLV8UDyzg087tHRRPLRiTzyzTUw5sxs%357%UECvEFE+tkJRO7RfUDyzb1E9tH5PPLSEUTy0e088tGpRPbVPUz6zJQAA/wE%415%BPPLREUTy1oVA8tOpQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTgUDu0n1I7tjg%325%Tz22KlA8tY1QPbTbUDy0/lA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tO9PPLSnUTu0UkBAvwQ%63%BQPbVTUDy06FA8tOhQPLToUDy06FA8tOhQPLToUDy01Q%282%UTy1SFA8tM9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTJUD2zQw%303%FM+syVQPLS8UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tOBRPLVrVVWqAw%52%BQPbRcUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UD207%272%EZGuQtQPLOiUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/k88s5RNM7MK%288%UDuzbE88tPdQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0xU0+siE%47%BQPbRcUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UD207%267%Uj24GVA8tNBQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTMVUS7Dw%276%BQPLRzUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tONNPLMe%42%BQPbRcUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UD207%261%BROrkWTzy011A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0yE47sQ0%266%FE9tU9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTWVSuqBg%36%BQPbRcUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UD207%256%EBAvwRQPLTCUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8s6U%261%YEC/CFA7tN9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTvUDy0yFA8tLhRPLS+UDy0z1A8tPZQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/Tzu0d%37%BQPbRcUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UD207%256%FA8s4NQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT5UDyzs088s2FQPLNATju3J049sS5QO7ZJUDyzg1A8tOBQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QOrNG%256%Tzu1Z1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UTy0q1I7tjg%26%IAAgAJROrM5UTy1nlA8tP1QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy08FVAqgw%31%BQPbM2UTy0mFE8tJhRPLSYUTy0mFE8tJhRPLSYUDy0j%251%UzmzKFA8tPpQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A9tblNPLMe%37%FVVqgNQPLRzUDy0+VA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTW%256%Tzy0t1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9RPbNl%53%E87tD1QPLTwUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tV0%325%UDy0qlA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0j%59%UT21T1A8tPxQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/Uju2O%245%BmM8wFUDy0+FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tKY%63%BOO7ROUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A7tKM%319%BQOrYjUDy0/VA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9PPbSkAAD/AQ%63%FE9tItQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0lQ%244%BMObMbUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1E8tUw%69%UD21ylA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1E8tdE%31%BJSbYHTUCzFE1AsxRNQLMUTUCzFE1AsxRNQLMUVTm4Eg%244%BQPLODUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tOpQQK8Q%69%Ek3tg5QPLTyUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/Tzy01w%244%BSPbMyUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A9szY%69%UTy0e1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tO0%31%BQPbRcUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UD207%245%BQPLTZUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A9tGk%79%BQPLSZUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0+1UrqgY%239%BSO7Y4UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/087s1c%69%UTqzOU89tKRPPbSkTz20pE89tKRPPbSkTz20pFE8tZ4%31%BQPbRcUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UD207%240%FI6tR9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09k47sQ0%79%BRPLVMUDy08FA8tPBQPLTwUDy08FA8tPBQPLTwUDy08FM5syg%239%BRPLUmUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tMKAAIAC%138%BQPbRcUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UD207%240%E88tVpQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0qQ%372%BNM7MKUDy0+lA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLWvUkC2H%133%BQPbRcUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UD207%240%FA8tYlQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UTuza%379%UDy0xVA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0+lA8ta9QPLVdVUC1G%117%BQPbRcUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UD207%240%FE8tK5QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UTqzOQ%378%Tzu1Z1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tN1QPLSmTzu0dFE+tkJVObgS%90%BQPbRcUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UD207%240%FA8tMlQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/TjuxDQ%378%VSuqBlA8tNxQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy04FE8tK5QO7N5Tz60OmYzzAU%63%BQPbRcUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UD207%240%FA8tNxQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT7%389%FE6tCxQPLTyUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPNRPLWhUDyzQ%53%BQPbRcUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UD207%240%FA8tOVQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTt%394%BRPrQpUDy01VA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tcBOPrYx%42%BQPbRcUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UD207%240%FA8tOpQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTj%400%VSuqBk88tGpQPLTjUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT5TzyzYQ%36%BQPbRcUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UD207%240%FA8tONQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTt%410%CAAIACUD2zQ088tJpQPLTeUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1E8tFU%31%BQPbRcUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UD207%240%FA8tNlQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT7%432%Uj24GVA9tVNQPbWGUDy0uFA8s+lQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPJROrkW%26%BQPbRcUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UD207%240%FA8tMNQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/STe2Dg%452%BSQLYcTzyzTVE7tIVQPLS/UDy0+lA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9PPLSE%26%BQPbRcUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UD207%240%E88tKdQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/Tz60Og%474%VUS7D1A8tGZQPLTaUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTc%26%BQPbRcUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UD207%240%FA8tX9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UD20aQ%484%BVK6oGUTy0mFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/Uj24GQ%20%BQPbRcUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UD207%240%FE9tU9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0rQ%84%BRPrZCUDy09FA8tPRQPLT0UDy09FA8tPRQPLT0UDy09FE7tFI%359%D/AU88tMRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UTqzOQ%20%BQPbRcUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UD207%240%FU5uBJQPLT9UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0+FVEuw8%79%BPPbVxUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tDM%239%BRPbVPUT20WFE9tFhRPbRYUT20WFE9tFhRPbRYTzu0PQ%79%E88tVpQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/Uj20Sw%20%BQPbRcUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UD207%245%BPPLPHUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/089tXE%79%BQO7O9UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1VEuw8%239%BQO7POUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0z%80%E4+tjFQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UTy1T%21%BQPbRcUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UD207%245%BQPbRtUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tO5RNq4T%69%E47tydQPLT8UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDyz2%245%BQPLSqUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0+VU5uBI%74%FI9tjtQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/Uj22Ow%20%BQPbRcUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UD207%245%BRNq4TUDy09VA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9RPbSxVVWqAw%58%gACAAlA8tLtQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UD20gg%244%BQPLV/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/089tHo%74%FE8tHtQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UTq5Fg%20%BQPbRcUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UD207%251%UDy1jVA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UTy1nmYzzAU%47%BVVaoDUTy0mFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/TTuyKw%244%BOPbEuUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/088tPdSO7Y4%64%TTyzHlA8tO1QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTa%26%BQPbRcUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UD207%251%UTauE1A8tOtQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1E8tdFPPrQ6%37%FA8tDNRO7TBUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QO7Os%256%UDy01VA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT0UT2zZYAAgAI%47%BQPLNAUDy041A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9PPLSE%26%BQPbRcUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UD207%256%FA8tVlQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy02k88s5FPO7R0UD21YFE8tW5QPbSPUDy0zVA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPVNPLMe%256%UD20XFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tN1QPbWGUTy1TE45sSRVPbYVUECvEFJAthxRPLM8UDyzb1A8tMJQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/088tPdMObMb%26%BQPbRcUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UD207%261%BQPLSWUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/087tWc%266%FE8tL5QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1E8tHs%31%BQPbRcUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UD207%261%BAQL8EUDy0rVA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy1f%272%FI6tR9QPLThUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/Tzy0tFVVqgM%31%BQPbRcUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UD207%267%ZjPMBVA8tJxQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPxPPbR6%282%BTPLQiUDy04VA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9RPbSxVTmqCQ%36%BQPbRcUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UD207%277%BPPLNhUDy071A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy03lE6szk%293%VT22FU89tKRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy08FE7s2gAAP8B%42%BQPbRcUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UD207%283%UTq5FlA8tY1QPLTzUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tNpRPLVrTTOzCg%308%BQPbNDUD20tVA8tPxQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tOpQPLWNVUC1G%53%BQPbRcUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UD207%293%BGRrkLUTuzW1A8s6JQPLTcUDy0/FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy09VE7tMFPPLSEUD2zQ4AAgAI%330%E47sRpQPbRtUDu0o1A8tNZQPLT9UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy08VA8tcBQPLWNTju0TmYzzAU%421%ZjPMBVBAtyBROrQsTj2xLk08sx5GRrkL%378%BVVaoDVTm4Ek0+siFRPLMvUT60KU47sRpGRrkL%40704%UDy0w1A8tOhQPLToUDy06FA8tOhQPLToUDy06FA8tOhRPbNl%74%BQPLS4UDy06FA8tOhQPLToUDy06FA8tOhQPLToUDy06%293%BQPLTDUDy06FA8tOhQPLToUDy06FA8tOhQPLToUDy06FA8tOhQPLToUDy06FA8tOhQPLToUDy06FA8tOhQPLToTzy051A8tN1QPLTLUDy0uFA9tYZSPbRLVUCqD%315%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPbTsSzy0EQ%68%BQPLTMUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%292%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy071E8tIhVPbYV%304%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDu0kg%68%BQPLTMUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%292%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9PPLTnUDyzQ%299%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0+007sis%63%BQPLTMUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%292%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/FE8tUw%293%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tLw%63%BQPLTMUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%292%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPFTObMo%288%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9RO7RS%58%BQPLTMUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%292%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLWy%288%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QO7TfYEC/C%53%BQPLTMUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%292%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0+1E8tJhRPLSYUTy0mFE8tJhRPLSYUTy0mFE8tJhQPLScUTy0rlA8tNpQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UTyzLw%282%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy1f%53%BQPLTMUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%292%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09%53%BPPrUtUTy0vlA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UD20gg%282%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09VJAthw%47%BQPLTMUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%292%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09%59%QEC/BFE8tL5QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0wg%282%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tKY%47%BQPLTMUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%292%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09%64%E49sS5QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy08g%282%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9RPLM8%42%BQPLTMUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%292%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09%69%BQO7TfUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1UrqgY%277%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP5QPLT+UDy0/1A8tP9QPLT/UDy0/1A8tP9QO7POgACAAg%36%BQPLTMUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%292%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09%69%BQPLS7UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1VAtRg%277%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPRQO7SjUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0Zg%36%BQPLTMUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%292%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09%69%BRPbSxUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1E2rhM%277%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPROO7EaUDy081A8tP9QPLT/UDy0/1A8tP9QPLT/UDy061BArx%32%BQPLTMUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%292%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09%69%BQPLTFUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/oAAgAI%277%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%5%UDuzeVA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tZ%32%BQPLTMUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%292%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09%64%ElJtgdQPLT1UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy06w%282%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%5%SUm2B1A8tN1QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPtPPbYq%26%BQPLTMUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%292%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09%64%FE7s2hQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UD20tQ%282%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%10%FE9tU9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLS6%26%BQPLTMUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%292%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09%59%UTyzPFA8tPRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UTy1e%283%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%15%BQPLS6UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UT21Tw%20%BQPLTMUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%292%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09EBAvwRAQL8EQEC/BEBAvwRAQL8EQEC/BEBAvwRgQL8IUj24GVE8tUhQO7SfUDy0/FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT9UDq2Iw%282%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%15%BPPbYqUDy0+1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy03UlJtgc%15%BQPLTMUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%292%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLSt%288%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%21%UDy1kFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/089tHo%15%BQPLTMUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%292%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPZPPbYq%288%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%21%UECvEFA8tOtQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPRMObMb%10%BQPLTMUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%292%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tGY%293%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%26%FA8tGZQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9PPbSk%10%BQPLTMUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%292%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy1fw%298%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%26%IAAgAJQO7POUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/Tz60Og%4%BQPLTMUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%292%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tO5PPLNe%304%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%31%BPO7Q9UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0zIAAgAJQPLTMUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%292%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTgUTy0iEs8tBE%309%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%37%Tzy0p1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/089tWRQPLTMUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%292%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0+VA8tXxQPLV8UDy1fFA8tXxQPLV8UDy1fFA8tXxQPLV8UDy1fFE8tHtPPLRqTz2zVE07sis%325%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%37%Tz6wHVA8tPVQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tOpQPLTaUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%292%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09%395%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%42%FA7tH1QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%292%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09%395%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%42%GBAvwhQO7TfUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%292%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09%395%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%47%BQPbVTUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%292%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09%395%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%53%UTy0vlA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%292%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09%395%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%53%Tz61LVA8tPxQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%292%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09%395%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%58%E88s5RQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%292%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09%395%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%58%FU5uBJQPLTtUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%292%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09%395%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%63%BPPLRqUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%292%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09%395%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%63%BVVaoDUDy00lA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%292%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09%395%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%69%UDyzQFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%292%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09%395%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%74%FE8tKtQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%292%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09%395%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%74%FI6tR9QPLT2UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%292%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09%39872%EBAvwRQOrUwUTy0VVE8s3JRPbR+Tzy0hFA7s3lRO7NoUDqzRkw5sxs%389%UECvEFE+tkJRO7RfUDyzb1E9tH5PPLSEUTy0e088tGpRPbVPUz6zJQAA/wE%378%FU5qglPPLVaUDyzs1A8tPNQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTeTzyzkVI6sjU%357%Tz22KlA8tY1QPbTbUDy0/lA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tO9PPLSnUTu0UkBAvwQ%351%BmM8wFUTyzclA8tOhQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9RO7TBTzu0PQ%335%FM+syVQPLS8UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tOBRPLVrVVWqAw%335%FI9szJQPLTTUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/lE7s5tNM7MK%320%UDuzbE88tPdQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0xU0+siE%325%UDy1WVA8tPZQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9RPLXRUjq1Hw%308%BQPLRzUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tONNPLMe%314%BPPLNhUDy0/lA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy04E0+siE%298%FE9tU9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTWVSuqBg%303%FE8tUxQPLT9UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A9tNtLPLQR%288%YEC/CFA7tN9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTvUDy0yFA8tLhRPLS+UDy0z1A8tPZQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/Tzu0d%299%UDq2I1A8tPFQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLThUDy0jFE9tU9QPbM2Tju3J1E9sj9QPLVdUDy0qVA8tPRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLS4%288%Tzu1Z1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UTy0q1I7tjg%26%IAAgAJROrM5UTy1nlA8tP1QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy08FVAqgw%290%P8BUTu0wVA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy07k89tWQAAP8B%37%FVEuw9PPLSaUDy0/lA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/Tzu1Zw%282%Tzy0t1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9RPbNl%53%E87tD1QPLTwUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tV0%287%BQPbRcUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTaTDmzGw%58%TzyzUVA8tPtQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy07lBArx%272%BmM8wFUDy0+FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tKY%63%BOO7ROUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A7tKM%282%FVVqgNQPLTdUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tOBSQLYc%69%FE8tFVQPLT+UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8s4M%271%BMObMbUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1E8tUw%69%UD21ylA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1E8tdE%282%FE9tU9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/047tEE%79%BPPLSaUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tOpVK6oG%266%BSPbMyUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A9szY%69%UTy0e1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tO0%282%FE9tLFQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UTy1ng%84%BQQK8QUDy06lA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPbVT%266%BSO7Y4UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/087s1c%69%UTqzOU89tKRPPbSkTz20pE89tKRPPbSkTz20pFE8tZ4%277%VTmqCVA8tPZQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/Tz22Kg%90%Tzyzh1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9RPLWh%266%BRPLUmUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tMKAAIAC%384%UTu1RVA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9PPLTE%96%TjmxJFA8tP5QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTm%266%BNM7MKUDy0+lA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLWvUkC2H%379%Tz20elA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QO7N5%101%FA8tNVQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/TjuxGg%266%UDy0xVA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0+lA8ta9QPLVdVUC1G%363%UDyzpVA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPbND%101%FA8s6JQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/Tz20Rw%266%Tzu1Z1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tN1QPLSmTzu0dFE+tkJVObgS%336%Tzy0xFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9LPLQR%101%FA8s29QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UT2zZQ%266%VSuqBlA8tNxQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy04FE8tK5QO7N5Tz60OmYzzAU%309%UDy02lA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPw%106%FA8tVlQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UT20fg%271%FE6tCxQPLTyUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPNRPLWhUDyzQ%299%UTy05FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tO0%106%FA7tklQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy1iQ%276%BRPrQpUDy01VA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tcBOPrYx%288%UDyz6VA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1E8tOQ%106%FE8szxQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/TzyzkQ%282%VSuqBk88tGpQPLTjUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT5TzyzYQ%282%UDy14lA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPI%106%FE8tUhQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UT20iw%292%CAAIACUD2zQ088tJpQPLTeUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1E8tFU%277%UDy01lA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP5VVaoD%101%FA8tVlQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDyzg%315%Uj24GVA9tVNQPbWGUDy0uFA8s+lQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPJROrkW%272%UDy0u1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9NPLMe%101%FA8tHNQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0Zg%340%BSQLYcTzyzTVE7tIVQPLS/UDy0+lA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9PPLSE%272%Tzy0mlA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9PPbNU%101%FA8tKlQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDqzRg%362%VUS7D1A8tGZQPLTaUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTc%272%Tzy0alA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLSM%101%FA8tOFQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UTq5Fg%372%BVK6oGUTy0mFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/Uj24GQ%266%Uj2zMlA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLXigACAAg%90%Tz60OlA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTe%386%D/AU88tMRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UTqzOQ%268%D/AVA8tOZQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/TzuzSg%90%UDu0o1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9PPLOU%266%BRPbVPUT20WFE9tFhRPbRYUT20WFE9tFhRPbRYTzu0PQ%79%E88tVpQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/Uj20Sw%271%E88s5RQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0zFVVqgM%79%BOPbEuUDy0+lA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLN%267%BQO7POUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0z%80%E4+tjFQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UTy1T%272%FE8sy9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/087tHQ%74%FVVqgNQPLTMUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8s9g%271%BQPLSqUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0+VU5uBI%74%FI9tjtQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/Uj22Ow%276%BQPbW5UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPpPPLNN%64%gACAAlA7tKNQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/088s2E%271%BQPLV/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/089tHo%74%FE8tHtQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UTq5Fg%276%BOO7U0UDy0/VA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT5UTuzWw%52%BOO7ENUDyzpVA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UTy01FVVqgM%271%BOPbEuUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/088tPdSO7Y4%64%TTyzHlA8tO1QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTa%288%UDu0klA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A9tLVSOrI1%32%VTmqCVE7s1tQPLTjUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT9Uju2O%283%UDy01VA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT0UT2zZYAAgAI%47%BQPLNAUDy041A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9PPLSE%288%TTOzClA8tNJQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy03VA8s6JRPLSIUTy0e088s5FRPbSxUDy09FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLO%289%UD20XFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tN1QPbWGUTy1TE45sSRVPbYVUECvEFJAthxRPLM8UDyzb1A8tMJQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/088tPdMObMb%293%E0+siFQPLPpUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tK0AAP8B%293%FE8tL5QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1E8tHs%303%BNO7IrUDyz6VA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/Tzy0tFUrqgY%298%FI6tR9QPLThUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/Tzy0tFVVqgM%309%TT6yIVE8tdFQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9PPbWXZjPMBQ%308%BTPLQiUDy04VA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9RPbSxVTmqCQ%319%FU5qglRPbSLUDy0/FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/Tzy051A9tVM%325%VT22FU89tKRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy08FE7s2gAAP8B%336%Tju3J1A9tKBQPLT4UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tOZRPLV4TjuxDQ%340%BQPbNDUD20tVA8tPxQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tOpQPLWNVUC1G%357%BQQK8QTzyzYU89tKRQPLTcUDy0/FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy09VA8tMxQPLWQUDqzRlVVqgM%362%E47sRpQPbRtUDu0o1A8tNZQPLT9UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy08VA8tcBQPLWNTju0TmYzzAU%389%ZjPMBVI6tR9NO7IrTj62MU47tydON7EX%410%BVVaoDVTm4Ek0+siFRPLMvUT60KU47sRpGRrkL%39354%BOO7cnUT21T1E8tW5QPLV8UDyzg087tHRRPLRiTzyzTUw5sxs%831%BPPLREUTy1oVA8tOpQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTgUDu0n1I7tjg%69%TzyzkVA8tOhQPLToUDy06FA8tOhQPLToUDy06FE8tJg%255%BQPLTDUDy06FA8tOhQPLToUDy06FA8tOhQPLToUDy06FA8tOhQPLToUDy06FA8tOhQPLToUDy06FA8tOhQPLToUDy06FA8tOhQPLToUDy06FA8tOhQPLToUDy06FA8tOhQPLToUDy06FA9tLU%293%UTy1SFA8tM9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTJUD2zQw%58%UD20oFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A9tag%255%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tMg%282%EZGuQtQPLOiUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/k88s5RNM7MK%48%UD20oFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A9tag%255%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tMg%277%Uj24GVA8tNBQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTMVUS7Dw%42%UD20oFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A9tag%255%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tMg%271%BROrkWTzy011A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0yE47sQ0%37%UD20oFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A9tag%255%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tMg%266%EBAvwRQPLTCUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8s6U%37%UD20oFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A9tag%255%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tMg%266%FA8s4NQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT5UDyzs088s2FQPLNATju3J049sS5QO7ZJUDyzg1A8tOBQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QOrNG%32%UD20oFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A9tag%255%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0+1E8tJhRPLSYUTy0mFE8tJhRPLSYUTy0mFE8tJhRPLSYUTy0mFE8tJhRPLSYUTy0mFE8tJhRPLSYUTy0mFE8tJhRPLSYUTy0mFA9s3Y%261%UzmzKFA8tPpQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A9tblNPLMe%37%FVVqgNQPLRzUDy0+VA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTW%32%UD20oFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A9tag%255%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09%363%UDy0qlA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0j%59%UT21T1A8tPxQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/Uju2O%27%UD20oFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A9tag%255%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09%357%BQOrYjUDy0/VA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9PPbSkAAD/AQ%63%FE9tItQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0lQ%26%UD20oFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A9tag%255%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09%357%BQPLODUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tOpQQK8Q%69%Ek3tg5QPLTyUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/Tzy01w%26%UD20oFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A9tag%255%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09%357%BQPLTZUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A9tGk%79%BQPLSZUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0+1UrqgY%21%UD20oFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A9tag%255%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09%352%FI6tR9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09k47sQ0%79%BRPLVMUDy08FA8tPBQPLTwUDy08FA8tPBQPLTwUDy08FM5syg%21%UD20oFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A9tag%255%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09%352%E88tVpQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0qQ%154%UD20oFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A9tag%255%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09%352%FA8tYlQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UTuza%155%UD20oFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A9tag%255%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09%352%FE8tK5QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UTqzOQ%154%UD20oFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A9tag%255%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/VE8tNRRPLTUUTy01FE8tNRRPLTUUTy01FE8tNRRPLTUUTy01FE8tNRRPLTUUTy01FE8tNRRPLTUUTy01FE8tNRQPLRz%261%FA8tMlQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/TjuxDQ%154%UD20oFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A9tag%255%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLSM%261%FA8tNxQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT7%160%UD20oFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A9tag%255%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLSM%261%FA8tOVQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTt%160%UD20oFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A9tag%255%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLSM%261%FA8tOpQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTj%160%UD20oFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A9tag%255%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLSM%261%FA8tONQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTt%160%UD20oFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A9tag%255%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLSM%261%FA8tNlQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT7%160%UD20oFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A9tag%255%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/FA7s6xQO7OsUDuzrFA7s6xQO7OsUDuzrFA7s6xQO7OsUDuzrFA7s6xQO7OsUDuzrFA7s6xQO7OsUDuzrFA7s6xPPLNe%261%FA8tMNQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/STe2Dg%154%UD20oFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A9tag%255%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09%352%E88tKdQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/Tz60Og%154%UD20oFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A9tag%255%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09%352%FA8tX9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UD20aQ%154%UD20oFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A9tag%255%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09%352%FE9tU9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0rQ%84%BRPrZCUDy09FA8tPRQPLT0UDy09FA8tPRQPLT0UDy09FE7tFI%21%UD20oFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A9tag%255%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09%352%FU5uBJQPLT9UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0+FVEuw8%79%BPPbVxUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tDM%21%UD20oFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A9tag%255%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09%357%BPPLPHUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/089tXE%79%BQO7O9UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1VEuw8%21%UD20oFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A9tag%255%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09%357%BQPbRtUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tO5RNq4T%69%E47tydQPLT8UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDyz2%27%UD20oFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A9tag%255%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09%357%BRNq4TUDy09VA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9RPbSxVVWqAw%58%gACAAlA8tLtQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UD20gg%26%UD20oFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A9tag%255%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09%363%UDy1jVA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UTy1nmYzzAU%47%BVVaoDUTy0mFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/TTuyKw%26%UD20oFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A9tag%255%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09%363%UTauE1A8tOtQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1E8tdFPPrQ6%37%FA8tDNRO7TBUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QO7Os%32%UD20oFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A9tag%255%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09%368%FA8tVlQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy02k88s5FPO7R0UD21YFE8tW5QPbSPUDy0zVA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPVNPLMe%32%UD20oFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A9tag%255%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09%373%BQPLSWUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/087tWc%37%UD20oFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A9tag%255%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09%373%BAQL8EUDy0rVA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy1f%43%UD20oFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A9tag%255%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09%379%ZjPMBVA8tJxQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPxPPbR6%48%UD20oFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A9tag%255%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09%389%BPPLNhUDy071A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy03lE6szk%53%UD20oFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A9tag%255%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09%395%UTq5FlA8tY1QPLTzUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tNpRPLVrTTOzCg%58%UD20oFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A9tag%255%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09%405%BGRrkLUTuzW1A8s6JQPLTcUDy0/FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy09VE7tMFPPLSEUD2zQ4AAgAI%837%ZjPMBVBAtyBROrQsTj2xLk08sx5GRrkL%40650%BQPLTDUDy06FA8tOhQPLToUDy06FA8tOhQPLToUDy06FA8tOhQPLToUDy06FA8tOhQPLToUDy06FA8tOhQPLToUDy06FA8tONQPLPYUDy0v1E7s5tRPLRiVUC1G%443%UDy0w1A8tOhQPLToUDy06FA8tOhQPLToUDy06FA8tN0%287%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/U88tLRROrM5%432%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%287%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT+UTy0mFUrqgY%421%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%287%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A9tLVVVaoD%416%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%287%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9RPLR7%416%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%287%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT5UTy1Jg%410%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%287%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0+1E8tJhRPLSYUTy0mFE8tJhRPLSYUTy0mFE8tJhRPLSYTzy0mlA9tahQPLTNUDy0/VA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UTy1ng%410%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%287%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09%59%UkC2HFA8tKlQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09mBAvwg%405%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%287%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09%67%/wFQPbS1UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/047tEE%405%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%287%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09%69%BOO7RBUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/088s2E%31%BVQKoMTUCzFE1AsxRNQLMUTUCzFE1AsxRNQLMUTjuxDQ%20%BAQL8EUD2zQ1A9s3ZPPLOHUTq0L%283%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%287%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09%69%BVPbYVUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1E7s2g%31%BQPbSgUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UD21q%16%E88s2FRPLTkUDy0/1A8tP9QPLT/UT20W%283%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%287%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09%69%BOO7EaUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/047tE4%31%BQPbSgUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UD21q%5%BVK6oGUDyzpVA8tP9QPLT/UDy0/1A8tP9QPLT/UT20W%283%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%287%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09%69%BRO7RSUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/FE6uRY%31%BQPbSgUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UD21q%5%BRPLWhUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UT20W%283%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%287%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09%64%FVAqgxRPLXRUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDuzr%37%BQPbSgUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UD21qFE9tFhQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UT20W%283%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%287%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09%53%BGRrkLUD21U1A8tNVQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTxUzy0Ig%36%BQPbSgUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0rVA8teJQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UT20W%283%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%287%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/VE8tNRRPLTUUTy01FE8tNRRPLTUUTy01FE8tNRRPLTUUDy01VA8tONQPLT9UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/088tPdQOrNG%42%BQPbSgUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UT20W%283%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%287%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDyz6VE8szw%47%BQPbSgUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPxRPLXRUDy0ulA9tLVQPLTJUTy1T%283%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%287%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLS4VUC1G%53%BQPbSgUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTyUDu0cEk3tg4%309%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%287%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9RPLTkTzyzTQ%52%BQPbSgUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPFNO7Ir%320%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%287%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tIyAAIAC%42%BQPbSgUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/088tGo%325%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%287%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLOlVVWqAw%36%BQPbSgUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0+U0zswo%325%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%287%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/FA7s6xQO7OsUDuzrFA7s6xQO7OsUDuzrFA7s6xQO7OsUDuzrFA7tLBRO7TBUD207FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UT20iw%36%BQPbSgUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0yQ%330%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%287%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09%61%D/AVA9s0NQPLTSUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/087tD0%31%BQPbSgUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UT20sQ%330%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%287%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09%69%BJN7YOUDy01lA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tMI%31%BQPbSgUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UD21q%331%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%287%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09%75%Tz2zVFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9TPLQi%26%BQPbSgUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UD21q%331%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%287%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09%75%UECvEFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9PPLNe%26%BQPbSgUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UD21q%331%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%287%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09%80%FA8tPlQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLV8%26%BQPbSgUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UD21q%331%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%287%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09%75%YEC/CFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9RPbR+%26%BQPbSgUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UD21q%331%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%287%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09%75%Tju0QVA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPbRp%26%BQPbSgUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UD21q%331%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%287%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09%69%CAAIACUDuzvVA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9ROrM5%26%BQPbSgUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UD21q%331%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%287%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy09%64%FI9uBlRPLSuUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPBAQL8E%26%BQPbSgUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UD21q%331%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%287%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0+lA8s4BQPLOAUDyzgFA8s4BQPLOAUDyzgFA8s4BQPLOAUDyzgFA8s4NQPbSTUDy1wFA8tPtQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1E9tIs%31%BQPbSgUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UD21q%331%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%287%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy08k47sRo%31%BQPbSgUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UD21q%331%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%287%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDu0Yw%36%BQPbSgUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UD21q%331%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%287%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLSd%42%BQPbSgUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UD21q%331%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%287%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0+087tIGAAIAC%42%BQPbSgUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UD21q%331%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%287%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPpQPLSmTz22Kg%52%BQPbSgUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UD21q%331%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%287%BQPLPYUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP1QPLT1UDy041A8tMVPPbWXUD20XEs8tBE%63%BQPbSgUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UD21q%331%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%41055%BLPLQRUD21U1A8s4BQPLSdUDy0qlA8s6VPPLORUTy0e1E7tUVNM7MK%448%UDy0w1A8tOhQPLToUDy06FA8tOhQPLToUDy06FA8tN0%74%Ek3tg5QPLToUDy06FA8tOhQPLToUDy06FA8tOhQPLToUD20tQ%218%Tj61PlA7tLBQPLT8UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT6UDu0sFI7tjg%437%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%74%FBArxBQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0y%208%FE6uRZQPbWoUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QO7SwVTm4Eg%426%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%74%FBArxBQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0y%203%Uzy0IlA8tN1QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy04VI9szI%421%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%74%FBArxBQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0y%197%BRNq4TUDy04VA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tOpQOrYj%416%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%74%FBArxBQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0y%197%BQO7SfUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTZYEC/C%411%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%74%FBArxBQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0y%192%FE8tSZQPLT9UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP1QPLS7UTu0hVE9tH5PPLSnUDy08lA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UTy1e%411%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%74%FBArxBQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0y%192%FE7tI5QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy03FA8tDM%21%VT22FVA8tbJQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy08UZGuQs%405%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%74%FBArxBQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0y%192%FA7tN9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLToUkC2H%32%FVVqgNQPLS6UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1E9tU8%405%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%74%FBArxBQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0y%187%UkC2HFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9PO7NX%42%BNPLMeUDy0+lA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tJk%405%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%74%FBArxBQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0y%187%UT20WFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8teKAAIAC%48%Tzy0tFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1E8tL4%405%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%74%FBArxBQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0y%187%Tz20elA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1E8tZ4%53%UDyzgFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tNU%405%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%74%FBArxBQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0y%187%UTu0jlA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1E8tXg%53%UDy0c1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tOM%405%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%74%FBArxBQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0y%187%UDu0n1A8tPxQPLT8UDy0/FA8tPxQPLT8UDy0/E87tWc%53%UD20k1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tNY%405%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%74%FBArxBQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0y%277%CAAIACUDy02VA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A9tLU%405%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPxQPLS4UDy0uFA8tLhQPLS4UDy0uFA8tLhQPLS4UDy0uFA8tLhQPLS4UDy0uFA8tLhQPLS4UDy0uFA8tLxQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0y%277%BPPLNeUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8s4%406%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0y%272%E8+tS1QPLTzUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1E6tCw%405%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0y%267%Tju1NFA8tOtQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDu0s%411%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0y%261%BRPLVMUDy09FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLPpUj24GQ%410%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0y%256%FA9tG1QPLT8UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tO9QOrUw%416%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0y%251%Tzy0d1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy04VE6tCw%421%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP1QPLTIUDy0yFA8tMhQPLTIUDy0yFA8tMhQPLTIUDy0yFA8tMhQPLTIUDy0yFA8tMhQPLTIUDy0yFA8tMhQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0y%245%BRPbVPUDy0/lA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLS7TjexFw%426%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%74%EBAvwRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0y%240%FU5qglQPLThUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/FA7tH2AAIAC%432%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%74%EBAvwRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0y%240%FA9tG1QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLTvUD2zQw%442%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%74%EBAvwRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0y%240%FA8tMJQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPZQPLQz%448%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%74%EBAvwRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0y%235%Rka5C1A8tP1QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tZ%454%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%74%EBAvwRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0y%235%Uz6zJVA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A9tVM%453%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%74%EBAvwRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0y%235%UTyzPFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1E6szk%453%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%74%EBAvwRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0y%235%Uz6zJVA8tIxQPLSMUDy0jFA8tIxQPLSMUDy0jEw5sxs%453%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%74%EBAvwRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0y%731%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%74%EBAvwRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0y%731%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%74%EBAvwRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0y%235%UD2zdlE8tJhRPLSYUTy0mFE8tJhRPLSYUTy0mFE8tJiAAIAC%69%E87tD1RPLSYUTy0mFE8tJhRPLSYUTy0mFE8tJhRPLSYTzu0PQ%20%BPO7Q9UTy0mFE8tJhRPLSYUTy0mFE8tJhRPLSYUTy0mE87tD0%21%Tzu0PVE8tJhRPLSYUTy0mFE8tJhRPLSYUTy0mFE8tJhPO7Q9%192%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%74%EBAvwRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0y%235%UDy0yFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9AQL8E%69%FE7s2hQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UTuza%21%BRO7NoUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1E7s2g%21%UTuzaFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9RO7No%192%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%74%EBAvwRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0y%235%UDy0yFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9AQL8E%69%FE7s2hQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UTuza%21%BRO7NoUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1E7s2g%21%UTuzaFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9RO7No%192%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%74%EBAvwRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0y%235%UDy0yFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9AQL8E%69%FE7s2hQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UTuza%21%BRO7NoUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1E7s2g%21%UTuzaFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9RO7No%192%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%74%EBAvwRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0y%235%UDy0yFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9AQL8E%69%FE7s2hQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UTuza%21%BRO7NoUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1E7s2g%21%UTuzaFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9RO7No%192%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%74%EBAvwRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0y%235%UDy0yFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9AQL8E%69%FE7s2hQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UTuza%21%BRO7NoUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1E7s2g%21%UTuzaFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9RO7No%192%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%74%EBAvwRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0y%235%UDy0yFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9AQL8E%69%FE7s2hQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UTuza%21%BRO7NoUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1E7s2g%21%UTuzaFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9RO7No%192%UDyz2FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tPQ%74%EBAvwRQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0y%235%UDy0yFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9AQL8E%69%FE7s2hQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UTuza%21%BRO7NoUDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1E7s2g%21%UTuzaFA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9RO7No%20656%\")):T._ib(e,SD)?new R.Z2(_.o1(t,84,252,\"%2549%P8AAO7/AAD/%432%/wAA3P8AAP//AAD//wAA/w%420%D/AACt/wAA//8AAP//AAD//wAA//8AAP8%163%D/%250%D/AAD//wAA//8AAP//AAD//wAA//8AAP//AAD/%158%D/%4%/w%239%P8AAPz/AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA/w%152%D/%4%/wAAAP8%229%/wAA6/8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP8%147%D/%4%/wAAAP8AAAD/%218%D/AAC9/wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD/%142%D/%4%/wAAAP8AAAD/%4%/w%207%P8AAI//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA/w%136%D/%4%/wAAAP8AAAD/%4%/wAAAP8%202%P8AAPz/AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP8%131%D/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%192%/wAA7P8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD/%126%D/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%4%/w%180%D/AADN/wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA/w%120%D/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%4%/wAAAP8%170%P8AAJ7/AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP8%115%D/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%165%P8AAP7/AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD/%110%D/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%4%/w%154%/wAA7v8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA/w%104%D/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%4%/wAAAP8%143%D/AADc/wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP8%99%D/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%133%P8AAK3/AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD/%94%D/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%4%/w%127%P8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA/w%88%D/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%128%/wAA/P8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP8%83%D/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%4%/wAAAP8%127%D/AADr/wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD/%78%D/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%4%/w%127%P8AAL3/AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA/w%72%D/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%133%P8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA6w%72%D/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%4%/wAAAP8%133%/wAA/P8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP7/AACt%78%D/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%4%/w%132%D/AADs/wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA3%89%D/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%133%P8AAM3/AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAPw%99%D/%4%/wAAAP8AAAD/%4%/wAAAP8%138%P8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA3%105%D/%4%/wAAAP8AAAD/%4%/w%138%/wAA/v8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAPs%115%D/%4%/wAAAP8AAAD/%138%D/AADu/wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAzQ%120%D/%4%/wAAAP8%138%P8AANz/AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAPs%131%D/%4%/w%138%/wAArf8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAvg%136%D/%144%/wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAO4%287%D/AAD8/wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAvQ%287%P8AAOv/AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAOs%293%/wAAvf8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD+%304%/wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAOs%303%D/AAD8/wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD8%309%P8AAOz/AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AANw%309%/wAAzf8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD7%320%/wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAM0%319%D/AAD+/wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD7%325%P8AAO7/AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAL4%325%/wAA3P8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AADu%336%/wAA//8AAP//AAD//wAA//8AAP//AAD/UDy0/1A8tP9QPLT/UDy0/1A8tP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAL0%335%D/AAD//wAA//8AAP//AAD//wAA//8AAP//AAD/UDy0/1A8tP9QPLT/UDy0/1A8tP//AAD//wAA//8AAP//AAD//wAA//8AAP//AADr%341%P8AAPz/AAD//wAA//8AAP//AAD//wAA//8AAP//AAD/UDy0/1A8tP9QPLT/UDy0/1A8tP//AAD//wAA//8AAP//AAD//wAA/g%346%/wAA6/8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD/UDy0/1A8tP9QPLT/UDy0/1A8tP//AAD//wAA//8AAP//AADr%352%/wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD/UDy0/1A8tP9QPLT/UDy0/1A8tP//AAD//wAA/%357%D/AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD/UDy0/1A8tP9QPLT/UDy0/1A8tP//AADc%357%P8AAPz/AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD/UDy0/1A8tP9QPLT/UDy0/1A8tP8%325%UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD/UDy0/1A8tP9QPLT/UDy0/1A8tP8%15%BQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP8%79%BQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%144%UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD/UDy0/1A8tP9QPLT/UDy0/1A8tP8%10%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%58%UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%122%BQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP//AAD//wAA//8AAP//AAD//wAA//8AAP//AADNUDy0/1A8tP9QPLT/UDy0/1A8tP8%5%UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP8%47%BQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%111%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP//AAD//wAA//8AAP//AAD//wAA7g%10%UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%37%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP8%106%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT//wAA//8AAP8%21%UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%32%UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP8%5%UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%96%UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%5%P8AABH/AAD//wAA//8AAP//AAD/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT//wAA7%27%UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP8%21%UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%26%UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%32%UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%96%UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%5%P8AABH/AAD//wAA//8AAP//AAD//wAA/1A8tP9QPLT/UDy0/1A8tP9QPLT/%32%UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%31%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%26%UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%37%FA8tP9QPLT/UDy0/1A8tP9QPLT/%96%UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%10%D/AAAD/wAA//8AAP//AAD//wAA/1A8tP9QPLT/UDy0/1A8tP9QPLT/%32%UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%42%BQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP8%21%UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%208%/wAAA/8AAP//AAD/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%32%UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%42%BQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP8%21%UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%181%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%32%UDy0/1A8tP9QPLT/UDy0/1A8tP8%47%BQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP8%21%UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%144%UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%32%UDy0/1A8tP9QPLT/UDy0/1A8tP8%53%UDy0/1A8tP9QPLT/UDy0/1A8tP8%26%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%116%BQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%32%UDy0/1A8tP9QPLT/UDy0/1A8tP8%53%UDy0/1A8tP9QPLT/UDy0/1A8tP8%31%BQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP8%106%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%15%FA8tP9QPLT/UDy0/1A8tP9QPLT/%32%UDy0/1A8tP9QPLT/UDy0/1A8tP8%53%UDy0/1A8tP9QPLT/UDy0/1A8tP8%42%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%96%UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%31%FA8tP9QPLT/UDy0/1A8tP9QPLT/%32%UDy0/1A8tP9QPLT/UDy0/1A8tP8%47%BQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP8%63%BQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%90%UDy0/1A8tP9QPLT/UDy0/1A8tP8%42%FA8tP9QPLT/UDy0/1A8tP9QPLT/%32%UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%42%BQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP8%79%BQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%90%UDy0/1A8tP9QPLT/UDy0/1A8tP8%37%UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%32%UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%42%BQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP8%90%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%90%UDy0/1A8tP9QPLT/UDy0/1A8tP8%37%UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%32%UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%31%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%20%BQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP8%42%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%90%UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%26%BQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%32%UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP8%21%UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%20%BQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%37%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%90%UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%32%UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%32%UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%96%UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%32%UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%32%UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%101%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%5%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%26%UDy0/1A8tP9QPLT/UDy0/1A8tP8%5%UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP8%42%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP8%111%BQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP8%10%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%26%UDy0/1A8tP9QPLT/UDy0/1A8tP8%10%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%52%BQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%127%FA8tP9QPLT/UDy0/1A8tP9QPLT/%122%BQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP8%79%BQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%6208%D/AP8A/wD/%433%P8A/wD/AP8A/wD/AP8A/w%422%/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8%163%D/%252%/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/%158%D/%4%/w%240%D/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/w%152%D/%4%/wAAAP8%230%P8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8%147%D/%4%/wAAAP8AAAD/%220%/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/%142%D/%4%/wAAAP8AAAD/%4%/w%208%D/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/w%136%D/%4%/wAAAP8AAAD/%4%/wAAAP8%203%D/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8%131%D/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%193%P8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/%126%D/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%4%/w%182%/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/w%120%D/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%4%/wAAAP8%171%D/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8%115%D/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%166%D/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/%110%D/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%4%/w%155%P8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/w%104%D/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%4%/wAAAP8%145%/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8%99%D/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%134%D/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/%94%D/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%4%/w%128%D/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/w%88%D/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%129%P8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8%83%D/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%4%/wAAAP8%129%/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/%78%D/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%4%/w%128%D/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/w%72%D/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%134%D/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/w%72%D/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%4%/wAAAP8%134%P8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/%78%D/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%4%/w%134%/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/w%88%D/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%134%D/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8%99%D/%4%/wAAAP8AAAD/%4%/wAAAP8%139%D/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/w%104%D/%4%/wAAAP8AAAD/%4%/w%139%P8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8%115%D/%4%/wAAAP8AAAD/%140%/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/w%120%D/%4%/wAAAP8%139%D/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8%131%D/%4%/w%139%P8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/w%136%D/%145%P8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8%289%/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/w%288%D/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8%294%P8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/%305%P8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8%305%/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/%310%D/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8%310%P8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/%321%P8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8%321%/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/%326%D/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8%326%P8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/%337%P8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8%63%BQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP8%241%/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/%64%UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%224%D/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/w%68%BQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP8%214%P8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/%69%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP8%214%P8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/w%79%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%4%BQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%204%/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/%80%UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%21%FA8tP9QPLT/UDy0/1A8tP9QPLT/%198%D/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/w%90%UDy0/1A8tP9QPLT/UDy0/1A8tP8%26%FA8tP9QPLT/UDy0/1A8tP9QPLT/%193%P8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/%96%UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%21%FA8tP9QPLT/UDy0/1A8tP9QPLT/%188%/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/w%106%UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%21%FA8tP9QPLT/UDy0/1A8tP9QPLT/%188%/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/%117%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%10%UDy0/1A8tP9QPLT/UDy0/1A8tP8%187%D/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/w%127%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%187%P8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8%143%BQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%182%/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/w%154%UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP8%193%/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8%159%BQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%203%P8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/w%159%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP8%26%FA8tP9QPLT/UDy0/1A8tP9QPLT/%150%D/AP8A/wD/AP8A/wD/AP8%165%UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%21%FA8tP9QPLT/UDy0/1A8tP9QPLT/%156%/wD/AP8A/w%164%BQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%15%FA8tP9QPLT/UDy0/1A8tP8%330%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%15%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP8%5%UDy0/1A8tP9QPLT/UDy0/1A8tP8%330%FA8tP9QPLT/UDy0/1A8tP9QPLT/%26%BQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP8%5%UDy0/1A8tP9QPLT/UDy0/1A8tP8%325%UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%32%UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP8%325%UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%37%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%330%UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%37%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%330%UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%42%BQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%336%UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%36%BQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%341%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP8%21%UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%335%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP8%335%BQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%336%UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP8%5%UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%335%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%21%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%351%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%6242%//8AAP//%434%D//wAA//8AAP//AAD//w%423%P//AAD//wAA//8AAP//AAD//wAA//8%163%D/%253%P//AAD//wAA//8AAP//AAD//wAA//8AAP//%158%D/%4%/w%242%//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//w%152%D/%4%/wAAAP8%231%D//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8%147%D/%4%/wAAAP8AAAD/%221%P//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//%142%D/%4%/wAAAP8AAAD/%4%/w%210%//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//w%136%D/%4%/wAAAP8AAAD/%4%/wAAAP8%205%//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8%131%D/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%194%D//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//%126%D/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%4%/w%183%P//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//w%120%D/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%4%/wAAAP8%173%//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8%115%D/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%168%//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//%110%D/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%4%/w%156%D//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//w%104%D/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%4%/wAAAP8%146%P//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8%99%D/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%136%//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//%94%D/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%4%/w%130%//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//w%88%D/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%130%D//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8%83%D/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%4%/wAAAP8%130%P//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//%78%D/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%4%/w%130%//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//w%72%D/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%136%//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//w%72%D/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%4%/wAAAP8%135%D//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//%78%D/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%4%/w%135%P//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//w%88%D/%4%/wAAAP8AAAD/%4%/wAAAP8AAAD/%136%//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8%99%D/%4%/wAAAP8AAAD/%4%/wAAAP8%141%//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//w%104%D/%4%/wAAAP8AAAD/%4%/w%140%D//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8%115%D/%4%/wAAAP8AAAD/%141%P//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//w%120%D/%4%/wAAAP8%141%//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8%131%D/%4%/w%140%D//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//w%136%D/%146%D//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8%290%P//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//w%290%//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8%295%D//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//%306%D//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8%306%P//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//%312%//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8%311%D//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//%322%D//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8%322%P//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//%328%//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8%327%D//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//%338%D//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8%338%P//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//%344%//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//w%348%D//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//%354%D//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//w%359%P//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//%360%//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//w%364%D//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//%48%UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%63%FA8tP9QPLT/UDy0/1A8tP9QPLT/%21%FA8tP9QPLT/UDy0/w%151%P//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//w%42%UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%53%FA8tP9QPLT/UDy0/1A8tP9QPLT/%10%BQPLT/UDy0/1A8tP9QPLT/UDy0/w%151%P//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//%42%BQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%47%FA8tP9QPLT/UDy0/1A8tP9QPLT/%5%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%146%//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//w%47%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP8%42%FA8tP9QPLT/UDy0/1A8tP9QPLT/%5%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%140%D//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8%53%UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%37%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%135%P//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//w%58%UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%26%UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%31%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%135%P//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8%63%BQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%37%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%31%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP8%167%D//wAA//8AAP//AAD//wAA//8AAP//AAD//w%68%BQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP8%47%BQPLT/UDy0/1A8tP9QPLT/UDy0/w%31%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%178%//8AAP//AAD//wAA//8%79%BQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP8%47%BQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP8%26%FA8tP9QPLT/UDy0/1A8tP9QPLT/%189%P//AAD//w%84%BQPLT/UDy0/1A8tP9QPLT/UDy0/w%52%BQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP8%26%FA8tP9QPLT/UDy0/1A8tP9QPLT/%282%BQPLT/UDy0/1A8tP9QPLT/UDy0/w%52%BQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP8%26%FA8tP9QPLT/UDy0/1A8tP9QPLT/%282%BQPLT/UDy0/1A8tP9QPLT/UDy0/w%52%BQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP8%26%FA8tP9QPLT/UDy0/1A8tP9QPLT/%282%BQPLT/UDy0/1A8tP9QPLT/UDy0/w%52%BQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP8%26%FA8tP9QPLT/UDy0/1A8tP9QPLT/%282%BQPLT/UDy0/1A8tP9QPLT/UDy0/w%52%BQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP8%26%FA8tP9QPLT/UDy0/1A8tP9QPLT/%282%BQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP8%47%BQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP8%26%FA8tP9QPLT/UDy0/1A8tP9QPLT/%282%BQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP8%47%BQPLT/UDy0/1A8tP9QPLT/UDy0/w%31%FA8tP9QPLT/UDy0/1A8tP9QPLT/%282%BQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%37%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%31%FA8tP9QPLT/UDy0/1A8tP9QPLT/%288%UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%26%UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%31%FA8tP9QPLT/UDy0/1A8tP9QPLT/%288%UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%37%FA8tP9QPLT/UDy0/1A8tP9QPLT/%293%FA8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP8%42%FA8tP9QPLT/UDy0/1A8tP9QPLT/%298%BQPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%47%FA8tP9QPLT/UDy0/1A8tP9QPLT/%304%UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/%53%FA8tP9QPLT/UDy0/1A8tP9QPLT/%320%UDy0/1A8tP9QPLT/UDy0/1A8tP9QPLT/UDy0/w%3754%\")):null},_.o1=function(t,e,A,P){var r=t.Ac();return r.createImageFromBase64(e,A,P)},_.p1=function(t,e){var A=t.Ac();return A.createDialog(e)},_.q1=function(){return null},_.r1=function(t){var e=t.Ac();return e.grabFocus()},_.s1=function(t){var e=t.Ac();e.register(t)},_.t1=function(t,e){var A=t,P=t.Ac();P.runLater(function(){A.Bc(e)})},_.u1=function(t,e){var A=t.Ac();return A.setCursor(e)},_.v1=function(t,e,A){var P=t.Ac();return P.showHelpDialog(e,A)},_.w1=function(){},_.x1=function(t){this.b=t,_.s1(this)},G(423,1,{},_.x1),U.build16x16CursorImage=function(t){var e;return e=_.m1(this,16,16),Tt.XM(e,t),e.a},U.createDialog=function(t,e){return _.l1(this,t,e)},U.createImage=function(t,e){return _.m1(this,t,e)},U.createNativeDialog=function(t){return _.p1(this,t)},U.createPopupMenu=function(t){return _.q1()},U.Ac=function(){return this.b},U.grabFocus=function(){_.r1(this)},U.openChemistryFile=function(t){return null},U.runLater=function(t){_.t1(this,t)},U.Bc=function(t){t.mc()},U.setCursor=function(t){_.u1(this,t)},U.setEditorArea=function(t){this.a=t},U.showHelpDialog=function(t,e){_.v1(this,t,e)},U.showMessage=function(t){_.w1()},l.xab=O(423),R.M1=function(t,e){y.pj(t.a,e)},R.N1=function(t,e){var A,P;for(P=new y.rqb(t.a);P.a<P.c.a.length;)A=y.qqb(P),A.lc(e)},R.O1=function(t,e){var A=t.Dc();return A.setEnabled(e)},R.P1=function(t,e){var A=t;e.setEventHandler(function(P,r){A.Cc(P,r)})},R.Q1=function(t){this.b=t,this.a=new y.Jj,R.P1(this,t)},G(170,1,{}),U.Cc=function(t,e){R.N1(this,new Tt.RM(this,t,e))},U.Dc=function(){return this.b},l.Bab=O(170),R.T1=function(t){var e=t.Dc();return e.isSelected()},R.U1=function(t,e){var A=t.Dc();return A.setSelected(e)},R.V1=function(t){R.Q1.call(this,t)},G(447,170,{},R.V1),l.yab=O(447),R.W1=function(t,e){var A=t.Ec(),P=new j.rT(e);return A.copyMolecule(P)},R.X1=function(){return T.Pjb(),\"\"+null.xd(),!0},R.Y1=function(t){var e=t.Ec(),A=e.pasteMolecule();return A?A.uc():null},R.Z1=function(){return T.Pjb(),\"\"+null.xd(),null},R.$1=function(t){this.a=t},G(290,1,{},R.$1),U.Ec=function(){return this.a},l.zab=O(290),R.a2=function(t,e){var A=t.Dc();return A.addItem(e)},R.b2=function(t){var e=t.Dc();return e.getSelectedIndex()},R.c2=function(t){var e=t.Dc();return e.getSelectedItem()},R.d2=function(t){var e=t.Dc();return e.removeAllItems()},R.e2=function(t,e){var A=t.Dc();return A.setEditable(e)},R.f2=function(t,e){var A=t.Dc();return A.setSelectedIndex(e)},R.g2=function(t,e){var A=t.Dc();return A.setSelectedItem(e)},R.h2=function(t){R.Q1.call(this,t)},G(448,170,{},R.h2),l.Aab=O(448),R.i2=function(t,e,A,P){var r=t.Hc(),i=e.Dc();return r.add(i,A,P)},R.j2=function(t,e,A,P,r,i){var D=t.Hc(),u=e.Dc();return D.add(u,A,P,r,i)},R.k2=function(t,e){var A=t.Hc(),P=A.createCheckBox(e);return new R.V1(P)},R.l2=function(t){var e=t.Hc(),A=e.createComboBox();return new R.h2(A)},R.m2=function(t,e){var A=t.Hc(),P=A.createLabel(e);return new R.c3(P)},R.n2=function(t,e,A){var P=t.Hc(),r=P.createTextField(e,A);return new R.k3(r)},R.o2=function(t){var e=t.Hc();e.disposeDialog()},R.p2=function(t,e){t.a=e;var A=t.Hc(),P=t;function r(){P.Gc()}function i(){P.Fc()}var D={fireOk:r,fireCancel:i};A.setEventConsumer(D)},R.q2=function(t,e,A){var P=t.Hc();return P.setLayout(e,A)},R.r2=function(t){var e=t.Hc();e.showDialog()},R.s2=function(t,e){var A=t.Hc();A.showMessage(e)},R.t2=function(t,e){this.c=t,this.b=e},G(292,1,{},R.t2),U.Fc=function(){this.a&&this.a.lc(new Tt.RM(this,1,0))},U.Gc=function(){this.a&&this.a.lc(new Tt.RM(this,0,0)),V.nM(this.b.a,1)},U.Hc=function(){return this.c},l.Cab=O(292),R.x2=function(t,e,A,P,r){var i=t.Ic();return i.clearRect(e,A,P,r)},R.y2=function(t,e,A,P){var r=t.Ic();return r.drawCenteredString(e,A,P)},R.z2=function(t,e,A,P,r){var i=t.Ic();return i.drawDottedLine(e,A,P,r)},R.A2=function(t,e,A,P,r,i,D,u,o,Q){var L=t.Ic(),w=e.nc();return L.drawImage(w,A,P,r,i,D,u,o,Q)},R.B2=function(t,e,A,P,r){var i=t.Ic();return i.drawLine(e,A,P,r)},R.C2=function(t,e){var A=t.Ic();return A.drawPolygon(e)},R.D2=function(t,e,A,P,r){var i=t.Ic();return i.drawRectangle(e,A,P,r)},R.E2=function(t,e,A,P){var r=t.Ic();return r.drawString(e,A,P)},R.F2=function(t,e,A,P){var r=t.Ic();return r.fillCircle(e,A,P)},R.G2=function(t,e){var A=t.Ic();return A.fillPolygon(e)},R.H2=function(t,e,A,P,r){var i=t.Ic();return i.fillRectangle(e,A,P,r)},R.I2=function(t){var e=t.Ic();return e.getBackgroundRGB()},R.J2=function(t,e){var A=t.Ic(),P=A.getBounds(e);return new Tt.FN(P.x,P.y,P.width,P.height)},R.K2=function(t){var e=t.Ic();return e.getFontSize()},R.L2=function(t){var e=t.Ic();return e.getForegroundRGB()},R.M2=function(t){var e=t.Ic();return e.getLineWidth()},R.N2=function(t){var e=t.Ic();return e.getSelectionBackgroundRGB()},R.O2=function(t){var e=t.Ic();return e.isDarkBackground()},R.P2=function(t,e,A,P){var r=t.Ic();return r.setFont(e,A,P)},R.Q2=function(t,e){var A=t.Ic();return A.setLineWidth(e)},R.R2=function(t,e){var A=t.Ic();return A.setRGB(e)},R.S2=function(t){this.a=t},G(156,1,{},R.S2),U.Ic=function(){return this.a},l.Dab=O(156),R.U2=function(t){var e=t.Jc();return e.getHeight()},R.V2=function(t){return t.a},R.W2=function(t,e,A){var P=t.Jc();return P.getRGB(e,A)},R.X2=function(t){var e=t.Jc();return e.getWidth()},R.Y2=function(t,e,A,P){var r=t.Jc();r.setRGB(e,A,P)},R.Z2=function(t){this.a=t},G(219,1,{},R.Z2),U.nc=function(){var t=this.Jc();return t},U.Jc=function(){return R.V2(this)},l.Eab=O(219),R.a3=function(){Tt.kN.call(this)},G(289,221,{},R.a3),l.Fab=O(289),R.b3=function(t,e){var A=t.Dc();return A.setText(e)},R.c3=function(t){R.Q1.call(this,t)},G(446,170,{},R.c3),l.Gab=O(446),R.d3=function(){Tt.kN.call(this)},G(218,221,{},R.d3),l.Hab=O(218),R.e3=function(t){this.a=t},G(139,1,{},R.e3),U.getSize=function(){return this.a.a},U.getX=function(t){return Tt.uN(this.a,t)},U.getY=function(t){return Tt.vN(this.a,t)},l.Iab=O(139),R.i3=function(t){var e=t.Dc();return e.getText()},R.j3=function(t,e){var A=t.Dc();return A.setText(e)},R.k3=function(t){R.Q1.call(this,t)},G(449,170,{},R.k3),l.Jab=O(449),Y1.l3=function(t,e){var A,P;return P={},A=t.B[e],Wt.gAb(P,\"aromatic\",g1(Z(A,2),0)),Wt.gAb(P,\"notAromatic\",g1(Z(A,4),0)),Wt.gAb(P,\"notChain\",g1(Z(A,8),0)),Wt.gAb(P,\"not2RingBonds\",g1(Z(A,16),0)),Wt.gAb(P,\"not3RingBonds\",g1(Z(A,32),0)),Wt.gAb(P,\"not4RingBonds\",g1(Z(A,64),0)),Wt.gAb(P,\"noMoreNeighbours\",g1(Z(A,c1),0)),Wt.gAb(P,\"moreNeighbours\",g1(Z(A,J1),0)),Wt.gAb(P,\"matchStereo\",g1(Z(A,l0),0)),Wt.gAb(P,\"not0PiElectrons\",g1(Z(A,E0),0)),Wt.gAb(P,\"not1PiElectron\",g1(Z(A,Ge),0)),Wt.gAb(P,\"not2PiElectrons\",g1(Z(A,z1),0)),Wt.gAb(P,\"not0Hydrogen\",g1(Z(A,128),0)),Wt.gAb(P,\"not1Hydrogen\",g1(Z(A,256),0)),Wt.gAb(P,\"not2Hydrogen\",g1(Z(A,512),0)),Wt.gAb(P,\"not3Hydrogen\",g1(Z(A,r0),0)),Wt.gAb(P,\"not0Neighbours\",g1(Z(A,n0),0)),Wt.gAb(P,\"not1Neighbour\",g1(Z(A,Ue),0)),Wt.gAb(P,\"not2Neighbours\",g1(Z(A,Le),0)),Wt.gAb(P,\"not3Neighbours\",g1(Z(A,je),0)),Wt.gAb(P,\"not4Neighbours\",g1(Z(A,m0),0)),Wt.gAb(P,\"notChargeNeg\",g1(Z(A,lA),0)),Wt.gAb(P,\"notCharge0\",g1(Z(A,H0),0)),Wt.gAb(P,\"noChargePos\",g1(Z(A,134217728),0)),Wt.gAb(P,\"ringSize0\",g1(Z(A,le),0)),Wt.gAb(P,\"ringSize3\",g1(Z(A,ze),0)),Wt.gAb(P,\"ringSize4\",g1(Z(A,Ve),0)),Wt.gAb(P,\"ringSize5\",g1(Z(A,qe),0)),Wt.gAb(P,\"ringSize6\",g1(Z(A,Ie),0)),Wt.gAb(P,\"ringSize7\",g1(Z(A,Ee),0)),Wt.gAb(P,\"ringSizeLarge\",g1(Z(A,un),0)),P},Y1.m3=function(t,e){var A,P;return P={},A=Ct(t.G[e]),Wt.gAb(P,\"single\",g1(Z(A,1),0)),Wt.gAb(P,\"double\",g1(Z(A,2),0)),Wt.gAb(P,\"triple\",g1(Z(A,4),0)),Wt.gAb(P,\"delocalized\",g1(Z(A,8),0)),Wt.gAb(P,\"metalLigand\",g1(Z(A,16),0)),Wt.gAb(P,\"quadruple\",g1(Z(A,32),0)),Wt.gAb(P,\"quintuple\",g1(Z(A,64),0)),Wt.gAb(P,\"notRing\",g1(Z(A,128),0)),Wt.gAb(P,\"ring\",g1(Z(A,256),0)),Wt.gAb(P,\"aromatic\",g1(Z(A,m0),0)),Wt.gAb(P,\"nonAromatic\",g1(Z(A,Y0),0)),Wt.hAb(P,\"ringSize\",Gt(Z(A,re))>>17),Wt.hAb(P,\"brigdeMin\",Gt(Z(A,7680))>>9),Wt.hAb(P,\"brigdeSpan\",Gt(Z(A,$A))>>13),P},Y1.o3=function(){},G(211,1,{},Y1.o3),Y1.n3=null,l.Kab=O(211),Y1.q3=function(t){var e,A,P;for(P=t.a.a.length,e=Y1.u3(P),A=0;A<P;A++)s1.E4(e,A,Y1.t3(y.uj(t.a,A).a,y.uj(t.a,A).b));return e},Y1.r3=function(t){return!Y1.p3&&(Y1.p3=new n.uu),n.mu(Y1.p3,t)},Y1.s3=function(t){if(!t)return 0;var e=0;return t.inflateToMaxAVBL&&(e|=z1),t.inflateToHighResAVBL&&(e|=n0),t.chiralTextBelowMolecule&&(e|=0),t.chiralTextAboveMolecule&&(e|=Ue),t.chiralTextOnFrameTop&&(e|=Le),t.chiralTextOnFrameBottom&&(e|=U1),t.noTabus&&(e|=1),t.showAtomNumber&&(e|=2),t.showBondNumber&&(e|=4),t.highlightQueryFeatures&&(e|=8),t.showMapping&&(e|=16),t.suppressChiralText&&(e|=32),t.suppressCIPParity&&(e|=64),t.suppressESR&&(e|=128),t.showSymmetryAny&&(e|=768),t.showSymmetrySimple&&(e|=256),t.showSymmetryStereoHeterotopicity&&(e|=512),t.noImplicitAtomLabelColors&&(e|=r0),t.noStereoProblem&&(e|=c1),t.noColorOnESRAndCIP&&(e|=J1),t.noImplicitHydrogen&&(e|=l0),t.drawBondsInGray&&(e|=E0),e},Y1.t3=function(t,e){return{type:e,value:t}},Y1.u3=function(t){return new Array(t)},Y1.p3=null,lt.v3=function(t,e){var A;return A=t-e,A>=t1?A-=G1:A<or&&(A+=G1),A},lt.w3=function(t,e){var A;for(A=e;A<t.length;A++)if(t[A]==62)return A;return-1},lt.x3=function(t,e){var A;if(t==null)return e==null?0:1;if(e==null)return-1;for(A=0;A<t.length;A++){if(e.length==A)return 1;if(t[A]!==e[A])return t[A]<e[A]?-1:1}return e.length>t.length?-1:0},lt.y3=function(){},G(257,1,fn,lt.y3),U.Qb=function(t,e){return lt.x3(t,e)},U.lb=function(t){return this===t},l.Lab=O(257),lt.C3=function(){lt.C3=u1,lt.B3=v(F(l.Y6,1),h0,6,15,[.29899999499320984,.5870000123977661,.11400000005960464])},lt.D3=function(t,e){lt.C3();var A,P,r,i,D;return A=t&N0,D=(t&X0)>>16,r=(t&J0)>>8,P=t&255,i=mt(1/(1-e)),D==0&&r==0&&P==0?A|i<<16|i<<8|i:(D>0&&D<i&&(D=i),r>0&&r<i&&(r=i),P>0&&P<i&&(P=i),A|k.Math.min(mt(D/e),255)<<16|k.Math.min(mt(r/e),255)<<8|k.Math.min(mt(P/e),255))},lt.E3=function(t){lt.C3();var e,A,P,r;return r=t.a>>16&255,P=t.a>>8&255,A=t.a&255,e=t.a>>24&255,r==0&&P==0&&A==0?new m1.Afb(5,5,5,e):(r>0&&r<5&&(r=5),P>0&&P<5&&(P=5),A>0&&A<5&&(A=5),new m1.Afb(k.Math.min(mt(r/sn),255),k.Math.min(mt(P/sn),255),k.Math.min(mt(A/sn),255),e))},lt.F3=function(t,e){lt.C3();var A;return A=d(l.Y6,h0,6,4,15,1),A[0]=Wr*((t&X0)>>16),A[1]=Wr*((t&J0)>>8),A[2]=Wr*(t&255),lt.G3(A,e),t&N0|mt(k.Math.round(A[0]*255))<<16|mt(k.Math.round(A[1]*255))<<8|mt(k.Math.round(A[2]*255))},lt.G3=function(t,e){var A,P,r,i,D,u,o,Q;if(D=lt.B3[0]*t[0]+lt.B3[1]*t[1]+lt.B3[2]*t[2],D==0){t[0]=0,t[1]=0,t[2]=0;return}for(A=e/D,Q=0,o=0,r=0;r<3;r++)t[r]*=A,t[r]<1?o+=lt.B3[r]:(Q+=(t[r]-1)*lt.B3[r],t[r]=1);if(Q!=0){for(u=0,i=0;i<3;i++)t[i]<1&&(t[i]+=Q/o,t[i]>1&&(u+=(t[i]-1)*lt.B3[i],t[i]=1));if(u!=0)for(P=0;P<3;P++)t[P]<1&&(t[P]+=u/lt.B3[P],t[P]>1&&(t[P]=1))}},lt.H3=function(t,e){lt.C3();var A,P,r,i,D,u,o,Q,L,w,s;return A=(lt.B3[0]*((e&X0)>>16)+lt.B3[1]*((e&J0)>>8)+lt.B3[2]*(e&255))/255,D=(lt.B3[0]*((t&X0)>>16)+lt.B3[1]*((t&J0)>>8)+lt.B3[2]*(t&255))/255,r=k.Math.abs(A-D),r>Dn||(u=(m1.yfb(),m1.Bfb(((e&X0)>>16)/255,((e&J0)>>8)/255,(e&255)/255,null)),o=m1.Bfb(((t&X0)>>16)/255,((t&J0)>>8)/255,(t&255)/255,null),Q=k.Math.abs(o[0]-u[0]),Q>.5&&(Q=1-Q),s=1-k.Math.max(o[1],u[1]),P=k.Math.abs(D+A-1),L=k.Math.cos(t1*Q*3),w=Dn*k.Math.max(s,k.Math.max(P,L)),r>w)?t:(i=D>A?D+w>1:D-w>0,lt.F3(t,i?A-w:A+w))},lt.I3=function(t){lt.C3();var e,A,P;return P=(t&X0)>>16,A=(t&J0)>>8,e=t&255,(P+mt(k.Math.round(Dn*(92-P)))<<16)+(A+mt(k.Math.round(Dn*(160-A)))<<8)+e+mt(k.Math.round(Dn*(255-e)))},lt.K3=function(){lt.K3=u1,lt.J3=v(F(l.Nbb,1),yt,2,6,[\"\",\"0\",\"00\",\"000\",\"0000\",\"00000\",\"000000\",\"0000000\",\"00000000\"])},lt.L3=function(t,e){lt.K3();var A,P,r,i;if(isNaN(t))return\"NaN\";if(!isNaN(t)&&!isFinite(t))return\"Infinity\";if(t==0)return\"0\";for(r=1,P=1;P<e;P++)r*=10;for(i=r*10,A=0;k.Math.abs(t)+.5<r;)t*=10,--A;for(;k.Math.abs(t)+.5>=i;)t/=10,++A;return lt.M3(h1(t+(t<0?-.5:.5)),A,e,!0)},lt.M3=function(t,e,A,P){var r,i,D,u,o,Q;if(D=1,et(t,0)==0)return P||A==1?\"0\":\"0.\"+lt.N3(A-1);if(et(t,0)!=0){for(;S1(Ze(t,10),0);)t=G0(t,10),++e;for(D=0,u=t;et(u,0)!=0;u=G0(u,10))++D}return i=new T.Kjb,et(t,0)<0&&(i.a+=\"-\"),o=k.Math.max(0,A-D),r=\"\"+Q0(et(t,0)<0?W1(t):t),e==0?(i.a+=r,!P&&o!=0&&(i.a+=\".\",T.Ijb(i,lt.N3(o)))):e>0?(Q=P?e>4:e-o>4,Q?(D==1?(i.a+=r,A>1&&(i.a+=\".\",P?i.a+=\"0\":T.Ijb(i,lt.N3(o)))):(T.Ijb(i,(c.Mzb(0,1,c.Szb(r).length),c.Szb(r).substr(0,1))),i.a+=\".\",T.Ijb(i,(c.Nzb(1,c.Szb(r).length+1),c.Szb(r).substr(1))),!P&&o!=0&&T.Ijb(i,lt.N3(o))),i.a+=\"e\",i.a+=\"\"+(e+D-1)):(i.a+=r,T.Ijb(i,lt.N3(e)),!P&&o>e&&(i.a+=\".\",T.Ijb(i,lt.N3(o-e))))):-e<D?(T.Ijb(i,(c.Mzb(0,D+e,c.Szb(r).length),c.Szb(r).substr(0,D+e))),i.a+=\".\",T.Ijb(i,(c.Nzb(D+e,c.Szb(r).length+1),c.Szb(r).substr(D+e))),!P&&o!=0&&T.Ijb(i,lt.N3(o))):-e==D?(i.a+=\"0.\",i.a+=r,!P&&o!=0&&T.Ijb(i,lt.N3(o))):e+D<-2?(D==1?(i.a+=r,A>1&&(i.a+=\".\",P?i.a+=\"0\":T.Ijb(i,lt.N3(o)))):(T.Ejb(i,(c.Nzb(0,c.Szb(r).length),c.Szb(r).charCodeAt(0))),i.a+=\".\",T.Ijb(i,(c.Nzb(1,c.Szb(r).length+1),c.Szb(r).substr(1))),!P&&o!=0&&T.Ijb(i,lt.N3(o))),i.a+=\"e-\",i.a+=\"\"+(1-e-D)):(i.a+=\"0.\",T.Ijb(i,lt.N3(-e-D)),i.a+=r,!P&&o!=0&&T.Ijb(i,lt.N3(o))),i.a},lt.N3=function(t){var e;if(t<lt.J3.length)return lt.J3[t];for(e=new T.Kjb;t>=lt.J3.length;)T.Ijb(e,lt.J3[lt.J3.length-1]),t-=lt.J3.length-1;return T.Ijb(e,lt.J3[t]),e.a},lt.O3=function(t,e){var A;if(t==null)return e==null?0:1;if(e==null)return-1;for(A=0;A<t.length;A++){if(e.length==A)return 1;if(t[A]!=e[A])return t[A]<e[A]?-1:1}return e.length>t.length?-1:0},lt.P3=function(){},G(133,1,fn,lt.P3),U.Qb=function(t,e){return lt.O3(t,e)},U.lb=function(t){return this===t},l.Mab=O(133),lt.S3=function(t){t.d=new y.Jj},lt.T3=function(t,e){var A;return A=lt.W3(t,e),A<0&&(A=-(A+1),y.oj(t.d,A,e)),A},lt.U3=function(t,e,A){return t.c?y.ctb(e,A):T.Ngb(e,A)},lt.V3=function(t,e){return e<0?null:y.uj(t.d,e)},lt.W3=function(t,e){var A,P,r,i;if(i=t.d.a.length,i==0)return-1;for(r=1;2*r<=i;)r<<=1;for(P=r,--r;P!=0;){if(P>>=1,r>=i){r-=P;continue}if(A=lt.U3(t,e,y.uj(t.d,r)),A==0)return r;if(P==0)break;A<0?r-=P:r+=P}return r<i&&lt.U3(t,e,y.uj(t.d,r))>0&&++r,-(r+1)},lt.X3=function(t,e){y.Bj(t.d,e)},lt.Y3=function(t,e){return y.Ij(t.d,e)},lt.Z3=function(){lt.$3.call(this,null)},lt.$3=function(t){lt.S3(this),this.c=t},G(94,1,{},lt.Z3,lt.$3),l.Nab=O(94),lt._3=function(t){t.b=new y.Jj},lt.a4=function(t,e){var A,P;return P=t.d.a.length,A=lt.T3(t,e),t.d.a.length!=P?(y.pj(t.b,e),t.a=null,P):(t.a==null&&lt.b4(t),t.a[A])},lt.b4=function(t){var e,A,P,r;for(t.a=d(l.Z6,H,6,t.d.a.length,15,1),e=0,r=new y.rqb(t.b);r.a<r.c.a.length;)P=y.qqb(r),t.a[A=lt.W3(t,P),A<0?-1:A]=e++},lt.c4=function(){lt.Z3.call(this),lt._3(this)},G(376,94,fn,lt.c4),l.Oab=O(376),xt.g4=function(t){T.e4.call(this,t)},G(340,132,B0),l.Sab=O(340),s1.i4=function(){s1.i4=u1,s1.h4=new xD},s1.j4=function(t){t.a=\"\"},s1.k4=function(t){var e;t.c==null&&(e=j1(t.b)===j1(s1.h4)?null:t.b,t.d=e==null?Pe:GD(e)?s1.p4(e):pe(e)?\"String\":T.khb(T.Qc(e)),t.a=t.a+\": \"+(GD(e)?s1.o4(e):e+\"\"),t.c=\"(\"+t.d+\") \"+t.a)},s1.l4=function(t){return j1(t.b)===j1(s1.h4)?null:t.b},s1.m4=function(t){s1.i4(),s1.n4.call(this,t)},s1.n4=function(t){xt.g4.call(this,t),s1.j4(this),this.b=t,this.a=\"\"},s1.o4=function(t){return t==null?null:t.message},s1.p4=function(t){return t==null?null:t.name},G(162,340,{162:1,4:1,19:1,33:1,27:1},s1.m4),U.hc=function(){return s1.k4(this),this.c},U.Kc=function(){return s1.l4(this)},l.Pab=O(162),s1.B4=function(t,e){return t[e]},s1.C4=function(t){return t.length},s1.D4=function(t,e){t[t.length]=e},s1.E4=function(t,e,A){t[e]=A},s1.F4=function(t,e){return t[e]},s1.G4=function(t){return t.length},s1.H4=function(){return Date.now()},G(400,1,{}),l.Rab=O(400),xt.L4=function(){xt.L4=u1,xt.e5(),xt.d5},xt.M4=function(t,e,A){return t.apply(e,A);var P},xt.N4=function(){var t;return pA!=0&&(t=s1.H4(),t-YD>2e3&&(YD=t,CA=xt.U4())),pA++==0?(xt.X4((xt.W4(),xt.V4)),!0):!1};function xu(f){return xt.L4(),function(){return xt.P4(f,this,arguments);var t}}xt.P4=function(t,e,A){var P;P=xt.N4();try{return xt.M4(t,e,A)}finally{xt.Q4(P)}},xt.Q4=function(t){t&&xt.Y4((xt.W4(),xt.V4)),--pA,t&&CA!=-1&&(xt.S4(CA),CA=-1)},xt.R4=function(t){xt.L4(),k.setTimeout(function(){throw t},0)},xt.S4=function(t){k.clearTimeout(t)},xt.T4=function(){pA!=0&&(pA=0),CA=-1},xt.U4=function(){return k.setTimeout(xt.T4,10)};var pA=0,YD=0,CA=-1;xt.W4=function(){xt.W4=u1,xt.V4=new xt.Z4},xt.X4=function(t){var e,A;if(t.a){A=null;do e=t.a,t.a=null,A=xt._4(e,A);while(t.a);t.a=A}},xt.Y4=function(t){var e,A;if(t.b){A=null;do e=t.b,t.b=null,A=xt._4(e,A);while(t.b);t.b=A}},xt.Z4=function(){},xt.$4=function(t,e){return!t&&(t=s1.x4()),s1.D4(t,e),t},xt._4=function(t,e){var A,P,r,i;for(P=0,r=s1.C4(t);P<r;P++){i=s1.B4(t,P);try{xt.c5(i)?xt.a5(i).xd()&&(e=xt.$4(e,i)):xt.b5(i).xd()}catch(D){if(D=C1(D),Yt(D,27))A=D,xt.L4(),xt.R4(Yt(A,162)?A.Kc():A);else throw Qt(D)}}return e},G(390,400,{},xt.Z4),l.Tab=O(390),xt.a5=function(t){return t[0]},xt.b5=function(t){return t[0]},xt.c5=function(t){return t[1]},l.Q5=function(t){var e,A,P;return e=t&_1,A=t>>22&_1,P=t<0?v0:0,l.S5(e,A,P)},l.R5=function(t){return l.S5(l.Y5(t),l.Z5(t),l.X5(t))},l.S5=function(t,e,A){return{l:t,m:e,h:A}},l.T5=function(t,e,A){var P,r,i,D,u,o;if(l.Y5(e)==0&&l.Z5(e)==0&&l.X5(e)==0)throw Qt(new T.ygb(\"divide by zero\"));if(l.Y5(t)==0&&l.Z5(t)==0&&l.X5(t)==0)return A&&(l.P5=l.S5(0,0,0)),l.S5(0,0,0);if(l.X5(e)==Le&&l.Z5(e)==0&&l.Y5(e)==0)return l.U5(t,A);if(o=!1,l.X5(e)>>19!=0&&(e=l.q6(e),o=!o),D=l.b6(e),i=!1,r=!1,P=!1,l.X5(t)==Le&&l.Z5(t)==0&&l.Y5(t)==0)if(r=!0,i=!0,D==-1)t=l.R5((l.F6(),l.B6)),P=!0,o=!o;else return u=l.u6(t,D),o&&l._5(u),A&&(l.P5=l.S5(0,0,0)),u;else l.X5(t)>>19!=0&&(i=!0,t=l.q6(t),P=!0,o=!o);return D!=-1?l.V5(t,D,o,i,A):l.n6(t,e)<0?(A&&(i?l.P5=l.q6(t):l.P5=l.S5(l.Y5(t),l.Z5(t),l.X5(t))),l.S5(0,0,0)):l.W5(P?t:l.S5(l.Y5(t),l.Z5(t),l.X5(t)),e,o,i,r,A)},l.U5=function(t,e){return l.X5(t)==Le&&l.Z5(t)==0&&l.Y5(t)==0?(e&&(l.P5=l.S5(0,0,0)),l.R5((l.F6(),l.D6))):(e&&(l.P5=l.S5(l.Y5(t),l.Z5(t),l.X5(t))),l.S5(0,0,0))},l.V5=function(t,e,A,P,r){var i;return i=l.u6(t,e),A&&l._5(i),r&&(t=l.$5(t,e),P?l.P5=l.q6(t):l.P5=l.S5(l.Y5(t),l.Z5(t),l.X5(t))),i},l.W5=function(t,e,A,P,r,i){var D,u,o,Q;for(Q=l.a6(e)-l.a6(t),D=l.t6(e,Q),o=l.S5(0,0,0);Q>=0&&(u=l.k6(t,D),!(u&&(Q<22?l.d6(o,Q):Q<44?l.e6(o,Q-22):l.c6(o,Q-44),l.Y5(t)==0&&l.Z5(t)==0&&l.X5(t)==0)));)l.j6(D),--Q;return A&&l._5(o),i&&(P?(l.P5=l.q6(t),r&&(l.P5=l.w6(l.P5,(l.F6(),l.D6)))):l.P5=l.S5(l.Y5(t),l.Z5(t),l.X5(t))),o},l.X5=function(t){return t.h},l.Y5=function(t){return t.l},l.Z5=function(t){return t.m},l.$5=function(t,e){var A,P,r;return e<=22?(A=l.Y5(t)&(1<<e)-1,P=r=0):e<=44?(A=l.Y5(t),P=l.Z5(t)&(1<<e-22)-1,r=0):(A=l.Y5(t),P=l.Z5(t),r=l.X5(t)&(1<<e-44)-1),l.S5(A,P,r)},l._5=function(t){var e,A,P;e=~l.Y5(t)+1&_1,A=~l.Z5(t)+(e==0?1:0)&_1,P=~l.X5(t)+(e==0&&A==0?1:0)&v0,l.g6(t,e),l.h6(t,A),l.f6(t,P)},l.a6=function(t){var e,A;return A=Je(l.X5(t)),A==32?(e=Je(l.Z5(t)),e==32?Je(l.Y5(t))+32:e+20-10):A-12},l.b6=function(t){var e,A,P;return A=l.Y5(t),(A&A-1)!=0||(P=l.Z5(t),(P&P-1)!=0)||(e=l.X5(t),(e&e-1)!=0)||e==0&&P==0&&A==0?-1:e==0&&P==0&&A!=0?MP(A):e==0&&P!=0&&A==0?MP(P)+22:e!=0&&P==0&&A==0?MP(e)+44:-1},l.c6=function(t,e){t.h|=1<<e},l.d6=function(t,e){t.l|=1<<e},l.e6=function(t,e){t.m|=1<<e},l.f6=function(t,e){t.h=e},l.g6=function(t,e){t.l=e},l.h6=function(t,e){t.m=e},l.i6=function(t){return l.Y5(t)+l.Z5(t)*Y0+l.X5(t)*W0},l.j6=function(t){var e,A,P;A=l.Z5(t),P=l.X5(t),e=l.Y5(t),l.f6(t,P>>>1),l.h6(t,A>>>1|(P&1)<<21),l.g6(t,e>>>1|(A&1)<<21)},l.k6=function(t,e){var A,P,r;return r=l.X5(t)-l.X5(e),r<0||(A=l.Y5(t)-l.Y5(e),P=l.Z5(t)-l.Z5(e)+(A>>22),r+=P>>22,r<0)?!1:(l.g6(t,A&_1),l.h6(t,P&_1),l.f6(t,r&v0),!0)},l.l6=function(t,e){var A,P,r;return A=l.Y5(t)+l.Y5(e),P=l.Z5(t)+l.Z5(e)+(A>>22),r=l.X5(t)+l.X5(e)+(P>>22),l.S5(A&_1,P&_1,r&v0)},l.m6=function(t,e){return l.S5(l.Y5(t)&l.Y5(e),l.Z5(t)&l.Z5(e),l.X5(t)&l.X5(e))},l.n6=function(t,e){var A,P,r,i,D,u,o,Q;return o=l.X5(t)>>19,Q=l.X5(e)>>19,o!=Q?Q-o:(r=l.X5(t),u=l.X5(e),r!=u?r-u:(P=l.Z5(t),D=l.Z5(e),P!=D?P-D:(A=l.Y5(t),i=l.Y5(e),A-i)))},l.o6=function(t){var e,A,P,r,i;return isNaN(t)?(l.F6(),l.E6):t<-9223372036854776e3?(l.F6(),l.C6):t>=9223372036854776e3?(l.F6(),l.B6):(r=!1,t<0&&(r=!0,t=-t),P=0,t>=W0&&(P=mt(t/W0),t-=P*W0),A=0,t>=Y0&&(A=mt(t/Y0),t-=A*Y0),e=mt(t),i=l.S5(e,A,P),r&&l._5(i),i)},l.p6=function(t,e){var A,P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S,p,M,z,q,x,J,E,N,ft,Lt;return A=l.Y5(t)&8191,P=l.Y5(t)>>13|(l.Z5(t)&15)<<9,r=l.Z5(t)>>4&8191,i=l.Z5(t)>>17|(l.X5(t)&255)<<5,D=(l.X5(t)&1048320)>>8,u=l.Y5(e)&8191,o=l.Y5(e)>>13|(l.Z5(e)&15)<<9,Q=l.Z5(e)>>4&8191,L=l.Z5(e)>>17|(l.X5(e)&255)<<5,w=(l.X5(e)&1048320)>>8,J=A*u,E=P*u,N=r*u,ft=i*u,Lt=D*u,o!=0&&(E+=A*o,N+=P*o,ft+=r*o,Lt+=i*o),Q!=0&&(N+=A*Q,ft+=P*Q,Lt+=r*Q),L!=0&&(ft+=A*L,Lt+=P*L),w!=0&&(Lt+=A*w),h=J&_1,b=(E&511)<<13,s=h+b,B=J>>22,m=E>>9,S=(N&262143)<<4,p=(ft&31)<<17,g=B+m+S+p,z=N>>18,q=ft>>5,x=(Lt&4095)<<8,M=z+q+x,g+=s>>22,s&=_1,M+=g>>22,g&=_1,M&=v0,l.S5(s,g,M)},l.q6=function(t){var e,A,P;return e=~l.Y5(t)+1&_1,A=~l.Z5(t)+(e==0?1:0)&_1,P=~l.X5(t)+(e==0&&A==0?1:0)&v0,l.S5(e,A,P)},l.r6=function(t){return l.S5(~l.Y5(t)&_1,~l.Z5(t)&_1,~l.X5(t)&v0)},l.s6=function(t,e){return l.S5(l.Y5(t)|l.Y5(e),l.Z5(t)|l.Z5(e),l.X5(t)|l.X5(e))},l.t6=function(t,e){var A,P,r;return e&=63,e<22?(A=l.Y5(t)<<e,P=l.Z5(t)<<e|l.Y5(t)>>22-e,r=l.X5(t)<<e|l.Z5(t)>>22-e):e<44?(A=0,P=l.Y5(t)<<e-22,r=l.Z5(t)<<e-22|l.Y5(t)>>44-e):(A=0,P=0,r=l.Y5(t)<<e-44),l.S5(A&_1,P&_1,r&v0)},l.u6=function(t,e){var A,P,r,i,D;return e&=63,A=l.X5(t),P=(A&Le)!=0,P&&(A|=-1048576),e<22?(D=A>>e,i=l.Z5(t)>>e|A<<22-e,r=l.Y5(t)>>e|l.Z5(t)<<22-e):e<44?(D=P?v0:0,i=A>>e-22,r=l.Z5(t)>>e-22|A<<44-e):(D=P?v0:0,i=P?_1:0,r=A>>e-44),l.S5(r&_1,i&_1,D&v0)},l.v6=function(t,e){var A,P,r,i;return e&=63,A=l.X5(t)&v0,e<22?(i=A>>>e,r=l.Z5(t)>>e|A<<22-e,P=l.Y5(t)>>e|l.Z5(t)<<22-e):e<44?(i=0,r=A>>>e-22,P=l.Z5(t)>>e-22|l.X5(t)<<44-e):(i=0,r=0,P=A>>>e-44),l.S5(P&_1,r&_1,i&v0)},l.w6=function(t,e){var A,P,r;return A=l.Y5(t)-l.Y5(e),P=l.Z5(t)-l.Z5(e)+(A>>22),r=l.X5(t)-l.X5(e)+(P>>22),l.S5(A&_1,P&_1,r&v0)},l.x6=function(t){return l.n6(t,(l.F6(),l.E6))<0?-l.i6(l.q6(t)):l.Y5(t)+l.Z5(t)*Y0+l.X5(t)*W0},l.y6=function(t){return l.Y5(t)|l.Z5(t)<<22},l.z6=function(t){var e,A,P,r,i;if(l.Y5(t)==0&&l.Z5(t)==0&&l.X5(t)==0)return\"0\";if(l.X5(t)==Le&&l.Z5(t)==0&&l.Y5(t)==0)return\"-9223372036854775808\";if(l.X5(t)>>19!=0)return\"-\"+l.z6(l.q6(t));for(A=t,P=\"\";!(l.Y5(A)==0&&l.Z5(A)==0&&l.X5(A)==0);){if(r=l.Q5(hn),A=l.T5(A,r,!0),e=\"\"+l.y6(l.P5),!(l.Y5(A)==0&&l.Z5(A)==0&&l.X5(A)==0))for(i=9-c.Szb(e).length;i>0;i--)e=\"0\"+e;P=e+P}return P},l.A6=function(t,e){return l.S5(l.Y5(t)^l.Y5(e),l.Z5(t)^l.Z5(e),l.X5(t)^l.X5(e))},l.F6=function(){l.F6=u1,l.B6=l.S5(_1,_1,524287),l.C6=l.S5(0,0,Le),l.D6=l.Q5(1),l.Q5(2),l.E6=l.Q5(0)};function B1(f,t){var e;return l.Peb(f)&&l.Peb(t)&&(e=l.Ceb(l.Deb(f))+l.Ceb(l.Deb(t)),Zn<e&&e<W0)?l.Ieb(e):l.Heb(l.l6(l.Peb(f)?l.afb(l.Deb(f)):l.Beb(f),l.Peb(t)?l.afb(l.Deb(t)):l.Beb(t)))}function Z(f,t){return l.Heb(l.m6(l.Peb(f)?l.afb(l.Deb(f)):l.Beb(f),l.Peb(t)?l.afb(l.Deb(t)):l.Beb(t)))}l.Beb=function(t){return t},l.Ceb=function(t){return t},l.Deb=function(t){return t},l.Eeb=function(t){return t|0};function et(f,t){var e;return l.Peb(f)&&l.Peb(t)&&(e=l.Ceb(l.Deb(f))-l.Ceb(l.Deb(t)),!isNaN(e))?e:l.n6(l.Peb(f)?l.afb(l.Deb(f)):l.Beb(f),l.Peb(t)?l.afb(l.Deb(t)):l.Beb(t))}l.Geb=function(t){return t},l.Heb=function(t){var e;return e=l.X5(t),e==0?l.Ieb(l.Y5(t)+l.Z5(t)*Y0):e==v0?l.Ieb(l.Y5(t)+l.Z5(t)*Y0-W0):l.Geb(t)},l.Ieb=function(t){return t};function G0(f,t){var e;return l.Peb(f)&&l.Peb(t)&&(e=l.Ceb(l.Deb(f))/l.Ceb(l.Deb(t)),Zn<e&&e<W0)?l.Ieb(e<0?k.Math.ceil(e):k.Math.floor(e)):l.Heb(l.T5(l.Peb(f)?l.afb(l.Deb(f)):l.Beb(f),l.Peb(t)?l.afb(l.Deb(t)):l.Beb(t),!1))}function S1(f,t){return et(f,t)==0}function h1(f){return Zn<f&&f<W0?l.Ieb(f<0?k.Math.ceil(f):k.Math.floor(f)):l.Heb(l.o6(f))}function Ct(f){return l.Ieb(f)}function g1(f,t){return et(f,t)>0}function gn(f,t){return et(f,t)>=0}l.Peb=function(t){return typeof t===o0};function dn(f,t){return et(f,t)<0}function XD(f,t){return et(f,t)<=0}function Ze(f,t){var e;return l.Peb(f)&&l.Peb(t)&&(e=l.Ceb(l.Deb(f))%l.Ceb(l.Deb(t)),Zn<e&&e<W0)?l.Ieb(e):l.Heb((l.T5(l.Peb(f)?l.afb(l.Deb(f)):l.Beb(f),l.Peb(t)?l.afb(l.Deb(t)):l.Beb(t),!0),l.P5))}function V0(f,t){var e;return l.Peb(f)&&l.Peb(t)&&(e=l.Ceb(l.Deb(f))*l.Ceb(l.Deb(t)),Zn<e&&e<W0)?l.Ieb(e):l.Heb(l.p6(l.Peb(f)?l.afb(l.Deb(f)):l.Beb(f),l.Peb(t)?l.afb(l.Deb(t)):l.Beb(t)))}function W1(f){var t;return l.Peb(f)&&(t=0-l.Ceb(l.Deb(f)),!isNaN(t))?l.Ieb(t):l.Heb(l.q6(l.Beb(f)))}function jt(f,t){return et(f,t)!=0}function $0(f){return l.Heb(l.r6(l.Peb(f)?l.afb(l.Deb(f)):l.Beb(f)))}function Pt(f,t){return l.Heb(l.s6(l.Peb(f)?l.afb(l.Deb(f)):l.Beb(f),l.Peb(t)?l.afb(l.Deb(t)):l.Beb(t)))}function T1(f,t){return l.Heb(l.t6(l.Peb(f)?l.afb(l.Deb(f)):l.Beb(f),t))}function a1(f,t){return l.Heb(l.u6(l.Peb(f)?l.afb(l.Deb(f)):l.Beb(f),t))}function g0(f,t){return l.Heb(l.v6(l.Peb(f)?l.afb(l.Deb(f)):l.Beb(f),t))}function x1(f,t){var e;return l.Peb(f)&&l.Peb(t)&&(e=l.Ceb(l.Deb(f))-l.Ceb(l.Deb(t)),Zn<e&&e<W0)?l.Ieb(e):l.Heb(l.w6(l.Peb(f)?l.afb(l.Deb(f)):l.Beb(f),l.Peb(t)?l.afb(l.Deb(t)):l.Beb(t)))}l.afb=function(t){var e,A,P,r;return r=l.Ceb(t),P=0,r<0&&(r+=W0,P=v0),A=mt(r/Y0),e=mt(r-A*Y0),l.S5(e,A,P)};function nn(f){var t;return l.Peb(f)?(t=l.Ceb(l.Deb(f)),t==-0?0:t):l.x6(l.Beb(f))}function Gt(f){return l.Peb(f)?l.Eeb(l.Ceb(l.Deb(f))):l.y6(l.Beb(f))}function Q0(f){return l.Peb(f)?\"\"+l.Ceb(l.Deb(f)):l.z6(l.Beb(f))}function An(f,t){return l.Heb(l.A6(l.Peb(f)?l.afb(l.Deb(f)):l.Beb(f),l.Peb(t)?l.afb(l.Deb(t)):l.Beb(t)))}function Gu(){}m1.yfb=function(){m1.yfb=u1,new m1.zfb(255,255,255),new m1.zfb(128,128,128),new m1.zfb(0,0,0),new m1.zfb(0,255,0),new m1.zfb(255,255,0),new m1.zfb(255,200,0),new m1.zfb(255,0,0),new m1.zfb(0,255,255),new m1.zfb(0,0,255),new m1.zfb(255,0,255)},m1.zfb=function(t,e,A){m1.yfb(),m1.Afb.call(this,t,e,A,255)},m1.Afb=function(t,e,A,P){m1.yfb(),this.a=(P&255)<<24|(t&255)<<16|(e&255)<<8|A&255},m1.Bfb=function(t,e,A,P){m1.yfb();var r,i,D,u,o,Q;if(D=0,Q=0,r=0,P==null&&(P=d(l.Y6,h0,6,3,15,1)),o=k.Math.min(t,k.Math.min(e,A)),u=k.Math.max(t,k.Math.max(e,A)),r=u,i=u-o,i==0)return r=o,D=0,P[0]=D,P[1]=Q,P[2]=r,P;if(u!=0)Q=i/u;else return Q=0,D=0,P[0]=D,P[1]=Q,P[2]=r,P;return t==u?D=(e-A)/i:e==u?D=2+(A-t)/i:D=4+(t-e)/i,D*=60,D<0&&(D+=360),P[0]=D/360,P[1]=Q,P[2]=r,P},G(57,1,{},m1.zfb,m1.Afb),U.a=0,l.Yab=O(57),m1.Efb=function(){m1.Efb=u1,m1.Dfb=v(F(l.X6,1),Bt,6,15,[5.55,15,15,15,15,15,15,15,15,b0,b0,b0,b0,b0,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,b0,b0,7.1,i0,i0,17.78,ve,3.82,6.66,6.66,7.78,11.68,b0,6.66,b0,b0,i0,i0,i0,i0,i0,i0,i0,i0,i0,i0,b0,b0,11.68,11.68,11.68,i0,20.3,ve,ve,bn,bn,ve,12.22,15.56,bn,b0,10,ve,i0,16.66,bn,15.56,ve,15.56,bn,ve,12.22,bn,ve,18.88,ve,ve,12.22,b0,b0,b0,9.38,i0,6.66,i0,i0,10,i0,i0,b0,i0,i0,4.44,4.44,10,4.44,16.66,i0,i0,i0,i0,6.66,10,b0,i0,10,bn,10,10,10,6.68,5.2,6.68,11.68,10.5])},m1.Ffb=function(t,e){var A,P,r,i,D;if(T._ib(t.a,\"Helvetica\")){for(i=0,P=0,r=c.Szb(e).length;P<r;P++)A=(c.Nzb(P,c.Szb(e).length),c.Szb(e).charCodeAt(P)),i+=(A<128?D=m1.Dfb[A]:D=b0,D*t.b/20);return i}else return m1.Gfb(t,e)},m1.Gfb=function(t,i){var A=m1.Cfb;A||(A=Dt.createElement(\"canvas\"),m1.Cfb=A);var P=\"\"+t.b+\"px \"+t.a,r=A.getContext(\"2d\");r.font=P;var i=r.measureText(i);return i.width},m1.Hfb=function(t){m1.Efb(),this.a=\"Helvetica\",this.b=t},G(240,1,{},m1.Hfb),U.b=0,m1.Cfb=null,l.Zab=O(240),c0.Ifb=function(t,e){var A;return t===e?!0:Yt(e,159)?(A=e,t.Oc()==A.Oc()&&t.Pc()==A.Pc()):t===e},G(159,1,{159:1}),U.lb=function(t){return c0.Ifb(this,t)},U.nb=function(){var t;return t=this.Oc()+this.Pc(),mt(t)*37},l.abb=O(159),m1.Lfb=function(){m1.Mfb.call(this)},m1.Mfb=function(){this.a=0,this.b=0},G(166,159,{166:1,159:1},m1.Lfb),U.lb=function(t){var e;return Yt(t,166)?(e=t,this.a==e.a&&this.b==e.b):c0.Ifb(this,t)},U.Oc=function(){return this.a},U.Pc=function(){return this.b},U.a=0,U.b=0,l.$ab=O(166),c0.Qfb=function(t){return t.a},c0.Rfb=function(t){return t.b},c0.Sfb=function(){},c0.Tfb=function(t,e){this.a=t,this.b=e},G(158,159,{159:1,158:1,4:1},c0.Sfb,c0.Tfb),U.Oc=function(){return c0.Qfb(this)},U.Pc=function(){return c0.Rfb(this)},U.a=0,U.b=0,l._ab=O(158),G(444,1,{}),l.dbb=O(444),G(248,444,{248:1}),U.lb=function(t){var e;return t===this?!0:Yt(t,168)?(e=t,this.c==e.c&&this.d==e.d&&this.b==e.b&&this.a==e.a):!1},U.nb=function(){var t;return t=HP(this.c),t=B1(t,V0(HP(this.d),37)),t=B1(t,V0(HP(this.b),43)),t=B1(t,V0(HP(this.a),47)),Gt(t)^Gt(a1(t,32))},l.cbb=O(248),c0.Yfb=function(t,e){t.c=0,t.d=0,t.b=e,t.a=0},c0.Zfb=function(t){c0.Yfb(this,t)},G(168,248,{248:1,168:1},c0.Zfb),U.a=0,U.b=0,U.c=0,U.d=0,l.bbb=O(168),G(440,1,{}),U.Qc=function(){var t;return t=d(l.W6,e0,6,1,15,1),this.Rc(t)==-1?-1:t[0]},U.Rc=function(t){return this.Sc(t,0,t.length)},l.kbb=O(440),pt.agb=function(t){var e;return e=-1,t.a!=-2?(e=t.a,t.a=-2):e=t.b.Qc(),e},pt.bgb=function(t){var e,A,P;if(A=pt.agb(t),A==-1)return null;for(P=new T.Kjb,e=!1;!e;)if(A==10?e=!0:A==13&&(e=!0,A=pt.agb(t),A!=10&&(t.a=A)),!e){if(A==-1)break;T.Ejb(P,A&r1),A=pt.agb(t)}return P.a},pt.cgb=function(t){this.b=t,this.a=-2},G(52,440,{},pt.cgb),U.Qc=function(){return pt.agb(this)},U.Sc=function(t,e,A){return this.b.Sc(t,e,A)},U.a=0,l.ebb=O(52),G(403,1,{}),l.ibb=O(403),G(402,403,{}),l.fbb=O(402),G(439,1,{}),l.hbb=O(439),pt.fgb=function(t,e,A,P){var r,i,D;for(r=d(l.V6,Y,6,P,15,1),D=Wt.$zb(t.a,r),i=0;i<D;i++)e[A+i]=r[i]&r1;return D},pt.ggb=function(t){this.a=t},pt.hgb=function(t){pt.ggb.call(this,t)},G(105,440,{},pt.hgb),U.Qc=function(){return Wt.Zzb(this.a)},U.Rc=function(t){return pt.fgb(this,t,0,t.length)},U.Sc=function(t,e,A){return pt.fgb(this,t,e,A)},l.gbb=O(105),pt.lgb=function(){},G(265,402,{},pt.lgb),l.jbb=O(265),pt.ngb=function(t){this.b=t,this.a=0},G(87,440,{},pt.ngb),U.Qc=function(){return this.a==c.Szb(this.b).length?-1:T.Tib(this.b,this.a++)},U.Sc=function(t,e,A){var P;return this.a>=c.Szb(this.b).length?-1:(P=k.Math.min(c.Szb(this.b).length-this.a,A),T.bjb(this.b,this.a,this.a+P,t,e),this.a+=P,P)},U.a=0,l.lbb=O(87),G(441,1,{}),l.nbb=O(441),pt.qgb=function(t,e){T.Ajb(t.a,e)},pt.rgb=function(){this.a=new T.Bjb},G(238,441,{},pt.rgb),U.ob=function(){return this.a.a},l.mbb=O(238),T.tgb=function(t,e,A,P){var r;r=c.Szb(t.a).length,A>r?A=r:c.Nzb(e,A+1),t.a=T.qjb(t.a,0,e)+(\"\"+P)+T.pjb(t.a,A)},T.ugb=function(t,e){var A;A=c.Szb(t.a).length,e<A?t.a=T.qjb(t.a,0,e):e>A&&(t.a+=T.wjb(d(l.W6,e0,6,e-A,15,1)))},T.vgb=function(t){return t.a},T.wgb=function(t){this.a=t},G(118,1,{205:1}),U.ob=function(){return T.vgb(this)},l.obb=O(118),T.ygb=function(t){T.eC.call(this,t)},G(83,33,B0,T.ygb),l.pbb=O(83),T.Bgb=function(){T.zgb.call(this)},T.Cgb=function(t){T.Agb.call(this,t)},G(255,80,B0,T.Bgb,T.Cgb),l.qbb=O(255),T.Pgb=function(t,e){return t.a-e.a};function A8(f){this.a=f}function Ou(f){if(!f)throw Qt(new T.Yhb)}function Zu(f,t,e){var A,P;return A=T.Tib(f,t++),A>=55296&&A<=56319&&t<e&&Xu(P=(c.Nzb(t,c.Szb(f).length),c.Szb(f).charCodeAt(t)))?z1+((A&1023)<<10)+(P&1023):A}function Ju(f){return f>=48&&f<48+k.Math.min(10,10)?f-48:f>=97&&f<97?f-97+10:f>=65&&f<65?f-65+10:-1}function Ku(f){var t;return t=f-10,(t<0?48+f:97+t)&r1}function a0(f){return/\\d/.test(String.fromCharCode(f))}function WD(f){return/[A-Z]/i.test(String.fromCharCode(f))}T.$gb=function(t){return/[A-Z]/i.test(String.fromCharCode(t))};function Yu(f){return/[A-Z\\d]/i.test(String.fromCharCode(f))}function Xu(f){return f>=56320&&f<=57343}function Wu(f){return String.fromCodePoint(f).trim()===\"\"}function _u(f,t,e){return Ou(f>=0&&f<=1114111),f>=z1?(t[e++]=55296+(f-z1>>10&1023)&r1,t[e]=56320+(f-z1&1023)&r1,2):(t[e]=f&r1,1)}function $u(f){var t;return f<128?(t=(T.ghb(),T.fhb)[f],!t&&(t=T.fhb[f]=new A8(f)),t):new A8(f)}G(141,1,{4:1,141:1,32:1},A8),U.Rb=function(t){return T.Pgb(this,t)},U.lb=function(t){return Yt(t,141)&&t.a==this.a},U.nb=function(){return this.a},U.ob=function(){return String.fromCharCode(this.a)},U.a=0,l.sbb=O(141),T.ghb=function(){T.ghb=u1,T.fhb=d(l.sbb,L0,141,128,0,1)};function q0(f){var t;return t=T.Jhb(f),t>X8?1/0:t<-34028234663852886e22?-1/0:t}T.Yhb=function(){T.cC.call(this)},T.Zhb=function(t){T.eC.call(this,t)},G(66,33,B0,T.Yhb,T.Zhb),l.xbb=O(66),T.$hb=function(){T.cC.call(this)},T._hb=function(t){T.eC.call(this,t)},G(163,33,B0,T.$hb,T._hb),l.ybb=O(163),T.aib=function(t,e){return P8(t.a,e.a)},T.bib=function(t){return t.a},T.cib=function(t){return t.a},T.dib=function(t){this.a=t};function Pn(f){return f-=f>>1&1431655765,f=(f>>2&858993459)+(f&858993459),f=(f>>4)+f&252645135,f+=f>>8,f+=f>>16,f&63}function P8(f,t){return f<t?-1:f>t?1:0}function au(f){var t;if(f<0)return n1;if(f==0)return 0;for(t=z0;(t&f)==0;t>>=1);return t}function Je(f){var t,e,A;return f<0?0:f==0?32:(A=-(f>>16),t=A>>16&16,e=16-t,f=f>>t,A=f-256,t=A>>16&8,e+=t,f<<=t,A=f-J1,t=A>>16&4,e+=t,f<<=t,A=f-E0,t=A>>16&2,e+=t,f<<=t,A=f>>14,t=A&~(A>>1),e+2-t)}function MP(f){var t,e;if(f==0)return 32;for(e=0,t=1;(t&f)==0;t<<=1)++e;return e}T.pib=function(t){return t>-129&&t<128?T.sib(t):new T.dib(t)},G(78,123,{4:1,32:1,78:1,123:1},T.dib),U.Rb=function(t){return T.aib(this,t)},U.Zc=function(){return this.a},U.lb=function(t){return Yt(t,78)&&t.a==this.a},U.nb=function(){return T.bib(this)},U.$c=function(){return T.cib(this)},U.ob=function(){return\"\"+this.a},U.a=0,l.Abb=O(78),T.rib=function(){T.rib=u1,T.qib=d(l.Abb,L0,78,256,0,1)},T.sib=function(t){T.rib();var e,A;return e=t+128,A=T.qib[e],!A&&(A=T.qib[e]=new T.dib(t)),A},T.tib=function(t,e){return t2(t.a,e.a)},T.uib=function(t){this.a=t};function t2(f,t){return et(f,t)<0?-1:et(f,t)>0?1:0}T.Aib=function(t){return Gt(g0(t,32))^Gt(t)},T.Cib=function(t){var e,A,P,r;if(A=Gt(g0(t,32)),A==0)return P=c.Szb(c.Rzb(Gt(t))),P.toString(16);e=d(l.W6,e0,6,17,15,1),r=17;do e[--r]=Ku(Gt(t)&15),t=g0(t,4);while(et(t,0)!=0);return T.xjb(e,r,17-r)},T.Eib=function(t){return et(t,-129)>0&&et(t,128)<0?T.Hib(t):new T.uib(t)},G(97,123,{4:1,32:1,97:1,123:1},T.uib),U.Rb=function(t){return T.tib(this,t)},U.Zc=function(){return nn(this.a)},U.lb=function(t){return Yt(t,97)&&S1(t.a,this.a)},U.nb=function(){return T.Aib(this.a)},U.$c=function(){return Gt(this.a)},U.ob=function(){return\"\"+Q0(this.a)},U.a=0,l.Cbb=O(97),T.Gib=function(){T.Gib=u1,T.Fib=d(l.Cbb,L0,97,256,0,1)},T.Hib=function(t){T.Gib();var e,A;return e=Gt(t)+128,A=T.Fib[e],!A&&(A=T.Fib[e]=new T.uib(t)),A},T.Iib=function(t){return t==0||isNaN(t)?t:t<0?-1:1},G(503,1,{}),T.Jib=function(t){T.eC.call(this,t)},G(391,33,B0,T.Jib),l.Dbb=O(391),T.Oib=function(t){T.Zhb.call(this,t)},G(40,66,{4:1,19:1,40:1,33:1,27:1},T.Oib),l.Fbb=O(40),T.Pib=function(t,e,A){this.a=de,this.d=t,this.b=e,this.c=A},G(91,1,{4:1,91:1},T.Pib),U.lb=function(t){var e;return Yt(t,91)?(e=t,this.c==e.c&&this.d==e.d&&this.a==e.a&&this.b==e.b):!1},U.nb=function(){return y.Oqb(v(F(l.Hbb,1),v1,1,5,[T.pib(this.c),this.a,this.d,this.b]))},U.ob=function(){return this.a+\".\"+this.d+\"(\"+(this.b!=null?this.b:\"Unknown Source\")+(this.c>=0?\":\"+this.c:\"\")+\")\"},U.c=0,l.Jbb=O(91),T.yjb=function(t,e){return t.a+=String.fromCharCode(e),t},T.zjb=function(t,e){return t.a+=e,t},T.Ajb=function(t,e){return t.a+=\"\"+e,t},T.Bjb=function(){T.wgb.call(this,\"\")},T.Cjb=function(){T.wgb.call(this,\"\")},T.Djb=function(t){T.wgb.call(this,(c.Gzb(t),t))},G(70,118,{205:1},T.Bjb,T.Cjb,T.Djb),l.Kbb=O(70),T.Ejb=function(t,e){return t.a+=String.fromCharCode(e),t},T.Fjb=function(t,e){return t.a+=e,t},T.Gjb=function(t,e){return t.a+=Q0(e),t},T.Hjb=function(t,e){return t.a+=\"\"+e,t},T.Ijb=function(t,e){return t.a+=\"\"+e,t},T.Jjb=function(t,e,A){return T.tgb(t,e,e,A),t},T.Kjb=function(){T.wgb.call(this,\"\")},T.Ljb=function(){T.wgb.call(this,\"\")},T.Mjb=function(t){T.wgb.call(this,(c.Gzb(t),t))},G(26,118,{205:1},T.Kjb,T.Ljb,T.Mjb),l.Lbb=O(26),T.Pjb=function(){T.Pjb=u1,T.Ojb=new pt.lgb},T.Qjb=function(t,e,A,P,r){T.Pjb(),c.Hzb(t,\"src\"),c.Hzb(A,\"dest\"),T.Rjb(t,e,A,P,r),c.dzb(t,e,A,P,r,!0)},T.Rjb=function(t,e,A,P,r){var i,D;if(D=c.Szb(t).length,i=c.Szb(A).length,e<0||P<0||r<0||e+r>D||P+r>i)throw Qt(new T.zgb)},G(505,1,{}),T.Sjb=function(){T.cC.call(this)},T.Tjb=function(t){T.eC.call(this,t)},G(39,33,B0,T.Sjb,T.Tjb),l.Pbb=O(39),C.akb=function(){C.akb=u1;var t,e,A;for(new C.okb(1,0),new C.okb(10,0),new C.okb(0,0),C.Ujb=d(l.Qbb,L0,31,11,0,1),C.Vjb=d(l.W6,e0,6,100,15,1),C.Wjb=v(F(l.X6,1),Bt,6,15,[1,5,25,125,625,3125,15625,78125,390625,1953125,9765625,48828125,244140625,1220703125,6103515625,30517578125,152587890625,762939453125,3814697265625,19073486328125,95367431640625,476837158203125,0x878678326eac9]),C.Xjb=d(l.Z6,H,6,C.Wjb.length,15,1),C.Yjb=v(F(l.X6,1),Bt,6,15,[1,10,100,1e3,Z0,uP,1e6,1e7,1e8,hn,1e10,1e11,1e12,1e13,1e14,1e15,1e16]),C.Zjb=d(l.Z6,H,6,C.Yjb.length,15,1),C.$jb=d(l.Qbb,L0,31,11,0,1),t=0;t<C.$jb.length;t++)C.Ujb[t]=new C.okb(l.Ieb(t),0),C.$jb[t]=new C.okb(0,t),C.Vjb[t]=48;for(;t<C.Vjb.length;t++)C.Vjb[t]=48;for(A=0;A<C.Xjb.length;A++)C.Xjb[A]=C.skb(C.Wjb[A]);for(e=0;e<C.Zjb.length;e++)C.Zjb[e]=C.skb(C.Yjb[e]);C.amb()},C.bkb=function(t,e){var A,P,r,i,D,u;return r=C.ikb(t),u=C.ikb(e),r==u?t.e==e.e&&t.a<54&&e.a<54?t.f<e.f?-1:t.f>e.f?1:0:(P=t.e-e.e,A=(t.d>0?t.d:k.Math.floor((t.a-1)*kA)+1)-(e.d>0?e.d:k.Math.floor((e.a-1)*kA)+1),A>P+1?r:A<P-1?-r:(i=(!t.c&&(t.c=C.slb(h1(t.f))),t.c),D=(!e.c&&(e.c=C.slb(h1(e.f))),e.c),P<0?i=C.Xkb(i,C.jmb(-P)):P>0&&(D=C.Xkb(D,C.jmb(P))),C.Okb(i,D))):r<u?-1:1},C.ckb=function(t){return T.Jhb(C.kkb(t))},C.dkb=function(t,e){var A,P,r,i,D,u,o,Q;if(A=0,D=0,i=c.Szb(e).length,u=null,Q=(c.Szb(e),new T.Ljb),D<i&&(c.Nzb(D,c.Szb(e).length),c.Szb(e).charCodeAt(D)==43)&&(++D,++A,D<i&&(c.Nzb(D,c.Szb(e).length),c.Szb(e).charCodeAt(D)==43||(c.Nzb(D,c.Szb(e).length),c.Szb(e).charCodeAt(D)==45))))throw Qt(new T.Oib(He+e+'\"'));for(;D<i&&(c.Nzb(D,c.Szb(e).length),c.Szb(e).charCodeAt(D)!=46)&&(c.Nzb(D,c.Szb(e).length),c.Szb(e).charCodeAt(D)!=101)&&(c.Nzb(D,c.Szb(e).length),c.Szb(e).charCodeAt(D)!=69);)++D;if(Q.a+=\"\"+(c.Mzb(A,D,c.Szb(e??Pe).length),c.Szb(e??Pe).substr(A,D-A)),D<i&&(c.Nzb(D,c.Szb(e).length),c.Szb(e).charCodeAt(D)==46)){for(++D,A=D;D<i&&(c.Nzb(D,c.Szb(e).length),c.Szb(e).charCodeAt(D)!=101)&&(c.Nzb(D,c.Szb(e).length),c.Szb(e).charCodeAt(D)!=69);)++D;t.e=D-A,Q.a+=\"\"+(c.Mzb(A,D,c.Szb(e??Pe).length),c.Szb(e??Pe).substr(A,D-A))}else t.e=0;if(D<i&&(c.Nzb(D,c.Szb(e).length),c.Szb(e).charCodeAt(D)==101||(c.Nzb(D,c.Szb(e).length),c.Szb(e).charCodeAt(D)==69))&&(++D,A=D,D<i&&(c.Nzb(D,c.Szb(e).length),c.Szb(e).charCodeAt(D)==43)&&(++D,D<i&&(c.Nzb(D,c.Szb(e).length),c.Szb(e).charCodeAt(D)!=45)&&++A),u=(c.Mzb(A,i,c.Szb(e).length),c.Szb(e).substr(A,i-A)),t.e=t.e-T.Khb(u,n1,Mt),t.e!=mt(t.e)))throw Qt(new T.Oib(\"Scale out of range.\"));if(o=Q.a,c.Szb(o).length<16){if(t.f=(C._jb==null&&(C._jb=new RegExp(\"^[+-]?\\\\d*$\",\"i\")),C._jb.test(o)?parseInt(o,10):NaN),isNaN(t.f))throw Qt(new T.Oib(He+e+'\"'));t.a=C.skb(t.f)}else C.hkb(t,new C.hlb(o));for(t.d=c.Szb(Q.a).length,r=0;r<c.Szb(Q.a).length&&(P=T.Tib(Q.a,r),!(P!=45&&P!=48));++r)--t.d;t.d==0&&(t.d=1)},C.ekb=function(t,e){var A,P,r,i,D,u,o;if(i=e.a,!((t.d>0?t.d:k.Math.floor((t.a-1)*kA)+1)-i<0||i==0)&&(P=C.fkb(t)-i,!(P<=0))){if(t.a<54){C.jkb(t,e,P);return}u=C.jmb(P),r=C.Rkb((!t.c&&(t.c=C.slb(h1(t.f))),t.c),u),D=t.e-P,r[1].e!=0&&(A=C.Okb(C._kb(C.Nkb(r[1])),u),A=C.Bkb(C.blb(r[0],0)?1:0,r[1].e*(5+A),e.b),A!=0&&(r[0]=C.Llb(r[0],(C.Lkb(),gn(l.Ieb(A),0)?C.mlb(l.Ieb(A)):C.Ykb(C.mlb(W1(l.Ieb(A))))))),o=new C.pkb(r[0]),C.fkb(o)>i&&(r[0]=C.Qkb(r[0],(C.Lkb(),C.Ikb)),--D)),t.e=C.Ckb(D),t.d=i,C.hkb(t,r[0])}},C.fkb=function(t){var e,A;return t.d>0||(e=1,A=1,t.a<54?(t.a>=1&&(A=t.f),e+=k.Math.log(k.Math.abs(A))*k.Math.LOG10E):(e+=(t.a-1)*kA,C.Qkb((!t.c&&(t.c=C.slb(h1(t.f))),t.c),C.jmb(e)).e!=0&&++e),t.d=mt(e)),t.d},C.gkb=function(t,e){var A;return c.Gzb(e),A=2-t.e,A==0?t:A>0?A<C.Yjb.length&&t.a+C.Zjb[mt(A)]<54?new C.mkb(t.f*C.Yjb[mt(A)]):new C.rkb(C.gmb((!t.c&&(t.c=C.slb(h1(t.f))),t.c),mt(A)),2):t.a<54&&-A<C.Yjb.length?C.wkb(t.f,C.Yjb[mt(-A)],e):C.vkb((!t.c&&(t.c=C.slb(h1(t.f))),t.c),C.jmb(-A),e)},C.hkb=function(t,e){var A;t.c=e,t.a=C.tlb(e),t.a<54&&(t.f=(A=e.d>1?c.Vzb(e.a[0],e.a[1]):c.Vzb(e.a[0],0),nn(e.e>0?A:W1(A))))},C.ikb=function(t){return t.a<54?t.f<0?-1:t.f>0?1:0:(!t.c&&(t.c=C.slb(h1(t.f))),t.c).e},C.jkb=function(t,e,A){var P,r,i,D,u,o;u=h1(C.Yjb[A]),D=x1(h1(t.e),l.Ieb(A)),o=h1(t.f),i=G0(o,u),r=Ze(o,u),et(r,0)!=0&&(P=dn(T1(et(r,0)<0?W1(r):r,1),u)?-1:g1(T1(et(r,0)<0?W1(r):r,1),u)?1:0,i=B1(i,Ct(C.Bkb(Gt(i)&1,(et(r,0)==0?0:et(r,0)<0?-1:1)*(5+P),e.b))),k.Math.log(nn(et(i,0)<0?W1(i):i))*k.Math.LOG10E>=e.a&&(i=G0(i,10),D=x1(D,1))),t.e=C.Ckb(nn(D)),t.d=e.a,t.f=nn(i),t.a=C.tkb(i),t.c=null},C.kkb=function(t){var e,A,P,r,i;return t.g!=null?t.g:t.a<32?(t.g=C.Elb(h1(t.f),mt(t.e)),t.g):(r=C.Flb((!t.c&&(t.c=C.slb(h1(t.f))),t.c),0),t.e==0?r:(e=(!t.c&&(t.c=C.slb(h1(t.f))),t.c).e<0?2:1,A=c.Szb(r).length,P=-t.e+A-e,i=new T.Kjb,i.a+=\"\"+r,t.e>0&&P>=-6?P>=0?T.Jjb(i,A-mt(t.e),\".\"):(T.tgb(i,e-1,e-1,\"0.\"),T.Jjb(i,e+1,T.xjb(C.Vjb,0,-mt(P)-1))):(A-e>=1&&(T.Jjb(i,e,\".\"),++A),T.Jjb(i,A,\"E\"),P>0&&T.Jjb(i,++A,\"+\"),T.Jjb(i,++A,\"\"+Q0(h1(P)))),t.g=i.a,t.g))},C.lkb=function(t){C.akb();var e;if(!isNaN(t)&&!isFinite(t)||isNaN(t))throw Qt(new T.Oib(\"Infinite or NaN\"));C.dkb(this,(e=c.Szb(t),e.toPrecision(20)))},C.mkb=function(t){this.f=t,this.e=2,this.a=C.skb(t)},C.nkb=function(t,e){C.akb(),C.lkb.call(this,t),C.ekb(this,e)},C.okb=function(t,e){this.e=e,this.a=C.tkb(t),this.a<54?this.f=nn(t):this.c=(C.Lkb(),et(t,0)>=0?C.mlb(t):C.Ykb(C.mlb(W1(t))))},C.pkb=function(t){C.rkb.call(this,t,0)},C.qkb=function(t,e){this.e=e,C.hkb(this,(c.Gzb(t),t))},C.rkb=function(t,e){C.qkb.call(this,t,e)},C.skb=function(t){var e,A;return t>-0x800000000000&&t<0x800000000000?t==0?0:(e=t<0,e&&(t=-t),A=mt(k.Math.floor(k.Math.log(t)/.6931471805599453)),(!e||t!=k.Math.pow(2,A))&&++A,A):C.tkb(h1(t))},C.tkb=function(t){var e;return et(t,0)<0&&(t=$0(t)),e=Gt(g0(t,32)),64-(e!=0?Je(e):Je(Gt(t))+32)},C.vkb=function(t,e,A){var P,r,i,D,u,o,Q,L,w;return i=C.Rkb(t,e),D=i[0],o=i[1],o.e==0?new C.rkb(D,2):(Q=t.e*e.e,C.tlb(e)<54?(u=(w=o.d>1?c.Vzb(o.a[0],o.a[1]):c.Vzb(o.a[0],0),o.e>0?w:W1(w)),r=(L=e.d>1?c.Vzb(e.a[0],e.a[1]):c.Vzb(e.a[0],0),e.e>0?L:W1(L)),P=dn(T1(et(u,0)<0?W1(u):u,1),et(r,0)<0?W1(r):r)?-1:g1(T1(et(u,0)<0?W1(u):u,1),et(r,0)<0?W1(r):r)?1:0,P=C.Bkb(C.blb(D,0)?1:0,Q*(5+P),A)):(P=C.Okb(C._kb(o.e<0?o.e==0?o:new C.flb(-o.e,o.d,o.a):o),e.e<0?e.e==0?e:new C.flb(-e.e,e.d,e.a):e),P=C.Bkb(C.blb(D,0)?1:0,Q*(5+P),A)),P!=0?C.tlb(D)<54?C.Ekb((L=D.d>1?c.Vzb(D.a[0],D.a[1]):c.Vzb(D.a[0],0),B1(D.e>0?L:W1(L),l.Ieb(P)))):(D=C.Llb(D,(C.Lkb(),gn(l.Ieb(P),0)?C.mlb(l.Ieb(P)):C.Ykb(C.mlb(W1(l.Ieb(P)))))),new C.rkb(D,2)):new C.rkb(D,2))},C.wkb=function(t,e,A){var P,r,i,D,u;return i=(r=t/e,r>0?k.Math.floor(r):k.Math.ceil(r)),D=t%e,u=en(t*e,0),D!=0&&(P=en(k.Math.abs(D)*2,k.Math.abs(e)),i+=C.Bkb(mt(i)&1,u*(5+P),A)),new C.mkb(i)},C.Bkb=function(t,e,A){var P;switch(P=0,A.b){case 7:if(e!=0)throw Qt(new T.ygb(\"Rounding necessary\"));break;case 0:P=e==0?0:e<0?-1:1;break;case 2:P=k.Math.max(e==0?0:e<0?-1:1,0);break;case 3:P=k.Math.min(e==0?0:e<0?-1:1,0);break;case 4:k.Math.abs(e)>=5&&(P=e==0?0:e<0?-1:1);break;case 5:k.Math.abs(e)>5&&(P=e==0?0:e<0?-1:1);break;case 6:k.Math.abs(e)+t>5&&(P=e==0?0:e<0?-1:1)}return P},C.Ckb=function(t){if(t<n1)throw Qt(new T.ygb(\"Overflow\"));if(t>Mt)throw Qt(new T.ygb(\"Underflow\"));return mt(t)},C.Ekb=function(t){return et(t,0)==0&&2<C.$jb.length?C.$jb[2]:new C.okb(t,2)},G(31,123,{4:1,32:1,123:1,31:1},C.lkb,C.mkb,C.nkb,C.okb,C.pkb,C.rkb),U.Rb=function(t){return C.bkb(this,t)},U.Zc=function(){return C.ckb(this)},U.lb=function(t){var e;return this===t?!0:Yt(t,31)?(e=t,this.e==e.e&&C.bkb(this,e)==0):!1},U.nb=function(){var t;return this.b!=0?this.b:this.a<54?(t=h1(this.f),this.b=Gt(Z(t,-1)),this.b=33*this.b+Gt(Z(a1(t,32),-1)),this.b=17*this.b+mt(this.e),this.b):(this.b=17*C.Vkb(this.c)+mt(this.e),this.b)},U.$c=function(){return this.e<=-32||this.e>(this.d>0?this.d:k.Math.floor((this.a-1)*kA)+1)?0:C.Wkb(this.e==0||this.a==0&&this.f!=-1?(!this.c&&(this.c=C.slb(h1(this.f))),this.c):this.e<0?C.Xkb((!this.c&&(this.c=C.slb(h1(this.f))),this.c),C.jmb(-this.e)):C.Qkb((!this.c&&(this.c=C.slb(h1(this.f))),this.c),C.jmb(this.e)))},U.ob=function(){return C.kkb(this)},U.a=0,U.b=0,U.d=0,U.e=0,U.f=0,l.Qbb=O(31),C.Lkb=function(){C.Lkb=u1;var t;for(C.Gkb=new C.dlb(1,1),C.Ikb=new C.dlb(1,10),C.Kkb=new C.dlb(0,0),C.Fkb=new C.dlb(-1,1),C.Hkb=v(F(l.Rbb,1),L0,23,0,[C.Kkb,C.Gkb,new C.dlb(1,2),new C.dlb(1,3),new C.dlb(1,4),new C.dlb(1,5),new C.dlb(1,6),new C.dlb(1,7),new C.dlb(1,8),new C.dlb(1,9),C.Ikb]),C.Jkb=d(l.Rbb,L0,23,32,0,1),t=0;t<C.Jkb.length;t++)C.Jkb[t]=gn(T1(1,t),0)?C.mlb(T1(1,t)):C.Ykb(C.mlb(W1(T1(1,t))))},C.Mkb=function(t){},C.Nkb=function(t){return t.e<0?t.e==0?t:new C.flb(-t.e,t.d,t.a):t},C.Okb=function(t,e){return t.e>e.e?1:t.e<e.e?-1:t.d>e.d?t.e:t.d<e.d?-e.e:t.e*C.Olb(t.a,e.a,t.d)},C.Pkb=function(t){for(;t.d>0&&t.a[--t.d]==0;);t.a[t.d++]==0&&(t.e=0)},C.Qkb=function(t,e){var A,P,r,i,D,u,o,Q,L,w;if(e.e==0)throw Qt(new T.ygb(zD));return r=e.e,e.d==1&&e.a[0]==1?e.e>0||t.e==0?t:new C.flb(-t.e,t.d,t.a):(L=t.e,Q=t.d,P=e.d,Q+P==2?(w=G0(Z(Ct(t.a[0]),i1),Z(Ct(e.a[0]),i1)),L!=r&&(w=W1(w)),et(w,0)>=0?C.mlb(w):C.Ykb(C.mlb(W1(w)))):(A=Q!=P?Q>P?1:-1:C.Olb(t.a,e.a,Q),A==0?L==r?C.Gkb:C.Fkb:A==-1?C.Kkb:(D=Q-P+1,i=d(l.Z6,H,6,D,15,1),u=L==r?1:-1,P==1?C.Ilb(i,t.a,Q,e.a[0]):C.Glb(i,D,t.a,Q,e.a,P),o=new C.flb(u,D,i),C.Pkb(o),o)))},C.Rkb=function(t,e){var A,P,r,i,D,u,o,Q,L,w,s,h,b,g;if(i=e.e,i==0)throw Qt(new T.ygb(zD));return r=e.d,P=e.a,r==1?C.Hlb(t,P[0],i):(h=t.a,b=t.d,A=b!=r?b>r?1:-1:C.Olb(h,P,b),A<0?v(F(l.Rbb,1),L0,23,0,[C.Kkb,t]):(g=t.e,u=b-r+1,L=r,o=g==i?1:-1,D=d(l.Z6,H,6,u,15,1),Q=C.Glb(D,u,h,b,P,r),w=new C.flb(o,u,D),s=new C.flb(g,L,Q),C.Pkb(w),C.Pkb(s),v(F(l.Rbb,1),L0,23,0,[w,s])))},C.Skb=function(t,e){var A;return j1(t)===j1(e)?!0:Yt(e,23)?(A=e,t.e==A.e&&t.d==A.d&&C.Tkb(t,A.a)):!1},C.Tkb=function(t,e){var A;for(A=t.d-1;A>=0&&t.a[A]==e[A];A--);return A<0},C.Ukb=function(t){var e;if(t.b==-2){if(t.e==0)e=-1;else for(e=0;t.a[e]==0;e++);t.b=e}return t.b},C.Vkb=function(t){var e;if(t.c!=0)return t.c;for(e=0;e<t.a.length;e++)t.c=t.c*33+(t.a[e]&-1);return t.c=t.c*t.e,t.c},C.Wkb=function(t){var e;return e=t.a[0],t.e>0?e:-e|0},C.Xkb=function(t,e){return e.e==0||t.e==0?C.Kkb:(C.amb(),C.bmb(t,e))},C.Ykb=function(t){return t.e==0?t:new C.flb(-t.e,t.d,t.a)},C.Zkb=function(t,e){var A;if(e<0)throw Qt(new T.ygb(\"Negative exponent\"));if(e==0)return C.Gkb;if(e==1||C.Skb(t,C.Gkb)||C.Skb(t,C.Kkb))return t;if(!C.blb(t,0)){for(A=1;!C.blb(t,A);)++A;return C.Xkb(C.nlb(A*e),C.Zkb(C.alb(t,A),e))}return C.imb(t,e)},C.$kb=function(t,e){return e==0||t.e==0?t:e>0?C.ulb(t,e):C.ylb(t,-e)},C._kb=function(t){return t.e==0?t:C.wlb(t)},C.alb=function(t,e){return e==0||t.e==0?t:e>0?C.ylb(t,e):C.ulb(t,-e)},C.blb=function(t,e){var A,P,r;if(e==0)return(t.a[0]&1)!=0;if(e<0)throw Qt(new T.ygb(\"Negative bit address\"));if(r=e>>5,r>=t.d)return t.e<0;if(A=t.a[r],e=1<<(e&31),t.e<0){if(P=C.Ukb(t),r<P)return!1;P==r?A=-A:A=~A}return(A&e)!=0},C.clb=function(t){return C.Flb(t,0)},C.dlb=function(t,e){C.Lkb(),C.flb.call(this,t,1,v(F(l.Z6,1),H,6,15,[e]))},C.elb=function(t,e){C.flb.call(this,1,2,v(F(l.Z6,1),H,6,15,[t,e]))},C.flb=function(t,e,A){C.Lkb(),C.Mkb(this),this.e=t,this.d=e,this.a=A},C.glb=function(t){C.Lkb(),C.Mkb(this),t.length==0?(this.e=0,this.d=1,this.a=v(F(l.Z6,1),H,6,15,[0])):(this.e=1,this.d=t.length,this.a=t,C.Pkb(this))},C.hlb=function(t){C.Lkb(),C.ilb.call(this,t)},C.ilb=function(t){if(C.Mkb(this),c.Gzb(t),c.Szb(t).length==0)throw Qt(new T.Oib(\"Zero length BigInteger\"));C.qlb(this,t)},C.mlb=function(t){C.Lkb();var e,A;return A=Gt(t),e=Gt(g0(t,32)),e!=0?new C.elb(A,e):A>10||A<0?new C.dlb(1,A):C.Hkb[A]},C.nlb=function(t){var e,A,P;return t<C.Jkb.length?C.Jkb[t]:(A=t>>5,e=t&31,P=d(l.Z6,H,6,A+1,15,1),P[A]=1<<e,new C.flb(1,A+1,P))},C.qlb=function(t,e){var A,P,r,i,D,u,o,Q,L,w,s,h,b,g,B;for(h=c.Szb(e).length,o=h,c.Nzb(0,c.Szb(e).length),c.Szb(e).charCodeAt(0)==45?(w=-1,s=1,--h):(w=1,s=0),i=(C.Clb(),C.Blb)[10],r=h/i|0,B=h%i,B!=0&&++r,u=d(l.Z6,H,6,r,15,1),A=C.Alb[8],D=0,b=s+(B==0?i:B),g=s;g<o;g=b,b=g+i)P=T.Khb((c.Mzb(g,b,c.Szb(e).length),c.Szb(e).substr(g,b-g)),n1,Mt),Q=(C.amb(),C.emb(u,u,D,A)),Q+=C.Plb(u,D,P),u[D++]=Q;L=D,t.e=w,t.d=L,t.a=u,C.Pkb(t)},C.slb=function(t){return C.Lkb(),et(t,0)>=0?C.mlb(t):C.Ykb(C.mlb(W1(t)))},G(23,123,{4:1,32:1,123:1,23:1},C.dlb,C.elb,C.flb,C.glb,C.hlb),U.Rb=function(t){return C.Okb(this,t)},U.Zc=function(){return T.Jhb(C.Flb(this,0))},U.lb=function(t){return C.Skb(this,t)},U.nb=function(){return C.Vkb(this)},U.$c=function(){return C.Wkb(this)},U.ob=function(){return C.clb(this)},U.b=-2,U.c=0,U.d=0,U.e=0,l.Rbb=O(23),C.tlb=function(t){var e,A,P;return t.e==0?0:(e=t.d<<5,A=t.a[t.d-1],t.e<0&&(P=C.Ukb(t),P==t.d-1&&(--A,A=A|0)),e-=Je(A),e)},C.ulb=function(t,e){var A,P,r,i;return A=e>>5,e&=31,r=t.d+A+(e==0?0:1),P=d(l.Z6,H,6,r,15,1),C.vlb(P,t.a,A,e),i=new C.flb(t.e,r,P),C.Pkb(i),i},C.vlb=function(t,e,A,P){var r,i,D;if(P==0)T.Qjb(e,0,t,A,t.length-A);else for(D=32-P,t[t.length-1]=0,i=t.length-1;i>A;i--)t[i]|=e[i-A-1]>>>D,t[i-1]=e[i-A-1]<<P;for(r=0;r<A;r++)t[r]=0},C.wlb=function(t){var e,A,P,r;return r=t.d,A=r+1,e=d(l.Z6,H,6,A,15,1),C.xlb(e,t.a,r),P=new C.flb(t.e,A,e),C.Pkb(P),P},C.xlb=function(t,e,A){var P,r,i;for(P=0,r=0;r<A;r++)i=e[r],t[r]=i<<1|P,P=i>>>31;P!=0&&(t[A]=P)},C.ylb=function(t,e){var A,P,r,i,D;if(P=e>>5,e&=31,P>=t.d)return t.e<0?(C.Lkb(),C.Fkb):(C.Lkb(),C.Kkb);if(i=t.d-P,r=d(l.Z6,H,6,i+1,15,1),C.zlb(r,i,t.a,P,e),t.e<0){for(A=0;A<P&&t.a[A]==0;A++);if(A<P||e>0&&t.a[A]<<32-e!=0){for(A=0;A<i&&r[A]==-1;A++)r[A]=0;A==i&&++i,++r[A]}}return D=new C.flb(t.e,i,r),C.Pkb(D),D},C.zlb=function(t,e,A,P,r){var i,D,u;for(i=!0,D=0;D<P;D++)i=i&A[D]==0;if(r==0)T.Qjb(A,P,t,0,e),D=e;else{for(u=32-r,i=i&A[D]<<u==0,D=0;D<e-1;D++)t[D]=A[D+P]>>>r|A[D+P+1]<<u;t[D]=A[D+P]>>>r,++D}return i},C.Clb=function(){C.Clb=u1,C.Alb=v(F(l.Z6,1),H,6,15,[n1,1162261467,z0,1220703125,362797056,1977326743,z0,387420489,hn,214358881,429981696,815730721,1475789056,170859375,Ne,410338673,612220032,893871739,128e7,1801088541,113379904,148035889,191102976,244140625,308915776,387420489,481890304,594823321,729e6,887503681,z0,1291467969,1544804416,1838265625,60466176]),C.Blb=v(F(l.Z6,1),H,6,15,[-1,-1,31,19,15,13,11,11,10,9,9,8,8,8,8,7,7,7,7,7,7,7,6,6,6,6,6,6,6,6,6,6,6,6,6,6,5])},C.Dlb=function(t){var e,A,P;return et(t,0)>=0?(A=G0(t,hn),P=Ze(t,hn)):(e=g0(t,1),A=G0(e,5e8),P=Ze(e,5e8),P=B1(T1(P,1),Z(t,1))),Pt(T1(P,32),Z(A,i1))},C.Elb=function(t,e){C.Clb();var A,P,r,i,D,u,o,Q,L,w,s,h,b,g;if(o=et(t,0)<0,o&&(t=W1(t)),et(t,0)==0)switch(e){case 0:return\"0\";case 1:return\"0.0\";case 2:return\"0.00\";case 3:return\"0.000\";case 4:return rP;case 5:return\"0.00000\";case 6:return\"0.000000\";default:return h=new T.Kjb,e<0?h.a+=\"0E+\":h.a+=\"0E\",h.a+=e==n1?\"2147483648\":\"\"+-e,h.a}L=18,w=d(l.W6,e0,6,L+1,15,1),A=L,g=t;do Q=g,g=G0(g,10),w[--A]=Gt(B1(48,x1(Q,V0(g,10))))&r1;while(et(g,0)!=0);if(r=x1(x1(x1(l.Ieb(L),l.Ieb(A)),l.Ieb(e)),1),e==0)return o&&(w[--A]=45),T.xjb(w,A,L-A);if(e>0&&et(r,-6)>=0){if(et(r,0)>=0){for(i=A+Gt(r),u=L-1;u>=i;u--)w[u+1]=w[u];return w[++i]=46,o&&(w[--A]=45),T.xjb(w,A,L-A+1)}for(D=2;dn(l.Ieb(D),B1(W1(r),1));D++)w[--A]=48;return w[--A]=46,w[--A]=48,o&&(w[--A]=45),T.xjb(w,A,L-A)}return b=A+1,P=L,s=new T.Ljb,o&&(s.a+=\"-\"),P-b>=1?(T.Ejb(s,w[A]),s.a+=\".\",s.a+=T.xjb(w,A+1,L-A-1)):s.a+=T.xjb(w,A,L-A),s.a+=\"E\",et(r,0)>0&&(s.a+=\"+\"),s.a+=\"\"+Q0(r),s.a},C.Flb=function(t,e){C.Clb();var A,P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S,p,M,z,q,x,J,E,N,ft,Lt,ot;if(J=t.e,b=t.d,r=t.a,J==0)switch(e){case 0:return\"0\";case 1:return\"0.0\";case 2:return\"0.00\";case 3:return\"0.000\";case 4:return rP;case 5:return\"0.00000\";case 6:return\"0.000000\";default:return q=new T.Kjb,e<0?q.a+=\"0E+\":q.a+=\"0E\",q.a+=-e,q.a}if(p=b*10+1+7,M=d(l.W6,e0,6,p+1,15,1),A=p,b==1)if(u=r[0],u<0){ot=Z(l.Ieb(u),i1);do g=ot,ot=G0(ot,10),M[--A]=48+Gt(x1(g,V0(ot,10)))&r1;while(et(ot,0)!=0)}else{ot=u;do g=ot,ot=ot/10|0,M[--A]=48+(g-ot*10)&r1;while(ot!=0)}else{N=d(l.Z6,H,6,b,15,1),Lt=b,T.Qjb(r,0,N,0,Lt);t:for(;;){for(x=0,Q=Lt-1;Q>=0;Q--)ft=B1(T1(x,32),Z(l.Ieb(N[Q]),i1)),m=C.Dlb(ft),N[Q]=Gt(m),x=Ct(Gt(a1(m,32)));S=Gt(x),B=A;do M[--A]=48+S%10&r1;while((S=S/10|0)!=0&&A!=0);for(P=9-B+A,o=0;o<P&&A>0;o++)M[--A]=48;for(w=Lt-1;N[w]==0;w--)if(w==0)break t;Lt=w+1}for(;M[A]==48;)++A}if(h=J<0,D=p-A-e-1,e==0)return h&&(M[--A]=45),T.xjb(M,A,p-A);if(e>0&&D>=-6){if(D>=0){for(L=A+D,s=p-1;s>=L;s--)M[s+1]=M[s];return M[++L]=46,h&&(M[--A]=45),T.xjb(M,A,p-A+1)}for(w=2;w<-D+1;w++)M[--A]=48;return M[--A]=46,M[--A]=48,h&&(M[--A]=45),T.xjb(M,A,p-A)}return E=A+1,i=p,z=new T.Ljb,h&&(z.a+=\"-\"),i-E>=1?(T.Ejb(z,M[A]),z.a+=\".\",z.a+=T.xjb(M,A+1,p-A-1)):z.a+=T.xjb(M,A,p-A),z.a+=\"E\",D>0&&(z.a+=\"+\"),z.a+=\"\"+D,z.a},C.Glb=function(t,e,A,P,r,i){var D,u,o,Q,L,w,s,h,b,g,B,m,S,p,M,z,q,x;for(B=d(l.Z6,H,6,P+1,15,1),m=d(l.Z6,H,6,i+1,15,1),S=i,o=Je(r[i-1]),o!=0?(C.vlb(m,r,0,o),C.vlb(B,A,0,o)):(T.Qjb(A,0,B,0,P),T.Qjb(r,0,m,0,i)),Q=m[S-1],w=e-1,s=P;w>=0;){if(L=0,B[s]==Q)L=-1;else if(p=B1(T1(Z(l.Ieb(B[s]),i1),32),Z(l.Ieb(B[s-1]),i1)),q=C.Jlb(p,Q),L=Gt(q),z=Gt(a1(q,32)),L!=0){b=0,x=0,M=!1,++L;do{if(--L,M)break;b=V0(Z(l.Ieb(L),i1),Z(l.Ieb(m[S-2]),i1)),x=B1(T1(l.Ieb(z),32),Z(l.Ieb(B[s-2]),i1)),g=B1(Z(l.Ieb(z),i1),Z(l.Ieb(Q),i1)),Je(Gt(g0(g,32)))<32?M=!0:z=Gt(g)}while(g1(An(b,VD),An(x,VD)))}if(L!=0&&(D=C.Klb(B,s-S,m,S,L),D!=0))for(--L,u=0,h=0;h<S;h++)u=B1(u,B1(Z(l.Ieb(B[s-S+h]),i1),Z(l.Ieb(m[h]),i1))),B[s-S+h]=Gt(u),u=g0(u,32);t[w]=L,--s,--w}return o!=0?(C.zlb(m,S,B,0,o),m):(T.Qjb(B,0,m,0,i),B)},C.Hlb=function(t,e,A){var P,r,i,D,u,o,Q,L,w,s,h,b,g;return h=t.a,b=t.d,g=t.e,b==1?(P=Z(l.Ieb(h[0]),i1),r=Z(l.Ieb(e),i1),i=G0(P,r),Q=Ze(P,r),g!=A&&(i=W1(i)),g<0&&(Q=W1(Q)),v(F(l.Rbb,1),L0,23,0,[(C.Lkb(),et(i,0)>=0?C.mlb(i):C.Ykb(C.mlb(W1(i)))),et(Q,0)>=0?C.mlb(Q):C.Ykb(C.mlb(W1(Q)))])):(u=b,o=g==A?1:-1,D=d(l.Z6,H,6,u,15,1),L=v(F(l.Z6,1),H,6,15,[C.Ilb(D,h,b,e)]),w=new C.flb(o,u,D),s=new C.flb(g,1,L),C.Pkb(w),C.Pkb(s),v(F(l.Rbb,1),L0,23,0,[w,s]))},C.Ilb=function(t,e,A,P){var r,i,D,u,o,Q,L;for(Q=0,i=Z(l.Ieb(P),i1),u=A-1;u>=0;u--)L=Pt(T1(Q,32),Z(l.Ieb(e[u]),i1)),et(L,0)>=0?(o=G0(L,i),Q=Ze(L,i)):(r=g0(L,1),D=l.Ieb(P>>>1),o=G0(r,D),Q=Ze(r,D),Q=B1(T1(Q,1),Z(L,1)),(P&1)!=0&&(et(o,Q)<=0?Q=x1(Q,o):XD(x1(o,Q),i)?(Q=B1(Q,x1(i,o)),o=x1(o,1)):(Q=B1(Q,x1(T1(i,1),o)),o=x1(o,2)))),t[u]=Gt(Z(o,i1));return Gt(Q)},C.Jlb=function(t,e){var A,P,r,i,D;return P=Z(l.Ieb(e),i1),et(t,0)>=0?(i=G0(t,P),D=Ze(t,P)):(A=g0(t,1),r=l.Ieb(e>>>1),i=G0(A,r),D=Ze(A,r),D=B1(T1(D,1),Z(t,1)),(e&1)!=0&&(et(i,D)<=0?D=x1(D,i):XD(x1(i,D),P)?(D=B1(D,x1(P,i)),i=x1(i,1)):(D=B1(D,x1(T1(P,1),i)),i=x1(i,2)))),Pt(T1(D,32),Z(i,i1))},C.Klb=function(t,e,A,P,r){var i,D,u;for(i=0,D=0,u=0;u<P;u++)i=(C.amb(),B1(V0(Z(l.Ieb(A[u]),i1),Z(l.Ieb(r),i1)),Z(Ct(Gt(i)),i1))),D=B1(x1(Z(l.Ieb(t[e+u]),i1),Z(i,i1)),D),t[e+u]=Gt(D),D=a1(D,32),i=g0(i,32);return D=B1(x1(Z(l.Ieb(t[e+P]),i1),i),D),t[e+P]=Gt(D),Gt(a1(D,32))},C.Llb=function(t,e){var A,P,r,i,D,u,o,Q,L,w,s,h,b;if(D=t.e,o=e.e,D==0)return e;if(o==0)return t;if(i=t.d,u=e.d,i+u==2)return A=Z(Ct(t.a[0]),i1),P=Z(Ct(e.a[0]),i1),D==o?(L=B1(A,P),b=Gt(L),h=Gt(g0(L,32)),h==0?new C.dlb(D,b):new C.flb(D,2,v(F(l.Z6,1),H,6,15,[b,h]))):(C.Lkb(),gn(D<0?x1(P,A):x1(A,P),0)?C.mlb(D<0?x1(P,A):x1(A,P)):C.Ykb(C.mlb(W1(D<0?x1(P,A):x1(A,P)))));if(D==o)s=D,w=i>=u?C.Mlb(t.a,i,e.a,u):C.Mlb(e.a,u,t.a,i);else{if(r=i!=u?i>u?1:-1:C.Olb(t.a,e.a,i),r==0)return C.Lkb(),C.Kkb;r==1?(s=D,w=C.Rlb(t.a,i,e.a,u)):(s=o,w=C.Rlb(e.a,u,t.a,i))}return Q=new C.flb(s,w.length,w),C.Pkb(Q),Q},C.Mlb=function(t,e,A,P){var r;return r=d(l.Z6,H,6,e+1,15,1),C.Nlb(r,t,e,A,P),r},C.Nlb=function(t,e,A,P,r){var i,D;if(i=B1(Z(l.Ieb(e[0]),i1),Z(l.Ieb(P[0]),i1)),t[0]=Gt(i),i=a1(i,32),A>=r){for(D=1;D<r;D++)i=B1(i,B1(Z(l.Ieb(e[D]),i1),Z(l.Ieb(P[D]),i1))),t[D]=Gt(i),i=a1(i,32);for(;D<A;D++)i=B1(i,Z(l.Ieb(e[D]),i1)),t[D]=Gt(i),i=a1(i,32)}else{for(D=1;D<A;D++)i=B1(i,B1(Z(l.Ieb(e[D]),i1),Z(l.Ieb(P[D]),i1))),t[D]=Gt(i),i=a1(i,32);for(;D<r;D++)i=B1(i,Z(l.Ieb(P[D]),i1)),t[D]=Gt(i),i=a1(i,32)}et(i,0)!=0&&(t[D]=Gt(i))},C.Olb=function(t,e,A){var P;for(P=A-1;P>=0&&t[P]==e[P];P--);return P<0?0:dn(Z(l.Ieb(t[P]),i1),Z(l.Ieb(e[P]),i1))?-1:1},C.Plb=function(t,e,A){var P,r;for(P=Z(l.Ieb(A),i1),r=0;et(P,0)!=0&&r<e;r++)P=B1(P,Z(l.Ieb(t[r]),i1)),t[r]=Gt(P),P=a1(P,32);return Gt(P)},C.Qlb=function(t,e){var A,P,r,i,D,u,o,Q,L,w;if(D=t.e,o=e.e,o==0)return t;if(D==0)return e.e==0?e:new C.flb(-e.e,e.d,e.a);if(i=t.d,u=e.d,i+u==2)return A=Z(Ct(t.a[0]),i1),P=Z(Ct(e.a[0]),i1),D<0&&(A=W1(A)),o<0&&(P=W1(P)),C.Lkb(),gn(x1(A,P),0)?C.mlb(x1(A,P)):C.Ykb(C.mlb(W1(x1(A,P))));if(r=i!=u?i>u?1:-1:C.Olb(t.a,e.a,i),r==-1)w=-o,L=D==o?C.Rlb(e.a,u,t.a,i):C.Mlb(e.a,u,t.a,i);else if(w=D,D==o){if(r==0)return C.Lkb(),C.Kkb;L=C.Rlb(t.a,i,e.a,u)}else L=C.Mlb(t.a,i,e.a,u);return Q=new C.flb(w,L.length,L),C.Pkb(Q),Q},C.Rlb=function(t,e,A,P){var r;return r=d(l.Z6,H,6,e,15,1),C.Slb(r,t,e,A,P),r},C.Slb=function(t,e,A,P,r){var i,D;for(i=0,D=0;D<r;D++)i=B1(i,x1(Z(l.Ieb(e[D]),i1),Z(l.Ieb(P[D]),i1))),t[D]=Gt(i),i=a1(i,32);for(;D<A;D++)i=B1(i,Z(l.Ieb(e[D]),i1)),t[D]=Gt(i),i=a1(i,32)},C.Tlb=function(){C.Tlb=u1,new C.Vlb(34,(C.tmb(),C.pmb)),new C.Vlb(7,C.pmb),new C.Vlb(16,C.pmb),new C.Vlb(0,C.qmb)},C.Ulb=function(){C.Tlb(),C.Vlb.call(this,4,(C.tmb(),C.qmb))},C.Vlb=function(t,e){c.Azb(t>=0,\"Digits < 0\"),c.Hzb(e,\"null RoundingMode\"),this.a=t,this.b=e},G(101,1,{4:1,101:1},C.Ulb,C.Vlb),U.lb=function(t){return Yt(t,101)&&t.a==this.a&&t.b==this.b},U.nb=function(){return this.a<<3|this.b.b},U.ob=function(){return\"precision=\"+this.a+\" roundingMode=\"+this.b},U.a=0,l.Sbb=O(101),C.amb=function(){C.amb=u1;var t,e;for(C.Zlb=d(l.Rbb,L0,23,32,0,1),C.$lb=d(l.Rbb,L0,23,32,0,1),C._lb=v(F(l.Z6,1),H,6,15,[1,10,100,1e3,Z0,uP,1e6,1e7,1e8,hn]),t=1,e=0;e<=18;e++)C.Zlb[e]=(C.Lkb(),et(t,0)>=0?C.mlb(t):C.Ykb(C.mlb(W1(t)))),C.$lb[e]=gn(T1(t,e),0)?C.mlb(T1(t,e)):C.Ykb(C.mlb(W1(T1(t,e)))),t=V0(t,5);for(;e<C.$lb.length;e++)C.Zlb[e]=C.Xkb(C.Zlb[e-1],C.Zlb[1]),C.$lb[e]=C.Xkb(C.$lb[e-1],(C.Lkb(),C.Ikb))},C.bmb=function(t,e){C.amb();var A,P,r,i,D,u,o,Q,L;return e.d>t.d&&(u=t,t=e,e=u),e.d<63?C.hmb(t,e):(D=(t.d&-2)<<4,Q=C.alb(t,D),L=C.alb(e,D),P=C.Qlb(t,C.$kb(Q,D)),r=C.Qlb(e,C.$kb(L,D)),o=C.bmb(Q,L),A=C.bmb(P,r),i=C.bmb(C.Qlb(Q,P),C.Qlb(r,L)),i=C.Llb(C.Llb(i,o),A),i=C.$kb(i,D),o=C.$kb(o,D<<1),C.Llb(C.Llb(o,i),A))},C.cmb=function(t,e,A,P,r){e==0||P==0||(e==1?r[P]=C.emb(r,A,P,t[0]):P==1?r[e]=C.emb(r,t,e,A[0]):C.dmb(t,A,r,e,P))},C.dmb=function(t,e,A,P,r){var i,D,u,o;if(j1(t)===j1(e)&&P==r){C.kmb(t,P,A);return}for(u=0;u<P;u++){for(D=0,i=t[u],o=0;o<r;o++)D=B1(B1(V0(Z(l.Ieb(i),i1),Z(l.Ieb(e[o]),i1)),Z(l.Ieb(A[u+o]),i1)),Z(Ct(Gt(D)),i1)),A[u+o]=Gt(D),D=g0(D,32);A[u+r]=Gt(D)}},C.emb=function(t,e,A,P){C.amb();var r,i;for(r=0,i=0;i<A;i++)r=B1(V0(Z(l.Ieb(e[i]),i1),Z(l.Ieb(P),i1)),Z(Ct(Gt(r)),i1)),t[i]=Gt(r),r=g0(r,32);return Gt(r)},C.fmb=function(t,e){var A,P,r,i,D,u,o,Q,L;return Q=t.e,Q==0?(C.Lkb(),C.Kkb):(P=t.d,A=t.a,P==1?(r=V0(Z(l.Ieb(A[0]),i1),Z(l.Ieb(e),i1)),o=Gt(r),D=Gt(g0(r,32)),D==0?new C.dlb(Q,o):new C.flb(Q,2,v(F(l.Z6,1),H,6,15,[o,D]))):(u=P+1,i=d(l.Z6,H,6,u,15,1),i[P]=C.emb(i,A,P,e),L=new C.flb(Q,u,i),C.Pkb(L),L))},C.gmb=function(t,e){return C.amb(),e<C._lb.length?C.fmb(t,C._lb[e]):C.Xkb(t,C.jmb(e))},C.hmb=function(t,e){var A,P,r,i,D,u,o,Q,L,w,s;return P=t.d,i=e.d,u=P+i,o=t.e!=e.e?-1:1,u==2?(L=V0(Z(Ct(t.a[0]),i1),Z(Ct(e.a[0]),i1)),s=Gt(L),w=Gt(g0(L,32)),w==0?new C.dlb(o,s):new C.flb(o,2,v(F(l.Z6,1),H,6,15,[s,w]))):(A=t.a,r=e.a,D=d(l.Z6,H,6,u,15,1),C.cmb(A,P,r,i,D),Q=new C.flb(o,u,D),C.Pkb(Q),Q)},C.imb=function(t,e){C.amb();var A,P;for(P=(C.Lkb(),C.Gkb),A=t;e>1;e>>=1)(e&1)!=0&&(P=C.Xkb(P,A)),A.d==1?A=C.Xkb(A,A):A=new C.glb(C.kmb(A.a,A.d,d(l.Z6,H,6,A.d<<1,15,1)));return P=C.Xkb(P,A),P},C.jmb=function(t){C.amb();var e,A,P,r;if(e=mt(t),t<C.$lb.length)return C.$lb[e];if(t<=50)return C.Zkb((C.Lkb(),C.Ikb),e);if(t<=1e3)return C.$kb(C.Zkb(C.Zlb[1],e),e);if(t>1e6)throw Qt(new T.ygb(\"power of ten too big\"));if(t<=Mt)return C.$kb(C.Zkb(C.Zlb[1],e),e);for(P=C.Zkb(C.Zlb[1],Mt),r=P,A=h1(t-Mt),e=mt(t%Mt);et(A,Mt)>0;)r=C.Xkb(r,P),A=x1(A,Mt);for(r=C.Xkb(r,C.Zkb(C.Zlb[1],e)),r=C.$kb(r,Mt),A=h1(t-Mt);et(A,Mt)>0;)r=C.$kb(r,Mt),A=x1(A,Mt);return r=C.$kb(r,e),r},C.kmb=function(t,e,A){var P,r,i,D,u;for(i=0;i<e;i++){for(P=0,u=i+1;u<e;u++)P=B1(B1(V0(Z(l.Ieb(t[i]),i1),Z(l.Ieb(t[u]),i1)),Z(l.Ieb(A[i+u]),i1)),Z(Ct(Gt(P)),i1)),A[i+u]=Gt(P),P=g0(P,32);A[i+e]=Gt(P)}for(C.xlb(A,A,e<<1),P=0,r=0,D=0;r<e;++r,D++)P=B1(B1(V0(Z(l.Ieb(t[r]),i1),Z(l.Ieb(t[r]),i1)),Z(l.Ieb(A[D]),i1)),Z(Ct(Gt(P)),i1)),A[D]=Gt(P),P=g0(P,32),++D,P=B1(P,Z(l.Ieb(A[D]),i1)),A[D]=Gt(P),P=g0(P,32);return A},C.tmb=function(){C.tmb=u1,C.smb=new C.umb(\"UP\",0),C.mmb=new C.umb(\"DOWN\",1),C.lmb=new C.umb(\"CEILING\",2),C.nmb=new C.umb(\"FLOOR\",3),C.qmb=new C.umb(\"HALF_UP\",4),C.omb=new C.umb(\"HALF_DOWN\",5),C.pmb=new C.umb(\"HALF_EVEN\",6),C.rmb=new C.umb(\"UNNECESSARY\",7)},C.umb=function(t,e){vA.call(this,t,e)},C.vmb=function(){return C.tmb(),v(F(l.Tbb,1),L0,73,0,[C.smb,C.mmb,C.lmb,C.nmb,C.qmb,C.omb,C.pmb,C.rmb])},G(73,56,{4:1,32:1,56:1,73:1},C.umb),l.Tbb=Oe(73,C.vmb),V1.wmb=function(t,e){return T.Wib(t.a,e.a)},V1.xmb=function(t){this.a=t},G(117,1,FP),U.Rb=function(t){return V1.wmb(this,t)},U.lb=function(t){var e;return t===this?!0:Yt(t,117)?(e=t,T._ib(this.a,e.a)):!1},U.nb=function(){return T.ejb(this.a)},U.ob=function(){return this.a},l.Ubb=O(117),V1.Cmb=function(){V1.Cmb=u1,c.nzb()},G(443,1,{}),l.Wbb=O(443),D0.Dmb=function(t,e){return D0.Fmb(e,t.a)},D0.Emb=function(t,e){return D0.Fmb(e,t.a)},D0.Fmb=function(t,e){return t.toFixed(e)},D0.Gmb=function(t){var e=/^#?0\\.(0+)$/.exec(t);if(!e)throw new Error(\"unimplemented DecimalFormat with pattern \"+t);return e[1].length},D0.Hmb=function(t){this.a=D0.Gmb(t)},D0.Imb=function(t){D0.Hmb.call(this,t)},G(127,443,{},D0.Hmb,D0.Imb),U.a=0,l.Vbb=O(127),y.uub=function(t,e,A){var P;return P=t.get(e),P==null&&!t.containsKey(e)?A:P},y.vub=function(t,e,A){var P;return P=t.get(e),P??t.put(e,A)},y.wub=function(t,e,A){return t.containsKey(e)?t.put(e,A):null},y.xub=function(t){return gt.Tyb(t.ad().Ub(),gt.dyb(new y.zub,new y.Dub))},y.Jmb=function(t){t.ad().clear()},y.Kmb=function(t,e){var A,P,r;return A=e.fd(),r=e.gd(),P=t.get(A),!(!(j1(r)===j1(P)||r!=null&&T.Oc(r,P))||P==null&&!t.containsKey(A))},y.Lmb=function(t,e,A){var P,r,i;for(r=t.ad().Sb();r.cd();)if(P=r.dd(),i=P.fd(),j1(e)===j1(i)||e!=null&&T.Oc(e,i))return A&&(P=new y.$ob(P.fd(),P.gd()),r.ed()),P;return null},y.Mmb=function(t){return t.size()==0},y.Nmb=function(t){return new y.sob(t)},y.Omb=function(t){return t.ad().size()},y.Pmb=function(t,e){return e===t?\"(this Map)\":e==null?Pe:Xn(e)},y.Qmb=function(t){return new y.Eob(t)},y.Xmb=function(t){return t?t.gd():null},G(108,1,_r),U.getOrDefault=function(t,e){var A;return A=this.get(t),A==null&&!this.containsKey(t)?e:A},U.putIfAbsent=function(t,e){var A;return A=this.get(t),A??this.put(t,e)},U.replace=function(t,e){return this.containsKey(t)?this.put(t,e):null},U.clear=function(){y.Jmb(this)},U._c=function(t){return y.Kmb(this,t)},U.containsKey=function(t){return!!y.Lmb(this,t,!1)},U.containsValue=function(t){var e,A,P;for(A=this.ad().Sb();A.cd();)if(e=A.dd(),P=e.gd(),j1(t)===j1(P)||t!=null&&T.Oc(t,P))return!0;return!1},U.lb=function(t){var e,A,P;if(t===this)return!0;if(!Yt(t,112)||(P=t,this.size()!=P.size()))return!1;for(A=P.ad().Sb();A.cd();)if(e=A.dd(),!this._c(e))return!1;return!0},U.get=function(t){return y.Xmb(y.Lmb(this,t,!1))},U.nb=function(){return y.Arb(this.ad())},U.isEmpty=function(){return y.Mmb(this)},U.keySet=function(){return y.Nmb(this)},U.put=function(t,e){throw Qt(new T.Tjb(\"Put not supported on this map\"))},U.putAll=function(t){var e,A;for(c.Gzb(t),A=t.ad().Sb();A.cd();)e=A.dd(),this.put(e.fd(),e.gd())},U.remove=function(t){return y.Xmb(y.Lmb(this,t,!0))},U.size=function(){return y.Omb(this)},U.ob=function(){var t,e,A;for(A=new y.Fvb(\", \",\"{\",\"}\"),e=this.ad().Sb();e.cd();)t=e.dd(),y.Cvb(A,y.Pmb(this,t.fd())+\"=\"+y.Pmb(this,t.gd()));return A.a?c.Szb(A.e).length==0?A.a.a:A.a.a+(\"\"+A.e):A.c},U.values=function(){return y.Qmb(this)},l.kcb=O(108),y.inb=function(t){y.unb(t)},y.jnb=function(t,e){return pe(e)?y.pnb(t,c.Szb(e)):!!y.Ctb(t.a,e)},y.knb=function(t,e){return y.lnb(e,t.c)||y.lnb(e,t.a)},y.lnb=function(t,e){var A,P;for(P=e.Sb();P.cd();)if(A=P.dd(),y.ntb(t,A.gd()))return!0;return!1},y.mnb=function(t){return new y.Mnb(t)},y.nnb=function(t,e){return pe(e)?y.onb(t,c.Szb(e)):y.Xmb(y.Ctb(t.a,e))},y.onb=function(t,e){return e==null?y.Xmb(y.Ctb(t.a,null)):y.Ytb(t.c,e)},y.pnb=function(t,e){return e==null?!!y.Ctb(t.a,null):y.Xtb(t.c,e)},y.qnb=function(t,e,A){return pe(e)?y.rnb(t,c.Szb(e),A):y.Etb(t.a,e,A)},y.rnb=function(t,e,A){return e==null?y.Etb(t.a,null,A):y.$tb(t.c,e,A)},y.snb=function(t,e){return pe(e)?y.tnb(t,c.Szb(e)):y.Ftb(t.a,e)},y.tnb=function(t,e){return e==null?y.Ftb(t.a,null):y._tb(t.c,e)},y.unb=function(t){t.a=new y.Gtb(t),t.c=new y.aub(t),++t.b},y.vnb=function(t){return t.a.c+t.c.c},y.wnb=function(){y.unb(this)},G(314,108,_r),U.clear=function(){y.inb(this)},U.containsKey=function(t){return y.jnb(this,t)},U.containsValue=function(t){return y.knb(this,t)},U.ad=function(){return y.mnb(this)},U.get=function(t){return y.nnb(this,t)},U.put=function(t,e){return y.qnb(this,t,e)},U.remove=function(t){return y.snb(this,t)},U.size=function(){return y.vnb(this)},U.b=0,l.$bb=O(314),y.vvb=function(t){return new y.Avb(t)},y.wvb=function(t){var e;return gt.Tyb(t.Ub(),(e=gt.byb(new gt.Ayb,gt.Qxb(new gt.wyb,new gt.yyb,new gt.Myb,new gt.Nyb,v(F(l.ndb,1),L0,98,0,[(gt.Vxb(),gt.Uxb),gt.Txb]))),gt.Zxb(e,new gt.Dyb)))},G(438,43,Jn),U.Tb=function(){return new y.Avb(this)},U.lb=function(t){var e;return t===this?!0:!Yt(t,86)||(e=t,e.size()!=this.size())?!1:y.Gi(this,e)},U.nb=function(){return y.Arb(this)},U.removeAll=function(t){var e,A,P,r;if(c.Gzb(t),r=this.size(),r<t.size())for(e=this.Sb();e.cd();)A=e.dd(),t.contains(A)&&e.ed();else for(P=t.Sb();P.cd();)A=P.dd(),this.remove(A);return r!=this.size()},l.qcb=O(438),y.Jnb=function(t){y.unb(t.a)},y.Knb=function(t,e){return Yt(e,85)?y.Kmb(t.a,e):!1},y.Lnb=function(t){return y.vnb(t.a)},y.Mnb=function(t){this.a=t},G(143,438,Jn,y.Mnb),U.clear=function(){y.Jnb(this)},U.contains=function(t){return y.Knb(this,t)},U.Sb=function(){return new y.Wnb(this.a)},U.remove=function(t){var e;return y.Knb(this,t)?(e=t.fd(),y.snb(this.a,e),!0):!1},U.size=function(){return y.Lnb(this)},l.Zbb=O(143),y.pub=function(t,e){for(c.Gzb(e);t.cd();)gt.azb(e,t.dd())},y.qub=function(){throw Qt(new T.Sjb)},y.Snb=function(t){t.e=new y.eub(t.f.c),t.a=t.e,t.b=y.Tnb(t),t.d=t.f.b},y.Tnb=function(t){return t.a.cd()?!0:t.a!=t.e?!1:(t.a=new y.Jtb(t.f.a),t.a.cd())},y.Unb=function(t){return t.b},y.Vnb=function(t){var e;return c.Dzb(t.f.b,t.d),c.Ezb(t.b),t.c=t.a,e=t.a.dd(),t.b=y.Tnb(t),e},y.Wnb=function(t){this.f=t,y.Snb(this)},G(315,1,{},y.Wnb),U.bd=function(t){y.pub(this,t)},U.dd=function(){return y.Vnb(this)},U.cd=function(){return y.Unb(this)},U.ed=function(){c.Kzb(!!this.c),c.Dzb(this.f.b,this.d),this.c.ed(),this.c=null,this.b=y.Tnb(this),this.d=this.f.b},U.b=!1,U.d=0,l.Ybb=O(315),y._nb=function(t){},y.aob=function(t){return t.a<t.c.size()},y.bob=function(t){return c.Ezb(t.a<t.c.size()),t.c.getAtIndex(t.b=t.a++)},y.cob=function(t){c.Kzb(t.b!=-1),t.c.removeAtIndex(t.b),t.a=t.b,t.b=-1},y.dob=function(t){this.c=t,y._nb(this)},G(225,1,{},y.dob),U.bd=function(t){y.pub(this,t)},U.cd=function(){return y.aob(this)},U.dd=function(){return y.bob(this)},U.ed=function(){y.cob(this)},U.a=0,U.b=-1,l._bb=O(225),y.iob=function(t){y.cob(t)},y.job=function(t,e){y.dob.call(this,t),c.Izb(e,t.size()),this.a=e},G(226,225,{},y.job),U.ed=function(){y.iob(this)},l.acb=O(226),y.lob=function(t,e,A){c.Jzb(e,A,t.size()),this.c=t,this.a=e,this.b=A-e},G(154,96,G8,y.lob),U.addAtIndex=function(t,e){c.Izb(t,this.b),this.c.addAtIndex(this.a+t,e),++this.b},U.getAtIndex=function(t){return c.Fzb(t,this.b),this.c.getAtIndex(this.a+t)},U.removeAtIndex=function(t){var e;return c.Fzb(t,this.b),e=this.c.removeAtIndex(this.a+t),--this.b,e},U.setAtIndex=function(t,e){return c.Fzb(t,this.b),this.c.setAtIndex(this.a+t,e)},U.size=function(){return this.b},U.a=0,U.b=0,l.bcb=O(154),y.rob=function(t){var e;return e=t.a.ad().Sb(),new y.yob(e)},y.sob=function(t){this.a=t},G(227,438,Jn,y.sob),U.clear=function(){this.a.clear()},U.contains=function(t){return this.a.containsKey(t)},U.Sb=function(){return y.rob(this)},U.remove=function(t){return this.a.containsKey(t)?(this.a.remove(t),!0):!1},U.size=function(){return this.a.size()},l.ecb=O(227),y.yob=function(t){this.a=t},G(228,1,{},y.yob),U.bd=function(t){y.pub(this,t)},U.cd=function(){return this.a.cd()},U.dd=function(){var t;return t=this.a.dd(),t.fd()},U.ed=function(){this.a.ed()},l.dcb=O(228),y.Dob=function(t){var e;return e=t.a.ad().Sb(),new y.Lob(e)},y.Eob=function(t){this.a=t},G(136,43,WA,y.Eob),U.clear=function(){this.a.clear()},U.contains=function(t){return this.a.containsValue(t)},U.Sb=function(){return y.Dob(this)},U.size=function(){return this.a.size()},l.gcb=O(136),y.Job=function(t){return t.a.cd()},y.Kob=function(t){var e;return e=t.a.dd(),e.gd()},y.Lob=function(t){this.a=t},G(137,1,{},y.Lob),U.bd=function(t){y.pub(this,t)},U.cd=function(){return y.Job(this)},U.dd=function(){return y.Kob(this)},U.ed=function(){this.a.ed()},l.fcb=O(137),l.Tcb=Mu(),y.Qob=function(t){return t.c},y.Rob=function(t){return t.d},y.Sob=function(t,e){var A;return A=t.d,t.d=e,A},y.Tob=function(t,e){this.c=t,this.d=e},G(160,1,{160:1,85:1}),U.lb=function(t){var e;return Yt(t,85)?(e=t,y.Hub(this.c,e.fd())&&y.Hub(this.d,e.gd())):!1},U.fd=function(){return y.Qob(this)},U.gd=function(){return y.Rob(this)},U.nb=function(){return zP(this.c)^zP(this.d)},U.hd=function(t){return y.Sob(this,t)},U.ob=function(){return this.c+\"=\"+this.d},l.hcb=O(160),y.$ob=function(t,e){y.Tob.call(this,t,e)},G(144,160,{160:1,144:1,85:1},y.$ob),l.icb=O(144),G(442,1,{85:1}),U.lb=function(t){var e;return Yt(t,85)?(e=t,y.Hub(c.Szb(this.b.value[0]),e.fd())&&y.Hub(y.kub(this),e.gd())):!1},U.nb=function(){return zP(c.Szb(this.b.value[0]))^zP(y.kub(this))},U.ob=function(){return c.Szb(this.b.value[0])+\"=\"+y.kub(this)},l.jcb=O(442),y.cpb=function(t,e){var A,P;return A=e.fd(),P=y.Kvb(t,A),!!P&&y.Hub(P.d,e.gd())},y.dpb=function(t,e){var A;return A=e,!!y.Kvb(t,A)},y.epb=function(t,e){var A;return A=e,y.Xmb(y.Kvb(t,A))},y.fpb=function(t){return new y.spb(t)},G(233,108,{108:1,233:1,112:1,452:1,451:1}),U._c=function(t){return y.cpb(this,t)},U.containsKey=function(t){return y.dpb(this,t)},U.ad=function(){return new y.mpb(this)},U.get=function(t){return y.epb(this,t)},U.keySet=function(){return y.fpb(this)},l.ocb=O(233),y.lpb=function(t){return new y.fwb(t.b)},y.mpb=function(t){this.b=t},G(234,438,Jn,y.mpb),U.contains=function(t){return Yt(t,85)&&y.cpb(this.b,t)},U.Sb=function(){return y.lpb(this)},U.remove=function(t){var e;return Yt(t,85)?(e=t,y.Rvb(this.b,e)):!1},U.size=function(){return this.b.c},l.lcb=O(234),y.xvb=function(t){return new y.Bvb(t)},y.rpb=function(t){var e;return e=new y.fwb(new y.lwb(t.a).b),new y.Bpb(e)},y.spb=function(t){this.a=t},G(92,438,Jn,y.spb),U.Tb=function(){return new y.Bvb(this)},U.clear=function(){y.Ivb(this.a)},U.contains=function(t){return y.dpb(this.a,t)},U.Sb=function(){return y.rpb(this)},U.remove=function(t){return y.dpb(this.a,t)?(y.Qvb(this.a,t),!0):!1},U.size=function(){return this.a.c},l.ncb=O(92),y.zpb=function(t){return y.aob(t.a.a)},y.Apb=function(t){var e;return e=y.dwb(t.a),e.fd()},y.Bpb=function(t){this.a=t},G(93,1,{},y.Bpb),U.bd=function(t){y.pub(this,t)},U.cd=function(){return y.zpb(this)},U.dd=function(){return y.Apb(this)},U.ed=function(){y.ewb(this.a)},l.mcb=O(93),G(445,43,WA),U.add=function(t){return c.Lzb(y.Nub(this,t)),!0},U.addAll=function(t){return c.Gzb(t),c.Azb(t!=this,\"Can't add a queue to itself\"),y.Ei(this,t)},U.clear=function(){for(;y.Oub(this)!=null;);},l.pcb=O(445),y.Jpb=function(t,e){return y.Kpb(t,e),!0},y.Kpb=function(t,e){c.Gzb(e),$1(t.a,t.c,e),t.c=t.c+1&t.a.length-1,y.Npb(t)},y.Lpb=function(t,e){if(e==null)return!1;for(;t.a!=t.b;)if(T.Oc(e,y.hqb(t)))return!0;return!1},y.Mpb=function(t,e,A){var P,r,i;for(i=t.a.length-1,r=t.b,P=0;P<A;r=r+1&i,++P)$1(e,P,t.a[r])},y.Npb=function(t){var e,A,P;t.b==t.c&&(P=t.a.length,A=au(k.Math.max(8,P))<<1,t.b!=0?(e=c.ezb(t.a,A),y.Mpb(t,e,P),t.a=e,t.b=0):c.kzb(t.a,A),t.c=P)},y.Opb=function(t){return t.b==t.c},y.Ppb=function(t){return new y.jqb(t)},y.Qpb=function(t){var e;return e=t.a[t.b],e==null?null:($1(t.a,t.b,null),t.b=t.b+1&t.a.length-1,e)},y.Rpb=function(t,e){return y.Lpb(t,e)?(y.iqb(t),!0):!1},y.Spb=function(t,e){var A,P,r,i;return P=t.a.length-1,A=e-t.b&P,i=t.c-e&P,r=t.c-t.b&P,y.Ypb(A<r),A>=i?(y.Tpb(t,e),-1):(y.Upb(t,e),1)},y.Tpb=function(t,e){var A,P;for(A=t.a.length-1,t.c=t.c-1&A;e!=t.c;)P=e+1&A,$1(t.a,e,t.a[P]),e=P;$1(t.a,t.c,null)},y.Upb=function(t,e){var A,P;for(A=t.a.length-1;e!=t.b;)P=e-1&A,$1(t.a,e,t.a[P]),e=P;$1(t.a,t.b,null),t.b=t.b+1&A},y.Vpb=function(t){return t.c-t.b&t.a.length-1},y.Wpb=function(){this.a=d(l.Hbb,v1,1,8,5,1)},y.Ypb=function(t){if(!t)throw Qt(new y.mtb)},G(392,43,{5:1,36:1,43:1,38:1},y.Wpb),U.add=function(t){return y.Jpb(this,t)},U.clear=function(){this.b!=this.c&&(this.a=d(l.Hbb,v1,1,8,5,1),this.b=0,this.c=0)},U.contains=function(t){return y.Lpb(new y.jqb(this),t)},U.isEmpty=function(){return y.Opb(this)},U.Sb=function(){return y.Ppb(this)},U.remove=function(t){return y.Rpb(new y.jqb(this),t)},U.size=function(){return y.Vpb(this)},U.Tb=function(){return new y.Avb(this)},U.Vb=function(t){var e;return e=this.c-this.b&this.a.length-1,t.length<e&&(t=c.mzb(new Array(e),t)),y.Mpb(this,t,e),t.length>e&&l.I5(t,e,null),t},U.b=0,U.c=0,l.scb=O(392),y.fqb=function(t){t.a=t.d.b,t.b=t.d.c},y.gqb=function(t){return t.a!=t.b},y.hqb=function(t){var e;return c.Ezb(t.a!=t.b),e=t.d.a[t.a],y.Ypb(t.b==t.d.c&&e!=null),t.c=t.a,t.a=t.a+1&t.d.a.length-1,e},y.iqb=function(t){c.Kzb(t.c>=0),y.Spb(t.d,t.c)<0&&(t.a=t.a-1&t.d.a.length-1,t.b=t.d.c),t.c=-1},y.jqb=function(t){this.d=t,y.fqb(this)},G(197,1,{},y.jqb),U.bd=function(t){y.pub(this,t)},U.cd=function(){return y.gqb(this)},U.dd=function(){return y.hqb(this)},U.ed=function(){y.iqb(this)},U.a=0,U.b=0,U.c=-1,l.rcb=O(197),y.oqb=function(t){},y.pqb=function(t){return t.a<t.c.a.length},y.qqb=function(t){return c.Ezb(t.a<t.c.a.length),t.b=t.a++,t.c.a[t.b]},y.rqb=function(t){this.c=t,y.oqb(this)},G(20,1,{},y.rqb),U.bd=function(t){y.pub(this,t)},U.cd=function(){return y.pqb(this)},U.dd=function(){return y.qqb(this)},U.ed=function(){c.Kzb(this.b!=-1),y.Bj(this.c,this.a=this.b),this.b=-1},U.a=0,U.b=-1,l.tcb=O(20),y.wqb=function(t,e,A){var P;c.Azb(e<=A,e+\" > \"+A),P=c.Szb(t).length,c.Bzb(e,e,P)},y.xqb=function(t,e){return c.Czb(e),y.Bqb(t,d(l.V6,Y,6,e,15,1),0,e)},y.yqb=function(t,e){return c.Czb(e),y.Bqb(t,d(l.X6,Bt,6,e,15,1),0,e)},y.zqb=function(t,e){return c.Czb(e),y.Bqb(t,d(l.Z6,H,6,e,15,1),0,e)},y.Aqb=function(t,e){return c.Czb(e),y.Bqb(t,d(l.seb,Jt,6,e,15,1),0,e)},y.Bqb=function(t,e,A,P){var r,i;return i=c.Szb(t).length,r=k.Math.min(P,i)-A,c.dzb(t,A,e,0,r,!0),e},y.Cqb=function(t){y.Iqb(t,t.length)},y.Dqb=function(t,e){y.Jqb(t,t.length,e)},y.Eqb=function(t){y.Kqb(t,t.length)},y.Fqb=function(t){y.Lqb(t,t.length)},y.Gqb=function(t){y.Mqb(t,t.length)},y.Hqb=function(t){y.Nqb(t,t.length)},y.Iqb=function(t,e){var A;for(A=0;A<e;++A)t[A]=-1},y.Jqb=function(t,e,A){var P;for(P=0;P<e;++P)t[P]=A},y.Kqb=function(t,e){var A;for(A=0;A<e;++A)t[A]=0},y.Lqb=function(t,e){var A;for(A=0;A<e;++A)t[A]=2},y.Mqb=function(t,e){var A;for(A=0;A<e;++A)t[A]=-1},y.Nqb=function(t,e){var A;for(A=0;A<e;++A)t[A]=!1},y.Oqb=function(t){var e,A,P,r,i;for(i=1,A=t,P=0,r=A.length;P<r;++P)e=A[P],i=31*i+(e!=null?T.Sc(e):0),i=i|0;return i},y.Pqb=function(t,e,A,P){var r,i,D;for(r=e+1;r<A;++r)for(i=r;i>e&&P.Qb(t[i-1],t[i])>0;--i)D=t[i],l.I5(t,i,t[i-1]),l.I5(t,i-1,D)},y.Qqb=function(t,e,A,P,r,i,D,u){var o;for(o=A;i<D;)o>=P||e<A&&u.Qb(t[e],t[o])<=0?$1(r,i++,t[e++]):$1(r,i++,t[o++])},y.Rqb=function(t,e,A,P){var r;P=(y.htb(),P||y.gtb),r=c.Szb(t).slice(e,A),y.Sqb(r,t,e,A,-e,P)},y.Sqb=function(t,e,A,P,r,i){var D,u,o,Q;if(D=P-A,D<7){y.Pqb(e,A,P,i);return}if(o=A+r,u=P+r,Q=o+(u-o>>1),y.Sqb(e,t,o,Q,-r,i),y.Sqb(e,t,Q,u,-r,i),i.Qb(t[Q-1],t[Q])<=0){for(;A<P;)$1(e,A++,t[o++]);return}y.Qqb(t,o,Q,u,e,A,P,i)},y.Tqb=function(t){y.Rqb(t,0,t.length,null)},y.Uqb=function(t,e,A){c.Bzb(0,e,t.length),y.Rqb(t,0,e,A)},y.Vqb=function(t,e){y.Rqb(t,0,t.length,e)},y.Wqb=function(){return l.Qab},y.Xqb=function(){},G(269,k.Function,{},y.Xqb),U.jd=function(t,e){return en(t,e)},y.Zqb=function(){return l.Qab},y.$qb=function(){},G(457,k.Function,{},y.$qb),U.kd=function(t,e){return et(t,e)<0?-1:et(t,e)>0?1:0},y.arb=function(t,e){return c.Fzb(e,t.a.length),t.a[e]},y.brb=function(t){return t.a.length},y.crb=function(t,e){var A,P;for(P=t.a.length,e.length<P&&(e=c.mzb(new Array(P),e)),A=0;A<P;++A)$1(e,A,t.a[A]);return e.length>P&&l.I5(e,P,null),e},y.drb=function(t){c.Gzb(t),this.a=t},G(213,96,{4:1,36:1,43:1,96:1,38:1,84:1,129:1},y.drb),U.contains=function(t){return y.Zi(this,t)!=-1},U.getAtIndex=function(t){return y.arb(this,t)},U.setAtIndex=function(t,e){var A;return A=(c.Fzb(t,this.a.length),this.a[t]),$1(this.a,t,e),A},U.size=function(){return y.brb(this)},U.toArray=function(){return y.crb(this,d(l.Hbb,v1,1,this.a.length,5,1))},U.Vb=function(t){return y.crb(this,t)},l.vcb=O(213),y.krb=function(){return l.Qab},y.lrb=function(){},G(51,k.Function,{},y.lrb),U.jd=function(t,e){return t-e},y.nrb=function(t,e){var A;return y.srb(e),A=e/31|0,A<t.a.length&&((t.a[A]|0)>>>e%31&1)==1},y.orb=function(t){var e,A;return e=y.vrb(t.a),e==-1?0:(A=t.a[e]|0,e*31+(32-Je(A)))},y.prb=function(t,e){var A,P,r;if(y.srb(e),A=e/31|0,P=t.a.length,A>=P)return-1;for(r=(t.a[A]|0)&Mt<<e%31;r==0;){if(++A>=P)return-1;r=t.a[A]|0}return A*31+MP(r)},y.qrb=function(t,e){var A;y.srb(e),A=e/31|0,y.wrb(t.a,A),t.a[A]=t.a[A]|0|1<<e%31},y.rrb=function(){this.a=d(l.Z6,H,6,0,15,1)},y.srb=function(t){if(t<0)throw Qt(new T.Agb(\"bitIndex < 0: \"+t))},y.vrb=function(t){var e;for(e=t.length-1;e>=0&&(t[e]|0)==0;--e);return e},y.wrb=function(t,e){var A;A=e+1,A>t.length&&(c.Szb(t).length=A)},G(179,1,{179:1},y.rrb),U.lb=function(t){var e,A,P;if(this===t)return!0;if(!Yt(t,179)||(P=t,A=y.vrb(this.a),A!=y.vrb(P.a)))return!1;for(e=0;e<=A;e++)if((this.a[e]|0)!=(P.a[e]|0))return!1;return!0},U.nb=function(){var t,e,A,P;for(A=y.vrb(this.a),t=-2128831035^A,e=0;e<=A;e++)P=this.a[e]|0,t=t*vP&-1^P&255,t=t*vP&-1^P>>>8&255,t=t*vP&-1^P>>>16&255,t=t*vP&-1^P>>>24;return t},U.ob=function(){var t,e;if(y.orb(this)==0)return\"{}\";for(e=new T.Mjb(\"{\"),t=y.prb(this,0),e.a+=t;(t=y.prb(this,t+1))!=-1;)e.a+=\", \",e.a+=t;return e.a+=\"}\",e.a},l.wcb=O(179),y.Arb=function(t){var e,A,P;for(P=0,A=t.Sb();A.cd();)e=A.dd(),P=P+(e!=null?T.Sc(e):0),P=P|0;return P},y.Brb=function(t){var e,A,P;for(P=1,A=t.Sb();A.cd();)e=A.dd(),P=31*P+(e!=null?T.Sc(e):0),P=P|0;return P},y.Crb=function(t){return Yt(t,129)?new y.btb(t):new y.$rb(t)},y.Drb=function(t){return t.b.toArray()},y.Erb=function(t){this.b=t},G(185,1,{36:1,38:1},y.Erb),U.Tb=function(){return new y.Avb(this)},U.Ub=function(){return new gt.Vyb(this.Tb())},U.add=function(t){throw Qt(new T.Sjb)},U.addAll=function(t){throw Qt(new T.Sjb)},U.clear=function(){throw Qt(new T.Sjb)},U.contains=function(t){return this.b.contains(t)},U.containsAll=function(t){return this.b.containsAll(t)},U.isEmpty=function(){return this.b.isEmpty()},U.Sb=function(){return new y.Vrb(this.b.Sb())},U.remove=function(t){throw Qt(new T.Sjb)},U.removeAll=function(t){throw Qt(new T.Sjb)},U.retainAll=function(t){throw Qt(new T.Sjb)},U.size=function(){return this.b.size()},U.toArray=function(){return y.Drb(this)},U.ob=function(){return Xn(this.b)},l.ycb=O(185),y.Urb=function(){throw Qt(new T.Sjb)},y.Vrb=function(t){this.a=t},G(338,1,{},y.Vrb),U.bd=function(t){y.pub(this,t)},U.cd=function(){return this.a.cd()},U.dd=function(){return this.a.dd()},U.ed=function(){y.Urb()},l.xcb=O(338),y.$rb=function(t){y.Erb.call(this,t),this.a=t},G(186,185,{36:1,38:1,84:1},y.$rb),U.Tb=function(){return new y.Avb(this)},U.addAtIndex=function(t,e){throw Qt(new T.Sjb)},U.addAllAtIndex=function(t,e){throw Qt(new T.Sjb)},U.lb=function(t){return T.Oc(this.a,t)},U.getAtIndex=function(t){return this.a.getAtIndex(t)},U.nb=function(){return T.Sc(this.a)},U.indexOf=function(t){return this.a.indexOf(t)},U.isEmpty=function(){return this.a.isEmpty()},U.lastIndexOf=function(t){return this.a.lastIndexOf(t)},U.removeAtIndex=function(t){throw Qt(new T.Sjb)},U.setAtIndex=function(t,e){throw Qt(new T.Sjb)},U.subList=function(t,e){return new y.$rb(this.a.subList(t,e))},l.zcb=O(186),y.lsb=function(t,e){return t.c.containsKey(e)},y.msb=function(t,e){return t.c.get(e)},y.nsb=function(){throw Qt(new T.Sjb)},y.osb=function(t){this.c=t},G(335,1,{112:1},y.osb),U.getOrDefault=function(t,e){var A;return A=this.c.get(t),A==null&&!this.c.containsKey(t)?e:A},U.putIfAbsent=function(t,e){var A;return A=this.c.get(t),A??y.nsb()},U.replace=function(t,e){return this.c.containsKey(t)?y.nsb():null},U.clear=function(){throw Qt(new T.Sjb)},U.containsKey=function(t){return y.lsb(this,t)},U.containsValue=function(t){return this.c.containsValue(t)},U.ad=function(){return!this.a&&(this.a=new y.Msb(this.c.ad())),this.a},U.lb=function(t){return T.Oc(this.c,t)},U.get=function(t){return y.msb(this,t)},U.nb=function(){return T.Sc(this.c)},U.isEmpty=function(){return this.c.isEmpty()},U.keySet=function(){return!this.b&&(this.b=new y.Hsb(this.c.keySet())),this.b},U.put=function(t,e){return y.nsb()},U.putAll=function(t){throw Qt(new T.Sjb)},U.remove=function(t){throw Qt(new T.Sjb)},U.size=function(){return this.c.size()},U.ob=function(){return Xn(this.c)},U.values=function(){return!this.d&&(this.d=new y.Erb(this.c.values())),this.d},l.Dcb=O(335),y.Hsb=function(t){y.Erb.call(this,t)},G(187,185,qD,y.Hsb),U.Tb=function(){return new y.Avb(this)},U.lb=function(t){return T.Oc(this.b,t)},U.nb=function(){return T.Sc(this.b)},l.Fcb=O(187),y.Lsb=function(t,e){var A;for(A=0;A<e;++A)$1(t,A,new y.Wsb(t[A]))},y.Msb=function(t){y.Hsb.call(this,t)},G(336,187,qD,y.Msb),U.contains=function(t){return this.b.contains(t)},U.containsAll=function(t){return this.b.containsAll(t)},U.Sb=function(){var t;return t=this.b.Sb(),new y.Rsb(t)},U.toArray=function(){var t;return t=this.b.toArray(),y.Lsb(t,t.length),t},l.Ccb=O(336),y.Rsb=function(t){this.a=t},G(339,1,{},y.Rsb),U.bd=function(t){y.pub(this,t)},U.dd=function(){return new y.Wsb(this.a.dd())},U.cd=function(){return this.a.cd()},U.ed=function(){throw Qt(new T.Sjb)},l.Acb=O(339),y.Wsb=function(t){this.a=t},G(230,1,{85:1},y.Wsb),U.lb=function(t){return this.a.lb(t)},U.fd=function(){return this.a.fd()},U.gd=function(){return this.a.gd()},U.nb=function(){return this.a.nb()},U.hd=function(t){throw Qt(new T.Sjb)},U.ob=function(){return Xn(this.a)},l.Bcb=O(230),y.btb=function(t){y.$rb.call(this,t)},G(337,186,{36:1,38:1,84:1,129:1},y.btb),l.Ecb=O(337),y.ctb=function(t,e){return en(t.b,e.b)},y.dtb=function(){},G(264,1,fn,y.dtb),U.Qb=function(t,e){return y.ctb(t,e)},U.lb=function(t){return this===t},l.Gcb=O(264),y.htb=function(){y.htb=u1,y.gtb=new y.jtb},y.itb=function(t,e){return c.Gzb(t),T.Ngb(t,(c.Gzb(e),e))},y.jtb=function(){},G(368,1,fn,y.jtb),U.Qb=function(t,e){return y.itb(t,e)},U.lb=function(t){return this===t},l.Hcb=O(368),y.mtb=function(){T.cC.call(this)},G(258,33,B0,y.mtb),l.Icb=O(258),y.ntb=function(t,e){return j1(t)===j1(e)||t!=null&&T.Oc(t,e)},y.otb=function(t){var e;return t==null?0:(e=T.Sc(t),e|0)},y.ptb=function(){y.wnb.call(this)},G(65,314,{4:1,5:1,108:1,112:1},y.ptb),l.Kcb=O(65),y.qtb=function(t,e){var A;return A=y.qnb(t.a,e,t),A==null},y.rtb=function(){this.a=new y.ptb},G(125,438,{4:1,5:1,36:1,43:1,38:1,125:1,86:1},y.rtb),U.add=function(t){return y.qtb(this,t)},U.clear=function(){y.unb(this.a)},U.contains=function(t){return y.jnb(this.a,t)},U.isEmpty=function(){return y.vnb(this.a)==0},U.Sb=function(){var t;return t=new y.sob(this.a).a.ad().Sb(),new y.yob(t)},U.remove=function(t){return y.snb(this.a,t)!=null},U.size=function(){return y.vnb(this.a)},l.Lcb=O(125),y.ztb=function(t){t.a=y.Vtb()},y.Atb=function(t,e){var A,P,r,i;for(P=e,r=0,i=P.length;r<i;++r)if(A=P[r],y.ntb(t,A.fd()))return A;return null},y.Btb=function(t,e){var A;return A=c.Szb(t.a.get(e)),A??c.Szb(d(l.Hbb,v1,1,0,5,1))},y.Ctb=function(t,e){return y.Atb(e,y.Btb(t,y.otb(e)))},y.Dtb=function(t){return new y.Jtb(t)},y.Etb=function(t,e,A){var P,r,i,D;if(D=y.otb(e),r=(P=c.Szb(t.a.get(D)),P??c.Szb(d(l.Hbb,v1,1,0,5,1))),r.length==0)t.a.set(D,r);else if(i=y.Atb(e,r),i)return i.hd(A);return $1(r,r.length,new y.$ob(e,A)),++t.c,++t.b.b,null},y.Ftb=function(t,e){var A,P,r,i,D;for(i=y.otb(e),P=(A=c.Szb(t.a.get(i)),A??c.Szb(d(l.Hbb,v1,1,0,5,1))),D=0;D<P.length;D++)if(r=P[D],y.ntb(e,r.fd()))return P.length==1?(c.Szb(P).length=0,y.Otb(t.a,i)):c.Szb(P).splice(D,1),--t.c,++t.b.b,r.gd();return null},y.Gtb=function(t){y.ztb(this),this.b=t},G(371,1,{36:1},y.Gtb),U.Sb=function(){return y.Dtb(this)},U.c=0,l.Ncb=O(371),y.Itb=function(t){t.b=t.e.a.entries(),t.a=c.Szb(d(l.Hbb,v1,1,0,5,1))},y.Jtb=function(t){this.e=t,y.Itb(this)},G(245,1,{},y.Jtb),U.bd=function(t){y.pub(this,t)},U.dd=function(){return this.d=this.a[this.c++],this.d},U.cd=function(){var t;return this.c<this.a.length?!0:(t=this.b.next(),t.done?!1:(this.a=c.Szb(c.Szb(t.value[1])),this.c=0,!0))},U.ed=function(){y.Ftb(this.e,this.d.fd()),this.c!=0&&--this.c},U.c=0,U.d=null,l.Mcb=O(245),y.Otb=function(t,e){var A;A=c.Pzb(t,pP),A.call(t,e)},y.Ptb=function(t,e){var A;A=c.Pzb(t,pP),A.call(t,e)},y.Rtb=function(){y.Rtb=u1,y.Qtb=y.Ttb()},y.Stb=function(){if(!Object.create||!Object.getOwnPropertyNames)return!1;var t=\"__proto__\",e=Object.create(null);if(e[t]!==void 0)return!1;var A=Object.getOwnPropertyNames(e);return!(A.length!=0||(e[t]=42,e[t]!==42)||Object.getOwnPropertyNames(e).length==0)},y.Ttb=function(){function t(){try{return new Map().entries().next().done}catch{return!1}}return typeof Map==\"function\"&&Map.prototype.entries&&t()?Map:y.Utb()},y.Utb=function(){function t(){this.obj=this.createObject()}return t.prototype.createObject=function(e){return Object.create(null)},t.prototype.get=function(e){return this.obj[e]},t.prototype.set=function(e,A){this.obj[e]=A},t.prototype[pP]=function(e){delete this.obj[e]},t.prototype.keys=function(){return Object.getOwnPropertyNames(this.obj)},t.prototype.entries=function(){var e=this.keys(),A=this,P=0;return{next:function(){if(P>=e.length)return{done:!0};var r=e[P++];return{value:[r,A.get(r)],done:!1}}}},y.Stb()||(t.prototype.createObject=function(){return{}},t.prototype.get=function(e){return this.obj[\":\"+e]},t.prototype.set=function(e,A){this.obj[\":\"+e]=A},t.prototype[pP]=function(e){delete this.obj[\":\"+e]},t.prototype.keys=function(){var e=[];for(var A in this.obj)A.charCodeAt(0)==58&&e.push(A.substring(1));return e}),t},y.Vtb=function(){return y.Rtb(),new y.Qtb},y.Wtb=function(t){t.a=y.Vtb()},y.Xtb=function(t,e){return!c.Qzb(t.a.get(e))},y.Ytb=function(t,e){return t.a.get(e)},y.Ztb=function(t){return new y.eub(t)},y.$tb=function(t,e,A){var P;return P=t.a.get(e),t.a.set(e,c.Qzb(A)?null:A),c.Qzb(P)?(++t.c,++t.b.b):++t.d,P},y._tb=function(t,e){var A;return A=t.a.get(e),c.Qzb(A)?++t.d:(y.Ptb(t.a,e),--t.c,++t.b.b),A},y.aub=function(t){y.Wtb(this),this.b=t},G(369,1,{36:1},y.aub),U.Sb=function(){return y.Ztb(this)},U.c=0,U.d=0,l.Qcb=O(369),y.cub=function(t){t.b=t.d.a.entries(),t.a=t.b.next()},y.dub=function(t){return t.c=t.a,t.a=t.b.next(),new y.lub(t.d,t.c,t.d.d)},y.eub=function(t){this.d=t,y.cub(this)},G(244,1,{},y.eub),U.bd=function(t){y.pub(this,t)},U.dd=function(){return y.dub(this)},U.cd=function(){return!this.a.done},U.ed=function(){y._tb(this.d,c.Szb(this.c.value[0]))},l.Ocb=O(244),y.jub=function(t){return c.Szb(t.b.value[0])},y.kub=function(t){return t.a.d!=t.c?y.Ytb(t.a,c.Szb(t.b.value[0])):c.Szb(t.b.value[1])},y.lub=function(t,e,A){this.a=t,this.b=e,this.c=A},G(370,442,{85:1},y.lub),U.fd=function(){return y.jub(this)},U.gd=function(){return y.kub(this)},U.hd=function(t){return y.$tb(this.a,c.Szb(this.b.value[0]),t)},U.c=0,l.Pcb=O(370),u0.Hxb=function(t,e){return c.Gzb(e),new u0.Nxb(t,e)},u0.Ixb=function(t,e,A){return e.md(t.md(A))},y.yub=function(t,e){return c.Gzb(e),new u0.Nxb(t,e)},y.zub=function(){},G(304,1,{},y.zub),U.ld=function(t){return y.yub(this,t)},U.md=function(t){return t.fd()},l.Rcb=O(304),y.Cub=function(t,e){return c.Gzb(e),new u0.Nxb(t,e)},y.Dub=function(){},G(305,1,{},y.Dub),U.ld=function(t){return y.Cub(this,t)},U.md=function(t){return t.gd()},l.Scb=O(305),y.Gub=function(){T.cC.call(this)},G(396,33,B0,y.Gub),l.Ucb=O(396),y.Hub=function(t,e){return j1(t)===j1(e)||t!=null&&T.Oc(t,e)};function zP(f){return f!=null?T.Sc(f):0}y.Jub=function(t){if(t==null)throw Qt(new T.Kib);return t},y.Kub=function(t,e,A){var P,r,i;return P=2*e+1,r=P+1,i=P,r<A&&t.a.Qb(y.uj(t.b,r),y.uj(t.b,P))<0&&(i=r),i},y.Lub=function(t,e){var A;e*2+1>=t.b.a.length||(y.Lub(t,2*e+1),A=2*e+2,A<t.b.a.length&&y.Lub(t,A),y.Mub(t,e))},y.Mub=function(t,e){var A,P,r;for(A=t.b.a.length,r=y.uj(t.b,e);e*2+1<A&&(P=y.Kub(t,e,A),!(t.a.Qb(r,y.uj(t.b,P))<0));)y.Ej(t.b,e,y.uj(t.b,P)),e=P;y.Ej(t.b,e,r)},y.Nub=function(t,e){var A,P;for(c.Gzb(e),P=t.b.a.length,y.pj(t.b,e);P>0;){if(A=P,P=(P-1)/2|0,t.a.Qb(y.uj(t.b,P),e)<=0)return y.Ej(t.b,A,e),!0;y.Ej(t.b,A,y.uj(t.b,P))}return y.Ej(t.b,P,e),!0},y.Oub=function(t){var e;return e=t.b.a.length==0?null:y.uj(t.b,0),e!=null&&y.Pub(t,0),e},y.Pub=function(t,e){var A;A=y.Bj(t.b,t.b.a.length-1),e<t.b.a.length&&(y.Ej(t.b,e,A),y.Mub(t,e))},y.Qub=function(t){return t.b.a.length},y.Rub=function(){y.Sub.call(this)},y.Sub=function(){y.Tub.call(this,null)},y.Tub=function(t){this.b=new y.Kj(11),this.a=(y.htb(),t||y.gtb)},y.Uub=function(t){y.Tub.call(this,t)},G(145,445,WA,y.Rub,y.Uub),U.addAll=function(t){var e,A,P;for(c.Gzb(t),c.zzb(t!=this),P=this.b.a.length,A=t.Sb();A.cd();)e=A.dd(),y.pj(this.b,c.Gzb(e));return P!=this.b.a.length?(y.Lub(this,0),!0):!1},U.clear=function(){c.kzb(this.b.a,0)},U.contains=function(t){return(t==null?-1:y.wj(this.b,t,0))!=-1},U.Sb=function(){return new y.gvb(this)},U.remove=function(t){var e;return e=t==null?-1:y.wj(this.b,t,0),e<0?!1:(y.Pub(this,e),!0)},U.removeAll=function(t){return y.Hi(this.b,t)?(y.Lub(this,0),!0):!1},U.retainAll=function(t){return y.Ii(this.b,t)?(y.Lub(this,0),!0):!1},U.size=function(){return y.Qub(this)},U.Tb=function(){return new y.Avb(this)},U.toArray=function(){return c.czb(this.b.a)},U.Vb=function(t){return y.Ij(this.b,t)},l.Wcb=O(145),y.evb=function(t){},y.fvb=function(t){return t.a<t.c.b.a.length},y.gvb=function(t){this.c=t,y.evb(this)},G(389,1,{},y.gvb),U.bd=function(t){y.pub(this,t)},U.cd=function(){return y.fvb(this)},U.dd=function(){return c.Ezb(this.a<this.c.b.a.length),this.b=this.a++,y.uj(this.c.b,this.b)},U.ed=function(){c.Kzb(this.b!=-1),y.Pub(this.c,this.a=this.b),this.b=-1},U.a=0,U.b=-1,l.Vcb=O(389),y.ovb=function(){y.ovb=u1;var t,e,A,P;for(y.lvb=d(l.X6,Bt,6,25,15,1),y.mvb=d(l.X6,Bt,6,33,15,1),P=152587890625e-16,e=32;e>=0;e--)y.mvb[e]=P,P*=.5;for(A=1,t=24;t>=0;t--)y.lvb[t]=A,A*=.5},y.pvb=function(t){return y.rvb(t,26)*14901161193847656e-24+y.rvb(t,27)*11102230246251565e-32},y.qvb=function(t,e){var A,P;if(c.zzb(e>0),(e&-e)==e)return mt(e*y.rvb(t,31)*4656612873077393e-25);do A=y.rvb(t,31),P=A%e;while(A-P+(e-1)<0);return mt(P)},y.rvb=function(t,e){var A,P,r,i,D,u;return i=t.a*CP+t.b*1502,u=t.b*CP+11,A=k.Math.floor(u*ID),i+=A,u-=A*$r,i%=$r,t.a=i,t.b=u,e<=24?k.Math.floor(t.a*y.lvb[e]):(r=t.a*(1<<e-24),D=k.Math.floor(t.b*y.mvb[e]),P=r+D,P>=BA&&(P-=le),P)},y.svb=function(t,e,A){t.a=e^1502,t.b=A^CP},y.tvb=function(){y.ovb();var t,e,A;A=y.nvb+++Date.now(),t=mt(k.Math.floor(A*ID))&We,e=mt(A-t*$r),this.a=t^1502,this.b=e^CP},y.uvb=function(t){y.ovb(),y.svb(this,Gt(Z(a1(t,24),We)),Gt(Z(t,We)))},G(59,1,{},y.tvb,y.uvb),U.a=0,U.b=0,y.nvb=0,l.Xcb=O(59),y.yvb=function(t,e){y.zvb(t),t.b.bd(e)},y.zvb=function(t){t.b||(t.b=t.a.Sb(),Ct(t.a.size()))},y.Avb=function(t){this.a=(c.Gzb(t),t)},G(60,1,{},y.Avb),l.Zcb=O(60),y.Bvb=function(t){y.Avb.call(this,t)},G(188,60,{},y.Bvb),l.Ycb=O(188),y.Cvb=function(t,e){return t.a?T.Ijb(t.a,t.b):t.a=new T.Mjb(t.d),T.Hjb(t.a,e),t},y.Dvb=function(t){return t.a?c.Szb(t.e).length==0?t.a.a:t.a.a+(\"\"+t.e):t.c},y.Evb=function(){y.Fvb.call(this,\"#\",\"\",\"\")},y.Fvb=function(t,e,A){this.b=t,this.d=e,this.e=A,this.c=this.d+(\"\"+this.e)},G(150,1,{},y.Evb,y.Fvb),U.ob=function(){return y.Dvb(this)},l.$cb=O(150),y.Hvb=function(t){},y.Ivb=function(t){t.b=null,t.c=0},y.Jvb=function(t){return new y.lwb(t)},y.Kvb=function(t,e){var A,P,r;for(r=t.b;r;){if(A=t.a.Qb(e,r.c),A==0)return r;P=A<0?0:1,r=r.a[P]}return null},y.Lvb=function(t,e,A,P,r,i,D,u){var o,Q;P&&(o=P.a[0],o&&y.Lvb(t,e,A,o,r,i,D,u),y.Mvb(t,A,P.c,r,i,D,u)&&e.add(P),Q=P.a[1],Q&&y.Lvb(t,e,A,Q,r,i,D,u))},y.Mvb=function(t,e,A,P,r,i,D){var u,o;return!(e.nd()&&(o=t.a.Qb(A,P),o<0||!r&&o==0)||e.od()&&(u=t.a.Qb(A,i),u>0||!D&&u==0))},y.Nvb=function(t,e,A,P){var r,i;if(e){if(r=t.a.Qb(A.c,e.c),r==0)return P.d=y.Sob(e,A.d),P.b=!0,e;i=r<0?0:1,e.a[i]=y.Nvb(t,e.a[i],A,P),y.Ovb(e.a[i])&&(y.Ovb(e.a[1-i])?(e.b=!0,e.a[0].b=!1,e.a[1].b=!1):y.Ovb(e.a[i].a[i])?e=y.Vvb(e,1-i):y.Ovb(e.a[i].a[1-i])&&(e=y.Uvb(e,1-i)))}else return A;return e},y.Ovb=function(t){return!!t&&t.b},y.Pvb=function(t,e,A){var P,r;return P=new y.owb(e,A),r=new y.qwb,t.b=y.Nvb(t,t.b,P,r),r.b||++t.c,t.b.b=!1,r.d},y.Qvb=function(t,e){var A,P;return A=e,P=new y.qwb,y.Svb(t,A,P),P.d},y.Rvb=function(t,e){var A;return A=new y.qwb,A.c=!0,A.d=e.gd(),y.Svb(t,e.fd(),A)},y.Svb=function(t,e,A){var P,r,i,D,u,o,Q,L,w,s,h;if(!t.b)return!1;for(D=null,s=null,o=new y.owb(null,null),r=1,o.a[1]=t.b,w=o;w.a[r];)Q=r,u=s,s=w,w=w.a[r],P=t.a.Qb(e,w.c),r=P<0?0:1,P==0&&(!A.c||y.Hub(w.d,A.d))&&(D=w),!(w&&w.b)&&!y.Ovb(w.a[r])&&(y.Ovb(w.a[1-r])?s=s.a[Q]=y.Vvb(w,r):y.Ovb(w.a[1-r])||(h=s.a[1-Q],h&&(!y.Ovb(h.a[1-Q])&&!y.Ovb(h.a[Q])?(s.b=!1,h.b=!0,w.b=!0):(i=u.a[1]==s?1:0,y.Ovb(h.a[Q])?u.a[i]=y.Uvb(s,Q):y.Ovb(h.a[1-Q])&&(u.a[i]=y.Vvb(s,Q)),w.b=u.a[i].b=!0,u.a[i].a[0].b=!1,u.a[i].a[1].b=!1))));return D&&(A.b=!0,A.d=D.d,w!=D&&(L=new y.owb(w.c,w.d),y.Tvb(t,o,D,L),s==D&&(s=L)),s.a[s.a[1]==w?1:0]=w.a[w.a[0]?0:1],--t.c),t.b=o.a[1],t.b&&(t.b.b=!1),A.b},y.Tvb=function(t,e,A,P){var r,i;for(i=e,r=i.c==null||t.a.Qb(A.c,i.c)>0?1:0;i.a[r]!=A;)i=i.a[r],r=t.a.Qb(A.c,i.c)>0?1:0;i.a[r]=P,P.b=A.b,P.a[0]=A.a[0],P.a[1]=A.a[1],A.a[0]=null,A.a[1]=null},y.Uvb=function(t,e){var A;return A=1-e,t.a[A]=y.Vvb(t.a[A],A),y.Vvb(t,e)},y.Vvb=function(t,e){var A,P;return A=1-e,P=t.a[A],t.a[A]=P.a[e],P.a[e]=t,t.b=!0,P.b=!1,P},y.Wvb=function(t){return t.c},y.Xvb=function(){y.Yvb.call(this,null)},y.Yvb=function(t){y.Hvb(this),this.b=null,this.a=(y.htb(),t||y.gtb)},G(44,233,{4:1,108:1,233:1,112:1,452:1,451:1,44:1},y.Xvb,y.Yvb),U.clear=function(){y.Ivb(this)},U.ad=function(){return y.Jvb(this)},U.put=function(t,e){return y.Pvb(this,t,e)},U.remove=function(t){return y.Qvb(this,t)},U.size=function(){return y.Wvb(this)},U.c=0,l.hdb=O(44),y.cwb=function(t){return y.aob(t.a)},y.dwb=function(t){return t.b=y.bob(t.a)},y.ewb=function(t){y.cob(t.a),y.Rvb(t.c,t.b),t.b=null},y.fwb=function(t){y.gwb.call(this,t,(y.wwb(),y.swb))},y.gwb=function(t,e){var A;this.c=t,A=new y.Jj,y.Lvb(t,A,e,t.b,null,!1,null,!1),this.a=new y.job(A,0)},G(72,1,{},y.fwb),U.bd=function(t){y.pub(this,t)},U.dd=function(){return y.dwb(this)},U.cd=function(){return y.cwb(this)},U.ed=function(){y.ewb(this)},l._cb=O(72),y.lwb=function(t){this.a=t,y.mpb.call(this,t)},G(77,234,Jn,y.lwb),U.clear=function(){y.Ivb(this.a)},l.adb=O(77),y.nwb=function(t){t.a=d(l.bdb,v1,126,2,0,1)},y.owb=function(t,e){y.pwb.call(this,t,e)},y.pwb=function(t,e){y.$ob.call(this,t,e),y.nwb(this),this.b=!0},G(126,144,{160:1,144:1,85:1,126:1},y.owb),U.b=!1,l.bdb=O(126),y.qwb=function(){},G(190,1,{},y.qwb),U.ob=function(){return\"State: mv=\"+this.c+\" value=\"+this.d+\" done=\"+this.a+\" found=\"+this.b},U.a=!1,U.b=!1,U.c=!1,l.cdb=O(190),y.wwb=function(){y.wwb=u1,y.swb=new y.xwb(\"All\",0),y.twb=new y.Bwb,y.uwb=new y.Dwb,y.vwb=new y.Gwb},y.xwb=function(t,e){vA.call(this,t,e)},y.Awb=function(){return y.wwb(),v(F(l.gdb,1),L0,81,0,[y.swb,y.twb,y.uwb,y.vwb])},G(81,56,RP,y.xwb),U.nd=function(){return!1},U.od=function(){return!1},l.gdb=Oe(81,y.Awb),y.Bwb=function(){y.xwb.call(this,\"Head\",1)},G(349,81,RP,y.Bwb),U.od=function(){return!0},l.ddb=Oe(349,null),y.Dwb=function(){y.xwb.call(this,\"Range\",2)},G(350,81,RP,y.Dwb),U.nd=function(){return!0},U.od=function(){return!0},l.edb=Oe(350,null),y.Gwb=function(){y.xwb.call(this,\"Tail\",3)},G(351,81,RP,y.Gwb),U.nd=function(){return!0},l.fdb=Oe(351,null),y.Iwb=function(t,e){return y.Pvb(t.a,e,(T.Egb(),FA))==null},y.Jwb=function(t){y.Ivb(t.a)},y.Kwb=function(t,e){return y.dpb(t.a,e)},y.Lwb=function(t){var e;return e=new y.fwb(new y.lwb(new y.spb(t.a).a).b),new y.Bpb(e)},y.Mwb=function(t){return t.a.c},y.Nwb=function(){this.a=new y.Xvb},y.Owb=function(t){this.a=new y.Yvb(t)},G(135,438,{4:1,36:1,43:1,38:1,86:1},y.Nwb,y.Owb),U.Tb=function(){return new y.Bvb(this)},U.add=function(t){return y.Iwb(this,t)},U.clear=function(){y.Jwb(this)},U.contains=function(t){return y.Kwb(this,t)},U.Sb=function(){return y.Lwb(this)},U.remove=function(t){return y.Qvb(this.a,t)!=null},U.size=function(){return y.Mwb(this)},l.idb=O(135),y.Wwb=function(t,e){return y.pj(t.a,e)},y.Xwb=function(t){return t.a.a.length},y.Ywb=function(t,e){return y.Ij(t.a,e)},y.Zwb=function(){this.a=new y.Jj},y.cxb=function(t,e){if(t<0||t>=e)throw Qt(new T.Bgb)},G(361,96,{4:1,5:1,36:1,43:1,96:1,38:1,84:1,129:1},y.Zwb),U.addAtIndex=function(t,e){y.cxb(t,this.a.a.length+1),y.oj(this.a,t,e)},U.add=function(t){return y.Wwb(this,t)},U.addAllAtIndex=function(t,e){return y.cxb(t,this.a.a.length+1),y.qj(this.a,t,e)},U.addAll=function(t){return y.rj(this.a,t)},U.clear=function(){c.kzb(this.a.a,0)},U.contains=function(t){return y.wj(this.a,t,0)!=-1},U.containsAll=function(t){return y.Gi(this.a,t)},U.getAtIndex=function(t){return y.cxb(t,this.a.a.length),y.uj(this.a,t)},U.indexOf=function(t){return y.wj(this.a,t,0)},U.isEmpty=function(){return this.a.a.length==0},U.Sb=function(){return new y.rqb(this.a)},U.lastIndexOf=function(t){return y.zj(this.a,t)},U.removeAtIndex=function(t){return y.cxb(t,this.a.a.length),y.Bj(this.a,t)},U.removeAll=function(t){return y.Hi(this.a,t)},U.Wb=function(t,e){y.Dj(this.a,t,e)},U.setAtIndex=function(t,e){return y.cxb(t,this.a.a.length),y.Ej(this.a,t,e)},U.size=function(){return y.Xwb(this)},U.subList=function(t,e){return new y.lob(this.a,t,e)},U.toArray=function(){return c.czb(this.a.a)},U.Vb=function(t){return y.Ywb(this,t)},U.ob=function(){return y.Ki(this.a)},l.jdb=O(361),x0.uxb=function(t,e){if(e==null)throw Qt(new T.Kib);return y.jnb(t.e,e)},x0.vxb=function(t){return new y.Mnb(t.e)},x0.wxb=function(t,e){if(e==null)throw Qt(new T.Kib);return y.nnb(t.e,e)},x0.xxb=function(t,e,A){if(e==null||A==null)throw Qt(new T.Kib);return y.qnb(t.e,e,A)},x0.yxb=function(){this.e=new y.ptb},G(346,108,_r),U.containsKey=function(t){return x0.uxb(this,t)},U.containsValue=function(t){if(t==null)throw Qt(new T.Kib);return y.knb(this.e,t)},U.ad=function(){return x0.vxb(this)},U.get=function(t){return x0.wxb(this,t)},U.put=function(t,e){return x0.xxb(this,t,e)},U.putIfAbsent=function(t,e){return x0.uxb(this,t)?this.get(t):this.put(t,e)},U.remove=function(t){if(t==null)throw Qt(new T.Kib);return y.snb(this.e,t)},U.replace=function(t,e){if(e==null)throw Qt(new T.Kib);return x0.uxb(this,t)?this.put(t,e):null},l.kdb=O(346),u0.Jxb=function(){},G(303,1,{},u0.Jxb),U.ld=function(t){return c.Gzb(t),new u0.Nxb(this,t)},U.md=function(t){return t},l.ldb=O(303),u0.Mxb=function(t,e){return u0.Ixb(t.a,t.b,e)},u0.Nxb=function(t,e){this.a=t,this.b=e},G(62,1,{},u0.Nxb),U.ld=function(t){return c.Gzb(t),new u0.Nxb(this,t)},U.md=function(t){return u0.Mxb(this,t)},l.mdb=O(62),gt.Qxb=function(t,e,A,P,r){return c.Gzb(t),c.Gzb(e),c.Gzb(A),c.Gzb(P),c.Gzb(r),new gt.Yxb(t,e,A,P)},gt.Rxb=function(t,e,A,P){return c.Gzb(t),c.Gzb(e),c.Gzb(A),c.Gzb(P),new gt.Yxb(t,e,A,new u0.Jxb)},gt.Vxb=function(){gt.Vxb=u1,gt.Sxb=new gt.Wxb(\"CONCURRENT\",0),gt.Txb=new gt.Wxb(\"IDENTITY_FINISH\",1),gt.Uxb=new gt.Wxb(\"UNORDERED\",2)},gt.Wxb=function(t,e){vA.call(this,t,e)},gt.Xxb=function(){return gt.Vxb(),v(F(l.ndb,1),L0,98,0,[gt.Sxb,gt.Txb,gt.Uxb])},G(98,56,{4:1,32:1,56:1,98:1},gt.Wxb),l.ndb=Oe(98,gt.Xxb),gt.Yxb=function(t,e,A,P){this.d=t,this.a=e,this.b=A,this.c=P},G(167,1,{},gt.Yxb),l.odb=O(167),gt.Zxb=function(t,e){return new gt.Yxb(t.d,t.a,t.b,t.c.ld(e))},gt.$xb=function(t,e,A,P){t.a.pd(A,e.md(P))},gt._xb=function(){throw Qt(new T._hb(\"Can't assign multiple values to the same key\"))},gt.ayb=function(t,e,A,P){var r,i;r=u0.Ixb(t.a,t.b,P),i=u0.Ixb(e.a,e.b,P),A.containsKey(r)?A.put(r,(A.get(r),gt._xb())):A.put(r,i)},gt.byb=function(t,e){return new gt.Yxb(e.d,new gt.Gyb(e,t),e.b,e.c)},gt.cyb=function(t,e,A){return gt.Rxb(A,new gt.Jyb(t,e),new gt.Lyb,v(F(l.ndb,1),L0,98,0,[(gt.Vxb(),gt.Txb)]))},gt.dyb=function(t,e){return gt.Zxb(gt.cyb(y.yub(t,new gt.tyb),y.Cub(e,new gt.tyb),new gt.oyb),new gt.qyb)},gt.eyb=function(){},G(320,1,{},gt.eyb),U.pd=function(t,e){t.add(e)},l.pdb=O(320),gt.gyb=function(){},G(322,1,{},gt.gyb),U.nc=function(){return new y.Jj},l.qdb=O(322),gt.iyb=function(){},G(323,1,{},gt.iyb),U.ld=function(t){return c.Gzb(t),new u0.Nxb(this,t)},U.md=function(t){return y.Jub(t)},l.rdb=O(323),gt.lyb=function(){},G(324,1,{},gt.lyb),U.ld=function(t){return c.Gzb(t),new u0.Nxb(this,t)},U.md=function(t){return y.Crb(t)},l.sdb=O(324),gt.oyb=function(){},G(325,1,{},gt.oyb),U.nc=function(){return new y.ptb},l.tdb=O(325),gt.qyb=function(){},G(326,1,{},gt.qyb),U.ld=function(t){return c.Gzb(t),new u0.Nxb(this,t)},U.md=function(t){return new y.osb(t)},l.udb=O(326),gt.tyb=function(){},G(229,1,{},gt.tyb),U.ld=function(t){return c.Gzb(t),new u0.Nxb(this,t)},U.md=function(t){return y.Jub(t)},l.vdb=O(229),gt.wyb=function(){},G(329,1,{},gt.wyb),U.nc=function(){return new y.rtb},l.wdb=O(329),gt.yyb=function(){},G(330,1,{},gt.yyb),U.pd=function(t,e){y.qtb(t,e)},l.xdb=O(330),gt.Ayb=function(){},G(333,1,{},gt.Ayb),U.ld=function(t){return c.Gzb(t),new u0.Nxb(this,t)},U.md=function(t){return y.Jub(t)},l.ydb=O(333),gt.Dyb=function(){},G(334,1,{},gt.Dyb),U.ld=function(t){return c.Gzb(t),new u0.Nxb(this,t)},U.md=function(t){return new y.Hsb(t)},l.zdb=O(334),gt.Gyb=function(t,e){this.a=t,this.b=e},G(319,1,{},gt.Gyb),U.pd=function(t,e){gt.$xb(this.a,this.b,t,e)},l.Adb=O(319),gt.Iyb=function(){},G(321,1,{},gt.Iyb),l.Bdb=O(321),gt.Jyb=function(t,e){this.a=t,this.b=e},G(327,1,{},gt.Jyb),U.pd=function(t,e){gt.ayb(this.a,this.b,t,e)},l.Cdb=O(327),gt.Lyb=function(){},G(328,1,{},gt.Lyb),l.Ddb=O(328),gt.Myb=function(){},G(331,1,{},gt.Myb),l.Edb=O(331),gt.Nyb=function(){},G(332,1,{},gt.Nyb),U.ld=function(t){return c.Gzb(t),new u0.Nxb(this,t)},U.md=function(t){return t},l.Fdb=O(332),gt.Qyb=function(t){},gt.Ryb=function(t){if(t.b)throw Qt(new T._hb(\"Stream already terminated, can't be modified or used\"))},gt.Syb=function(){gt.Qyb(this),new y.Jj},G(341,1,{}),U.b=!1,l.Kdb=O(341),gt.Tyb=function(t,e){var A;return e.c.md(gt.Uyb(t,e.d.nc(),(A=new gt._yb(e),A)))},gt.Uyb=function(t,e,A){var P;return gt.Ryb(t),t.b=!0,P=new gt.Zyb,P.a=e,y.yvb(t.a,new gt.bzb(P,A)),P.a},gt.Vyb=function(t){gt.Syb.call(this),this.a=t},gt.Wyb=function(t,e,A){return t.a.pd(e,A),e},gt.Xyb=function(t,e,A){gt.Yyb(t,gt.$yb(e,t.a,A))},G(189,341,{},gt.Vyb),l.Jdb=O(189),gt.Yyb=function(t,e){t.a=e},gt.Zyb=function(){},G(342,1,{},gt.Zyb),l.Gdb=O(342),gt.$yb=function(t,e,A){return gt.Wyb(t.a,e,A)},gt._yb=function(t){this.a=t},G(343,1,{},gt._yb),l.Hdb=O(343),gt.azb=function(t,e){gt.Xyb(t.b,t.a,e)},gt.bzb=function(t,e){this.b=t,this.a=e},G(344,1,{},gt.bzb),l.Idb=O(344),c.mzb=function(t,e){return l.O5(t,e)},c.nzb=function(){c.nzb=u1,new c.tzb,new c.pzb(\"ISO-LATIN-1\"),new c.pzb(\"ISO-8859-1\")},c.ozb=function(t){V1.xmb.call(this,t)},G(222,117,FP),l.Ndb=O(222),c.pzb=function(t){c.ozb.call(this,t)},G(223,222,FP,c.pzb),l.Ldb=O(223),c.qzb=function(t,e,A){var P,r,i,D,u,o,Q,L,w;for(i=0,Q=0;Q<A;){if(++i,r=t[e+Q],(r&192)==128)throw Qt(new T.Zhb(ar));if((r&128)==0)++Q;else if((r&224)==192)Q+=2;else if((r&240)==224)Q+=3;else if((r&248)==240)Q+=4;else throw Qt(new T.Zhb(ar));if(Q>A)throw Qt(new T.Agb(ar))}for(D=d(l.W6,e0,6,i,15,1),w=0,u=0,o=0;o<A;){for(r=t[e+o++],(r&128)==0?(u=1,r&=127):(r&224)==192?(u=2,r&=31):(r&240)==224?(u=3,r&=15):(r&248)==240?(u=4,r&=7):(r&252)==248&&(u=5,r&=3);--u>0;){if(P=t[e+o++],(P&192)!=128)throw Qt(new T.Zhb(\"Invalid UTF8 sequence at \"+(e+o-1)+\", byte=\"+(L=c.Szb(c.Rzb(P)),L.toString(16))));r=r<<6|P&63}w+=_u(r,D,w)}return D},c.rzb=function(t,e){if(e<128)c.hzb(t,(e&127)<<24>>24);else if(e<c1)c.hzb(t,(e>>6&31|192)<<24>>24),c.hzb(t,(e&63|128)<<24>>24);else if(e<z1)c.hzb(t,(e>>12&15|224)<<24>>24),c.hzb(t,(e>>6&63|128)<<24>>24),c.hzb(t,(e&63|128)<<24>>24);else if(e<m0)c.hzb(t,(e>>18&7|240)<<24>>24),c.hzb(t,(e>>12&63|128)<<24>>24),c.hzb(t,(e>>6&63|128)<<24>>24),c.hzb(t,(e&63|128)<<24>>24);else if(e<H0)c.hzb(t,(e>>24&3|248)<<24>>24),c.hzb(t,(e>>18&63|128)<<24>>24),c.hzb(t,(e>>12&63|128)<<24>>24),c.hzb(t,(e>>6&63|128)<<24>>24),c.hzb(t,(e&63|128)<<24>>24);else throw Qt(new T.Zhb(\"Character out of range: \"+e))},c.szb=function(t){var e,A,P,r;for(r=c.Szb(t).length,e=d(l.V6,Y,6,0,15,1),P=0;P<r;)A=Zu(t,P,c.Szb(t).length),P+=A>=z1?2:1,c.rzb(e,A);return e},c.tzb=function(){c.ozb.call(this,\"UTF-8\")},G(308,222,FP,c.tzb),l.Mdb=O(308),c.Vzb=function(t,e){var A,P;return P=Z(l.Ieb(t),i1),A=T1(l.Ieb(e),32),Pt(A,P)},Wt.Xzb=function(t){},Wt.Yzb=function(t){return t.length},Wt.Zzb=function(t){return t.a==t.b?-1:Wt._zb(t.c,t.a++)},Wt.$zb=function(t,e){var A;return t.a==t.b?-1:(A=k.Math.min(e.length,t.b-t.a),Wt.aAb(e,t.c,t.a,A),t.a+=A,A)},Wt._zb=function(t,e){return t[e]},Wt.aAb=function(t,e,A,P){for(var r=0;r<=P;r++)t[r]=e[A+r]},Wt.bAb=function(t){Wt.Xzb(this),this.c=t,this.b=Wt.Yzb(t)},Wt.cAb=function(t){var e;return c.Szb(t).indexOf(\"/csd/\")!=-1?null:(e=Wt.fAb(Wt.Wzb,t),!e&&Wt.eAb(t),new Wt.bAb(e))},Wt.dAb=function(t){Wt.Wzb=t},Wt.eAb=function(t){throw new Error(\"missing static resource: \"+t)},G(317,439,{},Wt.bAb),U.a=0,U.b=0,Wt.Wzb=null,l.Qdb=O(317),Wt.fAb=function(t,e){var A=t[e];return typeof A===D1?A:null},Wt.gAb=function(t,e,A){t[e]=A},Wt.hAb=function(t,e,A){t[e]=A},W.iAb=function(t,e){var A,P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S;for(w=e.f,s=e.g,r=e.a,m=0,i=n.Ul(t.o,0,r),D=n.Ul(t.o,1,r),h=0;h<w.c.length;h++)if(A=w.e[w.c[h]],A!=i&&A!=D)for(S=W.QAb(n.Ol(t.o,A)),b=0;b<s.c.length;b++)P=s.e[s.c[b]],P!=i&&P!=D&&(g=S+W.QAb(n.Ol(t.o,P)),o=k.Math.abs(t.k[A].a-t.k[P].a),o<g&&(Q=k.Math.abs(t.k[A].b-t.k[P].b),Q<g&&(L=k.Math.abs(t.k[A].c-t.k[P].c),L<g&&(u=k.Math.sqrt(o*o+Q*Q+L*L),u<g&&(B=(g-u)/g,m+=B*B)))));return m},W.jAb=function(t,e,A,P,r,i){var D,u,o,Q,L,w,s,h,b,g,B,m,S,p,M,z,q,x,J,E,N,ft,Lt,ot,st,ut,rt,Ut,ht,it,bt,ct,$t,Ft,Rt,Et,Nt,It,vt,kt,L1,f1,St,Xt,k1,qt,P1,E1,y1;if(Lt=e.i,ot=e.j,x=e.f,J=e.g,!P[Lt]&&!P[ot])for(it=x.c.length>J.c.length?x:J,bt=x.c.length>J.c.length?Lt:ot,P[bt]=!0,N=r==null?0:r[bt],Ut=0;Ut<it.d.length;Ut++)o=it.e[it.d[Ut]],I.cy(t,o,I.Yx(it.b[N],it.d[Ut]));if(P[Lt]?(ft=ot,q=J,s=e.b?1:0):(ft=Lt,q=x,s=e.b?0:1),w=e.a,It=n.Ul(t.o,s,w),Rt=n.Ul(t.o,1-s,w),E=r==null?0:r[ft],M=q.f[It],p=q.f[Rt],st=I.Yx(q.b[E],q.d[M]),Nt=t.k[It],ut=n.ji(n.ii(st,I.Yx(q.b[E],q.d[p]))),y1=n.ji(n.ii(Nt,t.k[Rt])),D=n.ci(ut,y1),z=d(l.q7,zn,29,q.d.length,0,1),D<.0010000000474974513)for(Ut=0;Ut<q.d.length;Ut++)o=q.e[q.d[Ut]],o!=It&&o!=Rt&&(z[Ut]=D>k0?n.ii(st,I.Yx(q.b[E],q.d[Ut])):n.ii(I.Yx(q.b[E],q.d[Ut]),st));else for(D<3.1405926535422957?vt=new n.li(y1.b*ut.c-y1.c*ut.b,-(y1.a*ut.c-y1.c*ut.a),y1.a*ut.b-y1.b*ut.a):k.Math.abs(y1.a)>=k.Math.abs(y1.b)&&k.Math.abs(y1.a)>=k.Math.abs(y1.c)?vt=new n.li(-(y1.b+y1.c)/y1.a,1,1):k.Math.abs(y1.b)>=k.Math.abs(y1.a)&&k.Math.abs(y1.b)>=k.Math.abs(y1.c)?vt=new n.li(1,-(y1.a+y1.c)/y1.b,1):vt=new n.li(1,1,-(y1.a+y1.b)/y1.c),ct=W.sAb(n.ji(vt),D),Ut=0;Ut<q.d.length;Ut++)o=q.e[q.d[Ut]],o!=It&&o!=Rt&&(z[Ut]=n.di(n.ii(I.Yx(q.b[E],q.d[Ut]),st),ct));for(P[ft]=!0,ht=0;ht<n.Wo(t.o,It);ht++)g=n.Vo(t.o,It,ht),g!=Rt&&(S=q.f[g],I.dy(t,g,n.Yh(z[S],Nt)));for(kt=I.uy(t,e.p),B=-1,Q=0,L=0,St=0;St<t.i[A].length;St++){for(B=t.i[A][St],ct=W.sAb(y1,t1*B/180-kt),Ut=0;Ut<q.d.length;Ut++)o=q.e[q.d[Ut]],o!=It&&o!=Rt&&(I.cy(t,o,z[Ut]),n.Xh(n.di(t.k[o],ct),Nt));if(h=W.iAb(t,e),E1=h,k1=0,h<gr)Et=h/t8,t.e[A][St]=t.d[A][St]*(1-Et*Et);else{for(b=t.i[A][St],P1=U0,$t=0;$t<2;$t++)if(B=i[St][$t],B!=b){for(ct=W.sAb(y1,t1*B/180-kt),rt=0;rt<q.d.length;rt++)o=q.e[q.d[rt]],o!=It&&o!=Rt&&(I.cy(t,o,z[rt]),n.Xh(n.di(t.k[o],ct),Nt));Ft=W.iAb(t,e),Ft<h*sn&&Ft<P1&&(t.i[A][St]=i[St][$t],Et=Ft/.16000000476837162,t.e[A][St]=t.d[A][St]*(1-Et*Et),E1=Ft,k1=$t+1,P1=Ft)}P1==U0&&h<t8&&(Et=h/t8,t.e[A][St]=t.d[A][St]*(1-Et*Et))}t.e[A][t.a[A]]<t.e[A][St]&&(t.a[A]=St,Q=k1,L=E1)}for(qt=0,Xt=0;Xt<t.i[A].length;Xt++)t.e[A][Xt]>0&&(qt+=t.e[A][Xt]);if(t.e[A][t.a[A]]<=0)for(t.e[A][t.a[A]]=1,u=Q==1?-8:Q==2?8:y.pvb(t.f)<.5?-8:8,L1=1;L1<=4;L1++){for(B=t.i[A][t.a[A]]+u*L1<<16>>16,ct=W.sAb(y1,t1*B/180-kt),rt=0;rt<q.d.length;rt++)o=q.e[q.d[rt]],o!=It&&o!=Rt&&(I.cy(t,o,z[rt]),n.Xh(n.di(t.k[o],ct),Nt));if(m=W.iAb(t,e),L-m<.05)break;t.i[A][t.a[A]]=B}else for(f1=0;f1<t.i[A].length;f1++)t.e[A][f1]/=qt;if(B!=t.i[A][t.a[A]])for(ct=W.sAb(y1,t1*t.i[A][t.a[A]]/180-kt),rt=0;rt<q.d.length;rt++)o=q.e[q.d[rt]],o!=It&&o!=Rt&&(I.cy(t,o,z[rt]),n.Xh(n.di(t.k[o],ct),Nt));I.by(t,w,t.i[A][t.a[A]])},W.kAb=function(t,e,A){var P,r;for(++t.b,P=new I.ky(t),P.p=A,r=t.g.length-1;r>=0;r--)W.qAb(t,P,t.g[r],r,e[r]);return P},W.lAb=function(t,e,A,P){var r,i,D;for(i=0,D=0;D<t.i[e].length;D++)if(r=(1-P)*t.e[e][D]+P/t.i[e].length,i+=r,A<=i)return D;return t.i[e].length-1},W.mAb=function(t,e,A){return t.i[e][A]},W.nAb=function(t,e,A){return t.e[e][A]},W.oAb=function(t,e,A){var P,r,i,D,u,o,Q,L,w,s,h,b;for(L=e.p,o=e.n,Q=I.Yx(t,L[2]),w=n.ji(n.ii(Q,I.Yx(t,L[1]))),u=W.sAb(w,o==L[1]?A:-A),r=e.o,i=0,D=r.length;i<D;++i)P=r[i],P!=o&&(s=t.k[P].a-Q.a,h=t.k[P].b-Q.b,b=t.k[P].c-Q.c,I.fy(t,P,s*u[0][0]+h*u[0][1]+b*u[0][2]+Q.a),I.gy(t,P,s*u[1][0]+h*u[1][1]+b*u[1][2]+Q.b),I.hy(t,P,s*u[2][0]+h*u[2][1]+b*u[2][2]+Q.c))},W.pAb=function(t,e,A){for(var P,r;A<0;)A=A+360<<16>>16;for(;A>=360;)A=A-360<<16>>16;P=e.a,A!=(t.j==null?-1:t.j[P])&&(r=A-(t.j==null?-1:t.j[P]),W.oAb(t,e,t1*r/180),I.by(t,P,A))},W.qAb=function(t,e,A,P,r){W.pAb(e,A,t.i[P][r])},W.rAb=function(t,e,A,P,r){var i,D,u,o,Q,L,w,s;for(I.jy.call(this,t),this.f=r,this.g=A,this.i=d(l.seb,A0,16,A.length,0,2),this.d=d(l.seb,A0,16,A.length,0,2),this.e=d(l.X6,b1,15,A.length,0,2),u=d(l.seb,T0,37,A.length,0,3),D=0;D<A.length;D++)s=A[D].d,this.i[D]=y.Aqb(s,s.length),o=A[D].c,this.d[D]=y.Aqb(o,o.length),this.e[D]=d(l.X6,Bt,6,this.i[D].length,15,1),u[D]=A[D].e;for(this.a=d(l.Z6,H,6,A.length,15,1),L=d(l.teb,wt,6,e.length,16,1),i=0;i<A.length;i++)W.jAb(this,A[i],i,L,P,u[i]);for(Q=0;Q<e.length;Q++)if(!L[Q])for(w=0;w<e[Q].c.length;w++)I.cy(this,W.ZAb(e[Q],w),W.aBb(e[Q],P[Q],w));this.c=new y.Jj},W.sAb=function(t,e){var A,P,r,i;return i=k.Math.sin(e),A=k.Math.cos(e),P=1-A,r=w1(l.X6,[b1,Bt],[15,6],15,[3,3],2),r[0][0]=t.a*t.a*P+A,r[1][1]=t.b*t.b*P+A,r[2][2]=t.c*t.c*P+A,r[0][1]=t.a*t.b*P-t.c*i,r[1][2]=t.b*t.c*P-t.a*i,r[2][0]=t.c*t.a*P-t.b*i,r[0][2]=t.a*t.c*P+t.b*i,r[1][0]=t.b*t.a*P+t.c*i,r[2][1]=t.c*t.b*P+t.a*i,r},G(210,63,{63:1,32:1,210:1},W.rAb),U.b=0,l.Rdb=O(210),W.tAb=function(t,e){y.pj(t.c,e)},W.uAb=function(t,e){t.a=e},W.vAb=function(t,e,A){var P,r;for(P=new n.Kg(I.iy(A,null)),n.og(P),n.kg(P,P.jb),t.d=d(l.Z6,H,6,e.g.length,15,1),r=0;r<t.d.length;r++)t.d[r]=I.Xx(A,e.g[r].a)},W.wAb=function(t,e){c.Szb(t.b.a).length!=0&&T.Ijb(t.b,\"<NL>\"),T.Ijb(t.b,e)},W.xAb=function(){this.b=new T.Kjb,this.c=new y.Jj},G(249,1,{249:1},W.xAb),l.Sdb=O(249),W.yAb=function(t,e,A){var P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S;for(t.i&&W.uAb(W.XAb(t.c,e),null),o=0,u=null,B=A.o,P=1;P<B.q;P++)for(S=W.QAb(B.C[P]),r=0;r<P;r++)t.u[P][r]||(g=S+W.QAb(B.C[r]),L=k.Math.abs(A.k[P].a-A.k[r].a),L<g&&(w=k.Math.abs(A.k[P].b-A.k[r].b),w<g&&(s=k.Math.abs(A.k[P].c-A.k[r].c),s<g&&(Q=k.Math.sqrt(L*L+w*w+s*s),Q<g&&(m=(g-Q)/g,D=20*m*m,o+=D,t.i&&(W.wAb(W.XAb(t.c,e),\"a1:\"+P+\" f1:\"+t.g[P]+\" a2:\"+r+\" f2:\"+t.g[r]+ED+(lt.K3(),lt.L3(Q,5))+\" min:\"+lt.L3(g,5)),W.XAb(t.c,e).a==null&&(i=d(l.Z6,H,6,2,15,1),i[0]=P,i[1]=r,W.uAb(W.XAb(t.c,e),i))),u==null&&(u=d(l.X6,b1,15,t.q.length,0,2)),h=t.g[P],b=t.g[r],h<b?(u[b]==null&&(u[b]=d(l.X6,Bt,6,b,15,1)),u[b][h]+=D):(u[h]==null&&(u[h]=d(l.X6,Bt,6,h,15,1)),u[h][b]+=D))))));return W.GBb(e,o,u),o!=0},W.zAb=function(t,e,A,P){var r,i,D,u,o,Q,L,w,s,h,b,g,B;for(u=0,s=0;s<A.c.length;s++)for(r=A.e[A.c[s]],B=W.QAb(n.Ol(t.k,r)),h=0;h<P.c.length;h++)i=P.e[P.c[h]],b=B+W.QAb(n.Ol(t.k,i)),Q=k.Math.abs(e.k[r].a-e.k[i].a),Q<b&&(L=k.Math.abs(e.k[r].b-e.k[i].b),L<b&&(w=k.Math.abs(e.k[r].c-e.k[i].c),w<b&&(o=k.Math.sqrt(Q*Q+L*L+w*w),o<b&&(g=(b-o)/b,D=g*g,u+=D))));return 20*u},W.AAb=function(t,e){var A;return A=y.epb(t.b,e),A||(A=new W.rAb(t.k,t.q,t.s,e,t.n),y.Pvb(t.b,y.zqb(e,e.length),A),A)},W.BAb=function(t){var e,A;if(t.s==null&&!t.t)return null;if(t.t)return A=a.WCb(t.t),A?(W.KAb(t,A),++t.p,I.ey(A,\"SO#\"+ ++t.a),A):null;if(t.j)return null;for(t.b.c==0&&W.AAb(t,d(l.Z6,H,6,t.q.length,15,1)),t.A=W.dCb(t.B,t.A,t.c);t.A&&!(jt(t.v,0)&&(T.Pjb(),g1(h1(Date.now()),t.v)));){if(e=W.AAb(t,t.A.d),t.A.c||(W.HBb(t.A,W.kAb(e,t.A.i,\"#\"+ ++t.a)),t.i&&W.WAb(t.c,t.A)),t.A.b==0&&(W.yAb(t,t.A,t.A.c),t.A.b!=0&&W.MAb(t,t.A),t.i&&(W.vAb(W.XAb(t.c,t.A),e,t.A.c),W.XAb(t.c,t.A))),t.A.b>t.B.s+3){if(t.A=W.dCb(t.B,t.A,t.c),t.A||t.p!=0)continue;if(t.C&&(t.t=new a.eDb(t.k),a.aDb(t.t,t.v),a.YCb(t.t,t.o,-1),A=a.WCb(t.t),A))return W.KAb(t,A),++t.p,I.ey(A,\"SO#\"+ ++t.a),A;t.A=t.B.e,t.j=!0}if(t.A)return W.KAb(t,t.A.c),t.A.g=!0,++t.p,t.i&&W.XAb(t.c,t.A),t.A.c}return null},W.CAb=function(t,e){var A;return A=W.BAb(t),A?I.iy(A,e):null},W.DAb=function(t,e){var A,P;return W.GAb(t,e,!1)?t.s!=null?(t.B=new W.nCb(t,t.o),W.hCb(t.B,400),t.b=new y.Yvb(new lt.P3),W.BAb(t)):(P=new a.eDb(e),a.aDb(P,t.v),A=a.VCb(P,t.o),W.KAb(t,A),A.p=\"SO#1\",A):null},W.EAb=function(t,e){var A;return A=W.DAb(t,e),A?I.iy(A,e):null},W.FAb=function(t){return t.B?t.B.u:1},W.GAb=function(t,e,A){var P,r,i,D,u,o,Q,L,w,s,h,b,g;for(t.v=S1(t.w,0)?0:(T.Pjb(),B1(h1(Date.now()),t.w)),W.rBb(t.r,t.v),t.t=null,n.aw(e,1),r=0;r<e.f;r++)if(n.rp(e,r)>(g=n.lm(e,r),g+n.jm(e,r,g,e.C[r])))return!1;if(W.PAb(e),e.S=!0,D=null,L=null,u=null,w=null,(e.T&8)!=0){for(D=d(l.Z6,H,6,e.f,15,1),u=d(l.teb,wt,6,e.f,16,1),i=0;i<e.f;i++)D[i]=e.u[i]&3,u[i]=(e.u[i]&4)!=0;for(L=d(l.Z6,H,6,e.g,15,1),w=d(l.teb,wt,6,e.g,16,1),Q=0;Q<e.g;Q++)L[Q]=e.F[Q]&3,w[Q]=(e.F[Q]&4)!=0}if(n.aw(e,63),D!=null){for(i=0;i<e.f;i++)n.qn(e,i,D[i],u[i]);for(Q=0;Q<e.g;Q++)n.Fn(e,Q,L[Q],w[Q])}for(t.k=e,t.a=0,t.p=0,t.A=null,t.s=null,t.e=d(l.Z6,H,6,e.q,15,1),t.d=n.dp(e,t.e,!1,!0),t.f=d(l.Z6,H,6,t.d,15,1),P=0;P<e.q;P++)++t.f[t.e[P]];if(h=d(l.teb,wt,6,e.r,16,1),s=I.xy(e,h),s==0)return!0;if(!W.JAb(t,h))return!1;for(t.s=d(l.$db,v1,175,s,0,1),b=0,o=0;o<e.g;o++)h[o]&&(t.s[b++]=new W.DBb(e,o,t.g,t.e,t.f[t.e[e.D[0][o]]],t.q,A));return y.Vqb(t.s,new W.TAb),t.i&&(t.c=new W.YAb),W.HAb(t),!0},W.HAb=function(t){var e,A,P,r,i,D,u,o,Q,L,w,s;for(t.u=d(l.teb,b1,12,t.k.q,0,2),A=1;A<t.k.q;A++)t.u[A]=d(l.teb,wt,6,A,16,1);for(L=t.q,w=0,s=L.length;w<s;++w)for(Q=L[w],D=1;D<Q.d.length;D++)for(o=0;o<D;o++)W.LAb(t,Q.e[Q.d[D]],Q.e[Q.d[o]]);for(e=0;e<t.k.f;e++)for(i=1;i<n.Ho(t.k,e);i++)for(u=0;u<i;u++)W.LAb(t,n.Vo(t.k,e,i),n.Vo(t.k,e,u));if(t.e!=null)for(P=1;P<t.k.q;P++)for(r=0;r<P;r++)t.e[P]!=t.e[r]&&(t.u[P][r]=!0)},W.IAb=function(t,e,A,P,r){if(!W.GAb(t,e,r))return!1;if(t.s==null)t.t=new a.eDb(e),a.aDb(t.t,t.v),a.YCb(t.t,t.o,-1);else{switch(t.b=new y.Yvb(new lt.P3),A){case 2:t.B=new W.lCb(t,!1,t.o);break;case 3:t.B=new W.lCb(t,!0,t.o);break;case 4:t.B=new W.nCb(t,t.o);break;case 1:t.B=new W.qCb(t)}W.hCb(t.B,P)}return!0},W.JAb=function(t,e){var A,P,r;for(t.g=d(l.Z6,H,6,t.k.q,15,1),A=n.ep(t.k,t.g,e,!0),t.q=d(l.Zdb,v1,176,A,0,1),r=!0,P=0;P<A;P++)r=r&!!(t.q[P]=W.pBb(t.r,t.k,t.g,P));return r},W.KAb=function(t,e){var A,P,r,i,D,u,o,Q,L,w,s,h,b;if(t.d>1){for(Q=d(l.X6,Bt,6,t.d,15,1),L=d(l.X6,Bt,6,t.d,15,1),w=d(l.X6,Bt,6,t.d,15,1),o=d(l.X6,Bt,6,t.d,15,1),D=0;D<t.d;D++)w[D]=hn,o[D]=-1e9;for(P=0;P<e.k.length;P++)Q[t.e[P]]+=e.k[P].a,L[t.e[P]]+=e.k[P].b,w[t.e[P]]>e.k[P].c&&(w[t.e[P]]=e.k[P].c),o[t.e[P]]<e.k[P].c&&(o[t.e[P]]=e.k[P].c);for(u=0;u<t.d;u++)Q[u]/=t.f[u],L[u]/=t.f[u];for(s=d(l.X6,Bt,6,t.d,15,1),h=d(l.X6,Bt,6,t.d,15,1),b=d(l.X6,Bt,6,t.d,15,1),i=1;i<t.d;i++)s[i]=Q[0]-Q[i],h[i]=L[0]-L[i],b[i]=b[i-1]+o[i-1]-w[i]+3;for(A=0;A<e.k.length;A++)t.e[A]!=0&&(r=e.k[A],r.a+=s[t.e[A]],r.b+=h[t.e[A]],r.c+=b[t.e[A]])}},W.LAb=function(t,e,A){e<A?t.u[A][e]=!0:t.u[e][A]=!0},W.MAb=function(t,e){var A,P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S,p,M,z,q,x;if(jt(t.v,0)&&(T.Pjb(),g1(h1(Date.now()),t.v)))return!1;for(h=e.a,S=0,D=1;D<h.length;D++)if(h[D]!=null)for(o=0;o<D;o++)h[D][o]!=0&&W.bCb(t.B,D,o).length!=2&&(S+=h[D][o]);if(S>6)return!1;for(r=null,s=null,Q=null,A=U0,b=e.b,i=1;i<h.length;i++)if(h[i]!=null){for(u=0;u<i;u++)if(h[i][u]>1&&W.bCb(t.B,i,u).length==2){for(m=W.bCb(t.B,i,u),M=d(l.Z6,H,6,2,15,1),w=0;w<2;w++)p=t.s[m[w]],M[w]=I.Xx(e.c,p.a);for(x=d(l.Z6,H,6,2,15,1),g=-1;g<=1;g+=2)for(x[0]=g*8,B=-1;B<=1;B+=2){for(x[1]=B*8,P=h[i][u],z=1;z<=3;z++){for(r?I.Vx(r,e.c):r=new I.ky(e.c),L=0;L<2;L++)W.pAb(r,t.s[m[L]],M[L]+z*x[L]<<16>>16);if(q=W.zAb(t,r,t.q[i],t.q[u]),q<P-1){if(P=q,s?I.Vx(s,r):s=new I.ky(r),P<1)break}else break}P<h[i][u]&&P<A&&(A=P,Q?I.Vx(Q,s):Q=new I.ky(s))}}}return Q?(W.yAb(t,e,Q),e.b>=b?(W.GBb(e,b,h),!1):(I.Vx(e.c,Q),!0)):!1},W.NAb=function(t,e){I.Cy(),this.o=t,this.n=et(t,0)==0?new y.tvb:new y.uvb(t),this.r=new W.sBb(t,e)},W.OAb=function(t){W.NAb.call(this,t,W.kBb())},W.PAb=function(t){var e,A,P,r,i,D,u;for(u=t.T&248,n.aw(t,1),D=d(l.Z6,H,6,t.f,15,1),A=0;A<t.f;A++)D[A]=n.kp(t,A);for(P=0;P<D.length;P++)if(D[P]!=0)for(i=0;i<D[P];i++)n.Tk(t,P,n.Rk(t,1),1);for(n.aw(t,1),r=.8*n.Rl(t,t.q,t.r,(n.Ok(),n.Nk)),e=0;e<D.length;e++)D[e]!=0&&W.SAb(t,e,D[e],r);(u&8)!=0&&(t.T|=248&(8|u))},W.QAb=function(t){var e;return e=(I.pz(),I.oz)[t<I.oz.length?t:6],e*(t==1,.9)},W.RAb=function(t,e){return P8(e.o.length,t.o.length)},W.SAb=function(t,e,A,P){var r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S,p,M;for(w=t.e[e]-A,M=-1,S=NaN,b=0;b<w;b++)if(n.Om(t,t.k[e][b],e)){M=b,S=n.Tl(t,e,t.i[e][b]);break}if(p=M==-1?0:1,D=null,p<w){for(D=d(l.X6,Bt,6,w-p,15,1),Q=0,g=0;g<w;g++)g!=M&&(D[Q++]=n.Tl(t,e,t.i[e][g]));c.lzb(D,c.Szb(y0(y.Xqb.prototype.jd,y.Xqb,[])))}if(u=G1/k.Math.max(A,3),m=0,D!=null)if(D.length==1&&A==1)m=D[0];else{for(o=0,g=0;g<D.length;g++)r=g==0?D[D.length-1]-G1:D[g-1],i=D[g],o<i-r&&(o=i-r,m=r);u=o/(A+1)}for(h=0;h<A;h++)m+=u,s=m,p!=0&&(L=n.ko(s,S),k.Math.abs(L)<u/2&&(L<0?s=S-u/2:s=S+u/2)),B=t.i[e][w+h],n.vn(t,B,t.J[e].a+P*k.Math.sin(s)),n.wn(t,B,t.J[e].b+P*k.Math.cos(s))},G(208,1,{},W.OAb),U.a=0,U.d=0,U.i=!1,U.j=!1,U.o=0,U.p=0,U.v=0,U.w=0,U.C=!1,l.Udb=O(208),W.TAb=function(){},G(271,1,{},W.TAb),U.Qb=function(t,e){return W.RAb(t,e)},U.lb=function(t){return this===t},l.Tdb=O(271),W.WAb=function(t,e){y.Pvb(t.a,I.Zx(e.c),new W.xAb)},W.XAb=function(t,e){return y.epb(t.a,I.Zx(e.c))},W.YAb=function(){this.a=new y.Xvb},G(272,1,{},W.YAb),l.Vdb=O(272),W.ZAb=function(t,e){return t.e[t.c[e]]},W.$Ab=function(t,e){return t.a[e]},W._Ab=function(t){return t.d.length-t.c.length},W.aBb=function(t,e,A){return I.Yx(t.b[e],t.c[A])},W.bBb=function(t,e,A){var P,r,i;for(r=0,i=0;i<t.a.length;i++)if(P=(1-A)*t.a[i]+A/t.a.length,r+=P,e<=r)return i;return t.a.length-1},W.cBb=function(t,e,A,P,r,i){this.c=t,this.e=e,this.d=A,this.f=P,this.b=r,this.a=i},G(176,1,{176:1},W.cBb),l.Zdb=O(176),W.eBb=function(t){return y.vnb(new y.Mnb(t.e).a)<t.c},W.fBb=function(t,e){var A;return A=x0.wxb(t,e),++t.a,A&&(++A.b,++t.b),A},W.gBb=function(t,e,A){return y.vnb(new y.Mnb(t.e).a)<t.c?x0.xxb(t,e,A):null},W.hBb=function(){x0.yxb.call(this),this.c=5e5},W.kBb=function(){return W.dBb||!W.dBb&&(W.dBb=new W.hBb),W.dBb},G(347,346,{4:1,108:1,112:1},W.hBb),U.get=function(t){return W.fBb(this,t)},U.put=function(t,e){return W.gBb(this,t,e)},U.clear=function(){y.unb(new y.Mnb(this.e).a)},U.a=0,U.b=0,U.c=0,U.d=0,l.Xdb=O(347),W.mBb=function(t,e){return t.b!=e.b?t.b<e.b?-1:1:0},W.nBb=function(t,e){this.a=t,this.c=e},G(232,1,{32:1,232:1},W.nBb),U.Rb=function(t){return W.mBb(this,t)},U.b=0,l.Wdb=O(232),W.pBb=function(t,e,A,P){var r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S,p,M,z,q,x,J,E,N,ft,Lt,ot,st,ut,rt,Ut,ht,it,bt,ct,$t,Ft,Rt,Et,Nt,It,vt,kt,L1,f1,St,Xt,k1,qt,P1,E1,y1,o1,I1,O1,F0,Z1,l1,f0,w0,d0;for(ot=0,Q=0,ht=0,kt=d(l.teb,wt,6,e.q,16,1),Xt=d(l.teb,wt,6,e.q,16,1),St=d(l.teb,wt,6,e.q,16,1),i=0;i<e.q;i++)A[i]==P&&(St[i]=!0,kt[i]=!0,++Q,++ot);for(D=0;D<e.q;D++)if(St[D])for(Rt=0;Rt<e.j[D];Rt++)x=e.i[D][Rt],kt[x]||(kt[x]=!0,++Q,++ht);for(u=0;u<e.q;u++)if(kt[u]&&!St[u]&&!Xt[u])for(Rt=0;Rt<e.e[u];Rt++)x=e.i[u][Rt],kt[x]||(Xt[x]=!0,kt[x]=!0,++Q);for(h=0,s=0;s<e.r;s++)kt[e.D[0][s]]&&kt[e.D[1][s]]&&++h;for(bt=new n.tw(Q,h),n.yo(e,bt,kt,!1,null),n.Kn(bt,!0),st=d(l.Z6,H,6,ot,15,1),$t=d(l.Z6,H,6,Q,15,1),it=d(l.Z6,H,6,ot+ht,15,1),I1=d(l.Z6,H,6,e.q,15,1),Lt=0,ct=0,Ut=0,o=0;o<e.q;o++)kt[o]&&(n.Wp(e,o,!0)&&n.rn(bt,ct,Ne,!0),St[o]||(bt.u[ct]|=n0),(St[o]||!Xt[o])&&(it[Ut]=ct,I1[o]=Ut,++Ut),St[o]&&(st[Lt]=ct,++Lt),$t[ct]=o,bt.C[ct]==1&&(bt.A[ct]=2,bt.T&=bt.C[ct]==1?0:7),++ct);if(q=null,P1=null,B=null,qt=null,f1=!1,f0=!!t.a&&W.eBb(t.a)&&Q<=32,f0){for(B=new n.Lg(bt,512),r=0;r<bt.f;r++)if(B.db[r]==3){f0=!1;break}for(w=0;w<bt.g;w++)if(B.o[w]==3){f0=!1;break}f0&&n.Gg(B)}if(t.a&&!f0&&++t.a.d,bt.T|=8,f0&&(f1=n.Cg(B),qt=n.og(B),g=W.fBb(t.a,qt),g)){for(Ft=(n.fg(B),B.H),q=new y.Jj,E=g.a,N=0,ft=E.length;N<ft;++N){for(J=E[N],k1=0;k1<bt.q;k1++)b=J[Ft[k1]],n.vn(bt,k1,b.a),n.wn(bt,k1,b.b),n.xn(bt,k1,f1?-b.c:b.c);y.pj(q,new a.MDb(bt))}P1=g.c}if(!q){for(Z1=new a.eDb(bt),a.aDb(Z1,t.d),a.YCb(Z1,t.c,16),q=new y.Jj,L=a.WCb(Z1),c.izb(q.a,L),z=a.WCb(Z1);z;)c.izb(q.a,z),z=a.WCb(Z1);for(o1=U0,p=new y.rqb(q);p.a<p.c.a.length;)m=y.qqb(p),o1=k.Math.min(o1,m.e);for(l1=o1+4.08,Et=q.a.length-1;Et>=0;Et--)(c.Fzb(Et,q.a.length),q.a[Et]).e>l1&&y.Bj(q,Et);for(P1=d(l.X6,Bt,6,q.a.length,15,1),E1=0,L1=0,Nt=0;Nt<q.a.length;Nt++)m=(c.Fzb(Nt,q.a.length),q.a[Nt]),P1[Nt]=k.Math.pow(10,(o1-m.e)/1.36),E1+=P1[Nt];for(It=0;It<q.a.length;It++)P1[It]/=E1;if(t.b){for(w0=0,y1=U0,M=new y.rqb(q);M.a<M.c.a.length;)m=y.qqb(M),ut=W.qBb(I.iy(m,m.o)),m.n=ut,isNaN(ut)||(y1=k.Math.min(y1,ut),++w0),I.Ux(m,bt);for(rt=y1+2.72,S=new y.rqb(q);S.a<S.c.a.length;)m=y.qqb(S),!isNaN(m.n)&&m.n>rt&&(m.n=NaN,--w0);if(w0!=0){for(O1=d(l.X6,Bt,6,w0,15,1),F0=0,L1=0,vt=q.a.length-1;vt>=0;vt--)m=(c.Fzb(vt,q.a.length),q.a[vt]),isNaN(m.n)?y.Bj(q,vt):(O1[L1]=k.Math.pow(10,(y1-m.n)/1.36),F0+=O1[L1],++L1);for(P1=d(l.X6,Bt,6,w0,15,1),Rt=0;Rt<w0;Rt++)P1[Rt]=O1[Rt]/F0}}if(f0){for(Ft=(n.fg(B),B.H),J=w1(l.q7,[T0,zn],[131,29],0,[q.a.length,Ft.length],2),Rt=0;Rt<J.length;Rt++)for(k1=0;k1<Ft.length;k1++)d0=I.Yx((c.Fzb(Rt,q.a.length),q.a[Rt]),k1),J[Rt][Ft[k1]]=new n.li(d0.a,d0.b,f1?-d0.c:d0.c);W.gBb(t.a,qt,new W.nBb(J,P1))}}return new W.cBb(st,$t,it,I1,y.Ij(q,d(l.oeb,{4:1,5:1,11:1,8:1,462:1},111,0,0,1)),P1)},W.qBb=function(t){var e,A;try{return A=new K.yC(t),he.yB(A,4e3,cA),K.wC(A,A.i)}catch(P){if(P=C1(P),Yt(P,184))return NaN;if(Yt(P,19))return e=P,T.LB(e,(T.Pjb(),T.Ojb),\"\"),NaN;throw Qt(P)}},W.rBb=function(t,e){t.d=e},W.sBb=function(t,e){this.c=t,this.a=e,this.b=!1},G(270,1,{},W.sBb),U.b=!1,U.c=0,U.d=0,l.Ydb=O(270),W.wBb=function(){W.wBb=u1,W.vBb=v(F(l.seb,1),Jt,6,15,[0,60,120,180,240,300]),W.tBb=v(F(l.seb,1),Jt,6,15,[17,17,17,17,17,17]),W.uBb=v(F(l.seb,2),A0,16,0,[v(F(l.seb,1),Jt,6,15,[-20,20]),v(F(l.seb,1),Jt,6,15,[40,80]),v(F(l.seb,1),Jt,6,15,[100,140]),v(F(l.seb,1),Jt,6,15,[160,200]),v(F(l.seb,1),Jt,6,15,[220,260]),v(F(l.seb,1),Jt,6,15,[280,320])])},W.xBb=function(t,e,A){var P,r,i;if(t.o[e]==2||(t.o[e]==1||n.Wp(t,e,!0))&&t.j[e]!=3||t.o[e]==0&&t.j[e]!=4)return 1;for(i=-2,r=0;r<t.j[e];r++)if(P=t.i[e][r],P!=A){if(i==-2)i=n.sg(t.d,P);else if(i!=n.sg(t.d,P))return 1}return t.j[e]-1},W.yBb=function(t,e,A,P){var r,i,D,u,o,Q,L,w,s,h,b;if(L=d(l.teb,wt,6,e.q,16,1),s=n.Gp(e,t.k[0],t.p[1],L,null,null),r=0,t.k[0]!=t.p[2]&&(r=n.wp(e,t.k[0],t.p[2])),Q=!1,s>P-r-s&&(s=P-r-s,Q=!0),Q&&r!=0){for(b=t.k[0],D=t.p[1];e.o[b]==2&&e.j[b]==2&&e.C[b]<10;)for(L[b]=!0,w=0;w<2;w++)if(u=e.i[b][w],u!=D){D=b,b=u;break}}for(h=0,o=A[t.p[1]],t.o=d(l.Z6,H,6,s,15,1),i=0;i<e.q;i++)A[i]==o&&L[i]^Q&&(t.o[h++]=i);t.n=t.p[Q?2:1]},W.zBb=function(t,e){return e==0?t.i:t.j},W.ABb=function(t,e){var A,P,r,i,D,u;for(i=0;i<2;i++){for(A=n.Ul(e,i,t.a),u=n.Ul(e,1-i,t.a);e.o[A]==2&&e.j[A]==2&&e.C[A]<10;)for(D=0;D<2;D++)if(P=e.i[A][D],P!=u){u=A,A=P;break}t.p[i+1]=A,t.k[i]=u}if(n.Mo(e,t.p[1])==0&&n.Wo(e,t.p[1])==3)t.p[0]=-1;else for(r=0;r<n.Wo(e,t.p[1]);r++)if(P=n.Vo(e,t.p[1],r),P!=t.p[2]){t.p[0]=P;break}if(n.Mo(e,t.p[2])==0&&n.Wo(e,t.p[2])==3)t.p[3]=-1;else for(r=0;r<n.Wo(e,t.p[2]);r++)if(P=n.Vo(e,t.p[2],r),P!=t.p[1]){t.p[3]=P;break}},W.BBb=function(t,e){var A,P,r,i,D,u,o,Q,L,w;if(L=W._Ab(t.f)!=1?1:W.xBb(e,t.p[1],t.k[0]),w=W._Ab(t.g)!=1?1:W.xBb(e,t.p[2],t.k[1]),!(L==1&&w==1)){for(D=360/k.Math.max(L,w)|0,A=0,P=0,i=0;i<t.d.length&&t.d[i]<D;i++)P+=t.c[i],++A;if(A!=0){for(Q=d(l.seb,Jt,6,A,15,1),u=d(l.seb,Jt,6,A,15,1),o=d(l.seb,A0,16,A,0,2),r=0;r<A;r++)Q[r]=t.d[r],u[r]=(t.c[r]*100/P|0)<<16>>16,o[r]=t.e[r];t.d=Q,t.c=u,t.e=o}}},W.CBb=function(t,e){var A,P,r,i,D,u,o,Q,L,w,s,h,b,g;if(n.am(e,t.a)==1&&(n.bm(e,t.a)==1||n.bm(e,t.a)==2)){for(Q=!1,u=0;u<2;u++)for(P=t.p[3*u],A=t.p[1+u],g=t.p[2-u],L=0;L<e.j[A];L++)if(b=e.i[A][L],b!=g&&b!=P){b<P&&(Q=!Q);break}for(n.bm(e,t.a)==1&&(Q=!Q),r=0,i=0,o=0;o<t.d.length;o++)t.d[o]<180^Q&&(i+=t.c[o],++r);if(r<t.d.length){for(h=d(l.seb,Jt,6,r,15,1),w=d(l.seb,Jt,6,r,15,1),s=d(l.seb,A0,16,r,0,2),r=0,D=0;D<t.d.length;D++)t.d[D]<180^Q&&(h[r]=t.d[D],w[r]=(t.c[D]*100/i|0)<<16>>16,s[r]=t.e[D],++r);t.d=h,t.c=w,t.e=s}}},W.DBb=function(t,e,A,P,r,i,D){W.wBb();var u,o,Q,L;(L=I.py(I.oy,ND),L?I.fz(L):null)[0]==-1&&T.Pjb(),this.a=e,this.p=d(l.Z6,H,6,4,15,1),this.k=d(l.Z6,H,6,2,15,1),u=new I.dz,I.zy(t,e,this.p,u)!=null?(this.k[0]=u.e[0],this.k[1]=u.e[1]):W.ABb(this,t),this.i=A[this.p[1]],this.j=A[this.p[2]],this.f=i[this.i],this.g=i[this.j],this.b=A[t.D[0][e]]==this.i,(Q=I.py(I.oy,ND),Q?I.fz(Q):null)[0]==-1&&T.Pjb(),D?(this.d=W.vBb,this.c=W.tBb,this.e=W.uBb):(this.d=I.By(u.d),this.d==null?(o=new I.mz(t,this.p),this.d=o.b,this.c=o.a,this.e=o.c):(this.c=I.yy(u.d),this.e=I.Ay(u.d))),W.CBb(this,t),W.BBb(this,t),W.yBb(this,t,P,r)},G(175,1,{175:1},W.DBb),U.a=0,U.b=!1,U.i=0,U.j=0,U.n=0,l.$db=O(175),W.EBb=function(t,e){var A;for(A=0;A<t.f.length;A++)if(jt(t.f[A],e.f[A]))return dn(t.f[A],e.f[A])?-1:1;return 0},W.FBb=function(t,e,A){var P;for(P=0;P<e.length;P++)if(jt(Z(t.f[P],e[P]),Z(A[P],e[P])))return!1;return!0},W.GBb=function(t,e,A){t.b=e,t.a=A,t.c&&t.e*k.Math.pow(10,-e/1.36)},W.HBb=function(t,e){t.c=e,t.e*k.Math.pow(10,-t.b/1.36)},W.IBb=function(t,e){t.e=e},W.JBb=function(t,e,A){this.i=t,this.d=e,this.f=W.UBb(A,t,e)},G(164,1,{32:1,164:1},W.JBb),U.Rb=function(t){return W.EBb(this,t)},U.lb=function(t){return W.EBb(this,t)==0},U.ob=function(){var t,e,A,P,r,i,D,u;for(u=new T.Kjb,A=this.i,r=0,D=A.length;r<D;++r)t=A[r],u.a+=t,u.a+=\",\";for(this.i.length!=0&&T.ugb(u,c.Szb(u.a).length-1),u.a+=\";\",e=this.d,P=0,i=e.length;P<i;++P)t=e[P],u.a+=t,u.a+=\",\";return this.d.length!=0&&T.ugb(u,c.Szb(u.a).length-1),u.a},U.b=0,U.e=0,U.g=!1,l.ieb=O(164),W.NBb=function(t,e){var A,P;for(P=!0,A=0;A<t.c.length;A++)(jt(Z($0(e.c[A]),t.c[A]),0)||jt(Z(e.b[A],t.c[A]),t.b[A]))&&(P=!1);return P},W.OBb=function(t,e){var A,P;for(P=!0,A=0;A<t.c.length;A++)(jt(Z($0(t.c[A]),e.c[A]),0)||jt(Z(t.b[A],e.c[A]),e.b[A]))&&(P=!1);return P},W.PBb=function(t,e,A,P){this.c=d(l.$6,e0,6,P.c,14,1),this.b=d(l.$6,e0,6,P.c,14,1),W.VBb(P,t,e,this.c,this.b),this.a=A},G(252,1,{252:1},W.PBb),U.a=0,l._db=O(252),W.RBb=function(){W.RBb=u1,W.QBb=v(F(l.$6,1),e0,6,14,[0,1,3,7,15,31,63,127])},W.SBb=function(t,e,A){var P,r,i,D,u,o;for(u=new T.Kjb,P=W.TBb(t,e),u.a+=\" rb:\",o=c.Szb(u.a).length,i=0;i<P.length;i++)P[i]!=-1&&(c.Szb(u.a).length!=o&&(u.a+=\",\"),u.a+=i);for(u.a+=\" ti:\",o=c.Szb(u.a).length,D=0;D<P.length;D++)P[D]!=-1&&(c.Szb(u.a).length!=o&&(u.a+=\",\"),T.Fjb(u,P[D]));for(u.a+=\" (\",o=c.Szb(u.a).length,r=0;r<P.length;r++)P[r]!=-1&&(c.Szb(u.a).length!=o&&(u.a+=\",\"),T.Fjb(u,W.mAb(A,r,P[r])));return T.Ijb(u,(lt.K3(),\") \"+lt.L3(e.a,3))),u.a},W.TBb=function(t,e){var A,P,r;for(A=d(l.Z6,H,6,t.e.length,15,1),r=0;r<t.e.length;r++)P=T1(W.QBb[t.a[r]],t.b[r]),jt(Z(e.c[t.d[r]],P),0)?A[r]=Gt(a1(Z(e.b[t.d[r]],P),t.b[r])):A[r]=-1;return A},W.UBb=function(t,e,A){var P,r,i,D,u,o,Q,L,w;for(w=d(l.$6,e0,6,1+t.d[t.d.length-1],14,1),P=0,D=e,o=0,L=D.length;o<L;++o)r=D[o],w[t.d[P]]=B1(w[t.d[P]],Ct(r<<t.b[P])),++P;for(i=A,u=0,Q=i.length;u<Q;++u)r=i[u],w[t.d[P]]=B1(w[t.d[P]],Ct(r<<t.b[P])),++P;return w},W.VBb=function(t,e,A,P,r){var i,D,u,o;for(D=A,u=0,o=D.length;u<o;++u)i=D[u],r[t.d[i]]=B1(r[t.d[i]],Ct(e[i]<<t.b[i])),P[t.d[i]]=B1(P[t.d[i]],T1(W.QBb[t.a[i]],t.b[i]))},W.WBb=function(t,e,A){return jt(Z(e.c[t.d[A]],T1(1,t.b[A])),0)},W.XBb=function(t){var e,A;for(e=0,A=t-1;A>0;)A>>=1,++e;return e},W.YBb=function(t,e){W.RBb();var A,P,r,i,D,u,o,Q,L,w,s,h;for(this.e=e,this.a=d(l.Z6,H,6,e.length+t.length,15,1),this.b=d(l.Z6,H,6,e.length+t.length,15,1),this.d=d(l.Z6,H,6,e.length+t.length,15,1),A=0,i=0,r=0,u=e,o=0,Q=u.length;o<Q;++o)D=u[o],P=W.XBb(D.d.length),A+P<=64?(this.b[r]=A,A+=P):(++i,this.b[r]=0,A=0),this.a[r]=P,this.d[r]=i,++r;for(w=t,s=0,h=w.length;s<h;++s)L=w[s],P=W.XBb(L.b.length),A+P<=64?(this.b[r]=A,A+=P):(++i,this.b[r]=0,A=0),this.a[r]=P,this.d[r]=i,++r;this.c=i+1},G(375,1,{},W.YBb),U.c=0,l.aeb=O(375),W.ZBb=function(t,e){var A,P,r;for(r=0,P=new y.rqb(e);P.a<P.c.a.length;)A=y.qqb(P),r+=W.FBb(t,A.c,A.b)?t.b:0;return r},W.$Bb=function(t,e,A){var P;return P=new W.JBb(e,A,t.D),W.IBb(P,W.cCb(t,P)),P},W._Bb=function(t){var e,A;return t.A.d.a.length==0?null:(e=Yt(t,120)?y.qvb(t.c,t.A.d.a.length):0,A=lt.V3(t.A,e),lt.X3(t.A,e),A)},W.aCb=function(t,e){var A,P,r,i,D;for(A=d(l.X6,Bt,6,t.w.length+t.v.length,15,1),P=W.AAb(t.i,e.d).c,i=new y.rqb(P);i.a<i.c.a.length;)if(r=y.qqb(i),(W.FBb(e,r.c,r.b)?e.b:0)!=0)for(D=0;D<A.length;D++)W.WBb(t.D,r,D)&&(A[D]+=r.a);return A},W.bCb=function(t,e,A){return t.f[e][A]},W.cCb=function(t,e){var A,P,r,i;for(P=1,i=0;i<t.v.length;i++)P*=W.$Ab(t.v[i],e.d[i]);for(A=W.AAb(t.i,e.d),r=0;r<t.w.length;r++)P*=W.nAb(A,r,e.i[r]);return P},W.dCb=function(t,e,A){var P,r,i,D,u,o,Q;if(e&&e.g&&++t.C,e&&t.s>e.b&&(t.s=e.b),t.G)return W._Bb(t);if(t.F.d.a.length==t.t)return null;if(e&&e.b>3){if(P=A?W.AAb(t.i,e.d):null,D=A?P.c:null,i=A?D.a.length:0,W.gCb(t,e),A)for(u=i;u<D.a.length;u++)W.tAb(y.epb(A.a,I.Zx(e.c)),W.SBb(t.D,(c.Fzb(u,D.a.length),D.a[u]),P));e.g||(e.b<6?lt.T3(t.A,e):(!t.e||t.e.b>e.b)&&(t.e=e)),++t.g}for(o=t.s+3,Q=W.fCb(t,o,e);Q&&(r=W.ZBb(Q,W.AAb(t.i,Q.d).c),!(r<o));){if(r<6&&lt.T3(t.B,new W.xCb(Q,r)),++t.g,lt.a4(t.F,Q),t.F.d.a.length==t.t)return null;o=t.s+3,Q=W.fCb(t,o,Q)}if(!Q){if(t.A.d.a.length!=0){for(t.G=!0;t.A.d.a.length!=0&&lt.V3(t.A,t.A.d.a.length-1).b>t.s+3;)lt.X3(t.A,t.A.d.a.length-1);Q=W._Bb(t)}return Q}return lt.a4(t.F,Q),Q},W.eCb=function(t,e,A){var P,r,i,D,u,o,Q;for(y.Hqb(t.q),t.p[0]=e,t.q[e]=!0,i=0,D=0;i<=D;){for(u=0;u<t.j[t.p[i]].length;u++){if(r=t.j[t.p[i]][u],r==A){for(P=1,o=i;o!=0;)++P,o=t.r[o];for(Q=d(l.Z6,H,6,P,15,1),Q[0]=t.k[t.p[i]][u],P=1;i!=0;)Q[P++]=t.o[i],i=t.r[i];return Q}t.q[r]||(t.q[r]=!0,++D,t.p[D]=r,t.o[D]=t.k[t.p[i]][u],t.r[D]=i)}++i}return null},W.fCb=function(t,e,A){var P;return t.B.d.a.length!=0&&(P=lt.V3(t.B,0),P.a<e)?(lt.X3(t.B,0),P.b):t.qd(A)},W.gCb=function(t,e){var A,P,r,i,D,u,o,Q,L,w,s;for(A=e.a,s=e.i,D=1;D<A.length;D++)if(A[D]!=null){for(u=0;u<D;u++)if(A[D][u]!=0){for(L=t.f[D][u],w=new W.PBb(s,L,A[D][u],t.D),o=!1,Q=null,P=W.AAb(t.i,e.d).c,i=new y.rqb(P);i.a<i.c.a.length;){if(r=y.qqb(i),W.NBb(r,w)){o=!0;break}W.OBb(r,w)&&(!Q&&(Q=new y.Jj),c.izb(Q.a,r))}o||(Q&&y.Hi(P,Q),c.izb(P.a,w))}}},W.hCb=function(t,e){t.t=k.Math.min(e,t.u)},W.iCb=function(t){var e,A,P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S,p,M;for(this.i=t,this.w=t.s,this.v=t.q,this.D=new W.YBb(this.v,this.w),this.n=0,Q=this.w,s=0,g=Q.length;s<g;++s)u=Q[s],this.n=k.Math.max(this.n,k.Math.max(1+u.i,1+u.j));for(e=d(l.Z6,H,6,this.n,15,1),L=this.w,h=0,B=L.length;h<B;++h)u=L[h],++e[u.i],++e[u.j];for(this.j=d(l.Z6,M1,7,e.length,0,2),this.k=d(l.Z6,M1,7,e.length,0,2),D=0;D<e.length;D++)this.j[D]=d(l.Z6,H,6,e[D],15,1),this.k[D]=d(l.Z6,H,6,e[D],15,1);for(y.Jqb(e,e.length,0),i=0;i<this.w.length;i++)P=W.zBb(this.w[i],0),r=W.zBb(this.w[i],1),this.j[P][e[P]]=r,this.j[r][e[r]]=P,this.k[P][e[P]]=i,this.k[r][e[r]]=i,++e[P],++e[r];for(this.p=d(l.Z6,H,6,this.n,15,1),this.o=d(l.Z6,H,6,this.n,15,1),this.r=d(l.Z6,H,6,this.n,15,1),this.q=d(l.teb,wt,6,this.n,16,1),this.f=d(l.Z6,T0,28,this.n,0,3),A=1;A<this.n;A++)for(this.f[A]=d(l.Z6,M1,7,A,0,2),r=0;r<A;r++)this.f[A][r]=W.eCb(this,A,r);for(this.u=1,o=this.w,w=0,b=o.length;w<b;++w)u=o[w],this.u*=u.d.length;for(S=this.v,p=0,M=S.length;p<M;++p)m=S[p],this.u*=m.b.length;this.u<=0&&(this.u=Mt),this.F=new lt.c4,this.A=new lt.$3((c.Gzb(new W.jCb),new y.dtb)),this.B=new lt.Z3,this.g=0,this.C=0,this.s=3,this.G=!1,this.t=k.Math.min(Z0,this.u)},G(235,1,{}),U.g=0,U.n=0,U.s=0,U.t=0,U.u=0,U.C=0,U.G=!1,l.geb=O(235),W.jCb=function(){},G(348,1,{},W.jCb),l.beb=O(348),W.kCb=function(t){var e,A,P,r,i,D,u,o,Q,L,w;if(t.F.d.a.length==t.u)return null;L=d(l.Z6,H,6,t.w.length,15,1),A=d(l.Z6,H,6,t.v.length,15,1),P=0;do{if(P++==64)return null;if(t.b){for(u=P/64,Q=0;Q<t.v.length;Q++)A[Q]=W.bBb(t.v[Q],y.pvb(t.c),u);for(e=W.AAb(t.i,A),o=0;o<t.w.length;o++)L[o]=W.lAb(e,o,y.pvb(t.c),u)}else{for(D=0;D<t.v.length;D++)A[D]=y.qvb(t.c,t.v[D].b.length);for(i=0;i<t.w.length;i++)L[i]=y.qvb(t.c,t.w[i].d.length)}w=W.$Bb(t,L,A)}while(r=lt.W3(t.F,w),(r<0?-1:r)!=-1);return w},W.lCb=function(t,e,A){W.iCb.call(this,t),this.b=e,this.c=et(A,0)==0?new y.tvb:new y.uvb(A)},G(120,235,{120:1},W.lCb),U.qd=function(t){return W.kCb(this)},U.b=!1,l.feb=O(120),W.nCb=function(t,e){W.lCb.call(this,t,!0,e),this.a=!0},G(209,120,{120:1},W.nCb),U.qd=function(t){var e,A,P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S;if(!t)return this.a?W.$Bb(this,d(l.Z6,H,6,this.w.length,15,1),d(l.Z6,H,6,this.v.length,15,1)):W.kCb(this);if(t.b==0)return W.kCb(this);for(P=W.aCb(this,t),A=t.i,e=t.d,L=d(l.teb,wt,6,P.length,16,1),i=0;i<64;i++){for((L[0]||this.w[0].d.length==1)&&(P[0]=0),Q=1,u=1;u<this.w.length;u++)L[Q]||this.w[u].d.length==1?P[Q]=P[Q-1]:P[Q]+=P[Q-1],++Q;for(b=this.v,g=0,B=b.length;g<B;++g)h=b[g],L[Q]||h.b.length==1?P[Q]=P[Q-1]:P[Q]+=P[Q-1],++Q;if(P[P.length-1]==0)return W.kCb(this);for(s=y.pvb(this.c)*P[P.length-1],D=0;D<P.length;D++)if(s<P[D]){if(m=y.zqb(A,A.length),r=y.zqb(e,e.length),D<this.w.length){for(w=1;w<this.w[D].d.length;w++)if(++m[D],m[D]==this.w[D].d.length&&(m[D]=0),S=W.$Bb(this,m,r),o=lt.W3(this.F,S),(o<0?-1:o)==-1)return S}else for(D-=this.w.length,w=1;w<this.v[D].b.length;w++)if(++r[D],r[D]==this.v[D].b.length&&(r[D]=0),S=W.$Bb(this,m,r),o=lt.W3(this.F,S),(o<0?-1:o)==-1)return S;L[D]=!0;break}}return W.kCb(this)},U.a=!1,l.ceb=O(209),W.pCb=function(t){var e,A,P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S;for(A=-1,Q=!1,h=U0,e=W.AAb(t.i,t.c),g=0;g<t.d.length;g++)t.d[g]<t.w[g].d.length-1&&(s=W.nAb(e,g,t.d[g])/W.nAb(e,g,t.d[g]+1),h>s&&(h=s,A=g));for(B=0;B<t.c.length;B++)t.c[B]<t.v[B].b.length-1&&(s=W.$Ab(t.v[B],t.c[B])/W.$Ab(t.v[B],t.c[B]+1),h>s&&(h=s,A=B,Q=!0));if(A==-1){t.a=null;return}for(i=1,u=0;u<t.d.length;u++)(Q||u!=A)&&(i*=t.d[u]+1);for(o=0;o<t.c.length;o++)(!Q||o!=A)&&(i*=t.c[o]+1);for(t.a=d(l.ieb,Hn,164,i,0,1),Q?++t.c[A]:++t.d[A],D=0;D<i;D++){for(b=D,S=d(l.Z6,H,6,t.d.length,15,1),w=0;w<t.d.length;w++)(Q||w!=A)&&(m=t.d[w]+1,m!=1&&(S[w]=b%m,b=b/m|0));for(r=d(l.Z6,H,6,t.c.length,15,1),L=0;L<t.c.length;L++)(!Q||L!=A)&&(P=t.c[L]+1,P!=1&&(r[L]=b%P,b=b/P|0));Q?r[A]=t.c[A]:S[A]=t.d[A],t.a[D]=W.$Bb(t,S,r)}y.Vqb(t.a,new W.tCb),t.b=-1},W.qCb=function(t){W.iCb.call(this,t),this.d=d(l.Z6,H,6,this.w.length,15,1),this.c=d(l.Z6,H,6,this.v.length,15,1),this.a=d(l.ieb,Hn,164,1,0,1),this.a[0]=W.$Bb(this,d(l.Z6,H,6,this.w.length,15,1),d(l.Z6,H,6,this.v.length,15,1)),this.b=-1},W.sCb=function(t,e){return en(e.e,t.e)},G(273,235,{},W.qCb),U.qd=function(t){return this.a==null||(this.b+1==this.a.length&&W.pCb(this),this.a==null)?null:(++this.b,this.a[this.b])},U.b=0,l.eeb=O(273),W.tCb=function(){},G(352,1,{},W.tCb),U.Qb=function(t,e){return W.sCb(t,e)},U.lb=function(t){return this===t},l.deb=O(352),W.wCb=function(t,e){return t.a<e.a?-1:t.a>e.a?1:0},W.xCb=function(t,e){this.b=t,this.a=e},G(253,1,{32:1,253:1},W.xCb),U.Rb=function(t){return W.wCb(this,t)},U.a=0,l.heb=O(253),a.ACb=function(){a.ACb=u1,a.zCb=v(F(l.Nbb,1),yt,2,6,[\"distance\",\"plane\",\"line\",\"torsion\",\"stereo\",\"binap\"])},a.BCb=function(t,e){var A;if(t.f==null)e.a+=\" atoms:<null>\";else for(T.Ijb(e,\" atoms:\"+t.f[0]),A=1;A<t.f.length;A++)T.Ijb(e,\",\"+t.f[A])},a.CCb=function(t,e,A,P,r,i){var D,u,o,Q,L;for(n.Wh(t.k[e],P,r,i),L=t.o,o=0;o<L.e[e];o++){if(D=L.i[e][o],u=!1,A!=null){for(Q=0;Q<A.length;Q++)if(D==A[Q]){u=!0;break}}u||(L.e[D]==1?n.Wh(t.k[D],P,r,i):n.cq(L,L.k[e][o])?n.Wh(t.k[D],P/3,r/3,i/3):a.DCb(t,e,D,P,r,i))}},a.DCb=function(t,e,A,P,r,i){var D,u,o,Q,L,w,s;for(n.Wh(t.k[A],P,r,i),s=t.o,w=d(l.teb,wt,6,s.q,16,1),o=d(l.Z6,H,6,s.q,15,1),o[0]=A,w[e]=!0,w[A]=!0,u=0,Q=0;u<=Q;){for(L=0;L<n.Ho(s,o[u]);L++)D=n.Vo(s,o[u],L),w[D]||(w[D]=!0,o[++Q]=D,n.Wh(t.k[D],P,r,i));++u}},a.ECb=function(t){this.f=t,this.g=!0},a.FCb=function(t,e,A,P,r){a.ACb();var i,D,u,o,Q,L,w,s,h,b,g;for(o=0;o<e.length;o++)n.Xh(A,I.Yx(t,e[o]));for(n.ei(A,1/e.length),Q=0;Q<e.length;Q++)r[Q][0]=I.$x(t,e[Q])-A.a,r[Q][1]=I._x(t,e[Q])-A.b,r[Q][2]=I.ay(t,e[Q])-A.c;for(b=w1(l.X6,[b1,Bt],[15,6],15,[3,3],2),L=0;L<e.length;L++)for(w=0;w<3;w++)for(s=0;s<3;s++)b[w][s]+=r[L][w]*r[L][s];for(g=new De.Vc(b),i=g.e,h=0,u=1;u<3;u++)i[u]<i[h]&&(h=u);D=g.a,P.a=D[0][h],P.b=D[1][h],P.c=D[2][h]},a.GCb=function(t,e,A,P,r){var i,D,u,o,Q,L,w,s,h;w=P.a,s=P.b,h=P.c,i=k.Math.cos(r),Q=k.Math.sin(r),L=1-i,D=t.k[e].a-A.a,u=t.k[e].b-A.b,o=t.k[e].c-A.c,I.fy(t,e,A.a+(L*w*w+i)*D+(L*w*s+Q*h)*u+(L*w*h-Q*s)*o),I.gy(t,e,A.b+(L*w*s-Q*h)*D+(L*s*s+i)*u+(L*s*h+Q*w)*o),I.hy(t,e,A.c+(L*w*h+Q*s)*D+(L*h*s-Q*w)*u+(L*h*h+i)*o)},a.HCb=function(t,e,A,P,r,i){a.ACb();var D,u,o,Q,L,w,s,h,b,g,B;for(s=t.o,D=d(l.teb,wt,6,s.q,16,1),Q=d(l.Z6,H,6,s.q,15,1),Q[0]=e,D[e]=!0,b=A,g=0,B=b.length;g<B;++g)h=b[g],D[h]=!0;for(a.GCb(t,e,P,r,i),o=0,L=0;o<=L;){for(w=0;w<n.Ho(s,Q[o]);w++)u=n.Vo(s,Q[o],w),D[u]||(D[u]=!0,Q[++L]=u,a.GCb(t,u,P,r,i));++o}},G(48,1,Kn),U.g=!1,l.keb=O(48),a.ICb=function(t,e,A){var P,r,i,D,u,o,Q,L,w,s;for(P=d(l.Z6,H,6,t.f,15,1),w=d(l.teb,wt,6,t.f,16,1),w[A]=!0,w[e]=!0,P[0]=e,D=0,u=1;D<=u;){for(Q=0;Q<n.Wo(t,P[D]);Q++)n.Qp(t,n.Xo(t,P[D],Q))&&(i=n.Vo(t,P[D],Q),w[i]||(P[++u]=i,w[i]=!0));++D}for(L=0;L<=u;L++)for(s=0;s<n.Wo(t,P[L]);s++)i=n.Vo(t,P[L],s),!w[i]&&!n.cq(t,n.Xo(t,P[L],s))&&n.Gp(t,P[L],i,w,null,null);for(w[A]=!1,o=0;o<=u;o++)w[P[o]]=!1;for(r=0;r<w.length;r++)w[r]&&(P[++u]=r);return c.Czb(u+1),y.Bqb(P,d(l.Z6,H,6,u+1,15,1),0,u+1)},a.JCb=function(t,e,A,P,r){var i,D,u,o,Q,L,w;if(A)return a.ICb(e,P[1],P[2]);for(Q=w1(l.teb,[b1,wt],[12,6],16,[2,e.q],2),D=d(l.Z6,H,6,2,15,1),u=0;u<2;u++)D[u]=n.Gp(e,P[1+u],r[u],Q[u],null,null);for(w=D[0]<D[1]?0:1,L=d(l.Z6,H,6,D[w],15,1),o=0,i=0;i<e.q;i++)Q[w][i]&&(L[o++]=i);return t.a=w==1,L},a.KCb=function(t,e,A,P,r){a.ECb.call(this,e),this.c=a.JCb(this,t,P,e,A),this.b=r},a.NCb=function(t,e){a.ACb();var A,P,r,i,D,u,o,Q,L,w,s;for(i=0;i<e.f;i++)if(e.o[i]==2&&e.j[i]==2&&e.n[i][0]==2&&e.n[i][1]==2&&e.C[i]<=7&&(L=e.u[i]&3,L==1||L==2)){for(P=d(l.Z6,H,6,4,15,1),s=d(l.Z6,H,6,2,15,1),u=0;u<e.j[i];u++){for(A=e.i[i][u],Q=Mt,o=0;o<e.j[A];o++)D=e.i[A][o],D!=i&&Q>D&&(Q=D);P[3*u]=Q,P[1+u]=A,s[u]=i}if(P[0]==Mt||P[3]==Mt){T.Pjb(),\"\"+n.og(new n.Kg(e));break}y.pj(t,new a.KCb(e,P,s,(e.u[i]&M0)!=0,L==1))}for(r=0;r<e.g;r++)if(L=e.F[r]&3,(L==1||L==2)&&n.am(e,r)!=2){for(P=d(l.Z6,H,6,4,15,1),s=d(l.Z6,H,6,2,15,1),u=0;u<2;u++){for(A=e.D[u][r],w=e.D[1-u][r],Q=Mt,o=0;o<e.j[A];o++)D=e.i[A][o],D!=w&&Q>D&&(Q=D);P[3*u]=Q,P[1+u]=A,s[u]=e.D[1-u][r]}y.pj(t,new a.KCb(e,P,s,(e.F[r]&64)!=0,L==2))}},G(243,48,Kn,a.KCb),U.rd=function(t,e){var A,P,r,i,D;if(D=I.Sx(t,this.f)<0?1:0,e!=null)for(P=this.f,r=0,i=P.length;r<i;++r)A=P[r],e[A]+=D/4;return D},U.sd=function(t,e){var A,P,r,i,D,u,o;if(u=I.Sx(t,this.f),u==0||this.b==u>0)return!1;for(o=n.ii(I.Yx(t,this.f[2]),I.Yx(t,this.f[1])),n.ji(o),D=k.Math.abs(u)<k0?-2*u:2*(t1-u),this.a&&(D=-D),P=this.c,r=0,i=P.length;r<i;++r)A=P[r],a.GCb(t,A,I.Yx(t,this.f[1]),o,D);return!0},U.td=function(){return 5},U.ob=function(){var t;return t=new T.Mjb(\"binap rule (\"+(this.b?\"positive\":\"negative\")+\" torsion):\"),a.BCb(this,t),t.a},U.a=!1,U.b=!1,l.jeb=O(243),a.RCb=function(){a.RCb=u1,a.QCb=v(F(l.Z6,1),H,6,15,[40,20,20,100,20])},a.SCb=function(t,e){var A,P,r;if(t.g==null&&(t.g=I.Uy(t.d)),e.e>t.c+2.72)return!1;for(I.Rx(e,t.g),P=t.a.a.length-1;P>=0;P--)if(r=y.uj(t.a,P),I.Wx(e,r),I.Fy(e.q,r.q))return r.e>e.e?(y.Bj(t.a,P),y.pj(t.a,e),t.c>e.e&&(t.c=e.e),!0):!1;if(y.pj(t.a,e),t.c>e.e)for(t.c=e.e,A=t.a.a.length-1;A>=0;A--)r=y.uj(t.a,A),r.e>t.c+2.72&&y.Bj(t.a,A);return!0},a.TCb=function(t){var e;for(e=0;e<t.o.q;e++)if((t.a==null?NaN:t.a[e])>1e3||(t.a==null?NaN:t.a[e])>2e3)return!0;return!1},a.UCb=function(t,e){var A,P,r,i,D,u,o,Q,L,w,s;for(a.JDb(e,t.j),i=0,P=0;P<t.d.q;P++)D=e.a==null?NaN:e.a[P],D>1e3&&a.bDb(t,e,P)&&++i;if(i==0){for(s=16,r=0;r<t.d.q;r++)s>n.Ho(t.d,r)&&(e.a==null?NaN:e.a[r])>(L=k.Math.min(4,n.Ho(t.d,r)),400+L*2e3/5)&&(s=n.Ho(t.d,r));if(s!=16)for(A=0;A<t.d.q;A++)s==n.Ho(t.d,A)&&(e.a==null?NaN:e.a[A])>(Q=k.Math.min(4,n.Ho(t.d,A)),400+Q*2e3/5)&&(u=e.k[A],n.Ho(t.d,A)==1?(o=I.Yx(e,n.Vo(t.d,A,0)),n.Wh(u,2*(o.a-u.a),2*(o.b-u.b),2*(o.c-u.c))):(w=n.Ho(t.d,A)==0?16:8,n.Wh(u,w*y.pvb(t.f)-w/2,w*y.pvb(t.f)-w/2,w*y.pvb(t.f)-w/2)),++i)}return i!=0&&a.LDb(e),i},a.VCb=function(t,e){var A,P,r,i;for(t.f=et(e,0)==0?new y.tvb:new y.uvb(e),P=new a.MDb(t.d),A=null,r=0;r<12&&!(jt(t.n,0)&&(T.Pjb(),g1(h1(Date.now()),t.n)));r++){if(a.dDb(t,P)||et(e,0)!=0)return P;A?A.e>P.e&&(i=A,A=P,P=i):(A=P,P=new a.MDb(t.d))}return A},a.WCb=function(t){var e,A,P;if(!t.a)return null;for(t.e||a.XCb(t,1),e=null,P=new y.rqb(t.a);P.a<P.c.a.length;)A=y.qqb(P),!A.b&&(!e||e.e>A.e)&&(e=A);return e?e.b=!0:t.a=null,e},a.XCb=function(t,e){var A,P,r,i,D,u;for(A=null,P=null,r=t.a.a.length+e,u=e*12,i=0;i<u&&t.a.a.length<r&&!(jt(t.n,0)&&(T.Pjb(),g1(h1(Date.now()),t.n)));i++)!P&&(P=new a.MDb(t.d)),a.dDb(t,P)?a.SCb(t,P)&&(P=null):A?A.e>P.e&&(D=A,A=P,P=D):(A=P,P=null);t.a.a.length==0&&A&&y.pj(t.a,A),(t.a.a.length<r||t.a.a.length==t.b)&&(t.e=!0)},a.YCb=function(t,e,A){var P,r,i;for(t.f=et(e,0)==0?new y.tvb:new y.uvb(e),t.a=new y.Jj,t.c=U0,t.e=!1,r=0,i=0,P=0;P<t.d.g;P++)!n.Qp(t.d,P)&&n.am(t.d,P)==1&&n.Ho(t.d,n.Ul(t.d,0,P))>1&&n.Ho(t.d,n.Ul(t.d,1,P))>1&&(n.cq(t.d,P)?n.Uo(t.d,P)>4&&++i:++r);t.b=A==-1?1<<1+r+(i/2|0):A,a.XCb(t,k.Math.min(8,t.b))},a.ZCb=function(t){var e;for(e=0;e<t.o.q;e++)if((t.a==null?NaN:t.a[e])>2.72)return!1;return!0},a.$Cb=function(t,e){var A,P,r,i;for(r=2+2*k.Math.sqrt(t.d.q),P=0;P<t.d.q;P++)n.Ho(t.d,P)!=1&&(I.fy(e,P,r*y.pvb(t.f)-r/2),I.gy(e,P,r*y.pvb(t.f)-r/2),I.hy(e,P,r*y.pvb(t.f)-r/2));for(A=0;A<t.d.q;A++)n.Ho(t.d,A)==1&&(i=n.Vo(t.d,A,0),I.fy(e,A,e.k[i].a+4*y.pvb(t.f)-2),I.gy(e,A,e.k[i].b+4*y.pvb(t.f)-2),I.hy(e,A,e.k[i].c+4*y.pvb(t.f)-2));a.LDb(e)},a._Cb=function(t,e,A,P){var r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S;for(o=a.QCb[P],u=1,h=P==4?k.Math.exp(k.Math.log(.01)/o):1,r=t.d.q*t.d.q,s=d(l.X6,Bt,6,10,15,1),w=0,L=0;L<o&&!(jt(t.n,0)&&(T.Pjb(),g1(h1(Date.now()),t.n)));L++){for(P!=0&&L%10==0&&a.cDb(t,e),Q=0;Q<r&&!(jt(t.n,0)&&(T.Pjb(),g1(h1(Date.now()),t.n)));Q++)b=null,b=y.uj(t.j,mt(y.pvb(t.f)*t.j.a.length)),b.g&&!t.k[b.td()]&&(D=b.sd(e,u),D&&a.LDb(e));if(a.JDb(e,t.j),s[w++]=e.e,w==10&&(w=0),L>10){for(i=0,B=s,m=0,S=B.length;m<S;++m)g=B[m],i+=g;if(i/=10,e.e>i)break}A.e>e.e&&(I.Vx(A,e),a.KDb(A,e)),u*=h}e.e>A.e&&(I.Vx(e,A),a.KDb(e,A))},a.aDb=function(t,e){t.n=e},a.bDb=function(t,e,A){var P,r,i,D,u,o,Q;if(n.Ho(t.d,A)==1&&(i=n.Vo(t.d,A,0),n.eq(t.d,i))){for(P=e.k[A],r=e.k[i],o=new n.li(r.a-P.a,r.b-P.b,r.c-P.c),D=0;D<n.Wo(t.d,i);D++)if(u=n.Vo(t.d,i,D),n.bq(t.d,u)&&(Q=n.ii(r,e.k[u]),n.ci(o,Q)>k0))return!1;return n.Xh(n.Xh(P,o),o),!0}return!1},a.cDb=function(t,e){var A,P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S,p,M,z,q,x,J,E,N;for(i=!1,J=n.Ap(t.d),S=0;S<J.i.a.length;S++)if(x=y.uj(J.i,S),x.length==6&&!J.e[S]){for(h=!0,M=y.uj(J.j,S),z=0,q=M.length;z<q;++z)if(p=M[z],n.am(t.d,p)!=1||n.Up(t.d,p)){h=!1;break}if(h){for(D=new n.ki,g=new n.ki,o=w1(l.X6,[b1,Bt],[15,6],15,[6,3],2),a.FCb(e,x,D,g,o),Q=d(l.X6,Bt,6,x.length,15,1),E=0,w=0;w<x.length;w++)Q[w]=-(g.a*o[w][0]+g.b*o[w][1]+g.c*o[w][2]),Q[w]<0^(w&1)==1&&++E;if(E!=0&&E!=6){for(L=0;L<x.length;L++)if(Q[L]<0^(L&1)==1^E>=3){if(B=d(l.Z6,H,6,2,15,1),B[0]=x[L==0?5:L-1],B[1]=x[L==5?0:L+1],m=I.Yx(e,x[L]),P=n.ji(n._h(n.ii(I.Yx(e,x[L]),D),g)),A=.6+k.Math.asin(k.Math.abs(Q[L])/k.Math.sqrt((D.a-m.a)*(D.a-m.a)+(D.b-m.b)*(D.b-m.b)+(D.c-m.c)*(D.c-m.c))),N=Q[L]<0?A:-A,r=n.Zh(new n.mi(m),D),s=!1,n.Wo(t.d,x[L])>2){for(b=0;b<n.Wo(t.d,x[L]);b++)if(u=n.Vo(t.d,x[L],b),u!=B[0]&&u!=B[1]&&n.cq(t.d,n.Xo(t.d,x[L],b))){s=!0;break}}s||a.HCb(e,x[L],B,r,P,N)}i=!0}}}return i&&(a.LDb(e),a.JDb(e,t.j)),i},a.dDb=function(t,e){var A,P,r,i,D;if(t.d.q<2)return!0;for(D=new y.rqb(t.j);D.a<D.c.a.length;)i=y.qqb(D),i.g=!0;for(r=0;r<t.k.length;r++)t.k[r]=!1;for(a.$Cb(t,e),A=new a.NDb(e),a._Cb(t,e,A,0),P=0;a.TCb(e)&&P<3&&!(jt(t.n,0)&&(T.Pjb(),g1(h1(Date.now()),t.n)))&&a.UCb(t,e)!=0;P++)a._Cb(t,e,A,2);return a._Cb(t,e,A,3),a._Cb(t,e,A,4),a.ZCb(e)},a.eDb=function(t){a.RCb(),this.d=t,n.aw(this.d,15),this.j=new y.Jj,this.k=d(l.teb,wt,6,(a.ACb(),a.zCb).length,16,1),this.i=d(l.Z6,H,6,a.zCb.length,15,1),a.sDb(this.j,t),this.i[0]=this.j.a.length,this.i[1]=-this.j.a.length,a.FDb(this.j,t),this.i[1]+=this.j.a.length,this.i[2]=-this.j.a.length,a.RDb(this.j,t),this.i[2]+=this.j.a.length,this.i[4]=-this.j.a.length,a.aEb(this.j,t),this.i[4]+=this.j.a.length,this.i[5]=-this.j.a.length,a.NCb(this.j,t),this.i[5]+=this.j.a.length,this.i[3]=-this.j.a.length,a.lEb(this.j,t),this.i[3]+=this.j.a.length},G(152,1,{},a.eDb),U.b=0,U.c=0,U.e=!1,U.n=0,l.leb=O(152),a.fDb=function(t){return Z0*t*t},a.gDb=function(t){return 4e3*t*t},a.hDb=function(t){return 8e3*t*t},a.iDb=function(t,e,A){var P,r,i;return i=1.02*a.vDb(t.f[1],e)+a.vDb(t.f[0],e),P=A/i,r=k.Math.pow(P,-6),P>=1?0:2*(r*r-r)},a.jDb=function(t,e){var A,P;if(A=n.ai(I.Yx(e,t.f[1]),I.Yx(e,t.f[0])),t.a.length==2){if(A<1.02*t.a[0])return a.iDb(t,e.o,A);if(A>t.a[1])return a.gDb((A-t.a[1])/A)}else if(P=t.c==10?a.fDb(k.Math.abs(t.a[0]-A)/k.Math.max(t.a[0],A)):t.c==5?a.hDb(k.Math.abs(t.a[0]-A)/k.Math.max(t.a[0],A)):a.gDb(k.Math.abs(t.a[0]-A)/k.Math.max(t.a[0],A)),k.Math.abs(P)>.009999999776482582)return P;return 0},a.kDb=function(){a.ECb.call(this,null)},a.lDb=function(t,e){a.ECb.call(this,t),this.a=d(l.X6,Bt,6,2,15,1),this.a[0]=e,this.a[1]=U0,this.c=-1},a.mDb=function(t,e,A,P,r){a.ECb.call(this,t),this.a=d(l.X6,Bt,6,2,15,1),this.a[0]=A,this.a[1]=P,this.b=e,this.c=r},a.nDb=function(t,e,A,P){a.ECb.call(this,t),this.a=d(l.X6,Bt,6,1,15,1),this.a[0]=A,this.b=e,this.c=P},a.qDb=function(t,e){var A,P,r,i;for(A=1;A<e.q;A++)for(P=0;P<A;P++)!t[A][P]&&$1(t[A],P,new a.lDb(a.tDb(A,P),(i=e.C[A],(i<(I.pz(),I.oz).length?I.oz[i]:2)+(r=e.C[P],r<I.oz.length?I.oz[r]:2))))},a.rDb=function(t,e,A,P){var r,i,D,u,o,Q,L,w,s,h,b;for(D=d(l.Z6,H,6,A.q,15,1),L=d(l.Z6,H,6,A.q,15,1),Q=d(l.X6,Bt,6,A.q,15,1),L[0]=e,o=0,w=0;o<=w;){for(b=L[o],s=0;s<A.e[b];s++)u=A.i[b][s],D[u]==0&&u!=e&&(L[++w]=u,D[u]=D[b]+1,D[u]==2?Q[u]=u<e?t[e][u].a[0]:t[u][e].a[0]:D[u]>2&&(Q[u]=Q[b]+I.Hx(P,A.k[b][s]),u<e&&!t[e][u]&&(D[u]==3?$1(t[e],u,new a.kDb):(h=d(l.Z6,H,6,2,15,1),h[0]=L[1],h[1]=b,$1(t[e],u,new a.mDb(a.tDb(e,u),h,(i=A.C[e],(i<(I.pz(),I.oz).length?I.oz[i]:2)+(r=A.C[u],r<I.oz.length?I.oz[r]:2)),Q[u],0))))));++o}},a.sDb=function(t,e){a.ACb();var A,P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S,p,M,z,q,x,J,E,N,ft,Lt,ot,st,ut,rt,Ut,ht,it,bt,ct,$t,Ft,Rt,Et,Nt,It,vt;for(B=new I.Ix(e),h=new I.zx(e,B),vt=d(l.meb,T0,453,e.q,0,2),Ut=1;Ut<e.q;Ut++)vt[Ut]=d(l.meb,{4:1,5:1,8:1,454:1,453:1},82,Ut,0,1);for(s=0;s<e.r;s++)D=a.tDb(e.D[0][s],e.D[1][s]),a.zDb(vt,D,D,B.a[s],10);for(Q=0;Q<e.f;Q++)for(ht=1;ht<e.e[Q];ht++)for(z=e.i[Q][ht],J=e.k[Q][ht],b=B.a[J],Ft=0;Ft<ht;Ft++)q=e.i[Q][Ft],E=e.k[Q][Ft],A=ht<Ft?h.a[Q][Ft][ht]:h.a[Q][ht][Ft],g=B.a[E],ft=k.Math.sqrt(b*b+g*g-2*b*g*k.Math.cos(A)),Et=d(l.Z6,H,6,1,15,1),Et[0]=Q,a.zDb(vt,a.tDb(z,q),Et,ft,5);for(w=0;w<e.r;w++)if(!(w<e.g&&n.lt(e.p,w)||(e.F[w]&64)!=0&&(e.p&&w<e.g?n.bt(e.p,w):0)<=5)){for(D=d(l.Z6,H,6,2,15,1),ht=0;ht<2;ht++)D[ht]=e.D[ht][w];if(n.Ho(e,D[0])>1&&n.Ho(e,D[1])>1){if(n.am(e,w)==3){for(ft=B.a[w],It=d(l.Z6,H,6,2,15,1),it=0;it<2;it++)for(Ft=0;Ft<n.Ho(e,D[it]);Ft++)if(x=n.Xo(e,D[it],Ft),x!=w){ft+=B.a[x],It[it]=n.Vo(e,D[it],Ft);break}Et=d(l.Z6,H,6,2,15,1),Et[0]=D[0],Et[1]=D[1],a.zDb(vt,a.tDb(It[0],It[1]),Et,ft,3)}else if(n.am(e,w)==2&&n.Mo(e,D[0])==1&&n.Mo(e,D[1])==1&&(e.F[w]&3)!=3){for(M=d(l.Z6,M1,7,2,0,2),x=d(l.Z6,M1,7,2,0,2),p=d(l.X6,b1,15,2,0,2),it=0;it<2;it++){for(M[it]=d(l.Z6,H,6,n.Ho(e,D[it])-1,15,1),x[it]=d(l.Z6,H,6,n.Ho(e,D[it])-1,15,1),p[it]=d(l.X6,Bt,6,n.Ho(e,D[it])-1,15,1),Lt=-1,Ft=0;Ft<n.Ho(e,D[it]);Ft++)if(n.Vo(e,D[it],Ft)==D[1-it]){Lt=Ft;break}for(N=0,Rt=0;Rt<n.Ho(e,D[it]);Rt++)Rt!=Lt&&(M[it][N]=n.Vo(e,D[it],Rt),x[it][N]=n.Xo(e,D[it],Rt),p[it][N]=I.vx(h,D[it],Lt,Rt),++N)}for(bt=0;bt<M[0].length;bt++)for(Ft=0;Ft<M[1].length;Ft++)ct=(e.F[w]&3)==1,M[0].length==2&&M[0][bt]>M[0][1-bt]&&(ct=!ct),M[1].length==2&&M[1][Ft]>M[1][1-Ft]&&(ct=!ct),a.yDb(M[0][bt],M[1][Ft],x[0][bt],x[1][Ft],p[0][bt],p[1][Ft],w,ct,B,vt,e)}else if(n.am(e,w)!=0){for(Nt=d(l.Z6,H,6,2,15,1),it=0;it<2;it++)for(Ft=0;Ft<n.Ho(e,D[it]);Ft++)if(n.Vo(e,D[it],Ft)==D[1-it]){Nt[it]=Ft;break}for(bt=0;bt<n.Ho(e,D[0]);bt++)if(bt!=Nt[0])for(Ft=0;Ft<n.Ho(e,D[1]);Ft++)Ft!=Nt[1]&&(n.Mo(e,D[0])==0&&n.Mo(e,D[1])==0?a.ADb(n.Vo(e,D[0],bt),n.Vo(e,D[1],Ft),n.Xo(e,D[0],bt),n.Xo(e,D[1],Ft),I.vx(h,D[0],Nt[0],bt),I.vx(h,D[1],Nt[1],Ft),w,B,vt,e):a.xDb(n.Vo(e,D[0],bt),n.Vo(e,D[1],Ft),n.Xo(e,D[0],bt),n.Xo(e,D[1],Ft),I.vx(h,D[0],Nt[0],bt),I.vx(h,D[1],Nt[1],Ft),w,B,vt,e))}}}for(L=0;L<e.f;L++)if(e.o[L]==2&&e.j[L]==2&&e.n[L][0]==2&&e.n[L][1]==2){for(u=e.i[L][0],o=e.i[L][1],ht=0;ht<e.e[u];ht++)if(m=e.i[u][ht],m!=L)for(Ft=0;Ft<e.e[o];Ft++)S=e.i[o][Ft],S!=L&&(P=I.ux(h,u,L,m),r=I.ux(h,o,L,S),b=I.Hx(B,e.k[u][ht]),g=I.Hx(B,e.k[o][Ft]),ot=I.Hx(B,e.k[L][0])+I.Hx(B,e.k[L][1])-b*k.Math.cos(P)-g*k.Math.cos(r),st=b*k.Math.sin(P),ut=g*k.Math.sin(r),Et=d(l.Z6,H,6,2,15,1),Et[0]=u,Et[1]=o,a.zDb(vt,a.tDb(m,S),Et,k.Math.sqrt(ot*ot+st*st+ut*ut),3))}for(i=0;i<e.q;i++)a.rDb(vt,i,e,B);for(a.qDb(vt,e),rt=1;rt<e.q;rt++)for($t=0;$t<rt;$t++)vt[rt][$t].a!=null&&y.pj(t,vt[rt][$t])},a.tDb=function(t,e){var A;return A=d(l.Z6,H,6,2,15,1),t>e?(A[0]=t,A[1]=e):(A[0]=e,A[1]=t),A},a.vDb=function(t,e){var A;return A=e.C[t],A<(I.pz(),I.oz).length?I.oz[A]:2},a.wDb=function(t,e){var A,P,r,i,D,u,o,Q,L;if(t==null)return e;for(L=d(l.Z6,H,6,t.length+e.length,15,1),Q=0,r=t,D=0,o=r.length;D<o;++D)A=r[D],L[Q++]=A;for(P=e,i=0,u=P.length;i<u;++i)A=P[i],L[Q++]=A;return L},a.xDb=function(t,e,A,P,r,i,D,u,o,Q){var L,w,s,h,b,g,B,m,S,p;t!=e&&(L=a.tDb(t,e),!(o[L[0]][L[1]]&&o[L[0]][L[1]].a.length==1)&&(s=u.a[D]-u.a[A]*k.Math.cos(r)-u.a[P]*k.Math.cos(i),S=u.a[A]*k.Math.sin(r),p=u.a[P]*k.Math.sin(i),h=S+p,b=S-p,B=k.Math.sqrt(s*s+b*b),g=k.Math.sqrt(s*s+h*h),m=d(l.Z6,H,6,2,15,1),m[0]=Q.D[0][D],m[1]=Q.D[1][D],w=o[L[0]][L[1]],w?(w.a[0]=k.Math.min(w.a[0],B),w.a[1]=k.Math.min(w.a[1],g)):$1(o[L[0]],L[1],new a.mDb(L,m,B,g,3))))},a.yDb=function(t,e,A,P,r,i,D,u,o,Q,L){var w,s,h;s=o.a[D]-o.a[A]*k.Math.cos(r)-o.a[P]*k.Math.cos(i),h=o.a[A]*k.Math.sin(r),u?h+=o.a[P]*k.Math.sin(i):h-=o.a[P]*k.Math.sin(i),w=d(l.Z6,H,6,2,15,1),w[0]=L.D[0][D],w[1]=L.D[1][D],a.zDb(Q,a.tDb(t,e),w,k.Math.sqrt(s*s+h*h),3)},a.zDb=function(t,e,A,P,r){t[e[0]][e[1]]?t[e[0]][e[1]].a.length==2||t[e[0]][e[1]].c<r?$1(t[e[0]],e[1],new a.nDb(e,A,P,r)):t[e[0]][e[1]].c==r&&(t[e[0]][e[1]].a[0]=(t[e[0]][e[1]].a[0]+P)/2,t[e[0]][e[1]].b=a.wDb(t[e[0]][e[1]].b,A)):$1(t[e[0]],e[1],new a.nDb(e,A,P,r))},a.ADb=function(t,e,A,P,r,i,D,u,o,Q){var L,w,s,h,b,g,B,m,S,p,M,z,q,x;t!=e&&(L=a.tDb(t,e),!(o[L[0]][L[1]]&&o[L[0]][L[1]].a.length==1)&&(x=.866,w=.5,(Q.F[D]&64)!=0&&(M=Q.p&&D<Q.g?n.bt(Q.p,D):0,M<6&&(x=0,w=1)),h=u.a[D]-u.a[A]*k.Math.cos(r)-u.a[P]*k.Math.cos(i),z=u.a[A]*k.Math.sin(r),q=u.a[P]*k.Math.sin(i),b=z+q,g=z-q*w,B=q*x,S=k.Math.sqrt(h*h+g*g+B*B),m=k.Math.sqrt(h*h+b*b),p=d(l.Z6,H,6,2,15,1),p[0]=Q.D[0][D],p[1]=Q.D[1][D],s=o[L[0]][L[1]],s?(s.a[0]=k.Math.min(s.a[0],S),s.a[1]=k.Math.min(s.a[1],m)):$1(o[L[0]],L[1],new a.mDb(L,p,S,m,3))))},G(82,48,{48:1,82:1},a.kDb,a.lDb,a.mDb,a.nDb),U.rd=function(t,e){var A;return A=a.jDb(this,t),e!=null&&A>0&&(e[this.f[0]]+=A/2,e[this.f[1]]+=A/2),A},U.sd=function(t,e){var A,P,r,i,D,u,o;if(r=I.$x(t,this.f[1])-I.$x(t,this.f[0]),i=I._x(t,this.f[1])-I._x(t,this.f[0]),D=I.ay(t,this.f[1])-I.ay(t,this.f[0]),A=k.Math.sqrt(r*r+i*i+D*D),P=0,this.a.length==2?A<this.a[0]?P=(A-this.a[0])/A:A>this.a[1]&&(P=(A-this.a[1])/A):A<this.a[0]?P=(A-this.a[0])/A:A>this.a[0]&&(P=(A-this.a[0])/A),k.Math.abs(P)<.001)return!1;if(u=e*P,o=t.o,this.c==10){if(n.Ho(o,this.f[0])==1&&n.Ho(o,this.f[1])!=1)return n.Wh(I.Yx(t,this.f[0]),r*u,i*u,D*u),!0;if(n.Ho(o,this.f[0])!=1&&n.Ho(o,this.f[1])==1)return n.Wh(I.Yx(t,this.f[1]),-r*u,-i*u,-D*u),!0}return u/=2,a.CCb(t,this.f[0],this.b,r*u,i*u,D*u),a.CCb(t,this.f[1],this.b,-r*u,-i*u,-D*u),!0},U.td=function(){return 0},U.ob=function(){var t,e;if(e=new T.Mjb(\"distance rule:\"),a.BCb(this,e),this.a.length==1?T.Ijb(e,(lt.K3(),ED+lt.L3(this.a[0],5))):T.Ijb(e,(lt.K3(),\" min:\"+lt.L3(this.a[0],5)+\" max:\"+lt.L3(this.a[1],5))),this.b!=null)for(T.Ijb(e,\" not:\"+this.b[0]),t=1;t<this.b.length;t++)T.Ijb(e,\",\"+this.b[t]);return e.a},U.c=0,l.meb=O(82),a.CDb=function(t,e){var A,P,r;for(a.ECb.call(this,t),A=0,r=0;r<t.length;r++)n.Wo(e,t[r])!=1&&++A;if(A>2)for(this.a=d(l.Z6,H,6,A,15,1),A=0,P=0;P<t.length;P++)n.Wo(e,t[P])!=1&&(this.a[A++]=t[P]);else this.a=t},a.FDb=function(t,e){a.ACb();var A,P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S,p,M,z;for(m=d(l.teb,wt,6,e.g,16,1),z=(n.aw(e,7),e.p),B=d(l.teb,wt,6,z.i.a.length,16,1),n.Ys(z,B,d(l.teb,wt,6,z.i.a.length,16,1),d(l.Z6,H,6,z.i.a.length,15,1),!0),M=0;M<z.i.a.length;M++)if(B[M])for(g=0;g<y.uj(z.j,M).length;g++)m[y.uj(z.j,M)[g]]=!0;for(r=d(l.Z6,H,6,2,15,1),D=0;D<e.g;D++)if(o=e.D[0][D],Q=e.D[1][D],r[0]=e.C[o],r[1]=e.C[Q],m[D]=m[D]|(D<e.g&&n.lt(e.p,D)||n.am(e,D)==2&&r[0]<=8&&r[1]<=8&&e.o[o]==1&&e.o[Q]==1&&e.e[o]>1&&e.e[Q]>1),!m[D]&&n.am(e,D)==1){for(b=0;b<2;b++)if((r[b]==7||r[b]==8)&&r[1-b]==6){for(L=e.D[1-b][D],p=0;p<e.j[L];p++)if(e.n[L][p]==2&&(w=e.i[L][p],e.C[w]==7||e.C[w]==8||e.C[w]==16)){m[D]=!0;break}}}for(S=d(l.teb,wt,6,e.f,16,1),u=0;u<e.g;u++)m[u]&&(S[e.D[0][u]]=!0,S[e.D[1][u]]=!0);for(h=d(l.Z6,H,6,e.q,15,1),i=0;i<e.g;i++)if(m[i]){for(h[0]=e.D[0][i],s=a.GDb(h,m,e),P=d(l.Z6,H,6,s,15,1),b=0;b<s;b++)P[b]=h[b];y.pj(t,new a.CDb(P,e))}for(A=0;A<e.f;A++)if(!S[A]&&(e.C[A]==5&&e.s[A]==0&&e.e[A]<=3||e.C[A]<=8&&e.o[A]==1&&e.e[A]>1||n.Wp(e,A,!0)&&e.o[A]!=2&&e.e[A]>1)){for(P=d(l.Z6,H,6,1+e.e[A],15,1),b=0;b<e.e[A];b++)P[b]=e.i[A][b];P[e.e[A]]=A,y.pj(t,new a.CDb(P,e))}},a.GDb=function(t,e,A){var P,r,i,D,u,o,Q,L,w;for(L=d(l.teb,wt,6,A.q,16,1),L[t[0]]=!0,D=0,u=0;D<=u&&n.Mo(A,t[D])<2;){for(Q=0;Q<n.Wo(A,t[D]);Q++)P=n.Vo(A,t[D],Q),r=n.Xo(A,t[D],Q),e[r]&&(L[P]||(t[++u]=P,L[P]=!0),e[r]=!1);++D}for(o=u;o>=0;o--)if(n.Ol(A,t[o])<=8)for(w=0;w<n.Ho(A,t[o]);w++)i=n.Vo(A,t[o],w),!L[i]&&n.Yo(A,t[o],w)!=0&&(t[++u]=i,L[i]=!0);return u+1},G(242,48,Kn,a.CDb),U.rd=function(t,e){var A,P,r,i,D,u,o;for(A=new n.ki,D=new n.ki,P=w1(l.X6,[b1,Bt],[15,6],15,[this.f.length,3],2),a.FCb(t,this.f,A,D,P),o=0,i=0;i<this.f.length;i++)r=-(D.a*P[i][0]+D.b*P[i][1]+D.c*P[i][2]),u=20*r*r,e!=null&&(e[this.f[i]]+=u),o+=u;return o},U.sd=function(t,e){var A,P,r,i,D;for(A=new n.ki,D=new n.ki,P=w1(l.X6,[b1,Bt],[15,6],15,[this.a.length,3],2),a.FCb(t,this.a,A,D,P),i=0;i<this.f.length;i++)r=-(D.a*(I.$x(t,this.f[i])-A.a)+D.b*(I._x(t,this.f[i])-A.b)+D.c*(I.ay(t,this.f[i])-A.c)),a.CCb(t,this.f[i],this.f,.5*r*e*D.a,.5*r*e*D.b,.5*r*e*D.c);return!0},U.td=function(){return 1},U.ob=function(){var t;return t=new T.Mjb(\"plane rule:\"),a.BCb(this,t),t.a},l.neb=O(242),a.JDb=function(t,e){var A,P,r;if(t.a==null){for(t.a=d(l.X6,Bt,6,t.o.q,15,1),t.d=d(l.X6,Bt,6,(a.ACb(),a.zCb).length,15,1),r=new y.rqb(e);r.a<r.c.a.length;)P=y.qqb(r),P.g&&(t.d[P.td()]+=P.rd(t,t.a));for(t.e=0,A=0;A<t.o.q;A++)t.e+=t.a[A];t.c=-1}},a.KDb=function(t,e){t.e=e.e,t.c=e.c,t.b=e.b,t.a=e.a==null?null:y.yqb(e.a,e.a.length),t.d=e.d==null?null:y.yqb(e.d,e.d.length)},a.LDb=function(t){t.e=U0,t.a=null,t.d=null},a.MDb=function(t){I.jy.call(this,t),this.e=NaN},a.NDb=function(t){I.ky.call(this,t),a.KDb(this,t)},G(111,63,{63:1,32:1,111:1},a.MDb,a.NDb),U.b=!1,U.c=0,U.e=0,l.oeb=O(111),a.ODb=function(t){a.ECb.call(this,t)},a.RDb=function(t,e){a.ACb();var A,P,r,i;for(P=d(l.teb,wt,6,e.q,16,1),A=0;A<e.f;A++)if(!P[A]&&e.o[A]==2&&e.C[A]<=8){for(r=a.SDb(A,e),i=0;i<r.length;i++)P[r[i]]=!0;r[0]!=r[r.length-1]&&y.pj(t,new a.ODb(r))}},a.SDb=function(t,e){var A,P,r,i,D,u,o,Q;for(i=t,P=e.i[i][0];e.e[i]!=1&&e.o[i]==2&&(Q=P,P=i,i=e.i[i][0]==Q?e.i[i][1]:e.i[i][0],i!=t););for(o=i,D=P,r=2;e.e[D]!=1&&e.o[D]==2&&(Q=o,o=D,D=e.i[D][0]==Q?e.i[D][1]:e.i[D][0],++r,D!=i););for(A=d(l.Z6,H,6,r,15,1),A[0]=i,A[1]=P,u=2;u<r;u++)A[u]=n.Vo(e,A[u-1],0)==A[u-2]?n.Vo(e,A[u-1],1):n.Vo(e,A[u-1],0);return A},G(366,48,Kn,a.ODb),U.rd=function(t,e){var A,P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S,p,M,z,q,x,J;for(i=d(l.X6,Bt,6,3,15,1),L=0;L<this.f.length;L++)i[0]+=I.$x(t,this.f[L]),i[1]+=I._x(t,this.f[L]),i[2]+=I.ay(t,this.f[L]);for(B=0;B<3;B++)i[B]/=this.f.length;for(A=w1(l.X6,[b1,Bt],[15,6],15,[this.f.length,3],2),w=0;w<this.f.length;w++)A[w][0]=I.$x(t,this.f[w])-i[0],A[w][1]=I._x(t,this.f[w])-i[1],A[w][2]=I.ay(t,this.f[w])-i[2];for(z=w1(l.X6,[b1,Bt],[15,6],15,[3,3],2),s=0;s<this.f.length;s++)for(g=0;g<3;g++)for(m=0;m<3;m++)z[g][m]+=A[s][g]*A[s][m];for(x=new De.Vc(z),P=x.e,p=0,h=1;h<3;h++)P[h]>P[p]&&(p=h);for(r=x.a,M=d(l.X6,Bt,6,3,15,1),b=0;b<3;b++)M[b]=r[b][p];for(J=0,Q=0;Q<this.f.length;Q++)S=M[0]*A[Q][0]+M[1]*A[Q][1]+M[2]*A[Q][2],D=S*M[0]-A[Q][0],u=S*M[1]-A[Q][1],o=S*M[2]-A[Q][2],q=10*D*D+u*u+o*o,e!=null&&(e[this.f[Q]]+=q),J+=q;return J},U.sd=function(t,e){var A,P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S,p,M,z,q,x;for(i=d(l.X6,Bt,6,3,15,1),u=0;u<this.f.length;u++)i[0]+=I.$x(t,this.f[u]),i[1]+=I._x(t,this.f[u]),i[2]+=I.ay(t,this.f[u]);for(m=0;m<3;m++)i[m]/=this.f.length;for(A=w1(l.X6,[b1,Bt],[15,6],15,[this.f.length,3],2),o=0;o<this.f.length;o++)A[o][0]=I.$x(t,this.f[o])-i[0],A[o][1]=I._x(t,this.f[o])-i[1],A[o][2]=I.ay(t,this.f[o])-i[2];for(q=w1(l.X6,[b1,Bt],[15,6],15,[3,3],2),Q=0;Q<this.f.length;Q++)for(B=0;B<3;B++)for(S=0;S<3;S++)q[B][S]+=A[Q][B]*A[Q][S];for(x=new De.Vc(q),P=x.e,M=0,L=1;L<3;L++)P[L]>P[M]&&(M=L);for(r=x.a,z=d(l.X6,Bt,6,3,15,1),w=0;w<3;w++)z[w]=r[w][M];for(p=d(l.X6,Bt,6,this.f.length,15,1),s=0;s<this.f.length;s++)p[s]=z[0]*A[s][0]+z[1]*A[s][1]+z[2]*A[s][2];if(e==1){for(b=!1,g=p[0]<p[1],h=2;h<this.f.length;h++)if(g!=p[h-1]<p[h]){b=!0;break}if(b)return!1}for(D=0;D<this.f.length;D++)n.Wh(I.Yx(t,this.f[D]),e*(p[D]*z[0]-A[D][0]),e*(p[D]*z[1]-A[D][1]),e*(p[D]*z[2]-A[D][2]));return!0},U.td=function(){return 2},U.ob=function(){var t;return t=new T.Mjb(\"line rule:\"),a.BCb(this,t),t.a},l.peb=O(366),a.VDb=function(t,e,A,P){var r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S,p,M,z,q,x,J,E,N,ft,Lt,ot,st,ut,rt,Ut,ht,it,bt,ct,$t,Ft,Rt,Et,Nt,It,vt,kt,L1,f1,St,Xt,k1,qt,P1,E1;for(E1=A[4],kt=A[3]==-1?3:4,b=d(l.Z6,H,6,e.q,15,1),Rt=d(l.teb,wt,6,e.r,16,1),m=0;m<kt;m++)Rt[P[m]]=!0;for(h=n.ep(e,b,Rt,!1),g=d(l.Z6,H,6,h,15,1),Q=b,L=0,w=Q.length;L<w;++L)s=Q[L],++g[s];for(Nt=0,x=d(l.teb,wt,6,h,16,1),S=0;S<kt;S++)s=b[A[S]],x[s]||(x[s]=!0,++Nt);for(It=d(l.Z6,H,6,Nt,15,1),vt=d(l.Z6,H,6,Nt,15,1),Et=d(l.Z6,H,6,Nt,15,1),q=0,o=0;o<h;o++)if(x[o]){for(It[q]=o,vt[q]=g[o],p=0;p<kt;p++)o==b[A[p]]&&++Et[q];++q}if(J=d(l.teb,wt,6,e.q,16,1),f1=0,P1=2,Nt==kt)for(Ft=-1,p=0;p<kt-2;p++){for(Xt=-1,k1=Mt,N=0;N<Nt;N++)N!=Ft&&vt[N]<k1&&(Xt=N,k1=vt[N]);for(r=0;r<e.q;r++)b[r]==It[Xt]&&(J[r]=!0,++f1);Ft=Xt}else for(p=0;p<It.length;p++){if(Et[p]==1&&kt==3){for(E=2*vt[p]<e.q,E||(P1=1),r=0;r<e.q;r++)r!=E1&&b[r]==It[p]==E&&(J[r]=!0,++f1);break}if(Et[p]==2&&kt==4){for(E=2*vt[p]<e.q,r=0;r<e.q;r++)r!=E1&&b[r]==It[p]==E&&(J[r]=!0,++f1);break}}if(f1==0){for(p=0;p<It.length;p++)if(Et[p]==1){for(r=0;r<e.q;r++)b[r]==It[p]&&(J[r]=!0,++f1);break}for(L1=kt-2-(f1==0?0:1),M=0;M<L1;M++)for(N=0;N<kt;N++)if(!J[A[N]]){J[A[N]]=!0,++f1;break}}for(q=0,t.a=d(l.Z6,H,6,f1,15,1),z=0;z<J.length;z++)J[z]&&(t.a[q++]=z);for(qt=0,St=0,t.c=d(l.Z6,H,6,P1,15,1),t.b=d(l.Z6,H,6,kt-P1,15,1),B=0;B<kt;B++)if(J[A[B]]){if(St>=t.b.length){for(T.Pjb(),\"\"+new n.Xr(e).a.a,Lt=A,rt=0,bt=Lt.length;rt<bt;++rt);for(ot=P,Ut=0,ct=ot.length;Ut<ct;++Ut);for(st=b,ht=0,$t=st.length;ht<$t;++ht);for(ft=x,ut=0,it=ft.length;ut<it;++ut);for(i=J,D=0,u=i.length;D<u;++D);}t.b[St++]=A[B]}else t.c[qt++]=A[B]},a.WDb=function(t,e){var A,P,r,i,D,u;for(D=new n.ki,u=t.c.length==2?t.c:t.b,P=u,r=0,i=P.length;r<i;++r)A=P[r],n.Xh(D,e.k[A]);return n.ei(D,.5),n.ji(n.hi(D,I.Yx(e,t.f[4]))),D},a.XDb=function(t,e){var A,P,r;for(A=w1(l.X6,[b1,Bt],[15,6],15,[2,3],2),P=0;P<2;P++)A[P][0]=I.$x(e,t.f[P])-I.$x(e,t.f[4]),A[P][1]=I._x(e,t.f[P])-I._x(e,t.f[4]),A[P][2]=I.ay(e,t.f[P])-I.ay(e,t.f[4]);return r=d(l.X6,Bt,6,3,15,1),r[0]=A[0][1]*A[1][2]-A[0][2]*A[1][1],r[1]=A[0][2]*A[1][0]-A[0][0]*A[1][2],r[2]=A[0][0]*A[1][1]-A[0][1]*A[1][0],r},a.YDb=function(t,e,A,P){var r;return r=d(l.X6,Bt,6,3,15,1),r[0]=t.k[P].a-t.k[A].a,r[1]=t.k[P].b-t.k[A].b,r[2]=t.k[P].c-t.k[A].c,r[0]*e[0]+r[1]*e[1]+r[2]*e[2]>0},a.ZDb=function(t,e,A){a.ECb.call(this,e),a.VDb(this,t,e,A)},a.aEb=function(t,e){a.ACb();var A,P,r,i,D,u,o,Q,L,w;for(A=0;A<e.f;A++)if(e.e[A]>=3&&(L=e.u[A]&3,(L==1||L==2)&&!(e.o[A]==2&&e.j[A]==2&&e.n[A][0]==2&&e.n[A][1]==2&&e.C[A]<=7))){for(P=d(l.Z6,H,6,5,15,1),r=d(l.Z6,H,6,4,15,1),u=0;u<e.e[A];u++){for(i=e.i[A][u],D=e.k[A][u],o=0;o<u&&i>P[o];)++o;for(Q=u-1;Q>=o;Q--)P[Q+1]=P[Q],r[Q+1]=r[Q];P[o]=i,r[o]=D}e.e[A]==3&&(P[3]=-1,r[3]=-1),P[4]=A,L==1&&(w=P[1],P[1]=P[0],P[0]=w,w=r[1],r[1]=r[0],r[0]=w),y.pj(t,new a.ZDb(e,P,r))}},G(367,48,Kn,a.ZDb),U.rd=function(t,e){var A,P,r,i,D;if(i=0,P=a.XDb(this,t),D=0,this.f[3]==-1?a.YDb(t,P,this.f[4],this.f[2])||++D:(a.YDb(t,P,this.f[4],this.f[2])||++D,a.YDb(t,P,this.f[4],this.f[3])&&++D),D!=0)for(A=0;A<this.f.length;A++)this.f[A]!=-1&&(r=.68*D,e!=null&&(e[this.f[A]]+=r),i+=r);return i},U.sd=function(t,e){var A,P,r,i,D,u,o;if(u=a.XDb(this,t),D=this.f[3]==-1&&!a.YDb(t,u,this.f[4],this.f[2])||this.f[3]!=-1&&!a.YDb(t,u,this.f[4],this.f[2])&&a.YDb(t,u,this.f[4],this.f[3]),!D)return!1;for(o=a.WDb(this,t),P=this.a,r=0,i=P.length;r<i;++r)A=P[r],a.GCb(t,A,I.Yx(t,this.f[4]),o,t1);return!0},U.td=function(){return 4},U.ob=function(){var t,e,A,P,r;for(r=new T.Mjb(\"stereo rule:\"),a.BCb(this,r),r.a+=\" rotatable:\",e=this.a,A=0,P=e.length;A<P;++A)t=e[A],r.a+=t+\" \";return r.a},l.qeb=O(367),a.dEb=function(t,e){var A,P,r,i,D;for(r=-1,i=U0,P=0;P<t.e.length;P++)D=t1*t.e[P]/180,A=k.Math.abs(e-D),A>t1&&(A=G1-A),A/=10+k.Math.sqrt(t.b[P]),i>A&&(i=A,r=P);return r},a.eEb=function(t,e,A){var P,r,i,D;return r=t.c[A][0]*t1/180,i=t.c[A][1]*t1/180,D=t.e[A]*t1/180,e<D-t1?e+=G1:e>D+t1&&(e-=G1),P=(D-e)/(D-(e<D?r:i)),P<1?0:P<2?(P-=1,P*P):1},a.fEb=function(t,e,A,P,r){var i,D,u;for(a.GCb(t,e,t.k[A],P,r),u=t.o,D=0;D<u.e[e];D++)i=u.i[e][D],u.e[i]==1&&a.GCb(t,i,t.k[A],P,r)},a.gEb=function(t,e,A,P,r,i){a.ECb.call(this,P),this.e=t,this.b=e,this.c=A,this.a=r,this.d=i},a.hEb=function(t,e,A,P,r){var i,D,u,o,Q,L,w,s;for(i=d(l.Z6,H,6,P,15,1),s=d(l.Z6,H,6,4,15,1),s[0]=n.Vo(t,A,t.i[A][0]==e?1:0),s[1]=A,s[2]=e,s[3]=n.Vo(t,e,t.i[e][0]==A?1:0),o=0,Q=0;Q<t.e[e];Q++)D=t.i[e][Q],D!=A&&(i[o++]=D);w=d(l.seb,Jt,6,3,15,1),u=d(l.seb,Jt,6,3,15,1),L=w1(l.seb,[A0,Jt],[16,6],15,[3,2],2),w[0]=60,w[1]=180,w[2]=300,u[0]=33,u[1]=33,u[2]=33,L[0][0]=45,L[0][1]=75,L[1][0]=165,L[1][1]=195,L[2][0]=285,L[2][1]=315,y.pj(r,new a.gEb(w,u,L,s,i,1))},a.iEb=function(t,e,A,P,r){var i,D,u,o,Q,L,w,s,h,b,g;for(w=-1,L=0;L<t.j[A];L++)t.n[A][L]==2&&(w=t.i[A][L]);for(i=d(l.Z6,H,6,P,15,1),g=d(l.Z6,H,6,4,15,1),g[0]=w,g[1]=A,g[2]=e,o=0,Q=0;Q<t.e[e];Q++)D=t.i[e][Q],t.C[D]==1&&(o==0&&(g[3]=D),i[o++]=D);h=!(A<t.f&&n.kt(t.p,A))&&P==1?1:2,b=d(l.seb,Jt,6,h,15,1),u=d(l.seb,Jt,6,h,15,1),s=w1(l.seb,[A0,Jt],[16,6],15,[h,2],2),!(A<t.f&&n.kt(t.p,A))&&P==1?(b[0]=0,u[0]=100,s[0][0]=-15,s[0][1]=15):(b[0]=0,b[1]=180,u[0]=50,u[1]=50,s[0][0]=-15,s[0][1]=15,s[1][0]=165,s[1][1]=195),y.pj(r,new a.gEb(b,u,s,g,i,1))},a.lEb=function(t,e){a.ACb();var A,P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S,p,M,z,q,x,J,E,N;for(I.Cy(),b=d(l.teb,wt,6,e.r,16,1),I.xy(e,b),D=0;D<e.g;D++)if(b[D]&&(J=d(l.Z6,H,6,4,15,1),E=new I.dz,N=I.zy(e,D,J,E),N!=null&&!a.mEb(J,t)&&(x=(z=I.py(I.oy,N),z?I.ez(z):null),Q=(q=I.py(I.oy,N),q?I.fz(q):null),m=(M=I.py(I.oy,N),M?I.gz(M):null),x==null&&(B=new I.mz(e,J),x=B.b,Q=B.a,m=B.c),x!=null))){if(P=null,p=0,(e.F[D]&64)==0){for(h=w1(l.teb,[b1,wt],[12,6],16,[2,e.q],2),o=d(l.Z6,H,6,2,15,1),w=0;w<2;w++)o[w]=n.Gp(e,E.e[w],E.b[w],h[w],null,null);for(p=o[0]<o[1]?0:1,P=d(l.Z6,H,6,o[p],15,1),s=0,A=0;A<e.q;A++)h[p][A]&&(P[s++]=A)}y.pj(t,new a.gEb(x,Q,m,J,P,p))}for(i=0;i<e.g;i++)if(e.H[i]==1&&(e.F[i]&64)==0){for(w=0;w<2;w++)if(u=e.D[w][i],g=n.pp(e,u),L=e.e[u]-g,g==1&&L!=0){S=e.D[1-w][i],r=e.C[u],r>6&&e.o[S]==1?a.iEb(e,u,S,L,t):e.o[S]!=2&&e.e[S]>1&&a.hEb(e,u,S,L,t);break}}},a.mEb=function(t,e){var A,P,r,i,D,u,o,Q,L,w,s,h;for(Q=new y.rqb(e);Q.a<Q.c.a.length;)if(o=y.qqb(Q),o.td()==1){for(u=o.f,w=t,s=0,h=w.length;s<h;++s){if(L=w[s],L==-1)return!1;for(A=!1,r=u,i=0,D=r.length;i<D;++i)if(P=r[i],L==P){A=!0;break}if(!A)return!1}return!0}return!1},G(194,48,Kn,a.gEb),U.rd=function(t,e){var A,P,r,i,D,u,o,Q,L,w,s,h,b;if(A=I.uy(t,this.f),isNaN(A))return 0;if(A<0&&(A+=G1),h=180*A/t1,D=a.dEb(this,A),D==-1)for(T.Pjb(),L=this.e,w=0,s=L.length;w<s;++w);if(o=a.eEb(this,A,D),o==0)return 0;for(P=k.Math.abs(h-this.e[D]),P>180&&(P=360-P),P>60&&(P=60),u=t.o,Q=3*o*P*P/3600,b=0,i=0;i<n.Ho(u,this.f[1]);i++)n.Vo(u,this.f[1],i)!=this.f[2]&&(e!=null&&(e[n.Vo(u,this.f[1],i)]+=Q),b+=Q);for(r=0;r<n.Ho(u,this.f[2]);r++)n.Vo(u,this.f[2],r)!=this.f[1]&&(e!=null&&(e[n.Vo(u,this.f[2],r)]+=Q),b+=Q);return b},U.sd=function(t,e){var A,P,r,i,D,u,o,Q,L,w,s,h,b,g,B,m,S,p,M;if(o=I.uy(t,this.f),isNaN(o)||(o<0&&(o+=G1),s=a.dEb(this,o),p=a.eEb(this,o,s),p==0)||(D=t1*this.e[s]/180-o,k.Math.abs(D)>t1&&(D=D<0?G1+D:D-G1),k.Math.abs(D)<.0031415926535897933))return!1;if(M=n.ii(I.Yx(t,this.f[2]),I.Yx(t,this.f[1])),n.ji(M),D*=e*p,B=t.o,this.a!=null)for(m=this.d==0?-D:D,P=this.a,r=0,i=P.length;r<i;++r)A=P[r],a.GCb(t,A,I.Yx(t,this.f[1]),M,m);else for(u=n.To(B,this.f[1],this.f[2]),h=u!=-1&&(B.p&&u<B.g?n.bt(B.p,u):0)<=5,w=1;w<=2;w++)for(Q=(w==1?-2:2)*n.Oo(B,this.f[w]),b=0;b<n.Ho(B,this.f[w]);b++)if(L=n.Vo(B,this.f[w],b),L!=this.f[3-w]&&(a.fEb(t,L,this.f[w],M,D/Q),!h))for(g=0;g<B.j[L];g++)S=B.i[L][g],S!=L&&B.e[S]!=1&&a.fEb(t,S,this.f[w],M,D/(4*Q));return!0},U.td=function(){return 3},U.ob=function(){var t,e;for(e=new T.Mjb(\"torsion rule:\"),a.BCb(this,e),e.a+=\" torsions:\",t=0;t<this.e.length;t++)t!=0&&(e.a+=\",\"),T.Ijb(e,this.e[t]+\"(\"+this.b[t]+\")\");return e.a},U.d=0,l.reb=O(194),l.seb=tn(\"S\"),l.V6=tn(\"B\"),l.Z6=tn(\"I\"),l.teb=tn(\"Z\"),l.X6=tn(\"D\"),l.Y6=tn(\"F\"),l.$6=tn(\"J\"),l.W6=tn(\"C\"),U=q1(\"OCL.Canonizer\",j.SN),U=q1(\"OCL.CanonizerUtil\",j.jO),U.BACKBONE=j.eO,U.NORMAL=j.fO,U.NOSTEREO=j.gO,U.NOSTEREO_TAUTOMER=j.hO,U.TAUTOMER=j.iO,U.getIDCode=j.kO,U=q1(\"OCL.ConformerGenerator\",j.pO),U.STRATEGY_ADAPTIVE_RANDOM=j.lO,U.STRATEGY_LIKELY_RANDOM=j.mO,U.STRATEGY_LIKELY_SYSTEMATIC=j.nO,U.STRATEGY_PURE_RANDOM=j.oO,U=q1(\"OCL.DrugScoreCalculator\",j.wO),U.calculate=j.xO,U=q1(\"OCL.DruglikenessPredictor\",j.AO),U.DRUGLIKENESS_UNKNOWN=j.yO,U=q1(\"OCL.ForceFieldMMFF94\",j.KO),U.MMFF94=j.EO,U.MMFF94S=j.FO,U.MMFF94SPLUS=j.GO,_.v0(),U=q1(\"OCL.GenericEditorArea\",_.E0),U.EDITOR_EVENT_HIGHLIGHT_ATOM_CHANGED=_.E_,U.EDITOR_EVENT_HIGHLIGHT_BOND_CHANGED=_.F_,U.EDITOR_EVENT_MOLECULE_CHANGED=_.G_,U.EDITOR_EVENT_SELECTION_CHANGED=_.H_,U.HOTSPOT_16=_.I_,U.HOTSPOT_32=_.J_,U.IMAGE_DATA_16=_.K_,U.IMAGE_NAME_32=_.L_,U.KEY_ALT=_.M_,U.KEY_BACK_SPACE=_.N_,U.KEY_CTRL=_.O_,U.KEY_DELETE=_.P_,U.KEY_ENTER=_.Q_,U.KEY_ESCAPE=_.R_,U.KEY_EVENT_PRESSED=_.S_,U.KEY_EVENT_RELEASED=_.T_,U.KEY_HELP=_.U_,U.KEY_SHIFT=_.V_,U.MODE_DRAWING_OBJECTS=_.W_,U.MODE_MARKUSH_STRUCTURE=_.X_,U.MODE_MULTIPLE_FRAGMENTS=_.Y_,U.MODE_REACTION=_.Z_,U.MOUSE_EVENT_CLICKED=_.$_,U.MOUSE_EVENT_DRAGGED=_.__,U.MOUSE_EVENT_ENTERED=_.a0,U.MOUSE_EVENT_EXITED=_.b0,U.MOUSE_EVENT_MOVED=_.c0,U.MOUSE_EVENT_PRESSED=_.d0,U.MOUSE_EVENT_RELEASED=_.e0,U.TableLayoutFill=_.f0,U.TableLayoutPreferred=_.g0,U.cChainCursor=_.h0,U.cDeleteCursor=_.i0,U.cFistCursor=_.j0,U.cHandCursor=_.k0,U.cHandPlusCursor=_.l0,U.cInvisibleCursor=_.m0,U.cLassoCursor=_.n0,U.cLassoPlusCursor=_.o0,U.cPointedHandCursor=_.p0,U.cPointerCursor=_.q0,U.cSelectRectCursor=_.r0,U.cSelectRectPlusCursor=_.s0,U.cTextCursor=_.t0,U.cZoomCursor=_.u0,U=q1(\"OCL.GenericEditorToolbar\",_.d1),U=q1(\"OCL.GenericUIHelper\",_.x1),j.mT(),U=q1(\"OCL.Molecule\",j.qT),U.CANONIZER_ASSIGN_PARITIES_TO_TETRAHEDRAL_N=j.PO,U.CANONIZER_CONSIDER_DIASTEREOTOPICITY=j.QO,U.CANONIZER_CONSIDER_ENANTIOTOPICITY=j.RO,U.CANONIZER_CONSIDER_STEREOHETEROTOPICITY=j.SO,U.CANONIZER_COORDS_ARE_3D=j.TO,U.CANONIZER_CREATE_PSEUDO_STEREO_GROUPS=j.UO,U.CANONIZER_CREATE_SYMMETRY_RANK=j.VO,U.CANONIZER_DISTINGUISH_RACEMIC_OR_GROUPS=j.WO,U.CANONIZER_ENCODE_ATOM_CUSTOM_LABELS=j.XO,U.CANONIZER_ENCODE_ATOM_CUSTOM_LABELS_WITHOUT_RANKING=j.YO,U.CANONIZER_ENCODE_ATOM_SELECTION=j.ZO,U.CANONIZER_NEGLECT_ANY_STEREO_INFORMATION=j.$O,U.CANONIZER_TIE_BREAK_FREE_VALENCE_ATOMS=j._O,U.FISCHER_PROJECTION_LIMIT=j.aP,U.FISCHER_PROJECTION_RING_LIMIT=j.bP,U.STEREO_ANGLE_LIMIT=j.cP,U.VALIDATION_ERRORS_STEREO=j.dP,U.VALIDATION_ERROR_AMBIGUOUS_CONFIGURATION=j.eP,U.VALIDATION_ERROR_ESR_CENTER_UNKNOWN=j.fP,U.VALIDATION_ERROR_OVER_UNDER_SPECIFIED=j.gP,U.cAtomCIPParityNone=j.hP,U.cAtomCIPParityProblem=j.iP,U.cAtomCIPParityRorM=j.jP,U.cAtomCIPParitySorP=j.kP,U.cAtomColorBlue=j.lP,U.cAtomColorDarkGreen=j.mP,U.cAtomColorDarkRed=j.nP,U.cAtomColorGreen=j.oP,U.cAtomColorMagenta=j.pP,U.cAtomColorNone=j.qP,U.cAtomColorOrange=j.rP,U.cAtomColorRed=j.sP,U.cAtomLabel=j.tP,U.cAtomParity1=j.uP,U.cAtomParity2=j.vP,U.cAtomParityIsPseudo=j.wP,U.cAtomParityNone=j.xP,U.cAtomParityUnknown=j.yP,U.cAtomQFAny=j.zP,U.cAtomQFAromState=j.AP,U.cAtomQFAromStateBits=j.BP,U.cAtomQFAromStateShift=j.CP,U.cAtomQFAromatic=j.DP,U.cAtomQFCharge=j.EP,U.cAtomQFChargeBits=j.FP,U.cAtomQFChargeShift=j.GP,U.cAtomQFENeighbourBits=j.HP,U.cAtomQFENeighbourShift=j.IP,U.cAtomQFENeighbours=j.JP,U.cAtomQFExcludeGroup=j.KP,U.cAtomQFFlatNitrogen=j.LP,U.cAtomQFHeteroAromatic=j.MP,U.cAtomQFHydrogen=j.NP,U.cAtomQFHydrogenBits=j.OP,U.cAtomQFHydrogenShift=j.PP,U.cAtomQFIsNotStereo=j.QP,U.cAtomQFIsStereo=j.RP,U.cAtomQFMatchStereo=j.SP,U.cAtomQFMoreNeighbours=j.TP,U.cAtomQFNarrowing=j.UP,U.cAtomQFNeighbourBits=j.VP,U.cAtomQFNeighbourShift=j.WP,U.cAtomQFNeighbours=j.XP,U.cAtomQFNewRingSize=j.YP,U.cAtomQFNewRingSizeBits=j.ZP,U.cAtomQFNewRingSizeShift=j.$P,U.cAtomQFNoMoreNeighbours=j._P,U.cAtomQFNoOfBits=j.aQ,U.cAtomQFNot0ENeighbours=j.bQ,U.cAtomQFNot0Hydrogen=j.cQ,U.cAtomQFNot0Neighbours=j.dQ,U.cAtomQFNot0PiElectrons=j.eQ,U.cAtomQFNot1ENeighbour=j.fQ,U.cAtomQFNot1Hydrogen=j.gQ,U.cAtomQFNot1Neighbour=j.hQ,U.cAtomQFNot1PiElectron=j.iQ,U.cAtomQFNot2ENeighbours=j.jQ,U.cAtomQFNot2Hydrogen=j.kQ,U.cAtomQFNot2Neighbours=j.lQ,U.cAtomQFNot2PiElectrons=j.mQ,U.cAtomQFNot2RingBonds=j.nQ,U.cAtomQFNot3ENeighbours=j.oQ,U.cAtomQFNot3Hydrogen=j.pQ,U.cAtomQFNot3Neighbours=j.qQ,U.cAtomQFNot3RingBonds=j.rQ,U.cAtomQFNot4ENeighbours=j.sQ,U.cAtomQFNot4Neighbours=j.tQ,U.cAtomQFNot4RingBonds=j.uQ,U.cAtomQFNotAromatic=j.vQ,U.cAtomQFNotChain=j.wQ,U.cAtomQFNotCharge0=j.xQ,U.cAtomQFNotChargeNeg=j.yQ,U.cAtomQFNotChargePos=j.zQ,U.cAtomQFPiElectronBits=j.AQ,U.cAtomQFPiElectronShift=j.BQ,U.cAtomQFPiElectrons=j.CQ,U.cAtomQFRingSize0=j.DQ,U.cAtomQFRingSize3=j.EQ,U.cAtomQFRingSize4=j.FQ,U.cAtomQFRingSize5=j.GQ,U.cAtomQFRingSize6=j.HQ,U.cAtomQFRingSize7=j.IQ,U.cAtomQFRingSizeLarge=j.JQ,U.cAtomQFRingState=j.KQ,U.cAtomQFRingStateBits=j.LQ,U.cAtomQFRingStateShift=j.MQ,U.cAtomQFRxnParityBits=j.NQ,U.cAtomQFRxnParityHint=j.OQ,U.cAtomQFRxnParityInvert=j.PQ,U.cAtomQFRxnParityRacemize=j.QQ,U.cAtomQFRxnParityRetain=j.RQ,U.cAtomQFRxnParityShift=j.SQ,U.cAtomQFSimpleFeatures=j.TQ,U.cAtomQFSmallRingSize=j.UQ,U.cAtomQFSmallRingSizeBits=j.VQ,U.cAtomQFSmallRingSizeShift=j.WQ,U.cAtomQFStereoState=j.XQ,U.cAtomQFStereoStateBits=j.YQ,U.cAtomQFStereoStateShift=j.ZQ,U.cAtomRadicalState=j.$Q,U.cAtomRadicalStateD=j._Q,U.cAtomRadicalStateNone=j.aR,U.cAtomRadicalStateS=j.bR,U.cAtomRadicalStateShift=j.cR,U.cAtomRadicalStateT=j.dR,U.cAtomValence=j.eR,U.cBondCIPParityEorP=j.fR,U.cBondCIPParityNone=j.gR,U.cBondCIPParityProblem=j.hR,U.cBondCIPParityZorM=j.iR,U.cBondParityEor1=j.jR,U.cBondParityNone=j.kR,U.cBondParityUnknown=j.lR,U.cBondParityZor2=j.mR,U.cBondQFAllFeatures=j.nR,U.cBondQFAromState=j.oR,U.cBondQFAromStateBits=j.pR,U.cBondQFAromStateShift=j.qR,U.cBondQFAromatic=j.rR,U.cBondQFBondTypes=j.sR,U.cBondQFBondTypesBits=j.tR,U.cBondQFBondTypesShift=j.uR,U.cBondQFBridge=j.vR,U.cBondQFBridgeBits=j.wR,U.cBondQFBridgeMin=j.xR,U.cBondQFBridgeMinBits=j.yR,U.cBondQFBridgeMinShift=j.zR,U.cBondQFBridgeShift=j.AR,U.cBondQFBridgeSpan=j.BR,U.cBondQFBridgeSpanBits=j.CR,U.cBondQFBridgeSpanShift=j.DR,U.cBondQFDelocalized=j.ER,U.cBondQFDouble=j.FR,U.cBondQFMatchFormalOrder=j.GR,U.cBondQFMatchStereo=j.HR,U.cBondQFMetalLigand=j.IR,U.cBondQFNarrowing=j.JR,U.cBondQFNoOfBits=j.KR,U.cBondQFNotAromatic=j.LR,U.cBondQFNotRing=j.MR,U.cBondQFQuadruple=j.NR,U.cBondQFQuintuple=j.OR,U.cBondQFRareBondTypes=j.PR,U.cBondQFRareBondTypesBits=j.QR,U.cBondQFRareBondTypesShift=j.RR,U.cBondQFRing=j.SR,U.cBondQFRingSize=j.TR,U.cBondQFRingSizeBits=j.UR,U.cBondQFRingSizeShift=j.VR,U.cBondQFRingState=j.WR,U.cBondQFRingStateBits=j.XR,U.cBondQFRingStateShift=j.YR,U.cBondQFSimpleFeatures=j.ZR,U.cBondQFSingle=j.$R,U.cBondQFTriple=j._R,U.cBondTypeCross=j.aS,U.cBondTypeDeleted=j.bS,U.cBondTypeDelocalized=j.cS,U.cBondTypeDouble=j.dS,U.cBondTypeDown=j.eS,U.cBondTypeIncreaseOrder=j.fS,U.cBondTypeMaskSimple=j.gS,U.cBondTypeMaskStereo=j.hS,U.cBondTypeMetalLigand=j.iS,U.cBondTypeQuadruple=j.jS,U.cBondTypeQuintuple=j.kS,U.cBondTypeSingle=j.lS,U.cBondTypeTriple=j.mS,U.cBondTypeUp=j.nS,U.cChiralityDiastereomers=j.oS,U.cChiralityEpimers=j.pS,U.cChiralityIsomerCountMask=j.qS,U.cChiralityKnownEnantiomer=j.rS,U.cChiralityMeso=j.sS,U.cChiralityNotChiral=j.tS,U.cChiralityRacemic=j.uS,U.cChiralityUnknown=j.vS,U.cChiralityUnknownEnantiomer=j.wS,U.cCommonOxidationState=j.xS,U.cDefaultAVBL=j.yS,U.cDefaultAllowedPseudoAtoms=j.zS,U.cDefaultAtomValence=j.AS,U.cESRGroupBits=j.BS,U.cESRMaxGroups=j.CS,U.cESRTypeAbs=j.DS,U.cESRTypeAnd=j.ES,U.cESRTypeOr=j.FS,U.cHelperAll=j.GS,U.cHelperBitCIP=j.HS,U.cHelperBitIncludeNitrogenParities=j.IS,U.cHelperBitNeighbours=j.JS,U.cHelperBitParities=j.KS,U.cHelperBitRings=j.LS,U.cHelperBitRingsSimple=j.MS,U.cHelperBitSymmetrySimple=j.NS,U.cHelperBitSymmetryStereoHeterotopicity=j.OS,U.cHelperBitsStereo=j.PS,U.cHelperCIP=j.QS,U.cHelperNeighbours=j.RS,U.cHelperNone=j.SS,U.cHelperParities=j.TS,U.cHelperRings=j.US,U.cHelperRingsSimple=j.VS,U.cHelperSymmetrySimple=j.WS,U.cHelperSymmetryStereoHeterotopicity=j.XS,U.cMaxAtomicNo=j.YS,U.cMaxConnAtoms=j.ZS,U.cMoleculeColorDefault=j.$S,U.cMoleculeColorNeutral=j._S,U.cPseudoAtomA=j.aT,U.cPseudoAtomAttachmentPoint=j.bT,U.cPseudoAtomPolymer=j.cT,U.cPseudoAtomR=j.dT,U.cPseudoAtomX=j.eT,U.cPseudoAtomsAGroups=j.fT,U.cPseudoAtomsAll=j.gT,U.cPseudoAtomsAminoAcids=j.hT,U.cPseudoAtomsHydrogenIsotops=j.iT,U.cPseudoAtomsRGroups=j.jT,U.cRoundedMass=j.kT,U.fromIDCode=j.jU,U.fromMolfile=j.mU,U.fromMolfileWithAtomMap=j.nU,U.fromSmiles=j.oU,U.getAngle=j.xU,U.getAngleDif=j.yU,U.getAtomicNoFromLabel=j.YU,U.getDefaultAverageBondLength=j.BV,U.isAtomicNoElectronegative=j.HW,U.isAtomicNoElectropositive=j.IW,U.setDefaultAverageBondLength=j.eY,U=q1(\"OCL.MoleculeProperties\",j.LY),U=q1(\"OCL.Reaction\"),U.create=j.dZ,U.fromMolecules=j.eZ,U.fromRxn=j.fZ,U.fromSmiles=j.gZ,U=q1(\"OCL.ReactionEncoder\",j.RZ),U.CATALYST_DELIMITER=j.FZ,U.INCLUDE_ALL=j.GZ,U.INCLUDE_CATALYSTS=j.HZ,U.INCLUDE_COORDS=j.IZ,U.INCLUDE_DEFAULT=j.JZ,U.INCLUDE_DRAWING_OBJECTS=j.KZ,U.INCLUDE_MAPPING=j.LZ,U.INCLUDE_RXN_CODE_ONLY=j.MZ,U.MOLECULE_DELIMITER=j.NZ,U.OBJECT_DELIMITER=j.OZ,U.PRODUCT_IDENTIFIER=j.PZ,U.RETAIN_REACTANT_AND_PRODUCT_ORDER=j.QZ,U.decode=j.SZ,U.encode=j.VZ,U=q1(\"OCL.Reactor\",j.YZ),U=q1(\"OCL.Resources\",j.a$),U._register=j.b$,U=q1(\"OCL.RingCollection\"),U.MAX_SMALL_RING_SIZE=j.d$,U.MODE_SMALL_AND_LARGE_RINGS=j.e$,U.MODE_SMALL_AND_LARGE_RINGS_AND_AROMATICITY=j.f$,U.MODE_SMALL_RINGS_AND_AROMATICITY=j.g$,U.MODE_SMALL_RINGS_ONLY=j.h$,U=q1(\"OCL.SDFileParser\",j.A$),U=q1(\"OCL.SSSearcher\",j.L$),U=q1(\"OCL.SSSearcherWithIndex\",j.R$),U.bitCount=j.S$,U.getHexStringFromIndex=j.U$,U.getIndexFromHexString=j.V$,U.getKeyIDCode=j.W$,U.getSimilarityAngleCosine=j.X$,U.getSimilarityTanimoto=j.Y$,U=q1(\"OCL.SmilesParser\",j.b_),j.r_(),U=q1(\"OCL.ToxicityPredictor\",j.s_),U.RISK_HIGH=j.i_,U.RISK_LOW=j.j_,U.RISK_NAMES=j.k_,U.RISK_NO=j.l_,U.RISK_UNKNOWN=j.m_,U.TYPE_IRRITANT=j.n_,U.TYPE_MUTAGENIC=j.o_,U.TYPE_REPRODUCTIVE_EFFECTIVE=j.p_,U.TYPE_TUMORIGENIC=j.q_,U=q1(\"OCL.Transformer\",j.v_),U=q1(\"OCL.Util\",j.y_),U.getHoseCodesFromDiastereotopicID=j.z_,U=q1(\"java.io.Serializable\"),U.$isInstance=pu,T.Egb(),U=q1(\"java.lang.Boolean\"),U.$isInstance=Ru,U=q1(\"java.lang.CharSequence\"),U.$isInstance=Hu,U=q1(\"java.lang.Cloneable\"),U.$isInstance=Nu,U=q1(\"java.lang.Comparable\"),U.$isInstance=Cu,U=q1(\"java.lang.Double\"),U.$isInstance=qu,U=q1(\"java.lang.Number\"),U.$isInstance=T.Ihb,U=q1(\"java.lang.String\"),U.$isInstance=Eu,U=q1(\"java.lang.Throwable\"),U.of=Iu,U=q1(\"java.util.List\"),U.copyOf=y.tub,U=q1(\"java.util.Map\"),U.copyOf=y.xub,U=q1(\"java.util.Set\"),U.copyOf=y.wvb,U=q1(\"javaemul.internal.HashCodes\",c.vzb),U.getIdentityHashCode=c.wzb,U.getNextHash=c.xzb,U.getObjectIdentityHashCode=c.yzb,U=q1(\"javaemul.internal.JsUtils\"),U.toDoubleFromUnsignedInt=c.Rzb;var _D=(xt.L4(),xu),$D=$D=mu;Fu(Gu),ju(\"permProps\",[[]]),H1(\"moduleStartup\",\"moduleEvalEnd\"),$D(Zt.__errFn,Zt.__moduleName,Zt.__moduleBase,Zt.__softPermutationId,Zt.__computePropValue),H1(\"moduleStartup\",\"end\"),Ht&&Ht.permProps&&Zt.__moduleStartupDone(Ht.permProps);let aD=k.OCL;return aD.version=\"9.6.0\",aD}var r2=typeof window<\"u\"&&typeof window.document<\"u\",Se;Se={document:{compatMode:\"CSS1Compat\"}},Se.setTimeout=globalThis.setTimeout?globalThis.setTimeout.bind(globalThis):Fn,Se.clearTimeout=globalThis.clearTimeout?globalThis.clearTimeout.bind(globalThis):Fn,Se.setInterval=globalThis.setInterval?globalThis.setInterval.bind(globalThis):Fn,Se.clearInterval=globalThis.clearInterval?globalThis.clearInterval.bind(globalThis):Fn,Se.Error=globalThis.Error,Se.Math=globalThis.Math,Se.RegExp=globalThis.RegExp,Se.TypeError=globalThis.TypeError;var i2=P2(Se),t0=i2;function Bu(k){let Dt=k.Resources._register.bind(k.Resources);if(delete k.Resources._register,k.Resources.register=function(Zt){typeof Zt==\"string\"&&(Zt=JSON.parse(Zt));let H1=new TextEncoder;if(typeof Zt!=\"object\"||Zt===null)throw new TypeError(\"resources must be an object\");let Ot={};for(let[Q1,D1]of Object.entries(Zt)){if(typeof D1!=\"string\")throw new TypeError(`resource ${Q1} must be a string`);Ot[Q1]=H1.encode(D1)}Dt(Ot)},k.Resources.registerFromUrl=async function(Zt=f2()){let Ot=await(await fetch(Zt)).json(),Q1=new TextEncoder,D1=Object.fromEntries(Object.entries(Ot).map(([R1,p1])=>[R1,Q1.encode(p1)]));Dt(D1)},typeof process<\"u\"){let Vt=function(){let Zt=process.getBuiltinModule(\"node:path\"),H1=Zt.join(import.meta.dirname,\"resources.json\");return import.meta.filename.endsWith(\"register_resources.js\")&&(H1=Zt.join(import.meta.dirname,\"../dist/resources.json\")),H1};var Ht=Vt;k.Resources.registerFromNodejs=function(H1=Vt()){let Q1=process.getBuiltinModule(\"node:fs\").readFileSync(H1,\"ascii\");k.Resources.register(Q1)}}else k.Resources.registerFromNodejs=function(){throw new Error(\"Resources.registerFromNodejs can only be called from Node.js\")}}function f2(){return new URL(\"resources.json\",import.meta.url).href}I8(t0);du(t0);Bu(t0);var _2=t0,$2=t0.CanvasEditor,a2=t0.registerCustomElement,to=t0.Canonizer,eo=t0.CanonizerUtil,no=t0.ConformerGenerator,Ao=t0.DrugScoreCalculator,Po=t0.DruglikenessPredictor,ro=t0.ForceFieldMMFF94,io=t0.Molecule,fo=t0.MoleculeProperties,Do=t0.Reaction,uo=t0.ReactionEncoder,oo=t0.Reactor,lo=t0.Resources,Qo=t0.RingCollection,Lo=t0.SDFileParser,Uo=t0.SSSearcher,yo=t0.SSSearcherWithIndex,wo=t0.SmilesParser,so=t0.ToxicityPredictor,To=t0.Transformer,ho=t0.Util,bo=t0.version;export{to as Canonizer,eo as CanonizerUtil,$2 as CanvasEditor,no as ConformerGenerator,Ao as DrugScoreCalculator,Po as DruglikenessPredictor,ro as ForceFieldMMFF94,io as Molecule,fo as MoleculeProperties,Do as Reaction,uo as ReactionEncoder,oo as Reactor,lo as Resources,Qo as RingCollection,Lo as SDFileParser,Uo as SSSearcher,yo as SSSearcherWithIndex,wo as SmilesParser,so as ToxicityPredictor,To as Transformer,ho as Util,_2 as default,a2 as registerCustomElement,bo as version};\n/**\n * openchemlib - Manipulate molecules\n * @version v9.6.0\n * @date 2025-07-14T13:45:57.019Z\n * @link https://github.com/cheminfo/openchemlib-js\n * @license BSD-3-Clause\n*/\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultDatabase = void 0;\nexports.defaultDatabase = [\n    {\n        label: 'alpha cleavage',\n        rxnCode: 'eM``eIhOh`!fH@Oj@ eF``fJD#Qg Qp Qd#!RPNp@@qtJ_@ !RGUi| !R_P@]nop',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1149/1945-7111/abdde7',\n        section: '',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Water elimination',\n        rxnCode: 'eMHJN`pksPqFdD@`!fI@GudYA@H@ eF@HhP#Q^ Qp Qd#!RWrL@@qvrO@ !RG]i| !R@@L]~kp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '5.7',\n        description: 'Fig. 18 b.',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive,negative',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Water elimination',\n        rxnCode: 'eFH`fLGtX!fI@Gu` fHT`P#QX QP a`#!R@AL]|gp !RGUi| !RG[i|',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '7',\n        description: 'Fig. 32 c.',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Water elimination',\n        rxnCode: 'gCiALAJRu@_HYlgHE@!fI@Gu` eO``fNZ`~cIrE@#qNT qH Qg#!R@BL@[@@cGPj| !RG]i| !Rog~w?Qwzo@',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: '',\n        section: '7.4.3.',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: 'ISBN: 978-0-470-03310-4',\n        software: '',\n    },\n    {\n        label: 'Water elimination',\n        rxnCode: 'eMH`eIXOda`!fI@Gu` eF@bXhP#Qy Qp Qd#!R@Fp@XqtJ_@ !RG]i| !R@FL]^gp',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: '',\n        section: '7.4.3.',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: 'ISBN: 978-0-470-03310-4',\n        software: '',\n    },\n    {\n        label: 'Ureas fragmentation',\n        rxnCode: 'gGTAAaJTwTpGrDZHpypB@P!gCh@@eKHFLv\\\\@`D@ eF``fLGtX#qn\\\\J qfQ qk#!R|Gvw__A|_g?p_Qurw@ !R_wy||G}~GYk| !R@FL]~gp',\n        ionization: 'esi,ei',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 23',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Ureas fragmentation',\n        rxnCode: 'gGTAAaJTwTpGrDZHpypB@P!gCh@@eKHFLv\\\\@`D@ eF``fLGtX#qbu_ qj{ Ql#!RlKvwo[@|og~poQurw@ !R_{x|lG~~GYk| !R@BL]~gp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 24',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Ureas fragmentation',\n        rxnCode: 'gGTAAaJTwTpGtDQas`D@`!gJT@AdijdCzZHpypB@P fHT`P#qbqo qJ|h Qp#!R|Gvw__A|_g?p_Qurw@ !Rb@KW@gx@bGt]vhH !RG_i|',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 25',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Ureas fragmentation',\n        rxnCode: 'gGTAAaJTwTpGtFQas`D@`!gChAAIRfdCF[N@PB@ eF`BLGtX#qj|^ qbs qo#!Rm?wp?[]|_g~w?QvRw@ !R@Fp?[@AcG]k| !R@FL]~gp',\n        ionization: 'esi,ei',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 26',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Ureas fragmentation',\n        rxnCode: 'day@B@HIRigjf`Cy@`hcEYpB@P!gGTAAaJTwTpGrFZHpypB@P eF@HhP#IaLJfxP IaBia q~#!RbGwW_Wx@bOq~O}_|bGt]lcp !R|Gvw__A|_g?p_Qtzw@ !R@FL]Akp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 27',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Tropylium rearragement',\n        rxnCode: 'gOpAMJUKua@@Gtt@!gOpAGJTju`@@Gt\\\\@#qgVMX qYoTp#!Ri}w^@Hc]i?rg?Mx@GPhB !Rwg}GED]sw~g_~dvOG]h|',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: 'ISBN: 978-0-470-03310-4',\n        software: '',\n    },\n    {\n        label: 'Tropylium fragmentation',\n        rxnCode: 'gOpAGJTju`@@D!gKPACJTnLE@P eF@HxP#qqUcx qMsx Qd#!RkpXxCLvpO`BblClLG[KB !RS|T~@BLXSzh]FhH !R@DL]^kp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'reaction',\n        web: 'http://people.whitman.edu/~dunnivfm/C_MS_Ebook/CH6/6_9_5.html',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Tropylium fragmentation',\n        rxnCode: 'gFpAAJTjZ@@A@!gBPAAJTkRpD eF@HxP#qbqk qbu qY#!RdMvww]y?wg~wwQurW@ !R@M{^[}yoGUj| !R@@L]^kp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'reaction',\n        web: 'https://en.wikipedia.org/wiki/Fragmentation_%28mass_spectrometry%29',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Thiophosphonates fragmentation',\n        rxnCode: 'gJPeE`DSpTiMMPGtT@!gC`eE`DSpdiLtA@ fH@Oj@#qbNh qbN qh#!Rb@I~Owx@bGt]|`H !Ru?sW_Wx@GQjB !RGWi|',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 60',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Thiophosphate B fragmentation',\n        rxnCode: 'gGQeLZ@b^@eJZihCzB@!gJQdEb@b^BSTtA}A@ fHT`P#qbqk qbMX Qp#!ROvL@Xvp?OvMc@AtrO@ !RbOq~@Gx?bGt]v`H !RGWi|',\n        ionization: 'esi,ei',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 49',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Thiophosphate B fragmentation',\n        rxnCode: 'gNqeLZ@b^@eJZZZ`OhH@!gJQeEb@b^@eIjZ@~`p eF@HhP#qbqkx qbMX q~#!ROvp@[FL?Ovql@@AcGSHB !RbOq~@Gx?bGt]N`H !R@FL]~kp',\n        ionization: 'esi,ei',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 50',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Thiophosphate B fragmentation',\n        rxnCode: 'gGQeLZ@b^@eJZihCzB@!gCaiHlO@SGZ@` eFB@HcA}D@#qbqk qQ] Ql#!ROvL@Xvp?OvMc@AwRO@ !Ruwu~@Ha}GUk| !R@FL]~gp',\n        ionization: 'esi,ei',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 51',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Thiophosphate A fragmentation',\n        rxnCode: 'gGQeEb@b^BeIiZhCzJ@!gC`eE`DSpdiLtA@ eFHBLGtP#qbqk qbM qs#!RXp@@[C}cXp@@XqtrP` !RbOq~@Ha}G]jB !R@FL]~gp',\n        ionization: 'esi,ei',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 45',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Thiophosphate A fragmentation',\n        rxnCode: 'gNqeEb@b^BgHiDVj`Ohh@!gJQeEb@b^BeIij@~bp eF@HhP#qbqkx qbqh q_#!R[@@@Xs}l[@@@[@AcGPiB !RbOq~@Gx?bGt]N`H !R@FL]~kp',\n        ionization: 'esi,ei',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 46',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Thiophosphate A fragmentation',\n        rxnCode: 'daxLRDp`BH|DgHiDbuU@GtI@!gGPdE`DSpRYvi@~d` eFH`fLGtX#IaLJfxP IaBka qs#!R[C|?XpAc[@@?[@Al@FL]lmp !RbOrH_Wx@b@JH_Qvz`` !R@FL]Agp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 47',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Thiophosphate A fragmentation',\n        rxnCode: 'gGQeEb@b^BeIiZhCzJ@!gC`eE`DSpdiLtA@ eFHBLGtP#qbqk qbM qs#!RXp@@[C}cXp@@XqtrP` !RbOq~@Ha}G]jB !R@FL]~gp',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 48',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Thiocarbamates fragmentation',\n        rxnCode: 'gJYIC`DBTijXCzB@!eMhdiRVB eFB@HcA}D@#qbqh qJh Ql#!Rb@KW@gx@bGt]\\\\hH !R@Fp@XqwZ?@ !R@FL]~gp',\n        ionization: 'esi,ei',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 19',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Thiocarbamates fragmentation',\n        rxnCode: 'gGYIC`DBTiff`OhH@!gCiIL`DBTff@~`p eF@HhP#IaLJa qbM IG@#!RupJH@m]}_`BH_Qtr`` !RbOq~@Ha}GSjB !R@FL]~kp',\n        ionization: 'esi,ei',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 20',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Thiocarbamates fragmentation',\n        rxnCode: 'gNyIC`DF\\\\dTJij@~a`!gJYHC`DISTpGtL@ eF@bXpP#IaLJnD qbqh IxP#!Rb@KW@gx@bGvH?Ha}GWJB !Rb@KW@gx@bGt]NhH !R@FL]Agp',\n        ionization: 'esi,ei',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 21',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Thiocarbamates fragmentation',\n        rxnCode: 'gGYIC`DB\\\\dTMM@_PP!gCaHL@aJZPH eF``fJGtP#qbqo qbq qo#!R|Gvw_Wy?|Gsp_Qvrw@ !R@Fp?[@AcG]i| !R@FL]~gp',\n        ionization: 'esi,ei',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 22',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Sulfoxides fragmentation',\n        rxnCode: 'eMJhBBXvCyH\\\\@!fHT`P eFJHBHh_Q@#Qg Qp Qd#!ROvL@Xqwro@ !RGUi| !R@FL]^kp',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 65',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Sulfones fragmentation',\n        rxnCode: 'gC`iH`DRXzpGrdZ@!fHT`P eMFI@bM`~f@#qbq qH Qm#!Re{v~@Hb}G[K| !RGYi| !RWrL@Hquzo@',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 66',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Sulfones fragmentation',\n        rxnCode: 'gC`iH`DRXzpGtd@!fHT`P eMFI@bMP~b@#qfQ qH Qm#!R_`CW_Xa}G[K| !RGQi| !R@Gx?_avz_@',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 67',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Sulfites fragmentation',\n        rxnCode: 'gJQiHl@aReVu@_QP!gCahHl@bNtA}E@ fHT`P#qbqh qbq qh#!Rmwsp_Gy?|Ot]lkp !RuwvH_Wx@G]k| !RG_i|',\n        ionization: 'esi,ei',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 68',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Sulfides fragmentation',\n        rxnCode: 'eMB`HIchOh`!fHT`P eFB@HcA}D@#Q[ a` Q\\\\#!ROvL@Xqur_@ !RGYi| !R@FL]ngp',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 61',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Sulfides fragmentation',\n        rxnCode: 'gC`I@DBTij@~``!eFB`HIcA}F@ eF@HhP#qrL qq Qd#!RGtL@Pq}lG[I| !R_pp]Vop !R_pp]nop',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 62',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Simple inductive cleavage',\n        rxnCode: 'eM@bXzCKGgW@!fHT`P eF@HpP#Q[ a` Q\\\\#!R_qL@Dqwro@ !RGUi| !R@AL]^kp',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '4.1',\n        description: 'Fig. 7.1.1',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Sigmatropic rearrangement',\n        rxnCode: 'eM@HvCzX@!eM@HvB#Q^ Q[#!ROvL@XquJO@ !ROvL@Xqtzo@',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '5.7',\n        description: 'Fig. 18 a.',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive,negative',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Retro-heteroene (McLafferty-type rearrangement)',\n        rxnCode: 'gJP@DkVhCzFHrEpBG`D@!eM@HvCzXcI\\\\@axA@ eF@HhP#qTqh Q^ qM#!ROvL@XpAl@FL]Bcp !R@FL?XqwZO@ !R@FL]Akp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '3',\n        description: 'Fig. 4.3',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive,negative',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Retro-heteroene (Claisen rearrangement)',\n        rxnCode: String.raw `daxH@JrRHiMUHAcEHHA@!daxH@NrSRHmUHAcGHHA@#IZaxla@ IhfP^c@#!Ru{vHo[x@u?sWoY_|e{t]Dop !R@BL?Xs|\\[E|cWs}cOqp]vcp`,\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '5.4',\n        description: 'Fig. 12 b.',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive,negative',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Retro-heteroene',\n        rxnCode: 'daxDBDqIRiubJ`CZN|bPtQqDD@cDD@chXO}c`!gJQ@DeNl`XqHHA@ eFH`fLGtYFDD@`#qqj\\\\x qqkx QX#!RbCtAHN\\\\}b@Kg@cx@yst]xop !R@DL?W@Al@DL]Nop !R@DL]agp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '5.5',\n        description: 'Fig. 13 a.',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Retro-heteroene',\n        rxnCode: 'gGY@DDf]j`Odkl@!gCi@DDff@~`l eF@HhP#qrLk qrL qk#!RbOrH_Wx@b@JH_QuJ@` !RbOq~@Ha}GSjB !R@FL]Akp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '5.5',\n        description: 'Fig. 13 b.',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive,negative',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Retro-heteroene',\n        rxnCode: 'daDLBHSdeJmVfZjh@~QHzHyBB@PbB@QrB@P!gCaAIiRmhCFQA@H@ gC``Eh{PGrTZHiHHAFPPB@#Ikb[HPP I`Tp qky#!R}{rpwKy?lGvpO[y?og|]dep !ROqp@[@@cGUk| !RbKwW_[x@G_k|',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '5.4',\n        description: 'Fig. 14 b.',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Retro-heteroene',\n        rxnCode: 'gGP`MTj}jPOihbl``DUA@H@!eMHJMPqiA@H@ eMHFM`~fHr``D@#qStM qTX qNh#!RbKwWo[x@upKW_QtR?@ !R@Ox?oawZ_@ !R@BL?XqwzO@',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '5.4',\n        description: 'Fig. 14 c.',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive,negative',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Retro-ene',\n        rxnCode: 'gJQ@DeZu@_PqFIA@HFB@!eMHJM`qiA@H@ eF@HhP#qeVH qbh qq#!RWrM@XpAl@BL]Bcp !ROvL@HqwZO@ !R@BL]Akp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '5.3',\n        description: 'Fig. 11 b.',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive,negative',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Retro-ene',\n        rxnCode: 'gJP@DkVhCzF@!eM@HvCzX@ eF@HhP#qbqh Qm qM#!ROvL@XpAl@FL]bcp !R@FL?XqwZO@ !R@FL]~kp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '3',\n        description: 'Fig. 4.3',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive,negative',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Retro-Diels–Alder ',\n        rxnCode: 'daDD@DqJg^ffZh@qQDD@cDD@`!gGQ@BeJmJHGFEA@H@ eFHBJFLHHA@#IGmdehp IxakS IeP#!Rog?w_KC\\\\lCvp?[@|lOt]tkp !R|Gw~@OA|mpKp_QwZ`` !R@BL]Agp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '5.2',\n        description: 'Fig. 10 a.',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive,negative',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Retro-Diels–Alder ',\n        rxnCode: 'gFp@DiTujhB!gC`@Die@` eF@HhP#q]aV q]a Q\\\\#!R_g~w_K_}mwvw_AuRO@ !R@Fp?[@AcGUk| !R@FL]^kp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '5.2',\n        description: 'Fig. 10 b.',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive,negative',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Retro-Diels–Alder ',\n        rxnCode: 'gFx@@eJfuS@P!gC`@Die@` eF`BJD#q]aV qqU q\\\\#!R_g~w_K_}mwvw_AuRO@ !R@Fp?[@AcGUk| !R@FL]^gp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '5.2',\n        description: 'Fig. 10 c.',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive,negative',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Retro-Diels–Alder ',\n        rxnCode: 'gOu@AReLm]SLAcB``D@!gJY@@TeVTCFEA@H@ eF`BJD#IKJRV` IZDrP qM#!R}xNp?[y?}{r~_{@}GQI\\\\ !R_vq?Dw}l_vp]z`H !R@BL]Agp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '5.2',\n        description: 'Fig. 10 d.',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive,negative',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Retro-Diels–Alder ',\n        rxnCode: String.raw `didDB@{iRYefxijh@zRhX!gNpaAQJRs\\uBIzQg@ eF@HhP#IwlDdeZ IwlIEh IFP#!RbMvH?Cx_bMt~@Hc]Oa~H?AtJo@ !Rm{vwoSy?musPO[\\}GYh\\ !R@DL]Akp`,\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '5.2',\n        description: 'Fig. 9 a.',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Retro-Diels–Alder ',\n        rxnCode: 'fdeA`D@\\\\brTfYY_m]gIZ|DhJB@@h@@~aF@!didHB@BTfUvfZVV@OhB@ didD@@iIYgxUie`B#iup`jXdibCPcXKoI iSxKhvMHP IwbkEYH#!RbCvH?Ky_bCv~@H`}oe~H?Hc|oe~~@H`}esv~W{y_e{v~WquRs@ !RlKvpwKy?lKvpO[y?lKvpOQwZg@ !Rmwvw_[y?msrpo[^}mwvwOAuzG@',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '5.2',\n        description: 'Fig. 9 b.',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Retro-Diels–Alder ',\n        rxnCode: 'deTDB@{iRYemnJXj`CiJaoQt@!gGPa@QJRmsPbX gC`@DiPDCteZ@#IaLJfxYT IaBxU IriX#!RbGvH?Gx?bGu~@Hb}_c~H?Gx?G[I\\\\ !RbGvH_X`B_`BH_Qtz_@ !R|Gq~_?C}GXX|',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '5.2',\n        description: 'Fig. 9 c.',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Remote Hydrogen rearrangment',\n        rxnCode: 'gC`AEJTu@P!fH@Oj@ eM@fXvB#qVa qH Q^#!R@Fq?[@@SG_HB !RGWi| !R@AM?DqtZO@',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: 'Mass-Frontier',\n    },\n    {\n        label: 'Remote Hydrogen rearrangement',\n        rxnCode: 'eM@HzCzhcO\\\\@axADQbU`!fH@OjHw\\\\@axADQbU` eF@HhP#Q[ Qp Qd#!ROvL@XqurO@ !RGUi| !R@FL]^kp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '5.1',\n        description: 'Fig. 4.1. a',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive,negative',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Remote Hydrogen rearrangement',\n        rxnCode: 'eM@HzCzhcW\\\\@axADQbU`!fH@Oj@ eF@HhXqw@H^@QDXeX#Q^ a` Qt#!R@FL?XqwrO@ !RGUi| !R_rp]ngp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '3',\n        description: 'Fig. 4.1. b',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive,negative',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Rearrangment d',\n        rxnCode: 'gOpAIJUKua@@Gtt@!gOpAMJUKua@@D#q]gJp q\\\\oQp#!Ro`BWoXb}e?rW?I^}GPhB !Resv~@H`}epJW@kx@GShB',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.comptc.2016.07.018',\n        section: '',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Rearrangment a',\n        rxnCode: 'dnD@BLeJV|jfZih@`!gOpAGJTju`@@D#qTuYx qigSp#!RSF\\\\_iUMg_wy~_wy?G_I\\\\ !RgtXxCJvp_`Cbl@\\\\LG]kB',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.comptc.2016.07.018',\n        section: '',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Radical resonance',\n        rxnCode: 'gCaA@IRVXROtD_u@`!gCa@@dkPGtD_uD`#qbq qbq#!R_`BH@ha}GXhB !R@FL@[@AcG[i|',\n        ionization: 'esi',\n        reaction: 'Reaction',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'resonance',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: 'Mass-Frontier',\n    },\n    {\n        label: 'Radical resonance',\n        rxnCode: 'gCaA@IRVdCzCOzdP!gCaA@IRVXROtF_uL`#qbq qbq#!R@FL@[@AcGTj| !R_`BH?Ha}G[hB',\n        ionization: 'esi',\n        reaction: 'Reaction',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'resonance',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: 'Mass-Frontier',\n    },\n    {\n        label: 'Radical H Rearrangment',\n        rxnCode: 'eM@jXzCzXcV\\\\@`DSc@jd!eM@jXzCFlxA@HgFATh#Qg Qg#!ROvL@XqtJO@ !ROvL@XqtzO@',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: 'Mass-Frontier',\n    },\n    {\n        label: 'Phosphonic acid fragmentation',\n        rxnCode: 'gGPiHaxJ\\\\ddKU@_QYFEF@P@!gC`iHaxJX{PGrDKHsHpB@ eF@HhP#qqZl qq] Qd#!R[C|?XpAlXp@@Xqvr_@ !Ruwu~@Ha}G]k| !R@FL]~kp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 41&42',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Phosphonic acid fragmentation',\n        rxnCode: 'gGQiHlOASddeZhCyKM@!gCahHlOBNtA}aBcP eF@bXpP#qVLk qVa qk#!RPpAlGq}C@Fp@Pqvr_@ !RO^\\\\@OcvHG]i| !RY`@]^op',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 43',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Phosphonic acid fragmentation',\n        rxnCode: 'gJQiHlOASGmPGrVZ@!gC`iHaxBX{PGtT@ fI@Gu`#qbqh qbM Qp#!Re{v~@Ky_bKt]Lgp !Re{v~@Hb}GYk| !RGWi|',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 44',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Phosphonates fragmentation',\n        rxnCode: 'gJQiHlOBSGmPGtd@!gCahHlOBOTA}I@ fHT`P#qbqh qbq qh#!Ruwu~@Gx?bGt]Lgp !Ruwu~@Ha}GUk| !RGWi|',\n        ionization: 'esi,ei',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 59',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Phosphates fragmentation',\n        rxnCode: String.raw `gNpYHlQxR\\ddqZj@~Tap!gJPYHlQxRX}j@~TaP eF@HhP#qbuKx qbqh q{#!RXs|@Xs}l[@@@[@AcGPi| !Ruwu~@Gx?bGt]vgp !R@FL]Akp`,\n        ionization: 'esi,ei',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 37A&B',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Phosphates fragmentation',\n        rxnCode: 'gGPYHlQxJTjmj`Ohh@!gCaiHlO@SGZ@` eFHBLGtP#IaLJa qbi IpP#!R[C|@[C}cXp@@Xqvr_@ !Ruwu~@Ha}GUk| !R@FL]~gp',\n        ionization: 'esi,ei',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 38',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Phosphates fragmentation',\n        rxnCode: 'gGPYHlQxJTjmj`OlhtF@!gJPXHlQxQ{TA}eF`p fHT`P#qqU\\\\ qqUX a`#!R[C|@[C}cXp@@Xqvr_@ !Ruwu~@Gx?bGt]vgp !RG_i|',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 40',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Oxonium Resonance',\n        rxnCode: 'eFH`fJGtQFDD@`!eFHhfLGuQFdD@`#QX Qd#!R@BL]bgp !R_vp]vop',\n        ionization: 'esi',\n        reaction: 'Reaction',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'resonance',\n        web: 'https://en.wikipedia.org/wiki/Oxonium_ion',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Oxime-ethers fragmentation',\n        rxnCode: 'gCiAHIJTt`_JPh@!eF``fJGtX eFHBJD#qbq qQ Ql#!R@Fp?[@AcGWK| !R@FL]Vgp !R@FL]^gp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 36',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Ketones fragmentation',\n        rxnCode: 'eMH`eIXOh`!fH@Oj@ eFHbfJD#Qg Qp Qd#!R@Fp@Xqwr_@ !RGUi| !R@FL]^kp',\n        ionization: 'esi,ei',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 31',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Ketones fragmentation',\n        rxnCode: 'eMH`eIXOh`!fHT`P eMHAIXOj`#qNP QP qN@#!R@Fp@Xqwr_@ !RGQi| !R@Fp@Xquz?@',\n        ionization: 'esi,ei',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 32',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Ionization',\n        rxnCode: 'eFBCDcAcBQFIdT!eFBcDIcA}EqaHcD@#QX QX#!R@FL]bgp !R@FL]vgp',\n        ionization: 'esi',\n        reaction: 'ionization',\n        doi: '',\n        section: '5',\n        description: 'Fig. 10',\n        kind: 'ionization',\n        web: 'https://www.orgchemboulder.com/Spectroscopy/MS/fragmech.shtml',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Ionization',\n        rxnCode: 'eF@HhP!eF@bXp_zi@#Qd Qd#!R@FL]Rkp !R@FL]vkp',\n        ionization: 'esi',\n        reaction: 'ionization',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'ionization',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: 'Mass-Frontier',\n    },\n    {\n        label: 'Ionization',\n        rxnCode: 'gC`@DkZ@qds`D@`!fH@H eM@fXvCFlxA@H@#qbq qH Qg#!RWvp@[@@cGWHB !RGYi| !RWrL@HqvzO@',\n        ionization: 'esi',\n        reaction: 'ionization',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'ionization',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: 'Mass-Frontier',\n    },\n    {\n        label: 'Ionization',\n        rxnCode: 'eF@H`Zp`!eF@bXp_U@#Qd QX#!R@FL]Rkp !R_rp]Vop',\n        ionization: 'esi',\n        reaction: 'ionization',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'ionization',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: 'Mass-Frontier',\n    },\n    {\n        label: 'Ionization',\n        rxnCode: 'fI@FL``D@!fIRPLYA@HjP#a` a`#!RGPi| !RG]i|',\n        ionization: 'esi',\n        reaction: 'ionization',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'ionization',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: 'Mass-Frontier',\n    },\n    {\n        label: 'Ionization',\n        rxnCode: 'eF@HpXp``D@!eF@bXpXt``D@#Qd QX#!R@FL]bgp !R_rp]Vop',\n        ionization: 'esi',\n        reaction: 'ionization',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'ionization',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: 'Mass-Frontier',\n    },\n    {\n        label: 'Ionization',\n        rxnCode: 'eFHBLGtP!gChaHDiRUhCzJ@#Qd QBP#!R@FL]Bgp !R@FL@[@AcGSj|',\n        ionization: 'esi',\n        reaction: 'ionization',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'ionization',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: 'Mass-Frontier',\n    },\n    {\n        label: 'Ionization',\n        rxnCode: 'fI@FMg@HAG~U@!eFJhrJXpXug@HA@#a` aP#!RGXi| !R@FL]Nkp',\n        ionization: 'esi',\n        reaction: 'Ionisation ',\n        doi: 'https://doi.org/10.1186/1477-5956-10-S1-S8',\n        section: '',\n        description: '',\n        kind: 'ionization',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Ionization',\n        rxnCode: 'fI@FMg@HAG~U@!eFJhtJXpXug@HA@#a` aP#!RGXi| !R_rp]Vop',\n        ionization: 'esi',\n        reaction: 'Ionisation ',\n        doi: 'https://doi.org/10.1186/1477-5956-10-S1-S8',\n        section: '',\n        description: '',\n        kind: 'ionization',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Ionization',\n        rxnCode: 'fI@FMg@HAG~U@!fIRPOjHv\\\\@`D@#a` a`#!RG\\\\i| !RGUi|',\n        ionization: 'esi',\n        reaction: 'ionization',\n        doi: 'https://doi.org/10.1186/1477-5956-10-S1-S8',\n        section: '',\n        description: '',\n        kind: 'ionization',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Ionization',\n        rxnCode: 'fI@GuD[N@PBO|j!fIS`L[N@PB@#a` a`#!RGZi| !RGUi|',\n        ionization: 'esi',\n        reaction: 'ionization',\n        doi: 'https://doi.org/10.1186/1477-5956-10-S1-S8',\n        section: '',\n        description: '',\n        kind: 'ionization',\n        web: '',\n        mode: 'negative',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Ionization',\n        rxnCode: 'fI@FMg@HAG~U@!eMjrX@fezN`~SjHug@HA@#a` aP#!RGPi| !R_qL@DquZo@',\n        ionization: 'esi',\n        reaction: 'ionization',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'ionization',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: 'Mass-Frontier',\n    },\n    {\n        label: 'Inductive cleavages assisted by adjacent heteroatoms',\n        rxnCode: 'gCaALIRfhCJAxsEpBG`D@!eFH`fJFLEpBG`D@ eF@Hp_Q@#qbq qJ Ql#!R[pL@@v}lGSI| !R@@L]Vgp !R@@L]^gp',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '4.1',\n        description: 'Fig. 7.1.2',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Inductive cleavages assisted by β-hydrogen removal',\n        rxnCode: 'dayHBDxDeIYtjj@LhQHdU@!gCi@DDeZ@~b` gChA@IRVdCzB@#IyjH\\\\R@ IyjD qbq#!RtEsP_]A\\\\Og?P_]A\\\\tGt]|kp !R@DL@[@ACGSi| !R@DL@[@ACGXY|',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '6.1.4',\n        description: 'Fig 23 c.',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Inductive cleavages assisted by β-hydrogen removal',\n        rxnCode: 'gJPAMJTmTAeLhHcBW@H^@QNRO@!gC`AMJUm@_SQFXn@P|@b\\\\d^ fH@H#quQ` quT qH#!R@Fq_[@@cWrL]Lgp !R@BM_Hu}lGUi| !RGPY|',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '4.1',\n        description: 'Fig. 7.1.4',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Inductive cleavage',\n        rxnCode: 'gChA@Icu@YPOYQ^`bNB\\\\GaHXECAjb@!fJ@FLgAx@ fHT`P#Q`P a` QP#!Rwg~PO[\\\\}G_H| !RGUi| !RGWi|',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '6.1.1',\n        description: 'Fig 22 a.',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Inductive cleavage',\n        rxnCode: 'eFH`fLFTOzLcBB@P!fI@GudYA@H@ fHT`P#Qd a` QP#!R@DL]\\\\gp !RG]i| !RGWi|',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '6.1.1',\n        description: 'Fig 22 a.',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Inductive cleavage',\n        rxnCode: 'eMhdYRRCJW}N@!fJ@D eFH`fND#Qg Qp Qd#!R@Fp@PquJ_@ !RGUi| !R@DL]^gp',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '6.1.1',\n        description: 'Fig 22 b.',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Inductive cleavage',\n        rxnCode: 'eMDaYRRCJW}LQeA@H@!fI@FL``D@ eFH`fND#Qg Qp Qd#!R@Fp@@qvJ_@ !RGUi| !R@@L]^gp',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '6.1.1',\n        description: 'Fig 22 b.',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Inductive cleavage',\n        rxnCode: 'diD@b@|@gIIETjji@NlRrJ@!gC`HAxQz`H eM@fXvB eF@HhP#IaLJfxY qan IF^ qS#!R@FMl@C}lXs|@[@Ac@Fp@Xqvr_@ !Ruwu~@Ha}GYk| !ROvL@XquzO@ !R@FL]Qkp',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '7',\n        description: 'Fig. 31',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Inductive cleavage',\n        rxnCode: 'gGYALMJT}TpGRdX!gJY@DDefXB fHT`P#qnZa qnTH qX#!RbGwW_X`B_`BH_Qur?@ !RbGvH@gx@bGt]Nop !RG_i|',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '7',\n        description: 'Fig. 32 a.',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Inductive cleavage',\n        rxnCode: 'gCaA@IRmhCzZHpHHA@!eFH`fJGtQFDD@` eF@HhP#qqT qq Qd#!RWvp@[@@cG_I| !R@BL]vgp !R@BL]~kp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: '',\n        section: '7.4.1.3.',\n        description: 'Fig. 7.7',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: 'ISBN: 978-0-470-03310-4',\n        software: '',\n    },\n    {\n        label: 'Inductive cleavage',\n        rxnCode: 'gGPiH`DZ\\\\ddJu@XsHp\\\\@!gC`iH`DBXzpD eF@HhXpcAp@#qVLk qVM qc#!R[C}c@@AlOvL@Xqvr_@ !Ruwu~@Ha}GYk| !R_rp]^gp',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1002/rcm.9131',\n        section: 'conclusion',\n        description: 'scheme 1',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Inductive cleavage',\n        rxnCode: 'eFH`fLG~hP!fI@G~i@ fHT`P#QX QP a`#!R_rp]\\\\gp !RGYi| !RGSi|',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: 'Mass-Frontier',\n    },\n    {\n        label: 'Inductive cleavage',\n        rxnCode: 'eM@jXzCKGgW@!fHT`P eF@HhP#Q[ Qp Qd#!ROvL@Xqwro@ !RGUi| !R@FL]^kp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: 'Mass-Frontier',\n    },\n    {\n        label: 'Inductive cleavage',\n        rxnCode: 'gBPAML^Jj@sfb`!gC`AMJUm@YqQP#qVL qTN#!R@GxBu}\\\\BG_I| !ROvp@[@AcGSi|',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: 'Mass-Frontier',\n    },\n    {\n        label: 'Inductive cleavage',\n        rxnCode: 'eM@jXzCfh!fHT`P eF@HhP#Q[ Qp Qd#!RGtL@Pqwro@ !RGUi| !R@DL]^kp',\n        ionization: 'esi',\n        reaction: 'ionization',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'ionization',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: 'Mass-Frontier',\n    },\n    {\n        label: 'Inductive cleavage',\n        rxnCode: 'eM@bXzCzhsT!fHT`P eF@HhP#Q^ a` Q\\\\#!R_qL@Dquro@ !RGYi| !R@AL]nkp',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1093/chromsci/43.2.92',\n        section: '',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Hydrogen rearrangment',\n        rxnCode: 'gCaA@IRUhCzB@!eFHbfLGtP eF@HhP#qtQ Qx qQ#!R@FL@[@AcGPi| !R@FL]vkp !R@FL]^kp',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: 'Mass-Frontier',\n    },\n    {\n        label: 'Hydrogen rearrangment',\n        rxnCode: 'eMH`eIhOhp!fH@H eFH`fJGtP#Qg Qp Qd#!R@Fp@XqtJ_@ !RGYi| !R@FL]ngp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: 'Mass-Frontier',\n    },\n    {\n        label: 'Hydrogen rearrangment',\n        rxnCode: 'gJQA@IRUZ`OhH@!eMH`eIdOhp eF@HhP#qTqh Q[ qM#!R@Fp@XpAl@FL]Bgp !R@Fp@Xqtz_@ !R@FL]~kp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: 'Mass-Frontier',\n    },\n    {\n        label: 'Hydrogen rearrangment',\n        rxnCode: 'gCaA@IRVhCzC@!eFH`fJGtP eF@HhP#qTq QX qq#!R@FL@[@AcGPi| !R@FL]vgp !R@FL]~kp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: 'Mass-Frontier',\n    },\n    {\n        label: 'Hydrogen rearrangment',\n        rxnCode: 'gJPaAaJTtlA@!eMHAITH eFH`fJGtP#qfUH qnH Qd#!Rb@KW@ha}_`@]lhH !R@Gx@_awZ_@ !R@FL]^gp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: 'Mass-Frontier',\n    },\n    {\n        label: 'Hydrogen rearrangment',\n        rxnCode: 'gJQAAIRgjPH!gJQA@IRgeaDp#qTnH qTnH#!ROvL@Xs}lOvL]\\\\kp !RbGwW_X`B_`@]nop',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: 'Mass-Frontier',\n    },\n    {\n        label: 'Hydrogen rearrangment',\n        rxnCode: 'gCaA@iRZhCzB@!fI@Gu` eM@fXvB#qJt qH Q[#!Ru?q~@M]}GSJB !RGUi| !ROvL@XquzO@',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: 'Mass-Frontier',\n    },\n    {\n        label: 'Hydrogen rearrangment',\n        rxnCode: 'eM@jXzB!fHT`P eF@HhP#Qg QP Qx#!R_qL@DqtJO@ !RGSi| !R@AL]fkp',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: 'Mass-Frontier',\n    },\n    {\n        label: 'Hydrogen rearrangment',\n        rxnCode: 'gJPAEJUkTA@!eM@bXvB eF@HhP#qVah Q[ qi#!R_qL@DpAl@AL]bcp !R_qL@Dqvz_@ !R@AL]Vkp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: 'Mass-Frontier',\n    },\n    {\n        label: 'Hydrogen rearrangment',\n        rxnCode: 'eM@jXzCKGgW@!fHT`P eF@HhP#Q[ Qp Qd#!R_qL@Dqwro@ !RGUi| !R@AL]^kp',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: 'Mass-Frontier',\n    },\n    {\n        label: 'Hydrogen lost',\n        rxnCode: 'eM@jXzCVd@!eO@bXyjCVT@#Q[ Qg#!R_qL@DquJO@ !R?`Bw@auZ?@',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: 'Mass-Frontier',\n    },\n    {\n        label: 'Hydrogen elimination',\n        rxnCode: 'gFpACJTj[ATA}C`!gFpAAJTjZ@@A@#qbqk qn\\\\J#!Rog~wOK_}m{vwOAurO@ !Rog~wOK_}m{vwOAuZO@',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: '',\n        section: '7.4.3.',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: 'ISBN: 978-0-470-03310-4',\n        software: '',\n    },\n    {\n        label: 'Halide Elimination',\n        rxnCode: 'eMBGDchOjbLiDX`!fHfHA}QFRHq@ eF@HhP#Q[ Qp Qd#!ROvL@DqurO@ !RGUi| !R@BL]^kp',\n        ionization: 'esi,ei',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 1',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'H Radical Lost',\n        rxnCode: 'eF@bXp_QDXs`D@c~hP!fHd@AjP eF@bXhXqg@HA@#QX  QX#!R_rp]|gp !RGYi| !R_rp]ngp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: 'Mass-Frontier',\n    },\n    {\n        label: 'Grob-Wharton',\n        rxnCode: 'gNpaIYJU_MU@_JQXbh``DUA@H@!gCa@IGj@~dbLbB@P eMHjfM`~jHt``D@#qqWeX qqW qeX#!Ru{vHo[x@b@J~@Hb}GSK| !Ruwv~@Hb}GUi| !ROvL@HqwzO@',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '6.1.5',\n        description: 'Fig. 24 a.',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Grob-Wharton',\n        rxnCode: 'gNxaLJIRU[jXCzZ@!eMH`eIxH eF`BJGtP eFHBND#q{iV` Qv qM q{#!R_c}~Oxa}b@I~@Ha}G]H\\\\ !R_wy?_awj_@ !R@FL]ngp !R@FL]Agp',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '6.1.5',\n        description: 'Fig. 24 b.',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Grob-Wharton',\n        rxnCode: 'gGPACJTkUPFtlUlxA@HlLG~r`!eN@HdH eF@HhXqg@HA@#qrLh qqh Qd#!R@FL?XpAlOvp@Xquro@ !RJW}yXQuZO@ !R@FL]Agp',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '4.1',\n        description: 'Fig. 7.1.5',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Formation of stabilized cations',\n        rxnCode: 'daF@B@BTeeVz`@@B!gOpAMJUKua@@D fJRPH#IGfbdK@ q\\\\oQp ID#!Rmwrw_Wy?mwrw_[_}mwp]Dcp !Ru{u~@Hb}upKW@gx@GUhB !RG_i|',\n        ionization: 'esi,ei',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 2',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Formation of stabilized cations',\n        rxnCode: 'did@BLeJeWk``b@CzAbLMcApB@!gOpAMJUKua@@D eF@HhXqcApB@#IZJyBGI q\\\\oQp IFP#!Rquu^@Ha]q?sG?H`BW`BHWQur@` !Rquu^@Ha]q?sG?Ex@G]hB !R@Gt]Agp',\n        ionization: 'esi,ei',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 2',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Formation of stabilized cations',\n        rxnCode: 'dif@B@BTeYWaz@@@OhB@!gOpAMJUKua@@D eF`BND#Id^ZJPl q\\\\oQp IdP#!R_`A~@M\\\\Bu{u~@M\\\\BupI~@AuRh` !Ru{u~@Hb}upKW@gx@GUhB !R@FL]~gp',\n        ionization: 'esi,ei',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 2',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Formation of stabilized cations',\n        rxnCode: 'didHB@BTiyWaj@@@OhB@!gOpAMJUKua@@D eFHBLGtP#IGiZJPl q\\\\oQp IFP#!RuwvH_]_|uwu~@M_|u?q~@Awb@` !Ru{u~@Hb}upKW@gx@GUhB !R_rp]~gp',\n        ionization: 'esi,ei',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 2',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Formation of stabilized cations',\n        rxnCode: 'dmtDB@PIRY^UeVj@@@OhB@!gOpAMJUKua@@D gC``@deZ@`#IaLJfxYWP I[aJUt qbu#!R_`CW?Hc|uwvH_Xc|_c~H_Xb}_c|]LhH !Ruwu~@Ha}u?sW?Gx@GUhB !R@FL@[@AcGXY|',\n        ionization: 'esi,ei',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 2',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Ethers fragmentation',\n        rxnCode: 'eMH`fN`~b@!fHT`P eFHBLGtP#Qg QP Ql#!ROvL@Xqur_@ !RGYi| !R@FL]ngp',\n        ionization: 'esi,ei',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 33',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Ethers fragmentation',\n        rxnCode: 'gCaA@IRfhCiQs{BIF`!eFH`fLGtX eF@HhP#qVa QX qN#!R@Fp?[@AcGPk| !R@FL]vgp !R@FL]~kp',\n        ionization: 'esi,ei',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 34',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Ethers fragmentation',\n        rxnCode: 'eMH`fN`~RJ@!fH@Oj@ eFH`fJGtP#Q[ Qp QX#!ROvL@Xqvro@ !RGUi| !R@FL]ngp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 35',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Ether/water elimination',\n        rxnCode: 'gCa@@eMPFtWihb```DJFCX`!fI@GuDYA@H@ eF@HhP#Qdp a` Q\\\\#!R@Fq?[@@SG_K| !RG]i| !R@AL]~kp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.3390%2Ftoxins6082580',\n        section: '2.2',\n        description: 'Fig. 3',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Ether/water elimination',\n        rxnCode: 'gCaAHiRfhCZ[tTQTPPBMCAlp!fI@GuDYA@H@ eF@bXhP#Q[@ a` Qt#!R_qL@Xs}lG[J| !RG]i| !R_qp]^op',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.3390%2Ftoxins6082580',\n        section: '2.2',\n        description: 'Fig. 3',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Esters fragmentation',\n        rxnCode: 'gC`a@aJRm@_PP!eMHAIhOh` eFH`fND#qbq qq@ Qd#!R@FL@[@AcG_I| !R@Fp@XqwZ_@ !R@FL]^gp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'http://dx.doi.org/10.1088/1468-6996/10/3/034602',\n        section: 'Results',\n        description: 'Fig. 5',\n        kind: 'reaction',\n        web: 'https://www.researchgate.net/figure/a-Chemical-structure-of-oxidative-reserpine-MW-6077-b-Post-source-decay_fig4_26637371',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Esters fragmentation',\n        rxnCode: 'gJPa@eJSKTA}E@!eMHbeIXH eFHBLGtX#qrLh Qv qM#!R@W~GKVQuazH]Lep !R@W|LEQvZw@ !R_tP]^op',\n        ionization: 'esi,ei',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 11',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Esters fragmentation',\n        rxnCode: 'gGPa@eJSNuPGtT@!gC`a@eJSM@_QX eF@HhP#satpj satp qi#!RbOrHo[x@b@JHoQtJ`` !RbOrHo[x@GSjB !R_tp]~op',\n        ionization: 'esi,ei',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 12',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Esters fragmentation',\n        rxnCode: 'gGPa@eJSNuPGtT@!gC``@dfZ@~b` eF@bXpP#qbqk qbq qk#!RbOrHo[x@b@JHoQwr`` !RbOrHo[x@GSjB !R@BL]~gp',\n        ionization: 'esi,ei',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 13',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Esters fragmentation',\n        rxnCode: 'gGPa@eJSJuPGtT@!gC``@deZ@` eF@bXpP#qbqk qbu qK#!Ro`BW?Hc|e{vHoQtr`` !R@BL@[@@cGSi| !R_tp]^gp',\n        ionization: 'esi,ei',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 14',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Esters fragmentation',\n        rxnCode: 'gJPa@eJSKTA}E@!eMHAITH eFH`fLGtX#qbqh qbH qu#!R|Gwp_Gy?|Gt]|cp !R_wy?_atZ_@ !R@FL]~gp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 15',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Elimination (missing source)',\n        rxnCode: 'eM`AIhOdq`!fJ@Gup eF@HhP#Qv Qp Qd#!R_rq?Dqvr_@ !RG]i| !R@FL]^kp',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'To check',\n        section: '',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Elimination',\n        rxnCode: 'eMHAIhOdm`!fI@Guh eF@HhP#Qg a` Qt#!R@Fp@HqvJ_@ !RG]i| !R@BL]^kp',\n        ionization: 'esi,ei',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 1',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Elimination',\n        rxnCode: 'gC`@Dij@~b`!eF@Hp_Q@ eF@HhP#qVa qq Qd#!R@Fp?[@AcG_HB !R@FL]vgp !R@FL]^kp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1016/j.jpha.2016.04.008',\n        section: '',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Electron Sharing',\n        rxnCode: 'gCaAAIRVdCzB@!gCaA@IRUdCzB@#qbq qbq#!R@FL@[@AcGTj| !R@FL@[@AcG[i|',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: 'Mass-Frontier',\n    },\n    {\n        label: 'Double cleavage',\n        rxnCode: 'gJPaAaJTkTHGyZCDTDD@cHHA@!eMDiicXOfabKHHAB``D@ eF@HhP#qbqh qTH qu#!RepJH@kx@bKt]LhH !ROvL@HqwZO@ !R@BL]Akp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: '',\n        section: '7.4.3.',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: 'ISBN: 978-0-470-03310-4',\n        software: '',\n    },\n    {\n        label: 'Double cleavage',\n        rxnCode: 'gChA@IRmhCzB@!eF``fJGtX eF@HhP#qTq QX qq#!ROvp@[@AcG_I| !R@FL]Vgp !R@FL]^kp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: '',\n        section: '7.4.3.',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: 'ISBN: 978-0-470-03310-4',\n        software: '',\n    },\n    {\n        label: 'Double cleavage',\n        rxnCode: 'gJXA@IRmZ`OdHL@!eM`bfN`~b@ eF@HhP#qTqh Q^ qi#!ROvL@XpAl@FL]Bkp !ROvL@XqwZo@ !R@FL]Akp',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: '',\n        section: '7.4.3.',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: 'ISBN: 978-0-470-03310-4',\n        software: '',\n    },\n    {\n        label: 'Double cleavage',\n        rxnCode: 'gChA@Icu@_PP!fH@H eM``fM`~b@#qTq qH Q[#!Ruwu~@Ha}GWK| !RGYi| !ROvL@Xqvz_@',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: '',\n        section: '7.4.3.',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: 'ISBN: 978-0-470-03310-4',\n        software: '',\n    },\n    {\n        label: 'Dithiophosphates fragmentation',\n        rxnCode: 'gGPmLPDSpPPiRZVj@~b`!gJPlLPDSpPPdtu@_QP fHT`P#qbqk qbqh qX#!RXp@@[C}cXp@@XqvrP` !RbOq~@Gx?bGt]v`H !RGWi|',\n        ionization: 'esi,ei',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 52',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Dithiophosphates fragmentation',\n        rxnCode: 'gGPmLPDSpPPiRZVj@~b`!gC`eE`DSpdiLtA@ eFB@HcA}D@#qbqk qbM qs#!RXp@@[C}cXp@@XqtrP` !RbOq~@Ha}G]jB !R@FL]~gp',\n        ionization: 'esi,ei',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 53',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Dithiophosphates fragmentation',\n        rxnCode: 'gGPmLPDSpPPiRZVj@~b`!gJPmLPDSpPQIRZV`H fH@Oj@#q`qk qpeH qX#!RXp@@[C}cXp@@XqtrP` !RbOq~@Gx?bGt]v`H !RG_i|',\n        ionization: 'esi,ei',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 54',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Displacement reaction ',\n        rxnCode: 'gCaALiRfhCJIxsHHADxH\\\\!fH@H eOH`fNZ`qaA@HgLN#qbq Qp qJ`#!R@Fq_[@@cG_K| !RGUi| !Rog~w?Quzo@',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '4.1',\n        description: 'Fig. 7.1.3 a.',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Displacement reaction ',\n        rxnCode: 'gJXA@YRgj`LhWmEFJFB\\\\TOlP!fH@H eO`BNZ`sfG@#qJDp Qp qJ`#!RWrL@Hu}lWrL]lkp !RG]i| !Rog~w?QuzO@',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '4.1',\n        description: 'Fig. 7.1.3 a.',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Displacement reaction ',\n        rxnCode: 'gJPACJUkTAeB|YBXN@PBIqQx!gBPAML^Jj@qfI`xA@HgMG` fH@H#qTnH qVl qH#!RWrL@HpAl@BL]|cp !R@K{|ey\\\\BG]i| !RG_i|',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '4.1',\n        description: 'Fig. 7.1.3 b.',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Displacement Reaction b.',\n        rxnCode: 'gJXA@IRUjPH!eM@fXvB eF`BLGtP#qlVH qrH ql#!R@Fp@XpAl@FL]Bgp !ROvL@XqwZO@ !R@FL]~gp',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '4.1',\n        description: 'Fig. 7',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Displacement Reaction b.',\n        rxnCode: 'gJQABYRmZ`LXTD@`!eM@fXvB eFH`fLGtQFDD@`#qMr` qNh Qd#!R@BL?Xs|\\\\OvL]xcp !RWrL@HquZO@ !R@BL]~gp',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '4.1',\n        description: 'Fig. 7',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Displacement Reaction a.',\n        rxnCode: 'gGYADEJSLuPGtT_nlK|!gChA@Icu@_PP eFHBND#qtSi qQ] Qx#!RbGvH@gx?_`BH_QtJo@ !Ruwu~@Ha}GUk| !R@FL]^gp',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '7.1.3',\n        description: 'Fig. 22 c. ',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Dioxolane fragmentation',\n        rxnCode: 'dclDB@iYRfUw\\\\kahHBj@CzI`!eFHBJD deTHB@RTfU]ih@I`Hz~`H@#IzAQirbWS IdP IzD[JI]L#!RIm~?ck^}|KuMswy?_g?po_B}|GspoQwR{@ !R@FL]fgp !RbOq~@Ha}b@JH@ha}bGvH?Ha}GXZB',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1002/jms.1963',\n        section: '',\n        description: 'Fig. 4',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Dioxolane fragmentation',\n        rxnCode: 'detDB@jYRfUwJxZB@h@H!eFHBJD daDHB@RTfUVyiZPB#IaLJfxYT Ql IXdziEP#!RIm~?ck^}|KuMswy?_g?po_B}GSKl !R@FL]fgp !RBGvh[AF?HBVDj?Jo@MX]Aep',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1039/C3AY40543E',\n        section: '',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'DB rearrangement',\n        rxnCode: 'eM@HvCzX@!eM@HvCzX@#Q[ Q^#!ROvL@XqvJO@ !R@FL?XqtzO@',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1016/j.jpha.2016.04.008',\n        section: '',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Cycloreversion',\n        rxnCode: 'gFp@DiTvjhB!eF@HhP eF@HhP eF@HhP#qbqk qn qY Qd#!R_g~w_K_}mwvw_AvRO@ !R@FL]Fkp !R@FL]Nkp !R@FL]~kp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '3',\n        description: 'Fig. 4.7',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive,negative',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Cyclization',\n        rxnCode: 'eM@jXzCNhh!eO@bXyjCNXh#Q[ Qg#!R_qL@DquJO@ !R?g~w?QuZo@',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: 'Mass-Frontier',\n    },\n    {\n        label: 'Charge Stabilization',\n        rxnCode: 'gCaAAIRVdCzB@!gCaAAiRVXROtD@#qbq qbq#!R@AL@[@@SGRj| !R?`BH@hc}GShB',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: 'Mass-Frontier',\n    },\n    {\n        label: 'Charge Remote Fragmentation',\n        rxnCode: 'gC`@Dij@~RcP!eF@HhP eF@HhP#qqb Ql qJ#!R@Fp?[@AcGXk| !R@FL]vkp !R@FL]^kp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '3',\n        description: 'Fig. 4.5',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive,negative',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Carbamates fragmentation',\n        rxnCode: 'gJXaLDiRYZ`Ohh@!eMhdiRVB eFHBLGtP#qbqh qbH qu#!R|Owp_Gy?|Gt]|mp !R@Fp@XqwZ?@ !R@FL]~gp',\n        ionization: 'esi,ei',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 16A & B',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Carbamates fragmentation',\n        rxnCode: 'gJXaLDiRYZ`Ohh@!eMhDRUB eFH`fLGtX#qbqh qbH qu#!R|Gwp_Gy?|Gt]|mp !R_wy?_atZ_@ !R@FL]~gp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 17',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Carbamates fragmentation',\n        rxnCode: 'gGXaLDiRYvj@~b`!gChaLDiRYhCzK@ eF@HhP#IaLJa qbq IF`#!Rwg~Pw[_]dArP_Qwrw@ !RdKw^_yA\\\\GSk\\\\ !R_wP]^op',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 18',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'COOH loss',\n        rxnCode: 'gOxaBDYR[fmjj@pb}C@!gBXA@IReYj@` eMDARVCzX@#qbqkx qi{ Qg#!RbOp~@H`}HMkZK}hoGPhB !RO`@@O`@~GUhB !R_pq?Dqvz?@',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1038/s41598-019-42777-8',\n        section: '',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'CO loss',\n        rxnCode: 'gOxaBDYR[fmjj@pb}C@!gJYABCJRkTA}C@ eFHPfzND#qbqkx qq_h Qd#!RypKgOSx@iJSKiLndG^KB !R_pq?Dw|L_qL]zop !R_pp]~op',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1038/s41598-019-42777-8',\n        section: '',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'CO elimination',\n        rxnCode: 'gCa@@dsPFRTZ@!eFHPfzND eF@HpYIE@#qJf qJ Ql#!RbOq~@Ha}G_JB !R@FL]Vkp !R@FL]^kp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '3',\n        description: 'Fig. 4.8',\n        kind: 'reaction',\n        web: '',\n        mode: 'negative',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'CO elimination',\n        rxnCode: 'gOq@@drm[UTA@!gKP@Di\\\\Zj@` eFHBND#qbqkx qY~h Qd#!RbOvH?Oy?bOvH__y?GPi\\\\ !R?g|_Fa}eTv\\\\]fcp !R@AL]^gp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '3',\n        description: 'Fig. 4.8',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'CO Elimination',\n        rxnCode: 'gCaA@IRWhCZZLtLG~s@!fHT`P eFHPfzND#Qg@ Qp Qd#!R_g}~_?A}G_H\\\\ !RGYi| !R@FL]nkp',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: 'Mass-Frontier',\n    },\n    {\n        label: 'Beta Remote Hydrogen rearrangment ',\n        rxnCode: 'gGPACJTkUPD!gJPACJUkTA@ fH@Oj@#qrLk qTqh qX#!R@AM?DpAl_vp@Dqtr_@ !R_qL@DpAl@AL]~cp !RGYi|',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: 'Mass-Frontier',\n    },\n    {\n        label: 'Aromatic elimination',\n        rxnCode: 'ded@@DiUUeiZ@hTZfh!gFp@DiTt@@B gC`@DiZDC@#IpdjFGiT qcUq IGiT#!RbGvw_X`B?g?~@K]}b@K~_?x@GWJ| !R?g~w@k_}m?vw@avZO@ !Rb@K~_xc}GPZ|',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '5.6',\n        description: 'Fig. 16',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive,negative',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Aminothiophosphates fragmentation',\n        rxnCode: 'gGXiMDOCSddajXCFEA@H@!gC`iHaxBX}HFLrB@P eF`BLD#qbqk qbu qK#!RXp@?XpAl[C|@Xqvr_@ !Ruwu~@Ha}GUk| !R@FL]~gp',\n        ionization: 'esi,ei',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 55',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Aminothiophosphates fragmentation',\n        rxnCode: 'dazDbLa@|LeJi~ij@OdrNbLD``D@!gC`hHaxQvPOhHcL``D@ eF``fLGtX eF@HxP#IaLJnXP qbu qK IxP#!R@FMc@C}c[@@@[C}l@FL]top !Ruwu~@Ha}GUk| !R@FL]~gp !R@FL]Qkp',\n        ionization: 'esi,ei',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 56',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Aminothiophosphates fragmentation',\n        rxnCode: 'gNxiMDOCSddauSPGrtNHphHA@!gJXiMDOCSGuHGtvQaPPB@ eF@HhP#qbqkx qbqh q_#!R[@@?[@AcXs|@[@AcG_I| !Ruwu~@Gx?bGt]Ngp !R@FL]Akp',\n        ionization: 'esi,ei',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 57',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Aminosulphate fragmentation',\n        rxnCode: 'gGXiMD@cSddaVhCz[@!gC`iH`DBXzpD eF`BLGtX#qqj\\\\ qqk QX#!R[@ACGq}l@DL_PqwR_@ !RysvHOSx@GYk| !R_pp]^op',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 63',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Aminosulphate fragmentation',\n        rxnCode: 'gGXiMD@cSddaVhCy[C@!gC`hH`DQuPH eF``fLGt\\\\#qbqk qbu qK#!R[C}c@@AlOvL@Xqvr_@ !Ruwu~@Ha}GYk| !R@FL]^gp',\n        ionization: 'esi,ei',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 64',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Aminodithiophosphate fragmentation',\n        rxnCode: 'gGYMC`DSphPIRfji@~`bLjB@P!gCiEEAxXHDqzPLYdD@` eFB@HcA}D@#qrYl qQl qs#!ROvL@Xs}cXpAlOqwRO@ !R_`BH_]]}GUk| !R@FL]~gp',\n        ionization: 'esi,ei',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 58',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Amines fragmentation',\n        rxnCode: 'gChA@IRfhB!eF`BLD eF@bXpP#qLZ qK Qd#!RpDp^_|B]GPj| !R@Kt]Vgp !R_qP]nop',\n        ionization: 'esi,ei',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 3',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Amines fragmentation',\n        rxnCode: 'gChA@IRfhCyBM@!eF``fLGtX eF@HhP#qbq Ql qQ#!R@Fp?[@AcGPi| !R@FL]vgp !R@FL]~kp',\n        ionization: 'esi,ei',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 4 ',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Amines fragmentation',\n        rxnCode: 'gJXA@IRij`OhH@!gChA@Icm@P fH@Oj@#qrM` qri a`#!Ruwu~@Ha}upH]Lop !Ruwu~@Ha}GUk| !RGWi|',\n        ionization: 'esi,ei',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 5',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Amides fragmentation',\n        rxnCode: 'gGYADEJSNuPD!gCiADEJSM@_QP eF@HhP#qbq_ qbq q{#!RbOrH_Wx@b@JH_QvJ@` !RbOq~@Ha}GSjB !R@FL]~kp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 10',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Amides fragmentation',\n        rxnCode: 'gJYADEJSKTAkLh!eMHbeIXH eF`BLFlJ@#qbqh qbH qu#!RxCw`[Ey?xEt]Bcp !R@Fp@?QwZ?@ !R@Gt]^gp',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 6',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Amides fragmentation',\n        rxnCode: 'gJYADEJSKTAkLh!eMHAITH eF``fLGtQVE@#qbqh qbH qu#!R|Gwp_Gy?|Gt]|cp !R_wy?_atZ_@ !R@FL]^gp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 7',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Amides fragmentation',\n        rxnCode: 'gCiADEJSM@P!fHT`P eMhDRVB#qbq qH Qg#!RbOq~@Ha}G_JB !RGQi| !R@Fp@Xquz_@',\n        ionization: 'esi,ei',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 8',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Amides fragmentation',\n        rxnCode: 'gJYADEJSKTA@!gCi@DDfZ@` fHT`P#qbsH qbs qH#!R|Owp_Gy?|Gt]Bcp !RbOq~@Ha}G]jB !RGWi|',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 9',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Acyl urea fragmentation',\n        rxnCode: 'dayDBDpFRTfUfjX@~QLr@!gJU@E`dru@_SX eMHbeIXH#IZbyAr@ IZnHP Qv#!Ro`BW?Hc|e{vHo[y_e?p]ThH !Ro`BH?I_|bKt]vhH !R_tq?Dqwz?@',\n        ionization: 'esi,ei',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 28',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Acyl urea fragmentation',\n        rxnCode: 'gGTaEaUJSNuHGrVZ@!eMhdYRVCz^@ eMhDRUB#qyuS qZp qyh#!RbOrH_Wx@b@JH_Qur`` !R@Fp@XqwZ_@ !R_wy?_auz_@',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 29',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Acyl urea fragmentation',\n        rxnCode: 'dayDBDpFRTf[VjX@~QHr@!gGTaEaUJSNuHGrVZ@ eF@HhP#IaLJfEP IaLJa IU`#!Rb@JH_Wx@_c~H@m]}bGt]|gp !RbOrH_Wx@b@JH_Qvz`` !R@FL]Akp',\n        ionization: 'esi,ei',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 30',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: '1,5-shift',\n        rxnCode: 'gJP@DiYXRWtL@!gJP@DiYXRWtL@#qbqh qfUH#!ROvp@[C}c@FL]Bop !R@Fp?[@AcOvL]nop',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '3',\n        description: 'Fig. 4.7',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive,negative',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: '1,4-elimination',\n        rxnCode: 'gC`@Dij@~RcP!eF@HhP eF@HhP#qVa Qd qq#!R@Fp?[@AcGXk| !R@FL]vkp !R@FL]^kp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '5.5',\n        description: 'Fig 15 a.',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive,negative',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: '1,4-elimination',\n        rxnCode: 'gC``Adej@~PcP!eFHBJD eFHBJD#qtQ qJ Qx#!R@FL@[@AcGTj| !R@FL]vgp !R@FL]^gp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '5.5',\n        description: 'Fig 15 c.',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive,negative',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: '1,4-elimination',\n        rxnCode: 'gCa@@dmPGrDZ@!eFHBJD eF@HhP#qNT qN Qd#!R_rq?Dw|lGSK| !R@FL]vgp !R@FL]~kp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '5.5',\n        description: 'Fig 15 d.',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive,negative',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: '1,3-shift',\n        rxnCode: 'gJP@DiYXRWtL@!gJP@DkVdCzJ@#qqU` qTqh#!R@Fp?[@AcOvL]\\\\op !ROvL@XpAl@FL]ncp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '3',\n        description: 'Fig. 4.7',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive,negative',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: '1,3-elimination',\n        rxnCode: 'gCa@@dmPGrDZ@!eFHBJD eF@HhP#qTq QX qq#!R@FL@[@AcGTj| !R@FL]vgp !R@FL]~kp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '5.5',\n        description: 'Fig 15 b.',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive,negative',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'α-Elimination',\n        rxnCode: 'eM@ghzCFZXN@P|@`!fHW@P eF@HhXqSApBG`D@#Q^ Qp Qd#!R_qL@DqwrO@ !RG[i| !R@AL]Vgp',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '4.1',\n        description: 'Fig. 7.1.4',\n        kind: 'reaction',\n        web: '',\n        mode: 'negative',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Aminosulphate fragmentation',\n        rxnCode: 'dcMDbLvD@Hr\\\\ddJfRtjmP@P@_If[@!eF``fLGt\\\\ deVD`Ia@BLdabRwBkRs@D#IaLJf{QVS qK IaLkmEYL#!R@m]}ux`BupJH_]]}_`CW?M\\\\B_`CW?Avb`` !R@FL]fgp !Ruwu~@Ha}bOq~Oxa}bKu~Oxa}GXX|',\n        ionization: 'esi,ei',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 64',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n];\n//# sourceMappingURL=defaultDatabase.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getDatabase = getDatabase;\nconst openchemlib_utils_1 = require(\"openchemlib-utils\");\nconst defaultDatabase_js_1 = require(\"./defaultDatabase.js\");\n/**\n * @description Get the default databases of reactions for positive and negative mode\n * @param {Object} options - Options for database selection\n * @param {('ionization'|'resonance'|'reaction')[]} [options.kind=['ionization','resonance','reaction']] - The kind of database to be used\n * @param {('esi'|'ei')[]} [options.ionizations=['esi','ei']] - The ionization technique to be used\n * @param {('positive'|'negative')[]} [options.modes=['positive','negative']] - The ionization mode to be used\n * @param {string} [options.dwar] - The dwar file to use. Default will use an included mass fragmentation database\n * @returns\n */\nfunction getDatabase(options = {}) {\n    const { kind = ['ionization', 'resonance', 'reaction'], ionizations = ['esi', 'ei'], modes = ['positive', 'negative'], dwar, } = options;\n    const fullDatabase = dwar ? (0, openchemlib_utils_1.parseDwar)(dwar).data : defaultDatabase_js_1.defaultDatabase;\n    const database = fullDatabase.filter((entry) => kind.some((k) => entry.kind.includes(k)) &&\n        ionizations.some((ik) => entry.ionization.split(',').includes(ik)) &&\n        modes.some((m) => entry.mode.split(',').includes(m)));\n    return database;\n}\n//# sourceMappingURL=getDatabase.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getMasses = getMasses;\n/**\n * @description get array of mz from fragmentation nodes\n * @param {Array} nodes valid nodes of fragmentation process\n * @returns {Array}  array of unique mz values\n\n */\nfunction getMasses(nodes) {\n    let masses = {};\n    for (const node of nodes) {\n        for (let molecule of node.molecules) {\n            if (molecule.info.mz) {\n                if (!masses[molecule.info.mz]) {\n                    masses[molecule.info.mz] = {\n                        ...molecule.info,\n                        molecules: [],\n                        minDepth: node.depth,\n                    };\n                }\n                masses[molecule.info.mz].molecules.push({\n                    idCode: molecule.idCode,\n                    molfile: molecule.molfile,\n                    depth: node.depth,\n                });\n                if (masses[molecule.info.mz].minDepth > node.depth) {\n                    masses[molecule.info.mz].minDepth = node.depth;\n                }\n            }\n        }\n    }\n    return Object.values(masses);\n}\n//# sourceMappingURL=getMasses.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.reactionFragmentation = reactionFragmentation;\nconst mf_parser_1 = require(\"mf-parser\");\nconst openchemlib_1 = __importDefault(require(\"openchemlib\"));\nconst openchemlib_utils_1 = require(\"openchemlib-utils\");\nconst getDatabase_1 = require(\"./database/getDatabase\");\nconst getMasses_1 = require(\"./utils/getMasses\");\n/**\n * @description Fragment a molecule by applying reactions from a custom database of reactions\n * @param {import('openchemlib').Molecule} oclMolecule - The OCL molecule to be fragmented\n * @param {Object}  [options={}]\n * @param {('esi'|'ei')[]}  [options.ionizations=['esi']] - The ionization technique to be used\n * @param {('positive'|'negative')[]}  [options.modes=['positive']] - The ionization mode to be used\n * @param {number}  [options.maxDepth=5] - The maximum depth of the overall fragmentation tree\n * @param {number}  [options.limitReactions=200] - The maximum number of reactions to be applied to each branch\n * @param {string}  [options.dwar] - The dwar entry to be used, if not provided, the default one will be used\n * @param {number}  [options.maxIonizations=1] - The maximum depth of the ionization tree\n * @param {number}  [options.minIonizations=1] - The minimum depth of the ionization tree\n * @param {number}  [options.minReactions=0] - The minimum depth of the reaction tree\n * @param {number}  [options.maxReactions=3] - The maximum depth of the reaction tree\n * @returns {object} In-Silico fragmentation results with the following properties:\n * - masses: array of monoisotopic masses\n * - trees: array of fragmentation trees\n * - validNodes: nodes without dead branches\n */\nfunction reactionFragmentation(oclMolecule, options = {}) {\n    const { ionizations = ['esi'], modes = ['positive'], dwar, maxDepth = 5, limitReactions = 200, minIonizations = 1, maxIonizations = 1, minReactions = 0, maxReactions = 3, } = options;\n    const reactions = new openchemlib_utils_1.Reactions(openchemlib_1.default, {\n        moleculeInfoCallback: (molecule) => {\n            // @ts-ignore\n            const mf = (0, openchemlib_utils_1.getMF)(molecule).mf;\n            const mfInfo = new mf_parser_1.MF(mf).getInfo();\n            return {\n                mf,\n                mw: mfInfo.mass,\n                em: mfInfo.monoisotopicMass,\n                mz: mfInfo.observedMonoisotopicMass,\n                charge: mfInfo.charge,\n            };\n        },\n        maxDepth,\n        limitReactions,\n        skipProcessed: true,\n    });\n    reactions.appendHead([oclMolecule]);\n    reactions.applyOneReactantReactions((0, getDatabase_1.getDatabase)({\n        kind: ['ionization'],\n        ionizations,\n        modes,\n        dwar,\n    }), {\n        min: minIonizations,\n        max: maxIonizations,\n    });\n    const reactionDb = (0, getDatabase_1.getDatabase)({\n        kind: ['reaction'],\n        ionizations,\n        modes,\n        dwar,\n    });\n    for (let i = 1; i <= maxReactions; i++) {\n        let min = 1;\n        if (minReactions < i + 1) {\n            min = 0;\n        }\n        reactions.applyOneReactantReactions(reactionDb, {\n            min,\n            max: 1,\n        });\n    }\n    const trees = reactions.trees;\n    const validNodes = reactions.getValidNodes();\n    const masses = (0, getMasses_1.getMasses)(validNodes);\n    return {\n        trees,\n        validNodes,\n        masses,\n        reactions,\n    };\n}\n//# sourceMappingURL=reactionFragmentation.js.map","/**\n * @license React\n * react-jsx-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n  REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\nfunction jsxProd(type, config, maybeKey) {\n  var key = null;\n  void 0 !== maybeKey && (key = \"\" + maybeKey);\n  void 0 !== config.key && (key = \"\" + config.key);\n  if (\"key\" in config) {\n    maybeKey = {};\n    for (var propName in config)\n      \"key\" !== propName && (maybeKey[propName] = config[propName]);\n  } else maybeKey = config;\n  config = maybeKey.ref;\n  return {\n    $$typeof: REACT_ELEMENT_TYPE,\n    type: type,\n    key: key,\n    ref: void 0 !== config ? config : null,\n    props: maybeKey\n  };\n}\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsxProd;\nexports.jsxs = jsxProd;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-jsx-runtime.production.js');\n} else {\n  module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","/**\n * @license React\n * react.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n  REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n  REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n  REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n  REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n  REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n  REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n  REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n  REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n  REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n  REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n  MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nfunction getIteratorFn(maybeIterable) {\n  if (null === maybeIterable || \"object\" !== typeof maybeIterable) return null;\n  maybeIterable =\n    (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||\n    maybeIterable[\"@@iterator\"];\n  return \"function\" === typeof maybeIterable ? maybeIterable : null;\n}\nvar ReactNoopUpdateQueue = {\n    isMounted: function () {\n      return !1;\n    },\n    enqueueForceUpdate: function () {},\n    enqueueReplaceState: function () {},\n    enqueueSetState: function () {}\n  },\n  assign = Object.assign,\n  emptyObject = {};\nfunction Component(props, context, updater) {\n  this.props = props;\n  this.context = context;\n  this.refs = emptyObject;\n  this.updater = updater || ReactNoopUpdateQueue;\n}\nComponent.prototype.isReactComponent = {};\nComponent.prototype.setState = function (partialState, callback) {\n  if (\n    \"object\" !== typeof partialState &&\n    \"function\" !== typeof partialState &&\n    null != partialState\n  )\n    throw Error(\n      \"takes an object of state variables to update or a function which returns an object of state variables.\"\n    );\n  this.updater.enqueueSetState(this, partialState, callback, \"setState\");\n};\nComponent.prototype.forceUpdate = function (callback) {\n  this.updater.enqueueForceUpdate(this, callback, \"forceUpdate\");\n};\nfunction ComponentDummy() {}\nComponentDummy.prototype = Component.prototype;\nfunction PureComponent(props, context, updater) {\n  this.props = props;\n  this.context = context;\n  this.refs = emptyObject;\n  this.updater = updater || ReactNoopUpdateQueue;\n}\nvar pureComponentPrototype = (PureComponent.prototype = new ComponentDummy());\npureComponentPrototype.constructor = PureComponent;\nassign(pureComponentPrototype, Component.prototype);\npureComponentPrototype.isPureReactComponent = !0;\nvar isArrayImpl = Array.isArray,\n  ReactSharedInternals = { H: null, A: null, T: null, S: null, V: null },\n  hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction ReactElement(type, key, self, source, owner, props) {\n  self = props.ref;\n  return {\n    $$typeof: REACT_ELEMENT_TYPE,\n    type: type,\n    key: key,\n    ref: void 0 !== self ? self : null,\n    props: props\n  };\n}\nfunction cloneAndReplaceKey(oldElement, newKey) {\n  return ReactElement(\n    oldElement.type,\n    newKey,\n    void 0,\n    void 0,\n    void 0,\n    oldElement.props\n  );\n}\nfunction isValidElement(object) {\n  return (\n    \"object\" === typeof object &&\n    null !== object &&\n    object.$$typeof === REACT_ELEMENT_TYPE\n  );\n}\nfunction escape(key) {\n  var escaperLookup = { \"=\": \"=0\", \":\": \"=2\" };\n  return (\n    \"$\" +\n    key.replace(/[=:]/g, function (match) {\n      return escaperLookup[match];\n    })\n  );\n}\nvar userProvidedKeyEscapeRegex = /\\/+/g;\nfunction getElementKey(element, index) {\n  return \"object\" === typeof element && null !== element && null != element.key\n    ? escape(\"\" + element.key)\n    : index.toString(36);\n}\nfunction noop$1() {}\nfunction resolveThenable(thenable) {\n  switch (thenable.status) {\n    case \"fulfilled\":\n      return thenable.value;\n    case \"rejected\":\n      throw thenable.reason;\n    default:\n      switch (\n        (\"string\" === typeof thenable.status\n          ? thenable.then(noop$1, noop$1)\n          : ((thenable.status = \"pending\"),\n            thenable.then(\n              function (fulfilledValue) {\n                \"pending\" === thenable.status &&\n                  ((thenable.status = \"fulfilled\"),\n                  (thenable.value = fulfilledValue));\n              },\n              function (error) {\n                \"pending\" === thenable.status &&\n                  ((thenable.status = \"rejected\"), (thenable.reason = error));\n              }\n            )),\n        thenable.status)\n      ) {\n        case \"fulfilled\":\n          return thenable.value;\n        case \"rejected\":\n          throw thenable.reason;\n      }\n  }\n  throw thenable;\n}\nfunction mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) {\n  var type = typeof children;\n  if (\"undefined\" === type || \"boolean\" === type) children = null;\n  var invokeCallback = !1;\n  if (null === children) invokeCallback = !0;\n  else\n    switch (type) {\n      case \"bigint\":\n      case \"string\":\n      case \"number\":\n        invokeCallback = !0;\n        break;\n      case \"object\":\n        switch (children.$$typeof) {\n          case REACT_ELEMENT_TYPE:\n          case REACT_PORTAL_TYPE:\n            invokeCallback = !0;\n            break;\n          case REACT_LAZY_TYPE:\n            return (\n              (invokeCallback = children._init),\n              mapIntoArray(\n                invokeCallback(children._payload),\n                array,\n                escapedPrefix,\n                nameSoFar,\n                callback\n              )\n            );\n        }\n    }\n  if (invokeCallback)\n    return (\n      (callback = callback(children)),\n      (invokeCallback =\n        \"\" === nameSoFar ? \".\" + getElementKey(children, 0) : nameSoFar),\n      isArrayImpl(callback)\n        ? ((escapedPrefix = \"\"),\n          null != invokeCallback &&\n            (escapedPrefix =\n              invokeCallback.replace(userProvidedKeyEscapeRegex, \"$&/\") + \"/\"),\n          mapIntoArray(callback, array, escapedPrefix, \"\", function (c) {\n            return c;\n          }))\n        : null != callback &&\n          (isValidElement(callback) &&\n            (callback = cloneAndReplaceKey(\n              callback,\n              escapedPrefix +\n                (null == callback.key ||\n                (children && children.key === callback.key)\n                  ? \"\"\n                  : (\"\" + callback.key).replace(\n                      userProvidedKeyEscapeRegex,\n                      \"$&/\"\n                    ) + \"/\") +\n                invokeCallback\n            )),\n          array.push(callback)),\n      1\n    );\n  invokeCallback = 0;\n  var nextNamePrefix = \"\" === nameSoFar ? \".\" : nameSoFar + \":\";\n  if (isArrayImpl(children))\n    for (var i = 0; i < children.length; i++)\n      (nameSoFar = children[i]),\n        (type = nextNamePrefix + getElementKey(nameSoFar, i)),\n        (invokeCallback += mapIntoArray(\n          nameSoFar,\n          array,\n          escapedPrefix,\n          type,\n          callback\n        ));\n  else if (((i = getIteratorFn(children)), \"function\" === typeof i))\n    for (\n      children = i.call(children), i = 0;\n      !(nameSoFar = children.next()).done;\n\n    )\n      (nameSoFar = nameSoFar.value),\n        (type = nextNamePrefix + getElementKey(nameSoFar, i++)),\n        (invokeCallback += mapIntoArray(\n          nameSoFar,\n          array,\n          escapedPrefix,\n          type,\n          callback\n        ));\n  else if (\"object\" === type) {\n    if (\"function\" === typeof children.then)\n      return mapIntoArray(\n        resolveThenable(children),\n        array,\n        escapedPrefix,\n        nameSoFar,\n        callback\n      );\n    array = String(children);\n    throw Error(\n      \"Objects are not valid as a React child (found: \" +\n        (\"[object Object]\" === array\n          ? \"object with keys {\" + Object.keys(children).join(\", \") + \"}\"\n          : array) +\n        \"). If you meant to render a collection of children, use an array instead.\"\n    );\n  }\n  return invokeCallback;\n}\nfunction mapChildren(children, func, context) {\n  if (null == children) return children;\n  var result = [],\n    count = 0;\n  mapIntoArray(children, result, \"\", \"\", function (child) {\n    return func.call(context, child, count++);\n  });\n  return result;\n}\nfunction lazyInitializer(payload) {\n  if (-1 === payload._status) {\n    var ctor = payload._result;\n    ctor = ctor();\n    ctor.then(\n      function (moduleObject) {\n        if (0 === payload._status || -1 === payload._status)\n          (payload._status = 1), (payload._result = moduleObject);\n      },\n      function (error) {\n        if (0 === payload._status || -1 === payload._status)\n          (payload._status = 2), (payload._result = error);\n      }\n    );\n    -1 === payload._status && ((payload._status = 0), (payload._result = ctor));\n  }\n  if (1 === payload._status) return payload._result.default;\n  throw payload._result;\n}\nvar reportGlobalError =\n  \"function\" === typeof reportError\n    ? reportError\n    : function (error) {\n        if (\n          \"object\" === typeof window &&\n          \"function\" === typeof window.ErrorEvent\n        ) {\n          var event = new window.ErrorEvent(\"error\", {\n            bubbles: !0,\n            cancelable: !0,\n            message:\n              \"object\" === typeof error &&\n              null !== error &&\n              \"string\" === typeof error.message\n                ? String(error.message)\n                : String(error),\n            error: error\n          });\n          if (!window.dispatchEvent(event)) return;\n        } else if (\n          \"object\" === typeof process &&\n          \"function\" === typeof process.emit\n        ) {\n          process.emit(\"uncaughtException\", error);\n          return;\n        }\n        console.error(error);\n      };\nfunction noop() {}\nexports.Children = {\n  map: mapChildren,\n  forEach: function (children, forEachFunc, forEachContext) {\n    mapChildren(\n      children,\n      function () {\n        forEachFunc.apply(this, arguments);\n      },\n      forEachContext\n    );\n  },\n  count: function (children) {\n    var n = 0;\n    mapChildren(children, function () {\n      n++;\n    });\n    return n;\n  },\n  toArray: function (children) {\n    return (\n      mapChildren(children, function (child) {\n        return child;\n      }) || []\n    );\n  },\n  only: function (children) {\n    if (!isValidElement(children))\n      throw Error(\n        \"React.Children.only expected to receive a single React element child.\"\n      );\n    return children;\n  }\n};\nexports.Component = Component;\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.Profiler = REACT_PROFILER_TYPE;\nexports.PureComponent = PureComponent;\nexports.StrictMode = REACT_STRICT_MODE_TYPE;\nexports.Suspense = REACT_SUSPENSE_TYPE;\nexports.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE =\n  ReactSharedInternals;\nexports.__COMPILER_RUNTIME = {\n  __proto__: null,\n  c: function (size) {\n    return ReactSharedInternals.H.useMemoCache(size);\n  }\n};\nexports.cache = function (fn) {\n  return function () {\n    return fn.apply(null, arguments);\n  };\n};\nexports.cloneElement = function (element, config, children) {\n  if (null === element || void 0 === element)\n    throw Error(\n      \"The argument must be a React element, but you passed \" + element + \".\"\n    );\n  var props = assign({}, element.props),\n    key = element.key,\n    owner = void 0;\n  if (null != config)\n    for (propName in (void 0 !== config.ref && (owner = void 0),\n    void 0 !== config.key && (key = \"\" + config.key),\n    config))\n      !hasOwnProperty.call(config, propName) ||\n        \"key\" === propName ||\n        \"__self\" === propName ||\n        \"__source\" === propName ||\n        (\"ref\" === propName && void 0 === config.ref) ||\n        (props[propName] = config[propName]);\n  var propName = arguments.length - 2;\n  if (1 === propName) props.children = children;\n  else if (1 < propName) {\n    for (var childArray = Array(propName), i = 0; i < propName; i++)\n      childArray[i] = arguments[i + 2];\n    props.children = childArray;\n  }\n  return ReactElement(element.type, key, void 0, void 0, owner, props);\n};\nexports.createContext = function (defaultValue) {\n  defaultValue = {\n    $$typeof: REACT_CONTEXT_TYPE,\n    _currentValue: defaultValue,\n    _currentValue2: defaultValue,\n    _threadCount: 0,\n    Provider: null,\n    Consumer: null\n  };\n  defaultValue.Provider = defaultValue;\n  defaultValue.Consumer = {\n    $$typeof: REACT_CONSUMER_TYPE,\n    _context: defaultValue\n  };\n  return defaultValue;\n};\nexports.createElement = function (type, config, children) {\n  var propName,\n    props = {},\n    key = null;\n  if (null != config)\n    for (propName in (void 0 !== config.key && (key = \"\" + config.key), config))\n      hasOwnProperty.call(config, propName) &&\n        \"key\" !== propName &&\n        \"__self\" !== propName &&\n        \"__source\" !== propName &&\n        (props[propName] = config[propName]);\n  var childrenLength = arguments.length - 2;\n  if (1 === childrenLength) props.children = children;\n  else if (1 < childrenLength) {\n    for (var childArray = Array(childrenLength), i = 0; i < childrenLength; i++)\n      childArray[i] = arguments[i + 2];\n    props.children = childArray;\n  }\n  if (type && type.defaultProps)\n    for (propName in ((childrenLength = type.defaultProps), childrenLength))\n      void 0 === props[propName] &&\n        (props[propName] = childrenLength[propName]);\n  return ReactElement(type, key, void 0, void 0, null, props);\n};\nexports.createRef = function () {\n  return { current: null };\n};\nexports.forwardRef = function (render) {\n  return { $$typeof: REACT_FORWARD_REF_TYPE, render: render };\n};\nexports.isValidElement = isValidElement;\nexports.lazy = function (ctor) {\n  return {\n    $$typeof: REACT_LAZY_TYPE,\n    _payload: { _status: -1, _result: ctor },\n    _init: lazyInitializer\n  };\n};\nexports.memo = function (type, compare) {\n  return {\n    $$typeof: REACT_MEMO_TYPE,\n    type: type,\n    compare: void 0 === compare ? null : compare\n  };\n};\nexports.startTransition = function (scope) {\n  var prevTransition = ReactSharedInternals.T,\n    currentTransition = {};\n  ReactSharedInternals.T = currentTransition;\n  try {\n    var returnValue = scope(),\n      onStartTransitionFinish = ReactSharedInternals.S;\n    null !== onStartTransitionFinish &&\n      onStartTransitionFinish(currentTransition, returnValue);\n    \"object\" === typeof returnValue &&\n      null !== returnValue &&\n      \"function\" === typeof returnValue.then &&\n      returnValue.then(noop, reportGlobalError);\n  } catch (error) {\n    reportGlobalError(error);\n  } finally {\n    ReactSharedInternals.T = prevTransition;\n  }\n};\nexports.unstable_useCacheRefresh = function () {\n  return ReactSharedInternals.H.useCacheRefresh();\n};\nexports.use = function (usable) {\n  return ReactSharedInternals.H.use(usable);\n};\nexports.useActionState = function (action, initialState, permalink) {\n  return ReactSharedInternals.H.useActionState(action, initialState, permalink);\n};\nexports.useCallback = function (callback, deps) {\n  return ReactSharedInternals.H.useCallback(callback, deps);\n};\nexports.useContext = function (Context) {\n  return ReactSharedInternals.H.useContext(Context);\n};\nexports.useDebugValue = function () {};\nexports.useDeferredValue = function (value, initialValue) {\n  return ReactSharedInternals.H.useDeferredValue(value, initialValue);\n};\nexports.useEffect = function (create, createDeps, update) {\n  var dispatcher = ReactSharedInternals.H;\n  if (\"function\" === typeof update)\n    throw Error(\n      \"useEffect CRUD overload is not enabled in this build of React.\"\n    );\n  return dispatcher.useEffect(create, createDeps);\n};\nexports.useId = function () {\n  return ReactSharedInternals.H.useId();\n};\nexports.useImperativeHandle = function (ref, create, deps) {\n  return ReactSharedInternals.H.useImperativeHandle(ref, create, deps);\n};\nexports.useInsertionEffect = function (create, deps) {\n  return ReactSharedInternals.H.useInsertionEffect(create, deps);\n};\nexports.useLayoutEffect = function (create, deps) {\n  return ReactSharedInternals.H.useLayoutEffect(create, deps);\n};\nexports.useMemo = function (create, deps) {\n  return ReactSharedInternals.H.useMemo(create, deps);\n};\nexports.useOptimistic = function (passthrough, reducer) {\n  return ReactSharedInternals.H.useOptimistic(passthrough, reducer);\n};\nexports.useReducer = function (reducer, initialArg, init) {\n  return ReactSharedInternals.H.useReducer(reducer, initialArg, init);\n};\nexports.useRef = function (initialValue) {\n  return ReactSharedInternals.H.useRef(initialValue);\n};\nexports.useState = function (initialState) {\n  return ReactSharedInternals.H.useState(initialState);\n};\nexports.useSyncExternalStore = function (\n  subscribe,\n  getSnapshot,\n  getServerSnapshot\n) {\n  return ReactSharedInternals.H.useSyncExternalStore(\n    subscribe,\n    getSnapshot,\n    getServerSnapshot\n  );\n};\nexports.useTransition = function () {\n  return ReactSharedInternals.H.useTransition();\n};\nexports.version = \"19.1.1\";\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react.production.js');\n} else {\n  module.exports = require('./cjs/react.development.js');\n}\n","/**\n * @license React\n * react-dom.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar React = require(\"react\");\nfunction formatProdErrorMessage(code) {\n  var url = \"https://react.dev/errors/\" + code;\n  if (1 < arguments.length) {\n    url += \"?args[]=\" + encodeURIComponent(arguments[1]);\n    for (var i = 2; i < arguments.length; i++)\n      url += \"&args[]=\" + encodeURIComponent(arguments[i]);\n  }\n  return (\n    \"Minified React error #\" +\n    code +\n    \"; visit \" +\n    url +\n    \" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"\n  );\n}\nfunction noop() {}\nvar Internals = {\n    d: {\n      f: noop,\n      r: function () {\n        throw Error(formatProdErrorMessage(522));\n      },\n      D: noop,\n      C: noop,\n      L: noop,\n      m: noop,\n      X: noop,\n      S: noop,\n      M: noop\n    },\n    p: 0,\n    findDOMNode: null\n  },\n  REACT_PORTAL_TYPE = Symbol.for(\"react.portal\");\nfunction createPortal$1(children, containerInfo, implementation) {\n  var key =\n    3 < arguments.length && void 0 !== arguments[3] ? arguments[3] : null;\n  return {\n    $$typeof: REACT_PORTAL_TYPE,\n    key: null == key ? null : \"\" + key,\n    children: children,\n    containerInfo: containerInfo,\n    implementation: implementation\n  };\n}\nvar ReactSharedInternals =\n  React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;\nfunction getCrossOriginStringAs(as, input) {\n  if (\"font\" === as) return \"\";\n  if (\"string\" === typeof input)\n    return \"use-credentials\" === input ? input : \"\";\n}\nexports.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE =\n  Internals;\nexports.createPortal = function (children, container) {\n  var key =\n    2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : null;\n  if (\n    !container ||\n    (1 !== container.nodeType &&\n      9 !== container.nodeType &&\n      11 !== container.nodeType)\n  )\n    throw Error(formatProdErrorMessage(299));\n  return createPortal$1(children, container, null, key);\n};\nexports.flushSync = function (fn) {\n  var previousTransition = ReactSharedInternals.T,\n    previousUpdatePriority = Internals.p;\n  try {\n    if (((ReactSharedInternals.T = null), (Internals.p = 2), fn)) return fn();\n  } finally {\n    (ReactSharedInternals.T = previousTransition),\n      (Internals.p = previousUpdatePriority),\n      Internals.d.f();\n  }\n};\nexports.preconnect = function (href, options) {\n  \"string\" === typeof href &&\n    (options\n      ? ((options = options.crossOrigin),\n        (options =\n          \"string\" === typeof options\n            ? \"use-credentials\" === options\n              ? options\n              : \"\"\n            : void 0))\n      : (options = null),\n    Internals.d.C(href, options));\n};\nexports.prefetchDNS = function (href) {\n  \"string\" === typeof href && Internals.d.D(href);\n};\nexports.preinit = function (href, options) {\n  if (\"string\" === typeof href && options && \"string\" === typeof options.as) {\n    var as = options.as,\n      crossOrigin = getCrossOriginStringAs(as, options.crossOrigin),\n      integrity =\n        \"string\" === typeof options.integrity ? options.integrity : void 0,\n      fetchPriority =\n        \"string\" === typeof options.fetchPriority\n          ? options.fetchPriority\n          : void 0;\n    \"style\" === as\n      ? Internals.d.S(\n          href,\n          \"string\" === typeof options.precedence ? options.precedence : void 0,\n          {\n            crossOrigin: crossOrigin,\n            integrity: integrity,\n            fetchPriority: fetchPriority\n          }\n        )\n      : \"script\" === as &&\n        Internals.d.X(href, {\n          crossOrigin: crossOrigin,\n          integrity: integrity,\n          fetchPriority: fetchPriority,\n          nonce: \"string\" === typeof options.nonce ? options.nonce : void 0\n        });\n  }\n};\nexports.preinitModule = function (href, options) {\n  if (\"string\" === typeof href)\n    if (\"object\" === typeof options && null !== options) {\n      if (null == options.as || \"script\" === options.as) {\n        var crossOrigin = getCrossOriginStringAs(\n          options.as,\n          options.crossOrigin\n        );\n        Internals.d.M(href, {\n          crossOrigin: crossOrigin,\n          integrity:\n            \"string\" === typeof options.integrity ? options.integrity : void 0,\n          nonce: \"string\" === typeof options.nonce ? options.nonce : void 0\n        });\n      }\n    } else null == options && Internals.d.M(href);\n};\nexports.preload = function (href, options) {\n  if (\n    \"string\" === typeof href &&\n    \"object\" === typeof options &&\n    null !== options &&\n    \"string\" === typeof options.as\n  ) {\n    var as = options.as,\n      crossOrigin = getCrossOriginStringAs(as, options.crossOrigin);\n    Internals.d.L(href, as, {\n      crossOrigin: crossOrigin,\n      integrity:\n        \"string\" === typeof options.integrity ? options.integrity : void 0,\n      nonce: \"string\" === typeof options.nonce ? options.nonce : void 0,\n      type: \"string\" === typeof options.type ? options.type : void 0,\n      fetchPriority:\n        \"string\" === typeof options.fetchPriority\n          ? options.fetchPriority\n          : void 0,\n      referrerPolicy:\n        \"string\" === typeof options.referrerPolicy\n          ? options.referrerPolicy\n          : void 0,\n      imageSrcSet:\n        \"string\" === typeof options.imageSrcSet ? options.imageSrcSet : void 0,\n      imageSizes:\n        \"string\" === typeof options.imageSizes ? options.imageSizes : void 0,\n      media: \"string\" === typeof options.media ? options.media : void 0\n    });\n  }\n};\nexports.preloadModule = function (href, options) {\n  if (\"string\" === typeof href)\n    if (options) {\n      var crossOrigin = getCrossOriginStringAs(options.as, options.crossOrigin);\n      Internals.d.m(href, {\n        as:\n          \"string\" === typeof options.as && \"script\" !== options.as\n            ? options.as\n            : void 0,\n        crossOrigin: crossOrigin,\n        integrity:\n          \"string\" === typeof options.integrity ? options.integrity : void 0\n      });\n    } else Internals.d.m(href);\n};\nexports.requestFormReset = function (form) {\n  Internals.d.r(form);\n};\nexports.unstable_batchedUpdates = function (fn, a) {\n  return fn(a);\n};\nexports.useFormState = function (action, initialState, permalink) {\n  return ReactSharedInternals.H.useFormState(action, initialState, permalink);\n};\nexports.useFormStatus = function () {\n  return ReactSharedInternals.H.useHostTransitionStatus();\n};\nexports.version = \"19.1.1\";\n","'use strict';\n\nfunction checkDCE() {\n  /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n  if (\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n  ) {\n    return;\n  }\n  if (process.env.NODE_ENV !== 'production') {\n    // This branch is unreachable because this function is only called\n    // in production, but the condition is true only in development.\n    // Therefore if the branch is still here, dead code elimination wasn't\n    // properly applied.\n    // Don't change the message. React DevTools relies on it. Also make sure\n    // this message doesn't occur elsewhere in this function, or it will cause\n    // a false positive.\n    throw new Error('^_^');\n  }\n  try {\n    // Verify that the code above has been dead code eliminated (DCE'd).\n    __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n  } catch (err) {\n    // DevTools shouldn't crash React, no matter what.\n    // We should still report in case we break this code.\n    console.error(err);\n  }\n}\n\nif (process.env.NODE_ENV === 'production') {\n  // DCE check should happen before ReactDOM bundle executes so that\n  // DevTools can report bad minification during injection.\n  checkDCE();\n  module.exports = require('./cjs/react-dom.production.js');\n} else {\n  module.exports = require('./cjs/react-dom.development.js');\n}\n","/**\n * @license React\n * scheduler.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nfunction push(heap, node) {\n  var index = heap.length;\n  heap.push(node);\n  a: for (; 0 < index; ) {\n    var parentIndex = (index - 1) >>> 1,\n      parent = heap[parentIndex];\n    if (0 < compare(parent, node))\n      (heap[parentIndex] = node), (heap[index] = parent), (index = parentIndex);\n    else break a;\n  }\n}\nfunction peek(heap) {\n  return 0 === heap.length ? null : heap[0];\n}\nfunction pop(heap) {\n  if (0 === heap.length) return null;\n  var first = heap[0],\n    last = heap.pop();\n  if (last !== first) {\n    heap[0] = last;\n    a: for (\n      var index = 0, length = heap.length, halfLength = length >>> 1;\n      index < halfLength;\n\n    ) {\n      var leftIndex = 2 * (index + 1) - 1,\n        left = heap[leftIndex],\n        rightIndex = leftIndex + 1,\n        right = heap[rightIndex];\n      if (0 > compare(left, last))\n        rightIndex < length && 0 > compare(right, left)\n          ? ((heap[index] = right),\n            (heap[rightIndex] = last),\n            (index = rightIndex))\n          : ((heap[index] = left),\n            (heap[leftIndex] = last),\n            (index = leftIndex));\n      else if (rightIndex < length && 0 > compare(right, last))\n        (heap[index] = right), (heap[rightIndex] = last), (index = rightIndex);\n      else break a;\n    }\n  }\n  return first;\n}\nfunction compare(a, b) {\n  var diff = a.sortIndex - b.sortIndex;\n  return 0 !== diff ? diff : a.id - b.id;\n}\nexports.unstable_now = void 0;\nif (\"object\" === typeof performance && \"function\" === typeof performance.now) {\n  var localPerformance = performance;\n  exports.unstable_now = function () {\n    return localPerformance.now();\n  };\n} else {\n  var localDate = Date,\n    initialTime = localDate.now();\n  exports.unstable_now = function () {\n    return localDate.now() - initialTime;\n  };\n}\nvar taskQueue = [],\n  timerQueue = [],\n  taskIdCounter = 1,\n  currentTask = null,\n  currentPriorityLevel = 3,\n  isPerformingWork = !1,\n  isHostCallbackScheduled = !1,\n  isHostTimeoutScheduled = !1,\n  needsPaint = !1,\n  localSetTimeout = \"function\" === typeof setTimeout ? setTimeout : null,\n  localClearTimeout = \"function\" === typeof clearTimeout ? clearTimeout : null,\n  localSetImmediate = \"undefined\" !== typeof setImmediate ? setImmediate : null;\nfunction advanceTimers(currentTime) {\n  for (var timer = peek(timerQueue); null !== timer; ) {\n    if (null === timer.callback) pop(timerQueue);\n    else if (timer.startTime <= currentTime)\n      pop(timerQueue),\n        (timer.sortIndex = timer.expirationTime),\n        push(taskQueue, timer);\n    else break;\n    timer = peek(timerQueue);\n  }\n}\nfunction handleTimeout(currentTime) {\n  isHostTimeoutScheduled = !1;\n  advanceTimers(currentTime);\n  if (!isHostCallbackScheduled)\n    if (null !== peek(taskQueue))\n      (isHostCallbackScheduled = !0),\n        isMessageLoopRunning ||\n          ((isMessageLoopRunning = !0), schedulePerformWorkUntilDeadline());\n    else {\n      var firstTimer = peek(timerQueue);\n      null !== firstTimer &&\n        requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime);\n    }\n}\nvar isMessageLoopRunning = !1,\n  taskTimeoutID = -1,\n  frameInterval = 5,\n  startTime = -1;\nfunction shouldYieldToHost() {\n  return needsPaint\n    ? !0\n    : exports.unstable_now() - startTime < frameInterval\n      ? !1\n      : !0;\n}\nfunction performWorkUntilDeadline() {\n  needsPaint = !1;\n  if (isMessageLoopRunning) {\n    var currentTime = exports.unstable_now();\n    startTime = currentTime;\n    var hasMoreWork = !0;\n    try {\n      a: {\n        isHostCallbackScheduled = !1;\n        isHostTimeoutScheduled &&\n          ((isHostTimeoutScheduled = !1),\n          localClearTimeout(taskTimeoutID),\n          (taskTimeoutID = -1));\n        isPerformingWork = !0;\n        var previousPriorityLevel = currentPriorityLevel;\n        try {\n          b: {\n            advanceTimers(currentTime);\n            for (\n              currentTask = peek(taskQueue);\n              null !== currentTask &&\n              !(\n                currentTask.expirationTime > currentTime && shouldYieldToHost()\n              );\n\n            ) {\n              var callback = currentTask.callback;\n              if (\"function\" === typeof callback) {\n                currentTask.callback = null;\n                currentPriorityLevel = currentTask.priorityLevel;\n                var continuationCallback = callback(\n                  currentTask.expirationTime <= currentTime\n                );\n                currentTime = exports.unstable_now();\n                if (\"function\" === typeof continuationCallback) {\n                  currentTask.callback = continuationCallback;\n                  advanceTimers(currentTime);\n                  hasMoreWork = !0;\n                  break b;\n                }\n                currentTask === peek(taskQueue) && pop(taskQueue);\n                advanceTimers(currentTime);\n              } else pop(taskQueue);\n              currentTask = peek(taskQueue);\n            }\n            if (null !== currentTask) hasMoreWork = !0;\n            else {\n              var firstTimer = peek(timerQueue);\n              null !== firstTimer &&\n                requestHostTimeout(\n                  handleTimeout,\n                  firstTimer.startTime - currentTime\n                );\n              hasMoreWork = !1;\n            }\n          }\n          break a;\n        } finally {\n          (currentTask = null),\n            (currentPriorityLevel = previousPriorityLevel),\n            (isPerformingWork = !1);\n        }\n        hasMoreWork = void 0;\n      }\n    } finally {\n      hasMoreWork\n        ? schedulePerformWorkUntilDeadline()\n        : (isMessageLoopRunning = !1);\n    }\n  }\n}\nvar schedulePerformWorkUntilDeadline;\nif (\"function\" === typeof localSetImmediate)\n  schedulePerformWorkUntilDeadline = function () {\n    localSetImmediate(performWorkUntilDeadline);\n  };\nelse if (\"undefined\" !== typeof MessageChannel) {\n  var channel = new MessageChannel(),\n    port = channel.port2;\n  channel.port1.onmessage = performWorkUntilDeadline;\n  schedulePerformWorkUntilDeadline = function () {\n    port.postMessage(null);\n  };\n} else\n  schedulePerformWorkUntilDeadline = function () {\n    localSetTimeout(performWorkUntilDeadline, 0);\n  };\nfunction requestHostTimeout(callback, ms) {\n  taskTimeoutID = localSetTimeout(function () {\n    callback(exports.unstable_now());\n  }, ms);\n}\nexports.unstable_IdlePriority = 5;\nexports.unstable_ImmediatePriority = 1;\nexports.unstable_LowPriority = 4;\nexports.unstable_NormalPriority = 3;\nexports.unstable_Profiling = null;\nexports.unstable_UserBlockingPriority = 2;\nexports.unstable_cancelCallback = function (task) {\n  task.callback = null;\n};\nexports.unstable_forceFrameRate = function (fps) {\n  0 > fps || 125 < fps\n    ? console.error(\n        \"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"\n      )\n    : (frameInterval = 0 < fps ? Math.floor(1e3 / fps) : 5);\n};\nexports.unstable_getCurrentPriorityLevel = function () {\n  return currentPriorityLevel;\n};\nexports.unstable_next = function (eventHandler) {\n  switch (currentPriorityLevel) {\n    case 1:\n    case 2:\n    case 3:\n      var priorityLevel = 3;\n      break;\n    default:\n      priorityLevel = currentPriorityLevel;\n  }\n  var previousPriorityLevel = currentPriorityLevel;\n  currentPriorityLevel = priorityLevel;\n  try {\n    return eventHandler();\n  } finally {\n    currentPriorityLevel = previousPriorityLevel;\n  }\n};\nexports.unstable_requestPaint = function () {\n  needsPaint = !0;\n};\nexports.unstable_runWithPriority = function (priorityLevel, eventHandler) {\n  switch (priorityLevel) {\n    case 1:\n    case 2:\n    case 3:\n    case 4:\n    case 5:\n      break;\n    default:\n      priorityLevel = 3;\n  }\n  var previousPriorityLevel = currentPriorityLevel;\n  currentPriorityLevel = priorityLevel;\n  try {\n    return eventHandler();\n  } finally {\n    currentPriorityLevel = previousPriorityLevel;\n  }\n};\nexports.unstable_scheduleCallback = function (\n  priorityLevel,\n  callback,\n  options\n) {\n  var currentTime = exports.unstable_now();\n  \"object\" === typeof options && null !== options\n    ? ((options = options.delay),\n      (options =\n        \"number\" === typeof options && 0 < options\n          ? currentTime + options\n          : currentTime))\n    : (options = currentTime);\n  switch (priorityLevel) {\n    case 1:\n      var timeout = -1;\n      break;\n    case 2:\n      timeout = 250;\n      break;\n    case 5:\n      timeout = 1073741823;\n      break;\n    case 4:\n      timeout = 1e4;\n      break;\n    default:\n      timeout = 5e3;\n  }\n  timeout = options + timeout;\n  priorityLevel = {\n    id: taskIdCounter++,\n    callback: callback,\n    priorityLevel: priorityLevel,\n    startTime: options,\n    expirationTime: timeout,\n    sortIndex: -1\n  };\n  options > currentTime\n    ? ((priorityLevel.sortIndex = options),\n      push(timerQueue, priorityLevel),\n      null === peek(taskQueue) &&\n        priorityLevel === peek(timerQueue) &&\n        (isHostTimeoutScheduled\n          ? (localClearTimeout(taskTimeoutID), (taskTimeoutID = -1))\n          : (isHostTimeoutScheduled = !0),\n        requestHostTimeout(handleTimeout, options - currentTime)))\n    : ((priorityLevel.sortIndex = timeout),\n      push(taskQueue, priorityLevel),\n      isHostCallbackScheduled ||\n        isPerformingWork ||\n        ((isHostCallbackScheduled = !0),\n        isMessageLoopRunning ||\n          ((isMessageLoopRunning = !0), schedulePerformWorkUntilDeadline())));\n  return priorityLevel;\n};\nexports.unstable_shouldYield = shouldYieldToHost;\nexports.unstable_wrapCallback = function (callback) {\n  var parentPriorityLevel = currentPriorityLevel;\n  return function () {\n    var previousPriorityLevel = currentPriorityLevel;\n    currentPriorityLevel = parentPriorityLevel;\n    try {\n      return callback.apply(this, arguments);\n    } finally {\n      currentPriorityLevel = previousPriorityLevel;\n    }\n  };\n};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/scheduler.production.js');\n} else {\n  module.exports = require('./cjs/scheduler.development.js');\n}\n","/**\n * @license React\n * react-dom-client.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n\"use strict\";\nvar Scheduler = require(\"scheduler\"),\n  React = require(\"react\"),\n  ReactDOM = require(\"react-dom\");\nfunction formatProdErrorMessage(code) {\n  var url = \"https://react.dev/errors/\" + code;\n  if (1 < arguments.length) {\n    url += \"?args[]=\" + encodeURIComponent(arguments[1]);\n    for (var i = 2; i < arguments.length; i++)\n      url += \"&args[]=\" + encodeURIComponent(arguments[i]);\n  }\n  return (\n    \"Minified React error #\" +\n    code +\n    \"; visit \" +\n    url +\n    \" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"\n  );\n}\nfunction isValidContainer(node) {\n  return !(\n    !node ||\n    (1 !== node.nodeType && 9 !== node.nodeType && 11 !== node.nodeType)\n  );\n}\nfunction getNearestMountedFiber(fiber) {\n  var node = fiber,\n    nearestMounted = fiber;\n  if (fiber.alternate) for (; node.return; ) node = node.return;\n  else {\n    fiber = node;\n    do\n      (node = fiber),\n        0 !== (node.flags & 4098) && (nearestMounted = node.return),\n        (fiber = node.return);\n    while (fiber);\n  }\n  return 3 === node.tag ? nearestMounted : null;\n}\nfunction getSuspenseInstanceFromFiber(fiber) {\n  if (13 === fiber.tag) {\n    var suspenseState = fiber.memoizedState;\n    null === suspenseState &&\n      ((fiber = fiber.alternate),\n      null !== fiber && (suspenseState = fiber.memoizedState));\n    if (null !== suspenseState) return suspenseState.dehydrated;\n  }\n  return null;\n}\nfunction assertIsMounted(fiber) {\n  if (getNearestMountedFiber(fiber) !== fiber)\n    throw Error(formatProdErrorMessage(188));\n}\nfunction findCurrentFiberUsingSlowPath(fiber) {\n  var alternate = fiber.alternate;\n  if (!alternate) {\n    alternate = getNearestMountedFiber(fiber);\n    if (null === alternate) throw Error(formatProdErrorMessage(188));\n    return alternate !== fiber ? null : fiber;\n  }\n  for (var a = fiber, b = alternate; ; ) {\n    var parentA = a.return;\n    if (null === parentA) break;\n    var parentB = parentA.alternate;\n    if (null === parentB) {\n      b = parentA.return;\n      if (null !== b) {\n        a = b;\n        continue;\n      }\n      break;\n    }\n    if (parentA.child === parentB.child) {\n      for (parentB = parentA.child; parentB; ) {\n        if (parentB === a) return assertIsMounted(parentA), fiber;\n        if (parentB === b) return assertIsMounted(parentA), alternate;\n        parentB = parentB.sibling;\n      }\n      throw Error(formatProdErrorMessage(188));\n    }\n    if (a.return !== b.return) (a = parentA), (b = parentB);\n    else {\n      for (var didFindChild = !1, child$0 = parentA.child; child$0; ) {\n        if (child$0 === a) {\n          didFindChild = !0;\n          a = parentA;\n          b = parentB;\n          break;\n        }\n        if (child$0 === b) {\n          didFindChild = !0;\n          b = parentA;\n          a = parentB;\n          break;\n        }\n        child$0 = child$0.sibling;\n      }\n      if (!didFindChild) {\n        for (child$0 = parentB.child; child$0; ) {\n          if (child$0 === a) {\n            didFindChild = !0;\n            a = parentB;\n            b = parentA;\n            break;\n          }\n          if (child$0 === b) {\n            didFindChild = !0;\n            b = parentB;\n            a = parentA;\n            break;\n          }\n          child$0 = child$0.sibling;\n        }\n        if (!didFindChild) throw Error(formatProdErrorMessage(189));\n      }\n    }\n    if (a.alternate !== b) throw Error(formatProdErrorMessage(190));\n  }\n  if (3 !== a.tag) throw Error(formatProdErrorMessage(188));\n  return a.stateNode.current === a ? fiber : alternate;\n}\nfunction findCurrentHostFiberImpl(node) {\n  var tag = node.tag;\n  if (5 === tag || 26 === tag || 27 === tag || 6 === tag) return node;\n  for (node = node.child; null !== node; ) {\n    tag = findCurrentHostFiberImpl(node);\n    if (null !== tag) return tag;\n    node = node.sibling;\n  }\n  return null;\n}\nvar assign = Object.assign,\n  REACT_LEGACY_ELEMENT_TYPE = Symbol.for(\"react.element\"),\n  REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n  REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n  REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n  REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n  REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n  REACT_PROVIDER_TYPE = Symbol.for(\"react.provider\"),\n  REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n  REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n  REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n  REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n  REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n  REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n  REACT_LAZY_TYPE = Symbol.for(\"react.lazy\");\nSymbol.for(\"react.scope\");\nvar REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\");\nSymbol.for(\"react.legacy_hidden\");\nSymbol.for(\"react.tracing_marker\");\nvar REACT_MEMO_CACHE_SENTINEL = Symbol.for(\"react.memo_cache_sentinel\");\nSymbol.for(\"react.view_transition\");\nvar MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nfunction getIteratorFn(maybeIterable) {\n  if (null === maybeIterable || \"object\" !== typeof maybeIterable) return null;\n  maybeIterable =\n    (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||\n    maybeIterable[\"@@iterator\"];\n  return \"function\" === typeof maybeIterable ? maybeIterable : null;\n}\nvar REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\");\nfunction getComponentNameFromType(type) {\n  if (null == type) return null;\n  if (\"function\" === typeof type)\n    return type.$$typeof === REACT_CLIENT_REFERENCE\n      ? null\n      : type.displayName || type.name || null;\n  if (\"string\" === typeof type) return type;\n  switch (type) {\n    case REACT_FRAGMENT_TYPE:\n      return \"Fragment\";\n    case REACT_PROFILER_TYPE:\n      return \"Profiler\";\n    case REACT_STRICT_MODE_TYPE:\n      return \"StrictMode\";\n    case REACT_SUSPENSE_TYPE:\n      return \"Suspense\";\n    case REACT_SUSPENSE_LIST_TYPE:\n      return \"SuspenseList\";\n    case REACT_ACTIVITY_TYPE:\n      return \"Activity\";\n  }\n  if (\"object\" === typeof type)\n    switch (type.$$typeof) {\n      case REACT_PORTAL_TYPE:\n        return \"Portal\";\n      case REACT_CONTEXT_TYPE:\n        return (type.displayName || \"Context\") + \".Provider\";\n      case REACT_CONSUMER_TYPE:\n        return (type._context.displayName || \"Context\") + \".Consumer\";\n      case REACT_FORWARD_REF_TYPE:\n        var innerType = type.render;\n        type = type.displayName;\n        type ||\n          ((type = innerType.displayName || innerType.name || \"\"),\n          (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n        return type;\n      case REACT_MEMO_TYPE:\n        return (\n          (innerType = type.displayName || null),\n          null !== innerType\n            ? innerType\n            : getComponentNameFromType(type.type) || \"Memo\"\n        );\n      case REACT_LAZY_TYPE:\n        innerType = type._payload;\n        type = type._init;\n        try {\n          return getComponentNameFromType(type(innerType));\n        } catch (x) {}\n    }\n  return null;\n}\nvar isArrayImpl = Array.isArray,\n  ReactSharedInternals =\n    React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n  ReactDOMSharedInternals =\n    ReactDOM.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n  sharedNotPendingObject = {\n    pending: !1,\n    data: null,\n    method: null,\n    action: null\n  },\n  valueStack = [],\n  index = -1;\nfunction createCursor(defaultValue) {\n  return { current: defaultValue };\n}\nfunction pop(cursor) {\n  0 > index ||\n    ((cursor.current = valueStack[index]), (valueStack[index] = null), index--);\n}\nfunction push(cursor, value) {\n  index++;\n  valueStack[index] = cursor.current;\n  cursor.current = value;\n}\nvar contextStackCursor = createCursor(null),\n  contextFiberStackCursor = createCursor(null),\n  rootInstanceStackCursor = createCursor(null),\n  hostTransitionProviderCursor = createCursor(null);\nfunction pushHostContainer(fiber, nextRootInstance) {\n  push(rootInstanceStackCursor, nextRootInstance);\n  push(contextFiberStackCursor, fiber);\n  push(contextStackCursor, null);\n  switch (nextRootInstance.nodeType) {\n    case 9:\n    case 11:\n      fiber = (fiber = nextRootInstance.documentElement)\n        ? (fiber = fiber.namespaceURI)\n          ? getOwnHostContext(fiber)\n          : 0\n        : 0;\n      break;\n    default:\n      if (\n        ((fiber = nextRootInstance.tagName),\n        (nextRootInstance = nextRootInstance.namespaceURI))\n      )\n        (nextRootInstance = getOwnHostContext(nextRootInstance)),\n          (fiber = getChildHostContextProd(nextRootInstance, fiber));\n      else\n        switch (fiber) {\n          case \"svg\":\n            fiber = 1;\n            break;\n          case \"math\":\n            fiber = 2;\n            break;\n          default:\n            fiber = 0;\n        }\n  }\n  pop(contextStackCursor);\n  push(contextStackCursor, fiber);\n}\nfunction popHostContainer() {\n  pop(contextStackCursor);\n  pop(contextFiberStackCursor);\n  pop(rootInstanceStackCursor);\n}\nfunction pushHostContext(fiber) {\n  null !== fiber.memoizedState && push(hostTransitionProviderCursor, fiber);\n  var context = contextStackCursor.current;\n  var JSCompiler_inline_result = getChildHostContextProd(context, fiber.type);\n  context !== JSCompiler_inline_result &&\n    (push(contextFiberStackCursor, fiber),\n    push(contextStackCursor, JSCompiler_inline_result));\n}\nfunction popHostContext(fiber) {\n  contextFiberStackCursor.current === fiber &&\n    (pop(contextStackCursor), pop(contextFiberStackCursor));\n  hostTransitionProviderCursor.current === fiber &&\n    (pop(hostTransitionProviderCursor),\n    (HostTransitionContext._currentValue = sharedNotPendingObject));\n}\nvar hasOwnProperty = Object.prototype.hasOwnProperty,\n  scheduleCallback$3 = Scheduler.unstable_scheduleCallback,\n  cancelCallback$1 = Scheduler.unstable_cancelCallback,\n  shouldYield = Scheduler.unstable_shouldYield,\n  requestPaint = Scheduler.unstable_requestPaint,\n  now = Scheduler.unstable_now,\n  getCurrentPriorityLevel = Scheduler.unstable_getCurrentPriorityLevel,\n  ImmediatePriority = Scheduler.unstable_ImmediatePriority,\n  UserBlockingPriority = Scheduler.unstable_UserBlockingPriority,\n  NormalPriority$1 = Scheduler.unstable_NormalPriority,\n  LowPriority = Scheduler.unstable_LowPriority,\n  IdlePriority = Scheduler.unstable_IdlePriority,\n  log$1 = Scheduler.log,\n  unstable_setDisableYieldValue = Scheduler.unstable_setDisableYieldValue,\n  rendererID = null,\n  injectedHook = null;\nfunction setIsStrictModeForDevtools(newIsStrictMode) {\n  \"function\" === typeof log$1 && unstable_setDisableYieldValue(newIsStrictMode);\n  if (injectedHook && \"function\" === typeof injectedHook.setStrictMode)\n    try {\n      injectedHook.setStrictMode(rendererID, newIsStrictMode);\n    } catch (err) {}\n}\nvar clz32 = Math.clz32 ? Math.clz32 : clz32Fallback,\n  log = Math.log,\n  LN2 = Math.LN2;\nfunction clz32Fallback(x) {\n  x >>>= 0;\n  return 0 === x ? 32 : (31 - ((log(x) / LN2) | 0)) | 0;\n}\nvar nextTransitionLane = 256,\n  nextRetryLane = 4194304;\nfunction getHighestPriorityLanes(lanes) {\n  var pendingSyncLanes = lanes & 42;\n  if (0 !== pendingSyncLanes) return pendingSyncLanes;\n  switch (lanes & -lanes) {\n    case 1:\n      return 1;\n    case 2:\n      return 2;\n    case 4:\n      return 4;\n    case 8:\n      return 8;\n    case 16:\n      return 16;\n    case 32:\n      return 32;\n    case 64:\n      return 64;\n    case 128:\n      return 128;\n    case 256:\n    case 512:\n    case 1024:\n    case 2048:\n    case 4096:\n    case 8192:\n    case 16384:\n    case 32768:\n    case 65536:\n    case 131072:\n    case 262144:\n    case 524288:\n    case 1048576:\n    case 2097152:\n      return lanes & 4194048;\n    case 4194304:\n    case 8388608:\n    case 16777216:\n    case 33554432:\n      return lanes & 62914560;\n    case 67108864:\n      return 67108864;\n    case 134217728:\n      return 134217728;\n    case 268435456:\n      return 268435456;\n    case 536870912:\n      return 536870912;\n    case 1073741824:\n      return 0;\n    default:\n      return lanes;\n  }\n}\nfunction getNextLanes(root, wipLanes, rootHasPendingCommit) {\n  var pendingLanes = root.pendingLanes;\n  if (0 === pendingLanes) return 0;\n  var nextLanes = 0,\n    suspendedLanes = root.suspendedLanes,\n    pingedLanes = root.pingedLanes;\n  root = root.warmLanes;\n  var nonIdlePendingLanes = pendingLanes & 134217727;\n  0 !== nonIdlePendingLanes\n    ? ((pendingLanes = nonIdlePendingLanes & ~suspendedLanes),\n      0 !== pendingLanes\n        ? (nextLanes = getHighestPriorityLanes(pendingLanes))\n        : ((pingedLanes &= nonIdlePendingLanes),\n          0 !== pingedLanes\n            ? (nextLanes = getHighestPriorityLanes(pingedLanes))\n            : rootHasPendingCommit ||\n              ((rootHasPendingCommit = nonIdlePendingLanes & ~root),\n              0 !== rootHasPendingCommit &&\n                (nextLanes = getHighestPriorityLanes(rootHasPendingCommit)))))\n    : ((nonIdlePendingLanes = pendingLanes & ~suspendedLanes),\n      0 !== nonIdlePendingLanes\n        ? (nextLanes = getHighestPriorityLanes(nonIdlePendingLanes))\n        : 0 !== pingedLanes\n          ? (nextLanes = getHighestPriorityLanes(pingedLanes))\n          : rootHasPendingCommit ||\n            ((rootHasPendingCommit = pendingLanes & ~root),\n            0 !== rootHasPendingCommit &&\n              (nextLanes = getHighestPriorityLanes(rootHasPendingCommit))));\n  return 0 === nextLanes\n    ? 0\n    : 0 !== wipLanes &&\n        wipLanes !== nextLanes &&\n        0 === (wipLanes & suspendedLanes) &&\n        ((suspendedLanes = nextLanes & -nextLanes),\n        (rootHasPendingCommit = wipLanes & -wipLanes),\n        suspendedLanes >= rootHasPendingCommit ||\n          (32 === suspendedLanes && 0 !== (rootHasPendingCommit & 4194048)))\n      ? wipLanes\n      : nextLanes;\n}\nfunction checkIfRootIsPrerendering(root, renderLanes) {\n  return (\n    0 ===\n    (root.pendingLanes &\n      ~(root.suspendedLanes & ~root.pingedLanes) &\n      renderLanes)\n  );\n}\nfunction computeExpirationTime(lane, currentTime) {\n  switch (lane) {\n    case 1:\n    case 2:\n    case 4:\n    case 8:\n    case 64:\n      return currentTime + 250;\n    case 16:\n    case 32:\n    case 128:\n    case 256:\n    case 512:\n    case 1024:\n    case 2048:\n    case 4096:\n    case 8192:\n    case 16384:\n    case 32768:\n    case 65536:\n    case 131072:\n    case 262144:\n    case 524288:\n    case 1048576:\n    case 2097152:\n      return currentTime + 5e3;\n    case 4194304:\n    case 8388608:\n    case 16777216:\n    case 33554432:\n      return -1;\n    case 67108864:\n    case 134217728:\n    case 268435456:\n    case 536870912:\n    case 1073741824:\n      return -1;\n    default:\n      return -1;\n  }\n}\nfunction claimNextTransitionLane() {\n  var lane = nextTransitionLane;\n  nextTransitionLane <<= 1;\n  0 === (nextTransitionLane & 4194048) && (nextTransitionLane = 256);\n  return lane;\n}\nfunction claimNextRetryLane() {\n  var lane = nextRetryLane;\n  nextRetryLane <<= 1;\n  0 === (nextRetryLane & 62914560) && (nextRetryLane = 4194304);\n  return lane;\n}\nfunction createLaneMap(initial) {\n  for (var laneMap = [], i = 0; 31 > i; i++) laneMap.push(initial);\n  return laneMap;\n}\nfunction markRootUpdated$1(root, updateLane) {\n  root.pendingLanes |= updateLane;\n  268435456 !== updateLane &&\n    ((root.suspendedLanes = 0), (root.pingedLanes = 0), (root.warmLanes = 0));\n}\nfunction markRootFinished(\n  root,\n  finishedLanes,\n  remainingLanes,\n  spawnedLane,\n  updatedLanes,\n  suspendedRetryLanes\n) {\n  var previouslyPendingLanes = root.pendingLanes;\n  root.pendingLanes = remainingLanes;\n  root.suspendedLanes = 0;\n  root.pingedLanes = 0;\n  root.warmLanes = 0;\n  root.expiredLanes &= remainingLanes;\n  root.entangledLanes &= remainingLanes;\n  root.errorRecoveryDisabledLanes &= remainingLanes;\n  root.shellSuspendCounter = 0;\n  var entanglements = root.entanglements,\n    expirationTimes = root.expirationTimes,\n    hiddenUpdates = root.hiddenUpdates;\n  for (\n    remainingLanes = previouslyPendingLanes & ~remainingLanes;\n    0 < remainingLanes;\n\n  ) {\n    var index$5 = 31 - clz32(remainingLanes),\n      lane = 1 << index$5;\n    entanglements[index$5] = 0;\n    expirationTimes[index$5] = -1;\n    var hiddenUpdatesForLane = hiddenUpdates[index$5];\n    if (null !== hiddenUpdatesForLane)\n      for (\n        hiddenUpdates[index$5] = null, index$5 = 0;\n        index$5 < hiddenUpdatesForLane.length;\n        index$5++\n      ) {\n        var update = hiddenUpdatesForLane[index$5];\n        null !== update && (update.lane &= -536870913);\n      }\n    remainingLanes &= ~lane;\n  }\n  0 !== spawnedLane && markSpawnedDeferredLane(root, spawnedLane, 0);\n  0 !== suspendedRetryLanes &&\n    0 === updatedLanes &&\n    0 !== root.tag &&\n    (root.suspendedLanes |=\n      suspendedRetryLanes & ~(previouslyPendingLanes & ~finishedLanes));\n}\nfunction markSpawnedDeferredLane(root, spawnedLane, entangledLanes) {\n  root.pendingLanes |= spawnedLane;\n  root.suspendedLanes &= ~spawnedLane;\n  var spawnedLaneIndex = 31 - clz32(spawnedLane);\n  root.entangledLanes |= spawnedLane;\n  root.entanglements[spawnedLaneIndex] =\n    root.entanglements[spawnedLaneIndex] |\n    1073741824 |\n    (entangledLanes & 4194090);\n}\nfunction markRootEntangled(root, entangledLanes) {\n  var rootEntangledLanes = (root.entangledLanes |= entangledLanes);\n  for (root = root.entanglements; rootEntangledLanes; ) {\n    var index$6 = 31 - clz32(rootEntangledLanes),\n      lane = 1 << index$6;\n    (lane & entangledLanes) | (root[index$6] & entangledLanes) &&\n      (root[index$6] |= entangledLanes);\n    rootEntangledLanes &= ~lane;\n  }\n}\nfunction getBumpedLaneForHydrationByLane(lane) {\n  switch (lane) {\n    case 2:\n      lane = 1;\n      break;\n    case 8:\n      lane = 4;\n      break;\n    case 32:\n      lane = 16;\n      break;\n    case 256:\n    case 512:\n    case 1024:\n    case 2048:\n    case 4096:\n    case 8192:\n    case 16384:\n    case 32768:\n    case 65536:\n    case 131072:\n    case 262144:\n    case 524288:\n    case 1048576:\n    case 2097152:\n    case 4194304:\n    case 8388608:\n    case 16777216:\n    case 33554432:\n      lane = 128;\n      break;\n    case 268435456:\n      lane = 134217728;\n      break;\n    default:\n      lane = 0;\n  }\n  return lane;\n}\nfunction lanesToEventPriority(lanes) {\n  lanes &= -lanes;\n  return 2 < lanes\n    ? 8 < lanes\n      ? 0 !== (lanes & 134217727)\n        ? 32\n        : 268435456\n      : 8\n    : 2;\n}\nfunction resolveUpdatePriority() {\n  var updatePriority = ReactDOMSharedInternals.p;\n  if (0 !== updatePriority) return updatePriority;\n  updatePriority = window.event;\n  return void 0 === updatePriority ? 32 : getEventPriority(updatePriority.type);\n}\nfunction runWithPriority(priority, fn) {\n  var previousPriority = ReactDOMSharedInternals.p;\n  try {\n    return (ReactDOMSharedInternals.p = priority), fn();\n  } finally {\n    ReactDOMSharedInternals.p = previousPriority;\n  }\n}\nvar randomKey = Math.random().toString(36).slice(2),\n  internalInstanceKey = \"__reactFiber$\" + randomKey,\n  internalPropsKey = \"__reactProps$\" + randomKey,\n  internalContainerInstanceKey = \"__reactContainer$\" + randomKey,\n  internalEventHandlersKey = \"__reactEvents$\" + randomKey,\n  internalEventHandlerListenersKey = \"__reactListeners$\" + randomKey,\n  internalEventHandlesSetKey = \"__reactHandles$\" + randomKey,\n  internalRootNodeResourcesKey = \"__reactResources$\" + randomKey,\n  internalHoistableMarker = \"__reactMarker$\" + randomKey;\nfunction detachDeletedInstance(node) {\n  delete node[internalInstanceKey];\n  delete node[internalPropsKey];\n  delete node[internalEventHandlersKey];\n  delete node[internalEventHandlerListenersKey];\n  delete node[internalEventHandlesSetKey];\n}\nfunction getClosestInstanceFromNode(targetNode) {\n  var targetInst = targetNode[internalInstanceKey];\n  if (targetInst) return targetInst;\n  for (var parentNode = targetNode.parentNode; parentNode; ) {\n    if (\n      (targetInst =\n        parentNode[internalContainerInstanceKey] ||\n        parentNode[internalInstanceKey])\n    ) {\n      parentNode = targetInst.alternate;\n      if (\n        null !== targetInst.child ||\n        (null !== parentNode && null !== parentNode.child)\n      )\n        for (\n          targetNode = getParentSuspenseInstance(targetNode);\n          null !== targetNode;\n\n        ) {\n          if ((parentNode = targetNode[internalInstanceKey])) return parentNode;\n          targetNode = getParentSuspenseInstance(targetNode);\n        }\n      return targetInst;\n    }\n    targetNode = parentNode;\n    parentNode = targetNode.parentNode;\n  }\n  return null;\n}\nfunction getInstanceFromNode(node) {\n  if (\n    (node = node[internalInstanceKey] || node[internalContainerInstanceKey])\n  ) {\n    var tag = node.tag;\n    if (\n      5 === tag ||\n      6 === tag ||\n      13 === tag ||\n      26 === tag ||\n      27 === tag ||\n      3 === tag\n    )\n      return node;\n  }\n  return null;\n}\nfunction getNodeFromInstance(inst) {\n  var tag = inst.tag;\n  if (5 === tag || 26 === tag || 27 === tag || 6 === tag) return inst.stateNode;\n  throw Error(formatProdErrorMessage(33));\n}\nfunction getResourcesFromRoot(root) {\n  var resources = root[internalRootNodeResourcesKey];\n  resources ||\n    (resources = root[internalRootNodeResourcesKey] =\n      { hoistableStyles: new Map(), hoistableScripts: new Map() });\n  return resources;\n}\nfunction markNodeAsHoistable(node) {\n  node[internalHoistableMarker] = !0;\n}\nvar allNativeEvents = new Set(),\n  registrationNameDependencies = {};\nfunction registerTwoPhaseEvent(registrationName, dependencies) {\n  registerDirectEvent(registrationName, dependencies);\n  registerDirectEvent(registrationName + \"Capture\", dependencies);\n}\nfunction registerDirectEvent(registrationName, dependencies) {\n  registrationNameDependencies[registrationName] = dependencies;\n  for (\n    registrationName = 0;\n    registrationName < dependencies.length;\n    registrationName++\n  )\n    allNativeEvents.add(dependencies[registrationName]);\n}\nvar VALID_ATTRIBUTE_NAME_REGEX = RegExp(\n    \"^[:A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD][:A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\\\\-.0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040]*$\"\n  ),\n  illegalAttributeNameCache = {},\n  validatedAttributeNameCache = {};\nfunction isAttributeNameSafe(attributeName) {\n  if (hasOwnProperty.call(validatedAttributeNameCache, attributeName))\n    return !0;\n  if (hasOwnProperty.call(illegalAttributeNameCache, attributeName)) return !1;\n  if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName))\n    return (validatedAttributeNameCache[attributeName] = !0);\n  illegalAttributeNameCache[attributeName] = !0;\n  return !1;\n}\nfunction setValueForAttribute(node, name, value) {\n  if (isAttributeNameSafe(name))\n    if (null === value) node.removeAttribute(name);\n    else {\n      switch (typeof value) {\n        case \"undefined\":\n        case \"function\":\n        case \"symbol\":\n          node.removeAttribute(name);\n          return;\n        case \"boolean\":\n          var prefix$8 = name.toLowerCase().slice(0, 5);\n          if (\"data-\" !== prefix$8 && \"aria-\" !== prefix$8) {\n            node.removeAttribute(name);\n            return;\n          }\n      }\n      node.setAttribute(name, \"\" + value);\n    }\n}\nfunction setValueForKnownAttribute(node, name, value) {\n  if (null === value) node.removeAttribute(name);\n  else {\n    switch (typeof value) {\n      case \"undefined\":\n      case \"function\":\n      case \"symbol\":\n      case \"boolean\":\n        node.removeAttribute(name);\n        return;\n    }\n    node.setAttribute(name, \"\" + value);\n  }\n}\nfunction setValueForNamespacedAttribute(node, namespace, name, value) {\n  if (null === value) node.removeAttribute(name);\n  else {\n    switch (typeof value) {\n      case \"undefined\":\n      case \"function\":\n      case \"symbol\":\n      case \"boolean\":\n        node.removeAttribute(name);\n        return;\n    }\n    node.setAttributeNS(namespace, name, \"\" + value);\n  }\n}\nvar prefix, suffix;\nfunction describeBuiltInComponentFrame(name) {\n  if (void 0 === prefix)\n    try {\n      throw Error();\n    } catch (x) {\n      var match = x.stack.trim().match(/\\n( *(at )?)/);\n      prefix = (match && match[1]) || \"\";\n      suffix =\n        -1 < x.stack.indexOf(\"\\n    at\")\n          ? \" (<anonymous>)\"\n          : -1 < x.stack.indexOf(\"@\")\n            ? \"@unknown:0:0\"\n            : \"\";\n    }\n  return \"\\n\" + prefix + name + suffix;\n}\nvar reentry = !1;\nfunction describeNativeComponentFrame(fn, construct) {\n  if (!fn || reentry) return \"\";\n  reentry = !0;\n  var previousPrepareStackTrace = Error.prepareStackTrace;\n  Error.prepareStackTrace = void 0;\n  try {\n    var RunInRootFrame = {\n      DetermineComponentFrameRoot: function () {\n        try {\n          if (construct) {\n            var Fake = function () {\n              throw Error();\n            };\n            Object.defineProperty(Fake.prototype, \"props\", {\n              set: function () {\n                throw Error();\n              }\n            });\n            if (\"object\" === typeof Reflect && Reflect.construct) {\n              try {\n                Reflect.construct(Fake, []);\n              } catch (x) {\n                var control = x;\n              }\n              Reflect.construct(fn, [], Fake);\n            } else {\n              try {\n                Fake.call();\n              } catch (x$9) {\n                control = x$9;\n              }\n              fn.call(Fake.prototype);\n            }\n          } else {\n            try {\n              throw Error();\n            } catch (x$10) {\n              control = x$10;\n            }\n            (Fake = fn()) &&\n              \"function\" === typeof Fake.catch &&\n              Fake.catch(function () {});\n          }\n        } catch (sample) {\n          if (sample && control && \"string\" === typeof sample.stack)\n            return [sample.stack, control.stack];\n        }\n        return [null, null];\n      }\n    };\n    RunInRootFrame.DetermineComponentFrameRoot.displayName =\n      \"DetermineComponentFrameRoot\";\n    var namePropDescriptor = Object.getOwnPropertyDescriptor(\n      RunInRootFrame.DetermineComponentFrameRoot,\n      \"name\"\n    );\n    namePropDescriptor &&\n      namePropDescriptor.configurable &&\n      Object.defineProperty(\n        RunInRootFrame.DetermineComponentFrameRoot,\n        \"name\",\n        { value: \"DetermineComponentFrameRoot\" }\n      );\n    var _RunInRootFrame$Deter = RunInRootFrame.DetermineComponentFrameRoot(),\n      sampleStack = _RunInRootFrame$Deter[0],\n      controlStack = _RunInRootFrame$Deter[1];\n    if (sampleStack && controlStack) {\n      var sampleLines = sampleStack.split(\"\\n\"),\n        controlLines = controlStack.split(\"\\n\");\n      for (\n        namePropDescriptor = RunInRootFrame = 0;\n        RunInRootFrame < sampleLines.length &&\n        !sampleLines[RunInRootFrame].includes(\"DetermineComponentFrameRoot\");\n\n      )\n        RunInRootFrame++;\n      for (\n        ;\n        namePropDescriptor < controlLines.length &&\n        !controlLines[namePropDescriptor].includes(\n          \"DetermineComponentFrameRoot\"\n        );\n\n      )\n        namePropDescriptor++;\n      if (\n        RunInRootFrame === sampleLines.length ||\n        namePropDescriptor === controlLines.length\n      )\n        for (\n          RunInRootFrame = sampleLines.length - 1,\n            namePropDescriptor = controlLines.length - 1;\n          1 <= RunInRootFrame &&\n          0 <= namePropDescriptor &&\n          sampleLines[RunInRootFrame] !== controlLines[namePropDescriptor];\n\n        )\n          namePropDescriptor--;\n      for (\n        ;\n        1 <= RunInRootFrame && 0 <= namePropDescriptor;\n        RunInRootFrame--, namePropDescriptor--\n      )\n        if (sampleLines[RunInRootFrame] !== controlLines[namePropDescriptor]) {\n          if (1 !== RunInRootFrame || 1 !== namePropDescriptor) {\n            do\n              if (\n                (RunInRootFrame--,\n                namePropDescriptor--,\n                0 > namePropDescriptor ||\n                  sampleLines[RunInRootFrame] !==\n                    controlLines[namePropDescriptor])\n              ) {\n                var frame =\n                  \"\\n\" +\n                  sampleLines[RunInRootFrame].replace(\" at new \", \" at \");\n                fn.displayName &&\n                  frame.includes(\"<anonymous>\") &&\n                  (frame = frame.replace(\"<anonymous>\", fn.displayName));\n                return frame;\n              }\n            while (1 <= RunInRootFrame && 0 <= namePropDescriptor);\n          }\n          break;\n        }\n    }\n  } finally {\n    (reentry = !1), (Error.prepareStackTrace = previousPrepareStackTrace);\n  }\n  return (previousPrepareStackTrace = fn ? fn.displayName || fn.name : \"\")\n    ? describeBuiltInComponentFrame(previousPrepareStackTrace)\n    : \"\";\n}\nfunction describeFiber(fiber) {\n  switch (fiber.tag) {\n    case 26:\n    case 27:\n    case 5:\n      return describeBuiltInComponentFrame(fiber.type);\n    case 16:\n      return describeBuiltInComponentFrame(\"Lazy\");\n    case 13:\n      return describeBuiltInComponentFrame(\"Suspense\");\n    case 19:\n      return describeBuiltInComponentFrame(\"SuspenseList\");\n    case 0:\n    case 15:\n      return describeNativeComponentFrame(fiber.type, !1);\n    case 11:\n      return describeNativeComponentFrame(fiber.type.render, !1);\n    case 1:\n      return describeNativeComponentFrame(fiber.type, !0);\n    case 31:\n      return describeBuiltInComponentFrame(\"Activity\");\n    default:\n      return \"\";\n  }\n}\nfunction getStackByFiberInDevAndProd(workInProgress) {\n  try {\n    var info = \"\";\n    do\n      (info += describeFiber(workInProgress)),\n        (workInProgress = workInProgress.return);\n    while (workInProgress);\n    return info;\n  } catch (x) {\n    return \"\\nError generating stack: \" + x.message + \"\\n\" + x.stack;\n  }\n}\nfunction getToStringValue(value) {\n  switch (typeof value) {\n    case \"bigint\":\n    case \"boolean\":\n    case \"number\":\n    case \"string\":\n    case \"undefined\":\n      return value;\n    case \"object\":\n      return value;\n    default:\n      return \"\";\n  }\n}\nfunction isCheckable(elem) {\n  var type = elem.type;\n  return (\n    (elem = elem.nodeName) &&\n    \"input\" === elem.toLowerCase() &&\n    (\"checkbox\" === type || \"radio\" === type)\n  );\n}\nfunction trackValueOnNode(node) {\n  var valueField = isCheckable(node) ? \"checked\" : \"value\",\n    descriptor = Object.getOwnPropertyDescriptor(\n      node.constructor.prototype,\n      valueField\n    ),\n    currentValue = \"\" + node[valueField];\n  if (\n    !node.hasOwnProperty(valueField) &&\n    \"undefined\" !== typeof descriptor &&\n    \"function\" === typeof descriptor.get &&\n    \"function\" === typeof descriptor.set\n  ) {\n    var get = descriptor.get,\n      set = descriptor.set;\n    Object.defineProperty(node, valueField, {\n      configurable: !0,\n      get: function () {\n        return get.call(this);\n      },\n      set: function (value) {\n        currentValue = \"\" + value;\n        set.call(this, value);\n      }\n    });\n    Object.defineProperty(node, valueField, {\n      enumerable: descriptor.enumerable\n    });\n    return {\n      getValue: function () {\n        return currentValue;\n      },\n      setValue: function (value) {\n        currentValue = \"\" + value;\n      },\n      stopTracking: function () {\n        node._valueTracker = null;\n        delete node[valueField];\n      }\n    };\n  }\n}\nfunction track(node) {\n  node._valueTracker || (node._valueTracker = trackValueOnNode(node));\n}\nfunction updateValueIfChanged(node) {\n  if (!node) return !1;\n  var tracker = node._valueTracker;\n  if (!tracker) return !0;\n  var lastValue = tracker.getValue();\n  var value = \"\";\n  node &&\n    (value = isCheckable(node)\n      ? node.checked\n        ? \"true\"\n        : \"false\"\n      : node.value);\n  node = value;\n  return node !== lastValue ? (tracker.setValue(node), !0) : !1;\n}\nfunction getActiveElement(doc) {\n  doc = doc || (\"undefined\" !== typeof document ? document : void 0);\n  if (\"undefined\" === typeof doc) return null;\n  try {\n    return doc.activeElement || doc.body;\n  } catch (e) {\n    return doc.body;\n  }\n}\nvar escapeSelectorAttributeValueInsideDoubleQuotesRegex = /[\\n\"\\\\]/g;\nfunction escapeSelectorAttributeValueInsideDoubleQuotes(value) {\n  return value.replace(\n    escapeSelectorAttributeValueInsideDoubleQuotesRegex,\n    function (ch) {\n      return \"\\\\\" + ch.charCodeAt(0).toString(16) + \" \";\n    }\n  );\n}\nfunction updateInput(\n  element,\n  value,\n  defaultValue,\n  lastDefaultValue,\n  checked,\n  defaultChecked,\n  type,\n  name\n) {\n  element.name = \"\";\n  null != type &&\n  \"function\" !== typeof type &&\n  \"symbol\" !== typeof type &&\n  \"boolean\" !== typeof type\n    ? (element.type = type)\n    : element.removeAttribute(\"type\");\n  if (null != value)\n    if (\"number\" === type) {\n      if ((0 === value && \"\" === element.value) || element.value != value)\n        element.value = \"\" + getToStringValue(value);\n    } else\n      element.value !== \"\" + getToStringValue(value) &&\n        (element.value = \"\" + getToStringValue(value));\n  else\n    (\"submit\" !== type && \"reset\" !== type) || element.removeAttribute(\"value\");\n  null != value\n    ? setDefaultValue(element, type, getToStringValue(value))\n    : null != defaultValue\n      ? setDefaultValue(element, type, getToStringValue(defaultValue))\n      : null != lastDefaultValue && element.removeAttribute(\"value\");\n  null == checked &&\n    null != defaultChecked &&\n    (element.defaultChecked = !!defaultChecked);\n  null != checked &&\n    (element.checked =\n      checked && \"function\" !== typeof checked && \"symbol\" !== typeof checked);\n  null != name &&\n  \"function\" !== typeof name &&\n  \"symbol\" !== typeof name &&\n  \"boolean\" !== typeof name\n    ? (element.name = \"\" + getToStringValue(name))\n    : element.removeAttribute(\"name\");\n}\nfunction initInput(\n  element,\n  value,\n  defaultValue,\n  checked,\n  defaultChecked,\n  type,\n  name,\n  isHydrating\n) {\n  null != type &&\n    \"function\" !== typeof type &&\n    \"symbol\" !== typeof type &&\n    \"boolean\" !== typeof type &&\n    (element.type = type);\n  if (null != value || null != defaultValue) {\n    if (\n      !(\n        (\"submit\" !== type && \"reset\" !== type) ||\n        (void 0 !== value && null !== value)\n      )\n    )\n      return;\n    defaultValue =\n      null != defaultValue ? \"\" + getToStringValue(defaultValue) : \"\";\n    value = null != value ? \"\" + getToStringValue(value) : defaultValue;\n    isHydrating || value === element.value || (element.value = value);\n    element.defaultValue = value;\n  }\n  checked = null != checked ? checked : defaultChecked;\n  checked =\n    \"function\" !== typeof checked && \"symbol\" !== typeof checked && !!checked;\n  element.checked = isHydrating ? element.checked : !!checked;\n  element.defaultChecked = !!checked;\n  null != name &&\n    \"function\" !== typeof name &&\n    \"symbol\" !== typeof name &&\n    \"boolean\" !== typeof name &&\n    (element.name = name);\n}\nfunction setDefaultValue(node, type, value) {\n  (\"number\" === type && getActiveElement(node.ownerDocument) === node) ||\n    node.defaultValue === \"\" + value ||\n    (node.defaultValue = \"\" + value);\n}\nfunction updateOptions(node, multiple, propValue, setDefaultSelected) {\n  node = node.options;\n  if (multiple) {\n    multiple = {};\n    for (var i = 0; i < propValue.length; i++)\n      multiple[\"$\" + propValue[i]] = !0;\n    for (propValue = 0; propValue < node.length; propValue++)\n      (i = multiple.hasOwnProperty(\"$\" + node[propValue].value)),\n        node[propValue].selected !== i && (node[propValue].selected = i),\n        i && setDefaultSelected && (node[propValue].defaultSelected = !0);\n  } else {\n    propValue = \"\" + getToStringValue(propValue);\n    multiple = null;\n    for (i = 0; i < node.length; i++) {\n      if (node[i].value === propValue) {\n        node[i].selected = !0;\n        setDefaultSelected && (node[i].defaultSelected = !0);\n        return;\n      }\n      null !== multiple || node[i].disabled || (multiple = node[i]);\n    }\n    null !== multiple && (multiple.selected = !0);\n  }\n}\nfunction updateTextarea(element, value, defaultValue) {\n  if (\n    null != value &&\n    ((value = \"\" + getToStringValue(value)),\n    value !== element.value && (element.value = value),\n    null == defaultValue)\n  ) {\n    element.defaultValue !== value && (element.defaultValue = value);\n    return;\n  }\n  element.defaultValue =\n    null != defaultValue ? \"\" + getToStringValue(defaultValue) : \"\";\n}\nfunction initTextarea(element, value, defaultValue, children) {\n  if (null == value) {\n    if (null != children) {\n      if (null != defaultValue) throw Error(formatProdErrorMessage(92));\n      if (isArrayImpl(children)) {\n        if (1 < children.length) throw Error(formatProdErrorMessage(93));\n        children = children[0];\n      }\n      defaultValue = children;\n    }\n    null == defaultValue && (defaultValue = \"\");\n    value = defaultValue;\n  }\n  defaultValue = getToStringValue(value);\n  element.defaultValue = defaultValue;\n  children = element.textContent;\n  children === defaultValue &&\n    \"\" !== children &&\n    null !== children &&\n    (element.value = children);\n}\nfunction setTextContent(node, text) {\n  if (text) {\n    var firstChild = node.firstChild;\n    if (\n      firstChild &&\n      firstChild === node.lastChild &&\n      3 === firstChild.nodeType\n    ) {\n      firstChild.nodeValue = text;\n      return;\n    }\n  }\n  node.textContent = text;\n}\nvar unitlessNumbers = new Set(\n  \"animationIterationCount aspectRatio borderImageOutset borderImageSlice borderImageWidth boxFlex boxFlexGroup boxOrdinalGroup columnCount columns flex flexGrow flexPositive flexShrink flexNegative flexOrder gridArea gridRow gridRowEnd gridRowSpan gridRowStart gridColumn gridColumnEnd gridColumnSpan gridColumnStart fontWeight lineClamp lineHeight opacity order orphans scale tabSize widows zIndex zoom fillOpacity floodOpacity stopOpacity strokeDasharray strokeDashoffset strokeMiterlimit strokeOpacity strokeWidth MozAnimationIterationCount MozBoxFlex MozBoxFlexGroup MozLineClamp msAnimationIterationCount msFlex msZoom msFlexGrow msFlexNegative msFlexOrder msFlexPositive msFlexShrink msGridColumn msGridColumnSpan msGridRow msGridRowSpan WebkitAnimationIterationCount WebkitBoxFlex WebKitBoxFlexGroup WebkitBoxOrdinalGroup WebkitColumnCount WebkitColumns WebkitFlex WebkitFlexGrow WebkitFlexPositive WebkitFlexShrink WebkitLineClamp\".split(\n    \" \"\n  )\n);\nfunction setValueForStyle(style, styleName, value) {\n  var isCustomProperty = 0 === styleName.indexOf(\"--\");\n  null == value || \"boolean\" === typeof value || \"\" === value\n    ? isCustomProperty\n      ? style.setProperty(styleName, \"\")\n      : \"float\" === styleName\n        ? (style.cssFloat = \"\")\n        : (style[styleName] = \"\")\n    : isCustomProperty\n      ? style.setProperty(styleName, value)\n      : \"number\" !== typeof value ||\n          0 === value ||\n          unitlessNumbers.has(styleName)\n        ? \"float\" === styleName\n          ? (style.cssFloat = value)\n          : (style[styleName] = (\"\" + value).trim())\n        : (style[styleName] = value + \"px\");\n}\nfunction setValueForStyles(node, styles, prevStyles) {\n  if (null != styles && \"object\" !== typeof styles)\n    throw Error(formatProdErrorMessage(62));\n  node = node.style;\n  if (null != prevStyles) {\n    for (var styleName in prevStyles)\n      !prevStyles.hasOwnProperty(styleName) ||\n        (null != styles && styles.hasOwnProperty(styleName)) ||\n        (0 === styleName.indexOf(\"--\")\n          ? node.setProperty(styleName, \"\")\n          : \"float\" === styleName\n            ? (node.cssFloat = \"\")\n            : (node[styleName] = \"\"));\n    for (var styleName$16 in styles)\n      (styleName = styles[styleName$16]),\n        styles.hasOwnProperty(styleName$16) &&\n          prevStyles[styleName$16] !== styleName &&\n          setValueForStyle(node, styleName$16, styleName);\n  } else\n    for (var styleName$17 in styles)\n      styles.hasOwnProperty(styleName$17) &&\n        setValueForStyle(node, styleName$17, styles[styleName$17]);\n}\nfunction isCustomElement(tagName) {\n  if (-1 === tagName.indexOf(\"-\")) return !1;\n  switch (tagName) {\n    case \"annotation-xml\":\n    case \"color-profile\":\n    case \"font-face\":\n    case \"font-face-src\":\n    case \"font-face-uri\":\n    case \"font-face-format\":\n    case \"font-face-name\":\n    case \"missing-glyph\":\n      return !1;\n    default:\n      return !0;\n  }\n}\nvar aliases = new Map([\n    [\"acceptCharset\", \"accept-charset\"],\n    [\"htmlFor\", \"for\"],\n    [\"httpEquiv\", \"http-equiv\"],\n    [\"crossOrigin\", \"crossorigin\"],\n    [\"accentHeight\", \"accent-height\"],\n    [\"alignmentBaseline\", \"alignment-baseline\"],\n    [\"arabicForm\", \"arabic-form\"],\n    [\"baselineShift\", \"baseline-shift\"],\n    [\"capHeight\", \"cap-height\"],\n    [\"clipPath\", \"clip-path\"],\n    [\"clipRule\", \"clip-rule\"],\n    [\"colorInterpolation\", \"color-interpolation\"],\n    [\"colorInterpolationFilters\", \"color-interpolation-filters\"],\n    [\"colorProfile\", \"color-profile\"],\n    [\"colorRendering\", \"color-rendering\"],\n    [\"dominantBaseline\", \"dominant-baseline\"],\n    [\"enableBackground\", \"enable-background\"],\n    [\"fillOpacity\", \"fill-opacity\"],\n    [\"fillRule\", \"fill-rule\"],\n    [\"floodColor\", \"flood-color\"],\n    [\"floodOpacity\", \"flood-opacity\"],\n    [\"fontFamily\", \"font-family\"],\n    [\"fontSize\", \"font-size\"],\n    [\"fontSizeAdjust\", \"font-size-adjust\"],\n    [\"fontStretch\", \"font-stretch\"],\n    [\"fontStyle\", \"font-style\"],\n    [\"fontVariant\", \"font-variant\"],\n    [\"fontWeight\", \"font-weight\"],\n    [\"glyphName\", \"glyph-name\"],\n    [\"glyphOrientationHorizontal\", \"glyph-orientation-horizontal\"],\n    [\"glyphOrientationVertical\", \"glyph-orientation-vertical\"],\n    [\"horizAdvX\", \"horiz-adv-x\"],\n    [\"horizOriginX\", \"horiz-origin-x\"],\n    [\"imageRendering\", \"image-rendering\"],\n    [\"letterSpacing\", \"letter-spacing\"],\n    [\"lightingColor\", \"lighting-color\"],\n    [\"markerEnd\", \"marker-end\"],\n    [\"markerMid\", \"marker-mid\"],\n    [\"markerStart\", \"marker-start\"],\n    [\"overlinePosition\", \"overline-position\"],\n    [\"overlineThickness\", \"overline-thickness\"],\n    [\"paintOrder\", \"paint-order\"],\n    [\"panose-1\", \"panose-1\"],\n    [\"pointerEvents\", \"pointer-events\"],\n    [\"renderingIntent\", \"rendering-intent\"],\n    [\"shapeRendering\", \"shape-rendering\"],\n    [\"stopColor\", \"stop-color\"],\n    [\"stopOpacity\", \"stop-opacity\"],\n    [\"strikethroughPosition\", \"strikethrough-position\"],\n    [\"strikethroughThickness\", \"strikethrough-thickness\"],\n    [\"strokeDasharray\", \"stroke-dasharray\"],\n    [\"strokeDashoffset\", \"stroke-dashoffset\"],\n    [\"strokeLinecap\", \"stroke-linecap\"],\n    [\"strokeLinejoin\", \"stroke-linejoin\"],\n    [\"strokeMiterlimit\", \"stroke-miterlimit\"],\n    [\"strokeOpacity\", \"stroke-opacity\"],\n    [\"strokeWidth\", \"stroke-width\"],\n    [\"textAnchor\", \"text-anchor\"],\n    [\"textDecoration\", \"text-decoration\"],\n    [\"textRendering\", \"text-rendering\"],\n    [\"transformOrigin\", \"transform-origin\"],\n    [\"underlinePosition\", \"underline-position\"],\n    [\"underlineThickness\", \"underline-thickness\"],\n    [\"unicodeBidi\", \"unicode-bidi\"],\n    [\"unicodeRange\", \"unicode-range\"],\n    [\"unitsPerEm\", \"units-per-em\"],\n    [\"vAlphabetic\", \"v-alphabetic\"],\n    [\"vHanging\", \"v-hanging\"],\n    [\"vIdeographic\", \"v-ideographic\"],\n    [\"vMathematical\", \"v-mathematical\"],\n    [\"vectorEffect\", \"vector-effect\"],\n    [\"vertAdvY\", \"vert-adv-y\"],\n    [\"vertOriginX\", \"vert-origin-x\"],\n    [\"vertOriginY\", \"vert-origin-y\"],\n    [\"wordSpacing\", \"word-spacing\"],\n    [\"writingMode\", \"writing-mode\"],\n    [\"xmlnsXlink\", \"xmlns:xlink\"],\n    [\"xHeight\", \"x-height\"]\n  ]),\n  isJavaScriptProtocol =\n    /^[\\u0000-\\u001F ]*j[\\r\\n\\t]*a[\\r\\n\\t]*v[\\r\\n\\t]*a[\\r\\n\\t]*s[\\r\\n\\t]*c[\\r\\n\\t]*r[\\r\\n\\t]*i[\\r\\n\\t]*p[\\r\\n\\t]*t[\\r\\n\\t]*:/i;\nfunction sanitizeURL(url) {\n  return isJavaScriptProtocol.test(\"\" + url)\n    ? \"javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')\"\n    : url;\n}\nvar currentReplayingEvent = null;\nfunction getEventTarget(nativeEvent) {\n  nativeEvent = nativeEvent.target || nativeEvent.srcElement || window;\n  nativeEvent.correspondingUseElement &&\n    (nativeEvent = nativeEvent.correspondingUseElement);\n  return 3 === nativeEvent.nodeType ? nativeEvent.parentNode : nativeEvent;\n}\nvar restoreTarget = null,\n  restoreQueue = null;\nfunction restoreStateOfTarget(target) {\n  var internalInstance = getInstanceFromNode(target);\n  if (internalInstance && (target = internalInstance.stateNode)) {\n    var props = target[internalPropsKey] || null;\n    a: switch (((target = internalInstance.stateNode), internalInstance.type)) {\n      case \"input\":\n        updateInput(\n          target,\n          props.value,\n          props.defaultValue,\n          props.defaultValue,\n          props.checked,\n          props.defaultChecked,\n          props.type,\n          props.name\n        );\n        internalInstance = props.name;\n        if (\"radio\" === props.type && null != internalInstance) {\n          for (props = target; props.parentNode; ) props = props.parentNode;\n          props = props.querySelectorAll(\n            'input[name=\"' +\n              escapeSelectorAttributeValueInsideDoubleQuotes(\n                \"\" + internalInstance\n              ) +\n              '\"][type=\"radio\"]'\n          );\n          for (\n            internalInstance = 0;\n            internalInstance < props.length;\n            internalInstance++\n          ) {\n            var otherNode = props[internalInstance];\n            if (otherNode !== target && otherNode.form === target.form) {\n              var otherProps = otherNode[internalPropsKey] || null;\n              if (!otherProps) throw Error(formatProdErrorMessage(90));\n              updateInput(\n                otherNode,\n                otherProps.value,\n                otherProps.defaultValue,\n                otherProps.defaultValue,\n                otherProps.checked,\n                otherProps.defaultChecked,\n                otherProps.type,\n                otherProps.name\n              );\n            }\n          }\n          for (\n            internalInstance = 0;\n            internalInstance < props.length;\n            internalInstance++\n          )\n            (otherNode = props[internalInstance]),\n              otherNode.form === target.form && updateValueIfChanged(otherNode);\n        }\n        break a;\n      case \"textarea\":\n        updateTextarea(target, props.value, props.defaultValue);\n        break a;\n      case \"select\":\n        (internalInstance = props.value),\n          null != internalInstance &&\n            updateOptions(target, !!props.multiple, internalInstance, !1);\n    }\n  }\n}\nvar isInsideEventHandler = !1;\nfunction batchedUpdates$1(fn, a, b) {\n  if (isInsideEventHandler) return fn(a, b);\n  isInsideEventHandler = !0;\n  try {\n    var JSCompiler_inline_result = fn(a);\n    return JSCompiler_inline_result;\n  } finally {\n    if (\n      ((isInsideEventHandler = !1),\n      null !== restoreTarget || null !== restoreQueue)\n    )\n      if (\n        (flushSyncWork$1(),\n        restoreTarget &&\n          ((a = restoreTarget),\n          (fn = restoreQueue),\n          (restoreQueue = restoreTarget = null),\n          restoreStateOfTarget(a),\n          fn))\n      )\n        for (a = 0; a < fn.length; a++) restoreStateOfTarget(fn[a]);\n  }\n}\nfunction getListener(inst, registrationName) {\n  var stateNode = inst.stateNode;\n  if (null === stateNode) return null;\n  var props = stateNode[internalPropsKey] || null;\n  if (null === props) return null;\n  stateNode = props[registrationName];\n  a: switch (registrationName) {\n    case \"onClick\":\n    case \"onClickCapture\":\n    case \"onDoubleClick\":\n    case \"onDoubleClickCapture\":\n    case \"onMouseDown\":\n    case \"onMouseDownCapture\":\n    case \"onMouseMove\":\n    case \"onMouseMoveCapture\":\n    case \"onMouseUp\":\n    case \"onMouseUpCapture\":\n    case \"onMouseEnter\":\n      (props = !props.disabled) ||\n        ((inst = inst.type),\n        (props = !(\n          \"button\" === inst ||\n          \"input\" === inst ||\n          \"select\" === inst ||\n          \"textarea\" === inst\n        )));\n      inst = !props;\n      break a;\n    default:\n      inst = !1;\n  }\n  if (inst) return null;\n  if (stateNode && \"function\" !== typeof stateNode)\n    throw Error(\n      formatProdErrorMessage(231, registrationName, typeof stateNode)\n    );\n  return stateNode;\n}\nvar canUseDOM = !(\n    \"undefined\" === typeof window ||\n    \"undefined\" === typeof window.document ||\n    \"undefined\" === typeof window.document.createElement\n  ),\n  passiveBrowserEventsSupported = !1;\nif (canUseDOM)\n  try {\n    var options = {};\n    Object.defineProperty(options, \"passive\", {\n      get: function () {\n        passiveBrowserEventsSupported = !0;\n      }\n    });\n    window.addEventListener(\"test\", options, options);\n    window.removeEventListener(\"test\", options, options);\n  } catch (e) {\n    passiveBrowserEventsSupported = !1;\n  }\nvar root = null,\n  startText = null,\n  fallbackText = null;\nfunction getData() {\n  if (fallbackText) return fallbackText;\n  var start,\n    startValue = startText,\n    startLength = startValue.length,\n    end,\n    endValue = \"value\" in root ? root.value : root.textContent,\n    endLength = endValue.length;\n  for (\n    start = 0;\n    start < startLength && startValue[start] === endValue[start];\n    start++\n  );\n  var minEnd = startLength - start;\n  for (\n    end = 1;\n    end <= minEnd &&\n    startValue[startLength - end] === endValue[endLength - end];\n    end++\n  );\n  return (fallbackText = endValue.slice(start, 1 < end ? 1 - end : void 0));\n}\nfunction getEventCharCode(nativeEvent) {\n  var keyCode = nativeEvent.keyCode;\n  \"charCode\" in nativeEvent\n    ? ((nativeEvent = nativeEvent.charCode),\n      0 === nativeEvent && 13 === keyCode && (nativeEvent = 13))\n    : (nativeEvent = keyCode);\n  10 === nativeEvent && (nativeEvent = 13);\n  return 32 <= nativeEvent || 13 === nativeEvent ? nativeEvent : 0;\n}\nfunction functionThatReturnsTrue() {\n  return !0;\n}\nfunction functionThatReturnsFalse() {\n  return !1;\n}\nfunction createSyntheticEvent(Interface) {\n  function SyntheticBaseEvent(\n    reactName,\n    reactEventType,\n    targetInst,\n    nativeEvent,\n    nativeEventTarget\n  ) {\n    this._reactName = reactName;\n    this._targetInst = targetInst;\n    this.type = reactEventType;\n    this.nativeEvent = nativeEvent;\n    this.target = nativeEventTarget;\n    this.currentTarget = null;\n    for (var propName in Interface)\n      Interface.hasOwnProperty(propName) &&\n        ((reactName = Interface[propName]),\n        (this[propName] = reactName\n          ? reactName(nativeEvent)\n          : nativeEvent[propName]));\n    this.isDefaultPrevented = (\n      null != nativeEvent.defaultPrevented\n        ? nativeEvent.defaultPrevented\n        : !1 === nativeEvent.returnValue\n    )\n      ? functionThatReturnsTrue\n      : functionThatReturnsFalse;\n    this.isPropagationStopped = functionThatReturnsFalse;\n    return this;\n  }\n  assign(SyntheticBaseEvent.prototype, {\n    preventDefault: function () {\n      this.defaultPrevented = !0;\n      var event = this.nativeEvent;\n      event &&\n        (event.preventDefault\n          ? event.preventDefault()\n          : \"unknown\" !== typeof event.returnValue && (event.returnValue = !1),\n        (this.isDefaultPrevented = functionThatReturnsTrue));\n    },\n    stopPropagation: function () {\n      var event = this.nativeEvent;\n      event &&\n        (event.stopPropagation\n          ? event.stopPropagation()\n          : \"unknown\" !== typeof event.cancelBubble &&\n            (event.cancelBubble = !0),\n        (this.isPropagationStopped = functionThatReturnsTrue));\n    },\n    persist: function () {},\n    isPersistent: functionThatReturnsTrue\n  });\n  return SyntheticBaseEvent;\n}\nvar EventInterface = {\n    eventPhase: 0,\n    bubbles: 0,\n    cancelable: 0,\n    timeStamp: function (event) {\n      return event.timeStamp || Date.now();\n    },\n    defaultPrevented: 0,\n    isTrusted: 0\n  },\n  SyntheticEvent = createSyntheticEvent(EventInterface),\n  UIEventInterface = assign({}, EventInterface, { view: 0, detail: 0 }),\n  SyntheticUIEvent = createSyntheticEvent(UIEventInterface),\n  lastMovementX,\n  lastMovementY,\n  lastMouseEvent,\n  MouseEventInterface = assign({}, UIEventInterface, {\n    screenX: 0,\n    screenY: 0,\n    clientX: 0,\n    clientY: 0,\n    pageX: 0,\n    pageY: 0,\n    ctrlKey: 0,\n    shiftKey: 0,\n    altKey: 0,\n    metaKey: 0,\n    getModifierState: getEventModifierState,\n    button: 0,\n    buttons: 0,\n    relatedTarget: function (event) {\n      return void 0 === event.relatedTarget\n        ? event.fromElement === event.srcElement\n          ? event.toElement\n          : event.fromElement\n        : event.relatedTarget;\n    },\n    movementX: function (event) {\n      if (\"movementX\" in event) return event.movementX;\n      event !== lastMouseEvent &&\n        (lastMouseEvent && \"mousemove\" === event.type\n          ? ((lastMovementX = event.screenX - lastMouseEvent.screenX),\n            (lastMovementY = event.screenY - lastMouseEvent.screenY))\n          : (lastMovementY = lastMovementX = 0),\n        (lastMouseEvent = event));\n      return lastMovementX;\n    },\n    movementY: function (event) {\n      return \"movementY\" in event ? event.movementY : lastMovementY;\n    }\n  }),\n  SyntheticMouseEvent = createSyntheticEvent(MouseEventInterface),\n  DragEventInterface = assign({}, MouseEventInterface, { dataTransfer: 0 }),\n  SyntheticDragEvent = createSyntheticEvent(DragEventInterface),\n  FocusEventInterface = assign({}, UIEventInterface, { relatedTarget: 0 }),\n  SyntheticFocusEvent = createSyntheticEvent(FocusEventInterface),\n  AnimationEventInterface = assign({}, EventInterface, {\n    animationName: 0,\n    elapsedTime: 0,\n    pseudoElement: 0\n  }),\n  SyntheticAnimationEvent = createSyntheticEvent(AnimationEventInterface),\n  ClipboardEventInterface = assign({}, EventInterface, {\n    clipboardData: function (event) {\n      return \"clipboardData\" in event\n        ? event.clipboardData\n        : window.clipboardData;\n    }\n  }),\n  SyntheticClipboardEvent = createSyntheticEvent(ClipboardEventInterface),\n  CompositionEventInterface = assign({}, EventInterface, { data: 0 }),\n  SyntheticCompositionEvent = createSyntheticEvent(CompositionEventInterface),\n  normalizeKey = {\n    Esc: \"Escape\",\n    Spacebar: \" \",\n    Left: \"ArrowLeft\",\n    Up: \"ArrowUp\",\n    Right: \"ArrowRight\",\n    Down: \"ArrowDown\",\n    Del: \"Delete\",\n    Win: \"OS\",\n    Menu: \"ContextMenu\",\n    Apps: \"ContextMenu\",\n    Scroll: \"ScrollLock\",\n    MozPrintableKey: \"Unidentified\"\n  },\n  translateToKey = {\n    8: \"Backspace\",\n    9: \"Tab\",\n    12: \"Clear\",\n    13: \"Enter\",\n    16: \"Shift\",\n    17: \"Control\",\n    18: \"Alt\",\n    19: \"Pause\",\n    20: \"CapsLock\",\n    27: \"Escape\",\n    32: \" \",\n    33: \"PageUp\",\n    34: \"PageDown\",\n    35: \"End\",\n    36: \"Home\",\n    37: \"ArrowLeft\",\n    38: \"ArrowUp\",\n    39: \"ArrowRight\",\n    40: \"ArrowDown\",\n    45: \"Insert\",\n    46: \"Delete\",\n    112: \"F1\",\n    113: \"F2\",\n    114: \"F3\",\n    115: \"F4\",\n    116: \"F5\",\n    117: \"F6\",\n    118: \"F7\",\n    119: \"F8\",\n    120: \"F9\",\n    121: \"F10\",\n    122: \"F11\",\n    123: \"F12\",\n    144: \"NumLock\",\n    145: \"ScrollLock\",\n    224: \"Meta\"\n  },\n  modifierKeyToProp = {\n    Alt: \"altKey\",\n    Control: \"ctrlKey\",\n    Meta: \"metaKey\",\n    Shift: \"shiftKey\"\n  };\nfunction modifierStateGetter(keyArg) {\n  var nativeEvent = this.nativeEvent;\n  return nativeEvent.getModifierState\n    ? nativeEvent.getModifierState(keyArg)\n    : (keyArg = modifierKeyToProp[keyArg])\n      ? !!nativeEvent[keyArg]\n      : !1;\n}\nfunction getEventModifierState() {\n  return modifierStateGetter;\n}\nvar KeyboardEventInterface = assign({}, UIEventInterface, {\n    key: function (nativeEvent) {\n      if (nativeEvent.key) {\n        var key = normalizeKey[nativeEvent.key] || nativeEvent.key;\n        if (\"Unidentified\" !== key) return key;\n      }\n      return \"keypress\" === nativeEvent.type\n        ? ((nativeEvent = getEventCharCode(nativeEvent)),\n          13 === nativeEvent ? \"Enter\" : String.fromCharCode(nativeEvent))\n        : \"keydown\" === nativeEvent.type || \"keyup\" === nativeEvent.type\n          ? translateToKey[nativeEvent.keyCode] || \"Unidentified\"\n          : \"\";\n    },\n    code: 0,\n    location: 0,\n    ctrlKey: 0,\n    shiftKey: 0,\n    altKey: 0,\n    metaKey: 0,\n    repeat: 0,\n    locale: 0,\n    getModifierState: getEventModifierState,\n    charCode: function (event) {\n      return \"keypress\" === event.type ? getEventCharCode(event) : 0;\n    },\n    keyCode: function (event) {\n      return \"keydown\" === event.type || \"keyup\" === event.type\n        ? event.keyCode\n        : 0;\n    },\n    which: function (event) {\n      return \"keypress\" === event.type\n        ? getEventCharCode(event)\n        : \"keydown\" === event.type || \"keyup\" === event.type\n          ? event.keyCode\n          : 0;\n    }\n  }),\n  SyntheticKeyboardEvent = createSyntheticEvent(KeyboardEventInterface),\n  PointerEventInterface = assign({}, MouseEventInterface, {\n    pointerId: 0,\n    width: 0,\n    height: 0,\n    pressure: 0,\n    tangentialPressure: 0,\n    tiltX: 0,\n    tiltY: 0,\n    twist: 0,\n    pointerType: 0,\n    isPrimary: 0\n  }),\n  SyntheticPointerEvent = createSyntheticEvent(PointerEventInterface),\n  TouchEventInterface = assign({}, UIEventInterface, {\n    touches: 0,\n    targetTouches: 0,\n    changedTouches: 0,\n    altKey: 0,\n    metaKey: 0,\n    ctrlKey: 0,\n    shiftKey: 0,\n    getModifierState: getEventModifierState\n  }),\n  SyntheticTouchEvent = createSyntheticEvent(TouchEventInterface),\n  TransitionEventInterface = assign({}, EventInterface, {\n    propertyName: 0,\n    elapsedTime: 0,\n    pseudoElement: 0\n  }),\n  SyntheticTransitionEvent = createSyntheticEvent(TransitionEventInterface),\n  WheelEventInterface = assign({}, MouseEventInterface, {\n    deltaX: function (event) {\n      return \"deltaX\" in event\n        ? event.deltaX\n        : \"wheelDeltaX\" in event\n          ? -event.wheelDeltaX\n          : 0;\n    },\n    deltaY: function (event) {\n      return \"deltaY\" in event\n        ? event.deltaY\n        : \"wheelDeltaY\" in event\n          ? -event.wheelDeltaY\n          : \"wheelDelta\" in event\n            ? -event.wheelDelta\n            : 0;\n    },\n    deltaZ: 0,\n    deltaMode: 0\n  }),\n  SyntheticWheelEvent = createSyntheticEvent(WheelEventInterface),\n  ToggleEventInterface = assign({}, EventInterface, {\n    newState: 0,\n    oldState: 0\n  }),\n  SyntheticToggleEvent = createSyntheticEvent(ToggleEventInterface),\n  END_KEYCODES = [9, 13, 27, 32],\n  canUseCompositionEvent = canUseDOM && \"CompositionEvent\" in window,\n  documentMode = null;\ncanUseDOM &&\n  \"documentMode\" in document &&\n  (documentMode = document.documentMode);\nvar canUseTextInputEvent = canUseDOM && \"TextEvent\" in window && !documentMode,\n  useFallbackCompositionData =\n    canUseDOM &&\n    (!canUseCompositionEvent ||\n      (documentMode && 8 < documentMode && 11 >= documentMode)),\n  SPACEBAR_CHAR = String.fromCharCode(32),\n  hasSpaceKeypress = !1;\nfunction isFallbackCompositionEnd(domEventName, nativeEvent) {\n  switch (domEventName) {\n    case \"keyup\":\n      return -1 !== END_KEYCODES.indexOf(nativeEvent.keyCode);\n    case \"keydown\":\n      return 229 !== nativeEvent.keyCode;\n    case \"keypress\":\n    case \"mousedown\":\n    case \"focusout\":\n      return !0;\n    default:\n      return !1;\n  }\n}\nfunction getDataFromCustomEvent(nativeEvent) {\n  nativeEvent = nativeEvent.detail;\n  return \"object\" === typeof nativeEvent && \"data\" in nativeEvent\n    ? nativeEvent.data\n    : null;\n}\nvar isComposing = !1;\nfunction getNativeBeforeInputChars(domEventName, nativeEvent) {\n  switch (domEventName) {\n    case \"compositionend\":\n      return getDataFromCustomEvent(nativeEvent);\n    case \"keypress\":\n      if (32 !== nativeEvent.which) return null;\n      hasSpaceKeypress = !0;\n      return SPACEBAR_CHAR;\n    case \"textInput\":\n      return (\n        (domEventName = nativeEvent.data),\n        domEventName === SPACEBAR_CHAR && hasSpaceKeypress ? null : domEventName\n      );\n    default:\n      return null;\n  }\n}\nfunction getFallbackBeforeInputChars(domEventName, nativeEvent) {\n  if (isComposing)\n    return \"compositionend\" === domEventName ||\n      (!canUseCompositionEvent &&\n        isFallbackCompositionEnd(domEventName, nativeEvent))\n      ? ((domEventName = getData()),\n        (fallbackText = startText = root = null),\n        (isComposing = !1),\n        domEventName)\n      : null;\n  switch (domEventName) {\n    case \"paste\":\n      return null;\n    case \"keypress\":\n      if (\n        !(nativeEvent.ctrlKey || nativeEvent.altKey || nativeEvent.metaKey) ||\n        (nativeEvent.ctrlKey && nativeEvent.altKey)\n      ) {\n        if (nativeEvent.char && 1 < nativeEvent.char.length)\n          return nativeEvent.char;\n        if (nativeEvent.which) return String.fromCharCode(nativeEvent.which);\n      }\n      return null;\n    case \"compositionend\":\n      return useFallbackCompositionData && \"ko\" !== nativeEvent.locale\n        ? null\n        : nativeEvent.data;\n    default:\n      return null;\n  }\n}\nvar supportedInputTypes = {\n  color: !0,\n  date: !0,\n  datetime: !0,\n  \"datetime-local\": !0,\n  email: !0,\n  month: !0,\n  number: !0,\n  password: !0,\n  range: !0,\n  search: !0,\n  tel: !0,\n  text: !0,\n  time: !0,\n  url: !0,\n  week: !0\n};\nfunction isTextInputElement(elem) {\n  var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n  return \"input\" === nodeName\n    ? !!supportedInputTypes[elem.type]\n    : \"textarea\" === nodeName\n      ? !0\n      : !1;\n}\nfunction createAndAccumulateChangeEvent(\n  dispatchQueue,\n  inst,\n  nativeEvent,\n  target\n) {\n  restoreTarget\n    ? restoreQueue\n      ? restoreQueue.push(target)\n      : (restoreQueue = [target])\n    : (restoreTarget = target);\n  inst = accumulateTwoPhaseListeners(inst, \"onChange\");\n  0 < inst.length &&\n    ((nativeEvent = new SyntheticEvent(\n      \"onChange\",\n      \"change\",\n      null,\n      nativeEvent,\n      target\n    )),\n    dispatchQueue.push({ event: nativeEvent, listeners: inst }));\n}\nvar activeElement$1 = null,\n  activeElementInst$1 = null;\nfunction runEventInBatch(dispatchQueue) {\n  processDispatchQueue(dispatchQueue, 0);\n}\nfunction getInstIfValueChanged(targetInst) {\n  var targetNode = getNodeFromInstance(targetInst);\n  if (updateValueIfChanged(targetNode)) return targetInst;\n}\nfunction getTargetInstForChangeEvent(domEventName, targetInst) {\n  if (\"change\" === domEventName) return targetInst;\n}\nvar isInputEventSupported = !1;\nif (canUseDOM) {\n  var JSCompiler_inline_result$jscomp$282;\n  if (canUseDOM) {\n    var isSupported$jscomp$inline_417 = \"oninput\" in document;\n    if (!isSupported$jscomp$inline_417) {\n      var element$jscomp$inline_418 = document.createElement(\"div\");\n      element$jscomp$inline_418.setAttribute(\"oninput\", \"return;\");\n      isSupported$jscomp$inline_417 =\n        \"function\" === typeof element$jscomp$inline_418.oninput;\n    }\n    JSCompiler_inline_result$jscomp$282 = isSupported$jscomp$inline_417;\n  } else JSCompiler_inline_result$jscomp$282 = !1;\n  isInputEventSupported =\n    JSCompiler_inline_result$jscomp$282 &&\n    (!document.documentMode || 9 < document.documentMode);\n}\nfunction stopWatchingForValueChange() {\n  activeElement$1 &&\n    (activeElement$1.detachEvent(\"onpropertychange\", handlePropertyChange),\n    (activeElementInst$1 = activeElement$1 = null));\n}\nfunction handlePropertyChange(nativeEvent) {\n  if (\n    \"value\" === nativeEvent.propertyName &&\n    getInstIfValueChanged(activeElementInst$1)\n  ) {\n    var dispatchQueue = [];\n    createAndAccumulateChangeEvent(\n      dispatchQueue,\n      activeElementInst$1,\n      nativeEvent,\n      getEventTarget(nativeEvent)\n    );\n    batchedUpdates$1(runEventInBatch, dispatchQueue);\n  }\n}\nfunction handleEventsForInputEventPolyfill(domEventName, target, targetInst) {\n  \"focusin\" === domEventName\n    ? (stopWatchingForValueChange(),\n      (activeElement$1 = target),\n      (activeElementInst$1 = targetInst),\n      activeElement$1.attachEvent(\"onpropertychange\", handlePropertyChange))\n    : \"focusout\" === domEventName && stopWatchingForValueChange();\n}\nfunction getTargetInstForInputEventPolyfill(domEventName) {\n  if (\n    \"selectionchange\" === domEventName ||\n    \"keyup\" === domEventName ||\n    \"keydown\" === domEventName\n  )\n    return getInstIfValueChanged(activeElementInst$1);\n}\nfunction getTargetInstForClickEvent(domEventName, targetInst) {\n  if (\"click\" === domEventName) return getInstIfValueChanged(targetInst);\n}\nfunction getTargetInstForInputOrChangeEvent(domEventName, targetInst) {\n  if (\"input\" === domEventName || \"change\" === domEventName)\n    return getInstIfValueChanged(targetInst);\n}\nfunction is(x, y) {\n  return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is;\nfunction shallowEqual(objA, objB) {\n  if (objectIs(objA, objB)) return !0;\n  if (\n    \"object\" !== typeof objA ||\n    null === objA ||\n    \"object\" !== typeof objB ||\n    null === objB\n  )\n    return !1;\n  var keysA = Object.keys(objA),\n    keysB = Object.keys(objB);\n  if (keysA.length !== keysB.length) return !1;\n  for (keysB = 0; keysB < keysA.length; keysB++) {\n    var currentKey = keysA[keysB];\n    if (\n      !hasOwnProperty.call(objB, currentKey) ||\n      !objectIs(objA[currentKey], objB[currentKey])\n    )\n      return !1;\n  }\n  return !0;\n}\nfunction getLeafNode(node) {\n  for (; node && node.firstChild; ) node = node.firstChild;\n  return node;\n}\nfunction getNodeForCharacterOffset(root, offset) {\n  var node = getLeafNode(root);\n  root = 0;\n  for (var nodeEnd; node; ) {\n    if (3 === node.nodeType) {\n      nodeEnd = root + node.textContent.length;\n      if (root <= offset && nodeEnd >= offset)\n        return { node: node, offset: offset - root };\n      root = nodeEnd;\n    }\n    a: {\n      for (; node; ) {\n        if (node.nextSibling) {\n          node = node.nextSibling;\n          break a;\n        }\n        node = node.parentNode;\n      }\n      node = void 0;\n    }\n    node = getLeafNode(node);\n  }\n}\nfunction containsNode(outerNode, innerNode) {\n  return outerNode && innerNode\n    ? outerNode === innerNode\n      ? !0\n      : outerNode && 3 === outerNode.nodeType\n        ? !1\n        : innerNode && 3 === innerNode.nodeType\n          ? containsNode(outerNode, innerNode.parentNode)\n          : \"contains\" in outerNode\n            ? outerNode.contains(innerNode)\n            : outerNode.compareDocumentPosition\n              ? !!(outerNode.compareDocumentPosition(innerNode) & 16)\n              : !1\n    : !1;\n}\nfunction getActiveElementDeep(containerInfo) {\n  containerInfo =\n    null != containerInfo &&\n    null != containerInfo.ownerDocument &&\n    null != containerInfo.ownerDocument.defaultView\n      ? containerInfo.ownerDocument.defaultView\n      : window;\n  for (\n    var element = getActiveElement(containerInfo.document);\n    element instanceof containerInfo.HTMLIFrameElement;\n\n  ) {\n    try {\n      var JSCompiler_inline_result =\n        \"string\" === typeof element.contentWindow.location.href;\n    } catch (err) {\n      JSCompiler_inline_result = !1;\n    }\n    if (JSCompiler_inline_result) containerInfo = element.contentWindow;\n    else break;\n    element = getActiveElement(containerInfo.document);\n  }\n  return element;\n}\nfunction hasSelectionCapabilities(elem) {\n  var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n  return (\n    nodeName &&\n    ((\"input\" === nodeName &&\n      (\"text\" === elem.type ||\n        \"search\" === elem.type ||\n        \"tel\" === elem.type ||\n        \"url\" === elem.type ||\n        \"password\" === elem.type)) ||\n      \"textarea\" === nodeName ||\n      \"true\" === elem.contentEditable)\n  );\n}\nvar skipSelectionChangeEvent =\n    canUseDOM && \"documentMode\" in document && 11 >= document.documentMode,\n  activeElement = null,\n  activeElementInst = null,\n  lastSelection = null,\n  mouseDown = !1;\nfunction constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget) {\n  var doc =\n    nativeEventTarget.window === nativeEventTarget\n      ? nativeEventTarget.document\n      : 9 === nativeEventTarget.nodeType\n        ? nativeEventTarget\n        : nativeEventTarget.ownerDocument;\n  mouseDown ||\n    null == activeElement ||\n    activeElement !== getActiveElement(doc) ||\n    ((doc = activeElement),\n    \"selectionStart\" in doc && hasSelectionCapabilities(doc)\n      ? (doc = { start: doc.selectionStart, end: doc.selectionEnd })\n      : ((doc = (\n          (doc.ownerDocument && doc.ownerDocument.defaultView) ||\n          window\n        ).getSelection()),\n        (doc = {\n          anchorNode: doc.anchorNode,\n          anchorOffset: doc.anchorOffset,\n          focusNode: doc.focusNode,\n          focusOffset: doc.focusOffset\n        })),\n    (lastSelection && shallowEqual(lastSelection, doc)) ||\n      ((lastSelection = doc),\n      (doc = accumulateTwoPhaseListeners(activeElementInst, \"onSelect\")),\n      0 < doc.length &&\n        ((nativeEvent = new SyntheticEvent(\n          \"onSelect\",\n          \"select\",\n          null,\n          nativeEvent,\n          nativeEventTarget\n        )),\n        dispatchQueue.push({ event: nativeEvent, listeners: doc }),\n        (nativeEvent.target = activeElement))));\n}\nfunction makePrefixMap(styleProp, eventName) {\n  var prefixes = {};\n  prefixes[styleProp.toLowerCase()] = eventName.toLowerCase();\n  prefixes[\"Webkit\" + styleProp] = \"webkit\" + eventName;\n  prefixes[\"Moz\" + styleProp] = \"moz\" + eventName;\n  return prefixes;\n}\nvar vendorPrefixes = {\n    animationend: makePrefixMap(\"Animation\", \"AnimationEnd\"),\n    animationiteration: makePrefixMap(\"Animation\", \"AnimationIteration\"),\n    animationstart: makePrefixMap(\"Animation\", \"AnimationStart\"),\n    transitionrun: makePrefixMap(\"Transition\", \"TransitionRun\"),\n    transitionstart: makePrefixMap(\"Transition\", \"TransitionStart\"),\n    transitioncancel: makePrefixMap(\"Transition\", \"TransitionCancel\"),\n    transitionend: makePrefixMap(\"Transition\", \"TransitionEnd\")\n  },\n  prefixedEventNames = {},\n  style = {};\ncanUseDOM &&\n  ((style = document.createElement(\"div\").style),\n  \"AnimationEvent\" in window ||\n    (delete vendorPrefixes.animationend.animation,\n    delete vendorPrefixes.animationiteration.animation,\n    delete vendorPrefixes.animationstart.animation),\n  \"TransitionEvent\" in window ||\n    delete vendorPrefixes.transitionend.transition);\nfunction getVendorPrefixedEventName(eventName) {\n  if (prefixedEventNames[eventName]) return prefixedEventNames[eventName];\n  if (!vendorPrefixes[eventName]) return eventName;\n  var prefixMap = vendorPrefixes[eventName],\n    styleProp;\n  for (styleProp in prefixMap)\n    if (prefixMap.hasOwnProperty(styleProp) && styleProp in style)\n      return (prefixedEventNames[eventName] = prefixMap[styleProp]);\n  return eventName;\n}\nvar ANIMATION_END = getVendorPrefixedEventName(\"animationend\"),\n  ANIMATION_ITERATION = getVendorPrefixedEventName(\"animationiteration\"),\n  ANIMATION_START = getVendorPrefixedEventName(\"animationstart\"),\n  TRANSITION_RUN = getVendorPrefixedEventName(\"transitionrun\"),\n  TRANSITION_START = getVendorPrefixedEventName(\"transitionstart\"),\n  TRANSITION_CANCEL = getVendorPrefixedEventName(\"transitioncancel\"),\n  TRANSITION_END = getVendorPrefixedEventName(\"transitionend\"),\n  topLevelEventsToReactNames = new Map(),\n  simpleEventPluginEvents =\n    \"abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel\".split(\n      \" \"\n    );\nsimpleEventPluginEvents.push(\"scrollEnd\");\nfunction registerSimpleEvent(domEventName, reactName) {\n  topLevelEventsToReactNames.set(domEventName, reactName);\n  registerTwoPhaseEvent(reactName, [domEventName]);\n}\nvar CapturedStacks = new WeakMap();\nfunction createCapturedValueAtFiber(value, source) {\n  if (\"object\" === typeof value && null !== value) {\n    var existing = CapturedStacks.get(value);\n    if (void 0 !== existing) return existing;\n    source = {\n      value: value,\n      source: source,\n      stack: getStackByFiberInDevAndProd(source)\n    };\n    CapturedStacks.set(value, source);\n    return source;\n  }\n  return {\n    value: value,\n    source: source,\n    stack: getStackByFiberInDevAndProd(source)\n  };\n}\nvar concurrentQueues = [],\n  concurrentQueuesIndex = 0,\n  concurrentlyUpdatedLanes = 0;\nfunction finishQueueingConcurrentUpdates() {\n  for (\n    var endIndex = concurrentQueuesIndex,\n      i = (concurrentlyUpdatedLanes = concurrentQueuesIndex = 0);\n    i < endIndex;\n\n  ) {\n    var fiber = concurrentQueues[i];\n    concurrentQueues[i++] = null;\n    var queue = concurrentQueues[i];\n    concurrentQueues[i++] = null;\n    var update = concurrentQueues[i];\n    concurrentQueues[i++] = null;\n    var lane = concurrentQueues[i];\n    concurrentQueues[i++] = null;\n    if (null !== queue && null !== update) {\n      var pending = queue.pending;\n      null === pending\n        ? (update.next = update)\n        : ((update.next = pending.next), (pending.next = update));\n      queue.pending = update;\n    }\n    0 !== lane && markUpdateLaneFromFiberToRoot(fiber, update, lane);\n  }\n}\nfunction enqueueUpdate$1(fiber, queue, update, lane) {\n  concurrentQueues[concurrentQueuesIndex++] = fiber;\n  concurrentQueues[concurrentQueuesIndex++] = queue;\n  concurrentQueues[concurrentQueuesIndex++] = update;\n  concurrentQueues[concurrentQueuesIndex++] = lane;\n  concurrentlyUpdatedLanes |= lane;\n  fiber.lanes |= lane;\n  fiber = fiber.alternate;\n  null !== fiber && (fiber.lanes |= lane);\n}\nfunction enqueueConcurrentHookUpdate(fiber, queue, update, lane) {\n  enqueueUpdate$1(fiber, queue, update, lane);\n  return getRootForUpdatedFiber(fiber);\n}\nfunction enqueueConcurrentRenderForLane(fiber, lane) {\n  enqueueUpdate$1(fiber, null, null, lane);\n  return getRootForUpdatedFiber(fiber);\n}\nfunction markUpdateLaneFromFiberToRoot(sourceFiber, update, lane) {\n  sourceFiber.lanes |= lane;\n  var alternate = sourceFiber.alternate;\n  null !== alternate && (alternate.lanes |= lane);\n  for (var isHidden = !1, parent = sourceFiber.return; null !== parent; )\n    (parent.childLanes |= lane),\n      (alternate = parent.alternate),\n      null !== alternate && (alternate.childLanes |= lane),\n      22 === parent.tag &&\n        ((sourceFiber = parent.stateNode),\n        null === sourceFiber || sourceFiber._visibility & 1 || (isHidden = !0)),\n      (sourceFiber = parent),\n      (parent = parent.return);\n  return 3 === sourceFiber.tag\n    ? ((parent = sourceFiber.stateNode),\n      isHidden &&\n        null !== update &&\n        ((isHidden = 31 - clz32(lane)),\n        (sourceFiber = parent.hiddenUpdates),\n        (alternate = sourceFiber[isHidden]),\n        null === alternate\n          ? (sourceFiber[isHidden] = [update])\n          : alternate.push(update),\n        (update.lane = lane | 536870912)),\n      parent)\n    : null;\n}\nfunction getRootForUpdatedFiber(sourceFiber) {\n  if (50 < nestedUpdateCount)\n    throw (\n      ((nestedUpdateCount = 0),\n      (rootWithNestedUpdates = null),\n      Error(formatProdErrorMessage(185)))\n    );\n  for (var parent = sourceFiber.return; null !== parent; )\n    (sourceFiber = parent), (parent = sourceFiber.return);\n  return 3 === sourceFiber.tag ? sourceFiber.stateNode : null;\n}\nvar emptyContextObject = {};\nfunction FiberNode(tag, pendingProps, key, mode) {\n  this.tag = tag;\n  this.key = key;\n  this.sibling =\n    this.child =\n    this.return =\n    this.stateNode =\n    this.type =\n    this.elementType =\n      null;\n  this.index = 0;\n  this.refCleanup = this.ref = null;\n  this.pendingProps = pendingProps;\n  this.dependencies =\n    this.memoizedState =\n    this.updateQueue =\n    this.memoizedProps =\n      null;\n  this.mode = mode;\n  this.subtreeFlags = this.flags = 0;\n  this.deletions = null;\n  this.childLanes = this.lanes = 0;\n  this.alternate = null;\n}\nfunction createFiberImplClass(tag, pendingProps, key, mode) {\n  return new FiberNode(tag, pendingProps, key, mode);\n}\nfunction shouldConstruct(Component) {\n  Component = Component.prototype;\n  return !(!Component || !Component.isReactComponent);\n}\nfunction createWorkInProgress(current, pendingProps) {\n  var workInProgress = current.alternate;\n  null === workInProgress\n    ? ((workInProgress = createFiberImplClass(\n        current.tag,\n        pendingProps,\n        current.key,\n        current.mode\n      )),\n      (workInProgress.elementType = current.elementType),\n      (workInProgress.type = current.type),\n      (workInProgress.stateNode = current.stateNode),\n      (workInProgress.alternate = current),\n      (current.alternate = workInProgress))\n    : ((workInProgress.pendingProps = pendingProps),\n      (workInProgress.type = current.type),\n      (workInProgress.flags = 0),\n      (workInProgress.subtreeFlags = 0),\n      (workInProgress.deletions = null));\n  workInProgress.flags = current.flags & 65011712;\n  workInProgress.childLanes = current.childLanes;\n  workInProgress.lanes = current.lanes;\n  workInProgress.child = current.child;\n  workInProgress.memoizedProps = current.memoizedProps;\n  workInProgress.memoizedState = current.memoizedState;\n  workInProgress.updateQueue = current.updateQueue;\n  pendingProps = current.dependencies;\n  workInProgress.dependencies =\n    null === pendingProps\n      ? null\n      : { lanes: pendingProps.lanes, firstContext: pendingProps.firstContext };\n  workInProgress.sibling = current.sibling;\n  workInProgress.index = current.index;\n  workInProgress.ref = current.ref;\n  workInProgress.refCleanup = current.refCleanup;\n  return workInProgress;\n}\nfunction resetWorkInProgress(workInProgress, renderLanes) {\n  workInProgress.flags &= 65011714;\n  var current = workInProgress.alternate;\n  null === current\n    ? ((workInProgress.childLanes = 0),\n      (workInProgress.lanes = renderLanes),\n      (workInProgress.child = null),\n      (workInProgress.subtreeFlags = 0),\n      (workInProgress.memoizedProps = null),\n      (workInProgress.memoizedState = null),\n      (workInProgress.updateQueue = null),\n      (workInProgress.dependencies = null),\n      (workInProgress.stateNode = null))\n    : ((workInProgress.childLanes = current.childLanes),\n      (workInProgress.lanes = current.lanes),\n      (workInProgress.child = current.child),\n      (workInProgress.subtreeFlags = 0),\n      (workInProgress.deletions = null),\n      (workInProgress.memoizedProps = current.memoizedProps),\n      (workInProgress.memoizedState = current.memoizedState),\n      (workInProgress.updateQueue = current.updateQueue),\n      (workInProgress.type = current.type),\n      (renderLanes = current.dependencies),\n      (workInProgress.dependencies =\n        null === renderLanes\n          ? null\n          : {\n              lanes: renderLanes.lanes,\n              firstContext: renderLanes.firstContext\n            }));\n  return workInProgress;\n}\nfunction createFiberFromTypeAndProps(\n  type,\n  key,\n  pendingProps,\n  owner,\n  mode,\n  lanes\n) {\n  var fiberTag = 0;\n  owner = type;\n  if (\"function\" === typeof type) shouldConstruct(type) && (fiberTag = 1);\n  else if (\"string\" === typeof type)\n    fiberTag = isHostHoistableType(\n      type,\n      pendingProps,\n      contextStackCursor.current\n    )\n      ? 26\n      : \"html\" === type || \"head\" === type || \"body\" === type\n        ? 27\n        : 5;\n  else\n    a: switch (type) {\n      case REACT_ACTIVITY_TYPE:\n        return (\n          (type = createFiberImplClass(31, pendingProps, key, mode)),\n          (type.elementType = REACT_ACTIVITY_TYPE),\n          (type.lanes = lanes),\n          type\n        );\n      case REACT_FRAGMENT_TYPE:\n        return createFiberFromFragment(pendingProps.children, mode, lanes, key);\n      case REACT_STRICT_MODE_TYPE:\n        fiberTag = 8;\n        mode |= 24;\n        break;\n      case REACT_PROFILER_TYPE:\n        return (\n          (type = createFiberImplClass(12, pendingProps, key, mode | 2)),\n          (type.elementType = REACT_PROFILER_TYPE),\n          (type.lanes = lanes),\n          type\n        );\n      case REACT_SUSPENSE_TYPE:\n        return (\n          (type = createFiberImplClass(13, pendingProps, key, mode)),\n          (type.elementType = REACT_SUSPENSE_TYPE),\n          (type.lanes = lanes),\n          type\n        );\n      case REACT_SUSPENSE_LIST_TYPE:\n        return (\n          (type = createFiberImplClass(19, pendingProps, key, mode)),\n          (type.elementType = REACT_SUSPENSE_LIST_TYPE),\n          (type.lanes = lanes),\n          type\n        );\n      default:\n        if (\"object\" === typeof type && null !== type)\n          switch (type.$$typeof) {\n            case REACT_PROVIDER_TYPE:\n            case REACT_CONTEXT_TYPE:\n              fiberTag = 10;\n              break a;\n            case REACT_CONSUMER_TYPE:\n              fiberTag = 9;\n              break a;\n            case REACT_FORWARD_REF_TYPE:\n              fiberTag = 11;\n              break a;\n            case REACT_MEMO_TYPE:\n              fiberTag = 14;\n              break a;\n            case REACT_LAZY_TYPE:\n              fiberTag = 16;\n              owner = null;\n              break a;\n          }\n        fiberTag = 29;\n        pendingProps = Error(\n          formatProdErrorMessage(130, null === type ? \"null\" : typeof type, \"\")\n        );\n        owner = null;\n    }\n  key = createFiberImplClass(fiberTag, pendingProps, key, mode);\n  key.elementType = type;\n  key.type = owner;\n  key.lanes = lanes;\n  return key;\n}\nfunction createFiberFromFragment(elements, mode, lanes, key) {\n  elements = createFiberImplClass(7, elements, key, mode);\n  elements.lanes = lanes;\n  return elements;\n}\nfunction createFiberFromText(content, mode, lanes) {\n  content = createFiberImplClass(6, content, null, mode);\n  content.lanes = lanes;\n  return content;\n}\nfunction createFiberFromPortal(portal, mode, lanes) {\n  mode = createFiberImplClass(\n    4,\n    null !== portal.children ? portal.children : [],\n    portal.key,\n    mode\n  );\n  mode.lanes = lanes;\n  mode.stateNode = {\n    containerInfo: portal.containerInfo,\n    pendingChildren: null,\n    implementation: portal.implementation\n  };\n  return mode;\n}\nvar forkStack = [],\n  forkStackIndex = 0,\n  treeForkProvider = null,\n  treeForkCount = 0,\n  idStack = [],\n  idStackIndex = 0,\n  treeContextProvider = null,\n  treeContextId = 1,\n  treeContextOverflow = \"\";\nfunction pushTreeFork(workInProgress, totalChildren) {\n  forkStack[forkStackIndex++] = treeForkCount;\n  forkStack[forkStackIndex++] = treeForkProvider;\n  treeForkProvider = workInProgress;\n  treeForkCount = totalChildren;\n}\nfunction pushTreeId(workInProgress, totalChildren, index) {\n  idStack[idStackIndex++] = treeContextId;\n  idStack[idStackIndex++] = treeContextOverflow;\n  idStack[idStackIndex++] = treeContextProvider;\n  treeContextProvider = workInProgress;\n  var baseIdWithLeadingBit = treeContextId;\n  workInProgress = treeContextOverflow;\n  var baseLength = 32 - clz32(baseIdWithLeadingBit) - 1;\n  baseIdWithLeadingBit &= ~(1 << baseLength);\n  index += 1;\n  var length = 32 - clz32(totalChildren) + baseLength;\n  if (30 < length) {\n    var numberOfOverflowBits = baseLength - (baseLength % 5);\n    length = (\n      baseIdWithLeadingBit &\n      ((1 << numberOfOverflowBits) - 1)\n    ).toString(32);\n    baseIdWithLeadingBit >>= numberOfOverflowBits;\n    baseLength -= numberOfOverflowBits;\n    treeContextId =\n      (1 << (32 - clz32(totalChildren) + baseLength)) |\n      (index << baseLength) |\n      baseIdWithLeadingBit;\n    treeContextOverflow = length + workInProgress;\n  } else\n    (treeContextId =\n      (1 << length) | (index << baseLength) | baseIdWithLeadingBit),\n      (treeContextOverflow = workInProgress);\n}\nfunction pushMaterializedTreeId(workInProgress) {\n  null !== workInProgress.return &&\n    (pushTreeFork(workInProgress, 1), pushTreeId(workInProgress, 1, 0));\n}\nfunction popTreeContext(workInProgress) {\n  for (; workInProgress === treeForkProvider; )\n    (treeForkProvider = forkStack[--forkStackIndex]),\n      (forkStack[forkStackIndex] = null),\n      (treeForkCount = forkStack[--forkStackIndex]),\n      (forkStack[forkStackIndex] = null);\n  for (; workInProgress === treeContextProvider; )\n    (treeContextProvider = idStack[--idStackIndex]),\n      (idStack[idStackIndex] = null),\n      (treeContextOverflow = idStack[--idStackIndex]),\n      (idStack[idStackIndex] = null),\n      (treeContextId = idStack[--idStackIndex]),\n      (idStack[idStackIndex] = null);\n}\nvar hydrationParentFiber = null,\n  nextHydratableInstance = null,\n  isHydrating = !1,\n  hydrationErrors = null,\n  rootOrSingletonContext = !1,\n  HydrationMismatchException = Error(formatProdErrorMessage(519));\nfunction throwOnHydrationMismatch(fiber) {\n  var error = Error(formatProdErrorMessage(418, \"\"));\n  queueHydrationError(createCapturedValueAtFiber(error, fiber));\n  throw HydrationMismatchException;\n}\nfunction prepareToHydrateHostInstance(fiber) {\n  var instance = fiber.stateNode,\n    type = fiber.type,\n    props = fiber.memoizedProps;\n  instance[internalInstanceKey] = fiber;\n  instance[internalPropsKey] = props;\n  switch (type) {\n    case \"dialog\":\n      listenToNonDelegatedEvent(\"cancel\", instance);\n      listenToNonDelegatedEvent(\"close\", instance);\n      break;\n    case \"iframe\":\n    case \"object\":\n    case \"embed\":\n      listenToNonDelegatedEvent(\"load\", instance);\n      break;\n    case \"video\":\n    case \"audio\":\n      for (type = 0; type < mediaEventTypes.length; type++)\n        listenToNonDelegatedEvent(mediaEventTypes[type], instance);\n      break;\n    case \"source\":\n      listenToNonDelegatedEvent(\"error\", instance);\n      break;\n    case \"img\":\n    case \"image\":\n    case \"link\":\n      listenToNonDelegatedEvent(\"error\", instance);\n      listenToNonDelegatedEvent(\"load\", instance);\n      break;\n    case \"details\":\n      listenToNonDelegatedEvent(\"toggle\", instance);\n      break;\n    case \"input\":\n      listenToNonDelegatedEvent(\"invalid\", instance);\n      initInput(\n        instance,\n        props.value,\n        props.defaultValue,\n        props.checked,\n        props.defaultChecked,\n        props.type,\n        props.name,\n        !0\n      );\n      track(instance);\n      break;\n    case \"select\":\n      listenToNonDelegatedEvent(\"invalid\", instance);\n      break;\n    case \"textarea\":\n      listenToNonDelegatedEvent(\"invalid\", instance),\n        initTextarea(instance, props.value, props.defaultValue, props.children),\n        track(instance);\n  }\n  type = props.children;\n  (\"string\" !== typeof type &&\n    \"number\" !== typeof type &&\n    \"bigint\" !== typeof type) ||\n  instance.textContent === \"\" + type ||\n  !0 === props.suppressHydrationWarning ||\n  checkForUnmatchedText(instance.textContent, type)\n    ? (null != props.popover &&\n        (listenToNonDelegatedEvent(\"beforetoggle\", instance),\n        listenToNonDelegatedEvent(\"toggle\", instance)),\n      null != props.onScroll && listenToNonDelegatedEvent(\"scroll\", instance),\n      null != props.onScrollEnd &&\n        listenToNonDelegatedEvent(\"scrollend\", instance),\n      null != props.onClick && (instance.onclick = noop$1),\n      (instance = !0))\n    : (instance = !1);\n  instance || throwOnHydrationMismatch(fiber);\n}\nfunction popToNextHostParent(fiber) {\n  for (hydrationParentFiber = fiber.return; hydrationParentFiber; )\n    switch (hydrationParentFiber.tag) {\n      case 5:\n      case 13:\n        rootOrSingletonContext = !1;\n        return;\n      case 27:\n      case 3:\n        rootOrSingletonContext = !0;\n        return;\n      default:\n        hydrationParentFiber = hydrationParentFiber.return;\n    }\n}\nfunction popHydrationState(fiber) {\n  if (fiber !== hydrationParentFiber) return !1;\n  if (!isHydrating) return popToNextHostParent(fiber), (isHydrating = !0), !1;\n  var tag = fiber.tag,\n    JSCompiler_temp;\n  if ((JSCompiler_temp = 3 !== tag && 27 !== tag)) {\n    if ((JSCompiler_temp = 5 === tag))\n      (JSCompiler_temp = fiber.type),\n        (JSCompiler_temp =\n          !(\"form\" !== JSCompiler_temp && \"button\" !== JSCompiler_temp) ||\n          shouldSetTextContent(fiber.type, fiber.memoizedProps));\n    JSCompiler_temp = !JSCompiler_temp;\n  }\n  JSCompiler_temp && nextHydratableInstance && throwOnHydrationMismatch(fiber);\n  popToNextHostParent(fiber);\n  if (13 === tag) {\n    fiber = fiber.memoizedState;\n    fiber = null !== fiber ? fiber.dehydrated : null;\n    if (!fiber) throw Error(formatProdErrorMessage(317));\n    a: {\n      fiber = fiber.nextSibling;\n      for (tag = 0; fiber; ) {\n        if (8 === fiber.nodeType)\n          if (((JSCompiler_temp = fiber.data), \"/$\" === JSCompiler_temp)) {\n            if (0 === tag) {\n              nextHydratableInstance = getNextHydratable(fiber.nextSibling);\n              break a;\n            }\n            tag--;\n          } else\n            (\"$\" !== JSCompiler_temp &&\n              \"$!\" !== JSCompiler_temp &&\n              \"$?\" !== JSCompiler_temp) ||\n              tag++;\n        fiber = fiber.nextSibling;\n      }\n      nextHydratableInstance = null;\n    }\n  } else\n    27 === tag\n      ? ((tag = nextHydratableInstance),\n        isSingletonScope(fiber.type)\n          ? ((fiber = previousHydratableOnEnteringScopedSingleton),\n            (previousHydratableOnEnteringScopedSingleton = null),\n            (nextHydratableInstance = fiber))\n          : (nextHydratableInstance = tag))\n      : (nextHydratableInstance = hydrationParentFiber\n          ? getNextHydratable(fiber.stateNode.nextSibling)\n          : null);\n  return !0;\n}\nfunction resetHydrationState() {\n  nextHydratableInstance = hydrationParentFiber = null;\n  isHydrating = !1;\n}\nfunction upgradeHydrationErrorsToRecoverable() {\n  var queuedErrors = hydrationErrors;\n  null !== queuedErrors &&\n    (null === workInProgressRootRecoverableErrors\n      ? (workInProgressRootRecoverableErrors = queuedErrors)\n      : workInProgressRootRecoverableErrors.push.apply(\n          workInProgressRootRecoverableErrors,\n          queuedErrors\n        ),\n    (hydrationErrors = null));\n  return queuedErrors;\n}\nfunction queueHydrationError(error) {\n  null === hydrationErrors\n    ? (hydrationErrors = [error])\n    : hydrationErrors.push(error);\n}\nvar valueCursor = createCursor(null),\n  currentlyRenderingFiber$1 = null,\n  lastContextDependency = null;\nfunction pushProvider(providerFiber, context, nextValue) {\n  push(valueCursor, context._currentValue);\n  context._currentValue = nextValue;\n}\nfunction popProvider(context) {\n  context._currentValue = valueCursor.current;\n  pop(valueCursor);\n}\nfunction scheduleContextWorkOnParentPath(parent, renderLanes, propagationRoot) {\n  for (; null !== parent; ) {\n    var alternate = parent.alternate;\n    (parent.childLanes & renderLanes) !== renderLanes\n      ? ((parent.childLanes |= renderLanes),\n        null !== alternate && (alternate.childLanes |= renderLanes))\n      : null !== alternate &&\n        (alternate.childLanes & renderLanes) !== renderLanes &&\n        (alternate.childLanes |= renderLanes);\n    if (parent === propagationRoot) break;\n    parent = parent.return;\n  }\n}\nfunction propagateContextChanges(\n  workInProgress,\n  contexts,\n  renderLanes,\n  forcePropagateEntireTree\n) {\n  var fiber = workInProgress.child;\n  null !== fiber && (fiber.return = workInProgress);\n  for (; null !== fiber; ) {\n    var list = fiber.dependencies;\n    if (null !== list) {\n      var nextFiber = fiber.child;\n      list = list.firstContext;\n      a: for (; null !== list; ) {\n        var dependency = list;\n        list = fiber;\n        for (var i = 0; i < contexts.length; i++)\n          if (dependency.context === contexts[i]) {\n            list.lanes |= renderLanes;\n            dependency = list.alternate;\n            null !== dependency && (dependency.lanes |= renderLanes);\n            scheduleContextWorkOnParentPath(\n              list.return,\n              renderLanes,\n              workInProgress\n            );\n            forcePropagateEntireTree || (nextFiber = null);\n            break a;\n          }\n        list = dependency.next;\n      }\n    } else if (18 === fiber.tag) {\n      nextFiber = fiber.return;\n      if (null === nextFiber) throw Error(formatProdErrorMessage(341));\n      nextFiber.lanes |= renderLanes;\n      list = nextFiber.alternate;\n      null !== list && (list.lanes |= renderLanes);\n      scheduleContextWorkOnParentPath(nextFiber, renderLanes, workInProgress);\n      nextFiber = null;\n    } else nextFiber = fiber.child;\n    if (null !== nextFiber) nextFiber.return = fiber;\n    else\n      for (nextFiber = fiber; null !== nextFiber; ) {\n        if (nextFiber === workInProgress) {\n          nextFiber = null;\n          break;\n        }\n        fiber = nextFiber.sibling;\n        if (null !== fiber) {\n          fiber.return = nextFiber.return;\n          nextFiber = fiber;\n          break;\n        }\n        nextFiber = nextFiber.return;\n      }\n    fiber = nextFiber;\n  }\n}\nfunction propagateParentContextChanges(\n  current,\n  workInProgress,\n  renderLanes,\n  forcePropagateEntireTree\n) {\n  current = null;\n  for (\n    var parent = workInProgress, isInsidePropagationBailout = !1;\n    null !== parent;\n\n  ) {\n    if (!isInsidePropagationBailout)\n      if (0 !== (parent.flags & 524288)) isInsidePropagationBailout = !0;\n      else if (0 !== (parent.flags & 262144)) break;\n    if (10 === parent.tag) {\n      var currentParent = parent.alternate;\n      if (null === currentParent) throw Error(formatProdErrorMessage(387));\n      currentParent = currentParent.memoizedProps;\n      if (null !== currentParent) {\n        var context = parent.type;\n        objectIs(parent.pendingProps.value, currentParent.value) ||\n          (null !== current ? current.push(context) : (current = [context]));\n      }\n    } else if (parent === hostTransitionProviderCursor.current) {\n      currentParent = parent.alternate;\n      if (null === currentParent) throw Error(formatProdErrorMessage(387));\n      currentParent.memoizedState.memoizedState !==\n        parent.memoizedState.memoizedState &&\n        (null !== current\n          ? current.push(HostTransitionContext)\n          : (current = [HostTransitionContext]));\n    }\n    parent = parent.return;\n  }\n  null !== current &&\n    propagateContextChanges(\n      workInProgress,\n      current,\n      renderLanes,\n      forcePropagateEntireTree\n    );\n  workInProgress.flags |= 262144;\n}\nfunction checkIfContextChanged(currentDependencies) {\n  for (\n    currentDependencies = currentDependencies.firstContext;\n    null !== currentDependencies;\n\n  ) {\n    if (\n      !objectIs(\n        currentDependencies.context._currentValue,\n        currentDependencies.memoizedValue\n      )\n    )\n      return !0;\n    currentDependencies = currentDependencies.next;\n  }\n  return !1;\n}\nfunction prepareToReadContext(workInProgress) {\n  currentlyRenderingFiber$1 = workInProgress;\n  lastContextDependency = null;\n  workInProgress = workInProgress.dependencies;\n  null !== workInProgress && (workInProgress.firstContext = null);\n}\nfunction readContext(context) {\n  return readContextForConsumer(currentlyRenderingFiber$1, context);\n}\nfunction readContextDuringReconciliation(consumer, context) {\n  null === currentlyRenderingFiber$1 && prepareToReadContext(consumer);\n  return readContextForConsumer(consumer, context);\n}\nfunction readContextForConsumer(consumer, context) {\n  var value = context._currentValue;\n  context = { context: context, memoizedValue: value, next: null };\n  if (null === lastContextDependency) {\n    if (null === consumer) throw Error(formatProdErrorMessage(308));\n    lastContextDependency = context;\n    consumer.dependencies = { lanes: 0, firstContext: context };\n    consumer.flags |= 524288;\n  } else lastContextDependency = lastContextDependency.next = context;\n  return value;\n}\nvar AbortControllerLocal =\n    \"undefined\" !== typeof AbortController\n      ? AbortController\n      : function () {\n          var listeners = [],\n            signal = (this.signal = {\n              aborted: !1,\n              addEventListener: function (type, listener) {\n                listeners.push(listener);\n              }\n            });\n          this.abort = function () {\n            signal.aborted = !0;\n            listeners.forEach(function (listener) {\n              return listener();\n            });\n          };\n        },\n  scheduleCallback$2 = Scheduler.unstable_scheduleCallback,\n  NormalPriority = Scheduler.unstable_NormalPriority,\n  CacheContext = {\n    $$typeof: REACT_CONTEXT_TYPE,\n    Consumer: null,\n    Provider: null,\n    _currentValue: null,\n    _currentValue2: null,\n    _threadCount: 0\n  };\nfunction createCache() {\n  return {\n    controller: new AbortControllerLocal(),\n    data: new Map(),\n    refCount: 0\n  };\n}\nfunction releaseCache(cache) {\n  cache.refCount--;\n  0 === cache.refCount &&\n    scheduleCallback$2(NormalPriority, function () {\n      cache.controller.abort();\n    });\n}\nvar currentEntangledListeners = null,\n  currentEntangledPendingCount = 0,\n  currentEntangledLane = 0,\n  currentEntangledActionThenable = null;\nfunction entangleAsyncAction(transition, thenable) {\n  if (null === currentEntangledListeners) {\n    var entangledListeners = (currentEntangledListeners = []);\n    currentEntangledPendingCount = 0;\n    currentEntangledLane = requestTransitionLane();\n    currentEntangledActionThenable = {\n      status: \"pending\",\n      value: void 0,\n      then: function (resolve) {\n        entangledListeners.push(resolve);\n      }\n    };\n  }\n  currentEntangledPendingCount++;\n  thenable.then(pingEngtangledActionScope, pingEngtangledActionScope);\n  return thenable;\n}\nfunction pingEngtangledActionScope() {\n  if (\n    0 === --currentEntangledPendingCount &&\n    null !== currentEntangledListeners\n  ) {\n    null !== currentEntangledActionThenable &&\n      (currentEntangledActionThenable.status = \"fulfilled\");\n    var listeners = currentEntangledListeners;\n    currentEntangledListeners = null;\n    currentEntangledLane = 0;\n    currentEntangledActionThenable = null;\n    for (var i = 0; i < listeners.length; i++) (0, listeners[i])();\n  }\n}\nfunction chainThenableValue(thenable, result) {\n  var listeners = [],\n    thenableWithOverride = {\n      status: \"pending\",\n      value: null,\n      reason: null,\n      then: function (resolve) {\n        listeners.push(resolve);\n      }\n    };\n  thenable.then(\n    function () {\n      thenableWithOverride.status = \"fulfilled\";\n      thenableWithOverride.value = result;\n      for (var i = 0; i < listeners.length; i++) (0, listeners[i])(result);\n    },\n    function (error) {\n      thenableWithOverride.status = \"rejected\";\n      thenableWithOverride.reason = error;\n      for (error = 0; error < listeners.length; error++)\n        (0, listeners[error])(void 0);\n    }\n  );\n  return thenableWithOverride;\n}\nvar prevOnStartTransitionFinish = ReactSharedInternals.S;\nReactSharedInternals.S = function (transition, returnValue) {\n  \"object\" === typeof returnValue &&\n    null !== returnValue &&\n    \"function\" === typeof returnValue.then &&\n    entangleAsyncAction(transition, returnValue);\n  null !== prevOnStartTransitionFinish &&\n    prevOnStartTransitionFinish(transition, returnValue);\n};\nvar resumedCache = createCursor(null);\nfunction peekCacheFromPool() {\n  var cacheResumedFromPreviousRender = resumedCache.current;\n  return null !== cacheResumedFromPreviousRender\n    ? cacheResumedFromPreviousRender\n    : workInProgressRoot.pooledCache;\n}\nfunction pushTransition(offscreenWorkInProgress, prevCachePool) {\n  null === prevCachePool\n    ? push(resumedCache, resumedCache.current)\n    : push(resumedCache, prevCachePool.pool);\n}\nfunction getSuspendedCache() {\n  var cacheFromPool = peekCacheFromPool();\n  return null === cacheFromPool\n    ? null\n    : { parent: CacheContext._currentValue, pool: cacheFromPool };\n}\nvar SuspenseException = Error(formatProdErrorMessage(460)),\n  SuspenseyCommitException = Error(formatProdErrorMessage(474)),\n  SuspenseActionException = Error(formatProdErrorMessage(542)),\n  noopSuspenseyCommitThenable = { then: function () {} };\nfunction isThenableResolved(thenable) {\n  thenable = thenable.status;\n  return \"fulfilled\" === thenable || \"rejected\" === thenable;\n}\nfunction noop$3() {}\nfunction trackUsedThenable(thenableState, thenable, index) {\n  index = thenableState[index];\n  void 0 === index\n    ? thenableState.push(thenable)\n    : index !== thenable && (thenable.then(noop$3, noop$3), (thenable = index));\n  switch (thenable.status) {\n    case \"fulfilled\":\n      return thenable.value;\n    case \"rejected\":\n      throw (\n        ((thenableState = thenable.reason),\n        checkIfUseWrappedInAsyncCatch(thenableState),\n        thenableState)\n      );\n    default:\n      if (\"string\" === typeof thenable.status) thenable.then(noop$3, noop$3);\n      else {\n        thenableState = workInProgressRoot;\n        if (null !== thenableState && 100 < thenableState.shellSuspendCounter)\n          throw Error(formatProdErrorMessage(482));\n        thenableState = thenable;\n        thenableState.status = \"pending\";\n        thenableState.then(\n          function (fulfilledValue) {\n            if (\"pending\" === thenable.status) {\n              var fulfilledThenable = thenable;\n              fulfilledThenable.status = \"fulfilled\";\n              fulfilledThenable.value = fulfilledValue;\n            }\n          },\n          function (error) {\n            if (\"pending\" === thenable.status) {\n              var rejectedThenable = thenable;\n              rejectedThenable.status = \"rejected\";\n              rejectedThenable.reason = error;\n            }\n          }\n        );\n      }\n      switch (thenable.status) {\n        case \"fulfilled\":\n          return thenable.value;\n        case \"rejected\":\n          throw (\n            ((thenableState = thenable.reason),\n            checkIfUseWrappedInAsyncCatch(thenableState),\n            thenableState)\n          );\n      }\n      suspendedThenable = thenable;\n      throw SuspenseException;\n  }\n}\nvar suspendedThenable = null;\nfunction getSuspendedThenable() {\n  if (null === suspendedThenable) throw Error(formatProdErrorMessage(459));\n  var thenable = suspendedThenable;\n  suspendedThenable = null;\n  return thenable;\n}\nfunction checkIfUseWrappedInAsyncCatch(rejectedReason) {\n  if (\n    rejectedReason === SuspenseException ||\n    rejectedReason === SuspenseActionException\n  )\n    throw Error(formatProdErrorMessage(483));\n}\nvar hasForceUpdate = !1;\nfunction initializeUpdateQueue(fiber) {\n  fiber.updateQueue = {\n    baseState: fiber.memoizedState,\n    firstBaseUpdate: null,\n    lastBaseUpdate: null,\n    shared: { pending: null, lanes: 0, hiddenCallbacks: null },\n    callbacks: null\n  };\n}\nfunction cloneUpdateQueue(current, workInProgress) {\n  current = current.updateQueue;\n  workInProgress.updateQueue === current &&\n    (workInProgress.updateQueue = {\n      baseState: current.baseState,\n      firstBaseUpdate: current.firstBaseUpdate,\n      lastBaseUpdate: current.lastBaseUpdate,\n      shared: current.shared,\n      callbacks: null\n    });\n}\nfunction createUpdate(lane) {\n  return { lane: lane, tag: 0, payload: null, callback: null, next: null };\n}\nfunction enqueueUpdate(fiber, update, lane) {\n  var updateQueue = fiber.updateQueue;\n  if (null === updateQueue) return null;\n  updateQueue = updateQueue.shared;\n  if (0 !== (executionContext & 2)) {\n    var pending = updateQueue.pending;\n    null === pending\n      ? (update.next = update)\n      : ((update.next = pending.next), (pending.next = update));\n    updateQueue.pending = update;\n    update = getRootForUpdatedFiber(fiber);\n    markUpdateLaneFromFiberToRoot(fiber, null, lane);\n    return update;\n  }\n  enqueueUpdate$1(fiber, updateQueue, update, lane);\n  return getRootForUpdatedFiber(fiber);\n}\nfunction entangleTransitions(root, fiber, lane) {\n  fiber = fiber.updateQueue;\n  if (null !== fiber && ((fiber = fiber.shared), 0 !== (lane & 4194048))) {\n    var queueLanes = fiber.lanes;\n    queueLanes &= root.pendingLanes;\n    lane |= queueLanes;\n    fiber.lanes = lane;\n    markRootEntangled(root, lane);\n  }\n}\nfunction enqueueCapturedUpdate(workInProgress, capturedUpdate) {\n  var queue = workInProgress.updateQueue,\n    current = workInProgress.alternate;\n  if (\n    null !== current &&\n    ((current = current.updateQueue), queue === current)\n  ) {\n    var newFirst = null,\n      newLast = null;\n    queue = queue.firstBaseUpdate;\n    if (null !== queue) {\n      do {\n        var clone = {\n          lane: queue.lane,\n          tag: queue.tag,\n          payload: queue.payload,\n          callback: null,\n          next: null\n        };\n        null === newLast\n          ? (newFirst = newLast = clone)\n          : (newLast = newLast.next = clone);\n        queue = queue.next;\n      } while (null !== queue);\n      null === newLast\n        ? (newFirst = newLast = capturedUpdate)\n        : (newLast = newLast.next = capturedUpdate);\n    } else newFirst = newLast = capturedUpdate;\n    queue = {\n      baseState: current.baseState,\n      firstBaseUpdate: newFirst,\n      lastBaseUpdate: newLast,\n      shared: current.shared,\n      callbacks: current.callbacks\n    };\n    workInProgress.updateQueue = queue;\n    return;\n  }\n  workInProgress = queue.lastBaseUpdate;\n  null === workInProgress\n    ? (queue.firstBaseUpdate = capturedUpdate)\n    : (workInProgress.next = capturedUpdate);\n  queue.lastBaseUpdate = capturedUpdate;\n}\nvar didReadFromEntangledAsyncAction = !1;\nfunction suspendIfUpdateReadFromEntangledAsyncAction() {\n  if (didReadFromEntangledAsyncAction) {\n    var entangledActionThenable = currentEntangledActionThenable;\n    if (null !== entangledActionThenable) throw entangledActionThenable;\n  }\n}\nfunction processUpdateQueue(\n  workInProgress$jscomp$0,\n  props,\n  instance$jscomp$0,\n  renderLanes\n) {\n  didReadFromEntangledAsyncAction = !1;\n  var queue = workInProgress$jscomp$0.updateQueue;\n  hasForceUpdate = !1;\n  var firstBaseUpdate = queue.firstBaseUpdate,\n    lastBaseUpdate = queue.lastBaseUpdate,\n    pendingQueue = queue.shared.pending;\n  if (null !== pendingQueue) {\n    queue.shared.pending = null;\n    var lastPendingUpdate = pendingQueue,\n      firstPendingUpdate = lastPendingUpdate.next;\n    lastPendingUpdate.next = null;\n    null === lastBaseUpdate\n      ? (firstBaseUpdate = firstPendingUpdate)\n      : (lastBaseUpdate.next = firstPendingUpdate);\n    lastBaseUpdate = lastPendingUpdate;\n    var current = workInProgress$jscomp$0.alternate;\n    null !== current &&\n      ((current = current.updateQueue),\n      (pendingQueue = current.lastBaseUpdate),\n      pendingQueue !== lastBaseUpdate &&\n        (null === pendingQueue\n          ? (current.firstBaseUpdate = firstPendingUpdate)\n          : (pendingQueue.next = firstPendingUpdate),\n        (current.lastBaseUpdate = lastPendingUpdate)));\n  }\n  if (null !== firstBaseUpdate) {\n    var newState = queue.baseState;\n    lastBaseUpdate = 0;\n    current = firstPendingUpdate = lastPendingUpdate = null;\n    pendingQueue = firstBaseUpdate;\n    do {\n      var updateLane = pendingQueue.lane & -536870913,\n        isHiddenUpdate = updateLane !== pendingQueue.lane;\n      if (\n        isHiddenUpdate\n          ? (workInProgressRootRenderLanes & updateLane) === updateLane\n          : (renderLanes & updateLane) === updateLane\n      ) {\n        0 !== updateLane &&\n          updateLane === currentEntangledLane &&\n          (didReadFromEntangledAsyncAction = !0);\n        null !== current &&\n          (current = current.next =\n            {\n              lane: 0,\n              tag: pendingQueue.tag,\n              payload: pendingQueue.payload,\n              callback: null,\n              next: null\n            });\n        a: {\n          var workInProgress = workInProgress$jscomp$0,\n            update = pendingQueue;\n          updateLane = props;\n          var instance = instance$jscomp$0;\n          switch (update.tag) {\n            case 1:\n              workInProgress = update.payload;\n              if (\"function\" === typeof workInProgress) {\n                newState = workInProgress.call(instance, newState, updateLane);\n                break a;\n              }\n              newState = workInProgress;\n              break a;\n            case 3:\n              workInProgress.flags = (workInProgress.flags & -65537) | 128;\n            case 0:\n              workInProgress = update.payload;\n              updateLane =\n                \"function\" === typeof workInProgress\n                  ? workInProgress.call(instance, newState, updateLane)\n                  : workInProgress;\n              if (null === updateLane || void 0 === updateLane) break a;\n              newState = assign({}, newState, updateLane);\n              break a;\n            case 2:\n              hasForceUpdate = !0;\n          }\n        }\n        updateLane = pendingQueue.callback;\n        null !== updateLane &&\n          ((workInProgress$jscomp$0.flags |= 64),\n          isHiddenUpdate && (workInProgress$jscomp$0.flags |= 8192),\n          (isHiddenUpdate = queue.callbacks),\n          null === isHiddenUpdate\n            ? (queue.callbacks = [updateLane])\n            : isHiddenUpdate.push(updateLane));\n      } else\n        (isHiddenUpdate = {\n          lane: updateLane,\n          tag: pendingQueue.tag,\n          payload: pendingQueue.payload,\n          callback: pendingQueue.callback,\n          next: null\n        }),\n          null === current\n            ? ((firstPendingUpdate = current = isHiddenUpdate),\n              (lastPendingUpdate = newState))\n            : (current = current.next = isHiddenUpdate),\n          (lastBaseUpdate |= updateLane);\n      pendingQueue = pendingQueue.next;\n      if (null === pendingQueue)\n        if (((pendingQueue = queue.shared.pending), null === pendingQueue))\n          break;\n        else\n          (isHiddenUpdate = pendingQueue),\n            (pendingQueue = isHiddenUpdate.next),\n            (isHiddenUpdate.next = null),\n            (queue.lastBaseUpdate = isHiddenUpdate),\n            (queue.shared.pending = null);\n    } while (1);\n    null === current && (lastPendingUpdate = newState);\n    queue.baseState = lastPendingUpdate;\n    queue.firstBaseUpdate = firstPendingUpdate;\n    queue.lastBaseUpdate = current;\n    null === firstBaseUpdate && (queue.shared.lanes = 0);\n    workInProgressRootSkippedLanes |= lastBaseUpdate;\n    workInProgress$jscomp$0.lanes = lastBaseUpdate;\n    workInProgress$jscomp$0.memoizedState = newState;\n  }\n}\nfunction callCallback(callback, context) {\n  if (\"function\" !== typeof callback)\n    throw Error(formatProdErrorMessage(191, callback));\n  callback.call(context);\n}\nfunction commitCallbacks(updateQueue, context) {\n  var callbacks = updateQueue.callbacks;\n  if (null !== callbacks)\n    for (\n      updateQueue.callbacks = null, updateQueue = 0;\n      updateQueue < callbacks.length;\n      updateQueue++\n    )\n      callCallback(callbacks[updateQueue], context);\n}\nvar currentTreeHiddenStackCursor = createCursor(null),\n  prevEntangledRenderLanesCursor = createCursor(0);\nfunction pushHiddenContext(fiber, context) {\n  fiber = entangledRenderLanes;\n  push(prevEntangledRenderLanesCursor, fiber);\n  push(currentTreeHiddenStackCursor, context);\n  entangledRenderLanes = fiber | context.baseLanes;\n}\nfunction reuseHiddenContextOnStack() {\n  push(prevEntangledRenderLanesCursor, entangledRenderLanes);\n  push(currentTreeHiddenStackCursor, currentTreeHiddenStackCursor.current);\n}\nfunction popHiddenContext() {\n  entangledRenderLanes = prevEntangledRenderLanesCursor.current;\n  pop(currentTreeHiddenStackCursor);\n  pop(prevEntangledRenderLanesCursor);\n}\nvar renderLanes = 0,\n  currentlyRenderingFiber = null,\n  currentHook = null,\n  workInProgressHook = null,\n  didScheduleRenderPhaseUpdate = !1,\n  didScheduleRenderPhaseUpdateDuringThisPass = !1,\n  shouldDoubleInvokeUserFnsInHooksDEV = !1,\n  localIdCounter = 0,\n  thenableIndexCounter$1 = 0,\n  thenableState$1 = null,\n  globalClientIdCounter = 0;\nfunction throwInvalidHookError() {\n  throw Error(formatProdErrorMessage(321));\n}\nfunction areHookInputsEqual(nextDeps, prevDeps) {\n  if (null === prevDeps) return !1;\n  for (var i = 0; i < prevDeps.length && i < nextDeps.length; i++)\n    if (!objectIs(nextDeps[i], prevDeps[i])) return !1;\n  return !0;\n}\nfunction renderWithHooks(\n  current,\n  workInProgress,\n  Component,\n  props,\n  secondArg,\n  nextRenderLanes\n) {\n  renderLanes = nextRenderLanes;\n  currentlyRenderingFiber = workInProgress;\n  workInProgress.memoizedState = null;\n  workInProgress.updateQueue = null;\n  workInProgress.lanes = 0;\n  ReactSharedInternals.H =\n    null === current || null === current.memoizedState\n      ? HooksDispatcherOnMount\n      : HooksDispatcherOnUpdate;\n  shouldDoubleInvokeUserFnsInHooksDEV = !1;\n  nextRenderLanes = Component(props, secondArg);\n  shouldDoubleInvokeUserFnsInHooksDEV = !1;\n  didScheduleRenderPhaseUpdateDuringThisPass &&\n    (nextRenderLanes = renderWithHooksAgain(\n      workInProgress,\n      Component,\n      props,\n      secondArg\n    ));\n  finishRenderingHooks(current);\n  return nextRenderLanes;\n}\nfunction finishRenderingHooks(current) {\n  ReactSharedInternals.H = ContextOnlyDispatcher;\n  var didRenderTooFewHooks = null !== currentHook && null !== currentHook.next;\n  renderLanes = 0;\n  workInProgressHook = currentHook = currentlyRenderingFiber = null;\n  didScheduleRenderPhaseUpdate = !1;\n  thenableIndexCounter$1 = 0;\n  thenableState$1 = null;\n  if (didRenderTooFewHooks) throw Error(formatProdErrorMessage(300));\n  null === current ||\n    didReceiveUpdate ||\n    ((current = current.dependencies),\n    null !== current &&\n      checkIfContextChanged(current) &&\n      (didReceiveUpdate = !0));\n}\nfunction renderWithHooksAgain(workInProgress, Component, props, secondArg) {\n  currentlyRenderingFiber = workInProgress;\n  var numberOfReRenders = 0;\n  do {\n    didScheduleRenderPhaseUpdateDuringThisPass && (thenableState$1 = null);\n    thenableIndexCounter$1 = 0;\n    didScheduleRenderPhaseUpdateDuringThisPass = !1;\n    if (25 <= numberOfReRenders) throw Error(formatProdErrorMessage(301));\n    numberOfReRenders += 1;\n    workInProgressHook = currentHook = null;\n    if (null != workInProgress.updateQueue) {\n      var children = workInProgress.updateQueue;\n      children.lastEffect = null;\n      children.events = null;\n      children.stores = null;\n      null != children.memoCache && (children.memoCache.index = 0);\n    }\n    ReactSharedInternals.H = HooksDispatcherOnRerender;\n    children = Component(props, secondArg);\n  } while (didScheduleRenderPhaseUpdateDuringThisPass);\n  return children;\n}\nfunction TransitionAwareHostComponent() {\n  var dispatcher = ReactSharedInternals.H,\n    maybeThenable = dispatcher.useState()[0];\n  maybeThenable =\n    \"function\" === typeof maybeThenable.then\n      ? useThenable(maybeThenable)\n      : maybeThenable;\n  dispatcher = dispatcher.useState()[0];\n  (null !== currentHook ? currentHook.memoizedState : null) !== dispatcher &&\n    (currentlyRenderingFiber.flags |= 1024);\n  return maybeThenable;\n}\nfunction checkDidRenderIdHook() {\n  var didRenderIdHook = 0 !== localIdCounter;\n  localIdCounter = 0;\n  return didRenderIdHook;\n}\nfunction bailoutHooks(current, workInProgress, lanes) {\n  workInProgress.updateQueue = current.updateQueue;\n  workInProgress.flags &= -2053;\n  current.lanes &= ~lanes;\n}\nfunction resetHooksOnUnwind(workInProgress) {\n  if (didScheduleRenderPhaseUpdate) {\n    for (\n      workInProgress = workInProgress.memoizedState;\n      null !== workInProgress;\n\n    ) {\n      var queue = workInProgress.queue;\n      null !== queue && (queue.pending = null);\n      workInProgress = workInProgress.next;\n    }\n    didScheduleRenderPhaseUpdate = !1;\n  }\n  renderLanes = 0;\n  workInProgressHook = currentHook = currentlyRenderingFiber = null;\n  didScheduleRenderPhaseUpdateDuringThisPass = !1;\n  thenableIndexCounter$1 = localIdCounter = 0;\n  thenableState$1 = null;\n}\nfunction mountWorkInProgressHook() {\n  var hook = {\n    memoizedState: null,\n    baseState: null,\n    baseQueue: null,\n    queue: null,\n    next: null\n  };\n  null === workInProgressHook\n    ? (currentlyRenderingFiber.memoizedState = workInProgressHook = hook)\n    : (workInProgressHook = workInProgressHook.next = hook);\n  return workInProgressHook;\n}\nfunction updateWorkInProgressHook() {\n  if (null === currentHook) {\n    var nextCurrentHook = currentlyRenderingFiber.alternate;\n    nextCurrentHook =\n      null !== nextCurrentHook ? nextCurrentHook.memoizedState : null;\n  } else nextCurrentHook = currentHook.next;\n  var nextWorkInProgressHook =\n    null === workInProgressHook\n      ? currentlyRenderingFiber.memoizedState\n      : workInProgressHook.next;\n  if (null !== nextWorkInProgressHook)\n    (workInProgressHook = nextWorkInProgressHook),\n      (currentHook = nextCurrentHook);\n  else {\n    if (null === nextCurrentHook) {\n      if (null === currentlyRenderingFiber.alternate)\n        throw Error(formatProdErrorMessage(467));\n      throw Error(formatProdErrorMessage(310));\n    }\n    currentHook = nextCurrentHook;\n    nextCurrentHook = {\n      memoizedState: currentHook.memoizedState,\n      baseState: currentHook.baseState,\n      baseQueue: currentHook.baseQueue,\n      queue: currentHook.queue,\n      next: null\n    };\n    null === workInProgressHook\n      ? (currentlyRenderingFiber.memoizedState = workInProgressHook =\n          nextCurrentHook)\n      : (workInProgressHook = workInProgressHook.next = nextCurrentHook);\n  }\n  return workInProgressHook;\n}\nfunction createFunctionComponentUpdateQueue() {\n  return { lastEffect: null, events: null, stores: null, memoCache: null };\n}\nfunction useThenable(thenable) {\n  var index = thenableIndexCounter$1;\n  thenableIndexCounter$1 += 1;\n  null === thenableState$1 && (thenableState$1 = []);\n  thenable = trackUsedThenable(thenableState$1, thenable, index);\n  index = currentlyRenderingFiber;\n  null ===\n    (null === workInProgressHook\n      ? index.memoizedState\n      : workInProgressHook.next) &&\n    ((index = index.alternate),\n    (ReactSharedInternals.H =\n      null === index || null === index.memoizedState\n        ? HooksDispatcherOnMount\n        : HooksDispatcherOnUpdate));\n  return thenable;\n}\nfunction use(usable) {\n  if (null !== usable && \"object\" === typeof usable) {\n    if (\"function\" === typeof usable.then) return useThenable(usable);\n    if (usable.$$typeof === REACT_CONTEXT_TYPE) return readContext(usable);\n  }\n  throw Error(formatProdErrorMessage(438, String(usable)));\n}\nfunction useMemoCache(size) {\n  var memoCache = null,\n    updateQueue = currentlyRenderingFiber.updateQueue;\n  null !== updateQueue && (memoCache = updateQueue.memoCache);\n  if (null == memoCache) {\n    var current = currentlyRenderingFiber.alternate;\n    null !== current &&\n      ((current = current.updateQueue),\n      null !== current &&\n        ((current = current.memoCache),\n        null != current &&\n          (memoCache = {\n            data: current.data.map(function (array) {\n              return array.slice();\n            }),\n            index: 0\n          })));\n  }\n  null == memoCache && (memoCache = { data: [], index: 0 });\n  null === updateQueue &&\n    ((updateQueue = createFunctionComponentUpdateQueue()),\n    (currentlyRenderingFiber.updateQueue = updateQueue));\n  updateQueue.memoCache = memoCache;\n  updateQueue = memoCache.data[memoCache.index];\n  if (void 0 === updateQueue)\n    for (\n      updateQueue = memoCache.data[memoCache.index] = Array(size), current = 0;\n      current < size;\n      current++\n    )\n      updateQueue[current] = REACT_MEMO_CACHE_SENTINEL;\n  memoCache.index++;\n  return updateQueue;\n}\nfunction basicStateReducer(state, action) {\n  return \"function\" === typeof action ? action(state) : action;\n}\nfunction updateReducer(reducer) {\n  var hook = updateWorkInProgressHook();\n  return updateReducerImpl(hook, currentHook, reducer);\n}\nfunction updateReducerImpl(hook, current, reducer) {\n  var queue = hook.queue;\n  if (null === queue) throw Error(formatProdErrorMessage(311));\n  queue.lastRenderedReducer = reducer;\n  var baseQueue = hook.baseQueue,\n    pendingQueue = queue.pending;\n  if (null !== pendingQueue) {\n    if (null !== baseQueue) {\n      var baseFirst = baseQueue.next;\n      baseQueue.next = pendingQueue.next;\n      pendingQueue.next = baseFirst;\n    }\n    current.baseQueue = baseQueue = pendingQueue;\n    queue.pending = null;\n  }\n  pendingQueue = hook.baseState;\n  if (null === baseQueue) hook.memoizedState = pendingQueue;\n  else {\n    current = baseQueue.next;\n    var newBaseQueueFirst = (baseFirst = null),\n      newBaseQueueLast = null,\n      update = current,\n      didReadFromEntangledAsyncAction$32 = !1;\n    do {\n      var updateLane = update.lane & -536870913;\n      if (\n        updateLane !== update.lane\n          ? (workInProgressRootRenderLanes & updateLane) === updateLane\n          : (renderLanes & updateLane) === updateLane\n      ) {\n        var revertLane = update.revertLane;\n        if (0 === revertLane)\n          null !== newBaseQueueLast &&\n            (newBaseQueueLast = newBaseQueueLast.next =\n              {\n                lane: 0,\n                revertLane: 0,\n                action: update.action,\n                hasEagerState: update.hasEagerState,\n                eagerState: update.eagerState,\n                next: null\n              }),\n            updateLane === currentEntangledLane &&\n              (didReadFromEntangledAsyncAction$32 = !0);\n        else if ((renderLanes & revertLane) === revertLane) {\n          update = update.next;\n          revertLane === currentEntangledLane &&\n            (didReadFromEntangledAsyncAction$32 = !0);\n          continue;\n        } else\n          (updateLane = {\n            lane: 0,\n            revertLane: update.revertLane,\n            action: update.action,\n            hasEagerState: update.hasEagerState,\n            eagerState: update.eagerState,\n            next: null\n          }),\n            null === newBaseQueueLast\n              ? ((newBaseQueueFirst = newBaseQueueLast = updateLane),\n                (baseFirst = pendingQueue))\n              : (newBaseQueueLast = newBaseQueueLast.next = updateLane),\n            (currentlyRenderingFiber.lanes |= revertLane),\n            (workInProgressRootSkippedLanes |= revertLane);\n        updateLane = update.action;\n        shouldDoubleInvokeUserFnsInHooksDEV &&\n          reducer(pendingQueue, updateLane);\n        pendingQueue = update.hasEagerState\n          ? update.eagerState\n          : reducer(pendingQueue, updateLane);\n      } else\n        (revertLane = {\n          lane: updateLane,\n          revertLane: update.revertLane,\n          action: update.action,\n          hasEagerState: update.hasEagerState,\n          eagerState: update.eagerState,\n          next: null\n        }),\n          null === newBaseQueueLast\n            ? ((newBaseQueueFirst = newBaseQueueLast = revertLane),\n              (baseFirst = pendingQueue))\n            : (newBaseQueueLast = newBaseQueueLast.next = revertLane),\n          (currentlyRenderingFiber.lanes |= updateLane),\n          (workInProgressRootSkippedLanes |= updateLane);\n      update = update.next;\n    } while (null !== update && update !== current);\n    null === newBaseQueueLast\n      ? (baseFirst = pendingQueue)\n      : (newBaseQueueLast.next = newBaseQueueFirst);\n    if (\n      !objectIs(pendingQueue, hook.memoizedState) &&\n      ((didReceiveUpdate = !0),\n      didReadFromEntangledAsyncAction$32 &&\n        ((reducer = currentEntangledActionThenable), null !== reducer))\n    )\n      throw reducer;\n    hook.memoizedState = pendingQueue;\n    hook.baseState = baseFirst;\n    hook.baseQueue = newBaseQueueLast;\n    queue.lastRenderedState = pendingQueue;\n  }\n  null === baseQueue && (queue.lanes = 0);\n  return [hook.memoizedState, queue.dispatch];\n}\nfunction rerenderReducer(reducer) {\n  var hook = updateWorkInProgressHook(),\n    queue = hook.queue;\n  if (null === queue) throw Error(formatProdErrorMessage(311));\n  queue.lastRenderedReducer = reducer;\n  var dispatch = queue.dispatch,\n    lastRenderPhaseUpdate = queue.pending,\n    newState = hook.memoizedState;\n  if (null !== lastRenderPhaseUpdate) {\n    queue.pending = null;\n    var update = (lastRenderPhaseUpdate = lastRenderPhaseUpdate.next);\n    do (newState = reducer(newState, update.action)), (update = update.next);\n    while (update !== lastRenderPhaseUpdate);\n    objectIs(newState, hook.memoizedState) || (didReceiveUpdate = !0);\n    hook.memoizedState = newState;\n    null === hook.baseQueue && (hook.baseState = newState);\n    queue.lastRenderedState = newState;\n  }\n  return [newState, dispatch];\n}\nfunction updateSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) {\n  var fiber = currentlyRenderingFiber,\n    hook = updateWorkInProgressHook(),\n    isHydrating$jscomp$0 = isHydrating;\n  if (isHydrating$jscomp$0) {\n    if (void 0 === getServerSnapshot) throw Error(formatProdErrorMessage(407));\n    getServerSnapshot = getServerSnapshot();\n  } else getServerSnapshot = getSnapshot();\n  var snapshotChanged = !objectIs(\n    (currentHook || hook).memoizedState,\n    getServerSnapshot\n  );\n  snapshotChanged &&\n    ((hook.memoizedState = getServerSnapshot), (didReceiveUpdate = !0));\n  hook = hook.queue;\n  var create = subscribeToStore.bind(null, fiber, hook, subscribe);\n  updateEffectImpl(2048, 8, create, [subscribe]);\n  if (\n    hook.getSnapshot !== getSnapshot ||\n    snapshotChanged ||\n    (null !== workInProgressHook && workInProgressHook.memoizedState.tag & 1)\n  ) {\n    fiber.flags |= 2048;\n    pushSimpleEffect(\n      9,\n      createEffectInstance(),\n      updateStoreInstance.bind(\n        null,\n        fiber,\n        hook,\n        getServerSnapshot,\n        getSnapshot\n      ),\n      null\n    );\n    if (null === workInProgressRoot) throw Error(formatProdErrorMessage(349));\n    isHydrating$jscomp$0 ||\n      0 !== (renderLanes & 124) ||\n      pushStoreConsistencyCheck(fiber, getSnapshot, getServerSnapshot);\n  }\n  return getServerSnapshot;\n}\nfunction pushStoreConsistencyCheck(fiber, getSnapshot, renderedSnapshot) {\n  fiber.flags |= 16384;\n  fiber = { getSnapshot: getSnapshot, value: renderedSnapshot };\n  getSnapshot = currentlyRenderingFiber.updateQueue;\n  null === getSnapshot\n    ? ((getSnapshot = createFunctionComponentUpdateQueue()),\n      (currentlyRenderingFiber.updateQueue = getSnapshot),\n      (getSnapshot.stores = [fiber]))\n    : ((renderedSnapshot = getSnapshot.stores),\n      null === renderedSnapshot\n        ? (getSnapshot.stores = [fiber])\n        : renderedSnapshot.push(fiber));\n}\nfunction updateStoreInstance(fiber, inst, nextSnapshot, getSnapshot) {\n  inst.value = nextSnapshot;\n  inst.getSnapshot = getSnapshot;\n  checkIfSnapshotChanged(inst) && forceStoreRerender(fiber);\n}\nfunction subscribeToStore(fiber, inst, subscribe) {\n  return subscribe(function () {\n    checkIfSnapshotChanged(inst) && forceStoreRerender(fiber);\n  });\n}\nfunction checkIfSnapshotChanged(inst) {\n  var latestGetSnapshot = inst.getSnapshot;\n  inst = inst.value;\n  try {\n    var nextValue = latestGetSnapshot();\n    return !objectIs(inst, nextValue);\n  } catch (error) {\n    return !0;\n  }\n}\nfunction forceStoreRerender(fiber) {\n  var root = enqueueConcurrentRenderForLane(fiber, 2);\n  null !== root && scheduleUpdateOnFiber(root, fiber, 2);\n}\nfunction mountStateImpl(initialState) {\n  var hook = mountWorkInProgressHook();\n  if (\"function\" === typeof initialState) {\n    var initialStateInitializer = initialState;\n    initialState = initialStateInitializer();\n    if (shouldDoubleInvokeUserFnsInHooksDEV) {\n      setIsStrictModeForDevtools(!0);\n      try {\n        initialStateInitializer();\n      } finally {\n        setIsStrictModeForDevtools(!1);\n      }\n    }\n  }\n  hook.memoizedState = hook.baseState = initialState;\n  hook.queue = {\n    pending: null,\n    lanes: 0,\n    dispatch: null,\n    lastRenderedReducer: basicStateReducer,\n    lastRenderedState: initialState\n  };\n  return hook;\n}\nfunction updateOptimisticImpl(hook, current, passthrough, reducer) {\n  hook.baseState = passthrough;\n  return updateReducerImpl(\n    hook,\n    currentHook,\n    \"function\" === typeof reducer ? reducer : basicStateReducer\n  );\n}\nfunction dispatchActionState(\n  fiber,\n  actionQueue,\n  setPendingState,\n  setState,\n  payload\n) {\n  if (isRenderPhaseUpdate(fiber)) throw Error(formatProdErrorMessage(485));\n  fiber = actionQueue.action;\n  if (null !== fiber) {\n    var actionNode = {\n      payload: payload,\n      action: fiber,\n      next: null,\n      isTransition: !0,\n      status: \"pending\",\n      value: null,\n      reason: null,\n      listeners: [],\n      then: function (listener) {\n        actionNode.listeners.push(listener);\n      }\n    };\n    null !== ReactSharedInternals.T\n      ? setPendingState(!0)\n      : (actionNode.isTransition = !1);\n    setState(actionNode);\n    setPendingState = actionQueue.pending;\n    null === setPendingState\n      ? ((actionNode.next = actionQueue.pending = actionNode),\n        runActionStateAction(actionQueue, actionNode))\n      : ((actionNode.next = setPendingState.next),\n        (actionQueue.pending = setPendingState.next = actionNode));\n  }\n}\nfunction runActionStateAction(actionQueue, node) {\n  var action = node.action,\n    payload = node.payload,\n    prevState = actionQueue.state;\n  if (node.isTransition) {\n    var prevTransition = ReactSharedInternals.T,\n      currentTransition = {};\n    ReactSharedInternals.T = currentTransition;\n    try {\n      var returnValue = action(prevState, payload),\n        onStartTransitionFinish = ReactSharedInternals.S;\n      null !== onStartTransitionFinish &&\n        onStartTransitionFinish(currentTransition, returnValue);\n      handleActionReturnValue(actionQueue, node, returnValue);\n    } catch (error) {\n      onActionError(actionQueue, node, error);\n    } finally {\n      ReactSharedInternals.T = prevTransition;\n    }\n  } else\n    try {\n      (prevTransition = action(prevState, payload)),\n        handleActionReturnValue(actionQueue, node, prevTransition);\n    } catch (error$38) {\n      onActionError(actionQueue, node, error$38);\n    }\n}\nfunction handleActionReturnValue(actionQueue, node, returnValue) {\n  null !== returnValue &&\n  \"object\" === typeof returnValue &&\n  \"function\" === typeof returnValue.then\n    ? returnValue.then(\n        function (nextState) {\n          onActionSuccess(actionQueue, node, nextState);\n        },\n        function (error) {\n          return onActionError(actionQueue, node, error);\n        }\n      )\n    : onActionSuccess(actionQueue, node, returnValue);\n}\nfunction onActionSuccess(actionQueue, actionNode, nextState) {\n  actionNode.status = \"fulfilled\";\n  actionNode.value = nextState;\n  notifyActionListeners(actionNode);\n  actionQueue.state = nextState;\n  actionNode = actionQueue.pending;\n  null !== actionNode &&\n    ((nextState = actionNode.next),\n    nextState === actionNode\n      ? (actionQueue.pending = null)\n      : ((nextState = nextState.next),\n        (actionNode.next = nextState),\n        runActionStateAction(actionQueue, nextState)));\n}\nfunction onActionError(actionQueue, actionNode, error) {\n  var last = actionQueue.pending;\n  actionQueue.pending = null;\n  if (null !== last) {\n    last = last.next;\n    do\n      (actionNode.status = \"rejected\"),\n        (actionNode.reason = error),\n        notifyActionListeners(actionNode),\n        (actionNode = actionNode.next);\n    while (actionNode !== last);\n  }\n  actionQueue.action = null;\n}\nfunction notifyActionListeners(actionNode) {\n  actionNode = actionNode.listeners;\n  for (var i = 0; i < actionNode.length; i++) (0, actionNode[i])();\n}\nfunction actionStateReducer(oldState, newState) {\n  return newState;\n}\nfunction mountActionState(action, initialStateProp) {\n  if (isHydrating) {\n    var ssrFormState = workInProgressRoot.formState;\n    if (null !== ssrFormState) {\n      a: {\n        var JSCompiler_inline_result = currentlyRenderingFiber;\n        if (isHydrating) {\n          if (nextHydratableInstance) {\n            b: {\n              var JSCompiler_inline_result$jscomp$0 = nextHydratableInstance;\n              for (\n                var inRootOrSingleton = rootOrSingletonContext;\n                8 !== JSCompiler_inline_result$jscomp$0.nodeType;\n\n              ) {\n                if (!inRootOrSingleton) {\n                  JSCompiler_inline_result$jscomp$0 = null;\n                  break b;\n                }\n                JSCompiler_inline_result$jscomp$0 = getNextHydratable(\n                  JSCompiler_inline_result$jscomp$0.nextSibling\n                );\n                if (null === JSCompiler_inline_result$jscomp$0) {\n                  JSCompiler_inline_result$jscomp$0 = null;\n                  break b;\n                }\n              }\n              inRootOrSingleton = JSCompiler_inline_result$jscomp$0.data;\n              JSCompiler_inline_result$jscomp$0 =\n                \"F!\" === inRootOrSingleton || \"F\" === inRootOrSingleton\n                  ? JSCompiler_inline_result$jscomp$0\n                  : null;\n            }\n            if (JSCompiler_inline_result$jscomp$0) {\n              nextHydratableInstance = getNextHydratable(\n                JSCompiler_inline_result$jscomp$0.nextSibling\n              );\n              JSCompiler_inline_result =\n                \"F!\" === JSCompiler_inline_result$jscomp$0.data;\n              break a;\n            }\n          }\n          throwOnHydrationMismatch(JSCompiler_inline_result);\n        }\n        JSCompiler_inline_result = !1;\n      }\n      JSCompiler_inline_result && (initialStateProp = ssrFormState[0]);\n    }\n  }\n  ssrFormState = mountWorkInProgressHook();\n  ssrFormState.memoizedState = ssrFormState.baseState = initialStateProp;\n  JSCompiler_inline_result = {\n    pending: null,\n    lanes: 0,\n    dispatch: null,\n    lastRenderedReducer: actionStateReducer,\n    lastRenderedState: initialStateProp\n  };\n  ssrFormState.queue = JSCompiler_inline_result;\n  ssrFormState = dispatchSetState.bind(\n    null,\n    currentlyRenderingFiber,\n    JSCompiler_inline_result\n  );\n  JSCompiler_inline_result.dispatch = ssrFormState;\n  JSCompiler_inline_result = mountStateImpl(!1);\n  inRootOrSingleton = dispatchOptimisticSetState.bind(\n    null,\n    currentlyRenderingFiber,\n    !1,\n    JSCompiler_inline_result.queue\n  );\n  JSCompiler_inline_result = mountWorkInProgressHook();\n  JSCompiler_inline_result$jscomp$0 = {\n    state: initialStateProp,\n    dispatch: null,\n    action: action,\n    pending: null\n  };\n  JSCompiler_inline_result.queue = JSCompiler_inline_result$jscomp$0;\n  ssrFormState = dispatchActionState.bind(\n    null,\n    currentlyRenderingFiber,\n    JSCompiler_inline_result$jscomp$0,\n    inRootOrSingleton,\n    ssrFormState\n  );\n  JSCompiler_inline_result$jscomp$0.dispatch = ssrFormState;\n  JSCompiler_inline_result.memoizedState = action;\n  return [initialStateProp, ssrFormState, !1];\n}\nfunction updateActionState(action) {\n  var stateHook = updateWorkInProgressHook();\n  return updateActionStateImpl(stateHook, currentHook, action);\n}\nfunction updateActionStateImpl(stateHook, currentStateHook, action) {\n  currentStateHook = updateReducerImpl(\n    stateHook,\n    currentStateHook,\n    actionStateReducer\n  )[0];\n  stateHook = updateReducer(basicStateReducer)[0];\n  if (\n    \"object\" === typeof currentStateHook &&\n    null !== currentStateHook &&\n    \"function\" === typeof currentStateHook.then\n  )\n    try {\n      var state = useThenable(currentStateHook);\n    } catch (x) {\n      if (x === SuspenseException) throw SuspenseActionException;\n      throw x;\n    }\n  else state = currentStateHook;\n  currentStateHook = updateWorkInProgressHook();\n  var actionQueue = currentStateHook.queue,\n    dispatch = actionQueue.dispatch;\n  action !== currentStateHook.memoizedState &&\n    ((currentlyRenderingFiber.flags |= 2048),\n    pushSimpleEffect(\n      9,\n      createEffectInstance(),\n      actionStateActionEffect.bind(null, actionQueue, action),\n      null\n    ));\n  return [state, dispatch, stateHook];\n}\nfunction actionStateActionEffect(actionQueue, action) {\n  actionQueue.action = action;\n}\nfunction rerenderActionState(action) {\n  var stateHook = updateWorkInProgressHook(),\n    currentStateHook = currentHook;\n  if (null !== currentStateHook)\n    return updateActionStateImpl(stateHook, currentStateHook, action);\n  updateWorkInProgressHook();\n  stateHook = stateHook.memoizedState;\n  currentStateHook = updateWorkInProgressHook();\n  var dispatch = currentStateHook.queue.dispatch;\n  currentStateHook.memoizedState = action;\n  return [stateHook, dispatch, !1];\n}\nfunction pushSimpleEffect(tag, inst, create, createDeps) {\n  tag = { tag: tag, create: create, deps: createDeps, inst: inst, next: null };\n  inst = currentlyRenderingFiber.updateQueue;\n  null === inst &&\n    ((inst = createFunctionComponentUpdateQueue()),\n    (currentlyRenderingFiber.updateQueue = inst));\n  create = inst.lastEffect;\n  null === create\n    ? (inst.lastEffect = tag.next = tag)\n    : ((createDeps = create.next),\n      (create.next = tag),\n      (tag.next = createDeps),\n      (inst.lastEffect = tag));\n  return tag;\n}\nfunction createEffectInstance() {\n  return { destroy: void 0, resource: void 0 };\n}\nfunction updateRef() {\n  return updateWorkInProgressHook().memoizedState;\n}\nfunction mountEffectImpl(fiberFlags, hookFlags, create, createDeps) {\n  var hook = mountWorkInProgressHook();\n  createDeps = void 0 === createDeps ? null : createDeps;\n  currentlyRenderingFiber.flags |= fiberFlags;\n  hook.memoizedState = pushSimpleEffect(\n    1 | hookFlags,\n    createEffectInstance(),\n    create,\n    createDeps\n  );\n}\nfunction updateEffectImpl(fiberFlags, hookFlags, create, deps) {\n  var hook = updateWorkInProgressHook();\n  deps = void 0 === deps ? null : deps;\n  var inst = hook.memoizedState.inst;\n  null !== currentHook &&\n  null !== deps &&\n  areHookInputsEqual(deps, currentHook.memoizedState.deps)\n    ? (hook.memoizedState = pushSimpleEffect(hookFlags, inst, create, deps))\n    : ((currentlyRenderingFiber.flags |= fiberFlags),\n      (hook.memoizedState = pushSimpleEffect(\n        1 | hookFlags,\n        inst,\n        create,\n        deps\n      )));\n}\nfunction mountEffect(create, createDeps) {\n  mountEffectImpl(8390656, 8, create, createDeps);\n}\nfunction updateEffect(create, createDeps) {\n  updateEffectImpl(2048, 8, create, createDeps);\n}\nfunction updateInsertionEffect(create, deps) {\n  return updateEffectImpl(4, 2, create, deps);\n}\nfunction updateLayoutEffect(create, deps) {\n  return updateEffectImpl(4, 4, create, deps);\n}\nfunction imperativeHandleEffect(create, ref) {\n  if (\"function\" === typeof ref) {\n    create = create();\n    var refCleanup = ref(create);\n    return function () {\n      \"function\" === typeof refCleanup ? refCleanup() : ref(null);\n    };\n  }\n  if (null !== ref && void 0 !== ref)\n    return (\n      (create = create()),\n      (ref.current = create),\n      function () {\n        ref.current = null;\n      }\n    );\n}\nfunction updateImperativeHandle(ref, create, deps) {\n  deps = null !== deps && void 0 !== deps ? deps.concat([ref]) : null;\n  updateEffectImpl(4, 4, imperativeHandleEffect.bind(null, create, ref), deps);\n}\nfunction mountDebugValue() {}\nfunction updateCallback(callback, deps) {\n  var hook = updateWorkInProgressHook();\n  deps = void 0 === deps ? null : deps;\n  var prevState = hook.memoizedState;\n  if (null !== deps && areHookInputsEqual(deps, prevState[1]))\n    return prevState[0];\n  hook.memoizedState = [callback, deps];\n  return callback;\n}\nfunction updateMemo(nextCreate, deps) {\n  var hook = updateWorkInProgressHook();\n  deps = void 0 === deps ? null : deps;\n  var prevState = hook.memoizedState;\n  if (null !== deps && areHookInputsEqual(deps, prevState[1]))\n    return prevState[0];\n  prevState = nextCreate();\n  if (shouldDoubleInvokeUserFnsInHooksDEV) {\n    setIsStrictModeForDevtools(!0);\n    try {\n      nextCreate();\n    } finally {\n      setIsStrictModeForDevtools(!1);\n    }\n  }\n  hook.memoizedState = [prevState, deps];\n  return prevState;\n}\nfunction mountDeferredValueImpl(hook, value, initialValue) {\n  if (void 0 === initialValue || 0 !== (renderLanes & 1073741824))\n    return (hook.memoizedState = value);\n  hook.memoizedState = initialValue;\n  hook = requestDeferredLane();\n  currentlyRenderingFiber.lanes |= hook;\n  workInProgressRootSkippedLanes |= hook;\n  return initialValue;\n}\nfunction updateDeferredValueImpl(hook, prevValue, value, initialValue) {\n  if (objectIs(value, prevValue)) return value;\n  if (null !== currentTreeHiddenStackCursor.current)\n    return (\n      (hook = mountDeferredValueImpl(hook, value, initialValue)),\n      objectIs(hook, prevValue) || (didReceiveUpdate = !0),\n      hook\n    );\n  if (0 === (renderLanes & 42))\n    return (didReceiveUpdate = !0), (hook.memoizedState = value);\n  hook = requestDeferredLane();\n  currentlyRenderingFiber.lanes |= hook;\n  workInProgressRootSkippedLanes |= hook;\n  return prevValue;\n}\nfunction startTransition(fiber, queue, pendingState, finishedState, callback) {\n  var previousPriority = ReactDOMSharedInternals.p;\n  ReactDOMSharedInternals.p =\n    0 !== previousPriority && 8 > previousPriority ? previousPriority : 8;\n  var prevTransition = ReactSharedInternals.T,\n    currentTransition = {};\n  ReactSharedInternals.T = currentTransition;\n  dispatchOptimisticSetState(fiber, !1, queue, pendingState);\n  try {\n    var returnValue = callback(),\n      onStartTransitionFinish = ReactSharedInternals.S;\n    null !== onStartTransitionFinish &&\n      onStartTransitionFinish(currentTransition, returnValue);\n    if (\n      null !== returnValue &&\n      \"object\" === typeof returnValue &&\n      \"function\" === typeof returnValue.then\n    ) {\n      var thenableForFinishedState = chainThenableValue(\n        returnValue,\n        finishedState\n      );\n      dispatchSetStateInternal(\n        fiber,\n        queue,\n        thenableForFinishedState,\n        requestUpdateLane(fiber)\n      );\n    } else\n      dispatchSetStateInternal(\n        fiber,\n        queue,\n        finishedState,\n        requestUpdateLane(fiber)\n      );\n  } catch (error) {\n    dispatchSetStateInternal(\n      fiber,\n      queue,\n      { then: function () {}, status: \"rejected\", reason: error },\n      requestUpdateLane()\n    );\n  } finally {\n    (ReactDOMSharedInternals.p = previousPriority),\n      (ReactSharedInternals.T = prevTransition);\n  }\n}\nfunction noop$2() {}\nfunction startHostTransition(formFiber, pendingState, action, formData) {\n  if (5 !== formFiber.tag) throw Error(formatProdErrorMessage(476));\n  var queue = ensureFormComponentIsStateful(formFiber).queue;\n  startTransition(\n    formFiber,\n    queue,\n    pendingState,\n    sharedNotPendingObject,\n    null === action\n      ? noop$2\n      : function () {\n          requestFormReset$1(formFiber);\n          return action(formData);\n        }\n  );\n}\nfunction ensureFormComponentIsStateful(formFiber) {\n  var existingStateHook = formFiber.memoizedState;\n  if (null !== existingStateHook) return existingStateHook;\n  existingStateHook = {\n    memoizedState: sharedNotPendingObject,\n    baseState: sharedNotPendingObject,\n    baseQueue: null,\n    queue: {\n      pending: null,\n      lanes: 0,\n      dispatch: null,\n      lastRenderedReducer: basicStateReducer,\n      lastRenderedState: sharedNotPendingObject\n    },\n    next: null\n  };\n  var initialResetState = {};\n  existingStateHook.next = {\n    memoizedState: initialResetState,\n    baseState: initialResetState,\n    baseQueue: null,\n    queue: {\n      pending: null,\n      lanes: 0,\n      dispatch: null,\n      lastRenderedReducer: basicStateReducer,\n      lastRenderedState: initialResetState\n    },\n    next: null\n  };\n  formFiber.memoizedState = existingStateHook;\n  formFiber = formFiber.alternate;\n  null !== formFiber && (formFiber.memoizedState = existingStateHook);\n  return existingStateHook;\n}\nfunction requestFormReset$1(formFiber) {\n  var resetStateQueue = ensureFormComponentIsStateful(formFiber).next.queue;\n  dispatchSetStateInternal(formFiber, resetStateQueue, {}, requestUpdateLane());\n}\nfunction useHostTransitionStatus() {\n  return readContext(HostTransitionContext);\n}\nfunction updateId() {\n  return updateWorkInProgressHook().memoizedState;\n}\nfunction updateRefresh() {\n  return updateWorkInProgressHook().memoizedState;\n}\nfunction refreshCache(fiber) {\n  for (var provider = fiber.return; null !== provider; ) {\n    switch (provider.tag) {\n      case 24:\n      case 3:\n        var lane = requestUpdateLane();\n        fiber = createUpdate(lane);\n        var root$41 = enqueueUpdate(provider, fiber, lane);\n        null !== root$41 &&\n          (scheduleUpdateOnFiber(root$41, provider, lane),\n          entangleTransitions(root$41, provider, lane));\n        provider = { cache: createCache() };\n        fiber.payload = provider;\n        return;\n    }\n    provider = provider.return;\n  }\n}\nfunction dispatchReducerAction(fiber, queue, action) {\n  var lane = requestUpdateLane();\n  action = {\n    lane: lane,\n    revertLane: 0,\n    action: action,\n    hasEagerState: !1,\n    eagerState: null,\n    next: null\n  };\n  isRenderPhaseUpdate(fiber)\n    ? enqueueRenderPhaseUpdate(queue, action)\n    : ((action = enqueueConcurrentHookUpdate(fiber, queue, action, lane)),\n      null !== action &&\n        (scheduleUpdateOnFiber(action, fiber, lane),\n        entangleTransitionUpdate(action, queue, lane)));\n}\nfunction dispatchSetState(fiber, queue, action) {\n  var lane = requestUpdateLane();\n  dispatchSetStateInternal(fiber, queue, action, lane);\n}\nfunction dispatchSetStateInternal(fiber, queue, action, lane) {\n  var update = {\n    lane: lane,\n    revertLane: 0,\n    action: action,\n    hasEagerState: !1,\n    eagerState: null,\n    next: null\n  };\n  if (isRenderPhaseUpdate(fiber)) enqueueRenderPhaseUpdate(queue, update);\n  else {\n    var alternate = fiber.alternate;\n    if (\n      0 === fiber.lanes &&\n      (null === alternate || 0 === alternate.lanes) &&\n      ((alternate = queue.lastRenderedReducer), null !== alternate)\n    )\n      try {\n        var currentState = queue.lastRenderedState,\n          eagerState = alternate(currentState, action);\n        update.hasEagerState = !0;\n        update.eagerState = eagerState;\n        if (objectIs(eagerState, currentState))\n          return (\n            enqueueUpdate$1(fiber, queue, update, 0),\n            null === workInProgressRoot && finishQueueingConcurrentUpdates(),\n            !1\n          );\n      } catch (error) {\n      } finally {\n      }\n    action = enqueueConcurrentHookUpdate(fiber, queue, update, lane);\n    if (null !== action)\n      return (\n        scheduleUpdateOnFiber(action, fiber, lane),\n        entangleTransitionUpdate(action, queue, lane),\n        !0\n      );\n  }\n  return !1;\n}\nfunction dispatchOptimisticSetState(fiber, throwIfDuringRender, queue, action) {\n  action = {\n    lane: 2,\n    revertLane: requestTransitionLane(),\n    action: action,\n    hasEagerState: !1,\n    eagerState: null,\n    next: null\n  };\n  if (isRenderPhaseUpdate(fiber)) {\n    if (throwIfDuringRender) throw Error(formatProdErrorMessage(479));\n  } else\n    (throwIfDuringRender = enqueueConcurrentHookUpdate(\n      fiber,\n      queue,\n      action,\n      2\n    )),\n      null !== throwIfDuringRender &&\n        scheduleUpdateOnFiber(throwIfDuringRender, fiber, 2);\n}\nfunction isRenderPhaseUpdate(fiber) {\n  var alternate = fiber.alternate;\n  return (\n    fiber === currentlyRenderingFiber ||\n    (null !== alternate && alternate === currentlyRenderingFiber)\n  );\n}\nfunction enqueueRenderPhaseUpdate(queue, update) {\n  didScheduleRenderPhaseUpdateDuringThisPass = didScheduleRenderPhaseUpdate =\n    !0;\n  var pending = queue.pending;\n  null === pending\n    ? (update.next = update)\n    : ((update.next = pending.next), (pending.next = update));\n  queue.pending = update;\n}\nfunction entangleTransitionUpdate(root, queue, lane) {\n  if (0 !== (lane & 4194048)) {\n    var queueLanes = queue.lanes;\n    queueLanes &= root.pendingLanes;\n    lane |= queueLanes;\n    queue.lanes = lane;\n    markRootEntangled(root, lane);\n  }\n}\nvar ContextOnlyDispatcher = {\n    readContext: readContext,\n    use: use,\n    useCallback: throwInvalidHookError,\n    useContext: throwInvalidHookError,\n    useEffect: throwInvalidHookError,\n    useImperativeHandle: throwInvalidHookError,\n    useLayoutEffect: throwInvalidHookError,\n    useInsertionEffect: throwInvalidHookError,\n    useMemo: throwInvalidHookError,\n    useReducer: throwInvalidHookError,\n    useRef: throwInvalidHookError,\n    useState: throwInvalidHookError,\n    useDebugValue: throwInvalidHookError,\n    useDeferredValue: throwInvalidHookError,\n    useTransition: throwInvalidHookError,\n    useSyncExternalStore: throwInvalidHookError,\n    useId: throwInvalidHookError,\n    useHostTransitionStatus: throwInvalidHookError,\n    useFormState: throwInvalidHookError,\n    useActionState: throwInvalidHookError,\n    useOptimistic: throwInvalidHookError,\n    useMemoCache: throwInvalidHookError,\n    useCacheRefresh: throwInvalidHookError\n  },\n  HooksDispatcherOnMount = {\n    readContext: readContext,\n    use: use,\n    useCallback: function (callback, deps) {\n      mountWorkInProgressHook().memoizedState = [\n        callback,\n        void 0 === deps ? null : deps\n      ];\n      return callback;\n    },\n    useContext: readContext,\n    useEffect: mountEffect,\n    useImperativeHandle: function (ref, create, deps) {\n      deps = null !== deps && void 0 !== deps ? deps.concat([ref]) : null;\n      mountEffectImpl(\n        4194308,\n        4,\n        imperativeHandleEffect.bind(null, create, ref),\n        deps\n      );\n    },\n    useLayoutEffect: function (create, deps) {\n      return mountEffectImpl(4194308, 4, create, deps);\n    },\n    useInsertionEffect: function (create, deps) {\n      mountEffectImpl(4, 2, create, deps);\n    },\n    useMemo: function (nextCreate, deps) {\n      var hook = mountWorkInProgressHook();\n      deps = void 0 === deps ? null : deps;\n      var nextValue = nextCreate();\n      if (shouldDoubleInvokeUserFnsInHooksDEV) {\n        setIsStrictModeForDevtools(!0);\n        try {\n          nextCreate();\n        } finally {\n          setIsStrictModeForDevtools(!1);\n        }\n      }\n      hook.memoizedState = [nextValue, deps];\n      return nextValue;\n    },\n    useReducer: function (reducer, initialArg, init) {\n      var hook = mountWorkInProgressHook();\n      if (void 0 !== init) {\n        var initialState = init(initialArg);\n        if (shouldDoubleInvokeUserFnsInHooksDEV) {\n          setIsStrictModeForDevtools(!0);\n          try {\n            init(initialArg);\n          } finally {\n            setIsStrictModeForDevtools(!1);\n          }\n        }\n      } else initialState = initialArg;\n      hook.memoizedState = hook.baseState = initialState;\n      reducer = {\n        pending: null,\n        lanes: 0,\n        dispatch: null,\n        lastRenderedReducer: reducer,\n        lastRenderedState: initialState\n      };\n      hook.queue = reducer;\n      reducer = reducer.dispatch = dispatchReducerAction.bind(\n        null,\n        currentlyRenderingFiber,\n        reducer\n      );\n      return [hook.memoizedState, reducer];\n    },\n    useRef: function (initialValue) {\n      var hook = mountWorkInProgressHook();\n      initialValue = { current: initialValue };\n      return (hook.memoizedState = initialValue);\n    },\n    useState: function (initialState) {\n      initialState = mountStateImpl(initialState);\n      var queue = initialState.queue,\n        dispatch = dispatchSetState.bind(null, currentlyRenderingFiber, queue);\n      queue.dispatch = dispatch;\n      return [initialState.memoizedState, dispatch];\n    },\n    useDebugValue: mountDebugValue,\n    useDeferredValue: function (value, initialValue) {\n      var hook = mountWorkInProgressHook();\n      return mountDeferredValueImpl(hook, value, initialValue);\n    },\n    useTransition: function () {\n      var stateHook = mountStateImpl(!1);\n      stateHook = startTransition.bind(\n        null,\n        currentlyRenderingFiber,\n        stateHook.queue,\n        !0,\n        !1\n      );\n      mountWorkInProgressHook().memoizedState = stateHook;\n      return [!1, stateHook];\n    },\n    useSyncExternalStore: function (subscribe, getSnapshot, getServerSnapshot) {\n      var fiber = currentlyRenderingFiber,\n        hook = mountWorkInProgressHook();\n      if (isHydrating) {\n        if (void 0 === getServerSnapshot)\n          throw Error(formatProdErrorMessage(407));\n        getServerSnapshot = getServerSnapshot();\n      } else {\n        getServerSnapshot = getSnapshot();\n        if (null === workInProgressRoot)\n          throw Error(formatProdErrorMessage(349));\n        0 !== (workInProgressRootRenderLanes & 124) ||\n          pushStoreConsistencyCheck(fiber, getSnapshot, getServerSnapshot);\n      }\n      hook.memoizedState = getServerSnapshot;\n      var inst = { value: getServerSnapshot, getSnapshot: getSnapshot };\n      hook.queue = inst;\n      mountEffect(subscribeToStore.bind(null, fiber, inst, subscribe), [\n        subscribe\n      ]);\n      fiber.flags |= 2048;\n      pushSimpleEffect(\n        9,\n        createEffectInstance(),\n        updateStoreInstance.bind(\n          null,\n          fiber,\n          inst,\n          getServerSnapshot,\n          getSnapshot\n        ),\n        null\n      );\n      return getServerSnapshot;\n    },\n    useId: function () {\n      var hook = mountWorkInProgressHook(),\n        identifierPrefix = workInProgressRoot.identifierPrefix;\n      if (isHydrating) {\n        var JSCompiler_inline_result = treeContextOverflow;\n        var idWithLeadingBit = treeContextId;\n        JSCompiler_inline_result =\n          (\n            idWithLeadingBit & ~(1 << (32 - clz32(idWithLeadingBit) - 1))\n          ).toString(32) + JSCompiler_inline_result;\n        identifierPrefix =\n          \"\\u00ab\" + identifierPrefix + \"R\" + JSCompiler_inline_result;\n        JSCompiler_inline_result = localIdCounter++;\n        0 < JSCompiler_inline_result &&\n          (identifierPrefix += \"H\" + JSCompiler_inline_result.toString(32));\n        identifierPrefix += \"\\u00bb\";\n      } else\n        (JSCompiler_inline_result = globalClientIdCounter++),\n          (identifierPrefix =\n            \"\\u00ab\" +\n            identifierPrefix +\n            \"r\" +\n            JSCompiler_inline_result.toString(32) +\n            \"\\u00bb\");\n      return (hook.memoizedState = identifierPrefix);\n    },\n    useHostTransitionStatus: useHostTransitionStatus,\n    useFormState: mountActionState,\n    useActionState: mountActionState,\n    useOptimistic: function (passthrough) {\n      var hook = mountWorkInProgressHook();\n      hook.memoizedState = hook.baseState = passthrough;\n      var queue = {\n        pending: null,\n        lanes: 0,\n        dispatch: null,\n        lastRenderedReducer: null,\n        lastRenderedState: null\n      };\n      hook.queue = queue;\n      hook = dispatchOptimisticSetState.bind(\n        null,\n        currentlyRenderingFiber,\n        !0,\n        queue\n      );\n      queue.dispatch = hook;\n      return [passthrough, hook];\n    },\n    useMemoCache: useMemoCache,\n    useCacheRefresh: function () {\n      return (mountWorkInProgressHook().memoizedState = refreshCache.bind(\n        null,\n        currentlyRenderingFiber\n      ));\n    }\n  },\n  HooksDispatcherOnUpdate = {\n    readContext: readContext,\n    use: use,\n    useCallback: updateCallback,\n    useContext: readContext,\n    useEffect: updateEffect,\n    useImperativeHandle: updateImperativeHandle,\n    useInsertionEffect: updateInsertionEffect,\n    useLayoutEffect: updateLayoutEffect,\n    useMemo: updateMemo,\n    useReducer: updateReducer,\n    useRef: updateRef,\n    useState: function () {\n      return updateReducer(basicStateReducer);\n    },\n    useDebugValue: mountDebugValue,\n    useDeferredValue: function (value, initialValue) {\n      var hook = updateWorkInProgressHook();\n      return updateDeferredValueImpl(\n        hook,\n        currentHook.memoizedState,\n        value,\n        initialValue\n      );\n    },\n    useTransition: function () {\n      var booleanOrThenable = updateReducer(basicStateReducer)[0],\n        start = updateWorkInProgressHook().memoizedState;\n      return [\n        \"boolean\" === typeof booleanOrThenable\n          ? booleanOrThenable\n          : useThenable(booleanOrThenable),\n        start\n      ];\n    },\n    useSyncExternalStore: updateSyncExternalStore,\n    useId: updateId,\n    useHostTransitionStatus: useHostTransitionStatus,\n    useFormState: updateActionState,\n    useActionState: updateActionState,\n    useOptimistic: function (passthrough, reducer) {\n      var hook = updateWorkInProgressHook();\n      return updateOptimisticImpl(hook, currentHook, passthrough, reducer);\n    },\n    useMemoCache: useMemoCache,\n    useCacheRefresh: updateRefresh\n  },\n  HooksDispatcherOnRerender = {\n    readContext: readContext,\n    use: use,\n    useCallback: updateCallback,\n    useContext: readContext,\n    useEffect: updateEffect,\n    useImperativeHandle: updateImperativeHandle,\n    useInsertionEffect: updateInsertionEffect,\n    useLayoutEffect: updateLayoutEffect,\n    useMemo: updateMemo,\n    useReducer: rerenderReducer,\n    useRef: updateRef,\n    useState: function () {\n      return rerenderReducer(basicStateReducer);\n    },\n    useDebugValue: mountDebugValue,\n    useDeferredValue: function (value, initialValue) {\n      var hook = updateWorkInProgressHook();\n      return null === currentHook\n        ? mountDeferredValueImpl(hook, value, initialValue)\n        : updateDeferredValueImpl(\n            hook,\n            currentHook.memoizedState,\n            value,\n            initialValue\n          );\n    },\n    useTransition: function () {\n      var booleanOrThenable = rerenderReducer(basicStateReducer)[0],\n        start = updateWorkInProgressHook().memoizedState;\n      return [\n        \"boolean\" === typeof booleanOrThenable\n          ? booleanOrThenable\n          : useThenable(booleanOrThenable),\n        start\n      ];\n    },\n    useSyncExternalStore: updateSyncExternalStore,\n    useId: updateId,\n    useHostTransitionStatus: useHostTransitionStatus,\n    useFormState: rerenderActionState,\n    useActionState: rerenderActionState,\n    useOptimistic: function (passthrough, reducer) {\n      var hook = updateWorkInProgressHook();\n      if (null !== currentHook)\n        return updateOptimisticImpl(hook, currentHook, passthrough, reducer);\n      hook.baseState = passthrough;\n      return [passthrough, hook.queue.dispatch];\n    },\n    useMemoCache: useMemoCache,\n    useCacheRefresh: updateRefresh\n  },\n  thenableState = null,\n  thenableIndexCounter = 0;\nfunction unwrapThenable(thenable) {\n  var index = thenableIndexCounter;\n  thenableIndexCounter += 1;\n  null === thenableState && (thenableState = []);\n  return trackUsedThenable(thenableState, thenable, index);\n}\nfunction coerceRef(workInProgress, element) {\n  element = element.props.ref;\n  workInProgress.ref = void 0 !== element ? element : null;\n}\nfunction throwOnInvalidObjectType(returnFiber, newChild) {\n  if (newChild.$$typeof === REACT_LEGACY_ELEMENT_TYPE)\n    throw Error(formatProdErrorMessage(525));\n  returnFiber = Object.prototype.toString.call(newChild);\n  throw Error(\n    formatProdErrorMessage(\n      31,\n      \"[object Object]\" === returnFiber\n        ? \"object with keys {\" + Object.keys(newChild).join(\", \") + \"}\"\n        : returnFiber\n    )\n  );\n}\nfunction resolveLazy(lazyType) {\n  var init = lazyType._init;\n  return init(lazyType._payload);\n}\nfunction createChildReconciler(shouldTrackSideEffects) {\n  function deleteChild(returnFiber, childToDelete) {\n    if (shouldTrackSideEffects) {\n      var deletions = returnFiber.deletions;\n      null === deletions\n        ? ((returnFiber.deletions = [childToDelete]), (returnFiber.flags |= 16))\n        : deletions.push(childToDelete);\n    }\n  }\n  function deleteRemainingChildren(returnFiber, currentFirstChild) {\n    if (!shouldTrackSideEffects) return null;\n    for (; null !== currentFirstChild; )\n      deleteChild(returnFiber, currentFirstChild),\n        (currentFirstChild = currentFirstChild.sibling);\n    return null;\n  }\n  function mapRemainingChildren(currentFirstChild) {\n    for (var existingChildren = new Map(); null !== currentFirstChild; )\n      null !== currentFirstChild.key\n        ? existingChildren.set(currentFirstChild.key, currentFirstChild)\n        : existingChildren.set(currentFirstChild.index, currentFirstChild),\n        (currentFirstChild = currentFirstChild.sibling);\n    return existingChildren;\n  }\n  function useFiber(fiber, pendingProps) {\n    fiber = createWorkInProgress(fiber, pendingProps);\n    fiber.index = 0;\n    fiber.sibling = null;\n    return fiber;\n  }\n  function placeChild(newFiber, lastPlacedIndex, newIndex) {\n    newFiber.index = newIndex;\n    if (!shouldTrackSideEffects)\n      return (newFiber.flags |= 1048576), lastPlacedIndex;\n    newIndex = newFiber.alternate;\n    if (null !== newIndex)\n      return (\n        (newIndex = newIndex.index),\n        newIndex < lastPlacedIndex\n          ? ((newFiber.flags |= 67108866), lastPlacedIndex)\n          : newIndex\n      );\n    newFiber.flags |= 67108866;\n    return lastPlacedIndex;\n  }\n  function placeSingleChild(newFiber) {\n    shouldTrackSideEffects &&\n      null === newFiber.alternate &&\n      (newFiber.flags |= 67108866);\n    return newFiber;\n  }\n  function updateTextNode(returnFiber, current, textContent, lanes) {\n    if (null === current || 6 !== current.tag)\n      return (\n        (current = createFiberFromText(textContent, returnFiber.mode, lanes)),\n        (current.return = returnFiber),\n        current\n      );\n    current = useFiber(current, textContent);\n    current.return = returnFiber;\n    return current;\n  }\n  function updateElement(returnFiber, current, element, lanes) {\n    var elementType = element.type;\n    if (elementType === REACT_FRAGMENT_TYPE)\n      return updateFragment(\n        returnFiber,\n        current,\n        element.props.children,\n        lanes,\n        element.key\n      );\n    if (\n      null !== current &&\n      (current.elementType === elementType ||\n        (\"object\" === typeof elementType &&\n          null !== elementType &&\n          elementType.$$typeof === REACT_LAZY_TYPE &&\n          resolveLazy(elementType) === current.type))\n    )\n      return (\n        (current = useFiber(current, element.props)),\n        coerceRef(current, element),\n        (current.return = returnFiber),\n        current\n      );\n    current = createFiberFromTypeAndProps(\n      element.type,\n      element.key,\n      element.props,\n      null,\n      returnFiber.mode,\n      lanes\n    );\n    coerceRef(current, element);\n    current.return = returnFiber;\n    return current;\n  }\n  function updatePortal(returnFiber, current, portal, lanes) {\n    if (\n      null === current ||\n      4 !== current.tag ||\n      current.stateNode.containerInfo !== portal.containerInfo ||\n      current.stateNode.implementation !== portal.implementation\n    )\n      return (\n        (current = createFiberFromPortal(portal, returnFiber.mode, lanes)),\n        (current.return = returnFiber),\n        current\n      );\n    current = useFiber(current, portal.children || []);\n    current.return = returnFiber;\n    return current;\n  }\n  function updateFragment(returnFiber, current, fragment, lanes, key) {\n    if (null === current || 7 !== current.tag)\n      return (\n        (current = createFiberFromFragment(\n          fragment,\n          returnFiber.mode,\n          lanes,\n          key\n        )),\n        (current.return = returnFiber),\n        current\n      );\n    current = useFiber(current, fragment);\n    current.return = returnFiber;\n    return current;\n  }\n  function createChild(returnFiber, newChild, lanes) {\n    if (\n      (\"string\" === typeof newChild && \"\" !== newChild) ||\n      \"number\" === typeof newChild ||\n      \"bigint\" === typeof newChild\n    )\n      return (\n        (newChild = createFiberFromText(\n          \"\" + newChild,\n          returnFiber.mode,\n          lanes\n        )),\n        (newChild.return = returnFiber),\n        newChild\n      );\n    if (\"object\" === typeof newChild && null !== newChild) {\n      switch (newChild.$$typeof) {\n        case REACT_ELEMENT_TYPE:\n          return (\n            (lanes = createFiberFromTypeAndProps(\n              newChild.type,\n              newChild.key,\n              newChild.props,\n              null,\n              returnFiber.mode,\n              lanes\n            )),\n            coerceRef(lanes, newChild),\n            (lanes.return = returnFiber),\n            lanes\n          );\n        case REACT_PORTAL_TYPE:\n          return (\n            (newChild = createFiberFromPortal(\n              newChild,\n              returnFiber.mode,\n              lanes\n            )),\n            (newChild.return = returnFiber),\n            newChild\n          );\n        case REACT_LAZY_TYPE:\n          var init = newChild._init;\n          newChild = init(newChild._payload);\n          return createChild(returnFiber, newChild, lanes);\n      }\n      if (isArrayImpl(newChild) || getIteratorFn(newChild))\n        return (\n          (newChild = createFiberFromFragment(\n            newChild,\n            returnFiber.mode,\n            lanes,\n            null\n          )),\n          (newChild.return = returnFiber),\n          newChild\n        );\n      if (\"function\" === typeof newChild.then)\n        return createChild(returnFiber, unwrapThenable(newChild), lanes);\n      if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n        return createChild(\n          returnFiber,\n          readContextDuringReconciliation(returnFiber, newChild),\n          lanes\n        );\n      throwOnInvalidObjectType(returnFiber, newChild);\n    }\n    return null;\n  }\n  function updateSlot(returnFiber, oldFiber, newChild, lanes) {\n    var key = null !== oldFiber ? oldFiber.key : null;\n    if (\n      (\"string\" === typeof newChild && \"\" !== newChild) ||\n      \"number\" === typeof newChild ||\n      \"bigint\" === typeof newChild\n    )\n      return null !== key\n        ? null\n        : updateTextNode(returnFiber, oldFiber, \"\" + newChild, lanes);\n    if (\"object\" === typeof newChild && null !== newChild) {\n      switch (newChild.$$typeof) {\n        case REACT_ELEMENT_TYPE:\n          return newChild.key === key\n            ? updateElement(returnFiber, oldFiber, newChild, lanes)\n            : null;\n        case REACT_PORTAL_TYPE:\n          return newChild.key === key\n            ? updatePortal(returnFiber, oldFiber, newChild, lanes)\n            : null;\n        case REACT_LAZY_TYPE:\n          return (\n            (key = newChild._init),\n            (newChild = key(newChild._payload)),\n            updateSlot(returnFiber, oldFiber, newChild, lanes)\n          );\n      }\n      if (isArrayImpl(newChild) || getIteratorFn(newChild))\n        return null !== key\n          ? null\n          : updateFragment(returnFiber, oldFiber, newChild, lanes, null);\n      if (\"function\" === typeof newChild.then)\n        return updateSlot(\n          returnFiber,\n          oldFiber,\n          unwrapThenable(newChild),\n          lanes\n        );\n      if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n        return updateSlot(\n          returnFiber,\n          oldFiber,\n          readContextDuringReconciliation(returnFiber, newChild),\n          lanes\n        );\n      throwOnInvalidObjectType(returnFiber, newChild);\n    }\n    return null;\n  }\n  function updateFromMap(\n    existingChildren,\n    returnFiber,\n    newIdx,\n    newChild,\n    lanes\n  ) {\n    if (\n      (\"string\" === typeof newChild && \"\" !== newChild) ||\n      \"number\" === typeof newChild ||\n      \"bigint\" === typeof newChild\n    )\n      return (\n        (existingChildren = existingChildren.get(newIdx) || null),\n        updateTextNode(returnFiber, existingChildren, \"\" + newChild, lanes)\n      );\n    if (\"object\" === typeof newChild && null !== newChild) {\n      switch (newChild.$$typeof) {\n        case REACT_ELEMENT_TYPE:\n          return (\n            (existingChildren =\n              existingChildren.get(\n                null === newChild.key ? newIdx : newChild.key\n              ) || null),\n            updateElement(returnFiber, existingChildren, newChild, lanes)\n          );\n        case REACT_PORTAL_TYPE:\n          return (\n            (existingChildren =\n              existingChildren.get(\n                null === newChild.key ? newIdx : newChild.key\n              ) || null),\n            updatePortal(returnFiber, existingChildren, newChild, lanes)\n          );\n        case REACT_LAZY_TYPE:\n          var init = newChild._init;\n          newChild = init(newChild._payload);\n          return updateFromMap(\n            existingChildren,\n            returnFiber,\n            newIdx,\n            newChild,\n            lanes\n          );\n      }\n      if (isArrayImpl(newChild) || getIteratorFn(newChild))\n        return (\n          (existingChildren = existingChildren.get(newIdx) || null),\n          updateFragment(returnFiber, existingChildren, newChild, lanes, null)\n        );\n      if (\"function\" === typeof newChild.then)\n        return updateFromMap(\n          existingChildren,\n          returnFiber,\n          newIdx,\n          unwrapThenable(newChild),\n          lanes\n        );\n      if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n        return updateFromMap(\n          existingChildren,\n          returnFiber,\n          newIdx,\n          readContextDuringReconciliation(returnFiber, newChild),\n          lanes\n        );\n      throwOnInvalidObjectType(returnFiber, newChild);\n    }\n    return null;\n  }\n  function reconcileChildrenArray(\n    returnFiber,\n    currentFirstChild,\n    newChildren,\n    lanes\n  ) {\n    for (\n      var resultingFirstChild = null,\n        previousNewFiber = null,\n        oldFiber = currentFirstChild,\n        newIdx = (currentFirstChild = 0),\n        nextOldFiber = null;\n      null !== oldFiber && newIdx < newChildren.length;\n      newIdx++\n    ) {\n      oldFiber.index > newIdx\n        ? ((nextOldFiber = oldFiber), (oldFiber = null))\n        : (nextOldFiber = oldFiber.sibling);\n      var newFiber = updateSlot(\n        returnFiber,\n        oldFiber,\n        newChildren[newIdx],\n        lanes\n      );\n      if (null === newFiber) {\n        null === oldFiber && (oldFiber = nextOldFiber);\n        break;\n      }\n      shouldTrackSideEffects &&\n        oldFiber &&\n        null === newFiber.alternate &&\n        deleteChild(returnFiber, oldFiber);\n      currentFirstChild = placeChild(newFiber, currentFirstChild, newIdx);\n      null === previousNewFiber\n        ? (resultingFirstChild = newFiber)\n        : (previousNewFiber.sibling = newFiber);\n      previousNewFiber = newFiber;\n      oldFiber = nextOldFiber;\n    }\n    if (newIdx === newChildren.length)\n      return (\n        deleteRemainingChildren(returnFiber, oldFiber),\n        isHydrating && pushTreeFork(returnFiber, newIdx),\n        resultingFirstChild\n      );\n    if (null === oldFiber) {\n      for (; newIdx < newChildren.length; newIdx++)\n        (oldFiber = createChild(returnFiber, newChildren[newIdx], lanes)),\n          null !== oldFiber &&\n            ((currentFirstChild = placeChild(\n              oldFiber,\n              currentFirstChild,\n              newIdx\n            )),\n            null === previousNewFiber\n              ? (resultingFirstChild = oldFiber)\n              : (previousNewFiber.sibling = oldFiber),\n            (previousNewFiber = oldFiber));\n      isHydrating && pushTreeFork(returnFiber, newIdx);\n      return resultingFirstChild;\n    }\n    for (\n      oldFiber = mapRemainingChildren(oldFiber);\n      newIdx < newChildren.length;\n      newIdx++\n    )\n      (nextOldFiber = updateFromMap(\n        oldFiber,\n        returnFiber,\n        newIdx,\n        newChildren[newIdx],\n        lanes\n      )),\n        null !== nextOldFiber &&\n          (shouldTrackSideEffects &&\n            null !== nextOldFiber.alternate &&\n            oldFiber.delete(\n              null === nextOldFiber.key ? newIdx : nextOldFiber.key\n            ),\n          (currentFirstChild = placeChild(\n            nextOldFiber,\n            currentFirstChild,\n            newIdx\n          )),\n          null === previousNewFiber\n            ? (resultingFirstChild = nextOldFiber)\n            : (previousNewFiber.sibling = nextOldFiber),\n          (previousNewFiber = nextOldFiber));\n    shouldTrackSideEffects &&\n      oldFiber.forEach(function (child) {\n        return deleteChild(returnFiber, child);\n      });\n    isHydrating && pushTreeFork(returnFiber, newIdx);\n    return resultingFirstChild;\n  }\n  function reconcileChildrenIterator(\n    returnFiber,\n    currentFirstChild,\n    newChildren,\n    lanes\n  ) {\n    if (null == newChildren) throw Error(formatProdErrorMessage(151));\n    for (\n      var resultingFirstChild = null,\n        previousNewFiber = null,\n        oldFiber = currentFirstChild,\n        newIdx = (currentFirstChild = 0),\n        nextOldFiber = null,\n        step = newChildren.next();\n      null !== oldFiber && !step.done;\n      newIdx++, step = newChildren.next()\n    ) {\n      oldFiber.index > newIdx\n        ? ((nextOldFiber = oldFiber), (oldFiber = null))\n        : (nextOldFiber = oldFiber.sibling);\n      var newFiber = updateSlot(returnFiber, oldFiber, step.value, lanes);\n      if (null === newFiber) {\n        null === oldFiber && (oldFiber = nextOldFiber);\n        break;\n      }\n      shouldTrackSideEffects &&\n        oldFiber &&\n        null === newFiber.alternate &&\n        deleteChild(returnFiber, oldFiber);\n      currentFirstChild = placeChild(newFiber, currentFirstChild, newIdx);\n      null === previousNewFiber\n        ? (resultingFirstChild = newFiber)\n        : (previousNewFiber.sibling = newFiber);\n      previousNewFiber = newFiber;\n      oldFiber = nextOldFiber;\n    }\n    if (step.done)\n      return (\n        deleteRemainingChildren(returnFiber, oldFiber),\n        isHydrating && pushTreeFork(returnFiber, newIdx),\n        resultingFirstChild\n      );\n    if (null === oldFiber) {\n      for (; !step.done; newIdx++, step = newChildren.next())\n        (step = createChild(returnFiber, step.value, lanes)),\n          null !== step &&\n            ((currentFirstChild = placeChild(step, currentFirstChild, newIdx)),\n            null === previousNewFiber\n              ? (resultingFirstChild = step)\n              : (previousNewFiber.sibling = step),\n            (previousNewFiber = step));\n      isHydrating && pushTreeFork(returnFiber, newIdx);\n      return resultingFirstChild;\n    }\n    for (\n      oldFiber = mapRemainingChildren(oldFiber);\n      !step.done;\n      newIdx++, step = newChildren.next()\n    )\n      (step = updateFromMap(oldFiber, returnFiber, newIdx, step.value, lanes)),\n        null !== step &&\n          (shouldTrackSideEffects &&\n            null !== step.alternate &&\n            oldFiber.delete(null === step.key ? newIdx : step.key),\n          (currentFirstChild = placeChild(step, currentFirstChild, newIdx)),\n          null === previousNewFiber\n            ? (resultingFirstChild = step)\n            : (previousNewFiber.sibling = step),\n          (previousNewFiber = step));\n    shouldTrackSideEffects &&\n      oldFiber.forEach(function (child) {\n        return deleteChild(returnFiber, child);\n      });\n    isHydrating && pushTreeFork(returnFiber, newIdx);\n    return resultingFirstChild;\n  }\n  function reconcileChildFibersImpl(\n    returnFiber,\n    currentFirstChild,\n    newChild,\n    lanes\n  ) {\n    \"object\" === typeof newChild &&\n      null !== newChild &&\n      newChild.type === REACT_FRAGMENT_TYPE &&\n      null === newChild.key &&\n      (newChild = newChild.props.children);\n    if (\"object\" === typeof newChild && null !== newChild) {\n      switch (newChild.$$typeof) {\n        case REACT_ELEMENT_TYPE:\n          a: {\n            for (var key = newChild.key; null !== currentFirstChild; ) {\n              if (currentFirstChild.key === key) {\n                key = newChild.type;\n                if (key === REACT_FRAGMENT_TYPE) {\n                  if (7 === currentFirstChild.tag) {\n                    deleteRemainingChildren(\n                      returnFiber,\n                      currentFirstChild.sibling\n                    );\n                    lanes = useFiber(\n                      currentFirstChild,\n                      newChild.props.children\n                    );\n                    lanes.return = returnFiber;\n                    returnFiber = lanes;\n                    break a;\n                  }\n                } else if (\n                  currentFirstChild.elementType === key ||\n                  (\"object\" === typeof key &&\n                    null !== key &&\n                    key.$$typeof === REACT_LAZY_TYPE &&\n                    resolveLazy(key) === currentFirstChild.type)\n                ) {\n                  deleteRemainingChildren(\n                    returnFiber,\n                    currentFirstChild.sibling\n                  );\n                  lanes = useFiber(currentFirstChild, newChild.props);\n                  coerceRef(lanes, newChild);\n                  lanes.return = returnFiber;\n                  returnFiber = lanes;\n                  break a;\n                }\n                deleteRemainingChildren(returnFiber, currentFirstChild);\n                break;\n              } else deleteChild(returnFiber, currentFirstChild);\n              currentFirstChild = currentFirstChild.sibling;\n            }\n            newChild.type === REACT_FRAGMENT_TYPE\n              ? ((lanes = createFiberFromFragment(\n                  newChild.props.children,\n                  returnFiber.mode,\n                  lanes,\n                  newChild.key\n                )),\n                (lanes.return = returnFiber),\n                (returnFiber = lanes))\n              : ((lanes = createFiberFromTypeAndProps(\n                  newChild.type,\n                  newChild.key,\n                  newChild.props,\n                  null,\n                  returnFiber.mode,\n                  lanes\n                )),\n                coerceRef(lanes, newChild),\n                (lanes.return = returnFiber),\n                (returnFiber = lanes));\n          }\n          return placeSingleChild(returnFiber);\n        case REACT_PORTAL_TYPE:\n          a: {\n            for (key = newChild.key; null !== currentFirstChild; ) {\n              if (currentFirstChild.key === key)\n                if (\n                  4 === currentFirstChild.tag &&\n                  currentFirstChild.stateNode.containerInfo ===\n                    newChild.containerInfo &&\n                  currentFirstChild.stateNode.implementation ===\n                    newChild.implementation\n                ) {\n                  deleteRemainingChildren(\n                    returnFiber,\n                    currentFirstChild.sibling\n                  );\n                  lanes = useFiber(currentFirstChild, newChild.children || []);\n                  lanes.return = returnFiber;\n                  returnFiber = lanes;\n                  break a;\n                } else {\n                  deleteRemainingChildren(returnFiber, currentFirstChild);\n                  break;\n                }\n              else deleteChild(returnFiber, currentFirstChild);\n              currentFirstChild = currentFirstChild.sibling;\n            }\n            lanes = createFiberFromPortal(newChild, returnFiber.mode, lanes);\n            lanes.return = returnFiber;\n            returnFiber = lanes;\n          }\n          return placeSingleChild(returnFiber);\n        case REACT_LAZY_TYPE:\n          return (\n            (key = newChild._init),\n            (newChild = key(newChild._payload)),\n            reconcileChildFibersImpl(\n              returnFiber,\n              currentFirstChild,\n              newChild,\n              lanes\n            )\n          );\n      }\n      if (isArrayImpl(newChild))\n        return reconcileChildrenArray(\n          returnFiber,\n          currentFirstChild,\n          newChild,\n          lanes\n        );\n      if (getIteratorFn(newChild)) {\n        key = getIteratorFn(newChild);\n        if (\"function\" !== typeof key) throw Error(formatProdErrorMessage(150));\n        newChild = key.call(newChild);\n        return reconcileChildrenIterator(\n          returnFiber,\n          currentFirstChild,\n          newChild,\n          lanes\n        );\n      }\n      if (\"function\" === typeof newChild.then)\n        return reconcileChildFibersImpl(\n          returnFiber,\n          currentFirstChild,\n          unwrapThenable(newChild),\n          lanes\n        );\n      if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n        return reconcileChildFibersImpl(\n          returnFiber,\n          currentFirstChild,\n          readContextDuringReconciliation(returnFiber, newChild),\n          lanes\n        );\n      throwOnInvalidObjectType(returnFiber, newChild);\n    }\n    return (\"string\" === typeof newChild && \"\" !== newChild) ||\n      \"number\" === typeof newChild ||\n      \"bigint\" === typeof newChild\n      ? ((newChild = \"\" + newChild),\n        null !== currentFirstChild && 6 === currentFirstChild.tag\n          ? (deleteRemainingChildren(returnFiber, currentFirstChild.sibling),\n            (lanes = useFiber(currentFirstChild, newChild)),\n            (lanes.return = returnFiber),\n            (returnFiber = lanes))\n          : (deleteRemainingChildren(returnFiber, currentFirstChild),\n            (lanes = createFiberFromText(newChild, returnFiber.mode, lanes)),\n            (lanes.return = returnFiber),\n            (returnFiber = lanes)),\n        placeSingleChild(returnFiber))\n      : deleteRemainingChildren(returnFiber, currentFirstChild);\n  }\n  return function (returnFiber, currentFirstChild, newChild, lanes) {\n    try {\n      thenableIndexCounter = 0;\n      var firstChildFiber = reconcileChildFibersImpl(\n        returnFiber,\n        currentFirstChild,\n        newChild,\n        lanes\n      );\n      thenableState = null;\n      return firstChildFiber;\n    } catch (x) {\n      if (x === SuspenseException || x === SuspenseActionException) throw x;\n      var fiber = createFiberImplClass(29, x, null, returnFiber.mode);\n      fiber.lanes = lanes;\n      fiber.return = returnFiber;\n      return fiber;\n    } finally {\n    }\n  };\n}\nvar reconcileChildFibers = createChildReconciler(!0),\n  mountChildFibers = createChildReconciler(!1),\n  suspenseHandlerStackCursor = createCursor(null),\n  shellBoundary = null;\nfunction pushPrimaryTreeSuspenseHandler(handler) {\n  var current = handler.alternate;\n  push(suspenseStackCursor, suspenseStackCursor.current & 1);\n  push(suspenseHandlerStackCursor, handler);\n  null === shellBoundary &&\n    (null === current || null !== currentTreeHiddenStackCursor.current\n      ? (shellBoundary = handler)\n      : null !== current.memoizedState && (shellBoundary = handler));\n}\nfunction pushOffscreenSuspenseHandler(fiber) {\n  if (22 === fiber.tag) {\n    if (\n      (push(suspenseStackCursor, suspenseStackCursor.current),\n      push(suspenseHandlerStackCursor, fiber),\n      null === shellBoundary)\n    ) {\n      var current = fiber.alternate;\n      null !== current &&\n        null !== current.memoizedState &&\n        (shellBoundary = fiber);\n    }\n  } else reuseSuspenseHandlerOnStack(fiber);\n}\nfunction reuseSuspenseHandlerOnStack() {\n  push(suspenseStackCursor, suspenseStackCursor.current);\n  push(suspenseHandlerStackCursor, suspenseHandlerStackCursor.current);\n}\nfunction popSuspenseHandler(fiber) {\n  pop(suspenseHandlerStackCursor);\n  shellBoundary === fiber && (shellBoundary = null);\n  pop(suspenseStackCursor);\n}\nvar suspenseStackCursor = createCursor(0);\nfunction findFirstSuspended(row) {\n  for (var node = row; null !== node; ) {\n    if (13 === node.tag) {\n      var state = node.memoizedState;\n      if (\n        null !== state &&\n        ((state = state.dehydrated),\n        null === state ||\n          \"$?\" === state.data ||\n          isSuspenseInstanceFallback(state))\n      )\n        return node;\n    } else if (19 === node.tag && void 0 !== node.memoizedProps.revealOrder) {\n      if (0 !== (node.flags & 128)) return node;\n    } else if (null !== node.child) {\n      node.child.return = node;\n      node = node.child;\n      continue;\n    }\n    if (node === row) break;\n    for (; null === node.sibling; ) {\n      if (null === node.return || node.return === row) return null;\n      node = node.return;\n    }\n    node.sibling.return = node.return;\n    node = node.sibling;\n  }\n  return null;\n}\nfunction applyDerivedStateFromProps(\n  workInProgress,\n  ctor,\n  getDerivedStateFromProps,\n  nextProps\n) {\n  ctor = workInProgress.memoizedState;\n  getDerivedStateFromProps = getDerivedStateFromProps(nextProps, ctor);\n  getDerivedStateFromProps =\n    null === getDerivedStateFromProps || void 0 === getDerivedStateFromProps\n      ? ctor\n      : assign({}, ctor, getDerivedStateFromProps);\n  workInProgress.memoizedState = getDerivedStateFromProps;\n  0 === workInProgress.lanes &&\n    (workInProgress.updateQueue.baseState = getDerivedStateFromProps);\n}\nvar classComponentUpdater = {\n  enqueueSetState: function (inst, payload, callback) {\n    inst = inst._reactInternals;\n    var lane = requestUpdateLane(),\n      update = createUpdate(lane);\n    update.payload = payload;\n    void 0 !== callback && null !== callback && (update.callback = callback);\n    payload = enqueueUpdate(inst, update, lane);\n    null !== payload &&\n      (scheduleUpdateOnFiber(payload, inst, lane),\n      entangleTransitions(payload, inst, lane));\n  },\n  enqueueReplaceState: function (inst, payload, callback) {\n    inst = inst._reactInternals;\n    var lane = requestUpdateLane(),\n      update = createUpdate(lane);\n    update.tag = 1;\n    update.payload = payload;\n    void 0 !== callback && null !== callback && (update.callback = callback);\n    payload = enqueueUpdate(inst, update, lane);\n    null !== payload &&\n      (scheduleUpdateOnFiber(payload, inst, lane),\n      entangleTransitions(payload, inst, lane));\n  },\n  enqueueForceUpdate: function (inst, callback) {\n    inst = inst._reactInternals;\n    var lane = requestUpdateLane(),\n      update = createUpdate(lane);\n    update.tag = 2;\n    void 0 !== callback && null !== callback && (update.callback = callback);\n    callback = enqueueUpdate(inst, update, lane);\n    null !== callback &&\n      (scheduleUpdateOnFiber(callback, inst, lane),\n      entangleTransitions(callback, inst, lane));\n  }\n};\nfunction checkShouldComponentUpdate(\n  workInProgress,\n  ctor,\n  oldProps,\n  newProps,\n  oldState,\n  newState,\n  nextContext\n) {\n  workInProgress = workInProgress.stateNode;\n  return \"function\" === typeof workInProgress.shouldComponentUpdate\n    ? workInProgress.shouldComponentUpdate(newProps, newState, nextContext)\n    : ctor.prototype && ctor.prototype.isPureReactComponent\n      ? !shallowEqual(oldProps, newProps) || !shallowEqual(oldState, newState)\n      : !0;\n}\nfunction callComponentWillReceiveProps(\n  workInProgress,\n  instance,\n  newProps,\n  nextContext\n) {\n  workInProgress = instance.state;\n  \"function\" === typeof instance.componentWillReceiveProps &&\n    instance.componentWillReceiveProps(newProps, nextContext);\n  \"function\" === typeof instance.UNSAFE_componentWillReceiveProps &&\n    instance.UNSAFE_componentWillReceiveProps(newProps, nextContext);\n  instance.state !== workInProgress &&\n    classComponentUpdater.enqueueReplaceState(instance, instance.state, null);\n}\nfunction resolveClassComponentProps(Component, baseProps) {\n  var newProps = baseProps;\n  if (\"ref\" in baseProps) {\n    newProps = {};\n    for (var propName in baseProps)\n      \"ref\" !== propName && (newProps[propName] = baseProps[propName]);\n  }\n  if ((Component = Component.defaultProps)) {\n    newProps === baseProps && (newProps = assign({}, newProps));\n    for (var propName$73 in Component)\n      void 0 === newProps[propName$73] &&\n        (newProps[propName$73] = Component[propName$73]);\n  }\n  return newProps;\n}\nvar reportGlobalError =\n  \"function\" === typeof reportError\n    ? reportError\n    : function (error) {\n        if (\n          \"object\" === typeof window &&\n          \"function\" === typeof window.ErrorEvent\n        ) {\n          var event = new window.ErrorEvent(\"error\", {\n            bubbles: !0,\n            cancelable: !0,\n            message:\n              \"object\" === typeof error &&\n              null !== error &&\n              \"string\" === typeof error.message\n                ? String(error.message)\n                : String(error),\n            error: error\n          });\n          if (!window.dispatchEvent(event)) return;\n        } else if (\n          \"object\" === typeof process &&\n          \"function\" === typeof process.emit\n        ) {\n          process.emit(\"uncaughtException\", error);\n          return;\n        }\n        console.error(error);\n      };\nfunction defaultOnUncaughtError(error) {\n  reportGlobalError(error);\n}\nfunction defaultOnCaughtError(error) {\n  console.error(error);\n}\nfunction defaultOnRecoverableError(error) {\n  reportGlobalError(error);\n}\nfunction logUncaughtError(root, errorInfo) {\n  try {\n    var onUncaughtError = root.onUncaughtError;\n    onUncaughtError(errorInfo.value, { componentStack: errorInfo.stack });\n  } catch (e$74) {\n    setTimeout(function () {\n      throw e$74;\n    });\n  }\n}\nfunction logCaughtError(root, boundary, errorInfo) {\n  try {\n    var onCaughtError = root.onCaughtError;\n    onCaughtError(errorInfo.value, {\n      componentStack: errorInfo.stack,\n      errorBoundary: 1 === boundary.tag ? boundary.stateNode : null\n    });\n  } catch (e$75) {\n    setTimeout(function () {\n      throw e$75;\n    });\n  }\n}\nfunction createRootErrorUpdate(root, errorInfo, lane) {\n  lane = createUpdate(lane);\n  lane.tag = 3;\n  lane.payload = { element: null };\n  lane.callback = function () {\n    logUncaughtError(root, errorInfo);\n  };\n  return lane;\n}\nfunction createClassErrorUpdate(lane) {\n  lane = createUpdate(lane);\n  lane.tag = 3;\n  return lane;\n}\nfunction initializeClassErrorUpdate(update, root, fiber, errorInfo) {\n  var getDerivedStateFromError = fiber.type.getDerivedStateFromError;\n  if (\"function\" === typeof getDerivedStateFromError) {\n    var error = errorInfo.value;\n    update.payload = function () {\n      return getDerivedStateFromError(error);\n    };\n    update.callback = function () {\n      logCaughtError(root, fiber, errorInfo);\n    };\n  }\n  var inst = fiber.stateNode;\n  null !== inst &&\n    \"function\" === typeof inst.componentDidCatch &&\n    (update.callback = function () {\n      logCaughtError(root, fiber, errorInfo);\n      \"function\" !== typeof getDerivedStateFromError &&\n        (null === legacyErrorBoundariesThatAlreadyFailed\n          ? (legacyErrorBoundariesThatAlreadyFailed = new Set([this]))\n          : legacyErrorBoundariesThatAlreadyFailed.add(this));\n      var stack = errorInfo.stack;\n      this.componentDidCatch(errorInfo.value, {\n        componentStack: null !== stack ? stack : \"\"\n      });\n    });\n}\nfunction throwException(\n  root,\n  returnFiber,\n  sourceFiber,\n  value,\n  rootRenderLanes\n) {\n  sourceFiber.flags |= 32768;\n  if (\n    null !== value &&\n    \"object\" === typeof value &&\n    \"function\" === typeof value.then\n  ) {\n    returnFiber = sourceFiber.alternate;\n    null !== returnFiber &&\n      propagateParentContextChanges(\n        returnFiber,\n        sourceFiber,\n        rootRenderLanes,\n        !0\n      );\n    sourceFiber = suspenseHandlerStackCursor.current;\n    if (null !== sourceFiber) {\n      switch (sourceFiber.tag) {\n        case 13:\n          return (\n            null === shellBoundary\n              ? renderDidSuspendDelayIfPossible()\n              : null === sourceFiber.alternate &&\n                0 === workInProgressRootExitStatus &&\n                (workInProgressRootExitStatus = 3),\n            (sourceFiber.flags &= -257),\n            (sourceFiber.flags |= 65536),\n            (sourceFiber.lanes = rootRenderLanes),\n            value === noopSuspenseyCommitThenable\n              ? (sourceFiber.flags |= 16384)\n              : ((returnFiber = sourceFiber.updateQueue),\n                null === returnFiber\n                  ? (sourceFiber.updateQueue = new Set([value]))\n                  : returnFiber.add(value),\n                attachPingListener(root, value, rootRenderLanes)),\n            !1\n          );\n        case 22:\n          return (\n            (sourceFiber.flags |= 65536),\n            value === noopSuspenseyCommitThenable\n              ? (sourceFiber.flags |= 16384)\n              : ((returnFiber = sourceFiber.updateQueue),\n                null === returnFiber\n                  ? ((returnFiber = {\n                      transitions: null,\n                      markerInstances: null,\n                      retryQueue: new Set([value])\n                    }),\n                    (sourceFiber.updateQueue = returnFiber))\n                  : ((sourceFiber = returnFiber.retryQueue),\n                    null === sourceFiber\n                      ? (returnFiber.retryQueue = new Set([value]))\n                      : sourceFiber.add(value)),\n                attachPingListener(root, value, rootRenderLanes)),\n            !1\n          );\n      }\n      throw Error(formatProdErrorMessage(435, sourceFiber.tag));\n    }\n    attachPingListener(root, value, rootRenderLanes);\n    renderDidSuspendDelayIfPossible();\n    return !1;\n  }\n  if (isHydrating)\n    return (\n      (returnFiber = suspenseHandlerStackCursor.current),\n      null !== returnFiber\n        ? (0 === (returnFiber.flags & 65536) && (returnFiber.flags |= 256),\n          (returnFiber.flags |= 65536),\n          (returnFiber.lanes = rootRenderLanes),\n          value !== HydrationMismatchException &&\n            ((root = Error(formatProdErrorMessage(422), { cause: value })),\n            queueHydrationError(createCapturedValueAtFiber(root, sourceFiber))))\n        : (value !== HydrationMismatchException &&\n            ((returnFiber = Error(formatProdErrorMessage(423), {\n              cause: value\n            })),\n            queueHydrationError(\n              createCapturedValueAtFiber(returnFiber, sourceFiber)\n            )),\n          (root = root.current.alternate),\n          (root.flags |= 65536),\n          (rootRenderLanes &= -rootRenderLanes),\n          (root.lanes |= rootRenderLanes),\n          (value = createCapturedValueAtFiber(value, sourceFiber)),\n          (rootRenderLanes = createRootErrorUpdate(\n            root.stateNode,\n            value,\n            rootRenderLanes\n          )),\n          enqueueCapturedUpdate(root, rootRenderLanes),\n          4 !== workInProgressRootExitStatus &&\n            (workInProgressRootExitStatus = 2)),\n      !1\n    );\n  var wrapperError = Error(formatProdErrorMessage(520), { cause: value });\n  wrapperError = createCapturedValueAtFiber(wrapperError, sourceFiber);\n  null === workInProgressRootConcurrentErrors\n    ? (workInProgressRootConcurrentErrors = [wrapperError])\n    : workInProgressRootConcurrentErrors.push(wrapperError);\n  4 !== workInProgressRootExitStatus && (workInProgressRootExitStatus = 2);\n  if (null === returnFiber) return !0;\n  value = createCapturedValueAtFiber(value, sourceFiber);\n  sourceFiber = returnFiber;\n  do {\n    switch (sourceFiber.tag) {\n      case 3:\n        return (\n          (sourceFiber.flags |= 65536),\n          (root = rootRenderLanes & -rootRenderLanes),\n          (sourceFiber.lanes |= root),\n          (root = createRootErrorUpdate(sourceFiber.stateNode, value, root)),\n          enqueueCapturedUpdate(sourceFiber, root),\n          !1\n        );\n      case 1:\n        if (\n          ((returnFiber = sourceFiber.type),\n          (wrapperError = sourceFiber.stateNode),\n          0 === (sourceFiber.flags & 128) &&\n            (\"function\" === typeof returnFiber.getDerivedStateFromError ||\n              (null !== wrapperError &&\n                \"function\" === typeof wrapperError.componentDidCatch &&\n                (null === legacyErrorBoundariesThatAlreadyFailed ||\n                  !legacyErrorBoundariesThatAlreadyFailed.has(wrapperError)))))\n        )\n          return (\n            (sourceFiber.flags |= 65536),\n            (rootRenderLanes &= -rootRenderLanes),\n            (sourceFiber.lanes |= rootRenderLanes),\n            (rootRenderLanes = createClassErrorUpdate(rootRenderLanes)),\n            initializeClassErrorUpdate(\n              rootRenderLanes,\n              root,\n              sourceFiber,\n              value\n            ),\n            enqueueCapturedUpdate(sourceFiber, rootRenderLanes),\n            !1\n          );\n    }\n    sourceFiber = sourceFiber.return;\n  } while (null !== sourceFiber);\n  return !1;\n}\nvar SelectiveHydrationException = Error(formatProdErrorMessage(461)),\n  didReceiveUpdate = !1;\nfunction reconcileChildren(current, workInProgress, nextChildren, renderLanes) {\n  workInProgress.child =\n    null === current\n      ? mountChildFibers(workInProgress, null, nextChildren, renderLanes)\n      : reconcileChildFibers(\n          workInProgress,\n          current.child,\n          nextChildren,\n          renderLanes\n        );\n}\nfunction updateForwardRef(\n  current,\n  workInProgress,\n  Component,\n  nextProps,\n  renderLanes\n) {\n  Component = Component.render;\n  var ref = workInProgress.ref;\n  if (\"ref\" in nextProps) {\n    var propsWithoutRef = {};\n    for (var key in nextProps)\n      \"ref\" !== key && (propsWithoutRef[key] = nextProps[key]);\n  } else propsWithoutRef = nextProps;\n  prepareToReadContext(workInProgress);\n  nextProps = renderWithHooks(\n    current,\n    workInProgress,\n    Component,\n    propsWithoutRef,\n    ref,\n    renderLanes\n  );\n  key = checkDidRenderIdHook();\n  if (null !== current && !didReceiveUpdate)\n    return (\n      bailoutHooks(current, workInProgress, renderLanes),\n      bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n    );\n  isHydrating && key && pushMaterializedTreeId(workInProgress);\n  workInProgress.flags |= 1;\n  reconcileChildren(current, workInProgress, nextProps, renderLanes);\n  return workInProgress.child;\n}\nfunction updateMemoComponent(\n  current,\n  workInProgress,\n  Component,\n  nextProps,\n  renderLanes\n) {\n  if (null === current) {\n    var type = Component.type;\n    if (\n      \"function\" === typeof type &&\n      !shouldConstruct(type) &&\n      void 0 === type.defaultProps &&\n      null === Component.compare\n    )\n      return (\n        (workInProgress.tag = 15),\n        (workInProgress.type = type),\n        updateSimpleMemoComponent(\n          current,\n          workInProgress,\n          type,\n          nextProps,\n          renderLanes\n        )\n      );\n    current = createFiberFromTypeAndProps(\n      Component.type,\n      null,\n      nextProps,\n      workInProgress,\n      workInProgress.mode,\n      renderLanes\n    );\n    current.ref = workInProgress.ref;\n    current.return = workInProgress;\n    return (workInProgress.child = current);\n  }\n  type = current.child;\n  if (!checkScheduledUpdateOrContext(current, renderLanes)) {\n    var prevProps = type.memoizedProps;\n    Component = Component.compare;\n    Component = null !== Component ? Component : shallowEqual;\n    if (Component(prevProps, nextProps) && current.ref === workInProgress.ref)\n      return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n  }\n  workInProgress.flags |= 1;\n  current = createWorkInProgress(type, nextProps);\n  current.ref = workInProgress.ref;\n  current.return = workInProgress;\n  return (workInProgress.child = current);\n}\nfunction updateSimpleMemoComponent(\n  current,\n  workInProgress,\n  Component,\n  nextProps,\n  renderLanes\n) {\n  if (null !== current) {\n    var prevProps = current.memoizedProps;\n    if (\n      shallowEqual(prevProps, nextProps) &&\n      current.ref === workInProgress.ref\n    )\n      if (\n        ((didReceiveUpdate = !1),\n        (workInProgress.pendingProps = nextProps = prevProps),\n        checkScheduledUpdateOrContext(current, renderLanes))\n      )\n        0 !== (current.flags & 131072) && (didReceiveUpdate = !0);\n      else\n        return (\n          (workInProgress.lanes = current.lanes),\n          bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n        );\n  }\n  return updateFunctionComponent(\n    current,\n    workInProgress,\n    Component,\n    nextProps,\n    renderLanes\n  );\n}\nfunction updateOffscreenComponent(current, workInProgress, renderLanes) {\n  var nextProps = workInProgress.pendingProps,\n    nextChildren = nextProps.children,\n    prevState = null !== current ? current.memoizedState : null;\n  if (\"hidden\" === nextProps.mode) {\n    if (0 !== (workInProgress.flags & 128)) {\n      nextProps =\n        null !== prevState ? prevState.baseLanes | renderLanes : renderLanes;\n      if (null !== current) {\n        nextChildren = workInProgress.child = current.child;\n        for (prevState = 0; null !== nextChildren; )\n          (prevState =\n            prevState | nextChildren.lanes | nextChildren.childLanes),\n            (nextChildren = nextChildren.sibling);\n        workInProgress.childLanes = prevState & ~nextProps;\n      } else (workInProgress.childLanes = 0), (workInProgress.child = null);\n      return deferHiddenOffscreenComponent(\n        current,\n        workInProgress,\n        nextProps,\n        renderLanes\n      );\n    }\n    if (0 !== (renderLanes & 536870912))\n      (workInProgress.memoizedState = { baseLanes: 0, cachePool: null }),\n        null !== current &&\n          pushTransition(\n            workInProgress,\n            null !== prevState ? prevState.cachePool : null\n          ),\n        null !== prevState\n          ? pushHiddenContext(workInProgress, prevState)\n          : reuseHiddenContextOnStack(),\n        pushOffscreenSuspenseHandler(workInProgress);\n    else\n      return (\n        (workInProgress.lanes = workInProgress.childLanes = 536870912),\n        deferHiddenOffscreenComponent(\n          current,\n          workInProgress,\n          null !== prevState ? prevState.baseLanes | renderLanes : renderLanes,\n          renderLanes\n        )\n      );\n  } else\n    null !== prevState\n      ? (pushTransition(workInProgress, prevState.cachePool),\n        pushHiddenContext(workInProgress, prevState),\n        reuseSuspenseHandlerOnStack(workInProgress),\n        (workInProgress.memoizedState = null))\n      : (null !== current && pushTransition(workInProgress, null),\n        reuseHiddenContextOnStack(),\n        reuseSuspenseHandlerOnStack(workInProgress));\n  reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n  return workInProgress.child;\n}\nfunction deferHiddenOffscreenComponent(\n  current,\n  workInProgress,\n  nextBaseLanes,\n  renderLanes\n) {\n  var JSCompiler_inline_result = peekCacheFromPool();\n  JSCompiler_inline_result =\n    null === JSCompiler_inline_result\n      ? null\n      : { parent: CacheContext._currentValue, pool: JSCompiler_inline_result };\n  workInProgress.memoizedState = {\n    baseLanes: nextBaseLanes,\n    cachePool: JSCompiler_inline_result\n  };\n  null !== current && pushTransition(workInProgress, null);\n  reuseHiddenContextOnStack();\n  pushOffscreenSuspenseHandler(workInProgress);\n  null !== current &&\n    propagateParentContextChanges(current, workInProgress, renderLanes, !0);\n  return null;\n}\nfunction markRef(current, workInProgress) {\n  var ref = workInProgress.ref;\n  if (null === ref)\n    null !== current &&\n      null !== current.ref &&\n      (workInProgress.flags |= 4194816);\n  else {\n    if (\"function\" !== typeof ref && \"object\" !== typeof ref)\n      throw Error(formatProdErrorMessage(284));\n    if (null === current || current.ref !== ref)\n      workInProgress.flags |= 4194816;\n  }\n}\nfunction updateFunctionComponent(\n  current,\n  workInProgress,\n  Component,\n  nextProps,\n  renderLanes\n) {\n  prepareToReadContext(workInProgress);\n  Component = renderWithHooks(\n    current,\n    workInProgress,\n    Component,\n    nextProps,\n    void 0,\n    renderLanes\n  );\n  nextProps = checkDidRenderIdHook();\n  if (null !== current && !didReceiveUpdate)\n    return (\n      bailoutHooks(current, workInProgress, renderLanes),\n      bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n    );\n  isHydrating && nextProps && pushMaterializedTreeId(workInProgress);\n  workInProgress.flags |= 1;\n  reconcileChildren(current, workInProgress, Component, renderLanes);\n  return workInProgress.child;\n}\nfunction replayFunctionComponent(\n  current,\n  workInProgress,\n  nextProps,\n  Component,\n  secondArg,\n  renderLanes\n) {\n  prepareToReadContext(workInProgress);\n  workInProgress.updateQueue = null;\n  nextProps = renderWithHooksAgain(\n    workInProgress,\n    Component,\n    nextProps,\n    secondArg\n  );\n  finishRenderingHooks(current);\n  Component = checkDidRenderIdHook();\n  if (null !== current && !didReceiveUpdate)\n    return (\n      bailoutHooks(current, workInProgress, renderLanes),\n      bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n    );\n  isHydrating && Component && pushMaterializedTreeId(workInProgress);\n  workInProgress.flags |= 1;\n  reconcileChildren(current, workInProgress, nextProps, renderLanes);\n  return workInProgress.child;\n}\nfunction updateClassComponent(\n  current,\n  workInProgress,\n  Component,\n  nextProps,\n  renderLanes\n) {\n  prepareToReadContext(workInProgress);\n  if (null === workInProgress.stateNode) {\n    var context = emptyContextObject,\n      contextType = Component.contextType;\n    \"object\" === typeof contextType &&\n      null !== contextType &&\n      (context = readContext(contextType));\n    context = new Component(nextProps, context);\n    workInProgress.memoizedState =\n      null !== context.state && void 0 !== context.state ? context.state : null;\n    context.updater = classComponentUpdater;\n    workInProgress.stateNode = context;\n    context._reactInternals = workInProgress;\n    context = workInProgress.stateNode;\n    context.props = nextProps;\n    context.state = workInProgress.memoizedState;\n    context.refs = {};\n    initializeUpdateQueue(workInProgress);\n    contextType = Component.contextType;\n    context.context =\n      \"object\" === typeof contextType && null !== contextType\n        ? readContext(contextType)\n        : emptyContextObject;\n    context.state = workInProgress.memoizedState;\n    contextType = Component.getDerivedStateFromProps;\n    \"function\" === typeof contextType &&\n      (applyDerivedStateFromProps(\n        workInProgress,\n        Component,\n        contextType,\n        nextProps\n      ),\n      (context.state = workInProgress.memoizedState));\n    \"function\" === typeof Component.getDerivedStateFromProps ||\n      \"function\" === typeof context.getSnapshotBeforeUpdate ||\n      (\"function\" !== typeof context.UNSAFE_componentWillMount &&\n        \"function\" !== typeof context.componentWillMount) ||\n      ((contextType = context.state),\n      \"function\" === typeof context.componentWillMount &&\n        context.componentWillMount(),\n      \"function\" === typeof context.UNSAFE_componentWillMount &&\n        context.UNSAFE_componentWillMount(),\n      contextType !== context.state &&\n        classComponentUpdater.enqueueReplaceState(context, context.state, null),\n      processUpdateQueue(workInProgress, nextProps, context, renderLanes),\n      suspendIfUpdateReadFromEntangledAsyncAction(),\n      (context.state = workInProgress.memoizedState));\n    \"function\" === typeof context.componentDidMount &&\n      (workInProgress.flags |= 4194308);\n    nextProps = !0;\n  } else if (null === current) {\n    context = workInProgress.stateNode;\n    var unresolvedOldProps = workInProgress.memoizedProps,\n      oldProps = resolveClassComponentProps(Component, unresolvedOldProps);\n    context.props = oldProps;\n    var oldContext = context.context,\n      contextType$jscomp$0 = Component.contextType;\n    contextType = emptyContextObject;\n    \"object\" === typeof contextType$jscomp$0 &&\n      null !== contextType$jscomp$0 &&\n      (contextType = readContext(contextType$jscomp$0));\n    var getDerivedStateFromProps = Component.getDerivedStateFromProps;\n    contextType$jscomp$0 =\n      \"function\" === typeof getDerivedStateFromProps ||\n      \"function\" === typeof context.getSnapshotBeforeUpdate;\n    unresolvedOldProps = workInProgress.pendingProps !== unresolvedOldProps;\n    contextType$jscomp$0 ||\n      (\"function\" !== typeof context.UNSAFE_componentWillReceiveProps &&\n        \"function\" !== typeof context.componentWillReceiveProps) ||\n      ((unresolvedOldProps || oldContext !== contextType) &&\n        callComponentWillReceiveProps(\n          workInProgress,\n          context,\n          nextProps,\n          contextType\n        ));\n    hasForceUpdate = !1;\n    var oldState = workInProgress.memoizedState;\n    context.state = oldState;\n    processUpdateQueue(workInProgress, nextProps, context, renderLanes);\n    suspendIfUpdateReadFromEntangledAsyncAction();\n    oldContext = workInProgress.memoizedState;\n    unresolvedOldProps || oldState !== oldContext || hasForceUpdate\n      ? (\"function\" === typeof getDerivedStateFromProps &&\n          (applyDerivedStateFromProps(\n            workInProgress,\n            Component,\n            getDerivedStateFromProps,\n            nextProps\n          ),\n          (oldContext = workInProgress.memoizedState)),\n        (oldProps =\n          hasForceUpdate ||\n          checkShouldComponentUpdate(\n            workInProgress,\n            Component,\n            oldProps,\n            nextProps,\n            oldState,\n            oldContext,\n            contextType\n          ))\n          ? (contextType$jscomp$0 ||\n              (\"function\" !== typeof context.UNSAFE_componentWillMount &&\n                \"function\" !== typeof context.componentWillMount) ||\n              (\"function\" === typeof context.componentWillMount &&\n                context.componentWillMount(),\n              \"function\" === typeof context.UNSAFE_componentWillMount &&\n                context.UNSAFE_componentWillMount()),\n            \"function\" === typeof context.componentDidMount &&\n              (workInProgress.flags |= 4194308))\n          : (\"function\" === typeof context.componentDidMount &&\n              (workInProgress.flags |= 4194308),\n            (workInProgress.memoizedProps = nextProps),\n            (workInProgress.memoizedState = oldContext)),\n        (context.props = nextProps),\n        (context.state = oldContext),\n        (context.context = contextType),\n        (nextProps = oldProps))\n      : (\"function\" === typeof context.componentDidMount &&\n          (workInProgress.flags |= 4194308),\n        (nextProps = !1));\n  } else {\n    context = workInProgress.stateNode;\n    cloneUpdateQueue(current, workInProgress);\n    contextType = workInProgress.memoizedProps;\n    contextType$jscomp$0 = resolveClassComponentProps(Component, contextType);\n    context.props = contextType$jscomp$0;\n    getDerivedStateFromProps = workInProgress.pendingProps;\n    oldState = context.context;\n    oldContext = Component.contextType;\n    oldProps = emptyContextObject;\n    \"object\" === typeof oldContext &&\n      null !== oldContext &&\n      (oldProps = readContext(oldContext));\n    unresolvedOldProps = Component.getDerivedStateFromProps;\n    (oldContext =\n      \"function\" === typeof unresolvedOldProps ||\n      \"function\" === typeof context.getSnapshotBeforeUpdate) ||\n      (\"function\" !== typeof context.UNSAFE_componentWillReceiveProps &&\n        \"function\" !== typeof context.componentWillReceiveProps) ||\n      ((contextType !== getDerivedStateFromProps || oldState !== oldProps) &&\n        callComponentWillReceiveProps(\n          workInProgress,\n          context,\n          nextProps,\n          oldProps\n        ));\n    hasForceUpdate = !1;\n    oldState = workInProgress.memoizedState;\n    context.state = oldState;\n    processUpdateQueue(workInProgress, nextProps, context, renderLanes);\n    suspendIfUpdateReadFromEntangledAsyncAction();\n    var newState = workInProgress.memoizedState;\n    contextType !== getDerivedStateFromProps ||\n    oldState !== newState ||\n    hasForceUpdate ||\n    (null !== current &&\n      null !== current.dependencies &&\n      checkIfContextChanged(current.dependencies))\n      ? (\"function\" === typeof unresolvedOldProps &&\n          (applyDerivedStateFromProps(\n            workInProgress,\n            Component,\n            unresolvedOldProps,\n            nextProps\n          ),\n          (newState = workInProgress.memoizedState)),\n        (contextType$jscomp$0 =\n          hasForceUpdate ||\n          checkShouldComponentUpdate(\n            workInProgress,\n            Component,\n            contextType$jscomp$0,\n            nextProps,\n            oldState,\n            newState,\n            oldProps\n          ) ||\n          (null !== current &&\n            null !== current.dependencies &&\n            checkIfContextChanged(current.dependencies)))\n          ? (oldContext ||\n              (\"function\" !== typeof context.UNSAFE_componentWillUpdate &&\n                \"function\" !== typeof context.componentWillUpdate) ||\n              (\"function\" === typeof context.componentWillUpdate &&\n                context.componentWillUpdate(nextProps, newState, oldProps),\n              \"function\" === typeof context.UNSAFE_componentWillUpdate &&\n                context.UNSAFE_componentWillUpdate(\n                  nextProps,\n                  newState,\n                  oldProps\n                )),\n            \"function\" === typeof context.componentDidUpdate &&\n              (workInProgress.flags |= 4),\n            \"function\" === typeof context.getSnapshotBeforeUpdate &&\n              (workInProgress.flags |= 1024))\n          : (\"function\" !== typeof context.componentDidUpdate ||\n              (contextType === current.memoizedProps &&\n                oldState === current.memoizedState) ||\n              (workInProgress.flags |= 4),\n            \"function\" !== typeof context.getSnapshotBeforeUpdate ||\n              (contextType === current.memoizedProps &&\n                oldState === current.memoizedState) ||\n              (workInProgress.flags |= 1024),\n            (workInProgress.memoizedProps = nextProps),\n            (workInProgress.memoizedState = newState)),\n        (context.props = nextProps),\n        (context.state = newState),\n        (context.context = oldProps),\n        (nextProps = contextType$jscomp$0))\n      : (\"function\" !== typeof context.componentDidUpdate ||\n          (contextType === current.memoizedProps &&\n            oldState === current.memoizedState) ||\n          (workInProgress.flags |= 4),\n        \"function\" !== typeof context.getSnapshotBeforeUpdate ||\n          (contextType === current.memoizedProps &&\n            oldState === current.memoizedState) ||\n          (workInProgress.flags |= 1024),\n        (nextProps = !1));\n  }\n  context = nextProps;\n  markRef(current, workInProgress);\n  nextProps = 0 !== (workInProgress.flags & 128);\n  context || nextProps\n    ? ((context = workInProgress.stateNode),\n      (Component =\n        nextProps && \"function\" !== typeof Component.getDerivedStateFromError\n          ? null\n          : context.render()),\n      (workInProgress.flags |= 1),\n      null !== current && nextProps\n        ? ((workInProgress.child = reconcileChildFibers(\n            workInProgress,\n            current.child,\n            null,\n            renderLanes\n          )),\n          (workInProgress.child = reconcileChildFibers(\n            workInProgress,\n            null,\n            Component,\n            renderLanes\n          )))\n        : reconcileChildren(current, workInProgress, Component, renderLanes),\n      (workInProgress.memoizedState = context.state),\n      (current = workInProgress.child))\n    : (current = bailoutOnAlreadyFinishedWork(\n        current,\n        workInProgress,\n        renderLanes\n      ));\n  return current;\n}\nfunction mountHostRootWithoutHydrating(\n  current,\n  workInProgress,\n  nextChildren,\n  renderLanes\n) {\n  resetHydrationState();\n  workInProgress.flags |= 256;\n  reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n  return workInProgress.child;\n}\nvar SUSPENDED_MARKER = {\n  dehydrated: null,\n  treeContext: null,\n  retryLane: 0,\n  hydrationErrors: null\n};\nfunction mountSuspenseOffscreenState(renderLanes) {\n  return { baseLanes: renderLanes, cachePool: getSuspendedCache() };\n}\nfunction getRemainingWorkInPrimaryTree(\n  current,\n  primaryTreeDidDefer,\n  renderLanes\n) {\n  current = null !== current ? current.childLanes & ~renderLanes : 0;\n  primaryTreeDidDefer && (current |= workInProgressDeferredLane);\n  return current;\n}\nfunction updateSuspenseComponent(current, workInProgress, renderLanes) {\n  var nextProps = workInProgress.pendingProps,\n    showFallback = !1,\n    didSuspend = 0 !== (workInProgress.flags & 128),\n    JSCompiler_temp;\n  (JSCompiler_temp = didSuspend) ||\n    (JSCompiler_temp =\n      null !== current && null === current.memoizedState\n        ? !1\n        : 0 !== (suspenseStackCursor.current & 2));\n  JSCompiler_temp && ((showFallback = !0), (workInProgress.flags &= -129));\n  JSCompiler_temp = 0 !== (workInProgress.flags & 32);\n  workInProgress.flags &= -33;\n  if (null === current) {\n    if (isHydrating) {\n      showFallback\n        ? pushPrimaryTreeSuspenseHandler(workInProgress)\n        : reuseSuspenseHandlerOnStack(workInProgress);\n      if (isHydrating) {\n        var nextInstance = nextHydratableInstance,\n          JSCompiler_temp$jscomp$0;\n        if ((JSCompiler_temp$jscomp$0 = nextInstance)) {\n          c: {\n            JSCompiler_temp$jscomp$0 = nextInstance;\n            for (\n              nextInstance = rootOrSingletonContext;\n              8 !== JSCompiler_temp$jscomp$0.nodeType;\n\n            ) {\n              if (!nextInstance) {\n                nextInstance = null;\n                break c;\n              }\n              JSCompiler_temp$jscomp$0 = getNextHydratable(\n                JSCompiler_temp$jscomp$0.nextSibling\n              );\n              if (null === JSCompiler_temp$jscomp$0) {\n                nextInstance = null;\n                break c;\n              }\n            }\n            nextInstance = JSCompiler_temp$jscomp$0;\n          }\n          null !== nextInstance\n            ? ((workInProgress.memoizedState = {\n                dehydrated: nextInstance,\n                treeContext:\n                  null !== treeContextProvider\n                    ? { id: treeContextId, overflow: treeContextOverflow }\n                    : null,\n                retryLane: 536870912,\n                hydrationErrors: null\n              }),\n              (JSCompiler_temp$jscomp$0 = createFiberImplClass(\n                18,\n                null,\n                null,\n                0\n              )),\n              (JSCompiler_temp$jscomp$0.stateNode = nextInstance),\n              (JSCompiler_temp$jscomp$0.return = workInProgress),\n              (workInProgress.child = JSCompiler_temp$jscomp$0),\n              (hydrationParentFiber = workInProgress),\n              (nextHydratableInstance = null),\n              (JSCompiler_temp$jscomp$0 = !0))\n            : (JSCompiler_temp$jscomp$0 = !1);\n        }\n        JSCompiler_temp$jscomp$0 || throwOnHydrationMismatch(workInProgress);\n      }\n      nextInstance = workInProgress.memoizedState;\n      if (\n        null !== nextInstance &&\n        ((nextInstance = nextInstance.dehydrated), null !== nextInstance)\n      )\n        return (\n          isSuspenseInstanceFallback(nextInstance)\n            ? (workInProgress.lanes = 32)\n            : (workInProgress.lanes = 536870912),\n          null\n        );\n      popSuspenseHandler(workInProgress);\n    }\n    nextInstance = nextProps.children;\n    nextProps = nextProps.fallback;\n    if (showFallback)\n      return (\n        reuseSuspenseHandlerOnStack(workInProgress),\n        (showFallback = workInProgress.mode),\n        (nextInstance = mountWorkInProgressOffscreenFiber(\n          { mode: \"hidden\", children: nextInstance },\n          showFallback\n        )),\n        (nextProps = createFiberFromFragment(\n          nextProps,\n          showFallback,\n          renderLanes,\n          null\n        )),\n        (nextInstance.return = workInProgress),\n        (nextProps.return = workInProgress),\n        (nextInstance.sibling = nextProps),\n        (workInProgress.child = nextInstance),\n        (showFallback = workInProgress.child),\n        (showFallback.memoizedState = mountSuspenseOffscreenState(renderLanes)),\n        (showFallback.childLanes = getRemainingWorkInPrimaryTree(\n          current,\n          JSCompiler_temp,\n          renderLanes\n        )),\n        (workInProgress.memoizedState = SUSPENDED_MARKER),\n        nextProps\n      );\n    pushPrimaryTreeSuspenseHandler(workInProgress);\n    return mountSuspensePrimaryChildren(workInProgress, nextInstance);\n  }\n  JSCompiler_temp$jscomp$0 = current.memoizedState;\n  if (\n    null !== JSCompiler_temp$jscomp$0 &&\n    ((nextInstance = JSCompiler_temp$jscomp$0.dehydrated),\n    null !== nextInstance)\n  ) {\n    if (didSuspend)\n      workInProgress.flags & 256\n        ? (pushPrimaryTreeSuspenseHandler(workInProgress),\n          (workInProgress.flags &= -257),\n          (workInProgress = retrySuspenseComponentWithoutHydrating(\n            current,\n            workInProgress,\n            renderLanes\n          )))\n        : null !== workInProgress.memoizedState\n          ? (reuseSuspenseHandlerOnStack(workInProgress),\n            (workInProgress.child = current.child),\n            (workInProgress.flags |= 128),\n            (workInProgress = null))\n          : (reuseSuspenseHandlerOnStack(workInProgress),\n            (showFallback = nextProps.fallback),\n            (nextInstance = workInProgress.mode),\n            (nextProps = mountWorkInProgressOffscreenFiber(\n              { mode: \"visible\", children: nextProps.children },\n              nextInstance\n            )),\n            (showFallback = createFiberFromFragment(\n              showFallback,\n              nextInstance,\n              renderLanes,\n              null\n            )),\n            (showFallback.flags |= 2),\n            (nextProps.return = workInProgress),\n            (showFallback.return = workInProgress),\n            (nextProps.sibling = showFallback),\n            (workInProgress.child = nextProps),\n            reconcileChildFibers(\n              workInProgress,\n              current.child,\n              null,\n              renderLanes\n            ),\n            (nextProps = workInProgress.child),\n            (nextProps.memoizedState =\n              mountSuspenseOffscreenState(renderLanes)),\n            (nextProps.childLanes = getRemainingWorkInPrimaryTree(\n              current,\n              JSCompiler_temp,\n              renderLanes\n            )),\n            (workInProgress.memoizedState = SUSPENDED_MARKER),\n            (workInProgress = showFallback));\n    else if (\n      (pushPrimaryTreeSuspenseHandler(workInProgress),\n      isSuspenseInstanceFallback(nextInstance))\n    ) {\n      JSCompiler_temp =\n        nextInstance.nextSibling && nextInstance.nextSibling.dataset;\n      if (JSCompiler_temp) var digest = JSCompiler_temp.dgst;\n      JSCompiler_temp = digest;\n      nextProps = Error(formatProdErrorMessage(419));\n      nextProps.stack = \"\";\n      nextProps.digest = JSCompiler_temp;\n      queueHydrationError({ value: nextProps, source: null, stack: null });\n      workInProgress = retrySuspenseComponentWithoutHydrating(\n        current,\n        workInProgress,\n        renderLanes\n      );\n    } else if (\n      (didReceiveUpdate ||\n        propagateParentContextChanges(current, workInProgress, renderLanes, !1),\n      (JSCompiler_temp = 0 !== (renderLanes & current.childLanes)),\n      didReceiveUpdate || JSCompiler_temp)\n    ) {\n      JSCompiler_temp = workInProgressRoot;\n      if (\n        null !== JSCompiler_temp &&\n        ((nextProps = renderLanes & -renderLanes),\n        (nextProps =\n          0 !== (nextProps & 42)\n            ? 1\n            : getBumpedLaneForHydrationByLane(nextProps)),\n        (nextProps =\n          0 !== (nextProps & (JSCompiler_temp.suspendedLanes | renderLanes))\n            ? 0\n            : nextProps),\n        0 !== nextProps && nextProps !== JSCompiler_temp$jscomp$0.retryLane)\n      )\n        throw (\n          ((JSCompiler_temp$jscomp$0.retryLane = nextProps),\n          enqueueConcurrentRenderForLane(current, nextProps),\n          scheduleUpdateOnFiber(JSCompiler_temp, current, nextProps),\n          SelectiveHydrationException)\n        );\n      \"$?\" === nextInstance.data || renderDidSuspendDelayIfPossible();\n      workInProgress = retrySuspenseComponentWithoutHydrating(\n        current,\n        workInProgress,\n        renderLanes\n      );\n    } else\n      \"$?\" === nextInstance.data\n        ? ((workInProgress.flags |= 192),\n          (workInProgress.child = current.child),\n          (workInProgress = null))\n        : ((current = JSCompiler_temp$jscomp$0.treeContext),\n          (nextHydratableInstance = getNextHydratable(\n            nextInstance.nextSibling\n          )),\n          (hydrationParentFiber = workInProgress),\n          (isHydrating = !0),\n          (hydrationErrors = null),\n          (rootOrSingletonContext = !1),\n          null !== current &&\n            ((idStack[idStackIndex++] = treeContextId),\n            (idStack[idStackIndex++] = treeContextOverflow),\n            (idStack[idStackIndex++] = treeContextProvider),\n            (treeContextId = current.id),\n            (treeContextOverflow = current.overflow),\n            (treeContextProvider = workInProgress)),\n          (workInProgress = mountSuspensePrimaryChildren(\n            workInProgress,\n            nextProps.children\n          )),\n          (workInProgress.flags |= 4096));\n    return workInProgress;\n  }\n  if (showFallback)\n    return (\n      reuseSuspenseHandlerOnStack(workInProgress),\n      (showFallback = nextProps.fallback),\n      (nextInstance = workInProgress.mode),\n      (JSCompiler_temp$jscomp$0 = current.child),\n      (digest = JSCompiler_temp$jscomp$0.sibling),\n      (nextProps = createWorkInProgress(JSCompiler_temp$jscomp$0, {\n        mode: \"hidden\",\n        children: nextProps.children\n      })),\n      (nextProps.subtreeFlags =\n        JSCompiler_temp$jscomp$0.subtreeFlags & 65011712),\n      null !== digest\n        ? (showFallback = createWorkInProgress(digest, showFallback))\n        : ((showFallback = createFiberFromFragment(\n            showFallback,\n            nextInstance,\n            renderLanes,\n            null\n          )),\n          (showFallback.flags |= 2)),\n      (showFallback.return = workInProgress),\n      (nextProps.return = workInProgress),\n      (nextProps.sibling = showFallback),\n      (workInProgress.child = nextProps),\n      (nextProps = showFallback),\n      (showFallback = workInProgress.child),\n      (nextInstance = current.child.memoizedState),\n      null === nextInstance\n        ? (nextInstance = mountSuspenseOffscreenState(renderLanes))\n        : ((JSCompiler_temp$jscomp$0 = nextInstance.cachePool),\n          null !== JSCompiler_temp$jscomp$0\n            ? ((digest = CacheContext._currentValue),\n              (JSCompiler_temp$jscomp$0 =\n                JSCompiler_temp$jscomp$0.parent !== digest\n                  ? { parent: digest, pool: digest }\n                  : JSCompiler_temp$jscomp$0))\n            : (JSCompiler_temp$jscomp$0 = getSuspendedCache()),\n          (nextInstance = {\n            baseLanes: nextInstance.baseLanes | renderLanes,\n            cachePool: JSCompiler_temp$jscomp$0\n          })),\n      (showFallback.memoizedState = nextInstance),\n      (showFallback.childLanes = getRemainingWorkInPrimaryTree(\n        current,\n        JSCompiler_temp,\n        renderLanes\n      )),\n      (workInProgress.memoizedState = SUSPENDED_MARKER),\n      nextProps\n    );\n  pushPrimaryTreeSuspenseHandler(workInProgress);\n  renderLanes = current.child;\n  current = renderLanes.sibling;\n  renderLanes = createWorkInProgress(renderLanes, {\n    mode: \"visible\",\n    children: nextProps.children\n  });\n  renderLanes.return = workInProgress;\n  renderLanes.sibling = null;\n  null !== current &&\n    ((JSCompiler_temp = workInProgress.deletions),\n    null === JSCompiler_temp\n      ? ((workInProgress.deletions = [current]), (workInProgress.flags |= 16))\n      : JSCompiler_temp.push(current));\n  workInProgress.child = renderLanes;\n  workInProgress.memoizedState = null;\n  return renderLanes;\n}\nfunction mountSuspensePrimaryChildren(workInProgress, primaryChildren) {\n  primaryChildren = mountWorkInProgressOffscreenFiber(\n    { mode: \"visible\", children: primaryChildren },\n    workInProgress.mode\n  );\n  primaryChildren.return = workInProgress;\n  return (workInProgress.child = primaryChildren);\n}\nfunction mountWorkInProgressOffscreenFiber(offscreenProps, mode) {\n  offscreenProps = createFiberImplClass(22, offscreenProps, null, mode);\n  offscreenProps.lanes = 0;\n  offscreenProps.stateNode = {\n    _visibility: 1,\n    _pendingMarkers: null,\n    _retryCache: null,\n    _transitions: null\n  };\n  return offscreenProps;\n}\nfunction retrySuspenseComponentWithoutHydrating(\n  current,\n  workInProgress,\n  renderLanes\n) {\n  reconcileChildFibers(workInProgress, current.child, null, renderLanes);\n  current = mountSuspensePrimaryChildren(\n    workInProgress,\n    workInProgress.pendingProps.children\n  );\n  current.flags |= 2;\n  workInProgress.memoizedState = null;\n  return current;\n}\nfunction scheduleSuspenseWorkOnFiber(fiber, renderLanes, propagationRoot) {\n  fiber.lanes |= renderLanes;\n  var alternate = fiber.alternate;\n  null !== alternate && (alternate.lanes |= renderLanes);\n  scheduleContextWorkOnParentPath(fiber.return, renderLanes, propagationRoot);\n}\nfunction initSuspenseListRenderState(\n  workInProgress,\n  isBackwards,\n  tail,\n  lastContentRow,\n  tailMode\n) {\n  var renderState = workInProgress.memoizedState;\n  null === renderState\n    ? (workInProgress.memoizedState = {\n        isBackwards: isBackwards,\n        rendering: null,\n        renderingStartTime: 0,\n        last: lastContentRow,\n        tail: tail,\n        tailMode: tailMode\n      })\n    : ((renderState.isBackwards = isBackwards),\n      (renderState.rendering = null),\n      (renderState.renderingStartTime = 0),\n      (renderState.last = lastContentRow),\n      (renderState.tail = tail),\n      (renderState.tailMode = tailMode));\n}\nfunction updateSuspenseListComponent(current, workInProgress, renderLanes) {\n  var nextProps = workInProgress.pendingProps,\n    revealOrder = nextProps.revealOrder,\n    tailMode = nextProps.tail;\n  reconcileChildren(current, workInProgress, nextProps.children, renderLanes);\n  nextProps = suspenseStackCursor.current;\n  if (0 !== (nextProps & 2))\n    (nextProps = (nextProps & 1) | 2), (workInProgress.flags |= 128);\n  else {\n    if (null !== current && 0 !== (current.flags & 128))\n      a: for (current = workInProgress.child; null !== current; ) {\n        if (13 === current.tag)\n          null !== current.memoizedState &&\n            scheduleSuspenseWorkOnFiber(current, renderLanes, workInProgress);\n        else if (19 === current.tag)\n          scheduleSuspenseWorkOnFiber(current, renderLanes, workInProgress);\n        else if (null !== current.child) {\n          current.child.return = current;\n          current = current.child;\n          continue;\n        }\n        if (current === workInProgress) break a;\n        for (; null === current.sibling; ) {\n          if (null === current.return || current.return === workInProgress)\n            break a;\n          current = current.return;\n        }\n        current.sibling.return = current.return;\n        current = current.sibling;\n      }\n    nextProps &= 1;\n  }\n  push(suspenseStackCursor, nextProps);\n  switch (revealOrder) {\n    case \"forwards\":\n      renderLanes = workInProgress.child;\n      for (revealOrder = null; null !== renderLanes; )\n        (current = renderLanes.alternate),\n          null !== current &&\n            null === findFirstSuspended(current) &&\n            (revealOrder = renderLanes),\n          (renderLanes = renderLanes.sibling);\n      renderLanes = revealOrder;\n      null === renderLanes\n        ? ((revealOrder = workInProgress.child), (workInProgress.child = null))\n        : ((revealOrder = renderLanes.sibling), (renderLanes.sibling = null));\n      initSuspenseListRenderState(\n        workInProgress,\n        !1,\n        revealOrder,\n        renderLanes,\n        tailMode\n      );\n      break;\n    case \"backwards\":\n      renderLanes = null;\n      revealOrder = workInProgress.child;\n      for (workInProgress.child = null; null !== revealOrder; ) {\n        current = revealOrder.alternate;\n        if (null !== current && null === findFirstSuspended(current)) {\n          workInProgress.child = revealOrder;\n          break;\n        }\n        current = revealOrder.sibling;\n        revealOrder.sibling = renderLanes;\n        renderLanes = revealOrder;\n        revealOrder = current;\n      }\n      initSuspenseListRenderState(\n        workInProgress,\n        !0,\n        renderLanes,\n        null,\n        tailMode\n      );\n      break;\n    case \"together\":\n      initSuspenseListRenderState(workInProgress, !1, null, null, void 0);\n      break;\n    default:\n      workInProgress.memoizedState = null;\n  }\n  return workInProgress.child;\n}\nfunction bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes) {\n  null !== current && (workInProgress.dependencies = current.dependencies);\n  workInProgressRootSkippedLanes |= workInProgress.lanes;\n  if (0 === (renderLanes & workInProgress.childLanes))\n    if (null !== current) {\n      if (\n        (propagateParentContextChanges(\n          current,\n          workInProgress,\n          renderLanes,\n          !1\n        ),\n        0 === (renderLanes & workInProgress.childLanes))\n      )\n        return null;\n    } else return null;\n  if (null !== current && workInProgress.child !== current.child)\n    throw Error(formatProdErrorMessage(153));\n  if (null !== workInProgress.child) {\n    current = workInProgress.child;\n    renderLanes = createWorkInProgress(current, current.pendingProps);\n    workInProgress.child = renderLanes;\n    for (renderLanes.return = workInProgress; null !== current.sibling; )\n      (current = current.sibling),\n        (renderLanes = renderLanes.sibling =\n          createWorkInProgress(current, current.pendingProps)),\n        (renderLanes.return = workInProgress);\n    renderLanes.sibling = null;\n  }\n  return workInProgress.child;\n}\nfunction checkScheduledUpdateOrContext(current, renderLanes) {\n  if (0 !== (current.lanes & renderLanes)) return !0;\n  current = current.dependencies;\n  return null !== current && checkIfContextChanged(current) ? !0 : !1;\n}\nfunction attemptEarlyBailoutIfNoScheduledUpdate(\n  current,\n  workInProgress,\n  renderLanes\n) {\n  switch (workInProgress.tag) {\n    case 3:\n      pushHostContainer(workInProgress, workInProgress.stateNode.containerInfo);\n      pushProvider(workInProgress, CacheContext, current.memoizedState.cache);\n      resetHydrationState();\n      break;\n    case 27:\n    case 5:\n      pushHostContext(workInProgress);\n      break;\n    case 4:\n      pushHostContainer(workInProgress, workInProgress.stateNode.containerInfo);\n      break;\n    case 10:\n      pushProvider(\n        workInProgress,\n        workInProgress.type,\n        workInProgress.memoizedProps.value\n      );\n      break;\n    case 13:\n      var state = workInProgress.memoizedState;\n      if (null !== state) {\n        if (null !== state.dehydrated)\n          return (\n            pushPrimaryTreeSuspenseHandler(workInProgress),\n            (workInProgress.flags |= 128),\n            null\n          );\n        if (0 !== (renderLanes & workInProgress.child.childLanes))\n          return updateSuspenseComponent(current, workInProgress, renderLanes);\n        pushPrimaryTreeSuspenseHandler(workInProgress);\n        current = bailoutOnAlreadyFinishedWork(\n          current,\n          workInProgress,\n          renderLanes\n        );\n        return null !== current ? current.sibling : null;\n      }\n      pushPrimaryTreeSuspenseHandler(workInProgress);\n      break;\n    case 19:\n      var didSuspendBefore = 0 !== (current.flags & 128);\n      state = 0 !== (renderLanes & workInProgress.childLanes);\n      state ||\n        (propagateParentContextChanges(\n          current,\n          workInProgress,\n          renderLanes,\n          !1\n        ),\n        (state = 0 !== (renderLanes & workInProgress.childLanes)));\n      if (didSuspendBefore) {\n        if (state)\n          return updateSuspenseListComponent(\n            current,\n            workInProgress,\n            renderLanes\n          );\n        workInProgress.flags |= 128;\n      }\n      didSuspendBefore = workInProgress.memoizedState;\n      null !== didSuspendBefore &&\n        ((didSuspendBefore.rendering = null),\n        (didSuspendBefore.tail = null),\n        (didSuspendBefore.lastEffect = null));\n      push(suspenseStackCursor, suspenseStackCursor.current);\n      if (state) break;\n      else return null;\n    case 22:\n    case 23:\n      return (\n        (workInProgress.lanes = 0),\n        updateOffscreenComponent(current, workInProgress, renderLanes)\n      );\n    case 24:\n      pushProvider(workInProgress, CacheContext, current.memoizedState.cache);\n  }\n  return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n}\nfunction beginWork(current, workInProgress, renderLanes) {\n  if (null !== current)\n    if (current.memoizedProps !== workInProgress.pendingProps)\n      didReceiveUpdate = !0;\n    else {\n      if (\n        !checkScheduledUpdateOrContext(current, renderLanes) &&\n        0 === (workInProgress.flags & 128)\n      )\n        return (\n          (didReceiveUpdate = !1),\n          attemptEarlyBailoutIfNoScheduledUpdate(\n            current,\n            workInProgress,\n            renderLanes\n          )\n        );\n      didReceiveUpdate = 0 !== (current.flags & 131072) ? !0 : !1;\n    }\n  else\n    (didReceiveUpdate = !1),\n      isHydrating &&\n        0 !== (workInProgress.flags & 1048576) &&\n        pushTreeId(workInProgress, treeForkCount, workInProgress.index);\n  workInProgress.lanes = 0;\n  switch (workInProgress.tag) {\n    case 16:\n      a: {\n        current = workInProgress.pendingProps;\n        var lazyComponent = workInProgress.elementType,\n          init = lazyComponent._init;\n        lazyComponent = init(lazyComponent._payload);\n        workInProgress.type = lazyComponent;\n        if (\"function\" === typeof lazyComponent)\n          shouldConstruct(lazyComponent)\n            ? ((current = resolveClassComponentProps(lazyComponent, current)),\n              (workInProgress.tag = 1),\n              (workInProgress = updateClassComponent(\n                null,\n                workInProgress,\n                lazyComponent,\n                current,\n                renderLanes\n              )))\n            : ((workInProgress.tag = 0),\n              (workInProgress = updateFunctionComponent(\n                null,\n                workInProgress,\n                lazyComponent,\n                current,\n                renderLanes\n              )));\n        else {\n          if (void 0 !== lazyComponent && null !== lazyComponent)\n            if (\n              ((init = lazyComponent.$$typeof), init === REACT_FORWARD_REF_TYPE)\n            ) {\n              workInProgress.tag = 11;\n              workInProgress = updateForwardRef(\n                null,\n                workInProgress,\n                lazyComponent,\n                current,\n                renderLanes\n              );\n              break a;\n            } else if (init === REACT_MEMO_TYPE) {\n              workInProgress.tag = 14;\n              workInProgress = updateMemoComponent(\n                null,\n                workInProgress,\n                lazyComponent,\n                current,\n                renderLanes\n              );\n              break a;\n            }\n          workInProgress =\n            getComponentNameFromType(lazyComponent) || lazyComponent;\n          throw Error(formatProdErrorMessage(306, workInProgress, \"\"));\n        }\n      }\n      return workInProgress;\n    case 0:\n      return updateFunctionComponent(\n        current,\n        workInProgress,\n        workInProgress.type,\n        workInProgress.pendingProps,\n        renderLanes\n      );\n    case 1:\n      return (\n        (lazyComponent = workInProgress.type),\n        (init = resolveClassComponentProps(\n          lazyComponent,\n          workInProgress.pendingProps\n        )),\n        updateClassComponent(\n          current,\n          workInProgress,\n          lazyComponent,\n          init,\n          renderLanes\n        )\n      );\n    case 3:\n      a: {\n        pushHostContainer(\n          workInProgress,\n          workInProgress.stateNode.containerInfo\n        );\n        if (null === current) throw Error(formatProdErrorMessage(387));\n        lazyComponent = workInProgress.pendingProps;\n        var prevState = workInProgress.memoizedState;\n        init = prevState.element;\n        cloneUpdateQueue(current, workInProgress);\n        processUpdateQueue(workInProgress, lazyComponent, null, renderLanes);\n        var nextState = workInProgress.memoizedState;\n        lazyComponent = nextState.cache;\n        pushProvider(workInProgress, CacheContext, lazyComponent);\n        lazyComponent !== prevState.cache &&\n          propagateContextChanges(\n            workInProgress,\n            [CacheContext],\n            renderLanes,\n            !0\n          );\n        suspendIfUpdateReadFromEntangledAsyncAction();\n        lazyComponent = nextState.element;\n        if (prevState.isDehydrated)\n          if (\n            ((prevState = {\n              element: lazyComponent,\n              isDehydrated: !1,\n              cache: nextState.cache\n            }),\n            (workInProgress.updateQueue.baseState = prevState),\n            (workInProgress.memoizedState = prevState),\n            workInProgress.flags & 256)\n          ) {\n            workInProgress = mountHostRootWithoutHydrating(\n              current,\n              workInProgress,\n              lazyComponent,\n              renderLanes\n            );\n            break a;\n          } else if (lazyComponent !== init) {\n            init = createCapturedValueAtFiber(\n              Error(formatProdErrorMessage(424)),\n              workInProgress\n            );\n            queueHydrationError(init);\n            workInProgress = mountHostRootWithoutHydrating(\n              current,\n              workInProgress,\n              lazyComponent,\n              renderLanes\n            );\n            break a;\n          } else {\n            current = workInProgress.stateNode.containerInfo;\n            switch (current.nodeType) {\n              case 9:\n                current = current.body;\n                break;\n              default:\n                current =\n                  \"HTML\" === current.nodeName\n                    ? current.ownerDocument.body\n                    : current;\n            }\n            nextHydratableInstance = getNextHydratable(current.firstChild);\n            hydrationParentFiber = workInProgress;\n            isHydrating = !0;\n            hydrationErrors = null;\n            rootOrSingletonContext = !0;\n            renderLanes = mountChildFibers(\n              workInProgress,\n              null,\n              lazyComponent,\n              renderLanes\n            );\n            for (workInProgress.child = renderLanes; renderLanes; )\n              (renderLanes.flags = (renderLanes.flags & -3) | 4096),\n                (renderLanes = renderLanes.sibling);\n          }\n        else {\n          resetHydrationState();\n          if (lazyComponent === init) {\n            workInProgress = bailoutOnAlreadyFinishedWork(\n              current,\n              workInProgress,\n              renderLanes\n            );\n            break a;\n          }\n          reconcileChildren(\n            current,\n            workInProgress,\n            lazyComponent,\n            renderLanes\n          );\n        }\n        workInProgress = workInProgress.child;\n      }\n      return workInProgress;\n    case 26:\n      return (\n        markRef(current, workInProgress),\n        null === current\n          ? (renderLanes = getResource(\n              workInProgress.type,\n              null,\n              workInProgress.pendingProps,\n              null\n            ))\n            ? (workInProgress.memoizedState = renderLanes)\n            : isHydrating ||\n              ((renderLanes = workInProgress.type),\n              (current = workInProgress.pendingProps),\n              (lazyComponent = getOwnerDocumentFromRootContainer(\n                rootInstanceStackCursor.current\n              ).createElement(renderLanes)),\n              (lazyComponent[internalInstanceKey] = workInProgress),\n              (lazyComponent[internalPropsKey] = current),\n              setInitialProperties(lazyComponent, renderLanes, current),\n              markNodeAsHoistable(lazyComponent),\n              (workInProgress.stateNode = lazyComponent))\n          : (workInProgress.memoizedState = getResource(\n              workInProgress.type,\n              current.memoizedProps,\n              workInProgress.pendingProps,\n              current.memoizedState\n            )),\n        null\n      );\n    case 27:\n      return (\n        pushHostContext(workInProgress),\n        null === current &&\n          isHydrating &&\n          ((lazyComponent = workInProgress.stateNode =\n            resolveSingletonInstance(\n              workInProgress.type,\n              workInProgress.pendingProps,\n              rootInstanceStackCursor.current\n            )),\n          (hydrationParentFiber = workInProgress),\n          (rootOrSingletonContext = !0),\n          (init = nextHydratableInstance),\n          isSingletonScope(workInProgress.type)\n            ? ((previousHydratableOnEnteringScopedSingleton = init),\n              (nextHydratableInstance = getNextHydratable(\n                lazyComponent.firstChild\n              )))\n            : (nextHydratableInstance = init)),\n        reconcileChildren(\n          current,\n          workInProgress,\n          workInProgress.pendingProps.children,\n          renderLanes\n        ),\n        markRef(current, workInProgress),\n        null === current && (workInProgress.flags |= 4194304),\n        workInProgress.child\n      );\n    case 5:\n      if (null === current && isHydrating) {\n        if ((init = lazyComponent = nextHydratableInstance))\n          (lazyComponent = canHydrateInstance(\n            lazyComponent,\n            workInProgress.type,\n            workInProgress.pendingProps,\n            rootOrSingletonContext\n          )),\n            null !== lazyComponent\n              ? ((workInProgress.stateNode = lazyComponent),\n                (hydrationParentFiber = workInProgress),\n                (nextHydratableInstance = getNextHydratable(\n                  lazyComponent.firstChild\n                )),\n                (rootOrSingletonContext = !1),\n                (init = !0))\n              : (init = !1);\n        init || throwOnHydrationMismatch(workInProgress);\n      }\n      pushHostContext(workInProgress);\n      init = workInProgress.type;\n      prevState = workInProgress.pendingProps;\n      nextState = null !== current ? current.memoizedProps : null;\n      lazyComponent = prevState.children;\n      shouldSetTextContent(init, prevState)\n        ? (lazyComponent = null)\n        : null !== nextState &&\n          shouldSetTextContent(init, nextState) &&\n          (workInProgress.flags |= 32);\n      null !== workInProgress.memoizedState &&\n        ((init = renderWithHooks(\n          current,\n          workInProgress,\n          TransitionAwareHostComponent,\n          null,\n          null,\n          renderLanes\n        )),\n        (HostTransitionContext._currentValue = init));\n      markRef(current, workInProgress);\n      reconcileChildren(current, workInProgress, lazyComponent, renderLanes);\n      return workInProgress.child;\n    case 6:\n      if (null === current && isHydrating) {\n        if ((current = renderLanes = nextHydratableInstance))\n          (renderLanes = canHydrateTextInstance(\n            renderLanes,\n            workInProgress.pendingProps,\n            rootOrSingletonContext\n          )),\n            null !== renderLanes\n              ? ((workInProgress.stateNode = renderLanes),\n                (hydrationParentFiber = workInProgress),\n                (nextHydratableInstance = null),\n                (current = !0))\n              : (current = !1);\n        current || throwOnHydrationMismatch(workInProgress);\n      }\n      return null;\n    case 13:\n      return updateSuspenseComponent(current, workInProgress, renderLanes);\n    case 4:\n      return (\n        pushHostContainer(\n          workInProgress,\n          workInProgress.stateNode.containerInfo\n        ),\n        (lazyComponent = workInProgress.pendingProps),\n        null === current\n          ? (workInProgress.child = reconcileChildFibers(\n              workInProgress,\n              null,\n              lazyComponent,\n              renderLanes\n            ))\n          : reconcileChildren(\n              current,\n              workInProgress,\n              lazyComponent,\n              renderLanes\n            ),\n        workInProgress.child\n      );\n    case 11:\n      return updateForwardRef(\n        current,\n        workInProgress,\n        workInProgress.type,\n        workInProgress.pendingProps,\n        renderLanes\n      );\n    case 7:\n      return (\n        reconcileChildren(\n          current,\n          workInProgress,\n          workInProgress.pendingProps,\n          renderLanes\n        ),\n        workInProgress.child\n      );\n    case 8:\n      return (\n        reconcileChildren(\n          current,\n          workInProgress,\n          workInProgress.pendingProps.children,\n          renderLanes\n        ),\n        workInProgress.child\n      );\n    case 12:\n      return (\n        reconcileChildren(\n          current,\n          workInProgress,\n          workInProgress.pendingProps.children,\n          renderLanes\n        ),\n        workInProgress.child\n      );\n    case 10:\n      return (\n        (lazyComponent = workInProgress.pendingProps),\n        pushProvider(workInProgress, workInProgress.type, lazyComponent.value),\n        reconcileChildren(\n          current,\n          workInProgress,\n          lazyComponent.children,\n          renderLanes\n        ),\n        workInProgress.child\n      );\n    case 9:\n      return (\n        (init = workInProgress.type._context),\n        (lazyComponent = workInProgress.pendingProps.children),\n        prepareToReadContext(workInProgress),\n        (init = readContext(init)),\n        (lazyComponent = lazyComponent(init)),\n        (workInProgress.flags |= 1),\n        reconcileChildren(current, workInProgress, lazyComponent, renderLanes),\n        workInProgress.child\n      );\n    case 14:\n      return updateMemoComponent(\n        current,\n        workInProgress,\n        workInProgress.type,\n        workInProgress.pendingProps,\n        renderLanes\n      );\n    case 15:\n      return updateSimpleMemoComponent(\n        current,\n        workInProgress,\n        workInProgress.type,\n        workInProgress.pendingProps,\n        renderLanes\n      );\n    case 19:\n      return updateSuspenseListComponent(current, workInProgress, renderLanes);\n    case 31:\n      return (\n        (lazyComponent = workInProgress.pendingProps),\n        (renderLanes = workInProgress.mode),\n        (lazyComponent = {\n          mode: lazyComponent.mode,\n          children: lazyComponent.children\n        }),\n        null === current\n          ? ((renderLanes = mountWorkInProgressOffscreenFiber(\n              lazyComponent,\n              renderLanes\n            )),\n            (renderLanes.ref = workInProgress.ref),\n            (workInProgress.child = renderLanes),\n            (renderLanes.return = workInProgress),\n            (workInProgress = renderLanes))\n          : ((renderLanes = createWorkInProgress(current.child, lazyComponent)),\n            (renderLanes.ref = workInProgress.ref),\n            (workInProgress.child = renderLanes),\n            (renderLanes.return = workInProgress),\n            (workInProgress = renderLanes)),\n        workInProgress\n      );\n    case 22:\n      return updateOffscreenComponent(current, workInProgress, renderLanes);\n    case 24:\n      return (\n        prepareToReadContext(workInProgress),\n        (lazyComponent = readContext(CacheContext)),\n        null === current\n          ? ((init = peekCacheFromPool()),\n            null === init &&\n              ((init = workInProgressRoot),\n              (prevState = createCache()),\n              (init.pooledCache = prevState),\n              prevState.refCount++,\n              null !== prevState && (init.pooledCacheLanes |= renderLanes),\n              (init = prevState)),\n            (workInProgress.memoizedState = {\n              parent: lazyComponent,\n              cache: init\n            }),\n            initializeUpdateQueue(workInProgress),\n            pushProvider(workInProgress, CacheContext, init))\n          : (0 !== (current.lanes & renderLanes) &&\n              (cloneUpdateQueue(current, workInProgress),\n              processUpdateQueue(workInProgress, null, null, renderLanes),\n              suspendIfUpdateReadFromEntangledAsyncAction()),\n            (init = current.memoizedState),\n            (prevState = workInProgress.memoizedState),\n            init.parent !== lazyComponent\n              ? ((init = { parent: lazyComponent, cache: lazyComponent }),\n                (workInProgress.memoizedState = init),\n                0 === workInProgress.lanes &&\n                  (workInProgress.memoizedState =\n                    workInProgress.updateQueue.baseState =\n                      init),\n                pushProvider(workInProgress, CacheContext, lazyComponent))\n              : ((lazyComponent = prevState.cache),\n                pushProvider(workInProgress, CacheContext, lazyComponent),\n                lazyComponent !== init.cache &&\n                  propagateContextChanges(\n                    workInProgress,\n                    [CacheContext],\n                    renderLanes,\n                    !0\n                  ))),\n        reconcileChildren(\n          current,\n          workInProgress,\n          workInProgress.pendingProps.children,\n          renderLanes\n        ),\n        workInProgress.child\n      );\n    case 29:\n      throw workInProgress.pendingProps;\n  }\n  throw Error(formatProdErrorMessage(156, workInProgress.tag));\n}\nfunction markUpdate(workInProgress) {\n  workInProgress.flags |= 4;\n}\nfunction preloadResourceAndSuspendIfNeeded(workInProgress, resource) {\n  if (\"stylesheet\" !== resource.type || 0 !== (resource.state.loading & 4))\n    workInProgress.flags &= -16777217;\n  else if (((workInProgress.flags |= 16777216), !preloadResource(resource))) {\n    resource = suspenseHandlerStackCursor.current;\n    if (\n      null !== resource &&\n      ((workInProgressRootRenderLanes & 4194048) ===\n      workInProgressRootRenderLanes\n        ? null !== shellBoundary\n        : ((workInProgressRootRenderLanes & 62914560) !==\n            workInProgressRootRenderLanes &&\n            0 === (workInProgressRootRenderLanes & 536870912)) ||\n          resource !== shellBoundary)\n    )\n      throw (\n        ((suspendedThenable = noopSuspenseyCommitThenable),\n        SuspenseyCommitException)\n      );\n    workInProgress.flags |= 8192;\n  }\n}\nfunction scheduleRetryEffect(workInProgress, retryQueue) {\n  null !== retryQueue && (workInProgress.flags |= 4);\n  workInProgress.flags & 16384 &&\n    ((retryQueue =\n      22 !== workInProgress.tag ? claimNextRetryLane() : 536870912),\n    (workInProgress.lanes |= retryQueue),\n    (workInProgressSuspendedRetryLanes |= retryQueue));\n}\nfunction cutOffTailIfNeeded(renderState, hasRenderedATailFallback) {\n  if (!isHydrating)\n    switch (renderState.tailMode) {\n      case \"hidden\":\n        hasRenderedATailFallback = renderState.tail;\n        for (var lastTailNode = null; null !== hasRenderedATailFallback; )\n          null !== hasRenderedATailFallback.alternate &&\n            (lastTailNode = hasRenderedATailFallback),\n            (hasRenderedATailFallback = hasRenderedATailFallback.sibling);\n        null === lastTailNode\n          ? (renderState.tail = null)\n          : (lastTailNode.sibling = null);\n        break;\n      case \"collapsed\":\n        lastTailNode = renderState.tail;\n        for (var lastTailNode$113 = null; null !== lastTailNode; )\n          null !== lastTailNode.alternate && (lastTailNode$113 = lastTailNode),\n            (lastTailNode = lastTailNode.sibling);\n        null === lastTailNode$113\n          ? hasRenderedATailFallback || null === renderState.tail\n            ? (renderState.tail = null)\n            : (renderState.tail.sibling = null)\n          : (lastTailNode$113.sibling = null);\n    }\n}\nfunction bubbleProperties(completedWork) {\n  var didBailout =\n      null !== completedWork.alternate &&\n      completedWork.alternate.child === completedWork.child,\n    newChildLanes = 0,\n    subtreeFlags = 0;\n  if (didBailout)\n    for (var child$114 = completedWork.child; null !== child$114; )\n      (newChildLanes |= child$114.lanes | child$114.childLanes),\n        (subtreeFlags |= child$114.subtreeFlags & 65011712),\n        (subtreeFlags |= child$114.flags & 65011712),\n        (child$114.return = completedWork),\n        (child$114 = child$114.sibling);\n  else\n    for (child$114 = completedWork.child; null !== child$114; )\n      (newChildLanes |= child$114.lanes | child$114.childLanes),\n        (subtreeFlags |= child$114.subtreeFlags),\n        (subtreeFlags |= child$114.flags),\n        (child$114.return = completedWork),\n        (child$114 = child$114.sibling);\n  completedWork.subtreeFlags |= subtreeFlags;\n  completedWork.childLanes = newChildLanes;\n  return didBailout;\n}\nfunction completeWork(current, workInProgress, renderLanes) {\n  var newProps = workInProgress.pendingProps;\n  popTreeContext(workInProgress);\n  switch (workInProgress.tag) {\n    case 31:\n    case 16:\n    case 15:\n    case 0:\n    case 11:\n    case 7:\n    case 8:\n    case 12:\n    case 9:\n    case 14:\n      return bubbleProperties(workInProgress), null;\n    case 1:\n      return bubbleProperties(workInProgress), null;\n    case 3:\n      renderLanes = workInProgress.stateNode;\n      newProps = null;\n      null !== current && (newProps = current.memoizedState.cache);\n      workInProgress.memoizedState.cache !== newProps &&\n        (workInProgress.flags |= 2048);\n      popProvider(CacheContext);\n      popHostContainer();\n      renderLanes.pendingContext &&\n        ((renderLanes.context = renderLanes.pendingContext),\n        (renderLanes.pendingContext = null));\n      if (null === current || null === current.child)\n        popHydrationState(workInProgress)\n          ? markUpdate(workInProgress)\n          : null === current ||\n            (current.memoizedState.isDehydrated &&\n              0 === (workInProgress.flags & 256)) ||\n            ((workInProgress.flags |= 1024),\n            upgradeHydrationErrorsToRecoverable());\n      bubbleProperties(workInProgress);\n      return null;\n    case 26:\n      return (\n        (renderLanes = workInProgress.memoizedState),\n        null === current\n          ? (markUpdate(workInProgress),\n            null !== renderLanes\n              ? (bubbleProperties(workInProgress),\n                preloadResourceAndSuspendIfNeeded(workInProgress, renderLanes))\n              : (bubbleProperties(workInProgress),\n                (workInProgress.flags &= -16777217)))\n          : renderLanes\n            ? renderLanes !== current.memoizedState\n              ? (markUpdate(workInProgress),\n                bubbleProperties(workInProgress),\n                preloadResourceAndSuspendIfNeeded(workInProgress, renderLanes))\n              : (bubbleProperties(workInProgress),\n                (workInProgress.flags &= -16777217))\n            : (current.memoizedProps !== newProps && markUpdate(workInProgress),\n              bubbleProperties(workInProgress),\n              (workInProgress.flags &= -16777217)),\n        null\n      );\n    case 27:\n      popHostContext(workInProgress);\n      renderLanes = rootInstanceStackCursor.current;\n      var type = workInProgress.type;\n      if (null !== current && null != workInProgress.stateNode)\n        current.memoizedProps !== newProps && markUpdate(workInProgress);\n      else {\n        if (!newProps) {\n          if (null === workInProgress.stateNode)\n            throw Error(formatProdErrorMessage(166));\n          bubbleProperties(workInProgress);\n          return null;\n        }\n        current = contextStackCursor.current;\n        popHydrationState(workInProgress)\n          ? prepareToHydrateHostInstance(workInProgress, current)\n          : ((current = resolveSingletonInstance(type, newProps, renderLanes)),\n            (workInProgress.stateNode = current),\n            markUpdate(workInProgress));\n      }\n      bubbleProperties(workInProgress);\n      return null;\n    case 5:\n      popHostContext(workInProgress);\n      renderLanes = workInProgress.type;\n      if (null !== current && null != workInProgress.stateNode)\n        current.memoizedProps !== newProps && markUpdate(workInProgress);\n      else {\n        if (!newProps) {\n          if (null === workInProgress.stateNode)\n            throw Error(formatProdErrorMessage(166));\n          bubbleProperties(workInProgress);\n          return null;\n        }\n        current = contextStackCursor.current;\n        if (popHydrationState(workInProgress))\n          prepareToHydrateHostInstance(workInProgress, current);\n        else {\n          type = getOwnerDocumentFromRootContainer(\n            rootInstanceStackCursor.current\n          );\n          switch (current) {\n            case 1:\n              current = type.createElementNS(\n                \"http://www.w3.org/2000/svg\",\n                renderLanes\n              );\n              break;\n            case 2:\n              current = type.createElementNS(\n                \"http://www.w3.org/1998/Math/MathML\",\n                renderLanes\n              );\n              break;\n            default:\n              switch (renderLanes) {\n                case \"svg\":\n                  current = type.createElementNS(\n                    \"http://www.w3.org/2000/svg\",\n                    renderLanes\n                  );\n                  break;\n                case \"math\":\n                  current = type.createElementNS(\n                    \"http://www.w3.org/1998/Math/MathML\",\n                    renderLanes\n                  );\n                  break;\n                case \"script\":\n                  current = type.createElement(\"div\");\n                  current.innerHTML = \"<script>\\x3c/script>\";\n                  current = current.removeChild(current.firstChild);\n                  break;\n                case \"select\":\n                  current =\n                    \"string\" === typeof newProps.is\n                      ? type.createElement(\"select\", { is: newProps.is })\n                      : type.createElement(\"select\");\n                  newProps.multiple\n                    ? (current.multiple = !0)\n                    : newProps.size && (current.size = newProps.size);\n                  break;\n                default:\n                  current =\n                    \"string\" === typeof newProps.is\n                      ? type.createElement(renderLanes, { is: newProps.is })\n                      : type.createElement(renderLanes);\n              }\n          }\n          current[internalInstanceKey] = workInProgress;\n          current[internalPropsKey] = newProps;\n          a: for (type = workInProgress.child; null !== type; ) {\n            if (5 === type.tag || 6 === type.tag)\n              current.appendChild(type.stateNode);\n            else if (4 !== type.tag && 27 !== type.tag && null !== type.child) {\n              type.child.return = type;\n              type = type.child;\n              continue;\n            }\n            if (type === workInProgress) break a;\n            for (; null === type.sibling; ) {\n              if (null === type.return || type.return === workInProgress)\n                break a;\n              type = type.return;\n            }\n            type.sibling.return = type.return;\n            type = type.sibling;\n          }\n          workInProgress.stateNode = current;\n          a: switch (\n            (setInitialProperties(current, renderLanes, newProps), renderLanes)\n          ) {\n            case \"button\":\n            case \"input\":\n            case \"select\":\n            case \"textarea\":\n              current = !!newProps.autoFocus;\n              break a;\n            case \"img\":\n              current = !0;\n              break a;\n            default:\n              current = !1;\n          }\n          current && markUpdate(workInProgress);\n        }\n      }\n      bubbleProperties(workInProgress);\n      workInProgress.flags &= -16777217;\n      return null;\n    case 6:\n      if (current && null != workInProgress.stateNode)\n        current.memoizedProps !== newProps && markUpdate(workInProgress);\n      else {\n        if (\"string\" !== typeof newProps && null === workInProgress.stateNode)\n          throw Error(formatProdErrorMessage(166));\n        current = rootInstanceStackCursor.current;\n        if (popHydrationState(workInProgress)) {\n          current = workInProgress.stateNode;\n          renderLanes = workInProgress.memoizedProps;\n          newProps = null;\n          type = hydrationParentFiber;\n          if (null !== type)\n            switch (type.tag) {\n              case 27:\n              case 5:\n                newProps = type.memoizedProps;\n            }\n          current[internalInstanceKey] = workInProgress;\n          current =\n            current.nodeValue === renderLanes ||\n            (null !== newProps && !0 === newProps.suppressHydrationWarning) ||\n            checkForUnmatchedText(current.nodeValue, renderLanes)\n              ? !0\n              : !1;\n          current || throwOnHydrationMismatch(workInProgress);\n        } else\n          (current =\n            getOwnerDocumentFromRootContainer(current).createTextNode(\n              newProps\n            )),\n            (current[internalInstanceKey] = workInProgress),\n            (workInProgress.stateNode = current);\n      }\n      bubbleProperties(workInProgress);\n      return null;\n    case 13:\n      newProps = workInProgress.memoizedState;\n      if (\n        null === current ||\n        (null !== current.memoizedState &&\n          null !== current.memoizedState.dehydrated)\n      ) {\n        type = popHydrationState(workInProgress);\n        if (null !== newProps && null !== newProps.dehydrated) {\n          if (null === current) {\n            if (!type) throw Error(formatProdErrorMessage(318));\n            type = workInProgress.memoizedState;\n            type = null !== type ? type.dehydrated : null;\n            if (!type) throw Error(formatProdErrorMessage(317));\n            type[internalInstanceKey] = workInProgress;\n          } else\n            resetHydrationState(),\n              0 === (workInProgress.flags & 128) &&\n                (workInProgress.memoizedState = null),\n              (workInProgress.flags |= 4);\n          bubbleProperties(workInProgress);\n          type = !1;\n        } else\n          (type = upgradeHydrationErrorsToRecoverable()),\n            null !== current &&\n              null !== current.memoizedState &&\n              (current.memoizedState.hydrationErrors = type),\n            (type = !0);\n        if (!type) {\n          if (workInProgress.flags & 256)\n            return popSuspenseHandler(workInProgress), workInProgress;\n          popSuspenseHandler(workInProgress);\n          return null;\n        }\n      }\n      popSuspenseHandler(workInProgress);\n      if (0 !== (workInProgress.flags & 128))\n        return (workInProgress.lanes = renderLanes), workInProgress;\n      renderLanes = null !== newProps;\n      current = null !== current && null !== current.memoizedState;\n      if (renderLanes) {\n        newProps = workInProgress.child;\n        type = null;\n        null !== newProps.alternate &&\n          null !== newProps.alternate.memoizedState &&\n          null !== newProps.alternate.memoizedState.cachePool &&\n          (type = newProps.alternate.memoizedState.cachePool.pool);\n        var cache$127 = null;\n        null !== newProps.memoizedState &&\n          null !== newProps.memoizedState.cachePool &&\n          (cache$127 = newProps.memoizedState.cachePool.pool);\n        cache$127 !== type && (newProps.flags |= 2048);\n      }\n      renderLanes !== current &&\n        renderLanes &&\n        (workInProgress.child.flags |= 8192);\n      scheduleRetryEffect(workInProgress, workInProgress.updateQueue);\n      bubbleProperties(workInProgress);\n      return null;\n    case 4:\n      return (\n        popHostContainer(),\n        null === current &&\n          listenToAllSupportedEvents(workInProgress.stateNode.containerInfo),\n        bubbleProperties(workInProgress),\n        null\n      );\n    case 10:\n      return (\n        popProvider(workInProgress.type), bubbleProperties(workInProgress), null\n      );\n    case 19:\n      pop(suspenseStackCursor);\n      type = workInProgress.memoizedState;\n      if (null === type) return bubbleProperties(workInProgress), null;\n      newProps = 0 !== (workInProgress.flags & 128);\n      cache$127 = type.rendering;\n      if (null === cache$127)\n        if (newProps) cutOffTailIfNeeded(type, !1);\n        else {\n          if (\n            0 !== workInProgressRootExitStatus ||\n            (null !== current && 0 !== (current.flags & 128))\n          )\n            for (current = workInProgress.child; null !== current; ) {\n              cache$127 = findFirstSuspended(current);\n              if (null !== cache$127) {\n                workInProgress.flags |= 128;\n                cutOffTailIfNeeded(type, !1);\n                current = cache$127.updateQueue;\n                workInProgress.updateQueue = current;\n                scheduleRetryEffect(workInProgress, current);\n                workInProgress.subtreeFlags = 0;\n                current = renderLanes;\n                for (renderLanes = workInProgress.child; null !== renderLanes; )\n                  resetWorkInProgress(renderLanes, current),\n                    (renderLanes = renderLanes.sibling);\n                push(\n                  suspenseStackCursor,\n                  (suspenseStackCursor.current & 1) | 2\n                );\n                return workInProgress.child;\n              }\n              current = current.sibling;\n            }\n          null !== type.tail &&\n            now() > workInProgressRootRenderTargetTime &&\n            ((workInProgress.flags |= 128),\n            (newProps = !0),\n            cutOffTailIfNeeded(type, !1),\n            (workInProgress.lanes = 4194304));\n        }\n      else {\n        if (!newProps)\n          if (((current = findFirstSuspended(cache$127)), null !== current)) {\n            if (\n              ((workInProgress.flags |= 128),\n              (newProps = !0),\n              (current = current.updateQueue),\n              (workInProgress.updateQueue = current),\n              scheduleRetryEffect(workInProgress, current),\n              cutOffTailIfNeeded(type, !0),\n              null === type.tail &&\n                \"hidden\" === type.tailMode &&\n                !cache$127.alternate &&\n                !isHydrating)\n            )\n              return bubbleProperties(workInProgress), null;\n          } else\n            2 * now() - type.renderingStartTime >\n              workInProgressRootRenderTargetTime &&\n              536870912 !== renderLanes &&\n              ((workInProgress.flags |= 128),\n              (newProps = !0),\n              cutOffTailIfNeeded(type, !1),\n              (workInProgress.lanes = 4194304));\n        type.isBackwards\n          ? ((cache$127.sibling = workInProgress.child),\n            (workInProgress.child = cache$127))\n          : ((current = type.last),\n            null !== current\n              ? (current.sibling = cache$127)\n              : (workInProgress.child = cache$127),\n            (type.last = cache$127));\n      }\n      if (null !== type.tail)\n        return (\n          (workInProgress = type.tail),\n          (type.rendering = workInProgress),\n          (type.tail = workInProgress.sibling),\n          (type.renderingStartTime = now()),\n          (workInProgress.sibling = null),\n          (current = suspenseStackCursor.current),\n          push(suspenseStackCursor, newProps ? (current & 1) | 2 : current & 1),\n          workInProgress\n        );\n      bubbleProperties(workInProgress);\n      return null;\n    case 22:\n    case 23:\n      return (\n        popSuspenseHandler(workInProgress),\n        popHiddenContext(),\n        (newProps = null !== workInProgress.memoizedState),\n        null !== current\n          ? (null !== current.memoizedState) !== newProps &&\n            (workInProgress.flags |= 8192)\n          : newProps && (workInProgress.flags |= 8192),\n        newProps\n          ? 0 !== (renderLanes & 536870912) &&\n            0 === (workInProgress.flags & 128) &&\n            (bubbleProperties(workInProgress),\n            workInProgress.subtreeFlags & 6 && (workInProgress.flags |= 8192))\n          : bubbleProperties(workInProgress),\n        (renderLanes = workInProgress.updateQueue),\n        null !== renderLanes &&\n          scheduleRetryEffect(workInProgress, renderLanes.retryQueue),\n        (renderLanes = null),\n        null !== current &&\n          null !== current.memoizedState &&\n          null !== current.memoizedState.cachePool &&\n          (renderLanes = current.memoizedState.cachePool.pool),\n        (newProps = null),\n        null !== workInProgress.memoizedState &&\n          null !== workInProgress.memoizedState.cachePool &&\n          (newProps = workInProgress.memoizedState.cachePool.pool),\n        newProps !== renderLanes && (workInProgress.flags |= 2048),\n        null !== current && pop(resumedCache),\n        null\n      );\n    case 24:\n      return (\n        (renderLanes = null),\n        null !== current && (renderLanes = current.memoizedState.cache),\n        workInProgress.memoizedState.cache !== renderLanes &&\n          (workInProgress.flags |= 2048),\n        popProvider(CacheContext),\n        bubbleProperties(workInProgress),\n        null\n      );\n    case 25:\n      return null;\n    case 30:\n      return null;\n  }\n  throw Error(formatProdErrorMessage(156, workInProgress.tag));\n}\nfunction unwindWork(current, workInProgress) {\n  popTreeContext(workInProgress);\n  switch (workInProgress.tag) {\n    case 1:\n      return (\n        (current = workInProgress.flags),\n        current & 65536\n          ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n          : null\n      );\n    case 3:\n      return (\n        popProvider(CacheContext),\n        popHostContainer(),\n        (current = workInProgress.flags),\n        0 !== (current & 65536) && 0 === (current & 128)\n          ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n          : null\n      );\n    case 26:\n    case 27:\n    case 5:\n      return popHostContext(workInProgress), null;\n    case 13:\n      popSuspenseHandler(workInProgress);\n      current = workInProgress.memoizedState;\n      if (null !== current && null !== current.dehydrated) {\n        if (null === workInProgress.alternate)\n          throw Error(formatProdErrorMessage(340));\n        resetHydrationState();\n      }\n      current = workInProgress.flags;\n      return current & 65536\n        ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n        : null;\n    case 19:\n      return pop(suspenseStackCursor), null;\n    case 4:\n      return popHostContainer(), null;\n    case 10:\n      return popProvider(workInProgress.type), null;\n    case 22:\n    case 23:\n      return (\n        popSuspenseHandler(workInProgress),\n        popHiddenContext(),\n        null !== current && pop(resumedCache),\n        (current = workInProgress.flags),\n        current & 65536\n          ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n          : null\n      );\n    case 24:\n      return popProvider(CacheContext), null;\n    case 25:\n      return null;\n    default:\n      return null;\n  }\n}\nfunction unwindInterruptedWork(current, interruptedWork) {\n  popTreeContext(interruptedWork);\n  switch (interruptedWork.tag) {\n    case 3:\n      popProvider(CacheContext);\n      popHostContainer();\n      break;\n    case 26:\n    case 27:\n    case 5:\n      popHostContext(interruptedWork);\n      break;\n    case 4:\n      popHostContainer();\n      break;\n    case 13:\n      popSuspenseHandler(interruptedWork);\n      break;\n    case 19:\n      pop(suspenseStackCursor);\n      break;\n    case 10:\n      popProvider(interruptedWork.type);\n      break;\n    case 22:\n    case 23:\n      popSuspenseHandler(interruptedWork);\n      popHiddenContext();\n      null !== current && pop(resumedCache);\n      break;\n    case 24:\n      popProvider(CacheContext);\n  }\n}\nfunction commitHookEffectListMount(flags, finishedWork) {\n  try {\n    var updateQueue = finishedWork.updateQueue,\n      lastEffect = null !== updateQueue ? updateQueue.lastEffect : null;\n    if (null !== lastEffect) {\n      var firstEffect = lastEffect.next;\n      updateQueue = firstEffect;\n      do {\n        if ((updateQueue.tag & flags) === flags) {\n          lastEffect = void 0;\n          var create = updateQueue.create,\n            inst = updateQueue.inst;\n          lastEffect = create();\n          inst.destroy = lastEffect;\n        }\n        updateQueue = updateQueue.next;\n      } while (updateQueue !== firstEffect);\n    }\n  } catch (error) {\n    captureCommitPhaseError(finishedWork, finishedWork.return, error);\n  }\n}\nfunction commitHookEffectListUnmount(\n  flags,\n  finishedWork,\n  nearestMountedAncestor$jscomp$0\n) {\n  try {\n    var updateQueue = finishedWork.updateQueue,\n      lastEffect = null !== updateQueue ? updateQueue.lastEffect : null;\n    if (null !== lastEffect) {\n      var firstEffect = lastEffect.next;\n      updateQueue = firstEffect;\n      do {\n        if ((updateQueue.tag & flags) === flags) {\n          var inst = updateQueue.inst,\n            destroy = inst.destroy;\n          if (void 0 !== destroy) {\n            inst.destroy = void 0;\n            lastEffect = finishedWork;\n            var nearestMountedAncestor = nearestMountedAncestor$jscomp$0,\n              destroy_ = destroy;\n            try {\n              destroy_();\n            } catch (error) {\n              captureCommitPhaseError(\n                lastEffect,\n                nearestMountedAncestor,\n                error\n              );\n            }\n          }\n        }\n        updateQueue = updateQueue.next;\n      } while (updateQueue !== firstEffect);\n    }\n  } catch (error) {\n    captureCommitPhaseError(finishedWork, finishedWork.return, error);\n  }\n}\nfunction commitClassCallbacks(finishedWork) {\n  var updateQueue = finishedWork.updateQueue;\n  if (null !== updateQueue) {\n    var instance = finishedWork.stateNode;\n    try {\n      commitCallbacks(updateQueue, instance);\n    } catch (error) {\n      captureCommitPhaseError(finishedWork, finishedWork.return, error);\n    }\n  }\n}\nfunction safelyCallComponentWillUnmount(\n  current,\n  nearestMountedAncestor,\n  instance\n) {\n  instance.props = resolveClassComponentProps(\n    current.type,\n    current.memoizedProps\n  );\n  instance.state = current.memoizedState;\n  try {\n    instance.componentWillUnmount();\n  } catch (error) {\n    captureCommitPhaseError(current, nearestMountedAncestor, error);\n  }\n}\nfunction safelyAttachRef(current, nearestMountedAncestor) {\n  try {\n    var ref = current.ref;\n    if (null !== ref) {\n      switch (current.tag) {\n        case 26:\n        case 27:\n        case 5:\n          var instanceToUse = current.stateNode;\n          break;\n        case 30:\n          instanceToUse = current.stateNode;\n          break;\n        default:\n          instanceToUse = current.stateNode;\n      }\n      \"function\" === typeof ref\n        ? (current.refCleanup = ref(instanceToUse))\n        : (ref.current = instanceToUse);\n    }\n  } catch (error) {\n    captureCommitPhaseError(current, nearestMountedAncestor, error);\n  }\n}\nfunction safelyDetachRef(current, nearestMountedAncestor) {\n  var ref = current.ref,\n    refCleanup = current.refCleanup;\n  if (null !== ref)\n    if (\"function\" === typeof refCleanup)\n      try {\n        refCleanup();\n      } catch (error) {\n        captureCommitPhaseError(current, nearestMountedAncestor, error);\n      } finally {\n        (current.refCleanup = null),\n          (current = current.alternate),\n          null != current && (current.refCleanup = null);\n      }\n    else if (\"function\" === typeof ref)\n      try {\n        ref(null);\n      } catch (error$143) {\n        captureCommitPhaseError(current, nearestMountedAncestor, error$143);\n      }\n    else ref.current = null;\n}\nfunction commitHostMount(finishedWork) {\n  var type = finishedWork.type,\n    props = finishedWork.memoizedProps,\n    instance = finishedWork.stateNode;\n  try {\n    a: switch (type) {\n      case \"button\":\n      case \"input\":\n      case \"select\":\n      case \"textarea\":\n        props.autoFocus && instance.focus();\n        break a;\n      case \"img\":\n        props.src\n          ? (instance.src = props.src)\n          : props.srcSet && (instance.srcset = props.srcSet);\n    }\n  } catch (error) {\n    captureCommitPhaseError(finishedWork, finishedWork.return, error);\n  }\n}\nfunction commitHostUpdate(finishedWork, newProps, oldProps) {\n  try {\n    var domElement = finishedWork.stateNode;\n    updateProperties(domElement, finishedWork.type, oldProps, newProps);\n    domElement[internalPropsKey] = newProps;\n  } catch (error) {\n    captureCommitPhaseError(finishedWork, finishedWork.return, error);\n  }\n}\nfunction isHostParent(fiber) {\n  return (\n    5 === fiber.tag ||\n    3 === fiber.tag ||\n    26 === fiber.tag ||\n    (27 === fiber.tag && isSingletonScope(fiber.type)) ||\n    4 === fiber.tag\n  );\n}\nfunction getHostSibling(fiber) {\n  a: for (;;) {\n    for (; null === fiber.sibling; ) {\n      if (null === fiber.return || isHostParent(fiber.return)) return null;\n      fiber = fiber.return;\n    }\n    fiber.sibling.return = fiber.return;\n    for (\n      fiber = fiber.sibling;\n      5 !== fiber.tag && 6 !== fiber.tag && 18 !== fiber.tag;\n\n    ) {\n      if (27 === fiber.tag && isSingletonScope(fiber.type)) continue a;\n      if (fiber.flags & 2) continue a;\n      if (null === fiber.child || 4 === fiber.tag) continue a;\n      else (fiber.child.return = fiber), (fiber = fiber.child);\n    }\n    if (!(fiber.flags & 2)) return fiber.stateNode;\n  }\n}\nfunction insertOrAppendPlacementNodeIntoContainer(node, before, parent) {\n  var tag = node.tag;\n  if (5 === tag || 6 === tag)\n    (node = node.stateNode),\n      before\n        ? (9 === parent.nodeType\n            ? parent.body\n            : \"HTML\" === parent.nodeName\n              ? parent.ownerDocument.body\n              : parent\n          ).insertBefore(node, before)\n        : ((before =\n            9 === parent.nodeType\n              ? parent.body\n              : \"HTML\" === parent.nodeName\n                ? parent.ownerDocument.body\n                : parent),\n          before.appendChild(node),\n          (parent = parent._reactRootContainer),\n          (null !== parent && void 0 !== parent) ||\n            null !== before.onclick ||\n            (before.onclick = noop$1));\n  else if (\n    4 !== tag &&\n    (27 === tag &&\n      isSingletonScope(node.type) &&\n      ((parent = node.stateNode), (before = null)),\n    (node = node.child),\n    null !== node)\n  )\n    for (\n      insertOrAppendPlacementNodeIntoContainer(node, before, parent),\n        node = node.sibling;\n      null !== node;\n\n    )\n      insertOrAppendPlacementNodeIntoContainer(node, before, parent),\n        (node = node.sibling);\n}\nfunction insertOrAppendPlacementNode(node, before, parent) {\n  var tag = node.tag;\n  if (5 === tag || 6 === tag)\n    (node = node.stateNode),\n      before ? parent.insertBefore(node, before) : parent.appendChild(node);\n  else if (\n    4 !== tag &&\n    (27 === tag && isSingletonScope(node.type) && (parent = node.stateNode),\n    (node = node.child),\n    null !== node)\n  )\n    for (\n      insertOrAppendPlacementNode(node, before, parent), node = node.sibling;\n      null !== node;\n\n    )\n      insertOrAppendPlacementNode(node, before, parent), (node = node.sibling);\n}\nfunction commitHostSingletonAcquisition(finishedWork) {\n  var singleton = finishedWork.stateNode,\n    props = finishedWork.memoizedProps;\n  try {\n    for (\n      var type = finishedWork.type, attributes = singleton.attributes;\n      attributes.length;\n\n    )\n      singleton.removeAttributeNode(attributes[0]);\n    setInitialProperties(singleton, type, props);\n    singleton[internalInstanceKey] = finishedWork;\n    singleton[internalPropsKey] = props;\n  } catch (error) {\n    captureCommitPhaseError(finishedWork, finishedWork.return, error);\n  }\n}\nvar offscreenSubtreeIsHidden = !1,\n  offscreenSubtreeWasHidden = !1,\n  needsFormReset = !1,\n  PossiblyWeakSet = \"function\" === typeof WeakSet ? WeakSet : Set,\n  nextEffect = null;\nfunction commitBeforeMutationEffects(root, firstChild) {\n  root = root.containerInfo;\n  eventsEnabled = _enabled;\n  root = getActiveElementDeep(root);\n  if (hasSelectionCapabilities(root)) {\n    if (\"selectionStart\" in root)\n      var JSCompiler_temp = {\n        start: root.selectionStart,\n        end: root.selectionEnd\n      };\n    else\n      a: {\n        JSCompiler_temp =\n          ((JSCompiler_temp = root.ownerDocument) &&\n            JSCompiler_temp.defaultView) ||\n          window;\n        var selection =\n          JSCompiler_temp.getSelection && JSCompiler_temp.getSelection();\n        if (selection && 0 !== selection.rangeCount) {\n          JSCompiler_temp = selection.anchorNode;\n          var anchorOffset = selection.anchorOffset,\n            focusNode = selection.focusNode;\n          selection = selection.focusOffset;\n          try {\n            JSCompiler_temp.nodeType, focusNode.nodeType;\n          } catch (e$20) {\n            JSCompiler_temp = null;\n            break a;\n          }\n          var length = 0,\n            start = -1,\n            end = -1,\n            indexWithinAnchor = 0,\n            indexWithinFocus = 0,\n            node = root,\n            parentNode = null;\n          b: for (;;) {\n            for (var next; ; ) {\n              node !== JSCompiler_temp ||\n                (0 !== anchorOffset && 3 !== node.nodeType) ||\n                (start = length + anchorOffset);\n              node !== focusNode ||\n                (0 !== selection && 3 !== node.nodeType) ||\n                (end = length + selection);\n              3 === node.nodeType && (length += node.nodeValue.length);\n              if (null === (next = node.firstChild)) break;\n              parentNode = node;\n              node = next;\n            }\n            for (;;) {\n              if (node === root) break b;\n              parentNode === JSCompiler_temp &&\n                ++indexWithinAnchor === anchorOffset &&\n                (start = length);\n              parentNode === focusNode &&\n                ++indexWithinFocus === selection &&\n                (end = length);\n              if (null !== (next = node.nextSibling)) break;\n              node = parentNode;\n              parentNode = node.parentNode;\n            }\n            node = next;\n          }\n          JSCompiler_temp =\n            -1 === start || -1 === end ? null : { start: start, end: end };\n        } else JSCompiler_temp = null;\n      }\n    JSCompiler_temp = JSCompiler_temp || { start: 0, end: 0 };\n  } else JSCompiler_temp = null;\n  selectionInformation = { focusedElem: root, selectionRange: JSCompiler_temp };\n  _enabled = !1;\n  for (nextEffect = firstChild; null !== nextEffect; )\n    if (\n      ((firstChild = nextEffect),\n      (root = firstChild.child),\n      0 !== (firstChild.subtreeFlags & 1024) && null !== root)\n    )\n      (root.return = firstChild), (nextEffect = root);\n    else\n      for (; null !== nextEffect; ) {\n        firstChild = nextEffect;\n        focusNode = firstChild.alternate;\n        root = firstChild.flags;\n        switch (firstChild.tag) {\n          case 0:\n            break;\n          case 11:\n          case 15:\n            break;\n          case 1:\n            if (0 !== (root & 1024) && null !== focusNode) {\n              root = void 0;\n              JSCompiler_temp = firstChild;\n              anchorOffset = focusNode.memoizedProps;\n              focusNode = focusNode.memoizedState;\n              selection = JSCompiler_temp.stateNode;\n              try {\n                var resolvedPrevProps = resolveClassComponentProps(\n                  JSCompiler_temp.type,\n                  anchorOffset,\n                  JSCompiler_temp.elementType === JSCompiler_temp.type\n                );\n                root = selection.getSnapshotBeforeUpdate(\n                  resolvedPrevProps,\n                  focusNode\n                );\n                selection.__reactInternalSnapshotBeforeUpdate = root;\n              } catch (error) {\n                captureCommitPhaseError(\n                  JSCompiler_temp,\n                  JSCompiler_temp.return,\n                  error\n                );\n              }\n            }\n            break;\n          case 3:\n            if (0 !== (root & 1024))\n              if (\n                ((root = firstChild.stateNode.containerInfo),\n                (JSCompiler_temp = root.nodeType),\n                9 === JSCompiler_temp)\n              )\n                clearContainerSparingly(root);\n              else if (1 === JSCompiler_temp)\n                switch (root.nodeName) {\n                  case \"HEAD\":\n                  case \"HTML\":\n                  case \"BODY\":\n                    clearContainerSparingly(root);\n                    break;\n                  default:\n                    root.textContent = \"\";\n                }\n            break;\n          case 5:\n          case 26:\n          case 27:\n          case 6:\n          case 4:\n          case 17:\n            break;\n          default:\n            if (0 !== (root & 1024)) throw Error(formatProdErrorMessage(163));\n        }\n        root = firstChild.sibling;\n        if (null !== root) {\n          root.return = firstChild.return;\n          nextEffect = root;\n          break;\n        }\n        nextEffect = firstChild.return;\n      }\n}\nfunction commitLayoutEffectOnFiber(finishedRoot, current, finishedWork) {\n  var flags = finishedWork.flags;\n  switch (finishedWork.tag) {\n    case 0:\n    case 11:\n    case 15:\n      recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n      flags & 4 && commitHookEffectListMount(5, finishedWork);\n      break;\n    case 1:\n      recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n      if (flags & 4)\n        if (((finishedRoot = finishedWork.stateNode), null === current))\n          try {\n            finishedRoot.componentDidMount();\n          } catch (error) {\n            captureCommitPhaseError(finishedWork, finishedWork.return, error);\n          }\n        else {\n          var prevProps = resolveClassComponentProps(\n            finishedWork.type,\n            current.memoizedProps\n          );\n          current = current.memoizedState;\n          try {\n            finishedRoot.componentDidUpdate(\n              prevProps,\n              current,\n              finishedRoot.__reactInternalSnapshotBeforeUpdate\n            );\n          } catch (error$142) {\n            captureCommitPhaseError(\n              finishedWork,\n              finishedWork.return,\n              error$142\n            );\n          }\n        }\n      flags & 64 && commitClassCallbacks(finishedWork);\n      flags & 512 && safelyAttachRef(finishedWork, finishedWork.return);\n      break;\n    case 3:\n      recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n      if (\n        flags & 64 &&\n        ((finishedRoot = finishedWork.updateQueue), null !== finishedRoot)\n      ) {\n        current = null;\n        if (null !== finishedWork.child)\n          switch (finishedWork.child.tag) {\n            case 27:\n            case 5:\n              current = finishedWork.child.stateNode;\n              break;\n            case 1:\n              current = finishedWork.child.stateNode;\n          }\n        try {\n          commitCallbacks(finishedRoot, current);\n        } catch (error) {\n          captureCommitPhaseError(finishedWork, finishedWork.return, error);\n        }\n      }\n      break;\n    case 27:\n      null === current &&\n        flags & 4 &&\n        commitHostSingletonAcquisition(finishedWork);\n    case 26:\n    case 5:\n      recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n      null === current && flags & 4 && commitHostMount(finishedWork);\n      flags & 512 && safelyAttachRef(finishedWork, finishedWork.return);\n      break;\n    case 12:\n      recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n      break;\n    case 13:\n      recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n      flags & 4 && commitSuspenseHydrationCallbacks(finishedRoot, finishedWork);\n      flags & 64 &&\n        ((finishedRoot = finishedWork.memoizedState),\n        null !== finishedRoot &&\n          ((finishedRoot = finishedRoot.dehydrated),\n          null !== finishedRoot &&\n            ((finishedWork = retryDehydratedSuspenseBoundary.bind(\n              null,\n              finishedWork\n            )),\n            registerSuspenseInstanceRetry(finishedRoot, finishedWork))));\n      break;\n    case 22:\n      flags = null !== finishedWork.memoizedState || offscreenSubtreeIsHidden;\n      if (!flags) {\n        current =\n          (null !== current && null !== current.memoizedState) ||\n          offscreenSubtreeWasHidden;\n        prevProps = offscreenSubtreeIsHidden;\n        var prevOffscreenSubtreeWasHidden = offscreenSubtreeWasHidden;\n        offscreenSubtreeIsHidden = flags;\n        (offscreenSubtreeWasHidden = current) && !prevOffscreenSubtreeWasHidden\n          ? recursivelyTraverseReappearLayoutEffects(\n              finishedRoot,\n              finishedWork,\n              0 !== (finishedWork.subtreeFlags & 8772)\n            )\n          : recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n        offscreenSubtreeIsHidden = prevProps;\n        offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden;\n      }\n      break;\n    case 30:\n      break;\n    default:\n      recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n  }\n}\nfunction detachFiberAfterEffects(fiber) {\n  var alternate = fiber.alternate;\n  null !== alternate &&\n    ((fiber.alternate = null), detachFiberAfterEffects(alternate));\n  fiber.child = null;\n  fiber.deletions = null;\n  fiber.sibling = null;\n  5 === fiber.tag &&\n    ((alternate = fiber.stateNode),\n    null !== alternate && detachDeletedInstance(alternate));\n  fiber.stateNode = null;\n  fiber.return = null;\n  fiber.dependencies = null;\n  fiber.memoizedProps = null;\n  fiber.memoizedState = null;\n  fiber.pendingProps = null;\n  fiber.stateNode = null;\n  fiber.updateQueue = null;\n}\nvar hostParent = null,\n  hostParentIsContainer = !1;\nfunction recursivelyTraverseDeletionEffects(\n  finishedRoot,\n  nearestMountedAncestor,\n  parent\n) {\n  for (parent = parent.child; null !== parent; )\n    commitDeletionEffectsOnFiber(finishedRoot, nearestMountedAncestor, parent),\n      (parent = parent.sibling);\n}\nfunction commitDeletionEffectsOnFiber(\n  finishedRoot,\n  nearestMountedAncestor,\n  deletedFiber\n) {\n  if (injectedHook && \"function\" === typeof injectedHook.onCommitFiberUnmount)\n    try {\n      injectedHook.onCommitFiberUnmount(rendererID, deletedFiber);\n    } catch (err) {}\n  switch (deletedFiber.tag) {\n    case 26:\n      offscreenSubtreeWasHidden ||\n        safelyDetachRef(deletedFiber, nearestMountedAncestor);\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n      deletedFiber.memoizedState\n        ? deletedFiber.memoizedState.count--\n        : deletedFiber.stateNode &&\n          ((deletedFiber = deletedFiber.stateNode),\n          deletedFiber.parentNode.removeChild(deletedFiber));\n      break;\n    case 27:\n      offscreenSubtreeWasHidden ||\n        safelyDetachRef(deletedFiber, nearestMountedAncestor);\n      var prevHostParent = hostParent,\n        prevHostParentIsContainer = hostParentIsContainer;\n      isSingletonScope(deletedFiber.type) &&\n        ((hostParent = deletedFiber.stateNode), (hostParentIsContainer = !1));\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n      releaseSingletonInstance(deletedFiber.stateNode);\n      hostParent = prevHostParent;\n      hostParentIsContainer = prevHostParentIsContainer;\n      break;\n    case 5:\n      offscreenSubtreeWasHidden ||\n        safelyDetachRef(deletedFiber, nearestMountedAncestor);\n    case 6:\n      prevHostParent = hostParent;\n      prevHostParentIsContainer = hostParentIsContainer;\n      hostParent = null;\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n      hostParent = prevHostParent;\n      hostParentIsContainer = prevHostParentIsContainer;\n      if (null !== hostParent)\n        if (hostParentIsContainer)\n          try {\n            (9 === hostParent.nodeType\n              ? hostParent.body\n              : \"HTML\" === hostParent.nodeName\n                ? hostParent.ownerDocument.body\n                : hostParent\n            ).removeChild(deletedFiber.stateNode);\n          } catch (error) {\n            captureCommitPhaseError(\n              deletedFiber,\n              nearestMountedAncestor,\n              error\n            );\n          }\n        else\n          try {\n            hostParent.removeChild(deletedFiber.stateNode);\n          } catch (error) {\n            captureCommitPhaseError(\n              deletedFiber,\n              nearestMountedAncestor,\n              error\n            );\n          }\n      break;\n    case 18:\n      null !== hostParent &&\n        (hostParentIsContainer\n          ? ((finishedRoot = hostParent),\n            clearSuspenseBoundary(\n              9 === finishedRoot.nodeType\n                ? finishedRoot.body\n                : \"HTML\" === finishedRoot.nodeName\n                  ? finishedRoot.ownerDocument.body\n                  : finishedRoot,\n              deletedFiber.stateNode\n            ),\n            retryIfBlockedOn(finishedRoot))\n          : clearSuspenseBoundary(hostParent, deletedFiber.stateNode));\n      break;\n    case 4:\n      prevHostParent = hostParent;\n      prevHostParentIsContainer = hostParentIsContainer;\n      hostParent = deletedFiber.stateNode.containerInfo;\n      hostParentIsContainer = !0;\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n      hostParent = prevHostParent;\n      hostParentIsContainer = prevHostParentIsContainer;\n      break;\n    case 0:\n    case 11:\n    case 14:\n    case 15:\n      offscreenSubtreeWasHidden ||\n        commitHookEffectListUnmount(2, deletedFiber, nearestMountedAncestor);\n      offscreenSubtreeWasHidden ||\n        commitHookEffectListUnmount(4, deletedFiber, nearestMountedAncestor);\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n      break;\n    case 1:\n      offscreenSubtreeWasHidden ||\n        (safelyDetachRef(deletedFiber, nearestMountedAncestor),\n        (prevHostParent = deletedFiber.stateNode),\n        \"function\" === typeof prevHostParent.componentWillUnmount &&\n          safelyCallComponentWillUnmount(\n            deletedFiber,\n            nearestMountedAncestor,\n            prevHostParent\n          ));\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n      break;\n    case 21:\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n      break;\n    case 22:\n      offscreenSubtreeWasHidden =\n        (prevHostParent = offscreenSubtreeWasHidden) ||\n        null !== deletedFiber.memoizedState;\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n      offscreenSubtreeWasHidden = prevHostParent;\n      break;\n    default:\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n  }\n}\nfunction commitSuspenseHydrationCallbacks(finishedRoot, finishedWork) {\n  if (\n    null === finishedWork.memoizedState &&\n    ((finishedRoot = finishedWork.alternate),\n    null !== finishedRoot &&\n      ((finishedRoot = finishedRoot.memoizedState),\n      null !== finishedRoot &&\n        ((finishedRoot = finishedRoot.dehydrated), null !== finishedRoot)))\n  )\n    try {\n      retryIfBlockedOn(finishedRoot);\n    } catch (error) {\n      captureCommitPhaseError(finishedWork, finishedWork.return, error);\n    }\n}\nfunction getRetryCache(finishedWork) {\n  switch (finishedWork.tag) {\n    case 13:\n    case 19:\n      var retryCache = finishedWork.stateNode;\n      null === retryCache &&\n        (retryCache = finishedWork.stateNode = new PossiblyWeakSet());\n      return retryCache;\n    case 22:\n      return (\n        (finishedWork = finishedWork.stateNode),\n        (retryCache = finishedWork._retryCache),\n        null === retryCache &&\n          (retryCache = finishedWork._retryCache = new PossiblyWeakSet()),\n        retryCache\n      );\n    default:\n      throw Error(formatProdErrorMessage(435, finishedWork.tag));\n  }\n}\nfunction attachSuspenseRetryListeners(finishedWork, wakeables) {\n  var retryCache = getRetryCache(finishedWork);\n  wakeables.forEach(function (wakeable) {\n    var retry = resolveRetryWakeable.bind(null, finishedWork, wakeable);\n    retryCache.has(wakeable) ||\n      (retryCache.add(wakeable), wakeable.then(retry, retry));\n  });\n}\nfunction recursivelyTraverseMutationEffects(root$jscomp$0, parentFiber) {\n  var deletions = parentFiber.deletions;\n  if (null !== deletions)\n    for (var i = 0; i < deletions.length; i++) {\n      var childToDelete = deletions[i],\n        root = root$jscomp$0,\n        returnFiber = parentFiber,\n        parent = returnFiber;\n      a: for (; null !== parent; ) {\n        switch (parent.tag) {\n          case 27:\n            if (isSingletonScope(parent.type)) {\n              hostParent = parent.stateNode;\n              hostParentIsContainer = !1;\n              break a;\n            }\n            break;\n          case 5:\n            hostParent = parent.stateNode;\n            hostParentIsContainer = !1;\n            break a;\n          case 3:\n          case 4:\n            hostParent = parent.stateNode.containerInfo;\n            hostParentIsContainer = !0;\n            break a;\n        }\n        parent = parent.return;\n      }\n      if (null === hostParent) throw Error(formatProdErrorMessage(160));\n      commitDeletionEffectsOnFiber(root, returnFiber, childToDelete);\n      hostParent = null;\n      hostParentIsContainer = !1;\n      root = childToDelete.alternate;\n      null !== root && (root.return = null);\n      childToDelete.return = null;\n    }\n  if (parentFiber.subtreeFlags & 13878)\n    for (parentFiber = parentFiber.child; null !== parentFiber; )\n      commitMutationEffectsOnFiber(parentFiber, root$jscomp$0),\n        (parentFiber = parentFiber.sibling);\n}\nvar currentHoistableRoot = null;\nfunction commitMutationEffectsOnFiber(finishedWork, root) {\n  var current = finishedWork.alternate,\n    flags = finishedWork.flags;\n  switch (finishedWork.tag) {\n    case 0:\n    case 11:\n    case 14:\n    case 15:\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      flags & 4 &&\n        (commitHookEffectListUnmount(3, finishedWork, finishedWork.return),\n        commitHookEffectListMount(3, finishedWork),\n        commitHookEffectListUnmount(5, finishedWork, finishedWork.return));\n      break;\n    case 1:\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      flags & 512 &&\n        (offscreenSubtreeWasHidden ||\n          null === current ||\n          safelyDetachRef(current, current.return));\n      flags & 64 &&\n        offscreenSubtreeIsHidden &&\n        ((finishedWork = finishedWork.updateQueue),\n        null !== finishedWork &&\n          ((flags = finishedWork.callbacks),\n          null !== flags &&\n            ((current = finishedWork.shared.hiddenCallbacks),\n            (finishedWork.shared.hiddenCallbacks =\n              null === current ? flags : current.concat(flags)))));\n      break;\n    case 26:\n      var hoistableRoot = currentHoistableRoot;\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      flags & 512 &&\n        (offscreenSubtreeWasHidden ||\n          null === current ||\n          safelyDetachRef(current, current.return));\n      if (flags & 4) {\n        var currentResource = null !== current ? current.memoizedState : null;\n        flags = finishedWork.memoizedState;\n        if (null === current)\n          if (null === flags)\n            if (null === finishedWork.stateNode) {\n              a: {\n                flags = finishedWork.type;\n                current = finishedWork.memoizedProps;\n                hoistableRoot = hoistableRoot.ownerDocument || hoistableRoot;\n                b: switch (flags) {\n                  case \"title\":\n                    currentResource =\n                      hoistableRoot.getElementsByTagName(\"title\")[0];\n                    if (\n                      !currentResource ||\n                      currentResource[internalHoistableMarker] ||\n                      currentResource[internalInstanceKey] ||\n                      \"http://www.w3.org/2000/svg\" ===\n                        currentResource.namespaceURI ||\n                      currentResource.hasAttribute(\"itemprop\")\n                    )\n                      (currentResource = hoistableRoot.createElement(flags)),\n                        hoistableRoot.head.insertBefore(\n                          currentResource,\n                          hoistableRoot.querySelector(\"head > title\")\n                        );\n                    setInitialProperties(currentResource, flags, current);\n                    currentResource[internalInstanceKey] = finishedWork;\n                    markNodeAsHoistable(currentResource);\n                    flags = currentResource;\n                    break a;\n                  case \"link\":\n                    var maybeNodes = getHydratableHoistableCache(\n                      \"link\",\n                      \"href\",\n                      hoistableRoot\n                    ).get(flags + (current.href || \"\"));\n                    if (maybeNodes)\n                      for (var i = 0; i < maybeNodes.length; i++)\n                        if (\n                          ((currentResource = maybeNodes[i]),\n                          currentResource.getAttribute(\"href\") ===\n                            (null == current.href || \"\" === current.href\n                              ? null\n                              : current.href) &&\n                            currentResource.getAttribute(\"rel\") ===\n                              (null == current.rel ? null : current.rel) &&\n                            currentResource.getAttribute(\"title\") ===\n                              (null == current.title ? null : current.title) &&\n                            currentResource.getAttribute(\"crossorigin\") ===\n                              (null == current.crossOrigin\n                                ? null\n                                : current.crossOrigin))\n                        ) {\n                          maybeNodes.splice(i, 1);\n                          break b;\n                        }\n                    currentResource = hoistableRoot.createElement(flags);\n                    setInitialProperties(currentResource, flags, current);\n                    hoistableRoot.head.appendChild(currentResource);\n                    break;\n                  case \"meta\":\n                    if (\n                      (maybeNodes = getHydratableHoistableCache(\n                        \"meta\",\n                        \"content\",\n                        hoistableRoot\n                      ).get(flags + (current.content || \"\")))\n                    )\n                      for (i = 0; i < maybeNodes.length; i++)\n                        if (\n                          ((currentResource = maybeNodes[i]),\n                          currentResource.getAttribute(\"content\") ===\n                            (null == current.content\n                              ? null\n                              : \"\" + current.content) &&\n                            currentResource.getAttribute(\"name\") ===\n                              (null == current.name ? null : current.name) &&\n                            currentResource.getAttribute(\"property\") ===\n                              (null == current.property\n                                ? null\n                                : current.property) &&\n                            currentResource.getAttribute(\"http-equiv\") ===\n                              (null == current.httpEquiv\n                                ? null\n                                : current.httpEquiv) &&\n                            currentResource.getAttribute(\"charset\") ===\n                              (null == current.charSet\n                                ? null\n                                : current.charSet))\n                        ) {\n                          maybeNodes.splice(i, 1);\n                          break b;\n                        }\n                    currentResource = hoistableRoot.createElement(flags);\n                    setInitialProperties(currentResource, flags, current);\n                    hoistableRoot.head.appendChild(currentResource);\n                    break;\n                  default:\n                    throw Error(formatProdErrorMessage(468, flags));\n                }\n                currentResource[internalInstanceKey] = finishedWork;\n                markNodeAsHoistable(currentResource);\n                flags = currentResource;\n              }\n              finishedWork.stateNode = flags;\n            } else\n              mountHoistable(\n                hoistableRoot,\n                finishedWork.type,\n                finishedWork.stateNode\n              );\n          else\n            finishedWork.stateNode = acquireResource(\n              hoistableRoot,\n              flags,\n              finishedWork.memoizedProps\n            );\n        else\n          currentResource !== flags\n            ? (null === currentResource\n                ? null !== current.stateNode &&\n                  ((current = current.stateNode),\n                  current.parentNode.removeChild(current))\n                : currentResource.count--,\n              null === flags\n                ? mountHoistable(\n                    hoistableRoot,\n                    finishedWork.type,\n                    finishedWork.stateNode\n                  )\n                : acquireResource(\n                    hoistableRoot,\n                    flags,\n                    finishedWork.memoizedProps\n                  ))\n            : null === flags &&\n              null !== finishedWork.stateNode &&\n              commitHostUpdate(\n                finishedWork,\n                finishedWork.memoizedProps,\n                current.memoizedProps\n              );\n      }\n      break;\n    case 27:\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      flags & 512 &&\n        (offscreenSubtreeWasHidden ||\n          null === current ||\n          safelyDetachRef(current, current.return));\n      null !== current &&\n        flags & 4 &&\n        commitHostUpdate(\n          finishedWork,\n          finishedWork.memoizedProps,\n          current.memoizedProps\n        );\n      break;\n    case 5:\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      flags & 512 &&\n        (offscreenSubtreeWasHidden ||\n          null === current ||\n          safelyDetachRef(current, current.return));\n      if (finishedWork.flags & 32) {\n        hoistableRoot = finishedWork.stateNode;\n        try {\n          setTextContent(hoistableRoot, \"\");\n        } catch (error) {\n          captureCommitPhaseError(finishedWork, finishedWork.return, error);\n        }\n      }\n      flags & 4 &&\n        null != finishedWork.stateNode &&\n        ((hoistableRoot = finishedWork.memoizedProps),\n        commitHostUpdate(\n          finishedWork,\n          hoistableRoot,\n          null !== current ? current.memoizedProps : hoistableRoot\n        ));\n      flags & 1024 && (needsFormReset = !0);\n      break;\n    case 6:\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      if (flags & 4) {\n        if (null === finishedWork.stateNode)\n          throw Error(formatProdErrorMessage(162));\n        flags = finishedWork.memoizedProps;\n        current = finishedWork.stateNode;\n        try {\n          current.nodeValue = flags;\n        } catch (error) {\n          captureCommitPhaseError(finishedWork, finishedWork.return, error);\n        }\n      }\n      break;\n    case 3:\n      tagCaches = null;\n      hoistableRoot = currentHoistableRoot;\n      currentHoistableRoot = getHoistableRoot(root.containerInfo);\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      currentHoistableRoot = hoistableRoot;\n      commitReconciliationEffects(finishedWork);\n      if (flags & 4 && null !== current && current.memoizedState.isDehydrated)\n        try {\n          retryIfBlockedOn(root.containerInfo);\n        } catch (error) {\n          captureCommitPhaseError(finishedWork, finishedWork.return, error);\n        }\n      needsFormReset &&\n        ((needsFormReset = !1), recursivelyResetForms(finishedWork));\n      break;\n    case 4:\n      flags = currentHoistableRoot;\n      currentHoistableRoot = getHoistableRoot(\n        finishedWork.stateNode.containerInfo\n      );\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      currentHoistableRoot = flags;\n      break;\n    case 12:\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      break;\n    case 13:\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      finishedWork.child.flags & 8192 &&\n        (null !== finishedWork.memoizedState) !==\n          (null !== current && null !== current.memoizedState) &&\n        (globalMostRecentFallbackTime = now());\n      flags & 4 &&\n        ((flags = finishedWork.updateQueue),\n        null !== flags &&\n          ((finishedWork.updateQueue = null),\n          attachSuspenseRetryListeners(finishedWork, flags)));\n      break;\n    case 22:\n      hoistableRoot = null !== finishedWork.memoizedState;\n      var wasHidden = null !== current && null !== current.memoizedState,\n        prevOffscreenSubtreeIsHidden = offscreenSubtreeIsHidden,\n        prevOffscreenSubtreeWasHidden = offscreenSubtreeWasHidden;\n      offscreenSubtreeIsHidden = prevOffscreenSubtreeIsHidden || hoistableRoot;\n      offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden || wasHidden;\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden;\n      offscreenSubtreeIsHidden = prevOffscreenSubtreeIsHidden;\n      commitReconciliationEffects(finishedWork);\n      if (flags & 8192)\n        a: for (\n          root = finishedWork.stateNode,\n            root._visibility = hoistableRoot\n              ? root._visibility & -2\n              : root._visibility | 1,\n            hoistableRoot &&\n              (null === current ||\n                wasHidden ||\n                offscreenSubtreeIsHidden ||\n                offscreenSubtreeWasHidden ||\n                recursivelyTraverseDisappearLayoutEffects(finishedWork)),\n            current = null,\n            root = finishedWork;\n          ;\n\n        ) {\n          if (5 === root.tag || 26 === root.tag) {\n            if (null === current) {\n              wasHidden = current = root;\n              try {\n                if (((currentResource = wasHidden.stateNode), hoistableRoot))\n                  (maybeNodes = currentResource.style),\n                    \"function\" === typeof maybeNodes.setProperty\n                      ? maybeNodes.setProperty(\"display\", \"none\", \"important\")\n                      : (maybeNodes.display = \"none\");\n                else {\n                  i = wasHidden.stateNode;\n                  var styleProp = wasHidden.memoizedProps.style,\n                    display =\n                      void 0 !== styleProp &&\n                      null !== styleProp &&\n                      styleProp.hasOwnProperty(\"display\")\n                        ? styleProp.display\n                        : null;\n                  i.style.display =\n                    null == display || \"boolean\" === typeof display\n                      ? \"\"\n                      : (\"\" + display).trim();\n                }\n              } catch (error) {\n                captureCommitPhaseError(wasHidden, wasHidden.return, error);\n              }\n            }\n          } else if (6 === root.tag) {\n            if (null === current) {\n              wasHidden = root;\n              try {\n                wasHidden.stateNode.nodeValue = hoistableRoot\n                  ? \"\"\n                  : wasHidden.memoizedProps;\n              } catch (error) {\n                captureCommitPhaseError(wasHidden, wasHidden.return, error);\n              }\n            }\n          } else if (\n            ((22 !== root.tag && 23 !== root.tag) ||\n              null === root.memoizedState ||\n              root === finishedWork) &&\n            null !== root.child\n          ) {\n            root.child.return = root;\n            root = root.child;\n            continue;\n          }\n          if (root === finishedWork) break a;\n          for (; null === root.sibling; ) {\n            if (null === root.return || root.return === finishedWork) break a;\n            current === root && (current = null);\n            root = root.return;\n          }\n          current === root && (current = null);\n          root.sibling.return = root.return;\n          root = root.sibling;\n        }\n      flags & 4 &&\n        ((flags = finishedWork.updateQueue),\n        null !== flags &&\n          ((current = flags.retryQueue),\n          null !== current &&\n            ((flags.retryQueue = null),\n            attachSuspenseRetryListeners(finishedWork, current))));\n      break;\n    case 19:\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      flags & 4 &&\n        ((flags = finishedWork.updateQueue),\n        null !== flags &&\n          ((finishedWork.updateQueue = null),\n          attachSuspenseRetryListeners(finishedWork, flags)));\n      break;\n    case 30:\n      break;\n    case 21:\n      break;\n    default:\n      recursivelyTraverseMutationEffects(root, finishedWork),\n        commitReconciliationEffects(finishedWork);\n  }\n}\nfunction commitReconciliationEffects(finishedWork) {\n  var flags = finishedWork.flags;\n  if (flags & 2) {\n    try {\n      for (\n        var hostParentFiber, parentFiber = finishedWork.return;\n        null !== parentFiber;\n\n      ) {\n        if (isHostParent(parentFiber)) {\n          hostParentFiber = parentFiber;\n          break;\n        }\n        parentFiber = parentFiber.return;\n      }\n      if (null == hostParentFiber) throw Error(formatProdErrorMessage(160));\n      switch (hostParentFiber.tag) {\n        case 27:\n          var parent = hostParentFiber.stateNode,\n            before = getHostSibling(finishedWork);\n          insertOrAppendPlacementNode(finishedWork, before, parent);\n          break;\n        case 5:\n          var parent$144 = hostParentFiber.stateNode;\n          hostParentFiber.flags & 32 &&\n            (setTextContent(parent$144, \"\"), (hostParentFiber.flags &= -33));\n          var before$145 = getHostSibling(finishedWork);\n          insertOrAppendPlacementNode(finishedWork, before$145, parent$144);\n          break;\n        case 3:\n        case 4:\n          var parent$146 = hostParentFiber.stateNode.containerInfo,\n            before$147 = getHostSibling(finishedWork);\n          insertOrAppendPlacementNodeIntoContainer(\n            finishedWork,\n            before$147,\n            parent$146\n          );\n          break;\n        default:\n          throw Error(formatProdErrorMessage(161));\n      }\n    } catch (error) {\n      captureCommitPhaseError(finishedWork, finishedWork.return, error);\n    }\n    finishedWork.flags &= -3;\n  }\n  flags & 4096 && (finishedWork.flags &= -4097);\n}\nfunction recursivelyResetForms(parentFiber) {\n  if (parentFiber.subtreeFlags & 1024)\n    for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n      var fiber = parentFiber;\n      recursivelyResetForms(fiber);\n      5 === fiber.tag && fiber.flags & 1024 && fiber.stateNode.reset();\n      parentFiber = parentFiber.sibling;\n    }\n}\nfunction recursivelyTraverseLayoutEffects(root, parentFiber) {\n  if (parentFiber.subtreeFlags & 8772)\n    for (parentFiber = parentFiber.child; null !== parentFiber; )\n      commitLayoutEffectOnFiber(root, parentFiber.alternate, parentFiber),\n        (parentFiber = parentFiber.sibling);\n}\nfunction recursivelyTraverseDisappearLayoutEffects(parentFiber) {\n  for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n    var finishedWork = parentFiber;\n    switch (finishedWork.tag) {\n      case 0:\n      case 11:\n      case 14:\n      case 15:\n        commitHookEffectListUnmount(4, finishedWork, finishedWork.return);\n        recursivelyTraverseDisappearLayoutEffects(finishedWork);\n        break;\n      case 1:\n        safelyDetachRef(finishedWork, finishedWork.return);\n        var instance = finishedWork.stateNode;\n        \"function\" === typeof instance.componentWillUnmount &&\n          safelyCallComponentWillUnmount(\n            finishedWork,\n            finishedWork.return,\n            instance\n          );\n        recursivelyTraverseDisappearLayoutEffects(finishedWork);\n        break;\n      case 27:\n        releaseSingletonInstance(finishedWork.stateNode);\n      case 26:\n      case 5:\n        safelyDetachRef(finishedWork, finishedWork.return);\n        recursivelyTraverseDisappearLayoutEffects(finishedWork);\n        break;\n      case 22:\n        null === finishedWork.memoizedState &&\n          recursivelyTraverseDisappearLayoutEffects(finishedWork);\n        break;\n      case 30:\n        recursivelyTraverseDisappearLayoutEffects(finishedWork);\n        break;\n      default:\n        recursivelyTraverseDisappearLayoutEffects(finishedWork);\n    }\n    parentFiber = parentFiber.sibling;\n  }\n}\nfunction recursivelyTraverseReappearLayoutEffects(\n  finishedRoot$jscomp$0,\n  parentFiber,\n  includeWorkInProgressEffects\n) {\n  includeWorkInProgressEffects =\n    includeWorkInProgressEffects && 0 !== (parentFiber.subtreeFlags & 8772);\n  for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n    var current = parentFiber.alternate,\n      finishedRoot = finishedRoot$jscomp$0,\n      finishedWork = parentFiber,\n      flags = finishedWork.flags;\n    switch (finishedWork.tag) {\n      case 0:\n      case 11:\n      case 15:\n        recursivelyTraverseReappearLayoutEffects(\n          finishedRoot,\n          finishedWork,\n          includeWorkInProgressEffects\n        );\n        commitHookEffectListMount(4, finishedWork);\n        break;\n      case 1:\n        recursivelyTraverseReappearLayoutEffects(\n          finishedRoot,\n          finishedWork,\n          includeWorkInProgressEffects\n        );\n        current = finishedWork;\n        finishedRoot = current.stateNode;\n        if (\"function\" === typeof finishedRoot.componentDidMount)\n          try {\n            finishedRoot.componentDidMount();\n          } catch (error) {\n            captureCommitPhaseError(current, current.return, error);\n          }\n        current = finishedWork;\n        finishedRoot = current.updateQueue;\n        if (null !== finishedRoot) {\n          var instance = current.stateNode;\n          try {\n            var hiddenCallbacks = finishedRoot.shared.hiddenCallbacks;\n            if (null !== hiddenCallbacks)\n              for (\n                finishedRoot.shared.hiddenCallbacks = null, finishedRoot = 0;\n                finishedRoot < hiddenCallbacks.length;\n                finishedRoot++\n              )\n                callCallback(hiddenCallbacks[finishedRoot], instance);\n          } catch (error) {\n            captureCommitPhaseError(current, current.return, error);\n          }\n        }\n        includeWorkInProgressEffects &&\n          flags & 64 &&\n          commitClassCallbacks(finishedWork);\n        safelyAttachRef(finishedWork, finishedWork.return);\n        break;\n      case 27:\n        commitHostSingletonAcquisition(finishedWork);\n      case 26:\n      case 5:\n        recursivelyTraverseReappearLayoutEffects(\n          finishedRoot,\n          finishedWork,\n          includeWorkInProgressEffects\n        );\n        includeWorkInProgressEffects &&\n          null === current &&\n          flags & 4 &&\n          commitHostMount(finishedWork);\n        safelyAttachRef(finishedWork, finishedWork.return);\n        break;\n      case 12:\n        recursivelyTraverseReappearLayoutEffects(\n          finishedRoot,\n          finishedWork,\n          includeWorkInProgressEffects\n        );\n        break;\n      case 13:\n        recursivelyTraverseReappearLayoutEffects(\n          finishedRoot,\n          finishedWork,\n          includeWorkInProgressEffects\n        );\n        includeWorkInProgressEffects &&\n          flags & 4 &&\n          commitSuspenseHydrationCallbacks(finishedRoot, finishedWork);\n        break;\n      case 22:\n        null === finishedWork.memoizedState &&\n          recursivelyTraverseReappearLayoutEffects(\n            finishedRoot,\n            finishedWork,\n            includeWorkInProgressEffects\n          );\n        safelyAttachRef(finishedWork, finishedWork.return);\n        break;\n      case 30:\n        break;\n      default:\n        recursivelyTraverseReappearLayoutEffects(\n          finishedRoot,\n          finishedWork,\n          includeWorkInProgressEffects\n        );\n    }\n    parentFiber = parentFiber.sibling;\n  }\n}\nfunction commitOffscreenPassiveMountEffects(current, finishedWork) {\n  var previousCache = null;\n  null !== current &&\n    null !== current.memoizedState &&\n    null !== current.memoizedState.cachePool &&\n    (previousCache = current.memoizedState.cachePool.pool);\n  current = null;\n  null !== finishedWork.memoizedState &&\n    null !== finishedWork.memoizedState.cachePool &&\n    (current = finishedWork.memoizedState.cachePool.pool);\n  current !== previousCache &&\n    (null != current && current.refCount++,\n    null != previousCache && releaseCache(previousCache));\n}\nfunction commitCachePassiveMountEffect(current, finishedWork) {\n  current = null;\n  null !== finishedWork.alternate &&\n    (current = finishedWork.alternate.memoizedState.cache);\n  finishedWork = finishedWork.memoizedState.cache;\n  finishedWork !== current &&\n    (finishedWork.refCount++, null != current && releaseCache(current));\n}\nfunction recursivelyTraversePassiveMountEffects(\n  root,\n  parentFiber,\n  committedLanes,\n  committedTransitions\n) {\n  if (parentFiber.subtreeFlags & 10256)\n    for (parentFiber = parentFiber.child; null !== parentFiber; )\n      commitPassiveMountOnFiber(\n        root,\n        parentFiber,\n        committedLanes,\n        committedTransitions\n      ),\n        (parentFiber = parentFiber.sibling);\n}\nfunction commitPassiveMountOnFiber(\n  finishedRoot,\n  finishedWork,\n  committedLanes,\n  committedTransitions\n) {\n  var flags = finishedWork.flags;\n  switch (finishedWork.tag) {\n    case 0:\n    case 11:\n    case 15:\n      recursivelyTraversePassiveMountEffects(\n        finishedRoot,\n        finishedWork,\n        committedLanes,\n        committedTransitions\n      );\n      flags & 2048 && commitHookEffectListMount(9, finishedWork);\n      break;\n    case 1:\n      recursivelyTraversePassiveMountEffects(\n        finishedRoot,\n        finishedWork,\n        committedLanes,\n        committedTransitions\n      );\n      break;\n    case 3:\n      recursivelyTraversePassiveMountEffects(\n        finishedRoot,\n        finishedWork,\n        committedLanes,\n        committedTransitions\n      );\n      flags & 2048 &&\n        ((finishedRoot = null),\n        null !== finishedWork.alternate &&\n          (finishedRoot = finishedWork.alternate.memoizedState.cache),\n        (finishedWork = finishedWork.memoizedState.cache),\n        finishedWork !== finishedRoot &&\n          (finishedWork.refCount++,\n          null != finishedRoot && releaseCache(finishedRoot)));\n      break;\n    case 12:\n      if (flags & 2048) {\n        recursivelyTraversePassiveMountEffects(\n          finishedRoot,\n          finishedWork,\n          committedLanes,\n          committedTransitions\n        );\n        finishedRoot = finishedWork.stateNode;\n        try {\n          var _finishedWork$memoize2 = finishedWork.memoizedProps,\n            id = _finishedWork$memoize2.id,\n            onPostCommit = _finishedWork$memoize2.onPostCommit;\n          \"function\" === typeof onPostCommit &&\n            onPostCommit(\n              id,\n              null === finishedWork.alternate ? \"mount\" : \"update\",\n              finishedRoot.passiveEffectDuration,\n              -0\n            );\n        } catch (error) {\n          captureCommitPhaseError(finishedWork, finishedWork.return, error);\n        }\n      } else\n        recursivelyTraversePassiveMountEffects(\n          finishedRoot,\n          finishedWork,\n          committedLanes,\n          committedTransitions\n        );\n      break;\n    case 13:\n      recursivelyTraversePassiveMountEffects(\n        finishedRoot,\n        finishedWork,\n        committedLanes,\n        committedTransitions\n      );\n      break;\n    case 23:\n      break;\n    case 22:\n      _finishedWork$memoize2 = finishedWork.stateNode;\n      id = finishedWork.alternate;\n      null !== finishedWork.memoizedState\n        ? _finishedWork$memoize2._visibility & 2\n          ? recursivelyTraversePassiveMountEffects(\n              finishedRoot,\n              finishedWork,\n              committedLanes,\n              committedTransitions\n            )\n          : recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork)\n        : _finishedWork$memoize2._visibility & 2\n          ? recursivelyTraversePassiveMountEffects(\n              finishedRoot,\n              finishedWork,\n              committedLanes,\n              committedTransitions\n            )\n          : ((_finishedWork$memoize2._visibility |= 2),\n            recursivelyTraverseReconnectPassiveEffects(\n              finishedRoot,\n              finishedWork,\n              committedLanes,\n              committedTransitions,\n              0 !== (finishedWork.subtreeFlags & 10256)\n            ));\n      flags & 2048 && commitOffscreenPassiveMountEffects(id, finishedWork);\n      break;\n    case 24:\n      recursivelyTraversePassiveMountEffects(\n        finishedRoot,\n        finishedWork,\n        committedLanes,\n        committedTransitions\n      );\n      flags & 2048 &&\n        commitCachePassiveMountEffect(finishedWork.alternate, finishedWork);\n      break;\n    default:\n      recursivelyTraversePassiveMountEffects(\n        finishedRoot,\n        finishedWork,\n        committedLanes,\n        committedTransitions\n      );\n  }\n}\nfunction recursivelyTraverseReconnectPassiveEffects(\n  finishedRoot$jscomp$0,\n  parentFiber,\n  committedLanes$jscomp$0,\n  committedTransitions$jscomp$0,\n  includeWorkInProgressEffects\n) {\n  includeWorkInProgressEffects =\n    includeWorkInProgressEffects && 0 !== (parentFiber.subtreeFlags & 10256);\n  for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n    var finishedRoot = finishedRoot$jscomp$0,\n      finishedWork = parentFiber,\n      committedLanes = committedLanes$jscomp$0,\n      committedTransitions = committedTransitions$jscomp$0,\n      flags = finishedWork.flags;\n    switch (finishedWork.tag) {\n      case 0:\n      case 11:\n      case 15:\n        recursivelyTraverseReconnectPassiveEffects(\n          finishedRoot,\n          finishedWork,\n          committedLanes,\n          committedTransitions,\n          includeWorkInProgressEffects\n        );\n        commitHookEffectListMount(8, finishedWork);\n        break;\n      case 23:\n        break;\n      case 22:\n        var instance = finishedWork.stateNode;\n        null !== finishedWork.memoizedState\n          ? instance._visibility & 2\n            ? recursivelyTraverseReconnectPassiveEffects(\n                finishedRoot,\n                finishedWork,\n                committedLanes,\n                committedTransitions,\n                includeWorkInProgressEffects\n              )\n            : recursivelyTraverseAtomicPassiveEffects(\n                finishedRoot,\n                finishedWork\n              )\n          : ((instance._visibility |= 2),\n            recursivelyTraverseReconnectPassiveEffects(\n              finishedRoot,\n              finishedWork,\n              committedLanes,\n              committedTransitions,\n              includeWorkInProgressEffects\n            ));\n        includeWorkInProgressEffects &&\n          flags & 2048 &&\n          commitOffscreenPassiveMountEffects(\n            finishedWork.alternate,\n            finishedWork\n          );\n        break;\n      case 24:\n        recursivelyTraverseReconnectPassiveEffects(\n          finishedRoot,\n          finishedWork,\n          committedLanes,\n          committedTransitions,\n          includeWorkInProgressEffects\n        );\n        includeWorkInProgressEffects &&\n          flags & 2048 &&\n          commitCachePassiveMountEffect(finishedWork.alternate, finishedWork);\n        break;\n      default:\n        recursivelyTraverseReconnectPassiveEffects(\n          finishedRoot,\n          finishedWork,\n          committedLanes,\n          committedTransitions,\n          includeWorkInProgressEffects\n        );\n    }\n    parentFiber = parentFiber.sibling;\n  }\n}\nfunction recursivelyTraverseAtomicPassiveEffects(\n  finishedRoot$jscomp$0,\n  parentFiber\n) {\n  if (parentFiber.subtreeFlags & 10256)\n    for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n      var finishedRoot = finishedRoot$jscomp$0,\n        finishedWork = parentFiber,\n        flags = finishedWork.flags;\n      switch (finishedWork.tag) {\n        case 22:\n          recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);\n          flags & 2048 &&\n            commitOffscreenPassiveMountEffects(\n              finishedWork.alternate,\n              finishedWork\n            );\n          break;\n        case 24:\n          recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);\n          flags & 2048 &&\n            commitCachePassiveMountEffect(finishedWork.alternate, finishedWork);\n          break;\n        default:\n          recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);\n      }\n      parentFiber = parentFiber.sibling;\n    }\n}\nvar suspenseyCommitFlag = 8192;\nfunction recursivelyAccumulateSuspenseyCommit(parentFiber) {\n  if (parentFiber.subtreeFlags & suspenseyCommitFlag)\n    for (parentFiber = parentFiber.child; null !== parentFiber; )\n      accumulateSuspenseyCommitOnFiber(parentFiber),\n        (parentFiber = parentFiber.sibling);\n}\nfunction accumulateSuspenseyCommitOnFiber(fiber) {\n  switch (fiber.tag) {\n    case 26:\n      recursivelyAccumulateSuspenseyCommit(fiber);\n      fiber.flags & suspenseyCommitFlag &&\n        null !== fiber.memoizedState &&\n        suspendResource(\n          currentHoistableRoot,\n          fiber.memoizedState,\n          fiber.memoizedProps\n        );\n      break;\n    case 5:\n      recursivelyAccumulateSuspenseyCommit(fiber);\n      break;\n    case 3:\n    case 4:\n      var previousHoistableRoot = currentHoistableRoot;\n      currentHoistableRoot = getHoistableRoot(fiber.stateNode.containerInfo);\n      recursivelyAccumulateSuspenseyCommit(fiber);\n      currentHoistableRoot = previousHoistableRoot;\n      break;\n    case 22:\n      null === fiber.memoizedState &&\n        ((previousHoistableRoot = fiber.alternate),\n        null !== previousHoistableRoot &&\n        null !== previousHoistableRoot.memoizedState\n          ? ((previousHoistableRoot = suspenseyCommitFlag),\n            (suspenseyCommitFlag = 16777216),\n            recursivelyAccumulateSuspenseyCommit(fiber),\n            (suspenseyCommitFlag = previousHoistableRoot))\n          : recursivelyAccumulateSuspenseyCommit(fiber));\n      break;\n    default:\n      recursivelyAccumulateSuspenseyCommit(fiber);\n  }\n}\nfunction detachAlternateSiblings(parentFiber) {\n  var previousFiber = parentFiber.alternate;\n  if (\n    null !== previousFiber &&\n    ((parentFiber = previousFiber.child), null !== parentFiber)\n  ) {\n    previousFiber.child = null;\n    do\n      (previousFiber = parentFiber.sibling),\n        (parentFiber.sibling = null),\n        (parentFiber = previousFiber);\n    while (null !== parentFiber);\n  }\n}\nfunction recursivelyTraversePassiveUnmountEffects(parentFiber) {\n  var deletions = parentFiber.deletions;\n  if (0 !== (parentFiber.flags & 16)) {\n    if (null !== deletions)\n      for (var i = 0; i < deletions.length; i++) {\n        var childToDelete = deletions[i];\n        nextEffect = childToDelete;\n        commitPassiveUnmountEffectsInsideOfDeletedTree_begin(\n          childToDelete,\n          parentFiber\n        );\n      }\n    detachAlternateSiblings(parentFiber);\n  }\n  if (parentFiber.subtreeFlags & 10256)\n    for (parentFiber = parentFiber.child; null !== parentFiber; )\n      commitPassiveUnmountOnFiber(parentFiber),\n        (parentFiber = parentFiber.sibling);\n}\nfunction commitPassiveUnmountOnFiber(finishedWork) {\n  switch (finishedWork.tag) {\n    case 0:\n    case 11:\n    case 15:\n      recursivelyTraversePassiveUnmountEffects(finishedWork);\n      finishedWork.flags & 2048 &&\n        commitHookEffectListUnmount(9, finishedWork, finishedWork.return);\n      break;\n    case 3:\n      recursivelyTraversePassiveUnmountEffects(finishedWork);\n      break;\n    case 12:\n      recursivelyTraversePassiveUnmountEffects(finishedWork);\n      break;\n    case 22:\n      var instance = finishedWork.stateNode;\n      null !== finishedWork.memoizedState &&\n      instance._visibility & 2 &&\n      (null === finishedWork.return || 13 !== finishedWork.return.tag)\n        ? ((instance._visibility &= -3),\n          recursivelyTraverseDisconnectPassiveEffects(finishedWork))\n        : recursivelyTraversePassiveUnmountEffects(finishedWork);\n      break;\n    default:\n      recursivelyTraversePassiveUnmountEffects(finishedWork);\n  }\n}\nfunction recursivelyTraverseDisconnectPassiveEffects(parentFiber) {\n  var deletions = parentFiber.deletions;\n  if (0 !== (parentFiber.flags & 16)) {\n    if (null !== deletions)\n      for (var i = 0; i < deletions.length; i++) {\n        var childToDelete = deletions[i];\n        nextEffect = childToDelete;\n        commitPassiveUnmountEffectsInsideOfDeletedTree_begin(\n          childToDelete,\n          parentFiber\n        );\n      }\n    detachAlternateSiblings(parentFiber);\n  }\n  for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n    deletions = parentFiber;\n    switch (deletions.tag) {\n      case 0:\n      case 11:\n      case 15:\n        commitHookEffectListUnmount(8, deletions, deletions.return);\n        recursivelyTraverseDisconnectPassiveEffects(deletions);\n        break;\n      case 22:\n        i = deletions.stateNode;\n        i._visibility & 2 &&\n          ((i._visibility &= -3),\n          recursivelyTraverseDisconnectPassiveEffects(deletions));\n        break;\n      default:\n        recursivelyTraverseDisconnectPassiveEffects(deletions);\n    }\n    parentFiber = parentFiber.sibling;\n  }\n}\nfunction commitPassiveUnmountEffectsInsideOfDeletedTree_begin(\n  deletedSubtreeRoot,\n  nearestMountedAncestor\n) {\n  for (; null !== nextEffect; ) {\n    var fiber = nextEffect;\n    switch (fiber.tag) {\n      case 0:\n      case 11:\n      case 15:\n        commitHookEffectListUnmount(8, fiber, nearestMountedAncestor);\n        break;\n      case 23:\n      case 22:\n        if (\n          null !== fiber.memoizedState &&\n          null !== fiber.memoizedState.cachePool\n        ) {\n          var cache = fiber.memoizedState.cachePool.pool;\n          null != cache && cache.refCount++;\n        }\n        break;\n      case 24:\n        releaseCache(fiber.memoizedState.cache);\n    }\n    cache = fiber.child;\n    if (null !== cache) (cache.return = fiber), (nextEffect = cache);\n    else\n      a: for (fiber = deletedSubtreeRoot; null !== nextEffect; ) {\n        cache = nextEffect;\n        var sibling = cache.sibling,\n          returnFiber = cache.return;\n        detachFiberAfterEffects(cache);\n        if (cache === fiber) {\n          nextEffect = null;\n          break a;\n        }\n        if (null !== sibling) {\n          sibling.return = returnFiber;\n          nextEffect = sibling;\n          break a;\n        }\n        nextEffect = returnFiber;\n      }\n  }\n}\nvar DefaultAsyncDispatcher = {\n    getCacheForType: function (resourceType) {\n      var cache = readContext(CacheContext),\n        cacheForType = cache.data.get(resourceType);\n      void 0 === cacheForType &&\n        ((cacheForType = resourceType()),\n        cache.data.set(resourceType, cacheForType));\n      return cacheForType;\n    }\n  },\n  PossiblyWeakMap = \"function\" === typeof WeakMap ? WeakMap : Map,\n  executionContext = 0,\n  workInProgressRoot = null,\n  workInProgress = null,\n  workInProgressRootRenderLanes = 0,\n  workInProgressSuspendedReason = 0,\n  workInProgressThrownValue = null,\n  workInProgressRootDidSkipSuspendedSiblings = !1,\n  workInProgressRootIsPrerendering = !1,\n  workInProgressRootDidAttachPingListener = !1,\n  entangledRenderLanes = 0,\n  workInProgressRootExitStatus = 0,\n  workInProgressRootSkippedLanes = 0,\n  workInProgressRootInterleavedUpdatedLanes = 0,\n  workInProgressRootPingedLanes = 0,\n  workInProgressDeferredLane = 0,\n  workInProgressSuspendedRetryLanes = 0,\n  workInProgressRootConcurrentErrors = null,\n  workInProgressRootRecoverableErrors = null,\n  workInProgressRootDidIncludeRecursiveRenderUpdate = !1,\n  globalMostRecentFallbackTime = 0,\n  workInProgressRootRenderTargetTime = Infinity,\n  workInProgressTransitions = null,\n  legacyErrorBoundariesThatAlreadyFailed = null,\n  pendingEffectsStatus = 0,\n  pendingEffectsRoot = null,\n  pendingFinishedWork = null,\n  pendingEffectsLanes = 0,\n  pendingEffectsRemainingLanes = 0,\n  pendingPassiveTransitions = null,\n  pendingRecoverableErrors = null,\n  nestedUpdateCount = 0,\n  rootWithNestedUpdates = null;\nfunction requestUpdateLane() {\n  if (0 !== (executionContext & 2) && 0 !== workInProgressRootRenderLanes)\n    return workInProgressRootRenderLanes & -workInProgressRootRenderLanes;\n  if (null !== ReactSharedInternals.T) {\n    var actionScopeLane = currentEntangledLane;\n    return 0 !== actionScopeLane ? actionScopeLane : requestTransitionLane();\n  }\n  return resolveUpdatePriority();\n}\nfunction requestDeferredLane() {\n  0 === workInProgressDeferredLane &&\n    (workInProgressDeferredLane =\n      0 === (workInProgressRootRenderLanes & 536870912) || isHydrating\n        ? claimNextTransitionLane()\n        : 536870912);\n  var suspenseHandler = suspenseHandlerStackCursor.current;\n  null !== suspenseHandler && (suspenseHandler.flags |= 32);\n  return workInProgressDeferredLane;\n}\nfunction scheduleUpdateOnFiber(root, fiber, lane) {\n  if (\n    (root === workInProgressRoot &&\n      (2 === workInProgressSuspendedReason ||\n        9 === workInProgressSuspendedReason)) ||\n    null !== root.cancelPendingCommit\n  )\n    prepareFreshStack(root, 0),\n      markRootSuspended(\n        root,\n        workInProgressRootRenderLanes,\n        workInProgressDeferredLane,\n        !1\n      );\n  markRootUpdated$1(root, lane);\n  if (0 === (executionContext & 2) || root !== workInProgressRoot)\n    root === workInProgressRoot &&\n      (0 === (executionContext & 2) &&\n        (workInProgressRootInterleavedUpdatedLanes |= lane),\n      4 === workInProgressRootExitStatus &&\n        markRootSuspended(\n          root,\n          workInProgressRootRenderLanes,\n          workInProgressDeferredLane,\n          !1\n        )),\n      ensureRootIsScheduled(root);\n}\nfunction performWorkOnRoot(root$jscomp$0, lanes, forceSync) {\n  if (0 !== (executionContext & 6)) throw Error(formatProdErrorMessage(327));\n  var shouldTimeSlice =\n      (!forceSync &&\n        0 === (lanes & 124) &&\n        0 === (lanes & root$jscomp$0.expiredLanes)) ||\n      checkIfRootIsPrerendering(root$jscomp$0, lanes),\n    exitStatus = shouldTimeSlice\n      ? renderRootConcurrent(root$jscomp$0, lanes)\n      : renderRootSync(root$jscomp$0, lanes, !0),\n    renderWasConcurrent = shouldTimeSlice;\n  do {\n    if (0 === exitStatus) {\n      workInProgressRootIsPrerendering &&\n        !shouldTimeSlice &&\n        markRootSuspended(root$jscomp$0, lanes, 0, !1);\n      break;\n    } else {\n      forceSync = root$jscomp$0.current.alternate;\n      if (\n        renderWasConcurrent &&\n        !isRenderConsistentWithExternalStores(forceSync)\n      ) {\n        exitStatus = renderRootSync(root$jscomp$0, lanes, !1);\n        renderWasConcurrent = !1;\n        continue;\n      }\n      if (2 === exitStatus) {\n        renderWasConcurrent = lanes;\n        if (root$jscomp$0.errorRecoveryDisabledLanes & renderWasConcurrent)\n          var JSCompiler_inline_result = 0;\n        else\n          (JSCompiler_inline_result = root$jscomp$0.pendingLanes & -536870913),\n            (JSCompiler_inline_result =\n              0 !== JSCompiler_inline_result\n                ? JSCompiler_inline_result\n                : JSCompiler_inline_result & 536870912\n                  ? 536870912\n                  : 0);\n        if (0 !== JSCompiler_inline_result) {\n          lanes = JSCompiler_inline_result;\n          a: {\n            var root = root$jscomp$0;\n            exitStatus = workInProgressRootConcurrentErrors;\n            var wasRootDehydrated = root.current.memoizedState.isDehydrated;\n            wasRootDehydrated &&\n              (prepareFreshStack(root, JSCompiler_inline_result).flags |= 256);\n            JSCompiler_inline_result = renderRootSync(\n              root,\n              JSCompiler_inline_result,\n              !1\n            );\n            if (2 !== JSCompiler_inline_result) {\n              if (\n                workInProgressRootDidAttachPingListener &&\n                !wasRootDehydrated\n              ) {\n                root.errorRecoveryDisabledLanes |= renderWasConcurrent;\n                workInProgressRootInterleavedUpdatedLanes |=\n                  renderWasConcurrent;\n                exitStatus = 4;\n                break a;\n              }\n              renderWasConcurrent = workInProgressRootRecoverableErrors;\n              workInProgressRootRecoverableErrors = exitStatus;\n              null !== renderWasConcurrent &&\n                (null === workInProgressRootRecoverableErrors\n                  ? (workInProgressRootRecoverableErrors = renderWasConcurrent)\n                  : workInProgressRootRecoverableErrors.push.apply(\n                      workInProgressRootRecoverableErrors,\n                      renderWasConcurrent\n                    ));\n            }\n            exitStatus = JSCompiler_inline_result;\n          }\n          renderWasConcurrent = !1;\n          if (2 !== exitStatus) continue;\n        }\n      }\n      if (1 === exitStatus) {\n        prepareFreshStack(root$jscomp$0, 0);\n        markRootSuspended(root$jscomp$0, lanes, 0, !0);\n        break;\n      }\n      a: {\n        shouldTimeSlice = root$jscomp$0;\n        renderWasConcurrent = exitStatus;\n        switch (renderWasConcurrent) {\n          case 0:\n          case 1:\n            throw Error(formatProdErrorMessage(345));\n          case 4:\n            if ((lanes & 4194048) !== lanes) break;\n          case 6:\n            markRootSuspended(\n              shouldTimeSlice,\n              lanes,\n              workInProgressDeferredLane,\n              !workInProgressRootDidSkipSuspendedSiblings\n            );\n            break a;\n          case 2:\n            workInProgressRootRecoverableErrors = null;\n            break;\n          case 3:\n          case 5:\n            break;\n          default:\n            throw Error(formatProdErrorMessage(329));\n        }\n        if (\n          (lanes & 62914560) === lanes &&\n          ((exitStatus = globalMostRecentFallbackTime + 300 - now()),\n          10 < exitStatus)\n        ) {\n          markRootSuspended(\n            shouldTimeSlice,\n            lanes,\n            workInProgressDeferredLane,\n            !workInProgressRootDidSkipSuspendedSiblings\n          );\n          if (0 !== getNextLanes(shouldTimeSlice, 0, !0)) break a;\n          shouldTimeSlice.timeoutHandle = scheduleTimeout(\n            commitRootWhenReady.bind(\n              null,\n              shouldTimeSlice,\n              forceSync,\n              workInProgressRootRecoverableErrors,\n              workInProgressTransitions,\n              workInProgressRootDidIncludeRecursiveRenderUpdate,\n              lanes,\n              workInProgressDeferredLane,\n              workInProgressRootInterleavedUpdatedLanes,\n              workInProgressSuspendedRetryLanes,\n              workInProgressRootDidSkipSuspendedSiblings,\n              renderWasConcurrent,\n              2,\n              -0,\n              0\n            ),\n            exitStatus\n          );\n          break a;\n        }\n        commitRootWhenReady(\n          shouldTimeSlice,\n          forceSync,\n          workInProgressRootRecoverableErrors,\n          workInProgressTransitions,\n          workInProgressRootDidIncludeRecursiveRenderUpdate,\n          lanes,\n          workInProgressDeferredLane,\n          workInProgressRootInterleavedUpdatedLanes,\n          workInProgressSuspendedRetryLanes,\n          workInProgressRootDidSkipSuspendedSiblings,\n          renderWasConcurrent,\n          0,\n          -0,\n          0\n        );\n      }\n    }\n    break;\n  } while (1);\n  ensureRootIsScheduled(root$jscomp$0);\n}\nfunction commitRootWhenReady(\n  root,\n  finishedWork,\n  recoverableErrors,\n  transitions,\n  didIncludeRenderPhaseUpdate,\n  lanes,\n  spawnedLane,\n  updatedLanes,\n  suspendedRetryLanes,\n  didSkipSuspendedSiblings,\n  exitStatus,\n  suspendedCommitReason,\n  completedRenderStartTime,\n  completedRenderEndTime\n) {\n  root.timeoutHandle = -1;\n  suspendedCommitReason = finishedWork.subtreeFlags;\n  if (\n    suspendedCommitReason & 8192 ||\n    16785408 === (suspendedCommitReason & 16785408)\n  )\n    if (\n      ((suspendedState = { stylesheets: null, count: 0, unsuspend: noop }),\n      accumulateSuspenseyCommitOnFiber(finishedWork),\n      (suspendedCommitReason = waitForCommitToBeReady()),\n      null !== suspendedCommitReason)\n    ) {\n      root.cancelPendingCommit = suspendedCommitReason(\n        commitRoot.bind(\n          null,\n          root,\n          finishedWork,\n          lanes,\n          recoverableErrors,\n          transitions,\n          didIncludeRenderPhaseUpdate,\n          spawnedLane,\n          updatedLanes,\n          suspendedRetryLanes,\n          exitStatus,\n          1,\n          completedRenderStartTime,\n          completedRenderEndTime\n        )\n      );\n      markRootSuspended(root, lanes, spawnedLane, !didSkipSuspendedSiblings);\n      return;\n    }\n  commitRoot(\n    root,\n    finishedWork,\n    lanes,\n    recoverableErrors,\n    transitions,\n    didIncludeRenderPhaseUpdate,\n    spawnedLane,\n    updatedLanes,\n    suspendedRetryLanes\n  );\n}\nfunction isRenderConsistentWithExternalStores(finishedWork) {\n  for (var node = finishedWork; ; ) {\n    var tag = node.tag;\n    if (\n      (0 === tag || 11 === tag || 15 === tag) &&\n      node.flags & 16384 &&\n      ((tag = node.updateQueue),\n      null !== tag && ((tag = tag.stores), null !== tag))\n    )\n      for (var i = 0; i < tag.length; i++) {\n        var check = tag[i],\n          getSnapshot = check.getSnapshot;\n        check = check.value;\n        try {\n          if (!objectIs(getSnapshot(), check)) return !1;\n        } catch (error) {\n          return !1;\n        }\n      }\n    tag = node.child;\n    if (node.subtreeFlags & 16384 && null !== tag)\n      (tag.return = node), (node = tag);\n    else {\n      if (node === finishedWork) break;\n      for (; null === node.sibling; ) {\n        if (null === node.return || node.return === finishedWork) return !0;\n        node = node.return;\n      }\n      node.sibling.return = node.return;\n      node = node.sibling;\n    }\n  }\n  return !0;\n}\nfunction markRootSuspended(\n  root,\n  suspendedLanes,\n  spawnedLane,\n  didAttemptEntireTree\n) {\n  suspendedLanes &= ~workInProgressRootPingedLanes;\n  suspendedLanes &= ~workInProgressRootInterleavedUpdatedLanes;\n  root.suspendedLanes |= suspendedLanes;\n  root.pingedLanes &= ~suspendedLanes;\n  didAttemptEntireTree && (root.warmLanes |= suspendedLanes);\n  didAttemptEntireTree = root.expirationTimes;\n  for (var lanes = suspendedLanes; 0 < lanes; ) {\n    var index$4 = 31 - clz32(lanes),\n      lane = 1 << index$4;\n    didAttemptEntireTree[index$4] = -1;\n    lanes &= ~lane;\n  }\n  0 !== spawnedLane &&\n    markSpawnedDeferredLane(root, spawnedLane, suspendedLanes);\n}\nfunction flushSyncWork$1() {\n  return 0 === (executionContext & 6)\n    ? (flushSyncWorkAcrossRoots_impl(0, !1), !1)\n    : !0;\n}\nfunction resetWorkInProgressStack() {\n  if (null !== workInProgress) {\n    if (0 === workInProgressSuspendedReason)\n      var interruptedWork = workInProgress.return;\n    else\n      (interruptedWork = workInProgress),\n        (lastContextDependency = currentlyRenderingFiber$1 = null),\n        resetHooksOnUnwind(interruptedWork),\n        (thenableState = null),\n        (thenableIndexCounter = 0),\n        (interruptedWork = workInProgress);\n    for (; null !== interruptedWork; )\n      unwindInterruptedWork(interruptedWork.alternate, interruptedWork),\n        (interruptedWork = interruptedWork.return);\n    workInProgress = null;\n  }\n}\nfunction prepareFreshStack(root, lanes) {\n  var timeoutHandle = root.timeoutHandle;\n  -1 !== timeoutHandle &&\n    ((root.timeoutHandle = -1), cancelTimeout(timeoutHandle));\n  timeoutHandle = root.cancelPendingCommit;\n  null !== timeoutHandle &&\n    ((root.cancelPendingCommit = null), timeoutHandle());\n  resetWorkInProgressStack();\n  workInProgressRoot = root;\n  workInProgress = timeoutHandle = createWorkInProgress(root.current, null);\n  workInProgressRootRenderLanes = lanes;\n  workInProgressSuspendedReason = 0;\n  workInProgressThrownValue = null;\n  workInProgressRootDidSkipSuspendedSiblings = !1;\n  workInProgressRootIsPrerendering = checkIfRootIsPrerendering(root, lanes);\n  workInProgressRootDidAttachPingListener = !1;\n  workInProgressSuspendedRetryLanes =\n    workInProgressDeferredLane =\n    workInProgressRootPingedLanes =\n    workInProgressRootInterleavedUpdatedLanes =\n    workInProgressRootSkippedLanes =\n    workInProgressRootExitStatus =\n      0;\n  workInProgressRootRecoverableErrors = workInProgressRootConcurrentErrors =\n    null;\n  workInProgressRootDidIncludeRecursiveRenderUpdate = !1;\n  0 !== (lanes & 8) && (lanes |= lanes & 32);\n  var allEntangledLanes = root.entangledLanes;\n  if (0 !== allEntangledLanes)\n    for (\n      root = root.entanglements, allEntangledLanes &= lanes;\n      0 < allEntangledLanes;\n\n    ) {\n      var index$2 = 31 - clz32(allEntangledLanes),\n        lane = 1 << index$2;\n      lanes |= root[index$2];\n      allEntangledLanes &= ~lane;\n    }\n  entangledRenderLanes = lanes;\n  finishQueueingConcurrentUpdates();\n  return timeoutHandle;\n}\nfunction handleThrow(root, thrownValue) {\n  currentlyRenderingFiber = null;\n  ReactSharedInternals.H = ContextOnlyDispatcher;\n  thrownValue === SuspenseException || thrownValue === SuspenseActionException\n    ? ((thrownValue = getSuspendedThenable()),\n      (workInProgressSuspendedReason = 3))\n    : thrownValue === SuspenseyCommitException\n      ? ((thrownValue = getSuspendedThenable()),\n        (workInProgressSuspendedReason = 4))\n      : (workInProgressSuspendedReason =\n          thrownValue === SelectiveHydrationException\n            ? 8\n            : null !== thrownValue &&\n                \"object\" === typeof thrownValue &&\n                \"function\" === typeof thrownValue.then\n              ? 6\n              : 1);\n  workInProgressThrownValue = thrownValue;\n  null === workInProgress &&\n    ((workInProgressRootExitStatus = 1),\n    logUncaughtError(\n      root,\n      createCapturedValueAtFiber(thrownValue, root.current)\n    ));\n}\nfunction pushDispatcher() {\n  var prevDispatcher = ReactSharedInternals.H;\n  ReactSharedInternals.H = ContextOnlyDispatcher;\n  return null === prevDispatcher ? ContextOnlyDispatcher : prevDispatcher;\n}\nfunction pushAsyncDispatcher() {\n  var prevAsyncDispatcher = ReactSharedInternals.A;\n  ReactSharedInternals.A = DefaultAsyncDispatcher;\n  return prevAsyncDispatcher;\n}\nfunction renderDidSuspendDelayIfPossible() {\n  workInProgressRootExitStatus = 4;\n  workInProgressRootDidSkipSuspendedSiblings ||\n    ((workInProgressRootRenderLanes & 4194048) !==\n      workInProgressRootRenderLanes &&\n      null !== suspenseHandlerStackCursor.current) ||\n    (workInProgressRootIsPrerendering = !0);\n  (0 === (workInProgressRootSkippedLanes & 134217727) &&\n    0 === (workInProgressRootInterleavedUpdatedLanes & 134217727)) ||\n    null === workInProgressRoot ||\n    markRootSuspended(\n      workInProgressRoot,\n      workInProgressRootRenderLanes,\n      workInProgressDeferredLane,\n      !1\n    );\n}\nfunction renderRootSync(root, lanes, shouldYieldForPrerendering) {\n  var prevExecutionContext = executionContext;\n  executionContext |= 2;\n  var prevDispatcher = pushDispatcher(),\n    prevAsyncDispatcher = pushAsyncDispatcher();\n  if (workInProgressRoot !== root || workInProgressRootRenderLanes !== lanes)\n    (workInProgressTransitions = null), prepareFreshStack(root, lanes);\n  lanes = !1;\n  var exitStatus = workInProgressRootExitStatus;\n  a: do\n    try {\n      if (0 !== workInProgressSuspendedReason && null !== workInProgress) {\n        var unitOfWork = workInProgress,\n          thrownValue = workInProgressThrownValue;\n        switch (workInProgressSuspendedReason) {\n          case 8:\n            resetWorkInProgressStack();\n            exitStatus = 6;\n            break a;\n          case 3:\n          case 2:\n          case 9:\n          case 6:\n            null === suspenseHandlerStackCursor.current && (lanes = !0);\n            var reason = workInProgressSuspendedReason;\n            workInProgressSuspendedReason = 0;\n            workInProgressThrownValue = null;\n            throwAndUnwindWorkLoop(root, unitOfWork, thrownValue, reason);\n            if (\n              shouldYieldForPrerendering &&\n              workInProgressRootIsPrerendering\n            ) {\n              exitStatus = 0;\n              break a;\n            }\n            break;\n          default:\n            (reason = workInProgressSuspendedReason),\n              (workInProgressSuspendedReason = 0),\n              (workInProgressThrownValue = null),\n              throwAndUnwindWorkLoop(root, unitOfWork, thrownValue, reason);\n        }\n      }\n      workLoopSync();\n      exitStatus = workInProgressRootExitStatus;\n      break;\n    } catch (thrownValue$167) {\n      handleThrow(root, thrownValue$167);\n    }\n  while (1);\n  lanes && root.shellSuspendCounter++;\n  lastContextDependency = currentlyRenderingFiber$1 = null;\n  executionContext = prevExecutionContext;\n  ReactSharedInternals.H = prevDispatcher;\n  ReactSharedInternals.A = prevAsyncDispatcher;\n  null === workInProgress &&\n    ((workInProgressRoot = null),\n    (workInProgressRootRenderLanes = 0),\n    finishQueueingConcurrentUpdates());\n  return exitStatus;\n}\nfunction workLoopSync() {\n  for (; null !== workInProgress; ) performUnitOfWork(workInProgress);\n}\nfunction renderRootConcurrent(root, lanes) {\n  var prevExecutionContext = executionContext;\n  executionContext |= 2;\n  var prevDispatcher = pushDispatcher(),\n    prevAsyncDispatcher = pushAsyncDispatcher();\n  workInProgressRoot !== root || workInProgressRootRenderLanes !== lanes\n    ? ((workInProgressTransitions = null),\n      (workInProgressRootRenderTargetTime = now() + 500),\n      prepareFreshStack(root, lanes))\n    : (workInProgressRootIsPrerendering = checkIfRootIsPrerendering(\n        root,\n        lanes\n      ));\n  a: do\n    try {\n      if (0 !== workInProgressSuspendedReason && null !== workInProgress) {\n        lanes = workInProgress;\n        var thrownValue = workInProgressThrownValue;\n        b: switch (workInProgressSuspendedReason) {\n          case 1:\n            workInProgressSuspendedReason = 0;\n            workInProgressThrownValue = null;\n            throwAndUnwindWorkLoop(root, lanes, thrownValue, 1);\n            break;\n          case 2:\n          case 9:\n            if (isThenableResolved(thrownValue)) {\n              workInProgressSuspendedReason = 0;\n              workInProgressThrownValue = null;\n              replaySuspendedUnitOfWork(lanes);\n              break;\n            }\n            lanes = function () {\n              (2 !== workInProgressSuspendedReason &&\n                9 !== workInProgressSuspendedReason) ||\n                workInProgressRoot !== root ||\n                (workInProgressSuspendedReason = 7);\n              ensureRootIsScheduled(root);\n            };\n            thrownValue.then(lanes, lanes);\n            break a;\n          case 3:\n            workInProgressSuspendedReason = 7;\n            break a;\n          case 4:\n            workInProgressSuspendedReason = 5;\n            break a;\n          case 7:\n            isThenableResolved(thrownValue)\n              ? ((workInProgressSuspendedReason = 0),\n                (workInProgressThrownValue = null),\n                replaySuspendedUnitOfWork(lanes))\n              : ((workInProgressSuspendedReason = 0),\n                (workInProgressThrownValue = null),\n                throwAndUnwindWorkLoop(root, lanes, thrownValue, 7));\n            break;\n          case 5:\n            var resource = null;\n            switch (workInProgress.tag) {\n              case 26:\n                resource = workInProgress.memoizedState;\n              case 5:\n              case 27:\n                var hostFiber = workInProgress;\n                if (resource ? preloadResource(resource) : 1) {\n                  workInProgressSuspendedReason = 0;\n                  workInProgressThrownValue = null;\n                  var sibling = hostFiber.sibling;\n                  if (null !== sibling) workInProgress = sibling;\n                  else {\n                    var returnFiber = hostFiber.return;\n                    null !== returnFiber\n                      ? ((workInProgress = returnFiber),\n                        completeUnitOfWork(returnFiber))\n                      : (workInProgress = null);\n                  }\n                  break b;\n                }\n            }\n            workInProgressSuspendedReason = 0;\n            workInProgressThrownValue = null;\n            throwAndUnwindWorkLoop(root, lanes, thrownValue, 5);\n            break;\n          case 6:\n            workInProgressSuspendedReason = 0;\n            workInProgressThrownValue = null;\n            throwAndUnwindWorkLoop(root, lanes, thrownValue, 6);\n            break;\n          case 8:\n            resetWorkInProgressStack();\n            workInProgressRootExitStatus = 6;\n            break a;\n          default:\n            throw Error(formatProdErrorMessage(462));\n        }\n      }\n      workLoopConcurrentByScheduler();\n      break;\n    } catch (thrownValue$169) {\n      handleThrow(root, thrownValue$169);\n    }\n  while (1);\n  lastContextDependency = currentlyRenderingFiber$1 = null;\n  ReactSharedInternals.H = prevDispatcher;\n  ReactSharedInternals.A = prevAsyncDispatcher;\n  executionContext = prevExecutionContext;\n  if (null !== workInProgress) return 0;\n  workInProgressRoot = null;\n  workInProgressRootRenderLanes = 0;\n  finishQueueingConcurrentUpdates();\n  return workInProgressRootExitStatus;\n}\nfunction workLoopConcurrentByScheduler() {\n  for (; null !== workInProgress && !shouldYield(); )\n    performUnitOfWork(workInProgress);\n}\nfunction performUnitOfWork(unitOfWork) {\n  var next = beginWork(unitOfWork.alternate, unitOfWork, entangledRenderLanes);\n  unitOfWork.memoizedProps = unitOfWork.pendingProps;\n  null === next ? completeUnitOfWork(unitOfWork) : (workInProgress = next);\n}\nfunction replaySuspendedUnitOfWork(unitOfWork) {\n  var next = unitOfWork;\n  var current = next.alternate;\n  switch (next.tag) {\n    case 15:\n    case 0:\n      next = replayFunctionComponent(\n        current,\n        next,\n        next.pendingProps,\n        next.type,\n        void 0,\n        workInProgressRootRenderLanes\n      );\n      break;\n    case 11:\n      next = replayFunctionComponent(\n        current,\n        next,\n        next.pendingProps,\n        next.type.render,\n        next.ref,\n        workInProgressRootRenderLanes\n      );\n      break;\n    case 5:\n      resetHooksOnUnwind(next);\n    default:\n      unwindInterruptedWork(current, next),\n        (next = workInProgress =\n          resetWorkInProgress(next, entangledRenderLanes)),\n        (next = beginWork(current, next, entangledRenderLanes));\n  }\n  unitOfWork.memoizedProps = unitOfWork.pendingProps;\n  null === next ? completeUnitOfWork(unitOfWork) : (workInProgress = next);\n}\nfunction throwAndUnwindWorkLoop(\n  root,\n  unitOfWork,\n  thrownValue,\n  suspendedReason\n) {\n  lastContextDependency = currentlyRenderingFiber$1 = null;\n  resetHooksOnUnwind(unitOfWork);\n  thenableState = null;\n  thenableIndexCounter = 0;\n  var returnFiber = unitOfWork.return;\n  try {\n    if (\n      throwException(\n        root,\n        returnFiber,\n        unitOfWork,\n        thrownValue,\n        workInProgressRootRenderLanes\n      )\n    ) {\n      workInProgressRootExitStatus = 1;\n      logUncaughtError(\n        root,\n        createCapturedValueAtFiber(thrownValue, root.current)\n      );\n      workInProgress = null;\n      return;\n    }\n  } catch (error) {\n    if (null !== returnFiber) throw ((workInProgress = returnFiber), error);\n    workInProgressRootExitStatus = 1;\n    logUncaughtError(\n      root,\n      createCapturedValueAtFiber(thrownValue, root.current)\n    );\n    workInProgress = null;\n    return;\n  }\n  if (unitOfWork.flags & 32768) {\n    if (isHydrating || 1 === suspendedReason) root = !0;\n    else if (\n      workInProgressRootIsPrerendering ||\n      0 !== (workInProgressRootRenderLanes & 536870912)\n    )\n      root = !1;\n    else if (\n      ((workInProgressRootDidSkipSuspendedSiblings = root = !0),\n      2 === suspendedReason ||\n        9 === suspendedReason ||\n        3 === suspendedReason ||\n        6 === suspendedReason)\n    )\n      (suspendedReason = suspenseHandlerStackCursor.current),\n        null !== suspendedReason &&\n          13 === suspendedReason.tag &&\n          (suspendedReason.flags |= 16384);\n    unwindUnitOfWork(unitOfWork, root);\n  } else completeUnitOfWork(unitOfWork);\n}\nfunction completeUnitOfWork(unitOfWork) {\n  var completedWork = unitOfWork;\n  do {\n    if (0 !== (completedWork.flags & 32768)) {\n      unwindUnitOfWork(\n        completedWork,\n        workInProgressRootDidSkipSuspendedSiblings\n      );\n      return;\n    }\n    unitOfWork = completedWork.return;\n    var next = completeWork(\n      completedWork.alternate,\n      completedWork,\n      entangledRenderLanes\n    );\n    if (null !== next) {\n      workInProgress = next;\n      return;\n    }\n    completedWork = completedWork.sibling;\n    if (null !== completedWork) {\n      workInProgress = completedWork;\n      return;\n    }\n    workInProgress = completedWork = unitOfWork;\n  } while (null !== completedWork);\n  0 === workInProgressRootExitStatus && (workInProgressRootExitStatus = 5);\n}\nfunction unwindUnitOfWork(unitOfWork, skipSiblings) {\n  do {\n    var next = unwindWork(unitOfWork.alternate, unitOfWork);\n    if (null !== next) {\n      next.flags &= 32767;\n      workInProgress = next;\n      return;\n    }\n    next = unitOfWork.return;\n    null !== next &&\n      ((next.flags |= 32768), (next.subtreeFlags = 0), (next.deletions = null));\n    if (\n      !skipSiblings &&\n      ((unitOfWork = unitOfWork.sibling), null !== unitOfWork)\n    ) {\n      workInProgress = unitOfWork;\n      return;\n    }\n    workInProgress = unitOfWork = next;\n  } while (null !== unitOfWork);\n  workInProgressRootExitStatus = 6;\n  workInProgress = null;\n}\nfunction commitRoot(\n  root,\n  finishedWork,\n  lanes,\n  recoverableErrors,\n  transitions,\n  didIncludeRenderPhaseUpdate,\n  spawnedLane,\n  updatedLanes,\n  suspendedRetryLanes\n) {\n  root.cancelPendingCommit = null;\n  do flushPendingEffects();\n  while (0 !== pendingEffectsStatus);\n  if (0 !== (executionContext & 6)) throw Error(formatProdErrorMessage(327));\n  if (null !== finishedWork) {\n    if (finishedWork === root.current) throw Error(formatProdErrorMessage(177));\n    didIncludeRenderPhaseUpdate = finishedWork.lanes | finishedWork.childLanes;\n    didIncludeRenderPhaseUpdate |= concurrentlyUpdatedLanes;\n    markRootFinished(\n      root,\n      lanes,\n      didIncludeRenderPhaseUpdate,\n      spawnedLane,\n      updatedLanes,\n      suspendedRetryLanes\n    );\n    root === workInProgressRoot &&\n      ((workInProgress = workInProgressRoot = null),\n      (workInProgressRootRenderLanes = 0));\n    pendingFinishedWork = finishedWork;\n    pendingEffectsRoot = root;\n    pendingEffectsLanes = lanes;\n    pendingEffectsRemainingLanes = didIncludeRenderPhaseUpdate;\n    pendingPassiveTransitions = transitions;\n    pendingRecoverableErrors = recoverableErrors;\n    0 !== (finishedWork.subtreeFlags & 10256) ||\n    0 !== (finishedWork.flags & 10256)\n      ? ((root.callbackNode = null),\n        (root.callbackPriority = 0),\n        scheduleCallback$1(NormalPriority$1, function () {\n          flushPassiveEffects(!0);\n          return null;\n        }))\n      : ((root.callbackNode = null), (root.callbackPriority = 0));\n    recoverableErrors = 0 !== (finishedWork.flags & 13878);\n    if (0 !== (finishedWork.subtreeFlags & 13878) || recoverableErrors) {\n      recoverableErrors = ReactSharedInternals.T;\n      ReactSharedInternals.T = null;\n      transitions = ReactDOMSharedInternals.p;\n      ReactDOMSharedInternals.p = 2;\n      spawnedLane = executionContext;\n      executionContext |= 4;\n      try {\n        commitBeforeMutationEffects(root, finishedWork, lanes);\n      } finally {\n        (executionContext = spawnedLane),\n          (ReactDOMSharedInternals.p = transitions),\n          (ReactSharedInternals.T = recoverableErrors);\n      }\n    }\n    pendingEffectsStatus = 1;\n    flushMutationEffects();\n    flushLayoutEffects();\n    flushSpawnedWork();\n  }\n}\nfunction flushMutationEffects() {\n  if (1 === pendingEffectsStatus) {\n    pendingEffectsStatus = 0;\n    var root = pendingEffectsRoot,\n      finishedWork = pendingFinishedWork,\n      rootMutationHasEffect = 0 !== (finishedWork.flags & 13878);\n    if (0 !== (finishedWork.subtreeFlags & 13878) || rootMutationHasEffect) {\n      rootMutationHasEffect = ReactSharedInternals.T;\n      ReactSharedInternals.T = null;\n      var previousPriority = ReactDOMSharedInternals.p;\n      ReactDOMSharedInternals.p = 2;\n      var prevExecutionContext = executionContext;\n      executionContext |= 4;\n      try {\n        commitMutationEffectsOnFiber(finishedWork, root);\n        var priorSelectionInformation = selectionInformation,\n          curFocusedElem = getActiveElementDeep(root.containerInfo),\n          priorFocusedElem = priorSelectionInformation.focusedElem,\n          priorSelectionRange = priorSelectionInformation.selectionRange;\n        if (\n          curFocusedElem !== priorFocusedElem &&\n          priorFocusedElem &&\n          priorFocusedElem.ownerDocument &&\n          containsNode(\n            priorFocusedElem.ownerDocument.documentElement,\n            priorFocusedElem\n          )\n        ) {\n          if (\n            null !== priorSelectionRange &&\n            hasSelectionCapabilities(priorFocusedElem)\n          ) {\n            var start = priorSelectionRange.start,\n              end = priorSelectionRange.end;\n            void 0 === end && (end = start);\n            if (\"selectionStart\" in priorFocusedElem)\n              (priorFocusedElem.selectionStart = start),\n                (priorFocusedElem.selectionEnd = Math.min(\n                  end,\n                  priorFocusedElem.value.length\n                ));\n            else {\n              var doc = priorFocusedElem.ownerDocument || document,\n                win = (doc && doc.defaultView) || window;\n              if (win.getSelection) {\n                var selection = win.getSelection(),\n                  length = priorFocusedElem.textContent.length,\n                  start$jscomp$0 = Math.min(priorSelectionRange.start, length),\n                  end$jscomp$0 =\n                    void 0 === priorSelectionRange.end\n                      ? start$jscomp$0\n                      : Math.min(priorSelectionRange.end, length);\n                !selection.extend &&\n                  start$jscomp$0 > end$jscomp$0 &&\n                  ((curFocusedElem = end$jscomp$0),\n                  (end$jscomp$0 = start$jscomp$0),\n                  (start$jscomp$0 = curFocusedElem));\n                var startMarker = getNodeForCharacterOffset(\n                    priorFocusedElem,\n                    start$jscomp$0\n                  ),\n                  endMarker = getNodeForCharacterOffset(\n                    priorFocusedElem,\n                    end$jscomp$0\n                  );\n                if (\n                  startMarker &&\n                  endMarker &&\n                  (1 !== selection.rangeCount ||\n                    selection.anchorNode !== startMarker.node ||\n                    selection.anchorOffset !== startMarker.offset ||\n                    selection.focusNode !== endMarker.node ||\n                    selection.focusOffset !== endMarker.offset)\n                ) {\n                  var range = doc.createRange();\n                  range.setStart(startMarker.node, startMarker.offset);\n                  selection.removeAllRanges();\n                  start$jscomp$0 > end$jscomp$0\n                    ? (selection.addRange(range),\n                      selection.extend(endMarker.node, endMarker.offset))\n                    : (range.setEnd(endMarker.node, endMarker.offset),\n                      selection.addRange(range));\n                }\n              }\n            }\n          }\n          doc = [];\n          for (\n            selection = priorFocusedElem;\n            (selection = selection.parentNode);\n\n          )\n            1 === selection.nodeType &&\n              doc.push({\n                element: selection,\n                left: selection.scrollLeft,\n                top: selection.scrollTop\n              });\n          \"function\" === typeof priorFocusedElem.focus &&\n            priorFocusedElem.focus();\n          for (\n            priorFocusedElem = 0;\n            priorFocusedElem < doc.length;\n            priorFocusedElem++\n          ) {\n            var info = doc[priorFocusedElem];\n            info.element.scrollLeft = info.left;\n            info.element.scrollTop = info.top;\n          }\n        }\n        _enabled = !!eventsEnabled;\n        selectionInformation = eventsEnabled = null;\n      } finally {\n        (executionContext = prevExecutionContext),\n          (ReactDOMSharedInternals.p = previousPriority),\n          (ReactSharedInternals.T = rootMutationHasEffect);\n      }\n    }\n    root.current = finishedWork;\n    pendingEffectsStatus = 2;\n  }\n}\nfunction flushLayoutEffects() {\n  if (2 === pendingEffectsStatus) {\n    pendingEffectsStatus = 0;\n    var root = pendingEffectsRoot,\n      finishedWork = pendingFinishedWork,\n      rootHasLayoutEffect = 0 !== (finishedWork.flags & 8772);\n    if (0 !== (finishedWork.subtreeFlags & 8772) || rootHasLayoutEffect) {\n      rootHasLayoutEffect = ReactSharedInternals.T;\n      ReactSharedInternals.T = null;\n      var previousPriority = ReactDOMSharedInternals.p;\n      ReactDOMSharedInternals.p = 2;\n      var prevExecutionContext = executionContext;\n      executionContext |= 4;\n      try {\n        commitLayoutEffectOnFiber(root, finishedWork.alternate, finishedWork);\n      } finally {\n        (executionContext = prevExecutionContext),\n          (ReactDOMSharedInternals.p = previousPriority),\n          (ReactSharedInternals.T = rootHasLayoutEffect);\n      }\n    }\n    pendingEffectsStatus = 3;\n  }\n}\nfunction flushSpawnedWork() {\n  if (4 === pendingEffectsStatus || 3 === pendingEffectsStatus) {\n    pendingEffectsStatus = 0;\n    requestPaint();\n    var root = pendingEffectsRoot,\n      finishedWork = pendingFinishedWork,\n      lanes = pendingEffectsLanes,\n      recoverableErrors = pendingRecoverableErrors;\n    0 !== (finishedWork.subtreeFlags & 10256) ||\n    0 !== (finishedWork.flags & 10256)\n      ? (pendingEffectsStatus = 5)\n      : ((pendingEffectsStatus = 0),\n        (pendingFinishedWork = pendingEffectsRoot = null),\n        releaseRootPooledCache(root, root.pendingLanes));\n    var remainingLanes = root.pendingLanes;\n    0 === remainingLanes && (legacyErrorBoundariesThatAlreadyFailed = null);\n    lanesToEventPriority(lanes);\n    finishedWork = finishedWork.stateNode;\n    if (injectedHook && \"function\" === typeof injectedHook.onCommitFiberRoot)\n      try {\n        injectedHook.onCommitFiberRoot(\n          rendererID,\n          finishedWork,\n          void 0,\n          128 === (finishedWork.current.flags & 128)\n        );\n      } catch (err) {}\n    if (null !== recoverableErrors) {\n      finishedWork = ReactSharedInternals.T;\n      remainingLanes = ReactDOMSharedInternals.p;\n      ReactDOMSharedInternals.p = 2;\n      ReactSharedInternals.T = null;\n      try {\n        for (\n          var onRecoverableError = root.onRecoverableError, i = 0;\n          i < recoverableErrors.length;\n          i++\n        ) {\n          var recoverableError = recoverableErrors[i];\n          onRecoverableError(recoverableError.value, {\n            componentStack: recoverableError.stack\n          });\n        }\n      } finally {\n        (ReactSharedInternals.T = finishedWork),\n          (ReactDOMSharedInternals.p = remainingLanes);\n      }\n    }\n    0 !== (pendingEffectsLanes & 3) && flushPendingEffects();\n    ensureRootIsScheduled(root);\n    remainingLanes = root.pendingLanes;\n    0 !== (lanes & 4194090) && 0 !== (remainingLanes & 42)\n      ? root === rootWithNestedUpdates\n        ? nestedUpdateCount++\n        : ((nestedUpdateCount = 0), (rootWithNestedUpdates = root))\n      : (nestedUpdateCount = 0);\n    flushSyncWorkAcrossRoots_impl(0, !1);\n  }\n}\nfunction releaseRootPooledCache(root, remainingLanes) {\n  0 === (root.pooledCacheLanes &= remainingLanes) &&\n    ((remainingLanes = root.pooledCache),\n    null != remainingLanes &&\n      ((root.pooledCache = null), releaseCache(remainingLanes)));\n}\nfunction flushPendingEffects(wasDelayedCommit) {\n  flushMutationEffects();\n  flushLayoutEffects();\n  flushSpawnedWork();\n  return flushPassiveEffects(wasDelayedCommit);\n}\nfunction flushPassiveEffects() {\n  if (5 !== pendingEffectsStatus) return !1;\n  var root = pendingEffectsRoot,\n    remainingLanes = pendingEffectsRemainingLanes;\n  pendingEffectsRemainingLanes = 0;\n  var renderPriority = lanesToEventPriority(pendingEffectsLanes),\n    prevTransition = ReactSharedInternals.T,\n    previousPriority = ReactDOMSharedInternals.p;\n  try {\n    ReactDOMSharedInternals.p = 32 > renderPriority ? 32 : renderPriority;\n    ReactSharedInternals.T = null;\n    renderPriority = pendingPassiveTransitions;\n    pendingPassiveTransitions = null;\n    var root$jscomp$0 = pendingEffectsRoot,\n      lanes = pendingEffectsLanes;\n    pendingEffectsStatus = 0;\n    pendingFinishedWork = pendingEffectsRoot = null;\n    pendingEffectsLanes = 0;\n    if (0 !== (executionContext & 6)) throw Error(formatProdErrorMessage(331));\n    var prevExecutionContext = executionContext;\n    executionContext |= 4;\n    commitPassiveUnmountOnFiber(root$jscomp$0.current);\n    commitPassiveMountOnFiber(\n      root$jscomp$0,\n      root$jscomp$0.current,\n      lanes,\n      renderPriority\n    );\n    executionContext = prevExecutionContext;\n    flushSyncWorkAcrossRoots_impl(0, !1);\n    if (\n      injectedHook &&\n      \"function\" === typeof injectedHook.onPostCommitFiberRoot\n    )\n      try {\n        injectedHook.onPostCommitFiberRoot(rendererID, root$jscomp$0);\n      } catch (err) {}\n    return !0;\n  } finally {\n    (ReactDOMSharedInternals.p = previousPriority),\n      (ReactSharedInternals.T = prevTransition),\n      releaseRootPooledCache(root, remainingLanes);\n  }\n}\nfunction captureCommitPhaseErrorOnRoot(rootFiber, sourceFiber, error) {\n  sourceFiber = createCapturedValueAtFiber(error, sourceFiber);\n  sourceFiber = createRootErrorUpdate(rootFiber.stateNode, sourceFiber, 2);\n  rootFiber = enqueueUpdate(rootFiber, sourceFiber, 2);\n  null !== rootFiber &&\n    (markRootUpdated$1(rootFiber, 2), ensureRootIsScheduled(rootFiber));\n}\nfunction captureCommitPhaseError(sourceFiber, nearestMountedAncestor, error) {\n  if (3 === sourceFiber.tag)\n    captureCommitPhaseErrorOnRoot(sourceFiber, sourceFiber, error);\n  else\n    for (; null !== nearestMountedAncestor; ) {\n      if (3 === nearestMountedAncestor.tag) {\n        captureCommitPhaseErrorOnRoot(\n          nearestMountedAncestor,\n          sourceFiber,\n          error\n        );\n        break;\n      } else if (1 === nearestMountedAncestor.tag) {\n        var instance = nearestMountedAncestor.stateNode;\n        if (\n          \"function\" ===\n            typeof nearestMountedAncestor.type.getDerivedStateFromError ||\n          (\"function\" === typeof instance.componentDidCatch &&\n            (null === legacyErrorBoundariesThatAlreadyFailed ||\n              !legacyErrorBoundariesThatAlreadyFailed.has(instance)))\n        ) {\n          sourceFiber = createCapturedValueAtFiber(error, sourceFiber);\n          error = createClassErrorUpdate(2);\n          instance = enqueueUpdate(nearestMountedAncestor, error, 2);\n          null !== instance &&\n            (initializeClassErrorUpdate(\n              error,\n              instance,\n              nearestMountedAncestor,\n              sourceFiber\n            ),\n            markRootUpdated$1(instance, 2),\n            ensureRootIsScheduled(instance));\n          break;\n        }\n      }\n      nearestMountedAncestor = nearestMountedAncestor.return;\n    }\n}\nfunction attachPingListener(root, wakeable, lanes) {\n  var pingCache = root.pingCache;\n  if (null === pingCache) {\n    pingCache = root.pingCache = new PossiblyWeakMap();\n    var threadIDs = new Set();\n    pingCache.set(wakeable, threadIDs);\n  } else\n    (threadIDs = pingCache.get(wakeable)),\n      void 0 === threadIDs &&\n        ((threadIDs = new Set()), pingCache.set(wakeable, threadIDs));\n  threadIDs.has(lanes) ||\n    ((workInProgressRootDidAttachPingListener = !0),\n    threadIDs.add(lanes),\n    (root = pingSuspendedRoot.bind(null, root, wakeable, lanes)),\n    wakeable.then(root, root));\n}\nfunction pingSuspendedRoot(root, wakeable, pingedLanes) {\n  var pingCache = root.pingCache;\n  null !== pingCache && pingCache.delete(wakeable);\n  root.pingedLanes |= root.suspendedLanes & pingedLanes;\n  root.warmLanes &= ~pingedLanes;\n  workInProgressRoot === root &&\n    (workInProgressRootRenderLanes & pingedLanes) === pingedLanes &&\n    (4 === workInProgressRootExitStatus ||\n    (3 === workInProgressRootExitStatus &&\n      (workInProgressRootRenderLanes & 62914560) ===\n        workInProgressRootRenderLanes &&\n      300 > now() - globalMostRecentFallbackTime)\n      ? 0 === (executionContext & 2) && prepareFreshStack(root, 0)\n      : (workInProgressRootPingedLanes |= pingedLanes),\n    workInProgressSuspendedRetryLanes === workInProgressRootRenderLanes &&\n      (workInProgressSuspendedRetryLanes = 0));\n  ensureRootIsScheduled(root);\n}\nfunction retryTimedOutBoundary(boundaryFiber, retryLane) {\n  0 === retryLane && (retryLane = claimNextRetryLane());\n  boundaryFiber = enqueueConcurrentRenderForLane(boundaryFiber, retryLane);\n  null !== boundaryFiber &&\n    (markRootUpdated$1(boundaryFiber, retryLane),\n    ensureRootIsScheduled(boundaryFiber));\n}\nfunction retryDehydratedSuspenseBoundary(boundaryFiber) {\n  var suspenseState = boundaryFiber.memoizedState,\n    retryLane = 0;\n  null !== suspenseState && (retryLane = suspenseState.retryLane);\n  retryTimedOutBoundary(boundaryFiber, retryLane);\n}\nfunction resolveRetryWakeable(boundaryFiber, wakeable) {\n  var retryLane = 0;\n  switch (boundaryFiber.tag) {\n    case 13:\n      var retryCache = boundaryFiber.stateNode;\n      var suspenseState = boundaryFiber.memoizedState;\n      null !== suspenseState && (retryLane = suspenseState.retryLane);\n      break;\n    case 19:\n      retryCache = boundaryFiber.stateNode;\n      break;\n    case 22:\n      retryCache = boundaryFiber.stateNode._retryCache;\n      break;\n    default:\n      throw Error(formatProdErrorMessage(314));\n  }\n  null !== retryCache && retryCache.delete(wakeable);\n  retryTimedOutBoundary(boundaryFiber, retryLane);\n}\nfunction scheduleCallback$1(priorityLevel, callback) {\n  return scheduleCallback$3(priorityLevel, callback);\n}\nvar firstScheduledRoot = null,\n  lastScheduledRoot = null,\n  didScheduleMicrotask = !1,\n  mightHavePendingSyncWork = !1,\n  isFlushingWork = !1,\n  currentEventTransitionLane = 0;\nfunction ensureRootIsScheduled(root) {\n  root !== lastScheduledRoot &&\n    null === root.next &&\n    (null === lastScheduledRoot\n      ? (firstScheduledRoot = lastScheduledRoot = root)\n      : (lastScheduledRoot = lastScheduledRoot.next = root));\n  mightHavePendingSyncWork = !0;\n  didScheduleMicrotask ||\n    ((didScheduleMicrotask = !0), scheduleImmediateRootScheduleTask());\n}\nfunction flushSyncWorkAcrossRoots_impl(syncTransitionLanes, onlyLegacy) {\n  if (!isFlushingWork && mightHavePendingSyncWork) {\n    isFlushingWork = !0;\n    do {\n      var didPerformSomeWork = !1;\n      for (var root$174 = firstScheduledRoot; null !== root$174; ) {\n        if (!onlyLegacy)\n          if (0 !== syncTransitionLanes) {\n            var pendingLanes = root$174.pendingLanes;\n            if (0 === pendingLanes) var JSCompiler_inline_result = 0;\n            else {\n              var suspendedLanes = root$174.suspendedLanes,\n                pingedLanes = root$174.pingedLanes;\n              JSCompiler_inline_result =\n                (1 << (31 - clz32(42 | syncTransitionLanes) + 1)) - 1;\n              JSCompiler_inline_result &=\n                pendingLanes & ~(suspendedLanes & ~pingedLanes);\n              JSCompiler_inline_result =\n                JSCompiler_inline_result & 201326741\n                  ? (JSCompiler_inline_result & 201326741) | 1\n                  : JSCompiler_inline_result\n                    ? JSCompiler_inline_result | 2\n                    : 0;\n            }\n            0 !== JSCompiler_inline_result &&\n              ((didPerformSomeWork = !0),\n              performSyncWorkOnRoot(root$174, JSCompiler_inline_result));\n          } else\n            (JSCompiler_inline_result = workInProgressRootRenderLanes),\n              (JSCompiler_inline_result = getNextLanes(\n                root$174,\n                root$174 === workInProgressRoot ? JSCompiler_inline_result : 0,\n                null !== root$174.cancelPendingCommit ||\n                  -1 !== root$174.timeoutHandle\n              )),\n              0 === (JSCompiler_inline_result & 3) ||\n                checkIfRootIsPrerendering(root$174, JSCompiler_inline_result) ||\n                ((didPerformSomeWork = !0),\n                performSyncWorkOnRoot(root$174, JSCompiler_inline_result));\n        root$174 = root$174.next;\n      }\n    } while (didPerformSomeWork);\n    isFlushingWork = !1;\n  }\n}\nfunction processRootScheduleInImmediateTask() {\n  processRootScheduleInMicrotask();\n}\nfunction processRootScheduleInMicrotask() {\n  mightHavePendingSyncWork = didScheduleMicrotask = !1;\n  var syncTransitionLanes = 0;\n  0 !== currentEventTransitionLane &&\n    (shouldAttemptEagerTransition() &&\n      (syncTransitionLanes = currentEventTransitionLane),\n    (currentEventTransitionLane = 0));\n  for (\n    var currentTime = now(), prev = null, root = firstScheduledRoot;\n    null !== root;\n\n  ) {\n    var next = root.next,\n      nextLanes = scheduleTaskForRootDuringMicrotask(root, currentTime);\n    if (0 === nextLanes)\n      (root.next = null),\n        null === prev ? (firstScheduledRoot = next) : (prev.next = next),\n        null === next && (lastScheduledRoot = prev);\n    else if (\n      ((prev = root), 0 !== syncTransitionLanes || 0 !== (nextLanes & 3))\n    )\n      mightHavePendingSyncWork = !0;\n    root = next;\n  }\n  flushSyncWorkAcrossRoots_impl(syncTransitionLanes, !1);\n}\nfunction scheduleTaskForRootDuringMicrotask(root, currentTime) {\n  for (\n    var suspendedLanes = root.suspendedLanes,\n      pingedLanes = root.pingedLanes,\n      expirationTimes = root.expirationTimes,\n      lanes = root.pendingLanes & -62914561;\n    0 < lanes;\n\n  ) {\n    var index$3 = 31 - clz32(lanes),\n      lane = 1 << index$3,\n      expirationTime = expirationTimes[index$3];\n    if (-1 === expirationTime) {\n      if (0 === (lane & suspendedLanes) || 0 !== (lane & pingedLanes))\n        expirationTimes[index$3] = computeExpirationTime(lane, currentTime);\n    } else expirationTime <= currentTime && (root.expiredLanes |= lane);\n    lanes &= ~lane;\n  }\n  currentTime = workInProgressRoot;\n  suspendedLanes = workInProgressRootRenderLanes;\n  suspendedLanes = getNextLanes(\n    root,\n    root === currentTime ? suspendedLanes : 0,\n    null !== root.cancelPendingCommit || -1 !== root.timeoutHandle\n  );\n  pingedLanes = root.callbackNode;\n  if (\n    0 === suspendedLanes ||\n    (root === currentTime &&\n      (2 === workInProgressSuspendedReason ||\n        9 === workInProgressSuspendedReason)) ||\n    null !== root.cancelPendingCommit\n  )\n    return (\n      null !== pingedLanes &&\n        null !== pingedLanes &&\n        cancelCallback$1(pingedLanes),\n      (root.callbackNode = null),\n      (root.callbackPriority = 0)\n    );\n  if (\n    0 === (suspendedLanes & 3) ||\n    checkIfRootIsPrerendering(root, suspendedLanes)\n  ) {\n    currentTime = suspendedLanes & -suspendedLanes;\n    if (currentTime === root.callbackPriority) return currentTime;\n    null !== pingedLanes && cancelCallback$1(pingedLanes);\n    switch (lanesToEventPriority(suspendedLanes)) {\n      case 2:\n      case 8:\n        suspendedLanes = UserBlockingPriority;\n        break;\n      case 32:\n        suspendedLanes = NormalPriority$1;\n        break;\n      case 268435456:\n        suspendedLanes = IdlePriority;\n        break;\n      default:\n        suspendedLanes = NormalPriority$1;\n    }\n    pingedLanes = performWorkOnRootViaSchedulerTask.bind(null, root);\n    suspendedLanes = scheduleCallback$3(suspendedLanes, pingedLanes);\n    root.callbackPriority = currentTime;\n    root.callbackNode = suspendedLanes;\n    return currentTime;\n  }\n  null !== pingedLanes && null !== pingedLanes && cancelCallback$1(pingedLanes);\n  root.callbackPriority = 2;\n  root.callbackNode = null;\n  return 2;\n}\nfunction performWorkOnRootViaSchedulerTask(root, didTimeout) {\n  if (0 !== pendingEffectsStatus && 5 !== pendingEffectsStatus)\n    return (root.callbackNode = null), (root.callbackPriority = 0), null;\n  var originalCallbackNode = root.callbackNode;\n  if (flushPendingEffects(!0) && root.callbackNode !== originalCallbackNode)\n    return null;\n  var workInProgressRootRenderLanes$jscomp$0 = workInProgressRootRenderLanes;\n  workInProgressRootRenderLanes$jscomp$0 = getNextLanes(\n    root,\n    root === workInProgressRoot ? workInProgressRootRenderLanes$jscomp$0 : 0,\n    null !== root.cancelPendingCommit || -1 !== root.timeoutHandle\n  );\n  if (0 === workInProgressRootRenderLanes$jscomp$0) return null;\n  performWorkOnRoot(root, workInProgressRootRenderLanes$jscomp$0, didTimeout);\n  scheduleTaskForRootDuringMicrotask(root, now());\n  return null != root.callbackNode && root.callbackNode === originalCallbackNode\n    ? performWorkOnRootViaSchedulerTask.bind(null, root)\n    : null;\n}\nfunction performSyncWorkOnRoot(root, lanes) {\n  if (flushPendingEffects()) return null;\n  performWorkOnRoot(root, lanes, !0);\n}\nfunction scheduleImmediateRootScheduleTask() {\n  scheduleMicrotask(function () {\n    0 !== (executionContext & 6)\n      ? scheduleCallback$3(\n          ImmediatePriority,\n          processRootScheduleInImmediateTask\n        )\n      : processRootScheduleInMicrotask();\n  });\n}\nfunction requestTransitionLane() {\n  0 === currentEventTransitionLane &&\n    (currentEventTransitionLane = claimNextTransitionLane());\n  return currentEventTransitionLane;\n}\nfunction coerceFormActionProp(actionProp) {\n  return null == actionProp ||\n    \"symbol\" === typeof actionProp ||\n    \"boolean\" === typeof actionProp\n    ? null\n    : \"function\" === typeof actionProp\n      ? actionProp\n      : sanitizeURL(\"\" + actionProp);\n}\nfunction createFormDataWithSubmitter(form, submitter) {\n  var temp = submitter.ownerDocument.createElement(\"input\");\n  temp.name = submitter.name;\n  temp.value = submitter.value;\n  form.id && temp.setAttribute(\"form\", form.id);\n  submitter.parentNode.insertBefore(temp, submitter);\n  form = new FormData(form);\n  temp.parentNode.removeChild(temp);\n  return form;\n}\nfunction extractEvents$1(\n  dispatchQueue,\n  domEventName,\n  maybeTargetInst,\n  nativeEvent,\n  nativeEventTarget\n) {\n  if (\n    \"submit\" === domEventName &&\n    maybeTargetInst &&\n    maybeTargetInst.stateNode === nativeEventTarget\n  ) {\n    var action = coerceFormActionProp(\n        (nativeEventTarget[internalPropsKey] || null).action\n      ),\n      submitter = nativeEvent.submitter;\n    submitter &&\n      ((domEventName = (domEventName = submitter[internalPropsKey] || null)\n        ? coerceFormActionProp(domEventName.formAction)\n        : submitter.getAttribute(\"formAction\")),\n      null !== domEventName && ((action = domEventName), (submitter = null)));\n    var event = new SyntheticEvent(\n      \"action\",\n      \"action\",\n      null,\n      nativeEvent,\n      nativeEventTarget\n    );\n    dispatchQueue.push({\n      event: event,\n      listeners: [\n        {\n          instance: null,\n          listener: function () {\n            if (nativeEvent.defaultPrevented) {\n              if (0 !== currentEventTransitionLane) {\n                var formData = submitter\n                  ? createFormDataWithSubmitter(nativeEventTarget, submitter)\n                  : new FormData(nativeEventTarget);\n                startHostTransition(\n                  maybeTargetInst,\n                  {\n                    pending: !0,\n                    data: formData,\n                    method: nativeEventTarget.method,\n                    action: action\n                  },\n                  null,\n                  formData\n                );\n              }\n            } else\n              \"function\" === typeof action &&\n                (event.preventDefault(),\n                (formData = submitter\n                  ? createFormDataWithSubmitter(nativeEventTarget, submitter)\n                  : new FormData(nativeEventTarget)),\n                startHostTransition(\n                  maybeTargetInst,\n                  {\n                    pending: !0,\n                    data: formData,\n                    method: nativeEventTarget.method,\n                    action: action\n                  },\n                  action,\n                  formData\n                ));\n          },\n          currentTarget: nativeEventTarget\n        }\n      ]\n    });\n  }\n}\nfor (\n  var i$jscomp$inline_1528 = 0;\n  i$jscomp$inline_1528 < simpleEventPluginEvents.length;\n  i$jscomp$inline_1528++\n) {\n  var eventName$jscomp$inline_1529 =\n      simpleEventPluginEvents[i$jscomp$inline_1528],\n    domEventName$jscomp$inline_1530 =\n      eventName$jscomp$inline_1529.toLowerCase(),\n    capitalizedEvent$jscomp$inline_1531 =\n      eventName$jscomp$inline_1529[0].toUpperCase() +\n      eventName$jscomp$inline_1529.slice(1);\n  registerSimpleEvent(\n    domEventName$jscomp$inline_1530,\n    \"on\" + capitalizedEvent$jscomp$inline_1531\n  );\n}\nregisterSimpleEvent(ANIMATION_END, \"onAnimationEnd\");\nregisterSimpleEvent(ANIMATION_ITERATION, \"onAnimationIteration\");\nregisterSimpleEvent(ANIMATION_START, \"onAnimationStart\");\nregisterSimpleEvent(\"dblclick\", \"onDoubleClick\");\nregisterSimpleEvent(\"focusin\", \"onFocus\");\nregisterSimpleEvent(\"focusout\", \"onBlur\");\nregisterSimpleEvent(TRANSITION_RUN, \"onTransitionRun\");\nregisterSimpleEvent(TRANSITION_START, \"onTransitionStart\");\nregisterSimpleEvent(TRANSITION_CANCEL, \"onTransitionCancel\");\nregisterSimpleEvent(TRANSITION_END, \"onTransitionEnd\");\nregisterDirectEvent(\"onMouseEnter\", [\"mouseout\", \"mouseover\"]);\nregisterDirectEvent(\"onMouseLeave\", [\"mouseout\", \"mouseover\"]);\nregisterDirectEvent(\"onPointerEnter\", [\"pointerout\", \"pointerover\"]);\nregisterDirectEvent(\"onPointerLeave\", [\"pointerout\", \"pointerover\"]);\nregisterTwoPhaseEvent(\n  \"onChange\",\n  \"change click focusin focusout input keydown keyup selectionchange\".split(\" \")\n);\nregisterTwoPhaseEvent(\n  \"onSelect\",\n  \"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\n    \" \"\n  )\n);\nregisterTwoPhaseEvent(\"onBeforeInput\", [\n  \"compositionend\",\n  \"keypress\",\n  \"textInput\",\n  \"paste\"\n]);\nregisterTwoPhaseEvent(\n  \"onCompositionEnd\",\n  \"compositionend focusout keydown keypress keyup mousedown\".split(\" \")\n);\nregisterTwoPhaseEvent(\n  \"onCompositionStart\",\n  \"compositionstart focusout keydown keypress keyup mousedown\".split(\" \")\n);\nregisterTwoPhaseEvent(\n  \"onCompositionUpdate\",\n  \"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \")\n);\nvar mediaEventTypes =\n    \"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting\".split(\n      \" \"\n    ),\n  nonDelegatedEvents = new Set(\n    \"beforetoggle cancel close invalid load scroll scrollend toggle\"\n      .split(\" \")\n      .concat(mediaEventTypes)\n  );\nfunction processDispatchQueue(dispatchQueue, eventSystemFlags) {\n  eventSystemFlags = 0 !== (eventSystemFlags & 4);\n  for (var i = 0; i < dispatchQueue.length; i++) {\n    var _dispatchQueue$i = dispatchQueue[i],\n      event = _dispatchQueue$i.event;\n    _dispatchQueue$i = _dispatchQueue$i.listeners;\n    a: {\n      var previousInstance = void 0;\n      if (eventSystemFlags)\n        for (\n          var i$jscomp$0 = _dispatchQueue$i.length - 1;\n          0 <= i$jscomp$0;\n          i$jscomp$0--\n        ) {\n          var _dispatchListeners$i = _dispatchQueue$i[i$jscomp$0],\n            instance = _dispatchListeners$i.instance,\n            currentTarget = _dispatchListeners$i.currentTarget;\n          _dispatchListeners$i = _dispatchListeners$i.listener;\n          if (instance !== previousInstance && event.isPropagationStopped())\n            break a;\n          previousInstance = _dispatchListeners$i;\n          event.currentTarget = currentTarget;\n          try {\n            previousInstance(event);\n          } catch (error) {\n            reportGlobalError(error);\n          }\n          event.currentTarget = null;\n          previousInstance = instance;\n        }\n      else\n        for (\n          i$jscomp$0 = 0;\n          i$jscomp$0 < _dispatchQueue$i.length;\n          i$jscomp$0++\n        ) {\n          _dispatchListeners$i = _dispatchQueue$i[i$jscomp$0];\n          instance = _dispatchListeners$i.instance;\n          currentTarget = _dispatchListeners$i.currentTarget;\n          _dispatchListeners$i = _dispatchListeners$i.listener;\n          if (instance !== previousInstance && event.isPropagationStopped())\n            break a;\n          previousInstance = _dispatchListeners$i;\n          event.currentTarget = currentTarget;\n          try {\n            previousInstance(event);\n          } catch (error) {\n            reportGlobalError(error);\n          }\n          event.currentTarget = null;\n          previousInstance = instance;\n        }\n    }\n  }\n}\nfunction listenToNonDelegatedEvent(domEventName, targetElement) {\n  var JSCompiler_inline_result = targetElement[internalEventHandlersKey];\n  void 0 === JSCompiler_inline_result &&\n    (JSCompiler_inline_result = targetElement[internalEventHandlersKey] =\n      new Set());\n  var listenerSetKey = domEventName + \"__bubble\";\n  JSCompiler_inline_result.has(listenerSetKey) ||\n    (addTrappedEventListener(targetElement, domEventName, 2, !1),\n    JSCompiler_inline_result.add(listenerSetKey));\n}\nfunction listenToNativeEvent(domEventName, isCapturePhaseListener, target) {\n  var eventSystemFlags = 0;\n  isCapturePhaseListener && (eventSystemFlags |= 4);\n  addTrappedEventListener(\n    target,\n    domEventName,\n    eventSystemFlags,\n    isCapturePhaseListener\n  );\n}\nvar listeningMarker = \"_reactListening\" + Math.random().toString(36).slice(2);\nfunction listenToAllSupportedEvents(rootContainerElement) {\n  if (!rootContainerElement[listeningMarker]) {\n    rootContainerElement[listeningMarker] = !0;\n    allNativeEvents.forEach(function (domEventName) {\n      \"selectionchange\" !== domEventName &&\n        (nonDelegatedEvents.has(domEventName) ||\n          listenToNativeEvent(domEventName, !1, rootContainerElement),\n        listenToNativeEvent(domEventName, !0, rootContainerElement));\n    });\n    var ownerDocument =\n      9 === rootContainerElement.nodeType\n        ? rootContainerElement\n        : rootContainerElement.ownerDocument;\n    null === ownerDocument ||\n      ownerDocument[listeningMarker] ||\n      ((ownerDocument[listeningMarker] = !0),\n      listenToNativeEvent(\"selectionchange\", !1, ownerDocument));\n  }\n}\nfunction addTrappedEventListener(\n  targetContainer,\n  domEventName,\n  eventSystemFlags,\n  isCapturePhaseListener\n) {\n  switch (getEventPriority(domEventName)) {\n    case 2:\n      var listenerWrapper = dispatchDiscreteEvent;\n      break;\n    case 8:\n      listenerWrapper = dispatchContinuousEvent;\n      break;\n    default:\n      listenerWrapper = dispatchEvent;\n  }\n  eventSystemFlags = listenerWrapper.bind(\n    null,\n    domEventName,\n    eventSystemFlags,\n    targetContainer\n  );\n  listenerWrapper = void 0;\n  !passiveBrowserEventsSupported ||\n    (\"touchstart\" !== domEventName &&\n      \"touchmove\" !== domEventName &&\n      \"wheel\" !== domEventName) ||\n    (listenerWrapper = !0);\n  isCapturePhaseListener\n    ? void 0 !== listenerWrapper\n      ? targetContainer.addEventListener(domEventName, eventSystemFlags, {\n          capture: !0,\n          passive: listenerWrapper\n        })\n      : targetContainer.addEventListener(domEventName, eventSystemFlags, !0)\n    : void 0 !== listenerWrapper\n      ? targetContainer.addEventListener(domEventName, eventSystemFlags, {\n          passive: listenerWrapper\n        })\n      : targetContainer.addEventListener(domEventName, eventSystemFlags, !1);\n}\nfunction dispatchEventForPluginEventSystem(\n  domEventName,\n  eventSystemFlags,\n  nativeEvent,\n  targetInst$jscomp$0,\n  targetContainer\n) {\n  var ancestorInst = targetInst$jscomp$0;\n  if (\n    0 === (eventSystemFlags & 1) &&\n    0 === (eventSystemFlags & 2) &&\n    null !== targetInst$jscomp$0\n  )\n    a: for (;;) {\n      if (null === targetInst$jscomp$0) return;\n      var nodeTag = targetInst$jscomp$0.tag;\n      if (3 === nodeTag || 4 === nodeTag) {\n        var container = targetInst$jscomp$0.stateNode.containerInfo;\n        if (container === targetContainer) break;\n        if (4 === nodeTag)\n          for (nodeTag = targetInst$jscomp$0.return; null !== nodeTag; ) {\n            var grandTag = nodeTag.tag;\n            if (\n              (3 === grandTag || 4 === grandTag) &&\n              nodeTag.stateNode.containerInfo === targetContainer\n            )\n              return;\n            nodeTag = nodeTag.return;\n          }\n        for (; null !== container; ) {\n          nodeTag = getClosestInstanceFromNode(container);\n          if (null === nodeTag) return;\n          grandTag = nodeTag.tag;\n          if (\n            5 === grandTag ||\n            6 === grandTag ||\n            26 === grandTag ||\n            27 === grandTag\n          ) {\n            targetInst$jscomp$0 = ancestorInst = nodeTag;\n            continue a;\n          }\n          container = container.parentNode;\n        }\n      }\n      targetInst$jscomp$0 = targetInst$jscomp$0.return;\n    }\n  batchedUpdates$1(function () {\n    var targetInst = ancestorInst,\n      nativeEventTarget = getEventTarget(nativeEvent),\n      dispatchQueue = [];\n    a: {\n      var reactName = topLevelEventsToReactNames.get(domEventName);\n      if (void 0 !== reactName) {\n        var SyntheticEventCtor = SyntheticEvent,\n          reactEventType = domEventName;\n        switch (domEventName) {\n          case \"keypress\":\n            if (0 === getEventCharCode(nativeEvent)) break a;\n          case \"keydown\":\n          case \"keyup\":\n            SyntheticEventCtor = SyntheticKeyboardEvent;\n            break;\n          case \"focusin\":\n            reactEventType = \"focus\";\n            SyntheticEventCtor = SyntheticFocusEvent;\n            break;\n          case \"focusout\":\n            reactEventType = \"blur\";\n            SyntheticEventCtor = SyntheticFocusEvent;\n            break;\n          case \"beforeblur\":\n          case \"afterblur\":\n            SyntheticEventCtor = SyntheticFocusEvent;\n            break;\n          case \"click\":\n            if (2 === nativeEvent.button) break a;\n          case \"auxclick\":\n          case \"dblclick\":\n          case \"mousedown\":\n          case \"mousemove\":\n          case \"mouseup\":\n          case \"mouseout\":\n          case \"mouseover\":\n          case \"contextmenu\":\n            SyntheticEventCtor = SyntheticMouseEvent;\n            break;\n          case \"drag\":\n          case \"dragend\":\n          case \"dragenter\":\n          case \"dragexit\":\n          case \"dragleave\":\n          case \"dragover\":\n          case \"dragstart\":\n          case \"drop\":\n            SyntheticEventCtor = SyntheticDragEvent;\n            break;\n          case \"touchcancel\":\n          case \"touchend\":\n          case \"touchmove\":\n          case \"touchstart\":\n            SyntheticEventCtor = SyntheticTouchEvent;\n            break;\n          case ANIMATION_END:\n          case ANIMATION_ITERATION:\n          case ANIMATION_START:\n            SyntheticEventCtor = SyntheticAnimationEvent;\n            break;\n          case TRANSITION_END:\n            SyntheticEventCtor = SyntheticTransitionEvent;\n            break;\n          case \"scroll\":\n          case \"scrollend\":\n            SyntheticEventCtor = SyntheticUIEvent;\n            break;\n          case \"wheel\":\n            SyntheticEventCtor = SyntheticWheelEvent;\n            break;\n          case \"copy\":\n          case \"cut\":\n          case \"paste\":\n            SyntheticEventCtor = SyntheticClipboardEvent;\n            break;\n          case \"gotpointercapture\":\n          case \"lostpointercapture\":\n          case \"pointercancel\":\n          case \"pointerdown\":\n          case \"pointermove\":\n          case \"pointerout\":\n          case \"pointerover\":\n          case \"pointerup\":\n            SyntheticEventCtor = SyntheticPointerEvent;\n            break;\n          case \"toggle\":\n          case \"beforetoggle\":\n            SyntheticEventCtor = SyntheticToggleEvent;\n        }\n        var inCapturePhase = 0 !== (eventSystemFlags & 4),\n          accumulateTargetOnly =\n            !inCapturePhase &&\n            (\"scroll\" === domEventName || \"scrollend\" === domEventName),\n          reactEventName = inCapturePhase\n            ? null !== reactName\n              ? reactName + \"Capture\"\n              : null\n            : reactName;\n        inCapturePhase = [];\n        for (\n          var instance = targetInst, lastHostComponent;\n          null !== instance;\n\n        ) {\n          var _instance = instance;\n          lastHostComponent = _instance.stateNode;\n          _instance = _instance.tag;\n          (5 !== _instance && 26 !== _instance && 27 !== _instance) ||\n            null === lastHostComponent ||\n            null === reactEventName ||\n            ((_instance = getListener(instance, reactEventName)),\n            null != _instance &&\n              inCapturePhase.push(\n                createDispatchListener(instance, _instance, lastHostComponent)\n              ));\n          if (accumulateTargetOnly) break;\n          instance = instance.return;\n        }\n        0 < inCapturePhase.length &&\n          ((reactName = new SyntheticEventCtor(\n            reactName,\n            reactEventType,\n            null,\n            nativeEvent,\n            nativeEventTarget\n          )),\n          dispatchQueue.push({ event: reactName, listeners: inCapturePhase }));\n      }\n    }\n    if (0 === (eventSystemFlags & 7)) {\n      a: {\n        reactName =\n          \"mouseover\" === domEventName || \"pointerover\" === domEventName;\n        SyntheticEventCtor =\n          \"mouseout\" === domEventName || \"pointerout\" === domEventName;\n        if (\n          reactName &&\n          nativeEvent !== currentReplayingEvent &&\n          (reactEventType =\n            nativeEvent.relatedTarget || nativeEvent.fromElement) &&\n          (getClosestInstanceFromNode(reactEventType) ||\n            reactEventType[internalContainerInstanceKey])\n        )\n          break a;\n        if (SyntheticEventCtor || reactName) {\n          reactName =\n            nativeEventTarget.window === nativeEventTarget\n              ? nativeEventTarget\n              : (reactName = nativeEventTarget.ownerDocument)\n                ? reactName.defaultView || reactName.parentWindow\n                : window;\n          if (SyntheticEventCtor) {\n            if (\n              ((reactEventType =\n                nativeEvent.relatedTarget || nativeEvent.toElement),\n              (SyntheticEventCtor = targetInst),\n              (reactEventType = reactEventType\n                ? getClosestInstanceFromNode(reactEventType)\n                : null),\n              null !== reactEventType &&\n                ((accumulateTargetOnly =\n                  getNearestMountedFiber(reactEventType)),\n                (inCapturePhase = reactEventType.tag),\n                reactEventType !== accumulateTargetOnly ||\n                  (5 !== inCapturePhase &&\n                    27 !== inCapturePhase &&\n                    6 !== inCapturePhase)))\n            )\n              reactEventType = null;\n          } else (SyntheticEventCtor = null), (reactEventType = targetInst);\n          if (SyntheticEventCtor !== reactEventType) {\n            inCapturePhase = SyntheticMouseEvent;\n            _instance = \"onMouseLeave\";\n            reactEventName = \"onMouseEnter\";\n            instance = \"mouse\";\n            if (\"pointerout\" === domEventName || \"pointerover\" === domEventName)\n              (inCapturePhase = SyntheticPointerEvent),\n                (_instance = \"onPointerLeave\"),\n                (reactEventName = \"onPointerEnter\"),\n                (instance = \"pointer\");\n            accumulateTargetOnly =\n              null == SyntheticEventCtor\n                ? reactName\n                : getNodeFromInstance(SyntheticEventCtor);\n            lastHostComponent =\n              null == reactEventType\n                ? reactName\n                : getNodeFromInstance(reactEventType);\n            reactName = new inCapturePhase(\n              _instance,\n              instance + \"leave\",\n              SyntheticEventCtor,\n              nativeEvent,\n              nativeEventTarget\n            );\n            reactName.target = accumulateTargetOnly;\n            reactName.relatedTarget = lastHostComponent;\n            _instance = null;\n            getClosestInstanceFromNode(nativeEventTarget) === targetInst &&\n              ((inCapturePhase = new inCapturePhase(\n                reactEventName,\n                instance + \"enter\",\n                reactEventType,\n                nativeEvent,\n                nativeEventTarget\n              )),\n              (inCapturePhase.target = lastHostComponent),\n              (inCapturePhase.relatedTarget = accumulateTargetOnly),\n              (_instance = inCapturePhase));\n            accumulateTargetOnly = _instance;\n            if (SyntheticEventCtor && reactEventType)\n              b: {\n                inCapturePhase = SyntheticEventCtor;\n                reactEventName = reactEventType;\n                instance = 0;\n                for (\n                  lastHostComponent = inCapturePhase;\n                  lastHostComponent;\n                  lastHostComponent = getParent(lastHostComponent)\n                )\n                  instance++;\n                lastHostComponent = 0;\n                for (\n                  _instance = reactEventName;\n                  _instance;\n                  _instance = getParent(_instance)\n                )\n                  lastHostComponent++;\n                for (; 0 < instance - lastHostComponent; )\n                  (inCapturePhase = getParent(inCapturePhase)), instance--;\n                for (; 0 < lastHostComponent - instance; )\n                  (reactEventName = getParent(reactEventName)),\n                    lastHostComponent--;\n                for (; instance--; ) {\n                  if (\n                    inCapturePhase === reactEventName ||\n                    (null !== reactEventName &&\n                      inCapturePhase === reactEventName.alternate)\n                  )\n                    break b;\n                  inCapturePhase = getParent(inCapturePhase);\n                  reactEventName = getParent(reactEventName);\n                }\n                inCapturePhase = null;\n              }\n            else inCapturePhase = null;\n            null !== SyntheticEventCtor &&\n              accumulateEnterLeaveListenersForEvent(\n                dispatchQueue,\n                reactName,\n                SyntheticEventCtor,\n                inCapturePhase,\n                !1\n              );\n            null !== reactEventType &&\n              null !== accumulateTargetOnly &&\n              accumulateEnterLeaveListenersForEvent(\n                dispatchQueue,\n                accumulateTargetOnly,\n                reactEventType,\n                inCapturePhase,\n                !0\n              );\n          }\n        }\n      }\n      a: {\n        reactName = targetInst ? getNodeFromInstance(targetInst) : window;\n        SyntheticEventCtor =\n          reactName.nodeName && reactName.nodeName.toLowerCase();\n        if (\n          \"select\" === SyntheticEventCtor ||\n          (\"input\" === SyntheticEventCtor && \"file\" === reactName.type)\n        )\n          var getTargetInstFunc = getTargetInstForChangeEvent;\n        else if (isTextInputElement(reactName))\n          if (isInputEventSupported)\n            getTargetInstFunc = getTargetInstForInputOrChangeEvent;\n          else {\n            getTargetInstFunc = getTargetInstForInputEventPolyfill;\n            var handleEventFunc = handleEventsForInputEventPolyfill;\n          }\n        else\n          (SyntheticEventCtor = reactName.nodeName),\n            !SyntheticEventCtor ||\n            \"input\" !== SyntheticEventCtor.toLowerCase() ||\n            (\"checkbox\" !== reactName.type && \"radio\" !== reactName.type)\n              ? targetInst &&\n                isCustomElement(targetInst.elementType) &&\n                (getTargetInstFunc = getTargetInstForChangeEvent)\n              : (getTargetInstFunc = getTargetInstForClickEvent);\n        if (\n          getTargetInstFunc &&\n          (getTargetInstFunc = getTargetInstFunc(domEventName, targetInst))\n        ) {\n          createAndAccumulateChangeEvent(\n            dispatchQueue,\n            getTargetInstFunc,\n            nativeEvent,\n            nativeEventTarget\n          );\n          break a;\n        }\n        handleEventFunc && handleEventFunc(domEventName, reactName, targetInst);\n        \"focusout\" === domEventName &&\n          targetInst &&\n          \"number\" === reactName.type &&\n          null != targetInst.memoizedProps.value &&\n          setDefaultValue(reactName, \"number\", reactName.value);\n      }\n      handleEventFunc = targetInst ? getNodeFromInstance(targetInst) : window;\n      switch (domEventName) {\n        case \"focusin\":\n          if (\n            isTextInputElement(handleEventFunc) ||\n            \"true\" === handleEventFunc.contentEditable\n          )\n            (activeElement = handleEventFunc),\n              (activeElementInst = targetInst),\n              (lastSelection = null);\n          break;\n        case \"focusout\":\n          lastSelection = activeElementInst = activeElement = null;\n          break;\n        case \"mousedown\":\n          mouseDown = !0;\n          break;\n        case \"contextmenu\":\n        case \"mouseup\":\n        case \"dragend\":\n          mouseDown = !1;\n          constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget);\n          break;\n        case \"selectionchange\":\n          if (skipSelectionChangeEvent) break;\n        case \"keydown\":\n        case \"keyup\":\n          constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget);\n      }\n      var fallbackData;\n      if (canUseCompositionEvent)\n        b: {\n          switch (domEventName) {\n            case \"compositionstart\":\n              var eventType = \"onCompositionStart\";\n              break b;\n            case \"compositionend\":\n              eventType = \"onCompositionEnd\";\n              break b;\n            case \"compositionupdate\":\n              eventType = \"onCompositionUpdate\";\n              break b;\n          }\n          eventType = void 0;\n        }\n      else\n        isComposing\n          ? isFallbackCompositionEnd(domEventName, nativeEvent) &&\n            (eventType = \"onCompositionEnd\")\n          : \"keydown\" === domEventName &&\n            229 === nativeEvent.keyCode &&\n            (eventType = \"onCompositionStart\");\n      eventType &&\n        (useFallbackCompositionData &&\n          \"ko\" !== nativeEvent.locale &&\n          (isComposing || \"onCompositionStart\" !== eventType\n            ? \"onCompositionEnd\" === eventType &&\n              isComposing &&\n              (fallbackData = getData())\n            : ((root = nativeEventTarget),\n              (startText = \"value\" in root ? root.value : root.textContent),\n              (isComposing = !0))),\n        (handleEventFunc = accumulateTwoPhaseListeners(targetInst, eventType)),\n        0 < handleEventFunc.length &&\n          ((eventType = new SyntheticCompositionEvent(\n            eventType,\n            domEventName,\n            null,\n            nativeEvent,\n            nativeEventTarget\n          )),\n          dispatchQueue.push({ event: eventType, listeners: handleEventFunc }),\n          fallbackData\n            ? (eventType.data = fallbackData)\n            : ((fallbackData = getDataFromCustomEvent(nativeEvent)),\n              null !== fallbackData && (eventType.data = fallbackData))));\n      if (\n        (fallbackData = canUseTextInputEvent\n          ? getNativeBeforeInputChars(domEventName, nativeEvent)\n          : getFallbackBeforeInputChars(domEventName, nativeEvent))\n      )\n        (eventType = accumulateTwoPhaseListeners(targetInst, \"onBeforeInput\")),\n          0 < eventType.length &&\n            ((handleEventFunc = new SyntheticCompositionEvent(\n              \"onBeforeInput\",\n              \"beforeinput\",\n              null,\n              nativeEvent,\n              nativeEventTarget\n            )),\n            dispatchQueue.push({\n              event: handleEventFunc,\n              listeners: eventType\n            }),\n            (handleEventFunc.data = fallbackData));\n      extractEvents$1(\n        dispatchQueue,\n        domEventName,\n        targetInst,\n        nativeEvent,\n        nativeEventTarget\n      );\n    }\n    processDispatchQueue(dispatchQueue, eventSystemFlags);\n  });\n}\nfunction createDispatchListener(instance, listener, currentTarget) {\n  return {\n    instance: instance,\n    listener: listener,\n    currentTarget: currentTarget\n  };\n}\nfunction accumulateTwoPhaseListeners(targetFiber, reactName) {\n  for (\n    var captureName = reactName + \"Capture\", listeners = [];\n    null !== targetFiber;\n\n  ) {\n    var _instance2 = targetFiber,\n      stateNode = _instance2.stateNode;\n    _instance2 = _instance2.tag;\n    (5 !== _instance2 && 26 !== _instance2 && 27 !== _instance2) ||\n      null === stateNode ||\n      ((_instance2 = getListener(targetFiber, captureName)),\n      null != _instance2 &&\n        listeners.unshift(\n          createDispatchListener(targetFiber, _instance2, stateNode)\n        ),\n      (_instance2 = getListener(targetFiber, reactName)),\n      null != _instance2 &&\n        listeners.push(\n          createDispatchListener(targetFiber, _instance2, stateNode)\n        ));\n    if (3 === targetFiber.tag) return listeners;\n    targetFiber = targetFiber.return;\n  }\n  return [];\n}\nfunction getParent(inst) {\n  if (null === inst) return null;\n  do inst = inst.return;\n  while (inst && 5 !== inst.tag && 27 !== inst.tag);\n  return inst ? inst : null;\n}\nfunction accumulateEnterLeaveListenersForEvent(\n  dispatchQueue,\n  event,\n  target,\n  common,\n  inCapturePhase\n) {\n  for (\n    var registrationName = event._reactName, listeners = [];\n    null !== target && target !== common;\n\n  ) {\n    var _instance3 = target,\n      alternate = _instance3.alternate,\n      stateNode = _instance3.stateNode;\n    _instance3 = _instance3.tag;\n    if (null !== alternate && alternate === common) break;\n    (5 !== _instance3 && 26 !== _instance3 && 27 !== _instance3) ||\n      null === stateNode ||\n      ((alternate = stateNode),\n      inCapturePhase\n        ? ((stateNode = getListener(target, registrationName)),\n          null != stateNode &&\n            listeners.unshift(\n              createDispatchListener(target, stateNode, alternate)\n            ))\n        : inCapturePhase ||\n          ((stateNode = getListener(target, registrationName)),\n          null != stateNode &&\n            listeners.push(\n              createDispatchListener(target, stateNode, alternate)\n            )));\n    target = target.return;\n  }\n  0 !== listeners.length &&\n    dispatchQueue.push({ event: event, listeners: listeners });\n}\nvar NORMALIZE_NEWLINES_REGEX = /\\r\\n?/g,\n  NORMALIZE_NULL_AND_REPLACEMENT_REGEX = /\\u0000|\\uFFFD/g;\nfunction normalizeMarkupForTextOrAttribute(markup) {\n  return (\"string\" === typeof markup ? markup : \"\" + markup)\n    .replace(NORMALIZE_NEWLINES_REGEX, \"\\n\")\n    .replace(NORMALIZE_NULL_AND_REPLACEMENT_REGEX, \"\");\n}\nfunction checkForUnmatchedText(serverText, clientText) {\n  clientText = normalizeMarkupForTextOrAttribute(clientText);\n  return normalizeMarkupForTextOrAttribute(serverText) === clientText ? !0 : !1;\n}\nfunction noop$1() {}\nfunction setProp(domElement, tag, key, value, props, prevValue) {\n  switch (key) {\n    case \"children\":\n      \"string\" === typeof value\n        ? \"body\" === tag ||\n          (\"textarea\" === tag && \"\" === value) ||\n          setTextContent(domElement, value)\n        : (\"number\" === typeof value || \"bigint\" === typeof value) &&\n          \"body\" !== tag &&\n          setTextContent(domElement, \"\" + value);\n      break;\n    case \"className\":\n      setValueForKnownAttribute(domElement, \"class\", value);\n      break;\n    case \"tabIndex\":\n      setValueForKnownAttribute(domElement, \"tabindex\", value);\n      break;\n    case \"dir\":\n    case \"role\":\n    case \"viewBox\":\n    case \"width\":\n    case \"height\":\n      setValueForKnownAttribute(domElement, key, value);\n      break;\n    case \"style\":\n      setValueForStyles(domElement, value, prevValue);\n      break;\n    case \"data\":\n      if (\"object\" !== tag) {\n        setValueForKnownAttribute(domElement, \"data\", value);\n        break;\n      }\n    case \"src\":\n    case \"href\":\n      if (\"\" === value && (\"a\" !== tag || \"href\" !== key)) {\n        domElement.removeAttribute(key);\n        break;\n      }\n      if (\n        null == value ||\n        \"function\" === typeof value ||\n        \"symbol\" === typeof value ||\n        \"boolean\" === typeof value\n      ) {\n        domElement.removeAttribute(key);\n        break;\n      }\n      value = sanitizeURL(\"\" + value);\n      domElement.setAttribute(key, value);\n      break;\n    case \"action\":\n    case \"formAction\":\n      if (\"function\" === typeof value) {\n        domElement.setAttribute(\n          key,\n          \"javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\\\'re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')\"\n        );\n        break;\n      } else\n        \"function\" === typeof prevValue &&\n          (\"formAction\" === key\n            ? (\"input\" !== tag &&\n                setProp(domElement, tag, \"name\", props.name, props, null),\n              setProp(\n                domElement,\n                tag,\n                \"formEncType\",\n                props.formEncType,\n                props,\n                null\n              ),\n              setProp(\n                domElement,\n                tag,\n                \"formMethod\",\n                props.formMethod,\n                props,\n                null\n              ),\n              setProp(\n                domElement,\n                tag,\n                \"formTarget\",\n                props.formTarget,\n                props,\n                null\n              ))\n            : (setProp(domElement, tag, \"encType\", props.encType, props, null),\n              setProp(domElement, tag, \"method\", props.method, props, null),\n              setProp(domElement, tag, \"target\", props.target, props, null)));\n      if (\n        null == value ||\n        \"symbol\" === typeof value ||\n        \"boolean\" === typeof value\n      ) {\n        domElement.removeAttribute(key);\n        break;\n      }\n      value = sanitizeURL(\"\" + value);\n      domElement.setAttribute(key, value);\n      break;\n    case \"onClick\":\n      null != value && (domElement.onclick = noop$1);\n      break;\n    case \"onScroll\":\n      null != value && listenToNonDelegatedEvent(\"scroll\", domElement);\n      break;\n    case \"onScrollEnd\":\n      null != value && listenToNonDelegatedEvent(\"scrollend\", domElement);\n      break;\n    case \"dangerouslySetInnerHTML\":\n      if (null != value) {\n        if (\"object\" !== typeof value || !(\"__html\" in value))\n          throw Error(formatProdErrorMessage(61));\n        key = value.__html;\n        if (null != key) {\n          if (null != props.children) throw Error(formatProdErrorMessage(60));\n          domElement.innerHTML = key;\n        }\n      }\n      break;\n    case \"multiple\":\n      domElement.multiple =\n        value && \"function\" !== typeof value && \"symbol\" !== typeof value;\n      break;\n    case \"muted\":\n      domElement.muted =\n        value && \"function\" !== typeof value && \"symbol\" !== typeof value;\n      break;\n    case \"suppressContentEditableWarning\":\n    case \"suppressHydrationWarning\":\n    case \"defaultValue\":\n    case \"defaultChecked\":\n    case \"innerHTML\":\n    case \"ref\":\n      break;\n    case \"autoFocus\":\n      break;\n    case \"xlinkHref\":\n      if (\n        null == value ||\n        \"function\" === typeof value ||\n        \"boolean\" === typeof value ||\n        \"symbol\" === typeof value\n      ) {\n        domElement.removeAttribute(\"xlink:href\");\n        break;\n      }\n      key = sanitizeURL(\"\" + value);\n      domElement.setAttributeNS(\n        \"http://www.w3.org/1999/xlink\",\n        \"xlink:href\",\n        key\n      );\n      break;\n    case \"contentEditable\":\n    case \"spellCheck\":\n    case \"draggable\":\n    case \"value\":\n    case \"autoReverse\":\n    case \"externalResourcesRequired\":\n    case \"focusable\":\n    case \"preserveAlpha\":\n      null != value && \"function\" !== typeof value && \"symbol\" !== typeof value\n        ? domElement.setAttribute(key, \"\" + value)\n        : domElement.removeAttribute(key);\n      break;\n    case \"inert\":\n    case \"allowFullScreen\":\n    case \"async\":\n    case \"autoPlay\":\n    case \"controls\":\n    case \"default\":\n    case \"defer\":\n    case \"disabled\":\n    case \"disablePictureInPicture\":\n    case \"disableRemotePlayback\":\n    case \"formNoValidate\":\n    case \"hidden\":\n    case \"loop\":\n    case \"noModule\":\n    case \"noValidate\":\n    case \"open\":\n    case \"playsInline\":\n    case \"readOnly\":\n    case \"required\":\n    case \"reversed\":\n    case \"scoped\":\n    case \"seamless\":\n    case \"itemScope\":\n      value && \"function\" !== typeof value && \"symbol\" !== typeof value\n        ? domElement.setAttribute(key, \"\")\n        : domElement.removeAttribute(key);\n      break;\n    case \"capture\":\n    case \"download\":\n      !0 === value\n        ? domElement.setAttribute(key, \"\")\n        : !1 !== value &&\n            null != value &&\n            \"function\" !== typeof value &&\n            \"symbol\" !== typeof value\n          ? domElement.setAttribute(key, value)\n          : domElement.removeAttribute(key);\n      break;\n    case \"cols\":\n    case \"rows\":\n    case \"size\":\n    case \"span\":\n      null != value &&\n      \"function\" !== typeof value &&\n      \"symbol\" !== typeof value &&\n      !isNaN(value) &&\n      1 <= value\n        ? domElement.setAttribute(key, value)\n        : domElement.removeAttribute(key);\n      break;\n    case \"rowSpan\":\n    case \"start\":\n      null == value ||\n      \"function\" === typeof value ||\n      \"symbol\" === typeof value ||\n      isNaN(value)\n        ? domElement.removeAttribute(key)\n        : domElement.setAttribute(key, value);\n      break;\n    case \"popover\":\n      listenToNonDelegatedEvent(\"beforetoggle\", domElement);\n      listenToNonDelegatedEvent(\"toggle\", domElement);\n      setValueForAttribute(domElement, \"popover\", value);\n      break;\n    case \"xlinkActuate\":\n      setValueForNamespacedAttribute(\n        domElement,\n        \"http://www.w3.org/1999/xlink\",\n        \"xlink:actuate\",\n        value\n      );\n      break;\n    case \"xlinkArcrole\":\n      setValueForNamespacedAttribute(\n        domElement,\n        \"http://www.w3.org/1999/xlink\",\n        \"xlink:arcrole\",\n        value\n      );\n      break;\n    case \"xlinkRole\":\n      setValueForNamespacedAttribute(\n        domElement,\n        \"http://www.w3.org/1999/xlink\",\n        \"xlink:role\",\n        value\n      );\n      break;\n    case \"xlinkShow\":\n      setValueForNamespacedAttribute(\n        domElement,\n        \"http://www.w3.org/1999/xlink\",\n        \"xlink:show\",\n        value\n      );\n      break;\n    case \"xlinkTitle\":\n      setValueForNamespacedAttribute(\n        domElement,\n        \"http://www.w3.org/1999/xlink\",\n        \"xlink:title\",\n        value\n      );\n      break;\n    case \"xlinkType\":\n      setValueForNamespacedAttribute(\n        domElement,\n        \"http://www.w3.org/1999/xlink\",\n        \"xlink:type\",\n        value\n      );\n      break;\n    case \"xmlBase\":\n      setValueForNamespacedAttribute(\n        domElement,\n        \"http://www.w3.org/XML/1998/namespace\",\n        \"xml:base\",\n        value\n      );\n      break;\n    case \"xmlLang\":\n      setValueForNamespacedAttribute(\n        domElement,\n        \"http://www.w3.org/XML/1998/namespace\",\n        \"xml:lang\",\n        value\n      );\n      break;\n    case \"xmlSpace\":\n      setValueForNamespacedAttribute(\n        domElement,\n        \"http://www.w3.org/XML/1998/namespace\",\n        \"xml:space\",\n        value\n      );\n      break;\n    case \"is\":\n      setValueForAttribute(domElement, \"is\", value);\n      break;\n    case \"innerText\":\n    case \"textContent\":\n      break;\n    default:\n      if (\n        !(2 < key.length) ||\n        (\"o\" !== key[0] && \"O\" !== key[0]) ||\n        (\"n\" !== key[1] && \"N\" !== key[1])\n      )\n        (key = aliases.get(key) || key),\n          setValueForAttribute(domElement, key, value);\n  }\n}\nfunction setPropOnCustomElement(domElement, tag, key, value, props, prevValue) {\n  switch (key) {\n    case \"style\":\n      setValueForStyles(domElement, value, prevValue);\n      break;\n    case \"dangerouslySetInnerHTML\":\n      if (null != value) {\n        if (\"object\" !== typeof value || !(\"__html\" in value))\n          throw Error(formatProdErrorMessage(61));\n        key = value.__html;\n        if (null != key) {\n          if (null != props.children) throw Error(formatProdErrorMessage(60));\n          domElement.innerHTML = key;\n        }\n      }\n      break;\n    case \"children\":\n      \"string\" === typeof value\n        ? setTextContent(domElement, value)\n        : (\"number\" === typeof value || \"bigint\" === typeof value) &&\n          setTextContent(domElement, \"\" + value);\n      break;\n    case \"onScroll\":\n      null != value && listenToNonDelegatedEvent(\"scroll\", domElement);\n      break;\n    case \"onScrollEnd\":\n      null != value && listenToNonDelegatedEvent(\"scrollend\", domElement);\n      break;\n    case \"onClick\":\n      null != value && (domElement.onclick = noop$1);\n      break;\n    case \"suppressContentEditableWarning\":\n    case \"suppressHydrationWarning\":\n    case \"innerHTML\":\n    case \"ref\":\n      break;\n    case \"innerText\":\n    case \"textContent\":\n      break;\n    default:\n      if (!registrationNameDependencies.hasOwnProperty(key))\n        a: {\n          if (\n            \"o\" === key[0] &&\n            \"n\" === key[1] &&\n            ((props = key.endsWith(\"Capture\")),\n            (tag = key.slice(2, props ? key.length - 7 : void 0)),\n            (prevValue = domElement[internalPropsKey] || null),\n            (prevValue = null != prevValue ? prevValue[key] : null),\n            \"function\" === typeof prevValue &&\n              domElement.removeEventListener(tag, prevValue, props),\n            \"function\" === typeof value)\n          ) {\n            \"function\" !== typeof prevValue &&\n              null !== prevValue &&\n              (key in domElement\n                ? (domElement[key] = null)\n                : domElement.hasAttribute(key) &&\n                  domElement.removeAttribute(key));\n            domElement.addEventListener(tag, value, props);\n            break a;\n          }\n          key in domElement\n            ? (domElement[key] = value)\n            : !0 === value\n              ? domElement.setAttribute(key, \"\")\n              : setValueForAttribute(domElement, key, value);\n        }\n  }\n}\nfunction setInitialProperties(domElement, tag, props) {\n  switch (tag) {\n    case \"div\":\n    case \"span\":\n    case \"svg\":\n    case \"path\":\n    case \"a\":\n    case \"g\":\n    case \"p\":\n    case \"li\":\n      break;\n    case \"img\":\n      listenToNonDelegatedEvent(\"error\", domElement);\n      listenToNonDelegatedEvent(\"load\", domElement);\n      var hasSrc = !1,\n        hasSrcSet = !1,\n        propKey;\n      for (propKey in props)\n        if (props.hasOwnProperty(propKey)) {\n          var propValue = props[propKey];\n          if (null != propValue)\n            switch (propKey) {\n              case \"src\":\n                hasSrc = !0;\n                break;\n              case \"srcSet\":\n                hasSrcSet = !0;\n                break;\n              case \"children\":\n              case \"dangerouslySetInnerHTML\":\n                throw Error(formatProdErrorMessage(137, tag));\n              default:\n                setProp(domElement, tag, propKey, propValue, props, null);\n            }\n        }\n      hasSrcSet &&\n        setProp(domElement, tag, \"srcSet\", props.srcSet, props, null);\n      hasSrc && setProp(domElement, tag, \"src\", props.src, props, null);\n      return;\n    case \"input\":\n      listenToNonDelegatedEvent(\"invalid\", domElement);\n      var defaultValue = (propKey = propValue = hasSrcSet = null),\n        checked = null,\n        defaultChecked = null;\n      for (hasSrc in props)\n        if (props.hasOwnProperty(hasSrc)) {\n          var propValue$188 = props[hasSrc];\n          if (null != propValue$188)\n            switch (hasSrc) {\n              case \"name\":\n                hasSrcSet = propValue$188;\n                break;\n              case \"type\":\n                propValue = propValue$188;\n                break;\n              case \"checked\":\n                checked = propValue$188;\n                break;\n              case \"defaultChecked\":\n                defaultChecked = propValue$188;\n                break;\n              case \"value\":\n                propKey = propValue$188;\n                break;\n              case \"defaultValue\":\n                defaultValue = propValue$188;\n                break;\n              case \"children\":\n              case \"dangerouslySetInnerHTML\":\n                if (null != propValue$188)\n                  throw Error(formatProdErrorMessage(137, tag));\n                break;\n              default:\n                setProp(domElement, tag, hasSrc, propValue$188, props, null);\n            }\n        }\n      initInput(\n        domElement,\n        propKey,\n        defaultValue,\n        checked,\n        defaultChecked,\n        propValue,\n        hasSrcSet,\n        !1\n      );\n      track(domElement);\n      return;\n    case \"select\":\n      listenToNonDelegatedEvent(\"invalid\", domElement);\n      hasSrc = propValue = propKey = null;\n      for (hasSrcSet in props)\n        if (\n          props.hasOwnProperty(hasSrcSet) &&\n          ((defaultValue = props[hasSrcSet]), null != defaultValue)\n        )\n          switch (hasSrcSet) {\n            case \"value\":\n              propKey = defaultValue;\n              break;\n            case \"defaultValue\":\n              propValue = defaultValue;\n              break;\n            case \"multiple\":\n              hasSrc = defaultValue;\n            default:\n              setProp(domElement, tag, hasSrcSet, defaultValue, props, null);\n          }\n      tag = propKey;\n      props = propValue;\n      domElement.multiple = !!hasSrc;\n      null != tag\n        ? updateOptions(domElement, !!hasSrc, tag, !1)\n        : null != props && updateOptions(domElement, !!hasSrc, props, !0);\n      return;\n    case \"textarea\":\n      listenToNonDelegatedEvent(\"invalid\", domElement);\n      propKey = hasSrcSet = hasSrc = null;\n      for (propValue in props)\n        if (\n          props.hasOwnProperty(propValue) &&\n          ((defaultValue = props[propValue]), null != defaultValue)\n        )\n          switch (propValue) {\n            case \"value\":\n              hasSrc = defaultValue;\n              break;\n            case \"defaultValue\":\n              hasSrcSet = defaultValue;\n              break;\n            case \"children\":\n              propKey = defaultValue;\n              break;\n            case \"dangerouslySetInnerHTML\":\n              if (null != defaultValue) throw Error(formatProdErrorMessage(91));\n              break;\n            default:\n              setProp(domElement, tag, propValue, defaultValue, props, null);\n          }\n      initTextarea(domElement, hasSrc, hasSrcSet, propKey);\n      track(domElement);\n      return;\n    case \"option\":\n      for (checked in props)\n        if (\n          props.hasOwnProperty(checked) &&\n          ((hasSrc = props[checked]), null != hasSrc)\n        )\n          switch (checked) {\n            case \"selected\":\n              domElement.selected =\n                hasSrc &&\n                \"function\" !== typeof hasSrc &&\n                \"symbol\" !== typeof hasSrc;\n              break;\n            default:\n              setProp(domElement, tag, checked, hasSrc, props, null);\n          }\n      return;\n    case \"dialog\":\n      listenToNonDelegatedEvent(\"beforetoggle\", domElement);\n      listenToNonDelegatedEvent(\"toggle\", domElement);\n      listenToNonDelegatedEvent(\"cancel\", domElement);\n      listenToNonDelegatedEvent(\"close\", domElement);\n      break;\n    case \"iframe\":\n    case \"object\":\n      listenToNonDelegatedEvent(\"load\", domElement);\n      break;\n    case \"video\":\n    case \"audio\":\n      for (hasSrc = 0; hasSrc < mediaEventTypes.length; hasSrc++)\n        listenToNonDelegatedEvent(mediaEventTypes[hasSrc], domElement);\n      break;\n    case \"image\":\n      listenToNonDelegatedEvent(\"error\", domElement);\n      listenToNonDelegatedEvent(\"load\", domElement);\n      break;\n    case \"details\":\n      listenToNonDelegatedEvent(\"toggle\", domElement);\n      break;\n    case \"embed\":\n    case \"source\":\n    case \"link\":\n      listenToNonDelegatedEvent(\"error\", domElement),\n        listenToNonDelegatedEvent(\"load\", domElement);\n    case \"area\":\n    case \"base\":\n    case \"br\":\n    case \"col\":\n    case \"hr\":\n    case \"keygen\":\n    case \"meta\":\n    case \"param\":\n    case \"track\":\n    case \"wbr\":\n    case \"menuitem\":\n      for (defaultChecked in props)\n        if (\n          props.hasOwnProperty(defaultChecked) &&\n          ((hasSrc = props[defaultChecked]), null != hasSrc)\n        )\n          switch (defaultChecked) {\n            case \"children\":\n            case \"dangerouslySetInnerHTML\":\n              throw Error(formatProdErrorMessage(137, tag));\n            default:\n              setProp(domElement, tag, defaultChecked, hasSrc, props, null);\n          }\n      return;\n    default:\n      if (isCustomElement(tag)) {\n        for (propValue$188 in props)\n          props.hasOwnProperty(propValue$188) &&\n            ((hasSrc = props[propValue$188]),\n            void 0 !== hasSrc &&\n              setPropOnCustomElement(\n                domElement,\n                tag,\n                propValue$188,\n                hasSrc,\n                props,\n                void 0\n              ));\n        return;\n      }\n  }\n  for (defaultValue in props)\n    props.hasOwnProperty(defaultValue) &&\n      ((hasSrc = props[defaultValue]),\n      null != hasSrc &&\n        setProp(domElement, tag, defaultValue, hasSrc, props, null));\n}\nfunction updateProperties(domElement, tag, lastProps, nextProps) {\n  switch (tag) {\n    case \"div\":\n    case \"span\":\n    case \"svg\":\n    case \"path\":\n    case \"a\":\n    case \"g\":\n    case \"p\":\n    case \"li\":\n      break;\n    case \"input\":\n      var name = null,\n        type = null,\n        value = null,\n        defaultValue = null,\n        lastDefaultValue = null,\n        checked = null,\n        defaultChecked = null;\n      for (propKey in lastProps) {\n        var lastProp = lastProps[propKey];\n        if (lastProps.hasOwnProperty(propKey) && null != lastProp)\n          switch (propKey) {\n            case \"checked\":\n              break;\n            case \"value\":\n              break;\n            case \"defaultValue\":\n              lastDefaultValue = lastProp;\n            default:\n              nextProps.hasOwnProperty(propKey) ||\n                setProp(domElement, tag, propKey, null, nextProps, lastProp);\n          }\n      }\n      for (var propKey$205 in nextProps) {\n        var propKey = nextProps[propKey$205];\n        lastProp = lastProps[propKey$205];\n        if (\n          nextProps.hasOwnProperty(propKey$205) &&\n          (null != propKey || null != lastProp)\n        )\n          switch (propKey$205) {\n            case \"type\":\n              type = propKey;\n              break;\n            case \"name\":\n              name = propKey;\n              break;\n            case \"checked\":\n              checked = propKey;\n              break;\n            case \"defaultChecked\":\n              defaultChecked = propKey;\n              break;\n            case \"value\":\n              value = propKey;\n              break;\n            case \"defaultValue\":\n              defaultValue = propKey;\n              break;\n            case \"children\":\n            case \"dangerouslySetInnerHTML\":\n              if (null != propKey)\n                throw Error(formatProdErrorMessage(137, tag));\n              break;\n            default:\n              propKey !== lastProp &&\n                setProp(\n                  domElement,\n                  tag,\n                  propKey$205,\n                  propKey,\n                  nextProps,\n                  lastProp\n                );\n          }\n      }\n      updateInput(\n        domElement,\n        value,\n        defaultValue,\n        lastDefaultValue,\n        checked,\n        defaultChecked,\n        type,\n        name\n      );\n      return;\n    case \"select\":\n      propKey = value = defaultValue = propKey$205 = null;\n      for (type in lastProps)\n        if (\n          ((lastDefaultValue = lastProps[type]),\n          lastProps.hasOwnProperty(type) && null != lastDefaultValue)\n        )\n          switch (type) {\n            case \"value\":\n              break;\n            case \"multiple\":\n              propKey = lastDefaultValue;\n            default:\n              nextProps.hasOwnProperty(type) ||\n                setProp(\n                  domElement,\n                  tag,\n                  type,\n                  null,\n                  nextProps,\n                  lastDefaultValue\n                );\n          }\n      for (name in nextProps)\n        if (\n          ((type = nextProps[name]),\n          (lastDefaultValue = lastProps[name]),\n          nextProps.hasOwnProperty(name) &&\n            (null != type || null != lastDefaultValue))\n        )\n          switch (name) {\n            case \"value\":\n              propKey$205 = type;\n              break;\n            case \"defaultValue\":\n              defaultValue = type;\n              break;\n            case \"multiple\":\n              value = type;\n            default:\n              type !== lastDefaultValue &&\n                setProp(\n                  domElement,\n                  tag,\n                  name,\n                  type,\n                  nextProps,\n                  lastDefaultValue\n                );\n          }\n      tag = defaultValue;\n      lastProps = value;\n      nextProps = propKey;\n      null != propKey$205\n        ? updateOptions(domElement, !!lastProps, propKey$205, !1)\n        : !!nextProps !== !!lastProps &&\n          (null != tag\n            ? updateOptions(domElement, !!lastProps, tag, !0)\n            : updateOptions(domElement, !!lastProps, lastProps ? [] : \"\", !1));\n      return;\n    case \"textarea\":\n      propKey = propKey$205 = null;\n      for (defaultValue in lastProps)\n        if (\n          ((name = lastProps[defaultValue]),\n          lastProps.hasOwnProperty(defaultValue) &&\n            null != name &&\n            !nextProps.hasOwnProperty(defaultValue))\n        )\n          switch (defaultValue) {\n            case \"value\":\n              break;\n            case \"children\":\n              break;\n            default:\n              setProp(domElement, tag, defaultValue, null, nextProps, name);\n          }\n      for (value in nextProps)\n        if (\n          ((name = nextProps[value]),\n          (type = lastProps[value]),\n          nextProps.hasOwnProperty(value) && (null != name || null != type))\n        )\n          switch (value) {\n            case \"value\":\n              propKey$205 = name;\n              break;\n            case \"defaultValue\":\n              propKey = name;\n              break;\n            case \"children\":\n              break;\n            case \"dangerouslySetInnerHTML\":\n              if (null != name) throw Error(formatProdErrorMessage(91));\n              break;\n            default:\n              name !== type &&\n                setProp(domElement, tag, value, name, nextProps, type);\n          }\n      updateTextarea(domElement, propKey$205, propKey);\n      return;\n    case \"option\":\n      for (var propKey$221 in lastProps)\n        if (\n          ((propKey$205 = lastProps[propKey$221]),\n          lastProps.hasOwnProperty(propKey$221) &&\n            null != propKey$205 &&\n            !nextProps.hasOwnProperty(propKey$221))\n        )\n          switch (propKey$221) {\n            case \"selected\":\n              domElement.selected = !1;\n              break;\n            default:\n              setProp(\n                domElement,\n                tag,\n                propKey$221,\n                null,\n                nextProps,\n                propKey$205\n              );\n          }\n      for (lastDefaultValue in nextProps)\n        if (\n          ((propKey$205 = nextProps[lastDefaultValue]),\n          (propKey = lastProps[lastDefaultValue]),\n          nextProps.hasOwnProperty(lastDefaultValue) &&\n            propKey$205 !== propKey &&\n            (null != propKey$205 || null != propKey))\n        )\n          switch (lastDefaultValue) {\n            case \"selected\":\n              domElement.selected =\n                propKey$205 &&\n                \"function\" !== typeof propKey$205 &&\n                \"symbol\" !== typeof propKey$205;\n              break;\n            default:\n              setProp(\n                domElement,\n                tag,\n                lastDefaultValue,\n                propKey$205,\n                nextProps,\n                propKey\n              );\n          }\n      return;\n    case \"img\":\n    case \"link\":\n    case \"area\":\n    case \"base\":\n    case \"br\":\n    case \"col\":\n    case \"embed\":\n    case \"hr\":\n    case \"keygen\":\n    case \"meta\":\n    case \"param\":\n    case \"source\":\n    case \"track\":\n    case \"wbr\":\n    case \"menuitem\":\n      for (var propKey$226 in lastProps)\n        (propKey$205 = lastProps[propKey$226]),\n          lastProps.hasOwnProperty(propKey$226) &&\n            null != propKey$205 &&\n            !nextProps.hasOwnProperty(propKey$226) &&\n            setProp(domElement, tag, propKey$226, null, nextProps, propKey$205);\n      for (checked in nextProps)\n        if (\n          ((propKey$205 = nextProps[checked]),\n          (propKey = lastProps[checked]),\n          nextProps.hasOwnProperty(checked) &&\n            propKey$205 !== propKey &&\n            (null != propKey$205 || null != propKey))\n        )\n          switch (checked) {\n            case \"children\":\n            case \"dangerouslySetInnerHTML\":\n              if (null != propKey$205)\n                throw Error(formatProdErrorMessage(137, tag));\n              break;\n            default:\n              setProp(\n                domElement,\n                tag,\n                checked,\n                propKey$205,\n                nextProps,\n                propKey\n              );\n          }\n      return;\n    default:\n      if (isCustomElement(tag)) {\n        for (var propKey$231 in lastProps)\n          (propKey$205 = lastProps[propKey$231]),\n            lastProps.hasOwnProperty(propKey$231) &&\n              void 0 !== propKey$205 &&\n              !nextProps.hasOwnProperty(propKey$231) &&\n              setPropOnCustomElement(\n                domElement,\n                tag,\n                propKey$231,\n                void 0,\n                nextProps,\n                propKey$205\n              );\n        for (defaultChecked in nextProps)\n          (propKey$205 = nextProps[defaultChecked]),\n            (propKey = lastProps[defaultChecked]),\n            !nextProps.hasOwnProperty(defaultChecked) ||\n              propKey$205 === propKey ||\n              (void 0 === propKey$205 && void 0 === propKey) ||\n              setPropOnCustomElement(\n                domElement,\n                tag,\n                defaultChecked,\n                propKey$205,\n                nextProps,\n                propKey\n              );\n        return;\n      }\n  }\n  for (var propKey$236 in lastProps)\n    (propKey$205 = lastProps[propKey$236]),\n      lastProps.hasOwnProperty(propKey$236) &&\n        null != propKey$205 &&\n        !nextProps.hasOwnProperty(propKey$236) &&\n        setProp(domElement, tag, propKey$236, null, nextProps, propKey$205);\n  for (lastProp in nextProps)\n    (propKey$205 = nextProps[lastProp]),\n      (propKey = lastProps[lastProp]),\n      !nextProps.hasOwnProperty(lastProp) ||\n        propKey$205 === propKey ||\n        (null == propKey$205 && null == propKey) ||\n        setProp(domElement, tag, lastProp, propKey$205, nextProps, propKey);\n}\nvar eventsEnabled = null,\n  selectionInformation = null;\nfunction getOwnerDocumentFromRootContainer(rootContainerElement) {\n  return 9 === rootContainerElement.nodeType\n    ? rootContainerElement\n    : rootContainerElement.ownerDocument;\n}\nfunction getOwnHostContext(namespaceURI) {\n  switch (namespaceURI) {\n    case \"http://www.w3.org/2000/svg\":\n      return 1;\n    case \"http://www.w3.org/1998/Math/MathML\":\n      return 2;\n    default:\n      return 0;\n  }\n}\nfunction getChildHostContextProd(parentNamespace, type) {\n  if (0 === parentNamespace)\n    switch (type) {\n      case \"svg\":\n        return 1;\n      case \"math\":\n        return 2;\n      default:\n        return 0;\n    }\n  return 1 === parentNamespace && \"foreignObject\" === type\n    ? 0\n    : parentNamespace;\n}\nfunction shouldSetTextContent(type, props) {\n  return (\n    \"textarea\" === type ||\n    \"noscript\" === type ||\n    \"string\" === typeof props.children ||\n    \"number\" === typeof props.children ||\n    \"bigint\" === typeof props.children ||\n    (\"object\" === typeof props.dangerouslySetInnerHTML &&\n      null !== props.dangerouslySetInnerHTML &&\n      null != props.dangerouslySetInnerHTML.__html)\n  );\n}\nvar currentPopstateTransitionEvent = null;\nfunction shouldAttemptEagerTransition() {\n  var event = window.event;\n  if (event && \"popstate\" === event.type) {\n    if (event === currentPopstateTransitionEvent) return !1;\n    currentPopstateTransitionEvent = event;\n    return !0;\n  }\n  currentPopstateTransitionEvent = null;\n  return !1;\n}\nvar scheduleTimeout = \"function\" === typeof setTimeout ? setTimeout : void 0,\n  cancelTimeout = \"function\" === typeof clearTimeout ? clearTimeout : void 0,\n  localPromise = \"function\" === typeof Promise ? Promise : void 0,\n  scheduleMicrotask =\n    \"function\" === typeof queueMicrotask\n      ? queueMicrotask\n      : \"undefined\" !== typeof localPromise\n        ? function (callback) {\n            return localPromise\n              .resolve(null)\n              .then(callback)\n              .catch(handleErrorInNextTick);\n          }\n        : scheduleTimeout;\nfunction handleErrorInNextTick(error) {\n  setTimeout(function () {\n    throw error;\n  });\n}\nfunction isSingletonScope(type) {\n  return \"head\" === type;\n}\nfunction clearSuspenseBoundary(parentInstance, suspenseInstance) {\n  var node = suspenseInstance,\n    possiblePreambleContribution = 0,\n    depth = 0;\n  do {\n    var nextNode = node.nextSibling;\n    parentInstance.removeChild(node);\n    if (nextNode && 8 === nextNode.nodeType)\n      if (((node = nextNode.data), \"/$\" === node)) {\n        if (\n          0 < possiblePreambleContribution &&\n          8 > possiblePreambleContribution\n        ) {\n          node = possiblePreambleContribution;\n          var ownerDocument = parentInstance.ownerDocument;\n          node & 1 && releaseSingletonInstance(ownerDocument.documentElement);\n          node & 2 && releaseSingletonInstance(ownerDocument.body);\n          if (node & 4)\n            for (\n              node = ownerDocument.head,\n                releaseSingletonInstance(node),\n                ownerDocument = node.firstChild;\n              ownerDocument;\n\n            ) {\n              var nextNode$jscomp$0 = ownerDocument.nextSibling,\n                nodeName = ownerDocument.nodeName;\n              ownerDocument[internalHoistableMarker] ||\n                \"SCRIPT\" === nodeName ||\n                \"STYLE\" === nodeName ||\n                (\"LINK\" === nodeName &&\n                  \"stylesheet\" === ownerDocument.rel.toLowerCase()) ||\n                node.removeChild(ownerDocument);\n              ownerDocument = nextNode$jscomp$0;\n            }\n        }\n        if (0 === depth) {\n          parentInstance.removeChild(nextNode);\n          retryIfBlockedOn(suspenseInstance);\n          return;\n        }\n        depth--;\n      } else\n        \"$\" === node || \"$?\" === node || \"$!\" === node\n          ? depth++\n          : (possiblePreambleContribution = node.charCodeAt(0) - 48);\n    else possiblePreambleContribution = 0;\n    node = nextNode;\n  } while (node);\n  retryIfBlockedOn(suspenseInstance);\n}\nfunction clearContainerSparingly(container) {\n  var nextNode = container.firstChild;\n  nextNode && 10 === nextNode.nodeType && (nextNode = nextNode.nextSibling);\n  for (; nextNode; ) {\n    var node = nextNode;\n    nextNode = nextNode.nextSibling;\n    switch (node.nodeName) {\n      case \"HTML\":\n      case \"HEAD\":\n      case \"BODY\":\n        clearContainerSparingly(node);\n        detachDeletedInstance(node);\n        continue;\n      case \"SCRIPT\":\n      case \"STYLE\":\n        continue;\n      case \"LINK\":\n        if (\"stylesheet\" === node.rel.toLowerCase()) continue;\n    }\n    container.removeChild(node);\n  }\n}\nfunction canHydrateInstance(instance, type, props, inRootOrSingleton) {\n  for (; 1 === instance.nodeType; ) {\n    var anyProps = props;\n    if (instance.nodeName.toLowerCase() !== type.toLowerCase()) {\n      if (\n        !inRootOrSingleton &&\n        (\"INPUT\" !== instance.nodeName || \"hidden\" !== instance.type)\n      )\n        break;\n    } else if (!inRootOrSingleton)\n      if (\"input\" === type && \"hidden\" === instance.type) {\n        var name = null == anyProps.name ? null : \"\" + anyProps.name;\n        if (\n          \"hidden\" === anyProps.type &&\n          instance.getAttribute(\"name\") === name\n        )\n          return instance;\n      } else return instance;\n    else if (!instance[internalHoistableMarker])\n      switch (type) {\n        case \"meta\":\n          if (!instance.hasAttribute(\"itemprop\")) break;\n          return instance;\n        case \"link\":\n          name = instance.getAttribute(\"rel\");\n          if (\"stylesheet\" === name && instance.hasAttribute(\"data-precedence\"))\n            break;\n          else if (\n            name !== anyProps.rel ||\n            instance.getAttribute(\"href\") !==\n              (null == anyProps.href || \"\" === anyProps.href\n                ? null\n                : anyProps.href) ||\n            instance.getAttribute(\"crossorigin\") !==\n              (null == anyProps.crossOrigin ? null : anyProps.crossOrigin) ||\n            instance.getAttribute(\"title\") !==\n              (null == anyProps.title ? null : anyProps.title)\n          )\n            break;\n          return instance;\n        case \"style\":\n          if (instance.hasAttribute(\"data-precedence\")) break;\n          return instance;\n        case \"script\":\n          name = instance.getAttribute(\"src\");\n          if (\n            (name !== (null == anyProps.src ? null : anyProps.src) ||\n              instance.getAttribute(\"type\") !==\n                (null == anyProps.type ? null : anyProps.type) ||\n              instance.getAttribute(\"crossorigin\") !==\n                (null == anyProps.crossOrigin ? null : anyProps.crossOrigin)) &&\n            name &&\n            instance.hasAttribute(\"async\") &&\n            !instance.hasAttribute(\"itemprop\")\n          )\n            break;\n          return instance;\n        default:\n          return instance;\n      }\n    instance = getNextHydratable(instance.nextSibling);\n    if (null === instance) break;\n  }\n  return null;\n}\nfunction canHydrateTextInstance(instance, text, inRootOrSingleton) {\n  if (\"\" === text) return null;\n  for (; 3 !== instance.nodeType; ) {\n    if (\n      (1 !== instance.nodeType ||\n        \"INPUT\" !== instance.nodeName ||\n        \"hidden\" !== instance.type) &&\n      !inRootOrSingleton\n    )\n      return null;\n    instance = getNextHydratable(instance.nextSibling);\n    if (null === instance) return null;\n  }\n  return instance;\n}\nfunction isSuspenseInstanceFallback(instance) {\n  return (\n    \"$!\" === instance.data ||\n    (\"$?\" === instance.data && \"complete\" === instance.ownerDocument.readyState)\n  );\n}\nfunction registerSuspenseInstanceRetry(instance, callback) {\n  var ownerDocument = instance.ownerDocument;\n  if (\"$?\" !== instance.data || \"complete\" === ownerDocument.readyState)\n    callback();\n  else {\n    var listener = function () {\n      callback();\n      ownerDocument.removeEventListener(\"DOMContentLoaded\", listener);\n    };\n    ownerDocument.addEventListener(\"DOMContentLoaded\", listener);\n    instance._reactRetry = listener;\n  }\n}\nfunction getNextHydratable(node) {\n  for (; null != node; node = node.nextSibling) {\n    var nodeType = node.nodeType;\n    if (1 === nodeType || 3 === nodeType) break;\n    if (8 === nodeType) {\n      nodeType = node.data;\n      if (\n        \"$\" === nodeType ||\n        \"$!\" === nodeType ||\n        \"$?\" === nodeType ||\n        \"F!\" === nodeType ||\n        \"F\" === nodeType\n      )\n        break;\n      if (\"/$\" === nodeType) return null;\n    }\n  }\n  return node;\n}\nvar previousHydratableOnEnteringScopedSingleton = null;\nfunction getParentSuspenseInstance(targetInstance) {\n  targetInstance = targetInstance.previousSibling;\n  for (var depth = 0; targetInstance; ) {\n    if (8 === targetInstance.nodeType) {\n      var data = targetInstance.data;\n      if (\"$\" === data || \"$!\" === data || \"$?\" === data) {\n        if (0 === depth) return targetInstance;\n        depth--;\n      } else \"/$\" === data && depth++;\n    }\n    targetInstance = targetInstance.previousSibling;\n  }\n  return null;\n}\nfunction resolveSingletonInstance(type, props, rootContainerInstance) {\n  props = getOwnerDocumentFromRootContainer(rootContainerInstance);\n  switch (type) {\n    case \"html\":\n      type = props.documentElement;\n      if (!type) throw Error(formatProdErrorMessage(452));\n      return type;\n    case \"head\":\n      type = props.head;\n      if (!type) throw Error(formatProdErrorMessage(453));\n      return type;\n    case \"body\":\n      type = props.body;\n      if (!type) throw Error(formatProdErrorMessage(454));\n      return type;\n    default:\n      throw Error(formatProdErrorMessage(451));\n  }\n}\nfunction releaseSingletonInstance(instance) {\n  for (var attributes = instance.attributes; attributes.length; )\n    instance.removeAttributeNode(attributes[0]);\n  detachDeletedInstance(instance);\n}\nvar preloadPropsMap = new Map(),\n  preconnectsSet = new Set();\nfunction getHoistableRoot(container) {\n  return \"function\" === typeof container.getRootNode\n    ? container.getRootNode()\n    : 9 === container.nodeType\n      ? container\n      : container.ownerDocument;\n}\nvar previousDispatcher = ReactDOMSharedInternals.d;\nReactDOMSharedInternals.d = {\n  f: flushSyncWork,\n  r: requestFormReset,\n  D: prefetchDNS,\n  C: preconnect,\n  L: preload,\n  m: preloadModule,\n  X: preinitScript,\n  S: preinitStyle,\n  M: preinitModuleScript\n};\nfunction flushSyncWork() {\n  var previousWasRendering = previousDispatcher.f(),\n    wasRendering = flushSyncWork$1();\n  return previousWasRendering || wasRendering;\n}\nfunction requestFormReset(form) {\n  var formInst = getInstanceFromNode(form);\n  null !== formInst && 5 === formInst.tag && \"form\" === formInst.type\n    ? requestFormReset$1(formInst)\n    : previousDispatcher.r(form);\n}\nvar globalDocument = \"undefined\" === typeof document ? null : document;\nfunction preconnectAs(rel, href, crossOrigin) {\n  var ownerDocument = globalDocument;\n  if (ownerDocument && \"string\" === typeof href && href) {\n    var limitedEscapedHref =\n      escapeSelectorAttributeValueInsideDoubleQuotes(href);\n    limitedEscapedHref =\n      'link[rel=\"' + rel + '\"][href=\"' + limitedEscapedHref + '\"]';\n    \"string\" === typeof crossOrigin &&\n      (limitedEscapedHref += '[crossorigin=\"' + crossOrigin + '\"]');\n    preconnectsSet.has(limitedEscapedHref) ||\n      (preconnectsSet.add(limitedEscapedHref),\n      (rel = { rel: rel, crossOrigin: crossOrigin, href: href }),\n      null === ownerDocument.querySelector(limitedEscapedHref) &&\n        ((href = ownerDocument.createElement(\"link\")),\n        setInitialProperties(href, \"link\", rel),\n        markNodeAsHoistable(href),\n        ownerDocument.head.appendChild(href)));\n  }\n}\nfunction prefetchDNS(href) {\n  previousDispatcher.D(href);\n  preconnectAs(\"dns-prefetch\", href, null);\n}\nfunction preconnect(href, crossOrigin) {\n  previousDispatcher.C(href, crossOrigin);\n  preconnectAs(\"preconnect\", href, crossOrigin);\n}\nfunction preload(href, as, options) {\n  previousDispatcher.L(href, as, options);\n  var ownerDocument = globalDocument;\n  if (ownerDocument && href && as) {\n    var preloadSelector =\n      'link[rel=\"preload\"][as=\"' +\n      escapeSelectorAttributeValueInsideDoubleQuotes(as) +\n      '\"]';\n    \"image\" === as\n      ? options && options.imageSrcSet\n        ? ((preloadSelector +=\n            '[imagesrcset=\"' +\n            escapeSelectorAttributeValueInsideDoubleQuotes(\n              options.imageSrcSet\n            ) +\n            '\"]'),\n          \"string\" === typeof options.imageSizes &&\n            (preloadSelector +=\n              '[imagesizes=\"' +\n              escapeSelectorAttributeValueInsideDoubleQuotes(\n                options.imageSizes\n              ) +\n              '\"]'))\n        : (preloadSelector +=\n            '[href=\"' +\n            escapeSelectorAttributeValueInsideDoubleQuotes(href) +\n            '\"]')\n      : (preloadSelector +=\n          '[href=\"' +\n          escapeSelectorAttributeValueInsideDoubleQuotes(href) +\n          '\"]');\n    var key = preloadSelector;\n    switch (as) {\n      case \"style\":\n        key = getStyleKey(href);\n        break;\n      case \"script\":\n        key = getScriptKey(href);\n    }\n    preloadPropsMap.has(key) ||\n      ((href = assign(\n        {\n          rel: \"preload\",\n          href:\n            \"image\" === as && options && options.imageSrcSet ? void 0 : href,\n          as: as\n        },\n        options\n      )),\n      preloadPropsMap.set(key, href),\n      null !== ownerDocument.querySelector(preloadSelector) ||\n        (\"style\" === as &&\n          ownerDocument.querySelector(getStylesheetSelectorFromKey(key))) ||\n        (\"script\" === as &&\n          ownerDocument.querySelector(getScriptSelectorFromKey(key))) ||\n        ((as = ownerDocument.createElement(\"link\")),\n        setInitialProperties(as, \"link\", href),\n        markNodeAsHoistable(as),\n        ownerDocument.head.appendChild(as)));\n  }\n}\nfunction preloadModule(href, options) {\n  previousDispatcher.m(href, options);\n  var ownerDocument = globalDocument;\n  if (ownerDocument && href) {\n    var as = options && \"string\" === typeof options.as ? options.as : \"script\",\n      preloadSelector =\n        'link[rel=\"modulepreload\"][as=\"' +\n        escapeSelectorAttributeValueInsideDoubleQuotes(as) +\n        '\"][href=\"' +\n        escapeSelectorAttributeValueInsideDoubleQuotes(href) +\n        '\"]',\n      key = preloadSelector;\n    switch (as) {\n      case \"audioworklet\":\n      case \"paintworklet\":\n      case \"serviceworker\":\n      case \"sharedworker\":\n      case \"worker\":\n      case \"script\":\n        key = getScriptKey(href);\n    }\n    if (\n      !preloadPropsMap.has(key) &&\n      ((href = assign({ rel: \"modulepreload\", href: href }, options)),\n      preloadPropsMap.set(key, href),\n      null === ownerDocument.querySelector(preloadSelector))\n    ) {\n      switch (as) {\n        case \"audioworklet\":\n        case \"paintworklet\":\n        case \"serviceworker\":\n        case \"sharedworker\":\n        case \"worker\":\n        case \"script\":\n          if (ownerDocument.querySelector(getScriptSelectorFromKey(key)))\n            return;\n      }\n      as = ownerDocument.createElement(\"link\");\n      setInitialProperties(as, \"link\", href);\n      markNodeAsHoistable(as);\n      ownerDocument.head.appendChild(as);\n    }\n  }\n}\nfunction preinitStyle(href, precedence, options) {\n  previousDispatcher.S(href, precedence, options);\n  var ownerDocument = globalDocument;\n  if (ownerDocument && href) {\n    var styles = getResourcesFromRoot(ownerDocument).hoistableStyles,\n      key = getStyleKey(href);\n    precedence = precedence || \"default\";\n    var resource = styles.get(key);\n    if (!resource) {\n      var state = { loading: 0, preload: null };\n      if (\n        (resource = ownerDocument.querySelector(\n          getStylesheetSelectorFromKey(key)\n        ))\n      )\n        state.loading = 5;\n      else {\n        href = assign(\n          { rel: \"stylesheet\", href: href, \"data-precedence\": precedence },\n          options\n        );\n        (options = preloadPropsMap.get(key)) &&\n          adoptPreloadPropsForStylesheet(href, options);\n        var link = (resource = ownerDocument.createElement(\"link\"));\n        markNodeAsHoistable(link);\n        setInitialProperties(link, \"link\", href);\n        link._p = new Promise(function (resolve, reject) {\n          link.onload = resolve;\n          link.onerror = reject;\n        });\n        link.addEventListener(\"load\", function () {\n          state.loading |= 1;\n        });\n        link.addEventListener(\"error\", function () {\n          state.loading |= 2;\n        });\n        state.loading |= 4;\n        insertStylesheet(resource, precedence, ownerDocument);\n      }\n      resource = {\n        type: \"stylesheet\",\n        instance: resource,\n        count: 1,\n        state: state\n      };\n      styles.set(key, resource);\n    }\n  }\n}\nfunction preinitScript(src, options) {\n  previousDispatcher.X(src, options);\n  var ownerDocument = globalDocument;\n  if (ownerDocument && src) {\n    var scripts = getResourcesFromRoot(ownerDocument).hoistableScripts,\n      key = getScriptKey(src),\n      resource = scripts.get(key);\n    resource ||\n      ((resource = ownerDocument.querySelector(getScriptSelectorFromKey(key))),\n      resource ||\n        ((src = assign({ src: src, async: !0 }, options)),\n        (options = preloadPropsMap.get(key)) &&\n          adoptPreloadPropsForScript(src, options),\n        (resource = ownerDocument.createElement(\"script\")),\n        markNodeAsHoistable(resource),\n        setInitialProperties(resource, \"link\", src),\n        ownerDocument.head.appendChild(resource)),\n      (resource = {\n        type: \"script\",\n        instance: resource,\n        count: 1,\n        state: null\n      }),\n      scripts.set(key, resource));\n  }\n}\nfunction preinitModuleScript(src, options) {\n  previousDispatcher.M(src, options);\n  var ownerDocument = globalDocument;\n  if (ownerDocument && src) {\n    var scripts = getResourcesFromRoot(ownerDocument).hoistableScripts,\n      key = getScriptKey(src),\n      resource = scripts.get(key);\n    resource ||\n      ((resource = ownerDocument.querySelector(getScriptSelectorFromKey(key))),\n      resource ||\n        ((src = assign({ src: src, async: !0, type: \"module\" }, options)),\n        (options = preloadPropsMap.get(key)) &&\n          adoptPreloadPropsForScript(src, options),\n        (resource = ownerDocument.createElement(\"script\")),\n        markNodeAsHoistable(resource),\n        setInitialProperties(resource, \"link\", src),\n        ownerDocument.head.appendChild(resource)),\n      (resource = {\n        type: \"script\",\n        instance: resource,\n        count: 1,\n        state: null\n      }),\n      scripts.set(key, resource));\n  }\n}\nfunction getResource(type, currentProps, pendingProps, currentResource) {\n  var JSCompiler_inline_result = (JSCompiler_inline_result =\n    rootInstanceStackCursor.current)\n    ? getHoistableRoot(JSCompiler_inline_result)\n    : null;\n  if (!JSCompiler_inline_result) throw Error(formatProdErrorMessage(446));\n  switch (type) {\n    case \"meta\":\n    case \"title\":\n      return null;\n    case \"style\":\n      return \"string\" === typeof pendingProps.precedence &&\n        \"string\" === typeof pendingProps.href\n        ? ((currentProps = getStyleKey(pendingProps.href)),\n          (pendingProps = getResourcesFromRoot(\n            JSCompiler_inline_result\n          ).hoistableStyles),\n          (currentResource = pendingProps.get(currentProps)),\n          currentResource ||\n            ((currentResource = {\n              type: \"style\",\n              instance: null,\n              count: 0,\n              state: null\n            }),\n            pendingProps.set(currentProps, currentResource)),\n          currentResource)\n        : { type: \"void\", instance: null, count: 0, state: null };\n    case \"link\":\n      if (\n        \"stylesheet\" === pendingProps.rel &&\n        \"string\" === typeof pendingProps.href &&\n        \"string\" === typeof pendingProps.precedence\n      ) {\n        type = getStyleKey(pendingProps.href);\n        var styles$244 = getResourcesFromRoot(\n            JSCompiler_inline_result\n          ).hoistableStyles,\n          resource$245 = styles$244.get(type);\n        resource$245 ||\n          ((JSCompiler_inline_result =\n            JSCompiler_inline_result.ownerDocument || JSCompiler_inline_result),\n          (resource$245 = {\n            type: \"stylesheet\",\n            instance: null,\n            count: 0,\n            state: { loading: 0, preload: null }\n          }),\n          styles$244.set(type, resource$245),\n          (styles$244 = JSCompiler_inline_result.querySelector(\n            getStylesheetSelectorFromKey(type)\n          )) &&\n            !styles$244._p &&\n            ((resource$245.instance = styles$244),\n            (resource$245.state.loading = 5)),\n          preloadPropsMap.has(type) ||\n            ((pendingProps = {\n              rel: \"preload\",\n              as: \"style\",\n              href: pendingProps.href,\n              crossOrigin: pendingProps.crossOrigin,\n              integrity: pendingProps.integrity,\n              media: pendingProps.media,\n              hrefLang: pendingProps.hrefLang,\n              referrerPolicy: pendingProps.referrerPolicy\n            }),\n            preloadPropsMap.set(type, pendingProps),\n            styles$244 ||\n              preloadStylesheet(\n                JSCompiler_inline_result,\n                type,\n                pendingProps,\n                resource$245.state\n              )));\n        if (currentProps && null === currentResource)\n          throw Error(formatProdErrorMessage(528, \"\"));\n        return resource$245;\n      }\n      if (currentProps && null !== currentResource)\n        throw Error(formatProdErrorMessage(529, \"\"));\n      return null;\n    case \"script\":\n      return (\n        (currentProps = pendingProps.async),\n        (pendingProps = pendingProps.src),\n        \"string\" === typeof pendingProps &&\n        currentProps &&\n        \"function\" !== typeof currentProps &&\n        \"symbol\" !== typeof currentProps\n          ? ((currentProps = getScriptKey(pendingProps)),\n            (pendingProps = getResourcesFromRoot(\n              JSCompiler_inline_result\n            ).hoistableScripts),\n            (currentResource = pendingProps.get(currentProps)),\n            currentResource ||\n              ((currentResource = {\n                type: \"script\",\n                instance: null,\n                count: 0,\n                state: null\n              }),\n              pendingProps.set(currentProps, currentResource)),\n            currentResource)\n          : { type: \"void\", instance: null, count: 0, state: null }\n      );\n    default:\n      throw Error(formatProdErrorMessage(444, type));\n  }\n}\nfunction getStyleKey(href) {\n  return 'href=\"' + escapeSelectorAttributeValueInsideDoubleQuotes(href) + '\"';\n}\nfunction getStylesheetSelectorFromKey(key) {\n  return 'link[rel=\"stylesheet\"][' + key + \"]\";\n}\nfunction stylesheetPropsFromRawProps(rawProps) {\n  return assign({}, rawProps, {\n    \"data-precedence\": rawProps.precedence,\n    precedence: null\n  });\n}\nfunction preloadStylesheet(ownerDocument, key, preloadProps, state) {\n  ownerDocument.querySelector('link[rel=\"preload\"][as=\"style\"][' + key + \"]\")\n    ? (state.loading = 1)\n    : ((key = ownerDocument.createElement(\"link\")),\n      (state.preload = key),\n      key.addEventListener(\"load\", function () {\n        return (state.loading |= 1);\n      }),\n      key.addEventListener(\"error\", function () {\n        return (state.loading |= 2);\n      }),\n      setInitialProperties(key, \"link\", preloadProps),\n      markNodeAsHoistable(key),\n      ownerDocument.head.appendChild(key));\n}\nfunction getScriptKey(src) {\n  return '[src=\"' + escapeSelectorAttributeValueInsideDoubleQuotes(src) + '\"]';\n}\nfunction getScriptSelectorFromKey(key) {\n  return \"script[async]\" + key;\n}\nfunction acquireResource(hoistableRoot, resource, props) {\n  resource.count++;\n  if (null === resource.instance)\n    switch (resource.type) {\n      case \"style\":\n        var instance = hoistableRoot.querySelector(\n          'style[data-href~=\"' +\n            escapeSelectorAttributeValueInsideDoubleQuotes(props.href) +\n            '\"]'\n        );\n        if (instance)\n          return (\n            (resource.instance = instance),\n            markNodeAsHoistable(instance),\n            instance\n          );\n        var styleProps = assign({}, props, {\n          \"data-href\": props.href,\n          \"data-precedence\": props.precedence,\n          href: null,\n          precedence: null\n        });\n        instance = (hoistableRoot.ownerDocument || hoistableRoot).createElement(\n          \"style\"\n        );\n        markNodeAsHoistable(instance);\n        setInitialProperties(instance, \"style\", styleProps);\n        insertStylesheet(instance, props.precedence, hoistableRoot);\n        return (resource.instance = instance);\n      case \"stylesheet\":\n        styleProps = getStyleKey(props.href);\n        var instance$250 = hoistableRoot.querySelector(\n          getStylesheetSelectorFromKey(styleProps)\n        );\n        if (instance$250)\n          return (\n            (resource.state.loading |= 4),\n            (resource.instance = instance$250),\n            markNodeAsHoistable(instance$250),\n            instance$250\n          );\n        instance = stylesheetPropsFromRawProps(props);\n        (styleProps = preloadPropsMap.get(styleProps)) &&\n          adoptPreloadPropsForStylesheet(instance, styleProps);\n        instance$250 = (\n          hoistableRoot.ownerDocument || hoistableRoot\n        ).createElement(\"link\");\n        markNodeAsHoistable(instance$250);\n        var linkInstance = instance$250;\n        linkInstance._p = new Promise(function (resolve, reject) {\n          linkInstance.onload = resolve;\n          linkInstance.onerror = reject;\n        });\n        setInitialProperties(instance$250, \"link\", instance);\n        resource.state.loading |= 4;\n        insertStylesheet(instance$250, props.precedence, hoistableRoot);\n        return (resource.instance = instance$250);\n      case \"script\":\n        instance$250 = getScriptKey(props.src);\n        if (\n          (styleProps = hoistableRoot.querySelector(\n            getScriptSelectorFromKey(instance$250)\n          ))\n        )\n          return (\n            (resource.instance = styleProps),\n            markNodeAsHoistable(styleProps),\n            styleProps\n          );\n        instance = props;\n        if ((styleProps = preloadPropsMap.get(instance$250)))\n          (instance = assign({}, props)),\n            adoptPreloadPropsForScript(instance, styleProps);\n        hoistableRoot = hoistableRoot.ownerDocument || hoistableRoot;\n        styleProps = hoistableRoot.createElement(\"script\");\n        markNodeAsHoistable(styleProps);\n        setInitialProperties(styleProps, \"link\", instance);\n        hoistableRoot.head.appendChild(styleProps);\n        return (resource.instance = styleProps);\n      case \"void\":\n        return null;\n      default:\n        throw Error(formatProdErrorMessage(443, resource.type));\n    }\n  else\n    \"stylesheet\" === resource.type &&\n      0 === (resource.state.loading & 4) &&\n      ((instance = resource.instance),\n      (resource.state.loading |= 4),\n      insertStylesheet(instance, props.precedence, hoistableRoot));\n  return resource.instance;\n}\nfunction insertStylesheet(instance, precedence, root) {\n  for (\n    var nodes = root.querySelectorAll(\n        'link[rel=\"stylesheet\"][data-precedence],style[data-precedence]'\n      ),\n      last = nodes.length ? nodes[nodes.length - 1] : null,\n      prior = last,\n      i = 0;\n    i < nodes.length;\n    i++\n  ) {\n    var node = nodes[i];\n    if (node.dataset.precedence === precedence) prior = node;\n    else if (prior !== last) break;\n  }\n  prior\n    ? prior.parentNode.insertBefore(instance, prior.nextSibling)\n    : ((precedence = 9 === root.nodeType ? root.head : root),\n      precedence.insertBefore(instance, precedence.firstChild));\n}\nfunction adoptPreloadPropsForStylesheet(stylesheetProps, preloadProps) {\n  null == stylesheetProps.crossOrigin &&\n    (stylesheetProps.crossOrigin = preloadProps.crossOrigin);\n  null == stylesheetProps.referrerPolicy &&\n    (stylesheetProps.referrerPolicy = preloadProps.referrerPolicy);\n  null == stylesheetProps.title && (stylesheetProps.title = preloadProps.title);\n}\nfunction adoptPreloadPropsForScript(scriptProps, preloadProps) {\n  null == scriptProps.crossOrigin &&\n    (scriptProps.crossOrigin = preloadProps.crossOrigin);\n  null == scriptProps.referrerPolicy &&\n    (scriptProps.referrerPolicy = preloadProps.referrerPolicy);\n  null == scriptProps.integrity &&\n    (scriptProps.integrity = preloadProps.integrity);\n}\nvar tagCaches = null;\nfunction getHydratableHoistableCache(type, keyAttribute, ownerDocument) {\n  if (null === tagCaches) {\n    var cache = new Map();\n    var caches = (tagCaches = new Map());\n    caches.set(ownerDocument, cache);\n  } else\n    (caches = tagCaches),\n      (cache = caches.get(ownerDocument)),\n      cache || ((cache = new Map()), caches.set(ownerDocument, cache));\n  if (cache.has(type)) return cache;\n  cache.set(type, null);\n  ownerDocument = ownerDocument.getElementsByTagName(type);\n  for (caches = 0; caches < ownerDocument.length; caches++) {\n    var node = ownerDocument[caches];\n    if (\n      !(\n        node[internalHoistableMarker] ||\n        node[internalInstanceKey] ||\n        (\"link\" === type && \"stylesheet\" === node.getAttribute(\"rel\"))\n      ) &&\n      \"http://www.w3.org/2000/svg\" !== node.namespaceURI\n    ) {\n      var nodeKey = node.getAttribute(keyAttribute) || \"\";\n      nodeKey = type + nodeKey;\n      var existing = cache.get(nodeKey);\n      existing ? existing.push(node) : cache.set(nodeKey, [node]);\n    }\n  }\n  return cache;\n}\nfunction mountHoistable(hoistableRoot, type, instance) {\n  hoistableRoot = hoistableRoot.ownerDocument || hoistableRoot;\n  hoistableRoot.head.insertBefore(\n    instance,\n    \"title\" === type ? hoistableRoot.querySelector(\"head > title\") : null\n  );\n}\nfunction isHostHoistableType(type, props, hostContext) {\n  if (1 === hostContext || null != props.itemProp) return !1;\n  switch (type) {\n    case \"meta\":\n    case \"title\":\n      return !0;\n    case \"style\":\n      if (\n        \"string\" !== typeof props.precedence ||\n        \"string\" !== typeof props.href ||\n        \"\" === props.href\n      )\n        break;\n      return !0;\n    case \"link\":\n      if (\n        \"string\" !== typeof props.rel ||\n        \"string\" !== typeof props.href ||\n        \"\" === props.href ||\n        props.onLoad ||\n        props.onError\n      )\n        break;\n      switch (props.rel) {\n        case \"stylesheet\":\n          return (\n            (type = props.disabled),\n            \"string\" === typeof props.precedence && null == type\n          );\n        default:\n          return !0;\n      }\n    case \"script\":\n      if (\n        props.async &&\n        \"function\" !== typeof props.async &&\n        \"symbol\" !== typeof props.async &&\n        !props.onLoad &&\n        !props.onError &&\n        props.src &&\n        \"string\" === typeof props.src\n      )\n        return !0;\n  }\n  return !1;\n}\nfunction preloadResource(resource) {\n  return \"stylesheet\" === resource.type && 0 === (resource.state.loading & 3)\n    ? !1\n    : !0;\n}\nvar suspendedState = null;\nfunction noop() {}\nfunction suspendResource(hoistableRoot, resource, props) {\n  if (null === suspendedState) throw Error(formatProdErrorMessage(475));\n  var state = suspendedState;\n  if (\n    \"stylesheet\" === resource.type &&\n    (\"string\" !== typeof props.media ||\n      !1 !== matchMedia(props.media).matches) &&\n    0 === (resource.state.loading & 4)\n  ) {\n    if (null === resource.instance) {\n      var key = getStyleKey(props.href),\n        instance = hoistableRoot.querySelector(\n          getStylesheetSelectorFromKey(key)\n        );\n      if (instance) {\n        hoistableRoot = instance._p;\n        null !== hoistableRoot &&\n          \"object\" === typeof hoistableRoot &&\n          \"function\" === typeof hoistableRoot.then &&\n          (state.count++,\n          (state = onUnsuspend.bind(state)),\n          hoistableRoot.then(state, state));\n        resource.state.loading |= 4;\n        resource.instance = instance;\n        markNodeAsHoistable(instance);\n        return;\n      }\n      instance = hoistableRoot.ownerDocument || hoistableRoot;\n      props = stylesheetPropsFromRawProps(props);\n      (key = preloadPropsMap.get(key)) &&\n        adoptPreloadPropsForStylesheet(props, key);\n      instance = instance.createElement(\"link\");\n      markNodeAsHoistable(instance);\n      var linkInstance = instance;\n      linkInstance._p = new Promise(function (resolve, reject) {\n        linkInstance.onload = resolve;\n        linkInstance.onerror = reject;\n      });\n      setInitialProperties(instance, \"link\", props);\n      resource.instance = instance;\n    }\n    null === state.stylesheets && (state.stylesheets = new Map());\n    state.stylesheets.set(resource, hoistableRoot);\n    (hoistableRoot = resource.state.preload) &&\n      0 === (resource.state.loading & 3) &&\n      (state.count++,\n      (resource = onUnsuspend.bind(state)),\n      hoistableRoot.addEventListener(\"load\", resource),\n      hoistableRoot.addEventListener(\"error\", resource));\n  }\n}\nfunction waitForCommitToBeReady() {\n  if (null === suspendedState) throw Error(formatProdErrorMessage(475));\n  var state = suspendedState;\n  state.stylesheets &&\n    0 === state.count &&\n    insertSuspendedStylesheets(state, state.stylesheets);\n  return 0 < state.count\n    ? function (commit) {\n        var stylesheetTimer = setTimeout(function () {\n          state.stylesheets &&\n            insertSuspendedStylesheets(state, state.stylesheets);\n          if (state.unsuspend) {\n            var unsuspend = state.unsuspend;\n            state.unsuspend = null;\n            unsuspend();\n          }\n        }, 6e4);\n        state.unsuspend = commit;\n        return function () {\n          state.unsuspend = null;\n          clearTimeout(stylesheetTimer);\n        };\n      }\n    : null;\n}\nfunction onUnsuspend() {\n  this.count--;\n  if (0 === this.count)\n    if (this.stylesheets) insertSuspendedStylesheets(this, this.stylesheets);\n    else if (this.unsuspend) {\n      var unsuspend = this.unsuspend;\n      this.unsuspend = null;\n      unsuspend();\n    }\n}\nvar precedencesByRoot = null;\nfunction insertSuspendedStylesheets(state, resources) {\n  state.stylesheets = null;\n  null !== state.unsuspend &&\n    (state.count++,\n    (precedencesByRoot = new Map()),\n    resources.forEach(insertStylesheetIntoRoot, state),\n    (precedencesByRoot = null),\n    onUnsuspend.call(state));\n}\nfunction insertStylesheetIntoRoot(root, resource) {\n  if (!(resource.state.loading & 4)) {\n    var precedences = precedencesByRoot.get(root);\n    if (precedences) var last = precedences.get(null);\n    else {\n      precedences = new Map();\n      precedencesByRoot.set(root, precedences);\n      for (\n        var nodes = root.querySelectorAll(\n            \"link[data-precedence],style[data-precedence]\"\n          ),\n          i = 0;\n        i < nodes.length;\n        i++\n      ) {\n        var node = nodes[i];\n        if (\n          \"LINK\" === node.nodeName ||\n          \"not all\" !== node.getAttribute(\"media\")\n        )\n          precedences.set(node.dataset.precedence, node), (last = node);\n      }\n      last && precedences.set(null, last);\n    }\n    nodes = resource.instance;\n    node = nodes.getAttribute(\"data-precedence\");\n    i = precedences.get(node) || last;\n    i === last && precedences.set(null, nodes);\n    precedences.set(node, nodes);\n    this.count++;\n    last = onUnsuspend.bind(this);\n    nodes.addEventListener(\"load\", last);\n    nodes.addEventListener(\"error\", last);\n    i\n      ? i.parentNode.insertBefore(nodes, i.nextSibling)\n      : ((root = 9 === root.nodeType ? root.head : root),\n        root.insertBefore(nodes, root.firstChild));\n    resource.state.loading |= 4;\n  }\n}\nvar HostTransitionContext = {\n  $$typeof: REACT_CONTEXT_TYPE,\n  Provider: null,\n  Consumer: null,\n  _currentValue: sharedNotPendingObject,\n  _currentValue2: sharedNotPendingObject,\n  _threadCount: 0\n};\nfunction FiberRootNode(\n  containerInfo,\n  tag,\n  hydrate,\n  identifierPrefix,\n  onUncaughtError,\n  onCaughtError,\n  onRecoverableError,\n  formState\n) {\n  this.tag = 1;\n  this.containerInfo = containerInfo;\n  this.pingCache = this.current = this.pendingChildren = null;\n  this.timeoutHandle = -1;\n  this.callbackNode =\n    this.next =\n    this.pendingContext =\n    this.context =\n    this.cancelPendingCommit =\n      null;\n  this.callbackPriority = 0;\n  this.expirationTimes = createLaneMap(-1);\n  this.entangledLanes =\n    this.shellSuspendCounter =\n    this.errorRecoveryDisabledLanes =\n    this.expiredLanes =\n    this.warmLanes =\n    this.pingedLanes =\n    this.suspendedLanes =\n    this.pendingLanes =\n      0;\n  this.entanglements = createLaneMap(0);\n  this.hiddenUpdates = createLaneMap(null);\n  this.identifierPrefix = identifierPrefix;\n  this.onUncaughtError = onUncaughtError;\n  this.onCaughtError = onCaughtError;\n  this.onRecoverableError = onRecoverableError;\n  this.pooledCache = null;\n  this.pooledCacheLanes = 0;\n  this.formState = formState;\n  this.incompleteTransitions = new Map();\n}\nfunction createFiberRoot(\n  containerInfo,\n  tag,\n  hydrate,\n  initialChildren,\n  hydrationCallbacks,\n  isStrictMode,\n  identifierPrefix,\n  onUncaughtError,\n  onCaughtError,\n  onRecoverableError,\n  transitionCallbacks,\n  formState\n) {\n  containerInfo = new FiberRootNode(\n    containerInfo,\n    tag,\n    hydrate,\n    identifierPrefix,\n    onUncaughtError,\n    onCaughtError,\n    onRecoverableError,\n    formState\n  );\n  tag = 1;\n  !0 === isStrictMode && (tag |= 24);\n  isStrictMode = createFiberImplClass(3, null, null, tag);\n  containerInfo.current = isStrictMode;\n  isStrictMode.stateNode = containerInfo;\n  tag = createCache();\n  tag.refCount++;\n  containerInfo.pooledCache = tag;\n  tag.refCount++;\n  isStrictMode.memoizedState = {\n    element: initialChildren,\n    isDehydrated: hydrate,\n    cache: tag\n  };\n  initializeUpdateQueue(isStrictMode);\n  return containerInfo;\n}\nfunction getContextForSubtree(parentComponent) {\n  if (!parentComponent) return emptyContextObject;\n  parentComponent = emptyContextObject;\n  return parentComponent;\n}\nfunction updateContainerImpl(\n  rootFiber,\n  lane,\n  element,\n  container,\n  parentComponent,\n  callback\n) {\n  parentComponent = getContextForSubtree(parentComponent);\n  null === container.context\n    ? (container.context = parentComponent)\n    : (container.pendingContext = parentComponent);\n  container = createUpdate(lane);\n  container.payload = { element: element };\n  callback = void 0 === callback ? null : callback;\n  null !== callback && (container.callback = callback);\n  element = enqueueUpdate(rootFiber, container, lane);\n  null !== element &&\n    (scheduleUpdateOnFiber(element, rootFiber, lane),\n    entangleTransitions(element, rootFiber, lane));\n}\nfunction markRetryLaneImpl(fiber, retryLane) {\n  fiber = fiber.memoizedState;\n  if (null !== fiber && null !== fiber.dehydrated) {\n    var a = fiber.retryLane;\n    fiber.retryLane = 0 !== a && a < retryLane ? a : retryLane;\n  }\n}\nfunction markRetryLaneIfNotHydrated(fiber, retryLane) {\n  markRetryLaneImpl(fiber, retryLane);\n  (fiber = fiber.alternate) && markRetryLaneImpl(fiber, retryLane);\n}\nfunction attemptContinuousHydration(fiber) {\n  if (13 === fiber.tag) {\n    var root = enqueueConcurrentRenderForLane(fiber, 67108864);\n    null !== root && scheduleUpdateOnFiber(root, fiber, 67108864);\n    markRetryLaneIfNotHydrated(fiber, 67108864);\n  }\n}\nvar _enabled = !0;\nfunction dispatchDiscreteEvent(\n  domEventName,\n  eventSystemFlags,\n  container,\n  nativeEvent\n) {\n  var prevTransition = ReactSharedInternals.T;\n  ReactSharedInternals.T = null;\n  var previousPriority = ReactDOMSharedInternals.p;\n  try {\n    (ReactDOMSharedInternals.p = 2),\n      dispatchEvent(domEventName, eventSystemFlags, container, nativeEvent);\n  } finally {\n    (ReactDOMSharedInternals.p = previousPriority),\n      (ReactSharedInternals.T = prevTransition);\n  }\n}\nfunction dispatchContinuousEvent(\n  domEventName,\n  eventSystemFlags,\n  container,\n  nativeEvent\n) {\n  var prevTransition = ReactSharedInternals.T;\n  ReactSharedInternals.T = null;\n  var previousPriority = ReactDOMSharedInternals.p;\n  try {\n    (ReactDOMSharedInternals.p = 8),\n      dispatchEvent(domEventName, eventSystemFlags, container, nativeEvent);\n  } finally {\n    (ReactDOMSharedInternals.p = previousPriority),\n      (ReactSharedInternals.T = prevTransition);\n  }\n}\nfunction dispatchEvent(\n  domEventName,\n  eventSystemFlags,\n  targetContainer,\n  nativeEvent\n) {\n  if (_enabled) {\n    var blockedOn = findInstanceBlockingEvent(nativeEvent);\n    if (null === blockedOn)\n      dispatchEventForPluginEventSystem(\n        domEventName,\n        eventSystemFlags,\n        nativeEvent,\n        return_targetInst,\n        targetContainer\n      ),\n        clearIfContinuousEvent(domEventName, nativeEvent);\n    else if (\n      queueIfContinuousEvent(\n        blockedOn,\n        domEventName,\n        eventSystemFlags,\n        targetContainer,\n        nativeEvent\n      )\n    )\n      nativeEvent.stopPropagation();\n    else if (\n      (clearIfContinuousEvent(domEventName, nativeEvent),\n      eventSystemFlags & 4 &&\n        -1 < discreteReplayableEvents.indexOf(domEventName))\n    ) {\n      for (; null !== blockedOn; ) {\n        var fiber = getInstanceFromNode(blockedOn);\n        if (null !== fiber)\n          switch (fiber.tag) {\n            case 3:\n              fiber = fiber.stateNode;\n              if (fiber.current.memoizedState.isDehydrated) {\n                var lanes = getHighestPriorityLanes(fiber.pendingLanes);\n                if (0 !== lanes) {\n                  var root = fiber;\n                  root.pendingLanes |= 2;\n                  for (root.entangledLanes |= 2; lanes; ) {\n                    var lane = 1 << (31 - clz32(lanes));\n                    root.entanglements[1] |= lane;\n                    lanes &= ~lane;\n                  }\n                  ensureRootIsScheduled(fiber);\n                  0 === (executionContext & 6) &&\n                    ((workInProgressRootRenderTargetTime = now() + 500),\n                    flushSyncWorkAcrossRoots_impl(0, !1));\n                }\n              }\n              break;\n            case 13:\n              (root = enqueueConcurrentRenderForLane(fiber, 2)),\n                null !== root && scheduleUpdateOnFiber(root, fiber, 2),\n                flushSyncWork$1(),\n                markRetryLaneIfNotHydrated(fiber, 2);\n          }\n        fiber = findInstanceBlockingEvent(nativeEvent);\n        null === fiber &&\n          dispatchEventForPluginEventSystem(\n            domEventName,\n            eventSystemFlags,\n            nativeEvent,\n            return_targetInst,\n            targetContainer\n          );\n        if (fiber === blockedOn) break;\n        blockedOn = fiber;\n      }\n      null !== blockedOn && nativeEvent.stopPropagation();\n    } else\n      dispatchEventForPluginEventSystem(\n        domEventName,\n        eventSystemFlags,\n        nativeEvent,\n        null,\n        targetContainer\n      );\n  }\n}\nfunction findInstanceBlockingEvent(nativeEvent) {\n  nativeEvent = getEventTarget(nativeEvent);\n  return findInstanceBlockingTarget(nativeEvent);\n}\nvar return_targetInst = null;\nfunction findInstanceBlockingTarget(targetNode) {\n  return_targetInst = null;\n  targetNode = getClosestInstanceFromNode(targetNode);\n  if (null !== targetNode) {\n    var nearestMounted = getNearestMountedFiber(targetNode);\n    if (null === nearestMounted) targetNode = null;\n    else {\n      var tag = nearestMounted.tag;\n      if (13 === tag) {\n        targetNode = getSuspenseInstanceFromFiber(nearestMounted);\n        if (null !== targetNode) return targetNode;\n        targetNode = null;\n      } else if (3 === tag) {\n        if (nearestMounted.stateNode.current.memoizedState.isDehydrated)\n          return 3 === nearestMounted.tag\n            ? nearestMounted.stateNode.containerInfo\n            : null;\n        targetNode = null;\n      } else nearestMounted !== targetNode && (targetNode = null);\n    }\n  }\n  return_targetInst = targetNode;\n  return null;\n}\nfunction getEventPriority(domEventName) {\n  switch (domEventName) {\n    case \"beforetoggle\":\n    case \"cancel\":\n    case \"click\":\n    case \"close\":\n    case \"contextmenu\":\n    case \"copy\":\n    case \"cut\":\n    case \"auxclick\":\n    case \"dblclick\":\n    case \"dragend\":\n    case \"dragstart\":\n    case \"drop\":\n    case \"focusin\":\n    case \"focusout\":\n    case \"input\":\n    case \"invalid\":\n    case \"keydown\":\n    case \"keypress\":\n    case \"keyup\":\n    case \"mousedown\":\n    case \"mouseup\":\n    case \"paste\":\n    case \"pause\":\n    case \"play\":\n    case \"pointercancel\":\n    case \"pointerdown\":\n    case \"pointerup\":\n    case \"ratechange\":\n    case \"reset\":\n    case \"resize\":\n    case \"seeked\":\n    case \"submit\":\n    case \"toggle\":\n    case \"touchcancel\":\n    case \"touchend\":\n    case \"touchstart\":\n    case \"volumechange\":\n    case \"change\":\n    case \"selectionchange\":\n    case \"textInput\":\n    case \"compositionstart\":\n    case \"compositionend\":\n    case \"compositionupdate\":\n    case \"beforeblur\":\n    case \"afterblur\":\n    case \"beforeinput\":\n    case \"blur\":\n    case \"fullscreenchange\":\n    case \"focus\":\n    case \"hashchange\":\n    case \"popstate\":\n    case \"select\":\n    case \"selectstart\":\n      return 2;\n    case \"drag\":\n    case \"dragenter\":\n    case \"dragexit\":\n    case \"dragleave\":\n    case \"dragover\":\n    case \"mousemove\":\n    case \"mouseout\":\n    case \"mouseover\":\n    case \"pointermove\":\n    case \"pointerout\":\n    case \"pointerover\":\n    case \"scroll\":\n    case \"touchmove\":\n    case \"wheel\":\n    case \"mouseenter\":\n    case \"mouseleave\":\n    case \"pointerenter\":\n    case \"pointerleave\":\n      return 8;\n    case \"message\":\n      switch (getCurrentPriorityLevel()) {\n        case ImmediatePriority:\n          return 2;\n        case UserBlockingPriority:\n          return 8;\n        case NormalPriority$1:\n        case LowPriority:\n          return 32;\n        case IdlePriority:\n          return 268435456;\n        default:\n          return 32;\n      }\n    default:\n      return 32;\n  }\n}\nvar hasScheduledReplayAttempt = !1,\n  queuedFocus = null,\n  queuedDrag = null,\n  queuedMouse = null,\n  queuedPointers = new Map(),\n  queuedPointerCaptures = new Map(),\n  queuedExplicitHydrationTargets = [],\n  discreteReplayableEvents =\n    \"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset\".split(\n      \" \"\n    );\nfunction clearIfContinuousEvent(domEventName, nativeEvent) {\n  switch (domEventName) {\n    case \"focusin\":\n    case \"focusout\":\n      queuedFocus = null;\n      break;\n    case \"dragenter\":\n    case \"dragleave\":\n      queuedDrag = null;\n      break;\n    case \"mouseover\":\n    case \"mouseout\":\n      queuedMouse = null;\n      break;\n    case \"pointerover\":\n    case \"pointerout\":\n      queuedPointers.delete(nativeEvent.pointerId);\n      break;\n    case \"gotpointercapture\":\n    case \"lostpointercapture\":\n      queuedPointerCaptures.delete(nativeEvent.pointerId);\n  }\n}\nfunction accumulateOrCreateContinuousQueuedReplayableEvent(\n  existingQueuedEvent,\n  blockedOn,\n  domEventName,\n  eventSystemFlags,\n  targetContainer,\n  nativeEvent\n) {\n  if (\n    null === existingQueuedEvent ||\n    existingQueuedEvent.nativeEvent !== nativeEvent\n  )\n    return (\n      (existingQueuedEvent = {\n        blockedOn: blockedOn,\n        domEventName: domEventName,\n        eventSystemFlags: eventSystemFlags,\n        nativeEvent: nativeEvent,\n        targetContainers: [targetContainer]\n      }),\n      null !== blockedOn &&\n        ((blockedOn = getInstanceFromNode(blockedOn)),\n        null !== blockedOn && attemptContinuousHydration(blockedOn)),\n      existingQueuedEvent\n    );\n  existingQueuedEvent.eventSystemFlags |= eventSystemFlags;\n  blockedOn = existingQueuedEvent.targetContainers;\n  null !== targetContainer &&\n    -1 === blockedOn.indexOf(targetContainer) &&\n    blockedOn.push(targetContainer);\n  return existingQueuedEvent;\n}\nfunction queueIfContinuousEvent(\n  blockedOn,\n  domEventName,\n  eventSystemFlags,\n  targetContainer,\n  nativeEvent\n) {\n  switch (domEventName) {\n    case \"focusin\":\n      return (\n        (queuedFocus = accumulateOrCreateContinuousQueuedReplayableEvent(\n          queuedFocus,\n          blockedOn,\n          domEventName,\n          eventSystemFlags,\n          targetContainer,\n          nativeEvent\n        )),\n        !0\n      );\n    case \"dragenter\":\n      return (\n        (queuedDrag = accumulateOrCreateContinuousQueuedReplayableEvent(\n          queuedDrag,\n          blockedOn,\n          domEventName,\n          eventSystemFlags,\n          targetContainer,\n          nativeEvent\n        )),\n        !0\n      );\n    case \"mouseover\":\n      return (\n        (queuedMouse = accumulateOrCreateContinuousQueuedReplayableEvent(\n          queuedMouse,\n          blockedOn,\n          domEventName,\n          eventSystemFlags,\n          targetContainer,\n          nativeEvent\n        )),\n        !0\n      );\n    case \"pointerover\":\n      var pointerId = nativeEvent.pointerId;\n      queuedPointers.set(\n        pointerId,\n        accumulateOrCreateContinuousQueuedReplayableEvent(\n          queuedPointers.get(pointerId) || null,\n          blockedOn,\n          domEventName,\n          eventSystemFlags,\n          targetContainer,\n          nativeEvent\n        )\n      );\n      return !0;\n    case \"gotpointercapture\":\n      return (\n        (pointerId = nativeEvent.pointerId),\n        queuedPointerCaptures.set(\n          pointerId,\n          accumulateOrCreateContinuousQueuedReplayableEvent(\n            queuedPointerCaptures.get(pointerId) || null,\n            blockedOn,\n            domEventName,\n            eventSystemFlags,\n            targetContainer,\n            nativeEvent\n          )\n        ),\n        !0\n      );\n  }\n  return !1;\n}\nfunction attemptExplicitHydrationTarget(queuedTarget) {\n  var targetInst = getClosestInstanceFromNode(queuedTarget.target);\n  if (null !== targetInst) {\n    var nearestMounted = getNearestMountedFiber(targetInst);\n    if (null !== nearestMounted)\n      if (((targetInst = nearestMounted.tag), 13 === targetInst)) {\n        if (\n          ((targetInst = getSuspenseInstanceFromFiber(nearestMounted)),\n          null !== targetInst)\n        ) {\n          queuedTarget.blockedOn = targetInst;\n          runWithPriority(queuedTarget.priority, function () {\n            if (13 === nearestMounted.tag) {\n              var lane = requestUpdateLane();\n              lane = getBumpedLaneForHydrationByLane(lane);\n              var root = enqueueConcurrentRenderForLane(nearestMounted, lane);\n              null !== root &&\n                scheduleUpdateOnFiber(root, nearestMounted, lane);\n              markRetryLaneIfNotHydrated(nearestMounted, lane);\n            }\n          });\n          return;\n        }\n      } else if (\n        3 === targetInst &&\n        nearestMounted.stateNode.current.memoizedState.isDehydrated\n      ) {\n        queuedTarget.blockedOn =\n          3 === nearestMounted.tag\n            ? nearestMounted.stateNode.containerInfo\n            : null;\n        return;\n      }\n  }\n  queuedTarget.blockedOn = null;\n}\nfunction attemptReplayContinuousQueuedEvent(queuedEvent) {\n  if (null !== queuedEvent.blockedOn) return !1;\n  for (\n    var targetContainers = queuedEvent.targetContainers;\n    0 < targetContainers.length;\n\n  ) {\n    var nextBlockedOn = findInstanceBlockingEvent(queuedEvent.nativeEvent);\n    if (null === nextBlockedOn) {\n      nextBlockedOn = queuedEvent.nativeEvent;\n      var nativeEventClone = new nextBlockedOn.constructor(\n        nextBlockedOn.type,\n        nextBlockedOn\n      );\n      currentReplayingEvent = nativeEventClone;\n      nextBlockedOn.target.dispatchEvent(nativeEventClone);\n      currentReplayingEvent = null;\n    } else\n      return (\n        (targetContainers = getInstanceFromNode(nextBlockedOn)),\n        null !== targetContainers &&\n          attemptContinuousHydration(targetContainers),\n        (queuedEvent.blockedOn = nextBlockedOn),\n        !1\n      );\n    targetContainers.shift();\n  }\n  return !0;\n}\nfunction attemptReplayContinuousQueuedEventInMap(queuedEvent, key, map) {\n  attemptReplayContinuousQueuedEvent(queuedEvent) && map.delete(key);\n}\nfunction replayUnblockedEvents() {\n  hasScheduledReplayAttempt = !1;\n  null !== queuedFocus &&\n    attemptReplayContinuousQueuedEvent(queuedFocus) &&\n    (queuedFocus = null);\n  null !== queuedDrag &&\n    attemptReplayContinuousQueuedEvent(queuedDrag) &&\n    (queuedDrag = null);\n  null !== queuedMouse &&\n    attemptReplayContinuousQueuedEvent(queuedMouse) &&\n    (queuedMouse = null);\n  queuedPointers.forEach(attemptReplayContinuousQueuedEventInMap);\n  queuedPointerCaptures.forEach(attemptReplayContinuousQueuedEventInMap);\n}\nfunction scheduleCallbackIfUnblocked(queuedEvent, unblocked) {\n  queuedEvent.blockedOn === unblocked &&\n    ((queuedEvent.blockedOn = null),\n    hasScheduledReplayAttempt ||\n      ((hasScheduledReplayAttempt = !0),\n      Scheduler.unstable_scheduleCallback(\n        Scheduler.unstable_NormalPriority,\n        replayUnblockedEvents\n      )));\n}\nvar lastScheduledReplayQueue = null;\nfunction scheduleReplayQueueIfNeeded(formReplayingQueue) {\n  lastScheduledReplayQueue !== formReplayingQueue &&\n    ((lastScheduledReplayQueue = formReplayingQueue),\n    Scheduler.unstable_scheduleCallback(\n      Scheduler.unstable_NormalPriority,\n      function () {\n        lastScheduledReplayQueue === formReplayingQueue &&\n          (lastScheduledReplayQueue = null);\n        for (var i = 0; i < formReplayingQueue.length; i += 3) {\n          var form = formReplayingQueue[i],\n            submitterOrAction = formReplayingQueue[i + 1],\n            formData = formReplayingQueue[i + 2];\n          if (\"function\" !== typeof submitterOrAction)\n            if (null === findInstanceBlockingTarget(submitterOrAction || form))\n              continue;\n            else break;\n          var formInst = getInstanceFromNode(form);\n          null !== formInst &&\n            (formReplayingQueue.splice(i, 3),\n            (i -= 3),\n            startHostTransition(\n              formInst,\n              {\n                pending: !0,\n                data: formData,\n                method: form.method,\n                action: submitterOrAction\n              },\n              submitterOrAction,\n              formData\n            ));\n        }\n      }\n    ));\n}\nfunction retryIfBlockedOn(unblocked) {\n  function unblock(queuedEvent) {\n    return scheduleCallbackIfUnblocked(queuedEvent, unblocked);\n  }\n  null !== queuedFocus && scheduleCallbackIfUnblocked(queuedFocus, unblocked);\n  null !== queuedDrag && scheduleCallbackIfUnblocked(queuedDrag, unblocked);\n  null !== queuedMouse && scheduleCallbackIfUnblocked(queuedMouse, unblocked);\n  queuedPointers.forEach(unblock);\n  queuedPointerCaptures.forEach(unblock);\n  for (var i = 0; i < queuedExplicitHydrationTargets.length; i++) {\n    var queuedTarget = queuedExplicitHydrationTargets[i];\n    queuedTarget.blockedOn === unblocked && (queuedTarget.blockedOn = null);\n  }\n  for (\n    ;\n    0 < queuedExplicitHydrationTargets.length &&\n    ((i = queuedExplicitHydrationTargets[0]), null === i.blockedOn);\n\n  )\n    attemptExplicitHydrationTarget(i),\n      null === i.blockedOn && queuedExplicitHydrationTargets.shift();\n  i = (unblocked.ownerDocument || unblocked).$$reactFormReplay;\n  if (null != i)\n    for (queuedTarget = 0; queuedTarget < i.length; queuedTarget += 3) {\n      var form = i[queuedTarget],\n        submitterOrAction = i[queuedTarget + 1],\n        formProps = form[internalPropsKey] || null;\n      if (\"function\" === typeof submitterOrAction)\n        formProps || scheduleReplayQueueIfNeeded(i);\n      else if (formProps) {\n        var action = null;\n        if (submitterOrAction && submitterOrAction.hasAttribute(\"formAction\"))\n          if (\n            ((form = submitterOrAction),\n            (formProps = submitterOrAction[internalPropsKey] || null))\n          )\n            action = formProps.formAction;\n          else {\n            if (null !== findInstanceBlockingTarget(form)) continue;\n          }\n        else action = formProps.action;\n        \"function\" === typeof action\n          ? (i[queuedTarget + 1] = action)\n          : (i.splice(queuedTarget, 3), (queuedTarget -= 3));\n        scheduleReplayQueueIfNeeded(i);\n      }\n    }\n}\nfunction ReactDOMRoot(internalRoot) {\n  this._internalRoot = internalRoot;\n}\nReactDOMHydrationRoot.prototype.render = ReactDOMRoot.prototype.render =\n  function (children) {\n    var root = this._internalRoot;\n    if (null === root) throw Error(formatProdErrorMessage(409));\n    var current = root.current,\n      lane = requestUpdateLane();\n    updateContainerImpl(current, lane, children, root, null, null);\n  };\nReactDOMHydrationRoot.prototype.unmount = ReactDOMRoot.prototype.unmount =\n  function () {\n    var root = this._internalRoot;\n    if (null !== root) {\n      this._internalRoot = null;\n      var container = root.containerInfo;\n      updateContainerImpl(root.current, 2, null, root, null, null);\n      flushSyncWork$1();\n      container[internalContainerInstanceKey] = null;\n    }\n  };\nfunction ReactDOMHydrationRoot(internalRoot) {\n  this._internalRoot = internalRoot;\n}\nReactDOMHydrationRoot.prototype.unstable_scheduleHydration = function (target) {\n  if (target) {\n    var updatePriority = resolveUpdatePriority();\n    target = { blockedOn: null, target: target, priority: updatePriority };\n    for (\n      var i = 0;\n      i < queuedExplicitHydrationTargets.length &&\n      0 !== updatePriority &&\n      updatePriority < queuedExplicitHydrationTargets[i].priority;\n      i++\n    );\n    queuedExplicitHydrationTargets.splice(i, 0, target);\n    0 === i && attemptExplicitHydrationTarget(target);\n  }\n};\nvar isomorphicReactPackageVersion$jscomp$inline_1785 = React.version;\nif (\n  \"19.1.1\" !==\n  isomorphicReactPackageVersion$jscomp$inline_1785\n)\n  throw Error(\n    formatProdErrorMessage(\n      527,\n      isomorphicReactPackageVersion$jscomp$inline_1785,\n      \"19.1.1\"\n    )\n  );\nReactDOMSharedInternals.findDOMNode = function (componentOrElement) {\n  var fiber = componentOrElement._reactInternals;\n  if (void 0 === fiber) {\n    if (\"function\" === typeof componentOrElement.render)\n      throw Error(formatProdErrorMessage(188));\n    componentOrElement = Object.keys(componentOrElement).join(\",\");\n    throw Error(formatProdErrorMessage(268, componentOrElement));\n  }\n  componentOrElement = findCurrentFiberUsingSlowPath(fiber);\n  componentOrElement =\n    null !== componentOrElement\n      ? findCurrentHostFiberImpl(componentOrElement)\n      : null;\n  componentOrElement =\n    null === componentOrElement ? null : componentOrElement.stateNode;\n  return componentOrElement;\n};\nvar internals$jscomp$inline_2256 = {\n  bundleType: 0,\n  version: \"19.1.1\",\n  rendererPackageName: \"react-dom\",\n  currentDispatcherRef: ReactSharedInternals,\n  reconcilerVersion: \"19.1.1\"\n};\nif (\"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {\n  var hook$jscomp$inline_2257 = __REACT_DEVTOOLS_GLOBAL_HOOK__;\n  if (\n    !hook$jscomp$inline_2257.isDisabled &&\n    hook$jscomp$inline_2257.supportsFiber\n  )\n    try {\n      (rendererID = hook$jscomp$inline_2257.inject(\n        internals$jscomp$inline_2256\n      )),\n        (injectedHook = hook$jscomp$inline_2257);\n    } catch (err) {}\n}\nexports.createRoot = function (container, options) {\n  if (!isValidContainer(container)) throw Error(formatProdErrorMessage(299));\n  var isStrictMode = !1,\n    identifierPrefix = \"\",\n    onUncaughtError = defaultOnUncaughtError,\n    onCaughtError = defaultOnCaughtError,\n    onRecoverableError = defaultOnRecoverableError,\n    transitionCallbacks = null;\n  null !== options &&\n    void 0 !== options &&\n    (!0 === options.unstable_strictMode && (isStrictMode = !0),\n    void 0 !== options.identifierPrefix &&\n      (identifierPrefix = options.identifierPrefix),\n    void 0 !== options.onUncaughtError &&\n      (onUncaughtError = options.onUncaughtError),\n    void 0 !== options.onCaughtError && (onCaughtError = options.onCaughtError),\n    void 0 !== options.onRecoverableError &&\n      (onRecoverableError = options.onRecoverableError),\n    void 0 !== options.unstable_transitionCallbacks &&\n      (transitionCallbacks = options.unstable_transitionCallbacks));\n  options = createFiberRoot(\n    container,\n    1,\n    !1,\n    null,\n    null,\n    isStrictMode,\n    identifierPrefix,\n    onUncaughtError,\n    onCaughtError,\n    onRecoverableError,\n    transitionCallbacks,\n    null\n  );\n  container[internalContainerInstanceKey] = options.current;\n  listenToAllSupportedEvents(container);\n  return new ReactDOMRoot(options);\n};\nexports.hydrateRoot = function (container, initialChildren, options) {\n  if (!isValidContainer(container)) throw Error(formatProdErrorMessage(299));\n  var isStrictMode = !1,\n    identifierPrefix = \"\",\n    onUncaughtError = defaultOnUncaughtError,\n    onCaughtError = defaultOnCaughtError,\n    onRecoverableError = defaultOnRecoverableError,\n    transitionCallbacks = null,\n    formState = null;\n  null !== options &&\n    void 0 !== options &&\n    (!0 === options.unstable_strictMode && (isStrictMode = !0),\n    void 0 !== options.identifierPrefix &&\n      (identifierPrefix = options.identifierPrefix),\n    void 0 !== options.onUncaughtError &&\n      (onUncaughtError = options.onUncaughtError),\n    void 0 !== options.onCaughtError && (onCaughtError = options.onCaughtError),\n    void 0 !== options.onRecoverableError &&\n      (onRecoverableError = options.onRecoverableError),\n    void 0 !== options.unstable_transitionCallbacks &&\n      (transitionCallbacks = options.unstable_transitionCallbacks),\n    void 0 !== options.formState && (formState = options.formState));\n  initialChildren = createFiberRoot(\n    container,\n    1,\n    !0,\n    initialChildren,\n    null != options ? options : null,\n    isStrictMode,\n    identifierPrefix,\n    onUncaughtError,\n    onCaughtError,\n    onRecoverableError,\n    transitionCallbacks,\n    formState\n  );\n  initialChildren.context = getContextForSubtree(null);\n  options = initialChildren.current;\n  isStrictMode = requestUpdateLane();\n  isStrictMode = getBumpedLaneForHydrationByLane(isStrictMode);\n  identifierPrefix = createUpdate(isStrictMode);\n  identifierPrefix.callback = null;\n  enqueueUpdate(options, identifierPrefix, isStrictMode);\n  options = isStrictMode;\n  initialChildren.current.lanes = options;\n  markRootUpdated$1(initialChildren, options);\n  ensureRootIsScheduled(initialChildren);\n  container[internalContainerInstanceKey] = initialChildren.current;\n  listenToAllSupportedEvents(container);\n  return new ReactDOMHydrationRoot(initialChildren);\n};\nexports.version = \"19.1.1\";\n","'use strict';\n\nfunction checkDCE() {\n  /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n  if (\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n  ) {\n    return;\n  }\n  if (process.env.NODE_ENV !== 'production') {\n    // This branch is unreachable because this function is only called\n    // in production, but the condition is true only in development.\n    // Therefore if the branch is still here, dead code elimination wasn't\n    // properly applied.\n    // Don't change the message. React DevTools relies on it. Also make sure\n    // this message doesn't occur elsewhere in this function, or it will cause\n    // a false positive.\n    throw new Error('^_^');\n  }\n  try {\n    // Verify that the code above has been dead code eliminated (DCE'd).\n    __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n  } catch (err) {\n    // DevTools shouldn't crash React, no matter what.\n    // We should still report in case we break this code.\n    console.error(err);\n  }\n}\n\nif (process.env.NODE_ENV === 'production') {\n  // DCE check should happen before ReactDOM bundle executes so that\n  // DevTools can report bad minification during injection.\n  checkDCE();\n  module.exports = require('./cjs/react-dom-client.production.js');\n} else {\n  module.exports = require('./cjs/react-dom-client.development.js');\n}\n","export function calculatePosition(data, options = {}) {\n    const { x = 0, y = 22, spacingVertical = 30, spacingHorizontal = 140, } = options;\n    calculateInnerBoxSize(data, {\n        x,\n        y,\n        spacingVertical,\n        spacingHorizontal,\n    });\n    calculatePositionSS(data, {\n        x,\n        y,\n        spacingVertical,\n        spacingHorizontal,\n    });\n}\nfunction calculateInnerBoxSize(data, options) {\n    for (const datum of data) {\n        if (datum.children) {\n            calculateInnerBoxSize(datum.children, options);\n            datum.childrenBoxSize = {\n                width: datum.position.width +\n                    options.spacingHorizontal +\n                    Math.max(...datum.children.map((d) => d.childrenBoxSize.width)),\n                height: Math.max(datum.position.height, options.spacingVertical * (datum.children.length - 1) +\n                    datum.children\n                        .map((d) => d.childrenBoxSize.height)\n                        .reduce((a, b) => a + b, 0)),\n            };\n        }\n        else {\n            datum.childrenBoxSize = {\n                width: datum.position.width,\n                height: datum.position.height,\n            };\n        }\n    }\n}\nfunction calculatePositionSS(data, options) {\n    let y = options.y;\n    for (const datum of data) {\n        if (datum.children) {\n            calculatePositionSS(datum.children, {\n                ...options,\n                x: options.x + datum.position.width + options.spacingHorizontal,\n                y,\n            });\n        }\n        datum.position.x = options.x;\n        datum.position.y =\n            datum.childrenBoxSize.height / 2 - datum.position.height / 2 + y;\n        y += datum.childrenBoxSize.height + options.spacingVertical;\n        datum.anchor = {\n            left: {\n                x: datum.position.x,\n                y: datum.position.y + datum.position.height / 2,\n            },\n            right: {\n                x: datum.position.x + datum.position.width,\n                y: datum.position.y + datum.position.height / 2,\n            },\n        };\n        datum.childrenBoxSize.height =\n            datum.childrenBoxSize.height + options.spacingVertical;\n    }\n}\n//# sourceMappingURL=calculatePosition.js.map","export const refX = 10;\n//# sourceMappingURL=MarkerDef.utils.js.map","import { jsx as _jsx, Fragment as _Fragment } from \"react/jsx-runtime\";\nexport function MultilineText(props) {\n    const { label, verticalPosition } = props;\n    if (!label)\n        return;\n    const lines = label.split(/\\r?\\n/);\n    const firstDX = verticalPosition === 'top'\n        ? 1\n        : verticalPosition === 'center'\n            ? -lines.length / 2 + 0.5\n            : -lines.length;\n    return (_jsx(_Fragment, { children: lines.map((line, index) => (_jsx(\"tspan\", { x: \"0\", dy: index === 0 ? `${firstDX}em` : '1em', children: line }, index))) }));\n}\n//# sourceMappingURL=MultilineText.js.map","import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { MultilineText } from './MultilineText';\nexport function Text(props) {\n    const { x, y, label, verticalPosition, horizontalPosition } = props;\n    const transform = `translate(${x},${y})`;\n    let textAnchor;\n    switch (horizontalPosition) {\n        case 'left':\n            textAnchor = 'start';\n            break;\n        case 'center':\n            textAnchor = 'middle';\n            break;\n        case 'right':\n            textAnchor = 'end';\n            break;\n        default:\n            textAnchor = 'middle';\n    }\n    return (_jsxs(_Fragment, { children: [_jsx(\"text\", { textAnchor: textAnchor, transform: transform, stroke: \"rgba(255,255,255,0.5)\", strokeWidth: \"0.5em\", fill: \"none\", fontSize: \"14\", children: _jsx(MultilineText, { label: label, verticalPosition: verticalPosition }) }), _jsx(\"text\", { textAnchor: textAnchor, transform: transform, stroke: \"none\", fontSize: \"14\", fill: \"black\", children: _jsx(MultilineText, { label: label, verticalPosition: verticalPosition }) })] }));\n}\n//# sourceMappingURL=Text.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { refX } from './MarkerDef.utils';\nimport { Text } from './Text';\n/**\n * Creates a simple arrow between 2 points. The arrow has one inflection point, which is the middle of the line.\n * The SVG must define a marker with id=\"arrowhead\" for this to work.\n * @param props\n * @returns\n */\nexport function Arrow(props) {\n    const { id, from, to, label, horizontalPosition = 'center', verticalPosition = 'center', } = props;\n    const middle = { x: (from.x + to.x) / 2, y: (from.y + to.y) / 2 };\n    const headInflectionPoint = {\n        x: to.x - refX * 2, // refX attribute of the marker element in the Arrow component shifts the arrow head to the left, and that the vertices of the arrow head are set to refX, which means that the beginning of the arrow head is refX * 2 to the left.\n        y: to.y,\n    };\n    const d = `M ${from.x} ${from.y} C ${middle.x} ${from.y}  ${middle.x} ${to.y}  ${headInflectionPoint.x} ${to.y} Q ${headInflectionPoint.x} ${to.y}  ${to.x} ${to.y} `;\n    return (_jsxs(\"g\", { id: id, children: [_jsx(\"path\", { d: d, style: {\n                    fill: 'none',\n                    strokeWidth: '2',\n                    stroke: 'black',\n                    markerEnd: 'url(#arrowhead)',\n                } }), horizontalPosition === 'center' && (_jsx(Text, { x: middle.x, y: middle.y, label: label, horizontalPosition: horizontalPosition, verticalPosition: verticalPosition })), horizontalPosition === 'right' && (_jsx(Text, { x: to.x - 12, y: to.y - 8, label: label, horizontalPosition: \"right\", verticalPosition: verticalPosition })), horizontalPosition === 'left' && (_jsx(Text, { x: from.x + 12, y: from.y + 8, label: label, horizontalPosition: \"left\", verticalPosition: verticalPosition }))] }));\n}\n//# sourceMappingURL=Arrow.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Arrow } from '../components/Arrow';\nexport function getArrows(nodes, options = {}) {\n    const status = { level: 0 };\n    const arrows = [];\n    getArrowsSS(nodes, arrows, status, options);\n    return arrows;\n}\nfunction getArrowsSS(nodes, arrows, status, options = {}) {\n    const { getLabel, horizontalPosition, getID, verticalPosition } = options;\n    for (const node of nodes) {\n        if (node.children) {\n            for (const child of node.children) {\n                arrows.push(_jsx(Arrow, { id: getID ? getID(node) : undefined, from: node.anchor.right, to: child.anchor.left, label: getLabel?.(child), horizontalPosition: horizontalPosition, verticalPosition: verticalPosition }, arrows.length));\n            }\n            getArrowsSS(node.children, arrows, {\n                ...status,\n                level: status.level + 1,\n            }, options);\n        }\n    }\n}\n//# sourceMappingURL=getArrows.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nexport function getBoxes(nodes, options) {\n    const boxes = [];\n    appendBoxes(nodes, boxes, options);\n    return boxes;\n}\nfunction appendBoxes(nodes, boxes, options = {}) {\n    const { getID } = options;\n    for (const node of nodes) {\n        boxes.push(_jsx(\"g\", { id: getID ? getID(node) : undefined, transform: `translate(${node.position.x} ${node.position.y})`, children: node.element }, boxes.length));\n        if (node.children) {\n            appendBoxes(node.children, boxes, options);\n        }\n    }\n}\n//# sourceMappingURL=getBoxes.js.map","/**\n * Will calculate the SVG of all the node\n * @param data\n */\nexport function prepareTree(data, options) {\n    data = structuredClone(data);\n    prepareTreeSS(data, options);\n    return data;\n}\nfunction prepareTreeSS(data, options) {\n    const { nodeRenderer, nodeRendererOptions = {}, shouldSkipBranch } = options;\n    for (const datum of data) {\n        if (options.parent) {\n            datum.parent = options.parent;\n        }\n        const elementAndSize = nodeRenderer(datum, nodeRendererOptions);\n        datum.position = {\n            x: 0,\n            y: 0,\n            width: elementAndSize.width,\n            height: elementAndSize.height,\n        };\n        datum.element = elementAndSize.element;\n        if (datum.children && datum.children.length === 0) {\n            delete datum.children;\n        }\n        if (datum.children) {\n            if (shouldSkipBranch) {\n                const parents = [datum];\n                let parent = datum.parent;\n                while (parent) {\n                    parents.push(parent);\n                    parent = parent.parent;\n                }\n                datum.children = datum.children.filter((child) => !shouldSkipBranch(child, parents));\n            }\n            prepareTreeSS(datum.children, {\n                ...options,\n                parent: datum,\n            });\n        }\n    }\n}\n//# sourceMappingURL=prepareTree.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { refX } from './MarkerDef.utils';\nexport function MarkerDef() {\n    return (_jsx(\"defs\", { children: _jsx(\"marker\", { id: \"arrowhead\", markerWidth: \"10\", markerHeight: \"7\", refX: refX, refY: \"3.5\", orient: \"auto\", children: _jsx(\"polygon\", { points: \"0 0, 10 3.5, 0 7\" }) }) }));\n}\n//# sourceMappingURL=MarkerDef.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { calculatePosition } from '../data/calculatePosition';\nimport { getArrows } from '../data/getArrows';\nimport { getBoxes } from '../data/getBoxes';\nimport { prepareTree } from '../data/prepareTree';\nimport { MarkerDef } from './MarkerDef';\nexport function SVGBoxesTree(props) {\n    const { tree, ...options } = props;\n    const { arrowRendererOptions, nodeRendererOptions, positionOptions } = options;\n    const data = prepareTree(tree, options);\n    calculatePosition(data, positionOptions);\n    const boxes = getBoxes(data, nodeRendererOptions);\n    const arrows = getArrows(data, arrowRendererOptions);\n    const svgSize = {\n        width: 0,\n        height: 0,\n    };\n    const width = [];\n    for (const datum of data) {\n        width.push(datum.childrenBoxSize.width);\n        svgSize.height += datum.childrenBoxSize.height;\n    }\n    svgSize.width = Math.max(...width);\n    return (_jsxs(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", viewBox: `0 0 ${svgSize.width} ${svgSize.height}`, children: [_jsx(MarkerDef, {}), boxes, arrows] }));\n}\n//# sourceMappingURL=SVGBoxesTree.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { flushSync } from 'react-dom';\nimport { createRoot } from 'react-dom/client';\nimport { SVGBoxesTree } from './components/SVGBoxesTree';\nexport function render(tree, options) {\n    const element = _jsx(SVGBoxesTree, { tree: tree, ...options });\n    const div = document.createElement('div');\n    const root = createRoot(div);\n    flushSync(() => {\n        root.render(element);\n    });\n    return div.innerHTML;\n}\n//# sourceMappingURL=render.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nexport function Rectangle(props) {\n    return _jsx(\"rect\", { ...props });\n}\n//# sourceMappingURL=Rectangle.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nexport function SVG(props) {\n    if (!props.svg)\n        return null;\n    return (_jsx(\"g\", { dangerouslySetInnerHTML: {\n            __html: props.svg,\n        } }));\n}\n//# sourceMappingURL=SVG.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Rectangle } from '../components/Rectangle';\nimport { SVG } from '../components/SVG';\nexport function moleculeRenderer(node, nodeRendererOptions) {\n    const molecules = getMolecules(node, nodeRendererOptions);\n    const topLabel = getTopLabel(node, nodeRendererOptions);\n    const width = Math.max(molecules.width, topLabel.width);\n    const height = Math.max(molecules.height, topLabel.height);\n    return {\n        width,\n        height,\n        element: (_jsxs(\"g\", { children: [_jsx(Rectangle, { width: width, height: height, style: {\n                        ...{ stroke: 'black', fill: 'white' },\n                        ...(node.style || {}),\n                        ...(nodeRendererOptions.getBoxStyle?.(node) || {}),\n                    } }), molecules.element, topLabel.element] })),\n    };\n}\nfunction getTopLabel(node, options = {}) {\n    const label = options.getTopLabel?.(node) || node.label;\n    if (!label) {\n        return {\n            width: 0,\n            height: 0,\n            element: null,\n        };\n    }\n    return {\n        width: 200,\n        height: 20,\n        element: (_jsx(\"text\", { x: 0, y: -6, textAnchor: \"left\", stroke: \"none\", fontSize: \"14\", fill: \"black\", children: label })),\n    };\n}\n/**\n * This code is designed to also allow reactions for which we have many molecules\n * @param node\n * @param options\n * @returns\n */\nfunction getMolecules(node, options) {\n    const { maxWidth = 200, maxHeight = 150, getMolecules, getMoleculeStyle, } = options;\n    if (!getMolecules) {\n        throw new Error('getMolecules is not defined');\n    }\n    const molecules = getMolecules(node);\n    if (!molecules) {\n        return {\n            width: 0,\n            height: 0,\n            element: undefined,\n        };\n    }\n    const svgs = molecules\n        .filter((molecule) => molecule)\n        .map((molecule, index) => {\n        const svg = molecule.toSVG(maxWidth, maxHeight, undefined, {\n            autoCrop: true,\n            autoCropMargin: 10,\n            suppressChiralText: true,\n        });\n        if (getMoleculeStyle) {\n            return addStyleToSVG(svg, getMoleculeStyle(molecule, node, index));\n        }\n        return svg;\n    });\n    const { svg, width, height } = joinSVGs(svgs);\n    return {\n        width,\n        height,\n        element: _jsx(SVG, { svg: svg }),\n    };\n}\nfunction getPlus(options = {}) {\n    const { size = 11, padding = 5, strokeWidth = 2 } = options;\n    const x1 = padding + size / 2;\n    const y1 = padding;\n    const x2 = padding + size / 2;\n    const y2 = padding + size;\n    return {\n        svg: `<line x1=\"${x1}\" y1=\"${y1}\" x2=\"${x2}\" y2=\"${y2}\" stroke=\"rgb(0,0,0)\" stroke-width=\"${strokeWidth}\"></line>` +\n            `<line x1=\"${y1}\" y1=\"${x1}\" x2=\"${y2}\" y2=\"${x2}\" stroke=\"rgb(0,0,0)\" stroke-width=\"${strokeWidth}\"></line>`,\n        width: size + padding * 2,\n        height: size + padding * 2,\n    };\n}\nfunction joinSVGs(svgs) {\n    const results = [];\n    let maxHeight = 0;\n    for (const svg of svgs) {\n        const size = getSVGViewBox(svg);\n        if (results.length) {\n            results.push(getPlus());\n        }\n        results.push({ svg, width: size.width, height: size.height });\n        maxHeight = Math.max(maxHeight, size.height);\n    }\n    let currentWidth = 0;\n    for (const result of results) {\n        const shiftX = currentWidth;\n        const shiftY = (maxHeight - result.height) / 2;\n        result.shiftedSVG = `<g transform=\"translate(${shiftX},${shiftY})\">${result.svg}</g>`;\n        currentWidth += result.width;\n    }\n    return {\n        width: currentWidth,\n        height: maxHeight,\n        svg: results.map((result) => result.shiftedSVG).join('\\n'),\n    };\n}\nfunction getSVGViewBox(svg) {\n    const match = svg.match(/.*viewBox=\"(?<minX>-?\\d+) (?<minY>-?\\d+) (?<width>\\d+) (?<height>\\d+)\".*/);\n    if (!match?.groups) {\n        throw new Error('ViewBox not found');\n    }\n    // convert to numbers and return the object\n    return {\n        minX: Number(match.groups.minX),\n        minY: Number(match.groups.minY),\n        width: Number(match.groups.width),\n        height: Number(match.groups.height),\n    };\n}\nfunction styleObjectToString(style) {\n    const styleArray = [];\n    for (const property in style) {\n        if (Object.hasOwn(style, property)) {\n            const kebabCaseProperty = property\n                .replace(/([A-Z])/g, '-$1')\n                .toLowerCase();\n            styleArray.push(`${kebabCaseProperty}: ${style[property]}`);\n        }\n    }\n    return styleArray.join('; ');\n}\nfunction addStyleToSVG(svg, style) {\n    if (!style)\n        return svg;\n    const size = getSVGViewBox(svg);\n    const match = svg.match(/<svg.*>/);\n    if (!match) {\n        throw new Error('SVG tag not found');\n    }\n    const svgTag = match[0];\n    const styleString = styleObjectToString(style);\n    const styleRectange = `<rect x=\"${size.minX}\" y=\"${size.minY}\" width=\"${size.width}\" height=\"${size.height}\" style=\"${styleString}\"></rect>`;\n    return svg.replace(svgTag, `${svgTag}${styleRectange}`);\n}\n//# sourceMappingURL=moleculeRenderer.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Rectangle } from '../components/Rectangle';\nexport function taxonomyRenderer(node) {\n    const minSize = { width: 120, height: 20 };\n    const taxonomy = getTaxonomy(node, minSize);\n    const label = getLabel(node, minSize);\n    const width = Math.max(taxonomy.width, label.width);\n    const height = Math.max(taxonomy.height, label.height);\n    const nbTaxonomies = getNbTaxonomies(node, width, minSize);\n    return {\n        width,\n        height,\n        element: (_jsxs(\"g\", { children: [_jsx(Rectangle, { width: width, height: height, style: {\n                        ...{ stroke: 'black', fill: 'white' },\n                        ...(node.style || {}),\n                    } }), label.element, taxonomy.element, nbTaxonomies.element] })),\n    };\n}\nfunction getNbTaxonomies(node, width, minSize) {\n    return {\n        width: minSize.width,\n        height: minSize.height,\n        element: (_jsx(\"text\", { x: width, y: -5, textAnchor: \"end\", stroke: \"none\", fontSize: \"14\", fill: \"#00008B\" // dark blue\n            , fontStyle: 'bold', fontFamily: \"Arial, Helvetica, sans-serif\", children: node.nbTaxonomies })),\n    };\n}\nfunction getLabel(node, minSize, options = {}) {\n    const { spacingHorizontal } = {\n        spacingHorizontal: 8,\n        ...options,\n    };\n    if (node.rank === '') {\n        return {\n            width: 0,\n            height: 0,\n            element: null,\n        };\n    }\n    return {\n        width: minSize.width,\n        height: minSize.height,\n        element: (_jsx(\"text\", { x: spacingHorizontal / 2, y: -6, textAnchor: \"start\", stroke: \"none\", fontSize: \"14\", fill: \"grey\", fontStyle: 'italic', fontFamily: \"Arial, Helvetica, sans-serif\", children: node.rank })),\n    };\n}\nfunction getTaxonomy(node, minSize, options = {}) {\n    const { font, fontSize, spacingHorizontal } = {\n        font: 'Arial, Helvetica, sans-serif',\n        fontSize: 16,\n        spacingHorizontal: 8,\n        ...options,\n    };\n    if (node.name === '') {\n        return {\n            width: 0,\n            height: 0,\n            element: null,\n        };\n    }\n    let { width, height } = getStringSize(node.name, {\n        font,\n        fontSize,\n        spacingHorizontal,\n    });\n    const textWith = width;\n    let positionX = spacingHorizontal / 2;\n    if (height <= minSize.height) {\n        height = minSize.height;\n    }\n    if (width <= minSize.width) {\n        width = minSize.width;\n        positionX = (width - textWith + spacingHorizontal) / 2;\n    }\n    return {\n        width,\n        height,\n        element: (_jsx(\"g\", { height: height, width: width, dominantBaseline: \"central\", children: _jsx(\"text\", { x: positionX, y: height / 2, stroke: \"none\", fontSize: fontSize, fill: \"black\", ...(node.url ? { 'data-url': node.url } : {}), fontFamily: font, children: node.name }) })),\n    };\n}\nfunction getStringSize(text, options) {\n    const { font = 'Arial, Helvetica, sans-serif', fontSize = 16, spacingHorizontal = 8, } = options;\n    const tempElement = document.createElement('span');\n    tempElement.style.font = `${fontSize}px ${font}`;\n    tempElement.style.visibility = 'hidden';\n    tempElement.style.position = 'absolute';\n    tempElement.style.top = '-9999px';\n    tempElement.style.left = '-9999px';\n    tempElement.textContent = text;\n    document.body.appendChild(tempElement);\n    const { height, width } = tempElement.getBoundingClientRect();\n    document.body.removeChild(tempElement);\n    return { width: width + spacingHorizontal, height };\n}\n//# sourceMappingURL=taxonomyRenderer.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getFragmentationSVG = getFragmentationSVG;\nconst react_tree_svg_1 = require(\"react-tree-svg\");\n/**\n * @typedef {object} MassPeak\n * @property {number} mass\n * @property {number} intensity\n */\n/**\n * @param {object[]} trees\n * @param {object} [options={}]\n * @param {object} [options.OCL]\n * @param {number} [options.accuracy]\n * @param {MassPeak[]} [options.peaks]\n * @returns\n */\nfunction getFragmentationSVG(trees, options = {}) {\n    const { OCL, accuracy, peaks = [] } = options;\n    const maxIntensity = peaks?.length > 0\n        ? Math.log(Math.max(...peaks.map((peak) => peak.intensity)) + 1)\n        : 0;\n    const rendererOptions = {\n        nodeRenderer: react_tree_svg_1.moleculeRenderer,\n        arrowRendererOptions: {\n            getLabel: (node) => {\n                return node?.reaction?.label;\n            },\n            labelPosition: 'center',\n        },\n        nodeRendererOptions: {\n            getTopLabel: (node) => {\n                const mz = node?.molecules[0]?.info?.mz;\n                if (mz === undefined)\n                    return;\n                return `${mz.toFixed(4)} m/z`;\n            },\n            getBoxStyle: (node) => {\n                for (const molecule of node.molecules) {\n                    const peak = getPeakInRange(peaks, molecule?.info?.mz, accuracy);\n                    if (peak) {\n                        return {\n                            fillOpacity: maxIntensity\n                                ? (0.2 * Math.log(peak.intensity + 1)) / maxIntensity\n                                : 0.2,\n                            fill: 'red',\n                        };\n                    }\n                }\n            },\n            getMolecules: (node) => {\n                return node.molecules.map((molecule) => OCL.Molecule.fromIDCode(molecule.idCode));\n            },\n        },\n        positionOptions: {\n            spacingHorizontal: 150,\n        },\n    };\n    return (0, react_tree_svg_1.render)(trees, rendererOptions);\n}\nfunction getPeakInRange(peaks, mass, accuracy) {\n    if (!mass || !Array.isArray(peaks)) {\n        return undefined;\n    }\n    const massAccuracy = (accuracy * mass) / 1e6;\n    for (const peak of peaks) {\n        if (Math.abs(peak.mass - mass) <= massAccuracy) {\n            return peak;\n        }\n    }\n    return undefined;\n}\n//# sourceMappingURL=getFragmentationSVG.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromMolecules = fromMolecules;\nconst mass_fragmentation_1 = require(\"mass-fragmentation\");\nconst mf_matcher_1 = require(\"mf-matcher\");\nconst mf_parser_1 = require(\"mf-parser\");\nconst mf_utilities_1 = require(\"mf-utilities\");\n/** * Generates a database 'monoisotopic' from a monoisotopic mass and various options\n * @param {{smiles?:string,molecule?:string,idCode?:string}[]}    entries - Array of object containing a property to recreate the molecule\n * @param {typeof import('openchemlib')} OCL - The OCL library\n * @param {object}    [options={}]\n * @param {function}  [options.onStep] - Callback to do after each step\n * @param {boolean}   [options.allowNeutral=true]\n * @param {string}    [options.ionizations=''] - string containing a comma separated list of modifications\n * @param {number}    [options.precision=100] - Allowed mass range based on precision\n * @param {boolean}   [options.groupResults=false] - Should we group the results if they have the same monoisotopic mass and experimental mass\n * @param {object}    [options.fragmentation={}]\n * @param {object}    [options.fragmentation.acyclic=false]\n * @param {object}    [options.fragmentation.cyclic=false]\n * @param {object}    [options.fragmentation.full=true]\n * @param {import('mf-matcher').MSEMFilterOptions}        [options.filter={}]\n * @returns {Promise}\n */\nasync function fromMolecules(entries, OCL, options = {}) {\n    let { onStep, ionizations, filter, fragmentation = { acyclic: false, cyclic: false, full: true }, groupResults = false, } = options;\n    ionizations = (0, mf_utilities_1.preprocessIonizations)(ionizations);\n    let results = [];\n    for (let i = 0; i < entries.length; i++) {\n        const entry = entries[i];\n        const molecule = getMolecule(entry, OCL);\n        if (!molecule)\n            continue;\n        const { acyclic = false, cyclic = false, full = true } = fragmentation;\n        const allFragments = (0, mass_fragmentation_1.fragment)(molecule, {\n            acyclic,\n            cyclic,\n            full,\n        });\n        for (const oneFragment of allFragments) {\n            appendResults(results, oneFragment, {\n                entry,\n                ionizations,\n                filter,\n            });\n            if (onStep)\n                onStep(i);\n        }\n    }\n    if (groupResults) {\n        results = groupFragmentationResults(results);\n    }\n    return results.sort((a, b) => a.em - b.em);\n}\n/**\n * We could group the results and replace the property 'fragment' by 'fragments'\n * @param {*} results\n */\nfunction groupFragmentationResults(results) {\n    const sortedResults = results.slice().sort((a, b) => {\n        if (a.em !== b.em) {\n            return a.em - b.em;\n        }\n        if (a.ms.em !== b.ms.em) {\n            return a.ms.em - b.ms.em;\n        }\n        if (a.fragment.idCode < b.fragment.idCode)\n            return -1;\n        return 1;\n    });\n    const groupedResults = [];\n    let currentResult = {};\n    for (let result of sortedResults) {\n        if (result.em !== currentResult.em ||\n            result.ms.em !== currentResult.ms.em) {\n            currentResult = { ...result };\n            currentResult.fragments = [\n                {\n                    idCode: result.fragment.idCode,\n                    type: result.fragment.type,\n                    count: 1,\n                    parents: [{ ...result.fragment.parent, count: 1 }],\n                },\n            ];\n            delete currentResult.fragment;\n            groupedResults.push(currentResult);\n        }\n        else {\n            const lastFragment = currentResult.fragments.at(-1);\n            if (lastFragment.idCode === result.fragment.idCode) {\n                lastFragment.count++;\n                if (lastFragment.parents.at(-1).idCode === result.fragment.parent.idCode) {\n                    lastFragment.parents.at(-1).count++;\n                }\n                else {\n                    lastFragment.parents.push({ ...result.fragment.parent, count: 1 });\n                }\n            }\n            else {\n                currentResult.fragments.push({\n                    idCode: result.fragment.idCode,\n                    type: result.fragment.type,\n                    count: 1,\n                    parents: [{ ...result.fragment.parent, count: 1 }],\n                });\n            }\n        }\n    }\n    for (let group of groupedResults) {\n        group.fragments = group.fragments.sort((a, b) => b.count - a.count);\n    }\n    return groupedResults;\n}\n/**\n *\n * @param {object} entry\n * @param {typeof import('openchemlib')} OCL - The OCL library\n */\nfunction getMolecule(entry, OCL) {\n    if (entry.idCode) {\n        return OCL.Molecule.fromIDCode(entry.idCode);\n    }\n    if (entry.ocl && entry.ocl.idCode) {\n        return OCL.Molecule.fromIDCode(entry.ocl.idCode);\n    }\n    if (entry.smiles) {\n        return OCL.Molecule.fromSmiles(entry.smiles);\n    }\n    if (entry.molfile) {\n        return OCL.Molecule.fromMolfile(entry.molfile);\n    }\n    return undefined;\n}\nfunction appendResults(results, oneFragment, options) {\n    const mf = oneFragment.mfInfo.mf;\n    const { ionizations, filter, entry } = options;\n    const mfInfo = new mf_parser_1.MF(mf).getInfo();\n    for (let ionization of ionizations) {\n        const result = {\n            charge: mfInfo.charge,\n            em: mfInfo.monoisotopicMass,\n            mw: mfInfo.mass,\n            mf: mfInfo.mf,\n            ionization,\n            unsaturation: mfInfo.unsaturation,\n            atoms: mfInfo.atoms,\n            fragment: {\n                parent: {\n                    ...entry,\n                    idCode: oneFragment.parentIDCode,\n                },\n                idCode: oneFragment.idCode,\n                type: oneFragment.fragmentType,\n            },\n        };\n        let match = (0, mf_matcher_1.msemMatcher)(result, filter);\n        if (!match)\n            continue;\n        result.ms = match.ms;\n        result.ionization = match.ionization;\n        results.push(result);\n    }\n}\n//# sourceMappingURL=fromMolecules.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sequenceToMF = sequenceToMF;\nconst chemical_groups_1 = require(\"chemical-groups\");\nconst mf_utilities_1 = require(\"mf-utilities\");\n/**\n * Convert a nucleic sequence to a MF\n * @param {String} sequence\n * @param {object} [options={}]\n * @param {string} [options.kind] - rna, ds-dna or dna. Default if contains U: rna, otherwise ds-dna\n * @param {string} [options.fivePrime=monophosphate] - alcohol, monophosphate, diphosphate, triphosphate\n * @param {string} [options.circular=false]\n */\nfunction sequenceToMF(sequence, options = {}) {\n    let fivePrimeTerminal = 'HO';\n    let threePrimeTerminal = 'H';\n    sequence = sequence.replace(/^HO/, '');\n    sequence = sequence.replace(/H$/, '');\n    sequence = sequence.trim();\n    if (sequence === '')\n        return '';\n    sequence = (0, mf_utilities_1.ensureUppercaseSequence)(sequence);\n    // if the sequence is in lowercase but the parenthesis we should convert it to uppercase\n    if (sequence.match(/^[a-z]+$/)) {\n        sequence = sequence.toUpperCase();\n    }\n    let { kind, circular, fivePrime = 'monophosphate' } = options;\n    fivePrime = fivePrime.replaceAll(/[^A-Za-z]/g, '').toLowerCase();\n    if (!kind) {\n        if (sequence.includes('U')) {\n            kind = 'rna';\n        }\n        else {\n            kind = 'ds-dna';\n        }\n    }\n    kind = kind.replaceAll(/[^A-Za-z]/g, '').toLowerCase();\n    if (sequence.includes('(') && kind === 'dsdna') {\n        throw new Error('Nucleotide sequenceToMF: modifications not allowed for ds-DNA');\n    }\n    let results = [[]];\n    if (kind === 'dsdna')\n        results.push([]);\n    let parenthesisCounter = 0;\n    for (let i = 0; i < sequence.length; i++) {\n        let currentSymbol = sequence[i];\n        while (sequence[i + 1] && sequence[i + 1].match(/[a-z]/)) {\n            i++;\n            currentSymbol += sequence[i];\n        }\n        if (currentSymbol.length > 1) {\n            results[0].push(currentSymbol);\n            continue;\n        }\n        if (currentSymbol === '(' ||\n            currentSymbol === ')' ||\n            parenthesisCounter > 0) {\n            if (currentSymbol === '(') {\n                parenthesisCounter++;\n                if (i === 0)\n                    fivePrimeTerminal = '';\n            }\n            if (currentSymbol === ')') {\n                parenthesisCounter--;\n                if (i === sequence.length - 1)\n                    threePrimeTerminal = '';\n            }\n            switch (kind) {\n                case 'dna':\n                case 'rna':\n                    results[0].push(currentSymbol);\n                    break;\n                default:\n                    // eslint-disable-next-line no-console\n                    console.warn(`Nucleotide sequenceToMF with modification: unknown kind: ${kind}`);\n            }\n            continue;\n        }\n        let nucleotideType = i === 0 ? fivePrime : 'monophosphate';\n        currentSymbol = currentSymbol.replace(/[\\t\\n\\r ]/, '');\n        if (!currentSymbol)\n            continue;\n        switch (kind) {\n            case 'dna':\n                results[0].push(desoxyNucleotides[nucleotideType][currentSymbol]);\n                break;\n            case 'rna':\n                results[0].push(oxyNucleotides[nucleotideType][currentSymbol]);\n                break;\n            case 'dsdna':\n                results[0].push(desoxyNucleotides[nucleotideType][currentSymbol]);\n                results[1].unshift(desoxyNucleotides[nucleotideType][complementary[currentSymbol]]);\n                break;\n            default:\n                // eslint-disable-next-line no-console\n                console.warn(`Nucleotide sequenceToMF: unknown kind: ${kind}`);\n        }\n    }\n    if (!circular) {\n        for (const result of results)\n            result.unshift(fivePrimeTerminal);\n        for (const result of results)\n            result.push(threePrimeTerminal);\n    }\n    return results.map((result) => result.join('')).join('.');\n}\nconst complementary = {\n    A: 'T',\n    T: 'A',\n    C: 'G',\n    G: 'C',\n};\nconst desoxyNucleotides = {\n    alcohol: {},\n    monophosphate: {},\n    diphosphate: {},\n    triphosphate: {},\n};\nfor (const group of chemical_groups_1.groups.filter(({ kind }) => kind === 'DNA')) {\n    if (group.oneLetter) {\n        desoxyNucleotides.alcohol[group.oneLetter] = group.symbol;\n    }\n}\nfor (const group of chemical_groups_1.groups.filter(({ kind }) => kind === 'DNAp')) {\n    if (group.oneLetter) {\n        desoxyNucleotides.monophosphate[group.oneLetter] = group.symbol;\n    }\n}\nfor (const group of chemical_groups_1.groups.filter(({ kind }) => kind === 'NucleotideP')) {\n    if (group.oneLetter) {\n        desoxyNucleotides.monophosphate[group.oneLetter] = group.symbol;\n    }\n}\nfor (const group of chemical_groups_1.groups.filter(({ kind }) => kind === 'DNApp')) {\n    if (group.oneLetter) {\n        desoxyNucleotides.diphosphate[group.oneLetter] = group.symbol;\n    }\n}\nfor (const group of chemical_groups_1.groups.filter(({ kind }) => kind === 'DNAppp')) {\n    if (group.oneLetter) {\n        desoxyNucleotides.triphosphate[group.oneLetter] = group.symbol;\n    }\n}\nconst oxyNucleotides = {\n    alcohol: {},\n    monophosphate: {},\n    diphosphate: {},\n    triphosphate: {},\n};\nfor (const group of chemical_groups_1.groups.filter(({ kind }) => kind === 'RNA')) {\n    if (group.oneLetter) {\n        oxyNucleotides.alcohol[group.oneLetter] = group.symbol;\n    }\n}\nfor (const group of chemical_groups_1.groups.filter(({ kind }) => kind === 'RNAp')) {\n    if (group.oneLetter) {\n        oxyNucleotides.monophosphate[group.oneLetter] = group.symbol;\n    }\n}\nfor (const group of chemical_groups_1.groups.filter(({ kind }) => kind === 'NucleotideP')) {\n    if (group.oneLetter) {\n        oxyNucleotides.monophosphate[group.oneLetter] = group.symbol;\n    }\n}\nfor (const group of chemical_groups_1.groups.filter(({ kind }) => kind === 'RNApp')) {\n    if (group.oneLetter) {\n        oxyNucleotides.diphosphate[group.oneLetter] = group.symbol;\n    }\n}\nfor (const group of chemical_groups_1.groups.filter(({ kind }) => kind === 'RNAppp')) {\n    if (group.oneLetter) {\n        oxyNucleotides.triphosphate[group.oneLetter] = group.symbol;\n    }\n}\n//# sourceMappingURL=sequenceToMF.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.furanThreeTerm = furanThreeTerm;\nfunction furanThreeTerm(nucleotide) {\n    // last residue should become a furan\n    let parts = nucleotide\n        .replaceAll(' ', '')\n        .replaceAll(/([\\d)a-z])([A-Z][a-z](?=[a-z]))/g, '$1 $2')\n        .split(/ /);\n    let last = parts.pop();\n    if (!last.match(/D[acgt]mp(.*)$/)) {\n        // eslint-disable-next-line no-console\n        console.warn(`furanThreeTerm can not remove a non monophosphate nucleic acid: ${last}`);\n        return parts.join('') + last;\n    }\n    return parts.join('') + last.replace(/D[acgt]mp(.*)$/, 'Furp');\n}\n//# sourceMappingURL=furanThreeTerm.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.addFiveTerm = addFiveTerm;\nconst furanThreeTerm_js_1 = require(\"./furanThreeTerm.js\");\nfunction addFiveTerm(mfs, fiveTerm, i, options) {\n    if (options.a)\n        mfs.push(`${fiveTerm}O-1H-1$a${i}`); // neutral ok\n    if (options.ab && i > 1)\n        mfs.push(`${(0, furanThreeTerm_js_1.furanThreeTerm)(fiveTerm)}$a${i}-B`); // A minus base\n    if (options.b)\n        mfs.push(`${fiveTerm}H$b${i}`); // need to add an hydrogen, see: https://books.google.ch/books?id=B57e37bJjqAC&pg=PA172&lpg=PA172&dq=oligonucleotide+b+fragmentation&source=bl&ots=mRr29Pexx2&sig=1NUQcWV-wuj6o9q81my86AVoRto&hl=fr&sa=X&ved=2ahUKEwjI5M3yn-7fAhUJMewKHQR6Bcs4ChDoATADegQIBhAB#v=onepage&q&f=true\n    if (options.c)\n        mfs.push(`${fiveTerm}PO2$c${i}`); // neutral ok\n    if (options.d)\n        mfs.push(`${fiveTerm}PO3H2$d${i}`);\n    if (options.dh2o)\n        mfs.push(`${fiveTerm}PO2$d${i}-H2O`);\n}\n//# sourceMappingURL=addFiveTerm.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.baseLoss = baseLoss;\nconst mf_utilities_1 = require(\"mf-utilities\");\nconst mfLosses = {};\nfor (const nucleotide of ['Amp', 'Tmp', 'Cmp', 'Gmp', 'Ump']) {\n    mfLosses[nucleotide] = {\n        code: nucleotide.charAt(0),\n        diff: (0, mf_utilities_1.mfDiff)('Rmp', nucleotide),\n    };\n}\nfor (const nucleotide of ['Damp', 'Dtmp', 'Dcmp', 'Dgmp', 'Dump']) {\n    mfLosses[nucleotide] = {\n        code: nucleotide.charAt(1).toUpperCase(),\n        diff: (0, mf_utilities_1.mfDiff)('Drmp', nucleotide),\n    };\n}\nfunction baseLoss(nucleotide) {\n    // any residue can loose a base\n    let results = [];\n    for (let key in mfLosses) {\n        const base = mfLosses[key];\n        if (nucleotide.includes(key)) {\n            results.push(`${nucleotide}(${base.diff})$${base.code}*`);\n        }\n    }\n    return results;\n}\n//# sourceMappingURL=baseLoss.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.addFiveTermBaseLoss = addFiveTermBaseLoss;\nconst baseLoss_js_1 = require(\"./baseLoss.js\");\nfunction addFiveTermBaseLoss(mfs, fiveTerm, i, options) {\n    if (!options.abcdBaseLoss)\n        return;\n    let loss = (0, baseLoss_js_1.baseLoss)(fiveTerm);\n    for (const mf of loss) {\n        if (options.a) {\n            mfs.push(`${mf}`.replace('$', `O-1H-1$a${i} `));\n        }\n        if (options.b) {\n            mfs.push(`${mf}`.replace('$', `H-1$b${i} `));\n        }\n        if (options.c) {\n            mfs.push(`${mf}`.replace('$', `PO2$c${i} `));\n        }\n        if (options.d) {\n            mfs.push(`${mf}`.replace('$', `PO3H2$d${i} `));\n        }\n    }\n}\n//# sourceMappingURL=addFiveTermBaseLoss.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.addInternalTerm = addInternalTerm;\nconst furanThreeTerm_js_1 = require(\"./furanThreeTerm.js\");\n// https://books.google.ch/books?id=B57e37bJjqAC&pg=PA172&lpg=PA172&dq=oligonucleotide+b+fragmentation&source=bl&ots=mRr29Pexx2&sig=1NUQcWV-wuj6o9q81my86AVoRto&hl=fr&sa=X&ved=2ahUKEwjI5M3yn-7fAhUJMewKHQR6Bcs4ChDoATADegQIBhAB#v=onepage&q=oligonucleotide%20b%20fragmentation&f=false\nfunction addInternalTerm(mfs, internal, ter3, ter5, options = {}) {\n    if (options.aw) {\n        // without base loss\n        mfs.push(`HO${internal}O-1H-1$w${ter3}:a${ter5}`); // A W\n    }\n    if (options.bw) {\n        // without base loss\n        mfs.push(`HO${internal}H$w${ter3}:b${ter5}`); // B W\n    }\n    if (options.abw) {\n        // with base loss\n        let fragment = (0, furanThreeTerm_js_1.furanThreeTerm)(internal);\n        mfs.push(`HO${fragment}$w${ter3}:a${ter5}-B`); // A minus base - W\n    }\n    if (options.aby) {\n        // with base loss\n        let fragment = (0, furanThreeTerm_js_1.furanThreeTerm)(internal);\n        mfs.push(`O-2P-1${fragment}$y${ter3}:a${ter5}-B`); // A minus base - Y\n    }\n}\n//# sourceMappingURL=addInternalTerm.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.addThreeTerm = addThreeTerm;\nfunction addThreeTerm(mfs, threeTerm, i, options) {\n    if (options.w)\n        mfs.push(`HO${threeTerm}$w${i}`); // neutral ok\n    if (options.x)\n        mfs.push(`H-1${threeTerm}$x${i}`); // neutral ok\n    if (options.y)\n        mfs.push(`O-2P-1${threeTerm}$y${i}`); // neutral ok\n    if (options.z)\n        mfs.push(`O-3H-2P-1${threeTerm}$z${i}`); // neutral ok\n    if (options.zch2)\n        mfs.push(`O-3H-4C-1P-1${threeTerm}$z${i}-CH2`); // TODO to confirm\n}\n//# sourceMappingURL=addThreeTerm.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.addThreeTermBaseLoss = addThreeTermBaseLoss;\nconst baseLoss_js_1 = require(\"./baseLoss.js\");\nfunction addThreeTermBaseLoss(mfs, threeTerm, i, options) {\n    if (!options.wxyzBaseLoss)\n        return;\n    let loss = (0, baseLoss_js_1.baseLoss)(threeTerm);\n    for (const mf of loss) {\n        if (options.w) {\n            mfs.push(`HO${mf}`.replace('$', `$w${i} `));\n        }\n        if (options.x) {\n            mfs.push(`H-1${mf}`.replace('$', `$x${i} `));\n        }\n        if (options.y) {\n            mfs.push(`O-2P-1${mf}`.replace('$', `$y${i} `));\n        }\n        if (options.z) {\n            mfs.push(`O-3H-1P-1(+)${mf}`.replace('$', `$z${i} `));\n        }\n    }\n}\n//# sourceMappingURL=addThreeTermBaseLoss.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.generateFragments = generateFragments;\nconst addFiveTerm_1 = require(\"./addFiveTerm\");\nconst addFiveTermBaseLoss_1 = require(\"./addFiveTermBaseLoss\");\nconst addInternalTerm_1 = require(\"./addInternalTerm\");\nconst addThreeTerm_1 = require(\"./addThreeTerm\");\nconst addThreeTermBaseLoss_1 = require(\"./addThreeTermBaseLoss\");\nfunction generateFragments(mf, options) {\n    if (options === undefined) {\n        options = {\n            a: false,\n            ab: false,\n            b: false,\n            c: false,\n            d: false,\n            dh2o: false,\n            w: false,\n            x: false,\n            y: false,\n            z: false,\n            zch2: false,\n            aw: false,\n            bw: false,\n            abw: false,\n            aby: false,\n            abcdBaseLoss: false,\n            wxyzBaseLoss: false,\n        };\n    }\n    let mfs = [];\n    // need to allow 0-9 to deal with neutral loss\n    let mfparts = mf\n        .replaceAll(/([\\d)a-z])([A-Z][a-z](?=[a-z]))/g, '$1 $2')\n        .split(/ /);\n    let fiveTerm = '';\n    let threeTerm = '';\n    if (mfparts[0].startsWith('(')) {\n        fiveTerm += mfparts[0];\n        mfparts = mfparts.splice(1);\n    }\n    if (mfparts.at(-1).includes('(')) {\n        threeTerm += mfparts.at(-1).replace(/^[^()]*/, '');\n        mfparts[mfparts.length - 1] = mfparts.at(-1).replace(/\\(.*/, '');\n    }\n    for (let ter5 = 1; ter5 < mfparts.length; ter5++) {\n        fiveTerm += mfparts[ter5 - 1];\n        threeTerm = mfparts[mfparts.length - ter5] + threeTerm;\n        (0, addFiveTerm_1.addFiveTerm)(mfs, fiveTerm, ter5, options);\n        (0, addFiveTermBaseLoss_1.addFiveTermBaseLoss)(mfs, fiveTerm, ter5, options);\n        (0, addThreeTerm_1.addThreeTerm)(mfs, threeTerm, ter5, options);\n        (0, addThreeTermBaseLoss_1.addThreeTermBaseLoss)(mfs, threeTerm, ter5, options);\n    }\n    for (let i = 1; i < mfparts.length - 1; i++) {\n        let internal = '';\n        for (let j = i; j < mfparts.length - 1; j++) {\n            internal += mfparts[j];\n            if (j > i) {\n                (0, addInternalTerm_1.addInternalTerm)(mfs, internal, mfparts.length - i, j + 1, options);\n            }\n        }\n    }\n    return mfs;\n}\n//# sourceMappingURL=generateFragments.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromNucleicSequence = fromNucleicSequence;\nconst chemical_groups_1 = require(\"chemical-groups\");\nconst mf_generator_1 = require(\"mf-generator\");\nconst nucleotide_1 = require(\"nucleotide\");\n/**\n * Add a database starting from a peptidic sequence\n *\n * @param {string} [sequencesString] Sequence as a string of 1 letter or 3 letters code. Could also be a correct molecular formula respecting uppercase, lowercase\n * @param {object} [options={}]\n * @param {boolean} [options.estimate=false] - estimate the number of MF without filters\n * @param {function} [options.onStep] - Callback to do after each step\n * @param {number} [options.limit=100000]\n * @param {string} [options.ionizations='']\n * @param {object} [options.info={}]\n * @param {string} [options.info.kind] - rna, ds-dna or dna. Default if contains U: rna, otherwise ds-dna\n * @param {string} [options.info.fivePrime=monophosphate] - alcohol, monophosphate, diphosphate, triphosphate\n * @param {string} [options.info.circular=false]\n * @param {array}   [options.mfsArray=[]]\n * @param {object}  [options.fragmentation={}] Object defining options for fragmentation\n * @param {boolean} [options.fragmentation.a=false] If true allow fragments of type 'a'\n * @param {boolean} [options.fragmentation.ab=false] If true allow fragments of type 'a' minus base\n * @param {boolean} [options.fragmentation.b=false] If true allow fragments of type 'b'\n * @param {boolean} [options.fragmentation.c=false] If true allow fragments of type 'c'\n * @param {boolean} [options.fragmentation.d=false] If true allow fragments of type 'd'\n * @param {boolean} [options.fragmentation.dh2o=false] If true allow fragments of type 'd' with water loss\n * @param {boolean} [options.fragmentation.w=false] If true allow fragments of type 'w'\n * @param {boolean} [options.fragmentation.x=false] If true allow fragments of type 'x'\n * @param {boolean} [options.fragmentation.y=false] If true allow fragments of type 'y'\n * @param {boolean} [options.fragmentation.z=false] If true allow fragments of type 'z'\n * @param {boolean} [options.baseLoss=false] If true allow base loss at all the positions\n *\n * @param {object} [options.filter={}] Object defining options for molecular formula filter\n * @param {number} [options.filter.minMass=0] - Minimal monoisotopic mass\n * @param {number} [options.filter.maxMass=+Infinity] - Maximal monoisotopic mass\n * @param {number} [options.filter.minEM=0] - Minimal neutral monoisotopic mass\n * @param {number} [options.filter.maxEM=+Infinity] - Maximal neutral monoisotopic mass\n * @param {number} [options.filter.minMSEM=0] - Minimal observed monoisotopic mass\n * @param {number} [options.filter.maxMSEM=+Infinity] - Maximal observed monoisotopic mass\n * @param {number} [options.filter.minCharge=-Infinity] - Minimal charge\n * @param {number} [options.filter.maxCharge=+Infinity] - Maximal charge\n * @param {boolean}  [options.filter.absoluteCharge=false] - If true, the charge is absolute (so between 0 and +Infinity by default)\n * @param {object} [options.filter.unsaturation={}]\n * @param {number} [options.filter.unsaturation.min=-Infinity] - Minimal unsaturation\n * @param {number} [options.filter.unsaturation.max=+Infinity] - Maximal unsaturation\n * @param {boolean} [options.filter.unsaturation.onlyInteger=false] - Integer unsaturation\n * @param {boolean} [options.filter.unsaturation.onlyNonInteger=false] - Non integer unsaturation\n * @returns {Promise}\n */\nasync function fromNucleicSequence(sequencesString, options = {}) {\n    const { mfsArray = [], fragmentation = {}, filter = {}, ionizations = '', info = {}, estimate = false, limit = 100000, onStep, } = options;\n    let sequences = (0, nucleotide_1.sequenceToMF)(sequencesString, info).split('.');\n    let fragmentsArray = sequences.slice();\n    // calculate fragmentation\n    for (let i = 0; i < sequences.length; i++) {\n        let sequence = sequences[i];\n        let fragments = (0, nucleotide_1.generateFragments)(sequence, fragmentation);\n        if (i === 1) {\n            // complementary sequence\n            fragments = fragments.map((fragment) => fragment.replaceAll('$', '$cmp-'));\n        }\n        fragmentsArray = fragmentsArray.concat(fragments);\n        if (fragmentation.baseLoss) {\n            fragmentsArray = fragmentsArray.concat((0, nucleotide_1.baseLoss)(sequence));\n        }\n    }\n    mfsArray.push(fragmentsArray);\n    let combined = await (0, mf_generator_1.generateMFs)(mfsArray, {\n        ionizations,\n        filter,\n        uniqueMFs: false,\n        estimate,\n        onStep,\n        limit,\n    });\n    if (Array.isArray(combined)) {\n        // not an estimation\n        for (const result of combined) {\n            result.sequence = (0, chemical_groups_1.groupsToSequence)(result.parts.filter(Boolean).join(' '));\n        }\n    }\n    return combined;\n}\n//# sourceMappingURL=fromNucleicSequence.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.aminoAcids = void 0;\n// SOURCE: https://en.wikipedia.org/wiki/Amino_acid\n// Link for UTF8 code for modified: https://codepoints.net/search?sc=Grek\nexports.aminoAcids = [\n    // Standard amino acids\n    {\n        name: 'Alanine',\n        aa3: 'Ala',\n        aa1: 'A',\n        sc: {\n            type: 'hydrophobic',\n        },\n        pKaC: 2.33,\n        pKaN: 9.71,\n    },\n    {\n        name: 'Arginine',\n        aa3: 'Arg',\n        aa1: 'R',\n        sc: {\n            type: 'positive',\n            pKa: 12.1,\n        },\n        pKaC: 2.03,\n        pKaN: 9,\n    },\n    {\n        name: 'Asparagine',\n        aa3: 'Asn',\n        aa1: 'N',\n        sc: {\n            type: 'polar',\n        },\n        pKaC: 2.13,\n        pKaN: 9.05,\n    },\n    {\n        name: 'Aspartic acid',\n        aa3: 'Asp',\n        aa1: 'D',\n        sc: {\n            type: 'negative',\n            pKa: 3.71,\n        },\n        pKaC: 1.95,\n        pKaN: 9.66,\n    },\n    {\n        name: 'Cysteine',\n        aa3: 'Cys',\n        aa1: 'C',\n        sc: {\n            type: 'special',\n            pKa: 8.14,\n        },\n        pKaC: 1.91,\n        pKaN: 10.28,\n    },\n    {\n        name: 'Glutamic acid',\n        aa3: 'Glu',\n        aa1: 'E',\n        sc: {\n            type: 'negative',\n            pKa: 4.15,\n        },\n        pKaC: 2.16,\n        pKaN: 9.58,\n    },\n    {\n        name: 'Glutamine',\n        aa3: 'Gln',\n        aa1: 'Q',\n        sc: {\n            type: 'polar',\n        },\n        pKaC: 2.18,\n        pKaN: 9,\n    },\n    {\n        name: 'Glycine',\n        aa3: 'Gly',\n        aa1: 'G',\n        sc: {\n            type: 'special',\n        },\n        pKaC: 2.34,\n        pKaN: 9.58,\n    },\n    {\n        name: 'Histidine',\n        aa3: 'His',\n        aa1: 'H',\n        sc: {\n            type: 'positive',\n            pKa: 6.04,\n        },\n        pKaC: 1.7,\n        pKaN: 9.09,\n    },\n    {\n        name: 'Isoleucine',\n        aa3: 'Ile',\n        aa1: 'I',\n        sc: {\n            type: 'hydrophobic',\n        },\n        pKaC: 2.26,\n        pKaN: 9.6,\n    },\n    {\n        name: 'Leucine',\n        aa3: 'Leu',\n        aa1: 'L',\n        sc: {\n            type: 'hydrophobic',\n        },\n        pKaC: 2.32,\n        pKaN: 9.58,\n    },\n    {\n        name: 'Lysine',\n        aa3: 'Lys',\n        aa1: 'K',\n        sc: {\n            type: 'positive',\n            pKa: 10.67,\n        },\n        pKaC: 2.15,\n        pKaN: 9.16,\n    },\n    {\n        name: 'Methionine',\n        aa3: 'Met',\n        aa1: 'M',\n        sc: {\n            type: 'hydrophobic',\n        },\n        pKaC: 2.16,\n        pKaN: 9.08,\n    },\n    {\n        name: 'Phenylalanine',\n        aa3: 'Phe',\n        aa1: 'F',\n        sc: {\n            type: 'hydrophobic',\n        },\n        pKaC: 2.18,\n        pKaN: 9.09,\n    },\n    {\n        name: 'Proline',\n        aa3: 'Pro',\n        aa1: 'P',\n        sc: {\n            type: 'special',\n        },\n        pKaC: 1.95,\n        pKaN: 10.47,\n    },\n    {\n        name: 'Serine',\n        aa3: 'Ser',\n        aa1: 'S',\n        sc: {\n            type: 'polar',\n        },\n        pKaC: 2.13,\n        pKaN: 9.05,\n    },\n    {\n        name: 'Threonine',\n        aa3: 'Thr',\n        aa1: 'T',\n        sc: {\n            type: 'polar',\n        },\n        pKaC: 2.2,\n        pKaN: 8.96,\n    },\n    {\n        name: 'Tryptophan',\n        aa3: 'Trp',\n        aa1: 'W',\n        sc: {\n            type: 'hydrophobic',\n        },\n        pKaC: 2.38,\n        pKaN: 9.34,\n    },\n    {\n        name: 'Tyrosine',\n        aa3: 'Tyr',\n        aa1: 'Y',\n        sc: {\n            type: 'hydrophobic',\n        },\n        pKaC: 2.24,\n        pKaN: 9.04,\n    },\n    {\n        name: 'Valine',\n        aa3: 'Val',\n        aa1: 'V',\n        sc: {\n            type: 'hydrophobic',\n        },\n        pKaC: 2.27,\n        pKaN: 9.52,\n    },\n    // Additional\n    {\n        name: 'Selenocysteine',\n        aa3: 'Sec',\n        aa1: 'U',\n    },\n    {\n        name: 'Pyrrolysine',\n        aa3: 'Pyl',\n        aa1: 'O',\n    },\n    // Ambiguous\n    {\n        name: 'Asparagine or aspartic acid',\n        aa3: 'Asx',\n        aa1: 'B',\n    },\n    {\n        name: 'Glutamine or glutamic acid',\n        aa3: 'Glx',\n        aa1: 'Z',\n    },\n    {\n        name: 'Leucine or isoleucine',\n        aa3: 'Xle',\n        aa1: 'J',\n    },\n    {\n        name: 'Unspecified or unknown',\n        aa3: 'Xaa',\n        aa1: 'X',\n    },\n];\n//# sourceMappingURL=aminoAcids.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.calculateCharge = calculateCharge;\nexports.calculateIEP = calculateIEP;\nexports.calculateChart = calculateChart;\nexports.getColor = getColor;\nconst aminoAcids_1 = require(\"./aminoAcids\");\n// we will convert the data to an object to be much faster\nlet aaObject = {};\nfor (let i = 0; i < aminoAcids_1.aminoAcids.length; i++) {\n    aaObject[aminoAcids_1.aminoAcids[i].aa3] = aminoAcids_1.aminoAcids[i];\n}\nfunction calculateCharge(aas, pH = 7) {\n    let combined = combine(aas);\n    if (!combined)\n        return;\n    let charge = calculateForPh(combined, pH);\n    return Math.round(charge * 1000) / 1000;\n}\n// this methods required an array of aas\nfunction calculateIEP(aas) {\n    let combined = combine(aas);\n    if (!combined)\n        return;\n    let first = 0;\n    let last = 14;\n    let current = 14;\n    let previous = 0;\n    let currentCharge;\n    while (Math.abs(current - previous) > 0.0001) {\n        previous = current;\n        current = (last + first) / 2;\n        currentCharge = calculateForPh(combined, current);\n        if (currentCharge > 0) {\n            first = current;\n        }\n        else if (currentCharge < 0) {\n            last = current;\n        }\n        else {\n            previous = current;\n        }\n    }\n    return Math.round(current * 1000) / 1000;\n}\nfunction calculateChart(aas) {\n    let combined = combine(aas);\n    if (!combined)\n        return;\n    let y = [];\n    let x = [];\n    let yAbs = [];\n    for (let i = 0; i <= 14; i = i + 0.01) {\n        let charge = calculateForPh(combined, i);\n        x.push(i);\n        y.push(charge);\n        yAbs.push(Math.abs(charge));\n    }\n    combined.x = x;\n    combined.y = y;\n    combined.yAbs = yAbs;\n    return combined;\n}\nfunction calculateForPh(combined, pH) {\n    let total = 0;\n    total += 1 / (1 + 10 ** (pH - combined.first));\n    total += -1 / (1 + 10 ** (combined.last - pH));\n    for (let key in combined.acid) {\n        total += -combined.acid[key] / (1 + 10 ** (aaObject[key].sc.pKa - pH));\n    }\n    for (let key in combined.basic) {\n        total += combined.basic[key] / (1 + 10 ** (pH - aaObject[key].sc.pKa));\n    }\n    return total;\n}\n// we will combine the amino acids\nfunction combine(aas) {\n    let combined = {};\n    if (aaObject[aas[0]]) {\n        combined.first = aaObject[aas[0]].pKaN;\n    }\n    else {\n        return;\n    }\n    if (aaObject[aas.at(-1)]) {\n        combined.last = aaObject[aas.at(-1)].pKaC;\n    }\n    else {\n        return;\n    }\n    combined.basic = {};\n    combined.acid = {};\n    for (let i = 0; i < aas.length; i++) {\n        let currentAA = aas[i];\n        if (!aaObject[currentAA])\n            return;\n        if (aaObject[currentAA].sc && aaObject[currentAA].sc.type) {\n            if (aaObject[currentAA].sc.type === 'positive') {\n                if (!combined.basic[currentAA]) {\n                    combined.basic[currentAA] = 0;\n                }\n                combined.basic[currentAA]++;\n            }\n            else if (aaObject[currentAA].sc.type === 'negative') {\n                if (!combined.acid[currentAA]) {\n                    combined.acid[currentAA] = 0;\n                }\n                combined.acid[currentAA]++;\n            }\n        }\n    }\n    return combined;\n}\n/*\n We can generate a color based on iep\n 0 -> 7 means that at pH 7 it is charged negatively (blue)\n 7 -> 14 means that at pH7 it is charged positively (red)\n */\nfunction getColor(iep) {\n    if (iep < 7) {\n        if (iep < 3)\n            iep = 3;\n        let white = Math.round(255 - (7 - iep) * (200 / 4));\n        return `rgb(${white},${white},255)`;\n    }\n    else if (iep > 7) {\n        if (iep > 11)\n            iep = 11;\n        let white = Math.round(255 - (iep - 7) * (200 / 4));\n        return `rgb(255,${white},${white})`;\n    }\n    return 'rgb(255,255,255)';\n}\n//# sourceMappingURL=isoElectricPoint.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.splitPeptide = splitPeptide;\nfunction splitPeptide(sequence) {\n    let aas = sequence.replaceAll(/([A-Z])/g, ' $1').split(/ /);\n    let begin = 0;\n    while (aas[begin] === '' || aas[begin] === 'H') {\n        begin++;\n    }\n    let end = aas.length - 1;\n    while (aas[end] === 'O' || aas[end] === 'H') {\n        end--;\n    }\n    aas = aas.slice(begin, end + 1);\n    return aas;\n}\n//# sourceMappingURL=splitPeptide.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.allowNeutralLoss = allowNeutralLoss;\n/**\n * Add neutral loss on natural amino acids\n * @param {*} mf\n * @returns\n */\nfunction allowNeutralLoss(mf) {\n    if (Array.isArray(mf)) {\n        for (let i = 0; i < mf.length; i++) {\n            mf[i] = allowOneNeutralLoss(mf[i]);\n        }\n        return mf;\n    }\n    else {\n        return allowOneNeutralLoss(mf);\n    }\n}\nfunction allowOneNeutralLoss(mf) {\n    mf = mf.replaceAll(/(Ser|Thr|Asp|Glu)(?!\\()/g, '$1(H-2O-1)0-1');\n    mf = mf.replaceAll(/(Arg|Lys|Asn|Gln)(?!\\()/g, '$1(N-1H-3)0-1');\n    return mf;\n}\n//# sourceMappingURL=allowNeutralLoss.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getAA = getAA;\nconst aminoAcids_1 = require(\"./aminoAcids\");\nfunction getAA(code) {\n    if (code.length === 1) {\n        for (let i = 0; i < aminoAcids_1.aminoAcids.length; i++) {\n            if (aminoAcids_1.aminoAcids[i].aa1 === code) {\n                return aminoAcids_1.aminoAcids[i];\n            }\n        }\n    }\n    if (code.length === 3) {\n        for (let i = 0; i < aminoAcids_1.aminoAcids.length; i++) {\n            if (aminoAcids_1.aminoAcids[i].aa3 === code) {\n                return aminoAcids_1.aminoAcids[i];\n            }\n        }\n    }\n}\n//# sourceMappingURL=getAA.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.chargePeptide = chargePeptide;\nconst getAA_1 = require(\"./getAA\");\n// SOURCE: https://en.wikipedia.org/wiki/Amino_acid\nfunction chargePeptide(mf, options = {}) {\n    if (Array.isArray(mf)) {\n        for (let i = 0; i < mf.length; i++) {\n            mf[i] = chargeOnePeptide(mf[i], options);\n        }\n        return mf;\n    }\n    else {\n        return chargeOnePeptide(mf, options);\n    }\n}\nfunction chargeOnePeptide(mf, options) {\n    const { pH = 0 } = options;\n    // we will allow to charge the peptide at a specific pH\n    // first amino acids (N-terminal)\n    if (mf.match(/^H[A-Z][a-z]{2}/)) {\n        let firstAA = mf.replace(/^H([A-Z][a-z]{2}).*/, '$1');\n        if ((0, getAA_1.getAA)(firstAA) && pH < (0, getAA_1.getAA)(firstAA).pKaN) {\n            mf = mf.replace(/^H([^+])/, 'H+H$1');\n        }\n    }\n    // last amino acids (C-terminal)\n    if (mf.match(/[A-Z][a-z]{2}OH$/)) {\n        let lastAA = mf.replace(/.*([A-Z][a-z]{2})OH$/, '$1');\n        if ((0, getAA_1.getAA)(lastAA) && pH > (0, getAA_1.getAA)(lastAA).pKaC) {\n            mf = mf.replace(/OH$/, 'O-');\n        }\n    }\n    // basic AA\n    if (pH < (0, getAA_1.getAA)('Arg').sc.pKa)\n        mf = mf.replaceAll(/(Arg)(?!\\()/g, '$1(H+)');\n    if (pH < (0, getAA_1.getAA)('His').sc.pKa)\n        mf = mf.replaceAll(/(His)(?!\\()/g, '$1(H+)');\n    if (pH < (0, getAA_1.getAA)('Lys').sc.pKa)\n        mf = mf.replaceAll(/(Lys)(?!\\()/g, '$1(H+)');\n    // acid AA\n    if (pH > (0, getAA_1.getAA)('Asp').sc.pKa)\n        mf = mf.replaceAll(/(Asp)(?!\\()/g, '$1(H-1-)');\n    if (pH > (0, getAA_1.getAA)('Glu').sc.pKa)\n        mf = mf.replaceAll(/(Glu)(?!\\()/g, '$1(H-1-)');\n    if (pH > (0, getAA_1.getAA)('Cys').sc.pKa)\n        mf = mf.replaceAll(/(Cys)(?!\\()/g, '$1(H-1-)');\n    return mf;\n}\n//# sourceMappingURL=chargePeptide.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sequenceToMF = sequenceToMF;\nconst mf_utilities_1 = require(\"mf-utilities\");\nconst aminoAcids_1 = require(\"./aminoAcids\");\nfunction sequenceToMF(mf) {\n    if (mf === '')\n        return '';\n    mf = (0, mf_utilities_1.ensureUppercaseSequence)(mf);\n    // this function will check if it is a sequence of aa in 1 letter or 3 letters and convert them if it is the case\n    // it could be a multiline mf !\n    // if it is a multiline we could make some \"tricks\" ...\n    let newMF = mf;\n    // SEQRES   1 B  256  MET PRO VAL GLU ILE THR VAL LYS GLU LEU LEU GLU ALA\n    // SEQRES   2 B  256  GLY VAL HIS PHE GLY HIS GLU ARG LYS ARG TRP ASN PRO\n    // or\n    // MET PRO VAL GLU ILE THR VAL LYS GLU LEU LEU GLU ALA\n    // GLY VAL HIS PHE GLY HIS GLU ARG LYS ARG TRP ASN PRO\n    if (mf.search(/(?:[A-Z]{3} ){2}[A-Z]{3}/) > -1) {\n        // this is a PDB !\n        let tmpmf = mf.replaceAll(/[\\n\\r]+/g, ' ');\n        tmpmf = tmpmf.replaceAll(/(SEQRES|\\d+| [A-Z] | [\\dA-Z]{4-50})/g, '');\n        // we need to correct the uppercase / lowercase\n        let parts = tmpmf.split(' ');\n        newMF = 'H';\n        for (let i = 0; i < parts.length; i++) {\n            newMF += parts[i].slice(0, 1) + parts[i].slice(1).toLowerCase();\n        }\n        newMF += 'OH';\n    }\n    else if (mf.includes('(') && isOneLetterCode(mf)) {\n        // we expect one-letter code with modification\n        newMF = '';\n        let nTerminal = 'H';\n        let cTerminal = 'OH';\n        let parenthesisCounter = 0;\n        for (let i = 0; i < mf.length; i++) {\n            let currentSymbol = mf[i];\n            if (currentSymbol === '(' ||\n                currentSymbol === ')' ||\n                parenthesisCounter > 0) {\n                if (currentSymbol === '(') {\n                    parenthesisCounter++;\n                    if (i === 0)\n                        nTerminal = '';\n                }\n                if (currentSymbol === ')') {\n                    parenthesisCounter--;\n                    if (i === mf.length - 1)\n                        cTerminal = '';\n                }\n                newMF += currentSymbol;\n                continue;\n            }\n            newMF += convertAA1To3(currentSymbol);\n        }\n        newMF = nTerminal + newMF + cTerminal;\n    }\n    else if (mf.search(/[A-Za-z][\\da-z]/) === -1) {\n        // UNIPROT\n        //   370        380        390        400        410        420\n        //GFKPNLRKTF VSGLFRESCG AHFYRGVDVK PFYIKKPVDN LFALMLILNR LRGWGVVGGM\n        //\n        //    430        440        450        460        470        480\n        //SDPRLYKVWV RLSSQVPSMF FGGTDLAADY YVVSPPTAVS VYTKTPYGRL LADTRTSGFR\n        // We remove all the number, all the spaces, etc\n        newMF = `H${convertAA1To3(newMF.replaceAll(/[^A-Z]/g, ''))}OH`;\n    }\n    return newMF;\n}\nfunction convertAA1To3(mf) {\n    let newmf = '';\n    for (let i = 0; i < mf.length; i++) {\n        newmf += aa1To3(mf.charAt(i));\n    }\n    return newmf;\n}\nfunction aa1To3(code) {\n    for (let i = 0; i < aminoAcids_1.aminoAcids.length; i++) {\n        if (aminoAcids_1.aminoAcids[i].aa1 === code) {\n            return aminoAcids_1.aminoAcids[i].aa3;\n        }\n    }\n    throw new Error(`Invalid 1 letter code: ${code}`);\n}\n// mf can contain as well parenthesis. We need to check if it is not yet a correct molecular formula\nfunction isOneLetterCode(mf) {\n    let parenthesisLevel = 0;\n    for (let char of mf) {\n        if (parenthesisLevel === 0 && char.match(/[a-z]/))\n            return false;\n        if (char === '(')\n            parenthesisLevel++;\n        if (char === ')')\n            parenthesisLevel--;\n    }\n    return true;\n}\n//# sourceMappingURL=sequenceToMF.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.generatePeptideFragments = generatePeptideFragments;\nfunction generatePeptideFragments(mf, options) {\n    if (options === undefined) {\n        options = {\n            a: false,\n            b: true,\n            c: false,\n            x: false,\n            y: true,\n            z: false,\n            i: false,\n            ya: false,\n            yb: false,\n            yc: false,\n            zc: false,\n        };\n    }\n    options.maxInternal = options.maxInternal || Number.MAX_VALUE;\n    options.minInternal = options.minInternal || 0;\n    let mfs = [];\n    // need to allow 0-9 to deal with neutral loss\n    let mfparts = mf\n        .replaceAll(/([\\d)a-z])([A-Z][a-z](?=[a-z]))/g, '$1 $2')\n        .split(/ /);\n    let nTerm = '';\n    let cTerm = '';\n    if (mfparts[0].startsWith('(')) {\n        nTerm += mfparts[0];\n        mfparts = mfparts.splice(1);\n    }\n    if (mfparts.at(-1).includes('(')) {\n        cTerm += mfparts.at(-1).replace(/^[^()]*/, '');\n        mfparts[mfparts.length - 1] = mfparts.at(-1).replace(/\\(.*/, '');\n    }\n    for (let i = 1; i < mfparts.length; i++) {\n        nTerm += mfparts[i - 1];\n        cTerm = mfparts[mfparts.length - i] + cTerm;\n        addNTerm(mfs, nTerm, i, options);\n        addCTerm(mfs, cTerm, i, options);\n        if (options.i)\n            mfs.push(`${mfparts[i]}HC-1O-1(+1)$i:${mfparts[i]}`);\n        if (options.ya || options.yb || options.yc || options.zc) {\n            // we have double fragmentations\n            for (let j = i + 1; j < Math.min(mfparts.length, options.maxInternal + i + 1); j++) {\n                let iTerm = '';\n                if (j - i >= options.minInternal) {\n                    for (let k = i; k < j; k++) {\n                        iTerm += mfparts[k];\n                    }\n                    addITerm(mfs, iTerm, mfparts.length - i, j, options);\n                }\n            }\n        }\n    }\n    // todo does this make sense ??? I think we should remote those 3 lines\n    if (mfs.length === 0) {\n        mfs = mfs.concat([mf]);\n    }\n    return mfs;\n}\nfunction addNTerm(mfs, nTerm, i, options) {\n    if (options.a)\n        mfs.push(`${nTerm}C-1O-1(+1)$a${i}`);\n    if (options.b)\n        mfs.push(`${nTerm}(+1)$b${i}`);\n    if (options.c)\n        mfs.push(`${nTerm}NH3(+1)$c${i}`);\n}\nfunction addITerm(mfs, iTerm, i, j, options) {\n    if (options.ya)\n        mfs.push(`H${iTerm}C-1O-1(+1)$a${j}y${i}`);\n    if (options.yb)\n        mfs.push(`H${iTerm}(+1)$b${j}y${i}`);\n    if (options.yc)\n        mfs.push(`H${iTerm}NH3(+1)$c${j}y${i}`);\n    if (options.zc)\n        mfs.push(`N-1${iTerm}NH3(+1)$c${j}z${i}`);\n}\nfunction addCTerm(mfs, cTerm, i, options) {\n    if (options.x)\n        mfs.push(`CO(+1)${cTerm}$x${i}`);\n    if (options.y)\n        mfs.push(`H2(+1)${cTerm}$y${i}`);\n    if (options.z)\n        mfs.push(`N-1H-1(+1)${cTerm}$z${i}`);\n}\n//# sourceMappingURL=generatePeptideFragments.js.map","\"use strict\";\n/*\nIotuibs:\n* minMissed (default: 0)\n* maxMissed (default: 0)\n* minResidue: 0;\n* maxResidue: infinity\n* enzyme: chymotrypsin, trypsin, glucph4, glucph8, thermolysin, cyanogenbromide : Mandatory, no default value !\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.digestPeptide = digestPeptide;\nfunction digestPeptide(sequence, options = {}) {\n    sequence = sequence.replace(/^H([^a-z])/, '$1').replace(/OH$/, '');\n    options.enzyme = options.enzyme || 'trypsin';\n    if (options.minMissed === undefined)\n        options.minMissed = 0;\n    if (options.maxMissed === undefined)\n        options.maxMissed = 0;\n    if (options.minResidue === undefined)\n        options.minResidue = 0;\n    if (options.maxResidue === undefined)\n        options.maxResidue = Number.MAX_VALUE;\n    let regexp = getRegexp(options.enzyme);\n    let fragments = sequence.replace(regexp, '$1 ').split(/ /).filter(Boolean);\n    {\n        let from = 0;\n        for (let i = 0; i < fragments.length; i++) {\n            let nbResidue = fragments[i]\n                .replaceAll(/([A-Z][a-z]{2})/g, ' $1')\n                .split(/ /)\n                .filter(Boolean).length;\n            fragments[i] = {\n                sequence: fragments[i],\n                nbResidue,\n                from,\n                to: from + nbResidue - 1,\n            };\n            from += nbResidue;\n        }\n    }\n    let results = [];\n    for (let i = 0; i < fragments.length - options.minMissed; i++) {\n        for (let j = options.minMissed; j <= Math.min(options.maxMissed, fragments.length - i - 1); j++) {\n            let fragment = '';\n            let nbResidue = 0;\n            for (let k = i; k <= i + j; k++) {\n                fragment += fragments[k].sequence;\n                nbResidue += fragments[k].nbResidue;\n            }\n            let from = fragments[i].from + 1;\n            let to = fragments[i + j].to + 1;\n            if (fragment &&\n                nbResidue >= options.minResidue &&\n                nbResidue <= options.maxResidue) {\n                results.push(`H${fragment}OH$D${from}>${to}`);\n            }\n        }\n    }\n    return results;\n}\nfunction getRegexp(enzyme) {\n    switch (enzyme.toLowerCase().replaceAll(/[^\\da-z]/g, '')) {\n        case 'chymotrypsin':\n            return /(Phe|Tyr|Trp)(?!Pro)/g;\n        case 'trypsin':\n            return /(Lys|Arg)(?!Pro)/g;\n        case 'lysc':\n            return /(Lys)(?!Pro)/g;\n        case 'glucph4':\n            return /(Glu)(?!Pro|Glu)/g;\n        case 'glucph8':\n            return /(Asp|Glu)(?!Pro|Glu)/g;\n        case 'thermolysin': // N-term of  Leu, Phe, Val, Ile, Ala, Met\n            return /()(?=Ile|Leu|Val|Ala|Met|Phe)/g;\n        case 'cyanogenbromide':\n            return /(Met)/g;\n        case 'any':\n            return /()(?=[A-Z][a-z]{2})/g;\n        default:\n            throw new Error(`Digestion enzyme: ${enzyme} is unknown`);\n    }\n}\n//# sourceMappingURL=digestPeptide.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n    }\n    Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n    o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n    var ownKeys = function(o) {\n        ownKeys = Object.getOwnPropertyNames || function (o) {\n            var ar = [];\n            for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n            return ar;\n        };\n        return ownKeys(o);\n    };\n    return function (mod) {\n        if (mod && mod.__esModule) return mod;\n        var result = {};\n        if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n        __setModuleDefault(result, mod);\n        return result;\n    };\n})();\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getInfo = getInfo;\nexports.calculateIEP = calculateIEP;\nexports.calculateIEPChart = calculateIEPChart;\nexports.getColorForIEP = getColorForIEP;\nexports.calculateCharge = calculateCharge;\nconst aminoAcids_1 = require(\"./aminoAcids\");\nconst IEP = __importStar(require(\"./isoElectricPoint\"));\nconst splitPeptide_js_1 = require(\"./splitPeptide.js\");\n__exportStar(require(\"./allowNeutralLoss.js\"), exports);\n__exportStar(require(\"./chargePeptide.js\"), exports);\n__exportStar(require(\"./sequenceToMF.js\"), exports);\n__exportStar(require(\"./generatePeptideFragments.js\"), exports);\n__exportStar(require(\"./digestPeptide.js\"), exports);\n__exportStar(require(\"./splitPeptide.js\"), exports);\nfunction getInfo() {\n    return aminoAcids_1.aminoAcids;\n}\n// sequence should be in the \"right\" format like HAlaGlyProOH\nfunction calculateIEP(sequence) {\n    let aas = (0, splitPeptide_js_1.splitPeptide)(sequence);\n    let result = IEP.calculateIEP(aas);\n    return result;\n}\nfunction calculateIEPChart(sequence) {\n    let aas = (0, splitPeptide_js_1.splitPeptide)(sequence);\n    let result = IEP.calculateChart(aas);\n    return result;\n}\nfunction getColorForIEP(iep) {\n    return IEP.getColor(iep);\n}\nfunction calculateCharge(sequence, ph) {\n    let aas = (0, splitPeptide_js_1.splitPeptide)(sequence);\n    return IEP.calculateCharge(aas, ph);\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fragmentPeptide = fragmentPeptide;\nconst peptide_1 = require(\"peptide\");\nfunction fragmentPeptide(sequence, options = {}) {\n    const { digestion = {}, protonation, fragmentation, protonationPH } = options;\n    sequence = (0, peptide_1.sequenceToMF)(sequence);\n    let fragmentsArray = [sequence];\n    // do we also have some digest fragments ?\n    if (digestion.enzyme) {\n        let digests = (0, peptide_1.digestPeptide)(sequence, digestion);\n        if (options.protonation) {\n            digests = (0, peptide_1.chargePeptide)(digests, {\n                pH: options.protonationPH,\n            });\n        }\n        fragmentsArray = fragmentsArray.concat(digests);\n    }\n    // allow neutral loss\n    if (options.allowNeutralLoss) {\n        sequence = (0, peptide_1.allowNeutralLoss)(sequence);\n    }\n    // apply protonation\n    if (protonation) {\n        sequence = (0, peptide_1.chargePeptide)(sequence, { pH: protonationPH });\n    }\n    // calculate fragmentation\n    let fragments = (0, peptide_1.generatePeptideFragments)(sequence, fragmentation);\n    fragmentsArray = fragmentsArray.concat(fragments);\n    return fragmentsArray;\n}\n//# sourceMappingURL=fragmentPeptide.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromPeptidicSequence = fromPeptidicSequence;\nconst chemical_groups_1 = require(\"chemical-groups\");\nconst mf_generator_1 = require(\"mf-generator\");\nconst fragmentPeptide_1 = require(\"./util/fragmentPeptide\");\n/**\n * Add a database starting from a peptidic sequence\n *\n * @param {string}         [sequences] Sequence as a string of 1 letter or 3 letters code. Could also be a correct molecular formula respecting uppercase, lowercase. It can be comma separated if you have many peptide sequences\n * @param {object}         [options={}]\n * @param {boolean}        [options.estimate=false] - estimate the number of MF without filters\n * @param {string}         [options.ionizations='']\n * @param {function}       [options.onStep] - Callback to do after each step\n * @param {array}          [options.mfsArray=[]]\n * @param {boolean}        [options.protonation=false]\n * @param {number}         [options.protonationPH=7]\n * @param {boolean}        [options.allowNeutralLoss=false]\n * @param {number}         [options.limit=100000]\n *\n * @param {object}         [options.digestion={}] Object defining options for digestion\n * @param {number}         [options.digestion.minMissed=0] Minimal number of allowed missed cleavage\n * @param {number}         [options.digestion.maxMissed=0] Maximal number of allowed missed cleavage\n * @param {number}         [options.digestion.minResidue=0] Minimal number of residues\n * @param {number}         [options.digestion.maxResidue=+Infinity] Maximal number of residues\n * @param {string}         [options.digestion.enzyme] Mandatory field containing the name of the enzyme among: chymotrypsin, trypsin, glucph4, glucph8, thermolysin, cyanogenbromide\n *\n * @param {object}         [options.fragmentation={}] Object defining options for fragmentation\n * @param {boolean}        [options.fragmentation.a=false] If true allow fragments of type 'a'\n * @param {boolean}        [options.fragmentation.b=false] If true allow fragments of type 'b'\n * @param {boolean}        [options.fragmentation.c=false] If true allow fragments of type 'c'\n * @param {boolean}        [options.fragmentation.x=false] If true allow fragments of type 'x'\n * @param {boolean}        [options.fragmentation.y=false] If true allow fragments of type 'y'\n * @param {boolean}        [options.fragmentation.z=false] If true allow fragments of type 'z'\n * @param {boolean}        [options.fragmentation.ya=false] If true allow fragments of type 'ya'\n * @param {boolean}        [options.fragmentation.yb=false] If true allow fragments of type 'yb'\n * @param {boolean}        [options.fragmentation.yc=false] If true allow fragments of type 'yc'\n * @param {boolean}        [options.fragmentation.zc=false] If true allow fragments of type 'zc'\n * @param {number}         [options.fragmentation.minInternal=0] Minimal internal fragment length\n * @param {number}         [options.fragmentation.maxInternal=+Infinity] Maximal internal fragment length\n *\n * @param {object}         [options.filter={}] Object defining options for molecular formula filter\n * @param {number}         [options.filter.precision=1000] - The precision on the experimental mass\n * @param {number}         [options.filter.targetMass] - Target mass, allows to calculate error and filter results\n * @param {number[]}       [options.filter.targetMasses] - Target masses: SORTED array of numbers\n * @param {number[]}       [options.filter.targetIntensities] - Target intensities: SORTED array of numbers\n * @param {number}         [options.filter.minEM=0] - Minimal neutral monoisotopic mass\n * @param {number}         [options.filter.maxEM=+Infinity] - Maximal neutral monoisotopic mass\n * @param {number}         [options.filter.minMSEM=0] - Minimal observed monoisotopic mass\n * @param {number}         [options.filter.maxMSEM=+Infinity] - Maximal observed monoisotopic mass\n * @param {number}         [options.filter.minCharge=-Infinity] - Minimal charge\n * @param {number}         [options.filter.maxCharge=+Infinity] - Maximal charge\n * @param {boolean}        [options.filter.absoluteCharge=false] - If true, the charge is absolute (so between 0 and +Infinity by default)\n * @param {object}         [options.filter.unsaturation={}]\n * @param {number}         [options.filter.unsaturation.min=-Infinity] - Minimal unsaturation\n * @param {number}         [options.filter.unsaturation.max=+Infinity] - Maximal unsaturation\n * @param {boolean}        [options.filter.unsaturation.onlyInteger=false] - Integer unsaturation\n * @param {boolean}        [options.filter.unsaturation.onlyNonInteger=false] - Non integer unsaturation\n * @param {function}       [options.filter.callback] - a function to filter the MF\n * @returns {Promise}\n */\nasync function fromPeptidicSequence(sequences, options = {}) {\n    const { digestion = {}, mfsArray: originalMFsArray = [], allowNeutralLoss = false, protonation = false, protonationPH = 7, fragmentation = {}, filter = {}, ionizations = '', limit = 100000, estimate = false, onStep, links = {}, } = options;\n    const hasLinked = sequences.includes('#');\n    const mfsArrayLinked = structuredClone(originalMFsArray);\n    const mfsArrayUnlinked = structuredClone(originalMFsArray);\n    const unlinked = [];\n    mfsArrayUnlinked.push(unlinked);\n    for (const sequence of sequences.split(/[,:]/)) {\n        let fragmentsArray = (0, fragmentPeptide_1.fragmentPeptide)(sequence, {\n            digestion,\n            protonation,\n            fragmentation,\n            protonationPH,\n            allowNeutralLoss,\n        });\n        mfsArrayLinked.push(fragmentsArray.filter((fragment) => fragment.includes('#')));\n        unlinked.push(...fragmentsArray.filter((fragment) => !fragment.includes('#')));\n    }\n    let combined = await (0, mf_generator_1.generateMFs)(mfsArrayUnlinked, {\n        ionizations,\n        filter,\n        estimate,\n        limit,\n        onStep,\n        links,\n    });\n    if (hasLinked) {\n        combined.push(...(await (0, mf_generator_1.generateMFs)(mfsArrayLinked, {\n            ionizations,\n            filter,\n            estimate,\n            limit,\n            onStep,\n            links,\n        })));\n    }\n    if (!estimate) {\n        for (const result of combined) {\n            result.sequence = (0, chemical_groups_1.groupsToSequence)(result.parts.filter(Boolean).join(' '));\n        }\n    }\n    return combined;\n}\n//# sourceMappingURL=fromPeptidicSequence.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromRange = fromRange;\nconst mf_generator_1 = require(\"mf-generator\");\n/**\n * Generates a database 'generated' from an array of molecular formula\n * @param {string} rangesString - a string representing the range to search\n * @param {object} [options={}]\n * @param {boolean} [options.estimate=false] - estimate the number of MF without filters\n * @param {function} [options.onStep] - Callback to do after each step\n * @param {string} [options.databaseName='generated']\n * @param {number} [options.limit=100000] - Maximum number of results\n * @param {boolean} [options.canonizeMF=true] - Canonize molecular formula\n * @param {boolean} [options.uniqueMFs=true] - Force canonization and make MF unique\n * @param {string} [options.ionizations=''] - Comma separated list of ionizations (to charge the molecule)\n * @param {object} [options.filter={}]\n * @param {number} [options.filter.minMass=0] - Minimal monoisotopic mass\n * @param {number} [options.filter.maxMass=+Infinity] - Maximal monoisotopic mass\n * @param {number} [options.filter.minEM=0] - Minimal neutral monoisotopic mass\n * @param {number} [options.filter.maxEM=+Infinity] - Maximal neutral monoisotopic mass\n * @param {number} [options.filter.minMSEM=0] - Minimal observed monoisotopic mass\n * @param {number} [options.filter.maxMSEM=+Infinity] - Maximal observed monoisotopic mass\n * @param {number} [options.filter.minCharge=-Infinity] - Minimal charge\n * @param {number} [options.filter.maxCharge=+Infinity] - Maximal charge\n * @param {boolean}   [options.filter.absoluteCharge=false] - If true, the charge is absolute (so between 0 and +Infinity by default)\n * @param {object} [options.filter.unsaturation={}]\n * @param {number} [options.filter.unsaturation.min=-Infinity] - Minimal unsaturation\n * @param {number} [options.filter.unsaturation.max=+Infinity] - Maximal unsaturation\n * @param {boolean} [options.filter.unsaturation.onlyInteger=false] - Integer unsaturation\n * @param {boolean} [options.filter.unsaturation.onlyNonInteger=false] - Non integer unsaturation\n * @param {function} [options.filter.callback] - a function to filter the MF\n * @param {object} [options.filter.atoms] - object of atom:{min, max}\n *\n * @returns {Promise} - list of possible molecular formula\n *\n * @example\n * const {EMDB} = require('emdb');\n * let emdb = new EMDB();\n * // semi-columns separated for combination, comma for 'or'\n * emdb.fromRange('C1-10, H1-10; Cl0-1 Br0-1'); // create a database 'generated' combining all possibilies\n * console.log(emdb.get('generated').length); // 80\n */\nasync function fromRange(rangesString, options = {}) {\n    let ranges = rangesString.split(/ *[\\n\\r;] */);\n    for (let i = 0; i < ranges.length; i++) {\n        let range = ranges[i];\n        if (range.includes(',')) {\n            ranges[i] = range.split(/ *, */);\n        }\n    }\n    return (0, mf_generator_1.generateMFs)(ranges, options);\n}\n//# sourceMappingURL=fromRange.js.map","/*!\n\nJSZip v3.10.1 - A JavaScript class for generating and reading zip files\n<http://stuartk.com/jszip>\n\n(c) 2009-2016 Stuart Knightley <stuart [at] stuartk.com>\nDual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/main/LICENSE.markdown.\n\nJSZip uses the library pako released under the MIT license :\nhttps://github.com/nodeca/pako/blob/main/LICENSE\n*/\n\n!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{(\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:this).JSZip=e()}}(function(){return function s(a,o,h){function u(r,e){if(!o[r]){if(!a[r]){var t=\"function\"==typeof require&&require;if(!e&&t)return t(r,!0);if(l)return l(r,!0);var n=new Error(\"Cannot find module '\"+r+\"'\");throw n.code=\"MODULE_NOT_FOUND\",n}var i=o[r]={exports:{}};a[r][0].call(i.exports,function(e){var t=a[r][1][e];return u(t||e)},i,i.exports,s,a,o,h)}return o[r].exports}for(var l=\"function\"==typeof require&&require,e=0;e<h.length;e++)u(h[e]);return u}({1:[function(e,t,r){\"use strict\";var d=e(\"./utils\"),c=e(\"./support\"),p=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";r.encode=function(e){for(var t,r,n,i,s,a,o,h=[],u=0,l=e.length,f=l,c=\"string\"!==d.getTypeOf(e);u<e.length;)f=l-u,n=c?(t=e[u++],r=u<l?e[u++]:0,u<l?e[u++]:0):(t=e.charCodeAt(u++),r=u<l?e.charCodeAt(u++):0,u<l?e.charCodeAt(u++):0),i=t>>2,s=(3&t)<<4|r>>4,a=1<f?(15&r)<<2|n>>6:64,o=2<f?63&n:64,h.push(p.charAt(i)+p.charAt(s)+p.charAt(a)+p.charAt(o));return h.join(\"\")},r.decode=function(e){var t,r,n,i,s,a,o=0,h=0,u=\"data:\";if(e.substr(0,u.length)===u)throw new Error(\"Invalid base64 input, it looks like a data url.\");var l,f=3*(e=e.replace(/[^A-Za-z0-9+/=]/g,\"\")).length/4;if(e.charAt(e.length-1)===p.charAt(64)&&f--,e.charAt(e.length-2)===p.charAt(64)&&f--,f%1!=0)throw new Error(\"Invalid base64 input, bad content length.\");for(l=c.uint8array?new Uint8Array(0|f):new Array(0|f);o<e.length;)t=p.indexOf(e.charAt(o++))<<2|(i=p.indexOf(e.charAt(o++)))>>4,r=(15&i)<<4|(s=p.indexOf(e.charAt(o++)))>>2,n=(3&s)<<6|(a=p.indexOf(e.charAt(o++))),l[h++]=t,64!==s&&(l[h++]=r),64!==a&&(l[h++]=n);return l}},{\"./support\":30,\"./utils\":32}],2:[function(e,t,r){\"use strict\";var n=e(\"./external\"),i=e(\"./stream/DataWorker\"),s=e(\"./stream/Crc32Probe\"),a=e(\"./stream/DataLengthProbe\");function o(e,t,r,n,i){this.compressedSize=e,this.uncompressedSize=t,this.crc32=r,this.compression=n,this.compressedContent=i}o.prototype={getContentWorker:function(){var e=new i(n.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new a(\"data_length\")),t=this;return e.on(\"end\",function(){if(this.streamInfo.data_length!==t.uncompressedSize)throw new Error(\"Bug : uncompressed data size mismatch\")}),e},getCompressedWorker:function(){return new i(n.Promise.resolve(this.compressedContent)).withStreamInfo(\"compressedSize\",this.compressedSize).withStreamInfo(\"uncompressedSize\",this.uncompressedSize).withStreamInfo(\"crc32\",this.crc32).withStreamInfo(\"compression\",this.compression)}},o.createWorkerFrom=function(e,t,r){return e.pipe(new s).pipe(new a(\"uncompressedSize\")).pipe(t.compressWorker(r)).pipe(new a(\"compressedSize\")).withStreamInfo(\"compression\",t)},t.exports=o},{\"./external\":6,\"./stream/Crc32Probe\":25,\"./stream/DataLengthProbe\":26,\"./stream/DataWorker\":27}],3:[function(e,t,r){\"use strict\";var n=e(\"./stream/GenericWorker\");r.STORE={magic:\"\\0\\0\",compressWorker:function(){return new n(\"STORE compression\")},uncompressWorker:function(){return new n(\"STORE decompression\")}},r.DEFLATE=e(\"./flate\")},{\"./flate\":7,\"./stream/GenericWorker\":28}],4:[function(e,t,r){\"use strict\";var n=e(\"./utils\");var o=function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t){return void 0!==e&&e.length?\"string\"!==n.getTypeOf(e)?function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a<s;a++)e=e>>>8^i[255&(e^t[a])];return-1^e}(0|t,e,e.length,0):function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a<s;a++)e=e>>>8^i[255&(e^t.charCodeAt(a))];return-1^e}(0|t,e,e.length,0):0}},{\"./utils\":32}],5:[function(e,t,r){\"use strict\";r.base64=!1,r.binary=!1,r.dir=!1,r.createFolders=!0,r.date=null,r.compression=null,r.compressionOptions=null,r.comment=null,r.unixPermissions=null,r.dosPermissions=null},{}],6:[function(e,t,r){\"use strict\";var n=null;n=\"undefined\"!=typeof Promise?Promise:e(\"lie\"),t.exports={Promise:n}},{lie:37}],7:[function(e,t,r){\"use strict\";var n=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Uint32Array,i=e(\"pako\"),s=e(\"./utils\"),a=e(\"./stream/GenericWorker\"),o=n?\"uint8array\":\"array\";function h(e,t){a.call(this,\"FlateWorker/\"+e),this._pako=null,this._pakoAction=e,this._pakoOptions=t,this.meta={}}r.magic=\"\\b\\0\",s.inherits(h,a),h.prototype.processChunk=function(e){this.meta=e.meta,null===this._pako&&this._createPako(),this._pako.push(s.transformTo(o,e.data),!1)},h.prototype.flush=function(){a.prototype.flush.call(this),null===this._pako&&this._createPako(),this._pako.push([],!0)},h.prototype.cleanUp=function(){a.prototype.cleanUp.call(this),this._pako=null},h.prototype._createPako=function(){this._pako=new i[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var t=this;this._pako.onData=function(e){t.push({data:e,meta:t.meta})}},r.compressWorker=function(e){return new h(\"Deflate\",e)},r.uncompressWorker=function(){return new h(\"Inflate\",{})}},{\"./stream/GenericWorker\":28,\"./utils\":32,pako:38}],8:[function(e,t,r){\"use strict\";function A(e,t){var r,n=\"\";for(r=0;r<t;r++)n+=String.fromCharCode(255&e),e>>>=8;return n}function n(e,t,r,n,i,s){var a,o,h=e.file,u=e.compression,l=s!==O.utf8encode,f=I.transformTo(\"string\",s(h.name)),c=I.transformTo(\"string\",O.utf8encode(h.name)),d=h.comment,p=I.transformTo(\"string\",s(d)),m=I.transformTo(\"string\",O.utf8encode(d)),_=c.length!==h.name.length,g=m.length!==d.length,b=\"\",v=\"\",y=\"\",w=h.dir,k=h.date,x={crc32:0,compressedSize:0,uncompressedSize:0};t&&!r||(x.crc32=e.crc32,x.compressedSize=e.compressedSize,x.uncompressedSize=e.uncompressedSize);var S=0;t&&(S|=8),l||!_&&!g||(S|=2048);var z=0,C=0;w&&(z|=16),\"UNIX\"===i?(C=798,z|=function(e,t){var r=e;return e||(r=t?16893:33204),(65535&r)<<16}(h.unixPermissions,w)):(C=20,z|=function(e){return 63&(e||0)}(h.dosPermissions)),a=k.getUTCHours(),a<<=6,a|=k.getUTCMinutes(),a<<=5,a|=k.getUTCSeconds()/2,o=k.getUTCFullYear()-1980,o<<=4,o|=k.getUTCMonth()+1,o<<=5,o|=k.getUTCDate(),_&&(v=A(1,1)+A(B(f),4)+c,b+=\"up\"+A(v.length,2)+v),g&&(y=A(1,1)+A(B(p),4)+m,b+=\"uc\"+A(y.length,2)+y);var E=\"\";return E+=\"\\n\\0\",E+=A(S,2),E+=u.magic,E+=A(a,2),E+=A(o,2),E+=A(x.crc32,4),E+=A(x.compressedSize,4),E+=A(x.uncompressedSize,4),E+=A(f.length,2),E+=A(b.length,2),{fileRecord:R.LOCAL_FILE_HEADER+E+f+b,dirRecord:R.CENTRAL_FILE_HEADER+A(C,2)+E+A(p.length,2)+\"\\0\\0\\0\\0\"+A(z,4)+A(n,4)+f+b+p}}var I=e(\"../utils\"),i=e(\"../stream/GenericWorker\"),O=e(\"../utf8\"),B=e(\"../crc32\"),R=e(\"../signature\");function s(e,t,r,n){i.call(this,\"ZipFileWorker\"),this.bytesWritten=0,this.zipComment=t,this.zipPlatform=r,this.encodeFileName=n,this.streamFiles=e,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}I.inherits(s,i),s.prototype.push=function(e){var t=e.meta.percent||0,r=this.entriesCount,n=this._sources.length;this.accumulate?this.contentBuffer.push(e):(this.bytesWritten+=e.data.length,i.prototype.push.call(this,{data:e.data,meta:{currentFile:this.currentFile,percent:r?(t+100*(r-n-1))/r:100}}))},s.prototype.openedSource=function(e){this.currentSourceOffset=this.bytesWritten,this.currentFile=e.file.name;var t=this.streamFiles&&!e.file.dir;if(t){var r=n(e,t,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:r.fileRecord,meta:{percent:0}})}else this.accumulate=!0},s.prototype.closedSource=function(e){this.accumulate=!1;var t=this.streamFiles&&!e.file.dir,r=n(e,t,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(r.dirRecord),t)this.push({data:function(e){return R.DATA_DESCRIPTOR+A(e.crc32,4)+A(e.compressedSize,4)+A(e.uncompressedSize,4)}(e),meta:{percent:100}});else for(this.push({data:r.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},s.prototype.flush=function(){for(var e=this.bytesWritten,t=0;t<this.dirRecords.length;t++)this.push({data:this.dirRecords[t],meta:{percent:100}});var r=this.bytesWritten-e,n=function(e,t,r,n,i){var s=I.transformTo(\"string\",i(n));return R.CENTRAL_DIRECTORY_END+\"\\0\\0\\0\\0\"+A(e,2)+A(e,2)+A(t,4)+A(r,4)+A(s.length,2)+s}(this.dirRecords.length,r,e,this.zipComment,this.encodeFileName);this.push({data:n,meta:{percent:100}})},s.prototype.prepareNextSource=function(){this.previous=this._sources.shift(),this.openedSource(this.previous.streamInfo),this.isPaused?this.previous.pause():this.previous.resume()},s.prototype.registerPrevious=function(e){this._sources.push(e);var t=this;return e.on(\"data\",function(e){t.processChunk(e)}),e.on(\"end\",function(){t.closedSource(t.previous.streamInfo),t._sources.length?t.prepareNextSource():t.end()}),e.on(\"error\",function(e){t.error(e)}),this},s.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(!this.previous&&this._sources.length?(this.prepareNextSource(),!0):this.previous||this._sources.length||this.generatedError?void 0:(this.end(),!0))},s.prototype.error=function(e){var t=this._sources;if(!i.prototype.error.call(this,e))return!1;for(var r=0;r<t.length;r++)try{t[r].error(e)}catch(e){}return!0},s.prototype.lock=function(){i.prototype.lock.call(this);for(var e=this._sources,t=0;t<e.length;t++)e[t].lock()},t.exports=s},{\"../crc32\":4,\"../signature\":23,\"../stream/GenericWorker\":28,\"../utf8\":31,\"../utils\":32}],9:[function(e,t,r){\"use strict\";var u=e(\"../compressions\"),n=e(\"./ZipFileWorker\");r.generateWorker=function(e,a,t){var o=new n(a.streamFiles,t,a.platform,a.encodeFileName),h=0;try{e.forEach(function(e,t){h++;var r=function(e,t){var r=e||t,n=u[r];if(!n)throw new Error(r+\" is not a valid compression method !\");return n}(t.options.compression,a.compression),n=t.options.compressionOptions||a.compressionOptions||{},i=t.dir,s=t.date;t._compressWorker(r,n).withStreamInfo(\"file\",{name:e,dir:i,date:s,comment:t.comment||\"\",unixPermissions:t.unixPermissions,dosPermissions:t.dosPermissions}).pipe(o)}),o.entriesCount=h}catch(e){o.error(e)}return o}},{\"../compressions\":3,\"./ZipFileWorker\":8}],10:[function(e,t,r){\"use strict\";function n(){if(!(this instanceof n))return new n;if(arguments.length)throw new Error(\"The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.\");this.files=Object.create(null),this.comment=null,this.root=\"\",this.clone=function(){var e=new n;for(var t in this)\"function\"!=typeof this[t]&&(e[t]=this[t]);return e}}(n.prototype=e(\"./object\")).loadAsync=e(\"./load\"),n.support=e(\"./support\"),n.defaults=e(\"./defaults\"),n.version=\"3.10.1\",n.loadAsync=function(e,t){return(new n).loadAsync(e,t)},n.external=e(\"./external\"),t.exports=n},{\"./defaults\":5,\"./external\":6,\"./load\":11,\"./object\":15,\"./support\":30}],11:[function(e,t,r){\"use strict\";var u=e(\"./utils\"),i=e(\"./external\"),n=e(\"./utf8\"),s=e(\"./zipEntries\"),a=e(\"./stream/Crc32Probe\"),l=e(\"./nodejsUtils\");function f(n){return new i.Promise(function(e,t){var r=n.decompressed.getContentWorker().pipe(new a);r.on(\"error\",function(e){t(e)}).on(\"end\",function(){r.streamInfo.crc32!==n.decompressed.crc32?t(new Error(\"Corrupted zip : CRC32 mismatch\")):e()}).resume()})}t.exports=function(e,o){var h=this;return o=u.extend(o||{},{base64:!1,checkCRC32:!1,optimizedBinaryString:!1,createFolders:!1,decodeFileName:n.utf8decode}),l.isNode&&l.isStream(e)?i.Promise.reject(new Error(\"JSZip can't accept a stream when loading a zip file.\")):u.prepareContent(\"the loaded zip file\",e,!0,o.optimizedBinaryString,o.base64).then(function(e){var t=new s(o);return t.load(e),t}).then(function(e){var t=[i.Promise.resolve(e)],r=e.files;if(o.checkCRC32)for(var n=0;n<r.length;n++)t.push(f(r[n]));return i.Promise.all(t)}).then(function(e){for(var t=e.shift(),r=t.files,n=0;n<r.length;n++){var i=r[n],s=i.fileNameStr,a=u.resolve(i.fileNameStr);h.file(a,i.decompressed,{binary:!0,optimizedBinaryString:!0,date:i.date,dir:i.dir,comment:i.fileCommentStr.length?i.fileCommentStr:null,unixPermissions:i.unixPermissions,dosPermissions:i.dosPermissions,createFolders:o.createFolders}),i.dir||(h.file(a).unsafeOriginalName=s)}return t.zipComment.length&&(h.comment=t.zipComment),h})}},{\"./external\":6,\"./nodejsUtils\":14,\"./stream/Crc32Probe\":25,\"./utf8\":31,\"./utils\":32,\"./zipEntries\":33}],12:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"../stream/GenericWorker\");function s(e,t){i.call(this,\"Nodejs stream input adapter for \"+e),this._upstreamEnded=!1,this._bindStream(t)}n.inherits(s,i),s.prototype._bindStream=function(e){var t=this;(this._stream=e).pause(),e.on(\"data\",function(e){t.push({data:e,meta:{percent:0}})}).on(\"error\",function(e){t.isPaused?this.generatedError=e:t.error(e)}).on(\"end\",function(){t.isPaused?t._upstreamEnded=!0:t.end()})},s.prototype.pause=function(){return!!i.prototype.pause.call(this)&&(this._stream.pause(),!0)},s.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(this._upstreamEnded?this.end():this._stream.resume(),!0)},t.exports=s},{\"../stream/GenericWorker\":28,\"../utils\":32}],13:[function(e,t,r){\"use strict\";var i=e(\"readable-stream\").Readable;function n(e,t,r){i.call(this,t),this._helper=e;var n=this;e.on(\"data\",function(e,t){n.push(e)||n._helper.pause(),r&&r(t)}).on(\"error\",function(e){n.emit(\"error\",e)}).on(\"end\",function(){n.push(null)})}e(\"../utils\").inherits(n,i),n.prototype._read=function(){this._helper.resume()},t.exports=n},{\"../utils\":32,\"readable-stream\":16}],14:[function(e,t,r){\"use strict\";t.exports={isNode:\"undefined\"!=typeof Buffer,newBufferFrom:function(e,t){if(Buffer.from&&Buffer.from!==Uint8Array.from)return Buffer.from(e,t);if(\"number\"==typeof e)throw new Error('The \"data\" argument must not be a number');return new Buffer(e,t)},allocBuffer:function(e){if(Buffer.alloc)return Buffer.alloc(e);var t=new Buffer(e);return t.fill(0),t},isBuffer:function(e){return Buffer.isBuffer(e)},isStream:function(e){return e&&\"function\"==typeof e.on&&\"function\"==typeof e.pause&&\"function\"==typeof e.resume}}},{}],15:[function(e,t,r){\"use strict\";function s(e,t,r){var n,i=u.getTypeOf(t),s=u.extend(r||{},f);s.date=s.date||new Date,null!==s.compression&&(s.compression=s.compression.toUpperCase()),\"string\"==typeof s.unixPermissions&&(s.unixPermissions=parseInt(s.unixPermissions,8)),s.unixPermissions&&16384&s.unixPermissions&&(s.dir=!0),s.dosPermissions&&16&s.dosPermissions&&(s.dir=!0),s.dir&&(e=g(e)),s.createFolders&&(n=_(e))&&b.call(this,n,!0);var a=\"string\"===i&&!1===s.binary&&!1===s.base64;r&&void 0!==r.binary||(s.binary=!a),(t instanceof c&&0===t.uncompressedSize||s.dir||!t||0===t.length)&&(s.base64=!1,s.binary=!0,t=\"\",s.compression=\"STORE\",i=\"string\");var o=null;o=t instanceof c||t instanceof l?t:p.isNode&&p.isStream(t)?new m(e,t):u.prepareContent(e,t,s.binary,s.optimizedBinaryString,s.base64);var h=new d(e,o,s);this.files[e]=h}var i=e(\"./utf8\"),u=e(\"./utils\"),l=e(\"./stream/GenericWorker\"),a=e(\"./stream/StreamHelper\"),f=e(\"./defaults\"),c=e(\"./compressedObject\"),d=e(\"./zipObject\"),o=e(\"./generate\"),p=e(\"./nodejsUtils\"),m=e(\"./nodejs/NodejsStreamInputAdapter\"),_=function(e){\"/\"===e.slice(-1)&&(e=e.substring(0,e.length-1));var t=e.lastIndexOf(\"/\");return 0<t?e.substring(0,t):\"\"},g=function(e){return\"/\"!==e.slice(-1)&&(e+=\"/\"),e},b=function(e,t){return t=void 0!==t?t:f.createFolders,e=g(e),this.files[e]||s.call(this,e,null,{dir:!0,createFolders:t}),this.files[e]};function h(e){return\"[object RegExp]\"===Object.prototype.toString.call(e)}var n={load:function(){throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\")},forEach:function(e){var t,r,n;for(t in this.files)n=this.files[t],(r=t.slice(this.root.length,t.length))&&t.slice(0,this.root.length)===this.root&&e(r,n)},filter:function(r){var n=[];return this.forEach(function(e,t){r(e,t)&&n.push(t)}),n},file:function(e,t,r){if(1!==arguments.length)return e=this.root+e,s.call(this,e,t,r),this;if(h(e)){var n=e;return this.filter(function(e,t){return!t.dir&&n.test(e)})}var i=this.files[this.root+e];return i&&!i.dir?i:null},folder:function(r){if(!r)return this;if(h(r))return this.filter(function(e,t){return t.dir&&r.test(e)});var e=this.root+r,t=b.call(this,e),n=this.clone();return n.root=t.name,n},remove:function(r){r=this.root+r;var e=this.files[r];if(e||(\"/\"!==r.slice(-1)&&(r+=\"/\"),e=this.files[r]),e&&!e.dir)delete this.files[r];else for(var t=this.filter(function(e,t){return t.name.slice(0,r.length)===r}),n=0;n<t.length;n++)delete this.files[t[n].name];return this},generate:function(){throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\")},generateInternalStream:function(e){var t,r={};try{if((r=u.extend(e||{},{streamFiles:!1,compression:\"STORE\",compressionOptions:null,type:\"\",platform:\"DOS\",comment:null,mimeType:\"application/zip\",encodeFileName:i.utf8encode})).type=r.type.toLowerCase(),r.compression=r.compression.toUpperCase(),\"binarystring\"===r.type&&(r.type=\"string\"),!r.type)throw new Error(\"No output type specified.\");u.checkSupport(r.type),\"darwin\"!==r.platform&&\"freebsd\"!==r.platform&&\"linux\"!==r.platform&&\"sunos\"!==r.platform||(r.platform=\"UNIX\"),\"win32\"===r.platform&&(r.platform=\"DOS\");var n=r.comment||this.comment||\"\";t=o.generateWorker(this,r,n)}catch(e){(t=new l(\"error\")).error(e)}return new a(t,r.type||\"string\",r.mimeType)},generateAsync:function(e,t){return this.generateInternalStream(e).accumulate(t)},generateNodeStream:function(e,t){return(e=e||{}).type||(e.type=\"nodebuffer\"),this.generateInternalStream(e).toNodejsStream(t)}};t.exports=n},{\"./compressedObject\":2,\"./defaults\":5,\"./generate\":9,\"./nodejs/NodejsStreamInputAdapter\":12,\"./nodejsUtils\":14,\"./stream/GenericWorker\":28,\"./stream/StreamHelper\":29,\"./utf8\":31,\"./utils\":32,\"./zipObject\":35}],16:[function(e,t,r){\"use strict\";t.exports=e(\"stream\")},{stream:void 0}],17:[function(e,t,r){\"use strict\";var n=e(\"./DataReader\");function i(e){n.call(this,e);for(var t=0;t<this.data.length;t++)e[t]=255&e[t]}e(\"../utils\").inherits(i,n),i.prototype.byteAt=function(e){return this.data[this.zero+e]},i.prototype.lastIndexOfSignature=function(e){for(var t=e.charCodeAt(0),r=e.charCodeAt(1),n=e.charCodeAt(2),i=e.charCodeAt(3),s=this.length-4;0<=s;--s)if(this.data[s]===t&&this.data[s+1]===r&&this.data[s+2]===n&&this.data[s+3]===i)return s-this.zero;return-1},i.prototype.readAndCheckSignature=function(e){var t=e.charCodeAt(0),r=e.charCodeAt(1),n=e.charCodeAt(2),i=e.charCodeAt(3),s=this.readData(4);return t===s[0]&&r===s[1]&&n===s[2]&&i===s[3]},i.prototype.readData=function(e){if(this.checkOffset(e),0===e)return[];var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./DataReader\":18}],18:[function(e,t,r){\"use strict\";var n=e(\"../utils\");function i(e){this.data=e,this.length=e.length,this.index=0,this.zero=0}i.prototype={checkOffset:function(e){this.checkIndex(this.index+e)},checkIndex:function(e){if(this.length<this.zero+e||e<0)throw new Error(\"End of data reached (data length = \"+this.length+\", asked index = \"+e+\"). Corrupted zip ?\")},setIndex:function(e){this.checkIndex(e),this.index=e},skip:function(e){this.setIndex(this.index+e)},byteAt:function(){},readInt:function(e){var t,r=0;for(this.checkOffset(e),t=this.index+e-1;t>=this.index;t--)r=(r<<8)+this.byteAt(t);return this.index+=e,r},readString:function(e){return n.transformTo(\"string\",this.readData(e))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var e=this.readInt(4);return new Date(Date.UTC(1980+(e>>25&127),(e>>21&15)-1,e>>16&31,e>>11&31,e>>5&63,(31&e)<<1))}},t.exports=i},{\"../utils\":32}],19:[function(e,t,r){\"use strict\";var n=e(\"./Uint8ArrayReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./Uint8ArrayReader\":21}],20:[function(e,t,r){\"use strict\";var n=e(\"./DataReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.byteAt=function(e){return this.data.charCodeAt(this.zero+e)},i.prototype.lastIndexOfSignature=function(e){return this.data.lastIndexOf(e)-this.zero},i.prototype.readAndCheckSignature=function(e){return e===this.readData(4)},i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./DataReader\":18}],21:[function(e,t,r){\"use strict\";var n=e(\"./ArrayReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.readData=function(e){if(this.checkOffset(e),0===e)return new Uint8Array(0);var t=this.data.subarray(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./ArrayReader\":17}],22:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"../support\"),s=e(\"./ArrayReader\"),a=e(\"./StringReader\"),o=e(\"./NodeBufferReader\"),h=e(\"./Uint8ArrayReader\");t.exports=function(e){var t=n.getTypeOf(e);return n.checkSupport(t),\"string\"!==t||i.uint8array?\"nodebuffer\"===t?new o(e):i.uint8array?new h(n.transformTo(\"uint8array\",e)):new s(n.transformTo(\"array\",e)):new a(e)}},{\"../support\":30,\"../utils\":32,\"./ArrayReader\":17,\"./NodeBufferReader\":19,\"./StringReader\":20,\"./Uint8ArrayReader\":21}],23:[function(e,t,r){\"use strict\";r.LOCAL_FILE_HEADER=\"PK\u0003\u0004\",r.CENTRAL_FILE_HEADER=\"PK\u0001\u0002\",r.CENTRAL_DIRECTORY_END=\"PK\u0005\u0006\",r.ZIP64_CENTRAL_DIRECTORY_LOCATOR=\"PK\u0006\u0007\",r.ZIP64_CENTRAL_DIRECTORY_END=\"PK\u0006\u0006\",r.DATA_DESCRIPTOR=\"PK\u0007\\b\"},{}],24:[function(e,t,r){\"use strict\";var n=e(\"./GenericWorker\"),i=e(\"../utils\");function s(e){n.call(this,\"ConvertWorker to \"+e),this.destType=e}i.inherits(s,n),s.prototype.processChunk=function(e){this.push({data:i.transformTo(this.destType,e.data),meta:e.meta})},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],25:[function(e,t,r){\"use strict\";var n=e(\"./GenericWorker\"),i=e(\"../crc32\");function s(){n.call(this,\"Crc32Probe\"),this.withStreamInfo(\"crc32\",0)}e(\"../utils\").inherits(s,n),s.prototype.processChunk=function(e){this.streamInfo.crc32=i(e.data,this.streamInfo.crc32||0),this.push(e)},t.exports=s},{\"../crc32\":4,\"../utils\":32,\"./GenericWorker\":28}],26:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"./GenericWorker\");function s(e){i.call(this,\"DataLengthProbe for \"+e),this.propName=e,this.withStreamInfo(e,0)}n.inherits(s,i),s.prototype.processChunk=function(e){if(e){var t=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=t+e.data.length}i.prototype.processChunk.call(this,e)},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],27:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"./GenericWorker\");function s(e){i.call(this,\"DataWorker\");var t=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type=\"\",this._tickScheduled=!1,e.then(function(e){t.dataIsReady=!0,t.data=e,t.max=e&&e.length||0,t.type=n.getTypeOf(e),t.isPaused||t._tickAndRepeat()},function(e){t.error(e)})}n.inherits(s,i),s.prototype.cleanUp=function(){i.prototype.cleanUp.call(this),this.data=null},s.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,n.delay(this._tickAndRepeat,[],this)),!0)},s.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(n.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},s.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var e=null,t=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case\"string\":e=this.data.substring(this.index,t);break;case\"uint8array\":e=this.data.subarray(this.index,t);break;case\"array\":case\"nodebuffer\":e=this.data.slice(this.index,t)}return this.index=t,this.push({data:e,meta:{percent:this.max?this.index/this.max*100:0}})},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],28:[function(e,t,r){\"use strict\";function n(e){this.name=e||\"default\",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}n.prototype={push:function(e){this.emit(\"data\",e)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit(\"end\"),this.cleanUp(),this.isFinished=!0}catch(e){this.emit(\"error\",e)}return!0},error:function(e){return!this.isFinished&&(this.isPaused?this.generatedError=e:(this.isFinished=!0,this.emit(\"error\",e),this.previous&&this.previous.error(e),this.cleanUp()),!0)},on:function(e,t){return this._listeners[e].push(t),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(e,t){if(this._listeners[e])for(var r=0;r<this._listeners[e].length;r++)this._listeners[e][r].call(this,t)},pipe:function(e){return e.registerPrevious(this)},registerPrevious:function(e){if(this.isLocked)throw new Error(\"The stream '\"+this+\"' has already been used.\");this.streamInfo=e.streamInfo,this.mergeStreamInfo(),this.previous=e;var t=this;return e.on(\"data\",function(e){t.processChunk(e)}),e.on(\"end\",function(){t.end()}),e.on(\"error\",function(e){t.error(e)}),this},pause:function(){return!this.isPaused&&!this.isFinished&&(this.isPaused=!0,this.previous&&this.previous.pause(),!0)},resume:function(){if(!this.isPaused||this.isFinished)return!1;var e=this.isPaused=!1;return this.generatedError&&(this.error(this.generatedError),e=!0),this.previous&&this.previous.resume(),!e},flush:function(){},processChunk:function(e){this.push(e)},withStreamInfo:function(e,t){return this.extraStreamInfo[e]=t,this.mergeStreamInfo(),this},mergeStreamInfo:function(){for(var e in this.extraStreamInfo)Object.prototype.hasOwnProperty.call(this.extraStreamInfo,e)&&(this.streamInfo[e]=this.extraStreamInfo[e])},lock:function(){if(this.isLocked)throw new Error(\"The stream '\"+this+\"' has already been used.\");this.isLocked=!0,this.previous&&this.previous.lock()},toString:function(){var e=\"Worker \"+this.name;return this.previous?this.previous+\" -> \"+e:e}},t.exports=n},{}],29:[function(e,t,r){\"use strict\";var h=e(\"../utils\"),i=e(\"./ConvertWorker\"),s=e(\"./GenericWorker\"),u=e(\"../base64\"),n=e(\"../support\"),a=e(\"../external\"),o=null;if(n.nodestream)try{o=e(\"../nodejs/NodejsStreamOutputAdapter\")}catch(e){}function l(e,o){return new a.Promise(function(t,r){var n=[],i=e._internalType,s=e._outputType,a=e._mimeType;e.on(\"data\",function(e,t){n.push(e),o&&o(t)}).on(\"error\",function(e){n=[],r(e)}).on(\"end\",function(){try{var e=function(e,t,r){switch(e){case\"blob\":return h.newBlob(h.transformTo(\"arraybuffer\",t),r);case\"base64\":return u.encode(t);default:return h.transformTo(e,t)}}(s,function(e,t){var r,n=0,i=null,s=0;for(r=0;r<t.length;r++)s+=t[r].length;switch(e){case\"string\":return t.join(\"\");case\"array\":return Array.prototype.concat.apply([],t);case\"uint8array\":for(i=new Uint8Array(s),r=0;r<t.length;r++)i.set(t[r],n),n+=t[r].length;return i;case\"nodebuffer\":return Buffer.concat(t);default:throw new Error(\"concat : unsupported type '\"+e+\"'\")}}(i,n),a);t(e)}catch(e){r(e)}n=[]}).resume()})}function f(e,t,r){var n=t;switch(t){case\"blob\":case\"arraybuffer\":n=\"uint8array\";break;case\"base64\":n=\"string\"}try{this._internalType=n,this._outputType=t,this._mimeType=r,h.checkSupport(n),this._worker=e.pipe(new i(n)),e.lock()}catch(e){this._worker=new s(\"error\"),this._worker.error(e)}}f.prototype={accumulate:function(e){return l(this,e)},on:function(e,t){var r=this;return\"data\"===e?this._worker.on(e,function(e){t.call(r,e.data,e.meta)}):this._worker.on(e,function(){h.delay(t,arguments,r)}),this},resume:function(){return h.delay(this._worker.resume,[],this._worker),this},pause:function(){return this._worker.pause(),this},toNodejsStream:function(e){if(h.checkSupport(\"nodestream\"),\"nodebuffer\"!==this._outputType)throw new Error(this._outputType+\" is not supported by this method\");return new o(this,{objectMode:\"nodebuffer\"!==this._outputType},e)}},t.exports=f},{\"../base64\":1,\"../external\":6,\"../nodejs/NodejsStreamOutputAdapter\":13,\"../support\":30,\"../utils\":32,\"./ConvertWorker\":24,\"./GenericWorker\":28}],30:[function(e,t,r){\"use strict\";if(r.base64=!0,r.array=!0,r.string=!0,r.arraybuffer=\"undefined\"!=typeof ArrayBuffer&&\"undefined\"!=typeof Uint8Array,r.nodebuffer=\"undefined\"!=typeof Buffer,r.uint8array=\"undefined\"!=typeof Uint8Array,\"undefined\"==typeof ArrayBuffer)r.blob=!1;else{var n=new ArrayBuffer(0);try{r.blob=0===new Blob([n],{type:\"application/zip\"}).size}catch(e){try{var i=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);i.append(n),r.blob=0===i.getBlob(\"application/zip\").size}catch(e){r.blob=!1}}}try{r.nodestream=!!e(\"readable-stream\").Readable}catch(e){r.nodestream=!1}},{\"readable-stream\":16}],31:[function(e,t,s){\"use strict\";for(var o=e(\"./utils\"),h=e(\"./support\"),r=e(\"./nodejsUtils\"),n=e(\"./stream/GenericWorker\"),u=new Array(256),i=0;i<256;i++)u[i]=252<=i?6:248<=i?5:240<=i?4:224<=i?3:192<=i?2:1;u[254]=u[254]=1;function a(){n.call(this,\"utf-8 decode\"),this.leftOver=null}function l(){n.call(this,\"utf-8 encode\")}s.utf8encode=function(e){return h.nodebuffer?r.newBufferFrom(e,\"utf-8\"):function(e){var t,r,n,i,s,a=e.length,o=0;for(i=0;i<a;i++)55296==(64512&(r=e.charCodeAt(i)))&&i+1<a&&56320==(64512&(n=e.charCodeAt(i+1)))&&(r=65536+(r-55296<<10)+(n-56320),i++),o+=r<128?1:r<2048?2:r<65536?3:4;for(t=h.uint8array?new Uint8Array(o):new Array(o),i=s=0;s<o;i++)55296==(64512&(r=e.charCodeAt(i)))&&i+1<a&&56320==(64512&(n=e.charCodeAt(i+1)))&&(r=65536+(r-55296<<10)+(n-56320),i++),r<128?t[s++]=r:(r<2048?t[s++]=192|r>>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t}(e)},s.utf8decode=function(e){return h.nodebuffer?o.transformTo(\"nodebuffer\",e).toString(\"utf-8\"):function(e){var t,r,n,i,s=e.length,a=new Array(2*s);for(t=r=0;t<s;)if((n=e[t++])<128)a[r++]=n;else if(4<(i=u[n]))a[r++]=65533,t+=i-1;else{for(n&=2===i?31:3===i?15:7;1<i&&t<s;)n=n<<6|63&e[t++],i--;1<i?a[r++]=65533:n<65536?a[r++]=n:(n-=65536,a[r++]=55296|n>>10&1023,a[r++]=56320|1023&n)}return a.length!==r&&(a.subarray?a=a.subarray(0,r):a.length=r),o.applyFromCharCode(a)}(e=o.transformTo(h.uint8array?\"uint8array\":\"array\",e))},o.inherits(a,n),a.prototype.processChunk=function(e){var t=o.transformTo(h.uint8array?\"uint8array\":\"array\",e.data);if(this.leftOver&&this.leftOver.length){if(h.uint8array){var r=t;(t=new Uint8Array(r.length+this.leftOver.length)).set(this.leftOver,0),t.set(r,this.leftOver.length)}else t=this.leftOver.concat(t);this.leftOver=null}var n=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+u[e[r]]>t?r:t}(t),i=t;n!==t.length&&(h.uint8array?(i=t.subarray(0,n),this.leftOver=t.subarray(n,t.length)):(i=t.slice(0,n),this.leftOver=t.slice(n,t.length))),this.push({data:s.utf8decode(i),meta:e.meta})},a.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:s.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},s.Utf8DecodeWorker=a,o.inherits(l,n),l.prototype.processChunk=function(e){this.push({data:s.utf8encode(e.data),meta:e.meta})},s.Utf8EncodeWorker=l},{\"./nodejsUtils\":14,\"./stream/GenericWorker\":28,\"./support\":30,\"./utils\":32}],32:[function(e,t,a){\"use strict\";var o=e(\"./support\"),h=e(\"./base64\"),r=e(\"./nodejsUtils\"),u=e(\"./external\");function n(e){return e}function l(e,t){for(var r=0;r<e.length;++r)t[r]=255&e.charCodeAt(r);return t}e(\"setimmediate\"),a.newBlob=function(t,r){a.checkSupport(\"blob\");try{return new Blob([t],{type:r})}catch(e){try{var n=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);return n.append(t),n.getBlob(r)}catch(e){throw new Error(\"Bug : can't construct the Blob.\")}}};var i={stringifyByChunk:function(e,t,r){var n=[],i=0,s=e.length;if(s<=r)return String.fromCharCode.apply(null,e);for(;i<s;)\"array\"===t||\"nodebuffer\"===t?n.push(String.fromCharCode.apply(null,e.slice(i,Math.min(i+r,s)))):n.push(String.fromCharCode.apply(null,e.subarray(i,Math.min(i+r,s)))),i+=r;return n.join(\"\")},stringifyByChar:function(e){for(var t=\"\",r=0;r<e.length;r++)t+=String.fromCharCode(e[r]);return t},applyCanBeUsed:{uint8array:function(){try{return o.uint8array&&1===String.fromCharCode.apply(null,new Uint8Array(1)).length}catch(e){return!1}}(),nodebuffer:function(){try{return o.nodebuffer&&1===String.fromCharCode.apply(null,r.allocBuffer(1)).length}catch(e){return!1}}()}};function s(e){var t=65536,r=a.getTypeOf(e),n=!0;if(\"uint8array\"===r?n=i.applyCanBeUsed.uint8array:\"nodebuffer\"===r&&(n=i.applyCanBeUsed.nodebuffer),n)for(;1<t;)try{return i.stringifyByChunk(e,r,t)}catch(e){t=Math.floor(t/2)}return i.stringifyByChar(e)}function f(e,t){for(var r=0;r<e.length;r++)t[r]=e[r];return t}a.applyFromCharCode=s;var c={};c.string={string:n,array:function(e){return l(e,new Array(e.length))},arraybuffer:function(e){return c.string.uint8array(e).buffer},uint8array:function(e){return l(e,new Uint8Array(e.length))},nodebuffer:function(e){return l(e,r.allocBuffer(e.length))}},c.array={string:s,array:n,arraybuffer:function(e){return new Uint8Array(e).buffer},uint8array:function(e){return new Uint8Array(e)},nodebuffer:function(e){return r.newBufferFrom(e)}},c.arraybuffer={string:function(e){return s(new Uint8Array(e))},array:function(e){return f(new Uint8Array(e),new Array(e.byteLength))},arraybuffer:n,uint8array:function(e){return new Uint8Array(e)},nodebuffer:function(e){return r.newBufferFrom(new Uint8Array(e))}},c.uint8array={string:s,array:function(e){return f(e,new Array(e.length))},arraybuffer:function(e){return e.buffer},uint8array:n,nodebuffer:function(e){return r.newBufferFrom(e)}},c.nodebuffer={string:s,array:function(e){return f(e,new Array(e.length))},arraybuffer:function(e){return c.nodebuffer.uint8array(e).buffer},uint8array:function(e){return f(e,new Uint8Array(e.length))},nodebuffer:n},a.transformTo=function(e,t){if(t=t||\"\",!e)return t;a.checkSupport(e);var r=a.getTypeOf(t);return c[r][e](t)},a.resolve=function(e){for(var t=e.split(\"/\"),r=[],n=0;n<t.length;n++){var i=t[n];\".\"===i||\"\"===i&&0!==n&&n!==t.length-1||(\"..\"===i?r.pop():r.push(i))}return r.join(\"/\")},a.getTypeOf=function(e){return\"string\"==typeof e?\"string\":\"[object Array]\"===Object.prototype.toString.call(e)?\"array\":o.nodebuffer&&r.isBuffer(e)?\"nodebuffer\":o.uint8array&&e instanceof Uint8Array?\"uint8array\":o.arraybuffer&&e instanceof ArrayBuffer?\"arraybuffer\":void 0},a.checkSupport=function(e){if(!o[e.toLowerCase()])throw new Error(e+\" is not supported by this platform\")},a.MAX_VALUE_16BITS=65535,a.MAX_VALUE_32BITS=-1,a.pretty=function(e){var t,r,n=\"\";for(r=0;r<(e||\"\").length;r++)n+=\"\\\\x\"+((t=e.charCodeAt(r))<16?\"0\":\"\")+t.toString(16).toUpperCase();return n},a.delay=function(e,t,r){setImmediate(function(){e.apply(r||null,t||[])})},a.inherits=function(e,t){function r(){}r.prototype=t.prototype,e.prototype=new r},a.extend=function(){var e,t,r={};for(e=0;e<arguments.length;e++)for(t in arguments[e])Object.prototype.hasOwnProperty.call(arguments[e],t)&&void 0===r[t]&&(r[t]=arguments[e][t]);return r},a.prepareContent=function(r,e,n,i,s){return u.Promise.resolve(e).then(function(n){return o.blob&&(n instanceof Blob||-1!==[\"[object File]\",\"[object Blob]\"].indexOf(Object.prototype.toString.call(n)))&&\"undefined\"!=typeof FileReader?new u.Promise(function(t,r){var e=new FileReader;e.onload=function(e){t(e.target.result)},e.onerror=function(e){r(e.target.error)},e.readAsArrayBuffer(n)}):n}).then(function(e){var t=a.getTypeOf(e);return t?(\"arraybuffer\"===t?e=a.transformTo(\"uint8array\",e):\"string\"===t&&(s?e=h.decode(e):n&&!0!==i&&(e=function(e){return l(e,o.uint8array?new Uint8Array(e.length):new Array(e.length))}(e))),e):u.Promise.reject(new Error(\"Can't read the data of '\"+r+\"'. Is it in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?\"))})}},{\"./base64\":1,\"./external\":6,\"./nodejsUtils\":14,\"./support\":30,setimmediate:54}],33:[function(e,t,r){\"use strict\";var n=e(\"./reader/readerFor\"),i=e(\"./utils\"),s=e(\"./signature\"),a=e(\"./zipEntry\"),o=e(\"./support\");function h(e){this.files=[],this.loadOptions=e}h.prototype={checkSignature:function(e){if(!this.reader.readAndCheckSignature(e)){this.reader.index-=4;var t=this.reader.readString(4);throw new Error(\"Corrupted zip or bug: unexpected signature (\"+i.pretty(t)+\", expected \"+i.pretty(e)+\")\")}},isSignature:function(e,t){var r=this.reader.index;this.reader.setIndex(e);var n=this.reader.readString(4)===t;return this.reader.setIndex(r),n},readBlockEndOfCentral:function(){this.diskNumber=this.reader.readInt(2),this.diskWithCentralDirStart=this.reader.readInt(2),this.centralDirRecordsOnThisDisk=this.reader.readInt(2),this.centralDirRecords=this.reader.readInt(2),this.centralDirSize=this.reader.readInt(4),this.centralDirOffset=this.reader.readInt(4),this.zipCommentLength=this.reader.readInt(2);var e=this.reader.readData(this.zipCommentLength),t=o.uint8array?\"uint8array\":\"array\",r=i.transformTo(t,e);this.zipComment=this.loadOptions.decodeFileName(r)},readBlockZip64EndOfCentral:function(){this.zip64EndOfCentralSize=this.reader.readInt(8),this.reader.skip(4),this.diskNumber=this.reader.readInt(4),this.diskWithCentralDirStart=this.reader.readInt(4),this.centralDirRecordsOnThisDisk=this.reader.readInt(8),this.centralDirRecords=this.reader.readInt(8),this.centralDirSize=this.reader.readInt(8),this.centralDirOffset=this.reader.readInt(8),this.zip64ExtensibleData={};for(var e,t,r,n=this.zip64EndOfCentralSize-44;0<n;)e=this.reader.readInt(2),t=this.reader.readInt(4),r=this.reader.readData(t),this.zip64ExtensibleData[e]={id:e,length:t,value:r}},readBlockZip64EndOfCentralLocator:function(){if(this.diskWithZip64CentralDirStart=this.reader.readInt(4),this.relativeOffsetEndOfZip64CentralDir=this.reader.readInt(8),this.disksCount=this.reader.readInt(4),1<this.disksCount)throw new Error(\"Multi-volumes zip are not supported\")},readLocalFiles:function(){var e,t;for(e=0;e<this.files.length;e++)t=this.files[e],this.reader.setIndex(t.localHeaderOffset),this.checkSignature(s.LOCAL_FILE_HEADER),t.readLocalPart(this.reader),t.handleUTF8(),t.processAttributes()},readCentralDir:function(){var e;for(this.reader.setIndex(this.centralDirOffset);this.reader.readAndCheckSignature(s.CENTRAL_FILE_HEADER);)(e=new a({zip64:this.zip64},this.loadOptions)).readCentralPart(this.reader),this.files.push(e);if(this.centralDirRecords!==this.files.length&&0!==this.centralDirRecords&&0===this.files.length)throw new Error(\"Corrupted zip or bug: expected \"+this.centralDirRecords+\" records in central dir, got \"+this.files.length)},readEndOfCentral:function(){var e=this.reader.lastIndexOfSignature(s.CENTRAL_DIRECTORY_END);if(e<0)throw!this.isSignature(0,s.LOCAL_FILE_HEADER)?new Error(\"Can't find end of central directory : is this a zip file ? If it is, see https://stuk.github.io/jszip/documentation/howto/read_zip.html\"):new Error(\"Corrupted zip: can't find end of central directory\");this.reader.setIndex(e);var t=e;if(this.checkSignature(s.CENTRAL_DIRECTORY_END),this.readBlockEndOfCentral(),this.diskNumber===i.MAX_VALUE_16BITS||this.diskWithCentralDirStart===i.MAX_VALUE_16BITS||this.centralDirRecordsOnThisDisk===i.MAX_VALUE_16BITS||this.centralDirRecords===i.MAX_VALUE_16BITS||this.centralDirSize===i.MAX_VALUE_32BITS||this.centralDirOffset===i.MAX_VALUE_32BITS){if(this.zip64=!0,(e=this.reader.lastIndexOfSignature(s.ZIP64_CENTRAL_DIRECTORY_LOCATOR))<0)throw new Error(\"Corrupted zip: can't find the ZIP64 end of central directory locator\");if(this.reader.setIndex(e),this.checkSignature(s.ZIP64_CENTRAL_DIRECTORY_LOCATOR),this.readBlockZip64EndOfCentralLocator(),!this.isSignature(this.relativeOffsetEndOfZip64CentralDir,s.ZIP64_CENTRAL_DIRECTORY_END)&&(this.relativeOffsetEndOfZip64CentralDir=this.reader.lastIndexOfSignature(s.ZIP64_CENTRAL_DIRECTORY_END),this.relativeOffsetEndOfZip64CentralDir<0))throw new Error(\"Corrupted zip: can't find the ZIP64 end of central directory\");this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir),this.checkSignature(s.ZIP64_CENTRAL_DIRECTORY_END),this.readBlockZip64EndOfCentral()}var r=this.centralDirOffset+this.centralDirSize;this.zip64&&(r+=20,r+=12+this.zip64EndOfCentralSize);var n=t-r;if(0<n)this.isSignature(t,s.CENTRAL_FILE_HEADER)||(this.reader.zero=n);else if(n<0)throw new Error(\"Corrupted zip: missing \"+Math.abs(n)+\" bytes.\")},prepareReader:function(e){this.reader=n(e)},load:function(e){this.prepareReader(e),this.readEndOfCentral(),this.readCentralDir(),this.readLocalFiles()}},t.exports=h},{\"./reader/readerFor\":22,\"./signature\":23,\"./support\":30,\"./utils\":32,\"./zipEntry\":34}],34:[function(e,t,r){\"use strict\";var n=e(\"./reader/readerFor\"),s=e(\"./utils\"),i=e(\"./compressedObject\"),a=e(\"./crc32\"),o=e(\"./utf8\"),h=e(\"./compressions\"),u=e(\"./support\");function l(e,t){this.options=e,this.loadOptions=t}l.prototype={isEncrypted:function(){return 1==(1&this.bitFlag)},useUTF8:function(){return 2048==(2048&this.bitFlag)},readLocalPart:function(e){var t,r;if(e.skip(22),this.fileNameLength=e.readInt(2),r=e.readInt(2),this.fileName=e.readData(this.fileNameLength),e.skip(r),-1===this.compressedSize||-1===this.uncompressedSize)throw new Error(\"Bug or corrupted zip : didn't get enough information from the central directory (compressedSize === -1 || uncompressedSize === -1)\");if(null===(t=function(e){for(var t in h)if(Object.prototype.hasOwnProperty.call(h,t)&&h[t].magic===e)return h[t];return null}(this.compressionMethod)))throw new Error(\"Corrupted zip : compression \"+s.pretty(this.compressionMethod)+\" unknown (inner file : \"+s.transformTo(\"string\",this.fileName)+\")\");this.decompressed=new i(this.compressedSize,this.uncompressedSize,this.crc32,t,e.readData(this.compressedSize))},readCentralPart:function(e){this.versionMadeBy=e.readInt(2),e.skip(2),this.bitFlag=e.readInt(2),this.compressionMethod=e.readString(2),this.date=e.readDate(),this.crc32=e.readInt(4),this.compressedSize=e.readInt(4),this.uncompressedSize=e.readInt(4);var t=e.readInt(2);if(this.extraFieldsLength=e.readInt(2),this.fileCommentLength=e.readInt(2),this.diskNumberStart=e.readInt(2),this.internalFileAttributes=e.readInt(2),this.externalFileAttributes=e.readInt(4),this.localHeaderOffset=e.readInt(4),this.isEncrypted())throw new Error(\"Encrypted zip are not supported\");e.skip(t),this.readExtraFields(e),this.parseZIP64ExtraField(e),this.fileComment=e.readData(this.fileCommentLength)},processAttributes:function(){this.unixPermissions=null,this.dosPermissions=null;var e=this.versionMadeBy>>8;this.dir=!!(16&this.externalFileAttributes),0==e&&(this.dosPermissions=63&this.externalFileAttributes),3==e&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||\"/\"!==this.fileNameStr.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var e=n(this.extraFields[1].value);this.uncompressedSize===s.MAX_VALUE_32BITS&&(this.uncompressedSize=e.readInt(8)),this.compressedSize===s.MAX_VALUE_32BITS&&(this.compressedSize=e.readInt(8)),this.localHeaderOffset===s.MAX_VALUE_32BITS&&(this.localHeaderOffset=e.readInt(8)),this.diskNumberStart===s.MAX_VALUE_32BITS&&(this.diskNumberStart=e.readInt(4))}},readExtraFields:function(e){var t,r,n,i=e.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});e.index+4<i;)t=e.readInt(2),r=e.readInt(2),n=e.readData(r),this.extraFields[t]={id:t,length:r,value:n};e.setIndex(i)},handleUTF8:function(){var e=u.uint8array?\"uint8array\":\"array\";if(this.useUTF8())this.fileNameStr=o.utf8decode(this.fileName),this.fileCommentStr=o.utf8decode(this.fileComment);else{var t=this.findExtraFieldUnicodePath();if(null!==t)this.fileNameStr=t;else{var r=s.transformTo(e,this.fileName);this.fileNameStr=this.loadOptions.decodeFileName(r)}var n=this.findExtraFieldUnicodeComment();if(null!==n)this.fileCommentStr=n;else{var i=s.transformTo(e,this.fileComment);this.fileCommentStr=this.loadOptions.decodeFileName(i)}}},findExtraFieldUnicodePath:function(){var e=this.extraFields[28789];if(e){var t=n(e.value);return 1!==t.readInt(1)?null:a(this.fileName)!==t.readInt(4)?null:o.utf8decode(t.readData(e.length-5))}return null},findExtraFieldUnicodeComment:function(){var e=this.extraFields[25461];if(e){var t=n(e.value);return 1!==t.readInt(1)?null:a(this.fileComment)!==t.readInt(4)?null:o.utf8decode(t.readData(e.length-5))}return null}},t.exports=l},{\"./compressedObject\":2,\"./compressions\":3,\"./crc32\":4,\"./reader/readerFor\":22,\"./support\":30,\"./utf8\":31,\"./utils\":32}],35:[function(e,t,r){\"use strict\";function n(e,t,r){this.name=e,this.dir=r.dir,this.date=r.date,this.comment=r.comment,this.unixPermissions=r.unixPermissions,this.dosPermissions=r.dosPermissions,this._data=t,this._dataBinary=r.binary,this.options={compression:r.compression,compressionOptions:r.compressionOptions}}var s=e(\"./stream/StreamHelper\"),i=e(\"./stream/DataWorker\"),a=e(\"./utf8\"),o=e(\"./compressedObject\"),h=e(\"./stream/GenericWorker\");n.prototype={internalStream:function(e){var t=null,r=\"string\";try{if(!e)throw new Error(\"No output type specified.\");var n=\"string\"===(r=e.toLowerCase())||\"text\"===r;\"binarystring\"!==r&&\"text\"!==r||(r=\"string\"),t=this._decompressWorker();var i=!this._dataBinary;i&&!n&&(t=t.pipe(new a.Utf8EncodeWorker)),!i&&n&&(t=t.pipe(new a.Utf8DecodeWorker))}catch(e){(t=new h(\"error\")).error(e)}return new s(t,r,\"\")},async:function(e,t){return this.internalStream(e).accumulate(t)},nodeStream:function(e,t){return this.internalStream(e||\"nodebuffer\").toNodejsStream(t)},_compressWorker:function(e,t){if(this._data instanceof o&&this._data.compression.magic===e.magic)return this._data.getCompressedWorker();var r=this._decompressWorker();return this._dataBinary||(r=r.pipe(new a.Utf8EncodeWorker)),o.createWorkerFrom(r,e,t)},_decompressWorker:function(){return this._data instanceof o?this._data.getContentWorker():this._data instanceof h?this._data:new i(this._data)}};for(var u=[\"asText\",\"asBinary\",\"asNodeBuffer\",\"asUint8Array\",\"asArrayBuffer\"],l=function(){throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\")},f=0;f<u.length;f++)n.prototype[u[f]]=l;t.exports=n},{\"./compressedObject\":2,\"./stream/DataWorker\":27,\"./stream/GenericWorker\":28,\"./stream/StreamHelper\":29,\"./utf8\":31}],36:[function(e,l,t){(function(t){\"use strict\";var r,n,e=t.MutationObserver||t.WebKitMutationObserver;if(e){var i=0,s=new e(u),a=t.document.createTextNode(\"\");s.observe(a,{characterData:!0}),r=function(){a.data=i=++i%2}}else if(t.setImmediate||void 0===t.MessageChannel)r=\"document\"in t&&\"onreadystatechange\"in t.document.createElement(\"script\")?function(){var e=t.document.createElement(\"script\");e.onreadystatechange=function(){u(),e.onreadystatechange=null,e.parentNode.removeChild(e),e=null},t.document.documentElement.appendChild(e)}:function(){setTimeout(u,0)};else{var o=new t.MessageChannel;o.port1.onmessage=u,r=function(){o.port2.postMessage(0)}}var h=[];function u(){var e,t;n=!0;for(var r=h.length;r;){for(t=h,h=[],e=-1;++e<r;)t[e]();r=h.length}n=!1}l.exports=function(e){1!==h.push(e)||n||r()}}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}],37:[function(e,t,r){\"use strict\";var i=e(\"immediate\");function u(){}var l={},s=[\"REJECTED\"],a=[\"FULFILLED\"],n=[\"PENDING\"];function o(e){if(\"function\"!=typeof e)throw new TypeError(\"resolver must be a function\");this.state=n,this.queue=[],this.outcome=void 0,e!==u&&d(this,e)}function h(e,t,r){this.promise=e,\"function\"==typeof t&&(this.onFulfilled=t,this.callFulfilled=this.otherCallFulfilled),\"function\"==typeof r&&(this.onRejected=r,this.callRejected=this.otherCallRejected)}function f(t,r,n){i(function(){var e;try{e=r(n)}catch(e){return l.reject(t,e)}e===t?l.reject(t,new TypeError(\"Cannot resolve promise with itself\")):l.resolve(t,e)})}function c(e){var t=e&&e.then;if(e&&(\"object\"==typeof e||\"function\"==typeof e)&&\"function\"==typeof t)return function(){t.apply(e,arguments)}}function d(t,e){var r=!1;function n(e){r||(r=!0,l.reject(t,e))}function i(e){r||(r=!0,l.resolve(t,e))}var s=p(function(){e(i,n)});\"error\"===s.status&&n(s.value)}function p(e,t){var r={};try{r.value=e(t),r.status=\"success\"}catch(e){r.status=\"error\",r.value=e}return r}(t.exports=o).prototype.finally=function(t){if(\"function\"!=typeof t)return this;var r=this.constructor;return this.then(function(e){return r.resolve(t()).then(function(){return e})},function(e){return r.resolve(t()).then(function(){throw e})})},o.prototype.catch=function(e){return this.then(null,e)},o.prototype.then=function(e,t){if(\"function\"!=typeof e&&this.state===a||\"function\"!=typeof t&&this.state===s)return this;var r=new this.constructor(u);this.state!==n?f(r,this.state===a?e:t,this.outcome):this.queue.push(new h(r,e,t));return r},h.prototype.callFulfilled=function(e){l.resolve(this.promise,e)},h.prototype.otherCallFulfilled=function(e){f(this.promise,this.onFulfilled,e)},h.prototype.callRejected=function(e){l.reject(this.promise,e)},h.prototype.otherCallRejected=function(e){f(this.promise,this.onRejected,e)},l.resolve=function(e,t){var r=p(c,t);if(\"error\"===r.status)return l.reject(e,r.value);var n=r.value;if(n)d(e,n);else{e.state=a,e.outcome=t;for(var i=-1,s=e.queue.length;++i<s;)e.queue[i].callFulfilled(t)}return e},l.reject=function(e,t){e.state=s,e.outcome=t;for(var r=-1,n=e.queue.length;++r<n;)e.queue[r].callRejected(t);return e},o.resolve=function(e){if(e instanceof this)return e;return l.resolve(new this(u),e)},o.reject=function(e){var t=new this(u);return l.reject(t,e)},o.all=function(e){var r=this;if(\"[object Array]\"!==Object.prototype.toString.call(e))return this.reject(new TypeError(\"must be an array\"));var n=e.length,i=!1;if(!n)return this.resolve([]);var s=new Array(n),a=0,t=-1,o=new this(u);for(;++t<n;)h(e[t],t);return o;function h(e,t){r.resolve(e).then(function(e){s[t]=e,++a!==n||i||(i=!0,l.resolve(o,s))},function(e){i||(i=!0,l.reject(o,e))})}},o.race=function(e){var t=this;if(\"[object Array]\"!==Object.prototype.toString.call(e))return this.reject(new TypeError(\"must be an array\"));var r=e.length,n=!1;if(!r)return this.resolve([]);var i=-1,s=new this(u);for(;++i<r;)a=e[i],t.resolve(a).then(function(e){n||(n=!0,l.resolve(s,e))},function(e){n||(n=!0,l.reject(s,e))});var a;return s}},{immediate:36}],38:[function(e,t,r){\"use strict\";var n={};(0,e(\"./lib/utils/common\").assign)(n,e(\"./lib/deflate\"),e(\"./lib/inflate\"),e(\"./lib/zlib/constants\")),t.exports=n},{\"./lib/deflate\":39,\"./lib/inflate\":40,\"./lib/utils/common\":41,\"./lib/zlib/constants\":44}],39:[function(e,t,r){\"use strict\";var a=e(\"./zlib/deflate\"),o=e(\"./utils/common\"),h=e(\"./utils/strings\"),i=e(\"./zlib/messages\"),s=e(\"./zlib/zstream\"),u=Object.prototype.toString,l=0,f=-1,c=0,d=8;function p(e){if(!(this instanceof p))return new p(e);this.options=o.assign({level:f,method:d,chunkSize:16384,windowBits:15,memLevel:8,strategy:c,to:\"\"},e||{});var t=this.options;t.raw&&0<t.windowBits?t.windowBits=-t.windowBits:t.gzip&&0<t.windowBits&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new s,this.strm.avail_out=0;var r=a.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(r!==l)throw new Error(i[r]);if(t.header&&a.deflateSetHeader(this.strm,t.header),t.dictionary){var n;if(n=\"string\"==typeof t.dictionary?h.string2buf(t.dictionary):\"[object ArrayBuffer]\"===u.call(t.dictionary)?new Uint8Array(t.dictionary):t.dictionary,(r=a.deflateSetDictionary(this.strm,n))!==l)throw new Error(i[r]);this._dict_set=!0}}function n(e,t){var r=new p(t);if(r.push(e,!0),r.err)throw r.msg||i[r.err];return r.result}p.prototype.push=function(e,t){var r,n,i=this.strm,s=this.options.chunkSize;if(this.ended)return!1;n=t===~~t?t:!0===t?4:0,\"string\"==typeof e?i.input=h.string2buf(e):\"[object ArrayBuffer]\"===u.call(e)?i.input=new Uint8Array(e):i.input=e,i.next_in=0,i.avail_in=i.input.length;do{if(0===i.avail_out&&(i.output=new o.Buf8(s),i.next_out=0,i.avail_out=s),1!==(r=a.deflate(i,n))&&r!==l)return this.onEnd(r),!(this.ended=!0);0!==i.avail_out&&(0!==i.avail_in||4!==n&&2!==n)||(\"string\"===this.options.to?this.onData(h.buf2binstring(o.shrinkBuf(i.output,i.next_out))):this.onData(o.shrinkBuf(i.output,i.next_out)))}while((0<i.avail_in||0===i.avail_out)&&1!==r);return 4===n?(r=a.deflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===l):2!==n||(this.onEnd(l),!(i.avail_out=0))},p.prototype.onData=function(e){this.chunks.push(e)},p.prototype.onEnd=function(e){e===l&&(\"string\"===this.options.to?this.result=this.chunks.join(\"\"):this.result=o.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},r.Deflate=p,r.deflate=n,r.deflateRaw=function(e,t){return(t=t||{}).raw=!0,n(e,t)},r.gzip=function(e,t){return(t=t||{}).gzip=!0,n(e,t)}},{\"./utils/common\":41,\"./utils/strings\":42,\"./zlib/deflate\":46,\"./zlib/messages\":51,\"./zlib/zstream\":53}],40:[function(e,t,r){\"use strict\";var c=e(\"./zlib/inflate\"),d=e(\"./utils/common\"),p=e(\"./utils/strings\"),m=e(\"./zlib/constants\"),n=e(\"./zlib/messages\"),i=e(\"./zlib/zstream\"),s=e(\"./zlib/gzheader\"),_=Object.prototype.toString;function a(e){if(!(this instanceof a))return new a(e);this.options=d.assign({chunkSize:16384,windowBits:0,to:\"\"},e||{});var t=this.options;t.raw&&0<=t.windowBits&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(0<=t.windowBits&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),15<t.windowBits&&t.windowBits<48&&0==(15&t.windowBits)&&(t.windowBits|=15),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new i,this.strm.avail_out=0;var r=c.inflateInit2(this.strm,t.windowBits);if(r!==m.Z_OK)throw new Error(n[r]);this.header=new s,c.inflateGetHeader(this.strm,this.header)}function o(e,t){var r=new a(t);if(r.push(e,!0),r.err)throw r.msg||n[r.err];return r.result}a.prototype.push=function(e,t){var r,n,i,s,a,o,h=this.strm,u=this.options.chunkSize,l=this.options.dictionary,f=!1;if(this.ended)return!1;n=t===~~t?t:!0===t?m.Z_FINISH:m.Z_NO_FLUSH,\"string\"==typeof e?h.input=p.binstring2buf(e):\"[object ArrayBuffer]\"===_.call(e)?h.input=new Uint8Array(e):h.input=e,h.next_in=0,h.avail_in=h.input.length;do{if(0===h.avail_out&&(h.output=new d.Buf8(u),h.next_out=0,h.avail_out=u),(r=c.inflate(h,m.Z_NO_FLUSH))===m.Z_NEED_DICT&&l&&(o=\"string\"==typeof l?p.string2buf(l):\"[object ArrayBuffer]\"===_.call(l)?new Uint8Array(l):l,r=c.inflateSetDictionary(this.strm,o)),r===m.Z_BUF_ERROR&&!0===f&&(r=m.Z_OK,f=!1),r!==m.Z_STREAM_END&&r!==m.Z_OK)return this.onEnd(r),!(this.ended=!0);h.next_out&&(0!==h.avail_out&&r!==m.Z_STREAM_END&&(0!==h.avail_in||n!==m.Z_FINISH&&n!==m.Z_SYNC_FLUSH)||(\"string\"===this.options.to?(i=p.utf8border(h.output,h.next_out),s=h.next_out-i,a=p.buf2string(h.output,i),h.next_out=s,h.avail_out=u-s,s&&d.arraySet(h.output,h.output,i,s,0),this.onData(a)):this.onData(d.shrinkBuf(h.output,h.next_out)))),0===h.avail_in&&0===h.avail_out&&(f=!0)}while((0<h.avail_in||0===h.avail_out)&&r!==m.Z_STREAM_END);return r===m.Z_STREAM_END&&(n=m.Z_FINISH),n===m.Z_FINISH?(r=c.inflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===m.Z_OK):n!==m.Z_SYNC_FLUSH||(this.onEnd(m.Z_OK),!(h.avail_out=0))},a.prototype.onData=function(e){this.chunks.push(e)},a.prototype.onEnd=function(e){e===m.Z_OK&&(\"string\"===this.options.to?this.result=this.chunks.join(\"\"):this.result=d.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},r.Inflate=a,r.inflate=o,r.inflateRaw=function(e,t){return(t=t||{}).raw=!0,o(e,t)},r.ungzip=o},{\"./utils/common\":41,\"./utils/strings\":42,\"./zlib/constants\":44,\"./zlib/gzheader\":47,\"./zlib/inflate\":49,\"./zlib/messages\":51,\"./zlib/zstream\":53}],41:[function(e,t,r){\"use strict\";var n=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Int32Array;r.assign=function(e){for(var t=Array.prototype.slice.call(arguments,1);t.length;){var r=t.shift();if(r){if(\"object\"!=typeof r)throw new TypeError(r+\"must be non-object\");for(var n in r)r.hasOwnProperty(n)&&(e[n]=r[n])}}return e},r.shrinkBuf=function(e,t){return e.length===t?e:e.subarray?e.subarray(0,t):(e.length=t,e)};var i={arraySet:function(e,t,r,n,i){if(t.subarray&&e.subarray)e.set(t.subarray(r,r+n),i);else for(var s=0;s<n;s++)e[i+s]=t[r+s]},flattenChunks:function(e){var t,r,n,i,s,a;for(t=n=0,r=e.length;t<r;t++)n+=e[t].length;for(a=new Uint8Array(n),t=i=0,r=e.length;t<r;t++)s=e[t],a.set(s,i),i+=s.length;return a}},s={arraySet:function(e,t,r,n,i){for(var s=0;s<n;s++)e[i+s]=t[r+s]},flattenChunks:function(e){return[].concat.apply([],e)}};r.setTyped=function(e){e?(r.Buf8=Uint8Array,r.Buf16=Uint16Array,r.Buf32=Int32Array,r.assign(r,i)):(r.Buf8=Array,r.Buf16=Array,r.Buf32=Array,r.assign(r,s))},r.setTyped(n)},{}],42:[function(e,t,r){\"use strict\";var h=e(\"./common\"),i=!0,s=!0;try{String.fromCharCode.apply(null,[0])}catch(e){i=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(e){s=!1}for(var u=new h.Buf8(256),n=0;n<256;n++)u[n]=252<=n?6:248<=n?5:240<=n?4:224<=n?3:192<=n?2:1;function l(e,t){if(t<65537&&(e.subarray&&s||!e.subarray&&i))return String.fromCharCode.apply(null,h.shrinkBuf(e,t));for(var r=\"\",n=0;n<t;n++)r+=String.fromCharCode(e[n]);return r}u[254]=u[254]=1,r.string2buf=function(e){var t,r,n,i,s,a=e.length,o=0;for(i=0;i<a;i++)55296==(64512&(r=e.charCodeAt(i)))&&i+1<a&&56320==(64512&(n=e.charCodeAt(i+1)))&&(r=65536+(r-55296<<10)+(n-56320),i++),o+=r<128?1:r<2048?2:r<65536?3:4;for(t=new h.Buf8(o),i=s=0;s<o;i++)55296==(64512&(r=e.charCodeAt(i)))&&i+1<a&&56320==(64512&(n=e.charCodeAt(i+1)))&&(r=65536+(r-55296<<10)+(n-56320),i++),r<128?t[s++]=r:(r<2048?t[s++]=192|r>>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t},r.buf2binstring=function(e){return l(e,e.length)},r.binstring2buf=function(e){for(var t=new h.Buf8(e.length),r=0,n=t.length;r<n;r++)t[r]=e.charCodeAt(r);return t},r.buf2string=function(e,t){var r,n,i,s,a=t||e.length,o=new Array(2*a);for(r=n=0;r<a;)if((i=e[r++])<128)o[n++]=i;else if(4<(s=u[i]))o[n++]=65533,r+=s-1;else{for(i&=2===s?31:3===s?15:7;1<s&&r<a;)i=i<<6|63&e[r++],s--;1<s?o[n++]=65533:i<65536?o[n++]=i:(i-=65536,o[n++]=55296|i>>10&1023,o[n++]=56320|1023&i)}return l(o,n)},r.utf8border=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+u[e[r]]>t?r:t}},{\"./common\":41}],43:[function(e,t,r){\"use strict\";t.exports=function(e,t,r,n){for(var i=65535&e|0,s=e>>>16&65535|0,a=0;0!==r;){for(r-=a=2e3<r?2e3:r;s=s+(i=i+t[n++]|0)|0,--a;);i%=65521,s%=65521}return i|s<<16|0}},{}],44:[function(e,t,r){\"use strict\";t.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],45:[function(e,t,r){\"use strict\";var o=function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a<s;a++)e=e>>>8^i[255&(e^t[a])];return-1^e}},{}],46:[function(e,t,r){\"use strict\";var h,c=e(\"../utils/common\"),u=e(\"./trees\"),d=e(\"./adler32\"),p=e(\"./crc32\"),n=e(\"./messages\"),l=0,f=4,m=0,_=-2,g=-1,b=4,i=2,v=8,y=9,s=286,a=30,o=19,w=2*s+1,k=15,x=3,S=258,z=S+x+1,C=42,E=113,A=1,I=2,O=3,B=4;function R(e,t){return e.msg=n[t],t}function T(e){return(e<<1)-(4<e?9:0)}function D(e){for(var t=e.length;0<=--t;)e[t]=0}function F(e){var t=e.state,r=t.pending;r>e.avail_out&&(r=e.avail_out),0!==r&&(c.arraySet(e.output,t.pending_buf,t.pending_out,r,e.next_out),e.next_out+=r,t.pending_out+=r,e.total_out+=r,e.avail_out-=r,t.pending-=r,0===t.pending&&(t.pending_out=0))}function N(e,t){u._tr_flush_block(e,0<=e.block_start?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,F(e.strm)}function U(e,t){e.pending_buf[e.pending++]=t}function P(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function L(e,t){var r,n,i=e.max_chain_length,s=e.strstart,a=e.prev_length,o=e.nice_match,h=e.strstart>e.w_size-z?e.strstart-(e.w_size-z):0,u=e.window,l=e.w_mask,f=e.prev,c=e.strstart+S,d=u[s+a-1],p=u[s+a];e.prev_length>=e.good_match&&(i>>=2),o>e.lookahead&&(o=e.lookahead);do{if(u[(r=t)+a]===p&&u[r+a-1]===d&&u[r]===u[s]&&u[++r]===u[s+1]){s+=2,r++;do{}while(u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&s<c);if(n=S-(c-s),s=c-S,a<n){if(e.match_start=t,o<=(a=n))break;d=u[s+a-1],p=u[s+a]}}}while((t=f[t&l])>h&&0!=--i);return a<=e.lookahead?a:e.lookahead}function j(e){var t,r,n,i,s,a,o,h,u,l,f=e.w_size;do{if(i=e.window_size-e.lookahead-e.strstart,e.strstart>=f+(f-z)){for(c.arraySet(e.window,e.window,f,f,0),e.match_start-=f,e.strstart-=f,e.block_start-=f,t=r=e.hash_size;n=e.head[--t],e.head[t]=f<=n?n-f:0,--r;);for(t=r=f;n=e.prev[--t],e.prev[t]=f<=n?n-f:0,--r;);i+=f}if(0===e.strm.avail_in)break;if(a=e.strm,o=e.window,h=e.strstart+e.lookahead,u=i,l=void 0,l=a.avail_in,u<l&&(l=u),r=0===l?0:(a.avail_in-=l,c.arraySet(o,a.input,a.next_in,l,h),1===a.state.wrap?a.adler=d(a.adler,o,l,h):2===a.state.wrap&&(a.adler=p(a.adler,o,l,h)),a.next_in+=l,a.total_in+=l,l),e.lookahead+=r,e.lookahead+e.insert>=x)for(s=e.strstart-e.insert,e.ins_h=e.window[s],e.ins_h=(e.ins_h<<e.hash_shift^e.window[s+1])&e.hash_mask;e.insert&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[s+x-1])&e.hash_mask,e.prev[s&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=s,s++,e.insert--,!(e.lookahead+e.insert<x)););}while(e.lookahead<z&&0!==e.strm.avail_in)}function Z(e,t){for(var r,n;;){if(e.lookahead<z){if(j(e),e.lookahead<z&&t===l)return A;if(0===e.lookahead)break}if(r=0,e.lookahead>=x&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+x-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!==r&&e.strstart-r<=e.w_size-z&&(e.match_length=L(e,r)),e.match_length>=x)if(n=u._tr_tally(e,e.strstart-e.match_start,e.match_length-x),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=x){for(e.match_length--;e.strstart++,e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+x-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart,0!=--e.match_length;);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+1])&e.hash_mask;else n=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(n&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=e.strstart<x-1?e.strstart:x-1,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}function W(e,t){for(var r,n,i;;){if(e.lookahead<z){if(j(e),e.lookahead<z&&t===l)return A;if(0===e.lookahead)break}if(r=0,e.lookahead>=x&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+x-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=x-1,0!==r&&e.prev_length<e.max_lazy_match&&e.strstart-r<=e.w_size-z&&(e.match_length=L(e,r),e.match_length<=5&&(1===e.strategy||e.match_length===x&&4096<e.strstart-e.match_start)&&(e.match_length=x-1)),e.prev_length>=x&&e.match_length<=e.prev_length){for(i=e.strstart+e.lookahead-x,n=u._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-x),e.lookahead-=e.prev_length-1,e.prev_length-=2;++e.strstart<=i&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+x-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!=--e.prev_length;);if(e.match_available=0,e.match_length=x-1,e.strstart++,n&&(N(e,!1),0===e.strm.avail_out))return A}else if(e.match_available){if((n=u._tr_tally(e,0,e.window[e.strstart-1]))&&N(e,!1),e.strstart++,e.lookahead--,0===e.strm.avail_out)return A}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(n=u._tr_tally(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<x-1?e.strstart:x-1,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}function M(e,t,r,n,i){this.good_length=e,this.max_lazy=t,this.nice_length=r,this.max_chain=n,this.func=i}function H(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=v,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new c.Buf16(2*w),this.dyn_dtree=new c.Buf16(2*(2*a+1)),this.bl_tree=new c.Buf16(2*(2*o+1)),D(this.dyn_ltree),D(this.dyn_dtree),D(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new c.Buf16(k+1),this.heap=new c.Buf16(2*s+1),D(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new c.Buf16(2*s+1),D(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function G(e){var t;return e&&e.state?(e.total_in=e.total_out=0,e.data_type=i,(t=e.state).pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=t.wrap?C:E,e.adler=2===t.wrap?0:1,t.last_flush=l,u._tr_init(t),m):R(e,_)}function K(e){var t=G(e);return t===m&&function(e){e.window_size=2*e.w_size,D(e.head),e.max_lazy_match=h[e.level].max_lazy,e.good_match=h[e.level].good_length,e.nice_match=h[e.level].nice_length,e.max_chain_length=h[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=x-1,e.match_available=0,e.ins_h=0}(e.state),t}function Y(e,t,r,n,i,s){if(!e)return _;var a=1;if(t===g&&(t=6),n<0?(a=0,n=-n):15<n&&(a=2,n-=16),i<1||y<i||r!==v||n<8||15<n||t<0||9<t||s<0||b<s)return R(e,_);8===n&&(n=9);var o=new H;return(e.state=o).strm=e,o.wrap=a,o.gzhead=null,o.w_bits=n,o.w_size=1<<o.w_bits,o.w_mask=o.w_size-1,o.hash_bits=i+7,o.hash_size=1<<o.hash_bits,o.hash_mask=o.hash_size-1,o.hash_shift=~~((o.hash_bits+x-1)/x),o.window=new c.Buf8(2*o.w_size),o.head=new c.Buf16(o.hash_size),o.prev=new c.Buf16(o.w_size),o.lit_bufsize=1<<i+6,o.pending_buf_size=4*o.lit_bufsize,o.pending_buf=new c.Buf8(o.pending_buf_size),o.d_buf=1*o.lit_bufsize,o.l_buf=3*o.lit_bufsize,o.level=t,o.strategy=s,o.method=r,K(e)}h=[new M(0,0,0,0,function(e,t){var r=65535;for(r>e.pending_buf_size-5&&(r=e.pending_buf_size-5);;){if(e.lookahead<=1){if(j(e),0===e.lookahead&&t===l)return A;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var n=e.block_start+r;if((0===e.strstart||e.strstart>=n)&&(e.lookahead=e.strstart-n,e.strstart=n,N(e,!1),0===e.strm.avail_out))return A;if(e.strstart-e.block_start>=e.w_size-z&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):(e.strstart>e.block_start&&(N(e,!1),e.strm.avail_out),A)}),new M(4,4,8,4,Z),new M(4,5,16,8,Z),new M(4,6,32,32,Z),new M(4,4,16,16,W),new M(8,16,32,32,W),new M(8,16,128,128,W),new M(8,32,128,256,W),new M(32,128,258,1024,W),new M(32,258,258,4096,W)],r.deflateInit=function(e,t){return Y(e,t,v,15,8,0)},r.deflateInit2=Y,r.deflateReset=K,r.deflateResetKeep=G,r.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?_:(e.state.gzhead=t,m):_},r.deflate=function(e,t){var r,n,i,s;if(!e||!e.state||5<t||t<0)return e?R(e,_):_;if(n=e.state,!e.output||!e.input&&0!==e.avail_in||666===n.status&&t!==f)return R(e,0===e.avail_out?-5:_);if(n.strm=e,r=n.last_flush,n.last_flush=t,n.status===C)if(2===n.wrap)e.adler=0,U(n,31),U(n,139),U(n,8),n.gzhead?(U(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),U(n,255&n.gzhead.time),U(n,n.gzhead.time>>8&255),U(n,n.gzhead.time>>16&255),U(n,n.gzhead.time>>24&255),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(U(n,255&n.gzhead.extra.length),U(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=p(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69):(U(n,0),U(n,0),U(n,0),U(n,0),U(n,0),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,3),n.status=E);else{var a=v+(n.w_bits-8<<4)<<8;a|=(2<=n.strategy||n.level<2?0:n.level<6?1:6===n.level?2:3)<<6,0!==n.strstart&&(a|=32),a+=31-a%31,n.status=E,P(n,a),0!==n.strstart&&(P(n,e.adler>>>16),P(n,65535&e.adler)),e.adler=1}if(69===n.status)if(n.gzhead.extra){for(i=n.pending;n.gzindex<(65535&n.gzhead.extra.length)&&(n.pending!==n.pending_buf_size||(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending!==n.pending_buf_size));)U(n,255&n.gzhead.extra[n.gzindex]),n.gzindex++;n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=73)}else n.status=73;if(73===n.status)if(n.gzhead.name){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindex<n.gzhead.name.length?255&n.gzhead.name.charCodeAt(n.gzindex++):0,U(n,s)}while(0!==s);n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.gzindex=0,n.status=91)}else n.status=91;if(91===n.status)if(n.gzhead.comment){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindex<n.gzhead.comment.length?255&n.gzhead.comment.charCodeAt(n.gzindex++):0,U(n,s)}while(0!==s);n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.status=103)}else n.status=103;if(103===n.status&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&F(e),n.pending+2<=n.pending_buf_size&&(U(n,255&e.adler),U(n,e.adler>>8&255),e.adler=0,n.status=E)):n.status=E),0!==n.pending){if(F(e),0===e.avail_out)return n.last_flush=-1,m}else if(0===e.avail_in&&T(t)<=T(r)&&t!==f)return R(e,-5);if(666===n.status&&0!==e.avail_in)return R(e,-5);if(0!==e.avail_in||0!==n.lookahead||t!==l&&666!==n.status){var o=2===n.strategy?function(e,t){for(var r;;){if(0===e.lookahead&&(j(e),0===e.lookahead)){if(t===l)return A;break}if(e.match_length=0,r=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}(n,t):3===n.strategy?function(e,t){for(var r,n,i,s,a=e.window;;){if(e.lookahead<=S){if(j(e),e.lookahead<=S&&t===l)return A;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=x&&0<e.strstart&&(n=a[i=e.strstart-1])===a[++i]&&n===a[++i]&&n===a[++i]){s=e.strstart+S;do{}while(n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&i<s);e.match_length=S-(s-i),e.match_length>e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=x?(r=u._tr_tally(e,1,e.match_length-x),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(r=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),r&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}(n,t):h[n.level].func(n,t);if(o!==O&&o!==B||(n.status=666),o===A||o===O)return 0===e.avail_out&&(n.last_flush=-1),m;if(o===I&&(1===t?u._tr_align(n):5!==t&&(u._tr_stored_block(n,0,0,!1),3===t&&(D(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),F(e),0===e.avail_out))return n.last_flush=-1,m}return t!==f?m:n.wrap<=0?1:(2===n.wrap?(U(n,255&e.adler),U(n,e.adler>>8&255),U(n,e.adler>>16&255),U(n,e.adler>>24&255),U(n,255&e.total_in),U(n,e.total_in>>8&255),U(n,e.total_in>>16&255),U(n,e.total_in>>24&255)):(P(n,e.adler>>>16),P(n,65535&e.adler)),F(e),0<n.wrap&&(n.wrap=-n.wrap),0!==n.pending?m:1)},r.deflateEnd=function(e){var t;return e&&e.state?(t=e.state.status)!==C&&69!==t&&73!==t&&91!==t&&103!==t&&t!==E&&666!==t?R(e,_):(e.state=null,t===E?R(e,-3):m):_},r.deflateSetDictionary=function(e,t){var r,n,i,s,a,o,h,u,l=t.length;if(!e||!e.state)return _;if(2===(s=(r=e.state).wrap)||1===s&&r.status!==C||r.lookahead)return _;for(1===s&&(e.adler=d(e.adler,t,l,0)),r.wrap=0,l>=r.w_size&&(0===s&&(D(r.head),r.strstart=0,r.block_start=0,r.insert=0),u=new c.Buf8(r.w_size),c.arraySet(u,t,l-r.w_size,r.w_size,0),t=u,l=r.w_size),a=e.avail_in,o=e.next_in,h=e.input,e.avail_in=l,e.next_in=0,e.input=t,j(r);r.lookahead>=x;){for(n=r.strstart,i=r.lookahead-(x-1);r.ins_h=(r.ins_h<<r.hash_shift^r.window[n+x-1])&r.hash_mask,r.prev[n&r.w_mask]=r.head[r.ins_h],r.head[r.ins_h]=n,n++,--i;);r.strstart=n,r.lookahead=x-1,j(r)}return r.strstart+=r.lookahead,r.block_start=r.strstart,r.insert=r.lookahead,r.lookahead=0,r.match_length=r.prev_length=x-1,r.match_available=0,e.next_in=o,e.input=h,e.avail_in=a,r.wrap=s,m},r.deflateInfo=\"pako deflate (from Nodeca project)\"},{\"../utils/common\":41,\"./adler32\":43,\"./crc32\":45,\"./messages\":51,\"./trees\":52}],47:[function(e,t,r){\"use strict\";t.exports=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name=\"\",this.comment=\"\",this.hcrc=0,this.done=!1}},{}],48:[function(e,t,r){\"use strict\";t.exports=function(e,t){var r,n,i,s,a,o,h,u,l,f,c,d,p,m,_,g,b,v,y,w,k,x,S,z,C;r=e.state,n=e.next_in,z=e.input,i=n+(e.avail_in-5),s=e.next_out,C=e.output,a=s-(t-e.avail_out),o=s+(e.avail_out-257),h=r.dmax,u=r.wsize,l=r.whave,f=r.wnext,c=r.window,d=r.hold,p=r.bits,m=r.lencode,_=r.distcode,g=(1<<r.lenbits)-1,b=(1<<r.distbits)-1;e:do{p<15&&(d+=z[n++]<<p,p+=8,d+=z[n++]<<p,p+=8),v=m[d&g];t:for(;;){if(d>>>=y=v>>>24,p-=y,0===(y=v>>>16&255))C[s++]=65535&v;else{if(!(16&y)){if(0==(64&y)){v=m[(65535&v)+(d&(1<<y)-1)];continue t}if(32&y){r.mode=12;break e}e.msg=\"invalid literal/length code\",r.mode=30;break e}w=65535&v,(y&=15)&&(p<y&&(d+=z[n++]<<p,p+=8),w+=d&(1<<y)-1,d>>>=y,p-=y),p<15&&(d+=z[n++]<<p,p+=8,d+=z[n++]<<p,p+=8),v=_[d&b];r:for(;;){if(d>>>=y=v>>>24,p-=y,!(16&(y=v>>>16&255))){if(0==(64&y)){v=_[(65535&v)+(d&(1<<y)-1)];continue r}e.msg=\"invalid distance code\",r.mode=30;break e}if(k=65535&v,p<(y&=15)&&(d+=z[n++]<<p,(p+=8)<y&&(d+=z[n++]<<p,p+=8)),h<(k+=d&(1<<y)-1)){e.msg=\"invalid distance too far back\",r.mode=30;break e}if(d>>>=y,p-=y,(y=s-a)<k){if(l<(y=k-y)&&r.sane){e.msg=\"invalid distance too far back\",r.mode=30;break e}if(S=c,(x=0)===f){if(x+=u-y,y<w){for(w-=y;C[s++]=c[x++],--y;);x=s-k,S=C}}else if(f<y){if(x+=u+f-y,(y-=f)<w){for(w-=y;C[s++]=c[x++],--y;);if(x=0,f<w){for(w-=y=f;C[s++]=c[x++],--y;);x=s-k,S=C}}}else if(x+=f-y,y<w){for(w-=y;C[s++]=c[x++],--y;);x=s-k,S=C}for(;2<w;)C[s++]=S[x++],C[s++]=S[x++],C[s++]=S[x++],w-=3;w&&(C[s++]=S[x++],1<w&&(C[s++]=S[x++]))}else{for(x=s-k;C[s++]=C[x++],C[s++]=C[x++],C[s++]=C[x++],2<(w-=3););w&&(C[s++]=C[x++],1<w&&(C[s++]=C[x++]))}break}}break}}while(n<i&&s<o);n-=w=p>>3,d&=(1<<(p-=w<<3))-1,e.next_in=n,e.next_out=s,e.avail_in=n<i?i-n+5:5-(n-i),e.avail_out=s<o?o-s+257:257-(s-o),r.hold=d,r.bits=p}},{}],49:[function(e,t,r){\"use strict\";var I=e(\"../utils/common\"),O=e(\"./adler32\"),B=e(\"./crc32\"),R=e(\"./inffast\"),T=e(\"./inftrees\"),D=1,F=2,N=0,U=-2,P=1,n=852,i=592;function L(e){return(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function s(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new I.Buf16(320),this.work=new I.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function a(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg=\"\",t.wrap&&(e.adler=1&t.wrap),t.mode=P,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new I.Buf32(n),t.distcode=t.distdyn=new I.Buf32(i),t.sane=1,t.back=-1,N):U}function o(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,a(e)):U}function h(e,t){var r,n;return e&&e.state?(n=e.state,t<0?(r=0,t=-t):(r=1+(t>>4),t<48&&(t&=15)),t&&(t<8||15<t)?U:(null!==n.window&&n.wbits!==t&&(n.window=null),n.wrap=r,n.wbits=t,o(e))):U}function u(e,t){var r,n;return e?(n=new s,(e.state=n).window=null,(r=h(e,t))!==N&&(e.state=null),r):U}var l,f,c=!0;function j(e){if(c){var t;for(l=new I.Buf32(512),f=new I.Buf32(32),t=0;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(T(D,e.lens,0,288,l,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;T(F,e.lens,0,32,f,0,e.work,{bits:5}),c=!1}e.lencode=l,e.lenbits=9,e.distcode=f,e.distbits=5}function Z(e,t,r,n){var i,s=e.state;return null===s.window&&(s.wsize=1<<s.wbits,s.wnext=0,s.whave=0,s.window=new I.Buf8(s.wsize)),n>=s.wsize?(I.arraySet(s.window,t,r-s.wsize,s.wsize,0),s.wnext=0,s.whave=s.wsize):(n<(i=s.wsize-s.wnext)&&(i=n),I.arraySet(s.window,t,r-n,i,s.wnext),(n-=i)?(I.arraySet(s.window,t,r-n,n,0),s.wnext=n,s.whave=s.wsize):(s.wnext+=i,s.wnext===s.wsize&&(s.wnext=0),s.whave<s.wsize&&(s.whave+=i))),0}r.inflateReset=o,r.inflateReset2=h,r.inflateResetKeep=a,r.inflateInit=function(e){return u(e,15)},r.inflateInit2=u,r.inflate=function(e,t){var r,n,i,s,a,o,h,u,l,f,c,d,p,m,_,g,b,v,y,w,k,x,S,z,C=0,E=new I.Buf8(4),A=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!e||!e.state||!e.output||!e.input&&0!==e.avail_in)return U;12===(r=e.state).mode&&(r.mode=13),a=e.next_out,i=e.output,h=e.avail_out,s=e.next_in,n=e.input,o=e.avail_in,u=r.hold,l=r.bits,f=o,c=h,x=N;e:for(;;)switch(r.mode){case P:if(0===r.wrap){r.mode=13;break}for(;l<16;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(2&r.wrap&&35615===u){E[r.check=0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0),l=u=0,r.mode=2;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&u)<<8)+(u>>8))%31){e.msg=\"incorrect header check\",r.mode=30;break}if(8!=(15&u)){e.msg=\"unknown compression method\",r.mode=30;break}if(l-=4,k=8+(15&(u>>>=4)),0===r.wbits)r.wbits=k;else if(k>r.wbits){e.msg=\"invalid window size\",r.mode=30;break}r.dmax=1<<k,e.adler=r.check=1,r.mode=512&u?10:12,l=u=0;break;case 2:for(;l<16;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(r.flags=u,8!=(255&r.flags)){e.msg=\"unknown compression method\",r.mode=30;break}if(57344&r.flags){e.msg=\"unknown header flags set\",r.mode=30;break}r.head&&(r.head.text=u>>8&1),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=3;case 3:for(;l<32;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.head&&(r.head.time=u),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,E[2]=u>>>16&255,E[3]=u>>>24&255,r.check=B(r.check,E,4,0)),l=u=0,r.mode=4;case 4:for(;l<16;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.head&&(r.head.xflags=255&u,r.head.os=u>>8),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=5;case 5:if(1024&r.flags){for(;l<16;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.length=u,r.head&&(r.head.extra_len=u),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&(o<(d=r.length)&&(d=o),d&&(r.head&&(k=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),I.arraySet(r.head.extra,n,s,d,k)),512&r.flags&&(r.check=B(r.check,n,d,s)),o-=d,s+=d,r.length-=d),r.length))break e;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===o)break e;for(d=0;k=n[s+d++],r.head&&k&&r.length<65536&&(r.head.name+=String.fromCharCode(k)),k&&d<o;);if(512&r.flags&&(r.check=B(r.check,n,d,s)),o-=d,s+=d,k)break e}else r.head&&(r.head.name=null);r.length=0,r.mode=8;case 8:if(4096&r.flags){if(0===o)break e;for(d=0;k=n[s+d++],r.head&&k&&r.length<65536&&(r.head.comment+=String.fromCharCode(k)),k&&d<o;);if(512&r.flags&&(r.check=B(r.check,n,d,s)),o-=d,s+=d,k)break e}else r.head&&(r.head.comment=null);r.mode=9;case 9:if(512&r.flags){for(;l<16;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(u!==(65535&r.check)){e.msg=\"header crc mismatch\",r.mode=30;break}l=u=0}r.head&&(r.head.hcrc=r.flags>>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=12;break;case 10:for(;l<32;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}e.adler=r.check=L(u),l=u=0,r.mode=11;case 11:if(0===r.havedict)return e.next_out=a,e.avail_out=h,e.next_in=s,e.avail_in=o,r.hold=u,r.bits=l,2;e.adler=r.check=1,r.mode=12;case 12:if(5===t||6===t)break e;case 13:if(r.last){u>>>=7&l,l-=7&l,r.mode=27;break}for(;l<3;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}switch(r.last=1&u,l-=1,3&(u>>>=1)){case 0:r.mode=14;break;case 1:if(j(r),r.mode=20,6!==t)break;u>>>=2,l-=2;break e;case 2:r.mode=17;break;case 3:e.msg=\"invalid block type\",r.mode=30}u>>>=2,l-=2;break;case 14:for(u>>>=7&l,l-=7&l;l<32;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if((65535&u)!=(u>>>16^65535)){e.msg=\"invalid stored block lengths\",r.mode=30;break}if(r.length=65535&u,l=u=0,r.mode=15,6===t)break e;case 15:r.mode=16;case 16:if(d=r.length){if(o<d&&(d=o),h<d&&(d=h),0===d)break e;I.arraySet(i,n,s,d,a),o-=d,s+=d,h-=d,a+=d,r.length-=d;break}r.mode=12;break;case 17:for(;l<14;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(r.nlen=257+(31&u),u>>>=5,l-=5,r.ndist=1+(31&u),u>>>=5,l-=5,r.ncode=4+(15&u),u>>>=4,l-=4,286<r.nlen||30<r.ndist){e.msg=\"too many length or distance symbols\",r.mode=30;break}r.have=0,r.mode=18;case 18:for(;r.have<r.ncode;){for(;l<3;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.lens[A[r.have++]]=7&u,u>>>=3,l-=3}for(;r.have<19;)r.lens[A[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,S={bits:r.lenbits},x=T(0,r.lens,0,19,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg=\"invalid code lengths set\",r.mode=30;break}r.have=0,r.mode=19;case 19:for(;r.have<r.nlen+r.ndist;){for(;g=(C=r.lencode[u&(1<<r.lenbits)-1])>>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(b<16)u>>>=_,l-=_,r.lens[r.have++]=b;else{if(16===b){for(z=_+2;l<z;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(u>>>=_,l-=_,0===r.have){e.msg=\"invalid bit length repeat\",r.mode=30;break}k=r.lens[r.have-1],d=3+(3&u),u>>>=2,l-=2}else if(17===b){for(z=_+3;l<z;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}l-=_,k=0,d=3+(7&(u>>>=_)),u>>>=3,l-=3}else{for(z=_+7;l<z;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}l-=_,k=0,d=11+(127&(u>>>=_)),u>>>=7,l-=7}if(r.have+d>r.nlen+r.ndist){e.msg=\"invalid bit length repeat\",r.mode=30;break}for(;d--;)r.lens[r.have++]=k}}if(30===r.mode)break;if(0===r.lens[256]){e.msg=\"invalid code -- missing end-of-block\",r.mode=30;break}if(r.lenbits=9,S={bits:r.lenbits},x=T(D,r.lens,0,r.nlen,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg=\"invalid literal/lengths set\",r.mode=30;break}if(r.distbits=6,r.distcode=r.distdyn,S={bits:r.distbits},x=T(F,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,S),r.distbits=S.bits,x){e.msg=\"invalid distances set\",r.mode=30;break}if(r.mode=20,6===t)break e;case 20:r.mode=21;case 21:if(6<=o&&258<=h){e.next_out=a,e.avail_out=h,e.next_in=s,e.avail_in=o,r.hold=u,r.bits=l,R(e,c),a=e.next_out,i=e.output,h=e.avail_out,s=e.next_in,n=e.input,o=e.avail_in,u=r.hold,l=r.bits,12===r.mode&&(r.back=-1);break}for(r.back=0;g=(C=r.lencode[u&(1<<r.lenbits)-1])>>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(g&&0==(240&g)){for(v=_,y=g,w=b;g=(C=r.lencode[w+((u&(1<<v+y)-1)>>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}u>>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,r.length=b,0===g){r.mode=26;break}if(32&g){r.back=-1,r.mode=12;break}if(64&g){e.msg=\"invalid literal/length code\",r.mode=30;break}r.extra=15&g,r.mode=22;case 22:if(r.extra){for(z=r.extra;l<z;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.length+=u&(1<<r.extra)-1,u>>>=r.extra,l-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=23;case 23:for(;g=(C=r.distcode[u&(1<<r.distbits)-1])>>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(0==(240&g)){for(v=_,y=g,w=b;g=(C=r.distcode[w+((u&(1<<v+y)-1)>>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}u>>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,64&g){e.msg=\"invalid distance code\",r.mode=30;break}r.offset=b,r.extra=15&g,r.mode=24;case 24:if(r.extra){for(z=r.extra;l<z;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.offset+=u&(1<<r.extra)-1,u>>>=r.extra,l-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg=\"invalid distance too far back\",r.mode=30;break}r.mode=25;case 25:if(0===h)break e;if(d=c-h,r.offset>d){if((d=r.offset-d)>r.whave&&r.sane){e.msg=\"invalid distance too far back\",r.mode=30;break}p=d>r.wnext?(d-=r.wnext,r.wsize-d):r.wnext-d,d>r.length&&(d=r.length),m=r.window}else m=i,p=a-r.offset,d=r.length;for(h<d&&(d=h),h-=d,r.length-=d;i[a++]=m[p++],--d;);0===r.length&&(r.mode=21);break;case 26:if(0===h)break e;i[a++]=r.length,h--,r.mode=21;break;case 27:if(r.wrap){for(;l<32;){if(0===o)break e;o--,u|=n[s++]<<l,l+=8}if(c-=h,e.total_out+=c,r.total+=c,c&&(e.adler=r.check=r.flags?B(r.check,i,c,a-c):O(r.check,i,c,a-c)),c=h,(r.flags?u:L(u))!==r.check){e.msg=\"incorrect data check\",r.mode=30;break}l=u=0}r.mode=28;case 28:if(r.wrap&&r.flags){for(;l<32;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(u!==(4294967295&r.total)){e.msg=\"incorrect length check\",r.mode=30;break}l=u=0}r.mode=29;case 29:x=1;break e;case 30:x=-3;break e;case 31:return-4;case 32:default:return U}return e.next_out=a,e.avail_out=h,e.next_in=s,e.avail_in=o,r.hold=u,r.bits=l,(r.wsize||c!==e.avail_out&&r.mode<30&&(r.mode<27||4!==t))&&Z(e,e.output,e.next_out,c-e.avail_out)?(r.mode=31,-4):(f-=e.avail_in,c-=e.avail_out,e.total_in+=f,e.total_out+=c,r.total+=c,r.wrap&&c&&(e.adler=r.check=r.flags?B(r.check,i,c,e.next_out-c):O(r.check,i,c,e.next_out-c)),e.data_type=r.bits+(r.last?64:0)+(12===r.mode?128:0)+(20===r.mode||15===r.mode?256:0),(0==f&&0===c||4===t)&&x===N&&(x=-5),x)},r.inflateEnd=function(e){if(!e||!e.state)return U;var t=e.state;return t.window&&(t.window=null),e.state=null,N},r.inflateGetHeader=function(e,t){var r;return e&&e.state?0==(2&(r=e.state).wrap)?U:((r.head=t).done=!1,N):U},r.inflateSetDictionary=function(e,t){var r,n=t.length;return e&&e.state?0!==(r=e.state).wrap&&11!==r.mode?U:11===r.mode&&O(1,t,n,0)!==r.check?-3:Z(e,t,n,n)?(r.mode=31,-4):(r.havedict=1,N):U},r.inflateInfo=\"pako inflate (from Nodeca project)\"},{\"../utils/common\":41,\"./adler32\":43,\"./crc32\":45,\"./inffast\":48,\"./inftrees\":50}],50:[function(e,t,r){\"use strict\";var D=e(\"../utils/common\"),F=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],N=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],U=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],P=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];t.exports=function(e,t,r,n,i,s,a,o){var h,u,l,f,c,d,p,m,_,g=o.bits,b=0,v=0,y=0,w=0,k=0,x=0,S=0,z=0,C=0,E=0,A=null,I=0,O=new D.Buf16(16),B=new D.Buf16(16),R=null,T=0;for(b=0;b<=15;b++)O[b]=0;for(v=0;v<n;v++)O[t[r+v]]++;for(k=g,w=15;1<=w&&0===O[w];w--);if(w<k&&(k=w),0===w)return i[s++]=20971520,i[s++]=20971520,o.bits=1,0;for(y=1;y<w&&0===O[y];y++);for(k<y&&(k=y),b=z=1;b<=15;b++)if(z<<=1,(z-=O[b])<0)return-1;if(0<z&&(0===e||1!==w))return-1;for(B[1]=0,b=1;b<15;b++)B[b+1]=B[b]+O[b];for(v=0;v<n;v++)0!==t[r+v]&&(a[B[t[r+v]]++]=v);if(d=0===e?(A=R=a,19):1===e?(A=F,I-=257,R=N,T-=257,256):(A=U,R=P,-1),b=y,c=s,S=v=E=0,l=-1,f=(C=1<<(x=k))-1,1===e&&852<C||2===e&&592<C)return 1;for(;;){for(p=b-S,_=a[v]<d?(m=0,a[v]):a[v]>d?(m=R[T+a[v]],A[I+a[v]]):(m=96,0),h=1<<b-S,y=u=1<<x;i[c+(E>>S)+(u-=h)]=p<<24|m<<16|_|0,0!==u;);for(h=1<<b-1;E&h;)h>>=1;if(0!==h?(E&=h-1,E+=h):E=0,v++,0==--O[b]){if(b===w)break;b=t[r+a[v]]}if(k<b&&(E&f)!==l){for(0===S&&(S=k),c+=y,z=1<<(x=b-S);x+S<w&&!((z-=O[x+S])<=0);)x++,z<<=1;if(C+=1<<x,1===e&&852<C||2===e&&592<C)return 1;i[l=E&f]=k<<24|x<<16|c-s|0}}return 0!==E&&(i[c+E]=b-S<<24|64<<16|0),o.bits=k,0}},{\"../utils/common\":41}],51:[function(e,t,r){\"use strict\";t.exports={2:\"need dictionary\",1:\"stream end\",0:\"\",\"-1\":\"file error\",\"-2\":\"stream error\",\"-3\":\"data error\",\"-4\":\"insufficient memory\",\"-5\":\"buffer error\",\"-6\":\"incompatible version\"}},{}],52:[function(e,t,r){\"use strict\";var i=e(\"../utils/common\"),o=0,h=1;function n(e){for(var t=e.length;0<=--t;)e[t]=0}var s=0,a=29,u=256,l=u+1+a,f=30,c=19,_=2*l+1,g=15,d=16,p=7,m=256,b=16,v=17,y=18,w=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],k=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],x=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],S=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],z=new Array(2*(l+2));n(z);var C=new Array(2*f);n(C);var E=new Array(512);n(E);var A=new Array(256);n(A);var I=new Array(a);n(I);var O,B,R,T=new Array(f);function D(e,t,r,n,i){this.static_tree=e,this.extra_bits=t,this.extra_base=r,this.elems=n,this.max_length=i,this.has_stree=e&&e.length}function F(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}function N(e){return e<256?E[e]:E[256+(e>>>7)]}function U(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function P(e,t,r){e.bi_valid>d-r?(e.bi_buf|=t<<e.bi_valid&65535,U(e,e.bi_buf),e.bi_buf=t>>d-e.bi_valid,e.bi_valid+=r-d):(e.bi_buf|=t<<e.bi_valid&65535,e.bi_valid+=r)}function L(e,t,r){P(e,r[2*t],r[2*t+1])}function j(e,t){for(var r=0;r|=1&e,e>>>=1,r<<=1,0<--t;);return r>>>1}function Z(e,t,r){var n,i,s=new Array(g+1),a=0;for(n=1;n<=g;n++)s[n]=a=a+r[n-1]<<1;for(i=0;i<=t;i++){var o=e[2*i+1];0!==o&&(e[2*i]=j(s[o]++,o))}}function W(e){var t;for(t=0;t<l;t++)e.dyn_ltree[2*t]=0;for(t=0;t<f;t++)e.dyn_dtree[2*t]=0;for(t=0;t<c;t++)e.bl_tree[2*t]=0;e.dyn_ltree[2*m]=1,e.opt_len=e.static_len=0,e.last_lit=e.matches=0}function M(e){8<e.bi_valid?U(e,e.bi_buf):0<e.bi_valid&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0}function H(e,t,r,n){var i=2*t,s=2*r;return e[i]<e[s]||e[i]===e[s]&&n[t]<=n[r]}function G(e,t,r){for(var n=e.heap[r],i=r<<1;i<=e.heap_len&&(i<e.heap_len&&H(t,e.heap[i+1],e.heap[i],e.depth)&&i++,!H(t,n,e.heap[i],e.depth));)e.heap[r]=e.heap[i],r=i,i<<=1;e.heap[r]=n}function K(e,t,r){var n,i,s,a,o=0;if(0!==e.last_lit)for(;n=e.pending_buf[e.d_buf+2*o]<<8|e.pending_buf[e.d_buf+2*o+1],i=e.pending_buf[e.l_buf+o],o++,0===n?L(e,i,t):(L(e,(s=A[i])+u+1,t),0!==(a=w[s])&&P(e,i-=I[s],a),L(e,s=N(--n),r),0!==(a=k[s])&&P(e,n-=T[s],a)),o<e.last_lit;);L(e,m,t)}function Y(e,t){var r,n,i,s=t.dyn_tree,a=t.stat_desc.static_tree,o=t.stat_desc.has_stree,h=t.stat_desc.elems,u=-1;for(e.heap_len=0,e.heap_max=_,r=0;r<h;r++)0!==s[2*r]?(e.heap[++e.heap_len]=u=r,e.depth[r]=0):s[2*r+1]=0;for(;e.heap_len<2;)s[2*(i=e.heap[++e.heap_len]=u<2?++u:0)]=1,e.depth[i]=0,e.opt_len--,o&&(e.static_len-=a[2*i+1]);for(t.max_code=u,r=e.heap_len>>1;1<=r;r--)G(e,s,r);for(i=h;r=e.heap[1],e.heap[1]=e.heap[e.heap_len--],G(e,s,1),n=e.heap[1],e.heap[--e.heap_max]=r,e.heap[--e.heap_max]=n,s[2*i]=s[2*r]+s[2*n],e.depth[i]=(e.depth[r]>=e.depth[n]?e.depth[r]:e.depth[n])+1,s[2*r+1]=s[2*n+1]=i,e.heap[1]=i++,G(e,s,1),2<=e.heap_len;);e.heap[--e.heap_max]=e.heap[1],function(e,t){var r,n,i,s,a,o,h=t.dyn_tree,u=t.max_code,l=t.stat_desc.static_tree,f=t.stat_desc.has_stree,c=t.stat_desc.extra_bits,d=t.stat_desc.extra_base,p=t.stat_desc.max_length,m=0;for(s=0;s<=g;s++)e.bl_count[s]=0;for(h[2*e.heap[e.heap_max]+1]=0,r=e.heap_max+1;r<_;r++)p<(s=h[2*h[2*(n=e.heap[r])+1]+1]+1)&&(s=p,m++),h[2*n+1]=s,u<n||(e.bl_count[s]++,a=0,d<=n&&(a=c[n-d]),o=h[2*n],e.opt_len+=o*(s+a),f&&(e.static_len+=o*(l[2*n+1]+a)));if(0!==m){do{for(s=p-1;0===e.bl_count[s];)s--;e.bl_count[s]--,e.bl_count[s+1]+=2,e.bl_count[p]--,m-=2}while(0<m);for(s=p;0!==s;s--)for(n=e.bl_count[s];0!==n;)u<(i=e.heap[--r])||(h[2*i+1]!==s&&(e.opt_len+=(s-h[2*i+1])*h[2*i],h[2*i+1]=s),n--)}}(e,t),Z(s,u,e.bl_count)}function X(e,t,r){var n,i,s=-1,a=t[1],o=0,h=7,u=4;for(0===a&&(h=138,u=3),t[2*(r+1)+1]=65535,n=0;n<=r;n++)i=a,a=t[2*(n+1)+1],++o<h&&i===a||(o<u?e.bl_tree[2*i]+=o:0!==i?(i!==s&&e.bl_tree[2*i]++,e.bl_tree[2*b]++):o<=10?e.bl_tree[2*v]++:e.bl_tree[2*y]++,s=i,u=(o=0)===a?(h=138,3):i===a?(h=6,3):(h=7,4))}function V(e,t,r){var n,i,s=-1,a=t[1],o=0,h=7,u=4;for(0===a&&(h=138,u=3),n=0;n<=r;n++)if(i=a,a=t[2*(n+1)+1],!(++o<h&&i===a)){if(o<u)for(;L(e,i,e.bl_tree),0!=--o;);else 0!==i?(i!==s&&(L(e,i,e.bl_tree),o--),L(e,b,e.bl_tree),P(e,o-3,2)):o<=10?(L(e,v,e.bl_tree),P(e,o-3,3)):(L(e,y,e.bl_tree),P(e,o-11,7));s=i,u=(o=0)===a?(h=138,3):i===a?(h=6,3):(h=7,4)}}n(T);var q=!1;function J(e,t,r,n){P(e,(s<<1)+(n?1:0),3),function(e,t,r,n){M(e),n&&(U(e,r),U(e,~r)),i.arraySet(e.pending_buf,e.window,t,r,e.pending),e.pending+=r}(e,t,r,!0)}r._tr_init=function(e){q||(function(){var e,t,r,n,i,s=new Array(g+1);for(n=r=0;n<a-1;n++)for(I[n]=r,e=0;e<1<<w[n];e++)A[r++]=n;for(A[r-1]=n,n=i=0;n<16;n++)for(T[n]=i,e=0;e<1<<k[n];e++)E[i++]=n;for(i>>=7;n<f;n++)for(T[n]=i<<7,e=0;e<1<<k[n]-7;e++)E[256+i++]=n;for(t=0;t<=g;t++)s[t]=0;for(e=0;e<=143;)z[2*e+1]=8,e++,s[8]++;for(;e<=255;)z[2*e+1]=9,e++,s[9]++;for(;e<=279;)z[2*e+1]=7,e++,s[7]++;for(;e<=287;)z[2*e+1]=8,e++,s[8]++;for(Z(z,l+1,s),e=0;e<f;e++)C[2*e+1]=5,C[2*e]=j(e,5);O=new D(z,w,u+1,l,g),B=new D(C,k,0,f,g),R=new D(new Array(0),x,0,c,p)}(),q=!0),e.l_desc=new F(e.dyn_ltree,O),e.d_desc=new F(e.dyn_dtree,B),e.bl_desc=new F(e.bl_tree,R),e.bi_buf=0,e.bi_valid=0,W(e)},r._tr_stored_block=J,r._tr_flush_block=function(e,t,r,n){var i,s,a=0;0<e.level?(2===e.strm.data_type&&(e.strm.data_type=function(e){var t,r=4093624447;for(t=0;t<=31;t++,r>>>=1)if(1&r&&0!==e.dyn_ltree[2*t])return o;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return h;for(t=32;t<u;t++)if(0!==e.dyn_ltree[2*t])return h;return o}(e)),Y(e,e.l_desc),Y(e,e.d_desc),a=function(e){var t;for(X(e,e.dyn_ltree,e.l_desc.max_code),X(e,e.dyn_dtree,e.d_desc.max_code),Y(e,e.bl_desc),t=c-1;3<=t&&0===e.bl_tree[2*S[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t}(e),i=e.opt_len+3+7>>>3,(s=e.static_len+3+7>>>3)<=i&&(i=s)):i=s=r+5,r+4<=i&&-1!==t?J(e,t,r,n):4===e.strategy||s===i?(P(e,2+(n?1:0),3),K(e,z,C)):(P(e,4+(n?1:0),3),function(e,t,r,n){var i;for(P(e,t-257,5),P(e,r-1,5),P(e,n-4,4),i=0;i<n;i++)P(e,e.bl_tree[2*S[i]+1],3);V(e,e.dyn_ltree,t-1),V(e,e.dyn_dtree,r-1)}(e,e.l_desc.max_code+1,e.d_desc.max_code+1,a+1),K(e,e.dyn_ltree,e.dyn_dtree)),W(e),n&&M(e)},r._tr_tally=function(e,t,r){return e.pending_buf[e.d_buf+2*e.last_lit]=t>>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&r,e.last_lit++,0===t?e.dyn_ltree[2*r]++:(e.matches++,t--,e.dyn_ltree[2*(A[r]+u+1)]++,e.dyn_dtree[2*N(t)]++),e.last_lit===e.lit_bufsize-1},r._tr_align=function(e){P(e,2,3),L(e,m,z),function(e){16===e.bi_valid?(U(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):8<=e.bi_valid&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}},{\"../utils/common\":41}],53:[function(e,t,r){\"use strict\";t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\"\",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(e,t,r){(function(e){!function(r,n){\"use strict\";if(!r.setImmediate){var i,s,t,a,o=1,h={},u=!1,l=r.document,e=Object.getPrototypeOf&&Object.getPrototypeOf(r);e=e&&e.setTimeout?e:r,i=\"[object process]\"==={}.toString.call(r.process)?function(e){process.nextTick(function(){c(e)})}:function(){if(r.postMessage&&!r.importScripts){var e=!0,t=r.onmessage;return r.onmessage=function(){e=!1},r.postMessage(\"\",\"*\"),r.onmessage=t,e}}()?(a=\"setImmediate$\"+Math.random()+\"$\",r.addEventListener?r.addEventListener(\"message\",d,!1):r.attachEvent(\"onmessage\",d),function(e){r.postMessage(a+e,\"*\")}):r.MessageChannel?((t=new MessageChannel).port1.onmessage=function(e){c(e.data)},function(e){t.port2.postMessage(e)}):l&&\"onreadystatechange\"in l.createElement(\"script\")?(s=l.documentElement,function(e){var t=l.createElement(\"script\");t.onreadystatechange=function(){c(e),t.onreadystatechange=null,s.removeChild(t),t=null},s.appendChild(t)}):function(e){setTimeout(c,0,e)},e.setImmediate=function(e){\"function\"!=typeof e&&(e=new Function(\"\"+e));for(var t=new Array(arguments.length-1),r=0;r<t.length;r++)t[r]=arguments[r+1];var n={callback:e,args:t};return h[o]=n,i(o),o++},e.clearImmediate=f}function f(e){delete h[e]}function c(e){if(u)setTimeout(c,0,e);else{var t=h[e];if(t){u=!0;try{!function(e){var t=e.callback,r=e.args;switch(r.length){case 0:t();break;case 1:t(r[0]);break;case 2:t(r[0],r[1]);break;case 3:t(r[0],r[1],r[2]);break;default:t.apply(n,r)}}(t)}finally{f(e),u=!1}}}}function d(e){e.source===r&&\"string\"==typeof e.data&&0===e.data.indexOf(a)&&c(+e.data.slice(a.length))}}(\"undefined\"==typeof self?void 0===e?this:e:self)}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}]},{},[10])(10)});","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fetchArrayBuffer = fetchArrayBuffer;\nasync function fetchArrayBuffer(url) {\n    const result = await fetch(url);\n    return result.arrayBuffer();\n}\n//# sourceMappingURL=fetchArrayBuffer.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.loadCommercials = loadCommercials;\nconst jszip_1 = __importDefault(require(\"jszip\"));\nconst fetchArrayBuffer_1 = require(\"./util/fetchArrayBuffer\");\nconst loadingPromises = {};\nasync function loadCommercials(options = {}) {\n    const { url = 'https://couch.cheminfo.org/cheminfo-public/d2eb480198c80275a1d05dd3609414f9/upload/commercials.zip', } = options;\n    if (!loadingPromises[url]) {\n        loadingPromises[url] = (0, fetchArrayBuffer_1.fetchArrayBuffer)(url);\n    }\n    const buffer = await loadingPromises[url];\n    const jsZip = new jszip_1.default();\n    let zip = await jsZip.loadAsync(buffer);\n    let fileData = await zip.files['commercials.json'].async('string');\n    let data = JSON.parse(fileData);\n    data.sort((a, b) => a.em - b.em);\n    return data;\n}\n//# sourceMappingURL=loadCommercials.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fetchText = fetchText;\nasync function fetchText(url) {\n    const result = await fetch(url);\n    if (result.status !== 200) {\n        throw new Error(String(result.status));\n    }\n    return result.text();\n}\n//# sourceMappingURL=fetchText.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mfFromGoogleSheet = mfFromGoogleSheet;\nconst mf_generator_1 = require(\"mf-generator\");\nconst mf_parser_1 = require(\"mf-parser\");\nconst papaparse_1 = __importDefault(require(\"papaparse\"));\nconst fetchText_js_1 = require(\"./util/fetchText.js\");\nasync function mfFromGoogleSheet(url, options = {}) {\n    let { urlReferences } = options;\n    if (urlReferences) {\n        let results = await Promise.all([(0, fetchText_js_1.fetchText)(url), (0, fetchText_js_1.fetchText)(urlReferences)]);\n        return parse(results[0], results[1]);\n    }\n    else {\n        let result = await (0, fetchText_js_1.fetchText)(url);\n        return parse(result);\n    }\n}\nasync function parse(tsv, tsvReferences) {\n    let parsed = papaparse_1.default.parse(tsv, {\n        delimiter: '\\t',\n        header: true,\n    });\n    let fields = parsed.meta.fields;\n    let infoFields = fields.filter((a) => !['mf', 'modif', 'ESI', 'MALDI', 'positive', 'negative'].includes(a));\n    let formulas = parsed.data;\n    let references = {};\n    if (tsvReferences) {\n        let referencesArray = papaparse_1.default.parse(tsvReferences, {\n            delimiter: '\\t',\n            header: true,\n        }).data;\n        for (const r of referencesArray) {\n            references[r.label] = r;\n        }\n    }\n    let results = [];\n    for (let formula of formulas) {\n        if (tsvReferences) {\n            // we add references\n            let refs = formula.references.split(/[ ,]+/);\n            formula.references = [];\n            for (let ref of refs) {\n                formula.references.push(references[ref]);\n            }\n        }\n        // we need to calculate all the possibilities\n        try {\n            let mfs = await (0, mf_generator_1.generateMFs)([formula.mf], {\n                ionizations: formula.modif,\n            });\n            for (let mf of mfs) {\n                mf.info = {};\n                for (let infoField of infoFields) {\n                    mf.info[infoField] = formula[infoField];\n                }\n                if (!formula.ESI &&\n                    !formula.MALDI &&\n                    !formula.positive &&\n                    !formula.negative) {\n                    mf.filter = {\n                        ESI: true,\n                        MALDI: true,\n                        positive: true,\n                        negative: true,\n                    };\n                }\n                else {\n                    mf.filter = {\n                        ESI: formula.ESI === 'X',\n                        MALDI: formula.MALDI === 'X',\n                        positive: formula.positive === 'X',\n                        negative: formula.negative === 'X',\n                    };\n                }\n                mf.mf = new mf_parser_1.MF(mf.mf).toMF();\n                results.push(mf);\n            }\n        }\n        catch (error) {\n            // eslint-disable-next-line no-console\n            console.warn('Non parsable molecular formula:', formula.mf, formula.modif, error.toString());\n        }\n    }\n    results = results.filter((a) => {\n        return a.ms.em !== 0;\n    });\n    results.sort((a, b) => {\n        return a.ms.em - b.ms.em;\n    });\n    let uniqueResults = [results[0]];\n    for (let i = 1; i < results.length; i++) {\n        if (results[i - 1].ms.em !== results[i].ms.em) {\n            uniqueResults.push(results[i]);\n        }\n    }\n    return uniqueResults;\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.loadGoogleSheet = loadGoogleSheet;\nconst mf_from_google_sheet_1 = require(\"mf-from-google-sheet\");\nasync function loadGoogleSheet(options = {}) {\n    let { refUUID = '1C_H9aiJyu9M9in7sHMOaz-d3Sv758rE72oLxEKH9ioA', uuid = '1LrJCl9-xSZKhGA9Y8nKVkYwB-mEOHBkTXg5qYXeFpZY', } = options;\n    if (options.uuid && !options.refUUID)\n        refUUID = '';\n    let url = `https://googledocs.cheminfo.org/spreadsheets/d/${uuid}/export?format=tsv`;\n    let refURL = refUUID\n        ? `https://googledocs.cheminfo.org/spreadsheets/d/${refUUID}/export?format=tsv`\n        : '';\n    let data = await (0, mf_from_google_sheet_1.mfFromGoogleSheet)(url, refURL);\n    data.sort((a, b) => a.em - b.em);\n    return data;\n}\n//# sourceMappingURL=loadGoogleSheet.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.loadKnapSack = loadKnapSack;\nconst jszip_1 = __importDefault(require(\"jszip\"));\nconst fetchArrayBuffer_1 = require(\"./util/fetchArrayBuffer\");\nconst loadingPromises = {};\nasync function loadKnapSack(options = {}) {\n    const { url = 'https://couch.cheminfo.org/cheminfo-public/d2eb480198c80275a1d05dd3609414f9/upload/ms.zip', } = options;\n    if (!loadingPromises[url]) {\n        loadingPromises[url] = (0, fetchArrayBuffer_1.fetchArrayBuffer)(url);\n    }\n    const buffer = await loadingPromises[url];\n    const jsZip = new jszip_1.default();\n    let zip = await jsZip.loadAsync(buffer);\n    let fileData = await zip.files['ms.json'].async('string');\n    let data = JSON.parse(fileData);\n    for (const d of data) {\n        d.url = `http://kanaya.naist.jp/knapsack_jsp/information.jsp?word=${d.id}`;\n    }\n    data.sort((a, b) => a.em - b.em);\n    return data;\n}\n//# sourceMappingURL=loadKnapSack.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.search = search;\nconst mf_matcher_1 = require(\"mf-matcher\");\n/**\n    Searching by various criteria. This mass will not take into account the mass\n    of the mass of the electron\n* @param {object}   [filter={}]\n* @param {number}   [filter.minMW=0] - Minimal molecular weight\n* @param {number}   [filter.maxMW=+Infinity] - Maximal molecular weight\n* @param {number}   [filter.minEM=0] - Minimal monoisotopic mass\n* @param {number}   [filter.maxEM=+Infinity] - Maximal monoisotopic mass\n* @param {number}   [filter.minCharge=-Infinity] - Minimal charge\n* @param {number}   [filter.maxCharge=+Infinity] - Maximal charge\n* @param {boolean}   [filter.absoluteCharge=false] - If true, the charge is absolute (so between 0 and +Infinity by default)\n* @param {object}   [filter.unsaturation={}]\n* @param {number}   [filter.unsaturation.min=-Infinity] - Minimal unsaturation\n* @param {number}   [filter.unsaturation.max=+Infinity] - Maximal unsaturation\n* @param {boolean}   [filter.unsaturation.onlyInteger=false] - Integer unsaturation\n* @param {boolean}   [filter.unsaturation.onlyNonInteger=false] - Non integer unsaturation\n* @param {object}   [filter.atoms] - object of atom:{min, max}\n\n* @param {object}   [options={}]\n* @param {array}    [options.databases] - an array containing the name of the databases so search, by default all\n* @param {boolean}  [options.flatten=false] - should we return the array as a flat result\n*/\nfunction search(emdb, filter, options = {}) {\n    let { databases = Object.keys(emdb.databases), flatten = false } = options;\n    let results = {};\n    for (let database of databases) {\n        results[database] = emdb.databases[database].filter((entry) => (0, mf_matcher_1.generalMatcher)(entry, filter));\n    }\n    if (flatten) {\n        let flattenResults = [];\n        for (let database of databases) {\n            for (let entry of results[database]) {\n                entry.database = database;\n                flattenResults.push(entry);\n            }\n        }\n        return flattenResults;\n    }\n    else {\n        return results;\n    }\n}\n//# sourceMappingURL=search.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.searchMSEM = searchMSEM;\nconst mf_matcher_1 = require(\"mf-matcher\");\nconst mf_utilities_1 = require(\"mf-utilities\");\n/**\nSearch for an experimental monoisotopic mass\n* @param {number}   msem - The observed monoisotopic mass\n* @param {object}   [options={}]\n* @param {array}    [options.databases] - an array containing the name of the databases so search, by default all\n* @param {boolean}  [options.flatten=false] - should we return the array as a flat result\n* @param {string}   [options.ionizations] - list the allowed ionizations possibilities\n* @param {import('mf-matcher').MSEMFilterOptions}        [options.filter={}]\n*/\nfunction searchMSEM(emdb, msem, options = {}) {\n    let filter = { ...options.filter, targetMass: msem };\n    let { databases = Object.keys(emdb.databases), flatten = false } = options;\n    let ionizations = (0, mf_utilities_1.preprocessIonizations)(options.ionizations);\n    let results = {};\n    for (let database of databases) {\n        results[database] = [];\n    }\n    for (let ionization of ionizations) {\n        filter.ionization = ionization;\n        for (let database of databases) {\n            for (let entry of emdb.databases[database]) {\n                let match = (0, mf_matcher_1.msemMatcher)(entry, filter);\n                if (match) {\n                    results[database].push({\n                        ...entry,\n                        ms: match.ms,\n                        ionization: match.ionization,\n                    });\n                }\n            }\n        }\n    }\n    if (flatten) {\n        let flattenResults = [];\n        for (let database of databases) {\n            for (let entry of results[database]) {\n                entry.database = database;\n                flattenResults.push(entry);\n            }\n        }\n        flattenResults.sort((a, b) => Math.abs(a.ms.ppm) - Math.abs(b.ms.ppm));\n        return flattenResults;\n    }\n    else {\n        for (const k of Object.keys(results)) {\n            results[k].sort((a, b) => Math.abs(a.ms.ppm) - Math.abs(b.ms.ppm));\n        }\n        return results;\n    }\n}\n//# sourceMappingURL=searchMSEM.js.map","/**\n * Adds a baseline to the spectrum data.\n * @param data - The spectrum data to modify.\n * @param baselineFct - Function that generates the baseline value for a given x.\n * @returns The modified spectrum data.\n */\nexport default function addBaseline(data, baselineFct) {\n    if (!baselineFct)\n        return data;\n    const xs = data.x;\n    const ys = data.y;\n    for (let i = 0; i < xs.length; i++) {\n        ys[i] += baselineFct(xs[i]);\n    }\n    return data;\n}\n//# sourceMappingURL=addBaseline.js.map","import { xMaxValue, xAdd, createRandomArray } from 'ml-spectra-processing';\n/**\n * Adds noise to the spectrum data.\n * @param data - The spectrum data to modify.\n * @param options - Configuration for noise generation.\n * @returns The modified spectrum data.\n */\nexport default function addNoise(data, options = {}) {\n    const { seed = 0, distribution = 'normal', percent = 1 } = options;\n    const range = (xMaxValue(data.y) * percent) / 100;\n    const noise = createRandomArray({\n        distribution,\n        seed,\n        mean: 0,\n        standardDeviation: range,\n        range,\n        length: data.x.length,\n    });\n    data.y = xAdd(data.y, noise);\n    return data;\n}\n//# sourceMappingURL=addNoise.js.map","import { getShape1D } from 'ml-peak-shape-generator';\nimport addBaseline from './util/addBaseline';\nimport addNoise from './util/addNoise';\nexport class SpectrumGenerator {\n    constructor(options = {}) {\n        const { from = 0, to = 1000, nbPoints = 10001, peakWidthFct, shape = { kind: 'gaussian', fwhm: 5 }, } = options;\n        this.from = from;\n        this.to = to;\n        this.nbPoints = nbPoints;\n        this.interval = (this.to - this.from) / (this.nbPoints - 1);\n        this.peakWidthFct = peakWidthFct;\n        this.maxPeakHeight = Number.MIN_SAFE_INTEGER;\n        this.data = {\n            x: new Float64Array(this.nbPoints),\n            y: new Float64Array(this.nbPoints),\n        };\n        const shapeGenerator = getShape1D(shape);\n        this.shape = shapeGenerator;\n        assertNumber(this.from, 'from');\n        assertNumber(this.to, 'to');\n        assertInteger(this.nbPoints, 'nbPoints');\n        if (this.to <= this.from) {\n            throw new RangeError('to option must be larger than from');\n        }\n        if (this.peakWidthFct && typeof this.peakWidthFct !== 'function') {\n            throw new TypeError('peakWidthFct option must be a function');\n        }\n        this.reset();\n    }\n    /**\n     * Add a series of peaks to the spectrum.\n     * @param peaks - Peaks to add.\n     * @param options - Options for adding peaks.\n     * @returns The generator instance.\n     */\n    addPeaks(peaks, options) {\n        if (!Array.isArray(peaks) &&\n            (typeof peaks !== 'object' ||\n                peaks.x === undefined ||\n                peaks.y === undefined ||\n                !Array.isArray(peaks.x) ||\n                !Array.isArray(peaks.y) ||\n                peaks.x.length !== peaks.y.length)) {\n            throw new TypeError('peaks must be an array or an object containing x[] and y[]');\n        }\n        if (Array.isArray(peaks)) {\n            for (const peak of peaks) {\n                this.addPeak(peak, options);\n            }\n        }\n        else {\n            for (let i = 0; i < peaks.x.length; i++) {\n                this.addPeak([peaks.x[i], peaks.y[i]], options);\n            }\n        }\n        return this;\n    }\n    /**\n     * Add a single peak to the spectrum.\n     * A peak may be either defined as [x,y,fwhm,...] or as {x, y, shape}\n     * @param peak - The peak to add, defined as array or object.\n     * @param options - Options for adding the peak.\n     * @returns The generator instance.\n     */\n    addPeak(peak, options = {}) {\n        if (Array.isArray(peak) && peak.length < 2) {\n            throw new Error('peak must be an array with two (or three) values or an object with {x,y,width?}');\n        }\n        if (!Array.isArray(peak) &&\n            (peak.x === undefined || peak.y === undefined)) {\n            throw new Error('peak must be an array with two (or three) values or an object with {x,y,width?}');\n        }\n        let xPosition;\n        let intensity;\n        let peakFWHM;\n        let peakWidth;\n        let peakShapeOptions;\n        if (Array.isArray(peak)) {\n            [xPosition, intensity, peakFWHM, peakShapeOptions] = peak;\n        }\n        else {\n            xPosition = peak.x;\n            intensity = peak.y;\n            peakWidth = peak.width;\n            peakShapeOptions = peak.shape;\n        }\n        if (intensity > this.maxPeakHeight)\n            this.maxPeakHeight = intensity;\n        let { shape: shapeOptions } = options;\n        if (peakShapeOptions) {\n            shapeOptions = shapeOptions\n                ? { ...shapeOptions, ...peakShapeOptions }\n                : peakShapeOptions;\n        }\n        const shape = shapeOptions\n            ? getShape1D(shapeOptions)\n            : Object.assign(Object.create(Object.getPrototypeOf(this.shape)), this.shape);\n        const { width } = options;\n        let { widthLeft, widthRight } = options;\n        /*\n         if we don't force the fwhm we just take the one from the shape\n         however we have many way to force it:\n         - use [x,y,fwhm]\n         - define `width` that will be converted to fwhm\n         - define `widthLeft` and `widthRight` to define asymmetric peaks\n         - have a callback `peakWidthFct`\n         This should evolve in the future because we will not always have `fwhm`\n         */\n        const fwhm = peakFWHM !== undefined\n            ? peakFWHM\n            : peakWidth\n                ? shape.widthToFWHM(peakWidth)\n                : this.peakWidthFct\n                    ? this.peakWidthFct(xPosition)\n                    : width !== undefined\n                        ? width\n                        : shape.fwhm;\n        if (!widthLeft)\n            widthLeft = fwhm;\n        if (!widthRight)\n            widthRight = fwhm;\n        if (!widthLeft || !widthRight) {\n            throw new Error('Width left or right is undefined or zero');\n        }\n        const factor = options.factor === undefined ? shape.getFactor() : options.factor;\n        const firstValue = xPosition - (widthLeft / 2) * factor;\n        const lastValue = xPosition + (widthRight / 2) * factor;\n        const firstPoint = Math.max(0, Math.floor((firstValue - this.from) / this.interval));\n        const lastPoint = Math.min(this.nbPoints - 1, Math.ceil((lastValue - this.from) / this.interval));\n        const middlePoint = Math.round((xPosition - this.from) / this.interval);\n        // PEAK SHAPE MAY BE ASYMMETRC (widthLeft and widthRight) !\n        // we calculate the left part of the shape\n        shape.fwhm = widthLeft;\n        for (let index = firstPoint; index < Math.max(middlePoint, 0); index++) {\n            this.data.y[index] +=\n                intensity * shape.fct(this.data.x[index] - xPosition);\n        }\n        // we calculate the right part of the gaussian\n        shape.fwhm = widthRight;\n        for (let index = Math.min(middlePoint, lastPoint); index <= lastPoint; index++) {\n            this.data.y[index] +=\n                intensity * shape.fct(this.data.x[index] - xPosition);\n        }\n        return this;\n    }\n    /**\n     * Add a baseline to the spectrum.\n     * @param baselineFct - Mathematical function producing the baseline you want.\n     * @returns The generator instance.\n     */\n    addBaseline(baselineFct) {\n        addBaseline(this.data, baselineFct);\n        return this;\n    }\n    /**\n     * Add noise to the spectrum.\n     * @param options - Configuration for noise generation.\n     * @returns The generator instance.\n     */\n    addNoise(options) {\n        addNoise(this.data, options);\n        return this;\n    }\n    /**\n     * Get the generated spectrum.\n     * @param options - Options for getting the spectrum.\n     * @returns The generated spectrum data.\n     */\n    getSpectrum(options = {}) {\n        if (typeof options === 'boolean') {\n            options = { copy: options };\n        }\n        const { copy = true, threshold = 0 } = options;\n        if (threshold) {\n            const minPeakHeight = this.maxPeakHeight * threshold;\n            const x = [];\n            const y = [];\n            for (let i = 0; i < this.data.x.length; i++) {\n                if (this.data.y[i] >= minPeakHeight) {\n                    x.push(this.data.x[i]);\n                    y.push(this.data.y[i]);\n                }\n            }\n            return { x: Float64Array.from(x), y: Float64Array.from(y) };\n        }\n        if (copy) {\n            return {\n                x: this.data.x.slice(),\n                y: this.data.y.slice(),\n            };\n        }\n        else {\n            return this.data;\n        }\n    }\n    /**\n     * Resets the generator with an empty spectrum.\n     * @returns The generator instance.\n     */\n    reset() {\n        if (this.nbPoints === 1) {\n            this.data.x[0] = (this.from + this.to) / 2;\n        }\n        else {\n            for (let i = 0; i < this.nbPoints; i++) {\n                this.data.x[i] = this.from + i * this.interval;\n            }\n        }\n        return this;\n    }\n}\nfunction assertInteger(value, name) {\n    if (!Number.isInteger(value)) {\n        throw new TypeError(`${name} option must be an integer`);\n    }\n}\nfunction assertNumber(value, name) {\n    if (!Number.isFinite(value)) {\n        throw new TypeError(`${name} option must be a number`);\n    }\n}\n/**\n * Generates a spectrum and returns it.\n * @param peaks - List of peaks to put in the spectrum.\n * @param options - Configuration for spectrum generation.\n * @returns The generated spectrum data.\n */\nexport function generateSpectrum(peaks, options = {}) {\n    const { generator: generatorOptions, noise, baseline, threshold, peakOptions, } = options;\n    const generator = new SpectrumGenerator(generatorOptions);\n    generator.addPeaks(peaks, peakOptions);\n    if (baseline)\n        generator.addBaseline(baseline);\n    if (noise) {\n        generator.addNoise(noise);\n    }\n    return generator.getSpectrum({\n        threshold,\n    });\n}\n//# sourceMappingURL=SpectrumGenerator.js.map","import { getShape2D } from 'ml-peak-shape-generator';\nimport { matrixCreateEmpty, matrixMinMaxZ } from 'ml-spectra-processing';\nconst axis2D = ['x', 'y'];\nconst peakCoordinates = ['x', 'y', 'z'];\n/**\n * Converts a width value to full width at half maximum (FWHM).\n * @param shape - The 2D shape to use for conversion.\n * @param width - The width value to convert.\n * @returns The converted FWHM value as an XYNumber object.\n */\nconst convertWidthToFWHM = (shape, width) => {\n    const widthData = ensureXYNumber(width);\n    for (const key of axis2D) {\n        widthData[key] = shape.widthToFWHM(widthData[key]);\n    }\n    return widthData;\n};\nexport class Spectrum2DGenerator {\n    constructor(options = {}) {\n        const { peakWidthFct = () => 5, shape = {\n            kind: 'gaussian',\n        }, } = options;\n        let { from = 0, to = 100, nbPoints = 1001 } = options;\n        from = ensureXYNumber(from);\n        to = ensureXYNumber(to);\n        nbPoints = ensureXYNumber(nbPoints);\n        for (const axis of axis2D) {\n            assertNumber(from[axis], `from-${axis}`);\n            assertNumber(to[axis], `to-${axis}`);\n            assertInteger(nbPoints[axis], `nbPoints-${axis}`);\n        }\n        this.from = from;\n        this.to = to;\n        this.nbPoints = nbPoints;\n        this.interval = calculeIntervals(from, to, nbPoints);\n        this.peakWidthFct = peakWidthFct;\n        this.maxPeakHeight = Number.MIN_SAFE_INTEGER;\n        const shapeGenerator = getShape2D(shape);\n        this.shape = shapeGenerator;\n        this.data = {\n            x: new Float64Array(nbPoints.x),\n            y: new Float64Array(nbPoints.y),\n            z: matrixCreateEmpty({\n                nbRows: this.nbPoints.y,\n                nbColumns: this.nbPoints.x,\n            }),\n        };\n        for (const axis of axis2D) {\n            if (this.to[axis] <= this.from[axis]) {\n                throw new RangeError('to option must be larger than from');\n            }\n        }\n        if (typeof this.peakWidthFct !== 'function') {\n            throw new TypeError('peakWidthFct option must be a function');\n        }\n        this.reset();\n    }\n    /**\n     * Adds multiple peaks to the 2D spectrum.\n     * @param peaks - Array of peaks or peak series to add.\n     * @param options - Options for adding peaks.\n     * @returns The generator instance.\n     */\n    addPeaks(peaks, options) {\n        if (!Array.isArray(peaks) &&\n            (typeof peaks !== 'object' ||\n                peaks.x === undefined ||\n                peaks.y === undefined ||\n                !Array.isArray(peaks.x) ||\n                !Array.isArray(peaks.y) ||\n                peaks.x.length !== peaks.y.length)) {\n            throw new TypeError('peaks must be an array or an object containing x[] and y[]');\n        }\n        if (Array.isArray(peaks)) {\n            for (const peak of peaks) {\n                this.addPeak(peak, options);\n            }\n        }\n        else {\n            const nbPeaks = peaks.x.length;\n            for (const c of peakCoordinates) {\n                if (peaks[c] &&\n                    Array.isArray(peaks[c]) &&\n                    nbPeaks !== peaks[c].length) {\n                    throw new Error('x, y, z should have the same length');\n                }\n            }\n            for (let i = 0; i < peaks.x.length; i++) {\n                this.addPeak([peaks.x[i], peaks.y[i], peaks.z[i]], options);\n            }\n        }\n        return this;\n    }\n    /**\n     * Adds a single peak to the 2D spectrum.\n     * @param peak - Peak to add, can be array or object format.\n     * @param options - Options for adding the peak.\n     * @returns The generator instance.\n     */\n    addPeak(peak, options = {}) {\n        if (Array.isArray(peak) && peak.length < 3) {\n            throw new Error('peak must be an array with three (or four) values or an object with {x,y,z,width?}');\n        }\n        if (!Array.isArray(peak) &&\n            peakCoordinates.some((e) => peak[e] === undefined)) {\n            throw new Error('peak must be an array with three (or four) values or an object with {x,y,z,width?}');\n        }\n        let xPosition;\n        let yPosition;\n        let intensity;\n        let peakFWHM;\n        let peakWidth;\n        let peakShapeOptions;\n        if (Array.isArray(peak)) {\n            [xPosition, yPosition, intensity, peakFWHM, peakShapeOptions] = peak;\n        }\n        else {\n            xPosition = peak.x;\n            yPosition = peak.y;\n            intensity = peak.z;\n            peakFWHM = peak.fwhm;\n            peakWidth = peak.width;\n            peakShapeOptions = peak.shape;\n        }\n        const position = { x: xPosition, y: yPosition };\n        if (intensity > this.maxPeakHeight)\n            this.maxPeakHeight = intensity;\n        const { width } = options;\n        let { shape: shapeOptions } = options;\n        if (peakShapeOptions) {\n            shapeOptions = shapeOptions\n                ? { ...shapeOptions, ...peakShapeOptions }\n                : peakShapeOptions;\n        }\n        const shape = shapeOptions\n            ? getShape2D(shapeOptions)\n            : Object.assign(Object.create(Object.getPrototypeOf(this.shape)), structuredClone(this.shape));\n        let { fwhm = peakFWHM !== undefined\n            ? peakFWHM\n            : peakWidth\n                ? convertWidthToFWHM(shape, peakWidth)\n                : width\n                    ? convertWidthToFWHM(shape, width)\n                    : this.peakWidthFct(xPosition, yPosition), } = options;\n        fwhm = ensureXYNumber(fwhm);\n        let factor = options.factor === undefined ? shape.getFactor() : options.factor;\n        factor = ensureXYNumber(factor);\n        const firstPoint = { x: 0, y: 0 };\n        const lastPoint = { x: 0, y: 0 };\n        for (const axis of axis2D) {\n            const first = position[axis] - (fwhm[axis] / 2) * factor[axis];\n            const last = position[axis] + (fwhm[axis] / 2) * factor[axis];\n            firstPoint[axis] = Math.max(0, Math.floor((first - this.from[axis]) / this.interval[axis]));\n            lastPoint[axis] = Math.min(this.nbPoints[axis], Math.ceil((last - this.from[axis]) / this.interval[axis]));\n        }\n        shape.fwhm = fwhm;\n        for (let xIndex = firstPoint.x; xIndex < lastPoint.x; xIndex++) {\n            for (let yIndex = firstPoint.y; yIndex < lastPoint.y; yIndex++) {\n                const value = intensity *\n                    shape.fct(this.data.x[xIndex] - position.x, this.data.y[yIndex] - position.y);\n                if (Math.abs(value) > 1e-6) {\n                    this.data.z[yIndex][xIndex] += value;\n                }\n            }\n        }\n        return this;\n    }\n    /**\n     * Gets the generated 2D spectrum data.\n     * @param options - Options for getting the spectrum.\n     * @returns The spectrum data object.\n     */\n    getSpectrum(options = {}) {\n        if (typeof options === 'boolean') {\n            options = { copy: options };\n        }\n        const { copy = true } = options;\n        const minMaxZ = matrixMinMaxZ(this.data.z);\n        return {\n            minX: this.from.x,\n            maxX: this.to.x,\n            maxY: this.to.y,\n            minY: this.from.y,\n            minZ: minMaxZ.min,\n            maxZ: minMaxZ.max,\n            z: copy ? this.data.z.slice() : this.data.z,\n        };\n    }\n    /**\n     * Resets the generator to initial state.\n     * @returns The generator instance.\n     */\n    reset() {\n        const spectrum = this.data;\n        for (const axis of axis2D) {\n            for (let i = 0; i < this.nbPoints[axis]; i++) {\n                spectrum[axis][i] = this.from[axis] + i * this.interval[axis];\n            }\n        }\n        for (const row of spectrum.z) {\n            for (let j = 0; j < row.length; j++) {\n                row[j] = 0;\n            }\n        }\n        return this;\n    }\n}\n/**\n * Generates a 2D spectrum with the given peaks.\n * @param peaks - Peaks to include in the spectrum.\n * @param options - Options for spectrum generation.\n * @returns The generated spectrum data.\n */\nexport function generateSpectrum2D(peaks, options = {}) {\n    const { generator: generatorOptions, peaks: addPeaksOptions } = options;\n    const generator = new Spectrum2DGenerator(generatorOptions);\n    generator.addPeaks(peaks, addPeaksOptions);\n    return generator.getSpectrum();\n}\n/**\n * Ensures the input is an XYNumber object.\n * @param input - Number or XYNumber to process.\n * @returns An XYNumber object.\n */\nfunction ensureXYNumber(input) {\n    return typeof input !== 'object' ? { x: input, y: input } : { ...input };\n}\n/**\n * Calculates the intervals between points for both x and y axes.\n * @param from - Starting point coordinates.\n * @param to - Ending point coordinates.\n * @param nbPoints - Number of points in each dimension.\n * @returns The calculated intervals as an XYNumber object.\n */\nfunction calculeIntervals(from, to, nbPoints) {\n    return {\n        x: (to.x - from.x) / (nbPoints.x - 1),\n        y: (to.y - from.y) / (nbPoints.y - 1),\n    };\n}\n/**\n * Validates if a value is an integer.\n * @param value - Number to validate.\n * @param name - Name of the parameter for error message.\n * @throws {TypeError} If value is not an integer.\n */\nfunction assertInteger(value, name) {\n    if (!Number.isInteger(value)) {\n        throw new TypeError(`${name} option must be an integer`);\n    }\n}\n/**\n * Validates if a value is a finite number.\n * @param value - Number to validate.\n * @param name - Name of the parameter for error message.\n * @throws {TypeError} If value is not a finite number.\n */\nfunction assertNumber(value, name) {\n    if (!Number.isFinite(value)) {\n        throw new TypeError(`${name} option must be a number`);\n    }\n}\n//# sourceMappingURL=Spectrum2DGenerator.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.closestPointX = closestPointX;\nfunction closestPointX(array, target) {\n    let low = 0;\n    let high = array.length - 1;\n    let middle = 0;\n    while (high - low > 1) {\n        middle = low + ((high - low) >> 1);\n        if (array[middle].x < target) {\n            low = middle;\n        }\n        else if (array[middle].x > target) {\n            high = middle;\n        }\n        else {\n            return array[middle];\n        }\n    }\n    if (low < array.length - 1) {\n        if (Math.abs(target - array[low].x) < Math.abs(array[low + 1].x - target)) {\n            return array[low];\n        }\n        else {\n            return array[low + 1];\n        }\n    }\n    else {\n        return array[low];\n    }\n}\n//# sourceMappingURL=closestPointX.js.map","\"use strict\";\n/**\n * Join x values if there are similar\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.joinX = joinX;\nfunction joinX(self, threshold = Number.EPSILON) {\n    // when we join we will use the center of mass\n    if (self.array.length === 0)\n        return [];\n    self.sortX();\n    let current = self.array[0];\n    let result = [current];\n    for (let i = 1; i < self.array.length; i++) {\n        const item = self.array[i];\n        if (item.x - current.x <= threshold) {\n            // weighted sum\n            current.x =\n                (item.y / (current.y + item.y)) * (item.x - current.x) + current.x;\n            current.y += item.y;\n        }\n        else {\n            current = { ...item };\n            result.push(current);\n        }\n    }\n    self.array = result;\n    self.ySorted = false;\n    return self;\n}\n//# sourceMappingURL=joinX.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.multiply = multiply;\nfunction multiply(a, b, options = {}) {\n    const { minY = 1e-8, maxLines = 5000, deltaX = 1e-2 } = options;\n    const result = new a.constructor();\n    a.sortY();\n    b.sortY();\n    for (let entryA of a.array) {\n        for (let entryB of b.array) {\n            let y = entryA.y * entryB.y;\n            if (y > minY) {\n                const composition = calculateComposition(entryA, entryB);\n                if (composition) {\n                    result.push({ x: entryA.x + entryB.x, y, composition });\n                }\n                else {\n                    result.push({ x: entryA.x + entryB.x, y });\n                }\n            }\n            if (result.length > maxLines * 2) {\n                result.joinX(deltaX);\n                result.topY(maxLines);\n            }\n        }\n    }\n    result.joinX(deltaX);\n    result.topY(maxLines);\n    a.move(result);\n    return a;\n}\nfunction calculateComposition(entryA, entryB) {\n    if (!entryA.composition || !entryB.composition)\n        return;\n    let toReturn = {};\n    const keys = [\n        ...new Set(Object.keys(entryA.composition).concat(Object.keys(entryB.composition))),\n    ];\n    for (let key of keys) {\n        toReturn[key] =\n            (entryA.composition[key] || 0) + (entryB.composition[key] || 0);\n    }\n    return toReturn;\n}\n//# sourceMappingURL=multiply.js.map","\"use strict\";\n// https://en.wikipedia.org/wiki/Exponentiation_by_squaring\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.power = power;\nfunction power(array, p, options = {}) {\n    if (p <= 0)\n        throw new Error('power must be larger than 0');\n    if (p === 1)\n        return array;\n    if (p === 2) {\n        return array.square();\n    }\n    p--;\n    let base = array.copy(); // linear time\n    while (p !== 0) {\n        if ((p & 1) !== 0) {\n            array.multiply(base, options); // executed <= log2(p) times\n        }\n        p >>= 1;\n        if (p !== 0)\n            base.square(options); // executed <= log2(p) times\n    }\n    return array;\n}\n//# sourceMappingURL=power.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Distribution = void 0;\nconst closestPointX_js_1 = require(\"./utils/closestPointX.js\");\nconst joinX_js_1 = require(\"./utils/joinX.js\");\nconst multiply_js_1 = require(\"./utils/multiply.js\");\nconst power_js_1 = require(\"./utils/power.js\");\n/**\n * Internal class to deal with isotopic distribution calculations\n */\nclass Distribution {\n    constructor(array = []) {\n        this.array = array;\n        this.cache = getEmptyCache();\n    }\n    emptyCache() {\n        if (this.cache.isEmpty)\n            return;\n        this.cache = getEmptyCache();\n    }\n    get length() {\n        return this.array.length;\n    }\n    get xs() {\n        return this.array.map((p) => p.x);\n    }\n    get ys() {\n        return this.array.map((p) => p.y);\n    }\n    get sumY() {\n        if (!Number.isNaN(this.cache.sumY))\n            return this.cache.sumY;\n        let sumY = 0;\n        for (let item of this.array) {\n            sumY += item.y;\n        }\n        this.cache.sumY = sumY;\n        this.cache.isEmpty = false;\n        return sumY;\n    }\n    get minX() {\n        if (!Number.isNaN(this.cache.minX))\n            return this.cache.minX;\n        let minX = Number.POSITIVE_INFINITY;\n        for (let item of this.array) {\n            if (item.x < minX) {\n                minX = item.x;\n            }\n        }\n        this.cache.minX = minX;\n        this.cache.isEmpty = false;\n        return minX;\n    }\n    get maxX() {\n        if (!Number.isNaN(this.cache.maxX))\n            return this.cache.maxX;\n        let maxX = Number.NEGATIVE_INFINITY;\n        for (let item of this.array) {\n            if (item.x > maxX) {\n                maxX = item.x;\n            }\n        }\n        this.cache.maxX = maxX;\n        this.cache.isEmpty = false;\n        return maxX;\n    }\n    get minY() {\n        if (!Number.isNaN(this.cache.minY))\n            return this.cache.minY;\n        let minY = Number.POSITIVE_INFINITY;\n        for (let item of this.array) {\n            if (item.y < minY) {\n                minY = item.y;\n            }\n        }\n        this.cache.minY = minY;\n        this.cache.isEmpty = false;\n        return minY;\n    }\n    get maxY() {\n        if (!Number.isNaN(this.cache.maxY))\n            return this.cache.maxY;\n        let maxY = Number.NEGATIVE_INFINITY;\n        for (let item of this.array) {\n            if (item.y > maxY) {\n                maxY = item.y;\n            }\n        }\n        this.cache.maxY = maxY;\n        this.cache.isEmpty = false;\n        return maxY;\n    }\n    multiplyY(value) {\n        for (const item of this.array) {\n            item.y *= value;\n        }\n    }\n    setArray(array) {\n        this.array = array;\n        this.emptyCache();\n    }\n    move(other) {\n        this.array = other.array;\n        this.emptyCache();\n    }\n    push(...points) {\n        this.array.push(...points);\n        this.emptyCache();\n    }\n    /**\n     * Sort by ASCENDING x values\n     * @returns {Distribution}\n     */\n    sortX() {\n        this.cache.ySorted = false;\n        if (this.cache.xSorted)\n            return this;\n        this.array.sort((a, b) => a.x - b.x);\n        this.cache.xSorted = true;\n        this.cache.isEmpty = false;\n        return this;\n    }\n    /**\n     * Sort by DESCENDING y values\n     * @returns {Distribution}\n     */\n    sortY() {\n        this.cache.xSorted = false;\n        if (this.cache.ySorted)\n            return this;\n        this.array.sort((a, b) => b.y - a.y);\n        this.cache.ySorted = true;\n        this.cache.isEmpty = false;\n        return this;\n    }\n    normalize() {\n        const sum = this.sumY;\n        for (let item of this.array) {\n            item.y /= sum;\n        }\n        return this;\n    }\n    /**\n     * Only keep a defined number of peaks\n     * @param {number} limit\n     * @returns\n     */\n    topY(limit) {\n        if (!limit)\n            return this;\n        if (this.array.length <= limit)\n            return this;\n        this.sortY();\n        this.array.splice(limit);\n        return this;\n    }\n    /**\n     * remove all the peaks under a defined relative threshold\n     * @param {number} [relativeValue=0] Should be between 0 and 1. 0 means no peak will be removed, 1 means all peaks will be removed\n     */\n    threshold(relativeValue = 0) {\n        if (!relativeValue)\n            return this;\n        const maxY = this.maxY;\n        const threshold = maxY * relativeValue;\n        this.array = this.array.filter((point) => point.y >= threshold);\n    }\n    square(options = {}) {\n        return this.multiply(this, options);\n    }\n    multiply(b, options) {\n        return (0, multiply_js_1.multiply)(this, b, options);\n    }\n    power(p, options) {\n        return (0, power_js_1.power)(this, p, options);\n    }\n    copy() {\n        let distCopy = new Distribution();\n        distCopy.cache = { ...this.cache };\n        distCopy.array = structuredClone(this.array);\n        return distCopy;\n    }\n    maxToOne() {\n        if (this.array.length === 0)\n            return this;\n        let currentMax = this.maxY;\n        for (let item of this.array) {\n            item.y /= currentMax;\n        }\n        return this;\n    }\n    joinX(threshold) {\n        return (0, joinX_js_1.joinX)(this, threshold);\n    }\n    append(distribution) {\n        for (let item of distribution.array) {\n            this.array.push(item);\n        }\n        this.emptyCache();\n    }\n    closestPointX(target) {\n        this.sortX();\n        return (0, closestPointX_js_1.closestPointX)(this.array, target);\n    }\n}\nexports.Distribution = Distribution;\nfunction getEmptyCache() {\n    return {\n        isEmpty: true,\n        xSorted: false,\n        ySorted: false,\n        minX: Number.NaN,\n        maxX: Number.NaN,\n        minY: Number.NaN,\n        maxY: Number.NaN,\n        sumY: Number.NaN,\n    };\n}\n//# sourceMappingURL=Distribution.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getDerivedCompositionInfo = getDerivedCompositionInfo;\nconst chemical_elements_1 = require(\"chemical-elements\");\nconst mf_parser_1 = require(\"mf-parser\");\n/**\n * Calcultes informations about the isotopic composition explaining a specific mass\n * @param {Record<string, number>} composition\n * @returns\n */\nfunction getDerivedCompositionInfo(composition) {\n    const shortComposition = {};\n    let label = '';\n    let shortLabel = '';\n    for (let key in composition) {\n        let isotopeLabel = '';\n        for (let i = 0; i < key.length; i++) {\n            if (mf_parser_1.superscript[key[i]]) {\n                isotopeLabel += mf_parser_1.superscript[key[i]];\n            }\n            else {\n                isotopeLabel += key[i];\n            }\n        }\n        if (composition[key] > 1) {\n            const number = String(composition[key]);\n            for (let i = 0; i < number.length; i++) {\n                isotopeLabel += mf_parser_1.subscript[number[i]];\n            }\n        }\n        label += isotopeLabel;\n        if (chemical_elements_1.stableIsotopesObject[key].mostAbundant)\n            continue;\n        shortLabel += isotopeLabel;\n        shortComposition[key] = composition[key];\n    }\n    return { label, shortComposition, shortLabel };\n}\n//# sourceMappingURL=getDerivedCompositionInfo.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.IsotopicDistribution = void 0;\nconst chemical_elements_1 = require(\"chemical-elements\");\nconst mf_parser_1 = require(\"mf-parser\");\nconst mf_utilities_1 = require(\"mf-utilities\");\nconst ml_spectra_processing_1 = require(\"ml-spectra-processing\");\nconst spectrum_generator_1 = require(\"spectrum-generator\");\nconst Distribution_1 = require(\"./Distribution\");\nconst getDerivedCompositionInfo_1 = require(\"./utils/getDerivedCompositionInfo\");\nconst MINIMAL_FWHM = 1e-8;\nconst MINIMAL_Y = 1e-8;\n/** @typedef {import('mf-parser').IsotopesInfo} IsotopesInfo */\n/** @typedef {import('mf-parser').MFInfo} MFInfo */\n/** @typedef {import('./IsotopicDistribution.types').XY} XY */\n/** @typedef {import('./IsotopicDistribution.types').IsotopicDistributionPart} IsotopicDistributionPart */\n/** @typedef {import('./IsotopicDistribution.types').IsotopicDistributionOptions} IsotopicDistributionOptions */\n/**\n * A class that allows to manage isotopic distribution\n */\nclass IsotopicDistribution {\n    /**\n     * Class that manages isotopic distribution\n     * @param {string|Array<any>} value - Molecular formula or an array of parts.\n     * @param {IsotopicDistributionOptions} [options]\n     */\n    constructor(value, options = {}) {\n        this.threshold = options.threshold;\n        this.limit = options.limit;\n        if (Array.isArray(value)) {\n            this.parts = structuredClone(value);\n            for (let part of this.parts) {\n                part.confidence = 0;\n                part.isotopesInfo = new mf_parser_1.MF(`${part.mf}(${part.ionization.mf})`).getIsotopesInfo();\n            }\n        }\n        else {\n            let mf = new mf_parser_1.MF(value, { ensureCase: options.ensureCase });\n            let mfInfo = mf.getInfo();\n            const ionizations = (0, mf_utilities_1.preprocessIonizations)(options.ionizations);\n            /** @type {MFInfo} */\n            const parts = 'parts' in mfInfo ? mfInfo.parts : [mfInfo];\n            this.parts = [];\n            for (let partOriginal of parts) {\n                // we calculate information for each part\n                for (const ionization of ionizations) {\n                    let part = structuredClone(partOriginal);\n                    part.em = part.monoisotopicMass; // TODO: To remove !!! we change the name !?\n                    part.isotopesInfo = new mf_parser_1.MF(`${part.mf}(${ionization.mf})`).getIsotopesInfo();\n                    part.confidence = 0;\n                    let msInfo = (0, mf_utilities_1.getMsInfo)(part, {\n                        ionization,\n                    });\n                    part.ionization = msInfo.ionization;\n                    part.ms = msInfo.ms;\n                    this.parts.push(part);\n                }\n            }\n        }\n        this.cachedDistribution = undefined;\n        this.fwhm = options.fwhm === undefined ? 0.01 : options.fwhm;\n        // if fwhm is under 1e-8 there are some artifacts in the spectra\n        if (this.fwhm < MINIMAL_FWHM)\n            this.fwhm = MINIMAL_FWHM;\n        this.minY = options.minY === undefined ? MINIMAL_Y : options.minY;\n        this.maxLines = options.maxLines || 5000;\n        this.allowNeutral =\n            options.allowNeutral === undefined ? true : options.allowNeutral;\n    }\n    /**\n     * @returns {Array<IsotopicDistributionPart>}\n     */\n    getParts() {\n        return this.parts;\n    }\n    /**\n     * @return {Distribution} returns the total distribution (for all parts)\n     */\n    getDistribution() {\n        if (this.cachedDistribution)\n            return this.cachedDistribution;\n        let options = {\n            maxLines: this.maxLines,\n            minY: this.minY,\n            deltaX: this.fwhm,\n        };\n        let finalDistribution = new Distribution_1.Distribution();\n        this.confidence = 0;\n        // TODO need to cache each part without ionization\n        // in case of many ionization we don't need to recalculate everything !\n        for (let part of this.parts) {\n            let totalDistribution = new Distribution_1.Distribution([\n                {\n                    x: 0,\n                    y: 1,\n                    composition: this.fwhm === MINIMAL_FWHM ? {} : undefined, // should we calculate composition in isotopes of each peak\n                },\n            ]);\n            let charge = part.ms.charge;\n            let absoluteCharge = Math.abs(charge);\n            if (charge || this.allowNeutral) {\n                for (let isotope of part.isotopesInfo.isotopes) {\n                    if (isotope.number < 0)\n                        return { array: [] };\n                    if (isotope.number > 0) {\n                        const newDistribution = structuredClone(isotope.distribution);\n                        if (this.fwhm === MINIMAL_FWHM) {\n                            // add composition\n                            for (const entry of newDistribution) {\n                                entry.composition = { [Math.round(entry.x) + isotope.atom]: 1 };\n                            }\n                        }\n                        let distribution = new Distribution_1.Distribution(newDistribution);\n                        distribution.power(isotope.number, options);\n                        totalDistribution.multiply(distribution, options);\n                    }\n                }\n                this.confidence = 0;\n                for (const item of totalDistribution.array) {\n                    this.confidence += item.y;\n                }\n                // we finally deal with the charge\n                if (charge) {\n                    for (const e of totalDistribution.array) {\n                        e.x = (e.x - chemical_elements_1.ELECTRON_MASS * charge) / absoluteCharge;\n                    }\n                }\n                if (totalDistribution.array && totalDistribution.array.length > 0) {\n                    totalDistribution.sortX();\n                    part.fromX = totalDistribution.array[0].x;\n                    part.toX = totalDistribution.array.at(-1).x;\n                }\n                if (part?.ms.similarity?.factor) {\n                    totalDistribution.multiplyY(part.ms.similarity.factor);\n                }\n                else if (part.ms?.target?.intensity &&\n                    part.ms?.target?.intensity !== 1) {\n                    // intensity is the value of the monoisotopic mass !\n                    // need to find the intensity of the peak corresponding\n                    // to the monoisotopic mass\n                    if (part.ms.target.mass) {\n                        let target = totalDistribution.closestPointX(part.ms.target.mass);\n                        totalDistribution.multiplyY(part.ms.target.intensity / target.y);\n                    }\n                    else {\n                        totalDistribution.multiplyY(part.ms.target.intensity);\n                    }\n                }\n                else if (part?.intensity && part?.intensity !== 1) {\n                    totalDistribution.multiplyY(part.intensity);\n                }\n                part.isotopicDistribution = totalDistribution.array;\n                const absoluteChargeOrOne = absoluteCharge || 1;\n                for (let entry of totalDistribution.array) {\n                    if (!entry.composition)\n                        continue;\n                    const deltaNeutrons = Math.round(entry.x * absoluteChargeOrOne - part.monoisotopicMass) +\n                        0; // +0 to avoid -0\n                    Object.assign(entry, {\n                        ...(0, getDerivedCompositionInfo_1.getDerivedCompositionInfo)(entry.composition),\n                        deltaNeutrons,\n                    });\n                }\n                if (finalDistribution.array.length === 0) {\n                    finalDistribution = totalDistribution;\n                }\n                else {\n                    finalDistribution.append(totalDistribution);\n                }\n            }\n        }\n        if (finalDistribution)\n            finalDistribution.joinX(this.fwhm);\n        // if there is a threshold we will deal with it\n        // and we will correct the confidence\n        if (this.threshold || this.limit) {\n            const sumBefore = finalDistribution.sumY;\n            if (this.threshold)\n                finalDistribution.threshold(this.threshold);\n            if (this.limit) {\n                finalDistribution.topY(this.limit);\n                finalDistribution.sortX();\n            }\n            const sumAfter = finalDistribution.sumY;\n            this.confidence = (this.confidence * sumAfter) / sumBefore;\n        }\n        this.confidence /= this.parts.length;\n        this.cachedDistribution = finalDistribution;\n        return finalDistribution;\n    }\n    /**\n     *\n     * @param {object} options\n     * @param {string} [options.delimiter=', ']\n     * @param {number} [options.numberXDecimals=4]\n     * @param {number} [options.numberYDecimals=4]\n     * @returns\n     */\n    getCSV(options) {\n        return this.getText({ ...options, delimiter: ', ' });\n    }\n    /**\n     *\n     * @param {object} options\n     * @param {string} [options.delimiter='\\t']\n     * @param {number} [options.numberXDecimals=4]\n     * @param {number} [options.numberYDecimals=4]\n     * @returns\n     */\n    getTSV(options) {\n        return this.getText({ ...options, delimiter: '\\t' });\n    }\n    getTable(options = {}) {\n        const { maxValue, xLabel = 'x', yLabel = 'y' } = options;\n        let points = this.getDistribution().array;\n        if (points.length === 0)\n            return [];\n        let factor = 1;\n        if (maxValue) {\n            let maxY = this.getMaxY(points);\n            factor = maxValue / maxY;\n        }\n        return points.map((point) => {\n            let newPoint = {};\n            newPoint[xLabel] = point.x;\n            newPoint[yLabel] = point.y * factor;\n            return newPoint;\n        });\n    }\n    /**\n     *\n     * @param {object} options\n     * @param {string} [options.delimiter='\\t']\n     * @param {number} [options.numberXDecimals=4]\n     * @param {number} [options.numberYDecimals=4]\n     * @returns\n     */\n    getText(options = {}) {\n        const { delimiter = '\\t', numberXDecimals = 5, numberYDecimals = 3, } = options;\n        let points = this.getDistribution().array;\n        let csv = [];\n        for (let point of points) {\n            csv.push(`${point.x.toFixed(numberXDecimals)}${delimiter}${(point.y * 100).toFixed(numberYDecimals)}`);\n        }\n        return csv.join('\\n');\n    }\n    getMaxY(points) {\n        let maxY = points[0].y;\n        for (let point of points) {\n            if (point.y > maxY)\n                maxY = point.y;\n        }\n        return maxY;\n    }\n    getSumY(points) {\n        let sumY = 0;\n        for (let point of points) {\n            sumY += point.y;\n        }\n        return sumY;\n    }\n    /**\n     * Returns the isotopic distribution as an array of peaks\n     * @param {object} [options={}]\n     * @param {number} [options.maxValue=100]\n     * @param {number} [options.sumValue] // if sumValue is defined, maxValue is ignored\n     * @return {Array<{x:number,y:number}|{x:number,y:number,label:string,shortComposition:string,shortLabel:string,deltaNeutrons:number}>}\n     */\n    getPeaks(options = {}) {\n        const { maxValue = 100, sumValue } = options;\n        let peaks = this.getDistribution().array;\n        if (peaks.length === 0)\n            return [];\n        let factor = 1;\n        if (sumValue) {\n            let sumY = this.getSumY(peaks);\n            factor = sumY / sumValue;\n            if (factor !== 1) {\n                peaks = structuredClone(peaks);\n                for (const peak of peaks) {\n                    peak.y = peak.y / factor;\n                }\n            }\n        }\n        else if (maxValue) {\n            let maxY = this.getMaxY(peaks);\n            if (maxValue !== maxY) {\n                // we need to copy the array because we prefer no side effects\n                peaks = structuredClone(peaks);\n                for (const peak of peaks) {\n                    // we rescale the Y values by first dividing by maxY and then multiplying by maxValue in order to avoid approximation errors\n                    peak.y = (peak.y / maxY) * maxValue;\n                }\n            }\n        }\n        return peaks;\n    }\n    /**\n     * Returns the isotopic distirubtion\n     * @param {object} [options={}]\n     * @param {number} [options.maxValue=100]\n     * @param {number} [options.sumValue] // if sumValue is defined, maxValue is ignored\n     * @return {{x:number[],y:number[]}|{x:number[],y:number[],label:string[],shortComposition:string[],shortLabel:string[],deltaNeutrons:[]}}\n     */\n    getXY(options = {}) {\n        let peaks = this.getPeaks(options);\n        if (peaks.length === 0) {\n            return { x: [], y: [] };\n        }\n        const result = {\n            x: peaks.map((a) => a.x),\n            y: peaks.map((a) => a.y),\n        };\n        for (let key of Object.keys(peaks[0]).filter((k) => k !== 'x' && k !== 'y')) {\n            result[key] = peaks.map((a) => a[key]);\n        }\n        return result;\n    }\n    /**\n     * Returns the isotopic distirubtion\n     * @param {object} [options={}]\n     * @param {number} [options.maxValue=100]\n     * @param {number} [options.sumValue] // if sumValue is defined, maxValue is ignored\n     * @return {import('cheminfo-types').MeasurementXYVariables} an object containing at least the 2 properties: x:[] and y:[]\n     */\n    getVariables(options = {}) {\n        const xy = this.getXY(options);\n        return {\n            x: { data: xy.x, label: 'm/z', units: 'u' },\n            y: { data: xy.y, label: 'Relative intensity', units: '%' },\n        };\n    }\n    /**\n     * Returns the isotopic distribution as the sum of gaussian\n     * @param {object} [options={}]\n     * @param {number} [options.gaussianWidth=10] // how good should look the gaussian ? By default we take 10 times the fwhm as number of points\n     * @param {number} [options.threshold=0.00001] // minimal height to return point\n     * @param {number} [options.maxLength=1e6] // minimal height to return point\n     * @param {number} [options.maxValue] // rescale Y to reach maxValue\n     * @param {number} [options.from] // minimal x value, default to the first point - 2\n     * @param {number} [options.to] // maximal x value, default to the last point + 2\n     * @param {function} [options.peakWidthFct=(mz)=>(this.fwhm)]\n     * @return {XY} isotopic distribution as an object containing 2 properties: x:[] and y:[]\n     */\n    getGaussian(options = {}) {\n        const { peakWidthFct = () => this.fwhm, threshold = 0.00001, gaussianWidth = 10, maxValue, maxLength = 1e6, } = options;\n        let points = this.getTable({ maxValue });\n        if (points.length === 0)\n            return { x: [], y: [] };\n        const from = options.from || points[0].x - 2;\n        const to = options.to || points.at(-1).x + 2;\n        const nbPoints = Math.round(((to - from) * gaussianWidth) / this.fwhm + 1);\n        if (nbPoints > maxLength) {\n            throw new Error(`Number of points is over the maxLength: ${nbPoints}>${maxLength}`);\n        }\n        let gaussianOptions = {\n            from,\n            to,\n            nbPoints,\n            peakWidthFct,\n        };\n        let spectrumGenerator = new spectrum_generator_1.SpectrumGenerator(gaussianOptions);\n        for (let point of points) {\n            spectrumGenerator.addPeak([point.x, point.y]);\n        }\n        let spectrum = spectrumGenerator.getSpectrum({ threshold });\n        if (maxValue) {\n            spectrum.y = (0, ml_spectra_processing_1.xNormed)(spectrum.y, {\n                algorithm: 'max',\n                value: maxValue,\n                output: spectrum.y,\n            });\n        }\n        return spectrum;\n    }\n}\nexports.IsotopicDistribution = IsotopicDistribution;\n//# sourceMappingURL=IsotopicDistribution.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.searchSimilarity = searchSimilarity;\nconst isotopic_distribution_1 = require(\"isotopic-distribution\");\nconst peaks_similarity_1 = require(\"peaks-similarity\");\n/**\nSearch for an experimental monoisotopic mass and calculate the similarity\n* @param {object}   [options={}]\n* @param {array}    [options.databases] - an array containing the name of the databases so search, by default all\n* @param {boolean}  [options.flatten] - should we return the array as a flat result\n* @param {function} [options.onStep] - Callback to do after each step\n* @param {string}   [options.ionizations=''] - Comma separated list of ionizations (to charge the molecule)\n* @param {object}   [options.minSimilarity=0.5] - min similarity value\n\n* @param {object}   [options.filter={}]\n* @param {boolean}  [options.filter.forceIonization=false] - If true ignore existing ionizations\n* @param {number}   [options.filter.msem] - Observed monoisotopic mass in mass spectrometer\n* @param {number}   [options.filter.precision=1000] - The precision on the experimental mass\n* @param {number}   [options.filter.minCharge=-Infinity] - Minimal charge\n* @param {number}   [options.filter.maxCharge=+Infinity] - Maximal charge\n* @param {boolean}  [options.filter.absoluteCharge=false] - If true, the charge is absolute (so between 0 and +Infinity by default)\n* @param {object}   [options.filter.unsaturation={}]\n* @param {number}   [options.filter.unsaturation.min=-Infinity] - Minimal unsaturation\n* @param {number}   [options.filter.unsaturation.max=+Infinity] - Maximal unsaturation\n* @param {boolean}  [options.filter.unsaturation.onlyInteger=false] - Integer unsaturation\n* @param {boolean}  [options.filter.unsaturation.onlyNonInteger=false] - Non integer unsaturation\n* @param {object}   [options.filter.atoms] - object of atom:{min, max}\n* @param {object}   [options.filter.callback] - a function to filter the MF\n* @param {object}   [options.similarity={}]\n* @param {number}   [options.similarity.widthBottom]\n* @param {number}   [options.similarity.widthTop]\n* @param {object}   [options.similarity.widthFunction] - function called with mass that should return an object width containing top and bottom\n* @param {object}   [options.similarity.zone={}]\n* @param {number}   [options.similarity.zone.low=-0.5] - window shift based on observed monoisotopic mass\n* @param {number}   [options.similarity.zone.high=2.5] - to value for the comparison window\n* @param {boolean}  [options.similarity.zone.auto=false] - if true, low / high is determined based on the isotopic distribution and the threshold\n* @param {string}   [options.similarity.common]\n* @param {number}   [options.similarity.threshold=0.001] - when calculating similarity we only use the isotopic distribution with peaks over this relative threshold\n* @param {number}   [options.similarity.limit] - We may define the maximum number of peaks to keep\n* @returns {Promise}\n*/\nasync function searchSimilarity(emdb, options = {}) {\n    const { similarity = {}, minSimilarity = 0.5, filter = {}, onStep } = options;\n    let width = {\n        bottom: similarity.widthBottom,\n        top: similarity.widthTop,\n    };\n    if (!emdb.experimentalSpectrum ||\n        emdb.experimentalSpectrum.data.x.length === 0) {\n        throw new Error('You need to add an experimental spectrum first using setMassSpectrum');\n    }\n    let experimentalData = emdb.experimentalSpectrum.data;\n    let sumY = emdb.experimentalSpectrum.sumY();\n    // the result of emdb query will be stored in a property 'ms'\n    let results = emdb.searchMSEM(filter.msem, options);\n    let flatEntries = [];\n    if (!options.flatten) {\n        for (let database of Object.keys(results)) {\n            for (let entry of results[database]) {\n                flatEntries.push(entry);\n            }\n        }\n    }\n    else {\n        flatEntries = results;\n    }\n    let { widthFunction, zone = {}, threshold = 0.001, limit } = similarity;\n    if (widthFunction && typeof widthFunction === 'string') {\n        // eslint-disable-next-line no-new-func\n        widthFunction = new Function('mass', widthFunction);\n        let checkTopBottom = widthFunction(123);\n        if (!checkTopBottom.bottom || !checkTopBottom.top) {\n            throw new Error('widthFunction should return an object with bottom and top properties');\n        }\n    }\n    const { low = -0.5, high = 2.5, auto } = zone;\n    // we need to calculate the similarity of the isotopic distribution\n    let similarityProcessor = new peaks_similarity_1.Comparator(similarity);\n    similarityProcessor.setPeaks1([experimentalData.x, experimentalData.y]);\n    for (let i = 0; i < flatEntries.length; i++) {\n        const entry = flatEntries[i];\n        if (onStep)\n            await onStep(i);\n        if (widthFunction) {\n            width = widthFunction(entry.ms.em);\n        }\n        let isotopicDistribution = new isotopic_distribution_1.IsotopicDistribution(entry.mf, {\n            allowNeutral: false,\n            ionizations: [entry.ionization],\n            fwhm: width.top / 2,\n            threshold,\n            limit,\n        });\n        let distribution = isotopicDistribution.getDistribution();\n        // we need to define the comparison zone that depends of the charge\n        let from, to;\n        if (auto) {\n            from = distribution.minX - 0.5;\n            to = distribution.maxX + 0.5;\n            similarityProcessor.setFromTo(from, to);\n        }\n        else {\n            from = entry.ms.em + low / Math.abs(entry.ms.charge);\n            to = entry.ms.em + high / Math.abs(entry.ms.charge);\n            similarityProcessor.setFromTo(from, to);\n        }\n        if (widthFunction) {\n            similarityProcessor.setTrapezoid(width.bottom, width.top);\n        }\n        similarityProcessor.setPeaks2([distribution.xs, distribution.ys]);\n        let result = similarityProcessor.getSimilarity();\n        result.extractInfo1.from = from;\n        result.extractInfo1.to = to;\n        if (result.similarity > minSimilarity) {\n            entry.ms.similarity = {\n                value: result.similarity,\n                experimental: result.extract1,\n                theoretical: result.extract2,\n                difference: result.diff,\n                experimentalInfo: result.extractInfo1,\n                thereoticalInfo: result.extractInfo2,\n                quantity: result.extractInfo1.sum / sumY,\n                factor: result.extractInfo1.max / result.extractInfo2.max, // by how much we should mulitply the extrat2 to reach the spectrum\n                width,\n            };\n        }\n    }\n    if (!options.flatten) {\n        for (let database of Object.keys(results)) {\n            results[database] = results[database]\n                .filter((entry) => entry.ms.similarity)\n                .sort((a, b) => b.ms.similarity.value - a.ms.similarity.value);\n            for (let entry of results[database]) {\n                flatEntries.push(entry);\n            }\n        }\n    }\n    else {\n        results = results\n            .filter((entry) => entry.ms.similarity)\n            .sort((a, b) => b.ms.similarity.value - a.ms.similarity.value);\n    }\n    return results;\n}\n//# sourceMappingURL=searchSimilarity.js.map","(function(){function a(d){for(var e=0,f=d.length-1,g=void 0,h=void 0,i=void 0,j=c(e,f);!0;){if(f<=e)return d[j];if(f==e+1)return d[e]>d[f]&&b(d,e,f),d[j];for(g=c(e,f),d[g]>d[f]&&b(d,g,f),d[e]>d[f]&&b(d,e,f),d[g]>d[e]&&b(d,g,e),b(d,g,e+1),h=e+1,i=f;!0;){do h++;while(d[e]>d[h]);do i--;while(d[i]>d[e]);if(i<h)break;b(d,h,i)}b(d,e,i),i<=j&&(e=h),i>=j&&(f=i-1)}}var b=function b(d,e,f){var _ref;return _ref=[d[f],d[e]],d[e]=_ref[0],d[f]=_ref[1],_ref},c=function c(d,e){return~~((d+e)/2)};'undefined'!=typeof module&&module.exports?module.exports=a:window.median=a})();\n","import { isAnyArray } from 'is-any-array';\nimport quickSelectMedian from 'median-quickselect';\n\nfunction median(input) {\n  if (!isAnyArray(input)) {\n    throw new TypeError('input must be an array');\n  }\n\n  if (input.length === 0) {\n    throw new TypeError('input must not be empty');\n  }\n\n  return quickSelectMedian(input.slice());\n}\n\nexport { median as default };\n","import median from 'ml-array-median';\nimport {\n  BaseRegression,\n  checkArrayLength,\n  maybeToPrecision,\n} from 'ml-regression-base';\n\nexport class TheilSenRegression extends BaseRegression {\n  /**\n   * Theil–Sen estimator\n   * https://en.wikipedia.org/wiki/Theil%E2%80%93Sen_estimator\n   * @param {Array<number>|boolean} x\n   * @param {Array<number>|object} y\n   * @constructor\n   */\n  constructor(x, y) {\n    super();\n    if (x === true) {\n      // loads the model\n      this.slope = y.slope;\n      this.intercept = y.intercept;\n      this.coefficients = y.coefficients;\n    } else {\n      // creates the model\n      checkArrayLength(x, y);\n      theilSen(this, x, y);\n    }\n  }\n\n  toJSON() {\n    return {\n      name: 'TheilSenRegression',\n      slope: this.slope,\n      intercept: this.intercept,\n    };\n  }\n\n  _predict(input) {\n    return this.slope * input + this.intercept;\n  }\n\n  computeX(input) {\n    return (input - this.intercept) / this.slope;\n  }\n\n  toString(precision) {\n    let result = 'f(x) = ';\n    if (this.slope) {\n      let xFactor = maybeToPrecision(this.slope, precision);\n      result += `${Math.abs(xFactor - 1) < 1e-5 ? '' : `${xFactor} * `}x`;\n      if (this.intercept) {\n        let absIntercept = Math.abs(this.intercept);\n        let operator = absIntercept === this.intercept ? '+' : '-';\n        result += ` ${operator} ${maybeToPrecision(absIntercept, precision)}`;\n      }\n    } else {\n      result += maybeToPrecision(this.intercept, precision);\n    }\n    return result;\n  }\n\n  toLaTeX(precision) {\n    return this.toString(precision);\n  }\n\n  static load(json) {\n    if (json.name !== 'TheilSenRegression') {\n      throw new TypeError('not a Theil-Sen model');\n    }\n    return new TheilSenRegression(true, json);\n  }\n}\n\nfunction theilSen(regression, x, y) {\n  let len = x.length;\n  let slopes = new Array(len * len);\n  let count = 0;\n  for (let i = 0; i < len; ++i) {\n    for (let j = i + 1; j < len; ++j) {\n      if (x[i] !== x[j]) {\n        slopes[count++] = (y[j] - y[i]) / (x[j] - x[i]);\n      }\n    }\n  }\n  slopes.length = count;\n  let medianSlope = median(slopes);\n\n  let cuts = new Array(len);\n  for (let i = 0; i < len; ++i) {\n    cuts[i] = y[i] - medianSlope * x[i];\n  }\n\n  regression.slope = medianSlope;\n  regression.intercept = median(cuts);\n  regression.coefficients = [regression.intercept, regression.slope];\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.massShifts = massShifts;\nconst ml_regression_theil_sen_1 = require(\"ml-regression-theil-sen\");\nconst ml_spectra_processing_1 = require(\"ml-spectra-processing\");\n/**\n * Calculates a function that allows post-calibration on mass spectra based on the error in assignment\n * @param {*} similarities\n * @param {object} [options={}]\n * @returns\n */\nfunction massShifts(similarities, options = {}) {\n    const { minSimilarity = 0.95, minLength = 10 } = options;\n    let results = [];\n    if (!Array.isArray(similarities)) {\n        for (let key of results) {\n            for (let entry of results[key]) {\n                results.push(entry);\n            }\n        }\n    }\n    else {\n        results = similarities;\n    }\n    results = results.filter((result) => result.ms &&\n        result.ms.similarity &&\n        result.ms.similarity.value > minSimilarity);\n    if (results.length < minLength) {\n        throw new Error(`X rescale can not be applied. We need at least ${minLength} peaks with over ${Math.round(minSimilarity * 100)}% similarity`);\n    }\n    const data = results\n        .map((result) => {\n        return {\n            em: result.ms.em,\n            delta: result.ms.delta,\n        };\n    })\n        .sort((a, b) => a.em - b.em);\n    let shifts = { x: [], y: [] };\n    for (const datum of data) {\n        shifts.x.push(Number(datum.em));\n        shifts.y.push(Number(datum.delta));\n    }\n    const regression = new ml_regression_theil_sen_1.TheilSenRegression(shifts.x, shifts.y);\n    let minX = (0, ml_spectra_processing_1.xMinValue)(shifts.x);\n    let maxX = (0, ml_spectra_processing_1.xMaxValue)(shifts.x);\n    let shiftsPPM = { x: shifts.x, y: [] };\n    for (const datum of data) {\n        shiftsPPM.y.push(Number((datum.delta / datum.em) * 1e6));\n    }\n    let regressionChart = { x: [], y: [] };\n    for (let i = minX; i < maxX; i += (maxX - minX) / 1000) {\n        regressionChart.x.push(i);\n        regressionChart.y.push(regression.predict(i));\n    }\n    return {\n        shifts,\n        shiftsPPM,\n        fit: regressionChart,\n        score: regression.score(shifts.x, shifts.y),\n        predictFct: regression.predict.bind(regression),\n        tex: regression.toLaTeX(3),\n        slope: regression.slope,\n        intercept: regression.intercept,\n        predictFctString: `${regression.slope} * mass + ${regression.intercept}`,\n    };\n}\n//# sourceMappingURL=massShifts.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fetchJSON = fetchJSON;\nasync function fetchJSON(url) {\n    const result = await fetch(url);\n    return result.json();\n}\n//# sourceMappingURL=fetchJSON.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n    }\n    Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EMDB = void 0;\nconst ms_spectrum_1 = require(\"ms-spectrum\");\nconst appendFragmentsInfo_js_1 = require(\"./append/appendFragmentsInfo.js\");\nconst fromArray_js_1 = require(\"./from/fromArray.js\");\nconst fromMolecules_js_1 = require(\"./from/fromMolecules.js\");\nconst fromNucleicSequence_js_1 = require(\"./from/fromNucleicSequence.js\");\nconst fromPeptidicSequence_js_1 = require(\"./from/fromPeptidicSequence.js\");\nconst fromRange_js_1 = require(\"./from/fromRange.js\");\nconst loadCommercials_js_1 = require(\"./loadCommercials.js\");\nconst loadGoogleSheet_js_1 = require(\"./loadGoogleSheet.js\");\nconst loadKnapSack_js_1 = require(\"./loadKnapSack.js\");\nconst search_js_1 = require(\"./search.js\");\nconst searchMSEM_js_1 = require(\"./searchMSEM.js\");\nconst searchSimilarity_js_1 = require(\"./searchSimilarity.js\");\n__exportStar(require(\"./massShifts.js\"), exports);\n__exportStar(require(\"./util/fetchJSON.js\"), exports);\n/**\n * A class that deals with database of monoisotopic mass and molecular formula\n */\nclass EMDB {\n    constructor() {\n        this.databases = {};\n        this.experimentalSpectrum = undefined;\n    }\n    /**\n     *\n     * @param {*} data\n     * @param {object} [options={}]\n     * @param {boolean} [options.normed=true] Should we normed (sum Y to 1) the experimental spectrum ?\n     * @param {number} [options.threshold=0.00025] Threshold used for peak picking\n     */\n    setExperimentalSpectrum(data, options = {}) {\n        const { normed = true, threshold = 0.00025 } = options;\n        this.experimentalSpectrum = new ms_spectrum_1.Spectrum(data, { threshold });\n        if (normed) {\n            this.experimentalSpectrum.normedY();\n        }\n        return this.experimentalSpectrum;\n    }\n    /**\n     * Add a new database using the KnapSack content\n     * @param {*} options\n     */\n    async loadKnapSack(options = {}) {\n        const { databaseName = 'knapSack', forceReload = false } = options;\n        if (this.databases[databaseName] && !forceReload)\n            return;\n        this.databases[databaseName] = await (0, loadKnapSack_js_1.loadKnapSack)();\n    }\n    /**\n     * Add a new database of 12000 commercial products\n     * @param {*} options\n     */\n    async loadCommercials(options = {}) {\n        const { databaseName = 'commercials', forceReload = false } = options;\n        if (this.databases[databaseName] && !forceReload)\n            return;\n        this.databases[databaseName] = await (0, loadCommercials_js_1.loadCommercials)();\n    }\n    get(databaseName) {\n        return this.databases[databaseName];\n    }\n    /**\n     * Load the contaminants database from a google sheet document\n     * @param {object} [options={}]\n     * @param {string} [options.databaseName='contaminants']\n     * @param {string} [options.forceReload=false]\n     */\n    async loadContaminants(options = {}) {\n        const { databaseName = 'contaminants', forceReload = false } = options;\n        if (this.databases[databaseName] && !forceReload)\n            return;\n        this.databases[databaseName] = await (0, loadGoogleSheet_js_1.loadGoogleSheet)();\n    }\n    /**\n     * Load a google sheet containing MF information\n     * @param {object} [options={}]\n     * @param {string} [options.databaseName='sheet']\n     * @param {string} [options.forceReload=false]\n     */\n    async loadGoogleSheet(options = {}) {\n        const { databaseName = 'sheet', forceReload = false } = options;\n        if (this.databases[databaseName] && !forceReload)\n            return;\n        this.databases[databaseName] = await (0, loadGoogleSheet_js_1.loadGoogleSheet)();\n    }\n    async loadTest() {\n        await this.fromArray(['C1-100'], {\n            databaseName: 'test',\n            ionizations: '+',\n        });\n    }\n    async loadNeutralTest(options = {}) {\n        const { maxC = 100 } = options;\n        await this.fromArray([`C1-${maxC}`], { databaseName: 'test' });\n    }\n    async fromMonoisotopicMass(mass, options = {}) {\n        const { databaseName = 'monoisotopic', append = false } = options;\n        let result = await (0, ms_spectrum_1.fromMonoisotopicMass)(mass, options);\n        replaceOrAppend(this, databaseName, result.mfs, append);\n        return result;\n    }\n    async fromArray(sequence, options = {}) {\n        const { databaseName = 'generated', append = false, estimate } = options;\n        const results = await (0, fromArray_js_1.fromArray)(sequence, options);\n        if (estimate)\n            return results;\n        replaceOrAppend(this, databaseName, results, append);\n    }\n    async fromMolecules(entries, ocl, options = {}) {\n        const { databaseName = 'molecules', append = false } = options;\n        const results = await (0, fromMolecules_js_1.fromMolecules)(entries, ocl, options);\n        replaceOrAppend(this, databaseName, results, append);\n    }\n    async fromRange(sequence, options = {}) {\n        const { databaseName = 'generated', append = false, estimate } = options;\n        const results = await (0, fromRange_js_1.fromRange)(sequence, options);\n        if (estimate)\n            return results;\n        replaceOrAppend(this, databaseName, results, append);\n    }\n    async fromPeptidicSequence(sequence, options = {}) {\n        const { databaseName = 'peptidic', append = false, estimate } = options;\n        const results = await (0, fromPeptidicSequence_js_1.fromPeptidicSequence)(sequence, options);\n        if (estimate)\n            return results;\n        replaceOrAppend(this, databaseName, results, append);\n    }\n    /**\n     *\n     * @param {string} databaseName\n     * @param {object} [options={}]\n     * @param {number} [options.precision=100]\n     * @param {string} [options.ionizations='']\n     * @returns\n     */\n    async appendFragmentsInfo(databaseName, options = {}) {\n        const database = this.databases[databaseName];\n        await (0, appendFragmentsInfo_js_1.appendFragmentsInfo)(this.experimentalSpectrum, database, options);\n        return database;\n    }\n    async fromNucleicSequence(sequence, options = {}) {\n        const { databaseName = 'nucleic', append = false, estimate } = options;\n        const results = await (0, fromNucleicSequence_js_1.fromNucleicSequence)(sequence, options);\n        if (estimate)\n            return results;\n        replaceOrAppend(this, databaseName, results, append);\n    }\n    listDatabases() {\n        return Object.keys(this.databases).sort();\n    }\n    getInfo() {\n        return {\n            databases: Object.keys(this.databases)\n                .sort()\n                .map((key) => {\n                return { name: key, nbEntries: this.databases[key].length };\n            }),\n        };\n    }\n    search(filter, options = {}) {\n        return (0, search_js_1.search)(this, filter, options);\n    }\n    searchMSEM(filter, options = {}) {\n        return (0, searchMSEM_js_1.searchMSEM)(this, filter, options);\n    }\n    searchSimilarity(options = {}) {\n        return (0, searchSimilarity_js_1.searchSimilarity)(this, options);\n    }\n}\nexports.EMDB = EMDB;\nfunction replaceOrAppend(emdb, databaseName, results, append = false) {\n    if (!emdb.databases[databaseName] || !append) {\n        emdb.databases[databaseName] = results;\n        return;\n    }\n    emdb.databases[databaseName] = emdb.databases[databaseName].concat(results);\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.preprocessEARanges = preprocessEARanges;\nconst mf_parser_1 = require(\"mf-parser\");\nfunction preprocessEARanges(ranges, targetEA) {\n    ranges = structuredClone(ranges);\n    if (typeof ranges === 'string') {\n        // need to convert to ranges\n        let parsed = (0, mf_parser_1.parse)(ranges.replaceAll(/[\\t\\n\\r ]/g, ''));\n        let newRanges = [];\n        let current = {\n            mf: '',\n            min: 1,\n            max: 1,\n        };\n        // example ClBr2(CH2)0-2NO\n        // the idea is that has long as we don't have a range we don't really care\n        // there is a limitation is that the range has to be first level of parenthesis\n        let parenthesisLevel = 0;\n        let currentMF = ''; // start at an atom first level or a parenthesis\n        for (let item of parsed) {\n            switch (item.kind) {\n                case mf_parser_1.Kind.ATOM:\n                    if (parenthesisLevel === 0 && currentMF) {\n                        current.mf += currentMF;\n                        currentMF = '';\n                    }\n                    currentMF += item.value;\n                    break;\n                case mf_parser_1.Kind.ISOTOPE:\n                    if (parenthesisLevel === 0 && currentMF) {\n                        current.mf += currentMF;\n                        currentMF = '';\n                    }\n                    currentMF += `[${item.value.isotope}${item.value.atom}]`;\n                    break;\n                case mf_parser_1.Kind.MULTIPLIER:\n                    if (parenthesisLevel === 0 && currentMF) {\n                        current.mf += currentMF + item.value;\n                        currentMF = '';\n                    }\n                    else {\n                        currentMF += item.value;\n                    }\n                    break;\n                case mf_parser_1.Kind.MULTIPLIER_RANGE:\n                    if (parenthesisLevel !== 0) {\n                        throw new Error('Range multiplier can only be at the first level');\n                    }\n                    newRanges.push({\n                        mf: currentMF,\n                        min: item.value.from,\n                        max: item.value.to,\n                    });\n                    currentMF = '';\n                    break;\n                case mf_parser_1.Kind.OPENING_PARENTHESIS:\n                    parenthesisLevel++;\n                    currentMF += '(';\n                    break;\n                case mf_parser_1.Kind.CLOSING_PARENTHESIS:\n                    parenthesisLevel--;\n                    currentMF += ')';\n                    break;\n                default:\n                    throw new Error(`can not preprocess ${ranges}`);\n            }\n        }\n        if (currentMF) {\n            current.mf += currentMF;\n        }\n        if (current.mf) {\n            newRanges.push(current);\n        }\n        ranges = newRanges;\n    }\n    let possibilities = [];\n    for (let i = 0; i < ranges.length; i++) {\n        let range = ranges[i];\n        let min = range.min === undefined ? 0 : range.min;\n        let max = range.max === undefined ? 1 : range.max;\n        let possibility = {\n            mf: range.mf,\n            minCount: min, // value defined by the user\n            maxCount: max, // value defined by the user\n            targetEA: targetEA[range.mf],\n            mw: 0, // mw till this level\n            aw: 0, // atomic weight (mass * currentCount)\n            maxRatio: 0, // maximum ratio possible if all next elements are 0\n            currentValue: 0,\n            currentCount: min - 1,\n            currentUnsaturation: 0,\n            initialOrder: i,\n        };\n        possibilities.push(possibility);\n        let info = new mf_parser_1.MF(range.mf).getInfo();\n        possibility.mass = info.mass;\n        possibility.unsaturation =\n            range.unsaturation === undefined\n                ? (info.unsaturation - 1) * 2\n                : range.unsaturation;\n        if (possibility.mf !== info.mf)\n            possibility.isGroup = true;\n    }\n    possibilities = possibilities.filter((r) => r.minCount !== 0 || r.maxCount !== 0);\n    possibilities.sort((a, b) => {\n        return b.targetEA - a.targetEA;\n    });\n    return possibilities;\n}\n//# sourceMappingURL=preprocessEARanges.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mfFromEA = mfFromEA;\nconst atom_sorter_1 = require(\"atom-sorter\");\nconst preprocessEARanges_1 = require(\"./preprocessEARanges\");\n/**\n * Returns possible combinations\n * @param {object} [targetEA]\n * @param {object} [options={}]\n * @param {string} [options.ranges='C0-100 H0-100 O0-100 N0-100'] - range of mfs to search\n * @param {number} [options.maxElementError=0.003]\n * @param {number} [options.maxTotalError=0.01]\n * @param {number} [options.minMW=0] minimal molecular weight\n * @param {number} [options.maxMW=+Infinity] maximal molecular weight\n * @param {object} [options.unsaturation={}]\n * @param {number} [options.unsaturation.min=-Infinity] Minimal unsaturation\n * @param {number} [options.unsaturation.max=+Infinity] Maximal unsaturation\n * @param {boolean} [options.unsaturation.onlyInteger=false] Integer unsaturation\n * @param {boolean} [options.unsaturation.onlyNonInteger=false] Non integer unsaturation\n * @return {Array<object>}\n */\nfunction mfFromEA(targetEA, options = {}) {\n    const { unsaturation = {}, maxIterations = 1e8, minMW = 0, maxMW = +Infinity, ranges = [\n        { mf: 'C', min: 0, max: 100 },\n        { mf: 'H', min: 0, max: 100 },\n        { mf: 'O', min: 0, max: 100 },\n        { mf: 'N', min: 0, max: 100 },\n    ], maxElementError = 0.003, maxTotalError = 0.01, } = options;\n    let filterUnsaturation = !!unsaturation;\n    // we calculate not the real unsaturation but the one before dividing by 2 + 1\n    let fakeMinUnsaturation = unsaturation.min === undefined\n        ? Number.MIN_SAFE_INTEGER\n        : (unsaturation.min - 1) * 2;\n    let fakeMaxUnsaturation = unsaturation.max === undefined\n        ? Number.MAX_SAFE_INTEGER\n        : (unsaturation.max - 1) * 2;\n    let results = {\n        mfs: [],\n        info: {\n            numberMFEvaluated: 0,\n            numberResults: 0,\n        },\n    };\n    let orderMapping = []; // used to sort the atoms\n    let possibilities = (0, preprocessEARanges_1.preprocessEARanges)(ranges, targetEA, maxElementError);\n    orderMapping = getOrderMapping(possibilities);\n    if (possibilities.length === 0)\n        return { mfs: [] };\n    let currentPosition = 0;\n    let currentAtom;\n    //  if (DEBUG) console.log('possibilities', possibilities.map((a) => `${a.mf + a.originalMinCount}-${a.originalMaxCount}`));\n    mfWhile: while (true) {\n        while (currentPosition < possibilities.length && currentPosition >= 0) {\n            let previousAtom = currentPosition === 0 ? { mw: 0 } : possibilities[currentPosition - 1];\n            currentAtom = possibilities[currentPosition];\n            if (currentAtom.currentCount < currentAtom.maxCount) {\n                currentAtom.currentCount++;\n                currentAtom.aw = currentAtom.mass * currentAtom.currentCount;\n                currentAtom.mw = currentAtom.aw + previousAtom.mw;\n                currentAtom.maxRatio = currentAtom.aw / currentAtom.mw;\n                // we should check if we can reach the target\n                if (currentAtom.targetEA &&\n                    currentAtom.aw / currentAtom.mw - currentAtom.targetEA <\n                        -maxElementError) {\n                    // we already don't have enough quantity of this element and it can only become worse\n                    continue;\n                }\n                if (currentPosition < possibilities.length - 1) {\n                    currentPosition++;\n                }\n                else {\n                    break;\n                }\n            }\n            else {\n                currentAtom.currentCount = currentAtom.minCount - 1;\n                currentPosition--;\n            }\n        }\n        if (currentPosition < 0) {\n            break;\n        }\n        if (results.info.numberMFEvaluated++ > maxIterations) {\n            throw new Error(`Iteration number is over the current maximum of: ${maxIterations}`);\n        }\n        if (filterUnsaturation) {\n            let unsaturationValue = 0;\n            for (const possibility of possibilities) {\n                unsaturationValue +=\n                    possibility.unsaturation * possibility.currentCount;\n            }\n            let isOdd = Math.abs(unsaturationValue % 2);\n            if ((unsaturation.onlyInteger && isOdd === 1) ||\n                (unsaturation.onlyNonInteger && isOdd === 0) ||\n                fakeMinUnsaturation > unsaturationValue ||\n                fakeMaxUnsaturation < unsaturationValue) {\n                continue;\n            }\n        }\n        let mw = currentAtom.mw;\n        if (mw < minMW || mw > maxMW)\n            continue;\n        let totalError = 0;\n        for (let i = 0; i < possibilities.length; i++) {\n            const possibility = possibilities[i];\n            let ratio = (possibility.mass * possibility.currentCount) / mw;\n            if (possibility.targetEA !== undefined) {\n                let error = Math.abs(possibility.targetEA - ratio);\n                if (error > maxElementError) {\n                    continue mfWhile;\n                }\n                totalError += error;\n            }\n            possibility.currentValue = ratio;\n        }\n        if (Number.isNaN(totalError) || totalError > maxTotalError)\n            continue;\n        results.mfs.push(getResult(possibilities, totalError, orderMapping));\n        results.info.numberResults++;\n    }\n    results.mfs.sort((a, b) => Math.abs(a.totalError) - Math.abs(b.totalError));\n    return results;\n}\nfunction getResult(possibilities, totalError, orderMapping) {\n    const result = { mf: '', totalError };\n    // we check that the first time we meet the ionization group it does not end\n    // in the final result\n    for (let i = 0; i < possibilities.length; i++) {\n        let possibility = possibilities[orderMapping[i]];\n        if (possibility.currentCount !== 0) {\n            if (possibility.isGroup) {\n                result.mf += `(${possibility.mf})`;\n                if (possibility.currentCount !== 1) {\n                    result.mf += possibility.currentCount;\n                }\n            }\n            else {\n                result.mf += possibility.mf;\n                if (possibility.currentCount !== 1) {\n                    result.mf += possibility.currentCount;\n                }\n            }\n        }\n        result.ea = possibilities.map((current) => ({\n            mf: current.mf,\n            value: current.currentValue,\n            expected: current.targetEA,\n            error: current.targetEA === undefined\n                ? undefined\n                : Math.abs(current.targetEA - current.currentValue),\n        }));\n    }\n    return result;\n}\nfunction getOrderMapping(possibilities) {\n    let mapping = possibilities.map((p, i) => ({ atom: p.mf, index: i }));\n    mapping.sort((a, b) => {\n        return (0, atom_sorter_1.atomSorter)(a.atom, b.atom);\n    });\n    return mapping.map((a) => a.index);\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mfFromAtomicRatio = mfFromAtomicRatio;\nconst mf_generator_1 = require(\"mf-generator\");\nconst mf_parser_1 = require(\"mf-parser\");\n/**\n * @typedef {object} AtomicRatioMF\n * @property {number} em\n * @property {number} mw\n * @property {string} mf\n * @property {Array<MFAtomicComposition>} mfAtomicComposition\n * @property {Array<AtomicRatio>} atomicRatios\n * @property {number} totalError\n */\n/**\n * @typedef {object} MFAtomicComposition\n * @property {string} element\n * @property {number} count\n * @property {number} theoretical\n * @property {number} experimental\n * @property {number} error\n */\n/**\n * @typedef {object} AtomicRatio\n * @property {string} element\n * @property {number} count\n * @property {number} theoretical\n */\n/**\n * Returns possible combinations\n * @param {object} [ratios]\n * @param {object} [options={}]\n * @param {string} [options.ranges='C0-10 H0-10 O0-10 N0-10'] - range of mfs to search\n * @param {number} [options.maxElementError=0.05]\n * @param {number} [options.maxTotalError=0.1]\n * @param {number} [options.minMW=0] minimal molecular weight\n * @param {number} [options.maxMW=+Infinity] maximal molecular weight\n * @param {object} [options.unsaturation={}]\n * @param {number} [options.unsaturation.min=-Infinity] Minimal unsaturation\n * @param {number} [options.unsaturation.max=+Infinity] Maximal unsaturation\n * @param {boolean} [options.unsaturation.onlyInteger=false] Integer unsaturation\n * @param {boolean} [options.unsaturation.onlyNonInteger=false] Non integer unsaturation\n * @return {Promise<AtomicRatioMF[]>}\n */\nasync function mfFromAtomicRatio(ratios, options = {}) {\n    const { unsaturation = {}, minMW = 0, maxMW = +Infinity, ranges = 'C0-10 H0-10 O0-10 N0-10', maxElementError = 0.05, maxTotalError = 0.1, } = options;\n    const elements = Object.keys(ratios);\n    const mfs = await (0, mf_generator_1.generateMFs)([ranges], {\n        limit: 1e7,\n        filter: {\n            minMW,\n            maxMW,\n            unsaturation,\n        },\n    });\n    let sumComposition = 0;\n    for (const element of elements) {\n        sumComposition += ratios[element];\n    }\n    const relativeComposition = {};\n    for (const element of elements) {\n        relativeComposition[element] = ratios[element] / sumComposition;\n    }\n    for (const mf of mfs) {\n        appendInfo(mf, elements);\n    }\n    const filteredMFs = [];\n    mfFor: for (const mf of mfs) {\n        if (mf.nbCompositionAtoms === 0) {\n            continue;\n        }\n        mf.totalError = 0;\n        const atomicRatios = [];\n        for (const element of elements) {\n            const error = mf.atomicRatio[element] - relativeComposition[element];\n            let absError = Math.abs(error);\n            if (absError > maxElementError) {\n                continue mfFor;\n            }\n            mf.totalError += absError;\n            atomicRatios.push({\n                element,\n                experimental: mf.atomicRatio[element],\n                count: mf.atoms[element] || 0,\n                theoretical: relativeComposition[element],\n                error,\n            });\n        }\n        if (mf.totalError > maxTotalError) {\n            continue;\n        }\n        filteredMFs.push({\n            em: mf.em,\n            mw: mf.mw,\n            mf: mf.mf,\n            mfAtomicComposition: getMFAtomicComposition(mf.atoms),\n            atomicRatios,\n            totalError: mf.totalError,\n        });\n    }\n    filteredMFs.sort((a, b) => Math.abs(a.totalError) - Math.abs(b.totalError));\n    return filteredMFs;\n}\nfunction getMFAtomicComposition(atoms) {\n    const nbAtoms = Object.values(atoms).reduce((acc, val) => acc + val, 0);\n    const composition = [];\n    for (const [element, count] of Object.entries(atoms)) {\n        composition.push({\n            element,\n            count,\n            theoretical: count / nbAtoms,\n        });\n    }\n    return composition;\n}\nfunction appendInfo(mf, elements) {\n    const mfInfo = new mf_parser_1.MF(mf.mf).getInfo();\n    let nbCompositionAtoms = 0;\n    for (const element of elements) {\n        nbCompositionAtoms += mfInfo.atoms[element] || 0;\n    }\n    mf.nbCompositionAtoms = nbCompositionAtoms;\n    mf.atomicRatio = {};\n    for (const element of elements) {\n        mf.atomicRatio[element] = (mfInfo.atoms[element] || 0) / nbCompositionAtoms;\n    }\n}\n//# sourceMappingURL=mfFromAtomicRatio.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.appendAllDBRefs = appendAllDBRefs;\nfunction appendAllDBRefs(object, allDBRefs) {\n    if (Array.isArray(object)) {\n        for (let item of object) {\n            appendAllDBRefs(item, allDBRefs);\n        }\n    }\n    else if (typeof object === 'object' && object !== null) {\n        if (object.$ref && object.$id) {\n            allDBRefs.push(object);\n        }\n        for (let key of Object.keys(object)) {\n            appendAllDBRefs(object[key], allDBRefs);\n        }\n    }\n}\n//# sourceMappingURL=appendAllDBRefs.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.appendURLs = appendURLs;\nconst appendAllDBRefs_js_1 = require(\"./appendAllDBRefs.js\");\nasync function appendURLs(object, options = {}) {\n    const { collections, force = false } = options;\n    let allDBRefs = [];\n    (0, appendAllDBRefs_js_1.appendAllDBRefs)(object, allDBRefs);\n    if (collections) {\n        allDBRefs = allDBRefs.filter((dbRef) => collections.includes(dbRef.$ref));\n    }\n    if (!force) {\n        allDBRefs = allDBRefs.filter((dbRef) => !dbRef.url);\n    }\n    const unknowns = {};\n    for (const entry of allDBRefs) {\n        switch (entry.$ref) {\n            case 'compounds':\n                entry.url = `https://pubchem.ncbi.nlm.nih.gov/compound/${entry.$id}`;\n                break;\n            case 'pubmeds':\n                entry.url = `https://pubmed.ncbi.nlm.nih.gov/${entry.$id}`;\n                break;\n            case 'gnps':\n                entry.url = `https://gnps.ucsd.edu/ProteoSAFe/gnpslibraryspectrum.jsp?SpectrumID=${entry.$id}`;\n                break;\n            case 'patents':\n                entry.url = `https://pubchem.ncbi.nlm.nih.gov/patent/${entry.$id}`;\n                break;\n            case 'bioassays':\n                entry.url = `https://pubchem.ncbi.nlm.nih.gov/bioassay/${entry.$id.replace(/.*_/, '')}`;\n                break;\n            case 'npasses':\n                entry.url = `http://bidd.group/NPASS/compound.php?compoundID=${entry.$id}`;\n                break;\n            case 'cmaups':\n                entry.url = `http://bidd.group/CMAUP/ingredient.php?ingredient=${entry.$id}`;\n                break;\n            case 'coconuts':\n                entry.url = `https://coconut.naturalproducts.net/compound/coconut_id/${entry.$id}`;\n                break;\n            case 'lotuses':\n                entry.url = `https://lotus.naturalproducts.net/compound/lotus_id/${entry.$id}`;\n                break;\n            case 'npAtlases':\n                entry.url = `https://www.npatlas.org/explore/compounds/${entry.$id}`;\n                break;\n            case 'massBank':\n                entry.url = `https://massbank.eu/MassBank/RecordDisplay?id=${entry.$id}`;\n                break;\n            default:\n                unknowns[entry.$ref] = true;\n                break;\n        }\n    }\n    if (Object.keys(unknowns).length > 0) {\n        // eslint-disable-next-line no-console\n        console.error('Unknown url to original data for the following collections:', unknowns);\n    }\n}\n//# sourceMappingURL=appendURLs.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fetchJSON = fetchJSON;\nasync function fetchJSON(url, data) {\n    if (data) {\n        try {\n            const searchParams = new URLSearchParams(data);\n            const result = await fetch(`${url}?${searchParams.toString()}`);\n            return result.json();\n        }\n        catch {\n            const searchParams = new URLSearchParams(data);\n            const result = await fetch(`${url}?${searchParams.toString()}`);\n            return result.json();\n        }\n    }\n    else {\n        const result = await fetch(url);\n        return result.json();\n    }\n}\n//# sourceMappingURL=fetchJSON.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.postFetchJSON = postFetchJSON;\nasync function postFetchJSON(url, data = {}) {\n    const formData = new FormData();\n    for (const name in data) {\n        formData.append(name, data[name]);\n    }\n    const result = await fetch(url, {\n        method: 'POST',\n        body: formData,\n    });\n    return result.json();\n}\n//# sourceMappingURL=postFetchJSON.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.includeDBRefs = includeDBRefs;\nconst appendAllDBRefs_js_1 = require(\"./appendAllDBRefs.js\");\nconst postFetchJSON_js_1 = require(\"./postFetchJSON.js\");\n/**\n * Load the DBrefs and create a new property `data` for each DBRef\n * @param {any} object\n * @param {object} [options={}]\n * @param {string[]} [options.collections] - List of collections to include\n * @param {string[]} [options.excludedCollections] - List of collections to include\n * @param {boolean} [options.force=false] - Force the inclusion of the data even if it is already present\n * @param {string} [options.baseURL='https://octochemdb.cheminfo.org/'] - URL of the webservice\n */\nasync function includeDBRefs(object, options = {}) {\n    const { collections, excludedCollections, force = false, baseURL = 'https://octochemdb.cheminfo.org/', } = options;\n    let allDBRefs = [];\n    (0, appendAllDBRefs_js_1.appendAllDBRefs)(object, allDBRefs);\n    if (collections) {\n        allDBRefs = allDBRefs.filter((dbRef) => collections.includes(dbRef.$ref));\n    }\n    if (excludedCollections) {\n        allDBRefs = allDBRefs.filter((dbRef) => !excludedCollections.includes(dbRef.$ref));\n    }\n    if (!force) {\n        allDBRefs = allDBRefs.filter((dbRef) => !dbRef.data);\n    }\n    const groups = groupsByCollection(allDBRefs);\n    const promises = [];\n    for (const [collection, entries] of Object.entries(groups)) {\n        promises.push(addDataForOneCollection(collection, baseURL, entries));\n    }\n    await Promise.allSettled(promises);\n}\nasync function addDataForOneCollection(collection, baseURL, entries) {\n    const url = new URL(`${collection}/v1/ids`, baseURL).toString();\n    const searchParams = {};\n    searchParams.ids = entries.map((entry) => entry.$id).join(',');\n    const data = {};\n    const result = await (0, postFetchJSON_js_1.postFetchJSON)(url, searchParams);\n    if (!result.data) {\n        throw new Error(`No data for ${url}`);\n    }\n    for (const entry of result.data) {\n        data[entry._id] = entry.data;\n    }\n    for (let datum of entries) {\n        datum.data = data[datum.$id];\n    }\n}\nfunction groupsByCollection(allDBRefs) {\n    const groups = {};\n    for (let dbRef of allDBRefs) {\n        if (!groups[dbRef.$ref])\n            groups[dbRef.$ref] = [];\n        groups[dbRef.$ref].push(dbRef);\n    }\n    return groups;\n}\n//# sourceMappingURL=includeDBRefs.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.normalizeActivities = normalizeActivities;\n/**\n * @description This function normalizes the activities of an entry of ActivesOrNaturals collection.\n * @param {Object} activeOrNatural - an entry of ActivesOrNaturals collection\n * @returns - ActiveOrNatural entry with normalized activities\n */\nfunction normalizeActivities(activeOrNatural) {\n    activeOrNatural = { ...activeOrNatural };\n    let activities = [];\n    for (let activity of activeOrNatural.data.activities) {\n        if (activity?.data?.activities !== undefined) {\n            for (let activityEntry of activity.data.activities) {\n                let normalizedActivity = {\n                    $ref: activity.$ref,\n                    $id: activity.$id,\n                    data: {\n                        assay: activityEntry.assay,\n                        ocl: activity.data.ocl,\n                    },\n                    url: activity.url,\n                };\n                if (activityEntry?.targetTaxonomies !== undefined) {\n                    normalizedActivity.data.targetTaxonomies = [\n                        activityEntry.targetTaxonomies,\n                    ];\n                }\n                activities.push(normalizedActivity);\n            }\n        }\n        else {\n            activities.push(activity);\n        }\n    }\n    activeOrNatural.data.activities = activities;\n    return activeOrNatural;\n}\n//# sourceMappingURL=normalizeActivities.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.activeOrNaturalDetails = activeOrNaturalDetails;\nconst appendURLs_js_1 = require(\"./utils/appendURLs.js\");\nconst fetchJSON_js_1 = require(\"./utils/fetchJSON.js\");\nconst includeDBRefs_js_1 = require(\"./utils/includeDBRefs.js\");\nconst normalizeActivities_js_1 = require(\"./utils/normalizeActivities.js\");\n/**\n * Search for a specific natural or active compound using its ID\n * @param {object} [options={}]\n * @param {string} [options.fields='_id,data'] - List of fields to retrieve\n * @param {string} [options.route='activesOrNaturals/v1/id'] - URL of the webservice\n * @param {string} [options.baseURL='https://octochemdb.cheminfo.org/'] - URL of the webservice\n */\nasync function activeOrNaturalDetails(id, options = {}) {\n    const { route = 'activesOrNaturals/v1/id', baseURL = 'https://octochemdb.cheminfo.org/', fields = '_id,data', } = options;\n    const activeOrNatural = await fetchActiveOrNatural(id, {\n        url: new URL(route, baseURL).toString(),\n        fields,\n    });\n    await (0, includeDBRefs_js_1.includeDBRefs)(activeOrNatural, { baseURL });\n    ensureArray(activeOrNatural);\n    (0, appendURLs_js_1.appendURLs)(activeOrNatural);\n    (0, normalizeActivities_js_1.normalizeActivities)(activeOrNatural);\n    return activeOrNatural;\n}\nfunction ensureArray(activeOrNatural) {\n    if (!activeOrNatural.data.activities) {\n        activeOrNatural.data.activities = [];\n    }\n    if (!activeOrNatural.data.pubmeds) {\n        activeOrNatural.data.pubmeds = [];\n    }\n    if (!activeOrNatural.data.patents) {\n        activeOrNatural.data.patents = [];\n    }\n    if (!activeOrNatural.data.taxonomies) {\n        activeOrNatural.data.taxonomies = [];\n    }\n}\nasync function fetchActiveOrNatural(id, options) {\n    const { fields, url } = options;\n    const searchParams = {};\n    searchParams.id = id;\n    if (fields) {\n        searchParams.fields = fields;\n    }\n    const results = await (0, fetchJSON_js_1.fetchJSON)(url, searchParams);\n    return results.data;\n}\n//# sourceMappingURL=activeOrNaturalDetails.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parseMasses = parseMasses;\nfunction parseMasses(masses) {\n    if (!masses)\n        return [];\n    if (Array.isArray(masses))\n        return masses;\n    if (typeof masses === 'number') {\n        return [masses];\n    }\n    if (typeof masses === 'string') {\n        return masses\n            .split(/[\\t\\n\\r ,;]+/)\n            .filter(Boolean)\n            .map(Number);\n    }\n    throw new Error('Cannot parse masses');\n}\n//# sourceMappingURL=parseMasses.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getAllowedEMs = getAllowedEMs;\nconst mf_finder_1 = require(\"mf-finder\");\nasync function getAllowedEMs(options) {\n    const { ranges, masses, precision, ionizations } = options;\n    if (!ranges)\n        return;\n    const allowedEMs = [];\n    for (let mass of masses) {\n        const { mfs } = await (0, mf_finder_1.findMFs)(mass, {\n            ionizations,\n            precision,\n            ranges,\n            limit: 100000,\n        });\n        for (const mf of mfs) {\n            allowedEMs.push(mf.em);\n        }\n    }\n    return Float64Array.from(allowedEMs).sort();\n}\n//# sourceMappingURL=getAllowedEMs.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.searchWithIonizations = searchWithIonizations;\nconst chemical_elements_1 = require(\"chemical-elements\");\nconst mf_parser_1 = require(\"mf-parser\");\nconst mf_utilities_1 = require(\"mf-utilities\");\nconst fetchJSON_js_1 = require(\"./fetchJSON.js\");\nconst getAllowedEMs_js_1 = require(\"./getAllowedEMs.js\");\nconst parseMasses_js_1 = require(\"./parseMasses.js\");\nasync function searchWithIonizations(options) {\n    const { realURL, fields, precision = 100, limit = 1000, searchParams = {}, ranges, } = options;\n    searchParams.precision = String(precision);\n    searchParams.limit = String(limit);\n    if (fields)\n        searchParams.fields = fields;\n    let ionizations = (0, mf_utilities_1.preprocessIonizations)(options.ionizations);\n    const masses = (0, parseMasses_js_1.parseMasses)(options.masses || [0]);\n    // if we have ranges we need to filter the allowed EMs\n    const allowedEMs = await (0, getAllowedEMs_js_1.getAllowedEMs)({\n        ranges,\n        masses,\n        precision,\n        ionizations,\n    });\n    const promises = [];\n    for (let ionization of ionizations) {\n        for (let mass of masses) {\n            if (mass !== 0) {\n                const realMass = mass * Math.abs(ionization.charge || 1) -\n                    ionization.em +\n                    chemical_elements_1.ELECTRON_MASS * ionization.charge;\n                searchParams.em = String(realMass);\n            }\n            promises.push((0, fetchJSON_js_1.fetchJSON)(realURL, searchParams));\n        }\n    }\n    const results = await Promise.all(promises);\n    const entries = [];\n    let counter = 0;\n    for (const result of results) {\n        const ionization = ionizations[Math.floor(counter / masses.length)];\n        const targetMass = masses[counter % masses.length];\n        counter++;\n        for (const entry of result.data) {\n            if (allowedEMs &&\n                !allowedEMs.some((em) => Math.abs(em - entry.data.em) < 0.0000001)) {\n                continue;\n            }\n            try {\n                entry.mfInfo = new mf_parser_1.MF(entry.data?.mf || entry._id).getInfo({\n                    emFieldName: 'em',\n                    msemFieldName: 'msem',\n                });\n                entry.ionization = ionization;\n                entry.ms = (0, mf_utilities_1.getMsInfo)(entry.mfInfo, {\n                    targetMass,\n                    ionization,\n                }).ms;\n                entries.push(entry);\n            }\n            catch (error) {\n                // eslint-disable-next-line no-console\n                console.warn(`${error}`);\n            }\n        }\n    }\n    if (entries.length > limit) {\n        entries.length = limit;\n    }\n    return entries;\n}\n//# sourceMappingURL=searchWithIonizations.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.activesOrNaturals = activesOrNaturals;\nconst appendURLs_js_1 = require(\"./utils/appendURLs.js\");\nconst includeDBRefs_js_1 = require(\"./utils/includeDBRefs.js\");\nconst parseMasses_js_1 = require(\"./utils/parseMasses.js\");\nconst searchWithIonizations_js_1 = require(\"./utils/searchWithIonizations.js\");\n/**\n * Search for natural or active compounds using various criteria\n * @param {object} [options={}]\n * @param {number|string|number[]} [options.masses] - Observed monoisotopic mass\n * @param {string} [options.noStereoTautomerID=''] - ID of the compound to search from the results\n * @param {string} [options.ionizations=''] - string containing a comma separated list of modifications\n * @param {string} [options.ranges=''] - Allows to filter by a range of molecular formula\n * @param {string} [options.mf=''] - Search by molecular formula\n * @param {number} [options.precision=1000] - Precision of the monoisotopic mass in ppm\n * @param {string} [options.fields] - List of fields to retrieve\n * @param {string} [options.kwTaxonomies=''] - Comma separated list of taxonomies family, genus or species of the product source\n * @param {string} [options.kwActiveAgainst=''] - Comma separated list of taxonomies family, genus or species of the bioactivity target\n * @param {string} [options.kwBioassays=''] - Comma separated list of keyword from the description of the bioassay\n * @param {string} [options.kwMeshTerms=''] - Comma separated list of keyword from the medline MeshTerms\n * @param {string} [options.kwTitles=''] - Comma separated list of keyword from the compound title\n * @param {string} [options.minNbMassSpectra] - Minimal number of mass spectra\n * @param {number} [options.limit=1000] - Maximal number of entries to return\n * @param {string} [options.route='activesOrNaturals/v1/search'] - Route to this specific webservice\n * @param {string[]|undefined} [options.includes] - Array of DBref collections to include\n * @param {string} [options.baseURL='https://octochemdb.cheminfo.org/'] - Base URL of the webservice\n */\nasync function activesOrNaturals(options = {}) {\n    const { route = 'activesOrNaturals/v1/search', baseURL = 'https://octochemdb.cheminfo.org/', includes, } = options;\n    const realURL = new URL(route, baseURL).toString();\n    const searchParams = prepareSearchParams(options);\n    const masses = (0, parseMasses_js_1.parseMasses)(options.masses || [0]);\n    const entries = await (0, searchWithIonizations_js_1.searchWithIonizations)({\n        ...options,\n        masses,\n        realURL,\n        searchParams,\n    });\n    if (options.includes) {\n        await (0, includeDBRefs_js_1.includeDBRefs)(entries, { baseURL, collections: includes });\n    }\n    (0, appendURLs_js_1.appendURLs)(entries);\n    entries.sort((a, b) => {\n        if (a.data.nbMassSpectra > b.data.nbMassSpectra)\n            return -1;\n        if (a.data.nbMassSpectra < b.data.nbMassSpectra)\n            return 1;\n        if (a.data.nbPubmeds > b.data.nbPubmeds)\n            return -1;\n        if (a.data.nbPubmeds < b.data.nbPubmeds)\n            return 1;\n        if (a.data.nbPatents > b.data.nbPatents)\n            return -1;\n        if (a.data.nbPatents < b.data.nbPatents)\n            return 1;\n        return 0;\n    });\n    return entries;\n}\nfunction prepareSearchParams(options) {\n    const { noStereoTautomerID, kwTaxonomies, kwActiveAgainst, kwBioassays, kwMeshTerms, kwTitles, mf, minNbMassSpectra, } = options;\n    const searchParams = {};\n    if (noStereoTautomerID) {\n        searchParams.noStereoTautomerID = noStereoTautomerID;\n    }\n    if (kwTaxonomies) {\n        searchParams.kwTaxonomies = kwTaxonomies;\n    }\n    if (kwActiveAgainst) {\n        searchParams.kwActiveAgainst = kwActiveAgainst;\n    }\n    if (kwBioassays) {\n        searchParams.kwBioassays = kwBioassays;\n    }\n    if (kwMeshTerms) {\n        searchParams.kwMeshTerms = kwMeshTerms;\n    }\n    if (kwTitles) {\n        searchParams.kwTitles = kwTitles;\n    }\n    if (mf) {\n        searchParams.mf = mf;\n    }\n    if (minNbMassSpectra) {\n        searchParams.minNbMassSpectra = minNbMassSpectra;\n    }\n    return searchParams;\n}\n//# sourceMappingURL=activesOrNaturals.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.activesOrNaturalsByMF = activesOrNaturalsByMF;\nconst activesOrNaturals_js_1 = require(\"./activesOrNaturals.js\");\n/**\n * Search for natural or active compounds and group them by molecular formula\n * @param {object} [options={}]\n * @param {number|string|number[]} [options.masses] - Observed monoisotopic mass\n * @param {string} [options.ionizations=''] - string containing a comma separated list of modifications\n * @param {string} [options.ranges=''] - Allows to filter by a range of molecular formula\n * @param {number} [options.precision=1000] - Precision (accuracy) of the monoisotopic mass in ppm\n * @param {string} [options.fields='data.noStereoOcl,data.em,data.mf'] - List of fields to retrieve\n * @param {string} [options.kwTaxonomies=''] - Comma separated list of taxonomies family, genus or species of the product source\n * @param {string} [options.kwActiveAgainst=''] - Comma separated list of taxonomies family, genus or species of the bioactivity target\n * @param {string} [options.kwBioassays=''] - Comma separated list of keyword from the description of the bioassay\n * @param {string} [options.kwMeshTerms=''] - Comma separated list of keyword from the medline MeshTerms\n * @param {string} [options.kwTitles=''] - Comma separated list of keyword from compound title\n * @param {number} [options.limit=1000] - Maximal number of entries to return\n * @param {string} [options.route='activesOrNaturals/v1/search'] - URL of the webservice\n * @param {string} [options.baseURL='https://octochemdb.cheminfo.org/'] - URL of the webservice\n */\nasync function activesOrNaturalsByMF(options = {}) {\n    const fields = 'data.noStereoOcl,data.mf,data.em,data.nbPatents,data.nbPubmeds,data.nbActivities,data.bioactive,data.nbMassSpectra,data.naturalProduct'.split(',');\n    if (options.fields)\n        fields.push(...options.fields.split(/[ ,]+/));\n    const entries = await (0, activesOrNaturals_js_1.activesOrNaturals)({\n        ...options,\n        fields: fields.join(','),\n    });\n    // we will now group the data per mf\n    const grouped = {};\n    for (const entry of entries) {\n        if (!grouped[entry.data.mf]) {\n            grouped[entry.data.mf] = {\n                mfInfo: entry.mfInfo,\n                ms: entry.ms,\n                ionization: entry.ionization,\n                nbNaturals: 0,\n                nbBioactives: 0,\n                nbPatents: 0,\n                nbPubmeds: 0,\n                nbMassSpectra: 0,\n            };\n        }\n        const currentGroup = grouped[entry.data.mf];\n        if (entry.data.naturalProduct)\n            currentGroup.nbNaturals++;\n        if (entry.data.bioactive)\n            currentGroup.nbBioactives++;\n        if (entry.data.nbMassSpectra) {\n            currentGroup.nbMassSpectra += entry.data.nbMassSpectra;\n        }\n        if (entry.data.nbPubmeds)\n            currentGroup.nbPubmeds += entry.data.nbPubmeds;\n        if (entry.data.nbPatents)\n            currentGroup.nbPatents += entry.data.nbPatents;\n    }\n    const groupedArray = Object.keys(grouped).map((key) => grouped[key]);\n    // because we can combine many ionizations we should resort the data\n    groupedArray.sort((a, b) => Math.abs(a.ms.ppm) - Math.abs(b.ms.ppm));\n    return groupedArray;\n}\n//# sourceMappingURL=activesOrNaturalsByMF.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.compoundsFromMF = compoundsFromMF;\nconst fetchJSON_js_1 = require(\"./utils/fetchJSON.js\");\nconst postFetchJSON_js_1 = require(\"./utils/postFetchJSON.js\");\n/**\n * Retrieve a list of molecular formulas from one or many monoisotopic mass that are present in pubchem compound.\n * in the database and a monoisotopic mass.\n * @param {string} mf - Observed monoisotopic mass\n * @param {object} [options={}]\n * @param {string} [options.fields] - Fields to retrieve from the database\n * @param {string} [options.baseURL='https://octochemdb.cheminfo.org/'] - URL of the webservice\n * @param {string} [options.route='mfs/v1/fromMF'] - URL of the webservice\n * @param {string} [options.titleCompoundsURL='titleCompounds/v1/ids'] - URL of the webservice\n * @param {number} [options.limit=50000] - Maximal number of entries to return\n */\nasync function compoundsFromMF(mf, options = {}) {\n    const { route = 'compounds/v1/fromMF', baseURL = 'https://octochemdb.cheminfo.org/', limit = 50000, fields = 'data.ocl.idCode,data.ocl.index,data.iupac', } = options;\n    const searchParams = {\n        limit,\n        fields,\n        mf,\n    };\n    const realURL = new URL(route, baseURL).toString();\n    const { data } = await (0, fetchJSON_js_1.fetchJSON)(realURL, searchParams);\n    const ids = data.map((datum) => datum._id);\n    const titles = await getTitles(ids, options);\n    for (const datum of data) {\n        if (titles[datum._id])\n            datum.data.title = titles[datum._id];\n    }\n    data.sort((a, b) => (a.data.title?.length || Number.MAX_SAFE_INTEGER) -\n        (b.data.title?.length || Number.MAX_SAFE_INTEGER));\n    return data;\n}\nasync function getTitles(ids, options) {\n    let { titleCompoundsURL = 'titleCompounds/v1/ids', baseURL = 'https://octochemdb.cheminfo.org/', } = options;\n    if (process.env.NODE_ENV === 'test') {\n        baseURL = 'https://octochemdb.cheminfo.org/';\n    }\n    const titlesURL = new URL(titleCompoundsURL, baseURL).toString();\n    const { data: titlesArray } = await (0, postFetchJSON_js_1.postFetchJSON)(titlesURL, { ids });\n    const titles = {};\n    for (const entry of titlesArray) {\n        if (entry.data.title.match(/CID /))\n            continue;\n        titles[entry._id] = entry.data.title;\n    }\n    return titles;\n}\n//# sourceMappingURL=compoundsFromMF.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.searchMasses = searchMasses;\nconst mf_utilities_1 = require(\"mf-utilities\");\nconst fetchJSON_js_1 = require(\"./utils/fetchJSON.js\");\nconst parseMasses_js_1 = require(\"./utils/parseMasses.js\");\n/**\n *\n * @param {object} [options={}]\n * @param {string} [options.baseURL='https://octochemdb.cheminfo.org/'] - URL of the webservice\n * @param {number|string|number[]} [options.masses] - Observed fragment masses\n * @param {string} [options.mf] - Molecular formula of the non ionized molecule (not available for inSilicoFragments)\n * @param {number} [options.precision=100] - Precision (accuracy) of the monoisotopic mass in ppm\n * @param {number} [options.limit=1000] - Maximal number of entries to return\n * @param {string} [options.modifications=''] - Comma separated list of allowed modifications\n * @param {string} [options.route='massBank/v1/search'] - Route to use\n * @param {string} [options.link='https://massbank.eu/MassBank/RecordDisplay?id='] - Link to the database source\n */\nasync function searchMasses(options = {}) {\n    const { route = 'massBank/v1/search', baseURL = 'https://octochemdb.cheminfo.org/', precision = 100, limit = 1000, mf = '', link = '', } = options;\n    if (route === '') {\n        throw new Error('route is mandatory');\n    }\n    const realURL = new URL(route, baseURL).toString();\n    const masses = (0, parseMasses_js_1.parseMasses)(options.masses);\n    const modifications = (0, mf_utilities_1.preprocessIonizations)(options.modifications);\n    const allResults = [];\n    for (let modification of modifications) {\n        const massShift = modification.em;\n        const searchParams = {\n            masses: masses.map((mass) => mass + massShift).join(','),\n            precision,\n            limit,\n            mf,\n        };\n        const { data: results } = await (0, fetchJSON_js_1.fetchJSON)(realURL, searchParams);\n        for (const result of results) {\n            const modifiedResult = {\n                ...result,\n                modification,\n            };\n            if (link !== '') {\n                modifiedResult.url = link + result._id;\n            }\n            allResults.push(modifiedResult);\n        }\n    }\n    return allResults;\n}\n//# sourceMappingURL=searchMasses.js.map","\"use strict\";\n/**\n * This method will retrieve similar mass spectra\n * @param {object} [options={}]\n * @param {string} [options.baseURL='https://octochemdb.cheminfo.org/'] - URL of the webservice\n * @param {number|string|number[]} [options.masses] - Observed monoisotopic mass\n * @param {number} [options.precision=1000] - Precision (accuracy) of the monoisotopic mass in ppm\n * @param {number} [options.limit=1000] - Maximal number of entries to return\n * @param {string} [options.modifications=''] - Comma\n * @param {('massBank'|'gnps'|'inSilicoFragments')[]} [options.databases=['massBank','gnps']] - List of databases to search for mass spectra\n * @param {object} [options.routes] - Object that contains the routes to use for each database\n * @param {boolean} [options.uniqueMolecules=true] - If true, only one molecule per entry is returned\n * @param {object} [options.similarity={}]\n * @param {number} [options.similarity.nbPeaks=5] - Number of peaks to use for the similarity\n * @param {number} [options.similarity.massPower=1] - Power to use for the mass\n * @param {number} [options.similarity.minSimilarity=0.2] - Minimal similarity to return\n * @param {number} [options.similarity.intensityPower=0.6] - Power to use for the intensity\n * @param {number} [options.similarity.minNbCommonPeaks=0] - Minimal number of common peaks\n * @param {{x:number[],y:number[]}} [options.similarity.experimental=[]] - Experimental mass spectra to compare to\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.massSpectra = massSpectra;\nconst ms_spectrum_1 = require(\"ms-spectrum\");\nconst searchMasses_js_1 = require(\"./searchMasses.js\");\nconst defaultRoutes = [\n    {\n        name: 'massBank',\n        url: 'https://octochemdb.cheminfo.org/massBank/v1/search',\n        link: 'https://massbank.eu/MassBank/RecordDisplay?id=',\n    },\n    {\n        name: 'gnps',\n        url: 'https://octochemdb.cheminfo.org/gnps/v1/search',\n        link: 'https://gnps.ucsd.edu/ProteoSAFe/gnpslibraryspectrum.jsp?SpectrumID=',\n    },\n    {\n        name: 'inSilicoFragments',\n        url: 'https://octochemdb.cheminfo.org/inSilicoFragments/v1/search',\n    },\n];\nasync function massSpectra(options = {}) {\n    const { uniqueMolecules = true, databases = ['massBank', 'gnps'], routes = defaultRoutes, } = options;\n    const promises = [];\n    for (const route of routes) {\n        if (databases && databases.includes(route.name)) {\n            promises.push((0, searchMasses_js_1.searchMasses)({\n                ...options,\n                route: route.url,\n                link: route.link,\n            }).then((entries) => entries.map((entry) => ({ ...entry, database: route.name }))));\n        }\n    }\n    const allResults = await Promise.all(promises);\n    let results = allResults.flat();\n    results = appendAndFilterSimilarity(results, options);\n    if (uniqueMolecules) {\n        results = uniqueMol(results);\n    }\n    return results;\n}\nfunction uniqueMol(results) {\n    const unique = {};\n    for (const result of results) {\n        if (!result.data?.ocl?.idCode)\n            continue;\n        if (!unique[result.data.ocl.idCode]) {\n            unique[result.data.ocl.idCode] = result;\n        }\n    }\n    return Object.values(unique);\n}\nfunction appendAndFilterSimilarity(results, options = {}) {\n    const { similarity } = options;\n    if (!similarity || !similarity.experimental)\n        return results;\n    const { experimental, nbPeaks = 5, massPower = 1, minSimilarity = 0.2, intensityPower = 0.6, minNbCommonPeaks = 0, } = similarity;\n    const precision = Number(options.precision) / 1e6;\n    const comparator = new ms_spectrum_1.MSComparator({\n        nbPeaks,\n        massPower,\n        intensityPower,\n        delta: (mass) => mass * precision,\n        minNbCommonPeaks,\n    });\n    for (const result of results) {\n        result.similarity = comparator.getSimilarity(experimental, structuredClone(result.data.spectrum.data));\n    }\n    results = results.filter((a) => a.similarity.cosine >= minSimilarity);\n    results.sort((a, b) => b.similarity.cosine - a.similarity.cosine);\n    return results;\n}\n//# sourceMappingURL=massSpectra.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mfsFromEMs = mfsFromEMs;\nconst searchWithIonizations_js_1 = require(\"./utils/searchWithIonizations.js\");\n/**\n * Retrieve a list of molecular formulas from one or many monoisotopic mass that are present in pubchem compound.\n * in the database and a monoisotopic mass.\n * @param {number|string|number[]} masses - Observed monoisotopic mass\n * @param {object} [options={}]\n * @param {string} [options.ionizations=''] - string containing a comma separated list of modifications\n * @param {number} [options.precision=1000] - Precision (accuracy) of the monoisotopic mass in ppm\n * @param {string} [options.ranges=''] - Range of allowed molecular formula\n * @param {number} [options.limit=1000] - Maximal number of entries to return\n * @param {number} [options.minCount=5] - Minimal number of molecules having a specific MF\n * @param {number} [options.fields] - Fields to retrieve from the database\n * @param {string} [options.baseURL='https://octochemdb.cheminfo.org/'] - URL of the webservice\n * @param {string} [options.route='mfs/v1/fromEM'] - URL of the webservice\n * @param {string} [options.compoundsURL='mfs/v1/fromMF'] - URL to retrieve corresponding compounds\n */\nasync function mfsFromEMs(masses, options = {}) {\n    const { route = 'mfs/v1/fromEM', compoundsURL = 'compounds/v1/fromMF', baseURL = 'https://octochemdb.cheminfo.org/', minCount = 5, } = options;\n    const realURL = new URL(route, baseURL).toString();\n    const searchParams = {};\n    searchParams.minCount = String(minCount);\n    const entries = await (0, searchWithIonizations_js_1.searchWithIonizations)({\n        ...options,\n        masses,\n        realURL,\n        searchParams,\n    });\n    const realCompoundsURL = new URL(compoundsURL, baseURL).toString();\n    const searchParamsCompounds = new URLSearchParams();\n    for (const entry of entries) {\n        searchParamsCompounds.set('mf', String(entry._id));\n        entry.compoundsURL = `${realCompoundsURL}?${searchParamsCompounds.toString()}`;\n    }\n    // because we can combine many ionizations we should resort the data\n    entries.sort((a, b) => Math.abs(a.ms.ppm) - Math.abs(b.ms.ppm));\n    return entries;\n}\n//# sourceMappingURL=mfsFromEMs.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.pubmedCompounds = pubmedCompounds;\nconst fetchJSON_js_1 = require(\"./utils/fetchJSON.js\");\nconst includeDBRefs_js_1 = require(\"./utils/includeDBRefs.js\");\n/**\n * Retrieve the compounds from a pubmedID\n * @param {string} pubmedID\n * @param {object} [options={}]\n * @param {string} [options.route='pubmeds/v1/id'] - relative URL of the webservice\n * @param {string} [options.baseURL='https://octochemdb.cheminfo.org/'] - URL of the webservice\n * @param {number} [options.limit=1000] - Maximal number of entries to return\n * @returns\n */\nasync function pubmedCompounds(pubmedID, options = {}) {\n    const { route = 'pubmeds/v1/id', baseURL = 'https://octochemdb.cheminfo.org/', limit = 1000, } = options;\n    const realURL = new URL(route, baseURL).toString();\n    const searchParams = {\n        id: pubmedID,\n        fields: 'data.compounds',\n        limit,\n    };\n    const { data: results } = await (0, fetchJSON_js_1.fetchJSON)(realURL, searchParams);\n    await (0, includeDBRefs_js_1.includeDBRefs)(results, { baseURL });\n    return results.data.compounds;\n}\n//# sourceMappingURL=pubmedCompounds.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.searchInSilicoSpectraByMF = searchInSilicoSpectraByMF;\nconst ms_spectrum_1 = require(\"ms-spectrum\");\nconst fetchJSON_js_1 = require(\"./utils/fetchJSON.js\");\n/**\n * @param {object} spectrum - The experimental spectrum to compare to\n * @param {string} mf - Molecular formula of the non ionized molecule\n * @param {object} [options={}]\n * @param {string} [options.baseURL='https://octochemdb.cheminfo.org/'] - URL of the webservice\n * @param {string} [options.mf] - Molecular formula of the non ionized molecule (not available for inSilicoFragments)\n * @param {number} [options.precision=100] - Precision (accuracy) of the monoisotopic mass in ppm\n * @param {number} [options.limit=1000] - Maximal number of entries to return\n * @param {number} [options.massPower=1000] - Maximal number of entries to return\n * @param {number} [options.massPower=3] - High power will give more weight to the mass. If you would prefer to observe fragments you should use a number less than 1\n * @param {number} [options.intensityPower=0.6] - How important is the intensity. By default we don't give to much importance to it\n * @param {string} [options.route='inSilicoFragments/v1/search'] - Route to use\n */\nasync function searchInSilicoSpectraByMF(spectrum, mf, options = {}) {\n    const { route = 'inSilicoFragments/v1/search', baseURL = 'https://octochemdb.cheminfo.org/', precision = 100, limit = 1000, massPower = 3, intensityPower = 0.6, } = options;\n    if (!route) {\n        throw new Error('route is mandatory');\n    }\n    if (!mf) {\n        throw new Error('mf is mandatory');\n    }\n    const realURL = new URL(route, baseURL).toString();\n    const searchParams = {\n        limit,\n        mf,\n    };\n    const { data: results } = await (0, fetchJSON_js_1.fetchJSON)(realURL, searchParams);\n    const msComparator = new ms_spectrum_1.MSComparator({\n        delta: (mass) => mass * 1e-6 * precision,\n        massPower,\n        intensityPower,\n    });\n    const finals = [];\n    for (const result of results) {\n        const similarity = msComparator.getSimilarityToMasses(spectrum, result.data.spectrum.data.x);\n        if (similarity.cosine > 0) {\n            finals.push({\n                ...result,\n                similarity,\n            });\n        }\n    }\n    finals.sort((a, b) => b.similarity.cosine - a.similarity.cosine);\n    return finals;\n}\n//# sourceMappingURL=searchInSilicoSpectraByMF.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.searchInSilicoSpectraByMasses = searchInSilicoSpectraByMasses;\nconst ms_spectrum_1 = require(\"ms-spectrum\");\nconst searchWithIonizations_js_1 = require(\"./utils/searchWithIonizations.js\");\n/**\n * @param {object} spectrum - The experimental spectrum to compare to\n * @param {number|string|number[]} [masses] - List of experimental monoisotopic mass\n * @param {object} [options={}]\n * @param {string} [options.baseURL='https://octochemdb.cheminfo.org/'] - URL of the webservice\n * @param {string} [options.mf] - Molecular formula of the non ionized molecule (not available for inSilicoFragments)\n * @param {number} [options.precision=100] - Precision (accuracy) of the monoisotopic mass in ppm\n * @param {string} [options.ionizations=\"H+\"] - Comma separated list of allowed ionizations\n * @param {number} [options.limit=1000] - Maximal number of entries to return\n * @param {number} [options.massPower=1000] - Maximal number of entries to return\n * @param {number} [options.massPower=3] - High power will give more weight to the mass. If you would prefer to observe fragments you should use a number less than 1\n * @param {number} [options.intensityPower=0.6] - How important is the intensity. By default we don't give to much importance to it\n * @param {string} [options.route='inSilicoFragments/v1/search'] - Route to use\n * @param {object} [options.technique={}] - Technique used to generate the spectrum\n * @param {string} [options.technique.mode=\"positive\"] - Mode of the acquisition\n * @param {string} [options.technique.ionization=\"esi\"] - Ionization of the acquisition\n */\nasync function searchInSilicoSpectraByMasses(spectrum, masses, options = {}) {\n    const { route = 'inSilicoFragments/v1/search', baseURL = 'https://octochemdb.cheminfo.org/', precision = 100, limit = 10000, massPower = 3, intensityPower = 0.6, ionizations = 'H+', technique = {}, } = options;\n    const { mode = 'positive', ionization = 'esi' } = technique;\n    if (!route) {\n        throw new Error('route is mandatory');\n    }\n    if (!masses) {\n        throw new Error('masses is mandatory');\n    }\n    const realURL = new URL(route, baseURL).toString();\n    let results = await (0, searchWithIonizations_js_1.searchWithIonizations)({\n        precision,\n        realURL,\n        masses,\n        limit,\n        ionizations,\n        searchParams: {\n            mode,\n            ionization,\n        },\n    });\n    const msComparator = new ms_spectrum_1.MSComparator({\n        delta: (mass) => mass * 1e-6 * precision,\n        massPower,\n        intensityPower,\n    });\n    const finals = [];\n    // filter MDMA\n    // results = results.filter(result => result.data.ocl.idCode === 'dg~D@MBdie]v\\\\kahHBjh@@')\n    for (const result of results) {\n        const similarity = msComparator.getSimilarityToMasses(spectrum, result.data.spectrum.data.x);\n        if (similarity.cosine > 0) {\n            finals.push({\n                ...result,\n                similarity,\n            });\n        }\n    }\n    finals.sort((a, b) => b.similarity.cosine - a.similarity.cosine);\n    return finals;\n}\n//# sourceMappingURL=searchInSilicoSpectraByMasses.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.OctoChemDB = void 0;\nconst activeOrNaturalDetails_js_1 = require(\"./activeOrNaturalDetails.js\");\nconst activesOrNaturals_js_1 = require(\"./activesOrNaturals.js\");\nconst activesOrNaturalsByMF_js_1 = require(\"./activesOrNaturalsByMF.js\");\nconst compoundsFromMF_js_1 = require(\"./compoundsFromMF.js\");\nconst massSpectra_js_1 = require(\"./massSpectra.js\");\nconst mfsFromEMs_js_1 = require(\"./mfsFromEMs.js\");\nconst pubmedCompounds_js_1 = require(\"./pubmedCompounds.js\");\nconst searchInSilicoSpectraByMF_js_1 = require(\"./searchInSilicoSpectraByMF.js\");\nconst searchInSilicoSpectraByMasses_js_1 = require(\"./searchInSilicoSpectraByMasses.js\");\nconst searchMasses_js_1 = require(\"./searchMasses.js\");\nclass OctoChemDB {\n    /**\n     *\n     * @param {*} options\n     */\n    constructor(options = {}) {\n        this.baseURL = options.baseURL ?? 'https://octochemdb.cheminfo.org/';\n    }\n    async mfsFromEMs(masses, options = {}) {\n        return (0, mfsFromEMs_js_1.mfsFromEMs)(masses, { baseURL: this.baseURL, ...options });\n    }\n    async compoundsFromMF(mf, options = {}) {\n        return (0, compoundsFromMF_js_1.compoundsFromMF)(mf, { baseURL: this.baseURL, ...options });\n    }\n    async activesOrNaturals(options = {}) {\n        return (0, activesOrNaturals_js_1.activesOrNaturals)({ baseURL: this.baseURL, ...options });\n    }\n    async activesOrNaturalsByMF(options = {}) {\n        return (0, activesOrNaturalsByMF_js_1.activesOrNaturalsByMF)({ baseURL: this.baseURL, ...options });\n    }\n    async activeOrNaturalDetails(id, options = {}) {\n        return (0, activeOrNaturalDetails_js_1.activeOrNaturalDetails)(id, { baseURL: this.baseURL, ...options });\n    }\n    async searchMasses(options = {}) {\n        return (0, searchMasses_js_1.searchMasses)({ baseURL: this.baseURL, ...options });\n    }\n    async massSpectra(options = {}) {\n        return (0, massSpectra_js_1.massSpectra)({ baseURL: this.baseURL, ...options });\n    }\n    async searchInSilicoSpectraByMF(spectrum, mf, options = {}) {\n        return (0, searchInSilicoSpectraByMF_js_1.searchInSilicoSpectraByMF)(spectrum, mf, {\n            baseURL: this.baseURL,\n            ...options,\n        });\n    }\n    async searchInSilicoSpectraByMasses(spectrum, masses, options = {}) {\n        return (0, searchInSilicoSpectraByMasses_js_1.searchInSilicoSpectraByMasses)(spectrum, masses, {\n            baseURL: this.baseURL,\n            ...options,\n        });\n    }\n    async pubmedCompounds(pubmedID, options = {}) {\n        return (0, pubmedCompounds_js_1.pubmedCompounds)(pubmedID, { baseURL: this.baseURL, ...options });\n    }\n}\nexports.OctoChemDB = OctoChemDB;\n//# sourceMappingURL=OctoChemDB.js.map","export const STEMMERS = {\n    arabic: 'ar',\n    armenian: 'am',\n    bulgarian: 'bg',\n    czech: 'cz',\n    danish: 'dk',\n    dutch: 'nl',\n    english: 'en',\n    finnish: 'fi',\n    french: 'fr',\n    german: 'de',\n    greek: 'gr',\n    hungarian: 'hu',\n    indian: 'in',\n    indonesian: 'id',\n    irish: 'ie',\n    italian: 'it',\n    lithuanian: 'lt',\n    nepali: 'np',\n    norwegian: 'no',\n    portuguese: 'pt',\n    romanian: 'ro',\n    russian: 'ru',\n    serbian: 'rs',\n    slovenian: 'ru',\n    spanish: 'es',\n    swedish: 'se',\n    tamil: 'ta',\n    turkish: 'tr',\n    ukrainian: 'uk',\n    sanskrit: 'sk'\n};\nexport const SPLITTERS = {\n    dutch: /[^A-Za-zàèéìòóù0-9_'-]+/gim,\n    english: /[^A-Za-zàèéìòóù0-9_'-]+/gim,\n    french: /[^a-z0-9äâàéèëêïîöôùüûœç-]+/gim,\n    italian: /[^A-Za-zàèéìòóù0-9_'-]+/gim,\n    norwegian: /[^a-z0-9_æøåÆØÅäÄöÖüÜ]+/gim,\n    portuguese: /[^a-z0-9à-úÀ-Ú]/gim,\n    russian: /[^a-z0-9а-яА-ЯёЁ]+/gim,\n    spanish: /[^a-z0-9A-Zá-úÁ-ÚñÑüÜ]+/gim,\n    swedish: /[^a-z0-9_åÅäÄöÖüÜ-]+/gim,\n    german: /[^a-z0-9A-ZäöüÄÖÜß]+/gim,\n    finnish: /[^a-z0-9äöÄÖ]+/gim,\n    danish: /[^a-z0-9æøåÆØÅ]+/gim,\n    hungarian: /[^a-z0-9áéíóöőúüűÁÉÍÓÖŐÚÜŰ]+/gim,\n    romanian: /[^a-z0-9ăâîșțĂÂÎȘȚ]+/gim,\n    serbian: /[^a-z0-9čćžšđČĆŽŠĐ]+/gim,\n    turkish: /[^a-z0-9çÇğĞıİöÖşŞüÜ]+/gim,\n    lithuanian: /[^a-z0-9ąčęėįšųūžĄČĘĖĮŠŲŪŽ]+/gim,\n    arabic: /[^a-z0-9أ-ي]+/gim,\n    nepali: /[^a-z0-9अ-ह]+/gim,\n    irish: /[^a-z0-9áéíóúÁÉÍÓÚ]+/gim,\n    indian: /[^a-z0-9अ-ह]+/gim,\n    armenian: /[^a-z0-9ա-ֆ]+/gim,\n    greek: /[^a-z0-9α-ωά-ώ]+/gim,\n    indonesian: /[^a-z0-9]+/gim,\n    ukrainian: /[^a-z0-9а-яА-ЯіїєІЇЄ]+/gim,\n    slovenian: /[^a-z0-9čžšČŽŠ]+/gim,\n    bulgarian: /[^a-z0-9а-яА-Я]+/gim,\n    tamil: /[^a-z0-9அ-ஹ]+/gim,\n    sanskrit: /[^a-z0-9A-Zāīūṛḷṃṁḥśṣṭḍṇṅñḻḹṝ]+/gim,\n    czech: /[^A-Z0-9a-zěščřžýáíéúůóťďĚŠČŘŽÝÁÍÉÓÚŮŤĎ-]+/gim\n};\nexport const SUPPORTED_LANGUAGES = Object.keys(STEMMERS);\nexport function getLocale(language) {\n    return language !== undefined && SUPPORTED_LANGUAGES.includes(language) ? STEMMERS[language] : undefined;\n}\n//# sourceMappingURL=languages.js.map","import { createError } from './errors.js';\nconst baseId = Date.now().toString().slice(5);\nlet lastId = 0;\nconst k = 1024;\nconst nano = BigInt(1e3);\nconst milli = BigInt(1e6);\nconst second = BigInt(1e9);\nexport const isServer = typeof window === 'undefined';\n/**\n * This value can be increased up to 100_000\n * But i don't know if this value change from nodejs to nodejs\n * So I will keep a safer value here.\n */\nexport const MAX_ARGUMENT_FOR_STACK = 65535;\n/**\n * This method is needed to used because of issues like: https://github.com/oramasearch/orama/issues/301\n * that issue is caused because the array that is pushed is huge (>100k)\n *\n * @example\n * ```ts\n * safeArrayPush(myArray, [1, 2])\n * ```\n */\nexport function safeArrayPush(arr, newArr) {\n    if (newArr.length < MAX_ARGUMENT_FOR_STACK) {\n        Array.prototype.push.apply(arr, newArr);\n    }\n    else {\n        const newArrLength = newArr.length;\n        for (let i = 0; i < newArrLength; i += MAX_ARGUMENT_FOR_STACK) {\n            Array.prototype.push.apply(arr, newArr.slice(i, i + MAX_ARGUMENT_FOR_STACK));\n        }\n    }\n}\nexport function sprintf(template, ...args) {\n    return template.replace(/%(?:(?<position>\\d+)\\$)?(?<width>-?\\d*\\.?\\d*)(?<type>[dfs])/g, function (...replaceArgs) {\n        const groups = replaceArgs[replaceArgs.length - 1];\n        const { width: rawWidth, type, position } = groups;\n        const replacement = position ? args[Number.parseInt(position) - 1] : args.shift();\n        const width = rawWidth === '' ? 0 : Number.parseInt(rawWidth);\n        switch (type) {\n            case 'd':\n                return replacement.toString().padStart(width, '0');\n            case 'f': {\n                let value = replacement;\n                const [padding, precision] = rawWidth.split('.').map((w) => Number.parseFloat(w));\n                if (typeof precision === 'number' && precision >= 0) {\n                    value = value.toFixed(precision);\n                }\n                return typeof padding === 'number' && padding >= 0 ? value.toString().padStart(width, '0') : value.toString();\n            }\n            case 's':\n                return width < 0\n                    ? replacement.toString().padEnd(-width, ' ')\n                    : replacement.toString().padStart(width, ' ');\n            default:\n                return replacement;\n        }\n    });\n}\nexport function formatBytes(bytes, decimals = 2) {\n    if (bytes === 0) {\n        return '0 Bytes';\n    }\n    const dm = decimals < 0 ? 0 : decimals;\n    const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n    const i = Math.floor(Math.log(bytes) / Math.log(k));\n    return `${parseFloat((bytes / Math.pow(k, i)).toFixed(dm))} ${sizes[i]}`;\n}\nexport function isInsideWebWorker() {\n    // @ts-expect-error - WebWorker global scope\n    return typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope;\n}\nexport function isInsideNode() {\n    return typeof process !== 'undefined' && process.release && process.release.name === 'node';\n}\nexport function getNanosecondTimeViaPerformance() {\n    return BigInt(Math.floor(performance.now() * 1e6));\n}\nexport function formatNanoseconds(value) {\n    if (typeof value === 'number') {\n        value = BigInt(value);\n    }\n    if (value < nano) {\n        return `${value}ns`;\n    }\n    else if (value < milli) {\n        return `${value / nano}μs`;\n    }\n    else if (value < second) {\n        return `${value / milli}ms`;\n    }\n    return `${value / second}s`;\n}\nexport function getNanosecondsTime() {\n    if (isInsideWebWorker()) {\n        return getNanosecondTimeViaPerformance();\n    }\n    if (isInsideNode()) {\n        return process.hrtime.bigint();\n    }\n    if (typeof process !== 'undefined' && typeof process?.hrtime?.bigint === 'function') {\n        return process.hrtime.bigint();\n    }\n    if (typeof performance !== 'undefined') {\n        return getNanosecondTimeViaPerformance();\n    }\n    // @todo: fallback to V8 native method to get microtime\n    return BigInt(0);\n}\nexport function uniqueId() {\n    return `${baseId}-${lastId++}`;\n}\nexport function getOwnProperty(object, property) {\n    // Checks if `hasOwn` method is defined avoiding errors with older Node.js versions\n    if (Object.hasOwn === undefined) {\n        return Object.prototype.hasOwnProperty.call(object, property) ? object[property] : undefined;\n    }\n    return Object.hasOwn(object, property) ? object[property] : undefined;\n}\nexport function getTokenFrequency(token, tokens) {\n    let count = 0;\n    for (const t of tokens) {\n        if (t === token) {\n            count++;\n        }\n    }\n    return count;\n}\nexport function insertSortedValue(arr, el, compareFn = sortTokenScorePredicate) {\n    let low = 0;\n    let high = arr.length;\n    let mid;\n    while (low < high) {\n        mid = (low + high) >>> 1;\n        if (compareFn(el, arr[mid]) < 0) {\n            high = mid;\n        }\n        else {\n            low = mid + 1;\n        }\n    }\n    arr.splice(low, 0, el);\n    return arr;\n}\nexport function sortTokenScorePredicate(a, b) {\n    if (b[1] === a[1]) {\n        return a[0] - b[0];\n    }\n    return b[1] - a[1];\n}\n// Intersection function taken from https://github.com/lovasoa/fast_array_intersect.\n// MIT Licensed at the time of writing.\nexport function intersect(arrays) {\n    if (arrays.length === 0) {\n        return [];\n    }\n    else if (arrays.length === 1) {\n        return arrays[0];\n    }\n    for (let i = 1; i < arrays.length; i++) {\n        if (arrays[i].length < arrays[0].length) {\n            const tmp = arrays[0];\n            arrays[0] = arrays[i];\n            arrays[i] = tmp;\n        }\n    }\n    const set = new Map();\n    for (const elem of arrays[0]) {\n        set.set(elem, 1);\n    }\n    for (let i = 1; i < arrays.length; i++) {\n        let found = 0;\n        for (const elem of arrays[i]) {\n            const count = set.get(elem);\n            if (count === i) {\n                set.set(elem, count + 1);\n                found++;\n            }\n        }\n        if (found === 0)\n            return [];\n    }\n    return arrays[0].filter((e) => {\n        const count = set.get(e);\n        if (count !== undefined)\n            set.set(e, 0);\n        return count === arrays.length;\n    });\n}\nexport function getDocumentProperties(doc, paths) {\n    const properties = {};\n    const pathsLength = paths.length;\n    for (let i = 0; i < pathsLength; i++) {\n        const path = paths[i];\n        const pathTokens = path.split('.');\n        let current = doc;\n        const pathTokensLength = pathTokens.length;\n        for (let j = 0; j < pathTokensLength; j++) {\n            current = current[pathTokens[j]];\n            // We found an object but we were supposed to be done\n            if (typeof current === 'object') {\n                if (current !== null &&\n                    'lat' in current &&\n                    'lon' in current &&\n                    typeof current.lat === 'number' &&\n                    typeof current.lon === 'number') {\n                    current = properties[path] = current;\n                    break;\n                }\n                else if (!Array.isArray(current) && current !== null && j === pathTokensLength - 1) {\n                    current = undefined;\n                    break;\n                }\n            }\n            else if ((current === null || typeof current !== 'object') && j < pathTokensLength - 1) {\n                // We can't recurse anymore but we were supposed to\n                current = undefined;\n                break;\n            }\n        }\n        if (typeof current !== 'undefined') {\n            properties[path] = current;\n        }\n    }\n    return properties;\n}\nexport function getNested(obj, path) {\n    const props = getDocumentProperties(obj, [path]);\n    return props[path];\n}\nexport function flattenObject(obj, prefix = '') {\n    const result = {};\n    for (const key in obj) {\n        const prop = `${prefix}${key}`;\n        const objKey = obj[key];\n        if (typeof objKey === 'object' && objKey !== null) {\n            Object.assign(result, flattenObject(objKey, `${prop}.`));\n        }\n        else {\n            result[prop] = objKey;\n        }\n    }\n    return result;\n}\nconst mapDistanceToMeters = {\n    cm: 0.01,\n    m: 1,\n    km: 1000,\n    ft: 0.3048,\n    yd: 0.9144,\n    mi: 1609.344\n};\nexport function convertDistanceToMeters(distance, unit) {\n    const ratio = mapDistanceToMeters[unit];\n    if (ratio === undefined) {\n        throw new Error(createError('INVALID_DISTANCE_SUFFIX', distance).message);\n    }\n    return distance * ratio;\n}\nexport function removeVectorsFromHits(searchResult, vectorProperties) {\n    searchResult.hits = searchResult.hits.map((result) => ({\n        ...result,\n        document: {\n            ...result.document,\n            // Remove embeddings from the result\n            ...vectorProperties.reduce((acc, prop) => {\n                const path = prop.split('.');\n                const lastKey = path.pop();\n                let obj = acc;\n                for (const key of path) {\n                    obj[key] = obj[key] ?? {};\n                    obj = obj[key];\n                }\n                obj[lastKey] = null;\n                return acc;\n            }, result.document)\n        }\n    }));\n}\nexport function isPromise(obj) {\n    return !!obj && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function';\n}\n/**\n * Checks if the provided input is an async function or if the input is an array\n * containing at least one async function.\n *\n * @param func - A single function or an array of functions to check.\n *               Non-function values are ignored.\n * @returns `true` if the input is an async function or an array containing at least\n *          one async function, otherwise `false`.\n */\nexport function isAsyncFunction(func) {\n    if (Array.isArray(func)) {\n        return func.some((item) => isAsyncFunction(item));\n    }\n    return func?.constructor?.name === 'AsyncFunction';\n}\nconst withIntersection = 'intersection' in new Set();\nexport function setIntersection(...sets) {\n    // Fast path 1\n    if (sets.length === 0) {\n        return new Set();\n    }\n    // Fast path 2\n    if (sets.length === 1) {\n        return sets[0];\n    }\n    // Fast path 3\n    if (sets.length === 2) {\n        const set1 = sets[0];\n        const set2 = sets[1];\n        if (withIntersection) {\n            return set1.intersection(set2);\n        }\n        const result = new Set();\n        const base = set1.size < set2.size ? set1 : set2;\n        const other = base === set1 ? set2 : set1;\n        for (const value of base) {\n            if (other.has(value)) {\n                result.add(value);\n            }\n        }\n        return result;\n    }\n    // Slow path\n    // Find the smallest set\n    const min = {\n        index: 0,\n        size: sets[0].size\n    };\n    for (let i = 1; i < sets.length; i++) {\n        if (sets[i].size < min.size) {\n            min.index = i;\n            min.size = sets[i].size;\n        }\n    }\n    if (withIntersection) {\n        let base = sets[min.index];\n        for (let i = 0; i < sets.length; i++) {\n            if (i === min.index) {\n                continue;\n            }\n            base = base.intersection(sets[i]);\n        }\n        return base;\n    }\n    // manual implementation:\n    // intersect all sets with the smallest set\n    const base = sets[min.index];\n    for (let i = 0; i < sets.length; i++) {\n        if (i === min.index) {\n            continue;\n        }\n        const other = sets[i];\n        for (const value of base) {\n            if (!other.has(value)) {\n                base.delete(value);\n            }\n        }\n    }\n    return base;\n}\nconst withUnion = 'union' in new Set();\nexport function setUnion(set1, set2) {\n    if (withUnion) {\n        if (set1) {\n            return set1.union(set2);\n        }\n        return set2;\n    }\n    if (!set1) {\n        return new Set(set2);\n    }\n    return new Set([...set1, ...set2]);\n}\nexport function setDifference(set1, set2) {\n    const result = new Set();\n    for (const value of set1) {\n        if (!set2.has(value)) {\n            result.add(value);\n        }\n    }\n    return result;\n}\n// This code is taken from https://github.com/davidmarkclements/atomic-sleep, MIT licensed at the time of commit b8149d3ca276c84a54fa8fa1478f9cc79aabc15a.\n// All credits go to the original author (David Mark Clements, https://github.com/davidmarkclements).\nexport function sleep(ms) {\n    if (typeof SharedArrayBuffer !== 'undefined' && typeof Atomics !== 'undefined') {\n        const nil = new Int32Array(new SharedArrayBuffer(4));\n        const valid = ms > 0 && ms < Infinity;\n        if (valid === false) {\n            if (typeof ms !== 'number' && typeof ms !== 'bigint') {\n                throw TypeError('sleep: ms must be a number');\n            }\n            throw RangeError('sleep: ms must be a number that is greater than 0 but less than Infinity');\n        }\n        Atomics.wait(nil, 0, 0, Number(ms));\n    }\n    else {\n        const valid = ms > 0 && ms < Infinity;\n        if (valid === false) {\n            if (typeof ms !== 'number' && typeof ms !== 'bigint') {\n                throw TypeError('sleep: ms must be a number');\n            }\n            throw RangeError('sleep: ms must be a number that is greater than 0 but less than Infinity');\n        }\n        const target = Date.now() + Number(ms);\n        while (target > Date.now()) {\n            /* empty */\n        }\n    }\n}\n//# sourceMappingURL=utils.js.map","import { SUPPORTED_LANGUAGES } from './components/tokenizer/languages.js';\nimport { sprintf } from './utils.js';\nconst allLanguages = SUPPORTED_LANGUAGES.join('\\n - ');\nconst errors = {\n    NO_LANGUAGE_WITH_CUSTOM_TOKENIZER: 'Do not pass the language option to create when using a custom tokenizer.',\n    LANGUAGE_NOT_SUPPORTED: `Language \"%s\" is not supported.\\nSupported languages are:\\n - ${allLanguages}`,\n    INVALID_STEMMER_FUNCTION_TYPE: `config.stemmer property must be a function.`,\n    MISSING_STEMMER: `As of version 1.0.0 @orama/orama does not ship non English stemmers by default. To solve this, please explicitly import and specify the \"%s\" stemmer from the package @orama/stemmers. See https://docs.orama.com/open-source/text-analysis/stemming for more information.`,\n    CUSTOM_STOP_WORDS_MUST_BE_FUNCTION_OR_ARRAY: 'Custom stop words array must only contain strings.',\n    UNSUPPORTED_COMPONENT: `Unsupported component \"%s\".`,\n    COMPONENT_MUST_BE_FUNCTION: `The component \"%s\" must be a function.`,\n    COMPONENT_MUST_BE_FUNCTION_OR_ARRAY_FUNCTIONS: `The component \"%s\" must be a function or an array of functions.`,\n    INVALID_SCHEMA_TYPE: `Unsupported schema type \"%s\" at \"%s\". Expected \"string\", \"boolean\" or \"number\" or array of them.`,\n    DOCUMENT_ID_MUST_BE_STRING: `Document id must be of type \"string\". Got \"%s\" instead.`,\n    DOCUMENT_ALREADY_EXISTS: `A document with id \"%s\" already exists.`,\n    DOCUMENT_DOES_NOT_EXIST: `A document with id \"%s\" does not exists.`,\n    MISSING_DOCUMENT_PROPERTY: `Missing searchable property \"%s\".`,\n    INVALID_DOCUMENT_PROPERTY: `Invalid document property \"%s\": expected \"%s\", got \"%s\"`,\n    UNKNOWN_INDEX: `Invalid property name \"%s\". Expected a wildcard string (\"*\") or array containing one of the following properties: %s`,\n    INVALID_BOOST_VALUE: `Boost value must be a number greater than, or less than 0.`,\n    INVALID_FILTER_OPERATION: `You can only use one operation per filter, you requested %d.`,\n    SCHEMA_VALIDATION_FAILURE: `Cannot insert document due schema validation failure on \"%s\" property.`,\n    INVALID_SORT_SCHEMA_TYPE: `Unsupported sort schema type \"%s\" at \"%s\". Expected \"string\" or \"number\".`,\n    CANNOT_SORT_BY_ARRAY: `Cannot configure sort for \"%s\" because it is an array (%s).`,\n    UNABLE_TO_SORT_ON_UNKNOWN_FIELD: `Unable to sort on unknown field \"%s\". Allowed fields: %s`,\n    SORT_DISABLED: `Sort is disabled. Please read the documentation at https://docs.oramasearch for more information.`,\n    UNKNOWN_GROUP_BY_PROPERTY: `Unknown groupBy property \"%s\".`,\n    INVALID_GROUP_BY_PROPERTY: `Invalid groupBy property \"%s\". Allowed types: \"%s\", but given \"%s\".`,\n    UNKNOWN_FILTER_PROPERTY: `Unknown filter property \"%s\".`,\n    INVALID_VECTOR_SIZE: `Vector size must be a number greater than 0. Got \"%s\" instead.`,\n    INVALID_VECTOR_VALUE: `Vector value must be a number greater than 0. Got \"%s\" instead.`,\n    INVALID_INPUT_VECTOR: `Property \"%s\" was declared as a %s-dimensional vector, but got a %s-dimensional vector instead.\\nInput vectors must be of the size declared in the schema, as calculating similarity between vectors of different sizes can lead to unexpected results.`,\n    WRONG_SEARCH_PROPERTY_TYPE: `Property \"%s\" is not searchable. Only \"string\" properties are searchable.`,\n    FACET_NOT_SUPPORTED: `Facet doens't support the type \"%s\".`,\n    INVALID_DISTANCE_SUFFIX: `Invalid distance suffix \"%s\". Valid suffixes are: cm, m, km, mi, yd, ft.`,\n    INVALID_SEARCH_MODE: `Invalid search mode \"%s\". Valid modes are: \"fulltext\", \"vector\", \"hybrid\".`,\n    MISSING_VECTOR_AND_SECURE_PROXY: `No vector was provided and no secure proxy was configured. Please provide a vector or configure an Orama Secure Proxy to perform hybrid search.`,\n    MISSING_TERM: `\"term\" is a required parameter when performing hybrid search. Please provide a search term.`,\n    INVALID_VECTOR_INPUT: `Invalid \"vector\" property. Expected an object with \"value\" and \"property\" properties, but got \"%s\" instead.`,\n    PLUGIN_CRASHED: `A plugin crashed during initialization. Please check the error message for more information:`,\n    PLUGIN_SECURE_PROXY_NOT_FOUND: `Could not find '@orama/secure-proxy-plugin' installed in your Orama instance.\\nPlease install it before proceeding with creating an answer session.\\nRead more at https://docs.orama.com/open-source/plugins/plugin-secure-proxy#plugin-secure-proxy\\n`,\n    PLUGIN_SECURE_PROXY_MISSING_CHAT_MODEL: `Could not find a chat model defined in the secure proxy plugin configuration.\\nPlease provide a chat model before proceeding with creating an answer session.\\nRead more at https://docs.orama.com/open-source/plugins/plugin-secure-proxy#plugin-secure-proxy\\n`,\n    ANSWER_SESSION_LAST_MESSAGE_IS_NOT_ASSISTANT: `The last message in the session is not an assistant message. Cannot regenerate non-assistant messages.`,\n    PLUGIN_COMPONENT_CONFLICT: `The component \"%s\" is already defined. The plugin \"%s\" is trying to redefine it.`,\n};\nexport function createError(code, ...args) {\n    const error = new Error(sprintf(errors[code] ?? `Unsupported Orama Error code: ${code}`, ...args));\n    error.code = code;\n    if ('captureStackTrace' in Error.prototype) {\n        Error.captureStackTrace(error);\n    }\n    return error;\n}\n//# sourceMappingURL=errors.js.map","import { createError } from '../errors.js';\nimport { formatNanoseconds, uniqueId } from '../utils.js';\nexport { getDocumentProperties } from '../utils.js';\nexport function formatElapsedTime(n) {\n    return {\n        raw: Number(n),\n        formatted: formatNanoseconds(n)\n    };\n}\nexport function getDocumentIndexId(doc) {\n    if (doc.id) {\n        if (typeof doc.id !== 'string') {\n            throw createError('DOCUMENT_ID_MUST_BE_STRING', typeof doc.id);\n        }\n        return doc.id;\n    }\n    return uniqueId();\n}\nexport function validateSchema(doc, schema) {\n    for (const [prop, type] of Object.entries(schema)) {\n        const value = doc[prop];\n        if (typeof value === 'undefined') {\n            continue;\n        }\n        if (type === 'geopoint' &&\n            typeof value === 'object' &&\n            typeof value.lon === 'number' &&\n            typeof value.lat === 'number') {\n            continue;\n        }\n        if (type === 'enum' && (typeof value === 'string' || typeof value === 'number')) {\n            continue;\n        }\n        if (type === 'enum[]' && Array.isArray(value)) {\n            const valueLength = value.length;\n            for (let i = 0; i < valueLength; i++) {\n                if (typeof value[i] !== 'string' && typeof value[i] !== 'number') {\n                    return prop + '.' + i;\n                }\n            }\n            continue;\n        }\n        if (isVectorType(type)) {\n            const vectorSize = getVectorSize(type);\n            if (!Array.isArray(value) || value.length !== vectorSize) {\n                throw createError('INVALID_INPUT_VECTOR', prop, vectorSize, value.length);\n            }\n            continue;\n        }\n        if (isArrayType(type)) {\n            if (!Array.isArray(value)) {\n                return prop;\n            }\n            const expectedType = getInnerType(type);\n            const valueLength = value.length;\n            for (let i = 0; i < valueLength; i++) {\n                if (typeof value[i] !== expectedType) {\n                    return prop + '.' + i;\n                }\n            }\n            continue;\n        }\n        if (typeof type === 'object') {\n            if (!value || typeof value !== 'object') {\n                return prop;\n            }\n            // using as ResultDocument is not exactly right but trying to be type-safe here is not useful\n            const subProp = validateSchema(value, type);\n            if (subProp) {\n                return prop + '.' + subProp;\n            }\n            continue;\n        }\n        if (typeof value !== type) {\n            return prop;\n        }\n    }\n    return undefined;\n}\nconst IS_ARRAY_TYPE = {\n    string: false,\n    number: false,\n    boolean: false,\n    enum: false,\n    geopoint: false,\n    'string[]': true,\n    'number[]': true,\n    'boolean[]': true,\n    'enum[]': true\n};\nconst INNER_TYPE = {\n    'string[]': 'string',\n    'number[]': 'number',\n    'boolean[]': 'boolean',\n    'enum[]': 'enum'\n};\nexport function isGeoPointType(type) {\n    return type === 'geopoint';\n}\nexport function isVectorType(type) {\n    return typeof type === 'string' && /^vector\\[\\d+\\]$/.test(type);\n}\nexport function isArrayType(type) {\n    return typeof type === 'string' && IS_ARRAY_TYPE[type];\n}\nexport function getInnerType(type) {\n    return INNER_TYPE[type];\n}\nexport function getVectorSize(type) {\n    const size = Number(type.slice(7, -1));\n    switch (true) {\n        case isNaN(size):\n            throw createError('INVALID_VECTOR_VALUE', type);\n        case size <= 0:\n            throw createError('INVALID_VECTOR_SIZE', type);\n        default:\n            return size;\n    }\n}\n//# sourceMappingURL=defaults.js.map","export function createInternalDocumentIDStore() {\n    return {\n        idToInternalId: new Map(),\n        internalIdToId: [],\n        save,\n        load\n    };\n}\nexport function save(store) {\n    return {\n        internalIdToId: store.internalIdToId\n    };\n}\nexport function load(orama, raw) {\n    const { internalIdToId } = raw;\n    orama.internalDocumentIDStore.idToInternalId.clear();\n    orama.internalDocumentIDStore.internalIdToId = [];\n    const internalIdToIdLength = internalIdToId.length;\n    for (let i = 0; i < internalIdToIdLength; i++) {\n        const internalIdItem = internalIdToId[i];\n        orama.internalDocumentIDStore.idToInternalId.set(internalIdItem, i + 1);\n        orama.internalDocumentIDStore.internalIdToId.push(internalIdItem);\n    }\n}\nexport function getInternalDocumentId(store, id) {\n    if (typeof id === 'string') {\n        const internalId = store.idToInternalId.get(id);\n        if (internalId) {\n            return internalId;\n        }\n        const currentId = store.idToInternalId.size + 1;\n        store.idToInternalId.set(id, currentId);\n        store.internalIdToId.push(id);\n        return currentId;\n    }\n    if (id > store.internalIdToId.length) {\n        return getInternalDocumentId(store, id.toString());\n    }\n    return id;\n}\nexport function getDocumentIdFromInternalId(store, internalId) {\n    if (store.internalIdToId.length < internalId) {\n        throw new Error(`Invalid internalId ${internalId}`);\n    }\n    return store.internalIdToId[internalId - 1];\n}\n//# sourceMappingURL=internal-document-id-store.js.map","import { getInternalDocumentId } from './internal-document-id-store.js';\nexport function create(_, sharedInternalDocumentStore) {\n    return {\n        sharedInternalDocumentStore,\n        docs: {},\n        count: 0\n    };\n}\nexport function get(store, id) {\n    const internalId = getInternalDocumentId(store.sharedInternalDocumentStore, id);\n    return store.docs[internalId];\n}\nexport function getMultiple(store, ids) {\n    const idsLength = ids.length;\n    const found = Array.from({ length: idsLength });\n    for (let i = 0; i < idsLength; i++) {\n        const internalId = getInternalDocumentId(store.sharedInternalDocumentStore, ids[i]);\n        found[i] = store.docs[internalId];\n    }\n    return found;\n}\nexport function getAll(store) {\n    return store.docs;\n}\nexport function store(store, id, internalId, doc) {\n    if (typeof store.docs[internalId] !== 'undefined') {\n        return false;\n    }\n    store.docs[internalId] = doc;\n    store.count++;\n    return true;\n}\nexport function remove(store, id) {\n    const internalId = getInternalDocumentId(store.sharedInternalDocumentStore, id);\n    if (typeof store.docs[internalId] === 'undefined') {\n        return false;\n    }\n    delete store.docs[internalId];\n    store.count--;\n    return true;\n}\nexport function count(store) {\n    return store.count;\n}\nexport function load(sharedInternalDocumentStore, raw) {\n    const rawDocument = raw;\n    return {\n        docs: rawDocument.docs,\n        count: rawDocument.count,\n        sharedInternalDocumentStore\n    };\n}\nexport function save(store) {\n    return {\n        docs: store.docs,\n        count: store.count\n    };\n}\nexport function createDocumentsStore() {\n    return {\n        create,\n        get,\n        getMultiple,\n        getAll,\n        store,\n        remove,\n        count,\n        load,\n        save\n    };\n}\n//# sourceMappingURL=documents-store.js.map","import { createError } from '../errors.js';\nexport const AVAILABLE_PLUGIN_HOOKS = [\n    'beforeInsert',\n    'afterInsert',\n    'beforeRemove',\n    'afterRemove',\n    'beforeUpdate',\n    'afterUpdate',\n    'beforeUpsert',\n    'afterUpsert',\n    'beforeSearch',\n    'afterSearch',\n    'beforeInsertMultiple',\n    'afterInsertMultiple',\n    'beforeRemoveMultiple',\n    'afterRemoveMultiple',\n    'beforeUpdateMultiple',\n    'afterUpdateMultiple',\n    'beforeUpsertMultiple',\n    'afterUpsertMultiple',\n    'beforeLoad',\n    'afterLoad',\n    'afterCreate'\n];\nexport function getAllPluginsByHook(orama, hook) {\n    const pluginsToRun = [];\n    const pluginsLength = orama.plugins?.length;\n    if (!pluginsLength) {\n        return pluginsToRun;\n    }\n    for (let i = 0; i < pluginsLength; i++) {\n        try {\n            const plugin = orama.plugins[i];\n            if (typeof plugin[hook] === 'function') {\n                pluginsToRun.push(plugin[hook]);\n            }\n        }\n        catch (error) {\n            console.error('Caught error in getAllPluginsByHook:', error);\n            throw createError('PLUGIN_CRASHED');\n        }\n    }\n    return pluginsToRun;\n}\n//# sourceMappingURL=plugins.js.map","import { isAsyncFunction } from '../utils.js';\nexport const OBJECT_COMPONENTS = ['tokenizer', 'index', 'documentsStore', 'sorter'];\nexport const FUNCTION_COMPONENTS = [\n    'validateSchema',\n    'getDocumentIndexId',\n    'getDocumentProperties',\n    'formatElapsedTime'\n];\nexport const SINGLE_OR_ARRAY_COMPONENTS = [\n/* deprecated with v2.0.0-beta.5 */\n];\nexport function runSingleHook(hooks, orama, id, doc) {\n    const needAsync = hooks.some(isAsyncFunction);\n    if (needAsync) {\n        return (async () => {\n            for (const hook of hooks) {\n                await hook(orama, id, doc);\n            }\n        })();\n    }\n    else {\n        for (const hook of hooks) {\n            hook(orama, id, doc);\n        }\n    }\n}\nexport function runMultipleHook(hooks, orama, docsOrIds) {\n    const needAsync = hooks.some(isAsyncFunction);\n    if (needAsync) {\n        return (async () => {\n            for (const hook of hooks) {\n                await hook(orama, docsOrIds);\n            }\n        })();\n    }\n    else {\n        for (const hook of hooks) {\n            hook(orama, docsOrIds);\n        }\n    }\n}\nexport function runAfterSearch(hooks, db, params, language, results) {\n    const needAsync = hooks.some(isAsyncFunction);\n    if (needAsync) {\n        return (async () => {\n            for (const hook of hooks) {\n                await hook(db, params, language, results);\n            }\n        })();\n    }\n    else {\n        for (const hook of hooks) {\n            hook(db, params, language, results);\n        }\n    }\n}\nexport function runBeforeSearch(hooks, db, params, language) {\n    const needAsync = hooks.some(isAsyncFunction);\n    if (needAsync) {\n        return (async () => {\n            for (const hook of hooks) {\n                await hook(db, params, language);\n            }\n        })();\n    }\n    else {\n        for (const hook of hooks) {\n            hook(db, params, language);\n        }\n    }\n}\nexport function runAfterCreate(hooks, db) {\n    const needAsync = hooks.some(isAsyncFunction);\n    if (needAsync) {\n        return (async () => {\n            for (const hook of hooks) {\n                await hook(db);\n            }\n        })();\n    }\n    else {\n        for (const hook of hooks) {\n            hook(db);\n        }\n    }\n}\n//# sourceMappingURL=hooks.js.map","import { setUnion } from '../utils.js';\nexport class AVLNode {\n    k;\n    v;\n    l = null;\n    r = null;\n    h = 1;\n    constructor(key, value) {\n        this.k = key;\n        this.v = new Set(value);\n    }\n    updateHeight() {\n        this.h = Math.max(AVLNode.getHeight(this.l), AVLNode.getHeight(this.r)) + 1;\n    }\n    static getHeight(node) {\n        return node ? node.h : 0;\n    }\n    getBalanceFactor() {\n        return AVLNode.getHeight(this.l) - AVLNode.getHeight(this.r);\n    }\n    rotateLeft() {\n        const newRoot = this.r;\n        this.r = newRoot.l;\n        newRoot.l = this;\n        this.updateHeight();\n        newRoot.updateHeight();\n        return newRoot;\n    }\n    rotateRight() {\n        const newRoot = this.l;\n        this.l = newRoot.r;\n        newRoot.r = this;\n        this.updateHeight();\n        newRoot.updateHeight();\n        return newRoot;\n    }\n    toJSON() {\n        return {\n            k: this.k,\n            v: Array.from(this.v),\n            l: this.l ? this.l.toJSON() : null,\n            r: this.r ? this.r.toJSON() : null,\n            h: this.h\n        };\n    }\n    static fromJSON(json) {\n        const node = new AVLNode(json.k, json.v);\n        node.l = json.l ? AVLNode.fromJSON(json.l) : null;\n        node.r = json.r ? AVLNode.fromJSON(json.r) : null;\n        node.h = json.h;\n        return node;\n    }\n}\nexport class AVLTree {\n    root = null;\n    insertCount = 0;\n    constructor(key, value) {\n        if (key !== undefined && value !== undefined) {\n            this.root = new AVLNode(key, value);\n        }\n    }\n    insert(key, value, rebalanceThreshold = 1000) {\n        this.root = this.insertNode(this.root, key, value, rebalanceThreshold);\n    }\n    insertMultiple(key, value, rebalanceThreshold = 1000) {\n        for (const v of value) {\n            this.insert(key, v, rebalanceThreshold);\n        }\n    }\n    // Rebalance the tree if the insert count reaches the threshold.\n    // This will improve insertion performance since we won't be rebalancing the tree on every insert.\n    // When inserting docs using `insertMultiple`, the threshold will be set to the number of docs being inserted.\n    // We can force rebalancing the tree by setting the threshold to 1 (default).\n    rebalance() {\n        if (this.root) {\n            this.root = this.rebalanceNode(this.root);\n        }\n    }\n    toJSON() {\n        return {\n            root: this.root ? this.root.toJSON() : null,\n            insertCount: this.insertCount\n        };\n    }\n    static fromJSON(json) {\n        const tree = new AVLTree();\n        tree.root = json.root ? AVLNode.fromJSON(json.root) : null;\n        tree.insertCount = json.insertCount || 0;\n        return tree;\n    }\n    insertNode(node, key, value, rebalanceThreshold) {\n        if (node === null) {\n            return new AVLNode(key, [value]);\n        }\n        const path = [];\n        let current = node;\n        let parent = null;\n        while (current !== null) {\n            path.push({ parent, node: current });\n            if (key < current.k) {\n                if (current.l === null) {\n                    current.l = new AVLNode(key, [value]);\n                    path.push({ parent: current, node: current.l });\n                    break;\n                }\n                else {\n                    parent = current;\n                    current = current.l;\n                }\n            }\n            else if (key > current.k) {\n                if (current.r === null) {\n                    current.r = new AVLNode(key, [value]);\n                    path.push({ parent: current, node: current.r });\n                    break;\n                }\n                else {\n                    parent = current;\n                    current = current.r;\n                }\n            }\n            else {\n                // Key already exists\n                current.v.add(value);\n                /*\n                if (Array.isArray(current.v)) {\n                  if (Array.isArray(value)) {\n                    ;(current.v as any[]).push(...(value as V[]))\n                  } else {\n                    ;(current.v as any[]).push(value)\n                  }\n                } else {\n                  current.v = new Set([value])\n                }\n                */\n                return node;\n            }\n        }\n        // Update heights and rebalance if necessary\n        let needRebalance = false;\n        if (this.insertCount++ % rebalanceThreshold === 0) {\n            needRebalance = true;\n        }\n        for (let i = path.length - 1; i >= 0; i--) {\n            const { parent, node: currentNode } = path[i];\n            currentNode.updateHeight();\n            if (needRebalance) {\n                const rebalancedNode = this.rebalanceNode(currentNode);\n                if (parent) {\n                    if (parent.l === currentNode) {\n                        parent.l = rebalancedNode;\n                    }\n                    else if (parent.r === currentNode) {\n                        parent.r = rebalancedNode;\n                    }\n                }\n                else {\n                    // This is the root node\n                    node = rebalancedNode;\n                }\n            }\n        }\n        return node;\n    }\n    rebalanceNode(node) {\n        const balanceFactor = node.getBalanceFactor();\n        if (balanceFactor > 1) {\n            // Left heavy\n            if (node.l && node.l.getBalanceFactor() >= 0) {\n                // Left Left Case\n                return node.rotateRight();\n            }\n            else if (node.l) {\n                // Left Right Case\n                node.l = node.l.rotateLeft();\n                return node.rotateRight();\n            }\n        }\n        if (balanceFactor < -1) {\n            // Right heavy\n            if (node.r && node.r.getBalanceFactor() <= 0) {\n                // Right Right Case\n                return node.rotateLeft();\n            }\n            else if (node.r) {\n                // Right Left Case\n                node.r = node.r.rotateRight();\n                return node.rotateLeft();\n            }\n        }\n        return node;\n    }\n    find(key) {\n        const node = this.findNodeByKey(key);\n        return node ? node.v : null;\n    }\n    contains(key) {\n        return this.find(key) !== null;\n    }\n    getSize() {\n        let count = 0;\n        const stack = [];\n        let current = this.root;\n        while (current || stack.length > 0) {\n            while (current) {\n                stack.push(current);\n                current = current.l;\n            }\n            current = stack.pop();\n            count++;\n            current = current.r;\n        }\n        return count;\n    }\n    isBalanced() {\n        if (!this.root)\n            return true;\n        const stack = [this.root];\n        while (stack.length > 0) {\n            const node = stack.pop();\n            const balanceFactor = node.getBalanceFactor();\n            if (Math.abs(balanceFactor) > 1) {\n                return false;\n            }\n            if (node.l)\n                stack.push(node.l);\n            if (node.r)\n                stack.push(node.r);\n        }\n        return true;\n    }\n    remove(key) {\n        this.root = this.removeNode(this.root, key);\n    }\n    removeDocument(key, id) {\n        const node = this.findNodeByKey(key);\n        if (!node) {\n            return;\n        }\n        if (node.v.size === 1) {\n            this.root = this.removeNode(this.root, key);\n        }\n        else {\n            node.v = new Set([...node.v.values()].filter((v) => v !== id));\n        }\n    }\n    findNodeByKey(key) {\n        let node = this.root;\n        while (node) {\n            if (key < node.k) {\n                node = node.l;\n            }\n            else if (key > node.k) {\n                node = node.r;\n            }\n            else {\n                return node;\n            }\n        }\n        return null;\n    }\n    removeNode(node, key) {\n        if (node === null)\n            return null;\n        const path = [];\n        let current = node;\n        while (current !== null && current.k !== key) {\n            path.push(current);\n            if (key < current.k) {\n                current = current.l;\n            }\n            else {\n                current = current.r;\n            }\n        }\n        if (current === null) {\n            // Key not found\n            return node;\n        }\n        // Node with only one child or no child\n        if (current.l === null || current.r === null) {\n            const child = current.l ? current.l : current.r;\n            if (path.length === 0) {\n                // Node to be deleted is root\n                node = child;\n            }\n            else {\n                const parent = path[path.length - 1];\n                if (parent.l === current) {\n                    parent.l = child;\n                }\n                else {\n                    parent.r = child;\n                }\n            }\n        }\n        else {\n            // Node with two children: Get the inorder successor\n            let successorParent = current;\n            let successor = current.r;\n            while (successor.l !== null) {\n                successorParent = successor;\n                successor = successor.l;\n            }\n            // Copy the successor's content to current node\n            current.k = successor.k;\n            current.v = successor.v;\n            // Delete the successor\n            if (successorParent.l === successor) {\n                successorParent.l = successor.r;\n            }\n            else {\n                successorParent.r = successor.r;\n            }\n            current = successorParent;\n        }\n        // Update heights and rebalance\n        path.push(current);\n        for (let i = path.length - 1; i >= 0; i--) {\n            const currentNode = path[i];\n            currentNode.updateHeight();\n            const rebalancedNode = this.rebalanceNode(currentNode);\n            if (i > 0) {\n                const parent = path[i - 1];\n                if (parent.l === currentNode) {\n                    parent.l = rebalancedNode;\n                }\n                else if (parent.r === currentNode) {\n                    parent.r = rebalancedNode;\n                }\n            }\n            else {\n                // Root node\n                node = rebalancedNode;\n            }\n        }\n        return node;\n    }\n    rangeSearch(min, max) {\n        let result = new Set();\n        const stack = [];\n        let current = this.root;\n        while (current || stack.length > 0) {\n            while (current) {\n                stack.push(current);\n                current = current.l;\n            }\n            current = stack.pop();\n            if (current.k >= min && current.k <= max) {\n                result = setUnion(result, current.v);\n            }\n            if (current.k > max) {\n                break;\n            }\n            current = current.r;\n        }\n        return result;\n    }\n    greaterThan(key, inclusive = false) {\n        let result = new Set();\n        const stack = [];\n        let current = this.root;\n        while (current || stack.length > 0) {\n            while (current) {\n                stack.push(current);\n                current = current.r; // Traverse right subtree first\n            }\n            current = stack.pop();\n            if ((inclusive && current.k >= key) || (!inclusive && current.k > key)) {\n                result = setUnion(result, current.v);\n            }\n            else if (current.k <= key) {\n                break; // Since we're traversing in descending order, we can break early\n            }\n            current = current.l;\n        }\n        return result;\n    }\n    lessThan(key, inclusive = false) {\n        let result = new Set();\n        const stack = [];\n        let current = this.root;\n        while (current || stack.length > 0) {\n            while (current) {\n                stack.push(current);\n                current = current.l;\n            }\n            current = stack.pop();\n            if ((inclusive && current.k <= key) || (!inclusive && current.k < key)) {\n                result = setUnion(result, current.v);\n            }\n            else if (current.k > key) {\n                break; // Since we're traversing in ascending order, we can break early\n            }\n            current = current.r;\n        }\n        return result;\n    }\n}\n//# sourceMappingURL=avl.js.map","export class FlatTree {\n    numberToDocumentId;\n    constructor() {\n        this.numberToDocumentId = new Map();\n    }\n    insert(key, value) {\n        if (this.numberToDocumentId.has(key)) {\n            this.numberToDocumentId.get(key).add(value);\n        }\n        else {\n            this.numberToDocumentId.set(key, new Set([value]));\n        }\n    }\n    find(key) {\n        const idSet = this.numberToDocumentId.get(key);\n        return idSet ? Array.from(idSet) : null;\n    }\n    remove(key) {\n        this.numberToDocumentId.delete(key);\n    }\n    removeDocument(id, key) {\n        const idSet = this.numberToDocumentId.get(key);\n        if (idSet) {\n            idSet.delete(id);\n            if (idSet.size === 0) {\n                this.numberToDocumentId.delete(key);\n            }\n        }\n    }\n    contains(key) {\n        return this.numberToDocumentId.has(key);\n    }\n    getSize() {\n        let size = 0;\n        for (const idSet of this.numberToDocumentId.values()) {\n            size += idSet.size;\n        }\n        return size;\n    }\n    filter(operation) {\n        const operationKeys = Object.keys(operation);\n        if (operationKeys.length !== 1) {\n            throw new Error('Invalid operation');\n        }\n        const operationType = operationKeys[0];\n        switch (operationType) {\n            case 'eq': {\n                const value = operation[operationType];\n                const idSet = this.numberToDocumentId.get(value);\n                return idSet ? Array.from(idSet) : [];\n            }\n            case 'in': {\n                const values = operation[operationType];\n                const resultSet = new Set();\n                for (const value of values) {\n                    const idSet = this.numberToDocumentId.get(value);\n                    if (idSet) {\n                        for (const id of idSet) {\n                            resultSet.add(id);\n                        }\n                    }\n                }\n                return Array.from(resultSet);\n            }\n            case 'nin': {\n                const excludeValues = new Set(operation[operationType]);\n                const resultSet = new Set();\n                for (const [key, idSet] of this.numberToDocumentId.entries()) {\n                    if (!excludeValues.has(key)) {\n                        for (const id of idSet) {\n                            resultSet.add(id);\n                        }\n                    }\n                }\n                return Array.from(resultSet);\n            }\n            default:\n                throw new Error('Invalid operation');\n        }\n    }\n    filterArr(operation) {\n        const operationKeys = Object.keys(operation);\n        if (operationKeys.length !== 1) {\n            throw new Error('Invalid operation');\n        }\n        const operationType = operationKeys[0];\n        switch (operationType) {\n            case 'containsAll': {\n                const values = operation[operationType];\n                const idSets = values.map((value) => this.numberToDocumentId.get(value) ?? new Set());\n                if (idSets.length === 0)\n                    return [];\n                const intersection = idSets.reduce((prev, curr) => {\n                    return new Set([...prev].filter((id) => curr.has(id)));\n                });\n                return Array.from(intersection);\n            }\n            case 'containsAny': {\n                const values = operation[operationType];\n                const idSets = values.map((value) => this.numberToDocumentId.get(value) ?? new Set());\n                if (idSets.length === 0)\n                    return [];\n                const union = idSets.reduce((prev, curr) => {\n                    return new Set([...prev, ...curr]);\n                });\n                return Array.from(union);\n            }\n            default:\n                throw new Error('Invalid operation');\n        }\n    }\n    static fromJSON(json) {\n        if (!json.numberToDocumentId) {\n            throw new Error('Invalid Flat Tree JSON');\n        }\n        const tree = new FlatTree();\n        for (const [key, ids] of json.numberToDocumentId) {\n            tree.numberToDocumentId.set(key, new Set(ids));\n        }\n        return tree;\n    }\n    toJSON() {\n        return {\n            numberToDocumentId: Array.from(this.numberToDocumentId.entries()).map(([key, idSet]) => [key, Array.from(idSet)])\n        };\n    }\n}\n//# sourceMappingURL=flat.js.map","/**\n * Inspired by:\n * https://github.com/Yomguithereal/talisman/blob/86ae55cbd040ff021d05e282e0e6c71f2dde21f8/src/metrics/levenshtein.js#L218-L340\n */\nfunction _boundedLevenshtein(term, word, tolerance) {\n    // Handle base cases\n    if (tolerance < 0)\n        return -1;\n    if (term === word)\n        return 0;\n    const m = term.length;\n    const n = word.length;\n    // Special case for empty strings\n    if (m === 0)\n        return n <= tolerance ? n : -1;\n    if (n === 0)\n        return m <= tolerance ? m : -1;\n    // term = term.toLowerCase()\n    // word = word.toLowerCase()\n    const diff = Math.abs(m - n);\n    // Special case for prefixes\n    // If the searching word starts with the indexed word, return early.\n    if (term.startsWith(word)) {\n        // We just check if the remaining characters are within the tolerance\n        return diff <= tolerance ? diff : -1;\n    }\n    // If the indexed word starts with the searching word, return early.\n    if (word.startsWith(term)) {\n        // any prefixed word is within the tolerance\n        return 0;\n    }\n    // If the length difference is greater than the tolerance, return early\n    if (diff > tolerance)\n        return -1;\n    // Initialize the matrix\n    const matrix = [];\n    for (let i = 0; i <= m; i++) {\n        matrix[i] = [i];\n        for (let j = 1; j <= n; j++) {\n            matrix[i][j] = i === 0 ? j : 0;\n        }\n    }\n    // Fill the matrix\n    for (let i = 1; i <= m; i++) {\n        let rowMin = Infinity;\n        for (let j = 1; j <= n; j++) {\n            if (term[i - 1] === word[j - 1]) {\n                matrix[i][j] = matrix[i - 1][j - 1];\n            }\n            else {\n                matrix[i][j] = Math.min(matrix[i - 1][j] + 1, // deletion\n                matrix[i][j - 1] + 1, // insertion\n                matrix[i - 1][j - 1] + 1 // substitution\n                );\n            }\n            rowMin = Math.min(rowMin, matrix[i][j]);\n        }\n        // Early termination if all values in this row exceed tolerance\n        if (rowMin > tolerance) {\n            return -1;\n        }\n    }\n    return matrix[m][n] <= tolerance ? matrix[m][n] : -1;\n}\n/**\n * Computes the Levenshtein distance between two strings (a, b), returning early with -1 if the distance\n * is greater than the given tolerance.\n * It assumes that:\n * - tolerance >= ||a| - |b|| >= 0\n */\nexport function boundedLevenshtein(term, w, tolerance) {\n    const distance = _boundedLevenshtein(term, w, tolerance);\n    return {\n        distance,\n        isBounded: distance >= 0\n    };\n}\n// This is only used internally, keep in sync with the previous one\nexport function syncBoundedLevenshtein(term, w, tolerance) {\n    const distance = _boundedLevenshtein(term, w, tolerance);\n    return {\n        distance,\n        isBounded: distance >= 0\n    };\n}\nexport function levenshtein(a, b) {\n    /* c8 ignore next 3 */\n    if (!a.length) {\n        return b.length;\n    }\n    /* c8 ignore next 3 */\n    if (!b.length) {\n        return a.length;\n    }\n    const swap = a;\n    if (a.length > b.length) {\n        a = b;\n        b = swap;\n    }\n    const row = Array.from({ length: a.length + 1 }, (_, i) => i);\n    let val = 0;\n    for (let i = 1; i <= b.length; i++) {\n        let prev = i;\n        for (let j = 1; j <= a.length; j++) {\n            if (b[i - 1] === a[j - 1]) {\n                val = row[j - 1];\n            }\n            else {\n                val = Math.min(row[j - 1] + 1, Math.min(prev + 1, row[j] + 1));\n            }\n            row[j - 1] = prev;\n            prev = val;\n        }\n        row[a.length] = prev;\n    }\n    return row[a.length];\n}\n//# sourceMappingURL=levenshtein.js.map","/* eslint-disable @typescript-eslint/no-this-alias */\nimport { syncBoundedLevenshtein } from '../components/levenshtein.js';\nimport { getOwnProperty } from '../utils.js';\nexport class RadixNode {\n    // Node key\n    k;\n    // Node subword\n    s;\n    // Node children\n    c = new Map();\n    // Node documents\n    d = new Set();\n    // Node end\n    e;\n    // Node word\n    w = '';\n    constructor(key, subWord, end) {\n        this.k = key;\n        this.s = subWord;\n        this.e = end;\n    }\n    updateParent(parent) {\n        this.w = parent.w + this.s;\n    }\n    addDocument(docID) {\n        this.d.add(docID);\n    }\n    removeDocument(docID) {\n        return this.d.delete(docID);\n    }\n    findAllWords(output, term, exact, tolerance) {\n        const stack = [this];\n        while (stack.length > 0) {\n            const node = stack.pop();\n            if (node.e) {\n                const { w, d: docIDs } = node;\n                if (exact && w !== term) {\n                    continue;\n                }\n                // check if _output[w] exists and then add the doc to it\n                // always check in own property to prevent access to inherited properties\n                // fix https://github.com/oramasearch/orama/issues/137\n                if (getOwnProperty(output, w) !== null) {\n                    if (tolerance) {\n                        const difference = Math.abs(term.length - w.length);\n                        if (difference <= tolerance && syncBoundedLevenshtein(term, w, tolerance).isBounded) {\n                            output[w] = [];\n                        }\n                        else {\n                            continue;\n                        }\n                    }\n                    else {\n                        output[w] = [];\n                    }\n                }\n                // check if _output[w] exists and then add the doc to it\n                // always check in own property to prevent access to inherited properties\n                // fix https://github.com/oramasearch/orama/issues/137\n                if (getOwnProperty(output, w) != null && docIDs.size > 0) {\n                    const docs = output[w];\n                    for (const docID of docIDs) {\n                        if (!docs.includes(docID)) {\n                            docs.push(docID);\n                        }\n                    }\n                }\n            }\n            if (node.c.size > 0) {\n                stack.push(...node.c.values());\n            }\n        }\n        return output;\n    }\n    insert(word, docId) {\n        let node = this;\n        let i = 0;\n        const wordLength = word.length;\n        while (i < wordLength) {\n            const currentCharacter = word[i];\n            const childNode = node.c.get(currentCharacter);\n            if (childNode) {\n                const edgeLabel = childNode.s;\n                const edgeLabelLength = edgeLabel.length;\n                let j = 0;\n                // Find the common prefix length between edgeLabel and the remaining word\n                while (j < edgeLabelLength && i + j < wordLength && edgeLabel[j] === word[i + j]) {\n                    j++;\n                }\n                if (j === edgeLabelLength) {\n                    // Edge label fully matches; proceed to the child node\n                    node = childNode;\n                    i += j;\n                    if (i === wordLength) {\n                        // The word is a prefix of an existing word\n                        if (!childNode.e) {\n                            childNode.e = true;\n                        }\n                        childNode.addDocument(docId);\n                        return;\n                    }\n                    continue;\n                }\n                // Split the edgeLabel at the common prefix\n                const commonPrefix = edgeLabel.slice(0, j);\n                const newEdgeLabel = edgeLabel.slice(j);\n                const newWordLabel = word.slice(i + j);\n                // Create an intermediate node for the common prefix\n                const inbetweenNode = new RadixNode(commonPrefix[0], commonPrefix, false);\n                node.c.set(commonPrefix[0], inbetweenNode);\n                inbetweenNode.updateParent(node);\n                // Update the existing childNode\n                childNode.s = newEdgeLabel;\n                childNode.k = newEdgeLabel[0];\n                inbetweenNode.c.set(newEdgeLabel[0], childNode);\n                childNode.updateParent(inbetweenNode);\n                if (newWordLabel) {\n                    // Create a new node for the remaining part of the word\n                    const newNode = new RadixNode(newWordLabel[0], newWordLabel, true);\n                    newNode.addDocument(docId);\n                    inbetweenNode.c.set(newWordLabel[0], newNode);\n                    newNode.updateParent(inbetweenNode);\n                }\n                else {\n                    // The word ends at the inbetweenNode\n                    inbetweenNode.e = true;\n                    inbetweenNode.addDocument(docId);\n                }\n                return;\n            }\n            else {\n                // No matching child; create a new node\n                const newNode = new RadixNode(currentCharacter, word.slice(i), true);\n                newNode.addDocument(docId);\n                node.c.set(currentCharacter, newNode);\n                newNode.updateParent(node);\n                return;\n            }\n        }\n        // If we reach here, the word already exists in the tree\n        if (!node.e) {\n            node.e = true;\n        }\n        node.addDocument(docId);\n    }\n    _findLevenshtein(term, index, tolerance, originalTolerance, output) {\n        const stack = [{ node: this, index, tolerance }];\n        while (stack.length > 0) {\n            const { node, index, tolerance } = stack.pop();\n            if (node.w.startsWith(term)) {\n                node.findAllWords(output, term, false, 0);\n                continue;\n            }\n            if (tolerance < 0) {\n                continue;\n            }\n            if (node.e) {\n                const { w, d: docIDs } = node;\n                if (w) {\n                    if (syncBoundedLevenshtein(term, w, originalTolerance).isBounded) {\n                        output[w] = [];\n                    }\n                    if (getOwnProperty(output, w) !== undefined && docIDs.size > 0) {\n                        const docs = new Set(output[w]);\n                        for (const docID of docIDs) {\n                            docs.add(docID);\n                        }\n                        output[w] = Array.from(docs);\n                    }\n                }\n            }\n            if (index >= term.length) {\n                continue;\n            }\n            const currentChar = term[index];\n            // 1. If node has child matching term[index], push { node: childNode, index +1, tolerance }\n            if (node.c.has(currentChar)) {\n                const childNode = node.c.get(currentChar);\n                stack.push({ node: childNode, index: index + 1, tolerance });\n            }\n            // 2. Push { node, index +1, tolerance -1 } (Delete operation)\n            stack.push({ node: node, index: index + 1, tolerance: tolerance - 1 });\n            // 3. For each child:\n            for (const [character, childNode] of node.c) {\n                // a) Insert operation\n                stack.push({ node: childNode, index: index, tolerance: tolerance - 1 });\n                // b) Substitute operation\n                if (character !== currentChar) {\n                    stack.push({ node: childNode, index: index + 1, tolerance: tolerance - 1 });\n                }\n            }\n        }\n    }\n    find(params) {\n        const { term, exact, tolerance } = params;\n        if (tolerance && !exact) {\n            const output = {};\n            this._findLevenshtein(term, 0, tolerance, tolerance, output);\n            return output;\n        }\n        else {\n            let node = this;\n            let i = 0;\n            const termLength = term.length;\n            while (i < termLength) {\n                const character = term[i];\n                const childNode = node.c.get(character);\n                if (childNode) {\n                    const edgeLabel = childNode.s;\n                    const edgeLabelLength = edgeLabel.length;\n                    let j = 0;\n                    // Compare edge label with the term starting from position i\n                    while (j < edgeLabelLength && i + j < termLength && edgeLabel[j] === term[i + j]) {\n                        j++;\n                    }\n                    if (j === edgeLabelLength) {\n                        // Full match of edge label; proceed to the child node\n                        node = childNode;\n                        i += j;\n                    }\n                    else if (i + j === termLength) {\n                        // The term ends in the middle of the edge label - FIX: this handles prefix matches like 'p' matching 'phone'\n                        // Check if the term matches from the beginning of the edge label\n                        if (j === termLength - i) {\n                            // Term is a prefix of the edge label\n                            if (exact) {\n                                // Exact match required but term doesn't end at a node\n                                return {};\n                            }\n                            else {\n                                // Partial match; collect words starting from this node\n                                const output = {};\n                                // Just call findAllWords on the child node to collect all words in this subtree\n                                childNode.findAllWords(output, term, exact, tolerance);\n                                return output;\n                            }\n                        }\n                        else {\n                            // Mismatch found\n                            return {};\n                        }\n                    }\n                    else {\n                        // Mismatch found\n                        return {};\n                    }\n                }\n                else {\n                    // No matching child node\n                    return {};\n                }\n            }\n            // Term fully matched; collect words starting from this node\n            const output = {};\n            node.findAllWords(output, term, exact, tolerance);\n            return output;\n        }\n    }\n    contains(term) {\n        let node = this;\n        let i = 0;\n        const termLength = term.length;\n        while (i < termLength) {\n            const character = term[i];\n            const childNode = node.c.get(character);\n            if (childNode) {\n                const edgeLabel = childNode.s;\n                const edgeLabelLength = edgeLabel.length;\n                let j = 0;\n                while (j < edgeLabelLength && i + j < termLength && edgeLabel[j] === term[i + j]) {\n                    j++;\n                }\n                if (j < edgeLabelLength) {\n                    return false;\n                }\n                i += edgeLabelLength;\n                node = childNode;\n            }\n            else {\n                return false;\n            }\n        }\n        return true;\n    }\n    removeWord(term) {\n        if (!term) {\n            return false;\n        }\n        let node = this;\n        const termLength = term.length;\n        const stack = [];\n        for (let i = 0; i < termLength; i++) {\n            const character = term[i];\n            if (node.c.has(character)) {\n                const childNode = node.c.get(character);\n                stack.push({ parent: node, character });\n                i += childNode.s.length - 1;\n                node = childNode;\n            }\n            else {\n                return false;\n            }\n        }\n        // Remove documents from the node\n        node.d.clear();\n        node.e = false;\n        // Clean up any nodes that no longer lead to a word\n        while (stack.length > 0 && node.c.size === 0 && !node.e && node.d.size === 0) {\n            const { parent, character } = stack.pop();\n            parent.c.delete(character);\n            node = parent;\n        }\n        return true;\n    }\n    removeDocumentByWord(term, docID, exact = true) {\n        if (!term) {\n            return true;\n        }\n        let node = this;\n        const termLength = term.length;\n        for (let i = 0; i < termLength; i++) {\n            const character = term[i];\n            if (node.c.has(character)) {\n                const childNode = node.c.get(character);\n                i += childNode.s.length - 1;\n                node = childNode;\n                if (exact && node.w !== term) {\n                    // Do nothing if the exact condition is not met.\n                }\n                else {\n                    node.removeDocument(docID);\n                }\n            }\n            else {\n                return false;\n            }\n        }\n        return true;\n    }\n    static getCommonPrefix(a, b) {\n        const len = Math.min(a.length, b.length);\n        let i = 0;\n        while (i < len && a.charCodeAt(i) === b.charCodeAt(i)) {\n            i++;\n        }\n        return a.slice(0, i);\n    }\n    toJSON() {\n        return {\n            w: this.w,\n            s: this.s,\n            e: this.e,\n            k: this.k,\n            d: Array.from(this.d),\n            c: Array.from(this.c?.entries())?.map(([key, node]) => [key, node.toJSON()])\n        };\n    }\n    static fromJSON(json) {\n        const node = new RadixNode(json.k, json.s, json.e);\n        node.w = json.w;\n        node.d = new Set(json.d);\n        node.c = new Map(json?.c?.map(([key, nodeJson]) => [key, RadixNode.fromJSON(nodeJson)]));\n        return node;\n    }\n}\nexport class RadixTree extends RadixNode {\n    constructor() {\n        super('', '', false);\n    }\n    static fromJSON(json) {\n        const tree = new RadixTree();\n        tree.w = json.w;\n        tree.s = json.s;\n        tree.e = json.e;\n        tree.k = json.k;\n        tree.d = new Set(json.d);\n        tree.c = new Map(json.c?.map(([key, nodeJson]) => [key, RadixNode.fromJSON(nodeJson)]));\n        return tree;\n    }\n    toJSON() {\n        return super.toJSON();\n    }\n}\n//# sourceMappingURL=radix.js.map","const K = 2; // 2D points\nconst EARTH_RADIUS = 6371e3; // Earth radius in meters\nclass BKDNode {\n    point;\n    docIDs;\n    left;\n    right;\n    parent;\n    constructor(point, docIDs) {\n        this.point = point;\n        this.docIDs = new Set(docIDs);\n        this.left = null;\n        this.right = null;\n        this.parent = null;\n    }\n    toJSON() {\n        return {\n            point: this.point,\n            docIDs: Array.from(this.docIDs),\n            left: this.left ? this.left.toJSON() : null,\n            right: this.right ? this.right.toJSON() : null\n        };\n    }\n    static fromJSON(json, parent = null) {\n        const node = new BKDNode(json.point, json.docIDs);\n        node.parent = parent;\n        if (json.left) {\n            node.left = BKDNode.fromJSON(json.left, node);\n        }\n        if (json.right) {\n            node.right = BKDNode.fromJSON(json.right, node);\n        }\n        return node;\n    }\n}\nexport class BKDTree {\n    root;\n    nodeMap;\n    constructor() {\n        this.root = null;\n        this.nodeMap = new Map();\n    }\n    getPointKey(point) {\n        return `${point.lon},${point.lat}`;\n    }\n    insert(point, docIDs) {\n        const pointKey = this.getPointKey(point);\n        const existingNode = this.nodeMap.get(pointKey);\n        if (existingNode) {\n            docIDs.forEach((id) => existingNode.docIDs.add(id));\n            return;\n        }\n        const newNode = new BKDNode(point, docIDs);\n        this.nodeMap.set(pointKey, newNode);\n        if (this.root == null) {\n            this.root = newNode;\n            return;\n        }\n        let node = this.root;\n        let depth = 0;\n        // eslint-disable-next-line no-constant-condition\n        while (true) {\n            const axis = depth % K;\n            if (axis === 0) {\n                if (point.lon < node.point.lon) {\n                    if (node.left == null) {\n                        node.left = newNode;\n                        newNode.parent = node;\n                        return;\n                    }\n                    node = node.left;\n                }\n                else {\n                    if (node.right == null) {\n                        node.right = newNode;\n                        newNode.parent = node;\n                        return;\n                    }\n                    node = node.right;\n                }\n            }\n            else {\n                if (point.lat < node.point.lat) {\n                    if (node.left == null) {\n                        node.left = newNode;\n                        newNode.parent = node;\n                        return;\n                    }\n                    node = node.left;\n                }\n                else {\n                    if (node.right == null) {\n                        node.right = newNode;\n                        newNode.parent = node;\n                        return;\n                    }\n                    node = node.right;\n                }\n            }\n            depth++;\n        }\n    }\n    contains(point) {\n        const pointKey = this.getPointKey(point);\n        return this.nodeMap.has(pointKey);\n    }\n    getDocIDsByCoordinates(point) {\n        const pointKey = this.getPointKey(point);\n        const node = this.nodeMap.get(pointKey);\n        if (node) {\n            return Array.from(node.docIDs);\n        }\n        return null;\n    }\n    removeDocByID(point, docID) {\n        const pointKey = this.getPointKey(point);\n        const node = this.nodeMap.get(pointKey);\n        if (node) {\n            node.docIDs.delete(docID);\n            if (node.docIDs.size === 0) {\n                this.nodeMap.delete(pointKey);\n                this.deleteNode(node);\n            }\n        }\n    }\n    deleteNode(node) {\n        const parent = node.parent;\n        const child = node.left ? node.left : node.right;\n        if (child) {\n            child.parent = parent;\n        }\n        if (parent) {\n            if (parent.left === node) {\n                parent.left = child;\n            }\n            else if (parent.right === node) {\n                parent.right = child;\n            }\n        }\n        else {\n            this.root = child;\n            if (this.root) {\n                this.root.parent = null;\n            }\n        }\n    }\n    searchByRadius(center, radius, inclusive = true, sort = 'asc', highPrecision = false) {\n        const distanceFn = highPrecision ? BKDTree.vincentyDistance : BKDTree.haversineDistance;\n        const stack = [{ node: this.root, depth: 0 }];\n        const result = [];\n        while (stack.length > 0) {\n            const { node, depth } = stack.pop();\n            if (node == null)\n                continue;\n            const dist = distanceFn(center, node.point);\n            if (inclusive ? dist <= radius : dist > radius) {\n                result.push({ point: node.point, docIDs: Array.from(node.docIDs) });\n            }\n            if (node.left != null) {\n                stack.push({ node: node.left, depth: depth + 1 });\n            }\n            if (node.right != null) {\n                stack.push({ node: node.right, depth: depth + 1 });\n            }\n        }\n        if (sort) {\n            result.sort((a, b) => {\n                const distA = distanceFn(center, a.point);\n                const distB = distanceFn(center, b.point);\n                return sort.toLowerCase() === 'asc' ? distA - distB : distB - distA;\n            });\n        }\n        return result;\n    }\n    searchByPolygon(polygon, inclusive = true, sort = null, highPrecision = false) {\n        const stack = [{ node: this.root, depth: 0 }];\n        const result = [];\n        while (stack.length > 0) {\n            const { node, depth } = stack.pop();\n            if (node == null)\n                continue;\n            if (node.left != null) {\n                stack.push({ node: node.left, depth: depth + 1 });\n            }\n            if (node.right != null) {\n                stack.push({ node: node.right, depth: depth + 1 });\n            }\n            const isInsidePolygon = BKDTree.isPointInPolygon(polygon, node.point);\n            if ((isInsidePolygon && inclusive) || (!isInsidePolygon && !inclusive)) {\n                result.push({ point: node.point, docIDs: Array.from(node.docIDs) });\n            }\n        }\n        const centroid = BKDTree.calculatePolygonCentroid(polygon);\n        if (sort) {\n            const distanceFn = highPrecision ? BKDTree.vincentyDistance : BKDTree.haversineDistance;\n            result.sort((a, b) => {\n                const distA = distanceFn(centroid, a.point);\n                const distB = distanceFn(centroid, b.point);\n                return sort.toLowerCase() === 'asc' ? distA - distB : distB - distA;\n            });\n        }\n        return result;\n    }\n    toJSON() {\n        return {\n            root: this.root ? this.root.toJSON() : null\n        };\n    }\n    static fromJSON(json) {\n        const tree = new BKDTree();\n        if (json.root) {\n            tree.root = BKDNode.fromJSON(json.root);\n            tree.buildNodeMap(tree.root);\n        }\n        return tree;\n    }\n    buildNodeMap(node) {\n        if (node == null)\n            return;\n        const pointKey = this.getPointKey(node.point);\n        this.nodeMap.set(pointKey, node);\n        if (node.left) {\n            this.buildNodeMap(node.left);\n        }\n        if (node.right) {\n            this.buildNodeMap(node.right);\n        }\n    }\n    static calculatePolygonCentroid(polygon) {\n        let totalArea = 0;\n        let centroidX = 0;\n        let centroidY = 0;\n        const polygonLength = polygon.length;\n        for (let i = 0, j = polygonLength - 1; i < polygonLength; j = i++) {\n            const xi = polygon[i].lon;\n            const yi = polygon[i].lat;\n            const xj = polygon[j].lon;\n            const yj = polygon[j].lat;\n            const areaSegment = xi * yj - xj * yi;\n            totalArea += areaSegment;\n            centroidX += (xi + xj) * areaSegment;\n            centroidY += (yi + yj) * areaSegment;\n        }\n        totalArea /= 2;\n        const centroidCoordinate = 6 * totalArea;\n        centroidX /= centroidCoordinate;\n        centroidY /= centroidCoordinate;\n        return { lon: centroidX, lat: centroidY };\n    }\n    static isPointInPolygon(polygon, point) {\n        let isInside = false;\n        const x = point.lon;\n        const y = point.lat;\n        const polygonLength = polygon.length;\n        for (let i = 0, j = polygonLength - 1; i < polygonLength; j = i++) {\n            const xi = polygon[i].lon;\n            const yi = polygon[i].lat;\n            const xj = polygon[j].lon;\n            const yj = polygon[j].lat;\n            const intersect = yi > y !== yj > y && x < ((xj - xi) * (y - yi)) / (yj - yi) + xi;\n            if (intersect)\n                isInside = !isInside;\n        }\n        return isInside;\n    }\n    static haversineDistance(coord1, coord2) {\n        const P = Math.PI / 180;\n        const lat1 = coord1.lat * P;\n        const lat2 = coord2.lat * P;\n        const deltaLat = (coord2.lat - coord1.lat) * P;\n        const deltaLon = (coord2.lon - coord1.lon) * P;\n        const a = Math.sin(deltaLat / 2) * Math.sin(deltaLat / 2) +\n            Math.cos(lat1) * Math.cos(lat2) * Math.sin(deltaLon / 2) * Math.sin(deltaLon / 2);\n        const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n        return EARTH_RADIUS * c;\n    }\n    static vincentyDistance(coord1, coord2) {\n        const a = 6378137;\n        const f = 1 / 298.257223563;\n        const b = (1 - f) * a;\n        const P = Math.PI / 180;\n        const lat1 = coord1.lat * P;\n        const lat2 = coord2.lat * P;\n        const deltaLon = (coord2.lon - coord1.lon) * P;\n        const U1 = Math.atan((1 - f) * Math.tan(lat1));\n        const U2 = Math.atan((1 - f) * Math.tan(lat2));\n        const sinU1 = Math.sin(U1);\n        const cosU1 = Math.cos(U1);\n        const sinU2 = Math.sin(U2);\n        const cosU2 = Math.cos(U2);\n        let lambda = deltaLon;\n        let prevLambda;\n        let iterationLimit = 1000;\n        let sinSigma;\n        let cosSigma;\n        let sigma;\n        let sinAlpha;\n        let cos2Alpha;\n        let cos2SigmaM;\n        do {\n            const sinLambda = Math.sin(lambda);\n            const cosLambda = Math.cos(lambda);\n            sinSigma = Math.sqrt(cosU2 * sinLambda * (cosU2 * sinLambda) +\n                (cosU1 * sinU2 - sinU1 * cosU2 * cosLambda) * (cosU1 * sinU2 - sinU1 * cosU2 * cosLambda));\n            if (sinSigma === 0)\n                return 0; // co-incident points\n            cosSigma = sinU1 * sinU2 + cosU1 * cosU2 * cosLambda;\n            sigma = Math.atan2(sinSigma, cosSigma);\n            sinAlpha = (cosU1 * cosU2 * sinLambda) / sinSigma;\n            cos2Alpha = 1 - sinAlpha * sinAlpha;\n            cos2SigmaM = cosSigma - (2 * sinU1 * sinU2) / cos2Alpha;\n            if (isNaN(cos2SigmaM))\n                cos2SigmaM = 0;\n            const C = (f / 16) * cos2Alpha * (4 + f * (4 - 3 * cos2Alpha));\n            prevLambda = lambda;\n            lambda =\n                deltaLon +\n                    (1 - C) *\n                        f *\n                        sinAlpha *\n                        (sigma + C * sinSigma * (cos2SigmaM + C * cosSigma * (-1 + 2 * cos2SigmaM * cos2SigmaM)));\n        } while (Math.abs(lambda - prevLambda) > 1e-12 && --iterationLimit > 0);\n        if (iterationLimit === 0) {\n            return NaN;\n        }\n        const uSquared = (cos2Alpha * (a * a - b * b)) / (b * b);\n        const A = 1 + (uSquared / 16384) * (4096 + uSquared * (-768 + uSquared * (320 - 175 * uSquared)));\n        const B = (uSquared / 1024) * (256 + uSquared * (-128 + uSquared * (74 - 47 * uSquared)));\n        const deltaSigma = B *\n            sinSigma *\n            (cos2SigmaM +\n                (B / 4) *\n                    (cosSigma * (-1 + 2 * cos2SigmaM * cos2SigmaM) -\n                        (B / 6) * cos2SigmaM * (-3 + 4 * sinSigma * sinSigma) * (-3 + 4 * cos2SigmaM * cos2SigmaM)));\n        const s = b * A * (sigma - deltaSigma);\n        return s;\n    }\n}\n//# sourceMappingURL=bkd.js.map","export class BoolNode {\n    true;\n    false;\n    constructor() {\n        this.true = new Set();\n        this.false = new Set();\n    }\n    insert(value, bool) {\n        if (bool) {\n            this.true.add(value);\n        }\n        else {\n            this.false.add(value);\n        }\n    }\n    delete(value, bool) {\n        if (bool) {\n            this.true.delete(value);\n        }\n        else {\n            this.false.delete(value);\n        }\n    }\n    getSize() {\n        return this.true.size + this.false.size;\n    }\n    toJSON() {\n        return {\n            true: Array.from(this.true),\n            false: Array.from(this.false)\n        };\n    }\n    static fromJSON(json) {\n        const node = new BoolNode();\n        node.true = new Set(json.true);\n        node.false = new Set(json.false);\n        return node;\n    }\n}\n//# sourceMappingURL=bool.js.map","import { createError } from '../errors.js';\nexport function prioritizeTokenScores(arrays, boost, threshold = 0, keywordsCount) {\n    if (boost === 0) {\n        throw createError('INVALID_BOOST_VALUE');\n    }\n    const tokenScoresMap = new Map();\n    const mapsLength = arrays.length;\n    for (let i = 0; i < mapsLength; i++) {\n        const arr = arrays[i];\n        const entriesLength = arr.length;\n        for (let j = 0; j < entriesLength; j++) {\n            const [token, score] = arr[j];\n            const boostScore = score * boost;\n            const oldScore = tokenScoresMap.get(token)?.[0];\n            if (oldScore !== undefined) {\n                tokenScoresMap.set(token, [oldScore * 1.5 + boostScore, (tokenScoresMap?.get(token)?.[1] || 0) + 1]);\n            }\n            else {\n                tokenScoresMap.set(token, [boostScore, 1]);\n            }\n        }\n    }\n    const tokenScores = [];\n    for (const tokenScoreEntry of tokenScoresMap.entries()) {\n        tokenScores.push([tokenScoreEntry[0], tokenScoreEntry[1][0]]);\n    }\n    const results = tokenScores.sort((a, b) => b[1] - a[1]);\n    // If threshold is 1, it means we will return all the results with at least one search term,\n    // prioritizing the ones that contains more search terms (fuzzy match)\n    if (threshold === 1) {\n        return results;\n    }\n    // For threshold = 0 when keywordsCount is 1 (single term search),\n    // we return all matches since they automatically contain 100% of keywords\n    if (threshold === 0 && keywordsCount === 1) {\n        return results;\n    }\n    // Prepare keywords count tracking for threshold handling\n    const allResults = results.length;\n    const tokenScoreWithKeywordsCount = [];\n    for (const tokenScoreEntry of tokenScoresMap.entries()) {\n        tokenScoreWithKeywordsCount.push([tokenScoreEntry[0], tokenScoreEntry[1][0], tokenScoreEntry[1][1]]);\n    }\n    // Find the index of the last result with all keywords.\n    // Order the documents by the number of keywords they contain, and then by the score.\n    const keywordsPerToken = tokenScoreWithKeywordsCount.sort((a, b) => {\n        // Compare by the third element, higher numbers first\n        if (a[2] > b[2])\n            return -1;\n        if (a[2] < b[2])\n            return 1;\n        // If the third elements are equal, compare by the second element, higher numbers first\n        if (a[1] > b[1])\n            return -1;\n        if (a[1] < b[1])\n            return 1;\n        // If both the second and third elements are equal, consider the elements equal\n        return 0;\n    });\n    let lastTokenWithAllKeywords = undefined;\n    for (let i = 0; i < allResults; i++) {\n        if (keywordsPerToken[i][2] === keywordsCount) {\n            lastTokenWithAllKeywords = i;\n        }\n        else {\n            break;\n        }\n    }\n    // If no results had all the keywords, either bail out earlier or normalize\n    if (typeof lastTokenWithAllKeywords === 'undefined') {\n        if (threshold === 0) {\n            return [];\n        }\n        lastTokenWithAllKeywords = 0;\n    }\n    const keywordsPerTokenLength = keywordsPerToken.length;\n    const resultsWithIdAndScore = new Array(keywordsPerTokenLength);\n    for (let i = 0; i < keywordsPerTokenLength; i++) {\n        resultsWithIdAndScore[i] = [keywordsPerToken[i][0], keywordsPerToken[i][1]];\n    }\n    // If threshold is 0, it means we will only return all the results that contains ALL the search terms (exact match)\n    if (threshold === 0) {\n        return resultsWithIdAndScore.slice(0, lastTokenWithAllKeywords + 1);\n    }\n    // If the threshold is between 0 and 1, we will return all the results that contains at least the threshold of search terms\n    // For example, if threshold is 0.5, we will return all the results that contains at least 50% of the search terms\n    // (fuzzy match with a minimum threshold)\n    const thresholdLength = lastTokenWithAllKeywords + Math.ceil((threshold * 100 * (allResults - lastTokenWithAllKeywords)) / 100);\n    return resultsWithIdAndScore.slice(0, Math.min(allResults, thresholdLength));\n}\nexport function BM25(tf, matchingCount, docsCount, fieldLength, averageFieldLength, { k, b, d }) {\n    const idf = Math.log(1 + (docsCount - matchingCount + 0.5) / (matchingCount + 0.5));\n    return (idf * (d + tf * (k + 1))) / (tf + k * (1 - b + (b * fieldLength) / averageFieldLength));\n}\n//# sourceMappingURL=algorithms.js.map","export const DEFAULT_SIMILARITY = 0.8;\nexport class VectorIndex {\n    size;\n    vectors = new Map();\n    constructor(size) {\n        this.size = size;\n    }\n    add(internalDocumentId, value) {\n        if (!(value instanceof Float32Array)) {\n            value = new Float32Array(value);\n        }\n        const magnitude = getMagnitude(value, this.size);\n        this.vectors.set(internalDocumentId, [magnitude, value]);\n    }\n    remove(internalDocumentId) {\n        this.vectors.delete(internalDocumentId);\n    }\n    find(vector, similarity, whereFiltersIDs) {\n        if (!(vector instanceof Float32Array)) {\n            vector = new Float32Array(vector);\n        }\n        const results = findSimilarVectors(vector, whereFiltersIDs, this.vectors, this.size, similarity);\n        return results;\n    }\n    toJSON() {\n        const vectors = [];\n        for (const [id, [magnitude, vector]] of this.vectors) {\n            vectors.push([id, [magnitude, Array.from(vector)]]);\n        }\n        return {\n            size: this.size,\n            vectors,\n        };\n    }\n    static fromJSON(json) {\n        const raw = json;\n        const index = new VectorIndex(raw.size);\n        for (const [id, [magnitude, vector]] of raw.vectors) {\n            index.vectors.set(id, [magnitude, new Float32Array(vector)]);\n        }\n        return index;\n    }\n}\nexport function getMagnitude(vector, vectorLength) {\n    let magnitude = 0;\n    for (let i = 0; i < vectorLength; i++) {\n        magnitude += vector[i] * vector[i];\n    }\n    return Math.sqrt(magnitude);\n}\n// @todo: Write plugins for Node and Browsers to use parallel computation for this function\nexport function findSimilarVectors(targetVector, keys, vectors, length, threshold) {\n    const targetMagnitude = getMagnitude(targetVector, length);\n    const similarVectors = [];\n    const base = keys ? keys : vectors.keys();\n    for (const vectorId of base) {\n        const entry = vectors.get(vectorId);\n        if (!entry) {\n            continue;\n        }\n        const magnitude = entry[0];\n        const vector = entry[1];\n        let dotProduct = 0;\n        for (let i = 0; i < length; i++) {\n            dotProduct += targetVector[i] * vector[i];\n        }\n        const similarity = dotProduct / (targetMagnitude * magnitude);\n        if (similarity >= threshold) {\n            similarVectors.push([vectorId, similarity]);\n        }\n    }\n    return similarVectors;\n}\n//# sourceMappingURL=vector.js.map","import { createError } from '../errors.js';\nimport { AVLTree } from '../trees/avl.js';\nimport { FlatTree } from '../trees/flat.js';\nimport { RadixTree } from '../trees/radix.js';\nimport { BKDTree } from '../trees/bkd.js';\nimport { BoolNode } from '../trees/bool.js';\nimport { convertDistanceToMeters, setIntersection, setUnion, setDifference } from '../utils.js';\nimport { BM25 } from './algorithms.js';\nimport { getInnerType, getVectorSize, isArrayType, isVectorType } from './defaults.js';\nimport { getInternalDocumentId } from './internal-document-id-store.js';\nimport { VectorIndex } from '../trees/vector.js';\nexport function insertDocumentScoreParameters(index, prop, id, tokens, docsCount) {\n    const internalId = getInternalDocumentId(index.sharedInternalDocumentStore, id);\n    index.avgFieldLength[prop] = ((index.avgFieldLength[prop] ?? 0) * (docsCount - 1) + tokens.length) / docsCount;\n    index.fieldLengths[prop][internalId] = tokens.length;\n    index.frequencies[prop][internalId] = {};\n}\nexport function insertTokenScoreParameters(index, prop, id, tokens, token) {\n    let tokenFrequency = 0;\n    for (const t of tokens) {\n        if (t === token) {\n            tokenFrequency++;\n        }\n    }\n    const internalId = getInternalDocumentId(index.sharedInternalDocumentStore, id);\n    const tf = tokenFrequency / tokens.length;\n    index.frequencies[prop][internalId][token] = tf;\n    if (!(token in index.tokenOccurrences[prop])) {\n        index.tokenOccurrences[prop][token] = 0;\n    }\n    // increase a token counter that may not yet exist\n    index.tokenOccurrences[prop][token] = (index.tokenOccurrences[prop][token] ?? 0) + 1;\n}\nexport function removeDocumentScoreParameters(index, prop, id, docsCount) {\n    const internalId = getInternalDocumentId(index.sharedInternalDocumentStore, id);\n    if (docsCount > 1) {\n        index.avgFieldLength[prop] =\n            (index.avgFieldLength[prop] * docsCount - index.fieldLengths[prop][internalId]) / (docsCount - 1);\n    }\n    else {\n        index.avgFieldLength[prop] = undefined;\n    }\n    index.fieldLengths[prop][internalId] = undefined;\n    index.frequencies[prop][internalId] = undefined;\n}\nexport function removeTokenScoreParameters(index, prop, token) {\n    index.tokenOccurrences[prop][token]--;\n}\nexport function create(orama, sharedInternalDocumentStore, schema, index, prefix = '') {\n    if (!index) {\n        index = {\n            sharedInternalDocumentStore,\n            indexes: {},\n            vectorIndexes: {},\n            searchableProperties: [],\n            searchablePropertiesWithTypes: {},\n            frequencies: {},\n            tokenOccurrences: {},\n            avgFieldLength: {},\n            fieldLengths: {}\n        };\n    }\n    for (const [prop, type] of Object.entries(schema)) {\n        const path = `${prefix}${prefix ? '.' : ''}${prop}`;\n        if (typeof type === 'object' && !Array.isArray(type)) {\n            // Nested\n            create(orama, sharedInternalDocumentStore, type, index, path);\n            continue;\n        }\n        if (isVectorType(type)) {\n            index.searchableProperties.push(path);\n            index.searchablePropertiesWithTypes[path] = type;\n            index.vectorIndexes[path] = {\n                type: 'Vector',\n                node: new VectorIndex(getVectorSize(type)),\n                isArray: false\n            };\n        }\n        else {\n            const isArray = /\\[/.test(type);\n            switch (type) {\n                case 'boolean':\n                case 'boolean[]':\n                    index.indexes[path] = { type: 'Bool', node: new BoolNode(), isArray };\n                    break;\n                case 'number':\n                case 'number[]':\n                    index.indexes[path] = { type: 'AVL', node: new AVLTree(0, []), isArray };\n                    break;\n                case 'string':\n                case 'string[]':\n                    index.indexes[path] = { type: 'Radix', node: new RadixTree(), isArray };\n                    index.avgFieldLength[path] = 0;\n                    index.frequencies[path] = {};\n                    index.tokenOccurrences[path] = {};\n                    index.fieldLengths[path] = {};\n                    break;\n                case 'enum':\n                case 'enum[]':\n                    index.indexes[path] = { type: 'Flat', node: new FlatTree(), isArray };\n                    break;\n                case 'geopoint':\n                    index.indexes[path] = { type: 'BKD', node: new BKDTree(), isArray };\n                    break;\n                default:\n                    throw createError('INVALID_SCHEMA_TYPE', Array.isArray(type) ? 'array' : type, path);\n            }\n            index.searchableProperties.push(path);\n            index.searchablePropertiesWithTypes[path] = type;\n        }\n    }\n    return index;\n}\nfunction insertScalarBuilder(implementation, index, prop, internalId, language, tokenizer, docsCount, options) {\n    return (value) => {\n        const { type, node } = index.indexes[prop];\n        switch (type) {\n            case 'Bool': {\n                node[value ? 'true' : 'false'].add(internalId);\n                break;\n            }\n            case 'AVL': {\n                const avlRebalanceThreshold = options?.avlRebalanceThreshold ?? 1;\n                node.insert(value, internalId, avlRebalanceThreshold);\n                break;\n            }\n            case 'Radix': {\n                const tokens = tokenizer.tokenize(value, language, prop, false);\n                implementation.insertDocumentScoreParameters(index, prop, internalId, tokens, docsCount);\n                for (const token of tokens) {\n                    implementation.insertTokenScoreParameters(index, prop, internalId, tokens, token);\n                    node.insert(token, internalId);\n                }\n                break;\n            }\n            case 'Flat': {\n                node.insert(value, internalId);\n                break;\n            }\n            case 'BKD': {\n                node.insert(value, [internalId]);\n                break;\n            }\n        }\n    };\n}\nexport function insert(implementation, index, prop, id, internalId, value, schemaType, language, tokenizer, docsCount, options) {\n    if (isVectorType(schemaType)) {\n        return insertVector(index, prop, value, id, internalId);\n    }\n    const insertScalar = insertScalarBuilder(implementation, index, prop, internalId, language, tokenizer, docsCount, options);\n    if (!isArrayType(schemaType)) {\n        return insertScalar(value);\n    }\n    const elements = value;\n    const elementsLength = elements.length;\n    for (let i = 0; i < elementsLength; i++) {\n        insertScalar(elements[i]);\n    }\n}\nexport function insertVector(index, prop, value, id, internalDocumentId) {\n    index.vectorIndexes[prop].node.add(internalDocumentId, value);\n}\nfunction removeScalar(implementation, index, prop, id, internalId, value, schemaType, language, tokenizer, docsCount) {\n    if (isVectorType(schemaType)) {\n        index.vectorIndexes[prop].node.remove(internalId);\n        return true;\n    }\n    const { type, node } = index.indexes[prop];\n    switch (type) {\n        case 'AVL': {\n            node.removeDocument(value, internalId);\n            return true;\n        }\n        case 'Bool': {\n            node[value ? 'true' : 'false'].delete(internalId);\n            return true;\n        }\n        case 'Radix': {\n            const tokens = tokenizer.tokenize(value, language, prop);\n            implementation.removeDocumentScoreParameters(index, prop, id, docsCount);\n            for (const token of tokens) {\n                implementation.removeTokenScoreParameters(index, prop, token);\n                node.removeDocumentByWord(token, internalId);\n            }\n            return true;\n        }\n        case 'Flat': {\n            node.removeDocument(internalId, value);\n            return true;\n        }\n        case 'BKD': {\n            node.removeDocByID(value, internalId);\n            return false;\n        }\n    }\n}\nexport function remove(implementation, index, prop, id, internalId, value, schemaType, language, tokenizer, docsCount) {\n    if (!isArrayType(schemaType)) {\n        return removeScalar(implementation, index, prop, id, internalId, value, schemaType, language, tokenizer, docsCount);\n    }\n    const innerSchemaType = getInnerType(schemaType);\n    const elements = value;\n    const elementsLength = elements.length;\n    for (let i = 0; i < elementsLength; i++) {\n        removeScalar(implementation, index, prop, id, internalId, elements[i], innerSchemaType, language, tokenizer, docsCount);\n    }\n    return true;\n}\nexport function calculateResultScores(index, prop, term, ids, docsCount, bm25Relevance, resultsMap, boostPerProperty, whereFiltersIDs, keywordMatchesMap) {\n    const documentIDs = Array.from(ids);\n    const avgFieldLength = index.avgFieldLength[prop];\n    const fieldLengths = index.fieldLengths[prop];\n    const oramaOccurrences = index.tokenOccurrences[prop];\n    const oramaFrequencies = index.frequencies[prop];\n    // oramaOccurrences[term] can be undefined, 0, string, or { [k: string]: number }\n    const termOccurrences = typeof oramaOccurrences[term] === 'number' ? (oramaOccurrences[term] ?? 0) : 0;\n    // Calculate TF-IDF value for each term, in each document, for each index.\n    const documentIDsLength = documentIDs.length;\n    for (let k = 0; k < documentIDsLength; k++) {\n        const internalId = documentIDs[k];\n        if (whereFiltersIDs && !whereFiltersIDs.has(internalId)) {\n            continue;\n        }\n        // Track keyword matches per property\n        if (!keywordMatchesMap.has(internalId)) {\n            keywordMatchesMap.set(internalId, new Map());\n        }\n        const propertyMatches = keywordMatchesMap.get(internalId);\n        propertyMatches.set(prop, (propertyMatches.get(prop) || 0) + 1);\n        const tf = oramaFrequencies?.[internalId]?.[term] ?? 0;\n        const bm25 = BM25(tf, termOccurrences, docsCount, fieldLengths[internalId], avgFieldLength, bm25Relevance);\n        if (resultsMap.has(internalId)) {\n            resultsMap.set(internalId, resultsMap.get(internalId) + bm25 * boostPerProperty);\n        }\n        else {\n            resultsMap.set(internalId, bm25 * boostPerProperty);\n        }\n    }\n}\nexport function search(index, term, tokenizer, language, propertiesToSearch, exact, tolerance, boost, relevance, docsCount, whereFiltersIDs, threshold = 0) {\n    const tokens = tokenizer.tokenize(term, language);\n    const keywordsCount = tokens.length || 1;\n    // Track keyword matches per document and property\n    const keywordMatchesMap = new Map();\n    // Track which tokens were found in the search\n    const tokenFoundMap = new Map();\n    const resultsMap = new Map();\n    for (const prop of propertiesToSearch) {\n        if (!(prop in index.indexes)) {\n            continue;\n        }\n        const tree = index.indexes[prop];\n        const { type } = tree;\n        if (type !== 'Radix') {\n            throw createError('WRONG_SEARCH_PROPERTY_TYPE', prop);\n        }\n        const boostPerProperty = boost[prop] ?? 1;\n        if (boostPerProperty <= 0) {\n            throw createError('INVALID_BOOST_VALUE', boostPerProperty);\n        }\n        // if the tokenizer returns an empty array, we returns all the documents\n        if (tokens.length === 0 && !term) {\n            tokens.push('');\n        }\n        // Process each token in the search term\n        const tokenLength = tokens.length;\n        for (let i = 0; i < tokenLength; i++) {\n            const token = tokens[i];\n            const searchResult = tree.node.find({ term: token, exact, tolerance });\n            // See if this token was found (for threshold=0 filtering)\n            const termsFound = Object.keys(searchResult);\n            if (termsFound.length > 0) {\n                tokenFoundMap.set(token, true);\n            }\n            // Process each matching term\n            const termsFoundLength = termsFound.length;\n            for (let j = 0; j < termsFoundLength; j++) {\n                const word = termsFound[j];\n                const ids = searchResult[word];\n                calculateResultScores(index, prop, word, ids, docsCount, relevance, resultsMap, boostPerProperty, whereFiltersIDs, keywordMatchesMap);\n            }\n        }\n    }\n    // Convert to array and sort by score\n    const results = Array.from(resultsMap.entries())\n        .map(([id, score]) => [id, score])\n        .sort((a, b) => b[1] - a[1]);\n    if (results.length === 0) {\n        return [];\n    }\n    // If threshold is 1, return all results\n    if (threshold === 1) {\n        return results;\n    }\n    // For threshold=0, check if all tokens were found\n    if (threshold === 0) {\n        // Quick return for single tokens - already validated\n        if (keywordsCount === 1) {\n            return results;\n        }\n        // For multiple tokens, verify that ALL tokens were found\n        // If any token wasn't found, return an empty result\n        for (const token of tokens) {\n            if (!tokenFoundMap.get(token)) {\n                return [];\n            }\n        }\n        // Find documents that have all keywords in at least one property\n        const fullMatches = results.filter(([id]) => {\n            const propertyMatches = keywordMatchesMap.get(id);\n            if (!propertyMatches)\n                return false;\n            // Check if any property has all keywords\n            return Array.from(propertyMatches.values()).some((matches) => matches === keywordsCount);\n        });\n        return fullMatches;\n    }\n    // Find documents that have all keywords in at least one property\n    const fullMatches = results.filter(([id]) => {\n        const propertyMatches = keywordMatchesMap.get(id);\n        if (!propertyMatches)\n            return false;\n        // Check if any property has all keywords\n        return Array.from(propertyMatches.values()).some((matches) => matches === keywordsCount);\n    });\n    // If we have full matches and threshold < 1, return full matches plus a percentage of partial matches\n    if (fullMatches.length > 0) {\n        const remainingResults = results.filter(([id]) => !fullMatches.some(([fid]) => fid === id));\n        const additionalResults = Math.ceil(remainingResults.length * threshold);\n        return [...fullMatches, ...remainingResults.slice(0, additionalResults)];\n    }\n    // If no full matches, return all results\n    return results;\n}\nexport function searchByWhereClause(index, tokenizer, filters, language) {\n    // Handle logical operators\n    if ('and' in filters && filters.and && Array.isArray(filters.and)) {\n        const andFilters = filters.and;\n        if (andFilters.length === 0) {\n            return new Set();\n        }\n        const results = andFilters.map((filter) => searchByWhereClause(index, tokenizer, filter, language));\n        return setIntersection(...results);\n    }\n    if ('or' in filters && filters.or && Array.isArray(filters.or)) {\n        const orFilters = filters.or;\n        if (orFilters.length === 0) {\n            return new Set();\n        }\n        const results = orFilters.map((filter) => searchByWhereClause(index, tokenizer, filter, language));\n        // Use reduce to union all sets\n        return results.reduce((acc, set) => setUnion(acc, set), new Set());\n    }\n    if ('not' in filters && filters.not) {\n        const notFilter = filters.not;\n        // Get all document IDs from the internal document store\n        const allDocs = new Set();\n        // Get all document IDs from the internal document store\n        const docsStore = index.sharedInternalDocumentStore;\n        for (let i = 1; i <= docsStore.internalIdToId.length; i++) {\n            allDocs.add(i);\n        }\n        const notResult = searchByWhereClause(index, tokenizer, notFilter, language);\n        return setDifference(allDocs, notResult);\n    }\n    // Handle regular property filters (existing logic)\n    const filterKeys = Object.keys(filters);\n    const filtersMap = filterKeys.reduce((acc, key) => ({\n        [key]: new Set(),\n        ...acc\n    }), {});\n    for (const param of filterKeys) {\n        const operation = filters[param];\n        if (typeof index.indexes[param] === 'undefined') {\n            throw createError('UNKNOWN_FILTER_PROPERTY', param);\n        }\n        const { node, type, isArray } = index.indexes[param];\n        if (type === 'Bool') {\n            const idx = node;\n            const filteredIDs = operation ? idx.true : idx.false;\n            filtersMap[param] = setUnion(filtersMap[param], filteredIDs);\n            continue;\n        }\n        if (type === 'BKD') {\n            let reqOperation;\n            if ('radius' in operation) {\n                reqOperation = 'radius';\n            }\n            else if ('polygon' in operation) {\n                reqOperation = 'polygon';\n            }\n            else {\n                throw new Error(`Invalid operation ${operation}`);\n            }\n            if (reqOperation === 'radius') {\n                const { value, coordinates, unit = 'm', inside = true, highPrecision = false } = operation[reqOperation];\n                const distanceInMeters = convertDistanceToMeters(value, unit);\n                const ids = node.searchByRadius(coordinates, distanceInMeters, inside, undefined, highPrecision);\n                filtersMap[param] = addGeoResult(filtersMap[param], ids);\n            }\n            else {\n                const { coordinates, inside = true, highPrecision = false } = operation[reqOperation];\n                const ids = node.searchByPolygon(coordinates, inside, undefined, highPrecision);\n                filtersMap[param] = addGeoResult(filtersMap[param], ids);\n            }\n            continue;\n        }\n        if (type === 'Radix' && (typeof operation === 'string' || Array.isArray(operation))) {\n            for (const raw of [operation].flat()) {\n                const term = tokenizer.tokenize(raw, language, param);\n                for (const t of term) {\n                    const filteredIDsResults = node.find({ term: t, exact: true });\n                    filtersMap[param] = addFindResult(filtersMap[param], filteredIDsResults);\n                }\n            }\n            continue;\n        }\n        const operationKeys = Object.keys(operation);\n        if (operationKeys.length > 1) {\n            throw createError('INVALID_FILTER_OPERATION', operationKeys.length);\n        }\n        if (type === 'Flat') {\n            const results = new Set(isArray\n                ? node.filterArr(operation)\n                : node.filter(operation));\n            filtersMap[param] = setUnion(filtersMap[param], results);\n            continue;\n        }\n        if (type === 'AVL') {\n            const operationOpt = operationKeys[0];\n            const operationValue = operation[operationOpt];\n            let filteredIDs;\n            switch (operationOpt) {\n                case 'gt': {\n                    filteredIDs = node.greaterThan(operationValue, false);\n                    break;\n                }\n                case 'gte': {\n                    filteredIDs = node.greaterThan(operationValue, true);\n                    break;\n                }\n                case 'lt': {\n                    filteredIDs = node.lessThan(operationValue, false);\n                    break;\n                }\n                case 'lte': {\n                    filteredIDs = node.lessThan(operationValue, true);\n                    break;\n                }\n                case 'eq': {\n                    const ret = node.find(operationValue);\n                    filteredIDs = ret ?? new Set();\n                    break;\n                }\n                case 'between': {\n                    const [min, max] = operationValue;\n                    filteredIDs = node.rangeSearch(min, max);\n                    break;\n                }\n                default:\n                    throw createError('INVALID_FILTER_OPERATION', operationOpt);\n            }\n            filtersMap[param] = setUnion(filtersMap[param], filteredIDs);\n        }\n    }\n    // AND operation: calculate the intersection between all the IDs in filterMap\n    return setIntersection(...Object.values(filtersMap));\n}\nexport function getSearchableProperties(index) {\n    return index.searchableProperties;\n}\nexport function getSearchablePropertiesWithTypes(index) {\n    return index.searchablePropertiesWithTypes;\n}\nexport function load(sharedInternalDocumentStore, raw) {\n    const { indexes: rawIndexes, vectorIndexes: rawVectorIndexes, searchableProperties, searchablePropertiesWithTypes, frequencies, tokenOccurrences, avgFieldLength, fieldLengths } = raw;\n    const indexes = {};\n    const vectorIndexes = {};\n    for (const prop of Object.keys(rawIndexes)) {\n        const { node, type, isArray } = rawIndexes[prop];\n        switch (type) {\n            case 'Radix':\n                indexes[prop] = {\n                    type: 'Radix',\n                    node: RadixTree.fromJSON(node),\n                    isArray\n                };\n                break;\n            case 'Flat':\n                indexes[prop] = {\n                    type: 'Flat',\n                    node: FlatTree.fromJSON(node),\n                    isArray\n                };\n                break;\n            case 'AVL':\n                indexes[prop] = {\n                    type: 'AVL',\n                    node: AVLTree.fromJSON(node),\n                    isArray\n                };\n                break;\n            case 'BKD':\n                indexes[prop] = {\n                    type: 'BKD',\n                    node: BKDTree.fromJSON(node),\n                    isArray\n                };\n                break;\n            case 'Bool':\n                indexes[prop] = {\n                    type: 'Bool',\n                    node: BoolNode.fromJSON(node),\n                    isArray\n                };\n                break;\n            default:\n                indexes[prop] = rawIndexes[prop];\n        }\n    }\n    for (const idx of Object.keys(rawVectorIndexes)) {\n        vectorIndexes[idx] = {\n            type: 'Vector',\n            isArray: false,\n            node: VectorIndex.fromJSON(rawVectorIndexes[idx])\n        };\n    }\n    return {\n        sharedInternalDocumentStore,\n        indexes,\n        vectorIndexes,\n        searchableProperties,\n        searchablePropertiesWithTypes,\n        frequencies,\n        tokenOccurrences,\n        avgFieldLength,\n        fieldLengths\n    };\n}\nexport function save(index) {\n    const { indexes, vectorIndexes, searchableProperties, searchablePropertiesWithTypes, frequencies, tokenOccurrences, avgFieldLength, fieldLengths } = index;\n    const dumpVectorIndexes = {};\n    for (const idx of Object.keys(vectorIndexes)) {\n        dumpVectorIndexes[idx] = vectorIndexes[idx].node.toJSON();\n    }\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    const savedIndexes = {};\n    for (const name of Object.keys(indexes)) {\n        const { type, node, isArray } = indexes[name];\n        if (type === 'Flat' || type === 'Radix' || type === 'AVL' || type === 'BKD' || type === 'Bool') {\n            savedIndexes[name] = {\n                type,\n                node: node.toJSON(),\n                isArray\n            };\n        }\n        else {\n            savedIndexes[name] = indexes[name];\n            savedIndexes[name].node = savedIndexes[name].node.toJSON();\n        }\n    }\n    return {\n        indexes: savedIndexes,\n        vectorIndexes: dumpVectorIndexes,\n        searchableProperties,\n        searchablePropertiesWithTypes,\n        frequencies,\n        tokenOccurrences,\n        avgFieldLength,\n        fieldLengths\n    };\n}\nexport function createIndex() {\n    return {\n        create,\n        insert,\n        remove,\n        insertDocumentScoreParameters,\n        insertTokenScoreParameters,\n        removeDocumentScoreParameters,\n        removeTokenScoreParameters,\n        calculateResultScores,\n        search,\n        searchByWhereClause,\n        getSearchableProperties,\n        getSearchablePropertiesWithTypes,\n        load,\n        save\n    };\n}\nfunction addGeoResult(set, ids) {\n    if (!set) {\n        set = new Set();\n    }\n    const idsLength = ids.length;\n    for (let i = 0; i < idsLength; i++) {\n        const entry = ids[i].docIDs;\n        const idsLength = entry.length;\n        for (let j = 0; j < idsLength; j++) {\n            set.add(entry[j]);\n        }\n    }\n    return set;\n}\nfunction addFindResult(set, filteredIDsResults) {\n    if (!set) {\n        set = new Set();\n    }\n    const keys = Object.keys(filteredIDsResults);\n    const keysLength = keys.length;\n    for (let i = 0; i < keysLength; i++) {\n        const ids = filteredIDsResults[keys[i]];\n        const idsLength = ids.length;\n        for (let j = 0; j < idsLength; j++) {\n            set.add(ids[j]);\n        }\n    }\n    return set;\n}\n//# sourceMappingURL=index.js.map","import { createError } from '../errors.js';\nimport { isVectorType } from './defaults.js';\nimport { getInternalDocumentId } from './internal-document-id-store.js';\nimport { safeArrayPush } from '../utils.js';\nimport { getLocale } from './tokenizer/languages.js';\nfunction innerCreate(orama, sharedInternalDocumentStore, schema, sortableDeniedProperties, prefix) {\n    const sorter = {\n        language: orama.tokenizer.language,\n        sharedInternalDocumentStore,\n        enabled: true,\n        isSorted: true,\n        sortableProperties: [],\n        sortablePropertiesWithTypes: {},\n        sorts: {}\n    };\n    for (const [prop, type] of Object.entries(schema)) {\n        const path = `${prefix}${prefix ? '.' : ''}${prop}`;\n        if (sortableDeniedProperties.includes(path)) {\n            continue;\n        }\n        if (typeof type === 'object' && !Array.isArray(type)) {\n            // Nested\n            const ret = innerCreate(orama, sharedInternalDocumentStore, type, sortableDeniedProperties, path);\n            safeArrayPush(sorter.sortableProperties, ret.sortableProperties);\n            sorter.sorts = {\n                ...sorter.sorts,\n                ...ret.sorts\n            };\n            sorter.sortablePropertiesWithTypes = {\n                ...sorter.sortablePropertiesWithTypes,\n                ...ret.sortablePropertiesWithTypes\n            };\n            continue;\n        }\n        if (!isVectorType(type)) {\n            switch (type) {\n                case 'boolean':\n                case 'number':\n                case 'string':\n                    sorter.sortableProperties.push(path);\n                    sorter.sortablePropertiesWithTypes[path] = type;\n                    sorter.sorts[path] = {\n                        docs: new Map(),\n                        orderedDocsToRemove: new Map(),\n                        orderedDocs: [],\n                        type: type\n                    };\n                    break;\n                case 'geopoint':\n                case 'enum':\n                    // We don't allow to sort by enums or geopoints\n                    continue;\n                case 'enum[]':\n                case 'boolean[]':\n                case 'number[]':\n                case 'string[]':\n                    // We don't allow to sort by arrays\n                    continue;\n                default:\n                    throw createError('INVALID_SORT_SCHEMA_TYPE', Array.isArray(type) ? 'array' : type, path);\n            }\n        }\n    }\n    return sorter;\n}\nfunction create(orama, sharedInternalDocumentStore, schema, config) {\n    const isSortEnabled = config?.enabled !== false;\n    if (!isSortEnabled) {\n        return {\n            disabled: true\n        };\n    }\n    return innerCreate(orama, sharedInternalDocumentStore, schema, (config || {}).unsortableProperties || [], '');\n}\nfunction insert(sorter, prop, id, value) {\n    if (!sorter.enabled) {\n        return;\n    }\n    sorter.isSorted = false;\n    const internalId = getInternalDocumentId(sorter.sharedInternalDocumentStore, id);\n    const s = sorter.sorts[prop];\n    // This happen during a document updating\n    // Because we re-use the same internalId\n    // We need to clean-up the data structure before re-inserting\n    // to avoid duplicates in the orderedDocs array\n    // See: https://github.com/oramasearch/orama/issues/629\n    if (s.orderedDocsToRemove.has(internalId)) {\n        ensureOrderedDocsAreDeletedByProperty(sorter, prop);\n    }\n    s.docs.set(internalId, s.orderedDocs.length);\n    s.orderedDocs.push([internalId, value]);\n}\nfunction ensureIsSorted(sorter) {\n    if (sorter.isSorted || !sorter.enabled) {\n        return;\n    }\n    const properties = Object.keys(sorter.sorts);\n    for (const prop of properties) {\n        ensurePropertyIsSorted(sorter, prop);\n    }\n    sorter.isSorted = true;\n}\nfunction stringSort(language, value, d) {\n    return value[1].localeCompare(d[1], getLocale(language));\n}\nfunction numberSort(value, d) {\n    return value[1] - d[1];\n}\nfunction booleanSort(value, d) {\n    return d[1] ? -1 : 1;\n}\nfunction ensurePropertyIsSorted(sorter, prop) {\n    const s = sorter.sorts[prop];\n    let predicate;\n    switch (s.type) {\n        case 'string':\n            predicate = stringSort.bind(null, sorter.language);\n            break;\n        case 'number':\n            predicate = numberSort.bind(null);\n            break;\n        case 'boolean':\n            predicate = booleanSort.bind(null);\n            break;\n    }\n    s.orderedDocs.sort(predicate);\n    // Increment position for the greather documents\n    const orderedDocsLength = s.orderedDocs.length;\n    for (let i = 0; i < orderedDocsLength; i++) {\n        const docId = s.orderedDocs[i][0];\n        s.docs.set(docId, i);\n    }\n}\nfunction ensureOrderedDocsAreDeleted(sorter) {\n    const properties = Object.keys(sorter.sorts);\n    for (const prop of properties) {\n        ensureOrderedDocsAreDeletedByProperty(sorter, prop);\n    }\n}\nfunction ensureOrderedDocsAreDeletedByProperty(sorter, prop) {\n    const s = sorter.sorts[prop];\n    if (!s.orderedDocsToRemove.size)\n        return;\n    s.orderedDocs = s.orderedDocs.filter((doc) => !s.orderedDocsToRemove.has(doc[0]));\n    s.orderedDocsToRemove.clear();\n}\nfunction remove(sorter, prop, id) {\n    if (!sorter.enabled) {\n        return;\n    }\n    const s = sorter.sorts[prop];\n    const internalId = getInternalDocumentId(sorter.sharedInternalDocumentStore, id);\n    const index = s.docs.get(internalId);\n    if (!index)\n        return;\n    s.docs.delete(internalId);\n    s.orderedDocsToRemove.set(internalId, true);\n}\nfunction sortBy(sorter, docIds, by) {\n    if (!sorter.enabled) {\n        throw createError('SORT_DISABLED');\n    }\n    const property = by.property;\n    const isDesc = by.order === 'DESC';\n    const s = sorter.sorts[property];\n    if (!s) {\n        throw createError('UNABLE_TO_SORT_ON_UNKNOWN_FIELD', property, sorter.sortableProperties.join(', '));\n    }\n    ensureOrderedDocsAreDeletedByProperty(sorter, property);\n    ensureIsSorted(sorter);\n    docIds.sort((a, b) => {\n        // This sort algorithm works leveraging on\n        // that s.docs is a map of docId -> position\n        // If a document is not indexed, it will be not present in the map\n        const indexOfA = s.docs.get(getInternalDocumentId(sorter.sharedInternalDocumentStore, a[0]));\n        const indexOfB = s.docs.get(getInternalDocumentId(sorter.sharedInternalDocumentStore, b[0]));\n        const isAIndexed = typeof indexOfA !== 'undefined';\n        const isBIndexed = typeof indexOfB !== 'undefined';\n        if (!isAIndexed && !isBIndexed) {\n            return 0;\n        }\n        // unindexed documents are always at the end\n        if (!isAIndexed) {\n            return 1;\n        }\n        if (!isBIndexed) {\n            return -1;\n        }\n        return isDesc ? indexOfB - indexOfA : indexOfA - indexOfB;\n    });\n    return docIds;\n}\nfunction getSortableProperties(sorter) {\n    if (!sorter.enabled) {\n        return [];\n    }\n    return sorter.sortableProperties;\n}\nfunction getSortablePropertiesWithTypes(sorter) {\n    if (!sorter.enabled) {\n        return {};\n    }\n    return sorter.sortablePropertiesWithTypes;\n}\nexport function load(sharedInternalDocumentStore, raw) {\n    const rawDocument = raw;\n    if (!rawDocument.enabled) {\n        return {\n            enabled: false\n        };\n    }\n    const sorts = Object.keys(rawDocument.sorts).reduce((acc, prop) => {\n        const { docs, orderedDocs, type } = rawDocument.sorts[prop];\n        acc[prop] = {\n            docs: new Map(Object.entries(docs).map(([k, v]) => [+k, v])),\n            orderedDocsToRemove: new Map(),\n            orderedDocs,\n            type\n        };\n        return acc;\n    }, {});\n    return {\n        sharedInternalDocumentStore,\n        language: rawDocument.language,\n        sortableProperties: rawDocument.sortableProperties,\n        sortablePropertiesWithTypes: rawDocument.sortablePropertiesWithTypes,\n        sorts,\n        enabled: true,\n        isSorted: rawDocument.isSorted\n    };\n}\nexport function save(sorter) {\n    if (!sorter.enabled) {\n        return {\n            enabled: false\n        };\n    }\n    ensureOrderedDocsAreDeleted(sorter);\n    ensureIsSorted(sorter);\n    const sorts = Object.keys(sorter.sorts).reduce((acc, prop) => {\n        const { docs, orderedDocs, type } = sorter.sorts[prop];\n        acc[prop] = {\n            docs: Object.fromEntries(docs.entries()),\n            orderedDocs,\n            type\n        };\n        return acc;\n    }, {});\n    return {\n        language: sorter.language,\n        sortableProperties: sorter.sortableProperties,\n        sortablePropertiesWithTypes: sorter.sortablePropertiesWithTypes,\n        sorts,\n        enabled: sorter.enabled,\n        isSorted: sorter.isSorted\n    };\n}\nexport function createSorter() {\n    return {\n        create,\n        insert,\n        remove,\n        save,\n        load,\n        sortBy,\n        getSortableProperties,\n        getSortablePropertiesWithTypes\n    };\n}\n//# sourceMappingURL=sorter.js.map","const DIACRITICS_CHARCODE_START = 192;\nconst DIACRITICS_CHARCODE_END = 383;\nconst CHARCODE_REPLACE_MAPPING = [\n    65,\n    65,\n    65,\n    65,\n    65,\n    65,\n    65,\n    67,\n    69,\n    69,\n    69,\n    69,\n    73,\n    73,\n    73,\n    73,\n    69,\n    78,\n    79,\n    79,\n    79,\n    79,\n    79,\n    null,\n    79,\n    85,\n    85,\n    85,\n    85,\n    89,\n    80,\n    115,\n    97,\n    97,\n    97,\n    97,\n    97,\n    97,\n    97,\n    99,\n    101,\n    101,\n    101,\n    101,\n    105,\n    105,\n    105,\n    105,\n    101,\n    110,\n    111,\n    111,\n    111,\n    111,\n    111,\n    null,\n    111,\n    117,\n    117,\n    117,\n    117,\n    121,\n    112,\n    121,\n    65,\n    97,\n    65,\n    97,\n    65,\n    97,\n    67,\n    99,\n    67,\n    99,\n    67,\n    99,\n    67,\n    99,\n    68,\n    100,\n    68,\n    100,\n    69,\n    101,\n    69,\n    101,\n    69,\n    101,\n    69,\n    101,\n    69,\n    101,\n    71,\n    103,\n    71,\n    103,\n    71,\n    103,\n    71,\n    103,\n    72,\n    104,\n    72,\n    104,\n    73,\n    105,\n    73,\n    105,\n    73,\n    105,\n    73,\n    105,\n    73,\n    105,\n    73,\n    105,\n    74,\n    106,\n    75,\n    107,\n    107,\n    76,\n    108,\n    76,\n    108,\n    76,\n    108,\n    76,\n    108,\n    76,\n    108,\n    78,\n    110,\n    78,\n    110,\n    78,\n    110,\n    110,\n    78,\n    110,\n    79,\n    111,\n    79,\n    111,\n    79,\n    111,\n    79,\n    111,\n    82,\n    114,\n    82,\n    114,\n    82,\n    114,\n    83,\n    115,\n    83,\n    115,\n    83,\n    115,\n    83,\n    115,\n    84,\n    116,\n    84,\n    116,\n    84,\n    116,\n    85,\n    117,\n    85,\n    117,\n    85,\n    117,\n    85,\n    117,\n    85,\n    117,\n    85,\n    117,\n    87,\n    119,\n    89,\n    121,\n    89,\n    90,\n    122,\n    90,\n    122,\n    90,\n    122,\n    115\n];\nfunction replaceChar(charCode) {\n    if (charCode < DIACRITICS_CHARCODE_START || charCode > DIACRITICS_CHARCODE_END)\n        return charCode;\n    /* c8 ignore next  */\n    return CHARCODE_REPLACE_MAPPING[charCode - DIACRITICS_CHARCODE_START] || charCode;\n}\nexport function replaceDiacritics(str) {\n    const stringCharCode = [];\n    for (let idx = 0; idx < str.length; idx++) {\n        stringCharCode[idx] = replaceChar(str.charCodeAt(idx));\n    }\n    return String.fromCharCode(...stringCharCode);\n}\n//# sourceMappingURL=diacritics.js.map","// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-nocheck\nconst step2List = {\n    ational: 'ate',\n    tional: 'tion',\n    enci: 'ence',\n    anci: 'ance',\n    izer: 'ize',\n    bli: 'ble',\n    alli: 'al',\n    entli: 'ent',\n    eli: 'e',\n    ousli: 'ous',\n    ization: 'ize',\n    ation: 'ate',\n    ator: 'ate',\n    alism: 'al',\n    iveness: 'ive',\n    fulness: 'ful',\n    ousness: 'ous',\n    aliti: 'al',\n    iviti: 'ive',\n    biliti: 'ble',\n    logi: 'log'\n};\nconst step3List = {\n    icate: 'ic',\n    ative: '',\n    alize: 'al',\n    iciti: 'ic',\n    ical: 'ic',\n    ful: '',\n    ness: ''\n};\n// Consonant\nconst c = '[^aeiou]';\n// Vowel\nconst v = '[aeiouy]';\n// Consonant sequence\nconst C = c + '[^aeiouy]*';\n// Vowel sequence\nconst V = v + '[aeiou]*';\n// [C]VC... is m>0\nconst mgr0 = '^(' + C + ')?' + V + C;\n// [C]VC[V] is m=1\nconst meq1 = '^(' + C + ')?' + V + C + '(' + V + ')?$';\n// [C]VCVC... is m>1\nconst mgr1 = '^(' + C + ')?' + V + C + V + C;\n// vowel in stem\nconst s_v = '^(' + C + ')?' + v;\nexport function stemmer(w) {\n    let stem;\n    let suffix;\n    let re;\n    let re2;\n    let re3;\n    let re4;\n    if (w.length < 3) {\n        return w;\n    }\n    const firstch = w.substring(0, 1);\n    if (firstch == 'y') {\n        w = firstch.toUpperCase() + w.substring(1);\n    }\n    re = /^(.+?)(ss|i)es$/;\n    re2 = /^(.+?)([^s])s$/;\n    if (re.test(w)) {\n        w = w.replace(re, '$1$2');\n    }\n    else if (re2.test(w)) {\n        w = w.replace(re2, '$1$2');\n    }\n    re = /^(.+?)eed$/;\n    re2 = /^(.+?)(ed|ing)$/;\n    if (re.test(w)) {\n        const fp = re.exec(w);\n        re = new RegExp(mgr0);\n        if (re.test(fp[1])) {\n            re = /.$/;\n            w = w.replace(re, '');\n        }\n    }\n    else if (re2.test(w)) {\n        const fp = re2.exec(w);\n        stem = fp[1];\n        re2 = new RegExp(s_v);\n        if (re2.test(stem)) {\n            w = stem;\n            re2 = /(at|bl|iz)$/;\n            re3 = new RegExp('([^aeiouylsz])\\\\1$');\n            re4 = new RegExp('^' + C + v + '[^aeiouwxy]$');\n            if (re2.test(w)) {\n                w = w + 'e';\n            }\n            else if (re3.test(w)) {\n                re = /.$/;\n                w = w.replace(re, '');\n            }\n            else if (re4.test(w)) {\n                w = w + 'e';\n            }\n        }\n    }\n    re = /^(.+?)y$/;\n    if (re.test(w)) {\n        const fp = re.exec(w);\n        stem = fp?.[1];\n        re = new RegExp(s_v);\n        if (stem && re.test(stem)) {\n            w = stem + 'i';\n        }\n    }\n    re =\n        /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/;\n    if (re.test(w)) {\n        const fp = re.exec(w);\n        stem = fp?.[1];\n        suffix = fp?.[2];\n        re = new RegExp(mgr0);\n        if (stem && re.test(stem)) {\n            // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n            // @ts-ignore\n            w = stem + step2List[suffix];\n        }\n    }\n    re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/;\n    if (re.test(w)) {\n        const fp = re.exec(w);\n        stem = fp?.[1];\n        suffix = fp?.[2];\n        re = new RegExp(mgr0);\n        // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n        // @ts-ignore\n        if (stem && re.test(stem)) {\n            // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n            // @ts-ignore\n            w = stem + step3List[suffix];\n        }\n    }\n    re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/;\n    re2 = /^(.+?)(s|t)(ion)$/;\n    if (re.test(w)) {\n        const fp = re.exec(w);\n        stem = fp?.[1];\n        re = new RegExp(mgr1);\n        if (stem && re.test(stem)) {\n            w = stem;\n        }\n    }\n    else if (re2.test(w)) {\n        const fp = re2.exec(w);\n        stem = fp?.[1] ?? '' + fp?.[2] ?? '';\n        re2 = new RegExp(mgr1);\n        if (re2.test(stem)) {\n            w = stem;\n        }\n    }\n    re = /^(.+?)e$/;\n    if (re.test(w)) {\n        const fp = re.exec(w);\n        stem = fp?.[1];\n        re = new RegExp(mgr1);\n        re2 = new RegExp(meq1);\n        re3 = new RegExp('^' + C + v + '[^aeiouwxy]$');\n        if (stem && (re.test(stem) || (re2.test(stem) && !re3.test(stem)))) {\n            w = stem;\n        }\n    }\n    re = /ll$/;\n    re2 = new RegExp(mgr1);\n    if (re.test(w) && re2.test(w)) {\n        re = /.$/;\n        w = w.replace(re, '');\n    }\n    if (firstch == 'y') {\n        w = firstch.toLowerCase() + w.substring(1);\n    }\n    return w;\n}\n//# sourceMappingURL=english-stemmer.js.map","import { createError } from '../../errors.js';\nimport { replaceDiacritics } from './diacritics.js';\nimport { SPLITTERS, SUPPORTED_LANGUAGES } from './languages.js';\nimport { stemmer as english } from './english-stemmer.js';\nexport function normalizeToken(prop, token, withCache = true) {\n    const key = `${this.language}:${prop}:${token}`;\n    if (withCache && this.normalizationCache.has(key)) {\n        return this.normalizationCache.get(key);\n    }\n    // Remove stopwords if enabled\n    if (this.stopWords?.includes(token)) {\n        if (withCache) {\n            this.normalizationCache.set(key, '');\n        }\n        return '';\n    }\n    // Apply stemming if enabled\n    if (this.stemmer && !this.stemmerSkipProperties.has(prop)) {\n        token = this.stemmer(token);\n    }\n    token = replaceDiacritics(token);\n    if (withCache) {\n        this.normalizationCache.set(key, token);\n    }\n    return token;\n}\n/* c8 ignore next 10 */\nfunction trim(text) {\n    while (text[text.length - 1] === '') {\n        text.pop();\n    }\n    while (text[0] === '') {\n        text.shift();\n    }\n    return text;\n}\nfunction tokenize(input, language, prop, withCache = true) {\n    if (language && language !== this.language) {\n        throw createError('LANGUAGE_NOT_SUPPORTED', language);\n    }\n    /* c8 ignore next 3 */\n    if (typeof input !== 'string') {\n        return [input];\n    }\n    const normalizeToken = this.normalizeToken.bind(this, prop ?? '');\n    let tokens;\n    if (prop && this.tokenizeSkipProperties.has(prop)) {\n        tokens = [normalizeToken(input, withCache)];\n    }\n    else {\n        const splitRule = SPLITTERS[this.language];\n        tokens = input\n            .toLowerCase()\n            .split(splitRule)\n            .map(t => normalizeToken(t, withCache))\n            .filter(Boolean);\n    }\n    const trimTokens = trim(tokens);\n    if (!this.allowDuplicates) {\n        return Array.from(new Set(trimTokens));\n    }\n    return trimTokens;\n}\nexport function createTokenizer(config = {}) {\n    if (!config.language) {\n        config.language = 'english';\n    }\n    else if (!SUPPORTED_LANGUAGES.includes(config.language)) {\n        throw createError('LANGUAGE_NOT_SUPPORTED', config.language);\n    }\n    // Handle stemming - It is disabled by default\n    let stemmer;\n    if (config.stemming || (config.stemmer && !('stemming' in config))) {\n        if (config.stemmer) {\n            if (typeof config.stemmer !== 'function') {\n                throw createError('INVALID_STEMMER_FUNCTION_TYPE');\n            }\n            stemmer = config.stemmer;\n        }\n        else {\n            if (config.language === 'english') {\n                stemmer = english;\n            }\n            else {\n                throw createError('MISSING_STEMMER', config.language);\n            }\n        }\n    }\n    // Handle stopwords\n    let stopWords;\n    if (config.stopWords !== false) {\n        stopWords = [];\n        if (Array.isArray(config.stopWords)) {\n            stopWords = config.stopWords;\n        }\n        else if (typeof config.stopWords === 'function') {\n            stopWords = config.stopWords(stopWords);\n        }\n        else if (config.stopWords) {\n            throw createError('CUSTOM_STOP_WORDS_MUST_BE_FUNCTION_OR_ARRAY');\n        }\n        // Make sure stopWords is just an array of strings\n        if (!Array.isArray(stopWords)) {\n            throw createError('CUSTOM_STOP_WORDS_MUST_BE_FUNCTION_OR_ARRAY');\n        }\n        for (const s of stopWords) {\n            if (typeof s !== 'string') {\n                throw createError('CUSTOM_STOP_WORDS_MUST_BE_FUNCTION_OR_ARRAY');\n            }\n        }\n    }\n    // Create the tokenizer\n    const tokenizer = {\n        tokenize,\n        language: config.language,\n        stemmer,\n        stemmerSkipProperties: new Set(config.stemmerSkipProperties ? [config.stemmerSkipProperties].flat() : []),\n        tokenizeSkipProperties: new Set(config.tokenizeSkipProperties ? [config.tokenizeSkipProperties].flat() : []),\n        stopWords,\n        allowDuplicates: Boolean(config.allowDuplicates),\n        normalizeToken,\n        normalizationCache: new Map()\n    };\n    tokenizer.tokenize = tokenize.bind(tokenizer);\n    tokenizer.normalizeToken = normalizeToken;\n    return tokenizer;\n}\n//# sourceMappingURL=index.js.map","import { formatElapsedTime, getDocumentIndexId, getDocumentProperties, validateSchema } from '../components/defaults.js';\nimport { createDocumentsStore } from '../components/documents-store.js';\nimport { AVAILABLE_PLUGIN_HOOKS, getAllPluginsByHook } from '../components/plugins.js';\nimport { FUNCTION_COMPONENTS, OBJECT_COMPONENTS, runAfterCreate } from '../components/hooks.js';\nimport { createIndex } from '../components/index.js';\nimport { createInternalDocumentIDStore } from '../components/internal-document-id-store.js';\nimport { createSorter } from '../components/sorter.js';\nimport { createTokenizer } from '../components/tokenizer/index.js';\nimport { createError } from '../errors.js';\nimport { uniqueId } from '../utils.js';\nfunction validateComponents(components) {\n    const defaultComponents = {\n        formatElapsedTime,\n        getDocumentIndexId,\n        getDocumentProperties,\n        validateSchema\n    };\n    for (const rawKey of FUNCTION_COMPONENTS) {\n        const key = rawKey;\n        if (components[key]) {\n            if (typeof components[key] !== 'function') {\n                throw createError('COMPONENT_MUST_BE_FUNCTION', key);\n            }\n        }\n        else {\n            // @ts-expect-error TSC is unable to resolve this\n            components[key] = defaultComponents[key];\n        }\n    }\n    for (const rawKey of Object.keys(components)) {\n        if (!OBJECT_COMPONENTS.includes(rawKey) && !FUNCTION_COMPONENTS.includes(rawKey)) {\n            throw createError('UNSUPPORTED_COMPONENT', rawKey);\n        }\n    }\n}\nexport function create({ schema, sort, language, components, id, plugins }) {\n    if (!components) {\n        components = {};\n    }\n    for (const plugin of plugins ?? []) {\n        if (!('getComponents' in plugin)) {\n            continue;\n        }\n        if (typeof plugin.getComponents !== 'function') {\n            continue;\n        }\n        const pluginComponents = plugin.getComponents(schema);\n        const keys = Object.keys(pluginComponents);\n        for (const key of keys) {\n            if (components[key]) {\n                throw createError('PLUGIN_COMPONENT_CONFLICT', key, plugin.name);\n            }\n        }\n        components = {\n            ...components,\n            ...pluginComponents\n        };\n    }\n    if (!id) {\n        id = uniqueId();\n    }\n    let tokenizer = components.tokenizer;\n    let index = components.index;\n    let documentsStore = components.documentsStore;\n    let sorter = components.sorter;\n    if (!tokenizer) {\n        // Use the default tokenizer\n        tokenizer = createTokenizer({ language: language ?? 'english' });\n    }\n    else if (!tokenizer.tokenize) {\n        // If there is no tokenizer function, we assume this is a TokenizerConfig\n        tokenizer = createTokenizer(tokenizer);\n    }\n    else {\n        const customTokenizer = tokenizer;\n        tokenizer = customTokenizer;\n    }\n    if (components.tokenizer && language) {\n        // Accept language only if a tokenizer is not provided\n        throw createError('NO_LANGUAGE_WITH_CUSTOM_TOKENIZER');\n    }\n    const internalDocumentStore = createInternalDocumentIDStore();\n    index ||= createIndex();\n    sorter ||= createSorter();\n    documentsStore ||= createDocumentsStore();\n    // Validate all other components\n    validateComponents(components);\n    // Assign only recognized components and hooks\n    const { getDocumentProperties, getDocumentIndexId, validateSchema, formatElapsedTime } = components;\n    const orama = {\n        data: {},\n        caches: {},\n        schema,\n        tokenizer,\n        index,\n        sorter,\n        documentsStore,\n        internalDocumentIDStore: internalDocumentStore,\n        getDocumentProperties,\n        getDocumentIndexId,\n        validateSchema,\n        beforeInsert: [],\n        afterInsert: [],\n        beforeRemove: [],\n        afterRemove: [],\n        beforeUpdate: [],\n        afterUpdate: [],\n        beforeUpsert: [],\n        afterUpsert: [],\n        beforeSearch: [],\n        afterSearch: [],\n        beforeInsertMultiple: [],\n        afterInsertMultiple: [],\n        beforeRemoveMultiple: [],\n        afterRemoveMultiple: [],\n        beforeUpdateMultiple: [],\n        afterUpdateMultiple: [],\n        beforeUpsertMultiple: [],\n        afterUpsertMultiple: [],\n        afterCreate: [],\n        formatElapsedTime,\n        id,\n        plugins,\n        version: getVersion()\n    };\n    orama.data = {\n        index: orama.index.create(orama, internalDocumentStore, schema),\n        docs: orama.documentsStore.create(orama, internalDocumentStore),\n        sorting: orama.sorter.create(orama, internalDocumentStore, schema, sort)\n    };\n    for (const hook of AVAILABLE_PLUGIN_HOOKS) {\n        orama[hook] = (orama[hook] ?? []).concat(getAllPluginsByHook(orama, hook));\n    }\n    const afterCreate = orama['afterCreate'];\n    if (afterCreate) {\n        runAfterCreate(afterCreate, orama);\n    }\n    return orama;\n}\nfunction getVersion() {\n    return '{{VERSION}}';\n}\n//# sourceMappingURL=create.js.map","export function getByID(db, id) {\n    return db.documentsStore.get(db.data.docs, id);\n}\nexport function count(db) {\n    return db.documentsStore.count(db.data.docs);\n}\n//# sourceMappingURL=docs.js.map","import { isArrayType, isGeoPointType, isVectorType } from '../components.js';\nimport { isAsyncFunction, sleep } from '../utils.js';\nimport { runMultipleHook, runSingleHook } from '../components/hooks.js';\nimport { createError } from '../errors.js';\nimport { getInternalDocumentId } from '../components/internal-document-id-store.js';\nexport function insert(orama, doc, language, skipHooks, options) {\n    const errorProperty = orama.validateSchema(doc, orama.schema);\n    if (errorProperty) {\n        throw createError('SCHEMA_VALIDATION_FAILURE', errorProperty);\n    }\n    const asyncNeeded = isAsyncFunction(orama.beforeInsert) ||\n        isAsyncFunction(orama.afterInsert) ||\n        isAsyncFunction(orama.index.beforeInsert) ||\n        isAsyncFunction(orama.index.insert) ||\n        isAsyncFunction(orama.index.afterInsert);\n    if (asyncNeeded) {\n        return innerInsertAsync(orama, doc, language, skipHooks, options);\n    }\n    return innerInsertSync(orama, doc, language, skipHooks, options);\n}\nconst ENUM_TYPE = new Set(['enum', 'enum[]']);\nconst STRING_NUMBER_TYPE = new Set(['string', 'number']);\nasync function innerInsertAsync(orama, doc, language, skipHooks, options) {\n    const { index, docs } = orama.data;\n    const id = orama.getDocumentIndexId(doc);\n    if (typeof id !== 'string') {\n        throw createError('DOCUMENT_ID_MUST_BE_STRING', typeof id);\n    }\n    const internalId = getInternalDocumentId(orama.internalDocumentIDStore, id);\n    if (!orama.documentsStore.store(docs, id, internalId, doc)) {\n        throw createError('DOCUMENT_ALREADY_EXISTS', id);\n    }\n    const docsCount = orama.documentsStore.count(docs);\n    if (!skipHooks) {\n        await runSingleHook(orama.beforeInsert, orama, id, doc);\n    }\n    const indexableProperties = orama.index.getSearchableProperties(index);\n    const indexablePropertiesWithTypes = orama.index.getSearchablePropertiesWithTypes(index);\n    const indexableValues = orama.getDocumentProperties(doc, indexableProperties);\n    for (const [key, value] of Object.entries(indexableValues)) {\n        if (typeof value === 'undefined')\n            continue;\n        const actualType = typeof value;\n        const expectedType = indexablePropertiesWithTypes[key];\n        validateDocumentProperty(actualType, expectedType, key, value);\n    }\n    await indexAndSortDocument(orama, id, indexableProperties, indexableValues, docsCount, language, doc, options);\n    if (!skipHooks) {\n        await runSingleHook(orama.afterInsert, orama, id, doc);\n    }\n    return id;\n}\nfunction innerInsertSync(orama, doc, language, skipHooks, options) {\n    const { index, docs } = orama.data;\n    const id = orama.getDocumentIndexId(doc);\n    if (typeof id !== 'string') {\n        throw createError('DOCUMENT_ID_MUST_BE_STRING', typeof id);\n    }\n    const internalId = getInternalDocumentId(orama.internalDocumentIDStore, id);\n    if (!orama.documentsStore.store(docs, id, internalId, doc)) {\n        throw createError('DOCUMENT_ALREADY_EXISTS', id);\n    }\n    const docsCount = orama.documentsStore.count(docs);\n    if (!skipHooks) {\n        runSingleHook(orama.beforeInsert, orama, id, doc);\n    }\n    const indexableProperties = orama.index.getSearchableProperties(index);\n    const indexablePropertiesWithTypes = orama.index.getSearchablePropertiesWithTypes(index);\n    const indexableValues = orama.getDocumentProperties(doc, indexableProperties);\n    for (const [key, value] of Object.entries(indexableValues)) {\n        if (typeof value === 'undefined')\n            continue;\n        const actualType = typeof value;\n        const expectedType = indexablePropertiesWithTypes[key];\n        validateDocumentProperty(actualType, expectedType, key, value);\n    }\n    indexAndSortDocumentSync(orama, id, indexableProperties, indexableValues, docsCount, language, doc, options);\n    if (!skipHooks) {\n        runSingleHook(orama.afterInsert, orama, id, doc);\n    }\n    return id;\n}\nfunction validateDocumentProperty(actualType, expectedType, key, value) {\n    if (isGeoPointType(expectedType) &&\n        typeof value === 'object' &&\n        typeof value.lon === 'number' &&\n        typeof value.lat === 'number') {\n        return;\n    }\n    if (isVectorType(expectedType) && Array.isArray(value))\n        return;\n    if (isArrayType(expectedType) && Array.isArray(value))\n        return;\n    if (ENUM_TYPE.has(expectedType) && STRING_NUMBER_TYPE.has(actualType))\n        return;\n    if (actualType !== expectedType) {\n        throw createError('INVALID_DOCUMENT_PROPERTY', key, expectedType, actualType);\n    }\n}\nasync function indexAndSortDocument(orama, id, indexableProperties, indexableValues, docsCount, language, doc, options) {\n    for (const prop of indexableProperties) {\n        const value = indexableValues[prop];\n        if (typeof value === 'undefined')\n            continue;\n        const expectedType = orama.index.getSearchablePropertiesWithTypes(orama.data.index)[prop];\n        await orama.index.beforeInsert?.(orama.data.index, prop, id, value, expectedType, language, orama.tokenizer, docsCount);\n        const internalId = orama.internalDocumentIDStore.idToInternalId.get(id);\n        await orama.index.insert(orama.index, orama.data.index, prop, id, internalId, value, expectedType, language, orama.tokenizer, docsCount, options);\n        await orama.index.afterInsert?.(orama.data.index, prop, id, value, expectedType, language, orama.tokenizer, docsCount);\n    }\n    const sortableProperties = orama.sorter.getSortableProperties(orama.data.sorting);\n    const sortableValues = orama.getDocumentProperties(doc, sortableProperties);\n    for (const prop of sortableProperties) {\n        const value = sortableValues[prop];\n        if (typeof value === 'undefined')\n            continue;\n        const expectedType = orama.sorter.getSortablePropertiesWithTypes(orama.data.sorting)[prop];\n        orama.sorter.insert(orama.data.sorting, prop, id, value, expectedType, language);\n    }\n}\nfunction indexAndSortDocumentSync(orama, id, indexableProperties, indexableValues, docsCount, language, doc, options) {\n    for (const prop of indexableProperties) {\n        const value = indexableValues[prop];\n        if (typeof value === 'undefined')\n            continue;\n        const expectedType = orama.index.getSearchablePropertiesWithTypes(orama.data.index)[prop];\n        const internalDocumentId = getInternalDocumentId(orama.internalDocumentIDStore, id);\n        orama.index.beforeInsert?.(orama.data.index, prop, id, value, expectedType, language, orama.tokenizer, docsCount);\n        orama.index.insert(orama.index, orama.data.index, prop, id, internalDocumentId, value, expectedType, language, orama.tokenizer, docsCount, options);\n        orama.index.afterInsert?.(orama.data.index, prop, id, value, expectedType, language, orama.tokenizer, docsCount);\n    }\n    const sortableProperties = orama.sorter.getSortableProperties(orama.data.sorting);\n    const sortableValues = orama.getDocumentProperties(doc, sortableProperties);\n    for (const prop of sortableProperties) {\n        const value = sortableValues[prop];\n        if (typeof value === 'undefined')\n            continue;\n        const expectedType = orama.sorter.getSortablePropertiesWithTypes(orama.data.sorting)[prop];\n        orama.sorter.insert(orama.data.sorting, prop, id, value, expectedType, language);\n    }\n}\nexport function insertMultiple(orama, docs, batchSize, language, skipHooks, timeout) {\n    const asyncNeeded = isAsyncFunction(orama.afterInsertMultiple) ||\n        isAsyncFunction(orama.beforeInsertMultiple) ||\n        isAsyncFunction(orama.index.beforeInsert) ||\n        isAsyncFunction(orama.index.insert) ||\n        isAsyncFunction(orama.index.afterInsert);\n    if (asyncNeeded) {\n        return innerInsertMultipleAsync(orama, docs, batchSize, language, skipHooks, timeout);\n    }\n    return innerInsertMultipleSync(orama, docs, batchSize, language, skipHooks, timeout);\n}\nasync function innerInsertMultipleAsync(orama, docs, batchSize = 1000, language, skipHooks, timeout = 0) {\n    const ids = [];\n    const processNextBatch = async (startIndex) => {\n        const endIndex = Math.min(startIndex + batchSize, docs.length);\n        const batch = docs.slice(startIndex, endIndex);\n        for (const doc of batch) {\n            const options = { avlRebalanceThreshold: batch.length };\n            const id = await insert(orama, doc, language, skipHooks, options);\n            ids.push(id);\n        }\n        return endIndex;\n    };\n    const processAllBatches = async () => {\n        let currentIndex = 0;\n        while (currentIndex < docs.length) {\n            const startTime = Date.now();\n            currentIndex = await processNextBatch(currentIndex);\n            if (timeout > 0) {\n                const elapsedTime = Date.now() - startTime;\n                const waitTime = timeout - elapsedTime;\n                if (waitTime > 0) {\n                    sleep(waitTime);\n                }\n            }\n        }\n    };\n    await processAllBatches();\n    if (!skipHooks) {\n        await runMultipleHook(orama.afterInsertMultiple, orama, docs);\n    }\n    return ids;\n}\nfunction innerInsertMultipleSync(orama, docs, batchSize = 1000, language, skipHooks, timeout = 0) {\n    const ids = [];\n    let i = 0;\n    function processNextBatch() {\n        const batch = docs.slice(i * batchSize, (i + 1) * batchSize);\n        if (batch.length === 0)\n            return false;\n        for (const doc of batch) {\n            const options = { avlRebalanceThreshold: batch.length };\n            const id = insert(orama, doc, language, skipHooks, options);\n            ids.push(id);\n        }\n        i++;\n        return true;\n    }\n    function processAllBatches() {\n        const startTime = Date.now();\n        // eslint-disable-next-line no-constant-condition\n        while (true) {\n            const hasMoreBatches = processNextBatch();\n            if (!hasMoreBatches)\n                break;\n            if (timeout > 0) {\n                const elapsedTime = Date.now() - startTime;\n                if (elapsedTime >= timeout) {\n                    const remainingTime = timeout - (elapsedTime % timeout);\n                    if (remainingTime > 0) {\n                        sleep(remainingTime);\n                    }\n                }\n            }\n        }\n    }\n    processAllBatches();\n    if (!skipHooks) {\n        runMultipleHook(orama.afterInsertMultiple, orama, docs);\n    }\n    return ids;\n}\nexport function innerInsertMultiple(orama, docs, batchSize, language, skipHooks, timeout) {\n    const asyncNeeded = isAsyncFunction(orama.beforeInsert) ||\n        isAsyncFunction(orama.afterInsert) ||\n        isAsyncFunction(orama.index.beforeInsert) ||\n        isAsyncFunction(orama.index.insert) ||\n        isAsyncFunction(orama.index.afterInsert);\n    if (asyncNeeded) {\n        return innerInsertMultipleAsync(orama, docs, batchSize, language, skipHooks, timeout);\n    }\n    return innerInsertMultipleSync(orama, docs, batchSize, language, skipHooks, timeout);\n}\n//# sourceMappingURL=insert.js.map","import { runMultipleHook, runSingleHook } from '../components/hooks.js';\nimport { getDocumentIdFromInternalId, getInternalDocumentId } from '../components/internal-document-id-store.js';\nimport { isAsyncFunction } from '../utils.js';\nexport function remove(orama, id, language, skipHooks) {\n    const asyncNeeded = isAsyncFunction(orama.index.beforeRemove) ||\n        isAsyncFunction(orama.index.remove) ||\n        isAsyncFunction(orama.index.afterRemove);\n    if (asyncNeeded) {\n        return removeAsync(orama, id, language, skipHooks);\n    }\n    return removeSync(orama, id, language, skipHooks);\n}\nasync function removeAsync(orama, id, language, skipHooks) {\n    let result = true;\n    const { index, docs } = orama.data;\n    const doc = orama.documentsStore.get(docs, id);\n    if (!doc) {\n        return false;\n    }\n    const internalId = getInternalDocumentId(orama.internalDocumentIDStore, id);\n    const docId = getDocumentIdFromInternalId(orama.internalDocumentIDStore, internalId);\n    const docsCount = orama.documentsStore.count(docs);\n    if (!skipHooks) {\n        await runSingleHook(orama.beforeRemove, orama, docId);\n    }\n    const indexableProperties = orama.index.getSearchableProperties(index);\n    const indexablePropertiesWithTypes = orama.index.getSearchablePropertiesWithTypes(index);\n    const values = orama.getDocumentProperties(doc, indexableProperties);\n    for (const prop of indexableProperties) {\n        const value = values[prop];\n        if (typeof value === 'undefined') {\n            continue;\n        }\n        const schemaType = indexablePropertiesWithTypes[prop];\n        await orama.index.beforeRemove?.(orama.data.index, prop, docId, value, schemaType, language, orama.tokenizer, docsCount);\n        if (!(await orama.index.remove(orama.index, orama.data.index, prop, id, internalId, value, schemaType, language, orama.tokenizer, docsCount))) {\n            result = false;\n        }\n        await orama.index.afterRemove?.(orama.data.index, prop, docId, value, schemaType, language, orama.tokenizer, docsCount);\n    }\n    const sortableProperties = await orama.sorter.getSortableProperties(orama.data.sorting);\n    const sortableValues = await orama.getDocumentProperties(doc, sortableProperties);\n    for (const prop of sortableProperties) {\n        if (typeof sortableValues[prop] === 'undefined') {\n            continue;\n        }\n        orama.sorter.remove(orama.data.sorting, prop, id);\n    }\n    if (!skipHooks) {\n        await runSingleHook(orama.afterRemove, orama, docId);\n    }\n    orama.documentsStore.remove(orama.data.docs, id, internalId);\n    return result;\n}\nfunction removeSync(orama, id, language, skipHooks) {\n    let result = true;\n    const { index, docs } = orama.data;\n    const doc = orama.documentsStore.get(docs, id);\n    if (!doc) {\n        return false;\n    }\n    const internalId = getInternalDocumentId(orama.internalDocumentIDStore, id);\n    const docId = getDocumentIdFromInternalId(orama.internalDocumentIDStore, internalId);\n    const docsCount = orama.documentsStore.count(docs);\n    if (!skipHooks) {\n        runSingleHook(orama.beforeRemove, orama, docId);\n    }\n    const indexableProperties = orama.index.getSearchableProperties(index);\n    const indexablePropertiesWithTypes = orama.index.getSearchablePropertiesWithTypes(index);\n    const values = orama.getDocumentProperties(doc, indexableProperties);\n    for (const prop of indexableProperties) {\n        const value = values[prop];\n        if (typeof value === 'undefined') {\n            continue;\n        }\n        const schemaType = indexablePropertiesWithTypes[prop];\n        orama.index.beforeRemove?.(orama.data.index, prop, docId, value, schemaType, language, orama.tokenizer, docsCount);\n        if (!orama.index.remove(orama.index, orama.data.index, prop, id, internalId, value, schemaType, language, orama.tokenizer, docsCount)) {\n            result = false;\n        }\n        orama.index.afterRemove?.(orama.data.index, prop, docId, value, schemaType, language, orama.tokenizer, docsCount);\n    }\n    const sortableProperties = orama.sorter.getSortableProperties(orama.data.sorting);\n    const sortableValues = orama.getDocumentProperties(doc, sortableProperties);\n    for (const prop of sortableProperties) {\n        if (typeof sortableValues[prop] === 'undefined') {\n            continue;\n        }\n        orama.sorter.remove(orama.data.sorting, prop, id);\n    }\n    if (!skipHooks) {\n        runSingleHook(orama.afterRemove, orama, docId);\n    }\n    orama.documentsStore.remove(orama.data.docs, id, internalId);\n    return result;\n}\nexport function removeMultiple(orama, ids, batchSize, language, skipHooks) {\n    const asyncNeeded = isAsyncFunction(orama.index.beforeRemove) ||\n        isAsyncFunction(orama.index.remove) ||\n        isAsyncFunction(orama.index.afterRemove) ||\n        isAsyncFunction(orama.beforeRemoveMultiple) ||\n        isAsyncFunction(orama.afterRemoveMultiple);\n    if (asyncNeeded) {\n        return removeMultipleAsync(orama, ids, batchSize, language, skipHooks);\n    }\n    return removeMultipleSync(orama, ids, batchSize, language, skipHooks);\n}\nasync function removeMultipleAsync(orama, ids, batchSize, language, skipHooks) {\n    let result = 0;\n    if (!batchSize) {\n        batchSize = 1000;\n    }\n    const docIdsForHooks = skipHooks\n        ? []\n        : ids.map((id) => getDocumentIdFromInternalId(orama.internalDocumentIDStore, getInternalDocumentId(orama.internalDocumentIDStore, id)));\n    if (!skipHooks) {\n        await runMultipleHook(orama.beforeRemoveMultiple, orama, docIdsForHooks);\n    }\n    await new Promise((resolve, reject) => {\n        let i = 0;\n        async function _removeMultiple() {\n            const batch = ids.slice(i * batchSize, ++i * batchSize);\n            if (!batch.length) {\n                return resolve();\n            }\n            for (const doc of batch) {\n                try {\n                    if (await remove(orama, doc, language, skipHooks)) {\n                        result++;\n                    }\n                }\n                catch (err) {\n                    reject(err);\n                }\n            }\n            setTimeout(_removeMultiple, 0);\n        }\n        setTimeout(_removeMultiple, 0);\n    });\n    if (!skipHooks) {\n        await runMultipleHook(orama.afterRemoveMultiple, orama, docIdsForHooks);\n    }\n    return result;\n}\nfunction removeMultipleSync(orama, ids, batchSize, language, skipHooks) {\n    let result = 0;\n    if (!batchSize) {\n        batchSize = 1000;\n    }\n    const docIdsForHooks = skipHooks\n        ? []\n        : ids.map((id) => getDocumentIdFromInternalId(orama.internalDocumentIDStore, getInternalDocumentId(orama.internalDocumentIDStore, id)));\n    if (!skipHooks) {\n        runMultipleHook(orama.beforeRemoveMultiple, orama, docIdsForHooks);\n    }\n    let i = 0;\n    function _removeMultipleSync() {\n        const batch = ids.slice(i * batchSize, ++i * batchSize);\n        if (!batch.length)\n            return;\n        for (const doc of batch) {\n            if (remove(orama, doc, language, skipHooks)) {\n                result++;\n            }\n        }\n        setTimeout(_removeMultipleSync, 0);\n    }\n    _removeMultipleSync();\n    if (!skipHooks) {\n        runMultipleHook(orama.afterRemoveMultiple, orama, docIdsForHooks);\n    }\n    return result;\n}\n//# sourceMappingURL=remove.js.map","export const MODE_FULLTEXT_SEARCH = 'fulltext';\nexport const MODE_HYBRID_SEARCH = 'hybrid';\nexport const MODE_VECTOR_SEARCH = 'vector';\n//# sourceMappingURL=constants.js.map","import { createError } from '../errors.js';\nimport { getNested } from '../utils.js';\nfunction sortAsc(a, b) {\n    return a[1] - b[1];\n}\nfunction sortDesc(a, b) {\n    return b[1] - a[1];\n}\nfunction sortingPredicateBuilder(order = 'desc') {\n    return order.toLowerCase() === 'asc' ? sortAsc : sortDesc;\n}\nexport function getFacets(orama, results, facetsConfig) {\n    const facets = {};\n    const allIDs = results.map(([id]) => id);\n    const allDocs = orama.documentsStore.getMultiple(orama.data.docs, allIDs);\n    const facetKeys = Object.keys(facetsConfig);\n    const properties = orama.index.getSearchablePropertiesWithTypes(orama.data.index);\n    for (const facet of facetKeys) {\n        let values;\n        // Hack to guarantee the same order of ranges as specified by the user\n        // TODO: Revisit this once components land\n        if (properties[facet] === 'number') {\n            const { ranges } = facetsConfig[facet];\n            const rangesLength = ranges.length;\n            const tmp = Array.from({ length: rangesLength });\n            for (let i = 0; i < rangesLength; i++) {\n                const range = ranges[i];\n                tmp[i] = [`${range.from}-${range.to}`, 0];\n            }\n            values = Object.fromEntries(tmp);\n        }\n        facets[facet] = {\n            count: 0,\n            values: values ?? {}\n        };\n    }\n    const allDocsLength = allDocs.length;\n    for (let i = 0; i < allDocsLength; i++) {\n        const doc = allDocs[i];\n        for (const facet of facetKeys) {\n            const facetValue = facet.includes('.') ? getNested(doc, facet) : doc[facet];\n            const propertyType = properties[facet];\n            const facetValues = facets[facet].values;\n            switch (propertyType) {\n                case 'number': {\n                    const ranges = facetsConfig[facet].ranges;\n                    calculateNumberFacetBuilder(ranges, facetValues)(facetValue);\n                    break;\n                }\n                case 'number[]': {\n                    const alreadyInsertedValues = new Set();\n                    const ranges = facetsConfig[facet].ranges;\n                    const calculateNumberFacet = calculateNumberFacetBuilder(ranges, facetValues, alreadyInsertedValues);\n                    for (const v of facetValue) {\n                        calculateNumberFacet(v);\n                    }\n                    break;\n                }\n                case 'boolean':\n                case 'enum':\n                case 'string': {\n                    calculateBooleanStringOrEnumFacetBuilder(facetValues, propertyType)(facetValue);\n                    break;\n                }\n                case 'boolean[]':\n                case 'enum[]':\n                case 'string[]': {\n                    const alreadyInsertedValues = new Set();\n                    const innerType = propertyType === 'boolean[]' ? 'boolean' : 'string';\n                    const calculateBooleanStringOrEnumFacet = calculateBooleanStringOrEnumFacetBuilder(facetValues, innerType, alreadyInsertedValues);\n                    for (const v of facetValue) {\n                        calculateBooleanStringOrEnumFacet(v);\n                    }\n                    break;\n                }\n                default:\n                    throw createError('FACET_NOT_SUPPORTED', propertyType);\n            }\n        }\n    }\n    // TODO: We are looping again with the same previous keys, should we creat a single loop instead?\n    for (const facet of facetKeys) {\n        const currentFacet = facets[facet];\n        // Count the number of values for each facet\n        currentFacet.count = Object.keys(currentFacet.values).length;\n        // Sort only string-based facets\n        if (properties[facet] === 'string') {\n            const stringFacetDefinition = facetsConfig[facet];\n            const sortingPredicate = sortingPredicateBuilder(stringFacetDefinition.sort);\n            currentFacet.values = Object.fromEntries(Object.entries(currentFacet.values)\n                .sort(sortingPredicate)\n                .slice(stringFacetDefinition.offset ?? 0, stringFacetDefinition.limit ?? 10));\n        }\n    }\n    return facets;\n}\nfunction calculateNumberFacetBuilder(ranges, values, alreadyInsertedValues) {\n    return (facetValue) => {\n        for (const range of ranges) {\n            const value = `${range.from}-${range.to}`;\n            if (alreadyInsertedValues?.has(value)) {\n                continue;\n            }\n            if (facetValue >= range.from && facetValue <= range.to) {\n                if (values[value] === undefined) {\n                    values[value] = 1;\n                }\n                else {\n                    values[value]++;\n                    alreadyInsertedValues?.add(value);\n                }\n            }\n        }\n    };\n}\nfunction calculateBooleanStringOrEnumFacetBuilder(values, propertyType, alreadyInsertedValues) {\n    const defaultValue = propertyType === 'boolean' ? 'false' : '';\n    return (facetValue) => {\n        // String or boolean based facets\n        const value = facetValue?.toString() ?? defaultValue;\n        if (alreadyInsertedValues?.has(value)) {\n            return;\n        }\n        values[value] = (values[value] ?? 0) + 1;\n        alreadyInsertedValues?.add(value);\n    };\n}\n//# sourceMappingURL=facets.js.map","import { createError } from '../errors.js';\nimport { getNested, intersect, safeArrayPush } from '../utils.js';\nimport { getDocumentIdFromInternalId } from './internal-document-id-store.js';\nconst DEFAULT_REDUCE = {\n    reducer: (_, acc, res, index) => {\n        acc[index] = res;\n        return acc;\n    },\n    getInitialValue: (length) => Array.from({ length })\n};\nconst ALLOWED_TYPES = ['string', 'number', 'boolean'];\nexport function getGroups(orama, results, groupBy) {\n    const properties = groupBy.properties;\n    const propertiesLength = properties.length;\n    const schemaProperties = orama.index.getSearchablePropertiesWithTypes(orama.data.index);\n    for (let i = 0; i < propertiesLength; i++) {\n        const property = properties[i];\n        if (typeof schemaProperties[property] === 'undefined') {\n            throw createError('UNKNOWN_GROUP_BY_PROPERTY', property);\n        }\n        if (!ALLOWED_TYPES.includes(schemaProperties[property])) {\n            throw createError('INVALID_GROUP_BY_PROPERTY', property, ALLOWED_TYPES.join(', '), schemaProperties[property]);\n        }\n    }\n    const allIDs = results.map(([id]) => getDocumentIdFromInternalId(orama.internalDocumentIDStore, id));\n    // allDocs is already sorted by the sortBy algorithm\n    // We leverage on that to limit the number of documents returned\n    const allDocs = orama.documentsStore.getMultiple(orama.data.docs, allIDs);\n    const allDocsLength = allDocs.length;\n    const returnedCount = groupBy.maxResult || Number.MAX_SAFE_INTEGER;\n    const listOfValues = [];\n    // We want to understand which documents have which values\n    // and group them by the property and values\n    const g = {};\n    for (let i = 0; i < propertiesLength; i++) {\n        const groupByKey = properties[i];\n        const group = {\n            property: groupByKey,\n            perValue: {}\n        };\n        const values = new Set();\n        for (let j = 0; j < allDocsLength; j++) {\n            const doc = allDocs[j];\n            const value = getNested(doc, groupByKey);\n            // we don't want to consider undefined values\n            if (typeof value === 'undefined') {\n                continue;\n            }\n            const keyValue = typeof value !== 'boolean' ? value : '' + value;\n            const perValue = group.perValue[keyValue] ?? {\n                indexes: [],\n                count: 0\n            };\n            if (perValue.count >= returnedCount) {\n                // We stop early because for this value we react the limit\n                continue;\n            }\n            // We use the index to keep track of the original order\n            perValue.indexes.push(j);\n            perValue.count++;\n            group.perValue[keyValue] = perValue;\n            values.add(value);\n        }\n        listOfValues.push(Array.from(values));\n        g[groupByKey] = group;\n    }\n    const combinations = calculateCombination(listOfValues);\n    const combinationsLength = combinations.length;\n    const groups = [];\n    for (let i = 0; i < combinationsLength; i++) {\n        const combination = combinations[i];\n        const combinationLength = combination.length;\n        const group = {\n            values: [],\n            indexes: []\n        };\n        const indexes = [];\n        for (let j = 0; j < combinationLength; j++) {\n            const value = combination[j];\n            const property = properties[j];\n            indexes.push(g[property].perValue[(typeof value !== 'boolean' ? value : '' + value)].indexes);\n            group.values.push(value);\n        }\n        // We leverage on the index to sort the results by the original order\n        group.indexes = intersect(indexes).sort((a, b) => a - b);\n        // don't generate empty groups\n        if (group.indexes.length === 0) {\n            continue;\n        }\n        groups.push(group);\n    }\n    const groupsLength = groups.length;\n    const res = Array.from({ length: groupsLength });\n    for (let i = 0; i < groupsLength; i++) {\n        const group = groups[i];\n        const reduce = (groupBy.reduce || DEFAULT_REDUCE);\n        const docs = group.indexes.map((index) => {\n            return {\n                id: allIDs[index],\n                score: results[index][1],\n                document: allDocs[index]\n            };\n        });\n        const func = reduce.reducer.bind(null, group.values);\n        const initialValue = reduce.getInitialValue(group.indexes.length);\n        const aggregationValue = docs.reduce(func, initialValue);\n        res[i] = {\n            values: group.values,\n            result: aggregationValue\n        };\n    }\n    return res;\n}\nfunction calculateCombination(arrs, index = 0) {\n    if (index + 1 === arrs.length)\n        return arrs[index].map((item) => [item]);\n    const head = arrs[index];\n    const c = calculateCombination(arrs, index + 1);\n    const combinations = [];\n    for (const value of head) {\n        for (const combination of c) {\n            const result = [value];\n            safeArrayPush(result, combination);\n            combinations.push(result);\n        }\n    }\n    return combinations;\n}\n//# sourceMappingURL=groups.js.map","import { getFacets } from '../components/facets.js';\nimport { getGroups } from '../components/groups.js';\nimport { runAfterSearch, runBeforeSearch } from '../components/hooks.js';\nimport { getInternalDocumentId } from '../components/internal-document-id-store.js';\nimport { createError } from '../errors.js';\nimport { getNanosecondsTime, removeVectorsFromHits, sortTokenScorePredicate } from '../utils.js';\nimport { count } from './docs.js';\nimport { fetchDocuments, fetchDocumentsWithDistinct } from './search.js';\nexport function innerFullTextSearch(orama, params, language) {\n    const { term, properties } = params;\n    const index = orama.data.index;\n    // Get searchable string properties\n    let propertiesToSearch = orama.caches['propertiesToSearch'];\n    if (!propertiesToSearch) {\n        const propertiesToSearchWithTypes = orama.index.getSearchablePropertiesWithTypes(index);\n        propertiesToSearch = orama.index.getSearchableProperties(index);\n        propertiesToSearch = propertiesToSearch.filter((prop) => propertiesToSearchWithTypes[prop].startsWith('string'));\n        orama.caches['propertiesToSearch'] = propertiesToSearch;\n    }\n    if (properties && properties !== '*') {\n        for (const prop of properties) {\n            if (!propertiesToSearch.includes(prop)) {\n                throw createError('UNKNOWN_INDEX', prop, propertiesToSearch.join(', '));\n            }\n        }\n        propertiesToSearch = propertiesToSearch.filter((prop) => properties.includes(prop));\n    }\n    // If filters are enabled, we need to get the IDs of the documents that match the filters.\n    const hasFilters = Object.keys(params.where ?? {}).length > 0;\n    let whereFiltersIDs;\n    if (hasFilters) {\n        whereFiltersIDs = orama.index.searchByWhereClause(index, orama.tokenizer, params.where, language);\n    }\n    let uniqueDocsIDs;\n    // We need to perform the search if:\n    // - we have a search term\n    // - or we have properties to search\n    //   in this case, we need to return all the documents that contains at least one of the given properties\n    const threshold = params.threshold !== undefined && params.threshold !== null ? params.threshold : 1;\n    if (term || properties) {\n        const docsCount = count(orama);\n        uniqueDocsIDs = orama.index.search(index, term || '', orama.tokenizer, language, propertiesToSearch, params.exact || false, params.tolerance || 0, params.boost || {}, applyDefault(params.relevance), docsCount, whereFiltersIDs, threshold);\n    }\n    else {\n        // Tokenizer returns empty array and the search term is empty as well.\n        // We return all the documents.\n        const docIds = whereFiltersIDs\n            ? Array.from(whereFiltersIDs)\n            : Object.keys(orama.documentsStore.getAll(orama.data.docs));\n        uniqueDocsIDs = docIds.map((k) => [+k, 0]);\n    }\n    return uniqueDocsIDs;\n}\nexport function fullTextSearch(orama, params, language) {\n    const timeStart = getNanosecondsTime();\n    function performSearchLogic() {\n        const vectorProperties = Object.keys(orama.data.index.vectorIndexes);\n        const shouldCalculateFacets = params.facets && Object.keys(params.facets).length > 0;\n        const { limit = 10, offset = 0, distinctOn, includeVectors = false } = params;\n        const isPreflight = params.preflight === true;\n        let uniqueDocsArray = innerFullTextSearch(orama, params, language);\n        if (params.sortBy) {\n            if (typeof params.sortBy === 'function') {\n                const ids = uniqueDocsArray.map(([id]) => id);\n                const docs = orama.documentsStore.getMultiple(orama.data.docs, ids);\n                const docsWithIdAndScore = docs.map((d, i) => [\n                    uniqueDocsArray[i][0],\n                    uniqueDocsArray[i][1],\n                    d\n                ]);\n                docsWithIdAndScore.sort(params.sortBy);\n                uniqueDocsArray = docsWithIdAndScore.map(([id, score]) => [id, score]);\n            }\n            else {\n                uniqueDocsArray = orama.sorter\n                    .sortBy(orama.data.sorting, uniqueDocsArray, params.sortBy)\n                    .map(([id, score]) => [getInternalDocumentId(orama.internalDocumentIDStore, id), score]);\n            }\n        }\n        else {\n            uniqueDocsArray = uniqueDocsArray.sort(sortTokenScorePredicate);\n        }\n        let results;\n        if (!isPreflight) {\n            results = distinctOn\n                ? fetchDocumentsWithDistinct(orama, uniqueDocsArray, offset, limit, distinctOn)\n                : fetchDocuments(orama, uniqueDocsArray, offset, limit);\n        }\n        const searchResult = {\n            elapsed: {\n                formatted: '',\n                raw: 0\n            },\n            hits: [],\n            count: uniqueDocsArray.length\n        };\n        if (typeof results !== 'undefined') {\n            searchResult.hits = results.filter(Boolean);\n            if (!includeVectors) {\n                removeVectorsFromHits(searchResult, vectorProperties);\n            }\n        }\n        if (shouldCalculateFacets) {\n            const facets = getFacets(orama, uniqueDocsArray, params.facets);\n            searchResult.facets = facets;\n        }\n        if (params.groupBy) {\n            searchResult.groups = getGroups(orama, uniqueDocsArray, params.groupBy);\n        }\n        searchResult.elapsed = orama.formatElapsedTime(getNanosecondsTime() - timeStart);\n        return searchResult;\n    }\n    async function executeSearchAsync() {\n        if (orama.beforeSearch) {\n            await runBeforeSearch(orama.beforeSearch, orama, params, language);\n        }\n        const searchResult = performSearchLogic();\n        if (orama.afterSearch) {\n            await runAfterSearch(orama.afterSearch, orama, params, language, searchResult);\n        }\n        return searchResult;\n    }\n    const asyncNeeded = orama.beforeSearch?.length || orama.afterSearch?.length;\n    if (asyncNeeded) {\n        return executeSearchAsync();\n    }\n    return performSearchLogic();\n}\nexport const defaultBM25Params = {\n    k: 1.2,\n    b: 0.75,\n    d: 0.5\n};\nfunction applyDefault(bm25Relevance) {\n    const r = bm25Relevance ?? {};\n    r.k = r.k ?? defaultBM25Params.k;\n    r.b = r.b ?? defaultBM25Params.b;\n    r.d = r.d ?? defaultBM25Params.d;\n    return r;\n}\n//# sourceMappingURL=search-fulltext.js.map","import { getNanosecondsTime, formatNanoseconds, sortTokenScorePredicate } from '../utils.js';\nimport { getFacets } from '../components/facets.js';\nimport { createError } from '../errors.js';\nimport { getGroups } from '../components/groups.js';\nimport { getDocumentIdFromInternalId } from '../components/internal-document-id-store.js';\nimport { runBeforeSearch, runAfterSearch } from '../components/hooks.js';\nimport { DEFAULT_SIMILARITY } from '../trees/vector.js';\nexport function innerVectorSearch(orama, params, language) {\n    const vector = params.vector;\n    if (vector && (!('value' in vector) || !('property' in vector))) {\n        throw createError('INVALID_VECTOR_INPUT', Object.keys(vector).join(', '));\n    }\n    const vectorIndex = orama.data.index.vectorIndexes[vector.property];\n    const vectorSize = vectorIndex.node.size;\n    if (vector?.value.length !== vectorSize) {\n        if (vector?.property === undefined || vector?.value.length === undefined) {\n            throw createError('INVALID_INPUT_VECTOR', 'undefined', vectorSize, 'undefined');\n        }\n        throw createError('INVALID_INPUT_VECTOR', vector.property, vectorSize, vector.value.length);\n    }\n    const index = orama.data.index;\n    let whereFiltersIDs;\n    const hasFilters = Object.keys(params.where ?? {}).length > 0;\n    if (hasFilters) {\n        whereFiltersIDs = orama.index.searchByWhereClause(index, orama.tokenizer, params.where, language);\n    }\n    return vectorIndex.node.find(vector.value, params.similarity ?? DEFAULT_SIMILARITY, whereFiltersIDs);\n}\nexport function searchVector(orama, params, language = 'english') {\n    const timeStart = getNanosecondsTime();\n    function performSearchLogic() {\n        const results = innerVectorSearch(orama, params, language)\n            .sort(sortTokenScorePredicate);\n        let facetsResults = [];\n        const shouldCalculateFacets = params.facets && Object.keys(params.facets).length > 0;\n        if (shouldCalculateFacets) {\n            const facets = getFacets(orama, results, params.facets);\n            facetsResults = facets;\n        }\n        const vectorProperty = params.vector.property;\n        const includeVectors = params.includeVectors ?? false;\n        const limit = params.limit ?? 10;\n        const offset = params.offset ?? 0;\n        const docs = Array.from({ length: limit });\n        for (let i = 0; i < limit; i++) {\n            const result = results[i + offset];\n            if (!result) {\n                break;\n            }\n            const doc = orama.data.docs.docs[result[0]];\n            if (doc) {\n                if (!includeVectors) {\n                    doc[vectorProperty] = null;\n                }\n                const newDoc = {\n                    id: getDocumentIdFromInternalId(orama.internalDocumentIDStore, result[0]),\n                    score: result[1],\n                    document: doc\n                };\n                docs[i] = newDoc;\n            }\n        }\n        let groups = [];\n        if (params.groupBy) {\n            groups = getGroups(orama, results, params.groupBy);\n        }\n        const timeEnd = getNanosecondsTime();\n        const elapsedTime = timeEnd - timeStart;\n        return {\n            count: results.length,\n            hits: docs.filter(Boolean),\n            elapsed: {\n                raw: Number(elapsedTime),\n                formatted: formatNanoseconds(elapsedTime)\n            },\n            ...(facetsResults ? { facets: facetsResults } : {}),\n            ...(groups ? { groups } : {})\n        };\n    }\n    async function executeSearchAsync() {\n        if (orama.beforeSearch) {\n            await runBeforeSearch(orama.beforeSearch, orama, params, language);\n        }\n        const results = performSearchLogic();\n        if (orama.afterSearch) {\n            await runAfterSearch(orama.afterSearch, orama, params, language, results);\n        }\n        return results;\n    }\n    const asyncNeeded = orama.beforeSearch?.length || orama.afterSearch?.length;\n    if (asyncNeeded) {\n        return executeSearchAsync();\n    }\n    // Sync path\n    return performSearchLogic();\n}\n//# sourceMappingURL=search-vector.js.map","import { getNanosecondsTime, formatNanoseconds, removeVectorsFromHits } from '../utils.js';\nimport { getFacets } from '../components/facets.js';\nimport { getGroups } from '../components/groups.js';\nimport { fetchDocuments } from './search.js';\nimport { innerFullTextSearch } from './search-fulltext.js';\nimport { innerVectorSearch } from './search-vector.js';\nimport { runAfterSearch, runBeforeSearch } from '../components/hooks.js';\nexport function innerHybridSearch(orama, params, language) {\n    const fullTextIDs = minMaxScoreNormalization(innerFullTextSearch(orama, params, language));\n    const vectorIDs = innerVectorSearch(orama, params, language);\n    const hybridWeights = params.hybridWeights;\n    return mergeAndRankResults(fullTextIDs, vectorIDs, params.term ?? '', hybridWeights);\n}\nexport function hybridSearch(orama, params, language) {\n    const timeStart = getNanosecondsTime();\n    function performSearchLogic() {\n        const uniqueTokenScores = innerHybridSearch(orama, params, language);\n        let facetsResults;\n        const shouldCalculateFacets = params.facets && Object.keys(params.facets).length > 0;\n        if (shouldCalculateFacets) {\n            facetsResults = getFacets(orama, uniqueTokenScores, params.facets);\n        }\n        let groups;\n        if (params.groupBy) {\n            groups = getGroups(orama, uniqueTokenScores, params.groupBy);\n        }\n        const offset = params.offset ?? 0;\n        const limit = params.limit ?? 10;\n        const results = fetchDocuments(orama, uniqueTokenScores, offset, limit).filter(Boolean);\n        const timeEnd = getNanosecondsTime();\n        const returningResults = {\n            count: uniqueTokenScores.length,\n            elapsed: {\n                raw: Number(timeEnd - timeStart),\n                formatted: formatNanoseconds(timeEnd - timeStart)\n            },\n            hits: results,\n            ...(facetsResults ? { facets: facetsResults } : {}),\n            ...(groups ? { groups } : {})\n        };\n        const includeVectors = params.includeVectors ?? false;\n        if (!includeVectors) {\n            const vectorProperties = Object.keys(orama.data.index.vectorIndexes);\n            removeVectorsFromHits(returningResults, vectorProperties);\n        }\n        return returningResults;\n    }\n    async function executeSearchAsync() {\n        if (orama.beforeSearch) {\n            await runBeforeSearch(orama.beforeSearch, orama, params, language);\n        }\n        const results = performSearchLogic();\n        if (orama.afterSearch) {\n            await runAfterSearch(orama.afterSearch, orama, params, language, results);\n        }\n        return results;\n    }\n    const asyncNeeded = orama.beforeSearch?.length || orama.afterSearch?.length;\n    if (asyncNeeded) {\n        return executeSearchAsync();\n    }\n    return performSearchLogic();\n}\nfunction extractScore(token) {\n    return token[1];\n}\nfunction minMaxScoreNormalization(results) {\n    // In this case I disabled the `prefer-spread` rule because spread seems to be slower\n    // eslint-disable-next-line prefer-spread\n    const maxScore = Math.max.apply(Math, results.map(extractScore));\n    return results.map(([id, score]) => [id, score / maxScore]);\n}\nfunction normalizeScore(score, maxScore) {\n    return score / maxScore;\n}\nfunction hybridScoreBuilder(textWeight, vectorWeight) {\n    return (textScore, vectorScore) => textScore * textWeight + vectorScore * vectorWeight;\n}\nfunction mergeAndRankResults(textResults, vectorResults, query, hybridWeights) {\n    // eslint-disable-next-line prefer-spread\n    const maxTextScore = Math.max.apply(Math, textResults.map(extractScore));\n    // eslint-disable-next-line prefer-spread\n    const maxVectorScore = Math.max.apply(Math, vectorResults.map(extractScore));\n    const hasHybridWeights = hybridWeights && hybridWeights.text && hybridWeights.vector;\n    const { text: textWeight, vector: vectorWeight } = hasHybridWeights ? hybridWeights : getQueryWeights(query);\n    const mergedResults = new Map();\n    const textResultsLength = textResults.length;\n    const hybridScore = hybridScoreBuilder(textWeight, vectorWeight);\n    for (let i = 0; i < textResultsLength; i++) {\n        const [id, score] = textResults[i];\n        const normalizedScore = normalizeScore(score, maxTextScore);\n        const hybridScoreValue = hybridScore(normalizedScore, 0);\n        mergedResults.set(id, hybridScoreValue);\n    }\n    const vectorResultsLength = vectorResults.length;\n    for (let i = 0; i < vectorResultsLength; i++) {\n        const [resultId, score] = vectorResults[i];\n        const normalizedScore = normalizeScore(score, maxVectorScore);\n        const existingRes = mergedResults.get(resultId) ?? 0;\n        mergedResults.set(resultId, existingRes + hybridScore(0, normalizedScore));\n    }\n    return [...mergedResults].sort((a, b) => b[1] - a[1]);\n}\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction getQueryWeights(query) {\n    // In the next versions of Orama, we will ship a plugin containing a ML model to adjust the weights\n    // based on whether the query is keyword-focused, conceptual, etc.\n    // For now, we just return a fixed value.\n    return {\n        text: 0.5,\n        vector: 0.5\n    };\n}\n//# sourceMappingURL=search-hybrid.js.map","import { getDocumentIdFromInternalId } from '../components/internal-document-id-store.js';\nimport { createError } from '../errors.js';\nimport { getNested } from '../utils.js';\nimport { MODE_FULLTEXT_SEARCH, MODE_HYBRID_SEARCH, MODE_VECTOR_SEARCH } from '../constants.js';\nimport { fullTextSearch } from './search-fulltext.js';\nimport { searchVector } from './search-vector.js';\nimport { hybridSearch } from './search-hybrid.js';\nexport function search(orama, params, language) {\n    const mode = params.mode ?? MODE_FULLTEXT_SEARCH;\n    if (mode === MODE_FULLTEXT_SEARCH) {\n        return fullTextSearch(orama, params, language);\n    }\n    if (mode === MODE_VECTOR_SEARCH) {\n        return searchVector(orama, params);\n    }\n    if (mode === MODE_HYBRID_SEARCH) {\n        return hybridSearch(orama, params);\n    }\n    throw createError('INVALID_SEARCH_MODE', mode);\n}\nexport function fetchDocumentsWithDistinct(orama, uniqueDocsArray, offset, limit, distinctOn) {\n    const docs = orama.data.docs;\n    // Keep track which values we already seen\n    const values = new Map();\n    // We cannot know how many results we will have in the end,\n    // so we need cannot pre-allocate the array.\n    const results = [];\n    const resultIDs = new Set();\n    const uniqueDocsArrayLength = uniqueDocsArray.length;\n    let count = 0;\n    for (let i = 0; i < uniqueDocsArrayLength; i++) {\n        const idAndScore = uniqueDocsArray[i];\n        // If there are no more results, just break the loop\n        if (typeof idAndScore === 'undefined') {\n            continue;\n        }\n        const [id, score] = idAndScore;\n        if (resultIDs.has(id)) {\n            continue;\n        }\n        const doc = orama.documentsStore.get(docs, id);\n        const value = getNested(doc, distinctOn);\n        if (typeof value === 'undefined' || values.has(value)) {\n            continue;\n        }\n        values.set(value, true);\n        count++;\n        // We shouldn't consider the document if it's not in the offset range\n        if (count <= offset) {\n            continue;\n        }\n        results.push({ id: getDocumentIdFromInternalId(orama.internalDocumentIDStore, id), score, document: doc });\n        resultIDs.add(id);\n        // reached the limit, break the loop\n        if (count >= offset + limit) {\n            break;\n        }\n    }\n    return results;\n}\nexport function fetchDocuments(orama, uniqueDocsArray, offset, limit) {\n    const docs = orama.data.docs;\n    const results = Array.from({\n        length: limit\n    });\n    const resultIDs = new Set();\n    // We already have the list of ALL the document IDs containing the search terms.\n    // We loop over them starting from a positional value \"offset\" and ending at \"offset + limit\"\n    // to provide pagination capabilities to the search.\n    for (let i = offset; i < limit + offset; i++) {\n        const idAndScore = uniqueDocsArray[i];\n        // If there are no more results, just break the loop\n        if (typeof idAndScore === 'undefined') {\n            break;\n        }\n        const [id, score] = idAndScore;\n        if (!resultIDs.has(id)) {\n            // We retrieve the full document only AFTER making sure that we really want it.\n            // We never retrieve the full document preventively.\n            const fullDoc = orama.documentsStore.get(docs, id);\n            results[i] = { id: getDocumentIdFromInternalId(orama.internalDocumentIDStore, id), score, document: fullDoc };\n            resultIDs.add(id);\n        }\n    }\n    return results;\n}\n//# sourceMappingURL=search.js.map","export function load(orama, raw) {\n    orama.internalDocumentIDStore.load(orama, raw.internalDocumentIDStore);\n    orama.data.index = orama.index.load(orama.internalDocumentIDStore, raw.index);\n    orama.data.docs = orama.documentsStore.load(orama.internalDocumentIDStore, raw.docs);\n    orama.data.sorting = orama.sorter.load(orama.internalDocumentIDStore, raw.sorting);\n    orama.tokenizer.language = raw.language;\n}\nexport function save(orama) {\n    return {\n        internalDocumentIDStore: orama.internalDocumentIDStore.save(orama.internalDocumentIDStore),\n        index: orama.index.save(orama.data.index),\n        docs: orama.documentsStore.save(orama.data.docs),\n        sorting: orama.sorter.save(orama.data.sorting),\n        language: orama.tokenizer.language\n    };\n}\n//# sourceMappingURL=serialization.js.map","import { runMultipleHook, runSingleHook } from '../components/hooks.js';\nimport { createError } from '../errors.js';\nimport { innerInsertMultiple, insert } from './insert.js';\nimport { remove, removeMultiple } from './remove.js';\nimport { isAsyncFunction } from '../utils.js';\nexport function update(orama, id, doc, language, skipHooks) {\n    const asyncNeeded = isAsyncFunction(orama.afterInsert) ||\n        isAsyncFunction(orama.beforeInsert) ||\n        isAsyncFunction(orama.afterRemove) ||\n        isAsyncFunction(orama.beforeRemove) ||\n        isAsyncFunction(orama.beforeUpdate) ||\n        isAsyncFunction(orama.afterUpdate);\n    if (asyncNeeded) {\n        return updateAsync(orama, id, doc, language, skipHooks);\n    }\n    return updateSync(orama, id, doc, language, skipHooks);\n}\nasync function updateAsync(orama, id, doc, language, skipHooks) {\n    if (!skipHooks && orama.beforeUpdate) {\n        await runSingleHook(orama.beforeUpdate, orama, id);\n    }\n    await remove(orama, id, language, skipHooks);\n    const newId = await insert(orama, doc, language, skipHooks);\n    if (!skipHooks && orama.afterUpdate) {\n        await runSingleHook(orama.afterUpdate, orama, newId);\n    }\n    return newId;\n}\nfunction updateSync(orama, id, doc, language, skipHooks) {\n    if (!skipHooks && orama.beforeUpdate) {\n        runSingleHook(orama.beforeUpdate, orama, id);\n    }\n    remove(orama, id, language, skipHooks);\n    const newId = insert(orama, doc, language, skipHooks);\n    if (!skipHooks && orama.afterUpdate) {\n        runSingleHook(orama.afterUpdate, orama, newId);\n    }\n    return newId;\n}\nexport function updateMultiple(orama, ids, docs, batchSize, language, skipHooks) {\n    const asyncNeeded = isAsyncFunction(orama.afterInsert) ||\n        isAsyncFunction(orama.beforeInsert) ||\n        isAsyncFunction(orama.afterRemove) ||\n        isAsyncFunction(orama.beforeRemove) ||\n        isAsyncFunction(orama.beforeUpdate) ||\n        isAsyncFunction(orama.afterUpdate) ||\n        isAsyncFunction(orama.beforeUpdateMultiple) ||\n        isAsyncFunction(orama.afterUpdateMultiple) ||\n        isAsyncFunction(orama.beforeRemoveMultiple) ||\n        isAsyncFunction(orama.afterRemoveMultiple) ||\n        isAsyncFunction(orama.beforeInsertMultiple) ||\n        isAsyncFunction(orama.afterInsertMultiple);\n    if (asyncNeeded) {\n        return updateMultipleAsync(orama, ids, docs, batchSize, language, skipHooks);\n    }\n    return updateMultipleSync(orama, ids, docs, batchSize, language, skipHooks);\n}\nasync function updateMultipleAsync(orama, ids, docs, batchSize, language, skipHooks) {\n    if (!skipHooks) {\n        await runMultipleHook(orama.beforeUpdateMultiple, orama, ids);\n    }\n    const docsLength = docs.length;\n    for (let i = 0; i < docsLength; i++) {\n        const errorProperty = orama.validateSchema(docs[i], orama.schema);\n        if (errorProperty) {\n            throw createError('SCHEMA_VALIDATION_FAILURE', errorProperty);\n        }\n    }\n    await removeMultiple(orama, ids, batchSize, language, skipHooks);\n    const newIds = await innerInsertMultiple(orama, docs, batchSize, language, skipHooks);\n    if (!skipHooks) {\n        await runMultipleHook(orama.afterUpdateMultiple, orama, newIds);\n    }\n    return newIds;\n}\nfunction updateMultipleSync(orama, ids, docs, batchSize, language, skipHooks) {\n    if (!skipHooks) {\n        runMultipleHook(orama.beforeUpdateMultiple, orama, ids);\n    }\n    const docsLength = docs.length;\n    for (let i = 0; i < docsLength; i++) {\n        const errorProperty = orama.validateSchema(docs[i], orama.schema);\n        if (errorProperty) {\n            throw createError('SCHEMA_VALIDATION_FAILURE', errorProperty);\n        }\n    }\n    removeMultiple(orama, ids, batchSize, language, skipHooks);\n    const newIds = innerInsertMultiple(orama, docs, batchSize, language, skipHooks);\n    if (!skipHooks) {\n        runMultipleHook(orama.afterUpdateMultiple, orama, newIds);\n    }\n    return newIds;\n}\n//# sourceMappingURL=update.js.map","import { runMultipleHook, runSingleHook } from '../components/hooks.js';\nimport { createError } from '../errors.js';\nimport { insert, innerInsertMultiple } from './insert.js';\nimport { update, updateMultiple } from './update.js';\nimport { isAsyncFunction } from '../utils.js';\nexport function upsert(orama, doc, language, skipHooks, options) {\n    const asyncNeeded = isAsyncFunction(orama.afterInsert) ||\n        isAsyncFunction(orama.beforeInsert) ||\n        isAsyncFunction(orama.afterRemove) ||\n        isAsyncFunction(orama.beforeRemove) ||\n        isAsyncFunction(orama.beforeUpdate) ||\n        isAsyncFunction(orama.afterUpdate) ||\n        isAsyncFunction(orama.beforeUpsert) ||\n        isAsyncFunction(orama.afterUpsert) ||\n        isAsyncFunction(orama.index.beforeInsert) ||\n        isAsyncFunction(orama.index.insert) ||\n        isAsyncFunction(orama.index.afterInsert);\n    if (asyncNeeded) {\n        return upsertAsync(orama, doc, language, skipHooks, options);\n    }\n    return upsertSync(orama, doc, language, skipHooks, options);\n}\nasync function upsertAsync(orama, doc, language, skipHooks, options) {\n    const id = orama.getDocumentIndexId(doc);\n    if (typeof id !== 'string') {\n        throw createError('DOCUMENT_ID_MUST_BE_STRING', typeof id);\n    }\n    if (!skipHooks && orama.beforeUpsert) {\n        await runSingleHook(orama.beforeUpsert, orama, id, doc);\n    }\n    // Check if document exists\n    const existingDoc = orama.documentsStore.get(orama.data.docs, id);\n    let resultId;\n    if (existingDoc) {\n        // Document exists, update it\n        resultId = await update(orama, id, doc, language, skipHooks);\n    }\n    else {\n        // Document doesn't exist, insert it\n        resultId = await insert(orama, doc, language, skipHooks, options);\n    }\n    if (!skipHooks && orama.afterUpsert) {\n        await runSingleHook(orama.afterUpsert, orama, resultId, doc);\n    }\n    return resultId;\n}\nfunction upsertSync(orama, doc, language, skipHooks, options) {\n    const id = orama.getDocumentIndexId(doc);\n    if (typeof id !== 'string') {\n        throw createError('DOCUMENT_ID_MUST_BE_STRING', typeof id);\n    }\n    if (!skipHooks && orama.beforeUpsert) {\n        runSingleHook(orama.beforeUpsert, orama, id, doc);\n    }\n    // Check if document exists\n    const existingDoc = orama.documentsStore.get(orama.data.docs, id);\n    let resultId;\n    if (existingDoc) {\n        // Document exists, update it\n        resultId = update(orama, id, doc, language, skipHooks);\n    }\n    else {\n        // Document doesn't exist, insert it\n        resultId = insert(orama, doc, language, skipHooks, options);\n    }\n    if (!skipHooks && orama.afterUpsert) {\n        runSingleHook(orama.afterUpsert, orama, resultId, doc);\n    }\n    return resultId;\n}\nexport function upsertMultiple(orama, docs, batchSize, language, skipHooks) {\n    const asyncNeeded = isAsyncFunction(orama.afterInsert) ||\n        isAsyncFunction(orama.beforeInsert) ||\n        isAsyncFunction(orama.afterRemove) ||\n        isAsyncFunction(orama.beforeRemove) ||\n        isAsyncFunction(orama.beforeUpdate) ||\n        isAsyncFunction(orama.afterUpdate) ||\n        isAsyncFunction(orama.beforeUpsert) ||\n        isAsyncFunction(orama.afterUpsert) ||\n        isAsyncFunction(orama.beforeUpsertMultiple) ||\n        isAsyncFunction(orama.afterUpsertMultiple) ||\n        isAsyncFunction(orama.beforeInsertMultiple) ||\n        isAsyncFunction(orama.afterInsertMultiple) ||\n        isAsyncFunction(orama.beforeUpdateMultiple) ||\n        isAsyncFunction(orama.afterUpdateMultiple) ||\n        isAsyncFunction(orama.beforeRemoveMultiple) ||\n        isAsyncFunction(orama.afterRemoveMultiple) ||\n        isAsyncFunction(orama.index.beforeInsert) ||\n        isAsyncFunction(orama.index.insert) ||\n        isAsyncFunction(orama.index.afterInsert);\n    if (asyncNeeded) {\n        return upsertMultipleAsync(orama, docs, batchSize, language, skipHooks);\n    }\n    return upsertMultipleSync(orama, docs, batchSize, language, skipHooks);\n}\nasync function upsertMultipleAsync(orama, docs, batchSize, language, skipHooks) {\n    if (!skipHooks && orama.beforeUpsertMultiple) {\n        await runMultipleHook(orama.beforeUpsertMultiple, orama, docs);\n    }\n    // Validate all documents first\n    const docsLength = docs.length;\n    for (let i = 0; i < docsLength; i++) {\n        const errorProperty = orama.validateSchema(docs[i], orama.schema);\n        if (errorProperty) {\n            throw createError('SCHEMA_VALIDATION_FAILURE', errorProperty);\n        }\n    }\n    // Separate documents into insert and update arrays\n    const docsToInsert = [];\n    const docsToUpdate = [];\n    const idsToUpdate = [];\n    for (const doc of docs) {\n        const id = orama.getDocumentIndexId(doc);\n        if (typeof id !== 'string') {\n            throw createError('DOCUMENT_ID_MUST_BE_STRING', typeof id);\n        }\n        const existingDoc = orama.documentsStore.get(orama.data.docs, id);\n        if (existingDoc) {\n            docsToUpdate.push(doc);\n            idsToUpdate.push(id);\n        }\n        else {\n            docsToInsert.push(doc);\n        }\n    }\n    // Perform bulk operations\n    const results = [];\n    if (docsToUpdate.length > 0) {\n        const updateResults = await updateMultiple(orama, idsToUpdate, docsToUpdate, batchSize, language, skipHooks);\n        results.push(...updateResults);\n    }\n    if (docsToInsert.length > 0) {\n        const insertResults = await innerInsertMultiple(orama, docsToInsert, batchSize, language, skipHooks);\n        results.push(...insertResults);\n    }\n    if (!skipHooks && orama.afterUpsertMultiple) {\n        await runMultipleHook(orama.afterUpsertMultiple, orama, results);\n    }\n    return results;\n}\nfunction upsertMultipleSync(orama, docs, batchSize, language, skipHooks) {\n    if (!skipHooks && orama.beforeUpsertMultiple) {\n        runMultipleHook(orama.beforeUpsertMultiple, orama, docs);\n    }\n    // Validate all documents first\n    const docsLength = docs.length;\n    for (let i = 0; i < docsLength; i++) {\n        const errorProperty = orama.validateSchema(docs[i], orama.schema);\n        if (errorProperty) {\n            throw createError('SCHEMA_VALIDATION_FAILURE', errorProperty);\n        }\n    }\n    // Separate documents into insert and update arrays\n    const docsToInsert = [];\n    const docsToUpdate = [];\n    const idsToUpdate = [];\n    for (const doc of docs) {\n        const id = orama.getDocumentIndexId(doc);\n        if (typeof id !== 'string') {\n            throw createError('DOCUMENT_ID_MUST_BE_STRING', typeof id);\n        }\n        const existingDoc = orama.documentsStore.get(orama.data.docs, id);\n        if (existingDoc) {\n            docsToUpdate.push(doc);\n            idsToUpdate.push(id);\n        }\n        else {\n            docsToInsert.push(doc);\n        }\n    }\n    // Perform bulk operations\n    const results = [];\n    if (docsToUpdate.length > 0) {\n        const updateResults = updateMultiple(orama, idsToUpdate, docsToUpdate, batchSize, language, skipHooks);\n        results.push(...updateResults);\n    }\n    if (docsToInsert.length > 0) {\n        const insertResults = innerInsertMultiple(orama, docsToInsert, batchSize, language, skipHooks);\n        results.push(...insertResults);\n    }\n    if (!skipHooks && orama.afterUpsertMultiple) {\n        runMultipleHook(orama.afterUpsertMultiple, orama, results);\n    }\n    return results;\n}\n//# sourceMappingURL=upsert.js.map","import { createError } from '../errors.js';\nimport { search } from './search.js';\nconst ORAMA_SECURE_PROXY_PLUGIN_NAME = 'orama-secure-proxy';\nexport class AnswerSession {\n    db;\n    proxy = null;\n    config;\n    abortController = null;\n    lastInteractionParams = null;\n    chatModel = null;\n    conversationID;\n    messages = [];\n    events;\n    initPromise;\n    state = [];\n    constructor(db, config) {\n        this.db = db;\n        this.config = config;\n        this.init();\n        this.messages = config.initialMessages || [];\n        this.events = config.events || {};\n        this.conversationID = config.conversationID || this.generateRandomID();\n    }\n    async ask(query) {\n        await this.initPromise;\n        let output = '';\n        for await (const msg of await this.askStream(query)) {\n            output += msg;\n        }\n        return output;\n    }\n    async askStream(query) {\n        await this.initPromise;\n        return this.fetchAnswer(query);\n    }\n    abortAnswer() {\n        this.abortController?.abort();\n        this.state[this.state.length - 1].aborted = true;\n        this.triggerStateChange();\n    }\n    getMessages() {\n        return this.messages;\n    }\n    clearSession() {\n        this.messages = [];\n        this.state = [];\n    }\n    regenerateLast({ stream = true }) {\n        if (this.state.length === 0 || this.messages.length === 0) {\n            throw new Error('No messages to regenerate');\n        }\n        const isLastMessageAssistant = this.messages.at(-1)?.role === 'assistant';\n        if (!isLastMessageAssistant) {\n            throw createError('ANSWER_SESSION_LAST_MESSAGE_IS_NOT_ASSISTANT');\n        }\n        this.messages.pop();\n        this.state.pop();\n        if (stream) {\n            return this.askStream(this.lastInteractionParams);\n        }\n        return this.ask(this.lastInteractionParams);\n    }\n    async *fetchAnswer(params) {\n        if (!this.chatModel) {\n            throw createError('PLUGIN_SECURE_PROXY_MISSING_CHAT_MODEL');\n        }\n        this.abortController = new AbortController();\n        this.lastInteractionParams = params;\n        const interactionId = this.generateRandomID();\n        this.messages.push({ role: 'user', content: params.term ?? '' });\n        this.state.push({\n            interactionId,\n            aborted: false,\n            loading: true,\n            query: params.term ?? '',\n            response: '',\n            sources: null,\n            translatedQuery: null,\n            error: false,\n            errorMessage: null\n        });\n        const stateIdx = this.state.length - 1;\n        this.addEmptyAssistantMessage();\n        this.triggerStateChange();\n        try {\n            const sources = await search(this.db, params);\n            this.state[stateIdx].sources = sources;\n            this.triggerStateChange();\n            for await (const msg of this.proxy.chatStream({ model: this.chatModel, messages: this.messages })) {\n                yield msg;\n                this.state[stateIdx].response += msg;\n                this.messages.findLast((msg) => msg.role === 'assistant').content += msg;\n                this.triggerStateChange();\n            }\n        }\n        catch (err) {\n            if (err.name === 'AbortError') {\n                this.state[stateIdx].aborted = true;\n            }\n            else {\n                this.state[stateIdx].error = true;\n                this.state[stateIdx].errorMessage = err.toString();\n            }\n            this.triggerStateChange();\n        }\n        this.state[stateIdx].loading = false;\n        this.triggerStateChange();\n        return this.state[stateIdx].response;\n    }\n    generateRandomID(length = 24) {\n        return Array.from({ length }, () => Math.floor(Math.random() * 36).toString(36)).join('');\n    }\n    triggerStateChange() {\n        if (this.events.onStateChange) {\n            this.events.onStateChange(this.state);\n        }\n    }\n    async init() {\n        // eslint-disable-next-line @typescript-eslint/no-this-alias\n        const self = this;\n        async function getPlugin() {\n            return await self.db.plugins.find((plugin) => plugin.name === ORAMA_SECURE_PROXY_PLUGIN_NAME);\n        }\n        const plugin = await getPlugin();\n        if (!plugin) {\n            throw createError('PLUGIN_SECURE_PROXY_NOT_FOUND');\n        }\n        const pluginExtras = plugin.extra;\n        this.proxy = pluginExtras.proxy;\n        if (this.config.systemPrompt) {\n            this.messages.push({ role: 'system', content: this.config.systemPrompt });\n        }\n        if (pluginExtras?.pluginParams?.chat?.model) {\n            this.chatModel = pluginExtras.pluginParams.chat.model;\n        }\n        else {\n            throw createError('PLUGIN_SECURE_PROXY_MISSING_CHAT_MODEL');\n        }\n    }\n    addEmptyAssistantMessage() {\n        this.messages.push({ role: 'assistant', content: '' });\n    }\n}\n//# sourceMappingURL=answer-session.js.map","export { MODE_FULLTEXT_SEARCH, MODE_HYBRID_SEARCH, MODE_VECTOR_SEARCH } from './constants.js';\nexport const kInsertions = Symbol('orama.insertions');\nexport const kRemovals = Symbol('orama.removals');\n//# sourceMappingURL=types.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getActivitiesDB = getActivitiesDB;\nconst orama_1 = require(\"@orama/orama\");\nasync function getActivitiesDB(activities, options = {}) {\n    const { queryFields = ['assay'] } = options;\n    const activitiesDB = await (0, orama_1.create)({\n        schema: {\n            $id: 'string',\n            ...(queryFields.includes('assay') ? { assay: 'string' } : null),\n        },\n    });\n    for (const activity of activities) {\n        let assay = {\n            $id: activity.$id,\n        };\n        assay.assay = activity.data.assay;\n        await (0, orama_1.insert)(activitiesDB, assay);\n    }\n    return activitiesDB;\n}\n//# sourceMappingURL=getActivitiesDB.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getPatentsDB = getPatentsDB;\nconst orama_1 = require(\"@orama/orama\");\nasync function getPatentsDB(patents, options = {}) {\n    const { queryFields = ['title', 'abstract'], abstractsLimit = 1000, callback, } = options;\n    if (patents.length > abstractsLimit) {\n        queryFields.splice(queryFields.indexOf('abstract'), 1);\n    }\n    const patentsDB = await (0, orama_1.create)({\n        schema: {\n            $id: 'string',\n            ...(queryFields.includes('title') ? { title: 'string' } : null),\n            ...(queryFields.includes('abstract') ? { abstract: 'string' } : null),\n            nbCompounds: 'number',\n        },\n    });\n    let lastCallback = Date.now();\n    for (let i = 0; i < patents.length; i++) {\n        const patent = patents[i];\n        if (callback && Date.now() - lastCallback > 1000) {\n            lastCallback = Date.now();\n            await callback('Patent DB creation', i, patents.length);\n        }\n        let article = {\n            $id: patent.$id,\n            ...(queryFields.includes('title')\n                ? { title: patent?.data?.title }\n                : null),\n            ...(queryFields.includes('abstract')\n                ? { abstract: patent?.data?.abstract }\n                : null),\n            nbCompounds: patent.data?.nbCompounds ? patent.data.nbCompounds + 2 : 2,\n        };\n        await (0, orama_1.insert)(patentsDB, article);\n    }\n    return patentsDB;\n}\n//# sourceMappingURL=getPatentsDB.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getPubmedsDB = getPubmedsDB;\nconst orama_1 = require(\"@orama/orama\");\nasync function getPubmedsDB(pubmeds, options = {}) {\n    const { queryFields = ['title', 'abstract', 'meshHeadings'], abstractsLimit = 1000, callback, } = options;\n    if (pubmeds.length > abstractsLimit) {\n        queryFields.splice(queryFields.indexOf('abstract'), 1);\n    }\n    const pubmedsDB = await (0, orama_1.create)({\n        schema: {\n            $ref: 'string',\n            $id: 'string',\n            ...(queryFields.includes('title') ? { title: 'string' } : null),\n            ...(queryFields.includes('abstract') ? { abstract: 'string' } : null),\n            ...(queryFields.includes('meshHeadings')\n                ? { meshHeadings: 'string[]' }\n                : null),\n            nbCompounds: 'number',\n        },\n    });\n    let lastCallback = Date.now();\n    for (let i = 0; i < pubmeds.length; i++) {\n        const pubmed = pubmeds[i];\n        if (callback && Date.now() - lastCallback > 1000) {\n            lastCallback = Date.now();\n            await callback('Pubmed DB creation', i, pubmeds.length);\n        }\n        const meshHeadings = [];\n        for (const meshHeading of pubmed.data.meshHeadings) {\n            if (meshHeading.descriptorName !== undefined) {\n                meshHeadings.push(meshHeading.descriptorName);\n            }\n        }\n        let article = {\n            $id: pubmed.$id,\n            ...(queryFields.includes('title')\n                ? { title: pubmed?.data?.article?.title || '' }\n                : null),\n            ...(queryFields.includes('abstract')\n                ? { abstract: pubmed?.data?.article?.abstract || '' }\n                : null),\n            ...(queryFields.includes('meshHeadings')\n                ? { meshHeadings: meshHeadings || '' }\n                : null),\n            nbCompounds: pubmed.data.compounds.length + 2 || +2,\n        };\n        await (0, orama_1.insert)(pubmedsDB, article);\n    }\n    return pubmedsDB;\n}\n//# sourceMappingURL=getPubmedsDB.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getTaxonomiesDB = getTaxonomiesDB;\nconst orama_1 = require(\"@orama/orama\");\nasync function getTaxonomiesDB(taxonomies, options = {}) {\n    const { queryFields = [\n        'superkingdom',\n        'kingdom',\n        'phylum',\n        'class',\n        'order',\n        'family',\n        'genus',\n        'species',\n    ], } = options;\n    const taxonomiesDB = await (0, orama_1.create)({\n        schema: {\n            $id: 'string',\n            ...(queryFields.includes('superkingdom')\n                ? { superkingdom: 'string' }\n                : null),\n            ...(queryFields.includes('kingdom') ? { kingdom: 'string' } : null),\n            ...(queryFields.includes('phylum') ? { phylum: 'string' } : null),\n            ...(queryFields.includes('class') ? { class: 'string' } : null),\n            ...(queryFields.includes('order') ? { order: 'string' } : null),\n            ...(queryFields.includes('family') ? { family: 'string' } : null),\n            ...(queryFields.includes('genus') ? { genus: 'string' } : null),\n            ...(queryFields.includes('species') ? { species: 'string' } : null),\n        },\n    });\n    for (const taxonomy of taxonomies) {\n        let level = Object.keys(taxonomy);\n        let taxonomyEntry = {\n            $id: taxonomy.dbRef.$id,\n            ...(level.includes('superkingdom')\n                ? { superkingdom: taxonomy.superkingdom }\n                : null),\n            ...(level.includes('kingdom') ? { kingdom: taxonomy.kingdom } : null),\n            ...(level.includes('phylum') ? { phylum: taxonomy.phylum } : null),\n            ...(level.includes('class') ? { class: taxonomy.class } : null),\n            ...(level.includes('order') ? { order: taxonomy.order } : null),\n            ...(level.includes('family') ? { family: taxonomy.family } : null),\n            ...(level.includes('genus') ? { genus: taxonomy.genus } : null),\n            ...(level.includes('species') ? { species: taxonomy.species } : null),\n        };\n        await (0, orama_1.insert)(taxonomiesDB, taxonomyEntry);\n    }\n    return taxonomiesDB;\n}\n//# sourceMappingURL=getTaxonomiesDB.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.searchActivitiesDB = searchActivitiesDB;\nconst orama_1 = require(\"@orama/orama\");\nasync function searchActivitiesDB(activitiesDB, activities, terms = '', options = {}) {\n    const { maxNbEntries = 100, minScore = 0.5, relevance = { k: 1.2, b: 0.75, d: 0.5 }, tolerance = 1, queryFields = ['assay'], } = options;\n    if (terms === '') {\n        throw new Error('terms is empty');\n    }\n    let queryResult = await (0, orama_1.search)(activitiesDB, {\n        term: terms,\n        relevance,\n        properties: queryFields,\n        tolerance,\n        limit: maxNbEntries,\n    });\n    let results = [];\n    for (let result of queryResult.hits) {\n        let id = result.document.$id;\n        let assay = result.document.assay;\n        let activityDocument = activities.find((activity) => {\n            return activity.$id === id && activity.data.assay === assay;\n        });\n        results.push({ ...activityDocument, score: result.score });\n    }\n    results = results.filter((result) => result.score >= minScore);\n    if (results.length > maxNbEntries) {\n        results.length = maxNbEntries;\n    }\n    results.sort((a, b) => b.score - a.score);\n    return results;\n}\n//# sourceMappingURL=searchActivitiesDB.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.searchPatentsDB = searchPatentsDB;\nconst orama_1 = require(\"@orama/orama\");\nasync function searchPatentsDB(patentsDB, patents, terms = '', options = {}) {\n    const { maxNbEntries = 100, minScore = 0.5, relevance = { k: 1.2, b: 0.75, d: 0.5 }, tolerance = 1, queryFields = ['title', 'abstract'], boostFields = {\n        title: 2,\n        abstract: 1,\n    }, abstractsLimit = 1000, } = options;\n    if (patents.length > abstractsLimit) {\n        queryFields.splice(queryFields.indexOf('abstract'), 1);\n    }\n    if (terms === '') {\n        throw new Error('terms is empty');\n    }\n    let queryResult = await (0, orama_1.search)(patentsDB, {\n        term: terms,\n        properties: queryFields,\n        boost: boostFields,\n        relevance,\n        tolerance,\n        limit: maxNbEntries,\n    });\n    queryResult.hits.map((item) => {\n        let nbCompounds = 2;\n        if (item.document.nbCompounds) {\n            nbCompounds = +Number(item.document.nbCompounds);\n        }\n        item.score = item.score / Math.log2(nbCompounds);\n        return item;\n    });\n    let results = [];\n    for (let result of queryResult.hits) {\n        let id = result.document.$id;\n        // to do this could be maybe improved using Map\n        let patentsDocument = patents.find((patent) => patent.$id === id);\n        results.push({ ...patentsDocument, score: result.score });\n    }\n    results = results.filter((result) => result.score >= minScore);\n    if (results.length > maxNbEntries) {\n        results.length = maxNbEntries;\n    }\n    results.sort((a, b) => b.score - a.score);\n    return results;\n}\n//# sourceMappingURL=searchPatentsDB.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.searchPubmedsDB = searchPubmedsDB;\nconst orama_1 = require(\"@orama/orama\");\nasync function searchPubmedsDB(pubmedsDB, pubmeds, terms = '', options = {}) {\n    const { maxNbEntries = 100, minScore = 0.5, relevance = { k: 1.2, b: 0.75, d: 0.5 }, tolerance = 1, queryFields = ['title', 'abstract', 'meshHeadings'], boostFields = {\n        title: 2,\n        abstract: 1,\n        meshHeadings: 1,\n    }, abstractsLimit = 1000, } = options;\n    if (terms === '') {\n        throw new Error('terms is empty');\n    }\n    if (pubmeds.length > abstractsLimit) {\n        queryFields.splice(queryFields.indexOf('abstract'), 1);\n    }\n    let queryResult = await (0, orama_1.search)(pubmedsDB, {\n        term: terms,\n        properties: queryFields,\n        boost: boostFields,\n        relevance,\n        limit: maxNbEntries,\n        tolerance,\n    });\n    queryResult.hits.map((item) => {\n        let nbCompounds = 2;\n        if (item.document.nbCompounds) {\n            nbCompounds = +Number(item.document.nbCompounds);\n        }\n        item.score = item.score / Math.log2(nbCompounds);\n        return item;\n    });\n    let results = [];\n    for (let result of queryResult.hits) {\n        let id = result.document.$id;\n        let pubmedDocument = pubmeds.find((pubmed) => pubmed.$id === id);\n        results.push({ ...pubmedDocument, score: result.score });\n    }\n    results = results.filter((result) => result.score >= minScore);\n    if (results.length > maxNbEntries) {\n        results.length = maxNbEntries;\n    }\n    results.sort((a, b) => b.score - a.score);\n    return results;\n}\n//# sourceMappingURL=searchPubmedsDB.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.searchTaxonomiesDB = searchTaxonomiesDB;\nconst orama_1 = require(\"@orama/orama\");\nasync function searchTaxonomiesDB(taxonomiesDB, taxonomies, terms = '', options = {}) {\n    const { queryFields = [\n        'superkingdom',\n        'kingdom',\n        'phylum',\n        'class',\n        'order',\n        'family',\n        'genus',\n        'species',\n    ], maxNbEntries = 50, minScore = 0.5, tolerance = 1, } = options;\n    if (terms === '') {\n        throw new Error('terms is empty');\n    }\n    let queryResult = await (0, orama_1.search)(taxonomiesDB, {\n        term: terms,\n        properties: queryFields,\n        tolerance,\n        limit: maxNbEntries,\n    });\n    let results = [];\n    for (let result of queryResult.hits) {\n        let keys = Object.keys(result.document);\n        let currentTaxonomy = {};\n        for (let key of keys) {\n            if (key !== '$id') {\n                currentTaxonomy[key] = result.document[key];\n            }\n            else {\n                currentTaxonomy.dbRef = { $id: result.document.$id };\n            }\n        }\n        let taxonomiesDocument = taxonomies.filter((taxonomy) => Object.keys(currentTaxonomy).every((key) => {\n            if (key === 'dbRef') {\n                return currentTaxonomy[key].$id === taxonomy.dbRef.$id;\n            }\n            return currentTaxonomy[key] === taxonomy[key];\n        }));\n        for (let taxonomy of taxonomiesDocument) {\n            taxonomy.score = result.score;\n            results.push(taxonomy);\n        }\n    }\n    results = results.filter((result) => result.score >= minScore);\n    if (results.length > maxNbEntries) {\n        results.length = maxNbEntries;\n    }\n    results.sort((a, b) => b.score - a.score);\n    return results;\n}\n//# sourceMappingURL=searchTaxonomiesDB.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.summarizeEmptyTerms = summarizeEmptyTerms;\nfunction summarizeEmptyTerms(activities, patents, pubmeds, taxonomies, options) {\n    activities = activities.slice();\n    patents = patents.slice();\n    pubmeds = pubmeds.slice();\n    taxonomies = taxonomies.slice();\n    // PATENTS\n    const patentsMaxNbEntries = options?.patents?.maxNbEntries || 100;\n    patents.sort((a, b) => {\n        const nbCompoundsEntryA = a.data?.nbCompounds ? a.data.nbCompounds + 2 : 2;\n        const nbCompoundsEntryB = b.data?.nbCompounds ? b.data.nbCompounds + 2 : 2;\n        return 1 / Math.log2(nbCompoundsEntryB) - 1 / Math.log2(nbCompoundsEntryA);\n    });\n    if (patents.length > patentsMaxNbEntries) {\n        patents.length = patentsMaxNbEntries;\n    }\n    // PUBMEDS\n    const pubmedsMaxNbEntries = options?.pubmeds?.maxNbEntries || 100;\n    pubmeds.sort((a, b) => {\n        const nbCompoundsEntryA = a.data.compounds?.length + 2 || 2;\n        const nbCompoundsEntryB = b.data.compounds?.length + 2 || 2;\n        return 1 / Math.log2(nbCompoundsEntryB) - 1 / Math.log2(nbCompoundsEntryA);\n    });\n    if (pubmeds.length > pubmedsMaxNbEntries) {\n        pubmeds.length = pubmedsMaxNbEntries;\n    }\n    // ACTIVITIES\n    const activitiesMaxNbEntries = options?.activities?.maxNbEntries || 100;\n    if (activities.length > activitiesMaxNbEntries) {\n        activities.length = activitiesMaxNbEntries;\n    }\n    // TAXONOMIES\n    const taxonomiesMaxNbEntries = options?.taxonomies?.maxNbEntries || 50;\n    if (taxonomies.length > taxonomiesMaxNbEntries) {\n        taxonomies.length = activitiesMaxNbEntries;\n    }\n    return { activities, patents, pubmeds, taxonomies };\n}\n//# sourceMappingURL=summarizeEmptyTerms.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActiveOrNaturalSummarizer = void 0;\nconst getActivitiesDB_1 = require(\"./utils/getActivitiesDB\");\nconst getPatentsDB_1 = require(\"./utils/getPatentsDB\");\nconst getPubmedsDB_1 = require(\"./utils/getPubmedsDB\");\nconst getTaxonomiesDB_1 = require(\"./utils/getTaxonomiesDB\");\nconst searchActivitiesDB_1 = require(\"./utils/searchActivitiesDB\");\nconst searchPatentsDB_1 = require(\"./utils/searchPatentsDB\");\nconst searchPubmedsDB_1 = require(\"./utils/searchPubmedsDB\");\nconst searchTaxonomiesDB_1 = require(\"./utils/searchTaxonomiesDB\");\nconst summarizeEmptyTerms_1 = require(\"./utils/summarizeEmptyTerms\");\nclass ActiveOrNaturalSummarizer {\n    /**\n     * @description Summarize the active or natural details with the given terms\n     * @param {Object} activeOrNaturalDetails The active or natural details to summarize\n     * @param {Object} [options={}] The options to use for the search\n     * @param {Object} [options.activities={}] The options to use for the activities search\n     * @param {number} [options.activities.minScore=0.5] - Minimum score for an entry to be returned\n     * @param {number} [options.activities.maxNbEntries=100] - Maximum number of entries to return\n     * @param {object} [options.activities.relevance={ k: 1.2, b: 0.75, d: 0.5 }] - BM25 algorithm {k: Term frequency saturation parameter, b: Length normalization parameter, d:Frequency normalization lower bound}\n     * @param {number} [options.activities.tolerance=1] -Typo Tolerance following the Levenshtein algorithm\n     * @param {string[]} [options.activities.queryFields=['assay']] - Fields to query\n     * @param {Object} [options.taxonomies={}] The options to use for the activities search\n     * @param {number} [options.taxonomies.minScore=0.5] - Minimum score for an entry to be returned\n     * @param {number} [options.taxonomies.maxNbEntries=50] - Maximum number of entries to return\n     * @param {number} [options.taxonomies.tolerance=1] -Typo Tolerance following the Levenshtein algorithm\n     * @param {object} [options.patents={}] - Options for patents\n     * @param {number} [options.patents.abstractsLimit=1000] - If more than this number of abstracts, the search will be done on the without abstracts\n     * @param {number} [options.patents.maxNbEntries=100] - Maximum number of entries to return\n     * @param {number} [options.patents.inScore=0.5] - Minimum score for an entry to be returned\n     * @param {object} [options.patents.relevance={ k: 1.2, b: 0.75, d: 0.5 }] - BM25 algorithm {k: Term frequency saturation parameter, b: Length normalization parameter, d:Frequency normalization lower bound}\n     * @param {number} [options.patents.tolerance=1] -Typo Tolerance following the Levenshtein algorithm\n     * @param {string[]} [options.patents.queryFields=['title', 'abstract']] - Fields to query\n     * @param {object} [options.patents.boostFields={ title: 2, abstract: 1 }] - Fields weights, higher weight means higher importance\n     * @param {object} [options.pubmeds={}] - Options for pubmeds\n     * @param {number} [options.pubmeds.abstractsLimit=1000] - If more than this number of abstracts, the search will be done on the without abstracts\n     * @param {number} [options.pubmeds.minScore=0.5] - Minimum score for an entry to be returned\n     * @param {number} [options.pubmeds.maxNbEntries=100] - Maximum number of entries to return\n     * @param {object} [options.pubmeds.relevance={ k: 1.2, b: 0.75, d: 0.5 }] - BM25 algorithm {k: Term frequency saturation parameter, b: Length normalization parameter, d:Frequency normalization lower bound}\n     * @param {number} [options.pubmeds.tolerance=1] -Typo Tolerance following the Levenshtein algorithm\n     * @param {object} [options.pubmeds.boostFields={ title: 2, abstract: 1, meshHeadings: 1 }]  - Fields weights, higher weight means higher importance\n     * @param {string[]} [options.pubmeds.queryFields=['title', 'abstract', 'meshHeadings']] - Fields to query\n     * @param {(action,current,last)=>{}} [options.callback] - Callback function to call during database creation\n     * @returns\n     */\n    constructor(activeOrNaturalDetails, options = {}) {\n        this.options = options;\n        this.activeOrNaturalDetails = activeOrNaturalDetails;\n        this.activities = activeOrNaturalDetails.data.activities;\n        this.patents = activeOrNaturalDetails.data.patents;\n        this.pubmeds = activeOrNaturalDetails.data.pubmeds;\n        this.taxonomies = activeOrNaturalDetails.data.taxonomies;\n        this.isInitialized = false;\n    }\n    /**\n     * @description Summarize the active or natural details with the given terms\n     * @param {string} terms The terms to search\n     * @returns {Promise<Object>} The summarized active or natural details\n     */\n    async summarize(terms) {\n        if (terms === '') {\n            const { patents, pubmeds, activities } = (0, summarizeEmptyTerms_1.summarizeEmptyTerms)(this.activities, this.patents, this.pubmeds, this.taxonomies, this.options);\n            return {\n                ...this.activeOrNaturalDetails,\n                data: {\n                    ...this.activeOrNaturalDetails.data,\n                    activities,\n                    patents,\n                    pubmeds,\n                },\n            };\n        }\n        if (!this.isInitialized) {\n            if (!this.creatingDB) {\n                this.creatingDB = this.createDB();\n            }\n            await this.creatingDB;\n            this.isInitialized = true;\n            this.creatingDB = undefined;\n        }\n        return {\n            ...this.activeOrNaturalDetails,\n            data: {\n                ...this.activeOrNaturalDetails.data,\n                activities: await (0, searchActivitiesDB_1.searchActivitiesDB)(this.activitiesDB, this.activities, terms, this.options?.activities),\n                patents: await (0, searchPatentsDB_1.searchPatentsDB)(this.patentsDB, this.patents, terms, this.options?.patents),\n                pubmeds: await (0, searchPubmedsDB_1.searchPubmedsDB)(this.pubmedsDB, this.pubmeds, terms, this.options?.pubmeds),\n                taxonomies: await (0, searchTaxonomiesDB_1.searchTaxonomiesDB)(this.taxonomiesDB, this.taxonomies, terms, this.options?.taxonomies),\n            },\n        };\n    }\n    async createDB() {\n        this.pubmedsDB = await (0, getPubmedsDB_1.getPubmedsDB)(this.pubmeds, {\n            callback: this.options.callback,\n            ...this.options.pubmeds,\n        });\n        this.activitiesDB = await (0, getActivitiesDB_1.getActivitiesDB)(this.activities, this.options.activities);\n        this.patentsDB = await (0, getPatentsDB_1.getPatentsDB)(this.patents, {\n            callback: this.options.callback,\n            ...this.options.patents,\n        });\n        this.taxonomiesDB = await (0, getTaxonomiesDB_1.getTaxonomiesDB)(this.taxonomies, this.options.taxonomies);\n    }\n}\nexports.ActiveOrNaturalSummarizer = ActiveOrNaturalSummarizer;\n//# sourceMappingURL=ActiveOrNaturalSummarizer.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.taxonomyRanks = void 0;\nexports.taxonomyRanks = [\n    'superkingdom',\n    'kingdom',\n    'phylum',\n    'class',\n    'order',\n    'family',\n    'genus',\n    'species',\n];\n//# sourceMappingURL=taxonomyRanks.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.taxonomyComparator = taxonomyComparator;\nconst taxonomyRanks_js_1 = require(\"./taxonomyRanks.js\");\n/**\n * @description sort taxonomies by superkingdom, kingdom, phylum, class, order, family, genus, species\n * @param {import('./Taxonomy.js').Taxonomy} a\n * @param {import('./Taxonomy.js').Taxonomy} b\n * @returns {number}\n */\nfunction taxonomyComparator(a, b) {\n    for (const field of taxonomyRanks_js_1.taxonomyRanks) {\n        if (a[field] !== b[field]) {\n            return (a[field] || '').localeCompare(b[field] || '');\n        }\n    }\n    return 0;\n}\n//# sourceMappingURL=taxonomyComparator.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createTaxonomyTree = createTaxonomyTree;\nconst taxonomyRanks_1 = require(\"./taxonomyRanks\");\n/**\n * @description Creates a tree structure from an array of taxonomies.\n *\n * @param {import('./Taxonomy.js').Taxonomy[]} taxonomies - The array of taxonomies to create a tree from.\n * @returns {Object[]} The tree structure.\n */\nfunction createTaxonomyTree(taxonomies, options = {}) {\n    let { rankLimit = '' } = options;\n    rankLimit = rankLimit.toLowerCase();\n    const tree = [];\n    for (let taxonomy of taxonomies) {\n        let reachedRankLimit = false;\n        let current = tree;\n        for (let rank of taxonomyRanks_1.taxonomyRanks) {\n            if (rank === rankLimit) {\n                reachedRankLimit = true;\n            }\n            if (reachedRankLimit && rank !== rankLimit) {\n                break;\n            }\n            const name = taxonomy[rank] || '';\n            let existing = current.find((node) => node.name === name && node.rank === rank);\n            if (!existing) {\n                existing = {\n                    name,\n                    rank,\n                    count: 1,\n                    children: [],\n                };\n                if (rank === 'species' && taxonomy?.dbRef) {\n                    existing.url = taxonomy.dbRef.url;\n                }\n                current.push(existing);\n            }\n            else {\n                existing.count++;\n            }\n            current = existing.children;\n        }\n    }\n    for (let branch of tree) {\n        cleanEmptyBranches(branch);\n        nbTaxonomies(branch);\n    }\n    return tree;\n}\nfunction cleanEmptyBranches(branch) {\n    for (const child of branch.children)\n        cleanEmptyBranches(child);\n    branch.children = branch.children.filter((child) => {\n        // This part is used empty nodes\n        if (child.children.length === 0 && child.name === '') {\n            return false;\n        }\n        // This part is used to remove the children in the lowest rank\n        if (child.children.length === 0 && child.name !== '') {\n            delete child.children;\n        }\n        return true;\n    });\n}\nfunction nbTaxonomies(branch) {\n    branch.nbTaxonomies = 0; // count the current node\n    if (branch.children) {\n        for (let child of branch.children) {\n            nbTaxonomies(child);\n            branch.nbTaxonomies += child.nbTaxonomies;\n        }\n    }\n    else {\n        branch.nbTaxonomies = 1;\n    }\n    return branch.nbTaxonomies;\n}\n//# sourceMappingURL=createTaxonomyTree.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.appendInternals = appendInternals;\nfunction appendInternals(data) {\n    // for each line (internal fragment) we calculate the vertical position\n    // where it should be drawn as well and the maximal number of lines\n    let maxNumberLines = 0;\n    for (let result of data.results) {\n        if (result.internal) {\n            result.slot = assignSlot(result.from, result.to, data.residues.residues);\n            if (result.slot > maxNumberLines)\n                maxNumberLines = result.slot;\n        }\n    }\n    for (let row of data.rows) {\n        row.info.internals = maxNumberLines;\n    }\n}\n// we need to define the height of the line.\n// we need to find a height that is not yet used.\nfunction assignSlot(from, to, residues) {\n    let used = {};\n    if (from > 0)\n        from--; // we ensure that we don't put on the same line to sequences that are consecutive\n    for (let i = from; i < to; i++) {\n        let residue = residues[i];\n        for (const index of residue.paper.usedSlots.keys()) {\n            used[index] = true;\n        }\n    }\n    let counter = 0;\n    while (true) {\n        if (!used[counter]) {\n            break;\n        }\n        counter++;\n    }\n    for (let i = from; i < to; i++) {\n        residues[i].paper.usedSlots[counter] = true;\n    }\n    return counter;\n}\n//# sourceMappingURL=appendInternals.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n    }\n    Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n    o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n    var ownKeys = function(o) {\n        ownKeys = Object.getOwnPropertyNames || function (o) {\n            var ar = [];\n            for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n            return ar;\n        };\n        return ownKeys(o);\n    };\n    return function (mod) {\n        if (mod && mod.__esModule) return mod;\n        var result = {};\n        if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n        __setModuleDefault(result, mod);\n        return result;\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.appendResidues = appendResidues;\nconst chemical_groups_1 = require(\"chemical-groups\");\nconst Nucleotide = __importStar(require(\"nucleotide\"));\nconst Peptide = __importStar(require(\"peptide\"));\nconst ALTERNATIVES = ['', '¹', '²', '³', '⁴', '⁵', '⁶', '⁷', '⁸', '⁹'];\nconst SYMBOLS = ['Θ', 'Δ', 'Λ', 'Φ', 'Ω', 'Γ', 'Χ'];\nlet currentSymbol = 0;\n/**\n * Code that allows to split a sequence of amino acids or nucleotides natural or non natural\n * @param {string} [sequence]\n * @param {object} [options={}]\n * @param {string} [options.kind] - peptide, rna, ds-dna or dna. Default if contains U: rna, otherwise ds-dna\n * @param {string} [options.fivePrime=monophosphate] - alcohol, monophosphate, diphosphate, triphosphate\n * @param {string} [options.circular=false]\n */\nfunction appendResidues(data, sequence, options = {}) {\n    const { kind = 'peptide' } = options;\n    currentSymbol = 0;\n    // we normalize the sequence to 3 letter codes\n    if (kind === 'peptide') {\n        sequence = Peptide.sequenceToMF(sequence);\n    }\n    else {\n        sequence = Nucleotide.sequenceToMF(sequence, options);\n    }\n    const result = {\n        begin: '',\n        end: '',\n        residues: [],\n    };\n    const STATE_BEGIN = 0;\n    const STATE_MIDDLE = 1;\n    const STATE_END = 2;\n    let parenthesisLevel = 0;\n    let state = STATE_BEGIN; // as long as we don't have an uppercase followed by 2 lowercases\n    for (let i = 0; i < sequence.length; i++) {\n        let currentChar = sequence.charAt(i);\n        let nextChar = i < sequence.length - 1 ? sequence.charAt(i + 1) : '';\n        let nextNextChar = i < sequence.length - 2 ? sequence.charAt(i + 2) : '';\n        if (state === STATE_BEGIN &&\n            currentChar.match(/[A-Z]/) &&\n            nextChar.match(/[a-z]/) &&\n            nextNextChar.match(/[a-z]/) &&\n            parenthesisLevel === 0) {\n            state = STATE_MIDDLE;\n        }\n        if (state === STATE_MIDDLE &&\n            !sequence.slice(i).match(/[A-Z][a-z]{2}/) &&\n            !currentChar.match(/[a-z]/) &&\n            parenthesisLevel === 0) {\n            state = STATE_END;\n        }\n        else if (currentChar.match(/[A-Z]/) &&\n            nextChar.match(/[a-z]/) &&\n            nextNextChar.match(/[a-z]/) &&\n            parenthesisLevel === 0) {\n            result.residues.push('');\n        }\n        switch (state) {\n            case STATE_BEGIN:\n                result.begin = result.begin + currentChar;\n                break;\n            case STATE_MIDDLE:\n                result.residues[result.residues.length - 1] =\n                    result.residues.at(-1) + currentChar;\n                break;\n            case STATE_END:\n                result.end = result.end + currentChar;\n                break;\n            default:\n        }\n        if (currentChar === '(') {\n            parenthesisLevel++;\n        }\n        else if (currentChar === ')') {\n            parenthesisLevel--;\n        }\n    }\n    // we process all the residues\n    let alternatives = {};\n    let replacements = {};\n    for (let i = 0; i < result.residues.length; i++) {\n        let label = result.residues[i];\n        let residue = {\n            value: label,\n            results: {\n                begin: [],\n                end: [],\n            },\n        };\n        residue.fromBegin = i + 1;\n        residue.fromEnd = result.residues.length - i;\n        residue.kind = 'residue';\n        if (label.includes('(')) {\n            getModifiedReplacement(label, residue, alternatives, replacements);\n        }\n        else if (chemical_groups_1.groupsObject[label] && chemical_groups_1.groupsObject[label].oneLetter) {\n            residue.label = chemical_groups_1.groupsObject[label].oneLetter;\n        }\n        else {\n            getUnknownReplacement(label, residue, replacements);\n        }\n        result.residues[i] = residue;\n    }\n    result.begin = removeStartEndParenthesis(result.begin);\n    result.end = removeStartEndParenthesis(result.end);\n    if (result.begin.length > 2) {\n        let label = options.kind === 'peptide' ? 'Nter' : \"5'\";\n        replacements[result.begin] = {\n            label,\n        };\n        result.begin = label;\n    }\n    if (result.end.length > 2) {\n        let label = options.kind === 'peptide' ? 'Cter' : \"3'\";\n        replacements[result.end] = {\n            label,\n        };\n        result.end = label;\n    }\n    result.begin = { label: result.begin, kind: 'begin' };\n    result.end = { label: result.end, kind: 'end' };\n    result.alternatives = alternatives;\n    result.replacements = replacements;\n    result.all = [result.begin].concat(result.residues, [result.end]);\n    for (const entry of result.all) {\n        entry.info = {\n            nbOver: 0,\n            nbUnder: 0,\n        };\n    }\n    data.residues = result;\n}\nfunction getUnknownReplacement(unknownResidue, residue, replacements) {\n    if (!replacements[unknownResidue]) {\n        replacements[unknownResidue] = {\n            label: SYMBOLS[currentSymbol] || '?',\n            id: unknownResidue,\n        };\n    }\n    currentSymbol++;\n    residue.replaced = true;\n    residue.label = replacements[unknownResidue].label;\n}\nfunction getModifiedReplacement(modifiedResidue, residue, alternatives, replacements) {\n    if (!replacements[modifiedResidue]) {\n        let position = modifiedResidue.indexOf('(');\n        let residueCode = modifiedResidue.slice(0, position);\n        let modification = removeStartEndParenthesis(modifiedResidue.slice(position));\n        if (chemical_groups_1.groupsObject[residueCode] &&\n            chemical_groups_1.groupsObject[residueCode].alternativeOneLetter) {\n            let alternativeOneLetter = chemical_groups_1.groupsObject[residueCode].alternativeOneLetter;\n            if (!alternatives[alternativeOneLetter]) {\n                alternatives[alternativeOneLetter] = { count: 1 };\n            }\n            else {\n                alternatives[alternativeOneLetter].count++;\n            }\n            replacements[modifiedResidue] = {\n                label: ALTERNATIVES[alternatives[alternativeOneLetter].count - 1] +\n                    alternativeOneLetter,\n                residue: residueCode,\n                modification,\n            };\n        }\n        else {\n            getUnknownReplacement(modifiedResidue, residue, replacements);\n        }\n    }\n    residue.replaced = true;\n    residue.label = replacements[modifiedResidue].label;\n}\nfunction removeStartEndParenthesis(mf) {\n    if (mf[0] === '(' && mf.at(-1) === ')') {\n        return mf.slice(1, -1);\n    }\n    return mf;\n}\n//# sourceMappingURL=appendResidues.js.map","/*!\n* @svgdotjs/svg.js - A lightweight library for manipulating and animating SVG.\n* @version 3.2.4\n* https://svgjs.dev/\n*\n* @copyright Wout Fierens <wout@mick-wout.com>\n* @license MIT\n*\n* BUILT: Thu Jun 27 2024 12:00:16 GMT+0200 (Central European Summer Time)\n*/;\n'use strict';\n\nconst methods$1 = {};\nconst names = [];\nfunction registerMethods(name, m) {\n  if (Array.isArray(name)) {\n    for (const _name of name) {\n      registerMethods(_name, m);\n    }\n    return;\n  }\n  if (typeof name === 'object') {\n    for (const _name in name) {\n      registerMethods(_name, name[_name]);\n    }\n    return;\n  }\n  addMethodNames(Object.getOwnPropertyNames(m));\n  methods$1[name] = Object.assign(methods$1[name] || {}, m);\n}\nfunction getMethodsFor(name) {\n  return methods$1[name] || {};\n}\nfunction getMethodNames() {\n  return [...new Set(names)];\n}\nfunction addMethodNames(_names) {\n  names.push(..._names);\n}\n\n// Map function\nfunction map(array, block) {\n  let i;\n  const il = array.length;\n  const result = [];\n  for (i = 0; i < il; i++) {\n    result.push(block(array[i]));\n  }\n  return result;\n}\n\n// Filter function\nfunction filter(array, block) {\n  let i;\n  const il = array.length;\n  const result = [];\n  for (i = 0; i < il; i++) {\n    if (block(array[i])) {\n      result.push(array[i]);\n    }\n  }\n  return result;\n}\n\n// Degrees to radians\nfunction radians(d) {\n  return d % 360 * Math.PI / 180;\n}\n\n// Radians to degrees\nfunction degrees(r) {\n  return r * 180 / Math.PI % 360;\n}\n\n// Convert camel cased string to dash separated\nfunction unCamelCase(s) {\n  return s.replace(/([A-Z])/g, function (m, g) {\n    return '-' + g.toLowerCase();\n  });\n}\n\n// Capitalize first letter of a string\nfunction capitalize(s) {\n  return s.charAt(0).toUpperCase() + s.slice(1);\n}\n\n// Calculate proportional width and height values when necessary\nfunction proportionalSize(element, width, height, box) {\n  if (width == null || height == null) {\n    box = box || element.bbox();\n    if (width == null) {\n      width = box.width / box.height * height;\n    } else if (height == null) {\n      height = box.height / box.width * width;\n    }\n  }\n  return {\n    width: width,\n    height: height\n  };\n}\n\n/**\n * This function adds support for string origins.\n * It searches for an origin in o.origin o.ox and o.originX.\n * This way, origin: {x: 'center', y: 50} can be passed as well as ox: 'center', oy: 50\n **/\nfunction getOrigin(o, element) {\n  const origin = o.origin;\n  // First check if origin is in ox or originX\n  let ox = o.ox != null ? o.ox : o.originX != null ? o.originX : 'center';\n  let oy = o.oy != null ? o.oy : o.originY != null ? o.originY : 'center';\n\n  // Then check if origin was used and overwrite in that case\n  if (origin != null) {\n    [ox, oy] = Array.isArray(origin) ? origin : typeof origin === 'object' ? [origin.x, origin.y] : [origin, origin];\n  }\n\n  // Make sure to only call bbox when actually needed\n  const condX = typeof ox === 'string';\n  const condY = typeof oy === 'string';\n  if (condX || condY) {\n    const {\n      height,\n      width,\n      x,\n      y\n    } = element.bbox();\n\n    // And only overwrite if string was passed for this specific axis\n    if (condX) {\n      ox = ox.includes('left') ? x : ox.includes('right') ? x + width : x + width / 2;\n    }\n    if (condY) {\n      oy = oy.includes('top') ? y : oy.includes('bottom') ? y + height : y + height / 2;\n    }\n  }\n\n  // Return the origin as it is if it wasn't a string\n  return [ox, oy];\n}\nconst descriptiveElements = new Set(['desc', 'metadata', 'title']);\nconst isDescriptive = element => descriptiveElements.has(element.nodeName);\nconst writeDataToDom = (element, data, defaults = {}) => {\n  const cloned = {\n    ...data\n  };\n  for (const key in cloned) {\n    if (cloned[key].valueOf() === defaults[key]) {\n      delete cloned[key];\n    }\n  }\n  if (Object.keys(cloned).length) {\n    element.node.setAttribute('data-svgjs', JSON.stringify(cloned)); // see #428\n  } else {\n    element.node.removeAttribute('data-svgjs');\n    element.node.removeAttribute('svgjs:data');\n  }\n};\n\nvar utils = {\n  __proto__: null,\n  capitalize: capitalize,\n  degrees: degrees,\n  filter: filter,\n  getOrigin: getOrigin,\n  isDescriptive: isDescriptive,\n  map: map,\n  proportionalSize: proportionalSize,\n  radians: radians,\n  unCamelCase: unCamelCase,\n  writeDataToDom: writeDataToDom\n};\n\n// Default namespaces\nconst svg = 'http://www.w3.org/2000/svg';\nconst html = 'http://www.w3.org/1999/xhtml';\nconst xmlns = 'http://www.w3.org/2000/xmlns/';\nconst xlink = 'http://www.w3.org/1999/xlink';\n\nvar namespaces = {\n  __proto__: null,\n  html: html,\n  svg: svg,\n  xlink: xlink,\n  xmlns: xmlns\n};\n\nconst globals = {\n  window: typeof window === 'undefined' ? null : window,\n  document: typeof document === 'undefined' ? null : document\n};\nfunction registerWindow(win = null, doc = null) {\n  globals.window = win;\n  globals.document = doc;\n}\nconst save = {};\nfunction saveWindow() {\n  save.window = globals.window;\n  save.document = globals.document;\n}\nfunction restoreWindow() {\n  globals.window = save.window;\n  globals.document = save.document;\n}\nfunction withWindow(win, fn) {\n  saveWindow();\n  registerWindow(win, win.document);\n  fn(win, win.document);\n  restoreWindow();\n}\nfunction getWindow() {\n  return globals.window;\n}\n\nclass Base {\n  // constructor (node/*, {extensions = []} */) {\n  //   // this.tags = []\n  //   //\n  //   // for (let extension of extensions) {\n  //   //   extension.setup.call(this, node)\n  //   //   this.tags.push(extension.name)\n  //   // }\n  // }\n}\n\nconst elements = {};\nconst root = '___SYMBOL___ROOT___';\n\n// Method for element creation\nfunction create(name, ns = svg) {\n  // create element\n  return globals.document.createElementNS(ns, name);\n}\nfunction makeInstance(element, isHTML = false) {\n  if (element instanceof Base) return element;\n  if (typeof element === 'object') {\n    return adopter(element);\n  }\n  if (element == null) {\n    return new elements[root]();\n  }\n  if (typeof element === 'string' && element.charAt(0) !== '<') {\n    return adopter(globals.document.querySelector(element));\n  }\n\n  // Make sure, that HTML elements are created with the correct namespace\n  const wrapper = isHTML ? globals.document.createElement('div') : create('svg');\n  wrapper.innerHTML = element;\n\n  // We can use firstChild here because we know,\n  // that the first char is < and thus an element\n  element = adopter(wrapper.firstChild);\n\n  // make sure, that element doesn't have its wrapper attached\n  wrapper.removeChild(wrapper.firstChild);\n  return element;\n}\nfunction nodeOrNew(name, node) {\n  return node && (node instanceof globals.window.Node || node.ownerDocument && node instanceof node.ownerDocument.defaultView.Node) ? node : create(name);\n}\n\n// Adopt existing svg elements\nfunction adopt(node) {\n  // check for presence of node\n  if (!node) return null;\n\n  // make sure a node isn't already adopted\n  if (node.instance instanceof Base) return node.instance;\n  if (node.nodeName === '#document-fragment') {\n    return new elements.Fragment(node);\n  }\n\n  // initialize variables\n  let className = capitalize(node.nodeName || 'Dom');\n\n  // Make sure that gradients are adopted correctly\n  if (className === 'LinearGradient' || className === 'RadialGradient') {\n    className = 'Gradient';\n\n    // Fallback to Dom if element is not known\n  } else if (!elements[className]) {\n    className = 'Dom';\n  }\n  return new elements[className](node);\n}\nlet adopter = adopt;\nfunction mockAdopt(mock = adopt) {\n  adopter = mock;\n}\nfunction register(element, name = element.name, asRoot = false) {\n  elements[name] = element;\n  if (asRoot) elements[root] = element;\n  addMethodNames(Object.getOwnPropertyNames(element.prototype));\n  return element;\n}\nfunction getClass(name) {\n  return elements[name];\n}\n\n// Element id sequence\nlet did = 1000;\n\n// Get next named element id\nfunction eid(name) {\n  return 'Svgjs' + capitalize(name) + did++;\n}\n\n// Deep new id assignment\nfunction assignNewId(node) {\n  // do the same for SVG child nodes as well\n  for (let i = node.children.length - 1; i >= 0; i--) {\n    assignNewId(node.children[i]);\n  }\n  if (node.id) {\n    node.id = eid(node.nodeName);\n    return node;\n  }\n  return node;\n}\n\n// Method for extending objects\nfunction extend(modules, methods) {\n  let key, i;\n  modules = Array.isArray(modules) ? modules : [modules];\n  for (i = modules.length - 1; i >= 0; i--) {\n    for (key in methods) {\n      modules[i].prototype[key] = methods[key];\n    }\n  }\n}\nfunction wrapWithAttrCheck(fn) {\n  return function (...args) {\n    const o = args[args.length - 1];\n    if (o && o.constructor === Object && !(o instanceof Array)) {\n      return fn.apply(this, args.slice(0, -1)).attr(o);\n    } else {\n      return fn.apply(this, args);\n    }\n  };\n}\n\n// Get all siblings, including myself\nfunction siblings() {\n  return this.parent().children();\n}\n\n// Get the current position siblings\nfunction position() {\n  return this.parent().index(this);\n}\n\n// Get the next element (will return null if there is none)\nfunction next() {\n  return this.siblings()[this.position() + 1];\n}\n\n// Get the next element (will return null if there is none)\nfunction prev() {\n  return this.siblings()[this.position() - 1];\n}\n\n// Send given element one step forward\nfunction forward() {\n  const i = this.position();\n  const p = this.parent();\n\n  // move node one step forward\n  p.add(this.remove(), i + 1);\n  return this;\n}\n\n// Send given element one step backward\nfunction backward() {\n  const i = this.position();\n  const p = this.parent();\n  p.add(this.remove(), i ? i - 1 : 0);\n  return this;\n}\n\n// Send given element all the way to the front\nfunction front() {\n  const p = this.parent();\n\n  // Move node forward\n  p.add(this.remove());\n  return this;\n}\n\n// Send given element all the way to the back\nfunction back() {\n  const p = this.parent();\n\n  // Move node back\n  p.add(this.remove(), 0);\n  return this;\n}\n\n// Inserts a given element before the targeted element\nfunction before(element) {\n  element = makeInstance(element);\n  element.remove();\n  const i = this.position();\n  this.parent().add(element, i);\n  return this;\n}\n\n// Inserts a given element after the targeted element\nfunction after(element) {\n  element = makeInstance(element);\n  element.remove();\n  const i = this.position();\n  this.parent().add(element, i + 1);\n  return this;\n}\nfunction insertBefore(element) {\n  element = makeInstance(element);\n  element.before(this);\n  return this;\n}\nfunction insertAfter(element) {\n  element = makeInstance(element);\n  element.after(this);\n  return this;\n}\nregisterMethods('Dom', {\n  siblings,\n  position,\n  next,\n  prev,\n  forward,\n  backward,\n  front,\n  back,\n  before,\n  after,\n  insertBefore,\n  insertAfter\n});\n\n// Parse unit value\nconst numberAndUnit = /^([+-]?(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?)([a-z%]*)$/i;\n\n// Parse hex value\nconst hex = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i;\n\n// Parse rgb value\nconst rgb = /rgb\\((\\d+),(\\d+),(\\d+)\\)/;\n\n// Parse reference id\nconst reference = /(#[a-z_][a-z0-9\\-_]*)/i;\n\n// splits a transformation chain\nconst transforms = /\\)\\s*,?\\s*/;\n\n// Whitespace\nconst whitespace = /\\s/g;\n\n// Test hex value\nconst isHex = /^#[a-f0-9]{3}$|^#[a-f0-9]{6}$/i;\n\n// Test rgb value\nconst isRgb = /^rgb\\(/;\n\n// Test for blank string\nconst isBlank = /^(\\s+)?$/;\n\n// Test for numeric string\nconst isNumber = /^[+-]?(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?$/i;\n\n// Test for image url\nconst isImage = /\\.(jpg|jpeg|png|gif|svg)(\\?[^=]+.*)?/i;\n\n// split at whitespace and comma\nconst delimiter = /[\\s,]+/;\n\n// Test for path letter\nconst isPathLetter = /[MLHVCSQTAZ]/i;\n\nvar regex = {\n  __proto__: null,\n  delimiter: delimiter,\n  hex: hex,\n  isBlank: isBlank,\n  isHex: isHex,\n  isImage: isImage,\n  isNumber: isNumber,\n  isPathLetter: isPathLetter,\n  isRgb: isRgb,\n  numberAndUnit: numberAndUnit,\n  reference: reference,\n  rgb: rgb,\n  transforms: transforms,\n  whitespace: whitespace\n};\n\n// Return array of classes on the node\nfunction classes() {\n  const attr = this.attr('class');\n  return attr == null ? [] : attr.trim().split(delimiter);\n}\n\n// Return true if class exists on the node, false otherwise\nfunction hasClass(name) {\n  return this.classes().indexOf(name) !== -1;\n}\n\n// Add class to the node\nfunction addClass(name) {\n  if (!this.hasClass(name)) {\n    const array = this.classes();\n    array.push(name);\n    this.attr('class', array.join(' '));\n  }\n  return this;\n}\n\n// Remove class from the node\nfunction removeClass(name) {\n  if (this.hasClass(name)) {\n    this.attr('class', this.classes().filter(function (c) {\n      return c !== name;\n    }).join(' '));\n  }\n  return this;\n}\n\n// Toggle the presence of a class on the node\nfunction toggleClass(name) {\n  return this.hasClass(name) ? this.removeClass(name) : this.addClass(name);\n}\nregisterMethods('Dom', {\n  classes,\n  hasClass,\n  addClass,\n  removeClass,\n  toggleClass\n});\n\n// Dynamic style generator\nfunction css(style, val) {\n  const ret = {};\n  if (arguments.length === 0) {\n    // get full style as object\n    this.node.style.cssText.split(/\\s*;\\s*/).filter(function (el) {\n      return !!el.length;\n    }).forEach(function (el) {\n      const t = el.split(/\\s*:\\s*/);\n      ret[t[0]] = t[1];\n    });\n    return ret;\n  }\n  if (arguments.length < 2) {\n    // get style properties as array\n    if (Array.isArray(style)) {\n      for (const name of style) {\n        const cased = name;\n        ret[name] = this.node.style.getPropertyValue(cased);\n      }\n      return ret;\n    }\n\n    // get style for property\n    if (typeof style === 'string') {\n      return this.node.style.getPropertyValue(style);\n    }\n\n    // set styles in object\n    if (typeof style === 'object') {\n      for (const name in style) {\n        // set empty string if null/undefined/'' was given\n        this.node.style.setProperty(name, style[name] == null || isBlank.test(style[name]) ? '' : style[name]);\n      }\n    }\n  }\n\n  // set style for property\n  if (arguments.length === 2) {\n    this.node.style.setProperty(style, val == null || isBlank.test(val) ? '' : val);\n  }\n  return this;\n}\n\n// Show element\nfunction show() {\n  return this.css('display', '');\n}\n\n// Hide element\nfunction hide() {\n  return this.css('display', 'none');\n}\n\n// Is element visible?\nfunction visible() {\n  return this.css('display') !== 'none';\n}\nregisterMethods('Dom', {\n  css,\n  show,\n  hide,\n  visible\n});\n\n// Store data values on svg nodes\nfunction data(a, v, r) {\n  if (a == null) {\n    // get an object of attributes\n    return this.data(map(filter(this.node.attributes, el => el.nodeName.indexOf('data-') === 0), el => el.nodeName.slice(5)));\n  } else if (a instanceof Array) {\n    const data = {};\n    for (const key of a) {\n      data[key] = this.data(key);\n    }\n    return data;\n  } else if (typeof a === 'object') {\n    for (v in a) {\n      this.data(v, a[v]);\n    }\n  } else if (arguments.length < 2) {\n    try {\n      return JSON.parse(this.attr('data-' + a));\n    } catch (e) {\n      return this.attr('data-' + a);\n    }\n  } else {\n    this.attr('data-' + a, v === null ? null : r === true || typeof v === 'string' || typeof v === 'number' ? v : JSON.stringify(v));\n  }\n  return this;\n}\nregisterMethods('Dom', {\n  data\n});\n\n// Remember arbitrary data\nfunction remember(k, v) {\n  // remember every item in an object individually\n  if (typeof arguments[0] === 'object') {\n    for (const key in k) {\n      this.remember(key, k[key]);\n    }\n  } else if (arguments.length === 1) {\n    // retrieve memory\n    return this.memory()[k];\n  } else {\n    // store memory\n    this.memory()[k] = v;\n  }\n  return this;\n}\n\n// Erase a given memory\nfunction forget() {\n  if (arguments.length === 0) {\n    this._memory = {};\n  } else {\n    for (let i = arguments.length - 1; i >= 0; i--) {\n      delete this.memory()[arguments[i]];\n    }\n  }\n  return this;\n}\n\n// This triggers creation of a new hidden class which is not performant\n// However, this function is not rarely used so it will not happen frequently\n// Return local memory object\nfunction memory() {\n  return this._memory = this._memory || {};\n}\nregisterMethods('Dom', {\n  remember,\n  forget,\n  memory\n});\n\nfunction sixDigitHex(hex) {\n  return hex.length === 4 ? ['#', hex.substring(1, 2), hex.substring(1, 2), hex.substring(2, 3), hex.substring(2, 3), hex.substring(3, 4), hex.substring(3, 4)].join('') : hex;\n}\nfunction componentHex(component) {\n  const integer = Math.round(component);\n  const bounded = Math.max(0, Math.min(255, integer));\n  const hex = bounded.toString(16);\n  return hex.length === 1 ? '0' + hex : hex;\n}\nfunction is(object, space) {\n  for (let i = space.length; i--;) {\n    if (object[space[i]] == null) {\n      return false;\n    }\n  }\n  return true;\n}\nfunction getParameters(a, b) {\n  const params = is(a, 'rgb') ? {\n    _a: a.r,\n    _b: a.g,\n    _c: a.b,\n    _d: 0,\n    space: 'rgb'\n  } : is(a, 'xyz') ? {\n    _a: a.x,\n    _b: a.y,\n    _c: a.z,\n    _d: 0,\n    space: 'xyz'\n  } : is(a, 'hsl') ? {\n    _a: a.h,\n    _b: a.s,\n    _c: a.l,\n    _d: 0,\n    space: 'hsl'\n  } : is(a, 'lab') ? {\n    _a: a.l,\n    _b: a.a,\n    _c: a.b,\n    _d: 0,\n    space: 'lab'\n  } : is(a, 'lch') ? {\n    _a: a.l,\n    _b: a.c,\n    _c: a.h,\n    _d: 0,\n    space: 'lch'\n  } : is(a, 'cmyk') ? {\n    _a: a.c,\n    _b: a.m,\n    _c: a.y,\n    _d: a.k,\n    space: 'cmyk'\n  } : {\n    _a: 0,\n    _b: 0,\n    _c: 0,\n    space: 'rgb'\n  };\n  params.space = b || params.space;\n  return params;\n}\nfunction cieSpace(space) {\n  if (space === 'lab' || space === 'xyz' || space === 'lch') {\n    return true;\n  } else {\n    return false;\n  }\n}\nfunction hueToRgb(p, q, t) {\n  if (t < 0) t += 1;\n  if (t > 1) t -= 1;\n  if (t < 1 / 6) return p + (q - p) * 6 * t;\n  if (t < 1 / 2) return q;\n  if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n  return p;\n}\nclass Color {\n  constructor(...inputs) {\n    this.init(...inputs);\n  }\n\n  // Test if given value is a color\n  static isColor(color) {\n    return color && (color instanceof Color || this.isRgb(color) || this.test(color));\n  }\n\n  // Test if given value is an rgb object\n  static isRgb(color) {\n    return color && typeof color.r === 'number' && typeof color.g === 'number' && typeof color.b === 'number';\n  }\n\n  /*\n  Generating random colors\n  */\n  static random(mode = 'vibrant', t) {\n    // Get the math modules\n    const {\n      random,\n      round,\n      sin,\n      PI: pi\n    } = Math;\n\n    // Run the correct generator\n    if (mode === 'vibrant') {\n      const l = (81 - 57) * random() + 57;\n      const c = (83 - 45) * random() + 45;\n      const h = 360 * random();\n      const color = new Color(l, c, h, 'lch');\n      return color;\n    } else if (mode === 'sine') {\n      t = t == null ? random() : t;\n      const r = round(80 * sin(2 * pi * t / 0.5 + 0.01) + 150);\n      const g = round(50 * sin(2 * pi * t / 0.5 + 4.6) + 200);\n      const b = round(100 * sin(2 * pi * t / 0.5 + 2.3) + 150);\n      const color = new Color(r, g, b);\n      return color;\n    } else if (mode === 'pastel') {\n      const l = (94 - 86) * random() + 86;\n      const c = (26 - 9) * random() + 9;\n      const h = 360 * random();\n      const color = new Color(l, c, h, 'lch');\n      return color;\n    } else if (mode === 'dark') {\n      const l = 10 + 10 * random();\n      const c = (125 - 75) * random() + 86;\n      const h = 360 * random();\n      const color = new Color(l, c, h, 'lch');\n      return color;\n    } else if (mode === 'rgb') {\n      const r = 255 * random();\n      const g = 255 * random();\n      const b = 255 * random();\n      const color = new Color(r, g, b);\n      return color;\n    } else if (mode === 'lab') {\n      const l = 100 * random();\n      const a = 256 * random() - 128;\n      const b = 256 * random() - 128;\n      const color = new Color(l, a, b, 'lab');\n      return color;\n    } else if (mode === 'grey') {\n      const grey = 255 * random();\n      const color = new Color(grey, grey, grey);\n      return color;\n    } else {\n      throw new Error('Unsupported random color mode');\n    }\n  }\n\n  // Test if given value is a color string\n  static test(color) {\n    return typeof color === 'string' && (isHex.test(color) || isRgb.test(color));\n  }\n  cmyk() {\n    // Get the rgb values for the current color\n    const {\n      _a,\n      _b,\n      _c\n    } = this.rgb();\n    const [r, g, b] = [_a, _b, _c].map(v => v / 255);\n\n    // Get the cmyk values in an unbounded format\n    const k = Math.min(1 - r, 1 - g, 1 - b);\n    if (k === 1) {\n      // Catch the black case\n      return new Color(0, 0, 0, 1, 'cmyk');\n    }\n    const c = (1 - r - k) / (1 - k);\n    const m = (1 - g - k) / (1 - k);\n    const y = (1 - b - k) / (1 - k);\n\n    // Construct the new color\n    const color = new Color(c, m, y, k, 'cmyk');\n    return color;\n  }\n  hsl() {\n    // Get the rgb values\n    const {\n      _a,\n      _b,\n      _c\n    } = this.rgb();\n    const [r, g, b] = [_a, _b, _c].map(v => v / 255);\n\n    // Find the maximum and minimum values to get the lightness\n    const max = Math.max(r, g, b);\n    const min = Math.min(r, g, b);\n    const l = (max + min) / 2;\n\n    // If the r, g, v values are identical then we are grey\n    const isGrey = max === min;\n\n    // Calculate the hue and saturation\n    const delta = max - min;\n    const s = isGrey ? 0 : l > 0.5 ? delta / (2 - max - min) : delta / (max + min);\n    const h = isGrey ? 0 : max === r ? ((g - b) / delta + (g < b ? 6 : 0)) / 6 : max === g ? ((b - r) / delta + 2) / 6 : max === b ? ((r - g) / delta + 4) / 6 : 0;\n\n    // Construct and return the new color\n    const color = new Color(360 * h, 100 * s, 100 * l, 'hsl');\n    return color;\n  }\n  init(a = 0, b = 0, c = 0, d = 0, space = 'rgb') {\n    // This catches the case when a falsy value is passed like ''\n    a = !a ? 0 : a;\n\n    // Reset all values in case the init function is rerun with new color space\n    if (this.space) {\n      for (const component in this.space) {\n        delete this[this.space[component]];\n      }\n    }\n    if (typeof a === 'number') {\n      // Allow for the case that we don't need d...\n      space = typeof d === 'string' ? d : space;\n      d = typeof d === 'string' ? 0 : d;\n\n      // Assign the values straight to the color\n      Object.assign(this, {\n        _a: a,\n        _b: b,\n        _c: c,\n        _d: d,\n        space\n      });\n      // If the user gave us an array, make the color from it\n    } else if (a instanceof Array) {\n      this.space = b || (typeof a[3] === 'string' ? a[3] : a[4]) || 'rgb';\n      Object.assign(this, {\n        _a: a[0],\n        _b: a[1],\n        _c: a[2],\n        _d: a[3] || 0\n      });\n    } else if (a instanceof Object) {\n      // Set the object up and assign its values directly\n      const values = getParameters(a, b);\n      Object.assign(this, values);\n    } else if (typeof a === 'string') {\n      if (isRgb.test(a)) {\n        const noWhitespace = a.replace(whitespace, '');\n        const [_a, _b, _c] = rgb.exec(noWhitespace).slice(1, 4).map(v => parseInt(v));\n        Object.assign(this, {\n          _a,\n          _b,\n          _c,\n          _d: 0,\n          space: 'rgb'\n        });\n      } else if (isHex.test(a)) {\n        const hexParse = v => parseInt(v, 16);\n        const [, _a, _b, _c] = hex.exec(sixDigitHex(a)).map(hexParse);\n        Object.assign(this, {\n          _a,\n          _b,\n          _c,\n          _d: 0,\n          space: 'rgb'\n        });\n      } else throw Error(\"Unsupported string format, can't construct Color\");\n    }\n\n    // Now add the components as a convenience\n    const {\n      _a,\n      _b,\n      _c,\n      _d\n    } = this;\n    const components = this.space === 'rgb' ? {\n      r: _a,\n      g: _b,\n      b: _c\n    } : this.space === 'xyz' ? {\n      x: _a,\n      y: _b,\n      z: _c\n    } : this.space === 'hsl' ? {\n      h: _a,\n      s: _b,\n      l: _c\n    } : this.space === 'lab' ? {\n      l: _a,\n      a: _b,\n      b: _c\n    } : this.space === 'lch' ? {\n      l: _a,\n      c: _b,\n      h: _c\n    } : this.space === 'cmyk' ? {\n      c: _a,\n      m: _b,\n      y: _c,\n      k: _d\n    } : {};\n    Object.assign(this, components);\n  }\n  lab() {\n    // Get the xyz color\n    const {\n      x,\n      y,\n      z\n    } = this.xyz();\n\n    // Get the lab components\n    const l = 116 * y - 16;\n    const a = 500 * (x - y);\n    const b = 200 * (y - z);\n\n    // Construct and return a new color\n    const color = new Color(l, a, b, 'lab');\n    return color;\n  }\n  lch() {\n    // Get the lab color directly\n    const {\n      l,\n      a,\n      b\n    } = this.lab();\n\n    // Get the chromaticity and the hue using polar coordinates\n    const c = Math.sqrt(a ** 2 + b ** 2);\n    let h = 180 * Math.atan2(b, a) / Math.PI;\n    if (h < 0) {\n      h *= -1;\n      h = 360 - h;\n    }\n\n    // Make a new color and return it\n    const color = new Color(l, c, h, 'lch');\n    return color;\n  }\n  /*\n  Conversion Methods\n  */\n\n  rgb() {\n    if (this.space === 'rgb') {\n      return this;\n    } else if (cieSpace(this.space)) {\n      // Convert to the xyz color space\n      let {\n        x,\n        y,\n        z\n      } = this;\n      if (this.space === 'lab' || this.space === 'lch') {\n        // Get the values in the lab space\n        let {\n          l,\n          a,\n          b\n        } = this;\n        if (this.space === 'lch') {\n          const {\n            c,\n            h\n          } = this;\n          const dToR = Math.PI / 180;\n          a = c * Math.cos(dToR * h);\n          b = c * Math.sin(dToR * h);\n        }\n\n        // Undo the nonlinear function\n        const yL = (l + 16) / 116;\n        const xL = a / 500 + yL;\n        const zL = yL - b / 200;\n\n        // Get the xyz values\n        const ct = 16 / 116;\n        const mx = 0.008856;\n        const nm = 7.787;\n        x = 0.95047 * (xL ** 3 > mx ? xL ** 3 : (xL - ct) / nm);\n        y = 1.0 * (yL ** 3 > mx ? yL ** 3 : (yL - ct) / nm);\n        z = 1.08883 * (zL ** 3 > mx ? zL ** 3 : (zL - ct) / nm);\n      }\n\n      // Convert xyz to unbounded rgb values\n      const rU = x * 3.2406 + y * -1.5372 + z * -0.4986;\n      const gU = x * -0.9689 + y * 1.8758 + z * 0.0415;\n      const bU = x * 0.0557 + y * -0.204 + z * 1.057;\n\n      // Convert the values to true rgb values\n      const pow = Math.pow;\n      const bd = 0.0031308;\n      const r = rU > bd ? 1.055 * pow(rU, 1 / 2.4) - 0.055 : 12.92 * rU;\n      const g = gU > bd ? 1.055 * pow(gU, 1 / 2.4) - 0.055 : 12.92 * gU;\n      const b = bU > bd ? 1.055 * pow(bU, 1 / 2.4) - 0.055 : 12.92 * bU;\n\n      // Make and return the color\n      const color = new Color(255 * r, 255 * g, 255 * b);\n      return color;\n    } else if (this.space === 'hsl') {\n      // https://bgrins.github.io/TinyColor/docs/tinycolor.html\n      // Get the current hsl values\n      let {\n        h,\n        s,\n        l\n      } = this;\n      h /= 360;\n      s /= 100;\n      l /= 100;\n\n      // If we are grey, then just make the color directly\n      if (s === 0) {\n        l *= 255;\n        const color = new Color(l, l, l);\n        return color;\n      }\n\n      // TODO I have no idea what this does :D If you figure it out, tell me!\n      const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n      const p = 2 * l - q;\n\n      // Get the rgb values\n      const r = 255 * hueToRgb(p, q, h + 1 / 3);\n      const g = 255 * hueToRgb(p, q, h);\n      const b = 255 * hueToRgb(p, q, h - 1 / 3);\n\n      // Make a new color\n      const color = new Color(r, g, b);\n      return color;\n    } else if (this.space === 'cmyk') {\n      // https://gist.github.com/felipesabino/5066336\n      // Get the normalised cmyk values\n      const {\n        c,\n        m,\n        y,\n        k\n      } = this;\n\n      // Get the rgb values\n      const r = 255 * (1 - Math.min(1, c * (1 - k) + k));\n      const g = 255 * (1 - Math.min(1, m * (1 - k) + k));\n      const b = 255 * (1 - Math.min(1, y * (1 - k) + k));\n\n      // Form the color and return it\n      const color = new Color(r, g, b);\n      return color;\n    } else {\n      return this;\n    }\n  }\n  toArray() {\n    const {\n      _a,\n      _b,\n      _c,\n      _d,\n      space\n    } = this;\n    return [_a, _b, _c, _d, space];\n  }\n  toHex() {\n    const [r, g, b] = this._clamped().map(componentHex);\n    return `#${r}${g}${b}`;\n  }\n  toRgb() {\n    const [rV, gV, bV] = this._clamped();\n    const string = `rgb(${rV},${gV},${bV})`;\n    return string;\n  }\n  toString() {\n    return this.toHex();\n  }\n  xyz() {\n    // Normalise the red, green and blue values\n    const {\n      _a: r255,\n      _b: g255,\n      _c: b255\n    } = this.rgb();\n    const [r, g, b] = [r255, g255, b255].map(v => v / 255);\n\n    // Convert to the lab rgb space\n    const rL = r > 0.04045 ? Math.pow((r + 0.055) / 1.055, 2.4) : r / 12.92;\n    const gL = g > 0.04045 ? Math.pow((g + 0.055) / 1.055, 2.4) : g / 12.92;\n    const bL = b > 0.04045 ? Math.pow((b + 0.055) / 1.055, 2.4) : b / 12.92;\n\n    // Convert to the xyz color space without bounding the values\n    const xU = (rL * 0.4124 + gL * 0.3576 + bL * 0.1805) / 0.95047;\n    const yU = (rL * 0.2126 + gL * 0.7152 + bL * 0.0722) / 1.0;\n    const zU = (rL * 0.0193 + gL * 0.1192 + bL * 0.9505) / 1.08883;\n\n    // Get the proper xyz values by applying the bounding\n    const x = xU > 0.008856 ? Math.pow(xU, 1 / 3) : 7.787 * xU + 16 / 116;\n    const y = yU > 0.008856 ? Math.pow(yU, 1 / 3) : 7.787 * yU + 16 / 116;\n    const z = zU > 0.008856 ? Math.pow(zU, 1 / 3) : 7.787 * zU + 16 / 116;\n\n    // Make and return the color\n    const color = new Color(x, y, z, 'xyz');\n    return color;\n  }\n\n  /*\n  Input and Output methods\n  */\n\n  _clamped() {\n    const {\n      _a,\n      _b,\n      _c\n    } = this.rgb();\n    const {\n      max,\n      min,\n      round\n    } = Math;\n    const format = v => max(0, min(round(v), 255));\n    return [_a, _b, _c].map(format);\n  }\n\n  /*\n  Constructing colors\n  */\n}\n\nclass Point {\n  // Initialize\n  constructor(...args) {\n    this.init(...args);\n  }\n\n  // Clone point\n  clone() {\n    return new Point(this);\n  }\n  init(x, y) {\n    const base = {\n      x: 0,\n      y: 0\n    };\n\n    // ensure source as object\n    const source = Array.isArray(x) ? {\n      x: x[0],\n      y: x[1]\n    } : typeof x === 'object' ? {\n      x: x.x,\n      y: x.y\n    } : {\n      x: x,\n      y: y\n    };\n\n    // merge source\n    this.x = source.x == null ? base.x : source.x;\n    this.y = source.y == null ? base.y : source.y;\n    return this;\n  }\n  toArray() {\n    return [this.x, this.y];\n  }\n  transform(m) {\n    return this.clone().transformO(m);\n  }\n\n  // Transform point with matrix\n  transformO(m) {\n    if (!Matrix.isMatrixLike(m)) {\n      m = new Matrix(m);\n    }\n    const {\n      x,\n      y\n    } = this;\n\n    // Perform the matrix multiplication\n    this.x = m.a * x + m.c * y + m.e;\n    this.y = m.b * x + m.d * y + m.f;\n    return this;\n  }\n}\nfunction point(x, y) {\n  return new Point(x, y).transformO(this.screenCTM().inverseO());\n}\n\nfunction closeEnough(a, b, threshold) {\n  return Math.abs(b - a) < (1e-6);\n}\nclass Matrix {\n  constructor(...args) {\n    this.init(...args);\n  }\n  static formatTransforms(o) {\n    // Get all of the parameters required to form the matrix\n    const flipBoth = o.flip === 'both' || o.flip === true;\n    const flipX = o.flip && (flipBoth || o.flip === 'x') ? -1 : 1;\n    const flipY = o.flip && (flipBoth || o.flip === 'y') ? -1 : 1;\n    const skewX = o.skew && o.skew.length ? o.skew[0] : isFinite(o.skew) ? o.skew : isFinite(o.skewX) ? o.skewX : 0;\n    const skewY = o.skew && o.skew.length ? o.skew[1] : isFinite(o.skew) ? o.skew : isFinite(o.skewY) ? o.skewY : 0;\n    const scaleX = o.scale && o.scale.length ? o.scale[0] * flipX : isFinite(o.scale) ? o.scale * flipX : isFinite(o.scaleX) ? o.scaleX * flipX : flipX;\n    const scaleY = o.scale && o.scale.length ? o.scale[1] * flipY : isFinite(o.scale) ? o.scale * flipY : isFinite(o.scaleY) ? o.scaleY * flipY : flipY;\n    const shear = o.shear || 0;\n    const theta = o.rotate || o.theta || 0;\n    const origin = new Point(o.origin || o.around || o.ox || o.originX, o.oy || o.originY);\n    const ox = origin.x;\n    const oy = origin.y;\n    // We need Point to be invalid if nothing was passed because we cannot default to 0 here. That is why NaN\n    const position = new Point(o.position || o.px || o.positionX || NaN, o.py || o.positionY || NaN);\n    const px = position.x;\n    const py = position.y;\n    const translate = new Point(o.translate || o.tx || o.translateX, o.ty || o.translateY);\n    const tx = translate.x;\n    const ty = translate.y;\n    const relative = new Point(o.relative || o.rx || o.relativeX, o.ry || o.relativeY);\n    const rx = relative.x;\n    const ry = relative.y;\n\n    // Populate all of the values\n    return {\n      scaleX,\n      scaleY,\n      skewX,\n      skewY,\n      shear,\n      theta,\n      rx,\n      ry,\n      tx,\n      ty,\n      ox,\n      oy,\n      px,\n      py\n    };\n  }\n  static fromArray(a) {\n    return {\n      a: a[0],\n      b: a[1],\n      c: a[2],\n      d: a[3],\n      e: a[4],\n      f: a[5]\n    };\n  }\n  static isMatrixLike(o) {\n    return o.a != null || o.b != null || o.c != null || o.d != null || o.e != null || o.f != null;\n  }\n\n  // left matrix, right matrix, target matrix which is overwritten\n  static matrixMultiply(l, r, o) {\n    // Work out the product directly\n    const a = l.a * r.a + l.c * r.b;\n    const b = l.b * r.a + l.d * r.b;\n    const c = l.a * r.c + l.c * r.d;\n    const d = l.b * r.c + l.d * r.d;\n    const e = l.e + l.a * r.e + l.c * r.f;\n    const f = l.f + l.b * r.e + l.d * r.f;\n\n    // make sure to use local variables because l/r and o could be the same\n    o.a = a;\n    o.b = b;\n    o.c = c;\n    o.d = d;\n    o.e = e;\n    o.f = f;\n    return o;\n  }\n  around(cx, cy, matrix) {\n    return this.clone().aroundO(cx, cy, matrix);\n  }\n\n  // Transform around a center point\n  aroundO(cx, cy, matrix) {\n    const dx = cx || 0;\n    const dy = cy || 0;\n    return this.translateO(-dx, -dy).lmultiplyO(matrix).translateO(dx, dy);\n  }\n\n  // Clones this matrix\n  clone() {\n    return new Matrix(this);\n  }\n\n  // Decomposes this matrix into its affine parameters\n  decompose(cx = 0, cy = 0) {\n    // Get the parameters from the matrix\n    const a = this.a;\n    const b = this.b;\n    const c = this.c;\n    const d = this.d;\n    const e = this.e;\n    const f = this.f;\n\n    // Figure out if the winding direction is clockwise or counterclockwise\n    const determinant = a * d - b * c;\n    const ccw = determinant > 0 ? 1 : -1;\n\n    // Since we only shear in x, we can use the x basis to get the x scale\n    // and the rotation of the resulting matrix\n    const sx = ccw * Math.sqrt(a * a + b * b);\n    const thetaRad = Math.atan2(ccw * b, ccw * a);\n    const theta = 180 / Math.PI * thetaRad;\n    const ct = Math.cos(thetaRad);\n    const st = Math.sin(thetaRad);\n\n    // We can then solve the y basis vector simultaneously to get the other\n    // two affine parameters directly from these parameters\n    const lam = (a * c + b * d) / determinant;\n    const sy = c * sx / (lam * a - b) || d * sx / (lam * b + a);\n\n    // Use the translations\n    const tx = e - cx + cx * ct * sx + cy * (lam * ct * sx - st * sy);\n    const ty = f - cy + cx * st * sx + cy * (lam * st * sx + ct * sy);\n\n    // Construct the decomposition and return it\n    return {\n      // Return the affine parameters\n      scaleX: sx,\n      scaleY: sy,\n      shear: lam,\n      rotate: theta,\n      translateX: tx,\n      translateY: ty,\n      originX: cx,\n      originY: cy,\n      // Return the matrix parameters\n      a: this.a,\n      b: this.b,\n      c: this.c,\n      d: this.d,\n      e: this.e,\n      f: this.f\n    };\n  }\n\n  // Check if two matrices are equal\n  equals(other) {\n    if (other === this) return true;\n    const comp = new Matrix(other);\n    return closeEnough(this.a, comp.a) && closeEnough(this.b, comp.b) && closeEnough(this.c, comp.c) && closeEnough(this.d, comp.d) && closeEnough(this.e, comp.e) && closeEnough(this.f, comp.f);\n  }\n\n  // Flip matrix on x or y, at a given offset\n  flip(axis, around) {\n    return this.clone().flipO(axis, around);\n  }\n  flipO(axis, around) {\n    return axis === 'x' ? this.scaleO(-1, 1, around, 0) : axis === 'y' ? this.scaleO(1, -1, 0, around) : this.scaleO(-1, -1, axis, around || axis); // Define an x, y flip point\n  }\n\n  // Initialize\n  init(source) {\n    const base = Matrix.fromArray([1, 0, 0, 1, 0, 0]);\n\n    // ensure source as object\n    source = source instanceof Element ? source.matrixify() : typeof source === 'string' ? Matrix.fromArray(source.split(delimiter).map(parseFloat)) : Array.isArray(source) ? Matrix.fromArray(source) : typeof source === 'object' && Matrix.isMatrixLike(source) ? source : typeof source === 'object' ? new Matrix().transform(source) : arguments.length === 6 ? Matrix.fromArray([].slice.call(arguments)) : base;\n\n    // Merge the source matrix with the base matrix\n    this.a = source.a != null ? source.a : base.a;\n    this.b = source.b != null ? source.b : base.b;\n    this.c = source.c != null ? source.c : base.c;\n    this.d = source.d != null ? source.d : base.d;\n    this.e = source.e != null ? source.e : base.e;\n    this.f = source.f != null ? source.f : base.f;\n    return this;\n  }\n  inverse() {\n    return this.clone().inverseO();\n  }\n\n  // Inverses matrix\n  inverseO() {\n    // Get the current parameters out of the matrix\n    const a = this.a;\n    const b = this.b;\n    const c = this.c;\n    const d = this.d;\n    const e = this.e;\n    const f = this.f;\n\n    // Invert the 2x2 matrix in the top left\n    const det = a * d - b * c;\n    if (!det) throw new Error('Cannot invert ' + this);\n\n    // Calculate the top 2x2 matrix\n    const na = d / det;\n    const nb = -b / det;\n    const nc = -c / det;\n    const nd = a / det;\n\n    // Apply the inverted matrix to the top right\n    const ne = -(na * e + nc * f);\n    const nf = -(nb * e + nd * f);\n\n    // Construct the inverted matrix\n    this.a = na;\n    this.b = nb;\n    this.c = nc;\n    this.d = nd;\n    this.e = ne;\n    this.f = nf;\n    return this;\n  }\n  lmultiply(matrix) {\n    return this.clone().lmultiplyO(matrix);\n  }\n  lmultiplyO(matrix) {\n    const r = this;\n    const l = matrix instanceof Matrix ? matrix : new Matrix(matrix);\n    return Matrix.matrixMultiply(l, r, this);\n  }\n\n  // Left multiplies by the given matrix\n  multiply(matrix) {\n    return this.clone().multiplyO(matrix);\n  }\n  multiplyO(matrix) {\n    // Get the matrices\n    const l = this;\n    const r = matrix instanceof Matrix ? matrix : new Matrix(matrix);\n    return Matrix.matrixMultiply(l, r, this);\n  }\n\n  // Rotate matrix\n  rotate(r, cx, cy) {\n    return this.clone().rotateO(r, cx, cy);\n  }\n  rotateO(r, cx = 0, cy = 0) {\n    // Convert degrees to radians\n    r = radians(r);\n    const cos = Math.cos(r);\n    const sin = Math.sin(r);\n    const {\n      a,\n      b,\n      c,\n      d,\n      e,\n      f\n    } = this;\n    this.a = a * cos - b * sin;\n    this.b = b * cos + a * sin;\n    this.c = c * cos - d * sin;\n    this.d = d * cos + c * sin;\n    this.e = e * cos - f * sin + cy * sin - cx * cos + cx;\n    this.f = f * cos + e * sin - cx * sin - cy * cos + cy;\n    return this;\n  }\n\n  // Scale matrix\n  scale() {\n    return this.clone().scaleO(...arguments);\n  }\n  scaleO(x, y = x, cx = 0, cy = 0) {\n    // Support uniform scaling\n    if (arguments.length === 3) {\n      cy = cx;\n      cx = y;\n      y = x;\n    }\n    const {\n      a,\n      b,\n      c,\n      d,\n      e,\n      f\n    } = this;\n    this.a = a * x;\n    this.b = b * y;\n    this.c = c * x;\n    this.d = d * y;\n    this.e = e * x - cx * x + cx;\n    this.f = f * y - cy * y + cy;\n    return this;\n  }\n\n  // Shear matrix\n  shear(a, cx, cy) {\n    return this.clone().shearO(a, cx, cy);\n  }\n\n  // eslint-disable-next-line no-unused-vars\n  shearO(lx, cx = 0, cy = 0) {\n    const {\n      a,\n      b,\n      c,\n      d,\n      e,\n      f\n    } = this;\n    this.a = a + b * lx;\n    this.c = c + d * lx;\n    this.e = e + f * lx - cy * lx;\n    return this;\n  }\n\n  // Skew Matrix\n  skew() {\n    return this.clone().skewO(...arguments);\n  }\n  skewO(x, y = x, cx = 0, cy = 0) {\n    // support uniformal skew\n    if (arguments.length === 3) {\n      cy = cx;\n      cx = y;\n      y = x;\n    }\n\n    // Convert degrees to radians\n    x = radians(x);\n    y = radians(y);\n    const lx = Math.tan(x);\n    const ly = Math.tan(y);\n    const {\n      a,\n      b,\n      c,\n      d,\n      e,\n      f\n    } = this;\n    this.a = a + b * lx;\n    this.b = b + a * ly;\n    this.c = c + d * lx;\n    this.d = d + c * ly;\n    this.e = e + f * lx - cy * lx;\n    this.f = f + e * ly - cx * ly;\n    return this;\n  }\n\n  // SkewX\n  skewX(x, cx, cy) {\n    return this.skew(x, 0, cx, cy);\n  }\n\n  // SkewY\n  skewY(y, cx, cy) {\n    return this.skew(0, y, cx, cy);\n  }\n  toArray() {\n    return [this.a, this.b, this.c, this.d, this.e, this.f];\n  }\n\n  // Convert matrix to string\n  toString() {\n    return 'matrix(' + this.a + ',' + this.b + ',' + this.c + ',' + this.d + ',' + this.e + ',' + this.f + ')';\n  }\n\n  // Transform a matrix into another matrix by manipulating the space\n  transform(o) {\n    // Check if o is a matrix and then left multiply it directly\n    if (Matrix.isMatrixLike(o)) {\n      const matrix = new Matrix(o);\n      return matrix.multiplyO(this);\n    }\n\n    // Get the proposed transformations and the current transformations\n    const t = Matrix.formatTransforms(o);\n    const current = this;\n    const {\n      x: ox,\n      y: oy\n    } = new Point(t.ox, t.oy).transform(current);\n\n    // Construct the resulting matrix\n    const transformer = new Matrix().translateO(t.rx, t.ry).lmultiplyO(current).translateO(-ox, -oy).scaleO(t.scaleX, t.scaleY).skewO(t.skewX, t.skewY).shearO(t.shear).rotateO(t.theta).translateO(ox, oy);\n\n    // If we want the origin at a particular place, we force it there\n    if (isFinite(t.px) || isFinite(t.py)) {\n      const origin = new Point(ox, oy).transform(transformer);\n      // TODO: Replace t.px with isFinite(t.px)\n      // Doesn't work because t.px is also 0 if it wasn't passed\n      const dx = isFinite(t.px) ? t.px - origin.x : 0;\n      const dy = isFinite(t.py) ? t.py - origin.y : 0;\n      transformer.translateO(dx, dy);\n    }\n\n    // Translate now after positioning\n    transformer.translateO(t.tx, t.ty);\n    return transformer;\n  }\n\n  // Translate matrix\n  translate(x, y) {\n    return this.clone().translateO(x, y);\n  }\n  translateO(x, y) {\n    this.e += x || 0;\n    this.f += y || 0;\n    return this;\n  }\n  valueOf() {\n    return {\n      a: this.a,\n      b: this.b,\n      c: this.c,\n      d: this.d,\n      e: this.e,\n      f: this.f\n    };\n  }\n}\nfunction ctm() {\n  return new Matrix(this.node.getCTM());\n}\nfunction screenCTM() {\n  try {\n    /* https://bugzilla.mozilla.org/show_bug.cgi?id=1344537\n       This is needed because FF does not return the transformation matrix\n       for the inner coordinate system when getScreenCTM() is called on nested svgs.\n       However all other Browsers do that */\n    if (typeof this.isRoot === 'function' && !this.isRoot()) {\n      const rect = this.rect(1, 1);\n      const m = rect.node.getScreenCTM();\n      rect.remove();\n      return new Matrix(m);\n    }\n    return new Matrix(this.node.getScreenCTM());\n  } catch (e) {\n    console.warn(`Cannot get CTM from SVG node ${this.node.nodeName}. Is the element rendered?`);\n    return new Matrix();\n  }\n}\nregister(Matrix, 'Matrix');\n\nfunction parser() {\n  // Reuse cached element if possible\n  if (!parser.nodes) {\n    const svg = makeInstance().size(2, 0);\n    svg.node.style.cssText = ['opacity: 0', 'position: absolute', 'left: -100%', 'top: -100%', 'overflow: hidden'].join(';');\n    svg.attr('focusable', 'false');\n    svg.attr('aria-hidden', 'true');\n    const path = svg.path().node;\n    parser.nodes = {\n      svg,\n      path\n    };\n  }\n  if (!parser.nodes.svg.node.parentNode) {\n    const b = globals.document.body || globals.document.documentElement;\n    parser.nodes.svg.addTo(b);\n  }\n  return parser.nodes;\n}\n\nfunction isNulledBox(box) {\n  return !box.width && !box.height && !box.x && !box.y;\n}\nfunction domContains(node) {\n  return node === globals.document || (globals.document.documentElement.contains || function (node) {\n    // This is IE - it does not support contains() for top-level SVGs\n    while (node.parentNode) {\n      node = node.parentNode;\n    }\n    return node === globals.document;\n  }).call(globals.document.documentElement, node);\n}\nclass Box {\n  constructor(...args) {\n    this.init(...args);\n  }\n  addOffset() {\n    // offset by window scroll position, because getBoundingClientRect changes when window is scrolled\n    this.x += globals.window.pageXOffset;\n    this.y += globals.window.pageYOffset;\n    return new Box(this);\n  }\n  init(source) {\n    const base = [0, 0, 0, 0];\n    source = typeof source === 'string' ? source.split(delimiter).map(parseFloat) : Array.isArray(source) ? source : typeof source === 'object' ? [source.left != null ? source.left : source.x, source.top != null ? source.top : source.y, source.width, source.height] : arguments.length === 4 ? [].slice.call(arguments) : base;\n    this.x = source[0] || 0;\n    this.y = source[1] || 0;\n    this.width = this.w = source[2] || 0;\n    this.height = this.h = source[3] || 0;\n\n    // Add more bounding box properties\n    this.x2 = this.x + this.w;\n    this.y2 = this.y + this.h;\n    this.cx = this.x + this.w / 2;\n    this.cy = this.y + this.h / 2;\n    return this;\n  }\n  isNulled() {\n    return isNulledBox(this);\n  }\n\n  // Merge rect box with another, return a new instance\n  merge(box) {\n    const x = Math.min(this.x, box.x);\n    const y = Math.min(this.y, box.y);\n    const width = Math.max(this.x + this.width, box.x + box.width) - x;\n    const height = Math.max(this.y + this.height, box.y + box.height) - y;\n    return new Box(x, y, width, height);\n  }\n  toArray() {\n    return [this.x, this.y, this.width, this.height];\n  }\n  toString() {\n    return this.x + ' ' + this.y + ' ' + this.width + ' ' + this.height;\n  }\n  transform(m) {\n    if (!(m instanceof Matrix)) {\n      m = new Matrix(m);\n    }\n    let xMin = Infinity;\n    let xMax = -Infinity;\n    let yMin = Infinity;\n    let yMax = -Infinity;\n    const pts = [new Point(this.x, this.y), new Point(this.x2, this.y), new Point(this.x, this.y2), new Point(this.x2, this.y2)];\n    pts.forEach(function (p) {\n      p = p.transform(m);\n      xMin = Math.min(xMin, p.x);\n      xMax = Math.max(xMax, p.x);\n      yMin = Math.min(yMin, p.y);\n      yMax = Math.max(yMax, p.y);\n    });\n    return new Box(xMin, yMin, xMax - xMin, yMax - yMin);\n  }\n}\nfunction getBox(el, getBBoxFn, retry) {\n  let box;\n  try {\n    // Try to get the box with the provided function\n    box = getBBoxFn(el.node);\n\n    // If the box is worthless and not even in the dom, retry\n    // by throwing an error here...\n    if (isNulledBox(box) && !domContains(el.node)) {\n      throw new Error('Element not in the dom');\n    }\n  } catch (e) {\n    // ... and calling the retry handler here\n    box = retry(el);\n  }\n  return box;\n}\nfunction bbox() {\n  // Function to get bbox is getBBox()\n  const getBBox = node => node.getBBox();\n\n  // Take all measures so that a stupid browser renders the element\n  // so we can get the bbox from it when we try again\n  const retry = el => {\n    try {\n      const clone = el.clone().addTo(parser().svg).show();\n      const box = clone.node.getBBox();\n      clone.remove();\n      return box;\n    } catch (e) {\n      // We give up...\n      throw new Error(`Getting bbox of element \"${el.node.nodeName}\" is not possible: ${e.toString()}`);\n    }\n  };\n  const box = getBox(this, getBBox, retry);\n  const bbox = new Box(box);\n  return bbox;\n}\nfunction rbox(el) {\n  const getRBox = node => node.getBoundingClientRect();\n  const retry = el => {\n    // There is no point in trying tricks here because if we insert the element into the dom ourselves\n    // it obviously will be at the wrong position\n    throw new Error(`Getting rbox of element \"${el.node.nodeName}\" is not possible`);\n  };\n  const box = getBox(this, getRBox, retry);\n  const rbox = new Box(box);\n\n  // If an element was passed, we want the bbox in the coordinate system of that element\n  if (el) {\n    return rbox.transform(el.screenCTM().inverseO());\n  }\n\n  // Else we want it in absolute screen coordinates\n  // Therefore we need to add the scrollOffset\n  return rbox.addOffset();\n}\n\n// Checks whether the given point is inside the bounding box\nfunction inside(x, y) {\n  const box = this.bbox();\n  return x > box.x && y > box.y && x < box.x + box.width && y < box.y + box.height;\n}\nregisterMethods({\n  viewbox: {\n    viewbox(x, y, width, height) {\n      // act as getter\n      if (x == null) return new Box(this.attr('viewBox'));\n\n      // act as setter\n      return this.attr('viewBox', new Box(x, y, width, height));\n    },\n    zoom(level, point) {\n      // Its best to rely on the attributes here and here is why:\n      // clientXYZ: Doesn't work on non-root svgs because they dont have a CSSBox (silly!)\n      // getBoundingClientRect: Doesn't work because Chrome just ignores width and height of nested svgs completely\n      //                        that means, their clientRect is always as big as the content.\n      //                        Furthermore this size is incorrect if the element is further transformed by its parents\n      // computedStyle: Only returns meaningful values if css was used with px. We dont go this route here!\n      // getBBox: returns the bounding box of its content - that doesn't help!\n      let {\n        width,\n        height\n      } = this.attr(['width', 'height']);\n\n      // Width and height is a string when a number with a unit is present which we can't use\n      // So we try clientXYZ\n      if (!width && !height || typeof width === 'string' || typeof height === 'string') {\n        width = this.node.clientWidth;\n        height = this.node.clientHeight;\n      }\n\n      // Giving up...\n      if (!width || !height) {\n        throw new Error('Impossible to get absolute width and height. Please provide an absolute width and height attribute on the zooming element');\n      }\n      const v = this.viewbox();\n      const zoomX = width / v.width;\n      const zoomY = height / v.height;\n      const zoom = Math.min(zoomX, zoomY);\n      if (level == null) {\n        return zoom;\n      }\n      let zoomAmount = zoom / level;\n\n      // Set the zoomAmount to the highest value which is safe to process and recover from\n      // The * 100 is a bit of wiggle room for the matrix transformation\n      if (zoomAmount === Infinity) zoomAmount = Number.MAX_SAFE_INTEGER / 100;\n      point = point || new Point(width / 2 / zoomX + v.x, height / 2 / zoomY + v.y);\n      const box = new Box(v).transform(new Matrix({\n        scale: zoomAmount,\n        origin: point\n      }));\n      return this.viewbox(box);\n    }\n  }\n});\nregister(Box, 'Box');\n\n// import { subClassArray } from './ArrayPolyfill.js'\n\nclass List extends Array {\n  constructor(arr = [], ...args) {\n    super(arr, ...args);\n    if (typeof arr === 'number') return this;\n    this.length = 0;\n    this.push(...arr);\n  }\n}\nextend([List], {\n  each(fnOrMethodName, ...args) {\n    if (typeof fnOrMethodName === 'function') {\n      return this.map((el, i, arr) => {\n        return fnOrMethodName.call(el, el, i, arr);\n      });\n    } else {\n      return this.map(el => {\n        return el[fnOrMethodName](...args);\n      });\n    }\n  },\n  toArray() {\n    return Array.prototype.concat.apply([], this);\n  }\n});\nconst reserved = ['toArray', 'constructor', 'each'];\nList.extend = function (methods) {\n  methods = methods.reduce((obj, name) => {\n    // Don't overwrite own methods\n    if (reserved.includes(name)) return obj;\n\n    // Don't add private methods\n    if (name[0] === '_') return obj;\n\n    // Allow access to original Array methods through a prefix\n    if (name in Array.prototype) {\n      obj['$' + name] = Array.prototype[name];\n    }\n\n    // Relay every call to each()\n    obj[name] = function (...attrs) {\n      return this.each(name, ...attrs);\n    };\n    return obj;\n  }, {});\n  extend([List], methods);\n};\n\nfunction baseFind(query, parent) {\n  return new List(map((parent || globals.document).querySelectorAll(query), function (node) {\n    return adopt(node);\n  }));\n}\n\n// Scoped find method\nfunction find(query) {\n  return baseFind(query, this.node);\n}\nfunction findOne(query) {\n  return adopt(this.node.querySelector(query));\n}\n\nlet listenerId = 0;\nconst windowEvents = {};\nfunction getEvents(instance) {\n  let n = instance.getEventHolder();\n\n  // We dont want to save events in global space\n  if (n === globals.window) n = windowEvents;\n  if (!n.events) n.events = {};\n  return n.events;\n}\nfunction getEventTarget(instance) {\n  return instance.getEventTarget();\n}\nfunction clearEvents(instance) {\n  let n = instance.getEventHolder();\n  if (n === globals.window) n = windowEvents;\n  if (n.events) n.events = {};\n}\n\n// Add event binder in the SVG namespace\nfunction on(node, events, listener, binding, options) {\n  const l = listener.bind(binding || node);\n  const instance = makeInstance(node);\n  const bag = getEvents(instance);\n  const n = getEventTarget(instance);\n\n  // events can be an array of events or a string of events\n  events = Array.isArray(events) ? events : events.split(delimiter);\n\n  // add id to listener\n  if (!listener._svgjsListenerId) {\n    listener._svgjsListenerId = ++listenerId;\n  }\n  events.forEach(function (event) {\n    const ev = event.split('.')[0];\n    const ns = event.split('.')[1] || '*';\n\n    // ensure valid object\n    bag[ev] = bag[ev] || {};\n    bag[ev][ns] = bag[ev][ns] || {};\n\n    // reference listener\n    bag[ev][ns][listener._svgjsListenerId] = l;\n\n    // add listener\n    n.addEventListener(ev, l, options || false);\n  });\n}\n\n// Add event unbinder in the SVG namespace\nfunction off(node, events, listener, options) {\n  const instance = makeInstance(node);\n  const bag = getEvents(instance);\n  const n = getEventTarget(instance);\n\n  // listener can be a function or a number\n  if (typeof listener === 'function') {\n    listener = listener._svgjsListenerId;\n    if (!listener) return;\n  }\n\n  // events can be an array of events or a string or undefined\n  events = Array.isArray(events) ? events : (events || '').split(delimiter);\n  events.forEach(function (event) {\n    const ev = event && event.split('.')[0];\n    const ns = event && event.split('.')[1];\n    let namespace, l;\n    if (listener) {\n      // remove listener reference\n      if (bag[ev] && bag[ev][ns || '*']) {\n        // removeListener\n        n.removeEventListener(ev, bag[ev][ns || '*'][listener], options || false);\n        delete bag[ev][ns || '*'][listener];\n      }\n    } else if (ev && ns) {\n      // remove all listeners for a namespaced event\n      if (bag[ev] && bag[ev][ns]) {\n        for (l in bag[ev][ns]) {\n          off(n, [ev, ns].join('.'), l);\n        }\n        delete bag[ev][ns];\n      }\n    } else if (ns) {\n      // remove all listeners for a specific namespace\n      for (event in bag) {\n        for (namespace in bag[event]) {\n          if (ns === namespace) {\n            off(n, [event, ns].join('.'));\n          }\n        }\n      }\n    } else if (ev) {\n      // remove all listeners for the event\n      if (bag[ev]) {\n        for (namespace in bag[ev]) {\n          off(n, [ev, namespace].join('.'));\n        }\n        delete bag[ev];\n      }\n    } else {\n      // remove all listeners on a given node\n      for (event in bag) {\n        off(n, event);\n      }\n      clearEvents(instance);\n    }\n  });\n}\nfunction dispatch(node, event, data, options) {\n  const n = getEventTarget(node);\n\n  // Dispatch event\n  if (event instanceof globals.window.Event) {\n    n.dispatchEvent(event);\n  } else {\n    event = new globals.window.CustomEvent(event, {\n      detail: data,\n      cancelable: true,\n      ...options\n    });\n    n.dispatchEvent(event);\n  }\n  return event;\n}\n\nclass EventTarget extends Base {\n  addEventListener() {}\n  dispatch(event, data, options) {\n    return dispatch(this, event, data, options);\n  }\n  dispatchEvent(event) {\n    const bag = this.getEventHolder().events;\n    if (!bag) return true;\n    const events = bag[event.type];\n    for (const i in events) {\n      for (const j in events[i]) {\n        events[i][j](event);\n      }\n    }\n    return !event.defaultPrevented;\n  }\n\n  // Fire given event\n  fire(event, data, options) {\n    this.dispatch(event, data, options);\n    return this;\n  }\n  getEventHolder() {\n    return this;\n  }\n  getEventTarget() {\n    return this;\n  }\n\n  // Unbind event from listener\n  off(event, listener, options) {\n    off(this, event, listener, options);\n    return this;\n  }\n\n  // Bind given event to listener\n  on(event, listener, binding, options) {\n    on(this, event, listener, binding, options);\n    return this;\n  }\n  removeEventListener() {}\n}\nregister(EventTarget, 'EventTarget');\n\nfunction noop() {}\n\n// Default animation values\nconst timeline = {\n  duration: 400,\n  ease: '>',\n  delay: 0\n};\n\n// Default attribute values\nconst attrs = {\n  // fill and stroke\n  'fill-opacity': 1,\n  'stroke-opacity': 1,\n  'stroke-width': 0,\n  'stroke-linejoin': 'miter',\n  'stroke-linecap': 'butt',\n  fill: '#000000',\n  stroke: '#000000',\n  opacity: 1,\n  // position\n  x: 0,\n  y: 0,\n  cx: 0,\n  cy: 0,\n  // size\n  width: 0,\n  height: 0,\n  // radius\n  r: 0,\n  rx: 0,\n  ry: 0,\n  // gradient\n  offset: 0,\n  'stop-opacity': 1,\n  'stop-color': '#000000',\n  // text\n  'text-anchor': 'start'\n};\n\nvar defaults = {\n  __proto__: null,\n  attrs: attrs,\n  noop: noop,\n  timeline: timeline\n};\n\nclass SVGArray extends Array {\n  constructor(...args) {\n    super(...args);\n    this.init(...args);\n  }\n  clone() {\n    return new this.constructor(this);\n  }\n  init(arr) {\n    // This catches the case, that native map tries to create an array with new Array(1)\n    if (typeof arr === 'number') return this;\n    this.length = 0;\n    this.push(...this.parse(arr));\n    return this;\n  }\n\n  // Parse whitespace separated string\n  parse(array = []) {\n    // If already is an array, no need to parse it\n    if (array instanceof Array) return array;\n    return array.trim().split(delimiter).map(parseFloat);\n  }\n  toArray() {\n    return Array.prototype.concat.apply([], this);\n  }\n  toSet() {\n    return new Set(this);\n  }\n  toString() {\n    return this.join(' ');\n  }\n\n  // Flattens the array if needed\n  valueOf() {\n    const ret = [];\n    ret.push(...this);\n    return ret;\n  }\n}\n\n// Module for unit conversions\nclass SVGNumber {\n  // Initialize\n  constructor(...args) {\n    this.init(...args);\n  }\n  convert(unit) {\n    return new SVGNumber(this.value, unit);\n  }\n\n  // Divide number\n  divide(number) {\n    number = new SVGNumber(number);\n    return new SVGNumber(this / number, this.unit || number.unit);\n  }\n  init(value, unit) {\n    unit = Array.isArray(value) ? value[1] : unit;\n    value = Array.isArray(value) ? value[0] : value;\n\n    // initialize defaults\n    this.value = 0;\n    this.unit = unit || '';\n\n    // parse value\n    if (typeof value === 'number') {\n      // ensure a valid numeric value\n      this.value = isNaN(value) ? 0 : !isFinite(value) ? value < 0 ? -3.4e38 : +3.4e38 : value;\n    } else if (typeof value === 'string') {\n      unit = value.match(numberAndUnit);\n      if (unit) {\n        // make value numeric\n        this.value = parseFloat(unit[1]);\n\n        // normalize\n        if (unit[5] === '%') {\n          this.value /= 100;\n        } else if (unit[5] === 's') {\n          this.value *= 1000;\n        }\n\n        // store unit\n        this.unit = unit[5];\n      }\n    } else {\n      if (value instanceof SVGNumber) {\n        this.value = value.valueOf();\n        this.unit = value.unit;\n      }\n    }\n    return this;\n  }\n\n  // Subtract number\n  minus(number) {\n    number = new SVGNumber(number);\n    return new SVGNumber(this - number, this.unit || number.unit);\n  }\n\n  // Add number\n  plus(number) {\n    number = new SVGNumber(number);\n    return new SVGNumber(this + number, this.unit || number.unit);\n  }\n\n  // Multiply number\n  times(number) {\n    number = new SVGNumber(number);\n    return new SVGNumber(this * number, this.unit || number.unit);\n  }\n  toArray() {\n    return [this.value, this.unit];\n  }\n  toJSON() {\n    return this.toString();\n  }\n  toString() {\n    return (this.unit === '%' ? ~~(this.value * 1e8) / 1e6 : this.unit === 's' ? this.value / 1e3 : this.value) + this.unit;\n  }\n  valueOf() {\n    return this.value;\n  }\n}\n\nconst colorAttributes = new Set(['fill', 'stroke', 'color', 'bgcolor', 'stop-color', 'flood-color', 'lighting-color']);\nconst hooks = [];\nfunction registerAttrHook(fn) {\n  hooks.push(fn);\n}\n\n// Set svg element attribute\nfunction attr(attr, val, ns) {\n  // act as full getter\n  if (attr == null) {\n    // get an object of attributes\n    attr = {};\n    val = this.node.attributes;\n    for (const node of val) {\n      attr[node.nodeName] = isNumber.test(node.nodeValue) ? parseFloat(node.nodeValue) : node.nodeValue;\n    }\n    return attr;\n  } else if (attr instanceof Array) {\n    // loop through array and get all values\n    return attr.reduce((last, curr) => {\n      last[curr] = this.attr(curr);\n      return last;\n    }, {});\n  } else if (typeof attr === 'object' && attr.constructor === Object) {\n    // apply every attribute individually if an object is passed\n    for (val in attr) this.attr(val, attr[val]);\n  } else if (val === null) {\n    // remove value\n    this.node.removeAttribute(attr);\n  } else if (val == null) {\n    // act as a getter if the first and only argument is not an object\n    val = this.node.getAttribute(attr);\n    return val == null ? attrs[attr] : isNumber.test(val) ? parseFloat(val) : val;\n  } else {\n    // Loop through hooks and execute them to convert value\n    val = hooks.reduce((_val, hook) => {\n      return hook(attr, _val, this);\n    }, val);\n\n    // ensure correct numeric values (also accepts NaN and Infinity)\n    if (typeof val === 'number') {\n      val = new SVGNumber(val);\n    } else if (colorAttributes.has(attr) && Color.isColor(val)) {\n      // ensure full hex color\n      val = new Color(val);\n    } else if (val.constructor === Array) {\n      // Check for plain arrays and parse array values\n      val = new SVGArray(val);\n    }\n\n    // if the passed attribute is leading...\n    if (attr === 'leading') {\n      // ... call the leading method instead\n      if (this.leading) {\n        this.leading(val);\n      }\n    } else {\n      // set given attribute on node\n      typeof ns === 'string' ? this.node.setAttributeNS(ns, attr, val.toString()) : this.node.setAttribute(attr, val.toString());\n    }\n\n    // rebuild if required\n    if (this.rebuild && (attr === 'font-size' || attr === 'x')) {\n      this.rebuild();\n    }\n  }\n  return this;\n}\n\nclass Dom extends EventTarget {\n  constructor(node, attrs) {\n    super();\n    this.node = node;\n    this.type = node.nodeName;\n    if (attrs && node !== attrs) {\n      this.attr(attrs);\n    }\n  }\n\n  // Add given element at a position\n  add(element, i) {\n    element = makeInstance(element);\n\n    // If non-root svg nodes are added we have to remove their namespaces\n    if (element.removeNamespace && this.node instanceof globals.window.SVGElement) {\n      element.removeNamespace();\n    }\n    if (i == null) {\n      this.node.appendChild(element.node);\n    } else if (element.node !== this.node.childNodes[i]) {\n      this.node.insertBefore(element.node, this.node.childNodes[i]);\n    }\n    return this;\n  }\n\n  // Add element to given container and return self\n  addTo(parent, i) {\n    return makeInstance(parent).put(this, i);\n  }\n\n  // Returns all child elements\n  children() {\n    return new List(map(this.node.children, function (node) {\n      return adopt(node);\n    }));\n  }\n\n  // Remove all elements in this container\n  clear() {\n    // remove children\n    while (this.node.hasChildNodes()) {\n      this.node.removeChild(this.node.lastChild);\n    }\n    return this;\n  }\n\n  // Clone element\n  clone(deep = true, assignNewIds = true) {\n    // write dom data to the dom so the clone can pickup the data\n    this.writeDataToDom();\n\n    // clone element\n    let nodeClone = this.node.cloneNode(deep);\n    if (assignNewIds) {\n      // assign new id\n      nodeClone = assignNewId(nodeClone);\n    }\n    return new this.constructor(nodeClone);\n  }\n\n  // Iterates over all children and invokes a given block\n  each(block, deep) {\n    const children = this.children();\n    let i, il;\n    for (i = 0, il = children.length; i < il; i++) {\n      block.apply(children[i], [i, children]);\n      if (deep) {\n        children[i].each(block, deep);\n      }\n    }\n    return this;\n  }\n  element(nodeName, attrs) {\n    return this.put(new Dom(create(nodeName), attrs));\n  }\n\n  // Get first child\n  first() {\n    return adopt(this.node.firstChild);\n  }\n\n  // Get a element at the given index\n  get(i) {\n    return adopt(this.node.childNodes[i]);\n  }\n  getEventHolder() {\n    return this.node;\n  }\n  getEventTarget() {\n    return this.node;\n  }\n\n  // Checks if the given element is a child\n  has(element) {\n    return this.index(element) >= 0;\n  }\n  html(htmlOrFn, outerHTML) {\n    return this.xml(htmlOrFn, outerHTML, html);\n  }\n\n  // Get / set id\n  id(id) {\n    // generate new id if no id set\n    if (typeof id === 'undefined' && !this.node.id) {\n      this.node.id = eid(this.type);\n    }\n\n    // don't set directly with this.node.id to make `null` work correctly\n    return this.attr('id', id);\n  }\n\n  // Gets index of given element\n  index(element) {\n    return [].slice.call(this.node.childNodes).indexOf(element.node);\n  }\n\n  // Get the last child\n  last() {\n    return adopt(this.node.lastChild);\n  }\n\n  // matches the element vs a css selector\n  matches(selector) {\n    const el = this.node;\n    const matcher = el.matches || el.matchesSelector || el.msMatchesSelector || el.mozMatchesSelector || el.webkitMatchesSelector || el.oMatchesSelector || null;\n    return matcher && matcher.call(el, selector);\n  }\n\n  // Returns the parent element instance\n  parent(type) {\n    let parent = this;\n\n    // check for parent\n    if (!parent.node.parentNode) return null;\n\n    // get parent element\n    parent = adopt(parent.node.parentNode);\n    if (!type) return parent;\n\n    // loop through ancestors if type is given\n    do {\n      if (typeof type === 'string' ? parent.matches(type) : parent instanceof type) return parent;\n    } while (parent = adopt(parent.node.parentNode));\n    return parent;\n  }\n\n  // Basically does the same as `add()` but returns the added element instead\n  put(element, i) {\n    element = makeInstance(element);\n    this.add(element, i);\n    return element;\n  }\n\n  // Add element to given container and return container\n  putIn(parent, i) {\n    return makeInstance(parent).add(this, i);\n  }\n\n  // Remove element\n  remove() {\n    if (this.parent()) {\n      this.parent().removeElement(this);\n    }\n    return this;\n  }\n\n  // Remove a given child\n  removeElement(element) {\n    this.node.removeChild(element.node);\n    return this;\n  }\n\n  // Replace this with element\n  replace(element) {\n    element = makeInstance(element);\n    if (this.node.parentNode) {\n      this.node.parentNode.replaceChild(element.node, this.node);\n    }\n    return element;\n  }\n  round(precision = 2, map = null) {\n    const factor = 10 ** precision;\n    const attrs = this.attr(map);\n    for (const i in attrs) {\n      if (typeof attrs[i] === 'number') {\n        attrs[i] = Math.round(attrs[i] * factor) / factor;\n      }\n    }\n    this.attr(attrs);\n    return this;\n  }\n\n  // Import / Export raw svg\n  svg(svgOrFn, outerSVG) {\n    return this.xml(svgOrFn, outerSVG, svg);\n  }\n\n  // Return id on string conversion\n  toString() {\n    return this.id();\n  }\n  words(text) {\n    // This is faster than removing all children and adding a new one\n    this.node.textContent = text;\n    return this;\n  }\n  wrap(node) {\n    const parent = this.parent();\n    if (!parent) {\n      return this.addTo(node);\n    }\n    const position = parent.index(this);\n    return parent.put(node, position).put(this);\n  }\n\n  // write svgjs data to the dom\n  writeDataToDom() {\n    // dump variables recursively\n    this.each(function () {\n      this.writeDataToDom();\n    });\n    return this;\n  }\n\n  // Import / Export raw svg\n  xml(xmlOrFn, outerXML, ns) {\n    if (typeof xmlOrFn === 'boolean') {\n      ns = outerXML;\n      outerXML = xmlOrFn;\n      xmlOrFn = null;\n    }\n\n    // act as getter if no svg string is given\n    if (xmlOrFn == null || typeof xmlOrFn === 'function') {\n      // The default for exports is, that the outerNode is included\n      outerXML = outerXML == null ? true : outerXML;\n\n      // write svgjs data to the dom\n      this.writeDataToDom();\n      let current = this;\n\n      // An export modifier was passed\n      if (xmlOrFn != null) {\n        current = adopt(current.node.cloneNode(true));\n\n        // If the user wants outerHTML we need to process this node, too\n        if (outerXML) {\n          const result = xmlOrFn(current);\n          current = result || current;\n\n          // The user does not want this node? Well, then he gets nothing\n          if (result === false) return '';\n        }\n\n        // Deep loop through all children and apply modifier\n        current.each(function () {\n          const result = xmlOrFn(this);\n          const _this = result || this;\n\n          // If modifier returns false, discard node\n          if (result === false) {\n            this.remove();\n\n            // If modifier returns new node, use it\n          } else if (result && this !== _this) {\n            this.replace(_this);\n          }\n        }, true);\n      }\n\n      // Return outer or inner content\n      return outerXML ? current.node.outerHTML : current.node.innerHTML;\n    }\n\n    // Act as setter if we got a string\n\n    // The default for import is, that the current node is not replaced\n    outerXML = outerXML == null ? false : outerXML;\n\n    // Create temporary holder\n    const well = create('wrapper', ns);\n    const fragment = globals.document.createDocumentFragment();\n\n    // Dump raw svg\n    well.innerHTML = xmlOrFn;\n\n    // Transplant nodes into the fragment\n    for (let len = well.children.length; len--;) {\n      fragment.appendChild(well.firstElementChild);\n    }\n    const parent = this.parent();\n\n    // Add the whole fragment at once\n    return outerXML ? this.replace(fragment) && parent : this.add(fragment);\n  }\n}\nextend(Dom, {\n  attr,\n  find,\n  findOne\n});\nregister(Dom, 'Dom');\n\nclass Element extends Dom {\n  constructor(node, attrs) {\n    super(node, attrs);\n\n    // initialize data object\n    this.dom = {};\n\n    // create circular reference\n    this.node.instance = this;\n    if (node.hasAttribute('data-svgjs') || node.hasAttribute('svgjs:data')) {\n      // pull svgjs data from the dom (getAttributeNS doesn't work in html5)\n      this.setData(JSON.parse(node.getAttribute('data-svgjs')) ?? JSON.parse(node.getAttribute('svgjs:data')) ?? {});\n    }\n  }\n\n  // Move element by its center\n  center(x, y) {\n    return this.cx(x).cy(y);\n  }\n\n  // Move by center over x-axis\n  cx(x) {\n    return x == null ? this.x() + this.width() / 2 : this.x(x - this.width() / 2);\n  }\n\n  // Move by center over y-axis\n  cy(y) {\n    return y == null ? this.y() + this.height() / 2 : this.y(y - this.height() / 2);\n  }\n\n  // Get defs\n  defs() {\n    const root = this.root();\n    return root && root.defs();\n  }\n\n  // Relative move over x and y axes\n  dmove(x, y) {\n    return this.dx(x).dy(y);\n  }\n\n  // Relative move over x axis\n  dx(x = 0) {\n    return this.x(new SVGNumber(x).plus(this.x()));\n  }\n\n  // Relative move over y axis\n  dy(y = 0) {\n    return this.y(new SVGNumber(y).plus(this.y()));\n  }\n  getEventHolder() {\n    return this;\n  }\n\n  // Set height of element\n  height(height) {\n    return this.attr('height', height);\n  }\n\n  // Move element to given x and y values\n  move(x, y) {\n    return this.x(x).y(y);\n  }\n\n  // return array of all ancestors of given type up to the root svg\n  parents(until = this.root()) {\n    const isSelector = typeof until === 'string';\n    if (!isSelector) {\n      until = makeInstance(until);\n    }\n    const parents = new List();\n    let parent = this;\n    while ((parent = parent.parent()) && parent.node !== globals.document && parent.nodeName !== '#document-fragment') {\n      parents.push(parent);\n      if (!isSelector && parent.node === until.node) {\n        break;\n      }\n      if (isSelector && parent.matches(until)) {\n        break;\n      }\n      if (parent.node === this.root().node) {\n        // We worked our way to the root and didn't match `until`\n        return null;\n      }\n    }\n    return parents;\n  }\n\n  // Get referenced element form attribute value\n  reference(attr) {\n    attr = this.attr(attr);\n    if (!attr) return null;\n    const m = (attr + '').match(reference);\n    return m ? makeInstance(m[1]) : null;\n  }\n\n  // Get parent document\n  root() {\n    const p = this.parent(getClass(root));\n    return p && p.root();\n  }\n\n  // set given data to the elements data property\n  setData(o) {\n    this.dom = o;\n    return this;\n  }\n\n  // Set element size to given width and height\n  size(width, height) {\n    const p = proportionalSize(this, width, height);\n    return this.width(new SVGNumber(p.width)).height(new SVGNumber(p.height));\n  }\n\n  // Set width of element\n  width(width) {\n    return this.attr('width', width);\n  }\n\n  // write svgjs data to the dom\n  writeDataToDom() {\n    writeDataToDom(this, this.dom);\n    return super.writeDataToDom();\n  }\n\n  // Move over x-axis\n  x(x) {\n    return this.attr('x', x);\n  }\n\n  // Move over y-axis\n  y(y) {\n    return this.attr('y', y);\n  }\n}\nextend(Element, {\n  bbox,\n  rbox,\n  inside,\n  point,\n  ctm,\n  screenCTM\n});\nregister(Element, 'Element');\n\n// Define list of available attributes for stroke and fill\nconst sugar = {\n  stroke: ['color', 'width', 'opacity', 'linecap', 'linejoin', 'miterlimit', 'dasharray', 'dashoffset'],\n  fill: ['color', 'opacity', 'rule'],\n  prefix: function (t, a) {\n    return a === 'color' ? t : t + '-' + a;\n  }\n}\n\n// Add sugar for fill and stroke\n;\n['fill', 'stroke'].forEach(function (m) {\n  const extension = {};\n  let i;\n  extension[m] = function (o) {\n    if (typeof o === 'undefined') {\n      return this.attr(m);\n    }\n    if (typeof o === 'string' || o instanceof Color || Color.isRgb(o) || o instanceof Element) {\n      this.attr(m, o);\n    } else {\n      // set all attributes from sugar.fill and sugar.stroke list\n      for (i = sugar[m].length - 1; i >= 0; i--) {\n        if (o[sugar[m][i]] != null) {\n          this.attr(sugar.prefix(m, sugar[m][i]), o[sugar[m][i]]);\n        }\n      }\n    }\n    return this;\n  };\n  registerMethods(['Element', 'Runner'], extension);\n});\nregisterMethods(['Element', 'Runner'], {\n  // Let the user set the matrix directly\n  matrix: function (mat, b, c, d, e, f) {\n    // Act as a getter\n    if (mat == null) {\n      return new Matrix(this);\n    }\n\n    // Act as a setter, the user can pass a matrix or a set of numbers\n    return this.attr('transform', new Matrix(mat, b, c, d, e, f));\n  },\n  // Map rotation to transform\n  rotate: function (angle, cx, cy) {\n    return this.transform({\n      rotate: angle,\n      ox: cx,\n      oy: cy\n    }, true);\n  },\n  // Map skew to transform\n  skew: function (x, y, cx, cy) {\n    return arguments.length === 1 || arguments.length === 3 ? this.transform({\n      skew: x,\n      ox: y,\n      oy: cx\n    }, true) : this.transform({\n      skew: [x, y],\n      ox: cx,\n      oy: cy\n    }, true);\n  },\n  shear: function (lam, cx, cy) {\n    return this.transform({\n      shear: lam,\n      ox: cx,\n      oy: cy\n    }, true);\n  },\n  // Map scale to transform\n  scale: function (x, y, cx, cy) {\n    return arguments.length === 1 || arguments.length === 3 ? this.transform({\n      scale: x,\n      ox: y,\n      oy: cx\n    }, true) : this.transform({\n      scale: [x, y],\n      ox: cx,\n      oy: cy\n    }, true);\n  },\n  // Map translate to transform\n  translate: function (x, y) {\n    return this.transform({\n      translate: [x, y]\n    }, true);\n  },\n  // Map relative translations to transform\n  relative: function (x, y) {\n    return this.transform({\n      relative: [x, y]\n    }, true);\n  },\n  // Map flip to transform\n  flip: function (direction = 'both', origin = 'center') {\n    if ('xybothtrue'.indexOf(direction) === -1) {\n      origin = direction;\n      direction = 'both';\n    }\n    return this.transform({\n      flip: direction,\n      origin: origin\n    }, true);\n  },\n  // Opacity\n  opacity: function (value) {\n    return this.attr('opacity', value);\n  }\n});\nregisterMethods('radius', {\n  // Add x and y radius\n  radius: function (x, y = x) {\n    const type = (this._element || this).type;\n    return type === 'radialGradient' ? this.attr('r', new SVGNumber(x)) : this.rx(x).ry(y);\n  }\n});\nregisterMethods('Path', {\n  // Get path length\n  length: function () {\n    return this.node.getTotalLength();\n  },\n  // Get point at length\n  pointAt: function (length) {\n    return new Point(this.node.getPointAtLength(length));\n  }\n});\nregisterMethods(['Element', 'Runner'], {\n  // Set font\n  font: function (a, v) {\n    if (typeof a === 'object') {\n      for (v in a) this.font(v, a[v]);\n      return this;\n    }\n    return a === 'leading' ? this.leading(v) : a === 'anchor' ? this.attr('text-anchor', v) : a === 'size' || a === 'family' || a === 'weight' || a === 'stretch' || a === 'variant' || a === 'style' ? this.attr('font-' + a, v) : this.attr(a, v);\n  }\n});\n\n// Add events to elements\nconst methods = ['click', 'dblclick', 'mousedown', 'mouseup', 'mouseover', 'mouseout', 'mousemove', 'mouseenter', 'mouseleave', 'touchstart', 'touchmove', 'touchleave', 'touchend', 'touchcancel', 'contextmenu', 'wheel', 'pointerdown', 'pointermove', 'pointerup', 'pointerleave', 'pointercancel'].reduce(function (last, event) {\n  // add event to Element\n  const fn = function (f) {\n    if (f === null) {\n      this.off(event);\n    } else {\n      this.on(event, f);\n    }\n    return this;\n  };\n  last[event] = fn;\n  return last;\n}, {});\nregisterMethods('Element', methods);\n\n// Reset all transformations\nfunction untransform() {\n  return this.attr('transform', null);\n}\n\n// merge the whole transformation chain into one matrix and returns it\nfunction matrixify() {\n  const matrix = (this.attr('transform') || ''\n  // split transformations\n  ).split(transforms).slice(0, -1).map(function (str) {\n    // generate key => value pairs\n    const kv = str.trim().split('(');\n    return [kv[0], kv[1].split(delimiter).map(function (str) {\n      return parseFloat(str);\n    })];\n  }).reverse()\n  // merge every transformation into one matrix\n  .reduce(function (matrix, transform) {\n    if (transform[0] === 'matrix') {\n      return matrix.lmultiply(Matrix.fromArray(transform[1]));\n    }\n    return matrix[transform[0]].apply(matrix, transform[1]);\n  }, new Matrix());\n  return matrix;\n}\n\n// add an element to another parent without changing the visual representation on the screen\nfunction toParent(parent, i) {\n  if (this === parent) return this;\n  if (isDescriptive(this.node)) return this.addTo(parent, i);\n  const ctm = this.screenCTM();\n  const pCtm = parent.screenCTM().inverse();\n  this.addTo(parent, i).untransform().transform(pCtm.multiply(ctm));\n  return this;\n}\n\n// same as above with parent equals root-svg\nfunction toRoot(i) {\n  return this.toParent(this.root(), i);\n}\n\n// Add transformations\nfunction transform(o, relative) {\n  // Act as a getter if no object was passed\n  if (o == null || typeof o === 'string') {\n    const decomposed = new Matrix(this).decompose();\n    return o == null ? decomposed : decomposed[o];\n  }\n  if (!Matrix.isMatrixLike(o)) {\n    // Set the origin according to the defined transform\n    o = {\n      ...o,\n      origin: getOrigin(o, this)\n    };\n  }\n\n  // The user can pass a boolean, an Element or an Matrix or nothing\n  const cleanRelative = relative === true ? this : relative || false;\n  const result = new Matrix(cleanRelative).transform(o);\n  return this.attr('transform', result);\n}\nregisterMethods('Element', {\n  untransform,\n  matrixify,\n  toParent,\n  toRoot,\n  transform\n});\n\nclass Container extends Element {\n  flatten() {\n    this.each(function () {\n      if (this instanceof Container) {\n        return this.flatten().ungroup();\n      }\n    });\n    return this;\n  }\n  ungroup(parent = this.parent(), index = parent.index(this)) {\n    // when parent != this, we want append all elements to the end\n    index = index === -1 ? parent.children().length : index;\n    this.each(function (i, children) {\n      // reverse each\n      return children[children.length - i - 1].toParent(parent, index);\n    });\n    return this.remove();\n  }\n}\nregister(Container, 'Container');\n\nclass Defs extends Container {\n  constructor(node, attrs = node) {\n    super(nodeOrNew('defs', node), attrs);\n  }\n  flatten() {\n    return this;\n  }\n  ungroup() {\n    return this;\n  }\n}\nregister(Defs, 'Defs');\n\nclass Shape extends Element {}\nregister(Shape, 'Shape');\n\n// Radius x value\nfunction rx(rx) {\n  return this.attr('rx', rx);\n}\n\n// Radius y value\nfunction ry(ry) {\n  return this.attr('ry', ry);\n}\n\n// Move over x-axis\nfunction x$3(x) {\n  return x == null ? this.cx() - this.rx() : this.cx(x + this.rx());\n}\n\n// Move over y-axis\nfunction y$3(y) {\n  return y == null ? this.cy() - this.ry() : this.cy(y + this.ry());\n}\n\n// Move by center over x-axis\nfunction cx$1(x) {\n  return this.attr('cx', x);\n}\n\n// Move by center over y-axis\nfunction cy$1(y) {\n  return this.attr('cy', y);\n}\n\n// Set width of element\nfunction width$2(width) {\n  return width == null ? this.rx() * 2 : this.rx(new SVGNumber(width).divide(2));\n}\n\n// Set height of element\nfunction height$2(height) {\n  return height == null ? this.ry() * 2 : this.ry(new SVGNumber(height).divide(2));\n}\n\nvar circled = {\n  __proto__: null,\n  cx: cx$1,\n  cy: cy$1,\n  height: height$2,\n  rx: rx,\n  ry: ry,\n  width: width$2,\n  x: x$3,\n  y: y$3\n};\n\nclass Ellipse extends Shape {\n  constructor(node, attrs = node) {\n    super(nodeOrNew('ellipse', node), attrs);\n  }\n  size(width, height) {\n    const p = proportionalSize(this, width, height);\n    return this.rx(new SVGNumber(p.width).divide(2)).ry(new SVGNumber(p.height).divide(2));\n  }\n}\nextend(Ellipse, circled);\nregisterMethods('Container', {\n  // Create an ellipse\n  ellipse: wrapWithAttrCheck(function (width = 0, height = width) {\n    return this.put(new Ellipse()).size(width, height).move(0, 0);\n  })\n});\nregister(Ellipse, 'Ellipse');\n\nclass Fragment extends Dom {\n  constructor(node = globals.document.createDocumentFragment()) {\n    super(node);\n  }\n\n  // Import / Export raw xml\n  xml(xmlOrFn, outerXML, ns) {\n    if (typeof xmlOrFn === 'boolean') {\n      ns = outerXML;\n      outerXML = xmlOrFn;\n      xmlOrFn = null;\n    }\n\n    // because this is a fragment we have to put all elements into a wrapper first\n    // before we can get the innerXML from it\n    if (xmlOrFn == null || typeof xmlOrFn === 'function') {\n      const wrapper = new Dom(create('wrapper', ns));\n      wrapper.add(this.node.cloneNode(true));\n      return wrapper.xml(false, ns);\n    }\n\n    // Act as setter if we got a string\n    return super.xml(xmlOrFn, false, ns);\n  }\n}\nregister(Fragment, 'Fragment');\n\nfunction from(x, y) {\n  return (this._element || this).type === 'radialGradient' ? this.attr({\n    fx: new SVGNumber(x),\n    fy: new SVGNumber(y)\n  }) : this.attr({\n    x1: new SVGNumber(x),\n    y1: new SVGNumber(y)\n  });\n}\nfunction to(x, y) {\n  return (this._element || this).type === 'radialGradient' ? this.attr({\n    cx: new SVGNumber(x),\n    cy: new SVGNumber(y)\n  }) : this.attr({\n    x2: new SVGNumber(x),\n    y2: new SVGNumber(y)\n  });\n}\n\nvar gradiented = {\n  __proto__: null,\n  from: from,\n  to: to\n};\n\nclass Gradient extends Container {\n  constructor(type, attrs) {\n    super(nodeOrNew(type + 'Gradient', typeof type === 'string' ? null : type), attrs);\n  }\n\n  // custom attr to handle transform\n  attr(a, b, c) {\n    if (a === 'transform') a = 'gradientTransform';\n    return super.attr(a, b, c);\n  }\n  bbox() {\n    return new Box();\n  }\n  targets() {\n    return baseFind('svg [fill*=' + this.id() + ']');\n  }\n\n  // Alias string conversion to fill\n  toString() {\n    return this.url();\n  }\n\n  // Update gradient\n  update(block) {\n    // remove all stops\n    this.clear();\n\n    // invoke passed block\n    if (typeof block === 'function') {\n      block.call(this, this);\n    }\n    return this;\n  }\n\n  // Return the fill id\n  url() {\n    return 'url(#' + this.id() + ')';\n  }\n}\nextend(Gradient, gradiented);\nregisterMethods({\n  Container: {\n    // Create gradient element in defs\n    gradient(...args) {\n      return this.defs().gradient(...args);\n    }\n  },\n  // define gradient\n  Defs: {\n    gradient: wrapWithAttrCheck(function (type, block) {\n      return this.put(new Gradient(type)).update(block);\n    })\n  }\n});\nregister(Gradient, 'Gradient');\n\nclass Pattern extends Container {\n  // Initialize node\n  constructor(node, attrs = node) {\n    super(nodeOrNew('pattern', node), attrs);\n  }\n\n  // custom attr to handle transform\n  attr(a, b, c) {\n    if (a === 'transform') a = 'patternTransform';\n    return super.attr(a, b, c);\n  }\n  bbox() {\n    return new Box();\n  }\n  targets() {\n    return baseFind('svg [fill*=' + this.id() + ']');\n  }\n\n  // Alias string conversion to fill\n  toString() {\n    return this.url();\n  }\n\n  // Update pattern by rebuilding\n  update(block) {\n    // remove content\n    this.clear();\n\n    // invoke passed block\n    if (typeof block === 'function') {\n      block.call(this, this);\n    }\n    return this;\n  }\n\n  // Return the fill id\n  url() {\n    return 'url(#' + this.id() + ')';\n  }\n}\nregisterMethods({\n  Container: {\n    // Create pattern element in defs\n    pattern(...args) {\n      return this.defs().pattern(...args);\n    }\n  },\n  Defs: {\n    pattern: wrapWithAttrCheck(function (width, height, block) {\n      return this.put(new Pattern()).update(block).attr({\n        x: 0,\n        y: 0,\n        width: width,\n        height: height,\n        patternUnits: 'userSpaceOnUse'\n      });\n    })\n  }\n});\nregister(Pattern, 'Pattern');\n\nclass Image extends Shape {\n  constructor(node, attrs = node) {\n    super(nodeOrNew('image', node), attrs);\n  }\n\n  // (re)load image\n  load(url, callback) {\n    if (!url) return this;\n    const img = new globals.window.Image();\n    on(img, 'load', function (e) {\n      const p = this.parent(Pattern);\n\n      // ensure image size\n      if (this.width() === 0 && this.height() === 0) {\n        this.size(img.width, img.height);\n      }\n      if (p instanceof Pattern) {\n        // ensure pattern size if not set\n        if (p.width() === 0 && p.height() === 0) {\n          p.size(this.width(), this.height());\n        }\n      }\n      if (typeof callback === 'function') {\n        callback.call(this, e);\n      }\n    }, this);\n    on(img, 'load error', function () {\n      // dont forget to unbind memory leaking events\n      off(img);\n    });\n    return this.attr('href', img.src = url, xlink);\n  }\n}\nregisterAttrHook(function (attr, val, _this) {\n  // convert image fill and stroke to patterns\n  if (attr === 'fill' || attr === 'stroke') {\n    if (isImage.test(val)) {\n      val = _this.root().defs().image(val);\n    }\n  }\n  if (val instanceof Image) {\n    val = _this.root().defs().pattern(0, 0, pattern => {\n      pattern.add(val);\n    });\n  }\n  return val;\n});\nregisterMethods({\n  Container: {\n    // create image element, load image and set its size\n    image: wrapWithAttrCheck(function (source, callback) {\n      return this.put(new Image()).size(0, 0).load(source, callback);\n    })\n  }\n});\nregister(Image, 'Image');\n\nclass PointArray extends SVGArray {\n  // Get bounding box of points\n  bbox() {\n    let maxX = -Infinity;\n    let maxY = -Infinity;\n    let minX = Infinity;\n    let minY = Infinity;\n    this.forEach(function (el) {\n      maxX = Math.max(el[0], maxX);\n      maxY = Math.max(el[1], maxY);\n      minX = Math.min(el[0], minX);\n      minY = Math.min(el[1], minY);\n    });\n    return new Box(minX, minY, maxX - minX, maxY - minY);\n  }\n\n  // Move point string\n  move(x, y) {\n    const box = this.bbox();\n\n    // get relative offset\n    x -= box.x;\n    y -= box.y;\n\n    // move every point\n    if (!isNaN(x) && !isNaN(y)) {\n      for (let i = this.length - 1; i >= 0; i--) {\n        this[i] = [this[i][0] + x, this[i][1] + y];\n      }\n    }\n    return this;\n  }\n\n  // Parse point string and flat array\n  parse(array = [0, 0]) {\n    const points = [];\n\n    // if it is an array, we flatten it and therefore clone it to 1 depths\n    if (array instanceof Array) {\n      array = Array.prototype.concat.apply([], array);\n    } else {\n      // Else, it is considered as a string\n      // parse points\n      array = array.trim().split(delimiter).map(parseFloat);\n    }\n\n    // validate points - https://svgwg.org/svg2-draft/shapes.html#DataTypePoints\n    // Odd number of coordinates is an error. In such cases, drop the last odd coordinate.\n    if (array.length % 2 !== 0) array.pop();\n\n    // wrap points in two-tuples\n    for (let i = 0, len = array.length; i < len; i = i + 2) {\n      points.push([array[i], array[i + 1]]);\n    }\n    return points;\n  }\n\n  // Resize poly string\n  size(width, height) {\n    let i;\n    const box = this.bbox();\n\n    // recalculate position of all points according to new size\n    for (i = this.length - 1; i >= 0; i--) {\n      if (box.width) this[i][0] = (this[i][0] - box.x) * width / box.width + box.x;\n      if (box.height) this[i][1] = (this[i][1] - box.y) * height / box.height + box.y;\n    }\n    return this;\n  }\n\n  // Convert array to line object\n  toLine() {\n    return {\n      x1: this[0][0],\n      y1: this[0][1],\n      x2: this[1][0],\n      y2: this[1][1]\n    };\n  }\n\n  // Convert array to string\n  toString() {\n    const array = [];\n    // convert to a poly point string\n    for (let i = 0, il = this.length; i < il; i++) {\n      array.push(this[i].join(','));\n    }\n    return array.join(' ');\n  }\n  transform(m) {\n    return this.clone().transformO(m);\n  }\n\n  // transform points with matrix (similar to Point.transform)\n  transformO(m) {\n    if (!Matrix.isMatrixLike(m)) {\n      m = new Matrix(m);\n    }\n    for (let i = this.length; i--;) {\n      // Perform the matrix multiplication\n      const [x, y] = this[i];\n      this[i][0] = m.a * x + m.c * y + m.e;\n      this[i][1] = m.b * x + m.d * y + m.f;\n    }\n    return this;\n  }\n}\n\nconst MorphArray = PointArray;\n\n// Move by left top corner over x-axis\nfunction x$2(x) {\n  return x == null ? this.bbox().x : this.move(x, this.bbox().y);\n}\n\n// Move by left top corner over y-axis\nfunction y$2(y) {\n  return y == null ? this.bbox().y : this.move(this.bbox().x, y);\n}\n\n// Set width of element\nfunction width$1(width) {\n  const b = this.bbox();\n  return width == null ? b.width : this.size(width, b.height);\n}\n\n// Set height of element\nfunction height$1(height) {\n  const b = this.bbox();\n  return height == null ? b.height : this.size(b.width, height);\n}\n\nvar pointed = {\n  __proto__: null,\n  MorphArray: MorphArray,\n  height: height$1,\n  width: width$1,\n  x: x$2,\n  y: y$2\n};\n\nclass Line extends Shape {\n  // Initialize node\n  constructor(node, attrs = node) {\n    super(nodeOrNew('line', node), attrs);\n  }\n\n  // Get array\n  array() {\n    return new PointArray([[this.attr('x1'), this.attr('y1')], [this.attr('x2'), this.attr('y2')]]);\n  }\n\n  // Move by left top corner\n  move(x, y) {\n    return this.attr(this.array().move(x, y).toLine());\n  }\n\n  // Overwrite native plot() method\n  plot(x1, y1, x2, y2) {\n    if (x1 == null) {\n      return this.array();\n    } else if (typeof y1 !== 'undefined') {\n      x1 = {\n        x1,\n        y1,\n        x2,\n        y2\n      };\n    } else {\n      x1 = new PointArray(x1).toLine();\n    }\n    return this.attr(x1);\n  }\n\n  // Set element size to given width and height\n  size(width, height) {\n    const p = proportionalSize(this, width, height);\n    return this.attr(this.array().size(p.width, p.height).toLine());\n  }\n}\nextend(Line, pointed);\nregisterMethods({\n  Container: {\n    // Create a line element\n    line: wrapWithAttrCheck(function (...args) {\n      // make sure plot is called as a setter\n      // x1 is not necessarily a number, it can also be an array, a string and a PointArray\n      return Line.prototype.plot.apply(this.put(new Line()), args[0] != null ? args : [0, 0, 0, 0]);\n    })\n  }\n});\nregister(Line, 'Line');\n\nclass Marker extends Container {\n  // Initialize node\n  constructor(node, attrs = node) {\n    super(nodeOrNew('marker', node), attrs);\n  }\n\n  // Set height of element\n  height(height) {\n    return this.attr('markerHeight', height);\n  }\n  orient(orient) {\n    return this.attr('orient', orient);\n  }\n\n  // Set marker refX and refY\n  ref(x, y) {\n    return this.attr('refX', x).attr('refY', y);\n  }\n\n  // Return the fill id\n  toString() {\n    return 'url(#' + this.id() + ')';\n  }\n\n  // Update marker\n  update(block) {\n    // remove all content\n    this.clear();\n\n    // invoke passed block\n    if (typeof block === 'function') {\n      block.call(this, this);\n    }\n    return this;\n  }\n\n  // Set width of element\n  width(width) {\n    return this.attr('markerWidth', width);\n  }\n}\nregisterMethods({\n  Container: {\n    marker(...args) {\n      // Create marker element in defs\n      return this.defs().marker(...args);\n    }\n  },\n  Defs: {\n    // Create marker\n    marker: wrapWithAttrCheck(function (width, height, block) {\n      // Set default viewbox to match the width and height, set ref to cx and cy and set orient to auto\n      return this.put(new Marker()).size(width, height).ref(width / 2, height / 2).viewbox(0, 0, width, height).attr('orient', 'auto').update(block);\n    })\n  },\n  marker: {\n    // Create and attach markers\n    marker(marker, width, height, block) {\n      let attr = ['marker'];\n\n      // Build attribute name\n      if (marker !== 'all') attr.push(marker);\n      attr = attr.join('-');\n\n      // Set marker attribute\n      marker = arguments[1] instanceof Marker ? arguments[1] : this.defs().marker(width, height, block);\n      return this.attr(attr, marker);\n    }\n  }\n});\nregister(Marker, 'Marker');\n\n/***\nBase Class\n==========\nThe base stepper class that will be\n***/\n\nfunction makeSetterGetter(k, f) {\n  return function (v) {\n    if (v == null) return this[k];\n    this[k] = v;\n    if (f) f.call(this);\n    return this;\n  };\n}\nconst easing = {\n  '-': function (pos) {\n    return pos;\n  },\n  '<>': function (pos) {\n    return -Math.cos(pos * Math.PI) / 2 + 0.5;\n  },\n  '>': function (pos) {\n    return Math.sin(pos * Math.PI / 2);\n  },\n  '<': function (pos) {\n    return -Math.cos(pos * Math.PI / 2) + 1;\n  },\n  bezier: function (x1, y1, x2, y2) {\n    // see https://www.w3.org/TR/css-easing-1/#cubic-bezier-algo\n    return function (t) {\n      if (t < 0) {\n        if (x1 > 0) {\n          return y1 / x1 * t;\n        } else if (x2 > 0) {\n          return y2 / x2 * t;\n        } else {\n          return 0;\n        }\n      } else if (t > 1) {\n        if (x2 < 1) {\n          return (1 - y2) / (1 - x2) * t + (y2 - x2) / (1 - x2);\n        } else if (x1 < 1) {\n          return (1 - y1) / (1 - x1) * t + (y1 - x1) / (1 - x1);\n        } else {\n          return 1;\n        }\n      } else {\n        return 3 * t * (1 - t) ** 2 * y1 + 3 * t ** 2 * (1 - t) * y2 + t ** 3;\n      }\n    };\n  },\n  // see https://www.w3.org/TR/css-easing-1/#step-timing-function-algo\n  steps: function (steps, stepPosition = 'end') {\n    // deal with \"jump-\" prefix\n    stepPosition = stepPosition.split('-').reverse()[0];\n    let jumps = steps;\n    if (stepPosition === 'none') {\n      --jumps;\n    } else if (stepPosition === 'both') {\n      ++jumps;\n    }\n\n    // The beforeFlag is essentially useless\n    return (t, beforeFlag = false) => {\n      // Step is called currentStep in referenced url\n      let step = Math.floor(t * steps);\n      const jumping = t * step % 1 === 0;\n      if (stepPosition === 'start' || stepPosition === 'both') {\n        ++step;\n      }\n      if (beforeFlag && jumping) {\n        --step;\n      }\n      if (t >= 0 && step < 0) {\n        step = 0;\n      }\n      if (t <= 1 && step > jumps) {\n        step = jumps;\n      }\n      return step / jumps;\n    };\n  }\n};\nclass Stepper {\n  done() {\n    return false;\n  }\n}\n\n/***\nEasing Functions\n================\n***/\n\nclass Ease extends Stepper {\n  constructor(fn = timeline.ease) {\n    super();\n    this.ease = easing[fn] || fn;\n  }\n  step(from, to, pos) {\n    if (typeof from !== 'number') {\n      return pos < 1 ? from : to;\n    }\n    return from + (to - from) * this.ease(pos);\n  }\n}\n\n/***\nController Types\n================\n***/\n\nclass Controller extends Stepper {\n  constructor(fn) {\n    super();\n    this.stepper = fn;\n  }\n  done(c) {\n    return c.done;\n  }\n  step(current, target, dt, c) {\n    return this.stepper(current, target, dt, c);\n  }\n}\nfunction recalculate() {\n  // Apply the default parameters\n  const duration = (this._duration || 500) / 1000;\n  const overshoot = this._overshoot || 0;\n\n  // Calculate the PID natural response\n  const eps = 1e-10;\n  const pi = Math.PI;\n  const os = Math.log(overshoot / 100 + eps);\n  const zeta = -os / Math.sqrt(pi * pi + os * os);\n  const wn = 3.9 / (zeta * duration);\n\n  // Calculate the Spring values\n  this.d = 2 * zeta * wn;\n  this.k = wn * wn;\n}\nclass Spring extends Controller {\n  constructor(duration = 500, overshoot = 0) {\n    super();\n    this.duration(duration).overshoot(overshoot);\n  }\n  step(current, target, dt, c) {\n    if (typeof current === 'string') return current;\n    c.done = dt === Infinity;\n    if (dt === Infinity) return target;\n    if (dt === 0) return current;\n    if (dt > 100) dt = 16;\n    dt /= 1000;\n\n    // Get the previous velocity\n    const velocity = c.velocity || 0;\n\n    // Apply the control to get the new position and store it\n    const acceleration = -this.d * velocity - this.k * (current - target);\n    const newPosition = current + velocity * dt + acceleration * dt * dt / 2;\n\n    // Store the velocity\n    c.velocity = velocity + acceleration * dt;\n\n    // Figure out if we have converged, and if so, pass the value\n    c.done = Math.abs(target - newPosition) + Math.abs(velocity) < 0.002;\n    return c.done ? target : newPosition;\n  }\n}\nextend(Spring, {\n  duration: makeSetterGetter('_duration', recalculate),\n  overshoot: makeSetterGetter('_overshoot', recalculate)\n});\nclass PID extends Controller {\n  constructor(p = 0.1, i = 0.01, d = 0, windup = 1000) {\n    super();\n    this.p(p).i(i).d(d).windup(windup);\n  }\n  step(current, target, dt, c) {\n    if (typeof current === 'string') return current;\n    c.done = dt === Infinity;\n    if (dt === Infinity) return target;\n    if (dt === 0) return current;\n    const p = target - current;\n    let i = (c.integral || 0) + p * dt;\n    const d = (p - (c.error || 0)) / dt;\n    const windup = this._windup;\n\n    // antiwindup\n    if (windup !== false) {\n      i = Math.max(-windup, Math.min(i, windup));\n    }\n    c.error = p;\n    c.integral = i;\n    c.done = Math.abs(p) < 0.001;\n    return c.done ? target : current + (this.P * p + this.I * i + this.D * d);\n  }\n}\nextend(PID, {\n  windup: makeSetterGetter('_windup'),\n  p: makeSetterGetter('P'),\n  i: makeSetterGetter('I'),\n  d: makeSetterGetter('D')\n});\n\nconst segmentParameters = {\n  M: 2,\n  L: 2,\n  H: 1,\n  V: 1,\n  C: 6,\n  S: 4,\n  Q: 4,\n  T: 2,\n  A: 7,\n  Z: 0\n};\nconst pathHandlers = {\n  M: function (c, p, p0) {\n    p.x = p0.x = c[0];\n    p.y = p0.y = c[1];\n    return ['M', p.x, p.y];\n  },\n  L: function (c, p) {\n    p.x = c[0];\n    p.y = c[1];\n    return ['L', c[0], c[1]];\n  },\n  H: function (c, p) {\n    p.x = c[0];\n    return ['H', c[0]];\n  },\n  V: function (c, p) {\n    p.y = c[0];\n    return ['V', c[0]];\n  },\n  C: function (c, p) {\n    p.x = c[4];\n    p.y = c[5];\n    return ['C', c[0], c[1], c[2], c[3], c[4], c[5]];\n  },\n  S: function (c, p) {\n    p.x = c[2];\n    p.y = c[3];\n    return ['S', c[0], c[1], c[2], c[3]];\n  },\n  Q: function (c, p) {\n    p.x = c[2];\n    p.y = c[3];\n    return ['Q', c[0], c[1], c[2], c[3]];\n  },\n  T: function (c, p) {\n    p.x = c[0];\n    p.y = c[1];\n    return ['T', c[0], c[1]];\n  },\n  Z: function (c, p, p0) {\n    p.x = p0.x;\n    p.y = p0.y;\n    return ['Z'];\n  },\n  A: function (c, p) {\n    p.x = c[5];\n    p.y = c[6];\n    return ['A', c[0], c[1], c[2], c[3], c[4], c[5], c[6]];\n  }\n};\nconst mlhvqtcsaz = 'mlhvqtcsaz'.split('');\nfor (let i = 0, il = mlhvqtcsaz.length; i < il; ++i) {\n  pathHandlers[mlhvqtcsaz[i]] = function (i) {\n    return function (c, p, p0) {\n      if (i === 'H') c[0] = c[0] + p.x;else if (i === 'V') c[0] = c[0] + p.y;else if (i === 'A') {\n        c[5] = c[5] + p.x;\n        c[6] = c[6] + p.y;\n      } else {\n        for (let j = 0, jl = c.length; j < jl; ++j) {\n          c[j] = c[j] + (j % 2 ? p.y : p.x);\n        }\n      }\n      return pathHandlers[i](c, p, p0);\n    };\n  }(mlhvqtcsaz[i].toUpperCase());\n}\nfunction makeAbsolut(parser) {\n  const command = parser.segment[0];\n  return pathHandlers[command](parser.segment.slice(1), parser.p, parser.p0);\n}\nfunction segmentComplete(parser) {\n  return parser.segment.length && parser.segment.length - 1 === segmentParameters[parser.segment[0].toUpperCase()];\n}\nfunction startNewSegment(parser, token) {\n  parser.inNumber && finalizeNumber(parser, false);\n  const pathLetter = isPathLetter.test(token);\n  if (pathLetter) {\n    parser.segment = [token];\n  } else {\n    const lastCommand = parser.lastCommand;\n    const small = lastCommand.toLowerCase();\n    const isSmall = lastCommand === small;\n    parser.segment = [small === 'm' ? isSmall ? 'l' : 'L' : lastCommand];\n  }\n  parser.inSegment = true;\n  parser.lastCommand = parser.segment[0];\n  return pathLetter;\n}\nfunction finalizeNumber(parser, inNumber) {\n  if (!parser.inNumber) throw new Error('Parser Error');\n  parser.number && parser.segment.push(parseFloat(parser.number));\n  parser.inNumber = inNumber;\n  parser.number = '';\n  parser.pointSeen = false;\n  parser.hasExponent = false;\n  if (segmentComplete(parser)) {\n    finalizeSegment(parser);\n  }\n}\nfunction finalizeSegment(parser) {\n  parser.inSegment = false;\n  if (parser.absolute) {\n    parser.segment = makeAbsolut(parser);\n  }\n  parser.segments.push(parser.segment);\n}\nfunction isArcFlag(parser) {\n  if (!parser.segment.length) return false;\n  const isArc = parser.segment[0].toUpperCase() === 'A';\n  const length = parser.segment.length;\n  return isArc && (length === 4 || length === 5);\n}\nfunction isExponential(parser) {\n  return parser.lastToken.toUpperCase() === 'E';\n}\nconst pathDelimiters = new Set([' ', ',', '\\t', '\\n', '\\r', '\\f']);\nfunction pathParser(d, toAbsolute = true) {\n  let index = 0;\n  let token = '';\n  const parser = {\n    segment: [],\n    inNumber: false,\n    number: '',\n    lastToken: '',\n    inSegment: false,\n    segments: [],\n    pointSeen: false,\n    hasExponent: false,\n    absolute: toAbsolute,\n    p0: new Point(),\n    p: new Point()\n  };\n  while (parser.lastToken = token, token = d.charAt(index++)) {\n    if (!parser.inSegment) {\n      if (startNewSegment(parser, token)) {\n        continue;\n      }\n    }\n    if (token === '.') {\n      if (parser.pointSeen || parser.hasExponent) {\n        finalizeNumber(parser, false);\n        --index;\n        continue;\n      }\n      parser.inNumber = true;\n      parser.pointSeen = true;\n      parser.number += token;\n      continue;\n    }\n    if (!isNaN(parseInt(token))) {\n      if (parser.number === '0' || isArcFlag(parser)) {\n        parser.inNumber = true;\n        parser.number = token;\n        finalizeNumber(parser, true);\n        continue;\n      }\n      parser.inNumber = true;\n      parser.number += token;\n      continue;\n    }\n    if (pathDelimiters.has(token)) {\n      if (parser.inNumber) {\n        finalizeNumber(parser, false);\n      }\n      continue;\n    }\n    if (token === '-' || token === '+') {\n      if (parser.inNumber && !isExponential(parser)) {\n        finalizeNumber(parser, false);\n        --index;\n        continue;\n      }\n      parser.number += token;\n      parser.inNumber = true;\n      continue;\n    }\n    if (token.toUpperCase() === 'E') {\n      parser.number += token;\n      parser.hasExponent = true;\n      continue;\n    }\n    if (isPathLetter.test(token)) {\n      if (parser.inNumber) {\n        finalizeNumber(parser, false);\n      } else if (!segmentComplete(parser)) {\n        throw new Error('parser Error');\n      } else {\n        finalizeSegment(parser);\n      }\n      --index;\n    }\n  }\n  if (parser.inNumber) {\n    finalizeNumber(parser, false);\n  }\n  if (parser.inSegment && segmentComplete(parser)) {\n    finalizeSegment(parser);\n  }\n  return parser.segments;\n}\n\nfunction arrayToString(a) {\n  let s = '';\n  for (let i = 0, il = a.length; i < il; i++) {\n    s += a[i][0];\n    if (a[i][1] != null) {\n      s += a[i][1];\n      if (a[i][2] != null) {\n        s += ' ';\n        s += a[i][2];\n        if (a[i][3] != null) {\n          s += ' ';\n          s += a[i][3];\n          s += ' ';\n          s += a[i][4];\n          if (a[i][5] != null) {\n            s += ' ';\n            s += a[i][5];\n            s += ' ';\n            s += a[i][6];\n            if (a[i][7] != null) {\n              s += ' ';\n              s += a[i][7];\n            }\n          }\n        }\n      }\n    }\n  }\n  return s + ' ';\n}\nclass PathArray extends SVGArray {\n  // Get bounding box of path\n  bbox() {\n    parser().path.setAttribute('d', this.toString());\n    return new Box(parser.nodes.path.getBBox());\n  }\n\n  // Move path string\n  move(x, y) {\n    // get bounding box of current situation\n    const box = this.bbox();\n\n    // get relative offset\n    x -= box.x;\n    y -= box.y;\n    if (!isNaN(x) && !isNaN(y)) {\n      // move every point\n      for (let l, i = this.length - 1; i >= 0; i--) {\n        l = this[i][0];\n        if (l === 'M' || l === 'L' || l === 'T') {\n          this[i][1] += x;\n          this[i][2] += y;\n        } else if (l === 'H') {\n          this[i][1] += x;\n        } else if (l === 'V') {\n          this[i][1] += y;\n        } else if (l === 'C' || l === 'S' || l === 'Q') {\n          this[i][1] += x;\n          this[i][2] += y;\n          this[i][3] += x;\n          this[i][4] += y;\n          if (l === 'C') {\n            this[i][5] += x;\n            this[i][6] += y;\n          }\n        } else if (l === 'A') {\n          this[i][6] += x;\n          this[i][7] += y;\n        }\n      }\n    }\n    return this;\n  }\n\n  // Absolutize and parse path to array\n  parse(d = 'M0 0') {\n    if (Array.isArray(d)) {\n      d = Array.prototype.concat.apply([], d).toString();\n    }\n    return pathParser(d);\n  }\n\n  // Resize path string\n  size(width, height) {\n    // get bounding box of current situation\n    const box = this.bbox();\n    let i, l;\n\n    // If the box width or height is 0 then we ignore\n    // transformations on the respective axis\n    box.width = box.width === 0 ? 1 : box.width;\n    box.height = box.height === 0 ? 1 : box.height;\n\n    // recalculate position of all points according to new size\n    for (i = this.length - 1; i >= 0; i--) {\n      l = this[i][0];\n      if (l === 'M' || l === 'L' || l === 'T') {\n        this[i][1] = (this[i][1] - box.x) * width / box.width + box.x;\n        this[i][2] = (this[i][2] - box.y) * height / box.height + box.y;\n      } else if (l === 'H') {\n        this[i][1] = (this[i][1] - box.x) * width / box.width + box.x;\n      } else if (l === 'V') {\n        this[i][1] = (this[i][1] - box.y) * height / box.height + box.y;\n      } else if (l === 'C' || l === 'S' || l === 'Q') {\n        this[i][1] = (this[i][1] - box.x) * width / box.width + box.x;\n        this[i][2] = (this[i][2] - box.y) * height / box.height + box.y;\n        this[i][3] = (this[i][3] - box.x) * width / box.width + box.x;\n        this[i][4] = (this[i][4] - box.y) * height / box.height + box.y;\n        if (l === 'C') {\n          this[i][5] = (this[i][5] - box.x) * width / box.width + box.x;\n          this[i][6] = (this[i][6] - box.y) * height / box.height + box.y;\n        }\n      } else if (l === 'A') {\n        // resize radii\n        this[i][1] = this[i][1] * width / box.width;\n        this[i][2] = this[i][2] * height / box.height;\n\n        // move position values\n        this[i][6] = (this[i][6] - box.x) * width / box.width + box.x;\n        this[i][7] = (this[i][7] - box.y) * height / box.height + box.y;\n      }\n    }\n    return this;\n  }\n\n  // Convert array to string\n  toString() {\n    return arrayToString(this);\n  }\n}\n\nconst getClassForType = value => {\n  const type = typeof value;\n  if (type === 'number') {\n    return SVGNumber;\n  } else if (type === 'string') {\n    if (Color.isColor(value)) {\n      return Color;\n    } else if (delimiter.test(value)) {\n      return isPathLetter.test(value) ? PathArray : SVGArray;\n    } else if (numberAndUnit.test(value)) {\n      return SVGNumber;\n    } else {\n      return NonMorphable;\n    }\n  } else if (morphableTypes.indexOf(value.constructor) > -1) {\n    return value.constructor;\n  } else if (Array.isArray(value)) {\n    return SVGArray;\n  } else if (type === 'object') {\n    return ObjectBag;\n  } else {\n    return NonMorphable;\n  }\n};\nclass Morphable {\n  constructor(stepper) {\n    this._stepper = stepper || new Ease('-');\n    this._from = null;\n    this._to = null;\n    this._type = null;\n    this._context = null;\n    this._morphObj = null;\n  }\n  at(pos) {\n    return this._morphObj.morph(this._from, this._to, pos, this._stepper, this._context);\n  }\n  done() {\n    const complete = this._context.map(this._stepper.done).reduce(function (last, curr) {\n      return last && curr;\n    }, true);\n    return complete;\n  }\n  from(val) {\n    if (val == null) {\n      return this._from;\n    }\n    this._from = this._set(val);\n    return this;\n  }\n  stepper(stepper) {\n    if (stepper == null) return this._stepper;\n    this._stepper = stepper;\n    return this;\n  }\n  to(val) {\n    if (val == null) {\n      return this._to;\n    }\n    this._to = this._set(val);\n    return this;\n  }\n  type(type) {\n    // getter\n    if (type == null) {\n      return this._type;\n    }\n\n    // setter\n    this._type = type;\n    return this;\n  }\n  _set(value) {\n    if (!this._type) {\n      this.type(getClassForType(value));\n    }\n    let result = new this._type(value);\n    if (this._type === Color) {\n      result = this._to ? result[this._to[4]]() : this._from ? result[this._from[4]]() : result;\n    }\n    if (this._type === ObjectBag) {\n      result = this._to ? result.align(this._to) : this._from ? result.align(this._from) : result;\n    }\n    result = result.toConsumable();\n    this._morphObj = this._morphObj || new this._type();\n    this._context = this._context || Array.apply(null, Array(result.length)).map(Object).map(function (o) {\n      o.done = true;\n      return o;\n    });\n    return result;\n  }\n}\nclass NonMorphable {\n  constructor(...args) {\n    this.init(...args);\n  }\n  init(val) {\n    val = Array.isArray(val) ? val[0] : val;\n    this.value = val;\n    return this;\n  }\n  toArray() {\n    return [this.value];\n  }\n  valueOf() {\n    return this.value;\n  }\n}\nclass TransformBag {\n  constructor(...args) {\n    this.init(...args);\n  }\n  init(obj) {\n    if (Array.isArray(obj)) {\n      obj = {\n        scaleX: obj[0],\n        scaleY: obj[1],\n        shear: obj[2],\n        rotate: obj[3],\n        translateX: obj[4],\n        translateY: obj[5],\n        originX: obj[6],\n        originY: obj[7]\n      };\n    }\n    Object.assign(this, TransformBag.defaults, obj);\n    return this;\n  }\n  toArray() {\n    const v = this;\n    return [v.scaleX, v.scaleY, v.shear, v.rotate, v.translateX, v.translateY, v.originX, v.originY];\n  }\n}\nTransformBag.defaults = {\n  scaleX: 1,\n  scaleY: 1,\n  shear: 0,\n  rotate: 0,\n  translateX: 0,\n  translateY: 0,\n  originX: 0,\n  originY: 0\n};\nconst sortByKey = (a, b) => {\n  return a[0] < b[0] ? -1 : a[0] > b[0] ? 1 : 0;\n};\nclass ObjectBag {\n  constructor(...args) {\n    this.init(...args);\n  }\n  align(other) {\n    const values = this.values;\n    for (let i = 0, il = values.length; i < il; ++i) {\n      // If the type is the same we only need to check if the color is in the correct format\n      if (values[i + 1] === other[i + 1]) {\n        if (values[i + 1] === Color && other[i + 7] !== values[i + 7]) {\n          const space = other[i + 7];\n          const color = new Color(this.values.splice(i + 3, 5))[space]().toArray();\n          this.values.splice(i + 3, 0, ...color);\n        }\n        i += values[i + 2] + 2;\n        continue;\n      }\n      if (!other[i + 1]) {\n        return this;\n      }\n\n      // The types differ, so we overwrite the new type with the old one\n      // And initialize it with the types default (e.g. black for color or 0 for number)\n      const defaultObject = new other[i + 1]().toArray();\n\n      // Than we fix the values array\n      const toDelete = values[i + 2] + 3;\n      values.splice(i, toDelete, other[i], other[i + 1], other[i + 2], ...defaultObject);\n      i += values[i + 2] + 2;\n    }\n    return this;\n  }\n  init(objOrArr) {\n    this.values = [];\n    if (Array.isArray(objOrArr)) {\n      this.values = objOrArr.slice();\n      return;\n    }\n    objOrArr = objOrArr || {};\n    const entries = [];\n    for (const i in objOrArr) {\n      const Type = getClassForType(objOrArr[i]);\n      const val = new Type(objOrArr[i]).toArray();\n      entries.push([i, Type, val.length, ...val]);\n    }\n    entries.sort(sortByKey);\n    this.values = entries.reduce((last, curr) => last.concat(curr), []);\n    return this;\n  }\n  toArray() {\n    return this.values;\n  }\n  valueOf() {\n    const obj = {};\n    const arr = this.values;\n\n    // for (var i = 0, len = arr.length; i < len; i += 2) {\n    while (arr.length) {\n      const key = arr.shift();\n      const Type = arr.shift();\n      const num = arr.shift();\n      const values = arr.splice(0, num);\n      obj[key] = new Type(values); // .valueOf()\n    }\n    return obj;\n  }\n}\nconst morphableTypes = [NonMorphable, TransformBag, ObjectBag];\nfunction registerMorphableType(type = []) {\n  morphableTypes.push(...[].concat(type));\n}\nfunction makeMorphable() {\n  extend(morphableTypes, {\n    to(val) {\n      return new Morphable().type(this.constructor).from(this.toArray()) // this.valueOf())\n      .to(val);\n    },\n    fromArray(arr) {\n      this.init(arr);\n      return this;\n    },\n    toConsumable() {\n      return this.toArray();\n    },\n    morph(from, to, pos, stepper, context) {\n      const mapper = function (i, index) {\n        return stepper.step(i, to[index], pos, context[index], context);\n      };\n      return this.fromArray(from.map(mapper));\n    }\n  });\n}\n\nclass Path extends Shape {\n  // Initialize node\n  constructor(node, attrs = node) {\n    super(nodeOrNew('path', node), attrs);\n  }\n\n  // Get array\n  array() {\n    return this._array || (this._array = new PathArray(this.attr('d')));\n  }\n\n  // Clear array cache\n  clear() {\n    delete this._array;\n    return this;\n  }\n\n  // Set height of element\n  height(height) {\n    return height == null ? this.bbox().height : this.size(this.bbox().width, height);\n  }\n\n  // Move by left top corner\n  move(x, y) {\n    return this.attr('d', this.array().move(x, y));\n  }\n\n  // Plot new path\n  plot(d) {\n    return d == null ? this.array() : this.clear().attr('d', typeof d === 'string' ? d : this._array = new PathArray(d));\n  }\n\n  // Set element size to given width and height\n  size(width, height) {\n    const p = proportionalSize(this, width, height);\n    return this.attr('d', this.array().size(p.width, p.height));\n  }\n\n  // Set width of element\n  width(width) {\n    return width == null ? this.bbox().width : this.size(width, this.bbox().height);\n  }\n\n  // Move by left top corner over x-axis\n  x(x) {\n    return x == null ? this.bbox().x : this.move(x, this.bbox().y);\n  }\n\n  // Move by left top corner over y-axis\n  y(y) {\n    return y == null ? this.bbox().y : this.move(this.bbox().x, y);\n  }\n}\n\n// Define morphable array\nPath.prototype.MorphArray = PathArray;\n\n// Add parent method\nregisterMethods({\n  Container: {\n    // Create a wrapped path element\n    path: wrapWithAttrCheck(function (d) {\n      // make sure plot is called as a setter\n      return this.put(new Path()).plot(d || new PathArray());\n    })\n  }\n});\nregister(Path, 'Path');\n\n// Get array\nfunction array() {\n  return this._array || (this._array = new PointArray(this.attr('points')));\n}\n\n// Clear array cache\nfunction clear() {\n  delete this._array;\n  return this;\n}\n\n// Move by left top corner\nfunction move$2(x, y) {\n  return this.attr('points', this.array().move(x, y));\n}\n\n// Plot new path\nfunction plot(p) {\n  return p == null ? this.array() : this.clear().attr('points', typeof p === 'string' ? p : this._array = new PointArray(p));\n}\n\n// Set element size to given width and height\nfunction size$1(width, height) {\n  const p = proportionalSize(this, width, height);\n  return this.attr('points', this.array().size(p.width, p.height));\n}\n\nvar poly = {\n  __proto__: null,\n  array: array,\n  clear: clear,\n  move: move$2,\n  plot: plot,\n  size: size$1\n};\n\nclass Polygon extends Shape {\n  // Initialize node\n  constructor(node, attrs = node) {\n    super(nodeOrNew('polygon', node), attrs);\n  }\n}\nregisterMethods({\n  Container: {\n    // Create a wrapped polygon element\n    polygon: wrapWithAttrCheck(function (p) {\n      // make sure plot is called as a setter\n      return this.put(new Polygon()).plot(p || new PointArray());\n    })\n  }\n});\nextend(Polygon, pointed);\nextend(Polygon, poly);\nregister(Polygon, 'Polygon');\n\nclass Polyline extends Shape {\n  // Initialize node\n  constructor(node, attrs = node) {\n    super(nodeOrNew('polyline', node), attrs);\n  }\n}\nregisterMethods({\n  Container: {\n    // Create a wrapped polygon element\n    polyline: wrapWithAttrCheck(function (p) {\n      // make sure plot is called as a setter\n      return this.put(new Polyline()).plot(p || new PointArray());\n    })\n  }\n});\nextend(Polyline, pointed);\nextend(Polyline, poly);\nregister(Polyline, 'Polyline');\n\nclass Rect extends Shape {\n  // Initialize node\n  constructor(node, attrs = node) {\n    super(nodeOrNew('rect', node), attrs);\n  }\n}\nextend(Rect, {\n  rx,\n  ry\n});\nregisterMethods({\n  Container: {\n    // Create a rect element\n    rect: wrapWithAttrCheck(function (width, height) {\n      return this.put(new Rect()).size(width, height);\n    })\n  }\n});\nregister(Rect, 'Rect');\n\nclass Queue {\n  constructor() {\n    this._first = null;\n    this._last = null;\n  }\n\n  // Shows us the first item in the list\n  first() {\n    return this._first && this._first.value;\n  }\n\n  // Shows us the last item in the list\n  last() {\n    return this._last && this._last.value;\n  }\n  push(value) {\n    // An item stores an id and the provided value\n    const item = typeof value.next !== 'undefined' ? value : {\n      value: value,\n      next: null,\n      prev: null\n    };\n\n    // Deal with the queue being empty or populated\n    if (this._last) {\n      item.prev = this._last;\n      this._last.next = item;\n      this._last = item;\n    } else {\n      this._last = item;\n      this._first = item;\n    }\n\n    // Return the current item\n    return item;\n  }\n\n  // Removes the item that was returned from the push\n  remove(item) {\n    // Relink the previous item\n    if (item.prev) item.prev.next = item.next;\n    if (item.next) item.next.prev = item.prev;\n    if (item === this._last) this._last = item.prev;\n    if (item === this._first) this._first = item.next;\n\n    // Invalidate item\n    item.prev = null;\n    item.next = null;\n  }\n  shift() {\n    // Check if we have a value\n    const remove = this._first;\n    if (!remove) return null;\n\n    // If we do, remove it and relink things\n    this._first = remove.next;\n    if (this._first) this._first.prev = null;\n    this._last = this._first ? this._last : null;\n    return remove.value;\n  }\n}\n\nconst Animator = {\n  nextDraw: null,\n  frames: new Queue(),\n  timeouts: new Queue(),\n  immediates: new Queue(),\n  timer: () => globals.window.performance || globals.window.Date,\n  transforms: [],\n  frame(fn) {\n    // Store the node\n    const node = Animator.frames.push({\n      run: fn\n    });\n\n    // Request an animation frame if we don't have one\n    if (Animator.nextDraw === null) {\n      Animator.nextDraw = globals.window.requestAnimationFrame(Animator._draw);\n    }\n\n    // Return the node so we can remove it easily\n    return node;\n  },\n  timeout(fn, delay) {\n    delay = delay || 0;\n\n    // Work out when the event should fire\n    const time = Animator.timer().now() + delay;\n\n    // Add the timeout to the end of the queue\n    const node = Animator.timeouts.push({\n      run: fn,\n      time: time\n    });\n\n    // Request another animation frame if we need one\n    if (Animator.nextDraw === null) {\n      Animator.nextDraw = globals.window.requestAnimationFrame(Animator._draw);\n    }\n    return node;\n  },\n  immediate(fn) {\n    // Add the immediate fn to the end of the queue\n    const node = Animator.immediates.push(fn);\n    // Request another animation frame if we need one\n    if (Animator.nextDraw === null) {\n      Animator.nextDraw = globals.window.requestAnimationFrame(Animator._draw);\n    }\n    return node;\n  },\n  cancelFrame(node) {\n    node != null && Animator.frames.remove(node);\n  },\n  clearTimeout(node) {\n    node != null && Animator.timeouts.remove(node);\n  },\n  cancelImmediate(node) {\n    node != null && Animator.immediates.remove(node);\n  },\n  _draw(now) {\n    // Run all the timeouts we can run, if they are not ready yet, add them\n    // to the end of the queue immediately! (bad timeouts!!! [sarcasm])\n    let nextTimeout = null;\n    const lastTimeout = Animator.timeouts.last();\n    while (nextTimeout = Animator.timeouts.shift()) {\n      // Run the timeout if its time, or push it to the end\n      if (now >= nextTimeout.time) {\n        nextTimeout.run();\n      } else {\n        Animator.timeouts.push(nextTimeout);\n      }\n\n      // If we hit the last item, we should stop shifting out more items\n      if (nextTimeout === lastTimeout) break;\n    }\n\n    // Run all of the animation frames\n    let nextFrame = null;\n    const lastFrame = Animator.frames.last();\n    while (nextFrame !== lastFrame && (nextFrame = Animator.frames.shift())) {\n      nextFrame.run(now);\n    }\n    let nextImmediate = null;\n    while (nextImmediate = Animator.immediates.shift()) {\n      nextImmediate();\n    }\n\n    // If we have remaining timeouts or frames, draw until we don't anymore\n    Animator.nextDraw = Animator.timeouts.first() || Animator.frames.first() ? globals.window.requestAnimationFrame(Animator._draw) : null;\n  }\n};\n\nconst makeSchedule = function (runnerInfo) {\n  const start = runnerInfo.start;\n  const duration = runnerInfo.runner.duration();\n  const end = start + duration;\n  return {\n    start: start,\n    duration: duration,\n    end: end,\n    runner: runnerInfo.runner\n  };\n};\nconst defaultSource = function () {\n  const w = globals.window;\n  return (w.performance || w.Date).now();\n};\nclass Timeline extends EventTarget {\n  // Construct a new timeline on the given element\n  constructor(timeSource = defaultSource) {\n    super();\n    this._timeSource = timeSource;\n\n    // terminate resets all variables to their initial state\n    this.terminate();\n  }\n  active() {\n    return !!this._nextFrame;\n  }\n  finish() {\n    // Go to end and pause\n    this.time(this.getEndTimeOfTimeline() + 1);\n    return this.pause();\n  }\n\n  // Calculates the end of the timeline\n  getEndTime() {\n    const lastRunnerInfo = this.getLastRunnerInfo();\n    const lastDuration = lastRunnerInfo ? lastRunnerInfo.runner.duration() : 0;\n    const lastStartTime = lastRunnerInfo ? lastRunnerInfo.start : this._time;\n    return lastStartTime + lastDuration;\n  }\n  getEndTimeOfTimeline() {\n    const endTimes = this._runners.map(i => i.start + i.runner.duration());\n    return Math.max(0, ...endTimes);\n  }\n  getLastRunnerInfo() {\n    return this.getRunnerInfoById(this._lastRunnerId);\n  }\n  getRunnerInfoById(id) {\n    return this._runners[this._runnerIds.indexOf(id)] || null;\n  }\n  pause() {\n    this._paused = true;\n    return this._continue();\n  }\n  persist(dtOrForever) {\n    if (dtOrForever == null) return this._persist;\n    this._persist = dtOrForever;\n    return this;\n  }\n  play() {\n    // Now make sure we are not paused and continue the animation\n    this._paused = false;\n    return this.updateTime()._continue();\n  }\n  reverse(yes) {\n    const currentSpeed = this.speed();\n    if (yes == null) return this.speed(-currentSpeed);\n    const positive = Math.abs(currentSpeed);\n    return this.speed(yes ? -positive : positive);\n  }\n\n  // schedules a runner on the timeline\n  schedule(runner, delay, when) {\n    if (runner == null) {\n      return this._runners.map(makeSchedule);\n    }\n\n    // The start time for the next animation can either be given explicitly,\n    // derived from the current timeline time or it can be relative to the\n    // last start time to chain animations directly\n\n    let absoluteStartTime = 0;\n    const endTime = this.getEndTime();\n    delay = delay || 0;\n\n    // Work out when to start the animation\n    if (when == null || when === 'last' || when === 'after') {\n      // Take the last time and increment\n      absoluteStartTime = endTime;\n    } else if (when === 'absolute' || when === 'start') {\n      absoluteStartTime = delay;\n      delay = 0;\n    } else if (when === 'now') {\n      absoluteStartTime = this._time;\n    } else if (when === 'relative') {\n      const runnerInfo = this.getRunnerInfoById(runner.id);\n      if (runnerInfo) {\n        absoluteStartTime = runnerInfo.start + delay;\n        delay = 0;\n      }\n    } else if (when === 'with-last') {\n      const lastRunnerInfo = this.getLastRunnerInfo();\n      const lastStartTime = lastRunnerInfo ? lastRunnerInfo.start : this._time;\n      absoluteStartTime = lastStartTime;\n    } else {\n      throw new Error('Invalid value for the \"when\" parameter');\n    }\n\n    // Manage runner\n    runner.unschedule();\n    runner.timeline(this);\n    const persist = runner.persist();\n    const runnerInfo = {\n      persist: persist === null ? this._persist : persist,\n      start: absoluteStartTime + delay,\n      runner\n    };\n    this._lastRunnerId = runner.id;\n    this._runners.push(runnerInfo);\n    this._runners.sort((a, b) => a.start - b.start);\n    this._runnerIds = this._runners.map(info => info.runner.id);\n    this.updateTime()._continue();\n    return this;\n  }\n  seek(dt) {\n    return this.time(this._time + dt);\n  }\n  source(fn) {\n    if (fn == null) return this._timeSource;\n    this._timeSource = fn;\n    return this;\n  }\n  speed(speed) {\n    if (speed == null) return this._speed;\n    this._speed = speed;\n    return this;\n  }\n  stop() {\n    // Go to start and pause\n    this.time(0);\n    return this.pause();\n  }\n  time(time) {\n    if (time == null) return this._time;\n    this._time = time;\n    return this._continue(true);\n  }\n\n  // Remove the runner from this timeline\n  unschedule(runner) {\n    const index = this._runnerIds.indexOf(runner.id);\n    if (index < 0) return this;\n    this._runners.splice(index, 1);\n    this._runnerIds.splice(index, 1);\n    runner.timeline(null);\n    return this;\n  }\n\n  // Makes sure, that after pausing the time doesn't jump\n  updateTime() {\n    if (!this.active()) {\n      this._lastSourceTime = this._timeSource();\n    }\n    return this;\n  }\n\n  // Checks if we are running and continues the animation\n  _continue(immediateStep = false) {\n    Animator.cancelFrame(this._nextFrame);\n    this._nextFrame = null;\n    if (immediateStep) return this._stepImmediate();\n    if (this._paused) return this;\n    this._nextFrame = Animator.frame(this._step);\n    return this;\n  }\n  _stepFn(immediateStep = false) {\n    // Get the time delta from the last time and update the time\n    const time = this._timeSource();\n    let dtSource = time - this._lastSourceTime;\n    if (immediateStep) dtSource = 0;\n    const dtTime = this._speed * dtSource + (this._time - this._lastStepTime);\n    this._lastSourceTime = time;\n\n    // Only update the time if we use the timeSource.\n    // Otherwise use the current time\n    if (!immediateStep) {\n      // Update the time\n      this._time += dtTime;\n      this._time = this._time < 0 ? 0 : this._time;\n    }\n    this._lastStepTime = this._time;\n    this.fire('time', this._time);\n\n    // This is for the case that the timeline was seeked so that the time\n    // is now before the startTime of the runner. That is why we need to set\n    // the runner to position 0\n\n    // FIXME:\n    // However, resetting in insertion order leads to bugs. Considering the case,\n    // where 2 runners change the same attribute but in different times,\n    // resetting both of them will lead to the case where the later defined\n    // runner always wins the reset even if the other runner started earlier\n    // and therefore should win the attribute battle\n    // this can be solved by resetting them backwards\n    for (let k = this._runners.length; k--;) {\n      // Get and run the current runner and ignore it if its inactive\n      const runnerInfo = this._runners[k];\n      const runner = runnerInfo.runner;\n\n      // Make sure that we give the actual difference\n      // between runner start time and now\n      const dtToStart = this._time - runnerInfo.start;\n\n      // Dont run runner if not started yet\n      // and try to reset it\n      if (dtToStart <= 0) {\n        runner.reset();\n      }\n    }\n\n    // Run all of the runners directly\n    let runnersLeft = false;\n    for (let i = 0, len = this._runners.length; i < len; i++) {\n      // Get and run the current runner and ignore it if its inactive\n      const runnerInfo = this._runners[i];\n      const runner = runnerInfo.runner;\n      let dt = dtTime;\n\n      // Make sure that we give the actual difference\n      // between runner start time and now\n      const dtToStart = this._time - runnerInfo.start;\n\n      // Dont run runner if not started yet\n      if (dtToStart <= 0) {\n        runnersLeft = true;\n        continue;\n      } else if (dtToStart < dt) {\n        // Adjust dt to make sure that animation is on point\n        dt = dtToStart;\n      }\n      if (!runner.active()) continue;\n\n      // If this runner is still going, signal that we need another animation\n      // frame, otherwise, remove the completed runner\n      const finished = runner.step(dt).done;\n      if (!finished) {\n        runnersLeft = true;\n        // continue\n      } else if (runnerInfo.persist !== true) {\n        // runner is finished. And runner might get removed\n        const endTime = runner.duration() - runner.time() + this._time;\n        if (endTime + runnerInfo.persist < this._time) {\n          // Delete runner and correct index\n          runner.unschedule();\n          --i;\n          --len;\n        }\n      }\n    }\n\n    // Basically: we continue when there are runners right from us in time\n    // when -->, and when runners are left from us when <--\n    if (runnersLeft && !(this._speed < 0 && this._time === 0) || this._runnerIds.length && this._speed < 0 && this._time > 0) {\n      this._continue();\n    } else {\n      this.pause();\n      this.fire('finished');\n    }\n    return this;\n  }\n  terminate() {\n    // cleanup memory\n\n    // Store the timing variables\n    this._startTime = 0;\n    this._speed = 1.0;\n\n    // Determines how long a runner is hold in memory. Can be a dt or true/false\n    this._persist = 0;\n\n    // Keep track of the running animations and their starting parameters\n    this._nextFrame = null;\n    this._paused = true;\n    this._runners = [];\n    this._runnerIds = [];\n    this._lastRunnerId = -1;\n    this._time = 0;\n    this._lastSourceTime = 0;\n    this._lastStepTime = 0;\n\n    // Make sure that step is always called in class context\n    this._step = this._stepFn.bind(this, false);\n    this._stepImmediate = this._stepFn.bind(this, true);\n  }\n}\nregisterMethods({\n  Element: {\n    timeline: function (timeline) {\n      if (timeline == null) {\n        this._timeline = this._timeline || new Timeline();\n        return this._timeline;\n      } else {\n        this._timeline = timeline;\n        return this;\n      }\n    }\n  }\n});\n\nclass Runner extends EventTarget {\n  constructor(options) {\n    super();\n\n    // Store a unique id on the runner, so that we can identify it later\n    this.id = Runner.id++;\n\n    // Ensure a default value\n    options = options == null ? timeline.duration : options;\n\n    // Ensure that we get a controller\n    options = typeof options === 'function' ? new Controller(options) : options;\n\n    // Declare all of the variables\n    this._element = null;\n    this._timeline = null;\n    this.done = false;\n    this._queue = [];\n\n    // Work out the stepper and the duration\n    this._duration = typeof options === 'number' && options;\n    this._isDeclarative = options instanceof Controller;\n    this._stepper = this._isDeclarative ? options : new Ease();\n\n    // We copy the current values from the timeline because they can change\n    this._history = {};\n\n    // Store the state of the runner\n    this.enabled = true;\n    this._time = 0;\n    this._lastTime = 0;\n\n    // At creation, the runner is in reset state\n    this._reseted = true;\n\n    // Save transforms applied to this runner\n    this.transforms = new Matrix();\n    this.transformId = 1;\n\n    // Looping variables\n    this._haveReversed = false;\n    this._reverse = false;\n    this._loopsDone = 0;\n    this._swing = false;\n    this._wait = 0;\n    this._times = 1;\n    this._frameId = null;\n\n    // Stores how long a runner is stored after being done\n    this._persist = this._isDeclarative ? true : null;\n  }\n  static sanitise(duration, delay, when) {\n    // Initialise the default parameters\n    let times = 1;\n    let swing = false;\n    let wait = 0;\n    duration = duration ?? timeline.duration;\n    delay = delay ?? timeline.delay;\n    when = when || 'last';\n\n    // If we have an object, unpack the values\n    if (typeof duration === 'object' && !(duration instanceof Stepper)) {\n      delay = duration.delay ?? delay;\n      when = duration.when ?? when;\n      swing = duration.swing || swing;\n      times = duration.times ?? times;\n      wait = duration.wait ?? wait;\n      duration = duration.duration ?? timeline.duration;\n    }\n    return {\n      duration: duration,\n      delay: delay,\n      swing: swing,\n      times: times,\n      wait: wait,\n      when: when\n    };\n  }\n  active(enabled) {\n    if (enabled == null) return this.enabled;\n    this.enabled = enabled;\n    return this;\n  }\n\n  /*\n  Private Methods\n  ===============\n  Methods that shouldn't be used externally\n  */\n  addTransform(transform) {\n    this.transforms.lmultiplyO(transform);\n    return this;\n  }\n  after(fn) {\n    return this.on('finished', fn);\n  }\n  animate(duration, delay, when) {\n    const o = Runner.sanitise(duration, delay, when);\n    const runner = new Runner(o.duration);\n    if (this._timeline) runner.timeline(this._timeline);\n    if (this._element) runner.element(this._element);\n    return runner.loop(o).schedule(o.delay, o.when);\n  }\n  clearTransform() {\n    this.transforms = new Matrix();\n    return this;\n  }\n\n  // TODO: Keep track of all transformations so that deletion is faster\n  clearTransformsFromQueue() {\n    if (!this.done || !this._timeline || !this._timeline._runnerIds.includes(this.id)) {\n      this._queue = this._queue.filter(item => {\n        return !item.isTransform;\n      });\n    }\n  }\n  delay(delay) {\n    return this.animate(0, delay);\n  }\n  duration() {\n    return this._times * (this._wait + this._duration) - this._wait;\n  }\n  during(fn) {\n    return this.queue(null, fn);\n  }\n  ease(fn) {\n    this._stepper = new Ease(fn);\n    return this;\n  }\n  /*\n  Runner Definitions\n  ==================\n  These methods help us define the runtime behaviour of the Runner or they\n  help us make new runners from the current runner\n  */\n\n  element(element) {\n    if (element == null) return this._element;\n    this._element = element;\n    element._prepareRunner();\n    return this;\n  }\n  finish() {\n    return this.step(Infinity);\n  }\n  loop(times, swing, wait) {\n    // Deal with the user passing in an object\n    if (typeof times === 'object') {\n      swing = times.swing;\n      wait = times.wait;\n      times = times.times;\n    }\n\n    // Sanitise the values and store them\n    this._times = times || Infinity;\n    this._swing = swing || false;\n    this._wait = wait || 0;\n\n    // Allow true to be passed\n    if (this._times === true) {\n      this._times = Infinity;\n    }\n    return this;\n  }\n  loops(p) {\n    const loopDuration = this._duration + this._wait;\n    if (p == null) {\n      const loopsDone = Math.floor(this._time / loopDuration);\n      const relativeTime = this._time - loopsDone * loopDuration;\n      const position = relativeTime / this._duration;\n      return Math.min(loopsDone + position, this._times);\n    }\n    const whole = Math.floor(p);\n    const partial = p % 1;\n    const time = loopDuration * whole + this._duration * partial;\n    return this.time(time);\n  }\n  persist(dtOrForever) {\n    if (dtOrForever == null) return this._persist;\n    this._persist = dtOrForever;\n    return this;\n  }\n  position(p) {\n    // Get all of the variables we need\n    const x = this._time;\n    const d = this._duration;\n    const w = this._wait;\n    const t = this._times;\n    const s = this._swing;\n    const r = this._reverse;\n    let position;\n    if (p == null) {\n      /*\n      This function converts a time to a position in the range [0, 1]\n      The full explanation can be found in this desmos demonstration\n        https://www.desmos.com/calculator/u4fbavgche\n      The logic is slightly simplified here because we can use booleans\n      */\n\n      // Figure out the value without thinking about the start or end time\n      const f = function (x) {\n        const swinging = s * Math.floor(x % (2 * (w + d)) / (w + d));\n        const backwards = swinging && !r || !swinging && r;\n        const uncliped = Math.pow(-1, backwards) * (x % (w + d)) / d + backwards;\n        const clipped = Math.max(Math.min(uncliped, 1), 0);\n        return clipped;\n      };\n\n      // Figure out the value by incorporating the start time\n      const endTime = t * (w + d) - w;\n      position = x <= 0 ? Math.round(f(1e-5)) : x < endTime ? f(x) : Math.round(f(endTime - 1e-5));\n      return position;\n    }\n\n    // Work out the loops done and add the position to the loops done\n    const loopsDone = Math.floor(this.loops());\n    const swingForward = s && loopsDone % 2 === 0;\n    const forwards = swingForward && !r || r && swingForward;\n    position = loopsDone + (forwards ? p : 1 - p);\n    return this.loops(position);\n  }\n  progress(p) {\n    if (p == null) {\n      return Math.min(1, this._time / this.duration());\n    }\n    return this.time(p * this.duration());\n  }\n\n  /*\n  Basic Functionality\n  ===================\n  These methods allow us to attach basic functions to the runner directly\n  */\n  queue(initFn, runFn, retargetFn, isTransform) {\n    this._queue.push({\n      initialiser: initFn || noop,\n      runner: runFn || noop,\n      retarget: retargetFn,\n      isTransform: isTransform,\n      initialised: false,\n      finished: false\n    });\n    const timeline = this.timeline();\n    timeline && this.timeline()._continue();\n    return this;\n  }\n  reset() {\n    if (this._reseted) return this;\n    this.time(0);\n    this._reseted = true;\n    return this;\n  }\n  reverse(reverse) {\n    this._reverse = reverse == null ? !this._reverse : reverse;\n    return this;\n  }\n  schedule(timeline, delay, when) {\n    // The user doesn't need to pass a timeline if we already have one\n    if (!(timeline instanceof Timeline)) {\n      when = delay;\n      delay = timeline;\n      timeline = this.timeline();\n    }\n\n    // If there is no timeline, yell at the user...\n    if (!timeline) {\n      throw Error('Runner cannot be scheduled without timeline');\n    }\n\n    // Schedule the runner on the timeline provided\n    timeline.schedule(this, delay, when);\n    return this;\n  }\n  step(dt) {\n    // If we are inactive, this stepper just gets skipped\n    if (!this.enabled) return this;\n\n    // Update the time and get the new position\n    dt = dt == null ? 16 : dt;\n    this._time += dt;\n    const position = this.position();\n\n    // Figure out if we need to run the stepper in this frame\n    const running = this._lastPosition !== position && this._time >= 0;\n    this._lastPosition = position;\n\n    // Figure out if we just started\n    const duration = this.duration();\n    const justStarted = this._lastTime <= 0 && this._time > 0;\n    const justFinished = this._lastTime < duration && this._time >= duration;\n    this._lastTime = this._time;\n    if (justStarted) {\n      this.fire('start', this);\n    }\n\n    // Work out if the runner is finished set the done flag here so animations\n    // know, that they are running in the last step (this is good for\n    // transformations which can be merged)\n    const declarative = this._isDeclarative;\n    this.done = !declarative && !justFinished && this._time >= duration;\n\n    // Runner is running. So its not in reset state anymore\n    this._reseted = false;\n    let converged = false;\n    // Call initialise and the run function\n    if (running || declarative) {\n      this._initialise(running);\n\n      // clear the transforms on this runner so they dont get added again and again\n      this.transforms = new Matrix();\n      converged = this._run(declarative ? dt : position);\n      this.fire('step', this);\n    }\n    // correct the done flag here\n    // declarative animations itself know when they converged\n    this.done = this.done || converged && declarative;\n    if (justFinished) {\n      this.fire('finished', this);\n    }\n    return this;\n  }\n\n  /*\n  Runner animation methods\n  ========================\n  Control how the animation plays\n  */\n  time(time) {\n    if (time == null) {\n      return this._time;\n    }\n    const dt = time - this._time;\n    this.step(dt);\n    return this;\n  }\n  timeline(timeline) {\n    // check explicitly for undefined so we can set the timeline to null\n    if (typeof timeline === 'undefined') return this._timeline;\n    this._timeline = timeline;\n    return this;\n  }\n  unschedule() {\n    const timeline = this.timeline();\n    timeline && timeline.unschedule(this);\n    return this;\n  }\n\n  // Run each initialise function in the runner if required\n  _initialise(running) {\n    // If we aren't running, we shouldn't initialise when not declarative\n    if (!running && !this._isDeclarative) return;\n\n    // Loop through all of the initialisers\n    for (let i = 0, len = this._queue.length; i < len; ++i) {\n      // Get the current initialiser\n      const current = this._queue[i];\n\n      // Determine whether we need to initialise\n      const needsIt = this._isDeclarative || !current.initialised && running;\n      running = !current.finished;\n\n      // Call the initialiser if we need to\n      if (needsIt && running) {\n        current.initialiser.call(this);\n        current.initialised = true;\n      }\n    }\n  }\n\n  // Save a morpher to the morpher list so that we can retarget it later\n  _rememberMorpher(method, morpher) {\n    this._history[method] = {\n      morpher: morpher,\n      caller: this._queue[this._queue.length - 1]\n    };\n\n    // We have to resume the timeline in case a controller\n    // is already done without being ever run\n    // This can happen when e.g. this is done:\n    //    anim = el.animate(new SVG.Spring)\n    // and later\n    //    anim.move(...)\n    if (this._isDeclarative) {\n      const timeline = this.timeline();\n      timeline && timeline.play();\n    }\n  }\n\n  // Try to set the target for a morpher if the morpher exists, otherwise\n  // Run each run function for the position or dt given\n  _run(positionOrDt) {\n    // Run all of the _queue directly\n    let allfinished = true;\n    for (let i = 0, len = this._queue.length; i < len; ++i) {\n      // Get the current function to run\n      const current = this._queue[i];\n\n      // Run the function if its not finished, we keep track of the finished\n      // flag for the sake of declarative _queue\n      const converged = current.runner.call(this, positionOrDt);\n      current.finished = current.finished || converged === true;\n      allfinished = allfinished && current.finished;\n    }\n\n    // We report when all of the constructors are finished\n    return allfinished;\n  }\n\n  // do nothing and return false\n  _tryRetarget(method, target, extra) {\n    if (this._history[method]) {\n      // if the last method wasn't even initialised, throw it away\n      if (!this._history[method].caller.initialised) {\n        const index = this._queue.indexOf(this._history[method].caller);\n        this._queue.splice(index, 1);\n        return false;\n      }\n\n      // for the case of transformations, we use the special retarget function\n      // which has access to the outer scope\n      if (this._history[method].caller.retarget) {\n        this._history[method].caller.retarget.call(this, target, extra);\n        // for everything else a simple morpher change is sufficient\n      } else {\n        this._history[method].morpher.to(target);\n      }\n      this._history[method].caller.finished = false;\n      const timeline = this.timeline();\n      timeline && timeline.play();\n      return true;\n    }\n    return false;\n  }\n}\nRunner.id = 0;\nclass FakeRunner {\n  constructor(transforms = new Matrix(), id = -1, done = true) {\n    this.transforms = transforms;\n    this.id = id;\n    this.done = done;\n  }\n  clearTransformsFromQueue() {}\n}\nextend([Runner, FakeRunner], {\n  mergeWith(runner) {\n    return new FakeRunner(runner.transforms.lmultiply(this.transforms), runner.id);\n  }\n});\n\n// FakeRunner.emptyRunner = new FakeRunner()\n\nconst lmultiply = (last, curr) => last.lmultiplyO(curr);\nconst getRunnerTransform = runner => runner.transforms;\nfunction mergeTransforms() {\n  // Find the matrix to apply to the element and apply it\n  const runners = this._transformationRunners.runners;\n  const netTransform = runners.map(getRunnerTransform).reduce(lmultiply, new Matrix());\n  this.transform(netTransform);\n  this._transformationRunners.merge();\n  if (this._transformationRunners.length() === 1) {\n    this._frameId = null;\n  }\n}\nclass RunnerArray {\n  constructor() {\n    this.runners = [];\n    this.ids = [];\n  }\n  add(runner) {\n    if (this.runners.includes(runner)) return;\n    const id = runner.id + 1;\n    this.runners.push(runner);\n    this.ids.push(id);\n    return this;\n  }\n  clearBefore(id) {\n    const deleteCnt = this.ids.indexOf(id + 1) || 1;\n    this.ids.splice(0, deleteCnt, 0);\n    this.runners.splice(0, deleteCnt, new FakeRunner()).forEach(r => r.clearTransformsFromQueue());\n    return this;\n  }\n  edit(id, newRunner) {\n    const index = this.ids.indexOf(id + 1);\n    this.ids.splice(index, 1, id + 1);\n    this.runners.splice(index, 1, newRunner);\n    return this;\n  }\n  getByID(id) {\n    return this.runners[this.ids.indexOf(id + 1)];\n  }\n  length() {\n    return this.ids.length;\n  }\n  merge() {\n    let lastRunner = null;\n    for (let i = 0; i < this.runners.length; ++i) {\n      const runner = this.runners[i];\n      const condition = lastRunner && runner.done && lastRunner.done && (\n      // don't merge runner when persisted on timeline\n      !runner._timeline || !runner._timeline._runnerIds.includes(runner.id)) && (!lastRunner._timeline || !lastRunner._timeline._runnerIds.includes(lastRunner.id));\n      if (condition) {\n        // the +1 happens in the function\n        this.remove(runner.id);\n        const newRunner = runner.mergeWith(lastRunner);\n        this.edit(lastRunner.id, newRunner);\n        lastRunner = newRunner;\n        --i;\n      } else {\n        lastRunner = runner;\n      }\n    }\n    return this;\n  }\n  remove(id) {\n    const index = this.ids.indexOf(id + 1);\n    this.ids.splice(index, 1);\n    this.runners.splice(index, 1);\n    return this;\n  }\n}\nregisterMethods({\n  Element: {\n    animate(duration, delay, when) {\n      const o = Runner.sanitise(duration, delay, when);\n      const timeline = this.timeline();\n      return new Runner(o.duration).loop(o).element(this).timeline(timeline.play()).schedule(o.delay, o.when);\n    },\n    delay(by, when) {\n      return this.animate(0, by, when);\n    },\n    // this function searches for all runners on the element and deletes the ones\n    // which run before the current one. This is because absolute transformations\n    // overwrite anything anyway so there is no need to waste time computing\n    // other runners\n    _clearTransformRunnersBefore(currentRunner) {\n      this._transformationRunners.clearBefore(currentRunner.id);\n    },\n    _currentTransform(current) {\n      return this._transformationRunners.runners\n      // we need the equal sign here to make sure, that also transformations\n      // on the same runner which execute before the current transformation are\n      // taken into account\n      .filter(runner => runner.id <= current.id).map(getRunnerTransform).reduce(lmultiply, new Matrix());\n    },\n    _addRunner(runner) {\n      this._transformationRunners.add(runner);\n\n      // Make sure that the runner merge is executed at the very end of\n      // all Animator functions. That is why we use immediate here to execute\n      // the merge right after all frames are run\n      Animator.cancelImmediate(this._frameId);\n      this._frameId = Animator.immediate(mergeTransforms.bind(this));\n    },\n    _prepareRunner() {\n      if (this._frameId == null) {\n        this._transformationRunners = new RunnerArray().add(new FakeRunner(new Matrix(this)));\n      }\n    }\n  }\n});\n\n// Will output the elements from array A that are not in the array B\nconst difference = (a, b) => a.filter(x => !b.includes(x));\nextend(Runner, {\n  attr(a, v) {\n    return this.styleAttr('attr', a, v);\n  },\n  // Add animatable styles\n  css(s, v) {\n    return this.styleAttr('css', s, v);\n  },\n  styleAttr(type, nameOrAttrs, val) {\n    if (typeof nameOrAttrs === 'string') {\n      return this.styleAttr(type, {\n        [nameOrAttrs]: val\n      });\n    }\n    let attrs = nameOrAttrs;\n    if (this._tryRetarget(type, attrs)) return this;\n    let morpher = new Morphable(this._stepper).to(attrs);\n    let keys = Object.keys(attrs);\n    this.queue(function () {\n      morpher = morpher.from(this.element()[type](keys));\n    }, function (pos) {\n      this.element()[type](morpher.at(pos).valueOf());\n      return morpher.done();\n    }, function (newToAttrs) {\n      // Check if any new keys were added\n      const newKeys = Object.keys(newToAttrs);\n      const differences = difference(newKeys, keys);\n\n      // If their are new keys, initialize them and add them to morpher\n      if (differences.length) {\n        // Get the values\n        const addedFromAttrs = this.element()[type](differences);\n\n        // Get the already initialized values\n        const oldFromAttrs = new ObjectBag(morpher.from()).valueOf();\n\n        // Merge old and new\n        Object.assign(oldFromAttrs, addedFromAttrs);\n        morpher.from(oldFromAttrs);\n      }\n\n      // Get the object from the morpher\n      const oldToAttrs = new ObjectBag(morpher.to()).valueOf();\n\n      // Merge in new attributes\n      Object.assign(oldToAttrs, newToAttrs);\n\n      // Change morpher target\n      morpher.to(oldToAttrs);\n\n      // Make sure that we save the work we did so we don't need it to do again\n      keys = newKeys;\n      attrs = newToAttrs;\n    });\n    this._rememberMorpher(type, morpher);\n    return this;\n  },\n  zoom(level, point) {\n    if (this._tryRetarget('zoom', level, point)) return this;\n    let morpher = new Morphable(this._stepper).to(new SVGNumber(level));\n    this.queue(function () {\n      morpher = morpher.from(this.element().zoom());\n    }, function (pos) {\n      this.element().zoom(morpher.at(pos), point);\n      return morpher.done();\n    }, function (newLevel, newPoint) {\n      point = newPoint;\n      morpher.to(newLevel);\n    });\n    this._rememberMorpher('zoom', morpher);\n    return this;\n  },\n  /**\n   ** absolute transformations\n   **/\n\n  //\n  // M v -----|-----(D M v = F v)------|----->  T v\n  //\n  // 1. define the final state (T) and decompose it (once)\n  //    t = [tx, ty, the, lam, sy, sx]\n  // 2. on every frame: pull the current state of all previous transforms\n  //    (M - m can change)\n  //   and then write this as m = [tx0, ty0, the0, lam0, sy0, sx0]\n  // 3. Find the interpolated matrix F(pos) = m + pos * (t - m)\n  //   - Note F(0) = M\n  //   - Note F(1) = T\n  // 4. Now you get the delta matrix as a result: D = F * inv(M)\n\n  transform(transforms, relative, affine) {\n    // If we have a declarative function, we should retarget it if possible\n    relative = transforms.relative || relative;\n    if (this._isDeclarative && !relative && this._tryRetarget('transform', transforms)) {\n      return this;\n    }\n\n    // Parse the parameters\n    const isMatrix = Matrix.isMatrixLike(transforms);\n    affine = transforms.affine != null ? transforms.affine : affine != null ? affine : !isMatrix;\n\n    // Create a morpher and set its type\n    const morpher = new Morphable(this._stepper).type(affine ? TransformBag : Matrix);\n    let origin;\n    let element;\n    let current;\n    let currentAngle;\n    let startTransform;\n    function setup() {\n      // make sure element and origin is defined\n      element = element || this.element();\n      origin = origin || getOrigin(transforms, element);\n      startTransform = new Matrix(relative ? undefined : element);\n\n      // add the runner to the element so it can merge transformations\n      element._addRunner(this);\n\n      // Deactivate all transforms that have run so far if we are absolute\n      if (!relative) {\n        element._clearTransformRunnersBefore(this);\n      }\n    }\n    function run(pos) {\n      // clear all other transforms before this in case something is saved\n      // on this runner. We are absolute. We dont need these!\n      if (!relative) this.clearTransform();\n      const {\n        x,\n        y\n      } = new Point(origin).transform(element._currentTransform(this));\n      let target = new Matrix({\n        ...transforms,\n        origin: [x, y]\n      });\n      let start = this._isDeclarative && current ? current : startTransform;\n      if (affine) {\n        target = target.decompose(x, y);\n        start = start.decompose(x, y);\n\n        // Get the current and target angle as it was set\n        const rTarget = target.rotate;\n        const rCurrent = start.rotate;\n\n        // Figure out the shortest path to rotate directly\n        const possibilities = [rTarget - 360, rTarget, rTarget + 360];\n        const distances = possibilities.map(a => Math.abs(a - rCurrent));\n        const shortest = Math.min(...distances);\n        const index = distances.indexOf(shortest);\n        target.rotate = possibilities[index];\n      }\n      if (relative) {\n        // we have to be careful here not to overwrite the rotation\n        // with the rotate method of Matrix\n        if (!isMatrix) {\n          target.rotate = transforms.rotate || 0;\n        }\n        if (this._isDeclarative && currentAngle) {\n          start.rotate = currentAngle;\n        }\n      }\n      morpher.from(start);\n      morpher.to(target);\n      const affineParameters = morpher.at(pos);\n      currentAngle = affineParameters.rotate;\n      current = new Matrix(affineParameters);\n      this.addTransform(current);\n      element._addRunner(this);\n      return morpher.done();\n    }\n    function retarget(newTransforms) {\n      // only get a new origin if it changed since the last call\n      if ((newTransforms.origin || 'center').toString() !== (transforms.origin || 'center').toString()) {\n        origin = getOrigin(newTransforms, element);\n      }\n\n      // overwrite the old transformations with the new ones\n      transforms = {\n        ...newTransforms,\n        origin\n      };\n    }\n    this.queue(setup, run, retarget, true);\n    this._isDeclarative && this._rememberMorpher('transform', morpher);\n    return this;\n  },\n  // Animatable x-axis\n  x(x) {\n    return this._queueNumber('x', x);\n  },\n  // Animatable y-axis\n  y(y) {\n    return this._queueNumber('y', y);\n  },\n  ax(x) {\n    return this._queueNumber('ax', x);\n  },\n  ay(y) {\n    return this._queueNumber('ay', y);\n  },\n  dx(x = 0) {\n    return this._queueNumberDelta('x', x);\n  },\n  dy(y = 0) {\n    return this._queueNumberDelta('y', y);\n  },\n  dmove(x, y) {\n    return this.dx(x).dy(y);\n  },\n  _queueNumberDelta(method, to) {\n    to = new SVGNumber(to);\n\n    // Try to change the target if we have this method already registered\n    if (this._tryRetarget(method, to)) return this;\n\n    // Make a morpher and queue the animation\n    const morpher = new Morphable(this._stepper).to(to);\n    let from = null;\n    this.queue(function () {\n      from = this.element()[method]();\n      morpher.from(from);\n      morpher.to(from + to);\n    }, function (pos) {\n      this.element()[method](morpher.at(pos));\n      return morpher.done();\n    }, function (newTo) {\n      morpher.to(from + new SVGNumber(newTo));\n    });\n\n    // Register the morpher so that if it is changed again, we can retarget it\n    this._rememberMorpher(method, morpher);\n    return this;\n  },\n  _queueObject(method, to) {\n    // Try to change the target if we have this method already registered\n    if (this._tryRetarget(method, to)) return this;\n\n    // Make a morpher and queue the animation\n    const morpher = new Morphable(this._stepper).to(to);\n    this.queue(function () {\n      morpher.from(this.element()[method]());\n    }, function (pos) {\n      this.element()[method](morpher.at(pos));\n      return morpher.done();\n    });\n\n    // Register the morpher so that if it is changed again, we can retarget it\n    this._rememberMorpher(method, morpher);\n    return this;\n  },\n  _queueNumber(method, value) {\n    return this._queueObject(method, new SVGNumber(value));\n  },\n  // Animatable center x-axis\n  cx(x) {\n    return this._queueNumber('cx', x);\n  },\n  // Animatable center y-axis\n  cy(y) {\n    return this._queueNumber('cy', y);\n  },\n  // Add animatable move\n  move(x, y) {\n    return this.x(x).y(y);\n  },\n  amove(x, y) {\n    return this.ax(x).ay(y);\n  },\n  // Add animatable center\n  center(x, y) {\n    return this.cx(x).cy(y);\n  },\n  // Add animatable size\n  size(width, height) {\n    // animate bbox based size for all other elements\n    let box;\n    if (!width || !height) {\n      box = this._element.bbox();\n    }\n    if (!width) {\n      width = box.width / box.height * height;\n    }\n    if (!height) {\n      height = box.height / box.width * width;\n    }\n    return this.width(width).height(height);\n  },\n  // Add animatable width\n  width(width) {\n    return this._queueNumber('width', width);\n  },\n  // Add animatable height\n  height(height) {\n    return this._queueNumber('height', height);\n  },\n  // Add animatable plot\n  plot(a, b, c, d) {\n    // Lines can be plotted with 4 arguments\n    if (arguments.length === 4) {\n      return this.plot([a, b, c, d]);\n    }\n    if (this._tryRetarget('plot', a)) return this;\n    const morpher = new Morphable(this._stepper).type(this._element.MorphArray).to(a);\n    this.queue(function () {\n      morpher.from(this._element.array());\n    }, function (pos) {\n      this._element.plot(morpher.at(pos));\n      return morpher.done();\n    });\n    this._rememberMorpher('plot', morpher);\n    return this;\n  },\n  // Add leading method\n  leading(value) {\n    return this._queueNumber('leading', value);\n  },\n  // Add animatable viewbox\n  viewbox(x, y, width, height) {\n    return this._queueObject('viewbox', new Box(x, y, width, height));\n  },\n  update(o) {\n    if (typeof o !== 'object') {\n      return this.update({\n        offset: arguments[0],\n        color: arguments[1],\n        opacity: arguments[2]\n      });\n    }\n    if (o.opacity != null) this.attr('stop-opacity', o.opacity);\n    if (o.color != null) this.attr('stop-color', o.color);\n    if (o.offset != null) this.attr('offset', o.offset);\n    return this;\n  }\n});\nextend(Runner, {\n  rx,\n  ry,\n  from,\n  to\n});\nregister(Runner, 'Runner');\n\nclass Svg extends Container {\n  constructor(node, attrs = node) {\n    super(nodeOrNew('svg', node), attrs);\n    this.namespace();\n  }\n\n  // Creates and returns defs element\n  defs() {\n    if (!this.isRoot()) return this.root().defs();\n    return adopt(this.node.querySelector('defs')) || this.put(new Defs());\n  }\n  isRoot() {\n    return !this.node.parentNode || !(this.node.parentNode instanceof globals.window.SVGElement) && this.node.parentNode.nodeName !== '#document-fragment';\n  }\n\n  // Add namespaces\n  namespace() {\n    if (!this.isRoot()) return this.root().namespace();\n    return this.attr({\n      xmlns: svg,\n      version: '1.1'\n    }).attr('xmlns:xlink', xlink, xmlns);\n  }\n  removeNamespace() {\n    return this.attr({\n      xmlns: null,\n      version: null\n    }).attr('xmlns:xlink', null, xmlns).attr('xmlns:svgjs', null, xmlns);\n  }\n\n  // Check if this is a root svg\n  // If not, call root() from this element\n  root() {\n    if (this.isRoot()) return this;\n    return super.root();\n  }\n}\nregisterMethods({\n  Container: {\n    // Create nested svg document\n    nested: wrapWithAttrCheck(function () {\n      return this.put(new Svg());\n    })\n  }\n});\nregister(Svg, 'Svg', true);\n\nclass Symbol extends Container {\n  // Initialize node\n  constructor(node, attrs = node) {\n    super(nodeOrNew('symbol', node), attrs);\n  }\n}\nregisterMethods({\n  Container: {\n    symbol: wrapWithAttrCheck(function () {\n      return this.put(new Symbol());\n    })\n  }\n});\nregister(Symbol, 'Symbol');\n\n// Create plain text node\nfunction plain(text) {\n  // clear if build mode is disabled\n  if (this._build === false) {\n    this.clear();\n  }\n\n  // create text node\n  this.node.appendChild(globals.document.createTextNode(text));\n  return this;\n}\n\n// Get length of text element\nfunction length() {\n  return this.node.getComputedTextLength();\n}\n\n// Move over x-axis\n// Text is moved by its bounding box\n// text-anchor does NOT matter\nfunction x$1(x, box = this.bbox()) {\n  if (x == null) {\n    return box.x;\n  }\n  return this.attr('x', this.attr('x') + x - box.x);\n}\n\n// Move over y-axis\nfunction y$1(y, box = this.bbox()) {\n  if (y == null) {\n    return box.y;\n  }\n  return this.attr('y', this.attr('y') + y - box.y);\n}\nfunction move$1(x, y, box = this.bbox()) {\n  return this.x(x, box).y(y, box);\n}\n\n// Move center over x-axis\nfunction cx(x, box = this.bbox()) {\n  if (x == null) {\n    return box.cx;\n  }\n  return this.attr('x', this.attr('x') + x - box.cx);\n}\n\n// Move center over y-axis\nfunction cy(y, box = this.bbox()) {\n  if (y == null) {\n    return box.cy;\n  }\n  return this.attr('y', this.attr('y') + y - box.cy);\n}\nfunction center(x, y, box = this.bbox()) {\n  return this.cx(x, box).cy(y, box);\n}\nfunction ax(x) {\n  return this.attr('x', x);\n}\nfunction ay(y) {\n  return this.attr('y', y);\n}\nfunction amove(x, y) {\n  return this.ax(x).ay(y);\n}\n\n// Enable / disable build mode\nfunction build(build) {\n  this._build = !!build;\n  return this;\n}\n\nvar textable = {\n  __proto__: null,\n  amove: amove,\n  ax: ax,\n  ay: ay,\n  build: build,\n  center: center,\n  cx: cx,\n  cy: cy,\n  length: length,\n  move: move$1,\n  plain: plain,\n  x: x$1,\n  y: y$1\n};\n\nclass Text extends Shape {\n  // Initialize node\n  constructor(node, attrs = node) {\n    super(nodeOrNew('text', node), attrs);\n    this.dom.leading = this.dom.leading ?? new SVGNumber(1.3); // store leading value for rebuilding\n    this._rebuild = true; // enable automatic updating of dy values\n    this._build = false; // disable build mode for adding multiple lines\n  }\n\n  // Set / get leading\n  leading(value) {\n    // act as getter\n    if (value == null) {\n      return this.dom.leading;\n    }\n\n    // act as setter\n    this.dom.leading = new SVGNumber(value);\n    return this.rebuild();\n  }\n\n  // Rebuild appearance type\n  rebuild(rebuild) {\n    // store new rebuild flag if given\n    if (typeof rebuild === 'boolean') {\n      this._rebuild = rebuild;\n    }\n\n    // define position of all lines\n    if (this._rebuild) {\n      const self = this;\n      let blankLineOffset = 0;\n      const leading = this.dom.leading;\n      this.each(function (i) {\n        if (isDescriptive(this.node)) return;\n        const fontSize = globals.window.getComputedStyle(this.node).getPropertyValue('font-size');\n        const dy = leading * new SVGNumber(fontSize);\n        if (this.dom.newLined) {\n          this.attr('x', self.attr('x'));\n          if (this.text() === '\\n') {\n            blankLineOffset += dy;\n          } else {\n            this.attr('dy', i ? dy + blankLineOffset : 0);\n            blankLineOffset = 0;\n          }\n        }\n      });\n      this.fire('rebuild');\n    }\n    return this;\n  }\n\n  // overwrite method from parent to set data properly\n  setData(o) {\n    this.dom = o;\n    this.dom.leading = new SVGNumber(o.leading || 1.3);\n    return this;\n  }\n  writeDataToDom() {\n    writeDataToDom(this, this.dom, {\n      leading: 1.3\n    });\n    return this;\n  }\n\n  // Set the text content\n  text(text) {\n    // act as getter\n    if (text === undefined) {\n      const children = this.node.childNodes;\n      let firstLine = 0;\n      text = '';\n      for (let i = 0, len = children.length; i < len; ++i) {\n        // skip textPaths - they are no lines\n        if (children[i].nodeName === 'textPath' || isDescriptive(children[i])) {\n          if (i === 0) firstLine = i + 1;\n          continue;\n        }\n\n        // add newline if its not the first child and newLined is set to true\n        if (i !== firstLine && children[i].nodeType !== 3 && adopt(children[i]).dom.newLined === true) {\n          text += '\\n';\n        }\n\n        // add content of this node\n        text += children[i].textContent;\n      }\n      return text;\n    }\n\n    // remove existing content\n    this.clear().build(true);\n    if (typeof text === 'function') {\n      // call block\n      text.call(this, this);\n    } else {\n      // store text and make sure text is not blank\n      text = (text + '').split('\\n');\n\n      // build new lines\n      for (let j = 0, jl = text.length; j < jl; j++) {\n        this.newLine(text[j]);\n      }\n    }\n\n    // disable build mode and rebuild lines\n    return this.build(false).rebuild();\n  }\n}\nextend(Text, textable);\nregisterMethods({\n  Container: {\n    // Create text element\n    text: wrapWithAttrCheck(function (text = '') {\n      return this.put(new Text()).text(text);\n    }),\n    // Create plain text element\n    plain: wrapWithAttrCheck(function (text = '') {\n      return this.put(new Text()).plain(text);\n    })\n  }\n});\nregister(Text, 'Text');\n\nclass Tspan extends Shape {\n  // Initialize node\n  constructor(node, attrs = node) {\n    super(nodeOrNew('tspan', node), attrs);\n    this._build = false; // disable build mode for adding multiple lines\n  }\n\n  // Shortcut dx\n  dx(dx) {\n    return this.attr('dx', dx);\n  }\n\n  // Shortcut dy\n  dy(dy) {\n    return this.attr('dy', dy);\n  }\n\n  // Create new line\n  newLine() {\n    // mark new line\n    this.dom.newLined = true;\n\n    // fetch parent\n    const text = this.parent();\n\n    // early return in case we are not in a text element\n    if (!(text instanceof Text)) {\n      return this;\n    }\n    const i = text.index(this);\n    const fontSize = globals.window.getComputedStyle(this.node).getPropertyValue('font-size');\n    const dy = text.dom.leading * new SVGNumber(fontSize);\n\n    // apply new position\n    return this.dy(i ? dy : 0).attr('x', text.x());\n  }\n\n  // Set text content\n  text(text) {\n    if (text == null) return this.node.textContent + (this.dom.newLined ? '\\n' : '');\n    if (typeof text === 'function') {\n      this.clear().build(true);\n      text.call(this, this);\n      this.build(false);\n    } else {\n      this.plain(text);\n    }\n    return this;\n  }\n}\nextend(Tspan, textable);\nregisterMethods({\n  Tspan: {\n    tspan: wrapWithAttrCheck(function (text = '') {\n      const tspan = new Tspan();\n\n      // clear if build mode is disabled\n      if (!this._build) {\n        this.clear();\n      }\n\n      // add new tspan\n      return this.put(tspan).text(text);\n    })\n  },\n  Text: {\n    newLine: function (text = '') {\n      return this.tspan(text).newLine();\n    }\n  }\n});\nregister(Tspan, 'Tspan');\n\nclass Circle extends Shape {\n  constructor(node, attrs = node) {\n    super(nodeOrNew('circle', node), attrs);\n  }\n  radius(r) {\n    return this.attr('r', r);\n  }\n\n  // Radius x value\n  rx(rx) {\n    return this.attr('r', rx);\n  }\n\n  // Alias radius x value\n  ry(ry) {\n    return this.rx(ry);\n  }\n  size(size) {\n    return this.radius(new SVGNumber(size).divide(2));\n  }\n}\nextend(Circle, {\n  x: x$3,\n  y: y$3,\n  cx: cx$1,\n  cy: cy$1,\n  width: width$2,\n  height: height$2\n});\nregisterMethods({\n  Container: {\n    // Create circle element\n    circle: wrapWithAttrCheck(function (size = 0) {\n      return this.put(new Circle()).size(size).move(0, 0);\n    })\n  }\n});\nregister(Circle, 'Circle');\n\nclass ClipPath extends Container {\n  constructor(node, attrs = node) {\n    super(nodeOrNew('clipPath', node), attrs);\n  }\n\n  // Unclip all clipped elements and remove itself\n  remove() {\n    // unclip all targets\n    this.targets().forEach(function (el) {\n      el.unclip();\n    });\n\n    // remove clipPath from parent\n    return super.remove();\n  }\n  targets() {\n    return baseFind('svg [clip-path*=' + this.id() + ']');\n  }\n}\nregisterMethods({\n  Container: {\n    // Create clipping element\n    clip: wrapWithAttrCheck(function () {\n      return this.defs().put(new ClipPath());\n    })\n  },\n  Element: {\n    // Distribute clipPath to svg element\n    clipper() {\n      return this.reference('clip-path');\n    },\n    clipWith(element) {\n      // use given clip or create a new one\n      const clipper = element instanceof ClipPath ? element : this.parent().clip().add(element);\n\n      // apply mask\n      return this.attr('clip-path', 'url(#' + clipper.id() + ')');\n    },\n    // Unclip element\n    unclip() {\n      return this.attr('clip-path', null);\n    }\n  }\n});\nregister(ClipPath, 'ClipPath');\n\nclass ForeignObject extends Element {\n  constructor(node, attrs = node) {\n    super(nodeOrNew('foreignObject', node), attrs);\n  }\n}\nregisterMethods({\n  Container: {\n    foreignObject: wrapWithAttrCheck(function (width, height) {\n      return this.put(new ForeignObject()).size(width, height);\n    })\n  }\n});\nregister(ForeignObject, 'ForeignObject');\n\nfunction dmove(dx, dy) {\n  this.children().forEach(child => {\n    let bbox;\n\n    // We have to wrap this for elements that dont have a bbox\n    // e.g. title and other descriptive elements\n    try {\n      // Get the childs bbox\n      // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1905039\n      // Because bbox for nested svgs returns the contents bbox in the coordinate space of the svg itself (weird!), we cant use bbox for svgs\n      // Therefore we have to use getBoundingClientRect. But THAT is broken (as explained in the bug).\n      // Funnily enough the broken behavior would work for us but that breaks it in chrome\n      // So we have to replicate the broken behavior of FF by just reading the attributes of the svg itself\n      bbox = child.node instanceof getWindow().SVGSVGElement ? new Box(child.attr(['x', 'y', 'width', 'height'])) : child.bbox();\n    } catch (e) {\n      return;\n    }\n\n    // Get childs matrix\n    const m = new Matrix(child);\n    // Translate childs matrix by amount and\n    // transform it back into parents space\n    const matrix = m.translate(dx, dy).transform(m.inverse());\n    // Calculate new x and y from old box\n    const p = new Point(bbox.x, bbox.y).transform(matrix);\n    // Move element\n    child.move(p.x, p.y);\n  });\n  return this;\n}\nfunction dx(dx) {\n  return this.dmove(dx, 0);\n}\nfunction dy(dy) {\n  return this.dmove(0, dy);\n}\nfunction height(height, box = this.bbox()) {\n  if (height == null) return box.height;\n  return this.size(box.width, height, box);\n}\nfunction move(x = 0, y = 0, box = this.bbox()) {\n  const dx = x - box.x;\n  const dy = y - box.y;\n  return this.dmove(dx, dy);\n}\nfunction size(width, height, box = this.bbox()) {\n  const p = proportionalSize(this, width, height, box);\n  const scaleX = p.width / box.width;\n  const scaleY = p.height / box.height;\n  this.children().forEach(child => {\n    const o = new Point(box).transform(new Matrix(child).inverse());\n    child.scale(scaleX, scaleY, o.x, o.y);\n  });\n  return this;\n}\nfunction width(width, box = this.bbox()) {\n  if (width == null) return box.width;\n  return this.size(width, box.height, box);\n}\nfunction x(x, box = this.bbox()) {\n  if (x == null) return box.x;\n  return this.move(x, box.y, box);\n}\nfunction y(y, box = this.bbox()) {\n  if (y == null) return box.y;\n  return this.move(box.x, y, box);\n}\n\nvar containerGeometry = {\n  __proto__: null,\n  dmove: dmove,\n  dx: dx,\n  dy: dy,\n  height: height,\n  move: move,\n  size: size,\n  width: width,\n  x: x,\n  y: y\n};\n\nclass G extends Container {\n  constructor(node, attrs = node) {\n    super(nodeOrNew('g', node), attrs);\n  }\n}\nextend(G, containerGeometry);\nregisterMethods({\n  Container: {\n    // Create a group element\n    group: wrapWithAttrCheck(function () {\n      return this.put(new G());\n    })\n  }\n});\nregister(G, 'G');\n\nclass A extends Container {\n  constructor(node, attrs = node) {\n    super(nodeOrNew('a', node), attrs);\n  }\n\n  // Link target attribute\n  target(target) {\n    return this.attr('target', target);\n  }\n\n  // Link url\n  to(url) {\n    return this.attr('href', url, xlink);\n  }\n}\nextend(A, containerGeometry);\nregisterMethods({\n  Container: {\n    // Create a hyperlink element\n    link: wrapWithAttrCheck(function (url) {\n      return this.put(new A()).to(url);\n    })\n  },\n  Element: {\n    unlink() {\n      const link = this.linker();\n      if (!link) return this;\n      const parent = link.parent();\n      if (!parent) {\n        return this.remove();\n      }\n      const index = parent.index(link);\n      parent.add(this, index);\n      link.remove();\n      return this;\n    },\n    linkTo(url) {\n      // reuse old link if possible\n      let link = this.linker();\n      if (!link) {\n        link = new A();\n        this.wrap(link);\n      }\n      if (typeof url === 'function') {\n        url.call(link, link);\n      } else {\n        link.to(url);\n      }\n      return this;\n    },\n    linker() {\n      const link = this.parent();\n      if (link && link.node.nodeName.toLowerCase() === 'a') {\n        return link;\n      }\n      return null;\n    }\n  }\n});\nregister(A, 'A');\n\nclass Mask extends Container {\n  // Initialize node\n  constructor(node, attrs = node) {\n    super(nodeOrNew('mask', node), attrs);\n  }\n\n  // Unmask all masked elements and remove itself\n  remove() {\n    // unmask all targets\n    this.targets().forEach(function (el) {\n      el.unmask();\n    });\n\n    // remove mask from parent\n    return super.remove();\n  }\n  targets() {\n    return baseFind('svg [mask*=' + this.id() + ']');\n  }\n}\nregisterMethods({\n  Container: {\n    mask: wrapWithAttrCheck(function () {\n      return this.defs().put(new Mask());\n    })\n  },\n  Element: {\n    // Distribute mask to svg element\n    masker() {\n      return this.reference('mask');\n    },\n    maskWith(element) {\n      // use given mask or create a new one\n      const masker = element instanceof Mask ? element : this.parent().mask().add(element);\n\n      // apply mask\n      return this.attr('mask', 'url(#' + masker.id() + ')');\n    },\n    // Unmask element\n    unmask() {\n      return this.attr('mask', null);\n    }\n  }\n});\nregister(Mask, 'Mask');\n\nclass Stop extends Element {\n  constructor(node, attrs = node) {\n    super(nodeOrNew('stop', node), attrs);\n  }\n\n  // add color stops\n  update(o) {\n    if (typeof o === 'number' || o instanceof SVGNumber) {\n      o = {\n        offset: arguments[0],\n        color: arguments[1],\n        opacity: arguments[2]\n      };\n    }\n\n    // set attributes\n    if (o.opacity != null) this.attr('stop-opacity', o.opacity);\n    if (o.color != null) this.attr('stop-color', o.color);\n    if (o.offset != null) this.attr('offset', new SVGNumber(o.offset));\n    return this;\n  }\n}\nregisterMethods({\n  Gradient: {\n    // Add a color stop\n    stop: function (offset, color, opacity) {\n      return this.put(new Stop()).update(offset, color, opacity);\n    }\n  }\n});\nregister(Stop, 'Stop');\n\nfunction cssRule(selector, rule) {\n  if (!selector) return '';\n  if (!rule) return selector;\n  let ret = selector + '{';\n  for (const i in rule) {\n    ret += unCamelCase(i) + ':' + rule[i] + ';';\n  }\n  ret += '}';\n  return ret;\n}\nclass Style extends Element {\n  constructor(node, attrs = node) {\n    super(nodeOrNew('style', node), attrs);\n  }\n  addText(w = '') {\n    this.node.textContent += w;\n    return this;\n  }\n  font(name, src, params = {}) {\n    return this.rule('@font-face', {\n      fontFamily: name,\n      src: src,\n      ...params\n    });\n  }\n  rule(selector, obj) {\n    return this.addText(cssRule(selector, obj));\n  }\n}\nregisterMethods('Dom', {\n  style(selector, obj) {\n    return this.put(new Style()).rule(selector, obj);\n  },\n  fontface(name, src, params) {\n    return this.put(new Style()).font(name, src, params);\n  }\n});\nregister(Style, 'Style');\n\nclass TextPath extends Text {\n  // Initialize node\n  constructor(node, attrs = node) {\n    super(nodeOrNew('textPath', node), attrs);\n  }\n\n  // return the array of the path track element\n  array() {\n    const track = this.track();\n    return track ? track.array() : null;\n  }\n\n  // Plot path if any\n  plot(d) {\n    const track = this.track();\n    let pathArray = null;\n    if (track) {\n      pathArray = track.plot(d);\n    }\n    return d == null ? pathArray : this;\n  }\n\n  // Get the path element\n  track() {\n    return this.reference('href');\n  }\n}\nregisterMethods({\n  Container: {\n    textPath: wrapWithAttrCheck(function (text, path) {\n      // Convert text to instance if needed\n      if (!(text instanceof Text)) {\n        text = this.text(text);\n      }\n      return text.path(path);\n    })\n  },\n  Text: {\n    // Create path for text to run on\n    path: wrapWithAttrCheck(function (track, importNodes = true) {\n      const textPath = new TextPath();\n\n      // if track is a path, reuse it\n      if (!(track instanceof Path)) {\n        // create path element\n        track = this.defs().path(track);\n      }\n\n      // link textPath to path and add content\n      textPath.attr('href', '#' + track, xlink);\n\n      // Transplant all nodes from text to textPath\n      let node;\n      if (importNodes) {\n        while (node = this.node.firstChild) {\n          textPath.node.appendChild(node);\n        }\n      }\n\n      // add textPath element as child node and return textPath\n      return this.put(textPath);\n    }),\n    // Get the textPath children\n    textPath() {\n      return this.findOne('textPath');\n    }\n  },\n  Path: {\n    // creates a textPath from this path\n    text: wrapWithAttrCheck(function (text) {\n      // Convert text to instance if needed\n      if (!(text instanceof Text)) {\n        text = new Text().addTo(this.parent()).text(text);\n      }\n\n      // Create textPath from text and path and return\n      return text.path(this);\n    }),\n    targets() {\n      return baseFind('svg textPath').filter(node => {\n        return (node.attr('href') || '').includes(this.id());\n      });\n\n      // Does not work in IE11. Use when IE support is dropped\n      // return baseFind('svg textPath[*|href*=' + this.id() + ']')\n    }\n  }\n});\nTextPath.prototype.MorphArray = PathArray;\nregister(TextPath, 'TextPath');\n\nclass Use extends Shape {\n  constructor(node, attrs = node) {\n    super(nodeOrNew('use', node), attrs);\n  }\n\n  // Use element as a reference\n  use(element, file) {\n    // Set lined element\n    return this.attr('href', (file || '') + '#' + element, xlink);\n  }\n}\nregisterMethods({\n  Container: {\n    // Create a use element\n    use: wrapWithAttrCheck(function (element, file) {\n      return this.put(new Use()).use(element, file);\n    })\n  }\n});\nregister(Use, 'Use');\n\n/* Optional Modules */\nconst SVG = makeInstance;\nextend([Svg, Symbol, Image, Pattern, Marker], getMethodsFor('viewbox'));\nextend([Line, Polyline, Polygon, Path], getMethodsFor('marker'));\nextend(Text, getMethodsFor('Text'));\nextend(Path, getMethodsFor('Path'));\nextend(Defs, getMethodsFor('Defs'));\nextend([Text, Tspan], getMethodsFor('Tspan'));\nextend([Rect, Ellipse, Gradient, Runner], getMethodsFor('radius'));\nextend(EventTarget, getMethodsFor('EventTarget'));\nextend(Dom, getMethodsFor('Dom'));\nextend(Element, getMethodsFor('Element'));\nextend(Shape, getMethodsFor('Shape'));\nextend([Container, Fragment], getMethodsFor('Container'));\nextend(Gradient, getMethodsFor('Gradient'));\nextend(Runner, getMethodsFor('Runner'));\nList.extend(getMethodNames());\nregisterMorphableType([SVGNumber, Color, Box, Matrix, SVGArray, PointArray, PathArray, Point]);\nmakeMorphable();\n\nexports.A = A;\nexports.Animator = Animator;\nexports.Array = SVGArray;\nexports.Box = Box;\nexports.Circle = Circle;\nexports.ClipPath = ClipPath;\nexports.Color = Color;\nexports.Container = Container;\nexports.Controller = Controller;\nexports.Defs = Defs;\nexports.Dom = Dom;\nexports.Ease = Ease;\nexports.Element = Element;\nexports.Ellipse = Ellipse;\nexports.EventTarget = EventTarget;\nexports.ForeignObject = ForeignObject;\nexports.Fragment = Fragment;\nexports.G = G;\nexports.Gradient = Gradient;\nexports.Image = Image;\nexports.Line = Line;\nexports.List = List;\nexports.Marker = Marker;\nexports.Mask = Mask;\nexports.Matrix = Matrix;\nexports.Morphable = Morphable;\nexports.NonMorphable = NonMorphable;\nexports.Number = SVGNumber;\nexports.ObjectBag = ObjectBag;\nexports.PID = PID;\nexports.Path = Path;\nexports.PathArray = PathArray;\nexports.Pattern = Pattern;\nexports.Point = Point;\nexports.PointArray = PointArray;\nexports.Polygon = Polygon;\nexports.Polyline = Polyline;\nexports.Queue = Queue;\nexports.Rect = Rect;\nexports.Runner = Runner;\nexports.SVG = SVG;\nexports.Shape = Shape;\nexports.Spring = Spring;\nexports.Stop = Stop;\nexports.Style = Style;\nexports.Svg = Svg;\nexports.Symbol = Symbol;\nexports.Text = Text;\nexports.TextPath = TextPath;\nexports.Timeline = Timeline;\nexports.TransformBag = TransformBag;\nexports.Tspan = Tspan;\nexports.Use = Use;\nexports.adopt = adopt;\nexports.assignNewId = assignNewId;\nexports.clearEvents = clearEvents;\nexports.create = create;\nexports.defaults = defaults;\nexports.dispatch = dispatch;\nexports.easing = easing;\nexports.eid = eid;\nexports.extend = extend;\nexports.find = baseFind;\nexports.getClass = getClass;\nexports.getEventTarget = getEventTarget;\nexports.getEvents = getEvents;\nexports.getWindow = getWindow;\nexports.makeInstance = makeInstance;\nexports.makeMorphable = makeMorphable;\nexports.mockAdopt = mockAdopt;\nexports.namespaces = namespaces;\nexports.nodeOrNew = nodeOrNew;\nexports.off = off;\nexports.on = on;\nexports.parser = parser;\nexports.regex = regex;\nexports.register = register;\nexports.registerMorphableType = registerMorphableType;\nexports.registerWindow = registerWindow;\nexports.restoreWindow = restoreWindow;\nexports.root = root;\nexports.saveWindow = saveWindow;\nexports.utils = utils;\nexports.windowEvents = windowEvents;\nexports.withWindow = withWindow;\nexports.wrapWithAttrCheck = wrapWithAttrCheck;\n//# sourceMappingURL=svg.node.cjs.map\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getPaper = getPaper;\nconst svg_js_1 = require(\"@svgdotjs/svg.js\");\nfunction getPaper() {\n    // eslint-disable-next-line new-cap\n    return (0, svg_js_1.SVG)();\n}\n//# sourceMappingURL=getPaper.browser.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.appendResiduesPosition = appendResiduesPosition;\nconst getPaper_1 = require(\"./getPaper\");\nfunction appendResiduesPosition(data, options = {}) {\n    const residues = data.residues;\n    const { leftRightBorders = 20, spaceBetweenResidues = 20, width = 600, } = options;\n    let xPos = leftRightBorders;\n    let xOld = xPos;\n    let line = 0;\n    // we create a temporary paper in order to get the width of the text blocs\n    const paper = (0, getPaper_1.getPaper)();\n    for (let i = 0; i < residues.all.length; i++) {\n        let residue = residues.all[i];\n        let textWidth = getTextWidth(paper, residue.label, options);\n        xPos += textWidth;\n        if (xPos > width - leftRightBorders) {\n            xOld = leftRightBorders;\n            xPos = leftRightBorders + textWidth;\n            line++;\n        }\n        setPaper(residue, xOld, xPos, line);\n        xPos += spaceBetweenResidues;\n        xOld = xPos;\n    }\n    residues.nbLines = line;\n}\nfunction setPaper(residue, xFrom, xTo, line) {\n    residue.paper = {\n        xFrom,\n        xTo,\n        line,\n        usedSlots: [],\n        topPosition: 0,\n        bottomPosition: 0,\n    };\n}\nfunction getTextWidth(paper, label, options = {}) {\n    const { labelFontFamily = 'Verdana', labelSize = 12 } = options;\n    let text = paper.text(label);\n    text.font({\n        family: labelFontFamily,\n        size: labelSize,\n        weight: 'bold',\n        fill: '#888',\n    });\n    let textWidth = text.length() || text.bbox().width;\n    text.remove();\n    return textWidth;\n}\n//# sourceMappingURL=appendResiduesPosition.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.appendResults = appendResults;\nfunction appendResults(data, analysisResult, options = {}) {\n    const numberResidues = data.residues.residues.length;\n    const { merge = {}, filter = {} } = options;\n    let results = structuredClone(analysisResult);\n    results = results.filter((result) => !result.type.match(/^-B\\d$/));\n    // we calculate all the lines based on the results\n    for (let result of results) {\n        let parts = result.type.split(/:|(?=[a-z])/); // we may have ':' but not mandatory\n        if (parts.length === 2) {\n            result.internal = true;\n            if (parts[1].match(/^[a-d][1-9]/)) {\n                [parts[0], parts[1]] = [parts[1], parts[0]];\n            }\n            result.to = getNumber(parts[0]) - 1;\n            result.from = numberResidues - getNumber(parts[1]);\n        }\n        else {\n            if (parts[0].match(/^[a-d][1-9]/)) {\n                result.fromBegin = true;\n                result.position = getNumber(parts[0]) - 1;\n            }\n            if (parts[0].match(/^[w-z][1-9]/)) {\n                result.fromEnd = true;\n                result.position = numberResidues - 1 - getNumber(parts[0]);\n            }\n        }\n        if (result.fromEnd)\n            result.color = 'red';\n        if (result.fromBegin)\n            result.color = 'blue';\n        if (result.internal) {\n            switch (result.type.slice(0, 1)) {\n                case 'a':\n                    result.color = 'green';\n                    break;\n                case 'b':\n                    result.color = 'orange';\n                    break;\n                case 'c':\n                    result.color = 'cyan';\n                    break;\n                default:\n                    result.color = 'green';\n            }\n        }\n    }\n    if (merge.charge) {\n        const unique = {};\n        for (let result of results) {\n            if (!unique[result.type]) {\n                unique[result.type] = [];\n            }\n            unique[result.type].push(result);\n        }\n        results = [];\n        for (let key in unique) {\n            let current = unique[key][0];\n            current.similarity = unique[key].reduce((previous, item) => previous + item.similarity, 0);\n            current.similarity = current.similarity / unique[key].length;\n            results.push(current);\n            current.charge = '';\n        }\n    }\n    for (let result of results) {\n        if (result.similarity > 0.95) {\n            result.textColor = 'black';\n        }\n        else if (result.similarity > 0.9) {\n            result.textColor = '#333';\n        }\n        else if (result.similariy > 0.8) {\n            result.textColor = '#666';\n        }\n        else {\n            result.textColor = '#999';\n        }\n    }\n    results = filterResults(results, filter);\n    // sort by residue length\n    results.sort((a, b) => a.length - b.length);\n    data.results = results;\n}\nfunction getNumber(text) {\n    return Number(text.replace(/^.(\\d+).*$/, '$1'));\n}\nfunction filterResults(results, filter) {\n    if (!filter)\n        return;\n    let { minRelativeQuantity = 0, minSimilarity = 0, minQuantity = 0, showInternals = true, } = filter;\n    if (minRelativeQuantity) {\n        minQuantity =\n            Math.max(...results.map((entry) => entry.quantity)) * minRelativeQuantity;\n    }\n    if (minSimilarity) {\n        results = results.filter((result) => !result.similarity || result.similarity >= minSimilarity);\n    }\n    if (minQuantity) {\n        results = results.filter((result) => !result.quantity || result.quantity >= minQuantity);\n    }\n    if (!showInternals) {\n        results = results.filter((result) => !result.internal);\n    }\n    return results;\n}\n//# sourceMappingURL=appendResults.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.appendRows = appendRows;\nfunction appendRows(data) {\n    let allResidues = data.residues.all.sort((a, b) => a.line - b.line);\n    data.rows = [];\n    for (let residue of allResidues) {\n        let line = residue.paper.line;\n        if (!data.rows[line]) {\n            data.rows[line] = {\n                residues: [],\n            };\n        }\n        data.rows[line].residues.push(residue);\n    }\n    for (let row of data.rows) {\n        row.info = {};\n    }\n}\n//# sourceMappingURL=appendRows.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.appendRowsInformation = appendRowsInformation;\n/**\n * For each row we calculate internals, label over and label under\n * @param {*} data\n */\nfunction appendRowsInformation(data) {\n    for (let row of data.rows) {\n        let filtered = row.residues.filter((entry) => entry.fromBegin !== undefined);\n        if (filtered.length > 0) {\n            row.info.firstResidue = filtered[0].fromBegin;\n            row.info.lastResidue = filtered.at(-1).fromBegin;\n        }\n        row.internals = [];\n    }\n    for (let result of data.results) {\n        if (result.internal) {\n            let fromResidue = data.residues.residues[result.from];\n            let from = fromResidue.fromBegin;\n            let toResidue = data.residues.residues[result.to];\n            let to = toResidue.fromBegin;\n            for (let row of data.rows) {\n                if (from <= row.info.lastResidue && to >= row.info.firstResidue) {\n                    result = structuredClone(result);\n                    result.fromResidue = fromResidue;\n                    if (from < row.info.firstResidue) {\n                        result.firstIndex = true;\n                    }\n                    else {\n                        for (const [index, residue] of row.residues.entries()) {\n                            if (residue.fromBegin === from) {\n                                result.firstIndex = index;\n                            }\n                        }\n                    }\n                    result.toResidue = toResidue;\n                    if (to > row.info.lastResidue) {\n                        result.lastIndex = true;\n                    }\n                    else {\n                        for (const [index, residue] of row.residues.entries()) {\n                            if (residue.fromBegin === to) {\n                                result.lastIndex = index;\n                            }\n                        }\n                    }\n                    row.internals.push(result);\n                }\n            }\n        }\n        else if (result.position !== undefined &&\n            data.residues.residues[result.position]) {\n            let residue = data.residues.residues[result.position];\n            if (result.fromEnd) {\n                residue.info.nbOver++;\n                residue.results.end.push(result);\n            }\n            if (result.fromBegin) {\n                residue.info.nbUnder++;\n                residue.results.begin.push(result);\n            }\n        }\n    }\n    for (let row of data.rows) {\n        let maxNbOver = 0;\n        let maxNbUnder = 0;\n        for (let residue of row.residues) {\n            if (residue.info.nbOver > maxNbOver)\n                maxNbOver = residue.info.nbOver;\n            if (residue.info.nbUnder > maxNbUnder)\n                maxNbUnder = residue.info.nbUnder;\n        }\n        row.info.nbOver = maxNbOver;\n        row.info.nbUnder = maxNbUnder;\n    }\n}\n//# sourceMappingURL=appendRowsInformation.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.addCSS = addCSS;\nfunction addCSS(paper) {\n    let cssCode = `\n    .highlight {\n        stroke: yellow;\n        stroke-width: 5px;\n        fill: red;\n    }\n    .highlightText {\n        fill: red;\n    }\n    `;\n    let style = paper.element('style');\n    style.words(cssCode);\n}\n//# sourceMappingURL=addCSS.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.addScript = addScript;\nfunction addScript(paper) {\n    let scriptCode = ` // <![CDATA[\n        function mouseOver(evt) {\n           \n            let targetRange=evt.target.id.replace(/^line/,'');\n            let from=targetRange.replace(/-.*/,'')*1;\n            let to=targetRange.replace(/.*-/,'')*1;\n            let children=evt.target.parentNode.children;\n            for (let child of children) {\n                if (child.id === evt.target.id) {\n                    child.setAttribute('class','highlight');\n                }\n                if (child.nodeName === 'text' && child.id.startsWith(\"residue\")) {\n                    let residueNumber=child.id.replace(/residue-/,'')*1;\n                    if (residueNumber>=from && residueNumber<=to) {\n                        child.setAttribute('class','highlightText');\n                    }\n                }\n            }\n        }\n        function mouseOut(evt) {\n            let children=evt.target.parentNode.children;\n            for (let child of children) {\n                if (child.id === evt.target.id) {\n                    child.setAttribute('class','');\n                }\n                if (child.nodeName === 'text' && child.id.startsWith(\"residue\")) {\n                    child.setAttribute('class','');\n                }\n            }\n        }\n     // ]]>\n    `;\n    let script = paper.element('script');\n    script.attr({\n        type: 'application/ecmascript',\n    });\n    script.words(scriptCode);\n}\n//# sourceMappingURL=addScript.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.drawLabel = drawLabel;\nfunction drawLabel(paper, result, x, y, options) {\n    let label = result.type;\n    let similarity = String(Math.round(result.similarity * 100));\n    let charge = result.charge > 0 ? `+${result.charge}` : result.charge;\n    let text = paper.plain(label);\n    text.font({\n        fill: result.textColor,\n        family: options.labelFontFamily,\n        weight: 'bold',\n        size: options.labelSize,\n        anchor: 'end',\n    });\n    text.attr({\n        x,\n        y,\n    });\n    let textWidth = 0;\n    text = paper.plain(charge);\n    text.font({\n        fill: result.textColor,\n        family: options.labelFontFamily,\n        size: options.labelSize / 2,\n    });\n    text.attr({ x: x + textWidth, y: y - options.labelSize / 2 });\n    text = paper.plain(similarity);\n    text.font({\n        fill: result.textColor,\n        family: options.labelFontFamily,\n        size: options.labelSize / 2,\n    });\n    text.attr({ x: x + textWidth, y });\n}\n//# sourceMappingURL=drawLabel.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.drawInternals = drawInternals;\nconst drawLabel_1 = require(\"./drawLabel\");\nfunction drawInternals(paper, row, options) {\n    let fromX = 0;\n    let toX = 0;\n    for (const internal of row.internals) {\n        options.verticalPosition += options.spaceBetweenInternalLines;\n        if (internal.firstIndex === true) {\n            fromX = 0;\n        }\n        else {\n            fromX =\n                internal.fromResidue.paper.xFrom - options.spaceBetweenResidues / 2;\n        }\n        if (internal.lastIndex === true) {\n            toX = options.width - 1;\n        }\n        else {\n            toX = internal.toResidue.paper.xTo + options.spaceBetweenResidues / 2;\n        }\n        let y = options.verticalPosition;\n        let drawLine = paper.line(fromX, y, toX, y);\n        drawLine.attr({\n            onmouseover: 'mouseOver(evt)',\n            onmouseout: 'mouseOut(evt)',\n            id: `line${internal.fromResidue.fromBegin}-${internal.toResidue.fromBegin}`,\n        });\n        drawLine.stroke({\n            color: internal.color,\n            width: options.strokeWidth,\n        });\n        let center = (fromX + toX + (internal.type.length * options.labelSize * 2) / 3) / 2;\n        (0, drawLabel_1.drawLabel)(paper, internal, center, y - 2, options);\n    }\n    options.verticalPosition += options.spaceBetweenInternalLines * 2;\n}\n//# sourceMappingURL=drawInternals.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.drawReplacements = drawReplacements;\nfunction drawReplacements(paper, data, options) {\n    let replacements = data.residues.replacements;\n    replacements = Object.keys(replacements).map((key) => {\n        return { key, ...replacements[key] };\n    });\n    for (let replacement of replacements) {\n        options.verticalPosition += options.spaceBetweenInternalLines;\n        let text = paper.plain(`${replacement.label} = ${replacement.key}`);\n        text.font({\n            fill: 'darkviolet',\n            family: options.labelFontFamily,\n            weight: 'bold',\n            size: 10,\n        });\n        text.attr({\n            x: options.leftRightBorders,\n            y: options.verticalPosition,\n        });\n    }\n    options.verticalPosition += options.spaceBetweenInternalLines;\n}\n//# sourceMappingURL=drawReplacements.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.drawTerminals = drawTerminals;\nconst drawLabel_1 = require(\"./drawLabel\");\nfunction drawTerminals(paper, row, options) {\n    for (let residue of row.residues) {\n        if (!residue.results)\n            continue;\n        for (let result of residue.results.begin) {\n            let line = paper.line(residue.paper.xTo + options.spaceBetweenResidues / 2, residue.paper.y, residue.paper.xTo + options.spaceBetweenResidues / 2, residue.paper.y - 8);\n            line.stroke({\n                color: result.color,\n                width: options.strokeWidth,\n                linecap: 'round',\n            });\n            line = paper.line(residue.paper.xTo + options.spaceBetweenResidues / 2, residue.paper.y, residue.paper.xTo + options.spaceBetweenResidues / 2 - 5, residue.paper.y + 5);\n            line.stroke({\n                color: result.color,\n                width: options.strokeWidth,\n                linecap: 'round',\n            });\n            (0, drawLabel_1.drawLabel)(paper, result, residue.paper.xTo + options.spaceBetweenResidues / 2, residue.paper.y +\n                options.labelSize +\n                6 +\n                residue.paper.bottomPosition * options.labelSize, options);\n            residue.paper.bottomPosition++;\n        }\n        for (let result of residue.results.end) {\n            let line = paper.line(residue.paper.xTo +\n                options.spaceBetweenResidues / 2 +\n                options.strokeWidth, residue.paper.y, residue.paper.xTo +\n                options.spaceBetweenResidues / 2 +\n                options.strokeWidth, residue.paper.y - 8);\n            line.stroke({\n                color: result.color,\n                width: options.strokeWidth,\n                linecap: 'round',\n            });\n            line = paper.line(residue.paper.xTo +\n                options.spaceBetweenResidues / 2 +\n                options.strokeWidth, residue.paper.y - 8, residue.paper.xTo +\n                options.spaceBetweenResidues / 2 +\n                5 +\n                options.strokeWidth, residue.paper.y - 13);\n            line.stroke({\n                color: result.color,\n                width: options.strokeWidth,\n                linecap: 'round',\n            });\n            (0, drawLabel_1.drawLabel)(paper, result, residue.paper.xTo + options.spaceBetweenResidues, residue.paper.y - 17 - residue.paper.topPosition * options.labelSize, options);\n            residue.paper.topPosition++;\n        }\n    }\n}\n//# sourceMappingURL=drawTerminals.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.drawSequence = drawSequence;\nconst drawTerminals_1 = require(\"./drawTerminals\");\nfunction drawSequence(paper, row, options) {\n    // need to plan some space for the OVER\n    options.verticalPosition += row.info.nbOver * (options.labelSize + 1);\n    for (const residue of row.residues) {\n        residue.paper.y = options.verticalPosition;\n        let text = paper.plain(residue.label);\n        let textColor = residue.replaced\n            ? 'darkviolet'\n            : residue.kind === 'residue'\n                ? '#555'\n                : '#CCC';\n        text.font({\n            family: options.labelFontFamily,\n            size: 12,\n            weight: 'bold',\n            fill: textColor,\n        });\n        text.attr({\n            x: residue.paper.xFrom,\n            y: residue.paper.y,\n        });\n        text.attr({ id: `residue-${residue.fromBegin}` });\n    }\n    (0, drawTerminals_1.drawTerminals)(paper, row, options);\n    // need to plan some space for the UNDER\n    options.verticalPosition += row.info.nbUnder * (options.labelSize + 1);\n    options.verticalPosition += options.spaceBetweenInternalLines * 2;\n}\n//# sourceMappingURL=drawSequence.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sequenceSVG = sequenceSVG;\nconst appendInternals_1 = require(\"./appendInternals\");\nconst appendResidues_1 = require(\"./appendResidues\");\nconst appendResiduesPosition_1 = require(\"./appendResiduesPosition\");\nconst appendResults_1 = require(\"./appendResults\");\nconst appendRows_1 = require(\"./appendRows\");\nconst appendRowsInformation_1 = require(\"./appendRowsInformation\");\nconst addCSS_1 = require(\"./draw/addCSS\");\nconst addScript_1 = require(\"./draw/addScript\");\nconst drawInternals_1 = require(\"./draw/drawInternals\");\nconst drawReplacements_1 = require(\"./draw/drawReplacements\");\nconst drawSequence_1 = require(\"./draw/drawSequence\");\nconst getPaper_1 = require(\"./getPaper\");\n/**\n *\n * @param {string} sequence\n * @param {array} analysisResults\n * @param {object} [options={}]\n * @param {number} [options.leftRightBorders=50]\n * @param {number} [options.width=600]\n * @param {number} [options.spaceBetweenResidues=30]\n * @param {number} [options.spaceBetweenInternalLines=12]\n * @param {number} [options.strokeWidth=2]\n * @param {string} [options.labelFontFamily='Verdana']\n * @param {number} [options.labelSize=8]\n * @param {number} [options.parsing] Sequence parsing options\n * @param {object} [options.merge={}]\n * @param {boolean} [options.merge.charge] Merge results if only differs by charge\n * @param {object} [options.filter={}] define some filters\n * @param {number} [options.filter.minSimilarity=0]  minimal similarity\n * @param {number} [options.filter.minQuantity=0]  minimal quantity\n * @param {number} [options.filter.minRelativeQuantity=0]  minimal relative quantity. This value should be between 0 and 1 and supersede minQuantity.\n * @param {boolean} [options.filter.showInternals=true] show the internal fragments\n *\n */\nfunction sequenceSVG(sequence, analysisResults, options = {}) {\n    const { width = 600, leftRightBorders = 50, spaceBetweenResidues = 30, spaceBetweenInternalLines = 12, strokeWidth = 2, labelFontFamily = 'Verdana', labelSize = 8, parsing, merge, filter, } = options;\n    const drawOptions = {\n        spaceBetweenResidues,\n        leftRightBorders,\n        spaceBetweenInternalLines,\n        strokeWidth,\n        labelSize,\n        labelFontFamily,\n        verticalPosition: spaceBetweenInternalLines,\n        width,\n    };\n    let data = {};\n    (0, appendResidues_1.appendResidues)(data, sequence, parsing);\n    (0, appendResults_1.appendResults)(data, analysisResults, {\n        merge,\n        filter,\n    });\n    (0, appendResiduesPosition_1.appendResiduesPosition)(data, {\n        leftRightBorders,\n        spaceBetweenResidues,\n        labelFontFamily,\n        labelSize,\n        width,\n    });\n    (0, appendRows_1.appendRows)(data);\n    (0, appendInternals_1.appendInternals)(data);\n    (0, appendRowsInformation_1.appendRowsInformation)(data);\n    // We start to create the SVG and create the paper\n    const paper = (0, getPaper_1.getPaper)();\n    (0, addCSS_1.addCSS)(paper);\n    (0, addScript_1.addScript)(paper);\n    for (let row of data.rows) {\n        (0, drawInternals_1.drawInternals)(paper, row, drawOptions);\n        (0, drawSequence_1.drawSequence)(paper, row, drawOptions);\n    }\n    (0, drawReplacements_1.drawReplacements)(paper, data, drawOptions);\n    paper.size(width, drawOptions.verticalPosition);\n    let svg = paper.svg();\n    paper.clear();\n    return svg;\n}\n//# sourceMappingURL=sequenceSVG.js.map","var IDX=256, HEX=[], BUFFER;\nwhile (IDX--) HEX[IDX] = (IDX + 256).toString(16).substring(1);\n\nfunction v4() {\n\tvar i=0, num, out='';\n\n\tif (!BUFFER || ((IDX + 16) > 256)) {\n\t\tBUFFER = Array(i=256);\n\t\twhile (i--) BUFFER[i] = 256 * Math.random() | 0;\n\t\ti = IDX = 0;\n\t}\n\n\tfor (; i < 16; i++) {\n\t\tnum = BUFFER[IDX + i];\n\t\tif (i==6) out += HEX[num & 15 | 64];\n\t\telse if (i==8) out += HEX[num & 63 | 128];\n\t\telse out += HEX[num];\n\n\t\tif (i & 1 && i > 1 && i < 11) out += '-';\n\t}\n\n\tIDX++;\n\treturn out;\n}\n\nexports.v4 = v4;","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getPeakWidthFct = getPeakWidthFct;\n/**\n *\n * @param {object} [options ={}]\n * @param {object}        [options.mass={}]\n * @param {number}        [options.mass.precision=0] -  Precision (accuracy) of the monoisotopic mass in ppm\n * @param {string|Function} [options.mass.peakWidthFct=()=>0.01]\n * @param {import('cheminfo-types').Logger} [options.logger]\n * @returns\n */\nfunction getPeakWidthFct(options = {}) {\n    const { logger, mass: massOptions = {} } = options;\n    const { precision = 0, peakWidthFct } = massOptions;\n    if (typeof peakWidthFct === 'function') {\n        return peakWidthFct;\n    }\n    if (!peakWidthFct) {\n        return () => 0.01;\n    }\n    try {\n        // eslint-disable-next-line no-new-func\n        return new Function('mass', `return ${peakWidthFct} + ${precision} * mass / 1e6`);\n    }\n    catch (error) {\n        logger?.warn(`error in peakWidthFct: ${error.toString()}`);\n        return () => 0.01;\n    }\n}\n//# sourceMappingURL=getPeakWidthFct.js.map","/**\n * From an array of arrays it constructs a unique key for each array,\n * given by its values, such that same arrays have same keys.\n *\n * @param collection - Array of arrays\n * @returns - Array of objects with the original array, its index and its key\n */\nfunction addUniqueKeyToColumns(collection) {\n    return collection.map((positiveRows, columnIndexInK) => {\n        //indices of positive values within the column. (Pset)\n        let key = BigInt(0);\n        // items will be the indexes of Pset, so it's always an integer.\n        positiveRows.forEach((item) => (key |= BigInt(1) << BigInt(item)));\n        return { positiveRows, columnIndexInK, key };\n    });\n}\n/**\n * From an array of arrays it constructs a unique key for each subarray,\n * given by its values, such that same arrays have same keys.\n * @param collection - Array of arrays\n * @returns Array of objects with the original array, its index and its key\n */\nexport default function groupColumnsBySign(collection) {\n    const mapped = addUniqueKeyToColumns(collection);\n    mapped.sort((a, b) => {\n        if (a.key - b.key < 0)\n            return -1;\n        return 1;\n    });\n    const sorted = [];\n    const indices = [];\n    let key;\n    for (const set of mapped) {\n        if (set.key !== key) {\n            key = set.key;\n            indices.push([]);\n            sorted.push(set.positiveRows);\n        }\n        indices[indices.length - 1].push(set.columnIndexInK);\n    }\n    const result = {\n        values: sorted,\n        indices,\n    };\n    return result;\n}\n//# sourceMappingURL=sortCollectionSet.js.map","import { Matrix, LuDecomposition, solve, CholeskyDecomposition, } from 'ml-matrix';\nimport sortCollectionSet from './util/sortCollectionSet';\n/**\n * Combinatorial Subspace Least Squares - subfunction for the FC-NNLS\n * Solves XtX*K = XtY for the variables in Pset\n * if XtX (or XtX(vars,vars)) is singular, performs the svd and find pseudo-inverse, otherwise (even if ill-conditioned) finds inverse with LU decomposition and solves the set of equation\n * it is consistent with matlab results for ill-conditioned matrices (at least consistent with test 'ill-conditioned square X rank 2, Y 3x1' in cssls.test)\n * @param XtX - Gram matrix\n * @param XtY\n * @param Pset - Subset of matrix K with positive values (indices)\n * @param l - number of rows of X\n * @param p - number of columns of Y\n */\nexport function cssls(XtX, XtY, Pset, l, p) {\n    let K = Matrix.zeros(l, p);\n    if (Pset === null) {\n        // used for initialisation where OLS is solved.\n        const choXtX = new CholeskyDecomposition(XtX);\n        if (choXtX.isPositiveDefinite()) {\n            K = choXtX.solve(XtY);\n        }\n        else {\n            const luXtX = new LuDecomposition(XtX);\n            if (!luXtX.isSingular()) {\n                K = luXtX.solve(Matrix.eye(l)).mmul(XtY);\n            }\n            else {\n                K = solve(XtX, XtY, true);\n            }\n        }\n    }\n    else {\n        const { values: sortedPset, indices: sortedEset } = sortCollectionSet(Pset);\n        if (sortedPset.length === 1 &&\n            sortedPset[0].length === 0 &&\n            sortedEset[0].length === p) {\n            return K;\n        }\n        else if (sortedPset.length === 1 &&\n            sortedPset[0].length === l &&\n            sortedEset[0].length === p) {\n            const choXtX = new CholeskyDecomposition(XtX);\n            if (choXtX.isPositiveDefinite()) {\n                K = choXtX.solve(XtY);\n            }\n            else {\n                const luXtX = new LuDecomposition(XtX);\n                if (!luXtX.isSingular()) {\n                    K = luXtX.solve(Matrix.eye(l)).mmul(XtY);\n                }\n                else {\n                    K = solve(XtX, XtY, true);\n                }\n            }\n        }\n        else {\n            for (let k = 0; k < sortedPset.length; k++) {\n                const cols2Solve = sortedEset[k];\n                const vars = sortedPset[k];\n                let L;\n                const choXtX = new CholeskyDecomposition(XtX.selection(vars, vars));\n                if (choXtX.isPositiveDefinite()) {\n                    L = choXtX.solve(XtY.selection(vars, cols2Solve));\n                }\n                else {\n                    const luXtX = new LuDecomposition(XtX.selection(vars, vars));\n                    if (!luXtX.isSingular()) {\n                        L = luXtX\n                            .solve(Matrix.eye(vars.length))\n                            .mmul(XtY.selection(vars, cols2Solve));\n                    }\n                    else {\n                        L = solve(XtX.selection(vars, vars), XtY.selection(vars, cols2Solve), true);\n                    }\n                }\n                for (let i = 0; i < L.rows; i++) {\n                    for (let j = 0; j < L.columns; j++) {\n                        K.set(vars[i], cols2Solve[j], L.get(i, j));\n                    }\n                }\n            }\n        }\n    }\n    return K;\n}\n//# sourceMappingURL=cssls.js.map","import { Matrix } from 'ml-matrix';\nimport { cssls } from './cssls';\n/**\n * Solves as std linear squares,\n * and overwrites the negative values of K with 0 as an initial guess for K,\n * It also precomputes part of the pseudoinverse used to solve Least Squares.\n * @param - X input data matrix\n * @param - Y output data matrix\n * @returns - initial values for the algorithm (including the solution K to least squares, overwriting of negative values with 0)\n */\nexport function initialisation(X, Y) {\n    // X = n x l\n    // W = l x p, same as K\n    // Y = n x p\n    const n = X.rows;\n    const l = X.columns;\n    const p = Y.columns;\n    const iter = 0;\n    if (Y.rows !== n)\n        throw new Error('ERROR: matrix size not compatible');\n    const W = Matrix.zeros(l, p);\n    // precomputes part of pseudoinverse\n    const XtX = X.transpose().mmul(X);\n    const XtY = X.transpose().mmul(Y);\n    const K = cssls(XtX, XtY, null, l, p); // K is lxp\n    /* Each subarray corresponds to col of K\n     * And stores indices of positive values of that column\n     */\n    const Pset = [];\n    for (let j = 0; j < p; j++) {\n        Pset[j] = [];\n        for (let i = 0; i < l; i++) {\n            if (K.get(i, j) > 0) {\n                Pset[j].push(i); // [[1,2,3...,l],[1,2,4,7,..,l],[],..] p arrays, each length l or less\n            }\n            else {\n                K.set(i, j, 0);\n            } // This is our initial solution, it's the solution found by overwriting the unconstrained least square solution in K.\n        }\n    }\n    const Fset = [];\n    for (let j = 0; j < p; j++) {\n        if (Pset[j].length !== l) {\n            Fset.push(j); // If column j of K was not all positive, add it to the Fset. So Fset are the indices of columns with negative values\n        }\n    }\n    const D = K.clone();\n    return { n, l, p, iter, W, XtX, XtY, K, Pset, Fset, D };\n}\n//# sourceMappingURL=initialisation.js.map","/**\n * Computes the set difference A\\B\n * @param set A as an array\n * @param set B as an array\n * @returns Elements of A that are not in B\n */\nexport default function setDifference(A, B) {\n    const C = [];\n    for (const i of A) {\n        if (!B.includes(i))\n            C.push(i);\n    }\n    return C;\n}\n//# sourceMappingURL=setDifference.js.map","import setDifference from './util/setDifference';\n/**\n * Checks whether the solution has converged\n * @param iter - current iteration\n * @param maxIter - maximum number of iterations, @default 3 times the number of columns of X\n * @param XtX - Gram matrix\n * @param XtY\n * @param Fset - Columns to be optimized (active), it stores indices of columns with negative values\n * @param Pset - Subset of matrix K with positive values (indices)\n * @param W - Gradient Matrix\n * @param K - Coefficients Matrix\n * @param l - Number of rows of X\n * @param p - Number of columns of X\n * @param D - K clone\n * @param gradientTolerance - Control over the optimality of the solution; applied over the largest gradient value of all. @default 1e-5.\n * @returns - {Pset, Fset, W}\n */\nexport function optimality(iter, maxIter, XtX, XtY, Fset, Pset, W, K, l, p, D, gradientTolerance) {\n    if (iter === maxIter) {\n        throw new Error('Maximum number of iterations exceeded');\n    }\n    // Check solution for optimality\n    const V = XtY.subMatrixColumn(Fset).subtract(XtX.mmul(K.subMatrixColumn(Fset)));\n    for (let j = 0; j < Fset.length; j++) {\n        // for the \"negative\" columns, we set the new gradient.\n        W.setColumn(Fset[j], V.subMatrixColumn([j]));\n    }\n    const Jset = [];\n    const fullSet = [];\n    for (let i = 0; i < l; i++) {\n        fullSet.push(i);\n    }\n    for (const colIndex of Fset) {\n        const notPset = setDifference(fullSet, Pset[colIndex]);\n        if (notPset.length === 0) {\n            Jset.push(colIndex);\n        }\n        else if (W.selection(notPset, [colIndex]).max() <= gradientTolerance) {\n            Jset.push(colIndex);\n        }\n    }\n    Fset = setDifference(Fset, Jset);\n    // For non-optimal solutions, add the appropriate variables to Pset\n    if (Fset.length !== 0) {\n        for (let j = 0; j < Fset.length; j++) {\n            for (let i = 0; i < l; i++) {\n                if (Pset[Fset[j]].includes(i))\n                    W.set(i, Fset[j], -Infinity);\n            }\n            Pset[Fset[j]].push(W.subMatrixColumn(Fset).maxColumnIndex(j)[0]);\n        }\n        for (const colIndex of Fset) {\n            D.setColumn(colIndex, K.getColumn(colIndex));\n        }\n    }\n    for (let j = 0; j < p; j++) {\n        Pset[j].sort((a, b) => a - b);\n    }\n    return { Pset, Fset, W };\n}\n//# sourceMappingURL=optimality.js.map","/**\n * Returns a new array based on extraction of specific indices of an array\n * @param collection or array\n * @param indices\n */\nexport default function selection(vector, indices) {\n    const u = []; //new Float64Array(indices.length);\n    for (let i = 0; i < indices.length; i++) {\n        u[i] = vector[indices[i]];\n    }\n    return u;\n}\n//# sourceMappingURL=selection.js.map","import { Matrix } from 'ml-matrix';\nimport { cssls } from './cssls';\nimport { initialisation } from './initialisation';\nimport { optimality } from './optimality';\nimport selection from './util/selection';\n/**\n * Fast Combinatorial Non-negative Least Squares with multiple Right Hand Side\n * @param X\n * @param Y\n * @param options\n * @returns Solution Matrix.\n */\nexport default function fcnnls(X, Y, options = {}) {\n    X = Matrix.checkMatrix(X);\n    Y = Matrix.checkMatrix(Y);\n    const init = initialisation(X, Y);\n    const { l, p, XtX, XtY, K, D } = init;\n    let { iter, W, Pset, Fset } = init;\n    const { maxIterations = X.columns * 3, gradientTolerance = 1e-5 } = options;\n    // Active set algorithm for NNLS main loop\n    while (Fset.length > 0) {\n        // Solves for the passive variables (uses subroutine below)\n        let L = cssls(XtX, XtY.subMatrixColumn(Fset), selection(Pset, Fset), l, Fset.length);\n        for (let i = 0; i < l; i++) {\n            for (let j = 0; j < Fset.length; j++) {\n                K.set(i, Fset[j], L.get(i, j));\n            }\n        }\n        // Finds any infeasible solutions\n        const infeasIndex = [];\n        for (let j = 0; j < Fset.length; j++) {\n            for (let i = 0; i < l; i++) {\n                if (L.get(i, j) < 0) {\n                    infeasIndex.push(j);\n                    break;\n                }\n            }\n        }\n        let Hset = selection(Fset, infeasIndex);\n        // Makes infeasible solutions feasible (standard NNLS inner loop)\n        if (Hset.length > 0) {\n            let m = Hset.length;\n            const alpha = Matrix.ones(l, m);\n            while (m > 0 && iter < maxIterations) {\n                iter++;\n                alpha.mul(Infinity);\n                // Finds indices of negative variables in passive set\n                const hRowColIdx = [[], []]; // Indexes work in pairs, each pair reprensents a single element, first array is row index, second array is column index\n                const negRowColIdx = [[], []]; // Same as before\n                for (let j = 0; j < m; j++) {\n                    for (const item of Pset[Hset[j]]) {\n                        if (K.get(item, Hset[j]) < 0) {\n                            hRowColIdx[0].push(item); // i\n                            hRowColIdx[1].push(j);\n                            negRowColIdx[0].push(item); // i\n                            negRowColIdx[1].push(Hset[j]);\n                        } // Compared to matlab, here we keep the row/column indexing (we are not taking the linear indexing)\n                    }\n                }\n                for (let k = 0; k < hRowColIdx[0].length; k++) {\n                    // could be hRowColIdx[1].length as well\n                    alpha.set(hRowColIdx[0][k], hRowColIdx[1][k], D.get(negRowColIdx[0][k], negRowColIdx[1][k]) /\n                        (D.get(negRowColIdx[0][k], negRowColIdx[1][k]) -\n                            K.get(negRowColIdx[0][k], negRowColIdx[1][k])));\n                }\n                let alphaMin = [];\n                const minIdx = [];\n                for (let j = 0; j < m; j++) {\n                    alphaMin[j] = alpha.minColumn(j);\n                    minIdx[j] = alpha.minColumnIndex(j)[0];\n                }\n                alphaMin = Matrix.rowVector(alphaMin);\n                for (let i = 0; i < l; i++) {\n                    alpha.setSubMatrix(alphaMin, i, 0);\n                }\n                let E = new Matrix(l, m);\n                E = D.subMatrixColumn(Hset).subtract(alpha\n                    .subMatrix(0, l - 1, 0, m - 1)\n                    .mul(D.subMatrixColumn(Hset).subtract(K.subMatrixColumn(Hset))));\n                for (let j = 0; j < m; j++) {\n                    D.setColumn(Hset[j], E.subMatrixColumn([j]));\n                }\n                const idx2zero = [minIdx, Hset];\n                for (let k = 0; k < m; k++) {\n                    D.set(idx2zero[0][k], idx2zero[1][k], 0);\n                }\n                for (let j = 0; j < m; j++) {\n                    Pset[Hset[j]].splice(Pset[Hset[j]].findIndex((item) => item === minIdx[j]), 1);\n                }\n                L = cssls(XtX, XtY.subMatrixColumn(Hset), selection(Pset, Hset), l, m);\n                for (let j = 0; j < m; j++) {\n                    K.setColumn(Hset[j], L.subMatrixColumn([j]));\n                }\n                Hset = [];\n                for (let j = 0; j < K.columns; j++) {\n                    for (let i = 0; i < l; i++) {\n                        if (K.get(i, j) < 0) {\n                            Hset.push(j);\n                            break;\n                        }\n                    }\n                }\n                m = Hset.length;\n            }\n        }\n        const newParam = optimality(iter, maxIterations, XtX, XtY, Fset, Pset, W, K, l, p, D, gradientTolerance);\n        Pset = newParam.Pset;\n        Fset = newParam.Fset;\n        W = newParam.W;\n    }\n    return K;\n}\n//# sourceMappingURL=fcnnls.js.map","import { Matrix } from 'ml-matrix';\nimport fcnnls from './fcnnls';\n/**\n * Fast Combinatorial Non-negative Least Squares with single Right Hand Side\n * @param X - input data matrix\n * @param y - output data vector\n * @param options - for maxIterations\n * @returns Solution vector.\n */\nexport default function fcnnlsVector(X, y, options = {}) {\n    if (!Array.isArray(y)) {\n        throw new TypeError('y must be a 1D Array');\n    }\n    const Y = Matrix.columnVector(y);\n    const K = fcnnls(X, Y, options);\n    const k = K.to1DArray();\n    return k;\n}\n//# sourceMappingURL=fcnnlsVector.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.splitMatrix = splitMatrix;\nfunction splitMatrix(matrix) {\n    const nbRows = matrix.length;\n    const nbColumns = matrix[0].length;\n    const { nonZeroColumns, nonZeroRows } = createMatrixIndexes(matrix);\n    const rowsMapping = new Int32Array(nbRows).fill(-1);\n    const columnsMapping = new Int32Array(nbColumns).fill(-1);\n    const matrices = [];\n    let currentMappingID = 0;\n    for (let row = 0; row < matrix.length; row++) {\n        for (let column of nonZeroColumns[row]) {\n            if (matrix[row][column] === 0) {\n                continue;\n            }\n            if (rowsMapping[row] !== -1) {\n                continue;\n            }\n            if (columnsMapping[column] !== -1) {\n                continue;\n            }\n            currentMappingID++;\n            const result = { rows: [], columns: [] };\n            matrices.push(result);\n            processFromACell(row, rowsMapping, columnsMapping, currentMappingID, nonZeroColumns, nonZeroRows, result);\n        }\n    }\n    appendSubMatrix(matrices, matrix);\n    return matrices;\n}\nfunction appendSubMatrix(matrices, matrix) {\n    for (const entry of matrices) {\n        const submatrix = new Array(entry.rows.length)\n            .fill(0)\n            .map(() => new Float64Array(entry.columns.length));\n        for (let i = 0; i < entry.rows.length; i++) {\n            for (let j = 0; j < entry.columns.length; j++) {\n                submatrix[i][j] = matrix[entry.rows[i]][entry.columns[j]];\n            }\n        }\n        entry.submatrix = submatrix;\n    }\n}\nfunction processFromACell(row, rowsMapping, columnsMapping, currentMappingID, nonZeroColumns, nonZeroRows, result) {\n    const rowsTodo = [row];\n    let nextRow;\n    while ((nextRow = rowsTodo.pop()) !== undefined) {\n        result.rows.push(nextRow);\n        for (let column of nonZeroColumns[nextRow]) {\n            if (columnsMapping[column] !== -1) {\n                continue;\n            }\n            rowsMapping[nextRow] = currentMappingID;\n            columnsMapping[column] = currentMappingID;\n            result.columns.push(column);\n            for (let internalRow of nonZeroRows[column]) {\n                if (rowsMapping[internalRow] === -1) {\n                    if (!rowsTodo.includes(internalRow)) {\n                        rowsTodo.push(internalRow);\n                    }\n                    continue;\n                }\n                if (rowsMapping[internalRow] !== currentMappingID) {\n                    throw new Error('This should not happen');\n                }\n            }\n        }\n    }\n}\nfunction createMatrixIndexes(matrix) {\n    const nbRows = matrix.length;\n    const nbColumns = matrix[0].length;\n    const nonZeroColumns = new Array(nbRows).fill(0).map(() => []);\n    const nonZeroRows = new Array(nbColumns).fill(0).map(() => []);\n    for (let row = 0; row < nbRows; row++) {\n        for (let column = 0; column < nbColumns; column++) {\n            if (matrix[row][column] === 0) {\n                continue;\n            }\n            nonZeroColumns[row].push(column);\n            nonZeroRows[column].push(row);\n        }\n    }\n    return { nonZeroColumns, nonZeroRows };\n}\n//# sourceMappingURL=splitMatrix.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.blockFcnnls = blockFcnnls;\nconst ml_fcnnls_1 = require(\"ml-fcnnls\");\nconst ml_matrix_1 = require(\"ml-matrix\");\nconst splitMatrix_js_1 = require(\"./splitMatrix.js\");\nfunction blockFcnnls(fullMatrix) {\n    const target = fullMatrix[0];\n    const originalMatrix = fullMatrix.slice(1);\n    const matrix = [];\n    const emptyRow = new Float64Array(originalMatrix[0].length);\n    row: for (const row of originalMatrix) {\n        for (let i = 0; i < row.length; i++) {\n            if (row[i] !== 0 && target[i] !== 0) {\n                matrix.push(row);\n                continue row;\n            }\n        }\n        matrix.push(emptyRow);\n    }\n    // if there is no match with first spectrum we just ignore this entry\n    const matrices = (0, splitMatrix_js_1.splitMatrix)(matrix);\n    appendTarget(matrices, target);\n    const weights = new Float64Array(matrix.length);\n    const reconstructed = new Float64Array(target.length);\n    for (const entry of matrices) {\n        const A = new ml_matrix_1.Matrix(entry.submatrix);\n        const At = A.transpose();\n        const b = Array.from(entry.target); // target\n        const w = (0, ml_fcnnls_1.fcnnlsVector)(At, b);\n        const W = new ml_matrix_1.Matrix([w]); // weights\n        const partialReconstructed = W.mmul(A).getRow(0);\n        for (let i = 0; i < entry.columns.length; i++) {\n            reconstructed[entry.columns[i]] = partialReconstructed[i];\n        }\n        for (let i = 0; i < entry.rows.length; i++) {\n            weights[entry.rows[i]] = w[i];\n        }\n    }\n    return {\n        reconstructed,\n        weights,\n    };\n}\nfunction appendTarget(matrices, target) {\n    for (const entry of matrices) {\n        entry.target = [];\n        for (let column of entry.columns) {\n            entry.target.push(target[column]);\n        }\n    }\n}\n//# sourceMappingURL=blockFcnnls.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mfsDeconvolution = mfsDeconvolution;\nconst uuid_1 = require(\"@lukeed/uuid\");\nconst isotopic_distribution_1 = require(\"isotopic-distribution\");\nconst mf_generator_1 = require(\"mf-generator\");\nconst ml_matrix_1 = require(\"ml-matrix\");\nconst ml_spectra_processing_1 = require(\"ml-spectra-processing\");\nconst getPeakWidthFct_1 = require(\"./getPeakWidthFct\");\nconst blockFcnnls_js_1 = require(\"./utils/blockFcnnls.js\");\n/**\n *\n * @param {import('ms-spectrum').Spectrum} spectrum\n * @param {Array}         ranges\n * @param {object}        [options={}]\n * @param {string}        [options.ionizations=''] - Comma separated list of ionizations (to charge the molecule)\n * @param {string[]}      [options.customMFs={}] - An array of MFs to add to the list generated by ranges\n * @param {object}        [options.mass={}]\n * @param {number}        [options.mass.threshold=0.001]\n * @param {number}        [options.mass.precision=0] -  Precision (accuracy) of the monoisotopic mass in ppm\n * @param {string|Function} [options.mass.peakWidthFct=()=>0.01]\n * @param {import('cheminfo-types').Logger} [options.logger]\n * @param {object}        [options.filter={}]\n * @param {number}        [options.filter.minMass=0] - Minimal monoisotopic mass\n * @param {number}        [options.filter.maxMass=+Infinity] - Maximal monoisotopic mass\n * @param {number}        [options.filter.minCharge=-Infinity] - Minimal charge\n * @param {number}        [options.filter.maxCharge=+Infinity] - Maximal charge\n * @param {boolean}       [options.filter.absoluteCharge=false] - If true, the charge is absolute (so between 0 and +Infinity by default)\n * @param {boolean}       [options.filter.allowNegativeAtoms=false] - Allow to have negative number of atoms\n * @param {object}        [options.filter.unsaturation={}]\n * @param {number}        [options.filter.unsaturation.min=-Infinity] - Minimal unsaturation\n * @param {number}        [options.filter.unsaturation.max=+Infinity] - Maximal unsaturation\n * @param {boolean}       [options.filter.unsaturation.onlyInteger=false] - Integer unsaturation\n * @param {boolean}       [options.filter.unsaturation.onlyNonInteger=false] - Non integer unsaturation\n * @param {object}        [options.filter.atoms] - object of atom:{min, max}\n * @param {function}      [options.filter.callback] - a function to filter the MF\n * @param {string}        [options.filterFct]\n */\nasync function mfsDeconvolution(spectrum, ranges, options = {}) {\n    if (!spectrum || !spectrum.getPeaks || !spectrum.getPeaks()) {\n        throw new Error('spectrum must be an instance of Spectrum');\n    }\n    const { customMFs = [], mass: massOptions = {}, filter, ionizations, logger, } = options;\n    const { threshold = 0.001 } = massOptions;\n    if (!ionizations) {\n        logger?.warn('No ionizations provided this could be an error if the molecule is not naturally charged.');\n    }\n    const peakWidthFct = (0, getPeakWidthFct_1.getPeakWidthFct)(options);\n    const centroids = getCentroids(spectrum, { threshold });\n    let mfs = await (0, mf_generator_1.generateMFs)(ranges, { filter, ionizations });\n    if (customMFs.length > 0) {\n        const newMFs = await (0, mf_generator_1.generateMFs)([customMFs], { filter, ionizations });\n        mfs = mfs.concat(newMFs);\n    }\n    for (const mf of mfs) {\n        mf.id = (0, uuid_1.v4)();\n    }\n    mfs = addIsotopicDistributionAndCheckMF(mfs, { logger, peakWidthFct });\n    mfs.sort((mf1, mf2) => mf1.ms.em - mf2.ms.em);\n    const combined = buildCombined(centroids, mfs, { peakWidthFct });\n    if (!hasOverlap(combined.ys)) {\n        throw new Error('Could not find any overlaping peaks between experimental and theoretical spectra.');\n    }\n    const { weights, reconstructed } = (0, blockFcnnls_js_1.blockFcnnls)(combined.ys);\n    const relativeIntensity = (0, ml_spectra_processing_1.xNormed)(weights);\n    for (let i = 0; i < mfs.length; i++) {\n        mfs[i].absoluteQuantity = weights[i];\n        mfs[i].relativeQuantity = relativeIntensity[i];\n        mfs[i].distribution.y = mfs[i].distribution.y.map((y) => y * weights[i]);\n    }\n    let matchingScore = 0;\n    const difference = [];\n    for (let i = 0; i < combined.ys[0].length; i++) {\n        matchingScore += Math.min(combined.ys[0][i], reconstructed[i]);\n        difference.push(combined.ys[0][i] - reconstructed[i]);\n    }\n    matchingScore = matchingScore / (0, ml_spectra_processing_1.xSum)(combined.ys[0]);\n    let A;\n    let W;\n    return {\n        reconstructed: {\n            x: combined.x,\n            y: reconstructed,\n        },\n        difference: {\n            x: combined.x,\n            y: difference,\n        },\n        mfs: mfs\n            .slice()\n            .sort((mf1, mf2) => mf2.absoluteQuantity - mf1.absoluteQuantity),\n        matchingScore,\n        getFilteredReconstructed,\n    };\n    function getFilteredReconstructed(ids = mfs.map((mf) => mf.id)) {\n        if (!A)\n            A = new ml_matrix_1.Matrix(combined.ys.slice(1));\n        if (!W)\n            W = new ml_matrix_1.Matrix([weights]);\n        let wClone = W;\n        if (ids.length !== W.length) {\n            wClone = W.clone();\n            for (let i = 0; i < mfs.length; i++) {\n                if (ids.includes(mfs[i].id))\n                    continue;\n                wClone.set(0, i, 0);\n            }\n        }\n        const filteredReconstructed = wClone.mmul(A).getRow(0);\n        return {\n            x: combined.x,\n            y: filteredReconstructed,\n        };\n    }\n}\n/**\n *\n * @param {object} spectrum\n * @param {object} [options={}]\n * @param {number} [options.threshold=0.001]\n */\nfunction getCentroids(spectrum, options = {}) {\n    const { threshold = 0.001 } = options;\n    const peaks = spectrum.getPeaks({\n        threshold,\n    });\n    return {\n        x: peaks.map((peak) => peak.x),\n        y: peaks.map((peak) => peak.y),\n    };\n}\nfunction addIsotopicDistributionAndCheckMF(mfs, options) {\n    const { logger, peakWidthFct } = options;\n    for (let mf of mfs) {\n        const isotopicDistribution = new isotopic_distribution_1.IsotopicDistribution(mf.mf, {\n            fwhm: peakWidthFct(mf.ms.em), // when should we join peaks\n            ionizations: mf.ms.ionization,\n        });\n        mf.distribution = isotopicDistribution.getXY({ sumValue: 1 });\n        if (mf.distribution.y.length === 0) {\n            logger?.warn(`Problem with isotopic distribution calculation. Negative number of atoms ? ${mf.mf} ${mf.ms.ionization}`);\n        }\n    }\n    mfs = mfs.filter((mf) => mf.distribution.x.length > 0);\n    if (mfs.length === 0) {\n        throw new Error('No MF found. Did you forget ionization ?');\n    }\n    return mfs;\n}\nfunction buildCombined(centroids, mfs, options = {}) {\n    const { peakWidthFct } = options;\n    if (!peakWidthFct) {\n        throw new Error('peakWidthFct is mandatory');\n    }\n    const data = [centroids];\n    for (const mf of mfs) {\n        data.push(mf.distribution);\n    }\n    // We align all the spectra to the first one, but if some values (X) are missing, we will add them.\n    return (0, ml_spectra_processing_1.xyArrayAlignToFirst)(data, {\n        delta: peakWidthFct,\n    });\n}\n/**\n * We will check if there is any overlap between the theoretical and experimental spectra\n * @param {number[][]} ys\n */\nfunction hasOverlap(ys) {\n    for (let i = 0; i < ys[0].length; i++) {\n        for (let j = 1; j < ys.length; j++) {\n            if (ys[0][i] > 0 && ys[j][i] > 0) {\n                return true;\n            }\n        }\n    }\n    return false;\n}\n//# sourceMappingURL=mfsDeconvolution.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.reconstruct = reconstruct;\nconst ml_spectra_processing_1 = require(\"ml-spectra-processing\");\n/**\n * Reconstruct a mass spectrum from a set of molecular formulas\n * that has the  distribution property\n * @param {object[]} mfs\n * @param {object} [options={}]\n * @param {import('cheminfo-types').Logger} [options.logger]\n * @param {object}        [options.mass={}]\n * @param {number}        [options.mass.precision=0] -  Precision (accuracy) of the monoisotopic mass in ppm\n * @param {string|Function} [options.mass.peakWidthFct=()=>0.01]\n */\nconst getPeakWidthFct_js_1 = require(\"./getPeakWidthFct.js\");\nfunction reconstruct(mfs, options = {}) {\n    const delta = (0, getPeakWidthFct_js_1.getPeakWidthFct)(options);\n    const data = mfs.map((mf) => mf.distribution);\n    const reconstructed = (0, ml_spectra_processing_1.xyArrayWeightedMerge)(data, { delta });\n    return reconstructed;\n}\n//# sourceMappingURL=reconstruct.js.map","import * as EMDBPkg from 'emdb';\nimport * as SpectrumPkg from 'ms-spectrum';\n\nexport { groups, groupsObject } from 'chemical-groups';\nexport { elements, elementsObject } from 'chemical-elements';\nexport { IsotopicDistribution } from 'isotopic-distribution';\n\nEMDBPkg.EMDB.massShifts = EMDBPkg.massShifts;\nEMDBPkg.EMDB.prototype.massShifts = EMDBPkg.massShifts;\nexport const EMDB = EMDBPkg.EMDB;\n\nSpectrumPkg.Spectrum.JsGraph = SpectrumPkg.JsGraph;\nSpectrumPkg.Spectrum.prototype.JsGraph = SpectrumPkg.JsGraph;\nexport const Spectrum = SpectrumPkg.Spectrum;\nexport const MSComparator = SpectrumPkg.MSComparator;\nexport const getBestPeaks = SpectrumPkg.getBestPeaks;\n\nexport { MF, ensureCase } from 'mf-parser';\nexport {\n  MFRange,\n  getRangesForFragment,\n  preprocessIonizations,\n  preprocessRanges,\n} from 'mf-utilities';\nexport { generateMFs } from 'mf-generator';\n\nexport { atomSorter } from 'atom-sorter';\nexport { mfFromEA } from 'mf-from-ea';\nexport { mfFromAtomicRatio } from 'mf-from-atomic-ratio';\nexport {\n  ActiveOrNaturalSummarizer,\n  OctoChemDB,\n  createTaxonomyTree,\n} from 'octochemdb';\nexport * as MassFragmentation from 'mass-fragmentation';\nexport * as Report from 'ms-report';\nexport * as MFSDeconvolution from 'mfs-deconvolution';\nexport * as Nucleotide from 'nucleotide';\nexport * as Peptide from 'peptide';\n"],"names":["toString","Object","prototype","isAnyArray","value","tag","call","endsWith","includes","reimAbsolute","data","length","re","im","newArray","Float64Array","i","Math","hypot","getOutputArray","output","undefined","TypeError","xAbsolute","array","tmpArray","slice","xMedian","input","options","exact","middleIndex","calcMiddle","median","quickSelect","medianNext","low","high","middle","currentLow","currentHigh","swap","j","temp","floor","xAbsoluteMedian","xCheck","minLength","Error","xFindClosestIndex","target","sorted","abs","index","diff","Number","POSITIVE_INFINITY","currentDiff","xGetFromToIndex","x","fromIndex","toIndex","from","to","xAbsoluteSum","sum","xAdd","array1","array2","isConstant","constant","array3","xApplyFunctionStr","variableLabel","fctString","fct","Function","replaceAll","toReturn","isNaN","xMultiply","xDotProduct","A","B","g","result","xCrossCorrelation","tau","lag","n","q","k","w","l","xAutoCorrelation","xBoxPlot","sort","posQ1","posQ3","medianPos","q1MinProportion","q3MinProportion","medianMinProportion","min","q1","q3","max","at","xBoxPlotWithOutliers","boxPlot","iqr","lowerWhisker","upperWhisker","outliers","minWhisker","maxWhisker","push","info","xCheckLengths","xCorrelation","sumA","sumA2","sumB","sumB2","sumAB","a","b","sqrt","arguments","_options$fromIndex","_options$toIndex","isInteger","maxValue","minValue","rescale","Array","currentMin","currentMax","RangeError","_options$min","autoMinMax","_options$max","factor","defineProperty","matrix","require$$0","require$$1","indent","repeat","indentData","inspectMatrix","inspectMatrixWithOptions","maxRows","maxColumns","maxNumSize","padMinus","constructor","name","inspectData","rows","columns","maxI","maxJ","loop","get","line","formatNumber","join","num","formatNumber2","padEnd","len","str","fix","toFixed","startsWith","exp","toExponential","installMathOperations","AbstractMatrix","Matrix","add","addS","addM","set","checkMatrix","newMatrix","sub","subS","subM","subtract","subtractS","subtractM","mul","mulS","mulM","multiply","multiplyS","multiplyM","div","divS","divM","divide","divideS","divideM","mod","modS","modM","modulus","modulusS","modulusM","and","andS","andM","or","orS","orM","xor","xorS","xorM","leftShift","leftShiftS","leftShiftM","signPropagatingRightShift","signPropagatingRightShiftS","signPropagatingRightShiftM","rightShift","rightShiftS","rightShiftM","zeroFillRightShift","zeroFillRightShiftS","zeroFillRightShiftM","not","acos","acosh","asin","asinh","atan","atanh","cbrt","ceil","clz32","cos","cosh","expm1","fround","log","log1p","log10","log2","round","sign","sin","sinh","tan","tanh","trunc","pow","arg0","powS","powM","checkRowIndex","outer","checkColumnIndex","checkRowVector","vector","to1DArray","checkColumnVector","checkRowIndices","rowIndices","checkColumnIndices","columnIndices","checkRange","startRow","endRow","startColumn","endColumn","checkNumber","checkNonEmpty","isEmpty","sumByRow","sumByColumn","sumAll","v","productByRow","productByColumn","productAll","varianceByRow","unbiased","mean","cols","variance","sum1","sum2","varianceByColumn","varianceAll","size","centerByRow","centerByColumn","centerAll","getScaleByRow","scale","scaleByRow","getScaleByColumn","scaleByColumn","getScaleAll","divider","scaleAll","from1DArray","newRows","newColumns","newData","row","column","rowVector","columnVector","zeros","ones","fill","rand","random","randInt","interval","eye","diag","matrix1","matrix2","isMatrix","klass","apply","callback","to2DArray","copy","toJSON","isRowVector","isColumnVector","isVector","isSquare","isSymmetric","isDistance","isEchelonForm","previousColumn","checked","isReducedEchelonForm","echelonForm","clone","h","iMax","swapRows","tmp","reducedEchelonForm","m","maxRow","p","pivot","setSubMatrix","neg","getRow","getRowVector","setRow","row1","row2","getColumn","getColumnVector","setColumn","swapColumns","column1","column2","addRowVector","subRowVector","mulRowVector","divRowVector","addColumnVector","subColumnVector","mulColumnVector","divColumnVector","mulRow","mulColumn","by","NaN","NEGATIVE_INFINITY","maxIndex","idx","minIndex","maxRowIndex","minRow","minRowIndex","maxColumn","maxColumnIndex","minColumn","minColumnIndex","norm","type","dot","cumulativeSum","vector2","vector1","mmul","other","Bcolj","s","mpow","scalar","bb","e","strassen2x2","a11","b11","a12","b12","a21","b21","a22","b22","m1","m2","m3","m4","m5","m6","m7","c00","c01","c10","c11","strassen3x3","a00","a01","a02","a10","a20","b00","b01","b02","b10","b20","m8","m9","m10","m11","m12","m13","m14","m15","m16","m17","m18","m19","m20","m21","m22","m23","c02","c12","c20","c21","c22","mmulStrassen","y","r1","c1","r2","c2","console","warn","embed","mat","r","c","resultat","blockMult","halfRows","parseInt","halfCols","subMatrix","scaleRows","isFinite","scaleColumns","flipRows","first","last","flipColumns","kroneckerProduct","kroneckerSum","AxI","IxB","transpose","sortRows","compareFunction","compareNumbers","sortColumns","subMatrixRow","indices","subMatrixColumn","selection","rowIndex","columnIndex","trace","entries","product","standardDeviation","center","Symbol","iterator","col","values","for","isArrayOfNumbers","every","element","randomInt","diagonal","identity","negate","tensorProduct","#initData","nRows","nColumns","arrayData","removeRow","splice","addRow","removeColumn","newRow","addColumn","SymmetricMatrix","diagonalSize","isSymmetricMatrix","klassType","upperRightEntries","toMatrix","removeCross","addCross","applyMask","mask","sidesToRemove","passthroughs","reverse","sideIndex","toCompact","compact","fromCompact","compactSize","JSON","stringify","upperRightValues","DistanceMatrix","isDistanceMatrix","klassSubType","sideSize","toSymmetricMatrix","compactLength","BaseView","MatrixColumnView","MatrixColumnSelectionView","MatrixFlipColumnView","MatrixFlipRowView","MatrixRowView","MatrixRowSelectionView","MatrixSelectionView","MatrixSubView","MatrixTransposeView","WrapperMatrix1D","_calculateIndex","WrapperMatrix2D","wrap","LuDecomposition","lu","pivotVector","pivotSign","t","LUcolj","kmax","LU","isSingular","solve","count","X","determinant","lowerTriangularMatrix","upperTriangularMatrix","pivotPermutationVector","hypotenuse","QrDecomposition","qr","rdiag","nrm","QR","Rdiag","isFullRank","orthogonalMatrix","SingularValueDecomposition","computeLeftSingularVectors","computeRightSingularVectors","autoTranspose","wantu","Boolean","wantv","swapped","aux","nu","ni","U","V","work","si","nct","nrt","mrc","pp","eps","EPSILON","kase","alpha","MIN_VALUE","ks","f","cs","sn","sp","spm1","epm1","sk","ek","shift","Y","threshold","scols","Ls","rightSingularVectors","VL","vrows","urows","VLU","solveForDiagonal","inverse","vcols","ucols","condition","norm2","rank","tol","ii","leftSingularVectors","diagonalMatrix","useSVD","leftHandSide","rightHandSide","d","subMatrix0","subMatrix1","subMatrix2","xrange","exception","range","dependenciesOneRow","error","thresholdValue","thresholdError","returnArray","linearDependencies","results","Abis","svd","pseudoInverse","svdSolution","covariance","xMatrix","yMatrix","yIsSame","cov","correlation","sdx","sdy","corr","EigenvalueDecomposition","assumeSymmetric","tred2","tql2","H","ort","orthes","hqr2","realEigenvalues","imaginaryEigenvalues","eigenvectorMatrix","hh","dl1","c3","el1","s2","tst1","nn","exshift","z","iter","ra","sa","vr","vi","notlast","cdivres","cdiv","xr","xi","yr","yi","CholeskyDecomposition","dimension","positiveDefinite","L","isPositiveDefinite","nipals","scaleScores","maxIterations","terminationCriteria","u","tOld","counter","xResidual","residual","yResidual","betas","CHO","CholeskyDecomposition_1","EVD","LuDecomposition_1","Matrix_1","NIPALS","Nipals","SVD","_default","default","inverse_1","solve_1","absDiff","xCostMatrix","rowsArray","columnsArray","nbRows","nbColumns","xCumulative","xMean","sumValue","xVariance","sqrError","xStandardDeviation","xDistributionStats","sd","nb","xDivide","xEnsureFloat64","xGetTargetIndex","targetIndex","FFT","_csize","table","angle","PI","power","_width","_bitrev","revShift","_out","_data","_inv","fft","fromComplexArray","complex","storage","res","createComplexArray","toComplexArray","completeSpectrum","spectrum","half","transform","out","_transform4","realTransform","_realTransform4","inverseTransform","width","step","outOff","bitrev","off","_singleTransform2","_singleTransform4","inv","quarterLen","limit","C","D","Ar","Ai","Br","Bi","Cr","Ci","Dr","Di","MAr","MAi","tableBr","tableBi","MBr","MBi","tableCr","tableCi","MCr","MCi","tableDr","tableDi","MDr","MDi","T0r","T0i","T1r","T1i","T2r","T2i","T3r","T3i","FAr","FAi","FCr","FCi","FBr","FBi","FDr","FDi","evenR","evenI","oddR","oddI","leftR","leftI","rightR","rightI","step2","step3","_singleRealTransform2","_singleRealTransform4","halfLen","hquarterLen","ST0r","ST0i","ST1r","ST1i","ST2r","ST2i","ST3r","ST3i","SFAr","SFAi","SFBr","SFBi","SA","SB","createNumberArray","ArrayConstructor","createDoubleArray","createFromToArray","includeFrom","includeTo","distribution","delta","base","firstExponent","LOOP","FLOAT_MUL","sh1","sh2","sh3","multiplyUint32","nlo","nhi","XSadd","state","seed","Date","now","Uint32Array","init","getFloat","bind","getUint32","nextState","periodCertification","createRandomArray","generator","gaussianGenerator","GaussianGenerator","generateGaussian","String","val","createStepArray","getRescaler","targetMin","targetMax","clamp","algorithmOptions","algorithm","originalMin","originalMax","convert","getDataConverter","originalRange","targetRange","rescaler","valueScaled","kind","isPowerOfTwo","nextPowerOfTwo","recursiveResolve","object","promises","appendPromises","Promise","all","key","then","recursiveUntypeArrays","modifier","ArrayBuffer","isView","replacer","space","internalReplacer","xSubtract","calculateAdaptiveWeights","yData","baseline","weights","controlPoints","factorStd","learningRate","minWeight","absResiduals","medAbsRes","mad","rawWeights","maxWeight","MIN_SAFE_INTEGER","newWeights","oneMinusLearningRate","weight","xHilbertTransform","forceFFT","hilbertTransformWithFFT","resampling","hilbertTransform","fftResult","multiplier","hilbertSignal","inClockwise","aSum","cSum","oldLength","ratio","currentIndex","xMaxValue","xMinValue","xHistogram","histogram","centerX","nbSlots","logBaseX","logBaseY","absolute","logOfBase","slotSize","xIsEquallySpaced","tolerance","maxDx","minDx","MAX_SAFE_INTEGER","absoluteDifference","xIsMonotonic","xMassCenterVectorSimilarity","recenter","similarityFct","depth1","getDepth","depth2","depth","similarity","level","maxSimilarity","slot","value1","value2","shiftSubTree","currentLevel","levelSlotShift","levelShift","levelSlotSize","slotIndex","xMaxAbsoluteValue","xMaxIndex","xMeanAbsoluteError","xMeanSquaredError","xMeanWeighted","sumWeights","xMedianAbsoluteDeviation","averageDeviations","xMinIndex","xMinMaxDelta","minDelta","maxDelta","xMinMaxValues","xMode","maxCount","counts","Y1","P1","Q1","Y2","P2","Q2","Y3","P3","Q3","Y4","P4","Q4","Y5","P5","Q5","polyval","coef","calc","P","Q","erfcinv","simpleNormInv","magnitudeMode","SQRT2","simpleNormInvNumber","xNoiseSanPlot","cutOff","refine","scaleFactor","fixOffset","prepareData","medianIndex","firstNegativeValueIndex","findIndex","lastPositiveValueIndex","signPositive","signNegative","cutOffDist","determineCutOff","pIndex","initialNoiseLevelPositive","skyPoint","initialNoiseLevelNegative","nIndex","noiseLevelPositive","noiseLevelNegative","cloneSignPositive","cloneSignNegative","cutOffSignalsIndexPlus","cutOffSignalsIndexNeg","cutOffSignals","correctionFactor","effectiveCutOffDist","refinedCorrectionFactor","positive","negative","snr","sanplot","generateSanPlot","fromTo","considerList","indexMax","minKi","whereToCutStat","top","elementsOfCutOff","filter","averageValue","kiSqrt","xAxis","_e","xNoiseStandardDeviation","xNorm","xSum","xNormed","absoluteSumValue","absoluteSum","currentMaxValue","sumFactor","xPadding","fromEnd","toEnd","xParetoNormalization","sqrtSD","xRobustDistributionStats","filteredArray","xRemoveOutliersIQR","higherWhisker","xRescale","xRolling","window","padding","padded","subarray","xRollingAverage","xRollingMax","xRollingMedian","xRollingMin","xRotate","xSampling","downSampling","xSequentialFillFromStep","parameters","xSequentialFillFromTo","xSortAscending","isArray","xSortDescending","xUniqueSorted","Set","matrixCholeskySolver","nonZerosArray","permutationEncoded","pinv","mt","ar","ac","ap","ai","ax","lnz","colOffset","adr","lp","parent","lnzArray","flag","pattern","bp1","ldlSymbolic","lx","li","ldlNumeric","ldlPerm","ldlLsolve","ldlDsolve","ldlLTsolve","ldlPermt","kk","p2","lKi","addWeights","nbPoints","newLeftHandSide","newRightHandSide","next","createSystemMatrix","lambda","upperTriangularNonZeros","xWhittakerSmoother","getWeightsAndControlPoints","prevBaseline","iteration","Infinity","cho","newBaseline","calculateDelta","xWhitakerSmoother","reimPhaseCorrection","phi0","phi1","firstAngle","beta","cosTheta","sinTheta","newRe","newIm","newCosTheta","newSinTheta","reimAutoPhaseCorrection","minRegSize","factorNoise","maxDistanceToJoin","finalPeaks","detectBaselineRegions","indexMask","x0","reTmp","imTmp","autoPhaseRegion","ph1","ph0","determiningGlobalValues","map","area","phased","toRadians","ph0Values","weightedLinearRegression","maxDiff","predictedPh0","magnitudeData","ds","holoborodko","peaksDs","robustBaseLineRegionsDetection","peaksSp","start","stop","nSteps","maxSteps","bestAng","minArea","dAng","tmpPhased","negArea","getNegArea","sumX","dk","Uint8Array","change","noiseLevel","prev","sxtw","swx","sw","sxtwy","swy","detMx","inMx","degree","reimFFT","applyZeroShift","csize","complexArray","zeroShift","reimZeroFilling","totalLength","newRE","newIM","xyAlign","data1","data2","common","y1","y2","length1","length2","difference","weightedX","xyCheck","xyCovariance","meanX","meanY","xyMaxYPoint","current","STEPS","xyCumulativeDistributionStatistics","maxY","x25","x50","x75","x100","currentStep","breakPoint","sumXY","sumY","xyEnsureFloat64","xyEnsureGrowingX","prevX","zonesNormalize","zones","exclusions","zone","currentZone","beforeExclusionsZones","normalizedExclusions","currentExclusionIndex","zoneIndex","zonesWithPoints","numberOfPoints","normalizedZones","zonesWithNumberOfPoints","totalSize","reduce","previous","unitsPerPoint","currentTotal","tempZone","tempZoneNumberOfPoints","equallySpacedSlot","xLength","halfStep","lastStep","previousX","MAX_VALUE","previousY","nextX","nextY","frontOutsideSpectra","backOutsideSpectra","currentValue","currentPoints","main","integral","x1","slope","intercept","equallySpacedSmooth","initialOriginalStep","lastOriginalStep","sumAtMin","sumAtMax","getSlope","y0","xyEquallySpaced","variant","zonesWithPointsRes","xResult","yResult","zoneResult","processZone","concat","xyExtract","newX","newY","position","xyFilter","xyFilterMinYValue","minRelativeYValue","xyFilterTopYValues","nbPeaks","descending","nbThreshold","xyFilterX","currentZoneIndex","xyFilterXPositive","xyFindClosestPoint","xyGetNMaxY","numberMaxPoints","xyGrowingX","xyIntegral","xyIntegration","currentxyIntegral","currentxyIntegration","xyJoinX","deltaIsFunction","currentDelta","xyMassCenter","sumYs","sumProducts","xyMassCenterVector","weightedIntegral","getWeightedIntegral","endIndexes","Int32Array","beginIndexes","currentBeginIndex","currentEndIndex","currentIntegration","nextIndex","firstIntegration","totalIntegration","totalWeightedIntegral","currentX","lastIntegration","xyMaxClosestYPoint","previousIndex","xyMaxY","xyMaximaY","maxima","startEqualIndex","xyMaxMerge","groupWidth","merged","maxAbscissa","currentxyMaxY","xyMedian","cumSumY","xyMergeByCentroids","centroids","mergedPoints","originalIndex","mergedIndex","xyMinClosestYPoint","minY","xyMinimaY","xyMinYPoint","xyPeakInfo","newDiff","after","before","inflectionBefore","inflectionAfter","extrema","inflectionMiddle","xyRealMaxYPoint","gamma","xyRealMinYPoint","xyReduce","optimize","internalZones","totalPoints","getInternalZones","notEnoughPoints","appendFromTo","zoneNbPoints","xyReduceNonContinuous","maxApproximateNbPoints","deltaX","internalZone","maxNbPoints","currentY","lastX","xyRolling","xySetYValue","xySortX","xyObject","response","xyToXYArray","objectArray","xyToXYObject","xyUniqueX","isSorted","average","cumulativeY","xyWeightedMerge","weightedAbscissa","xy2ToXY","xy2","xyValue","xreimSortX","xreimZeroFilling","getSlots","possibleXs","flatMap","currentSlot","number","slots","xyArrayAlign","requiredY","ys","positions","filterRequiredY","newYs","xyArrayWeightedMerge","deltaNumber","point","nextValue","maxX","sameSlot","minX","getSlotsToFirst","firstXs","otherXs","currentPosition","xyArrayAlignToFirst","xyArrayMerge","xyObjectCheck","points","xyObjectMaxXPoint","xyObjectMinXPoint","xyObjectBestPoints","numberCloseSlots","numberSlots","closeSlot","selected","monoisotopic","peakLoop","item","close","existing","newPeak","xyObjectJoinX","xError","xyObjectMaxYPoint","xyObjectMinMaxValues","xyObjectMinYPoint","xyObjectNormedY","structuredClone","normalizedYs","xyObjectSlotX","slotWidth","halfSlot","xyObjectSortX","xyObjectSumY","xyObjectToXY","entry","matrixAbsoluteMedian","flatten","currentRow","matrixCreateEmpty","matrixApplyNumericalEncoding","matrixInitial","dictionary","arrayOfValues","matrixAutoCorrelation","targetArray","sourceArray","matrixBoxPlot","columnArray","q1max","q3min","middleOver","matrixCenterZMean","matrixCheck","firstLength","matrixClone","matrixColumnsCorrelation","matrixCuthillMckee","list","adj","visited","toVisit","eol","ptr","nbhd","matrixCheckRanges","boundaries","matrixGetSubMatrix","duplicate","matrixMinMaxAbsoluteZ","matrixMinMaxZ","matrixHistogram","minMax","xHistogramOptions","finalHistogram","matrixMaxAbsoluteZ","matrixToArray","matrixMedian","matrixNoiseStandardDeviation","matrixNumericalDecoding","invertedDictionary","ret","matrixNumericalEncoding","dictCategoricalToNumerical","matrixPQN","matrixB","normalizationFactor","referenceSpectrum","currentVariable","medianOfQuotients","quotients","matrixSetSubMatrix","matrixZPivotRescale","matrixZRescale","matrixZRescalePerColumn","matrixTranspose","isUtf8","buf","ensureString","blob","encoding","guessEncoding","decoder","TextDecoder","decode","uint8","buffer","byteOffset","byteLength","isutf8","parse","text","uniqueX","bestGuess","keepInfo","xColumn","yColumn","numberColumns","maxNumberColumns","minNumberColumns","lines","split","forEach","trim","test","fields","parseFloat","replace","skipFirstColumn","xs","parseXY","parseXYAndKeepInfo","getBestPeaks","peaks","searchMonoisotopicRatio","ml_spectra_processing_1","peak","nextItem","atomSorter","elementsAndIsotopes","nominal","mass","abundance","symbol","monoisotopicMass","elements","elementsAndIsotopes_js_1","exports","elementsAndIsotopesObject","elementsAndStableIsotopes","elementsAndStableIsotopesObject","elementsObject","isotopesObject","elementsAndIsotopesObject_js_1","isotope","isotopes","stableIsotopesObject","mostAbundant","unsaturationsObject","O","N","Na","K","Li","Ca","F","Si","Cl","I","groupsObject","groups","groupsObject_js_1","groupsToSequence","mf","part","parts","usefulParts","match","oneLetter","Kind","BEGIN","ATOM","MULTIPLIER_RANGE","ISOTOPE","ISOTOPE_RATIO","CHARGE","SALT","OPENING_PARENTHESIS","CLOSING_PARENTHESIS","PRE_MULTIPLIER","MULTIPLIER","TEXT","parseCharge_1","parseCharge","charge","chargeNumber","charAt","Kind_1","require$$3","require$$4","expandGroups","simplify","lastKind","char","ascii","charCodeAt","nextAscii","getNumber","MFError","ANCHOR","getAtom","getParenthesisCharge","getIsotope","isotopeRatio","getCurlyBracketIsotopeRatio","lastResult","atom","getNonParenthesisCharge","COMMENT","checkParenthesis","fromCharCode","indexOfDash","indexOf","parseNumberWithDivision","chemical_elements_1","group","chemical_groups_1","expandedGroups","substring","begin","SyntaxError","message","string","parsed","realMultiplier","currentMultiplier","multipliers","newParsed","distinctParsedObject","atomA","atomB","subSuperscript","superscript","Format","SUBSCRIPT","SUPERSCRIPT","improveLinesForDisplay","Kind_js_1","beginCounter","endCounter","minCounter","nbParenthesisToSuppress","toSuppress","formatCharge_js_1","require$$2","improveLinesForDisplay_js_1","toDisplay","specialCases","Format_1","SUPERIMPOSE","over","formatCharge","under","nbElectrons","isMF_1","isMF","tmpMF","Style","toHtml_1","toHtml","html","Style_1","SUPERIMPOSE_SUP_SUB","ensureCase_1","ensureCase","toUpperCase","newPart","two","one","has","groupIdentical","parenthesisLevel","currentPart","comments","optimizeRanges","mfs","createMFs","newParts","mfsObject","hasRange","comment","currents","getMF","getIsotopeRatioInfo_1","getIsotopeRatioInfo","isotopesArray","ratios","normalize","getEA_1","getEA","addMass","isotopeRatioInfo","eas","getElements_1","getElements","addElement","find","newElement","getNumberOfIsotopologues","atoms","keys","nbIsotopes","nbAtoms","getNbCombinationsPerAtom","partToAtoms_1","partToAtoms","partToMF_1","partToMF","neutral","getInfoInternal_1","getInfoInternal","getNumberOfIsotopologues_1","require$$5","require$$6","customUnsaturations","emFieldName","msemFieldName","oneResult","getProcessedPart","nbIsotopologues","unsaturation","currentElement","validUnsaturation","getIsotopesInfo","getDistribution","toDisplay_js_1","partsToDisplay","partLine","partsToMF_1","partsToMF","toParts","expand","shouldExpandgroupsObject","createNewPart","openingParenthesis","closingParenthesis","preMultiplier","postMultiplier","previousKind","globalPartMultiplier","expandgroupsObject","combineAtomsIsotopesCharges","pop","expanded","currentKey","atom_sorter_1","calculateAndSortKeys","getKey","stringComparator","prop","toText_1","toText","subSuperscript_1","subscript","MFInternal_1","MFInternal","flatten_1","require$$7","require$$8","require$$9","require$$10","toParts_1","require$$11","parse_1","cache","displayed","toCanonicText","getInfo","ea","isotopesInfo","toMF","toNeutralMF","MF_1","MF","internal","parse_js_1","toHtml_js_1","unsaturationMatcher_1","unsaturationMatcher","onlyInteger","onlyNonInteger","generalMatcher","minMW","maxMW","minEM","maxEM","minCharge","maxCharge","absoluteCharge","mw","em","unsaturationMatcher_js_1","ensureUppercaseSequence_1","ensureUppercaseSequence","sequence","parenthesisCounter","currentSymbol","getEutrophicationPotential_1","getEutrophicationPotential","mf_parser_1","mfString","nC","nO","nN","nP","vRef","mwRef","thOD","nH","ep","getMsem_1","getMsem","ELECTRON_MASS","getMsInfo","allowNeutralMolecules","ionization","forceIonization","targetMass","realIonization","ms","ppm","getRangesForFragment_1","getRangesForFragment","ranges","newRanges","currentMF","possibilities","MFRange_1","MFRange","getRange","isInRange","rangeIndex","rangeElement","targetElement","currentRange","mfDiff_1","mfDiff","mfString1","mfString2","mf1","mf2","preprocessIonizations_1","preprocessIonizations","ionizationsString","ionizations","preprocessRanges_1","preprocessRanges","possibility","originalMinCount","originalMaxCount","currentMinCount","currentMaxCount","currentCount","currentMonoisotopicMass","currentCharge","currentUnsaturation","initialOrder","minInnerMass","maxInnerMass","minInnerCharge","maxInnerCharge","minMass","maxMass","innerCharge","isGroup","innerPossibility","msemMatcher","precision","targetMasses","minMSEM","maxMSEM","allowNegativeAtoms","msInfo","mf_utilities_1","ionizationAtoms","atomKeys","TargetMassCache_1","TargetMassCache","allowNeutral","firstPossibility","currentMinCharge","currentMaxCharge","findMFsSync","uniqueMFs","targetMassCache","filterUnsaturation","fakeMinUnsaturation","fakeMaxUnsaturation","advancedFilter","numberMFEvaluated","numberResults","currentIonization","orderMapping","getOrderMapping","theEnd","maxPosition","lastPosition","currentAtom","lastPossibility","unsaturationValue","isOdd","isValid","filterCharge","getMinMass","getResult","mf_matcher_1","newResult","updateCurrentAtom","previousAtom","setCurrentMinMax","ensureUniqueMF","bestCounts","previousEM","currentCounts","findMFs_1","findMFs","mfIncluded","targetEM","findMFsSync_js_1","fromMonoisotopicMass","masses","mf_finder_1","getPeaks","getFragmentPeaks","mfInfo","getPeaks_js_1","fromMonoisotopicMass_1","getMassRemainder","calculateOverlapFromDiff","diffs","sumPos","checkPeaks","extract","getCommonArray","pos2","array1Length","array2Length","arithmeticMean","geometricMean","logMean","lnsum","grandMean","means","samples","truncatedMean","percent","alreadySorted","harmonicMean","contraHarmonicMean","theMean","theVariance","standardError","robustMeanAndStdev","stdev","quartiles","quart","q2","pooledStandardDeviation","pooledVariance","vari","mode","itemCount","itemArray","mean1","mean2","skewness","s3","dev","kurtosis","s4","entropy","weightedMean","weightedStandardDeviation","weightedVariance","inPlace","standardize","standardDev","StatArray","commonExtractAndNormalize","extract1","extract2","common1","common2","info1","info2","COMMON_SECOND","COMMON_FIRST","extractAndNormalize","getIntersection","segment1","segment2","p0X","p0Y","p1X","p1Y","p2X","p2Y","p3X","p3Y","s1X","s1Y","s2X","s2Y","COMMON_NO","COMMON_BOTH","Comparator","setOptions","toLowerCase","trapezoid","commonFactor","widthBottom","widthTop","setTrapezoid","setFromTo","setPeaks1","extracts","array1Extract","array1ExtractInfo","array2Extract","array2ExtractInfo","setPeaks2","getExtract1","getExtract2","getExtractInfo1","getExtractInfo2","newWidthBottom","newWidthTop","widthSlope","newFrom","newTo","getOverlap","x2","getOverlapTrapezoid","small","big","targets","segment","intersection","calculateDiff","newFirst","newSecond","pos1","previous2","overlap","getSimilarity","newPeaks1","newPeaks2","extractInfo1","extractInfo2","fastSimilarity","NEUTRON_MASS","getPeakChargeBySimilarity","widthFunction","bottom","experimentalData","similarityProcessor","peaks_similarity_1","checkTopBottom","fromCharge","toCharge","fromIsotope","toIsotope","isotopeHeight","getPeaksWithCharge_1","getPeaksWithCharge","selectedPeaks","allPeaks","numberIsotopes","isotopeIntensity","localFromIndex","localToIndex","peaksWithCharge","bestCharge","theoreticalPositions","massRange","isotopePosition","fromMass","toMass","localHeightSum","currentTheoreticalPosition","theoreticalMaxValue","isContinuous","maxDeltaRatio","relativeHeightThreshold","minHeight","minRadio","maxRatio","continuous","previousDelta","failed","success","sgg","windowSize","derivative","polynomial","np","ans","fullWeights","hs","constantH","wg1","wg2","d1","d2","getHs","wg","gramPoly","Grampoly","genFact","gf","optimizeTop","xCurrent","xPrevious","gsd","sgOptions","smoothY","maxCriteria","minMaxRatio","realTopDetection","equallySpaced","noiseInfo","xValue","dY","ddY","yThreshold","dX","lastMax","lastMin","minddY","intervalL","intervalR","lastK","minddYIndex","possible","minDistance","currentDistance","id","crypto","randomUUID","inflectionPoints","GAUSSIAN_EXP_FACTOR","LN2","ROOT_PI_OVER_LN2","ROOT_THREE","ROOT_2LN2","ROOT_2LN2_MINUS_ONE","erfinv","ln1MinusXSqrd","lnEtcBy2Plus2","firstSqrt","secondSqrt","Gaussian","fwhm","gaussianWidthToFWHM","fwhmToWidth","gaussianFwhmToWidth","widthToFWHM","gaussianFct","getArea","height","calculateGaussianHeight","getGaussianArea","getFactor","getGaussianFactor","getData","getGaussianData","calculateHeight","getParameters","shape","Lorentzian","lorentzianFwhmToWidth","lorentzianWidthToFWHM","lorentzianFct","getLorentzianArea","getLorentzianFactor","getLorentzianData","calculateLorentzianHeight","halfResidual","quantileFunction","LorentzianDispersive","lorentzianDispersiveFct","_height","getLorentzianDispersiveData","PseudoVoigt","mu","pseudoVoigtFwhmToWidth","pseudoVoigtWidthToFWHM","pseudoVoigtFct","getPseudoVoigtArea","getPseudoVoigtFactor","calculatePseudoVoigtHeight","getPseudoVoigtData","GeneralizedLorentzian","generalizedLorentzianFwhmToWidth","generalizedLorentzianWidthToFWHM","generalizedLorentzianFct","getGeneralizedLorentzianArea","getGeneralizedLorentzianFactor","getGeneralizedLorentzianData","calculateGeneralizedLorentzianHeight","Gaussian2D","ensureFWHM2D","fwhmX","fwhmY","gaussian2DFct","getGaussian2DData","volume","getVolume","calculateGaussian2DHeight","getGaussian2DVolume","ensureXYNumber","xFWHM","yFWHM","axis","xCenter","yCenter","sdObject","getShape1D","getShape2D","unHandled","getSumOfShapes","internalPeaks","sumOfShapes","totalY","peakX","shapeFctKey","shapeFct","assert","DefaultParameters","peakShape","gradientDifference","properties","getInternalPeaks","minMaxY","shiftValue","normalizedPeaks","propertiesValues","parameter","property","propertyValue","getNormalizedValue","generalParameterValue","defaultParameterValues","checkOptions","timeout","initialValues","damping","dampingStepUp","dampingStepDown","errorTolerance","centralDifference","improvementThreshold","minValues","maxValues","parLen","gradientDifferenceArray","getGradientDifferenceArray","filler","getFiller","checkTimeout","getCheckTimeout","weightSquare","_","dataLength","endTime","errorCalculation","parameterizedFunction","func","gradientFunction","evaluatedData","params","paramFunction","nbParams","param","auxParams","funcParam","funcParam2","matrixFunction","gradientFunc","residualError","inverseMatrix","jacobianWeightResidualError","perturbations","levenbergMarquardt","checkedOptions","optimalError","optimalParameters","converged","previousError","improvementMetric","parameterValues","parameterError","iterations","antiLowerConvexHull","currentPoint","moveOn","det","leftTurn","moveBack","direct","objectiveFunction","lowerBoundaries","upperBoundaries","epsilon","tolerance2","initialState","diffBorders","numberOfRectangles","totalIterations","unitaryCoordinates","middlePoint","bestCurrentValue","fCalls","smallerDistance","edgeSizes","diagonalDistances","functionValues","differentDistances","smallerValuesByDistance","choiceLimit","originalCoordinates","getMinIndex","S1","optimumValuesIndex","S3","a1","b1","a2","b2","S2","xHull","yHull","lowerIndexHull","largerSide","largeSidesIndex","bestFunctionValues","firstMiddleCenter","secondMiddleCenter","firstMiddleValue","secondMiddleValue","firstMinValue","secondMinValue","ix1","ix2","minFunctionValue","pair","finalState","minimizer","optima","directOptimization","getObjectiveFunction","selectMethod","optimizationOptions","normalizedY","gradientDifferences","optimization","fitted","fittedValues","newPeaks","addMissingShape","shapeInstance","hasShape","groupPeaks","previousPeak","currentGroup","optimizePeaksWithLogs","peakList","groupingFactor","factorLimits","logs","peakGroup","firstPeak","lastPeak","groupSize","time","optimizedPeaks","optimizePeaks","addMissingIDs","joinBroadPeaks","broadWidth","broadRatio","broadLines","getGSDPeakOptimizedStructure","maxDdy","candidates","indexes","initialWidth","pushBackPeaks","broadenPeaks","mapPeaks","nextPeak","xFrom","xTo","setShape","peakPicking","gsdPeaks","ml_gsd_1","gsdPeak","checkArrayLength","BaseRegression","new","predict","_predict","xVal","train","toLaTeX","score","ySum","chi2","rmsd","xSquared","ySquared","xY","maybeToPrecision","figures","toPrecision","SimpleLinearRegression","yObj","coefficients","regress","computeX","xFactor","absIntercept","operator","load","json","numerator","PowerRegression","newInputs","latex","pr","xl","yl","linear","peaksWidth_1","peaksWidth","ml_regression_power_1","widths","regression","regressionChart","fit","predictFct","tex","Spectrum_1","Spectrum","fromPeaks","is_any_array_1","xy_parser_1","getPeaksWithCharge_js_1","defaultData","minMaxX","scaleY","intensity","rescaleX","ensureOriginalX","xOriginal","normedY","total","peakPicking_js_1","getBestPeaks_js_1","getSelectedPeaksWithCharge","getFragmentPeaksFct","MSComparator_1","massPower","intensityPower","getSimilarityToMasses","dataXY","normalizeAndCacheData","selectedMasses","aligned","dataXY1","dataXY2","returnSimilarity","minIntensity","minNbCommonPeaks","nbCommonPeaks","nbPeaks2","nbPeaks1","tanimoto","cosine","getPeaksAnnotation","bestPeaks","numberDigits","showMF","numberMFs","mfPrefs","displayCharge","displayProperties","mfColors","color","annotations","_highlight","dy","annotation","rx","ry","fillOpacity","textLine","dx","labels","currentMfPrefs","numberOfMFS","getColor","jsgraph","JsGraph","appendFragmentsInfo","experimentalSpectrum","database","onStep","fragments","nbFound","intensityFound","possibleMFs","assignments","bestMF","toSum","lib","generateMFs","estimate","filterFctVariables","variables","filterFct","canonizeMF","sizes","evolution","appendResult","uniqueMFsObject","getMonoisotopicMass","ems","getEMFromParts","sum_object_keys_1","links","sharps","anchors","xAtomicNumber","getXAtomicNumber","molecule","OCL","getOCL","Molecule","getAtomicNoFromLabel","cPseudoAtomX","isCsp3","atomID","getAtomicNo","getAtomCharge","getImplicitHydrogens","getConnAtoms","makeRacemic","ensureHelperArrays","cHelperCIP","getAllAtoms","getAtomParity","cAtomParityNone","setAtomESR","cESRTypeAnd","tagAtom","iAtom","customLabel","getAtomLabel","setAtomCustomLabel","setAtomicNo","setAtomMass","getAtomMass","FULL_HOSE_CODE","HOSE_CODE_CUT_C_SP3_SP3","getHoseCodesForAtomsInternal","getHoseCodesForAtomsAsFragments","hoses","fragment","getCanonizedIDCode","CANONIZER_ENCODE_ATOM_CUSTOM_LABELS","allowedCustomLabels","minSphereSize","maxSphereSize","tagAtoms","tagAtomFct","rootAtoms","getCompactCopy","internalTagAtoms","cHelperNeighbours","getAtomCustomLabel","mappings","atomMask","atomList","sphere","rootAtom","newMax","getAllConnAtoms","connAtom","getConnAtom","copyMoleculeByAtoms","setAtomMapNo","removeExplicitHydrogens","addQueryFeaturesAndRemoveMapNo","mapping","getAtomMapNo","isAromatic","isAromaticAtom","setAtomQueryFeature","cAtomQFAromatic","cAtomQFNotAromatic","smallestRing","getAtomRingSize","cAtomQFRingSize3","cAtomQFRingSize4","cAtomQFRingSize5","cAtomQFRingSize6","cAtomQFRingSize7","cAtomQFRingSizeLarge","nbHydrogens","getAllHydrogens","cAtomQFNot0Hydrogen","cAtomQFNot1Hydrogen","cAtomQFNot2Hydrogen","cAtomQFNot3Hydrogen","getAllAtomsPaths","maxPathLength","allAtomsPaths","oneAtomPaths","atomPaths","path","pathLength","nextIndexes","nextAtoms","currentIndexes","currentAtoms","previousPath","conn","connectedAtom","floydWarshall","adjMatrix","numVertices","distMatrix","is","dist","getConnectivityMatrix","atomicNo","negativeAtomicNo","cRoundedMass","sdt","getConnBondOrder","sdta","bondNumber","getConnBond","isAromaticBond","getCanonizedDiaIDs","diaMol","logger","maxNbAtoms","moleculeWithH","heterotopicSymmetryRanks","finalRanks","canonizedDiaIDs","cHelperSymmetryStereoHeterotopicity","diaID","tempMolecule","getCanonizedHoseCodes","topicMolecule","canonizedHoseCodes","getDiaIDsAndInfo","newDiaIDs","newDiaID","idCode","attachedHydrogensIDCodes","attachedHydrogens","nbAttachedHydrogens","atomLabel","nbEquivalentAtoms","heavyAtom","atomMapNo","hydrogenDiaID","getHeterotopicSymmetryRanks","xMolecule","symmetryRanks","getSymmetryRank","getFinalRanks","getChiralOrHeterotopicCarbons","internalMolecule","addImplicitHydrogens","addPossibleChiralBonds","neighbourSymmetries","getNeighbourSymmetries","getAtoms","getStereoBond","stereoBond","getAtomPreferredStereoBond","setBondType","cBondTypeUp","getBondAtom","setBondAtom","symmetryRank","ensureHeterotopicChiralBonds","esrType","atLeastThreeAtoms","cHelperBitNeighbours","heterotopicCarbons","getMoleculeWithH","getXMolecule","xAtomNumber","TopicMolecule","originalMolecule","getIDCode","setAtomNoInMapNo","molecules","ensureMapNo","existingMapNo","mapNo","nextMapNo","getHoseFragment","sphereSize","getAtomPathsFrom","minPathLength","toAtomicNo","atomsPaths","paths","atomPathValue","atomPath","getAtomPaths","atom1","atom2","maxDistance","toMolfile","version","toMolfileV3","getMolecule","fromMolecule","diaIDs","getDiaIDsObject","groupDiastereotopicAtomIDsAsObject","hoseCodes","distanceMatrix","diaIDsAndInfo","toMolfileWithH","toMolfileWithoutH","atomsToDelete","getExplicitHydrogens","deleteAtoms","getGroupedDiastereotopicAtomIDs","groupDiastereotopicAtomIDs","getDiaIDsMapping","originalDiaIDs","destinationDiaIDs","destinationDiaID","originalDiaID","newIDCode","oldIDCode","oldHydrogenIDCode","newHydrogenIDCode","diaIDsObject","oclID","heavyAtoms","existingAtoms","connected","diaIDObject","getSymmetryRanks","getDiastereotopicAtomIDs","numberAtoms","ids","getDiastereotopicAtomIDsAndH","hydrogenOCLIDs","getDiastereotopicAtomIDsFromMolfile","molfile","fromMolfileWithAtomMap","diaIDsArray","source","destination","toDiastereotopicSVG","prefix","heavyAtomHydrogen","svg","hydrogenInfo","groupedDiaIDs","toSVG","getHoseCodes","atomLabels","atomicNumbers","label","getHoseCodesAndInfo","calculateDiastereotopicIDs","newMolfile","newMolfileWithH","hose","molfileWithH","moleculeWithHydrogens","getHoseCodesForAtoms","getHoseCodesForAtom","getHoseCodesFromDiastereotopicID","getHoseCodesForPath","maxLength","originalFrom","originalTo","originalAtoms","getPath","torsion","calculateTorsion","tag1","tag2","atomMap","createPolymer","unit","checkEntity","getAlphaGamma","r1AtomicNo","r2AtomicNo","getR1R2AtomicNo","polymer","addMolecule","getUnit","addBond","markMonomer","firstAtomicNo","secondAtomicNo","nbR1","nbR2","r1Count","r2Count","fromSmiles","cPseudoAtomsRGroups","MAX_R","combineSmiles","coreSmiles","complexity","core","getCore","rGroups","getRGroups","getComplexity","generate","rGroup","smiles","appendMolecule","newSmiles","currentMol","toSmiles","combinedSmiles","props","MoleculeProperties","nbHAcceptor","acceptorCount","nbHDonor","donorCount","logP","logS","PSA","polarSurfaceArea","nbRottable","rotatableBondCount","nbStereoCenter","stereoCenterCount","getMolecularFormula","formula","relativeWeight","originalSmiles","updateRPosition","currentChar","currentSubstring","getCamelCase","getParts","currentLabel","parseColumnbProperties","columnProperties","currentColumnName","columnPropery","related","specialType","parseData","headers","header","rawEntries","rawEntry","valueEhnhancer","atomMapping","idcoordinates2D","parseDwar","improveParts","parseDefault","rawData","getAtomsInfo","cHelperRings","extra","singleBonds","doubleBonds","tripleBonds","aromaticBonds","cnoHybridation","abnormalValence","getAtomAbnormalValence","cipParity","getAtomCIPParity","getAtomColor","radical","getAtomRadical","ringBondCount","getAtomRingBondCount","ringSize","getAtomX","getAtomY","getAtomZ","allHydrogens","connAtoms","allConnAtoms","implicitHydrogens","isAllylic","isAllylicAtom","isStereoCenter","isAtomStereoCenter","isRing","isRingAtom","isSmallRing","isSmallRingAtom","isStabilized","isStabilizedAtom","bond","bondOrder","getBondOrder","totalBonds","hydrogenOnAtomicNo","labileHydrogen","getImplicitHydrogensCount","getFragments","allAtoms","getFragmentMF","toMFString","mfAtom","getCharge","getMolfilesMapping","fromF","toF","fromMoleculeF","fromMolfile","toMoleculeF","toMolecule","fromFinalRanks","toFinalRanks","toFrom","fromRank","toRank","getUnsaturation","matches","elementObject","defaultPossibleHints","raw","anyMatches","remarks","getNMRHints","correct","proposed","hints","checkMF","checkUnsaturation","checkStereoAndTautomer","possibleHints","searcherCorrect","SSSearcher","setMolecule","searcherAnswer","possibleHint","anyMatch","matchFragment","fromIDCode","setFragment","isFragmentInMolecule","isMFCorrect","checkSymmetry","hint","hash","getHash","answer","mfCorrect","mfAnswer","unsaturationCorrect","unsaturationAnswer","getNoStereoIDCode","getTautomerIDCode","nbCorrectRanks","nbAnswerRanks","CanonizerUtil","TAUTOMER","NOSTEREO","h1","h2","ch","codePointAt","imul","getNextNMRHint","providedHints","some","providedHint","toxicityPredictor","druglikenessPredictor","getProperties","includeToxicities","includeDruglikeness","moleculeFormula","ToxicityPredictor","mutagenic","assessRisk","TYPE_MUTAGENIC","tumorigenic","TYPE_TUMORIGENIC","irritant","TYPE_IRRITANT","reproductiveEffective","TYPE_REPRODUCTIVE_EFFECTIVE","DruglikenessPredictor","drugLikeness","assessDruglikeness","drugScore","DrugScoreCalculator","calculate","tumurogenic","appendAtomPart","nbOH","carbonyl","hydroxyl","carbonOrHydrogen","neighbour","neighbourAtom","neighbourBond","nbCOOH","nbCHO","nbNH2","amine","nbCN","cn","nbLabileH","toggleHydrogens","toVisualizerMolfile","diastereotopic","highlight","extendedIDs","_atoms","getPathAndTorsion","getPathsInfo","fromLabel","toLabel","withHOSES","fromAtomicNumber","toAtomicNumber","atomsInfo","pathLengthMatrix","getShortestPaths","allShortestPaths","module","this","self","document","postMessage","IS_PAPA_WORKER","o","_handle","_finished","_completed","_halted","_input","_baseIndex","_partialLine","_rowCount","_start","_nextChunk","isFirstChunk","_completeResults","errors","meta","chunkSize","chunk","streamer","_config","parseChunk","skipFirstNLines","newline","quoteChar","guessLineEndings","beforeFirstChunk","paused","aborted","cursor","preview","workerId","WORKER_ID","finished","complete","_sendError","RemoteChunkSize","_readChunk","_chunkLoaded","stream","XMLHttpRequest","withCredentials","onload","onerror","_chunkError","open","downloadRequestBody","downloadRequestHeaders","setRequestHeader","send","status","readyState","responseText","getResponseHeader","lastIndexOf","statusText","LocalChunkSize","FileReader","webkitSlice","mozSlice","FileReaderSync","readAsText","pause","resume","on","_streamData","_streamEnd","_streamError","_checkIsFinished","_streamCleanUp","removeListener","skipEmptyLines","DefaultDelimiter","transformHeader","dynamicTypingFunction","dynamicTyping","code","abort","delimiter","RECORD_SEP","UNIT_SEP","E","successful","bestDelimiter","delimitersToGuess","getCharIndex","setTimeout","RegExp","S","T","fastMode","escapeChar","BAD_DELIMITERS","M","R","substr","create","linebreak","truncated","renamedHeaders","userError","file","userStep","userChunk","userComplete","terminate","worker","WORKERS_SUPPORTED","NODE_STREAM_INPUT","download","readable","read","File","URL","webkitURL","BLOB_URL","createObjectURL","Blob","Worker","onmessage","config","unparse","quotes","escapeFormulae","BYTE_ORDER_MARK","Parser","ParserHandle","NetworkStreamer","FileStreamer","StringStreamer","ReadableStreamStreamer","jQuery","fn","each","attr","files","inputElem","instanceConfig","extend","action","reason","getMoleculeCreators","Map","smarts","smilesParser","SmilesParser","smartsMode","parseMolecule","defaultCSVOptions","appendCSV","moleculesDB","csv","moleculeCreators","Papa","stats","firstElement","moleculeCreator","moleculeField","isNumeric","lowerField","pushEntry","appendColor","dataLabel","propertyLabel","minHue","maxHue","saturation","lightness","colorLabel","db","getDB","datum","definedValues","__defProp","__name","configurable","isObject","segs","joinChar","splitChar","isValidObject","getValue","pathIsArray","pathIsString","separator","hasProp","index_default","appendEntries","idCodePath","indexPath","coordinatesPath","mwPath","smilesPath","molfilePath","coordinates","keepEmptyMolecules","getEntriesBoundaries","nextMatch","sdfPart","currentLabels","keep","exclude","include","modifiers","modifiedValue","sdf","mixedEOL","entriesBoundaries","always","statistics","statistic","appendSDF","appendSmilesList","smilesArray","oneSmiles","moleculeInfo","moleculeIDCode","getMoleculeIDCode","getIndex","molecularFormula","absoluteWeight","computeProperties","updateStatistics","calculatedStatistics","dataStatistics","stat","pushMoleculeInfo","noWait","resolve","setImmediate","AbortError","getQuery","query","format","search","exactSearch","exactSearchNoStereo","substructureSearch","substructureSearchOR","similaritySearch","processResult","searchAsync","subStructureSearchAsync","queryIDCode","searchResult","stripStereoInformation","candidateMolecule","candidateIDCode","substructureSearchBegin","substructureSearchEnd","queryMW","getMW","queryIndex","searcher","queries","controller","shouldAbort","abortEventListener","signal","addEventListener","performance","queryIdCode","SSSearcherWithIndex","getSimilarityTanimoto","flattenResult","keepMolecule","MoleculesDB","clear","nbMolecules","nbData","calculated","isNumber","getAtomFeatures","currentSphere","rAtomicNumber","getRAtomicNumber","cPseudoAtomR","fragmentAcyclicSingleBonds","bonds","getAllBonds","order","getBondType","isRingBond","brokenMolecule","markBondForDeletion","deleteMarkedAtomsAndBonds","fragmentMap","nbFragments","getFragmentNumbers","includeAtom","addAtom","appendOCLReaction","reactions","newReactions","reaction","rxnCode","oclReaction","ReactionEncoder","checkIfExistsOrAddInfo","processedMolecules","moleculeInfoCallback","asReagent","asProduct","exists","applyOneReactantReactions","tree","currentDepth","maxDepth","maxCurrentDepth","reactants","reactant","todoNextDepth","existsAndInfo","limitReactions","reactor","Reactor","isMatching","setReactant","oneReactionProducts","getProducts","oneReactionProduct","reactionProduct","productExistsAndInfo","needToBeCharged","reactionWithoutOCL","oneReaction","children","getFilteredTrees","nodesToKeep","getNodes","parentMap","getParentMap","currentNode","getValidChildren","trees","nodes","validNodes","node","validChildren","child","getLeaves","leaves","appendLeavesSS","currentBranch","getNodesSS","Reactions","skipProcessed","appendHead","moleculesOrIDCodes","getValidNodes","getFilteredReactions","filteredReactions","clearAsFromProcessedMolecules","todoCurrentLevel","nexts","todo","flat","newNodes","fragmentAcyclicBonds","calculateHoseCodes","parentIDCode","openchemlib_utils_1","removeAtomCustomLabels","getRingsInfo_1","getRingsInfo","ringSet","getRingSet","ringBonds","getSize","getRingBonds","nbRingForBonds","bondIndex","ringIndex","nbRings","getFragmentableRings","ringsInfo","getRingsInfo_js_1","fragmentableRingBonds","ring","second","end","fragmentRings","getFragmentableRings_js_1","fragmentationResults","rLinks","acyclic","full","fragmentType","acyclicBonds","NP","copyMolecule","Dt","Ht","getIDCodeAndCoordinates","navigator","clipboard","writeText","pasteMolecule","Lu","zA","Uu","Vt","Zt","H1","Ot","D1","R1","p1","xP","padStart","Xe","globalThis","devicePixelRatio","$n","ctx","textAlign","textBaseline","currentFontSize","currentFont","font","currentColor","currentLineWidth","canvasCache","clearRect","getBackgroundRGB","getForegroundRGB","getSelectionBackgroundRGB","getLineWidth","setRGB","fillStyle","strokeStyle","setFont","getFontSize","getBounds","measureText","actualBoundingBoxLeft","actualBoundingBoxAscent","actualBoundingBoxRight","drawString","fillText","drawCenteredString","setLineWidth","lineWidth","fillRectangle","fillRect","fillCircle","beginPath","arc","drawLine","moveTo","lineTo","stroke","drawPolygon","getX","getY","drawRectangle","strokeRect","fillPolygon","drawImage","createElement","N1","imageData","getContext","globalAlpha","putImageData","isDarkBackground","GP","canvasElement","changeListener","drawContext","getCanvasWidth","getCanvasHeight","getDrawContext","onChange","what","isUserEvent","getClipboardHandler","e2","R8","yu","CSSStyleSheet","replaceSync","S8","button","fireMouseEvent","offsetX","offsetY","shiftKey","ctrlKey","altKey","pointerId","MOUSE_EVENT_PRESSED","MOUSE_EVENT_RELEASED","MOUSE_EVENT_CLICKED","detail","MOUSE_EVENT_ENTERED","MOUSE_EVENT_EXITED","MOUSE_EVENT_DRAGGED","MOUSE_EVENT_MOVED","removeEventListener","wu","platform","metaKey","n2","fireKeyEvent","KEY_EVENT_PRESSED","KEY_EVENT_RELEASED","clipboardData","fromText","addPastedOrDropped","KEY_CTRL","KEY_ALT","KEY_SHIFT","KEY_DELETE","KEY_HELP","KEY_ESCAPE","KEY_ENTER","OP","setDimensions","style","su","H8","Tu","ZP","HOTSPOT_32","IMAGE_NAME_32","cPointerCursor","cTextCursor","getCursor","buildCursor","JP","title","rootElement","dialogElement","setLayout","hLayout","hu","vLayout","component","createTextField","z8","createLabel","M8","createComboBox","V8","createCheckBox","q8","setEventConsumer","consumer","showMessage","alert","showDialog","getBoundingClientRect","assign","marginBlock","left","right","body","parentElement","clientWidth","offsetTop","getRootNode","append","display","gridTemplateColumns","gridTemplateRows","gridColumn","gridRow","getElement","flexDirection","gap","textContent","fireOk","fireCancel","showModal","disposeDialog","remove","an","setEventHandler","eventHandler","fireEvent","setText","getText","selectedIndex","setEnabled","disabled","addItem","getSelectedIndex","setSelectedIndex","setSelectedItem","getSelectedItem","removeAllItems","innerHTML","checkBox","isSelected","setSelected","VA","dataView","DataView","getWidth","getHeight","getRGB","getInt32","setInt32","toDataURL","KP","dialogRoot","JavaEditorArea","register","javaUiHelper","cursorManager","grabFocus","focus","preventScroll","setCursor","showHelpDialog","createImage","ImageData","createImageFromBase64","Uint8ClampedArray","createDialog","runLater","requestAnimationFrame","bu","readOnly","initialMode","initialFragment","dataset","openchemlibCanvasEditor","alignItems","backgroundColor","touchAction","userSelect","webkitUserSelect","attachShadow","adoptedStyleSheets","de","I0","o0","tabIndex","outline","Ae","Mt","A2","setReaction","setEditorArea","He","Pe","repaint","qA","v1","ResizeObserver","contentRect","observe","B0","vn","yt","z1","disconnect","editorArea","toolbar","uiHelper","destroy","MODE_REACTION","MODE_MULTIPLE_FRAGMENTS","cu","EDITOR_EVENT_MOLECULE_CHANGED","EDITOR_EVENT_SELECTION_CHANGED","EDITOR_EVENT_HIGHLIGHT_ATOM_CHANGED","EDITOR_EVENT_HIGHLIGHT_BOND_CHANGED","getMode","getReaction","setOnChangeListener","removeOnChangeListener","clearAll","isDestroyed","moleculeChanged","#n","#i","gu","HTMLElement","MODE","freeze","MOLECULE","REACTION","observedAttributes","idcode","MODE_MOLECULE","readonly","setAttribute","removeAttribute","isFragment","getIDCoordinates","encode","keepAbsoluteCoordinates","INCLUDE_MAPPING","INCLUDE_COORDS","RETAIN_REACTANT_AND_PRODUCT_ORDER","#P","requestIdleCallback","#A","#f","#r","ensureCoordinates","#o","CustomEvent","bubbles","dispatchEvent","#D","#u","connectedCallback","getAttribute","hasAttribute","disconnectedCallback","adoptedCallback","attributeChangedCallback","I8","GenericEditorArea","GenericEditorToolbar","GenericUIHelper","Reaction","customElements","define","head","prepend","CanvasEditor","registerCustomElement","du","ConformerGenerator","ForceFieldMMFF94","getNextConformerAsMolecule","maxIts","gradTol","funcTol","_minimise","minimise","Fn","userAgent","__moduleStartupDone","Z0","tA","E8","YP","N8","XP","WP","Bt","We","J0","Dn","Me","le","ze","Ve","qe","Ie","Ee","un","wt","P0","_P","$P","G1","t1","k0","E0","IA","J1","eA","nA","AA","K0","r0","Be","PA","ln","$e","rA","pn","Cn","iA","m0","ae","Qn","Ln","EA","NA","xA","GA","aP","tr","fA","Rn","OA","ZA","DA","er","nr","ke","Ne","l0","uA","Qe","oA","Pr","s0","Sn","U1","Le","Ue","N0","ie","JA","rr","KA","Jt","e0","ir","x8","M1","Hn","T0","n0","YA","XA","je","ye","fr","Mn","WA","L0","G8","_A","U0","ur","xe","F1","we","se","j0","S0","$A","zn","lA","H0","Ge","aA","tP","eP","_1","M0","h0","lr","O8","z0","Z8","zt","AP","PP","rP","iP","me","Vn","n1","QA","LA","J8","K8","Y8","Qr","X8","Lr","Y0","Ur","W8","K1","fP","DP","_8","$8","X0","a8","t9","e9","n9","A9","wr","P9","UA","r9","sr","Tr","hr","i9","uP","yA","qn","br","f9","D9","u9","o9","cr","l9","Q9","L9","U9","y9","wA","oP","gr","A0","lP","In","sA","dr","QP","kr","w9","s9","T9","LP","jr","h9","mr","Fr","b9","c9","g9","d9","B9","k9","j9","F9","v9","p9","C9","TA","R9","S9","H9","M9","z9","V9","Rr","q9","I9","E9","UP","N9","Sr","Hr","x9","G9","O9","Z9","J9","K9","yP","Y9","X9","Mr","hA","W9","_9","$9","a9","ti","zr","bA","ei","cA","Un","yn","Pi","gA","fe","dA","wP","ri","fi","ui","oi","Qi","Ui","wi","sP","Ti","hi","bi","ci","gi","di","ki","ji","mi","Fi","pi","Ri","Hi","Mi","zi","Vi","qi","Ii","Ei","Ni","Gi","Oi","Zi","Ji","Ki","Yi","Xi","Wi","_i","$i","tf","ef","nf","Af","Pf","rf","ff","Df","uf","of","lf","Qf","Lf","Uf","yf","wf","sf","Tf","hf","bf","cf","df","Bf","kf","jf","Ff","vf","pf","Cf","Rf","Sf","Hf","Mf","zf","Vf","qf","If","Ef","Nf","xf","Gf","Of","Zf","Jf","Kf","Yf","Xf","Wf","_f","$f","af","tD","eD","nD","AD","PD","rD","iD","fD","TP","DD","uD","oD","lD","QD","LD","UD","Vr","yD","wD","sD","TD","hD","BA","bD","cD","gD","hP","bP","Te","dD","Ir","cP","gP","Er","BD","dP","Nr","kD","Gr","jD","mD","wn","FD","BP","vD","pD","kP","En","Nn","xn","CD","RD","Or","SD","Zr","Jr","Gn","jP","mP","Fe","Tn","Kr","Yr","HD","On","Xr","MD","Wr","v0","W0","hn","Zn","b0","i0","ve","bn","kA","zD","i1","VD","FP","_r","Jn","vP","qD","pP","CP","ID","$r","RP","t8","ED","ND","Kn","s1","xt","De","Kt","he","At","A1","e1","nt","tt","$","Tt","lt","c0","pt","V1","D0","u0","gt","Wt","W","jA","SP","veb","ju","$gwt","ifb","_D","Fu","gfb","Yn","Xn","wd","Uc","execScript","ud","tfb","sfb","u1","_0","defineProperties","G","nfb","vd","mfb","goog","global","Jc","j1","Kc","Lc","yzb","xD","Oc","pe","_ib","Qhb","mA","Igb","n8","lb","e8","Qc","djb","Rhb","Jgb","t4","Sc","ejb","Shb","Kgb","u4","khb","Szb","Rzb","mb","ob","equals","hashCode","y4","v4","Qab","z4","w4","x4","A4","e5","n5","w5","d5","o5","f5","g5","Mc","h5","i5","exec","j5","k5","l5","backingJsObject","stack","stackTraceLimit","callee","caller","G4","Jbb","Pib","F4","r5","Nc","rjb","Nzb","s5","Mzb","gjb","X1","jjb","kjb","y5","A5","vhb","B5","__elementTypeCategory$","C5","__elementTypeId$","w1","E5","G5","I5","$1","K5","L5","M5","O5","vu","KD","JD","ZD","Yt","GD","R6","OD","S6","web","__java$exception","C1","Qt","pu","$implements__java_io_Serializable","Cu","$implements__java_lang_Comparable","Egb","FA","Fgb","Tzb","Gzb","Ggb","Su","Hgb","rbb","Ru","Ngb","Uib","Ohb","Rb","Hu","$implements__java_lang_CharSequence","ihb","Vu","jhb","zhb","lhb","mhb","nhb","phb","Dhb","Oe","Mu","tn","Tc","zu","Yc","Xc","Vc","Wc","Chb","Ihb","java","lang","Number$impl","Jhb","Hhb","Oib","Khb","Ju","Lhb","Phb","Zc","Mhb","Thb","$c","Nhb","en","Uzb","ubb","qu","HP","Ozb","FB","GB","HB","IB","ic","JB","KB","documentMode","cause","gc","ec","suppressed","fc","LB","MB","Obb","NB","OB","PB","hc","QB","RB","TB","Iu","Lib","e4","dc","Hbb","_B","aC","bC","cC","dC","eC","zgb","Agb","d4","f4","Kib","Mib","Tib","Vib","Wib","Xib","Yib","wjb","qzb","nzb","Zib","$ib","ajb","bjb","cjb","Nbb","fjb","hjb","Eu","ljb","mjb","vjb","njb","qjb","lastIndex","ojb","pjb","sjb","ujb","Evb","Ijb","Mjb","Hjb","xjb","Njb","czb","mzb","dzb","ezb","fzb","gzb","hzb","izb","jzb","kzb","lzb","vzb","wzb","xzb","uzb","$H","zzb","Yhb","Azb","Zhb","Bzb","Cgb","Czb","Jib","Dzb","mtb","Ezb","Gub","Fzb","Hzb","Izb","Jzb","Kzb","$hb","Lzb","_hb","Vzb","Pzb","Qzb","Xab","Uab","Wab","Vab","tbb","Gbb","wbb","Ibb","zbb","Bbb","Ebb","Mbb","Odb","Pdb","J","ft","Lt","ot","st","ut","rt","Ut","ht","it","bt","ct","$t","X6","_6","_c","Z6","ad","EN","bd","dw","Pl","Zd","od","Ud","Bb","Vd","sb","cd","dd","ed","Z","fd","rK","qK","pK","jt","gd","Rd","pb","hd","zm","To","jd","tb","kd","ld","md","Gt","nd","yN","tN","qd","rb","DN","uj","pd","teb","xm","Ul","Fm","Ll","Ml","CN","rd","Bo","vm","Bl","Do","Zl","Yl","zb","td","Jl","cm","Jj","qN","_d","Ho","Xo","xd","yd","Wo","Yo","zd","Tl","Ad","Bd","cq","zp","dm","Qd","rN","Cd","Fd","Xl","am","Bm","Id","Up","Qp","Dd","rqb","qqb","Ed","Ft","Rt","Et","Nt","It","vt","xb","Dl","et","Q0","Hl","Kl","sm","wl","um","lw","Gl","Ep","kp","Ol","zl","El","Fl","Lm","ub","Hd","vb","wm","Md","Io","Dm","pj","FN","yb","Pt","qb","Od","Mo","Gd","ym","Wl","Vl","Jd","Kd","Ld","Vo","Xqb","Nd","Pd","Sd","AN","Td","aw","fw","nm","Yd","H3","Ab","Wd","Xd","$d","I3","be","Cb","BN","ce","wb","c7","a7","b7","Gb","ne","oe","jo","Ib","Mb","Bjb","Ajb","Kb","Jb","Nb","Ob","Pb","d7","rp","Ce","Hm","Ke","Je","Re","Se","e7","Iib","Ye","kt","Po","Ze","seb","$6","Ct","T1","B1","Ieb","_s","bg","ah","Zg","rh","V0","$g","ik","jb","hk","al","Rp","ug","Cm","Nl","vl","ip","wq","$o","Sp","Tqb","_g","bq","Qo","Wp","aq","ib","fb","lrb","j7","bh","Uo","$qb","Yv","Wv","Xv","k7","fh","Rqb","eh","ab","gb","hb","eb","Cj","zqb","eg","zg","V6","cb","xh","sh","oh","Cqb","fq","Im","Ok","Mk","Dg","Eg","Jqb","h7","Yg","Vg","Ug","f7","Sg","yp","Pg","Og","yh","nh","Ejb","Kjb","pg","ag","Nk","Sl","LOG10E","dg","Pjb","cg","Mg","Bg","Nm","Ag","fg","gg","Ap","vg","Jg","hg","tw","hl","kn","jl","il","_v","ig","jg","kg","lg","mg","ng","og","xg","yg","qg","rg","sg","tg","L1","f1","St","Xt","Cg","Qjb","Fg","dn","Bn","Gg","Hg","Ig","gn","Kg","Lg","rm","jp","p7","Ng","Qb","g7","Tg","i7","Eqb","Bqb","l7","ih","jh","kh","Nwb","ph","wh","Pvb","fwb","lwb","spb","Bpb","aob","dwb","lh","xp","mh","Pp","qh","Mh","vh","Lh","Dh","zh","uh","gk","th","Ch","Eh","Vqb","Nh","n7","Jh","Ah","Ih","Bh","Fh","Gh","Hh","Kh","o7","Qh","Rh","Th","Sh","Vh","Uh","ew","vq","ow","Gw","Jw","Wh","Xh","Yh","Zh","$h","_h","Hmb","Dmb","q7","_m","r7","GH","yrb","Avb","zrb","Vyb","Tb","Sb","contains","Fvb","Cvb","Ub","Tjb","addAll","containsAll","removeAll","retainAll","toArray","Vb","Xbb","rub","tub","Tyb","byb","iyb","Rxb","gyb","eyb","Iyb","ndb","Vxb","Txb","Zxb","lyb","Hub","getAtIndex","lob","addAtIndex","addAllAtIndex","Wb","Brb","dob","removeAtIndex","job","cob","setAtIndex","subList","ccb","Nu","$implements__java_lang_Cloneable","nj","oj","qj","rj","sj","tj","wj","vj","xj","yj","zj","Aj","Bj","Dj","Ej","Fj","Gj","Uqb","Hj","Ij","Kj","ucb","bk","ck","Fb","s7","t7","Om","u7","jk","v7","lk","Uub","Ek","Rub","Nub","$l","Oub","mk","gm","nk","YM","ok","FH","EH","pk","Hb","qk","R2","Lfb","rk","tk","uk","vk","wk","xk","yk","zk","$7","Ak","Bk","Ck","Dk","x7","w7","Ik","Lk","Hk","Jk","Kk","Pk","Qk","Rk","Sk","Tk","Uk","Vk","$m","Wk","tl","bl","Xk","el","Yk","Zk","ul","$k","Sm","_k","Cmb","atan2","Ym","cl","dl","om","Aq","Tm","fl","gl","xqb","Yb","kl","Xb","ll","ml","nl","sl","ql","ol","rl","pl","Rl","Al","Il","Ql","_l","bm","fm","hm","jm","km","lm","mm","Pm","pm","qm","tm","Am","mo","Em","no","Gm","oo","Jm","qo","Km","Mm","ro","Qm","Rm","Um","Vm","Wm","Xm","Zm","lo","szb","jn","mn","rn","$0","An","co","fo","eo","ho","go","Pn","Wn","_n","ao","io","ko","po","F7","uo","vo","lq","Lp","Kp","wo","xo","Co","yo","oq","nq","zo","Ao","Jp","Fo","Eo","dt","Go","Jo","Ko","Lo","No","jq","Oo","up","vp","Ro","So","Y6","Zo","_o","bp","cp","dp","fp","gp","hp","mp","op","qp","Zb","tp","Ts","wp","Bp","$p","Cp","Dp","Fp","Gp","Nqb","Hp","Ip","Mp","Np","Op","Tp","qt","Vp","Xp","Yp","Zp","_p","dq","eq","gq","hq","iq","kq","v3","mq","sq","pq","qq","rq","tq","uq","xq","yq","zq","Bq","Cq","Dq","y7","Gq","Hq","Iq","Jq","Kq","Lq","Nq","Mq","Oq","Rq","Pq","Qq","k1","E1","o1","I1","O1","F0","Z1","l1","f0","w0","d0","te","ee","p0","O0","C0","_t","r8","i8","f8","D8","u8","o8","l8","Q8","VP","qP","L8","U8","y8","w8","s8","T8","R0","h8","b8","c8","g8","d8","B8","k8","j8","F8","ue","v8","p8","tu","eu","Au","Pu","C8","ru","iu","fu","Du","IP","RA","uu","EP","ou","HA","Qu","MA","$b","ge","Ojb","_b","nw","Sq","Tq","z7","Wq","Xq","uvb","A7","$q","Fjb","_q","W6","ugb","B7","C7","D7","zjb","E7","qgb","Ljb","Imb","G7","as","bs","ws","cgb","ngb","epb","pib","es","fs","gs","js","ss","ls","q0","Xvb","ns","ps","os","qs","vs","Xmb","Kvb","rs","ts","us","$v","bgb","As","Eob","Lob","Ivb","zs","I7","H7","Bs","Cs","Ds","Es","Fs","Gs","Hs","Js","Is","Ks","J7","Ns","Os","Ms","Ps","Ss","ptb","Qs","qnb","rnb","nnb","Rs","K7","Vs","Ws","Xs","Ys","Zs","$s","L7","Kwb","Iwb","Dqb","au","Owb","O7","M7","ku","uw","xu","N7","Hfb","Bu","Ffb","Zfb","kkb","gkb","lkb","tmb","pmb","Gjb","P7","T7","Wu","Z3","T3","Xu","V3","$gb","Yu","Zu","a0","WD","$u","cv","ev","_u","wqb","iv","bv","fv","Gv","av","Iv","Ev","wv","dv","S7","Q7","gv","hv","R7","kv","mv","lv","nv","U7","ov","qrb","pv","qv","rv","sv","tv","uv","vv","Cv","Dv","Bv","Av","rrb","Kv","Mv","Sv","Nv","xv","yv","zv","w3","yH","Fv","Hv","Y7","Jv","P8","V7","Tv","Qv","Rv","Ov","nrb","onb","Pv","X7","W7","Vv","Z7","rw","bw","cw","gw","hw","iw","jw","kw","pw","qw","yw","Hw","Bw","zw","Nw","Mw","Kpb","Aw","Cw","Dw","Ew","Fw","Wpb","Opb","Lw","Qpb","xw","Iw","Kw","O3","_7","Pw","J2","Qw","Rw","yjb","Sw","Tw","Uw","Vw","Ww","Xw","Yw","Zw","$w","_w","bx","Db","Eb","O2","E2","nkb","Ulb","Lb","N2","H2","ox","px","qx","sx","Hx","xx","tx","ux","vx","wx","yx","zx","Gx","Ex","Ix","Mx","Nx","Ox","Cx","Dx","Jx","Kx","Lx","Qx","pz","nz","oz","Px","Fx","Dy","Bx","Ax","Rx","Qy","Ty","Sx","Yx","Tx","Wx","Ey","Ux","Vx","Aqb","Sy","Xx","Zx","$x","_x","ay","Gqb","cy","ey","fy","gy","hy","iy","jy","ky","ly","py","lz","qy","kz","iz","sy","ty","wy","vy","uy","xy","yy","oy","fz","zy","_y","Ay","gz","By","ez","Cy","ny","cAb","hgb","Fy","Gy","K3","L3","Ly","Ky","Jy","My","Ry","Py","Ny","Xy","Vy","Oy","Wy","Uy","Yy","$y","Zy","bz","az","cz","dz","hz","jz","mz","rz","qz","sz","tz","uz","vz","wz","Zwb","yz","Wwb","Ywb","xz","Jz","zz","Ez","Bz","Gz","Dz","Iz","Az","Fz","Cz","Hz","Kz","Lz","Mz","Oz","tB","Xz","Vz","Pz","Qz","Rz","Sz","Zz","hB","Tz","lB","Uz","Yz","Wz","mB","$z","oB","_z","sB","rB","CA","gB","tvb","Nz","vA","pB","pA","kB","uB","qvb","qB","cB","fB","iB","jB","dB","bB","aB","vB","eB","nB","wB","xB","wC","yB","zB","xC","AB","BB","aE","CB","bc","cc","fC","A8","gC","hC","iC","oE","nE","jC","mC","oC","pC","BF","YC","$C","tC","sC","uC","vC","yC","zC","BC","Xtb","Ytb","ZC","DC","AC","pnb","Fqb","yF","sF","CC","PE","GC","HC","IC","JC","KC","compareTo","ordinal","vbb","TC","UC","kc","jc","VC","WC","XC","_C","jnb","aD","dib","UE","vE","fE","kE","pE","CE","IE","FE","ME","QE","VE","ZE","kF","YE","jF","fF","gF","eF","iF","pF","$D","eE","bE","oF","cE","dE","iE","jE","zF","LE","BE","zE","sE","wE","tE","uE","AE","GE","HE","TE","nF","AF","DF","cF","bF","aF","hF","rtb","qtb","qF","xF","vF","wF","tF","uF","rF","CF","EF","GF","FF","HF","IF","JF","zH","rgb","UH","KF","LF","NF","TH","Cjb","PF","OF","QF","RF","SF","UF","TF","VF","XF","WF","YF","ZF","$F","_F","aG","eG","bG","cG","fG","W3","dG","Eib","gG","vG","sG","uib","uG","Emb","Cib","hG","iG","lG","kG","jG","oG","pG","mG","nG","qG","rG","tG","yG","wG","xG","zG","DG","AG","BG","CG","EG","FG","GG","HG","IG","LG","JG","KG","MG","NG","UG","OG","PG","VG","RG","TG","QG","SG","WG","XG","YG","ZG","$G","_G","aH","bH","cH","dH","eH","fH","gH","hH","iH","jH","kH","lH","mH","oH","pH","qH","rH","sH","tH","uH","vH","wH","xH","AH","drb","BH","CH","DH","I2","L2","B2","G2","e3","F2","RH","SH","VH","Djb","WH","XH","YH","_H","ZH","dI","aI","gI","bI","cI","eI","fI","hI","iI","jI","kI","lI","oI","mI","nI","rI","AI","wI","qI","zI","xI","X3","yI","uI","vI","pI","BI","CI","DI","EI","aJ","_I","UI","FI","GI","HI","II","KI","UJ","JI","OI","MI","QI","TI","jK","gK","NI","dK","RI","XJ","SI","VI","nK","lK","WI","XI","YI","ZI","$I","bJ","hJ","kJ","lJ","gJ","jJ","iJ","cJ","oJ","eJ","mJ","dJ","fJ","nJ","pJ","qJ","sJ","wJ","vJ","tJ","uJ","yJ","xJ","zJ","AJ","BJ","EJ","hdb","CJ","Yvb","y3","DJ","FJ","GJ","HJ","IJ","JJ","KJ","LJ","RJ","MJ","NJ","OJ","PJ","QJ","SJ","Hqb","TJ","VJ","WJ","YJ","x3","ZJ","$J","_J","aK","bK","cK","eK","hK","fK","iK","mK","kK","oK","sK","IN","KN","k2","j2","i2","l2","vK","tK","i3","uK","wK","o2","j3","b3","f2","xK","yK","zK","lc","BK","FK","GK","CK","DK","HK","EK","IK","JK","KK","NK","MK","OK","PK","QK","$L","RK","SK","TK","VK","Jcb","WK","XK","ZK","$K","cL","iM","zL","_K","nL","mL","aL","ML","hM","bL","dL","EL","eL","lL","XL","fL","Tfb","gL","_ab","Sfb","hL","iL","kL","jL","W1","FL","GL","oL","xL","pL","qL","JL","KL","rL","yqb","sL","PM","tL","pM","UL","nM","WL","PL","YK","AL","YL","_L","uL","oM","wL","fM","eM","kM","kb","vL","IL","RL","SL","HL","mM","jM","uN","vN","wN","yL","sM","BL","LL","CL","DL","M2","NL","OL","QL","xN","aM","gM","TL","D3","C3","K2","F3","C2","D2","ZL","bM","cM","dM","vM","lM","qM","mc","AM","yM","zM","BM","DM","CM","EM","FM","PN","JN","LN","X2","U2","GM","B3","HM","MM","KM","LM","JM","NM","g2","OM","RM","WM","UM","SM","TM","VM","XM","z2","iN","jN","kN","lN","mN","oN","E3","zfb","W2","ON","NN","MN","QN","RN","createSymmetryRank","considerStereoheterotopicity","encodeAtomCustomLabels","encodeAtomSelection","assignParitiesToTetrahedralN","coordsAre3d","createPseudoStereoGroups","distinguishRacemicOrGroups","tieBreakFreeValenceAtoms","encodeAtomCustomLabelsWithoutRanking","neglectAnyStereoInformation","SN","getCanMolecule","rT","getEncodedCoordinates","getEncodedMapping","getFinalRank","getGraphAtoms","getGraphIndexes","hasCIPParityDistinctionProblem","invalidateCoordinates","normalizeEnantiomer","setParities","jO","kO","eO","fO","gO","hO","iO","pO","_Z","c$","OAb","getConformerCount","CAb","getOneConformerAsMolecule","EAb","getPotentialConformerCount","FAb","oc","IAb","initializeConformers","strategy","maxTorsionSets","use60degreeSteps","lO","mO","oO","wO","xO","aab","zO","AO","n3","o3","getDetail","getDruglikenessString","yO","bab","KO","NO","HO","IO","JO","getTotalEnergy","EO","FO","GO","cab","mT","lT","kT","eR","xS","nT","oT","pT","qT","VT","jU","lU","kU","mU","nU","oU","noCoordinates","noStereo","pU","xU","yU","YU","BV","HW","IW","eY","addFragment","pc","qc","rc","sc","addMissingChirality","addOrChangeAtom","addOrChangeBond","addRing","addRingToAtom","addRingToBond","addSubstituent","canonizeCharge","changeAtom","changeAtomCharge","changeBond","convertStereoBondsToSingleBonds","copyAtom","copyBond","copyMoleculeByBonds","copyMoleculeProperties","deleteAtom","deleteAtomOrBond","deleteBond","deleteBondAndSurrounding","deleteMolecule","deleteSelectedAtoms","findAlleneCenterAtom","findAlleneEndAtom","findAtom","findBINAPChiralityBond","findBond","findRingSystem","getAbsoluteAtomParity","getAbsoluteBondParity","getAllConnAtomsPlusMetalBonds","getAromaticRingCount","getAtomESRGroup","getAtomESRType","getAtomList","getAtomListString","getAtomPi","getAtomQueryFeaturesObject","l3","getAtomRingCount","getAverageBondLength","getAverageTopologicalAtomDistance","getBond","getBondAngle","getBondBridgeMaxSize","getBondBridgeMinSize","getBondCIPParity","getBondESRGroup","getBondESRType","getBondLength","getBondParity","getBondPreferredStereoBond","getBondQueryFeatures","getBondQueryFeaturesObject","getBondRingSize","getBondTypeSimple","getBonds","getChiralText","getChirality","getDefaultMaxValenceUncharged","getElectronValenceCorrection","getExcludedNeighbourCount","getFisherProjectionParity","getFragmentAtoms","eab","getFreeValence","getHandleHydrogenMap","getHelperArrayStatus","getImplicitHigherValence","r3","getLowestFreeValence","getMaxAtoms","getMaxBonds","getMaxValence","getMaxValenceUncharged","getMetalBondedConnAtoms","A_","getMoleculeColor","getMolweight","getName","getNonHydrogenNeighbourCount","getNumberOfHydrogens","getOccupiedValence","getPathBonds","getPathLength","i$","getRotatableBondCount","tc","getStereoCenterCount","uc","getStereoProblem","getSubstituent","getSubstituentSize","getZNeighbour","invalidateHelperArrays","inventCoordinates","is3D","isAlkaliMetal","isAmideTypeBond","isAtomConfigurationUnknown","isAtomMarkedForDeletion","isAtomParityPseudo","isAutoMappedAtom","isBINAPChiralityBond","isBondBackgroundHilited","isBondBridge","isBondForegroundHilited","isBondMarkedForDeletion","isBondParityPseudo","isBondParityUnknownOrNone","isChalcogene","isDelocalizedBond","isEarthAlkaliMetal","isElectronegative","isElectropositive","isFlatNitrogen","isHalogene","isMarkedAtom","isMetalAtom","isNaturalAbundance","isNitrogenFamily","isOrganicAtom","isPseudoRotatableBond","isPurelyOrganic","isSelectedAtom","isSelectedBond","isSimpleHydrogen","isSmallRingBond","isStereoBond","markAtomForDeletion","normalizeAmbiguousBonds","removeAtomColors","removeAtomMarkers","removeAtomSelection","removeBondHiliting","removeQueryFeatures","renumberESRGroups","scaleCoords","setAllAtoms","setAllBonds","setAssignParitiesToNitrogen","setAtomAbnormalValence","setAtomCIPParity","setAtomCharge","setAtomColor","setAtomConfigurationUnknown","setAtomList","setAtomMarker","setAtomParity","setAtomRadical","setAtomSelection","setAtomX","setAtomY","setAtomZ","setBondBackgroundHiliting","setBondCIPParity","setBondESR","setBondForegroundHiliting","setBondOrder","setBondParity","setBondParityUnknownOrNone","setBondQueryFeature","setChirality","setHelperValidity","setHydrogenProtection","setMaxAtoms","setMaxBonds","setMoleculeColor","setName","setParitiesValid","setStereoBondFromAtomParity","setStereoBondFromBondParity","setStereoBondsFromParity","setToRacemate","setUnknownParitiesToExplicitlyUnknown","shareSameFragment","stripIsotopInfo","stripSmallFragments","suggestBondType","supportsImplicitHydrogen","swapAtoms","swapBonds","toIsomericSmiles","createSmarts","includeMapping","kekulizedOutput","vc","factorTextSize","autoCrop","autoCropMargin","fontWeight","strokeWidth","toSmarts","translateCoords","validate","zoomAndRotate","zoomAndRotateInit","PO","QO","RO","SO","TO","UO","VO","WO","XO","YO","ZO","$O","_O","zP","MP","aQ","bQ","cQ","dQ","eQ","fQ","gQ","hQ","iQ","jQ","kQ","lQ","mQ","nQ","oQ","pQ","qQ","rQ","sQ","tQ","uQ","vQ","wQ","xQ","yQ","zQ","AQ","BQ","CQ","DQ","EQ","FQ","GQ","HQ","IQ","JQ","KQ","LQ","MQ","NQ","OQ","PQ","QQ","RQ","SQ","TQ","UQ","VQ","WQ","XQ","YQ","ZQ","$Q","_Q","aR","bR","cR","dR","fR","gR","hR","iR","jR","kR","lR","mR","nR","oR","pR","qR","rR","sR","tR","uR","vR","wR","xR","yR","zR","AR","BR","CR","DR","ER","FR","GR","HR","IR","JR","KR","LR","MR","NR","OR","PR","RR","SR","TR","UR","VR","WR","XR","YR","ZR","$R","_R","aS","bS","cS","dS","eS","fS","gS","hS","iS","jS","kS","lS","mS","nS","oS","pS","qS","rS","sS","tS","uS","vS","wS","yS","zS","AS","BS","CS","DS","ES","FS","GS","HS","IS","JS","KS","LS","MS","NS","OS","PS","QS","RS","SS","TS","US","VS","WS","XS","YS","ZS","$S","_S","aT","bT","cT","dT","eT","fT","gT","hT","iT","jT","LY","logPString","logSString","polarSurfaceAreaString","dab","WY","dZ","eZ","fZ","gZ","addCatalyst","addCatalystAt","addProduct","addProductAt","addReactant","addReactantAt","getCatalyst","getCatalysts","getHighestMapNo","getMergedCopy","getMolecules","getProduct","getReactant","getReactants","getReactionCenterMapNos","isPerfectlyMapped","isReactionLayoutRequired","removeCatalysts","toRxn","toRxnV3","validateMapping","gab","RZ","SZ","TZ","UZ","VZ","sortByIDCode","XZ","WZ","FZ","GZ","HZ","IZ","JZ","KZ","LZ","MZ","NZ","OZ","PZ","QZ","fab","YZ","hab","a$","b$","dAb","iab","determineAromaticity","getAtomIndex","getBondIndex","getHeteroPosition","getRingAtoms","getRingSize","getSharedRing","isAtomMember","isBondMember","isDelocalized","qualifiesAsAmideTypeBond","validateMemberIndex","d$","e$","f$","g$","h$","jab","A$","getField","getFieldData","getFieldNames","getNextFieldData","getNextMolFile","kab","I$","J$","K$","L$","setMol","mab","Q$","R$","S$","U$","V$","W$","X$","Y$","createIndex","lab","a_","skipCoordinateTemplates","makeHydrogenExplicit","noCactvs","singleDotSeparator","createSmartsWarnings","wc","b_","getSmartsWarning","xc","parseReaction","setRandomSeed","nab","r_","k_","s_","i_","j_","l_","m_","n_","o_","p_","q_","oab","v_","applyTransformation","pab","y_","z_","qab","rab","K_","I_","J_","L_","yc","d3","a3","getGenericEditorArea","toolChanged","E_","F_","G_","H_","M_","N_","O_","P_","Q_","R_","S_","T_","U_","V_","W_","X_","Y_","Z_","$_","__","g0","t0","uab","sab","tab","zc","wab","vab","t2","Ac","Z2","Bc","build16x16CursorImage","createNativeDialog","createPopupMenu","openChemistryFile","xab","Dc","Cc","Bab","yab","Ec","zab","setEditable","Aab","Hc","k3","Gc","Fc","Cab","Ic","drawDottedLine","nc","Dab","V2","Eab","Fab","Gab","Hab","Iab","Jab","gAb","g1","hAb","Kab","u3","E4","t3","p3","inflateToMaxAVBL","inflateToHighResAVBL","chiralTextBelowMolecule","chiralTextAboveMolecule","chiralTextOnFrameTop","chiralTextOnFrameBottom","noTabus","showAtomNumber","showBondNumber","highlightQueryFeatures","showMapping","suppressChiralText","suppressCIPParity","suppressESR","showSymmetryAny","showSymmetrySimple","showSymmetryStereoHeterotopicity","noImplicitAtomLabelColors","noStereoProblem","noColorOnESRAndCIP","noImplicitHydrogen","drawBondsInGray","Lab","Afb","G3","yfb","Bfb","J3","M3","N3","G0","Mab","U3","ctb","$3","Nab","_3","a4","b4","c4","Oab","g4","Sab","i4","h4","j4","k4","p4","o4","l4","n4","Pab","B4","C4","D4","H4","Rab","L4","M4","N4","YD","U4","X4","W4","V4","S4","R4","clearTimeout","T4","Z4","_4","$4","c5","a5","b5","Tab","S5","R5","Z5","X5","T5","ygb","U5","q6","b6","F6","B6","u6","_5","V5","n6","W5","D6","$5","a6","t6","k6","d6","e6","c6","j6","w6","g6","h6","f6","i6","l6","o6","E6","C6","p6","r6","s6","v6","x6","y6","z6","A6","Peb","Ceb","Deb","Heb","afb","Beb","Eeb","Geb","XD","Gu","Yab","Efb","Dfb","Gfb","Cfb","Zab","Ifb","Pc","abb","Mfb","$ab","Qfb","Rfb","dbb","cbb","Yfb","bbb","Rc","kbb","agb","ebb","ibb","fbb","hbb","fgb","$zb","ggb","Zzb","gbb","lgb","jbb","lbb","nbb","mbb","tgb","vgb","wgb","obb","pbb","Bgb","qbb","Pgb","Ou","Ku","fromCodePoint","ghb","fhb","sbb","xbb","ybb","aib","bib","cib","sib","Abb","rib","qib","tib","Aib","Hib","Cbb","Gib","Fib","Dbb","Fbb","Oqb","Kbb","Jjb","Lbb","Rjb","Sjb","Pbb","akb","okb","Ujb","Qbb","Vjb","Wjb","Xjb","Yjb","Zjb","$jb","skb","amb","bkb","ikb","slb","Xkb","jmb","Okb","ckb","dkb","_jb","hkb","hlb","ekb","fkb","jkb","Rkb","_kb","Nkb","Bkb","blb","Llb","Lkb","mlb","Ykb","pkb","Qkb","Ikb","Ckb","mkb","rkb","gmb","wkb","vkb","tlb","tkb","Elb","Flb","qkb","flb","Ekb","Vkb","Wkb","Gkb","dlb","Kkb","Fkb","Hkb","Rbb","Jkb","Mkb","Olb","Pkb","Ilb","Glb","Hlb","Skb","Tkb","Ukb","bmb","Zkb","nlb","alb","imb","$kb","ulb","ylb","wlb","clb","elb","glb","ilb","qlb","Clb","Blb","Alb","emb","Plb","vlb","xlb","zlb","Dlb","Jlb","Klb","Mlb","Rlb","Nlb","Qlb","Slb","Tlb","Vlb","qmb","Sbb","Zlb","$lb","_lb","hmb","cmb","dmb","kmb","fmb","smb","umb","mmb","lmb","nmb","omb","rmb","vmb","Tbb","wmb","xmb","Ubb","Wbb","Fmb","Gmb","Vbb","uub","containsKey","vub","put","wub","xub","dyb","zub","Dub","Jmb","Kmb","Lmb","$ob","Mmb","Nmb","sob","Omb","Pmb","Qmb","getOrDefault","putIfAbsent","containsValue","Arb","keySet","putAll","kcb","inb","unb","Ctb","knb","lnb","ntb","mnb","Mnb","Etb","$tb","snb","tnb","Ftb","_tb","Gtb","aub","vnb","wnb","$bb","vvb","wvb","Ayb","Qxb","wyb","yyb","Myb","Nyb","Uxb","Dyb","qcb","Jnb","Knb","Lnb","Wnb","Zbb","pub","azb","qub","Snb","eub","Tnb","Jtb","Unb","Vnb","Ybb","_nb","bob","_bb","iob","acb","bcb","rob","yob","ecb","dcb","Dob","gcb","Job","Kob","fcb","Tcb","Qob","Rob","Sob","Tob","hcb","icb","kub","jcb","cpb","dpb","fpb","mpb","ocb","lpb","Rvb","lcb","xvb","Bvb","rpb","Qvb","ncb","zpb","Apb","ewb","mcb","pcb","Jpb","Npb","Lpb","hqb","Mpb","Ppb","jqb","Rpb","iqb","Spb","Ypb","Tpb","Upb","Vpb","scb","fqb","gqb","rcb","oqb","pqb","tcb","Iqb","Kqb","Lqb","Mqb","Pqb","Qqb","htb","gtb","Sqb","Wqb","Zqb","arb","brb","crb","vcb","krb","srb","orb","vrb","prb","wrb","wcb","Crb","btb","$rb","Drb","Erb","Vrb","ycb","Urb","xcb","zcb","lsb","msb","nsb","osb","Msb","Hsb","Dcb","Fcb","Lsb","Wsb","Rsb","Ccb","Acb","Bcb","Ecb","dtb","Gcb","jtb","itb","Hcb","Icb","otb","Kcb","Lcb","ztb","Vtb","Atb","Btb","Dtb","Otb","Ncb","Itb","done","Mcb","Ptb","Rtb","Qtb","Ttb","Stb","getOwnPropertyNames","Utb","obj","createObject","Wtb","Ztb","Qcb","cub","dub","lub","Ocb","jub","Pcb","Hxb","Nxb","Ixb","yub","Rcb","Cub","Scb","Ucb","Jub","Kub","Lub","Mub","Pub","Qub","Sub","Tub","gvb","Wcb","evb","fvb","Vcb","ovb","lvb","mvb","pvb","rvb","svb","nvb","Xcb","yvb","zvb","Zcb","Ycb","Dvb","$cb","Hvb","Jvb","Lvb","Mvb","Nvb","Ovb","Vvb","Uvb","owb","qwb","Svb","Tvb","Wvb","cwb","gwb","wwb","swb","_cb","adb","nwb","bdb","pwb","cdb","xwb","twb","Bwb","uwb","Dwb","vwb","Gwb","Awb","gdb","ddb","edb","fdb","Jwb","Lwb","Mwb","idb","Xwb","cxb","jdb","uxb","vxb","wxb","xxb","yxb","kdb","Jxb","ldb","Mxb","mdb","Yxb","Sxb","Wxb","Xxb","odb","$xb","_xb","ayb","Gyb","cyb","Jyb","Lyb","tyb","oyb","qyb","pdb","qdb","rdb","sdb","tdb","udb","vdb","wdb","xdb","ydb","zdb","Adb","Bdb","Cdb","Ddb","Edb","Fdb","Qyb","Ryb","Syb","Kdb","Uyb","_yb","Zyb","bzb","Wyb","Xyb","Yyb","$yb","Jdb","Gdb","Hdb","Idb","tzb","pzb","ozb","Ndb","Ldb","rzb","Mdb","Xzb","Yzb","_zb","aAb","bAb","fAb","Wzb","eAb","Qdb","iAb","QAb","jAb","sAb","kAb","qAb","lAb","mAb","nAb","oAb","pAb","rAb","ZAb","aBb","Rdb","tAb","uAb","vAb","wAb","xAb","Sdb","yAb","XAb","GBb","zAb","AAb","BAb","WCb","KAb","dCb","HBb","WAb","MAb","eDb","aDb","YCb","DAb","GAb","nCb","hCb","VCb","rBb","PAb","JAb","$db","DBb","TAb","YAb","HAb","LAb","lCb","qCb","Zdb","pBb","bCb","NAb","sBb","kBb","SAb","RAb","Udb","Tdb","Vdb","$Ab","_Ab","bBb","cBb","eBb","fBb","gBb","hBb","dBb","Xdb","mBb","nBb","Wdb","MDb","qBb","oeb","Ydb","wBb","vBb","tBb","uBb","xBb","yBb","zBb","ABb","BBb","CBb","EBb","FBb","IBb","JBb","UBb","ieb","NBb","OBb","PBb","VBb","_db","RBb","QBb","SBb","TBb","WBb","XBb","YBb","aeb","ZBb","$Bb","cCb","_Bb","aCb","gCb","fCb","xCb","eCb","iCb","jCb","geb","beb","kCb","feb","ceb","pCb","tCb","sCb","eeb","deb","wCb","heb","ACb","zCb","BCb","CCb","DCb","ECb","FCb","GCb","HCb","keb","ICb","JCb","KCb","NCb","jeb","RCb","QCb","SCb","TCb","UCb","JDb","bDb","LDb","dDb","XCb","ZCb","$Cb","_Cb","cDb","KDb","NDb","sDb","FDb","RDb","aEb","lEb","leb","fDb","gDb","hDb","iDb","vDb","jDb","kDb","lDb","mDb","nDb","qDb","tDb","rDb","meb","zDb","yDb","ADb","xDb","wDb","CDb","GDb","neb","ODb","SDb","peb","VDb","WDb","XDb","YDb","ZDb","qeb","dEb","eEb","fEb","gEb","hEb","iEb","mEb","reb","BACKBONE","NORMAL","NOSTEREO_TAUTOMER","STRATEGY_ADAPTIVE_RANDOM","STRATEGY_LIKELY_RANDOM","STRATEGY_LIKELY_SYSTEMATIC","STRATEGY_PURE_RANDOM","DRUGLIKENESS_UNKNOWN","MMFF94","MMFF94S","MMFF94SPLUS","HOTSPOT_16","IMAGE_DATA_16","KEY_BACK_SPACE","MODE_DRAWING_OBJECTS","MODE_MARKUSH_STRUCTURE","TableLayoutFill","TableLayoutPreferred","cChainCursor","cDeleteCursor","cFistCursor","cHandCursor","cHandPlusCursor","cInvisibleCursor","cLassoCursor","cLassoPlusCursor","cPointedHandCursor","cSelectRectCursor","cSelectRectPlusCursor","cZoomCursor","CANONIZER_ASSIGN_PARITIES_TO_TETRAHEDRAL_N","CANONIZER_CONSIDER_DIASTEREOTOPICITY","CANONIZER_CONSIDER_ENANTIOTOPICITY","CANONIZER_CONSIDER_STEREOHETEROTOPICITY","CANONIZER_COORDS_ARE_3D","CANONIZER_CREATE_PSEUDO_STEREO_GROUPS","CANONIZER_CREATE_SYMMETRY_RANK","CANONIZER_DISTINGUISH_RACEMIC_OR_GROUPS","CANONIZER_ENCODE_ATOM_CUSTOM_LABELS_WITHOUT_RANKING","CANONIZER_ENCODE_ATOM_SELECTION","CANONIZER_NEGLECT_ANY_STEREO_INFORMATION","CANONIZER_TIE_BREAK_FREE_VALENCE_ATOMS","FISCHER_PROJECTION_LIMIT","FISCHER_PROJECTION_RING_LIMIT","STEREO_ANGLE_LIMIT","VALIDATION_ERRORS_STEREO","VALIDATION_ERROR_AMBIGUOUS_CONFIGURATION","VALIDATION_ERROR_ESR_CENTER_UNKNOWN","VALIDATION_ERROR_OVER_UNDER_SPECIFIED","cAtomCIPParityNone","cAtomCIPParityProblem","cAtomCIPParityRorM","cAtomCIPParitySorP","cAtomColorBlue","cAtomColorDarkGreen","cAtomColorDarkRed","cAtomColorGreen","cAtomColorMagenta","cAtomColorNone","cAtomColorOrange","cAtomColorRed","cAtomLabel","cAtomParity1","cAtomParity2","cAtomParityIsPseudo","cAtomParityUnknown","cAtomQFAny","cAtomQFAromState","cAtomQFAromStateBits","cAtomQFAromStateShift","cAtomQFCharge","cAtomQFChargeBits","cAtomQFChargeShift","cAtomQFENeighbourBits","cAtomQFENeighbourShift","cAtomQFENeighbours","cAtomQFExcludeGroup","cAtomQFFlatNitrogen","cAtomQFHeteroAromatic","cAtomQFHydrogen","cAtomQFHydrogenBits","cAtomQFHydrogenShift","cAtomQFIsNotStereo","cAtomQFIsStereo","cAtomQFMatchStereo","cAtomQFMoreNeighbours","cAtomQFNarrowing","cAtomQFNeighbourBits","cAtomQFNeighbourShift","cAtomQFNeighbours","cAtomQFNewRingSize","cAtomQFNewRingSizeBits","cAtomQFNewRingSizeShift","cAtomQFNoMoreNeighbours","cAtomQFNoOfBits","cAtomQFNot0ENeighbours","cAtomQFNot0Neighbours","cAtomQFNot0PiElectrons","cAtomQFNot1ENeighbour","cAtomQFNot1Neighbour","cAtomQFNot1PiElectron","cAtomQFNot2ENeighbours","cAtomQFNot2Neighbours","cAtomQFNot2PiElectrons","cAtomQFNot2RingBonds","cAtomQFNot3ENeighbours","cAtomQFNot3Neighbours","cAtomQFNot3RingBonds","cAtomQFNot4ENeighbours","cAtomQFNot4Neighbours","cAtomQFNot4RingBonds","cAtomQFNotChain","cAtomQFNotCharge0","cAtomQFNotChargeNeg","cAtomQFNotChargePos","cAtomQFPiElectronBits","cAtomQFPiElectronShift","cAtomQFPiElectrons","cAtomQFRingSize0","cAtomQFRingState","cAtomQFRingStateBits","cAtomQFRingStateShift","cAtomQFRxnParityBits","cAtomQFRxnParityHint","cAtomQFRxnParityInvert","cAtomQFRxnParityRacemize","cAtomQFRxnParityRetain","cAtomQFRxnParityShift","cAtomQFSimpleFeatures","cAtomQFSmallRingSize","cAtomQFSmallRingSizeBits","cAtomQFSmallRingSizeShift","cAtomQFStereoState","cAtomQFStereoStateBits","cAtomQFStereoStateShift","cAtomRadicalState","cAtomRadicalStateD","cAtomRadicalStateNone","cAtomRadicalStateS","cAtomRadicalStateShift","cAtomRadicalStateT","cAtomValence","cBondCIPParityEorP","cBondCIPParityNone","cBondCIPParityProblem","cBondCIPParityZorM","cBondParityEor1","cBondParityNone","cBondParityUnknown","cBondParityZor2","cBondQFAllFeatures","cBondQFAromState","cBondQFAromStateBits","cBondQFAromStateShift","cBondQFAromatic","cBondQFBondTypes","cBondQFBondTypesBits","cBondQFBondTypesShift","cBondQFBridge","cBondQFBridgeBits","cBondQFBridgeMin","cBondQFBridgeMinBits","cBondQFBridgeMinShift","cBondQFBridgeShift","cBondQFBridgeSpan","cBondQFBridgeSpanBits","cBondQFBridgeSpanShift","cBondQFDelocalized","cBondQFDouble","cBondQFMatchFormalOrder","cBondQFMatchStereo","cBondQFMetalLigand","cBondQFNarrowing","cBondQFNoOfBits","cBondQFNotAromatic","cBondQFNotRing","cBondQFQuadruple","cBondQFQuintuple","cBondQFRareBondTypes","cBondQFRareBondTypesBits","cBondQFRareBondTypesShift","cBondQFRing","cBondQFRingSize","cBondQFRingSizeBits","cBondQFRingSizeShift","cBondQFRingState","cBondQFRingStateBits","cBondQFRingStateShift","cBondQFSimpleFeatures","cBondQFSingle","cBondQFTriple","cBondTypeCross","cBondTypeDeleted","cBondTypeDelocalized","cBondTypeDouble","cBondTypeDown","cBondTypeIncreaseOrder","cBondTypeMaskSimple","cBondTypeMaskStereo","cBondTypeMetalLigand","cBondTypeQuadruple","cBondTypeQuintuple","cBondTypeSingle","cBondTypeTriple","cChiralityDiastereomers","cChiralityEpimers","cChiralityIsomerCountMask","cChiralityKnownEnantiomer","cChiralityMeso","cChiralityNotChiral","cChiralityRacemic","cChiralityUnknown","cChiralityUnknownEnantiomer","cCommonOxidationState","cDefaultAVBL","cDefaultAllowedPseudoAtoms","cDefaultAtomValence","cESRGroupBits","cESRMaxGroups","cESRTypeAbs","cESRTypeOr","cHelperAll","cHelperBitCIP","cHelperBitIncludeNitrogenParities","cHelperBitParities","cHelperBitRings","cHelperBitRingsSimple","cHelperBitSymmetrySimple","cHelperBitSymmetryStereoHeterotopicity","cHelperBitsStereo","cHelperNone","cHelperParities","cHelperRingsSimple","cHelperSymmetrySimple","cMaxAtomicNo","cMaxConnAtoms","cMoleculeColorDefault","cMoleculeColorNeutral","cPseudoAtomA","cPseudoAtomAttachmentPoint","cPseudoAtomPolymer","cPseudoAtomsAGroups","cPseudoAtomsAll","cPseudoAtomsAminoAcids","cPseudoAtomsHydrogenIsotops","getAngle","getAngleDif","getDefaultAverageBondLength","isAtomicNoElectronegative","isAtomicNoElectropositive","setDefaultAverageBondLength","fromMolecules","fromRxn","CATALYST_DELIMITER","INCLUDE_ALL","INCLUDE_CATALYSTS","INCLUDE_DEFAULT","INCLUDE_DRAWING_OBJECTS","INCLUDE_RXN_CODE_ONLY","MOLECULE_DELIMITER","OBJECT_DELIMITER","PRODUCT_IDENTIFIER","_register","MAX_SMALL_RING_SIZE","MODE_SMALL_AND_LARGE_RINGS","MODE_SMALL_AND_LARGE_RINGS_AND_AROMATICITY","MODE_SMALL_RINGS_AND_AROMATICITY","MODE_SMALL_RINGS_ONLY","bitCount","getHexStringFromIndex","getIndexFromHexString","getKeyIDCode","getSimilarityAngleCosine","RISK_HIGH","RISK_LOW","RISK_NAMES","RISK_NO","RISK_UNKNOWN","$isInstance","copyOf","getIdentityHashCode","getNextHash","getObjectIdentityHashCode","toDoubleFromUnsignedInt","__errFn","__moduleName","__moduleBase","__softPermutationId","__computePropValue","permProps","compatMode","setInterval","clearInterval","Resources","TextEncoder","registerFromUrl","fetch","fromEntries","process","getBuiltinModule","import","registerFromNodejs","readFileSync","href","_2","$2","Canonizer","RingCollection","SDFileParser","so","Transformer","Util","bo","defaultDatabase","doi","section","description","isbn","software","getDatabase","modes","dwar","fullDatabase","defaultDatabase_js_1","getMasses","minDepth","reactionFragmentation","oclMolecule","minIonizations","maxIonizations","minReactions","maxReactions","openchemlib_1","observedMonoisotopicMass","getDatabase_1","reactionDb","REACT_ELEMENT_TYPE","REACT_FRAGMENT_TYPE","jsxProd","maybeKey","propName","ref","$$typeof","reactJsxRuntime_production","Fragment","jsx","jsxs","jsxRuntimeModule","REACT_PORTAL_TYPE","REACT_STRICT_MODE_TYPE","REACT_PROFILER_TYPE","REACT_CONSUMER_TYPE","REACT_CONTEXT_TYPE","REACT_FORWARD_REF_TYPE","REACT_SUSPENSE_TYPE","REACT_MEMO_TYPE","REACT_LAZY_TYPE","MAYBE_ITERATOR_SYMBOL","getIteratorFn","maybeIterable","ReactNoopUpdateQueue","isMounted","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","emptyObject","Component","context","updater","refs","isReactComponent","setState","partialState","forceUpdate","ComponentDummy","PureComponent","pureComponentPrototype","isPureReactComponent","isArrayImpl","ReactSharedInternals","hasOwnProperty","ReactElement","owner","cloneAndReplaceKey","oldElement","newKey","isValidElement","escape","escaperLookup","userProvidedKeyEscapeRegex","getElementKey","noop$1","resolveThenable","thenable","fulfilledValue","mapIntoArray","escapedPrefix","nameSoFar","invokeCallback","_init","_payload","nextNamePrefix","mapChildren","lazyInitializer","payload","_status","ctor","_result","moduleObject","reportGlobalError","reportError","ErrorEvent","event","cancelable","emit","noop","react_production","Children","forEachFunc","forEachContext","only","Profiler","StrictMode","Suspense","__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE","__COMPILER_RUNTIME","__proto__","useMemoCache","cloneElement","childArray","createContext","defaultValue","_currentValue","_currentValue2","_threadCount","Provider","Consumer","_context","childrenLength","defaultProps","createRef","forwardRef","render","lazy","memo","compare","startTransition","scope","prevTransition","currentTransition","returnValue","onStartTransitionFinish","unstable_useCacheRefresh","useCacheRefresh","use","usable","useActionState","permalink","useCallback","deps","useContext","Context","useDebugValue","useDeferredValue","initialValue","useEffect","createDeps","update","dispatcher","useId","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useOptimistic","passthrough","reducer","useReducer","initialArg","useRef","useState","useSyncExternalStore","subscribe","getSnapshot","getServerSnapshot","useTransition","reactModule","React","formatProdErrorMessage","url","encodeURIComponent","Internals","findDOMNode","createPortal$1","containerInfo","implementation","getCrossOriginStringAs","reactDom_production","__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE","createPortal","container","nodeType","flushSync","previousTransition","previousUpdatePriority","preconnect","crossOrigin","prefetchDNS","preinit","integrity","fetchPriority","precedence","nonce","preinitModule","preload","referrerPolicy","imageSrcSet","imageSizes","media","preloadModule","requestFormReset","form","unstable_batchedUpdates","useFormState","useFormStatus","useHostTransitionStatus","checkDCE","__REACT_DEVTOOLS_GLOBAL_HOOK__","err","reactDomModule","heap","parentIndex","peek","halfLength","leftIndex","rightIndex","sortIndex","unstable_now","localPerformance","localDate","initialTime","taskQueue","timerQueue","taskIdCounter","currentTask","currentPriorityLevel","isPerformingWork","isHostCallbackScheduled","isHostTimeoutScheduled","needsPaint","localSetTimeout","localClearTimeout","localSetImmediate","advanceTimers","currentTime","timer","startTime","expirationTime","handleTimeout","isMessageLoopRunning","schedulePerformWorkUntilDeadline","firstTimer","requestHostTimeout","taskTimeoutID","frameInterval","shouldYieldToHost","performWorkUntilDeadline","hasMoreWork","previousPriorityLevel","priorityLevel","continuationCallback","MessageChannel","channel","port","port2","port1","unstable_IdlePriority","unstable_ImmediatePriority","unstable_LowPriority","unstable_NormalPriority","unstable_Profiling","unstable_UserBlockingPriority","unstable_cancelCallback","task","unstable_forceFrameRate","fps","unstable_getCurrentPriorityLevel","unstable_next","unstable_requestPaint","unstable_runWithPriority","unstable_scheduleCallback","delay","unstable_shouldYield","unstable_wrapCallback","parentPriorityLevel","schedulerModule","Scheduler","ReactDOM","isValidContainer","getNearestMountedFiber","fiber","nearestMounted","alternate","return","flags","getSuspenseInstanceFromFiber","suspenseState","memoizedState","dehydrated","assertIsMounted","findCurrentFiberUsingSlowPath","parentA","parentB","sibling","didFindChild","child$0","stateNode","findCurrentHostFiberImpl","REACT_LEGACY_ELEMENT_TYPE","REACT_PROVIDER_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_ACTIVITY_TYPE","REACT_MEMO_CACHE_SENTINEL","REACT_CLIENT_REFERENCE","getComponentNameFromType","displayName","innerType","ReactDOMSharedInternals","sharedNotPendingObject","pending","method","valueStack","createCursor","contextStackCursor","contextFiberStackCursor","rootInstanceStackCursor","hostTransitionProviderCursor","pushHostContainer","nextRootInstance","documentElement","namespaceURI","getOwnHostContext","tagName","getChildHostContextProd","popHostContainer","pushHostContext","JSCompiler_inline_result","popHostContext","HostTransitionContext","scheduleCallback$3","cancelCallback$1","shouldYield","requestPaint","getCurrentPriorityLevel","ImmediatePriority","UserBlockingPriority","NormalPriority$1","LowPriority","IdlePriority","log$1","unstable_setDisableYieldValue","rendererID","injectedHook","setIsStrictModeForDevtools","newIsStrictMode","setStrictMode","clz32Fallback","nextTransitionLane","nextRetryLane","getHighestPriorityLanes","lanes","pendingSyncLanes","getNextLanes","root","wipLanes","rootHasPendingCommit","pendingLanes","nextLanes","suspendedLanes","pingedLanes","warmLanes","nonIdlePendingLanes","checkIfRootIsPrerendering","renderLanes","computeExpirationTime","lane","claimNextTransitionLane","claimNextRetryLane","createLaneMap","initial","laneMap","markRootUpdated$1","updateLane","markRootFinished","finishedLanes","remainingLanes","spawnedLane","updatedLanes","suspendedRetryLanes","previouslyPendingLanes","expiredLanes","entangledLanes","errorRecoveryDisabledLanes","shellSuspendCounter","entanglements","expirationTimes","hiddenUpdates","index$5","hiddenUpdatesForLane","markSpawnedDeferredLane","spawnedLaneIndex","markRootEntangled","rootEntangledLanes","index$6","getBumpedLaneForHydrationByLane","lanesToEventPriority","resolveUpdatePriority","updatePriority","getEventPriority","runWithPriority","priority","previousPriority","randomKey","internalInstanceKey","internalPropsKey","internalContainerInstanceKey","internalEventHandlersKey","internalEventHandlerListenersKey","internalEventHandlesSetKey","internalRootNodeResourcesKey","internalHoistableMarker","detachDeletedInstance","getClosestInstanceFromNode","targetNode","targetInst","parentNode","getParentSuspenseInstance","getInstanceFromNode","getNodeFromInstance","inst","getResourcesFromRoot","resources","hoistableStyles","hoistableScripts","markNodeAsHoistable","allNativeEvents","registrationNameDependencies","registerTwoPhaseEvent","registrationName","dependencies","registerDirectEvent","VALID_ATTRIBUTE_NAME_REGEX","illegalAttributeNameCache","validatedAttributeNameCache","isAttributeNameSafe","attributeName","setValueForAttribute","prefix$8","setValueForKnownAttribute","setValueForNamespacedAttribute","namespace","setAttributeNS","suffix","describeBuiltInComponentFrame","reentry","describeNativeComponentFrame","construct","previousPrepareStackTrace","prepareStackTrace","RunInRootFrame","DetermineComponentFrameRoot","Fake","Reflect","control","x$9","x$10","catch","sample","namePropDescriptor","getOwnPropertyDescriptor","_RunInRootFrame$Deter","sampleStack","controlStack","sampleLines","controlLines","frame","describeFiber","getStackByFiberInDevAndProd","workInProgress","getToStringValue","isCheckable","elem","nodeName","trackValueOnNode","valueField","descriptor","enumerable","setValue","stopTracking","_valueTracker","track","updateValueIfChanged","tracker","lastValue","getActiveElement","doc","activeElement","escapeSelectorAttributeValueInsideDoubleQuotesRegex","escapeSelectorAttributeValueInsideDoubleQuotes","updateInput","lastDefaultValue","defaultChecked","setDefaultValue","initInput","isHydrating","ownerDocument","updateOptions","multiple","propValue","setDefaultSelected","defaultSelected","updateTextarea","initTextarea","setTextContent","firstChild","lastChild","nodeValue","unitlessNumbers","setValueForStyle","styleName","isCustomProperty","setProperty","cssFloat","setValueForStyles","styles","prevStyles","styleName$16","styleName$17","isCustomElement","aliases","isJavaScriptProtocol","sanitizeURL","currentReplayingEvent","getEventTarget","nativeEvent","srcElement","correspondingUseElement","restoreTarget","restoreQueue","restoreStateOfTarget","internalInstance","querySelectorAll","otherNode","otherProps","isInsideEventHandler","batchedUpdates$1","flushSyncWork$1","getListener","canUseDOM","passiveBrowserEventsSupported","startText","fallbackText","startValue","startLength","endValue","endLength","minEnd","getEventCharCode","keyCode","charCode","functionThatReturnsTrue","functionThatReturnsFalse","createSyntheticEvent","Interface","SyntheticBaseEvent","reactName","reactEventType","nativeEventTarget","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","isPropagationStopped","preventDefault","stopPropagation","cancelBubble","persist","isPersistent","EventInterface","eventPhase","timeStamp","isTrusted","SyntheticEvent","UIEventInterface","view","SyntheticUIEvent","lastMovementX","lastMovementY","lastMouseEvent","MouseEventInterface","screenX","screenY","clientX","clientY","pageX","pageY","getModifierState","getEventModifierState","buttons","relatedTarget","fromElement","toElement","movementX","movementY","SyntheticMouseEvent","DragEventInterface","dataTransfer","SyntheticDragEvent","FocusEventInterface","SyntheticFocusEvent","AnimationEventInterface","animationName","elapsedTime","pseudoElement","SyntheticAnimationEvent","ClipboardEventInterface","SyntheticClipboardEvent","CompositionEventInterface","SyntheticCompositionEvent","normalizeKey","Esc","Spacebar","Left","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","translateToKey","modifierKeyToProp","Alt","Control","Meta","Shift","modifierStateGetter","keyArg","KeyboardEventInterface","location","locale","which","SyntheticKeyboardEvent","PointerEventInterface","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","SyntheticPointerEvent","TouchEventInterface","touches","targetTouches","changedTouches","SyntheticTouchEvent","TransitionEventInterface","propertyName","SyntheticTransitionEvent","WheelEventInterface","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","SyntheticWheelEvent","ToggleEventInterface","newState","oldState","SyntheticToggleEvent","END_KEYCODES","canUseCompositionEvent","canUseTextInputEvent","useFallbackCompositionData","SPACEBAR_CHAR","hasSpaceKeypress","isFallbackCompositionEnd","domEventName","getDataFromCustomEvent","isComposing","getNativeBeforeInputChars","getFallbackBeforeInputChars","supportedInputTypes","date","datetime","email","month","password","tel","week","isTextInputElement","createAndAccumulateChangeEvent","dispatchQueue","accumulateTwoPhaseListeners","listeners","activeElement$1","activeElementInst$1","runEventInBatch","processDispatchQueue","getInstIfValueChanged","getTargetInstForChangeEvent","isInputEventSupported","JSCompiler_inline_result$jscomp$282","isSupported$jscomp$inline_417","element$jscomp$inline_418","oninput","stopWatchingForValueChange","detachEvent","handlePropertyChange","handleEventsForInputEventPolyfill","attachEvent","getTargetInstForInputEventPolyfill","getTargetInstForClickEvent","getTargetInstForInputOrChangeEvent","objectIs","shallowEqual","objA","objB","keysA","keysB","getLeafNode","getNodeForCharacterOffset","offset","nodeEnd","nextSibling","containsNode","outerNode","innerNode","compareDocumentPosition","getActiveElementDeep","defaultView","HTMLIFrameElement","contentWindow","hasSelectionCapabilities","contentEditable","skipSelectionChangeEvent","activeElementInst","lastSelection","mouseDown","constructSelectEvent","selectionStart","selectionEnd","getSelection","anchorNode","anchorOffset","focusNode","focusOffset","makePrefixMap","styleProp","eventName","prefixes","vendorPrefixes","animationend","animationiteration","animationstart","transitionrun","transitionstart","transitioncancel","transitionend","prefixedEventNames","animation","transition","getVendorPrefixedEventName","prefixMap","ANIMATION_END","ANIMATION_ITERATION","ANIMATION_START","TRANSITION_RUN","TRANSITION_START","TRANSITION_CANCEL","TRANSITION_END","topLevelEventsToReactNames","simpleEventPluginEvents","registerSimpleEvent","CapturedStacks","WeakMap","createCapturedValueAtFiber","concurrentQueues","concurrentQueuesIndex","concurrentlyUpdatedLanes","finishQueueingConcurrentUpdates","endIndex","queue","markUpdateLaneFromFiberToRoot","enqueueUpdate$1","enqueueConcurrentHookUpdate","getRootForUpdatedFiber","enqueueConcurrentRenderForLane","sourceFiber","isHidden","childLanes","_visibility","nestedUpdateCount","rootWithNestedUpdates","emptyContextObject","FiberNode","pendingProps","elementType","refCleanup","updateQueue","memoizedProps","subtreeFlags","deletions","createFiberImplClass","shouldConstruct","createWorkInProgress","firstContext","resetWorkInProgress","createFiberFromTypeAndProps","fiberTag","isHostHoistableType","createFiberFromFragment","createFiberFromText","content","createFiberFromPortal","portal","pendingChildren","forkStack","forkStackIndex","treeForkProvider","treeForkCount","idStack","idStackIndex","treeContextProvider","treeContextId","treeContextOverflow","pushTreeFork","totalChildren","pushTreeId","baseIdWithLeadingBit","baseLength","numberOfOverflowBits","pushMaterializedTreeId","popTreeContext","hydrationParentFiber","nextHydratableInstance","hydrationErrors","rootOrSingletonContext","HydrationMismatchException","throwOnHydrationMismatch","queueHydrationError","prepareToHydrateHostInstance","instance","listenToNonDelegatedEvent","mediaEventTypes","suppressHydrationWarning","checkForUnmatchedText","popover","onScroll","onScrollEnd","onClick","onclick","popToNextHostParent","popHydrationState","JSCompiler_temp","shouldSetTextContent","getNextHydratable","isSingletonScope","previousHydratableOnEnteringScopedSingleton","resetHydrationState","upgradeHydrationErrorsToRecoverable","queuedErrors","workInProgressRootRecoverableErrors","valueCursor","currentlyRenderingFiber$1","lastContextDependency","pushProvider","providerFiber","popProvider","scheduleContextWorkOnParentPath","propagationRoot","propagateContextChanges","contexts","forcePropagateEntireTree","nextFiber","dependency","propagateParentContextChanges","isInsidePropagationBailout","currentParent","checkIfContextChanged","currentDependencies","memoizedValue","prepareToReadContext","readContext","readContextForConsumer","readContextDuringReconciliation","AbortControllerLocal","AbortController","listener","scheduleCallback$2","NormalPriority","CacheContext","createCache","refCount","releaseCache","currentEntangledListeners","currentEntangledPendingCount","currentEntangledLane","currentEntangledActionThenable","entangleAsyncAction","entangledListeners","requestTransitionLane","pingEngtangledActionScope","chainThenableValue","thenableWithOverride","prevOnStartTransitionFinish","resumedCache","peekCacheFromPool","cacheResumedFromPreviousRender","workInProgressRoot","pooledCache","pushTransition","offscreenWorkInProgress","prevCachePool","pool","getSuspendedCache","cacheFromPool","SuspenseException","SuspenseyCommitException","SuspenseActionException","noopSuspenseyCommitThenable","isThenableResolved","noop$3","trackUsedThenable","thenableState","checkIfUseWrappedInAsyncCatch","fulfilledThenable","rejectedThenable","suspendedThenable","getSuspendedThenable","rejectedReason","hasForceUpdate","initializeUpdateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","hiddenCallbacks","callbacks","cloneUpdateQueue","createUpdate","enqueueUpdate","executionContext","entangleTransitions","queueLanes","enqueueCapturedUpdate","capturedUpdate","newLast","didReadFromEntangledAsyncAction","suspendIfUpdateReadFromEntangledAsyncAction","entangledActionThenable","processUpdateQueue","workInProgress$jscomp$0","instance$jscomp$0","pendingQueue","lastPendingUpdate","firstPendingUpdate","isHiddenUpdate","workInProgressRootRenderLanes","workInProgressRootSkippedLanes","callCallback","commitCallbacks","currentTreeHiddenStackCursor","prevEntangledRenderLanesCursor","pushHiddenContext","entangledRenderLanes","baseLanes","reuseHiddenContextOnStack","popHiddenContext","currentlyRenderingFiber","currentHook","workInProgressHook","didScheduleRenderPhaseUpdate","didScheduleRenderPhaseUpdateDuringThisPass","shouldDoubleInvokeUserFnsInHooksDEV","localIdCounter","thenableIndexCounter$1","thenableState$1","globalClientIdCounter","throwInvalidHookError","areHookInputsEqual","nextDeps","prevDeps","renderWithHooks","secondArg","nextRenderLanes","HooksDispatcherOnMount","HooksDispatcherOnUpdate","renderWithHooksAgain","finishRenderingHooks","ContextOnlyDispatcher","didRenderTooFewHooks","didReceiveUpdate","numberOfReRenders","lastEffect","events","stores","memoCache","HooksDispatcherOnRerender","TransitionAwareHostComponent","maybeThenable","useThenable","checkDidRenderIdHook","didRenderIdHook","bailoutHooks","resetHooksOnUnwind","mountWorkInProgressHook","hook","baseQueue","updateWorkInProgressHook","nextCurrentHook","nextWorkInProgressHook","createFunctionComponentUpdateQueue","basicStateReducer","updateReducer","updateReducerImpl","lastRenderedReducer","baseFirst","newBaseQueueFirst","newBaseQueueLast","didReadFromEntangledAsyncAction$32","revertLane","hasEagerState","eagerState","lastRenderedState","dispatch","rerenderReducer","lastRenderPhaseUpdate","updateSyncExternalStore","isHydrating$jscomp$0","snapshotChanged","subscribeToStore","updateEffectImpl","pushSimpleEffect","createEffectInstance","updateStoreInstance","pushStoreConsistencyCheck","renderedSnapshot","nextSnapshot","checkIfSnapshotChanged","forceStoreRerender","latestGetSnapshot","scheduleUpdateOnFiber","mountStateImpl","initialStateInitializer","updateOptimisticImpl","dispatchActionState","actionQueue","setPendingState","isRenderPhaseUpdate","actionNode","isTransition","runActionStateAction","prevState","handleActionReturnValue","onActionError","error$38","onActionSuccess","notifyActionListeners","actionStateReducer","mountActionState","initialStateProp","ssrFormState","formState","JSCompiler_inline_result$jscomp$0","inRootOrSingleton","dispatchSetState","dispatchOptimisticSetState","updateActionState","stateHook","updateActionStateImpl","currentStateHook","actionStateActionEffect","rerenderActionState","resource","updateRef","mountEffectImpl","fiberFlags","hookFlags","mountEffect","updateEffect","updateInsertionEffect","updateLayoutEffect","imperativeHandleEffect","updateImperativeHandle","mountDebugValue","updateCallback","updateMemo","nextCreate","mountDeferredValueImpl","requestDeferredLane","updateDeferredValueImpl","prevValue","pendingState","finishedState","thenableForFinishedState","dispatchSetStateInternal","requestUpdateLane","noop$2","startHostTransition","formFiber","formData","ensureFormComponentIsStateful","requestFormReset$1","existingStateHook","initialResetState","resetStateQueue","updateId","updateRefresh","refreshCache","provider","root$41","dispatchReducerAction","enqueueRenderPhaseUpdate","entangleTransitionUpdate","currentState","throwIfDuringRender","identifierPrefix","idWithLeadingBit","booleanOrThenable","thenableIndexCounter","unwrapThenable","coerceRef","throwOnInvalidObjectType","returnFiber","newChild","resolveLazy","lazyType","createChildReconciler","shouldTrackSideEffects","deleteChild","childToDelete","deleteRemainingChildren","currentFirstChild","mapRemainingChildren","existingChildren","useFiber","placeChild","newFiber","lastPlacedIndex","newIndex","placeSingleChild","updateTextNode","updateElement","updateFragment","updatePortal","createChild","updateSlot","oldFiber","updateFromMap","newIdx","reconcileChildrenArray","newChildren","resultingFirstChild","previousNewFiber","nextOldFiber","delete","reconcileChildrenIterator","reconcileChildFibersImpl","firstChildFiber","reconcileChildFibers","mountChildFibers","suspenseHandlerStackCursor","shellBoundary","pushPrimaryTreeSuspenseHandler","handler","suspenseStackCursor","pushOffscreenSuspenseHandler","reuseSuspenseHandlerOnStack","popSuspenseHandler","findFirstSuspended","isSuspenseInstanceFallback","revealOrder","applyDerivedStateFromProps","getDerivedStateFromProps","nextProps","classComponentUpdater","_reactInternals","checkShouldComponentUpdate","oldProps","newProps","nextContext","shouldComponentUpdate","callComponentWillReceiveProps","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","resolveClassComponentProps","baseProps","propName$73","defaultOnUncaughtError","defaultOnCaughtError","defaultOnRecoverableError","logUncaughtError","errorInfo","onUncaughtError","componentStack","e$74","logCaughtError","boundary","onCaughtError","errorBoundary","e$75","createRootErrorUpdate","createClassErrorUpdate","initializeClassErrorUpdate","getDerivedStateFromError","componentDidCatch","legacyErrorBoundariesThatAlreadyFailed","throwException","rootRenderLanes","renderDidSuspendDelayIfPossible","workInProgressRootExitStatus","attachPingListener","transitions","markerInstances","retryQueue","wrapperError","workInProgressRootConcurrentErrors","SelectiveHydrationException","reconcileChildren","nextChildren","updateForwardRef","propsWithoutRef","bailoutOnAlreadyFinishedWork","updateMemoComponent","updateSimpleMemoComponent","checkScheduledUpdateOrContext","prevProps","updateFunctionComponent","updateOffscreenComponent","deferHiddenOffscreenComponent","cachePool","nextBaseLanes","markRef","replayFunctionComponent","updateClassComponent","contextType","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","unresolvedOldProps","oldContext","contextType$jscomp$0","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","mountHostRootWithoutHydrating","SUSPENDED_MARKER","treeContext","retryLane","mountSuspenseOffscreenState","getRemainingWorkInPrimaryTree","primaryTreeDidDefer","workInProgressDeferredLane","updateSuspenseComponent","showFallback","didSuspend","nextInstance","JSCompiler_temp$jscomp$0","overflow","fallback","mountWorkInProgressOffscreenFiber","mountSuspensePrimaryChildren","retrySuspenseComponentWithoutHydrating","digest","dgst","primaryChildren","offscreenProps","_pendingMarkers","_retryCache","_transitions","scheduleSuspenseWorkOnFiber","initSuspenseListRenderState","isBackwards","tail","lastContentRow","tailMode","renderState","rendering","renderingStartTime","updateSuspenseListComponent","attemptEarlyBailoutIfNoScheduledUpdate","didSuspendBefore","beginWork","lazyComponent","isDehydrated","getResource","getOwnerDocumentFromRootContainer","setInitialProperties","resolveSingletonInstance","canHydrateInstance","canHydrateTextInstance","pooledCacheLanes","markUpdate","preloadResourceAndSuspendIfNeeded","loading","preloadResource","scheduleRetryEffect","workInProgressSuspendedRetryLanes","cutOffTailIfNeeded","hasRenderedATailFallback","lastTailNode","lastTailNode$113","bubbleProperties","completedWork","didBailout","newChildLanes","child$114","completeWork","pendingContext","createElementNS","removeChild","appendChild","autoFocus","createTextNode","cache$127","listenToAllSupportedEvents","workInProgressRootRenderTargetTime","unwindWork","unwindInterruptedWork","interruptedWork","commitHookEffectListMount","finishedWork","firstEffect","captureCommitPhaseError","commitHookEffectListUnmount","nearestMountedAncestor$jscomp$0","nearestMountedAncestor","destroy_","commitClassCallbacks","safelyCallComponentWillUnmount","componentWillUnmount","safelyAttachRef","instanceToUse","safelyDetachRef","error$143","commitHostMount","src","srcSet","srcset","commitHostUpdate","domElement","updateProperties","isHostParent","getHostSibling","insertOrAppendPlacementNodeIntoContainer","insertBefore","_reactRootContainer","insertOrAppendPlacementNode","commitHostSingletonAcquisition","singleton","attributes","removeAttributeNode","offscreenSubtreeIsHidden","offscreenSubtreeWasHidden","needsFormReset","PossiblyWeakSet","WeakSet","nextEffect","commitBeforeMutationEffects","eventsEnabled","_enabled","rangeCount","e$20","indexWithinAnchor","indexWithinFocus","selectionInformation","focusedElem","selectionRange","resolvedPrevProps","__reactInternalSnapshotBeforeUpdate","clearContainerSparingly","commitLayoutEffectOnFiber","finishedRoot","recursivelyTraverseLayoutEffects","error$142","commitSuspenseHydrationCallbacks","retryDehydratedSuspenseBoundary","registerSuspenseInstanceRetry","prevOffscreenSubtreeWasHidden","recursivelyTraverseReappearLayoutEffects","detachFiberAfterEffects","hostParent","hostParentIsContainer","recursivelyTraverseDeletionEffects","commitDeletionEffectsOnFiber","deletedFiber","onCommitFiberUnmount","prevHostParent","prevHostParentIsContainer","releaseSingletonInstance","clearSuspenseBoundary","retryIfBlockedOn","getRetryCache","retryCache","attachSuspenseRetryListeners","wakeables","wakeable","retry","resolveRetryWakeable","recursivelyTraverseMutationEffects","root$jscomp$0","parentFiber","commitMutationEffectsOnFiber","currentHoistableRoot","commitReconciliationEffects","hoistableRoot","currentResource","getElementsByTagName","querySelector","maybeNodes","getHydratableHoistableCache","rel","httpEquiv","charSet","mountHoistable","acquireResource","tagCaches","getHoistableRoot","recursivelyResetForms","globalMostRecentFallbackTime","wasHidden","prevOffscreenSubtreeIsHidden","recursivelyTraverseDisappearLayoutEffects","hostParentFiber","parent$144","before$145","parent$146","before$147","reset","finishedRoot$jscomp$0","includeWorkInProgressEffects","commitOffscreenPassiveMountEffects","previousCache","commitCachePassiveMountEffect","recursivelyTraversePassiveMountEffects","committedLanes","committedTransitions","commitPassiveMountOnFiber","_finishedWork$memoize2","onPostCommit","passiveEffectDuration","recursivelyTraverseAtomicPassiveEffects","recursivelyTraverseReconnectPassiveEffects","committedLanes$jscomp$0","committedTransitions$jscomp$0","suspenseyCommitFlag","recursivelyAccumulateSuspenseyCommit","accumulateSuspenseyCommitOnFiber","suspendResource","previousHoistableRoot","detachAlternateSiblings","previousFiber","recursivelyTraversePassiveUnmountEffects","commitPassiveUnmountEffectsInsideOfDeletedTree_begin","commitPassiveUnmountOnFiber","recursivelyTraverseDisconnectPassiveEffects","deletedSubtreeRoot","DefaultAsyncDispatcher","getCacheForType","resourceType","cacheForType","PossiblyWeakMap","workInProgressSuspendedReason","workInProgressThrownValue","workInProgressRootDidSkipSuspendedSiblings","workInProgressRootIsPrerendering","workInProgressRootDidAttachPingListener","workInProgressRootInterleavedUpdatedLanes","workInProgressRootPingedLanes","workInProgressRootDidIncludeRecursiveRenderUpdate","workInProgressTransitions","pendingEffectsStatus","pendingEffectsRoot","pendingFinishedWork","pendingEffectsLanes","pendingEffectsRemainingLanes","pendingPassiveTransitions","pendingRecoverableErrors","actionScopeLane","suspenseHandler","cancelPendingCommit","prepareFreshStack","markRootSuspended","ensureRootIsScheduled","performWorkOnRoot","forceSync","shouldTimeSlice","exitStatus","renderRootConcurrent","renderRootSync","renderWasConcurrent","isRenderConsistentWithExternalStores","wasRootDehydrated","timeoutHandle","scheduleTimeout","commitRootWhenReady","recoverableErrors","didIncludeRenderPhaseUpdate","didSkipSuspendedSiblings","suspendedCommitReason","completedRenderStartTime","completedRenderEndTime","suspendedState","stylesheets","unsuspend","waitForCommitToBeReady","commitRoot","check","didAttemptEntireTree","index$4","flushSyncWorkAcrossRoots_impl","resetWorkInProgressStack","cancelTimeout","allEntangledLanes","index$2","handleThrow","thrownValue","pushDispatcher","prevDispatcher","pushAsyncDispatcher","prevAsyncDispatcher","shouldYieldForPrerendering","prevExecutionContext","unitOfWork","throwAndUnwindWorkLoop","workLoopSync","thrownValue$167","performUnitOfWork","replaySuspendedUnitOfWork","hostFiber","completeUnitOfWork","workLoopConcurrentByScheduler","thrownValue$169","suspendedReason","unwindUnitOfWork","skipSiblings","flushPendingEffects","callbackNode","callbackPriority","scheduleCallback$1","flushPassiveEffects","flushMutationEffects","flushLayoutEffects","flushSpawnedWork","rootMutationHasEffect","priorSelectionInformation","curFocusedElem","priorFocusedElem","priorSelectionRange","win","start$jscomp$0","end$jscomp$0","startMarker","endMarker","createRange","setStart","removeAllRanges","addRange","setEnd","scrollLeft","scrollTop","rootHasLayoutEffect","releaseRootPooledCache","onCommitFiberRoot","onRecoverableError","recoverableError","wasDelayedCommit","renderPriority","onPostCommitFiberRoot","captureCommitPhaseErrorOnRoot","rootFiber","pingCache","threadIDs","pingSuspendedRoot","retryTimedOutBoundary","boundaryFiber","firstScheduledRoot","lastScheduledRoot","didScheduleMicrotask","mightHavePendingSyncWork","isFlushingWork","currentEventTransitionLane","scheduleImmediateRootScheduleTask","syncTransitionLanes","onlyLegacy","didPerformSomeWork","root$174","performSyncWorkOnRoot","processRootScheduleInImmediateTask","processRootScheduleInMicrotask","shouldAttemptEagerTransition","scheduleTaskForRootDuringMicrotask","index$3","performWorkOnRootViaSchedulerTask","didTimeout","originalCallbackNode","workInProgressRootRenderLanes$jscomp$0","scheduleMicrotask","coerceFormActionProp","actionProp","createFormDataWithSubmitter","submitter","FormData","extractEvents$1","maybeTargetInst","formAction","i$jscomp$inline_1528","eventName$jscomp$inline_1529","domEventName$jscomp$inline_1530","capitalizedEvent$jscomp$inline_1531","nonDelegatedEvents","eventSystemFlags","_dispatchQueue$i","previousInstance","i$jscomp$0","_dispatchListeners$i","listenerSetKey","addTrappedEventListener","listenToNativeEvent","isCapturePhaseListener","listeningMarker","rootContainerElement","targetContainer","listenerWrapper","dispatchDiscreteEvent","dispatchContinuousEvent","capture","passive","dispatchEventForPluginEventSystem","targetInst$jscomp$0","ancestorInst","nodeTag","grandTag","SyntheticEventCtor","inCapturePhase","accumulateTargetOnly","reactEventName","lastHostComponent","_instance","createDispatchListener","parentWindow","getParent","accumulateEnterLeaveListenersForEvent","getTargetInstFunc","handleEventFunc","fallbackData","eventType","targetFiber","captureName","_instance2","unshift","_instance3","NORMALIZE_NEWLINES_REGEX","NORMALIZE_NULL_AND_REPLACEMENT_REGEX","normalizeMarkupForTextOrAttribute","markup","serverText","clientText","setProp","formEncType","formMethod","formTarget","encType","__html","muted","setPropOnCustomElement","hasSrc","hasSrcSet","propKey","propValue$188","lastProps","lastProp","propKey$205","propKey$221","propKey$226","propKey$231","propKey$236","parentNamespace","dangerouslySetInnerHTML","currentPopstateTransitionEvent","localPromise","queueMicrotask","handleErrorInNextTick","parentInstance","suspenseInstance","possiblePreambleContribution","nextNode","nextNode$jscomp$0","anyProps","_reactRetry","targetInstance","previousSibling","rootContainerInstance","preloadPropsMap","preconnectsSet","previousDispatcher","flushSyncWork","preinitScript","preinitStyle","preinitModuleScript","previousWasRendering","wasRendering","formInst","globalDocument","preconnectAs","limitedEscapedHref","preloadSelector","getStyleKey","getScriptKey","getStylesheetSelectorFromKey","getScriptSelectorFromKey","adoptPreloadPropsForStylesheet","link","reject","insertStylesheet","scripts","async","adoptPreloadPropsForScript","currentProps","styles$244","resource$245","hrefLang","preloadStylesheet","stylesheetPropsFromRawProps","rawProps","preloadProps","styleProps","instance$250","linkInstance","prior","stylesheetProps","scriptProps","keyAttribute","caches","nodeKey","hostContext","itemProp","onLoad","onError","matchMedia","onUnsuspend","insertSuspendedStylesheets","commit","stylesheetTimer","precedencesByRoot","insertStylesheetIntoRoot","precedences","FiberRootNode","hydrate","incompleteTransitions","createFiberRoot","initialChildren","hydrationCallbacks","isStrictMode","transitionCallbacks","getContextForSubtree","parentComponent","updateContainerImpl","markRetryLaneImpl","markRetryLaneIfNotHydrated","attemptContinuousHydration","blockedOn","findInstanceBlockingEvent","return_targetInst","clearIfContinuousEvent","queueIfContinuousEvent","discreteReplayableEvents","findInstanceBlockingTarget","hasScheduledReplayAttempt","queuedFocus","queuedDrag","queuedMouse","queuedPointers","queuedPointerCaptures","queuedExplicitHydrationTargets","accumulateOrCreateContinuousQueuedReplayableEvent","existingQueuedEvent","targetContainers","attemptExplicitHydrationTarget","queuedTarget","attemptReplayContinuousQueuedEvent","queuedEvent","nextBlockedOn","nativeEventClone","attemptReplayContinuousQueuedEventInMap","replayUnblockedEvents","scheduleCallbackIfUnblocked","unblocked","lastScheduledReplayQueue","scheduleReplayQueueIfNeeded","formReplayingQueue","submitterOrAction","unblock","$$reactFormReplay","formProps","ReactDOMRoot","internalRoot","_internalRoot","ReactDOMHydrationRoot","unmount","unstable_scheduleHydration","isomorphicReactPackageVersion$jscomp$inline_1785","componentOrElement","internals$jscomp$inline_2256","bundleType","rendererPackageName","currentDispatcherRef","reconcilerVersion","hook$jscomp$inline_2257","isDisabled","supportsFiber","inject","reactDomClient_production","createRoot","unstable_strictMode","unstable_transitionCallbacks","hydrateRoot","clientModule","calculatePosition","spacingVertical","spacingHorizontal","calculateInnerBoxSize","calculatePositionSS","childrenBoxSize","anchor","refX","MultilineText","verticalPosition","firstDX","_jsx","_Fragment","Text","horizontalPosition","textAnchor","_jsxs","fontSize","Arrow","headInflectionPoint","markerEnd","getArrows","arrows","getArrowsSS","getLabel","getID","getBoxes","boxes","appendBoxes","prepareTree","prepareTreeSS","nodeRenderer","nodeRendererOptions","shouldSkipBranch","elementAndSize","parents","MarkerDef","markerWidth","markerHeight","refY","orient","SVGBoxesTree","arrowRendererOptions","positionOptions","svgSize","xmlns","viewBox","Rectangle","SVG","moleculeRenderer","topLabel","getTopLabel","getBoxStyle","maxWidth","maxHeight","getMoleculeStyle","svgs","addStyleToSVG","joinSVGs","getPlus","getSVGViewBox","currentWidth","shiftX","shiftY","shiftedSVG","styleObjectToString","styleArray","hasOwn","kebabCaseProperty","svgTag","styleString","styleRectange","taxonomyRenderer","minSize","taxonomy","getTaxonomy","nbTaxonomies","getNbTaxonomies","fontStyle","fontFamily","getStringSize","textWith","positionX","dominantBaseline","tempElement","visibility","getFragmentationSVG","accuracy","maxIntensity","react_tree_svg_1","getPeakInRange","rendererOptions","massAccuracy","fragmentation","cyclic","groupResults","mass_fragmentation_1","oneFragment","allFragments","appendResults","groupFragmentationResults","sortedResults","currentResult","lastFragment","groupedResults","ocl","sequenceToMF","fivePrimeTerminal","threePrimeTerminal","circular","fivePrime","nucleotideType","desoxyNucleotides","oxyNucleotides","complementary","alcohol","monophosphate","triphosphate","furanThreeTerm","nucleotide","furanThreeTerm_js_1","addFiveTerm","fiveTerm","baseLoss_1","baseLoss","mfLosses","baseLoss_js_1","addFiveTermBaseLoss","abcdBaseLoss","loss","addInternalTerm_1","addInternalTerm","ter3","ter5","abw","aby","threeTerm","addThreeTermBaseLoss","wxyzBaseLoss","generateFragments_1","generateFragments","dh2o","zch2","mfparts","addFiveTermBaseLoss_1","addThreeTerm","addThreeTermBaseLoss_1","fromNucleicSequence","sequencesString","mfsArray","sequences","nucleotide_1","fragmentsArray","combined","aminoAcids","pKaC","pKaN","pKa","aa3","aa1","isoElectricPoint","aminoAcids_1","aaObject","calculateCharge","aas","calculateForPh","calculateIEP","combine","calculateChart","yAbs","acid","basic","currentAA","iep","white","splitPeptide","allowNeutralLoss","allowOneNeutralLoss","getAA_1","getAA","chargePeptide_1","chargePeptide","chargeOnePeptide","firstAA","lastAA","sequenceToMF_1","newMF","tmpmf","isOneLetterCode","nTerminal","cTerminal","convertAA1To3","newmf","aa1To3","generatePeptideFragments","ya","maxInternal","minInternal","nTerm","cTerm","addCTerm","iTerm","addNTerm","addITerm","digestPeptide_1","digestPeptide","enzyme","minMissed","maxMissed","minResidue","maxResidue","regexp","getRegexp","nbResidue","__esModule","__createBinding","getColorForIEP","IEP","__importStar","splitPeptide_js_1","__exportStar","fragmentPeptide_1","fragmentPeptide","peptide_1","digestion","protonation","protonationPH","digests","fromPeptidicSequence","originalMFsArray","hasLinked","unlinked","mfsArrayLinked","mf_generator_1","mfsArrayUnlinked","fromRange","rangesString","require","getTypeOf","uint8array","compressedSize","uncompressedSize","crc32","compression","compressedContent","getContentWorker","pipe","uncompressWorker","streamInfo","data_length","getCompressedWorker","withStreamInfo","createWorkerFrom","compressWorker","STORE","magic","DEFLATE","base64","binary","dir","createFolders","compressionOptions","unixPermissions","dosPermissions","lie","Uint16Array","_pako","_pakoAction","_pakoOptions","inherits","processChunk","_createPako","transformTo","flush","cleanUp","onData","pako","utf8encode","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCFullYear","getUTCMonth","getUTCDate","fileRecord","LOCAL_FILE_HEADER","dirRecord","CENTRAL_FILE_HEADER","bytesWritten","zipComment","zipPlatform","encodeFileName","streamFiles","accumulate","contentBuffer","dirRecords","currentSourceOffset","entriesCount","currentFile","_sources","openedSource","closedSource","DATA_DESCRIPTOR","CENTRAL_DIRECTORY_END","prepareNextSource","isPaused","registerPrevious","generatedError","lock","generateWorker","_compressWorker","loadAsync","support","defaults","external","decompressed","checkCRC32","optimizedBinaryString","decodeFileName","utf8decode","isNode","isStream","prepareContent","fileNameStr","fileCommentStr","unsafeOriginalName","_upstreamEnded","_bindStream","_stream","Readable","_helper","_read","Buffer","newBufferFrom","allocBuffer","alloc","isBuffer","folder","generateInternalStream","mimeType","checkSupport","generateAsync","generateNodeStream","toNodejsStream","byteAt","zero","lastIndexOfSignature","readAndCheckSignature","readData","checkOffset","checkIndex","setIndex","skip","readInt","readString","readDate","UTC","ZIP64_CENTRAL_DIRECTORY_LOCATOR","ZIP64_CENTRAL_DIRECTORY_END","destType","dataIsReady","_tickScheduled","_tickAndRepeat","isFinished","_tick","extraStreamInfo","isLocked","_listeners","mergeStreamInfo","nodestream","_internalType","_outputType","_mimeType","newBlob","_worker","objectMode","arraybuffer","nodebuffer","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","MSBlobBuilder","getBlob","leftOver","applyFromCharCode","Utf8DecodeWorker","Utf8EncodeWorker","stringifyByChunk","stringifyByChar","applyCanBeUsed","MAX_VALUE_16BITS","MAX_VALUE_32BITS","pretty","readAsArrayBuffer","setimmediate","loadOptions","checkSignature","reader","isSignature","readBlockEndOfCentral","diskNumber","diskWithCentralDirStart","centralDirRecordsOnThisDisk","centralDirRecords","centralDirSize","centralDirOffset","zipCommentLength","readBlockZip64EndOfCentral","zip64EndOfCentralSize","zip64ExtensibleData","readBlockZip64EndOfCentralLocator","diskWithZip64CentralDirStart","relativeOffsetEndOfZip64CentralDir","disksCount","readLocalFiles","localHeaderOffset","readLocalPart","handleUTF8","processAttributes","readCentralDir","zip64","readCentralPart","readEndOfCentral","prepareReader","isEncrypted","bitFlag","useUTF8","fileNameLength","fileName","compressionMethod","versionMadeBy","extraFieldsLength","fileCommentLength","diskNumberStart","internalFileAttributes","externalFileAttributes","readExtraFields","parseZIP64ExtraField","fileComment","extraFields","findExtraFieldUnicodePath","findExtraFieldUnicodeComment","_dataBinary","internalStream","_decompressWorker","nodeStream","MutationObserver","WebKitMutationObserver","characterData","onreadystatechange","outcome","promise","onFulfilled","callFulfilled","otherCallFulfilled","onRejected","callRejected","otherCallRejected","finally","race","immediate","windowBits","memLevel","gzip","msg","ended","chunks","strm","avail_out","deflateInit2","deflateSetHeader","string2buf","deflateSetDictionary","_dict_set","next_in","avail_in","Buf8","next_out","deflate","onEnd","buf2binstring","shrinkBuf","deflateEnd","flattenChunks","Deflate","deflateRaw","inflateInit2","Z_OK","inflateGetHeader","Z_FINISH","Z_NO_FLUSH","binstring2buf","inflate","Z_NEED_DICT","inflateSetDictionary","Z_BUF_ERROR","Z_STREAM_END","Z_SYNC_FLUSH","utf8border","buf2string","arraySet","inflateEnd","Inflate","inflateRaw","ungzip","setTyped","Buf16","Buf32","Z_PARTIAL_FLUSH","Z_FULL_FLUSH","Z_BLOCK","Z_TREES","Z_ERRNO","Z_STREAM_ERROR","Z_DATA_ERROR","Z_NO_COMPRESSION","Z_BEST_SPEED","Z_BEST_COMPRESSION","Z_DEFAULT_COMPRESSION","Z_FILTERED","Z_HUFFMAN_ONLY","Z_RLE","Z_FIXED","Z_DEFAULT_STRATEGY","Z_BINARY","Z_TEXT","Z_UNKNOWN","Z_DEFLATED","pending_buf","pending_out","total_out","_tr_flush_block","block_start","strstart","max_chain_length","prev_length","nice_match","w_size","w_mask","good_match","lookahead","match_start","window_size","hash_size","adler","total_in","insert","ins_h","hash_shift","hash_mask","match_length","_tr_tally","max_lazy_match","last_lit","prev_match","match_available","good_length","max_lazy","nice_length","max_chain","pending_buf_size","gzhead","gzindex","last_flush","w_bits","hash_bits","dyn_ltree","dyn_dtree","bl_tree","l_desc","d_desc","bl_desc","bl_count","heap_len","heap_max","l_buf","lit_bufsize","d_buf","opt_len","static_len","bi_buf","bi_valid","data_type","_tr_init","deflateInit","deflateReset","deflateResetKeep","hcrc","_tr_align","_tr_stored_block","deflateInfo","xflags","extra_len","dmax","wsize","whave","wnext","hold","bits","lencode","distcode","lenbits","distbits","sane","havedict","wbits","ncode","nlen","ndist","have","lens","lendyn","distdyn","back","was","inflateReset","inflateReset2","inflateResetKeep","inflateInit","inflateInfo","static_tree","extra_bits","extra_base","elems","max_length","has_stree","dyn_tree","max_code","stat_desc","getPrototypeOf","nextTick","importScripts","args","clearImmediate","fetchArrayBuffer","loadCommercials_1","loadCommercials","jszip_1","__importDefault","fetchArrayBuffer_1","loadingPromises","jsZip","zip","fetchText","mfFromGoogleSheet","papaparse_1","urlReferences","fetchText_js_1","tsv","tsvReferences","formulas","referencesArray","references","modif","infoField","infoFields","ESI","MALDI","loadGoogleSheet_1","loadGoogleSheet","refUUID","uuid","refURL","loadKnapSack_1","loadKnapSack","fileData","emdb","databases","flattenResults","searchMSEM","msem","addBaseline","baselineFct","addNoise","noise","SpectrumGenerator","peakWidthFct","maxPeakHeight","shapeGenerator","assertNumber","assertInteger","addPeaks","addPeak","xPosition","peakFWHM","peakWidth","peakShapeOptions","shapeOptions","widthLeft","widthRight","firstValue","firstPoint","lastPoint","getSpectrum","minPeakHeight","generateSpectrum","generatorOptions","peakOptions","axis2D","peakCoordinates","convertWidthToFWHM","widthData","Spectrum2DGenerator","calculeIntervals","yPosition","xIndex","yIndex","minMaxZ","minZ","maxZ","generateSpectrum2D","addPeaksOptions","closestPointX","joinX_1","joinX","sortX","maxLines","entryA","entryB","composition","calculateComposition","topY","move","power_1","square","Distribution_1","Distribution","closestPointX_js_1","joinX_js_1","getEmptyCache","emptyCache","multiplyY","setArray","ySorted","xSorted","sortY","relativeValue","power_js_1","distCopy","maxToOne","getDerivedCompositionInfo","shortComposition","isotopeLabel","IsotopicDistribution_1","IsotopicDistribution","spectrum_generator_1","getDerivedCompositionInfo_1","MINIMAL_FWHM","MINIMAL_Y","confidence","partOriginal","cachedDistribution","totalDistribution","newDistribution","fromX","toX","isotopicDistribution","absoluteChargeOrOne","deltaNeutrons","finalDistribution","sumBefore","getCSV","getTable","yLabel","getMaxY","newPoint","numberXDecimals","numberYDecimals","getSumY","searchSimilarity","flatEntries","auto","isotopic_distribution_1","minSimilarity","experimental","theoretical","experimentalInfo","thereoticalInfo","quantity","_ref","quickSelectMedian","TheilSenRegression","theilSen","slopes","medianSlope","cuts","massShifts","similarities","shifts","ml_regression_theil_sen_1","shiftsPPM","fetchJSON","EMDB","ms_spectrum_1","fromMolecules_js_1","fromNucleicSequence_js_1","search_js_1","searchMSEM_js_1","require$$12","require$$13","require$$14","normed","databaseName","forceReload","loadContaminants","loadGoogleSheet_js_1","loadTest","fromArray","loadNeutralTest","maxC","fromArray_js_1","replaceOrAppend","fromRange_js_1","fromPeptidicSequence_js_1","appendFragmentsInfo_js_1","listDatabases","nbEntries","preprocessEARanges_1","preprocessEARanges","targetEA","minCount","mfFromEA","maxTotalError","maxElementError","mfWhile","totalError","mfFromAtomicRatio","sumComposition","relativeComposition","filteredMFs","nbCompositionAtoms","atomicRatio","absError","mfFor","mfAtomicComposition","getMFAtomicComposition","atomicRatios","acc","appendAllDBRefs","allDBRefs","$ref","$id","appendURLs_1","appendURLs","appendAllDBRefs_js_1","collections","force","dbRef","unknowns","searchParams","URLSearchParams","postFetchJSON","includeDBRefs","excludedCollections","baseURL","groupsByCollection","collection","addDataForOneCollection","allSettled","postFetchJSON_js_1","_id","normalizeActivities","activeOrNatural","activities","activityEntry","activity","assay","targetTaxonomies","normalizedActivity","normalizeActivities_js_1","activeOrNaturalDetails","route","fetchActiveOrNatural","includeDBRefs_js_1","appendURLs_js_1","ensureArray","pubmeds","patents","taxonomies","getAllowedEMs_1","getAllowedEMs","allowedEMs","searchWithIonizations_1","searchWithIonizations","fetchJSON_js_1","getAllowedEMs_js_1","parseMasses_js_1","realURL","parseMasses","realMass","activesOrNaturals","prepareSearchParams","searchWithIonizations_js_1","nbMassSpectra","nbPubmeds","nbPatents","noStereoTautomerID","kwTaxonomies","kwActiveAgainst","kwBioassays","kwMeshTerms","kwTitles","minNbMassSpectra","activesOrNaturalsByMF","activesOrNaturals_js_1","nbNaturals","nbBioactives","grouped","naturalProduct","bioactive","groupedArray","compoundsFromMF","titles","getTitles","searchMasses","modifications","modification","massShift","massSpectra_1","massSpectra","searchMasses_js_1","defaultRoutes","routes","allResults","appendAndFilterSimilarity","uniqueMolecules","uniqueMol","unique","mfsFromEMs","compoundsURL","realCompoundsURL","searchParamsCompounds","pubmedCompounds","pubmedID","searchInSilicoSpectraByMF","msComparator","MSComparator","searchInSilicoSpectraByMasses","technique","activesOrNaturalsByMF_js_1","massSpectra_js_1","mfsFromEMs_js_1","searchInSilicoSpectraByMF_js_1","searchInSilicoSpectraByMasses_js_1","OctoChemDB","compoundsFromMF_js_1","activeOrNaturalDetails_js_1","STEMMERS","arabic","armenian","bulgarian","czech","danish","dutch","english","finnish","french","german","greek","hungarian","indian","indonesian","irish","italian","lithuanian","nepali","norwegian","portuguese","romanian","russian","serbian","slovenian","spanish","swedish","tamil","turkish","ukrainian","sanskrit","SPLITTERS","SUPPORTED_LANGUAGES","getLocale","language","baseId","lastId","nano","BigInt","milli","MAX_ARGUMENT_FOR_STACK","safeArrayPush","arr","newArr","newArrLength","sprintf","template","replaceArgs","rawWidth","replacement","formatBytes","bytes","decimals","isInsideWebWorker","WorkerGlobalScope","isInsideNode","release","getNanosecondTimeViaPerformance","formatNanoseconds","getNanosecondsTime","hrtime","bigint","uniqueId","getOwnProperty","sortTokenScorePredicate","intersect","arrays","found","getDocumentProperties","pathsLength","pathTokens","pathTokensLength","lat","lon","getNested","mapDistanceToMeters","convertDistanceToMeters","distance","createError","removeVectorsFromHits","vectorProperties","hits","lastKey","isAsyncFunction","withIntersection","setIntersection","sets","set1","set2","withUnion","setUnion","union","setDifference","sleep","SharedArrayBuffer","Atomics","nil","valid","wait","allLanguages","NO_LANGUAGE_WITH_CUSTOM_TOKENIZER","LANGUAGE_NOT_SUPPORTED","INVALID_STEMMER_FUNCTION_TYPE","MISSING_STEMMER","CUSTOM_STOP_WORDS_MUST_BE_FUNCTION_OR_ARRAY","UNSUPPORTED_COMPONENT","COMPONENT_MUST_BE_FUNCTION","COMPONENT_MUST_BE_FUNCTION_OR_ARRAY_FUNCTIONS","INVALID_SCHEMA_TYPE","DOCUMENT_ID_MUST_BE_STRING","DOCUMENT_ALREADY_EXISTS","DOCUMENT_DOES_NOT_EXIST","MISSING_DOCUMENT_PROPERTY","INVALID_DOCUMENT_PROPERTY","UNKNOWN_INDEX","INVALID_BOOST_VALUE","INVALID_FILTER_OPERATION","SCHEMA_VALIDATION_FAILURE","INVALID_SORT_SCHEMA_TYPE","CANNOT_SORT_BY_ARRAY","UNABLE_TO_SORT_ON_UNKNOWN_FIELD","SORT_DISABLED","UNKNOWN_GROUP_BY_PROPERTY","INVALID_GROUP_BY_PROPERTY","UNKNOWN_FILTER_PROPERTY","INVALID_VECTOR_SIZE","INVALID_VECTOR_VALUE","INVALID_INPUT_VECTOR","WRONG_SEARCH_PROPERTY_TYPE","FACET_NOT_SUPPORTED","INVALID_DISTANCE_SUFFIX","INVALID_SEARCH_MODE","MISSING_VECTOR_AND_SECURE_PROXY","MISSING_TERM","INVALID_VECTOR_INPUT","PLUGIN_CRASHED","PLUGIN_SECURE_PROXY_NOT_FOUND","PLUGIN_SECURE_PROXY_MISSING_CHAT_MODEL","ANSWER_SESSION_LAST_MESSAGE_IS_NOT_ASSISTANT","PLUGIN_COMPONENT_CONFLICT","captureStackTrace","formatElapsedTime","formatted","getDocumentIndexId","validateSchema","schema","valueLength","isVectorType","vectorSize","getVectorSize","isArrayType","expectedType","getInnerType","subProp","IS_ARRAY_TYPE","boolean","enum","geopoint","INNER_TYPE","isGeoPointType","createInternalDocumentIDStore","idToInternalId","internalIdToId","save","store","orama","internalDocumentIDStore","internalIdToIdLength","internalIdItem","getInternalDocumentId","internalId","currentId","getDocumentIdFromInternalId","sharedInternalDocumentStore","docs","getMultiple","idsLength","getAll","rawDocument","createDocumentsStore","AVAILABLE_PLUGIN_HOOKS","getAllPluginsByHook","pluginsToRun","pluginsLength","plugins","plugin","OBJECT_COMPONENTS","FUNCTION_COMPONENTS","runSingleHook","hooks","needAsync","runMultipleHook","docsOrIds","runAfterSearch","runBeforeSearch","runAfterCreate","AVLNode","updateHeight","getBalanceFactor","rotateLeft","newRoot","rotateRight","fromJSON","AVLTree","insertCount","rebalanceThreshold","insertNode","insertMultiple","rebalance","rebalanceNode","needRebalance","rebalancedNode","balanceFactor","findNodeByKey","isBalanced","removeNode","removeDocument","successorParent","successor","rangeSearch","greaterThan","inclusive","lessThan","FlatTree","numberToDocumentId","idSet","operation","operationKeys","operationType","resultSet","excludeValues","filterArr","idSets","curr","_boundedLevenshtein","term","word","rowMin","boundedLevenshtein","isBounded","syncBoundedLevenshtein","RadixNode","subWord","updateParent","addDocument","docID","findAllWords","docIDs","docId","wordLength","currentCharacter","childNode","edgeLabel","edgeLabelLength","commonPrefix","newEdgeLabel","newWordLabel","inbetweenNode","newNode","_findLevenshtein","originalTolerance","character","termLength","removeWord","removeDocumentByWord","getCommonPrefix","nodeJson","RadixTree","EARTH_RADIUS","BKDNode","BKDTree","nodeMap","getPointKey","pointKey","existingNode","getDocIDsByCoordinates","removeDocByID","deleteNode","searchByRadius","radius","highPrecision","distanceFn","vincentyDistance","haversineDistance","distA","distB","searchByPolygon","polygon","isInsidePolygon","isPointInPolygon","centroid","calculatePolygonCentroid","buildNodeMap","totalArea","centroidX","centroidY","polygonLength","areaSegment","centroidCoordinate","isInside","coord1","coord2","lat1","lat2","deltaLat","deltaLon","sinU1","cosU1","sinU2","cosU2","prevLambda","iterationLimit","sinSigma","cosSigma","sigma","sinAlpha","cos2Alpha","cos2SigmaM","sinLambda","cosLambda","uSquared","deltaSigma","BoolNode","true","false","bool","BM25","matchingCount","docsCount","fieldLength","averageFieldLength","idf","DEFAULT_SIMILARITY","VectorIndex","vectors","internalDocumentId","Float32Array","magnitude","getMagnitude","whereFiltersIDs","findSimilarVectors","vectorLength","targetVector","targetMagnitude","similarVectors","vectorId","dotProduct","insertDocumentScoreParameters","tokens","avgFieldLength","fieldLengths","frequencies","insertTokenScoreParameters","token","tokenFrequency","tokenOccurrences","removeDocumentScoreParameters","removeTokenScoreParameters","vectorIndexes","searchableProperties","searchablePropertiesWithTypes","insertScalarBuilder","tokenizer","avlRebalanceThreshold","tokenize","schemaType","insertVector","insertScalar","elementsLength","removeScalar","innerSchemaType","calculateResultScores","bm25Relevance","resultsMap","boostPerProperty","keywordMatchesMap","documentIDs","oramaOccurrences","oramaFrequencies","termOccurrences","documentIDsLength","propertyMatches","bm25","propertiesToSearch","boost","relevance","keywordsCount","tokenFoundMap","tokenLength","termsFound","termsFoundLength","fullMatches","remainingResults","fid","additionalResults","searchByWhereClause","filters","andFilters","orFilters","notFilter","allDocs","docsStore","notResult","filterKeys","filtersMap","filteredIDs","reqOperation","inside","distanceInMeters","addGeoResult","filteredIDsResults","addFindResult","operationOpt","operationValue","getSearchableProperties","getSearchablePropertiesWithTypes","rawIndexes","rawVectorIndexes","dumpVectorIndexes","savedIndexes","keysLength","innerCreate","sortableDeniedProperties","sorter","enabled","sortableProperties","sortablePropertiesWithTypes","sorts","orderedDocsToRemove","orderedDocs","isSortEnabled","unsortableProperties","ensureOrderedDocsAreDeletedByProperty","ensureIsSorted","ensurePropertyIsSorted","stringSort","localeCompare","numberSort","booleanSort","predicate","orderedDocsLength","ensureOrderedDocsAreDeleted","sortBy","docIds","isDesc","indexOfA","indexOfB","isAIndexed","isBIndexed","getSortableProperties","getSortablePropertiesWithTypes","createSorter","DIACRITICS_CHARCODE_START","DIACRITICS_CHARCODE_END","CHARCODE_REPLACE_MAPPING","replaceChar","replaceDiacritics","stringCharCode","step2List","ational","tional","enci","anci","izer","bli","alli","entli","eli","ousli","ization","ation","ator","alism","iveness","fulness","ousness","aliti","iviti","biliti","logi","step3List","icate","ative","alize","iciti","ical","ful","ness","mgr0","meq1","mgr1","s_v","stemmer","stem","re2","re3","re4","firstch","normalizeToken","withCache","normalizationCache","stopWords","stemmerSkipProperties","tokenizeSkipProperties","splitRule","trimTokens","allowDuplicates","createTokenizer","stemming","validateComponents","components","defaultComponents","rawKey","getComponents","pluginComponents","documentsStore","customTokenizer","internalDocumentStore","beforeInsert","afterInsert","beforeRemove","afterRemove","beforeUpdate","afterUpdate","beforeUpsert","afterUpsert","beforeSearch","afterSearch","beforeInsertMultiple","afterInsertMultiple","beforeRemoveMultiple","afterRemoveMultiple","beforeUpdateMultiple","afterUpdateMultiple","beforeUpsertMultiple","afterUpsertMultiple","afterCreate","getVersion","sorting","getByID","skipHooks","errorProperty","asyncNeeded","innerInsertAsync","innerInsertSync","ENUM_TYPE","STRING_NUMBER_TYPE","indexableProperties","indexablePropertiesWithTypes","indexableValues","actualType","validateDocumentProperty","indexAndSortDocument","indexAndSortDocumentSync","sortableValues","batchSize","innerInsertMultipleAsync","innerInsertMultipleSync","processNextBatch","startIndex","batch","processAllBatches","waitTime","hasMoreBatches","remainingTime","innerInsertMultiple","removeAsync","removeSync","removeMultiple","removeMultipleAsync","removeMultipleSync","docIdsForHooks","_removeMultiple","_removeMultipleSync","MODE_FULLTEXT_SEARCH","MODE_HYBRID_SEARCH","MODE_VECTOR_SEARCH","sortAsc","sortDesc","sortingPredicateBuilder","getFacets","facetsConfig","facets","allIDs","facetKeys","facet","rangesLength","allDocsLength","facetValue","propertyType","facetValues","calculateNumberFacetBuilder","alreadyInsertedValues","calculateNumberFacet","calculateBooleanStringOrEnumFacetBuilder","calculateBooleanStringOrEnumFacet","currentFacet","stringFacetDefinition","sortingPredicate","DEFAULT_REDUCE","getInitialValue","ALLOWED_TYPES","getGroups","groupBy","propertiesLength","schemaProperties","returnedCount","maxResult","listOfValues","groupByKey","perValue","keyValue","combinations","calculateCombination","combinationsLength","combination","combinationLength","groupsLength","aggregationValue","arrs","innerFullTextSearch","propertiesToSearchWithTypes","hasFilters","where","uniqueDocsIDs","applyDefault","fullTextSearch","timeStart","performSearchLogic","shouldCalculateFacets","distinctOn","includeVectors","isPreflight","preflight","uniqueDocsArray","docsWithIdAndScore","fetchDocumentsWithDistinct","fetchDocuments","elapsed","executeSearchAsync","defaultBM25Params","innerVectorSearch","vectorIndex","searchVector","facetsResults","vectorProperty","newDoc","timeEnd","innerHybridSearch","fullTextIDs","minMaxScoreNormalization","vectorIDs","hybridWeights","mergeAndRankResults","hybridSearch","uniqueTokenScores","returningResults","extractScore","maxScore","normalizeScore","hybridScoreBuilder","textWeight","vectorWeight","textScore","vectorScore","textResults","vectorResults","maxTextScore","maxVectorScore","hasHybridWeights","getQueryWeights","mergedResults","textResultsLength","hybridScore","normalizedScore","hybridScoreValue","vectorResultsLength","resultId","existingRes","resultIDs","uniqueDocsArrayLength","idAndScore","fullDoc","updateAsync","updateSync","newId","updateMultiple","updateMultipleAsync","updateMultipleSync","docsLength","newIds","upsert","upsertAsync","upsertSync","existingDoc","upsertMultiple","upsertMultipleAsync","upsertMultipleSync","docsToInsert","docsToUpdate","idsToUpdate","updateResults","insertResults","ORAMA_SECURE_PROXY_PLUGIN_NAME","AnswerSession","proxy","abortController","lastInteractionParams","chatModel","conversationID","messages","initPromise","initialMessages","generateRandomID","ask","askStream","fetchAnswer","abortAnswer","triggerStateChange","getMessages","clearSession","regenerateLast","isLastMessageAssistant","role","interactionId","sources","translatedQuery","errorMessage","stateIdx","addEmptyAssistantMessage","chatStream","model","findLast","onStateChange","getPlugin","pluginExtras","systemPrompt","pluginParams","chat","kInsertions","kRemovals","getActivitiesDB_1","getActivitiesDB","orama_1","queryFields","activitiesDB","getPatentsDB_1","getPatentsDB","abstractsLimit","abstract","nbCompounds","patent","lastCallback","getPubmedsDB_1","getPubmedsDB","meshHeadings","pubmed","meshHeading","descriptorName","article","compounds","getTaxonomiesDB_1","getTaxonomiesDB","superkingdom","kingdom","phylum","class","family","genus","species","searchActivitiesDB_1","searchActivitiesDB","terms","maxNbEntries","minScore","queryResult","activityDocument","searchPatentsDB_1","searchPatentsDB","patentsDB","boostFields","searchPubmedsDB_1","searchPubmedsDB","pubmedsDB","searchTaxonomiesDB_1","searchTaxonomiesDB","taxonomiesDB","currentTaxonomy","taxonomiesDocument","summarizeEmptyTerms_1","summarizeEmptyTerms","patentsMaxNbEntries","nbCompoundsEntryA","nbCompoundsEntryB","pubmedsMaxNbEntries","activitiesMaxNbEntries","taxonomiesMaxNbEntries","summarize","isInitialized","creatingDB","createDB","taxonomyRanks","taxonomyComparator","field","taxonomyRanks_js_1","createTaxonomyTree","rankLimit","taxonomyRanks_1","reachedRankLimit","branch","cleanEmptyBranches","appendInternals","assignSlot","residues","maxNumberLines","internals","used","residue","paper","usedSlots","ownKeys","appendResidues_1","appendResidues","Peptide","Nucleotide","STATE_BEGIN","STATE_MIDDLE","STATE_END","nextChar","nextNextChar","fromBegin","getModifiedReplacement","alternatives","replacements","getUnknownReplacement","removeStartEndParenthesis","nbOver","nbUnder","unknownResidue","SYMBOLS","replaced","modifiedResidue","residueCode","alternativeOneLetter","ALTERNATIVES","_name","registerMethods","addMethodNames","methods$1","getMethodsFor","getMethodNames","names","getPaper_browser","getPaper","svg_js_1","appendResiduesPosition_1","appendResiduesPosition","getPaper_1","leftRightBorders","spaceBetweenResidues","xPos","xOld","textWidth","getTextWidth","setPaper","nbLines","topPosition","bottomPosition","labelFontFamily","labelSize","analysisResult","numberResidues","merge","textColor","similariy","filterResults","minQuantity","showInternals","minRelativeQuantity","appendRows","allResidues","appendRowsInformation","filtered","firstResidue","lastResidue","fromResidue","toResidue","firstIndex","maxNbOver","maxNbUnder","script","drawLabel","plain","drawInternals_1","drawInternals","drawLabel_1","spaceBetweenInternalLines","onmouseover","onmouseout","drawReplacements","drawTerminals_1","drawTerminals","linecap","drawSequence_1","drawSequence","sequenceSVG","analysisResults","parsing","drawOptions","appendResults_1","appendRows_1","appendInternals_1","IDX","HEX","BUFFER","getPeakWidthFct","massOptions","addUniqueKeyToColumns","positiveRows","columnIndexInK","groupColumnsBySign","mapped","cssls","XtX","XtY","Pset","choXtX","luXtX","sortedPset","sortedEset","sortCollectionSet","cols2Solve","vars","initialisation","Fset","optimality","maxIter","gradientTolerance","Jset","fullSet","colIndex","notPset","fcnnls","infeasIndex","Hset","hRowColIdx","negRowColIdx","alphaMin","minIdx","idx2zero","newParam","fcnnlsVector","splitMatrix","nonZeroColumns","nonZeroRows","createMatrixIndexes","rowsMapping","columnsMapping","matrices","currentMappingID","processFromACell","appendSubMatrix","submatrix","rowsTodo","nextRow","internalRow","blockFcnnls_1","blockFcnnls","ml_fcnnls_1","ml_matrix_1","splitMatrix_js_1","fullMatrix","originalMatrix","emptyRow","reconstructed","partialReconstructed","appendTarget","mfsDeconvolution","customMFs","getPeakWidthFct_1","getCentroids","newMFs","uuid_1","addIsotopicDistributionAndCheckMF","buildCombined","blockFcnnls_js_1","relativeIntensity","absoluteQuantity","relativeQuantity","matchingScore","getFilteredReconstructed","wClone","filteredReconstructed","getXY","getPeakWidthFct_js_1","reconstruct","EMDBPkg","SpectrumPkg"],"mappings":"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C,IAAAA,IAAK,EAAE;MAC5B;CAAAD,IAAAA;CAAqBC,IAAAA,IAAK,EAAE;MAC5B;CAAAD,IAAAA;CAAqBC,IAAAA,IAAK,EAAE;MAC5B;CAAAD,IAAAA;CAAqBC,IAAAA,IAAK,EAAE;MAC5B;CAAAD,IAAAA;CAAqBC,IAAAA,IAAK,EAAE;MAC5B;CAAAD,IAAAA;CAAqBC,IAAAA,IAAK,EAAE;MAC5B;CAAAD,IAAAA;CAAqBC,IAAAA,IAAK,EAAE;MAC5B;CAAAD,IAAAA;CAAqBC,IAAAA,IAAK,EAAE;MAC5B;CAAAD,IAAAA;CAAqBC,IAAAA,IAAK,EAAE;MAC5B;CAAAD,IAAAA;CAAqBC,IAAAA,IAAK,EAAE;MAC5B;CAAAD,IAAAA;CAAqBC,IAAAA,IAAK,EAAE;MAC5B;CAAAD,IAAAA;CAAqBC,IAAAA,IAAK,EAAE;MAC5B;CAAAD,IAAAA;CAAqBC,IAAAA,IAAK,EAAE;MAC5B;CAAAD,IAAAA;CAAqBC,IAAAA,IAAK,EAAE;MAC5B;CAAAD,IAAAA;CAAqBC,IAAAA,IAAK,EAAE;CAAA,KAC5B;CAAAD,IAAAA;CAAqBC,IAAAA,IAAK,EAAE;MAC5B;CAAAD,IAAAA;CAAqBC,IAAAA,IAAK,EAAE;MAC5B;CAAAD,IAAAA;CAAqBC,IAAAA,IAAK,EAAE;MAC5B;CAAAD,IAAAA;CAAqBC,IAAAA,IAAK,EAAE;MAC5B;CAAAD,IAAAA;CAAqBC,IAAAA,IAAK,EAAE;MAC5B;CAAAD,IAAAA;CAAqBC,IAAAA,IAAK,EAAE;MAC5B;CAAAD,IAAAA;CAAqBC,IAAAA,IAAK,EAAE;MAC5B;CAAAD,IAAAA;CAAqBC,IAAAA,IAAK,EAAE;MAC5B;CAAAD,IAAAA;CAAqBC,IAAAA,IAAK,EAAE;MAC5B;CAAAD,IAAAA;CAAqBC,IAAAA,IAAK,EAAE;MAC5B;CAAAD,IAAAA;CAAqBC,IAAAA,IAAK,EAAE;MAC5B;CAAAD,IAAAA;CAAqBC,IAAAA,IAAK,EAAE;MAC5B;CAAAD,IAAAA;CAAqBC,IAAAA,IAAK,EAAE;MAC5B;CAAAD,IAAAA;CAAqBC,IAAAA,IAAK,EAAE;MAC5B;CAAAD,IAAAA;CAAqBC,IAAA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,IAAAA,IAAK,EAAE;MAC5B;CAAAD,IAAAA;CAAqBC,IAAAA,IAAK,EAAE;MAC5B;CAAAD,IAAAA;CAAqBC,IAAAA,IAAK,EAAE;MAC5B;CAAAD,IAAAA;CAAqBC,IAAAA,IAAK,EAAE;MAC5B;CAAAD,IAAAA;CAAqBC,IAAAA,IAAK,EAAE;MAC5B;CAAAD,IAAAA;CAAqBC,IAAAA,IAAK,EAAE;MAC5B;CAAAD,IAAAA;CAAqBC,IAAAA,IAAK,EAAE;CAAA,KAC5B;CAAAD,IAAAA;CAAqBC,IAAAA,IAAK,EAAE;MAC5B;CAAAD,IAAAA;CAAqBC,IAAAA,IAAK,EAAE;MAC5B;CAAAD,IAAAA;CAAqBC,IAAAA,IAAK,EAAE;MAC5B;CAAAD,IAAAA;CAAqBC,IAAAA,IAAK,EAAE;MAC5B;CAAAD,IAAAA;CAAqBC,IAAAA,IAAK,EAAE;MAC5B;CAAAD,IAAAA;CAAqBC,IAAAA,IAAK,EAAE;MAC5B;CAAAD,IAAAA;CAAqBC,IAAAA,IAAK,EAAE;MAC5B;CAAAD,IAAAA;CAAqBC,IAAAA,IAAK,EAAE;MAC5B;CAAAD,IAAAA;CAAqBC,IAAAA,IAAK,EAAE;MAC5B;CAAAD,IAAAA;CAAqBC,IAAAA,IAAK,EAAE;MAC5B;CAAAD,IAAAA;CAAqBC,IAAAA,IAAK,EAAE;MAC5B;CAAAD,IAAAA;CAAqBC,IAAAA,IAAK,EAAE;MAC5B;CAAAD,IAAAA;CAAqBC,IAAAA,IAAK,EAAE;MAC5B;CAAAD,IAAAA;CAAqBC,IAAAA,IAAK,EAAE;MAC5B;CAAAD,IAAAA;CAAqBC,IAAAA,IAAK,EAAE;MAC5B;CAAAD,IAAAA;CAAqBC,IAAAA,IAAK,EAAE;MAC5B;CAAAD,IAAAA;CAAqBC,IAAAA,IAAK,EAAE;MAC5B;CAAAD,IAAAA;CAAqBC,IAAAA,IAAK,EAAE;MAC5B;CAAAD,IAAAA;CAAqBC,IAAAA,IAAK,EAAE;MAC5B;CAAAD,IAAAA;CAAqBC,IAAAA,IAAK,EAAE;MAC5B;CAAAD,IAAAA;CAAqBC,IAAAA,IAAK,EAAE;MAC5B;CAAAD,IAAAA;CAAqBC,IAAAA,IAAK,EAAE;MAC5B;CAAAD,IAAAA;CAAqBC,IAAAA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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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