{"version":3,"sources":["webpack://nmrMetadata/webpack/universalModuleDefinition","webpack://nmrMetadata/webpack/bootstrap","webpack://nmrMetadata/./node_modules/ml-matrix/src/index.js","webpack://nmrMetadata/./node_modules/ml-sparse-matrix/src/SparseMatrix.js","webpack://nmrMetadata/./node_modules/jszip/lib/utils.js","webpack://nmrMetadata/./node_modules/ml-matrix/src/matrix.js","webpack://nmrMetadata/./node_modules/is-any-array/src/index.js","webpack://nmrMetadata/./node_modules/pako/lib/utils/common.js","webpack://nmrMetadata/./node_modules/ml-matrix/src/views/base.js","webpack://nmrMetadata/./node_modules/ml-stat/index.js","webpack://nmrMetadata/./node_modules/spectra-nmr-utilities/src/index.js","webpack://nmrMetadata/./node_modules/lodash.round/index.js","webpack://nmrMetadata/./node_modules/jszip/lib/support.js","webpack://nmrMetadata/./node_modules/brukerconverter/src/brukerconverter.js","webpack://nmrMetadata/./node_modules/ml-fft/src/index.js","webpack://nmrMetadata/./node_modules/ml-matrix/src/util.js","webpack://nmrMetadata/./node_modules/jcampconverter/src/index.js","webpack://nmrMetadata/./node_modules/ml-simple-clustering/src/index.js","webpack://nmrMetadata/./node_modules/num-sort/index.js","webpack://nmrMetadata/./node_modules/ml-gsd/src/index.js","webpack://nmrMetadata/./node_modules/ml-matrix-peaks-finder/src/index.js","webpack://nmrMetadata/./node_modules/ml-matrix/src/dc/util.js","webpack://nmrMetadata/./node_modules/jszip/lib/base64.js","webpack://nmrMetadata/./node_modules/jszip/lib/object.js","webpack://nmrMetadata/(webpack)/buildin/global.js","webpack://nmrMetadata/./node_modules/jszip/lib/compressions.js","webpack://nmrMetadata/./node_modules/pako/lib/zlib/messages.js","webpack://nmrMetadata/./node_modules/jszip/lib/nodeBuffer.js","webpack://nmrMetadata/./node_modules/ml-hclust/src/Cluster.js","webpack://nmrMetadata/./node_modules/new-array/index.js","webpack://nmrMetadata/./node_modules/binary-search/index.js","webpack://nmrMetadata/./node_modules/ml-array-utils/src/index.js","webpack://nmrMetadata/./node_modules/spectra-data/src/jcampEncoder/VectorEncoder.js","webpack://nmrMetadata/./node_modules/ml-stat/array.js","webpack://nmrMetadata/./node_modules/extend/index.js","webpack://nmrMetadata/./node_modules/ml-savitzky-golay-generalized/node_modules/ml-stat/array.js","webpack://nmrMetadata/./node_modules/ml-optimize-lorentzian/src/index.js","webpack://nmrMetadata/./node_modules/ml-matrix/src/abstractMatrix.js","webpack://nmrMetadata/./node_modules/ml-matrix/src/dc/lu.js","webpack://nmrMetadata/./node_modules/ml-matrix/src/dc/svd.js","webpack://nmrMetadata/./node_modules/ml-curve-fitting/src/algebra.js","webpack://nmrMetadata/./node_modules/buffer/index.js","webpack://nmrMetadata/./node_modules/pako/lib/zlib/adler32.js","webpack://nmrMetadata/./node_modules/pako/lib/zlib/crc32.js","webpack://nmrMetadata/./node_modules/pako/lib/utils/strings.js","webpack://nmrMetadata/./node_modules/pako/lib/zlib/zstream.js","webpack://nmrMetadata/./node_modules/pako/lib/zlib/constants.js","webpack://nmrMetadata/./node_modules/jszip/lib/signature.js","webpack://nmrMetadata/./node_modules/jszip/lib/defaults.js","webpack://nmrMetadata/./node_modules/jszip/lib/compressedObject.js","webpack://nmrMetadata/./node_modules/jszip/lib/utf8.js","webpack://nmrMetadata/./node_modules/jszip/lib/stringReader.js","webpack://nmrMetadata/./node_modules/jszip/lib/dataReader.js","webpack://nmrMetadata/./node_modules/jszip/lib/uint8ArrayReader.js","webpack://nmrMetadata/./node_modules/jszip/lib/arrayReader.js","webpack://nmrMetadata/./node_modules/ml-distance-euclidean/euclidean.js","webpack://nmrMetadata/./node_modules/ml-hclust/src/ClusterLeaf.js","webpack://nmrMetadata/./node_modules/ml-fft/src/fftlib.js","webpack://nmrMetadata/./node_modules/ml-matrix-convolution/node_modules/ml-fft/src/fftlib.js","webpack://nmrMetadata/./node_modules/median-quickselect/lib/median-quickselect.min.js","webpack://nmrMetadata/./node_modules/ml-hclust/src/index.js","webpack://nmrMetadata/./src/index.js","webpack://nmrMetadata/./node_modules/ml-array-utils/src/ArrayUtils.js","webpack://nmrMetadata/./node_modules/ml-stat/matrix.js","webpack://nmrMetadata/./node_modules/ml-array-utils/src/getEquallySpaced.js","webpack://nmrMetadata/./node_modules/ml-array-utils/src/snv.js","webpack://nmrMetadata/./node_modules/ml-gsd/src/gsd.js","webpack://nmrMetadata/./node_modules/ml-savitzky-golay-generalized/src/index.js","webpack://nmrMetadata/./node_modules/ml-savitzky-golay-generalized/node_modules/ml-stat/index.js","webpack://nmrMetadata/./node_modules/ml-savitzky-golay-generalized/node_modules/ml-stat/matrix.js","webpack://nmrMetadata/./node_modules/ml-gsd/src/post/optimizePeaks.js","webpack://nmrMetadata/./node_modules/ml-curve-fitting/src/index.js","webpack://nmrMetadata/./node_modules/ml-curve-fitting/src/LM.js","webpack://nmrMetadata/./node_modules/ml-matrix/src/symbol-species.js","webpack://nmrMetadata/./node_modules/ml-matrix/node_modules/ml-array-utils/src/index.js","webpack://nmrMetadata/./node_modules/ml-matrix/node_modules/ml-array-utils/src/ArrayUtils.js","webpack://nmrMetadata/./node_modules/ml-matrix/node_modules/ml-array-utils/src/getEquallySpaced.js","webpack://nmrMetadata/./node_modules/ml-matrix/node_modules/ml-array-utils/src/snv.js","webpack://nmrMetadata/./node_modules/ml-matrix/src/views/transpose.js","webpack://nmrMetadata/./node_modules/ml-matrix/src/views/row.js","webpack://nmrMetadata/./node_modules/ml-matrix/src/views/sub.js","webpack://nmrMetadata/./node_modules/ml-matrix/src/views/selection.js","webpack://nmrMetadata/./node_modules/ml-matrix/src/views/column.js","webpack://nmrMetadata/./node_modules/ml-matrix/src/views/flipRow.js","webpack://nmrMetadata/./node_modules/ml-matrix/src/views/flipColumn.js","webpack://nmrMetadata/./node_modules/ml-matrix/src/decompositions.js","webpack://nmrMetadata/./node_modules/ml-matrix/src/dc/evd.js","webpack://nmrMetadata/./node_modules/ml-matrix/src/dc/qr.js","webpack://nmrMetadata/./node_modules/ml-matrix/src/dc/cholesky.js","webpack://nmrMetadata/./node_modules/ml-gsd/src/post/joinBroadPeaks.js","webpack://nmrMetadata/./node_modules/ml-gsd/src/post/broadenPeaks.js","webpack://nmrMetadata/./node_modules/iobuffer/IOBuffer.js","webpack://nmrMetadata/./node_modules/jszip/lib/index.js","webpack://nmrMetadata/./node_modules/base64-js/index.js","webpack://nmrMetadata/./node_modules/ieee754/index.js","webpack://nmrMetadata/./node_modules/isarray/index.js","webpack://nmrMetadata/./node_modules/jszip/lib/flate.js","webpack://nmrMetadata/./node_modules/pako/index.js","webpack://nmrMetadata/./node_modules/pako/lib/deflate.js","webpack://nmrMetadata/./node_modules/pako/lib/zlib/deflate.js","webpack://nmrMetadata/./node_modules/pako/lib/zlib/trees.js","webpack://nmrMetadata/./node_modules/pako/lib/inflate.js","webpack://nmrMetadata/./node_modules/pako/lib/zlib/inflate.js","webpack://nmrMetadata/./node_modules/pako/lib/zlib/inffast.js","webpack://nmrMetadata/./node_modules/pako/lib/zlib/inftrees.js","webpack://nmrMetadata/./node_modules/pako/lib/zlib/gzheader.js","webpack://nmrMetadata/./node_modules/jszip/lib/crc32.js","webpack://nmrMetadata/./node_modules/jszip/lib/stringWriter.js","webpack://nmrMetadata/./node_modules/jszip/lib/uint8ArrayWriter.js","webpack://nmrMetadata/./node_modules/jszip/lib/load.js","webpack://nmrMetadata/./node_modules/jszip/lib/zipEntries.js","webpack://nmrMetadata/./node_modules/jszip/lib/nodeBufferReader.js","webpack://nmrMetadata/./node_modules/jszip/lib/zipEntry.js","webpack://nmrMetadata/./node_modules/jszip/lib/deprecatedPublicUtils.js","webpack://nmrMetadata/./node_modules/ml-hclust/src/agnes.js","webpack://nmrMetadata/./node_modules/heap/index.js","webpack://nmrMetadata/./node_modules/heap/lib/heap.js","webpack://nmrMetadata/./node_modules/util/util.js","webpack://nmrMetadata/./node_modules/process/browser.js","webpack://nmrMetadata/./node_modules/util/support/isBufferBrowser.js","webpack://nmrMetadata/./node_modules/inherits/inherits_browser.js","webpack://nmrMetadata/./node_modules/ml-distance-matrix/src/index.js","webpack://nmrMetadata/./node_modules/ml-hclust/src/diana.js","webpack://nmrMetadata/./node_modules/ml-hash-table/src/HashTable.js","webpack://nmrMetadata/./node_modules/ml-hash-table/src/primeFinder.js","webpack://nmrMetadata/./node_modules/number-is-nan/index.js","webpack://nmrMetadata/./node_modules/ml-fft/src/FFTUtils.js","webpack://nmrMetadata/(webpack)/buildin/harmony-module.js","webpack://nmrMetadata/./node_modules/ml-matrix-convolution/src/index.js","webpack://nmrMetadata/./node_modules/ml-matrix-convolution/node_modules/ml-fft/src/index.js","webpack://nmrMetadata/./node_modules/ml-matrix-convolution/node_modules/ml-fft/src/FFTUtils.js","webpack://nmrMetadata/./node_modules/ml-matrix-peaks-finder/src/ccLabeling.js","webpack://nmrMetadata/./node_modules/ml-disjoint-set/src/DisjointSet.js","webpack://nmrMetadata/./src/getSpectrumType.js","webpack://nmrMetadata/./node_modules/ml-array-min/lib-es6/index.js","webpack://nmrMetadata/./node_modules/ml-array-max/lib-es6/index.js","webpack://nmrMetadata/./node_modules/ml-array-median/lib-es6/index.js","webpack://nmrMetadata/./node_modules/ml-array-rescale/lib-es6/index.js","webpack://nmrMetadata/./node_modules/spectra-data/src/jcampEncoder/JcampCreator.js","webpack://nmrMetadata/./node_modules/spectra-data/src/peakPicking/peakPicking.js","webpack://nmrMetadata/./node_modules/spectra-data/src/SD.js","webpack://nmrMetadata/./node_modules/nmr-simulation/src/SpinSystem.js","webpack://nmrMetadata/./node_modules/nmr-simulation/src/pauli.js","webpack://nmrMetadata/./node_modules/nmr-simulation/src/simulate1D.js","webpack://nmrMetadata/./node_modules/nmr-simulation/src/simulate2D.js","webpack://nmrMetadata/./node_modules/spectra-data/src/filters/fourierTransform.js","webpack://nmrMetadata/./node_modules/spectra-data/src/filters/phaseCorrection.js","webpack://nmrMetadata/./node_modules/spectra-data/src/filters/rotate.js","webpack://nmrMetadata/./node_modules/spectra-data/src/filters/digitalFilter.js","webpack://nmrMetadata/./node_modules/spectra-data-ranges/src/acs/acs.js","webpack://nmrMetadata/./node_modules/spectra-data-ranges/src/range/Ranges.js","webpack://nmrMetadata/./node_modules/spectra-data-ranges/src/range/peak2Vector.js","webpack://nmrMetadata/./node_modules/spectra-data/src/peakPicking/jAnalyzer.js","webpack://nmrMetadata/./node_modules/spectra-data/src/peakPicking/impurities.js","webpack://nmrMetadata/./node_modules/spectra-data/src/peakPicking/ImpurityRemover.js","webpack://nmrMetadata/./node_modules/spectra-data/src/peakPicking/peaks2Ranges.js","webpack://nmrMetadata/./node_modules/spectra-data/src/NMR.js","webpack://nmrMetadata/./node_modules/spectra-data/src/filters/absoluteValue.js","webpack://nmrMetadata/./node_modules/spectra-data/src/filters/zeroFilling.js","webpack://nmrMetadata/./node_modules/spectra-data/src/peakPicking/peakOptimizer.js","webpack://nmrMetadata/./node_modules/spectra-data/src/peakPicking/peakPicking2D.js","webpack://nmrMetadata/./node_modules/spectra-data/src/NMR2D.js","webpack://nmrMetadata/./node_modules/spectra-data/src/index.js"],"names":["root","factory","exports","module","define","amd","self","this","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","require","Matrix","Decompositions","DC","HashTable","SparseMatrix","constructor","rows","columns","options","arguments","length","undefined","other","_init","elements","clone","threshold","Array","isArray","matrix","j","Math","abs","set","[object Object]","min","initialCapacity","to2DArray","copy","isSquare","isSymmetric","symmetric","forEachNonZero","v","cardinality","size","row","column","remove","mmul","console","warn","result","v1","k","v2","kroneckerProduct","q","callback","forEachPair","maybeShrinkCapacity","getNonZeros","values","idx","setThreshold","newThreshold","klass","identity","eye","tensorProduct","inplaceOperator","inplaceOperatorScalar","inplaceOperatorMatrix","staticOperator","inplaceMethod","staticMethod","operators","operator","eval","fillTemplateFunction","op","methods","method","forEach","mathMethod","push","template","replace","RegExp","support","compressions","nodeBuffer","input","stringToArrayLike","str","array","charCodeAt","arrayLikeToString","chunk","len","type","getTypeOf","canUseApply","String","fromCharCode","apply","Uint8Array","e","resultStr","slice","subarray","floor","join","arrayLikeToArrayLike","arrayFrom","arrayTo","string2binary","arrayBuffer2Blob","buffer","mimeType","checkSupport","Blob","builder","window","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","MSBlobBuilder","append","getBlob","Error","applyFromCharCode","transform","string","arraybuffer","uint8array","nodebuffer","byteLength","transformTo","outputType","inputType","toString","test","ArrayBuffer","toLowerCase","MAX_VALUE_16BITS","MAX_VALUE_32BITS","pretty","code","res","toUpperCase","findCompression","compressionMethod","magic","isRegExp","extend","attr","abstractMatrix","util","nRows","nColumns","isMatrix","Number","isInteger","super","TypeError","RangeError","concat","rowIndex","columnIndex","newMatrix","species","removeRow","index","checkRowIndex","splice","addRow","checkRowVector","removeColumn","checkColumnIndex","addColumn","checkColumnVector","endsWith","TYPED_OK","Uint16Array","Int32Array","_has","obj","assign","sources","source","shift","shrinkBuf","buf","fnTyped","arraySet","dest","src","src_offs","dest_offs","flattenChunks","chunks","pos","fnUntyped","setTyped","on","Buf8","Buf16","Buf32","static","__webpack_exports__","joinCoupling","group","patterns","signal","tolerance","jc","cont","assignment","pattern","newNmrJs","diaIDs","atoms","sort","a","b","coupling","diaID","jTemp","multiplicity","delta","signals","distance","nbAtoms","atomIDs","compilePattern","global","INFINITY","MAX_INTEGER","NAN","symbolTag","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","freeGlobal","freeSelf","Function","objectToString","nativeMin","symbolProto","symbolToString","isObject","isSymbol","isObjectLike","toNumber","valueOf","isBinary","baseToString","func","round","number","precision","sign","toFinite","remainder","toInteger","pair","split","Buffer","base64","blob","Converter","IOBuffer","JSZip","BINARY","TEXT","convert","brukerFiles","start","Date","files","SF","SW_p","offset","parseData","temp","keys","info","currKey","nbSubSpectra","parseFloat","firstY","lastY","pageValue","deltaY","setXYSpectrumData","setFIDSpectrumData","spectra","twoD","convert2D","convert1D","noContours","zData","noise","minZ","data","maxZ","ySize","xSize","z","minX","maxX","minY","maxY","convertTo3DZ","contourLines","pAx","pAy","pBx","pBy","lineZValue","contourLevels","povarHeight","Float32Array","isOver","nbPovars","x0","dx","y0","dy","level","nbLevels","contourLevel","side","exp","lines","zValue","iSubSpectra","povar","segments","generateContourLines","minMax","add2D","profiling","action","time","keepSpectra","xy","spectrum","newData","x","y","file","store","real","td","BF","shiftOffsetVal","brukerReference","endian","setLittleEndian","setBigEndian","toSave","dataType","dataTable","nbPoints","firstX","lastX","xUnit","yUnit","isXYdata","observeFrequency","title","deltaX","readInt32","isNaN","keepRecordsRegExp","SW","AQ","DW","nucleus","available","convertZip","zipFile","zip","load","ser","fid","acqus","acqu2s","procs","proc2s","1r","1i","2rr","folders","filter","relativePath","indexOf","substr","lastIndexOf","currFiles","folder","asText","asArrayBuffer","filename","converFolder","FFTUtils","FFT","outer","max","vector","to1DArray","checkIndices","rowIndices","columnIndices","rowOut","some","columnOut","from","checkRange","startRow","endRow","startColumn","endColumn","arg","getRange","to","arr","sumByRow","sum","zeros","sumByColumn","sumAll","getConverter","ntuplesSeparator","GC_MS_FIELDS","convertToFloatArray","stringArray","floatArray","Spectrum","defaultOptions","withoutXY","chromatogram","noContour","nbContourLevels","noiseMultiplier","convertMSFieldToLabel","isMSField","dataLabel","prepareSpectrum","xFactor","yFactor","compareNumbers","fastParseXYData","currentData","ascii","currentX","currentY","endLine","newLine","isDifference","isLastDifference","lastDifference","isDuplicate","inComment","currentValue","isNegative","inValue","skipFirstValue","decimalPosition","pow","duplicate","ascii2","parsePeakTable","ii","jj","removeCommentRegExp","peakTableSplitRegExp","isPeaktable","trim","logs","jcamp","ldr","dataValue","ldrs","position","infos","wantXY","now","ntuples","substring","xIndex","yIndex","firstVariable","secondVariable","symbol","first","last","vardim","factor","units","datatable","xType","indirectFrequency","shiftOffsetNum","varname","vartype","varform","yType","page","pageSymbol","pageSymbolIndex","unit","match","newNtuples","xVector","map","povarHeight0","povarHeight1","povarHeight2","povarHeight3","isOver0","isOver1","isOver2","isOver3","iter","subSpectra","subSpectraAfter","times","series","ms","dimension","existingGCMSFields","label","complexChromatogram","intensity","simpleChromatogram","worker","stamps","useWorker","workerURL","URL","createObjectURL","Worker","revokeObjectURL","addEventListener","event","JSON","parse","stamp","output","Promise","resolve","random","postMessage","stringify","postToWorker","createTree","_options$flatten","flatten","current","flat","stack","ntupleLevel","line","startsWith","children","finished","pop","entry","defOptions","out","fullClusterGeneratorVector","conn","sqrt","clusterList","remaining","cluster","nextAv","toInclude","conMat","opt","clList","resultAsMatrix","numberIsNan","assertNum","asc","desc","gsd","post","optimizePeaks","joinBroadPeaks","broadenPeaks","convolution","labeling","smallFilter","DEBUG","findPeaks2DRegion","nStdev","kernel","tmp","matrix2Array","inputData","cols","nCols","customFilter","cs","filteredData","fft","nStdDev","bitmask","peakList","pixels","nRow","col","labels","extractPeaks","neighbours","log","findPeaks2DMax","rowI","colI","peakListMax","tmpIndex","hypotenuse","getEmpty2DArray","getFilled2DArray","_keyStr","encode","utf8","chr1","chr2","chr3","enc1","enc2","enc3","enc4","charAt","decode","utils","crc32","signature","defaults","CompressedObject","StringWriter","Uint8ArrayWriter","getRawData","_data","getContent","binary","getBinaryData","asBinary","dataToString","asUTF8","utf8decode","utf8encode","ZipObject","dir","date","comment","unixPermissions","dosPermissions","_initialMetadata","asNodeBuffer","asUint8Array","decToHex","dec","bytes","hex","fileAdd","parent","compression","prepareFileAttrs","forceTrailingSlash","createFolders","parentFolder","folderAdd","optimizedBinaryString","path","lastSlash","generateCompressedObjectFrom","compressionOptions","content","uncompressedSize","compressedContent","getCompressedContent","compress","compressInputType","compressedSize","generateZipParts","compressedObject","platform","encodeFileName","dosTime","dosDate","useCustomEncoding","encodedFileName","utfEncodedFileName","encodedComment","utfEncodedComment","useUTF8ForFileName","useUTF8ForComment","extraFields","unicodePathExtraField","unicodeCommentExtraField","isDir","extFileAttr","versionMadeBy","getHours","getMinutes","getSeconds","getFullYear","getMonth","getDate","header","fileRecord","LOCAL_FILE_HEADER","dirRecord","CENTRAL_FILE_HEADER","stream","search","fileClone","regexp","newFolder","ret","kids","generate","writer","zipData","localDirLength","centralDirLength","compressionName","zipPart","dirEnd","CENTRAL_DIRECTORY_END","typeName","finalize","crc","g","STORE","uncompress","uncompressInputType","DEFLATE","2","1","0","-1","-2","-3","-4","-5","-6","encoding","isBuffer","Heap","Cluster","cut","list","ans","aux","minGroups","heap","child","toArray","traverse","cb","visit","haystack","needle","comparator","low","high","mid","cmp","getEquallySpacedData","SNV","pseudoDigits","SQZ_P","SQZ_N","DIF_P","DIF_N","DUP","MaxLinelength","commaSeparatedValuesEncoding","intervalX","fixEncoding","separator","outputData","TD","ceil","packedEncoding","squeezedEncoding","squeezedDigit","differenceDuplicateEncoding","mult","charCount","encodData","encodNumber","diffData","numDiff","differenceDigit","duplicateDigit","differenceEncoding","num","SQZdigit","DIFFdigit","DUPdigit","arithmeticMean","mean","geometricMean","mul","logMean","lnsum","grandMean","means","samples","truncatedMean","percent","alreadySorted","harmonicMean","contraHarmonicMean","r1","r2","median","half","variance","unbiased","theMean","theVariance","standardDeviation","standardError","robustMeanAndStdev","averageDeviations","stdev","quartiles","quart","q1","q2","q3","pooledStandardDeviation","pooledVariance","vari","itemCount","itemArray","count","maxValue","maxIndex","covariance","vector1","vector2","mean1","mean2","cov","skewness","s2","s3","dev","m2","kurtosis","s4","entropy","eps","weightedMean","weights","weightedStandardDeviation","weightedVariance","w","center","inPlace","standardize","standardDev","cumulativeSum","hasOwn","toStr","isPlainObject","hasOwnConstructor","hasIsPrototypeOf","copyIsArray","target","deep","Infinity","LM","math","algebra","sumOfLorentzians","p2","nL","singleLorentzian","singleGaussian","factor2","optimizeSingleLorentzian","peak","opts","xy2","percentage","y_data","weight","dot","dt","LMOptions","p_init","width","p_min","p_max","p_fit","optimize","optimizeSingleGaussian","nbSeries","transpose","optimizeLorentzianSum","optimizeGaussianSum","optimizeGaussianTrain","nextX","tI","yI","currentIndex","optimizeLorentzianTrain","LuDecomposition","SvDecomposition","arrayUtils","MatrixTransposeView","MatrixRowView","MatrixSubView","MatrixSelectionView","MatrixColumnView","MatrixFlipRowView","MatrixFlipColumnView","superCtor","newRows","newColumns","empty","fill","rng","matrix1","matrix2","checkMatrix","isRowVector","isColumnVector","isVector","repeat","rowRep","colRep","setSubMatrix","neg","mulS","getRow","getRowVector","rowVector","setRow","swapRows","row1","row2","getColumn","getColumnVector","columnVector","setColumn","swapColumns","column1","column2","addRowVector","subRowVector","mulRowVector","divRowVector","addColumnVector","subColumnVector","mulColumnVector","divColumnVector","mulRow","mulColumn","minIndex","maxRow","maxRowIndex","minRow","minRowIndex","maxColumn","maxColumnIndex","minColumn","minColumnIndex","diag","by","prod","Bcolj","strassen2x2","a11","b11","a12","b12","a21","b21","a22","b22","m1","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","c1","c2","embed","mat","resultat","blockMult","halfRows","halfCols","subMatrix","add","sub","scaleRows","scaled","scale","scaleColumns","sortRows","compareFunction","sortColumns","subMatrixRow","indices","subMatrixColumn","selection","trace","transposeView","rowView","columnView","flipRowView","flipColumnView","subMatrixView","selectionView","det","subMatrix0","subMatrix1","subMatrix2","determinant","pseudoInverse","EPSILON","svdSolution","autoTranspose","U","leftSingularVectors","V","rightSingularVectors","diagonal","checkDimensions","otherMatrix","rand","negate","inplaceMethodWithArgs","staticMethodWithArgs","inplaceMethodWithOneArgScalar","inplaceMethodWithOneArgMatrix","inplaceMethodWithOneArg","staticMethodWithOneArg","inplaceOp","inplaceOpS","inplaceOpM","staticOp","inplaceMeth","staticMeth","methodsWithArgs","methodWithArg","args","inplaceMethWithArgs","staticMethWithArgs","tmplVar","inplaceMethod2","inplaceMethodS","inplaceMethodM","staticMethod2","LUrowi","LUcolj","kmax","lu","pivotVector","pivotSign","LU","isSingular","lowerTriangularMatrix","X","upperTriangularMatrix","pivotPermutationVector","solve","SingularValueDecomposition","nu","wantu","wantv","computeLeftSingularVectors","computeRightSingularVectors","swapped","ks","f","sn","kase","sp","spm1","epm1","sk","ek","work","nct","nrt","pp","condition","norm2","rank","tol","diagonalMatrix","Y","scols","Ls","VL","vrows","urows","VLU","solveForDiagonal","inverse","vcols","ucols","A","B","subtract","multiply","dotMultiply","dotDivide","div","inv","dotPow","ones","ieee754","kMaxLength","TYPED_ARRAY_SUPPORT","createBuffer","that","__proto__","encodingOrOffset","allocUnsafe","byteOffset","fromArrayLike","fromArrayBuffer","isEncoding","actual","write","fromString","checked","val","fromObject","assertSize","isView","loweredCase","utf8ToBytes","base64ToBytes","swap","bidirectionalIndexOf","arrayIndexOf","indexSize","arrLength","valLength","read","readUInt16BE","foundIndex","found","hexWrite","strLen","parsed","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","latin1Write","base64Write","ucs2Write","hi","lo","utf16leToBytes","base64Slice","end","fromByteArray","utf8Slice","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","MAX_ARGUMENTS_LENGTH","decodeCodePointsArray","SlowBuffer","alloc","INSPECT_MAX_BYTES","foo","typedArraySupport","poolSize","_augment","configurable","allocUnsafeSlow","_isBuffer","compare","swap16","swap32","swap64","hexSlice","asciiSlice","latin1Slice","utf16leSlice","equals","inspect","thisStart","thisEnd","thisCopy","targetCopy","includes","isFinite","toJSON","_arr","toHex","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","INVALID_BASE64_RE","leadSurrogate","toByteArray","stringtrim","base64clean","dst","adler","s1","crcTable","table","makeTable","STR_APPLY_OK","STR_APPLY_UIA_OK","__","_utf8len","buf2binstring","string2buf","m_pos","str_len","buf_len","binstring2buf","buf2string","c_len","utf16buf","utf8border","next_in","avail_in","total_in","next_out","avail_out","total_out","msg","state","data_type","Z_NO_FLUSH","Z_PARTIAL_FLUSH","Z_SYNC_FLUSH","Z_FULL_FLUSH","Z_FINISH","Z_BLOCK","Z_TREES","Z_OK","Z_STREAM_END","Z_NEED_DICT","Z_ERRNO","Z_STREAM_ERROR","Z_DATA_ERROR","Z_BUF_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","ZIP64_CENTRAL_DIRECTORY_LOCATOR","ZIP64_CENTRAL_DIRECTORY_END","DATA_DESCRIPTOR","nextBoundary","DataReader","StringReader","zero","byteAt","lastIndexOfSignature","sig","readData","checkIndex","newIndex","setIndex","skip","readInt","readString","readDate","dostime","ArrayReader","Uint8ArrayReader","sig0","sig1","sig2","sig3","squaredEuclidean","euclidean","squared","ClusterLeaf","inherits","version","_n","_bitrev","_cstb","core","init","_initArray","_makeBitReversalTable","_makeCosSinTable","fft1d","re","im","ifft1d","bt1d","fft2d","tre","tim","x1","x2","y1","y2","ifft2d","h","ik","wr","wi","xr","xi","n4","Uint32Array","Float64Array","_paddingZero","n2","n8","n2p4","sin","PI","dc","ds","apis","bt","ifft","_ref","agnes","diana","jcampconverter","SD","getSpectrumType","computeRanges","defaultRangesOptions","nH","thresholdFactor","clean","compile","integralType","maybeAdd","parseJcamp","jcampData","jcampString","metadata","isFid","isFt","nuc","getNucleusFrom2DExperiment","experiment","toISOString","rangesOptions","ranges","removeImpurities","solvent","removeImpurity","NMR","fromJcamp","getRanges","range","_highlight","signalID","Stat","resultMatrix","coordArrayToPoints","dimensions","pointsArr","point","coordArrayToCoordMatrix","coordinatesArray","points","currentPoint","coordMatrixToCoordArray","coordMatrix","coodinatesArray","coordMatrixToPoints","pointsToCoordArray","pointsToCoordMatrix","applyDotProduct","firstVector","secondVector","largestVector","smallestVector","difference","dotProductApplied","arrayStat","l1","l2","N","theSum","product","theProduct","sum1","sum2","medians","modes","skew","kurt","standardDeviations","standardErrors","sqrtN","scatter","divisor","correlation","scores","zScores","cor","resultRow","sourceRow","weightSum","weightedCovariance","weightedScatter","integral","slope","intercept","xLength","reverse","_options$from","_options$to","_options$variant","variant","_options$numberOfPoin","numberOfPoints","step","halfStep","lastStep","previousX","MAX_VALUE","previousY","nextY","frontOutsideSpectra","backOutsideSpectra","currentPoints","main","getEquallySpacedSlot","initialOriginalStep","lastOriginalStep","MIN_VALUE","sumAtMin","sumAtMax","getEquallySpacedSmooth","std","SG","sgOptions","windowSize","polynomial","minMaxRatio","broadRatio","maxCriteria","smoothY","realTopDetection","heightFactor","boundaries","derivativeThreshold","yIn","maxDx","minDx","noiseLevel","getNoiseLevel","yCorrection","dY","ddY","derivative","maxDdy","lastMax","lastMin","minddY","intervalL","intervalR","broadMask","minddYLen","intervalLLen","intervalRLen","broadMaskLen","possible","frequency","distanceJ","minDistance","gettingCloser","signalsLen","lastK","soft","left","right","yLeft","yRight","height","alpha","beta","gamma","log10","base","getHs","hs","GramPoly","GenFact","gf","Weight","np","fullWeights","constantH","wg1","wg2","d1","d2","wg","sampleFunction","lastIndex","sampleX","sampleY","direction","stop","fnType","sampling","error","groups","upperLimit","lowerLimit","limits","groupPeaks","peaks","optPeaks","optPeak","y_dat","dp","iteration","Npar","Npnt","p_old","y_old","X2","X2_old","J","MaxIter","epsilon_1","epsilon_4","lambda_0","lambda_UP_fac","lambda_DN_fac","Update_Type","dp_array","Nfit","weight_sq","lm_matx","JtWJ","JtWdy","y_hat","Chi_sq","lambda","hidx","p_try","delta_y","X2_try","JtWdy_th","rho","dX2","length_t","length_y_dat","lm_FD_J","ps","del","lm_Broyden_J","h_t","Jt","for","BaseView","EigenvalueDecomposition","QrDecomposition","CholeskyDecomposition","leftHandSide","rightHandSide","SVD","EVD","QR","CHO","assumeSymmetric","hh","tred2","dl1","c3","el1","tst1","tql2","H","ort","orthes","nn","ra","sa","vr","vi","notlast","cdivres","exshift","norm","cdiv","hqr2","yr","yi","realEigenvalues","imaginaryEigenvalues","eigenvectorMatrix","qr","rdiag","nrm","Rdiag","isFullRank","orthogonalMatrix","positiveDefinite","Lrowj","Lrowk","L","Opt","broadLines","maxI","candidates","indexes","fitted","_options$factor","_options$overlap","overlap","nextPeak","defaultByteLength","charArray","DataView","_increment","_mark","isLittleEndian","isBigEndian","seek","mark","reset","rewind","ensureAvailable","newIncrement","newLength","newArray","readBoolean","readUint8","getInt8","getUint8","readByte","readBytes","readInt16","getInt16","readUint16","getUint16","getInt32","readUint32","getUint32","readFloat32","getFloat32","readFloat64","getFloat64","readChar","readChars","writeBoolean","bool","writeUint8","setInt8","setUint8","writeByte","writeBytes","writeInt16","setInt16","writeUint16","setUint16","writeInt32","setInt32","writeUint32","setUint32","writeFloat32","setFloat32","writeFloat64","setFloat64","writeChar","writeChars","newObj","b64","lens","getLens","validLen","placeHoldersLen","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","parts","len2","encodeChunk","lookup","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","NaN","rt","LN2","USE_TYPEDARRAY","pako","deflateRaw","inflateRaw","zlib_deflate","strings","ZStream","Deflate","chunkSize","windowBits","memLevel","strategy","raw","gzip","err","ended","strm","status","deflateInit2","deflateSetHeader","dictionary","dict","deflateSetDictionary","_dict_set","deflate","deflator","_mode","onEnd","onData","deflateEnd","configuration_table","trees","adler32","MAX_MEM_LEVEL","MAX_WBITS","DEF_MEM_LEVEL","L_CODES","LITERALS","D_CODES","BL_CODES","HEAP_SIZE","MAX_BITS","MIN_MATCH","MAX_MATCH","MIN_LOOKAHEAD","PRESET_DICT","INIT_STATE","EXTRA_STATE","NAME_STATE","COMMENT_STATE","HCRC_STATE","BUSY_STATE","FINISH_STATE","BS_NEED_MORE","BS_BLOCK_DONE","BS_FINISH_STARTED","BS_FINISH_DONE","OS_CODE","errorCode","flush_pending","pending","pending_buf","pending_out","flush_block_only","_tr_flush_block","block_start","strstart","put_byte","putShortMSB","longest_match","cur_match","chain_length","max_chain_length","scan","best_len","prev_length","nice_match","w_size","_win","wmask","w_mask","prev","strend","scan_end1","scan_end","good_match","lookahead","match_start","fill_window","more","_w_size","window_size","hash_size","head","wrap","insert","ins_h","hash_shift","hash_mask","deflate_fast","flush","hash_head","bflush","match_length","_tr_tally","max_lazy_match","last_lit","deflate_slow","max_insert","prev_match","match_available","Config","good_length","max_lazy","nice_length","max_chain","DeflateState","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","depth","l_buf","lit_bufsize","d_buf","opt_len","static_len","matches","bi_buf","bi_valid","deflateResetKeep","_tr_init","deflateReset","max_block_size","max_start","deflateInit","old_flush","beg","text","hcrc","extra","os","bstate","deflate_huff","deflate_rle","_tr_align","_tr_stored_block","avail","next","tmpDict","dictLength","deflateInfo","STORED_BLOCK","STATIC_TREES","DYN_TREES","LENGTH_CODES","Buf_size","MAX_BL_BITS","END_BLOCK","REP_3_6","REPZ_3_10","REPZ_11_138","extra_lbits","extra_dbits","extra_blbits","bl_order","static_ltree","static_dtree","_dist_code","_length_code","base_length","static_l_desc","static_d_desc","static_bl_desc","base_dist","StaticTreeDesc","static_tree","extra_bits","extra_base","elems","max_length","has_stree","TreeDesc","dyn_tree","stat_desc","max_code","d_code","dist","put_short","send_bits","send_code","tree","bi_reverse","gen_codes","bits","next_code","init_block","bi_windup","smaller","_n2","_m2","pqdownheap","compress_block","ltree","dtree","lc","lx","build_tree","node","stree","xbits","overflow","gen_bitlen","scan_tree","curlen","prevlen","nextlen","max_count","min_count","send_tree","static_init_done","stored_len","copy_block","tr_static_init","opt_lenb","static_lenb","max_blindex","black_mask","detect_data_type","build_bl_tree","lcodes","dcodes","blcodes","send_all_trees","bi_flush","zlib_inflate","GZheader","Inflate","inflateInit2","inflateGetHeader","inflate","inflator","next_out_utf8","tail","utf8str","allowBufError","inflateSetDictionary","inflateEnd","ungzip","inflate_fast","inflate_table","CODES","LENS","DISTS","Z_MEM_ERROR","HEAD","FLAGS","TIME","OS","EXLEN","EXTRA","NAME","COMMENT","HCRC","DICTID","DICT","TYPE","TYPEDO","STORED","COPY_","COPY","TABLE","LENLENS","CODELENS","LEN_","LEN","LENEXT","DIST","DISTEXT","MATCH","LIT","CHECK","LENGTH","DONE","BAD","MEM","SYNC","ENOUGH_LENS","ENOUGH_DISTS","DEF_WBITS","zswap32","InflateState","havedict","flags","dmax","check","total","wbits","wsize","whave","wnext","hold","lencode","distcode","lenbits","distbits","ncode","nlen","ndist","have","lendyn","distdyn","sane","back","was","inflateResetKeep","inflateReset","inflateReset2","lenfix","distfix","virgin","fixedtables","sym","updatewindow","inflateInit","put","_in","_out","from_source","here_bits","here_op","here_val","last_bits","last_op","last_val","here","hbuf","order","inf_leave","done","xflags","extra_len","inflateInfo","s_window","lcode","dcode","lmask","dmask","top","dolen","dodist","lbase","lext","dbase","dext","lens_index","codes","table_index","incr","mask","curr","drop","used","huff","base_index","MAXBITS","offs","extra_index","iTop","ZipEntries","zipEntries","checkCRC32","decodeFileName","fileNameStr","decompressed","fileCommentStr","zipComment","NodeBufferReader","ZipEntry","loadOptions","checkSignature","expectedSignature","reader","isSignature","askedIndex","readBlockEndOfCentral","diskNumber","diskWithCentralDirStart","centralDirRecordsOnThisDisk","centralDirRecords","centralDirSize","centralDirOffset","zipCommentLength","decodeParamType","decodeContent","readBlockZip64EndOfCentral","zip64EndOfCentralSize","versionNeeded","zip64ExtensibleData","extraFieldId","extraFieldLength","extraFieldValue","extraDataSize","id","readBlockZip64EndOfCentralLocator","diskWithZip64CentralDirStart","relativeOffsetEndOfZip64CentralDir","disksCount","readLocalFiles","localHeaderOffset","readLocalPart","handleUTF8","processAttributes","readCentralDir","zip64","readCentralPart","readEndOfCentral","endOfCentralDirOffset","expectedEndOfCentralDirOffset","prepareReader","jszipProto","isEncrypted","bitFlag","useUTF8","prepareCompressedContent","previousIndex","compressedFileData","prepareContent","uncompressedFileData","localExtraFieldsLength","fileNameLength","fileName","extraFieldsLength","fileCommentLength","diskNumberStart","internalFileAttributes","externalFileAttributes","readExtraFields","parseZIP64ExtraField","fileComment","madeBy","extraReader","upath","findExtraFieldUnicodePath","fileNameByteArray","ucomment","findExtraFieldUnicodeComment","commentByteArray","upathField","ucommentField","string2Uint8Array","uint8Array2String","string2Blob","distanceMatrix","simpleLink","cluster1","cluster2","disFun","completeLink","averageLink","centroidLink","wardLink","disFunc","kind","isDistanceMatrix","dis","fdistance","sdistance","toFixed","dmin","clustered","diff","indCount","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","defaultCmp","heapify","heappop","heappush","heappushpop","heapreplace","insort","nlargest","nsmallest","updateItem","_siftdown","_siftup","item","lastelt","returnitem","_i","_len","_ref1","_results","_results1","_j","elem","los","startpos","newitem","parentpos","childpos","endpos","rightpos","nodes","pushpop","peek","contains","clear","front","has","process","formatRegExp","format","isString","objects","_","isNull","deprecate","fn","isUndefined","noDeprecation","warned","throwDeprecation","traceDeprecation","debugEnviron","debugs","ctx","seen","stylize","stylizeNoColor","colors","isBoolean","showHidden","_extend","customInspect","stylizeWithColor","formatValue","styleType","style","styles","recurseTimes","isFunction","primitive","simple","isNumber","formatPrimitive","visibleKeys","hash","arrayToHash","getOwnPropertyNames","isError","formatError","isDate","braces","toUTCString","formatProperty","formatArray","reduce","cur","numLinesEst","reduceToSingleString","getOwnPropertyDescriptor","ar","pad","debuglog","env","NODE_DEBUG","pid","bold","italic","underline","white","grey","black","blue","cyan","green","magenta","red","yellow","special","boolean","null","isNullOrUndefined","isPrimitive","months","prop","origin","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","setTimeout","clearTimeout","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","timeout","run","marker","runClearTimeout","Item","noop","nextTick","browser","argv","versions","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","umask","ctor","super_","writable","TempCtor","distanceFn","splitting","Ci","Cj","intrDist","M","clId","rebel","ind","C","sG","spl","fData","sData","primeFinder","nextPrime","largestPrime","FREE","FULL","REMOVED","defaultInitialCapacity","defaultMinLoadFactor","defaultMaxLoadFactor","minLoadFactor","maxLoadFactor","distinct","freeEntries","lowWaterMark","highWaterMark","capacity","chooseHighWaterMark","indexOfKey","indexOfInsertion","newCapacity","chooseGrowCapacity","rehash","noRehash","delete","minLoad","maxLoad","containsKey","decrement","containsValue","indexOfValue","ensureCapacity","minCapacity","oldCapacity","oldTable","oldValues","oldState","newTable","newValues","newState","element","forEachKey","forEachValue","binarySearch","sortAsc","primeNumbers","ifft2DArray","ft","ftRows","ftCols","tempTransform","tmpCols","iCol","iRow","finalTransform","tmpRows","indexB","fft2DArray","inplace","iRow0","iRow1","iRow2","iRow3","reconstructTwoRealFFT","fourierTransform","realTransform1","realTransform2","rm","rp","ip","convolute2DI","ftSignal","ftFilter","convolute","ftSpectrum","dimR","dimC","ftFilterData","shiftR","shiftC","ir","ic","toRadix2","irow","icol","crop","destinyRow","originalModule","webpackPolyfill","normalize","kHeight","kWidth","radix2Sized","conv","direct","kVal","hHeight","hWidth","kernelFactory","LoG","sigma","nPoints","sigma2","DisjointSet","direction4X","direction4Y","neighbours4","direction8X","direction8Y","neighbours8","directionX","directionY","neighboursList","Int16Array","linked","currentLabel","smallestNeighbor","neighbor","union","find","DisjointSetNode","Map","rootX","rootY","toUpdateX","toUpdateParent","connected","meta","pulse","spectyp","quickSelectMedian","rescale","currentMin","currentMax","_options$min","minValue","autoMinMax","_options$max","CRLF","defaultParameters","keep","JcampCreator","spectraData","encodeFormat","factorY","limitIntensity","userDefinedParams","outString","setActiveElement","getParamDouble","is2D","getMinZ","getMaxZ","getMinMaxY","scaleX","getDeltaX","getTitle","getParamString","getDataType","variableX","getSpectraVariable","variableY","variableZ","nTuplesName","abscVar","getNbSubSpectra","getXUnits","mostCommon","defaultSub","isComplex","isNMR","getNucleus","containsParam","getParamInt","getSolventName","freq1","freq2","getNbPoints","getYUnits","observeFrequencyX","getFirstX","getY","getLastX","getLastY","getZUnits","getParam","yUnits","isDataClassPeak","getX","isDataClassXY","tempString","Encoder","ntuplesHead","getFirstY","getMaxY","getMinY","simpleHead","widthFactor","realTop","functionName","broadWidth","_options","_options$noiseLevel","getVector","outputX","getSpectrumData","GSD","DATACLASS_XY","DATACLASS_PEAK","sd","activeElement","JcampConverter","nactiveSpectrum","getActiveElement","getSpectrum","setXUnits","getPage","setFirstX","setLastX","setFirstY","setLastY","setDataClass","dataClass","setDataType","getXData","getYData","getXYData","setTitle","newTitle","getMedian","getNMRPeakThreshold","arrayPointToUnits","doublePoint","unitsToArrayPoint","midPoint","currentArrayPoint","setMinMax","updateFirstLastY","setMin","setMax","yShift","globalShift","updateFirstLastX","currentActiveElement","_ref2","_ref3","suppressRange","suppressRanges","zones","zone","active","_ref4","_ref5","_ref6","getMaxPeak","getSpectraDataY","defvalue","getSpectraDataX","resetMinMax","putParam","getArea","i0","ie","area","_ref7","updateIntegrals","ArrayUtils","getPointsInWindow","reduceData","_ref8","_ref9","xyData","_options$outputX","indexOfFrom","indexOfTo","_ref10","setTotalIntegral","totalIntegralValue","totalIntegral","molecule","mf","setMolfile","molfile","setMF","createPeaks","peakPicking","getPeaks","toJcamp","SpinSystem","chemicalShifts","couplingConstants","nSpins","_initConnectivity","_initClusters","nspins","integrals","ids","tokens","nCoup","predictions","ungroupAtoms","prediction","pred","tempPred","nmrJ","tempJ","clusters","simpleClustering","connectivity","couplings","_calculateBetas","betas","ensureClusterSize","hlClust","_splitCluster","maxClusterSize","_mergeClusters","nClusters","force","_getMembers","members","clusterA","clusterB","common","nElements","createPauli","spin","prjs","pauli2","getPauli","smallValue","addPeak","freq","gaussian","lnPoints","indexLorentz","triuTimesAbs","getHamiltonian","conMatrix","hamSize","clusterHam","A1","B1","kronProd","pos2","S","A2","B2","kron1","_getX","lineWidth","unitsToArrayPoints","fromX","widthX","toX","fromY","widthY","toY","squareSigmaX","squareSigmaY","exponent","updateSpectra","spectraType","baseFrequency","spectralFrequency","xMiddle","phaseCorrection","phi0","phi1","sinThetaNew","reTmp","imTmp","reData","imData","cosTheta","cos","sinTheta","rotate","nextIndex","toMove","lastFirstIndex","putInRange","digitalFilter","brukerFilter","rotateX","globalOptions","nbDecimalDelta","nbDecimalJ","observedFrequency","toAcs","ascending","acsString","acs","parenthesis","frequencyObserved","spectroInformation","acsRanges","pushDelta","formatAcs","fromTo","getIntegral","appendSeparator","switchFormat","pubIntegral","pushIntegral","pushMultiplicityFromSignal","char","pushAssignment","pushCoupling","formatAssignment","pubAssignment","Ranges","nSignals","sumOfIntegrals","_options$sumAll","sumObserved","shouldIntegrate","_options$nbPoints","_options$functionName","_options$nWidth","nWidth","functionToUse","peak2Vector","getPeakList","getACS","toIndex","joinCouplings","updateMultiplicity","newRanges","symRatio","maxErrorIter2","jAnalyzer","symRank","maxError","symRank1","symmetrize","tmpPeaks","peaksComp","tmpMask","delta1","symRank2","symmetrizeChoiseBest","asymmetric","P1","maxFlagged","Jc","validPattern","heights","counter","getNextCombination","numbering","nFlagged","u","jSum","idealPattern","updateSignal","observe","nbPeaks","startX","stopX","integralData","maskPattern","mask2","nmrJs","abstractPattern","ok","lng","avg","avgWidth","middle","heightSum","diffL","diffR","chemicalShift","symFactor","newSumHeights","dxi","impurities","cdcl3","tms","proton","solvent_residual_peak","h2o","acetic_acid","acetone","acetonitrile","benzene","tert-butyl_alcohol","tert-butyl_methyl_ether","bhtb","chloroform","cyclohexane","1,2-dichloroethane","dichloromethane","diethyl_ether","diglyme","1,2-dimethoxyethane","dimethylacetamide","dimethylformamide","dimethyl_sulfoxide","dioxane","ethanol","ethyl_acetate","ethyl_methyl_ketone","ethylene_glycol","grease^f","n-hexane","hmpag","methanol","nitromethane","n-pentane","2-propanol","pyridine","silicone_greasei","tetrahydrofuran","toluene","triethylamine","(cd3)2co","dmso","c6d6","cd3cn","cd3od","d2o","toCheck","checkImpurity","impurity","frequencyCluster","keepPeaks","createRanges","detectSignals","_options$solvent","_options$error","solventImpurities","impurityRemover","nHi","JAnalyzer","peaksO","computeArea","peakR","peaks1","sumIntegral","remark","signal1D","_options$nH","_options$integralType","_options$frequencyClu","_options$frequency","prevPeak","spectrumIntegral","integralPeaks","integralFactor","spinSystem","fromPrediction","_options$lineWidth","_options$maxClusterSi","_options$output","frequencyMHz","_options$noiseFactor","noiseFactor","lineWidthPoints","gaussianLength","withNoise","clusterFake","sumI","frequencies","intensities","currentSize","hamiltonian","evd","diagB","assignmentMatrix","multLen","tempMat","rhoip","rhoip2","tV","valFreq","insertIn","numFreq","inte","simulate1D","fromXY","brukerFile","brukerSpectra","Brukerconverter","getMagnitude","imValSquare","Filters","dim","$SOLVENT","nSubSpectra","fcor","postFourierTransform","ph1corr","zeroFilling","nPointsX","nPointsY","zeroFillingX","nbXPoints","echoAntiechoFilter","SNVFilter","powerFilter","power","YShift","peaks2Ranges","getResidual","getImpurity","getImpurities","toLocaleLowerCase","fillImpurity","_options$impurity","_options$value","diagonalError","peakOptimizer","NEGATIVE_INFINITY","enhanceSymmetry","hits","properties","signalsProperties","shiftX","shiftY","initializeProperties","exist","checkCrossPeaks","completeMissingIfNeeded","toReturn","alignDimensions","signals2D","references","ref","alignSingleDimension","thisSignal","thisProp","addedPeaks","newSignal","tmpProp","nucleusX","nucleusY","resolutionX","resolutionY","diagX","diagY","updateProperties","cross","crossPeaksX","crossPeaksY","symmetricSearch","distanceTo","toImage","signal2D","createSignals2D","bf1","bf2","observeFrequencyY","getDeltaY","iCluster","peaks2D","minMax1","minMax2","sumZ","jPeak","NMR2D","fromLabel","fromAtomLabel","toLabel","frequencyX","frequencyY","lineWidthX","lineWidthY","sigmaX","sigmaY","fromChemicalShift","toChemicalShift","nbPointsX","nbPointsY","spectraMatrix","fromAtoms","toAtoms","simule2DNmrSpectrum","fromMatrix","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","zUnit","observefrequency","$BF1","$SW_h","$SW","$TD","isHomoNuclear","getZones","idPrefix","isHomonuclear","getLoGnStdDevNMR","convolutedSpectrum","peaksMC1","matrixPeakFinders","peaksMax1","PeakOptimizer","peakPicking2D","SD_SD","NMR_NMR","NMR2D_NMR2D","Ranges_Ranges"],"mappings":"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","file":"nmr-metadata.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"nmrMetadata\"] = factory();\n\telse\n\t\troot[\"nmrMetadata\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 59);\n","'use strict';\n\nmodule.exports = require('./matrix').Matrix;\nmodule.exports.Decompositions = module.exports.DC = require('./decompositions');\n","const HashTable = require('ml-hash-table');\n\nclass SparseMatrix {\n constructor(rows, columns, options = {}) {\n if (rows instanceof SparseMatrix) { // clone\n const other = rows;\n this._init(other.rows, other.columns, other.elements.clone(), other.threshold);\n return;\n }\n\n if (Array.isArray(rows)) {\n const matrix = rows;\n rows = matrix.length;\n options = columns || {};\n columns = matrix[0].length;\n this._init(rows, columns, new HashTable(options), options.threshold);\n for (var i = 0; i < rows; i++) {\n for (var j = 0; j < columns; j++) {\n var value = matrix[i][j];\n if (this.threshold && Math.abs(value) < this.threshold) value = 0;\n if (value !== 0) {\n this.elements.set(i * columns + j, matrix[i][j]);\n }\n }\n }\n } else {\n this._init(rows, columns, new HashTable(options), options.threshold);\n }\n }\n\n _init(rows, columns, elements, threshold) {\n this.rows = rows;\n this.columns = columns;\n this.elements = elements;\n this.threshold = threshold || 0;\n }\n \n static eye(rows = 1, columns = rows) {\n const min = Math.min(rows, columns);\n const matrix = new SparseMatrix(rows, columns, {initialCapacity: min});\n for (var i = 0; i < min; i++) {\n matrix.set(i, i, 1);\n }\n return matrix;\n }\n\n clone() {\n return new SparseMatrix(this);\n }\n \n to2DArray() {\n const copy = new Array(this.rows);\n for (var i = 0; i < this.rows; i++) {\n copy[i] = new Array(this.columns);\n for (var j = 0; j < this.columns; j++) {\n copy[i][j] = this.get(i, j);\n }\n }\n return copy;\n }\n\n isSquare() {\n return this.rows === this.columns;\n }\n\n isSymmetric() {\n if (!this.isSquare()) return false;\n\n var symmetric = true;\n this.forEachNonZero((i, j, v) => {\n if (this.get(j, i) !== v) {\n symmetric = false;\n return false;\n }\n return v;\n });\n return symmetric;\n }\n\n get cardinality() {\n return this.elements.size;\n }\n\n get size() {\n return this.rows * this.columns;\n }\n\n get(row, column) {\n return this.elements.get(row * this.columns + column);\n }\n\n set(row, column, value) {\n if (this.threshold && Math.abs(value) < this.threshold) value = 0;\n if (value === 0) {\n this.elements.remove(row * this.columns + column);\n } else {\n this.elements.set(row * this.columns + column, value);\n }\n return this;\n }\n \n mmul(other) {\n if (this.columns !== other.rows)\n console.warn('Number of columns of left matrix are not equal to number of rows of right matrix.');\n \n const m = this.rows;\n const p = other.columns;\n \n const result = new SparseMatrix(m, p);\n this.forEachNonZero((i, j, v1) => {\n other.forEachNonZero((k, l, v2) => {\n if (j === k) {\n result.set(i, l, result.get(i, l) + v1 * v2);\n }\n return v2;\n });\n return v1;\n });\n return result;\n }\n\n kroneckerProduct(other) {\n const m = this.rows;\n const n = this.columns;\n const p = other.rows;\n const q = other.columns;\n\n const result = new SparseMatrix(m * p, n * q, {\n initialCapacity: this.cardinality * other.cardinality\n });\n this.forEachNonZero((i, j, v1) => {\n other.forEachNonZero((k, l, v2) => {\n result.set(p * i + k, q * j + l, v1 * v2);\n return v2;\n });\n return v1;\n });\n return result;\n }\n\n forEachNonZero(callback) {\n this.elements.forEachPair((key, value) => {\n const i = (key / this.columns) | 0;\n const j = key % this.columns;\n let r = callback(i, j, value);\n if (r === false) return false; // stop iteration\n if (this.threshold && Math.abs(r) < this.threshold) r = 0;\n if (r !== value) {\n if (r === 0) {\n this.elements.remove(key, true);\n } else {\n this.elements.set(key, r);\n }\n }\n return true;\n });\n this.elements.maybeShrinkCapacity();\n return this;\n }\n\n getNonZeros() {\n const cardinality = this.cardinality;\n const rows = new Array(cardinality);\n const columns = new Array(cardinality);\n const values = new Array(cardinality);\n var idx = 0;\n this.forEachNonZero((i, j, value) => {\n rows[idx] = i;\n columns[idx] = j;\n values[idx] = value;\n idx++;\n return value;\n });\n return {rows, columns, values};\n }\n\n setThreshold(newThreshold) {\n if (newThreshold !== 0 && newThreshold !== this.threshold) {\n this.threshold = newThreshold;\n this.forEachNonZero((i, j, v) => v);\n }\n return this;\n }\n}\n\nSparseMatrix.prototype.klass = 'Matrix';\n\nSparseMatrix.identity = SparseMatrix.eye;\nSparseMatrix.prototype.tensorProduct = SparseMatrix.prototype.kroneckerProduct;\n\nmodule.exports = SparseMatrix;\n\n/*\n Add dynamically instance and static methods for mathematical operations\n */\n\nvar inplaceOperator = `\n(function %name%(value) {\n if (typeof value === 'number') return this.%name%S(value);\n return this.%name%M(value);\n})\n`;\n\nvar inplaceOperatorScalar = `\n(function %name%S(value) {\n this.forEachNonZero((i, j, v) => v %op% value);\n return this;\n})\n`;\n\nvar inplaceOperatorMatrix = `\n(function %name%M(matrix) {\n matrix.forEachNonZero((i, j, v) => {\n this.set(i, j, this.get(i, j) %op% v);\n return v;\n });\n return this;\n})\n`;\n\nvar staticOperator = `\n(function %name%(matrix, value) {\n var newMatrix = new SparseMatrix(matrix);\n return newMatrix.%name%(value);\n})\n`;\n\nvar inplaceMethod = `\n(function %name%() {\n this.forEachNonZero((i, j, v) => %method%(v));\n return this;\n})\n`;\n\nvar staticMethod = `\n(function %name%(matrix) {\n var newMatrix = new SparseMatrix(matrix);\n return newMatrix.%name%();\n})\n`;\n\nvar operators = [\n // Arithmetic operators\n ['+', 'add'],\n ['-', 'sub', 'subtract'],\n ['*', 'mul', 'multiply'],\n ['/', 'div', 'divide'],\n ['%', 'mod', 'modulus'],\n // Bitwise operators\n ['&', 'and'],\n ['|', 'or'],\n ['^', 'xor'],\n ['<<', 'leftShift'],\n ['>>', 'signPropagatingRightShift'],\n ['>>>', 'rightShift', 'zeroFillRightShift']\n];\n\nfor (var operator of operators) {\n for (var i = 1; i < operator.length; i++) {\n SparseMatrix.prototype[operator[i]] = eval(fillTemplateFunction(inplaceOperator, {name: operator[i], op: operator[0]}));\n SparseMatrix.prototype[operator[i] + 'S'] = eval(fillTemplateFunction(inplaceOperatorScalar, {name: operator[i] + 'S', op: operator[0]}));\n SparseMatrix.prototype[operator[i] + 'M'] = eval(fillTemplateFunction(inplaceOperatorMatrix, {name: operator[i] + 'M', op: operator[0]}));\n\n SparseMatrix[operator[i]] = eval(fillTemplateFunction(staticOperator, {name: operator[i]}));\n }\n}\n\nvar methods = [\n ['~', 'not']\n];\n\n[\n 'abs', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atanh', 'cbrt', 'ceil',\n 'clz32', 'cos', 'cosh', 'exp', 'expm1', 'floor', 'fround', 'log', 'log1p',\n 'log10', 'log2', 'round', 'sign', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc'\n].forEach(function (mathMethod) {\n methods.push(['Math.' + mathMethod, mathMethod]);\n});\n\nfor (var method of methods) {\n for (var i = 1; i < method.length; i++) {\n SparseMatrix.prototype[method[i]] = eval(fillTemplateFunction(inplaceMethod, {name: method[i], method: method[0]}));\n SparseMatrix[method[i]] = eval(fillTemplateFunction(staticMethod, {name: method[i]}));\n }\n}\n\nfunction fillTemplateFunction(template, values) {\n for (var i in values) {\n template = template.replace(new RegExp('%' + i + '%', 'g'), values[i]);\n }\n return template;\n}\n","'use strict';\nvar support = require('./support');\nvar compressions = require('./compressions');\nvar nodeBuffer = require('./nodeBuffer');\n/**\n * Convert a string to a \"binary string\" : a string containing only char codes between 0 and 255.\n * @param {string} str the string to transform.\n * @return {String} the binary string.\n */\nexports.string2binary = function(str) {\n var result = \"\";\n for (var i = 0; i < str.length; i++) {\n result += String.fromCharCode(str.charCodeAt(i) & 0xff);\n }\n return result;\n};\nexports.arrayBuffer2Blob = function(buffer, mimeType) {\n exports.checkSupport(\"blob\");\n\tmimeType = mimeType || 'application/zip';\n\n try {\n // Blob constructor\n return new Blob([buffer], {\n type: mimeType\n });\n }\n catch (e) {\n\n try {\n // deprecated, browser only, old way\n var Builder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder || window.MSBlobBuilder;\n var builder = new Builder();\n builder.append(buffer);\n return builder.getBlob(mimeType);\n }\n catch (e) {\n\n // well, fuck ?!\n throw new Error(\"Bug : can't construct the Blob.\");\n }\n }\n\n\n};\n/**\n * The identity function.\n * @param {Object} input the input.\n * @return {Object} the same input.\n */\nfunction identity(input) {\n return input;\n}\n\n/**\n * Fill in an array with a string.\n * @param {String} str the string to use.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to fill in (will be mutated).\n * @return {Array|ArrayBuffer|Uint8Array|Buffer} the updated array.\n */\nfunction stringToArrayLike(str, array) {\n for (var i = 0; i < str.length; ++i) {\n array[i] = str.charCodeAt(i) & 0xFF;\n }\n return array;\n}\n\n/**\n * Transform an array-like object to a string.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform.\n * @return {String} the result.\n */\nfunction arrayLikeToString(array) {\n // Performances notes :\n // --------------------\n // String.fromCharCode.apply(null, array) is the fastest, see\n // see http://jsperf.com/converting-a-uint8array-to-a-string/2\n // but the stack is limited (and we can get huge arrays !).\n //\n // result += String.fromCharCode(array[i]); generate too many strings !\n //\n // This code is inspired by http://jsperf.com/arraybuffer-to-string-apply-performance/2\n var chunk = 65536;\n var result = [],\n len = array.length,\n type = exports.getTypeOf(array),\n k = 0,\n canUseApply = true;\n try {\n switch(type) {\n case \"uint8array\":\n String.fromCharCode.apply(null, new Uint8Array(0));\n break;\n case \"nodebuffer\":\n String.fromCharCode.apply(null, nodeBuffer(0));\n break;\n }\n } catch(e) {\n canUseApply = false;\n }\n\n // no apply : slow and painful algorithm\n // default browser on android 4.*\n if (!canUseApply) {\n var resultStr = \"\";\n for(var i = 0; i < array.length;i++) {\n resultStr += String.fromCharCode(array[i]);\n }\n return resultStr;\n }\n while (k < len && chunk > 1) {\n try {\n if (type === \"array\" || type === \"nodebuffer\") {\n result.push(String.fromCharCode.apply(null, array.slice(k, Math.min(k + chunk, len))));\n }\n else {\n result.push(String.fromCharCode.apply(null, array.subarray(k, Math.min(k + chunk, len))));\n }\n k += chunk;\n }\n catch (e) {\n chunk = Math.floor(chunk / 2);\n }\n }\n return result.join(\"\");\n}\n\nexports.applyFromCharCode = arrayLikeToString;\n\n\n/**\n * Copy the data from an array-like to an other array-like.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} arrayFrom the origin array.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} arrayTo the destination array which will be mutated.\n * @return {Array|ArrayBuffer|Uint8Array|Buffer} the updated destination array.\n */\nfunction arrayLikeToArrayLike(arrayFrom, arrayTo) {\n for (var i = 0; i < arrayFrom.length; i++) {\n arrayTo[i] = arrayFrom[i];\n }\n return arrayTo;\n}\n\n// a matrix containing functions to transform everything into everything.\nvar transform = {};\n\n// string to ?\ntransform[\"string\"] = {\n \"string\": identity,\n \"array\": function(input) {\n return stringToArrayLike(input, new Array(input.length));\n },\n \"arraybuffer\": function(input) {\n return transform[\"string\"][\"uint8array\"](input).buffer;\n },\n \"uint8array\": function(input) {\n return stringToArrayLike(input, new Uint8Array(input.length));\n },\n \"nodebuffer\": function(input) {\n return stringToArrayLike(input, nodeBuffer(input.length));\n }\n};\n\n// array to ?\ntransform[\"array\"] = {\n \"string\": arrayLikeToString,\n \"array\": identity,\n \"arraybuffer\": function(input) {\n return (new Uint8Array(input)).buffer;\n },\n \"uint8array\": function(input) {\n return new Uint8Array(input);\n },\n \"nodebuffer\": function(input) {\n return nodeBuffer(input);\n }\n};\n\n// arraybuffer to ?\ntransform[\"arraybuffer\"] = {\n \"string\": function(input) {\n return arrayLikeToString(new Uint8Array(input));\n },\n \"array\": function(input) {\n return arrayLikeToArrayLike(new Uint8Array(input), new Array(input.byteLength));\n },\n \"arraybuffer\": identity,\n \"uint8array\": function(input) {\n return new Uint8Array(input);\n },\n \"nodebuffer\": function(input) {\n return nodeBuffer(new Uint8Array(input));\n }\n};\n\n// uint8array to ?\ntransform[\"uint8array\"] = {\n \"string\": arrayLikeToString,\n \"array\": function(input) {\n return arrayLikeToArrayLike(input, new Array(input.length));\n },\n \"arraybuffer\": function(input) {\n return input.buffer;\n },\n \"uint8array\": identity,\n \"nodebuffer\": function(input) {\n return nodeBuffer(input);\n }\n};\n\n// nodebuffer to ?\ntransform[\"nodebuffer\"] = {\n \"string\": arrayLikeToString,\n \"array\": function(input) {\n return arrayLikeToArrayLike(input, new Array(input.length));\n },\n \"arraybuffer\": function(input) {\n return transform[\"nodebuffer\"][\"uint8array\"](input).buffer;\n },\n \"uint8array\": function(input) {\n return arrayLikeToArrayLike(input, new Uint8Array(input.length));\n },\n \"nodebuffer\": identity\n};\n\n/**\n * Transform an input into any type.\n * The supported output type are : string, array, uint8array, arraybuffer, nodebuffer.\n * If no output type is specified, the unmodified input will be returned.\n * @param {String} outputType the output type.\n * @param {String|Array|ArrayBuffer|Uint8Array|Buffer} input the input to convert.\n * @throws {Error} an Error if the browser doesn't support the requested output type.\n */\nexports.transformTo = function(outputType, input) {\n if (!input) {\n // undefined, null, etc\n // an empty string won't harm.\n input = \"\";\n }\n if (!outputType) {\n return input;\n }\n exports.checkSupport(outputType);\n var inputType = exports.getTypeOf(input);\n var result = transform[inputType][outputType](input);\n return result;\n};\n\n/**\n * Return the type of the input.\n * The type will be in a format valid for JSZip.utils.transformTo : string, array, uint8array, arraybuffer.\n * @param {Object} input the input to identify.\n * @return {String} the (lowercase) type of the input.\n */\nexports.getTypeOf = function(input) {\n if (typeof input === \"string\") {\n return \"string\";\n }\n if (Object.prototype.toString.call(input) === \"[object Array]\") {\n return \"array\";\n }\n if (support.nodebuffer && nodeBuffer.test(input)) {\n return \"nodebuffer\";\n }\n if (support.uint8array && input instanceof Uint8Array) {\n return \"uint8array\";\n }\n if (support.arraybuffer && input instanceof ArrayBuffer) {\n return \"arraybuffer\";\n }\n};\n\n/**\n * Throw an exception if the type is not supported.\n * @param {String} type the type to check.\n * @throws {Error} an Error if the browser doesn't support the requested type.\n */\nexports.checkSupport = function(type) {\n var supported = support[type.toLowerCase()];\n if (!supported) {\n throw new Error(type + \" is not supported by this browser\");\n }\n};\nexports.MAX_VALUE_16BITS = 65535;\nexports.MAX_VALUE_32BITS = -1; // well, \"\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF\" is parsed as -1\n\n/**\n * Prettify a string read as binary.\n * @param {string} str the string to prettify.\n * @return {string} a pretty string.\n */\nexports.pretty = function(str) {\n var res = '',\n code, i;\n for (i = 0; i < (str || \"\").length; i++) {\n code = str.charCodeAt(i);\n res += '\\\\x' + (code < 16 ? \"0\" : \"\") + code.toString(16).toUpperCase();\n }\n return res;\n};\n\n/**\n * Find a compression registered in JSZip.\n * @param {string} compressionMethod the method magic to find.\n * @return {Object|null} the JSZip compression object, null if none found.\n */\nexports.findCompression = function(compressionMethod) {\n for (var method in compressions) {\n if (!compressions.hasOwnProperty(method)) {\n continue;\n }\n if (compressions[method].magic === compressionMethod) {\n return compressions[method];\n }\n }\n return null;\n};\n/**\n* Cross-window, cross-Node-context regular expression detection\n* @param {Object} object Anything\n* @return {Boolean} true if the object is a regular expression,\n* false otherwise\n*/\nexports.isRegExp = function (object) {\n return Object.prototype.toString.call(object) === \"[object RegExp]\";\n};\n\n/**\n * Merge the objects passed as parameters into a new one.\n * @private\n * @param {...Object} var_args All objects to merge.\n * @return {Object} a new object with the data of the others.\n */\nexports.extend = function() {\n var result = {}, i, attr;\n for (i = 0; i < arguments.length; i++) { // arguments is not enumerable in some browsers\n for (attr in arguments[i]) {\n if (arguments[i].hasOwnProperty(attr) && typeof result[attr] === \"undefined\") {\n result[attr] = arguments[i][attr];\n }\n }\n }\n return result;\n};\n\n","'use strict';\n\nrequire('./symbol-species');\nvar abstractMatrix = require('./abstractMatrix');\nvar util = require('./util');\n\nclass Matrix extends abstractMatrix(Array) {\n constructor(nRows, nColumns) {\n var i;\n if (arguments.length === 1 && typeof nRows === 'number') {\n return new Array(nRows);\n }\n if (Matrix.isMatrix(nRows)) {\n return nRows.clone();\n } else if (Number.isInteger(nRows) && nRows > 0) { // Create an empty matrix\n super(nRows);\n if (Number.isInteger(nColumns) && nColumns > 0) {\n for (i = 0; i < nRows; i++) {\n this[i] = new Array(nColumns);\n }\n } else {\n throw new TypeError('nColumns must be a positive integer');\n }\n } else if (Array.isArray(nRows)) { // Copy the values from the 2D array\n const matrix = nRows;\n nRows = matrix.length;\n nColumns = matrix[0].length;\n if (typeof nColumns !== 'number' || nColumns === 0) {\n throw new TypeError('Data must be a 2D array with at least one element');\n }\n super(nRows);\n for (i = 0; i < nRows; i++) {\n if (matrix[i].length !== nColumns) {\n throw new RangeError('Inconsistent array dimensions');\n }\n this[i] = [].concat(matrix[i]);\n }\n } else {\n throw new TypeError('First argument must be a positive number or an array');\n }\n this.rows = nRows;\n this.columns = nColumns;\n return this;\n }\n\n set(rowIndex, columnIndex, value) {\n this[rowIndex][columnIndex] = value;\n return this;\n }\n\n get(rowIndex, columnIndex) {\n return this[rowIndex][columnIndex];\n }\n\n /**\n * Creates an exact and independent copy of the matrix\n * @return {Matrix}\n */\n clone() {\n var newMatrix = new this.constructor[Symbol.species](this.rows, this.columns);\n for (var row = 0; row < this.rows; row++) {\n for (var column = 0; column < this.columns; column++) {\n newMatrix.set(row, column, this.get(row, column));\n }\n }\n return newMatrix;\n }\n\n /**\n * Removes a row from the given index\n * @param {number} index - Row index\n * @return {Matrix} this\n */\n removeRow(index) {\n util.checkRowIndex(this, index);\n if (this.rows === 1) {\n throw new RangeError('A matrix cannot have less than one row');\n }\n this.splice(index, 1);\n this.rows -= 1;\n return this;\n }\n\n /**\n * Adds a row at the given index\n * @param {number} [index = this.rows] - Row index\n * @param {Array|Matrix} array - Array or vector\n * @return {Matrix} this\n */\n addRow(index, array) {\n if (array === undefined) {\n array = index;\n index = this.rows;\n }\n util.checkRowIndex(this, index, true);\n array = util.checkRowVector(this, array, true);\n this.splice(index, 0, array);\n this.rows += 1;\n return this;\n }\n\n /**\n * Removes a column from the given index\n * @param {number} index - Column index\n * @return {Matrix} this\n */\n removeColumn(index) {\n util.checkColumnIndex(this, index);\n if (this.columns === 1) {\n throw new RangeError('A matrix cannot have less than one column');\n }\n for (var i = 0; i < this.rows; i++) {\n this[i].splice(index, 1);\n }\n this.columns -= 1;\n return this;\n }\n\n /**\n * Adds a column at the given index\n * @param {number} [index = this.columns] - Column index\n * @param {Array|Matrix} array - Array or vector\n * @return {Matrix} this\n */\n addColumn(index, array) {\n if (typeof array === 'undefined') {\n array = index;\n index = this.columns;\n }\n util.checkColumnIndex(this, index, true);\n array = util.checkColumnVector(this, array);\n for (var i = 0; i < this.rows; i++) {\n this[i].splice(index, 0, array[i]);\n }\n this.columns += 1;\n return this;\n }\n}\n\nexports.Matrix = Matrix;\nMatrix.abstractMatrix = abstractMatrix;\n","'use strict';\n\nconst toString = Object.prototype.toString;\n\nfunction isAnyArray(object) {\n return toString.call(object).endsWith('Array]');\n}\n\nmodule.exports = isAnyArray;\n","'use strict';\n\n\nvar TYPED_OK = (typeof Uint8Array !== 'undefined') &&\n (typeof Uint16Array !== 'undefined') &&\n (typeof Int32Array !== 'undefined');\n\nfunction _has(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nexports.assign = function (obj /*from1, from2, from3, ...*/) {\n var sources = Array.prototype.slice.call(arguments, 1);\n while (sources.length) {\n var source = sources.shift();\n if (!source) { continue; }\n\n if (typeof source !== 'object') {\n throw new TypeError(source + 'must be non-object');\n }\n\n for (var p in source) {\n if (_has(source, p)) {\n obj[p] = source[p];\n }\n }\n }\n\n return obj;\n};\n\n\n// reduce buffer size, avoiding mem copy\nexports.shrinkBuf = function (buf, size) {\n if (buf.length === size) { return buf; }\n if (buf.subarray) { return buf.subarray(0, size); }\n buf.length = size;\n return buf;\n};\n\n\nvar fnTyped = {\n arraySet: function (dest, src, src_offs, len, dest_offs) {\n if (src.subarray && dest.subarray) {\n dest.set(src.subarray(src_offs, src_offs + len), dest_offs);\n return;\n }\n // Fallback to ordinary array\n for (var i = 0; i < len; i++) {\n dest[dest_offs + i] = src[src_offs + i];\n }\n },\n // Join array of chunks to single array.\n flattenChunks: function (chunks) {\n var i, l, len, pos, chunk, result;\n\n // calculate data length\n len = 0;\n for (i = 0, l = chunks.length; i < l; i++) {\n len += chunks[i].length;\n }\n\n // join chunks\n result = new Uint8Array(len);\n pos = 0;\n for (i = 0, l = chunks.length; i < l; i++) {\n chunk = chunks[i];\n result.set(chunk, pos);\n pos += chunk.length;\n }\n\n return result;\n }\n};\n\nvar fnUntyped = {\n arraySet: function (dest, src, src_offs, len, dest_offs) {\n for (var i = 0; i < len; i++) {\n dest[dest_offs + i] = src[src_offs + i];\n }\n },\n // Join array of chunks to single array.\n flattenChunks: function (chunks) {\n return [].concat.apply([], chunks);\n }\n};\n\n\n// Enable/Disable typed arrays use, for testing\n//\nexports.setTyped = function (on) {\n if (on) {\n exports.Buf8 = Uint8Array;\n exports.Buf16 = Uint16Array;\n exports.Buf32 = Int32Array;\n exports.assign(exports, fnTyped);\n } else {\n exports.Buf8 = Array;\n exports.Buf16 = Array;\n exports.Buf32 = Array;\n exports.assign(exports, fnUntyped);\n }\n};\n\nexports.setTyped(TYPED_OK);\n","'use strict';\n\nvar abstractMatrix = require('../abstractMatrix');\nvar Matrix = require('../matrix');\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 static get [Symbol.species]() {\n return Matrix.Matrix;\n }\n}\n\nmodule.exports = BaseView;\n","'use strict';\n\nexports.array = require('./array');\nexports.matrix = require('./matrix');\n","\nconst patterns = ['s', 'd', 't', 'q', 'quint', 'h', 'sept', 'o', 'n'];\n\nexport function nmrJ(Js, options = {}) {\n var jString = '';\n options = Object.assign({}, { separator: ', ', nbDecimal: 2 }, options);\n let j, i;\n for (i = 0; i < Js.length; i++) {\n j = Js[i];\n if (j.length > 11) {\n j += options.separator;\n }\n jString += `${j.multiplicity} ${j.coupling.toFixed(options.nbDecimal)}`;\n }\n return jString;\n}\n\nexport function joinCoupling(signal, tolerance = 0.05) {\n var jc = signal.j;\n if (jc && jc.length > 0) {\n var cont = jc[0].assignment ? jc[0].assignment.length : 1;\n var pattern = '';\n var newNmrJs = [];\n var diaIDs = [];\n var atoms = [];\n jc.sort(function (a, b) {\n return b.coupling - a.coupling;\n });\n if (jc[0].diaID) {\n diaIDs = [jc[0].diaID];\n }\n if (jc[0].assignment) {\n atoms = jc[0].assignment;\n }\n for (var i = 0; i < jc.length - 1; i++) {\n if (Math.abs(jc[i].coupling - jc[i + 1].coupling) < tolerance) {\n cont += jc[i + 1].assignment ? jc[i + 1].assignment.length : 1;\n diaIDs.push(jc[i].diaID);\n atoms = atoms.concat(jc[i + 1].assignment);\n } else {\n let jTemp = {\n coupling: Math.abs(jc[i].coupling),\n multiplicity: patterns[cont]\n };\n if (diaIDs.length > 0) {\n jTemp.diaID = diaIDs;\n }\n if (atoms.length > 0) {\n jTemp.assignment = atoms;\n }\n newNmrJs.push(jTemp);\n if (jc[0].diaID) {\n diaIDs = [jc[i].diaID];\n }\n if (jc[0].assignment) {\n atoms = jc[i].assignment;\n }\n pattern += patterns[cont];\n cont = jc[i + 1].assignment ? jc[i + 1].assignment.length : 1;\n }\n }\n let jTemp = {\n coupling: Math.abs(jc[i].coupling),\n multiplicity: patterns[cont]\n };\n if (diaIDs.length > 0) {\n jTemp.diaID = diaIDs;\n }\n if (atoms.length > 0) {\n jTemp.assignment = atoms;\n }\n newNmrJs.push(jTemp);\n\n pattern += patterns[cont];\n signal.j = newNmrJs;\n } else if (signal.delta) {\n pattern = 's';\n } else {\n pattern = 'm';\n }\n return pattern;\n}\n\nexport function group(signals, options = {}) {\n var i, k;\n for (i = 0; i < signals.length; i++) {\n var j = signals[i].j;\n if (j && j.length > 0) {\n for (k = j.length - 2; k >= 0; k--) {\n for (var m = j.length - 1; m > k; m--) {\n if (j[k].diaID === j[m].diaID &&\n j[k].coupling === j[m].coupling &&\n j[k].distance === j[m].distance) {\n j[k].assignment = j[k].assignment.concat(j[m].assignment);\n j.splice(m, 1);\n }\n }\n }\n }\n }\n signals.sort((a, b) => {\n if (a.diaIDs[0] < b.diaIDs[0]) return -1;\n if (a.diaIDs[0] > b.diaIDs[0]) return 1;\n return 0;\n });\n\n for (i = signals.length - 2; i >= 0; i--) {\n if (signals[i].diaIDs[0] === signals[i + 1].diaIDs[0]) {\n signals[i].nbAtoms += signals[i + 1].nbAtoms;\n signals[i].atomIDs = signals[i].atomIDs.concat(signals[i + 1].atomIDs);\n signals.splice(i + 1, 1);\n }\n }\n\n for (i = 0; i < signals.length; i++) {\n j = signals[i].j;\n if (j) {\n for (k = 0; k < j.length; k++) {\n j[k].multiplicity = patterns[j[k].assignment.length];\n }\n // signals[i].multiplicity = module.exports.compilePattern(signals[i], options.tolerance);\n }\n // console.log(signals[i]);\n signals[i].multiplicity = module.exports.compilePattern(signals[i], options.tolerance);\n }\n return signals;\n}\n\n\nexport function compilePattern(signal, tolerance = 0.05) {\n var jc = signal.j;\n var pattern = '';\n if (jc && jc.length > 0) {\n var cont = jc[0].assignment ? jc[0].assignment.length : 0;\n jc.sort(function (a, b) {\n return b.coupling - a.coupling;\n });\n for (var i = 0; i < jc.length - 1; i++) {\n if (Math.abs(jc[i].coupling - jc[i + 1].coupling) < tolerance) {\n cont += jc[i + 1].assignment ? jc[i + 1].assignment.length : 1;\n } else {\n pattern += patterns[cont];\n cont = jc[i + 1].assignment ? jc[i + 1].assignment.length : 1;\n }\n }\n pattern += patterns[cont];\n } else if (signal.delta) {\n pattern = 's';\n } else {\n pattern = 'm';\n }\n return pattern;\n}\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\nfunction createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = nativeMin(toInteger(precision), 292);\n if (precision) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\n/**\n * Computes `number` rounded to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round.\n * @param {number} [precision=0] The precision to round to.\n * @returns {number} Returns the rounded number.\n * @example\n *\n * _.round(4.006);\n * // => 4\n *\n * _.round(4.006, 2);\n * // => 4.01\n *\n * _.round(4060, -2);\n * // => 4100\n */\nvar round = createRound('round');\n\nmodule.exports = round;\n","'use strict';\nexports.base64 = true;\nexports.array = true;\nexports.string = true;\nexports.arraybuffer = typeof ArrayBuffer !== \"undefined\" && typeof Uint8Array !== \"undefined\";\n// contains true if JSZip can read/generate nodejs Buffer, false otherwise.\n// Browserify will provide a Buffer implementation for browsers, which is\n// an augmented Uint8Array (i.e., can be used as either Buffer or U8).\nexports.nodebuffer = typeof Buffer !== \"undefined\";\n// contains true if JSZip can read/generate Uint8Array, false otherwise.\nexports.uint8array = typeof Uint8Array !== \"undefined\";\n\nif (typeof ArrayBuffer === \"undefined\") {\n exports.blob = false;\n}\nelse {\n var buffer = new ArrayBuffer(0);\n try {\n exports.blob = new Blob([buffer], {\n type: \"application/zip\"\n }).size === 0;\n }\n catch (e) {\n try {\n var Builder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder || window.MSBlobBuilder;\n var builder = new Builder();\n builder.append(buffer);\n exports.blob = builder.getBlob('application/zip').size === 0;\n }\n catch (e) {\n exports.blob = false;\n }\n }\n}\n","\"use strict\";\n\nconst Converter = require(\"jcampconverter\");\nconst IOBuffer = require('iobuffer');\nconst JSZip = require(\"jszip\");\n\n// constants\nvar BINARY = 1;\nvar TEXT = 2;\n\n\nfunction readZIP(zipFile, options) {\n options = options || {};\n\n var zip = new JSZip();\n zip.load(zipFile, options);\n\n var files = {\n 'ser': BINARY,\n 'fid': BINARY,\n 'acqus': TEXT,\n 'acqu2s': TEXT,\n 'procs': TEXT,\n 'proc2s': TEXT,\n '1r': BINARY,\n '1i': BINARY,\n '2rr': BINARY\n };\n var folders = zip.filter(function (relativePath, file) {\n if(relativePath.indexOf(\"ser\")>=0||relativePath.indexOf(\"fid\")>=0\n ||relativePath.indexOf(\"1r\")>=0||relativePath.indexOf(\"2rr\")>=0){\n return true;\n }\n\n return false;\n\n });\n\n var spectra = new Array(folders.length);\n\n for(var i = 0; i < folders.length; ++i) {\n var len = folders[i].name.length;\n var name = folders[i].name;\n name = name.substr(0,name.lastIndexOf(\"/\")+1);\n var currFolder = zip.folder(name);\n var currFiles = currFolder.filter(function (relativePath, file) {\n return files[relativePath] ? true : false;\n });\n var brukerFiles = {};\n if(name.indexOf(\"pdata\")>=0){\n brukerFiles['acqus'] = zip.file(name.replace(/pdata\\/[0-9]\\//,\"acqus\")).asText();\n }\n for(var j = 0; j < currFiles.length; ++j) {\n var idx = currFiles[j].name.lastIndexOf('/');\n var name = currFiles[j].name.substr(idx + 1);\n if(files[name] === BINARY) {\n brukerFiles[name] = new IOBuffer(currFiles[j].asArrayBuffer());\n } else {\n brukerFiles[name] = currFiles[j].asText();\n }\n }\n //console.log(folders[i].name);\n spectra[i] = {\"filename\":folders[i].name,value:convert(brukerFiles,options)};\n }\n\n return spectra;\n}\n\nfunction convert(brukerFiles, options) {\n options = options || {};\n var start = new Date();\n var result;\n if(brukerFiles['ser'] || brukerFiles['2rr']) {\n result = convert2D(brukerFiles, options);\n } else if(brukerFiles['1r'] || brukerFiles['1i'] || brukerFiles['fid']) {\n result = convert1D(brukerFiles, options);\n } else {\n throw new RangeError('The current files are invalid');\n }\n\n if (result.twoD && !options.noContours) {\n //console.log(\"Countours\");\n add2D(result);\n if (result.profiling) result.profiling.push({\n action: 'Finished countour plot calculation',\n time: new Date() - start\n });\n if (!options.keepSpectra) {\n delete result.spectra;\n }\n }\n\n var spectra = result.spectra;\n if (options.xy) { // the spectraData should not be a oneD array but an object with x and y\n if (spectra.length > 0) {\n for (var i=0; i0) {\n for (var j=0; j= 0; --k) {\n toSave.data[0][2*k] = x;\n toSave.data[0][2*k+1] = file.readInt32();\n if(toSave.data[0][2*k+1]===null||isNaN(toSave.data[0][2*k+1])) {\n toSave.data[0][2*k+1] = 0;\n }\n x += deltaX;\n }\n }\n\n spectra.spectra.push(toSave);\n }\n}\n\nfunction parseData(file, options) {\n var keepRecordsRegExp=/.*/;\n if (options.keepRecordsRegExp) keepRecordsRegExp=options.keepRecordsRegExp;\n return Converter.convert(file, {\n keepRecordsRegExp:keepRecordsRegExp\n });\n}\n\nfunction setFIDSpectrumData(file, spectra) {\n var td = spectra.info['$TD'] = parseInt(spectra.info['$TD']);\n\n var SW_h = spectra.info['$SWH'] = parseFloat(spectra.info['$SWH']);\n var SW = spectra.info['$SW'] = parseFloat(spectra.info['$SW']);\n\n var SF = spectra.info['$SFO1'] = parseFloat(spectra.info['$SFO1']);\n var BF = parseFloat(spectra.info['$BF1']);\n spectra.info['$BF1'] = BF;\n\n //var DW = 1 / (2 * SW_h);\n //var AQ = td * DW;\n var AQ = SW;\n var DW = AQ/(td-1);\n\n //console.log(DW+\" \"+SW+\" \"+td);\n var endian = parseInt(spectra.info[\"$BYTORDP\"]);\n endian = endian ? 0 : 1;\n\n if(endian)\n file.setLittleEndian();\n else\n file.setBigEndian();\n\n var nbSubSpectra = spectra.info.nbSubSpectra ? spectra.info.nbSubSpectra : 1;\n spectra.spectra = new Array(nbSubSpectra);\n \n for(var j = 0; j < nbSubSpectra/2; j++) {\n var toSave = {\n dataType : \"NMR FID\",\n dataTable : \"(X++(R..R))\",\n nbPoints : td,\n firstX : 0,\n lastX : AQ,\n nucleus : spectra.info[\"$NUC1\"] ? spectra.info[\"$NUC1\"] : undefined,\n xUnit : \"Sec\",\n yUnit : \"Arbitrary\",\n data:[new Array(2*td)],//[{x:new Array(td),y:new Array(td)}],\n isXYdata:true,\n observeFrequency:SF,\n title:spectra.info['TITLE'],\n deltaX:DW\n };\n spectra.spectra[j*2] = toSave;\n\n toSave = {\n dataType : \"NMR FID\",\n dataTable : \"(X++(I..I))\",\n nbPoints : td,\n firstX : 0,\n lastX : AQ,\n nucleus : spectra.info[\"$NUC1\"] ? spectra.info[\"$NUC1\"] : undefined,\n xUnit : \"Sec\",\n yUnit : \"Arbitrary\",\n data:[new Array(2*td)],//[{x:new Array(td),y:new Array(td)}],\n isXYdata:true,\n observeFrequency:SF,\n title:spectra.info['TITLE'],\n deltaX:DW\n };\n spectra.spectra[j*2+1] = toSave;\n \n var x = 0;\n var y;\n for(var i = 0; file.available(8)&&i
maxZ) maxZ = spectra[i].data[0][j * 2 + 1];\n if (i !== 0 && j !== 0) {\n noise += Math.abs(z[i][j] - z[i][j - 1]) + Math.abs(z[i][j] - z[i - 1][j]);\n }\n }\n }\n return {\n z: z,\n minX: spectra[0].data[0][0],\n maxX: spectra[0].data[0][spectra[0].data[0].length - 2],\n minY: spectra[0].pageValue,\n maxY: spectra[ySize - 1].pageValue,\n minZ: minZ,\n maxZ: maxZ,\n noise: noise / ((ySize - 1) * (xSize - 1) * 2)\n };\n\n}\n\nfunction add2D(result) {\n var zData = convertTo3DZ(result.spectra);\n result.contourLines = generateContourLines(zData);\n delete zData.z;\n result.minMax = zData;\n}\n\n\nfunction generateContourLines(zData, options) {\n //console.time('generateContourLines');\n var noise = zData.noise;\n var z = zData.z;\n var contourLevels = [];\n var nbLevels = 7;\n var povarHeight = new Float32Array(4);\n var isOver = [];\n var nbSubSpectra = z.length;\n var nbPovars = z[0].length;\n var pAx, pAy, pBx, pBy;\n\n var x0 = zData.minX;\n var xN = zData.maxX;\n var dx = (xN - x0) / (nbPovars - 1);\n var y0 = zData.minY;\n var yN = zData.maxY;\n var dy = (yN - y0) / (nbSubSpectra - 1);\n var minZ = zData.minZ;\n var maxZ = zData.maxZ;\n\n //System.out.prvarln('y0 '+y0+' yN '+yN);\n // -------------------------\n // Povars attribution\n //\n // 0----1\n // | / |\n // | / |\n // 2----3\n //\n // ---------------------d------\n\n var lineZValue;\n for (var level = 0; level < nbLevels * 2; level++) { // multiply by 2 for positif and negatif\n var contourLevel = {};\n contourLevels.push(contourLevel);\n var side = level % 2;\n if (side === 0) {\n lineZValue = (maxZ - 5 * noise) * Math.exp(level / 2 - nbLevels) + 5 * noise;\n } else {\n lineZValue = -(maxZ - 5 * noise) * Math.exp(level / 2 - nbLevels) - 5 * noise;\n }\n var lines = [];\n contourLevel.zValue = lineZValue;\n contourLevel.lines = lines;\n\n if (lineZValue <= minZ || lineZValue >= maxZ) continue;\n\n for (var iSubSpectra = 0; iSubSpectra < nbSubSpectra - 1; iSubSpectra++) {\n for (var povar = 0; povar < nbPovars - 1; povar++) {\n povarHeight[0] = z[iSubSpectra][povar];\n povarHeight[1] = z[iSubSpectra][povar + 1];\n povarHeight[2] = z[(iSubSpectra + 1)][povar];\n povarHeight[3] = z[(iSubSpectra + 1)][(povar + 1)];\n\n for (var i = 0; i < 4; i++) {\n isOver[i] = (povarHeight[i] > lineZValue);\n }\n\n // Example povar0 is over the plane and povar1 and\n // povar2 are below, we find the varersections and add\n // the segment\n if (isOver[0] !== isOver[1] && isOver[0] !== isOver[2]) {\n pAx = povar + (lineZValue - povarHeight[0]) / (povarHeight[1] - povarHeight[0]);\n pAy = iSubSpectra;\n pBx = povar;\n pBy = iSubSpectra + (lineZValue - povarHeight[0]) / (povarHeight[2] - povarHeight[0]);\n lines.push(pAx * dx + x0, pAy * dy + y0, pBx * dx + x0, pBy * dy + y0);\n }\n if (isOver[3] !== isOver[1] && isOver[3] !== isOver[2]) {\n pAx = povar + 1;\n pAy = iSubSpectra + 1 - (lineZValue - povarHeight[3]) / (povarHeight[1] - povarHeight[3]);\n pBx = povar + 1 - (lineZValue - povarHeight[3]) / (povarHeight[2] - povarHeight[3]);\n pBy = iSubSpectra + 1;\n lines.push(pAx * dx + x0, pAy * dy + y0, pBx * dx + x0, pBy * dy + y0);\n }\n // test around the diagonal\n if (isOver[1] !== isOver[2]) {\n pAx = povar + 1 - (lineZValue - povarHeight[1]) / (povarHeight[2] - povarHeight[1]);\n pAy = iSubSpectra + (lineZValue - povarHeight[1]) / (povarHeight[2] - povarHeight[1]);\n if (isOver[1] !== isOver[0]) {\n pBx = povar + 1 - (lineZValue - povarHeight[1]) / (povarHeight[0] - povarHeight[1]);\n pBy = iSubSpectra;\n lines.push(pAx * dx + x0, pAy * dy + y0, pBx * dx + x0, pBy * dy + y0);\n }\n if (isOver[2] !== isOver[0]) {\n pBx = povar;\n pBy = iSubSpectra + 1 - (lineZValue - povarHeight[2]) / (povarHeight[0] - povarHeight[2]);\n lines.push(pAx * dx + x0, pAy * dy + y0, pBx * dx + x0, pBy * dy + y0);\n }\n if (isOver[1] !== isOver[3]) {\n pBx = povar + 1;\n pBy = iSubSpectra + (lineZValue - povarHeight[1]) / (povarHeight[3] - povarHeight[1]);\n lines.push(pAx * dx + x0, pAy * dy + y0, pBx * dx + x0, pBy * dy + y0);\n }\n if (isOver[2] !== isOver[3]) {\n pBx = povar + (lineZValue - povarHeight[2]) / (povarHeight[3] - povarHeight[2]);\n pBy = iSubSpectra + 1;\n lines.push(pAx * dx + x0, pAy * dy + y0, pBx * dx + x0, pBy * dy + y0);\n }\n }\n }\n }\n }\n // console.timeEnd('generateContourLines');\n return {\n minX: zData.minX,\n maxX: zData.maxX,\n minY: zData.minY,\n maxY: zData.maxY,\n segments: contourLevels\n };\n //return contourLevels;\n}\n\n\nmodule.exports = {\n convertZip: readZIP,\n converFolder: convert\n};","'use strict';\n\nexports.FFTUtils = require(\"./FFTUtils\");\nexports.FFT = require('./fftlib');\n","'use strict';\n\nvar Matrix = require('./matrix');\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 */\nexports.checkRowIndex = function checkRowIndex(matrix, index, outer) {\n var 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 */\nexports.checkColumnIndex = function checkColumnIndex(matrix, index, outer) {\n var 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 */\nexports.checkRowVector = function checkRowVector(matrix, vector) {\n if (vector.to1DArray) {\n vector = vector.to1DArray();\n }\n if (vector.length !== matrix.columns) {\n throw new RangeError('vector size must be the same as the number of columns');\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 */\nexports.checkColumnVector = function 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\nexports.checkIndices = function checkIndices(matrix, rowIndices, columnIndices) {\n var rowOut = rowIndices.some(r => {\n return r < 0 || r >= matrix.rows;\n\n });\n\n var columnOut = columnIndices.some(c => {\n return c < 0 || c >= matrix.columns;\n });\n\n if (rowOut || columnOut) {\n throw new RangeError('Indices are out of range');\n }\n\n if (typeof rowIndices !== 'object' || typeof columnIndices !== 'object') {\n throw new TypeError('Unexpected type for row/column indices');\n }\n if (!Array.isArray(rowIndices)) rowIndices = Array.from(rowIndices);\n if (!Array.isArray(columnIndices)) rowIndices = Array.from(columnIndices);\n\n return {\n row: rowIndices,\n column: columnIndices\n };\n};\n\nexports.checkRange = function checkRange(matrix, startRow, endRow, startColumn, endColumn) {\n if (arguments.length !== 5) throw new TypeError('Invalid argument type');\n var notAllNumbers = Array.from(arguments).slice(1).some(function (arg) {\n return typeof arg !== 'number';\n });\n if (notAllNumbers) throw new TypeError('Invalid argument type');\n if (startRow > endRow || startColumn > endColumn || startRow < 0 || startRow >= matrix.rows || endRow < 0 || endRow >= matrix.rows || startColumn < 0 || startColumn >= matrix.columns || endColumn < 0 || endColumn >= matrix.columns) {\n throw new RangeError('Submatrix indices are out of range');\n }\n};\n\nexports.getRange = function getRange(from, to) {\n var arr = new Array(to - from + 1);\n for (var i = 0; i < arr.length; i++) {\n arr[i] = from + i;\n }\n return arr;\n};\n\nexports.sumByRow = function sumByRow(matrix) {\n var sum = Matrix.Matrix.zeros(matrix.rows, 1);\n for (var i = 0; i < matrix.rows; ++i) {\n for (var j = 0; j < matrix.columns; ++j) {\n sum.set(i, 0, sum.get(i, 0) + matrix.get(i, j));\n }\n }\n return sum;\n};\n\nexports.sumByColumn = function sumByColumn(matrix) {\n var sum = Matrix.Matrix.zeros(1, matrix.columns);\n for (var i = 0; i < matrix.rows; ++i) {\n for (var j = 0; j < matrix.columns; ++j) {\n sum.set(0, j, sum.get(0, j) + matrix.get(i, j));\n }\n }\n return sum;\n};\n\nexports.sumAll = function sumAll(matrix) {\n var v = 0;\n for (var i = 0; i < matrix.rows; i++) {\n for (var j = 0; j < matrix.columns; j++) {\n v += matrix.get(i, j);\n }\n }\n return v;\n};\n","'use strict';\n\nfunction getConverter() {\n // the following RegExp can only be used for XYdata, some peakTables have values with a \"E-5\" ...\n const ntuplesSeparator = /[, \\t]+/;\n const GC_MS_FIELDS = ['TIC', '.RIC', 'SCANNUMBER'];\n\n function convertToFloatArray(stringArray) {\n var l = stringArray.length;\n var floatArray = new Array(l);\n for (var i = 0; i < l; i++) {\n floatArray[i] = parseFloat(stringArray[i]);\n }\n return floatArray;\n }\n\n class Spectrum {}\n\n const defaultOptions = {\n keepRecordsRegExp: /^$/,\n xy: false,\n withoutXY: false,\n chromatogram: false,\n keepSpectra: false,\n noContour: false,\n nbContourLevels: 7,\n noiseMultiplier: 5\n };\n\n function convert(jcamp, options) {\n options = Object.assign({}, defaultOptions, options);\n\n var wantXY = !options.withoutXY;\n\n var start = Date.now();\n\n var ntuples = {};\n var ldr, dataLabel, dataValue, ldrs;\n var i, ii, j, position, endLine, infos;\n\n var result = {};\n result.profiling = [];\n result.logs = [];\n var spectra = [];\n result.spectra = spectra;\n result.info = {};\n var spectrum = new Spectrum();\n\n if (!(typeof jcamp === 'string')) {\n throw new TypeError('the JCAMP should be a string');\n }\n\n if (result.profiling) {\n result.profiling.push({\n action: 'Before split to LDRS',\n time: Date.now() - start\n });\n }\n\n ldrs = jcamp.split(/[\\r\\n]+##/);\n\n if (result.profiling) {\n result.profiling.push({\n action: 'Split to LDRS',\n time: Date.now() - start\n });\n }\n\n if (ldrs[0]) ldrs[0] = ldrs[0].replace(/^[\\r\\n ]*##/, '');\n\n for (i = 0, ii = ldrs.length; i < ii; i++) {\n ldr = ldrs[i];\n // This is a new LDR\n position = ldr.indexOf('=');\n if (position > 0) {\n dataLabel = ldr.substring(0, position);\n dataValue = ldr.substring(position + 1).trim();\n } else {\n dataLabel = ldr;\n dataValue = '';\n }\n dataLabel = dataLabel.replace(/[_ -]/g, '').toUpperCase();\n\n if (dataLabel === 'DATATABLE') {\n endLine = dataValue.indexOf('\\n');\n if (endLine === -1) endLine = dataValue.indexOf('\\r');\n if (endLine > 0) {\n var xIndex = -1;\n var yIndex = -1;\n // ##DATA TABLE= (X++(I..I)), XYDATA\n // We need to find the variables\n\n infos = dataValue.substring(0, endLine).split(/[ ,;\\t]+/);\n if (infos[0].indexOf('++') > 0) {\n var firstVariable = infos[0].replace(\n /.*\\(([a-zA-Z0-9]+)\\+\\+.*/,\n '$1'\n );\n var secondVariable = infos[0].replace(\n /.*\\.\\.([a-zA-Z0-9]+).*/,\n '$1'\n );\n xIndex = ntuples.symbol.indexOf(firstVariable);\n yIndex = ntuples.symbol.indexOf(secondVariable);\n }\n\n if (xIndex === -1) xIndex = 0;\n if (yIndex === -1) yIndex = 0;\n\n if (ntuples.first) {\n if (ntuples.first.length > xIndex) {\n spectrum.firstX = ntuples.first[xIndex];\n }\n if (ntuples.first.length > yIndex) {\n spectrum.firstY = ntuples.first[yIndex];\n }\n }\n if (ntuples.last) {\n if (ntuples.last.length > xIndex) {\n spectrum.lastX = ntuples.last[xIndex];\n }\n if (ntuples.last.length > yIndex) {\n spectrum.lastY = ntuples.last[yIndex];\n }\n }\n if (ntuples.vardim && ntuples.vardim.length > xIndex) {\n spectrum.nbPoints = ntuples.vardim[xIndex];\n }\n if (ntuples.factor) {\n if (ntuples.factor.length > xIndex) {\n spectrum.xFactor = ntuples.factor[xIndex];\n }\n if (ntuples.factor.length > yIndex) {\n spectrum.yFactor = ntuples.factor[yIndex];\n }\n }\n if (ntuples.units) {\n if (ntuples.units.length > xIndex) {\n spectrum.xUnit = ntuples.units[xIndex];\n }\n if (ntuples.units.length > yIndex) {\n spectrum.yUnit = ntuples.units[yIndex];\n }\n }\n spectrum.datatable = infos[0];\n if (infos[1] && infos[1].indexOf('PEAKS') > -1) {\n dataLabel = 'PEAKTABLE';\n } else if (\n infos[1] &&\n (infos[1].indexOf('XYDATA') || infos[0].indexOf('++') > 0)\n ) {\n dataLabel = 'XYDATA';\n spectrum.deltaX =\n (spectrum.lastX - spectrum.firstX) / (spectrum.nbPoints - 1);\n }\n }\n }\n\n if (dataLabel === 'XYDATA') {\n if (wantXY) {\n prepareSpectrum(result, spectrum);\n // well apparently we should still consider it is a PEAK TABLE if there are no '++' after\n if (dataValue.match(/.*\\+\\+.*/)) {\n if (!spectrum.deltaX) {\n spectrum.deltaX =\n (spectrum.lastX - spectrum.firstX) / (spectrum.nbPoints - 1);\n }\n fastParseXYData(spectrum, dataValue, result);\n } else {\n parsePeakTable(spectrum, dataValue, result);\n }\n spectra.push(spectrum);\n spectrum = new Spectrum();\n }\n continue;\n } else if (dataLabel === 'PEAKTABLE') {\n if (wantXY) {\n prepareSpectrum(result, spectrum);\n parsePeakTable(spectrum, dataValue, result);\n spectra.push(spectrum);\n spectrum = new Spectrum();\n }\n continue;\n }\n\n if (dataLabel === 'TITLE') {\n spectrum.title = dataValue;\n } else if (dataLabel === 'DATATYPE') {\n spectrum.dataType = dataValue;\n if (dataValue.indexOf('nD') > -1) {\n result.twoD = true;\n }\n } else if (dataLabel === 'NTUPLES') {\n if (dataValue.indexOf('nD') > -1) {\n result.twoD = true;\n }\n } else if (dataLabel === 'XUNITS') {\n spectrum.xUnit = dataValue;\n } else if (dataLabel === 'YUNITS') {\n spectrum.yUnit = dataValue;\n } else if (dataLabel === 'FIRSTX') {\n spectrum.firstX = parseFloat(dataValue);\n } else if (dataLabel === 'LASTX') {\n spectrum.lastX = parseFloat(dataValue);\n } else if (dataLabel === 'FIRSTY') {\n spectrum.firstY = parseFloat(dataValue);\n } else if (dataLabel === 'LASTY') {\n spectrum.lastY = parseFloat(dataValue);\n } else if (dataLabel === 'NPOINTS') {\n spectrum.nbPoints = parseFloat(dataValue);\n } else if (dataLabel === 'XFACTOR') {\n spectrum.xFactor = parseFloat(dataValue);\n } else if (dataLabel === 'YFACTOR') {\n spectrum.yFactor = parseFloat(dataValue);\n } else if (dataLabel === 'DELTAX') {\n spectrum.deltaX = parseFloat(dataValue);\n } else if (dataLabel === '.OBSERVEFREQUENCY' || dataLabel === '$SFO1') {\n if (!spectrum.observeFrequency) {\n spectrum.observeFrequency = parseFloat(dataValue);\n }\n } else if (dataLabel === '.OBSERVENUCLEUS') {\n if (!spectrum.xType) {\n result.xType = dataValue.replace(/[^a-zA-Z0-9]/g, '');\n }\n } else if (dataLabel === '$SFO2') {\n if (!result.indirectFrequency) {\n result.indirectFrequency = parseFloat(dataValue);\n }\n } else if (dataLabel === '$OFFSET') {\n // OFFSET for Bruker spectra\n result.shiftOffsetNum = 0;\n if (!result.shiftOffsetVal) {\n result.shiftOffsetVal = parseFloat(dataValue);\n }\n } else if (dataLabel === '$REFERENCEPOINT') {\n // OFFSET for Varian spectra\n // if we activate this part it does not work for ACD specmanager\n // } else if (dataLabel=='.SHIFTREFERENCE') { // OFFSET FOR Bruker Spectra\n // var parts = dataValue.split(/ *, */);\n // result.shiftOffsetNum = parseInt(parts[2].trim());\n // result.shiftOffsetVal = parseFloat(parts[3].trim());\n } else if (dataLabel === 'VARNAME') {\n ntuples.varname = dataValue.split(ntuplesSeparator);\n } else if (dataLabel === 'SYMBOL') {\n ntuples.symbol = dataValue.split(ntuplesSeparator);\n } else if (dataLabel === 'VARTYPE') {\n ntuples.vartype = dataValue.split(ntuplesSeparator);\n } else if (dataLabel === 'VARFORM') {\n ntuples.varform = dataValue.split(ntuplesSeparator);\n } else if (dataLabel === 'VARDIM') {\n ntuples.vardim = convertToFloatArray(dataValue.split(ntuplesSeparator));\n } else if (dataLabel === 'UNITS') {\n ntuples.units = dataValue.split(ntuplesSeparator);\n } else if (dataLabel === 'FACTOR') {\n ntuples.factor = convertToFloatArray(dataValue.split(ntuplesSeparator));\n } else if (dataLabel === 'FIRST') {\n ntuples.first = convertToFloatArray(dataValue.split(ntuplesSeparator));\n } else if (dataLabel === 'LAST') {\n ntuples.last = convertToFloatArray(dataValue.split(ntuplesSeparator));\n } else if (dataLabel === 'MIN') {\n ntuples.min = convertToFloatArray(dataValue.split(ntuplesSeparator));\n } else if (dataLabel === 'MAX') {\n ntuples.max = convertToFloatArray(dataValue.split(ntuplesSeparator));\n } else if (dataLabel === '.NUCLEUS') {\n if (result.twoD) {\n result.yType = dataValue.split(ntuplesSeparator)[0];\n }\n } else if (dataLabel === 'PAGE') {\n spectrum.page = dataValue.trim();\n spectrum.pageValue = parseFloat(dataValue.replace(/^.*=/, ''));\n spectrum.pageSymbol = spectrum.page.replace(/[=].*/, '');\n var pageSymbolIndex = ntuples.symbol.indexOf(spectrum.pageSymbol);\n var unit = '';\n if (ntuples.units && ntuples.units[pageSymbolIndex]) {\n unit = ntuples.units[pageSymbolIndex];\n }\n if (result.indirectFrequency && unit !== 'PPM') {\n spectrum.pageValue /= result.indirectFrequency;\n }\n } else if (dataLabel === 'RETENTIONTIME') {\n spectrum.pageValue = parseFloat(dataValue);\n } else if (isMSField(dataLabel)) {\n spectrum[convertMSFieldToLabel(dataLabel)] = dataValue;\n }\n if (dataLabel.match(options.keepRecordsRegExp)) {\n result.info[dataLabel] = dataValue.trim();\n }\n }\n\n if (result.profiling) {\n result.profiling.push({\n action: 'Finished parsing',\n time: Date.now() - start\n });\n }\n\n if (Object.keys(ntuples).length > 0) {\n var newNtuples = [];\n var keys = Object.keys(ntuples);\n for (i = 0; i < keys.length; i++) {\n var key = keys[i];\n var values = ntuples[key];\n for (j = 0; j < values.length; j++) {\n if (!newNtuples[j]) newNtuples[j] = {};\n newNtuples[j][key] = values[j];\n }\n }\n result.ntuples = newNtuples;\n }\n\n if (result.twoD && wantXY) {\n add2D(result, options);\n if (result.profiling) {\n result.profiling.push({\n action: 'Finished countour plot calculation',\n time: Date.now() - start\n });\n }\n if (!options.keepSpectra) {\n delete result.spectra;\n }\n }\n\n if (options.chromatogram) {\n options.xy = true;\n }\n\n if (options.xy && wantXY) {\n // the spectraData should not be a oneD array but an object with x and y\n if (spectra.length > 0) {\n for (i = 0; i < spectra.length; i++) {\n spectrum = spectra[i];\n if (spectrum.data.length > 0) {\n for (j = 0; j < spectrum.data.length; j++) {\n var data = spectrum.data[j];\n var newData = {\n x: new Array(data.length / 2),\n y: new Array(data.length / 2)\n };\n for (var k = 0; k < data.length; k = k + 2) {\n newData.x[k / 2] = data[k];\n newData.y[k / 2] = data[k + 1];\n }\n spectrum.data[j] = newData;\n }\n }\n }\n }\n }\n\n // maybe it is a GC (HPLC) / MS. In this case we add a new format\n if (options.chromatogram) {\n if (result.spectra.length > 1) {\n complexChromatogram(result);\n } else {\n simpleChromatogram(result);\n }\n if (result.profiling) {\n result.profiling.push({\n action: 'Finished chromatogram calculation',\n time: Date.now() - start\n });\n }\n }\n\n if (result.profiling) {\n result.profiling.push({\n action: 'Total time',\n time: Date.now() - start\n });\n }\n\n return result;\n }\n\n function convertMSFieldToLabel(value) {\n return value.toLowerCase().replace(/[^a-z0-9]/g, '');\n }\n\n function isMSField(dataLabel) {\n return GC_MS_FIELDS.indexOf(dataLabel) !== -1;\n }\n\n function complexChromatogram(result) {\n var spectra = result.spectra;\n var length = spectra.length;\n var chromatogram = {\n times: new Array(length),\n series: {\n ms: {\n dimension: 2,\n data: new Array(length)\n }\n }\n };\n\n var i;\n var existingGCMSFields = [];\n for (i = 0; i < GC_MS_FIELDS.length; i++) {\n var label = convertMSFieldToLabel(GC_MS_FIELDS[i]);\n if (spectra[0][label]) {\n existingGCMSFields.push(label);\n chromatogram.series[label] = {\n dimension: 1,\n data: new Array(length)\n };\n }\n }\n\n for (i = 0; i < length; i++) {\n var spectrum = spectra[i];\n chromatogram.times[i] = spectrum.pageValue;\n for (var j = 0; j < existingGCMSFields.length; j++) {\n chromatogram.series[existingGCMSFields[j]].data[i] = parseFloat(\n spectrum[existingGCMSFields[j]]\n );\n }\n if (spectrum.data) {\n chromatogram.series.ms.data[i] = [\n spectrum.data[0].x,\n spectrum.data[0].y\n ];\n }\n }\n result.chromatogram = chromatogram;\n }\n\n function simpleChromatogram(result) {\n var data = result.spectra[0].data[0];\n result.chromatogram = {\n times: data.x.slice(),\n series: {\n intensity: {\n dimension: 1,\n data: data.y.slice()\n }\n }\n };\n }\n\n function prepareSpectrum(result, spectrum) {\n if (!spectrum.xFactor) spectrum.xFactor = 1;\n if (!spectrum.yFactor) spectrum.yFactor = 1;\n if (spectrum.observeFrequency) {\n if (spectrum.xUnit && spectrum.xUnit.toUpperCase() === 'HZ') {\n spectrum.xUnit = 'PPM';\n spectrum.xFactor = spectrum.xFactor / spectrum.observeFrequency;\n spectrum.firstX = spectrum.firstX / spectrum.observeFrequency;\n spectrum.lastX = spectrum.lastX / spectrum.observeFrequency;\n spectrum.deltaX = spectrum.deltaX / spectrum.observeFrequency;\n }\n }\n if (result.shiftOffsetVal) {\n var shift = spectrum.firstX - result.shiftOffsetVal;\n spectrum.firstX = spectrum.firstX - shift;\n spectrum.lastX = spectrum.lastX - shift;\n }\n }\n\n function getMedian(data) {\n data = data.sort(compareNumbers);\n var l = data.length;\n return data[Math.floor(l / 2)];\n }\n\n function compareNumbers(a, b) {\n return a - b;\n }\n\n function convertTo3DZ(spectra) {\n var minZ = spectra[0].data[0][0];\n var maxZ = minZ;\n var ySize = spectra.length;\n var xSize = spectra[0].data[0].length / 2;\n var z = new Array(ySize);\n for (var i = 0; i < ySize; i++) {\n z[i] = new Array(xSize);\n var xVector = spectra[i].data[0];\n for (var j = 0; j < xSize; j++) {\n var value = xVector[j * 2 + 1];\n z[i][j] = value;\n if (value < minZ) minZ = value;\n if (value > maxZ) maxZ = value;\n }\n }\n return {\n z: z,\n minX: spectra[0].data[0][0],\n maxX: spectra[0].data[0][spectra[0].data[0].length - 2], // has to be -2 because it is a 1D array [x,y,x,y,...]\n minY: spectra[0].pageValue,\n maxY: spectra[ySize - 1].pageValue,\n minZ: minZ,\n maxZ: maxZ,\n noise: getMedian(z[0].map(Math.abs))\n };\n }\n\n function add2D(result, options) {\n var zData = convertTo3DZ(result.spectra);\n if (!options.noContour) {\n result.contourLines = generateContourLines(zData, options);\n delete zData.z;\n }\n result.minMax = zData;\n }\n\n function generateContourLines(zData, options) {\n var noise = zData.noise;\n var z = zData.z;\n var povarHeight0, povarHeight1, povarHeight2, povarHeight3;\n var isOver0, isOver1, isOver2, isOver3;\n var nbSubSpectra = z.length;\n var nbPovars = z[0].length;\n var pAx, pAy, pBx, pBy;\n\n var x0 = zData.minX;\n var xN = zData.maxX;\n var dx = (xN - x0) / (nbPovars - 1);\n var y0 = zData.minY;\n var yN = zData.maxY;\n var dy = (yN - y0) / (nbSubSpectra - 1);\n var minZ = zData.minZ;\n var maxZ = zData.maxZ;\n\n // System.out.prvarln('y0 '+y0+' yN '+yN);\n // -------------------------\n // Povars attribution\n //\n // 0----1\n // | / |\n // | / |\n // 2----3\n //\n // ---------------------d------\n\n var iter = options.nbContourLevels * 2;\n var contourLevels = new Array(iter);\n var lineZValue;\n for (var level = 0; level < iter; level++) {\n // multiply by 2 for positif and negatif\n var contourLevel = {};\n contourLevels[level] = contourLevel;\n var side = level % 2;\n var factor =\n (maxZ - options.noiseMultiplier * noise) *\n Math.exp((level >> 1) - options.nbContourLevels);\n if (side === 0) {\n lineZValue = factor + options.noiseMultiplier * noise;\n } else {\n lineZValue = 0 - factor - options.noiseMultiplier * noise;\n }\n var lines = [];\n contourLevel.zValue = lineZValue;\n contourLevel.lines = lines;\n\n if (lineZValue <= minZ || lineZValue >= maxZ) continue;\n\n for (var iSubSpectra = 0; iSubSpectra < nbSubSpectra - 1; iSubSpectra++) {\n var subSpectra = z[iSubSpectra];\n var subSpectraAfter = z[iSubSpectra + 1];\n for (var povar = 0; povar < nbPovars - 1; povar++) {\n povarHeight0 = subSpectra[povar];\n povarHeight1 = subSpectra[povar + 1];\n povarHeight2 = subSpectraAfter[povar];\n povarHeight3 = subSpectraAfter[povar + 1];\n\n isOver0 = povarHeight0 > lineZValue;\n isOver1 = povarHeight1 > lineZValue;\n isOver2 = povarHeight2 > lineZValue;\n isOver3 = povarHeight3 > lineZValue;\n\n // Example povar0 is over the plane and povar1 and\n // povar2 are below, we find the varersections and add\n // the segment\n if (isOver0 !== isOver1 && isOver0 !== isOver2) {\n pAx =\n povar +\n (lineZValue - povarHeight0) / (povarHeight1 - povarHeight0);\n pAy = iSubSpectra;\n pBx = povar;\n pBy =\n iSubSpectra +\n (lineZValue - povarHeight0) / (povarHeight2 - povarHeight0);\n lines.push(pAx * dx + x0);\n lines.push(pAy * dy + y0);\n lines.push(pBx * dx + x0);\n lines.push(pBy * dy + y0);\n }\n // remove push does not help !!!!\n if (isOver3 !== isOver1 && isOver3 !== isOver2) {\n pAx = povar + 1;\n pAy =\n iSubSpectra +\n 1 -\n (lineZValue - povarHeight3) / (povarHeight1 - povarHeight3);\n pBx =\n povar +\n 1 -\n (lineZValue - povarHeight3) / (povarHeight2 - povarHeight3);\n pBy = iSubSpectra + 1;\n lines.push(pAx * dx + x0);\n lines.push(pAy * dy + y0);\n lines.push(pBx * dx + x0);\n lines.push(pBy * dy + y0);\n }\n // test around the diagonal\n if (isOver1 !== isOver2) {\n pAx =\n (povar +\n 1 -\n (lineZValue - povarHeight1) / (povarHeight2 - povarHeight1)) *\n dx +\n x0;\n pAy =\n (iSubSpectra +\n (lineZValue - povarHeight1) / (povarHeight2 - povarHeight1)) *\n dy +\n y0;\n if (isOver1 !== isOver0) {\n pBx =\n povar +\n 1 -\n (lineZValue - povarHeight1) / (povarHeight0 - povarHeight1);\n pBy = iSubSpectra;\n lines.push(pAx);\n lines.push(pAy);\n lines.push(pBx * dx + x0);\n lines.push(pBy * dy + y0);\n }\n if (isOver2 !== isOver0) {\n pBx = povar;\n pBy =\n iSubSpectra +\n 1 -\n (lineZValue - povarHeight2) / (povarHeight0 - povarHeight2);\n lines.push(pAx);\n lines.push(pAy);\n lines.push(pBx * dx + x0);\n lines.push(pBy * dy + y0);\n }\n if (isOver1 !== isOver3) {\n pBx = povar + 1;\n pBy =\n iSubSpectra +\n (lineZValue - povarHeight1) / (povarHeight3 - povarHeight1);\n lines.push(pAx);\n lines.push(pAy);\n lines.push(pBx * dx + x0);\n lines.push(pBy * dy + y0);\n }\n if (isOver2 !== isOver3) {\n pBx =\n povar +\n (lineZValue - povarHeight2) / (povarHeight3 - povarHeight2);\n pBy = iSubSpectra + 1;\n lines.push(pAx);\n lines.push(pAy);\n lines.push(pBx * dx + x0);\n lines.push(pBy * dy + y0);\n }\n }\n }\n }\n }\n\n return {\n minX: zData.minX,\n maxX: zData.maxX,\n minY: zData.minY,\n maxY: zData.maxY,\n segments: contourLevels\n };\n }\n\n function fastParseXYData(spectrum, value) {\n // TODO need to deal with result\n // console.log(value);\n // we check if deltaX is defined otherwise we calculate it\n\n var yFactor = spectrum.yFactor;\n var deltaX = spectrum.deltaX;\n\n spectrum.isXYdata = true;\n // TODO to be improved using 2 array {x:[], y:[]}\n var currentData = [];\n spectrum.data = [currentData];\n\n var currentX = spectrum.firstX;\n var currentY = spectrum.firstY;\n\n // we skip the first line\n //\n var endLine = false;\n var ascii;\n for (var i = 0; i < value.length; i++) {\n ascii = value.charCodeAt(i);\n if (ascii === 13 || ascii === 10) {\n endLine = true;\n } else {\n if (endLine) break;\n }\n }\n\n // we proceed taking the i after the first line\n var newLine = true;\n var isDifference = false;\n var isLastDifference = false;\n var lastDifference = 0;\n var isDuplicate = false;\n var inComment = false;\n var currentValue = 0;\n var isNegative = false;\n var inValue = false;\n var skipFirstValue = false;\n var decimalPosition = 0;\n for (; i <= value.length; i++) {\n if (i === value.length) ascii = 13;\n else ascii = value.charCodeAt(i);\n if (inComment) {\n // we should ignore the text if we are after $$\n if (ascii === 13 || ascii === 10) {\n newLine = true;\n inComment = false;\n }\n } else {\n // when is it a new value ?\n // when it is not a digit, . or comma\n // it is a number that is either new or we continue\n if (ascii <= 57 && ascii >= 48) {\n // a number\n inValue = true;\n if (decimalPosition > 0) {\n currentValue += (ascii - 48) / Math.pow(10, decimalPosition++);\n } else {\n currentValue *= 10;\n currentValue += ascii - 48;\n }\n } else if (ascii === 44 || ascii === 46) {\n // a \",\" or \".\"\n inValue = true;\n decimalPosition++;\n } else {\n if (inValue) {\n // need to process the previous value\n if (newLine) {\n newLine = false; // we don't check the X value\n // console.log(\"NEW LINE\",isDifference, lastDifference);\n // if new line and lastDifference, the first value is just a check !\n // that we don't check ...\n if (isLastDifference) skipFirstValue = true;\n } else {\n // need to deal with duplicate and differences\n if (skipFirstValue) {\n skipFirstValue = false;\n } else {\n if (isDifference) {\n lastDifference = isNegative ? 0 - currentValue : currentValue;\n isLastDifference = true;\n isDifference = false;\n }\n var duplicate = isDuplicate ? currentValue - 1 : 1;\n for (var j = 0; j < duplicate; j++) {\n if (isLastDifference) {\n currentY += lastDifference;\n } else {\n currentY = isNegative ? 0 - currentValue : currentValue;\n }\n currentData.push(currentX);\n currentData.push(currentY * yFactor);\n currentX += deltaX;\n }\n }\n }\n isNegative = false;\n currentValue = 0;\n decimalPosition = 0;\n inValue = false;\n isDuplicate = false;\n }\n\n // positive SQZ digits @ A B C D E F G H I (ascii 64-73)\n if (ascii < 74 && ascii > 63) {\n inValue = true;\n isLastDifference = false;\n currentValue = ascii - 64;\n } else if (ascii > 96 && ascii < 106) {\n // negative SQZ digits a b c d e f g h i (ascii 97-105)\n inValue = true;\n isLastDifference = false;\n currentValue = ascii - 96;\n isNegative = true;\n } else if (ascii === 115) {\n // DUP digits S T U V W X Y Z s (ascii 83-90, 115)\n inValue = true;\n isDuplicate = true;\n currentValue = 9;\n } else if (ascii > 82 && ascii < 91) {\n inValue = true;\n isDuplicate = true;\n currentValue = ascii - 82;\n } else if (ascii > 73 && ascii < 83) {\n // positive DIF digits % J K L M N O P Q R (ascii 37, 74-82)\n inValue = true;\n isDifference = true;\n currentValue = ascii - 73;\n } else if (ascii > 105 && ascii < 115) {\n // negative DIF digits j k l m n o p q r (ascii 106-114)\n inValue = true;\n isDifference = true;\n currentValue = ascii - 105;\n isNegative = true;\n } else if (ascii === 36 && value.charCodeAt(i + 1) === 36) {\n // $ sign, we need to check the next one\n inValue = true;\n inComment = true;\n } else if (ascii === 37) {\n // positive DIF digits % J K L M N O P Q R (ascii 37, 74-82)\n inValue = true;\n isDifference = true;\n currentValue = 0;\n isNegative = false;\n } else if (ascii === 45) {\n // a \"-\"\n // check if after there is a number, decimal or comma\n var ascii2 = value.charCodeAt(i + 1);\n if (\n (ascii2 >= 48 && ascii2 <= 57) ||\n ascii2 === 44 ||\n ascii2 === 46\n ) {\n inValue = true;\n if (!newLine) isLastDifference = false;\n isNegative = true;\n }\n } else if (ascii === 13 || ascii === 10) {\n newLine = true;\n inComment = false;\n }\n // and now analyse the details ... space or tabulation\n // if \"+\" we just don't care\n }\n }\n }\n }\n\n function parsePeakTable(spectrum, value, result) {\n var removeCommentRegExp = /\\$\\$.*/;\n var peakTableSplitRegExp = /[,\\t ]+/;\n\n spectrum.isPeaktable = true;\n var i, ii, j, jj, values;\n var currentData = [];\n spectrum.data = [currentData];\n\n // counts for around 20% of the time\n var lines = value.split(/,? *,?[;\\r\\n]+ */);\n\n for (i = 1, ii = lines.length; i < ii; i++) {\n values = lines[i]\n .trim()\n .replace(removeCommentRegExp, '')\n .split(peakTableSplitRegExp);\n if (values.length % 2 === 0) {\n for (j = 0, jj = values.length; j < jj; j = j + 2) {\n // takes around 40% of the time to add and parse the 2 values nearly exclusively because of parseFloat\n currentData.push(parseFloat(values[j]) * spectrum.xFactor);\n currentData.push(parseFloat(values[j + 1]) * spectrum.yFactor);\n }\n } else {\n result.logs.push(`Format error: ${values}`);\n }\n }\n }\n\n return convert;\n}\n\nvar convert = getConverter();\n\nfunction JcampConverter(input, options, useWorker) {\n if (typeof options === 'boolean') {\n useWorker = options;\n options = {};\n }\n if (useWorker) {\n return postToWorker(input, options);\n } else {\n return convert(input, options);\n }\n}\n\nvar stamps = {};\nvar worker;\n\nfunction postToWorker(input, options) {\n if (!worker) {\n createWorker();\n }\n return new Promise(function (resolve) {\n var stamp = `${Date.now()}${Math.random()}`;\n stamps[stamp] = resolve;\n worker.postMessage(\n JSON.stringify({\n stamp: stamp,\n input: input,\n options: options\n })\n );\n });\n}\n\nfunction createWorker() {\n var workerURL = URL.createObjectURL(\n new Blob(\n [`var getConverter =${getConverter.toString()};var convert = getConverter(); onmessage = function (event) { var data = JSON.parse(event.data); postMessage(JSON.stringify({stamp: data.stamp, output: convert(data.input, data.options)})); };`],\n { type: 'application/javascript' }\n )\n );\n worker = new Worker(workerURL);\n URL.revokeObjectURL(workerURL);\n worker.addEventListener('message', function (event) {\n var data = JSON.parse(event.data);\n var stamp = data.stamp;\n if (stamps[stamp]) {\n stamps[stamp](data.output);\n }\n });\n}\n\nfunction createTree(jcamp, options = {}) {\n const { flatten = false } = options;\n if (typeof jcamp !== 'string') {\n throw new TypeError('the JCAMP should be a string');\n }\n\n let lines = jcamp.split(/[\\r\\n]+/);\n let flat = [];\n let stack = [];\n let result = [];\n let current;\n let ntupleLevel = 0;\n\n for (var i = 0; i < lines.length; i++) {\n var line = lines[i];\n\n if (line.substring(0, 9) === '##NTUPLES') {\n ntupleLevel++;\n }\n\n if (line.substring(0, 7) === '##TITLE') {\n let title = [line.substring(8).trim()];\n for (let j = i + 1; j < lines.length; j++) {\n if (lines[j].startsWith('##')) {\n break;\n } else {\n title.push(lines[j].trim());\n }\n }\n stack.push({\n title: title.join('\\n'),\n jcamp: `${line}\\n`,\n children: []\n });\n current = stack[stack.length - 1];\n flat.push(current);\n } else if (line.substring(0, 5) === '##END' && ntupleLevel === 0) {\n current.jcamp += `${line}\\n`;\n var finished = stack.pop();\n if (stack.length !== 0) {\n current = stack[stack.length - 1];\n current.children.push(finished);\n } else {\n current = undefined;\n result.push(finished);\n }\n } else if (current && current.jcamp) {\n current.jcamp += `${line}\\n`;\n var match = line.match(/^##(.*?)=(.+)/);\n if (match) {\n var dataLabel = match[1].replace(/[ _-]/g, '').toUpperCase();\n if (dataLabel === 'DATATYPE') {\n current.dataType = match[2].trim();\n }\n }\n }\n\n if (line.substring(0, 5) === '##END' && ntupleLevel > 0) {\n ntupleLevel--;\n }\n }\n if (flatten) {\n flat.forEach((entry) => {\n entry.children = undefined;\n });\n return flat;\n } else {\n return result;\n }\n}\n\nmodule.exports = {\n convert: JcampConverter,\n createTree: createTree\n};\n","/**\n * Created by acastillo on 8/8/16.\n */\n'use strict';\n\nconst defOptions = {\n threshold:0,\n out:\"assignment\"\n};\n//TODO Consider a matrix of distances too\nmodule.exports = function fullClusterGenerator(conMat, opt) {\n const options = Object.assign({}, defOptions, opt);\n var clList, i, j, k;\n if(typeof conMat[0] === \"number\"){\n clList = fullClusterGeneratorVector(conMat);\n }\n else{\n if(typeof conMat[0] === \"object\"){\n var nRows = conMat.length;\n var conn = new Array(nRows*(nRows+1)/2);\n var index = 0;\n for(var i=0;ioptions.threshold)\n conn[index++]= 1;\n else\n conn[index++]= 0;\n }\n }\n clList = fullClusterGeneratorVector(conn);\n }\n }\n if (options.out === \"indexes\" || options.out === \"values\") {\n var result = new Array(clList.length);\n for(i=0;i=0;i--){\n available[i]=1;\n }\n var nextAv=-1;\n var toInclude = [];\n while(remaining>0){\n if(toInclude.length===0){\n //If there is no more elements to include. Start a new cluster\n cluster = new Array(nRows);\n for(i = 0;i < nRows ;i++)\n cluster[i]=0;\n clusterList.push(cluster);\n for(nextAv = 0;available[nextAv]==0;nextAv++){};\n }\n else{\n nextAv=toInclude.splice(0,1);\n }\n cluster[nextAv]=1;\n available[nextAv]=0;\n remaining--;\n //Copy the next available row\n var row = new Array(nRows);\n for( i = 0;i < nRows;i++){\n var c=Math.max(nextAv,i);\n var r=Math.min(nextAv,i);\n //The element in the conn matrix\n //console.log(\"index: \"+r*(2*nRows-r-1)/2+c)\n row[i]=conn[r*(2*nRows-r-1)/2+c];\n //There is new elements to include in this row?\n //Then, include it to the current cluster\n if(row[i]==1&&available[i]==1&&cluster[i]==0){\n toInclude.push(i);\n cluster[i]=1;\n }\n }\n }\n return clusterList;\n}","'use strict';\nvar numberIsNan = require('number-is-nan');\n\nfunction assertNum(x) {\n\tif (typeof x !== 'number' || numberIsNan(x)) {\n\t\tthrow new TypeError('Expected a number');\n\t}\n}\n\nexports.asc = function (a, b) {\n\tassertNum(a);\n\tassertNum(b);\n\treturn a - b;\n};\n\nexports.desc = function (a, b) {\n\tassertNum(a);\n\tassertNum(b);\n\treturn b - a;\n};\n","'use strict';\n\nmodule.exports.gsd = require('./gsd');\n\nmodule.exports.post = {\n optimizePeaks: require('./post/optimizePeaks'),\n joinBroadPeaks: require('./post/joinBroadPeaks'),\n broadenPeaks: require('./post/broadenPeaks')\n};\n","'use strict'\n/**\n * Created by acastillo on 7/7/16.\n */\nvar StatArray = require('ml-stat').array;\nvar convolution = require('ml-matrix-convolution');\nvar labeling = require(\"./ccLabeling\");\n\n\nconst smallFilter = [\n [0, 0, 1, 2, 2, 2, 1, 0, 0],\n [0, 1, 4, 7, 7, 7, 4, 1, 0],\n [1, 4, 5, 3, 0, 3, 5, 4, 1],\n [2, 7, 3, -12, -23, -12, 3, 7, 2],\n [2, 7, 0, -23, -40, -23, 0, 7, 2],\n [2, 7, 3, -12, -23, -12, 3, 7, 2],\n [1, 4, 5, 3, 0, 3, 5, 4, 1],\n [0, 1, 3, 7, 7, 7, 3, 1, 0],\n [0, 0, 1, 2, 2, 2, 1, 0, 0]];\n\nconst DEBUG = false;\n\n/**\n Detects all the 2D-peaks in the given spectrum based on center of mass logic.\n */\nfunction findPeaks2DRegion(input, opt) {\n var options = Object.assign({},{nStdev:3, kernel:smallFilter}, opt);\n var tmp = convolution.matrix2Array(input);\n var inputData = tmp.data;\n var i;\n if(tmp.rows&&tmp.cols){\n options.rows = tmp.rows;\n options.cols = tmp.cols;\n }\n var nRows = options.rows;\n var nCols = options.cols;\n if(!nRows||!nCols){\n throw new Error(\"Invalid number of rows or columns \"+nRows+\" \"+nCols);\n }\n\n var customFilter = options.kernel;\n var cs = options.filteredData;\n if(!cs)\n cs = convolution.fft(inputData, customFilter, options);\n\n var nStdDev = options.nStdev;\n\n var threshold = 0;\n for( i=nCols*nRows-2;i>=0;i--)\n threshold+=Math.pow(cs[i]-cs[i+1],2);\n threshold=-Math.sqrt(threshold);\n threshold*=nStdDev/nRows;\n\n var bitmask = new Array(nCols * nRows);\n for( i=nCols * nRows-1;i>=0;i--){\n bitmask[i]=0;\n }\n var nbDetectedPoints = 0;\n for ( i = cs.length-1; i >=0 ; i--) {\n if (cs[i] < threshold) {\n bitmask[i] = 1;\n nbDetectedPoints++;\n }\n }\n\n var pixels = labeling(bitmask, nCols, nRows, {neighbours:8});\n var peakList = extractPeaks(pixels, inputData, nRows, nCols);\n\n if (peakList.length > 0&&DEBUG) {\n console.log(\"No peak found\");\n }\n return peakList;\n}\n/**\n Detects all the 2D-peaks in the given spectrum based on the Max logic.\n amc\n */\nfunction findPeaks2DMax(input, opt) {\n var options = Object.assign({},{nStdev:3, kernel:smallFilter}, opt);\n var tmp = convolution.matrix2Array(input);\n var inputData = tmp.data;\n\n if(tmp.rows&&tmp.cols){\n options.rows = tmp.rows;\n options.cols = tmp.cols;\n }\n var nRows = options.rows;\n var nCols = options.cols;\n if(!nRows||!nCols){\n throw new Error(\"Invalid number of rows or columns \"+nRows+\" \"+nCols);\n }\n\n var customFilter = options.kernel;\n var cs = options.filteredData;\n if(!cs)\n cs = convolution.fft(inputData, customFilter, options);\n\n\n var nStdDev = options.nStdev;\n var threshold = 0;\n for( var i=nCols*nRows-2;i>=0;i--)\n threshold+=Math.pow(cs[i]-cs[i+1],2);\n threshold=-Math.sqrt(threshold);\n threshold*=nStdDev/nRows;\n\n var rowI,colI;\n var peakListMax = [];\n var tmpIndex = 0;\n for ( var i = 0; i < cs.length; i++) {\n if (cs[i] < threshold) {\n //It is a peak?\n rowI=Math.floor(i/nCols);\n colI=i%nCols;\n //Verifies if this point is a peak;\n if(rowI>0&&rowI+10){\n //It is the minimum in the same row\n if(cs[i] tmp.maxX)\n tmp.maxX = col;\n if( row < tmp.minY)\n tmp.minY = row;\n if( row > tmp.maxY)\n tmp.maxY = row;\n }\n else{\n labels[pixels[i]]={\n x:col*data[i],\n y:row*data[i],\n z:data[i],\n minX:col,\n maxX:col,\n minY:row,\n maxY:row\n };\n }\n }\n }\n var keys = Object.keys(labels);\n var peakList = new Array(keys.length);\n for( i = 0; i < keys.length; i++ ){\n peakList[i] = labels[keys[i]];\n peakList[i].x/=peakList[i].z;\n peakList[i].y/=peakList[i].z;\n }\n return peakList;\n}\n\nmodule.exports={\n findPeaks2DRegion:findPeaks2DRegion,\n findPeaks2DMax:findPeaks2DMax\n};\n","'use strict';\n\nexports.hypotenuse = function hypotenuse(a, b) {\n var r;\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\n// For use in the decomposition algorithms. With big matrices, access time is\n// too long on elements from array subclass\n// todo check when it is fixed in v8\n// http://jsperf.com/access-and-write-array-subclass\nexports.getEmpty2DArray = function (rows, columns) {\n var array = new Array(rows);\n for (var i = 0; i < rows; i++) {\n array[i] = new Array(columns);\n }\n return array;\n};\n\nexports.getFilled2DArray = function (rows, columns, value) {\n var array = new Array(rows);\n for (var i = 0; i < rows; i++) {\n array[i] = new Array(columns);\n for (var j = 0; j < columns; j++) {\n array[i][j] = value;\n }\n }\n return array;\n};\n","'use strict';\n// private property\nvar _keyStr = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\n\n// public method for encoding\nexports.encode = function(input, utf8) {\n var output = \"\";\n var chr1, chr2, chr3, enc1, enc2, enc3, enc4;\n var i = 0;\n\n while (i < input.length) {\n\n chr1 = input.charCodeAt(i++);\n chr2 = input.charCodeAt(i++);\n chr3 = input.charCodeAt(i++);\n\n enc1 = chr1 >> 2;\n enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\n enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);\n enc4 = chr3 & 63;\n\n if (isNaN(chr2)) {\n enc3 = enc4 = 64;\n }\n else if (isNaN(chr3)) {\n enc4 = 64;\n }\n\n output = output + _keyStr.charAt(enc1) + _keyStr.charAt(enc2) + _keyStr.charAt(enc3) + _keyStr.charAt(enc4);\n\n }\n\n return output;\n};\n\n// public method for decoding\nexports.decode = function(input, utf8) {\n var output = \"\";\n var chr1, chr2, chr3;\n var enc1, enc2, enc3, enc4;\n var i = 0;\n\n input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, \"\");\n\n while (i < input.length) {\n\n enc1 = _keyStr.indexOf(input.charAt(i++));\n enc2 = _keyStr.indexOf(input.charAt(i++));\n enc3 = _keyStr.indexOf(input.charAt(i++));\n enc4 = _keyStr.indexOf(input.charAt(i++));\n\n chr1 = (enc1 << 2) | (enc2 >> 4);\n chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);\n chr3 = ((enc3 & 3) << 6) | enc4;\n\n output = output + String.fromCharCode(chr1);\n\n if (enc3 != 64) {\n output = output + String.fromCharCode(chr2);\n }\n if (enc4 != 64) {\n output = output + String.fromCharCode(chr3);\n }\n\n }\n\n return output;\n\n};\n","'use strict';\nvar support = require('./support');\nvar utils = require('./utils');\nvar crc32 = require('./crc32');\nvar signature = require('./signature');\nvar defaults = require('./defaults');\nvar base64 = require('./base64');\nvar compressions = require('./compressions');\nvar CompressedObject = require('./compressedObject');\nvar nodeBuffer = require('./nodeBuffer');\nvar utf8 = require('./utf8');\nvar StringWriter = require('./stringWriter');\nvar Uint8ArrayWriter = require('./uint8ArrayWriter');\n\n/**\n * Returns the raw data of a ZipObject, decompress the content if necessary.\n * @param {ZipObject} file the file to use.\n * @return {String|ArrayBuffer|Uint8Array|Buffer} the data.\n */\nvar getRawData = function(file) {\n if (file._data instanceof CompressedObject) {\n file._data = file._data.getContent();\n file.options.binary = true;\n file.options.base64 = false;\n\n if (utils.getTypeOf(file._data) === \"uint8array\") {\n var copy = file._data;\n // when reading an arraybuffer, the CompressedObject mechanism will keep it and subarray() a Uint8Array.\n // if we request a file in the same format, we might get the same Uint8Array or its ArrayBuffer (the original zip file).\n file._data = new Uint8Array(copy.length);\n // with an empty Uint8Array, Opera fails with a \"Offset larger than array size\"\n if (copy.length !== 0) {\n file._data.set(copy, 0);\n }\n }\n }\n return file._data;\n};\n\n/**\n * Returns the data of a ZipObject in a binary form. If the content is an unicode string, encode it.\n * @param {ZipObject} file the file to use.\n * @return {String|ArrayBuffer|Uint8Array|Buffer} the data.\n */\nvar getBinaryData = function(file) {\n var result = getRawData(file),\n type = utils.getTypeOf(result);\n if (type === \"string\") {\n if (!file.options.binary) {\n // unicode text !\n // unicode string => binary string is a painful process, check if we can avoid it.\n if (support.nodebuffer) {\n return nodeBuffer(result, \"utf-8\");\n }\n }\n return file.asBinary();\n }\n return result;\n};\n\n/**\n * Transform this._data into a string.\n * @param {function} filter a function String -> String, applied if not null on the result.\n * @return {String} the string representing this._data.\n */\nvar dataToString = function(asUTF8) {\n var result = getRawData(this);\n if (result === null || typeof result === \"undefined\") {\n return \"\";\n }\n // if the data is a base64 string, we decode it before checking the encoding !\n if (this.options.base64) {\n result = base64.decode(result);\n }\n if (asUTF8 && this.options.binary) {\n // JSZip.prototype.utf8decode supports arrays as input\n // skip to array => string step, utf8decode will do it.\n result = out.utf8decode(result);\n }\n else {\n // no utf8 transformation, do the array => string step.\n result = utils.transformTo(\"string\", result);\n }\n\n if (!asUTF8 && !this.options.binary) {\n result = utils.transformTo(\"string\", out.utf8encode(result));\n }\n return result;\n};\n/**\n * A simple object representing a file in the zip file.\n * @constructor\n * @param {string} name the name of the file\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data\n * @param {Object} options the options of the file\n */\nvar ZipObject = function(name, data, options) {\n this.name = name;\n this.dir = options.dir;\n this.date = options.date;\n this.comment = options.comment;\n this.unixPermissions = options.unixPermissions;\n this.dosPermissions = options.dosPermissions;\n\n this._data = data;\n this.options = options;\n\n /*\n * This object contains initial values for dir and date.\n * With them, we can check if the user changed the deprecated metadata in\n * `ZipObject#options` or not.\n */\n this._initialMetadata = {\n dir : options.dir,\n date : options.date\n };\n};\n\nZipObject.prototype = {\n /**\n * Return the content as UTF8 string.\n * @return {string} the UTF8 string.\n */\n asText: function() {\n return dataToString.call(this, true);\n },\n /**\n * Returns the binary content.\n * @return {string} the content as binary.\n */\n asBinary: function() {\n return dataToString.call(this, false);\n },\n /**\n * Returns the content as a nodejs Buffer.\n * @return {Buffer} the content as a Buffer.\n */\n asNodeBuffer: function() {\n var result = getBinaryData(this);\n return utils.transformTo(\"nodebuffer\", result);\n },\n /**\n * Returns the content as an Uint8Array.\n * @return {Uint8Array} the content as an Uint8Array.\n */\n asUint8Array: function() {\n var result = getBinaryData(this);\n return utils.transformTo(\"uint8array\", result);\n },\n /**\n * Returns the content as an ArrayBuffer.\n * @return {ArrayBuffer} the content as an ArrayBufer.\n */\n asArrayBuffer: function() {\n return this.asUint8Array().buffer;\n }\n};\n\n/**\n * Transform an integer into a string in hexadecimal.\n * @private\n * @param {number} dec the number to convert.\n * @param {number} bytes the number of bytes to generate.\n * @returns {string} the result.\n */\nvar decToHex = function(dec, bytes) {\n var hex = \"\",\n i;\n for (i = 0; i < bytes; i++) {\n hex += String.fromCharCode(dec & 0xff);\n dec = dec >>> 8;\n }\n return hex;\n};\n\n/**\n * Transforms the (incomplete) options from the user into the complete\n * set of options to create a file.\n * @private\n * @param {Object} o the options from the user.\n * @return {Object} the complete set of options.\n */\nvar prepareFileAttrs = function(o) {\n o = o || {};\n if (o.base64 === true && (o.binary === null || o.binary === undefined)) {\n o.binary = true;\n }\n o = utils.extend(o, defaults);\n o.date = o.date || new Date();\n if (o.compression !== null) o.compression = o.compression.toUpperCase();\n\n return o;\n};\n\n/**\n * Add a file in the current folder.\n * @private\n * @param {string} name the name of the file\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data of the file\n * @param {Object} o the options of the file\n * @return {Object} the new file.\n */\nvar fileAdd = function(name, data, o) {\n // be sure sub folders exist\n var dataType = utils.getTypeOf(data),\n parent;\n\n o = prepareFileAttrs(o);\n\n if (typeof o.unixPermissions === \"string\") {\n o.unixPermissions = parseInt(o.unixPermissions, 8);\n }\n\n // UNX_IFDIR 0040000 see zipinfo.c\n if (o.unixPermissions && (o.unixPermissions & 0x4000)) {\n o.dir = true;\n }\n // Bit 4 Directory\n if (o.dosPermissions && (o.dosPermissions & 0x0010)) {\n o.dir = true;\n }\n\n if (o.dir) {\n name = forceTrailingSlash(name);\n }\n\n if (o.createFolders && (parent = parentFolder(name))) {\n folderAdd.call(this, parent, true);\n }\n\n if (o.dir || data === null || typeof data === \"undefined\") {\n o.base64 = false;\n o.binary = false;\n data = null;\n dataType = null;\n }\n else if (dataType === \"string\") {\n if (o.binary && !o.base64) {\n // optimizedBinaryString == true means that the file has already been filtered with a 0xFF mask\n if (o.optimizedBinaryString !== true) {\n // this is a string, not in a base64 format.\n // Be sure that this is a correct \"binary string\"\n data = utils.string2binary(data);\n }\n }\n }\n else { // arraybuffer, uint8array, ...\n o.base64 = false;\n o.binary = true;\n\n if (!dataType && !(data instanceof CompressedObject)) {\n throw new Error(\"The data of '\" + name + \"' is in an unsupported format !\");\n }\n\n // special case : it's way easier to work with Uint8Array than with ArrayBuffer\n if (dataType === \"arraybuffer\") {\n data = utils.transformTo(\"uint8array\", data);\n }\n }\n\n var object = new ZipObject(name, data, o);\n this.files[name] = object;\n return object;\n};\n\n/**\n * Find the parent folder of the path.\n * @private\n * @param {string} path the path to use\n * @return {string} the parent folder, or \"\"\n */\nvar parentFolder = function (path) {\n if (path.slice(-1) == '/') {\n path = path.substring(0, path.length - 1);\n }\n var lastSlash = path.lastIndexOf('/');\n return (lastSlash > 0) ? path.substring(0, lastSlash) : \"\";\n};\n\n\n/**\n * Returns the path with a slash at the end.\n * @private\n * @param {String} path the path to check.\n * @return {String} the path with a trailing slash.\n */\nvar forceTrailingSlash = function(path) {\n // Check the name ends with a /\n if (path.slice(-1) != \"/\") {\n path += \"/\"; // IE doesn't like substr(-1)\n }\n return path;\n};\n/**\n * Add a (sub) folder in the current folder.\n * @private\n * @param {string} name the folder's name\n * @param {boolean=} [createFolders] If true, automatically create sub\n * folders. Defaults to false.\n * @return {Object} the new folder.\n */\nvar folderAdd = function(name, createFolders) {\n createFolders = (typeof createFolders !== 'undefined') ? createFolders : false;\n\n name = forceTrailingSlash(name);\n\n // Does this folder already exist?\n if (!this.files[name]) {\n fileAdd.call(this, name, null, {\n dir: true,\n createFolders: createFolders\n });\n }\n return this.files[name];\n};\n\n/**\n * Generate a JSZip.CompressedObject for a given zipOject.\n * @param {ZipObject} file the object to read.\n * @param {JSZip.compression} compression the compression to use.\n * @param {Object} compressionOptions the options to use when compressing.\n * @return {JSZip.CompressedObject} the compressed result.\n */\nvar generateCompressedObjectFrom = function(file, compression, compressionOptions) {\n var result = new CompressedObject(),\n content;\n\n // the data has not been decompressed, we might reuse things !\n if (file._data instanceof CompressedObject) {\n result.uncompressedSize = file._data.uncompressedSize;\n result.crc32 = file._data.crc32;\n\n if (result.uncompressedSize === 0 || file.dir) {\n compression = compressions['STORE'];\n result.compressedContent = \"\";\n result.crc32 = 0;\n }\n else if (file._data.compressionMethod === compression.magic) {\n result.compressedContent = file._data.getCompressedContent();\n }\n else {\n content = file._data.getContent();\n // need to decompress / recompress\n result.compressedContent = compression.compress(utils.transformTo(compression.compressInputType, content), compressionOptions);\n }\n }\n else {\n // have uncompressed data\n content = getBinaryData(file);\n if (!content || content.length === 0 || file.dir) {\n compression = compressions['STORE'];\n content = \"\";\n }\n result.uncompressedSize = content.length;\n result.crc32 = crc32(content);\n result.compressedContent = compression.compress(utils.transformTo(compression.compressInputType, content), compressionOptions);\n }\n\n result.compressedSize = result.compressedContent.length;\n result.compressionMethod = compression.magic;\n\n return result;\n};\n\n\n\n\n/**\n * Generate the UNIX part of the external file attributes.\n * @param {Object} unixPermissions the unix permissions or null.\n * @param {Boolean} isDir true if the entry is a directory, false otherwise.\n * @return {Number} a 32 bit integer.\n *\n * adapted from http://unix.stackexchange.com/questions/14705/the-zip-formats-external-file-attribute :\n *\n * TTTTsstrwxrwxrwx0000000000ADVSHR\n * ^^^^____________________________ file type, see zipinfo.c (UNX_*)\n * ^^^_________________________ setuid, setgid, sticky\n * ^^^^^^^^^________________ permissions\n * ^^^^^^^^^^______ not used ?\n * ^^^^^^ DOS attribute bits : Archive, Directory, Volume label, System file, Hidden, Read only\n */\nvar generateUnixExternalFileAttr = function (unixPermissions, isDir) {\n\n var result = unixPermissions;\n if (!unixPermissions) {\n // I can't use octal values in strict mode, hence the hexa.\n // 040775 => 0x41fd\n // 0100664 => 0x81b4\n result = isDir ? 0x41fd : 0x81b4;\n }\n\n return (result & 0xFFFF) << 16;\n};\n\n/**\n * Generate the DOS part of the external file attributes.\n * @param {Object} dosPermissions the dos permissions or null.\n * @param {Boolean} isDir true if the entry is a directory, false otherwise.\n * @return {Number} a 32 bit integer.\n *\n * Bit 0 Read-Only\n * Bit 1 Hidden\n * Bit 2 System\n * Bit 3 Volume Label\n * Bit 4 Directory\n * Bit 5 Archive\n */\nvar generateDosExternalFileAttr = function (dosPermissions, isDir) {\n\n // the dir flag is already set for compatibility\n\n return (dosPermissions || 0) & 0x3F;\n};\n\n/**\n * Generate the various parts used in the construction of the final zip file.\n * @param {string} name the file name.\n * @param {ZipObject} file the file content.\n * @param {JSZip.CompressedObject} compressedObject the compressed object.\n * @param {number} offset the current offset from the start of the zip file.\n * @param {String} platform let's pretend we are this platform (change platform dependents fields)\n * @param {Function} encodeFileName the function to encode the file name / comment.\n * @return {object} the zip parts.\n */\nvar generateZipParts = function(name, file, compressedObject, offset, platform, encodeFileName) {\n var data = compressedObject.compressedContent,\n useCustomEncoding = encodeFileName !== utf8.utf8encode,\n encodedFileName = utils.transformTo(\"string\", encodeFileName(file.name)),\n utfEncodedFileName = utils.transformTo(\"string\", utf8.utf8encode(file.name)),\n comment = file.comment || \"\",\n encodedComment = utils.transformTo(\"string\", encodeFileName(comment)),\n utfEncodedComment = utils.transformTo(\"string\", utf8.utf8encode(comment)),\n useUTF8ForFileName = utfEncodedFileName.length !== file.name.length,\n useUTF8ForComment = utfEncodedComment.length !== comment.length,\n o = file.options,\n dosTime,\n dosDate,\n extraFields = \"\",\n unicodePathExtraField = \"\",\n unicodeCommentExtraField = \"\",\n dir, date;\n\n\n // handle the deprecated options.dir\n if (file._initialMetadata.dir !== file.dir) {\n dir = file.dir;\n } else {\n dir = o.dir;\n }\n\n // handle the deprecated options.date\n if(file._initialMetadata.date !== file.date) {\n date = file.date;\n } else {\n date = o.date;\n }\n\n var extFileAttr = 0;\n var versionMadeBy = 0;\n if (dir) {\n // dos or unix, we set the dos dir flag\n extFileAttr |= 0x00010;\n }\n if(platform === \"UNIX\") {\n versionMadeBy = 0x031E; // UNIX, version 3.0\n extFileAttr |= generateUnixExternalFileAttr(file.unixPermissions, dir);\n } else { // DOS or other, fallback to DOS\n versionMadeBy = 0x0014; // DOS, version 2.0\n extFileAttr |= generateDosExternalFileAttr(file.dosPermissions, dir);\n }\n\n // date\n // @see http://www.delorie.com/djgpp/doc/rbinter/it/52/13.html\n // @see http://www.delorie.com/djgpp/doc/rbinter/it/65/16.html\n // @see http://www.delorie.com/djgpp/doc/rbinter/it/66/16.html\n\n dosTime = date.getHours();\n dosTime = dosTime << 6;\n dosTime = dosTime | date.getMinutes();\n dosTime = dosTime << 5;\n dosTime = dosTime | date.getSeconds() / 2;\n\n dosDate = date.getFullYear() - 1980;\n dosDate = dosDate << 4;\n dosDate = dosDate | (date.getMonth() + 1);\n dosDate = dosDate << 5;\n dosDate = dosDate | date.getDate();\n\n if (useUTF8ForFileName) {\n // set the unicode path extra field. unzip needs at least one extra\n // field to correctly handle unicode path, so using the path is as good\n // as any other information. This could improve the situation with\n // other archive managers too.\n // This field is usually used without the utf8 flag, with a non\n // unicode path in the header (winrar, winzip). This helps (a bit)\n // with the messy Windows' default compressed folders feature but\n // breaks on p7zip which doesn't seek the unicode path extra field.\n // So for now, UTF-8 everywhere !\n unicodePathExtraField =\n // Version\n decToHex(1, 1) +\n // NameCRC32\n decToHex(crc32(encodedFileName), 4) +\n // UnicodeName\n utfEncodedFileName;\n\n extraFields +=\n // Info-ZIP Unicode Path Extra Field\n \"\\x75\\x70\" +\n // size\n decToHex(unicodePathExtraField.length, 2) +\n // content\n unicodePathExtraField;\n }\n\n if(useUTF8ForComment) {\n\n unicodeCommentExtraField =\n // Version\n decToHex(1, 1) +\n // CommentCRC32\n decToHex(this.crc32(encodedComment), 4) +\n // UnicodeName\n utfEncodedComment;\n\n extraFields +=\n // Info-ZIP Unicode Path Extra Field\n \"\\x75\\x63\" +\n // size\n decToHex(unicodeCommentExtraField.length, 2) +\n // content\n unicodeCommentExtraField;\n }\n\n var header = \"\";\n\n // version needed to extract\n header += \"\\x0A\\x00\";\n // general purpose bit flag\n // set bit 11 if utf8\n header += !useCustomEncoding && (useUTF8ForFileName || useUTF8ForComment) ? \"\\x00\\x08\" : \"\\x00\\x00\";\n // compression method\n header += compressedObject.compressionMethod;\n // last mod file time\n header += decToHex(dosTime, 2);\n // last mod file date\n header += decToHex(dosDate, 2);\n // crc-32\n header += decToHex(compressedObject.crc32, 4);\n // compressed size\n header += decToHex(compressedObject.compressedSize, 4);\n // uncompressed size\n header += decToHex(compressedObject.uncompressedSize, 4);\n // file name length\n header += decToHex(encodedFileName.length, 2);\n // extra field length\n header += decToHex(extraFields.length, 2);\n\n\n var fileRecord = signature.LOCAL_FILE_HEADER + header + encodedFileName + extraFields;\n\n var dirRecord = signature.CENTRAL_FILE_HEADER +\n // version made by (00: DOS)\n decToHex(versionMadeBy, 2) +\n // file header (common to file and central directory)\n header +\n // file comment length\n decToHex(encodedComment.length, 2) +\n // disk number start\n \"\\x00\\x00\" +\n // internal file attributes TODO\n \"\\x00\\x00\" +\n // external file attributes\n decToHex(extFileAttr, 4) +\n // relative offset of local header\n decToHex(offset, 4) +\n // file name\n encodedFileName +\n // extra field\n extraFields +\n // file comment\n encodedComment;\n\n return {\n fileRecord: fileRecord,\n dirRecord: dirRecord,\n compressedObject: compressedObject\n };\n};\n\n\n// return the actual prototype of JSZip\nvar out = {\n /**\n * Read an existing zip and merge the data in the current JSZip object.\n * The implementation is in jszip-load.js, don't forget to include it.\n * @param {String|ArrayBuffer|Uint8Array|Buffer} stream The stream to load\n * @param {Object} options Options for loading the stream.\n * options.base64 : is the stream in base64 ? default : false\n * @return {JSZip} the current JSZip object\n */\n load: function(stream, options) {\n throw new Error(\"Load method is not defined. Is the file jszip-load.js included ?\");\n },\n\n /**\n * Filter nested files/folders with the specified function.\n * @param {Function} search the predicate to use :\n * function (relativePath, file) {...}\n * It takes 2 arguments : the relative path and the file.\n * @return {Array} An array of matching elements.\n */\n filter: function(search) {\n var result = [],\n filename, relativePath, file, fileClone;\n for (filename in this.files) {\n if (!this.files.hasOwnProperty(filename)) {\n continue;\n }\n file = this.files[filename];\n // return a new object, don't let the user mess with our internal objects :)\n fileClone = new ZipObject(file.name, file._data, utils.extend(file.options));\n relativePath = filename.slice(this.root.length, filename.length);\n if (filename.slice(0, this.root.length) === this.root && // the file is in the current root\n search(relativePath, fileClone)) { // and the file matches the function\n result.push(fileClone);\n }\n }\n return result;\n },\n\n /**\n * Add a file to the zip file, or search a file.\n * @param {string|RegExp} name The name of the file to add (if data is defined),\n * the name of the file to find (if no data) or a regex to match files.\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data The file data, either raw or base64 encoded\n * @param {Object} o File options\n * @return {JSZip|Object|Array} this JSZip object (when adding a file),\n * a file (when searching by string) or an array of files (when searching by regex).\n */\n file: function(name, data, o) {\n if (arguments.length === 1) {\n if (utils.isRegExp(name)) {\n var regexp = name;\n return this.filter(function(relativePath, file) {\n return !file.dir && regexp.test(relativePath);\n });\n }\n else { // text\n return this.filter(function(relativePath, file) {\n return !file.dir && relativePath === name;\n })[0] || null;\n }\n }\n else { // more than one argument : we have data !\n name = this.root + name;\n fileAdd.call(this, name, data, o);\n }\n return this;\n },\n\n /**\n * Add a directory to the zip file, or search.\n * @param {String|RegExp} arg The name of the directory to add, or a regex to search folders.\n * @return {JSZip} an object with the new directory as the root, or an array containing matching folders.\n */\n folder: function(arg) {\n if (!arg) {\n return this;\n }\n\n if (utils.isRegExp(arg)) {\n return this.filter(function(relativePath, file) {\n return file.dir && arg.test(relativePath);\n });\n }\n\n // else, name is a new folder\n var name = this.root + arg;\n var newFolder = folderAdd.call(this, name);\n\n // Allow chaining by returning a new object with this folder as the root\n var ret = this.clone();\n ret.root = newFolder.name;\n return ret;\n },\n\n /**\n * Delete a file, or a directory and all sub-files, from the zip\n * @param {string} name the name of the file to delete\n * @return {JSZip} this JSZip object\n */\n remove: function(name) {\n name = this.root + name;\n var file = this.files[name];\n if (!file) {\n // Look for any folders\n if (name.slice(-1) != \"/\") {\n name += \"/\";\n }\n file = this.files[name];\n }\n\n if (file && !file.dir) {\n // file\n delete this.files[name];\n } else {\n // maybe a folder, delete recursively\n var kids = this.filter(function(relativePath, file) {\n return file.name.slice(0, name.length) === name;\n });\n for (var i = 0; i < kids.length; i++) {\n delete this.files[kids[i].name];\n }\n }\n\n return this;\n },\n\n /**\n * Generate the complete zip file\n * @param {Object} options the options to generate the zip file :\n * - base64, (deprecated, use type instead) true to generate base64.\n * - compression, \"STORE\" by default.\n * - type, \"base64\" by default. Values are : string, base64, uint8array, arraybuffer, blob.\n * @return {String|Uint8Array|ArrayBuffer|Buffer|Blob} the zip file\n */\n generate: function(options) {\n options = utils.extend(options || {}, {\n base64: true,\n compression: \"STORE\",\n compressionOptions : null,\n type: \"base64\",\n platform: \"DOS\",\n comment: null,\n mimeType: 'application/zip',\n encodeFileName: utf8.utf8encode\n });\n\n utils.checkSupport(options.type);\n\n // accept nodejs `process.platform`\n if(\n options.platform === 'darwin' ||\n options.platform === 'freebsd' ||\n options.platform === 'linux' ||\n options.platform === 'sunos'\n ) {\n options.platform = \"UNIX\";\n }\n if (options.platform === 'win32') {\n options.platform = \"DOS\";\n }\n\n var zipData = [],\n localDirLength = 0,\n centralDirLength = 0,\n writer, i,\n encodedComment = utils.transformTo(\"string\", options.encodeFileName(options.comment || this.comment || \"\"));\n\n // first, generate all the zip parts.\n for (var name in this.files) {\n if (!this.files.hasOwnProperty(name)) {\n continue;\n }\n var file = this.files[name];\n\n var compressionName = file.options.compression || options.compression.toUpperCase();\n var compression = compressions[compressionName];\n if (!compression) {\n throw new Error(compressionName + \" is not a valid compression method !\");\n }\n var compressionOptions = file.options.compressionOptions || options.compressionOptions || {};\n\n var compressedObject = generateCompressedObjectFrom.call(this, file, compression, compressionOptions);\n\n var zipPart = generateZipParts.call(this, name, file, compressedObject, localDirLength, options.platform, options.encodeFileName);\n localDirLength += zipPart.fileRecord.length + compressedObject.compressedSize;\n centralDirLength += zipPart.dirRecord.length;\n zipData.push(zipPart);\n }\n\n var dirEnd = \"\";\n\n // end of central dir signature\n dirEnd = signature.CENTRAL_DIRECTORY_END +\n // number of this disk\n \"\\x00\\x00\" +\n // number of the disk with the start of the central directory\n \"\\x00\\x00\" +\n // total number of entries in the central directory on this disk\n decToHex(zipData.length, 2) +\n // total number of entries in the central directory\n decToHex(zipData.length, 2) +\n // size of the central directory 4 bytes\n decToHex(centralDirLength, 4) +\n // offset of start of central directory with respect to the starting disk number\n decToHex(localDirLength, 4) +\n // .ZIP file comment length\n decToHex(encodedComment.length, 2) +\n // .ZIP file comment\n encodedComment;\n\n\n // we have all the parts (and the total length)\n // time to create a writer !\n var typeName = options.type.toLowerCase();\n if(typeName===\"uint8array\"||typeName===\"arraybuffer\"||typeName===\"blob\"||typeName===\"nodebuffer\") {\n writer = new Uint8ArrayWriter(localDirLength + centralDirLength + dirEnd.length);\n }else{\n writer = new StringWriter(localDirLength + centralDirLength + dirEnd.length);\n }\n\n for (i = 0; i < zipData.length; i++) {\n writer.append(zipData[i].fileRecord);\n writer.append(zipData[i].compressedObject.compressedContent);\n }\n for (i = 0; i < zipData.length; i++) {\n writer.append(zipData[i].dirRecord);\n }\n\n writer.append(dirEnd);\n\n var zip = writer.finalize();\n\n\n\n switch(options.type.toLowerCase()) {\n // case \"zip is an Uint8Array\"\n case \"uint8array\" :\n case \"arraybuffer\" :\n case \"nodebuffer\" :\n return utils.transformTo(options.type.toLowerCase(), zip);\n case \"blob\" :\n return utils.arrayBuffer2Blob(utils.transformTo(\"arraybuffer\", zip), options.mimeType);\n // case \"zip is a string\"\n case \"base64\" :\n return (options.base64) ? base64.encode(zip) : zip;\n default : // case \"string\" :\n return zip;\n }\n\n },\n\n /**\n * @deprecated\n * This method will be removed in a future version without replacement.\n */\n crc32: function (input, crc) {\n return crc32(input, crc);\n },\n\n /**\n * @deprecated\n * This method will be removed in a future version without replacement.\n */\n utf8encode: function (string) {\n return utils.transformTo(\"string\", utf8.utf8encode(string));\n },\n\n /**\n * @deprecated\n * This method will be removed in a future version without replacement.\n */\n utf8decode: function (input) {\n return utf8.utf8decode(input);\n }\n};\nmodule.exports = out;\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","'use strict';\nexports.STORE = {\n magic: \"\\x00\\x00\",\n compress: function(content, compressionOptions) {\n return content; // no compression\n },\n uncompress: function(content) {\n return content; // no compression\n },\n compressInputType: null,\n uncompressInputType: null\n};\nexports.DEFLATE = require('./flate');\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nmodule.exports = {\n 2: 'need dictionary', /* Z_NEED_DICT 2 */\n 1: 'stream end', /* Z_STREAM_END 1 */\n 0: '', /* Z_OK 0 */\n '-1': 'file error', /* Z_ERRNO (-1) */\n '-2': 'stream error', /* Z_STREAM_ERROR (-2) */\n '-3': 'data error', /* Z_DATA_ERROR (-3) */\n '-4': 'insufficient memory', /* Z_MEM_ERROR (-4) */\n '-5': 'buffer error', /* Z_BUF_ERROR (-5) */\n '-6': 'incompatible version' /* Z_VERSION_ERROR (-6) */\n};\n","'use strict';\nmodule.exports = function(data, encoding){\n return new Buffer(data, encoding);\n};\nmodule.exports.test = function(b){\n return Buffer.isBuffer(b);\n};\n","'use strict';\n\nconst Heap = require('heap');\n\nfunction Cluster() {\n this.children = [];\n this.distance = -1;\n this.index = [];\n}\n\n/**\n * Creates an array of values where maximum distance smaller than the threshold\n * @param {number} threshold\n * @return {Array }\n */\nCluster.prototype.cut = function (threshold) {\n if (threshold < 0) throw new RangeError('Threshold too small');\n var root = new Cluster();\n root.children = this.children;\n root.distance = this.distance;\n root.index = this.index;\n var list = [root];\n var ans = [];\n while (list.length > 0) {\n var aux = list.shift();\n if (threshold >= aux.distance) {\n ans.push(aux);\n } else {\n list = list.concat(aux.children);\n }\n }\n return ans;\n};\n\n/**\n * Merge the leaves in the minimum way to have 'minGroups' number of clusters\n * @param {number} minGroups - Them minimum number of children the first level of the tree should have\n * @return {Cluster}\n */\nCluster.prototype.group = function (minGroups) {\n if (!Number.isInteger(minGroups) || minGroups < 1) throw new RangeError('Number of groups must be a positive integer');\n\n const heap = new Heap(function (a, b) {\n return b.distance - a.distance;\n });\n\n heap.push(this);\n\n while (heap.size() < minGroups) {\n var first = heap.pop();\n if (first.children.length === 0) {\n break;\n }\n first.children.forEach(child => heap.push(child));\n }\n\n var root = new Cluster();\n root.children = heap.toArray();\n root.distance = this.distance;\n\n return root;\n};\n\n/**\n * Traverses the tree depth-first and provide callback to be called on each individual node\n * @param {function} cb - The callback to be called on each node encounter\n * @type {Cluster}\n */\nCluster.prototype.traverse = function (cb) {\n function visit(root, callback) {\n callback(root);\n if (root.children) {\n for (var i = root.children.length - 1; i >= 0; i--) {\n visit(root.children[i], callback);\n }\n }\n }\n visit(this, cb);\n};\n\nmodule.exports = Cluster;\n","module.exports = newArray\n\nfunction newArray (n, value) {\n n = n || 0\n var array = new Array(n)\n for (var i = 0; i < n; i++) {\n array[i] = value\n }\n return array\n}\n","module.exports = function(haystack, needle, comparator, low, high) {\n var mid, cmp;\n\n if(low === undefined)\n low = 0;\n\n else {\n low = low|0;\n if(low < 0 || low >= haystack.length)\n throw new RangeError(\"invalid lower bound\");\n }\n\n if(high === undefined)\n high = haystack.length - 1;\n\n else {\n high = high|0;\n if(high < low || high >= haystack.length)\n throw new RangeError(\"invalid upper bound\");\n }\n\n while(low <= high) {\n /* Note that \"(low + high) >>> 1\" may overflow, and results in a typecast\n * to double (which gives the wrong results). */\n mid = low + (high - low >> 1);\n cmp = +comparator(haystack[mid], needle, mid, haystack);\n\n /* Too low. */\n if(cmp < 0.0)\n low = mid + 1;\n\n /* Too high. */\n else if(cmp > 0.0)\n high = mid - 1;\n\n /* Key found. */\n else\n return mid;\n }\n\n /* Key not found. */\n return ~low;\n}\n","'use strict';\n\nmodule.exports = exports = require('./ArrayUtils');\n\nexports.getEquallySpacedData = require('./getEquallySpaced').getEquallySpacedData;\nexports.SNV = require('./snv').SNV;\n","\n/**\n * class encodes a integer vector as a String in order to store it in a text file.\n * The algorithms used to encode the data are describe in:\n * http://www.iupac.org/publications/pac/pdf/2001/pdf/7311x1765.pdf\n * Created by acastillo on 3/2/16.\n */\nconst newLine = '\\r\\n';\n\nconst pseudoDigits = [\n ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'],\n ['@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I'],\n ['@', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i'],\n ['%', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R'],\n ['%', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r'],\n [' ', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 's']\n];\n\nconst SQZ_P = 1;\nconst SQZ_N = 2;\nconst DIF_P = 3;\nconst DIF_N = 4;\nconst DUP = 5;\nconst MaxLinelength = 100;\n\n/**\n * This function encodes the given vector. The encoding format is specified by the\n * encoding option\n * @param {Array} data\n * @param {number} firstX\n * @param {number} intervalX\n * @param {string} encoding: ('FIX','SQZ','DIF','DIFDUP','CVS','PAC') Default 'DIFDUP'\n * @return {string}\n */\nfunction encode(data, firstX, intervalX, encoding) {\n switch (encoding) {\n case 'FIX':\n return fixEncoding(data, firstX, intervalX);\n case 'SQZ':\n return squeezedEncoding(data, firstX, intervalX);\n case 'DIF':\n return differenceEncoding(data, firstX, intervalX);\n case 'DIFDUP':\n return differenceDuplicateEncoding(data, firstX, intervalX);\n case 'CSV':\n return commaSeparatedValuesEncoding(data, firstX, intervalX);\n case 'PAC':\n return packedEncoding(data, firstX, intervalX);\n default:\n return differenceEncoding(data, firstX, intervalX);\n }\n}\n\n/**\n * @private\n * No data compression used. The data is separated by a comma(',').\n * @param {Array} data\n * @param {number} firstX\n * @param {number} intervalX\n * @return {string}\n */\nfunction commaSeparatedValuesEncoding(data, firstX, intervalX) {\n return fixEncoding(data, firstX, intervalX, ',');\n}\n\n/**\n * @private\n * No data compression used. The data is separated by the specified separator.\n * @param {Array} data\n * @param {number} firstX\n * @param {number} intervalX\n * @param {string} separator, The separator character\n * @return {string}\n */\nfunction fixEncoding(data, firstX, intervalX, separator) {\n if (!separator) {\n separator = ' ';\n }\n var outputData = '';\n var j = 0;\n var TD = data.length;\n var i;\n while (j < TD - 7) {\n outputData += Math.ceil(firstX + j * intervalX);\n for (i = 0; i < 8; i++) {\n outputData += separator + data[j++];\n }\n outputData += newLine;\n }\n if (j < TD) {\n // We add last numbers\n outputData += Math.ceil(firstX + j * intervalX);\n for (i = j; i < TD; i++) {\n outputData += separator + data[i];\n }\n }\n return outputData;\n}\n\n/**\n * @private\n * No data compression used. The data is separated by the sign of the number.\n * @param {Array} data\n * @param {number} firstX\n * @param {number} intervalX\n * @return {string}\n */\nfunction packedEncoding(data, firstX, intervalX) {\n var outputData = '';\n var j = 0;\n var TD = data.length;\n var i;\n\n while (j < TD - 7) {\n outputData += Math.ceil(firstX + j * intervalX);\n for (i = 0; i < 8; i++) {\n if (data[j] < 0) {\n outputData += `-${data[j++]}`;\n } else {\n outputData += `+${data[j++]}`;\n }\n }\n outputData += newLine;\n }\n if (j < TD) {\n // We add last numbers\n outputData += Math.ceil(firstX + j * intervalX);\n for (i = j; i < TD; i++) {\n if (data[i] < 0) {\n outputData += `-${data[i]}`;\n } else {\n outputData += `+${data[i]}`;\n }\n }\n }\n return outputData;\n}\n\n/**\n * @private\n * Data compression is possible using the squeezed form (SQZ) in which the delimiter, the leading digit,\n * and sign are replaced by a pseudo-digit from Table 1. For example, the Y-values 30, 32 would be\n * represented as C0C2.\n * @param {Array} data\n * @param {number} firstX\n * @param {number} intervalX\n * @return {string}\n */\nfunction squeezedEncoding(data, firstX, intervalX) {\n var outputData = '';\n // String outputData = new String();\n var j = 0;\n var TD = data.length;\n var i;\n\n while (j < TD - 10) {\n outputData += Math.ceil(firstX + j * intervalX);\n for (i = 0; i < 10; i++) {\n outputData += squeezedDigit(data[j++].toString());\n }\n outputData += newLine;\n }\n if (j < TD) {\n // We add last numbers\n outputData += Math.ceil(firstX + j * intervalX);\n for (i = j; i < TD; i++) {\n outputData += squeezedDigit(data[i].toString());\n }\n }\n\n return outputData;\n}\n\n/**\n * @private\n * Duplicate suppression encoding\n * @param {Array} data\n * @param {number} firstX\n * @param {number} intervalX\n * @return {string}\n */\nfunction differenceDuplicateEncoding(data, firstX, intervalX) {\n var mult = 0;\n var index = 0;\n var charCount = 0;\n var i;\n // We built a string where we store the encoded data.\n var encodData = '';\n var encodNumber = '';\n var temp = '';\n\n // We calculate the differences vector\n var diffData = new Array(data.length - 1);\n for (i = 0; i < diffData.length; i++) {\n diffData[i] = data[i + 1] - data[i];\n }\n\n // We simulate a line carry\n var numDiff = diffData.length;\n while (index < numDiff) {\n if (charCount === 0) { // Start line\n encodNumber = Math.ceil(firstX + index * intervalX) + squeezedDigit(data[index].toString()) + differenceDigit(diffData[index].toString());\n encodData += encodNumber;\n charCount += encodNumber.length;\n } else {\n // Try to insert next difference\n if (diffData[index - 1] === diffData[index]) {\n mult++;\n } else {\n if (mult > 0) { // Now we know that it can be in line\n mult++;\n encodNumber = duplicateDigit(mult.toString());\n encodData += encodNumber;\n charCount += encodNumber.length;\n mult = 0;\n index--;\n } else {\n // Mirar si cabe, en caso contrario iniciar una nueva linea\n encodNumber = differenceDigit(diffData[index].toString());\n if (encodNumber.length + charCount < MaxLinelength) {\n encodData += encodNumber;\n charCount += encodNumber.length;\n } else { // Iniciar nueva linea\n encodData += newLine;\n temp = Math.ceil(firstX + index * intervalX) + squeezedDigit(data[index].toString()) + encodNumber;\n encodData += temp;// Each line start with first index number.\n charCount = temp.length;\n }\n }\n }\n }\n index++;\n }\n if (mult > 0) {\n encodData += duplicateDigit((mult + 1).toString());\n }\n // We insert the last data from fid. It is done to control of data\n // The last line start with the number of datas in the fid.\n encodData += newLine + Math.ceil(firstX + index * intervalX) + squeezedDigit(data[index].toString());\n\n return encodData;\n}\n\n/**\n * @private\n * Differential encoding\n * @param {Array} data\n * @param {number} firstX\n * @param {number} intervalX\n * @return {string}\n */\nfunction differenceEncoding(data, firstX, intervalX) {\n var index = 0;\n var charCount = 0;\n var i;\n\n var encodData = '';\n var encodNumber = '';\n var temp = '';\n\n // We calculate the differences vector\n var diffData = new Array(data.length - 1);\n for (i = 0; i < diffData.length; i++) {\n diffData[i] = data[i + 1] - data[i];\n }\n\n var numDiff = diffData.length;\n while (index < numDiff) {\n if (charCount === 0) {\n // We convert the first number.\n encodNumber = Math.ceil(firstX + index * intervalX) + squeezedDigit(data[index].toString()) + differenceDigit(diffData[index].toString());\n encodData += encodNumber;\n charCount += encodNumber.length;\n } else {\n encodNumber = differenceDigit(diffData[index].toString());\n if (encodNumber.length + charCount < MaxLinelength) {\n encodData += encodNumber;\n charCount += encodNumber.length;\n } else {\n encodData += newLine;\n temp = Math.ceil(firstX + index * intervalX) + squeezedDigit(data[index].toString()) + encodNumber;\n encodData += temp;// Each line start with first index number.\n charCount = temp.length;\n }\n }\n index++;\n }\n // We insert the last number from data. It is done to control of data\n encodData += newLine + Math.ceil(firstX + index * intervalX) + squeezedDigit(data[index].toString());\n\n return encodData;\n}\n\n/**\n * @private\n * Convert number to the ZQZ format, using pseudo digits.\n * @param {number} num\n * @return {string}\n */\nfunction squeezedDigit(num) {\n var SQZdigit = '';\n if (num.charAt(0) === '-') {\n SQZdigit += pseudoDigits[SQZ_N][num.charAt(1)];\n if (num.length > 2) {\n SQZdigit += num.substring(2);\n }\n } else {\n SQZdigit += pseudoDigits[SQZ_P][num.charAt(0)];\n if (num.length > 1) {\n SQZdigit += num.substring(1);\n }\n }\n\n return SQZdigit;\n}\n\n/**\n * @private\n * Convert number to the DIF format, using pseudo digits.\n * @param {number} num\n * @return {string}\n */\nfunction differenceDigit(num) {\n var DIFFdigit = '';\n\n if (num.charAt(0) === '-') {\n DIFFdigit += pseudoDigits[DIF_N][num.charAt(1)];\n if (num.length > 2) {\n DIFFdigit += num.substring(2);\n }\n } else {\n DIFFdigit += pseudoDigits[DIF_P][num.charAt(0)];\n if (num.length > 1) {\n DIFFdigit += num.substring(1);\n }\n }\n\n return DIFFdigit;\n}\n\n/**\n * @private\n * Convert number to the DUP format, using pseudo digits.\n * @param {number} num\n * @return {string}\n */\nfunction duplicateDigit(num) {\n var DUPdigit = '';\n DUPdigit += pseudoDigits[DUP][num.charAt(0)];\n if (num.length > 1) {\n DUPdigit += num.substring(1);\n }\n\n return DUPdigit;\n}\n\nmodule.exports = {\n encode,\n fixEncoding,\n commaSeparatedValuesEncoding,\n packedEncoding,\n squeezedEncoding,\n differenceDuplicateEncoding,\n differenceEncoding\n};\n","'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\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) {/**/}\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[0],\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t} else if ((typeof target !== 'object' && typeof target !== 'function') || target == null) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = target[name];\n\t\t\t\tcopy = options[name];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\ttarget[name] = extend(deep, clone, copy);\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\ttarget[name] = copy;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\n","'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 = -Infinity;\n var l = values.length;\n for (var i = 0; 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 = Infinity;\n var l = values.length;\n for (var i = 0; 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 = Infinity;\n var max = -Infinity;\n var l = values.length;\n for (var i = 0; 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 = values.slice().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 = values.slice().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\nexports.quartiles = function quartiles(values, alreadySorted) {\n if (typeof(alreadySorted) === 'undefined') alreadySorted = false;\n if (!alreadySorted) {\n values = values.slice();\n 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 }\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 }\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 = values.slice();\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\nvar LM = require('ml-curve-fitting');\nvar math = LM.Matrix.algebra;\nvar Matrix = require('ml-matrix');\n\n/**\n * This function calculates the spectrum as a sum of lorentzian functions. The Lorentzian\n * parameters are divided in 3 batches. 1st: centers; 2nd: heights; 3th: widths;\n * @param t Ordinate values\n * @param p Lorentzian parameters\n * @param c Constant parameters(Not used)\n * @returns {*}\n */\nfunction sumOfLorentzians(t,p,c){\n var nL = p.length/3,factor,i, j,p2, cols = t.rows;\n var result = Matrix.zeros(t.length,1);\n\n for(i=0;imaxY)\n maxY = y[i];\n }\n }\n else{\n //It is a colum matrix\n if(typeof x[0] === \"object\"){\n for(i=0;imaxY)\n maxY = y[i][0];\n }\n }\n\n }\n\n //}\n }\n else{\n //Looks like a column wise matrix [[x],[y]]\n var nbPoints = nbSeries;\n //if(nbPoints<3)\n // throw new SizeException(nbPoints);\n //else {\n t = new Array(nbPoints);//new Matrix(nbPoints, 1);\n y_data = new Array(nbPoints);//new Matrix(nbPoints, 1);\n for (i = 0; i < nbPoints; i++) {\n t[i] = xy[i][0];\n y_data[i] = xy[i][1];\n if(y_data[i]>maxY)\n maxY = y_data[i];\n }\n //}\n }\n for (i = 0; i < nbPoints; i++) {\n y_data[i]/=maxY;\n }\n if(threshold){\n for (i = nbPoints-1; i >=0; i--) {\n if(y_data[i]0)\n return [(new Matrix([t])).transpose(),(new Matrix([y_data])).transpose(),maxY];\n return null;\n}\n\nfunction sizeException(nbPoints) {\n return new RangeError(\"Not enough points to perform the optimization: \"+nbPoints +\"< 3\");\n}\n\nmodule.exports.optimizeSingleLorentzian = optimizeSingleLorentzian;\nmodule.exports.optimizeLorentzianSum = optimizeLorentzianSum;\nmodule.exports.optimizeSingleGaussian = optimizeSingleGaussian;\nmodule.exports.optimizeGaussianSum = optimizeGaussianSum;\nmodule.exports.singleGaussian = singleGaussian;\nmodule.exports.singleLorentzian = singleLorentzian;\nmodule.exports.optimizeGaussianTrain = optimizeGaussianTrain;\nmodule.exports.optimizeLorentzianTrain = optimizeLorentzianTrain;","'use strict';\n\nmodule.exports = abstractMatrix;\n\nvar LuDecomposition = require('./dc/lu');\nvar SvDecomposition = require('./dc/svd');\nvar arrayUtils = require('ml-array-utils');\nvar util = require('./util');\nvar MatrixTransposeView = require('./views/transpose');\nvar MatrixRowView = require('./views/row');\nvar MatrixSubView = require('./views/sub');\nvar MatrixSelectionView = require('./views/selection');\nvar MatrixColumnView = require('./views/column');\nvar MatrixFlipRowView = require('./views/flipRow');\nvar MatrixFlipColumnView = require('./views/flipColumn');\n\nfunction abstractMatrix(superCtor) {\n if (superCtor === undefined) superCtor = Object;\n\n /**\n * Real matrix\n * @class Matrix\n * @param {number|Array|Matrix} nRows - Number of rows of the new matrix,\n * 2D array containing the data or Matrix instance to clone\n * @param {number} [nColumns] - Number of columns of the new matrix\n */\n class Matrix extends superCtor {\n static get [Symbol.species]() {\n return this;\n }\n\n /**\n * Constructs a Matrix with the chosen dimensions from a 1D array\n * @param {number} newRows - Number of rows\n * @param {number} newColumns - Number of columns\n * @param {Array} newData - A 1D array containing data for the matrix\n * @return {Matrix} - The new matrix\n */\n static from1DArray(newRows, newColumns, newData) {\n var length = newRows * newColumns;\n if (length !== newData.length) {\n throw new RangeError('Data length does not match given dimensions');\n }\n var newMatrix = new this(newRows, newColumns);\n for (var row = 0; row < newRows; row++) {\n for (var column = 0; column < newColumns; column++) {\n newMatrix.set(row, column, newData[row * newColumns + column]);\n }\n }\n return newMatrix;\n }\n\n /**\n * Creates a row vector, a matrix with only one row.\n * @param {Array} newData - A 1D array containing data for the vector\n * @return {Matrix} - The new matrix\n */\n static rowVector(newData) {\n var vector = new this(1, newData.length);\n for (var i = 0; i < newData.length; i++) {\n vector.set(0, i, newData[i]);\n }\n return vector;\n }\n\n /**\n * Creates a column vector, a matrix with only one column.\n * @param {Array} newData - A 1D array containing data for the vector\n * @return {Matrix} - The new matrix\n */\n static columnVector(newData) {\n var vector = new this(newData.length, 1);\n for (var i = 0; i < newData.length; i++) {\n vector.set(i, 0, newData[i]);\n }\n return vector;\n }\n\n /**\n * Creates an empty matrix with the given dimensions. Values will be undefined. Same as using new Matrix(rows, columns).\n * @param {number} rows - Number of rows\n * @param {number} columns - Number of columns\n * @return {Matrix} - The new matrix\n */\n static empty(rows, columns) {\n return new this(rows, columns);\n }\n\n /**\n * Creates a matrix with the given dimensions. Values will be set to zero.\n * @param {number} rows - Number of rows\n * @param {number} columns - Number of columns\n * @return {Matrix} - The new matrix\n */\n static zeros(rows, columns) {\n return this.empty(rows, columns).fill(0);\n }\n\n /**\n * Creates a matrix with the given dimensions. Values will be set to one.\n * @param {number} rows - Number of rows\n * @param {number} columns - Number of columns\n * @return {Matrix} - The new matrix\n */\n static ones(rows, columns) {\n return this.empty(rows, columns).fill(1);\n }\n\n /**\n * Creates a matrix with the given dimensions. Values will be randomly set.\n * @param {number} rows - Number of rows\n * @param {number} columns - Number of columns\n * @param {function} [rng=Math.random] - Random number generator\n * @return {Matrix} The new matrix\n */\n static rand(rows, columns, rng) {\n if (rng === undefined) rng = Math.random;\n var matrix = this.empty(rows, columns);\n for (var i = 0; i < rows; i++) {\n for (var j = 0; j < columns; j++) {\n matrix.set(i, j, rng());\n }\n }\n return matrix;\n }\n\n /**\n * Creates a matrix with the given dimensions. Values will be random integers.\n * @param {number} rows - Number of rows\n * @param {number} columns - Number of columns\n * @param {number} [maxValue=1000] - Maximum value\n * @param {function} [rng=Math.random] - Random number generator\n * @return {Matrix} The new matrix\n */\n static randInt(rows, columns, maxValue, rng) {\n if (maxValue === undefined) maxValue = 1000;\n if (rng === undefined) rng = Math.random;\n var matrix = this.empty(rows, columns);\n for (var i = 0; i < rows; i++) {\n for (var j = 0; j < columns; j++) {\n var value = Math.floor(rng() * maxValue);\n matrix.set(i, j, value);\n }\n }\n return matrix;\n }\n\n /**\n * Creates an identity matrix with the given dimension. Values of the diagonal will be 1 and others will be 0.\n * @param {number} rows - Number of rows\n * @param {number} [columns=rows] - Number of columns\n * @param {number} [value=1] - Value to fill the diagonal with\n * @return {Matrix} - The new identity matrix\n */\n static eye(rows, columns, value) {\n if (columns === undefined) columns = rows;\n if (value === undefined) value = 1;\n var min = Math.min(rows, columns);\n var matrix = this.zeros(rows, columns);\n for (var i = 0; i < min; i++) {\n matrix.set(i, i, value);\n }\n return matrix;\n }\n\n /**\n * Creates a diagonal matrix based on the given array.\n * @param {Array} data - Array containing the data for the diagonal\n * @param {number} [rows] - Number of rows (Default: data.length)\n * @param {number} [columns] - Number of columns (Default: rows)\n * @return {Matrix} - The new diagonal matrix\n */\n static diag(data, rows, columns) {\n var l = data.length;\n if (rows === undefined) rows = l;\n if (columns === undefined) columns = rows;\n var min = Math.min(l, rows, columns);\n var matrix = this.zeros(rows, columns);\n for (var i = 0; i < min; i++) {\n matrix.set(i, i, data[i]);\n }\n return matrix;\n }\n\n /**\n * Returns a matrix whose elements are the minimum between matrix1 and matrix2\n * @param {Matrix} matrix1\n * @param {Matrix} matrix2\n * @return {Matrix}\n */\n static min(matrix1, matrix2) {\n matrix1 = this.checkMatrix(matrix1);\n matrix2 = this.checkMatrix(matrix2);\n var rows = matrix1.rows;\n var columns = matrix1.columns;\n var result = new this(rows, columns);\n for (var i = 0; i < rows; i++) {\n for (var 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 /**\n * Returns a matrix whose elements are the maximum between matrix1 and matrix2\n * @param {Matrix} matrix1\n * @param {Matrix} matrix2\n * @return {Matrix}\n */\n static max(matrix1, matrix2) {\n matrix1 = this.checkMatrix(matrix1);\n matrix2 = this.checkMatrix(matrix2);\n var rows = matrix1.rows;\n var columns = matrix1.columns;\n var result = new this(rows, columns);\n for (var i = 0; i < rows; i++) {\n for (var 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 /**\n * Check that the provided value is a Matrix and tries to instantiate one if not\n * @param {*} value - The value to check\n * @return {Matrix}\n */\n static checkMatrix(value) {\n return Matrix.isMatrix(value) ? value : new this(value);\n }\n\n /**\n * Returns true if the argument is a Matrix, false otherwise\n * @param {*} value - The value to check\n * @return {boolean}\n */\n static isMatrix(value) {\n return (value != null) && (value.klass === 'Matrix');\n }\n\n /**\n * @prop {number} size - The number of elements in the matrix.\n */\n get size() {\n return this.rows * this.columns;\n }\n\n /**\n * Applies a callback for each element of the matrix. The function is called in the matrix (this) context.\n * @param {function} callback - Function that will be called with two parameters : i (row) and j (column)\n * @return {Matrix} this\n */\n apply(callback) {\n if (typeof callback !== 'function') {\n throw new TypeError('callback must be a function');\n }\n var ii = this.rows;\n var jj = this.columns;\n for (var i = 0; i < ii; i++) {\n for (var j = 0; j < jj; j++) {\n callback.call(this, i, j);\n }\n }\n return this;\n }\n\n /**\n * Returns a new 1D array filled row by row with the matrix values\n * @return {Array}\n */\n to1DArray() {\n var array = new Array(this.size);\n for (var i = 0; i < this.rows; i++) {\n for (var j = 0; j < this.columns; j++) {\n array[i * this.columns + j] = this.get(i, j);\n }\n }\n return array;\n }\n\n /**\n * Returns a 2D array containing a copy of the data\n * @return {Array}\n */\n to2DArray() {\n var copy = new Array(this.rows);\n for (var i = 0; i < this.rows; i++) {\n copy[i] = new Array(this.columns);\n for (var j = 0; j < this.columns; j++) {\n copy[i][j] = this.get(i, j);\n }\n }\n return copy;\n }\n\n /**\n * @return {boolean} true if the matrix has one row\n */\n isRowVector() {\n return this.rows === 1;\n }\n\n /**\n * @return {boolean} true if the matrix has one column\n */\n isColumnVector() {\n return this.columns === 1;\n }\n\n /**\n * @return {boolean} true if the matrix has one row or one column\n */\n isVector() {\n return (this.rows === 1) || (this.columns === 1);\n }\n\n /**\n * @return {boolean} true if the matrix has the same number of rows and columns\n */\n isSquare() {\n return this.rows === this.columns;\n }\n\n /**\n * @return {boolean} true if the matrix is square and has the same values on both sides of the diagonal\n */\n isSymmetric() {\n if (this.isSquare()) {\n for (var i = 0; i < this.rows; i++) {\n for (var 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 /**\n * Sets a given element of the matrix. mat.set(3,4,1) is equivalent to mat[3][4]=1\n * @abstract\n * @param {number} rowIndex - Index of the row\n * @param {number} columnIndex - Index of the column\n * @param {number} value - The new value for the element\n * @return {Matrix} this\n */\n set(rowIndex, columnIndex, value) { // eslint-disable-line no-unused-vars\n throw new Error('set method is unimplemented');\n }\n\n /**\n * Returns the given element of the matrix. mat.get(3,4) is equivalent to matrix[3][4]\n * @abstract\n * @param {number} rowIndex - Index of the row\n * @param {number} columnIndex - Index of the column\n * @return {number}\n */\n get(rowIndex, columnIndex) { // eslint-disable-line no-unused-vars\n throw new Error('get method is unimplemented');\n }\n\n /**\n * Creates a new matrix that is a repetition of the current matrix. New matrix has rowRep times the number of\n * rows of the matrix, and colRep times the number of columns of the matrix\n * @param {number} rowRep - Number of times the rows should be repeated\n * @param {number} colRep - Number of times the columns should be re\n * @return {Matrix}\n * @example\n * var matrix = new Matrix([[1,2]]);\n * matrix.repeat(2); // [[1,2],[1,2]]\n */\n repeat(rowRep, colRep) {\n rowRep = rowRep || 1;\n colRep = colRep || 1;\n var matrix = new this.constructor[Symbol.species](this.rows * rowRep, this.columns * colRep);\n for (var i = 0; i < rowRep; i++) {\n for (var j = 0; j < colRep; j++) {\n matrix.setSubMatrix(this, this.rows * i, this.columns * j);\n }\n }\n return matrix;\n }\n\n /**\n * Fills the matrix with a given value. All elements will be set to this value.\n * @param {number} value - New value\n * @return {Matrix} this\n */\n fill(value) {\n for (var i = 0; i < this.rows; i++) {\n for (var j = 0; j < this.columns; j++) {\n this.set(i, j, value);\n }\n }\n return this;\n }\n\n /**\n * Negates the matrix. All elements will be multiplied by (-1)\n * @return {Matrix} this\n */\n neg() {\n return this.mulS(-1);\n }\n\n /**\n * Returns a new array from the given row index\n * @param {number} index - Row index\n * @return {Array}\n */\n getRow(index) {\n util.checkRowIndex(this, index);\n var row = new Array(this.columns);\n for (var i = 0; i < this.columns; i++) {\n row[i] = this.get(index, i);\n }\n return row;\n }\n\n /**\n * Returns a new row vector from the given row index\n * @param {number} index - Row index\n * @return {Matrix}\n */\n getRowVector(index) {\n return this.constructor.rowVector(this.getRow(index));\n }\n\n /**\n * Sets a row at the given index\n * @param {number} index - Row index\n * @param {Array|Matrix} array - Array or vector\n * @return {Matrix} this\n */\n setRow(index, array) {\n util.checkRowIndex(this, index);\n array = util.checkRowVector(this, array);\n for (var i = 0; i < this.columns; i++) {\n this.set(index, i, array[i]);\n }\n return this;\n }\n\n /**\n * Swaps two rows\n * @param {number} row1 - First row index\n * @param {number} row2 - Second row index\n * @return {Matrix} this\n */\n swapRows(row1, row2) {\n util.checkRowIndex(this, row1);\n util.checkRowIndex(this, row2);\n for (var i = 0; i < this.columns; i++) {\n var 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 /**\n * Returns a new array from the given column index\n * @param {number} index - Column index\n * @return {Array}\n */\n getColumn(index) {\n util.checkColumnIndex(this, index);\n var column = new Array(this.rows);\n for (var i = 0; i < this.rows; i++) {\n column[i] = this.get(i, index);\n }\n return column;\n }\n\n /**\n * Returns a new column vector from the given column index\n * @param {number} index - Column index\n * @return {Matrix}\n */\n getColumnVector(index) {\n return this.constructor.columnVector(this.getColumn(index));\n }\n\n /**\n * Sets a column at the given index\n * @param {number} index - Column index\n * @param {Array|Matrix} array - Array or vector\n * @return {Matrix} this\n */\n setColumn(index, array) {\n util.checkColumnIndex(this, index);\n array = util.checkColumnVector(this, array);\n for (var i = 0; i < this.rows; i++) {\n this.set(i, index, array[i]);\n }\n return this;\n }\n\n /**\n * Swaps two columns\n * @param {number} column1 - First column index\n * @param {number} column2 - Second column index\n * @return {Matrix} this\n */\n swapColumns(column1, column2) {\n util.checkColumnIndex(this, column1);\n util.checkColumnIndex(this, column2);\n for (var i = 0; i < this.rows; i++) {\n var 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 /**\n * Adds the values of a vector to each row\n * @param {Array|Matrix} vector - Array or vector\n * @return {Matrix} this\n */\n addRowVector(vector) {\n vector = util.checkRowVector(this, vector);\n for (var i = 0; i < this.rows; i++) {\n for (var 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 /**\n * Subtracts the values of a vector from each row\n * @param {Array|Matrix} vector - Array or vector\n * @return {Matrix} this\n */\n subRowVector(vector) {\n vector = util.checkRowVector(this, vector);\n for (var i = 0; i < this.rows; i++) {\n for (var 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 /**\n * Multiplies the values of a vector with each row\n * @param {Array|Matrix} vector - Array or vector\n * @return {Matrix} this\n */\n mulRowVector(vector) {\n vector = util.checkRowVector(this, vector);\n for (var i = 0; i < this.rows; i++) {\n for (var 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 /**\n * Divides the values of each row by those of a vector\n * @param {Array|Matrix} vector - Array or vector\n * @return {Matrix} this\n */\n divRowVector(vector) {\n vector = util.checkRowVector(this, vector);\n for (var i = 0; i < this.rows; i++) {\n for (var 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 /**\n * Adds the values of a vector to each column\n * @param {Array|Matrix} vector - Array or vector\n * @return {Matrix} this\n */\n addColumnVector(vector) {\n vector = util.checkColumnVector(this, vector);\n for (var i = 0; i < this.rows; i++) {\n for (var 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 /**\n * Subtracts the values of a vector from each column\n * @param {Array|Matrix} vector - Array or vector\n * @return {Matrix} this\n */\n subColumnVector(vector) {\n vector = util.checkColumnVector(this, vector);\n for (var i = 0; i < this.rows; i++) {\n for (var 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 /**\n * Multiplies the values of a vector with each column\n * @param {Array|Matrix} vector - Array or vector\n * @return {Matrix} this\n */\n mulColumnVector(vector) {\n vector = util.checkColumnVector(this, vector);\n for (var i = 0; i < this.rows; i++) {\n for (var 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 /**\n * Divides the values of each column by those of a vector\n * @param {Array|Matrix} vector - Array or vector\n * @return {Matrix} this\n */\n divColumnVector(vector) {\n vector = util.checkColumnVector(this, vector);\n for (var i = 0; i < this.rows; i++) {\n for (var 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 /**\n * Multiplies the values of a row with a scalar\n * @param {number} index - Row index\n * @param {number} value\n * @return {Matrix} this\n */\n mulRow(index, value) {\n util.checkRowIndex(this, index);\n for (var i = 0; i < this.columns; i++) {\n this.set(index, i, this.get(index, i) * value);\n }\n return this;\n }\n\n /**\n * Multiplies the values of a column with a scalar\n * @param {number} index - Column index\n * @param {number} value\n * @return {Matrix} this\n */\n mulColumn(index, value) {\n util.checkColumnIndex(this, index);\n for (var i = 0; i < this.rows; i++) {\n this.set(i, index, this.get(i, index) * value);\n }\n return this;\n }\n\n /**\n * Returns the maximum value of the matrix\n * @return {number}\n */\n max() {\n var v = this.get(0, 0);\n for (var i = 0; i < this.rows; i++) {\n for (var j = 0; j < this.columns; j++) {\n if (this.get(i, j) > v) {\n v = this.get(i, j);\n }\n }\n }\n return v;\n }\n\n /**\n * Returns the index of the maximum value\n * @return {Array}\n */\n maxIndex() {\n var v = this.get(0, 0);\n var idx = [0, 0];\n for (var i = 0; i < this.rows; i++) {\n for (var 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 /**\n * Returns the minimum value of the matrix\n * @return {number}\n */\n min() {\n var v = this.get(0, 0);\n for (var i = 0; i < this.rows; i++) {\n for (var j = 0; j < this.columns; j++) {\n if (this.get(i, j) < v) {\n v = this.get(i, j);\n }\n }\n }\n return v;\n }\n\n /**\n * Returns the index of the minimum value\n * @return {Array}\n */\n minIndex() {\n var v = this.get(0, 0);\n var idx = [0, 0];\n for (var i = 0; i < this.rows; i++) {\n for (var 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 /**\n * Returns the maximum value of one row\n * @param {number} row - Row index\n * @return {number}\n */\n maxRow(row) {\n util.checkRowIndex(this, row);\n var v = this.get(row, 0);\n for (var 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 /**\n * Returns the index of the maximum value of one row\n * @param {number} row - Row index\n * @return {Array}\n */\n maxRowIndex(row) {\n util.checkRowIndex(this, row);\n var v = this.get(row, 0);\n var idx = [row, 0];\n for (var 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 /**\n * Returns the minimum value of one row\n * @param {number} row - Row index\n * @return {number}\n */\n minRow(row) {\n util.checkRowIndex(this, row);\n var v = this.get(row, 0);\n for (var 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 /**\n * Returns the index of the maximum value of one row\n * @param {number} row - Row index\n * @return {Array}\n */\n minRowIndex(row) {\n util.checkRowIndex(this, row);\n var v = this.get(row, 0);\n var idx = [row, 0];\n for (var 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 /**\n * Returns the maximum value of one column\n * @param {number} column - Column index\n * @return {number}\n */\n maxColumn(column) {\n util.checkColumnIndex(this, column);\n var v = this.get(0, column);\n for (var 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 /**\n * Returns the index of the maximum value of one column\n * @param {number} column - Column index\n * @return {Array}\n */\n maxColumnIndex(column) {\n util.checkColumnIndex(this, column);\n var v = this.get(0, column);\n var idx = [0, column];\n for (var 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 /**\n * Returns the minimum value of one column\n * @param {number} column - Column index\n * @return {number}\n */\n minColumn(column) {\n util.checkColumnIndex(this, column);\n var v = this.get(0, column);\n for (var 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 /**\n * Returns the index of the minimum value of one column\n * @param {number} column - Column index\n * @return {Array}\n */\n minColumnIndex(column) {\n util.checkColumnIndex(this, column);\n var v = this.get(0, column);\n var idx = [0, column];\n for (var 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 /**\n * Returns an array containing the diagonal values of the matrix\n * @return {Array}\n */\n diag() {\n var min = Math.min(this.rows, this.columns);\n var diag = new Array(min);\n for (var i = 0; i < min; i++) {\n diag[i] = this.get(i, i);\n }\n return diag;\n }\n\n /**\n * Returns the sum by the argument given, if no argument given,\n * it returns the sum of all elements of the matrix.\n * @param {string} by - sum by 'row' or 'column'.\n * @return {Matrix|number}\n */\n sum(by) {\n switch (by) {\n case 'row':\n return util.sumByRow(this);\n case 'column':\n return util.sumByColumn(this);\n default:\n return util.sumAll(this);\n }\n }\n\n /**\n * Returns the mean of all elements of the matrix\n * @return {number}\n */\n mean() {\n return this.sum() / this.size;\n }\n\n /**\n * Returns the product of all elements of the matrix\n * @return {number}\n */\n prod() {\n var prod = 1;\n for (var i = 0; i < this.rows; i++) {\n for (var j = 0; j < this.columns; j++) {\n prod *= this.get(i, j);\n }\n }\n return prod;\n }\n\n /**\n * Computes the cumulative sum of the matrix elements (in place, row by row)\n * @return {Matrix} this\n */\n cumulativeSum() {\n var sum = 0;\n for (var i = 0; i < this.rows; i++) {\n for (var 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 /**\n * Computes the dot (scalar) product between the matrix and another\n * @param {Matrix} vector2 vector\n * @return {number}\n */\n dot(vector2) {\n if (Matrix.isMatrix(vector2)) vector2 = vector2.to1DArray();\n var vector1 = this.to1DArray();\n if (vector1.length !== vector2.length) {\n throw new RangeError('vectors do not have the same size');\n }\n var dot = 0;\n for (var i = 0; i < vector1.length; i++) {\n dot += vector1[i] * vector2[i];\n }\n return dot;\n }\n\n /**\n * Returns the matrix product between this and other\n * @param {Matrix} other\n * @return {Matrix}\n */\n mmul(other) {\n other = this.constructor.checkMatrix(other);\n if (this.columns !== other.rows) {\n // eslint-disable-next-line no-console\n console.warn('Number of columns of left matrix are not equal to number of rows of right matrix.');\n }\n\n var m = this.rows;\n var n = this.columns;\n var p = other.columns;\n\n var result = new this.constructor[Symbol.species](m, p);\n\n var Bcolj = new Array(n);\n for (var j = 0; j < p; j++) {\n for (var k = 0; k < n; k++) {\n Bcolj[k] = other.get(k, j);\n }\n\n for (var i = 0; i < m; i++) {\n var s = 0;\n for (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 strassen2x2(other) {\n var result = new this.constructor[Symbol.species](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 var result = new this.constructor[Symbol.species](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 /**\n * Returns the matrix product between x and y. More efficient than mmul(other) only when we multiply squared matrix and when the size of the matrix is > 1000.\n * @param {Matrix} y\n * @return {Matrix}\n */\n mmulStrassen(y) {\n var x = this.clone();\n var r1 = x.rows;\n var c1 = x.columns;\n var r2 = y.rows;\n var c2 = y.columns;\n if (c1 !== r2) {\n // eslint-disable-next-line no-console\n console.warn(`Multiplying ${r1} x ${c1} and ${r2} x ${c2} matrix: dimensions do not match.`);\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 var r = mat.rows;\n var c = mat.columns;\n if ((r === rows) && (c === cols)) {\n return mat;\n } else {\n var resultat = Matrix.zeros(rows, cols);\n resultat = resultat.setSubMatrix(mat, 0, 0);\n return resultat;\n }\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 var r = Math.max(r1, r2);\n var 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 var halfRows = parseInt(a.rows / 2);\n var halfCols = parseInt(a.columns / 2);\n // Subdivide input matrices.\n var a11 = a.subMatrix(0, halfRows - 1, 0, halfCols - 1);\n var b11 = b.subMatrix(0, halfRows - 1, 0, halfCols - 1);\n\n var a12 = a.subMatrix(0, halfRows - 1, halfCols, a.columns - 1);\n var b12 = b.subMatrix(0, halfRows - 1, halfCols, b.columns - 1);\n\n var a21 = a.subMatrix(halfRows, a.rows - 1, 0, halfCols - 1);\n var b21 = b.subMatrix(halfRows, b.rows - 1, 0, halfCols - 1);\n\n var a22 = a.subMatrix(halfRows, a.rows - 1, halfCols, a.columns - 1);\n var b22 = b.subMatrix(halfRows, b.rows - 1, halfCols, b.columns - 1);\n\n // Compute intermediate values.\n var m1 = blockMult(Matrix.add(a11, a22), Matrix.add(b11, b22), halfRows, halfCols);\n var m2 = blockMult(Matrix.add(a21, a22), b11, halfRows, halfCols);\n var m3 = blockMult(a11, Matrix.sub(b12, b22), halfRows, halfCols);\n var m4 = blockMult(a22, Matrix.sub(b21, b11), halfRows, halfCols);\n var m5 = blockMult(Matrix.add(a11, a12), b22, halfRows, halfCols);\n var m6 = blockMult(Matrix.sub(a21, a11), Matrix.add(b11, b12), halfRows, halfCols);\n var m7 = blockMult(Matrix.sub(a12, a22), Matrix.add(b21, b22), halfRows, halfCols);\n\n // Combine intermediate values into the output.\n var c11 = Matrix.add(m1, m4);\n c11.sub(m5);\n c11.add(m7);\n var c12 = Matrix.add(m3, m5);\n var c21 = Matrix.add(m2, m4);\n var c22 = Matrix.sub(m1, m2);\n c22.add(m3);\n c22.add(m6);\n\n //Crop output to the desired size (undo dynamic padding).\n var resultat = Matrix.zeros(2 * c11.rows, 2 * c11.columns);\n resultat = resultat.setSubMatrix(c11, 0, 0);\n resultat = resultat.setSubMatrix(c12, c11.rows, 0);\n resultat = resultat.setSubMatrix(c21, 0, c11.columns);\n resultat = resultat.setSubMatrix(c22, c11.rows, c11.columns);\n return resultat.subMatrix(0, rows - 1, 0, cols - 1);\n }\n return blockMult(x, y, r, c);\n }\n\n /**\n * Returns a row-by-row scaled matrix\n * @param {number} [min=0] - Minimum scaled value\n * @param {number} [max=1] - Maximum scaled value\n * @return {Matrix} - The scaled matrix\n */\n scaleRows(min, max) {\n min = min === undefined ? 0 : min;\n max = max === undefined ? 1 : max;\n if (min >= max) {\n throw new RangeError('min should be strictly smaller than max');\n }\n var newMatrix = this.constructor.empty(this.rows, this.columns);\n for (var i = 0; i < this.rows; i++) {\n var scaled = arrayUtils.scale(this.getRow(i), {min, max});\n newMatrix.setRow(i, scaled);\n }\n return newMatrix;\n }\n\n /**\n * Returns a new column-by-column scaled matrix\n * @param {number} [min=0] - Minimum scaled value\n * @param {number} [max=1] - Maximum scaled value\n * @return {Matrix} - The new scaled matrix\n * @example\n * var matrix = new Matrix([[1,2],[-1,0]]);\n * var scaledMatrix = matrix.scaleColumns(); // [[1,1],[0,0]]\n */\n scaleColumns(min, max) {\n min = min === undefined ? 0 : min;\n max = max === undefined ? 1 : max;\n if (min >= max) {\n throw new RangeError('min should be strictly smaller than max');\n }\n var newMatrix = this.constructor.empty(this.rows, this.columns);\n for (var i = 0; i < this.columns; i++) {\n var scaled = arrayUtils.scale(this.getColumn(i), {\n min: min,\n max: max\n });\n newMatrix.setColumn(i, scaled);\n }\n return newMatrix;\n }\n\n\n /**\n * Returns the Kronecker product (also known as tensor product) between this and other\n * See https://en.wikipedia.org/wiki/Kronecker_product\n * @param {Matrix} other\n * @return {Matrix}\n */\n kroneckerProduct(other) {\n other = this.constructor.checkMatrix(other);\n\n var m = this.rows;\n var n = this.columns;\n var p = other.rows;\n var q = other.columns;\n\n var result = new this.constructor[Symbol.species](m * p, n * q);\n for (var i = 0; i < m; i++) {\n for (var j = 0; j < n; j++) {\n for (var k = 0; k < p; k++) {\n for (var l = 0; l < q; l++) {\n result[p * i + k][q * j + l] = this.get(i, j) * other.get(k, l);\n }\n }\n }\n }\n return result;\n }\n\n /**\n * Transposes the matrix and returns a new one containing the result\n * @return {Matrix}\n */\n transpose() {\n var result = new this.constructor[Symbol.species](this.columns, this.rows);\n for (var i = 0; i < this.rows; i++) {\n for (var j = 0; j < this.columns; j++) {\n result.set(j, i, this.get(i, j));\n }\n }\n return result;\n }\n\n /**\n * Sorts the rows (in place)\n * @param {function} compareFunction - usual Array.prototype.sort comparison function\n * @return {Matrix} this\n */\n sortRows(compareFunction) {\n if (compareFunction === undefined) compareFunction = compareNumbers;\n for (var i = 0; i < this.rows; i++) {\n this.setRow(i, this.getRow(i).sort(compareFunction));\n }\n return this;\n }\n\n /**\n * Sorts the columns (in place)\n * @param {function} compareFunction - usual Array.prototype.sort comparison function\n * @return {Matrix} this\n */\n sortColumns(compareFunction) {\n if (compareFunction === undefined) compareFunction = compareNumbers;\n for (var i = 0; i < this.columns; i++) {\n this.setColumn(i, this.getColumn(i).sort(compareFunction));\n }\n return this;\n }\n\n /**\n * Returns a subset of the matrix\n * @param {number} startRow - First row index\n * @param {number} endRow - Last row index\n * @param {number} startColumn - First column index\n * @param {number} endColumn - Last column index\n * @return {Matrix}\n */\n subMatrix(startRow, endRow, startColumn, endColumn) {\n util.checkRange(this, startRow, endRow, startColumn, endColumn);\n var newMatrix = new this.constructor[Symbol.species](endRow - startRow + 1, endColumn - startColumn + 1);\n for (var i = startRow; i <= endRow; i++) {\n for (var j = startColumn; j <= endColumn; j++) {\n newMatrix[i - startRow][j - startColumn] = this.get(i, j);\n }\n }\n return newMatrix;\n }\n\n /**\n * Returns a subset of the matrix based on an array of row indices\n * @param {Array} indices - Array containing the row indices\n * @param {number} [startColumn = 0] - First column index\n * @param {number} [endColumn = this.columns-1] - Last column index\n * @return {Matrix}\n */\n subMatrixRow(indices, startColumn, endColumn) {\n if (startColumn === undefined) startColumn = 0;\n if (endColumn === undefined) endColumn = this.columns - 1;\n if ((startColumn > endColumn) || (startColumn < 0) || (startColumn >= this.columns) || (endColumn < 0) || (endColumn >= this.columns)) {\n throw new RangeError('Argument out of range');\n }\n\n var newMatrix = new this.constructor[Symbol.species](indices.length, endColumn - startColumn + 1);\n for (var i = 0; i < indices.length; i++) {\n for (var 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 /**\n * Returns a subset of the matrix based on an array of column indices\n * @param {Array} indices - Array containing the column indices\n * @param {number} [startRow = 0] - First row index\n * @param {number} [endRow = this.rows-1] - Last row index\n * @return {Matrix}\n */\n subMatrixColumn(indices, startRow, endRow) {\n if (startRow === undefined) startRow = 0;\n if (endRow === undefined) endRow = this.rows - 1;\n if ((startRow > endRow) || (startRow < 0) || (startRow >= this.rows) || (endRow < 0) || (endRow >= this.rows)) {\n throw new RangeError('Argument out of range');\n }\n\n var newMatrix = new this.constructor[Symbol.species](endRow - startRow + 1, indices.length);\n for (var i = 0; i < indices.length; i++) {\n for (var 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 /**\n * Set a part of the matrix to the given sub-matrix\n * @param {Matrix|Array< Array >} matrix - The source matrix from which to extract values.\n * @param {number} startRow - The index of the first row to set\n * @param {number} startColumn - The index of the first column to set\n * @return {Matrix}\n */\n setSubMatrix(matrix, startRow, startColumn) {\n matrix = this.constructor.checkMatrix(matrix);\n var endRow = startRow + matrix.rows - 1;\n var endColumn = startColumn + matrix.columns - 1;\n util.checkRange(this, startRow, endRow, startColumn, endColumn);\n for (var i = 0; i < matrix.rows; i++) {\n for (var j = 0; j < matrix.columns; j++) {\n this[startRow + i][startColumn + j] = matrix.get(i, j);\n }\n }\n return this;\n }\n\n /**\n * Return a new matrix based on a selection of rows and columns\n * @param {Array} rowIndices - The row indices to select. Order matters and an index can be more than once.\n * @param {Array} columnIndices - The column indices to select. Order matters and an index can be use more than once.\n * @return {Matrix} The new matrix\n */\n selection(rowIndices, columnIndices) {\n var indices = util.checkIndices(this, rowIndices, columnIndices);\n var newMatrix = new this.constructor[Symbol.species](rowIndices.length, columnIndices.length);\n for (var i = 0; i < indices.row.length; i++) {\n var rowIndex = indices.row[i];\n for (var j = 0; j < indices.column.length; j++) {\n var columnIndex = indices.column[j];\n newMatrix[i][j] = this.get(rowIndex, columnIndex);\n }\n }\n return newMatrix;\n }\n\n /**\n * Returns the trace of the matrix (sum of the diagonal elements)\n * @return {number}\n */\n trace() {\n var min = Math.min(this.rows, this.columns);\n var trace = 0;\n for (var i = 0; i < min; i++) {\n trace += this.get(i, i);\n }\n return trace;\n }\n\n /*\n Matrix views\n */\n\n /**\n * Returns a view of the transposition of the matrix\n * @return {MatrixTransposeView}\n */\n transposeView() {\n return new MatrixTransposeView(this);\n }\n\n /**\n * Returns a view of the row vector with the given index\n * @param {number} row - row index of the vector\n * @return {MatrixRowView}\n */\n rowView(row) {\n util.checkRowIndex(this, row);\n return new MatrixRowView(this, row);\n }\n\n /**\n * Returns a view of the column vector with the given index\n * @param {number} column - column index of the vector\n * @return {MatrixColumnView}\n */\n columnView(column) {\n util.checkColumnIndex(this, column);\n return new MatrixColumnView(this, column);\n }\n\n /**\n * Returns a view of the matrix flipped in the row axis\n * @return {MatrixFlipRowView}\n */\n flipRowView() {\n return new MatrixFlipRowView(this);\n }\n\n /**\n * Returns a view of the matrix flipped in the column axis\n * @return {MatrixFlipColumnView}\n */\n flipColumnView() {\n return new MatrixFlipColumnView(this);\n }\n\n /**\n * Returns a view of a submatrix giving the index boundaries\n * @param {number} startRow - first row index of the submatrix\n * @param {number} endRow - last row index of the submatrix\n * @param {number} startColumn - first column index of the submatrix\n * @param {number} endColumn - last column index of the submatrix\n * @return {MatrixSubView}\n */\n subMatrixView(startRow, endRow, startColumn, endColumn) {\n return new MatrixSubView(this, startRow, endRow, startColumn, endColumn);\n }\n\n /**\n * Returns a view of the cross of the row indices and the column indices\n * @example\n * // resulting vector is [[2], [2]]\n * var matrix = new Matrix([[1,2,3], [4,5,6]]).selectionView([0, 0], [1])\n * @param {Array} rowIndices\n * @param {Array} columnIndices\n * @return {MatrixSelectionView}\n */\n selectionView(rowIndices, columnIndices) {\n return new MatrixSelectionView(this, rowIndices, columnIndices);\n }\n\n\n /**\n * Calculates and returns the determinant of a matrix as a Number\n * @example\n * new Matrix([[1,2,3], [4,5,6]]).det()\n * @return {number}\n */\n det() {\n if (this.isSquare()) {\n var a, b, c, d;\n if (this.columns === 2) {\n // 2 x 2 matrix\n a = this.get(0, 0);\n b = this.get(0, 1);\n c = this.get(1, 0);\n d = this.get(1, 1);\n\n return a * d - (b * c);\n } else if (this.columns === 3) {\n // 3 x 3 matrix\n var subMatrix0, subMatrix1, subMatrix2;\n subMatrix0 = this.selectionView([1, 2], [1, 2]);\n subMatrix1 = this.selectionView([1, 2], [0, 2]);\n subMatrix2 = this.selectionView([1, 2], [0, 1]);\n a = this.get(0, 0);\n b = this.get(0, 1);\n c = this.get(0, 2);\n\n return a * subMatrix0.det() - b * subMatrix1.det() + c * subMatrix2.det();\n } else {\n // general purpose determinant using the LU decomposition\n return new LuDecomposition(this).determinant;\n }\n\n } else {\n throw Error('Determinant can only be calculated for a square matrix.');\n }\n }\n\n /**\n * Returns inverse of a matrix if it exists or the pseudoinverse\n * @param {number} threshold - threshold for taking inverse of singular values (default = 1e-15)\n * @return {Matrix} the (pseudo)inverted matrix.\n */\n pseudoInverse(threshold) {\n if (threshold === undefined) threshold = Number.EPSILON;\n var svdSolution = new SvDecomposition(this, {autoTranspose: true});\n\n var U = svdSolution.leftSingularVectors;\n var V = svdSolution.rightSingularVectors;\n var s = svdSolution.diagonal;\n\n for (var 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 // convert list to diagonal\n s = this.constructor[Symbol.species].diag(s);\n return V.mmul(s.mmul(U.transposeView()));\n }\n }\n\n Matrix.prototype.klass = 'Matrix';\n\n /**\n * @private\n * Check that two matrices have the same dimensions\n * @param {Matrix} matrix\n * @param {Matrix} otherMatrix\n */\n function checkDimensions(matrix, otherMatrix) { // eslint-disable-line no-unused-vars\n if (matrix.rows !== otherMatrix.rows ||\n matrix.columns !== otherMatrix.columns) {\n throw new RangeError('Matrices dimensions must be equal');\n }\n }\n\n function compareNumbers(a, b) {\n return a - b;\n }\n\n /*\n Synonyms\n */\n\n Matrix.random = Matrix.rand;\n Matrix.diagonal = Matrix.diag;\n Matrix.prototype.diagonal = Matrix.prototype.diag;\n Matrix.identity = Matrix.eye;\n Matrix.prototype.negate = Matrix.prototype.neg;\n Matrix.prototype.tensorProduct = Matrix.prototype.kroneckerProduct;\n Matrix.prototype.determinant = Matrix.prototype.det;\n\n /*\n Add dynamically instance and static methods for mathematical operations\n */\n\n var inplaceOperator = `\n(function %name%(value) {\n if (typeof value === 'number') return this.%name%S(value);\n return this.%name%M(value);\n})\n`;\n\n var inplaceOperatorScalar = `\n(function %name%S(value) {\n for (var i = 0; i < this.rows; i++) {\n for (var j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) %op% value);\n }\n }\n return this;\n})\n`;\n\n var inplaceOperatorMatrix = `\n(function %name%M(matrix) {\n matrix = this.constructor.checkMatrix(matrix);\n checkDimensions(this, matrix);\n for (var i = 0; i < this.rows; i++) {\n for (var j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) %op% matrix.get(i, j));\n }\n }\n return this;\n})\n`;\n\n var staticOperator = `\n(function %name%(matrix, value) {\n var newMatrix = new this[Symbol.species](matrix);\n return newMatrix.%name%(value);\n})\n`;\n\n var inplaceMethod = `\n(function %name%() {\n for (var i = 0; i < this.rows; i++) {\n for (var j = 0; j < this.columns; j++) {\n this.set(i, j, %method%(this.get(i, j)));\n }\n }\n return this;\n})\n`;\n\n var staticMethod = `\n(function %name%(matrix) {\n var newMatrix = new this[Symbol.species](matrix);\n return newMatrix.%name%();\n})\n`;\n\n var inplaceMethodWithArgs = `\n(function %name%(%args%) {\n for (var i = 0; i < this.rows; i++) {\n for (var j = 0; j < this.columns; j++) {\n this.set(i, j, %method%(this.get(i, j), %args%));\n }\n }\n return this;\n})\n`;\n\n var staticMethodWithArgs = `\n(function %name%(matrix, %args%) {\n var newMatrix = new this[Symbol.species](matrix);\n return newMatrix.%name%(%args%);\n})\n`;\n\n\n var inplaceMethodWithOneArgScalar = `\n(function %name%S(value) {\n for (var i = 0; i < this.rows; i++) {\n for (var j = 0; j < this.columns; j++) {\n this.set(i, j, %method%(this.get(i, j), value));\n }\n }\n return this;\n})\n`;\n var inplaceMethodWithOneArgMatrix = `\n(function %name%M(matrix) {\n matrix = this.constructor.checkMatrix(matrix);\n checkDimensions(this, matrix);\n for (var i = 0; i < this.rows; i++) {\n for (var j = 0; j < this.columns; j++) {\n this.set(i, j, %method%(this.get(i, j), matrix.get(i, j)));\n }\n }\n return this;\n})\n`;\n\n var inplaceMethodWithOneArg = `\n(function %name%(value) {\n if (typeof value === 'number') return this.%name%S(value);\n return this.%name%M(value);\n})\n`;\n\n var staticMethodWithOneArg = staticMethodWithArgs;\n\n var operators = [\n // Arithmetic operators\n ['+', 'add'],\n ['-', 'sub', 'subtract'],\n ['*', 'mul', 'multiply'],\n ['/', 'div', 'divide'],\n ['%', 'mod', 'modulus'],\n // Bitwise operators\n ['&', 'and'],\n ['|', 'or'],\n ['^', 'xor'],\n ['<<', 'leftShift'],\n ['>>', 'signPropagatingRightShift'],\n ['>>>', 'rightShift', 'zeroFillRightShift']\n ];\n\n var i;\n\n for (var operator of operators) {\n var inplaceOp = eval(fillTemplateFunction(inplaceOperator, {name: operator[1], op: operator[0]}));\n var inplaceOpS = eval(fillTemplateFunction(inplaceOperatorScalar, {name: operator[1] + 'S', op: operator[0]}));\n var inplaceOpM = eval(fillTemplateFunction(inplaceOperatorMatrix, {name: operator[1] + 'M', op: operator[0]}));\n var staticOp = eval(fillTemplateFunction(staticOperator, {name: operator[1]}));\n for (i = 1; i < operator.length; i++) {\n Matrix.prototype[operator[i]] = inplaceOp;\n Matrix.prototype[operator[i] + 'S'] = inplaceOpS;\n Matrix.prototype[operator[i] + 'M'] = inplaceOpM;\n Matrix[operator[i]] = staticOp;\n }\n }\n\n var methods = [\n ['~', 'not']\n ];\n\n [\n 'abs', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atanh', 'cbrt', 'ceil',\n 'clz32', 'cos', 'cosh', 'exp', 'expm1', 'floor', 'fround', 'log', 'log1p',\n 'log10', 'log2', 'round', 'sign', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc'\n ].forEach(function (mathMethod) {\n methods.push(['Math.' + mathMethod, mathMethod]);\n });\n\n for (var method of methods) {\n var inplaceMeth = eval(fillTemplateFunction(inplaceMethod, {name: method[1], method: method[0]}));\n var staticMeth = eval(fillTemplateFunction(staticMethod, {name: method[1]}));\n for (i = 1; i < method.length; i++) {\n Matrix.prototype[method[i]] = inplaceMeth;\n Matrix[method[i]] = staticMeth;\n }\n }\n\n var methodsWithArgs = [\n ['Math.pow', 1, 'pow']\n ];\n\n for (var methodWithArg of methodsWithArgs) {\n var args = 'arg0';\n for (i = 1; i < methodWithArg[1]; i++) {\n args += `, arg${i}`;\n }\n if (methodWithArg[1] !== 1) {\n var inplaceMethWithArgs = eval(fillTemplateFunction(inplaceMethodWithArgs, {\n name: methodWithArg[2],\n method: methodWithArg[0],\n args: args\n }));\n var staticMethWithArgs = eval(fillTemplateFunction(staticMethodWithArgs, {name: methodWithArg[2], args: args}));\n for (i = 2; i < methodWithArg.length; i++) {\n Matrix.prototype[methodWithArg[i]] = inplaceMethWithArgs;\n Matrix[methodWithArg[i]] = staticMethWithArgs;\n }\n } else {\n var tmplVar = {\n name: methodWithArg[2],\n args: args,\n method: methodWithArg[0]\n };\n var inplaceMethod2 = eval(fillTemplateFunction(inplaceMethodWithOneArg, tmplVar));\n var inplaceMethodS = eval(fillTemplateFunction(inplaceMethodWithOneArgScalar, tmplVar));\n var inplaceMethodM = eval(fillTemplateFunction(inplaceMethodWithOneArgMatrix, tmplVar));\n var staticMethod2 = eval(fillTemplateFunction(staticMethodWithOneArg, tmplVar));\n for (i = 2; i < methodWithArg.length; i++) {\n Matrix.prototype[methodWithArg[i]] = inplaceMethod2;\n Matrix.prototype[methodWithArg[i] + 'M'] = inplaceMethodM;\n Matrix.prototype[methodWithArg[i] + 'S'] = inplaceMethodS;\n Matrix[methodWithArg[i]] = staticMethod2;\n }\n }\n }\n\n function fillTemplateFunction(template, values) {\n for (var value in values) {\n template = template.replace(new RegExp('%' + value + '%', 'g'), values[value]);\n }\n return template;\n }\n\n return Matrix;\n}\n","'use strict';\n\nvar Matrix = require('../matrix');\n\n// https://github.com/lutzroeder/Mapack/blob/master/Source/LuDecomposition.cs\nfunction LuDecomposition(matrix) {\n if (!(this instanceof LuDecomposition)) {\n return new LuDecomposition(matrix);\n }\n\n matrix = Matrix.Matrix.checkMatrix(matrix);\n\n var lu = matrix.clone(),\n rows = lu.rows,\n columns = lu.columns,\n pivotVector = new Array(rows),\n pivotSign = 1,\n i, j, k, p, s, t, v,\n LUrowi, LUcolj, kmax;\n\n for (i = 0; i < rows; i++) {\n pivotVector[i] = i;\n }\n\n LUcolj = new Array(rows);\n\n for (j = 0; j < columns; j++) {\n\n for (i = 0; i < rows; i++) {\n LUcolj[i] = lu[i][j];\n }\n\n for (i = 0; i < rows; i++) {\n LUrowi = lu[i];\n kmax = Math.min(i, j);\n s = 0;\n for (k = 0; k < kmax; k++) {\n s += LUrowi[k] * LUcolj[k];\n }\n LUrowi[j] = LUcolj[i] -= s;\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[p][k];\n lu[p][k] = lu[j][k];\n lu[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[j][j] !== 0) {\n for (i = j + 1; i < rows; i++) {\n lu[i][j] /= lu[j][j];\n }\n }\n }\n\n this.LU = lu;\n this.pivotVector = pivotVector;\n this.pivotSign = pivotSign;\n}\n\nLuDecomposition.prototype = {\n isSingular: function () {\n var data = this.LU,\n col = data.columns;\n for (var j = 0; j < col; j++) {\n if (data[j][j] === 0) {\n return true;\n }\n }\n return false;\n },\n get determinant() {\n var data = this.LU;\n if (!data.isSquare()) {\n throw new Error('Matrix must be square');\n }\n var determinant = this.pivotSign, col = data.columns;\n for (var j = 0; j < col; j++) {\n determinant *= data[j][j];\n }\n return determinant;\n },\n get lowerTriangularMatrix() {\n var data = this.LU,\n rows = data.rows,\n columns = data.columns,\n X = new Matrix.Matrix(rows, columns);\n for (var i = 0; i < rows; i++) {\n for (var j = 0; j < columns; j++) {\n if (i > j) {\n X[i][j] = data[i][j];\n } else if (i === j) {\n X[i][j] = 1;\n } else {\n X[i][j] = 0;\n }\n }\n }\n return X;\n },\n get upperTriangularMatrix() {\n var data = this.LU,\n rows = data.rows,\n columns = data.columns,\n X = new Matrix.Matrix(rows, columns);\n for (var i = 0; i < rows; i++) {\n for (var j = 0; j < columns; j++) {\n if (i <= j) {\n X[i][j] = data[i][j];\n } else {\n X[i][j] = 0;\n }\n }\n }\n return X;\n },\n get pivotPermutationVector() {\n return this.pivotVector.slice();\n },\n solve: function (value) {\n value = Matrix.Matrix.checkMatrix(value);\n\n var lu = this.LU,\n 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 var count = value.columns;\n var X = value.subMatrixRow(this.pivotVector, 0, count - 1);\n var columns = lu.columns;\n var 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[i][j] -= X[k][j] * lu[i][k];\n }\n }\n }\n for (k = columns - 1; k >= 0; k--) {\n for (j = 0; j < count; j++) {\n X[k][j] /= lu[k][k];\n }\n for (i = 0; i < k; i++) {\n for (j = 0; j < count; j++) {\n X[i][j] -= X[k][j] * lu[i][k];\n }\n }\n }\n return X;\n }\n};\n\nmodule.exports = LuDecomposition;\n","'use strict';\n\nvar Matrix = require('../matrix');\nvar util = require('./util');\nvar hypotenuse = util.hypotenuse;\nvar getFilled2DArray = util.getFilled2DArray;\n\n// https://github.com/lutzroeder/Mapack/blob/master/Source/SingularValueDecomposition.cs\nfunction SingularValueDecomposition(value, options) {\n if (!(this instanceof SingularValueDecomposition)) {\n return new SingularValueDecomposition(value, options);\n }\n value = Matrix.Matrix.checkMatrix(value);\n\n options = options || {};\n\n var m = value.rows,\n n = value.columns,\n nu = Math.min(m, n);\n\n var wantu = true, wantv = true;\n if (options.computeLeftSingularVectors === false) wantu = false;\n if (options.computeRightSingularVectors === false) wantv = false;\n var autoTranspose = options.autoTranspose === true;\n\n var swapped = false;\n var a;\n if (m < n) {\n if (!autoTranspose) {\n a = value.clone();\n // eslint-disable-next-line no-console\n console.warn('Computing SVD on a matrix with more columns than rows. Consider enabling autoTranspose');\n } else {\n a = value.transpose();\n m = a.rows;\n n = a.columns;\n swapped = true;\n var aux = wantu;\n wantu = wantv;\n wantv = aux;\n }\n } else {\n a = value.clone();\n }\n\n var s = new Array(Math.min(m + 1, n)),\n U = getFilled2DArray(m, nu, 0),\n V = getFilled2DArray(n, n, 0),\n e = new Array(n),\n work = new Array(m);\n\n var nct = Math.min(m - 1, n);\n var nrt = Math.max(0, Math.min(n - 2, m));\n\n var i, j, k, p, t, ks, f, cs, sn, max, kase,\n scale, sp, spm1, epm1, sk, ek, b, c, shift, g;\n\n for (k = 0, max = Math.max(nct, nrt); k < max; k++) {\n if (k < nct) {\n s[k] = 0;\n for (i = k; i < m; i++) {\n s[k] = hypotenuse(s[k], a[i][k]);\n }\n if (s[k] !== 0) {\n if (a[k][k] < 0) {\n s[k] = -s[k];\n }\n for (i = k; i < m; i++) {\n a[i][k] /= s[k];\n }\n a[k][k] += 1;\n }\n s[k] = -s[k];\n }\n\n for (j = k + 1; j < n; j++) {\n if ((k < nct) && (s[k] !== 0)) {\n t = 0;\n for (i = k; i < m; i++) {\n t += a[i][k] * a[i][j];\n }\n t = -t / a[k][k];\n for (i = k; i < m; i++) {\n a[i][j] += t * a[i][k];\n }\n }\n e[j] = a[k][j];\n }\n\n if (wantu && (k < nct)) {\n for (i = k; i < m; i++) {\n U[i][k] = a[i][k];\n }\n }\n\n if (k < nrt) {\n e[k] = 0;\n for (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 (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 (i = k + 1; i < m; i++) {\n work[i] = 0;\n }\n for (j = k + 1; j < n; j++) {\n for (i = k + 1; i < m; i++) {\n work[i] += e[j] * a[i][j];\n }\n }\n for (j = k + 1; j < n; j++) {\n t = -e[j] / e[k + 1];\n for (i = k + 1; i < m; i++) {\n a[i][j] += t * work[i];\n }\n }\n }\n if (wantv) {\n for (i = k + 1; i < n; i++) {\n V[i][k] = e[i];\n }\n }\n }\n }\n\n p = Math.min(n, m + 1);\n if (nct < n) {\n s[nct] = a[nct][nct];\n }\n if (m < p) {\n s[p - 1] = 0;\n }\n if (nrt + 1 < p) {\n e[nrt] = a[nrt][p - 1];\n }\n e[p - 1] = 0;\n\n if (wantu) {\n for (j = nct; j < nu; j++) {\n for (i = 0; i < m; i++) {\n U[i][j] = 0;\n }\n U[j][j] = 1;\n }\n for (k = nct - 1; k >= 0; k--) {\n if (s[k] !== 0) {\n for (j = k + 1; j < nu; j++) {\n t = 0;\n for (i = k; i < m; i++) {\n t += U[i][k] * U[i][j];\n }\n t = -t / U[k][k];\n for (i = k; i < m; i++) {\n U[i][j] += t * U[i][k];\n }\n }\n for (i = k; i < m; i++) {\n U[i][k] = -U[i][k];\n }\n U[k][k] = 1 + U[k][k];\n for (i = 0; i < k - 1; i++) {\n U[i][k] = 0;\n }\n } else {\n for (i = 0; i < m; i++) {\n U[i][k] = 0;\n }\n U[k][k] = 1;\n }\n }\n }\n\n if (wantv) {\n for (k = n - 1; k >= 0; k--) {\n if ((k < nrt) && (e[k] !== 0)) {\n for (j = k + 1; j < n; j++) {\n t = 0;\n for (i = k + 1; i < n; i++) {\n t += V[i][k] * V[i][j];\n }\n t = -t / V[k + 1][k];\n for (i = k + 1; i < n; i++) {\n V[i][j] += t * V[i][k];\n }\n }\n }\n for (i = 0; i < n; i++) {\n V[i][k] = 0;\n }\n V[k][k] = 1;\n }\n }\n\n var pp = p - 1,\n iter = 0,\n eps = Math.pow(2, -52);\n while (p > 0) {\n for (k = p - 2; k >= -1; k--) {\n if (k === -1) {\n break;\n }\n if (Math.abs(e[k]) <= eps * (Math.abs(s[k]) + Math.abs(s[k + 1]))) {\n e[k] = 0;\n break;\n }\n }\n if (k === p - 2) {\n kase = 4;\n } else {\n for (ks = p - 1; ks >= k; ks--) {\n if (ks === k) {\n break;\n }\n t = (ks !== p ? Math.abs(e[ks]) : 0) + (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 f = e[p - 2];\n e[p - 2] = 0;\n for (j = p - 2; j >= k; j--) {\n t = hypotenuse(s[j], f);\n cs = s[j] / t;\n 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 (i = 0; i < n; i++) {\n t = cs * V[i][j] + sn * V[i][p - 1];\n V[i][p - 1] = -sn * V[i][j] + cs * V[i][p - 1];\n V[i][j] = t;\n }\n }\n }\n break;\n }\n case 2 : {\n f = e[k - 1];\n e[k - 1] = 0;\n for (j = k; j < p; j++) {\n t = hypotenuse(s[j], f);\n cs = s[j] / t;\n sn = f / t;\n s[j] = t;\n f = -sn * e[j];\n e[j] = cs * e[j];\n if (wantu) {\n for (i = 0; i < m; i++) {\n t = cs * U[i][j] + sn * U[i][k - 1];\n U[i][k - 1] = -sn * U[i][j] + cs * U[i][k - 1];\n U[i][j] = t;\n }\n }\n }\n break;\n }\n case 3 : {\n scale = Math.max(Math.max(Math.max(Math.max(Math.abs(s[p - 1]), Math.abs(s[p - 2])), Math.abs(e[p - 2])), Math.abs(s[k])), Math.abs(e[k]));\n sp = s[p - 1] / scale;\n spm1 = s[p - 2] / scale;\n epm1 = e[p - 2] / scale;\n sk = s[k] / scale;\n ek = e[k] / scale;\n b = ((spm1 + sp) * (spm1 - sp) + epm1 * epm1) / 2;\n c = (sp * epm1) * (sp * epm1);\n shift = 0;\n if ((b !== 0) || (c !== 0)) {\n shift = Math.sqrt(b * b + c);\n if (b < 0) {\n shift = -shift;\n }\n shift = c / (b + shift);\n }\n f = (sk + sp) * (sk - sp) + shift;\n g = sk * ek;\n for (j = k; j < p - 1; j++) {\n t = hypotenuse(f, g);\n cs = f / t;\n 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 (i = 0; i < n; i++) {\n t = cs * V[i][j] + sn * V[i][j + 1];\n V[i][j + 1] = -sn * V[i][j] + cs * V[i][j + 1];\n V[i][j] = t;\n }\n }\n t = hypotenuse(f, g);\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 (i = 0; i < m; i++) {\n t = cs * U[i][j] + sn * U[i][j + 1];\n U[i][j + 1] = -sn * U[i][j] + cs * U[i][j + 1];\n U[i][j] = t;\n }\n }\n }\n e[p - 2] = f;\n iter = iter + 1;\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 (i = 0; i <= pp; i++) {\n V[i][k] = -V[i][k];\n }\n }\n }\n while (k < pp) {\n if (s[k] >= s[k + 1]) {\n break;\n }\n t = s[k];\n s[k] = s[k + 1];\n s[k + 1] = t;\n if (wantv && (k < n - 1)) {\n for (i = 0; i < n; i++) {\n t = V[i][k + 1];\n V[i][k + 1] = V[i][k];\n V[i][k] = t;\n }\n }\n if (wantu && (k < m - 1)) {\n for (i = 0; i < m; i++) {\n t = U[i][k + 1];\n U[i][k + 1] = U[i][k];\n U[i][k] = t;\n }\n }\n k++;\n }\n iter = 0;\n p--;\n break;\n }\n // no default\n }\n }\n\n if (swapped) {\n var 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\nSingularValueDecomposition.prototype = {\n get condition() {\n return this.s[0] / this.s[Math.min(this.m, this.n) - 1];\n },\n get norm2() {\n return this.s[0];\n },\n get rank() {\n var eps = Math.pow(2, -52),\n tol = Math.max(this.m, this.n) * this.s[0] * eps,\n r = 0,\n s = this.s;\n for (var i = 0, ii = s.length; i < ii; i++) {\n if (s[i] > tol) {\n r++;\n }\n }\n return r;\n },\n get diagonal() {\n return this.s;\n },\n // https://github.com/accord-net/framework/blob/development/Sources/Accord.Math/Decompositions/SingularValueDecomposition.cs\n get threshold() {\n return (Math.pow(2, -52) / 2) * Math.max(this.m, this.n) * this.s[0];\n },\n get leftSingularVectors() {\n if (!Matrix.Matrix.isMatrix(this.U)) {\n this.U = new Matrix.Matrix(this.U);\n }\n return this.U;\n },\n get rightSingularVectors() {\n if (!Matrix.Matrix.isMatrix(this.V)) {\n this.V = new Matrix.Matrix(this.V);\n }\n return this.V;\n },\n get diagonalMatrix() {\n return Matrix.Matrix.diag(this.s);\n },\n solve: function (value) {\n\n var Y = value,\n e = this.threshold,\n scols = this.s.length,\n Ls = Matrix.Matrix.zeros(scols, scols),\n i;\n\n for (i = 0; i < scols; i++) {\n if (Math.abs(this.s[i]) <= e) {\n Ls[i][i] = 0;\n } else {\n Ls[i][i] = 1 / this.s[i];\n }\n }\n\n var U = this.U;\n var V = this.rightSingularVectors;\n\n var VL = V.mmul(Ls),\n vrows = V.rows,\n urows = U.length,\n VLU = Matrix.Matrix.zeros(vrows, urows),\n j, k, sum;\n\n for (i = 0; i < vrows; i++) {\n for (j = 0; j < urows; j++) {\n sum = 0;\n for (k = 0; k < scols; k++) {\n sum += VL[i][k] * U[j][k];\n }\n VLU[i][j] = sum;\n }\n }\n\n return VLU.mmul(Y);\n },\n solveForDiagonal: function (value) {\n return this.solve(Matrix.Matrix.diag(value));\n },\n inverse: function () {\n var V = this.V;\n var e = this.threshold,\n vrows = V.length,\n vcols = V[0].length,\n X = new Matrix.Matrix(vrows, this.s.length),\n i, j;\n\n for (i = 0; i < vrows; i++) {\n for (j = 0; j < vcols; j++) {\n if (Math.abs(this.s[j]) > e) {\n X[i][j] = V[i][j] / this.s[j];\n } else {\n X[i][j] = 0;\n }\n }\n }\n\n var U = this.U;\n\n var urows = U.length,\n ucols = U[0].length,\n Y = new Matrix.Matrix(vrows, urows),\n k, sum;\n\n for (i = 0; i < vrows; i++) {\n for (j = 0; j < urows; j++) {\n sum = 0;\n for (k = 0; k < ucols; k++) {\n sum += X[i][k] * U[j][k];\n }\n Y[i][j] = sum;\n }\n }\n\n return Y;\n }\n};\n\nmodule.exports = SingularValueDecomposition;\n","/**\n * Created by acastillo on 8/24/15.\n */\n/**\n * Non in-place function definitions, compatible with mathjs code *\n */\n\n'use strict';\n\nvar Matrix = require('ml-matrix');\n\nfunction matrix(A,B){\n return new Matrix(A,B);\n}\n\nfunction ones(rows, cols){\n return Matrix.ones(rows,cols);\n}\n\nfunction eye(rows, cols){\n return Matrix.eye(rows, cols);\n}\n\nfunction zeros(rows, cols){\n return Matrix.zeros(rows, cols);\n}\n\nfunction random(rows, cols){\n return Matrix.rand(rows,cols);\n}\n\nfunction transpose(A){\n if(typeof A == 'number')\n return A;\n var result = A.clone();\n return result.transpose();\n}\n\nfunction add(A, B){\n if(typeof A == 'number'&&typeof B === 'number')\n return A+B;\n if(typeof A == 'number')\n return this.add(B,A);\n\n var result = A.clone();\n return result.add(B);\n\n}\n\nfunction subtract(A, B){\n if(typeof A == 'number'&&typeof B === 'number')\n return A-B;\n if(typeof A == 'number')\n return this.subtract(B,A);\n var result = A.clone();\n return result.sub(B);\n}\n\nfunction multiply(A, B){\n if(typeof A == 'number'&&typeof B === 'number')\n return A*B;\n if(typeof A == 'number')\n return this.multiply(B,A);\n\n var result = A.clone();\n\n if(typeof B === 'number')\n result.mul(B);\n else\n result = result.mmul(B);\n\n if(result.rows==1&&result.columns==1)\n return result[0][0];\n else\n return result;\n\n}\n\nfunction dotMultiply(A, B){\n var result = A.clone();\n return result.mul(B);\n}\n\nfunction dotDivide(A, B){\n var result = A.clone();\n return result.div(B);\n}\n\nfunction diag(A){\n var diag = null;\n var rows = A.rows, cols = A.columns, j, r;\n //It is an array\n if(typeof cols === \"undefined\" && (typeof A)=='object'){\n if(A[0]&&A[0].length){\n rows = A.length;\n cols = A[0].length;\n r = Math.min(rows,cols);\n diag = Matrix.zeros(cols, cols);\n for (j = 0; j < cols; j++) {\n diag[j][j]=A[j][j];\n }\n }\n else{\n cols = A.length;\n diag = Matrix.zeros(cols, cols);\n for (j = 0; j < cols; j++) {\n diag[j][j]=A[j];\n }\n }\n\n }\n if(rows == 1){\n diag = Matrix.zeros(cols, cols);\n for (j = 0; j < cols; j++) {\n diag[j][j]=A[0][j];\n }\n }\n else{\n if(rows>0 && cols > 0){\n r = Math.min(rows,cols);\n diag = new Array(r);\n for (j = 0; j < r; j++) {\n diag[j] = A[j][j];\n }\n }\n }\n return diag;\n}\n\nfunction min(A, B){\n if(typeof A==='number' && typeof B ==='number')\n return Math.min(A,B);\n var ii = A.rows, jj = A.columns;\n var result = new Matrix(ii,jj);\n for (var i = 0; i < ii; i++) {\n for (var j = 0; j < jj; j++) {\n if (A[i][j] < B[i][j]) {\n result[i][j] = A[i][j];\n }\n else{\n result[i][j] = B[i][j];\n }\n }\n }\n return result;\n}\n\nfunction max(A, B){\n if(typeof A==='number' && typeof B ==='number')\n return Math.max(A,B);\n var ii = A.rows, jj = A.columns;\n var result = new Matrix(ii,jj);\n for (var i = 0; i < ii; i++) {\n for (var j = 0; j < jj; j++) {\n if (A[i][j] > B[i][j]) {\n result[i][j] = A[i][j];\n }\n else{\n result[i][j] = B[i][j];\n }\n }\n }\n return result;\n}\n\nfunction sqrt(A){\n if(typeof A==='number' )\n return Math.sqrt(A);\n var ii = A.rows, jj = A.columns;\n var result = new Matrix(ii,jj);\n for (var i = 0; i < ii; i++) {\n for (var j = 0; j < jj; j++) {\n result[i][j] = Math.sqrt(A[i][j]);\n\n }\n }\n return result;\n}\n\nfunction abs(A){\n if(typeof A==='number' )\n return Math.abs(A);\n var ii = A.rows, jj = A.columns;\n var result = new Matrix(ii,jj);\n for (var i = 0; i < ii; i++) {\n for (var j = 0; j < jj; j++) {\n result[i][j] = Math.abs(A[i][j]);\n\n }\n }\n return result;\n}\n\nfunction exp(A){\n if(typeof A==='number' )\n return Math.sqrt(A);\n var ii = A.rows, jj = A.columns;\n var result = new Matrix(ii,jj);\n for (var i = 0; i < ii; i++) {\n for (var j = 0; j < jj; j++) {\n result[i][j] = Math.exp(A[i][j]);\n }\n }\n return result;\n}\n\nfunction dotPow(A, b){\n if(typeof A==='number' )\n return Math.pow(A,b);\n //console.log(A);\n var ii = A.rows, jj = A.columns;\n var result = new Matrix(ii,jj);\n for (var i = 0; i < ii; i++) {\n for (var j = 0; j < jj; j++) {\n result[i][j] = Math.pow(A[i][j],b);\n }\n }\n return result;\n}\n\nfunction solve(A, B){\n return A.solve(B);\n}\n\nfunction inv(A){\n if(typeof A ===\"number\")\n return 1/A;\n return A.inverse();\n}\n\nmodule.exports = {\n transpose:transpose,\n add:add,\n subtract:subtract,\n multiply:multiply,\n dotMultiply:dotMultiply,\n dotDivide:dotDivide,\n diag:diag,\n min:min,\n max:max,\n solve:solve,\n inv:inv,\n sqrt:sqrt,\n exp:exp,\n dotPow:dotPow,\n abs:abs,\n matrix:matrix,\n ones:ones,\n zeros:zeros,\n random:random,\n eye:eye\n};\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","'use strict';\n\n// Note: adler32 takes 12% for level 0 and 2% for level 6.\n// It isn't worth it to make additional optimizations as in original.\n// Small size is preferable.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction adler32(adler, buf, len, pos) {\n var s1 = (adler & 0xffff) |0,\n s2 = ((adler >>> 16) & 0xffff) |0,\n n = 0;\n\n while (len !== 0) {\n // Set limit ~ twice less than 5552, to keep\n // s2 in 31-bits, because we force signed ints.\n // in other case %= will fail.\n n = len > 2000 ? 2000 : len;\n len -= n;\n\n do {\n s1 = (s1 + buf[pos++]) |0;\n s2 = (s2 + s1) |0;\n } while (--n);\n\n s1 %= 65521;\n s2 %= 65521;\n }\n\n return (s1 | (s2 << 16)) |0;\n}\n\n\nmodule.exports = adler32;\n","'use strict';\n\n// Note: we can't get significant speed boost here.\n// So write code to minimize size - no pregenerated tables\n// and array tools dependencies.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// Use ordinary array, since untyped makes no boost here\nfunction makeTable() {\n var c, table = [];\n\n for (var n = 0; n < 256; n++) {\n c = n;\n for (var k = 0; k < 8; k++) {\n c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));\n }\n table[n] = c;\n }\n\n return table;\n}\n\n// Create table on load. Just 255 signed longs. Not a problem.\nvar crcTable = makeTable();\n\n\nfunction crc32(crc, buf, len, pos) {\n var t = crcTable,\n end = pos + len;\n\n crc ^= -1;\n\n for (var i = pos; i < end; i++) {\n crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];\n }\n\n return (crc ^ (-1)); // >>> 0;\n}\n\n\nmodule.exports = crc32;\n","// String encode/decode helpers\n'use strict';\n\n\nvar utils = require('./common');\n\n\n// Quick check if we can use fast array to bin string conversion\n//\n// - apply(Array) can fail on Android 2.2\n// - apply(Uint8Array) can fail on iOS 5.1 Safari\n//\nvar STR_APPLY_OK = true;\nvar STR_APPLY_UIA_OK = true;\n\ntry { String.fromCharCode.apply(null, [ 0 ]); } catch (__) { STR_APPLY_OK = false; }\ntry { String.fromCharCode.apply(null, new Uint8Array(1)); } catch (__) { STR_APPLY_UIA_OK = false; }\n\n\n// Table with utf8 lengths (calculated by first byte of sequence)\n// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,\n// because max possible codepoint is 0x10ffff\nvar _utf8len = new utils.Buf8(256);\nfor (var q = 0; q < 256; q++) {\n _utf8len[q] = (q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1);\n}\n_utf8len[254] = _utf8len[254] = 1; // Invalid sequence start\n\n\n// convert string to array (typed, when possible)\nexports.string2buf = function (str) {\n var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;\n\n // count binary size\n for (m_pos = 0; m_pos < str_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n c2 = str.charCodeAt(m_pos + 1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;\n }\n\n // allocate buffer\n buf = new utils.Buf8(buf_len);\n\n // convert\n for (i = 0, m_pos = 0; i < buf_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n c2 = str.charCodeAt(m_pos + 1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n if (c < 0x80) {\n /* one byte */\n buf[i++] = c;\n } else if (c < 0x800) {\n /* two bytes */\n buf[i++] = 0xC0 | (c >>> 6);\n buf[i++] = 0x80 | (c & 0x3f);\n } else if (c < 0x10000) {\n /* three bytes */\n buf[i++] = 0xE0 | (c >>> 12);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n } else {\n /* four bytes */\n buf[i++] = 0xf0 | (c >>> 18);\n buf[i++] = 0x80 | (c >>> 12 & 0x3f);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n }\n }\n\n return buf;\n};\n\n// Helper (used in 2 places)\nfunction buf2binstring(buf, len) {\n // On Chrome, the arguments in a function call that are allowed is `65534`.\n // If the length of the buffer is smaller than that, we can use this optimization,\n // otherwise we will take a slower path.\n if (len < 65534) {\n if ((buf.subarray && STR_APPLY_UIA_OK) || (!buf.subarray && STR_APPLY_OK)) {\n return String.fromCharCode.apply(null, utils.shrinkBuf(buf, len));\n }\n }\n\n var result = '';\n for (var i = 0; i < len; i++) {\n result += String.fromCharCode(buf[i]);\n }\n return result;\n}\n\n\n// Convert byte array to binary string\nexports.buf2binstring = function (buf) {\n return buf2binstring(buf, buf.length);\n};\n\n\n// Convert binary string (typed, when possible)\nexports.binstring2buf = function (str) {\n var buf = new utils.Buf8(str.length);\n for (var i = 0, len = buf.length; i < len; i++) {\n buf[i] = str.charCodeAt(i);\n }\n return buf;\n};\n\n\n// convert array to string\nexports.buf2string = function (buf, max) {\n var i, out, c, c_len;\n var len = max || buf.length;\n\n // Reserve max possible length (2 words per char)\n // NB: by unknown reasons, Array is significantly faster for\n // String.fromCharCode.apply than Uint16Array.\n var utf16buf = new Array(len * 2);\n\n for (out = 0, i = 0; i < len;) {\n c = buf[i++];\n // quick process ascii\n if (c < 0x80) { utf16buf[out++] = c; continue; }\n\n c_len = _utf8len[c];\n // skip 5 & 6 byte codes\n if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len - 1; continue; }\n\n // apply mask on first byte\n c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;\n // join the rest\n while (c_len > 1 && i < len) {\n c = (c << 6) | (buf[i++] & 0x3f);\n c_len--;\n }\n\n // terminated by end of string?\n if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }\n\n if (c < 0x10000) {\n utf16buf[out++] = c;\n } else {\n c -= 0x10000;\n utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);\n utf16buf[out++] = 0xdc00 | (c & 0x3ff);\n }\n }\n\n return buf2binstring(utf16buf, out);\n};\n\n\n// Calculate max possible position in utf8 buffer,\n// that will not break sequence. If that's not possible\n// - (very small limits) return max size as is.\n//\n// buf[] - utf8 bytes array\n// max - length limit (mandatory);\nexports.utf8border = function (buf, max) {\n var pos;\n\n max = max || buf.length;\n if (max > buf.length) { max = buf.length; }\n\n // go back from last position, until start of sequence found\n pos = max - 1;\n while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }\n\n // Very small and broken sequence,\n // return max, because we should return something anyway.\n if (pos < 0) { return max; }\n\n // If we came to start of buffer - that means buffer is too small,\n // return max too.\n if (pos === 0) { return max; }\n\n return (pos + _utf8len[buf[pos]] > max) ? pos : max;\n};\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction ZStream() {\n /* next input byte */\n this.input = null; // JS specific, because we have no pointers\n this.next_in = 0;\n /* number of bytes available at input */\n this.avail_in = 0;\n /* total number of input bytes read so far */\n this.total_in = 0;\n /* next output byte should be put there */\n this.output = null; // JS specific, because we have no pointers\n this.next_out = 0;\n /* remaining free space at output */\n this.avail_out = 0;\n /* total number of bytes output so far */\n this.total_out = 0;\n /* last error message, NULL if no error */\n this.msg = ''/*Z_NULL*/;\n /* not visible by applications */\n this.state = null;\n /* best guess about the data type: binary or text */\n this.data_type = 2/*Z_UNKNOWN*/;\n /* adler32 value of the uncompressed data */\n this.adler = 0;\n}\n\nmodule.exports = ZStream;\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nmodule.exports = {\n\n /* Allowed flush values; see deflate() and inflate() below for details */\n Z_NO_FLUSH: 0,\n Z_PARTIAL_FLUSH: 1,\n Z_SYNC_FLUSH: 2,\n Z_FULL_FLUSH: 3,\n Z_FINISH: 4,\n Z_BLOCK: 5,\n Z_TREES: 6,\n\n /* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\n Z_OK: 0,\n Z_STREAM_END: 1,\n Z_NEED_DICT: 2,\n Z_ERRNO: -1,\n Z_STREAM_ERROR: -2,\n Z_DATA_ERROR: -3,\n //Z_MEM_ERROR: -4,\n Z_BUF_ERROR: -5,\n //Z_VERSION_ERROR: -6,\n\n /* compression levels */\n Z_NO_COMPRESSION: 0,\n Z_BEST_SPEED: 1,\n Z_BEST_COMPRESSION: 9,\n Z_DEFAULT_COMPRESSION: -1,\n\n\n Z_FILTERED: 1,\n Z_HUFFMAN_ONLY: 2,\n Z_RLE: 3,\n Z_FIXED: 4,\n Z_DEFAULT_STRATEGY: 0,\n\n /* Possible values of the data_type field (though see inflate()) */\n Z_BINARY: 0,\n Z_TEXT: 1,\n //Z_ASCII: 1, // = Z_TEXT (deprecated)\n Z_UNKNOWN: 2,\n\n /* The deflate compression method */\n Z_DEFLATED: 8\n //Z_NULL: null // Use -1 or null inline, depending on var type\n};\n","'use strict';\nexports.LOCAL_FILE_HEADER = \"PK\\x03\\x04\";\nexports.CENTRAL_FILE_HEADER = \"PK\\x01\\x02\";\nexports.CENTRAL_DIRECTORY_END = \"PK\\x05\\x06\";\nexports.ZIP64_CENTRAL_DIRECTORY_LOCATOR = \"PK\\x06\\x07\";\nexports.ZIP64_CENTRAL_DIRECTORY_END = \"PK\\x06\\x06\";\nexports.DATA_DESCRIPTOR = \"PK\\x07\\x08\";\n","'use strict';\nexports.base64 = false;\nexports.binary = false;\nexports.dir = false;\nexports.createFolders = false;\nexports.date = null;\nexports.compression = null;\nexports.compressionOptions = null;\nexports.comment = null;\nexports.unixPermissions = null;\nexports.dosPermissions = null;\n","'use strict';\nfunction CompressedObject() {\n this.compressedSize = 0;\n this.uncompressedSize = 0;\n this.crc32 = 0;\n this.compressionMethod = null;\n this.compressedContent = null;\n}\n\nCompressedObject.prototype = {\n /**\n * Return the decompressed content in an unspecified format.\n * The format will depend on the decompressor.\n * @return {Object} the decompressed content.\n */\n getContent: function() {\n return null; // see implementation\n },\n /**\n * Return the compressed content in an unspecified format.\n * The format will depend on the compressed conten source.\n * @return {Object} the compressed content.\n */\n getCompressedContent: function() {\n return null; // see implementation\n }\n};\nmodule.exports = CompressedObject;\n","'use strict';\n\nvar utils = require('./utils');\nvar support = require('./support');\nvar nodeBuffer = require('./nodeBuffer');\n\n/**\n * The following functions come from pako, from pako/lib/utils/strings\n * released under the MIT license, see pako https://github.com/nodeca/pako/\n */\n\n// Table with utf8 lengths (calculated by first byte of sequence)\n// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,\n// because max possible codepoint is 0x10ffff\nvar _utf8len = new Array(256);\nfor (var i=0; i<256; i++) {\n _utf8len[i] = (i >= 252 ? 6 : i >= 248 ? 5 : i >= 240 ? 4 : i >= 224 ? 3 : i >= 192 ? 2 : 1);\n}\n_utf8len[254]=_utf8len[254]=1; // Invalid sequence start\n\n// convert string to array (typed, when possible)\nvar string2buf = function (str) {\n var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;\n\n // count binary size\n for (m_pos = 0; m_pos < str_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos+1 < str_len)) {\n c2 = str.charCodeAt(m_pos+1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;\n }\n\n // allocate buffer\n if (support.uint8array) {\n buf = new Uint8Array(buf_len);\n } else {\n buf = new Array(buf_len);\n }\n\n // convert\n for (i=0, m_pos = 0; i < buf_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos+1 < str_len)) {\n c2 = str.charCodeAt(m_pos+1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n if (c < 0x80) {\n /* one byte */\n buf[i++] = c;\n } else if (c < 0x800) {\n /* two bytes */\n buf[i++] = 0xC0 | (c >>> 6);\n buf[i++] = 0x80 | (c & 0x3f);\n } else if (c < 0x10000) {\n /* three bytes */\n buf[i++] = 0xE0 | (c >>> 12);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n } else {\n /* four bytes */\n buf[i++] = 0xf0 | (c >>> 18);\n buf[i++] = 0x80 | (c >>> 12 & 0x3f);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n }\n }\n\n return buf;\n};\n\n// Calculate max possible position in utf8 buffer,\n// that will not break sequence. If that's not possible\n// - (very small limits) return max size as is.\n//\n// buf[] - utf8 bytes array\n// max - length limit (mandatory);\nvar utf8border = function(buf, max) {\n var pos;\n\n max = max || buf.length;\n if (max > buf.length) { max = buf.length; }\n\n // go back from last position, until start of sequence found\n pos = max-1;\n while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }\n\n // Fuckup - very small and broken sequence,\n // return max, because we should return something anyway.\n if (pos < 0) { return max; }\n\n // If we came to start of buffer - that means vuffer is too small,\n // return max too.\n if (pos === 0) { return max; }\n\n return (pos + _utf8len[buf[pos]] > max) ? pos : max;\n};\n\n// convert array to string\nvar buf2string = function (buf) {\n var str, i, out, c, c_len;\n var len = buf.length;\n\n // Reserve max possible length (2 words per char)\n // NB: by unknown reasons, Array is significantly faster for\n // String.fromCharCode.apply than Uint16Array.\n var utf16buf = new Array(len*2);\n\n for (out=0, i=0; i 4) { utf16buf[out++] = 0xfffd; i += c_len-1; continue; }\n\n // apply mask on first byte\n c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;\n // join the rest\n while (c_len > 1 && i < len) {\n c = (c << 6) | (buf[i++] & 0x3f);\n c_len--;\n }\n\n // terminated by end of string?\n if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }\n\n if (c < 0x10000) {\n utf16buf[out++] = c;\n } else {\n c -= 0x10000;\n utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);\n utf16buf[out++] = 0xdc00 | (c & 0x3ff);\n }\n }\n\n // shrinkBuf(utf16buf, out)\n if (utf16buf.length !== out) {\n if(utf16buf.subarray) {\n utf16buf = utf16buf.subarray(0, out);\n } else {\n utf16buf.length = out;\n }\n }\n\n // return String.fromCharCode.apply(null, utf16buf);\n return utils.applyFromCharCode(utf16buf);\n};\n\n\n// That's all for the pako functions.\n\n\n/**\n * Transform a javascript string into an array (typed if possible) of bytes,\n * UTF-8 encoded.\n * @param {String} str the string to encode\n * @return {Array|Uint8Array|Buffer} the UTF-8 encoded string.\n */\nexports.utf8encode = function utf8encode(str) {\n if (support.nodebuffer) {\n return nodeBuffer(str, \"utf-8\");\n }\n\n return string2buf(str);\n};\n\n\n/**\n * Transform a bytes array (or a representation) representing an UTF-8 encoded\n * string into a javascript string.\n * @param {Array|Uint8Array|Buffer} buf the data de decode\n * @return {String} the decoded string.\n */\nexports.utf8decode = function utf8decode(buf) {\n if (support.nodebuffer) {\n return utils.transformTo(\"nodebuffer\", buf).toString(\"utf-8\");\n }\n\n buf = utils.transformTo(support.uint8array ? \"uint8array\" : \"array\", buf);\n\n // return buf2string(buf);\n // Chrome prefers to work with \"small\" chunks of data\n // for the method buf2string.\n // Firefox and Chrome has their own shortcut, IE doesn't seem to really care.\n var result = [], k = 0, len = buf.length, chunk = 65536;\n while (k < len) {\n var nextBoundary = utf8border(buf, Math.min(k + chunk, len));\n if (support.uint8array) {\n result.push(buf2string(buf.subarray(k, nextBoundary)));\n } else {\n result.push(buf2string(buf.slice(k, nextBoundary)));\n }\n k = nextBoundary;\n }\n return result.join(\"\");\n\n};\n// vim: set shiftwidth=4 softtabstop=4:\n","'use strict';\nvar DataReader = require('./dataReader');\nvar utils = require('./utils');\n\nfunction StringReader(data, optimizedBinaryString) {\n this.data = data;\n if (!optimizedBinaryString) {\n this.data = utils.string2binary(this.data);\n }\n this.length = this.data.length;\n this.index = 0;\n this.zero = 0;\n}\nStringReader.prototype = new DataReader();\n/**\n * @see DataReader.byteAt\n */\nStringReader.prototype.byteAt = function(i) {\n return this.data.charCodeAt(this.zero + i);\n};\n/**\n * @see DataReader.lastIndexOfSignature\n */\nStringReader.prototype.lastIndexOfSignature = function(sig) {\n return this.data.lastIndexOf(sig) - this.zero;\n};\n/**\n * @see DataReader.readData\n */\nStringReader.prototype.readData = function(size) {\n this.checkOffset(size);\n // this will work because the constructor applied the \"& 0xff\" mask.\n var result = this.data.slice(this.zero + this.index, this.zero + this.index + size);\n this.index += size;\n return result;\n};\nmodule.exports = StringReader;\n","'use strict';\nvar utils = require('./utils');\n\nfunction DataReader(data) {\n this.data = null; // type : see implementation\n this.length = 0;\n this.index = 0;\n this.zero = 0;\n}\nDataReader.prototype = {\n /**\n * Check that the offset will not go too far.\n * @param {string} offset the additional offset to check.\n * @throws {Error} an Error if the offset is out of bounds.\n */\n checkOffset: function(offset) {\n this.checkIndex(this.index + offset);\n },\n /**\n * Check that the specifed index will not be too far.\n * @param {string} newIndex the index to check.\n * @throws {Error} an Error if the index is out of bounds.\n */\n checkIndex: function(newIndex) {\n if (this.length < this.zero + newIndex || newIndex < 0) {\n throw new Error(\"End of data reached (data length = \" + this.length + \", asked index = \" + (newIndex) + \"). Corrupted zip ?\");\n }\n },\n /**\n * Change the index.\n * @param {number} newIndex The new index.\n * @throws {Error} if the new index is out of the data.\n */\n setIndex: function(newIndex) {\n this.checkIndex(newIndex);\n this.index = newIndex;\n },\n /**\n * Skip the next n bytes.\n * @param {number} n the number of bytes to skip.\n * @throws {Error} if the new index is out of the data.\n */\n skip: function(n) {\n this.setIndex(this.index + n);\n },\n /**\n * Get the byte at the specified index.\n * @param {number} i the index to use.\n * @return {number} a byte.\n */\n byteAt: function(i) {\n // see implementations\n },\n /**\n * Get the next number with a given byte size.\n * @param {number} size the number of bytes to read.\n * @return {number} the corresponding number.\n */\n readInt: function(size) {\n var result = 0,\n i;\n this.checkOffset(size);\n for (i = this.index + size - 1; i >= this.index; i--) {\n result = (result << 8) + this.byteAt(i);\n }\n this.index += size;\n return result;\n },\n /**\n * Get the next string with a given byte size.\n * @param {number} size the number of bytes to read.\n * @return {string} the corresponding string.\n */\n readString: function(size) {\n return utils.transformTo(\"string\", this.readData(size));\n },\n /**\n * Get raw data without conversion, bytes.\n * @param {number} size the number of bytes to read.\n * @return {Object} the raw data, implementation specific.\n */\n readData: function(size) {\n // see implementations\n },\n /**\n * Find the last occurence of a zip signature (4 bytes).\n * @param {string} sig the signature to find.\n * @return {number} the index of the last occurence, -1 if not found.\n */\n lastIndexOfSignature: function(sig) {\n // see implementations\n },\n /**\n * Get the next date.\n * @return {Date} the date.\n */\n readDate: function() {\n var dostime = this.readInt(4);\n return new Date(\n ((dostime >> 25) & 0x7f) + 1980, // year\n ((dostime >> 21) & 0x0f) - 1, // month\n (dostime >> 16) & 0x1f, // day\n (dostime >> 11) & 0x1f, // hour\n (dostime >> 5) & 0x3f, // minute\n (dostime & 0x1f) << 1); // second\n }\n};\nmodule.exports = DataReader;\n","'use strict';\nvar ArrayReader = require('./arrayReader');\n\nfunction Uint8ArrayReader(data) {\n if (data) {\n this.data = data;\n this.length = this.data.length;\n this.index = 0;\n this.zero = 0;\n }\n}\nUint8ArrayReader.prototype = new ArrayReader();\n/**\n * @see DataReader.readData\n */\nUint8ArrayReader.prototype.readData = function(size) {\n this.checkOffset(size);\n if(size === 0) {\n // in IE10, when using subarray(idx, idx), we get the array [0x00] instead of [].\n return new Uint8Array(0);\n }\n var result = this.data.subarray(this.zero + this.index, this.zero + this.index + size);\n this.index += size;\n return result;\n};\nmodule.exports = Uint8ArrayReader;\n","'use strict';\nvar DataReader = require('./dataReader');\n\nfunction ArrayReader(data) {\n if (data) {\n this.data = data;\n this.length = this.data.length;\n this.index = 0;\n this.zero = 0;\n\n for(var i = 0; i < this.data.length; i++) {\n data[i] = data[i] & 0xFF;\n }\n }\n}\nArrayReader.prototype = new DataReader();\n/**\n * @see DataReader.byteAt\n */\nArrayReader.prototype.byteAt = function(i) {\n return this.data[this.zero + i];\n};\n/**\n * @see DataReader.lastIndexOfSignature\n */\nArrayReader.prototype.lastIndexOfSignature = function(sig) {\n var sig0 = sig.charCodeAt(0),\n sig1 = sig.charCodeAt(1),\n sig2 = sig.charCodeAt(2),\n sig3 = sig.charCodeAt(3);\n for (var i = this.length - 4; i >= 0; --i) {\n if (this.data[i] === sig0 && this.data[i + 1] === sig1 && this.data[i + 2] === sig2 && this.data[i + 3] === sig3) {\n return i - this.zero;\n }\n }\n\n return -1;\n};\n/**\n * @see DataReader.readData\n */\nArrayReader.prototype.readData = function(size) {\n this.checkOffset(size);\n if(size === 0) {\n return [];\n }\n var result = this.data.slice(this.zero + this.index, this.zero + this.index + size);\n this.index += size;\n return result;\n};\nmodule.exports = ArrayReader;\n","'use strict';\n\nfunction squaredEuclidean(p, q) {\n var d = 0;\n for (var i = 0; i < p.length; i++) {\n d += (p[i] - q[i]) * (p[i] - q[i]);\n }\n return d;\n}\n\nfunction euclidean(p, q) {\n return Math.sqrt(squaredEuclidean(p, q));\n}\n\nmodule.exports = euclidean;\neuclidean.squared = squaredEuclidean;\n","'use strict';\n\nconst Cluster = require('./Cluster');\nconst util = require('util');\n\nfunction ClusterLeaf(index) {\n Cluster.call(this);\n this.index = index;\n this.distance = 0;\n this.children = [];\n}\n\nutil.inherits(ClusterLeaf, Cluster);\n\nmodule.exports = ClusterLeaf;\n","/**\n * Fast Fourier Transform module\n * 1D-FFT/IFFT, 2D-FFT/IFFT (radix-2)\n */\nvar FFT = (function(){\n var FFT; \n \n if(typeof exports !== 'undefined') {\n FFT = exports; // for CommonJS\n } else {\n FFT = {};\n }\n \n var version = {\n release: '0.3.0',\n date: '2013-03'\n };\n FFT.toString = function() {\n return \"version \" + version.release + \", released \" + version.date;\n };\n\n // core operations\n var _n = 0, // order\n _bitrev = null, // bit reversal table\n _cstb = null; // sin/cos table\n\n var core = {\n init : function(n) {\n if(n !== 0 && (n & (n - 1)) === 0) {\n _n = n;\n core._initArray();\n core._makeBitReversalTable();\n core._makeCosSinTable();\n } else {\n throw new Error(\"init: radix-2 required\");\n }\n },\n // 1D-FFT\n fft1d : function(re, im) {\n core.fft(re, im, 1);\n },\n // 1D-IFFT\n ifft1d : function(re, im) {\n var n = 1/_n;\n core.fft(re, im, -1);\n for(var i=0; i<_n; i++) {\n re[i] *= n;\n im[i] *= n;\n }\n },\n // 1D-IFFT\n bt1d : function(re, im) {\n core.fft(re, im, -1);\n },\n // 2D-FFT Not very useful if the number of rows have to be equal to cols\n fft2d : function(re, im) {\n var tre = [],\n tim = [],\n i = 0;\n // x-axis\n for(var y=0; y<_n; y++) {\n i = y*_n;\n for(var x1=0; x1<_n; x1++) {\n tre[x1] = re[x1 + i];\n tim[x1] = im[x1 + i];\n }\n core.fft1d(tre, tim);\n for(var x2=0; x2<_n; x2++) {\n re[x2 + i] = tre[x2];\n im[x2 + i] = tim[x2];\n }\n }\n // y-axis\n for(var x=0; x<_n; x++) {\n for(var y1=0; y1<_n; y1++) {\n i = x + y1*_n;\n tre[y1] = re[i];\n tim[y1] = im[i];\n }\n core.fft1d(tre, tim);\n for(var y2=0; y2<_n; y2++) {\n i = x + y2*_n;\n re[i] = tre[y2];\n im[i] = tim[y2];\n }\n }\n },\n // 2D-IFFT\n ifft2d : function(re, im) {\n var tre = [],\n tim = [],\n i = 0;\n // x-axis\n for(var y=0; y<_n; y++) {\n i = y*_n;\n for(var x1=0; x1<_n; x1++) {\n tre[x1] = re[x1 + i];\n tim[x1] = im[x1 + i];\n }\n core.ifft1d(tre, tim);\n for(var x2=0; x2<_n; x2++) {\n re[x2 + i] = tre[x2];\n im[x2 + i] = tim[x2];\n }\n }\n // y-axis\n for(var x=0; x<_n; x++) {\n for(var y1=0; y1<_n; y1++) {\n i = x + y1*_n;\n tre[y1] = re[i];\n tim[y1] = im[i];\n }\n core.ifft1d(tre, tim);\n for(var y2=0; y2<_n; y2++) {\n i = x + y2*_n;\n re[i] = tre[y2];\n im[i] = tim[y2];\n }\n }\n },\n // core operation of FFT\n fft : function(re, im, inv) {\n var d, h, ik, m, tmp, wr, wi, xr, xi,\n n4 = _n >> 2;\n // bit reversal\n for(var l=0; l<_n; l++) {\n m = _bitrev[l];\n if(l < m) {\n tmp = re[l];\n re[l] = re[m];\n re[m] = tmp;\n tmp = im[l];\n im[l] = im[m];\n im[m] = tmp;\n }\n }\n // butterfly operation\n for(var k=1; k<_n; k<<=1) {\n h = 0;\n d = _n/(k << 1);\n for(var j=0; j> 1;\n while(k <= j) {\n j -= k;\n k >>= 1;\n }\n j += k;\n _bitrev[i] = j;\n }\n },\n // makes trigonometiric function table\n _makeCosSinTable : function() {\n var n2 = _n >> 1,\n n4 = _n >> 2,\n n8 = _n >> 3,\n n2p4 = n2 + n4,\n t = Math.sin(Math.PI/_n),\n dc = 2*t*t,\n ds = Math.sqrt(dc*(2 - dc)),\n c = _cstb[n4] = 1,\n s = _cstb[0] = 0;\n t = 2*dc;\n for(var i=1; i> 2;\n // bit reversal\n for(var l=0; l<_n; l++) {\n m = _bitrev[l];\n if(l < m) {\n tmp = re[l];\n re[l] = re[m];\n re[m] = tmp;\n tmp = im[l];\n im[l] = im[m];\n im[m] = tmp;\n }\n }\n // butterfly operation\n for(var k=1; k<_n; k<<=1) {\n h = 0;\n d = _n/(k << 1);\n for(var j=0; j> 1;\n while(k <= j) {\n j -= k;\n k >>= 1;\n }\n j += k;\n _bitrev[i] = j;\n }\n },\n // makes trigonometiric function table\n _makeCosSinTable : function() {\n var n2 = _n >> 1,\n n4 = _n >> 2,\n n8 = _n >> 3,\n n2p4 = n2 + n4,\n t = Math.sin(Math.PI/_n),\n dc = 2*t*t,\n ds = Math.sqrt(dc*(2 - dc)),\n c = _cstb[n4] = 1,\n s = _cstb[0] = 0;\n t = 2*dc;\n for(var i=1; id[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=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","'use strict';\n\nexports.agnes = require('./agnes');\nexports.diana = require('./diana');\n//exports.birch = require('./birch');\n//exports.cure = require('./cure');\n//exports.chameleon = require('./chameleon');\n","'use strict';\n\nconst jcampconverter = require('jcampconverter');\nconst SD = require('spectra-data');\n\nconst getSpectrumType = require('./getSpectrumType');\n\n/**\n * Object containing parsed metadata\n * @name NMRMetadata\n * @typedef {object} NMRMetadata\n * @property {number} dimension\n * @property {number[]} nucleus\n * @property {string} title\n * @property {string} solvent\n * @property {string} pulse\n * @property {string} experiment\n * @property {number} temperature - Temperature in Kelvin\n * @property {number} frequency\n * @property {string} probe\n * @property {string} acquisitionMode\n * @property {number} expno - Experience number\n * @property {string} date - Date in ISO string format\n * @property {object} ranges\n */\n\nconst defaultOptions = {\n computeRanges: false\n};\n\nconst defaultRangesOptions = {\n nH: 100,\n thresholdFactor: 0.85,\n clean: 0.4,\n compile: true,\n integralType: 'sum'\n};\n\n/**\n * Returns a metadata object from JCAMP\n * @param {string} jcampData\n * @param {object} [options]\n * @param {boolean} [options.computeRanges=false]\n * @param {number} [options.ranges] - options for ranges computation\n * @return {NMRMetadata} metadata\n */\nexports.parseJcamp = function(jcampData, options) {\n options = Object.assign({}, defaultOptions, options);\n\n const jcampString = jcampData.toString();\n const jcamp = jcampconverter.convert(jcampString, {\n keepRecordsRegExp: /.*/,\n withoutXY: true\n });\n\n const metadata = {\n dimension: jcamp.twoD ? 2 : 1,\n nucleus: [],\n isFid: false,\n isFt: false\n };\n\n const info = jcamp.info;\n maybeAdd(metadata, 'title', info['TITLE']);\n maybeAdd(metadata, 'solvent', info['.SOLVENTNAME']);\n maybeAdd(\n metadata,\n 'pulse',\n info['.PULSESEQUENCE'] || info['.PULPROG'] || info['$PULPROG']\n );\n maybeAdd(metadata, 'experiment', getSpectrumType(metadata, info));\n maybeAdd(metadata, 'temperature', parseFloat(info['$TE'] || info['.TE']));\n maybeAdd(metadata, 'frequency', parseFloat(info['.OBSERVEFREQUENCY']));\n maybeAdd(metadata, 'type', info['DATATYPE']);\n maybeAdd(metadata, 'probe', info['$PROBHD']);\n if (info['$FNTYPE'] !== undefined) {\n maybeAdd(metadata, 'acquisitionMode', parseInt(info['$FNTYPE']));\n }\n maybeAdd(metadata, 'expno', parseInt(info['$EXPNO']));\n if (metadata.type) {\n if (metadata.type.toUpperCase().indexOf('FID') >= 0) metadata.isFid = true;\n else if (metadata.type.toUpperCase().indexOf('SPECTRUM') >= 0) {\n metadata.isFt = true;\n }\n }\n\n if (metadata.dimension === 1) {\n const nucleus = info['.OBSERVENUCLEUS'];\n if (nucleus) {\n metadata.nucleus = [nucleus.replace(/[^A-Za-z0-9]/g, '')];\n }\n } else {\n const nucleus = info['.NUCLEUS'];\n if (nucleus) {\n metadata.nucleus = nucleus.split(',').map(nuc => nuc.trim());\n }\n }\n if (metadata.nucleus.length === 0) {\n metadata.nucleus = exports.getNucleusFrom2DExperiment(metadata.experiment);\n }\n\n if (info['$DATE']) {\n metadata.date = new Date(info['$DATE'] * 1000).toISOString();\n }\n\n if (\n options.computeRanges &&\n metadata.isFt &&\n metadata.dimension === 1 &&\n metadata.nucleus[0] === '1H'\n ) {\n const rangesOptions = Object.assign(\n {},\n defaultRangesOptions,\n options.ranges\n );\n if (options.removeImpurities && metadata.solvent)\n rangesOptions.removeImpurity = { solvent: metadata.solvent };\n const spectrum = SD.NMR.fromJcamp(jcampString);\n const ranges = spectrum.getRanges(rangesOptions);\n ranges.forEach(function(range) {\n // todo remove when there is an option to avoid that\n delete range._highlight;\n delete range.signalID;\n range.signal.forEach(function(signal) {\n delete signal.peak;\n });\n });\n metadata.range = ranges;\n }\n\n return metadata;\n};\n\n/**\n * Returns a list of nuclei based on an experiment string\n * @param {string} experiment\n * @return {string[]}\n */\nexports.getNucleusFrom2DExperiment = function(experiment) {\n if (typeof experiment !== 'string') {\n return [];\n }\n experiment = experiment.toLowerCase();\n if (experiment.includes('jres')) {\n return ['1H'];\n }\n if (experiment.includes('hmbc') || experiment.includes('hsqc')) {\n return ['1H', '13C'];\n }\n return ['1H', '1H'];\n};\n\nexports.getSpectrumType = getSpectrumType;\n\nfunction maybeAdd(obj, name, value) {\n if (value !== undefined) {\n if (typeof value === 'string') {\n if (value.startsWith('<') && value.endsWith('>')) {\n value = value.substring(1, value.length - 2);\n }\n obj[name] = value.trim();\n } else {\n obj[name] = value;\n }\n }\n}\n","'use strict';\n\nconst Stat = require('ml-stat').array;\n/**\n * Function that returns an array of points given 1D array as follows:\n *\n * [x1, y1, .. , x2, y2, ..]\n *\n * And receive the number of dimensions of each point.\n * @param array\n * @param dimensions\n * @returns {Array} - Array of points.\n */\nfunction coordArrayToPoints(array, dimensions) {\n if (array.length % dimensions !== 0) {\n throw new RangeError('Dimensions number must be accordance with the size of the array.');\n }\n\n var length = array.length / dimensions;\n var pointsArr = new Array(length);\n\n var k = 0;\n for (var i = 0; i < array.length; i += dimensions) {\n var point = new Array(dimensions);\n for (var j = 0; j < dimensions; ++j) {\n point[j] = array[i + j];\n }\n\n pointsArr[k] = point;\n k++;\n }\n\n return pointsArr;\n}\n\n\n/**\n * Function that given an array as follows:\n * [x1, y1, .. , x2, y2, ..]\n *\n * Returns an array as follows:\n * [[x1, x2, ..], [y1, y2, ..], [ .. ]]\n *\n * And receives the number of dimensions of each coordinate.\n * @param array\n * @param dimensions\n * @returns {Array} - Matrix of coordinates\n */\nfunction coordArrayToCoordMatrix(array, dimensions) {\n if (array.length % dimensions !== 0) {\n throw new RangeError('Dimensions number must be accordance with the size of the array.');\n }\n\n var coordinatesArray = new Array(dimensions);\n var points = array.length / dimensions;\n for (var i = 0; i < coordinatesArray.length; i++) {\n coordinatesArray[i] = new Array(points);\n }\n\n for (i = 0; i < array.length; i += dimensions) {\n for (var j = 0; j < dimensions; ++j) {\n var currentPoint = Math.floor(i / dimensions);\n coordinatesArray[j][currentPoint] = array[i + j];\n }\n }\n\n return coordinatesArray;\n}\n\n/**\n * Function that receives a coordinate matrix as follows:\n * [[x1, x2, ..], [y1, y2, ..], [ .. ]]\n *\n * Returns an array of coordinates as follows:\n * [x1, y1, .. , x2, y2, ..]\n *\n * @param coordMatrix\n * @returns {Array}\n */\nfunction coordMatrixToCoordArray(coordMatrix) {\n var coodinatesArray = new Array(coordMatrix.length * coordMatrix[0].length);\n var k = 0;\n for (var i = 0; i < coordMatrix[0].length; ++i) {\n for (var j = 0; j < coordMatrix.length; ++j) {\n coodinatesArray[k] = coordMatrix[j][i];\n ++k;\n }\n }\n\n return coodinatesArray;\n}\n\n/**\n * Tranpose a matrix, this method is for coordMatrixToPoints and\n * pointsToCoordMatrix, that because only transposing the matrix\n * you can change your representation.\n *\n * @param matrix\n * @returns {Array}\n */\nfunction transpose(matrix) {\n var resultMatrix = new Array(matrix[0].length);\n for (var i = 0; i < resultMatrix.length; ++i) {\n resultMatrix[i] = new Array(matrix.length);\n }\n\n for (i = 0; i < matrix.length; ++i) {\n for (var j = 0; j < matrix[0].length; ++j) {\n resultMatrix[j][i] = matrix[i][j];\n }\n }\n\n return resultMatrix;\n}\n\n/**\n * Function that transform an array of points into a coordinates array\n * as follows:\n * [x1, y1, .. , x2, y2, ..]\n *\n * @param points\n * @returns {Array}\n */\nfunction pointsToCoordArray(points) {\n var coodinatesArray = new Array(points.length * points[0].length);\n var k = 0;\n for (var i = 0; i < points.length; ++i) {\n for (var j = 0; j < points[0].length; ++j) {\n coodinatesArray[k] = points[i][j];\n ++k;\n }\n }\n\n return coodinatesArray;\n}\n\n/**\n * Apply the dot product between the smaller vector and a subsets of the\n * largest one.\n *\n * @param firstVector\n * @param secondVector\n * @returns {Array} each dot product of size of the difference between the\n * larger and the smallest one.\n */\nfunction applyDotProduct(firstVector, secondVector) {\n var largestVector, smallestVector;\n if (firstVector.length <= secondVector.length) {\n smallestVector = firstVector;\n largestVector = secondVector;\n } else {\n smallestVector = secondVector;\n largestVector = firstVector;\n }\n\n var difference = largestVector.length - smallestVector.length + 1;\n var dotProductApplied = new Array(difference);\n\n for (var i = 0; i < difference; ++i) {\n var sum = 0;\n for (var j = 0; j < smallestVector.length; ++j) {\n sum += smallestVector[j] * largestVector[i + j];\n }\n dotProductApplied[i] = sum;\n }\n\n return dotProductApplied;\n}\n/**\n * To scale the input array between the specified min and max values. The operation is performed inplace\n * if the options.inplace is specified. If only one of the min or max parameters is specified, then the scaling\n * will multiply the input array by min/min(input) or max/max(input)\n * @param input\n * @param options\n * @returns {*}\n */\nfunction scale(input, options = {}) {\n const {\n min,\n max\n } = options;\n\n var y = options.inPlace ? input : (new Array(input.length));\n var minMax = Stat.minMax(input);\n\n if (typeof max === 'number') {\n if (typeof min === 'number') {\n let factor = (max - min) / (minMax.max - minMax.min);\n for (let i = 0; i < y.length; i++) {\n y[i] = (input[i] - minMax.min) * factor + min;\n }\n } else if (minMax.max !== 0) {\n let factor = max / minMax.max;\n for (let i = 0; i < y.length; i++) {\n y[i] = input[i] * factor;\n }\n } else {\n options.min = minMax.min;\n y = scale(input, options);\n }\n } else if (typeof min === 'number') {\n if (minMax.min !== 0) {\n let factor = min / minMax.min;\n for (let i = 0; i < y.length; i++) {\n y[i] = input[i] * factor;\n }\n\n } else {\n options.max = minMax.max;\n y = scale(input, options);\n }\n }\n return y;\n}\n\nmodule.exports = {\n coordArrayToPoints: coordArrayToPoints,\n coordArrayToCoordMatrix: coordArrayToCoordMatrix,\n coordMatrixToCoordArray: coordMatrixToCoordArray,\n coordMatrixToPoints: transpose,\n pointsToCoordArray: pointsToCoordArray,\n pointsToCoordMatrix: transpose,\n applyDotProduct: applyDotProduct,\n scale: scale\n};\n\n","'use strict';\n\nvar arrayStat = require('./array');\n\nfunction compareNumbers(a, b) {\n return a - b;\n}\n\nexports.max = function max(matrix) {\n var max = -Infinity;\n for (var i = 0; i < matrix.length; i++) {\n for (var j = 0; j < matrix[i].length; j++) {\n if (matrix[i][j] > max) max = matrix[i][j];\n }\n }\n return max;\n};\n\nexports.min = function min(matrix) {\n var min = Infinity;\n for (var i = 0; i < matrix.length; i++) {\n for (var j = 0; j < matrix[i].length; j++) {\n if (matrix[i][j] < min) min = matrix[i][j];\n }\n }\n return min;\n};\n\nexports.minMax = function minMax(matrix) {\n var min = Infinity;\n var max = -Infinity;\n for (var i = 0; i < matrix.length; i++) {\n for (var j = 0; j < matrix[i].length; j++) {\n if (matrix[i][j] < min) min = matrix[i][j];\n if (matrix[i][j] > max) max = matrix[i][j];\n }\n }\n return {\n min:min,\n max:max\n };\n};\n\nexports.entropy = function entropy(matrix, eps) {\n if (typeof (eps) === 'undefined') {\n eps = 0;\n }\n var sum = 0,\n l1 = matrix.length,\n l2 = matrix[0].length;\n for (var i = 0; i < l1; i++) {\n for (var j = 0; j < l2; j++) {\n sum += matrix[i][j] * Math.log(matrix[i][j] + eps);\n }\n }\n return -sum;\n};\n\nexports.mean = function mean(matrix, dimension) {\n if (typeof (dimension) === 'undefined') {\n dimension = 0;\n }\n var rows = matrix.length,\n cols = matrix[0].length,\n theMean, N, i, j;\n\n if (dimension === -1) {\n theMean = [0];\n N = rows * cols;\n for (i = 0; i < rows; i++) {\n for (j = 0; j < cols; j++) {\n theMean[0] += matrix[i][j];\n }\n }\n theMean[0] /= N;\n } else if (dimension === 0) {\n theMean = new Array(cols);\n N = rows;\n for (j = 0; j < cols; j++) {\n theMean[j] = 0;\n for (i = 0; i < rows; i++) {\n theMean[j] += matrix[i][j];\n }\n theMean[j] /= N;\n }\n } else if (dimension === 1) {\n theMean = new Array(rows);\n N = cols;\n for (j = 0; j < rows; j++) {\n theMean[j] = 0;\n for (i = 0; i < cols; i++) {\n theMean[j] += matrix[j][i];\n }\n theMean[j] /= N;\n }\n } else {\n throw new Error('Invalid dimension');\n }\n return theMean;\n};\n\nexports.sum = function sum(matrix, dimension) {\n if (typeof (dimension) === 'undefined') {\n dimension = 0;\n }\n var rows = matrix.length,\n cols = matrix[0].length,\n theSum, i, j;\n\n if (dimension === -1) {\n theSum = [0];\n for (i = 0; i < rows; i++) {\n for (j = 0; j < cols; j++) {\n theSum[0] += matrix[i][j];\n }\n }\n } else if (dimension === 0) {\n theSum = new Array(cols);\n for (j = 0; j < cols; j++) {\n theSum[j] = 0;\n for (i = 0; i < rows; i++) {\n theSum[j] += matrix[i][j];\n }\n }\n } else if (dimension === 1) {\n theSum = new Array(rows);\n for (j = 0; j < rows; j++) {\n theSum[j] = 0;\n for (i = 0; i < cols; i++) {\n theSum[j] += matrix[j][i];\n }\n }\n } else {\n throw new Error('Invalid dimension');\n }\n return theSum;\n};\n\nexports.product = function product(matrix, dimension) {\n if (typeof (dimension) === 'undefined') {\n dimension = 0;\n }\n var rows = matrix.length,\n cols = matrix[0].length,\n theProduct, i, j;\n\n if (dimension === -1) {\n theProduct = [1];\n for (i = 0; i < rows; i++) {\n for (j = 0; j < cols; j++) {\n theProduct[0] *= matrix[i][j];\n }\n }\n } else if (dimension === 0) {\n theProduct = new Array(cols);\n for (j = 0; j < cols; j++) {\n theProduct[j] = 1;\n for (i = 0; i < rows; i++) {\n theProduct[j] *= matrix[i][j];\n }\n }\n } else if (dimension === 1) {\n theProduct = new Array(rows);\n for (j = 0; j < rows; j++) {\n theProduct[j] = 1;\n for (i = 0; i < cols; i++) {\n theProduct[j] *= matrix[j][i];\n }\n }\n } else {\n throw new Error('Invalid dimension');\n }\n return theProduct;\n};\n\nexports.standardDeviation = function standardDeviation(matrix, means, unbiased) {\n var vari = exports.variance(matrix, means, unbiased), l = vari.length;\n for (var i = 0; i < l; i++) {\n vari[i] = Math.sqrt(vari[i]);\n }\n return vari;\n};\n\nexports.variance = function variance(matrix, means, unbiased) {\n if (typeof (unbiased) === 'undefined') {\n unbiased = true;\n }\n means = means || exports.mean(matrix);\n var rows = matrix.length;\n if (rows === 0) return [];\n var cols = matrix[0].length;\n var vari = new Array(cols);\n\n for (var j = 0; j < cols; j++) {\n var sum1 = 0, sum2 = 0, x = 0;\n for (var i = 0; i < rows; i++) {\n x = matrix[i][j] - means[j];\n sum1 += x;\n sum2 += x * x;\n }\n if (unbiased) {\n vari[j] = (sum2 - ((sum1 * sum1) / rows)) / (rows - 1);\n } else {\n vari[j] = (sum2 - ((sum1 * sum1) / rows)) / rows;\n }\n }\n return vari;\n};\n\nexports.median = function median(matrix) {\n var rows = matrix.length, cols = matrix[0].length;\n var medians = new Array(cols);\n\n for (var i = 0; i < cols; i++) {\n var data = new Array(rows);\n for (var j = 0; j < rows; j++) {\n data[j] = matrix[j][i];\n }\n data.sort(compareNumbers);\n var N = data.length;\n if (N % 2 === 0) {\n medians[i] = (data[N / 2] + data[(N / 2) - 1]) * 0.5;\n } else {\n medians[i] = data[Math.floor(N / 2)];\n }\n }\n return medians;\n};\n\nexports.mode = function mode(matrix) {\n var rows = matrix.length,\n cols = matrix[0].length,\n modes = new Array(cols),\n i, j;\n for (i = 0; i < cols; i++) {\n var itemCount = new Array(rows);\n for (var k = 0; k < rows; k++) {\n itemCount[k] = 0;\n }\n var itemArray = new Array(rows);\n var count = 0;\n\n for (j = 0; j < rows; j++) {\n var index = itemArray.indexOf(matrix[j][i]);\n if (index >= 0) {\n itemCount[index]++;\n } else {\n itemArray[count] = matrix[j][i];\n itemCount[count] = 1;\n count++;\n }\n }\n\n var maxValue = 0, maxIndex = 0;\n for (j = 0; j < count; j++) {\n if (itemCount[j] > maxValue) {\n maxValue = itemCount[j];\n maxIndex = j;\n }\n }\n\n modes[i] = itemArray[maxIndex];\n }\n return modes;\n};\n\nexports.skewness = function skewness(matrix, unbiased) {\n if (typeof (unbiased) === 'undefined') unbiased = true;\n var means = exports.mean(matrix);\n var n = matrix.length, l = means.length;\n var skew = new Array(l);\n\n for (var j = 0; j < l; j++) {\n var s2 = 0, s3 = 0;\n for (var i = 0; i < n; i++) {\n var dev = matrix[i][j] - means[j];\n s2 += dev * dev;\n s3 += dev * dev * dev;\n }\n\n var m2 = s2 / n;\n var m3 = s3 / n;\n var g = m3 / Math.pow(m2, 3 / 2);\n\n if (unbiased) {\n var a = Math.sqrt(n * (n - 1));\n var b = n - 2;\n skew[j] = (a / b) * g;\n } else {\n skew[j] = g;\n }\n }\n return skew;\n};\n\nexports.kurtosis = function kurtosis(matrix, unbiased) {\n if (typeof (unbiased) === 'undefined') unbiased = true;\n var means = exports.mean(matrix);\n var n = matrix.length, m = matrix[0].length;\n var kurt = new Array(m);\n\n for (var j = 0; j < m; j++) {\n var s2 = 0, s4 = 0;\n for (var i = 0; i < n; i++) {\n var dev = matrix[i][j] - means[j];\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 kurt[j] = a * b - 3 * c;\n } else {\n kurt[j] = m4 / (m2 * m2) - 3;\n }\n }\n return kurt;\n};\n\nexports.standardError = function standardError(matrix) {\n var samples = matrix.length;\n var standardDeviations = exports.standardDeviation(matrix);\n var l = standardDeviations.length;\n var standardErrors = new Array(l);\n var sqrtN = Math.sqrt(samples);\n\n for (var i = 0; i < l; i++) {\n standardErrors[i] = standardDeviations[i] / sqrtN;\n }\n return standardErrors;\n};\n\nexports.covariance = function covariance(matrix, dimension) {\n return exports.scatter(matrix, undefined, dimension);\n};\n\nexports.scatter = function scatter(matrix, divisor, dimension) {\n if (typeof (dimension) === 'undefined') {\n dimension = 0;\n }\n if (typeof (divisor) === 'undefined') {\n if (dimension === 0) {\n divisor = matrix.length - 1;\n } else if (dimension === 1) {\n divisor = matrix[0].length - 1;\n }\n }\n var means = exports.mean(matrix, dimension);\n var rows = matrix.length;\n if (rows === 0) {\n return [[]];\n }\n var cols = matrix[0].length,\n cov, i, j, s, k;\n\n if (dimension === 0) {\n cov = new Array(cols);\n for (i = 0; i < cols; i++) {\n cov[i] = new Array(cols);\n }\n for (i = 0; i < cols; i++) {\n for (j = i; j < cols; j++) {\n s = 0;\n for (k = 0; k < rows; k++) {\n s += (matrix[k][j] - means[j]) * (matrix[k][i] - means[i]);\n }\n s /= divisor;\n cov[i][j] = s;\n cov[j][i] = s;\n }\n }\n } else if (dimension === 1) {\n cov = new Array(rows);\n for (i = 0; i < rows; i++) {\n cov[i] = new Array(rows);\n }\n for (i = 0; i < rows; i++) {\n for (j = i; j < rows; j++) {\n s = 0;\n for (k = 0; k < cols; k++) {\n s += (matrix[j][k] - means[j]) * (matrix[i][k] - means[i]);\n }\n s /= divisor;\n cov[i][j] = s;\n cov[j][i] = s;\n }\n }\n } else {\n throw new Error('Invalid dimension');\n }\n\n return cov;\n};\n\nexports.correlation = function correlation(matrix) {\n var means = exports.mean(matrix),\n standardDeviations = exports.standardDeviation(matrix, true, means),\n scores = exports.zScores(matrix, means, standardDeviations),\n rows = matrix.length,\n cols = matrix[0].length,\n i, j;\n\n var cor = new Array(cols);\n for (i = 0; i < cols; i++) {\n cor[i] = new Array(cols);\n }\n for (i = 0; i < cols; i++) {\n for (j = i; j < cols; j++) {\n var c = 0;\n for (var k = 0, l = scores.length; k < l; k++) {\n c += scores[k][j] * scores[k][i];\n }\n c /= rows - 1;\n cor[i][j] = c;\n cor[j][i] = c;\n }\n }\n return cor;\n};\n\nexports.zScores = function zScores(matrix, means, standardDeviations) {\n means = means || exports.mean(matrix);\n if (typeof (standardDeviations) === 'undefined') standardDeviations = exports.standardDeviation(matrix, true, means);\n return exports.standardize(exports.center(matrix, means, false), standardDeviations, true);\n};\n\nexports.center = function center(matrix, means, inPlace) {\n means = means || exports.mean(matrix);\n var result = matrix,\n l = matrix.length,\n i, j, jj;\n\n if (!inPlace) {\n result = new Array(l);\n for (i = 0; i < l; i++) {\n result[i] = new Array(matrix[i].length);\n }\n }\n\n for (i = 0; i < l; i++) {\n var row = result[i];\n for (j = 0, jj = row.length; j < jj; j++) {\n row[j] = matrix[i][j] - means[j];\n }\n }\n return result;\n};\n\nexports.standardize = function standardize(matrix, standardDeviations, inPlace) {\n if (typeof (standardDeviations) === 'undefined') standardDeviations = exports.standardDeviation(matrix);\n var result = matrix,\n l = matrix.length,\n i, j, jj;\n\n if (!inPlace) {\n result = new Array(l);\n for (i = 0; i < l; i++) {\n result[i] = new Array(matrix[i].length);\n }\n }\n\n for (i = 0; i < l; i++) {\n var resultRow = result[i];\n var sourceRow = matrix[i];\n for (j = 0, jj = resultRow.length; j < jj; j++) {\n if (standardDeviations[j] !== 0 && !isNaN(standardDeviations[j])) {\n resultRow[j] = sourceRow[j] / standardDeviations[j];\n }\n }\n }\n return result;\n};\n\nexports.weightedVariance = function weightedVariance(matrix, weights) {\n var means = exports.mean(matrix);\n var rows = matrix.length;\n if (rows === 0) return [];\n var cols = matrix[0].length;\n var vari = new Array(cols);\n\n for (var j = 0; j < cols; j++) {\n var sum = 0;\n var a = 0, b = 0;\n\n for (var i = 0; i < rows; i++) {\n var z = matrix[i][j] - means[j];\n var w = weights[i];\n\n sum += w * (z * z);\n b += w;\n a += w * w;\n }\n\n vari[j] = sum * (b / (b * b - a));\n }\n\n return vari;\n};\n\nexports.weightedMean = function weightedMean(matrix, weights, dimension) {\n if (typeof (dimension) === 'undefined') {\n dimension = 0;\n }\n var rows = matrix.length;\n if (rows === 0) return [];\n var cols = matrix[0].length,\n means, i, ii, j, w, row;\n\n if (dimension === 0) {\n means = new Array(cols);\n for (i = 0; i < cols; i++) {\n means[i] = 0;\n }\n for (i = 0; i < rows; i++) {\n row = matrix[i];\n w = weights[i];\n for (j = 0; j < cols; j++) {\n means[j] += row[j] * w;\n }\n }\n } else if (dimension === 1) {\n means = new Array(rows);\n for (i = 0; i < rows; i++) {\n means[i] = 0;\n }\n for (j = 0; j < rows; j++) {\n row = matrix[j];\n w = weights[j];\n for (i = 0; i < cols; i++) {\n means[j] += row[i] * w;\n }\n }\n } else {\n throw new Error('Invalid dimension');\n }\n\n var weightSum = arrayStat.sum(weights);\n if (weightSum !== 0) {\n for (i = 0, ii = means.length; i < ii; i++) {\n means[i] /= weightSum;\n }\n }\n return means;\n};\n\nexports.weightedCovariance = function weightedCovariance(matrix, weights, means, dimension) {\n dimension = dimension || 0;\n means = means || exports.weightedMean(matrix, weights, dimension);\n var s1 = 0, s2 = 0;\n for (var i = 0, ii = weights.length; i < ii; i++) {\n s1 += weights[i];\n s2 += weights[i] * weights[i];\n }\n var factor = s1 / (s1 * s1 - s2);\n return exports.weightedScatter(matrix, weights, means, factor, dimension);\n};\n\nexports.weightedScatter = function weightedScatter(matrix, weights, means, factor, dimension) {\n dimension = dimension || 0;\n means = means || exports.weightedMean(matrix, weights, dimension);\n if (typeof (factor) === 'undefined') {\n factor = 1;\n }\n var rows = matrix.length;\n if (rows === 0) {\n return [[]];\n }\n var cols = matrix[0].length,\n cov, i, j, k, s;\n\n if (dimension === 0) {\n cov = new Array(cols);\n for (i = 0; i < cols; i++) {\n cov[i] = new Array(cols);\n }\n for (i = 0; i < cols; i++) {\n for (j = i; j < cols; j++) {\n s = 0;\n for (k = 0; k < rows; k++) {\n s += weights[k] * (matrix[k][j] - means[j]) * (matrix[k][i] - means[i]);\n }\n cov[i][j] = s * factor;\n cov[j][i] = s * factor;\n }\n }\n } else if (dimension === 1) {\n cov = new Array(rows);\n for (i = 0; i < rows; i++) {\n cov[i] = new Array(rows);\n }\n for (i = 0; i < rows; i++) {\n for (j = i; j < rows; j++) {\n s = 0;\n for (k = 0; k < cols; k++) {\n s += weights[k] * (matrix[j][k] - means[j]) * (matrix[i][k] - means[i]);\n }\n cov[i][j] = s * factor;\n cov[j][i] = s * factor;\n }\n }\n } else {\n throw new Error('Invalid dimension');\n }\n\n return cov;\n};\n","'use strict';\n\n/**\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 the new 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 the new array.\n *\n * @param x - sorted increasing x values\n * @param y\n * @param options\n * @returns {Array} new array with the equally spaced data.\n *\n */\nfunction getEquallySpacedData(x, y, options = {}) {\n var xLength = x.length;\n if (x.length > 1 && x[0] > x[1]) {\n x = x.slice().reverse();\n y = y.slice().reverse();\n }\n\n var {\n from = x[0],\n to = x[xLength - 1],\n variant = 'smooth',\n numberOfPoints = 100\n } = options;\n\n if (xLength !== y.length) {\n throw new RangeError(\"the x and y vector doesn't have the same size.\");\n }\n\n if (typeof from !== 'number' || isNaN(from)) {\n throw new RangeError(\"'from' option must be a number\");\n }\n\n if (typeof to !== 'number' || isNaN(to)) {\n throw new RangeError(\"'to' option must be a number\");\n }\n\n var reverse = from > to;\n if (reverse) {\n [from, to] = [to, from];\n }\n\n if (typeof numberOfPoints !== 'number' || isNaN(numberOfPoints)) {\n throw new RangeError(\"'numberOfPoints' option must be a number\");\n }\n if (numberOfPoints < 1) {\n throw new RangeError('the number of points must be at least 1');\n }\n\n var output = variant === 'slot' ? getEquallySpacedSlot(x, y, from, to, numberOfPoints) : getEquallySpacedSmooth(x, y, from, to, numberOfPoints);\n\n return reverse ? output.reverse() : output;\n}\n\n/**\n * function that retrieves the getEquallySpacedData with the variant \"smooth\"\n *\n * @param x\n * @param y\n * @param from - Initial point\n * @param to - Final point\n * @param numberOfPoints\n * @returns {Array} - Array of y's equally spaced with the variant \"smooth\"\n */\nfunction getEquallySpacedSmooth(x, y, from, to, numberOfPoints) {\n var xLength = x.length;\n\n var step = (to - from) / (numberOfPoints - 1);\n var halfStep = step / 2;\n\n var output = new Array(numberOfPoints);\n\n var initialOriginalStep = x[1] - x[0];\n var lastOriginalStep = x[xLength - 1] - x[xLength - 2];\n\n // Init main variables\n var min = from - halfStep;\n var max = from + halfStep;\n\n var previousX = Number.MIN_VALUE;\n var previousY = 0;\n var nextX = x[0] - initialOriginalStep;\n var nextY = 0;\n\n var currentValue = 0;\n var slope = 0;\n var intercept = 0;\n var sumAtMin = 0;\n var sumAtMax = 0;\n\n var i = 0; // index of input\n var j = 0; // index of output\n\n function getSlope(x0, y0, x1, y1) {\n return (y1 - y0) / (x1 - x0);\n }\n\n main: while (true) {\n\n if (previousX <= min && min <= nextX) {\n add = integral(0, min - previousX, slope, previousY);\n sumAtMin = currentValue + add;\n }\n\n while (nextX - max >= 0) {\n // no overlap with original point, just consume current value\n var add = integral(0, max - previousX, slope, previousY);\n sumAtMax = currentValue + add;\n\n output[j++] = (sumAtMax - sumAtMin) / step;\n\n if (j === numberOfPoints) {\n break main;\n }\n\n min = max;\n max += step;\n sumAtMin = sumAtMax;\n }\n\n currentValue += integral(previousX, nextX, slope, intercept);\n\n previousX = nextX;\n previousY = nextY;\n\n if (i < xLength) {\n nextX = x[i];\n nextY = y[i];\n i++;\n } else if (i === xLength) {\n nextX += lastOriginalStep;\n nextY = 0;\n }\n\n slope = getSlope(previousX, previousY, nextX, nextY);\n intercept = -slope * previousX + previousY;\n }\n\n return output;\n}\n\n/**\n * function that retrieves the getEquallySpacedData with the variant \"slot\"\n *\n * @param x\n * @param y\n * @param from - Initial point\n * @param to - Final point\n * @param numberOfPoints\n * @returns {Array} - Array of y's equally spaced with the variant \"slot\"\n */\nfunction getEquallySpacedSlot(x, y, from, to, numberOfPoints) {\n var xLength = x.length;\n\n var step = (to - from) / (numberOfPoints - 1);\n var halfStep = step / 2;\n var lastStep = x[x.length - 1] - x[x.length - 2];\n\n var start = from - halfStep;\n var output = new Array(numberOfPoints);\n\n // Init main variables\n var min = start;\n var max = start + step;\n\n var previousX = -Number.MAX_VALUE;\n var previousY = 0;\n var nextX = x[0];\n var nextY = y[0];\n var frontOutsideSpectra = 0;\n var backOutsideSpectra = true;\n\n var currentValue = 0;\n\n // for slot algorithm\n var currentPoints = 0;\n\n var i = 1; // index of input\n var j = 0; // index of output\n\n main: while (true) {\n if (previousX >= nextX) throw (new Error('x must be an increasing serie'));\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\n output[j] = currentPoints <= 0 ? 0 : currentValue / currentPoints;\n j++;\n\n if (j === numberOfPoints) {\n break main;\n }\n\n min = max;\n max += step;\n currentValue = 0;\n currentPoints = 0;\n }\n\n if (previousX > min) {\n currentValue += previousY;\n currentPoints++;\n }\n\n if (previousX === -Number.MAX_VALUE || frontOutsideSpectra > 1) {\n currentPoints--;\n }\n\n previousX = nextX;\n previousY = nextY;\n\n if (i < xLength) {\n nextX = x[i];\n nextY = y[i];\n i++;\n } else {\n nextX += lastStep;\n nextY = 0;\n frontOutsideSpectra++;\n }\n }\n\n return output;\n}\n/**\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 {number} integral value.\n */\nfunction integral(x0, x1, slope, intercept) {\n return (0.5 * slope * x1 * x1 + intercept * x1) - (0.5 * slope * x0 * x0 + intercept * x0);\n}\n\nexports.getEquallySpacedData = getEquallySpacedData;\nexports.integral = integral;\n","'use strict';\n\nexports.SNV = SNV;\nvar Stat = require('ml-stat').array;\n\n/**\n * Function that applies the standard normal variate (SNV) to an array of values.\n *\n * @param data - Array of values.\n * @returns {Array} - applied the SNV.\n */\nfunction SNV(data) {\n var mean = Stat.mean(data);\n var std = Stat.standardDeviation(data);\n var result = data.slice();\n for (var i = 0; i < data.length; i++) {\n result[i] = (result[i] - mean) / std;\n }\n return result;\n}\n","'use strict';\n\nconst extend = require('extend');\nconst SG = require('ml-savitzky-golay-generalized');\n\nconst defaultOptions = {\n sgOptions: {\n windowSize: 9,\n polynomial: 3\n },\n minMaxRatio: 0.00025,\n broadRatio: 0.00,\n maxCriteria: true,\n smoothY: true,\n realTopDetection: false,\n heightFactor: 0,\n boundaries: false,\n derivativeThreshold: -1\n};\n\n/**\n * Global spectra deconvolution\n * @param {Array} x - Independent variable\n * @param {Array} yIn - Dependent variable\n * @param {object} [options] - Options object\n * @param {object} [options.sgOptions] - Options object for Savitzky-Golay filter. See https://github.com/mljs/savitzky-golay-generalized#options\n * @param {number} [options.sgOptions.windowSize = 9] - points to use in the approximations\n * @param {number} [options.sgOptions.polynomial = 3] - degree of the polynomial to use in the approximations\n * @param {number} [options.minMaxRatio = 0.00025] - Threshold to determine if a given peak should be considered as a noise\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 * @param {number} [options.noiseLevel = 0] - Noise threshold in spectrum units\n * @param {boolean} [options.maxCriteria = true] - Peaks are local maximum(true) or minimum(false)\n * @param {boolean} [options.smoothY = true] - Select the peak intensities from a smoothed version of the independent variables\n * @param {boolean} [options.realTopDetection = false] - Use a quadratic optimizations with the peak and its 3 closest neighbors\n * to determine the true x,y values of the peak?\n * @param {number} [options.heightFactor = 0] - Factor to multiply the calculated height (usually 2)\n * @param {boolean} [options.boundaries = false] - Return also the inflection points of the peaks\n * @param {number} [options.derivativeThreshold = -1] - Filters based on the amplitude of the first derivative\n * @return {Array