td-stylekit 26.25.1 → 27.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,15 @@
1
+ # [27.0.0](https://github.com/treasure-data/td-stylekit/compare/v26.25.1...v27.0.0) (2022-09-02)
2
+
3
+
4
+ ### Features
5
+
6
+ * **DataGrid:** Resizable columns ([#1323](https://github.com/treasure-data/td-stylekit/issues/1323)) ([ce69139](https://github.com/treasure-data/td-stylekit/commit/ce69139))
7
+
8
+
9
+ ### BREAKING CHANGES
10
+
11
+ * **DataGrid:** for v5 theme, add `isFirst` prop to any custom cell renderer in the first column to maintain padding.
12
+
1
13
  ## [26.25.1](https://github.com/treasure-data/td-stylekit/compare/v26.25.0...v26.25.1) (2022-09-01)
2
14
 
3
15
 
@@ -6,7 +6,7 @@ import * as Elements from './elements';
6
6
  import * as Renderers from './renderers';
7
7
  import { CollapsibleCell } from './components';
8
8
  import * as dataGridUtils from './utils';
9
- import type { BasicColumnMappedProps } from './components/BasicColumn';
9
+ import type { BasicColumnMappedProps, BasicColumnProps } from './components/BasicColumn';
10
10
  import type { LocaleStrings } from './constants';
11
11
  export declare type onFilterArguments = {
12
12
  filters: {
@@ -40,6 +40,9 @@ export declare type DataGridProps = {
40
40
  contextMenuRenderer?: (contextMenuRendererArguments: contextMenuRendererArguments) => React.ReactNode;
41
41
  /** Called when a column is filtered or sorted. */
42
42
  onFilter: (onFilterArguments: onFilterArguments) => void;
43
+ /** Called when a column is resized by the user. Passing this in enables
44
+ * resize handles on the right edge of the header cells. */
45
+ onResize?: (newSizes: number[]) => void;
43
46
  /** Called when the row selection changes. Receives array of indices. */
44
47
  onSelect: (indexes: number[]) => void;
45
48
  /** Called when the row is double clicked. Receives index. */
@@ -99,7 +102,7 @@ declare type HandleFilterArguments = {
99
102
  *
100
103
  */
101
104
  declare class DataGrid extends Component<DataGridProps, DataGridState> {
102
- static Column: import("lodash").CurriedFunction2<import("./components/BasicColumn").BasicColumnProps, BasicColumnMappedProps, import("@emotion/react/jsx-runtime").JSX.Element | null>;
105
+ static Column: import("lodash").CurriedFunction2<BasicColumnProps, BasicColumnMappedProps, import("@emotion/react/jsx-runtime").JSX.Element | null>;
103
106
  static SortDirection: import("react-virtualized/dist/es/Table").SortDirectionStatic;
104
107
  static Elements: typeof Elements;
105
108
  static InputCell: any;
@@ -107,6 +110,7 @@ declare class DataGrid extends Component<DataGridProps, DataGridState> {
107
110
  static Renderers: typeof Renderers;
108
111
  static SINGLE_SELECT: SelectableType;
109
112
  static MULTI_SELECT: SelectableType;
113
+ static MIN_COL_WIDTH: number;
110
114
  static utils: typeof dataGridUtils;
111
115
  static defaultProps: {
112
116
  loadMoreRows: (...args: any[]) => void;
@@ -122,6 +126,8 @@ declare class DataGrid extends Component<DataGridProps, DataGridState> {
122
126
  static displayName: string;
123
127
  state: DataGridState;
124
128
  infiniteTable: React.RefObject<InfiniteLoader>;
129
+ totalWidth: number;
130
+ columnWidthPercents: number[];
125
131
  columnTransformer: (columns: React.ReactElement<any>[], rowData: any, rowIndex: number) => React.ReactNode[] | null | undefined;
126
132
  select: ({ index, contiguous }: {
127
133
  index: number;
@@ -145,6 +151,10 @@ declare class DataGrid extends Component<DataGridProps, DataGridState> {
145
151
  event: React.MouseEvent<any>;
146
152
  index: number;
147
153
  }) => void>;
154
+ handleResize: ({ x, index }: {
155
+ x: number;
156
+ index: number;
157
+ }) => void;
148
158
  mapChildren: () => React.ReactNode[];
149
159
  isRowLoaded: ({ index }: Index) => boolean;
150
160
  isContextMenuVisible: (index: number) => boolean | null;
@@ -127,6 +127,10 @@ var DataGrid = /*#__PURE__*/function (_Component) {
127
127
 
128
128
  _defineProperty(_assertThisInitialized(_this), "infiniteTable", /*#__PURE__*/_react2["default"].createRef());
129
129
 
130
+ _defineProperty(_assertThisInitialized(_this), "totalWidth", 0);
131
+
132
+ _defineProperty(_assertThisInitialized(_this), "columnWidthPercents", []);
133
+
130
134
  _defineProperty(_assertThisInitialized(_this), "columnTransformer", void 0);
131
135
 
132
136
  _defineProperty(_assertThisInitialized(_this), "select", function (_ref) {
@@ -348,6 +352,45 @@ var DataGrid = /*#__PURE__*/function (_Component) {
348
352
  trailing: false
349
353
  }));
350
354
 
355
+ _defineProperty(_assertThisInitialized(_this), "handleResize", function (_ref6) {
356
+ var x = _ref6.x,
357
+ index = _ref6.index;
358
+
359
+ if (_this.columnWidthPercents.length > 0 && _this.totalWidth) {
360
+ var _this$props$scrollWid;
361
+
362
+ var prevWidths = _this.columnWidthPercents;
363
+
364
+ var newWidths = _toConsumableArray(prevWidths);
365
+
366
+ var parentWidth = (_this$props$scrollWid = _this.props.scrollWidth) !== null && _this$props$scrollWid !== void 0 ? _this$props$scrollWid : _this.props.width; // limit next index from going beyond bounds
367
+
368
+ var nextIndex = Math.min(index + 1, prevWidths.length - 1);
369
+ var percentChange = x / _this.totalWidth;
370
+
371
+ if (_this.props.scrollWidth) {
372
+ // if table is scrollable, we can grow the column without
373
+ // shrinking the others
374
+ var safePercentChange = (prevWidths[index] + percentChange) * parentWidth < DataGrid.MIN_COL_WIDTH ? 0 : percentChange;
375
+ newWidths[index] = prevWidths[index] + safePercentChange;
376
+ } else {
377
+ // if the table is not scrollable, ensure all columns fit by
378
+ // adjusting the current column and the one after it
379
+ var _safePercentChange = (prevWidths[index] + percentChange) * parentWidth < DataGrid.MIN_COL_WIDTH || (prevWidths[nextIndex] - percentChange) * parentWidth < DataGrid.MIN_COL_WIDTH ? 0 : percentChange;
380
+
381
+ newWidths[index] = prevWidths[index] + _safePercentChange;
382
+ newWidths[nextIndex] = prevWidths[nextIndex] - _safePercentChange;
383
+ }
384
+
385
+ if (_this.props.onResize) {
386
+ _this.props.onResize( // multiply by width prop to get correct percentage
387
+ newWidths.map(function (width) {
388
+ return Math.round(width * parentWidth);
389
+ }));
390
+ }
391
+ }
392
+ });
393
+
351
394
  _defineProperty(_assertThisInitialized(_this), "mapChildren", function () {
352
395
  var IsArray = function IsArray(children) {
353
396
  return Array.isArray(children);
@@ -376,10 +419,10 @@ var DataGrid = /*#__PURE__*/function (_Component) {
376
419
 
377
420
  _this.handleFilter(_objectSpread({}, sortArgs));
378
421
  },
379
- onFilter: function onFilter(_ref6) {
380
- var dataKey = _ref6.dataKey,
381
- value = _ref6.value,
382
- operator = _ref6.operator;
422
+ onFilter: function onFilter(_ref7) {
423
+ var dataKey = _ref7.dataKey,
424
+ value = _ref7.value,
425
+ operator = _ref7.operator;
383
426
 
384
427
  _this.setSelectedRows([]);
385
428
 
@@ -389,13 +432,24 @@ var DataGrid = /*#__PURE__*/function (_Component) {
389
432
  operator: operator
390
433
  } : value)
391
434
  });
392
- }
435
+ },
436
+ onResize: // the presence of `onResize` will show drag handles so don't set it
437
+ // if no prop is passed in or for the last column if the table isn't
438
+ // scrollable
439
+ _this.props.onResize && (!_this.props.scrollWidth && index !== validChildren.length - 1 || _this.props.scrollWidth) ? function (_ref8) {
440
+ var x = _ref8.x;
441
+
442
+ _this.handleResize({
443
+ x: x,
444
+ index: index
445
+ });
446
+ } : undefined
393
447
  });
394
448
  });
395
449
  });
396
450
 
397
- _defineProperty(_assertThisInitialized(_this), "isRowLoaded", function (_ref7) {
398
- var index = _ref7.index;
451
+ _defineProperty(_assertThisInitialized(_this), "isRowLoaded", function (_ref9) {
452
+ var index = _ref9.index;
399
453
  var _this$props2 = _this.props,
400
454
  hasMoreRows = _this$props2.hasMoreRows,
401
455
  rowCount = _this$props2.rowCount;
@@ -432,9 +486,9 @@ var DataGrid = /*#__PURE__*/function (_Component) {
432
486
  return null;
433
487
  });
434
488
 
435
- _defineProperty(_assertThisInitialized(_this), "headerRowRenderer", function (_ref8) {
436
- var columns = _ref8.columns,
437
- style = _ref8.style;
489
+ _defineProperty(_assertThisInitialized(_this), "headerRowRenderer", function (_ref10) {
490
+ var columns = _ref10.columns,
491
+ style = _ref10.style;
438
492
  return (0, _jsxRuntime.jsx)(Elements.Row, {
439
493
  "data-gs-c": gsC(columns),
440
494
  "data-gs": gs("src", "datagrid", "datagrid.tsx", "data-grid", "elements-row"),
@@ -446,15 +500,15 @@ var DataGrid = /*#__PURE__*/function (_Component) {
446
500
  });
447
501
  });
448
502
 
449
- _defineProperty(_assertThisInitialized(_this), "rowRenderer", function (_ref9) {
450
- var key = _ref9.key,
451
- style = _ref9.style,
452
- index = _ref9.index,
453
- rowData = _ref9.rowData,
454
- columns = _ref9.columns,
455
- className = _ref9.className,
456
- onRowMouseOver = _ref9.onRowMouseOver,
457
- onRowMouseOut = _ref9.onRowMouseOut;
503
+ _defineProperty(_assertThisInitialized(_this), "rowRenderer", function (_ref11) {
504
+ var key = _ref11.key,
505
+ style = _ref11.style,
506
+ index = _ref11.index,
507
+ rowData = _ref11.rowData,
508
+ columns = _ref11.columns,
509
+ className = _ref11.className,
510
+ onRowMouseOver = _ref11.onRowMouseOver,
511
+ onRowMouseOut = _ref11.onRowMouseOut;
458
512
  return (0, _jsxRuntime.jsxs)(_components.FocusableRow, {
459
513
  "data-gs": gs("src", "datagrid", "datagrid.tsx", "data-grid", "focusable-row"),
460
514
  className: className,
@@ -562,6 +616,17 @@ var DataGrid = /*#__PURE__*/function (_Component) {
562
616
  width: child.props.width,
563
617
  flexGrow: child.props.flexGrow
564
618
  };
619
+ }); // Get the actual width of all the columns. This is independent from the
620
+ // width prop.
621
+
622
+ this.totalWidth = mappedChildren.reduce(function (total, child) {
623
+ return total + child.props.width;
624
+ }, 0); // Convert the widths to percents so we can map them back to the real table
625
+ // width later.
626
+
627
+ this.columnWidthPercents = mappedChildren.map(function (_ref12) {
628
+ var props = _ref12.props;
629
+ return props.width / _this2.totalWidth;
565
630
  });
566
631
 
567
632
  this.columnTransformer = function (columns, rowData, rowIndex) {
@@ -578,13 +643,13 @@ var DataGrid = /*#__PURE__*/function (_Component) {
578
643
  if (span > 1) {
579
644
  var followingColumns = spanData.slice(index, span); // find new width by adding current column width plus columns that are spanned over
580
645
 
581
- var _width = followingColumns.reduce(function (accumulator, _ref10) {
582
- var width = _ref10.width;
646
+ var _width = followingColumns.reduce(function (accumulator, _ref13) {
647
+ var width = _ref13.width;
583
648
  return accumulator + width;
584
649
  }, 0);
585
650
 
586
- var flexGrow = followingColumns.reduce(function (accumulator, _ref11) {
587
- var flexGrow = _ref11.flexGrow;
651
+ var flexGrow = followingColumns.reduce(function (accumulator, _ref14) {
652
+ var flexGrow = _ref14.flexGrow;
588
653
  return accumulator + flexGrow;
589
654
  }, 0);
590
655
  spannedColumns.push( /*#__PURE__*/_react2["default"].cloneElement(column, {
@@ -612,14 +677,14 @@ var DataGrid = /*#__PURE__*/function (_Component) {
612
677
  css: /*#__PURE__*/(0, _react.css)({
613
678
  width: width,
614
679
  height: height
615
- }, process.env.NODE_ENV === "production" ? "" : ";label:render;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9EYXRhR3JpZC9EYXRhR3JpZC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBeWxCUSIsImZpbGUiOiIuLi8uLi8uLi9zcmMvRGF0YUdyaWQvRGF0YUdyaWQudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IENvbXBvbmVudCB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbSdcbmltcG9ydCB7XG4gIEluZmluaXRlTG9hZGVyLFxuICBUYWJsZSxcbiAgU29ydERpcmVjdGlvbixcbiAgVGFibGVSb3dQcm9wc1xufSBmcm9tICdyZWFjdC12aXJ0dWFsaXplZCdcbmltcG9ydCB0eXBlIHtcbiAgU29ydERpcmVjdGlvblR5cGUsXG4gIFRhYmxlUHJvcHMsXG4gIEluZGV4UmFuZ2UsXG4gIEluZGV4LFxuICBSb3dNb3VzZUV2ZW50SGFuZGxlclBhcmFtc1xufSBmcm9tICdyZWFjdC12aXJ0dWFsaXplZCdcbmltcG9ydCAqIGFzIEVsZW1lbnRzIGZyb20gJy4vZWxlbWVudHMnXG5pbXBvcnQgKiBhcyBSZW5kZXJlcnMgZnJvbSAnLi9yZW5kZXJlcnMnXG5pbXBvcnQge1xuICBCYXNpY0NvbHVtbixcbiAgRm9jdXNhYmxlUm93LFxuICBJbnB1dENlbGwsXG4gIENvbGxhcHNpYmxlQ2VsbCxcbiAgU2Nyb2xsYWJsZVRhYmxlXG59IGZyb20gJy4vY29tcG9uZW50cydcbmltcG9ydCB7IENsb3NlV3JhcHBlciB9IGZyb20gJy4uL3V0aWxzJ1xuaW1wb3J0IGN1cnJ5IGZyb20gJ2xvZGFzaC5jdXJyeSdcbmltcG9ydCBpbmNsdWRlcyBmcm9tICdsb2Rhc2guaW5jbHVkZXMnXG5pbXBvcnQgbm9vcCBmcm9tICdsb2Rhc2gubm9vcCdcbmltcG9ydCByYW5nZSBmcm9tICdsb2Rhc2gucmFuZ2UnXG5pbXBvcnQgdGhyb3R0bGUgZnJvbSAnbG9kYXNoLnRocm90dGxlJ1xuaW1wb3J0IHVuaXEgZnJvbSAnbG9kYXNoLnVuaXEnXG5pbXBvcnQgKiBhcyBkYXRhR3JpZFV0aWxzIGZyb20gJy4vdXRpbHMnXG5pbXBvcnQgdHlwZSB7IEJhc2ljQ29sdW1uTWFwcGVkUHJvcHMgfSBmcm9tICcuL2NvbXBvbmVudHMvQmFzaWNDb2x1bW4nXG5pbXBvcnQgdHlwZSB7IExvY2FsZVN0cmluZ3MgfSBmcm9tICcuL2NvbnN0YW50cydcblxuZXhwb3J0IHR5cGUgb25GaWx0ZXJBcmd1bWVudHMgPSB7XG4gIGZpbHRlcnM6IHsgW2RhdGFLZXk6IHN0cmluZ106IGFueSB9XG4gIHNvcnRCeT86IHN0cmluZ1xuICBzb3J0RGlyZWN0aW9uPzogU29ydERpcmVjdGlvblR5cGVcbn1cblxudHlwZSBhY3RpdmVDb250ZXh0TWVudVN0YXRlID0ge1xuICB0b3A6IG51bWJlclxuICBsZWZ0OiBudW1iZXJcbiAgaW5kZXg6IG51bWJlclxuICByb3dEYXRhOiBhbnlcbn1cblxudHlwZSBjb250ZXh0TWVudVJlbmRlcmVyQXJndW1lbnRzID0ge1xuICB0b3A/OiBudW1iZXJcbiAgbGVmdD86IG51bWJlclxuICBpbmRleD86IG51bWJlclxuICByb3dEYXRhPzogYW55XG4gIHNlbGVjdGVkUm93czogQXJyYXk8bnVtYmVyPlxuICBvbkNsb3NlOiAoKSA9PiB2b2lkXG59XG5cbmV4cG9ydCB0eXBlIFNlbGVjdGFibGVUeXBlID0gJ3NpbmdsZScgfCAnbXVsdGknXG5cbnR5cGUgQ29sdW1uRnVuY3Rpb24gPSAoYXJnczogQmFzaWNDb2x1bW5NYXBwZWRQcm9wcykgPT4gUmVhY3QuUmVhY3ROb2RlXG5cbmV4cG9ydCB0eXBlIERhdGFHcmlkUHJvcHMgPSB7XG4gIC8qKiBGdW5jdGlvbnMgdGhhdCBjcmVhdGUgcmVhY3QgdmlydHVhbGl6ZWQgQ29sdW1ucy4gRGVmYXVsdCBjb2x1bW4gaXMgZXhwb3NlZCBhcyBEYXRhR3JpZC5Db2x1bW4uICovXG4gIC8vIENhbiB0YWtlIGEgc2luZ2xlIGNvbHVtbiBvciBhbiBhcnJheSBvZiBjb2x1bW5zXG4gIGNoaWxkcmVuOiBDb2x1bW5GdW5jdGlvbiB8IEFycmF5PENvbHVtbkZ1bmN0aW9uPlxuICAvKiogSW5zdHJ1bWVudGF0aW9uICovXG4gICdkYXRhLWluc3RydW1lbnRhdGlvbic/OiBzdHJpbmdcbiAgLyoqIENhbGxlZCBkdXJpbmcgdGhlIG9uQ29udGV4dE1lbnUgZXZlbnQgb2YgZWFjaCByb3cuICovXG4gIGNvbnRleHRNZW51UmVuZGVyZXI/OiAoXG4gICAgY29udGV4dE1lbnVSZW5kZXJlckFyZ3VtZW50czogY29udGV4dE1lbnVSZW5kZXJlckFyZ3VtZW50c1xuICApID0+IFJlYWN0LlJlYWN0Tm9kZVxuICAvKiogQ2FsbGVkIHdoZW4gYSBjb2x1bW4gaXMgZmlsdGVyZWQgb3Igc29ydGVkLiAqL1xuICBvbkZpbHRlcjogKG9uRmlsdGVyQXJndW1lbnRzOiBvbkZpbHRlckFyZ3VtZW50cykgPT4gdm9pZFxuICAvKiogQ2FsbGVkIHdoZW4gdGhlIHJvdyBzZWxlY3Rpb24gY2hhbmdlcy4gUmVjZWl2ZXMgYXJyYXkgb2YgaW5kaWNlcy4gKi9cbiAgb25TZWxlY3Q6IChpbmRleGVzOiBudW1iZXJbXSkgPT4gdm9pZFxuICAvKiogQ2FsbGVkIHdoZW4gdGhlIHJvdyBpcyBkb3VibGUgY2xpY2tlZC4gUmVjZWl2ZXMgaW5kZXguICovXG4gIG9uUm93RG91YmxlQ2xpY2s/OiAoaW5mbzogUm93TW91c2VFdmVudEhhbmRsZXJQYXJhbXMpID0+IHZvaWRcbiAgLyoqIEluZmluaXRlIGxvYWRpbmc6IEluZGljYXRlcyBtb3JlIHJvd3MgbmVlZCB0byBiZSBsb2FkZWQuICovXG4gIGhhc01vcmVSb3dzPzogYm9vbGVhblxuICAvKiogSW5maW5pdGUgbG9hZGluZzogQ2FsbGVkIHdoZW4gbW9yZSByb3dzIG5lZWQgdG8gYmUgbG9hZGVkLiAqL1xuICBsb2FkTW9yZVJvd3M/OiAocHJvcHM6IEluZGV4UmFuZ2UpID0+IFByb21pc2U8YW55PlxuICAvKiogQ291bnQgb2Ygcm93cyB0aGF0IGhhdmUgYWxyZWFkeSBiZWVuIGxvYWRlZC4gKi9cbiAgcm93Q291bnQ6IG51bWJlclxuICAvKiogUmVxdWlyZWQgYnkgcmVhY3QtdmlydHVhbGl6ZWQgdGFibGUuICovXG4gIHJvd0dldHRlcjogKHByb3BzOiB7IGluZGV4OiBudW1iZXIgfSkgPT4gYW55XG4gIC8qKiBXaGV0aGVyIHJvd3MgY2FuIGJlIHNlbGVjdGVkIChhbmQgaG93IG1hbnkpLiAqL1xuICBzZWxlY3RhYmxlPzogU2VsZWN0YWJsZVR5cGUgfCBmYWxzZVxuICAvKiogQXJyYXkgb2YgaW5kaWNlcyB0aGF0IHNob3VsZCBiZSBzZWxlY3RlZC4gT25seSB1c2VkIGlmIGBzZWxlY3RhYmxlYCBpcyBzZXQuICovXG4gIHNlbGVjdGVkUm93czogQXJyYXk8bnVtYmVyPlxuICAvKiogVGhlIGNvbHVtbiB5b3Ugd2FudCB0byBzb3J0ICovXG4gIHNvcnRCeT86IHN0cmluZ1xuICAvKiogVGhlIGRpcmVjdGlvbiBzb3J0aW5nIHNob3VsZCBiZSBkb25lICovXG4gIHNvcnREaXJlY3Rpb24/OiBTb3J0RGlyZWN0aW9uVHlwZVxuICAvKiogQSBtYXAgb2YgY29sdW1ucyB0byBmaWx0ZXIgZGF0YSAqL1xuICBmaWx0ZXJzPzogeyBbZGF0YUtleTogc3RyaW5nXTogYW55IH1cbiAgLyoqIFNldCB0aGUgd2lkdGggb2Ygc2Nyb2xsYWJsZSBjb250ZW50ICovXG4gIHNjcm9sbFdpZHRoPzogbnVtYmVyXG4gIHdpZHRoOiBudW1iZXJcbiAgaGVpZ2h0OiBudW1iZXJcbiAgLyoqIExvY2FsZSBzdHJpbmc6IGphLCBkZSwgZXMsIGtvLCBlbiwgZXRjLiAqL1xuICBsb2NhbGU/OiBzdHJpbmdcbiAgLyoqIExvY2FsZSBzdHJpbmdzIHRvIG92ZXJyaWRlIGVuIGZvciBsYW5ndWFnZSBpbiBsb2NhbGUgKi9cbiAgbG9jYWxlU3RyaW5ncz86IExvY2FsZVN0cmluZ3NcbiAgLyoqIGFsbG93IGV2ZW50cyB0byBwcm9wYWdhdGUgdG8gYSBjZWxsIG9uIHJvdyBzZWxlY3QgKi9cbiAgYWxsb3dSb3dFdmVudFBhc3N0aHJvdWdoPzogYm9vbGVhblxufSAmIFBhcnRpYWw8VGFibGVQcm9wcz5cblxudHlwZSBEYXRhR3JpZFN0YXRlID0ge1xuICBhY3RpdmVDb250ZXh0TWVudTogYWN0aXZlQ29udGV4dE1lbnVTdGF0ZSB8IG51bGxcbiAgZGlzYWJsZUtleWJvYXJkU2hvcnRjdXRzOiBib29sZWFuXG4gIGZvY3VzZWRSb3c6IG51bWJlciB8IG51bGxcbiAgc2VsZWN0aW5nOiBib29sZWFuXG4gIGxhc3RTZWxlY3RlZFJvdzogbnVtYmVyIHwgbnVsbFxufVxuXG50eXBlIEhhbmRsZUZpbHRlckFyZ3VtZW50cyA9IHtcbiAgc29ydEJ5Pzogc3RyaW5nXG4gIHNvcnREaXJlY3Rpb24/OiBTb3J0RGlyZWN0aW9uVHlwZVxuICBmaWx0ZXJzPzogYW55XG59XG5cbi8qKlxuICogQ29tcG9uZW50IGZvciBkaXNwbGF5aW5nIGRhdGEgaW4gYSBncmlkIHdpdGggc3VwcG9ydCBmb3IgdGhpbmdzIGxpa2VcbiAqIGZpbHRlcmluZywgc29ydGluZywgYW5kIGNvbnRleHQgbWVudXMuXG4gKlxuICogRGVwZW5kcyBvbiByZWFjdC12aXJ0dWFsaXplZC9zdHlsZXMuY3NzLlxuICpcbiAqIEZvciByZWFjdC12aXJ0dWFsaXplZCBUYWJsZSBkb2NzIHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2J2YXVnaG4vcmVhY3QtdmlydHVhbGl6ZWQvYmxvYi9tYXN0ZXIvZG9jcy9UYWJsZS5tZFxuICpcbiAqL1xuY2xhc3MgRGF0YUdyaWQgZXh0ZW5kcyBDb21wb25lbnQ8RGF0YUdyaWRQcm9wcywgRGF0YUdyaWRTdGF0ZT4ge1xuICAvLyBleHBvc2Ugc3ViLWNvbXBvbmVudHNcbiAgc3RhdGljIENvbHVtbiA9IGN1cnJ5KEJhc2ljQ29sdW1uKVxuICBzdGF0aWMgU29ydERpcmVjdGlvbiA9IFNvcnREaXJlY3Rpb25cbiAgc3RhdGljIEVsZW1lbnRzID0gRWxlbWVudHNcbiAgc3RhdGljIElucHV0Q2VsbCA9IElucHV0Q2VsbFxuICBzdGF0aWMgQ29sbGFwc2libGVDZWxsID0gQ29sbGFwc2libGVDZWxsXG4gIHN0YXRpYyBSZW5kZXJlcnMgPSBSZW5kZXJlcnNcblxuICBzdGF0aWMgU0lOR0xFX1NFTEVDVDogU2VsZWN0YWJsZVR5cGUgPSAnc2luZ2xlJ1xuICBzdGF0aWMgTVVMVElfU0VMRUNUOiBTZWxlY3RhYmxlVHlwZSA9ICdtdWx0aSdcblxuICBzdGF0aWMgdXRpbHMgPSBkYXRhR3JpZFV0aWxzXG5cbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICBsb2FkTW9yZVJvd3M6IG5vb3AsXG4gICAgb25TZWxlY3Q6IG5vb3AsXG4gICAgb25GaWx0ZXI6IG5vb3AsXG4gICAgJ2RhdGEtaW5zdHJ1bWVudGF0aW9uJzogJ2RhdGFncmlkJyxcbiAgICBzb3J0Qnk6ICcnLFxuICAgIHNvcnREaXJlY3Rpb246IFNvcnREaXJlY3Rpb24uQVNDLFxuICAgIGZpbHRlcnM6IHt9LFxuICAgIHNlbGVjdGVkUm93czogW10sXG4gICAgYWxsb3dSb3dFdmVudFBhc3N0aHJvdWdoOiBmYWxzZVxuICB9XG5cbiAgc3RhdGljIGRpc3BsYXlOYW1lID0gJ0RhdGFHcmlkJ1xuXG4gIHN0YXRlOiBEYXRhR3JpZFN0YXRlID0ge1xuICAgIGFjdGl2ZUNvbnRleHRNZW51OiBudWxsLFxuICAgIGRpc2FibGVLZXlib2FyZFNob3J0Y3V0czogZmFsc2UsXG4gICAgZm9jdXNlZFJvdzogbnVsbCxcbiAgICBsYXN0U2VsZWN0ZWRSb3c6IG51bGwsXG4gICAgc2VsZWN0aW5nOiBmYWxzZVxuICB9XG5cbiAgaW5maW5pdGVUYWJsZSA9IFJlYWN0LmNyZWF0ZVJlZjxJbmZpbml0ZUxvYWRlcj4oKVxuXG4gIGNvbHVtblRyYW5zZm9ybWVyOiAoXG4gICAgY29sdW1uczogUmVhY3QuUmVhY3RFbGVtZW50PGFueT5bXSxcbiAgICByb3dEYXRhOiBhbnksXG4gICAgcm93SW5kZXg6IG51bWJlclxuICApID0+IFJlYWN0LlJlYWN0Tm9kZVtdIHwgbnVsbCB8IHVuZGVmaW5lZFxuXG4gIHNlbGVjdCA9ICh7XG4gICAgaW5kZXgsXG4gICAgY29udGlndW91cyA9IGZhbHNlXG4gIH06IHtcbiAgICBpbmRleDogbnVtYmVyXG4gICAgY29udGlndW91czogYm9vbGVhblxuICB9KSA9PiB7XG4gICAgaWYgKGluZGV4ID09PSBudWxsKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgdGhpcy5zZXRTdGF0ZShzdGF0ZSA9PiB7XG4gICAgICBjb25zdCB7IGxhc3RTZWxlY3RlZFJvdyB9ID0gc3RhdGVcbiAgICAgIGNvbnN0IHsgc2VsZWN0ZWRSb3dzIH0gPSB0aGlzLnByb3BzXG4gICAgICBsZXQgc2VsZWN0ZWQgPSBbLi4uc2VsZWN0ZWRSb3dzLCBpbmRleF1cbiAgICAgIGlmICh0aGlzLnByb3BzLnNlbGVjdGFibGUgPT09IERhdGFHcmlkLlNJTkdMRV9TRUxFQ1QpIHtcbiAgICAgICAgc2VsZWN0ZWQgPSBbaW5kZXhdXG4gICAgICB9IGVsc2UgaWYgKGNvbnRpZ3VvdXMgJiYgdHlwZW9mIGxhc3RTZWxlY3RlZFJvdyA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBNYXRoLm1pbihsYXN0U2VsZWN0ZWRSb3csIGluZGV4KVxuICAgICAgICBjb25zdCBlbmQgPSBNYXRoLm1heChsYXN0U2VsZWN0ZWRSb3csIGluZGV4KVxuICAgICAgICBzZWxlY3RlZCA9IHVuaXEoWy4uLnNlbGVjdGVkUm93cywgLi4ucmFuZ2Uoc3RhcnQsIGVuZCArIDEpXSlcbiAgICAgIH1cbiAgICAgIHRoaXMucHJvcHMub25TZWxlY3Qoc2VsZWN0ZWQpXG4gICAgICByZXR1cm4geyBsYXN0U2VsZWN0ZWRSb3c6IGluZGV4IH1cbiAgICB9KVxuICB9XG5cbiAgc2VsZWN0QWxsID0gKCkgPT4ge1xuICAgIGNvbnN0IHsgcm93Q291bnQgfSA9IHRoaXMucHJvcHNcbiAgICB0aGlzLnNldFNlbGVjdGVkUm93cyhBcnJheS5mcm9tKHsgbGVuZ3RoOiByb3dDb3VudCB9KS5tYXAoKF8sIGlkeCkgPT4gaWR4KSlcbiAgfVxuXG4gIGRlc2VsZWN0ID0gKHtcbiAgICBpbmRleCxcbiAgICBjb250aWd1b3VzID0gZmFsc2VcbiAgfToge1xuICAgIGluZGV4OiBudW1iZXJcbiAgICBjb250aWd1b3VzOiBib29sZWFuXG4gIH0pID0+IHtcbiAgICBpZiAoaW5kZXggPT09IG51bGwpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICB0aGlzLnNldFN0YXRlKHN0YXRlID0+IHtcbiAgICAgIGNvbnN0IHsgbGFzdFNlbGVjdGVkUm93IH0gPSBzdGF0ZVxuICAgICAgY29uc3QgeyBzZWxlY3RlZFJvd3MgfSA9IHRoaXMucHJvcHNcbiAgICAgIGxldCBzZWxlY3RlZCA9IHNlbGVjdGVkUm93cy5maWx0ZXIoaWR4ID0+IGlkeCAhPT0gaW5kZXgpXG4gICAgICBpZiAoY29udGlndW91cyAmJiB0eXBlb2YgbGFzdFNlbGVjdGVkUm93ID09PSAnbnVtYmVyJykge1xuICAgICAgICBjb25zdCBzdGFydCA9IE1hdGgubWluKGxhc3RTZWxlY3RlZFJvdywgaW5kZXgpXG4gICAgICAgIGNvbnN0IGVuZCA9IE1hdGgubWF4KGxhc3RTZWxlY3RlZFJvdywgaW5kZXgpXG4gICAgICAgIGNvbnN0IHRvRGVzZWxlY3QgPSByYW5nZShzdGFydCwgZW5kICsgMSlcbiAgICAgICAgc2VsZWN0ZWQgPSBzZWxlY3RlZFJvd3MuZmlsdGVyKGlkeCA9PiAhaW5jbHVkZXModG9EZXNlbGVjdCwgaWR4KSlcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5wcm9wcy5zZWxlY3RhYmxlID09PSBEYXRhR3JpZC5TSU5HTEVfU0VMRUNUICYmXG4gICAgICAgICFzZWxlY3RlZC5sZW5ndGhcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgfVxuICAgICAgdGhpcy5wcm9wcy5vblNlbGVjdChzZWxlY3RlZClcbiAgICAgIHJldHVybiB7IGxhc3RTZWxlY3RlZFJvdzogaW5kZXggfVxuICAgIH0pXG4gIH1cblxuICBkZXNlbGVjdEFsbCA9ICgpID0+IHtcbiAgICB0aGlzLnNldFNlbGVjdGVkUm93cyhbXSlcbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIGxhc3RTZWxlY3RlZFJvdzogbnVsbFxuICAgIH0pXG4gIH1cblxuICB0b2dnbGVTZWxlY3QgPSAoe1xuICAgIGluZGV4LFxuICAgIGNvbnRpZ3VvdXNcbiAgfToge1xuICAgIGluZGV4OiBudW1iZXJcbiAgICBjb250aWd1b3VzOiBib29sZWFuXG4gIH0pID0+IHtcbiAgICBpZiAoaW5kZXggPT09IG51bGwpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoIXRoaXMucHJvcHMuc2VsZWN0ZWRSb3dzLmluY2x1ZGVzKGluZGV4KSkge1xuICAgICAgdGhpcy5zZWxlY3QoeyBpbmRleCwgY29udGlndW91cyB9KVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRlc2VsZWN0KHsgaW5kZXgsIGNvbnRpZ3VvdXMgfSlcbiAgICB9XG4gIH1cblxuICBzZXRTZWxlY3RlZFJvd3MgPSAocm93czogQXJyYXk8bnVtYmVyPikgPT4ge1xuICAgIHRoaXMucHJvcHMub25TZWxlY3Qocm93cylcbiAgfVxuXG4gIGhhbmRsZUZpbHRlciA9ICh7XG4gICAgc29ydEJ5LFxuICAgIHNvcnREaXJlY3Rpb24sXG4gICAgZmlsdGVyc1xuICB9OiBIYW5kbGVGaWx0ZXJBcmd1bWVudHMpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBzb3J0Qnk6IG9sZFNvcnRCeSxcbiAgICAgIHNvcnREaXJlY3Rpb246IG9sZFNvcnREaXJlY3Rpb24sXG4gICAgICBmaWx0ZXJzOiBvbGRGaWx0ZXJzXG4gICAgfSA9IHRoaXMucHJvcHNcbiAgICBjb25zdCBuZXdEYXRhID0ge1xuICAgICAgc29ydEJ5OiBzb3J0QnkgfHwgb2xkU29ydEJ5LFxuICAgICAgc29ydERpcmVjdGlvbjogc29ydERpcmVjdGlvbiB8fCBvbGRTb3J0RGlyZWN0aW9uLFxuICAgICAgZmlsdGVyczoge1xuICAgICAgICAuLi5vbGRGaWx0ZXJzLFxuICAgICAgICAuLi5maWx0ZXJzXG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMucHJvcHMub25GaWx0ZXIobmV3RGF0YSlcbiAgfVxuXG4gIGhhbmRsZUtleURvd24gPSAoZXZlbnQ6IFJlYWN0LktleWJvYXJkRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgaWYgKHRoaXMuc3RhdGUuZGlzYWJsZUtleWJvYXJkU2hvcnRjdXRzKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgIGNhc2UgJ2EnOlxuICAgICAgICBpZiAoXG4gICAgICAgICAgKGV2ZW50Lm1ldGFLZXkgfHwgZXZlbnQuY3RybEtleSkgJiZcbiAgICAgICAgICB0aGlzLnByb3BzLnNlbGVjdGFibGUgPT09IERhdGFHcmlkLk1VTFRJX1NFTEVDVFxuICAgICAgICApIHtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgaWYgKHRoaXMucHJvcHMucm93Q291bnQgPT09IHRoaXMucHJvcHMuc2VsZWN0ZWRSb3dzLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5kZXNlbGVjdEFsbCgpXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0QWxsKClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICB0aGlzLnNldFN0YXRlKHN0YXRlID0+ICh7XG4gICAgICAgICAgZm9jdXNlZFJvdzogTWF0aC5tYXgoKHN0YXRlLmZvY3VzZWRSb3cgfHwgMCkgLSAxLCAwKVxuICAgICAgICB9KSlcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgdGhpcy5zZXRTdGF0ZShzdGF0ZSA9PiAoe1xuICAgICAgICAgIGZvY3VzZWRSb3c6XG4gICAgICAgICAgICBzdGF0ZS5mb2N1c2VkUm93ICE9IG51bGxcbiAgICAgICAgICAgICAgPyBNYXRoLm1pbihzdGF0ZS5mb2N1c2VkUm93ICsgMSwgdGhpcy5wcm9wcy5yb3dDb3VudCAtIDEpXG4gICAgICAgICAgICAgIDogMFxuICAgICAgICB9KSlcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnRW50ZXInOlxuICAgICAgY2FzZSAnICc6XG4gICAgICAgIGlmICh0aGlzLnByb3BzLnNlbGVjdGFibGUpIHtcbiAgICAgICAgICB0aGlzLnRvZ2dsZVNlbGVjdCh7XG4gICAgICAgICAgICBpbmRleDogdGhpcy5zdGF0ZS5mb2N1c2VkUm93IHx8IDAsXG4gICAgICAgICAgICBjb250aWd1b3VzOiBldmVudC5zaGlmdEtleVxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnU2hpZnQnOlxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICBzZWxlY3Rpbmc6IHRydWVcbiAgICAgICAgfSlcbiAgICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVLZXlVcCA9IChldmVudDogUmVhY3QuS2V5Ym9hcmRFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICBpZiAodGhpcy5zdGF0ZS5kaXNhYmxlS2V5Ym9hcmRTaG9ydGN1dHMpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgY2FzZSAnU2hpZnQnOlxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICBzZWxlY3Rpbmc6IGZhbHNlXG4gICAgICAgIH0pXG4gICAgICAgIGJyZWFrXG4gICAgfVxuICB9XG5cbiAgLy8gdGhyb3R0bGluZyB0aGlzIHNvIGEgZG91YmxlIGNsaWNrIGJlaGF2ZXMgbGlrZSBhIHNpbmdsZSBjbGlja1xuICBoYW5kbGVSb3dDbGljayA9IHRocm90dGxlKFxuICAgICh7IGV2ZW50LCBpbmRleCB9OiB7IGV2ZW50OiBSZWFjdC5Nb3VzZUV2ZW50PGFueT47IGluZGV4OiBudW1iZXIgfSkgPT4ge1xuICAgICAgaWYgKCF0aGlzLnByb3BzLmFsbG93Um93RXZlbnRQYXNzdGhyb3VnaCkge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgfVxuXG4gICAgICB0aGlzLnRvZ2dsZVNlbGVjdCh7IGluZGV4LCBjb250aWd1b3VzOiBldmVudC5zaGlmdEtleSB9KVxuICAgIH0sXG4gICAgMjUwLFxuICAgIHsgbGVhZGluZzogdHJ1ZSwgdHJhaWxpbmc6IGZhbHNlIH1cbiAgKVxuXG4gIG1hcENoaWxkcmVuID0gKCkgPT4ge1xuICAgIGNvbnN0IElzQXJyYXkgPSAoY2hpbGRyZW4pOiBjaGlsZHJlbiBpcyBBcnJheTxDb2x1bW5GdW5jdGlvbj4gPT5cbiAgICAgIEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pXG5cbiAgICBjb25zdCBjaGlsZHJlbjogQXJyYXk8Q29sdW1uRnVuY3Rpb24+ID0gSXNBcnJheSh0aGlzLnByb3BzLmNoaWxkcmVuKVxuICAgICAgPyB0aGlzLnByb3BzLmNoaWxkcmVuXG4gICAgICA6IFt0aGlzLnByb3BzLmNoaWxkcmVuXVxuXG4gICAgY29uc3QgdmFsaWRDaGlsZHJlbiA9IGNoaWxkcmVuLmZpbHRlcihjaGlsZCA9PiB0eXBlb2YgY2hpbGQgPT09ICdmdW5jdGlvbicpXG5cbiAgICByZXR1cm4gdmFsaWRDaGlsZHJlbi5tYXAoKGNoaWxkLCBpbmRleCkgPT5cbiAgICAgIGNoaWxkKHtcbiAgICAgICAgbG9jYWxlOiB0aGlzLnByb3BzLmxvY2FsZSB8fCAnZW4nLFxuICAgICAgICBsb2NhbGVTdHJpbmdzOiB0aGlzLnByb3BzLmxvY2FsZVN0cmluZ3MgfHwge30sXG4gICAgICAgIGNvbHVtbkluZGV4OiBpbmRleCxcbiAgICAgICAgY29sdW1uQ291bnQ6IHZhbGlkQ2hpbGRyZW4ubGVuZ3RoLFxuICAgICAgICBnZXRGaWx0ZXJWYWx1ZTogZGF0YUtleSA9PlxuICAgICAgICAgIHRoaXMucHJvcHMuZmlsdGVycyAmJiB0aGlzLnByb3BzLmZpbHRlcnNbZGF0YUtleV0sXG4gICAgICAgIG9uSGVhZGVyUG9wb3Zlck9wZW46IG9wZW4gPT5cbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgZGlzYWJsZUtleWJvYXJkU2hvcnRjdXRzOiBvcGVuIH0pLFxuICAgICAgICBvblNvcnQ6IHNvcnRBcmdzID0+IHtcbiAgICAgICAgICB0aGlzLnNldFNlbGVjdGVkUm93cyhbXSlcbiAgICAgICAgICB0aGlzLmhhbmRsZUZpbHRlcih7IC4uLnNvcnRBcmdzIH0pXG4gICAgICAgIH0sXG4gICAgICAgIG9uRmlsdGVyOiAoeyBkYXRhS2V5LCB2YWx1ZSwgb3BlcmF0b3IgfSkgPT4ge1xuICAgICAgICAgIHRoaXMuc2V0U2VsZWN0ZWRSb3dzKFtdKVxuICAgICAgICAgIHRoaXMuaGFuZGxlRmlsdGVyKHtcbiAgICAgICAgICAgIGZpbHRlcnM6IHtcbiAgICAgICAgICAgICAgW2RhdGFLZXldOiBvcGVyYXRvclxuICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3JcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA6IHZhbHVlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApXG4gIH1cblxuICBpc1Jvd0xvYWRlZCA9ICh7IGluZGV4IH06IEluZGV4KSA9PiB7XG4gICAgY29uc3QgeyBoYXNNb3JlUm93cywgcm93Q291bnQgfSA9IHRoaXMucHJvcHNcbiAgICByZXR1cm4gIWhhc01vcmVSb3dzIHx8IGluZGV4IDwgcm93Q291bnRcbiAgfVxuXG4gIGlzQ29udGV4dE1lbnVWaXNpYmxlID0gKGluZGV4OiBudW1iZXIpID0+XG4gICAgdGhpcy5zdGF0ZS5hY3RpdmVDb250ZXh0TWVudSAmJiB0aGlzLnN0YXRlLmFjdGl2ZUNvbnRleHRNZW51LmluZGV4ID09PSBpbmRleFxuXG4gIGNsb3NlQ29udGV4dE1lbnUgPSAoKSA9PiB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICBhY3RpdmVDb250ZXh0TWVudTogbnVsbFxuICAgIH0pXG4gIH1cblxuICBjb250ZXh0TWVudVJlbmRlcmVyID0gKGluZGV4OiBudW1iZXIpID0+IHtcbiAgICBpZiAoXG4gICAgICB0aGlzLnByb3BzLmNvbnRleHRNZW51UmVuZGVyZXIgJiZcbiAgICAgIHRoaXMuaXNDb250ZXh0TWVudVZpc2libGUoaW5kZXgpICYmXG4gICAgICBkb2N1bWVudC5ib2R5ICE9PSBudWxsXG4gICAgKSB7XG4gICAgICBjb25zdCBjb250ZXh0TWVudUNsb3NlV3JhcHBlciA9IChcbiAgICAgICAgPENsb3NlV3JhcHBlciBvbkNsb3NlPXt0aGlzLmNsb3NlQ29udGV4dE1lbnV9PlxuICAgICAgICAgIHt0aGlzLnByb3BzLmNvbnRleHRNZW51UmVuZGVyZXIoe1xuICAgICAgICAgICAgLi4udGhpcy5zdGF0ZS5hY3RpdmVDb250ZXh0TWVudSxcbiAgICAgICAgICAgIHNlbGVjdGVkUm93czogdGhpcy5wcm9wcy5zZWxlY3RlZFJvd3MsXG4gICAgICAgICAgICBvbkNsb3NlOiB0aGlzLmNsb3NlQ29udGV4dE1lbnVcbiAgICAgICAgICB9KX1cbiAgICAgICAgPC9DbG9zZVdyYXBwZXI+XG4gICAgICApXG4gICAgICByZXR1cm4gUmVhY3RET00uY3JlYXRlUG9ydGFsKGNvbnRleHRNZW51Q2xvc2VXcmFwcGVyLCBkb2N1bWVudC5ib2R5KVxuICAgIH1cbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgaGVhZGVyUm93UmVuZGVyZXIgPSAoe1xuICAgIGNvbHVtbnMsXG4gICAgc3R5bGVcbiAgfToge1xuICAgIGNvbHVtbnM6IFJlYWN0LlJlYWN0Tm9kZVtdXG4gICAgc3R5bGU6IHt9XG4gIH0pID0+IChcbiAgICA8RWxlbWVudHMuUm93IHJvbGU9XCJyb3dcIiBoZWFkZXIgemVicmEgc3R5bGU9e3N0eWxlfT5cbiAgICAgIHtjb2x1bW5zfVxuICAgIDwvRWxlbWVudHMuUm93PlxuICApXG5cbiAgcm93UmVuZGVyZXIgPSAoe1xuICAgIGtleSxcbiAgICBzdHlsZSxcbiAgICBpbmRleCxcbiAgICByb3dEYXRhLFxuICAgIGNvbHVtbnMsXG4gICAgY2xhc3NOYW1lLFxuICAgIG9uUm93TW91c2VPdmVyLFxuICAgIG9uUm93TW91c2VPdXRcbiAgfTogVGFibGVSb3dQcm9wcykgPT4gKFxuICAgIDxGb2N1c2FibGVSb3dcbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgICAgYXJpYS1yb3dpbmRleD17aW5kZXggKyAxfVxuICAgICAgemVicmE9e2luZGV4ICUgMiA9PT0gMX1cbiAgICAgIHNlbGVjdGVkPXt0aGlzLnByb3BzLnNlbGVjdGVkUm93cy5pbmNsdWRlcyhpbmRleCl9XG4gICAgICBzZWxlY3Rpbmc9e3RoaXMuc3RhdGUuc2VsZWN0aW5nfVxuICAgICAgZm9jdXNlZD17aW5kZXggPT09IHRoaXMuc3RhdGUuZm9jdXNlZFJvd31cbiAgICAgIGtleT17a2V5fVxuICAgICAgc3R5bGU9e3N0eWxlfVxuICAgICAgb25Nb3VzZUxlYXZlPXtldmVudCA9PiB7XG4gICAgICAgIG9uUm93TW91c2VPdXQgJiYgb25Sb3dNb3VzZU91dCh7IHJvd0RhdGEsIGluZGV4LCBldmVudCB9KVxuICAgICAgfX1cbiAgICAgIG9uTW91c2VFbnRlcj17ZXZlbnQgPT4ge1xuICAgICAgICBvblJvd01vdXNlT3ZlciAmJiBvblJvd01vdXNlT3Zlcih7IHJvd0RhdGEsIGluZGV4LCBldmVudCB9KVxuICAgICAgfX1cbiAgICAgIG9uRm9jdXM9eygpID0+IHRoaXMuc2V0U3RhdGUoeyBmb2N1c2VkUm93OiBpbmRleCB9KX1cbiAgICAgIGRhdGEtaW5zdHJ1bWVudGF0aW9uPXtgJHt0aGlzLnByb3BzWydkYXRhLWluc3RydW1lbnRhdGlvbiddfS1yb3cke1xuICAgICAgICBpbmRleCArIDFcbiAgICAgIH1gfVxuICAgICAgb25DbGljaz17XG4gICAgICAgIHRoaXMucHJvcHMuc2VsZWN0YWJsZSAmJiAhdGhpcy5zdGF0ZS5hY3RpdmVDb250ZXh0TWVudVxuICAgICAgICAgID8gZXZlbnQgPT4gdGhpcy5oYW5kbGVSb3dDbGljayh7IGV2ZW50LCBpbmRleDogaW5kZXggfSlcbiAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgfVxuICAgICAgb25Db250ZXh0TWVudT17XG4gICAgICAgIHRoaXMucHJvcHMuY29udGV4dE1lbnVSZW5kZXJlclxuICAgICAgICAgID8gZXZlbnQgPT4ge1xuICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgICAgICBhY3RpdmVDb250ZXh0TWVudToge1xuICAgICAgICAgICAgICAgICAgbGVmdDogZXZlbnQuY2xpZW50WCxcbiAgICAgICAgICAgICAgICAgIHRvcDogZXZlbnQuY2xpZW50WSxcbiAgICAgICAgICAgICAgICAgIGluZGV4OiBpbmRleCxcbiAgICAgICAgICAgICAgICAgIHJvd0RhdGE6IHJvd0RhdGFcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAhdGhpcy5wcm9wcy5zZWxlY3RlZFJvd3MuaW5jbHVkZXMoaW5kZXgpICYmXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5zZWxlY3RhYmxlXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlUm93Q2xpY2soeyBldmVudCwgaW5kZXg6IGluZGV4IH0pXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICB9XG4gICAgICBvbkRvdWJsZUNsaWNrPXtldmVudCA9PlxuICAgICAgICB0aGlzLnByb3BzLm9uUm93RG91YmxlQ2xpY2sgJiZcbiAgICAgICAgdGhpcy5wcm9wcy5vblJvd0RvdWJsZUNsaWNrKHsgaW5kZXgsIGV2ZW50LCByb3dEYXRhIH0pXG4gICAgICB9XG4gICAgPlxuICAgICAge3RoaXMuY29sdW1uVHJhbnNmb3JtZXJcbiAgICAgICAgPyB0aGlzLmNvbHVtblRyYW5zZm9ybWVyKGNvbHVtbnMsIHJvd0RhdGEsIGluZGV4KVxuICAgICAgICA6IGNvbHVtbnN9XG4gICAgICB7dGhpcy5jb250ZXh0TWVudVJlbmRlcmVyKGluZGV4KX1cbiAgICA8L0ZvY3VzYWJsZVJvdz5cbiAgKVxuXG4gIC8qKlxuICAgKiAgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzIGlzIGFkZGVkIGJlY2F1c2UgZXZlbiB0aG91Z2ggdGhlIHByb3BzIGFyZSBub3QgdXNlZCBpbiB0aGlzIGNvbXBvbmVudFxuICAgKiB0aGV5IGFyZSBnZXR0aW5nIGRlc3RydWN0dXJlZCBpbnRvIC4uLnByb3BzIGFuZCBwYXNzZWQgZnVydGhlciBkb3duIHRoZSB0cmVlXG4gICAqL1xuICByZW5kZXIoKSB7XG4gICAgY29uc3Qge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgICAgY2hpbGRyZW4sXG4gICAgICBoYXNNb3JlUm93cyxcbiAgICAgIGhlaWdodCxcbiAgICAgIGxvYWRNb3JlUm93cyxcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICAgIG9uRmlsdGVyLFxuICAgICAgcm93Q291bnQsXG4gICAgICBzb3J0QnkgPSAnJyxcbiAgICAgIHNvcnREaXJlY3Rpb24sXG4gICAgICB3aWR0aCxcbiAgICAgIC4uLnByb3BzXG4gICAgfSA9IHRoaXMucHJvcHNcblxuICAgIC8vIFRoaXMgZml4ZXMgYW4gaXNzdWUgd2hlcmUgdGhlIGhlYWRlciBvZiB0aGUgRGF0YUdyaWQgZG9lc24ndCByZW5kZXIgb24gcGFnZSBsb2FkIGluIFNhZmFyaVxuICAgIGNvbnN0IHNhZmFyaVN0eWxlID0ge1xuICAgICAgdHJhbnNmb3JtOiBgdHJhbnNsYXRlWigwKWBcbiAgICB9XG5cbiAgICBjb25zdCBtYXBwZWRDaGlsZHJlbiA9IHRoaXMubWFwQ2hpbGRyZW4oKS5maWx0ZXIoY2hpbGQgPT4gY2hpbGQgIT09IG51bGwpXG4gICAgLy8gVE9ETzogQmV0dGVyIHR5cGUgc2lnbmF0dXJlIHdoZW4gYWNjZXNzaW5nIGNoaWxkcmVuIHByb3BzP1xuICAgIGNvbnN0IHNwYW5EYXRhID0gbWFwcGVkQ2hpbGRyZW4ubWFwKChjaGlsZDogUmVhY3QuUmVhY3RFbGVtZW50KSA9PiAoe1xuICAgICAgY29sc3BhbjogY2hpbGQucHJvcHMuY29sc3BhbiA/IGNoaWxkLnByb3BzLmNvbHNwYW4gOiAoKSA9PiAxLFxuICAgICAgd2lkdGg6IGNoaWxkLnByb3BzLndpZHRoLFxuICAgICAgZmxleEdyb3c6IGNoaWxkLnByb3BzLmZsZXhHcm93XG4gICAgfSkpXG4gICAgdGhpcy5jb2x1bW5UcmFuc2Zvcm1lciA9IChcbiAgICAgIGNvbHVtbnM6IFJlYWN0LlJlYWN0RWxlbWVudDxhbnk+W10sXG4gICAgICByb3dEYXRhLFxuICAgICAgcm93SW5kZXhcbiAgICApID0+IHtcbiAgICAgIGNvbnN0IHNwYW5zID0gc3BhbkRhdGEubWFwKGl0ZW0gPT4gaXRlbS5jb2xzcGFuKHJvd0RhdGEpKVxuICAgICAgY29uc3Qgc3Bhbm5lZENvbHVtbnM6IFJlYWN0LlJlYWN0RWxlbWVudFtdID0gW11cbiAgICAgIGxldCBpbmRleCA9IDBcbiAgICAgIHdoaWxlIChpbmRleCA8IGNvbHVtbnMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IHNwYW4gPSBzcGFuc1tpbmRleF1cbiAgICAgICAgY29uc3QgY29sdW1uID0gY29sdW1uc1tpbmRleF1cbiAgICAgICAgaWYgKHNwYW4gPiAxKSB7XG4gICAgICAgICAgY29uc3QgZm9sbG93aW5nQ29sdW1ucyA9IHNwYW5EYXRhLnNsaWNlKGluZGV4LCBzcGFuKVxuICAgICAgICAgIC8vIGZpbmQgbmV3IHdpZHRoIGJ5IGFkZGluZyBjdXJyZW50IGNvbHVtbiB3aWR0aCBwbHVzIGNvbHVtbnMgdGhhdCBhcmUgc3Bhbm5lZCBvdmVyXG5cbiAgICAgICAgICBjb25zdCB3aWR0aCA9IGZvbGxvd2luZ0NvbHVtbnMucmVkdWNlKFxuICAgICAgICAgICAgKGFjY3VtdWxhdG9yLCB7IHdpZHRoIH06IHsgd2lkdGg6IG51bWJlciB9KSA9PiBhY2N1bXVsYXRvciArIHdpZHRoLFxuICAgICAgICAgICAgMFxuICAgICAgICAgIClcblxuICAgICAgICAgIGNvbnN0IGZsZXhHcm93ID0gZm9sbG93aW5nQ29sdW1ucy5yZWR1Y2UoXG4gICAgICAgICAgICAoYWNjdW11bGF0b3IsIHsgZmxleEdyb3cgfTogeyBmbGV4R3JvdzogbnVtYmVyIH0pID0+XG4gICAgICAgICAgICAgIGFjY3VtdWxhdG9yICsgZmxleEdyb3csXG4gICAgICAgICAgICAwXG4gICAgICAgICAgKVxuICAgICAgICAgIHNwYW5uZWRDb2x1bW5zLnB1c2goXG4gICAgICAgICAgICBSZWFjdC5jbG9uZUVsZW1lbnQoY29sdW1uLCB7XG4gICAgICAgICAgICAgICdkYXRhLWluc3RydW1lbnRhdGlvbic6IGAke3RoaXMucHJvcHNbJ2RhdGEtaW5zdHJ1bWVudGF0aW9uJ119LXJvdyR7cm93SW5kZXh9LWNvbCR7aW5kZXh9YCxcbiAgICAgICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICAuLi5FbGVtZW50cy5jZWxsUmVzZXRTdHlsZSxcbiAgICAgICAgICAgICAgICBmbGV4OiBgMCAxICR7d2lkdGh9cHhgLFxuICAgICAgICAgICAgICAgIGZsZXhHcm93XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgICAgIGluZGV4ICs9IHNwYW4gLy8gc2tpcCBjb2x1bW5zIHRoYXQgaGF2ZSBiZWVuIHNwYW5uZWQgb3ZlclxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNwYW5uZWRDb2x1bW5zLnB1c2goXG4gICAgICAgICAgICBSZWFjdC5jbG9uZUVsZW1lbnQoY29sdW1uLCB7XG4gICAgICAgICAgICAgICdkYXRhLWluc3RydW1lbnRhdGlvbic6IGAke3RoaXMucHJvcHNbJ2RhdGEtaW5zdHJ1bWVudGF0aW9uJ119LXJvdyR7cm93SW5kZXh9LWNvbCR7aW5kZXh9YFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApXG4gICAgICAgICAgaW5kZXgrK1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gc3Bhbm5lZENvbHVtbnNcbiAgICB9XG5cbiAgICBjb25zdCBUYWJsZUNvbXBvbmVudCA9XG4gICAgICB0aGlzLnByb3BzLnNjcm9sbFdpZHRoICE9PSB1bmRlZmluZWQgPyBTY3JvbGxhYmxlVGFibGUgOiBUYWJsZVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxFbGVtZW50cy5UYWJsZUNvbnRhaW5lclxuICAgICAgICBjc3M9e3sgd2lkdGgsIGhlaWdodCB9fVxuICAgICAgICBvbktleURvd249e3RoaXMuaGFuZGxlS2V5RG93bn1cbiAgICAgICAgb25LZXlVcD17dGhpcy5oYW5kbGVLZXlVcH1cbiAgICAgICAgZGF0YS1pbnN0cnVtZW50YXRpb249e2Ake3RoaXMucHJvcHNbJ2RhdGEtaW5zdHJ1bWVudGF0aW9uJ119LWdyaWRgfVxuICAgICAgPlxuICAgICAgICA8SW5maW5pdGVMb2FkZXJcbiAgICAgICAgICBpc1Jvd0xvYWRlZD17dGhpcy5pc1Jvd0xvYWRlZH1cbiAgICAgICAgICBsb2FkTW9yZVJvd3M9e2xvYWRNb3JlUm93cyB8fCAoKCkgPT4gUHJvbWlzZS5yZXNvbHZlKGZhbHNlKSl9XG4gICAgICAgICAgcm93Q291bnQ9e2hhc01vcmVSb3dzID8gcm93Q291bnQgKyAxIDogcm93Q291bnR9XG4gICAgICAgICAgdGhyZXNob2xkPXs1fVxuICAgICAgICAgIHJlZj17dGhpcy5pbmZpbml0ZVRhYmxlfVxuICAgICAgICA+XG4gICAgICAgICAgeyh7IG9uUm93c1JlbmRlcmVkLCByZWdpc3RlckNoaWxkIH0pID0+IChcbiAgICAgICAgICAgIDxUYWJsZUNvbXBvbmVudFxuICAgICAgICAgICAgICBzdHlsZT17c2FmYXJpU3R5bGV9XG4gICAgICAgICAgICAgIGdyaWRTdHlsZT17eyBvdXRsaW5lOiAnbm9uZScgfX1cbiAgICAgICAgICAgICAgaGVhZGVySGVpZ2h0PXszNn1cbiAgICAgICAgICAgICAgcm93SGVpZ2h0PXszMH1cbiAgICAgICAgICAgICAgc29ydEJ5PXtzb3J0Qnl9XG4gICAgICAgICAgICAgIHNvcnREaXJlY3Rpb249e3NvcnREaXJlY3Rpb259XG4gICAgICAgICAgICAgIHJlZj17cmVnaXN0ZXJDaGlsZH1cbiAgICAgICAgICAgICAgbm9Sb3dzUmVuZGVyZWQ9eygpID0+IDxkaXY+Tm8gcmVzdWx0czwvZGl2Pn1cbiAgICAgICAgICAgICAgb25Sb3dzUmVuZGVyZWQ9e29uUm93c1JlbmRlcmVkfVxuICAgICAgICAgICAgICBvblNjcm9sbD17XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS5hY3RpdmVDb250ZXh0TWVudVxuICAgICAgICAgICAgICAgICAgPyAoKSA9PiB0aGlzLmNsb3NlQ29udGV4dE1lbnUoKVxuICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByb3dDb3VudD17aGFzTW9yZVJvd3MgPyByb3dDb3VudCArIDEgOiByb3dDb3VudH1cbiAgICAgICAgICAgICAgaGVhZGVyUm93UmVuZGVyZXI9e3RoaXMuaGVhZGVyUm93UmVuZGVyZXJ9XG4gICAgICAgICAgICAgIHJvd1JlbmRlcmVyPXt0aGlzLnJvd1JlbmRlcmVyfVxuICAgICAgICAgICAgICAvLyBhY2NvdW50IGZvciBib3JkZXIgd2lkdGggb2YgY29udGFpbmVyXG4gICAgICAgICAgICAgIHdpZHRoPXt3aWR0aCAtIDJ9XG4gICAgICAgICAgICAgIGhlaWdodD17aGVpZ2h0IC0gMn1cbiAgICAgICAgICAgICAgey4uLnByb3BzfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7bWFwcGVkQ2hpbGRyZW59XG4gICAgICAgICAgICA8L1RhYmxlQ29tcG9uZW50PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvSW5maW5pdGVMb2FkZXI+XG4gICAgICA8L0VsZW1lbnRzLlRhYmxlQ29udGFpbmVyPlxuICAgIClcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBEYXRhR3JpZFxuIl19 */"),
680
+ }, process.env.NODE_ENV === "production" ? "" : ";label:render;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9EYXRhR3JpZC9EYXRhR3JpZC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBb3FCUSIsImZpbGUiOiIuLi8uLi8uLi9zcmMvRGF0YUdyaWQvRGF0YUdyaWQudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IENvbXBvbmVudCB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbSdcbmltcG9ydCB7XG4gIEluZmluaXRlTG9hZGVyLFxuICBUYWJsZSxcbiAgU29ydERpcmVjdGlvbixcbiAgVGFibGVSb3dQcm9wc1xufSBmcm9tICdyZWFjdC12aXJ0dWFsaXplZCdcbmltcG9ydCB0eXBlIHtcbiAgU29ydERpcmVjdGlvblR5cGUsXG4gIFRhYmxlUHJvcHMsXG4gIEluZGV4UmFuZ2UsXG4gIEluZGV4LFxuICBSb3dNb3VzZUV2ZW50SGFuZGxlclBhcmFtc1xufSBmcm9tICdyZWFjdC12aXJ0dWFsaXplZCdcbmltcG9ydCAqIGFzIEVsZW1lbnRzIGZyb20gJy4vZWxlbWVudHMnXG5pbXBvcnQgKiBhcyBSZW5kZXJlcnMgZnJvbSAnLi9yZW5kZXJlcnMnXG5pbXBvcnQge1xuICBCYXNpY0NvbHVtbixcbiAgRm9jdXNhYmxlUm93LFxuICBJbnB1dENlbGwsXG4gIENvbGxhcHNpYmxlQ2VsbCxcbiAgU2Nyb2xsYWJsZVRhYmxlXG59IGZyb20gJy4vY29tcG9uZW50cydcbmltcG9ydCB7IENsb3NlV3JhcHBlciB9IGZyb20gJy4uL3V0aWxzJ1xuaW1wb3J0IGN1cnJ5IGZyb20gJ2xvZGFzaC5jdXJyeSdcbmltcG9ydCBpbmNsdWRlcyBmcm9tICdsb2Rhc2guaW5jbHVkZXMnXG5pbXBvcnQgbm9vcCBmcm9tICdsb2Rhc2gubm9vcCdcbmltcG9ydCByYW5nZSBmcm9tICdsb2Rhc2gucmFuZ2UnXG5pbXBvcnQgdGhyb3R0bGUgZnJvbSAnbG9kYXNoLnRocm90dGxlJ1xuaW1wb3J0IHVuaXEgZnJvbSAnbG9kYXNoLnVuaXEnXG5pbXBvcnQgKiBhcyBkYXRhR3JpZFV0aWxzIGZyb20gJy4vdXRpbHMnXG5pbXBvcnQgdHlwZSB7XG4gIEJhc2ljQ29sdW1uTWFwcGVkUHJvcHMsXG4gIEJhc2ljQ29sdW1uUHJvcHNcbn0gZnJvbSAnLi9jb21wb25lbnRzL0Jhc2ljQ29sdW1uJ1xuaW1wb3J0IHR5cGUgeyBMb2NhbGVTdHJpbmdzIH0gZnJvbSAnLi9jb25zdGFudHMnXG5cbmV4cG9ydCB0eXBlIG9uRmlsdGVyQXJndW1lbnRzID0ge1xuICBmaWx0ZXJzOiB7IFtkYXRhS2V5OiBzdHJpbmddOiBhbnkgfVxuICBzb3J0Qnk/OiBzdHJpbmdcbiAgc29ydERpcmVjdGlvbj86IFNvcnREaXJlY3Rpb25UeXBlXG59XG5cbnR5cGUgYWN0aXZlQ29udGV4dE1lbnVTdGF0ZSA9IHtcbiAgdG9wOiBudW1iZXJcbiAgbGVmdDogbnVtYmVyXG4gIGluZGV4OiBudW1iZXJcbiAgcm93RGF0YTogYW55XG59XG5cbnR5cGUgY29udGV4dE1lbnVSZW5kZXJlckFyZ3VtZW50cyA9IHtcbiAgdG9wPzogbnVtYmVyXG4gIGxlZnQ/OiBudW1iZXJcbiAgaW5kZXg/OiBudW1iZXJcbiAgcm93RGF0YT86IGFueVxuICBzZWxlY3RlZFJvd3M6IEFycmF5PG51bWJlcj5cbiAgb25DbG9zZTogKCkgPT4gdm9pZFxufVxuXG5leHBvcnQgdHlwZSBTZWxlY3RhYmxlVHlwZSA9ICdzaW5nbGUnIHwgJ211bHRpJ1xuXG50eXBlIENvbHVtbkZ1bmN0aW9uID0gKGFyZ3M6IEJhc2ljQ29sdW1uTWFwcGVkUHJvcHMpID0+IFJlYWN0LlJlYWN0Tm9kZVxuXG5leHBvcnQgdHlwZSBEYXRhR3JpZFByb3BzID0ge1xuICAvKiogRnVuY3Rpb25zIHRoYXQgY3JlYXRlIHJlYWN0IHZpcnR1YWxpemVkIENvbHVtbnMuIERlZmF1bHQgY29sdW1uIGlzIGV4cG9zZWQgYXMgRGF0YUdyaWQuQ29sdW1uLiAqL1xuICAvLyBDYW4gdGFrZSBhIHNpbmdsZSBjb2x1bW4gb3IgYW4gYXJyYXkgb2YgY29sdW1uc1xuICBjaGlsZHJlbjogQ29sdW1uRnVuY3Rpb24gfCBBcnJheTxDb2x1bW5GdW5jdGlvbj5cbiAgLyoqIEluc3RydW1lbnRhdGlvbiAqL1xuICAnZGF0YS1pbnN0cnVtZW50YXRpb24nPzogc3RyaW5nXG4gIC8qKiBDYWxsZWQgZHVyaW5nIHRoZSBvbkNvbnRleHRNZW51IGV2ZW50IG9mIGVhY2ggcm93LiAqL1xuICBjb250ZXh0TWVudVJlbmRlcmVyPzogKFxuICAgIGNvbnRleHRNZW51UmVuZGVyZXJBcmd1bWVudHM6IGNvbnRleHRNZW51UmVuZGVyZXJBcmd1bWVudHNcbiAgKSA9PiBSZWFjdC5SZWFjdE5vZGVcbiAgLyoqIENhbGxlZCB3aGVuIGEgY29sdW1uIGlzIGZpbHRlcmVkIG9yIHNvcnRlZC4gKi9cbiAgb25GaWx0ZXI6IChvbkZpbHRlckFyZ3VtZW50czogb25GaWx0ZXJBcmd1bWVudHMpID0+IHZvaWRcbiAgLyoqIENhbGxlZCB3aGVuIGEgY29sdW1uIGlzIHJlc2l6ZWQgYnkgdGhlIHVzZXIuIFBhc3NpbmcgdGhpcyBpbiBlbmFibGVzXG4gICAqIHJlc2l6ZSBoYW5kbGVzIG9uIHRoZSByaWdodCBlZGdlIG9mIHRoZSBoZWFkZXIgY2VsbHMuICovXG4gIG9uUmVzaXplPzogKG5ld1NpemVzOiBudW1iZXJbXSkgPT4gdm9pZFxuICAvKiogQ2FsbGVkIHdoZW4gdGhlIHJvdyBzZWxlY3Rpb24gY2hhbmdlcy4gUmVjZWl2ZXMgYXJyYXkgb2YgaW5kaWNlcy4gKi9cbiAgb25TZWxlY3Q6IChpbmRleGVzOiBudW1iZXJbXSkgPT4gdm9pZFxuICAvKiogQ2FsbGVkIHdoZW4gdGhlIHJvdyBpcyBkb3VibGUgY2xpY2tlZC4gUmVjZWl2ZXMgaW5kZXguICovXG4gIG9uUm93RG91YmxlQ2xpY2s/OiAoaW5mbzogUm93TW91c2VFdmVudEhhbmRsZXJQYXJhbXMpID0+IHZvaWRcbiAgLyoqIEluZmluaXRlIGxvYWRpbmc6IEluZGljYXRlcyBtb3JlIHJvd3MgbmVlZCB0byBiZSBsb2FkZWQuICovXG4gIGhhc01vcmVSb3dzPzogYm9vbGVhblxuICAvKiogSW5maW5pdGUgbG9hZGluZzogQ2FsbGVkIHdoZW4gbW9yZSByb3dzIG5lZWQgdG8gYmUgbG9hZGVkLiAqL1xuICBsb2FkTW9yZVJvd3M/OiAocHJvcHM6IEluZGV4UmFuZ2UpID0+IFByb21pc2U8YW55PlxuICAvKiogQ291bnQgb2Ygcm93cyB0aGF0IGhhdmUgYWxyZWFkeSBiZWVuIGxvYWRlZC4gKi9cbiAgcm93Q291bnQ6IG51bWJlclxuICAvKiogUmVxdWlyZWQgYnkgcmVhY3QtdmlydHVhbGl6ZWQgdGFibGUuICovXG4gIHJvd0dldHRlcjogKHByb3BzOiB7IGluZGV4OiBudW1iZXIgfSkgPT4gYW55XG4gIC8qKiBXaGV0aGVyIHJvd3MgY2FuIGJlIHNlbGVjdGVkIChhbmQgaG93IG1hbnkpLiAqL1xuICBzZWxlY3RhYmxlPzogU2VsZWN0YWJsZVR5cGUgfCBmYWxzZVxuICAvKiogQXJyYXkgb2YgaW5kaWNlcyB0aGF0IHNob3VsZCBiZSBzZWxlY3RlZC4gT25seSB1c2VkIGlmIGBzZWxlY3RhYmxlYCBpcyBzZXQuICovXG4gIHNlbGVjdGVkUm93czogQXJyYXk8bnVtYmVyPlxuICAvKiogVGhlIGNvbHVtbiB5b3Ugd2FudCB0byBzb3J0ICovXG4gIHNvcnRCeT86IHN0cmluZ1xuICAvKiogVGhlIGRpcmVjdGlvbiBzb3J0aW5nIHNob3VsZCBiZSBkb25lICovXG4gIHNvcnREaXJlY3Rpb24/OiBTb3J0RGlyZWN0aW9uVHlwZVxuICAvKiogQSBtYXAgb2YgY29sdW1ucyB0byBmaWx0ZXIgZGF0YSAqL1xuICBmaWx0ZXJzPzogeyBbZGF0YUtleTogc3RyaW5nXTogYW55IH1cbiAgLyoqIFNldCB0aGUgd2lkdGggb2Ygc2Nyb2xsYWJsZSBjb250ZW50ICovXG4gIHNjcm9sbFdpZHRoPzogbnVtYmVyXG4gIHdpZHRoOiBudW1iZXJcbiAgaGVpZ2h0OiBudW1iZXJcbiAgLyoqIExvY2FsZSBzdHJpbmc6IGphLCBkZSwgZXMsIGtvLCBlbiwgZXRjLiAqL1xuICBsb2NhbGU/OiBzdHJpbmdcbiAgLyoqIExvY2FsZSBzdHJpbmdzIHRvIG92ZXJyaWRlIGVuIGZvciBsYW5ndWFnZSBpbiBsb2NhbGUgKi9cbiAgbG9jYWxlU3RyaW5ncz86IExvY2FsZVN0cmluZ3NcbiAgLyoqIGFsbG93IGV2ZW50cyB0byBwcm9wYWdhdGUgdG8gYSBjZWxsIG9uIHJvdyBzZWxlY3QgKi9cbiAgYWxsb3dSb3dFdmVudFBhc3N0aHJvdWdoPzogYm9vbGVhblxufSAmIFBhcnRpYWw8VGFibGVQcm9wcz5cblxudHlwZSBEYXRhR3JpZFN0YXRlID0ge1xuICBhY3RpdmVDb250ZXh0TWVudTogYWN0aXZlQ29udGV4dE1lbnVTdGF0ZSB8IG51bGxcbiAgZGlzYWJsZUtleWJvYXJkU2hvcnRjdXRzOiBib29sZWFuXG4gIGZvY3VzZWRSb3c6IG51bWJlciB8IG51bGxcbiAgc2VsZWN0aW5nOiBib29sZWFuXG4gIGxhc3RTZWxlY3RlZFJvdzogbnVtYmVyIHwgbnVsbFxufVxuXG50eXBlIEhhbmRsZUZpbHRlckFyZ3VtZW50cyA9IHtcbiAgc29ydEJ5Pzogc3RyaW5nXG4gIHNvcnREaXJlY3Rpb24/OiBTb3J0RGlyZWN0aW9uVHlwZVxuICBmaWx0ZXJzPzogYW55XG59XG5cbi8qKlxuICogQ29tcG9uZW50IGZvciBkaXNwbGF5aW5nIGRhdGEgaW4gYSBncmlkIHdpdGggc3VwcG9ydCBmb3IgdGhpbmdzIGxpa2VcbiAqIGZpbHRlcmluZywgc29ydGluZywgYW5kIGNvbnRleHQgbWVudXMuXG4gKlxuICogRGVwZW5kcyBvbiByZWFjdC12aXJ0dWFsaXplZC9zdHlsZXMuY3NzLlxuICpcbiAqIEZvciByZWFjdC12aXJ0dWFsaXplZCBUYWJsZSBkb2NzIHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2J2YXVnaG4vcmVhY3QtdmlydHVhbGl6ZWQvYmxvYi9tYXN0ZXIvZG9jcy9UYWJsZS5tZFxuICpcbiAqL1xuY2xhc3MgRGF0YUdyaWQgZXh0ZW5kcyBDb21wb25lbnQ8RGF0YUdyaWRQcm9wcywgRGF0YUdyaWRTdGF0ZT4ge1xuICAvLyBleHBvc2Ugc3ViLWNvbXBvbmVudHNcbiAgc3RhdGljIENvbHVtbiA9IGN1cnJ5KEJhc2ljQ29sdW1uKVxuICBzdGF0aWMgU29ydERpcmVjdGlvbiA9IFNvcnREaXJlY3Rpb25cbiAgc3RhdGljIEVsZW1lbnRzID0gRWxlbWVudHNcbiAgc3RhdGljIElucHV0Q2VsbCA9IElucHV0Q2VsbFxuICBzdGF0aWMgQ29sbGFwc2libGVDZWxsID0gQ29sbGFwc2libGVDZWxsXG4gIHN0YXRpYyBSZW5kZXJlcnMgPSBSZW5kZXJlcnNcblxuICBzdGF0aWMgU0lOR0xFX1NFTEVDVDogU2VsZWN0YWJsZVR5cGUgPSAnc2luZ2xlJ1xuICBzdGF0aWMgTVVMVElfU0VMRUNUOiBTZWxlY3RhYmxlVHlwZSA9ICdtdWx0aSdcbiAgc3RhdGljIE1JTl9DT0xfV0lEVEggPSA1MFxuXG4gIHN0YXRpYyB1dGlscyA9IGRhdGFHcmlkVXRpbHNcblxuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgIGxvYWRNb3JlUm93czogbm9vcCxcbiAgICBvblNlbGVjdDogbm9vcCxcbiAgICBvbkZpbHRlcjogbm9vcCxcbiAgICAnZGF0YS1pbnN0cnVtZW50YXRpb24nOiAnZGF0YWdyaWQnLFxuICAgIHNvcnRCeTogJycsXG4gICAgc29ydERpcmVjdGlvbjogU29ydERpcmVjdGlvbi5BU0MsXG4gICAgZmlsdGVyczoge30sXG4gICAgc2VsZWN0ZWRSb3dzOiBbXSxcbiAgICBhbGxvd1Jvd0V2ZW50UGFzc3Rocm91Z2g6IGZhbHNlXG4gIH1cblxuICBzdGF0aWMgZGlzcGxheU5hbWUgPSAnRGF0YUdyaWQnXG5cbiAgc3RhdGU6IERhdGFHcmlkU3RhdGUgPSB7XG4gICAgYWN0aXZlQ29udGV4dE1lbnU6IG51bGwsXG4gICAgZGlzYWJsZUtleWJvYXJkU2hvcnRjdXRzOiBmYWxzZSxcbiAgICBmb2N1c2VkUm93OiBudWxsLFxuICAgIGxhc3RTZWxlY3RlZFJvdzogbnVsbCxcbiAgICBzZWxlY3Rpbmc6IGZhbHNlXG4gIH1cblxuICBpbmZpbml0ZVRhYmxlID0gUmVhY3QuY3JlYXRlUmVmPEluZmluaXRlTG9hZGVyPigpXG5cbiAgdG90YWxXaWR0aCA9IDBcbiAgY29sdW1uV2lkdGhQZXJjZW50czogbnVtYmVyW10gPSBbXVxuXG4gIGNvbHVtblRyYW5zZm9ybWVyOiAoXG4gICAgY29sdW1uczogUmVhY3QuUmVhY3RFbGVtZW50PGFueT5bXSxcbiAgICByb3dEYXRhOiBhbnksXG4gICAgcm93SW5kZXg6IG51bWJlclxuICApID0+IFJlYWN0LlJlYWN0Tm9kZVtdIHwgbnVsbCB8IHVuZGVmaW5lZFxuXG4gIHNlbGVjdCA9ICh7XG4gICAgaW5kZXgsXG4gICAgY29udGlndW91cyA9IGZhbHNlXG4gIH06IHtcbiAgICBpbmRleDogbnVtYmVyXG4gICAgY29udGlndW91czogYm9vbGVhblxuICB9KSA9PiB7XG4gICAgaWYgKGluZGV4ID09PSBudWxsKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgdGhpcy5zZXRTdGF0ZShzdGF0ZSA9PiB7XG4gICAgICBjb25zdCB7IGxhc3RTZWxlY3RlZFJvdyB9ID0gc3RhdGVcbiAgICAgIGNvbnN0IHsgc2VsZWN0ZWRSb3dzIH0gPSB0aGlzLnByb3BzXG4gICAgICBsZXQgc2VsZWN0ZWQgPSBbLi4uc2VsZWN0ZWRSb3dzLCBpbmRleF1cbiAgICAgIGlmICh0aGlzLnByb3BzLnNlbGVjdGFibGUgPT09IERhdGFHcmlkLlNJTkdMRV9TRUxFQ1QpIHtcbiAgICAgICAgc2VsZWN0ZWQgPSBbaW5kZXhdXG4gICAgICB9IGVsc2UgaWYgKGNvbnRpZ3VvdXMgJiYgdHlwZW9mIGxhc3RTZWxlY3RlZFJvdyA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBNYXRoLm1pbihsYXN0U2VsZWN0ZWRSb3csIGluZGV4KVxuICAgICAgICBjb25zdCBlbmQgPSBNYXRoLm1heChsYXN0U2VsZWN0ZWRSb3csIGluZGV4KVxuICAgICAgICBzZWxlY3RlZCA9IHVuaXEoWy4uLnNlbGVjdGVkUm93cywgLi4ucmFuZ2Uoc3RhcnQsIGVuZCArIDEpXSlcbiAgICAgIH1cbiAgICAgIHRoaXMucHJvcHMub25TZWxlY3Qoc2VsZWN0ZWQpXG4gICAgICByZXR1cm4geyBsYXN0U2VsZWN0ZWRSb3c6IGluZGV4IH1cbiAgICB9KVxuICB9XG5cbiAgc2VsZWN0QWxsID0gKCkgPT4ge1xuICAgIGNvbnN0IHsgcm93Q291bnQgfSA9IHRoaXMucHJvcHNcbiAgICB0aGlzLnNldFNlbGVjdGVkUm93cyhBcnJheS5mcm9tKHsgbGVuZ3RoOiByb3dDb3VudCB9KS5tYXAoKF8sIGlkeCkgPT4gaWR4KSlcbiAgfVxuXG4gIGRlc2VsZWN0ID0gKHtcbiAgICBpbmRleCxcbiAgICBjb250aWd1b3VzID0gZmFsc2VcbiAgfToge1xuICAgIGluZGV4OiBudW1iZXJcbiAgICBjb250aWd1b3VzOiBib29sZWFuXG4gIH0pID0+IHtcbiAgICBpZiAoaW5kZXggPT09IG51bGwpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICB0aGlzLnNldFN0YXRlKHN0YXRlID0+IHtcbiAgICAgIGNvbnN0IHsgbGFzdFNlbGVjdGVkUm93IH0gPSBzdGF0ZVxuICAgICAgY29uc3QgeyBzZWxlY3RlZFJvd3MgfSA9IHRoaXMucHJvcHNcbiAgICAgIGxldCBzZWxlY3RlZCA9IHNlbGVjdGVkUm93cy5maWx0ZXIoaWR4ID0+IGlkeCAhPT0gaW5kZXgpXG4gICAgICBpZiAoY29udGlndW91cyAmJiB0eXBlb2YgbGFzdFNlbGVjdGVkUm93ID09PSAnbnVtYmVyJykge1xuICAgICAgICBjb25zdCBzdGFydCA9IE1hdGgubWluKGxhc3RTZWxlY3RlZFJvdywgaW5kZXgpXG4gICAgICAgIGNvbnN0IGVuZCA9IE1hdGgubWF4KGxhc3RTZWxlY3RlZFJvdywgaW5kZXgpXG4gICAgICAgIGNvbnN0IHRvRGVzZWxlY3QgPSByYW5nZShzdGFydCwgZW5kICsgMSlcbiAgICAgICAgc2VsZWN0ZWQgPSBzZWxlY3RlZFJvd3MuZmlsdGVyKGlkeCA9PiAhaW5jbHVkZXModG9EZXNlbGVjdCwgaWR4KSlcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5wcm9wcy5zZWxlY3RhYmxlID09PSBEYXRhR3JpZC5TSU5HTEVfU0VMRUNUICYmXG4gICAgICAgICFzZWxlY3RlZC5sZW5ndGhcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgfVxuICAgICAgdGhpcy5wcm9wcy5vblNlbGVjdChzZWxlY3RlZClcbiAgICAgIHJldHVybiB7IGxhc3RTZWxlY3RlZFJvdzogaW5kZXggfVxuICAgIH0pXG4gIH1cblxuICBkZXNlbGVjdEFsbCA9ICgpID0+IHtcbiAgICB0aGlzLnNldFNlbGVjdGVkUm93cyhbXSlcbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIGxhc3RTZWxlY3RlZFJvdzogbnVsbFxuICAgIH0pXG4gIH1cblxuICB0b2dnbGVTZWxlY3QgPSAoe1xuICAgIGluZGV4LFxuICAgIGNvbnRpZ3VvdXNcbiAgfToge1xuICAgIGluZGV4OiBudW1iZXJcbiAgICBjb250aWd1b3VzOiBib29sZWFuXG4gIH0pID0+IHtcbiAgICBpZiAoaW5kZXggPT09IG51bGwpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoIXRoaXMucHJvcHMuc2VsZWN0ZWRSb3dzLmluY2x1ZGVzKGluZGV4KSkge1xuICAgICAgdGhpcy5zZWxlY3QoeyBpbmRleCwgY29udGlndW91cyB9KVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRlc2VsZWN0KHsgaW5kZXgsIGNvbnRpZ3VvdXMgfSlcbiAgICB9XG4gIH1cblxuICBzZXRTZWxlY3RlZFJvd3MgPSAocm93czogQXJyYXk8bnVtYmVyPikgPT4ge1xuICAgIHRoaXMucHJvcHMub25TZWxlY3Qocm93cylcbiAgfVxuXG4gIGhhbmRsZUZpbHRlciA9ICh7XG4gICAgc29ydEJ5LFxuICAgIHNvcnREaXJlY3Rpb24sXG4gICAgZmlsdGVyc1xuICB9OiBIYW5kbGVGaWx0ZXJBcmd1bWVudHMpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBzb3J0Qnk6IG9sZFNvcnRCeSxcbiAgICAgIHNvcnREaXJlY3Rpb246IG9sZFNvcnREaXJlY3Rpb24sXG4gICAgICBmaWx0ZXJzOiBvbGRGaWx0ZXJzXG4gICAgfSA9IHRoaXMucHJvcHNcbiAgICBjb25zdCBuZXdEYXRhID0ge1xuICAgICAgc29ydEJ5OiBzb3J0QnkgfHwgb2xkU29ydEJ5LFxuICAgICAgc29ydERpcmVjdGlvbjogc29ydERpcmVjdGlvbiB8fCBvbGRTb3J0RGlyZWN0aW9uLFxuICAgICAgZmlsdGVyczoge1xuICAgICAgICAuLi5vbGRGaWx0ZXJzLFxuICAgICAgICAuLi5maWx0ZXJzXG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMucHJvcHMub25GaWx0ZXIobmV3RGF0YSlcbiAgfVxuXG4gIGhhbmRsZUtleURvd24gPSAoZXZlbnQ6IFJlYWN0LktleWJvYXJkRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgaWYgKHRoaXMuc3RhdGUuZGlzYWJsZUtleWJvYXJkU2hvcnRjdXRzKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgIGNhc2UgJ2EnOlxuICAgICAgICBpZiAoXG4gICAgICAgICAgKGV2ZW50Lm1ldGFLZXkgfHwgZXZlbnQuY3RybEtleSkgJiZcbiAgICAgICAgICB0aGlzLnByb3BzLnNlbGVjdGFibGUgPT09IERhdGFHcmlkLk1VTFRJX1NFTEVDVFxuICAgICAgICApIHtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgaWYgKHRoaXMucHJvcHMucm93Q291bnQgPT09IHRoaXMucHJvcHMuc2VsZWN0ZWRSb3dzLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5kZXNlbGVjdEFsbCgpXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0QWxsKClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICB0aGlzLnNldFN0YXRlKHN0YXRlID0+ICh7XG4gICAgICAgICAgZm9jdXNlZFJvdzogTWF0aC5tYXgoKHN0YXRlLmZvY3VzZWRSb3cgfHwgMCkgLSAxLCAwKVxuICAgICAgICB9KSlcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgdGhpcy5zZXRTdGF0ZShzdGF0ZSA9PiAoe1xuICAgICAgICAgIGZvY3VzZWRSb3c6XG4gICAgICAgICAgICBzdGF0ZS5mb2N1c2VkUm93ICE9IG51bGxcbiAgICAgICAgICAgICAgPyBNYXRoLm1pbihzdGF0ZS5mb2N1c2VkUm93ICsgMSwgdGhpcy5wcm9wcy5yb3dDb3VudCAtIDEpXG4gICAgICAgICAgICAgIDogMFxuICAgICAgICB9KSlcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnRW50ZXInOlxuICAgICAgY2FzZSAnICc6XG4gICAgICAgIGlmICh0aGlzLnByb3BzLnNlbGVjdGFibGUpIHtcbiAgICAgICAgICB0aGlzLnRvZ2dsZVNlbGVjdCh7XG4gICAgICAgICAgICBpbmRleDogdGhpcy5zdGF0ZS5mb2N1c2VkUm93IHx8IDAsXG4gICAgICAgICAgICBjb250aWd1b3VzOiBldmVudC5zaGlmdEtleVxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnU2hpZnQnOlxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICBzZWxlY3Rpbmc6IHRydWVcbiAgICAgICAgfSlcbiAgICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVLZXlVcCA9IChldmVudDogUmVhY3QuS2V5Ym9hcmRFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICBpZiAodGhpcy5zdGF0ZS5kaXNhYmxlS2V5Ym9hcmRTaG9ydGN1dHMpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgY2FzZSAnU2hpZnQnOlxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICBzZWxlY3Rpbmc6IGZhbHNlXG4gICAgICAgIH0pXG4gICAgICAgIGJyZWFrXG4gICAgfVxuICB9XG5cbiAgLy8gdGhyb3R0bGluZyB0aGlzIHNvIGEgZG91YmxlIGNsaWNrIGJlaGF2ZXMgbGlrZSBhIHNpbmdsZSBjbGlja1xuICBoYW5kbGVSb3dDbGljayA9IHRocm90dGxlKFxuICAgICh7IGV2ZW50LCBpbmRleCB9OiB7IGV2ZW50OiBSZWFjdC5Nb3VzZUV2ZW50PGFueT47IGluZGV4OiBudW1iZXIgfSkgPT4ge1xuICAgICAgaWYgKCF0aGlzLnByb3BzLmFsbG93Um93RXZlbnRQYXNzdGhyb3VnaCkge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgfVxuXG4gICAgICB0aGlzLnRvZ2dsZVNlbGVjdCh7IGluZGV4LCBjb250aWd1b3VzOiBldmVudC5zaGlmdEtleSB9KVxuICAgIH0sXG4gICAgMjUwLFxuICAgIHsgbGVhZGluZzogdHJ1ZSwgdHJhaWxpbmc6IGZhbHNlIH1cbiAgKVxuXG4gIGhhbmRsZVJlc2l6ZSA9ICh7IHgsIGluZGV4IH06IHsgeDogbnVtYmVyOyBpbmRleDogbnVtYmVyIH0pID0+IHtcbiAgICBpZiAodGhpcy5jb2x1bW5XaWR0aFBlcmNlbnRzLmxlbmd0aCA+IDAgJiYgdGhpcy50b3RhbFdpZHRoKSB7XG4gICAgICBjb25zdCBwcmV2V2lkdGhzID0gdGhpcy5jb2x1bW5XaWR0aFBlcmNlbnRzXG4gICAgICBjb25zdCBuZXdXaWR0aHMgPSBbLi4ucHJldldpZHRoc11cbiAgICAgIGNvbnN0IHBhcmVudFdpZHRoID0gdGhpcy5wcm9wcy5zY3JvbGxXaWR0aCA/PyB0aGlzLnByb3BzLndpZHRoXG4gICAgICAvLyBsaW1pdCBuZXh0IGluZGV4IGZyb20gZ29pbmcgYmV5b25kIGJvdW5kc1xuICAgICAgY29uc3QgbmV4dEluZGV4ID0gTWF0aC5taW4oaW5kZXggKyAxLCBwcmV2V2lkdGhzLmxlbmd0aCAtIDEpXG4gICAgICBjb25zdCBwZXJjZW50Q2hhbmdlID0geCAvIHRoaXMudG90YWxXaWR0aFxuXG4gICAgICBpZiAodGhpcy5wcm9wcy5zY3JvbGxXaWR0aCkge1xuICAgICAgICAvLyBpZiB0YWJsZSBpcyBzY3JvbGxhYmxlLCB3ZSBjYW4gZ3JvdyB0aGUgY29sdW1uIHdpdGhvdXRcbiAgICAgICAgLy8gc2hyaW5raW5nIHRoZSBvdGhlcnNcbiAgICAgICAgY29uc3Qgc2FmZVBlcmNlbnRDaGFuZ2UgPVxuICAgICAgICAgIChwcmV2V2lkdGhzW2luZGV4XSArIHBlcmNlbnRDaGFuZ2UpICogcGFyZW50V2lkdGggPFxuICAgICAgICAgIERhdGFHcmlkLk1JTl9DT0xfV0lEVEhcbiAgICAgICAgICAgID8gMFxuICAgICAgICAgICAgOiBwZXJjZW50Q2hhbmdlXG4gICAgICAgIG5ld1dpZHRoc1tpbmRleF0gPSBwcmV2V2lkdGhzW2luZGV4XSArIHNhZmVQZXJjZW50Q2hhbmdlXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBpZiB0aGUgdGFibGUgaXMgbm90IHNjcm9sbGFibGUsIGVuc3VyZSBhbGwgY29sdW1ucyBmaXQgYnlcbiAgICAgICAgLy8gYWRqdXN0aW5nIHRoZSBjdXJyZW50IGNvbHVtbiBhbmQgdGhlIG9uZSBhZnRlciBpdFxuICAgICAgICBjb25zdCBzYWZlUGVyY2VudENoYW5nZSA9XG4gICAgICAgICAgKHByZXZXaWR0aHNbaW5kZXhdICsgcGVyY2VudENoYW5nZSkgKiBwYXJlbnRXaWR0aCA8XG4gICAgICAgICAgICBEYXRhR3JpZC5NSU5fQ09MX1dJRFRIIHx8XG4gICAgICAgICAgKHByZXZXaWR0aHNbbmV4dEluZGV4XSAtIHBlcmNlbnRDaGFuZ2UpICogcGFyZW50V2lkdGggPFxuICAgICAgICAgICAgRGF0YUdyaWQuTUlOX0NPTF9XSURUSFxuICAgICAgICAgICAgPyAwXG4gICAgICAgICAgICA6IHBlcmNlbnRDaGFuZ2VcbiAgICAgICAgbmV3V2lkdGhzW2luZGV4XSA9IHByZXZXaWR0aHNbaW5kZXhdICsgc2FmZVBlcmNlbnRDaGFuZ2VcbiAgICAgICAgbmV3V2lkdGhzW25leHRJbmRleF0gPSBwcmV2V2lkdGhzW25leHRJbmRleF0gLSBzYWZlUGVyY2VudENoYW5nZVxuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5wcm9wcy5vblJlc2l6ZSkge1xuICAgICAgICB0aGlzLnByb3BzLm9uUmVzaXplKFxuICAgICAgICAgIC8vIG11bHRpcGx5IGJ5IHdpZHRoIHByb3AgdG8gZ2V0IGNvcnJlY3QgcGVyY2VudGFnZVxuICAgICAgICAgIG5ld1dpZHRocy5tYXAod2lkdGggPT4gTWF0aC5yb3VuZCh3aWR0aCAqIHBhcmVudFdpZHRoKSlcbiAgICAgICAgKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG1hcENoaWxkcmVuID0gKCkgPT4ge1xuICAgIGNvbnN0IElzQXJyYXkgPSAoY2hpbGRyZW4pOiBjaGlsZHJlbiBpcyBBcnJheTxDb2x1bW5GdW5jdGlvbj4gPT5cbiAgICAgIEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pXG5cbiAgICBjb25zdCBjaGlsZHJlbjogQXJyYXk8Q29sdW1uRnVuY3Rpb24+ID0gSXNBcnJheSh0aGlzLnByb3BzLmNoaWxkcmVuKVxuICAgICAgPyB0aGlzLnByb3BzLmNoaWxkcmVuXG4gICAgICA6IFt0aGlzLnByb3BzLmNoaWxkcmVuXVxuXG4gICAgY29uc3QgdmFsaWRDaGlsZHJlbiA9IGNoaWxkcmVuLmZpbHRlcihjaGlsZCA9PiB0eXBlb2YgY2hpbGQgPT09ICdmdW5jdGlvbicpXG5cbiAgICByZXR1cm4gdmFsaWRDaGlsZHJlbi5tYXAoKGNoaWxkLCBpbmRleCkgPT5cbiAgICAgIGNoaWxkKHtcbiAgICAgICAgbG9jYWxlOiB0aGlzLnByb3BzLmxvY2FsZSB8fCAnZW4nLFxuICAgICAgICBsb2NhbGVTdHJpbmdzOiB0aGlzLnByb3BzLmxvY2FsZVN0cmluZ3MgfHwge30sXG4gICAgICAgIGNvbHVtbkluZGV4OiBpbmRleCxcbiAgICAgICAgY29sdW1uQ291bnQ6IHZhbGlkQ2hpbGRyZW4ubGVuZ3RoLFxuICAgICAgICBnZXRGaWx0ZXJWYWx1ZTogZGF0YUtleSA9PlxuICAgICAgICAgIHRoaXMucHJvcHMuZmlsdGVycyAmJiB0aGlzLnByb3BzLmZpbHRlcnNbZGF0YUtleV0sXG4gICAgICAgIG9uSGVhZGVyUG9wb3Zlck9wZW46IG9wZW4gPT5cbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgZGlzYWJsZUtleWJvYXJkU2hvcnRjdXRzOiBvcGVuIH0pLFxuICAgICAgICBvblNvcnQ6IHNvcnRBcmdzID0+IHtcbiAgICAgICAgICB0aGlzLnNldFNlbGVjdGVkUm93cyhbXSlcbiAgICAgICAgICB0aGlzLmhhbmRsZUZpbHRlcih7IC4uLnNvcnRBcmdzIH0pXG4gICAgICAgIH0sXG4gICAgICAgIG9uRmlsdGVyOiAoeyBkYXRhS2V5LCB2YWx1ZSwgb3BlcmF0b3IgfSkgPT4ge1xuICAgICAgICAgIHRoaXMuc2V0U2VsZWN0ZWRSb3dzKFtdKVxuICAgICAgICAgIHRoaXMuaGFuZGxlRmlsdGVyKHtcbiAgICAgICAgICAgIGZpbHRlcnM6IHtcbiAgICAgICAgICAgICAgW2RhdGFLZXldOiBvcGVyYXRvclxuICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3JcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA6IHZhbHVlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgfSxcbiAgICAgICAgb25SZXNpemU6XG4gICAgICAgICAgLy8gdGhlIHByZXNlbmNlIG9mIGBvblJlc2l6ZWAgd2lsbCBzaG93IGRyYWcgaGFuZGxlcyBzbyBkb24ndCBzZXQgaXRcbiAgICAgICAgICAvLyBpZiBubyBwcm9wIGlzIHBhc3NlZCBpbiBvciBmb3IgdGhlIGxhc3QgY29sdW1uIGlmIHRoZSB0YWJsZSBpc24ndFxuICAgICAgICAgIC8vIHNjcm9sbGFibGVcbiAgICAgICAgICB0aGlzLnByb3BzLm9uUmVzaXplICYmXG4gICAgICAgICAgKCghdGhpcy5wcm9wcy5zY3JvbGxXaWR0aCAmJiBpbmRleCAhPT0gdmFsaWRDaGlsZHJlbi5sZW5ndGggLSAxKSB8fFxuICAgICAgICAgICAgdGhpcy5wcm9wcy5zY3JvbGxXaWR0aClcbiAgICAgICAgICAgID8gKHsgeCB9KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVSZXNpemUoeyB4LCBpbmRleCB9KVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgfSlcbiAgICApXG4gIH1cblxuICBpc1Jvd0xvYWRlZCA9ICh7IGluZGV4IH06IEluZGV4KSA9PiB7XG4gICAgY29uc3QgeyBoYXNNb3JlUm93cywgcm93Q291bnQgfSA9IHRoaXMucHJvcHNcbiAgICByZXR1cm4gIWhhc01vcmVSb3dzIHx8IGluZGV4IDwgcm93Q291bnRcbiAgfVxuXG4gIGlzQ29udGV4dE1lbnVWaXNpYmxlID0gKGluZGV4OiBudW1iZXIpID0+XG4gICAgdGhpcy5zdGF0ZS5hY3RpdmVDb250ZXh0TWVudSAmJiB0aGlzLnN0YXRlLmFjdGl2ZUNvbnRleHRNZW51LmluZGV4ID09PSBpbmRleFxuXG4gIGNsb3NlQ29udGV4dE1lbnUgPSAoKSA9PiB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICBhY3RpdmVDb250ZXh0TWVudTogbnVsbFxuICAgIH0pXG4gIH1cblxuICBjb250ZXh0TWVudVJlbmRlcmVyID0gKGluZGV4OiBudW1iZXIpID0+IHtcbiAgICBpZiAoXG4gICAgICB0aGlzLnByb3BzLmNvbnRleHRNZW51UmVuZGVyZXIgJiZcbiAgICAgIHRoaXMuaXNDb250ZXh0TWVudVZpc2libGUoaW5kZXgpICYmXG4gICAgICBkb2N1bWVudC5ib2R5ICE9PSBudWxsXG4gICAgKSB7XG4gICAgICBjb25zdCBjb250ZXh0TWVudUNsb3NlV3JhcHBlciA9IChcbiAgICAgICAgPENsb3NlV3JhcHBlciBvbkNsb3NlPXt0aGlzLmNsb3NlQ29udGV4dE1lbnV9PlxuICAgICAgICAgIHt0aGlzLnByb3BzLmNvbnRleHRNZW51UmVuZGVyZXIoe1xuICAgICAgICAgICAgLi4udGhpcy5zdGF0ZS5hY3RpdmVDb250ZXh0TWVudSxcbiAgICAgICAgICAgIHNlbGVjdGVkUm93czogdGhpcy5wcm9wcy5zZWxlY3RlZFJvd3MsXG4gICAgICAgICAgICBvbkNsb3NlOiB0aGlzLmNsb3NlQ29udGV4dE1lbnVcbiAgICAgICAgICB9KX1cbiAgICAgICAgPC9DbG9zZVdyYXBwZXI+XG4gICAgICApXG4gICAgICByZXR1cm4gUmVhY3RET00uY3JlYXRlUG9ydGFsKGNvbnRleHRNZW51Q2xvc2VXcmFwcGVyLCBkb2N1bWVudC5ib2R5KVxuICAgIH1cbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgaGVhZGVyUm93UmVuZGVyZXIgPSAoe1xuICAgIGNvbHVtbnMsXG4gICAgc3R5bGVcbiAgfToge1xuICAgIGNvbHVtbnM6IFJlYWN0LlJlYWN0Tm9kZVtdXG4gICAgc3R5bGU6IHt9XG4gIH0pID0+IChcbiAgICA8RWxlbWVudHMuUm93IHJvbGU9XCJyb3dcIiBoZWFkZXIgemVicmEgc3R5bGU9e3N0eWxlfT5cbiAgICAgIHtjb2x1bW5zfVxuICAgIDwvRWxlbWVudHMuUm93PlxuICApXG5cbiAgcm93UmVuZGVyZXIgPSAoe1xuICAgIGtleSxcbiAgICBzdHlsZSxcbiAgICBpbmRleCxcbiAgICByb3dEYXRhLFxuICAgIGNvbHVtbnMsXG4gICAgY2xhc3NOYW1lLFxuICAgIG9uUm93TW91c2VPdmVyLFxuICAgIG9uUm93TW91c2VPdXRcbiAgfTogVGFibGVSb3dQcm9wcykgPT4gKFxuICAgIDxGb2N1c2FibGVSb3dcbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgICAgYXJpYS1yb3dpbmRleD17aW5kZXggKyAxfVxuICAgICAgemVicmE9e2luZGV4ICUgMiA9PT0gMX1cbiAgICAgIHNlbGVjdGVkPXt0aGlzLnByb3BzLnNlbGVjdGVkUm93cy5pbmNsdWRlcyhpbmRleCl9XG4gICAgICBzZWxlY3Rpbmc9e3RoaXMuc3RhdGUuc2VsZWN0aW5nfVxuICAgICAgZm9jdXNlZD17aW5kZXggPT09IHRoaXMuc3RhdGUuZm9jdXNlZFJvd31cbiAgICAgIGtleT17a2V5fVxuICAgICAgc3R5bGU9e3N0eWxlfVxuICAgICAgb25Nb3VzZUxlYXZlPXtldmVudCA9PiB7XG4gICAgICAgIG9uUm93TW91c2VPdXQgJiYgb25Sb3dNb3VzZU91dCh7IHJvd0RhdGEsIGluZGV4LCBldmVudCB9KVxuICAgICAgfX1cbiAgICAgIG9uTW91c2VFbnRlcj17ZXZlbnQgPT4ge1xuICAgICAgICBvblJvd01vdXNlT3ZlciAmJiBvblJvd01vdXNlT3Zlcih7IHJvd0RhdGEsIGluZGV4LCBldmVudCB9KVxuICAgICAgfX1cbiAgICAgIG9uRm9jdXM9eygpID0+IHRoaXMuc2V0U3RhdGUoeyBmb2N1c2VkUm93OiBpbmRleCB9KX1cbiAgICAgIGRhdGEtaW5zdHJ1bWVudGF0aW9uPXtgJHt0aGlzLnByb3BzWydkYXRhLWluc3RydW1lbnRhdGlvbiddfS1yb3cke1xuICAgICAgICBpbmRleCArIDFcbiAgICAgIH1gfVxuICAgICAgb25DbGljaz17XG4gICAgICAgIHRoaXMucHJvcHMuc2VsZWN0YWJsZSAmJiAhdGhpcy5zdGF0ZS5hY3RpdmVDb250ZXh0TWVudVxuICAgICAgICAgID8gZXZlbnQgPT4gdGhpcy5oYW5kbGVSb3dDbGljayh7IGV2ZW50LCBpbmRleDogaW5kZXggfSlcbiAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgfVxuICAgICAgb25Db250ZXh0TWVudT17XG4gICAgICAgIHRoaXMucHJvcHMuY29udGV4dE1lbnVSZW5kZXJlclxuICAgICAgICAgID8gZXZlbnQgPT4ge1xuICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgICAgICBhY3RpdmVDb250ZXh0TWVudToge1xuICAgICAgICAgICAgICAgICAgbGVmdDogZXZlbnQuY2xpZW50WCxcbiAgICAgICAgICAgICAgICAgIHRvcDogZXZlbnQuY2xpZW50WSxcbiAgICAgICAgICAgICAgICAgIGluZGV4OiBpbmRleCxcbiAgICAgICAgICAgICAgICAgIHJvd0RhdGE6IHJvd0RhdGFcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAhdGhpcy5wcm9wcy5zZWxlY3RlZFJvd3MuaW5jbHVkZXMoaW5kZXgpICYmXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5zZWxlY3RhYmxlXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlUm93Q2xpY2soeyBldmVudCwgaW5kZXg6IGluZGV4IH0pXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICB9XG4gICAgICBvbkRvdWJsZUNsaWNrPXtldmVudCA9PlxuICAgICAgICB0aGlzLnByb3BzLm9uUm93RG91YmxlQ2xpY2sgJiZcbiAgICAgICAgdGhpcy5wcm9wcy5vblJvd0RvdWJsZUNsaWNrKHsgaW5kZXgsIGV2ZW50LCByb3dEYXRhIH0pXG4gICAgICB9XG4gICAgPlxuICAgICAge3RoaXMuY29sdW1uVHJhbnNmb3JtZXJcbiAgICAgICAgPyB0aGlzLmNvbHVtblRyYW5zZm9ybWVyKGNvbHVtbnMsIHJvd0RhdGEsIGluZGV4KVxuICAgICAgICA6IGNvbHVtbnN9XG4gICAgICB7dGhpcy5jb250ZXh0TWVudVJlbmRlcmVyKGluZGV4KX1cbiAgICA8L0ZvY3VzYWJsZVJvdz5cbiAgKVxuXG4gIC8qKlxuICAgKiAgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzIGlzIGFkZGVkIGJlY2F1c2UgZXZlbiB0aG91Z2ggdGhlIHByb3BzIGFyZSBub3QgdXNlZCBpbiB0aGlzIGNvbXBvbmVudFxuICAgKiB0aGV5IGFyZSBnZXR0aW5nIGRlc3RydWN0dXJlZCBpbnRvIC4uLnByb3BzIGFuZCBwYXNzZWQgZnVydGhlciBkb3duIHRoZSB0cmVlXG4gICAqL1xuICByZW5kZXIoKSB7XG4gICAgY29uc3Qge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgICAgY2hpbGRyZW4sXG4gICAgICBoYXNNb3JlUm93cyxcbiAgICAgIGhlaWdodCxcbiAgICAgIGxvYWRNb3JlUm93cyxcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICAgIG9uRmlsdGVyLFxuICAgICAgcm93Q291bnQsXG4gICAgICBzb3J0QnkgPSAnJyxcbiAgICAgIHNvcnREaXJlY3Rpb24sXG4gICAgICB3aWR0aCxcbiAgICAgIC4uLnByb3BzXG4gICAgfSA9IHRoaXMucHJvcHNcblxuICAgIC8vIFRoaXMgZml4ZXMgYW4gaXNzdWUgd2hlcmUgdGhlIGhlYWRlciBvZiB0aGUgRGF0YUdyaWQgZG9lc24ndCByZW5kZXIgb24gcGFnZSBsb2FkIGluIFNhZmFyaVxuICAgIGNvbnN0IHNhZmFyaVN0eWxlID0ge1xuICAgICAgdHJhbnNmb3JtOiBgdHJhbnNsYXRlWigwKWBcbiAgICB9XG5cbiAgICBjb25zdCBtYXBwZWRDaGlsZHJlbiA9IHRoaXMubWFwQ2hpbGRyZW4oKS5maWx0ZXIoY2hpbGQgPT4gY2hpbGQgIT09IG51bGwpXG4gICAgLy8gVE9ETzogQmV0dGVyIHR5cGUgc2lnbmF0dXJlIHdoZW4gYWNjZXNzaW5nIGNoaWxkcmVuIHByb3BzP1xuICAgIGNvbnN0IHNwYW5EYXRhID0gbWFwcGVkQ2hpbGRyZW4ubWFwKChjaGlsZDogUmVhY3QuUmVhY3RFbGVtZW50KSA9PiAoe1xuICAgICAgY29sc3BhbjogY2hpbGQucHJvcHMuY29sc3BhbiA/IGNoaWxkLnByb3BzLmNvbHNwYW4gOiAoKSA9PiAxLFxuICAgICAgd2lkdGg6IGNoaWxkLnByb3BzLndpZHRoLFxuICAgICAgZmxleEdyb3c6IGNoaWxkLnByb3BzLmZsZXhHcm93XG4gICAgfSkpXG4gICAgLy8gR2V0IHRoZSBhY3R1YWwgd2lkdGggb2YgYWxsIHRoZSBjb2x1bW5zLiBUaGlzIGlzIGluZGVwZW5kZW50IGZyb20gdGhlXG4gICAgLy8gd2lkdGggcHJvcC5cbiAgICB0aGlzLnRvdGFsV2lkdGggPSBtYXBwZWRDaGlsZHJlbi5yZWR1Y2U8bnVtYmVyPihcbiAgICAgICh0b3RhbDogbnVtYmVyLCBjaGlsZDogUmVhY3QuUmVhY3RFbGVtZW50PEJhc2ljQ29sdW1uUHJvcHM+KSA9PlxuICAgICAgICB0b3RhbCArIGNoaWxkLnByb3BzLndpZHRoLFxuICAgICAgMFxuICAgIClcbiAgICAvLyBDb252ZXJ0IHRoZSB3aWR0aHMgdG8gcGVyY2VudHMgc28gd2UgY2FuIG1hcCB0aGVtIGJhY2sgdG8gdGhlIHJlYWwgdGFibGVcbiAgICAvLyB3aWR0aCBsYXRlci5cbiAgICB0aGlzLmNvbHVtbldpZHRoUGVyY2VudHMgPSBtYXBwZWRDaGlsZHJlbi5tYXAoXG4gICAgICAoeyBwcm9wcyB9OiBSZWFjdC5SZWFjdEVsZW1lbnQpID0+IHByb3BzLndpZHRoIC8gdGhpcy50b3RhbFdpZHRoXG4gICAgKVxuXG4gICAgdGhpcy5jb2x1bW5UcmFuc2Zvcm1lciA9IChcbiAgICAgIGNvbHVtbnM6IFJlYWN0LlJlYWN0RWxlbWVudDxhbnk+W10sXG4gICAgICByb3dEYXRhLFxuICAgICAgcm93SW5kZXhcbiAgICApID0+IHtcbiAgICAgIGNvbnN0IHNwYW5zID0gc3BhbkRhdGEubWFwKGl0ZW0gPT4gaXRlbS5jb2xzcGFuKHJvd0RhdGEpKVxuICAgICAgY29uc3Qgc3Bhbm5lZENvbHVtbnM6IFJlYWN0LlJlYWN0RWxlbWVudFtdID0gW11cbiAgICAgIGxldCBpbmRleCA9IDBcbiAgICAgIHdoaWxlIChpbmRleCA8IGNvbHVtbnMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IHNwYW4gPSBzcGFuc1tpbmRleF1cbiAgICAgICAgY29uc3QgY29sdW1uID0gY29sdW1uc1tpbmRleF1cbiAgICAgICAgaWYgKHNwYW4gPiAxKSB7XG4gICAgICAgICAgY29uc3QgZm9sbG93aW5nQ29sdW1ucyA9IHNwYW5EYXRhLnNsaWNlKGluZGV4LCBzcGFuKVxuICAgICAgICAgIC8vIGZpbmQgbmV3IHdpZHRoIGJ5IGFkZGluZyBjdXJyZW50IGNvbHVtbiB3aWR0aCBwbHVzIGNvbHVtbnMgdGhhdCBhcmUgc3Bhbm5lZCBvdmVyXG5cbiAgICAgICAgICBjb25zdCB3aWR0aCA9IGZvbGxvd2luZ0NvbHVtbnMucmVkdWNlKFxuICAgICAgICAgICAgKGFjY3VtdWxhdG9yLCB7IHdpZHRoIH06IHsgd2lkdGg6IG51bWJlciB9KSA9PiBhY2N1bXVsYXRvciArIHdpZHRoLFxuICAgICAgICAgICAgMFxuICAgICAgICAgIClcblxuICAgICAgICAgIGNvbnN0IGZsZXhHcm93ID0gZm9sbG93aW5nQ29sdW1ucy5yZWR1Y2UoXG4gICAgICAgICAgICAoYWNjdW11bGF0b3IsIHsgZmxleEdyb3cgfTogeyBmbGV4R3JvdzogbnVtYmVyIH0pID0+XG4gICAgICAgICAgICAgIGFjY3VtdWxhdG9yICsgZmxleEdyb3csXG4gICAgICAgICAgICAwXG4gICAgICAgICAgKVxuICAgICAgICAgIHNwYW5uZWRDb2x1bW5zLnB1c2goXG4gICAgICAgICAgICBSZWFjdC5jbG9uZUVsZW1lbnQoY29sdW1uLCB7XG4gICAgICAgICAgICAgICdkYXRhLWluc3RydW1lbnRhdGlvbic6IGAke3RoaXMucHJvcHNbJ2RhdGEtaW5zdHJ1bWVudGF0aW9uJ119LXJvdyR7cm93SW5kZXh9LWNvbCR7aW5kZXh9YCxcbiAgICAgICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICAuLi5FbGVtZW50cy5jZWxsUmVzZXRTdHlsZSxcbiAgICAgICAgICAgICAgICBmbGV4OiBgMCAxICR7d2lkdGh9cHhgLFxuICAgICAgICAgICAgICAgIGZsZXhHcm93XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgICAgIGluZGV4ICs9IHNwYW4gLy8gc2tpcCBjb2x1bW5zIHRoYXQgaGF2ZSBiZWVuIHNwYW5uZWQgb3ZlclxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNwYW5uZWRDb2x1bW5zLnB1c2goXG4gICAgICAgICAgICBSZWFjdC5jbG9uZUVsZW1lbnQoY29sdW1uLCB7XG4gICAgICAgICAgICAgICdkYXRhLWluc3RydW1lbnRhdGlvbic6IGAke3RoaXMucHJvcHNbJ2RhdGEtaW5zdHJ1bWVudGF0aW9uJ119LXJvdyR7cm93SW5kZXh9LWNvbCR7aW5kZXh9YFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApXG4gICAgICAgICAgaW5kZXgrK1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gc3Bhbm5lZENvbHVtbnNcbiAgICB9XG5cbiAgICBjb25zdCBUYWJsZUNvbXBvbmVudCA9XG4gICAgICB0aGlzLnByb3BzLnNjcm9sbFdpZHRoICE9PSB1bmRlZmluZWQgPyBTY3JvbGxhYmxlVGFibGUgOiBUYWJsZVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxFbGVtZW50cy5UYWJsZUNvbnRhaW5lclxuICAgICAgICBjc3M9e3sgd2lkdGgsIGhlaWdodCB9fVxuICAgICAgICBvbktleURvd249e3RoaXMuaGFuZGxlS2V5RG93bn1cbiAgICAgICAgb25LZXlVcD17dGhpcy5oYW5kbGVLZXlVcH1cbiAgICAgICAgZGF0YS1pbnN0cnVtZW50YXRpb249e2Ake3RoaXMucHJvcHNbJ2RhdGEtaW5zdHJ1bWVudGF0aW9uJ119LWdyaWRgfVxuICAgICAgPlxuICAgICAgICA8SW5maW5pdGVMb2FkZXJcbiAgICAgICAgICBpc1Jvd0xvYWRlZD17dGhpcy5pc1Jvd0xvYWRlZH1cbiAgICAgICAgICBsb2FkTW9yZVJvd3M9e2xvYWRNb3JlUm93cyB8fCAoKCkgPT4gUHJvbWlzZS5yZXNvbHZlKGZhbHNlKSl9XG4gICAgICAgICAgcm93Q291bnQ9e2hhc01vcmVSb3dzID8gcm93Q291bnQgKyAxIDogcm93Q291bnR9XG4gICAgICAgICAgdGhyZXNob2xkPXs1fVxuICAgICAgICAgIHJlZj17dGhpcy5pbmZpbml0ZVRhYmxlfVxuICAgICAgICA+XG4gICAgICAgICAgeyh7IG9uUm93c1JlbmRlcmVkLCByZWdpc3RlckNoaWxkIH0pID0+IChcbiAgICAgICAgICAgIDxUYWJsZUNvbXBvbmVudFxuICAgICAgICAgICAgICBzdHlsZT17c2FmYXJpU3R5bGV9XG4gICAgICAgICAgICAgIGdyaWRTdHlsZT17eyBvdXRsaW5lOiAnbm9uZScgfX1cbiAgICAgICAgICAgICAgaGVhZGVySGVpZ2h0PXszNn1cbiAgICAgICAgICAgICAgcm93SGVpZ2h0PXszMH1cbiAgICAgICAgICAgICAgc29ydEJ5PXtzb3J0Qnl9XG4gICAgICAgICAgICAgIHNvcnREaXJlY3Rpb249e3NvcnREaXJlY3Rpb259XG4gICAgICAgICAgICAgIHJlZj17cmVnaXN0ZXJDaGlsZH1cbiAgICAgICAgICAgICAgbm9Sb3dzUmVuZGVyZWQ9eygpID0+IDxkaXY+Tm8gcmVzdWx0czwvZGl2Pn1cbiAgICAgICAgICAgICAgb25Sb3dzUmVuZGVyZWQ9e29uUm93c1JlbmRlcmVkfVxuICAgICAgICAgICAgICBvblNjcm9sbD17XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS5hY3RpdmVDb250ZXh0TWVudVxuICAgICAgICAgICAgICAgICAgPyAoKSA9PiB0aGlzLmNsb3NlQ29udGV4dE1lbnUoKVxuICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByb3dDb3VudD17aGFzTW9yZVJvd3MgPyByb3dDb3VudCArIDEgOiByb3dDb3VudH1cbiAgICAgICAgICAgICAgaGVhZGVyUm93UmVuZGVyZXI9e3RoaXMuaGVhZGVyUm93UmVuZGVyZXJ9XG4gICAgICAgICAgICAgIHJvd1JlbmRlcmVyPXt0aGlzLnJvd1JlbmRlcmVyfVxuICAgICAgICAgICAgICAvLyBhY2NvdW50IGZvciBib3JkZXIgd2lkdGggb2YgY29udGFpbmVyXG4gICAgICAgICAgICAgIHdpZHRoPXt3aWR0aCAtIDJ9XG4gICAgICAgICAgICAgIGhlaWdodD17aGVpZ2h0IC0gMn1cbiAgICAgICAgICAgICAgey4uLnByb3BzfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7bWFwcGVkQ2hpbGRyZW59XG4gICAgICAgICAgICA8L1RhYmxlQ29tcG9uZW50PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvSW5maW5pdGVMb2FkZXI+XG4gICAgICA8L0VsZW1lbnRzLlRhYmxlQ29udGFpbmVyPlxuICAgIClcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBEYXRhR3JpZFxuIl19 */"),
616
681
  onKeyDown: this.handleKeyDown,
617
682
  onKeyUp: this.handleKeyUp,
618
683
  "data-instrumentation": "".concat(this.props['data-instrumentation'], "-grid"),
619
684
  children: (0, _jsxRuntime.jsx)(_reactVirtualized.InfiniteLoader, {
620
- "data-gs-c": gsC(function children(_ref12) {
621
- var onRowsRendered = _ref12.onRowsRendered,
622
- registerChild = _ref12.registerChild;
685
+ "data-gs-c": gsC(function children(_ref15) {
686
+ var onRowsRendered = _ref15.onRowsRendered,
687
+ registerChild = _ref15.registerChild;
623
688
  return (0, _jsxRuntime.jsx)(TableComponent, _objectSpread(_objectSpread({
624
689
  "data-gs-c": gsC(mappedChildren),
625
690
  "data-gs": gs("src", "datagrid", "datagrid.tsx", "elements-tablecontainer", "infinite-loader", "table-component"),
@@ -661,9 +726,9 @@ var DataGrid = /*#__PURE__*/function (_Component) {
661
726
  rowCount: hasMoreRows ? rowCount + 1 : rowCount,
662
727
  threshold: 5,
663
728
  ref: this.infiniteTable,
664
- children: function children(_ref12) {
665
- var onRowsRendered = _ref12.onRowsRendered,
666
- registerChild = _ref12.registerChild;
729
+ children: function children(_ref15) {
730
+ var onRowsRendered = _ref15.onRowsRendered,
731
+ registerChild = _ref15.registerChild;
667
732
  return (0, _jsxRuntime.jsx)(TableComponent, _objectSpread(_objectSpread({
668
733
  "data-gs-c": gsC(mappedChildren),
669
734
  "data-gs": gs("src", "datagrid", "datagrid.tsx", "elements-tablecontainer", "infinite-loader", "table-component"),
@@ -720,6 +785,8 @@ _defineProperty(DataGrid, "SINGLE_SELECT", 'single');
720
785
 
721
786
  _defineProperty(DataGrid, "MULTI_SELECT", 'multi');
722
787
 
788
+ _defineProperty(DataGrid, "MIN_COL_WIDTH", 50);
789
+
723
790
  _defineProperty(DataGrid, "utils", dataGridUtils);
724
791
 
725
792
  _defineProperty(DataGrid, "defaultProps", {
@@ -1,6 +1,6 @@
1
1
  /// <reference types="react" />
2
2
  import { ColumnProps, SortDirection } from 'react-virtualized';
3
- import type { filterRendererArguments, sortRendererArguments } from '../types';
3
+ import type { filterRendererArguments, sortRendererArguments, InternalResizeHandler } from '../types';
4
4
  import type { LocaleStrings } from '../constants';
5
5
  import type { Theme } from '@theme';
6
6
  import type { Interpolation } from '@emotion/react';
@@ -32,6 +32,7 @@ export declare type BasicColumnMappedProps = {
32
32
  sortBy: string;
33
33
  sortDirection: keyof typeof SortDirection;
34
34
  }) => void;
35
+ onResize?: InternalResizeHandler;
35
36
  };
36
37
  /**
37
38
  * Function that accepts two object arguments and returns a react-virtualized Column.
@@ -59,7 +59,8 @@ function BasicColumn(columnProps, mappedProps) {
59
59
  locale = _mappedProps$locale === void 0 ? 'en' : _mappedProps$locale,
60
60
  _mappedProps$localeSt = mappedProps.localeStrings,
61
61
  localeStrings = _mappedProps$localeSt === void 0 ? {} : _mappedProps$localeSt,
62
- onHeaderPopoverOpen = mappedProps.onHeaderPopoverOpen;
62
+ onHeaderPopoverOpen = mappedProps.onHeaderPopoverOpen,
63
+ onResize = mappedProps.onResize;
63
64
 
64
65
  if (columnProps.hideColumn) {
65
66
  return null;
@@ -69,6 +70,7 @@ function BasicColumn(columnProps, mappedProps) {
69
70
  return (0, _jsxRuntime.jsx)(_elements.Cell, {
70
71
  "data-gs": gs("src", "datagrid", "components", "basic-column", "cell"),
71
72
  rightAlign: typeof cellRendererProps.cellData === 'number',
73
+ isFirst: cellRendererProps.columnIndex === 0,
72
74
  isLast: cellRendererProps.columnIndex === columnCount - 1,
73
75
  children: (0, _jsxRuntime.jsx)(_RightTruncatedText["default"], {
74
76
  "data-gs": gs("src", "datagrid", "components", "basic-column", "cell", "right-truncated-text"),
@@ -86,6 +88,7 @@ function BasicColumn(columnProps, mappedProps) {
86
88
  "data-gs": gs("src", "datagrid", "components", "basic-column", "column-header"),
87
89
  dataKey: dataKey,
88
90
  isLast: columnCount - 1 === mappedProps.columnIndex,
91
+ isFirst: mappedProps.columnIndex === 0,
89
92
  label: label,
90
93
  showSortIndicator: !!sortRenderer && sortBy === dataKey,
91
94
  sortDirection: sortDirection,
@@ -109,6 +112,7 @@ function BasicColumn(columnProps, mappedProps) {
109
112
  operator: operator
110
113
  });
111
114
  },
115
+ onResize: onResize,
112
116
  filterRenderer: filterRenderer,
113
117
  sortBy: sortBy,
114
118
  sortRenderer: sortRenderer,
@@ -74,7 +74,7 @@ var CollapsibleIcon = ( /*#__PURE__*/0, _base["default"])(_Icon["default"].Mediu
74
74
  transition: 'transform 300ms',
75
75
  transform: expanded ? 'rotate(0)' : 'rotate(-90deg)'
76
76
  };
77
- }, (0, _ThemeProvider.getOverrides)(_ThemeProvider.Overridable.DataGrid.CollapsibleIcon), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9EYXRhR3JpZC9jb21wb25lbnRzL0NvbGxhcHNpYmxlQ2VsbC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBYStCIiwiZmlsZSI6Ii4uLy4uLy4uLy4uL3NyYy9EYXRhR3JpZC9jb21wb25lbnRzL0NvbGxhcHNpYmxlQ2VsbC50c3giLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSB0ZC9pbnN0cnVtZW50YXRpb24gKi9cbi8vIHRoaXMgbGV2ZWwgb2YgZmluZSBncmFpbmVkIGluc3RydW1lbnRhdGlvbiBpcyBub3QgbmVlZGVkXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgSWNvbiBmcm9tICcuLi8uLi9JY29uJ1xuaW1wb3J0IHsgU3BhY2VyLCBDZWxsIH0gZnJvbSAnLi4vZWxlbWVudHMnXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCdcbmltcG9ydCBjbiBmcm9tICdjbGFzc25hbWVzJ1xuaW1wb3J0IHsgZ2V0T3ZlcnJpZGVzLCBPdmVycmlkYWJsZSB9IGZyb20gJy4uLy4uL1RoZW1lUHJvdmlkZXInXG5pbXBvcnQgQnV0dG9uIGZyb20gJy4uLy4uL0J1dHRvbidcblxudHlwZSBDb2xsYXBzaWJsZUljb25Qcm9wcyA9IHtcbiAgZXhwYW5kZWQ/OiBib29sZWFuXG59XG5leHBvcnQgY29uc3QgQ29sbGFwc2libGVJY29uID0gc3R5bGVkKEljb24uTWVkaXVtLlN5bWJvbEFycm93RG93bik8XG4gIENvbGxhcHNpYmxlSWNvblByb3BzXG4+KFxuICAoeyBleHBhbmRlZCwgdGhlbWUgfSkgPT4gKHtcbiAgICBjb2xvcjogdGhlbWUucGFsZXR0ZS5wcmltYXJ5WzVdLFxuICAgIHRyYW5zaXRpb246ICd0cmFuc2Zvcm0gMzAwbXMnLFxuICAgIHRyYW5zZm9ybTogZXhwYW5kZWQgPyAncm90YXRlKDApJyA6ICdyb3RhdGUoLTkwZGVnKSdcbiAgfSksXG4gIGdldE92ZXJyaWRlcyhPdmVycmlkYWJsZS5EYXRhR3JpZC5Db2xsYXBzaWJsZUljb24pXG4pXG5cbmNvbnN0IENvbGxhcHNpYmxlSWNvbkJ1dHRvbiA9IHN0eWxlZChCdXR0b24pKCgpID0+ICh7XG4gIG1pbldpZHRoOiAxNlxufSkpXG5cbmNvbnN0IENvbGxhcHNpYmxlQ2VsbFdyYXBwZXIgPSBzdHlsZWQoQ2VsbCkoKCkgPT4gKHtcbiAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gIGJvcmRlclJpZ2h0OiAwXG59KSlcblxudHlwZSBTeW50aGV0aWNFdmVudCA9IGFueVxudHlwZSBDb2xsYXBzaWJsZUNlbGxQcm9wcyA9IHtcbiAgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZVxuICBleHBhbmRlZFJvd3M6IEFycmF5PG51bWJlciB8IHN0cmluZz5cbiAgaGFuZGxlRXhwYW5kUm93czogKGV2ZW50OiBTeW50aGV0aWNFdmVudCkgPT4gdm9pZFxuICBpZDogc3RyaW5nIHwgbnVtYmVyXG4gIG51bWJlck9mQ2hpbGRyZW46IG51bWJlclxufVxuY2xhc3MgQ29sbGFwc2libGVDZWxsIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50PENvbGxhcHNpYmxlQ2VsbFByb3BzPiB7XG4gIGhhbmRsZUV4cGFuZFJvd3MgPSAoZXZlbnQ6IFN5bnRoZXRpY0V2ZW50KSA9PiB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICBjb25zdCB7IGlkLCBleHBhbmRlZFJvd3MsIGhhbmRsZUV4cGFuZFJvd3MgfSA9IHRoaXMucHJvcHNcbiAgICBjb25zdCBleHBhbmRlZCA9IGV4cGFuZGVkUm93cy5pbmNsdWRlcyhpZClcbiAgICBjb25zdCBuZXdFeHBhbmRlZFJvd3MgPSBleHBhbmRlZFxuICAgICAgPyBleHBhbmRlZFJvd3MuZmlsdGVyKHJvdyA9PiByb3cgIT09IGlkKVxuICAgICAgOiBbLi4uZXhwYW5kZWRSb3dzLCBpZF1cbiAgICByZXR1cm4gaGFuZGxlRXhwYW5kUm93cyhuZXdFeHBhbmRlZFJvd3MpXG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3QgeyBpZCwgZXhwYW5kZWRSb3dzLCBudW1iZXJPZkNoaWxkcmVuIH0gPSB0aGlzLnByb3BzXG4gICAgY29uc3QgZXhwYW5kZWQgPSBleHBhbmRlZFJvd3MuaW5jbHVkZXMoaWQpXG4gICAgcmV0dXJuIChcbiAgICAgIDxDb2xsYXBzaWJsZUNlbGxXcmFwcGVyIGtleT17aWR9PlxuICAgICAgICA8Q29sbGFwc2libGVJY29uQnV0dG9uXG4gICAgICAgICAgb25DbGljaz17dGhpcy5oYW5kbGVFeHBhbmRSb3dzfVxuICAgICAgICAgIGljb25cbiAgICAgICAgICBib3JkZXJsZXNzXG4gICAgICAgICAgaWdub3JlRm9jdXNcbiAgICAgICAgPlxuICAgICAgICAgIDxDb2xsYXBzaWJsZUljb25cbiAgICAgICAgICAgIGV4cGFuZGVkPXtleHBhbmRlZCAmJiBudW1iZXJPZkNoaWxkcmVuID4gMH1cbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oJ2RhdGEtZ3JpZC1jb2xsYXBzaWJsZS1pY29uJywge1xuICAgICAgICAgICAgICAnZGF0YS1ncmlkLWNvbGxhcHNpYmxlLWljb24tZXhwYW5kZWQnOlxuICAgICAgICAgICAgICAgIGV4cGFuZGVkICYmIG51bWJlck9mQ2hpbGRyZW4gPiAwXG4gICAgICAgICAgICB9KX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L0NvbGxhcHNpYmxlSWNvbkJ1dHRvbj5cbiAgICAgICAgPFNwYWNlciAvPlxuICAgICAgICB7dGhpcy5wcm9wcy5jaGlsZHJlbn1cbiAgICAgICAge2AgKCR7bnVtYmVyT2ZDaGlsZHJlbn0pYH1cbiAgICAgIDwvQ29sbGFwc2libGVDZWxsV3JhcHBlcj5cbiAgICApXG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgQ29sbGFwc2libGVDZWxsXG4iXX0= */");
77
+ }, (0, _ThemeProvider.getOverrides)(_ThemeProvider.Overridable.DataGrid.CollapsibleIcon), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9EYXRhR3JpZC9jb21wb25lbnRzL0NvbGxhcHNpYmxlQ2VsbC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBYStCIiwiZmlsZSI6Ii4uLy4uLy4uLy4uL3NyYy9EYXRhR3JpZC9jb21wb25lbnRzL0NvbGxhcHNpYmxlQ2VsbC50c3giLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSB0ZC9pbnN0cnVtZW50YXRpb24gKi9cbi8vIHRoaXMgbGV2ZWwgb2YgZmluZSBncmFpbmVkIGluc3RydW1lbnRhdGlvbiBpcyBub3QgbmVlZGVkXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgSWNvbiBmcm9tICcuLi8uLi9JY29uJ1xuaW1wb3J0IHsgU3BhY2VyLCBDZWxsIH0gZnJvbSAnLi4vZWxlbWVudHMnXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCdcbmltcG9ydCBjbiBmcm9tICdjbGFzc25hbWVzJ1xuaW1wb3J0IHsgZ2V0T3ZlcnJpZGVzLCBPdmVycmlkYWJsZSB9IGZyb20gJy4uLy4uL1RoZW1lUHJvdmlkZXInXG5pbXBvcnQgQnV0dG9uIGZyb20gJy4uLy4uL0J1dHRvbidcblxudHlwZSBDb2xsYXBzaWJsZUljb25Qcm9wcyA9IHtcbiAgZXhwYW5kZWQ/OiBib29sZWFuXG59XG5leHBvcnQgY29uc3QgQ29sbGFwc2libGVJY29uID0gc3R5bGVkKEljb24uTWVkaXVtLlN5bWJvbEFycm93RG93bik8XG4gIENvbGxhcHNpYmxlSWNvblByb3BzXG4+KFxuICAoeyBleHBhbmRlZCwgdGhlbWUgfSkgPT4gKHtcbiAgICBjb2xvcjogdGhlbWUucGFsZXR0ZS5wcmltYXJ5WzVdLFxuICAgIHRyYW5zaXRpb246ICd0cmFuc2Zvcm0gMzAwbXMnLFxuICAgIHRyYW5zZm9ybTogZXhwYW5kZWQgPyAncm90YXRlKDApJyA6ICdyb3RhdGUoLTkwZGVnKSdcbiAgfSksXG4gIGdldE92ZXJyaWRlcyhPdmVycmlkYWJsZS5EYXRhR3JpZC5Db2xsYXBzaWJsZUljb24pXG4pXG5cbmNvbnN0IENvbGxhcHNpYmxlSWNvbkJ1dHRvbiA9IHN0eWxlZChCdXR0b24pKCgpID0+ICh7XG4gIG1pbldpZHRoOiAxNlxufSkpXG5cbmNvbnN0IENvbGxhcHNpYmxlQ2VsbFdyYXBwZXIgPSBzdHlsZWQoQ2VsbCkoKCkgPT4gKHtcbiAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gIGJvcmRlclJpZ2h0OiAwXG59KSlcblxudHlwZSBTeW50aGV0aWNFdmVudCA9IGFueVxudHlwZSBDb2xsYXBzaWJsZUNlbGxQcm9wcyA9IHtcbiAgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZVxuICBleHBhbmRlZFJvd3M6IEFycmF5PG51bWJlciB8IHN0cmluZz5cbiAgaGFuZGxlRXhwYW5kUm93czogKGV2ZW50OiBTeW50aGV0aWNFdmVudCkgPT4gdm9pZFxuICBpZDogc3RyaW5nIHwgbnVtYmVyXG4gIG51bWJlck9mQ2hpbGRyZW46IG51bWJlclxufVxuY2xhc3MgQ29sbGFwc2libGVDZWxsIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50PENvbGxhcHNpYmxlQ2VsbFByb3BzPiB7XG4gIGhhbmRsZUV4cGFuZFJvd3MgPSAoZXZlbnQ6IFN5bnRoZXRpY0V2ZW50KSA9PiB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICBjb25zdCB7IGlkLCBleHBhbmRlZFJvd3MsIGhhbmRsZUV4cGFuZFJvd3MgfSA9IHRoaXMucHJvcHNcbiAgICBjb25zdCBleHBhbmRlZCA9IGV4cGFuZGVkUm93cy5pbmNsdWRlcyhpZClcbiAgICBjb25zdCBuZXdFeHBhbmRlZFJvd3MgPSBleHBhbmRlZFxuICAgICAgPyBleHBhbmRlZFJvd3MuZmlsdGVyKHJvdyA9PiByb3cgIT09IGlkKVxuICAgICAgOiBbLi4uZXhwYW5kZWRSb3dzLCBpZF1cbiAgICByZXR1cm4gaGFuZGxlRXhwYW5kUm93cyhuZXdFeHBhbmRlZFJvd3MpXG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3QgeyBpZCwgZXhwYW5kZWRSb3dzLCBudW1iZXJPZkNoaWxkcmVuIH0gPSB0aGlzLnByb3BzXG4gICAgY29uc3QgZXhwYW5kZWQgPSBleHBhbmRlZFJvd3MuaW5jbHVkZXMoaWQpXG4gICAgcmV0dXJuIChcbiAgICAgIDxDb2xsYXBzaWJsZUNlbGxXcmFwcGVyIGtleT17aWR9IGlzRmlyc3Q+XG4gICAgICAgIDxDb2xsYXBzaWJsZUljb25CdXR0b25cbiAgICAgICAgICBvbkNsaWNrPXt0aGlzLmhhbmRsZUV4cGFuZFJvd3N9XG4gICAgICAgICAgaWNvblxuICAgICAgICAgIGJvcmRlcmxlc3NcbiAgICAgICAgICBpZ25vcmVGb2N1c1xuICAgICAgICA+XG4gICAgICAgICAgPENvbGxhcHNpYmxlSWNvblxuICAgICAgICAgICAgZXhwYW5kZWQ9e2V4cGFuZGVkICYmIG51bWJlck9mQ2hpbGRyZW4gPiAwfVxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbignZGF0YS1ncmlkLWNvbGxhcHNpYmxlLWljb24nLCB7XG4gICAgICAgICAgICAgICdkYXRhLWdyaWQtY29sbGFwc2libGUtaWNvbi1leHBhbmRlZCc6XG4gICAgICAgICAgICAgICAgZXhwYW5kZWQgJiYgbnVtYmVyT2ZDaGlsZHJlbiA+IDBcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvQ29sbGFwc2libGVJY29uQnV0dG9uPlxuICAgICAgICA8U3BhY2VyIC8+XG4gICAgICAgIHt0aGlzLnByb3BzLmNoaWxkcmVufVxuICAgICAgICB7YCAoJHtudW1iZXJPZkNoaWxkcmVufSlgfVxuICAgICAgPC9Db2xsYXBzaWJsZUNlbGxXcmFwcGVyPlxuICAgIClcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBDb2xsYXBzaWJsZUNlbGxcbiJdfQ== */");
78
78
  exports.CollapsibleIcon = CollapsibleIcon;
79
79
  var CollapsibleIconButton = ( /*#__PURE__*/0, _base["default"])(_Button["default"], process.env.NODE_ENV === "production" ? {
80
80
  target: "e1prc87v1"
@@ -85,7 +85,7 @@ var CollapsibleIconButton = ( /*#__PURE__*/0, _base["default"])(_Button["default
85
85
  return {
86
86
  minWidth: 16
87
87
  };
88
- }, process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9EYXRhR3JpZC9jb21wb25lbnRzL0NvbGxhcHNpYmxlQ2VsbC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBd0I4QiIsImZpbGUiOiIuLi8uLi8uLi8uLi9zcmMvRGF0YUdyaWQvY29tcG9uZW50cy9Db2xsYXBzaWJsZUNlbGwudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgdGQvaW5zdHJ1bWVudGF0aW9uICovXG4vLyB0aGlzIGxldmVsIG9mIGZpbmUgZ3JhaW5lZCBpbnN0cnVtZW50YXRpb24gaXMgbm90IG5lZWRlZFxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IEljb24gZnJvbSAnLi4vLi4vSWNvbidcbmltcG9ydCB7IFNwYWNlciwgQ2VsbCB9IGZyb20gJy4uL2VsZW1lbnRzJ1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnXG5pbXBvcnQgY24gZnJvbSAnY2xhc3NuYW1lcydcbmltcG9ydCB7IGdldE92ZXJyaWRlcywgT3ZlcnJpZGFibGUgfSBmcm9tICcuLi8uLi9UaGVtZVByb3ZpZGVyJ1xuaW1wb3J0IEJ1dHRvbiBmcm9tICcuLi8uLi9CdXR0b24nXG5cbnR5cGUgQ29sbGFwc2libGVJY29uUHJvcHMgPSB7XG4gIGV4cGFuZGVkPzogYm9vbGVhblxufVxuZXhwb3J0IGNvbnN0IENvbGxhcHNpYmxlSWNvbiA9IHN0eWxlZChJY29uLk1lZGl1bS5TeW1ib2xBcnJvd0Rvd24pPFxuICBDb2xsYXBzaWJsZUljb25Qcm9wc1xuPihcbiAgKHsgZXhwYW5kZWQsIHRoZW1lIH0pID0+ICh7XG4gICAgY29sb3I6IHRoZW1lLnBhbGV0dGUucHJpbWFyeVs1XSxcbiAgICB0cmFuc2l0aW9uOiAndHJhbnNmb3JtIDMwMG1zJyxcbiAgICB0cmFuc2Zvcm06IGV4cGFuZGVkID8gJ3JvdGF0ZSgwKScgOiAncm90YXRlKC05MGRlZyknXG4gIH0pLFxuICBnZXRPdmVycmlkZXMoT3ZlcnJpZGFibGUuRGF0YUdyaWQuQ29sbGFwc2libGVJY29uKVxuKVxuXG5jb25zdCBDb2xsYXBzaWJsZUljb25CdXR0b24gPSBzdHlsZWQoQnV0dG9uKSgoKSA9PiAoe1xuICBtaW5XaWR0aDogMTZcbn0pKVxuXG5jb25zdCBDb2xsYXBzaWJsZUNlbGxXcmFwcGVyID0gc3R5bGVkKENlbGwpKCgpID0+ICh7XG4gIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICBib3JkZXJSaWdodDogMFxufSkpXG5cbnR5cGUgU3ludGhldGljRXZlbnQgPSBhbnlcbnR5cGUgQ29sbGFwc2libGVDZWxsUHJvcHMgPSB7XG4gIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGVcbiAgZXhwYW5kZWRSb3dzOiBBcnJheTxudW1iZXIgfCBzdHJpbmc+XG4gIGhhbmRsZUV4cGFuZFJvd3M6IChldmVudDogU3ludGhldGljRXZlbnQpID0+IHZvaWRcbiAgaWQ6IHN0cmluZyB8IG51bWJlclxuICBudW1iZXJPZkNoaWxkcmVuOiBudW1iZXJcbn1cbmNsYXNzIENvbGxhcHNpYmxlQ2VsbCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxDb2xsYXBzaWJsZUNlbGxQcm9wcz4ge1xuICBoYW5kbGVFeHBhbmRSb3dzID0gKGV2ZW50OiBTeW50aGV0aWNFdmVudCkgPT4ge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgY29uc3QgeyBpZCwgZXhwYW5kZWRSb3dzLCBoYW5kbGVFeHBhbmRSb3dzIH0gPSB0aGlzLnByb3BzXG4gICAgY29uc3QgZXhwYW5kZWQgPSBleHBhbmRlZFJvd3MuaW5jbHVkZXMoaWQpXG4gICAgY29uc3QgbmV3RXhwYW5kZWRSb3dzID0gZXhwYW5kZWRcbiAgICAgID8gZXhwYW5kZWRSb3dzLmZpbHRlcihyb3cgPT4gcm93ICE9PSBpZClcbiAgICAgIDogWy4uLmV4cGFuZGVkUm93cywgaWRdXG4gICAgcmV0dXJuIGhhbmRsZUV4cGFuZFJvd3MobmV3RXhwYW5kZWRSb3dzKVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHsgaWQsIGV4cGFuZGVkUm93cywgbnVtYmVyT2ZDaGlsZHJlbiB9ID0gdGhpcy5wcm9wc1xuICAgIGNvbnN0IGV4cGFuZGVkID0gZXhwYW5kZWRSb3dzLmluY2x1ZGVzKGlkKVxuICAgIHJldHVybiAoXG4gICAgICA8Q29sbGFwc2libGVDZWxsV3JhcHBlciBrZXk9e2lkfT5cbiAgICAgICAgPENvbGxhcHNpYmxlSWNvbkJ1dHRvblxuICAgICAgICAgIG9uQ2xpY2s9e3RoaXMuaGFuZGxlRXhwYW5kUm93c31cbiAgICAgICAgICBpY29uXG4gICAgICAgICAgYm9yZGVybGVzc1xuICAgICAgICAgIGlnbm9yZUZvY3VzXG4gICAgICAgID5cbiAgICAgICAgICA8Q29sbGFwc2libGVJY29uXG4gICAgICAgICAgICBleHBhbmRlZD17ZXhwYW5kZWQgJiYgbnVtYmVyT2ZDaGlsZHJlbiA+IDB9XG4gICAgICAgICAgICBjbGFzc05hbWU9e2NuKCdkYXRhLWdyaWQtY29sbGFwc2libGUtaWNvbicsIHtcbiAgICAgICAgICAgICAgJ2RhdGEtZ3JpZC1jb2xsYXBzaWJsZS1pY29uLWV4cGFuZGVkJzpcbiAgICAgICAgICAgICAgICBleHBhbmRlZCAmJiBudW1iZXJPZkNoaWxkcmVuID4gMFxuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9Db2xsYXBzaWJsZUljb25CdXR0b24+XG4gICAgICAgIDxTcGFjZXIgLz5cbiAgICAgICAge3RoaXMucHJvcHMuY2hpbGRyZW59XG4gICAgICAgIHtgICgke251bWJlck9mQ2hpbGRyZW59KWB9XG4gICAgICA8L0NvbGxhcHNpYmxlQ2VsbFdyYXBwZXI+XG4gICAgKVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IENvbGxhcHNpYmxlQ2VsbFxuIl19 */");
88
+ }, process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9EYXRhR3JpZC9jb21wb25lbnRzL0NvbGxhcHNpYmxlQ2VsbC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBd0I4QiIsImZpbGUiOiIuLi8uLi8uLi8uLi9zcmMvRGF0YUdyaWQvY29tcG9uZW50cy9Db2xsYXBzaWJsZUNlbGwudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgdGQvaW5zdHJ1bWVudGF0aW9uICovXG4vLyB0aGlzIGxldmVsIG9mIGZpbmUgZ3JhaW5lZCBpbnN0cnVtZW50YXRpb24gaXMgbm90IG5lZWRlZFxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IEljb24gZnJvbSAnLi4vLi4vSWNvbidcbmltcG9ydCB7IFNwYWNlciwgQ2VsbCB9IGZyb20gJy4uL2VsZW1lbnRzJ1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnXG5pbXBvcnQgY24gZnJvbSAnY2xhc3NuYW1lcydcbmltcG9ydCB7IGdldE92ZXJyaWRlcywgT3ZlcnJpZGFibGUgfSBmcm9tICcuLi8uLi9UaGVtZVByb3ZpZGVyJ1xuaW1wb3J0IEJ1dHRvbiBmcm9tICcuLi8uLi9CdXR0b24nXG5cbnR5cGUgQ29sbGFwc2libGVJY29uUHJvcHMgPSB7XG4gIGV4cGFuZGVkPzogYm9vbGVhblxufVxuZXhwb3J0IGNvbnN0IENvbGxhcHNpYmxlSWNvbiA9IHN0eWxlZChJY29uLk1lZGl1bS5TeW1ib2xBcnJvd0Rvd24pPFxuICBDb2xsYXBzaWJsZUljb25Qcm9wc1xuPihcbiAgKHsgZXhwYW5kZWQsIHRoZW1lIH0pID0+ICh7XG4gICAgY29sb3I6IHRoZW1lLnBhbGV0dGUucHJpbWFyeVs1XSxcbiAgICB0cmFuc2l0aW9uOiAndHJhbnNmb3JtIDMwMG1zJyxcbiAgICB0cmFuc2Zvcm06IGV4cGFuZGVkID8gJ3JvdGF0ZSgwKScgOiAncm90YXRlKC05MGRlZyknXG4gIH0pLFxuICBnZXRPdmVycmlkZXMoT3ZlcnJpZGFibGUuRGF0YUdyaWQuQ29sbGFwc2libGVJY29uKVxuKVxuXG5jb25zdCBDb2xsYXBzaWJsZUljb25CdXR0b24gPSBzdHlsZWQoQnV0dG9uKSgoKSA9PiAoe1xuICBtaW5XaWR0aDogMTZcbn0pKVxuXG5jb25zdCBDb2xsYXBzaWJsZUNlbGxXcmFwcGVyID0gc3R5bGVkKENlbGwpKCgpID0+ICh7XG4gIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICBib3JkZXJSaWdodDogMFxufSkpXG5cbnR5cGUgU3ludGhldGljRXZlbnQgPSBhbnlcbnR5cGUgQ29sbGFwc2libGVDZWxsUHJvcHMgPSB7XG4gIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGVcbiAgZXhwYW5kZWRSb3dzOiBBcnJheTxudW1iZXIgfCBzdHJpbmc+XG4gIGhhbmRsZUV4cGFuZFJvd3M6IChldmVudDogU3ludGhldGljRXZlbnQpID0+IHZvaWRcbiAgaWQ6IHN0cmluZyB8IG51bWJlclxuICBudW1iZXJPZkNoaWxkcmVuOiBudW1iZXJcbn1cbmNsYXNzIENvbGxhcHNpYmxlQ2VsbCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxDb2xsYXBzaWJsZUNlbGxQcm9wcz4ge1xuICBoYW5kbGVFeHBhbmRSb3dzID0gKGV2ZW50OiBTeW50aGV0aWNFdmVudCkgPT4ge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgY29uc3QgeyBpZCwgZXhwYW5kZWRSb3dzLCBoYW5kbGVFeHBhbmRSb3dzIH0gPSB0aGlzLnByb3BzXG4gICAgY29uc3QgZXhwYW5kZWQgPSBleHBhbmRlZFJvd3MuaW5jbHVkZXMoaWQpXG4gICAgY29uc3QgbmV3RXhwYW5kZWRSb3dzID0gZXhwYW5kZWRcbiAgICAgID8gZXhwYW5kZWRSb3dzLmZpbHRlcihyb3cgPT4gcm93ICE9PSBpZClcbiAgICAgIDogWy4uLmV4cGFuZGVkUm93cywgaWRdXG4gICAgcmV0dXJuIGhhbmRsZUV4cGFuZFJvd3MobmV3RXhwYW5kZWRSb3dzKVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHsgaWQsIGV4cGFuZGVkUm93cywgbnVtYmVyT2ZDaGlsZHJlbiB9ID0gdGhpcy5wcm9wc1xuICAgIGNvbnN0IGV4cGFuZGVkID0gZXhwYW5kZWRSb3dzLmluY2x1ZGVzKGlkKVxuICAgIHJldHVybiAoXG4gICAgICA8Q29sbGFwc2libGVDZWxsV3JhcHBlciBrZXk9e2lkfSBpc0ZpcnN0PlxuICAgICAgICA8Q29sbGFwc2libGVJY29uQnV0dG9uXG4gICAgICAgICAgb25DbGljaz17dGhpcy5oYW5kbGVFeHBhbmRSb3dzfVxuICAgICAgICAgIGljb25cbiAgICAgICAgICBib3JkZXJsZXNzXG4gICAgICAgICAgaWdub3JlRm9jdXNcbiAgICAgICAgPlxuICAgICAgICAgIDxDb2xsYXBzaWJsZUljb25cbiAgICAgICAgICAgIGV4cGFuZGVkPXtleHBhbmRlZCAmJiBudW1iZXJPZkNoaWxkcmVuID4gMH1cbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oJ2RhdGEtZ3JpZC1jb2xsYXBzaWJsZS1pY29uJywge1xuICAgICAgICAgICAgICAnZGF0YS1ncmlkLWNvbGxhcHNpYmxlLWljb24tZXhwYW5kZWQnOlxuICAgICAgICAgICAgICAgIGV4cGFuZGVkICYmIG51bWJlck9mQ2hpbGRyZW4gPiAwXG4gICAgICAgICAgICB9KX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L0NvbGxhcHNpYmxlSWNvbkJ1dHRvbj5cbiAgICAgICAgPFNwYWNlciAvPlxuICAgICAgICB7dGhpcy5wcm9wcy5jaGlsZHJlbn1cbiAgICAgICAge2AgKCR7bnVtYmVyT2ZDaGlsZHJlbn0pYH1cbiAgICAgIDwvQ29sbGFwc2libGVDZWxsV3JhcHBlcj5cbiAgICApXG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgQ29sbGFwc2libGVDZWxsXG4iXX0= */");
89
89
  var CollapsibleCellWrapper = ( /*#__PURE__*/0, _base["default"])(_elements.Cell, process.env.NODE_ENV === "production" ? {
90
90
  target: "e1prc87v0"
91
91
  } : {
@@ -96,7 +96,7 @@ var CollapsibleCellWrapper = ( /*#__PURE__*/0, _base["default"])(_elements.Cell,
96
96
  alignItems: 'center',
97
97
  borderRight: 0
98
98
  };
99
- }, process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9EYXRhR3JpZC9jb21wb25lbnRzL0NvbGxhcHNpYmxlQ2VsbC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBNEIrQiIsImZpbGUiOiIuLi8uLi8uLi8uLi9zcmMvRGF0YUdyaWQvY29tcG9uZW50cy9Db2xsYXBzaWJsZUNlbGwudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgdGQvaW5zdHJ1bWVudGF0aW9uICovXG4vLyB0aGlzIGxldmVsIG9mIGZpbmUgZ3JhaW5lZCBpbnN0cnVtZW50YXRpb24gaXMgbm90IG5lZWRlZFxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IEljb24gZnJvbSAnLi4vLi4vSWNvbidcbmltcG9ydCB7IFNwYWNlciwgQ2VsbCB9IGZyb20gJy4uL2VsZW1lbnRzJ1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnXG5pbXBvcnQgY24gZnJvbSAnY2xhc3NuYW1lcydcbmltcG9ydCB7IGdldE92ZXJyaWRlcywgT3ZlcnJpZGFibGUgfSBmcm9tICcuLi8uLi9UaGVtZVByb3ZpZGVyJ1xuaW1wb3J0IEJ1dHRvbiBmcm9tICcuLi8uLi9CdXR0b24nXG5cbnR5cGUgQ29sbGFwc2libGVJY29uUHJvcHMgPSB7XG4gIGV4cGFuZGVkPzogYm9vbGVhblxufVxuZXhwb3J0IGNvbnN0IENvbGxhcHNpYmxlSWNvbiA9IHN0eWxlZChJY29uLk1lZGl1bS5TeW1ib2xBcnJvd0Rvd24pPFxuICBDb2xsYXBzaWJsZUljb25Qcm9wc1xuPihcbiAgKHsgZXhwYW5kZWQsIHRoZW1lIH0pID0+ICh7XG4gICAgY29sb3I6IHRoZW1lLnBhbGV0dGUucHJpbWFyeVs1XSxcbiAgICB0cmFuc2l0aW9uOiAndHJhbnNmb3JtIDMwMG1zJyxcbiAgICB0cmFuc2Zvcm06IGV4cGFuZGVkID8gJ3JvdGF0ZSgwKScgOiAncm90YXRlKC05MGRlZyknXG4gIH0pLFxuICBnZXRPdmVycmlkZXMoT3ZlcnJpZGFibGUuRGF0YUdyaWQuQ29sbGFwc2libGVJY29uKVxuKVxuXG5jb25zdCBDb2xsYXBzaWJsZUljb25CdXR0b24gPSBzdHlsZWQoQnV0dG9uKSgoKSA9PiAoe1xuICBtaW5XaWR0aDogMTZcbn0pKVxuXG5jb25zdCBDb2xsYXBzaWJsZUNlbGxXcmFwcGVyID0gc3R5bGVkKENlbGwpKCgpID0+ICh7XG4gIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICBib3JkZXJSaWdodDogMFxufSkpXG5cbnR5cGUgU3ludGhldGljRXZlbnQgPSBhbnlcbnR5cGUgQ29sbGFwc2libGVDZWxsUHJvcHMgPSB7XG4gIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGVcbiAgZXhwYW5kZWRSb3dzOiBBcnJheTxudW1iZXIgfCBzdHJpbmc+XG4gIGhhbmRsZUV4cGFuZFJvd3M6IChldmVudDogU3ludGhldGljRXZlbnQpID0+IHZvaWRcbiAgaWQ6IHN0cmluZyB8IG51bWJlclxuICBudW1iZXJPZkNoaWxkcmVuOiBudW1iZXJcbn1cbmNsYXNzIENvbGxhcHNpYmxlQ2VsbCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxDb2xsYXBzaWJsZUNlbGxQcm9wcz4ge1xuICBoYW5kbGVFeHBhbmRSb3dzID0gKGV2ZW50OiBTeW50aGV0aWNFdmVudCkgPT4ge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgY29uc3QgeyBpZCwgZXhwYW5kZWRSb3dzLCBoYW5kbGVFeHBhbmRSb3dzIH0gPSB0aGlzLnByb3BzXG4gICAgY29uc3QgZXhwYW5kZWQgPSBleHBhbmRlZFJvd3MuaW5jbHVkZXMoaWQpXG4gICAgY29uc3QgbmV3RXhwYW5kZWRSb3dzID0gZXhwYW5kZWRcbiAgICAgID8gZXhwYW5kZWRSb3dzLmZpbHRlcihyb3cgPT4gcm93ICE9PSBpZClcbiAgICAgIDogWy4uLmV4cGFuZGVkUm93cywgaWRdXG4gICAgcmV0dXJuIGhhbmRsZUV4cGFuZFJvd3MobmV3RXhwYW5kZWRSb3dzKVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHsgaWQsIGV4cGFuZGVkUm93cywgbnVtYmVyT2ZDaGlsZHJlbiB9ID0gdGhpcy5wcm9wc1xuICAgIGNvbnN0IGV4cGFuZGVkID0gZXhwYW5kZWRSb3dzLmluY2x1ZGVzKGlkKVxuICAgIHJldHVybiAoXG4gICAgICA8Q29sbGFwc2libGVDZWxsV3JhcHBlciBrZXk9e2lkfT5cbiAgICAgICAgPENvbGxhcHNpYmxlSWNvbkJ1dHRvblxuICAgICAgICAgIG9uQ2xpY2s9e3RoaXMuaGFuZGxlRXhwYW5kUm93c31cbiAgICAgICAgICBpY29uXG4gICAgICAgICAgYm9yZGVybGVzc1xuICAgICAgICAgIGlnbm9yZUZvY3VzXG4gICAgICAgID5cbiAgICAgICAgICA8Q29sbGFwc2libGVJY29uXG4gICAgICAgICAgICBleHBhbmRlZD17ZXhwYW5kZWQgJiYgbnVtYmVyT2ZDaGlsZHJlbiA+IDB9XG4gICAgICAgICAgICBjbGFzc05hbWU9e2NuKCdkYXRhLWdyaWQtY29sbGFwc2libGUtaWNvbicsIHtcbiAgICAgICAgICAgICAgJ2RhdGEtZ3JpZC1jb2xsYXBzaWJsZS1pY29uLWV4cGFuZGVkJzpcbiAgICAgICAgICAgICAgICBleHBhbmRlZCAmJiBudW1iZXJPZkNoaWxkcmVuID4gMFxuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9Db2xsYXBzaWJsZUljb25CdXR0b24+XG4gICAgICAgIDxTcGFjZXIgLz5cbiAgICAgICAge3RoaXMucHJvcHMuY2hpbGRyZW59XG4gICAgICAgIHtgICgke251bWJlck9mQ2hpbGRyZW59KWB9XG4gICAgICA8L0NvbGxhcHNpYmxlQ2VsbFdyYXBwZXI+XG4gICAgKVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IENvbGxhcHNpYmxlQ2VsbFxuIl19 */");
99
+ }, process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9EYXRhR3JpZC9jb21wb25lbnRzL0NvbGxhcHNpYmxlQ2VsbC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBNEIrQiIsImZpbGUiOiIuLi8uLi8uLi8uLi9zcmMvRGF0YUdyaWQvY29tcG9uZW50cy9Db2xsYXBzaWJsZUNlbGwudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgdGQvaW5zdHJ1bWVudGF0aW9uICovXG4vLyB0aGlzIGxldmVsIG9mIGZpbmUgZ3JhaW5lZCBpbnN0cnVtZW50YXRpb24gaXMgbm90IG5lZWRlZFxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IEljb24gZnJvbSAnLi4vLi4vSWNvbidcbmltcG9ydCB7IFNwYWNlciwgQ2VsbCB9IGZyb20gJy4uL2VsZW1lbnRzJ1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnXG5pbXBvcnQgY24gZnJvbSAnY2xhc3NuYW1lcydcbmltcG9ydCB7IGdldE92ZXJyaWRlcywgT3ZlcnJpZGFibGUgfSBmcm9tICcuLi8uLi9UaGVtZVByb3ZpZGVyJ1xuaW1wb3J0IEJ1dHRvbiBmcm9tICcuLi8uLi9CdXR0b24nXG5cbnR5cGUgQ29sbGFwc2libGVJY29uUHJvcHMgPSB7XG4gIGV4cGFuZGVkPzogYm9vbGVhblxufVxuZXhwb3J0IGNvbnN0IENvbGxhcHNpYmxlSWNvbiA9IHN0eWxlZChJY29uLk1lZGl1bS5TeW1ib2xBcnJvd0Rvd24pPFxuICBDb2xsYXBzaWJsZUljb25Qcm9wc1xuPihcbiAgKHsgZXhwYW5kZWQsIHRoZW1lIH0pID0+ICh7XG4gICAgY29sb3I6IHRoZW1lLnBhbGV0dGUucHJpbWFyeVs1XSxcbiAgICB0cmFuc2l0aW9uOiAndHJhbnNmb3JtIDMwMG1zJyxcbiAgICB0cmFuc2Zvcm06IGV4cGFuZGVkID8gJ3JvdGF0ZSgwKScgOiAncm90YXRlKC05MGRlZyknXG4gIH0pLFxuICBnZXRPdmVycmlkZXMoT3ZlcnJpZGFibGUuRGF0YUdyaWQuQ29sbGFwc2libGVJY29uKVxuKVxuXG5jb25zdCBDb2xsYXBzaWJsZUljb25CdXR0b24gPSBzdHlsZWQoQnV0dG9uKSgoKSA9PiAoe1xuICBtaW5XaWR0aDogMTZcbn0pKVxuXG5jb25zdCBDb2xsYXBzaWJsZUNlbGxXcmFwcGVyID0gc3R5bGVkKENlbGwpKCgpID0+ICh7XG4gIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICBib3JkZXJSaWdodDogMFxufSkpXG5cbnR5cGUgU3ludGhldGljRXZlbnQgPSBhbnlcbnR5cGUgQ29sbGFwc2libGVDZWxsUHJvcHMgPSB7XG4gIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGVcbiAgZXhwYW5kZWRSb3dzOiBBcnJheTxudW1iZXIgfCBzdHJpbmc+XG4gIGhhbmRsZUV4cGFuZFJvd3M6IChldmVudDogU3ludGhldGljRXZlbnQpID0+IHZvaWRcbiAgaWQ6IHN0cmluZyB8IG51bWJlclxuICBudW1iZXJPZkNoaWxkcmVuOiBudW1iZXJcbn1cbmNsYXNzIENvbGxhcHNpYmxlQ2VsbCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxDb2xsYXBzaWJsZUNlbGxQcm9wcz4ge1xuICBoYW5kbGVFeHBhbmRSb3dzID0gKGV2ZW50OiBTeW50aGV0aWNFdmVudCkgPT4ge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgY29uc3QgeyBpZCwgZXhwYW5kZWRSb3dzLCBoYW5kbGVFeHBhbmRSb3dzIH0gPSB0aGlzLnByb3BzXG4gICAgY29uc3QgZXhwYW5kZWQgPSBleHBhbmRlZFJvd3MuaW5jbHVkZXMoaWQpXG4gICAgY29uc3QgbmV3RXhwYW5kZWRSb3dzID0gZXhwYW5kZWRcbiAgICAgID8gZXhwYW5kZWRSb3dzLmZpbHRlcihyb3cgPT4gcm93ICE9PSBpZClcbiAgICAgIDogWy4uLmV4cGFuZGVkUm93cywgaWRdXG4gICAgcmV0dXJuIGhhbmRsZUV4cGFuZFJvd3MobmV3RXhwYW5kZWRSb3dzKVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHsgaWQsIGV4cGFuZGVkUm93cywgbnVtYmVyT2ZDaGlsZHJlbiB9ID0gdGhpcy5wcm9wc1xuICAgIGNvbnN0IGV4cGFuZGVkID0gZXhwYW5kZWRSb3dzLmluY2x1ZGVzKGlkKVxuICAgIHJldHVybiAoXG4gICAgICA8Q29sbGFwc2libGVDZWxsV3JhcHBlciBrZXk9e2lkfSBpc0ZpcnN0PlxuICAgICAgICA8Q29sbGFwc2libGVJY29uQnV0dG9uXG4gICAgICAgICAgb25DbGljaz17dGhpcy5oYW5kbGVFeHBhbmRSb3dzfVxuICAgICAgICAgIGljb25cbiAgICAgICAgICBib3JkZXJsZXNzXG4gICAgICAgICAgaWdub3JlRm9jdXNcbiAgICAgICAgPlxuICAgICAgICAgIDxDb2xsYXBzaWJsZUljb25cbiAgICAgICAgICAgIGV4cGFuZGVkPXtleHBhbmRlZCAmJiBudW1iZXJPZkNoaWxkcmVuID4gMH1cbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oJ2RhdGEtZ3JpZC1jb2xsYXBzaWJsZS1pY29uJywge1xuICAgICAgICAgICAgICAnZGF0YS1ncmlkLWNvbGxhcHNpYmxlLWljb24tZXhwYW5kZWQnOlxuICAgICAgICAgICAgICAgIGV4cGFuZGVkICYmIG51bWJlck9mQ2hpbGRyZW4gPiAwXG4gICAgICAgICAgICB9KX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L0NvbGxhcHNpYmxlSWNvbkJ1dHRvbj5cbiAgICAgICAgPFNwYWNlciAvPlxuICAgICAgICB7dGhpcy5wcm9wcy5jaGlsZHJlbn1cbiAgICAgICAge2AgKCR7bnVtYmVyT2ZDaGlsZHJlbn0pYH1cbiAgICAgIDwvQ29sbGFwc2libGVDZWxsV3JhcHBlcj5cbiAgICApXG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgQ29sbGFwc2libGVDZWxsXG4iXX0= */");
100
100
 
101
101
  var CollapsibleCell = /*#__PURE__*/function (_React$Component) {
102
102
  _inherits(CollapsibleCell, _React$Component);
@@ -141,6 +141,7 @@ var CollapsibleCell = /*#__PURE__*/function (_React$Component) {
141
141
  return (0, _jsxRuntime.jsxs)(CollapsibleCellWrapper, {
142
142
  "data-gs-c": gsC("collapsibleiconbutton"),
143
143
  "data-gs": gs("src", "datagrid", "components", "collapsible-cell-wrapper"),
144
+ isFirst: true,
144
145
  children: [(0, _jsxRuntime.jsx)(CollapsibleIconButton, {
145
146
  "data-gs-c": gsC("collapsibleicon"),
146
147
  "data-gs": gs("src", "datagrid", "components", "collapsible-cell-wrapper", "collapsible-icon-button"),
@@ -1,11 +1,12 @@
1
1
  import React, { Component } from 'react';
2
2
  import { SortDirection } from 'react-virtualized';
3
- import type { filterRendererArguments, sortRendererArguments } from '../types';
3
+ import type { filterRendererArguments, sortRendererArguments, InternalResizeHandler } from '../types';
4
4
  import type { LocaleStrings } from '../constants';
5
5
  import type { Theme } from '@theme';
6
6
  import type { Interpolation } from '@emotion/react';
7
7
  declare type ColumnHeaderProps = {
8
8
  dataKey: string;
9
+ isFirst?: boolean;
9
10
  isLast?: boolean;
10
11
  label: string;
11
12
  showSortIndicator?: boolean;
@@ -18,6 +19,7 @@ declare type ColumnHeaderProps = {
18
19
  operator: any;
19
20
  }) => void;
20
21
  onPopoverOpen: (open: boolean) => void;
22
+ onResize?: InternalResizeHandler;
21
23
  filterValue: any;
22
24
  filterRenderer?: ((arg0: filterRendererArguments) => React.ReactNode) | false | null;
23
25
  sortRenderer?: ((arg0: sortRendererArguments) => React.ReactNode) | false | null;
@@ -17,6 +17,8 @@ var _elements = require("../elements");
17
17
 
18
18
  var _ColumnHeaderActions = _interopRequireDefault(require("./ColumnHeaderActions"));
19
19
 
20
+ var _ColumnHeaderDragHandle = _interopRequireDefault(require("./ColumnHeaderDragHandle"));
21
+
20
22
  var _utils = require("../utils");
21
23
 
22
24
  var _jsxRuntime = require("@emotion/react/jsx-runtime");
@@ -107,6 +109,7 @@ var ColumnHeader = /*#__PURE__*/function (_Component) {
107
109
 
108
110
  var _this$props = this.props,
109
111
  dataKey = _this$props.dataKey,
112
+ isFirst = _this$props.isFirst,
110
113
  isLast = _this$props.isLast,
111
114
  label = _this$props.label,
112
115
  _this$props$showSortI = _this$props.showSortIndicator,
@@ -116,6 +119,7 @@ var ColumnHeader = /*#__PURE__*/function (_Component) {
116
119
  sortDescIcon = _this$props.sortDescIcon,
117
120
  onSort = _this$props.onSort,
118
121
  onFilter = _this$props.onFilter,
122
+ onResize = _this$props.onResize,
119
123
  filterValue = _this$props.filterValue,
120
124
  filterRenderer = _this$props.filterRenderer,
121
125
  sortRenderer = _this$props.sortRenderer,
@@ -137,6 +141,7 @@ var ColumnHeader = /*#__PURE__*/function (_Component) {
137
141
  active: isActive,
138
142
  clickable: hasActions,
139
143
  "data-testid": "column-header-container",
144
+ isFirst: isFirst,
140
145
  isLast: isLast,
141
146
  onMouseEnter: function onMouseEnter() {
142
147
  return _this2.setState({
@@ -170,7 +175,10 @@ var ColumnHeader = /*#__PURE__*/function (_Component) {
170
175
  children: (0, _jsxRuntime.jsx)(_Icon["default"].Medium.ToolFilledFilter, {
171
176
  "data-gs": gs("src", "datagrid", "components", "column-header-container", "column-header-icon", "icon-medium-tool-filled-filter")
172
177
  })
173
- })]
178
+ }), onResize ? (0, _jsxRuntime.jsx)(_ColumnHeaderDragHandle["default"], {
179
+ "data-gs": gs("src", "datagrid", "components", "column-header-container", "column-header-drag-handle"),
180
+ onResize: onResize
181
+ }) : null]
174
182
  });
175
183
  var headerOverlay = (0, _jsxRuntime.jsx)(_elements.ColumnHeaderPopover, {
176
184
  "data-gs": gs("src", "datagrid", "components", "column-header-popover"),
@@ -0,0 +1,5 @@
1
+ import type { InternalResizeHandler } from '../types';
2
+ export default function ColumnHeaderDragHandle({ onResize }: {
3
+ onResize: InternalResizeHandler;
4
+ }): import("@emotion/react/jsx-runtime").JSX.Element;
5
+ //# sourceMappingURL=ColumnHeaderDragHandle.d.ts.map