{"version":3,"file":"mass-tools.min.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/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/xAdd.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/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-rescale/lib-es6/index.js","../node_modules/ml-array-min/lib-es6/index.js","../node_modules/ml-array-max/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/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/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/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/xMedianAbsoluteDeviation.js","../node_modules/ml-spectra-processing/lib-esm/x/xMinMaxValues.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/xRolling.js","../node_modules/ml-spectra-processing/lib-esm/x/xRollingAverage.js","../node_modules/ml-spectra-processing/lib-esm/x/xRotate.js","../node_modules/ml-spectra-processing/lib-esm/x/xSequentialFillFromStep.js","../node_modules/ml-spectra-processing/lib-esm/x/xSortDescending.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/x/xWhittakerSmoother.js","../node_modules/ml-spectra-processing/lib-esm/utils/createSystemMatrix.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/xyCheck.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/zones/zonesNormalize.js","../node_modules/ml-spectra-processing/lib-esm/zones/zonesWithPoints.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/utils/equallySpacedSlot.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyJoinX.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyReduce.js","../node_modules/ml-spectra-processing/lib-esm/xy/xySortX.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyUniqueX.js","../node_modules/ml-spectra-processing/lib-esm/xyArray/utils/getSlots.js","../node_modules/ml-spectra-processing/lib-esm/xyArray/xyArrayWeightedMerge.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/matrix/matrixCreateEmpty.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/matrixCheckRanges.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/matrixMaxAbsoluteZ.js","../node_modules/ml-spectra-processing/lib-esm/matrix/matrixToArray.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/matrix/matrixAbsoluteMedian.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/matrixColumnsCorrelation.js","../node_modules/ml-spectra-processing/lib-esm/matrix/matrixCuthillMckee.js","../node_modules/ml-spectra-processing/lib-esm/matrix/matrixGetSubMatrix.js","../node_modules/ml-spectra-processing/lib-esm/matrix/matrixHistogram.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/matrixTranspose.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/utils/stringify.js","../node_modules/ml-spectra-processing/lib-esm/x/xAbsoluteMedian.js","../node_modules/ml-spectra-processing/lib-esm/x/xAbsoluteSum.js","../node_modules/ml-spectra-processing/lib-esm/x/xApplyFunctionStr.js","../node_modules/ml-spectra-processing/lib-esm/x/xAutoCorrelation.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/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/xMinIndex.js","../node_modules/ml-spectra-processing/lib-esm/x/xMinMaxDelta.js","../node_modules/ml-spectra-processing/lib-esm/x/xMode.js","../node_modules/ml-spectra-processing/lib-esm/x/xParetoNormalization.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/xRobustDistributionStats.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/xSampling.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/xUniqueSorted.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/xy2/xy2ToXY.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyAlign.js","../node_modules/ml-spectra-processing/lib-esm/xyArray/xyArrayAlign.js","../node_modules/ml-spectra-processing/lib-esm/xyArray/xyArrayAlignToFirst.js","../node_modules/ml-spectra-processing/lib-esm/xyArray/utils/getSlotsToFirst.js","../node_modules/ml-spectra-processing/lib-esm/xyArray/xyArrayMerge.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyCovariance.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/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/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/xyMaxMerge.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyMaxY.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyMaximaY.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/xyMinYPoint.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyMinimaY.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/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/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/xyToXYArray.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyToXYObject.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyWeightedMerge.js","../node_modules/ensure-string/lib-esm/index.js","../node_modules/isutf8/dist/index.esm.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-peak-shape-generator/lib-esm/util/constants.js","../node_modules/ml-peak-shape-generator/lib-esm/shapes/1d/gaussian/Gaussian.js","../node_modules/ml-peak-shape-generator/lib-esm/util/erfinv.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/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/step.js","../node_modules/ml-levenberg-marquardt/lib/gradient_function.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/index.js","../node_modules/ml-spectra-fitting/lib/util/selectMethod.js","../node_modules/ml-spectra-fitting/lib/shapes/getSumOfShapes.js","../node_modules/ml-gsd/lib/utils/addMissingShape.js","../node_modules/ml-gsd/lib/post/optimizePeaksWithLogs.js","../node_modules/ml-gsd/lib/utils/groupPeaks.js","../node_modules/ml-gsd/lib/utils/addMissingIDs.js","../node_modules/ml-gsd/lib/post/joinBroadPeaks.js","../node_modules/ml-gsd/lib/utils/setShape.js","../node_modules/ml-gsd/lib/post/broadenPeaks.js","../node_modules/ml-gsd/lib/gsd.js","../node_modules/ml-gsd/lib/utils/optimizeTop.js","../node_modules/ml-gsd/lib/post/optimizePeaks.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","../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/util/getConnectivityMatrix.js","../node_modules/ml-floyd-warshall/lib-esm/index.js","../node_modules/openchemlib-utils/lib/diastereotopic/getChiralOrHeterotopicCarbons.js","../node_modules/openchemlib-utils/lib/diastereotopic/ensureHeterotopicChiralBonds.js","../node_modules/openchemlib-utils/lib/topic/TopicMolecule.js","../node_modules/openchemlib-utils/lib/path/getAllAtomsPaths.js","../node_modules/openchemlib-utils/lib/topic/getMoleculeWithH.js","../node_modules/openchemlib-utils/lib/topic/getXMolecule.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/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/getGroupedDiastereotopicAtomIDs.js","../node_modules/openchemlib-utils/lib/diastereotopic/groupDiastereotopicAtomIDs.js","../node_modules/openchemlib-utils/lib/hose/getHoseCodesForAtoms.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/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/getMF.js","../node_modules/openchemlib-utils/lib/util/getUnsaturation.js","../node_modules/openchemlib-utils/lib/util/getNMRHints.js","../node_modules/openchemlib-utils/lib/util/getProperties.js","../node_modules/openchemlib-utils/lib/path/getPathsInfo.js","../node_modules/openchemlib-utils/lib/util/getAtoms.js","../node_modules/openchemlib-utils/lib/path/getPathAndTorsion.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/get-value/dist/index.mjs","../node_modules/sdf-parser/src/util/getMolecule.js","../node_modules/openchemlib-utils/lib/db/utils/appendSDF.js","../node_modules/sdf-parser/src/parse.js","../node_modules/sdf-parser/src/getEntriesBoundaries.js","../node_modules/openchemlib-utils/lib/db/utils/pushEntry.js","../node_modules/openchemlib-utils/lib/util/noWait.js","../node_modules/openchemlib-utils/lib/db/utils/search.js","../node_modules/openchemlib-utils/lib/util/getRAtomicNumber.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","../node_modules/openchemlib-utils/lib/reaction/utils/appendOCLReaction.js","../node_modules/openchemlib-utils/lib/db/MoleculesDB.js","../node_modules/openchemlib-utils/lib/db/utils/appendEntries.js","../node_modules/openchemlib-utils/lib/db/utils/appendSmilesList.js","../node_modules/openchemlib-utils/lib/db/utils/pushMoleculeInfo.js","../node_modules/openchemlib-utils/lib/db/utils/appendColor.js","../node_modules/openchemlib-utils/lib/fragment/fragmentAcyclicSingleBonds.js","../node_modules/openchemlib-utils/lib/features/getAtomFeatures.js","../node_modules/openchemlib-utils/lib/util/getCharge.js","../node_modules/openchemlib-utils/lib/diastereotopic/getDiastereotopicAtomIDsFromMolfile.js","../node_modules/openchemlib-utils/lib/hose/getHoseCodes.js","../node_modules/openchemlib-utils/lib/hose/getHoseCodesAndInfo.js","../node_modules/openchemlib-utils/lib/hose/getHoseCodesForAtom.js","../node_modules/openchemlib-utils/lib/hose/getHoseCodesFromDiastereotopicID.js","../node_modules/openchemlib-utils/lib/util/getImplicitHydrogensCount.js","../node_modules/openchemlib-utils/lib/util/getMolfilesMapping.js","../node_modules/openchemlib-utils/lib/util/getNextNMRHint.js","../node_modules/openchemlib-utils/lib/path/getShortestPaths.js","../node_modules/openchemlib-utils/lib/util/nbCHO.js","../node_modules/openchemlib-utils/lib/util/nbCN.js","../node_modules/openchemlib-utils/lib/util/nbCOOH.js","../node_modules/openchemlib-utils/lib/util/nbLabileH.js","../node_modules/openchemlib-utils/lib/util/nbNH2.js","../node_modules/openchemlib-utils/lib/util/nbOH.js","../node_modules/openchemlib-utils/lib/util/dwar/utils/getParts.js","../node_modules/openchemlib-utils/lib/diastereotopic/toDiastereotopicSVG.js","../node_modules/openchemlib-utils/lib/util/toVisualizerMolfile.js","../node_modules/openchemlib-utils/lib/util/toggleHydrogens.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/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/MarkerDef.utils.js","../node_modules/react-tree-svg/lib-esm/components/SVGBoxesTree.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/render.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/SpectrumGenerator.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/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.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/update.js","../node_modules/@orama/orama/dist/browser/types.js","../node_modules/@orama/orama/dist/browser/methods/answer-session.js","../node_modules/@orama/orama/dist/browser/methods/serialization.js","../node_modules/@orama/orama/dist/browser/methods/upsert.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/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/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/initialisation.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 { 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 { 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","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 { 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';\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","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';\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","'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 { 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 * 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","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 { 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';\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","/*\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 { 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","/**\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 { 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","/**\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","/*\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","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 * 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","/**\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","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 { 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","/**\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 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","/**\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","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 { 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 { 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';\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 * 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","/**\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","/**\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 { 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","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","/**\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","/**\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","/**\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","/**\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","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 { 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","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","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","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","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 { 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","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","/* 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 { 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 { 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","/**\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 { 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 { 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';\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 { 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","/**\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","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 { 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 { 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 { 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","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 { 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 * 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","/**\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 * 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 * 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 { 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","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 { 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 { 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","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 { 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","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 { 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","/**\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","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 * 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';\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 { 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 { 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 { 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 { 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 { 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","/**\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","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","/*\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 { 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","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","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","// 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_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 * 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 { 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 { 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 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 { 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 { 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","/**\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","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","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","/**\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","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';\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","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 { 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","/**\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 { 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","\"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","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","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 { 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 { 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 { 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","/**\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 { 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 { 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 './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","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","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 { 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 { 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","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","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","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","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","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 * 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 * 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","/* @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","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","/**\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';\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';\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","/**\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 *\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 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","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","/**\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","/**\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","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 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","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","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 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","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","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","/**\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","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 { 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 { 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","export function getImplicitHydrogensCount(molecule, atomID) {\n    return molecule.getImplicitHydrogens(atomID);\n}\n//# sourceMappingURL=getImplicitHydrogensCount.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","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","/**\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","/**\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 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 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 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 * 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 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","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","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 { 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 * 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","\"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","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","export const refX = 10;\n//# sourceMappingURL=MarkerDef.utils.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\";\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 } 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, 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","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","/**\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 { 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 { 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","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 { 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","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","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 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 { 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","\"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.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","/**\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 { 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","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","low","high","middle","currentLow","currentHigh","swap","j","temp","floor","xCheck","minLength","Error","xFindClosestIndex","target","sorted","abs","index","diff","Number","POSITIVE_INFINITY","currentDiff","xGetFromToIndex","x","fromIndex","toIndex","from","to","xAdd","array1","array2","isConstant","constant","array3","xMultiply","xDotProduct","A","B","g","result","xCrossCorrelation","tau","lag","n","q","k","w","l","xBoxPlot","posQ1","sort","posQ3","medianPos","q1MinProportion","q3MinProportion","medianMinProportion","min","q1","q3","max","at","xBoxPlotWithOutliers","boxPlot","iqr","lowerWhisker","upperWhisker","outliers","minWhisker","maxWhisker","push","xCheckLengths","xCorrelation","sumA","sumA2","sumB","sumB2","sumAB","a","b","sqrt","arguments","Array","currentMin","_options$fromIndex","_options$toIndex","isInteger","minValue","currentMax","maxValue","RangeError","_options$min","autoMinMax","_options$max","factor","defineProperty","matrix","require$$0","rescale","require$$1","indent","repeat","indentData","inspectMatrixWithOptions","maxRows","maxColumns","maxNumSize","padMinus","constructor","name","rows","columns","maxI","maxJ","loop","get","line","formatNumber","join","inspectData","num","formatNumber2","padEnd","len","str","fix","toFixed","startsWith","exp","toExponential","checkRowIndex","outer","checkColumnIndex","checkRowVector","vector","to1DArray","checkColumnVector","checkRowIndices","rowIndices","checkColumnIndices","columnIndices","checkRange","startRow","endRow","startColumn","endColumn","checkNumber","checkNonEmpty","isEmpty","AbstractMatrix","from1DArray","newRows","newColumns","newData","newMatrix","Matrix","row","column","set","rowVector","columnVector","zeros","ones","fill","rand","random","randInt","interval","round","eye","this","diag","matrix1","matrix2","checkMatrix","isMatrix","klass","size","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","mulS","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","v","idx","minIndex","maxRowIndex","minRow","minRowIndex","maxColumn","maxColumnIndex","minColumn","minColumnIndex","norm","type","dot","cumulativeSum","sum","vector2","vector1","mmul","other","Bcolj","s","mpow","scalar","bb","e","strassen2x2","a11","b11","a12","b12","a21","b21","a22","b22","m1","m2","m3","m4","m5","c00","c01","c10","c11","strassen3x3","a00","a01","a02","a10","a20","b00","b01","b02","b10","b20","m6","m7","m8","m9","m12","m13","m14","m15","m16","m17","m18","c02","c12","c20","c21","c22","mmulStrassen","y","r1","c1","r2","c2","embed","mat","cols","r","c","resultat","console","warn","blockMult","halfRows","parseInt","halfCols","subMatrix","add","sub","scaleRows","isFinite","scaleColumns","flipRows","ceil","first","last","flipColumns","kroneckerProduct","kroneckerSum","AxI","IxB","transpose","sortRows","compareFunction","compareNumbers","sortColumns","subMatrixRow","indices","subMatrixColumn","selection","rowIndex","columnIndex","trace","entries","sumByRow","sumByColumn","sumAll","product","productByRow","productByColumn","productAll","mean","variance","unbiased","sum1","sum2","varianceByRow","varianceByColumn","varianceAll","standardDeviation","center","centerByRow","centerByColumn","centerAll","scale","getScaleByRow","scaleByRow","getScaleByColumn","scaleByColumn","divider","getScaleAll","scaleAll","Symbol","iterator","col","values","isArrayOfNumbers","every","element","for","randomInt","diagonal","identity","negate","tensorProduct","initData","nRows","nColumns","super","arrayData","removeRow","splice","addRow","removeColumn","newRow","addColumn","addS","addM","subS","subM","subtract","subtractS","subtractM","mul","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","clz32","cos","cosh","expm1","fround","log","log1p","log10","log2","sign","sin","sinh","tan","tanh","trunc","pow","arg0","powS","powM","installMathOperations","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","BaseView","MatrixSelectionView","WrapperMatrix1D","_calculateIndex","WrapperMatrix2D","LuDecomposition$1","t","LUcolj","kmax","lu","pivotVector","pivotSign","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","isNaN","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","leftHandSide","rightHandSide","useSVD","LuDecomposition","xrange","exception","range","dependenciesOneRow","error","thresholdValue","thresholdError","returnArray","EigenvalueDecomposition","assumeSymmetric","d","hh","tred2","dl1","c3","el1","s2","tst1","tql2","H","ort","orthes","nn","ra","sa","vr","vi","notlast","cdivres","exshift","z","iter","cdiv","hqr2","realEigenvalues","imaginaryEigenvalues","eigenvectorMatrix","xr","xi","yr","yi","CholeskyDecomposition$1","dimension","positiveDefinite","L","isPositiveDefinite","nipals","scaleScores","maxIterations","terminationCriteria","u","tOld","counter","xResidual","residual","yResidual","betas","CHO","CholeskyDecomposition","CholeskyDecomposition_1","EVD","LuDecomposition_1","Matrix_1","MatrixColumnSelectionView","MatrixColumnView","MatrixFlipColumnView","MatrixFlipRowView","MatrixRowSelectionView","MatrixRowView","MatrixSubView","MatrixTransposeView","NIPALS","Nipals","SVD","correlation","xMatrix","yMatrix","yIsSame","sdx","sdy","corr","covariance","cov","_default","default","subMatrix0","subMatrix1","subMatrix2","inverse_1","linearDependencies","results","Abis","pseudoInverse","svdSolution","solve_1","wrap","absDiff","xCumulative","xMean","sumValue","xVariance","sqrError","xStandardDeviation","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","outOff","step","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","SFAr","SFAi","SFBr","SFBi","SA","SB","createNumberArray","ArrayConstructor","createFromToArray","includeFrom","includeTo","distribution","delta","base","firstExponent","FLOAT_MUL","multiplyUint32","nlo","XSadd","state","seed","Date","now","Uint32Array","init","getFloat","bind","getUint32","nextState","periodCertification","createRandomArray","generator","gaussianGenerator","GaussianGenerator","generateGaussian","String","spare","hasSpare","val","isPowerOfTwo","nextPowerOfTwo","appendPromises","object","promises","key","then","modifier","ArrayBuffer","isView","xSubtract","calculateAdaptiveWeights","yData","baseline","weights","controlPoints","factorStd","learningRate","minWeight","absResiduals","rawWeights","maxWeight","MIN_SAFE_INTEGER","newWeights","oneMinusLearningRate","weight","hilbertTransformWithFFT","fftResult","multiplier","hilbertSignal","resampling","oldLength","ratio","currentIndex","xMaxValue","xMinValue","xHistogram","histogram","centerX","nbSlots","logBaseX","logBaseY","absolute","logOfBase","slotSize","xIsEquallySpaced","tolerance","maxDx","minDx","MAX_SAFE_INTEGER","absoluteDifference","xIsMonotonic","shiftSubTree","depth","level","slot","currentLevel","levelSlotShift","levelShift","levelSlotSize","slotIndex","getDepth","xMedianAbsoluteDeviation","averageDeviations","mad","xMinMaxValues","P1","Q1","P2","Q2","P3","Q3","P4","Q4","P5","Q5","polyval","coef","calc","P","Q","erfcinv","simpleNormInvNumber","magnitudeMode","SQRT2","simpleNormInv","xNoiseSanPlot","cutOff","refine","scaleFactor","fixOffset","filter","_e","prepareData","medianIndex","firstNegativeValueIndex","findIndex","lastPositiveValueIndex","signPositive","signNegative","cutOffDist","considerList","indexMax","minKi","whereToCutStat","top","elementsOfCutOff","averageValue","kiSqrt","determineCutOff","initialNoiseLevelPositive","skyPoint","initialNoiseLevelNegative","noiseLevelPositive","noiseLevelNegative","cloneSignPositive","cloneSignNegative","cutOffSignalsIndexPlus","cutOffSignalsIndexNeg","cutOffSignals","correctionFactor","effectiveCutOffDist","refinedCorrectionFactor","positive","negative","snr","sanplot","generateSanPlot","fromTo","xNoiseStandardDeviation","sd","xNorm","xSum","xNormed","algorithm","absoluteSumValue","absoluteSum","currentMaxValue","sumFactor","xPadding","fromEnd","toEnd","xRolling","fct","window","padding","padded","subarray","xRollingAverage","xRotate","xSequentialFillFromStep","parameters","xSortDescending","isArray","matrixCholeskySolver","nonZerosArray","permutationEncoded","pinv","mt","ar","ac","ap","ai","ax","lnz","colOffset","adr","lp","parent","lnzArray","flag","pattern","bp1","kk","p2","ldlSymbolic","lx","li","lKi","ldlNumeric","ldlPerm","ldlLsolve","ldlDsolve","ldlLTsolve","ldlPermt","addWeights","nbPoints","newLeftHandSide","newRightHandSide","next","xWhittakerSmoother","lambda","getWeightsAndControlPoints","prevBaseline","iteration","Infinity","upperTriangularNonZeros","createSystemMatrix","cho","newBaseline","calculateDelta","xWhitakerSmoother","reimPhaseCorrection","phi0","phi1","firstAngle","beta","cosTheta","sinTheta","newRe","newIm","newSinTheta","determiningGlobalValues","ph0Values","ph0","ph1","sxtw","swx","sw","sxtwy","swy","detMx","inMx","weightedLinearRegression","maxDiff","predictedPh0","autoPhaseRegion","x0","start","stop","maxSteps","bestAng","minArea","dAng","negArea","getNegArea","toRadians","phased","area","sumX","robustBaseLineRegionsDetection","maxDistanceToJoin","factorNoise","Uint8Array","change","prev","degree","zeroShift","reimZeroFilling","totalLength","newRE","newIM","xyCheck","xyMaxYPoint","current","STEPS","zonesNormalize","zones","exclusions","map","zone","currentZone","beforeExclusionsZones","normalizedExclusions","currentExclusionIndex","zoneIndex","zonesWithPoints","numberOfPoints","normalizedZones","zonesWithNumberOfPoints","unitsPerPoint","reduce","previous","currentTotal","tempZone","tempZoneNumberOfPoints","integral","x1","slope","intercept","getSlope","y0","y1","processZone","variant","xLength","halfStep","lastStep","previousX","MAX_VALUE","previousY","nextX","nextY","frontOutsideSpectra","backOutsideSpectra","currentValue","currentPoints","main","equallySpacedSlot","initialOriginalStep","lastOriginalStep","sumAtMin","sumAtMax","equallySpacedSmooth","xyJoinX","deltaIsFunction","position","notEnoughPoints","internalZones","totalPoints","newX","newY","getInternalZones","xySortX","xyObject","response","xyUniqueX","isSorted","cumulativeY","average","getSlots","possibleXs","flatMap","currentSlot","number","slots","currentDelta","xyArrayWeightedMerge","deltaNumber","positions","point","nextValue","maxX","sumY","sumXY","minX","currentX","xyObjectCheck","points","xyObjectMaxXPoint","xyObjectMinXPoint","matrixCreateEmpty","nbRows","nbColumns","matrixCheck","firstLength","matrixClone","matrixCheckRanges","boundaries","matrixMinMaxAbsoluteZ","matrixMinMaxZ","matrixMaxAbsoluteZ","matrixToArray","flatten","currentRow","targetMin","targetMax","clamp","algorithmOptions","originalMin","originalMax","convert","kind","getDataConverter","originalRange","targetRange","matrixInitial","dictionary","arrayOfValues","targetArray","sourceArray","info","columnArray","q1max","q3min","middleOver","list","adj","visited","toVisit","eol","ptr","nbhd","duplicate","minMax","xHistogramOptions","finalHistogram","invertedDictionary","ret","dictCategoricalToNumerical","matrixB","normalizationFactor","referenceSpectrum","currentVariable","medianOfQuotients","quotients","async","Promise","all","minRegSize","finalPeaks","magnitudeData","peaksDs","dk","holoborodko","peaksSp","detectBaselineRegions","indexMask","reTmp","imTmp","applyZeroShift","csize","complexArray","replacer","space","internalReplacer","variableLabel","fctString","Function","replaceAll","toReturn","rowsArray","columnsArray","nb","forceFFT","inClockwise","aSum","cSum","hilbertTransform","recenter","similarityFct","depth1","depth2","similarity","maxSimilarity","value1","value2","sumWeights","minDelta","maxDelta","maxCount","counts","sqrtSD","higherWhisker","filteredArray","downSampling","Set","deltaX","xy2","xyValue","data1","data2","common","y2","length1","length2","difference","weightedX","requiredY","ys","newYs","filterRequiredY","firstXs","otherXs","currentPosition","getSlotsToFirst","meanX","meanY","maxY","x25","x50","x75","x100","xMode","currentStep","breakPoint","prevX","zonesWithPointsRes","xResult","yResult","zoneResult","concat","minRelativeYValue","nbPeaks","descending","nbThreshold","currentZoneIndex","numberMaxPoints","xyIntegration","currentxyIntegral","currentxyIntegration","sumYs","sumProducts","weightedIntegral","firstIntegration","totalIntegration","totalWeightedIntegral","currentIntegration","lastIntegration","getWeightedIntegral","endIndexes","Int32Array","beginIndexes","currentBeginIndex","currentEndIndex","nextIndex","previousIndex","xyMaxY","groupWidth","merged","maxAbscissa","currentxyMaxY","maxima","startEqualIndex","cumSumY","centroids","mergedPoints","originalIndex","mergedIndex","minY","numberCloseSlots","numberSlots","closeSlot","selected","monoisotopic","peakLoop","item","close","existing","newPeak","xError","structuredClone","normalizedYs","slotWidth","halfSlot","entry","newDiff","after","before","inflectionBefore","inflectionAfter","extrema","inflectionMiddle","width","gamma","optimize","appendFromTo","zoneNbPoints","maxApproximateNbPoints","internalZone","maxNbPoints","currentY","lastX","objectArray","weightedAbscissa","ensureString","blob","encoding","guessEncoding","TextDecoder","decode","uint8","buffer","byteOffset","byteLength","buf","isutf8","parse","text","uniqueX","bestGuess","keepInfo","xColumn","yColumn","numberColumns","maxNumberColumns","minNumberColumns","lines","split","forEach","trim","test","fields","parseFloat","replace","skipFirstColumn","xs","peaks","searchMonoisotopicRatio","ml_spectra_processing_1","peak","nextItem","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_1","groups","mf","part","parts","match","groupsObject_js_1","oneLetter","usefulParts","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","parsed","multipliers","currentMultiplier","newParsed","realMultiplier","distinctParsedObject","atomA","atomB","fromCharCode","indexOfDash","indexOf","parseNumberWithDivision","chemical_elements_1","expandedGroups","chemical_groups_1","substring","begin","SyntaxError","message","string","subSuperscript","superscript","Format","SUBSCRIPT","SUPERSCRIPT","improveLinesForDisplay","Kind_js_1","beginCounter","endCounter","minCounter","nbParenthesisToSuppress","toSuppress","specialCases","Format_1","nbElectrons","improveLinesForDisplay_js_1","special","SUPERIMPOSE","over","formatCharge_js_1","formatCharge","under","require$$2","isMF_1","isMF","Style","toHtml_1","toHtml","html","Style_1","SUPERIMPOSE_SUP_SUB","ensureCase_1","ensureCase","toUpperCase","newPart","two","one","has","getMF","currents","comment","groupIdentical","currentPart","parenthesisLevel","comments","optimizeRanges","newParts","mfsObject","hasRange","createMFs","mfs","getIsotopeRatioInfo_1","getIsotopeRatioInfo","isotopesArray","ratios","normalize","getEA_1","getEA","addMass","isotopeRatioInfo","eas","getElements_1","getElements","addElement","find","newElement","getNumberOfIsotopologues","atoms","keys","nbIsotopes","getNbCombinationsPerAtom","nbAtoms","partToAtoms_1","partToMF_1","partToMF","neutral","getInfoInternal_1","getInfoInternal","customUnsaturations","emFieldName","msemFieldName","oneResult","getProcessedPart","nbIsotopologues","getNumberOfIsotopologues_1","unsaturation","require$$5","require$$6","partToAtoms","validUnsaturation","currentElement","getIsotopesInfo","getDistribution","partsToDisplay","partLine","toDisplay_js_1","partsToMF_1","partsToMF","expand","shouldExpandgroupsObject","createNewPart","previousKind","openingParenthesis","closingParenthesis","preMultiplier","postMultiplier","globalPartMultiplier","expandgroupsObject","group","expanded","combineAtomsIsotopesCharges","calculateAndSortKeys","currentKey","atom_sorter_1","pop","getKey","stringComparator","prop","toText_1","toText","subSuperscript_1","subscript","MFInternal_1","MFInternal","flatten_1","getInfo_1","getIsotopesInfo_1","partsToDisplay_1","require$$7","require$$8","toDisplay_1","require$$9","require$$10","toParts_1","require$$11","parse_1","cache","toDisplay","displayed","toCanonicText","toParts","ea","isotopesInfo","toNeutralMF","MF_1","MF","internal","getInfo","parse_js_1","toHtml_js_1","unsaturationMatcher_1","unsaturationMatcher","onlyInteger","onlyNonInteger","minMW","maxMW","minEM","maxEM","minCharge","maxCharge","absoluteCharge","mw","em","unsaturationMatcher_js_1","ensureUppercaseSequence_1","ensureUppercaseSequence","sequence","currentSymbol","getEutrophicationPotential_1","getEutrophicationPotential","mfString","mf_parser_1","nC","nO","nN","nP","thOD","nH","ep","getMsem_1","getMsem","ELECTRON_MASS","allowNeutralMolecules","ionization","forceIonization","targetMass","realIonization","ms","ppm","getRangesForFragment_1","getRangesForFragment","ranges","newRanges","currentMF","possibilities","MFRange_1","MFRange","getRange","currentRange","isInRange","rangeIndex","rangeElement","targetElement","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","precision","targetMasses","targetIntensities","minMSEM","maxMSEM","allowNegativeAtoms","msInfo","mf_utilities_1","getMsInfo","ionizationAtoms","atomKeys","TargetMassCache_1","TargetMassCache","allowNeutral","firstPossibility","currentMinCharge","currentMaxCharge","uniqueMFs","targetMassCache","advancedFilter","filterUnsaturation","fakeMinUnsaturation","fakeMaxUnsaturation","numberMFEvaluated","numberResults","orderMapping","currentIonization","getOrderMapping","currentAtom","previousAtom","theEnd","maxPosition","lastPosition","lastPossibility","initializePossibilities","isValid","unsaturationValue","isOdd","filterCharge","getMinMass","getResult","mf_matcher_1","msemMatcher","newResult","updateCurrentAtom","setCurrentMinMax","ensureUniqueMF","bestCounts","previousEM","currentCounts","findMFs_1","findMFs","mfIncluded","targetEM","findMFsSync_js_1","findMFsSync","masses","mf_finder_1","getFragmentPeaks","mfInfo","getPeaks_js_1","getPeaks","fromMonoisotopicMass_1","fromMonoisotopicMass","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","s1X","s1Y","s2X","s2Y","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","getPeakChargeBySimilarity","widthFunction","bottom","experimentalData","similarityProcessor","peaks_similarity_1","checkTopBottom","fromCharge","toCharge","fromIsotope","toIsotope","isotopeHeight","NEUTRON_MASS","getPeaksWithCharge_1","getPeaksWithCharge","selectedPeaks","allPeaks","numberIsotopes","isotopeIntensity","localFromIndex","localToIndex","peaksWithCharge","bestCharge","theoreticalPositions","massRange","isotopePosition","fromMass","toMass","localHeightSum","currentTheoreticalPosition","theoreticalMaxValue","maxDeltaRatio","relativeHeightThreshold","minHeight","minRadio","maxRatio","continuous","previousDelta","success","failed","sgg","windowSize","derivative","polynomial","np","ans","fullWeights","hs","constantH","wg1","wg2","d1","d2","getHs","wg","gramPoly","Grampoly","genFact","gf","GAUSSIAN_EXP_FACTOR","LN2","ROOT_PI_OVER_LN2","ROOT_THREE","ROOT_2LN2","ROOT_2LN2_MINUS_ONE","Gaussian","fwhm","gaussianWidthToFWHM","fwhmToWidth","gaussianFwhmToWidth","widthToFWHM","gaussianFct","getArea","height","calculateGaussianHeight","getGaussianArea","getFactor","getGaussianFactor","getData","shape","getGaussianData","calculateHeight","getParameters","ln1MinusXSqrd","lnEtcBy2Plus2","firstSqrt","erfinv","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","assert","DefaultParameters","peakShape","gradientDifference","properties","getNormalizedValue","parameter","property","minMaxY","checkOptions","timeout","initialValues","damping","dampingStepUp","dampingStepDown","errorTolerance","centralDifference","improvementThreshold","minValues","maxValues","parLen","gradientDifferenceArray","getGradientDifferenceArray","filler","dataLength","getFiller","checkTimeout","endTime","getCheckTimeout","weightSquare","_","errorCalculation","parameterizedFunction","func","params","evaluatedData","gradientFunc","paramFunction","nbParams","param","auxParams","funcParam","funcParam2","gradientFunction","residualError","matrixFunction","inverseMatrix","jacobianWeightResidualError","perturbations","levenbergMarquardt","checkedOptions","optimalError","optimalParameters","converged","previousError","parameterValues","parameterError","iterations","antiLowerConvexHull","currentPoint","moveOn","moveBack","getMinIndex","functionValues","diagonalDistances","choiceLimit","bestCurrentValue","directOptimization","sumOfShapes","epsilon","tolerance2","initialState","objectiveFunction","getObjectiveFunction","lowerBoundaries","upperBoundaries","diffBorders","numberOfRectangles","totalIterations","unitaryCoordinates","middlePoint","fCalls","smallerDistance","edgeSizes","differentDistances","smallerValuesByDistance","originalCoordinates","optimumValuesIndex","S3","S1","a1","b1","a2","S2","xHull","yHull","lowerIndexHull","largerSide","largeSidesIndex","bestFunctionValues","firstMiddleCenter","secondMiddleCenter","firstMiddleValue","secondMiddleValue","firstMinValue","secondMinValue","ix1","ix2","minFunctionValue","pair","finalState","minimizer","optima","direct","internalPeaks","shiftValue","normalizedPeaks","id","shapeFct","propertiesValues","propertyValue","generalParameterValue","defaultParameterValues","getInternalPeaks","normalizedY","gradientDifferences","optimizationOptions","selectMethod","optimization","totalY","peakX","shapeFctKey","getSumOfShapes","fitted","fittedValues","newPeaks","addMissingShape","shapeInstance","hasShape","optimizePeaksWithLogs","peakList","groupingFactor","factorLimits","previousPeak","currentGroup","groupPeaks","logs","peakGroup","firstPeak","lastPeak","groupSize","time","optimizedPeaks","addMissingIDs","crypto","randomUUID","pushBackPeaks","broadLines","indexes","getGSDPeakOptimizedStructure","xFrom","inflectionPoints","xTo","mapPeaks","nextPeak","noiseLevel","sgOptions","smoothY","maxCriteria","minMaxRatio","realTopDetection","equallySpaced","noiseInfo","xValue","dY","ddY","yThreshold","dX","lastMax","lastMin","minddY","intervalL","intervalR","lastK","minddYIndex","possible","minDistance","currentDistance","xCurrent","xPrevious","optimizeTop","broadWidth","broadRatio","maxDdy","candidates","initialWidth","peakPicking","isContinuous","xyEnsureGrowingX","gsdPeaks","ml_gsd_1","gsd","gsdPeak","checkArrayLength","BaseRegression","predict","_predict","xVal","train","toLaTeX","score","ySum","chi2","rmsd","xSquared","ySquared","xY","maybeToPrecision","figures","toPrecision","SimpleLinearRegression","yObj","coefficients","numerator","regress","computeX","xFactor","absIntercept","load","json","PowerRegression","pr","xl","yl","linear","newInputs","latex","peaksWidth_1","peaksWidth","widths","regression","ml_regression_power_1","regressionChart","fit","predictFct","tex","Spectrum_1","Spectrum","fromPeaks","is_any_array_1","xy_parser_1","getPeaksWithCharge_js_1","isContinuous_js_1","peaksWidth_js_1","defaultData","scaleY","intensity","rescaleX","ensureOriginalX","xOriginal","normedY","total","getBestPeaks","peakPicking_js_1","getBestPeaks_js_1","getFragmentPeaksFct","MSComparator_1","normalizeAndCacheData","dataXY","minIntensity","xyFilterMinYValue","xyFilterTopYValues","returnSimilarity","aligned","massPower","intensityPower","minNbCommonPeaks","nbCommonPeaks","nbPeaks2","nbPeaks1","tanimoto","cosine","selectedMasses","xyArrayAlign","dataXY1","dataXY2","bestPeaks","numberDigits","showMF","numberMFs","mfPrefs","displayCharge","displayProperties","mfColors","color","annotations","annotation","_highlight","dy","props","rx","ry","fillOpacity","textLine","dx","labels","currentMfPrefs","numberOfMFS","getColor","jsgraph","JsGraph","appendFragmentsInfo","experimentalSpectrum","database","onStep","fragments","nbFound","intensityFound","assignments","possibleMFs","bestMF","lib","toSum","estimate","filterFctVariables","variables","filterFct","canonizeMF","sizes","evolution","appendResult","uniqueMFsObject","ems","getMonoisotopicMass","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","getHoseCodesForAtomsInternal","getHoseCodesForAtomsAsFragments","hoses","fragment","getCanonizedIDCode","CANONIZER_ENCODE_ATOM_CUSTOM_LABELS","allowedCustomLabels","minSphereSize","maxSphereSize","tagAtoms","tagAtomFct","rootAtoms","getCompactCopy","setAtomMapNo","cHelperNeighbours","mapping","getAtomMapNo","internalTagAtoms","getAtomCustomLabel","mappings","atomMask","atomList","sphere","rootAtom","newMax","getAllConnAtoms","connAtom","getConnAtom","copyMoleculeByAtoms","removeExplicitHydrogens","addQueryFeaturesAndRemoveMapNo","isAromaticAtom","setAtomQueryFeature","cAtomQFAromatic","cAtomQFNotAromatic","getAtomRingSize","cAtomQFRingSize3","cAtomQFRingSize4","cAtomQFRingSize5","cAtomQFRingSize6","cAtomQFRingSize7","cAtomQFRingSizeLarge","nbHydrogens","getAllHydrogens","cAtomQFNot0Hydrogen","cAtomQFNot1Hydrogen","cAtomQFNot2Hydrogen","cAtomQFNot3Hydrogen","getConnectivityMatrix","pathLength","atomicNo","negativeAtomicNo","cRoundedMass","sdt","getConnBondOrder","sdta","bondNumber","getConnBond","isAromaticBond","adjMatrix","numVertices","distMatrix","is","dist","floydWarshall","getChiralOrHeterotopicCarbons","internalMolecule","addImplicitHydrogens","cHelperSymmetryStereoHeterotopicity","getAtoms","getStereoBond","getNeighbourSymmetries","stereoBond","getAtomPreferredStereoBond","setBondType","cBondTypeUp","getBondAtom","setBondAtom","addPossibleChiralBonds","neighbourSymmetries","symmetryRank","getSymmetryRank","ensureHeterotopicChiralBonds","esrType","atLeastThreeAtoms","cHelperBitNeighbours","heterotopicCarbons","TopicMolecule","originalMolecule","idCode","maxPathLength","maxNbAtoms","logger","getIDCode","setAtomNoInMapNo","molecules","moleculeWithH","ensureMapNo","existingMapNo","mapNo","nextMapNo","getHoseFragment","sphereSize","getAtomPathsFrom","minPathLength","toAtomicNo","atomPaths","atomsPaths","paths","atomPathValue","atomPath","path","getAtomPaths","atom1","atom2","maxDistance","allAtomsPaths","oneAtomPaths","nextIndexes","nextAtoms","currentIndexes","currentAtoms","previousPath","conn","connectedAtom","getAllAtomsPaths","toMolfile","version","toMolfileV3","getMolecule","fromMolecule","topicMolecule","canonizedDiaIDs","canonizedHoseCodes","getMoleculeWithH","xMolecule","xAtomNumber","getXMolecule","diaIDs","finalRanks","getDiaIDsObject","groupDiastereotopicAtomIDsAsObject","hoseCodes","diaMol","heterotopicSymmetryRanks","diaID","tempMolecule","getCanonizedDiaIDs","getCanonizedHoseCodes","distanceMatrix","diaIDsAndInfo","newDiaIDs","newDiaID","attachedHydrogensIDCodes","attachedHydrogens","nbAttachedHydrogens","atomLabel","nbEquivalentAtoms","heavyAtom","atomMapNo","hydrogenDiaID","getDiaIDsAndInfo","symmetryRanks","getHeterotopicSymmetryRanks","getFinalRanks","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","getHoseCodesForAtoms","getHoseCodesForPath","maxLength","originalFrom","originalTo","originalAtoms","torsion","getPath","calculateTorsion","tag1","tag2","atomMap","getUnit","unit","markMonomer","addBond","firstAtomicNo","secondAtomicNo","checkEntity","nbR1","nbR2","r1AtomicNo","r2AtomicNo","getR1R2AtomicNo","r1Count","r2Count","cPseudoAtomsRGroups","appendMolecule","core","rGroups","newSmiles","smiles","currentMol","fromSmiles","toSmiles","combinedSmiles","molfile","MoleculeProperties","nbHAcceptor","acceptorCount","nbHDonor","donorCount","logP","logS","PSA","polarSurfaceArea","nbRottable","rotatableBondCount","nbStereoCenter","stereoCenterCount","getMolecularFormula","formula","relativeWeight","updateRPosition","currentChar","currentSubstring","getCamelCase","parseColumnbProperties","columnProperties","currentColumnName","columnPropery","related","specialType","valueEhnhancer","header","rawEntry","label","atomMapping","idcoordinates2D","parseDefault","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","isAromatic","isAllylic","isAllylicAtom","isStereoCenter","isAtomStereoCenter","isRing","isRingAtom","isSmallRing","isSmallRingAtom","isStabilized","isStabilizedAtom","bond","bondOrder","getBondOrder","totalBonds","hydrogenOnAtomicNo","labileHydrogen","getFragments","allAtoms","getFragmentMF","toMFString","atomSorter","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","answer","nbCorrectRanks","nbAnswerRanks","checkSymmetry","hint","hash","getHash","mfCorrect","mfAnswer","unsaturationCorrect","unsaturationAnswer","getNoStereoIDCode","getTautomerIDCode","CanonizerUtil","TAUTOMER","NOSTEREO","h1","h2","ch","codePointAt","imul","toxicityPredictor","druglikenessPredictor","appendAtomPart","getPathAndTorsion","module","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","fromMolfile","smarts","SmilesParser","smartsMode","parseMolecule","defaultCSVOptions","__defProp","__name","configurable","isObject","segs","joinChar","splitChar","isValidObject","getValue","pathIsArray","pathIsString","separator","hasProp","index_default","sdfPart","currentLabels","isNumeric","keep","exclude","include","modifiers","modifiedValue","appendSDF","moleculesDB","sdf","mixedEOL","entriesBoundaries","nextMatch","getEntriesBoundaries","currentLabel","always","statistics","statistic","pushEntry","updateStatistics","stat","noWait","resolve","setImmediate","AbortError","getQuery","query","format","moleculeCreators","search","exactSearch","exactSearchNoStereo","queryMW","getMW","searchResult","substructureSearchBegin","queryIndex","getIndex","searcher","db","substructureSearchEnd","substructureSearch","substructureSearchOR","similaritySearch","processResult","searchAsync","controller","shouldAbort","abortEventListener","signal","addEventListener","performance","subStructureSearchAsync","queryIDCode","stripStereoInformation","candidateMolecule","queries","queryIdCode","SSSearcherWithIndex","getSimilarityTanimoto","flattenResult","keepMolecule","rAtomicNumber","getRAtomicNumber","cPseudoAtomR","checkIfExistsOrAddInfo","processedMolecules","moleculeInfoCallback","asReagent","asProduct","exists","applyOneReactantReactions","tree","reactions","currentDepth","maxDepth","maxCurrentDepth","reactants","reactant","todoNextDepth","reaction","stats","limitReactions","reactor","Reactor","oclReaction","setReactant","oneReactionProducts","getProducts","oneReactionProduct","reactionProduct","needToBeCharged","reactionWithoutOCL","oneReaction","children","getFilteredTrees","nodesToKeep","getNodes","parentMap","getParentMap","currentNode","getValidChildren","trees","nodes","validNodes","node","validChildren","child","appendLeavesSS","leaves","currentBranch","getNodesSS","Reactions","skipProcessed","moleculeInfo","appendHead","moleculesOrIDCodes","getLeaves","getValidNodes","getFilteredReactions","filteredReactions","clearAsFromProcessedMolecules","newReactions","rxnCode","ReactionEncoder","appendOCLReaction","todoCurrentLevel","nexts","todo","flat","newNodes","computeProperties","keepEmptyMolecules","dataStatistics","calculatedStatistics","clear","nbMolecules","nbData","calculated","isNumber","appendEntries","idCodePath","indexPath","coordinatesPath","mwPath","smilesPath","molfilePath","coordinates","appendCSV","csv","Papa","firstElement","moleculeCreator","moleculeField","lowerField","appendSmilesList","smilesArray","oneSmiles","moleculeIDCode","getMoleculeIDCode","molecularFormula","absoluteWeight","pushMoleculeInfo","getDB","appendColor","dataLabel","propertyLabel","minHue","maxHue","saturation","lightness","colorLabel","datum","definedValues","coreSmiles","complexity","originalSmiles","getCore","getRGroups","rGroup","getComplexity","generate","getAlphaGamma","polymer","addMolecule","bonds","getAllBonds","order","getBondType","isRingBond","brokenMolecule","markBondForDeletion","deleteMarkedAtomsAndBonds","fragmentMap","nbFragments","getFragmentNumbers","includeAtom","addAtom","currentSphere","fromMolfileWithAtomMap","diaIDsArray","source","destination","atomLabels","atomicNumbers","calculateDiastereotopicIDs","newMolfile","newMolfileWithH","hose","molfileWithH","moleculeWithHydrogens","fromF","toF","fromMoleculeF","toMoleculeF","toMolecule","fromFinalRanks","toFinalRanks","toFrom","fromRank","toRank","providedHints","some","providedHint","fromLabel","toLabel","withHOSES","fromAtomicNumber","toAtomicNumber","atomsInfo","pathLengthMatrix","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","allShortestPaths","carbonyl","carbonOrHydrogen","neighbour","neighbourAtom","neighbourBond","cn","hydroxyl","amine","getParts","headers","rawEntries","parseData","rawData","improveParts","prefix","heavyAtomHydrogen","svg","hydrogenInfo","groupedDiaIDs","toSVG","diastereotopic","highlight","extendedIDs","_atoms","fragmentAcyclicBonds","calculateHoseCodes","parentIDCode","openchemlib_utils_1","removeAtomCustomLabels","cleavedBonds","getRingsInfo_1","getRingsInfo","ringSet","getRingSet","ringBonds","nbRingForBonds","getSize","getRingBonds","bondIndex","ringIndex","nbRings","getFragmentableRings","ringsInfo","getRingsInfo_js_1","fragmentableRingBonds","ring","second","end","getFragmentableRings_js_1","fragmentationResults","rLinks","acyclic","full","fragmentType","acyclicBonds","NP","copyMolecule","Dt","Ht","getIDCodeAndCoordinates","navigator","clipboard","writeText","pasteMolecule","Lu","zA","xP","padStart","R8","Xe","globalThis","devicePixelRatio","$n","ctx","textAlign","textBaseline","currentFontSize","currentFont","font","currentColor","currentLineWidth","canvasCache","clearRect","Vt","Zt","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","H1","Ot","D1","R1","p1","createElement","N1","imageData","getContext","globalAlpha","putImageData","isDarkBackground","GP","canvasElement","changeListener","drawContext","getCanvasWidth","getCanvasHeight","getDrawContext","onChange","what","isUserEvent","getClipboardHandler","yu","CSSStyleSheet","replaceSync","S8","button","fireMouseEvent","offsetX","offsetY","shiftKey","ctrlKey","altKey","pointerId","MOUSE_EVENT_RELEASED","MOUSE_EVENT_PRESSED","MOUSE_EVENT_CLICKED","detail","MOUSE_EVENT_ENTERED","MOUSE_EVENT_EXITED","MOUSE_EVENT_DRAGGED","MOUSE_EVENT_MOVED","removeEventListener","OP","setDimensions","style","su","H8","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","Se","VA","dataView","DataView","getWidth","getHeight","getRGB","getInt32","setInt32","toDataURL","KP","dialogRoot","JavaEditorArea","register","javaUiHelper","cursorManager","grabFocus","focus","preventScroll","setCursor","showHelpDialog","createImage","ImageData","createImageFromBase64","Uu","Uint8ClampedArray","createDialog","runLater","requestAnimationFrame","bu","readOnly","initialMode","initialFragment","dataset","openchemlibCanvasEditor","alignItems","backgroundColor","touchAction","userSelect","webkitUserSelect","attachShadow","adoptedStyleSheets","de","I0","o0","tabIndex","outline","Ae","Mt","MODE_REACTION","MODE_MULTIPLE_FRAGMENTS","A2","setReaction","setEditorArea","He","Pe","repaint","v1","ResizeObserver","contentRect","observe","B0","vn","yt","platform","metaKey","KEY_CTRL","KEY_ALT","KEY_SHIFT","KEY_DELETE","KEY_HELP","KEY_ESCAPE","KEY_ENTER","n2","fireKeyEvent","KEY_EVENT_PRESSED","KEY_EVENT_RELEASED","clipboardData","fromText","addPastedOrDropped","wu","editorArea","toolbar","uiHelper","destroy","disconnect","Fn","compatMode","clearTimeout","setInterval","clearInterval","i2","userAgent","__moduleStartupDone","jA","SP","ZD","JD","KD","FA","qA","z1","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","Y1","lt","c0","pt","V1","D0","u0","gt","Wt","W","Yn","Xn","wd","Uc","execScript","ud","u1","_0","defineProperties","G","sfb","nfb","vd","xD","A5","w1","E5","G5","e8","$1","I5","K5","M5","L5","n8","Yt","pe","mA","vu","GD","R6","OD","S6","j1","C1","web","f5","Qt","backingJsObject","phb","Dhb","Oe","tn","veb","ifb","gfb","tfb","mfb","goog","global","Jc","Kc","Lc","yzb","Oc","_ib","Qhb","Igb","lb","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","g5","Mc","h5","i5","exec","j5","k5","l5","stack","stackTraceLimit","callee","caller","G4","Jbb","Pib","F4","r5","Nc","rjb","Nzb","s5","Mzb","gjb","X1","jjb","kjb","y5","vhb","B5","__elementTypeCategory$","C5","__elementTypeId$","O5","__java$exception","Egb","Fgb","Tzb","Gzb","Ggb","Su","Hgb","rbb","Ngb","Uib","Ohb","Rb","ihb","Vu","jhb","zhb","lhb","mhb","nhb","Tc","Xc","Yc","Vc","Wc","Chb","zu","en","HP","Ozb","vA","Ihb","java","lang","Number$impl","Jhb","Hhb","Oib","Khb","Ju","Lhb","Phb","Zc","Mhb","Thb","$c","Nhb","Uzb","ubb","FB","GB","HB","IB","ic","JB","KB","documentMode","cause","gc","ec","suppressed","fc","LB","MB","Obb","NB","OB","PB","hc","QB","RB","TB","dc","Hbb","_B","aC","bC","cC","dC","eC","zgb","Agb","d4","e4","f4","Kib","Lib","Mib","Tib","Vib","Wib","Xib","Yib","wjb","qzb","nzb","Zib","$ib","ajb","bjb","cjb","Nbb","fjb","hjb","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","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","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","ds","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","gu","Kwb","Iwb","du","Dqb","cu","au","Owb","O7","M7","ju","ku","pu","qu","uw","xu","N7","Hfb","Bu","Ffb","Zfb","Cu","Eu","Fu","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","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","I8","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","_D","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","Y3","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","l2","vK","tK","i3","uK","wK","o2","j3","b3","f2","xK","b2","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","mM","jM","uN","vN","wN","HL","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","e2","g2","OM","RM","WM","UM","SM","TM","VM","XM","Y2","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","getNextConformerAsMolecule","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","_minimise","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","getHoseCodes","getIDCoordinates","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","isFragment","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","ensureCoordinates","TZ","UZ","VZ","keepAbsoluteCoordinates","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","clearAll","getGenericEditorArea","getMode","getReaction","moleculeChanged","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","Y4","S4","R4","T4","Peb","Ceb","Deb","Heb","l6","afb","Beb","n6","T5","o6","XD","p6","q6","r6","s6","t6","u6","v6","w6","x6","Eeb","y6","z6","A6","Ku","fromCodePoint","Ou","ghb","fhb","Z4","_4","$4","c5","a5","b5","Tab","S5","R5","Y5","Z5","X5","ygb","U5","b6","_5","F6","B6","V5","W5","D6","$5","a6","k6","d6","e6","c6","j6","g6","h6","f6","i6","E6","C6","Geb","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","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","EDITOR_EVENT_HIGHLIGHT_ATOM_CHANGED","EDITOR_EVENT_HIGHLIGHT_BOND_CHANGED","EDITOR_EVENT_MOLECULE_CHANGED","EDITOR_EVENT_SELECTION_CHANGED","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_COORDS","INCLUDE_DEFAULT","INCLUDE_DRAWING_OBJECTS","INCLUDE_MAPPING","INCLUDE_RXN_CODE_ONLY","MOLECULE_DELIMITER","OBJECT_DELIMITER","PRODUCT_IDENTIFIER","RETAIN_REACTANT_AND_PRODUCT_ORDER","encode","_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","getHoseCodesFromDiastereotopicID","$isInstance","$implements__java_io_Serializable","$implements__java_lang_CharSequence","$implements__java_lang_Cloneable","$implements__java_lang_Comparable","copyOf","getIdentityHashCode","getNextHash","getObjectIdentityHashCode","toDoubleFromUnsignedInt","$gwt","__errFn","__moduleName","__moduleBase","__softPermutationId","__computePropValue","permProps","GenericEditorArea","GenericEditorToolbar","GenericUIHelper","Reaction","setOnChangeListener","removeOnChangeListener","isDestroyed","CanvasEditor","registerCustomElement","customElements","HTMLElement","static","freeze","MOLECULE","REACTION","idcode","MODE_MOLECULE","readonly","setAttribute","removeAttribute","requestIdleCallback","MODE","CustomEvent","bubbles","dispatchEvent","connectedCallback","getAttribute","hasAttribute","disconnectedCallback","adoptedCallback","attributeChangedCallback","define","head","prepend","ConformerGenerator","ForceFieldMMFF94","maxIts","gradTol","funcTol","minimise","Resources","TextEncoder","registerFromUrl","import","href","fetch","fromEntries","process","getBuiltinModule","registerFromNodejs","readFileSync","_2","$2","Canonizer","RingCollection","SDFileParser","so","Transformer","Util","bo","defaultDatabase","doi","section","description","isbn","software","modes","dwar","parseDwar","defaultDatabase_js_1","minDepth","oclMolecule","minIonizations","maxIonizations","minReactions","maxReactions","openchemlib_1","observedMonoisotopicMass","getDatabase_1","getDatabase","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","ReactNoopUpdateQueue","isMounted","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","emptyObject","Component","context","updater","refs","ComponentDummy","PureComponent","isReactComponent","setState","partialState","forceUpdate","pureComponentPrototype","isPureReactComponent","isArrayImpl","ReactSharedInternals","hasOwnProperty","ReactElement","owner","isValidElement","userProvidedKeyEscapeRegex","getElementKey","escaperLookup","noop$1","mapIntoArray","escapedPrefix","nameSoFar","oldElement","newKey","invokeCallback","_init","_payload","maybeIterable","nextNamePrefix","thenable","fulfilledValue","resolveThenable","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","getCrossOriginStringAs","reactDom_production","__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE","createPortal","container","nodeType","containerInfo","implementation","createPortal$1","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","findCurrentHostFiberImpl","sibling","REACT_LEGACY_ELEMENT_TYPE","REACT_PROVIDER_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_ACTIVITY_TYPE","REACT_MEMO_CACHE_SENTINEL","getIteratorFn","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","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","markSpawnedDeferredLane","spawnedLane","entangledLanes","spawnedLaneIndex","entanglements","markRootEntangled","rootEntangledLanes","index$6","getBumpedLaneForHydrationByLane","lanesToEventPriority","resolveUpdatePriority","updatePriority","getEventPriority","randomKey","internalInstanceKey","internalPropsKey","internalContainerInstanceKey","internalEventHandlersKey","internalEventHandlerListenersKey","internalEventHandlesSetKey","internalRootNodeResourcesKey","internalHoistableMarker","detachDeletedInstance","getClosestInstanceFromNode","targetNode","targetInst","parentNode","getParentSuspenseInstance","getInstanceFromNode","getNodeFromInstance","inst","stateNode","getResourcesFromRoot","resources","hoistableStyles","hoistableScripts","markNodeAsHoistable","allNativeEvents","registrationNameDependencies","registerTwoPhaseEvent","registrationName","dependencies","registerDirectEvent","suffix","VALID_ATTRIBUTE_NAME_REGEX","illegalAttributeNameCache","validatedAttributeNameCache","setValueForAttribute","attributeName","prefix$8","setValueForKnownAttribute","setValueForNamespacedAttribute","namespace","setAttributeNS","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","track","_valueTracker","valueField","descriptor","enumerable","setValue","stopTracking","trackValueOnNode","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","lastMovementX","lastMovementY","lastMouseEvent","EventInterface","eventPhase","timeStamp","isTrusted","SyntheticEvent","UIEventInterface","view","SyntheticUIEvent","MouseEventInterface","screenX","screenY","clientX","clientY","pageX","pageY","getModifierState","getEventModifierState","buttons","relatedTarget","fromElement","toElement","movementX","movementY","SyntheticMouseEvent","SyntheticDragEvent","dataTransfer","SyntheticFocusEvent","SyntheticAnimationEvent","animationName","elapsedTime","pseudoElement","SyntheticClipboardEvent","SyntheticCompositionEvent","normalizeKey","Esc","Spacebar","Left","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","translateToKey","modifierKeyToProp","Alt","Control","Meta","Shift","modifierStateGetter","keyArg","SyntheticKeyboardEvent","location","locale","which","SyntheticPointerEvent","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","SyntheticTouchEvent","touches","targetTouches","changedTouches","SyntheticTransitionEvent","propertyName","SyntheticWheelEvent","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","SyntheticToggleEvent","newState","oldState","END_KEYCODES","canUseCompositionEvent","canUseTextInputEvent","useFallbackCompositionData","SPACEBAR_CHAR","hasSpaceKeypress","isFallbackCompositionEnd","domEventName","getDataFromCustomEvent","isComposing","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","anchorNode","getSelection","anchorOffset","focusNode","focusOffset","makePrefixMap","styleProp","eventName","prefixes","vendorPrefixes","animationend","animationiteration","animationstart","transitionrun","transitionstart","transitioncancel","transitionend","prefixedEventNames","getVendorPrefixedEventName","prefixMap","animation","transition","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","hiddenUpdates","nestedUpdateCount","rootWithNestedUpdates","emptyContextObject","FiberNode","pendingProps","elementType","refCleanup","updateQueue","memoizedProps","subtreeFlags","deletions","createFiberImplClass","shouldConstruct","createWorkInProgress","firstContext","resetWorkInProgress","createFiberFromTypeAndProps","fiberTag","hostContext","itemProp","rel","onLoad","onError","src","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","pingEngtangledActionScope","prevOnStartTransitionFinish","entangledListeners","requestTransitionLane","entangleAsyncAction","resumedCache","peekCacheFromPool","cacheResumedFromPreviousRender","workInProgressRoot","pooledCache","pushTransition","offscreenWorkInProgress","prevCachePool","pool","getSuspendedCache","cacheFromPool","SuspenseException","SuspenseyCommitException","SuspenseActionException","noopSuspenseyCommitThenable","isThenableResolved","noop$3","trackUsedThenable","thenableState","checkIfUseWrappedInAsyncCatch","shellSuspendCounter","fulfilledThenable","rejectedThenable","suspendedThenable","getSuspendedThenable","rejectedReason","hasForceUpdate","initializeUpdateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","hiddenCallbacks","callbacks","cloneUpdateQueue","createUpdate","enqueueUpdate","executionContext","entangleTransitions","queueLanes","enqueueCapturedUpdate","capturedUpdate","newLast","didReadFromEntangledAsyncAction","suspendIfUpdateReadFromEntangledAsyncAction","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","basicStateReducer","updateReducer","updateReducerImpl","lastRenderedReducer","baseFirst","newBaseQueueFirst","newBaseQueueLast","didReadFromEntangledAsyncAction$32","revertLane","hasEagerState","eagerState","lastRenderedState","dispatch","rerenderReducer","lastRenderPhaseUpdate","updateSyncExternalStore","isHydrating$jscomp$0","snapshotChanged","updateEffectImpl","subscribeToStore","pushSimpleEffect","resource","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","updateActionStateImpl","stateHook","currentStateHook","actionStateActionEffect","rerenderActionState","updateRef","mountEffectImpl","fiberFlags","hookFlags","mountEffect","updateEffect","updateInsertionEffect","updateLayoutEffect","imperativeHandleEffect","updateImperativeHandle","mountDebugValue","updateCallback","updateMemo","nextCreate","mountDeferredValueImpl","requestDeferredLane","updateDeferredValueImpl","prevValue","pendingState","finishedState","previousPriority","thenableWithOverride","dispatchSetStateInternal","requestUpdateLane","noop$2","startHostTransition","formFiber","formData","ensureFormComponentIsStateful","requestFormReset$1","existingStateHook","initialResetState","updateId","updateRefresh","refreshCache","provider","root$41","dispatchReducerAction","enqueueRenderPhaseUpdate","entangleTransitionUpdate","currentState","throwIfDuringRender","identifierPrefix","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","reconcileChildFibersImpl","newChildren","resultingFirstChild","previousNewFiber","nextOldFiber","delete","reconcileChildrenArray","reconcileChildrenIterator","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","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","JSCompiler_temp$jscomp$0","nextInstance","overflow","fallback","mountWorkInProgressOffscreenFiber","mountSuspensePrimaryChildren","retrySuspenseComponentWithoutHydrating","digest","dgst","renderDidSuspendDelayIfPossible","primaryChildren","offscreenProps","_pendingMarkers","_retryCache","_transitions","scheduleSuspenseWorkOnFiber","initSuspenseListRenderState","isBackwards","tail","lastContentRow","tailMode","renderState","rendering","renderingStartTime","updateSuspenseListComponent","beginWork","didSuspendBefore","attemptEarlyBailoutIfNoScheduledUpdate","lazyComponent","isDehydrated","getResource","getOwnerDocumentFromRootContainer","setInitialProperties","resolveSingletonInstance","anyProps","canHydrateInstance","canHydrateTextInstance","pooledCacheLanes","markUpdate","preloadResourceAndSuspendIfNeeded","loading","preloadResource","scheduleRetryEffect","retryQueue","workInProgressSuspendedRetryLanes","cutOffTailIfNeeded","hasRenderedATailFallback","lastTailNode","lastTailNode$113","bubbleProperties","completedWork","didBailout","newChildLanes","child$114","completeWork","pendingContext","createElementNS","removeChild","appendChild","autoFocus","createTextNode","cache$127","listenToAllSupportedEvents","workInProgressRootExitStatus","workInProgressRootRenderTargetTime","unwindWork","unwindInterruptedWork","interruptedWork","commitHookEffectListMount","finishedWork","firstEffect","captureCommitPhaseError","commitHookEffectListUnmount","nearestMountedAncestor$jscomp$0","nearestMountedAncestor","destroy_","commitClassCallbacks","safelyCallComponentWillUnmount","componentWillUnmount","safelyAttachRef","instanceToUse","safelyDetachRef","error$143","commitHostMount","srcSet","srcset","commitHostUpdate","domElement","lastProps","propKey","lastProp","setProp","propKey$205","propKey$221","propKey$226","propKey$231","setPropOnCustomElement","propKey$236","updateProperties","isHostParent","getHostSibling","insertOrAppendPlacementNodeIntoContainer","insertBefore","_reactRootContainer","insertOrAppendPlacementNode","commitHostSingletonAcquisition","singleton","attributes","removeAttributeNode","offscreenSubtreeIsHidden","offscreenSubtreeWasHidden","needsFormReset","PossiblyWeakSet","WeakSet","nextEffect","commitLayoutEffectOnFiber","finishedRoot","recursivelyTraverseLayoutEffects","__reactInternalSnapshotBeforeUpdate","error$142","commitSuspenseHydrationCallbacks","_reactRetry","registerSuspenseInstanceRetry","retryDehydratedSuspenseBoundary","prevOffscreenSubtreeWasHidden","recursivelyTraverseReappearLayoutEffects","detachFiberAfterEffects","hostParent","hostParentIsContainer","recursivelyTraverseDeletionEffects","commitDeletionEffectsOnFiber","deletedFiber","onCommitFiberUnmount","prevHostParent","prevHostParentIsContainer","releaseSingletonInstance","clearSuspenseBoundary","retryIfBlockedOn","attachSuspenseRetryListeners","wakeables","retryCache","getRetryCache","wakeable","retry","resolveRetryWakeable","recursivelyTraverseMutationEffects","root$jscomp$0","parentFiber","commitMutationEffectsOnFiber","currentHoistableRoot","commitReconciliationEffects","hoistableRoot","currentResource","getElementsByTagName","querySelector","maybeNodes","getHydratableHoistableCache","httpEquiv","charSet","mountHoistable","acquireResource","tagCaches","getHoistableRoot","recursivelyResetForms","globalMostRecentFallbackTime","wasHidden","prevOffscreenSubtreeIsHidden","recursivelyTraverseDisappearLayoutEffects","hostParentFiber","parent$144","parent$146","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","suspendedState","matchMedia","getStyleKey","getStylesheetSelectorFromKey","onUnsuspend","stylesheetPropsFromRawProps","preloadPropsMap","adoptPreloadPropsForStylesheet","linkInstance","reject","stylesheets","suspendResource","previousHoistableRoot","detachAlternateSiblings","previousFiber","recursivelyTraversePassiveUnmountEffects","commitPassiveUnmountEffectsInsideOfDeletedTree_begin","commitPassiveUnmountOnFiber","recursivelyTraverseDisconnectPassiveEffects","deletedSubtreeRoot","DefaultAsyncDispatcher","getCacheForType","resourceType","cacheForType","PossiblyWeakMap","workInProgressSuspendedReason","workInProgressThrownValue","workInProgressRootDidSkipSuspendedSiblings","workInProgressRootIsPrerendering","workInProgressRootDidAttachPingListener","workInProgressRootInterleavedUpdatedLanes","workInProgressRootPingedLanes","workInProgressRootConcurrentErrors","workInProgressRootDidIncludeRecursiveRenderUpdate","workInProgressTransitions","pendingEffectsStatus","pendingEffectsRoot","pendingFinishedWork","pendingEffectsLanes","pendingEffectsRemainingLanes","pendingPassiveTransitions","pendingRecoverableErrors","suspenseHandler","cancelPendingCommit","prepareFreshStack","markRootSuspended","ensureRootIsScheduled","performWorkOnRoot","forceSync","shouldTimeSlice","expiredLanes","exitStatus","prevExecutionContext","prevDispatcher","pushDispatcher","prevAsyncDispatcher","pushAsyncDispatcher","thrownValue","throwAndUnwindWorkLoop","replaySuspendedUnitOfWork","hostFiber","completeUnitOfWork","resetWorkInProgressStack","workLoopConcurrentByScheduler","thrownValue$169","handleThrow","renderRootConcurrent","renderRootSync","renderWasConcurrent","isRenderConsistentWithExternalStores","errorRecoveryDisabledLanes","wasRootDehydrated","timeoutHandle","scheduleTimeout","commitRootWhenReady","recoverableErrors","transitions","didIncludeRenderPhaseUpdate","updatedLanes","suspendedRetryLanes","didSkipSuspendedSiblings","suspendedCommitReason","completedRenderStartTime","completedRenderEndTime","unsuspend","insertSuspendedStylesheets","commit","stylesheetTimer","waitForCommitToBeReady","commitRoot","check","didAttemptEntireTree","expirationTimes","index$4","flushSyncWorkAcrossRoots_impl","cancelTimeout","allEntangledLanes","index$2","shouldYieldForPrerendering","unitOfWork","workLoopSync","thrownValue$167","performUnitOfWork","suspendedReason","rootRenderLanes","attachPingListener","markerInstances","wrapperError","throwException","unwindUnitOfWork","skipSiblings","flushPendingEffects","finishedLanes","remainingLanes","previouslyPendingLanes","index$5","hiddenUpdatesForLane","markRootFinished","callbackNode","callbackPriority","flushPassiveEffects","eventsEnabled","_enabled","rangeCount","e$20","indexWithinAnchor","indexWithinFocus","selectionInformation","focusedElem","selectionRange","resolvedPrevProps","clearContainerSparingly","commitBeforeMutationEffects","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","scheduleMicrotask","processRootScheduleInImmediateTask","processRootScheduleInMicrotask","syncTransitionLanes","onlyLegacy","didPerformSomeWork","root$174","performSyncWorkOnRoot","currentPopstateTransitionEvent","shouldAttemptEagerTransition","scheduleTaskForRootDuringMicrotask","index$3","performWorkOnRootViaSchedulerTask","didTimeout","originalCallbackNode","workInProgressRootRenderLanes$jscomp$0","coerceFormActionProp","actionProp","createFormDataWithSubmitter","submitter","FormData","i$jscomp$inline_1528","eventName$jscomp$inline_1529","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","getNativeBeforeInputChars","getFallbackBeforeInputChars","maybeTargetInst","formAction","extractEvents$1","targetFiber","captureName","_instance2","unshift","_instance3","NORMALIZE_NEWLINES_REGEX","NORMALIZE_NULL_AND_REPLACEMENT_REGEX","normalizeMarkupForTextOrAttribute","markup","serverText","clientText","formEncType","formMethod","formTarget","encType","__html","muted","hasSrc","hasSrcSet","propValue$188","parentNamespace","dangerouslySetInnerHTML","localPromise","queueMicrotask","handleErrorInNextTick","parentInstance","suspenseInstance","possiblePreambleContribution","nextNode","nextNode$jscomp$0","targetInstance","previousSibling","rootContainerInstance","preconnectsSet","previousDispatcher","previousWasRendering","wasRendering","formInst","preconnectAs","globalDocument","preloadSelector","getScriptKey","getScriptSelectorFromKey","scripts","adoptPreloadPropsForScript","link","insertStylesheet","limitedEscapedHref","currentProps","preloadProps","styles$244","resource$245","hrefLang","rawProps","styleProps","instance$250","prior","stylesheetProps","scriptProps","keyAttribute","caches","nodeKey","precedencesByRoot","insertStylesheetIntoRoot","precedences","FiberRootNode","hydrate","incompleteTransitions","createFiberRoot","initialChildren","hydrationCallbacks","isStrictMode","transitionCallbacks","getContextForSubtree","parentComponent","updateContainerImpl","markRetryLaneImpl","markRetryLaneIfNotHydrated","attemptContinuousHydration","blockedOn","findInstanceBlockingEvent","return_targetInst","clearIfContinuousEvent","queuedFocus","accumulateOrCreateContinuousQueuedReplayableEvent","queuedDrag","queuedMouse","queuedPointers","queuedPointerCaptures","queueIfContinuousEvent","discreteReplayableEvents","findInstanceBlockingTarget","hasScheduledReplayAttempt","queuedExplicitHydrationTargets","existingQueuedEvent","targetContainers","attemptExplicitHydrationTarget","queuedTarget","priority","runWithPriority","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","parentA","parentB","didFindChild","child$0","findCurrentFiberUsingSlowPath","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","MultilineText","verticalPosition","firstDX","_jsx","_Fragment","Text","horizontalPosition","textAnchor","_jsxs","fontSize","Arrow","headInflectionPoint","refX","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","getPlus","getSVGViewBox","maxWidth","maxHeight","getMoleculeStyle","svgs","svgTag","styleString","styleArray","hasOwn","kebabCaseProperty","styleObjectToString","styleRectange","addStyleToSVG","currentWidth","shiftX","shiftY","shiftedSVG","joinSVGs","topLabel","getTopLabel","getBoxStyle","minSize","taxonomy","tempElement","visibility","getStringSize","textWith","positionX","dominantBaseline","fontFamily","getTaxonomy","fontStyle","nbTaxonomies","getNbTaxonomies","accuracy","maxIntensity","react_tree_svg_1","moleculeRenderer","getPeakInRange","rendererOptions","massAccuracy","fragmentation","cyclic","groupResults","allFragments","mass_fragmentation_1","oneFragment","appendResults","groupFragmentationResults","sortedResults","groupedResults","currentResult","lastFragment","ocl","fivePrimeTerminal","threePrimeTerminal","circular","fivePrime","parenthesisCounter","nucleotideType","desoxyNucleotides","oxyNucleotides","complementary","alcohol","monophosphate","diphosphate","triphosphate","furanThreeTerm","nucleotide","addFiveTerm","fiveTerm","furanThreeTerm_js_1","baseLoss_1","baseLoss","mfLosses","addFiveTermBaseLoss","abcdBaseLoss","loss","baseLoss_js_1","addInternalTerm_1","addInternalTerm","ter3","ter5","abw","aby","threeTerm","addThreeTermBaseLoss","wxyzBaseLoss","generateFragments_1","generateFragments","dh2o","zch2","mfparts","addFiveTermBaseLoss_1","addThreeTerm","addThreeTermBaseLoss_1","addFiveTerm_1","addThreeTerm_1","sequencesString","mfsArray","sequences","nucleotide_1","fragmentsArray","combined","aminoAcids","aa1","pKaC","pKaN","pKa","aa3","isoElectricPoint","aas","calculateForPh","calculateIEP","combine","calculateChart","yAbs","iep","white","aminoAcids_1","aaObject","acid","basic","currentAA","allowOneNeutralLoss","allowNeutralLoss","getAA_1","getAA","chargePeptide_1","chargePeptide","chargeOnePeptide","firstAA","lastAA","sequenceToMF_1","sequenceToMF","newMF","tmpmf","isOneLetterCode","nTerminal","cTerminal","convertAA1To3","newmf","aa1To3","addNTerm","nTerm","addITerm","iTerm","ya","addCTerm","cTerm","maxInternal","minInternal","digestPeptide_1","digestPeptide","enzyme","minMissed","maxMissed","minResidue","maxResidue","regexp","getRegexp","nbResidue","__esModule","__createBinding","splitPeptide_js_1","splitPeptide","IEP","getColorForIEP","calculateCharge","__importStar","__exportStar","fragmentPeptide_1","digestion","protonation","protonationPH","peptide_1","digests","originalMFsArray","hasLinked","unlinked","fragmentPeptide","mfsArrayLinked","mf_generator_1","generateMFs","mfsArrayUnlinked","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","loadCommercials_1","loadCommercials","loadingPromises","fetchArrayBuffer_1","fetchArrayBuffer","jsZip","jszip_1","zip","__importDefault","mfFromGoogleSheet","urlReferences","fetchText_js_1","fetchText","papaparse_1","tsv","tsvReferences","formulas","references","referencesArray","modif","infoField","infoFields","ESI","MALDI","toMF","loadGoogleSheet_1","loadGoogleSheet","refUUID","uuid","refURL","mf_from_google_sheet_1","loadKnapSack_1","loadKnapSack","fileData","emdb","databases","generalMatcher","flattenResults","searchMSEM","msem","SpectrumGenerator","peakWidthFct","maxPeakHeight","shapeGenerator","assertNumber","assertInteger","addPeaks","addPeak","xPosition","peakFWHM","peakWidth","peakShapeOptions","shapeOptions","widthLeft","widthRight","firstValue","firstPoint","lastPoint","addBaseline","baselineFct","addNoise","noise","getSpectrum","minPeakHeight","axis2D","peakCoordinates","convertWidthToFWHM","widthData","Spectrum2DGenerator","calculeIntervals","yPosition","xIndex","yIndex","minMaxZ","minZ","maxZ","generatorOptions","peakOptions","addPeaksOptions","joinX_1","joinX","sortX","entryA","entryB","composition","maxLines","sortY","calculateComposition","topY","move","power_1","square","Distribution_1","Distribution","closestPointX_js_1","joinX_js_1","multiply_js_1","power_js_1","getEmptyCache","emptyCache","multiplyY","setArray","ySorted","xSorted","relativeValue","distCopy","maxToOne","closestPointX","getDerivedCompositionInfo","shortComposition","shortLabel","isotopeLabel","IsotopicDistribution_1","IsotopicDistribution","spectrum_generator_1","getDerivedCompositionInfo_1","MINIMAL_FWHM","confidence","partOriginal","cachedDistribution","totalDistribution","newDistribution","fromX","toX","isotopicDistribution","absoluteChargeOrOne","deltaNeutrons","finalDistribution","sumBefore","getCSV","yLabel","getMaxY","newPoint","numberXDecimals","numberYDecimals","getSumY","getXY","flatEntries","auto","Comparator","isotopic_distribution_1","minSimilarity","experimental","theoretical","experimentalInfo","thereoticalInfo","quantity","_ref","quickSelectMedian","TheilSenRegression","slopes","medianSlope","cuts","theilSen","massShifts","similarities","shifts","ml_regression_theil_sen_1","shiftsPPM","EMDB","ms_spectrum_1","fromArray_js_1","fromMolecules_js_1","fromNucleicSequence_js_1","search_js_1","searchMSEM_js_1","searchSimilarity_js_1","require$$12","require$$13","require$$14","normed","databaseName","forceReload","loadContaminants","loadGoogleSheet_js_1","loadTest","fromArray","loadNeutralTest","maxC","replaceOrAppend","fromRange_js_1","fromRange","fromPeptidicSequence","fromPeptidicSequence_js_1","appendFragmentsInfo_js_1","fromNucleicSequence","nbEntries","preprocessEARanges_1","preprocessEARanges","targetEA","minCount","mfFromEA","maxElementError","maxTotalError","mfWhile","totalError","sumComposition","relativeComposition","filteredMFs","mfFor","nbCompositionAtoms","atomicRatio","absError","mfAtomicComposition","getMFAtomicComposition","atomicRatios","acc","allDBRefs","appendAllDBRefs","$ref","$id","appendURLs_1","appendURLs","collections","force","appendAllDBRefs_js_1","dbRef","unknowns","searchParams","URLSearchParams","postFetchJSON","includeDBRefs","excludedCollections","baseURL","groupsByCollection","collection","addDataForOneCollection","allSettled","postFetchJSON_js_1","_id","activeOrNatural","activity","activities","activityEntry","assay","targetTaxonomies","normalizedActivity","route","fetchActiveOrNatural","includeDBRefs_js_1","ensureArray","pubmeds","patents","taxonomies","appendURLs_js_1","normalizeActivities_js_1","normalizeActivities","getAllowedEMs_1","getAllowedEMs","allowedEMs","searchWithIonizations_1","searchWithIonizations","realURL","parseMasses_js_1","parseMasses","getAllowedEMs_js_1","realMass","fetchJSON_js_1","fetchJSON","activesOrNaturals","prepareSearchParams","noStereoTautomerID","kwTaxonomies","kwActiveAgainst","kwBioassays","kwMeshTerms","kwTitles","minNbMassSpectra","searchWithIonizations_js_1","nbMassSpectra","nbPubmeds","nbPatents","activesOrNaturalsByMF","activesOrNaturals_js_1","grouped","nbNaturals","nbBioactives","naturalProduct","bioactive","groupedArray","titles","getTitles","searchMasses","modifications","modification","massShift","massSpectra_1","massSpectra","uniqueMolecules","routes","defaultRoutes","appendAndFilterSimilarity","unique","uniqueMol","searchMasses_js_1","mfsFromEMs","compoundsURL","realCompoundsURL","searchParamsCompounds","pubmedID","searchInSilicoSpectraByMF","msComparator","MSComparator","searchInSilicoSpectraByMasses","technique","activesOrNaturalsByMF_js_1","compoundsFromMF_js_1","massSpectra_js_1","mfsFromEMs_js_1","pubmedCompounds_js_1","searchInSilicoSpectraByMF_js_1","searchInSilicoSpectraByMasses_js_1","compoundsFromMF","activeOrNaturalDetails_js_1","activeOrNaturalDetails","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","baseId","lastId","nano","BigInt","milli","MAX_ARGUMENT_FOR_STACK","safeArrayPush","arr","newArr","newArrLength","getNanosecondTimeViaPerformance","formatNanoseconds","getNanosecondsTime","WorkerGlobalScope","release","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","wait","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","template","replaceArgs","rawWidth","replacement","sprintf","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","runMultipleHook","docsOrIds","runAfterSearch","language","runBeforeSearch","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","syncBoundedLevenshtein","isBounded","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","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","sinSigma","cosSigma","sigma","sinAlpha","cos2Alpha","cos2SigmaM","iterationLimit","sinLambda","cosLambda","uSquared","BoolNode","true","false","bool","BM25","matchingCount","docsCount","fieldLength","averageFieldLength","VectorIndex","vectors","internalDocumentId","Float32Array","magnitude","getMagnitude","whereFiltersIDs","targetVector","targetMagnitude","similarVectors","vectorId","dotProduct","findSimilarVectors","vectorLength","insertDocumentScoreParameters","tokens","avgFieldLength","fieldLengths","frequencies","insertTokenScoreParameters","token","tokenFrequency","tokenOccurrences","removeDocumentScoreParameters","removeTokenScoreParameters","vectorIndexes","searchableProperties","searchablePropertiesWithTypes","schemaType","tokenizer","insertVector","insertScalar","avlRebalanceThreshold","tokenize","insertScalarBuilder","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","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","unsortableProperties","ensureOrderedDocsAreDeletedByProperty","ensureIsSorted","ensurePropertyIsSorted","stringSort","localeCompare","getLocale","numberSort","booleanSort","predicate","orderedDocsLength","sortBy","docIds","isDesc","indexOfA","indexOfB","isAIndexed","isBIndexed","getSortableProperties","getSortablePropertiesWithTypes","ensureOrderedDocsAreDeleted","createSorter","CHARCODE_REPLACE_MAPPING","replaceChar","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","stringCharCode","replaceDiacritics","tokenizeSkipProperties","splitRule","trimTokens","allowDuplicates","createTokenizer","stemming","validateComponents","components","defaultComponents","rawKey","documentsStore","skipHooks","errorProperty","beforeInsert","afterInsert","indexableProperties","indexablePropertiesWithTypes","indexableValues","validateDocumentProperty","sorting","sortableValues","indexAndSortDocument","innerInsertAsync","indexAndSortDocumentSync","innerInsertSync","ENUM_TYPE","STRING_NUMBER_TYPE","actualType","innerInsertMultipleAsync","batchSize","processNextBatch","startIndex","batch","waitTime","processAllBatches","afterInsertMultiple","innerInsertMultipleSync","remainingTime","innerInsertMultiple","beforeRemove","afterRemove","removeAsync","removeSync","removeMultiple","beforeRemoveMultiple","afterRemoveMultiple","docIdsForHooks","_removeMultiple","removeMultipleAsync","_removeMultipleSync","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","uniqueDocsIDs","where","defaultBM25Params","applyDefault","fullTextSearch","timeStart","performSearchLogic","shouldCalculateFacets","distinctOn","includeVectors","isPreflight","preflight","uniqueDocsArray","docsWithIdAndScore","resultIDs","uniqueDocsArrayLength","idAndScore","fetchDocumentsWithDistinct","fetchDocuments","elapsed","beforeSearch","afterSearch","executeSearchAsync","innerVectorSearch","vectorIndex","searchVector","facetsResults","vectorProperty","newDoc","innerHybridSearch","fullTextIDs","maxScore","extractScore","minMaxScoreNormalization","vectorIDs","hybridWeights","textResults","vectorResults","maxTextScore","maxVectorScore","hasHybridWeights","textWeight","vectorWeight","mergedResults","textResultsLength","hybridScore","textScore","vectorScore","hybridScoreBuilder","hybridScoreValue","normalizeScore","vectorResultsLength","resultId","normalizedScore","existingRes","mergeAndRankResults","uniqueTokenScores","timeEnd","returningResults","hybridSearch","fullDoc","beforeUpdate","afterUpdate","newId","updateAsync","updateSync","updateMultiple","beforeUpdateMultiple","afterUpdateMultiple","beforeInsertMultiple","docsLength","newIds","updateMultipleAsync","updateMultipleSync","kInsertions","kRemovals","bytes","decimals","proxy","abortController","lastInteractionParams","chatModel","conversationID","messages","initPromise","initialMessages","generateRandomID","ask","askStream","fetchAnswer","abortAnswer","triggerStateChange","getMessages","clearSession","regenerateLast","role","interactionId","sources","translatedQuery","errorMessage","stateIdx","addEmptyAssistantMessage","chatStream","model","findLast","onStateChange","getPlugin","pluginExtras","systemPrompt","pluginParams","chat","getComponents","pluginComponents","internalDocumentStore","beforeUpsert","afterUpsert","beforeUpsertMultiple","afterUpsertMultiple","afterCreate","runAfterCreate","existingDoc","upsertAsync","upsertSync","docsToInsert","docsToUpdate","idsToUpdate","updateResults","insertResults","upsertMultipleAsync","upsertMultipleSync","getActivitiesDB_1","getActivitiesDB","queryFields","activitiesDB","orama_1","getPatentsDB_1","abstractsLimit","patentsDB","abstract","nbCompounds","patent","lastCallback","getPubmedsDB_1","pubmedsDB","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","boostFields","searchPubmedsDB_1","searchPubmedsDB","searchTaxonomiesDB_1","searchTaxonomiesDB","taxonomiesDB","currentTaxonomy","taxonomiesDocument","summarizeEmptyTerms_1","summarizeEmptyTerms","patentsMaxNbEntries","nbCompoundsEntryA","nbCompoundsEntryB","pubmedsMaxNbEntries","activitiesMaxNbEntries","taxonomiesMaxNbEntries","isInitialized","summarize","creatingDB","createDB","taxonomyRanks","field","taxonomyRanks_js_1","rankLimit","taxonomyRanks_1","reachedRankLimit","branch","cleanEmptyBranches","assignSlot","residues","used","residue","paper","usedSlots","appendInternals","maxNumberLines","internals","ownKeys","appendResidues_1","appendResidues","Peptide","Nucleotide","nextChar","nextNextChar","replacements","fromBegin","getModifiedReplacement","alternatives","getUnknownReplacement","removeStartEndParenthesis","nbOver","nbUnder","unknownResidue","SYMBOLS","replaced","modifiedResidue","residueCode","alternativeOneLetter","ALTERNATIVES","addMethodNames","methods$1","_name","registerMethods","getMethodsFor","names","getPaper_browser","getPaper","svg_js_1","appendResiduesPosition_1","appendResiduesPosition","leftRightBorders","spaceBetweenResidues","xPos","xOld","getPaper_1","textWidth","getTextWidth","setPaper","nbLines","topPosition","bottomPosition","labelFontFamily","labelSize","analysisResult","numberResidues","merge","textColor","similariy","minQuantity","showInternals","minRelativeQuantity","appendRows","allResidues","appendRowsInformation","filtered","firstResidue","lastResidue","fromResidue","toResidue","firstIndex","maxNbOver","maxNbUnder","script","plain","drawInternals_1","drawInternals","spaceBetweenInternalLines","onmouseover","onmouseout","drawLabel_1","drawReplacements","drawTerminals_1","drawTerminals","linecap","drawLabel","drawSequence_1","drawSequence","sequenceSVG","analysisResults","parsing","drawOptions","appendResults_1","appendRows_1","appendInternals_1","BUFFER","IDX","HEX","getPeakWidthFct","massOptions","groupColumnsBySign","mapped","positiveRows","columnIndexInK","addUniqueKeyToColumns","cssls","XtX","XtY","Pset","choXtX","luXtX","sortedPset","sortedEset","sortCollectionSet","cols2Solve","vars","optimality","maxIter","Fset","gradientTolerance","Jset","fullSet","colIndex","notPset","fcnnls","initialisation","infeasIndex","Hset","hRowColIdx","negRowColIdx","alphaMin","minIdx","idx2zero","newParam","processFromACell","rowsMapping","columnsMapping","currentMappingID","nonZeroColumns","nonZeroRows","rowsTodo","nextRow","internalRow","createMatrixIndexes","matrices","submatrix","appendSubMatrix","blockFcnnls_1","blockFcnnls","fullMatrix","emptyRow","originalMatrix","splitMatrix_js_1","reconstructed","ml_matrix_1","ml_fcnnls_1","fcnnlsVector","partialReconstructed","mfsDeconvolution","customMFs","getPeakWidthFct_1","getCentroids","newMFs","uuid_1","addIsotopicDistributionAndCheckMF","buildCombined","blockFcnnls_js_1","relativeIntensity","absoluteQuantity","relativeQuantity","matchingScore","wClone","filteredReconstructed","getPeakWidthFct_js_1","EMDBPkg","SpectrumPkg"],"mappings":"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GAAEl3C,GAAE85I,GAAG,GAAG15H,GAAE,EAAE,GAAG,CAAC,IAAI5U,GAAE0rC,GAAEl3C,GAAE85I,GAAG,GAAG15H,GAAE,EAAE,GAAG,CAAC,IAAI5U,GAAE0rC,GAAEl3C,GAAE85I,GAAG,GAAG15H,GAAE,EAAE,GAAG,CAAC,IAAI5U,GAAE0rC,GAAEl3C,GAAE85I,GAAG,GAAG15H,GAAE,EAAE,GAAG,CAAC,IAAI5U,GAAE0rC,GAAEl3C,GAAE85I,GAAG,GAAG15H,GAAE,EAAE,GAAG,CAAC,EAAE,IAAI5U,GAAE0rC,GAAEl3C,GAAE85I,GAAG,GAAG15H,GAAE,EAAE,GAAG,CAAC,IAAI5U,GAAE0rC,GAAEl3C,GAAE85I,GAAG,GAAG15H,GAAE,EAAE,GAAG,CAAC,IAAI5U,GAAE0rC,GAAEl3C,GAAE85I,GAAG,GAAG15H,GAAE,EAAE,GAAG,CAAC,IAAI5U,GAAE0rC,GAAEl3C,GAAE85I,GAAG,GAAG15H,GAAE,EAAE,GAAG,CAAC,IAAI5U,GAAE0rC,GAAEl3C,GAAE85I,GAAG,GAAG15H,GAAE,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI5U,GAAE0rC,GAAEl3C,GAAE85I,GAAG,GAAG15H,GAAE,EAAE,GAAG,CAAC,EAAE,IAAI5U,GAAE0rC,GAAEl3C,GAAE85I,GAAG,GAAG15H,GAAE,EAAE,GAAG,CAAC,EAAE,IAAI5U,GAAE0rC,GAAEl3C,GAAE85I,GAAG,GAAG15H,GAAE,EAAE,GAAG,CAAC,EAAE,IAAI5U,GAAE0rC,GAAEl3C,GAAE85I,GAAG,GAAG15H,GAAE,EAAE,GAAG,CAAC,EAAE,IAAI5U,GAAE0rC,GAAEl3C,GAAE85I,GAAG,GAAG15H,GAAE,EAAE,GAAG,CAAC,EAAE,IAAI5U,GAAE0rC,GAAEl3C,GAAE85I,GAAG,GAAG15H,GAAE,EAAE,GAAG,CAAC,EAAE,IAAI5U,GAAE0rC,GAAEl3C,GAAE85I,GAAG,GAAG15H,GAAE,EAAE,GAAG,CAAC,EAAE,IAAI5U,GAAE0rC,GAAEl3C,GAAE85I,GAAG,GAAG15H,GAAE,EAAE,GAAG,CAAC,EAAE,IAAI5U,G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IrjH,GAAEmlH,GAAG,GAAG,YAAY,IAAInlH,GAAEmlH,GAAG,GAAG,eAAe,IAAInlH,GAAEmlH,GAAG,GAAG,eAAe,IAAInlH,GAAEmlH,GAAG,GAAG,YAAY,IAAInlH,GAAEmlH,GAAG,GAAG,eAAe,IAAInlH,GAAEmlH,GAAG,GAAG,eAAe,IAAInlH,GAAEmlH,GAAG,GAAG,eAAe,IAAInlH,GAAEmlH,GAAG,GAAG,eAAe,IAAInlH,GAAEmlH,GAAG,GAAG,eAAe,IAAInlH,GAAEmlH,GAAG,GAAG,eAAe,IAAInlH,GAAEmlH,GAAG,GAAG,eAAe,IAAInlH,GAAEmlH,GAAG,GAAG,eAAe,IAAInlH,GAAEmlH,GAAG,GAAG,eAAe,IAAInlH,GAAEmlH,GAAG,GAAG,eAAe,IAAInlH,GAAEmlH,GAAG,GAAG,eAAe,IAAInlH,GAAEmlH,GAAG,GAAG,aAAa,IAAInlH,GAAEmlH,GAAG,GAAG,eAAe,IAAInlH,GAAEmlH,GAAG,GAAG,eAAe,IAAInlH,GAAEmlH,GAAG,GAAG,eAAe,IAAInlH,GAAEmlH,GAAG,GAAG,eAAe,IAAInlH,GAAEmlH,GAAG,GAAG,eAAe,IAAInlH,GAAEmlH,GAAG,GAAG,cAAc,IAAInlH,GAAEmlH,GAAG,GAAG,eAAe,IAAInlH,GAAEmlH,GAAG,GAAG,eAAe,IAAInlH,GAAEmlH,GAAG,GAAG,eAAe,IAAInlH,GAAEmlH,GAAG,GAAG,eAAe,IAAInlH,GAAEmlH,GAAG,GAAG,eAAe,IAAInlH,GAAEmlH,GAAG,GAAG,eAAe,IAAInlH,GAAEmlH,GAAG,GAAG,eAAe,IAAInlH,GAAEmlH,GAAG,GAAG,eAAe,IAAInlH,GAAEmlH,GAAG,GAAG,eAAe,IAAInlH,GAAEmlH,GAAG,GAAG,eAAe,IAAInlH,GAAEmlH,GAAG,GAAG,eAAe,IAAInlH,GAAEmlH,GAAG,GAAG,eAAe,IAAInlH,GAAEmlH,GAAG,GAAG,eAAe,IAAInlH,GAAEmlH,GAAG,GAAG,eAAe,IAAInlH,GAAEmlH,GAAG,GAAG,eAAe,IAAInlH,GAAEmlH,GAAG,GAAG,WAAW,IAAInlH,GAAEmlH,GAAG,GAAG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