{"version":3,"file":"xrd-analysis.js","sources":["../node_modules/common-spectrum/src/jsgraph/addStyle.js","../node_modules/common-spectrum/src/jsgraph/colors.js","../node_modules/common-spectrum/src/jsgraph/getJSGraph.js","../node_modules/common-spectrum/src/jsgraph/getNormalizationAnnotations.js","../node_modules/common-spectrum/src/reactPlot/getReactPlotJSON.js","../node_modules/common-spectrum/src/util/appendDistinctParameter.js","../node_modules/common-spectrum/src/util/appendDistinctValue.js","../node_modules/common-spectrum/src/AnalysesManager.js","../node_modules/is-any-array/src/index.js","../node_modules/ml-array-max/lib-es6/index.js","../node_modules/ml-array-min/lib-es6/index.js","../node_modules/median-quickselect/lib/median-quickselect.min.js","../node_modules/ml-array-median/lib-es6/index.js","../node_modules/ml-spectra-processing/src/x/xAdd.js","../node_modules/ml-spectra-processing/src/x/xMultiply.js","../node_modules/ml-spectra-processing/src/x/xDivide.js","../node_modules/ml-spectra-processing/src/x/xIsMonotone.js","../node_modules/d3-array/build/d3-array.js","../node_modules/ml-array-sum/lib-es6/index.js","../node_modules/ml-spectra-processing/src/x/xSubtract.js","../node_modules/assign-symbols/index.js","../node_modules/assign-deep/index.js","../node_modules/ml-array-rescale/lib-es6/index.js","../node_modules/ml-matrix/src/inspect.js","../node_modules/ml-matrix/src/mathOperations.js","../node_modules/ml-matrix/src/util.js","../node_modules/ml-matrix/src/stat.js","../node_modules/ml-matrix/src/matrix.js","../node_modules/ml-matrix/src/views/base.js","../node_modules/ml-matrix/src/views/transpose.js","../node_modules/ml-matrix/src/wrap/WrapperMatrix2D.js","../node_modules/ml-matrix/src/dc/lu.js","../node_modules/ml-matrix/src/dc/util.js","../node_modules/ml-matrix/src/dc/qr.js","../node_modules/ml-matrix/src/dc/svd.js","../node_modules/ml-matrix/src/decompositions.js","../node_modules/ml-array-normed/lib-es6/index.js","../node_modules/ml-array-sequential-fill/lib-es6/index.js","../node_modules/ml-zones/src/normalize.js","../node_modules/ml-zones/src/invert.js","../node_modules/ml-zones/src/zonesWithPoints.js","../node_modules/ml-array-xy-equally-spaced/src/integral.js","../node_modules/ml-array-xy-equally-spaced/src/equallySpacedSmooth.js","../node_modules/ml-array-xy-equally-spaced/src/equallySpacedSlot.js","../node_modules/ml-array-xy-equally-spaced/src/index.js","../node_modules/ml-array-xy-filter-x/src/getZones.js","../node_modules/ml-array-xy-filter-x/src/index.js","../node_modules/ml-regression-base/node_modules/is-any-array/src/index.js","../node_modules/ml-regression-base/src/maybeToPrecision.js","../node_modules/ml-regression-base/src/checkArrayLength.js","../node_modules/ml-regression-base/src/index.js","../node_modules/ml-regression-polynomial/src/index.js","../node_modules/ml-baseline-correction-regression/src/index.js","../node_modules/ml-pad-array/src/index.js","../node_modules/ml-savitzky-golay/src/index.js","../node_modules/ml-stat/array.js","../node_modules/common-spectrum/src/util/getNormalizedSpectrum.js","../node_modules/js-quantities/build/quantities.js","../node_modules/common-spectrum/src/util/convertUnit.js","../node_modules/common-spectrum/src/util/ensureRegexp.js","../node_modules/common-spectrum/src/util/getConvertedVariable.js","../node_modules/common-spectrum/src/util/getXYSpectrum.js","../node_modules/common-spectrum/src/Analysis.js","../node_modules/jcampconverter/src/complexChromatogram.js","../node_modules/jcampconverter/src/convertToFloatArray.js","../node_modules/jcampconverter/src/parse/fastParseXYData.js","../node_modules/jcampconverter/src/parse/parsePeakTable.js","../node_modules/jcampconverter/src/parse/parseXYA.js","../node_modules/jcampconverter/src/2d/convertTo3DZ.js","../node_modules/jcampconverter/src/2d/generateContourLines.js","../node_modules/jcampconverter/src/2d/add2D.js","../node_modules/ml-fft/src/fftlib.js","../node_modules/nmr-processing/src/constants/gyromagneticRatio.js","../node_modules/jcampconverter/src/postProcessingNMR.js","../node_modules/jcampconverter/src/profiling.js","../node_modules/jcampconverter/src/simpleChromatogram.js","../node_modules/jcampconverter/src/postProcessing.js","../node_modules/jcampconverter/src/prepareNtuplesDatatable.js","../node_modules/jcampconverter/src/prepareSpectrum.js","../node_modules/jcampconverter/src/convert.js","../node_modules/common-spectrum/src/from/fromJcamp.js","../node_modules/convert-to-jcamp/src/creatorNtuples.js","../node_modules/convert-to-jcamp/src/fromJSON.js","../node_modules/convert-to-jcamp/src/fromVariables.js","../node_modules/common-spectrum/src/to/toJcamps.js","../node_modules/common-spectrum/src/to/toJcamp.js","../node_modules/common-spectrum/src/index.js","../node_modules/fast-xml-parser/src/util.js","../node_modules/fast-xml-parser/src/node2json.js","../node_modules/fast-xml-parser/src/xmlNode.js","../node_modules/fast-xml-parser/src/xmlstr2xmlnode.js","../node_modules/fast-xml-parser/src/validator.js","../node_modules/fast-xml-parser/src/nimndata.js","../node_modules/fast-xml-parser/src/node2json_str.js","../node_modules/fast-xml-parser/src/json2xml.js","../node_modules/fast-xml-parser/src/parser.js","../node_modules/jszip/dist/jszip.min.js","../src/from/parseBRML.js","../src/from/fromBRML.js","../src/from/parsePowDLLXY.js","../src/from/fromPowDLLXY.js","../src/constants/wavelengths.js"],"sourcesContent":["export function addStyle(serie, spectrum, options = {}) {\n  let { color = '#A9A9A9', opacity = 1, lineWidth = 1 } = options;\n  if (color.match(/#[0-9A-F]{6}$/i)) {\n    color = (color + ((opacity * 255) >> 0).toString(16)).toUpperCase();\n  } else {\n    color = color.replace(/rgb ?\\((.*)\\)/, `rgba($1,${opacity})`);\n  }\n  serie.style = [\n    {\n      name: 'unselected',\n      style: {\n        line: {\n          color,\n          width: lineWidth,\n          dash: 1,\n        },\n      },\n    },\n    {\n      name: 'selected',\n      style: {\n        line: {\n          color,\n          width: lineWidth + 2,\n          dash: 1,\n        },\n      },\n    },\n  ];\n  serie.name = spectrum.label || spectrum.id;\n}\n","export const COLORS = [\n  '#FFB300',\n  '#803E75',\n  '#FF6800',\n  '#A6BDD7',\n  '#C10020',\n  '#CEA262',\n  '#817066',\n  '#007D34',\n  '#F6768E',\n  '#00538A',\n  '#FF7A5C',\n  '#53377A',\n  '#FF8E00',\n  '#B32851',\n  '#F4C800',\n  '#7F180D',\n  '#93AA00',\n  '#593315',\n  '#F13A13',\n  '#232C16',\n];\n","import { addStyle } from './addStyle';\nimport { COLORS } from './colors';\n/**\n * Generate a jsgraph chart format from an array of Analysis\n * @param {Array<Analysis>} analyses\n * @param {object} [options={}]\n * @param {Array} [options.ids] List of spectra ids, by all\n * @param {Array} [options.colors] List of colors\n * @param {Array} [options.opacities=[1]] List of opacities\n * @param {Array} [options.linesWidth=[1]] List of linesWidth\n * @param {object} [options.selector={}]\n * @param {object} [options.normalization]\n */\nexport function getJSGraph(analyses, options = {}) {\n  const {\n    colors = COLORS,\n    opacities = [1],\n    linesWidth = [1],\n    selector,\n    normalization,\n  } = options;\n  let series = [];\n\n  let xLabel = '';\n  let yLabel = '';\n\n  for (let i = 0; i < analyses.length; i++) {\n    const analysis = analyses[i];\n    let serie = {};\n    let currentData = analysis.getNormalizedSpectrum({\n      selector,\n      normalization,\n    });\n    if (!currentData) continue;\n    if (!xLabel) xLabel = currentData.variables.x.label;\n    if (!yLabel) yLabel = currentData.variables.y.label;\n    addStyle(serie, analysis, {\n      color: colors[i % colors.length],\n      opacity: opacities[i % opacities.length],\n      lineWidth: linesWidth[i % linesWidth.length],\n    });\n    serie.data = {\n      x: currentData.variables.x.data,\n      y: currentData.variables.y.data,\n    };\n    series.push(serie);\n  }\n  return {\n    axes: {\n      x: {\n        label: xLabel,\n        unit: '',\n        flipped: false,\n        display: true,\n      },\n      y: {\n        label: yLabel,\n        unit: '',\n        flipped: false,\n        display: true,\n      },\n    },\n    series,\n  };\n}\n","/**\n * Returns a JSGraph annotation that represents the normalization\n * @param {object} [filter={}]\n * @param {object} [filter.exclusions=[]] Array of exclusions zones\n * @param {object} [boundary={y: {min:'0px', max:'2000px'}}] Height of the annotation\n */\n\nexport function getNormalizationAnnotations(\n  filter = {},\n  boundary = { y: { min: '0px', max: '2000px' } },\n) {\n  let { exclusions = [] } = filter;\n\n  let annotations = [];\n  exclusions = exclusions.filter((exclusion) => !exclusion.ignore);\n  annotations = exclusions.map((exclusion) => {\n    let annotation = {\n      type: 'rect',\n      position: [\n        { x: exclusion.from, y: boundary.y.min },\n        { x: exclusion.to, y: boundary.y.max },\n      ],\n      strokeWidth: 0,\n      fillColor: 'rgba(255,255,224,1)',\n    };\n    return annotation;\n  });\n  if (filter.from !== undefined) {\n    annotations.push({\n      type: 'rect',\n      position: [\n        { x: Number.MIN_SAFE_INTEGER, y: boundary.y.min },\n        { x: filter.from, y: boundary.y.max },\n      ],\n      strokeWidth: 0,\n      fillColor: 'rgba(255,255,224,1)',\n    });\n  }\n  if (filter.to !== undefined) {\n    annotations.push({\n      type: 'rect',\n      position: [\n        { x: filter.to, y: boundary.y.min },\n        { x: Number.MAX_SAFE_INTEGER, y: boundary.y.max },\n      ],\n      strokeWidth: 0,\n      fillColor: 'rgba(255,255,224,1)',\n    });\n  }\n  return annotations;\n}\n","/**\n * Parses from {x[], y[]} to [{x,y}]\n * @param {Array<number>} x\n * @param {Array<number>} y\n */\nfunction getData(x, y) {\n  let data = new Array(x.length);\n  for (let i = 0; i < x.length; i++) {\n    data[i] = { x: x[i], y: y[i] };\n  }\n  return data;\n}\n\n/**\n * Generate a jsgraph chart format from an array of Analysis\n * @param {Array<Analysis>} analyses\n * @param {object} query\n * @param {object} [options]\n * @param {object} [options.xAxis]\n * @param {object} [options.yAxis]\n * @param {object} [options.series]\n * @param {object} [options.dimentions]\n */\nexport function getReactPlotJSON(analyses, query, options = {}) {\n  const {\n    xAxis: xAxisOptions = {},\n    yAxis: yAxisOptions = { labelSpace: 40 },\n    series: seriesOptions = { displayMarker: true },\n    dimentions = { width: 550, height: 500 },\n  } = options;\n  let series = [];\n  let meta = [];\n  let xAxis;\n  let yAxis;\n\n  for (let i = 0; i < analyses.length; i++) {\n    const analysis = analyses[i];\n    const spectra = analysis.getXYSpectrum(query);\n    if (!spectra) continue;\n\n    meta.push(spectra.meta);\n\n    xAxis = {\n      id: 'x',\n      label: spectra.variables.x.label,\n      ...xAxisOptions,\n      position: 'bottom',\n    };\n    yAxis = {\n      id: 'y',\n      label: spectra.variables.y.label,\n      ...yAxisOptions,\n      position: 'left',\n    };\n\n    const data = getData(spectra.variables.x.data, spectra.variables.y.data);\n    const serie = {\n      type: 'line',\n      label: spectra.title,\n      data,\n      ...seriesOptions,\n    };\n    series.push(serie);\n  }\n\n  return {\n    series,\n    axes: [xAxis, yAxis],\n    dimentions,\n    meta,\n  };\n}\n","export function appendDistinctParameter(values, key, value) {\n  if (!values[key]) {\n    values[key] = {\n      key,\n      values: [],\n      count: 0,\n    };\n  }\n  if (!values[key].values.includes(value)) {\n    values[key].values.push(value);\n  }\n  values[key].count++;\n}\n","export function appendDistinctValue(values, key) {\n  if (!values[key]) {\n    values[key] = {\n      key,\n      count: 0,\n    };\n  }\n  values[key].count++;\n}\n","import { appendDistinctParameter } from './util/appendDistinctParameter';\nimport { appendDistinctValue } from './util/appendDistinctValue';\n\nexport class AnalysesManager {\n  constructor() {\n    this.analyses = [];\n  }\n\n  addAnalysis(analysis) {\n    let index = this.getAnalysisIndex(analysis.id);\n    if (index === undefined) {\n      this.analyses.push(analysis);\n    } else {\n      this.analyses[index] = analysis;\n    }\n  }\n\n  getAnalyses(options = {}) {\n    const { ids } = options;\n    let analyses = [];\n    for (const analysis of this.analyses) {\n      if (!ids || ids.includes(analysis.id)) {\n        analyses.push(analysis);\n      }\n    }\n    return analyses;\n  }\n\n  getSpectra() {\n    const spectra = [];\n    for (const analysis of this.analyses) {\n      spectra.push(...analysis.spectra);\n    }\n    return spectra;\n  }\n\n  /**\n   * Get an array of objects (key + count) of all the titles\n   */\n  getDistinctTitles() {\n    let values = {};\n    for (let spectrum of this.getSpectra()) {\n      appendDistinctValue(values, spectrum.title);\n    }\n    return Object.keys(values).map((key) => values[key]);\n  }\n\n  /**\n   * Get an array of objects (key + count) of all the units\n   */\n  getDistinctUnits() {\n    let values = {};\n    for (let spectrum of this.getSpectra()) {\n      if (spectrum.variables) {\n        for (let key in spectrum.variables) {\n          appendDistinctValue(\n            values,\n            spectrum.variables[key].units.replace(/\\s+\\[.*/, ''),\n          );\n        }\n      }\n    }\n    return Object.keys(values).map((key) => values[key]);\n  }\n\n  /**\n   * Get an array of objects (key + count) of all the labels\n   */\n  getDistinctLabels() {\n    let values = {};\n    for (let spectrum of this.getSpectra()) {\n      if (spectrum.variables) {\n        for (let key in spectrum.variables) {\n          appendDistinctValue(\n            values,\n            spectrum.variables[key].label.replace(/\\s+\\[.*/, ''),\n          );\n        }\n      }\n    }\n    return Object.keys(values).map((key) => values[key]);\n  }\n\n  /**\n   * Get an array of objects (key + count) of all the dataTypes\n   */\n  getDistinctDataTypes() {\n    let values = {};\n    for (let spectrum of this.getSpectra()) {\n      appendDistinctValue(values, spectrum.dataType);\n    }\n    return Object.keys(values).map((key) => values[key]);\n  }\n\n  /**\n   * Get an array of objects (key + count) of all the meta\n   */\n  getDistinctMeta() {\n    let values = {};\n    for (let spectrum of this.getSpectra()) {\n      if (spectrum.meta) {\n        for (let key in spectrum.meta) {\n          appendDistinctParameter(values, key, spectrum.meta[key]);\n        }\n      }\n    }\n    return Object.keys(values).map((key) => values[key]);\n  }\n\n  removeAllAnalyses() {\n    this.analyses.splice(0);\n  }\n\n  /**\n   * Remove the analysis from the AnalysesManager for the specified id\n   * @param {string} id\n   */\n  removeAnalysis(id) {\n    let index = this.getAnalysisIndex(id);\n    if (index === undefined) return undefined;\n    return this.analyses.splice(index, 1);\n  }\n\n  /**\n   * Returns the index of the analysis in the analyses array\n   * @param {string} id\n   * @returns {number}\n   */\n  getAnalysisIndex(id) {\n    if (!id) return undefined;\n    for (let i = 0; i < this.analyses.length; i++) {\n      let analysis = this.analyses[i];\n      if (analysis.id === id) return i;\n    }\n    return undefined;\n  }\n\n  /**\n   * Checks if the ID of an analysis exists in the AnalysesManager\n   * @param {string} id\n   */\n  includes(id) {\n    return !isNaN(this.getAnalysisIndex(id));\n  }\n}\n","const toString = Object.prototype.toString;\n\nexport default function isAnyArray(object) {\n  return toString.call(object).endsWith('Array]');\n}\n","import isArray from 'is-any-array';\n\nfunction max(input) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (!isArray(input)) {\n    throw new TypeError('input must be an array');\n  }\n\n  if (input.length === 0) {\n    throw new TypeError('input must not be empty');\n  }\n\n  var _options$fromIndex = options.fromIndex,\n      fromIndex = _options$fromIndex === void 0 ? 0 : _options$fromIndex,\n      _options$toIndex = options.toIndex,\n      toIndex = _options$toIndex === void 0 ? input.length : _options$toIndex;\n\n  if (fromIndex < 0 || fromIndex >= input.length || !Number.isInteger(fromIndex)) {\n    throw new Error('fromIndex must be a positive integer smaller than length');\n  }\n\n  if (toIndex <= fromIndex || toIndex > input.length || !Number.isInteger(toIndex)) {\n    throw new Error('toIndex must be an integer greater than fromIndex and at most equal to length');\n  }\n\n  var maxValue = input[fromIndex];\n\n  for (var i = fromIndex + 1; i < toIndex; i++) {\n    if (input[i] > maxValue) maxValue = input[i];\n  }\n\n  return maxValue;\n}\n\nexport default max;\n","import isArray from 'is-any-array';\n\nfunction min(input) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (!isArray(input)) {\n    throw new TypeError('input must be an array');\n  }\n\n  if (input.length === 0) {\n    throw new TypeError('input must not be empty');\n  }\n\n  var _options$fromIndex = options.fromIndex,\n      fromIndex = _options$fromIndex === void 0 ? 0 : _options$fromIndex,\n      _options$toIndex = options.toIndex,\n      toIndex = _options$toIndex === void 0 ? input.length : _options$toIndex;\n\n  if (fromIndex < 0 || fromIndex >= input.length || !Number.isInteger(fromIndex)) {\n    throw new Error('fromIndex must be a positive integer smaller than length');\n  }\n\n  if (toIndex <= fromIndex || toIndex > input.length || !Number.isInteger(toIndex)) {\n    throw new Error('toIndex must be an integer greater than fromIndex and at most equal to length');\n  }\n\n  var minValue = input[fromIndex];\n\n  for (var i = fromIndex + 1; i < toIndex; i++) {\n    if (input[i] < minValue) minValue = input[i];\n  }\n\n  return minValue;\n}\n\nexport default min;\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<h)break;b(d,h,i)}b(d,e,i),i<=j&&(e=h),i>=j&&(f=i-1)}}var b=function b(d,e,f){var _ref;return _ref=[d[f],d[e]],d[e]=_ref[0],d[f]=_ref[1],_ref},c=function c(d,e){return~~((d+e)/2)};'undefined'!=typeof module&&module.exports?module.exports=a:window.median=a})();\n","import isArray from 'is-any-array';\nimport quickSelectMedian from 'median-quickselect';\n\nfunction median(input) {\n  if (!isArray(input)) {\n    throw new TypeError('input must be an array');\n  }\n\n  if (input.length === 0) {\n    throw new TypeError('input must not be empty');\n  }\n\n  return quickSelectMedian(input.slice());\n}\n\nexport default median;\n","/**\n\n/**\n * This function xAdd the first array by the second array or a constant value to each element of the first array\n * @param {Array<Number>} array1 - the array that will be rotated\n * @param {Array|Number} array2\n * @return {Array}\n */\nexport function xAdd(array1, array2) {\n  let isConstant = false;\n  let constant;\n  if (Array.isArray(array2)) {\n    if (array1.length !== array2.length) {\n      throw new Error('sub: size of array1 and array2 must be identical');\n    }\n  } else {\n    isConstant = true;\n    constant = Number(array2);\n  }\n\n  let array3 = new Array(array1.length);\n  if (isConstant) {\n    for (let i = 0; i < array1.length; i++) {\n      array3[i] = array1[i] + constant;\n    }\n  } else {\n    for (let i = 0; i < array1.length; i++) {\n      array3[i] = array1[i] + array2[i];\n    }\n  }\n\n  return array3;\n}\n","/**\n\n/**\n * This function xMultiply the first array by the second array or a constant value to each element of the first array\n * @param {Array} array1 - the array that will be rotated\n * @param {Array|Number} array2\n * @return {Float64Array}\n */\nexport function xMultiply(array1, array2) {\n  let isConstant = false;\n  let constant;\n  if (Array.isArray(array2)) {\n    if (array1.length !== array2.length) {\n      throw new Error('sub: size of array1 and array2 must be identical');\n    }\n  } else {\n    isConstant = true;\n    constant = Number(array2);\n  }\n\n  let array3 = new Float64Array(array1.length);\n  if (isConstant) {\n    for (let i = 0; i < array1.length; i++) {\n      array3[i] = array1[i] * constant;\n    }\n  } else {\n    for (let i = 0; i < array1.length; i++) {\n      array3[i] = array1[i] * array2[i];\n    }\n  }\n\n  return array3;\n}\n","/**\n\n/**\n * This function divide the first array by the second array or a constant value to each element of the first array\n * @param {Array<Number>} array1 - the array that will be rotated\n * @param {Array<Number>|Number} array2\n * @return {Array}\n */\nexport function xDivide(array1, array2) {\n  let isConstant = false;\n  let constant;\n  if (Array.isArray(array2)) {\n    if (array1.length !== array2.length) {\n      throw new Error('sub: size of array1 and array2 must be identical');\n    }\n  } else {\n    isConstant = true;\n    constant = Number(array2);\n  }\n\n  let array3 = new Array(array1.length);\n  if (isConstant) {\n    for (let i = 0; i < array1.length; i++) {\n      array3[i] = array1[i] / constant;\n    }\n  } else {\n    for (let i = 0; i < array1.length; i++) {\n      array3[i] = array1[i] / array2[i];\n    }\n  }\n\n  return array3;\n}\n","/**\n * Returns true if x is monotone\n * @param {Array} array\n * @return {boolean}\n */\nexport function xIsMonotone(array) {\n  if (array.length < 3) return true;\n  if (array[0] < array[1]) {\n    for (let i = 0; i < array.length - 1; i++) {\n      if (array[i] >= array[i + 1]) return false;\n    }\n  } else {\n    for (let i = 0; i < array.length - 1; i++) {\n      if (array[i] <= array[i + 1]) return false;\n    }\n  }\n  return true;\n}\n","(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n  typeof define === 'function' && define.amd ? define(['exports'], factory) :\n  (factory((global.d3_array = {})));\n}(this, function (exports) { 'use strict';\n\n  function ascending(a, b) {\n    return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n  }\n\n  function bisector(compare) {\n    if (compare.length === 1) compare = ascendingComparator(compare);\n    return {\n      left: function(a, x, lo, hi) {\n        if (lo == null) lo = 0;\n        if (hi == null) hi = a.length;\n        while (lo < hi) {\n          var mid = lo + hi >>> 1;\n          if (compare(a[mid], x) < 0) lo = mid + 1;\n          else hi = mid;\n        }\n        return lo;\n      },\n      right: function(a, x, lo, hi) {\n        if (lo == null) lo = 0;\n        if (hi == null) hi = a.length;\n        while (lo < hi) {\n          var mid = lo + hi >>> 1;\n          if (compare(a[mid], x) > 0) hi = mid;\n          else lo = mid + 1;\n        }\n        return lo;\n      }\n    };\n  }\n\n  function ascendingComparator(f) {\n    return function(d, x) {\n      return ascending(f(d), x);\n    };\n  }\n\n  var ascendingBisect = bisector(ascending);\n  var bisectRight = ascendingBisect.right;\n  var bisectLeft = ascendingBisect.left;\n\n  function descending(a, b) {\n    return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n  }\n\n  function number$1(x) {\n    return x === null ? NaN : +x;\n  }\n\n  function variance(array, f) {\n    var n = array.length,\n        m = 0,\n        a,\n        d,\n        s = 0,\n        i = -1,\n        j = 0;\n\n    if (f == null) {\n      while (++i < n) {\n        if (!isNaN(a = number$1(array[i]))) {\n          d = a - m;\n          m += d / ++j;\n          s += d * (a - m);\n        }\n      }\n    }\n\n    else {\n      while (++i < n) {\n        if (!isNaN(a = number$1(f(array[i], i, array)))) {\n          d = a - m;\n          m += d / ++j;\n          s += d * (a - m);\n        }\n      }\n    }\n\n    if (j > 1) return s / (j - 1);\n  }\n\n  function deviation(array, f) {\n    var v = variance(array, f);\n    return v ? Math.sqrt(v) : v;\n  }\n\n  function extent(array, f) {\n    var i = -1,\n        n = array.length,\n        a,\n        b,\n        c;\n\n    if (f == null) {\n      while (++i < n) if ((b = array[i]) != null && b >= b) { a = c = b; break; }\n      while (++i < n) if ((b = array[i]) != null) {\n        if (a > b) a = b;\n        if (c < b) c = b;\n      }\n    }\n\n    else {\n      while (++i < n) if ((b = f(array[i], i, array)) != null && b >= b) { a = c = b; break; }\n      while (++i < n) if ((b = f(array[i], i, array)) != null) {\n        if (a > b) a = b;\n        if (c < b) c = b;\n      }\n    }\n\n    return [a, c];\n  }\n\n  function constant(x) {\n    return function() {\n      return x;\n    };\n  }\n\n  function identity(x) {\n    return x;\n  }\n\n  function range(start, stop, step) {\n    start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n    var i = -1,\n        n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n        range = new Array(n);\n\n    while (++i < n) {\n      range[i] = start + i * step;\n    }\n\n    return range;\n  }\n\n  var e10 = Math.sqrt(50);\n  var e5 = Math.sqrt(10);\n  var e2 = Math.sqrt(2);\n  function ticks(start, stop, count) {\n    var step = tickStep(start, stop, count);\n    return range(\n      Math.ceil(start / step) * step,\n      Math.floor(stop / step) * step + step / 2, // inclusive\n      step\n    );\n  }\n\n  function tickStep(start, stop, count) {\n    var step0 = Math.abs(stop - start) / Math.max(0, count),\n        step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n        error = step0 / step1;\n    if (error >= e10) step1 *= 10;\n    else if (error >= e5) step1 *= 5;\n    else if (error >= e2) step1 *= 2;\n    return stop < start ? -step1 : step1;\n  }\n\n  function sturges(values) {\n    return Math.ceil(Math.log(values.length) / Math.LN2) + 1;\n  }\n\n  function number(x) {\n    return +x;\n  }\n\n  function histogram() {\n    var value = identity,\n        domain = extent,\n        threshold = sturges;\n\n    function histogram(data) {\n      var i,\n          n = data.length,\n          x,\n          values = new Array(n);\n\n      // Coerce values to numbers.\n      for (i = 0; i < n; ++i) {\n        values[i] = +value(data[i], i, data);\n      }\n\n      var xz = domain(values),\n          x0 = +xz[0],\n          x1 = +xz[1],\n          tz = threshold(values, x0, x1);\n\n      // Convert number of thresholds into uniform thresholds.\n      if (!Array.isArray(tz)) tz = ticks(x0, x1, +tz);\n\n      // Coerce thresholds to numbers, ignoring any outside the domain.\n      var m = tz.length;\n      for (i = 0; i < m; ++i) tz[i] = +tz[i];\n      while (tz[0] <= x0) tz.shift(), --m;\n      while (tz[m - 1] >= x1) tz.pop(), --m;\n\n      var bins = new Array(m + 1),\n          bin;\n\n      // Initialize bins.\n      for (i = 0; i <= m; ++i) {\n        bin = bins[i] = [];\n        bin.x0 = i > 0 ? tz[i - 1] : x0;\n        bin.x1 = i < m ? tz[i] : x1;\n      }\n\n      // Assign data to bins by value, ignoring any outside the domain.\n      for (i = 0; i < n; ++i) {\n        x = values[i];\n        if (x0 <= x && x <= x1) {\n          bins[bisectRight(tz, x, 0, m)].push(data[i]);\n        }\n      }\n\n      return bins;\n    }\n\n    histogram.value = function(_) {\n      return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), histogram) : value;\n    };\n\n    histogram.domain = function(_) {\n      return arguments.length ? (domain = typeof _ === \"function\" ? _ : constant([+_[0], +_[1]]), histogram) : domain;\n    };\n\n    histogram.thresholds = function(_) {\n      if (!arguments.length) return threshold;\n      threshold = typeof _ === \"function\" ? _\n          : Array.isArray(_) ? constant(Array.prototype.map.call(_, number))\n          : constant(+_);\n      return histogram;\n    };\n\n    return histogram;\n  }\n\n  function quantile(array, p, f) {\n    if (f == null) f = number$1;\n    if (!(n = array.length)) return;\n    if ((p = +p) <= 0 || n < 2) return +f(array[0], 0, array);\n    if (p >= 1) return +f(array[n - 1], n - 1, array);\n    var n,\n        h = (n - 1) * p,\n        i = Math.floor(h),\n        a = +f(array[i], i, array),\n        b = +f(array[i + 1], i + 1, array);\n    return a + (b - a) * (h - i);\n  }\n\n  function freedmanDiaconis(values, min, max) {\n    values.sort(ascending);\n    return Math.ceil((max - min) / (2 * (quantile(values, 0.75) - quantile(values, 0.25)) * Math.pow(values.length, -1 / 3)));\n  }\n\n  function scott(values, min, max) {\n    return Math.ceil((max - min) / (3.5 * deviation(values) * Math.pow(values.length, -1 / 3)));\n  }\n\n  function max(array, f) {\n    var i = -1,\n        n = array.length,\n        a,\n        b;\n\n    if (f == null) {\n      while (++i < n) if ((b = array[i]) != null && b >= b) { a = b; break; }\n      while (++i < n) if ((b = array[i]) != null && b > a) a = b;\n    }\n\n    else {\n      while (++i < n) if ((b = f(array[i], i, array)) != null && b >= b) { a = b; break; }\n      while (++i < n) if ((b = f(array[i], i, array)) != null && b > a) a = b;\n    }\n\n    return a;\n  }\n\n  function mean(array, f) {\n    var s = 0,\n        n = array.length,\n        a,\n        i = -1,\n        j = n;\n\n    if (f == null) {\n      while (++i < n) if (!isNaN(a = number$1(array[i]))) s += a; else --j;\n    }\n\n    else {\n      while (++i < n) if (!isNaN(a = number$1(f(array[i], i, array)))) s += a; else --j;\n    }\n\n    if (j) return s / j;\n  }\n\n  function median(array, f) {\n    var numbers = [],\n        n = array.length,\n        a,\n        i = -1;\n\n    if (f == null) {\n      while (++i < n) if (!isNaN(a = number$1(array[i]))) numbers.push(a);\n    }\n\n    else {\n      while (++i < n) if (!isNaN(a = number$1(f(array[i], i, array)))) numbers.push(a);\n    }\n\n    return quantile(numbers.sort(ascending), 0.5);\n  }\n\n  function merge(arrays) {\n    var n = arrays.length,\n        m,\n        i = -1,\n        j = 0,\n        merged,\n        array;\n\n    while (++i < n) j += arrays[i].length;\n    merged = new Array(j);\n\n    while (--n >= 0) {\n      array = arrays[n];\n      m = array.length;\n      while (--m >= 0) {\n        merged[--j] = array[m];\n      }\n    }\n\n    return merged;\n  }\n\n  function min(array, f) {\n    var i = -1,\n        n = array.length,\n        a,\n        b;\n\n    if (f == null) {\n      while (++i < n) if ((b = array[i]) != null && b >= b) { a = b; break; }\n      while (++i < n) if ((b = array[i]) != null && a > b) a = b;\n    }\n\n    else {\n      while (++i < n) if ((b = f(array[i], i, array)) != null && b >= b) { a = b; break; }\n      while (++i < n) if ((b = f(array[i], i, array)) != null && a > b) a = b;\n    }\n\n    return a;\n  }\n\n  function pairs(array) {\n    var i = 0, n = array.length - 1, p = array[0], pairs = new Array(n < 0 ? 0 : n);\n    while (i < n) pairs[i] = [p, p = array[++i]];\n    return pairs;\n  }\n\n  function permute(array, indexes) {\n    var i = indexes.length, permutes = new Array(i);\n    while (i--) permutes[i] = array[indexes[i]];\n    return permutes;\n  }\n\n  function scan(array, compare) {\n    if (!(n = array.length)) return;\n    var i = 0,\n        n,\n        j = 0,\n        xi,\n        xj = array[j];\n\n    if (!compare) compare = ascending;\n\n    while (++i < n) if (compare(xi = array[i], xj) < 0 || compare(xj, xj) !== 0) xj = xi, j = i;\n\n    if (compare(xj, xj) === 0) return j;\n  }\n\n  function shuffle(array, i0, i1) {\n    var m = (i1 == null ? array.length : i1) - (i0 = i0 == null ? 0 : +i0),\n        t,\n        i;\n\n    while (m) {\n      i = Math.random() * m-- | 0;\n      t = array[m + i0];\n      array[m + i0] = array[i + i0];\n      array[i + i0] = t;\n    }\n\n    return array;\n  }\n\n  function sum(array, f) {\n    var s = 0,\n        n = array.length,\n        a,\n        i = -1;\n\n    if (f == null) {\n      while (++i < n) if (a = +array[i]) s += a; // Note: zero and null are equivalent.\n    }\n\n    else {\n      while (++i < n) if (a = +f(array[i], i, array)) s += a;\n    }\n\n    return s;\n  }\n\n  function transpose(matrix) {\n    if (!(n = matrix.length)) return [];\n    for (var i = -1, m = min(matrix, length), transpose = new Array(m); ++i < m;) {\n      for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) {\n        row[j] = matrix[j][i];\n      }\n    }\n    return transpose;\n  }\n\n  function length(d) {\n    return d.length;\n  }\n\n  function zip() {\n    return transpose(arguments);\n  }\n\n  var version = \"0.7.1\";\n\n  exports.version = version;\n  exports.bisect = bisectRight;\n  exports.bisectRight = bisectRight;\n  exports.bisectLeft = bisectLeft;\n  exports.ascending = ascending;\n  exports.bisector = bisector;\n  exports.descending = descending;\n  exports.deviation = deviation;\n  exports.extent = extent;\n  exports.histogram = histogram;\n  exports.thresholdFreedmanDiaconis = freedmanDiaconis;\n  exports.thresholdScott = scott;\n  exports.thresholdSturges = sturges;\n  exports.max = max;\n  exports.mean = mean;\n  exports.median = median;\n  exports.merge = merge;\n  exports.min = min;\n  exports.pairs = pairs;\n  exports.permute = permute;\n  exports.quantile = quantile;\n  exports.range = range;\n  exports.scan = scan;\n  exports.shuffle = shuffle;\n  exports.sum = sum;\n  exports.ticks = ticks;\n  exports.tickStep = tickStep;\n  exports.transpose = transpose;\n  exports.variance = variance;\n  exports.zip = zip;\n\n}));","import isArray from 'is-any-array';\n\nfunction sum(input) {\n  if (!isArray(input)) {\n    throw new TypeError('input must be an array');\n  }\n\n  if (input.length === 0) {\n    throw new TypeError('input must not be empty');\n  }\n\n  var sumValue = 0;\n\n  for (var i = 0; i < input.length; i++) {\n    sumValue += input[i];\n  }\n\n  return sumValue;\n}\n\nexport default sum;\n","/**\n * This function xSubtract the first array by the second array or a constant value from each element of the first array\n * @param {Array} array1 - the array that will be rotated\n * @param {Array|Number} array2\n * @return {Array}\n */\nexport function xSubtract(array1, array2) {\n  let isConstant = false;\n  let constant;\n  if (Array.isArray(array2)) {\n    if (array1.length !== array2.length) {\n      throw new Error('sub: size of array1 and array2 must be identical');\n    }\n  } else {\n    isConstant = true;\n    constant = Number(array2);\n  }\n\n  let array3 = new Array(array1.length);\n  if (isConstant) {\n    for (let i = 0; i < array1.length; i++) {\n      array3[i] = array1[i] - constant;\n    }\n  } else {\n    for (let i = 0; i < array1.length; i++) {\n      array3[i] = array1[i] - array2[i];\n    }\n  }\n\n  return array3;\n}\n","/*!\n * assign-symbols <https://github.com/jonschlinkert/assign-symbols>\n *\n * Copyright (c) 2015-present, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nconst toString = Object.prototype.toString;\nconst isEnumerable = Object.prototype.propertyIsEnumerable;\nconst getSymbols = Object.getOwnPropertySymbols;\n\nmodule.exports = (target, ...args) => {\n  if (!isObject(target)) {\n    throw new TypeError('expected the first argument to be an object');\n  }\n\n  if (args.length === 0 || typeof Symbol !== 'function' || typeof getSymbols !== 'function') {\n    return target;\n  }\n\n  for (let arg of args) {\n    let names = getSymbols(arg);\n\n    for (let key of names) {\n      if (isEnumerable.call(arg, key)) {\n        target[key] = arg[key];\n      }\n    }\n  }\n  return target;\n};\n\nfunction isObject(val) {\n  return typeof val === 'function' || toString.call(val) === '[object Object]' || Array.isArray(val);\n}\n","/*!\n * assign-deep <https://github.com/jonschlinkert/assign-deep>\n *\n * Copyright (c) 2017-present, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nconst toString = Object.prototype.toString;\nconst assignSymbols = require('assign-symbols');\n\nconst isValidKey = key => {\n  return key !== '__proto__' && key !== 'constructor' && key !== 'prototype';\n};\n\nconst assign = module.exports = (target, ...args) => {\n  let i = 0;\n  if (isPrimitive(target)) target = args[i++];\n  if (!target) target = {};\n  for (; i < args.length; i++) {\n    if (isObject(args[i])) {\n      for (const key of Object.keys(args[i])) {\n        if (isValidKey(key)) {\n          if (isObject(target[key]) && isObject(args[i][key])) {\n            assign(target[key], args[i][key]);\n          } else {\n            target[key] = args[i][key];\n          }\n        }\n      }\n      assignSymbols(target, args[i]);\n    }\n  }\n  return target;\n};\n\nfunction isObject(val) {\n  return typeof val === 'function' || toString.call(val) === '[object Object]';\n}\n\nfunction isPrimitive(val) {\n  return typeof val === 'object' ? val === null : typeof val !== 'function';\n}\n","import isArray from 'is-any-array';\nimport max from 'ml-array-max';\nimport min from 'ml-array-min';\n\nfunction rescale(input) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (!isArray(input)) {\n    throw new TypeError('input must be an array');\n  } else if (input.length === 0) {\n    throw new TypeError('input must not be empty');\n  }\n\n  var output;\n\n  if (options.output !== undefined) {\n    if (!isArray(options.output)) {\n      throw new TypeError('output option must be an array if specified');\n    }\n\n    output = options.output;\n  } else {\n    output = new Array(input.length);\n  }\n\n  var currentMin = min(input);\n  var currentMax = max(input);\n\n  if (currentMin === currentMax) {\n    throw new RangeError('minimum and maximum input values are equal. Cannot rescale a constant array');\n  }\n\n  var _options$min = options.min,\n      minValue = _options$min === void 0 ? options.autoMinMax ? currentMin : 0 : _options$min,\n      _options$max = options.max,\n      maxValue = _options$max === void 0 ? options.autoMinMax ? currentMax : 1 : _options$max;\n\n  if (minValue >= maxValue) {\n    throw new RangeError('min option must be smaller than max option');\n  }\n\n  var factor = (maxValue - minValue) / (currentMax - currentMin);\n\n  for (var i = 0; i < input.length; i++) {\n    output[i] = (input[i] - currentMin) * factor + minValue;\n  }\n\n  return output;\n}\n\nexport default rescale;\n","const indent = ' '.repeat(2);\nconst indentData = ' '.repeat(4);\n\nexport function inspectMatrix() {\n  return inspectMatrixWithOptions(this);\n}\n\nexport function inspectMatrixWithOptions(matrix, options = {}) {\n  const { maxRows = 15, maxColumns = 10, maxNumSize = 8 } = options;\n  return `${matrix.constructor.name} {\n${indent}[\n${indentData}${inspectData(matrix, maxRows, maxColumns, maxNumSize)}\n${indent}]\n${indent}rows: ${matrix.rows}\n${indent}columns: ${matrix.columns}\n}`;\n}\n\nfunction inspectData(matrix, maxRows, maxColumns, maxNumSize) {\n  const { rows, columns } = matrix;\n  const maxI = Math.min(rows, maxRows);\n  const maxJ = Math.min(columns, maxColumns);\n  const result = [];\n  for (let i = 0; i < maxI; i++) {\n    let line = [];\n    for (let j = 0; j < maxJ; j++) {\n      line.push(formatNumber(matrix.get(i, j), maxNumSize));\n    }\n    result.push(`${line.join(' ')}`);\n  }\n  if (maxJ !== columns) {\n    result[result.length - 1] += ` ... ${columns - maxColumns} more columns`;\n  }\n  if (maxI !== rows) {\n    result.push(`... ${rows - maxRows} more rows`);\n  }\n  return result.join(`\\n${indentData}`);\n}\n\nfunction formatNumber(num, maxNumSize) {\n  const numStr = String(num);\n  if (numStr.length <= maxNumSize) {\n    return numStr.padEnd(maxNumSize, ' ');\n  }\n  const precise = num.toPrecision(maxNumSize - 2);\n  if (precise.length <= maxNumSize) {\n    return precise;\n  }\n  const exponential = num.toExponential(maxNumSize - 2);\n  const eIndex = exponential.indexOf('e');\n  const e = exponential.slice(eIndex);\n  return exponential.slice(0, maxNumSize - e.length) + e;\n}\n","export function installMathOperations(AbstractMatrix, Matrix) {\n  AbstractMatrix.prototype.add = function add(value) {\n    if (typeof value === 'number') return this.addS(value);\n    return this.addM(value);\n  };\n\n  AbstractMatrix.prototype.addS = function addS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) + value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.addM = function addM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) + matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.add = function add(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.add(value);\n  };\n\n  AbstractMatrix.prototype.sub = function sub(value) {\n    if (typeof value === 'number') return this.subS(value);\n    return this.subM(value);\n  };\n\n  AbstractMatrix.prototype.subS = function subS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) - value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.subM = function subM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) - matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.sub = function sub(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.sub(value);\n  };\n  AbstractMatrix.prototype.subtract = AbstractMatrix.prototype.sub;\n  AbstractMatrix.prototype.subtractS = AbstractMatrix.prototype.subS;\n  AbstractMatrix.prototype.subtractM = AbstractMatrix.prototype.subM;\n  AbstractMatrix.subtract = AbstractMatrix.sub;\n\n  AbstractMatrix.prototype.mul = function mul(value) {\n    if (typeof value === 'number') return this.mulS(value);\n    return this.mulM(value);\n  };\n\n  AbstractMatrix.prototype.mulS = function mulS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) * value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.mulM = function mulM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) * matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.mul = function mul(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.mul(value);\n  };\n  AbstractMatrix.prototype.multiply = AbstractMatrix.prototype.mul;\n  AbstractMatrix.prototype.multiplyS = AbstractMatrix.prototype.mulS;\n  AbstractMatrix.prototype.multiplyM = AbstractMatrix.prototype.mulM;\n  AbstractMatrix.multiply = AbstractMatrix.mul;\n\n  AbstractMatrix.prototype.div = function div(value) {\n    if (typeof value === 'number') return this.divS(value);\n    return this.divM(value);\n  };\n\n  AbstractMatrix.prototype.divS = function divS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) / value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.divM = function divM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) / matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.div = function div(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.div(value);\n  };\n  AbstractMatrix.prototype.divide = AbstractMatrix.prototype.div;\n  AbstractMatrix.prototype.divideS = AbstractMatrix.prototype.divS;\n  AbstractMatrix.prototype.divideM = AbstractMatrix.prototype.divM;\n  AbstractMatrix.divide = AbstractMatrix.div;\n\n  AbstractMatrix.prototype.mod = function mod(value) {\n    if (typeof value === 'number') return this.modS(value);\n    return this.modM(value);\n  };\n\n  AbstractMatrix.prototype.modS = function modS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) % value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.modM = function modM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) % matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.mod = function mod(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.mod(value);\n  };\n  AbstractMatrix.prototype.modulus = AbstractMatrix.prototype.mod;\n  AbstractMatrix.prototype.modulusS = AbstractMatrix.prototype.modS;\n  AbstractMatrix.prototype.modulusM = AbstractMatrix.prototype.modM;\n  AbstractMatrix.modulus = AbstractMatrix.mod;\n\n  AbstractMatrix.prototype.and = function and(value) {\n    if (typeof value === 'number') return this.andS(value);\n    return this.andM(value);\n  };\n\n  AbstractMatrix.prototype.andS = function andS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) & value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.andM = function andM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) & matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.and = function and(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.and(value);\n  };\n\n  AbstractMatrix.prototype.or = function or(value) {\n    if (typeof value === 'number') return this.orS(value);\n    return this.orM(value);\n  };\n\n  AbstractMatrix.prototype.orS = function orS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) | value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.orM = function orM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) | matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.or = function or(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.or(value);\n  };\n\n  AbstractMatrix.prototype.xor = function xor(value) {\n    if (typeof value === 'number') return this.xorS(value);\n    return this.xorM(value);\n  };\n\n  AbstractMatrix.prototype.xorS = function xorS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) ^ value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.xorM = function xorM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) ^ matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.xor = function xor(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.xor(value);\n  };\n\n  AbstractMatrix.prototype.leftShift = function leftShift(value) {\n    if (typeof value === 'number') return this.leftShiftS(value);\n    return this.leftShiftM(value);\n  };\n\n  AbstractMatrix.prototype.leftShiftS = function leftShiftS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) << value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.leftShiftM = function leftShiftM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) << matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.leftShift = function leftShift(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.leftShift(value);\n  };\n\n  AbstractMatrix.prototype.signPropagatingRightShift = function signPropagatingRightShift(value) {\n    if (typeof value === 'number') return this.signPropagatingRightShiftS(value);\n    return this.signPropagatingRightShiftM(value);\n  };\n\n  AbstractMatrix.prototype.signPropagatingRightShiftS = function signPropagatingRightShiftS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) >> value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.signPropagatingRightShiftM = function signPropagatingRightShiftM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) >> matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.signPropagatingRightShift = function signPropagatingRightShift(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.signPropagatingRightShift(value);\n  };\n\n  AbstractMatrix.prototype.rightShift = function rightShift(value) {\n    if (typeof value === 'number') return this.rightShiftS(value);\n    return this.rightShiftM(value);\n  };\n\n  AbstractMatrix.prototype.rightShiftS = function rightShiftS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) >>> value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.rightShiftM = function rightShiftM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) >>> matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.rightShift = function rightShift(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.rightShift(value);\n  };\n  AbstractMatrix.prototype.zeroFillRightShift = AbstractMatrix.prototype.rightShift;\n  AbstractMatrix.prototype.zeroFillRightShiftS = AbstractMatrix.prototype.rightShiftS;\n  AbstractMatrix.prototype.zeroFillRightShiftM = AbstractMatrix.prototype.rightShiftM;\n  AbstractMatrix.zeroFillRightShift = AbstractMatrix.rightShift;\n\n  AbstractMatrix.prototype.not = function not() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, ~(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.not = function not(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.not();\n  };\n\n  AbstractMatrix.prototype.abs = function abs() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.abs(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.abs = function abs(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.abs();\n  };\n\n  AbstractMatrix.prototype.acos = function acos() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.acos(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.acos = function acos(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.acos();\n  };\n\n  AbstractMatrix.prototype.acosh = function acosh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.acosh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.acosh = function acosh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.acosh();\n  };\n\n  AbstractMatrix.prototype.asin = function asin() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.asin(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.asin = function asin(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.asin();\n  };\n\n  AbstractMatrix.prototype.asinh = function asinh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.asinh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.asinh = function asinh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.asinh();\n  };\n\n  AbstractMatrix.prototype.atan = function atan() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.atan(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.atan = function atan(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.atan();\n  };\n\n  AbstractMatrix.prototype.atanh = function atanh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.atanh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.atanh = function atanh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.atanh();\n  };\n\n  AbstractMatrix.prototype.cbrt = function cbrt() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.cbrt(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.cbrt = function cbrt(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.cbrt();\n  };\n\n  AbstractMatrix.prototype.ceil = function ceil() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.ceil(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.ceil = function ceil(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.ceil();\n  };\n\n  AbstractMatrix.prototype.clz32 = function clz32() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.clz32(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.clz32 = function clz32(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.clz32();\n  };\n\n  AbstractMatrix.prototype.cos = function cos() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.cos(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.cos = function cos(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.cos();\n  };\n\n  AbstractMatrix.prototype.cosh = function cosh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.cosh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.cosh = function cosh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.cosh();\n  };\n\n  AbstractMatrix.prototype.exp = function exp() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.exp(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.exp = function exp(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.exp();\n  };\n\n  AbstractMatrix.prototype.expm1 = function expm1() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.expm1(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.expm1 = function expm1(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.expm1();\n  };\n\n  AbstractMatrix.prototype.floor = function floor() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.floor(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.floor = function floor(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.floor();\n  };\n\n  AbstractMatrix.prototype.fround = function fround() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.fround(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.fround = function fround(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.fround();\n  };\n\n  AbstractMatrix.prototype.log = function log() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.log(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.log = function log(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.log();\n  };\n\n  AbstractMatrix.prototype.log1p = function log1p() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.log1p(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.log1p = function log1p(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.log1p();\n  };\n\n  AbstractMatrix.prototype.log10 = function log10() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.log10(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.log10 = function log10(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.log10();\n  };\n\n  AbstractMatrix.prototype.log2 = function log2() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.log2(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.log2 = function log2(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.log2();\n  };\n\n  AbstractMatrix.prototype.round = function round() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.round(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.round = function round(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.round();\n  };\n\n  AbstractMatrix.prototype.sign = function sign() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.sign(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.sign = function sign(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.sign();\n  };\n\n  AbstractMatrix.prototype.sin = function sin() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.sin(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.sin = function sin(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.sin();\n  };\n\n  AbstractMatrix.prototype.sinh = function sinh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.sinh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.sinh = function sinh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.sinh();\n  };\n\n  AbstractMatrix.prototype.sqrt = function sqrt() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.sqrt(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.sqrt = function sqrt(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.sqrt();\n  };\n\n  AbstractMatrix.prototype.tan = function tan() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.tan(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.tan = function tan(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.tan();\n  };\n\n  AbstractMatrix.prototype.tanh = function tanh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.tanh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.tanh = function tanh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.tanh();\n  };\n\n  AbstractMatrix.prototype.trunc = function trunc() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.trunc(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.trunc = function trunc(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.trunc();\n  };\n\n  AbstractMatrix.pow = function pow(matrix, arg0) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.pow(arg0);\n  };\n\n  AbstractMatrix.prototype.pow = function pow(value) {\n    if (typeof value === 'number') return this.powS(value);\n    return this.powM(value);\n  };\n\n  AbstractMatrix.prototype.powS = function powS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.pow(this.get(i, j), value));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.powM = function powM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.pow(this.get(i, j), matrix.get(i, j)));\n      }\n    }\n    return this;\n  };\n}\n","/**\n * @private\n * Check that a row index is not out of bounds\n * @param {Matrix} matrix\n * @param {number} index\n * @param {boolean} [outer]\n */\nexport function checkRowIndex(matrix, index, outer) {\n  let max = outer ? matrix.rows : matrix.rows - 1;\n  if (index < 0 || index > max) {\n    throw new RangeError('Row index out of range');\n  }\n}\n\n/**\n * @private\n * Check that a column index is not out of bounds\n * @param {Matrix} matrix\n * @param {number} index\n * @param {boolean} [outer]\n */\nexport function checkColumnIndex(matrix, index, outer) {\n  let max = outer ? matrix.columns : matrix.columns - 1;\n  if (index < 0 || index > max) {\n    throw new RangeError('Column index out of range');\n  }\n}\n\n/**\n * @private\n * Check that the provided vector is an array with the right length\n * @param {Matrix} matrix\n * @param {Array|Matrix} vector\n * @return {Array}\n * @throws {RangeError}\n */\nexport function checkRowVector(matrix, vector) {\n  if (vector.to1DArray) {\n    vector = vector.to1DArray();\n  }\n  if (vector.length !== matrix.columns) {\n    throw new RangeError(\n      'vector size must be the same as the number of columns',\n    );\n  }\n  return vector;\n}\n\n/**\n * @private\n * Check that the provided vector is an array with the right length\n * @param {Matrix} matrix\n * @param {Array|Matrix} vector\n * @return {Array}\n * @throws {RangeError}\n */\nexport 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\nexport function checkIndices(matrix, rowIndices, columnIndices) {\n  return {\n    row: checkRowIndices(matrix, rowIndices),\n    column: checkColumnIndices(matrix, columnIndices),\n  };\n}\n\nexport function checkRowIndices(matrix, rowIndices) {\n  if (typeof rowIndices !== 'object') {\n    throw new TypeError('unexpected type for row indices');\n  }\n\n  let rowOut = rowIndices.some((r) => {\n    return r < 0 || r >= matrix.rows;\n  });\n\n  if (rowOut) {\n    throw new RangeError('row indices are out of range');\n  }\n\n  if (!Array.isArray(rowIndices)) rowIndices = Array.from(rowIndices);\n\n  return rowIndices;\n}\n\nexport function checkColumnIndices(matrix, columnIndices) {\n  if (typeof columnIndices !== 'object') {\n    throw new TypeError('unexpected type for column indices');\n  }\n\n  let columnOut = columnIndices.some((c) => {\n    return c < 0 || c >= matrix.columns;\n  });\n\n  if (columnOut) {\n    throw new RangeError('column indices are out of range');\n  }\n  if (!Array.isArray(columnIndices)) columnIndices = Array.from(columnIndices);\n\n  return columnIndices;\n}\n\nexport function checkRange(matrix, startRow, endRow, startColumn, endColumn) {\n  if (arguments.length !== 5) {\n    throw new RangeError('expected 4 arguments');\n  }\n  checkNumber('startRow', startRow);\n  checkNumber('endRow', endRow);\n  checkNumber('startColumn', startColumn);\n  checkNumber('endColumn', endColumn);\n  if (\n    startRow > endRow ||\n    startColumn > endColumn ||\n    startRow < 0 ||\n    startRow >= matrix.rows ||\n    endRow < 0 ||\n    endRow >= matrix.rows ||\n    startColumn < 0 ||\n    startColumn >= matrix.columns ||\n    endColumn < 0 ||\n    endColumn >= matrix.columns\n  ) {\n    throw new RangeError('Submatrix indices are out of range');\n  }\n}\n\nexport function newArray(length, value = 0) {\n  let array = [];\n  for (let i = 0; i < length; i++) {\n    array.push(value);\n  }\n  return array;\n}\n\nfunction checkNumber(name, value) {\n  if (typeof value !== 'number') {\n    throw new TypeError(`${name} must be a number`);\n  }\n}\n\nexport function checkNonEmpty(matrix) {\n  if (matrix.isEmpty()) {\n    throw new Error('Empty matrix has no elements to index');\n  }\n}\n","import { newArray } from './util';\n\nexport function sumByRow(matrix) {\n  let sum = newArray(matrix.rows);\n  for (let i = 0; i < matrix.rows; ++i) {\n    for (let j = 0; j < matrix.columns; ++j) {\n      sum[i] += matrix.get(i, j);\n    }\n  }\n  return sum;\n}\n\nexport function sumByColumn(matrix) {\n  let sum = newArray(matrix.columns);\n  for (let i = 0; i < matrix.rows; ++i) {\n    for (let j = 0; j < matrix.columns; ++j) {\n      sum[j] += matrix.get(i, j);\n    }\n  }\n  return sum;\n}\n\nexport function sumAll(matrix) {\n  let v = 0;\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      v += matrix.get(i, j);\n    }\n  }\n  return v;\n}\n\nexport function productByRow(matrix) {\n  let sum = newArray(matrix.rows, 1);\n  for (let i = 0; i < matrix.rows; ++i) {\n    for (let j = 0; j < matrix.columns; ++j) {\n      sum[i] *= matrix.get(i, j);\n    }\n  }\n  return sum;\n}\n\nexport function productByColumn(matrix) {\n  let sum = newArray(matrix.columns, 1);\n  for (let i = 0; i < matrix.rows; ++i) {\n    for (let j = 0; j < matrix.columns; ++j) {\n      sum[j] *= matrix.get(i, j);\n    }\n  }\n  return sum;\n}\n\nexport function productAll(matrix) {\n  let v = 1;\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      v *= matrix.get(i, j);\n    }\n  }\n  return v;\n}\n\nexport function varianceByRow(matrix, unbiased, mean) {\n  const rows = matrix.rows;\n  const cols = matrix.columns;\n  const variance = [];\n\n  for (let i = 0; i < rows; i++) {\n    let sum1 = 0;\n    let sum2 = 0;\n    let x = 0;\n    for (let j = 0; j < cols; j++) {\n      x = matrix.get(i, j) - mean[i];\n      sum1 += x;\n      sum2 += x * x;\n    }\n    if (unbiased) {\n      variance.push((sum2 - (sum1 * sum1) / cols) / (cols - 1));\n    } else {\n      variance.push((sum2 - (sum1 * sum1) / cols) / cols);\n    }\n  }\n  return variance;\n}\n\nexport function varianceByColumn(matrix, unbiased, mean) {\n  const rows = matrix.rows;\n  const cols = matrix.columns;\n  const variance = [];\n\n  for (let j = 0; j < cols; j++) {\n    let sum1 = 0;\n    let sum2 = 0;\n    let x = 0;\n    for (let i = 0; i < rows; i++) {\n      x = matrix.get(i, j) - mean[j];\n      sum1 += x;\n      sum2 += x * x;\n    }\n    if (unbiased) {\n      variance.push((sum2 - (sum1 * sum1) / rows) / (rows - 1));\n    } else {\n      variance.push((sum2 - (sum1 * sum1) / rows) / rows);\n    }\n  }\n  return variance;\n}\n\nexport function varianceAll(matrix, unbiased, mean) {\n  const rows = matrix.rows;\n  const cols = matrix.columns;\n  const size = rows * cols;\n\n  let sum1 = 0;\n  let sum2 = 0;\n  let x = 0;\n  for (let i = 0; i < rows; i++) {\n    for (let j = 0; j < cols; j++) {\n      x = matrix.get(i, j) - mean;\n      sum1 += x;\n      sum2 += x * x;\n    }\n  }\n  if (unbiased) {\n    return (sum2 - (sum1 * sum1) / size) / (size - 1);\n  } else {\n    return (sum2 - (sum1 * sum1) / size) / size;\n  }\n}\n\nexport function centerByRow(matrix, mean) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) - mean[i]);\n    }\n  }\n}\n\nexport function centerByColumn(matrix, mean) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) - mean[j]);\n    }\n  }\n}\n\nexport function centerAll(matrix, mean) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) - mean);\n    }\n  }\n}\n\nexport function getScaleByRow(matrix) {\n  const scale = [];\n  for (let i = 0; i < matrix.rows; i++) {\n    let sum = 0;\n    for (let j = 0; j < matrix.columns; j++) {\n      sum += Math.pow(matrix.get(i, j), 2) / (matrix.columns - 1);\n    }\n    scale.push(Math.sqrt(sum));\n  }\n  return scale;\n}\n\nexport function scaleByRow(matrix, scale) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) / scale[i]);\n    }\n  }\n}\n\nexport function getScaleByColumn(matrix) {\n  const scale = [];\n  for (let j = 0; j < matrix.columns; j++) {\n    let sum = 0;\n    for (let i = 0; i < matrix.rows; i++) {\n      sum += Math.pow(matrix.get(i, j), 2) / (matrix.rows - 1);\n    }\n    scale.push(Math.sqrt(sum));\n  }\n  return scale;\n}\n\nexport function scaleByColumn(matrix, scale) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) / scale[j]);\n    }\n  }\n}\n\nexport function getScaleAll(matrix) {\n  const divider = matrix.size - 1;\n  let sum = 0;\n  for (let j = 0; j < matrix.columns; j++) {\n    for (let i = 0; i < matrix.rows; i++) {\n      sum += Math.pow(matrix.get(i, j), 2) / divider;\n    }\n  }\n  return Math.sqrt(sum);\n}\n\nexport function scaleAll(matrix, scale) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) / scale);\n    }\n  }\n}\n","import rescale from 'ml-array-rescale';\n\nimport { inspectMatrix, inspectMatrixWithOptions } from './inspect';\nimport { installMathOperations } from './mathOperations';\nimport {\n  sumByRow,\n  sumByColumn,\n  sumAll,\n  productByRow,\n  productByColumn,\n  productAll,\n  varianceByRow,\n  varianceByColumn,\n  varianceAll,\n  centerByRow,\n  centerByColumn,\n  centerAll,\n  scaleByRow,\n  scaleByColumn,\n  scaleAll,\n  getScaleByRow,\n  getScaleByColumn,\n  getScaleAll,\n} from './stat';\nimport {\n  checkRowVector,\n  checkRowIndex,\n  checkColumnIndex,\n  checkColumnVector,\n  checkRange,\n  checkIndices,\n  checkNonEmpty,\n} from './util';\n\nexport class AbstractMatrix {\n  static from1DArray(newRows, newColumns, newData) {\n    let length = newRows * newColumns;\n    if (length !== newData.length) {\n      throw new RangeError('data length does not match given dimensions');\n    }\n    let newMatrix = new Matrix(newRows, newColumns);\n    for (let row = 0; row < newRows; row++) {\n      for (let column = 0; column < newColumns; column++) {\n        newMatrix.set(row, column, newData[row * newColumns + column]);\n      }\n    }\n    return newMatrix;\n  }\n\n  static rowVector(newData) {\n    let vector = new Matrix(1, newData.length);\n    for (let i = 0; i < newData.length; i++) {\n      vector.set(0, i, newData[i]);\n    }\n    return vector;\n  }\n\n  static columnVector(newData) {\n    let vector = new Matrix(newData.length, 1);\n    for (let i = 0; i < newData.length; i++) {\n      vector.set(i, 0, newData[i]);\n    }\n    return vector;\n  }\n\n  static zeros(rows, columns) {\n    return new Matrix(rows, columns);\n  }\n\n  static ones(rows, columns) {\n    return new Matrix(rows, columns).fill(1);\n  }\n\n  static rand(rows, columns, options = {}) {\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { random = Math.random } = options;\n    let matrix = new Matrix(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        matrix.set(i, j, random());\n      }\n    }\n    return matrix;\n  }\n\n  static randInt(rows, columns, options = {}) {\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { min = 0, max = 1000, random = Math.random } = options;\n    if (!Number.isInteger(min)) throw new TypeError('min must be an integer');\n    if (!Number.isInteger(max)) throw new TypeError('max must be an integer');\n    if (min >= max) throw new RangeError('min must be smaller than max');\n    let interval = max - min;\n    let matrix = new Matrix(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        let value = min + Math.round(random() * interval);\n        matrix.set(i, j, value);\n      }\n    }\n    return matrix;\n  }\n\n  static eye(rows, columns, value) {\n    if (columns === undefined) columns = rows;\n    if (value === undefined) value = 1;\n    let min = Math.min(rows, columns);\n    let matrix = this.zeros(rows, columns);\n    for (let i = 0; i < min; i++) {\n      matrix.set(i, i, value);\n    }\n    return matrix;\n  }\n\n  static diag(data, rows, columns) {\n    let l = data.length;\n    if (rows === undefined) rows = l;\n    if (columns === undefined) columns = rows;\n    let min = Math.min(l, rows, columns);\n    let matrix = this.zeros(rows, columns);\n    for (let i = 0; i < min; i++) {\n      matrix.set(i, i, data[i]);\n    }\n    return matrix;\n  }\n\n  static min(matrix1, matrix2) {\n    matrix1 = this.checkMatrix(matrix1);\n    matrix2 = this.checkMatrix(matrix2);\n    let rows = matrix1.rows;\n    let columns = matrix1.columns;\n    let result = new Matrix(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        result.set(i, j, Math.min(matrix1.get(i, j), matrix2.get(i, j)));\n      }\n    }\n    return result;\n  }\n\n  static max(matrix1, matrix2) {\n    matrix1 = this.checkMatrix(matrix1);\n    matrix2 = this.checkMatrix(matrix2);\n    let rows = matrix1.rows;\n    let columns = matrix1.columns;\n    let result = new this(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        result.set(i, j, Math.max(matrix1.get(i, j), matrix2.get(i, j)));\n      }\n    }\n    return result;\n  }\n\n  static checkMatrix(value) {\n    return AbstractMatrix.isMatrix(value) ? value : new Matrix(value);\n  }\n\n  static isMatrix(value) {\n    return value != null && value.klass === 'Matrix';\n  }\n\n  get size() {\n    return this.rows * this.columns;\n  }\n\n  apply(callback) {\n    if (typeof callback !== 'function') {\n      throw new TypeError('callback must be a function');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        callback.call(this, i, j);\n      }\n    }\n    return this;\n  }\n\n  to1DArray() {\n    let array = [];\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        array.push(this.get(i, j));\n      }\n    }\n    return array;\n  }\n\n  to2DArray() {\n    let copy = [];\n    for (let i = 0; i < this.rows; i++) {\n      copy.push([]);\n      for (let j = 0; j < this.columns; j++) {\n        copy[i].push(this.get(i, j));\n      }\n    }\n    return copy;\n  }\n\n  toJSON() {\n    return this.to2DArray();\n  }\n\n  isRowVector() {\n    return this.rows === 1;\n  }\n\n  isColumnVector() {\n    return this.columns === 1;\n  }\n\n  isVector() {\n    return this.rows === 1 || this.columns === 1;\n  }\n\n  isSquare() {\n    return this.rows === this.columns;\n  }\n\n  isEmpty() {\n    return this.rows === 0 || this.columns === 0;\n  }\n\n  isSymmetric() {\n    if (this.isSquare()) {\n      for (let i = 0; i < this.rows; i++) {\n        for (let j = 0; j <= i; j++) {\n          if (this.get(i, j) !== this.get(j, i)) {\n            return false;\n          }\n        }\n      }\n      return true;\n    }\n    return false;\n  }\n\n  isEchelonForm() {\n    let i = 0;\n    let j = 0;\n    let previousColumn = -1;\n    let isEchelonForm = true;\n    let checked = false;\n    while (i < this.rows && isEchelonForm) {\n      j = 0;\n      checked = false;\n      while (j < this.columns && checked === false) {\n        if (this.get(i, j) === 0) {\n          j++;\n        } else if (this.get(i, j) === 1 && j > previousColumn) {\n          checked = true;\n          previousColumn = j;\n        } else {\n          isEchelonForm = false;\n          checked = true;\n        }\n      }\n      i++;\n    }\n    return isEchelonForm;\n  }\n\n  isReducedEchelonForm() {\n    let i = 0;\n    let j = 0;\n    let previousColumn = -1;\n    let isReducedEchelonForm = true;\n    let checked = false;\n    while (i < this.rows && isReducedEchelonForm) {\n      j = 0;\n      checked = false;\n      while (j < this.columns && checked === false) {\n        if (this.get(i, j) === 0) {\n          j++;\n        } else if (this.get(i, j) === 1 && j > previousColumn) {\n          checked = true;\n          previousColumn = j;\n        } else {\n          isReducedEchelonForm = false;\n          checked = true;\n        }\n      }\n      for (let k = j + 1; k < this.rows; k++) {\n        if (this.get(i, k) !== 0) {\n          isReducedEchelonForm = false;\n        }\n      }\n      i++;\n    }\n    return isReducedEchelonForm;\n  }\n\n  echelonForm() {\n    let result = this.clone();\n    let h = 0;\n    let k = 0;\n    while (h < result.rows && k < result.columns) {\n      let iMax = h;\n      for (let i = h; i < result.rows; i++) {\n        if (result.get(i, k) > result.get(iMax, k)) {\n          iMax = i;\n        }\n      }\n      if (result.get(iMax, k) === 0) {\n        k++;\n      } else {\n        result.swapRows(h, iMax);\n        let tmp = result.get(h, k);\n        for (let j = k; j < result.columns; j++) {\n          result.set(h, j, result.get(h, j) / tmp);\n        }\n        for (let i = h + 1; i < result.rows; i++) {\n          let factor = result.get(i, k) / result.get(h, k);\n          result.set(i, k, 0);\n          for (let j = k + 1; j < result.columns; j++) {\n            result.set(i, j, result.get(i, j) - result.get(h, j) * factor);\n          }\n        }\n        h++;\n        k++;\n      }\n    }\n    return result;\n  }\n\n  reducedEchelonForm() {\n    let result = this.echelonForm();\n    let m = result.columns;\n    let n = result.rows;\n    let h = n - 1;\n    while (h >= 0) {\n      if (result.maxRow(h) === 0) {\n        h--;\n      } else {\n        let p = 0;\n        let pivot = false;\n        while (p < n && pivot === false) {\n          if (result.get(h, p) === 1) {\n            pivot = true;\n          } else {\n            p++;\n          }\n        }\n        for (let i = 0; i < h; i++) {\n          let factor = result.get(i, p);\n          for (let j = p; j < m; j++) {\n            let tmp = result.get(i, j) - factor * result.get(h, j);\n            result.set(i, j, tmp);\n          }\n        }\n        h--;\n      }\n    }\n    return result;\n  }\n\n  set() {\n    throw new Error('set method is unimplemented');\n  }\n\n  get() {\n    throw new Error('get method is unimplemented');\n  }\n\n  repeat(options = {}) {\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { rows = 1, columns = 1 } = options;\n    if (!Number.isInteger(rows) || rows <= 0) {\n      throw new TypeError('rows must be a positive integer');\n    }\n    if (!Number.isInteger(columns) || columns <= 0) {\n      throw new TypeError('columns must be a positive integer');\n    }\n    let matrix = new Matrix(this.rows * rows, this.columns * columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        matrix.setSubMatrix(this, this.rows * i, this.columns * j);\n      }\n    }\n    return matrix;\n  }\n\n  fill(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, value);\n      }\n    }\n    return this;\n  }\n\n  neg() {\n    return this.mulS(-1);\n  }\n\n  getRow(index) {\n    checkRowIndex(this, index);\n    let row = [];\n    for (let i = 0; i < this.columns; i++) {\n      row.push(this.get(index, i));\n    }\n    return row;\n  }\n\n  getRowVector(index) {\n    return Matrix.rowVector(this.getRow(index));\n  }\n\n  setRow(index, array) {\n    checkRowIndex(this, index);\n    array = checkRowVector(this, array);\n    for (let i = 0; i < this.columns; i++) {\n      this.set(index, i, array[i]);\n    }\n    return this;\n  }\n\n  swapRows(row1, row2) {\n    checkRowIndex(this, row1);\n    checkRowIndex(this, row2);\n    for (let i = 0; i < this.columns; i++) {\n      let temp = this.get(row1, i);\n      this.set(row1, i, this.get(row2, i));\n      this.set(row2, i, temp);\n    }\n    return this;\n  }\n\n  getColumn(index) {\n    checkColumnIndex(this, index);\n    let column = [];\n    for (let i = 0; i < this.rows; i++) {\n      column.push(this.get(i, index));\n    }\n    return column;\n  }\n\n  getColumnVector(index) {\n    return Matrix.columnVector(this.getColumn(index));\n  }\n\n  setColumn(index, array) {\n    checkColumnIndex(this, index);\n    array = checkColumnVector(this, array);\n    for (let i = 0; i < this.rows; i++) {\n      this.set(i, index, array[i]);\n    }\n    return this;\n  }\n\n  swapColumns(column1, column2) {\n    checkColumnIndex(this, column1);\n    checkColumnIndex(this, column2);\n    for (let i = 0; i < this.rows; i++) {\n      let temp = this.get(i, column1);\n      this.set(i, column1, this.get(i, column2));\n      this.set(i, column2, temp);\n    }\n    return this;\n  }\n\n  addRowVector(vector) {\n    vector = checkRowVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) + vector[j]);\n      }\n    }\n    return this;\n  }\n\n  subRowVector(vector) {\n    vector = checkRowVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) - vector[j]);\n      }\n    }\n    return this;\n  }\n\n  mulRowVector(vector) {\n    vector = checkRowVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) * vector[j]);\n      }\n    }\n    return this;\n  }\n\n  divRowVector(vector) {\n    vector = checkRowVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) / vector[j]);\n      }\n    }\n    return this;\n  }\n\n  addColumnVector(vector) {\n    vector = checkColumnVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) + vector[i]);\n      }\n    }\n    return this;\n  }\n\n  subColumnVector(vector) {\n    vector = checkColumnVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) - vector[i]);\n      }\n    }\n    return this;\n  }\n\n  mulColumnVector(vector) {\n    vector = checkColumnVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) * vector[i]);\n      }\n    }\n    return this;\n  }\n\n  divColumnVector(vector) {\n    vector = checkColumnVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) / vector[i]);\n      }\n    }\n    return this;\n  }\n\n  mulRow(index, value) {\n    checkRowIndex(this, index);\n    for (let i = 0; i < this.columns; i++) {\n      this.set(index, i, this.get(index, i) * value);\n    }\n    return this;\n  }\n\n  mulColumn(index, value) {\n    checkColumnIndex(this, index);\n    for (let i = 0; i < this.rows; i++) {\n      this.set(i, index, this.get(i, index) * value);\n    }\n    return this;\n  }\n\n  max() {\n    if (this.isEmpty()) {\n      return NaN;\n    }\n    let v = this.get(0, 0);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        if (this.get(i, j) > v) {\n          v = this.get(i, j);\n        }\n      }\n    }\n    return v;\n  }\n\n  maxIndex() {\n    checkNonEmpty(this);\n    let v = this.get(0, 0);\n    let idx = [0, 0];\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        if (this.get(i, j) > v) {\n          v = this.get(i, j);\n          idx[0] = i;\n          idx[1] = j;\n        }\n      }\n    }\n    return idx;\n  }\n\n  min() {\n    if (this.isEmpty()) {\n      return NaN;\n    }\n    let v = this.get(0, 0);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        if (this.get(i, j) < v) {\n          v = this.get(i, j);\n        }\n      }\n    }\n    return v;\n  }\n\n  minIndex() {\n    checkNonEmpty(this);\n    let v = this.get(0, 0);\n    let idx = [0, 0];\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        if (this.get(i, j) < v) {\n          v = this.get(i, j);\n          idx[0] = i;\n          idx[1] = j;\n        }\n      }\n    }\n    return idx;\n  }\n\n  maxRow(row) {\n    checkRowIndex(this, row);\n    if (this.isEmpty()) {\n      return NaN;\n    }\n    let v = this.get(row, 0);\n    for (let i = 1; i < this.columns; i++) {\n      if (this.get(row, i) > v) {\n        v = this.get(row, i);\n      }\n    }\n    return v;\n  }\n\n  maxRowIndex(row) {\n    checkRowIndex(this, row);\n    checkNonEmpty(this);\n    let v = this.get(row, 0);\n    let idx = [row, 0];\n    for (let i = 1; i < this.columns; i++) {\n      if (this.get(row, i) > v) {\n        v = this.get(row, i);\n        idx[1] = i;\n      }\n    }\n    return idx;\n  }\n\n  minRow(row) {\n    checkRowIndex(this, row);\n    if (this.isEmpty()) {\n      return NaN;\n    }\n    let v = this.get(row, 0);\n    for (let i = 1; i < this.columns; i++) {\n      if (this.get(row, i) < v) {\n        v = this.get(row, i);\n      }\n    }\n    return v;\n  }\n\n  minRowIndex(row) {\n    checkRowIndex(this, row);\n    checkNonEmpty(this);\n    let v = this.get(row, 0);\n    let idx = [row, 0];\n    for (let i = 1; i < this.columns; i++) {\n      if (this.get(row, i) < v) {\n        v = this.get(row, i);\n        idx[1] = i;\n      }\n    }\n    return idx;\n  }\n\n  maxColumn(column) {\n    checkColumnIndex(this, column);\n    if (this.isEmpty()) {\n      return NaN;\n    }\n    let v = this.get(0, column);\n    for (let i = 1; i < this.rows; i++) {\n      if (this.get(i, column) > v) {\n        v = this.get(i, column);\n      }\n    }\n    return v;\n  }\n\n  maxColumnIndex(column) {\n    checkColumnIndex(this, column);\n    checkNonEmpty(this);\n    let v = this.get(0, column);\n    let idx = [0, column];\n    for (let i = 1; i < this.rows; i++) {\n      if (this.get(i, column) > v) {\n        v = this.get(i, column);\n        idx[0] = i;\n      }\n    }\n    return idx;\n  }\n\n  minColumn(column) {\n    checkColumnIndex(this, column);\n    if (this.isEmpty()) {\n      return NaN;\n    }\n    let v = this.get(0, column);\n    for (let i = 1; i < this.rows; i++) {\n      if (this.get(i, column) < v) {\n        v = this.get(i, column);\n      }\n    }\n    return v;\n  }\n\n  minColumnIndex(column) {\n    checkColumnIndex(this, column);\n    checkNonEmpty(this);\n    let v = this.get(0, column);\n    let idx = [0, column];\n    for (let i = 1; i < this.rows; i++) {\n      if (this.get(i, column) < v) {\n        v = this.get(i, column);\n        idx[0] = i;\n      }\n    }\n    return idx;\n  }\n\n  diag() {\n    let min = Math.min(this.rows, this.columns);\n    let diag = [];\n    for (let i = 0; i < min; i++) {\n      diag.push(this.get(i, i));\n    }\n    return diag;\n  }\n\n  norm(type = 'frobenius') {\n    let result = 0;\n    if (type === 'max') {\n      return this.max();\n    } else if (type === 'frobenius') {\n      for (let i = 0; i < this.rows; i++) {\n        for (let j = 0; j < this.columns; j++) {\n          result = result + this.get(i, j) * this.get(i, j);\n        }\n      }\n      return Math.sqrt(result);\n    } else {\n      throw new RangeError(`unknown norm type: ${type}`);\n    }\n  }\n\n  cumulativeSum() {\n    let sum = 0;\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        sum += this.get(i, j);\n        this.set(i, j, sum);\n      }\n    }\n    return this;\n  }\n\n  dot(vector2) {\n    if (AbstractMatrix.isMatrix(vector2)) vector2 = vector2.to1DArray();\n    let vector1 = this.to1DArray();\n    if (vector1.length !== vector2.length) {\n      throw new RangeError('vectors do not have the same size');\n    }\n    let dot = 0;\n    for (let i = 0; i < vector1.length; i++) {\n      dot += vector1[i] * vector2[i];\n    }\n    return dot;\n  }\n\n  mmul(other) {\n    other = Matrix.checkMatrix(other);\n\n    let m = this.rows;\n    let n = this.columns;\n    let p = other.columns;\n\n    let result = new Matrix(m, p);\n\n    let Bcolj = new Float64Array(n);\n    for (let j = 0; j < p; j++) {\n      for (let k = 0; k < n; k++) {\n        Bcolj[k] = other.get(k, j);\n      }\n\n      for (let i = 0; i < m; i++) {\n        let s = 0;\n        for (let k = 0; k < n; k++) {\n          s += this.get(i, k) * Bcolj[k];\n        }\n\n        result.set(i, j, s);\n      }\n    }\n    return result;\n  }\n\n  strassen2x2(other) {\n    other = Matrix.checkMatrix(other);\n    let result = new Matrix(2, 2);\n    const a11 = this.get(0, 0);\n    const b11 = other.get(0, 0);\n    const a12 = this.get(0, 1);\n    const b12 = other.get(0, 1);\n    const a21 = this.get(1, 0);\n    const b21 = other.get(1, 0);\n    const a22 = this.get(1, 1);\n    const b22 = other.get(1, 1);\n\n    // Compute intermediate values.\n    const m1 = (a11 + a22) * (b11 + b22);\n    const m2 = (a21 + a22) * b11;\n    const m3 = a11 * (b12 - b22);\n    const m4 = a22 * (b21 - b11);\n    const m5 = (a11 + a12) * b22;\n    const m6 = (a21 - a11) * (b11 + b12);\n    const m7 = (a12 - a22) * (b21 + b22);\n\n    // Combine intermediate values into the output.\n    const c00 = m1 + m4 - m5 + m7;\n    const c01 = m3 + m5;\n    const c10 = m2 + m4;\n    const c11 = m1 - m2 + m3 + m6;\n\n    result.set(0, 0, c00);\n    result.set(0, 1, c01);\n    result.set(1, 0, c10);\n    result.set(1, 1, c11);\n    return result;\n  }\n\n  strassen3x3(other) {\n    other = Matrix.checkMatrix(other);\n    let result = new Matrix(3, 3);\n\n    const a00 = this.get(0, 0);\n    const a01 = this.get(0, 1);\n    const a02 = this.get(0, 2);\n    const a10 = this.get(1, 0);\n    const a11 = this.get(1, 1);\n    const a12 = this.get(1, 2);\n    const a20 = this.get(2, 0);\n    const a21 = this.get(2, 1);\n    const a22 = this.get(2, 2);\n\n    const b00 = other.get(0, 0);\n    const b01 = other.get(0, 1);\n    const b02 = other.get(0, 2);\n    const b10 = other.get(1, 0);\n    const b11 = other.get(1, 1);\n    const b12 = other.get(1, 2);\n    const b20 = other.get(2, 0);\n    const b21 = other.get(2, 1);\n    const b22 = other.get(2, 2);\n\n    const m1 = (a00 + a01 + a02 - a10 - a11 - a21 - a22) * b11;\n    const m2 = (a00 - a10) * (-b01 + b11);\n    const m3 = a11 * (-b00 + b01 + b10 - b11 - b12 - b20 + b22);\n    const m4 = (-a00 + a10 + a11) * (b00 - b01 + b11);\n    const m5 = (a10 + a11) * (-b00 + b01);\n    const m6 = a00 * b00;\n    const m7 = (-a00 + a20 + a21) * (b00 - b02 + b12);\n    const m8 = (-a00 + a20) * (b02 - b12);\n    const m9 = (a20 + a21) * (-b00 + b02);\n    const m10 = (a00 + a01 + a02 - a11 - a12 - a20 - a21) * b12;\n    const m11 = a21 * (-b00 + b02 + b10 - b11 - b12 - b20 + b21);\n    const m12 = (-a02 + a21 + a22) * (b11 + b20 - b21);\n    const m13 = (a02 - a22) * (b11 - b21);\n    const m14 = a02 * b20;\n    const m15 = (a21 + a22) * (-b20 + b21);\n    const m16 = (-a02 + a11 + a12) * (b12 + b20 - b22);\n    const m17 = (a02 - a12) * (b12 - b22);\n    const m18 = (a11 + a12) * (-b20 + b22);\n    const m19 = a01 * b10;\n    const m20 = a12 * b21;\n    const m21 = a10 * b02;\n    const m22 = a20 * b01;\n    const m23 = a22 * b22;\n\n    const c00 = m6 + m14 + m19;\n    const c01 = m1 + m4 + m5 + m6 + m12 + m14 + m15;\n    const c02 = m6 + m7 + m9 + m10 + m14 + m16 + m18;\n    const c10 = m2 + m3 + m4 + m6 + m14 + m16 + m17;\n    const c11 = m2 + m4 + m5 + m6 + m20;\n    const c12 = m14 + m16 + m17 + m18 + m21;\n    const c20 = m6 + m7 + m8 + m11 + m12 + m13 + m14;\n    const c21 = m12 + m13 + m14 + m15 + m22;\n    const c22 = m6 + m7 + m8 + m9 + m23;\n\n    result.set(0, 0, c00);\n    result.set(0, 1, c01);\n    result.set(0, 2, c02);\n    result.set(1, 0, c10);\n    result.set(1, 1, c11);\n    result.set(1, 2, c12);\n    result.set(2, 0, c20);\n    result.set(2, 1, c21);\n    result.set(2, 2, c22);\n    return result;\n  }\n\n  mmulStrassen(y) {\n    y = Matrix.checkMatrix(y);\n    let x = this.clone();\n    let r1 = x.rows;\n    let c1 = x.columns;\n    let r2 = y.rows;\n    let c2 = y.columns;\n    if (c1 !== r2) {\n      // eslint-disable-next-line no-console\n      console.warn(\n        `Multiplying ${r1} x ${c1} and ${r2} x ${c2} matrix: dimensions do not match.`,\n      );\n    }\n\n    // Put a matrix into the top left of a matrix of zeros.\n    // `rows` and `cols` are the dimensions of the output matrix.\n    function embed(mat, rows, cols) {\n      let r = mat.rows;\n      let c = mat.columns;\n      if (r === rows && c === cols) {\n        return mat;\n      } else {\n        let resultat = AbstractMatrix.zeros(rows, cols);\n        resultat = resultat.setSubMatrix(mat, 0, 0);\n        return resultat;\n      }\n    }\n\n    // Make sure both matrices are the same size.\n    // This is exclusively for simplicity:\n    // this algorithm can be implemented with matrices of different sizes.\n\n    let r = Math.max(r1, r2);\n    let c = Math.max(c1, c2);\n    x = embed(x, r, c);\n    y = embed(y, r, c);\n\n    // Our recursive multiplication function.\n    function blockMult(a, b, rows, cols) {\n      // For small matrices, resort to naive multiplication.\n      if (rows <= 512 || cols <= 512) {\n        return a.mmul(b); // a is equivalent to this\n      }\n\n      // Apply dynamic padding.\n      if (rows % 2 === 1 && cols % 2 === 1) {\n        a = embed(a, rows + 1, cols + 1);\n        b = embed(b, rows + 1, cols + 1);\n      } else if (rows % 2 === 1) {\n        a = embed(a, rows + 1, cols);\n        b = embed(b, rows + 1, cols);\n      } else if (cols % 2 === 1) {\n        a = embed(a, rows, cols + 1);\n        b = embed(b, rows, cols + 1);\n      }\n\n      let halfRows = parseInt(a.rows / 2, 10);\n      let halfCols = parseInt(a.columns / 2, 10);\n      // Subdivide input matrices.\n      let a11 = a.subMatrix(0, halfRows - 1, 0, halfCols - 1);\n      let b11 = b.subMatrix(0, halfRows - 1, 0, halfCols - 1);\n\n      let a12 = a.subMatrix(0, halfRows - 1, halfCols, a.columns - 1);\n      let b12 = b.subMatrix(0, halfRows - 1, halfCols, b.columns - 1);\n\n      let a21 = a.subMatrix(halfRows, a.rows - 1, 0, halfCols - 1);\n      let b21 = b.subMatrix(halfRows, b.rows - 1, 0, halfCols - 1);\n\n      let a22 = a.subMatrix(halfRows, a.rows - 1, halfCols, a.columns - 1);\n      let b22 = b.subMatrix(halfRows, b.rows - 1, halfCols, b.columns - 1);\n\n      // Compute intermediate values.\n      let m1 = blockMult(\n        AbstractMatrix.add(a11, a22),\n        AbstractMatrix.add(b11, b22),\n        halfRows,\n        halfCols,\n      );\n      let m2 = blockMult(AbstractMatrix.add(a21, a22), b11, halfRows, halfCols);\n      let m3 = blockMult(a11, AbstractMatrix.sub(b12, b22), halfRows, halfCols);\n      let m4 = blockMult(a22, AbstractMatrix.sub(b21, b11), halfRows, halfCols);\n      let m5 = blockMult(AbstractMatrix.add(a11, a12), b22, halfRows, halfCols);\n      let m6 = blockMult(\n        AbstractMatrix.sub(a21, a11),\n        AbstractMatrix.add(b11, b12),\n        halfRows,\n        halfCols,\n      );\n      let m7 = blockMult(\n        AbstractMatrix.sub(a12, a22),\n        AbstractMatrix.add(b21, b22),\n        halfRows,\n        halfCols,\n      );\n\n      // Combine intermediate values into the output.\n      let c11 = AbstractMatrix.add(m1, m4);\n      c11.sub(m5);\n      c11.add(m7);\n      let c12 = AbstractMatrix.add(m3, m5);\n      let c21 = AbstractMatrix.add(m2, m4);\n      let c22 = AbstractMatrix.sub(m1, m2);\n      c22.add(m3);\n      c22.add(m6);\n\n      // Crop output to the desired size (undo dynamic padding).\n      let resultat = AbstractMatrix.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  scaleRows(options = {}) {\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { min = 0, max = 1 } = options;\n    if (!Number.isFinite(min)) throw new TypeError('min must be a number');\n    if (!Number.isFinite(max)) throw new TypeError('max must be a number');\n    if (min >= max) throw new RangeError('min must be smaller than max');\n    let newMatrix = new Matrix(this.rows, this.columns);\n    for (let i = 0; i < this.rows; i++) {\n      const row = this.getRow(i);\n      if (row.length > 0) {\n        rescale(row, { min, max, output: row });\n      }\n      newMatrix.setRow(i, row);\n    }\n    return newMatrix;\n  }\n\n  scaleColumns(options = {}) {\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { min = 0, max = 1 } = options;\n    if (!Number.isFinite(min)) throw new TypeError('min must be a number');\n    if (!Number.isFinite(max)) throw new TypeError('max must be a number');\n    if (min >= max) throw new RangeError('min must be smaller than max');\n    let newMatrix = new Matrix(this.rows, this.columns);\n    for (let i = 0; i < this.columns; i++) {\n      const column = this.getColumn(i);\n      if (column.length) {\n        rescale(column, {\n          min: min,\n          max: max,\n          output: column,\n        });\n      }\n      newMatrix.setColumn(i, column);\n    }\n    return newMatrix;\n  }\n\n  flipRows() {\n    const middle = Math.ceil(this.columns / 2);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < middle; j++) {\n        let first = this.get(i, j);\n        let last = this.get(i, this.columns - 1 - j);\n        this.set(i, j, last);\n        this.set(i, this.columns - 1 - j, first);\n      }\n    }\n    return this;\n  }\n\n  flipColumns() {\n    const middle = Math.ceil(this.rows / 2);\n    for (let j = 0; j < this.columns; j++) {\n      for (let i = 0; i < middle; i++) {\n        let first = this.get(i, j);\n        let last = this.get(this.rows - 1 - i, j);\n        this.set(i, j, last);\n        this.set(this.rows - 1 - i, j, first);\n      }\n    }\n    return this;\n  }\n\n  kroneckerProduct(other) {\n    other = Matrix.checkMatrix(other);\n\n    let m = this.rows;\n    let n = this.columns;\n    let p = other.rows;\n    let q = other.columns;\n\n    let result = new Matrix(m * p, n * q);\n    for (let i = 0; i < m; i++) {\n      for (let j = 0; j < n; j++) {\n        for (let k = 0; k < p; k++) {\n          for (let l = 0; l < q; l++) {\n            result.set(p * i + k, q * j + l, this.get(i, j) * other.get(k, l));\n          }\n        }\n      }\n    }\n    return result;\n  }\n\n  transpose() {\n    let result = new Matrix(this.columns, this.rows);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        result.set(j, i, this.get(i, j));\n      }\n    }\n    return result;\n  }\n\n  sortRows(compareFunction = compareNumbers) {\n    for (let i = 0; i < this.rows; i++) {\n      this.setRow(i, this.getRow(i).sort(compareFunction));\n    }\n    return this;\n  }\n\n  sortColumns(compareFunction = compareNumbers) {\n    for (let i = 0; i < this.columns; i++) {\n      this.setColumn(i, this.getColumn(i).sort(compareFunction));\n    }\n    return this;\n  }\n\n  subMatrix(startRow, endRow, startColumn, endColumn) {\n    checkRange(this, startRow, endRow, startColumn, endColumn);\n    let newMatrix = new Matrix(\n      endRow - startRow + 1,\n      endColumn - startColumn + 1,\n    );\n    for (let i = startRow; i <= endRow; i++) {\n      for (let j = startColumn; j <= endColumn; j++) {\n        newMatrix.set(i - startRow, j - startColumn, this.get(i, j));\n      }\n    }\n    return newMatrix;\n  }\n\n  subMatrixRow(indices, startColumn, endColumn) {\n    if (startColumn === undefined) startColumn = 0;\n    if (endColumn === undefined) endColumn = this.columns - 1;\n    if (\n      startColumn > endColumn ||\n      startColumn < 0 ||\n      startColumn >= this.columns ||\n      endColumn < 0 ||\n      endColumn >= this.columns\n    ) {\n      throw new RangeError('Argument out of range');\n    }\n\n    let newMatrix = new Matrix(indices.length, endColumn - startColumn + 1);\n    for (let i = 0; i < indices.length; i++) {\n      for (let j = startColumn; j <= endColumn; j++) {\n        if (indices[i] < 0 || indices[i] >= this.rows) {\n          throw new RangeError(`Row index out of range: ${indices[i]}`);\n        }\n        newMatrix.set(i, j - startColumn, this.get(indices[i], j));\n      }\n    }\n    return newMatrix;\n  }\n\n  subMatrixColumn(indices, startRow, endRow) {\n    if (startRow === undefined) startRow = 0;\n    if (endRow === undefined) endRow = this.rows - 1;\n    if (\n      startRow > endRow ||\n      startRow < 0 ||\n      startRow >= this.rows ||\n      endRow < 0 ||\n      endRow >= this.rows\n    ) {\n      throw new RangeError('Argument out of range');\n    }\n\n    let newMatrix = new Matrix(endRow - startRow + 1, indices.length);\n    for (let i = 0; i < indices.length; i++) {\n      for (let j = startRow; j <= endRow; j++) {\n        if (indices[i] < 0 || indices[i] >= this.columns) {\n          throw new RangeError(`Column index out of range: ${indices[i]}`);\n        }\n        newMatrix.set(j - startRow, i, this.get(j, indices[i]));\n      }\n    }\n    return newMatrix;\n  }\n\n  setSubMatrix(matrix, startRow, startColumn) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (matrix.isEmpty()) {\n      return this;\n    }\n    let endRow = startRow + matrix.rows - 1;\n    let endColumn = startColumn + matrix.columns - 1;\n    checkRange(this, startRow, endRow, startColumn, endColumn);\n    for (let i = 0; i < matrix.rows; i++) {\n      for (let j = 0; j < matrix.columns; j++) {\n        this.set(startRow + i, startColumn + j, matrix.get(i, j));\n      }\n    }\n    return this;\n  }\n\n  selection(rowIndices, columnIndices) {\n    let indices = checkIndices(this, rowIndices, columnIndices);\n    let newMatrix = new Matrix(rowIndices.length, columnIndices.length);\n    for (let i = 0; i < indices.row.length; i++) {\n      let rowIndex = indices.row[i];\n      for (let j = 0; j < indices.column.length; j++) {\n        let columnIndex = indices.column[j];\n        newMatrix.set(i, j, this.get(rowIndex, columnIndex));\n      }\n    }\n    return newMatrix;\n  }\n\n  trace() {\n    let min = Math.min(this.rows, this.columns);\n    let trace = 0;\n    for (let i = 0; i < min; i++) {\n      trace += this.get(i, i);\n    }\n    return trace;\n  }\n\n  clone() {\n    let newMatrix = new Matrix(this.rows, this.columns);\n    for (let row = 0; row < this.rows; row++) {\n      for (let column = 0; column < this.columns; column++) {\n        newMatrix.set(row, column, this.get(row, column));\n      }\n    }\n    return newMatrix;\n  }\n\n  sum(by) {\n    switch (by) {\n      case 'row':\n        return sumByRow(this);\n      case 'column':\n        return sumByColumn(this);\n      case undefined:\n        return sumAll(this);\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  product(by) {\n    switch (by) {\n      case 'row':\n        return productByRow(this);\n      case 'column':\n        return productByColumn(this);\n      case undefined:\n        return productAll(this);\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  mean(by) {\n    const sum = this.sum(by);\n    switch (by) {\n      case 'row': {\n        for (let i = 0; i < this.rows; i++) {\n          sum[i] /= this.columns;\n        }\n        return sum;\n      }\n      case 'column': {\n        for (let i = 0; i < this.columns; i++) {\n          sum[i] /= this.rows;\n        }\n        return sum;\n      }\n      case undefined:\n        return sum / this.size;\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  variance(by, options = {}) {\n    if (typeof by === 'object') {\n      options = by;\n      by = undefined;\n    }\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { unbiased = true, mean = this.mean(by) } = options;\n    if (typeof unbiased !== 'boolean') {\n      throw new TypeError('unbiased must be a boolean');\n    }\n    switch (by) {\n      case 'row': {\n        if (!Array.isArray(mean)) {\n          throw new TypeError('mean must be an array');\n        }\n        return varianceByRow(this, unbiased, mean);\n      }\n      case 'column': {\n        if (!Array.isArray(mean)) {\n          throw new TypeError('mean must be an array');\n        }\n        return varianceByColumn(this, unbiased, mean);\n      }\n      case undefined: {\n        if (typeof mean !== 'number') {\n          throw new TypeError('mean must be a number');\n        }\n        return varianceAll(this, unbiased, mean);\n      }\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  standardDeviation(by, options) {\n    if (typeof by === 'object') {\n      options = by;\n      by = undefined;\n    }\n    const variance = this.variance(by, options);\n    if (by === undefined) {\n      return Math.sqrt(variance);\n    } else {\n      for (let i = 0; i < variance.length; i++) {\n        variance[i] = Math.sqrt(variance[i]);\n      }\n      return variance;\n    }\n  }\n\n  center(by, options = {}) {\n    if (typeof by === 'object') {\n      options = by;\n      by = undefined;\n    }\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { center = this.mean(by) } = options;\n    switch (by) {\n      case 'row': {\n        if (!Array.isArray(center)) {\n          throw new TypeError('center must be an array');\n        }\n        centerByRow(this, center);\n        return this;\n      }\n      case 'column': {\n        if (!Array.isArray(center)) {\n          throw new TypeError('center must be an array');\n        }\n        centerByColumn(this, center);\n        return this;\n      }\n      case undefined: {\n        if (typeof center !== 'number') {\n          throw new TypeError('center must be a number');\n        }\n        centerAll(this, center);\n        return this;\n      }\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  scale(by, options = {}) {\n    if (typeof by === 'object') {\n      options = by;\n      by = undefined;\n    }\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    let scale = options.scale;\n    switch (by) {\n      case 'row': {\n        if (scale === undefined) {\n          scale = getScaleByRow(this);\n        } else if (!Array.isArray(scale)) {\n          throw new TypeError('scale must be an array');\n        }\n        scaleByRow(this, scale);\n        return this;\n      }\n      case 'column': {\n        if (scale === undefined) {\n          scale = getScaleByColumn(this);\n        } else if (!Array.isArray(scale)) {\n          throw new TypeError('scale must be an array');\n        }\n        scaleByColumn(this, scale);\n        return this;\n      }\n      case undefined: {\n        if (scale === undefined) {\n          scale = getScaleAll(this);\n        } else if (typeof scale !== 'number') {\n          throw new TypeError('scale must be a number');\n        }\n        scaleAll(this, scale);\n        return this;\n      }\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  toString(options) {\n    return inspectMatrixWithOptions(this, options);\n  }\n}\n\nAbstractMatrix.prototype.klass = 'Matrix';\nif (typeof Symbol !== 'undefined') {\n  AbstractMatrix.prototype[\n    Symbol.for('nodejs.util.inspect.custom')\n  ] = inspectMatrix;\n}\n\nfunction compareNumbers(a, b) {\n  return a - b;\n}\n\n// Synonyms\nAbstractMatrix.random = AbstractMatrix.rand;\nAbstractMatrix.randomInt = AbstractMatrix.randInt;\nAbstractMatrix.diagonal = AbstractMatrix.diag;\nAbstractMatrix.prototype.diagonal = AbstractMatrix.prototype.diag;\nAbstractMatrix.identity = AbstractMatrix.eye;\nAbstractMatrix.prototype.negate = AbstractMatrix.prototype.neg;\nAbstractMatrix.prototype.tensorProduct =\n  AbstractMatrix.prototype.kroneckerProduct;\n\nexport default class Matrix extends AbstractMatrix {\n  constructor(nRows, nColumns) {\n    super();\n    if (Matrix.isMatrix(nRows)) {\n      // eslint-disable-next-line no-constructor-return\n      return nRows.clone();\n    } else if (Number.isInteger(nRows) && nRows >= 0) {\n      // Create an empty matrix\n      this.data = [];\n      if (Number.isInteger(nColumns) && nColumns >= 0) {\n        for (let i = 0; i < nRows; i++) {\n          this.data.push(new Float64Array(nColumns));\n        }\n      } else {\n        throw new TypeError('nColumns must be a positive integer');\n      }\n    } else if (Array.isArray(nRows)) {\n      // Copy the values from the 2D array\n      const arrayData = nRows;\n      nRows = arrayData.length;\n      nColumns = nRows ? arrayData[0].length : 0;\n      if (typeof nColumns !== 'number') {\n        throw new TypeError(\n          'Data must be a 2D array with at least one element',\n        );\n      }\n      this.data = [];\n      for (let i = 0; i < nRows; i++) {\n        if (arrayData[i].length !== nColumns) {\n          throw new RangeError('Inconsistent array dimensions');\n        }\n        this.data.push(Float64Array.from(arrayData[i]));\n      }\n    } else {\n      throw new TypeError(\n        'First argument must be a positive number or an array',\n      );\n    }\n    this.rows = nRows;\n    this.columns = nColumns;\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.data[rowIndex][columnIndex] = value;\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.data[rowIndex][columnIndex];\n  }\n\n  removeRow(index) {\n    checkRowIndex(this, index);\n    this.data.splice(index, 1);\n    this.rows -= 1;\n    return this;\n  }\n\n  addRow(index, array) {\n    if (array === undefined) {\n      array = index;\n      index = this.rows;\n    }\n    checkRowIndex(this, index, true);\n    array = Float64Array.from(checkRowVector(this, array));\n    this.data.splice(index, 0, array);\n    this.rows += 1;\n    return this;\n  }\n\n  removeColumn(index) {\n    checkColumnIndex(this, index);\n    for (let i = 0; i < this.rows; i++) {\n      const newRow = new Float64Array(this.columns - 1);\n      for (let j = 0; j < index; j++) {\n        newRow[j] = this.data[i][j];\n      }\n      for (let j = index + 1; j < this.columns; j++) {\n        newRow[j - 1] = this.data[i][j];\n      }\n      this.data[i] = newRow;\n    }\n    this.columns -= 1;\n    return this;\n  }\n\n  addColumn(index, array) {\n    if (typeof array === 'undefined') {\n      array = index;\n      index = this.columns;\n    }\n    checkColumnIndex(this, index, true);\n    array = checkColumnVector(this, array);\n    for (let i = 0; i < this.rows; i++) {\n      const newRow = new Float64Array(this.columns + 1);\n      let j = 0;\n      for (; j < index; j++) {\n        newRow[j] = this.data[i][j];\n      }\n      newRow[j++] = array[i];\n      for (; j < this.columns + 1; j++) {\n        newRow[j] = this.data[i][j - 1];\n      }\n      this.data[i] = newRow;\n    }\n    this.columns += 1;\n    return this;\n  }\n}\n\ninstallMathOperations(AbstractMatrix, Matrix);\n","import { AbstractMatrix } from '../matrix';\n\nexport default class 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","import BaseView from './base';\n\nexport default class MatrixTransposeView extends BaseView {\n  constructor(matrix) {\n    super(matrix, matrix.columns, matrix.rows);\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.matrix.set(columnIndex, rowIndex, value);\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.matrix.get(columnIndex, rowIndex);\n  }\n}\n","import { AbstractMatrix } from '../matrix';\n\nexport default class WrapperMatrix2D extends AbstractMatrix {\n  constructor(data) {\n    super();\n    this.data = data;\n    this.rows = data.length;\n    this.columns = data[0].length;\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.data[rowIndex][columnIndex] = value;\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.data[rowIndex][columnIndex];\n  }\n}\n","import Matrix from '../matrix';\nimport WrapperMatrix2D from '../wrap/WrapperMatrix2D';\n\nexport default class LuDecomposition {\n  constructor(matrix) {\n    matrix = WrapperMatrix2D.checkMatrix(matrix);\n\n    let lu = matrix.clone();\n    let rows = lu.rows;\n    let columns = lu.columns;\n    let pivotVector = new Float64Array(rows);\n    let pivotSign = 1;\n    let i, j, k, p, s, t, v;\n    let LUcolj, kmax;\n\n    for (i = 0; i < rows; i++) {\n      pivotVector[i] = i;\n    }\n\n    LUcolj = new Float64Array(rows);\n\n    for (j = 0; j < columns; j++) {\n      for (i = 0; i < rows; i++) {\n        LUcolj[i] = lu.get(i, j);\n      }\n\n      for (i = 0; i < rows; i++) {\n        kmax = Math.min(i, j);\n        s = 0;\n        for (k = 0; k < kmax; k++) {\n          s += lu.get(i, k) * LUcolj[k];\n        }\n        LUcolj[i] -= s;\n        lu.set(i, j, LUcolj[i]);\n      }\n\n      p = j;\n      for (i = j + 1; i < rows; i++) {\n        if (Math.abs(LUcolj[i]) > Math.abs(LUcolj[p])) {\n          p = i;\n        }\n      }\n\n      if (p !== j) {\n        for (k = 0; k < columns; k++) {\n          t = lu.get(p, k);\n          lu.set(p, k, lu.get(j, k));\n          lu.set(j, k, t);\n        }\n\n        v = pivotVector[p];\n        pivotVector[p] = pivotVector[j];\n        pivotVector[j] = v;\n\n        pivotSign = -pivotSign;\n      }\n\n      if (j < rows && lu.get(j, j) !== 0) {\n        for (i = j + 1; i < rows; i++) {\n          lu.set(i, j, lu.get(i, j) / lu.get(j, j));\n        }\n      }\n    }\n\n    this.LU = lu;\n    this.pivotVector = pivotVector;\n    this.pivotSign = pivotSign;\n  }\n\n  isSingular() {\n    let data = this.LU;\n    let col = data.columns;\n    for (let j = 0; j < col; j++) {\n      if (data.get(j, j) === 0) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  solve(value) {\n    value = Matrix.checkMatrix(value);\n\n    let lu = this.LU;\n    let rows = lu.rows;\n\n    if (rows !== value.rows) {\n      throw new Error('Invalid matrix dimensions');\n    }\n    if (this.isSingular()) {\n      throw new Error('LU matrix is singular');\n    }\n\n    let count = value.columns;\n    let X = value.subMatrixRow(this.pivotVector, 0, count - 1);\n    let columns = lu.columns;\n    let i, j, k;\n\n    for (k = 0; k < columns; k++) {\n      for (i = k + 1; i < columns; i++) {\n        for (j = 0; j < count; j++) {\n          X.set(i, j, X.get(i, j) - X.get(k, j) * lu.get(i, k));\n        }\n      }\n    }\n    for (k = columns - 1; k >= 0; k--) {\n      for (j = 0; j < count; j++) {\n        X.set(k, j, X.get(k, j) / lu.get(k, k));\n      }\n      for (i = 0; i < k; i++) {\n        for (j = 0; j < count; j++) {\n          X.set(i, j, X.get(i, j) - X.get(k, j) * lu.get(i, k));\n        }\n      }\n    }\n    return X;\n  }\n\n  get determinant() {\n    let data = this.LU;\n    if (!data.isSquare()) {\n      throw new Error('Matrix must be square');\n    }\n    let determinant = this.pivotSign;\n    let col = data.columns;\n    for (let j = 0; j < col; j++) {\n      determinant *= data.get(j, j);\n    }\n    return determinant;\n  }\n\n  get lowerTriangularMatrix() {\n    let data = this.LU;\n    let rows = data.rows;\n    let columns = data.columns;\n    let X = new Matrix(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        if (i > j) {\n          X.set(i, j, data.get(i, j));\n        } else if (i === j) {\n          X.set(i, j, 1);\n        } else {\n          X.set(i, j, 0);\n        }\n      }\n    }\n    return X;\n  }\n\n  get upperTriangularMatrix() {\n    let data = this.LU;\n    let rows = data.rows;\n    let columns = data.columns;\n    let X = new Matrix(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        if (i <= j) {\n          X.set(i, j, data.get(i, j));\n        } else {\n          X.set(i, j, 0);\n        }\n      }\n    }\n    return X;\n  }\n\n  get pivotPermutationVector() {\n    return Array.from(this.pivotVector);\n  }\n}\n","export function hypotenuse(a, b) {\n  let r = 0;\n  if (Math.abs(a) > Math.abs(b)) {\n    r = b / a;\n    return Math.abs(a) * Math.sqrt(1 + r * r);\n  }\n  if (b !== 0) {\n    r = a / b;\n    return Math.abs(b) * Math.sqrt(1 + r * r);\n  }\n  return 0;\n}\n","import Matrix from '../matrix';\nimport WrapperMatrix2D from '../wrap/WrapperMatrix2D';\n\nimport { hypotenuse } from './util';\n\nexport default class QrDecomposition {\n  constructor(value) {\n    value = WrapperMatrix2D.checkMatrix(value);\n\n    let qr = value.clone();\n    let m = value.rows;\n    let n = value.columns;\n    let rdiag = new Float64Array(n);\n    let i, j, k, s;\n\n    for (k = 0; k < n; k++) {\n      let nrm = 0;\n      for (i = k; i < m; i++) {\n        nrm = hypotenuse(nrm, qr.get(i, k));\n      }\n      if (nrm !== 0) {\n        if (qr.get(k, k) < 0) {\n          nrm = -nrm;\n        }\n        for (i = k; i < m; i++) {\n          qr.set(i, k, qr.get(i, k) / nrm);\n        }\n        qr.set(k, k, qr.get(k, k) + 1);\n        for (j = k + 1; j < n; j++) {\n          s = 0;\n          for (i = k; i < m; i++) {\n            s += qr.get(i, k) * qr.get(i, j);\n          }\n          s = -s / qr.get(k, k);\n          for (i = k; i < m; i++) {\n            qr.set(i, j, qr.get(i, j) + s * qr.get(i, k));\n          }\n        }\n      }\n      rdiag[k] = -nrm;\n    }\n\n    this.QR = qr;\n    this.Rdiag = rdiag;\n  }\n\n  solve(value) {\n    value = Matrix.checkMatrix(value);\n\n    let qr = this.QR;\n    let m = qr.rows;\n\n    if (value.rows !== m) {\n      throw new Error('Matrix row dimensions must agree');\n    }\n    if (!this.isFullRank()) {\n      throw new Error('Matrix is rank deficient');\n    }\n\n    let count = value.columns;\n    let X = value.clone();\n    let n = qr.columns;\n    let i, j, k, s;\n\n    for (k = 0; k < n; k++) {\n      for (j = 0; j < count; j++) {\n        s = 0;\n        for (i = k; i < m; i++) {\n          s += qr.get(i, k) * X.get(i, j);\n        }\n        s = -s / qr.get(k, k);\n        for (i = k; i < m; i++) {\n          X.set(i, j, X.get(i, j) + s * qr.get(i, k));\n        }\n      }\n    }\n    for (k = n - 1; k >= 0; k--) {\n      for (j = 0; j < count; j++) {\n        X.set(k, j, X.get(k, j) / this.Rdiag[k]);\n      }\n      for (i = 0; i < k; i++) {\n        for (j = 0; j < count; j++) {\n          X.set(i, j, X.get(i, j) - X.get(k, j) * qr.get(i, k));\n        }\n      }\n    }\n\n    return X.subMatrix(0, n - 1, 0, count - 1);\n  }\n\n  isFullRank() {\n    let columns = this.QR.columns;\n    for (let i = 0; i < columns; i++) {\n      if (this.Rdiag[i] === 0) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  get upperTriangularMatrix() {\n    let qr = this.QR;\n    let n = qr.columns;\n    let X = new Matrix(n, n);\n    let i, j;\n    for (i = 0; i < n; i++) {\n      for (j = 0; j < n; j++) {\n        if (i < j) {\n          X.set(i, j, qr.get(i, j));\n        } else if (i === j) {\n          X.set(i, j, this.Rdiag[i]);\n        } else {\n          X.set(i, j, 0);\n        }\n      }\n    }\n    return X;\n  }\n\n  get orthogonalMatrix() {\n    let qr = this.QR;\n    let rows = qr.rows;\n    let columns = qr.columns;\n    let X = new Matrix(rows, columns);\n    let i, j, k, s;\n\n    for (k = columns - 1; k >= 0; k--) {\n      for (i = 0; i < rows; i++) {\n        X.set(i, k, 0);\n      }\n      X.set(k, k, 1);\n      for (j = k; j < columns; j++) {\n        if (qr.get(k, k) !== 0) {\n          s = 0;\n          for (i = k; i < rows; i++) {\n            s += qr.get(i, k) * X.get(i, j);\n          }\n\n          s = -s / qr.get(k, k);\n\n          for (i = k; i < rows; i++) {\n            X.set(i, j, X.get(i, j) + s * qr.get(i, k));\n          }\n        }\n      }\n    }\n    return X;\n  }\n}\n","import Matrix from '../matrix';\nimport WrapperMatrix2D from '../wrap/WrapperMatrix2D';\n\nimport { hypotenuse } from './util';\n\nexport default class SingularValueDecomposition {\n  constructor(value, options = {}) {\n    value = WrapperMatrix2D.checkMatrix(value);\n\n    if (value.isEmpty()) {\n      throw new Error('Matrix must be non-empty');\n    }\n\n    let m = value.rows;\n    let n = value.columns;\n\n    const {\n      computeLeftSingularVectors = true,\n      computeRightSingularVectors = true,\n      autoTranspose = false,\n    } = options;\n\n    let wantu = Boolean(computeLeftSingularVectors);\n    let wantv = Boolean(computeRightSingularVectors);\n\n    let swapped = false;\n    let a;\n    if (m < n) {\n      if (!autoTranspose) {\n        a = value.clone();\n        // eslint-disable-next-line no-console\n        console.warn(\n          'Computing SVD on a matrix with more columns than rows. Consider enabling autoTranspose',\n        );\n      } else {\n        a = value.transpose();\n        m = a.rows;\n        n = a.columns;\n        swapped = true;\n        let aux = wantu;\n        wantu = wantv;\n        wantv = aux;\n      }\n    } else {\n      a = value.clone();\n    }\n\n    let nu = Math.min(m, n);\n    let ni = Math.min(m + 1, n);\n    let s = new Float64Array(ni);\n    let U = new Matrix(m, nu);\n    let V = new Matrix(n, n);\n\n    let e = new Float64Array(n);\n    let work = new Float64Array(m);\n\n    let si = new Float64Array(ni);\n    for (let i = 0; i < ni; i++) si[i] = i;\n\n    let nct = Math.min(m - 1, n);\n    let nrt = Math.max(0, Math.min(n - 2, m));\n    let mrc = Math.max(nct, nrt);\n\n    for (let k = 0; k < mrc; k++) {\n      if (k < nct) {\n        s[k] = 0;\n        for (let i = k; i < m; i++) {\n          s[k] = hypotenuse(s[k], a.get(i, k));\n        }\n        if (s[k] !== 0) {\n          if (a.get(k, k) < 0) {\n            s[k] = -s[k];\n          }\n          for (let i = k; i < m; i++) {\n            a.set(i, k, a.get(i, k) / s[k]);\n          }\n          a.set(k, k, a.get(k, k) + 1);\n        }\n        s[k] = -s[k];\n      }\n\n      for (let j = k + 1; j < n; j++) {\n        if (k < nct && s[k] !== 0) {\n          let t = 0;\n          for (let i = k; i < m; i++) {\n            t += a.get(i, k) * a.get(i, j);\n          }\n          t = -t / a.get(k, k);\n          for (let i = k; i < m; i++) {\n            a.set(i, j, a.get(i, j) + t * a.get(i, k));\n          }\n        }\n        e[j] = a.get(k, j);\n      }\n\n      if (wantu && k < nct) {\n        for (let i = k; i < m; i++) {\n          U.set(i, k, a.get(i, k));\n        }\n      }\n\n      if (k < nrt) {\n        e[k] = 0;\n        for (let i = k + 1; i < n; i++) {\n          e[k] = hypotenuse(e[k], e[i]);\n        }\n        if (e[k] !== 0) {\n          if (e[k + 1] < 0) {\n            e[k] = 0 - e[k];\n          }\n          for (let i = k + 1; i < n; i++) {\n            e[i] /= e[k];\n          }\n          e[k + 1] += 1;\n        }\n        e[k] = -e[k];\n        if (k + 1 < m && e[k] !== 0) {\n          for (let i = k + 1; i < m; i++) {\n            work[i] = 0;\n          }\n          for (let i = k + 1; i < m; i++) {\n            for (let j = k + 1; j < n; j++) {\n              work[i] += e[j] * a.get(i, j);\n            }\n          }\n          for (let j = k + 1; j < n; j++) {\n            let t = -e[j] / e[k + 1];\n            for (let i = k + 1; i < m; i++) {\n              a.set(i, j, a.get(i, j) + t * work[i]);\n            }\n          }\n        }\n        if (wantv) {\n          for (let i = k + 1; i < n; i++) {\n            V.set(i, k, e[i]);\n          }\n        }\n      }\n    }\n\n    let p = Math.min(n, m + 1);\n    if (nct < n) {\n      s[nct] = a.get(nct, nct);\n    }\n    if (m < p) {\n      s[p - 1] = 0;\n    }\n    if (nrt + 1 < p) {\n      e[nrt] = a.get(nrt, p - 1);\n    }\n    e[p - 1] = 0;\n\n    if (wantu) {\n      for (let j = nct; j < nu; j++) {\n        for (let i = 0; i < m; i++) {\n          U.set(i, j, 0);\n        }\n        U.set(j, j, 1);\n      }\n      for (let k = nct - 1; k >= 0; k--) {\n        if (s[k] !== 0) {\n          for (let j = k + 1; j < nu; j++) {\n            let t = 0;\n            for (let i = k; i < m; i++) {\n              t += U.get(i, k) * U.get(i, j);\n            }\n            t = -t / U.get(k, k);\n            for (let i = k; i < m; i++) {\n              U.set(i, j, U.get(i, j) + t * U.get(i, k));\n            }\n          }\n          for (let i = k; i < m; i++) {\n            U.set(i, k, -U.get(i, k));\n          }\n          U.set(k, k, 1 + U.get(k, k));\n          for (let i = 0; i < k - 1; i++) {\n            U.set(i, k, 0);\n          }\n        } else {\n          for (let i = 0; i < m; i++) {\n            U.set(i, k, 0);\n          }\n          U.set(k, k, 1);\n        }\n      }\n    }\n\n    if (wantv) {\n      for (let k = n - 1; k >= 0; k--) {\n        if (k < nrt && e[k] !== 0) {\n          for (let j = k + 1; j < n; j++) {\n            let t = 0;\n            for (let i = k + 1; i < n; i++) {\n              t += V.get(i, k) * V.get(i, j);\n            }\n            t = -t / V.get(k + 1, k);\n            for (let i = k + 1; i < n; i++) {\n              V.set(i, j, V.get(i, j) + t * V.get(i, k));\n            }\n          }\n        }\n        for (let i = 0; i < n; i++) {\n          V.set(i, k, 0);\n        }\n        V.set(k, k, 1);\n      }\n    }\n\n    let pp = p - 1;\n    let iter = 0;\n    let eps = Number.EPSILON;\n    while (p > 0) {\n      let k, kase;\n      for (k = p - 2; k >= -1; k--) {\n        if (k === -1) {\n          break;\n        }\n        const alpha =\n          Number.MIN_VALUE + eps * Math.abs(s[k] + Math.abs(s[k + 1]));\n        if (Math.abs(e[k]) <= alpha || Number.isNaN(e[k])) {\n          e[k] = 0;\n          break;\n        }\n      }\n      if (k === p - 2) {\n        kase = 4;\n      } else {\n        let ks;\n        for (ks = p - 1; ks >= k; ks--) {\n          if (ks === k) {\n            break;\n          }\n          let t =\n            (ks !== p ? Math.abs(e[ks]) : 0) +\n            (ks !== k + 1 ? Math.abs(e[ks - 1]) : 0);\n          if (Math.abs(s[ks]) <= eps * t) {\n            s[ks] = 0;\n            break;\n          }\n        }\n        if (ks === k) {\n          kase = 3;\n        } else if (ks === p - 1) {\n          kase = 1;\n        } else {\n          kase = 2;\n          k = ks;\n        }\n      }\n\n      k++;\n\n      switch (kase) {\n        case 1: {\n          let f = e[p - 2];\n          e[p - 2] = 0;\n          for (let j = p - 2; j >= k; j--) {\n            let t = hypotenuse(s[j], f);\n            let cs = s[j] / t;\n            let sn = f / t;\n            s[j] = t;\n            if (j !== k) {\n              f = -sn * e[j - 1];\n              e[j - 1] = cs * e[j - 1];\n            }\n            if (wantv) {\n              for (let i = 0; i < n; i++) {\n                t = cs * V.get(i, j) + sn * V.get(i, p - 1);\n                V.set(i, p - 1, -sn * V.get(i, j) + cs * V.get(i, p - 1));\n                V.set(i, j, t);\n              }\n            }\n          }\n          break;\n        }\n        case 2: {\n          let f = e[k - 1];\n          e[k - 1] = 0;\n          for (let j = k; j < p; j++) {\n            let t = hypotenuse(s[j], f);\n            let cs = s[j] / t;\n            let sn = f / t;\n            s[j] = t;\n            f = -sn * e[j];\n            e[j] = cs * e[j];\n            if (wantu) {\n              for (let i = 0; i < m; i++) {\n                t = cs * U.get(i, j) + sn * U.get(i, k - 1);\n                U.set(i, k - 1, -sn * U.get(i, j) + cs * U.get(i, k - 1));\n                U.set(i, j, t);\n              }\n            }\n          }\n          break;\n        }\n        case 3: {\n          const scale = Math.max(\n            Math.abs(s[p - 1]),\n            Math.abs(s[p - 2]),\n            Math.abs(e[p - 2]),\n            Math.abs(s[k]),\n            Math.abs(e[k]),\n          );\n          const sp = s[p - 1] / scale;\n          const spm1 = s[p - 2] / scale;\n          const epm1 = e[p - 2] / scale;\n          const sk = s[k] / scale;\n          const ek = e[k] / scale;\n          const b = ((spm1 + sp) * (spm1 - sp) + epm1 * epm1) / 2;\n          const c = sp * epm1 * (sp * epm1);\n          let shift = 0;\n          if (b !== 0 || c !== 0) {\n            if (b < 0) {\n              shift = 0 - Math.sqrt(b * b + c);\n            } else {\n              shift = Math.sqrt(b * b + c);\n            }\n            shift = c / (b + shift);\n          }\n          let f = (sk + sp) * (sk - sp) + shift;\n          let g = sk * ek;\n          for (let j = k; j < p - 1; j++) {\n            let t = hypotenuse(f, g);\n            if (t === 0) t = Number.MIN_VALUE;\n            let cs = f / t;\n            let sn = g / t;\n            if (j !== k) {\n              e[j - 1] = t;\n            }\n            f = cs * s[j] + sn * e[j];\n            e[j] = cs * e[j] - sn * s[j];\n            g = sn * s[j + 1];\n            s[j + 1] = cs * s[j + 1];\n            if (wantv) {\n              for (let i = 0; i < n; i++) {\n                t = cs * V.get(i, j) + sn * V.get(i, j + 1);\n                V.set(i, j + 1, -sn * V.get(i, j) + cs * V.get(i, j + 1));\n                V.set(i, j, t);\n              }\n            }\n            t = hypotenuse(f, g);\n            if (t === 0) t = Number.MIN_VALUE;\n            cs = f / t;\n            sn = g / t;\n            s[j] = t;\n            f = cs * e[j] + sn * s[j + 1];\n            s[j + 1] = -sn * e[j] + cs * s[j + 1];\n            g = sn * e[j + 1];\n            e[j + 1] = cs * e[j + 1];\n            if (wantu && j < m - 1) {\n              for (let i = 0; i < m; i++) {\n                t = cs * U.get(i, j) + sn * U.get(i, j + 1);\n                U.set(i, j + 1, -sn * U.get(i, j) + cs * U.get(i, j + 1));\n                U.set(i, j, t);\n              }\n            }\n          }\n          e[p - 2] = f;\n          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 (let i = 0; i <= pp; i++) {\n                V.set(i, k, -V.get(i, k));\n              }\n            }\n          }\n          while (k < pp) {\n            if (s[k] >= s[k + 1]) {\n              break;\n            }\n            let t = s[k];\n            s[k] = s[k + 1];\n            s[k + 1] = t;\n            if (wantv && k < n - 1) {\n              for (let i = 0; i < n; i++) {\n                t = V.get(i, k + 1);\n                V.set(i, k + 1, V.get(i, k));\n                V.set(i, k, t);\n              }\n            }\n            if (wantu && k < m - 1) {\n              for (let i = 0; i < m; i++) {\n                t = U.get(i, k + 1);\n                U.set(i, k + 1, U.get(i, k));\n                U.set(i, k, t);\n              }\n            }\n            k++;\n          }\n          iter = 0;\n          p--;\n          break;\n        }\n        // no default\n      }\n    }\n\n    if (swapped) {\n      let tmp = V;\n      V = U;\n      U = tmp;\n    }\n\n    this.m = m;\n    this.n = n;\n    this.s = s;\n    this.U = U;\n    this.V = V;\n  }\n\n  solve(value) {\n    let Y = value;\n    let e = this.threshold;\n    let scols = this.s.length;\n    let Ls = Matrix.zeros(scols, scols);\n\n    for (let i = 0; i < scols; i++) {\n      if (Math.abs(this.s[i]) <= e) {\n        Ls.set(i, i, 0);\n      } else {\n        Ls.set(i, i, 1 / this.s[i]);\n      }\n    }\n\n    let U = this.U;\n    let V = this.rightSingularVectors;\n\n    let VL = V.mmul(Ls);\n    let vrows = V.rows;\n    let urows = U.rows;\n    let VLU = Matrix.zeros(vrows, urows);\n\n    for (let i = 0; i < vrows; i++) {\n      for (let j = 0; j < urows; j++) {\n        let sum = 0;\n        for (let k = 0; k < scols; k++) {\n          sum += VL.get(i, k) * U.get(j, k);\n        }\n        VLU.set(i, j, sum);\n      }\n    }\n\n    return VLU.mmul(Y);\n  }\n\n  solveForDiagonal(value) {\n    return this.solve(Matrix.diag(value));\n  }\n\n  inverse() {\n    let V = this.V;\n    let e = this.threshold;\n    let vrows = V.rows;\n    let vcols = V.columns;\n    let X = new Matrix(vrows, this.s.length);\n\n    for (let i = 0; i < vrows; i++) {\n      for (let j = 0; j < vcols; j++) {\n        if (Math.abs(this.s[j]) > e) {\n          X.set(i, j, V.get(i, j) / this.s[j]);\n        }\n      }\n    }\n\n    let U = this.U;\n\n    let urows = U.rows;\n    let ucols = U.columns;\n    let Y = new Matrix(vrows, urows);\n\n    for (let i = 0; i < vrows; i++) {\n      for (let j = 0; j < urows; j++) {\n        let sum = 0;\n        for (let k = 0; k < ucols; k++) {\n          sum += X.get(i, k) * U.get(j, k);\n        }\n        Y.set(i, j, sum);\n      }\n    }\n\n    return Y;\n  }\n\n  get condition() {\n    return this.s[0] / this.s[Math.min(this.m, this.n) - 1];\n  }\n\n  get norm2() {\n    return this.s[0];\n  }\n\n  get rank() {\n    let tol = Math.max(this.m, this.n) * this.s[0] * Number.EPSILON;\n    let r = 0;\n    let s = this.s;\n    for (let i = 0, ii = s.length; i < ii; i++) {\n      if (s[i] > tol) {\n        r++;\n      }\n    }\n    return r;\n  }\n\n  get diagonal() {\n    return Array.from(this.s);\n  }\n\n  get threshold() {\n    return (Number.EPSILON / 2) * Math.max(this.m, this.n) * this.s[0];\n  }\n\n  get leftSingularVectors() {\n    return this.U;\n  }\n\n  get rightSingularVectors() {\n    return this.V;\n  }\n\n  get diagonalMatrix() {\n    return Matrix.diag(this.s);\n  }\n}\n","import LuDecomposition from './dc/lu';\nimport QrDecomposition from './dc/qr';\nimport SingularValueDecomposition from './dc/svd';\nimport Matrix from './matrix';\nimport WrapperMatrix2D from './wrap/WrapperMatrix2D';\n\nexport function inverse(matrix, useSVD = false) {\n  matrix = WrapperMatrix2D.checkMatrix(matrix);\n  if (useSVD) {\n    return new SingularValueDecomposition(matrix).inverse();\n  } else {\n    return solve(matrix, Matrix.eye(matrix.rows));\n  }\n}\n\nexport function solve(leftHandSide, rightHandSide, useSVD = false) {\n  leftHandSide = WrapperMatrix2D.checkMatrix(leftHandSide);\n  rightHandSide = WrapperMatrix2D.checkMatrix(rightHandSide);\n  if (useSVD) {\n    return new SingularValueDecomposition(leftHandSide).solve(rightHandSide);\n  } else {\n    return leftHandSide.isSquare()\n      ? new LuDecomposition(leftHandSide).solve(rightHandSide)\n      : new QrDecomposition(leftHandSide).solve(rightHandSide);\n  }\n}\n","import isArray from 'is-any-array';\nimport max from 'ml-array-max';\nimport sum from 'ml-array-sum';\n\nfunction norm(input) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var _options$algorithm = options.algorithm,\n      algorithm = _options$algorithm === void 0 ? 'absolute' : _options$algorithm,\n      _options$sumValue = options.sumValue,\n      sumValue = _options$sumValue === void 0 ? 1 : _options$sumValue,\n      _options$maxValue = options.maxValue,\n      maxValue = _options$maxValue === void 0 ? 1 : _options$maxValue;\n\n  if (!isArray(input)) {\n    throw new Error('input must be an array');\n  }\n\n  var output;\n\n  if (options.output !== undefined) {\n    if (!isArray(options.output)) {\n      throw new TypeError('output option must be an array if specified');\n    }\n\n    output = options.output;\n  } else {\n    output = new Array(input.length);\n  }\n\n  if (input.length === 0) {\n    throw new Error('input must not be empty');\n  }\n\n  switch (algorithm.toLowerCase()) {\n    case 'absolute':\n      {\n        var absoluteSumValue = absoluteSum(input) / sumValue;\n        if (absoluteSumValue === 0) return input.slice(0);\n\n        for (var i = 0; i < input.length; i++) {\n          output[i] = input[i] / absoluteSumValue;\n        }\n\n        return output;\n      }\n\n    case 'max':\n      {\n        var currentMaxValue = max(input);\n        if (currentMaxValue === 0) return input.slice(0);\n        var factor = maxValue / currentMaxValue;\n\n        for (var _i = 0; _i < input.length; _i++) {\n          output[_i] = input[_i] * factor;\n        }\n\n        return output;\n      }\n\n    case 'sum':\n      {\n        var sumFactor = sum(input) / sumValue;\n        if (sumFactor === 0) return input.slice(0);\n\n        for (var _i2 = 0; _i2 < input.length; _i2++) {\n          output[_i2] = input[_i2] / sumFactor;\n        }\n\n        return output;\n      }\n\n    default:\n      throw new Error(\"norm: unknown algorithm: \".concat(algorithm));\n  }\n}\n\nfunction absoluteSum(input) {\n  var sumValue = 0;\n\n  for (var i = 0; i < input.length; i++) {\n    sumValue += Math.abs(input[i]);\n  }\n\n  return sumValue;\n}\n\nexport default norm;\n","import isArray from 'is-any-array';\n\nfunction _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n    _typeof = function (obj) {\n      return typeof obj;\n    };\n  } else {\n    _typeof = function (obj) {\n      return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    };\n  }\n\n  return _typeof(obj);\n}\n\n/**\r\n * Fill an array with sequential numbers\r\n * @param {Array<number>} [input] - optional destination array (if not provided a new array will be created)\r\n * @param {object} [options={}]\r\n * @param {number} [options.from=0] - first value in the array\r\n * @param {number} [options.to=10] - last value in the array\r\n * @param {number} [options.size=input.length] - size of the array (if not provided calculated from step)\r\n * @param {number} [options.step] - if not provided calculated from size\r\n * @return {Array<number>}\r\n */\n\nfunction sequentialFill() {\n  var input = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (_typeof(input) === 'object' && !isArray(input)) {\n    options = input;\n    input = [];\n  }\n\n  if (!isArray(input)) {\n    throw new TypeError('input must be an array');\n  }\n\n  var _options = options,\n      _options$from = _options.from,\n      from = _options$from === void 0 ? 0 : _options$from,\n      _options$to = _options.to,\n      to = _options$to === void 0 ? 10 : _options$to,\n      _options$size = _options.size,\n      size = _options$size === void 0 ? input.length : _options$size,\n      step = _options.step;\n\n  if (size !== 0 && step) {\n    throw new Error('step is defined by the array size');\n  }\n\n  if (!size) {\n    if (step) {\n      size = Math.floor((to - from) / step) + 1;\n    } else {\n      size = to - from + 1;\n    }\n  }\n\n  if (!step && size) {\n    step = (to - from) / (size - 1);\n  }\n\n  if (Array.isArray(input)) {\n    // only works with normal array\n    input.length = 0;\n\n    for (var i = 0; i < size; i++) {\n      input.push(from);\n      from += step;\n    }\n  } else {\n    if (input.length !== size) {\n      throw new Error('sequentialFill typed array must have the correct length');\n    }\n\n    for (var _i = 0; _i < size; _i++) {\n      input[_i] = from;\n      from += step;\n    }\n  }\n\n  return input;\n}\n\nexport default sequentialFill;\n","/**\n * Normalize an array of zones:\n * - ensure than from < to\n * - merge overlapping zones\n *\n * The method will always check if from if lower than to and will swap if required.\n * @param {Array} [zones=[]]\n * @param {object} [options={}]\n * @param {number} [options.from=Number.NEGATIVE_INFINITY] Specify min value of a zone\n * @param {number} [options.to=Number.POSITIVE_INFINITY] Specify max value of a zone\n */\n\nexport function normalize(zones = [], options = {}) {\n  if (zones.length === 0) return [];\n  let {\n    from = Number.NEGATIVE_INFINITY,\n    to = Number.POSITIVE_INFINITY,\n  } = options;\n  if (from > to) [from, to] = [to, from];\n\n  zones = JSON.parse(JSON.stringify(zones)).map((zone) =>\n    zone.from > zone.to ? { from: zone.to, to: zone.from } : zone,\n  );\n  zones = zones.sort((a, b) => {\n    if (a.from !== b.from) return a.from - b.from;\n    return a.to - b.to;\n  });\n\n  zones.forEach((zone) => {\n    if (from > zone.from) zone.from = from;\n    if (to < zone.to) zone.to = to;\n  });\n\n  zones = zones.filter((zone) => zone.from <= zone.to);\n  if (zones.length === 0) return [];\n\n  let currentZone = zones[0];\n  let result = [currentZone];\n  for (let i = 1; i < zones.length; i++) {\n    let zone = zones[i];\n    if (zone.from <= currentZone.to) {\n      currentZone.to = zone.to;\n    } else {\n      currentZone = zone;\n      result.push(currentZone);\n    }\n  }\n  return result;\n}\n","import { normalize } from './normalize';\n\n/**\n * Convert an array of exclusions and keep only from / to\n *\n * The method will always check if from if lower than to and will swap if required.\n * @param {Array} [exclusions=[]]\n * @param {object} [options={}]\n * @param {number} [options.from=Number.NEGATIVE_INFINITY] Specify min value of zones (after inversion)\n * @param {number} [options.to=Number.POSITIVE_INFINITY] Specify max value of zones (after inversion)\n */\n\nexport function invert(exclusions = [], options = {}) {\n  let {\n    from = Number.NEGATIVE_INFINITY,\n    to = Number.POSITIVE_INFINITY,\n  } = options;\n  if (from > to) [from, to] = [to, from];\n\n  exclusions = normalize(exclusions, { from, to });\n  if (exclusions.length === 0) return [{ from, to }];\n\n  let zones = [];\n  for (let i = 0; i < exclusions.length; i++) {\n    let exclusion = exclusions[i];\n    let nextExclusion = exclusions[i + 1];\n    if (i === 0) {\n      if (exclusion.from > from) {\n        zones.push({ from, to: exclusion.from });\n      }\n    }\n    if (i === exclusions.length - 1) {\n      if (exclusion.to < to) {\n        zones.push({ from: exclusion.to, to });\n      }\n    } else {\n      zones.push({ from: exclusion.to, to: nextExclusion.from });\n    }\n  }\n\n  return zones;\n}\n","import { normalize } from './normalize';\n\n/**\n * Add the number of points per zone to reach a specified total\n * @param {Array} [zones=[]]\n * @param {number} [numberOfPoints] Total number of points to distribute between zones\n * @param {object} [options={}]\n * @param {number} [options.from=Number.NEGATIVE_INFINITY] Specify min value of a zone\n * @param {number} [options.to=Number.POSITIVE_INFINITY] Specify max value of a zone\n */\n\nexport function zonesWithPoints(zones, numberOfPoints, options = {}) {\n  if (zones.length === 0) return zones;\n  zones = normalize(zones, options);\n\n  const totalSize = zones.reduce((previous, current) => {\n    return previous + (current.to - current.from);\n  }, 0);\n\n  let unitsPerPoint = totalSize / numberOfPoints;\n  let currentTotal = 0;\n  for (let i = 0; i < zones.length - 1; i++) {\n    let zone = zones[i];\n    zone.numberOfPoints = Math.min(\n      Math.round((zone.to - zone.from) / unitsPerPoint),\n      numberOfPoints - currentTotal,\n    );\n    currentTotal += zone.numberOfPoints;\n  }\n\n  zones[zones.length - 1].numberOfPoints = numberOfPoints - currentTotal;\n\n  return zones;\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 {number} x0\n * @param {number} x1\n * @param {number} slope\n * @param {number} intercept\n * @return {number} integral value.\n */\nexport default function integral(x0, x1, slope, intercept) {\n  return (\n    0.5 * slope * x1 * x1 +\n    intercept * x1 -\n    (0.5 * slope * x0 * x0 + intercept * x0)\n  );\n}\n","import integral from './integral';\n\n/**\n * function that retrieves the getEquallySpacedData with the variant \"smooth\"\n *\n * @param {Array<number>} x\n * @param {Array<number>} y\n * @param {number} from - Initial point\n * @param {number} to - Final point\n * @param {number} numberOfPoints\n * @return {Array} - Array of y's equally spaced with the variant \"smooth\"\n */\nexport default function equallySpacedSmooth(x, y, from, to, numberOfPoints) {\n  let xLength = x.length;\n\n  let step = (to - from) / (numberOfPoints - 1);\n  let halfStep = step / 2;\n\n  let output = new Array(numberOfPoints);\n\n  let initialOriginalStep = x[1] - x[0];\n  let lastOriginalStep = x[xLength - 1] - x[xLength - 2];\n\n  // Init main variables\n  let min = from - halfStep;\n  let max = from + halfStep;\n\n  let previousX = Number.MIN_VALUE;\n  let previousY = 0;\n  let nextX = x[0] - initialOriginalStep;\n  let nextY = 0;\n\n  let currentValue = 0;\n  let slope = 0;\n  let intercept = 0;\n  let sumAtMin = 0;\n  let sumAtMax = 0;\n\n  let i = 0; // index of input\n  let j = 0; // index of output\n\n  function getSlope(x0, y0, x1, y1) {\n    return (y1 - y0) / (x1 - x0);\n  }\n\n  let add = 0;\n  main: while (true) {\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      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 * function that retrieves the getEquallySpacedData with the variant \"slot\"\n *\n * @param {Array<number>} x\n * @param {Array<number>} y\n * @param {number} from - Initial point\n * @param {number} to - Final point\n * @param {number} numberOfPoints\n * @return {Array} - Array of y's equally spaced with the variant \"slot\"\n */\nexport default function equallySpacedSlot(x, y, from, to, numberOfPoints) {\n  let xLength = x.length;\n\n  let step = (to - from) / (numberOfPoints - 1);\n  let halfStep = step / 2;\n  let lastStep = x[x.length - 1] - x[x.length - 2];\n\n  let start = from - halfStep;\n  let output = new Array(numberOfPoints);\n\n  // Init main variables\n  let min = start;\n  let max = start + step;\n\n  let previousX = -Number.MAX_VALUE;\n  let previousY = 0;\n  let nextX = x[0];\n  let nextY = y[0];\n  let frontOutsideSpectra = 0;\n  let backOutsideSpectra = true;\n\n  let currentValue = 0;\n\n  // for slot algorithm\n  let currentPoints = 0;\n\n  let i = 1; // index of input\n  let 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","import sequentialFill from 'ml-array-sequential-fill';\nimport { zonesWithPoints, invert } from 'ml-zones';\n\nimport equallySpacedSmooth from './equallySpacedSmooth';\nimport equallySpacedSlot from './equallySpacedSlot';\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 * If exclusions zone are present, zones are ignored !\n * @param {object} [arrayXY={}] - object containing 2 properties x and y (both an array)\n * @param {object} [options={}]\n * @param {number} [options.from=x[0]]\n * @param {number} [options.to=x[x.length-1]]\n * @param {string} [options.variant='smooth']\n * @param {number} [options.numberOfPoints=100]\n * @param {Array} [options.exclusions=[]] array of from / to that should be skipped for the generation of the points\n * @param {Array} [options.zones=[]] array of from / to that should be kept\n * @return {object<x: Array, y:Array>} new object with x / y array with the equally spaced data.\n */\n\nexport default function equallySpaced(arrayXY = {}, options = {}) {\n  let { x, y } = arrayXY;\n  let xLength = x.length;\n  let reverse = false;\n  if (x.length > 1 && x[0] > x[1]) {\n    x = x.slice().reverse();\n    y = y.slice().reverse();\n    reverse = true;\n  }\n\n  let {\n    from = x[0],\n    to = x[xLength - 1],\n    variant = 'smooth',\n    numberOfPoints = 100,\n    exclusions = [],\n    zones = [],\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  if (typeof numberOfPoints !== 'number' || isNaN(numberOfPoints)) {\n    throw new RangeError(\"'numberOfPoints' option must be a number\");\n  }\n\n  if (numberOfPoints < 2) {\n    throw new RangeError(\"'numberOfPoints' option must be greater than 1\");\n  }\n\n  if (zones.length === 0) {\n    zones = invert(exclusions, { from, to });\n  }\n\n  zones = zonesWithPoints(zones, numberOfPoints, { from, to });\n\n  let xResult = [];\n  let yResult = [];\n  for (let zone of zones) {\n    let zoneResult = processZone(\n      x,\n      y,\n      zone.from,\n      zone.to,\n      zone.numberOfPoints,\n      variant,\n      reverse,\n    );\n\n    xResult = xResult.concat(zoneResult.x);\n    yResult = yResult.concat(zoneResult.y);\n  }\n  if (reverse) {\n    if (from < to) {\n      return { x: xResult.reverse(), y: yResult.reverse() };\n    } else {\n      return { x: xResult, y: yResult };\n    }\n  } else {\n    if (from < to) {\n      return { x: xResult, y: yResult };\n    } else {\n      return { x: xResult.reverse(), y: yResult.reverse() };\n    }\n  }\n}\n\nfunction processZone(x, y, from, to, numberOfPoints, variant) {\n  if (numberOfPoints < 1) {\n    throw new RangeError('the number of points must be at least 1');\n  }\n\n  let output =\n    variant === 'slot'\n      ? equallySpacedSlot(x, y, from, to, numberOfPoints)\n      : equallySpacedSmooth(x, y, from, to, numberOfPoints);\n\n  return {\n    x: sequentialFill({\n      from,\n      to,\n      size: numberOfPoints,\n    }),\n    y: output,\n  };\n}\n","export default function getZones(from, to, exclusions = []) {\n  if (from > to) {\n    [from, to] = [to, from];\n  }\n\n  // in exclusions from and to have to be defined\n  exclusions = exclusions.filter(\n    (exclusion) => exclusion.from !== undefined && exclusion.to !== undefined\n  );\n\n  exclusions = JSON.parse(JSON.stringify(exclusions));\n  // we ensure that from before to\n  exclusions.forEach((exclusion) => {\n    if (exclusion.from > exclusion.to) {\n      [exclusion.to, exclusion.from] = [exclusion.from, exclusion.to];\n    }\n  });\n\n  exclusions.sort((a, b) => a.from - b.from);\n\n  // we will rework the exclusions in order to remove overlap and outside range (from / to)\n  exclusions.forEach((exclusion) => {\n    if (exclusion.from < from) exclusion.from = from;\n    if (exclusion.to > to) exclusion.to = to;\n  });\n  for (let i = 0; i < exclusions.length - 1; i++) {\n    if (exclusions[i].to > exclusions[i + 1].from) {\n      exclusions[i].to = exclusions[i + 1].from;\n    }\n  }\n  exclusions = exclusions.filter((exclusion) => exclusion.from < exclusion.to);\n\n  if (!exclusions || exclusions.length === 0) {\n    return [{ from, to }];\n  }\n\n  let zones = [];\n  let currentFrom = from;\n  for (let exclusion of exclusions) {\n    if (currentFrom < exclusion.from) {\n      zones.push({\n        from: currentFrom,\n        to: exclusion.from\n      });\n    }\n\n    currentFrom = exclusion.to;\n  }\n  if (currentFrom < to) {\n    zones.push({\n      from: currentFrom,\n      to: to\n    });\n  }\n\n  return zones;\n}\n","import getZones from './getZones';\n\n/**\n * Filter an array x/y based on various criteria\n * x points are expected to be sorted\n *\n * @param {object} points\n * @param {object} [options={}]\n * @param {array} [options.from]\n * @param {array} [options.to]\n * @param {array} [options.exclusions=[]]\n * @return {{x: Array<number>, y: Array<number>}}\n */\n\nexport default function filterX(points, options = {}) {\n  const { x, y } = points;\n  const { from = x[0], to = x[x.length - 1], exclusions = [] } = options;\n\n  let zones = getZones(from, to, exclusions);\n\n\n  let currentZoneIndex = 0;\n  let newX = [];\n  let newY = [];\n  let position = 0;\n  while (position < x.length) {\n    if (\n      x[position] <= zones[currentZoneIndex].to &&\n      x[position] >= zones[currentZoneIndex].from\n    ) {\n      newX.push(x[position]);\n      newY.push(y[position]);\n    } else {\n      if (x[position] > zones[currentZoneIndex].to) {\n        currentZoneIndex++;\n        if (!zones[currentZoneIndex]) break;\n      }\n    }\n    position++;\n  }\n\n  return {\n    x: newX,\n    y: newY\n  };\n}\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","export default function maybeToPrecision(value, digits) {\n  if (value < 0) {\n    value = 0 - value;\n    if (typeof digits === 'number') {\n      return `- ${value.toPrecision(digits)}`;\n    } else {\n      return `- ${value.toString()}`;\n    }\n  } else {\n    if (typeof digits === 'number') {\n      return value.toPrecision(digits);\n    } else {\n      return value.toString();\n    }\n  }\n}\n","import isAnyArray from 'is-any-array';\n\nexport default function checkArraySize(x, y) {\n  if (!isAnyArray(x) || !isAnyArray(y)) {\n    throw new TypeError('x and y must be arrays');\n  }\n  if (x.length !== y.length) {\n    throw new RangeError('x and y arrays must have the same length');\n  }\n}\n","import isAnyArray from 'is-any-array';\n\nexport { default as maybeToPrecision } from './maybeToPrecision';\nexport { default as checkArrayLength } from './checkArrayLength';\nexport default class BaseRegression {\n  constructor() {\n    if (new.target === BaseRegression) {\n      throw new Error('BaseRegression must be subclassed');\n    }\n  }\n\n  predict(x) {\n    if (typeof x === 'number') {\n      return this._predict(x);\n    } else if (isAnyArray(x)) {\n      const y = [];\n      for (let i = 0; i < x.length; i++) {\n        y.push(this._predict(x[i]));\n      }\n      return y;\n    } else {\n      throw new TypeError('x must be a number or array');\n    }\n  }\n\n  _predict() {\n    throw new Error('_predict must be implemented');\n  }\n\n  train() {\n    // Do nothing for this package\n  }\n\n  toString() {\n    return '';\n  }\n\n  toLaTeX() {\n    return '';\n  }\n\n  /**\n   * Return the correlation coefficient of determination (r) and chi-square.\n   * @param {Array<number>} x\n   * @param {Array<number>} y\n   * @return {object}\n   */\n  score(x, y) {\n    if (!isAnyArray(x) || !isAnyArray(y) || x.length !== y.length) {\n      throw new Error('x and y must be arrays of the same length');\n    }\n\n    const n = x.length;\n    const y2 = new Array(n);\n    for (let i = 0; i < n; i++) {\n      y2[i] = this._predict(x[i]);\n    }\n\n    let xSum = 0;\n    let ySum = 0;\n    let chi2 = 0;\n    let rmsd = 0;\n    let xSquared = 0;\n    let ySquared = 0;\n    let xY = 0;\n    for (let i = 0; i < n; i++) {\n      xSum += y2[i];\n      ySum += y[i];\n      xSquared += y2[i] * y2[i];\n      ySquared += y[i] * y[i];\n      xY += y2[i] * y[i];\n      if (y[i] !== 0) {\n        chi2 += ((y[i] - y2[i]) * (y[i] - y2[i])) / y[i];\n      }\n      rmsd += (y[i] - y2[i]) * (y[i] - y2[i]);\n    }\n\n    const r =\n      (n * xY - xSum * ySum) /\n      Math.sqrt((n * xSquared - xSum * xSum) * (n * ySquared - ySum * ySum));\n\n    return {\n      r: r,\n      r2: r * r,\n      chi2: chi2,\n      rmsd: Math.sqrt(rmsd / n),\n    };\n  }\n}\n","import BaseRegression, {\n  checkArrayLength,\n  maybeToPrecision,\n} from 'ml-regression-base';\nimport { Matrix, MatrixTransposeView, solve } from 'ml-matrix';\n\nexport default class PolynomialRegression extends BaseRegression {\n  constructor(x, y, degree) {\n    super();\n    if (x === true) {\n      this.degree = y.degree;\n      this.powers = y.powers;\n      this.coefficients = y.coefficients;\n    } else {\n      checkArrayLength(x, y);\n      regress(this, x, y, degree);\n    }\n  }\n\n  _predict(x) {\n    let y = 0;\n    for (let k = 0; k < this.powers.length; k++) {\n      y += this.coefficients[k] * Math.pow(x, this.powers[k]);\n    }\n    return y;\n  }\n\n  toJSON() {\n    return {\n      name: 'polynomialRegression',\n      degree: this.degree,\n      powers: this.powers,\n      coefficients: this.coefficients,\n    };\n  }\n\n  toString(precision) {\n    return this._toFormula(precision, false);\n  }\n\n  toLaTeX(precision) {\n    return this._toFormula(precision, true);\n  }\n\n  _toFormula(precision, isLaTeX) {\n    let sup = '^';\n    let closeSup = '';\n    let times = ' * ';\n    if (isLaTeX) {\n      sup = '^{';\n      closeSup = '}';\n      times = '';\n    }\n\n    let fn = '';\n    let str = '';\n    for (let k = 0; k < this.coefficients.length; k++) {\n      str = '';\n      if (this.coefficients[k] !== 0) {\n        if (this.powers[k] === 0) {\n          str = maybeToPrecision(this.coefficients[k], precision);\n        } else {\n          if (this.powers[k] === 1) {\n            str = `${maybeToPrecision(this.coefficients[k], precision) +\n              times}x`;\n          } else {\n            str = `${maybeToPrecision(this.coefficients[k], precision) +\n              times}x${sup}${this.powers[k]}${closeSup}`;\n          }\n        }\n\n        if (this.coefficients[k] > 0 && k !== this.coefficients.length - 1) {\n          str = ` + ${str}`;\n        } else if (k !== this.coefficients.length - 1) {\n          str = ` ${str}`;\n        }\n      }\n      fn = str + fn;\n    }\n    if (fn.charAt(0) === '+') {\n      fn = fn.slice(1);\n    }\n\n    return `f(x) = ${fn}`;\n  }\n\n  static load(json) {\n    if (json.name !== 'polynomialRegression') {\n      throw new TypeError('not a polynomial regression model');\n    }\n    return new PolynomialRegression(true, json);\n  }\n}\n\nfunction regress(pr, x, y, degree) {\n  const n = x.length;\n  let powers;\n  if (Array.isArray(degree)) {\n    powers = degree;\n    degree = powers.length;\n  } else {\n    degree++;\n    powers = new Array(degree);\n    for (let k = 0; k < degree; k++) {\n      powers[k] = k;\n    }\n  }\n  const F = new Matrix(n, degree);\n  const Y = new Matrix([y]);\n  for (let k = 0; k < degree; k++) {\n    for (let i = 0; i < n; i++) {\n      if (powers[k] === 0) {\n        F.set(i, k, 1);\n      } else {\n        F.set(i, k, Math.pow(x[i], powers[k]));\n      }\n    }\n  }\n\n  const FT = new MatrixTransposeView(F);\n  const A = FT.mmul(F);\n  const B = FT.mmul(new MatrixTransposeView(Y));\n\n  pr.degree = degree - 1;\n  pr.powers = powers;\n  pr.coefficients = solve(A, B).to1DArray();\n}\n","import PolynomialRegression from 'ml-regression-polynomial';\n\n/**\n * Iterative regression-based baseline correction\n * @param {Array<number>} x - Independent axis variable\n * @param {Array<number>} y - Dependent axis variable\n * @param {object} [options] - Options object\n * @param {number} [options.maxIterations = 100] - Maximum number of allowed iterations\n * @param {function} [options.Regression = PolynomialRegression] - Regression class with a predict method\n * @param {*} [options.regressionOptions] - Options for regressionFunction\n * @param {number} [options.tolerance = 0.001] - Convergence error tolerance\n * @return {{corrected: Array<number>, delta: number, iteration: number, baseline: Array<number>}}\n */\nexport default function baselineCorrectionRegression(x, y, options = {}) {\n  let {\n    maxIterations = 100,\n    Regression = PolynomialRegression,\n    regressionOptions,\n    tolerance = 0.001,\n  } = options;\n\n  if (!regressionOptions && Regression === PolynomialRegression) {\n    regressionOptions = 3;\n  }\n\n  let baseline = y.slice();\n  let fitting = y.slice();\n  let oldFitting = y;\n  let iteration = 0;\n  let delta;\n  let regression;\n  while (iteration < maxIterations) {\n    // Calculate the fitting result\n    regression = new Regression(x, baseline, regressionOptions);\n\n    delta = 0;\n    for (let i = 0; i < baseline.length; i++) {\n      fitting[i] = regression.predict(x[i]);\n      if (baseline[i] > fitting[i]) {\n        baseline[i] = fitting[i];\n      }\n\n      delta += Math.abs((fitting[i] - oldFitting[i]) / oldFitting[i]);\n    }\n\n    // Stop criterion\n    if (delta < tolerance) {\n      break;\n    } else {\n      oldFitting = fitting.slice();\n      iteration++;\n    }\n  }\n\n  // removes baseline\n  let corrected = new Array(baseline.length);\n  for (let j = 0; j < baseline.length; j++) {\n    corrected[j] = y[j] - baseline[j];\n  }\n\n  return {\n    corrected,\n    delta,\n    iteration,\n    baseline,\n    regression: regression,\n  };\n}\n","'use strict';\n\nvar defaultOptions = {\n  size: 1,\n  value: 0\n};\n\n/**\n * Case when the entry is an array\n * @param data\n * @param options\n * @returns {Array}\n */\nfunction arrayCase(data, options) {\n  var len = data.length;\n  if (typeof options.size === 'number') {\n    options.size = [options.size, options.size];\n  }\n\n  var cond = len + options.size[0] + options.size[1];\n\n  var output;\n  if (options.output) {\n    if (options.output.length !== cond) {\n      throw new RangeError('Wrong output size');\n    }\n    output = options.output;\n  } else {\n    output = new Array(cond);\n  }\n\n  var i;\n  if (options.value === 'circular') {\n    for (i = 0; i < cond; i++) {\n      if (i < options.size[0]) {\n        output[i] = data[(len - (options.size[0] % len) + i) % len];\n      } else if (i < options.size[0] + len) {\n        output[i] = data[i - options.size[0]];\n      } else {\n        output[i] = data[(i - options.size[0]) % len];\n      }\n    }\n  } else if (options.value === 'replicate') {\n    for (i = 0; i < cond; i++) {\n      if (i < options.size[0]) output[i] = data[0];\n      else if (i < options.size[0] + len) output[i] = data[i - options.size[0]];\n      else output[i] = data[len - 1];\n    }\n  } else if (options.value === 'symmetric') {\n    if (options.size[0] > len || options.size[1] > len) {\n      throw new RangeError(\n        'expanded value should not be bigger than the data length'\n      );\n    }\n    for (i = 0; i < cond; i++) {\n      if (i < options.size[0]) output[i] = data[options.size[0] - 1 - i];\n      else if (i < options.size[0] + len) output[i] = data[i - options.size[0]];\n      else output[i] = data[2 * len + options.size[0] - i - 1];\n    }\n  } else {\n    for (i = 0; i < cond; i++) {\n      if (i < options.size[0]) output[i] = options.value;\n      else if (i < options.size[0] + len) output[i] = data[i - options.size[0]];\n      else output[i] = options.value;\n    }\n  }\n\n  return output;\n}\n\n/**\n * Case when the entry is a matrix\n * @param data\n * @param options\n * @returns {Array}\n */\nfunction matrixCase(data, options) {\n  // var row = data.length;\n  // var col = data[0].length;\n  if (options.size[0] === undefined) {\n    options.size = [options.size, options.size, options.size, options.size];\n  }\n  throw new Error('matrix not supported yet, sorry');\n}\n\n/**\n * Pads and array\n * @param {Array <number>} data\n * @param {object} options\n */\nfunction padArray(data, options) {\n  options = Object.assign({}, defaultOptions, options);\n  if (Array.isArray(data)) {\n    if (Array.isArray(data[0])) return matrixCase(data, options);\n    else return arrayCase(data, options);\n  } else {\n    throw new TypeError('data should be an array');\n  }\n}\n\nmodule.exports = padArray;\n","import { Matrix, MatrixTransposeView, inverse } from 'ml-matrix';\nimport padArray from 'ml-pad-array';\n\n/**\n * Factorial of a number\n * @ignore\n * @param n\n * @return {number}\n */\nfunction factorial(n) {\n  let r = 1;\n  while (n > 0) r *= n--;\n  return r;\n}\n\nconst defaultOptions = {\n  windowSize: 5,\n  derivative: 1,\n  polynomial: 2,\n  pad: 'none',\n  padValue: 'replicate',\n};\n\n/**\n * Savitzky-Golay filter\n * @param {Array <number>} data\n * @param {number} h\n * @param {Object} options\n * @returns {Array}\n */\nexport default function savitzkyGolay(data, h, options) {\n  options = Object.assign({}, defaultOptions, options);\n  if (\n    options.windowSize % 2 === 0 ||\n    options.windowSize < 5 ||\n    !Number.isInteger(options.windowSize)\n  ) {\n    throw new RangeError(\n      'Invalid window size (should be odd and at least 5 integer number)',\n    );\n  }\n  if (options.derivative < 0 || !Number.isInteger(options.derivative)) {\n    throw new RangeError('Derivative should be a positive integer');\n  }\n  if (options.polynomial < 1 || !Number.isInteger(options.polynomial)) {\n    throw new RangeError('Polynomial should be a positive integer');\n  }\n\n  let C, norm;\n  let step = Math.floor(options.windowSize / 2);\n\n  if (options.pad === 'pre') {\n    data = padArray(data, { size: step, value: options.padValue });\n  }\n\n  let ans = new Array(data.length - 2 * step);\n\n  if (\n    options.windowSize === 5 &&\n    options.polynomial === 2 &&\n    (options.derivative === 1 || options.derivative === 2)\n  ) {\n    if (options.derivative === 1) {\n      C = [-2, -1, 0, 1, 2];\n      norm = 10;\n    } else {\n      C = [2, -1, -2, -1, 2];\n      norm = 7;\n    }\n  } else {\n    let J = Matrix.ones(options.windowSize, options.polynomial + 1);\n    let inic = -(options.windowSize - 1) / 2;\n    for (let i = 0; i < J.rows; i++) {\n      for (let j = 0; j < J.columns; j++) {\n        if (inic + 1 !== 0 || j !== 0) J.set(i, j, Math.pow(inic + i, j));\n      }\n    }\n    let Jtranspose = new MatrixTransposeView(J);\n    let Jinv = inverse(Jtranspose.mmul(J));\n    C = Jinv.mmul(Jtranspose);\n    C = C.getRow(options.derivative);\n    norm = 1 / factorial(options.derivative);\n  }\n  let det = norm * Math.pow(h, options.derivative);\n  for (let k = step; k < data.length - step; k++) {\n    let d = 0;\n    for (let l = 0; l < C.length; l++) d += (C[l] * data[l + k - step]) / det;\n    ans[k - step] = d;\n  }\n\n  if (options.pad === 'post') {\n    ans = padArray(ans, { size: step, value: options.padValue });\n  }\n\n  return ans;\n}\n","'use strict';\n\nfunction compareNumbers(a, b) {\n    return a - b;\n}\n\n/**\n * Computes the sum of the given values\n * @param {Array} values\n * @returns {number}\n */\nexports.sum = function sum(values) {\n    var sum = 0;\n    for (var i = 0; i < values.length; i++) {\n        sum += values[i];\n    }\n    return sum;\n};\n\n/**\n * Computes the maximum of the given values\n * @param {Array} values\n * @returns {number}\n */\nexports.max = function max(values) {\n    var max = values[0];\n    var l = values.length;\n    for (var i = 1; i < l; i++) {\n        if (values[i] > max) max = values[i];\n    }\n    return max;\n};\n\n/**\n * Computes the minimum of the given values\n * @param {Array} values\n * @returns {number}\n */\nexports.min = function min(values) {\n    var min = values[0];\n    var l = values.length;\n    for (var i = 1; i < l; i++) {\n        if (values[i] < min) min = values[i];\n    }\n    return min;\n};\n\n/**\n * Computes the min and max of the given values\n * @param {Array} values\n * @returns {{min: number, max: number}}\n */\nexports.minMax = function minMax(values) {\n    var min = values[0];\n    var max = values[0];\n    var l = values.length;\n    for (var i = 1; i < l; i++) {\n        if (values[i] < min) min = values[i];\n        if (values[i] > max) max = values[i];\n    }\n    return {\n        min: min,\n        max: max\n    };\n};\n\n/**\n * Computes the arithmetic mean of the given values\n * @param {Array} values\n * @returns {number}\n */\nexports.arithmeticMean = function arithmeticMean(values) {\n    var sum = 0;\n    var l = values.length;\n    for (var i = 0; i < l; i++) {\n        sum += values[i];\n    }\n    return sum / l;\n};\n\n/**\n * {@link arithmeticMean}\n */\nexports.mean = exports.arithmeticMean;\n\n/**\n * Computes the geometric mean of the given values\n * @param {Array} values\n * @returns {number}\n */\nexports.geometricMean = function geometricMean(values) {\n    var mul = 1;\n    var l = values.length;\n    for (var i = 0; i < l; i++) {\n        mul *= values[i];\n    }\n    return Math.pow(mul, 1 / l);\n};\n\n/**\n * Computes the mean of the log of the given values\n * If the return value is exponentiated, it gives the same result as the\n * geometric mean.\n * @param {Array} values\n * @returns {number}\n */\nexports.logMean = function logMean(values) {\n    var lnsum = 0;\n    var l = values.length;\n    for (var i = 0; i < l; i++) {\n        lnsum += Math.log(values[i]);\n    }\n    return lnsum / l;\n};\n\n/**\n * Computes the weighted grand mean for a list of means and sample sizes\n * @param {Array} means - Mean values for each set of samples\n * @param {Array} samples - Number of original values for each set of samples\n * @returns {number}\n */\nexports.grandMean = function grandMean(means, samples) {\n    var sum = 0;\n    var n = 0;\n    var l = means.length;\n    for (var i = 0; i < l; i++) {\n        sum += samples[i] * means[i];\n        n += samples[i];\n    }\n    return sum / n;\n};\n\n/**\n * Computes the truncated mean of the given values using a given percentage\n * @param {Array} values\n * @param {number} percent - The percentage of values to keep (range: [0,1])\n * @param {boolean} [alreadySorted=false]\n * @returns {number}\n */\nexports.truncatedMean = function truncatedMean(values, percent, alreadySorted) {\n    if (alreadySorted === undefined) alreadySorted = false;\n    if (!alreadySorted) {\n        values = [].concat(values).sort(compareNumbers);\n    }\n    var l = values.length;\n    var k = Math.floor(l * percent);\n    var sum = 0;\n    for (var i = k; i < (l - k); i++) {\n        sum += values[i];\n    }\n    return sum / (l - 2 * k);\n};\n\n/**\n * Computes the harmonic mean of the given values\n * @param {Array} values\n * @returns {number}\n */\nexports.harmonicMean = function harmonicMean(values) {\n    var sum = 0;\n    var l = values.length;\n    for (var i = 0; i < l; i++) {\n        if (values[i] === 0) {\n            throw new RangeError('value at index ' + i + 'is zero');\n        }\n        sum += 1 / values[i];\n    }\n    return l / sum;\n};\n\n/**\n * Computes the contraharmonic mean of the given values\n * @param {Array} values\n * @returns {number}\n */\nexports.contraHarmonicMean = function contraHarmonicMean(values) {\n    var r1 = 0;\n    var r2 = 0;\n    var l = values.length;\n    for (var i = 0; i < l; i++) {\n        r1 += values[i] * values[i];\n        r2 += values[i];\n    }\n    if (r2 < 0) {\n        throw new RangeError('sum of values is negative');\n    }\n    return r1 / r2;\n};\n\n/**\n * Computes the median of the given values\n * @param {Array} values\n * @param {boolean} [alreadySorted=false]\n * @returns {number}\n */\nexports.median = function median(values, alreadySorted) {\n    if (alreadySorted === undefined) alreadySorted = false;\n    if (!alreadySorted) {\n        values = [].concat(values).sort(compareNumbers);\n    }\n    var l = values.length;\n    var half = Math.floor(l / 2);\n    if (l % 2 === 0) {\n        return (values[half - 1] + values[half]) * 0.5;\n    } else {\n        return values[half];\n    }\n};\n\n/**\n * Computes the variance of the given values\n * @param {Array} values\n * @param {boolean} [unbiased=true] - if true, divide by (n-1); if false, divide by n.\n * @returns {number}\n */\nexports.variance = function variance(values, unbiased) {\n    if (unbiased === undefined) unbiased = true;\n    var theMean = exports.mean(values);\n    var theVariance = 0;\n    var l = values.length;\n\n    for (var i = 0; i < l; i++) {\n        var x = values[i] - theMean;\n        theVariance += x * x;\n    }\n\n    if (unbiased) {\n        return theVariance / (l - 1);\n    } else {\n        return theVariance / l;\n    }\n};\n\n/**\n * Computes the standard deviation of the given values\n * @param {Array} values\n * @param {boolean} [unbiased=true] - if true, divide by (n-1); if false, divide by n.\n * @returns {number}\n */\nexports.standardDeviation = function standardDeviation(values, unbiased) {\n    return Math.sqrt(exports.variance(values, unbiased));\n};\n\nexports.standardError = function standardError(values) {\n    return exports.standardDeviation(values) / Math.sqrt(values.length);\n};\n\n/**\n * IEEE Transactions on biomedical engineering, vol. 52, no. 1, january 2005, p. 76-\n * Calculate the standard deviation via the Median of the absolute deviation\n *  The formula for the standard deviation only holds for Gaussian random variables.\n * @returns {{mean: number, stdev: number}}\n */\nexports.robustMeanAndStdev = function robustMeanAndStdev(y) {\n    var mean = 0, stdev = 0;\n    var length = y.length, i = 0;\n    for (i = 0; i < length; i++) {\n        mean += y[i];\n    }\n    mean /= length;\n    var averageDeviations = new Array(length);\n    for (i = 0; i < length; i++)\n        averageDeviations[i] = Math.abs(y[i] - mean);\n    averageDeviations.sort(compareNumbers);\n    if (length % 2 === 1) {\n        stdev = averageDeviations[(length - 1) / 2] / 0.6745;\n    } else {\n        stdev = 0.5 * (averageDeviations[length / 2] + averageDeviations[length / 2 - 1]) / 0.6745;\n    }\n\n    return {\n        mean: mean,\n        stdev: stdev\n    };\n};\n\nexports.quartiles = function quartiles(values, alreadySorted) {\n    if (typeof (alreadySorted) === 'undefined') alreadySorted = false;\n    if (!alreadySorted) {\n        values = [].concat(values).sort(compareNumbers);\n    }\n\n    var quart = values.length / 4;\n    var q1 = values[Math.ceil(quart) - 1];\n    var q2 = exports.median(values, true);\n    var q3 = values[Math.ceil(quart * 3) - 1];\n\n    return {q1: q1, q2: q2, q3: q3};\n};\n\nexports.pooledStandardDeviation = function pooledStandardDeviation(samples, unbiased) {\n    return Math.sqrt(exports.pooledVariance(samples, unbiased));\n};\n\nexports.pooledVariance = function pooledVariance(samples, unbiased) {\n    if (typeof (unbiased) === 'undefined') unbiased = true;\n    var sum = 0;\n    var length = 0, l = samples.length;\n    for (var i = 0; i < l; i++) {\n        var values = samples[i];\n        var vari = exports.variance(values);\n\n        sum += (values.length - 1) * vari;\n\n        if (unbiased)\n            length += values.length - 1;\n        else\n            length += values.length;\n    }\n    return sum / length;\n};\n\nexports.mode = function mode(values) {\n    var l = values.length,\n        itemCount = new Array(l),\n        i;\n    for (i = 0; i < l; i++) {\n        itemCount[i] = 0;\n    }\n    var itemArray = new Array(l);\n    var count = 0;\n\n    for (i = 0; i < l; i++) {\n        var index = itemArray.indexOf(values[i]);\n        if (index >= 0)\n            itemCount[index]++;\n        else {\n            itemArray[count] = values[i];\n            itemCount[count] = 1;\n            count++;\n        }\n    }\n\n    var maxValue = 0, maxIndex = 0;\n    for (i = 0; i < count; i++) {\n        if (itemCount[i] > maxValue) {\n            maxValue = itemCount[i];\n            maxIndex = i;\n        }\n    }\n\n    return itemArray[maxIndex];\n};\n\nexports.covariance = function covariance(vector1, vector2, unbiased) {\n    if (typeof (unbiased) === 'undefined') unbiased = true;\n    var mean1 = exports.mean(vector1);\n    var mean2 = exports.mean(vector2);\n\n    if (vector1.length !== vector2.length)\n        throw 'Vectors do not have the same dimensions';\n\n    var cov = 0, l = vector1.length;\n    for (var i = 0; i < l; i++) {\n        var x = vector1[i] - mean1;\n        var y = vector2[i] - mean2;\n        cov += x * y;\n    }\n\n    if (unbiased)\n        return cov / (l - 1);\n    else\n        return cov / l;\n};\n\nexports.skewness = function skewness(values, unbiased) {\n    if (typeof (unbiased) === 'undefined') unbiased = true;\n    var theMean = exports.mean(values);\n\n    var s2 = 0, s3 = 0, l = values.length;\n    for (var i = 0; i < l; i++) {\n        var dev = values[i] - theMean;\n        s2 += dev * dev;\n        s3 += dev * dev * dev;\n    }\n    var m2 = s2 / l;\n    var m3 = s3 / l;\n\n    var g = m3 / (Math.pow(m2, 3 / 2.0));\n    if (unbiased) {\n        var a = Math.sqrt(l * (l - 1));\n        var b = l - 2;\n        return (a / b) * g;\n    } else {\n        return g;\n    }\n};\n\nexports.kurtosis = function kurtosis(values, unbiased) {\n    if (typeof (unbiased) === 'undefined') unbiased = true;\n    var theMean = exports.mean(values);\n    var n = values.length, s2 = 0, s4 = 0;\n\n    for (var i = 0; i < n; i++) {\n        var dev = values[i] - theMean;\n        s2 += dev * dev;\n        s4 += dev * dev * dev * dev;\n    }\n    var m2 = s2 / n;\n    var m4 = s4 / n;\n\n    if (unbiased) {\n        var v = s2 / (n - 1);\n        var a = (n * (n + 1)) / ((n - 1) * (n - 2) * (n - 3));\n        var b = s4 / (v * v);\n        var c = ((n - 1) * (n - 1)) / ((n - 2) * (n - 3));\n\n        return a * b - 3 * c;\n    } else {\n        return m4 / (m2 * m2) - 3;\n    }\n};\n\nexports.entropy = function entropy(values, eps) {\n    if (typeof (eps) === 'undefined') eps = 0;\n    var sum = 0, l = values.length;\n    for (var i = 0; i < l; i++)\n        sum += values[i] * Math.log(values[i] + eps);\n    return -sum;\n};\n\nexports.weightedMean = function weightedMean(values, weights) {\n    var sum = 0, l = values.length;\n    for (var i = 0; i < l; i++)\n        sum += values[i] * weights[i];\n    return sum;\n};\n\nexports.weightedStandardDeviation = function weightedStandardDeviation(values, weights) {\n    return Math.sqrt(exports.weightedVariance(values, weights));\n};\n\nexports.weightedVariance = function weightedVariance(values, weights) {\n    var theMean = exports.weightedMean(values, weights);\n    var vari = 0, l = values.length;\n    var a = 0, b = 0;\n\n    for (var i = 0; i < l; i++) {\n        var z = values[i] - theMean;\n        var w = weights[i];\n\n        vari += w * (z * z);\n        b += w;\n        a += w * w;\n    }\n\n    return vari * (b / (b * b - a));\n};\n\nexports.center = function center(values, inPlace) {\n    if (typeof (inPlace) === 'undefined') inPlace = false;\n\n    var result = values;\n    if (!inPlace)\n        result = [].concat(values);\n\n    var theMean = exports.mean(result), l = result.length;\n    for (var i = 0; i < l; i++)\n        result[i] -= theMean;\n};\n\nexports.standardize = function standardize(values, standardDev, inPlace) {\n    if (typeof (standardDev) === 'undefined') standardDev = exports.standardDeviation(values);\n    if (typeof (inPlace) === 'undefined') inPlace = false;\n    var l = values.length;\n    var result = inPlace ? values : new Array(l);\n    for (var i = 0; i < l; i++)\n        result[i] = values[i] / standardDev;\n    return result;\n};\n\nexports.cumulativeSum = function cumulativeSum(array) {\n    var l = array.length;\n    var result = new Array(l);\n    result[0] = array[0];\n    for (var i = 1; i < l; i++)\n        result[i] = result[i - 1] + array[i];\n    return result;\n};\n","import max from 'ml-array-max';\nimport min from 'ml-array-min';\nimport normed from 'ml-array-normed';\nimport rescale from 'ml-array-rescale';\nimport equallySpaced from 'ml-array-xy-equally-spaced';\nimport filterX from 'ml-array-xy-filter-x';\nimport baselineCorrection from 'ml-baseline-correction-regression';\nimport savitzkyGolay from 'ml-savitzky-golay';\nimport {\n  xDivide,\n  xSubtract,\n  xMultiply,\n  xAdd,\n  xIsMonotone,\n} from 'ml-spectra-processing';\nimport Stat from 'ml-stat/array';\n/**\n *\n * @private\n * @param {object} spectrum\n * @param {object} [options={}]\n * @param {number} [options.from=x.min]\n * @param {number} [options.to=x.max]\n * @param {number} [options.numberOfPoints]\n * @param {String} [options.processing] Allows to calculate derivatives\n * @param {Array} [options.filters=[]] Array of object containing 'name' (centerMean, divideSD, normalize, rescale) and 'options'\n * @param {Array} [options.exclusions=[]]\n * @returns {DataXY}\n */\nexport function getNormalizedSpectrum(spectrum, options = {}) {\n  let data = {\n    x: spectrum.variables.x.data,\n    y: spectrum.variables.y.data,\n  };\n  let newSpectrum = {\n    variables: {\n      x: {\n        data: spectrum.variables.x.data,\n        units: spectrum.variables.x.units,\n        label: spectrum.variables.x.label,\n      },\n      y: {\n        data: spectrum.variables.y.data,\n        units: spectrum.variables.y.units,\n        label: spectrum.variables.y.label,\n      },\n    },\n  };\n  if (spectrum.title) newSpectrum.title = spectrum.title;\n  if (spectrum.dataType) newSpectrum.dataType = spectrum.dataType;\n  if (spectrum.meta) newSpectrum.meta = spectrum.meta;\n\n  let {\n    from = spectrum.variables.x.min,\n    to = spectrum.variables.x.max,\n    numberOfPoints,\n    filters = [],\n    exclusions = [],\n    processing = '',\n  } = options;\n  let { x, y } = filterX(data, { from, to });\n\n  switch (processing) {\n    case 'firstDerivative':\n      if (options.processing) {\n        newSpectrum.variables.y.units = '';\n        newSpectrum.variables.y.label =\n          newSpectrum.variables.y.label &&\n          `1° derivative of ${newSpectrum.variables.y.label.replace(\n            /\\s*\\[.*\\]/,\n            '',\n          )}`;\n        y = savitzkyGolay(y, 1, {\n          derivative: 1,\n          polynomial: 2,\n          windowSize: 5,\n        });\n        x = x.slice(2, x.length - 2);\n      }\n      break;\n    case 'secondDerivative':\n      if (options.processing) {\n        newSpectrum.variables.y.units = '';\n        newSpectrum.variables.y.label =\n          newSpectrum.variables.y.label &&\n          `2° derivative of ${newSpectrum.variables.y.label.replace(\n            /\\s*\\[.*\\]/,\n            '',\n          )}`;\n        y = savitzkyGolay(y, 1, {\n          derivative: 2,\n          polynomial: 2,\n          windowSize: 5,\n        });\n        x = x.slice(2, x.length - 2);\n      }\n      break;\n    default:\n  }\n\n  if (filters.length) {\n    // filters change the y axis, we get rid of the units\n    newSpectrum.variables.y.units = '';\n    newSpectrum.variables.y.label =\n      newSpectrum.variables.y.label &&\n      newSpectrum.variables.y.label.replace(/\\s*\\[.*\\]/, '');\n  }\n\n  for (let filter of filters) {\n    let filterOptions = filter.options || {};\n    switch (filter.name.toLowerCase()) {\n      case 'centermean': {\n        let mean = Stat.mean(y);\n        y = xSubtract(y, mean);\n        break;\n      }\n      case 'dividebysd': {\n        let std = Stat.standardDeviation(y);\n        y = xDivide(y, std);\n        break;\n      }\n      case 'normalize': {\n        y = normed(y, {\n          sumValue: filterOptions.value ? Number(filterOptions.value) : 1,\n          algorithm: 'absolute',\n        });\n        break;\n      }\n      case 'rescale': {\n        y = rescale(y, {\n          min: filterOptions.min ? Number(filterOptions.min) : 0,\n          max: filterOptions.max ? Number(filterOptions.max) : 1,\n        });\n        break;\n      }\n      case 'dividebymax': {\n        let maxValue = max(y);\n        y = xDivide(y, maxValue);\n        break;\n      }\n      case 'multiply': {\n        y = xMultiply(y, filterOptions.value ? Number(filterOptions.value) : 1);\n        break;\n      }\n      case 'add': {\n        y = xAdd(y, filterOptions.value ? Number(filterOptions.value) : 0);\n        break;\n      }\n      case 'baselinecorreciton': {\n        let result = baselineCorrection(x, y, filterOptions);\n        y = result.corrected;\n        break;\n      }\n      case '':\n      case undefined:\n        break;\n      default:\n        throw new Error(`Unknown process kind: ${process.kind}`);\n    }\n  }\n\n  if (!numberOfPoints) {\n    data = filterX({ x, y }, { from, to, exclusions });\n  } else {\n    data = equallySpaced({ x, y }, { from, to, numberOfPoints, exclusions });\n  }\n\n  newSpectrum.variables.x.data = x;\n  newSpectrum.variables.x.min = min(x);\n  newSpectrum.variables.x.max = max(x);\n  newSpectrum.variables.x.isMonotone = xIsMonotone(x);\n  newSpectrum.variables.y.data = y;\n  newSpectrum.variables.y.min = min(y);\n  newSpectrum.variables.y.max = max(y);\n  newSpectrum.variables.y.isMonotone = xIsMonotone(y);\n\n  return newSpectrum;\n}\n","/*\nThe MIT License (MIT)\nCopyright © 2006-2007 Kevin C. Olbrich\nCopyright © 2010-2016 LIM SAS (http://lim.eu) - Julien Sanchez\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\nof the Software, and to permit persons to whom the Software is furnished to do\nso, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n*/\n(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n  typeof define === 'function' && define.amd ? define(factory) :\n  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Qty = factory());\n}(this, (function () { 'use strict';\n\n  /**\n   * Tests if a value is a string\n   *\n   * @param {*} value - Value to test\n   *\n   * @returns {boolean} true if value is a string, false otherwise\n   */\n  function isString(value) {\n    return typeof value === \"string\" || value instanceof String;\n  }\n\n  /*\n   * Prefer stricter Number.isFinite if currently supported.\n   * To be dropped when ES6 is finalized. Obsolete browsers will\n   * have to use ES6 polyfills.\n   */\n  var isFiniteImpl = Number.isFinite || window.isFinite;\n  /**\n   * Tests if a value is a number\n   *\n   * @param {*} value - Value to test\n   *\n   * @returns {boolean} true if value is a number, false otherwise\n   */\n  function isNumber(value) {\n    // Number.isFinite allows not to consider NaN or '1' as numbers\n    return isFiniteImpl(value);\n  }\n\n  /*\n   * Identity function\n   */\n  function identity(value) {\n    return value;\n  }\n\n  /**\n   * Returns unique strings from list\n   *\n   * @param {string[]} strings - array of strings\n   *\n   *\n   * @returns {string[]} a new array of strings without duplicates\n   */\n  function uniq(strings) {\n    var seen = {};\n    return strings.filter(function(item) {\n      return seen.hasOwnProperty(item) ? false : (seen[item] = true);\n    });\n  }\n\n  function compareArray(array1, array2) {\n    if (array2.length !== array1.length) {\n      return false;\n    }\n    for (var i = 0; i < array1.length; i++) {\n      if (array2[i].compareArray) {\n        if (!array2[i].compareArray(array1[i])) {\n          return false;\n        }\n      }\n      if (array2[i] !== array1[i]) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  function assign(target, properties) {\n    Object.keys(properties).forEach(function(key) {\n      target[key] = properties[key];\n    });\n  }\n\n  /**\n   * Safely multiplies numbers while avoiding floating errors\n   * like 0.1 * 0.1 => 0.010000000000000002\n   *\n   * @param {...number} numbers - numbers to multiply\n   *\n   * @returns {number} result\n   */\n  function mulSafe() {\n    var result = 1, decimals = 0;\n    for (var i = 0; i < arguments.length; i++) {\n      var arg = arguments[i];\n      decimals = decimals + getFractional(arg);\n      result *= arg;\n    }\n\n    return decimals !== 0 ? round(result, decimals) : result;\n  }\n\n  /**\n   * Safely divides two numbers while avoiding floating errors\n   * like 0.3 / 0.05 => 5.999999999999999\n   *\n   * @returns {number} result\n   * @param {number} num Numerator\n   * @param {number} den Denominator\n   */\n  function divSafe(num, den) {\n    if (den === 0) {\n      throw new Error(\"Divide by zero\");\n    }\n\n    var factor = Math.pow(10, getFractional(den));\n    var invDen = factor / (factor * den);\n\n    return mulSafe(num, invDen);\n  }\n\n  /**\n   * Rounds value at the specified number of decimals\n   *\n   * @param {number} val - value to round\n   * @param {number} decimals - number of decimals\n   *\n   * @returns {number} rounded number\n   */\n  function round(val, decimals) {\n    return Math.round(val * Math.pow(10, decimals)) / Math.pow(10, decimals);\n  }\n\n  function getFractional(num) {\n    // Check for NaNs or Infinities\n    if (!isFinite(num)) {\n      return 0;\n    }\n\n    // Faster than parsing strings\n    // http://jsperf.com/count-decimals/2\n    var count = 0;\n    while (num % 1 !== 0) {\n      num *= 10;\n      count++;\n    }\n    return count;\n  }\n\n  /**\n   * Custom error type definition\n   * @constructor\n   */\n  function QtyError() {\n    var err;\n    if (!this) { // Allows to instantiate QtyError without new()\n      err = Object.create(QtyError.prototype);\n      QtyError.apply(err, arguments);\n      return err;\n    }\n    err = Error.apply(this, arguments);\n    this.name = \"QtyError\";\n    this.message = err.message;\n    this.stack = err.stack;\n  }\n  QtyError.prototype = Object.create(Error.prototype, {constructor: { value: QtyError }});\n\n  /*\n   * Throws incompatible units error\n   * @param {string} left - units\n   * @param {string} right - units incompatible with first argument\n   * @throws \"Incompatible units\" error\n   */\n  function throwIncompatibleUnits(left, right) {\n    throw new QtyError(\"Incompatible units: \" + left + \" and \" + right);\n  }\n\n  var UNITS = {\n    /* prefixes */\n    \"<googol>\" : [[\"googol\"], 1e100, \"prefix\"],\n    \"<kibi>\"  :  [[\"Ki\",\"Kibi\",\"kibi\"], Math.pow(2,10), \"prefix\"],\n    \"<mebi>\"  :  [[\"Mi\",\"Mebi\",\"mebi\"], Math.pow(2,20), \"prefix\"],\n    \"<gibi>\"  :  [[\"Gi\",\"Gibi\",\"gibi\"], Math.pow(2,30), \"prefix\"],\n    \"<tebi>\"  :  [[\"Ti\",\"Tebi\",\"tebi\"], Math.pow(2,40), \"prefix\"],\n    \"<pebi>\"  :  [[\"Pi\",\"Pebi\",\"pebi\"], Math.pow(2,50), \"prefix\"],\n    \"<exi>\"   :  [[\"Ei\",\"Exi\",\"exi\"], Math.pow(2,60), \"prefix\"],\n    \"<zebi>\"  :  [[\"Zi\",\"Zebi\",\"zebi\"], Math.pow(2,70), \"prefix\"],\n    \"<yebi>\"  :  [[\"Yi\",\"Yebi\",\"yebi\"], Math.pow(2,80), \"prefix\"],\n    \"<yotta>\" :  [[\"Y\",\"Yotta\",\"yotta\"], 1e24, \"prefix\"],\n    \"<zetta>\" :  [[\"Z\",\"Zetta\",\"zetta\"], 1e21, \"prefix\"],\n    \"<exa>\"   :  [[\"E\",\"Exa\",\"exa\"], 1e18, \"prefix\"],\n    \"<peta>\"  :  [[\"P\",\"Peta\",\"peta\"], 1e15, \"prefix\"],\n    \"<tera>\"  :  [[\"T\",\"Tera\",\"tera\"], 1e12, \"prefix\"],\n    \"<giga>\"  :  [[\"G\",\"Giga\",\"giga\"], 1e9, \"prefix\"],\n    \"<mega>\"  :  [[\"M\",\"Mega\",\"mega\"], 1e6, \"prefix\"],\n    \"<kilo>\"  :  [[\"k\",\"kilo\"], 1e3, \"prefix\"],\n    \"<hecto>\" :  [[\"h\",\"Hecto\",\"hecto\"], 1e2, \"prefix\"],\n    \"<deca>\"  :  [[\"da\",\"Deca\",\"deca\",\"deka\"], 1e1, \"prefix\"],\n    \"<deci>\"  :  [[\"d\",\"Deci\",\"deci\"], 1e-1, \"prefix\"],\n    \"<centi>\"  : [[\"c\",\"Centi\",\"centi\"], 1e-2, \"prefix\"],\n    \"<milli>\" :  [[\"m\",\"Milli\",\"milli\"], 1e-3, \"prefix\"],\n    \"<micro>\"  : [\n      [\"u\",\"\\u03BC\"/*µ as greek letter*/,\"\\u00B5\"/*µ as micro sign*/,\"Micro\",\"mc\",\"micro\"],\n      1e-6,\n      \"prefix\"\n    ],\n    \"<nano>\"  :  [[\"n\",\"Nano\",\"nano\"], 1e-9, \"prefix\"],\n    \"<pico>\"  :  [[\"p\",\"Pico\",\"pico\"], 1e-12, \"prefix\"],\n    \"<femto>\" :  [[\"f\",\"Femto\",\"femto\"], 1e-15, \"prefix\"],\n    \"<atto>\"  :  [[\"a\",\"Atto\",\"atto\"], 1e-18, \"prefix\"],\n    \"<zepto>\" :  [[\"z\",\"Zepto\",\"zepto\"], 1e-21, \"prefix\"],\n    \"<yocto>\" :  [[\"y\",\"Yocto\",\"yocto\"], 1e-24, \"prefix\"],\n\n    \"<1>\"     :  [[\"1\", \"<1>\"], 1, \"\"],\n    /* length units */\n    \"<meter>\" :  [[\"m\",\"meter\",\"meters\",\"metre\",\"metres\"], 1.0, \"length\", [\"<meter>\"] ],\n    \"<inch>\"  :  [[\"in\",\"inch\",\"inches\",\"\\\"\"], 0.0254, \"length\", [\"<meter>\"]],\n    \"<foot>\"  :  [[\"ft\",\"foot\",\"feet\",\"'\"], 0.3048, \"length\", [\"<meter>\"]],\n    \"<yard>\"  :  [[\"yd\",\"yard\",\"yards\"], 0.9144, \"length\", [\"<meter>\"]],\n    \"<mile>\"  :  [[\"mi\",\"mile\",\"miles\"], 1609.344, \"length\", [\"<meter>\"]],\n    \"<naut-mile>\" : [[\"nmi\",\"naut-mile\"], 1852, \"length\", [\"<meter>\"]],\n    \"<league>\":  [[\"league\",\"leagues\"], 4828, \"length\", [\"<meter>\"]],\n    \"<furlong>\": [[\"furlong\",\"furlongs\"], 201.2, \"length\", [\"<meter>\"]],\n    \"<rod>\"   :  [[\"rd\",\"rod\",\"rods\"], 5.029, \"length\", [\"<meter>\"]],\n    \"<mil>\"   :  [[\"mil\",\"mils\"], 0.0000254, \"length\", [\"<meter>\"]],\n    \"<angstrom>\"  :[[\"ang\",\"angstrom\",\"angstroms\"], 1e-10, \"length\", [\"<meter>\"]],\n    \"<fathom>\" : [[\"fathom\",\"fathoms\"], 1.829, \"length\", [\"<meter>\"]],\n    \"<pica>\"  : [[\"pica\",\"picas\"], 0.00423333333, \"length\", [\"<meter>\"]],\n    \"<point>\" : [[\"pt\",\"point\",\"points\"], 0.000352777778, \"length\", [\"<meter>\"]],\n    \"<redshift>\" : [[\"z\",\"red-shift\", \"redshift\"], 1.302773e26, \"length\", [\"<meter>\"]],\n    \"<AU>\"    : [[\"AU\",\"astronomical-unit\"], 149597900000, \"length\", [\"<meter>\"]],\n    \"<light-second>\":[[\"ls\",\"light-second\"], 299792500, \"length\", [\"<meter>\"]],\n    \"<light-minute>\":[[\"lmin\",\"light-minute\"], 17987550000, \"length\", [\"<meter>\"]],\n    \"<light-year>\" : [[\"ly\",\"light-year\"], 9460528000000000, \"length\", [\"<meter>\"]],\n    \"<parsec>\"  : [[\"pc\",\"parsec\",\"parsecs\"], 30856780000000000, \"length\", [\"<meter>\"]],\n    \"<datamile>\"  :  [[\"DM\",\"datamile\"], 1828.8, \"length\", [\"<meter>\"]],\n\n    /* mass */\n    \"<kilogram>\" : [[\"kg\",\"kilogram\",\"kilograms\"], 1.0, \"mass\", [\"<kilogram>\"]],\n    \"<AMU>\" : [[\"u\",\"AMU\",\"amu\"], 1.660538921e-27, \"mass\", [\"<kilogram>\"]],\n    \"<dalton>\" : [[\"Da\",\"Dalton\",\"Daltons\",\"dalton\",\"daltons\"], 1.660538921e-27, \"mass\", [\"<kilogram>\"]],\n    \"<slug>\" : [[\"slug\",\"slugs\"], 14.5939029, \"mass\", [\"<kilogram>\"]],\n    \"<short-ton>\" : [[\"tn\",\"ton\",\"short-ton\"], 907.18474, \"mass\", [\"<kilogram>\"]],\n    \"<metric-ton>\":[[\"tonne\",\"metric-ton\"], 1000, \"mass\", [\"<kilogram>\"]],\n    \"<carat>\" : [[\"ct\",\"carat\",\"carats\"], 0.0002, \"mass\", [\"<kilogram>\"]],\n    \"<pound>\" : [[\"lbs\",\"lb\",\"pound\",\"pounds\",\"#\"], 0.45359237, \"mass\", [\"<kilogram>\"]],\n    \"<ounce>\" : [[\"oz\",\"ounce\",\"ounces\"], 0.0283495231, \"mass\", [\"<kilogram>\"]],\n    \"<gram>\"    :  [[\"g\",\"gram\",\"grams\",\"gramme\",\"grammes\"], 1e-3, \"mass\", [\"<kilogram>\"]],\n    \"<grain>\" : [[\"grain\",\"grains\",\"gr\"], 6.479891e-5, \"mass\", [\"<kilogram>\"]],\n    \"<dram>\"  : [[\"dram\",\"drams\",\"dr\"], 0.0017718452, \"mass\",[\"<kilogram>\"]],\n    \"<stone>\" : [[\"stone\",\"stones\",\"st\"],6.35029318, \"mass\",[\"<kilogram>\"]],\n\n    /* area */\n    \"<hectare>\":[[\"hectare\"], 10000, \"area\", [\"<meter>\",\"<meter>\"]],\n    \"<acre>\":[[\"acre\",\"acres\"], 4046.85642, \"area\", [\"<meter>\",\"<meter>\"]],\n    \"<sqft>\":[[\"sqft\"], 1, \"area\", [\"<foot>\",\"<foot>\"]],\n\n    /* volume */\n    \"<liter>\" : [[\"l\",\"L\",\"liter\",\"liters\",\"litre\",\"litres\"], 0.001, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<gallon>\":  [[\"gal\",\"gallon\",\"gallons\"], 0.0037854118, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<gallon-imp>\":  [[\"galimp\",\"gallon-imp\",\"gallons-imp\"], 0.0045460900, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<quart>\":  [[\"qt\",\"quart\",\"quarts\"], 0.00094635295, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<pint>\":  [[\"pt\",\"pint\",\"pints\"], 0.000473176475, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<pint-imp>\":  [[\"ptimp\",\"pint-imp\",\"pints-imp\"], 5.6826125e-4, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<cup>\":  [[\"cu\",\"cup\",\"cups\"], 0.000236588238, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<fluid-ounce>\":  [[\"floz\",\"fluid-ounce\",\"fluid-ounces\"], 2.95735297e-5, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<fluid-ounce-imp>\":  [[\"flozimp\", \"floz-imp\",\"fluid-ounce-imp\",\"fluid-ounces-imp\"], 2.84130625e-5, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<tablespoon>\":  [[\"tb\",\"tbsp\",\"tbs\",\"tablespoon\",\"tablespoons\"], 1.47867648e-5, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<teaspoon>\":  [[\"tsp\",\"teaspoon\",\"teaspoons\"], 4.92892161e-6, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<bushel>\":  [[\"bu\",\"bsh\",\"bushel\",\"bushels\"], 0.035239072, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<oilbarrel>\":  [[\"bbl\",\"oilbarrel\", \"oilbarrels\", \"oil-barrel\",\"oil-barrels\"], 0.158987294928, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<beerbarrel>\":  [[\"bl\",\"bl-us\",\"beerbarrel\", \"beerbarrels\", \"beer-barrel\",\"beer-barrels\"], 0.1173477658, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<beerbarrel-imp>\":  [[\"blimp\",\"bl-imp\",\"beerbarrel-imp\", \"beerbarrels-imp\", \"beer-barrel-imp\",\"beer-barrels-imp\"], 0.16365924, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n\n    /* speed */\n    \"<kph>\" : [[\"kph\"], 0.277777778, \"speed\", [\"<meter>\"], [\"<second>\"]],\n    \"<mph>\" : [[\"mph\"], 0.44704, \"speed\", [\"<meter>\"], [\"<second>\"]],\n    \"<knot>\" : [[\"kt\",\"kn\",\"kts\",\"knot\",\"knots\"], 0.514444444, \"speed\", [\"<meter>\"], [\"<second>\"]],\n    \"<fps>\"  : [[\"fps\"], 0.3048, \"speed\", [\"<meter>\"], [\"<second>\"]],\n\n    /* acceleration */\n    \"<gee>\" : [[\"gee\"], 9.80665, \"acceleration\", [\"<meter>\"], [\"<second>\",\"<second>\"]],\n    \"<Gal>\" : [[\"Gal\"], 1e-2, \"acceleration\", [\"<meter>\"], [\"<second>\",\"<second>\"]],\n\n    /* temperature_difference */\n    \"<kelvin>\" : [[\"degK\",\"kelvin\"], 1.0, \"temperature\", [\"<kelvin>\"]],\n    \"<celsius>\" : [[\"degC\",\"celsius\",\"celsius\",\"centigrade\"], 1.0, \"temperature\", [\"<kelvin>\"]],\n    \"<fahrenheit>\" : [[\"degF\",\"fahrenheit\"], 5 / 9, \"temperature\", [\"<kelvin>\"]],\n    \"<rankine>\" : [[\"degR\",\"rankine\"], 5 / 9, \"temperature\", [\"<kelvin>\"]],\n    \"<temp-K>\"  : [[\"tempK\",\"temp-K\"], 1.0, \"temperature\", [\"<temp-K>\"]],\n    \"<temp-C>\"  : [[\"tempC\",\"temp-C\"], 1.0, \"temperature\", [\"<temp-K>\"]],\n    \"<temp-F>\"  : [[\"tempF\",\"temp-F\"], 5 / 9, \"temperature\", [\"<temp-K>\"]],\n    \"<temp-R>\"  : [[\"tempR\",\"temp-R\"], 5 / 9, \"temperature\", [\"<temp-K>\"]],\n\n    /* time */\n    \"<second>\":  [[\"s\",\"sec\",\"secs\",\"second\",\"seconds\"], 1.0, \"time\", [\"<second>\"]],\n    \"<minute>\":  [[\"min\",\"mins\",\"minute\",\"minutes\"], 60.0, \"time\", [\"<second>\"]],\n    \"<hour>\":  [[\"h\",\"hr\",\"hrs\",\"hour\",\"hours\"], 3600.0, \"time\", [\"<second>\"]],\n    \"<day>\":  [[\"d\",\"day\",\"days\"], 3600 * 24, \"time\", [\"<second>\"]],\n    \"<week>\":  [[\"wk\",\"week\",\"weeks\"], 7 * 3600 * 24, \"time\", [\"<second>\"]],\n    \"<fortnight>\": [[\"fortnight\",\"fortnights\"], 1209600, \"time\", [\"<second>\"]],\n    \"<year>\":  [[\"y\",\"yr\",\"year\",\"years\",\"annum\"], 31556926, \"time\", [\"<second>\"]],\n    \"<decade>\":[[\"decade\",\"decades\"], 315569260, \"time\", [\"<second>\"]],\n    \"<century>\":[[\"century\",\"centuries\"], 3155692600, \"time\", [\"<second>\"]],\n\n    /* pressure */\n    \"<pascal>\" : [[\"Pa\",\"pascal\",\"Pascal\"], 1.0, \"pressure\", [\"<kilogram>\"],[\"<meter>\",\"<second>\",\"<second>\"]],\n    \"<bar>\" : [[\"bar\",\"bars\"], 100000, \"pressure\", [\"<kilogram>\"],[\"<meter>\",\"<second>\",\"<second>\"]],\n    \"<mmHg>\" : [[\"mmHg\"], 133.322368, \"pressure\", [\"<kilogram>\"],[\"<meter>\",\"<second>\",\"<second>\"]],\n    \"<inHg>\" : [[\"inHg\"], 3386.3881472, \"pressure\", [\"<kilogram>\"],[\"<meter>\",\"<second>\",\"<second>\"]],\n    \"<torr>\" : [[\"torr\"], 133.322368, \"pressure\", [\"<kilogram>\"],[\"<meter>\",\"<second>\",\"<second>\"]],\n    \"<atm>\" : [[\"atm\",\"ATM\",\"atmosphere\",\"atmospheres\"], 101325, \"pressure\", [\"<kilogram>\"],[\"<meter>\",\"<second>\",\"<second>\"]],\n    \"<psi>\" : [[\"psi\"], 6894.76, \"pressure\", [\"<kilogram>\"],[\"<meter>\",\"<second>\",\"<second>\"]],\n    \"<cmh2o>\" : [[\"cmH2O\",\"cmh2o\"], 98.0638, \"pressure\", [\"<kilogram>\"],[\"<meter>\",\"<second>\",\"<second>\"]],\n    \"<inh2o>\" : [[\"inH2O\",\"inh2o\"], 249.082052, \"pressure\", [\"<kilogram>\"],[\"<meter>\",\"<second>\",\"<second>\"]],\n\n    /* viscosity */\n    \"<poise>\"  : [[\"P\",\"poise\"], 0.1, \"viscosity\", [\"<kilogram>\"],[\"<meter>\",\"<second>\"] ],\n    \"<stokes>\" : [[\"St\",\"stokes\"], 1e-4, \"viscosity\", [\"<meter>\",\"<meter>\"], [\"<second>\"]],\n\n    /* substance */\n    \"<mole>\"  :  [[\"mol\",\"mole\"], 1.0, \"substance\", [\"<mole>\"]],\n\n    /* concentration */\n    \"<molar>\" : [[\"M\",\"molar\"], 1000, \"concentration\", [\"<mole>\"], [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<wtpercent>\"  : [[\"wt%\",\"wtpercent\"], 10, \"concentration\", [\"<kilogram>\"], [\"<meter>\",\"<meter>\",\"<meter>\"]],\n\n    /* activity */\n    \"<katal>\" :  [[\"kat\",\"katal\",\"Katal\"], 1.0, \"activity\", [\"<mole>\"], [\"<second>\"]],\n    \"<unit>\"  :  [[\"U\",\"enzUnit\",\"unit\"], 16.667e-16, \"activity\", [\"<mole>\"], [\"<second>\"]],\n\n    /* capacitance */\n    \"<farad>\" :  [[\"F\",\"farad\",\"Farad\"], 1.0, \"capacitance\", [\"<second>\",\"<second>\",\"<second>\",\"<second>\",\"<ampere>\",\"<ampere>\"], [\"<meter>\", \"<meter>\", \"<kilogram>\"]],\n\n    /* charge */\n    \"<coulomb>\" :  [[\"C\",\"coulomb\",\"Coulomb\"], 1.0, \"charge\", [\"<ampere>\",\"<second>\"]],\n    \"<Ah>\" :  [[\"Ah\"], 3600, \"charge\", [\"<ampere>\",\"<second>\"]],\n\n    /* current */\n    \"<ampere>\"  :  [[\"A\",\"Ampere\",\"ampere\",\"amp\",\"amps\"], 1.0, \"current\", [\"<ampere>\"]],\n\n    /* conductance */\n    \"<siemens>\" : [[\"S\",\"Siemens\",\"siemens\"], 1.0, \"conductance\", [\"<second>\",\"<second>\",\"<second>\",\"<ampere>\",\"<ampere>\"], [\"<kilogram>\",\"<meter>\",\"<meter>\"]],\n\n    /* inductance */\n    \"<henry>\" :  [[\"H\",\"Henry\",\"henry\"], 1.0, \"inductance\", [\"<meter>\",\"<meter>\",\"<kilogram>\"], [\"<second>\",\"<second>\",\"<ampere>\",\"<ampere>\"]],\n\n    /* potential */\n    \"<volt>\"  :  [[\"V\",\"Volt\",\"volt\",\"volts\"], 1.0, \"potential\", [\"<meter>\",\"<meter>\",\"<kilogram>\"], [\"<second>\",\"<second>\",\"<second>\",\"<ampere>\"]],\n\n    /* resistance */\n    \"<ohm>\" :  [\n      [\"Ohm\",\"ohm\",\"\\u03A9\"/*Ω as greek letter*/,\"\\u2126\"/*Ω as ohm sign*/],\n      1.0,\n      \"resistance\",\n      [\"<meter>\",\"<meter>\",\"<kilogram>\"],[\"<second>\",\"<second>\",\"<second>\",\"<ampere>\",\"<ampere>\"]\n    ],\n    /* magnetism */\n    \"<weber>\" : [[\"Wb\",\"weber\",\"webers\"], 1.0, \"magnetism\", [\"<meter>\",\"<meter>\",\"<kilogram>\"], [\"<second>\",\"<second>\",\"<ampere>\"]],\n    \"<tesla>\"  : [[\"T\",\"tesla\",\"teslas\"], 1.0, \"magnetism\", [\"<kilogram>\"], [\"<second>\",\"<second>\",\"<ampere>\"]],\n    \"<gauss>\" : [[\"G\",\"gauss\"], 1e-4, \"magnetism\",  [\"<kilogram>\"], [\"<second>\",\"<second>\",\"<ampere>\"]],\n    \"<maxwell>\" : [[\"Mx\",\"maxwell\",\"maxwells\"], 1e-8, \"magnetism\", [\"<meter>\",\"<meter>\",\"<kilogram>\"], [\"<second>\",\"<second>\",\"<ampere>\"]],\n    \"<oersted>\"  : [[\"Oe\",\"oersted\",\"oersteds\"], 250.0 / Math.PI, \"magnetism\", [\"<ampere>\"], [\"<meter>\"]],\n\n    /* energy */\n    \"<joule>\" :  [[\"J\",\"joule\",\"Joule\",\"joules\"], 1.0, \"energy\", [\"<meter>\",\"<meter>\",\"<kilogram>\"], [\"<second>\",\"<second>\"]],\n    \"<erg>\"   :  [[\"erg\",\"ergs\"], 1e-7, \"energy\", [\"<meter>\",\"<meter>\",\"<kilogram>\"], [\"<second>\",\"<second>\"]],\n    \"<btu>\"   :  [[\"BTU\",\"btu\",\"BTUs\"], 1055.056, \"energy\", [\"<meter>\",\"<meter>\",\"<kilogram>\"], [\"<second>\",\"<second>\"]],\n    \"<calorie>\" :  [[\"cal\",\"calorie\",\"calories\"], 4.18400, \"energy\",[\"<meter>\",\"<meter>\",\"<kilogram>\"], [\"<second>\",\"<second>\"]],\n    \"<Calorie>\" :  [[\"Cal\",\"Calorie\",\"Calories\"], 4184.00, \"energy\",[\"<meter>\",\"<meter>\",\"<kilogram>\"], [\"<second>\",\"<second>\"]],\n    \"<therm-US>\" : [[\"th\",\"therm\",\"therms\",\"Therm\",\"therm-US\"], 105480400, \"energy\",[\"<meter>\",\"<meter>\",\"<kilogram>\"], [\"<second>\",\"<second>\"]],\n    \"<Wh>\" : [[\"Wh\"], 3600, \"energy\",[\"<meter>\",\"<meter>\",\"<kilogram>\"], [\"<second>\",\"<second>\"]],\n\n    /* force */\n    \"<newton>\"  : [[\"N\",\"Newton\",\"newton\"], 1.0, \"force\", [\"<kilogram>\",\"<meter>\"], [\"<second>\",\"<second>\"]],\n    \"<dyne>\"  : [[\"dyn\",\"dyne\"], 1e-5, \"force\", [\"<kilogram>\",\"<meter>\"], [\"<second>\",\"<second>\"]],\n    \"<pound-force>\"  : [[\"lbf\",\"pound-force\"], 4.448222, \"force\", [\"<kilogram>\",\"<meter>\"], [\"<second>\",\"<second>\"]],\n\n    /* frequency */\n    \"<hertz>\" : [[\"Hz\",\"hertz\",\"Hertz\"], 1.0, \"frequency\", [\"<1>\"], [\"<second>\"]],\n\n    /* angle */\n    \"<radian>\" :[[\"rad\",\"radian\",\"radians\"], 1.0, \"angle\", [\"<radian>\"]],\n    \"<degree>\" :[[\"deg\",\"degree\",\"degrees\"], Math.PI / 180.0, \"angle\", [\"<radian>\"]],\n    \"<gradian>\"   :[[\"gon\",\"grad\",\"gradian\",\"grads\"], Math.PI / 200.0, \"angle\", [\"<radian>\"]],\n    \"<steradian>\"  : [[\"sr\",\"steradian\",\"steradians\"], 1.0, \"solid_angle\", [\"<steradian>\"]],\n\n    /* rotation */\n    \"<rotation>\" : [[\"rotation\"], 2.0 * Math.PI, \"angle\", [\"<radian>\"]],\n    \"<rpm>\"   :[[\"rpm\"], 2.0 * Math.PI / 60.0, \"angular_velocity\", [\"<radian>\"], [\"<second>\"]],\n\n    /* information */\n    \"<byte>\"  :[[\"B\",\"byte\",\"bytes\"], 1.0, \"information\", [\"<byte>\"]],\n    \"<bit>\"  :[[\"b\",\"bit\",\"bits\"], 0.125, \"information\", [\"<byte>\"]],\n\n    /* information rate */\n    \"<Bps>\" : [[\"Bps\"], 1.0, \"information_rate\", [\"<byte>\"], [\"<second>\"]],\n    \"<bps>\" : [[\"bps\"], 0.125, \"information_rate\", [\"<byte>\"], [\"<second>\"]],\n\n    /* currency */\n    \"<dollar>\":[[\"USD\",\"dollar\"], 1.0, \"currency\", [\"<dollar>\"]],\n    \"<cents>\" :[[\"cents\"], 0.01, \"currency\", [\"<dollar>\"]],\n\n    /* luminosity */\n    \"<candela>\" : [[\"cd\",\"candela\"], 1.0, \"luminosity\", [\"<candela>\"]],\n    \"<lumen>\" : [[\"lm\",\"lumen\"], 1.0, \"luminous_power\", [\"<candela>\",\"<steradian>\"]],\n    \"<lux>\" :[[\"lux\"], 1.0, \"illuminance\", [\"<candela>\",\"<steradian>\"], [\"<meter>\",\"<meter>\"]],\n\n    /* power */\n    \"<watt>\"  : [[\"W\",\"watt\",\"watts\"], 1.0, \"power\", [\"<kilogram>\",\"<meter>\",\"<meter>\"], [\"<second>\",\"<second>\",\"<second>\"]],\n    \"<volt-ampere>\"  : [[\"VA\",\"volt-ampere\"], 1.0, \"power\", [\"<kilogram>\",\"<meter>\",\"<meter>\"], [\"<second>\",\"<second>\",\"<second>\"]],\n    \"<volt-ampere-reactive>\"  : [[\"var\",\"Var\",\"VAr\",\"VAR\",\"volt-ampere-reactive\"], 1.0, \"power\", [\"<kilogram>\",\"<meter>\",\"<meter>\"], [\"<second>\",\"<second>\",\"<second>\"]],\n    \"<horsepower>\"  :  [[\"hp\",\"horsepower\"], 745.699872, \"power\", [\"<kilogram>\",\"<meter>\",\"<meter>\"], [\"<second>\",\"<second>\",\"<second>\"]],\n\n    /* radiation */\n    \"<gray>\" : [[\"Gy\",\"gray\",\"grays\"], 1.0, \"radiation\", [\"<meter>\",\"<meter>\"], [\"<second>\",\"<second>\"]],\n    \"<roentgen>\" : [[\"R\",\"roentgen\"], 0.009330, \"radiation\", [\"<meter>\",\"<meter>\"], [\"<second>\",\"<second>\"]],\n    \"<sievert>\" : [[\"Sv\",\"sievert\",\"sieverts\"], 1.0, \"radiation\", [\"<meter>\",\"<meter>\"], [\"<second>\",\"<second>\"]],\n    \"<becquerel>\" : [[\"Bq\",\"becquerel\",\"becquerels\"], 1.0, \"radiation\", [\"<1>\"],[\"<second>\"]],\n    \"<curie>\" : [[\"Ci\",\"curie\",\"curies\"], 3.7e10, \"radiation\", [\"<1>\"],[\"<second>\"]],\n\n    /* rate */\n    \"<cpm>\" : [[\"cpm\"], 1.0 / 60.0, \"rate\", [\"<count>\"],[\"<second>\"]],\n    \"<dpm>\" : [[\"dpm\"], 1.0 / 60.0, \"rate\", [\"<count>\"],[\"<second>\"]],\n    \"<bpm>\" : [[\"bpm\"], 1.0 / 60.0, \"rate\", [\"<count>\"],[\"<second>\"]],\n\n    /* resolution / typography */\n    \"<dot>\" : [[\"dot\",\"dots\"], 1, \"resolution\", [\"<each>\"]],\n    \"<pixel>\" : [[\"pixel\",\"px\"], 1, \"resolution\", [\"<each>\"]],\n    \"<ppi>\" : [[\"ppi\"], 1, \"resolution\", [\"<pixel>\"], [\"<inch>\"]],\n    \"<dpi>\" : [[\"dpi\"], 1, \"typography\", [\"<dot>\"], [\"<inch>\"]],\n\n    /* other */\n    \"<cell>\" : [[\"cells\",\"cell\"], 1, \"counting\", [\"<each>\"]],\n    \"<each>\" : [[\"each\"], 1.0, \"counting\", [\"<each>\"]],\n    \"<count>\" : [[\"count\"], 1.0, \"counting\", [\"<each>\"]],\n    \"<base-pair>\"  : [[\"bp\",\"base-pair\"], 1.0, \"counting\", [\"<each>\"]],\n    \"<nucleotide>\" : [[\"nt\",\"nucleotide\"], 1.0, \"counting\", [\"<each>\"]],\n    \"<molecule>\" : [[\"molecule\",\"molecules\"], 1.0, \"counting\", [\"<1>\"]],\n    \"<dozen>\" :  [[\"doz\",\"dz\",\"dozen\"],12.0,\"prefix_only\", [\"<each>\"]],\n    \"<percent>\": [[\"%\",\"percent\"], 0.01, \"prefix_only\", [\"<1>\"]],\n    \"<ppm>\" :  [[\"ppm\"],1e-6, \"prefix_only\", [\"<1>\"]],\n    \"<ppt>\" :  [[\"ppt\"],1e-9, \"prefix_only\", [\"<1>\"]],\n    \"<gross>\" :  [[\"gr\",\"gross\"],144.0, \"prefix_only\", [\"<dozen>\",\"<dozen>\"]],\n    \"<decibel>\"  : [[\"dB\",\"decibel\",\"decibels\"], 1.0, \"logarithmic\", [\"<decibel>\"]]\n  };\n\n  var BASE_UNITS = [\"<meter>\",\"<kilogram>\",\"<second>\",\"<mole>\", \"<ampere>\",\"<radian>\",\"<kelvin>\",\"<temp-K>\",\"<byte>\",\"<dollar>\",\"<candela>\",\"<each>\",\"<steradian>\",\"<decibel>\"];\n\n  var UNITY = \"<1>\";\n  var UNITY_ARRAY = [UNITY];\n\n  // Setup\n\n  /**\n   * Asserts unit definition is valid\n   *\n   * @param {string} unitDef - Name of unit to test\n   * @param {Object} definition - Definition of unit to test\n   *\n   * @returns {void}\n   * @throws {QtyError} if unit definition is not valid\n   */\n  function validateUnitDefinition(unitDef, definition) {\n    var scalar = definition[1];\n    var numerator = definition[3] || [];\n    var denominator = definition[4] || [];\n    if (!isNumber(scalar)) {\n      throw new QtyError(unitDef + \": Invalid unit definition. \" +\n                         \"'scalar' must be a number\");\n    }\n\n    numerator.forEach(function(unit) {\n      if (UNITS[unit] === undefined) {\n        throw new QtyError(unitDef + \": Invalid unit definition. \" +\n                           \"Unit \" + unit + \" in 'numerator' is not recognized\");\n      }\n    });\n\n    denominator.forEach(function(unit) {\n      if (UNITS[unit] === undefined) {\n        throw new QtyError(unitDef + \": Invalid unit definition. \" +\n                           \"Unit \" + unit + \" in 'denominator' is not recognized\");\n      }\n    });\n  }\n\n  var PREFIX_VALUES = {};\n  var PREFIX_MAP = {};\n  var UNIT_VALUES = {};\n  var UNIT_MAP = {};\n  var OUTPUT_MAP = {};\n  for (var unitDef in UNITS) {\n    if (UNITS.hasOwnProperty(unitDef)) {\n      var definition = UNITS[unitDef];\n      if (definition[2] === \"prefix\") {\n        PREFIX_VALUES[unitDef] = definition[1];\n        for (var i = 0; i < definition[0].length; i++) {\n          PREFIX_MAP[definition[0][i]] = unitDef;\n        }\n      }\n      else {\n        validateUnitDefinition(unitDef, definition);\n        UNIT_VALUES[unitDef] = {\n          scalar: definition[1],\n          numerator: definition[3],\n          denominator: definition[4]\n        };\n        for (var j = 0; j < definition[0].length; j++) {\n          UNIT_MAP[definition[0][j]] = unitDef;\n        }\n      }\n      OUTPUT_MAP[unitDef] = definition[0][0];\n    }\n  }\n\n  /**\n   * Returns a list of available units of kind\n   *\n   * @param {string} [kind] - kind of units\n   * @returns {array} names of units\n   * @throws {QtyError} if kind is unknown\n   */\n  function getUnits(kind) {\n    var i;\n    var units = [];\n    var unitKeys = Object.keys(UNITS);\n    if (typeof kind === \"undefined\") {\n      for (i = 0; i < unitKeys.length; i++) {\n        if ([\"\", \"prefix\"].indexOf(UNITS[unitKeys[i]][2]) === -1) {\n          units.push(unitKeys[i].substr(1, unitKeys[i].length - 2));\n        }\n      }\n    }\n    else if (this.getKinds().indexOf(kind) === -1) {\n      throw new QtyError(\"Kind not recognized\");\n    }\n    else {\n      for (i = 0; i < unitKeys.length; i++) {\n        if (UNITS[unitKeys[i]][2] === kind) {\n          units.push(unitKeys[i].substr(1, unitKeys[i].length - 2));\n        }\n      }\n    }\n\n    return units.sort(function(a, b) {\n      if (a.toLowerCase() < b.toLowerCase()) {\n        return -1;\n      }\n      if (a.toLowerCase() > b.toLowerCase()) {\n        return 1;\n      }\n      return 0;\n    });\n  }\n\n  /**\n   * Returns a list of alternative names for a unit\n   *\n   * @param {string} unitName - name of unit\n   * @returns {string[]} aliases for unit\n   * @throws {QtyError} if unit is unknown\n   */\n  function getAliases(unitName) {\n    if (!UNIT_MAP[unitName]) {\n      throw new QtyError(\"Unit not recognized\");\n    }\n    return UNITS[UNIT_MAP[unitName]][0];\n  }\n\n  var SIGNATURE_VECTOR = [\"length\", \"time\", \"temperature\", \"mass\", \"current\", \"substance\", \"luminosity\", \"currency\", \"information\", \"angle\"];\n\n  /*\n  calculates the unit signature id for use in comparing compatible units and simplification\n  the signature is based on a simple classification of units and is based on the following publication\n\n  Novak, G.S., Jr. \"Conversion of units of measurement\", IEEE Transactions on Software Engineering,\n  21(8), Aug 1995, pp.651-661\n  doi://10.1109/32.403789\n  http://ieeexplore.ieee.org/Xplore/login.jsp?url=/iel1/32/9079/00403789.pdf?isnumber=9079&prod=JNL&arnumber=403789&arSt=651&ared=661&arAuthor=Novak%2C+G.S.%2C+Jr.\n  */\n  function unitSignature() {\n    if (this.signature) {\n      return this.signature;\n    }\n    var vector = unitSignatureVector.call(this);\n    for (var i = 0; i < vector.length; i++) {\n      vector[i] *= Math.pow(20, i);\n    }\n\n    return vector.reduce(\n      function(previous, current) {\n        return previous + current;\n      },\n      0\n    );\n  }\n\n  // calculates the unit signature vector used by unit_signature\n  function unitSignatureVector() {\n    if (!this.isBase()) {\n      return unitSignatureVector.call(this.toBase());\n    }\n\n    var vector = new Array(SIGNATURE_VECTOR.length);\n    for (var i = 0; i < vector.length; i++) {\n      vector[i] = 0;\n    }\n    var r, n;\n    for (var j = 0; j < this.numerator.length; j++) {\n      if ((r = UNITS[this.numerator[j]])) {\n        n = SIGNATURE_VECTOR.indexOf(r[2]);\n        if (n >= 0) {\n          vector[n] = vector[n] + 1;\n        }\n      }\n    }\n\n    for (var k = 0; k < this.denominator.length; k++) {\n      if ((r = UNITS[this.denominator[k]])) {\n        n = SIGNATURE_VECTOR.indexOf(r[2]);\n        if (n >= 0) {\n          vector[n] = vector[n] - 1;\n        }\n      }\n    }\n    return vector;\n  }\n\n  var SIGN = \"[+-]\";\n  var INTEGER = \"\\\\d+\";\n  var SIGNED_INTEGER = SIGN + \"?\" + INTEGER;\n  var FRACTION = \"\\\\.\" + INTEGER;\n  var FLOAT = \"(?:\" + INTEGER + \"(?:\" + FRACTION + \")?\" + \")\" +\n              \"|\" +\n              \"(?:\" + FRACTION + \")\";\n  var EXPONENT = \"[Ee]\" + SIGNED_INTEGER;\n  var SCI_NUMBER = \"(?:\" + FLOAT + \")(?:\" + EXPONENT + \")?\";\n  var SIGNED_NUMBER = SIGN + \"?\\\\s*\" + SCI_NUMBER;\n  var QTY_STRING = \"(\" + SIGNED_NUMBER + \")?\" + \"\\\\s*([^/]*)(?:\\/(.+))?\";\n  var QTY_STRING_REGEX = new RegExp(\"^\" + QTY_STRING + \"$\");\n\n  var POWER_OP = \"\\\\^|\\\\*{2}\";\n  // Allow unit powers representing scalar, length, area, volume; 4 is for some\n  // special case representations in SI base units.\n  var SAFE_POWER = \"[01234]\";\n  var TOP_REGEX = new RegExp (\"([^ \\\\*\\\\d]+?)(?:\" + POWER_OP + \")?(-?\" + SAFE_POWER + \"(?![a-zA-Z]))\");\n  var BOTTOM_REGEX = new RegExp(\"([^ \\\\*\\\\d]+?)(?:\" + POWER_OP + \")?(\" + SAFE_POWER + \"(?![a-zA-Z]))\");\n\n  /* parse a string into a unit object.\n   * Typical formats like :\n   * \"5.6 kg*m/s^2\"\n   * \"5.6 kg*m*s^-2\"\n   * \"5.6 kilogram*meter*second^-2\"\n   * \"2.2 kPa\"\n   * \"37 degC\"\n   * \"1\"  -- creates a unitless constant with value 1\n   * \"GPa\"  -- creates a unit with scalar 1 with units 'GPa'\n   * 6'4\"  -- recognized as 6 feet + 4 inches\n   * 8 lbs 8 oz -- recognized as 8 lbs + 8 ounces\n   */\n  function parse(val) {\n    if (!isString(val)) {\n      val = val.toString();\n    }\n    val = val.trim();\n\n    var result = QTY_STRING_REGEX.exec(val);\n    if (!result) {\n      throw new QtyError(val + \": Quantity not recognized\");\n    }\n\n    var scalarMatch = result[1];\n    if (scalarMatch) {\n      // Allow whitespaces between sign and scalar for loose parsing\n      scalarMatch = scalarMatch.replace(/\\s/g, \"\");\n      this.scalar = parseFloat(scalarMatch);\n    }\n    else {\n      this.scalar = 1;\n    }\n    var top = result[2];\n    var bottom = result[3];\n\n    var n, x, nx;\n    // TODO DRY me\n    while ((result = TOP_REGEX.exec(top))) {\n      n = parseFloat(result[2]);\n      if (isNaN(n)) {\n        // Prevents infinite loops\n        throw new QtyError(\"Unit exponent is not a number\");\n      }\n      // Disallow unrecognized unit even if exponent is 0\n      if (n === 0 && !UNIT_TEST_REGEX.test(result[1])) {\n        throw new QtyError(\"Unit not recognized\");\n      }\n      x = result[1] + \" \";\n      nx = \"\";\n      for (var i = 0; i < Math.abs(n) ; i++) {\n        nx += x;\n      }\n      if (n >= 0) {\n        top = top.replace(result[0], nx);\n      }\n      else {\n        bottom = bottom ? bottom + nx : nx;\n        top = top.replace(result[0], \"\");\n      }\n    }\n\n    while ((result = BOTTOM_REGEX.exec(bottom))) {\n      n = parseFloat(result[2]);\n      if (isNaN(n)) {\n        // Prevents infinite loops\n        throw new QtyError(\"Unit exponent is not a number\");\n      }\n      // Disallow unrecognized unit even if exponent is 0\n      if (n === 0 && !UNIT_TEST_REGEX.test(result[1])) {\n        throw new QtyError(\"Unit not recognized\");\n      }\n      x = result[1] + \" \";\n      nx = \"\";\n      for (var j = 0; j < n ; j++) {\n        nx += x;\n      }\n\n      bottom = bottom.replace(result[0], nx);\n    }\n\n    if (top) {\n      this.numerator = parseUnits(top.trim());\n    }\n    if (bottom) {\n      this.denominator = parseUnits(bottom.trim());\n    }\n  }\n\n  var PREFIX_REGEX = Object.keys(PREFIX_MAP).sort(function(a, b) {\n    return b.length - a.length;\n  }).join(\"|\");\n  var UNIT_REGEX = Object.keys(UNIT_MAP).sort(function(a, b) {\n    return b.length - a.length;\n  }).join(\"|\");\n  /*\n   * Minimal boundary regex to support units with Unicode characters\n   * \\b only works for ASCII\n   */\n  var BOUNDARY_REGEX = \"\\\\b|$\";\n  var UNIT_MATCH = \"(\" + PREFIX_REGEX + \")??(\" +\n                   UNIT_REGEX +\n                   \")(?:\" + BOUNDARY_REGEX + \")\";\n  var UNIT_TEST_REGEX = new RegExp(\"^\\\\s*(\" + UNIT_MATCH + \"[\\\\s\\\\*]*)+$\");\n  var UNIT_MATCH_REGEX = new RegExp(UNIT_MATCH, \"g\"); // g flag for multiple occurences\n  var parsedUnitsCache = {};\n  /**\n   * Parses and converts units string to normalized unit array.\n   * Result is cached to speed up next calls.\n   *\n   * @param {string} units Units string\n   * @returns {string[]} Array of normalized units\n   *\n   * @example\n   * // Returns [\"<second>\", \"<meter>\", \"<second>\"]\n   * parseUnits(\"s m s\");\n   *\n   */\n  function parseUnits(units) {\n    var cached = parsedUnitsCache[units];\n    if (cached) {\n      return cached;\n    }\n\n    var unitMatch, normalizedUnits = [];\n\n    // Scan\n    if (!UNIT_TEST_REGEX.test(units)) {\n      throw new QtyError(\"Unit not recognized\");\n    }\n\n    while ((unitMatch = UNIT_MATCH_REGEX.exec(units))) {\n      normalizedUnits.push(unitMatch.slice(1));\n    }\n\n    normalizedUnits = normalizedUnits.map(function(item) {\n      return PREFIX_MAP[item[0]] ? [PREFIX_MAP[item[0]], UNIT_MAP[item[1]]] : [UNIT_MAP[item[1]]];\n    });\n\n    // Flatten and remove null elements\n    normalizedUnits = normalizedUnits.reduce(function(a,b) {\n      return a.concat(b);\n    }, []);\n    normalizedUnits = normalizedUnits.filter(function(item) {\n      return item;\n    });\n\n    parsedUnitsCache[units] = normalizedUnits;\n\n    return normalizedUnits;\n  }\n\n  /**\n   * Parses a string as a quantity\n   * @param {string} value - quantity as text\n   * @throws if value is not a string\n   * @returns {Qty|null} Parsed quantity or null if unrecognized\n   */\n  function globalParse(value) {\n    if (!isString(value)) {\n      throw new QtyError(\"Argument should be a string\");\n    }\n\n    try {\n      return this(value);\n    }\n    catch (e) {\n      return null;\n    }\n  }\n\n  /**\n   * Tests if a value is a Qty instance\n   *\n   * @param {*} value - Value to test\n   *\n   * @returns {boolean} true if value is a Qty instance, false otherwise\n   */\n  function isQty(value) {\n    return value instanceof Qty;\n  }\n\n  function Qty(initValue, initUnits) {\n    assertValidConstructorArgs.apply(null, arguments);\n\n    if (!(isQty(this))) {\n      return new Qty(initValue, initUnits);\n    }\n\n    this.scalar = null;\n    this.baseScalar = null;\n    this.signature = null;\n    this._conversionCache = {};\n    this.numerator = UNITY_ARRAY;\n    this.denominator = UNITY_ARRAY;\n\n    if (isDefinitionObject(initValue)) {\n      this.scalar = initValue.scalar;\n      this.numerator = (initValue.numerator && initValue.numerator.length !== 0) ? initValue.numerator : UNITY_ARRAY;\n      this.denominator = (initValue.denominator && initValue.denominator.length !== 0) ? initValue.denominator : UNITY_ARRAY;\n    }\n    else if (initUnits) {\n      parse.call(this, initUnits);\n      this.scalar = initValue;\n    }\n    else {\n      parse.call(this, initValue);\n    }\n\n    // math with temperatures is very limited\n    if (this.denominator.join(\"*\").indexOf(\"temp\") >= 0) {\n      throw new QtyError(\"Cannot divide with temperatures\");\n    }\n    if (this.numerator.join(\"*\").indexOf(\"temp\") >= 0) {\n      if (this.numerator.length > 1) {\n        throw new QtyError(\"Cannot multiply by temperatures\");\n      }\n      if (!compareArray(this.denominator, UNITY_ARRAY)) {\n        throw new QtyError(\"Cannot divide with temperatures\");\n      }\n    }\n\n    this.initValue = initValue;\n    updateBaseScalar.call(this);\n\n    if (this.isTemperature() && this.baseScalar < 0) {\n      throw new QtyError(\"Temperatures must not be less than absolute zero\");\n    }\n  }\n\n  Qty.prototype = {\n    // Properly set up constructor\n    constructor: Qty,\n  };\n\n  /**\n   * Asserts constructor arguments are valid\n   *\n   * @param {*} value - Value to test\n   * @param {string} [units] - Optional units when value is passed as a number\n   *\n   * @returns {void}\n   * @throws {QtyError} if constructor arguments are invalid\n   */\n  function assertValidConstructorArgs(value, units) {\n    if (units) {\n      if (!(isNumber(value) && isString(units))) {\n        throw new QtyError(\"Only number accepted as initialization value \" +\n                           \"when units are explicitly provided\");\n      }\n    }\n    else {\n      if (!(isString(value) ||\n            isNumber(value) ||\n            isQty(value)    ||\n            isDefinitionObject(value))) {\n        throw new QtyError(\"Only string, number or quantity accepted as \" +\n                           \"single initialization value\");\n      }\n    }\n  }\n\n  /**\n   * Tests if a value is a Qty definition object\n   *\n   * @param {*} value - Value to test\n   *\n   * @returns {boolean} true if value is a definition object, false otherwise\n   */\n  function isDefinitionObject(value) {\n    return value && typeof value === \"object\" && value.hasOwnProperty(\"scalar\");\n  }\n\n  function updateBaseScalar() {\n    if (this.baseScalar) {\n      return this.baseScalar;\n    }\n    if (this.isBase()) {\n      this.baseScalar = this.scalar;\n      this.signature = unitSignature.call(this);\n    }\n    else {\n      var base = this.toBase();\n      this.baseScalar = base.scalar;\n      this.signature = base.signature;\n    }\n  }\n\n  var KINDS = {\n    \"-312078\": \"elastance\",\n    \"-312058\": \"resistance\",\n    \"-312038\": \"inductance\",\n    \"-152058\": \"potential\",\n    \"-152040\": \"magnetism\",\n    \"-152038\": \"magnetism\",\n    \"-7997\": \"specific_volume\",\n    \"-79\": \"snap\",\n    \"-59\": \"jolt\",\n    \"-39\": \"acceleration\",\n    \"-38\": \"radiation\",\n    \"-20\": \"frequency\",\n    \"-19\": \"speed\",\n    \"-18\": \"viscosity\",\n    \"-17\": \"volumetric_flow\",\n    \"-1\": \"wavenumber\",\n    \"0\": \"unitless\",\n    \"1\": \"length\",\n    \"2\": \"area\",\n    \"3\": \"volume\",\n    \"20\": \"time\",\n    \"400\": \"temperature\",\n    \"7941\": \"yank\",\n    \"7942\": \"power\",\n    \"7959\": \"pressure\",\n    \"7961\": \"force\",\n    \"7962\": \"energy\",\n    \"7979\": \"viscosity\",\n    \"7981\": \"momentum\",\n    \"7982\": \"angular_momentum\",\n    \"7997\": \"density\",\n    \"7998\": \"area_density\",\n    \"8000\": \"mass\",\n    \"152020\": \"radiation_exposure\",\n    \"159999\": \"magnetism\",\n    \"160000\": \"current\",\n    \"160020\": \"charge\",\n    \"312058\": \"conductance\",\n    \"312078\": \"capacitance\",\n    \"3199980\": \"activity\",\n    \"3199997\": \"molar_concentration\",\n    \"3200000\": \"substance\",\n    \"63999998\": \"illuminance\",\n    \"64000000\": \"luminous_power\",\n    \"1280000000\": \"currency\",\n    \"25599999980\": \"information_rate\",\n    \"25600000000\": \"information\",\n    \"511999999980\": \"angular_velocity\",\n    \"512000000000\": \"angle\"\n  };\n\n  /**\n   * Returns the list of available well-known kinds of units, e.g.\n   * \"radiation\" or \"length\".\n   *\n   * @returns {string[]} names of kinds of units\n   */\n  function getKinds() {\n    return uniq(Object.keys(KINDS).map(function(knownSignature) {\n      return KINDS[knownSignature];\n    }));\n  }\n\n  Qty.prototype.kind = function() {\n    return KINDS[this.signature.toString()];\n  };\n\n  assign(Qty.prototype, {\n    isDegrees: function() {\n      // signature may not have been calculated yet\n      return (this.signature === null || this.signature === 400) &&\n        this.numerator.length === 1 &&\n        compareArray(this.denominator, UNITY_ARRAY) &&\n        (this.numerator[0].match(/<temp-[CFRK]>/) || this.numerator[0].match(/<(kelvin|celsius|rankine|fahrenheit)>/));\n    },\n\n    isTemperature: function() {\n      return this.isDegrees() && this.numerator[0].match(/<temp-[CFRK]>/);\n    }\n  });\n\n  function subtractTemperatures(lhs,rhs) {\n    var lhsUnits = lhs.units();\n    var rhsConverted = rhs.to(lhsUnits);\n    var dstDegrees = Qty(getDegreeUnits(lhsUnits));\n    return Qty({\"scalar\": lhs.scalar - rhsConverted.scalar, \"numerator\": dstDegrees.numerator, \"denominator\": dstDegrees.denominator});\n  }\n\n  function subtractTempDegrees(temp,deg) {\n    var tempDegrees = deg.to(getDegreeUnits(temp.units()));\n    return Qty({\"scalar\": temp.scalar - tempDegrees.scalar, \"numerator\": temp.numerator, \"denominator\": temp.denominator});\n  }\n\n  function addTempDegrees(temp,deg) {\n    var tempDegrees = deg.to(getDegreeUnits(temp.units()));\n    return Qty({\"scalar\": temp.scalar + tempDegrees.scalar, \"numerator\": temp.numerator, \"denominator\": temp.denominator});\n  }\n\n  function getDegreeUnits(units) {\n    if (units === \"tempK\") {\n      return \"degK\";\n    }\n    else if (units === \"tempC\") {\n      return \"degC\";\n    }\n    else if (units === \"tempF\") {\n      return \"degF\";\n    }\n    else if (units === \"tempR\") {\n      return \"degR\";\n    }\n    else {\n      throw new QtyError(\"Unknown type for temp conversion from: \" + units);\n    }\n  }\n\n  function toDegrees(src,dst) {\n    var srcDegK = toDegK(src);\n    var dstUnits = dst.units();\n    var dstScalar;\n\n    if (dstUnits === \"degK\") {\n      dstScalar = srcDegK.scalar;\n    }\n    else if (dstUnits === \"degC\") {\n      dstScalar = srcDegK.scalar ;\n    }\n    else if (dstUnits === \"degF\") {\n      dstScalar = srcDegK.scalar * 9 / 5;\n    }\n    else if (dstUnits === \"degR\") {\n      dstScalar = srcDegK.scalar * 9 / 5;\n    }\n    else {\n      throw new QtyError(\"Unknown type for degree conversion to: \" + dstUnits);\n    }\n\n    return Qty({\"scalar\": dstScalar, \"numerator\": dst.numerator, \"denominator\": dst.denominator});\n  }\n\n  function toDegK(qty) {\n    var units = qty.units();\n    var q;\n    if (units.match(/(deg)[CFRK]/)) {\n      q = qty.baseScalar;\n    }\n    else if (units === \"tempK\") {\n      q = qty.scalar;\n    }\n    else if (units === \"tempC\") {\n      q = qty.scalar;\n    }\n    else if (units === \"tempF\") {\n      q = qty.scalar * 5 / 9;\n    }\n    else if (units === \"tempR\") {\n      q = qty.scalar * 5 / 9;\n    }\n    else {\n      throw new QtyError(\"Unknown type for temp conversion from: \" + units);\n    }\n\n    return Qty({\"scalar\": q, \"numerator\": [\"<kelvin>\"], \"denominator\": UNITY_ARRAY});\n  }\n\n  function toTemp(src,dst) {\n    var dstUnits = dst.units();\n    var dstScalar;\n\n    if (dstUnits === \"tempK\") {\n      dstScalar = src.baseScalar;\n    }\n    else if (dstUnits === \"tempC\") {\n      dstScalar = src.baseScalar - 273.15;\n    }\n    else if (dstUnits === \"tempF\") {\n      dstScalar = (src.baseScalar * 9 / 5) - 459.67;\n    }\n    else if (dstUnits === \"tempR\") {\n      dstScalar = src.baseScalar * 9 / 5;\n    }\n    else {\n      throw new QtyError(\"Unknown type for temp conversion to: \" + dstUnits);\n    }\n\n    return Qty({\"scalar\": dstScalar, \"numerator\": dst.numerator, \"denominator\": dst.denominator});\n  }\n\n  function toTempK(qty) {\n    var units = qty.units();\n    var q;\n    if (units.match(/(deg)[CFRK]/)) {\n      q = qty.baseScalar;\n    }\n    else if (units === \"tempK\") {\n      q = qty.scalar;\n    }\n    else if (units === \"tempC\") {\n      q = qty.scalar + 273.15;\n    }\n    else if (units === \"tempF\") {\n      q = (qty.scalar + 459.67) * 5 / 9;\n    }\n    else if (units === \"tempR\") {\n      q = qty.scalar * 5 / 9;\n    }\n    else {\n      throw new QtyError(\"Unknown type for temp conversion from: \" + units);\n    }\n\n    return Qty({\"scalar\": q, \"numerator\": [\"<temp-K>\"], \"denominator\": UNITY_ARRAY});\n  }\n\n  assign(Qty.prototype, {\n    /**\n     * Converts to other compatible units.\n     * Instance's converted quantities are cached for faster subsequent calls.\n     *\n     * @param {(string|Qty)} other - Target units as string or retrieved from\n     *                               other Qty instance (scalar is ignored)\n     *\n     * @returns {Qty} New converted Qty instance with target units\n     *\n     * @throws {QtyError} if target units are incompatible\n     *\n     * @example\n     * var weight = Qty(\"25 kg\");\n     * weight.to(\"lb\"); // => Qty(\"55.11556554621939 lbs\");\n     * weight.to(Qty(\"3 g\")); // => Qty(\"25000 g\"); // scalar of passed Qty is ignored\n     */\n    to: function(other) {\n      var cached, target;\n\n      if (other === undefined || other === null) {\n        return this;\n      }\n\n      if (!isString(other)) {\n        return this.to(other.units());\n      }\n\n      cached = this._conversionCache[other];\n      if (cached) {\n        return cached;\n      }\n\n      // Instantiating target to normalize units\n      target = Qty(other);\n      if (target.units() === this.units()) {\n        return this;\n      }\n\n      if (!this.isCompatible(target)) {\n        if (this.isInverse(target)) {\n          target = this.inverse().to(other);\n        }\n        else {\n          throwIncompatibleUnits(this.units(), target.units());\n        }\n      }\n      else {\n        if (target.isTemperature()) {\n          target = toTemp(this,target);\n        }\n        else if (target.isDegrees()) {\n          target = toDegrees(this,target);\n        }\n        else {\n          var q = divSafe(this.baseScalar, target.baseScalar);\n          target = Qty({\"scalar\": q, \"numerator\": target.numerator, \"denominator\": target.denominator});\n        }\n      }\n\n      this._conversionCache[other] = target;\n      return target;\n    },\n\n    // convert to base SI units\n    // results of the conversion are cached so subsequent calls to this will be fast\n    toBase: function() {\n      if (this.isBase()) {\n        return this;\n      }\n\n      if (this.isTemperature()) {\n        return toTempK(this);\n      }\n\n      var cached = baseUnitCache[this.units()];\n      if (!cached) {\n        cached = toBaseUnits(this.numerator,this.denominator);\n        baseUnitCache[this.units()] = cached;\n      }\n      return cached.mul(this.scalar);\n    },\n\n    // Converts the unit back to a float if it is unitless.  Otherwise raises an exception\n    toFloat: function() {\n      if (this.isUnitless()) {\n        return this.scalar;\n      }\n      throw new QtyError(\"Can't convert to Float unless unitless.  Use Unit#scalar\");\n    },\n\n    /**\n     * Returns the nearest multiple of quantity passed as\n     * precision\n     *\n     * @param {(Qty|string|number)} precQuantity - Quantity, string formated\n     *   quantity or number as expected precision\n     *\n     * @returns {Qty} Nearest multiple of precQuantity\n     *\n     * @example\n     * Qty('5.5 ft').toPrec('2 ft'); // returns 6 ft\n     * Qty('0.8 cu').toPrec('0.25 cu'); // returns 0.75 cu\n     * Qty('6.3782 m').toPrec('cm'); // returns 6.38 m\n     * Qty('1.146 MPa').toPrec('0.1 bar'); // returns 1.15 MPa\n     *\n     */\n    toPrec: function(precQuantity) {\n      if (isString(precQuantity)) {\n        precQuantity = Qty(precQuantity);\n      }\n      if (isNumber(precQuantity)) {\n        precQuantity = Qty(precQuantity + \" \" + this.units());\n      }\n\n      if (!this.isUnitless()) {\n        precQuantity = precQuantity.to(this.units());\n      }\n      else if (!precQuantity.isUnitless()) {\n        throwIncompatibleUnits(this.units(), precQuantity.units());\n      }\n\n      if (precQuantity.scalar === 0) {\n        throw new QtyError(\"Divide by zero\");\n      }\n\n      var precRoundedResult = mulSafe(\n        Math.round(this.scalar / precQuantity.scalar),\n        precQuantity.scalar\n      );\n\n      return Qty(precRoundedResult + this.units());\n    }\n  });\n\n  /**\n   * Configures and returns a fast function to convert\n   * Number values from units to others.\n   * Useful to efficiently convert large array of values\n   * with same units into others with iterative methods.\n   * Does not take care of rounding issues.\n   *\n   * @param {string} srcUnits Units of values to convert\n   * @param {string} dstUnits Units to convert to\n   *\n   * @returns {Function} Converting function accepting Number value\n   *   and returning converted value\n   *\n   * @throws \"Incompatible units\" if units are incompatible\n   *\n   * @example\n   * // Converting large array of numbers with the same units\n   * // into other units\n   * var converter = Qty.swiftConverter(\"m/h\", \"ft/s\");\n   * var convertedSerie = largeSerie.map(converter);\n   *\n   */\n  function swiftConverter(srcUnits, dstUnits) {\n    var srcQty = Qty(srcUnits);\n    var dstQty = Qty(dstUnits);\n\n    if (srcQty.eq(dstQty)) {\n      return identity;\n    }\n\n    var convert;\n    if (!srcQty.isTemperature()) {\n      convert = function(value) {\n        return value * srcQty.baseScalar / dstQty.baseScalar;\n      };\n    }\n    else {\n      convert = function(value) {\n        // TODO Not optimized\n        return srcQty.mul(value).to(dstQty).scalar;\n      };\n    }\n\n    return function converter(value) {\n      var i, length, result;\n      if (!Array.isArray(value)) {\n        return convert(value);\n      }\n      else {\n        length = value.length;\n        result = [];\n        for (i = 0; i < length; i++) {\n          result.push(convert(value[i]));\n        }\n        return result;\n      }\n    };\n  }\n\n  var baseUnitCache = {};\n\n  function toBaseUnits(numerator,denominator) {\n    var num = [];\n    var den = [];\n    var q = 1;\n    var unit;\n    for (var i = 0; i < numerator.length; i++) {\n      unit = numerator[i];\n      if (PREFIX_VALUES[unit]) {\n        // workaround to fix\n        // 0.1 * 0.1 => 0.010000000000000002\n        q = mulSafe(q, PREFIX_VALUES[unit]);\n      }\n      else {\n        if (UNIT_VALUES[unit]) {\n          q *= UNIT_VALUES[unit].scalar;\n\n          if (UNIT_VALUES[unit].numerator) {\n            num.push(UNIT_VALUES[unit].numerator);\n          }\n          if (UNIT_VALUES[unit].denominator) {\n            den.push(UNIT_VALUES[unit].denominator);\n          }\n        }\n      }\n    }\n    for (var j = 0; j < denominator.length; j++) {\n      unit = denominator[j];\n      if (PREFIX_VALUES[unit]) {\n        q /= PREFIX_VALUES[unit];\n      }\n      else {\n        if (UNIT_VALUES[unit]) {\n          q /= UNIT_VALUES[unit].scalar;\n\n          if (UNIT_VALUES[unit].numerator) {\n            den.push(UNIT_VALUES[unit].numerator);\n          }\n          if (UNIT_VALUES[unit].denominator) {\n            num.push(UNIT_VALUES[unit].denominator);\n          }\n        }\n      }\n    }\n\n    // Flatten\n    num = num.reduce(function(a,b) {\n      return a.concat(b);\n    }, []);\n    den = den.reduce(function(a,b) {\n      return a.concat(b);\n    }, []);\n\n    return Qty({\"scalar\": q, \"numerator\": num, \"denominator\": den});\n  }\n\n  Qty.parse = globalParse;\n\n  Qty.getUnits = getUnits;\n  Qty.getAliases = getAliases;\n\n  Qty.mulSafe = mulSafe;\n  Qty.divSafe = divSafe;\n\n  Qty.getKinds = getKinds;\n\n  Qty.swiftConverter = swiftConverter;\n\n  Qty.Error = QtyError;\n\n  assign(Qty.prototype, {\n    // Returns new instance with units of this\n    add: function(other) {\n      if (isString(other)) {\n        other = Qty(other);\n      }\n\n      if (!this.isCompatible(other)) {\n        throwIncompatibleUnits(this.units(), other.units());\n      }\n\n      if (this.isTemperature() && other.isTemperature()) {\n        throw new QtyError(\"Cannot add two temperatures\");\n      }\n      else if (this.isTemperature()) {\n        return addTempDegrees(this, other);\n      }\n      else if (other.isTemperature()) {\n        return addTempDegrees(other, this);\n      }\n\n      return Qty({\"scalar\": this.scalar + other.to(this).scalar, \"numerator\": this.numerator, \"denominator\": this.denominator});\n    },\n\n    sub: function(other) {\n      if (isString(other)) {\n        other = Qty(other);\n      }\n\n      if (!this.isCompatible(other)) {\n        throwIncompatibleUnits(this.units(), other.units());\n      }\n\n      if (this.isTemperature() && other.isTemperature()) {\n        return subtractTemperatures(this,other);\n      }\n      else if (this.isTemperature()) {\n        return subtractTempDegrees(this,other);\n      }\n      else if (other.isTemperature()) {\n        throw new QtyError(\"Cannot subtract a temperature from a differential degree unit\");\n      }\n\n      return Qty({\"scalar\": this.scalar - other.to(this).scalar, \"numerator\": this.numerator, \"denominator\": this.denominator});\n    },\n\n    mul: function(other) {\n      if (isNumber(other)) {\n        return Qty({\"scalar\": mulSafe(this.scalar, other), \"numerator\": this.numerator, \"denominator\": this.denominator});\n      }\n      else if (isString(other)) {\n        other = Qty(other);\n      }\n\n      if ((this.isTemperature() || other.isTemperature()) && !(this.isUnitless() || other.isUnitless())) {\n        throw new QtyError(\"Cannot multiply by temperatures\");\n      }\n\n      // Quantities should be multiplied with same units if compatible, with base units else\n      var op1 = this;\n      var op2 = other;\n\n      // so as not to confuse results, multiplication and division between temperature degrees will maintain original unit info in num/den\n      // multiplication and division between deg[CFRK] can never factor each other out, only themselves: \"degK*degC/degC^2\" == \"degK/degC\"\n      if (op1.isCompatible(op2) && op1.signature !== 400) {\n        op2 = op2.to(op1);\n      }\n      var numdenscale = cleanTerms(op1.numerator, op1.denominator, op2.numerator, op2.denominator);\n\n      return Qty({\"scalar\": mulSafe(op1.scalar, op2.scalar, numdenscale[2]), \"numerator\": numdenscale[0], \"denominator\": numdenscale[1]});\n    },\n\n    div: function(other) {\n      if (isNumber(other)) {\n        if (other === 0) {\n          throw new QtyError(\"Divide by zero\");\n        }\n        return Qty({\"scalar\": this.scalar / other, \"numerator\": this.numerator, \"denominator\": this.denominator});\n      }\n      else if (isString(other)) {\n        other = Qty(other);\n      }\n\n      if (other.scalar === 0) {\n        throw new QtyError(\"Divide by zero\");\n      }\n\n      if (other.isTemperature()) {\n        throw new QtyError(\"Cannot divide with temperatures\");\n      }\n      else if (this.isTemperature() && !other.isUnitless()) {\n        throw new QtyError(\"Cannot divide with temperatures\");\n      }\n\n      // Quantities should be multiplied with same units if compatible, with base units else\n      var op1 = this;\n      var op2 = other;\n\n      // so as not to confuse results, multiplication and division between temperature degrees will maintain original unit info in num/den\n      // multiplication and division between deg[CFRK] can never factor each other out, only themselves: \"degK*degC/degC^2\" == \"degK/degC\"\n      if (op1.isCompatible(op2) && op1.signature !== 400) {\n        op2 = op2.to(op1);\n      }\n      var numdenscale = cleanTerms(op1.numerator, op1.denominator, op2.denominator, op2.numerator);\n\n      return Qty({\"scalar\": mulSafe(op1.scalar, numdenscale[2]) / op2.scalar, \"numerator\": numdenscale[0], \"denominator\": numdenscale[1]});\n    },\n\n    // Returns a Qty that is the inverse of this Qty,\n    inverse: function() {\n      if (this.isTemperature()) {\n        throw new QtyError(\"Cannot divide with temperatures\");\n      }\n      if (this.scalar === 0) {\n        throw new QtyError(\"Divide by zero\");\n      }\n      return Qty({\"scalar\": 1 / this.scalar, \"numerator\": this.denominator, \"denominator\": this.numerator});\n    }\n  });\n\n  function cleanTerms(num1, den1, num2, den2) {\n    function notUnity(val) {\n      return val !== UNITY;\n    }\n\n    num1 = num1.filter(notUnity);\n    num2 = num2.filter(notUnity);\n    den1 = den1.filter(notUnity);\n    den2 = den2.filter(notUnity);\n\n    var combined = {};\n\n    function combineTerms(terms, direction) {\n      var k;\n      var prefix;\n      var prefixValue;\n      for (var i = 0; i < terms.length; i++) {\n        if (PREFIX_VALUES[terms[i]]) {\n          k = terms[i + 1];\n          prefix = terms[i];\n          prefixValue = PREFIX_VALUES[prefix];\n          i++;\n        }\n        else {\n          k = terms[i];\n          prefix = null;\n          prefixValue = 1;\n        }\n        if (k && k !== UNITY) {\n          if (combined[k]) {\n            combined[k][0] += direction;\n            var combinedPrefixValue = combined[k][2] ? PREFIX_VALUES[combined[k][2]] : 1;\n            combined[k][direction === 1 ? 3 : 4] *= divSafe(prefixValue, combinedPrefixValue);\n          }\n          else {\n            combined[k] = [direction, k, prefix, 1, 1];\n          }\n        }\n      }\n    }\n\n    combineTerms(num1, 1);\n    combineTerms(den1, -1);\n    combineTerms(num2, 1);\n    combineTerms(den2, -1);\n\n    var num = [];\n    var den = [];\n    var scale = 1;\n\n    for (var prop in combined) {\n      if (combined.hasOwnProperty(prop)) {\n        var item = combined[prop];\n        var n;\n        if (item[0] > 0) {\n          for (n = 0; n < item[0]; n++) {\n            num.push(item[2] === null ? item[1] : [item[2], item[1]]);\n          }\n        }\n        else if (item[0] < 0) {\n          for (n = 0; n < -item[0]; n++) {\n            den.push(item[2] === null ? item[1] : [item[2], item[1]]);\n          }\n        }\n        scale *= divSafe(item[3], item[4]);\n      }\n    }\n\n    if (num.length === 0) {\n      num = UNITY_ARRAY;\n    }\n    if (den.length === 0) {\n      den = UNITY_ARRAY;\n    }\n\n    // Flatten\n    num = num.reduce(function(a,b) {\n      return a.concat(b);\n    }, []);\n    den = den.reduce(function(a,b) {\n      return a.concat(b);\n    }, []);\n\n    return [num, den, scale];\n  }\n\n  assign(Qty.prototype, {\n    eq: function(other) {\n      return this.compareTo(other) === 0;\n    },\n\n    lt: function(other) {\n      return this.compareTo(other) === -1;\n    },\n\n    lte: function(other) {\n      return this.eq(other) || this.lt(other);\n    },\n\n    gt: function(other) {\n      return this.compareTo(other) === 1;\n    },\n\n    gte: function(other) {\n      return this.eq(other) || this.gt(other);\n    },\n\n    // Compare two Qty objects. Throws an exception if they are not of compatible types.\n    // Comparisons are done based on the value of the quantity in base SI units.\n    //\n    // NOTE: We cannot compare inverses as that breaks the general compareTo contract:\n    //   if a.compareTo(b) < 0 then b.compareTo(a) > 0\n    //   if a.compareTo(b) == 0 then b.compareTo(a) == 0\n    //\n    //   Since \"10S\" == \".1ohm\" (10 > .1) and \"10ohm\" == \".1S\" (10 > .1)\n    //     Qty(\"10S\").inverse().compareTo(\"10ohm\") == -1\n    //     Qty(\"10ohm\").inverse().compareTo(\"10S\") == -1\n    //\n    //   If including inverses in the sort is needed, I suggest writing: Qty.sort(qtyArray,units)\n    compareTo: function(other) {\n      if (isString(other)) {\n        return this.compareTo(Qty(other));\n      }\n      if (!this.isCompatible(other)) {\n        throwIncompatibleUnits(this.units(), other.units());\n      }\n      if (this.baseScalar < other.baseScalar) {\n        return -1;\n      }\n      else if (this.baseScalar === other.baseScalar) {\n        return 0;\n      }\n      else if (this.baseScalar > other.baseScalar) {\n        return 1;\n      }\n    },\n\n    // Return true if quantities and units match\n    // Unit(\"100 cm\").same(Unit(\"100 cm\"))  # => true\n    // Unit(\"100 cm\").same(Unit(\"1 m\"))     # => false\n    same: function(other) {\n      return (this.scalar === other.scalar) && (this.units() === other.units());\n    }\n  });\n\n  assign(Qty.prototype, {\n    // returns true if no associated units\n    // false, even if the units are \"unitless\" like 'radians, each, etc'\n    isUnitless: function() {\n      return [this.numerator, this.denominator].every(function(item) {\n        return compareArray(item, UNITY_ARRAY);\n      });\n    },\n\n    /*\n    check to see if units are compatible, but not the scalar part\n    this check is done by comparing signatures for performance reasons\n    if passed a string, it will create a unit object with the string and then do the comparison\n    this permits a syntax like:\n    unit =~ \"mm\"\n    if you want to do a regexp on the unit string do this ...\n    unit.units =~ /regexp/\n    */\n    isCompatible: function(other) {\n      if (isString(other)) {\n        return this.isCompatible(Qty(other));\n      }\n\n      if (!(isQty(other))) {\n        return false;\n      }\n\n      if (other.signature !== undefined) {\n        return this.signature === other.signature;\n      }\n      else {\n        return false;\n      }\n    },\n\n    /*\n    check to see if units are inverse of each other, but not the scalar part\n    this check is done by comparing signatures for performance reasons\n    if passed a string, it will create a unit object with the string and then do the comparison\n    this permits a syntax like:\n    unit =~ \"mm\"\n    if you want to do a regexp on the unit string do this ...\n    unit.units =~ /regexp/\n    */\n    isInverse: function(other) {\n      return this.inverse().isCompatible(other);\n    },\n\n    // Returns 'true' if the Unit is represented in base units\n    isBase: function() {\n      if (this._isBase !== undefined) {\n        return this._isBase;\n      }\n      if (this.isDegrees() && this.numerator[0].match(/<(kelvin|temp-K)>/)) {\n        this._isBase = true;\n        return this._isBase;\n      }\n\n      this.numerator.concat(this.denominator).forEach(function(item) {\n        if (item !== UNITY && BASE_UNITS.indexOf(item) === -1 ) {\n          this._isBase = false;\n        }\n      }, this);\n      if (this._isBase === false) {\n        return this._isBase;\n      }\n      this._isBase = true;\n      return this._isBase;\n    }\n  });\n\n  function NestedMap() {}\n\n  NestedMap.prototype.get = function(keys) {\n\n    // Allows to pass key1, key2, ... instead of [key1, key2, ...]\n    if (arguments.length > 1) {\n      // Slower with Firefox but faster with Chrome than\n      // Array.prototype.slice.call(arguments)\n      // See http://jsperf.com/array-apply-versus-array-prototype-slice-call\n      keys = Array.apply(null, arguments);\n    }\n\n    return keys.reduce(function(map, key, index) {\n      if (map) {\n\n        var childMap = map[key];\n\n        if (index === keys.length - 1) {\n          return childMap ? childMap.data : undefined;\n        }\n        else {\n          return childMap;\n        }\n      }\n    },\n    this);\n  };\n\n  NestedMap.prototype.set = function(keys, value) {\n\n    if (arguments.length > 2) {\n      keys = Array.prototype.slice.call(arguments, 0, -1);\n      value = arguments[arguments.length - 1];\n    }\n\n    return keys.reduce(function(map, key, index) {\n\n      var childMap = map[key];\n      if (childMap === undefined) {\n        childMap = map[key] = {};\n      }\n\n      if (index === keys.length - 1) {\n        childMap.data = value;\n        return value;\n      }\n      else {\n        return childMap;\n      }\n    }, this);\n  };\n\n  /**\n   * Default formatter\n   *\n   * @param {number} scalar - scalar value\n   * @param {string} units - units as string\n   *\n   * @returns {string} formatted result\n   */\n  function defaultFormatter(scalar, units) {\n    return (scalar + \" \" + units).trim();\n  }\n\n  /**\n   *\n   * Configurable Qty default formatter\n   *\n   * @type {function}\n   *\n   * @param {number} scalar\n   * @param {string} units\n   *\n   * @returns {string} formatted result\n   */\n  Qty.formatter = defaultFormatter;\n\n  assign(Qty.prototype, {\n\n    // returns the 'unit' part of the Unit object without the scalar\n    units: function() {\n      if (this._units !== undefined) {\n        return this._units;\n      }\n\n      var numIsUnity = compareArray(this.numerator, UNITY_ARRAY);\n      var denIsUnity = compareArray(this.denominator, UNITY_ARRAY);\n      if (numIsUnity && denIsUnity) {\n        this._units = \"\";\n        return this._units;\n      }\n\n      var numUnits = stringifyUnits(this.numerator);\n      var denUnits = stringifyUnits(this.denominator);\n      this._units = numUnits + (denIsUnity ? \"\" : (\"/\" + denUnits));\n      return this._units;\n    },\n\n    /**\n     * Stringifies the quantity\n     * Deprecation notice: only units parameter is supported.\n     *\n     * @param {(number|string|Qty)} targetUnitsOrMaxDecimalsOrPrec -\n     *                              target units if string,\n     *                              max number of decimals if number,\n     *                              passed to #toPrec before converting if Qty\n     *\n     * @param {number=} maxDecimals - Maximum number of decimals of\n     *                                formatted output\n     *\n     * @returns {string} reparseable quantity as string\n     */\n    toString: function(targetUnitsOrMaxDecimalsOrPrec, maxDecimals) {\n      var targetUnits;\n      if (isNumber(targetUnitsOrMaxDecimalsOrPrec)) {\n        targetUnits = this.units();\n        maxDecimals = targetUnitsOrMaxDecimalsOrPrec;\n      }\n      else if (isString(targetUnitsOrMaxDecimalsOrPrec)) {\n        targetUnits = targetUnitsOrMaxDecimalsOrPrec;\n      }\n      else if (isQty(targetUnitsOrMaxDecimalsOrPrec)) {\n        return this.toPrec(targetUnitsOrMaxDecimalsOrPrec).toString(maxDecimals);\n      }\n\n      var out = this.to(targetUnits);\n\n      var outScalar = maxDecimals !== undefined ? round(out.scalar, maxDecimals) : out.scalar;\n      out = (outScalar + \" \" + out.units()).trim();\n      return out;\n    },\n\n    /**\n     * Format the quantity according to optional passed target units\n     * and formatter\n     *\n     * @param {string} [targetUnits=current units] -\n     *                 optional units to convert to before formatting\n     *\n     * @param {function} [formatter=Qty.formatter] -\n     *                   delegates formatting to formatter callback.\n     *                   formatter is called back with two parameters (scalar, units)\n     *                   and should return formatted result.\n     *                   If unspecified, formatting is delegated to default formatter\n     *                   set to Qty.formatter\n     *\n     * @example\n     * var roundingAndLocalizingFormatter = function(scalar, units) {\n     *   // localize or limit scalar to n max decimals for instance\n     *   // return formatted result\n     * };\n     * var qty = Qty('1.1234 m');\n     * qty.format(); // same units, default formatter => \"1.234 m\"\n     * qty.format(\"cm\"); // converted to \"cm\", default formatter => \"123.45 cm\"\n     * qty.format(roundingAndLocalizingFormatter); // same units, custom formatter => \"1,2 m\"\n     * qty.format(\"cm\", roundingAndLocalizingFormatter); // convert to \"cm\", custom formatter => \"123,4 cm\"\n     *\n     * @returns {string} quantity as string\n     */\n    format: function(targetUnits, formatter) {\n      if (arguments.length === 1) {\n        if (typeof targetUnits === \"function\") {\n          formatter = targetUnits;\n          targetUnits = undefined;\n        }\n      }\n\n      formatter = formatter || Qty.formatter;\n      var targetQty = this.to(targetUnits);\n      return formatter.call(this, targetQty.scalar, targetQty.units());\n    }\n  });\n\n  var stringifiedUnitsCache = new NestedMap();\n  /**\n   * Returns a string representing a normalized unit array\n   *\n   * @param {string[]} units Normalized unit array\n   * @returns {string} String representing passed normalized unit array and\n   *   suitable for output\n   *\n   */\n  function stringifyUnits(units) {\n\n    var stringified = stringifiedUnitsCache.get(units);\n    if (stringified) {\n      return stringified;\n    }\n\n    var isUnity = compareArray(units, UNITY_ARRAY);\n    if (isUnity) {\n      stringified = \"1\";\n    }\n    else {\n      stringified = simplify(getOutputNames(units)).join(\"*\");\n    }\n\n    // Cache result\n    stringifiedUnitsCache.set(units, stringified);\n\n    return stringified;\n  }\n\n  function getOutputNames(units) {\n    var unitNames = [], token, tokenNext;\n    for (var i = 0; i < units.length; i++) {\n      token = units[i];\n      tokenNext = units[i + 1];\n      if (PREFIX_VALUES[token]) {\n        unitNames.push(OUTPUT_MAP[token] + OUTPUT_MAP[tokenNext]);\n        i++;\n      }\n      else {\n        unitNames.push(OUTPUT_MAP[token]);\n      }\n    }\n    return unitNames;\n  }\n\n  function simplify(units) {\n    // this turns ['s','m','s'] into ['s2','m']\n\n    var unitCounts = units.reduce(function(acc, unit) {\n      var unitCounter = acc[unit];\n      if (!unitCounter) {\n        acc.push(unitCounter = acc[unit] = [unit, 0]);\n      }\n\n      unitCounter[1]++;\n\n      return acc;\n    }, []);\n\n    return unitCounts.map(function(unitCount) {\n      return unitCount[0] + (unitCount[1] > 1 ? unitCount[1] : \"\");\n    });\n  }\n\n  Qty.version = \"1.7.6\";\n\n  return Qty;\n\n})));\n","import Qty from 'js-quantities';\n\nexport function convertUnit(array, fromUnit, toUnit) {\n  fromUnit = normalize(fromUnit);\n  toUnit = normalize(toUnit);\n\n  if (fromUnit === toUnit) return array;\n\n  try {\n    const convert = Qty.swiftConverter(fromUnit, toUnit); // Configures converter\n    return convert(array);\n  } catch (e) {\n    return undefined;\n  }\n}\n\nfunction normalize(unit) {\n  unit = unit.replace(/°C/g, 'tempC');\n  unit = unit.replace(/°F/g, 'tempF');\n  unit = unit.replace(/(^|\\W)K(\\W|$)/g, '$1tempK$2');\n  return unit;\n}\n","const testRegExp = /^\\/((?:\\\\\\/|[^/])+)\\/([migyu]{0,5})?$/;\n\nexport function ensureRegexp(string) {\n  const parts = testRegExp.exec(string);\n  if (parts) {\n    try {\n      return new RegExp(parts[1], parts[2]);\n    } catch (err) {\n      return stringToRegexp(string);\n    }\n  } else {\n    return stringToRegexp(string);\n  }\n}\n\nfunction stringToRegexp(string, flags = 'i') {\n  return new RegExp(\n    string.replace(/[[\\]\\\\{}()+*?.$^|]/g, function (match) {\n      return `\\\\${match}`;\n    }),\n    flags,\n  );\n}\n","import max from 'ml-array-max';\nimport min from 'ml-array-min';\nimport { xIsMonotone } from 'ml-spectra-processing';\n\nimport { convertUnit } from './convertUnit';\n\nexport function getConvertedVariable(variable, newUnits) {\n  const data =\n    variable.units !== newUnits // would be nice if convertUnit would allow typedArray\n      ? convertUnit(Array.from(variable.data), variable.units, newUnits)\n      : variable.data;\n  return {\n    units: newUnits,\n    label: variable.label.replace(`[${variable.units}]`, `[${newUnits}]`),\n    data,\n    min: min(data),\n    max: max(data),\n    isMonotone: xIsMonotone(data),\n  };\n}\n","import { convertUnit } from './convertUnit';\nimport { ensureRegexp } from './ensureRegexp';\nimport { getConvertedVariable } from './getConvertedVariable';\n/**\n * Retrieve the spectrum with only X/Y data that match all the selectors\n * If more than one variable match the selector the 'x' or 'y' variable will be\n * taken\n * @param {Array} [spectra] Array of spectra\n * @param {object} [selector={}]\n * @param {string} [selector.units] Units separated by \"vs\", e.g., \"g vs °C\"\n * @param {string} [selector.xUnits]\n * @param {string} [selector.yUnits]\n * @param {string} [selector.labels] Labels separated by \"vs\", e.g., \"relative pressure vs excess adsorption\"\n * @param {string} [selector.xLabel] will be converted to case insensitive regexp\n * @param {string} [selector.yLabel] will be converted to case insensitive regexp\n * @param {string} [selector.dataType] will be converted to case insensitive regexp\n * @param {string} [selector.title] will be converted to case insensitive regexp\n * @param {object} [selector.meta] object of key/value to filter meta information. Each value will be converted to case insensitive regexp\n * @returns {Spectrum}\n */\n\nexport function getXYSpectrum(spectra = [], selector = {}) {\n  if (spectra.length < 1) return;\n\n  for (let spectrum of spectra) {\n    let variableNames = Object.keys(spectrum.variables);\n    if (!variableNames.length > 1) continue;\n    let {\n      dataType,\n      title,\n      xUnits,\n      yUnits,\n      units,\n      labels,\n      xLabel,\n      yLabel,\n      meta,\n    } = selector;\n\n    // we filter on generatl spectrum information\n    if (dataType) {\n      dataType = ensureRegexp(dataType);\n      if (!spectrum.dataType || !spectrum.dataType.match(dataType)) continue;\n    }\n\n    if (title) {\n      title = ensureRegexp(title);\n      if (!spectrum.title || !spectrum.title.match(title)) continue;\n    }\n\n    if (meta && typeof meta === 'object') {\n      if (!spectrum.meta) continue;\n      for (let key in spectrum.meta) {\n        if (!spectrum.meta[key]) continue;\n        let value = ensureRegexp(spectrum.meta[key]);\n        if (!spectrum.meta[key].match(value)) continue;\n      }\n    }\n\n    if (units && !xUnits && !yUnits) [yUnits, xUnits] = units.split(/\\s*vs\\s*/);\n    if (labels && !xLabel && !yLabel) {\n      [xLabel, yLabel] = labels.split(/\\s*vs\\s*/);\n    }\n\n    if (xLabel) xLabel = ensureRegexp(xLabel);\n    if (yLabel) yLabel = ensureRegexp(yLabel);\n\n    let x = getPossibleVariable(spectrum.variables, {\n      units: xUnits,\n      label: xLabel,\n      variableName: 'x',\n    });\n    let y = getPossibleVariable(spectrum.variables, {\n      units: yUnits,\n      label: yLabel,\n      variableName: 'y',\n    });\n\n    if (x && y) {\n      return {\n        title: spectrum.title,\n        dataType: spectrum.dataType,\n        meta: spectrum.meta,\n        variables: { x, y },\n      };\n    }\n  }\n  return;\n}\n\nfunction getPossibleVariable(variables, selector = {}) {\n  const { units, label, variableName } = selector;\n  let possible = { ...variables };\n  if (units !== undefined) {\n    for (let key in possible) {\n      let converted = convertUnit(1, variables[key].units, units);\n      if (converted) {\n        possible[key] = getConvertedVariable(variables[key], units);\n      } else {\n        delete possible[key];\n      }\n    }\n  }\n\n  if (label !== undefined) {\n    for (let key in possible) {\n      if (!variables[key].label.match(label)) {\n        delete possible[key];\n      }\n    }\n  }\n\n  if (possible[variableName]) return possible[variableName];\n  if (possible[variableName.toUpperCase()]) {\n    return possible[variableName.toUpperCase()];\n  }\n  if (Object.keys(possible).length > 0) {\n    return possible[Object.keys(possible)[0]];\n  }\n}\n","import isAnyArray from 'is-any-array';\nimport max from 'ml-array-max';\nimport min from 'ml-array-min';\nimport { xIsMonotone } from 'ml-spectra-processing';\n\nimport { getNormalizedSpectrum } from './util/getNormalizedSpectrum';\nimport { getXYSpectrum } from './util/getXYSpectrum';\n\n/**\n * Class allowing to store and manipulate an analysis.\n * An analysis may contain one or more spectra that can be selected\n * based on their units\n * @class Analysis\n * @param {object} [options={}]\n * @param {string} [options.id=randomString] unique identifier\n * @param {string} [options.label=options.id] human redeable label\n */\nexport class Analysis {\n  constructor(options = {}) {\n    this.id = options.id || Math.random().toString(36).substring(2, 10);\n    this.label = options.label || this.id;\n    this.spectra = [];\n    this.cache = {};\n  }\n\n  /**\n   * Add a spectrum in the internal spectra variable\n   * @param {object} [variables]\n   * @param {object} [variables.x]\n   * @param {array} [variables.x.data]\n   * @param {array} [variables.x.units='x']\n   * @param {array} [variables.x.label='x']\n   * @param {object} [variables.y]\n   * @param {array} [variables.y.data]\n   * @param {array} [variables.y.units='y']\n   * @param {array} [variables.y.label='y']\n   * @param {object} [options={}]\n   * @param {string} [options.dataType='']\n   * @param {string} [options.title='']\n   * @param {string} [options.meta={}]\n   * @param {string} [options.tmp={}] Any temporary data\n   */\n  pushSpectrum(variables, options = {}) {\n    this.spectra.push(standardizeData(variables, options));\n    this.cache = {};\n  }\n\n  /**\n   * Retrieve a Spectrum based on x/y units\n   * @param {object} [selector={}]\n   * @param {string} [selector.units] Units separated by vs like for example \"g vs °C\"\n   * @param {string} [selector.xUnits] if undefined takes the first variable\n   * @param {string} [selector.yUnits] if undefined takes the second variable\n   * @returns {Spectrum}\n   */\n  getXYSpectrum(selector = {}) {\n    let id = JSON.stringify(selector);\n    if (!this.cache[id]) {\n      this.cache[id] = getXYSpectrum(this.spectra, selector);\n    }\n    return this.cache[id];\n  }\n\n  /**\n   * Return the data object for specific x/y units with possibly some\n   * normalization options\n   * @param {object} [options={}]\n   * @param {object} [options.selector]\n   * @param {string} [options.selector.xUnits] // if undefined takes the first variable\n   * @param {string} [options.selector.yUnits] // if undefined takes the second variable\n   * @param {object} [options.normalization]\n   *\n   */\n  getNormalizedSpectrum(options = {}) {\n    const { normalization, selector } = options;\n    const spectrum = this.getXYSpectrum(selector);\n    if (!spectrum) return undefined;\n    return getNormalizedSpectrum(spectrum, normalization);\n  }\n\n  /**\n   * Returns the xLabel\n   * @param {object} [selector]\n   * @param {string} [selector.xUnits] // if undefined takes the first variable\n   * @param {string} [selector.yUnits] // if undefined takes the second variable\n   * @returns {string}\n   */\n  getXLabel(selector) {\n    return this.getXYSpectrum(selector).variables.x.label;\n  }\n\n  /**\n   * Returns the yLabel\n   * @param {object} [selector]\n   * @param {string} [selector.xUnits] // if undefined takes the first variable\n   * @param {string} [selector.yUnits] // if undefined takes the second variable\n   * @returns {string}\n   */\n  getYLabel(selector) {\n    return this.getXYSpectrum(selector).variables.y.label;\n  }\n}\n\n/**\n * Internal function that ensure the order of x / y array\n * @param {DataXY} [variables]\n * @param {object} [options={}]\n * @param {string} [options.dataType='']\n * @param {string} [options.title='']\n * @param {string} [options.meta={}]\n * @param {string} [options.tmp={}] Any temporary data\n * @return {Spectrum}\n */\nfunction standardizeData(variables, options = {}) {\n  let { meta = {}, tmp = {}, dataType = '', title = '' } = options;\n\n  let xVariable = variables.x;\n  let yVariable = variables.y;\n  if (!xVariable || !yVariable) {\n    throw Error('A spectrum must contain at least x and y variables');\n  }\n  if (!isAnyArray(xVariable.data) || !isAnyArray(yVariable.data)) {\n    throw Error('x and y variables must contain an array data');\n  }\n\n  let x = xVariable.data;\n  let reverse = x && x.length > 1 && x[0] > x[x.length - 1];\n\n  for (let key in variables) {\n    let variable = variables[key];\n    if (reverse) variable.data = variable.data.reverse();\n    variable.label = variable.label || key;\n    variable.units =\n      variable.units || variable.label.replace(/^.*[([](.*)[)\\]].*$/, '$1');\n    variable.min = min(variable.data);\n    variable.max = max(variable.data);\n    variable.isMonotone = xIsMonotone(variable.data);\n  }\n\n  return {\n    variables,\n    title,\n    dataType,\n    meta,\n    tmp,\n  };\n}\n","const GC_MS_FIELDS = ['TIC', '.RIC', 'SCANNUMBER'];\n\nexport function complexChromatogram(result) {\n  let spectra = result.spectra;\n  let length = spectra.length;\n  let chromatogram = {\n    times: new Array(length),\n    series: {\n      ms: {\n        dimension: 2,\n        data: new Array(length),\n      },\n    },\n  };\n\n  let existingGCMSFields = [];\n  for (let i = 0; i < GC_MS_FIELDS.length; i++) {\n    let 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    let 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] = [spectrum.data.x, spectrum.data.y];\n    }\n  }\n  result.chromatogram = chromatogram;\n}\n\nexport function isMSField(canonicDataLabel) {\n  return GC_MS_FIELDS.indexOf(canonicDataLabel) !== -1;\n}\n\nexport function convertMSFieldToLabel(value) {\n  return value.toLowerCase().replace(/[^a-z0-9]/g, '');\n}\n","export default function convertToFloatArray(stringArray) {\n  let floatArray = [];\n  for (let i = 0; i < stringArray.length; i++) {\n    floatArray.push(parseFloat(stringArray[i]));\n  }\n  return floatArray;\n}\n","export default 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  let yFactor = spectrum.yFactor;\n  let deltaX = spectrum.deltaX;\n\n  spectrum.isXYdata = true;\n  let currentData = { x: [], y: [] };\n  spectrum.data = currentData;\n\n  let currentX = spectrum.firstX;\n  let currentY = spectrum.firstY;\n\n  // we skip the first line\n  //\n  let endLine = false;\n  let 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  let newLine = true;\n  let isDifference = false;\n  let isLastDifference = false;\n  let lastDifference = 0;\n  let isDuplicate = false;\n  let inComment = false;\n  let currentValue = 0; // can be a difference or a duplicate\n  let lastValue = 0; // must be the real last value\n  let isNegative = false;\n  let inValue = false;\n  let skipFirstValue = false;\n  let 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              } else if (!isDuplicate) {\n                lastValue = isNegative ? 0 - currentValue : currentValue;\n              }\n              let duplicate = isDuplicate ? currentValue - 1 : 1;\n              for (let j = 0; j < duplicate; j++) {\n                if (isLastDifference) {\n                  currentY += lastDifference;\n                } else {\n                  currentY = lastValue;\n                }\n                currentData.x.push(currentX);\n                currentData.y.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          let 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","const removeCommentRegExp = /\\$\\$.*/;\nconst peakTableSplitRegExp = /[,\\t ]+/;\n\nexport default function parsePeakTable(spectrum, value, result) {\n  spectrum.isPeaktable = true;\n\n  if (!spectrum.variables || Object.keys(spectrum.variables) === 2) {\n    parseXY(spectrum, value, result);\n  } else {\n    parseXYZ(spectrum, value, result);\n  }\n\n  // we will add the data in the variables\n  if (spectrum.variables) {\n    for (let key in spectrum.variables) {\n      spectrum.variables[key].data = spectrum.data[key];\n    }\n  }\n}\n\nfunction parseXY(spectrum, value, result) {\n  let currentData = { x: [], y: [] };\n  spectrum.data = currentData;\n\n  // counts for around 20% of the time\n  let lines = value.split(/,? *,?[;\\r\\n]+ */);\n\n  for (let i = 1; i < lines.length; i++) {\n    let 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.x.push(parseFloat(values[j]) * spectrum.xFactor);\n        currentData.y.push(parseFloat(values[j + 1]) * spectrum.yFactor);\n      }\n    } else {\n      result.logs.push(`Format error: ${values}`);\n    }\n  }\n}\n\nfunction parseXYZ(spectrum, value, result) {\n  let currentData = {};\n  let variables = Object.keys(spectrum.variables);\n  let numberOfVariables = variables.length;\n  variables.forEach((variable) => (currentData[variable] = []));\n  spectrum.data = currentData;\n\n  // counts for around 20% of the time\n  let lines = value.split(/,? *,?[;\\r\\n]+ */);\n\n  for (let i = 1; i < lines.length; i++) {\n    let values = lines[i]\n      .trim()\n      .replace(removeCommentRegExp, '')\n      .split(peakTableSplitRegExp);\n    if (values.length % numberOfVariables === 0) {\n      for (let j = 0; j < values.length; j++) {\n        // todo should try to find a xFactor (y, ...)\n        currentData[variables[j % numberOfVariables]].push(\n          parseFloat(values[j]),\n        );\n      }\n    } else {\n      result.logs.push(`Format error: ${values}`);\n    }\n  }\n}\n","export default function parseXYA(spectrum, value) {\n  let removeSymbolRegExp = /(\\(+|\\)+|<+|>+|\\s+)/g;\n\n  spectrum.isXYAdata = true;\n  let values;\n  let currentData = { x: [], y: [] };\n  spectrum.data = currentData;\n\n  let lines = value.split(/,? *,?[;\\r\\n]+ */);\n\n  for (let i = 1; i < lines.length; i++) {\n    values = lines[i].trim().replace(removeSymbolRegExp, '').split(',');\n    currentData.x.push(parseFloat(values[0]));\n    currentData.y.push(parseFloat(values[1]));\n  }\n}\n","import getMedian from 'ml-array-median';\n\nexport default function convertTo3DZ(spectra) {\n  let minZ = spectra[0].data.y[0];\n  let maxZ = minZ;\n  let ySize = spectra.length;\n  let xSize = spectra[0].data.x.length;\n\n  let z = new Array(ySize);\n  for (let i = 0; i < ySize; i++) {\n    z[i] = spectra[i].data.y;\n    for (let j = 0; j < xSize; j++) {\n      let value = z[i][j];\n      if (value < minZ) minZ = value;\n      if (value > maxZ) maxZ = value;\n    }\n  }\n\n  const firstX = spectra[0].data.x[0];\n  const lastX = spectra[0].data.x[spectra[0].data.x.length - 1]; // has to be -2 because it is a 1D array [x,y,x,y,...]\n  const firstY = spectra[0].pageValue;\n  const lastY = spectra[ySize - 1].pageValue;\n\n  // Because the min / max value are the only information about the matrix if we invert\n  // min and max we need to invert the array\n  if (firstX > lastX) {\n    for (let spectrum of z) {\n      spectrum.reverse();\n    }\n  }\n  if (firstY > lastY) {\n    z.reverse();\n  }\n\n  return {\n    z: z,\n    minX: Math.min(firstX, lastX),\n    maxX: Math.max(firstX, lastX),\n    minY: Math.min(firstY, lastY),\n    maxY: Math.max(firstY, lastY),\n    minZ: minZ,\n    maxZ: maxZ,\n    noise: getMedian(z[0].map(Math.abs)),\n  };\n}\n","export default function generateContourLines(zData, options) {\n  let noise = zData.noise;\n  let z = zData.z;\n  let povarHeight0, povarHeight1, povarHeight2, povarHeight3;\n  let isOver0, isOver1, isOver2, isOver3;\n  let nbSubSpectra = z.length;\n  let nbPovars = z[0].length;\n  let pAx, pAy, pBx, pBy;\n\n  let x0 = zData.minX;\n  let xN = zData.maxX;\n  let dx = (xN - x0) / (nbPovars - 1);\n  let y0 = zData.minY;\n  let yN = zData.maxY;\n  let dy = (yN - y0) / (nbSubSpectra - 1);\n  let minZ = zData.minZ;\n  let 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  let iter = options.nbContourLevels * 2;\n  let contourLevels = new Array(iter);\n  let lineZValue;\n  for (let level = 0; level < iter; level++) {\n    // multiply by 2 for positif and negatif\n    let contourLevel = {};\n    contourLevels[level] = contourLevel;\n    let side = level % 2;\n    let 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    let lines = [];\n    contourLevel.zValue = lineZValue;\n    contourLevel.lines = lines;\n\n    if (lineZValue <= minZ || lineZValue >= maxZ) continue;\n\n    for (let iSubSpectra = 0; iSubSpectra < nbSubSpectra - 1; iSubSpectra++) {\n      let subSpectra = z[iSubSpectra];\n      let subSpectraAfter = z[iSubSpectra + 1];\n      for (let 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 + (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","import convertTo3DZ from './convertTo3DZ';\nimport generateContourLines from './generateContourLines';\n\nexport default function add2D(result, options) {\n  let 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 * 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<k; j++) {\n          wr = _cstb[h + n4];\n          wi = inv*_cstb[h];\n          for(var i=j; i<_n; i+=(k<<1)) {\n            ik = i + k;\n            xr = wr*re[ik] + wi*im[ik];\n            xi = wr*im[ik] - wi*re[ik];\n            re[ik] = re[i] - xr;\n            re[i] += xr;\n            im[ik] = im[i] - xi;\n            im[i] += xi;\n          }\n          h += d;\n        }\n      }\n    },\n    // initialize the array (supports TypedArray)\n    _initArray : function() {\n      if(typeof Uint32Array !== 'undefined') {\n        _bitrev = new Uint32Array(_n);\n      } else {\n        _bitrev = [];\n      }\n      if(typeof Float64Array !== 'undefined') {\n        _cstb = new Float64Array(_n*1.25);\n      } else {\n        _cstb = [];\n      }\n    },\n    // zero padding\n    _paddingZero : function() {\n      // TODO\n    },\n    // makes bit reversal table\n    _makeBitReversalTable : function() {\n      var i = 0,\n          j = 0,\n          k = 0;\n      _bitrev[0] = 0;\n      while(++i < _n) {\n        k = _n >> 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<n8; i++) {\n        c -= dc;\n        dc += t*c;\n        s += ds;\n        ds -= t*s;\n        _cstb[i] = s;\n        _cstb[n4 - i] = c;\n      }\n      if(n8 !== 0) {\n        _cstb[n8] = Math.sqrt(0.5);\n      }\n      for(var j=0; j<n4; j++) {\n        _cstb[n2 - j]  = _cstb[j];\n      }\n      for(var k=0; k<n2p4; k++) {\n        _cstb[k + n2] = -_cstb[k];\n      }\n    }\n  };\n  // aliases (public APIs)\n  var apis = ['init', 'fft1d', 'ifft1d', 'fft2d', 'ifft2d'];\n  for(var i=0; i<apis.length; i++) {\n    FFT[apis[i]] = core[apis[i]];\n  }\n  FFT.bt = core.bt1d;\n  FFT.fft = core.fft1d;\n  FFT.ifft = core.ifft1d;\n  \n  return FFT;\n}).call(this);\n","// sources:\n// https://en.wikipedia.org/wiki/Gyromagnetic_ratio\n\n// TODO: #13 can we have a better source and more digits ? @jwist\n\nexport const gyromagneticRatio = {\n  '1H': 267.52218744e6,\n  '2H': 41.065e6,\n  '3H': 285.3508e6,\n  '3He': -203.789e6,\n  '7Li': 103.962e6,\n  '13C': 67.28284e6,\n  '14N': 19.331e6,\n  '15N': -27.116e6,\n  '17O': -36.264e6,\n  '19F': 251.662e6,\n  '23Na': 70.761e6,\n  '27Al': 69.763e6,\n  '29Si': -53.19e6,\n  '31P': 108.291e6,\n  '57Fe': 8.681e6,\n  '63Cu': 71.118e6,\n  '67Zn': 16.767e6,\n  '129Xe': -73.997e6,\n};\n","import { gyromagneticRatio } from 'nmr-processing';\n\nexport default function postProcessingNMR(entriesFlat) {\n  // specific NMR functions\n  let observeFrequency = 0;\n  let shiftOffsetVal = 0;\n\n  for (let entry of entriesFlat) {\n    for (let spectrum of entry.spectra) {\n      if (entry.ntuples && entry.ntuples.symbol) {\n        if (!observeFrequency && spectrum.observeFrequency) {\n          observeFrequency = spectrum.observeFrequency;\n        }\n        if (!shiftOffsetVal && spectrum.shiftOffsetVal) {\n          shiftOffsetVal = spectrum.shiftOffsetVal;\n        }\n      } else {\n        observeFrequency = spectrum.observeFrequency;\n        shiftOffsetVal = spectrum.shiftOffsetVal;\n      }\n\n      if (observeFrequency) {\n        if (spectrum.xUnits && spectrum.xUnits.toUpperCase().includes('HZ')) {\n          spectrum.xUnits = 'PPM';\n          spectrum.xFactor = spectrum.xFactor / observeFrequency;\n          spectrum.firstX = spectrum.firstX / observeFrequency;\n          spectrum.lastX = spectrum.lastX / observeFrequency;\n          spectrum.deltaX = spectrum.deltaX / observeFrequency;\n          for (let i = 0; i < spectrum.data.x.length; i++) {\n            spectrum.data.x[i] /= observeFrequency;\n          }\n        }\n      }\n      if (shiftOffsetVal) {\n        let shift = spectrum.firstX - shiftOffsetVal;\n        spectrum.firstX = spectrum.firstX - shift;\n        spectrum.lastX = spectrum.lastX - shift;\n        for (let i = 0; i < spectrum.data.x.length; i++) {\n          spectrum.data.x[i] -= shift;\n        }\n      }\n\n      // we will check if some nucleus are missing ...\n      if (entry.ntuples && entry.ntuples.nucleus && entry.ntuples.symbol) {\n        for (let i = 0; i < entry.ntuples.nucleus.length; i++) {\n          let symbol = entry.ntuples.symbol[i];\n          let nucleus = entry.ntuples.nucleus[i];\n          if (symbol.startsWith('F') && !nucleus) {\n            if (symbol === 'F1') entry.ntuples.nucleus[i] = entry.tmp.$NUC2;\n            if (symbol === 'F2') entry.ntuples.nucleus[i] = entry.tmp.$NUC1;\n          }\n          if (symbol === 'F2') {\n            entry.yType = entry.ntuples.nucleus[0];\n          }\n        }\n      }\n\n      if (\n        observeFrequency &&\n        entry.ntuples &&\n        entry.ntuples.symbol &&\n        entry.ntuples.nucleus\n      ) {\n        let unit = '';\n        let pageSymbolIndex = entry.ntuples.symbol.indexOf(spectrum.pageSymbol);\n        if (entry.ntuples.units && entry.ntuples.units[pageSymbolIndex]) {\n          unit = entry.ntuples.units[pageSymbolIndex];\n        }\n        if (unit !== 'PPM') {\n          if (pageSymbolIndex !== 0) {\n            throw Error('Not sure about this ntuples format');\n          }\n\n          let ratio0 = gyromagneticRatio[entry.ntuples.nucleus[0]];\n          let ratio1 = gyromagneticRatio[entry.ntuples.nucleus[1]];\n          if (!ratio0 || !ratio1) {\n            throw Error('Problem with determination of gyromagnetic ratio');\n          }\n          let ratio = (ratio0 / ratio1) * observeFrequency;\n          spectrum.pageValue /= ratio;\n        }\n      }\n    }\n  }\n}\n","export default function profiling(result, action, options) {\n  if (result.profiling) {\n    result.profiling.push({\n      action,\n      time: Date.now() - options.start,\n    });\n  }\n}\n","export default function simpleChromatogram(result) {\n  let data = result.spectra[0].data;\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","import add2D from './2d/add2D';\nimport { complexChromatogram } from './complexChromatogram';\nimport postProcessingNMR from './postProcessingNMR';\nimport profiling from './profiling';\nimport simpleChromatogram from './simpleChromatogram';\n\nexport default function postProcessing(entriesFlat, result, options) {\n  // converting Hz to ppm\n  postProcessingNMR(entriesFlat);\n\n  for (let entry of entriesFlat) {\n    if (Object.keys(entry.ntuples).length > 0) {\n      let newNtuples = [];\n      let keys = Object.keys(entry.ntuples);\n      for (let i = 0; i < keys.length; i++) {\n        let key = keys[i];\n        let values = entry.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      entry.ntuples = newNtuples;\n    }\n\n    if (entry.twoD && options.wantXY) {\n      add2D(entry, options);\n\n      profiling(result, 'Finished countour plot calculation', options);\n\n      if (!options.keepSpectra) {\n        delete entry.spectra;\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 (entry.spectra.length > 1) {\n        complexChromatogram(entry);\n      } else {\n        simpleChromatogram(entry);\n      }\n      profiling(result, 'Finished chromatogram calculation', options);\n    }\n    delete entry.tmp;\n  }\n}\n","export default function prepareNtuplesDatatable(currentEntry, spectrum, kind) {\n  let xIndex = -1;\n  let yIndex = -1;\n  let firstVariable = '';\n  let secondVariable = '';\n  if (kind.indexOf('++') > 0) {\n    firstVariable = kind.replace(/.*\\(([a-zA-Z0-9]+)\\+\\+.*/, '$1');\n    secondVariable = kind.replace(/.*\\.\\.([a-zA-Z0-9]+).*/, '$1');\n  } else {\n    kind = kind.replace(/[^a-zA-Z]/g, '');\n    firstVariable = kind.charAt(0);\n    secondVariable = kind.charAt(1);\n    spectrum.variables = {};\n    for (let symbol of kind) {\n      let lowerCaseSymbol = symbol.toLowerCase();\n      let index = currentEntry.ntuples.symbol.indexOf(symbol);\n      if (index === -1) throw Error(`Symbol undefined: ${symbol}`);\n      spectrum.variables[lowerCaseSymbol] = {};\n      for (let key in currentEntry.ntuples) {\n        if (currentEntry.ntuples[key][index]) {\n          spectrum.variables[lowerCaseSymbol][key.replace(/^var/, '')] =\n            currentEntry.ntuples[key][index];\n        }\n      }\n    }\n  }\n  xIndex = currentEntry.ntuples.symbol.indexOf(firstVariable);\n  yIndex = currentEntry.ntuples.symbol.indexOf(secondVariable);\n\n  if (xIndex === -1) xIndex = 0;\n  if (yIndex === -1) yIndex = 0;\n\n  if (currentEntry.ntuples.first) {\n    if (currentEntry.ntuples.first.length > xIndex) {\n      spectrum.firstX = currentEntry.ntuples.first[xIndex];\n    }\n    if (currentEntry.ntuples.first.length > yIndex) {\n      spectrum.firstY = currentEntry.ntuples.first[yIndex];\n    }\n  }\n  if (currentEntry.ntuples.last) {\n    if (currentEntry.ntuples.last.length > xIndex) {\n      spectrum.lastX = currentEntry.ntuples.last[xIndex];\n    }\n    if (currentEntry.ntuples.last.length > yIndex) {\n      spectrum.lastY = currentEntry.ntuples.last[yIndex];\n    }\n  }\n  if (\n    currentEntry.ntuples.vardim &&\n    currentEntry.ntuples.vardim.length > xIndex\n  ) {\n    spectrum.nbPoints = currentEntry.ntuples.vardim[xIndex];\n  }\n  if (currentEntry.ntuples.factor) {\n    if (currentEntry.ntuples.factor.length > xIndex) {\n      spectrum.xFactor = currentEntry.ntuples.factor[xIndex];\n    }\n    if (currentEntry.ntuples.factor.length > yIndex) {\n      spectrum.yFactor = currentEntry.ntuples.factor[yIndex];\n    }\n  }\n  if (currentEntry.ntuples.units) {\n    if (currentEntry.ntuples.units.length > xIndex) {\n      if (\n        currentEntry.ntuples.varname &&\n        currentEntry.ntuples.varname[xIndex]\n      ) {\n        spectrum.xUnits = `${currentEntry.ntuples.varname[xIndex]} [${currentEntry.ntuples.units[xIndex]}]`;\n      } else {\n        spectrum.xUnits = currentEntry.ntuples.units[xIndex];\n      }\n    }\n    if (currentEntry.ntuples.units.length > yIndex) {\n      if (\n        currentEntry.ntuples.varname &&\n        currentEntry.ntuples.varname[yIndex]\n      ) {\n        spectrum.yUnits = `${currentEntry.ntuples.varname[yIndex]} [${currentEntry.ntuples.units[yIndex]}]`;\n      } else {\n        spectrum.yUnits = currentEntry.ntuples.units[yIndex];\n      }\n    }\n  }\n}\n","export default function prepareSpectrum(spectrum) {\n  if (!spectrum.xFactor) spectrum.xFactor = 1;\n  if (!spectrum.yFactor) spectrum.yFactor = 1;\n}\n","import { isMSField, convertMSFieldToLabel } from './complexChromatogram';\nimport convertToFloatArray from './convertToFloatArray';\nimport fastParseXYData from './parse/fastParseXYData';\nimport parsePeakTable from './parse/parsePeakTable';\nimport parseXYA from './parse/parseXYA';\nimport postProcessing from './postProcessing';\nimport prepareNtuplesDatatable from './prepareNtuplesDatatable';\nimport prepareSpectrum from './prepareSpectrum';\nimport profiling from './profiling';\n\n// the following RegExp can only be used for XYdata, some peakTables have values with a \"E-5\" ...\nconst ntuplesSeparatorRegExp = /[ \\t]*,[ \\t]*/;\nconst numberRegExp = /^[-+]?[0-9]*\\.?[0-9]+(e[-+]?[0-9]+)?$/;\n\nclass Spectrum {}\n\nconst defaultOptions = {\n  keepRecordsRegExp: /^$/,\n  canonicDataLabels: true,\n  canonicMetadataLabels: false,\n  dynamicTyping: true,\n  withoutXY: false,\n  chromatogram: false,\n  keepSpectra: false,\n  noContour: false,\n  nbContourLevels: 7,\n  noiseMultiplier: 5,\n  profiling: false,\n};\n\n/**\n *\n * @param {text} jcamp\n * @param {object} [options]\n * @param {number} [options.keepRecordsRegExp=/^$/] By default we don't keep meta information\n * @param {number} [options.canonicDataLabels=true] Canonize the Labels (uppercase without symbol)\n * @param {number} [options.canonicMetadataLabels=false] Canonize the metadata Labels (uppercase without symbol)\n * @param {number} [options.dynamicTyping=false] Convert numbers to Number\n * @param {number} [options.withoutXY=false] Remove the XY data\n * @param {number} [options.chromatogram=false] Special post-processing for GC / HPLC / MS\n * @param {number} [options.keepSpectra=false] Force to keep the spectra in case of 2D\n * @param {number} [options.noContour=false] Don't calculate countour in case of 2D\n * @param {number} [options.nbContourLevels=7] Number of positive / negative contour levels to calculate\n * @param {number} [options.noiseMultiplier=5] Define for 2D the level as 5 times the median as default\n * @param {number} [options.profiling=false] Add profiling information\n */\n\nexport default function convert(jcamp, options = {}) {\n  options = Object.assign({}, defaultOptions, options);\n  options.wantXY = !options.withoutXY;\n  options.start = Date.now();\n\n  let entriesFlat = [];\n\n  let result = {\n    profiling: options.profiling ? [] : false,\n    logs: [],\n    entries: [],\n  };\n\n  let tmpResult = { children: [] };\n  let currentEntry = tmpResult;\n  let parentsStack = [];\n\n  let spectrum = new Spectrum();\n\n  if (typeof jcamp !== 'string') {\n    throw new TypeError('the JCAMP should be a string');\n  }\n\n  profiling(result, 'Before split to LDRS', options);\n\n  let ldrs = jcamp.replace(/[\\r\\n]+##/g, '\\n##').split('\\n##');\n\n  profiling(result, 'Split to LDRS', options);\n\n  if (ldrs[0]) ldrs[0] = ldrs[0].replace(/^[\\r\\n ]*##/, '');\n\n  for (let ldr of ldrs) {\n    // This is a new LDR\n    let position = ldr.indexOf('=');\n    let dataLabel = position > 0 ? ldr.substring(0, position) : ldr;\n    let dataValue = position > 0 ? ldr.substring(position + 1).trim() : '';\n\n    let canonicDataLabel = dataLabel.replace(/[_ -]/g, '').toUpperCase();\n\n    if (canonicDataLabel === 'DATATABLE') {\n      let endLine = dataValue.indexOf('\\n');\n      if (endLine === -1) endLine = dataValue.indexOf('\\r');\n      if (endLine > 0) {\n        // ##DATA TABLE= (X++(I..I)), XYDATA\n        // We need to find the variables\n\n        let infos = dataValue.substring(0, endLine).split(/[ ,;\\t]+/);\n        prepareNtuplesDatatable(currentEntry, spectrum, infos[0]);\n\n        spectrum.datatable = infos[0];\n        if (infos[1] && infos[1].indexOf('PEAKS') > -1) {\n          canonicDataLabel = 'PEAKTABLE';\n        } else if (\n          infos[1] &&\n          (infos[1].indexOf('XYDATA') || infos[0].indexOf('++') > 0)\n        ) {\n          canonicDataLabel = 'XYDATA';\n          spectrum.deltaX =\n            (spectrum.lastX - spectrum.firstX) / (spectrum.nbPoints - 1);\n        }\n      }\n    }\n\n    if (canonicDataLabel === 'XYDATA') {\n      if (options.wantXY) {\n        prepareSpectrum(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        currentEntry.spectra.push(spectrum);\n        spectrum = new Spectrum();\n      }\n      continue;\n    } else if (canonicDataLabel === 'PEAKTABLE') {\n      if (options.wantXY) {\n        prepareSpectrum(spectrum);\n        parsePeakTable(spectrum, dataValue, result);\n        currentEntry.spectra.push(spectrum);\n        spectrum = new Spectrum();\n      }\n      continue;\n    }\n    if (canonicDataLabel === 'PEAKASSIGNMENTS') {\n      if (options.wantXY) {\n        if (dataValue.match(/.*(XYA).*/)) {\n          // ex: (XYA)\n          parseXYA(spectrum, dataValue);\n        }\n        currentEntry.spectra.push(spectrum);\n        spectrum = new Spectrum();\n      }\n      continue;\n    }\n\n    if (canonicDataLabel === 'TITLE') {\n      let parentEntry = currentEntry;\n      if (!parentEntry.children) {\n        parentEntry.children = [];\n      }\n      currentEntry = {\n        spectra: [],\n        ntuples: {},\n        info: {},\n        meta: {},\n        tmp: {}, // tmp information we need to keep for postprocessing\n      };\n      parentEntry.children.push(currentEntry);\n      parentsStack.push(parentEntry);\n      entriesFlat.push(currentEntry);\n      currentEntry.title = dataValue;\n    } else if (canonicDataLabel === 'DATATYPE') {\n      currentEntry.dataType = dataValue;\n      if (dataValue.toLowerCase().indexOf('nd') > -1) {\n        currentEntry.twoD = true;\n      }\n    } else if (canonicDataLabel === 'NTUPLES') {\n      if (dataValue.toLowerCase().indexOf('nd') > -1) {\n        currentEntry.twoD = true;\n      }\n    } else if (canonicDataLabel === 'DATACLASS') {\n      currentEntry.dataClass = dataValue;\n    } else if (canonicDataLabel === 'XUNITS') {\n      spectrum.xUnits = dataValue;\n    } else if (canonicDataLabel === 'YUNITS') {\n      spectrum.yUnits = dataValue;\n    } else if (canonicDataLabel === 'FIRSTX') {\n      spectrum.firstX = parseFloat(dataValue);\n    } else if (canonicDataLabel === 'LASTX') {\n      spectrum.lastX = parseFloat(dataValue);\n    } else if (canonicDataLabel === 'FIRSTY') {\n      spectrum.firstY = parseFloat(dataValue);\n    } else if (canonicDataLabel === 'LASTY') {\n      spectrum.lastY = parseFloat(dataValue);\n    } else if (canonicDataLabel === 'NPOINTS') {\n      spectrum.nbPoints = parseFloat(dataValue);\n    } else if (canonicDataLabel === 'XFACTOR') {\n      spectrum.xFactor = parseFloat(dataValue);\n    } else if (canonicDataLabel === 'YFACTOR') {\n      spectrum.yFactor = parseFloat(dataValue);\n    } else if (canonicDataLabel === 'MAXX') {\n      spectrum.maxX = parseFloat(dataValue);\n    } else if (canonicDataLabel === 'MINX') {\n      spectrum.minX = parseFloat(dataValue);\n    } else if (canonicDataLabel === 'MAXY') {\n      spectrum.maxY = parseFloat(dataValue);\n    } else if (canonicDataLabel === 'MINY') {\n      spectrum.minY = parseFloat(dataValue);\n    } else if (canonicDataLabel === 'DELTAX') {\n      spectrum.deltaX = parseFloat(dataValue);\n    } else if (\n      canonicDataLabel === '.OBSERVEFREQUENCY' ||\n      canonicDataLabel === '$SFO1'\n    ) {\n      if (!spectrum.observeFrequency) {\n        spectrum.observeFrequency = parseFloat(dataValue);\n      }\n    } else if (canonicDataLabel === '.OBSERVENUCLEUS') {\n      if (!spectrum.xType) {\n        currentEntry.xType = dataValue.replace(/[^a-zA-Z0-9]/g, '');\n      }\n    } else if (canonicDataLabel === '$OFFSET') {\n      // OFFSET for Bruker spectra\n      currentEntry.shiftOffsetNum = 0;\n      if (!spectrum.shiftOffsetVal) {\n        spectrum.shiftOffsetVal = parseFloat(dataValue);\n      }\n    } else if (canonicDataLabel === '$REFERENCEPOINT') {\n      // OFFSET for Varian spectra\n      // if we activate this part it does not work for ACD specmanager\n      //         } else if (canonicDataLabel=='.SHIFTREFERENCE') {   // OFFSET FOR Bruker Spectra\n      //                 var parts = dataValue.split(/ *, */);\n      //                 currentEntry.shiftOffsetNum = parseInt(parts[2].trim());\n      //                 spectrum.shiftOffsetVal = parseFloat(parts[3].trim());\n    } else if (canonicDataLabel === 'VARNAME') {\n      currentEntry.ntuples.varname = dataValue.split(ntuplesSeparatorRegExp);\n    } else if (canonicDataLabel === 'SYMBOL') {\n      currentEntry.ntuples.symbol = dataValue.split(ntuplesSeparatorRegExp);\n    } else if (canonicDataLabel === 'VARTYPE') {\n      currentEntry.ntuples.vartype = dataValue.split(ntuplesSeparatorRegExp);\n    } else if (canonicDataLabel === 'VARFORM') {\n      currentEntry.ntuples.varform = dataValue.split(ntuplesSeparatorRegExp);\n    } else if (canonicDataLabel === 'VARDIM') {\n      currentEntry.ntuples.vardim = convertToFloatArray(\n        dataValue.split(ntuplesSeparatorRegExp),\n      );\n    } else if (canonicDataLabel === 'UNITS') {\n      currentEntry.ntuples.units = dataValue.split(ntuplesSeparatorRegExp);\n    } else if (canonicDataLabel === 'FACTOR') {\n      currentEntry.ntuples.factor = convertToFloatArray(\n        dataValue.split(ntuplesSeparatorRegExp),\n      );\n    } else if (canonicDataLabel === 'FIRST') {\n      currentEntry.ntuples.first = convertToFloatArray(\n        dataValue.split(ntuplesSeparatorRegExp),\n      );\n    } else if (canonicDataLabel === 'LAST') {\n      currentEntry.ntuples.last = convertToFloatArray(\n        dataValue.split(ntuplesSeparatorRegExp),\n      );\n    } else if (canonicDataLabel === 'MIN') {\n      currentEntry.ntuples.min = convertToFloatArray(\n        dataValue.split(ntuplesSeparatorRegExp),\n      );\n    } else if (canonicDataLabel === 'MAX') {\n      currentEntry.ntuples.max = convertToFloatArray(\n        dataValue.split(ntuplesSeparatorRegExp),\n      );\n    } else if (canonicDataLabel === '.NUCLEUS') {\n      if (currentEntry.ntuples) {\n        currentEntry.ntuples.nucleus = dataValue.split(ntuplesSeparatorRegExp);\n      }\n    } else if (canonicDataLabel === 'PAGE') {\n      spectrum.page = dataValue.trim();\n      spectrum.pageValue = parseFloat(dataValue.replace(/^.*=/, ''));\n      spectrum.pageSymbol = spectrum.page.replace(/[=].*/, '');\n    } else if (canonicDataLabel === 'RETENTIONTIME') {\n      spectrum.pageValue = parseFloat(dataValue);\n    } else if (isMSField(canonicDataLabel)) {\n      spectrum[convertMSFieldToLabel(canonicDataLabel)] = dataValue;\n    } else if (canonicDataLabel === 'SAMPLEDESCRIPTION') {\n      spectrum.sampleDescription = dataValue;\n    } else if (canonicDataLabel.startsWith('$NUC')) {\n      if (!currentEntry.tmp[canonicDataLabel] && !dataValue.includes('off')) {\n        currentEntry.tmp[canonicDataLabel] = dataValue.replace(/[<>]/g, '');\n      }\n    } else if (canonicDataLabel === 'END') {\n      currentEntry = parentsStack.pop();\n    }\n\n    if (\n      currentEntry &&\n      currentEntry.info &&\n      currentEntry.meta &&\n      canonicDataLabel.match(options.keepRecordsRegExp)\n    ) {\n      let value = dataValue.trim();\n      let target, label;\n      if (dataLabel.startsWith('$')) {\n        label = options.canonicMetadataLabels\n          ? canonicDataLabel.substring(1)\n          : dataLabel.substring(1);\n        target = currentEntry.meta;\n      } else {\n        label = options.canonicDataLabels ? canonicDataLabel : dataLabel;\n        target = currentEntry.info;\n      }\n\n      if (options.dynamicTyping) {\n        if (value.match(numberRegExp)) {\n          value = Number.parseFloat(value);\n        }\n      }\n      if (target[label]) {\n        if (!Array.isArray(target[label])) {\n          target[label] = [target[label]];\n        }\n        target[label].push(value);\n      } else {\n        target[label] = value;\n      }\n    }\n  }\n\n  profiling(result, 'Finished parsing', options);\n\n  postProcessing(entriesFlat, result, options);\n\n  profiling(result, 'Total time', options);\n\n  /*\n  if (result.children && result.children.length>0) {\n    result = { ...result, ...result.children[0] };\n  }\n  */\n  result.entries = tmpResult.children;\n  result.flatten = entriesFlat;\n\n  return result;\n}\n","import { convert } from 'jcampconverter';\n\nimport { Analysis } from '../Analysis';\n\n/**\n * Creates a new Analysis from a JCAMP string\n * @param {string} jcamp - String containing the JCAMP data\n * @param {object} [options={}]\n * @param {object} [options.id=Math.random()]\n * @param {string} [options.label=options.id] human redeable label\n * @return {Analysis} - New class element with the given data\n */\nexport function fromJcamp(jcamp, options = {}) {\n  let analysis = new Analysis(options);\n  addJcamp(analysis, jcamp, options);\n  return analysis;\n}\n\nfunction addJcamp(analysis, jcamp) {\n  let converted = convert(jcamp, {\n    keepRecordsRegExp: /.*/,\n  });\n\n  for (let entry of converted.flatten) {\n    let currentSpectrum = entry.spectra[0];\n\n    // we ensure variables\n    if (!currentSpectrum.variables) {\n      const variables = {};\n      currentSpectrum.variables = variables;\n      variables.x = {\n        label: currentSpectrum.xUnits,\n        symbol: 'X',\n        data: currentSpectrum.data.x || currentSpectrum.data.X,\n      };\n      variables.y = {\n        label: currentSpectrum.yUnits,\n        symbol: 'Y',\n        data: currentSpectrum.data.y || currentSpectrum.data.Y,\n      };\n    } else {\n      for (let key in currentSpectrum.variables) {\n        const variable = currentSpectrum.variables[key];\n        if (variable.label) continue;\n        variable.label = variable.name || variable.symbol || key;\n        if (variable.units && !variable.label.includes(variable.units)) {\n          variable.label += ` [${variable.units}]`;\n        }\n      }\n    }\n\n    analysis.pushSpectrum(currentSpectrum.variables, {\n      dataType: entry.dataType,\n      title: entry.title,\n      meta: entry.meta,\n    });\n  }\n}\n","import maxFct from 'ml-array-max';\nimport minFct from 'ml-array-min';\n\n/**\n * Parse from a xyxy data array\n * @param {Array<Array<number>>} variables\n * @param {object} [meta] - same metadata object format that the fromText\n * @return {string} JCAMP of the input\n */\nexport default function creatorNtuples(variables, options) {\n  const { meta = {}, info = {} } = options;\n\n  const { title = '', owner = '', origin = '', dataType = '' } = info;\n\n  const symbol = [];\n  const varName = [];\n  const varType = [];\n  const varDim = [];\n  const units = [];\n  const first = [];\n  const last = [];\n  const min = [];\n  const max = [];\n  const factor = [];\n\n  const keys = Object.keys(variables);\n  for (let i = 0; i < keys.length; i++) {\n    const key = keys[i];\n    let variable = variables[key];\n\n    let name = variable.label && variable.label.replace(/ *\\[.*/, '');\n    let unit = variable.label && variable.label.replace(/.*\\[(.*)\\].*/, '$1');\n\n    symbol.push(variable.symbol || key);\n    varName.push(variable.name || name || key);\n    varDim.push(variables[key].data.length);\n\n    varType.push(\n      variable.type\n        ? variable.type.toUpperCase()\n        : i === 0\n        ? 'INDEPENDENT'\n        : 'DEPENDENT',\n    );\n    units.push(variable.units || unit || '');\n    first.push(variables[key][0]);\n    last.push(variables[key][variables[key].length - 1]);\n    min.push(minFct(variables[key].data));\n    max.push(maxFct(variables[key].data));\n    factor.push(1);\n  }\n\n  let header = `##TITLE=${title}\n##JCAMP-DX=6.00\n##DATA TYPE=${dataType}\n##ORIGIN=${origin}\n##OWNER=${owner}\\n`;\n\n  for (const key of Object.keys(meta)) {\n    header += `##$${key}=${meta[key]}\\n`;\n  }\n\n  header += `##NTUPLES= ${dataType}\n##VAR_NAME=  ${varName.join()}\n##SYMBOL=    ${symbol.join()}\n##VAR_TYPE=  ${varType.join()}\n##VAR_DIM=   ${varDim.join()}\n##UNITS=     ${units.join()}\n##PAGE= N=1\\n`;\n\n  header += `##DATA TABLE= (${symbol.join('')}..${symbol.join('')}), PEAKS\\n`;\n\n  for (let i = 0; i < variables[keys[0]].data.length; i++) {\n    let point = [];\n    for (let key of keys) {\n      point.push(variables[key].data[i]);\n    }\n    header += `${point.join('\\t')}\\n`;\n  }\n\n  header += '##END';\n  return header;\n}\n","/**\n * Create a jcamp\n * @param {object} data - object of array\n * @param {object} [options={}] - metadata object\n * @param {string} [options.info={}] - metadata of the file\n * @param {string} [options.info.title = ''] - title of the file\n * @param {string} [options.info.owner = ''] - owner of the file\n * @param {string} [options.info.origin = ''] - origin of the file\n * @param {string} [options.info.dataType = ''] - type of data\n * @param {string} [options.info.xUnits = ''] - units for the x axis for variables===undefined\n * @param {string} [options.info.yUnits = ''] - units for the y axis for variables===undefined\n * @param {object} [options.meta = {}] - comments to add to the file\n\n * @return {string} JCAMP of the input\n */\nexport function fromJSON(data, options = {}) {\n  const { meta = {}, info = {} } = options;\n\n  const {\n    title = '',\n    owner = '',\n    origin = '',\n    dataType = '',\n    xUnits = '',\n    yUnits = '',\n  } = info;\n  let firstX = Number.POSITIVE_INFINITY;\n  let lastX = Number.NEGATIVE_INFINITY;\n  let firstY = Number.POSITIVE_INFINITY;\n  let lastY = Number.NEGATIVE_INFINITY;\n  let points = [];\n\n  for (let i = 0; i < data.x.length; i++) {\n    let x = data.x[i];\n    let y = data.y[i];\n    if (firstX > x) {\n      firstX = x;\n    }\n    if (lastX < x) {\n      lastX = x;\n    }\n    if (firstY > y) {\n      firstY = y;\n    }\n    if (lastY < y) {\n      lastY = y;\n    }\n    points.push(`${x} ${y}`);\n  }\n\n  let header = `##TITLE=${title}\n##JCAMP-DX=4.24\n##DATA TYPE=${dataType}\n##ORIGIN=${origin}\n##OWNER=${owner}\n##XUNITS=${xUnits}\n##YUNITS=${yUnits}\n##FIRSTX=${firstX}\n##LASTX=${lastX}\n##FIRSTY=${firstY}\n##LASTY=${lastY}\\n`;\n\n  for (const key of Object.keys(meta)) {\n    header += `##$${key}=${meta[key]}\\n`;\n  }\n\n  // we leave the header and utf8 fonts ${header.replace(/[^\\t\\r\\n\\x20-\\x7F]/g, '')\n\n  return `${header}##NPOINTS=${points.length}\n##PEAK TABLE=(XY..XY)\n${points.join('\\n')}\n##END`;\n}\n","import creatorNtuples from './creatorNtuples';\nimport { fromJSON } from './fromJSON';\n\n/**\n * Create a jcamp from variables\n * @param {Array<Variable} [variables={}] - object of variables\n * @param {string} [options.info={}] - metadata of the file\n * @param {string} [options.info.title = ''] - title of the file\n * @param {string} [options.info.owner = ''] - owner of the file\n * @param {string} [options.info.origin = ''] - origin of the file\n * @param {string} [options.info.dataType = ''] - type of data\n * @param {object} [options.meta = {}] - comments to add to the file\n * @param {object} [options.forceNtuples = false] - force the ntuples format even if there is only x and y variables\n */\nexport function fromVariables(variables = {}, options = {}) {\n  const { info, meta, forceNtuples } = options;\n\n  let jcampOptions = {\n    info,\n    meta,\n  };\n\n  let keys = Object.keys(variables).map((key) => key.toLowerCase());\n  if (\n    keys.length === 2 &&\n    keys.includes('x') &&\n    keys.includes('y') &&\n    !forceNtuples\n  ) {\n    let x = variables.x;\n    let xLabel = x.label || x.name || 'x';\n\n    jcampOptions.info.xUnits = xLabel.includes(variables.x.units)\n      ? xLabel\n      : `${xLabel} [${variables.x.units}]`;\n\n    let y = variables.y;\n    let yLabel = y.label || y.name || 'y';\n\n    jcampOptions.info.yUnits = yLabel.includes(variables.y.units)\n      ? yLabel\n      : `${yLabel} [${variables.y.units}]`;\n    return fromJSON({ x: variables.x.data, y: variables.y.data }, jcampOptions);\n  } else {\n    return creatorNtuples(variables, options);\n  }\n}\n","import { fromVariables } from 'convert-to-jcamp';\n\nexport function toJcamps(analysis, options = {}) {\n  let jcamps = [];\n  for (let spectrum of analysis.spectra) {\n    jcamps.push(getJcamp(spectrum, options));\n  }\n  return jcamps;\n}\n\nfunction getJcamp(spectrum, options) {\n  const { info = {}, meta = {} } = options;\n\n  let jcampOptions = {\n    options: {},\n    info: {\n      title: spectrum.title,\n      dataType: spectrum.dataType,\n      ...info,\n    },\n    meta: { ...spectrum.meta, ...meta },\n  };\n\n  return fromVariables(spectrum.variables, jcampOptions);\n}\n","import { toJcamps } from './toJcamps';\n\nexport function toJcamp(analysis, options = {}) {\n  return toJcamps(analysis, options).join('\\n');\n}\n","/**\n * @typedef {Object} DataXY\n * @property {Array<Number>} x Array of x values\n * @property {Array<Number>} y Array of y values\n */\n\n/**\n * @typedef {Object} Spectrum\n * @property {Array<Number>} x Array of x values\n * @property {Array<Number>} y Array of y values\n * @property {string} xLabel\n * @property {string} yLabel\n * @property {string} title\n * @property {object} meta\n */\n\nimport { getJSGraph } from './jsgraph/getJSGraph';\nimport { getNormalizationAnnotations } from './jsgraph/getNormalizationAnnotations';\nimport { getReactPlotJSON } from './reactPlot/getReactPlotJSON';\n\nexport * from './AnalysesManager';\nexport * from './Analysis';\nexport * from './from/fromJcamp';\nexport * from './to/toJcamp';\nexport * from './to/toJcamps';\nexport * from './util/getNormalizedSpectrum';\n\nexport const JSGraph = {\n  getJSGraph,\n  getReactPlotJSON,\n  getNormalizationAnnotations,\n};\n","'use strict';\n\nconst nameStartChar = ':A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD';\nconst nameChar = nameStartChar + '\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040';\nconst nameRegexp = '[' + nameStartChar + '][' + nameChar + ']*'\nconst regexName = new RegExp('^' + nameRegexp + '$');\n\nconst getAllMatches = function(string, regex) {\n  const matches = [];\n  let match = regex.exec(string);\n  while (match) {\n    const allmatches = [];\n    const len = match.length;\n    for (let index = 0; index < len; index++) {\n      allmatches.push(match[index]);\n    }\n    matches.push(allmatches);\n    match = regex.exec(string);\n  }\n  return matches;\n};\n\nconst isName = function(string) {\n  const match = regexName.exec(string);\n  return !(match === null || typeof match === 'undefined');\n};\n\nexports.isExist = function(v) {\n  return typeof v !== 'undefined';\n};\n\nexports.isEmptyObject = function(obj) {\n  return Object.keys(obj).length === 0;\n};\n\n/**\n * Copy all the properties of a into b.\n * @param {*} target\n * @param {*} a\n */\nexports.merge = function(target, a, arrayMode) {\n  if (a) {\n    const keys = Object.keys(a); // will return an array of own properties\n    const len = keys.length; //don't make it inline\n    for (let i = 0; i < len; i++) {\n      if (arrayMode === 'strict') {\n        target[keys[i]] = [ a[keys[i]] ];\n      } else {\n        target[keys[i]] = a[keys[i]];\n      }\n    }\n  }\n};\n/* exports.merge =function (b,a){\n  return Object.assign(b,a);\n} */\n\nexports.getValue = function(v) {\n  if (exports.isExist(v)) {\n    return v;\n  } else {\n    return '';\n  }\n};\n\n// const fakeCall = function(a) {return a;};\n// const fakeCallNoReturn = function() {};\n\nexports.buildOptions = function(options, defaultOptions, props) {\n  var newOptions = {};\n  if (!options) {\n    return defaultOptions; //if there are not options\n  }\n\n  for (let i = 0; i < props.length; i++) {\n    if (options[props[i]] !== undefined) {\n      newOptions[props[i]] = options[props[i]];\n    } else {\n      newOptions[props[i]] = defaultOptions[props[i]];\n    }\n  }\n  return newOptions;\n};\n\n/**\n * Check if a tag name should be treated as array\n *\n * @param tagName the node tagname\n * @param arrayMode the array mode option\n * @param parentTagName the parent tag name\n * @returns {boolean} true if node should be parsed as array\n */\nexports.isTagNameInArrayMode = function (tagName, arrayMode, parentTagName) {\n  if (arrayMode === false) {\n    return false;\n  } else if (arrayMode instanceof RegExp) {\n    return arrayMode.test(tagName);\n  } else if (typeof arrayMode === 'function') {\n    return !!arrayMode(tagName, parentTagName);\n  }\n\n  return arrayMode === \"strict\";\n}\n\nexports.isName = isName;\nexports.getAllMatches = getAllMatches;\nexports.nameRegexp = nameRegexp;\n","'use strict';\n\nconst util = require('./util');\n\nconst convertToJson = function(node, options, parentTagName) {\n  const jObj = {};\n\n  // when no child node or attr is present\n  if ((!node.child || util.isEmptyObject(node.child)) && (!node.attrsMap || util.isEmptyObject(node.attrsMap))) {\n    return util.isExist(node.val) ? node.val : '';\n  }\n\n  // otherwise create a textnode if node has some text\n  if (util.isExist(node.val) && !(typeof node.val === 'string' && (node.val === '' || node.val === options.cdataPositionChar))) {\n    const asArray = util.isTagNameInArrayMode(node.tagname, options.arrayMode, parentTagName)\n    jObj[options.textNodeName] = asArray ? [node.val] : node.val;\n  }\n\n  util.merge(jObj, node.attrsMap, options.arrayMode);\n\n  const keys = Object.keys(node.child);\n  for (let index = 0; index < keys.length; index++) {\n    const tagName = keys[index];\n    if (node.child[tagName] && node.child[tagName].length > 1) {\n      jObj[tagName] = [];\n      for (let tag in node.child[tagName]) {\n        if (node.child[tagName].hasOwnProperty(tag)) {\n          jObj[tagName].push(convertToJson(node.child[tagName][tag], options, tagName));\n        }\n      }\n    } else {\n      const result = convertToJson(node.child[tagName][0], options, tagName);\n      const asArray = (options.arrayMode === true && typeof result === 'object') || util.isTagNameInArrayMode(tagName, options.arrayMode, parentTagName);\n      jObj[tagName] = asArray ? [result] : result;\n    }\n  }\n\n  //add value\n  return jObj;\n};\n\nexports.convertToJson = convertToJson;\n","'use strict';\n\nmodule.exports = function(tagname, parent, val) {\n  this.tagname = tagname;\n  this.parent = parent;\n  this.child = {}; //child tags\n  this.attrsMap = {}; //attributes map\n  this.val = val; //text only\n  this.addChild = function(child) {\n    if (Array.isArray(this.child[child.tagname])) {\n      //already presents\n      this.child[child.tagname].push(child);\n    } else {\n      this.child[child.tagname] = [child];\n    }\n  };\n};\n","'use strict';\n\nconst util = require('./util');\nconst buildOptions = require('./util').buildOptions;\nconst xmlNode = require('./xmlNode');\nconst regx =\n  '<((!\\\\[CDATA\\\\[([\\\\s\\\\S]*?)(]]>))|((NAME:)?(NAME))([^>]*)>|((\\\\/)(NAME)\\\\s*>))([^<]*)'\n  .replace(/NAME/g, util.nameRegexp);\n\n//const tagsRegx = new RegExp(\"<(\\\\/?[\\\\w:\\\\-\\._]+)([^>]*)>(\\\\s*\"+cdataRegx+\")*([^<]+)?\",\"g\");\n//const tagsRegx = new RegExp(\"<(\\\\/?)((\\\\w*:)?([\\\\w:\\\\-\\._]+))([^>]*)>([^<]*)(\"+cdataRegx+\"([^<]*))*([^<]+)?\",\"g\");\n\n//polyfill\nif (!Number.parseInt && window.parseInt) {\n  Number.parseInt = window.parseInt;\n}\nif (!Number.parseFloat && window.parseFloat) {\n  Number.parseFloat = window.parseFloat;\n}\n\nconst defaultOptions = {\n  attributeNamePrefix: '@_',\n  attrNodeName: false,\n  textNodeName: '#text',\n  ignoreAttributes: true,\n  ignoreNameSpace: false,\n  allowBooleanAttributes: false, //a tag can have attributes without any value\n  //ignoreRootElement : false,\n  parseNodeValue: true,\n  parseAttributeValue: false,\n  arrayMode: false,\n  trimValues: true, //Trim string values of tag and attributes\n  cdataTagName: false,\n  cdataPositionChar: '\\\\c',\n  tagValueProcessor: function(a, tagName) {\n    return a;\n  },\n  attrValueProcessor: function(a, attrName) {\n    return a;\n  },\n  stopNodes: []\n  //decodeStrict: false,\n};\n\nexports.defaultOptions = defaultOptions;\n\nconst props = [\n  'attributeNamePrefix',\n  'attrNodeName',\n  'textNodeName',\n  'ignoreAttributes',\n  'ignoreNameSpace',\n  'allowBooleanAttributes',\n  'parseNodeValue',\n  'parseAttributeValue',\n  'arrayMode',\n  'trimValues',\n  'cdataTagName',\n  'cdataPositionChar',\n  'tagValueProcessor',\n  'attrValueProcessor',\n  'parseTrueNumberOnly',\n  'stopNodes'\n];\nexports.props = props;\n\n/**\n * Trim -> valueProcessor -> parse value\n * @param {string} tagName\n * @param {string} val\n * @param {object} options\n */\nfunction processTagValue(tagName, val, options) {\n  if (val) {\n    if (options.trimValues) {\n      val = val.trim();\n    }\n    val = options.tagValueProcessor(val, tagName);\n    val = parseValue(val, options.parseNodeValue, options.parseTrueNumberOnly);\n  }\n\n  return val;\n}\n\nfunction resolveNameSpace(tagname, options) {\n  if (options.ignoreNameSpace) {\n    const tags = tagname.split(':');\n    const prefix = tagname.charAt(0) === '/' ? '/' : '';\n    if (tags[0] === 'xmlns') {\n      return '';\n    }\n    if (tags.length === 2) {\n      tagname = prefix + tags[1];\n    }\n  }\n  return tagname;\n}\n\nfunction parseValue(val, shouldParse, parseTrueNumberOnly) {\n  if (shouldParse && typeof val === 'string') {\n    let parsed;\n    if (val.trim() === '' || isNaN(val)) {\n      parsed = val === 'true' ? true : val === 'false' ? false : val;\n    } else {\n      if (val.indexOf('0x') !== -1) {\n        //support hexa decimal\n        parsed = Number.parseInt(val, 16);\n      } else if (val.indexOf('.') !== -1) {\n        parsed = Number.parseFloat(val);\n        val = val.replace(/\\.?0+$/, \"\");\n      } else {\n        parsed = Number.parseInt(val, 10);\n      }\n      if (parseTrueNumberOnly) {\n        parsed = String(parsed) === val ? parsed : val;\n      }\n    }\n    return parsed;\n  } else {\n    if (util.isExist(val)) {\n      return val;\n    } else {\n      return '';\n    }\n  }\n}\n\n//TODO: change regex to capture NS\n//const attrsRegx = new RegExp(\"([\\\\w\\\\-\\\\.\\\\:]+)\\\\s*=\\\\s*(['\\\"])((.|\\n)*?)\\\\2\",\"gm\");\nconst attrsRegx = new RegExp('([^\\\\s=]+)\\\\s*(=\\\\s*([\\'\"])(.*?)\\\\3)?', 'g');\n\nfunction buildAttributesMap(attrStr, options) {\n  if (!options.ignoreAttributes && typeof attrStr === 'string') {\n    attrStr = attrStr.replace(/\\r?\\n/g, ' ');\n    //attrStr = attrStr || attrStr.trim();\n\n    const matches = util.getAllMatches(attrStr, attrsRegx);\n    const len = matches.length; //don't make it inline\n    const attrs = {};\n    for (let i = 0; i < len; i++) {\n      const attrName = resolveNameSpace(matches[i][1], options);\n      if (attrName.length) {\n        if (matches[i][4] !== undefined) {\n          if (options.trimValues) {\n            matches[i][4] = matches[i][4].trim();\n          }\n          matches[i][4] = options.attrValueProcessor(matches[i][4], attrName);\n          attrs[options.attributeNamePrefix + attrName] = parseValue(\n            matches[i][4],\n            options.parseAttributeValue,\n            options.parseTrueNumberOnly\n          );\n        } else if (options.allowBooleanAttributes) {\n          attrs[options.attributeNamePrefix + attrName] = true;\n        }\n      }\n    }\n    if (!Object.keys(attrs).length) {\n      return;\n    }\n    if (options.attrNodeName) {\n      const attrCollection = {};\n      attrCollection[options.attrNodeName] = attrs;\n      return attrCollection;\n    }\n    return attrs;\n  }\n}\n\nconst getTraversalObj = function(xmlData, options) {\n  xmlData = xmlData.replace(/\\r\\n?/g, \"\\n\");\n  options = buildOptions(options, defaultOptions, props);\n  const xmlObj = new xmlNode('!xml');\n  let currentNode = xmlObj;\n  let textData = \"\";\n\n//function match(xmlData){\n  for(let i=0; i< xmlData.length; i++){\n    const ch = xmlData[i];\n    if(ch === '<'){\n      if( xmlData[i+1] === '/') {//Closing Tag\n        const closeIndex = findClosingIndex(xmlData, \">\", i, \"Closing Tag is not closed.\")\n        let tagName = xmlData.substring(i+2,closeIndex).trim();\n\n        if(options.ignoreNameSpace){\n          const colonIndex = tagName.indexOf(\":\");\n          if(colonIndex !== -1){\n            tagName = tagName.substr(colonIndex+1);\n          }\n        }\n\n        /* if (currentNode.parent) {\n          currentNode.parent.val = util.getValue(currentNode.parent.val) + '' + processTagValue2(tagName, textData , options);\n        } */\n        if(currentNode){\n          if(currentNode.val){\n            currentNode.val = util.getValue(currentNode.val) + '' + processTagValue(tagName, textData , options);\n          }else{\n            currentNode.val = processTagValue(tagName, textData , options);\n          }\n        }\n\n        if (options.stopNodes.length && options.stopNodes.includes(currentNode.tagname)) {\n          currentNode.child = []\n          if (currentNode.attrsMap == undefined) { currentNode.attrsMap = {}}\n          currentNode.val = xmlData.substr(currentNode.startIndex + 1, i - currentNode.startIndex - 1)\n        }\n        currentNode = currentNode.parent;\n        textData = \"\";\n        i = closeIndex;\n      } else if( xmlData[i+1] === '?') {\n        i = findClosingIndex(xmlData, \"?>\", i, \"Pi Tag is not closed.\")\n      } else if(xmlData.substr(i + 1, 3) === '!--') {\n        i = findClosingIndex(xmlData, \"-->\", i, \"Comment is not closed.\")\n      } else if( xmlData.substr(i + 1, 2) === '!D') {\n        const closeIndex = findClosingIndex(xmlData, \">\", i, \"DOCTYPE is not closed.\")\n        const tagExp = xmlData.substring(i, closeIndex);\n        if(tagExp.indexOf(\"[\") >= 0){\n          i = xmlData.indexOf(\"]>\", i) + 1;\n        }else{\n          i = closeIndex;\n        }\n      }else if(xmlData.substr(i + 1, 2) === '![') {\n        const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"CDATA is not closed.\") - 2\n        const tagExp = xmlData.substring(i + 9,closeIndex);\n\n        //considerations\n        //1. CDATA will always have parent node\n        //2. A tag with CDATA is not a leaf node so it's value would be string type.\n        if(textData){\n          currentNode.val = util.getValue(currentNode.val) + '' + processTagValue(currentNode.tagname, textData , options);\n          textData = \"\";\n        }\n\n        if (options.cdataTagName) {\n          //add cdata node\n          const childNode = new xmlNode(options.cdataTagName, currentNode, tagExp);\n          currentNode.addChild(childNode);\n          //for backtracking\n          currentNode.val = util.getValue(currentNode.val) + options.cdataPositionChar;\n          //add rest value to parent node\n          if (tagExp) {\n            childNode.val = tagExp;\n          }\n        } else {\n          currentNode.val = (currentNode.val || '') + (tagExp || '');\n        }\n\n        i = closeIndex + 2;\n      }else {//Opening tag\n        const result = closingIndexForOpeningTag(xmlData, i+1)\n        let tagExp = result.data;\n        const closeIndex = result.index;\n        const separatorIndex = tagExp.indexOf(\" \");\n        let tagName = tagExp;\n        if(separatorIndex !== -1){\n          tagName = tagExp.substr(0, separatorIndex).replace(/\\s\\s*$/, '');\n          tagExp = tagExp.substr(separatorIndex + 1);\n        }\n\n        if(options.ignoreNameSpace){\n          const colonIndex = tagName.indexOf(\":\");\n          if(colonIndex !== -1){\n            tagName = tagName.substr(colonIndex+1);\n          }\n        }\n\n        //save text to parent node\n        if (currentNode && textData) {\n          if(currentNode.tagname !== '!xml'){\n            currentNode.val = util.getValue(currentNode.val) + '' + processTagValue( currentNode.tagname, textData, options);\n          }\n        }\n\n        if(tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1){//selfClosing tag\n\n          if(tagName[tagName.length - 1] === \"/\"){ //remove trailing '/'\n            tagName = tagName.substr(0, tagName.length - 1);\n            tagExp = tagName;\n          }else{\n            tagExp = tagExp.substr(0, tagExp.length - 1);\n          }\n\n          const childNode = new xmlNode(tagName, currentNode, '');\n          if(tagName !== tagExp){\n            childNode.attrsMap = buildAttributesMap(tagExp, options);\n          }\n          currentNode.addChild(childNode);\n        }else{//opening tag\n\n          const childNode = new xmlNode( tagName, currentNode );\n          if (options.stopNodes.length && options.stopNodes.includes(childNode.tagname)) {\n            childNode.startIndex=closeIndex;\n          }\n          if(tagName !== tagExp){\n            childNode.attrsMap = buildAttributesMap(tagExp, options);\n          }\n          currentNode.addChild(childNode);\n          currentNode = childNode;\n        }\n        textData = \"\";\n        i = closeIndex;\n      }\n    }else{\n      textData += xmlData[i];\n    }\n  }\n  return xmlObj;\n}\n\nfunction closingIndexForOpeningTag(data, i){\n  let attrBoundary;\n  let tagExp = \"\";\n  for (let index = i; index < data.length; index++) {\n    let ch = data[index];\n    if (attrBoundary) {\n        if (ch === attrBoundary) attrBoundary = \"\";//reset\n    } else if (ch === '\"' || ch === \"'\") {\n        attrBoundary = ch;\n    } else if (ch === '>') {\n        return {\n          data: tagExp,\n          index: index\n        }\n    } else if (ch === '\\t') {\n      ch = \" \"\n    }\n    tagExp += ch;\n  }\n}\n\nfunction findClosingIndex(xmlData, str, i, errMsg){\n  const closingIndex = xmlData.indexOf(str, i);\n  if(closingIndex === -1){\n    throw new Error(errMsg)\n  }else{\n    return closingIndex + str.length - 1;\n  }\n}\n\nexports.getTraversalObj = getTraversalObj;\n","'use strict';\n\nconst util = require('./util');\n\nconst defaultOptions = {\n  allowBooleanAttributes: false, //A tag can have attributes without any value\n};\n\nconst props = ['allowBooleanAttributes'];\n\n//const tagsPattern = new RegExp(\"<\\\\/?([\\\\w:\\\\-_\\.]+)\\\\s*\\/?>\",\"g\");\nexports.validate = function (xmlData, options) {\n  options = util.buildOptions(options, defaultOptions, props);\n\n  //xmlData = xmlData.replace(/(\\r\\n|\\n|\\r)/gm,\"\");//make it single line\n  //xmlData = xmlData.replace(/(^\\s*<\\?xml.*?\\?>)/g,\"\");//Remove XML starting tag\n  //xmlData = xmlData.replace(/(<!DOCTYPE[\\s\\w\\\"\\.\\/\\-\\:]+(\\[.*\\])*\\s*>)/g,\"\");//Remove DOCTYPE\n  const tags = [];\n  let tagFound = false;\n\n  //indicates that the root tag has been closed (aka. depth 0 has been reached)\n  let reachedRoot = false;\n\n  if (xmlData[0] === '\\ufeff') {\n    // check for byte order mark (BOM)\n    xmlData = xmlData.substr(1);\n  }\n\n  for (let i = 0; i < xmlData.length; i++) {\n\n    if (xmlData[i] === '<' && xmlData[i+1] === '?') {\n      i+=2;\n      i = readPI(xmlData,i);\n      if (i.err) return i;\n    }else if (xmlData[i] === '<') {\n      //starting of tag\n      //read until you reach to '>' avoiding any '>' in attribute value\n\n      i++;\n      \n      if (xmlData[i] === '!') {\n        i = readCommentAndCDATA(xmlData, i);\n        continue;\n      } else {\n        let closingTag = false;\n        if (xmlData[i] === '/') {\n          //closing tag\n          closingTag = true;\n          i++;\n        }\n        //read tagname\n        let tagName = '';\n        for (; i < xmlData.length &&\n          xmlData[i] !== '>' &&\n          xmlData[i] !== ' ' &&\n          xmlData[i] !== '\\t' &&\n          xmlData[i] !== '\\n' &&\n          xmlData[i] !== '\\r'; i++\n        ) {\n          tagName += xmlData[i];\n        }\n        tagName = tagName.trim();\n        //console.log(tagName);\n\n        if (tagName[tagName.length - 1] === '/') {\n          //self closing tag without attributes\n          tagName = tagName.substring(0, tagName.length - 1);\n          //continue;\n          i--;\n        }\n        if (!validateTagName(tagName)) {\n          let msg;\n          if (tagName.trim().length === 0) {\n            msg = \"There is an unnecessary space between tag name and backward slash '</ ..'.\";\n          } else {\n            msg = \"Tag '\"+tagName+\"' is an invalid name.\";\n          }\n          return getErrorObject('InvalidTag', msg, getLineNumberForPosition(xmlData, i));\n        }\n\n        const result = readAttributeStr(xmlData, i);\n        if (result === false) {\n          return getErrorObject('InvalidAttr', \"Attributes for '\"+tagName+\"' have open quote.\", getLineNumberForPosition(xmlData, i));\n        }\n        let attrStr = result.value;\n        i = result.index;\n\n        if (attrStr[attrStr.length - 1] === '/') {\n          //self closing tag\n          attrStr = attrStr.substring(0, attrStr.length - 1);\n          const isValid = validateAttributeString(attrStr, options);\n          if (isValid === true) {\n            tagFound = true;\n            //continue; //text may presents after self closing tag\n          } else {\n            //the result from the nested function returns the position of the error within the attribute\n            //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n            //this gives us the absolute index in the entire xml, which we can use to find the line at last\n            return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, i - attrStr.length + isValid.err.line));\n          }\n        } else if (closingTag) {\n          if (!result.tagClosed) {\n            return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' doesn't have proper closing.\", getLineNumberForPosition(xmlData, i));\n          } else if (attrStr.trim().length > 0) {\n            return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' can't have attributes or invalid starting.\", getLineNumberForPosition(xmlData, i));\n          } else {\n            const otg = tags.pop();\n            if (tagName !== otg) {\n              return getErrorObject('InvalidTag', \"Closing tag '\"+otg+\"' is expected inplace of '\"+tagName+\"'.\", getLineNumberForPosition(xmlData, i));\n            }\n\n            //when there are no more tags, we reached the root level.\n            if (tags.length == 0) {\n              reachedRoot = true;\n            }\n          }\n        } else {\n          const isValid = validateAttributeString(attrStr, options);\n          if (isValid !== true) {\n            //the result from the nested function returns the position of the error within the attribute\n            //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n            //this gives us the absolute index in the entire xml, which we can use to find the line at last\n            return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, i - attrStr.length + isValid.err.line));\n          }\n\n          //if the root level has been reached before ...\n          if (reachedRoot === true) {\n            return getErrorObject('InvalidXml', 'Multiple possible root nodes found.', getLineNumberForPosition(xmlData, i));\n          } else {\n            tags.push(tagName);\n          }\n          tagFound = true;\n        }\n\n        //skip tag text value\n        //It may include comments and CDATA value\n        for (i++; i < xmlData.length; i++) {\n          if (xmlData[i] === '<') {\n            if (xmlData[i + 1] === '!') {\n              //comment or CADATA\n              i++;\n              i = readCommentAndCDATA(xmlData, i);\n              continue;\n            } else if (xmlData[i+1] === '?') {\n              i = readPI(xmlData, ++i);\n              if (i.err) return i;\n            } else{\n              break;\n            }\n          } else if (xmlData[i] === '&') {\n            const afterAmp = validateAmpersand(xmlData, i);\n            if (afterAmp == -1)\n              return getErrorObject('InvalidChar', \"char '&' is not expected.\", getLineNumberForPosition(xmlData, i));\n            i = afterAmp;\n          }\n        } //end of reading tag text value\n        if (xmlData[i] === '<') {\n          i--;\n        }\n      }\n    } else {\n      if (xmlData[i] === ' ' || xmlData[i] === '\\t' || xmlData[i] === '\\n' || xmlData[i] === '\\r') {\n        continue;\n      }\n      return getErrorObject('InvalidChar', \"char '\"+xmlData[i]+\"' is not expected.\", getLineNumberForPosition(xmlData, i));\n    }\n  }\n\n  if (!tagFound) {\n    return getErrorObject('InvalidXml', 'Start tag expected.', 1);\n  } else if (tags.length > 0) {\n    return getErrorObject('InvalidXml', \"Invalid '\"+JSON.stringify(tags, null, 4).replace(/\\r?\\n/g, '')+\"' found.\", 1);\n  }\n\n  return true;\n};\n\n/**\n * Read Processing insstructions and skip\n * @param {*} xmlData\n * @param {*} i\n */\nfunction readPI(xmlData, i) {\n  var start = i;\n  for (; i < xmlData.length; i++) {\n    if (xmlData[i] == '?' || xmlData[i] == ' ') {\n      //tagname\n      var tagname = xmlData.substr(start, i - start);\n      if (i > 5 && tagname === 'xml') {\n        return getErrorObject('InvalidXml', 'XML declaration allowed only at the start of the document.', getLineNumberForPosition(xmlData, i));\n      } else if (xmlData[i] == '?' && xmlData[i + 1] == '>') {\n        //check if valid attribut string\n        i++;\n        break;\n      } else {\n        continue;\n      }\n    }\n  }\n  return i;\n}\n\nfunction readCommentAndCDATA(xmlData, i) {\n  if (xmlData.length > i + 5 && xmlData[i + 1] === '-' && xmlData[i + 2] === '-') {\n    //comment\n    for (i += 3; i < xmlData.length; i++) {\n      if (xmlData[i] === '-' && xmlData[i + 1] === '-' && xmlData[i + 2] === '>') {\n        i += 2;\n        break;\n      }\n    }\n  } else if (\n    xmlData.length > i + 8 &&\n    xmlData[i + 1] === 'D' &&\n    xmlData[i + 2] === 'O' &&\n    xmlData[i + 3] === 'C' &&\n    xmlData[i + 4] === 'T' &&\n    xmlData[i + 5] === 'Y' &&\n    xmlData[i + 6] === 'P' &&\n    xmlData[i + 7] === 'E'\n  ) {\n    let angleBracketsCount = 1;\n    for (i += 8; i < xmlData.length; i++) {\n      if (xmlData[i] === '<') {\n        angleBracketsCount++;\n      } else if (xmlData[i] === '>') {\n        angleBracketsCount--;\n        if (angleBracketsCount === 0) {\n          break;\n        }\n      }\n    }\n  } else if (\n    xmlData.length > i + 9 &&\n    xmlData[i + 1] === '[' &&\n    xmlData[i + 2] === 'C' &&\n    xmlData[i + 3] === 'D' &&\n    xmlData[i + 4] === 'A' &&\n    xmlData[i + 5] === 'T' &&\n    xmlData[i + 6] === 'A' &&\n    xmlData[i + 7] === '['\n  ) {\n    for (i += 8; i < xmlData.length; i++) {\n      if (xmlData[i] === ']' && xmlData[i + 1] === ']' && xmlData[i + 2] === '>') {\n        i += 2;\n        break;\n      }\n    }\n  }\n\n  return i;\n}\n\nvar doubleQuote = '\"';\nvar singleQuote = \"'\";\n\n/**\n * Keep reading xmlData until '<' is found outside the attribute value.\n * @param {string} xmlData\n * @param {number} i\n */\nfunction readAttributeStr(xmlData, i) {\n  let attrStr = '';\n  let startChar = '';\n  let tagClosed = false;\n  for (; i < xmlData.length; i++) {\n    if (xmlData[i] === doubleQuote || xmlData[i] === singleQuote) {\n      if (startChar === '') {\n        startChar = xmlData[i];\n      } else if (startChar !== xmlData[i]) {\n        //if vaue is enclosed with double quote then single quotes are allowed inside the value and vice versa\n        continue;\n      } else {\n        startChar = '';\n      }\n    } else if (xmlData[i] === '>') {\n      if (startChar === '') {\n        tagClosed = true;\n        break;\n      }\n    }\n    attrStr += xmlData[i];\n  }\n  if (startChar !== '') {\n    return false;\n  }\n\n  return {\n    value: attrStr,\n    index: i,\n    tagClosed: tagClosed\n  };\n}\n\n/**\n * Select all the attributes whether valid or invalid.\n */\nconst validAttrStrRegxp = new RegExp('(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*([\\'\"])(([\\\\s\\\\S])*?)\\\\5)?', 'g');\n\n//attr, =\"sd\", a=\"amit's\", a=\"sd\"b=\"saf\", ab  cd=\"\"\n\nfunction validateAttributeString(attrStr, options) {\n  //console.log(\"start:\"+attrStr+\":end\");\n\n  //if(attrStr.trim().length === 0) return true; //empty string\n\n  const matches = util.getAllMatches(attrStr, validAttrStrRegxp);\n  const attrNames = {};\n\n  for (let i = 0; i < matches.length; i++) {\n    if (matches[i][1].length === 0) {\n      //nospace before attribute name: a=\"sd\"b=\"saf\"\n      return getErrorObject('InvalidAttr', \"Attribute '\"+matches[i][2]+\"' has no space in starting.\", getPositionFromMatch(attrStr, matches[i][0]))\n    } else if (matches[i][3] === undefined && !options.allowBooleanAttributes) {\n      //independent attribute: ab\n      return getErrorObject('InvalidAttr', \"boolean attribute '\"+matches[i][2]+\"' is not allowed.\", getPositionFromMatch(attrStr, matches[i][0]));\n    }\n    /* else if(matches[i][6] === undefined){//attribute without value: ab=\n                    return { err: { code:\"InvalidAttr\",msg:\"attribute \" + matches[i][2] + \" has no value assigned.\"}};\n                } */\n    const attrName = matches[i][2];\n    if (!validateAttrName(attrName)) {\n      return getErrorObject('InvalidAttr', \"Attribute '\"+attrName+\"' is an invalid name.\", getPositionFromMatch(attrStr, matches[i][0]));\n    }\n    if (!attrNames.hasOwnProperty(attrName)) {\n      //check for duplicate attribute.\n      attrNames[attrName] = 1;\n    } else {\n      return getErrorObject('InvalidAttr', \"Attribute '\"+attrName+\"' is repeated.\", getPositionFromMatch(attrStr, matches[i][0]));\n    }\n  }\n\n  return true;\n}\n\nfunction validateNumberAmpersand(xmlData, i) {\n  let re = /\\d/;\n  if (xmlData[i] === 'x') {\n    i++;\n    re = /[\\da-fA-F]/;\n  }\n  for (; i < xmlData.length; i++) {\n    if (xmlData[i] === ';')\n      return i;\n    if (!xmlData[i].match(re))\n      break;\n  }\n  return -1;\n}\n\nfunction validateAmpersand(xmlData, i) {\n  // https://www.w3.org/TR/xml/#dt-charref\n  i++;\n  if (xmlData[i] === ';')\n    return -1;\n  if (xmlData[i] === '#') {\n    i++;\n    return validateNumberAmpersand(xmlData, i);\n  }\n  let count = 0;\n  for (; i < xmlData.length; i++, count++) {\n    if (xmlData[i].match(/\\w/) && count < 20)\n      continue;\n    if (xmlData[i] === ';')\n      break;\n    return -1;\n  }\n  return i;\n}\n\nfunction getErrorObject(code, message, lineNumber) {\n  return {\n    err: {\n      code: code,\n      msg: message,\n      line: lineNumber,\n    },\n  };\n}\n\nfunction validateAttrName(attrName) {\n  return util.isName(attrName);\n}\n\n// const startsWithXML = /^xml/i;\n\nfunction validateTagName(tagname) {\n  return util.isName(tagname) /* && !tagname.match(startsWithXML) */;\n}\n\n//this function returns the line number for the character at the given index\nfunction getLineNumberForPosition(xmlData, index) {\n  var lines = xmlData.substring(0, index).split(/\\r?\\n/);\n  return lines.length;\n}\n\n//this function returns the position of the last character of match within attrStr\nfunction getPositionFromMatch(attrStr, match) {\n  return attrStr.indexOf(match) + match.length;\n}\n","'use strict';\nconst char = function(a) {\n  return String.fromCharCode(a);\n};\n\nconst chars = {\n  nilChar: char(176),\n  missingChar: char(201),\n  nilPremitive: char(175),\n  missingPremitive: char(200),\n\n  emptyChar: char(178),\n  emptyValue: char(177), //empty Premitive\n\n  boundryChar: char(179),\n\n  objStart: char(198),\n  arrStart: char(204),\n  arrayEnd: char(185),\n};\n\nconst charsArr = [\n  chars.nilChar,\n  chars.nilPremitive,\n  chars.missingChar,\n  chars.missingPremitive,\n  chars.boundryChar,\n  chars.emptyChar,\n  chars.emptyValue,\n  chars.arrayEnd,\n  chars.objStart,\n  chars.arrStart,\n];\n\nconst _e = function(node, e_schema, options) {\n  if (typeof e_schema === 'string') {\n    //premitive\n    if (node && node[0] && node[0].val !== undefined) {\n      return getValue(node[0].val, e_schema);\n    } else {\n      return getValue(node, e_schema);\n    }\n  } else {\n    const hasValidData = hasData(node);\n    if (hasValidData === true) {\n      let str = '';\n      if (Array.isArray(e_schema)) {\n        //attributes can't be repeated. hence check in children tags only\n        str += chars.arrStart;\n        const itemSchema = e_schema[0];\n        //var itemSchemaType = itemSchema;\n        const arr_len = node.length;\n\n        if (typeof itemSchema === 'string') {\n          for (let arr_i = 0; arr_i < arr_len; arr_i++) {\n            const r = getValue(node[arr_i].val, itemSchema);\n            str = processValue(str, r);\n          }\n        } else {\n          for (let arr_i = 0; arr_i < arr_len; arr_i++) {\n            const r = _e(node[arr_i], itemSchema, options);\n            str = processValue(str, r);\n          }\n        }\n        str += chars.arrayEnd; //indicates that next item is not array item\n      } else {\n        //object\n        str += chars.objStart;\n        const keys = Object.keys(e_schema);\n        if (Array.isArray(node)) {\n          node = node[0];\n        }\n        for (let i in keys) {\n          const key = keys[i];\n          //a property defined in schema can be present either in attrsMap or children tags\n          //options.textNodeName will not present in both maps, take it's value from val\n          //options.attrNodeName will be present in attrsMap\n          let r;\n          if (!options.ignoreAttributes && node.attrsMap && node.attrsMap[key]) {\n            r = _e(node.attrsMap[key], e_schema[key], options);\n          } else if (key === options.textNodeName) {\n            r = _e(node.val, e_schema[key], options);\n          } else {\n            r = _e(node.child[key], e_schema[key], options);\n          }\n          str = processValue(str, r);\n        }\n      }\n      return str;\n    } else {\n      return hasValidData;\n    }\n  }\n};\n\nconst getValue = function(a /*, type*/) {\n  switch (a) {\n    case undefined:\n      return chars.missingPremitive;\n    case null:\n      return chars.nilPremitive;\n    case '':\n      return chars.emptyValue;\n    default:\n      return a;\n  }\n};\n\nconst processValue = function(str, r) {\n  if (!isAppChar(r[0]) && !isAppChar(str[str.length - 1])) {\n    str += chars.boundryChar;\n  }\n  return str + r;\n};\n\nconst isAppChar = function(ch) {\n  return charsArr.indexOf(ch) !== -1;\n};\n\nfunction hasData(jObj) {\n  if (jObj === undefined) {\n    return chars.missingChar;\n  } else if (jObj === null) {\n    return chars.nilChar;\n  } else if (\n    jObj.child &&\n    Object.keys(jObj.child).length === 0 &&\n    (!jObj.attrsMap || Object.keys(jObj.attrsMap).length === 0)\n  ) {\n    return chars.emptyChar;\n  } else {\n    return true;\n  }\n}\n\nconst x2j = require('./xmlstr2xmlnode');\nconst buildOptions = require('./util').buildOptions;\n\nconst convert2nimn = function(node, e_schema, options) {\n  options = buildOptions(options, x2j.defaultOptions, x2j.props);\n  return _e(node, e_schema, options);\n};\n\nexports.convert2nimn = convert2nimn;\n","'use strict';\n\nconst util = require('./util');\nconst buildOptions = require('./util').buildOptions;\nconst x2j = require('./xmlstr2xmlnode');\n\n//TODO: do it later\nconst convertToJsonString = function(node, options) {\n  options = buildOptions(options, x2j.defaultOptions, x2j.props);\n\n  options.indentBy = options.indentBy || '';\n  return _cToJsonStr(node, options, 0);\n};\n\nconst _cToJsonStr = function(node, options, level) {\n  let jObj = '{';\n\n  //traver through all the children\n  const keys = Object.keys(node.child);\n\n  for (let index = 0; index < keys.length; index++) {\n    var tagname = keys[index];\n    if (node.child[tagname] && node.child[tagname].length > 1) {\n      jObj += '\"' + tagname + '\" : [ ';\n      for (var tag in node.child[tagname]) {\n        jObj += _cToJsonStr(node.child[tagname][tag], options) + ' , ';\n      }\n      jObj = jObj.substr(0, jObj.length - 1) + ' ] '; //remove extra comma in last\n    } else {\n      jObj += '\"' + tagname + '\" : ' + _cToJsonStr(node.child[tagname][0], options) + ' ,';\n    }\n  }\n  util.merge(jObj, node.attrsMap);\n  //add attrsMap as new children\n  if (util.isEmptyObject(jObj)) {\n    return util.isExist(node.val) ? node.val : '';\n  } else {\n    if (util.isExist(node.val)) {\n      if (!(typeof node.val === 'string' && (node.val === '' || node.val === options.cdataPositionChar))) {\n        jObj += '\"' + options.textNodeName + '\" : ' + stringval(node.val);\n      }\n    }\n  }\n  //add value\n  if (jObj[jObj.length - 1] === ',') {\n    jObj = jObj.substr(0, jObj.length - 2);\n  }\n  return jObj + '}';\n};\n\nfunction stringval(v) {\n  if (v === true || v === false || !isNaN(v)) {\n    return v;\n  } else {\n    return '\"' + v + '\"';\n  }\n}\n\nfunction indentate(options, level) {\n  return options.indentBy.repeat(level);\n}\n\nexports.convertToJsonString = convertToJsonString;\n","'use strict';\n//parse Empty Node as self closing node\nconst buildOptions = require('./util').buildOptions;\n\nconst defaultOptions = {\n  attributeNamePrefix: '@_',\n  attrNodeName: false,\n  textNodeName: '#text',\n  ignoreAttributes: true,\n  cdataTagName: false,\n  cdataPositionChar: '\\\\c',\n  format: false,\n  indentBy: '  ',\n  supressEmptyNode: false,\n  tagValueProcessor: function(a) {\n    return a;\n  },\n  attrValueProcessor: function(a) {\n    return a;\n  },\n};\n\nconst props = [\n  'attributeNamePrefix',\n  'attrNodeName',\n  'textNodeName',\n  'ignoreAttributes',\n  'cdataTagName',\n  'cdataPositionChar',\n  'format',\n  'indentBy',\n  'supressEmptyNode',\n  'tagValueProcessor',\n  'attrValueProcessor',\n];\n\nfunction Parser(options) {\n  this.options = buildOptions(options, defaultOptions, props);\n  if (this.options.ignoreAttributes || this.options.attrNodeName) {\n    this.isAttribute = function(/*a*/) {\n      return false;\n    };\n  } else {\n    this.attrPrefixLen = this.options.attributeNamePrefix.length;\n    this.isAttribute = isAttribute;\n  }\n  if (this.options.cdataTagName) {\n    this.isCDATA = isCDATA;\n  } else {\n    this.isCDATA = function(/*a*/) {\n      return false;\n    };\n  }\n  this.replaceCDATAstr = replaceCDATAstr;\n  this.replaceCDATAarr = replaceCDATAarr;\n\n  if (this.options.format) {\n    this.indentate = indentate;\n    this.tagEndChar = '>\\n';\n    this.newLine = '\\n';\n  } else {\n    this.indentate = function() {\n      return '';\n    };\n    this.tagEndChar = '>';\n    this.newLine = '';\n  }\n\n  if (this.options.supressEmptyNode) {\n    this.buildTextNode = buildEmptyTextNode;\n    this.buildObjNode = buildEmptyObjNode;\n  } else {\n    this.buildTextNode = buildTextValNode;\n    this.buildObjNode = buildObjectNode;\n  }\n\n  this.buildTextValNode = buildTextValNode;\n  this.buildObjectNode = buildObjectNode;\n}\n\nParser.prototype.parse = function(jObj) {\n  return this.j2x(jObj, 0).val;\n};\n\nParser.prototype.j2x = function(jObj, level) {\n  let attrStr = '';\n  let val = '';\n  const keys = Object.keys(jObj);\n  const len = keys.length;\n  for (let i = 0; i < len; i++) {\n    const key = keys[i];\n    if (typeof jObj[key] === 'undefined') {\n      // supress undefined node\n    } else if (jObj[key] === null) {\n      val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n    } else if (jObj[key] instanceof Date) {\n      val += this.buildTextNode(jObj[key], key, '', level);\n    } else if (typeof jObj[key] !== 'object') {\n      //premitive type\n      const attr = this.isAttribute(key);\n      if (attr) {\n        attrStr += ' ' + attr + '=\"' + this.options.attrValueProcessor('' + jObj[key]) + '\"';\n      } else if (this.isCDATA(key)) {\n        if (jObj[this.options.textNodeName]) {\n          val += this.replaceCDATAstr(jObj[this.options.textNodeName], jObj[key]);\n        } else {\n          val += this.replaceCDATAstr('', jObj[key]);\n        }\n      } else {\n        //tag value\n        if (key === this.options.textNodeName) {\n          if (jObj[this.options.cdataTagName]) {\n            //value will added while processing cdata\n          } else {\n            val += this.options.tagValueProcessor('' + jObj[key]);\n          }\n        } else {\n          val += this.buildTextNode(jObj[key], key, '', level);\n        }\n      }\n    } else if (Array.isArray(jObj[key])) {\n      //repeated nodes\n      if (this.isCDATA(key)) {\n        val += this.indentate(level);\n        if (jObj[this.options.textNodeName]) {\n          val += this.replaceCDATAarr(jObj[this.options.textNodeName], jObj[key]);\n        } else {\n          val += this.replaceCDATAarr('', jObj[key]);\n        }\n      } else {\n        //nested nodes\n        const arrLen = jObj[key].length;\n        for (let j = 0; j < arrLen; j++) {\n          const item = jObj[key][j];\n          if (typeof item === 'undefined') {\n            // supress undefined node\n          } else if (item === null) {\n            val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n          } else if (typeof item === 'object') {\n            const result = this.j2x(item, level + 1);\n            val += this.buildObjNode(result.val, key, result.attrStr, level);\n          } else {\n            val += this.buildTextNode(item, key, '', level);\n          }\n        }\n      }\n    } else {\n      //nested node\n      if (this.options.attrNodeName && key === this.options.attrNodeName) {\n        const Ks = Object.keys(jObj[key]);\n        const L = Ks.length;\n        for (let j = 0; j < L; j++) {\n          attrStr += ' ' + Ks[j] + '=\"' + this.options.attrValueProcessor('' + jObj[key][Ks[j]]) + '\"';\n        }\n      } else {\n        const result = this.j2x(jObj[key], level + 1);\n        val += this.buildObjNode(result.val, key, result.attrStr, level);\n      }\n    }\n  }\n  return {attrStr: attrStr, val: val};\n};\n\nfunction replaceCDATAstr(str, cdata) {\n  str = this.options.tagValueProcessor('' + str);\n  if (this.options.cdataPositionChar === '' || str === '') {\n    return str + '<![CDATA[' + cdata + ']]' + this.tagEndChar;\n  } else {\n    return str.replace(this.options.cdataPositionChar, '<![CDATA[' + cdata + ']]' + this.tagEndChar);\n  }\n}\n\nfunction replaceCDATAarr(str, cdata) {\n  str = this.options.tagValueProcessor('' + str);\n  if (this.options.cdataPositionChar === '' || str === '') {\n    return str + '<![CDATA[' + cdata.join(']]><![CDATA[') + ']]' + this.tagEndChar;\n  } else {\n    for (let v in cdata) {\n      str = str.replace(this.options.cdataPositionChar, '<![CDATA[' + cdata[v] + ']]>');\n    }\n    return str + this.newLine;\n  }\n}\n\nfunction buildObjectNode(val, key, attrStr, level) {\n  if (attrStr && !val.includes('<')) {\n    return (\n      this.indentate(level) +\n      '<' +\n      key +\n      attrStr +\n      '>' +\n      val +\n      //+ this.newLine\n      // + this.indentate(level)\n      '</' +\n      key +\n      this.tagEndChar\n    );\n  } else {\n    return (\n      this.indentate(level) +\n      '<' +\n      key +\n      attrStr +\n      this.tagEndChar +\n      val +\n      //+ this.newLine\n      this.indentate(level) +\n      '</' +\n      key +\n      this.tagEndChar\n    );\n  }\n}\n\nfunction buildEmptyObjNode(val, key, attrStr, level) {\n  if (val !== '') {\n    return this.buildObjectNode(val, key, attrStr, level);\n  } else {\n    return this.indentate(level) + '<' + key + attrStr + '/' + this.tagEndChar;\n    //+ this.newLine\n  }\n}\n\nfunction buildTextValNode(val, key, attrStr, level) {\n  return (\n    this.indentate(level) +\n    '<' +\n    key +\n    attrStr +\n    '>' +\n    this.options.tagValueProcessor(val) +\n    '</' +\n    key +\n    this.tagEndChar\n  );\n}\n\nfunction buildEmptyTextNode(val, key, attrStr, level) {\n  if (val !== '') {\n    return this.buildTextValNode(val, key, attrStr, level);\n  } else {\n    return this.indentate(level) + '<' + key + attrStr + '/' + this.tagEndChar;\n  }\n}\n\nfunction indentate(level) {\n  return this.options.indentBy.repeat(level);\n}\n\nfunction isAttribute(name /*, options*/) {\n  if (name.startsWith(this.options.attributeNamePrefix)) {\n    return name.substr(this.attrPrefixLen);\n  } else {\n    return false;\n  }\n}\n\nfunction isCDATA(name) {\n  return name === this.options.cdataTagName;\n}\n\n//formatting\n//indentation\n//\\n after each closing or self closing tag\n\nmodule.exports = Parser;\n","'use strict';\n\nconst nodeToJson = require('./node2json');\nconst xmlToNodeobj = require('./xmlstr2xmlnode');\nconst x2xmlnode = require('./xmlstr2xmlnode');\nconst buildOptions = require('./util').buildOptions;\nconst validator = require('./validator');\n\nexports.parse = function(xmlData, options, validationOption) {\n  if( validationOption){\n    if(validationOption === true) validationOption = {}\n    \n    const result = validator.validate(xmlData, validationOption);\n    if (result !== true) {\n      throw Error( result.err.msg)\n    }\n  }\n  options = buildOptions(options, x2xmlnode.defaultOptions, x2xmlnode.props);\n  const traversableObj = xmlToNodeobj.getTraversalObj(xmlData, options)\n  //print(traversableObj, \"  \");\n  return nodeToJson.convertToJson(traversableObj, options);\n};\nexports.convertTonimn = require('../src/nimndata').convert2nimn;\nexports.getTraversalObj = xmlToNodeobj.getTraversalObj;\nexports.convertToJson = nodeToJson.convertToJson;\nexports.convertToJsonString = require('./node2json_str').convertToJsonString;\nexports.validate = validator.validate;\nexports.j2xParser = require('./json2xml');\nexports.parseToNimn = function(xmlData, schema, options) {\n  return exports.convertTonimn(exports.getTraversalObj(xmlData, options), schema, options);\n};\n\n\nfunction print(xmlNode, indentation){\n  if(xmlNode){\n    console.log(indentation + \"{\")\n    console.log(indentation + \"  \\\"tagName\\\": \\\"\" + xmlNode.tagname + \"\\\", \");\n    if(xmlNode.parent){\n      console.log(indentation + \"  \\\"parent\\\": \\\"\" + xmlNode.parent.tagname  + \"\\\", \");\n    }\n    console.log(indentation + \"  \\\"val\\\": \\\"\" + xmlNode.val  + \"\\\", \");\n    console.log(indentation + \"  \\\"attrs\\\": \" + JSON.stringify(xmlNode.attrsMap,null,4)  + \", \");\n\n    if(xmlNode.child){\n      console.log(indentation + \"\\\"child\\\": {\")\n      const indentation2 = indentation + indentation;\n      Object.keys(xmlNode.child).forEach( function(key) {\n        const node = xmlNode.child[key];\n\n        if(Array.isArray(node)){\n          console.log(indentation +  \"\\\"\"+key+\"\\\" :[\")\n          node.forEach( function(item,index) {\n            //console.log(indentation + \" \\\"\"+index+\"\\\" : [\")\n            print(item, indentation2);\n          })\n          console.log(indentation + \"],\")  \n        }else{\n          console.log(indentation + \" \\\"\"+key+\"\\\" : {\")\n          print(node, indentation2);\n          console.log(indentation + \"},\")  \n        }\n      });\n      console.log(indentation + \"},\")\n    }\n    console.log(indentation + \"},\")\n  }\n}","/*!\n\nJSZip v3.5.0 - A JavaScript class for generating and reading zip files\n<http://stuartk.com/jszip>\n\n(c) 2009-2016 Stuart Knightley <stuart [at] stuartk.com>\nDual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/master/LICENSE.markdown.\n\nJSZip uses the library pako released under the MIT license :\nhttps://github.com/nodeca/pako/blob/master/LICENSE\n*/\n\n!function(t){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=t();else if(\"function\"==typeof define&&define.amd)define([],t);else{(\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:this).JSZip=t()}}(function(){return function s(a,o,h){function u(r,t){if(!o[r]){if(!a[r]){var e=\"function\"==typeof require&&require;if(!t&&e)return e(r,!0);if(l)return l(r,!0);var i=new Error(\"Cannot find module '\"+r+\"'\");throw i.code=\"MODULE_NOT_FOUND\",i}var n=o[r]={exports:{}};a[r][0].call(n.exports,function(t){var e=a[r][1][t];return u(e||t)},n,n.exports,s,a,o,h)}return o[r].exports}for(var l=\"function\"==typeof require&&require,t=0;t<h.length;t++)u(h[t]);return u}({1:[function(t,e,r){\"use strict\";var c=t(\"./utils\"),d=t(\"./support\"),p=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";r.encode=function(t){for(var e,r,i,n,s,a,o,h=[],u=0,l=t.length,f=l,d=\"string\"!==c.getTypeOf(t);u<t.length;)f=l-u,i=d?(e=t[u++],r=u<l?t[u++]:0,u<l?t[u++]:0):(e=t.charCodeAt(u++),r=u<l?t.charCodeAt(u++):0,u<l?t.charCodeAt(u++):0),n=e>>2,s=(3&e)<<4|r>>4,a=1<f?(15&r)<<2|i>>6:64,o=2<f?63&i:64,h.push(p.charAt(n)+p.charAt(s)+p.charAt(a)+p.charAt(o));return h.join(\"\")},r.decode=function(t){var e,r,i,n,s,a,o=0,h=0,u=\"data:\";if(t.substr(0,u.length)===u)throw new Error(\"Invalid base64 input, it looks like a data url.\");var l,f=3*(t=t.replace(/[^A-Za-z0-9\\+\\/\\=]/g,\"\")).length/4;if(t.charAt(t.length-1)===p.charAt(64)&&f--,t.charAt(t.length-2)===p.charAt(64)&&f--,f%1!=0)throw new Error(\"Invalid base64 input, bad content length.\");for(l=d.uint8array?new Uint8Array(0|f):new Array(0|f);o<t.length;)e=p.indexOf(t.charAt(o++))<<2|(n=p.indexOf(t.charAt(o++)))>>4,r=(15&n)<<4|(s=p.indexOf(t.charAt(o++)))>>2,i=(3&s)<<6|(a=p.indexOf(t.charAt(o++))),l[h++]=e,64!==s&&(l[h++]=r),64!==a&&(l[h++]=i);return l}},{\"./support\":30,\"./utils\":32}],2:[function(t,e,r){\"use strict\";var i=t(\"./external\"),n=t(\"./stream/DataWorker\"),s=t(\"./stream/DataLengthProbe\"),a=t(\"./stream/Crc32Probe\");s=t(\"./stream/DataLengthProbe\");function o(t,e,r,i,n){this.compressedSize=t,this.uncompressedSize=e,this.crc32=r,this.compression=i,this.compressedContent=n}o.prototype={getContentWorker:function(){var t=new n(i.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new s(\"data_length\")),e=this;return t.on(\"end\",function(){if(this.streamInfo.data_length!==e.uncompressedSize)throw new Error(\"Bug : uncompressed data size mismatch\")}),t},getCompressedWorker:function(){return new n(i.Promise.resolve(this.compressedContent)).withStreamInfo(\"compressedSize\",this.compressedSize).withStreamInfo(\"uncompressedSize\",this.uncompressedSize).withStreamInfo(\"crc32\",this.crc32).withStreamInfo(\"compression\",this.compression)}},o.createWorkerFrom=function(t,e,r){return t.pipe(new a).pipe(new s(\"uncompressedSize\")).pipe(e.compressWorker(r)).pipe(new s(\"compressedSize\")).withStreamInfo(\"compression\",e)},e.exports=o},{\"./external\":6,\"./stream/Crc32Probe\":25,\"./stream/DataLengthProbe\":26,\"./stream/DataWorker\":27}],3:[function(t,e,r){\"use strict\";var i=t(\"./stream/GenericWorker\");r.STORE={magic:\"\\0\\0\",compressWorker:function(t){return new i(\"STORE compression\")},uncompressWorker:function(){return new i(\"STORE decompression\")}},r.DEFLATE=t(\"./flate\")},{\"./flate\":7,\"./stream/GenericWorker\":28}],4:[function(t,e,r){\"use strict\";var i=t(\"./utils\");var o=function(){for(var t,e=[],r=0;r<256;r++){t=r;for(var i=0;i<8;i++)t=1&t?3988292384^t>>>1:t>>>1;e[r]=t}return e}();e.exports=function(t,e){return void 0!==t&&t.length?\"string\"!==i.getTypeOf(t)?function(t,e,r,i){var n=o,s=i+r;t^=-1;for(var a=i;a<s;a++)t=t>>>8^n[255&(t^e[a])];return-1^t}(0|e,t,t.length,0):function(t,e,r,i){var n=o,s=i+r;t^=-1;for(var a=i;a<s;a++)t=t>>>8^n[255&(t^e.charCodeAt(a))];return-1^t}(0|e,t,t.length,0):0}},{\"./utils\":32}],5:[function(t,e,r){\"use strict\";r.base64=!1,r.binary=!1,r.dir=!1,r.createFolders=!0,r.date=null,r.compression=null,r.compressionOptions=null,r.comment=null,r.unixPermissions=null,r.dosPermissions=null},{}],6:[function(t,e,r){\"use strict\";var i=null;i=\"undefined\"!=typeof Promise?Promise:t(\"lie\"),e.exports={Promise:i}},{lie:37}],7:[function(t,e,r){\"use strict\";var i=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Uint32Array,n=t(\"pako\"),s=t(\"./utils\"),a=t(\"./stream/GenericWorker\"),o=i?\"uint8array\":\"array\";function h(t,e){a.call(this,\"FlateWorker/\"+t),this._pako=null,this._pakoAction=t,this._pakoOptions=e,this.meta={}}r.magic=\"\\b\\0\",s.inherits(h,a),h.prototype.processChunk=function(t){this.meta=t.meta,null===this._pako&&this._createPako(),this._pako.push(s.transformTo(o,t.data),!1)},h.prototype.flush=function(){a.prototype.flush.call(this),null===this._pako&&this._createPako(),this._pako.push([],!0)},h.prototype.cleanUp=function(){a.prototype.cleanUp.call(this),this._pako=null},h.prototype._createPako=function(){this._pako=new n[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var e=this;this._pako.onData=function(t){e.push({data:t,meta:e.meta})}},r.compressWorker=function(t){return new h(\"Deflate\",t)},r.uncompressWorker=function(){return new h(\"Inflate\",{})}},{\"./stream/GenericWorker\":28,\"./utils\":32,pako:38}],8:[function(t,e,r){\"use strict\";function A(t,e){var r,i=\"\";for(r=0;r<e;r++)i+=String.fromCharCode(255&t),t>>>=8;return i}function i(t,e,r,i,n,s){var a,o,h=t.file,u=t.compression,l=s!==O.utf8encode,f=I.transformTo(\"string\",s(h.name)),d=I.transformTo(\"string\",O.utf8encode(h.name)),c=h.comment,p=I.transformTo(\"string\",s(c)),m=I.transformTo(\"string\",O.utf8encode(c)),_=d.length!==h.name.length,g=m.length!==c.length,b=\"\",v=\"\",y=\"\",w=h.dir,k=h.date,x={crc32:0,compressedSize:0,uncompressedSize:0};e&&!r||(x.crc32=t.crc32,x.compressedSize=t.compressedSize,x.uncompressedSize=t.uncompressedSize);var S=0;e&&(S|=8),l||!_&&!g||(S|=2048);var z=0,C=0;w&&(z|=16),\"UNIX\"===n?(C=798,z|=function(t,e){var r=t;return t||(r=e?16893:33204),(65535&r)<<16}(h.unixPermissions,w)):(C=20,z|=function(t){return 63&(t||0)}(h.dosPermissions)),a=k.getUTCHours(),a<<=6,a|=k.getUTCMinutes(),a<<=5,a|=k.getUTCSeconds()/2,o=k.getUTCFullYear()-1980,o<<=4,o|=k.getUTCMonth()+1,o<<=5,o|=k.getUTCDate(),_&&(v=A(1,1)+A(B(f),4)+d,b+=\"up\"+A(v.length,2)+v),g&&(y=A(1,1)+A(B(p),4)+m,b+=\"uc\"+A(y.length,2)+y);var E=\"\";return E+=\"\\n\\0\",E+=A(S,2),E+=u.magic,E+=A(a,2),E+=A(o,2),E+=A(x.crc32,4),E+=A(x.compressedSize,4),E+=A(x.uncompressedSize,4),E+=A(f.length,2),E+=A(b.length,2),{fileRecord:R.LOCAL_FILE_HEADER+E+f+b,dirRecord:R.CENTRAL_FILE_HEADER+A(C,2)+E+A(p.length,2)+\"\\0\\0\\0\\0\"+A(z,4)+A(i,4)+f+b+p}}var I=t(\"../utils\"),n=t(\"../stream/GenericWorker\"),O=t(\"../utf8\"),B=t(\"../crc32\"),R=t(\"../signature\");function s(t,e,r,i){n.call(this,\"ZipFileWorker\"),this.bytesWritten=0,this.zipComment=e,this.zipPlatform=r,this.encodeFileName=i,this.streamFiles=t,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}I.inherits(s,n),s.prototype.push=function(t){var e=t.meta.percent||0,r=this.entriesCount,i=this._sources.length;this.accumulate?this.contentBuffer.push(t):(this.bytesWritten+=t.data.length,n.prototype.push.call(this,{data:t.data,meta:{currentFile:this.currentFile,percent:r?(e+100*(r-i-1))/r:100}}))},s.prototype.openedSource=function(t){this.currentSourceOffset=this.bytesWritten,this.currentFile=t.file.name;var e=this.streamFiles&&!t.file.dir;if(e){var r=i(t,e,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:r.fileRecord,meta:{percent:0}})}else this.accumulate=!0},s.prototype.closedSource=function(t){this.accumulate=!1;var e=this.streamFiles&&!t.file.dir,r=i(t,e,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(r.dirRecord),e)this.push({data:function(t){return R.DATA_DESCRIPTOR+A(t.crc32,4)+A(t.compressedSize,4)+A(t.uncompressedSize,4)}(t),meta:{percent:100}});else for(this.push({data:r.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},s.prototype.flush=function(){for(var t=this.bytesWritten,e=0;e<this.dirRecords.length;e++)this.push({data:this.dirRecords[e],meta:{percent:100}});var r=this.bytesWritten-t,i=function(t,e,r,i,n){var s=I.transformTo(\"string\",n(i));return R.CENTRAL_DIRECTORY_END+\"\\0\\0\\0\\0\"+A(t,2)+A(t,2)+A(e,4)+A(r,4)+A(s.length,2)+s}(this.dirRecords.length,r,t,this.zipComment,this.encodeFileName);this.push({data:i,meta:{percent:100}})},s.prototype.prepareNextSource=function(){this.previous=this._sources.shift(),this.openedSource(this.previous.streamInfo),this.isPaused?this.previous.pause():this.previous.resume()},s.prototype.registerPrevious=function(t){this._sources.push(t);var e=this;return t.on(\"data\",function(t){e.processChunk(t)}),t.on(\"end\",function(){e.closedSource(e.previous.streamInfo),e._sources.length?e.prepareNextSource():e.end()}),t.on(\"error\",function(t){e.error(t)}),this},s.prototype.resume=function(){return!!n.prototype.resume.call(this)&&(!this.previous&&this._sources.length?(this.prepareNextSource(),!0):this.previous||this._sources.length||this.generatedError?void 0:(this.end(),!0))},s.prototype.error=function(t){var e=this._sources;if(!n.prototype.error.call(this,t))return!1;for(var r=0;r<e.length;r++)try{e[r].error(t)}catch(t){}return!0},s.prototype.lock=function(){n.prototype.lock.call(this);for(var t=this._sources,e=0;e<t.length;e++)t[e].lock()},e.exports=s},{\"../crc32\":4,\"../signature\":23,\"../stream/GenericWorker\":28,\"../utf8\":31,\"../utils\":32}],9:[function(t,e,r){\"use strict\";var u=t(\"../compressions\"),i=t(\"./ZipFileWorker\");r.generateWorker=function(t,a,e){var o=new i(a.streamFiles,e,a.platform,a.encodeFileName),h=0;try{t.forEach(function(t,e){h++;var r=function(t,e){var r=t||e,i=u[r];if(!i)throw new Error(r+\" is not a valid compression method !\");return i}(e.options.compression,a.compression),i=e.options.compressionOptions||a.compressionOptions||{},n=e.dir,s=e.date;e._compressWorker(r,i).withStreamInfo(\"file\",{name:t,dir:n,date:s,comment:e.comment||\"\",unixPermissions:e.unixPermissions,dosPermissions:e.dosPermissions}).pipe(o)}),o.entriesCount=h}catch(t){o.error(t)}return o}},{\"../compressions\":3,\"./ZipFileWorker\":8}],10:[function(t,e,r){\"use strict\";function i(){if(!(this instanceof i))return new i;if(arguments.length)throw new Error(\"The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.\");this.files={},this.comment=null,this.root=\"\",this.clone=function(){var t=new i;for(var e in this)\"function\"!=typeof this[e]&&(t[e]=this[e]);return t}}(i.prototype=t(\"./object\")).loadAsync=t(\"./load\"),i.support=t(\"./support\"),i.defaults=t(\"./defaults\"),i.version=\"3.5.0\",i.loadAsync=function(t,e){return(new i).loadAsync(t,e)},i.external=t(\"./external\"),e.exports=i},{\"./defaults\":5,\"./external\":6,\"./load\":11,\"./object\":15,\"./support\":30}],11:[function(t,e,r){\"use strict\";var i=t(\"./utils\"),n=t(\"./external\"),o=t(\"./utf8\"),h=(i=t(\"./utils\"),t(\"./zipEntries\")),s=t(\"./stream/Crc32Probe\"),u=t(\"./nodejsUtils\");function l(i){return new n.Promise(function(t,e){var r=i.decompressed.getContentWorker().pipe(new s);r.on(\"error\",function(t){e(t)}).on(\"end\",function(){r.streamInfo.crc32!==i.decompressed.crc32?e(new Error(\"Corrupted zip : CRC32 mismatch\")):t()}).resume()})}e.exports=function(t,s){var a=this;return s=i.extend(s||{},{base64:!1,checkCRC32:!1,optimizedBinaryString:!1,createFolders:!1,decodeFileName:o.utf8decode}),u.isNode&&u.isStream(t)?n.Promise.reject(new Error(\"JSZip can't accept a stream when loading a zip file.\")):i.prepareContent(\"the loaded zip file\",t,!0,s.optimizedBinaryString,s.base64).then(function(t){var e=new h(s);return e.load(t),e}).then(function(t){var e=[n.Promise.resolve(t)],r=t.files;if(s.checkCRC32)for(var i=0;i<r.length;i++)e.push(l(r[i]));return n.Promise.all(e)}).then(function(t){for(var e=t.shift(),r=e.files,i=0;i<r.length;i++){var n=r[i];a.file(n.fileNameStr,n.decompressed,{binary:!0,optimizedBinaryString:!0,date:n.date,dir:n.dir,comment:n.fileCommentStr.length?n.fileCommentStr:null,unixPermissions:n.unixPermissions,dosPermissions:n.dosPermissions,createFolders:s.createFolders})}return e.zipComment.length&&(a.comment=e.zipComment),a})}},{\"./external\":6,\"./nodejsUtils\":14,\"./stream/Crc32Probe\":25,\"./utf8\":31,\"./utils\":32,\"./zipEntries\":33}],12:[function(t,e,r){\"use strict\";var i=t(\"../utils\"),n=t(\"../stream/GenericWorker\");function s(t,e){n.call(this,\"Nodejs stream input adapter for \"+t),this._upstreamEnded=!1,this._bindStream(e)}i.inherits(s,n),s.prototype._bindStream=function(t){var e=this;(this._stream=t).pause(),t.on(\"data\",function(t){e.push({data:t,meta:{percent:0}})}).on(\"error\",function(t){e.isPaused?this.generatedError=t:e.error(t)}).on(\"end\",function(){e.isPaused?e._upstreamEnded=!0:e.end()})},s.prototype.pause=function(){return!!n.prototype.pause.call(this)&&(this._stream.pause(),!0)},s.prototype.resume=function(){return!!n.prototype.resume.call(this)&&(this._upstreamEnded?this.end():this._stream.resume(),!0)},e.exports=s},{\"../stream/GenericWorker\":28,\"../utils\":32}],13:[function(t,e,r){\"use strict\";var n=t(\"readable-stream\").Readable;function i(t,e,r){n.call(this,e),this._helper=t;var i=this;t.on(\"data\",function(t,e){i.push(t)||i._helper.pause(),r&&r(e)}).on(\"error\",function(t){i.emit(\"error\",t)}).on(\"end\",function(){i.push(null)})}t(\"../utils\").inherits(i,n),i.prototype._read=function(){this._helper.resume()},e.exports=i},{\"../utils\":32,\"readable-stream\":16}],14:[function(t,e,r){\"use strict\";e.exports={isNode:\"undefined\"!=typeof Buffer,newBufferFrom:function(t,e){if(Buffer.from&&Buffer.from!==Uint8Array.from)return Buffer.from(t,e);if(\"number\"==typeof t)throw new Error('The \"data\" argument must not be a number');return new Buffer(t,e)},allocBuffer:function(t){if(Buffer.alloc)return Buffer.alloc(t);var e=new Buffer(t);return e.fill(0),e},isBuffer:function(t){return Buffer.isBuffer(t)},isStream:function(t){return t&&\"function\"==typeof t.on&&\"function\"==typeof t.pause&&\"function\"==typeof t.resume}}},{}],15:[function(t,e,r){\"use strict\";function s(t,e,r){var i,n=u.getTypeOf(e),s=u.extend(r||{},f);s.date=s.date||new Date,null!==s.compression&&(s.compression=s.compression.toUpperCase()),\"string\"==typeof s.unixPermissions&&(s.unixPermissions=parseInt(s.unixPermissions,8)),s.unixPermissions&&16384&s.unixPermissions&&(s.dir=!0),s.dosPermissions&&16&s.dosPermissions&&(s.dir=!0),s.dir&&(t=g(t)),s.createFolders&&(i=_(t))&&b.call(this,i,!0);var a=\"string\"===n&&!1===s.binary&&!1===s.base64;r&&void 0!==r.binary||(s.binary=!a),(e instanceof d&&0===e.uncompressedSize||s.dir||!e||0===e.length)&&(s.base64=!1,s.binary=!0,e=\"\",s.compression=\"STORE\",n=\"string\");var o=null;o=e instanceof d||e instanceof l?e:p.isNode&&p.isStream(e)?new m(t,e):u.prepareContent(t,e,s.binary,s.optimizedBinaryString,s.base64);var h=new c(t,o,s);this.files[t]=h}var n=t(\"./utf8\"),u=t(\"./utils\"),l=t(\"./stream/GenericWorker\"),a=t(\"./stream/StreamHelper\"),f=t(\"./defaults\"),d=t(\"./compressedObject\"),c=t(\"./zipObject\"),o=t(\"./generate\"),p=t(\"./nodejsUtils\"),m=t(\"./nodejs/NodejsStreamInputAdapter\"),_=function(t){\"/\"===t.slice(-1)&&(t=t.substring(0,t.length-1));var e=t.lastIndexOf(\"/\");return 0<e?t.substring(0,e):\"\"},g=function(t){return\"/\"!==t.slice(-1)&&(t+=\"/\"),t},b=function(t,e){return e=void 0!==e?e:f.createFolders,t=g(t),this.files[t]||s.call(this,t,null,{dir:!0,createFolders:e}),this.files[t]};function h(t){return\"[object RegExp]\"===Object.prototype.toString.call(t)}var i={load:function(){throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\")},forEach:function(t){var e,r,i;for(e in this.files)this.files.hasOwnProperty(e)&&(i=this.files[e],(r=e.slice(this.root.length,e.length))&&e.slice(0,this.root.length)===this.root&&t(r,i))},filter:function(r){var i=[];return this.forEach(function(t,e){r(t,e)&&i.push(e)}),i},file:function(t,e,r){if(1!==arguments.length)return t=this.root+t,s.call(this,t,e,r),this;if(h(t)){var i=t;return this.filter(function(t,e){return!e.dir&&i.test(t)})}var n=this.files[this.root+t];return n&&!n.dir?n:null},folder:function(r){if(!r)return this;if(h(r))return this.filter(function(t,e){return e.dir&&r.test(t)});var t=this.root+r,e=b.call(this,t),i=this.clone();return i.root=e.name,i},remove:function(r){r=this.root+r;var t=this.files[r];if(t||(\"/\"!==r.slice(-1)&&(r+=\"/\"),t=this.files[r]),t&&!t.dir)delete this.files[r];else for(var e=this.filter(function(t,e){return e.name.slice(0,r.length)===r}),i=0;i<e.length;i++)delete this.files[e[i].name];return this},generate:function(t){throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\")},generateInternalStream:function(t){var e,r={};try{if((r=u.extend(t||{},{streamFiles:!1,compression:\"STORE\",compressionOptions:null,type:\"\",platform:\"DOS\",comment:null,mimeType:\"application/zip\",encodeFileName:n.utf8encode})).type=r.type.toLowerCase(),r.compression=r.compression.toUpperCase(),\"binarystring\"===r.type&&(r.type=\"string\"),!r.type)throw new Error(\"No output type specified.\");u.checkSupport(r.type),\"darwin\"!==r.platform&&\"freebsd\"!==r.platform&&\"linux\"!==r.platform&&\"sunos\"!==r.platform||(r.platform=\"UNIX\"),\"win32\"===r.platform&&(r.platform=\"DOS\");var i=r.comment||this.comment||\"\";e=o.generateWorker(this,r,i)}catch(t){(e=new l(\"error\")).error(t)}return new a(e,r.type||\"string\",r.mimeType)},generateAsync:function(t,e){return this.generateInternalStream(t).accumulate(e)},generateNodeStream:function(t,e){return(t=t||{}).type||(t.type=\"nodebuffer\"),this.generateInternalStream(t).toNodejsStream(e)}};e.exports=i},{\"./compressedObject\":2,\"./defaults\":5,\"./generate\":9,\"./nodejs/NodejsStreamInputAdapter\":12,\"./nodejsUtils\":14,\"./stream/GenericWorker\":28,\"./stream/StreamHelper\":29,\"./utf8\":31,\"./utils\":32,\"./zipObject\":35}],16:[function(t,e,r){e.exports=t(\"stream\")},{stream:void 0}],17:[function(t,e,r){\"use strict\";var i=t(\"./DataReader\");function n(t){i.call(this,t);for(var e=0;e<this.data.length;e++)t[e]=255&t[e]}t(\"../utils\").inherits(n,i),n.prototype.byteAt=function(t){return this.data[this.zero+t]},n.prototype.lastIndexOfSignature=function(t){for(var e=t.charCodeAt(0),r=t.charCodeAt(1),i=t.charCodeAt(2),n=t.charCodeAt(3),s=this.length-4;0<=s;--s)if(this.data[s]===e&&this.data[s+1]===r&&this.data[s+2]===i&&this.data[s+3]===n)return s-this.zero;return-1},n.prototype.readAndCheckSignature=function(t){var e=t.charCodeAt(0),r=t.charCodeAt(1),i=t.charCodeAt(2),n=t.charCodeAt(3),s=this.readData(4);return e===s[0]&&r===s[1]&&i===s[2]&&n===s[3]},n.prototype.readData=function(t){if(this.checkOffset(t),0===t)return[];var e=this.data.slice(this.zero+this.index,this.zero+this.index+t);return this.index+=t,e},e.exports=n},{\"../utils\":32,\"./DataReader\":18}],18:[function(t,e,r){\"use strict\";var i=t(\"../utils\");function n(t){this.data=t,this.length=t.length,this.index=0,this.zero=0}n.prototype={checkOffset:function(t){this.checkIndex(this.index+t)},checkIndex:function(t){if(this.length<this.zero+t||t<0)throw new Error(\"End of data reached (data length = \"+this.length+\", asked index = \"+t+\"). Corrupted zip ?\")},setIndex:function(t){this.checkIndex(t),this.index=t},skip:function(t){this.setIndex(this.index+t)},byteAt:function(t){},readInt:function(t){var e,r=0;for(this.checkOffset(t),e=this.index+t-1;e>=this.index;e--)r=(r<<8)+this.byteAt(e);return this.index+=t,r},readString:function(t){return i.transformTo(\"string\",this.readData(t))},readData:function(t){},lastIndexOfSignature:function(t){},readAndCheckSignature:function(t){},readDate:function(){var t=this.readInt(4);return new Date(Date.UTC(1980+(t>>25&127),(t>>21&15)-1,t>>16&31,t>>11&31,t>>5&63,(31&t)<<1))}},e.exports=n},{\"../utils\":32}],19:[function(t,e,r){\"use strict\";var i=t(\"./Uint8ArrayReader\");function n(t){i.call(this,t)}t(\"../utils\").inherits(n,i),n.prototype.readData=function(t){this.checkOffset(t);var e=this.data.slice(this.zero+this.index,this.zero+this.index+t);return this.index+=t,e},e.exports=n},{\"../utils\":32,\"./Uint8ArrayReader\":21}],20:[function(t,e,r){\"use strict\";var i=t(\"./DataReader\");function n(t){i.call(this,t)}t(\"../utils\").inherits(n,i),n.prototype.byteAt=function(t){return this.data.charCodeAt(this.zero+t)},n.prototype.lastIndexOfSignature=function(t){return this.data.lastIndexOf(t)-this.zero},n.prototype.readAndCheckSignature=function(t){return t===this.readData(4)},n.prototype.readData=function(t){this.checkOffset(t);var e=this.data.slice(this.zero+this.index,this.zero+this.index+t);return this.index+=t,e},e.exports=n},{\"../utils\":32,\"./DataReader\":18}],21:[function(t,e,r){\"use strict\";var i=t(\"./ArrayReader\");function n(t){i.call(this,t)}t(\"../utils\").inherits(n,i),n.prototype.readData=function(t){if(this.checkOffset(t),0===t)return new Uint8Array(0);var e=this.data.subarray(this.zero+this.index,this.zero+this.index+t);return this.index+=t,e},e.exports=n},{\"../utils\":32,\"./ArrayReader\":17}],22:[function(t,e,r){\"use strict\";var i=t(\"../utils\"),n=t(\"../support\"),s=t(\"./ArrayReader\"),a=t(\"./StringReader\"),o=t(\"./NodeBufferReader\"),h=t(\"./Uint8ArrayReader\");e.exports=function(t){var e=i.getTypeOf(t);return i.checkSupport(e),\"string\"!==e||n.uint8array?\"nodebuffer\"===e?new o(t):n.uint8array?new h(i.transformTo(\"uint8array\",t)):new s(i.transformTo(\"array\",t)):new a(t)}},{\"../support\":30,\"../utils\":32,\"./ArrayReader\":17,\"./NodeBufferReader\":19,\"./StringReader\":20,\"./Uint8ArrayReader\":21}],23:[function(t,e,r){\"use strict\";r.LOCAL_FILE_HEADER=\"PK\u0003\u0004\",r.CENTRAL_FILE_HEADER=\"PK\u0001\u0002\",r.CENTRAL_DIRECTORY_END=\"PK\u0005\u0006\",r.ZIP64_CENTRAL_DIRECTORY_LOCATOR=\"PK\u0006\u0007\",r.ZIP64_CENTRAL_DIRECTORY_END=\"PK\u0006\u0006\",r.DATA_DESCRIPTOR=\"PK\u0007\\b\"},{}],24:[function(t,e,r){\"use strict\";var i=t(\"./GenericWorker\"),n=t(\"../utils\");function s(t){i.call(this,\"ConvertWorker to \"+t),this.destType=t}n.inherits(s,i),s.prototype.processChunk=function(t){this.push({data:n.transformTo(this.destType,t.data),meta:t.meta})},e.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],25:[function(t,e,r){\"use strict\";var i=t(\"./GenericWorker\"),n=t(\"../crc32\");function s(){i.call(this,\"Crc32Probe\"),this.withStreamInfo(\"crc32\",0)}t(\"../utils\").inherits(s,i),s.prototype.processChunk=function(t){this.streamInfo.crc32=n(t.data,this.streamInfo.crc32||0),this.push(t)},e.exports=s},{\"../crc32\":4,\"../utils\":32,\"./GenericWorker\":28}],26:[function(t,e,r){\"use strict\";var i=t(\"../utils\"),n=t(\"./GenericWorker\");function s(t){n.call(this,\"DataLengthProbe for \"+t),this.propName=t,this.withStreamInfo(t,0)}i.inherits(s,n),s.prototype.processChunk=function(t){if(t){var e=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=e+t.data.length}n.prototype.processChunk.call(this,t)},e.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],27:[function(t,e,r){\"use strict\";var i=t(\"../utils\"),n=t(\"./GenericWorker\");function s(t){n.call(this,\"DataWorker\");var e=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type=\"\",this._tickScheduled=!1,t.then(function(t){e.dataIsReady=!0,e.data=t,e.max=t&&t.length||0,e.type=i.getTypeOf(t),e.isPaused||e._tickAndRepeat()},function(t){e.error(t)})}i.inherits(s,n),s.prototype.cleanUp=function(){n.prototype.cleanUp.call(this),this.data=null},s.prototype.resume=function(){return!!n.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,i.delay(this._tickAndRepeat,[],this)),!0)},s.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(i.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},s.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var t=null,e=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case\"string\":t=this.data.substring(this.index,e);break;case\"uint8array\":t=this.data.subarray(this.index,e);break;case\"array\":case\"nodebuffer\":t=this.data.slice(this.index,e)}return this.index=e,this.push({data:t,meta:{percent:this.max?this.index/this.max*100:0}})},e.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],28:[function(t,e,r){\"use strict\";function i(t){this.name=t||\"default\",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}i.prototype={push:function(t){this.emit(\"data\",t)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit(\"end\"),this.cleanUp(),this.isFinished=!0}catch(t){this.emit(\"error\",t)}return!0},error:function(t){return!this.isFinished&&(this.isPaused?this.generatedError=t:(this.isFinished=!0,this.emit(\"error\",t),this.previous&&this.previous.error(t),this.cleanUp()),!0)},on:function(t,e){return this._listeners[t].push(e),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(t,e){if(this._listeners[t])for(var r=0;r<this._listeners[t].length;r++)this._listeners[t][r].call(this,e)},pipe:function(t){return t.registerPrevious(this)},registerPrevious:function(t){if(this.isLocked)throw new Error(\"The stream '\"+this+\"' has already been used.\");this.streamInfo=t.streamInfo,this.mergeStreamInfo(),this.previous=t;var e=this;return t.on(\"data\",function(t){e.processChunk(t)}),t.on(\"end\",function(){e.end()}),t.on(\"error\",function(t){e.error(t)}),this},pause:function(){return!this.isPaused&&!this.isFinished&&(this.isPaused=!0,this.previous&&this.previous.pause(),!0)},resume:function(){if(!this.isPaused||this.isFinished)return!1;var t=this.isPaused=!1;return this.generatedError&&(this.error(this.generatedError),t=!0),this.previous&&this.previous.resume(),!t},flush:function(){},processChunk:function(t){this.push(t)},withStreamInfo:function(t,e){return this.extraStreamInfo[t]=e,this.mergeStreamInfo(),this},mergeStreamInfo:function(){for(var t in this.extraStreamInfo)this.extraStreamInfo.hasOwnProperty(t)&&(this.streamInfo[t]=this.extraStreamInfo[t])},lock:function(){if(this.isLocked)throw new Error(\"The stream '\"+this+\"' has already been used.\");this.isLocked=!0,this.previous&&this.previous.lock()},toString:function(){var t=\"Worker \"+this.name;return this.previous?this.previous+\" -> \"+t:t}},e.exports=i},{}],29:[function(t,e,r){\"use strict\";var h=t(\"../utils\"),n=t(\"./ConvertWorker\"),s=t(\"./GenericWorker\"),u=t(\"../base64\"),i=t(\"../support\"),a=t(\"../external\"),o=null;if(i.nodestream)try{o=t(\"../nodejs/NodejsStreamOutputAdapter\")}catch(t){}function l(t,o){return new a.Promise(function(e,r){var i=[],n=t._internalType,s=t._outputType,a=t._mimeType;t.on(\"data\",function(t,e){i.push(t),o&&o(e)}).on(\"error\",function(t){i=[],r(t)}).on(\"end\",function(){try{var t=function(t,e,r){switch(t){case\"blob\":return h.newBlob(h.transformTo(\"arraybuffer\",e),r);case\"base64\":return u.encode(e);default:return h.transformTo(t,e)}}(s,function(t,e){var r,i=0,n=null,s=0;for(r=0;r<e.length;r++)s+=e[r].length;switch(t){case\"string\":return e.join(\"\");case\"array\":return Array.prototype.concat.apply([],e);case\"uint8array\":for(n=new Uint8Array(s),r=0;r<e.length;r++)n.set(e[r],i),i+=e[r].length;return n;case\"nodebuffer\":return Buffer.concat(e);default:throw new Error(\"concat : unsupported type '\"+t+\"'\")}}(n,i),a);e(t)}catch(t){r(t)}i=[]}).resume()})}function f(t,e,r){var i=e;switch(e){case\"blob\":case\"arraybuffer\":i=\"uint8array\";break;case\"base64\":i=\"string\"}try{this._internalType=i,this._outputType=e,this._mimeType=r,h.checkSupport(i),this._worker=t.pipe(new n(i)),t.lock()}catch(t){this._worker=new s(\"error\"),this._worker.error(t)}}f.prototype={accumulate:function(t){return l(this,t)},on:function(t,e){var r=this;return\"data\"===t?this._worker.on(t,function(t){e.call(r,t.data,t.meta)}):this._worker.on(t,function(){h.delay(e,arguments,r)}),this},resume:function(){return h.delay(this._worker.resume,[],this._worker),this},pause:function(){return this._worker.pause(),this},toNodejsStream:function(t){if(h.checkSupport(\"nodestream\"),\"nodebuffer\"!==this._outputType)throw new Error(this._outputType+\" is not supported by this method\");return new o(this,{objectMode:\"nodebuffer\"!==this._outputType},t)}},e.exports=f},{\"../base64\":1,\"../external\":6,\"../nodejs/NodejsStreamOutputAdapter\":13,\"../support\":30,\"../utils\":32,\"./ConvertWorker\":24,\"./GenericWorker\":28}],30:[function(t,e,r){\"use strict\";if(r.base64=!0,r.array=!0,r.string=!0,r.arraybuffer=\"undefined\"!=typeof ArrayBuffer&&\"undefined\"!=typeof Uint8Array,r.nodebuffer=\"undefined\"!=typeof Buffer,r.uint8array=\"undefined\"!=typeof Uint8Array,\"undefined\"==typeof ArrayBuffer)r.blob=!1;else{var i=new ArrayBuffer(0);try{r.blob=0===new Blob([i],{type:\"application/zip\"}).size}catch(t){try{var n=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);n.append(i),r.blob=0===n.getBlob(\"application/zip\").size}catch(t){r.blob=!1}}}try{r.nodestream=!!t(\"readable-stream\").Readable}catch(t){r.nodestream=!1}},{\"readable-stream\":16}],31:[function(t,e,s){\"use strict\";for(var o=t(\"./utils\"),h=t(\"./support\"),r=t(\"./nodejsUtils\"),i=t(\"./stream/GenericWorker\"),u=new Array(256),n=0;n<256;n++)u[n]=252<=n?6:248<=n?5:240<=n?4:224<=n?3:192<=n?2:1;u[254]=u[254]=1;function a(){i.call(this,\"utf-8 decode\"),this.leftOver=null}function l(){i.call(this,\"utf-8 encode\")}s.utf8encode=function(t){return h.nodebuffer?r.newBufferFrom(t,\"utf-8\"):function(t){var e,r,i,n,s,a=t.length,o=0;for(n=0;n<a;n++)55296==(64512&(r=t.charCodeAt(n)))&&n+1<a&&56320==(64512&(i=t.charCodeAt(n+1)))&&(r=65536+(r-55296<<10)+(i-56320),n++),o+=r<128?1:r<2048?2:r<65536?3:4;for(e=h.uint8array?new Uint8Array(o):new Array(o),n=s=0;s<o;n++)55296==(64512&(r=t.charCodeAt(n)))&&n+1<a&&56320==(64512&(i=t.charCodeAt(n+1)))&&(r=65536+(r-55296<<10)+(i-56320),n++),r<128?e[s++]=r:(r<2048?e[s++]=192|r>>>6:(r<65536?e[s++]=224|r>>>12:(e[s++]=240|r>>>18,e[s++]=128|r>>>12&63),e[s++]=128|r>>>6&63),e[s++]=128|63&r);return e}(t)},s.utf8decode=function(t){return h.nodebuffer?o.transformTo(\"nodebuffer\",t).toString(\"utf-8\"):function(t){var e,r,i,n,s=t.length,a=new Array(2*s);for(e=r=0;e<s;)if((i=t[e++])<128)a[r++]=i;else if(4<(n=u[i]))a[r++]=65533,e+=n-1;else{for(i&=2===n?31:3===n?15:7;1<n&&e<s;)i=i<<6|63&t[e++],n--;1<n?a[r++]=65533:i<65536?a[r++]=i:(i-=65536,a[r++]=55296|i>>10&1023,a[r++]=56320|1023&i)}return a.length!==r&&(a.subarray?a=a.subarray(0,r):a.length=r),o.applyFromCharCode(a)}(t=o.transformTo(h.uint8array?\"uint8array\":\"array\",t))},o.inherits(a,i),a.prototype.processChunk=function(t){var e=o.transformTo(h.uint8array?\"uint8array\":\"array\",t.data);if(this.leftOver&&this.leftOver.length){if(h.uint8array){var r=e;(e=new Uint8Array(r.length+this.leftOver.length)).set(this.leftOver,0),e.set(r,this.leftOver.length)}else e=this.leftOver.concat(e);this.leftOver=null}var i=function(t,e){var r;for((e=e||t.length)>t.length&&(e=t.length),r=e-1;0<=r&&128==(192&t[r]);)r--;return r<0?e:0===r?e:r+u[t[r]]>e?r:e}(e),n=e;i!==e.length&&(h.uint8array?(n=e.subarray(0,i),this.leftOver=e.subarray(i,e.length)):(n=e.slice(0,i),this.leftOver=e.slice(i,e.length))),this.push({data:s.utf8decode(n),meta:t.meta})},a.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:s.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},s.Utf8DecodeWorker=a,o.inherits(l,i),l.prototype.processChunk=function(t){this.push({data:s.utf8encode(t.data),meta:t.meta})},s.Utf8EncodeWorker=l},{\"./nodejsUtils\":14,\"./stream/GenericWorker\":28,\"./support\":30,\"./utils\":32}],32:[function(t,e,a){\"use strict\";var o=t(\"./support\"),h=t(\"./base64\"),r=t(\"./nodejsUtils\"),i=t(\"set-immediate-shim\"),u=t(\"./external\");function n(t){return t}function l(t,e){for(var r=0;r<t.length;++r)e[r]=255&t.charCodeAt(r);return e}a.newBlob=function(e,r){a.checkSupport(\"blob\");try{return new Blob([e],{type:r})}catch(t){try{var i=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);return i.append(e),i.getBlob(r)}catch(t){throw new Error(\"Bug : can't construct the Blob.\")}}};var s={stringifyByChunk:function(t,e,r){var i=[],n=0,s=t.length;if(s<=r)return String.fromCharCode.apply(null,t);for(;n<s;)\"array\"===e||\"nodebuffer\"===e?i.push(String.fromCharCode.apply(null,t.slice(n,Math.min(n+r,s)))):i.push(String.fromCharCode.apply(null,t.subarray(n,Math.min(n+r,s)))),n+=r;return i.join(\"\")},stringifyByChar:function(t){for(var e=\"\",r=0;r<t.length;r++)e+=String.fromCharCode(t[r]);return e},applyCanBeUsed:{uint8array:function(){try{return o.uint8array&&1===String.fromCharCode.apply(null,new Uint8Array(1)).length}catch(t){return!1}}(),nodebuffer:function(){try{return o.nodebuffer&&1===String.fromCharCode.apply(null,r.allocBuffer(1)).length}catch(t){return!1}}()}};function f(t){var e=65536,r=a.getTypeOf(t),i=!0;if(\"uint8array\"===r?i=s.applyCanBeUsed.uint8array:\"nodebuffer\"===r&&(i=s.applyCanBeUsed.nodebuffer),i)for(;1<e;)try{return s.stringifyByChunk(t,r,e)}catch(t){e=Math.floor(e/2)}return s.stringifyByChar(t)}function d(t,e){for(var r=0;r<t.length;r++)e[r]=t[r];return e}a.applyFromCharCode=f;var c={};c.string={string:n,array:function(t){return l(t,new Array(t.length))},arraybuffer:function(t){return c.string.uint8array(t).buffer},uint8array:function(t){return l(t,new Uint8Array(t.length))},nodebuffer:function(t){return l(t,r.allocBuffer(t.length))}},c.array={string:f,array:n,arraybuffer:function(t){return new Uint8Array(t).buffer},uint8array:function(t){return new Uint8Array(t)},nodebuffer:function(t){return r.newBufferFrom(t)}},c.arraybuffer={string:function(t){return f(new Uint8Array(t))},array:function(t){return d(new Uint8Array(t),new Array(t.byteLength))},arraybuffer:n,uint8array:function(t){return new Uint8Array(t)},nodebuffer:function(t){return r.newBufferFrom(new Uint8Array(t))}},c.uint8array={string:f,array:function(t){return d(t,new Array(t.length))},arraybuffer:function(t){return t.buffer},uint8array:n,nodebuffer:function(t){return r.newBufferFrom(t)}},c.nodebuffer={string:f,array:function(t){return d(t,new Array(t.length))},arraybuffer:function(t){return c.nodebuffer.uint8array(t).buffer},uint8array:function(t){return d(t,new Uint8Array(t.length))},nodebuffer:n},a.transformTo=function(t,e){if(e=e||\"\",!t)return e;a.checkSupport(t);var r=a.getTypeOf(e);return c[r][t](e)},a.getTypeOf=function(t){return\"string\"==typeof t?\"string\":\"[object Array]\"===Object.prototype.toString.call(t)?\"array\":o.nodebuffer&&r.isBuffer(t)?\"nodebuffer\":o.uint8array&&t instanceof Uint8Array?\"uint8array\":o.arraybuffer&&t instanceof ArrayBuffer?\"arraybuffer\":void 0},a.checkSupport=function(t){if(!o[t.toLowerCase()])throw new Error(t+\" is not supported by this platform\")},a.MAX_VALUE_16BITS=65535,a.MAX_VALUE_32BITS=-1,a.pretty=function(t){var e,r,i=\"\";for(r=0;r<(t||\"\").length;r++)i+=\"\\\\x\"+((e=t.charCodeAt(r))<16?\"0\":\"\")+e.toString(16).toUpperCase();return i},a.delay=function(t,e,r){i(function(){t.apply(r||null,e||[])})},a.inherits=function(t,e){function r(){}r.prototype=e.prototype,t.prototype=new r},a.extend=function(){var t,e,r={};for(t=0;t<arguments.length;t++)for(e in arguments[t])arguments[t].hasOwnProperty(e)&&void 0===r[e]&&(r[e]=arguments[t][e]);return r},a.prepareContent=function(r,t,i,n,s){return u.Promise.resolve(t).then(function(i){return o.blob&&(i instanceof Blob||-1!==[\"[object File]\",\"[object Blob]\"].indexOf(Object.prototype.toString.call(i)))&&\"undefined\"!=typeof FileReader?new u.Promise(function(e,r){var t=new FileReader;t.onload=function(t){e(t.target.result)},t.onerror=function(t){r(t.target.error)},t.readAsArrayBuffer(i)}):i}).then(function(t){var e=a.getTypeOf(t);return e?(\"arraybuffer\"===e?t=a.transformTo(\"uint8array\",t):\"string\"===e&&(s?t=h.decode(t):i&&!0!==n&&(t=function(t){return l(t,o.uint8array?new Uint8Array(t.length):new Array(t.length))}(t))),t):u.Promise.reject(new Error(\"Can't read the data of '\"+r+\"'. Is it in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?\"))})}},{\"./base64\":1,\"./external\":6,\"./nodejsUtils\":14,\"./support\":30,\"set-immediate-shim\":54}],33:[function(t,e,r){\"use strict\";var i=t(\"./reader/readerFor\"),n=t(\"./utils\"),s=t(\"./signature\"),a=t(\"./zipEntry\"),o=(t(\"./utf8\"),t(\"./support\"));function h(t){this.files=[],this.loadOptions=t}h.prototype={checkSignature:function(t){if(!this.reader.readAndCheckSignature(t)){this.reader.index-=4;var e=this.reader.readString(4);throw new Error(\"Corrupted zip or bug: unexpected signature (\"+n.pretty(e)+\", expected \"+n.pretty(t)+\")\")}},isSignature:function(t,e){var r=this.reader.index;this.reader.setIndex(t);var i=this.reader.readString(4)===e;return this.reader.setIndex(r),i},readBlockEndOfCentral:function(){this.diskNumber=this.reader.readInt(2),this.diskWithCentralDirStart=this.reader.readInt(2),this.centralDirRecordsOnThisDisk=this.reader.readInt(2),this.centralDirRecords=this.reader.readInt(2),this.centralDirSize=this.reader.readInt(4),this.centralDirOffset=this.reader.readInt(4),this.zipCommentLength=this.reader.readInt(2);var t=this.reader.readData(this.zipCommentLength),e=o.uint8array?\"uint8array\":\"array\",r=n.transformTo(e,t);this.zipComment=this.loadOptions.decodeFileName(r)},readBlockZip64EndOfCentral:function(){this.zip64EndOfCentralSize=this.reader.readInt(8),this.reader.skip(4),this.diskNumber=this.reader.readInt(4),this.diskWithCentralDirStart=this.reader.readInt(4),this.centralDirRecordsOnThisDisk=this.reader.readInt(8),this.centralDirRecords=this.reader.readInt(8),this.centralDirSize=this.reader.readInt(8),this.centralDirOffset=this.reader.readInt(8),this.zip64ExtensibleData={};for(var t,e,r,i=this.zip64EndOfCentralSize-44;0<i;)t=this.reader.readInt(2),e=this.reader.readInt(4),r=this.reader.readData(e),this.zip64ExtensibleData[t]={id:t,length:e,value:r}},readBlockZip64EndOfCentralLocator:function(){if(this.diskWithZip64CentralDirStart=this.reader.readInt(4),this.relativeOffsetEndOfZip64CentralDir=this.reader.readInt(8),this.disksCount=this.reader.readInt(4),1<this.disksCount)throw new Error(\"Multi-volumes zip are not supported\")},readLocalFiles:function(){var t,e;for(t=0;t<this.files.length;t++)e=this.files[t],this.reader.setIndex(e.localHeaderOffset),this.checkSignature(s.LOCAL_FILE_HEADER),e.readLocalPart(this.reader),e.handleUTF8(),e.processAttributes()},readCentralDir:function(){var t;for(this.reader.setIndex(this.centralDirOffset);this.reader.readAndCheckSignature(s.CENTRAL_FILE_HEADER);)(t=new a({zip64:this.zip64},this.loadOptions)).readCentralPart(this.reader),this.files.push(t);if(this.centralDirRecords!==this.files.length&&0!==this.centralDirRecords&&0===this.files.length)throw new Error(\"Corrupted zip or bug: expected \"+this.centralDirRecords+\" records in central dir, got \"+this.files.length)},readEndOfCentral:function(){var t=this.reader.lastIndexOfSignature(s.CENTRAL_DIRECTORY_END);if(t<0)throw!this.isSignature(0,s.LOCAL_FILE_HEADER)?new Error(\"Can't find end of central directory : is this a zip file ? If it is, see https://stuk.github.io/jszip/documentation/howto/read_zip.html\"):new Error(\"Corrupted zip: can't find end of central directory\");this.reader.setIndex(t);var e=t;if(this.checkSignature(s.CENTRAL_DIRECTORY_END),this.readBlockEndOfCentral(),this.diskNumber===n.MAX_VALUE_16BITS||this.diskWithCentralDirStart===n.MAX_VALUE_16BITS||this.centralDirRecordsOnThisDisk===n.MAX_VALUE_16BITS||this.centralDirRecords===n.MAX_VALUE_16BITS||this.centralDirSize===n.MAX_VALUE_32BITS||this.centralDirOffset===n.MAX_VALUE_32BITS){if(this.zip64=!0,(t=this.reader.lastIndexOfSignature(s.ZIP64_CENTRAL_DIRECTORY_LOCATOR))<0)throw new Error(\"Corrupted zip: can't find the ZIP64 end of central directory locator\");if(this.reader.setIndex(t),this.checkSignature(s.ZIP64_CENTRAL_DIRECTORY_LOCATOR),this.readBlockZip64EndOfCentralLocator(),!this.isSignature(this.relativeOffsetEndOfZip64CentralDir,s.ZIP64_CENTRAL_DIRECTORY_END)&&(this.relativeOffsetEndOfZip64CentralDir=this.reader.lastIndexOfSignature(s.ZIP64_CENTRAL_DIRECTORY_END),this.relativeOffsetEndOfZip64CentralDir<0))throw new Error(\"Corrupted zip: can't find the ZIP64 end of central directory\");this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir),this.checkSignature(s.ZIP64_CENTRAL_DIRECTORY_END),this.readBlockZip64EndOfCentral()}var r=this.centralDirOffset+this.centralDirSize;this.zip64&&(r+=20,r+=12+this.zip64EndOfCentralSize);var i=e-r;if(0<i)this.isSignature(e,s.CENTRAL_FILE_HEADER)||(this.reader.zero=i);else if(i<0)throw new Error(\"Corrupted zip: missing \"+Math.abs(i)+\" bytes.\")},prepareReader:function(t){this.reader=i(t)},load:function(t){this.prepareReader(t),this.readEndOfCentral(),this.readCentralDir(),this.readLocalFiles()}},e.exports=h},{\"./reader/readerFor\":22,\"./signature\":23,\"./support\":30,\"./utf8\":31,\"./utils\":32,\"./zipEntry\":34}],34:[function(t,e,r){\"use strict\";var i=t(\"./reader/readerFor\"),s=t(\"./utils\"),n=t(\"./compressedObject\"),a=t(\"./crc32\"),o=t(\"./utf8\"),h=t(\"./compressions\"),u=t(\"./support\");function l(t,e){this.options=t,this.loadOptions=e}l.prototype={isEncrypted:function(){return 1==(1&this.bitFlag)},useUTF8:function(){return 2048==(2048&this.bitFlag)},readLocalPart:function(t){var e,r;if(t.skip(22),this.fileNameLength=t.readInt(2),r=t.readInt(2),this.fileName=t.readData(this.fileNameLength),t.skip(r),-1===this.compressedSize||-1===this.uncompressedSize)throw new Error(\"Bug or corrupted zip : didn't get enough information from the central directory (compressedSize === -1 || uncompressedSize === -1)\");if(null===(e=function(t){for(var e in h)if(h.hasOwnProperty(e)&&h[e].magic===t)return h[e];return null}(this.compressionMethod)))throw new Error(\"Corrupted zip : compression \"+s.pretty(this.compressionMethod)+\" unknown (inner file : \"+s.transformTo(\"string\",this.fileName)+\")\");this.decompressed=new n(this.compressedSize,this.uncompressedSize,this.crc32,e,t.readData(this.compressedSize))},readCentralPart:function(t){this.versionMadeBy=t.readInt(2),t.skip(2),this.bitFlag=t.readInt(2),this.compressionMethod=t.readString(2),this.date=t.readDate(),this.crc32=t.readInt(4),this.compressedSize=t.readInt(4),this.uncompressedSize=t.readInt(4);var e=t.readInt(2);if(this.extraFieldsLength=t.readInt(2),this.fileCommentLength=t.readInt(2),this.diskNumberStart=t.readInt(2),this.internalFileAttributes=t.readInt(2),this.externalFileAttributes=t.readInt(4),this.localHeaderOffset=t.readInt(4),this.isEncrypted())throw new Error(\"Encrypted zip are not supported\");t.skip(e),this.readExtraFields(t),this.parseZIP64ExtraField(t),this.fileComment=t.readData(this.fileCommentLength)},processAttributes:function(){this.unixPermissions=null,this.dosPermissions=null;var t=this.versionMadeBy>>8;this.dir=!!(16&this.externalFileAttributes),0==t&&(this.dosPermissions=63&this.externalFileAttributes),3==t&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||\"/\"!==this.fileNameStr.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(t){if(this.extraFields[1]){var e=i(this.extraFields[1].value);this.uncompressedSize===s.MAX_VALUE_32BITS&&(this.uncompressedSize=e.readInt(8)),this.compressedSize===s.MAX_VALUE_32BITS&&(this.compressedSize=e.readInt(8)),this.localHeaderOffset===s.MAX_VALUE_32BITS&&(this.localHeaderOffset=e.readInt(8)),this.diskNumberStart===s.MAX_VALUE_32BITS&&(this.diskNumberStart=e.readInt(4))}},readExtraFields:function(t){var e,r,i,n=t.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});t.index+4<n;)e=t.readInt(2),r=t.readInt(2),i=t.readData(r),this.extraFields[e]={id:e,length:r,value:i};t.setIndex(n)},handleUTF8:function(){var t=u.uint8array?\"uint8array\":\"array\";if(this.useUTF8())this.fileNameStr=o.utf8decode(this.fileName),this.fileCommentStr=o.utf8decode(this.fileComment);else{var e=this.findExtraFieldUnicodePath();if(null!==e)this.fileNameStr=e;else{var r=s.transformTo(t,this.fileName);this.fileNameStr=this.loadOptions.decodeFileName(r)}var i=this.findExtraFieldUnicodeComment();if(null!==i)this.fileCommentStr=i;else{var n=s.transformTo(t,this.fileComment);this.fileCommentStr=this.loadOptions.decodeFileName(n)}}},findExtraFieldUnicodePath:function(){var t=this.extraFields[28789];if(t){var e=i(t.value);return 1!==e.readInt(1)?null:a(this.fileName)!==e.readInt(4)?null:o.utf8decode(e.readData(t.length-5))}return null},findExtraFieldUnicodeComment:function(){var t=this.extraFields[25461];if(t){var e=i(t.value);return 1!==e.readInt(1)?null:a(this.fileComment)!==e.readInt(4)?null:o.utf8decode(e.readData(t.length-5))}return null}},e.exports=l},{\"./compressedObject\":2,\"./compressions\":3,\"./crc32\":4,\"./reader/readerFor\":22,\"./support\":30,\"./utf8\":31,\"./utils\":32}],35:[function(t,e,r){\"use strict\";function i(t,e,r){this.name=t,this.dir=r.dir,this.date=r.date,this.comment=r.comment,this.unixPermissions=r.unixPermissions,this.dosPermissions=r.dosPermissions,this._data=e,this._dataBinary=r.binary,this.options={compression:r.compression,compressionOptions:r.compressionOptions}}var s=t(\"./stream/StreamHelper\"),n=t(\"./stream/DataWorker\"),a=t(\"./utf8\"),o=t(\"./compressedObject\"),h=t(\"./stream/GenericWorker\");i.prototype={internalStream:function(t){var e=null,r=\"string\";try{if(!t)throw new Error(\"No output type specified.\");var i=\"string\"===(r=t.toLowerCase())||\"text\"===r;\"binarystring\"!==r&&\"text\"!==r||(r=\"string\"),e=this._decompressWorker();var n=!this._dataBinary;n&&!i&&(e=e.pipe(new a.Utf8EncodeWorker)),!n&&i&&(e=e.pipe(new a.Utf8DecodeWorker))}catch(t){(e=new h(\"error\")).error(t)}return new s(e,r,\"\")},async:function(t,e){return this.internalStream(t).accumulate(e)},nodeStream:function(t,e){return this.internalStream(t||\"nodebuffer\").toNodejsStream(e)},_compressWorker:function(t,e){if(this._data instanceof o&&this._data.compression.magic===t.magic)return this._data.getCompressedWorker();var r=this._decompressWorker();return this._dataBinary||(r=r.pipe(new a.Utf8EncodeWorker)),o.createWorkerFrom(r,t,e)},_decompressWorker:function(){return this._data instanceof o?this._data.getContentWorker():this._data instanceof h?this._data:new n(this._data)}};for(var u=[\"asText\",\"asBinary\",\"asNodeBuffer\",\"asUint8Array\",\"asArrayBuffer\"],l=function(){throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\")},f=0;f<u.length;f++)i.prototype[u[f]]=l;e.exports=i},{\"./compressedObject\":2,\"./stream/DataWorker\":27,\"./stream/GenericWorker\":28,\"./stream/StreamHelper\":29,\"./utf8\":31}],36:[function(t,l,e){(function(e){\"use strict\";var r,i,t=e.MutationObserver||e.WebKitMutationObserver;if(t){var n=0,s=new t(u),a=e.document.createTextNode(\"\");s.observe(a,{characterData:!0}),r=function(){a.data=n=++n%2}}else if(e.setImmediate||void 0===e.MessageChannel)r=\"document\"in e&&\"onreadystatechange\"in e.document.createElement(\"script\")?function(){var t=e.document.createElement(\"script\");t.onreadystatechange=function(){u(),t.onreadystatechange=null,t.parentNode.removeChild(t),t=null},e.document.documentElement.appendChild(t)}:function(){setTimeout(u,0)};else{var o=new e.MessageChannel;o.port1.onmessage=u,r=function(){o.port2.postMessage(0)}}var h=[];function u(){var t,e;i=!0;for(var r=h.length;r;){for(e=h,h=[],t=-1;++t<r;)e[t]();r=h.length}i=!1}l.exports=function(t){1!==h.push(t)||i||r()}}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}],37:[function(t,e,r){\"use strict\";var n=t(\"immediate\");function u(){}var l={},s=[\"REJECTED\"],a=[\"FULFILLED\"],i=[\"PENDING\"];function o(t){if(\"function\"!=typeof t)throw new TypeError(\"resolver must be a function\");this.state=i,this.queue=[],this.outcome=void 0,t!==u&&c(this,t)}function h(t,e,r){this.promise=t,\"function\"==typeof e&&(this.onFulfilled=e,this.callFulfilled=this.otherCallFulfilled),\"function\"==typeof r&&(this.onRejected=r,this.callRejected=this.otherCallRejected)}function f(e,r,i){n(function(){var t;try{t=r(i)}catch(t){return l.reject(e,t)}t===e?l.reject(e,new TypeError(\"Cannot resolve promise with itself\")):l.resolve(e,t)})}function d(t){var e=t&&t.then;if(t&&(\"object\"==typeof t||\"function\"==typeof t)&&\"function\"==typeof e)return function(){e.apply(t,arguments)}}function c(e,t){var r=!1;function i(t){r||(r=!0,l.reject(e,t))}function n(t){r||(r=!0,l.resolve(e,t))}var s=p(function(){t(n,i)});\"error\"===s.status&&i(s.value)}function p(t,e){var r={};try{r.value=t(e),r.status=\"success\"}catch(t){r.status=\"error\",r.value=t}return r}(e.exports=o).prototype.finally=function(e){if(\"function\"!=typeof e)return this;var r=this.constructor;return this.then(function(t){return r.resolve(e()).then(function(){return t})},function(t){return r.resolve(e()).then(function(){throw t})})},o.prototype.catch=function(t){return this.then(null,t)},o.prototype.then=function(t,e){if(\"function\"!=typeof t&&this.state===a||\"function\"!=typeof e&&this.state===s)return this;var r=new this.constructor(u);this.state!==i?f(r,this.state===a?t:e,this.outcome):this.queue.push(new h(r,t,e));return r},h.prototype.callFulfilled=function(t){l.resolve(this.promise,t)},h.prototype.otherCallFulfilled=function(t){f(this.promise,this.onFulfilled,t)},h.prototype.callRejected=function(t){l.reject(this.promise,t)},h.prototype.otherCallRejected=function(t){f(this.promise,this.onRejected,t)},l.resolve=function(t,e){var r=p(d,e);if(\"error\"===r.status)return l.reject(t,r.value);var i=r.value;if(i)c(t,i);else{t.state=a,t.outcome=e;for(var n=-1,s=t.queue.length;++n<s;)t.queue[n].callFulfilled(e)}return t},l.reject=function(t,e){t.state=s,t.outcome=e;for(var r=-1,i=t.queue.length;++r<i;)t.queue[r].callRejected(e);return t},o.resolve=function(t){if(t instanceof this)return t;return l.resolve(new this(u),t)},o.reject=function(t){var e=new this(u);return l.reject(e,t)},o.all=function(t){var r=this;if(\"[object Array]\"!==Object.prototype.toString.call(t))return this.reject(new TypeError(\"must be an array\"));var i=t.length,n=!1;if(!i)return this.resolve([]);var s=new Array(i),a=0,e=-1,o=new this(u);for(;++e<i;)h(t[e],e);return o;function h(t,e){r.resolve(t).then(function(t){s[e]=t,++a!==i||n||(n=!0,l.resolve(o,s))},function(t){n||(n=!0,l.reject(o,t))})}},o.race=function(t){var e=this;if(\"[object Array]\"!==Object.prototype.toString.call(t))return this.reject(new TypeError(\"must be an array\"));var r=t.length,i=!1;if(!r)return this.resolve([]);var n=-1,s=new this(u);for(;++n<r;)a=t[n],e.resolve(a).then(function(t){i||(i=!0,l.resolve(s,t))},function(t){i||(i=!0,l.reject(s,t))});var a;return s}},{immediate:36}],38:[function(t,e,r){\"use strict\";var i={};(0,t(\"./lib/utils/common\").assign)(i,t(\"./lib/deflate\"),t(\"./lib/inflate\"),t(\"./lib/zlib/constants\")),e.exports=i},{\"./lib/deflate\":39,\"./lib/inflate\":40,\"./lib/utils/common\":41,\"./lib/zlib/constants\":44}],39:[function(t,e,r){\"use strict\";var a=t(\"./zlib/deflate\"),o=t(\"./utils/common\"),h=t(\"./utils/strings\"),n=t(\"./zlib/messages\"),s=t(\"./zlib/zstream\"),u=Object.prototype.toString,l=0,f=-1,d=0,c=8;function p(t){if(!(this instanceof p))return new p(t);this.options=o.assign({level:f,method:c,chunkSize:16384,windowBits:15,memLevel:8,strategy:d,to:\"\"},t||{});var e=this.options;e.raw&&0<e.windowBits?e.windowBits=-e.windowBits:e.gzip&&0<e.windowBits&&e.windowBits<16&&(e.windowBits+=16),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new s,this.strm.avail_out=0;var r=a.deflateInit2(this.strm,e.level,e.method,e.windowBits,e.memLevel,e.strategy);if(r!==l)throw new Error(n[r]);if(e.header&&a.deflateSetHeader(this.strm,e.header),e.dictionary){var i;if(i=\"string\"==typeof e.dictionary?h.string2buf(e.dictionary):\"[object ArrayBuffer]\"===u.call(e.dictionary)?new Uint8Array(e.dictionary):e.dictionary,(r=a.deflateSetDictionary(this.strm,i))!==l)throw new Error(n[r]);this._dict_set=!0}}function i(t,e){var r=new p(e);if(r.push(t,!0),r.err)throw r.msg||n[r.err];return r.result}p.prototype.push=function(t,e){var r,i,n=this.strm,s=this.options.chunkSize;if(this.ended)return!1;i=e===~~e?e:!0===e?4:0,\"string\"==typeof t?n.input=h.string2buf(t):\"[object ArrayBuffer]\"===u.call(t)?n.input=new Uint8Array(t):n.input=t,n.next_in=0,n.avail_in=n.input.length;do{if(0===n.avail_out&&(n.output=new o.Buf8(s),n.next_out=0,n.avail_out=s),1!==(r=a.deflate(n,i))&&r!==l)return this.onEnd(r),!(this.ended=!0);0!==n.avail_out&&(0!==n.avail_in||4!==i&&2!==i)||(\"string\"===this.options.to?this.onData(h.buf2binstring(o.shrinkBuf(n.output,n.next_out))):this.onData(o.shrinkBuf(n.output,n.next_out)))}while((0<n.avail_in||0===n.avail_out)&&1!==r);return 4===i?(r=a.deflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===l):2!==i||(this.onEnd(l),!(n.avail_out=0))},p.prototype.onData=function(t){this.chunks.push(t)},p.prototype.onEnd=function(t){t===l&&(\"string\"===this.options.to?this.result=this.chunks.join(\"\"):this.result=o.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg},r.Deflate=p,r.deflate=i,r.deflateRaw=function(t,e){return(e=e||{}).raw=!0,i(t,e)},r.gzip=function(t,e){return(e=e||{}).gzip=!0,i(t,e)}},{\"./utils/common\":41,\"./utils/strings\":42,\"./zlib/deflate\":46,\"./zlib/messages\":51,\"./zlib/zstream\":53}],40:[function(t,e,r){\"use strict\";var d=t(\"./zlib/inflate\"),c=t(\"./utils/common\"),p=t(\"./utils/strings\"),m=t(\"./zlib/constants\"),i=t(\"./zlib/messages\"),n=t(\"./zlib/zstream\"),s=t(\"./zlib/gzheader\"),_=Object.prototype.toString;function a(t){if(!(this instanceof a))return new a(t);this.options=c.assign({chunkSize:16384,windowBits:0,to:\"\"},t||{});var e=this.options;e.raw&&0<=e.windowBits&&e.windowBits<16&&(e.windowBits=-e.windowBits,0===e.windowBits&&(e.windowBits=-15)),!(0<=e.windowBits&&e.windowBits<16)||t&&t.windowBits||(e.windowBits+=32),15<e.windowBits&&e.windowBits<48&&0==(15&e.windowBits)&&(e.windowBits|=15),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new n,this.strm.avail_out=0;var r=d.inflateInit2(this.strm,e.windowBits);if(r!==m.Z_OK)throw new Error(i[r]);this.header=new s,d.inflateGetHeader(this.strm,this.header)}function o(t,e){var r=new a(e);if(r.push(t,!0),r.err)throw r.msg||i[r.err];return r.result}a.prototype.push=function(t,e){var r,i,n,s,a,o,h=this.strm,u=this.options.chunkSize,l=this.options.dictionary,f=!1;if(this.ended)return!1;i=e===~~e?e:!0===e?m.Z_FINISH:m.Z_NO_FLUSH,\"string\"==typeof t?h.input=p.binstring2buf(t):\"[object ArrayBuffer]\"===_.call(t)?h.input=new Uint8Array(t):h.input=t,h.next_in=0,h.avail_in=h.input.length;do{if(0===h.avail_out&&(h.output=new c.Buf8(u),h.next_out=0,h.avail_out=u),(r=d.inflate(h,m.Z_NO_FLUSH))===m.Z_NEED_DICT&&l&&(o=\"string\"==typeof l?p.string2buf(l):\"[object ArrayBuffer]\"===_.call(l)?new Uint8Array(l):l,r=d.inflateSetDictionary(this.strm,o)),r===m.Z_BUF_ERROR&&!0===f&&(r=m.Z_OK,f=!1),r!==m.Z_STREAM_END&&r!==m.Z_OK)return this.onEnd(r),!(this.ended=!0);h.next_out&&(0!==h.avail_out&&r!==m.Z_STREAM_END&&(0!==h.avail_in||i!==m.Z_FINISH&&i!==m.Z_SYNC_FLUSH)||(\"string\"===this.options.to?(n=p.utf8border(h.output,h.next_out),s=h.next_out-n,a=p.buf2string(h.output,n),h.next_out=s,h.avail_out=u-s,s&&c.arraySet(h.output,h.output,n,s,0),this.onData(a)):this.onData(c.shrinkBuf(h.output,h.next_out)))),0===h.avail_in&&0===h.avail_out&&(f=!0)}while((0<h.avail_in||0===h.avail_out)&&r!==m.Z_STREAM_END);return r===m.Z_STREAM_END&&(i=m.Z_FINISH),i===m.Z_FINISH?(r=d.inflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===m.Z_OK):i!==m.Z_SYNC_FLUSH||(this.onEnd(m.Z_OK),!(h.avail_out=0))},a.prototype.onData=function(t){this.chunks.push(t)},a.prototype.onEnd=function(t){t===m.Z_OK&&(\"string\"===this.options.to?this.result=this.chunks.join(\"\"):this.result=c.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg},r.Inflate=a,r.inflate=o,r.inflateRaw=function(t,e){return(e=e||{}).raw=!0,o(t,e)},r.ungzip=o},{\"./utils/common\":41,\"./utils/strings\":42,\"./zlib/constants\":44,\"./zlib/gzheader\":47,\"./zlib/inflate\":49,\"./zlib/messages\":51,\"./zlib/zstream\":53}],41:[function(t,e,r){\"use strict\";var i=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Int32Array;r.assign=function(t){for(var e=Array.prototype.slice.call(arguments,1);e.length;){var r=e.shift();if(r){if(\"object\"!=typeof r)throw new TypeError(r+\"must be non-object\");for(var i in r)r.hasOwnProperty(i)&&(t[i]=r[i])}}return t},r.shrinkBuf=function(t,e){return t.length===e?t:t.subarray?t.subarray(0,e):(t.length=e,t)};var n={arraySet:function(t,e,r,i,n){if(e.subarray&&t.subarray)t.set(e.subarray(r,r+i),n);else for(var s=0;s<i;s++)t[n+s]=e[r+s]},flattenChunks:function(t){var e,r,i,n,s,a;for(e=i=0,r=t.length;e<r;e++)i+=t[e].length;for(a=new Uint8Array(i),e=n=0,r=t.length;e<r;e++)s=t[e],a.set(s,n),n+=s.length;return a}},s={arraySet:function(t,e,r,i,n){for(var s=0;s<i;s++)t[n+s]=e[r+s]},flattenChunks:function(t){return[].concat.apply([],t)}};r.setTyped=function(t){t?(r.Buf8=Uint8Array,r.Buf16=Uint16Array,r.Buf32=Int32Array,r.assign(r,n)):(r.Buf8=Array,r.Buf16=Array,r.Buf32=Array,r.assign(r,s))},r.setTyped(i)},{}],42:[function(t,e,r){\"use strict\";var h=t(\"./common\"),n=!0,s=!0;try{String.fromCharCode.apply(null,[0])}catch(t){n=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(t){s=!1}for(var u=new h.Buf8(256),i=0;i<256;i++)u[i]=252<=i?6:248<=i?5:240<=i?4:224<=i?3:192<=i?2:1;function l(t,e){if(e<65537&&(t.subarray&&s||!t.subarray&&n))return String.fromCharCode.apply(null,h.shrinkBuf(t,e));for(var r=\"\",i=0;i<e;i++)r+=String.fromCharCode(t[i]);return r}u[254]=u[254]=1,r.string2buf=function(t){var e,r,i,n,s,a=t.length,o=0;for(n=0;n<a;n++)55296==(64512&(r=t.charCodeAt(n)))&&n+1<a&&56320==(64512&(i=t.charCodeAt(n+1)))&&(r=65536+(r-55296<<10)+(i-56320),n++),o+=r<128?1:r<2048?2:r<65536?3:4;for(e=new h.Buf8(o),n=s=0;s<o;n++)55296==(64512&(r=t.charCodeAt(n)))&&n+1<a&&56320==(64512&(i=t.charCodeAt(n+1)))&&(r=65536+(r-55296<<10)+(i-56320),n++),r<128?e[s++]=r:(r<2048?e[s++]=192|r>>>6:(r<65536?e[s++]=224|r>>>12:(e[s++]=240|r>>>18,e[s++]=128|r>>>12&63),e[s++]=128|r>>>6&63),e[s++]=128|63&r);return e},r.buf2binstring=function(t){return l(t,t.length)},r.binstring2buf=function(t){for(var e=new h.Buf8(t.length),r=0,i=e.length;r<i;r++)e[r]=t.charCodeAt(r);return e},r.buf2string=function(t,e){var r,i,n,s,a=e||t.length,o=new Array(2*a);for(r=i=0;r<a;)if((n=t[r++])<128)o[i++]=n;else if(4<(s=u[n]))o[i++]=65533,r+=s-1;else{for(n&=2===s?31:3===s?15:7;1<s&&r<a;)n=n<<6|63&t[r++],s--;1<s?o[i++]=65533:n<65536?o[i++]=n:(n-=65536,o[i++]=55296|n>>10&1023,o[i++]=56320|1023&n)}return l(o,i)},r.utf8border=function(t,e){var r;for((e=e||t.length)>t.length&&(e=t.length),r=e-1;0<=r&&128==(192&t[r]);)r--;return r<0?e:0===r?e:r+u[t[r]]>e?r:e}},{\"./common\":41}],43:[function(t,e,r){\"use strict\";e.exports=function(t,e,r,i){for(var n=65535&t|0,s=t>>>16&65535|0,a=0;0!==r;){for(r-=a=2e3<r?2e3:r;s=s+(n=n+e[i++]|0)|0,--a;);n%=65521,s%=65521}return n|s<<16|0}},{}],44:[function(t,e,r){\"use strict\";e.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],45:[function(t,e,r){\"use strict\";var o=function(){for(var t,e=[],r=0;r<256;r++){t=r;for(var i=0;i<8;i++)t=1&t?3988292384^t>>>1:t>>>1;e[r]=t}return e}();e.exports=function(t,e,r,i){var n=o,s=i+r;t^=-1;for(var a=i;a<s;a++)t=t>>>8^n[255&(t^e[a])];return-1^t}},{}],46:[function(t,e,r){\"use strict\";var h,d=t(\"../utils/common\"),u=t(\"./trees\"),c=t(\"./adler32\"),p=t(\"./crc32\"),i=t(\"./messages\"),l=0,f=4,m=0,_=-2,g=-1,b=4,n=2,v=8,y=9,s=286,a=30,o=19,w=2*s+1,k=15,x=3,S=258,z=S+x+1,C=42,E=113,A=1,I=2,O=3,B=4;function R(t,e){return t.msg=i[e],e}function T(t){return(t<<1)-(4<t?9:0)}function D(t){for(var e=t.length;0<=--e;)t[e]=0}function F(t){var e=t.state,r=e.pending;r>t.avail_out&&(r=t.avail_out),0!==r&&(d.arraySet(t.output,e.pending_buf,e.pending_out,r,t.next_out),t.next_out+=r,e.pending_out+=r,t.total_out+=r,t.avail_out-=r,e.pending-=r,0===e.pending&&(e.pending_out=0))}function N(t,e){u._tr_flush_block(t,0<=t.block_start?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,F(t.strm)}function U(t,e){t.pending_buf[t.pending++]=e}function P(t,e){t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e}function L(t,e){var r,i,n=t.max_chain_length,s=t.strstart,a=t.prev_length,o=t.nice_match,h=t.strstart>t.w_size-z?t.strstart-(t.w_size-z):0,u=t.window,l=t.w_mask,f=t.prev,d=t.strstart+S,c=u[s+a-1],p=u[s+a];t.prev_length>=t.good_match&&(n>>=2),o>t.lookahead&&(o=t.lookahead);do{if(u[(r=e)+a]===p&&u[r+a-1]===c&&u[r]===u[s]&&u[++r]===u[s+1]){s+=2,r++;do{}while(u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&s<d);if(i=S-(d-s),s=d-S,a<i){if(t.match_start=e,o<=(a=i))break;c=u[s+a-1],p=u[s+a]}}}while((e=f[e&l])>h&&0!=--n);return a<=t.lookahead?a:t.lookahead}function j(t){var e,r,i,n,s,a,o,h,u,l,f=t.w_size;do{if(n=t.window_size-t.lookahead-t.strstart,t.strstart>=f+(f-z)){for(d.arraySet(t.window,t.window,f,f,0),t.match_start-=f,t.strstart-=f,t.block_start-=f,e=r=t.hash_size;i=t.head[--e],t.head[e]=f<=i?i-f:0,--r;);for(e=r=f;i=t.prev[--e],t.prev[e]=f<=i?i-f:0,--r;);n+=f}if(0===t.strm.avail_in)break;if(a=t.strm,o=t.window,h=t.strstart+t.lookahead,u=n,l=void 0,l=a.avail_in,u<l&&(l=u),r=0===l?0:(a.avail_in-=l,d.arraySet(o,a.input,a.next_in,l,h),1===a.state.wrap?a.adler=c(a.adler,o,l,h):2===a.state.wrap&&(a.adler=p(a.adler,o,l,h)),a.next_in+=l,a.total_in+=l,l),t.lookahead+=r,t.lookahead+t.insert>=x)for(s=t.strstart-t.insert,t.ins_h=t.window[s],t.ins_h=(t.ins_h<<t.hash_shift^t.window[s+1])&t.hash_mask;t.insert&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[s+x-1])&t.hash_mask,t.prev[s&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=s,s++,t.insert--,!(t.lookahead+t.insert<x)););}while(t.lookahead<z&&0!==t.strm.avail_in)}function Z(t,e){for(var r,i;;){if(t.lookahead<z){if(j(t),t.lookahead<z&&e===l)return A;if(0===t.lookahead)break}if(r=0,t.lookahead>=x&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+x-1])&t.hash_mask,r=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),0!==r&&t.strstart-r<=t.w_size-z&&(t.match_length=L(t,r)),t.match_length>=x)if(i=u._tr_tally(t,t.strstart-t.match_start,t.match_length-x),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=x){for(t.match_length--;t.strstart++,t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+x-1])&t.hash_mask,r=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart,0!=--t.match_length;);t.strstart++}else t.strstart+=t.match_length,t.match_length=0,t.ins_h=t.window[t.strstart],t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+1])&t.hash_mask;else i=u._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(i&&(N(t,!1),0===t.strm.avail_out))return A}return t.insert=t.strstart<x-1?t.strstart:x-1,e===f?(N(t,!0),0===t.strm.avail_out?O:B):t.last_lit&&(N(t,!1),0===t.strm.avail_out)?A:I}function W(t,e){for(var r,i,n;;){if(t.lookahead<z){if(j(t),t.lookahead<z&&e===l)return A;if(0===t.lookahead)break}if(r=0,t.lookahead>=x&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+x-1])&t.hash_mask,r=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),t.prev_length=t.match_length,t.prev_match=t.match_start,t.match_length=x-1,0!==r&&t.prev_length<t.max_lazy_match&&t.strstart-r<=t.w_size-z&&(t.match_length=L(t,r),t.match_length<=5&&(1===t.strategy||t.match_length===x&&4096<t.strstart-t.match_start)&&(t.match_length=x-1)),t.prev_length>=x&&t.match_length<=t.prev_length){for(n=t.strstart+t.lookahead-x,i=u._tr_tally(t,t.strstart-1-t.prev_match,t.prev_length-x),t.lookahead-=t.prev_length-1,t.prev_length-=2;++t.strstart<=n&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+x-1])&t.hash_mask,r=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),0!=--t.prev_length;);if(t.match_available=0,t.match_length=x-1,t.strstart++,i&&(N(t,!1),0===t.strm.avail_out))return A}else if(t.match_available){if((i=u._tr_tally(t,0,t.window[t.strstart-1]))&&N(t,!1),t.strstart++,t.lookahead--,0===t.strm.avail_out)return A}else t.match_available=1,t.strstart++,t.lookahead--}return t.match_available&&(i=u._tr_tally(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart<x-1?t.strstart:x-1,e===f?(N(t,!0),0===t.strm.avail_out?O:B):t.last_lit&&(N(t,!1),0===t.strm.avail_out)?A:I}function M(t,e,r,i,n){this.good_length=t,this.max_lazy=e,this.nice_length=r,this.max_chain=i,this.func=n}function H(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=v,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new d.Buf16(2*w),this.dyn_dtree=new d.Buf16(2*(2*a+1)),this.bl_tree=new d.Buf16(2*(2*o+1)),D(this.dyn_ltree),D(this.dyn_dtree),D(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new d.Buf16(k+1),this.heap=new d.Buf16(2*s+1),D(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new d.Buf16(2*s+1),D(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function G(t){var e;return t&&t.state?(t.total_in=t.total_out=0,t.data_type=n,(e=t.state).pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=e.wrap?C:E,t.adler=2===e.wrap?0:1,e.last_flush=l,u._tr_init(e),m):R(t,_)}function K(t){var e=G(t);return e===m&&function(t){t.window_size=2*t.w_size,D(t.head),t.max_lazy_match=h[t.level].max_lazy,t.good_match=h[t.level].good_length,t.nice_match=h[t.level].nice_length,t.max_chain_length=h[t.level].max_chain,t.strstart=0,t.block_start=0,t.lookahead=0,t.insert=0,t.match_length=t.prev_length=x-1,t.match_available=0,t.ins_h=0}(t.state),e}function Y(t,e,r,i,n,s){if(!t)return _;var a=1;if(e===g&&(e=6),i<0?(a=0,i=-i):15<i&&(a=2,i-=16),n<1||y<n||r!==v||i<8||15<i||e<0||9<e||s<0||b<s)return R(t,_);8===i&&(i=9);var o=new H;return(t.state=o).strm=t,o.wrap=a,o.gzhead=null,o.w_bits=i,o.w_size=1<<o.w_bits,o.w_mask=o.w_size-1,o.hash_bits=n+7,o.hash_size=1<<o.hash_bits,o.hash_mask=o.hash_size-1,o.hash_shift=~~((o.hash_bits+x-1)/x),o.window=new d.Buf8(2*o.w_size),o.head=new d.Buf16(o.hash_size),o.prev=new d.Buf16(o.w_size),o.lit_bufsize=1<<n+6,o.pending_buf_size=4*o.lit_bufsize,o.pending_buf=new d.Buf8(o.pending_buf_size),o.d_buf=1*o.lit_bufsize,o.l_buf=3*o.lit_bufsize,o.level=e,o.strategy=s,o.method=r,K(t)}h=[new M(0,0,0,0,function(t,e){var r=65535;for(r>t.pending_buf_size-5&&(r=t.pending_buf_size-5);;){if(t.lookahead<=1){if(j(t),0===t.lookahead&&e===l)return A;if(0===t.lookahead)break}t.strstart+=t.lookahead,t.lookahead=0;var i=t.block_start+r;if((0===t.strstart||t.strstart>=i)&&(t.lookahead=t.strstart-i,t.strstart=i,N(t,!1),0===t.strm.avail_out))return A;if(t.strstart-t.block_start>=t.w_size-z&&(N(t,!1),0===t.strm.avail_out))return A}return t.insert=0,e===f?(N(t,!0),0===t.strm.avail_out?O:B):(t.strstart>t.block_start&&(N(t,!1),t.strm.avail_out),A)}),new M(4,4,8,4,Z),new M(4,5,16,8,Z),new M(4,6,32,32,Z),new M(4,4,16,16,W),new M(8,16,32,32,W),new M(8,16,128,128,W),new M(8,32,128,256,W),new M(32,128,258,1024,W),new M(32,258,258,4096,W)],r.deflateInit=function(t,e){return Y(t,e,v,15,8,0)},r.deflateInit2=Y,r.deflateReset=K,r.deflateResetKeep=G,r.deflateSetHeader=function(t,e){return t&&t.state?2!==t.state.wrap?_:(t.state.gzhead=e,m):_},r.deflate=function(t,e){var r,i,n,s;if(!t||!t.state||5<e||e<0)return t?R(t,_):_;if(i=t.state,!t.output||!t.input&&0!==t.avail_in||666===i.status&&e!==f)return R(t,0===t.avail_out?-5:_);if(i.strm=t,r=i.last_flush,i.last_flush=e,i.status===C)if(2===i.wrap)t.adler=0,U(i,31),U(i,139),U(i,8),i.gzhead?(U(i,(i.gzhead.text?1:0)+(i.gzhead.hcrc?2:0)+(i.gzhead.extra?4:0)+(i.gzhead.name?8:0)+(i.gzhead.comment?16:0)),U(i,255&i.gzhead.time),U(i,i.gzhead.time>>8&255),U(i,i.gzhead.time>>16&255),U(i,i.gzhead.time>>24&255),U(i,9===i.level?2:2<=i.strategy||i.level<2?4:0),U(i,255&i.gzhead.os),i.gzhead.extra&&i.gzhead.extra.length&&(U(i,255&i.gzhead.extra.length),U(i,i.gzhead.extra.length>>8&255)),i.gzhead.hcrc&&(t.adler=p(t.adler,i.pending_buf,i.pending,0)),i.gzindex=0,i.status=69):(U(i,0),U(i,0),U(i,0),U(i,0),U(i,0),U(i,9===i.level?2:2<=i.strategy||i.level<2?4:0),U(i,3),i.status=E);else{var a=v+(i.w_bits-8<<4)<<8;a|=(2<=i.strategy||i.level<2?0:i.level<6?1:6===i.level?2:3)<<6,0!==i.strstart&&(a|=32),a+=31-a%31,i.status=E,P(i,a),0!==i.strstart&&(P(i,t.adler>>>16),P(i,65535&t.adler)),t.adler=1}if(69===i.status)if(i.gzhead.extra){for(n=i.pending;i.gzindex<(65535&i.gzhead.extra.length)&&(i.pending!==i.pending_buf_size||(i.gzhead.hcrc&&i.pending>n&&(t.adler=p(t.adler,i.pending_buf,i.pending-n,n)),F(t),n=i.pending,i.pending!==i.pending_buf_size));)U(i,255&i.gzhead.extra[i.gzindex]),i.gzindex++;i.gzhead.hcrc&&i.pending>n&&(t.adler=p(t.adler,i.pending_buf,i.pending-n,n)),i.gzindex===i.gzhead.extra.length&&(i.gzindex=0,i.status=73)}else i.status=73;if(73===i.status)if(i.gzhead.name){n=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>n&&(t.adler=p(t.adler,i.pending_buf,i.pending-n,n)),F(t),n=i.pending,i.pending===i.pending_buf_size)){s=1;break}s=i.gzindex<i.gzhead.name.length?255&i.gzhead.name.charCodeAt(i.gzindex++):0,U(i,s)}while(0!==s);i.gzhead.hcrc&&i.pending>n&&(t.adler=p(t.adler,i.pending_buf,i.pending-n,n)),0===s&&(i.gzindex=0,i.status=91)}else i.status=91;if(91===i.status)if(i.gzhead.comment){n=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>n&&(t.adler=p(t.adler,i.pending_buf,i.pending-n,n)),F(t),n=i.pending,i.pending===i.pending_buf_size)){s=1;break}s=i.gzindex<i.gzhead.comment.length?255&i.gzhead.comment.charCodeAt(i.gzindex++):0,U(i,s)}while(0!==s);i.gzhead.hcrc&&i.pending>n&&(t.adler=p(t.adler,i.pending_buf,i.pending-n,n)),0===s&&(i.status=103)}else i.status=103;if(103===i.status&&(i.gzhead.hcrc?(i.pending+2>i.pending_buf_size&&F(t),i.pending+2<=i.pending_buf_size&&(U(i,255&t.adler),U(i,t.adler>>8&255),t.adler=0,i.status=E)):i.status=E),0!==i.pending){if(F(t),0===t.avail_out)return i.last_flush=-1,m}else if(0===t.avail_in&&T(e)<=T(r)&&e!==f)return R(t,-5);if(666===i.status&&0!==t.avail_in)return R(t,-5);if(0!==t.avail_in||0!==i.lookahead||e!==l&&666!==i.status){var o=2===i.strategy?function(t,e){for(var r;;){if(0===t.lookahead&&(j(t),0===t.lookahead)){if(e===l)return A;break}if(t.match_length=0,r=u._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,r&&(N(t,!1),0===t.strm.avail_out))return A}return t.insert=0,e===f?(N(t,!0),0===t.strm.avail_out?O:B):t.last_lit&&(N(t,!1),0===t.strm.avail_out)?A:I}(i,e):3===i.strategy?function(t,e){for(var r,i,n,s,a=t.window;;){if(t.lookahead<=S){if(j(t),t.lookahead<=S&&e===l)return A;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=x&&0<t.strstart&&(i=a[n=t.strstart-1])===a[++n]&&i===a[++n]&&i===a[++n]){s=t.strstart+S;do{}while(i===a[++n]&&i===a[++n]&&i===a[++n]&&i===a[++n]&&i===a[++n]&&i===a[++n]&&i===a[++n]&&i===a[++n]&&n<s);t.match_length=S-(s-n),t.match_length>t.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=x?(r=u._tr_tally(t,1,t.match_length-x),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(r=u._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),r&&(N(t,!1),0===t.strm.avail_out))return A}return t.insert=0,e===f?(N(t,!0),0===t.strm.avail_out?O:B):t.last_lit&&(N(t,!1),0===t.strm.avail_out)?A:I}(i,e):h[i.level].func(i,e);if(o!==O&&o!==B||(i.status=666),o===A||o===O)return 0===t.avail_out&&(i.last_flush=-1),m;if(o===I&&(1===e?u._tr_align(i):5!==e&&(u._tr_stored_block(i,0,0,!1),3===e&&(D(i.head),0===i.lookahead&&(i.strstart=0,i.block_start=0,i.insert=0))),F(t),0===t.avail_out))return i.last_flush=-1,m}return e!==f?m:i.wrap<=0?1:(2===i.wrap?(U(i,255&t.adler),U(i,t.adler>>8&255),U(i,t.adler>>16&255),U(i,t.adler>>24&255),U(i,255&t.total_in),U(i,t.total_in>>8&255),U(i,t.total_in>>16&255),U(i,t.total_in>>24&255)):(P(i,t.adler>>>16),P(i,65535&t.adler)),F(t),0<i.wrap&&(i.wrap=-i.wrap),0!==i.pending?m:1)},r.deflateEnd=function(t){var e;return t&&t.state?(e=t.state.status)!==C&&69!==e&&73!==e&&91!==e&&103!==e&&e!==E&&666!==e?R(t,_):(t.state=null,e===E?R(t,-3):m):_},r.deflateSetDictionary=function(t,e){var r,i,n,s,a,o,h,u,l=e.length;if(!t||!t.state)return _;if(2===(s=(r=t.state).wrap)||1===s&&r.status!==C||r.lookahead)return _;for(1===s&&(t.adler=c(t.adler,e,l,0)),r.wrap=0,l>=r.w_size&&(0===s&&(D(r.head),r.strstart=0,r.block_start=0,r.insert=0),u=new d.Buf8(r.w_size),d.arraySet(u,e,l-r.w_size,r.w_size,0),e=u,l=r.w_size),a=t.avail_in,o=t.next_in,h=t.input,t.avail_in=l,t.next_in=0,t.input=e,j(r);r.lookahead>=x;){for(i=r.strstart,n=r.lookahead-(x-1);r.ins_h=(r.ins_h<<r.hash_shift^r.window[i+x-1])&r.hash_mask,r.prev[i&r.w_mask]=r.head[r.ins_h],r.head[r.ins_h]=i,i++,--n;);r.strstart=i,r.lookahead=x-1,j(r)}return r.strstart+=r.lookahead,r.block_start=r.strstart,r.insert=r.lookahead,r.lookahead=0,r.match_length=r.prev_length=x-1,r.match_available=0,t.next_in=o,t.input=h,t.avail_in=a,r.wrap=s,m},r.deflateInfo=\"pako deflate (from Nodeca project)\"},{\"../utils/common\":41,\"./adler32\":43,\"./crc32\":45,\"./messages\":51,\"./trees\":52}],47:[function(t,e,r){\"use strict\";e.exports=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name=\"\",this.comment=\"\",this.hcrc=0,this.done=!1}},{}],48:[function(t,e,r){\"use strict\";e.exports=function(t,e){var r,i,n,s,a,o,h,u,l,f,d,c,p,m,_,g,b,v,y,w,k,x,S,z,C;r=t.state,i=t.next_in,z=t.input,n=i+(t.avail_in-5),s=t.next_out,C=t.output,a=s-(e-t.avail_out),o=s+(t.avail_out-257),h=r.dmax,u=r.wsize,l=r.whave,f=r.wnext,d=r.window,c=r.hold,p=r.bits,m=r.lencode,_=r.distcode,g=(1<<r.lenbits)-1,b=(1<<r.distbits)-1;t:do{p<15&&(c+=z[i++]<<p,p+=8,c+=z[i++]<<p,p+=8),v=m[c&g];e:for(;;){if(c>>>=y=v>>>24,p-=y,0===(y=v>>>16&255))C[s++]=65535&v;else{if(!(16&y)){if(0==(64&y)){v=m[(65535&v)+(c&(1<<y)-1)];continue e}if(32&y){r.mode=12;break t}t.msg=\"invalid literal/length code\",r.mode=30;break t}w=65535&v,(y&=15)&&(p<y&&(c+=z[i++]<<p,p+=8),w+=c&(1<<y)-1,c>>>=y,p-=y),p<15&&(c+=z[i++]<<p,p+=8,c+=z[i++]<<p,p+=8),v=_[c&b];r:for(;;){if(c>>>=y=v>>>24,p-=y,!(16&(y=v>>>16&255))){if(0==(64&y)){v=_[(65535&v)+(c&(1<<y)-1)];continue r}t.msg=\"invalid distance code\",r.mode=30;break t}if(k=65535&v,p<(y&=15)&&(c+=z[i++]<<p,(p+=8)<y&&(c+=z[i++]<<p,p+=8)),h<(k+=c&(1<<y)-1)){t.msg=\"invalid distance too far back\",r.mode=30;break t}if(c>>>=y,p-=y,(y=s-a)<k){if(l<(y=k-y)&&r.sane){t.msg=\"invalid distance too far back\",r.mode=30;break t}if(S=d,(x=0)===f){if(x+=u-y,y<w){for(w-=y;C[s++]=d[x++],--y;);x=s-k,S=C}}else if(f<y){if(x+=u+f-y,(y-=f)<w){for(w-=y;C[s++]=d[x++],--y;);if(x=0,f<w){for(w-=y=f;C[s++]=d[x++],--y;);x=s-k,S=C}}}else if(x+=f-y,y<w){for(w-=y;C[s++]=d[x++],--y;);x=s-k,S=C}for(;2<w;)C[s++]=S[x++],C[s++]=S[x++],C[s++]=S[x++],w-=3;w&&(C[s++]=S[x++],1<w&&(C[s++]=S[x++]))}else{for(x=s-k;C[s++]=C[x++],C[s++]=C[x++],C[s++]=C[x++],2<(w-=3););w&&(C[s++]=C[x++],1<w&&(C[s++]=C[x++]))}break}}break}}while(i<n&&s<o);i-=w=p>>3,c&=(1<<(p-=w<<3))-1,t.next_in=i,t.next_out=s,t.avail_in=i<n?n-i+5:5-(i-n),t.avail_out=s<o?o-s+257:257-(s-o),r.hold=c,r.bits=p}},{}],49:[function(t,e,r){\"use strict\";var I=t(\"../utils/common\"),O=t(\"./adler32\"),B=t(\"./crc32\"),R=t(\"./inffast\"),T=t(\"./inftrees\"),D=1,F=2,N=0,U=-2,P=1,i=852,n=592;function L(t){return(t>>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<24)}function s(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new I.Buf16(320),this.work=new I.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function a(t){var e;return t&&t.state?(e=t.state,t.total_in=t.total_out=e.total=0,t.msg=\"\",e.wrap&&(t.adler=1&e.wrap),e.mode=P,e.last=0,e.havedict=0,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new I.Buf32(i),e.distcode=e.distdyn=new I.Buf32(n),e.sane=1,e.back=-1,N):U}function o(t){var e;return t&&t.state?((e=t.state).wsize=0,e.whave=0,e.wnext=0,a(t)):U}function h(t,e){var r,i;return t&&t.state?(i=t.state,e<0?(r=0,e=-e):(r=1+(e>>4),e<48&&(e&=15)),e&&(e<8||15<e)?U:(null!==i.window&&i.wbits!==e&&(i.window=null),i.wrap=r,i.wbits=e,o(t))):U}function u(t,e){var r,i;return t?(i=new s,(t.state=i).window=null,(r=h(t,e))!==N&&(t.state=null),r):U}var l,f,d=!0;function j(t){if(d){var e;for(l=new I.Buf32(512),f=new I.Buf32(32),e=0;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(T(D,t.lens,0,288,l,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;T(F,t.lens,0,32,f,0,t.work,{bits:5}),d=!1}t.lencode=l,t.lenbits=9,t.distcode=f,t.distbits=5}function Z(t,e,r,i){var n,s=t.state;return null===s.window&&(s.wsize=1<<s.wbits,s.wnext=0,s.whave=0,s.window=new I.Buf8(s.wsize)),i>=s.wsize?(I.arraySet(s.window,e,r-s.wsize,s.wsize,0),s.wnext=0,s.whave=s.wsize):(i<(n=s.wsize-s.wnext)&&(n=i),I.arraySet(s.window,e,r-i,n,s.wnext),(i-=n)?(I.arraySet(s.window,e,r-i,i,0),s.wnext=i,s.whave=s.wsize):(s.wnext+=n,s.wnext===s.wsize&&(s.wnext=0),s.whave<s.wsize&&(s.whave+=n))),0}r.inflateReset=o,r.inflateReset2=h,r.inflateResetKeep=a,r.inflateInit=function(t){return u(t,15)},r.inflateInit2=u,r.inflate=function(t,e){var r,i,n,s,a,o,h,u,l,f,d,c,p,m,_,g,b,v,y,w,k,x,S,z,C=0,E=new I.Buf8(4),A=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!t||!t.state||!t.output||!t.input&&0!==t.avail_in)return U;12===(r=t.state).mode&&(r.mode=13),a=t.next_out,n=t.output,h=t.avail_out,s=t.next_in,i=t.input,o=t.avail_in,u=r.hold,l=r.bits,f=o,d=h,x=N;t:for(;;)switch(r.mode){case P:if(0===r.wrap){r.mode=13;break}for(;l<16;){if(0===o)break t;o--,u+=i[s++]<<l,l+=8}if(2&r.wrap&&35615===u){E[r.check=0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0),l=u=0,r.mode=2;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&u)<<8)+(u>>8))%31){t.msg=\"incorrect header check\",r.mode=30;break}if(8!=(15&u)){t.msg=\"unknown compression method\",r.mode=30;break}if(l-=4,k=8+(15&(u>>>=4)),0===r.wbits)r.wbits=k;else if(k>r.wbits){t.msg=\"invalid window size\",r.mode=30;break}r.dmax=1<<k,t.adler=r.check=1,r.mode=512&u?10:12,l=u=0;break;case 2:for(;l<16;){if(0===o)break t;o--,u+=i[s++]<<l,l+=8}if(r.flags=u,8!=(255&r.flags)){t.msg=\"unknown compression method\",r.mode=30;break}if(57344&r.flags){t.msg=\"unknown header flags set\",r.mode=30;break}r.head&&(r.head.text=u>>8&1),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=3;case 3:for(;l<32;){if(0===o)break t;o--,u+=i[s++]<<l,l+=8}r.head&&(r.head.time=u),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,E[2]=u>>>16&255,E[3]=u>>>24&255,r.check=B(r.check,E,4,0)),l=u=0,r.mode=4;case 4:for(;l<16;){if(0===o)break t;o--,u+=i[s++]<<l,l+=8}r.head&&(r.head.xflags=255&u,r.head.os=u>>8),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=5;case 5:if(1024&r.flags){for(;l<16;){if(0===o)break t;o--,u+=i[s++]<<l,l+=8}r.length=u,r.head&&(r.head.extra_len=u),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&(o<(c=r.length)&&(c=o),c&&(r.head&&(k=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),I.arraySet(r.head.extra,i,s,c,k)),512&r.flags&&(r.check=B(r.check,i,c,s)),o-=c,s+=c,r.length-=c),r.length))break t;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===o)break t;for(c=0;k=i[s+c++],r.head&&k&&r.length<65536&&(r.head.name+=String.fromCharCode(k)),k&&c<o;);if(512&r.flags&&(r.check=B(r.check,i,c,s)),o-=c,s+=c,k)break t}else r.head&&(r.head.name=null);r.length=0,r.mode=8;case 8:if(4096&r.flags){if(0===o)break t;for(c=0;k=i[s+c++],r.head&&k&&r.length<65536&&(r.head.comment+=String.fromCharCode(k)),k&&c<o;);if(512&r.flags&&(r.check=B(r.check,i,c,s)),o-=c,s+=c,k)break t}else r.head&&(r.head.comment=null);r.mode=9;case 9:if(512&r.flags){for(;l<16;){if(0===o)break t;o--,u+=i[s++]<<l,l+=8}if(u!==(65535&r.check)){t.msg=\"header crc mismatch\",r.mode=30;break}l=u=0}r.head&&(r.head.hcrc=r.flags>>9&1,r.head.done=!0),t.adler=r.check=0,r.mode=12;break;case 10:for(;l<32;){if(0===o)break t;o--,u+=i[s++]<<l,l+=8}t.adler=r.check=L(u),l=u=0,r.mode=11;case 11:if(0===r.havedict)return t.next_out=a,t.avail_out=h,t.next_in=s,t.avail_in=o,r.hold=u,r.bits=l,2;t.adler=r.check=1,r.mode=12;case 12:if(5===e||6===e)break t;case 13:if(r.last){u>>>=7&l,l-=7&l,r.mode=27;break}for(;l<3;){if(0===o)break t;o--,u+=i[s++]<<l,l+=8}switch(r.last=1&u,l-=1,3&(u>>>=1)){case 0:r.mode=14;break;case 1:if(j(r),r.mode=20,6!==e)break;u>>>=2,l-=2;break t;case 2:r.mode=17;break;case 3:t.msg=\"invalid block type\",r.mode=30}u>>>=2,l-=2;break;case 14:for(u>>>=7&l,l-=7&l;l<32;){if(0===o)break t;o--,u+=i[s++]<<l,l+=8}if((65535&u)!=(u>>>16^65535)){t.msg=\"invalid stored block lengths\",r.mode=30;break}if(r.length=65535&u,l=u=0,r.mode=15,6===e)break t;case 15:r.mode=16;case 16:if(c=r.length){if(o<c&&(c=o),h<c&&(c=h),0===c)break t;I.arraySet(n,i,s,c,a),o-=c,s+=c,h-=c,a+=c,r.length-=c;break}r.mode=12;break;case 17:for(;l<14;){if(0===o)break t;o--,u+=i[s++]<<l,l+=8}if(r.nlen=257+(31&u),u>>>=5,l-=5,r.ndist=1+(31&u),u>>>=5,l-=5,r.ncode=4+(15&u),u>>>=4,l-=4,286<r.nlen||30<r.ndist){t.msg=\"too many length or distance symbols\",r.mode=30;break}r.have=0,r.mode=18;case 18:for(;r.have<r.ncode;){for(;l<3;){if(0===o)break t;o--,u+=i[s++]<<l,l+=8}r.lens[A[r.have++]]=7&u,u>>>=3,l-=3}for(;r.have<19;)r.lens[A[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,S={bits:r.lenbits},x=T(0,r.lens,0,19,r.lencode,0,r.work,S),r.lenbits=S.bits,x){t.msg=\"invalid code lengths set\",r.mode=30;break}r.have=0,r.mode=19;case 19:for(;r.have<r.nlen+r.ndist;){for(;g=(C=r.lencode[u&(1<<r.lenbits)-1])>>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break t;o--,u+=i[s++]<<l,l+=8}if(b<16)u>>>=_,l-=_,r.lens[r.have++]=b;else{if(16===b){for(z=_+2;l<z;){if(0===o)break t;o--,u+=i[s++]<<l,l+=8}if(u>>>=_,l-=_,0===r.have){t.msg=\"invalid bit length repeat\",r.mode=30;break}k=r.lens[r.have-1],c=3+(3&u),u>>>=2,l-=2}else if(17===b){for(z=_+3;l<z;){if(0===o)break t;o--,u+=i[s++]<<l,l+=8}l-=_,k=0,c=3+(7&(u>>>=_)),u>>>=3,l-=3}else{for(z=_+7;l<z;){if(0===o)break t;o--,u+=i[s++]<<l,l+=8}l-=_,k=0,c=11+(127&(u>>>=_)),u>>>=7,l-=7}if(r.have+c>r.nlen+r.ndist){t.msg=\"invalid bit length repeat\",r.mode=30;break}for(;c--;)r.lens[r.have++]=k}}if(30===r.mode)break;if(0===r.lens[256]){t.msg=\"invalid code -- missing end-of-block\",r.mode=30;break}if(r.lenbits=9,S={bits:r.lenbits},x=T(D,r.lens,0,r.nlen,r.lencode,0,r.work,S),r.lenbits=S.bits,x){t.msg=\"invalid literal/lengths set\",r.mode=30;break}if(r.distbits=6,r.distcode=r.distdyn,S={bits:r.distbits},x=T(F,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,S),r.distbits=S.bits,x){t.msg=\"invalid distances set\",r.mode=30;break}if(r.mode=20,6===e)break t;case 20:r.mode=21;case 21:if(6<=o&&258<=h){t.next_out=a,t.avail_out=h,t.next_in=s,t.avail_in=o,r.hold=u,r.bits=l,R(t,d),a=t.next_out,n=t.output,h=t.avail_out,s=t.next_in,i=t.input,o=t.avail_in,u=r.hold,l=r.bits,12===r.mode&&(r.back=-1);break}for(r.back=0;g=(C=r.lencode[u&(1<<r.lenbits)-1])>>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break t;o--,u+=i[s++]<<l,l+=8}if(g&&0==(240&g)){for(v=_,y=g,w=b;g=(C=r.lencode[w+((u&(1<<v+y)-1)>>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break t;o--,u+=i[s++]<<l,l+=8}u>>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,r.length=b,0===g){r.mode=26;break}if(32&g){r.back=-1,r.mode=12;break}if(64&g){t.msg=\"invalid literal/length code\",r.mode=30;break}r.extra=15&g,r.mode=22;case 22:if(r.extra){for(z=r.extra;l<z;){if(0===o)break t;o--,u+=i[s++]<<l,l+=8}r.length+=u&(1<<r.extra)-1,u>>>=r.extra,l-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=23;case 23:for(;g=(C=r.distcode[u&(1<<r.distbits)-1])>>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break t;o--,u+=i[s++]<<l,l+=8}if(0==(240&g)){for(v=_,y=g,w=b;g=(C=r.distcode[w+((u&(1<<v+y)-1)>>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break t;o--,u+=i[s++]<<l,l+=8}u>>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,64&g){t.msg=\"invalid distance code\",r.mode=30;break}r.offset=b,r.extra=15&g,r.mode=24;case 24:if(r.extra){for(z=r.extra;l<z;){if(0===o)break t;o--,u+=i[s++]<<l,l+=8}r.offset+=u&(1<<r.extra)-1,u>>>=r.extra,l-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){t.msg=\"invalid distance too far back\",r.mode=30;break}r.mode=25;case 25:if(0===h)break t;if(c=d-h,r.offset>c){if((c=r.offset-c)>r.whave&&r.sane){t.msg=\"invalid distance too far back\",r.mode=30;break}p=c>r.wnext?(c-=r.wnext,r.wsize-c):r.wnext-c,c>r.length&&(c=r.length),m=r.window}else m=n,p=a-r.offset,c=r.length;for(h<c&&(c=h),h-=c,r.length-=c;n[a++]=m[p++],--c;);0===r.length&&(r.mode=21);break;case 26:if(0===h)break t;n[a++]=r.length,h--,r.mode=21;break;case 27:if(r.wrap){for(;l<32;){if(0===o)break t;o--,u|=i[s++]<<l,l+=8}if(d-=h,t.total_out+=d,r.total+=d,d&&(t.adler=r.check=r.flags?B(r.check,n,d,a-d):O(r.check,n,d,a-d)),d=h,(r.flags?u:L(u))!==r.check){t.msg=\"incorrect data check\",r.mode=30;break}l=u=0}r.mode=28;case 28:if(r.wrap&&r.flags){for(;l<32;){if(0===o)break t;o--,u+=i[s++]<<l,l+=8}if(u!==(4294967295&r.total)){t.msg=\"incorrect length check\",r.mode=30;break}l=u=0}r.mode=29;case 29:x=1;break t;case 30:x=-3;break t;case 31:return-4;case 32:default:return U}return t.next_out=a,t.avail_out=h,t.next_in=s,t.avail_in=o,r.hold=u,r.bits=l,(r.wsize||d!==t.avail_out&&r.mode<30&&(r.mode<27||4!==e))&&Z(t,t.output,t.next_out,d-t.avail_out)?(r.mode=31,-4):(f-=t.avail_in,d-=t.avail_out,t.total_in+=f,t.total_out+=d,r.total+=d,r.wrap&&d&&(t.adler=r.check=r.flags?B(r.check,n,d,t.next_out-d):O(r.check,n,d,t.next_out-d)),t.data_type=r.bits+(r.last?64:0)+(12===r.mode?128:0)+(20===r.mode||15===r.mode?256:0),(0==f&&0===d||4===e)&&x===N&&(x=-5),x)},r.inflateEnd=function(t){if(!t||!t.state)return U;var e=t.state;return e.window&&(e.window=null),t.state=null,N},r.inflateGetHeader=function(t,e){var r;return t&&t.state?0==(2&(r=t.state).wrap)?U:((r.head=e).done=!1,N):U},r.inflateSetDictionary=function(t,e){var r,i=e.length;return t&&t.state?0!==(r=t.state).wrap&&11!==r.mode?U:11===r.mode&&O(1,e,i,0)!==r.check?-3:Z(t,e,i,i)?(r.mode=31,-4):(r.havedict=1,N):U},r.inflateInfo=\"pako inflate (from Nodeca project)\"},{\"../utils/common\":41,\"./adler32\":43,\"./crc32\":45,\"./inffast\":48,\"./inftrees\":50}],50:[function(t,e,r){\"use strict\";var D=t(\"../utils/common\"),F=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],N=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],U=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],P=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];e.exports=function(t,e,r,i,n,s,a,o){var h,u,l,f,d,c,p,m,_,g=o.bits,b=0,v=0,y=0,w=0,k=0,x=0,S=0,z=0,C=0,E=0,A=null,I=0,O=new D.Buf16(16),B=new D.Buf16(16),R=null,T=0;for(b=0;b<=15;b++)O[b]=0;for(v=0;v<i;v++)O[e[r+v]]++;for(k=g,w=15;1<=w&&0===O[w];w--);if(w<k&&(k=w),0===w)return n[s++]=20971520,n[s++]=20971520,o.bits=1,0;for(y=1;y<w&&0===O[y];y++);for(k<y&&(k=y),b=z=1;b<=15;b++)if(z<<=1,(z-=O[b])<0)return-1;if(0<z&&(0===t||1!==w))return-1;for(B[1]=0,b=1;b<15;b++)B[b+1]=B[b]+O[b];for(v=0;v<i;v++)0!==e[r+v]&&(a[B[e[r+v]]++]=v);if(c=0===t?(A=R=a,19):1===t?(A=F,I-=257,R=N,T-=257,256):(A=U,R=P,-1),b=y,d=s,S=v=E=0,l=-1,f=(C=1<<(x=k))-1,1===t&&852<C||2===t&&592<C)return 1;for(;;){for(p=b-S,_=a[v]<c?(m=0,a[v]):a[v]>c?(m=R[T+a[v]],A[I+a[v]]):(m=96,0),h=1<<b-S,y=u=1<<x;n[d+(E>>S)+(u-=h)]=p<<24|m<<16|_|0,0!==u;);for(h=1<<b-1;E&h;)h>>=1;if(0!==h?(E&=h-1,E+=h):E=0,v++,0==--O[b]){if(b===w)break;b=e[r+a[v]]}if(k<b&&(E&f)!==l){for(0===S&&(S=k),d+=y,z=1<<(x=b-S);x+S<w&&!((z-=O[x+S])<=0);)x++,z<<=1;if(C+=1<<x,1===t&&852<C||2===t&&592<C)return 1;n[l=E&f]=k<<24|x<<16|d-s|0}}return 0!==E&&(n[d+E]=b-S<<24|64<<16|0),o.bits=k,0}},{\"../utils/common\":41}],51:[function(t,e,r){\"use strict\";e.exports={2:\"need dictionary\",1:\"stream end\",0:\"\",\"-1\":\"file error\",\"-2\":\"stream error\",\"-3\":\"data error\",\"-4\":\"insufficient memory\",\"-5\":\"buffer error\",\"-6\":\"incompatible version\"}},{}],52:[function(t,e,r){\"use strict\";var n=t(\"../utils/common\"),o=0,h=1;function i(t){for(var e=t.length;0<=--e;)t[e]=0}var s=0,a=29,u=256,l=u+1+a,f=30,d=19,_=2*l+1,g=15,c=16,p=7,m=256,b=16,v=17,y=18,w=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],k=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],x=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],S=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],z=new Array(2*(l+2));i(z);var C=new Array(2*f);i(C);var E=new Array(512);i(E);var A=new Array(256);i(A);var I=new Array(a);i(I);var O,B,R,T=new Array(f);function D(t,e,r,i,n){this.static_tree=t,this.extra_bits=e,this.extra_base=r,this.elems=i,this.max_length=n,this.has_stree=t&&t.length}function F(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}function N(t){return t<256?E[t]:E[256+(t>>>7)]}function U(t,e){t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255}function P(t,e,r){t.bi_valid>c-r?(t.bi_buf|=e<<t.bi_valid&65535,U(t,t.bi_buf),t.bi_buf=e>>c-t.bi_valid,t.bi_valid+=r-c):(t.bi_buf|=e<<t.bi_valid&65535,t.bi_valid+=r)}function L(t,e,r){P(t,r[2*e],r[2*e+1])}function j(t,e){for(var r=0;r|=1&t,t>>>=1,r<<=1,0<--e;);return r>>>1}function Z(t,e,r){var i,n,s=new Array(g+1),a=0;for(i=1;i<=g;i++)s[i]=a=a+r[i-1]<<1;for(n=0;n<=e;n++){var o=t[2*n+1];0!==o&&(t[2*n]=j(s[o]++,o))}}function W(t){var e;for(e=0;e<l;e++)t.dyn_ltree[2*e]=0;for(e=0;e<f;e++)t.dyn_dtree[2*e]=0;for(e=0;e<d;e++)t.bl_tree[2*e]=0;t.dyn_ltree[2*m]=1,t.opt_len=t.static_len=0,t.last_lit=t.matches=0}function M(t){8<t.bi_valid?U(t,t.bi_buf):0<t.bi_valid&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0}function H(t,e,r,i){var n=2*e,s=2*r;return t[n]<t[s]||t[n]===t[s]&&i[e]<=i[r]}function G(t,e,r){for(var i=t.heap[r],n=r<<1;n<=t.heap_len&&(n<t.heap_len&&H(e,t.heap[n+1],t.heap[n],t.depth)&&n++,!H(e,i,t.heap[n],t.depth));)t.heap[r]=t.heap[n],r=n,n<<=1;t.heap[r]=i}function K(t,e,r){var i,n,s,a,o=0;if(0!==t.last_lit)for(;i=t.pending_buf[t.d_buf+2*o]<<8|t.pending_buf[t.d_buf+2*o+1],n=t.pending_buf[t.l_buf+o],o++,0===i?L(t,n,e):(L(t,(s=A[n])+u+1,e),0!==(a=w[s])&&P(t,n-=I[s],a),L(t,s=N(--i),r),0!==(a=k[s])&&P(t,i-=T[s],a)),o<t.last_lit;);L(t,m,e)}function Y(t,e){var r,i,n,s=e.dyn_tree,a=e.stat_desc.static_tree,o=e.stat_desc.has_stree,h=e.stat_desc.elems,u=-1;for(t.heap_len=0,t.heap_max=_,r=0;r<h;r++)0!==s[2*r]?(t.heap[++t.heap_len]=u=r,t.depth[r]=0):s[2*r+1]=0;for(;t.heap_len<2;)s[2*(n=t.heap[++t.heap_len]=u<2?++u:0)]=1,t.depth[n]=0,t.opt_len--,o&&(t.static_len-=a[2*n+1]);for(e.max_code=u,r=t.heap_len>>1;1<=r;r--)G(t,s,r);for(n=h;r=t.heap[1],t.heap[1]=t.heap[t.heap_len--],G(t,s,1),i=t.heap[1],t.heap[--t.heap_max]=r,t.heap[--t.heap_max]=i,s[2*n]=s[2*r]+s[2*i],t.depth[n]=(t.depth[r]>=t.depth[i]?t.depth[r]:t.depth[i])+1,s[2*r+1]=s[2*i+1]=n,t.heap[1]=n++,G(t,s,1),2<=t.heap_len;);t.heap[--t.heap_max]=t.heap[1],function(t,e){var r,i,n,s,a,o,h=e.dyn_tree,u=e.max_code,l=e.stat_desc.static_tree,f=e.stat_desc.has_stree,d=e.stat_desc.extra_bits,c=e.stat_desc.extra_base,p=e.stat_desc.max_length,m=0;for(s=0;s<=g;s++)t.bl_count[s]=0;for(h[2*t.heap[t.heap_max]+1]=0,r=t.heap_max+1;r<_;r++)p<(s=h[2*h[2*(i=t.heap[r])+1]+1]+1)&&(s=p,m++),h[2*i+1]=s,u<i||(t.bl_count[s]++,a=0,c<=i&&(a=d[i-c]),o=h[2*i],t.opt_len+=o*(s+a),f&&(t.static_len+=o*(l[2*i+1]+a)));if(0!==m){do{for(s=p-1;0===t.bl_count[s];)s--;t.bl_count[s]--,t.bl_count[s+1]+=2,t.bl_count[p]--,m-=2}while(0<m);for(s=p;0!==s;s--)for(i=t.bl_count[s];0!==i;)u<(n=t.heap[--r])||(h[2*n+1]!==s&&(t.opt_len+=(s-h[2*n+1])*h[2*n],h[2*n+1]=s),i--)}}(t,e),Z(s,u,t.bl_count)}function X(t,e,r){var i,n,s=-1,a=e[1],o=0,h=7,u=4;for(0===a&&(h=138,u=3),e[2*(r+1)+1]=65535,i=0;i<=r;i++)n=a,a=e[2*(i+1)+1],++o<h&&n===a||(o<u?t.bl_tree[2*n]+=o:0!==n?(n!==s&&t.bl_tree[2*n]++,t.bl_tree[2*b]++):o<=10?t.bl_tree[2*v]++:t.bl_tree[2*y]++,s=n,u=(o=0)===a?(h=138,3):n===a?(h=6,3):(h=7,4))}function V(t,e,r){var i,n,s=-1,a=e[1],o=0,h=7,u=4;for(0===a&&(h=138,u=3),i=0;i<=r;i++)if(n=a,a=e[2*(i+1)+1],!(++o<h&&n===a)){if(o<u)for(;L(t,n,t.bl_tree),0!=--o;);else 0!==n?(n!==s&&(L(t,n,t.bl_tree),o--),L(t,b,t.bl_tree),P(t,o-3,2)):o<=10?(L(t,v,t.bl_tree),P(t,o-3,3)):(L(t,y,t.bl_tree),P(t,o-11,7));s=n,u=(o=0)===a?(h=138,3):n===a?(h=6,3):(h=7,4)}}i(T);var q=!1;function J(t,e,r,i){P(t,(s<<1)+(i?1:0),3),function(t,e,r,i){M(t),i&&(U(t,r),U(t,~r)),n.arraySet(t.pending_buf,t.window,e,r,t.pending),t.pending+=r}(t,e,r,!0)}r._tr_init=function(t){q||(function(){var t,e,r,i,n,s=new Array(g+1);for(i=r=0;i<a-1;i++)for(I[i]=r,t=0;t<1<<w[i];t++)A[r++]=i;for(A[r-1]=i,i=n=0;i<16;i++)for(T[i]=n,t=0;t<1<<k[i];t++)E[n++]=i;for(n>>=7;i<f;i++)for(T[i]=n<<7,t=0;t<1<<k[i]-7;t++)E[256+n++]=i;for(e=0;e<=g;e++)s[e]=0;for(t=0;t<=143;)z[2*t+1]=8,t++,s[8]++;for(;t<=255;)z[2*t+1]=9,t++,s[9]++;for(;t<=279;)z[2*t+1]=7,t++,s[7]++;for(;t<=287;)z[2*t+1]=8,t++,s[8]++;for(Z(z,l+1,s),t=0;t<f;t++)C[2*t+1]=5,C[2*t]=j(t,5);O=new D(z,w,u+1,l,g),B=new D(C,k,0,f,g),R=new D(new Array(0),x,0,d,p)}(),q=!0),t.l_desc=new F(t.dyn_ltree,O),t.d_desc=new F(t.dyn_dtree,B),t.bl_desc=new F(t.bl_tree,R),t.bi_buf=0,t.bi_valid=0,W(t)},r._tr_stored_block=J,r._tr_flush_block=function(t,e,r,i){var n,s,a=0;0<t.level?(2===t.strm.data_type&&(t.strm.data_type=function(t){var e,r=4093624447;for(e=0;e<=31;e++,r>>>=1)if(1&r&&0!==t.dyn_ltree[2*e])return o;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return h;for(e=32;e<u;e++)if(0!==t.dyn_ltree[2*e])return h;return o}(t)),Y(t,t.l_desc),Y(t,t.d_desc),a=function(t){var e;for(X(t,t.dyn_ltree,t.l_desc.max_code),X(t,t.dyn_dtree,t.d_desc.max_code),Y(t,t.bl_desc),e=d-1;3<=e&&0===t.bl_tree[2*S[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e}(t),n=t.opt_len+3+7>>>3,(s=t.static_len+3+7>>>3)<=n&&(n=s)):n=s=r+5,r+4<=n&&-1!==e?J(t,e,r,i):4===t.strategy||s===n?(P(t,2+(i?1:0),3),K(t,z,C)):(P(t,4+(i?1:0),3),function(t,e,r,i){var n;for(P(t,e-257,5),P(t,r-1,5),P(t,i-4,4),n=0;n<i;n++)P(t,t.bl_tree[2*S[n]+1],3);V(t,t.dyn_ltree,e-1),V(t,t.dyn_dtree,r-1)}(t,t.l_desc.max_code+1,t.d_desc.max_code+1,a+1),K(t,t.dyn_ltree,t.dyn_dtree)),W(t),i&&M(t)},r._tr_tally=function(t,e,r){return t.pending_buf[t.d_buf+2*t.last_lit]=e>>>8&255,t.pending_buf[t.d_buf+2*t.last_lit+1]=255&e,t.pending_buf[t.l_buf+t.last_lit]=255&r,t.last_lit++,0===e?t.dyn_ltree[2*r]++:(t.matches++,e--,t.dyn_ltree[2*(A[r]+u+1)]++,t.dyn_dtree[2*N(e)]++),t.last_lit===t.lit_bufsize-1},r._tr_align=function(t){P(t,2,3),L(t,m,z),function(t){16===t.bi_valid?(U(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):8<=t.bi_valid&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)}(t)}},{\"../utils/common\":41}],53:[function(t,e,r){\"use strict\";e.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\"\",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(t,e,r){\"use strict\";e.exports=\"function\"==typeof setImmediate?setImmediate:function(){var t=[].slice.apply(arguments);t.splice(1,0,0),setTimeout.apply(null,t)}},{}]},{},[10])(10)});","/* eslint-disable no-unused-vars */\nimport parser from 'fast-xml-parser';\nimport JSZip from 'jszip/dist/jszip.min.js';\n\n/**\n * Parse metadata from xml file that is contained in BRML\n * @export\n * @param {String} file\n * @returns {Object} containing data (x: 2theta, y: counts), info and metadata\n */\nexport function parseDiffractogram(file) {\n  let json = parser.parse(file, {\n    ignoreAttributes: false,\n    attributeNamePrefix: '__',\n  });\n  const data = json.RawData;\n\n  let axes = data.DataRoutes.DataRoute.ScanInformation.ScanAxes.ScanAxisInfo.map(\n    (element) => ({\n      id: element.__AxisId,\n      name: element.__AxisName,\n      unitBase: element.Unit.__Base,\n      unitPrefix: element.Unit.__Prefix,\n      reference: element.reference,\n      start: element.start,\n      stop: element.stop,\n      increment: element.increment,\n    }),\n  );\n\n  let adddata = {\n    startTime: data.TimeStampStarted,\n    endTime: data.TimeStampFinished,\n    measurmentPoints:\n      data.DataRoutes.DataRoute.ScanInformation.MeasurementPoints,\n    timePerStep: data.DataRoutes.DataRoute.ScanInformation.TimePerStep,\n    timePerStepEffective:\n      data.DataRoutes.DataRoute.ScanInformation.TimePerStepEffective,\n    scanMode: data.DataRoutes.DataRoute.ScanInformation.ScanMode,\n    scanModeVisibleName:\n      data.DataRoutes.DataRoute.ScanInformation.ScanModeVisibleName,\n    userName: data.Identifier.__UserName,\n    machineName: data.Identifier.__MachineName,\n    guid: data.Identifier.Guid,\n    axes: axes,\n    goniometerType: data.FixedInformation.Instrument.GoniometerType,\n\n    anode:\n      data.FixedInformation.Instrument.PrimaryTracks.TrackInfoData.MountedOptics\n        .InfoData[0].Tube.TubeMaterial,\n    anodeVoltage:\n      data.FixedInformation.Instrument.PrimaryTracks.TrackInfoData.MountedOptics\n        .InfoData[0].Tube.Generator.Voltage.__Value,\n    anodeVoltageUnit:\n      data.FixedInformation.Instrument.PrimaryTracks.TrackInfoData.MountedOptics\n        .InfoData[0].Tube.Generator.Voltage.__Unit,\n    anodeSerialNumber:\n      data.FixedInformation.Instrument.PrimaryTracks.TrackInfoData.MountedOptics\n        .InfoData[0].Tube.SerialNumber.__Value,\n  };\n\n  const diffractogram = getXYDiffractogram(data.DataRoutes.DataRoute.Datum);\n\n  diffractogram.meta = { ...adddata, ...diffractogram.meta };\n\n  let label = adddata.axes[0].name.replace(/two/i, '2').replace(/theta/i, 'ϴ');\n  let unit = adddata.axes[0].unitBase.replace(/degree/i, '°');\n\n  diffractogram.info.xUnits = `${label} [${unit}]`;\n\n  return diffractogram;\n}\n\n/**\n * @param  {array} data array of strings of the measured points\n */\nfunction getXYDiffractogram(data) {\n  let axis1 = [];\n  let axis2 = [];\n  let measuredTimePerStep = [];\n  let plannedTimePerStep = [];\n  let counts = [];\n\n  data.forEach((element) => {\n    const factors = element.split(',');\n    measuredTimePerStep.push(parseFloat(factors[0]));\n    plannedTimePerStep.push(parseFloat(factors[1]));\n    axis1.push(parseFloat(factors[2]));\n    axis2.push(parseFloat(factors[3]));\n    counts.push(parseFloat(factors[4]));\n  });\n\n  const diffractogram = {\n    data: { x: axis1, y: counts },\n    info: {\n      xUnits: '2ϴ [°]',\n      yUnits: 'counts',\n      dataType: 'XRD pattern',\n      origin: 'Data converted from BRML using convert-to-jcamp',\n    },\n    meta: {\n      axis2: axis2,\n      measuredTimePerStep: measuredTimePerStep,\n      plannedTimePerStep: plannedTimePerStep,\n    },\n  };\n\n  return diffractogram;\n}\n/**\n * Read a BRML file (produced by Bruker instruments, a zip file that contains XMLs)\n * @export\n * @param {String/Array of bytes/ArrayBuffer/Uint8Array/Buffer/Blob/Promise} binary BRML file\n * @returns {Object} containing data (x: 2theta, y: counts), info and metadata\n */\nexport async function readBRML(binary) {\n  let zip = new JSZip();\n  const txt = await zip.loadAsync(binary).then(function (zipFiles) {\n    return zipFiles.file('Experiment0/RawData0.xml').async('text');\n  });\n\n  const diffractogram = parseDiffractogram(txt);\n\n  return diffractogram;\n}\n","import { Analysis } from '..';\n\nimport { readBRML } from './parseBRML';\n\n/**\n * Creates a new Chromatogram element based in a JCAMP string\n * @param {UInt8Array} blob - String containing the JCAMP data\n * @return {Analysis} - New class element with the given data\n */\nexport async function fromBRML(blob) {\n  let parsed = await readBRML(blob);\n  let analysis = new Analysis();\n\n  const variables = {\n    x: {\n      data: parsed.data.x,\n      label: parsed.info.xUnits,\n    },\n    y: {\n      data: parsed.data.y,\n      label: parsed.info.yUnits,\n    },\n  };\n\n  analysis.pushSpectrum(variables, {\n    title: parsed.info.title,\n    meta: parsed.meta,\n    dataType: 'XRD pattern',\n  });\n  return analysis;\n}\n","/**\n * Parse diffractograms saved in xy files that are generated with PowDLL\n * @export\n * @param {String} [text] Text containing the data\n * @returns {Object} containing data (x: 2theta, y: counts), info and metadata\n */\nexport function parsePowDLLXY(text) {\n  let lines = text.split(/\\r?\\n/).filter((line) => !line.match(/^\\s*$/));\n  const header = lines[0];\n  lines.splice(0, 1); // remove header line\n  let data = {\n    x: [],\n    y: [],\n  };\n  for (const line of lines) {\n    let tmp = line.split(/\\s+/);\n    data.x.push(parseFloat(tmp[0].trim()));\n    data.y.push(parseFloat(tmp[1].trim()));\n  }\n  let headerLines = header.split('\" ');\n\n  // try to make metadata consistent with Bruker\n  let meta = {};\n  meta.id = trimReplace(headerLines[0]);\n  meta.comment = trimReplace(headerLines[1]);\n  meta.userName = trimReplace(headerLines[2]);\n  meta.anode = trimReplace(headerLines[3]);\n  meta.scanType = trimReplace(headerLines[4]);\n  // eslint-disable-next-line radix\n  meta.timePerStep = parseInt(trimReplace(headerLines[5]));\n\n  const diffractogram = {\n    data: { x: data.x, y: data.y },\n    info: {\n      xUnits: '2ϴ [°]',\n      yUnits: 'counts',\n      dataType: 'XRD pattern',\n      origin: 'Data converted from xy using convert-to-jcamp',\n    },\n    meta: meta,\n  };\n\n  return diffractogram;\n}\n\nfunction trimReplace(string) {\n  return string.split(':')[1].replace('\"', '').replace(\"'\", '').trim();\n}\n","import { Analysis } from '..';\n\nimport { parsePowDLLXY } from './parsePowDLLXY';\n\n/**\n * Creates a new Chromatogram element based in a JCAMP string\n * @param {UInt8Array} blob - String containing the JCAMP data\n * @return {Analysis} - New class element with the given data\n */\nexport function fromPowDLLXY(blob) {\n  let parsed = parsePowDLLXY(blob);\n  let analysis = new Analysis();\n  const variables = {\n    x: {\n      data: parsed.data.x,\n      label: parsed.info.xUnits,\n    },\n    y: {\n      data: parsed.data.y,\n      label: parsed.info.yUnits,\n    },\n  };\n\n  analysis.pushSpectrum(variables, {\n    title: parsed.info.title,\n    meta: parsed.meta,\n    dataType: 'XRD pattern',\n  });\n\n  return analysis;\n}\n","// source: http://gisaxs.com/index.php/X-ray_energy\n\nexport const kAlpha1Angstrom = {\n  CuKa: 1.54184,\n  CuKa2: 1.54439,\n  CuKa1: 1.54056,\n  CuKb1: 1.39222,\n  MoKa: 0.71073,\n  MoKa2: 0.71359,\n  MoKa1: 0.7093,\n  MoKb1: 0.63229,\n  CrKa: 2.291,\n  CrKa2: 2.29361,\n  CrKa1: 2.2897,\n  CrKb1: 2.08487,\n  FeKa: 1.93735,\n  FeKa2: 1.93998,\n  FeKa1: 1.93604,\n  FeKb1: 1.75661,\n  CoKa: 1.79026,\n  CoKa2: 1.79285,\n  CoKa1: 1.78896,\n  CoKb1: 1.63079,\n  AgKa: 0.560885,\n  AgKa2: 0.563813,\n  AgKa1: 0.559421,\n  AgKb1: 0.497082,\n};\n"],"names":["addStyle","serie","spectrum","options","color","opacity","lineWidth","match","toString","toUpperCase","replace","style","name","line","width","dash","label","id","COLORS","getJSGraph","analyses","colors","opacities","linesWidth","selector","normalization","series","xLabel","yLabel","i","length","analysis","currentData","getNormalizedSpectrum","variables","x","y","data","push","axes","unit","flipped","display","getNormalizationAnnotations","filter","boundary","min","max","exclusions","annotations","exclusion","ignore","map","annotation","type","position","from","to","strokeWidth","fillColor","undefined","Number","MIN_SAFE_INTEGER","MAX_SAFE_INTEGER","getData","Array","getReactPlotJSON","query","xAxis","xAxisOptions","yAxis","yAxisOptions","labelSpace","seriesOptions","displayMarker","dimentions","height","meta","spectra","getXYSpectrum","title","appendDistinctParameter","values","key","value","count","includes","appendDistinctValue","AnalysesManager","constructor","addAnalysis","index","getAnalysisIndex","getAnalyses","ids","getSpectra","getDistinctTitles","Object","keys","getDistinctUnits","units","getDistinctLabels","getDistinctDataTypes","dataType","getDistinctMeta","removeAllAnalyses","splice","removeAnalysis","isNaN","prototype","isAnyArray","object","call","endsWith","input","arguments","isArray","TypeError","_options$fromIndex","fromIndex","_options$toIndex","toIndex","isInteger","Error","maxValue","minValue","a","d","e","f","g","h","j","c","b","_ref","module","exports","window","median","quickSelectMedian","slice","xAdd","array1","array2","isConstant","constant","array3","xMultiply","Float64Array","xDivide","xIsMonotone","array","global","factory","this","ascending","NaN","bisector","compare","ascendingComparator","left","lo","hi","mid","right","ascendingBisect","bisectRight","bisectLeft","descending","number$1","variance","n","m","s","deviation","v","Math","sqrt","extent","identity","range","start","stop","step","ceil","e10","e5","e2","ticks","tickStep","floor","step0","abs","step1","pow","log","LN10","error","sturges","LN2","number","histogram","domain","threshold","xz","x0","x1","tz","shift","pop","bins","bin","_","thresholds","quantile","p","freedmanDiaconis","sort","scott","mean","numbers","merge","arrays","merged","pairs","permute","indexes","permutes","scan","xi","xj","shuffle","i0","i1","t","random","sum","transpose","matrix","row","zip","version","bisect","thresholdFreedmanDiaconis","thresholdScott","thresholdSturges","sumValue","xSubtract","isEnumerable","propertyIsEnumerable","getSymbols","getOwnPropertySymbols","target","args","isObject","Symbol","arg","names","val","isValidKey","assign","isPrimitive","assignSymbols","rescale","output","currentMin","currentMax","RangeError","_options$min","autoMinMax","_options$max","factor","indent","repeat","indentData","inspectMatrix","inspectMatrixWithOptions","maxRows","maxColumns","maxNumSize","inspectData","rows","columns","maxI","maxJ","result","formatNumber","get","join","num","numStr","String","padEnd","precise","toPrecision","exponential","toExponential","eIndex","indexOf","installMathOperations","AbstractMatrix","Matrix","add","addS","addM","set","checkMatrix","newMatrix","sub","subS","subM","subtract","subtractS","subtractM","mul","mulS","mulM","multiply","multiplyS","multiplyM","div","divS","divM","divide","divideS","divideM","mod","modS","modM","modulus","modulusS","modulusM","and","andS","andM","or","orS","orM","xor","xorS","xorM","leftShift","leftShiftS","leftShiftM","signPropagatingRightShift","signPropagatingRightShiftS","signPropagatingRightShiftM","rightShift","rightShiftS","rightShiftM","zeroFillRightShift","zeroFillRightShiftS","zeroFillRightShiftM","not","acos","acosh","asin","asinh","atan","atanh","cbrt","clz32","cos","cosh","exp","expm1","fround","log1p","log10","log2","round","sign","sin","sinh","tan","tanh","trunc","arg0","powS","powM","checkRowIndex","outer","checkColumnIndex","checkRowVector","vector","to1DArray","checkColumnVector","checkIndices","rowIndices","columnIndices","checkRowIndices","column","checkColumnIndices","rowOut","some","r","columnOut","checkRange","startRow","endRow","startColumn","endColumn","checkNumber","newArray","checkNonEmpty","isEmpty","sumByRow","sumByColumn","sumAll","productByRow","productByColumn","productAll","varianceByRow","unbiased","cols","sum1","sum2","varianceByColumn","varianceAll","size","centerByRow","centerByColumn","centerAll","getScaleByRow","scale","scaleByRow","getScaleByColumn","scaleByColumn","getScaleAll","divider","scaleAll","from1DArray","newRows","newColumns","newData","rowVector","columnVector","zeros","ones","fill","rand","randInt","interval","eye","diag","l","matrix1","matrix2","isMatrix","klass","apply","callback","to2DArray","copy","toJSON","isRowVector","isColumnVector","isVector","isSquare","isSymmetric","isEchelonForm","previousColumn","checked","isReducedEchelonForm","k","echelonForm","clone","iMax","swapRows","tmp","reducedEchelonForm","maxRow","pivot","setSubMatrix","neg","getRow","getRowVector","setRow","row1","row2","temp","getColumn","getColumnVector","setColumn","swapColumns","column1","column2","addRowVector","subRowVector","mulRowVector","divRowVector","addColumnVector","subColumnVector","mulColumnVector","divColumnVector","mulRow","mulColumn","maxIndex","idx","minIndex","maxRowIndex","minRow","minRowIndex","maxColumn","maxColumnIndex","minColumn","minColumnIndex","norm","cumulativeSum","dot","vector2","vector1","mmul","other","Bcolj","strassen2x2","a11","b11","a12","b12","a21","b21","a22","b22","m1","m2","m3","m4","m5","m6","m7","c00","c01","c10","c11","strassen3x3","a00","a01","a02","a10","a20","b00","b01","b02","b10","b20","m8","m9","m10","m11","m12","m13","m14","m15","m16","m17","m18","m19","m20","m21","m22","m23","c02","c12","c20","c21","c22","mmulStrassen","r1","c1","r2","c2","console","warn","embed","mat","resultat","blockMult","halfRows","parseInt","halfCols","subMatrix","scaleRows","isFinite","scaleColumns","flipRows","middle","first","last","flipColumns","kroneckerProduct","q","sortRows","compareFunction","compareNumbers","sortColumns","subMatrixRow","indices","subMatrixColumn","selection","rowIndex","columnIndex","trace","by","product","standardDeviation","center","for","randomInt","diagonal","negate","tensorProduct","nRows","nColumns","arrayData","removeRow","addRow","removeColumn","newRow","addColumn","BaseView","MatrixTransposeView","WrapperMatrix2D","LuDecomposition","lu","pivotVector","pivotSign","LUcolj","kmax","LU","isSingular","col","solve","X","determinant","lowerTriangularMatrix","upperTriangularMatrix","pivotPermutationVector","hypotenuse","QrDecomposition","qr","rdiag","nrm","QR","Rdiag","isFullRank","orthogonalMatrix","SingularValueDecomposition","computeLeftSingularVectors","computeRightSingularVectors","autoTranspose","wantu","Boolean","wantv","swapped","aux","nu","ni","U","V","work","si","nct","nrt","mrc","pp","eps","EPSILON","kase","alpha","MIN_VALUE","ks","cs","sn","sp","spm1","epm1","sk","ek","Y","scols","Ls","rightSingularVectors","VL","vrows","urows","VLU","solveForDiagonal","inverse","vcols","ucols","condition","norm2","rank","tol","ii","leftSingularVectors","diagonalMatrix","useSVD","leftHandSide","rightHandSide","_options$algorithm","algorithm","_options$sumValue","_options$maxValue","toLowerCase","absoluteSumValue","absoluteSum","currentMaxValue","_i","sumFactor","_i2","concat","_typeof","obj","iterator","sequentialFill","_options","_options$from","_options$to","_options$size","normalize","zones","NEGATIVE_INFINITY","POSITIVE_INFINITY","JSON","parse","stringify","zone","forEach","currentZone","invert","nextExclusion","zonesWithPoints","numberOfPoints","totalSize","reduce","previous","current","unitsPerPoint","currentTotal","integral","slope","intercept","equallySpacedSmooth","xLength","halfStep","initialOriginalStep","lastOriginalStep","previousX","previousY","nextX","nextY","currentValue","sumAtMin","sumAtMax","getSlope","y0","y1","main","equallySpacedSlot","lastStep","MAX_VALUE","frontOutsideSpectra","backOutsideSpectra","currentPoints","equallySpaced","arrayXY","reverse","variant","xResult","yResult","zoneResult","processZone","getZones","currentFrom","filterX","points","currentZoneIndex","newX","newY","maybeToPrecision","digits","checkArraySize","BaseRegression","new","predict","_predict","train","toLaTeX","score","y2","xSum","ySum","chi2","rmsd","xSquared","ySquared","xY","PolynomialRegression","degree","powers","coefficients","checkArrayLength","regress","precision","_toFormula","isLaTeX","sup","closeSup","times","fn","str","charAt","load","json","pr","F","FT","A","B","baselineCorrectionRegression","maxIterations","Regression","regressionOptions","tolerance","baseline","fitting","oldFitting","iteration","delta","regression","corrected","defaultOptions","arrayCase","len","cond","matrixCase","padArray","factorial","windowSize","derivative","polynomial","pad","padValue","savitzkyGolay","C","ans","J","inic","Jtranspose","Jinv","det","minMax","arithmeticMean","geometricMean","logMean","lnsum","grandMean","means","samples","truncatedMean","percent","alreadySorted","harmonicMean","contraHarmonicMean","half","theMean","theVariance","standardError","robustMeanAndStdev","stdev","averageDeviations","quartiles","quart","q1","q2","q3","pooledStandardDeviation","pooledVariance","vari","mode","itemCount","itemArray","covariance","mean1","mean2","cov","skewness","s2","s3","dev","kurtosis","s4","entropy","weightedMean","weights","weightedStandardDeviation","weightedVariance","z","w","inPlace","standardize","standardDev","newSpectrum","filters","processing","filterOptions","Stat","std","normed","baselineCorrection","process","kind","isMonotone","isString","isFiniteImpl","isNumber","uniq","strings","seen","item","hasOwnProperty","compareArray","properties","mulSafe","decimals","getFractional","divSafe","den","invDen","QtyError","err","create","message","stack","throwIncompatibleUnits","UNITS","PI","BASE_UNITS","UNITY","UNITY_ARRAY","validateUnitDefinition","unitDef","definition","scalar","numerator","denominator","PREFIX_VALUES","PREFIX_MAP","UNIT_VALUES","UNIT_MAP","OUTPUT_MAP","getUnits","unitKeys","substr","getKinds","getAliases","unitName","SIGNATURE_VECTOR","unitSignature","signature","unitSignatureVector","isBase","toBase","SIGN","INTEGER","SIGNED_INTEGER","FRACTION","FLOAT","EXPONENT","SCI_NUMBER","SIGNED_NUMBER","QTY_STRING","QTY_STRING_REGEX","RegExp","POWER_OP","SAFE_POWER","TOP_REGEX","BOTTOM_REGEX","trim","exec","scalarMatch","parseFloat","top","bottom","nx","UNIT_TEST_REGEX","test","parseUnits","PREFIX_REGEX","UNIT_REGEX","BOUNDARY_REGEX","UNIT_MATCH","UNIT_MATCH_REGEX","parsedUnitsCache","cached","unitMatch","normalizedUnits","globalParse","isQty","Qty","initValue","initUnits","assertValidConstructorArgs","baseScalar","_conversionCache","isDefinitionObject","updateBaseScalar","isTemperature","base","KINDS","knownSignature","isDegrees","subtractTemperatures","lhs","rhs","lhsUnits","rhsConverted","dstDegrees","getDegreeUnits","subtractTempDegrees","deg","tempDegrees","addTempDegrees","toDegrees","src","dst","srcDegK","toDegK","dstUnits","dstScalar","qty","toTemp","toTempK","isCompatible","isInverse","baseUnitCache","toBaseUnits","toFloat","isUnitless","toPrec","precQuantity","precRoundedResult","swiftConverter","srcUnits","srcQty","dstQty","eq","convert","converter","op1","op2","numdenscale","cleanTerms","num1","den1","num2","den2","notUnity","combined","combineTerms","terms","direction","prefix","prefixValue","combinedPrefixValue","prop","compareTo","lt","lte","gt","gte","same","every","_isBase","NestedMap","childMap","defaultFormatter","formatter","_units","numIsUnity","denIsUnity","numUnits","stringifyUnits","denUnits","targetUnitsOrMaxDecimalsOrPrec","maxDecimals","targetUnits","out","outScalar","format","targetQty","stringifiedUnitsCache","stringified","isUnity","simplify","getOutputNames","unitNames","token","tokenNext","unitCounts","acc","unitCounter","unitCount","convertUnit","fromUnit","toUnit","testRegExp","ensureRegexp","string","parts","stringToRegexp","flags","getConvertedVariable","variable","newUnits","variableNames","xUnits","yUnits","labels","split","getPossibleVariable","variableName","possible","converted","Analysis","substring","cache","pushSpectrum","standardizeData","getXLabel","getYLabel","xVariable","yVariable","GC_MS_FIELDS","complexChromatogram","chromatogram","ms","dimension","existingGCMSFields","convertMSFieldToLabel","pageValue","isMSField","canonicDataLabel","convertToFloatArray","stringArray","floatArray","fastParseXYData","yFactor","deltaX","isXYdata","currentX","firstX","currentY","firstY","endLine","ascii","charCodeAt","newLine","isDifference","isLastDifference","lastDifference","isDuplicate","inComment","lastValue","isNegative","inValue","skipFirstValue","decimalPosition","duplicate","ascii2","removeCommentRegExp","peakTableSplitRegExp","parsePeakTable","isPeaktable","parseXY","parseXYZ","lines","xFactor","logs","numberOfVariables","parseXYA","removeSymbolRegExp","isXYAdata","convertTo3DZ","minZ","maxZ","ySize","xSize","lastX","lastY","minX","maxX","minY","maxY","noise","getMedian","generateContourLines","zData","povarHeight0","povarHeight1","povarHeight2","povarHeight3","isOver0","isOver1","isOver2","isOver3","nbSubSpectra","nbPovars","pAx","pAy","pBx","pBy","xN","dx","yN","dy","iter","nbContourLevels","contourLevels","lineZValue","level","contourLevel","side","noiseMultiplier","zValue","iSubSpectra","subSpectra","subSpectraAfter","povar","segments","add2D","noContour","contourLines","FFT","release","date","_n","_bitrev","_cstb","core","init","_initArray","_makeBitReversalTable","_makeCosSinTable","fft1d","re","im","fft","ifft1d","bt1d","fft2d","tre","tim","x2","ifft2d","inv","ik","wr","wi","xr","n4","Uint32Array","_paddingZero","n2","n8","n2p4","dc","ds","apis","bt","ifft","gyromagneticRatio","postProcessingNMR","entriesFlat","observeFrequency","shiftOffsetVal","entry","ntuples","symbol","nucleus","startsWith","$NUC2","$NUC1","yType","pageSymbolIndex","pageSymbol","ratio0","ratio1","ratio","profiling","action","time","Date","now","simpleChromatogram","intensity","postProcessing","newNtuples","twoD","wantXY","keepSpectra","prepareNtuplesDatatable","currentEntry","xIndex","yIndex","firstVariable","secondVariable","lowerCaseSymbol","vardim","nbPoints","varname","prepareSpectrum","ntuplesSeparatorRegExp","numberRegExp","Spectrum","keepRecordsRegExp","canonicDataLabels","canonicMetadataLabels","dynamicTyping","withoutXY","jcamp","entries","tmpResult","children","parentsStack","ldrs","ldr","dataLabel","dataValue","infos","datatable","parentEntry","info","dataClass","xType","shiftOffsetNum","vartype","varform","page","sampleDescription","flatten","fromJcamp","addJcamp","currentSpectrum","creatorNtuples","owner","origin","varName","varType","varDim","minFct","maxFct","header","point","fromJSON","fromVariables","forceNtuples","jcampOptions","toJcamps","jcamps","getJcamp","toJcamp","JSGraph","nameStartChar","nameChar","nameRegexp","regexName","getAllMatches","regex","matches","allmatches","isName","arrayMode","isExist","props","newOptions","tagName","parentTagName","convertToJson","node","jObj","child","util","isEmptyObject","attrsMap","cdataPositionChar","asArray","isTagNameInArrayMode","tagname","textNodeName","tag","parent","addChild","buildOptions","attributeNamePrefix","attrNodeName","ignoreAttributes","ignoreNameSpace","allowBooleanAttributes","parseNodeValue","parseAttributeValue","trimValues","cdataTagName","tagValueProcessor","attrValueProcessor","attrName","stopNodes","processTagValue","parseValue","parseTrueNumberOnly","resolveNameSpace","tags","shouldParse","parsed","attrsRegx","buildAttributesMap","attrStr","attrs","attrCollection","getTraversalObj","xmlData","xmlObj","xmlNode","currentNode","textData","ch","closeIndex","findClosingIndex","colonIndex","getValue","startIndex","tagExp","childNode","closingIndexForOpeningTag","separatorIndex","lastIndexOf","attrBoundary","errMsg","closingIndex","tagFound","reachedRoot","readPI","readCommentAndCDATA","closingTag","validateTagName","msg","getErrorObject","getLineNumberForPosition","readAttributeStr","isValid","validateAttributeString","code","tagClosed","otg","afterAmp","validateAmpersand","angleBracketsCount","doubleQuote","singleQuote","startChar","validAttrStrRegxp","attrNames","getPositionFromMatch","validateAttrName","validateNumberAmpersand","lineNumber","char","fromCharCode","chars","nilChar","missingChar","nilPremitive","missingPremitive","emptyChar","emptyValue","boundryChar","objStart","arrStart","arrayEnd","charsArr","_e","e_schema","hasValidData","hasData","itemSchema","arr_len","arr_i","processValue","isAppChar","require$$0","convert2nimn","x2j","convertToJsonString","indentBy","_cToJsonStr","stringval","supressEmptyNode","Parser","isAttribute","attrPrefixLen","isCDATA","replaceCDATAstr","replaceCDATAarr","indentate","tagEndChar","buildTextNode","buildEmptyTextNode","buildObjNode","buildEmptyObjNode","buildTextValNode","buildObjectNode","j2x","attr","arrLen","Ks","L","cdata","x2xmlnode","xmlToNodeobj","validationOption","validator","validate","traversableObj","nodeToJson","require$$1","require$$2","require$$3","schema","convertTonimn","o","u","require","encode","getTypeOf","decode","uint8array","Uint8Array","compressedSize","uncompressedSize","crc32","compression","compressedContent","getContentWorker","Promise","resolve","pipe","uncompressWorker","on","streamInfo","data_length","getCompressedWorker","withStreamInfo","createWorkerFrom","compressWorker","STORE","magic","DEFLATE","base64","binary","dir","createFolders","compressionOptions","comment","unixPermissions","dosPermissions","lie","Uint16Array","_pako","_pakoAction","_pakoOptions","inherits","processChunk","_createPako","transformTo","flush","cleanUp","raw","onData","pako","file","O","utf8encode","I","S","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCFullYear","getUTCMonth","getUTCDate","E","fileRecord","R","LOCAL_FILE_HEADER","dirRecord","CENTRAL_FILE_HEADER","bytesWritten","zipComment","zipPlatform","encodeFileName","streamFiles","accumulate","contentBuffer","dirRecords","currentSourceOffset","entriesCount","currentFile","_sources","openedSource","closedSource","DATA_DESCRIPTOR","CENTRAL_DIRECTORY_END","prepareNextSource","isPaused","pause","resume","registerPrevious","end","generatedError","lock","generateWorker","platform","_compressWorker","files","root","loadAsync","support","defaults","external","decompressed","extend","checkCRC32","optimizedBinaryString","decodeFileName","utf8decode","isNode","isStream","reject","prepareContent","then","all","fileNameStr","fileCommentStr","_upstreamEnded","_bindStream","_stream","Readable","_helper","emit","_read","Buffer","newBufferFrom","allocBuffer","alloc","isBuffer","folder","remove","generate","generateInternalStream","mimeType","checkSupport","generateAsync","generateNodeStream","toNodejsStream","stream","byteAt","zero","lastIndexOfSignature","readAndCheckSignature","readData","checkOffset","checkIndex","setIndex","skip","readInt","readString","readDate","UTC","subarray","ZIP64_CENTRAL_DIRECTORY_LOCATOR","ZIP64_CENTRAL_DIRECTORY_END","destType","propName","dataIsReady","_tickScheduled","_tickAndRepeat","delay","isFinished","_tick","extraStreamInfo","isLocked","_listeners","mergeStreamInfo","nodestream","_internalType","_outputType","_mimeType","newBlob","_worker","objectMode","arraybuffer","ArrayBuffer","nodebuffer","blob","Blob","self","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","MSBlobBuilder","append","getBlob","leftOver","applyFromCharCode","Utf8DecodeWorker","Utf8EncodeWorker","stringifyByChunk","stringifyByChar","applyCanBeUsed","buffer","byteLength","MAX_VALUE_16BITS","MAX_VALUE_32BITS","pretty","FileReader","onload","onerror","readAsArrayBuffer","loadOptions","checkSignature","reader","isSignature","readBlockEndOfCentral","diskNumber","diskWithCentralDirStart","centralDirRecordsOnThisDisk","centralDirRecords","centralDirSize","centralDirOffset","zipCommentLength","readBlockZip64EndOfCentral","zip64EndOfCentralSize","zip64ExtensibleData","readBlockZip64EndOfCentralLocator","diskWithZip64CentralDirStart","relativeOffsetEndOfZip64CentralDir","disksCount","readLocalFiles","localHeaderOffset","readLocalPart","handleUTF8","processAttributes","readCentralDir","zip64","readCentralPart","readEndOfCentral","prepareReader","isEncrypted","bitFlag","useUTF8","fileNameLength","fileName","compressionMethod","versionMadeBy","extraFieldsLength","fileCommentLength","diskNumberStart","internalFileAttributes","externalFileAttributes","readExtraFields","parseZIP64ExtraField","fileComment","extraFields","findExtraFieldUnicodePath","findExtraFieldUnicodeComment","_data","_dataBinary","internalStream","_decompressWorker","async","nodeStream","MutationObserver","WebKitMutationObserver","document","createTextNode","observe","characterData","setImmediate","MessageChannel","createElement","onreadystatechange","parentNode","removeChild","documentElement","appendChild","setTimeout","port1","onmessage","port2","postMessage","state","queue","outcome","promise","onFulfilled","callFulfilled","otherCallFulfilled","onRejected","callRejected","otherCallRejected","status","finally","catch","race","immediate","method","chunkSize","windowBits","memLevel","strategy","gzip","ended","chunks","strm","avail_out","deflateInit2","deflateSetHeader","dictionary","string2buf","deflateSetDictionary","_dict_set","next_in","avail_in","Buf8","next_out","deflate","onEnd","buf2binstring","shrinkBuf","deflateEnd","flattenChunks","Deflate","deflateRaw","inflateInit2","Z_OK","inflateGetHeader","Z_FINISH","Z_NO_FLUSH","binstring2buf","inflate","Z_NEED_DICT","inflateSetDictionary","Z_BUF_ERROR","Z_STREAM_END","Z_SYNC_FLUSH","utf8border","buf2string","arraySet","inflateEnd","Inflate","inflateRaw","ungzip","Int32Array","setTyped","Buf16","Buf32","Z_PARTIAL_FLUSH","Z_FULL_FLUSH","Z_BLOCK","Z_TREES","Z_ERRNO","Z_STREAM_ERROR","Z_DATA_ERROR","Z_NO_COMPRESSION","Z_BEST_SPEED","Z_BEST_COMPRESSION","Z_DEFAULT_COMPRESSION","Z_FILTERED","Z_HUFFMAN_ONLY","Z_RLE","Z_FIXED","Z_DEFAULT_STRATEGY","Z_BINARY","Z_TEXT","Z_UNKNOWN","Z_DEFLATED","T","D","pending","pending_buf","pending_out","total_out","N","_tr_flush_block","block_start","strstart","P","max_chain_length","prev_length","nice_match","w_size","w_mask","prev","good_match","lookahead","match_start","window_size","hash_size","head","wrap","adler","total_in","insert","ins_h","hash_shift","hash_mask","Z","match_length","_tr_tally","max_lazy_match","last_lit","W","prev_match","match_available","M","good_length","max_lazy","nice_length","max_chain","func","H","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","heap_len","heap_max","depth","l_buf","lit_bufsize","d_buf","opt_len","static_len","bi_buf","bi_valid","G","data_type","_tr_init","K","deflateInit","deflateReset","deflateResetKeep","text","hcrc","extra","os","_tr_align","_tr_stored_block","deflateInfo","xflags","extra_len","done","dmax","wsize","whave","wnext","hold","bits","lencode","distcode","lenbits","distbits","sane","havedict","check","total","wbits","offset","ncode","nlen","ndist","have","next","lens","lendyn","distdyn","back","was","inflateReset","inflateReset2","inflateResetKeep","inflateInit","inflateInfo","static_tree","extra_bits","extra_base","elems","max_length","has_stree","dyn_tree","max_code","stat_desc","parseDiffractogram","parser","RawData","DataRoutes","DataRoute","ScanInformation","ScanAxes","ScanAxisInfo","element","__AxisId","__AxisName","unitBase","Unit","__Base","unitPrefix","__Prefix","reference","increment","adddata","startTime","TimeStampStarted","endTime","TimeStampFinished","measurmentPoints","MeasurementPoints","timePerStep","TimePerStep","timePerStepEffective","TimePerStepEffective","scanMode","ScanMode","scanModeVisibleName","ScanModeVisibleName","userName","Identifier","__UserName","machineName","__MachineName","guid","Guid","goniometerType","FixedInformation","Instrument","GoniometerType","anode","PrimaryTracks","TrackInfoData","MountedOptics","InfoData","Tube","TubeMaterial","anodeVoltage","Generator","Voltage","__Value","anodeVoltageUnit","__Unit","anodeSerialNumber","SerialNumber","diffractogram","getXYDiffractogram","Datum","axis1","axis2","measuredTimePerStep","plannedTimePerStep","counts","factors","readBRML","JSZip","txt","zipFiles","fromBRML","parsePowDLLXY","headerLines","trimReplace","scanType","fromPowDLLXY","kAlpha1Angstrom","CuKa","CuKa2","CuKa1","CuKb1","MoKa","MoKa2","MoKa1","MoKb1","CrKa","CrKa2","CrKa1","CrKb1","FeKa","FeKa2","FeKa1","FeKb1","CoKa","CoKa2","CoKa1","CoKb1","AgKa","AgKa2","AgKa1","AgKb1"],"mappings":"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