{"version":3,"sources":["webpack://nmrMetadata/webpack/universalModuleDefinition","webpack://nmrMetadata/webpack/bootstrap","webpack://nmrMetadata/./node_modules/jszip/lib/utils.js","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/stream/GenericWorker.js","webpack://nmrMetadata/./node_modules/ml-matrix/src/matrix.js","webpack://nmrMetadata/./node_modules/is-any-array/src/index.js","webpack://nmrMetadata/./node_modules/jszip/lib/support.js","webpack://nmrMetadata/(webpack)/buildin/global.js","webpack://nmrMetadata/./node_modules/pako/lib/utils/common.js","webpack://nmrMetadata/./node_modules/ml-matrix/src/views/base.js","webpack://nmrMetadata/./node_modules/inherits/inherits_browser.js","webpack://nmrMetadata/./node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_duplex.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/utf8.js","webpack://nmrMetadata/./node_modules/buffer/index.js","webpack://nmrMetadata/./node_modules/brukerconverter/src/brukerconverter.js","webpack://nmrMetadata/./node_modules/process/browser.js","webpack://nmrMetadata/./node_modules/core-util-is/lib/util.js","webpack://nmrMetadata/./node_modules/jszip/lib/external.js","webpack://nmrMetadata/./node_modules/ml-fft/src/index.js","webpack://nmrMetadata/./node_modules/ml-matrix/src/util.js","webpack://nmrMetadata/./node_modules/process-nextick-args/index.js","webpack://nmrMetadata/./node_modules/jszip/lib/nodejsUtils.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/events/events.js","webpack://nmrMetadata/./node_modules/stream-browserify/node_modules/readable-stream/readable-browser.js","webpack://nmrMetadata/./node_modules/safe-buffer/index.js","webpack://nmrMetadata/./node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_writable.js","webpack://nmrMetadata/./node_modules/jszip/lib/compressedObject.js","webpack://nmrMetadata/./node_modules/jszip/lib/crc32.js","webpack://nmrMetadata/./node_modules/pako/lib/zlib/messages.js","webpack://nmrMetadata/./node_modules/ml-hclust/src/Cluster.js","webpack://nmrMetadata/./node_modules/jcampconverter/src/index.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/utf8/utf8.js","webpack://nmrMetadata/./node_modules/ml-stat/array.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/isarray/index.js","webpack://nmrMetadata/./node_modules/jszip/lib/readable-stream-browser.js","webpack://nmrMetadata/./node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_readable.js","webpack://nmrMetadata/./node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack://nmrMetadata/./node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/destroy.js","webpack://nmrMetadata/./node_modules/timers-browserify/main.js","webpack://nmrMetadata/./node_modules/string_decoder/lib/string_decoder.js","webpack://nmrMetadata/./node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_transform.js","webpack://nmrMetadata/./node_modules/jszip/lib/base64.js","webpack://nmrMetadata/./node_modules/jszip/lib/stream/StreamHelper.js","webpack://nmrMetadata/./node_modules/jszip/lib/defaults.js","webpack://nmrMetadata/./node_modules/jszip/lib/stream/DataWorker.js","webpack://nmrMetadata/./node_modules/jszip/lib/stream/DataLengthProbe.js","webpack://nmrMetadata/./node_modules/jszip/lib/stream/Crc32Probe.js","webpack://nmrMetadata/./node_modules/jszip/lib/compressions.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/reader/readerFor.js","webpack://nmrMetadata/./node_modules/jszip/lib/reader/ArrayReader.js","webpack://nmrMetadata/./node_modules/jszip/lib/reader/DataReader.js","webpack://nmrMetadata/./node_modules/jszip/lib/reader/Uint8ArrayReader.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/./src/getMetadata.js","webpack://nmrMetadata/./src/getSpectrumType.js","webpack://nmrMetadata/./src/getNucleusFrom2DExperiment.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/extend/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/brukerconverter/node_modules/jcampconverter/src/index.js","webpack://nmrMetadata/./node_modules/iobuffer/lib-esm/IOBuffer.js","webpack://nmrMetadata/./node_modules/jszip/lib/index.js","webpack://nmrMetadata/./node_modules/jszip/lib/object.js","webpack://nmrMetadata/./node_modules/base64-js/index.js","webpack://nmrMetadata/./node_modules/ieee754/index.js","webpack://nmrMetadata/./node_modules/stream-browserify/index.js","webpack://nmrMetadata/./node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/BufferList.js","webpack://nmrMetadata/./node_modules/setimmediate/setImmediate.js","webpack://nmrMetadata/./node_modules/util-deprecate/browser.js","webpack://nmrMetadata/./node_modules/string_decoder/node_modules/safe-buffer/index.js","webpack://nmrMetadata/./node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_passthrough.js","webpack://nmrMetadata/./node_modules/stream-browserify/node_modules/readable-stream/writable-browser.js","webpack://nmrMetadata/./node_modules/stream-browserify/node_modules/readable-stream/duplex-browser.js","webpack://nmrMetadata/./node_modules/stream-browserify/node_modules/readable-stream/transform.js","webpack://nmrMetadata/./node_modules/stream-browserify/node_modules/readable-stream/passthrough.js","webpack://nmrMetadata/./node_modules/set-immediate-shim/index.js","webpack://nmrMetadata/./node_modules/lie/lib/browser.js","webpack://nmrMetadata/./node_modules/immediate/lib/browser.js","webpack://nmrMetadata/./node_modules/jszip/lib/stream/ConvertWorker.js","webpack://nmrMetadata/./node_modules/jszip/lib/nodejs/NodejsStreamOutputAdapter.js","webpack://nmrMetadata/./node_modules/jszip/lib/zipObject.js","webpack://nmrMetadata/./node_modules/jszip/lib/generate/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/generate/ZipFileWorker.js","webpack://nmrMetadata/./node_modules/jszip/lib/nodejs/NodejsStreamInputAdapter.js","webpack://nmrMetadata/./node_modules/jszip/lib/load.js","webpack://nmrMetadata/./node_modules/jszip/lib/zipEntries.js","webpack://nmrMetadata/./node_modules/jszip/lib/reader/StringReader.js","webpack://nmrMetadata/./node_modules/jszip/lib/reader/NodeBufferReader.js","webpack://nmrMetadata/./node_modules/jszip/lib/zipEntry.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/util/support/isBufferBrowser.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/./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/./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","support","require","base64","nodejsUtils","setImmediate","external","identity","input","stringToArrayLike","str","array","length","charCodeAt","newBlob","part","type","checkSupport","Blob","e","builder","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","MSBlobBuilder","append","getBlob","Error","arrayToStringHelper","stringifyByChunk","chunk","result","k","len","String","fromCharCode","apply","push","slice","Math","min","subarray","join","stringifyByChar","resultStr","applyCanBeUsed","uint8array","Uint8Array","nodebuffer","allocBuffer","arrayLikeToString","getTypeOf","canUseApply","floor","arrayLikeToArrayLike","arrayFrom","arrayTo","applyFromCharCode","transform","Array","buffer","newBufferFrom","byteLength","transformTo","outputType","inputType","toString","isBuffer","arraybuffer","ArrayBuffer","toLowerCase","MAX_VALUE_16BITS","MAX_VALUE_32BITS","pretty","code","res","toUpperCase","delay","callback","args","inherits","ctor","superCtor","Obj","extend","attr","arguments","prepareContent","inputData","isBinary","isOptimizedBinaryString","isBase64","Promise","resolve","then","data","blob","indexOf","FileReader","reject","reader","onload","target","onerror","error","readAsArrayBuffer","dataType","decode","Matrix","Decompositions","DC","HashTable","SparseMatrix","constructor","rows","columns","options","other","_init","elements","clone","threshold","isArray","matrix","j","abs","set","initialCapacity","to2DArray","copy","isSquare","isSymmetric","symmetric","forEachNonZero","v","size","row","column","remove","mmul","console","warn","v1","v2","kroneckerProduct","q","cardinality","forEachPair","maybeShrinkCapacity","getNonZeros","values","idx","setThreshold","newThreshold","klass","eye","tensorProduct","inplaceOperator","inplaceOperatorScalar","inplaceOperatorMatrix","staticOperator","inplaceMethod","staticMethod","operators","operator","eval","fillTemplateFunction","op","methods","method","forEach","mathMethod","template","replace","RegExp","GenericWorker","streamInfo","generatedError","extraStreamInfo","isPaused","isFinished","isLocked","_listeners","previous","emit","end","flush","cleanUp","on","listener","arg","pipe","next","registerPrevious","mergeStreamInfo","processChunk","pause","resume","withError","withStreamInfo","lock","me","abstractMatrix","util","nRows","nColumns","isMatrix","Number","isInteger","super","TypeError","RangeError","concat","rowIndex","columnIndex","newMatrix","species","removeRow","index","checkRowIndex","splice","addRow","undefined","checkRowVector","removeColumn","checkColumnIndex","addColumn","checkColumnVector","endsWith","string","Buffer","nodestream","Readable","g","Function","window","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","Buf8","Buf16","Buf32","BaseView","static","super_","writable","configurable","TempCtor","pna","objectKeys","keys","Duplex","Writable","readable","allowHalfOpen","once","onend","_writableState","ended","nextTick","onEndNT","highWaterMark","_readableState","destroyed","_destroy","err","cb","patterns","compilePattern","signal","tolerance","jc","pattern","cont","assignment","sort","a","b","coupling","delta","group","signals","diaID","distance","diaIDs","nbAtoms","atomIDs","multiplicity","joinCoupling","newNmrJs","atoms","jTemp","nmrJ","Js","jString","separator","nbDecimal","toFixed","INFINITY","MAX_INTEGER","NAN","symbolTag","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","freeGlobal","global","freeSelf","objectToString","nativeMin","symbolProto","symbolToString","isObject","isSymbol","isObjectLike","toNumber","valueOf","test","baseToString","func","round","number","precision","toFinite","remainder","toInteger","pair","split","utils","_utf8len","Utf8DecodeWorker","leftOver","Utf8EncodeWorker","utf8encode","c2","m_pos","str_len","buf_len","string2buf","utf8decode","out","c_len","utf16buf","buf2string","previousData","nextBoundary","max","utf8border","usableData","meta","ieee754","kMaxLength","TYPED_ARRAY_SUPPORT","createBuffer","that","__proto__","encodingOrOffset","allocUnsafe","from","byteOffset","fromArrayLike","fromArrayBuffer","encoding","isEncoding","actual","write","fromString","checked","val","fromObject","assertSize","isView","loweredCase","utf8ToBytes","base64ToBytes","slowToString","start","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","dir","isNaN","arrayIndexOf","lastIndexOf","arr","indexSize","arrLength","valLength","read","readUInt16BE","foundIndex","found","hexWrite","offset","remaining","strLen","parsed","substr","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","latin1Write","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","fromByteArray","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","MAX_ARGUMENTS_LENGTH","decodeCodePointsArray","SlowBuffer","alloc","INSPECT_MAX_BYTES","foo","typedArraySupport","poolSize","_augment","fill","allocUnsafeSlow","_isBuffer","compare","x","y","list","swap16","swap32","swap64","equals","inspect","match","thisStart","thisEnd","thisCopy","targetCopy","includes","isFinite","toJSON","_arr","ret","toHex","bytes","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","pow","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","INVALID_BASE64_RE","Infinity","leadSurrogate","toByteArray","trim","stringtrim","base64clean","dst","Converter","IOBuffer","JSZip","BINARY","TEXT","convert","brukerFiles","Date","ser","files","sf","swP","parseData","procs","temp","acqus","info","currKey","proc2s","nbSubSpectra","$SI","$SF","parseFloat","$SWP","$OFFSET","acqu2s","$TD","$SW","$SWH","$SFO1","$AXNUC","$NUC1","firstY","lastY","$BF2","pageValue","deltaY","setXYSpectrumData","setFIDSpectrumData","spectra","twoD","convert2D","fid","convert1D","noContours","zData","noise","minZ","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","exp","lines","zValue","iSubSpectra","povar","segments","generateContourLines","minMax","add2D","profiling","action","time","keepSpectra","xy","spectrum","newData","file","store","real","ensureIOBuffer","td","bf","shiftOffsetVal","observeFrequency","$BF1","brukerReference","endian","$BYTORDP","setLittleEndian","setBigEndian","toSave","dataTable","nbPoints","firstX","lastX","xUnit","yUnit","isXYdata","title","TITLE","deltaX","readInt32","keepRecordsRegExp","SW","SF","BF","AQ","DW","nucleus","available","convertZip","zipFile","loadAsync","zip","folders","filter","relativePath","promises","currFiles","folder","async","all","filename","convertFolder","cachedSetTimeout","cachedClearTimeout","process","defaultSetTimout","defaultClearTimeout","runTimeout","fun","setTimeout","clearTimeout","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","timeout","run","marker","runClearTimeout","Item","noop","browser","env","argv","version","versions","addListener","off","removeListener","removeAllListeners","prependListener","prependOnceListener","listeners","binding","cwd","chdir","umask","isBoolean","isNull","isNullOrUndefined","isNumber","isString","isUndefined","isRegExp","re","isDate","isError","isFunction","isPrimitive","ES6Promise","FFTUtils","FFT","outer","vector","to1DArray","checkIndices","rowIndices","columnIndices","rowOut","some","columnOut","checkRange","startRow","endRow","startColumn","endColumn","notAllNumbers","getRange","to","sumByRow","sum","zeros","sumByColumn","sumAll","fn","arg1","arg2","arg3","isNode","isStream","defOptions","fullClusterGeneratorVector","conn","sqrt","clusterList","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","cols","nCols","customFilter","cs","filteredData","fft","nStdDev","bitmask","peakList","pixels","nRow","col","labels","extractPeaks","neighbours","log","findPeaks2DMax","rowI","colI","peakListMax","tmpIndex","hypotenuse","getEmpty2DArray","getFilled2DArray","ReflectOwnKeys","R","Reflect","ReflectApply","receiver","ownKeys","getOwnPropertySymbols","getOwnPropertyNames","NumberIsNaN","EventEmitter","init","_events","_eventsCount","_maxListeners","defaultMaxListeners","$getMaxListeners","_addListener","prepend","events","existing","warning","newListener","unshift","warned","w","emitter","count","onceWrapper","fired","wrapFn","_onceWrap","state","wrapped","unwrap","evlistener","unwrapListeners","arrayClone","listenerCount","getPrototypeOf","setMaxListeners","getMaxListeners","doError","er","message","context","handler","position","originalListener","pop","spliceOne","rawListeners","eventNames","Stream","Transform","PassThrough","copyProps","SafeBuffer","CorkedRequest","_this","entry","finish","corkReq","pendingcb","corkedRequestsFree","onCorkedFinish","asyncWrite","WritableState","internalUtil","deprecate","OurUint8Array","realHasInstance","destroyImpl","nop","stream","isDuplex","objectMode","writableObjectMode","hwm","writableHwm","writableHighWaterMark","defaultHwm","finalCalled","needDrain","ending","finished","noDecode","decodeStrings","defaultEncoding","writing","corked","sync","bufferProcessing","onwrite","writecb","writelen","onwriteStateUpdate","finishMaybe","errorEmitted","onwriteError","needFinish","bufferedRequest","clearBuffer","afterWrite","lastBufferedRequest","prefinished","bufferedRequestCount","_write","writev","_writev","destroy","final","_final","doWrite","onwriteDrain","holder","allBuffers","isBuf","callFinal","need","prefinish","getBuffer","current","_","hasInstance","_uint8ArrayToBuffer","writeAfterEnd","valid","validChunk","newChunk","decodeChunk","last","writeOrBuffer","cork","uncork","setDefaultEncoding","endWritable","_undestroy","undestroy","DataWorker","DataLengthProbe","Crc32Probe","CompressedObject","compressedSize","uncompressedSize","crc32","compression","compressedContent","getContentWorker","worker","uncompressWorker","getCompressedWorker","createWorkerFrom","uncompressedWorker","compressionOptions","compressWorker","crcTable","table","makeTable","crc","crc32str","2","1","0","Heap","Cluster","children","cut","ans","aux","minGroups","heap","first","child","toArray","traverse","visit","getConverter","ntuplesSeparator","GC_MS_FIELDS","convertToFloatArray","stringArray","floatArray","Spectrum","defaultOptions","withoutXY","chromatogram","noContour","nbContourLevels","noiseMultiplier","convertMSFieldToLabel","isMSField","dataLabel","prepareSpectrum","xFactor","yFactor","getMedian","compareNumbers","fastParseXYData","currentData","ascii","currentX","currentY","endLine","newLine","isDifference","isLastDifference","lastDifference","isDuplicate","inComment","currentValue","isNegative","inValue","skipFirstValue","decimalPosition","duplicate","ascii2","parseXYA","removeSymbolRegExp","isXYAdata","parsePeakTable","removeCommentRegExp","peakTableSplitRegExp","isPeaktable","logs","jcamp","ldr","dataValue","ldrs","infos","wantXY","now","ntuples","substring","xIndex","yIndex","firstVariable","secondVariable","symbol","vardim","factor","datatable","xType","indirectFrequency","shiftOffsetNum","varname","vartype","varform","yType","page","pageSymbol","pageSymbolIndex","unit","sampleDescription","newNtuples","xVector","map","povarHeight0","povarHeight1","povarHeight2","povarHeight3","isOver0","isOver1","isOver2","isOver3","iter","side","subSpectra","subSpectraAfter","times","series","ms","dimension","existingGCMSFields","label","complexChromatogram","intensity","simpleChromatogram","stamps","useWorker","workerURL","URL","createObjectURL","Worker","revokeObjectURL","addEventListener","event","JSON","parse","stamp","output","random","postMessage","stringify","postToWorker","createTree","flatten","flat","stack","ntupleLevel","line","startsWith","haystack","needle","comparator","low","high","mid","cmp","getEquallySpacedData","SNV","pseudoDigits","SQZ_P","SQZ_N","DIF_P","DIF_N","DUP","MaxLinelength","commaSeparatedValuesEncoding","intervalX","fixEncoding","outputData","TD","ceil","packedEncoding","squeezedEncoding","squeezedDigit","differenceDuplicateEncoding","mult","charCount","encodData","encodNumber","diffData","numDiff","differenceDigit","duplicateDigit","differenceEncoding","num","SQZdigit","charAt","DIFFdigit","DUPdigit","encode","byteCount","byteIndex","stringFromCharCode","ucs2decode","extra","counter","checkScalarValue","createByte","encodeCodePoint","readContinuationByte","continuationByte","decodeSymbol","byte1","byteString","ucs2encode","arithmeticMean","mean","geometricMean","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","maxValue","maxIndex","covariance","vector1","vector2","mean1","mean2","cov","skewness","s2","s3","dev","m2","kurtosis","s4","entropy","eps","weightedMean","weights","weightedStandardDeviation","weightedVariance","center","inPlace","standardize","standardDev","cumulativeSum","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","newRows","newColumns","empty","rng","matrix1","matrix2","checkMatrix","ii","jj","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","embed","mat","resultat","blockMult","halfRows","halfCols","subMatrix","add","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","inplaceMethWithArgs","staticMethWithArgs","tmplVar","inplaceMethod2","inplaceMethodS","inplaceMethodM","staticMethod2","LUrowi","LUcolj","kmax","lu","pivotVector","pivotSign","LU","isSingular","X","solve","SingularValueDecomposition","nu","wantu","wantv","computeLeftSingularVectors","computeRightSingularVectors","swapped","ks","f","sn","kase","sp","spm1","epm1","sk","ek","work","nct","nrt","pp","tol","Y","scols","Ls","VL","vrows","urows","VLU","solveForDiagonal","inverse","vcols","ucols","A","B","subtract","multiply","dotMultiply","dotDivide","div","inv","dotPow","ones","ReadableState","EElistenerCount","debugUtil","debug","debuglog","StringDecoder","BufferList","kProxyEvents","readableObjectMode","readableHwm","readableHighWaterMark","pipes","pipesCount","flowing","endEmitted","reading","needReadable","emittedReadable","readableListening","resumeScheduled","awaitDrain","readingMore","decoder","_read","readableAddChunk","addToFront","skipChunkCheck","emitReadable","onEofChunk","chunkInvalid","addChunk","maybeReadMore","needMoreData","setEncoding","enc","MAX_HWM","howMuchToRead","head","computeNewHighWaterMark","emitReadable_","flow","maybeReadMore_","nReadingNextTick","resume_","fromList","clear","hasStrings","nb","tail","copyFromBufferString","copyFromBuffer","fromListPartial","endReadable","endReadableNT","xs","nOrig","doRead","pipeOpts","endFn","stdout","stderr","unpipe","onunpipe","unpipeInfo","hasUnpiped","onclose","onfinish","ondrain","ondata","cleanedUp","pipeOnDrain","increasedAwaitDrain","dests","ev","wrap","paused","_fromList","emitErrorNT","readableDestroyed","writableDestroyed","scope","Timeout","id","clearFn","_id","_clearFn","setInterval","clearInterval","close","unref","ref","enroll","item","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","active","_onTimeout","clearImmediate","nenc","retried","_normalizeEncoding","normalizeEncoding","text","utf16Text","utf16End","fillLast","utf8FillLast","base64Text","base64End","simpleWrite","simpleEnd","lastNeed","lastTotal","lastChar","utf8CheckByte","byte","utf8CheckExtraBytes","total","utf8CheckIncomplete","afterTransform","ts","_transformState","transforming","writechunk","rs","needTransform","writeencoding","_transform","_flush","done","_this2","err2","_keyStr","chr1","chr2","chr3","enc1","enc2","enc3","enc4","remainingBytes","resultIndex","totalLength","ConvertWorker","NodejsStreamOutputAdapter","accumulate","helper","updateCallback","dataArray","chunkType","_internalType","resultType","_outputType","mimeType","_mimeType","content","transformZipOutput","StreamHelper","internalType","_worker","updateCb","evt","toNodejsStream","binary","createFolders","date","comment","unixPermissions","dosPermissions","dataP","dataIsReady","_tickScheduled","_tickAndRepeat","_tick","nextIndex","propName","STORE","magic","DEFLATE","adler","s1","STR_APPLY_OK","STR_APPLY_UIA_OK","__","buf2binstring","binstring2buf","next_in","avail_in","total_in","next_out","avail_out","total_out","msg","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","LOCAL_FILE_HEADER","CENTRAL_FILE_HEADER","CENTRAL_DIRECTORY_END","ZIP64_CENTRAL_DIRECTORY_LOCATOR","ZIP64_CENTRAL_DIRECTORY_END","DATA_DESCRIPTOR","ArrayReader","StringReader","NodeBufferReader","Uint8ArrayReader","DataReader","byteAt","zero","lastIndexOfSignature","sig","sig0","sig1","sig2","sig3","readAndCheckSignature","readData","checkIndex","newIndex","setIndex","skip","readInt","readString","readDate","dostime","UTC","squaredEuclidean","euclidean","squared","ClusterLeaf","_n","_bitrev","_cstb","core","_initArray","_makeBitReversalTable","_makeCosSinTable","fft1d","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","getSpectrumType","getNucleusFrom2DExperiment","maybeAdd","parsedJcamp","metadata","isFid","isFt","nuc","experiment","toISOString","pulse","spectyp","_ref","agnes","diana","jcampconverter","SD","getMetadata","computeRanges","defaultRangesOptions","nH","thresholdFactor","clean","compile","integralType","parseJcamp","jcampData","jcampString","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","variant","numberOfPoints","step","halfStep","lastStep","previousX","MAX_VALUE","previousY","nextY","frontOutsideSpectra","backOutsideSpectra","currentPoints","main","getEquallySpacedSlot","initialOriginalStep","lastOriginalStep","MIN_VALUE","sumAtMin","sumAtMax","getSlope","getEquallySpacedSmooth","std","SG","sgOptions","windowSize","polynomial","minMaxRatio","broadRatio","maxCriteria","smoothY","realTopDetection","heightFactor","boundaries","derivativeThreshold","yIn","maxDx","minDx","noiseLevel","stddev","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","hasOwn","toStr","gOPD","getOwnPropertyDescriptor","isPlainObject","hasOwnConstructor","hasIsPrototypeOf","setProperty","newValue","getProperty","copyIsArray","deep","sampleFunction","lastIndex","sampleX","sampleY","direction","sign","stop","fnType","sampling","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","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","qr","rdiag","nrm","Rdiag","isFullRank","positiveDefinite","Lrowj","Lrowk","L","Opt","broadLines","maxI","candidates","indexes","fitted","overlap","nextPeak","lastValue","spaces","labelLine","defaultByteLength","dataIsGiven","lastWrittenByte","dvOffset","_data","DataView","_mark","_marks","isLittleEndian","isBigEndian","seek","mark","reset","pushMark","popMark","rewind","ensureAvailable","newLength","newArray","readBoolean","readUint8","getInt8","getUint8","readByte","readBytes","readInt16","getInt16","readUint16","getUint16","getInt32","readUint32","getUint32","readFloat32","getFloat32","readFloat64","getFloat64","readChar","readChars","readUtf8","bString","writeBoolean","writeUint8","setInt8","_updateLastWrittenByte","setUint8","writeByte","writeBytes","writeInt16","setInt16","writeUint16","setUint16","writeInt32","setInt32","writeUint32","setUint32","writeFloat32","setFloat32","writeFloat64","setFloat64","writeChar","writeChars","writeUtf8","newObj","defaults","utf8","ZipObject","generate","NodejsStreamInputAdapter","fileAdd","originalOptions","parent","forceTrailingSlash","parentFolder","folderAdd","isUnicodeString","zipObjectContent","optimizedBinaryString","path","lastSlash","load","search","regexp","newFolder","kids","generateInternalStream","streamFiles","platform","encodeFileName","generateWorker","generateAsync","onUpdate","generateNodeStream","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","EE","_isStdio","didOnEnd","cleanup","instance","Constructor","_classCallCheck","custom","registerImmediate","html","channel","messagePrefix","onGlobalMessage","nextHandle","tasksByHandle","currentlyRunningATask","doc","document","attachTo","handle","runIfPresent","importScripts","postMessageIsAsynchronous","oldOnMessage","onmessage","canUsePostMessage","MessageChannel","port1","port2","createElement","documentElement","script","onreadystatechange","removeChild","appendChild","attachEvent","task","config","localStorage","immediate","INTERNAL","handlers","REJECTED","FULFILLED","PENDING","resolver","outcome","safelyResolveThenable","QueueItem","promise","onFulfilled","onRejected","callFulfilled","otherCallFulfilled","callRejected","otherCallRejected","returnValue","getThen","thenable","called","onError","onSuccess","tryCatch","status","reason","iterable","resolved","allResolver","outValue","race","response","scheduleDrain","Mutation","MutationObserver","WebKitMutationObserver","observer","element","createTextNode","observe","characterData","scriptEl","parentNode","oldQueue","destType","_helper","_dataBinary","internalStream","askUnicodeString","_decompressWorker","nodeStream","_compressWorker","removedMethods","removedFn","compressions","ZipFileWorker","zipFileWorker","entriesCount","fileCompression","zipCompression","compressionName","getCompression","USE_TYPEDARRAY","pako","ARRAY_TYPE","FlateWorker","_pako","_pakoAction","_pakoOptions","_createPako","raw","onData","zlib_deflate","strings","ZStream","Deflate","chunkSize","windowBits","memLevel","strategy","gzip","strm","deflateInit2","header","deflateSetHeader","dictionary","dict","deflateSetDictionary","_dict_set","deflate","deflator","_mode","onEnd","deflateEnd","deflateRaw","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","rank","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","insert","ins_h","hash_shift","hash_mask","deflate_fast","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","hcrc","os","bstate","deflate_huff","deflate_rle","_tr_align","_tr_stored_block","avail","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","inflateSetDictionary","inflate","inflator","next_out_utf8","utf8str","allowBufError","inflateEnd","inflateRaw","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","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","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","signature","decToHex","dec","hex","generateZipParts","streamedContent","streamingEnded","dosTime","dosDate","useCustomEncoding","encodedFileName","utfEncodedFileName","encodedComment","utfEncodedComment","useUTF8ForFileName","useUTF8ForComment","extraFields","unicodePathExtraField","unicodeCommentExtraField","dataInfo","bitflag","isDir","extFileAttr","versionMadeBy","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCFullYear","getUTCMonth","getUTCDate","fileRecord","dirRecord","generateDataDescriptors","bytesWritten","zipComment","zipPlatform","contentBuffer","dirRecords","currentSourceOffset","currentFile","_sources","currentFilePercent","remainingFiles","openedSource","record","closedSource","localDirLength","centralDirLength","dirEnd","generateCentralDirectoryEnd","prepareNextSource","_upstreamEnded","_bindStream","_stream","ZipEntries","checkEntryCRC32","zipEntry","decompressed","checkCRC32","decodeFileName","zipEntries","results","fileNameStr","fileCommentStr","readerFor","ZipEntry","loadOptions","checkSignature","expectedSignature","isSignature","askedIndex","readBlockEndOfCentral","diskNumber","diskWithCentralDirStart","centralDirRecordsOnThisDisk","centralDirRecords","centralDirSize","centralDirOffset","zipCommentLength","decodeParamType","decodeContent","readBlockZip64EndOfCentral","zip64EndOfCentralSize","zip64ExtensibleData","extraFieldId","extraFieldLength","extraFieldValue","extraDataSize","readBlockZip64EndOfCentralLocator","diskWithZip64CentralDirStart","relativeOffsetEndOfZip64CentralDir","disksCount","readLocalFiles","localHeaderOffset","readLocalPart","handleUTF8","processAttributes","readCentralDir","zip64","readCentralPart","readEndOfCentral","endOfCentralDirOffset","expectedEndOfCentralDirOffset","prepareReader","crc32fn","isEncrypted","bitFlag","useUTF8","localExtraFieldsLength","fileNameLength","fileName","compressionMethod","findCompression","extraFieldsLength","fileCommentLength","diskNumberStart","internalFileAttributes","externalFileAttributes","readExtraFields","parseZIP64ExtraField","fileComment","madeBy","extraReader","upath","findExtraFieldUnicodePath","fileNameByteArray","ucomment","findExtraFieldUnicodeComment","commentByteArray","upathField","ucommentField","distanceMatrix","simpleLink","cluster1","cluster2","disFun","completeLink","averageLink","centroidLink","wardLink","disFunc","kind","isDistanceMatrix","dis","fdistance","sdistance","dmin","clustered","diff","indCount","defaultCmp","heapify","heappop","heappush","heappushpop","heapreplace","insort","nlargest","nsmallest","updateItem","_siftdown","_siftup","lastelt","returnitem","_i","_len","_ref1","_results","_results1","_j","elem","los","startpos","newitem","parentpos","childpos","endpos","rightpos","nodes","pushpop","peek","contains","front","has","getOwnPropertyDescriptors","descriptors","formatRegExp","format","objects","noDeprecation","throwDeprecation","traceDeprecation","debugEnviron","debugs","ctx","seen","stylize","stylizeNoColor","colors","showHidden","_extend","customInspect","stylizeWithColor","formatValue","styleType","style","styles","recurseTimes","primitive","simple","formatPrimitive","visibleKeys","hash","arrayToHash","formatError","braces","toUTCString","formatProperty","formatArray","reduce","cur","numLinesEst","reduceToSingleString","ar","pad","NODE_DEBUG","pid","months","timestamp","getHours","getMinutes","getSeconds","getDate","getMonth","prop","origin","kCustomPromisifiedSymbol","callbackifyOnRejected","newReason","promisify","original","promiseResolve","promiseReject","setPrototypeOf","defineProperties","callbackify","callbackified","maybeCb","rej","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","capacity","chooseHighWaterMark","indexOfKey","indexOfInsertion","newCapacity","chooseGrowCapacity","rehash","noRehash","delete","minLoad","maxLoad","containsKey","decrement","containsValue","indexOfValue","ensureCapacity","minCapacity","oldCapacity","oldTable","oldValues","oldState","newTable","newValues","newState","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","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","minValue","quickSelectMedian","rescale","currentMin","currentMax","_options$min","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","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","getNMRPeakThreshold","arrayPointToUnits","doublePoint","unitsToArrayPoint","midPoint","currentArrayPoint","setMinMax","updateFirstLastY","setMin","setMax","yShift","globalShift","updateFirstLastX","currentActiveElement","suppressRange","suppressRanges","zones","zone","getMaxPeak","getSpectraDataY","defvalue","getSpectraDataX","resetMinMax","putParam","getArea","i0","ie","area","updateIntegrals","ArrayUtils","getPointsInWindow","reduceData","xyData","indexOfFrom","indexOfTo","setTotalIntegral","totalIntegralValue","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","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","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","sumObserved","shouldIntegrate","nWidth","functionToUse","peak2Vector","getPeakList","getACS","toIndex","joinCouplings","updateMultiplicity","newRanges","symRatio","maxErrorIter2","symRank","maxError","symRank1","symmetrize","tmpPeaks","peaksComp","tmpMask","delta1","symRank2","symmetrizeChoiseBest","asymmetric","P1","maxFlagged","Jc","validPattern","heights","getNextCombination","numbering","nFlagged","u","jSum","idealPattern","updateSignal","nbPeaks","startX","stopX","integralData","maskPattern","mask2","nmrJs","abstractPattern","ok","lng","avg","avgWidth","middle","heightSum","diffL","diffR","chemicalShift","symFactor","newSumHeights","dxi","norm2","cdcl3","tms","proton","solvent_residual_peak","h2o","acetic_acid","acetone","acetonitrile","benzene","bhtb","chloroform","cyclohexane","dichloromethane","diethyl_ether","diglyme","dimethylacetamide","dimethylformamide","dimethyl_sulfoxide","dioxane","ethanol","ethyl_acetate","ethyl_methyl_ketone","ethylene_glycol","hmpag","methanol","nitromethane","pyridine","silicone_greasei","tetrahydrofuran","toluene","triethylamine","dmso","c6d6","cd3cn","cd3od","d2o","toCheck","checkImpurity","impurity","frequencyCluster","keepPeaks","createRanges","detectSignals","solventImpurities","impurities","impurityRemover","nHi","JAnalyzer","peaksO","computeArea","peakR","peaks1","sumIntegral","remark","signal1D","prevPeak","spectrumIntegral","integralPeaks","integralFactor","spinSystem","fromPrediction","frequencyMHz","noiseFactor","lineWidthPointsG","lineWidthPointsL","gaussianLength","g2pi","withNoise","clusterFake","sumI","frequencies","intensities","currentSize","hamiltonian","evd","eigenvectorMatrix","diagB","realEigenvalues","assignmentMatrix","multLen","tempMat","rhoip","rhoip2","tV","valFreq","insertIn","numFreq","inte","simulate1D","fromXY","brukerFile","brukerSpectra","Brukerconverter","converFolder","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","diagonalError","NEGATIVE_INFINITY","enhanceSymmetry","hits","properties","signalsProperties","shiftX","shiftY","initializeProperties","exist","checkCrossPeaks","completeMissingIfNeeded","toReturn","alignDimensions","signals2D","references","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","$SW_h","isHomoNuclear","getZones","idPrefix","isHomonuclear","getLoGnStdDevNMR","convolutedSpectrum","peaksMC1","matrixPeakFinders","peaksMax1","PeakOptimizer","peakPicking2D"],"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 = 85);\n","'use strict';\n\nvar support = require('./support');\nvar base64 = require('./base64');\nvar nodejsUtils = require('./nodejsUtils');\nvar setImmediate = require('set-immediate-shim');\nvar external = require(\"./external\");\n\n\n/**\n * Convert a string that pass as a \"binary string\": it should represent a byte\n * array but may have > 255 char codes. Be sure to take only the first byte\n * and returns the byte array.\n * @param {String} str the string to transform.\n * @return {Array|Uint8Array} the string in a binary format.\n */\nfunction string2binary(str) {\n var result = null;\n if (support.uint8array) {\n result = new Uint8Array(str.length);\n } else {\n result = new Array(str.length);\n }\n return stringToArrayLike(str, result);\n}\n\n/**\n * Create a new blob with the given content and the given type.\n * @param {String|ArrayBuffer} part the content to put in the blob. DO NOT use\n * an Uint8Array because the stock browser of android 4 won't accept it (it\n * will be silently converted to a string, \"[object Uint8Array]\").\n *\n * Use only ONE part to build the blob to avoid a memory leak in IE11 / Edge:\n * when a large amount of Array is used to create the Blob, the amount of\n * memory consumed is nearly 100 times the original data amount.\n *\n * @param {String} type the mime type of the blob.\n * @return {Blob} the created blob.\n */\nexports.newBlob = function(part, type) {\n exports.checkSupport(\"blob\");\n\n try {\n // Blob constructor\n return new Blob([part], {\n type: type\n });\n }\n catch (e) {\n\n try {\n // deprecated, browser only, old way\n var Builder = self.BlobBuilder || self.WebKitBlobBuilder || self.MozBlobBuilder || self.MSBlobBuilder;\n var builder = new Builder();\n builder.append(part);\n return builder.getBlob(type);\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 * An helper for the function arrayLikeToString.\n * This contains static informations and functions that\n * can be optimized by the browser JIT compiler.\n */\nvar arrayToStringHelper = {\n /**\n * Transform an array of int into a string, chunk by chunk.\n * See the performances notes on arrayLikeToString.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform.\n * @param {String} type the type of the array.\n * @param {Integer} chunk the chunk size.\n * @return {String} the resulting string.\n * @throws Error if the chunk is too big for the stack.\n */\n stringifyByChunk: function(array, type, chunk) {\n var result = [], k = 0, len = array.length;\n // shortcut\n if (len <= chunk) {\n return String.fromCharCode.apply(null, array);\n }\n while (k < len) {\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 return result.join(\"\");\n },\n /**\n * Call String.fromCharCode on every item in the array.\n * This is the naive implementation, which generate A LOT of intermediate string.\n * This should be used when everything else fail.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform.\n * @return {String} the result.\n */\n stringifyByChar: function(array){\n var resultStr = \"\";\n for(var i = 0; i < array.length; i++) {\n resultStr += String.fromCharCode(array[i]);\n }\n return resultStr;\n },\n applyCanBeUsed : {\n /**\n * true if the browser accepts to use String.fromCharCode on Uint8Array\n */\n uint8array : (function () {\n try {\n return support.uint8array && String.fromCharCode.apply(null, new Uint8Array(1)).length === 1;\n } catch (e) {\n return false;\n }\n })(),\n /**\n * true if the browser accepts to use String.fromCharCode on nodejs Buffer.\n */\n nodebuffer : (function () {\n try {\n return support.nodebuffer && String.fromCharCode.apply(null, nodejsUtils.allocBuffer(1)).length === 1;\n } catch (e) {\n return false;\n }\n })()\n }\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 // TODO : we now have workers that split the work. Do we still need that ?\n var chunk = 65536,\n type = exports.getTypeOf(array),\n canUseApply = true;\n if (type === \"uint8array\") {\n canUseApply = arrayToStringHelper.applyCanBeUsed.uint8array;\n } else if (type === \"nodebuffer\") {\n canUseApply = arrayToStringHelper.applyCanBeUsed.nodebuffer;\n }\n\n if (canUseApply) {\n while (chunk > 1) {\n try {\n return arrayToStringHelper.stringifyByChunk(array, type, chunk);\n } catch (e) {\n chunk = Math.floor(chunk / 2);\n }\n }\n }\n\n // no apply or chunk error : slow and painful algorithm\n // default browser on android 4.*\n return arrayToStringHelper.stringifyByChar(array);\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, nodejsUtils.allocBuffer(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 nodejsUtils.newBufferFrom(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 nodejsUtils.newBufferFrom(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 nodejsUtils.newBufferFrom(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 && nodejsUtils.isBuffer(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 platform\");\n }\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 * Defer the call of a function.\n * @param {Function} callback the function to call asynchronously.\n * @param {Array} args the arguments to give to the callback.\n */\nexports.delay = function(callback, args, self) {\n setImmediate(function () {\n callback.apply(self || null, args || []);\n });\n};\n\n/**\n * Extends a prototype with an other, without calling a constructor with\n * side effects. Inspired by nodejs' `utils.inherits`\n * @param {Function} ctor the constructor to augment\n * @param {Function} superCtor the parent constructor to use\n */\nexports.inherits = function (ctor, superCtor) {\n var Obj = function() {};\n Obj.prototype = superCtor.prototype;\n ctor.prototype = new Obj();\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/**\n * Transform arbitrary content into a Promise.\n * @param {String} name a name for the content being processed.\n * @param {Object} inputData the content to process.\n * @param {Boolean} isBinary true if the content is not an unicode string\n * @param {Boolean} isOptimizedBinaryString true if the string content only has one byte per character.\n * @param {Boolean} isBase64 true if the string content is encoded with base64.\n * @return {Promise} a promise in a format usable by JSZip.\n */\nexports.prepareContent = function(name, inputData, isBinary, isOptimizedBinaryString, isBase64) {\n\n // if inputData is already a promise, this flatten it.\n var promise = external.Promise.resolve(inputData).then(function(data) {\n \n \n var isBlob = support.blob && (data instanceof Blob || ['[object File]', '[object Blob]'].indexOf(Object.prototype.toString.call(data)) !== -1);\n\n if (isBlob && typeof FileReader !== \"undefined\") {\n return new external.Promise(function (resolve, reject) {\n var reader = new FileReader();\n\n reader.onload = function(e) {\n resolve(e.target.result);\n };\n reader.onerror = function(e) {\n reject(e.target.error);\n };\n reader.readAsArrayBuffer(data);\n });\n } else {\n return data;\n }\n });\n\n return promise.then(function(data) {\n var dataType = exports.getTypeOf(data);\n\n if (!dataType) {\n return external.Promise.reject(\n new Error(\"Can't read the data of '\" + name + \"'. Is it \" +\n \"in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?\")\n );\n }\n // special case : it's way easier to work with Uint8Array than with ArrayBuffer\n if (dataType === \"arraybuffer\") {\n data = exports.transformTo(\"uint8array\", data);\n } else if (dataType === \"string\") {\n if (isBase64) {\n data = base64.decode(data);\n }\n else if (isBinary) {\n // optimizedBinaryString === true means that the file has already been filtered with a 0xFF mask\n if (isOptimizedBinaryString !== true) {\n // this is a string, not in a base64 format.\n // Be sure that this is a correct \"binary string\"\n data = string2binary(data);\n }\n }\n }\n return data;\n });\n};\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';\n\n/**\n * A worker that does nothing but passing chunks to the next one. This is like\n * a nodejs stream but with some differences. On the good side :\n * - it works on IE 6-9 without any issue / polyfill\n * - it weights less than the full dependencies bundled with browserify\n * - it forwards errors (no need to declare an error handler EVERYWHERE)\n *\n * A chunk is an object with 2 attributes : `meta` and `data`. The former is an\n * object containing anything (`percent` for example), see each worker for more\n * details. The latter is the real data (String, Uint8Array, etc).\n *\n * @constructor\n * @param {String} name the name of the stream (mainly used for debugging purposes)\n */\nfunction GenericWorker(name) {\n // the name of the worker\n this.name = name || \"default\";\n // an object containing metadata about the workers chain\n this.streamInfo = {};\n // an error which happened when the worker was paused\n this.generatedError = null;\n // an object containing metadata to be merged by this worker into the general metadata\n this.extraStreamInfo = {};\n // true if the stream is paused (and should not do anything), false otherwise\n this.isPaused = true;\n // true if the stream is finished (and should not do anything), false otherwise\n this.isFinished = false;\n // true if the stream is locked to prevent further structure updates (pipe), false otherwise\n this.isLocked = false;\n // the event listeners\n this._listeners = {\n 'data':[],\n 'end':[],\n 'error':[]\n };\n // the previous worker, if any\n this.previous = null;\n}\n\nGenericWorker.prototype = {\n /**\n * Push a chunk to the next workers.\n * @param {Object} chunk the chunk to push\n */\n push : function (chunk) {\n this.emit(\"data\", chunk);\n },\n /**\n * End the stream.\n * @return {Boolean} true if this call ended the worker, false otherwise.\n */\n end : function () {\n if (this.isFinished) {\n return false;\n }\n\n this.flush();\n try {\n this.emit(\"end\");\n this.cleanUp();\n this.isFinished = true;\n } catch (e) {\n this.emit(\"error\", e);\n }\n return true;\n },\n /**\n * End the stream with an error.\n * @param {Error} e the error which caused the premature end.\n * @return {Boolean} true if this call ended the worker with an error, false otherwise.\n */\n error : function (e) {\n if (this.isFinished) {\n return false;\n }\n\n if(this.isPaused) {\n this.generatedError = e;\n } else {\n this.isFinished = true;\n\n this.emit(\"error\", e);\n\n // in the workers chain exploded in the middle of the chain,\n // the error event will go downward but we also need to notify\n // workers upward that there has been an error.\n if(this.previous) {\n this.previous.error(e);\n }\n\n this.cleanUp();\n }\n return true;\n },\n /**\n * Add a callback on an event.\n * @param {String} name the name of the event (data, end, error)\n * @param {Function} listener the function to call when the event is triggered\n * @return {GenericWorker} the current object for chainability\n */\n on : function (name, listener) {\n this._listeners[name].push(listener);\n return this;\n },\n /**\n * Clean any references when a worker is ending.\n */\n cleanUp : function () {\n this.streamInfo = this.generatedError = this.extraStreamInfo = null;\n this._listeners = [];\n },\n /**\n * Trigger an event. This will call registered callback with the provided arg.\n * @param {String} name the name of the event (data, end, error)\n * @param {Object} arg the argument to call the callback with.\n */\n emit : function (name, arg) {\n if (this._listeners[name]) {\n for(var i = 0; i < this._listeners[name].length; i++) {\n this._listeners[name][i].call(this, arg);\n }\n }\n },\n /**\n * Chain a worker with an other.\n * @param {Worker} next the worker receiving events from the current one.\n * @return {worker} the next worker for chainability\n */\n pipe : function (next) {\n return next.registerPrevious(this);\n },\n /**\n * Same as `pipe` in the other direction.\n * Using an API with `pipe(next)` is very easy.\n * Implementing the API with the point of view of the next one registering\n * a source is easier, see the ZipFileWorker.\n * @param {Worker} previous the previous worker, sending events to this one\n * @return {Worker} the current worker for chainability\n */\n registerPrevious : function (previous) {\n if (this.isLocked) {\n throw new Error(\"The stream '\" + this + \"' has already been used.\");\n }\n\n // sharing the streamInfo...\n this.streamInfo = previous.streamInfo;\n // ... and adding our own bits\n this.mergeStreamInfo();\n this.previous = previous;\n var self = this;\n previous.on('data', function (chunk) {\n self.processChunk(chunk);\n });\n previous.on('end', function () {\n self.end();\n });\n previous.on('error', function (e) {\n self.error(e);\n });\n return this;\n },\n /**\n * Pause the stream so it doesn't send events anymore.\n * @return {Boolean} true if this call paused the worker, false otherwise.\n */\n pause : function () {\n if(this.isPaused || this.isFinished) {\n return false;\n }\n this.isPaused = true;\n\n if(this.previous) {\n this.previous.pause();\n }\n return true;\n },\n /**\n * Resume a paused stream.\n * @return {Boolean} true if this call resumed the worker, false otherwise.\n */\n resume : function () {\n if(!this.isPaused || this.isFinished) {\n return false;\n }\n this.isPaused = false;\n\n // if true, the worker tried to resume but failed\n var withError = false;\n if(this.generatedError) {\n this.error(this.generatedError);\n withError = true;\n }\n if(this.previous) {\n this.previous.resume();\n }\n\n return !withError;\n },\n /**\n * Flush any remaining bytes as the stream is ending.\n */\n flush : function () {},\n /**\n * Process a chunk. This is usually the method overridden.\n * @param {Object} chunk the chunk to process.\n */\n processChunk : function(chunk) {\n this.push(chunk);\n },\n /**\n * Add a key/value to be added in the workers chain streamInfo once activated.\n * @param {String} key the key to use\n * @param {Object} value the associated value\n * @return {Worker} the current worker for chainability\n */\n withStreamInfo : function (key, value) {\n this.extraStreamInfo[key] = value;\n this.mergeStreamInfo();\n return this;\n },\n /**\n * Merge this worker's streamInfo into the chain's streamInfo.\n */\n mergeStreamInfo : function () {\n for(var key in this.extraStreamInfo) {\n if (!this.extraStreamInfo.hasOwnProperty(key)) {\n continue;\n }\n this.streamInfo[key] = this.extraStreamInfo[key];\n }\n },\n\n /**\n * Lock the stream to prevent further updates on the workers chain.\n * After calling this method, all calls to pipe will fail.\n */\n lock: function () {\n if (this.isLocked) {\n throw new Error(\"The stream '\" + this + \"' has already been used.\");\n }\n this.isLocked = true;\n if (this.previous) {\n this.previous.lock();\n }\n },\n\n /**\n *\n * Pretty print the workers chain.\n */\n toString : function () {\n var me = \"Worker \" + this.name;\n if (this.previous) {\n return this.previous + \" -> \" + me;\n } else {\n return me;\n }\n }\n};\n\nmodule.exports = GenericWorker;\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\nexports.base64 = true;\nexports.array = true;\nexports.string = true;\nexports.arraybuffer = typeof ArrayBuffer !== \"undefined\" && typeof Uint8Array !== \"undefined\";\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 = self.BlobBuilder || self.WebKitBlobBuilder || self.MozBlobBuilder || self.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\ntry {\n exports.nodestream = !!require('readable-stream').Readable;\n} catch(e) {\n exports.nodestream = false;\n}\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';\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","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\n/**/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) {\n keys.push(key);\n }return keys;\n};\n/**/\n\nmodule.exports = Duplex;\n\n/**/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/**/\n\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\n\nutil.inherits(Duplex, Readable);\n\n{\n // avoid scope creep, the keys array can then be collected\n var keys = objectKeys(Writable.prototype);\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n\n Readable.call(this, options);\n Writable.call(this, options);\n\n if (options && options.readable === false) this.readable = false;\n\n if (options && options.writable === false) this.writable = false;\n\n this.allowHalfOpen = true;\n if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;\n\n this.once('end', onend);\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._writableState.highWaterMark;\n }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n // if we allow half-open state, or if the writable side ended,\n // then we're ok.\n if (this.allowHalfOpen || this._writableState.ended) return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n pna.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});\n\nDuplex.prototype._destroy = function (err, cb) {\n this.push(null);\n this.end();\n\n pna.nextTick(cb, err);\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\nfunction 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\nfunction 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\nfunction 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 = compilePattern(signals[i], options.tolerance);\n }\n return signals;\n}\n\nfunction 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\nmodule.exports = {compilePattern, group, joinCoupling, nmrJ};","/**\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';\n\nvar utils = require('./utils');\nvar support = require('./support');\nvar nodejsUtils = require('./nodejsUtils');\nvar GenericWorker = require('./stream/GenericWorker');\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 nodejsUtils.newBufferFrom(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};\n\n/**\n * A worker to decode utf8 encoded binary chunks into string chunks.\n * @constructor\n */\nfunction Utf8DecodeWorker() {\n GenericWorker.call(this, \"utf-8 decode\");\n // the last bytes if a chunk didn't end with a complete codepoint.\n this.leftOver = null;\n}\nutils.inherits(Utf8DecodeWorker, GenericWorker);\n\n/**\n * @see GenericWorker.processChunk\n */\nUtf8DecodeWorker.prototype.processChunk = function (chunk) {\n\n var data = utils.transformTo(support.uint8array ? \"uint8array\" : \"array\", chunk.data);\n\n // 1st step, re-use what's left of the previous chunk\n if (this.leftOver && this.leftOver.length) {\n if(support.uint8array) {\n var previousData = data;\n data = new Uint8Array(previousData.length + this.leftOver.length);\n data.set(this.leftOver, 0);\n data.set(previousData, this.leftOver.length);\n } else {\n data = this.leftOver.concat(data);\n }\n this.leftOver = null;\n }\n\n var nextBoundary = utf8border(data);\n var usableData = data;\n if (nextBoundary !== data.length) {\n if (support.uint8array) {\n usableData = data.subarray(0, nextBoundary);\n this.leftOver = data.subarray(nextBoundary, data.length);\n } else {\n usableData = data.slice(0, nextBoundary);\n this.leftOver = data.slice(nextBoundary, data.length);\n }\n }\n\n this.push({\n data : exports.utf8decode(usableData),\n meta : chunk.meta\n });\n};\n\n/**\n * @see GenericWorker.flush\n */\nUtf8DecodeWorker.prototype.flush = function () {\n if(this.leftOver && this.leftOver.length) {\n this.push({\n data : exports.utf8decode(this.leftOver),\n meta : {}\n });\n this.leftOver = null;\n }\n};\nexports.Utf8DecodeWorker = Utf8DecodeWorker;\n\n/**\n * A worker to endcode string chunks into utf8 encoded binary chunks.\n * @constructor\n */\nfunction Utf8EncodeWorker() {\n GenericWorker.call(this, \"utf-8 encode\");\n}\nutils.inherits(Utf8EncodeWorker, GenericWorker);\n\n/**\n * @see GenericWorker.processChunk\n */\nUtf8EncodeWorker.prototype.processChunk = function (chunk) {\n this.push({\n data : exports.utf8encode(chunk.data),\n meta : chunk.meta\n });\n};\nexports.Utf8EncodeWorker = Utf8EncodeWorker;\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","const Converter = require('jcampconverter');\nconst { IOBuffer } = require('iobuffer');\nconst JSZip = require('jszip');\n\nconst BINARY = 1;\nconst TEXT = 2;\n\nfunction readZIP(zipFile, options) {\n options = options || {};\n const jsZip = new JSZip();\n\n return jsZip.loadAsync(zipFile, options).then((zip) => {\n let 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 let folders = zip.filter(function (relativePath) {\n if (\n relativePath.endsWith('ser') ||\n relativePath.endsWith('fid') ||\n relativePath.endsWith('1r') ||\n relativePath.endsWith('2rr')\n ) {\n return true;\n }\n return false;\n });\n var spectra = new Array(folders.length);\n\n for (let i = 0; i < folders.length; ++i) {\n var promises = [];\n var name = folders[i].name;\n name = name.substr(0, name.lastIndexOf('/') + 1);\n promises.push(name);\n var currFolder = zip.folder(name);\n var currFiles = currFolder.filter(function (relativePath) {\n return files[relativePath] ? true : false;\n });\n if (name.indexOf('pdata') >= 0) {\n promises.push('acqus');\n promises.push(\n zip.file(name.replace(/pdata\\/[0-9]+\\//, 'acqus')).async('string')\n );\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 promises.push(name);\n if (files[name] === BINARY) {\n promises.push(currFiles[j].async('arraybuffer'));\n } else {\n promises.push(currFiles[j].async('string'));\n }\n }\n spectra[i] = Promise.all(promises).then((result) => {\n let brukerFiles = {};\n for (let i = 1; i < result.length; i += 2) {\n let name = result[i];\n brukerFiles[name] = result[i + 1];\n }\n return { filename: result[0], value: convert(brukerFiles, options) };\n });\n }\n return Promise.all(spectra);\n });\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 add2D(result);\n if (result.profiling) {\n result.profiling.push({\n action: 'Finished countour plot calculation',\n time: new Date() - start\n });\n }\n if (!options.keepSpectra) {\n delete result.spectra;\n }\n }\n\n var spectra = result.spectra;\n if (options.xy) {\n // 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; i < spectra.length; i++) {\n var spectrum = spectra[i];\n if (spectrum.data.length > 0) {\n for (var 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 return result;\n}\n\nfunction convert1D(files, options) {\n var result = parseData(files.procs || '', options);\n var temp = parseData(files.acqus || '', options);\n\n var keys = Object.keys(temp.info);\n for (var i = 0; i < keys.length; i++) {\n var currKey = keys[i];\n if (result.info[currKey] === undefined) {\n result.info[currKey] = temp.info[currKey];\n }\n }\n\n if (files['1r'] || files['1i']) {\n if (files['1r']) {\n setXYSpectrumData(files['1r'], result, '1r', true);\n }\n if (files['1i']) {\n setXYSpectrumData(files['1i'], result, '1i', false);\n }\n } else if (files.fid) {\n setFIDSpectrumData(files.fid, result);\n }\n\n return result;\n}\n\nfunction convert2D(files, options) {\n var sf, swP, offset;\n if (files['2rr']) {\n var result = parseData(files.procs, options);\n var temp = parseData(files.acqus, options);\n\n var keys = Object.keys(temp.info);\n for (var i = 0; i < keys.length; i++) {\n var currKey = keys[i];\n if (result.info[currKey] === undefined) {\n result.info[currKey] = temp.info[currKey];\n }\n }\n\n temp = parseData(files.proc2s, options);\n result.info.nbSubSpectra = temp.info.$SI = parseInt(temp.info.$SI);\n sf = temp.info.$SF = parseFloat(temp.info.$SF);\n swP = temp.info.$SWP = parseFloat(temp.info.$SWP);\n offset = temp.info.$OFFSET = parseFloat(temp.info.$OFFSET);\n } else if (files.ser) {\n result = parseData(files.acqus, options);\n temp = parseData(files.acqu2s, options);\n result.info.nbSubSpectra = temp.info.$SI = parseInt(temp.info.$TD);\n result.info.$SI = parseInt(result.info.$TD);\n // SW_p = temp.info['$SWH'] = parseFloat(temp.info['$SWH']);\n\n swP = temp.info.$SW;\n\n result.info.$SWP = result.info.$SWH;\n result.info.$SF = parseFloat(temp.info.$SFO1);\n result.info.$OFFSET = 0;\n sf = temp.info.$SFO1 = parseFloat(temp.info.$SFO1);\n sf = 1;\n offset = 0;\n result.info.$AXNUC = result.info.$NUC1;\n temp.info.$AXNUC = temp.info.$NUC1;\n }\n\n result.info.firstY = offset;\n result.info.lastY = offset - swP / sf;\n result.info.$BF2 = sf;\n result.info.$SFO1 = sf;\n\n var nbSubSpectra = result.info.nbSubSpectra;\n var pageValue = result.info.firstY;\n var deltaY = (result.info.lastY - result.info.firstY) / (nbSubSpectra - 1);\n\n if (files['2rr']) {\n setXYSpectrumData(files['2rr'], result, '2rr', true);\n } else if (files.ser) {\n setFIDSpectrumData(files.ser, result, 'ser', true);\n }\n\n for (let i = 0; i < nbSubSpectra; i++) {\n pageValue += deltaY;\n result.spectra[i].pageValue = pageValue;\n }\n\n // var dataType = files.ser ? 'TYPE_2DNMR_FID' : 'TYPE_2DNMR_SPECTRUM';\n\n result.info['2D_Y_NUCLEUS'] = temp.info.$AXNUC;\n result.info['2D_X_NUCLEUS'] = result.info.$AXNUC;\n result.info['2D_Y_FRECUENCY'] = sf;\n result.info['2D_Y_OFFSET'] = offset;\n result.info['2D_X_FRECUENCY'] = result.info.$SF;\n result.info['2D_X_OFFSET'] = result.info.$OFFSET;\n\n result.twoD = true;\n\n return result;\n}\n\nfunction setXYSpectrumData(file, spectra, store, real) {\n file = ensureIOBuffer(file);\n var td = (spectra.info.$SI = parseInt(spectra.info.$SI));\n\n var swP = parseFloat(spectra.info.$SWP);\n var sf = parseFloat(spectra.info.$SF);\n var bf = sf;\n\n // var BF = parseFloat(spectra.info[\"$BF1\"]);\n var offset = spectra.shiftOffsetVal || parseFloat(spectra.info.$OFFSET);\n\n spectra.info.observeFrequency = sf;\n spectra.info.$BF1 = bf;\n spectra.info.$SFO1 = sf;\n spectra.info.brukerReference = bf;\n\n var endian = parseInt(spectra.info.$BYTORDP);\n endian = endian ? 0 : 1;\n\n // number of spectras\n var nbSubSpectra = spectra.info.nbSubSpectra ? spectra.info.nbSubSpectra : 1;\n\n if (endian) {\n file.setLittleEndian();\n } else {\n file.setBigEndian();\n }\n\n for (var i = 0; i < nbSubSpectra; i++) {\n var toSave = {\n dataType: 'NMR Spectrum',\n dataTable: '(X++(R..R))',\n nbPoints: td,\n firstX: offset,\n lastX: offset - swP / sf,\n xUnit: 'PPM',\n yUnit: 'Arbitrary',\n data: [new Array(td * 2)], // [{x:new Array(td),y:new Array(td)}],\n isXYdata: true,\n observeFrequency: sf,\n title: spectra.info.TITLE,\n deltaX: -(swP / sf) / (td - 1)\n };\n\n var x = offset;\n var deltaX = toSave.deltaX;\n\n if (real) {\n for (var k = 0; k < td; ++k) {\n toSave.data[0][2 * k] = x;\n toSave.data[0][2 * k + 1] = file.readInt32();\n if (\n toSave.data[0][2 * k + 1] === null ||\n isNaN(toSave.data[0][2 * k + 1])\n ) {\n toSave.data[0][2 * k + 1] = 0;\n }\n x += deltaX;\n }\n } else {\n for (k = td - 1; k >= 0; --k) {\n toSave.data[0][2 * k] = x;\n toSave.data[0][2 * k + 1] = file.readInt32();\n if (\n toSave.data[0][2 * k + 1] === null ||\n isNaN(toSave.data[0][2 * k + 1])\n ) {\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 file = ensureIOBuffer(file);\n var td = (spectra.info.$TD = parseInt(spectra.info.$TD));\n\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 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\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 < td; i++, x = i * DW) {\n y = file.readInt32();\n if (y === null || isNaN(y)) {\n y = 0;\n }\n spectra.spectra[j * 2].data[0][2 * i + 1] = y;\n spectra.spectra[j * 2].data[0][2 * i] = x;\n y = file.readInt32();\n if (y === null || isNaN(y)) {\n y = 0;\n }\n spectra.spectra[j * 2 + 1].data[0][2 * i + 1] = y;\n spectra.spectra[j * 2 + 1].data[0][2 * i] = x;\n }\n\n for (; i < td; i++, x = i * DW) {\n spectra.spectra[j * 2].data[0][2 * i + 1] = 0;\n spectra.spectra[j * 2].data[0][2 * i] = x;\n spectra.spectra[j * 2 + 1].data[0][2 * i + 1] = 0;\n spectra.spectra[j * 2 + 1].data[0][2 * i] = x;\n }\n }\n}\n\n/**\n * Those functions should disappear if add2D becomes accessible in jcampconvert\n * @param spectra\n * @returns {{z: Array, minX: *, maxX: *, minY: *, maxY: *, minZ: *, maxZ: *, noise: number}}\n */\n\nfunction convertTo3DZ(spectra) {\n var noise = 0;\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 for (var j = 0; j < xSize; j++) {\n z[i][j] = spectra[i].data[0][j * 2 + 1];\n if (z[i][j] < minZ) minZ = spectra[i].data[0][j * 2 + 1];\n if (z[i][j] > maxZ) maxZ = spectra[i].data[0][j * 2 + 1];\n if (i !== 0 && j !== 0) {\n noise +=\n 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\nfunction add2D(result) {\n var zData = convertTo3DZ(result.spectra);\n result.contourLines = generateContourLines(zData);\n delete zData.z;\n result.minMax = zData;\n}\n\nfunction generateContourLines(zData) {\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++) {\n // 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 =\n (maxZ - 5 * noise) * Math.exp(level / 2 - nbLevels) + 5 * noise;\n } else {\n lineZValue =\n -(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 =\n povar +\n (lineZValue - povarHeight[0]) / (povarHeight[1] - povarHeight[0]);\n pAy = iSubSpectra;\n pBx = povar;\n pBy =\n iSubSpectra +\n (lineZValue - povarHeight[0]) / (povarHeight[2] - povarHeight[0]);\n lines.push(\n pAx * dx + x0,\n pAy * dy + y0,\n pBx * dx + x0,\n pBy * dy + y0\n );\n }\n if (isOver[3] !== isOver[1] && isOver[3] !== isOver[2]) {\n pAx = povar + 1;\n pAy =\n iSubSpectra +\n 1 -\n (lineZValue - povarHeight[3]) / (povarHeight[1] - povarHeight[3]);\n pBx =\n povar +\n 1 -\n (lineZValue - povarHeight[3]) / (povarHeight[2] - povarHeight[3]);\n pBy = iSubSpectra + 1;\n lines.push(\n pAx * dx + x0,\n pAy * dy + y0,\n pBx * dx + x0,\n pBy * dy + y0\n );\n }\n // test around the diagonal\n if (isOver[1] !== isOver[2]) {\n pAx =\n povar +\n 1 -\n (lineZValue - povarHeight[1]) / (povarHeight[2] - povarHeight[1]);\n pAy =\n iSubSpectra +\n (lineZValue - povarHeight[1]) / (povarHeight[2] - povarHeight[1]);\n if (isOver[1] !== isOver[0]) {\n pBx =\n povar +\n 1 -\n (lineZValue - povarHeight[1]) / (povarHeight[0] - povarHeight[1]);\n pBy = iSubSpectra;\n lines.push(\n pAx * dx + x0,\n pAy * dy + y0,\n pBx * dx + x0,\n pBy * dy + y0\n );\n }\n if (isOver[2] !== isOver[0]) {\n pBx = povar;\n pBy =\n iSubSpectra +\n 1 -\n (lineZValue - povarHeight[2]) / (povarHeight[0] - povarHeight[2]);\n lines.push(\n pAx * dx + x0,\n pAy * dy + y0,\n pBx * dx + x0,\n pBy * dy + y0\n );\n }\n if (isOver[1] !== isOver[3]) {\n pBx = povar + 1;\n pBy =\n iSubSpectra +\n (lineZValue - povarHeight[1]) / (povarHeight[3] - povarHeight[1]);\n lines.push(\n pAx * dx + x0,\n pAy * dy + y0,\n pBx * dx + x0,\n pBy * dy + y0\n );\n }\n if (isOver[2] !== isOver[3]) {\n pBx =\n povar +\n (lineZValue - povarHeight[2]) / (povarHeight[3] - povarHeight[2]);\n pBy = iSubSpectra + 1;\n lines.push(\n pAx * dx + x0,\n pAy * dy + y0,\n pBx * dx + x0,\n pBy * dy + y0\n );\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\nfunction ensureIOBuffer(data) {\n if (data instanceof Array || data instanceof Uint8Array) {\n data = new ArrayBuffer(data);\n }\n if (data instanceof ArrayBuffer) {\n return new IOBuffer(data);\n }\n return data;\n}\n\nmodule.exports = {\n convertZip: readZIP,\n convertFolder: convert\n};\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\n\nfunction isArray(arg) {\n if (Array.isArray) {\n return Array.isArray(arg);\n }\n return objectToString(arg) === '[object Array]';\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = Buffer.isBuffer;\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n","/* global Promise */\n'use strict';\n\n// load the global object first:\n// - it should be better integrated in the system (unhandledRejection in node)\n// - the environment may have a custom Promise implementation (see zone.js)\nvar ES6Promise = null;\nif (typeof Promise !== \"undefined\") {\n ES6Promise = Promise;\n} else {\n ES6Promise = require(\"lie\");\n}\n\n/**\n * Let the user use/change some implementations.\n */\nmodule.exports = {\n Promise: ES6Promise\n};\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\nif (typeof process === 'undefined' ||\n !process.version ||\n process.version.indexOf('v0.') === 0 ||\n process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {\n module.exports = { nextTick: nextTick };\n} else {\n module.exports = process\n}\n\nfunction nextTick(fn, arg1, arg2, arg3) {\n if (typeof fn !== 'function') {\n throw new TypeError('\"callback\" argument must be a function');\n }\n var len = arguments.length;\n var args, i;\n switch (len) {\n case 0:\n case 1:\n return process.nextTick(fn);\n case 2:\n return process.nextTick(function afterTickOne() {\n fn.call(null, arg1);\n });\n case 3:\n return process.nextTick(function afterTickTwo() {\n fn.call(null, arg1, arg2);\n });\n case 4:\n return process.nextTick(function afterTickThree() {\n fn.call(null, arg1, arg2, arg3);\n });\n default:\n args = new Array(len - 1);\n i = 0;\n while (i < args.length) {\n args[i++] = arguments[i];\n }\n return process.nextTick(function afterTick() {\n fn.apply(null, args);\n });\n }\n}\n\n","'use strict';\n\nmodule.exports = {\n /**\n * True if this is running in Nodejs, will be undefined in a browser.\n * In a browser, browserify won't include this file and the whole module\n * will be resolved an empty object.\n */\n isNode : typeof Buffer !== \"undefined\",\n /**\n * Create a new nodejs Buffer from an existing content.\n * @param {Object} data the data to pass to the constructor.\n * @param {String} encoding the encoding to use.\n * @return {Buffer} a new Buffer.\n */\n newBufferFrom: function(data, encoding) {\n if (Buffer.from && Buffer.from !== Uint8Array.from) {\n return Buffer.from(data, encoding);\n } else {\n if (typeof data === \"number\") {\n // Safeguard for old Node.js versions. On newer versions,\n // Buffer.from(number) / Buffer(number, encoding) already throw.\n throw new Error(\"The \\\"data\\\" argument must not be a number\");\n }\n return new Buffer(data, encoding);\n }\n },\n /**\n * Create a new nodejs Buffer with the specified size.\n * @param {Integer} size the size of the buffer.\n * @return {Buffer} a new Buffer.\n */\n allocBuffer: function (size) {\n if (Buffer.alloc) {\n return Buffer.alloc(size);\n } else {\n var buf = new Buffer(size);\n buf.fill(0);\n return buf;\n }\n },\n /**\n * Find out if an object is a Buffer.\n * @param {Object} b the object to test.\n * @return {Boolean} true if the object is a Buffer, false otherwise.\n */\n isBuffer : function(b){\n return Buffer.isBuffer(b);\n },\n\n isStream : function (obj) {\n return obj &&\n typeof obj.on === \"function\" &&\n typeof obj.pause === \"function\" &&\n typeof obj.resume === \"function\";\n }\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","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction $getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return $getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = $getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n var args = [];\n for (var i = 0; i < arguments.length; i++) args.push(arguments[i]);\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n ReflectApply(this.listener, this.target, args);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\n","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\nmodule.exports = Writable;\n\n/* */\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\nvar asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick;\n/**/\n\n/**/\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n\n/**/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/**/\n\n/**/\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = global.Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nutil.inherits(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n var hwm = options.highWaterMark;\n var writableHwm = options.writableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // if _final has been called\n this.finalCalled = false;\n\n // drain event flag.\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function (er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n\n this.bufferedRequest = null;\n this.lastBufferedRequest = null;\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n\n // count buffered requests\n this.bufferedRequestCount = 0;\n\n // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function () {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function (object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function (object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {\n return new Writable(options);\n }\n\n this._writableState = new WritableState(options, this);\n\n // legacy.\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n\n if (typeof options.writev === 'function') this._writev = options.writev;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n this.emit('error', new Error('Cannot pipe, not readable'));\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new Error('write after end');\n // TODO: defer error events consistently everywhere, not just the cb\n stream.emit('error', er);\n pna.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n var valid = true;\n var er = false;\n\n if (chunk === null) {\n er = new TypeError('May not write null values to stream');\n } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n if (er) {\n stream.emit('error', er);\n pna.nextTick(cb, er);\n valid = false;\n }\n return valid;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n\n if (typeof cb !== 'function') cb = nop;\n\n if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n\n return ret;\n};\n\nWritable.prototype.cork = function () {\n var state = this._writableState;\n\n state.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n\n if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._writableState.highWaterMark;\n }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n var len = state.objectMode ? 1 : chunk.length;\n\n state.length += len;\n\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n pna.nextTick(cb, er);\n // this can emit finish, and it will always happen\n // after error\n pna.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n // this can emit finish, but finish must\n // always follow error\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n\n onwriteStateUpdate(state);\n\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state);\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n /**/\n asyncWrite(afterWrite, stream, state, finished, cb);\n /**/\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n\n var count = 0;\n var allBuffers = true;\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n buffer.allBuffers = allBuffers;\n\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n state.pendingcb++;\n state.lastBufferedRequest = null;\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--;\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new Error('_write() is not implemented'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending && !state.finished) endWritable(this, state, cb);\n};\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n if (err) {\n stream.emit('error', err);\n }\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function') {\n state.pendingcb++;\n state.finalCalled = true;\n pna.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n if (need) {\n prefinish(stream, state);\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n }\n }\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) pna.nextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n if (state.corkedRequestsFree) {\n state.corkedRequestsFree.next = corkReq;\n } else {\n state.corkedRequestsFree = corkReq;\n }\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n get: function () {\n if (this._writableState === undefined) {\n return false;\n }\n return this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._writableState.destroyed = value;\n }\n});\n\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n this.end();\n cb(err);\n};","'use strict';\n\nvar external = require(\"./external\");\nvar DataWorker = require('./stream/DataWorker');\nvar DataLengthProbe = require('./stream/DataLengthProbe');\nvar Crc32Probe = require('./stream/Crc32Probe');\nvar DataLengthProbe = require('./stream/DataLengthProbe');\n\n/**\n * Represent a compressed object, with everything needed to decompress it.\n * @constructor\n * @param {number} compressedSize the size of the data compressed.\n * @param {number} uncompressedSize the size of the data after decompression.\n * @param {number} crc32 the crc32 of the decompressed file.\n * @param {object} compression the type of compression, see lib/compressions.js.\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the compressed data.\n */\nfunction CompressedObject(compressedSize, uncompressedSize, crc32, compression, data) {\n this.compressedSize = compressedSize;\n this.uncompressedSize = uncompressedSize;\n this.crc32 = crc32;\n this.compression = compression;\n this.compressedContent = data;\n}\n\nCompressedObject.prototype = {\n /**\n * Create a worker to get the uncompressed content.\n * @return {GenericWorker} the worker.\n */\n getContentWorker : function () {\n var worker = new DataWorker(external.Promise.resolve(this.compressedContent))\n .pipe(this.compression.uncompressWorker())\n .pipe(new DataLengthProbe(\"data_length\"));\n\n var that = this;\n worker.on(\"end\", function () {\n if(this.streamInfo['data_length'] !== that.uncompressedSize) {\n throw new Error(\"Bug : uncompressed data size mismatch\");\n }\n });\n return worker;\n },\n /**\n * Create a worker to get the compressed content.\n * @return {GenericWorker} the worker.\n */\n getCompressedWorker : function () {\n return new DataWorker(external.Promise.resolve(this.compressedContent))\n .withStreamInfo(\"compressedSize\", this.compressedSize)\n .withStreamInfo(\"uncompressedSize\", this.uncompressedSize)\n .withStreamInfo(\"crc32\", this.crc32)\n .withStreamInfo(\"compression\", this.compression)\n ;\n }\n};\n\n/**\n * Chain the given worker with other workers to compress the content with the\n * given compresion.\n * @param {GenericWorker} uncompressedWorker the worker to pipe.\n * @param {Object} compression the compression object.\n * @param {Object} compressionOptions the options to use when compressing.\n * @return {GenericWorker} the new worker compressing the content.\n */\nCompressedObject.createWorkerFrom = function (uncompressedWorker, compression, compressionOptions) {\n return uncompressedWorker\n .pipe(new Crc32Probe())\n .pipe(new DataLengthProbe(\"uncompressedSize\"))\n .pipe(compression.compressWorker(compressionOptions))\n .pipe(new DataLengthProbe(\"compressedSize\"))\n .withStreamInfo(\"compression\", compression);\n};\n\nmodule.exports = CompressedObject;\n","'use strict';\n\nvar utils = require('./utils');\n\n/**\n * The following functions come from pako, from pako/lib/zlib/crc32.js\n * released under the MIT license, see pako https://github.com/nodeca/pako/\n */\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, end = pos + len;\n\n crc = 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// That's all for the pako functions.\n\n/**\n * Compute the crc32 of a string.\n * This is almost the same as the function crc32, but for strings. Using the\n * same function for the two use cases leads to horrible performances.\n * @param {Number} crc the starting value of the crc.\n * @param {String} str the string to use.\n * @param {Number} len the length of the string.\n * @param {Number} pos the starting position for the crc32 computation.\n * @return {Number} the computed crc32.\n */\nfunction crc32str(crc, str, len, pos) {\n var t = crcTable, end = pos + len;\n\n crc = crc ^ (-1);\n\n for (var i = pos; i < end; i++ ) {\n crc = (crc >>> 8) ^ t[(crc ^ str.charCodeAt(i)) & 0xFF];\n }\n\n return (crc ^ (-1)); // >>> 0;\n}\n\nmodule.exports = function crc32wrapper(input, crc) {\n if (typeof input === \"undefined\" || !input.length) {\n return 0;\n }\n\n var isArray = utils.getTypeOf(input) !== \"string\";\n\n if(isArray) {\n return crc32(crc|0, input, input.length, 0);\n } else {\n return crc32str(crc|0, input, input.length, 0);\n }\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\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';\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","'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 floatArray = [];\n for (let i = 0; i < stringArray.length; i++) {\n floatArray.push(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 profiling: false\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 position, endLine, infos;\n\n var result = {};\n result.profiling = options.profiling ? [] : false;\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 (let i = 0; i < ldrs.length; 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 // ex: (X++(Y..Y))\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 if (dataLabel === 'PEAKASSIGNMENTS') {\n if (wantXY) {\n if (dataValue.match(/.*(XYA).*/)) {\n // ex: (XYA)\n parseXYA(spectrum, dataValue);\n }\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 === 'MAXX') {\n spectrum.maxX = parseFloat(dataValue);\n } else if (dataLabel === 'MINX') {\n spectrum.minX = parseFloat(dataValue);\n } else if (dataLabel === 'MAXY') {\n spectrum.maxY = parseFloat(dataValue);\n } else if (dataLabel === 'MINY') {\n spectrum.minY = 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 (!spectrum.shiftOffsetVal) {\n spectrum.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 // spectrum.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 } else if (dataLabel === 'SAMPLEDESCRIPTION') {\n spectrum.sampleDescription = 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 (let i = 0; i < keys.length; i++) {\n var key = keys[i];\n var values = ntuples[key];\n for (let 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 (let i = 0; i < spectra.length; i++) {\n spectrum = spectra[i];\n if (spectrum.data.length > 0) {\n for (let 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 existingGCMSFields = [];\n for (let 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 (let i = 0; i < length; i++) {\n var spectrum = spectra[i];\n chromatogram.times[i] = spectrum.pageValue;\n for (let 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 (spectrum.shiftOffsetVal) {\n var shift = spectrum.firstX - spectrum.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 (let i = 0; i < ySize; i++) {\n z[i] = new Array(xSize);\n var xVector = spectra[i].data[0];\n for (let 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 let i = 0;\n for (; 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 parseXYA(spectrum, value) {\n var removeSymbolRegExp = /(\\(+|\\)+|<+|>+|\\s+)/g;\n\n spectrum.isXYAdata = true;\n var values;\n var currentData = [];\n spectrum.data = [currentData];\n\n var lines = value.split(/,? *,?[;\\r\\n]+ */);\n\n for (let i = 1; i < lines.length; i++) {\n values = lines[i]\n .trim()\n .replace(removeSymbolRegExp, '')\n .split(',');\n currentData.push(parseFloat(values[0]));\n currentData.push(parseFloat(values[1]));\n }\n }\n\n function parsePeakTable(spectrum, value, result) {\n var removeCommentRegExp = /\\$\\$.*/;\n var peakTableSplitRegExp = /[,\\t ]+/;\n\n spectrum.isPeaktable = true;\n var 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 (let i = 1; i < lines.length; i++) {\n values = lines[i]\n .trim()\n .replace(removeCommentRegExp, '')\n .split(peakTableSplitRegExp);\n if (values.length % 2 === 0) {\n for (let j = 0; j < values.length; 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","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 // The naive `low + high >>> 1` could fail for array lengths > 2**31\n // because `>>>` converts its operands to int32. `low + (high - low >>> 1)`\n // works for array lengths <= 2**32-1 which is also Javascript's max array\n // length.\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","/*! https://mths.be/utf8js v3.0.0 by @mathias */\n;(function(root) {\n\n\tvar stringFromCharCode = String.fromCharCode;\n\n\t// Taken from https://mths.be/punycode\n\tfunction ucs2decode(string) {\n\t\tvar output = [];\n\t\tvar counter = 0;\n\t\tvar length = string.length;\n\t\tvar value;\n\t\tvar extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t// Taken from https://mths.be/punycode\n\tfunction ucs2encode(array) {\n\t\tvar length = array.length;\n\t\tvar index = -1;\n\t\tvar value;\n\t\tvar output = '';\n\t\twhile (++index < length) {\n\t\t\tvalue = array[index];\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t}\n\t\treturn output;\n\t}\n\n\tfunction checkScalarValue(codePoint) {\n\t\tif (codePoint >= 0xD800 && codePoint <= 0xDFFF) {\n\t\t\tthrow Error(\n\t\t\t\t'Lone surrogate U+' + codePoint.toString(16).toUpperCase() +\n\t\t\t\t' is not a scalar value'\n\t\t\t);\n\t\t}\n\t}\n\t/*--------------------------------------------------------------------------*/\n\n\tfunction createByte(codePoint, shift) {\n\t\treturn stringFromCharCode(((codePoint >> shift) & 0x3F) | 0x80);\n\t}\n\n\tfunction encodeCodePoint(codePoint) {\n\t\tif ((codePoint & 0xFFFFFF80) == 0) { // 1-byte sequence\n\t\t\treturn stringFromCharCode(codePoint);\n\t\t}\n\t\tvar symbol = '';\n\t\tif ((codePoint & 0xFFFFF800) == 0) { // 2-byte sequence\n\t\t\tsymbol = stringFromCharCode(((codePoint >> 6) & 0x1F) | 0xC0);\n\t\t}\n\t\telse if ((codePoint & 0xFFFF0000) == 0) { // 3-byte sequence\n\t\t\tcheckScalarValue(codePoint);\n\t\t\tsymbol = stringFromCharCode(((codePoint >> 12) & 0x0F) | 0xE0);\n\t\t\tsymbol += createByte(codePoint, 6);\n\t\t}\n\t\telse if ((codePoint & 0xFFE00000) == 0) { // 4-byte sequence\n\t\t\tsymbol = stringFromCharCode(((codePoint >> 18) & 0x07) | 0xF0);\n\t\t\tsymbol += createByte(codePoint, 12);\n\t\t\tsymbol += createByte(codePoint, 6);\n\t\t}\n\t\tsymbol += stringFromCharCode((codePoint & 0x3F) | 0x80);\n\t\treturn symbol;\n\t}\n\n\tfunction utf8encode(string) {\n\t\tvar codePoints = ucs2decode(string);\n\t\tvar length = codePoints.length;\n\t\tvar index = -1;\n\t\tvar codePoint;\n\t\tvar byteString = '';\n\t\twhile (++index < length) {\n\t\t\tcodePoint = codePoints[index];\n\t\t\tbyteString += encodeCodePoint(codePoint);\n\t\t}\n\t\treturn byteString;\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tfunction readContinuationByte() {\n\t\tif (byteIndex >= byteCount) {\n\t\t\tthrow Error('Invalid byte index');\n\t\t}\n\n\t\tvar continuationByte = byteArray[byteIndex] & 0xFF;\n\t\tbyteIndex++;\n\n\t\tif ((continuationByte & 0xC0) == 0x80) {\n\t\t\treturn continuationByte & 0x3F;\n\t\t}\n\n\t\t// If we end up here, it’s not a continuation byte\n\t\tthrow Error('Invalid continuation byte');\n\t}\n\n\tfunction decodeSymbol() {\n\t\tvar byte1;\n\t\tvar byte2;\n\t\tvar byte3;\n\t\tvar byte4;\n\t\tvar codePoint;\n\n\t\tif (byteIndex > byteCount) {\n\t\t\tthrow Error('Invalid byte index');\n\t\t}\n\n\t\tif (byteIndex == byteCount) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Read first byte\n\t\tbyte1 = byteArray[byteIndex] & 0xFF;\n\t\tbyteIndex++;\n\n\t\t// 1-byte sequence (no continuation bytes)\n\t\tif ((byte1 & 0x80) == 0) {\n\t\t\treturn byte1;\n\t\t}\n\n\t\t// 2-byte sequence\n\t\tif ((byte1 & 0xE0) == 0xC0) {\n\t\t\tbyte2 = readContinuationByte();\n\t\t\tcodePoint = ((byte1 & 0x1F) << 6) | byte2;\n\t\t\tif (codePoint >= 0x80) {\n\t\t\t\treturn codePoint;\n\t\t\t} else {\n\t\t\t\tthrow Error('Invalid continuation byte');\n\t\t\t}\n\t\t}\n\n\t\t// 3-byte sequence (may include unpaired surrogates)\n\t\tif ((byte1 & 0xF0) == 0xE0) {\n\t\t\tbyte2 = readContinuationByte();\n\t\t\tbyte3 = readContinuationByte();\n\t\t\tcodePoint = ((byte1 & 0x0F) << 12) | (byte2 << 6) | byte3;\n\t\t\tif (codePoint >= 0x0800) {\n\t\t\t\tcheckScalarValue(codePoint);\n\t\t\t\treturn codePoint;\n\t\t\t} else {\n\t\t\t\tthrow Error('Invalid continuation byte');\n\t\t\t}\n\t\t}\n\n\t\t// 4-byte sequence\n\t\tif ((byte1 & 0xF8) == 0xF0) {\n\t\t\tbyte2 = readContinuationByte();\n\t\t\tbyte3 = readContinuationByte();\n\t\t\tbyte4 = readContinuationByte();\n\t\t\tcodePoint = ((byte1 & 0x07) << 0x12) | (byte2 << 0x0C) |\n\t\t\t\t(byte3 << 0x06) | byte4;\n\t\t\tif (codePoint >= 0x010000 && codePoint <= 0x10FFFF) {\n\t\t\t\treturn codePoint;\n\t\t\t}\n\t\t}\n\n\t\tthrow Error('Invalid UTF-8 detected');\n\t}\n\n\tvar byteArray;\n\tvar byteCount;\n\tvar byteIndex;\n\tfunction utf8decode(byteString) {\n\t\tbyteArray = ucs2decode(byteString);\n\t\tbyteCount = byteArray.length;\n\t\tbyteIndex = 0;\n\t\tvar codePoints = [];\n\t\tvar tmp;\n\t\twhile ((tmp = decodeSymbol()) !== false) {\n\t\t\tcodePoints.push(tmp);\n\t\t}\n\t\treturn ucs2encode(codePoints);\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\troot.version = '3.0.0';\n\troot.encode = utf8encode;\n\troot.decode = utf8decode;\n\n}(typeof exports === 'undefined' ? this.utf8 = {} : exports));\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\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","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","/*\n * This file is used by module bundlers (browserify/webpack/etc) when\n * including a stream implementation. We use \"readable-stream\" to get a\n * consistent behavior between nodejs versions but bundlers often have a shim\n * for \"stream\". Using this shim greatly improve the compatibility and greatly\n * reduce the final size of the bundle (only one stream implementation, not\n * two).\n */\nmodule.exports = require(\"stream\");\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\nmodule.exports = Readable;\n\n/**/\nvar isArray = require('isarray');\n/**/\n\n/**/\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n\n/**/\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function (emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = global.Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\n\n/**/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/**/\n\n/**/\nvar debugUtil = require('util');\nvar debug = void 0;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function () {};\n}\n/**/\n\nvar BufferList = require('./internal/streams/BufferList');\nvar destroyImpl = require('./internal/streams/destroy');\nvar StringDecoder;\n\nutil.inherits(Readable, Stream);\n\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n var hwm = options.highWaterMark;\n var readableHwm = options.readableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n if (!(this instanceof Readable)) return new Readable(options);\n\n this._readableState = new ReadableState(options, this);\n\n // legacy\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined) {\n return false;\n }\n return this._readableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n }\n});\n\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n this.push(null);\n cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n var state = stream._readableState;\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n if (er) {\n stream.emit('error', er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n stream.emit('error', new Error('stream.push() after EOF'));\n } else {\n state.reading = false;\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n }\n }\n\n return needMoreData(state);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n stream.emit('data', chunk);\n stream.read(0);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n\n if (state.needReadable) emitReadable(stream);\n }\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n return er;\n}\n\n// if it's past the high water mark, we can push in some more.\n// Also, if we have no data yet, we can stand some\n// more bytes. This is to work around cases where hwm=0,\n// such as the repl. Also, if the push() triggered a\n// readable event, and the user called read(largeNumber) such that\n// needReadable was set, then we ought to push more, so that another\n// 'readable' event will be triggered.\nfunction needMoreData(state) {\n return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this._readableState.decoder = new StringDecoder(enc);\n this._readableState.encoding = enc;\n return this;\n};\n\n// Don't raise the hwm > 8MB\nvar MAX_HWM = 0x800000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n }\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n;\n // Don't have enough\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n\n if (n !== 0) state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = true;\n n = 0;\n } else {\n state.length -= n;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n if (state.ended) return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n\n // emit 'readable' now to make sure it gets picked up.\n emitReadable(stream);\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream);\n }\n}\n\nfunction emitReadable_(stream) {\n debug('emit readable');\n stream.emit('readable');\n flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n pna.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n var len = state.length;\n while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;else len = state.length;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n this.emit('error', new Error('_read() is not implemented'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn);\n\n dest.on('unpipe', onunpipe);\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n\n cleanedUp = true;\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n // If the user pushes more data while we're writing to dest then we'll end up\n // in ondata again. However, we only want to increase awaitDrain once because\n // dest will only emit one 'drain' event for the multiple writes.\n // => Introduce a guard on increasing awaitDrain.\n var increasedAwaitDrain = false;\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n increasedAwaitDrain = false;\n var ret = dest.write(chunk);\n if (false === ret && !increasedAwaitDrain) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', src._readableState.awaitDrain);\n src._readableState.awaitDrain++;\n increasedAwaitDrain = true;\n }\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror);\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function () {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = { hasUnpiped: false };\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0) return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n\n if (!dest) dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, unpipeInfo);\n }return this;\n }\n\n // try to find the right one.\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n\n dest.emit('unpipe', this, unpipeInfo);\n\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n\n if (ev === 'data') {\n // Start flowing on next tick if stream isn't explicitly paused\n if (this._readableState.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n var state = this._readableState;\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.emittedReadable = false;\n if (!state.reading) {\n pna.nextTick(nReadingNextTick, this);\n } else if (state.length) {\n emitReadable(this);\n }\n }\n }\n\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n state.flowing = true;\n resume(this, state);\n }\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n pna.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n if (!state.reading) {\n debug('resume read 0');\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n state.awaitDrain = 0;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (false !== this._readableState.flowing) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n while (state.flowing && stream.read() !== null) {}\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n\n stream.on('end', function () {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function (method) {\n return function () {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n\n // proxy certain important events.\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n }\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n this._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._readableState.highWaterMark;\n }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = fromListPartial(n, state.buffer, state.decoder);\n }\n\n return ret;\n}\n\n// Extracts only enough buffered data to satisfy the amount requested.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromListPartial(n, list, hasStrings) {\n var ret;\n if (n < list.head.data.length) {\n // slice is the same for buffers and strings\n ret = list.head.data.slice(0, n);\n list.head.data = list.head.data.slice(n);\n } else if (n === list.head.data.length) {\n // first chunk is a perfect match\n ret = list.shift();\n } else {\n // result spans more than one buffer\n ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);\n }\n return ret;\n}\n\n// Copies a specified amount of characters from the list of buffered data\n// chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBufferString(n, list) {\n var p = list.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\n// Copies a specified amount of bytes from the list of buffered data chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBuffer(n, list) {\n var ret = Buffer.allocUnsafe(n);\n var p = list.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n\n // If we get here before consuming all the bytes, then that is a\n // bug in node. Should never happen.\n if (state.length > 0) throw new Error('\"endReadable()\" called on non-empty stream');\n\n if (!state.endEmitted) {\n state.ended = true;\n pna.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n }\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}","module.exports = require('events').EventEmitter;\n","'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err && (!this._writableState || !this._writableState.errorEmitted)) {\n pna.nextTick(emitErrorNT, this, err);\n }\n return this;\n }\n\n // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n }\n\n // if this is a duplex stream mark the writable part as destroyed as well\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n pna.nextTick(emitErrorNT, _this, err);\n if (_this._writableState) {\n _this._writableState.errorEmitted = true;\n }\n } else if (cb) {\n cb(err);\n }\n });\n\n return this;\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy\n};","var scope = (typeof global !== \"undefined\" && global) ||\n (typeof self !== \"undefined\" && self) ||\n window;\nvar apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) {\n if (timeout) {\n timeout.close();\n }\n};\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n this._clearFn.call(scope, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n clearTimeout(item._idleTimeoutId);\n\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout)\n item._onTimeout();\n }, msecs);\n }\n};\n\n// setimmediate attaches itself to the global object\nrequire(\"setimmediate\");\n// On some exotic environments, it's not clear which object `setimmediate` was\n// able to install onto. Search each possibility in the same order as the\n// `setimmediate` library.\nexports.setImmediate = (typeof self !== \"undefined\" && self.setImmediate) ||\n (typeof global !== \"undefined\" && global.setImmediate) ||\n (this && this.setImmediate);\nexports.clearImmediate = (typeof self !== \"undefined\" && self.clearImmediate) ||\n (typeof global !== \"undefined\" && global.clearImmediate) ||\n (this && this.clearImmediate);\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\n/**/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\n\nvar Duplex = require('./_stream_duplex');\n\n/**/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/**/\n\nutil.inherits(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n\n var cb = ts.writecb;\n\n if (!cb) {\n return this.emit('error', new Error('write callback called multiple times'));\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n\n cb(er);\n\n var rs = this._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n\n Duplex.call(this, options);\n\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n };\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n\n if (typeof options.flush === 'function') this._flush = options.flush;\n }\n\n // When the writable side finishes, then flush out anything remaining.\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function') {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n throw new Error('_transform() is not implemented');\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n var _this2 = this;\n\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n _this2.emit('close');\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data);\n\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0');\n\n if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming');\n\n return stream.push(null);\n}","'use strict';\nvar utils = require('./utils');\nvar support = require('./support');\n// private property\nvar _keyStr = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\n\n// public method for encoding\nexports.encode = function(input) {\n var output = [];\n var chr1, chr2, chr3, enc1, enc2, enc3, enc4;\n var i = 0, len = input.length, remainingBytes = len;\n\n var isArray = utils.getTypeOf(input) !== \"string\";\n while (i < input.length) {\n remainingBytes = len - i;\n\n if (!isArray) {\n chr1 = input.charCodeAt(i++);\n chr2 = i < len ? input.charCodeAt(i++) : 0;\n chr3 = i < len ? input.charCodeAt(i++) : 0;\n } else {\n chr1 = input[i++];\n chr2 = i < len ? input[i++] : 0;\n chr3 = i < len ? input[i++] : 0;\n }\n\n enc1 = chr1 >> 2;\n enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\n enc3 = remainingBytes > 1 ? (((chr2 & 15) << 2) | (chr3 >> 6)) : 64;\n enc4 = remainingBytes > 2 ? (chr3 & 63) : 64;\n\n output.push(_keyStr.charAt(enc1) + _keyStr.charAt(enc2) + _keyStr.charAt(enc3) + _keyStr.charAt(enc4));\n\n }\n\n return output.join(\"\");\n};\n\n// public method for decoding\nexports.decode = function(input) {\n var chr1, chr2, chr3;\n var enc1, enc2, enc3, enc4;\n var i = 0, resultIndex = 0;\n\n var dataUrlPrefix = \"data:\";\n\n if (input.substr(0, dataUrlPrefix.length) === dataUrlPrefix) {\n // This is a common error: people give a data url\n // (data:image/png;base64,iVBOR...) with a {base64: true} and\n // wonders why things don't work.\n // We can detect that the string input looks like a data url but we\n // *can't* be sure it is one: removing everything up to the comma would\n // be too dangerous.\n throw new Error(\"Invalid base64 input, it looks like a data url.\");\n }\n\n input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, \"\");\n\n var totalLength = input.length * 3 / 4;\n if(input.charAt(input.length - 1) === _keyStr.charAt(64)) {\n totalLength--;\n }\n if(input.charAt(input.length - 2) === _keyStr.charAt(64)) {\n totalLength--;\n }\n if (totalLength % 1 !== 0) {\n // totalLength is not an integer, the length does not match a valid\n // base64 content. That can happen if:\n // - the input is not a base64 content\n // - the input is *almost* a base64 content, with a extra chars at the\n // beginning or at the end\n // - the input uses a base64 variant (base64url for example)\n throw new Error(\"Invalid base64 input, bad content length.\");\n }\n var output;\n if (support.uint8array) {\n output = new Uint8Array(totalLength|0);\n } else {\n output = new Array(totalLength|0);\n }\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[resultIndex++] = chr1;\n\n if (enc3 !== 64) {\n output[resultIndex++] = chr2;\n }\n if (enc4 !== 64) {\n output[resultIndex++] = chr3;\n }\n\n }\n\n return output;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar ConvertWorker = require('./ConvertWorker');\nvar GenericWorker = require('./GenericWorker');\nvar base64 = require('../base64');\nvar support = require(\"../support\");\nvar external = require(\"../external\");\n\nvar NodejsStreamOutputAdapter = null;\nif (support.nodestream) {\n try {\n NodejsStreamOutputAdapter = require('../nodejs/NodejsStreamOutputAdapter');\n } catch(e) {}\n}\n\n/**\n * Apply the final transformation of the data. If the user wants a Blob for\n * example, it's easier to work with an U8intArray and finally do the\n * ArrayBuffer/Blob conversion.\n * @param {String} type the name of the final type\n * @param {String|Uint8Array|Buffer} content the content to transform\n * @param {String} mimeType the mime type of the content, if applicable.\n * @return {String|Uint8Array|ArrayBuffer|Buffer|Blob} the content in the right format.\n */\nfunction transformZipOutput(type, content, mimeType) {\n switch(type) {\n case \"blob\" :\n return utils.newBlob(utils.transformTo(\"arraybuffer\", content), mimeType);\n case \"base64\" :\n return base64.encode(content);\n default :\n return utils.transformTo(type, content);\n }\n}\n\n/**\n * Concatenate an array of data of the given type.\n * @param {String} type the type of the data in the given array.\n * @param {Array} dataArray the array containing the data chunks to concatenate\n * @return {String|Uint8Array|Buffer} the concatenated data\n * @throws Error if the asked type is unsupported\n */\nfunction concat (type, dataArray) {\n var i, index = 0, res = null, totalLength = 0;\n for(i = 0; i < dataArray.length; i++) {\n totalLength += dataArray[i].length;\n }\n switch(type) {\n case \"string\":\n return dataArray.join(\"\");\n case \"array\":\n return Array.prototype.concat.apply([], dataArray);\n case \"uint8array\":\n res = new Uint8Array(totalLength);\n for(i = 0; i < dataArray.length; i++) {\n res.set(dataArray[i], index);\n index += dataArray[i].length;\n }\n return res;\n case \"nodebuffer\":\n return Buffer.concat(dataArray);\n default:\n throw new Error(\"concat : unsupported type '\" + type + \"'\");\n }\n}\n\n/**\n * Listen a StreamHelper, accumulate its content and concatenate it into a\n * complete block.\n * @param {StreamHelper} helper the helper to use.\n * @param {Function} updateCallback a callback called on each update. Called\n * with one arg :\n * - the metadata linked to the update received.\n * @return Promise the promise for the accumulation.\n */\nfunction accumulate(helper, updateCallback) {\n return new external.Promise(function (resolve, reject){\n var dataArray = [];\n var chunkType = helper._internalType,\n resultType = helper._outputType,\n mimeType = helper._mimeType;\n helper\n .on('data', function (data, meta) {\n dataArray.push(data);\n if(updateCallback) {\n updateCallback(meta);\n }\n })\n .on('error', function(err) {\n dataArray = [];\n reject(err);\n })\n .on('end', function (){\n try {\n var result = transformZipOutput(resultType, concat(chunkType, dataArray), mimeType);\n resolve(result);\n } catch (e) {\n reject(e);\n }\n dataArray = [];\n })\n .resume();\n });\n}\n\n/**\n * An helper to easily use workers outside of JSZip.\n * @constructor\n * @param {Worker} worker the worker to wrap\n * @param {String} outputType the type of data expected by the use\n * @param {String} mimeType the mime type of the content, if applicable.\n */\nfunction StreamHelper(worker, outputType, mimeType) {\n var internalType = outputType;\n switch(outputType) {\n case \"blob\":\n case \"arraybuffer\":\n internalType = \"uint8array\";\n break;\n case \"base64\":\n internalType = \"string\";\n break;\n }\n\n try {\n // the type used internally\n this._internalType = internalType;\n // the type used to output results\n this._outputType = outputType;\n // the mime type\n this._mimeType = mimeType;\n utils.checkSupport(internalType);\n this._worker = worker.pipe(new ConvertWorker(internalType));\n // the last workers can be rewired without issues but we need to\n // prevent any updates on previous workers.\n worker.lock();\n } catch(e) {\n this._worker = new GenericWorker(\"error\");\n this._worker.error(e);\n }\n}\n\nStreamHelper.prototype = {\n /**\n * Listen a StreamHelper, accumulate its content and concatenate it into a\n * complete block.\n * @param {Function} updateCb the update callback.\n * @return Promise the promise for the accumulation.\n */\n accumulate : function (updateCb) {\n return accumulate(this, updateCb);\n },\n /**\n * Add a listener on an event triggered on a stream.\n * @param {String} evt the name of the event\n * @param {Function} fn the listener\n * @return {StreamHelper} the current helper.\n */\n on : function (evt, fn) {\n var self = this;\n\n if(evt === \"data\") {\n this._worker.on(evt, function (chunk) {\n fn.call(self, chunk.data, chunk.meta);\n });\n } else {\n this._worker.on(evt, function () {\n utils.delay(fn, arguments, self);\n });\n }\n return this;\n },\n /**\n * Resume the flow of chunks.\n * @return {StreamHelper} the current helper.\n */\n resume : function () {\n utils.delay(this._worker.resume, [], this._worker);\n return this;\n },\n /**\n * Pause the flow of chunks.\n * @return {StreamHelper} the current helper.\n */\n pause : function () {\n this._worker.pause();\n return this;\n },\n /**\n * Return a nodejs stream for this helper.\n * @param {Function} updateCb the update callback.\n * @return {NodejsStreamOutputAdapter} the nodejs stream.\n */\n toNodejsStream : function (updateCb) {\n utils.checkSupport(\"nodestream\");\n if (this._outputType !== \"nodebuffer\") {\n // an object stream containing blob/arraybuffer/uint8array/string\n // is strange and I don't know if it would be useful.\n // I you find this comment and have a good usecase, please open a\n // bug report !\n throw new Error(this._outputType + \" is not supported by this method\");\n }\n\n return new NodejsStreamOutputAdapter(this, {\n objectMode : this._outputType !== \"nodebuffer\"\n }, updateCb);\n }\n};\n\n\nmodule.exports = StreamHelper;\n","'use strict';\nexports.base64 = false;\nexports.binary = false;\nexports.dir = false;\nexports.createFolders = true;\nexports.date = null;\nexports.compression = null;\nexports.compressionOptions = null;\nexports.comment = null;\nexports.unixPermissions = null;\nexports.dosPermissions = null;\n","'use strict';\n\nvar utils = require('../utils');\nvar GenericWorker = require('./GenericWorker');\n\n// the size of the generated chunks\n// TODO expose this as a public variable\nvar DEFAULT_BLOCK_SIZE = 16 * 1024;\n\n/**\n * A worker that reads a content and emits chunks.\n * @constructor\n * @param {Promise} dataP the promise of the data to split\n */\nfunction DataWorker(dataP) {\n GenericWorker.call(this, \"DataWorker\");\n var self = this;\n this.dataIsReady = false;\n this.index = 0;\n this.max = 0;\n this.data = null;\n this.type = \"\";\n\n this._tickScheduled = false;\n\n dataP.then(function (data) {\n self.dataIsReady = true;\n self.data = data;\n self.max = data && data.length || 0;\n self.type = utils.getTypeOf(data);\n if(!self.isPaused) {\n self._tickAndRepeat();\n }\n }, function (e) {\n self.error(e);\n });\n}\n\nutils.inherits(DataWorker, GenericWorker);\n\n/**\n * @see GenericWorker.cleanUp\n */\nDataWorker.prototype.cleanUp = function () {\n GenericWorker.prototype.cleanUp.call(this);\n this.data = null;\n};\n\n/**\n * @see GenericWorker.resume\n */\nDataWorker.prototype.resume = function () {\n if(!GenericWorker.prototype.resume.call(this)) {\n return false;\n }\n\n if (!this._tickScheduled && this.dataIsReady) {\n this._tickScheduled = true;\n utils.delay(this._tickAndRepeat, [], this);\n }\n return true;\n};\n\n/**\n * Trigger a tick a schedule an other call to this function.\n */\nDataWorker.prototype._tickAndRepeat = function() {\n this._tickScheduled = false;\n if(this.isPaused || this.isFinished) {\n return;\n }\n this._tick();\n if(!this.isFinished) {\n utils.delay(this._tickAndRepeat, [], this);\n this._tickScheduled = true;\n }\n};\n\n/**\n * Read and push a chunk.\n */\nDataWorker.prototype._tick = function() {\n\n if(this.isPaused || this.isFinished) {\n return false;\n }\n\n var size = DEFAULT_BLOCK_SIZE;\n var data = null, nextIndex = Math.min(this.max, this.index + size);\n if (this.index >= this.max) {\n // EOF\n return this.end();\n } else {\n switch(this.type) {\n case \"string\":\n data = this.data.substring(this.index, nextIndex);\n break;\n case \"uint8array\":\n data = this.data.subarray(this.index, nextIndex);\n break;\n case \"array\":\n case \"nodebuffer\":\n data = this.data.slice(this.index, nextIndex);\n break;\n }\n this.index = nextIndex;\n return this.push({\n data : data,\n meta : {\n percent : this.max ? this.index / this.max * 100 : 0\n }\n });\n }\n};\n\nmodule.exports = DataWorker;\n","'use strict';\n\nvar utils = require('../utils');\nvar GenericWorker = require('./GenericWorker');\n\n/**\n * A worker which calculate the total length of the data flowing through.\n * @constructor\n * @param {String} propName the name used to expose the length\n */\nfunction DataLengthProbe(propName) {\n GenericWorker.call(this, \"DataLengthProbe for \" + propName);\n this.propName = propName;\n this.withStreamInfo(propName, 0);\n}\nutils.inherits(DataLengthProbe, GenericWorker);\n\n/**\n * @see GenericWorker.processChunk\n */\nDataLengthProbe.prototype.processChunk = function (chunk) {\n if(chunk) {\n var length = this.streamInfo[this.propName] || 0;\n this.streamInfo[this.propName] = length + chunk.data.length;\n }\n GenericWorker.prototype.processChunk.call(this, chunk);\n};\nmodule.exports = DataLengthProbe;\n\n","'use strict';\n\nvar GenericWorker = require('./GenericWorker');\nvar crc32 = require('../crc32');\nvar utils = require('../utils');\n\n/**\n * A worker which calculate the crc32 of the data flowing through.\n * @constructor\n */\nfunction Crc32Probe() {\n GenericWorker.call(this, \"Crc32Probe\");\n this.withStreamInfo(\"crc32\", 0);\n}\nutils.inherits(Crc32Probe, GenericWorker);\n\n/**\n * @see GenericWorker.processChunk\n */\nCrc32Probe.prototype.processChunk = function (chunk) {\n this.streamInfo.crc32 = crc32(chunk.data, this.streamInfo.crc32 || 0);\n this.push(chunk);\n};\nmodule.exports = Crc32Probe;\n","'use strict';\n\nvar GenericWorker = require(\"./stream/GenericWorker\");\n\nexports.STORE = {\n magic: \"\\x00\\x00\",\n compressWorker : function (compressionOptions) {\n return new GenericWorker(\"STORE compression\");\n },\n uncompressWorker : function () {\n return new GenericWorker(\"STORE decompression\");\n }\n};\nexports.DEFLATE = require('./flate');\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';\n\nvar utils = require('../utils');\nvar support = require('../support');\nvar ArrayReader = require('./ArrayReader');\nvar StringReader = require('./StringReader');\nvar NodeBufferReader = require('./NodeBufferReader');\nvar Uint8ArrayReader = require('./Uint8ArrayReader');\n\n/**\n * Create a reader adapted to the data.\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data to read.\n * @return {DataReader} the data reader.\n */\nmodule.exports = function (data) {\n var type = utils.getTypeOf(data);\n utils.checkSupport(type);\n if (type === \"string\" && !support.uint8array) {\n return new StringReader(data);\n }\n if (type === \"nodebuffer\") {\n return new NodeBufferReader(data);\n }\n if (support.uint8array) {\n return new Uint8ArrayReader(utils.transformTo(\"uint8array\", data));\n }\n return new ArrayReader(utils.transformTo(\"array\", data));\n};\n","'use strict';\nvar DataReader = require('./DataReader');\nvar utils = require('../utils');\n\nfunction ArrayReader(data) {\n DataReader.call(this, data);\n\tfor(var i = 0; i < this.data.length; i++) {\n\t\tdata[i] = data[i] & 0xFF;\n\t}\n}\nutils.inherits(ArrayReader, 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.readAndCheckSignature\n */\nArrayReader.prototype.readAndCheckSignature = function (sig) {\n var sig0 = sig.charCodeAt(0),\n sig1 = sig.charCodeAt(1),\n sig2 = sig.charCodeAt(2),\n sig3 = sig.charCodeAt(3),\n data = this.readData(4);\n return sig0 === data[0] && sig1 === data[1] && sig2 === data[2] && sig3 === data[3];\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';\nvar utils = require('../utils');\n\nfunction DataReader(data) {\n this.data = data; // type : see implementation\n this.length = data.length;\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 specified 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 * Read the signature (4 bytes) at the current position and compare it with sig.\n * @param {string} sig the expected signature\n * @return {boolean} true if the signature matches, false otherwise.\n */\n readAndCheckSignature: 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(Date.UTC(\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');\nvar utils = require('../utils');\n\nfunction Uint8ArrayReader(data) {\n ArrayReader.call(this, data);\n}\nutils.inherits(Uint8ArrayReader, 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';\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; i= 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 = getNucleusFrom2DExperiment(metadata.experiment);\n }\n\n if (info['$DATE']) {\n metadata.date = new Date(info['$DATE'] * 1000).toISOString();\n }\n return metadata;\n}\n\nmodule.exports = getMetadata;\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\n/**\n * Returns an experiment string based on a pulse sequence\n * @param {string} pulse\n * @return {string}\n */\nmodule.exports = function getSpectrumType(meta = {}, info = {}) {\n if (meta === null) meta = {};\n if (typeof meta === 'string') {\n meta = { pulse: meta };\n }\n let spectyp = (info['$SPECTYP'] || '')\n .replace(/^<(.*)>$/, '$1')\n .toLowerCase();\n\n if (spectyp) return spectyp;\n\n let pulse = meta.pulse;\n if (typeof pulse !== 'string') {\n return '';\n }\n\n pulse = pulse.toLowerCase();\n if (pulse.includes('zg')) {\n return '1d';\n }\n\n if (\n pulse.includes('hsqct') ||\n (pulse.includes('invi') && (pulse.includes('ml') || pulse.includes('di')))\n ) {\n return 'hsqctocsy';\n }\n\n if (pulse.includes('hsqc') || pulse.includes('invi')) {\n return 'hsqc';\n }\n\n if (\n pulse.includes('hmbc') ||\n (pulse.includes('inv4') && pulse.includes('lp'))\n ) {\n return 'hmbc';\n }\n\n if (pulse.includes('cosy')) {\n return 'cosy';\n }\n\n if (pulse.includes('jres')) {\n return 'jres';\n }\n\n if (\n pulse.includes('tocsy') ||\n pulse.includes('mlev') ||\n pulse.includes('dipsi')\n ) {\n return 'tocsy';\n }\n\n if (pulse.includes('noesy')) {\n return 'noesy';\n }\n\n if (pulse.includes('roesy')) {\n return 'roesy';\n }\n\n if (pulse.includes('dept')) {\n return 'dept';\n }\n\n if (pulse.includes('jmod') || pulse.includes('apt')) {\n return 'aptjmod';\n }\n\n return '';\n};\n","function getNucleusFrom2DExperiment(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\nmodule.exports = getNucleusFrom2DExperiment;\n","(function(){function a(d){for(var e=0,f=d.length-1,g=void 0,h=void 0,i=void 0,j=c(e,f);!0;){if(f<=e)return d[j];if(f==e+1)return d[e]>d[f]&&b(d,e,f),d[j];for(g=c(e,f),d[g]>d[f]&&b(d,g,f),d[e]>d[f]&&b(d,e,f),d[g]>d[e]&&b(d,g,e),b(d,g,e+1),h=e+1,i=f;!0;){do h++;while(d[e]>d[h]);do i--;while(d[i]>d[e]);if(i=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 getMetadata = require('./getMetadata');\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 parsedJcamp = jcampconverter.convert(jcampString, {\n keepRecordsRegExp: /.*/,\n withoutXY: true\n });\n\n let metadata = getMetadata(parsedJcamp);\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 = require('./getNucleusFrom2DExperiment');\n\nexports.getMetadata = require('./getMetadata');\n\nexports.getSpectrumType = getSpectrumType;\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 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.0,\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