UNPKG

rr-table

Version:

Responsive and customizable React Table

297 lines (283 loc) 38.8 kB
"use strict"; var _react = _interopRequireDefault(require("react")); var _react2 = require("@storybook/react"); var _addonCentered = _interopRequireDefault(require("@storybook/addon-centered")); var _addonKnobs = require("@storybook/addon-knobs"); var _addonActions = require("@storybook/addon-actions"); var _mocks = require("../../config/storybook/mocks"); var _wrappers = require("../../config/storybook/wrappers"); var _Cell = _interopRequireDefault(require("../Cell")); var _index = _interopRequireDefault(require("./index")); var _README = _interopRequireDefault(require("./README.md")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** Storybook Import */ /** Components Import */ /** Stories */ (0, _react2.storiesOf)('Components|Row', module) /** Decorators */ .addDecorator(function (story) { return _react.default.createElement(_wrappers.StoryWrapper, { border: (0, _addonKnobs.boolean)('-- wrapper border --', true) }, story()); }).addDecorator(_addonCentered.default).addParameters({ info: { propTablesExclude: [_wrappers.StoryWrapper] } }) /** Stories */ .add('a1 - Default Row', function () { return _react.default.createElement(_index.default, { items: (0, _addonKnobs.array)('items', _mocks.mockedItems), id: (0, _addonKnobs.text)('id', 'row-id') }); }, { notes: { markdown: _README.default } }).add('a2 - Responsive Row', function () { return _react.default.createElement(_index.default, { id: (0, _addonKnobs.text)('id', 'row-id'), items: (0, _addonKnobs.array)('items', _mocks.mockedItems), breakpoints: (0, _addonKnobs.array)('breakpoints', _mocks.mockedBreakpoints), priorities: (0, _addonKnobs.array)('priorities', _mocks.mockedPriorities), onClick: (0, _addonActions.action)('row clicked') }); }, { notes: { markdown: _README.default } }).add('a3 - Responsive Row - default colored', function () { return _react.default.createElement(_index.default, { id: (0, _addonKnobs.text)('id', 'row-id'), items: (0, _addonKnobs.array)('items', _mocks.mockedItems), breakpoints: (0, _addonKnobs.array)('breakpoints', _mocks.mockedBreakpoints), priorities: (0, _addonKnobs.array)('priorities', _mocks.mockedPriorities), colored: (0, _addonKnobs.boolean)('colored', true), onClick: (0, _addonActions.action)('row clicked') }); }, { notes: { markdown: _README.default } }).add('a4 - Row with centered text', function () { return _react.default.createElement(_index.default, { id: (0, _addonKnobs.text)('id', 'row-id'), items: (0, _addonKnobs.array)('items', _mocks.mockedItems), breakpoints: (0, _addonKnobs.array)('breakpoints', _mocks.mockedBreakpoints), priorities: (0, _addonKnobs.array)('priorities', _mocks.mockedPriorities), colored: (0, _addonKnobs.text)('colored', '#fff8e1'), center: (0, _addonKnobs.boolean)('center', true), onClick: (0, _addonActions.action)('row clicked') }); }, { notes: { markdown: _README.default } }).add('a5 - Row with custom height', function () { return _react.default.createElement(_index.default, { id: (0, _addonKnobs.text)('id', 'row-id'), items: (0, _addonKnobs.array)('items', _mocks.mockedItems), breakpoints: (0, _addonKnobs.array)('breakpoints', _mocks.mockedBreakpoints), priorities: (0, _addonKnobs.array)('priorities', _mocks.mockedPriorities), colored: (0, _addonKnobs.text)('colored', '#fff8e1'), rowHeight: (0, _addonKnobs.text)('rowHeight', '200px'), center: (0, _addonKnobs.boolean)('center', false), onClick: (0, _addonActions.action)('row clicked') }); }, { notes: { markdown: _README.default } }).add('a6 - Row with custom empty cell text', function () { return _react.default.createElement(_index.default, { id: (0, _addonKnobs.text)('id', 'row-id'), items: (0, _addonKnobs.array)('items', _mocks.mockedItems), breakpoints: (0, _addonKnobs.array)('breakpoints', _mocks.mockedBreakpoints), priorities: (0, _addonKnobs.array)('priorities', _mocks.mockedPriorities), colored: (0, _addonKnobs.text)('colored', '#fff8e1'), emptyCellContent: (0, _addonKnobs.text)('emptyCellContent', 'no data'), center: (0, _addonKnobs.boolean)('center', false), onClick: (0, _addonActions.action)('row clicked') }); }, { notes: { markdown: _README.default } }).add('a7 - Row with custom empty cell Content', function () { return _react.default.createElement(_index.default, { id: (0, _addonKnobs.text)('id', 'row-id'), items: (0, _addonKnobs.array)('items', _mocks.mockedItems), breakpoints: (0, _addonKnobs.array)('breakpoints', _mocks.mockedBreakpoints), priorities: (0, _addonKnobs.array)('priorities', _mocks.mockedPriorities), colored: (0, _addonKnobs.boolean)('colored', true), emptyCellContent: function emptyCellContent() { return _react.default.createElement("div", { style: { color: 'peru', textAlign: 'center' } }, "NA"); }, center: (0, _addonKnobs.boolean)('center', false), onClick: (0, _addonActions.action)('row clicked') }); }, { notes: { markdown: _README.default } }).add('a8 - Row with custom col widths', function () { return _react.default.createElement(_index.default, { id: (0, _addonKnobs.text)('id', 'row-id'), items: (0, _addonKnobs.array)('items', _mocks.mockedItems), breakpoints: (0, _addonKnobs.array)('breakpoints', _mocks.mockedBreakpoints), priorities: (0, _addonKnobs.array)('priorities', _mocks.mockedPriorities), colored: (0, _addonKnobs.boolean)('colored', true), colWidths: (0, _addonKnobs.array)('colWidths', _mocks.mockedColWidths), center: (0, _addonKnobs.boolean)('center', false), onClick: (0, _addonActions.action)('row clicked') }); }, { notes: { markdown: _README.default } }).add('a9 - Row with custom options', function () { return _react.default.createElement(_index.default, { breakpoints: (0, _addonKnobs.array)('breakpoints', _mocks.mockedBreakpoints), center: (0, _addonKnobs.boolean)('center', false), colWidths: (0, _addonKnobs.array)('colWidths', _mocks.mockedColWidths), colored: (0, _addonKnobs.boolean)('colored', true), emptyCellContent: (0, _addonKnobs.text)('emptyCellContent', 'NA'), fontSize: (0, _addonKnobs.text)('fontSize', '22px'), id: (0, _addonKnobs.text)('id', 'row-id'), items: (0, _addonKnobs.array)('items', _mocks.mockedItems), lineClamp: (0, _addonKnobs.number)('lineClamp', 3), lineHeight: (0, _addonKnobs.number)('lineHeight', 1.8), cellPadding: (0, _addonKnobs.text)('cellPadding', '20px'), priorities: (0, _addonKnobs.array)('priorities', _mocks.mockedPriorities), rowHeight: (0, _addonKnobs.text)('rowHeight', '140px'), textColor: (0, _addonKnobs.color)('textColor', '#303f9f'), onClick: (0, _addonActions.action)('row clicked') }); }, { notes: { markdown: _README.default } }).add('b10 - Row with custom items', function () { return _react.default.createElement(_index.default, { id: (0, _addonKnobs.text)('id', 'row-id'), breakpoints: (0, _addonKnobs.array)('breakpoints', _mocks.mockedBreakpoints), priorities: (0, _addonKnobs.array)('priorities', _mocks.mockedPriorities), colored: (0, _addonKnobs.boolean)('colored', true), emptyCellContent: function emptyCellContent() { return _react.default.createElement("div", { style: { color: 'peru', textAlign: 'center' } }, "NA"); }, center: (0, _addonKnobs.boolean)('center', false), items: (0, _addonKnobs.array)('items', ['hello']), onClick: (0, _addonActions.action)('row clicked') }); }, { notes: { markdown: _README.default } }).add('b11 - Row with custom cells', function () { return _react.default.createElement(_index.default, { id: (0, _addonKnobs.text)('id', 'row-id') }, _react.default.createElement(_Cell.default, null, _react.default.createElement("div", { style: (0, _addonKnobs.object)('cell 1 - style', { width: '200px', backgroundColor: 'blue', height: '100%', color: 'white' }) }, (0, _addonKnobs.text)('cell 1 - items', _mocks.mockedItems[0]))), _react.default.createElement(_Cell.default, { data: (0, _addonKnobs.text)('cell 2 - items', _mocks.mockedItems[1]) }), _react.default.createElement(_Cell.default, { data: (0, _addonKnobs.text)('cell 3 - items', _mocks.mockedItems[2]) }), _react.default.createElement(_Cell.default, { data: (0, _addonKnobs.text)('cell 4 - items', _mocks.mockedItems[3]) }), _react.default.createElement(_Cell.default, { data: (0, _addonKnobs.text)('cell 5 - items', _mocks.mockedItems[4]) }), _react.default.createElement(_Cell.default, null, _react.default.createElement("div", { style: (0, _addonKnobs.object)('cell 6 - style', { width: '80px', backgroundColor: 'orange', height: '100%', color: 'white' }) }, (0, _addonKnobs.text)('cell 6 - items', _mocks.mockedItems[5]))), _react.default.createElement(_Cell.default, { data: (0, _addonKnobs.text)('cell 7 - items', _mocks.mockedItems[6]) })); }, { notes: { markdown: _README.default } }).add('b12 - Row with breakpoints and custom cells', function () { return _react.default.createElement(_index.default, { id: (0, _addonKnobs.text)('id', 'row-id') }, _react.default.createElement(_Cell.default, { breakpoints: (0, _addonKnobs.array)('breakpoints', _mocks.mockedBreakpoints), priority: (0, _addonKnobs.number)('cell 1 - priority', 1) }, _react.default.createElement("div", { style: (0, _addonKnobs.object)('cell 1 - style', { width: '200px', backgroundColor: 'blue', height: '100%', color: 'white' }) }, (0, _addonKnobs.text)('cell 1 - items', _mocks.mockedItems[0]))), _react.default.createElement(_Cell.default, { data: (0, _addonKnobs.text)('cell 2 - items', _mocks.mockedItems[1]), breakpoints: _mocks.mockedBreakpoints, priority: (0, _addonKnobs.number)('cell 2 - priority', 2) }), _react.default.createElement(_Cell.default, { data: (0, _addonKnobs.text)('cell 3 - items', _mocks.mockedItems[2]), breakpoints: _mocks.mockedBreakpoints }), _react.default.createElement(_Cell.default, { data: (0, _addonKnobs.text)('cell 4 - items', _mocks.mockedItems[3]), breakpoints: _mocks.mockedBreakpoints, priority: (0, _addonKnobs.number)('cell 4 - priority', 2) }), _react.default.createElement(_Cell.default, { data: (0, _addonKnobs.text)('cell 5 - items', _mocks.mockedItems[4]), breakpoints: _mocks.mockedBreakpoints, priority: (0, _addonKnobs.number)('cell 5 - priority', 3) }), _react.default.createElement(_Cell.default, { breakpoints: _mocks.mockedBreakpoints, priority: (0, _addonKnobs.number)('cell 6 - priority', 4) }, _react.default.createElement("div", { style: (0, _addonKnobs.object)('cell 6 - style', { width: '80px', backgroundColor: 'orange', height: '100%', color: 'white' }) }, (0, _addonKnobs.text)('cell 6 - items', _mocks.mockedItems[5]))), _react.default.createElement(_Cell.default, { data: (0, _addonKnobs.text)('cell 7 - items', _mocks.mockedItems[6]), breakpoints: _mocks.mockedBreakpoints })); }, { notes: { markdown: _README.default } }).add('b13 - Custom row', function () { return _react.default.createElement(_index.default, { id: (0, _addonKnobs.text)('id', 'row-id'), rowHeight: (0, _addonKnobs.text)('rowHeight', '') }, _react.default.createElement("div", { style: (0, _addonKnobs.object)('row children style', { display: 'flex', height: '200px', justifyContent: 'space-around', alignItems: 'center', width: '100%' }) }, _react.default.createElement("div", null, _react.default.createElement("h4", null, (0, _addonKnobs.text)('cell 1 - custom title', 'Custom')), _react.default.createElement("p", null, (0, _addonKnobs.text)('cell 1 - items', _mocks.mockedItems[0]))), _react.default.createElement("div", null, _react.default.createElement("h4", null, (0, _addonKnobs.text)('cell 2 - custom title', 'Custom')), _react.default.createElement("p", null, (0, _addonKnobs.text)('cell 2 - items', _mocks.mockedItems[1]))), _react.default.createElement("div", null, _react.default.createElement("h4", null, (0, _addonKnobs.text)('cell 3 - custom title', 'Custom')), _react.default.createElement("p", null, (0, _addonKnobs.text)('cell 3 - items', _mocks.mockedItems[2]))), _react.default.createElement("div", null, _react.default.createElement("h4", null, (0, _addonKnobs.text)('cell 4 - custom title', 'Custom')), _react.default.createElement("p", null, (0, _addonKnobs.text)('cell 4 - items', _mocks.mockedItems[3]))))); }, { notes: { markdown: _README.default } }); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1Jvdy9Sb3cuc3Rvcmllcy5qcyJdLCJuYW1lcyI6WyJtb2R1bGUiLCJhZGREZWNvcmF0b3IiLCJzdG9yeSIsImNlbnRlcmVkIiwiYWRkUGFyYW1ldGVycyIsImluZm8iLCJwcm9wVGFibGVzRXhjbHVkZSIsIlN0b3J5V3JhcHBlciIsImFkZCIsIm1vY2tlZEl0ZW1zIiwibm90ZXMiLCJtYXJrZG93biIsInJlYWRtZSIsIm1vY2tlZEJyZWFrcG9pbnRzIiwibW9ja2VkUHJpb3JpdGllcyIsImNvbG9yIiwidGV4dEFsaWduIiwibW9ja2VkQ29sV2lkdGhzIiwid2lkdGgiLCJiYWNrZ3JvdW5kQ29sb3IiLCJoZWlnaHQiLCJkaXNwbGF5IiwianVzdGlmeUNvbnRlbnQiLCJhbGlnbkl0ZW1zIl0sIm1hcHBpbmdzIjoiOztBQUFBOztBQUVBOztBQUNBOztBQUNBOztBQUdBOztBQUdBOztBQU1BOztBQUNBOztBQUNBOztBQUNBOzs7O0FBbEJBOztBQVFBOztBQVlBO0FBQ0EsdUJBQVUsZ0JBQVYsRUFBNEJBLE1BQTVCO0FBQ0U7QUFERixDQUVHQyxZQUZILENBRWdCLFVBQUFDLEtBQUs7QUFBQSxTQUNqQiw2QkFBQyxzQkFBRDtBQUFjLElBQUEsTUFBTSxFQUFFLHlCQUFRLHNCQUFSLEVBQWdDLElBQWhDO0FBQXRCLEtBQThEQSxLQUFLLEVBQW5FLENBRGlCO0FBQUEsQ0FGckIsRUFLR0QsWUFMSCxDQUtnQkUsc0JBTGhCLEVBTUdDLGFBTkgsQ0FNaUI7QUFDYkMsRUFBQUEsSUFBSSxFQUFFO0FBQ0pDLElBQUFBLGlCQUFpQixFQUFFLENBQUNDLHNCQUFEO0FBRGY7QUFETyxDQU5qQjtBQVlFO0FBWkYsQ0FhR0MsR0FiSCxDQWNJLGtCQWRKLEVBZUk7QUFBQSxTQUFNLDZCQUFDLGNBQUQ7QUFBSyxJQUFBLEtBQUssRUFBRSx1QkFBTSxPQUFOLEVBQWVDLGtCQUFmLENBQVo7QUFBeUMsSUFBQSxFQUFFLEVBQUUsc0JBQUss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QUFaLENBQXZCLENBQUosQ0FGRixDQWJGLEVBaUJFLDBDQUNFLHlDQUFLLHNCQUFLLHdCQUFMLEVBQStCLFFBQS9CLENBQUwsQ0FERixFQUVFLHdDQUFJLHNCQUFLLGdCQUFMLEVBQXVCQSxtQkFBWSxDQUFaLENBQXZCLENBQUosQ0FGRixDQWpCRixFQXFCRSwwQ0FDRSx5Q0FBSyxzQkFBSyx3QkFBTCxFQUErQixRQUEvQixDQUFMLENBREYsRUFFRSx3Q0FBSSxzQkFBSyxnQkFBTCxFQUF1QkEsbUJBQVksQ0FBWixDQUF2QixDQUFKLENBRkYsQ0FyQkYsQ0FERixDQURGO0FBQUEsQ0E1UUosRUEwU0k7QUFBRUMsRUFBQUEsS0FBSyxFQUFFO0FBQUVDLElBQUFBLFFBQVEsRUFBRUM7QUFBWjtBQUFULENBMVNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0Jztcbi8qKiBTdG9yeWJvb2sgSW1wb3J0ICovXG5pbXBvcnQgeyBzdG9yaWVzT2YgfSBmcm9tICdAc3Rvcnlib29rL3JlYWN0JztcbmltcG9ydCBjZW50ZXJlZCBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWNlbnRlcmVkJztcbmltcG9ydCB7XG4gIGFycmF5LCBib29sZWFuLCBjb2xvciwgbnVtYmVyLCBvYmplY3QsIHRleHQsXG59IGZyb20gJ0BzdG9yeWJvb2svYWRkb24ta25vYnMnO1xuaW1wb3J0IHsgYWN0aW9uIH0gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1hY3Rpb25zJztcblxuLyoqIENvbXBvbmVudHMgSW1wb3J0ICovXG5pbXBvcnQge1xuICBtb2NrZWRCcmVha3BvaW50cyxcbiAgbW9ja2VkQ29sV2lkdGhzLFxuICBtb2NrZWRJdGVtcyxcbiAgbW9ja2VkUHJpb3JpdGllcyxcbn0gZnJvbSAnY29uZmlnL3N0b3J5Ym9vay9tb2Nrcyc7XG5pbXBvcnQgeyBTdG9yeVdyYXBwZXIgfSBmcm9tICdjb25maWcvc3Rvcnlib29rL3dyYXBwZXJzJztcbmltcG9ydCBDZWxsIGZyb20gJ2NvbXBvbmVudHMvQ2VsbCc7XG5pbXBvcnQgUm93IGZyb20gJy4vaW5kZXgnO1xuaW1wb3J0IHJlYWRtZSBmcm9tICcuL1JFQURNRS5tZCc7XG5cbi8qKiBTdG9yaWVzICovXG5zdG9yaWVzT2YoJ0NvbXBvbmVudHN8Um93JywgbW9kdWxlKVxuICAvKiogRGVjb3JhdG9ycyAqL1xuICAuYWRkRGVjb3JhdG9yKHN0b3J5ID0+IChcbiAgICA8U3RvcnlXcmFwcGVyIGJvcmRlcj17Ym9vbGVhbignLS0gd3JhcHBlciBib3JkZXIgLS0nLCB0cnVlKX0+e3N0b3J5KCl9PC9TdG9yeVdyYXBwZXI+XG4gICkpXG4gIC5hZGREZWNvcmF0b3IoY2VudGVyZWQpXG4gIC5hZGRQYXJhbWV0ZXJzKHtcbiAgICBpbmZvOiB7XG4gICAgICBwcm9wVGFibGVzRXhjbHVkZTogW1N0b3J5V3JhcHBlcl0sXG4gICAgfSxcbiAgfSlcblxuICAvKiogU3RvcmllcyAqL1xuICAuYWRkKFxuICAgICdhMSAtIERlZmF1bHQgUm93JyxcbiAgICAoKSA9PiA8Um93IGl0ZW1zPXthcnJheSgnaXRlbXMnLCBtb2NrZWRJdGVtcyl9IGlkPXt0ZXh0KCdpZCcsICdyb3ctaWQnKX0gLz4sXG4gICAge1xuICAgICAgbm90ZXM6IHsgbWFya2Rvd246IHJlYWRtZSB9LFxuICAgIH0sXG4gIClcblxuICAuYWRkKFxuICAgICdhMiAtIFJlc3BvbnNpdmUgUm93JyxcbiAgICAoKSA9PiAoXG4gICAgICA8Um93XG4gICAgICAgIGlkPXt0ZXh0KCdpZCcsICdyb3ctaWQnKX1cbiAgICAgICAgaXRlbXM9e2FycmF5KCdpdGVtcycsIG1vY2tlZEl0ZW1zKX1cbiAgICAgICAgYnJlYWtwb2ludHM9e2FycmF5KCdicmVha3BvaW50cycsIG1vY2tlZEJyZWFrcG9pbnRzKX1cbiAgICAgICAgcHJpb3JpdGllcz17YXJyYXkoJ3ByaW9yaXRpZXMnLCBtb2NrZWRQcmlvcml0aWVzKX1cbiAgICAgICAgb25DbGljaz17YWN0aW9uKCdyb3cgY2xpY2tlZCcpfVxuICAgICAgLz5cbiAgICApLFxuICAgIHsgbm90ZXM6IHsgbWFya2Rvd246IHJlYWRtZSB9IH0sXG4gIClcblxuICAuYWRkKFxuICAgICdhMyAtIFJlc3BvbnNpdmUgUm93IC0gZGVmYXVsdCBjb2xvcmVkJyxcbiAgICAoKSA9PiAoXG4gICAgICA8Um93XG4gICAgICAgIGlkPXt0ZXh0KCdpZCcsICdyb3ctaWQnKX1cbiAgICAgICAgaXRlbXM9e2FycmF5KCdpdGVtcycsIG1vY2tlZEl0ZW1zKX1cbiAgICAgICAgYnJlYWtwb2ludHM9e2FycmF5KCdicmVha3BvaW50cycsIG1vY2tlZEJyZWFrcG9pbnRzKX1cbiAgICAgICAgcHJpb3JpdGllcz17YXJyYXkoJ3ByaW9yaXRpZXMnLCBtb2NrZWRQcmlvcml0aWVzKX1cbiAgICAgICAgY29sb3JlZD17Ym9vbGVhbignY29sb3JlZCcsIHRydWUpfVxuICAgICAgICBvbkNsaWNrPXthY3Rpb24oJ3JvdyBjbGlja2VkJyl9XG4gICAgICAvPlxuICAgICksXG4gICAgeyBub3RlczogeyBtYXJrZG93bjogcmVhZG1lIH0gfSxcbiAgKVxuXG4gIC5hZGQoXG4gICAgJ2E0IC0gUm93IHdpdGggY2VudGVyZWQgdGV4dCcsXG4gICAgKCkgPT4gKFxuICAgICAgPFJvd1xuICAgICAgICBpZD17dGV4dCgnaWQnLCAncm93LWlkJyl9XG4gICAgICAgIGl0ZW1zPXthcnJheSgnaXRlbXMnLCBtb2NrZWRJdGVtcyl9XG4gICAgICAgIGJyZWFrcG9pbnRzPXthcnJheSgnYnJlYWtwb2ludHMnLCBtb2NrZWRCcmVha3BvaW50cyl9XG4gICAgICAgIHByaW9yaXRpZXM9e2FycmF5KCdwcmlvcml0aWVzJywgbW9ja2VkUHJpb3JpdGllcyl9XG4gICAgICAgIGNvbG9yZWQ9e3RleHQoJ2NvbG9yZWQnLCAnI2ZmZjhlMScpfVxuICAgICAgICBjZW50ZXI9e2Jvb2xlYW4oJ2NlbnRlcicsIHRydWUpfVxuICAgICAgICBvbkNsaWNrPXthY3Rpb24oJ3JvdyBjbGlja2VkJyl9XG4gICAgICAvPlxuICAgICksXG4gICAgeyBub3RlczogeyBtYXJrZG93bjogcmVhZG1lIH0gfSxcbiAgKVxuXG4gIC5hZGQoXG4gICAgJ2E1IC0gUm93IHdpdGggY3VzdG9tIGhlaWdodCcsXG4gICAgKCkgPT4gKFxuICAgICAgPFJvd1xuICAgICAgICBpZD17dGV4dCgnaWQnLCAncm93LWlkJyl9XG4gICAgICAgIGl0ZW1zPXthcnJheSgnaXRlbXMnLCBtb2NrZWRJdGVtcyl9XG4gICAgICAgIGJyZWFrcG9pbnRzPXthcnJheSgnYnJlYWtwb2ludHMnLCBtb2NrZWRCcmVha3BvaW50cyl9XG4gICAgICAgIHByaW9yaXRpZXM9e2FycmF5KCdwcmlvcml0aWVzJywgbW9ja2VkUHJpb3JpdGllcyl9XG4gICAgICAgIGNvbG9yZWQ9e3RleHQoJ2NvbG9yZWQnLCAnI2ZmZjhlMScpfVxuICAgICAgICByb3dIZWlnaHQ9e3RleHQoJ3Jvd0hlaWdodCcsICcyMDBweCcpfVxuICAgICAgICBjZW50ZXI9e2Jvb2xlYW4oJ2NlbnRlcicsIGZhbHNlKX1cbiAgICAgICAgb25DbGljaz17YWN0aW9uKCdyb3cgY2xpY2tlZCcpfVxuICAgICAgLz5cbiAgICApLFxuICAgIHsgbm90ZXM6IHsgbWFya2Rvd246IHJlYWRtZSB9IH0sXG4gIClcblxuICAuYWRkKFxuICAgICdhNiAtIFJvdyB3aXRoIGN1c3RvbSBlbXB0eSBjZWxsIHRleHQnLFxuICAgICgpID0+IChcbiAgICAgIDxSb3dcbiAgICAgICAgaWQ9e3RleHQoJ2lkJywgJ3Jvdy1pZCcpfVxuICAgICAgICBpdGVtcz17YXJyYXkoJ2l0ZW1zJywgbW9ja2VkSXRlbXMpfVxuICAgICAgICBicmVha3BvaW50cz17YXJyYXkoJ2JyZWFrcG9pbnRzJywgbW9ja2VkQnJlYWtwb2ludHMpfVxuICAgICAgICBwcmlvcml0aWVzPXthcnJheSgncHJpb3JpdGllcycsIG1vY2tlZFByaW9yaXRpZXMpfVxuICAgICAgICBjb2xvcmVkPXt0ZXh0KCdjb2xvcmVkJywgJyNmZmY4ZTEnKX1cbiAgICAgICAgZW1wdHlDZWxsQ29udGVudD17dGV4dCgnZW1wdHlDZWxsQ29udGVudCcsICdubyBkYXRhJyl9XG4gICAgICAgIGNlbnRlcj17Ym9vbGVhbignY2VudGVyJywgZmFsc2UpfVxuICAgICAgICBvbkNsaWNrPXthY3Rpb24oJ3JvdyBjbGlja2VkJyl9XG4gICAgICAvPlxuICAgICksXG4gICAgeyBub3RlczogeyBtYXJrZG93bjogcmVhZG1lIH0gfSxcbiAgKVxuXG4gIC5hZGQoXG4gICAgJ2E3IC0gUm93IHdpdGggY3VzdG9tIGVtcHR5IGNlbGwgQ29udGVudCcsXG4gICAgKCkgPT4gKFxuICAgICAgPFJvd1xuICAgICAgICBpZD17dGV4dCgnaWQnLCAncm93LWlkJyl9XG4gICAgICAgIGl0ZW1zPXthcnJheSgnaXRlbXMnLCBtb2NrZWRJdGVtcyl9XG4gICAgICAgIGJyZWFrcG9pbnRzPXthcnJheSgnYnJlYWtwb2ludHMnLCBtb2NrZWRCcmVha3BvaW50cyl9XG4gICAgICAgIHByaW9yaXRpZXM9e2FycmF5KCdwcmlvcml0aWVzJywgbW9ja2VkUHJpb3JpdGllcyl9XG4gICAgICAgIGNvbG9yZWQ9e2Jvb2xlYW4oJ2NvbG9yZWQnLCB0cnVlKX1cbiAgICAgICAgZW1wdHlDZWxsQ29udGVudD17KCkgPT4gPGRpdiBzdHlsZT17eyBjb2xvcjogJ3BlcnUnLCB0ZXh0QWxpZ246ICdjZW50ZXInIH19Pk5BPC9kaXY+fVxuICAgICAgICBjZW50ZXI9e2Jvb2xlYW4oJ2NlbnRlcicsIGZhbHNlKX1cbiAgICAgICAgb25DbGljaz17YWN0aW9uKCdyb3cgY2xpY2tlZCcpfVxuICAgICAgLz5cbiAgICApLFxuICAgIHsgbm90ZXM6IHsgbWFya2Rvd246IHJlYWRtZSB9IH0sXG4gIClcblxuICAuYWRkKFxuICAgICdhOCAtIFJvdyB3aXRoIGN1c3RvbSBjb2wgd2lkdGhzJyxcbiAgICAoKSA9PiAoXG4gICAgICA8Um93XG4gICAgICAgIGlkPXt0ZXh0KCdpZCcsICdyb3ctaWQnKX1cbiAgICAgICAgaXRlbXM9e2FycmF5KCdpdGVtcycsIG1vY2tlZEl0ZW1zKX1cbiAgICAgICAgYnJlYWtwb2ludHM9e2FycmF5KCdicmVha3BvaW50cycsIG1vY2tlZEJyZWFrcG9pbnRzKX1cbiAgICAgICAgcHJpb3JpdGllcz17YXJyYXkoJ3ByaW9yaXRpZXMnLCBtb2NrZWRQcmlvcml0aWVzKX1cbiAgICAgICAgY29sb3JlZD17Ym9vbGVhbignY29sb3JlZCcsIHRydWUpfVxuICAgICAgICBjb2xXaWR0aHM9e2FycmF5KCdjb2xXaWR0aHMnLCBtb2NrZWRDb2xXaWR0aHMpfVxuICAgICAgICBjZW50ZXI9e2Jvb2xlYW4oJ2NlbnRlcicsIGZhbHNlKX1cbiAgICAgICAgb25DbGljaz17YWN0aW9uKCdyb3cgY2xpY2tlZCcpfVxuICAgICAgLz5cbiAgICApLFxuICAgIHsgbm90ZXM6IHsgbWFya2Rvd246IHJlYWRtZSB9IH0sXG4gIClcblxuICAuYWRkKFxuICAgICdhOSAtIFJvdyB3aXRoIGN1c3RvbSBvcHRpb25zJyxcbiAgICAoKSA9PiAoXG4gICAgICA8Um93XG4gICAgICAgIGJyZWFrcG9pbnRzPXthcnJheSgnYnJlYWtwb2ludHMnLCBtb2NrZWRCcmVha3BvaW50cyl9XG4gICAgICAgIGNlbnRlcj17Ym9vbGVhbignY2VudGVyJywgZmFsc2UpfVxuICAgICAgICBjb2xXaWR0aHM9e2FycmF5KCdjb2xXaWR0aHMnLCBtb2NrZWRDb2xXaWR0aHMpfVxuICAgICAgICBjb2xvcmVkPXtib29sZWFuKCdjb2xvcmVkJywgdHJ1ZSl9XG4gICAgICAgIGVtcHR5Q2VsbENvbnRlbnQ9e3RleHQoJ2VtcHR5Q2VsbENvbnRlbnQnLCAnTkEnKX1cbiAgICAgICAgZm9udFNpemU9e3RleHQoJ2ZvbnRTaXplJywgJzIycHgnKX1cbiAgICAgICAgaWQ9e3RleHQoJ2lkJywgJ3Jvdy1pZCcpfVxuICAgICAgICBpdGVtcz17YXJyYXkoJ2l0ZW1zJywgbW9ja2VkSXRlbXMpfVxuICAgICAgICBsaW5lQ2xhbXA9e251bWJlcignbGluZUNsYW1wJywgMyl9XG4gICAgICAgIGxpbmVIZWlnaHQ9e251bWJlcignbGluZUhlaWdodCcsIDEuOCl9XG4gICAgICAgIGNlbGxQYWRkaW5nPXt0ZXh0KCdjZWxsUGFkZGluZycsICcyMHB4Jyl9XG4gICAgICAgIHByaW9yaXRpZXM9e2FycmF5KCdwcmlvcml0aWVzJywgbW9ja2VkUHJpb3JpdGllcyl9XG4gICAgICAgIHJvd0hlaWdodD17dGV4dCgncm93SGVpZ2h0JywgJzE0MHB4Jyl9XG4gICAgICAgIHRleHRDb2xvcj17Y29sb3IoJ3RleHRDb2xvcicsICcjMzAzZjlmJyl9XG4gICAgICAgIG9uQ2xpY2s9e2FjdGlvbigncm93IGNsaWNrZWQnKX1cbiAgICAgIC8+XG4gICAgKSxcbiAgICB7IG5vdGVzOiB7IG1hcmtkb3duOiByZWFkbWUgfSB9LFxuICApXG5cbiAgLmFkZChcbiAgICAnYjEwIC0gUm93IHdpdGggY3VzdG9tIGl0ZW1zJyxcbiAgICAoKSA9PiAoXG4gICAgICA8Um93XG4gICAgICAgIGlkPXt0ZXh0KCdpZCcsICdyb3ctaWQnKX1cbiAgICAgICAgYnJlYWtwb2ludHM9e2FycmF5KCdicmVha3BvaW50cycsIG1vY2tlZEJyZWFrcG9pbnRzKX1cbiAgICAgICAgcHJpb3JpdGllcz17YXJyYXkoJ3ByaW9yaXRpZXMnLCBtb2NrZWRQcmlvcml0aWVzKX1cbiAgICAgICAgY29sb3JlZD17Ym9vbGVhbignY29sb3JlZCcsIHRydWUpfVxuICAgICAgICBlbXB0eUNlbGxDb250ZW50PXsoKSA9PiA8ZGl2IHN0eWxlPXt7IGNvbG9yOiAncGVydScsIHRleHRBbGlnbjogJ2NlbnRlcicgfX0+TkE8L2Rpdj59XG4gICAgICAgIGNlbnRlcj17Ym9vbGVhbignY2VudGVyJywgZmFsc2UpfVxuICAgICAgICBpdGVtcz17YXJyYXkoJ2l0ZW1zJywgWydoZWxsbyddKX1cbiAgICAgICAgb25DbGljaz17YWN0aW9uKCdyb3cgY2xpY2tlZCcpfVxuICAgICAgLz5cbiAgICApLFxuICAgIHsgbm90ZXM6IHsgbWFya2Rvd246IHJlYWRtZSB9IH0sXG4gIClcblxuICAuYWRkKFxuICAgICdiMTEgLSBSb3cgd2l0aCBjdXN0b20gY2VsbHMnLFxuICAgICgpID0+IChcbiAgICAgIDxSb3cgaWQ9e3RleHQoJ2lkJywgJ3Jvdy1pZCcpfT5cbiAgICAgICAgPENlbGw+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgc3R5bGU9e29iamVjdCgnY2VsbCAxIC0gc3R5bGUnLCB7XG4gICAgICAgICAgICAgIHdpZHRoOiAnMjAwcHgnLFxuICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICdibHVlJyxcbiAgICAgICAgICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICAgICAgICAgIGNvbG9yOiAnd2hpdGUnLFxuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3RleHQoJ2NlbGwgMSAtIGl0ZW1zJywgbW9ja2VkSXRlbXNbMF0pfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L0NlbGw+XG4gICAgICAgIDxDZWxsIGRhdGE9e3RleHQoJ2NlbGwgMiAtIGl0ZW1zJywgbW9ja2VkSXRlbXNbMV0pfSAvPlxuICAgICAgICA8Q2VsbCBkYXRhPXt0ZXh0KCdjZWxsIDMgLSBpdGVtcycsIG1vY2tlZEl0ZW1zWzJdKX0gLz5cbiAgICAgICAgPENlbGwgZGF0YT17dGV4dCgnY2VsbCA0IC0gaXRlbXMnLCBtb2NrZWRJdGVtc1szXSl9IC8+XG4gICAgICAgIDxDZWxsIGRhdGE9e3RleHQoJ2NlbGwgNSAtIGl0ZW1zJywgbW9ja2VkSXRlbXNbNF0pfSAvPlxuICAgICAgICA8Q2VsbD5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBzdHlsZT17b2JqZWN0KCdjZWxsIDYgLSBzdHlsZScsIHtcbiAgICAgICAgICAgICAgd2lkdGg6ICc4MHB4JyxcbiAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAnb3JhbmdlJyxcbiAgICAgICAgICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICAgICAgICAgIGNvbG9yOiAnd2hpdGUnLFxuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3RleHQoJ2NlbGwgNiAtIGl0ZW1zJywgbW9ja2VkSXRlbXNbNV0pfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L0NlbGw+XG4gICAgICAgIDxDZWxsIGRhdGE9e3RleHQoJ2NlbGwgNyAtIGl0ZW1zJywgbW9ja2VkSXRlbXNbNl0pfSAvPlxuICAgICAgPC9Sb3c+XG4gICAgKSxcbiAgICB7IG5vdGVzOiB7IG1hcmtkb3duOiByZWFkbWUgfSB9LFxuICApXG5cbiAgLmFkZChcbiAgICAnYjEyIC0gUm93IHdpdGggYnJlYWtwb2ludHMgYW5kIGN1c3RvbSBjZWxscycsXG4gICAgKCkgPT4gKFxuICAgICAgPFJvdyBpZD17dGV4dCgnaWQnLCAncm93LWlkJyl9PlxuICAgICAgICA8Q2VsbFxuICAgICAgICAgIGJyZWFrcG9pbnRzPXthcnJheSgnYnJlYWtwb2ludHMnLCBtb2NrZWRCcmVha3BvaW50cyl9XG4gICAgICAgICAgcHJpb3JpdHk9e251bWJlcignY2VsbCAxIC0gcHJpb3JpdHknLCAxKX1cbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIHN0eWxlPXtvYmplY3QoJ2NlbGwgMSAtIHN0eWxlJywge1xuICAgICAgICAgICAgICB3aWR0aDogJzIwMHB4JyxcbiAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAnYmx1ZScsXG4gICAgICAgICAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgICAgICAgICBjb2xvcjogJ3doaXRlJyxcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt0ZXh0KCdjZWxsIDEgLSBpdGVtcycsIG1vY2tlZEl0ZW1zWzBdKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9DZWxsPlxuICAgICAgICA8Q2VsbFxuICAgICAgICAgIGRhdGE9e3RleHQoJ2NlbGwgMiAtIGl0ZW1zJywgbW9ja2VkSXRlbXNbMV0pfVxuICAgICAgICAgIGJyZWFrcG9pbnRzPXttb2NrZWRCcmVha3BvaW50c31cbiAgICAgICAgICBwcmlvcml0eT17bnVtYmVyKCdjZWxsIDIgLSBwcmlvcml0eScsIDIpfVxuICAgICAgICAvPlxuICAgICAgICA8Q2VsbCBkYXRhPXt0ZXh0KCdjZWxsIDMgLSBpdGVtcycsIG1vY2tlZEl0ZW1zWzJdKX0gYnJlYWtwb2ludHM9e21vY2tlZEJyZWFrcG9pbnRzfSAvPlxuICAgICAgICA8Q2VsbFxuICAgICAgICAgIGRhdGE9e3RleHQoJ2NlbGwgNCAtIGl0ZW1zJywgbW9ja2VkSXRlbXNbM10pfVxuICAgICAgICAgIGJyZWFrcG9pbnRzPXttb2NrZWRCcmVha3BvaW50c31cbiAgICAgICAgICBwcmlvcml0eT17bnVtYmVyKCdjZWxsIDQgLSBwcmlvcml0eScsIDIpfVxuICAgICAgICAvPlxuICAgICAgICA8Q2VsbFxuICAgICAgICAgIGRhdGE9e3RleHQoJ2NlbGwgNSAtIGl0ZW1zJywgbW9ja2VkSXRlbXNbNF0pfVxuICAgICAgICAgIGJyZWFrcG9pbnRzPXttb2NrZWRCcmVha3BvaW50c31cbiAgICAgICAgICBwcmlvcml0eT17bnVtYmVyKCdjZWxsIDUgLSBwcmlvcml0eScsIDMpfVxuICAgICAgICAvPlxuICAgICAgICA8Q2VsbCBicmVha3BvaW50cz17bW9ja2VkQnJlYWtwb2ludHN9IHByaW9yaXR5PXtudW1iZXIoJ2NlbGwgNiAtIHByaW9yaXR5JywgNCl9PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIHN0eWxlPXtvYmplY3QoJ2NlbGwgNiAtIHN0eWxlJywge1xuICAgICAgICAgICAgICB3aWR0aDogJzgwcHgnLFxuICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICdvcmFuZ2UnLFxuICAgICAgICAgICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICAgICAgICAgICAgY29sb3I6ICd3aGl0ZScsXG4gICAgICAgICAgICB9KX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dGV4dCgnY2VsbCA2IC0gaXRlbXMnLCBtb2NrZWRJdGVtc1s1XSl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvQ2VsbD5cbiAgICAgICAgPENlbGwgZGF0YT17dGV4dCgnY2VsbCA3IC0gaXRlbXMnLCBtb2NrZWRJdGVtc1s2XSl9IGJyZWFrcG9pbnRzPXttb2NrZWRCcmVha3BvaW50c30gLz5cbiAgICAgIDwvUm93PlxuICAgICksXG4gICAgeyBub3RlczogeyBtYXJrZG93bjogcmVhZG1lIH0gfSxcbiAgKVxuXG4gIC5hZGQoXG4gICAgJ2IxMyAtIEN1c3RvbSByb3cnLFxuICAgICgpID0+IChcbiAgICAgIDxSb3cgaWQ9e3RleHQoJ2lkJywgJ3Jvdy1pZCcpfSByb3dIZWlnaHQ9e3RleHQoJ3Jvd0hlaWdodCcsICcnKX0+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBzdHlsZT17b2JqZWN0KCdyb3cgY2hpbGRyZW4gc3R5bGUnLCB7XG4gICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICBoZWlnaHQ6ICcyMDBweCcsXG4gICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ3NwYWNlLWFyb3VuZCcsXG4gICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgfSl9XG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGg0Pnt0ZXh0KCdjZWxsIDEgLSAgY3VzdG9tIHRpdGxlJywgJ0N1c3RvbScpfTwvaDQ+XG4gICAgICAgICAgICA8cD57dGV4dCgnY2VsbCAxIC0gaXRlbXMnLCBtb2NrZWRJdGVtc1swXSl9PC9wPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8aDQ+e3RleHQoJ2NlbGwgMiAtICBjdXN0b20gdGl0bGUnLCAnQ3VzdG9tJyl9PC9oND5cbiAgICAgICAgICAgIDxwPnt0ZXh0KCdjZWxsIDIgLSBpdGVtcycsIG1vY2tlZEl0ZW1zWzFdKX08L3A+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxoND57dGV4dCgnY2VsbCAzIC0gIGN1c3RvbSB0aXRsZScsICdDdXN0b20nKX08L2g0PlxuICAgICAgICAgICAgPHA+e3RleHQoJ2NlbGwgMyAtIGl0ZW1zJywgbW9ja2VkSXRlbXNbMl0pfTwvcD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGg0Pnt0ZXh0KCdjZWxsIDQgLSAgY3VzdG9tIHRpdGxlJywgJ0N1c3RvbScpfTwvaDQ+XG4gICAgICAgICAgICA8cD57dGV4dCgnY2VsbCA0IC0gaXRlbXMnLCBtb2NrZWRJdGVtc1szXSl9PC9wPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvUm93PlxuICAgICksXG4gICAgeyBub3RlczogeyBtYXJrZG93bjogcmVhZG1lIH0gfSxcbiAgKTtcbiJdfQ==