Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@opuscapita/excel-service

Package Overview
Dependencies
Maintainers
29
Versions
11
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@opuscapita/excel-service - npm Package Compare versions

Comparing version 1.0.3 to 1.0.4

3

CHANGELOG.md

@@ -7,2 +7,5 @@ # Changelog

## 1.0.4
* Styled excel export: added support for valueRender
## 1.0.3

@@ -9,0 +12,0 @@ * Fixed installation instructions

33

lib/cjs/styled-excel-export.js

@@ -79,2 +79,4 @@ 'use strict';

cellData.valueKeyPath = column.valueKeyPath;
cellData.valueRender = column.valueRender;
cellData.disableValueRenderInExcel = column.disableValueRenderInExcel;
} else if (rowIndex > 0) {

@@ -95,3 +97,4 @@ cellData.valueKeyPath = upperCell.valueKeyPath;

var columns = exportData.columns,
data = exportData.data,
_exportData$data = exportData.data,
data = _exportData$data === undefined ? [] : _exportData$data,
dataStyle = exportData.dataStyle,

@@ -147,7 +150,3 @@ formatter = exportData.formatter,

var cellColIndex = colIndex + colOffset;
var cellValue = value;
if (formatter) {
cellValue = formatter(value);
}
var cell = { v: cellValue, s: dataStyle };
var cell = { v: value, s: dataStyle };
if (!noBorders) {

@@ -157,3 +156,3 @@ cell.s = _extends({}, cell.s, border);

var cellRef = _xlsxStyles2.default.utils.encode_cell({ c: cellColIndex, r: cellRowIndex });
switch (typeof cellValue === 'undefined' ? 'undefined' : _typeof(cellValue)) {
switch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {
case 'number':

@@ -178,2 +177,12 @@ {

var formatCell = function formatCell(value, column, row) {
var cellValue = value;
if (column.valueRender && !column.disableValueRenderInExcel) {
cellValue = column.valueRender(row);
} else if (formatter) {
cellValue = formatter(value);
}
return cellValue;
};
var detailedColumns = columnTitles.length > 0 ? columnTitles[rowOffset - 1] : [];

@@ -184,3 +193,4 @@ var endColumnIndex = 0;

detailedColumns.forEach(function (column, colIndex) {
createCell(row[column.valueKeyPath], colIndex, rowIndex);
var cellValue = formatCell(row.getIn ? row.getIn(column.valueKeyPath) : row[column.valueKeyPath], column, row);
createCell(cellValue, colIndex, rowIndex);
});

@@ -192,3 +202,4 @@ });

row.forEach(function (column, colIndex) {
createCell(column.value, colIndex, rowIndex);
var cellValue = formatCell(column.value, column, row);
createCell(cellValue, colIndex, rowIndex);
var currentColIndex = colIndex + colOffset;

@@ -200,3 +211,3 @@ endColumnIndex = endColumnIndex < currentColIndex ? currentColIndex : endColumnIndex;

}
var endRowIndex = data.length + rowOffset;
var endRowIndex = (data.length || data.size) + rowOffset;
var range = {

@@ -242,2 +253,2 @@ s: {

};
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdHlsZWQtZXhjZWwtZXhwb3J0LmpzIl0sIm5hbWVzIjpbIndyaXRlT3B0aW9ucyIsInR5cGUiLCJib29rU1NUIiwiYm9va1R5cGUiLCJzaG93R3JpZExpbmVzIiwiRVhDRUxfTUFYX1JPV19DT1VOVCIsIkVYQ0VMX01BWF9DT0xfQ09VTlQiLCJib3JkZXJTdHlsZSIsInN0eWxlIiwiY29sb3IiLCJyZ2IiLCJib3JkZXIiLCJ0b3AiLCJib3R0b20iLCJsZWZ0IiwicmlnaHQiLCJjcmVhdGVDb2x1bW5UaXRsZXMiLCJjb2x1bW5zIiwiY29sT2Zmc2V0IiwiaGVhZGVyU3R5bGUiLCJub0JvcmRlcnMiLCJjZWxscyIsInJvd0luZGV4Iiwicm93IiwiZm9yRWFjaCIsImNvbHVtbiIsImNvbEluZGV4IiwiY2VsbEluZGV4IiwiQXJyYXkiLCJpc0FycmF5IiwiY2VsbFZhbHVlIiwiaGVhZGVyIiwiY2VsbCIsInYiLCJ0IiwicyIsImNlbGxSZWYiLCJYTFNYIiwidXRpbHMiLCJlbmNvZGVfY2VsbCIsImMiLCJyIiwiY2VsbERhdGEiLCJtZXJnZSIsImUiLCJ1cHBlckNlbGwiLCJ1bmRlZmluZWQiLCJ2YWx1ZUtleVBhdGgiLCJ3Y2giLCJsZW5ndGgiLCJwdXNoIiwiY3JlYXRlRGF0YVNoZWV0IiwiZXhwb3J0RGF0YSIsImRhdGEiLCJkYXRhU3R5bGUiLCJmb3JtYXR0ZXIiLCJyb3dzIiwid29ya3NoZWV0IiwiY29sdW1uVGl0bGVzIiwicm93T2Zmc2V0IiwibWVyZ2VzIiwiY29scyIsImNvbHVtblJvdyIsImNvbHVtblRpdGxlIiwiY2VsbFJvd0luZGV4IiwidGl0bGUiLCJ3aWR0aCIsInVuc2hpZnQiLCJjcmVhdGVDZWxsIiwidmFsdWUiLCJjZWxsQ29sSW5kZXgiLCJkZXRhaWxlZENvbHVtbnMiLCJlbmRDb2x1bW5JbmRleCIsImN1cnJlbnRDb2xJbmRleCIsImVuZFJvd0luZGV4IiwicmFuZ2UiLCJlbmNvZGVfcmFuZ2UiLCJzaGVldHMiLCJmaWxlTmFtZSIsIndvcmtib29rIiwiU2hlZXROYW1lcyIsIlNoZWV0cyIsInNoZWV0IiwiaW5kZXgiLCJzaGVldE5hbWUiLCJuYW1lIiwid3NTaGVldCIsIndib3V0Iiwid3JpdGUiLCJzMmFiIiwiYnVmIiwiQXJyYXlCdWZmZXIiLCJ2aWV3IiwiVWludDhBcnJheSIsImkiLCJjaGFyQ29kZUF0IiwiQmxvYiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O2tRQUFBO0FBQ0E7QUFDQTs7O0FBQ0E7Ozs7QUFDQTs7Ozs7O0FBRUEsSUFBTUEsZUFBZTtBQUNuQkMsUUFBTSxRQURhO0FBRW5CQyxXQUFTLEtBRlU7QUFHbkJDLFlBQVUsTUFIUztBQUluQkMsaUJBQWU7QUFKSSxDQUFyQjs7QUFPQSxJQUFNQyxzQkFBc0IsT0FBNUI7QUFDQSxJQUFNQyxzQkFBc0IsS0FBNUI7O0FBRUE7QUFDQSxJQUFNQyxjQUFjLEVBQUVDLE9BQU8sTUFBVCxFQUFpQkMsT0FBTyxFQUFFQyxLQUFLLFFBQVAsRUFBeEIsRUFBcEI7QUFDQSxJQUFNQyxTQUFTO0FBQ2JBLFVBQVE7QUFDTkMsU0FBS0wsV0FEQztBQUVOTSxZQUFRTixXQUZGO0FBR05PLFVBQU1QLFdBSEE7QUFJTlEsV0FBT1I7QUFKRDtBQURLLENBQWY7O0FBU0EsSUFBTVMscUJBQXFCLFNBQXJCQSxrQkFBcUIsR0FPdEI7QUFBQSxNQU5IQyxPQU1HLHVFQU5PLEVBTVA7QUFBQSxNQUxIQyxTQUtHO0FBQUEsTUFKSEMsV0FJRztBQUFBLE1BSEhDLFNBR0csdUVBSFMsS0FHVDtBQUFBLE1BRkhDLEtBRUcsdUVBRkssRUFFTDtBQUFBLE1BREhDLFFBQ0csdUVBRFEsQ0FDUjs7QUFDSCxNQUFNQyxNQUFNLEVBQVo7QUFDQU4sVUFBUU8sT0FBUixDQUFnQixVQUFDQyxNQUFELEVBQVNDLFFBQVQsRUFBc0I7QUFDcEMsUUFBTUMsWUFBWVQsWUFBWVEsUUFBOUI7QUFDQSxRQUFJRSxNQUFNQyxPQUFOLENBQWNKLE1BQWQsQ0FBSixFQUEyQjtBQUN6QixhQUFPVCxtQkFBbUJTLE1B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QUFDRCxXQUFPSixHQUFQO0FBQ0Q7O0FBRUQ7QUFDQSwyQkFBTyxJQUFJTSxJQUFKLENBQVMsQ0FBQ1AsS0FBS0YsS0FBTCxDQUFELENBQVQsRUFBd0IsRUFBRXRGLE1BQU0sRUFBUixFQUF4QixDQUFQLEVBQWlENkUsUUFBakQ7QUFDRCxDIiwiZmlsZSI6InN0eWxlZC1leGNlbC1leHBvcnQuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBjb25zaXN0ZW50LXJldHVybiAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tcGx1c3BsdXMgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWJpdHdpc2UgKi9cbmltcG9ydCBYTFNYIGZyb20gJ3hsc3gtc3R5bGVzJztcbmltcG9ydCBzYXZlQXMgZnJvbSAnZmlsZS1zYXZlcic7XG5cbmNvbnN0IHdyaXRlT3B0aW9ucyA9IHtcbiAgdHlwZTogJ2JpbmFyeScsXG4gIGJvb2tTU1Q6IGZhbHNlLFxuICBib29rVHlwZTogJ3hsc3gnLFxuICBzaG93R3JpZExpbmVzOiBmYWxzZSxcbn07XG5cbmNvbnN0IEVYQ0VMX01BWF9ST1dfQ09VTlQgPSAxMDQ4NTc2O1xuY29uc3QgRVhDRUxfTUFYX0NPTF9DT1VOVCA9IDE2Mzg0O1xuXG4vLyBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS94bHN4LXN0eWxlcyNjZWxsLXN0eWxlc1xuY29uc3QgYm9yZGVyU3R5bGUgPSB7IHN0eWxlOiAndGhpbicsIGNvbG9yOiB7IHJnYjogJ0NDQ0NDQycgfSB9O1xuY29uc3QgYm9yZGVyID0ge1xuICBib3JkZXI6IHtcbiAgICB0b3A6IGJvcmRlclN0eWxlLFxuICAgIGJvdHRvbTogYm9yZGVyU3R5bGUsXG4gICAgbGVmdDogYm9yZGVyU3R5bGUsXG4gICAgcmlnaHQ6IGJvcmRlclN0eWxlLFxuICB9LFxufTtcblxuY29uc3QgY3JlYXRlQ29sdW1uVGl0bGVzID0gKFxuICBjb2x1bW5zID0gW10sXG4gIGNvbE9mZnNldCxcbiAgaGVhZGVyU3R5bGUsXG4gIG5vQm9yZGVycyA9IGZhbHNlLFxuICBjZWxscyA9IFtdLFxuICByb3dJbmRleCA9IDAsXG4pID0+IHtcbiAgY29uc3Qgcm93ID0gW107XG4gIGNvbHVtbnMuZm9yRWFjaCgoY29sdW1uLCBjb2xJbmRleCkgPT4ge1xuICAgIGNvbnN0IGNlbGxJbmRleCA9IGNvbE9mZnNldCArIGNvbEluZGV4O1xuICAgIGlmIChBcnJheS5pc0FycmF5KGNvbHVtbikpIHtcbiAgICAgIHJldHVybiBjcmVhdGVDb2x1bW5UaXRsZXMoY29sdW1uLCBjb2xPZmZzZXQsIGhlYWRlclN0eWxlLCBub0JvcmRlcnMsIGNlbGxzLCBjb2xJbmRleCk7XG4gICAgfVxuICAgIGNvbnN0IGNlbGxWYWx1ZSA9IChjb2x1bW4gfHwge30pLmhlYWRlciB8fCAnJztcbiAgICBjb25zdCBjZWxsID0geyB2OiBjZWxsVmFsdWUsIHQ6ICdzJywgczogaGVhZGVyU3R5bGUgfTtcbiAgICBpZiAoIW5vQm9yZGVycykge1xuICAgICAgY2VsbC5zID0geyAuLi5jZWxsLnMsIC4uLmJvcmRlciB9O1xuICAgIH1cbiAgICBjb25zdCBjZWxsUmVmID0gWExTWC51dGlscy5lbmNvZGVfY2VsbCh7IGM6IGNlbGxJbmRleCwgcjogcm93SW5kZXggfSk7XG4gICAgY29uc3QgY2VsbERhdGEgPSB7IGNlbGwsIGNlbGxSZWYgfTtcbiAgICBpZiAoY29sdW1uICYmIGNvbHVtbi5tZXJnZSA+IDEpIHtcbiAgICAgIGNlbGxEYXRhLm1lcmdlID0ge1xuICAgICAgICBzOiB7XG4gICAgICAgICAgYzogY2VsbEluZGV4LFxuICAgICAgICAgIHI6IHJvd0luZGV4LFxuICAgICAgICB9LFxuICAgICAgICBlOiB7XG4gICAgICAgICAgYzogY2VsbEluZGV4ICsgKGNvbHVtbi5tZXJnZSAtIDEpLFxuICAgICAgICAgIHI6IHJvd0luZGV4LFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG4gICAgY29uc3QgdXBwZXJDZWxsID0gcm93SW5kZXggPiAwID8gY2VsbHNbcm93SW5kZXggLSAxXVtjb2xJbmRleF0gOiB1bmRlZmluZWQ7XG4gICAgaWYgKGNvbHVtbiAmJiBjb2x1bW4udmFsdWVLZXlQYXRoKSB7XG4gICAgICBjZWxsRGF0YS52YWx1ZUtleVBhdGggPSBjb2x1bW4udmFsdWVLZXlQYXRoO1xuICAgIH0gZWxzZSBpZiAocm93SW5kZXggPiAwKSB7XG4gICAgICBjZWxsRGF0YS52YWx1ZUtleVBhdGggPSB1cHBlckNlbGwudmFsdWVLZXlQYXRoO1xuICAgIH1cbiAgICBjb25zdCB3Y2ggPSB1cHBlckNlbGwgJiYgIXVwcGVyQ2VsbC5tZXJnZSAmJiB1cHBlckNlbGwud2NoID4gY2VsbFZhbHVlLmxlbmd0aFxuICAgICAgPyB1cHBlckNlbGwud2NoXG4gICAgICA6IGNlbGxWYWx1ZS5sZW5ndGg7XG4gICAgY2VsbERhdGEud2NoID0gd2NoO1xuICAgIHJvdy5wdXNoKGNlbGxEYXRhKTtcbiAgfSk7XG4gIGlmIChyb3cubGVuZ3RoID4gMCkge1xuICAgIGNlbGxzLnB1c2gocm93KTtcbiAgfVxuICByZXR1cm4gY2VsbHM7XG59O1xuXG5jb25zdCBjcmVhdGVEYXRhU2hlZXQgPSAoZXhwb3J0RGF0YSkgPT4ge1xuICBjb25zdCB7XG4gICAgY29sdW1ucyxcbiAgICBkYXRhLFxuICAgIGRhdGFTdHlsZSxcbiAgICBmb3JtYXR0ZXIsXG4gICAgaGVhZGVyU3R5bGUsXG4gICAgbm9Cb3JkZXJzLFxuICAgIHJvd3MsXG4gIH0gPSBleHBvcnREYXRhO1xuICBjb25zdCB3b3Jrc2hlZXQgPSB7fTtcbiAgY29uc3QgY29sT2Zmc2V0ID0gcm93cyAmJiByb3dzLmxlbmd0aCA+IDAgPyAxIDogMDtcbiAgY29uc3QgY29sdW1uVGl0bGVzID0gY3JlYXRlQ29sdW1uVGl0bGVzKGNvbHVtbnMsIGNvbE9mZnNldCwgaGVhZGVyU3R5bGUsIG5vQm9yZGVycyk7XG4gIGNvbnN0IHJvd09mZnNldCA9IGNvbHVtblRpdGxlcy5sZW5ndGg7XG5cbiAgY29uc3QgbWVyZ2VzID0gW107XG4gIGlmIChyb3dzICYmIHJvd3MubGVuZ3RoID4gMCAmJiByb3dPZmZzZXQgPiAxKSB7XG4gICAgbWVyZ2VzLnB1c2goeyBzOiB7IGM6IDAsIHI6IDAgfSwgZTogeyBjOiAwLCByOiByb3dPZmZzZXQgLSAxIH0gfSk7XG4gIH1cblxuICBjb25zdCBjb2xzID0gW107XG5cbiAgY29sdW1uVGl0bGVzLmZvckVhY2goY29sdW1uUm93ID0+IChcbiAgICBjb2x1bW5Sb3cuZm9yRWFjaCgoY29sdW1uVGl0bGUsIGNvbEluZGV4KSA9PiB7XG4gICAgICB3b3Jrc2hlZXRbY29sdW1uVGl0bGUuY2VsbFJlZl0gPSBjb2x1bW5UaXRsZS5jZWxsO1xuICAgICAgaWYgKGNvbHVtblRpdGxlLm1lcmdlKSB7XG4gICAgICAgIG1lcmdlcy5wdXNoKGNvbHVtblRpdGxlLm1lcmdlKTtcbiAgICAgIH1cbiAgICAgIGNvbHNbY29sSW5kZXhdID0geyB3Y2g6IGNvbHVtblRpdGxlLndjaCB9O1xuICAgIH0pXG4gICkpO1xuXG4gIGlmIChyb3dzKSB7XG4gICAgbGV0IHdjaCA9IDA7XG4gICAgcm93cy5mb3JFYWNoKChyb3csIHJvd0luZGV4KSA9PiB7XG4gICAgICBjb25zdCBjZWxsUm93SW5kZXggPSByb3dJbmRleCArIHJvd09mZnNldDtcbiAgICAgIGNvbnN0IGNlbGxSZWYgPSBYTFNYLnV0aWxzLmVuY29kZV9jZWxsKHsgYzogMCwgcjogY2VsbFJvd0luZGV4IH0pO1xuICAgICAgY29uc3QgdGl0bGUgPSByb3cuaGVhZGVyO1xuICAgICAgY29uc3Qgd2lkdGggPSB0aXRsZSA/IHRpdGxlLmxlbmd0aCA6IDA7XG4gICAgICB3Y2ggPSB3Y2ggPCB3aWR0aCA/IHdpZHRoIDogd2NoO1xuICAgICAgY29uc3QgY2VsbCA9IHsgdjogdGl0bGUsIHQ6ICdzJywgczogaGVhZGVyU3R5bGUgfTtcbiAgICAgIGlmICghbm9Cb3JkZXJzKSB7XG4gICAgICAgIGNlbGwucyA9IHsgLi4uY2VsbC5zLCAuLi5ib3JkZXIgfTtcbiAgICAgIH1cbiAgICAgIHdvcmtzaGVldFtjZWxsUmVmXSA9IGNlbGw7XG4gICAgfSk7XG4gICAgY29scy51bnNoaWZ0KHsgd2NoIH0pO1xuICB9XG4gIHdvcmtzaGVldFsnIWNvbHMnXSA9IGNvbHM7XG4gIHdvcmtzaGVldFsnIW1lcmdlcyddID0gbWVyZ2VzO1xuXG4gIGNvbnN0IGNyZWF0ZUNlbGwgPSAodmFsdWUsIGNvbEluZGV4LCByb3dJbmRleCkgPT4ge1xuICAgIGNvbnN0IGNlbGxSb3dJbmRleCA9IHJvd0luZGV4ICsgcm93T2Zmc2V0O1xuICAgIGNvbnN0IGNlbGxDb2xJbmRleCA9IGNvbEluZGV4ICsgY29sT2Zmc2V0O1xuICAgIGxldCBjZWxsVmFsdWUgPSB2YWx1ZTtcbiAgICBpZiAoZm9ybWF0dGVyKSB7XG4gICAgICBjZWxsVmFsdWUgPSBmb3JtYXR0ZXIodmFsdWUpO1xuICAgIH1cbiAgICBjb25zdCBjZWxsID0geyB2OiBjZWxsVmFsdWUsIHM6IGRhdGFTdHlsZSB9O1xuICAgIGlmICghbm9Cb3JkZXJzKSB7XG4gICAgICBjZWxsLnMgPSB7IC4uLmNlbGwucywgLi4uYm9yZGVyIH07XG4gICAgfVxuICAgIGNvbnN0IGNlbGxSZWYgPSBYTFNYLnV0aWxzLmVuY29kZV9jZWxsKHsgYzogY2VsbENvbEluZGV4LCByOiBjZWxsUm93SW5kZXggfSk7XG4gICAgc3dpdGNoICh0eXBlb2YgY2VsbFZhbHVlKSB7XG4gICAgICBjYXNlICgnbnVtYmVyJyk6IHtcbiAgICAgICAgY2VsbC50ID0gJ24nO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgKCdib29sZWFuJyk6IHtcbiAgICAgICAgY2VsbC50ID0gJ2InO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY2VsbC50ID0gJ3MnO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgd29ya3NoZWV0W2NlbGxSZWZdID0gY2VsbDtcbiAgfTtcblxuICBjb25zdCBkZXRhaWxlZENvbHVtbnMgPSBjb2x1bW5UaXRsZXMubGVuZ3RoID4gMCA/IGNvbHVtblRpdGxlc1tyb3dPZmZzZXQgLSAxXSA6IFtdO1xuICBsZXQgZW5kQ29sdW1uSW5kZXggPSAwO1xuICBpZiAoZGV0YWlsZWRDb2x1bW5zLmxlbmd0aCA+IDApIHtcbiAgICBkYXRhLmZvckVhY2goKHJvdywgcm93SW5kZXgpID0+IHtcbiAgICAgIGRldGFpbGVkQ29sdW1ucy5mb3JFYWNoKChjb2x1bW4sIGNvbEluZGV4KSA9PiB7XG4gICAgICAgIGNyZWF0ZUNlbGwocm93W2NvbHVtbi52YWx1ZUtleVBhdGhdLCBjb2xJbmRleCwgcm93SW5kZXgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgZW5kQ29sdW1uSW5kZXggPSBkZXRhaWxlZENvbHVtbnMubGVuZ3RoICsgY29sT2Zmc2V0O1xuICB9IGVsc2Uge1xuICAgIGRhdGEuZm9yRWFjaCgocm93LCByb3dJbmRleCkgPT4ge1xuICAgICAgcm93LmZvckVhY2goKGNvbHVtbiwgY29sSW5kZXgpID0+IHtcbiAgICAgICAgY3JlYXRlQ2VsbChjb2x1bW4udmFsdWUsIGNvbEluZGV4LCByb3dJbmRleCk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRDb2xJbmRleCA9IGNvbEluZGV4ICsgY29sT2Zmc2V0O1xuICAgICAgICBlbmRDb2x1bW5JbmRleCA9IGVuZENvbHVtbkluZGV4IDwgY3VycmVudENvbEluZGV4ID8gY3VycmVudENvbEluZGV4IDogZW5kQ29sdW1uSW5kZXg7XG4gICAgICAgIGNvbHMucHVzaCh7IHdjaDogNTAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuICBjb25zdCBlbmRSb3dJbmRleCA9IGRhdGEubGVuZ3RoICsgcm93T2Zmc2V0O1xuICBjb25zdCByYW5nZSA9IHtcbiAgICBzOiB7XG4gICAgICBjOiAwLFxuICAgICAgcjogMCxcbiAgICB9LFxuICAgIGU6IHtcbiAgICAgIGM6IGVuZENvbHVtbkluZGV4LFxuICAgICAgcjogZW5kUm93SW5kZXgsXG4gICAgfSxcbiAgfTtcbiAgaWYgKHJhbmdlLmUuYyA8IEVYQ0VMX01BWF9DT0xfQ09VTlQgJiYgcmFuZ2UuZS5yIDwgRVhDRUxfTUFYX1JPV19DT1VOVCkge1xuICAgIHdvcmtzaGVldFsnIXJlZiddID0gWExTWC51dGlscy5lbmNvZGVfcmFuZ2UocmFuZ2UpO1xuICB9XG5cbiAgcmV0dXJuIHdvcmtzaGVldDtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IChzaGVldHMsIGZpbGVOYW1lKSA9PiB7XG4gIGNvbnN0IHdvcmtib29rID0geyBTaGVldE5hbWVzOiBbXSwgU2hlZXRzOiB7fSB9O1xuXG4gIHNoZWV0cy5mb3JFYWNoKChzaGVldCwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBzaGVldE5hbWUgPSBzaGVldC5uYW1lIHx8IGBTaGVldCAke2luZGV4ICsgMX1gO1xuICAgIHdvcmtib29rLlNoZWV0TmFtZXMucHVzaChzaGVldE5hbWUpO1xuICAgIGNvbnN0IHdzU2hlZXQgPSBjcmVhdGVEYXRhU2hlZXQoc2hlZXQpO1xuICAgIHdvcmtib29rLlNoZWV0c1tzaGVldE5hbWVdID0gd3NTaGVldDtcbiAgfSk7XG5cbiAgY29uc3Qgd2JvdXQgPSBYTFNYLndyaXRlKHdvcmtib29rLCB3cml0ZU9wdGlvbnMpO1xuICBmdW5jdGlvbiBzMmFiKHMpIHtcbiAgICBjb25zdCBidWYgPSBuZXcgQXJyYXlCdWZmZXIocy5sZW5ndGgpO1xuICAgIGNvbnN0IHZpZXcgPSBuZXcgVWludDhBcnJheShidWYpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpICE9PSBzLmxlbmd0aDsgKytpKSB7XG4gICAgICB2aWV3W2ldID0gcy5jaGFyQ29kZUF0KGkpICYgMHhGRjtcbiAgICB9XG4gICAgcmV0dXJuIGJ1ZjtcbiAgfVxuXG4gIC8qIHRoZSBzYXZlQXMgY2FsbCBkb3dubG9hZHMgYSBmaWxlIG9uIHRoZSBsb2NhbCBtYWNoaW5lICovXG4gIHNhdmVBcyhuZXcgQmxvYihbczJhYih3Ym91dCldLCB7IHR5cGU6ICcnIH0pLCBgJHtmaWxlTmFtZX0ueGxzeGApO1xufTtcbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdHlsZWQtZXhjZWwtZXhwb3J0LmpzIl0sIm5hbWVzIjpbIndyaXRlT3B0aW9ucyIsInR5cGUiLCJib29rU1NUIiwiYm9va1R5cGUiLCJzaG93R3JpZExpbmVzIiwiRVhDRUxfTUFYX1JPV19DT1VOVCIsIkVYQ0VMX01BWF9DT0xfQ09VTlQiLCJib3JkZXJTdHlsZSIsInN0eWxlIiwiY29sb3IiLCJyZ2IiLCJib3JkZXIiLCJ0b3AiLCJib3R0b20iLCJsZWZ0IiwicmlnaHQiLCJjcmVhdGVDb2x1bW5UaXRsZXMiLCJjb2x1bW5zIiwiY29sT2Zmc2V0IiwiaGVhZGVyU3R5bGUiLCJub0JvcmRlcnMiLCJjZWxscyIsInJvd0luZGV4Iiwicm93IiwiZm9yRWFjaCIsImNvbHVtbiIsImNvbEluZGV4IiwiY2VsbEluZGV4IiwiQXJyYXkiLCJpc0FycmF5IiwiY2VsbFZhbHVlIiwiaGVhZGVyIiwiY2VsbCIsInYiLCJ0IiwicyIsImNlbGxSZWYiLCJYTFNYIiwidXRpbHMiLCJlbmNvZGVfY2VsbCIsImMiLCJyIiwiY2VsbERhdGEiLCJtZXJnZSIsImUiLCJ1cHBlckNlbGwiLCJ1bmRlZmluZWQiLCJ2YWx1ZUtleVBhdGgiLCJ2YWx1ZVJlbmRlciIsImRpc2FibGVWYWx1ZVJlbmRlckluRXhjZWwiLCJ3Y2giLCJsZW5ndGgiLCJwdXNoIiwiY3JlYXRlRGF0YVNoZWV0IiwiZXhwb3J0RGF0YSIsImRhdGEiLCJkYXRhU3R5bGUiLCJmb3JtYXR0ZXIiLCJyb3dzIiwid29ya3NoZWV0IiwiY29sdW1uVGl0bGVzIiwicm93T2Zmc2V0IiwibWVyZ2VzIiwiY29scyIsImNvbHVtblJvdyIsImNvbHVtblRpdGxlIiwiY2VsbFJvd0luZGV4IiwidGl0bGUiLCJ3aWR0aCIsInVuc2hpZnQiLCJjcmVhdGVDZWxsIiwidmFsdWUiLCJjZWxsQ29sSW5kZXgiLCJmb3JtYXRDZWxsIiwiZGV0YWlsZWRDb2x1bW5zIiwiZW5kQ29sdW1uSW5kZXgiLCJnZXRJbiIsImN1cnJlbnRDb2xJbmRleCIsImVuZFJvd0luZGV4Iiwic2l6ZSIsInJhbmdlIiwiZW5jb2RlX3JhbmdlIiwic2hlZXRzIiwiZmlsZU5hbWUiLCJ3b3JrYm9vayIsIlNoZWV0TmFtZXMiLCJTaGVldHMiLCJzaGVldCIsImluZGV4Iiwic2hlZXROYW1lIiwibmFtZSIsIndzU2hlZXQiLCJ3Ym91dCIsIndyaXRlIiwiczJhYiIsImJ1ZiIsIkFycmF5QnVmZmVyIiwidmlldyIsIlVpbnQ4QXJyYXkiLCJpIiwiY2hhckNvZGVBdCIsIkJsb2IiXSwibWFwcGluZ3MiOiI7Ozs7OztrUUFBQTtBQUNBO0FBQ0E7OztBQUNBOzs7O0FBQ0E7Ozs7OztBQUVBLElBQU1BLGVBQWU7QUFDbkJDLFFBQU0sUUFEYTtBQUVuQkMsV0FBUyxLQUZVO0FBR25CQyxZQUFVLE1BSFM7QUFJbkJDLGlCQUFlO0FBSkksQ0FBckI7O0FBT0EsSUFBTUMsc0JBQXNCLE9BQTVCO0FBQ0EsSUFBTUMsc0JBQXNCLEtBQTVCOztBQUVBO0FBQ0EsSUFBTUMsY0FBYyxFQUFFQyxPQUFPLE1BQVQsRUFBaUJDLE9BQU8sRUFBRUMsS0FBSyxRQUFQLEVBQXhCLEVBQXBCO0FBQ0EsSUFBTUMsU0FBUztBQUNiQSxVQUFRO0FBQ05DLFNBQUtMLFdBREM7QUFFTk0sWUFBUU4sV0FGRjtBQUdOTyxVQUFNUCxXQUhBO0FBSU5RLFdBQU9SO0FBSkQ7QUFESyxDQUFmOztBQVNBLElBQU1TLHFCQUFxQixTQUFyQkEsa0JBQXFCLEdBT3RCO0FBQUEsTUFOSEMsT0FNRyx1RUFOTyxFQU1QO0FBQUEsTUFMSEMsU0FLRztBQUFBLE1BSkhDLFdBSUc7QUFBQSxNQUhIQyxTQUdHLHVFQUhTLEtBR1Q7QUFBQSxNQUZIQyxLQUVHLHVFQUZLLEVBRUw7QUFBQSxNQURIQyxRQUNHLHVFQURRLENBQ1I7O0FBQ0gsTUFBTUMsTUFBTSxFQUFaO0FBQ0FOLFVBQVFPLE9BQVIsQ0FBZ0IsVUFBQ0MsTUFBRCxFQUFTQyxRQUFULEVBQXNCO0FBQ3BDLFFBQU1DLFlBQVlULFlBQVlRLFFB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QVEsRUFBMUIsRUFBakI7O0FBRUFKLFNBQU8xRCxPQUFQLENBQWUsVUFBQytELEtBQUQsRUFBUUMsS0FBUixFQUFrQjtBQUMvQixRQUFNQyxZQUFZRixNQUFNRyxJQUFOLGdCQUF1QkYsUUFBUSxDQUEvQixDQUFsQjtBQUNBSixhQUFTQyxVQUFULENBQW9CakMsSUFBcEIsQ0FBeUJxQyxTQUF6QjtBQUNBLFFBQU1FLFVBQVV0QyxnQkFBZ0JrQyxLQUFoQixDQUFoQjtBQUNBSCxhQUFTRSxNQUFULENBQWdCRyxTQUFoQixJQUE2QkUsT0FBN0I7QUFDRCxHQUxEOztBQU9BLE1BQU1DLFFBQVF2RCxxQkFBS3dELEtBQUwsQ0FBV1QsUUFBWCxFQUFxQnBGLFlBQXJCLENBQWQ7QUFDQSxXQUFTOEYsSUFBVCxDQUFjM0QsQ0FBZCxFQUFpQjtBQUNmLFFBQU00RCxNQUFNLElBQUlDLFdBQUosQ0FBZ0I3RCxFQUFFZ0IsTUFBbEIsQ0FBWjtBQUNBLFFBQU04QyxPQUFPLElBQUlDLFVBQUosQ0FBZUgsR0FBZixDQUFiO0FBQ0EsU0FBSyxJQUFJSSxJQUFJLENBQWIsRUFBZ0JBLE1BQU1oRSxFQUFFZ0IsTUFBeEIsRUFBZ0MsRUFBRWdELENBQWxDLEVBQXFDO0FBQ25DRixXQUFLRSxDQUFMLElBQVVoRSxFQUFFaUUsVUFBRixDQUFhRCxDQUFiLElBQWtCLElBQTVCO0FBQ0Q7QUFDRCxXQUFPSixHQUFQO0FBQ0Q7O0FBRUQ7QUFDQSwyQkFBTyxJQUFJTSxJQUFKLENBQVMsQ0FBQ1AsS0FBS0YsS0FBTCxDQUFELENBQVQsRUFBd0IsRUFBRTNGLE1BQU0sRUFBUixFQUF4QixDQUFQLEVBQWlEa0YsUUFBakQ7QUFDRCxDIiwiZmlsZSI6InN0eWxlZC1leGNlbC1leHBvcnQuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBjb25zaXN0ZW50LXJldHVybiAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tcGx1c3BsdXMgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWJpdHdpc2UgKi9cbmltcG9ydCBYTFNYIGZyb20gJ3hsc3gtc3R5bGVzJztcbmltcG9ydCBzYXZlQXMgZnJvbSAnZmlsZS1zYXZlcic7XG5cbmNvbnN0IHdyaXRlT3B0aW9ucyA9IHtcbiAgdHlwZTogJ2JpbmFyeScsXG4gIGJvb2tTU1Q6IGZhbHNlLFxuICBib29rVHlwZTogJ3hsc3gnLFxuICBzaG93R3JpZExpbmVzOiBmYWxzZSxcbn07XG5cbmNvbnN0IEVYQ0VMX01BWF9ST1dfQ09VTlQgPSAxMDQ4NTc2O1xuY29uc3QgRVhDRUxfTUFYX0NPTF9DT1VOVCA9IDE2Mzg0O1xuXG4vLyBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS94bHN4LXN0eWxlcyNjZWxsLXN0eWxlc1xuY29uc3QgYm9yZGVyU3R5bGUgPSB7IHN0eWxlOiAndGhpbicsIGNvbG9yOiB7IHJnYjogJ0NDQ0NDQycgfSB9O1xuY29uc3QgYm9yZGVyID0ge1xuICBib3JkZXI6IHtcbiAgICB0b3A6IGJvcmRlclN0eWxlLFxuICAgIGJvdHRvbTogYm9yZGVyU3R5bGUsXG4gICAgbGVmdDogYm9yZGVyU3R5bGUsXG4gICAgcmlnaHQ6IGJvcmRlclN0eWxlLFxuICB9LFxufTtcblxuY29uc3QgY3JlYXRlQ29sdW1uVGl0bGVzID0gKFxuICBjb2x1bW5zID0gW10sXG4gIGNvbE9mZnNldCxcbiAgaGVhZGVyU3R5bGUsXG4gIG5vQm9yZGVycyA9IGZhbHNlLFxuICBjZWxscyA9IFtdLFxuICByb3dJbmRleCA9IDAsXG4pID0+IHtcbiAgY29uc3Qgcm93ID0gW107XG4gIGNvbHVtbnMuZm9yRWFjaCgoY29sdW1uLCBjb2xJbmRleCkgPT4ge1xuICAgIGNvbnN0IGNlbGxJbmRleCA9IGNvbE9mZnNldCArIGNvbEluZGV4O1xuICAgIGlmIChBcnJheS5pc0FycmF5KGNvbHVtbikpIHtcbiAgICAgIHJldHVybiBjcmVhdGVDb2x1bW5UaXRsZXMoY29sdW1uLCBjb2xPZmZzZXQsIGhlYWRlclN0eWxlLCBub0JvcmRlcnMsIGNlbGxzLCBjb2xJbmRleCk7XG4gICAgfVxuICAgIGNvbnN0IGNlbGxWYWx1ZSA9IChjb2x1bW4gfHwge30pLmhlYWRlciB8fCAnJztcbiAgICBjb25zdCBjZWxsID0geyB2OiBjZWxsVmFsdWUsIHQ6ICdzJywgczogaGVhZGVyU3R5bGUgfTtcbiAgICBpZiAoIW5vQm9yZGVycykge1xuICAgICAgY2VsbC5zID0geyAuLi5jZWxsLnMsIC4uLmJvcmRlciB9O1xuICAgIH1cbiAgICBjb25zdCBjZWxsUmVmID0gWExTWC51dGlscy5lbmNvZGVfY2VsbCh7IGM6IGNlbGxJbmRleCwgcjogcm93SW5kZXggfSk7XG4gICAgY29uc3QgY2VsbERhdGEgPSB7IGNlbGwsIGNlbGxSZWYgfTtcbiAgICBpZiAoY29sdW1uICYmIGNvbHVtbi5tZXJnZSA+IDEpIHtcbiAgICAgIGNlbGxEYXRhLm1lcmdlID0ge1xuICAgICAgICBzOiB7XG4gICAgICAgICAgYzogY2VsbEluZGV4LFxuICAgICAgICAgIHI6IHJvd0luZGV4LFxuICAgICAgICB9LFxuICAgICAgICBlOiB7XG4gICAgICAgICAgYzogY2VsbEluZGV4ICsgKGNvbHVtbi5tZXJnZSAtIDEpLFxuICAgICAgICAgIHI6IHJvd0luZGV4LFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG4gICAgY29uc3QgdXBwZXJDZWxsID0gcm93SW5kZXggPiAwID8gY2VsbHNbcm93SW5kZXggLSAxXVtjb2xJbmRleF0gOiB1bmRlZmluZWQ7XG4gICAgaWYgKGNvbHVtbiAmJiBjb2x1bW4udmFsdWVLZXlQYXRoKSB7XG4gICAgICBjZWxsRGF0YS52YWx1ZUtleVBhdGggPSBjb2x1bW4udmFsdWVLZXlQYXRoO1xuICAgICAgY2VsbERhdGEudmFsdWVSZW5kZXIgPSBjb2x1bW4udmFsdWVSZW5kZXI7XG4gICAgICBjZWxsRGF0YS5kaXNhYmxlVmFsdWVSZW5kZXJJbkV4Y2VsID0gY29sdW1uLmRpc2FibGVWYWx1ZVJlbmRlckluRXhjZWw7XG4gICAgfSBlbHNlIGlmIChyb3dJbmRleCA+IDApIHtcbiAgICAgIGNlbGxEYXRhLnZhbHVlS2V5UGF0aCA9IHVwcGVyQ2VsbC52YWx1ZUtleVBhdGg7XG4gICAgfVxuICAgIGNvbnN0IHdjaCA9IHVwcGVyQ2VsbCAmJiAhdXBwZXJDZWxsLm1lcmdlICYmIHVwcGVyQ2VsbC53Y2ggPiBjZWxsVmFsdWUubGVuZ3RoXG4gICAgICA/IHVwcGVyQ2VsbC53Y2hcbiAgICAgIDogY2VsbFZhbHVlLmxlbmd0aDtcbiAgICBjZWxsRGF0YS53Y2ggPSB3Y2g7XG4gICAgcm93LnB1c2goY2VsbERhdGEpO1xuICB9KTtcbiAgaWYgKHJvdy5sZW5ndGggPiAwKSB7XG4gICAgY2VsbHMucHVzaChyb3cpO1xuICB9XG4gIHJldHVybiBjZWxscztcbn07XG5cbmNvbnN0IGNyZWF0ZURhdGFTaGVldCA9IChleHBvcnREYXRhKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBjb2x1bW5zLFxuICAgIGRhdGEgPSBbXSxcbiAgICBkYXRhU3R5bGUsXG4gICAgZm9ybWF0dGVyLFxuICAgIGhlYWRlclN0eWxlLFxuICAgIG5vQm9yZGVycyxcbiAgICByb3dzLFxuICB9ID0gZXhwb3J0RGF0YTtcbiAgY29uc3Qgd29ya3NoZWV0ID0ge307XG4gIGNvbnN0IGNvbE9mZnNldCA9IHJvd3MgJiYgcm93cy5sZW5ndGggPiAwID8gMSA6IDA7XG4gIGNvbnN0IGNvbHVtblRpdGxlcyA9IGNyZWF0ZUNvbHVtblRpdGxlcyhjb2x1bW5zLCBjb2xPZmZzZXQsIGhlYWRlclN0eWxlLCBub0JvcmRlcnMpO1xuICBjb25zdCByb3dPZmZzZXQgPSBjb2x1bW5UaXRsZXMubGVuZ3RoO1xuXG4gIGNvbnN0IG1lcmdlcyA9IFtdO1xuICBpZiAocm93cyAmJiByb3dzLmxlbmd0aCA+IDAgJiYgcm93T2Zmc2V0ID4gMSkge1xuICAgIG1lcmdlcy5wdXNoKHsgczogeyBjOiAwLCByOiAwIH0sIGU6IHsgYzogMCwgcjogcm93T2Zmc2V0IC0gMSB9IH0pO1xuICB9XG5cbiAgY29uc3QgY29scyA9IFtdO1xuXG4gIGNvbHVtblRpdGxlcy5mb3JFYWNoKGNvbHVtblJvdyA9PiAoXG4gICAgY29sdW1uUm93LmZvckVhY2goKGNvbHVtblRpdGxlLCBjb2xJbmRleCkgPT4ge1xuICAgICAgd29ya3NoZWV0W2NvbHVtblRpdGxlLmNlbGxSZWZdID0gY29sdW1uVGl0bGUuY2VsbDtcbiAgICAgIGlmIChjb2x1bW5UaXRsZS5tZXJnZSkge1xuICAgICAgICBtZXJnZXMucHVzaChjb2x1bW5UaXRsZS5tZXJnZSk7XG4gICAgICB9XG4gICAgICBjb2xzW2NvbEluZGV4XSA9IHsgd2NoOiBjb2x1bW5UaXRsZS53Y2ggfTtcbiAgICB9KVxuICApKTtcblxuICBpZiAocm93cykge1xuICAgIGxldCB3Y2ggPSAwO1xuICAgIHJvd3MuZm9yRWFjaCgocm93LCByb3dJbmRleCkgPT4ge1xuICAgICAgY29uc3QgY2VsbFJvd0luZGV4ID0gcm93SW5kZXggKyByb3dPZmZzZXQ7XG4gICAgICBjb25zdCBjZWxsUmVmID0gWExTWC51dGlscy5lbmNvZGVfY2VsbCh7IGM6IDAsIHI6IGNlbGxSb3dJbmRleCB9KTtcbiAgICAgIGNvbnN0IHRpdGxlID0gcm93LmhlYWRlcjtcbiAgICAgIGNvbnN0IHdpZHRoID0gdGl0bGUgPyB0aXRsZS5sZW5ndGggOiAwO1xuICAgICAgd2NoID0gd2NoIDwgd2lkdGggPyB3aWR0aCA6IHdjaDtcbiAgICAgIGNvbnN0IGNlbGwgPSB7IHY6IHRpdGxlLCB0OiAncycsIHM6IGhlYWRlclN0eWxlIH07XG4gICAgICBpZiAoIW5vQm9yZGVycykge1xuICAgICAgICBjZWxsLnMgPSB7IC4uLmNlbGwucywgLi4uYm9yZGVyIH07XG4gICAgICB9XG4gICAgICB3b3Jrc2hlZXRbY2VsbFJlZl0gPSBjZWxsO1xuICAgIH0pO1xuICAgIGNvbHMudW5zaGlmdCh7IHdjaCB9KTtcbiAgfVxuICB3b3Jrc2hlZXRbJyFjb2xzJ10gPSBjb2xzO1xuICB3b3Jrc2hlZXRbJyFtZXJnZXMnXSA9IG1lcmdlcztcblxuICBjb25zdCBjcmVhdGVDZWxsID0gKHZhbHVlLCBjb2xJbmRleCwgcm93SW5kZXgpID0+IHtcbiAgICBjb25zdCBjZWxsUm93SW5kZXggPSByb3dJbmRleCArIHJvd09mZnNldDtcbiAgICBjb25zdCBjZWxsQ29sSW5kZXggPSBjb2xJbmRleCArIGNvbE9mZnNldDtcbiAgICBjb25zdCBjZWxsID0geyB2OiB2YWx1ZSwgczogZGF0YVN0eWxlIH07XG4gICAgaWYgKCFub0JvcmRlcnMpIHtcbiAgICAgIGNlbGwucyA9IHsgLi4uY2VsbC5zLCAuLi5ib3JkZXIgfTtcbiAgICB9XG4gICAgY29uc3QgY2VsbFJlZiA9IFhMU1gudXRpbHMuZW5jb2RlX2NlbGwoeyBjOiBjZWxsQ29sSW5kZXgsIHI6IGNlbGxSb3dJbmRleCB9KTtcbiAgICBzd2l0Y2ggKHR5cGVvZiB2YWx1ZSkge1xuICAgICAgY2FzZSAoJ251bWJlcicpOiB7XG4gICAgICAgIGNlbGwudCA9ICduJztcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICgnYm9vbGVhbicpOiB7XG4gICAgICAgIGNlbGwudCA9ICdiJztcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNlbGwudCA9ICdzJztcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHdvcmtzaGVldFtjZWxsUmVmXSA9IGNlbGw7XG4gIH07XG5cbiAgY29uc3QgZm9ybWF0Q2VsbCA9ICh2YWx1ZSwgY29sdW1uLCByb3cpID0+IHtcbiAgICBsZXQgY2VsbFZhbHVlID0gdmFsdWU7XG4gICAgaWYgKGNvbHVtbi52YWx1ZVJlbmRlciAmJiAhY29sdW1uLmRpc2FibGVWYWx1ZVJlbmRlckluRXhjZWwpIHtcbiAgICAgIGNlbGxWYWx1ZSA9IGNvbHVtbi52YWx1ZVJlbmRlcihyb3cpO1xuICAgIH0gZWxzZSBpZiAoZm9ybWF0dGVyKSB7XG4gICAgICBjZWxsVmFsdWUgPSBmb3JtYXR0ZXIodmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gY2VsbFZhbHVlO1xuICB9O1xuXG4gIGNvbnN0IGRldGFpbGVkQ29sdW1ucyA9IGNvbHVtblRpdGxlcy5sZW5ndGggPiAwID8gY29sdW1uVGl0bGVzW3Jvd09mZnNldCAtIDFdIDogW107XG4gIGxldCBlbmRDb2x1bW5JbmRleCA9IDA7XG4gIGlmIChkZXRhaWxlZENvbHVtbnMubGVuZ3RoID4gMCkge1xuICAgIGRhdGEuZm9yRWFjaCgocm93LCByb3dJbmRleCkgPT4ge1xuICAgICAgZGV0YWlsZWRDb2x1bW5zLmZvckVhY2goKGNvbHVtbiwgY29sSW5kZXgpID0+IHtcbiAgICAgICAgY29uc3QgY2VsbFZhbHVlID0gZm9ybWF0Q2VsbChyb3cuZ2V0SW5cbiAgICAgICAgICA/IHJvdy5nZXRJbihjb2x1bW4udmFsdWVLZXlQYXRoKVxuICAgICAgICAgIDogcm93W2NvbHVtbi52YWx1ZUtleVBhdGhdLCBjb2x1bW4sIHJvdyk7XG4gICAgICAgIGNyZWF0ZUNlbGwoY2VsbFZhbHVlLCBjb2xJbmRleCwgcm93SW5kZXgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgZW5kQ29sdW1uSW5kZXggPSBkZXRhaWxlZENvbHVtbnMubGVuZ3RoICsgY29sT2Zmc2V0O1xuICB9IGVsc2Uge1xuICAgIGRhdGEuZm9yRWFjaCgocm93LCByb3dJbmRleCkgPT4ge1xuICAgICAgcm93LmZvckVhY2goKGNvbHVtbiwgY29sSW5kZXgpID0+IHtcbiAgICAgICAgY29uc3QgY2VsbFZhbHVlID0gZm9ybWF0Q2VsbChjb2x1bW4udmFsdWUsIGNvbHVtbiwgcm93KTtcbiAgICAgICAgY3JlYXRlQ2VsbChjZWxsVmFsdWUsIGNvbEluZGV4LCByb3dJbmRleCk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRDb2xJbmRleCA9IGNvbEluZGV4ICsgY29sT2Zmc2V0O1xuICAgICAgICBlbmRDb2x1bW5JbmRleCA9IGVuZENvbHVtbkluZGV4IDwgY3VycmVudENvbEluZGV4ID8gY3VycmVudENvbEluZGV4IDogZW5kQ29sdW1uSW5kZXg7XG4gICAgICAgIGNvbHMucHVzaCh7IHdjaDogNTAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuICBjb25zdCBlbmRSb3dJbmRleCA9IChkYXRhLmxlbmd0aCB8fCBkYXRhLnNpemUpICsgcm93T2Zmc2V0O1xuICBjb25zdCByYW5nZSA9IHtcbiAgICBzOiB7XG4gICAgICBjOiAwLFxuICAgICAgcjogMCxcbiAgICB9LFxuICAgIGU6IHtcbiAgICAgIGM6IGVuZENvbHVtbkluZGV4LFxuICAgICAgcjogZW5kUm93SW5kZXgsXG4gICAgfSxcbiAgfTtcbiAgaWYgKHJhbmdlLmUuYyA8IEVYQ0VMX01BWF9DT0xfQ09VTlQgJiYgcmFuZ2UuZS5yIDwgRVhDRUxfTUFYX1JPV19DT1VOVCkge1xuICAgIHdvcmtzaGVldFsnIXJlZiddID0gWExTWC51dGlscy5lbmNvZGVfcmFuZ2UocmFuZ2UpO1xuICB9XG5cbiAgcmV0dXJuIHdvcmtzaGVldDtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IChzaGVldHMsIGZpbGVOYW1lKSA9PiB7XG4gIGNvbnN0IHdvcmtib29rID0geyBTaGVldE5hbWVzOiBbXSwgU2hlZXRzOiB7fSB9O1xuXG4gIHNoZWV0cy5mb3JFYWNoKChzaGVldCwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBzaGVldE5hbWUgPSBzaGVldC5uYW1lIHx8IGBTaGVldCAke2luZGV4ICsgMX1gO1xuICAgIHdvcmtib29rLlNoZWV0TmFtZXMucHVzaChzaGVldE5hbWUpO1xuICAgIGNvbnN0IHdzU2hlZXQgPSBjcmVhdGVEYXRhU2hlZXQoc2hlZXQpO1xuICAgIHdvcmtib29rLlNoZWV0c1tzaGVldE5hbWVdID0gd3NTaGVldDtcbiAgfSk7XG5cbiAgY29uc3Qgd2JvdXQgPSBYTFNYLndyaXRlKHdvcmtib29rLCB3cml0ZU9wdGlvbnMpO1xuICBmdW5jdGlvbiBzMmFiKHMpIHtcbiAgICBjb25zdCBidWYgPSBuZXcgQXJyYXlCdWZmZXIocy5sZW5ndGgpO1xuICAgIGNvbnN0IHZpZXcgPSBuZXcgVWludDhBcnJheShidWYpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpICE9PSBzLmxlbmd0aDsgKytpKSB7XG4gICAgICB2aWV3W2ldID0gcy5jaGFyQ29kZUF0KGkpICYgMHhGRjtcbiAgICB9XG4gICAgcmV0dXJuIGJ1ZjtcbiAgfVxuXG4gIC8qIHRoZSBzYXZlQXMgY2FsbCBkb3dubG9hZHMgYSBmaWxlIG9uIHRoZSBsb2NhbCBtYWNoaW5lICovXG4gIHNhdmVBcyhuZXcgQmxvYihbczJhYih3Ym91dCldLCB7IHR5cGU6ICcnIH0pLCBgJHtmaWxlTmFtZX0ueGxzeGApO1xufTtcbiJdfQ==

@@ -68,2 +68,4 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };

cellData.valueKeyPath = column.valueKeyPath;
cellData.valueRender = column.valueRender;
cellData.disableValueRenderInExcel = column.disableValueRenderInExcel;
} else if (rowIndex > 0) {

@@ -84,3 +86,4 @@ cellData.valueKeyPath = upperCell.valueKeyPath;

var columns = exportData.columns,
data = exportData.data,
_exportData$data = exportData.data,
data = _exportData$data === undefined ? [] : _exportData$data,
dataStyle = exportData.dataStyle,

@@ -136,7 +139,3 @@ formatter = exportData.formatter,

var cellColIndex = colIndex + colOffset;
var cellValue = value;
if (formatter) {
cellValue = formatter(value);
}
var cell = { v: cellValue, s: dataStyle };
var cell = { v: value, s: dataStyle };
if (!noBorders) {

@@ -146,3 +145,3 @@ cell.s = _extends({}, cell.s, border);

var cellRef = XLSX.utils.encode_cell({ c: cellColIndex, r: cellRowIndex });
switch (typeof cellValue === 'undefined' ? 'undefined' : _typeof(cellValue)) {
switch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {
case 'number':

@@ -167,2 +166,12 @@ {

var formatCell = function formatCell(value, column, row) {
var cellValue = value;
if (column.valueRender && !column.disableValueRenderInExcel) {
cellValue = column.valueRender(row);
} else if (formatter) {
cellValue = formatter(value);
}
return cellValue;
};
var detailedColumns = columnTitles.length > 0 ? columnTitles[rowOffset - 1] : [];

@@ -173,3 +182,4 @@ var endColumnIndex = 0;

detailedColumns.forEach(function (column, colIndex) {
createCell(row[column.valueKeyPath], colIndex, rowIndex);
var cellValue = formatCell(row.getIn ? row.getIn(column.valueKeyPath) : row[column.valueKeyPath], column, row);
createCell(cellValue, colIndex, rowIndex);
});

@@ -181,3 +191,4 @@ });

row.forEach(function (column, colIndex) {
createCell(column.value, colIndex, rowIndex);
var cellValue = formatCell(column.value, column, row);
createCell(cellValue, colIndex, rowIndex);
var currentColIndex = colIndex + colOffset;

@@ -189,3 +200,3 @@ endColumnIndex = endColumnIndex < currentColIndex ? currentColIndex : endColumnIndex;

}
var endRowIndex = data.length + rowOffset;
var endRowIndex = (data.length || data.size) + rowOffset;
var range = {

@@ -231,2 +242,2 @@ s: {

});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdHlsZWQtZXhjZWwtZXhwb3J0LmpzIl0sIm5hbWVzIjpbIlhMU1giLCJzYXZlQXMiLCJ3cml0ZU9wdGlvbnMiLCJ0eXBlIiwiYm9va1NTVCIsImJvb2tUeXBlIiwic2hvd0dyaWRMaW5lcyIsIkVYQ0VMX01BWF9ST1dfQ09VTlQiLCJFWENFTF9NQVhfQ09MX0NPVU5UIiwiYm9yZGVyU3R5bGUiLCJzdHlsZSIsImNvbG9yIiwicmdiIiwiYm9yZGVyIiwidG9wIiwiYm90dG9tIiwibGVmdCIsInJpZ2h0IiwiY3JlYXRlQ29sdW1uVGl0bGVzIiwiY29sdW1ucyIsImNvbE9mZnNldCIsImhlYWRlclN0eWxlIiwibm9Cb3JkZXJzIiwiY2VsbHMiLCJyb3dJbmRleCIsInJvdyIsImZvckVhY2giLCJjb2x1bW4iLCJjb2xJbmRleCIsImNlbGxJbmRleCIsIkFycmF5IiwiaXNBcnJheSIsImNlbGxWYWx1ZSIsImhlYWRlciIsImNlbGwiLCJ2IiwidCIsInMiLCJjZWxsUmVmIiwidXRpbHMiLCJlbmNvZGVfY2VsbCIsImMiLCJyIiwiY2VsbERhdGEiLCJtZXJnZSIsImUiLCJ1cHBlckNlbGwiLCJ1bmRlZmluZWQiLCJ2YWx1ZUtleVBhdGgiLCJ3Y2giLCJsZW5ndGgiLCJwdXNoIiwiY3JlYXRlRGF0YVNoZWV0IiwiZXhwb3J0RGF0YSIsImRhdGEiLCJkYXRhU3R5bGUiLCJmb3JtYXR0ZXIiLCJyb3dzIiwid29ya3NoZWV0IiwiY29sdW1uVGl0bGVzIiwicm93T2Zmc2V0IiwibWVyZ2VzIiwiY29scyIsImNvbHVtblJvdyIsImNvbHVtblRpdGxlIiwiY2VsbFJvd0luZGV4IiwidGl0bGUiLCJ3aWR0aCIsInVuc2hpZnQiLCJjcmVhdGVDZWxsIiwidmFsdWUiLCJjZWxsQ29sSW5kZXgiLCJkZXRhaWxlZENvbHVtbnMiLCJlbmRDb2x1bW5JbmRleCIsImN1cnJlbnRDb2xJbmRleCIsImVuZFJvd0luZGV4IiwicmFuZ2UiLCJlbmNvZGVfcmFuZ2UiLCJzaGVldHMiLCJmaWxlTmFtZSIsIndvcmtib29rIiwiU2hlZXROYW1lcyIsIlNoZWV0cyIsInNoZWV0IiwiaW5kZXgiLCJzaGVldE5hbWUiLCJuYW1lIiwid3NTaGVldCIsIndib3V0Iiwid3JpdGUiLCJzMmFiIiwiYnVmIiwiQXJyYXlCdWZmZXIiLCJ2aWV3IiwiVWludDhBcnJheSIsImkiLCJjaGFyQ29kZUF0IiwiQmxvYiJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBLE9BQU9BLElBQVAsTUFBaUIsYUFBakI7QUFDQSxPQUFPQyxNQUFQLE1BQW1CLFlBQW5COztBQUVBLElBQU1DLGVBQWU7QUFDbkJDLFFBQU0sUUFEYTtBQUVuQkMsV0FBUyxLQUZVO0FBR25CQyxZQUFVLE1BSFM7QUFJbkJDLGlCQUFlO0FBSkksQ0FBckI7O0FBT0EsSUFBTUMsc0JBQXNCLE9BQTVCO0FBQ0EsSUFBTUMsc0JBQXNCLEtBQTVCOztBQUVBO0FBQ0EsSUFBTUMsY0FBYyxFQUFFQyxPQUFPLE1BQVQsRUFBaUJDLE9BQU8sRUFBRUMsS0FBSyxRQUFQLEVBQXhCLEVBQXBCO0FBQ0EsSUFBTUMsU0FBUztBQUNiQSxVQUFRO0FBQ05DLFNBQUtMLFdBREM7QUFFTk0sWUFBUU4sV0FGRjtBQUdOTyxVQUFNUCxXQUhBO0FBSU5RLFdBQU9SO0FBSkQ7QUFESyxDQUFmOztBQVNBLElBQU1TLHFCQUFxQixTQUFyQkEsa0JBQXFCLEdBT3RCO0FBQUEsTUFOSEMsT0FNRyx1RUFOTyxFQU1QO0FBQUEsTUFMSEMsU0FLRztBQUFBLE1BSkhDLFdBSUc7QUFBQSxNQUhIQyxTQUdHLHVFQUhTLEtBR1Q7QUFBQSxNQUZIQyxLQUVHLHVFQUZLLEVBRUw7QUFBQSxNQURIQyxRQUNHLHVFQURRLENBQ1I7O0FBQ0gsTUFBTUMsTUFBTSxFQUFaO0FBQ0FOLFVBQVFPLE9BQVIsQ0FBZ0IsVUFBQ0MsTUFBRCxFQUFTQyxRQUFULEVBQXNCO0FBQ3BDLFFBQU1DLFlBQVlULFlBQVlRLFFBQTlCO0FBQ0EsUUFBSUUsTUFBTUMsT0FBTixD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TCxJQUFVMUQsRUFBRTJELFVBQUYsQ0FBYUQsQ0FBYixJQUFrQixJQUE1QjtBQUNEO0FBQ0QsV0FBT0osR0FBUDtBQUNEOztBQUVEO0FBQ0ExRixTQUFPLElBQUlnRyxJQUFKLENBQVMsQ0FBQ1AsS0FBS0YsS0FBTCxDQUFELENBQVQsRUFBd0IsRUFBRXJGLE1BQU0sRUFBUixFQUF4QixDQUFQLEVBQWlENEUsUUFBakQ7QUFDRCxDQXRCRCIsImZpbGUiOiJzdHlsZWQtZXhjZWwtZXhwb3J0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgY29uc2lzdGVudC1yZXR1cm4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLXBsdXNwbHVzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1iaXR3aXNlICovXG5pbXBvcnQgWExTWCBmcm9tICd4bHN4LXN0eWxlcyc7XG5pbXBvcnQgc2F2ZUFzIGZyb20gJ2ZpbGUtc2F2ZXInO1xuXG5jb25zdCB3cml0ZU9wdGlvbnMgPSB7XG4gIHR5cGU6ICdiaW5hcnknLFxuICBib29rU1NUOiBmYWxzZSxcbiAgYm9va1R5cGU6ICd4bHN4JyxcbiAgc2hvd0dyaWRMaW5lczogZmFsc2UsXG59O1xuXG5jb25zdCBFWENFTF9NQVhfUk9XX0NPVU5UID0gMTA0ODU3NjtcbmNvbnN0IEVYQ0VMX01BWF9DT0xfQ09VTlQgPSAxNjM4NDtcblxuLy8gaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UveGxzeC1zdHlsZXMjY2VsbC1zdHlsZXNcbmNvbnN0IGJvcmRlclN0eWxlID0geyBzdHlsZTogJ3RoaW4nLCBjb2xvcjogeyByZ2I6ICdDQ0NDQ0MnIH0gfTtcbmNvbnN0IGJvcmRlciA9IHtcbiAgYm9yZGVyOiB7XG4gICAgdG9wOiBib3JkZXJTdHlsZSxcbiAgICBib3R0b206IGJvcmRlclN0eWxlLFxuICAgIGxlZnQ6IGJvcmRlclN0eWxlLFxuICAgIHJpZ2h0OiBib3JkZXJTdHlsZSxcbiAgfSxcbn07XG5cbmNvbnN0IGNyZWF0ZUNvbHVtblRpdGxlcyA9IChcbiAgY29sdW1ucyA9IFtdLFxuICBjb2xPZmZzZXQsXG4gIGhlYWRlclN0eWxlLFxuICBub0JvcmRlcnMgPSBmYWxzZSxcbiAgY2VsbHMgPSBbXSxcbiAgcm93SW5kZXggPSAwLFxuKSA9PiB7XG4gIGNvbnN0IHJvdyA9IFtdO1xuICBjb2x1bW5zLmZvckVhY2goKGNvbHVtbiwgY29sSW5kZXgpID0+IHtcbiAgICBjb25zdCBjZWxsSW5kZXggPSBjb2xPZmZzZXQgKyBjb2xJbmRleDtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjb2x1bW4pKSB7XG4gICAgICByZXR1cm4gY3JlYXRlQ29sdW1uVGl0bGVzKGNvbHVtbiwgY29sT2Zmc2V0LCBoZWFkZXJTdHlsZSwgbm9Cb3JkZXJzLCBjZWxscywgY29sSW5kZXgpO1xuICAgIH1cbiAgICBjb25zdCBjZWxsVmFsdWUgPSAoY29sdW1uIHx8IHt9KS5oZWFkZXIgfHwgJyc7XG4gICAgY29uc3QgY2VsbCA9IHsgdjogY2VsbFZhbHVlLCB0OiAncycsIHM6IGhlYWRlclN0eWxlIH07XG4gICAgaWYgKCFub0JvcmRlcnMpIHtcbiAgICAgIGNlbGwucyA9IHsgLi4uY2VsbC5zLCAuLi5ib3JkZXIgfTtcbiAgICB9XG4gICAgY29uc3QgY2VsbFJlZiA9IFhMU1gudXRpbHMuZW5jb2RlX2NlbGwoeyBjOiBjZWxsSW5kZXgsIHI6IHJvd0luZGV4IH0pO1xuICAgIGNvbnN0IGNlbGxEYXRhID0geyBjZWxsLCBjZWxsUmVmIH07XG4gICAgaWYgKGNvbHVtbiAmJiBjb2x1bW4ubWVyZ2UgPiAxKSB7XG4gICAgICBjZWxsRGF0YS5tZXJnZSA9IHtcbiAgICAgICAgczoge1xuICAgICAgICAgIGM6IGNlbGxJbmRleCxcbiAgICAgICAgICByOiByb3dJbmRleCxcbiAgICAgICAgfSxcbiAgICAgICAgZToge1xuICAgICAgICAgIGM6IGNlbGxJbmRleCArIChjb2x1bW4ubWVyZ2UgLSAxKSxcbiAgICAgICAgICByOiByb3dJbmRleCxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuICAgIGNvbnN0IHVwcGVyQ2VsbCA9IHJvd0luZGV4ID4gMCA/IGNlbGxzW3Jvd0luZGV4IC0gMV1bY29sSW5kZXhdIDogdW5kZWZpbmVkO1xuICAgIGlmIChjb2x1bW4gJiYgY29sdW1uLnZhbHVlS2V5UGF0aCkge1xuICAgICAgY2VsbERhdGEudmFsdWVLZXlQYXRoID0gY29sdW1uLnZhbHVlS2V5UGF0aDtcbiAgICB9IGVsc2UgaWYgKHJvd0luZGV4ID4gMCkge1xuICAgICAgY2VsbERhdGEudmFsdWVLZXlQYXRoID0gdXBwZXJDZWxsLnZhbHVlS2V5UGF0aDtcbiAgICB9XG4gICAgY29uc3Qgd2NoID0gdXBwZXJDZWxsICYmICF1cHBlckNlbGwubWVyZ2UgJiYgdXBwZXJDZWxsLndjaCA+IGNlbGxWYWx1ZS5sZW5ndGhcbiAgICAgID8gdXBwZXJDZWxsLndjaFxuICAgICAgOiBjZWxsVmFsdWUubGVuZ3RoO1xuICAgIGNlbGxEYXRhLndjaCA9IHdjaDtcbiAgICByb3cucHVzaChjZWxsRGF0YSk7XG4gIH0pO1xuICBpZiAocm93Lmxlbmd0aCA+IDApIHtcbiAgICBjZWxscy5wdXNoKHJvdyk7XG4gIH1cbiAgcmV0dXJuIGNlbGxzO1xufTtcblxuY29uc3QgY3JlYXRlRGF0YVNoZWV0ID0gKGV4cG9ydERhdGEpID0+IHtcbiAgY29uc3Qge1xuICAgIGNvbHVtbnMsXG4gICAgZGF0YSxcbiAgICBkYXRhU3R5bGUsXG4gICAgZm9ybWF0dGVyLFxuICAgIGhlYWRlclN0eWxlLFxuICAgIG5vQm9yZGVycyxcbiAgICByb3dzLFxuICB9ID0gZXhwb3J0RGF0YTtcbiAgY29uc3Qgd29ya3NoZWV0ID0ge307XG4gIGNvbnN0IGNvbE9mZnNldCA9IHJvd3MgJiYgcm93cy5sZW5ndGggPiAwID8gMSA6IDA7XG4gIGNvbnN0IGNvbHVtblRpdGxlcyA9IGNyZWF0ZUNvbHVtblRpdGxlcyhjb2x1bW5zLCBjb2xPZmZzZXQsIGhlYWRlclN0eWxlLCBub0JvcmRlcnMpO1xuICBjb25zdCByb3dPZmZzZXQgPSBjb2x1bW5UaXRsZXMubGVuZ3RoO1xuXG4gIGNvbnN0IG1lcmdlcyA9IFtdO1xuICBpZiAocm93cyAmJiByb3dzLmxlbmd0aCA+IDAgJiYgcm93T2Zmc2V0ID4gMSkge1xuICAgIG1lcmdlcy5wdXNoKHsgczogeyBjOiAwLCByOiAwIH0sIGU6IHsgYzogMCwgcjogcm93T2Zmc2V0IC0gMSB9IH0pO1xuICB9XG5cbiAgY29uc3QgY29scyA9IFtdO1xuXG4gIGNvbHVtblRpdGxlcy5mb3JFYWNoKGNvbHVtblJvdyA9PiAoXG4gICAgY29sdW1uUm93LmZvckVhY2goKGNvbHVtblRpdGxlLCBjb2xJbmRleCkgPT4ge1xuICAgICAgd29ya3NoZWV0W2NvbHVtblRpdGxlLmNlbGxSZWZdID0gY29sdW1uVGl0bGUuY2VsbDtcbiAgICAgIGlmIChjb2x1bW5UaXRsZS5tZXJnZSkge1xuICAgICAgICBtZXJnZXMucHVzaChjb2x1bW5UaXRsZS5tZXJnZSk7XG4gICAgICB9XG4gICAgICBjb2xzW2NvbEluZGV4XSA9IHsgd2NoOiBjb2x1bW5UaXRsZS53Y2ggfTtcbiAgICB9KVxuICApKTtcblxuICBpZiAocm93cykge1xuICAgIGxldCB3Y2ggPSAwO1xuICAgIHJvd3MuZm9yRWFjaCgocm93LCByb3dJbmRleCkgPT4ge1xuICAgICAgY29uc3QgY2VsbFJvd0luZGV4ID0gcm93SW5kZXggKyByb3dPZmZzZXQ7XG4gICAgICBjb25zdCBjZWxsUmVmID0gWExTWC51dGlscy5lbmNvZGVfY2VsbCh7IGM6IDAsIHI6IGNlbGxSb3dJbmRleCB9KTtcbiAgICAgIGNvbnN0IHRpdGxlID0gcm93LmhlYWRlcjtcbiAgICAgIGNvbnN0IHdpZHRoID0gdGl0bGUgPyB0aXRsZS5sZW5ndGggOiAwO1xuICAgICAgd2NoID0gd2NoIDwgd2lkdGggPyB3aWR0aCA6IHdjaDtcbiAgICAgIGNvbnN0IGNlbGwgPSB7IHY6IHRpdGxlLCB0OiAncycsIHM6IGhlYWRlclN0eWxlIH07XG4gICAgICBpZiAoIW5vQm9yZGVycykge1xuICAgICAgICBjZWxsLnMgPSB7IC4uLmNlbGwucywgLi4uYm9yZGVyIH07XG4gICAgICB9XG4gICAgICB3b3Jrc2hlZXRbY2VsbFJlZl0gPSBjZWxsO1xuICAgIH0pO1xuICAgIGNvbHMudW5zaGlmdCh7IHdjaCB9KTtcbiAgfVxuICB3b3Jrc2hlZXRbJyFjb2xzJ10gPSBjb2xzO1xuICB3b3Jrc2hlZXRbJyFtZXJnZXMnXSA9IG1lcmdlcztcblxuICBjb25zdCBjcmVhdGVDZWxsID0gKHZhbHVlLCBjb2xJbmRleCwgcm93SW5kZXgpID0+IHtcbiAgICBjb25zdCBjZWxsUm93SW5kZXggPSByb3dJbmRleCArIHJvd09mZnNldDtcbiAgICBjb25zdCBjZWxsQ29sSW5kZXggPSBjb2xJbmRleCArIGNvbE9mZnNldDtcbiAgICBsZXQgY2VsbFZhbHVlID0gdmFsdWU7XG4gICAgaWYgKGZvcm1hdHRlcikge1xuICAgICAgY2VsbFZhbHVlID0gZm9ybWF0dGVyKHZhbHVlKTtcbiAgICB9XG4gICAgY29uc3QgY2VsbCA9IHsgdjogY2VsbFZhbHVlLCBzOiBkYXRhU3R5bGUgfTtcbiAgICBpZiAoIW5vQm9yZGVycykge1xuICAgICAgY2VsbC5zID0geyAuLi5jZWxsLnMsIC4uLmJvcmRlciB9O1xuICAgIH1cbiAgICBjb25zdCBjZWxsUmVmID0gWExTWC51dGlscy5lbmNvZGVfY2VsbCh7IGM6IGNlbGxDb2xJbmRleCwgcjogY2VsbFJvd0luZGV4IH0pO1xuICAgIHN3aXRjaCAodHlwZW9mIGNlbGxWYWx1ZSkge1xuICAgICAgY2FzZSAoJ251bWJlcicpOiB7XG4gICAgICAgIGNlbGwudCA9ICduJztcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICgnYm9vbGVhbicpOiB7XG4gICAgICAgIGNlbGwudCA9ICdiJztcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNlbGwudCA9ICdzJztcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHdvcmtzaGVldFtjZWxsUmVmXSA9IGNlbGw7XG4gIH07XG5cbiAgY29uc3QgZGV0YWlsZWRDb2x1bW5zID0gY29sdW1uVGl0bGVzLmxlbmd0aCA+IDAgPyBjb2x1bW5UaXRsZXNbcm93T2Zmc2V0IC0gMV0gOiBbXTtcbiAgbGV0IGVuZENvbHVtbkluZGV4ID0gMDtcbiAgaWYgKGRldGFpbGVkQ29sdW1ucy5sZW5ndGggPiAwKSB7XG4gICAgZGF0YS5mb3JFYWNoKChyb3csIHJvd0luZGV4KSA9PiB7XG4gICAgICBkZXRhaWxlZENvbHVtbnMuZm9yRWFjaCgoY29sdW1uLCBjb2xJbmRleCkgPT4ge1xuICAgICAgICBjcmVhdGVDZWxsKHJvd1tjb2x1bW4udmFsdWVLZXlQYXRoXSwgY29sSW5kZXgsIHJvd0luZGV4KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIGVuZENvbHVtbkluZGV4ID0gZGV0YWlsZWRDb2x1bW5zLmxlbmd0aCArIGNvbE9mZnNldDtcbiAgfSBlbHNlIHtcbiAgICBkYXRhLmZvckVhY2goKHJvdywgcm93SW5kZXgpID0+IHtcbiAgICAgIHJvdy5mb3JFYWNoKChjb2x1bW4sIGNvbEluZGV4KSA9PiB7XG4gICAgICAgIGNyZWF0ZUNlbGwoY29sdW1uLnZhbHVlLCBjb2xJbmRleCwgcm93SW5kZXgpO1xuICAgICAgICBjb25zdCBjdXJyZW50Q29sSW5kZXggPSBjb2xJbmRleCArIGNvbE9mZnNldDtcbiAgICAgICAgZW5kQ29sdW1uSW5kZXggPSBlbmRDb2x1bW5JbmRleCA8IGN1cnJlbnRDb2xJbmRleCA/IGN1cnJlbnRDb2xJbmRleCA6IGVuZENvbHVtbkluZGV4O1xuICAgICAgICBjb2xzLnB1c2goeyB3Y2g6IDUwIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbiAgY29uc3QgZW5kUm93SW5kZXggPSBkYXRhLmxlbmd0aCArIHJvd09mZnNldDtcbiAgY29uc3QgcmFuZ2UgPSB7XG4gICAgczoge1xuICAgICAgYzogMCxcbiAgICAgIHI6IDAsXG4gICAgfSxcbiAgICBlOiB7XG4gICAgICBjOiBlbmRDb2x1bW5JbmRleCxcbiAgICAgIHI6IGVuZFJvd0luZGV4LFxuICAgIH0sXG4gIH07XG4gIGlmIChyYW5nZS5lLmMgPCBFWENFTF9NQVhfQ09MX0NPVU5UICYmIHJhbmdlLmUuciA8IEVYQ0VMX01BWF9ST1dfQ09VTlQpIHtcbiAgICB3b3Jrc2hlZXRbJyFyZWYnXSA9IFhMU1gudXRpbHMuZW5jb2RlX3JhbmdlKHJhbmdlKTtcbiAgfVxuXG4gIHJldHVybiB3b3Jrc2hlZXQ7XG59O1xuXG5leHBvcnQgZGVmYXVsdCAoc2hlZXRzLCBmaWxlTmFtZSkgPT4ge1xuICBjb25zdCB3b3JrYm9vayA9IHsgU2hlZXROYW1lczogW10sIFNoZWV0czoge30gfTtcblxuICBzaGVldHMuZm9yRWFjaCgoc2hlZXQsIGluZGV4KSA9PiB7XG4gICAgY29uc3Qgc2hlZXROYW1lID0gc2hlZXQubmFtZSB8fCBgU2hlZXQgJHtpbmRleCArIDF9YDtcbiAgICB3b3JrYm9vay5TaGVldE5hbWVzLnB1c2goc2hlZXROYW1lKTtcbiAgICBjb25zdCB3c1NoZWV0ID0gY3JlYXRlRGF0YVNoZWV0KHNoZWV0KTtcbiAgICB3b3JrYm9vay5TaGVldHNbc2hlZXROYW1lXSA9IHdzU2hlZXQ7XG4gIH0pO1xuXG4gIGNvbnN0IHdib3V0ID0gWExTWC53cml0ZSh3b3JrYm9vaywgd3JpdGVPcHRpb25zKTtcbiAgZnVuY3Rpb24gczJhYihzKSB7XG4gICAgY29uc3QgYnVmID0gbmV3IEFycmF5QnVmZmVyKHMubGVuZ3RoKTtcbiAgICBjb25zdCB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSAhPT0gcy5sZW5ndGg7ICsraSkge1xuICAgICAgdmlld1tpXSA9IHMuY2hhckNvZGVBdChpKSAmIDB4RkY7XG4gICAgfVxuICAgIHJldHVybiBidWY7XG4gIH1cblxuICAvKiB0aGUgc2F2ZUFzIGNhbGwgZG93bmxvYWRzIGEgZmlsZSBvbiB0aGUgbG9jYWwgbWFjaGluZSAqL1xuICBzYXZlQXMobmV3IEJsb2IoW3MyYWIod2JvdXQpXSwgeyB0eXBlOiAnJyB9KSwgYCR7ZmlsZU5hbWV9Lnhsc3hgKTtcbn07XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdHlsZWQtZXhjZWwtZXhwb3J0LmpzIl0sIm5hbWVzIjpbIlhMU1giLCJzYXZlQXMiLCJ3cml0ZU9wdGlvbnMiLCJ0eXBlIiwiYm9va1NTVCIsImJvb2tUeXBlIiwic2hvd0dyaWRMaW5lcyIsIkVYQ0VMX01BWF9ST1dfQ09VTlQiLCJFWENFTF9NQVhfQ09MX0NPVU5UIiwiYm9yZGVyU3R5bGUiLCJzdHlsZSIsImNvbG9yIiwicmdiIiwiYm9yZGVyIiwidG9wIiwiYm90dG9tIiwibGVmdCIsInJpZ2h0IiwiY3JlYXRlQ29sdW1uVGl0bGVzIiwiY29sdW1ucyIsImNvbE9mZnNldCIsImhlYWRlclN0eWxlIiwibm9Cb3JkZXJzIiwiY2VsbHMiLCJyb3dJbmRleCIsInJvdyIsImZvckVhY2giLCJjb2x1bW4iLCJjb2xJbmRleCIsImNlbGxJbmRleCIsIkFycmF5IiwiaXNBcnJheSIsImNlbGxWYWx1ZSIsImhlYWRlciIsImNlbGwiLCJ2IiwidCIsInMiLCJjZWxsUmVmIiwidXRpbHMiLCJlbmNvZGVfY2VsbCIsImMiLCJyIiwiY2VsbERhdGEiLCJtZXJnZSIsImUiLCJ1cHBlckNlbGwiLCJ1bmRlZmluZWQiLCJ2YWx1ZUtleVBhdGgiLCJ2YWx1ZVJlbmRlciIsImRpc2FibGVWYWx1ZVJlbmRlckluRXhjZWwiLCJ3Y2giLCJsZW5ndGgiLCJwdXNoIiwiY3JlYXRlRGF0YVNoZWV0IiwiZXhwb3J0RGF0YSIsImRhdGEiLCJkYXRhU3R5bGUiLCJmb3JtYXR0ZXIiLCJyb3dzIiwid29ya3NoZWV0IiwiY29sdW1uVGl0bGVzIiwicm93T2Zmc2V0IiwibWVyZ2VzIiwiY29scyIsImNvbHVtblJvdyIsImNvbHVtblRpdGxlIiwiY2VsbFJvd0luZGV4IiwidGl0bGUiLCJ3aWR0aCIsInVuc2hpZnQiLCJjcmVhdGVDZWxsIiwidmFsdWUiLCJjZWxsQ29sSW5kZXgiLCJmb3JtYXRDZWxsIiwiZGV0YWlsZWRDb2x1bW5zIiwiZW5kQ29sdW1uSW5kZXgiLCJnZXRJbiIsImN1cnJlbnRDb2xJbmRleCIsImVuZFJvd0luZGV4Iiwic2l6ZSIsInJhbmdlIiwiZW5jb2RlX3JhbmdlIiwic2hlZXRzIiwiZmlsZU5hbWUiLCJ3b3JrYm9vayIsIlNoZWV0TmFtZXMiLCJTaGVldHMiLCJzaGVldCIsImluZGV4Iiwic2hlZXROYW1lIiwibmFtZSIsIndzU2hlZXQiLCJ3Ym91dCIsIndyaXRlIiwiczJhYiIsImJ1ZiIsIkFycmF5QnVmZmVyIiwidmlldyIsIlVpbnQ4QXJyYXkiLCJpIiwiY2hhckNvZGVBdCIsIkJsb2IiXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQSxPQUFPQSxJQUFQLE1BQWlCLGFBQWpCO0FBQ0EsT0FBT0MsTUFBUCxNQUFtQixZQUFuQjs7QUFFQSxJQUFNQyxlQUFlO0FBQ25CQyxRQUFNLFFBRGE7QUFFbkJDLFdBQVMsS0FGVTtBQUduQkMsWUFBVSxNQUhTO0FBSW5CQyxpQkFBZTtBQUpJLENBQXJCOztBQU9BLElBQU1DLHNCQUFzQixPQUE1QjtBQUNBLElBQU1DLHNCQUFzQixLQUE1Qjs7QUFFQTtBQUNBLElBQU1DLGNBQWMsRUFBRUMsT0FBTyxNQUFULEVBQWlCQyxPQUFPLEVBQUVDLEtBQUssUUFBUCxFQUF4QixFQUFwQjtBQUNBLElBQU1DLFNBQVM7QUFDYkEsVUFBUTtBQUNOQyxTQUFLTCxXQURDO0FBRU5NLFlBQVFOLFdBRkY7QUFHTk8sVUFBTVAsV0FIQTtBQUlOUSxXQUFPUjtBQUpEO0FBREssQ0FBZjs7QUFTQSxJQUFNUyxxQkFBcUIsU0FBckJBLGtCQUFxQixHQU90QjtBQUFBLE1BTkhDLE9BTUcsdUVBTk8sRUFNUDtBQUFBLE1BTEhDLFNBS0c7QUFBQSxNQUpIQyxXQUlHO0FBQUEsTUFISEMsU0FHRyx1RUFIUyxLQUdUO0FBQUEsTUFGSEMsS0FFRyx1RUFGSyxFQUVMO0FBQUEsTUFESEMsUUFDRyx1RUFEUSxDQUNSOztBQUNILE1BQU1DLE1BQU0sRUFBWjtBQUNBTixVQUFRTyxPQUFSLENBQWdCLFVBQUNDLE1BQUQs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QVQsRUFBc0I7QUFDbkMsTUFBTUMsV0FBVyxFQUFFQyxZQUFZLEVBQWQsRUFBa0JDLFFBQVEsRUFBMUIsRUFBakI7O0FBRUFKLFNBQU96RCxPQUFQLENBQWUsVUFBQzhELEtBQUQsRUFBUUMsS0FBUixFQUFrQjtBQUMvQixRQUFNQyxZQUFZRixNQUFNRyxJQUFOLGdCQUF1QkYsUUFBUSxDQUEvQixDQUFsQjtBQUNBSixhQUFTQyxVQUFULENBQW9CakMsSUFBcEIsQ0FBeUJxQyxTQUF6QjtBQUNBLFFBQU1FLFVBQVV0QyxnQkFBZ0JrQyxLQUFoQixDQUFoQjtBQUNBSCxhQUFTRSxNQUFULENBQWdCRyxTQUFoQixJQUE2QkUsT0FBN0I7QUFDRCxHQUxEOztBQU9BLE1BQU1DLFFBQVE3RixLQUFLOEYsS0FBTCxDQUFXVCxRQUFYLEVBQXFCbkYsWUFBckIsQ0FBZDtBQUNBLFdBQVM2RixJQUFULENBQWMxRCxDQUFkLEVBQWlCO0FBQ2YsUUFBTTJELE1BQU0sSUFBSUMsV0FBSixDQUFnQjVELEVBQUVlLE1BQWxCLENBQVo7QUFDQSxRQUFNOEMsT0FBTyxJQUFJQyxVQUFKLENBQWVILEdBQWYsQ0FBYjtBQUNBLFNBQUssSUFBSUksSUFBSSxDQUFiLEVBQWdCQSxNQUFNL0QsRUFBRWUsTUFBeEIsRUFBZ0MsRUFBRWdELENBQWxDLEVBQXFDO0FBQ25DRixXQUFLRSxDQUFMLElBQVUvRCxFQUFFZ0UsVUFBRixDQUFhRCxDQUFiLElBQWtCLElBQTVCO0FBQ0Q7QUFDRCxXQUFPSixHQUFQO0FBQ0Q7O0FBRUQ7QUFDQS9GLFNBQU8sSUFBSXFHLElBQUosQ0FBUyxDQUFDUCxLQUFLRixLQUFMLENBQUQsQ0FBVCxFQUF3QixFQUFFMUYsTUFBTSxFQUFSLEVBQXhCLENBQVAsRUFBaURpRixRQUFqRDtBQUNELENBdEJEIiwiZmlsZSI6InN0eWxlZC1leGNlbC1leHBvcnQuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBjb25zaXN0ZW50LXJldHVybiAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tcGx1c3BsdXMgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWJpdHdpc2UgKi9cbmltcG9ydCBYTFNYIGZyb20gJ3hsc3gtc3R5bGVzJztcbmltcG9ydCBzYXZlQXMgZnJvbSAnZmlsZS1zYXZlcic7XG5cbmNvbnN0IHdyaXRlT3B0aW9ucyA9IHtcbiAgdHlwZTogJ2JpbmFyeScsXG4gIGJvb2tTU1Q6IGZhbHNlLFxuICBib29rVHlwZTogJ3hsc3gnLFxuICBzaG93R3JpZExpbmVzOiBmYWxzZSxcbn07XG5cbmNvbnN0IEVYQ0VMX01BWF9ST1dfQ09VTlQgPSAxMDQ4NTc2O1xuY29uc3QgRVhDRUxfTUFYX0NPTF9DT1VOVCA9IDE2Mzg0O1xuXG4vLyBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS94bHN4LXN0eWxlcyNjZWxsLXN0eWxlc1xuY29uc3QgYm9yZGVyU3R5bGUgPSB7IHN0eWxlOiAndGhpbicsIGNvbG9yOiB7IHJnYjogJ0NDQ0NDQycgfSB9O1xuY29uc3QgYm9yZGVyID0ge1xuICBib3JkZXI6IHtcbiAgICB0b3A6IGJvcmRlclN0eWxlLFxuICAgIGJvdHRvbTogYm9yZGVyU3R5bGUsXG4gICAgbGVmdDogYm9yZGVyU3R5bGUsXG4gICAgcmlnaHQ6IGJvcmRlclN0eWxlLFxuICB9LFxufTtcblxuY29uc3QgY3JlYXRlQ29sdW1uVGl0bGVzID0gKFxuICBjb2x1bW5zID0gW10sXG4gIGNvbE9mZnNldCxcbiAgaGVhZGVyU3R5bGUsXG4gIG5vQm9yZGVycyA9IGZhbHNlLFxuICBjZWxscyA9IFtdLFxuICByb3dJbmRleCA9IDAsXG4pID0+IHtcbiAgY29uc3Qgcm93ID0gW107XG4gIGNvbHVtbnMuZm9yRWFjaCgoY29sdW1uLCBjb2xJbmRleCkgPT4ge1xuICAgIGNvbnN0IGNlbGxJbmRleCA9IGNvbE9mZnNldCArIGNvbEluZGV4O1xuICAgIGlmIChBcnJheS5pc0FycmF5KGNvbHVtbikpIHtcbiAgICAgIHJldHVybiBjcmVhdGVDb2x1bW5UaXRsZXMoY29sdW1uLCBjb2xPZmZzZXQsIGhlYWRlclN0eWxlLCBub0JvcmRlcnMsIGNlbGxzLCBjb2xJbmRleCk7XG4gICAgfVxuICAgIGNvbnN0IGNlbGxWYWx1ZSA9IChjb2x1bW4gfHwge30pLmhlYWRlciB8fCAnJztcbiAgICBjb25zdCBjZWxsID0geyB2OiBjZWxsVmFsdWUsIHQ6ICdzJywgczogaGVhZGVyU3R5bGUgfTtcbiAgICBpZiAoIW5vQm9yZGVycykge1xuICAgICAgY2VsbC5zID0geyAuLi5jZWxsLnMsIC4uLmJvcmRlciB9O1xuICAgIH1cbiAgICBjb25zdCBjZWxsUmVmID0gWExTWC51dGlscy5lbmNvZGVfY2VsbCh7IGM6IGNlbGxJbmRleCwgcjogcm93SW5kZXggfSk7XG4gICAgY29uc3QgY2VsbERhdGEgPSB7IGNlbGwsIGNlbGxSZWYgfTtcbiAgICBpZiAoY29sdW1uICYmIGNvbHVtbi5tZXJnZSA+IDEpIHtcbiAgICAgIGNlbGxEYXRhLm1lcmdlID0ge1xuICAgICAgICBzOiB7XG4gICAgICAgICAgYzogY2VsbEluZGV4LFxuICAgICAgICAgIHI6IHJvd0luZGV4LFxuICAgICAgICB9LFxuICAgICAgICBlOiB7XG4gICAgICAgICAgYzogY2VsbEluZGV4ICsgKGNvbHVtbi5tZXJnZSAtIDEpLFxuICAgICAgICAgIHI6IHJvd0luZGV4LFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG4gICAgY29uc3QgdXBwZXJDZWxsID0gcm93SW5kZXggPiAwID8gY2VsbHNbcm93SW5kZXggLSAxXVtjb2xJbmRleF0gOiB1bmRlZmluZWQ7XG4gICAgaWYgKGNvbHVtbiAmJiBjb2x1bW4udmFsdWVLZXlQYXRoKSB7XG4gICAgICBjZWxsRGF0YS52YWx1ZUtleVBhdGggPSBjb2x1bW4udmFsdWVLZXlQYXRoO1xuICAgICAgY2VsbERhdGEudmFsdWVSZW5kZXIgPSBjb2x1bW4udmFsdWVSZW5kZXI7XG4gICAgICBjZWxsRGF0YS5kaXNhYmxlVmFsdWVSZW5kZXJJbkV4Y2VsID0gY29sdW1uLmRpc2FibGVWYWx1ZVJlbmRlckluRXhjZWw7XG4gICAgfSBlbHNlIGlmIChyb3dJbmRleCA+IDApIHtcbiAgICAgIGNlbGxEYXRhLnZhbHVlS2V5UGF0aCA9IHVwcGVyQ2VsbC52YWx1ZUtleVBhdGg7XG4gICAgfVxuICAgIGNvbnN0IHdjaCA9IHVwcGVyQ2VsbCAmJiAhdXBwZXJDZWxsLm1lcmdlICYmIHVwcGVyQ2VsbC53Y2ggPiBjZWxsVmFsdWUubGVuZ3RoXG4gICAgICA/IHVwcGVyQ2VsbC53Y2hcbiAgICAgIDogY2VsbFZhbHVlLmxlbmd0aDtcbiAgICBjZWxsRGF0YS53Y2ggPSB3Y2g7XG4gICAgcm93LnB1c2goY2VsbERhdGEpO1xuICB9KTtcbiAgaWYgKHJvdy5sZW5ndGggPiAwKSB7XG4gICAgY2VsbHMucHVzaChyb3cpO1xuICB9XG4gIHJldHVybiBjZWxscztcbn07XG5cbmNvbnN0IGNyZWF0ZURhdGFTaGVldCA9IChleHBvcnREYXRhKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBjb2x1bW5zLFxuICAgIGRhdGEgPSBbXSxcbiAgICBkYXRhU3R5bGUsXG4gICAgZm9ybWF0dGVyLFxuICAgIGhlYWRlclN0eWxlLFxuICAgIG5vQm9yZGVycyxcbiAgICByb3dzLFxuICB9ID0gZXhwb3J0RGF0YTtcbiAgY29uc3Qgd29ya3NoZWV0ID0ge307XG4gIGNvbnN0IGNvbE9mZnNldCA9IHJvd3MgJiYgcm93cy5sZW5ndGggPiAwID8gMSA6IDA7XG4gIGNvbnN0IGNvbHVtblRpdGxlcyA9IGNyZWF0ZUNvbHVtblRpdGxlcyhjb2x1bW5zLCBjb2xPZmZzZXQsIGhlYWRlclN0eWxlLCBub0JvcmRlcnMpO1xuICBjb25zdCByb3dPZmZzZXQgPSBjb2x1bW5UaXRsZXMubGVuZ3RoO1xuXG4gIGNvbnN0IG1lcmdlcyA9IFtdO1xuICBpZiAocm93cyAmJiByb3dzLmxlbmd0aCA+IDAgJiYgcm93T2Zmc2V0ID4gMSkge1xuICAgIG1lcmdlcy5wdXNoKHsgczogeyBjOiAwLCByOiAwIH0sIGU6IHsgYzogMCwgcjogcm93T2Zmc2V0IC0gMSB9IH0pO1xuICB9XG5cbiAgY29uc3QgY29scyA9IFtdO1xuXG4gIGNvbHVtblRpdGxlcy5mb3JFYWNoKGNvbHVtblJvdyA9PiAoXG4gICAgY29sdW1uUm93LmZvckVhY2goKGNvbHVtblRpdGxlLCBjb2xJbmRleCkgPT4ge1xuICAgICAgd29ya3NoZWV0W2NvbHVtblRpdGxlLmNlbGxSZWZdID0gY29sdW1uVGl0bGUuY2VsbDtcbiAgICAgIGlmIChjb2x1bW5UaXRsZS5tZXJnZSkge1xuICAgICAgICBtZXJnZXMucHVzaChjb2x1bW5UaXRsZS5tZXJnZSk7XG4gICAgICB9XG4gICAgICBjb2xzW2NvbEluZGV4XSA9IHsgd2NoOiBjb2x1bW5UaXRsZS53Y2ggfTtcbiAgICB9KVxuICApKTtcblxuICBpZiAocm93cykge1xuICAgIGxldCB3Y2ggPSAwO1xuICAgIHJvd3MuZm9yRWFjaCgocm93LCByb3dJbmRleCkgPT4ge1xuICAgICAgY29uc3QgY2VsbFJvd0luZGV4ID0gcm93SW5kZXggKyByb3dPZmZzZXQ7XG4gICAgICBjb25zdCBjZWxsUmVmID0gWExTWC51dGlscy5lbmNvZGVfY2VsbCh7IGM6IDAsIHI6IGNlbGxSb3dJbmRleCB9KTtcbiAgICAgIGNvbnN0IHRpdGxlID0gcm93LmhlYWRlcjtcbiAgICAgIGNvbnN0IHdpZHRoID0gdGl0bGUgPyB0aXRsZS5sZW5ndGggOiAwO1xuICAgICAgd2NoID0gd2NoIDwgd2lkdGggPyB3aWR0aCA6IHdjaDtcbiAgICAgIGNvbnN0IGNlbGwgPSB7IHY6IHRpdGxlLCB0OiAncycsIHM6IGhlYWRlclN0eWxlIH07XG4gICAgICBpZiAoIW5vQm9yZGVycykge1xuICAgICAgICBjZWxsLnMgPSB7IC4uLmNlbGwucywgLi4uYm9yZGVyIH07XG4gICAgICB9XG4gICAgICB3b3Jrc2hlZXRbY2VsbFJlZl0gPSBjZWxsO1xuICAgIH0pO1xuICAgIGNvbHMudW5zaGlmdCh7IHdjaCB9KTtcbiAgfVxuICB3b3Jrc2hlZXRbJyFjb2xzJ10gPSBjb2xzO1xuICB3b3Jrc2hlZXRbJyFtZXJnZXMnXSA9IG1lcmdlcztcblxuICBjb25zdCBjcmVhdGVDZWxsID0gKHZhbHVlLCBjb2xJbmRleCwgcm93SW5kZXgpID0+IHtcbiAgICBjb25zdCBjZWxsUm93SW5kZXggPSByb3dJbmRleCArIHJvd09mZnNldDtcbiAgICBjb25zdCBjZWxsQ29sSW5kZXggPSBjb2xJbmRleCArIGNvbE9mZnNldDtcbiAgICBjb25zdCBjZWxsID0geyB2OiB2YWx1ZSwgczogZGF0YVN0eWxlIH07XG4gICAgaWYgKCFub0JvcmRlcnMpIHtcbiAgICAgIGNlbGwucyA9IHsgLi4uY2VsbC5zLCAuLi5ib3JkZXIgfTtcbiAgICB9XG4gICAgY29uc3QgY2VsbFJlZiA9IFhMU1gudXRpbHMuZW5jb2RlX2NlbGwoeyBjOiBjZWxsQ29sSW5kZXgsIHI6IGNlbGxSb3dJbmRleCB9KTtcbiAgICBzd2l0Y2ggKHR5cGVvZiB2YWx1ZSkge1xuICAgICAgY2FzZSAoJ251bWJlcicpOiB7XG4gICAgICAgIGNlbGwudCA9ICduJztcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICgnYm9vbGVhbicpOiB7XG4gICAgICAgIGNlbGwudCA9ICdiJztcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNlbGwudCA9ICdzJztcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHdvcmtzaGVldFtjZWxsUmVmXSA9IGNlbGw7XG4gIH07XG5cbiAgY29uc3QgZm9ybWF0Q2VsbCA9ICh2YWx1ZSwgY29sdW1uLCByb3cpID0+IHtcbiAgICBsZXQgY2VsbFZhbHVlID0gdmFsdWU7XG4gICAgaWYgKGNvbHVtbi52YWx1ZVJlbmRlciAmJiAhY29sdW1uLmRpc2FibGVWYWx1ZVJlbmRlckluRXhjZWwpIHtcbiAgICAgIGNlbGxWYWx1ZSA9IGNvbHVtbi52YWx1ZVJlbmRlcihyb3cpO1xuICAgIH0gZWxzZSBpZiAoZm9ybWF0dGVyKSB7XG4gICAgICBjZWxsVmFsdWUgPSBmb3JtYXR0ZXIodmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gY2VsbFZhbHVlO1xuICB9O1xuXG4gIGNvbnN0IGRldGFpbGVkQ29sdW1ucyA9IGNvbHVtblRpdGxlcy5sZW5ndGggPiAwID8gY29sdW1uVGl0bGVzW3Jvd09mZnNldCAtIDFdIDogW107XG4gIGxldCBlbmRDb2x1bW5JbmRleCA9IDA7XG4gIGlmIChkZXRhaWxlZENvbHVtbnMubGVuZ3RoID4gMCkge1xuICAgIGRhdGEuZm9yRWFjaCgocm93LCByb3dJbmRleCkgPT4ge1xuICAgICAgZGV0YWlsZWRDb2x1bW5zLmZvckVhY2goKGNvbHVtbiwgY29sSW5kZXgpID0+IHtcbiAgICAgICAgY29uc3QgY2VsbFZhbHVlID0gZm9ybWF0Q2VsbChyb3cuZ2V0SW5cbiAgICAgICAgICA/IHJvdy5nZXRJbihjb2x1bW4udmFsdWVLZXlQYXRoKVxuICAgICAgICAgIDogcm93W2NvbHVtbi52YWx1ZUtleVBhdGhdLCBjb2x1bW4sIHJvdyk7XG4gICAgICAgIGNyZWF0ZUNlbGwoY2VsbFZhbHVlLCBjb2xJbmRleCwgcm93SW5kZXgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgZW5kQ29sdW1uSW5kZXggPSBkZXRhaWxlZENvbHVtbnMubGVuZ3RoICsgY29sT2Zmc2V0O1xuICB9IGVsc2Uge1xuICAgIGRhdGEuZm9yRWFjaCgocm93LCByb3dJbmRleCkgPT4ge1xuICAgICAgcm93LmZvckVhY2goKGNvbHVtbiwgY29sSW5kZXgpID0+IHtcbiAgICAgICAgY29uc3QgY2VsbFZhbHVlID0gZm9ybWF0Q2VsbChjb2x1bW4udmFsdWUsIGNvbHVtbiwgcm93KTtcbiAgICAgICAgY3JlYXRlQ2VsbChjZWxsVmFsdWUsIGNvbEluZGV4LCByb3dJbmRleCk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRDb2xJbmRleCA9IGNvbEluZGV4ICsgY29sT2Zmc2V0O1xuICAgICAgICBlbmRDb2x1bW5JbmRleCA9IGVuZENvbHVtbkluZGV4IDwgY3VycmVudENvbEluZGV4ID8gY3VycmVudENvbEluZGV4IDogZW5kQ29sdW1uSW5kZXg7XG4gICAgICAgIGNvbHMucHVzaCh7IHdjaDogNTAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuICBjb25zdCBlbmRSb3dJbmRleCA9IChkYXRhLmxlbmd0aCB8fCBkYXRhLnNpemUpICsgcm93T2Zmc2V0O1xuICBjb25zdCByYW5nZSA9IHtcbiAgICBzOiB7XG4gICAgICBjOiAwLFxuICAgICAgcjogMCxcbiAgICB9LFxuICAgIGU6IHtcbiAgICAgIGM6IGVuZENvbHVtbkluZGV4LFxuICAgICAgcjogZW5kUm93SW5kZXgsXG4gICAgfSxcbiAgfTtcbiAgaWYgKHJhbmdlLmUuYyA8IEVYQ0VMX01BWF9DT0xfQ09VTlQgJiYgcmFuZ2UuZS5yIDwgRVhDRUxfTUFYX1JPV19DT1VOVCkge1xuICAgIHdvcmtzaGVldFsnIXJlZiddID0gWExTWC51dGlscy5lbmNvZGVfcmFuZ2UocmFuZ2UpO1xuICB9XG5cbiAgcmV0dXJuIHdvcmtzaGVldDtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IChzaGVldHMsIGZpbGVOYW1lKSA9PiB7XG4gIGNvbnN0IHdvcmtib29rID0geyBTaGVldE5hbWVzOiBbXSwgU2hlZXRzOiB7fSB9O1xuXG4gIHNoZWV0cy5mb3JFYWNoKChzaGVldCwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBzaGVldE5hbWUgPSBzaGVldC5uYW1lIHx8IGBTaGVldCAke2luZGV4ICsgMX1gO1xuICAgIHdvcmtib29rLlNoZWV0TmFtZXMucHVzaChzaGVldE5hbWUpO1xuICAgIGNvbnN0IHdzU2hlZXQgPSBjcmVhdGVEYXRhU2hlZXQoc2hlZXQpO1xuICAgIHdvcmtib29rLlNoZWV0c1tzaGVldE5hbWVdID0gd3NTaGVldDtcbiAgfSk7XG5cbiAgY29uc3Qgd2JvdXQgPSBYTFNYLndyaXRlKHdvcmtib29rLCB3cml0ZU9wdGlvbnMpO1xuICBmdW5jdGlvbiBzMmFiKHMpIHtcbiAgICBjb25zdCBidWYgPSBuZXcgQXJyYXlCdWZmZXIocy5sZW5ndGgpO1xuICAgIGNvbnN0IHZpZXcgPSBuZXcgVWludDhBcnJheShidWYpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpICE9PSBzLmxlbmd0aDsgKytpKSB7XG4gICAgICB2aWV3W2ldID0gcy5jaGFyQ29kZUF0KGkpICYgMHhGRjtcbiAgICB9XG4gICAgcmV0dXJuIGJ1ZjtcbiAgfVxuXG4gIC8qIHRoZSBzYXZlQXMgY2FsbCBkb3dubG9hZHMgYSBmaWxlIG9uIHRoZSBsb2NhbCBtYWNoaW5lICovXG4gIHNhdmVBcyhuZXcgQmxvYihbczJhYih3Ym91dCldLCB7IHR5cGU6ICcnIH0pLCBgJHtmaWxlTmFtZX0ueGxzeGApO1xufTtcbiJdfQ==
{
"author": "OpusCapita (www.opuscapita.com)",
"name": "@opuscapita/excel-service",
"version": "1.0.3",
"version": "1.0.4",
"private": false,

@@ -6,0 +6,0 @@ "license": "MIT",

@@ -21,2 +21,11 @@ # excel-service

It seems, that npm handles xlsx and xlsx-styles as different versions of the same component. But xlsx-style requires xlsx to be installed in the same node module tree folder with it. In order to make that happen, please follow the instructions below.
If xlsx-styles is installed into ```node_modules/@opuscapita/excel-service/node_modules``` do the following:
1. Delete ```package-lock.json```
2. Delete ```node_modules```
3. Run ```npm install```
4. Verify that xlsx-styles doesn't exist in ```node_modules/@opuscapita/excel-service/node_modules``` and both xlsx and xlsx-styles exist in the root level of the tree.
If xlsx is installed into ```node_modules/@opuscapita/excel-service/node_modules``` do the above steps for it, but replace xlsx-styles with xlsx.
### Demo

@@ -23,0 +32,0 @@ View the [DEMO](https://opuscapita.github.io/excel-service)

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc