@1money/component-ui 0.0.70 → 0.0.71

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.
Files changed (201) hide show
  1. package/es/business/Dialog/VerificationDialog/hooks/useOtpVerification.js +3 -2
  2. package/es/business/Dialog/VerificationDialog/hooks/useResendCountdown.js +2 -2
  3. package/es/business/Select/Network/NetworkSelect.js +2 -2
  4. package/es/components/Accordion/Accordion.js +3 -2
  5. package/es/components/Calendar/Calendar.js +3 -2
  6. package/es/components/Carousel/Carousel.js +3 -2
  7. package/es/components/Checkbox/BaseCheckbox.js +3 -2
  8. package/es/components/Checkbox/Checkbox.js +2 -2
  9. package/es/components/Checkbox/CheckboxGroup.js +3 -2
  10. package/es/components/CoachMark/CoachMark.js +3 -2
  11. package/es/components/Copy/Copy.js +2 -2
  12. package/es/components/Dialog/Dialog.js +2 -2
  13. package/es/components/Drawer/Drawer.js +2 -2
  14. package/es/components/Input/Amount/Amount.js +2 -2
  15. package/es/components/Input/Input/Input.js +3 -2
  16. package/es/components/Input/Mask/Mask.js +3 -2
  17. package/es/components/Input/OTP/OTP.js +3 -2
  18. package/es/components/Input/Password/Password.js +3 -2
  19. package/es/components/Input/Search/Search.js +3 -2
  20. package/es/components/Input/TextArea/TextArea.js +3 -2
  21. package/es/components/Input/Trade/Trade.js +2 -2
  22. package/es/components/Input/useAmountInput.js +4 -2
  23. package/es/components/Input/useSyncRef.js +2 -2
  24. package/es/components/Navigation/Nav.js +2 -2
  25. package/es/components/Navigation/Navigation.js +5 -2
  26. package/es/components/Pagination/Pagination.js +2 -2
  27. package/es/components/Pagination/usePagination.js +3 -2
  28. package/es/components/Popconfirm/Popconfirm.js +2 -2
  29. package/es/components/Portal/Portal.js +2 -2
  30. package/es/components/ProForm/ProForm.js +6 -3
  31. package/es/components/ProForm/ProFormGroup.js +2 -2
  32. package/es/components/ProForm/ProFormList.js +3 -2
  33. package/es/components/ProForm/Submitter.js +2 -2
  34. package/es/components/ProForm/core/constants.d.ts +6 -0
  35. package/es/components/ProForm/core/constants.js +7 -1
  36. package/es/components/ProForm/core/hooks/useForm.js +25 -195
  37. package/es/components/ProForm/core/hooks/useFormCore.js +14 -142
  38. package/es/components/ProForm/core/pathUtils.d.ts +6 -0
  39. package/es/components/ProForm/core/pathUtils.js +59 -0
  40. package/es/components/ProForm/core/runRules.d.ts +13 -0
  41. package/es/components/ProForm/core/runRules.js +186 -0
  42. package/es/components/ProForm/core/useFormItem.js +10 -28
  43. package/es/components/ProForm/fields/createProFormField.js +43 -57
  44. package/es/components/ProForm/hooks/useFieldRequest.js +7 -5
  45. package/es/components/ProForm/layouts/QueryFilter.js +3 -2
  46. package/es/components/ProForm/layouts/useOverlayForm.js +23 -21
  47. package/es/components/ProForm/utils.d.ts +2 -2
  48. package/es/components/ProForm/utils.js +5 -51
  49. package/es/components/ProTable/ProTable.js +3 -2
  50. package/es/components/ProTable/core/useAwaitableReload.js +3 -2
  51. package/es/components/ProTable/useFetchData.js +4 -2
  52. package/es/components/Radio/Radio.js +3 -2
  53. package/es/components/Radio/RadioGroup.js +3 -2
  54. package/es/components/ResizeObserver/useResizeObserver.js +2 -2
  55. package/es/components/Segment/Segment.js +4 -2
  56. package/es/components/Select/Select.js +3 -2
  57. package/es/components/Select/SelectCustom.js +2 -2
  58. package/es/components/Select/useSelectShell.js +3 -2
  59. package/es/components/Slider/Slider.js +3 -2
  60. package/es/components/Switch/Switch.js +3 -2
  61. package/es/components/Table/Table.js +14 -28
  62. package/es/components/Table/VirtualTable.js +18 -28
  63. package/es/components/Table/core/columnUtil.d.ts +9 -0
  64. package/es/components/Table/core/columnUtil.js +34 -0
  65. package/es/components/Table/core/useTableColumns.d.ts +4 -13
  66. package/es/components/Table/core/useTableColumns.js +55 -24
  67. package/es/components/Table/core/useTableDataPipeline.d.ts +11 -16
  68. package/es/components/Table/core/useTableDataPipeline.js +66 -73
  69. package/es/components/Table/core/useTableExpand.js +3 -2
  70. package/es/components/Table/core/useTableSelection.js +7 -4
  71. package/es/components/Table/core/useTableSetup.js +4 -2
  72. package/es/components/Table/features/ExpandTrigger.d.ts +9 -3
  73. package/es/components/Table/features/ExpandTrigger.js +14 -8
  74. package/es/components/Table/features/FilterTrigger.js +21 -17
  75. package/es/components/Table/features/SelectionColumn.d.ts +11 -6
  76. package/es/components/Table/features/SelectionColumn.js +12 -5
  77. package/es/components/Table/features/SortTrigger.d.ts +4 -2
  78. package/es/components/Table/features/SortTrigger.js +8 -3
  79. package/es/components/Table/internal/kernel/Body/MeasureCell.js +2 -2
  80. package/es/components/Table/internal/kernel/Cell/index.js +2 -2
  81. package/es/components/Table/internal/kernel/Table.js +3 -3
  82. package/es/components/Table/internal/kernel/VirtualTable/index.js +2 -2
  83. package/es/components/Table/internal/kernel/hooks/useRowInfo.js +2 -2
  84. package/es/components/Table/internal/kernel/selector-context/context.js +3 -3
  85. package/es/components/Table/renderers/HeaderCell.js +3 -2
  86. package/es/components/Table/renderers/TableShell.d.ts +13 -0
  87. package/es/components/Table/renderers/TableShell.js +25 -0
  88. package/es/components/Table/style/Table.css +3 -0
  89. package/es/components/Tabs/Tabs.js +4 -2
  90. package/es/components/Tooltip/Tooltip.js +3 -2
  91. package/es/components/Tour/Tour.js +3 -2
  92. package/es/components/Trigger/Trigger.js +3 -2
  93. package/es/components/Typography/Typography.js +2 -2
  94. package/es/components/Typography/useTypographyEnhancements.js +3 -2
  95. package/es/components/Upload/Upload.js +2 -2
  96. package/es/components/Upload/UploadFileBar.js +2 -2
  97. package/es/components/VirtualList/VirtualList.js +3 -2
  98. package/es/components/VirtualList/hooks/useMobileTouchMove.js +2 -2
  99. package/es/components/VirtualList/hooks/useScrollTo.js +2 -2
  100. package/es/index.css +1 -1
  101. package/lib/business/Dialog/VerificationDialog/hooks/useOtpVerification.js +9 -8
  102. package/lib/business/Dialog/VerificationDialog/hooks/useResendCountdown.js +3 -3
  103. package/lib/business/Select/Network/NetworkSelect.js +3 -3
  104. package/lib/components/Accordion/Accordion.js +5 -4
  105. package/lib/components/Calendar/Calendar.js +6 -5
  106. package/lib/components/Carousel/Carousel.js +5 -4
  107. package/lib/components/Checkbox/BaseCheckbox.js +5 -4
  108. package/lib/components/Checkbox/Checkbox.js +3 -3
  109. package/lib/components/Checkbox/CheckboxGroup.js +7 -6
  110. package/lib/components/CoachMark/CoachMark.js +7 -6
  111. package/lib/components/Copy/Copy.js +3 -3
  112. package/lib/components/Dialog/Dialog.js +6 -6
  113. package/lib/components/Drawer/Drawer.js +10 -10
  114. package/lib/components/Input/Amount/Amount.js +6 -5
  115. package/lib/components/Input/Input/Input.js +7 -6
  116. package/lib/components/Input/Mask/Mask.js +9 -8
  117. package/lib/components/Input/OTP/OTP.js +9 -8
  118. package/lib/components/Input/Password/Password.js +6 -5
  119. package/lib/components/Input/Search/Search.js +8 -7
  120. package/lib/components/Input/TextArea/TextArea.js +5 -4
  121. package/lib/components/Input/Trade/Trade.js +5 -4
  122. package/lib/components/Input/useAmountInput.js +13 -11
  123. package/lib/components/Input/useSyncRef.js +4 -3
  124. package/lib/components/Navigation/Nav.js +3 -3
  125. package/lib/components/Navigation/Navigation.js +10 -7
  126. package/lib/components/Pagination/Pagination.js +4 -3
  127. package/lib/components/Pagination/usePagination.js +7 -6
  128. package/lib/components/Popconfirm/Popconfirm.js +3 -3
  129. package/lib/components/Portal/Portal.js +4 -4
  130. package/lib/components/ProForm/ProForm.js +14 -11
  131. package/lib/components/ProForm/ProFormGroup.js +3 -3
  132. package/lib/components/ProForm/ProFormList.js +10 -9
  133. package/lib/components/ProForm/Submitter.js +4 -4
  134. package/lib/components/ProForm/core/constants.d.ts +6 -0
  135. package/lib/components/ProForm/core/constants.js +8 -2
  136. package/lib/components/ProForm/core/hooks/useForm.js +36 -206
  137. package/lib/components/ProForm/core/hooks/useFormCore.js +32 -160
  138. package/lib/components/ProForm/core/pathUtils.d.ts +6 -0
  139. package/lib/components/ProForm/core/pathUtils.js +68 -0
  140. package/lib/components/ProForm/core/runRules.d.ts +13 -0
  141. package/lib/components/ProForm/core/runRules.js +194 -0
  142. package/lib/components/ProForm/core/useFormItem.js +15 -33
  143. package/lib/components/ProForm/fields/createProFormField.js +42 -56
  144. package/lib/components/ProForm/hooks/useFieldRequest.js +9 -7
  145. package/lib/components/ProForm/layouts/QueryFilter.js +8 -7
  146. package/lib/components/ProForm/layouts/useOverlayForm.js +27 -27
  147. package/lib/components/ProForm/utils.d.ts +2 -2
  148. package/lib/components/ProForm/utils.js +20 -55
  149. package/lib/components/ProTable/ProTable.js +10 -9
  150. package/lib/components/ProTable/core/useAwaitableReload.js +6 -5
  151. package/lib/components/ProTable/useFetchData.js +15 -13
  152. package/lib/components/Radio/Radio.js +6 -5
  153. package/lib/components/Radio/RadioGroup.js +5 -4
  154. package/lib/components/ResizeObserver/useResizeObserver.js +4 -3
  155. package/lib/components/Segment/Segment.js +7 -5
  156. package/lib/components/Select/Select.js +23 -22
  157. package/lib/components/Select/SelectCustom.js +8 -8
  158. package/lib/components/Select/useSelectShell.js +5 -4
  159. package/lib/components/Slider/Slider.js +6 -5
  160. package/lib/components/Switch/Switch.js +5 -4
  161. package/lib/components/Table/Table.js +13 -27
  162. package/lib/components/Table/VirtualTable.js +17 -27
  163. package/lib/components/Table/core/columnUtil.d.ts +9 -0
  164. package/lib/components/Table/core/columnUtil.js +42 -0
  165. package/lib/components/Table/core/useTableColumns.d.ts +4 -13
  166. package/lib/components/Table/core/useTableColumns.js +57 -26
  167. package/lib/components/Table/core/useTableDataPipeline.d.ts +11 -16
  168. package/lib/components/Table/core/useTableDataPipeline.js +73 -80
  169. package/lib/components/Table/core/useTableExpand.js +6 -5
  170. package/lib/components/Table/core/useTableSelection.js +13 -10
  171. package/lib/components/Table/core/useTableSetup.js +8 -5
  172. package/lib/components/Table/features/ExpandTrigger.d.ts +9 -3
  173. package/lib/components/Table/features/ExpandTrigger.js +14 -8
  174. package/lib/components/Table/features/FilterTrigger.js +21 -17
  175. package/lib/components/Table/features/SelectionColumn.d.ts +11 -6
  176. package/lib/components/Table/features/SelectionColumn.js +12 -5
  177. package/lib/components/Table/features/SortTrigger.d.ts +4 -2
  178. package/lib/components/Table/features/SortTrigger.js +8 -3
  179. package/lib/components/Table/internal/kernel/Body/MeasureCell.js +3 -3
  180. package/lib/components/Table/internal/kernel/Cell/index.js +4 -4
  181. package/lib/components/Table/internal/kernel/Table.js +7 -6
  182. package/lib/components/Table/internal/kernel/VirtualTable/index.js +4 -4
  183. package/lib/components/Table/internal/kernel/hooks/useRowInfo.js +3 -3
  184. package/lib/components/Table/internal/kernel/selector-context/context.js +6 -5
  185. package/lib/components/Table/renderers/HeaderCell.js +3 -2
  186. package/lib/components/Table/renderers/TableShell.d.ts +13 -0
  187. package/lib/components/Table/renderers/TableShell.js +31 -0
  188. package/lib/components/Table/style/Table.css +3 -0
  189. package/lib/components/Tabs/Tabs.js +7 -5
  190. package/lib/components/Tooltip/Tooltip.js +5 -4
  191. package/lib/components/Tour/Tour.js +7 -6
  192. package/lib/components/Trigger/Trigger.js +5 -4
  193. package/lib/components/Typography/Typography.js +5 -4
  194. package/lib/components/Typography/useTypographyEnhancements.js +8 -7
  195. package/lib/components/Upload/Upload.js +5 -4
  196. package/lib/components/Upload/UploadFileBar.js +4 -3
  197. package/lib/components/VirtualList/VirtualList.js +8 -7
  198. package/lib/components/VirtualList/hooks/useMobileTouchMove.js +4 -3
  199. package/lib/components/VirtualList/hooks/useScrollTo.js +3 -3
  200. package/lib/index.css +1 -1
  201. package/package.json +2 -2
@@ -21,6 +21,13 @@ export interface ApplyTablePipelineInput<T extends TableRecord> extends Omit<Tab
21
21
  /** Filter state keyed by column key. Defaults to an empty filter map. */
22
22
  filters?: TableFilterState;
23
23
  }
24
+ /** A React-style state setter input: the next value, or a function of the current. */
25
+ export type Updater<S> = S | ((current: S) => S);
26
+ /** Resolved pagination position (page index + size). */
27
+ export interface TablePaginationValue {
28
+ current: number;
29
+ pageSize: number;
30
+ }
24
31
  export interface UseTableDataPipelineInput<T extends TableRecord> {
25
32
  columns: TableColumnType<T>[];
26
33
  dataSource: T[];
@@ -33,22 +40,10 @@ export interface UseTableDataPipelineResult<T extends TableRecord> {
33
40
  sorter: TableSorterState;
34
41
  sorterStates: TableSorterFieldState[];
35
42
  filters: TableFilterState;
36
- pagination: false | {
37
- current: number;
38
- pageSize: number;
39
- };
40
- setSorter: (updater: TableSorterState | ((current: TableSorterState) => TableSorterState)) => void;
41
- setFilters: (updater: TableFilterState | ((current: TableFilterState) => TableFilterState)) => void;
42
- setPagination: (updater: {
43
- current: number;
44
- pageSize: number;
45
- } | ((current: {
46
- current: number;
47
- pageSize: number;
48
- }) => {
49
- current: number;
50
- pageSize: number;
51
- })) => void;
43
+ pagination: false | TablePaginationValue;
44
+ setSorter: (updater: Updater<TableSorterState>) => void;
45
+ setFilters: (updater: Updater<TableFilterState>) => void;
46
+ setPagination: (updater: Updater<TablePaginationValue>) => void;
52
47
  }
53
48
  export declare const applyTablePipeline: <T extends TableRecord>({ columns, dataSource, sorter, filters, pagination, }: ApplyTablePipelineInput<T>) => {
54
49
  currentDataSource: T[];
@@ -1,34 +1,13 @@
1
1
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
- import _typeof from "@babel/runtime/helpers/esm/typeof";
3
2
  import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
3
+ import _typeof from "@babel/runtime/helpers/esm/typeof";
4
4
  function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
5
5
  function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
6
6
  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
7
7
  import { useMemo, useRef } from 'react';
8
- import { useControlledState, useMemoizedFn } from '@1money/hooks';
9
- function isColumnGroup(col) {
10
- return 'children' in col && Array.isArray(col.children);
11
- }
12
- function flattenColumns(columns) {
13
- var result = [];
14
- var _iterator = _createForOfIteratorHelper(columns),
15
- _step;
16
- try {
17
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
18
- var col = _step.value;
19
- if (isColumnGroup(col)) {
20
- result.push.apply(result, _toConsumableArray(flattenColumns(col.children)));
21
- } else {
22
- result.push(col);
23
- }
24
- }
25
- } catch (err) {
26
- _iterator.e(err);
27
- } finally {
28
- _iterator.f();
29
- }
30
- return result;
31
- }
8
+ import useControlledState from '@1money/hooks/useControlledState';
9
+ import useMemoizedFn from '@1money/hooks/useMemoizedFn';
10
+ import { flattenColumns } from './columnUtil';
32
11
  function getSortFunction(sorter) {
33
12
  if (typeof sorter === 'function') return sorter;
34
13
  if (sorter && _typeof(sorter) === 'object' && 'compare' in sorter) return sorter.compare;
@@ -65,22 +44,22 @@ function applySortToData(data, columns, sorterStates) {
65
44
  return bp - ap;
66
45
  });
67
46
  sorted.sort(function (record1, record2) {
68
- var _iterator2 = _createForOfIteratorHelper(runningSorters),
69
- _step2;
47
+ var _iterator = _createForOfIteratorHelper(runningSorters),
48
+ _step;
70
49
  try {
71
- for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
72
- var _step2$value = _step2.value,
73
- compareFn = _step2$value.compareFn,
74
- order = _step2$value.order;
50
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
51
+ var _step$value = _step.value,
52
+ compareFn = _step$value.compareFn,
53
+ order = _step$value.order;
75
54
  var result = compareFn(record1, record2);
76
55
  if (result !== 0) {
77
56
  return order === 'ascend' ? result : -result;
78
57
  }
79
58
  }
80
59
  } catch (err) {
81
- _iterator2.e(err);
60
+ _iterator.e(err);
82
61
  } finally {
83
- _iterator2.f();
62
+ _iterator.f();
84
63
  }
85
64
  return 0;
86
65
  });
@@ -139,15 +118,14 @@ export var applyTablePipeline = function applyTablePipeline(_ref2) {
139
118
  total: sorted.length
140
119
  };
141
120
  };
142
- function collectSorterStates(columns) {
121
+ function collectSorterStates(leaves) {
143
122
  var _a;
144
- var leaves = flattenColumns(columns);
145
123
  var states = [];
146
- var _iterator3 = _createForOfIteratorHelper(leaves),
147
- _step3;
124
+ var _iterator2 = _createForOfIteratorHelper(leaves),
125
+ _step2;
148
126
  try {
149
- for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
150
- var col = _step3.value;
127
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
128
+ var col = _step2.value;
151
129
  var order = (_a = col.sortOrder) !== null && _a !== void 0 ? _a : col.defaultSortOrder;
152
130
  if (col.key != null && order) {
153
131
  states.push({
@@ -157,23 +135,22 @@ function collectSorterStates(columns) {
157
135
  }
158
136
  }
159
137
  } catch (err) {
160
- _iterator3.e(err);
138
+ _iterator2.e(err);
161
139
  } finally {
162
- _iterator3.f();
140
+ _iterator2.f();
163
141
  }
164
142
  return states;
165
143
  }
166
- var getInitialSorter = function getInitialSorter(columns) {
167
- var states = collectSorterStates(columns);
144
+ var getInitialSorter = function getInitialSorter(leaves) {
145
+ var states = collectSorterStates(leaves);
168
146
  if (states.length === 0) return {};
169
147
  return {
170
148
  columnKey: states[0].columnKey,
171
149
  order: states[0].order
172
150
  };
173
151
  };
174
- var getControlledSorter = function getControlledSorter(columns) {
152
+ var getControlledSorter = function getControlledSorter(leaves) {
175
153
  var _a;
176
- var leaves = flattenColumns(columns);
177
154
  var controlledColumn = leaves.find(function (column) {
178
155
  return column.sortOrder !== undefined;
179
156
  });
@@ -185,15 +162,14 @@ var getControlledSorter = function getControlledSorter(columns) {
185
162
  order: (_a = controlledColumn.sortOrder) !== null && _a !== void 0 ? _a : null
186
163
  };
187
164
  };
188
- var getInitialFilters = function getInitialFilters(columns) {
165
+ var getInitialFilters = function getInitialFilters(leaves) {
189
166
  var _a;
190
- var leaves = flattenColumns(columns);
191
167
  var state = {};
192
- var _iterator4 = _createForOfIteratorHelper(leaves),
193
- _step4;
168
+ var _iterator3 = _createForOfIteratorHelper(leaves),
169
+ _step3;
194
170
  try {
195
- for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
196
- var col = _step4.value;
171
+ for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
172
+ var col = _step3.value;
197
173
  if (col.key == null) continue;
198
174
  var initial = (_a = col.defaultFilteredValue) !== null && _a !== void 0 ? _a : col.filteredValue;
199
175
  if (initial !== undefined) {
@@ -201,21 +177,20 @@ var getInitialFilters = function getInitialFilters(columns) {
201
177
  }
202
178
  }
203
179
  } catch (err) {
204
- _iterator4.e(err);
180
+ _iterator3.e(err);
205
181
  } finally {
206
- _iterator4.f();
182
+ _iterator3.f();
207
183
  }
208
184
  return state;
209
185
  };
210
- var getControlledFilters = function getControlledFilters(columns) {
211
- var leaves = flattenColumns(columns);
186
+ var getControlledFilters = function getControlledFilters(leaves) {
212
187
  var hasControlled = false;
213
188
  var state = {};
214
- var _iterator5 = _createForOfIteratorHelper(leaves),
215
- _step5;
189
+ var _iterator4 = _createForOfIteratorHelper(leaves),
190
+ _step4;
216
191
  try {
217
- for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
218
- var col = _step5.value;
192
+ for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
193
+ var col = _step4.value;
219
194
  if (col.key == null) continue;
220
195
  if (col.filteredValue !== undefined) {
221
196
  hasControlled = true;
@@ -223,9 +198,9 @@ var getControlledFilters = function getControlledFilters(columns) {
223
198
  }
224
199
  }
225
200
  } catch (err) {
226
- _iterator5.e(err);
201
+ _iterator4.e(err);
227
202
  } finally {
228
- _iterator5.f();
203
+ _iterator4.f();
229
204
  }
230
205
  return hasControlled ? state : undefined;
231
206
  };
@@ -274,19 +249,32 @@ export var useTableDataPipeline = function useTableDataPipeline(_ref3) {
274
249
  pagination = _ref3.pagination,
275
250
  onChange = _ref3.onChange;
276
251
  var _a, _b, _c, _d;
252
+ // Flatten once per `columns` change and share the leaf list across every
253
+ // derive step below — they used to each re-flatten on every render.
254
+ var leaves = useMemo(function () {
255
+ return flattenColumns(columns);
256
+ }, [columns]);
277
257
  // Sorter / filters are "derived controlled" — the controlled value is built
278
258
  // by scanning column props (`sortOrder` / `filteredValue`), so `getControlled*`
279
259
  // returns a fresh object every render even when the underlying inputs are
280
260
  // unchanged. Without stabilisation, `useControlledState`'s internal
281
261
  // `useLayoutEffect([value])` would re-sync on every render → infinite loop.
282
262
  // Pin the reference via a shallow-equal ref.
283
- var controlledSorter = useStableRef(getControlledSorter(columns), sorterEqual);
284
- var controlledFilters = useStableRef(getControlledFilters(columns), filtersEqual);
285
- var _useControlledState = useControlledState(getInitialSorter(columns), controlledSorter),
263
+ var controlledSorter = useStableRef(getControlledSorter(leaves), sorterEqual);
264
+ var controlledFilters = useStableRef(getControlledFilters(leaves), filtersEqual);
265
+ // Initial sorter / filters only matter on mount, so memoise them on `leaves`
266
+ // instead of recomputing (and re-flattening) every render.
267
+ var initialSorter = useMemo(function () {
268
+ return getInitialSorter(leaves);
269
+ }, [leaves]);
270
+ var initialFilters = useMemo(function () {
271
+ return getInitialFilters(leaves);
272
+ }, [leaves]);
273
+ var _useControlledState = useControlledState(initialSorter, controlledSorter),
286
274
  _useControlledState2 = _slicedToArray(_useControlledState, 2),
287
275
  sorter = _useControlledState2[0],
288
276
  setSorter = _useControlledState2[1];
289
- var _useControlledState3 = useControlledState(getInitialFilters(columns), controlledFilters),
277
+ var _useControlledState3 = useControlledState(initialFilters, controlledFilters),
290
278
  _useControlledState4 = _slicedToArray(_useControlledState3, 2),
291
279
  filters = _useControlledState4[0],
292
280
  setFilters = _useControlledState4[1];
@@ -298,10 +286,16 @@ export var useTableDataPipeline = function useTableDataPipeline(_ref3) {
298
286
  _useControlledState8 = _slicedToArray(_useControlledState7, 2),
299
287
  pageSize = _useControlledState8[0],
300
288
  setPageSize = _useControlledState8[1];
301
- var mergedPagination = pagination === false ? false : {
302
- current: current,
303
- pageSize: pageSize
304
- };
289
+ // Memoise on primitives a fresh `{ current, pageSize }` literal every render
290
+ // would defeat the `result` memo below and re-run filter + sort + slice on
291
+ // every unrelated re-render.
292
+ var paginationEnabled = pagination !== false;
293
+ var mergedPagination = useMemo(function () {
294
+ return paginationEnabled ? {
295
+ current: current,
296
+ pageSize: pageSize
297
+ } : false;
298
+ }, [paginationEnabled, current, pageSize]);
305
299
  var sorterStates = useMemo(function () {
306
300
  // Start with the primary user-toggled sorter
307
301
  var primary = sorter.columnKey != null && sorter.order ? [{
@@ -309,8 +303,7 @@ export var useTableDataPipeline = function useTableDataPipeline(_ref3) {
309
303
  order: sorter.order
310
304
  }] : [];
311
305
  // Collect any other columns that have a controlled sortOrder (for multi-sort)
312
- var leafColumns = flattenColumns(columns);
313
- var additional = leafColumns.filter(function (col) {
306
+ var additional = leaves.filter(function (col) {
314
307
  return col.key != null && col.sortOrder && col.key !== sorter.columnKey;
315
308
  }).map(function (col) {
316
309
  return {
@@ -319,7 +312,7 @@ export var useTableDataPipeline = function useTableDataPipeline(_ref3) {
319
312
  };
320
313
  });
321
314
  return [].concat(primary, _toConsumableArray(additional));
322
- }, [sorter, columns]);
315
+ }, [sorter, leaves]);
323
316
  var result = useMemo(function () {
324
317
  return applyTablePipeline({
325
318
  columns: columns,
@@ -425,4 +418,4 @@ export var useTableDataPipeline = function useTableDataPipeline(_ref3) {
425
418
  setPagination: wrappedSetPagination
426
419
  });
427
420
  };
428
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvVGFibGUvc3JjL2NvbXBvbmVudHMvVGFibGUvY29yZS91c2VUYWJsZURhdGFQaXBlbGluZS50cyIsImNvbXBvbmVudHMvVGFibGUvY29yZS91c2VUYWJsZURhdGFQaXBlbGluZS5qcyJdLCJuYW1lcyI6WyJ1c2VNZW1vIiwidXNlUmVmIiwidXNlQ29udHJvbGxlZFN0YXRlIiwidXNlTWVtb2l6ZWRGbiIsImlzQ29sdW1uR3JvdXAiLCJjb2wiLCJBcnJheSIsImlzQXJyYXkiLCJjaGlsZHJlbiIsImZsYXR0ZW5Db2x1bW5zIiwiY29sdW1ucyIsInJlc3VsdCIsIl9pdGVyYXRvciIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiX3N0ZXAiLCJzIiwibiIsImRvbmUiLCJ2YWx1ZSIsInB1c2giLCJhcHBseSIsIl90b0NvbnN1bWFibGVBcnJheSIsImVyciIsImUiLCJmIiwiZ2V0U29ydEZ1bmN0aW9uIiwic29ydGVyIiwiX3R5cGVvZiIsImNvbXBhcmUiLCJnZXRNdWx0aXBsZVByaW9yaXR5IiwiY29sdW1uIiwibXVsdGlwbGUiLCJhcHBseVNvcnRUb0RhdGEiLCJkYXRhIiwic29ydGVyU3RhdGVzIiwibGVuZ3RoIiwic29ydGVkIiwicnVubmluZ1NvcnRlcnMiLCJtYXAiLCJzdGF0ZSIsImZpbmQiLCJrZXkiLCJjb2x1bW5LZXkiLCJjb21wYXJlRm4iLCJwcmlvcml0eSIsIm9yZGVyIiwiZmlsdGVyIiwiQm9vbGVhbiIsInNvcnQiLCJhIiwiYiIsImFwIiwiYnAiLCJyZWNvcmQxIiwicmVjb3JkMiIsIl9pdGVyYXRvcjIiLCJfc3RlcDIiLCJfc3RlcDIkdmFsdWUiLCJhcHBseUZpbHRlcnNUb0RhdGEiLCJmaWx0ZXJzIiwiYWN0aXZlRmlsdGVycyIsInNlbGVjdGVkIiwiU3RyaW5nIiwib25GaWx0ZXIiLCJyZWNvcmQiLCJldmVyeSIsIl9yZWYiLCJzb21lIiwiYXBwbHlUYWJsZVBpcGVsaW5lIiwiX3JlZjIiLCJkYXRhU291cmNlIiwiX3JlZjIkZmlsdGVycyIsInBhZ2luYXRpb24iLCJsZWFmQ29sdW1ucyIsImZpbHRlcmVkIiwiY3VycmVudERhdGFTb3VyY2UiLCJ0b3RhbCIsInN0YXJ0IiwiY3VycmVudCIsInBhZ2VTaXplIiwiZW5kIiwic2xpY2UiLCJjb2xsZWN0U29ydGVyU3RhdGVzIiwiX2EiLCJsZWF2ZXMiLCJzdGF0ZXMiLCJfaXRlcmF0b3IzIiwiX3N0ZXAzIiwic29ydE9yZGVyIiwiZGVmYXVsdFNvcnRPcmRlciIsImdldEluaXRpYWxTb3J0ZXIiLCJnZXRDb250cm9sbGVkU29ydGVyIiwiY29udHJvbGxlZENvbHVtbiIsInVuZGVmaW5lZCIsImdldEluaXRpYWxGaWx0ZXJzIiwiX2l0ZXJhdG9yNCIsIl9zdGVwNCIsImluaXRpYWwiLCJkZWZhdWx0RmlsdGVyZWRWYWx1ZSIsImZpbHRlcmVkVmFsdWUiLCJnZXRDb250cm9sbGVkRmlsdGVycyIsImhhc0NvbnRyb2xsZWQiLCJfaXRlcmF0b3I1IiwiX3N0ZXA1IiwidXNlU3RhYmxlUmVmIiwiZXF1YWwiLCJyZWYiLCJzb3J0ZXJFcXVhbCIsImZpbHRlclZhbHVlRXF1YWwiLCJpIiwiZmlsdGVyc0VxdWFsIiwia2V5c0EiLCJPYmplY3QiLCJrZXlzIiwia2V5c0IiLCJfaSIsIl9rZXlzQSIsInVzZVRhYmxlRGF0YVBpcGVsaW5lIiwiX3JlZjMiLCJvbkNoYW5nZSIsIl9iIiwiX2MiLCJfZCIsImNvbnRyb2xsZWRTb3J0ZXIiLCJjb250cm9sbGVkRmlsdGVycyIsIl91c2VDb250cm9sbGVkU3RhdGUiLCJfdXNlQ29udHJvbGxlZFN0YXRlMiIsIl9zbGljZWRUb0FycmF5Iiwic2V0U29ydGVyIiwiX3VzZUNvbnRyb2xsZWRTdGF0ZTMiLCJfdXNlQ29udHJvbGxlZFN0YXRlNCIsInNldEZpbHRlcnMiLCJfdXNlQ29udHJvbGxlZFN0YXRlNSIsImRlZmF1bHRDdXJyZW50IiwiX3VzZUNvbnRyb2xsZWRTdGF0ZTYiLCJzZXRDdXJyZW50IiwiX3VzZUNvbnRyb2xsZWRTdGF0ZTciLCJkZWZhdWx0UGFnZVNpemUiLCJfdXNlQ29udHJvbGxlZFN0YXRlOCIsInNldFBhZ2VTaXplIiwibWVyZ2VkUGFnaW5hdGlvbiIsInByaW1hcnkiLCJhZGRpdGlvbmFsIiwiY29uY2F0IiwiZW1pdENoYW5nZSIsIm5leHREYXRhU291cmNlIiwiYWN0aW9uIiwibmV4dFN0YXRlIiwid3JhcHBlZFNldFNvcnRlciIsInVwZGF0ZXIiLCJuZXh0U29ydGVyIiwicmVzZXRQYWdpbmF0aW9uIiwibmV4dFJlc3VsdCIsIndyYXBwZWRTZXRGaWx0ZXJzIiwibmV4dEZpbHRlcnMiLCJ3cmFwcGVkU2V0UGFnaW5hdGlvbiIsImN1cnJlbnRWYWx1ZSIsIm5leHRWYWx1ZSIsImFzc2lnbiIsInNldFBhZ2luYXRpb24iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLFNBQVNBLE9BQU8sRUFBRUMsTUFBTSxRQUFRLE9BQU87QUFDdkMsU0FBU0Msa0JBQWtCLEVBQUVDLGFBQWEsUUFBUSxlQUFlO0FBZWpFLFNBQVNDLGFBQWFBLENBQ3BCQyxHQUF1QixFQUFBO0VBRXZCLE9BQU8sVUFBVSxJQUFJQSxHQUFHLElBQUlDLEtBQUssQ0FBQ0MsT0FBTyxDQUFFRixHQUEyQixDQUFDRyxRQUFRLENBQUM7QUFDbEY7QUFFQSxTQUFTQyxjQUFjQSxDQUNyQkMsT0FBNkIsRUFBQTtFQUU3QixJQUFNQyxNQUFNLEdBQXFCLEVBQUU7RUFBQyxJQUFBQyxTQUFBLEdBQUFDLDBCQUFBLENBQ2xCSCxPQUFPO0lBQUFJLEtBQUE7RUFBQTtJQUF6QixLQUFBRixTQUFBLENBQUFHLENBQUEsTUFBQUQsS0FBQSxHQUFBRixTQUFBLENBQUFJLENBQUEsSUFBQUMsSUFBQSxHQUEyQjtNQUFBLElBQWhCWixHQUFHLEdBQUFTLEtBQUEsQ0FBQUksS0FBQTtNQUNaLElBQUlkLGFBQWEsQ0FBQ0MsR0FBRyxDQUFDLEVBQUU7UUFDdEJNLE1BQU0sQ0FBQ1EsSUFBSSxDQUFBQyxLQUFBLENBQVhULE1BQU0sRUFBQVUsa0JBQUEsQ0FBU1osY0FBYyxD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QUNzQixTQUFTLENBQUMvRSxPQUFPLENBQUM7SUFDN0I2RCxXQUFXLENBQUNrQixTQUFTLENBQUM5RSxRQUFRLENBQUM7SUFFL0IsSUFBSXdDLFFBQVEsRUFBRTtNQUNaLElBQU1pQyxVQUFVLEdBQUdwRixrQkFBa0IsQ0FBQztRQUNwQzFELE9BQU8sRUFBUEEsT0FBTztRQUNQNEQsVUFBVSxFQUFWQSxVQUFVO1FBQ1Y1QyxNQUFNLEVBQU5BLE1BQU07UUFDTmlDLE9BQU8sRUFBUEEsT0FBTztRQUNQYSxVQUFVLEVBQUVxRjtNQ3hLVixDRHlLSCxDQUFDO01BQ0ZiLFVBQVUsQ0FBQ1EsVUFBVSxDQUFDN0UsaUJBQWlCLEVBQUUsVUFBVSxFQUFFO1FBQ25EakQsTUFBTSxFQUFOQSxNQUFNO1FBQ05pQyxPQUFPLEVBQVBBLE9BQU87UUFDUGEsVUFBVSxFQUFFcUY7TUN4S1YsQ0R5S0gsQ0FBQztJQUNKO0VBQ0YsQ0FBQyxDQUNGO0VBRUQsT0FBQTdDLE1BQUEsQ0FBQThDLE1BQUEsQ0FBQTlDLE1BQUEsQ0FBQThDLE1BQUEsQ0FBQSxDQUFBLENBQUEsRUFDS25KLE1BQU0sQ0FBQSxFQUFBO0lBQ1RlLE1BQU0sRUFBTkEsTUFBTTtJQUNOUSxZQUFZLEVBQVpBLFlBQVk7SUFDWnlCLE9BQU8sRUFBUEEsT0FBTztJQUNQYSxVQUFVLEVBQUVvRSxnQkFBZ0I7SUFDNUJaLFNBQVMsRUFBRW9CLGdCQUFnQjtJQUMzQmpCLFVBQVUsRUFBRXNCLGlCQUFpQjtJQUM3Qk0sYUFBYSxFQUFFSjtFQUFvQixDQUFBLENBQUE7QUFFdkMsQ0FBQyIsImZpbGUiOiJjb21wb25lbnRzL1RhYmxlL2NvcmUvdXNlVGFibGVEYXRhUGlwZWxpbmUuanMiLCJzb3VyY2VzQ29udGVudCI6W251bGwsImltcG9ydCB7IHVzZU1lbW8sIHVzZVJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUNvbnRyb2xsZWRTdGF0ZSwgdXNlTWVtb2l6ZWRGbiB9IGZyb20gJ0AxbW9uZXkvaG9va3MnO1xuZnVuY3Rpb24gaXNDb2x1bW5Hcm91cChjb2wpIHtcbiAgICByZXR1cm4gJ2NoaWxkcmVuJyBpbiBjb2wgJiYgQXJyYXkuaXNBcnJheShjb2wuY2hpbGRyZW4pO1xufVxuZnVuY3Rpb24gZmxhdHRlbkNvbHVtbnMoY29sdW1ucykge1xuICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuICAgIGZvciAoY29uc3QgY29sIG9mIGNvbHVtbnMpIHtcbiAgICAgICAgaWYgKGlzQ29sdW1uR3JvdXAoY29sKSkge1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goLi4uZmxhdHRlbkNvbHVtbnMoY29sLmNoaWxkcmVuKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaChjb2wpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG5mdW5jdGlvbiBnZXRTb3J0RnVuY3Rpb24oc29ydGVyKSB7XG4gICAgaWYgKHR5cGVvZiBzb3J0ZXIgPT09ICdmdW5jdGlvbicpXG4gICAgICAgIHJldHVybiBzb3J0ZXI7XG4gICAgaWYgKHNvcnRlciAmJiB0eXBlb2Ygc29ydGVyID09PSAnb2JqZWN0JyAmJiAnY29tcGFyZScgaW4gc29ydGVyKVxuICAgICAgICByZXR1cm4gc29ydGVyLmNvbXBhcmU7XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuZnVuY3Rpb24gZ2V0TXVsdGlwbGVQcmlvcml0eShjb2x1bW4pIHtcbiAgICBpZiAoY29sdW1uLnNvcnRlciAmJiB0eXBlb2YgY29sdW1uLnNvcnRlciA9PT0gJ29iamVjdCcgJiYgJ211bHRpcGxlJyBpbiBjb2x1bW4uc29ydGVyKSB7XG4gICAgICAgIHJldHVybiBjb2x1bW4uc29ydGVyLm11bHRpcGxlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59XG5mdW5jdGlvbiBhcHBseVNvcnRUb0RhdGEoZGF0YSwgY29sdW1ucywgc29ydGVyU3RhdGVzKSB7XG4gICAgaWYgKHNvcnRlclN0YXRlcy5sZW5ndGggPT09IDApXG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgIGNvbnN0IHNvcnRlZCA9IFsuLi5kYXRhXTtcbiAgICBjb25zdCBydW5uaW5nU29ydGVycyA9IHNvcnRlclN0YXRlc1xuICAgICAgICAubWFwKChzdGF0ZSkgPT4ge1xuICAgICAgICBjb25zdCBjb2x1bW4gPSBjb2x1bW5zLmZpbmQoKGNvbCkgPT4gY29sLmtleSA9PT0gc3RhdGUuY29sdW1uS2V5KTtcbiAgICAgICAgaWYgKCFjb2x1bW4pXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgY29uc3QgY29tcGFyZUZuID0gZ2V0U29ydEZ1bmN0aW9uKGNvbHVtbi5zb3J0ZXIpO1xuICAgICAgICBpZiAoIWNvbXBhcmVGbilcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICBjb25zdCBwcmlvcml0eSA9IGdldE11bHRpcGxlUHJpb3JpdHkoY29sdW1uKTtcbiAgICAgICAgcmV0dXJuIHsgY29tcGFyZUZuLCBvcmRlcjogc3RhdGUub3JkZXIsIHByaW9yaXR5IH07XG4gICAgfSlcbiAgICAgICAgLmZpbHRlcihCb29sZWFuKTtcbiAgICBpZiAocnVubmluZ1NvcnRlcnMubGVuZ3RoID09PSAwKVxuICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAvLyBIaWdoZXIgcHJpb3JpdHkgbnVtYmVyID0gY29tcGFyZWQgZmlyc3RcbiAgICBydW5uaW5nU29ydGVycy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgIGNvbnN0IGFwID0gdHlwZW9mIGEucHJpb3JpdHkgPT09ICdudW1iZXInID8gYS5wcmlvcml0eSA6IDA7XG4gICAgICAgIGNvbnN0IGJwID0gdHlwZW9mIGIucHJpb3JpdHkgPT09ICdudW1iZXInID8gYi5wcmlvcml0eSA6IDA7XG4gICAgICAgIHJldHVybiBicCAtIGFwO1xuICAgIH0pO1xuICAgIHNvcnRlZC5zb3J0KChyZWNvcmQxLCByZWNvcmQyKSA9PiB7XG4gICAgICAgIGZvciAoY29uc3QgeyBjb21wYXJlRm4sIG9yZGVyIH0gb2YgcnVubmluZ1NvcnRlcnMpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGNvbXBhcmVGbihyZWNvcmQxLCByZWNvcmQyKTtcbiAgICAgICAgICAgIGlmIChyZXN1bHQgIT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb3JkZXIgPT09ICdhc2NlbmQnID8gcmVzdWx0IDogLXJlc3VsdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gMDtcbiAgICB9KTtcbiAgICByZXR1cm4gc29ydGVkO1xufVxuZnVuY3Rpb24gYXBwbHlGaWx0ZXJzVG9EYXRhKGRhdGEsIGNvbHVtbnMsIGZpbHRlcnMpIHtcbiAgICAvLyBSZXNvbHZlIHdoaWNoIGNvbHVtbnMgaGF2ZSBhbiBhY3RpdmUgZmlsdGVyIHNlbGVjdGlvbiBBTkQgYSBwcmVkaWNhdGUuXG4gICAgY29uc3QgYWN0aXZlRmlsdGVycyA9IGNvbHVtbnNcbiAgICAgICAgLm1hcCgoY29sKSA9PiB7XG4gICAgICAgIGlmIChjb2wua2V5ID09IG51bGwpXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSBmaWx0ZXJzW1N0cmluZyhjb2wua2V5KV07XG4gICAgICAgIGlmICghc2VsZWN0ZWQgfHwgc2VsZWN0ZWQubGVuZ3RoID09PSAwKVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIGlmICghY29sLm9uRmlsdGVyKVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIHJldHVybiB7IG9uRmlsdGVyOiBjb2wub25GaWx0ZXIsIHNlbGVjdGVkIH07XG4gICAgfSlcbiAgICAgICAgLmZpbHRlcihCb29sZWFuKTtcbiAgICBpZiAoYWN0aXZlRmlsdGVycy5sZW5ndGggPT09IDApXG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgIHJldHVybiBkYXRhLmZpbHRlcigocmVjb3JkKSA9PiBcbiAgICAvLyBSb3cgcGFzc2VzIG9ubHkgaWYgRVZFUlkgYWN0aXZlIGNvbHVtbiBoYXMgYXQgbGVhc3Qgb25lIG1hdGNoaW5nIHNlbGVjdGVkIHZhbHVlLlxuICAgIGFjdGl2ZUZpbHRlcnMuZXZlcnkoKHsgb25GaWx0ZXIsIHNlbGVjdGVkIH0pID0+IHNlbGVjdGVkLnNvbWUoKHZhbHVlKSA9PiBvbkZpbHRlcih2YWx1ZSwgcmVjb3JkKSkpKTtcbn1cbmV4cG9ydCBjb25zdCBhcHBseVRhYmxlUGlwZWxpbmUgPSAoeyBjb2x1bW5zLCBkYXRhU291cmNlLCBzb3J0ZXIsIGZpbHRlcnMgPSB7fSwgcGFnaW5hdGlvbiwgfSkgPT4ge1xuICAgIGNvbnN0IHNvcnRlclN0YXRlcyA9IHNvcnRlci5jb2x1bW5LZXkgIT0gbnVsbCAmJiBzb3J0ZXIub3JkZXJcbiAgICAgICAgPyBbeyBjb2x1bW5LZXk6IHNvcnRlci5jb2x1bW5LZXksIG9yZGVyOiBzb3J0ZXIub3JkZXIgfV1cbiAgICAgICAgOiBbXTtcbiAgICBjb25zdCBsZWFmQ29sdW1ucyA9IGZsYXR0ZW5Db2x1bW5zKGNvbHVtbnMpO1xuICAgIGNvbnN0IGZpbHRlcmVkID0gYXBwbHlGaWx0ZXJzVG9EYXRhKGRhdGFTb3VyY2UsIGxlYWZDb2x1bW5zLCBmaWx0ZXJzKTtcbiAgICBjb25zdCBzb3J0ZWQgPSBhcHBseVNvcnRUb0RhdGEoZmlsdGVyZWQsIGxlYWZDb2x1bW5zLCBzb3J0ZXJTdGF0ZXMpO1xuICAgIGlmICghcGFnaW5hdGlvbikge1xuICAgICAgICByZXR1cm4geyBjdXJyZW50RGF0YVNvdXJjZTogc29ydGVkLCB0b3RhbDogc29ydGVkLmxlbmd0aCB9O1xuICAgIH1cbiAgICBjb25zdCBzdGFydCA9IChwYWdpbmF0aW9uLmN1cnJlbnQgLSAxKSAqIHBhZ2luYXRpb24ucGFnZVNpemU7XG4gICAgY29uc3QgZW5kID0gc3RhcnQgKyBwYWdpbmF0aW9uLnBhZ2VTaXplO1xuICAgIHJldHVybiB7XG4gICAgICAgIGN1cnJlbnREYXRhU291cmNlOiBzb3J0ZWQuc2xpY2Uoc3RhcnQsIGVuZCksXG4gICAgICAgIHRvdGFsOiBzb3J0ZWQubGVuZ3RoLFxuICAgIH07XG59O1xuZnVuY3Rpb24gY29sbGVjdFNvcnRlclN0YXRlcyhjb2x1bW5zKSB7XG4gICAgdmFyIF9hO1xuICAgIGNvbnN0IGxlYXZlcyA9IGZsYXR0ZW5Db2x1bW5zKGNvbHVtbnMpO1xuICAgIGNvbnN0IHN0YXRlcyA9IFtdO1xuICAgIGZvciAoY29uc3QgY29sIG9mIGxlYXZlcykge1xuICAgICAgICBjb25zdCBvcmRlciA9IChfYSA9IGNvbC5zb3J0T3JkZXIpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IGNvbC5kZWZhdWx0U29ydE9yZGVyO1xuICAgICAgICBpZiAoY29sLmtleSAhPSBudWxsICYmIG9yZGVyKSB7XG4gICAgICAgICAgICBzdGF0ZXMucHVzaCh7IGNvbHVtbktleTogY29sLmtleSwgb3JkZXIgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHN0YXRlcztcbn1cbmNvbnN0IGdldEluaXRpYWxTb3J0ZXIgPSAoY29sdW1ucykgPT4ge1xuICAgIGNvbnN0IHN0YXRlcyA9IGNvbGxlY3RTb3J0ZXJTdGF0ZXMoY29sdW1ucyk7XG4gICAgaWYgKHN0YXRlcy5sZW5ndGggPT09IDApXG4gICAgICAgIHJldHVybiB7fTtcbiAgICByZXR1cm4geyBjb2x1bW5LZXk6IHN0YXRlc1swXS5jb2x1bW5LZXksIG9yZGVyOiBzdGF0ZXNbMF0ub3JkZXIgfTtcbn07XG5jb25zdCBnZXRDb250cm9sbGVkU29ydGVyID0gKGNvbHVtbnMpID0+IHtcbiAgICB2YXIgX2E7XG4gICAgY29uc3QgbGVhdmVzID0gZmxhdHRlbkNvbHVtbnMoY29sdW1ucyk7XG4gICAgY29uc3QgY29udHJvbGxlZENvbHVtbiA9IGxlYXZlcy5maW5kKChjb2x1bW4pID0+IGNvbHVtbi5zb3J0T3JkZXIgIT09IHVuZGVmaW5lZCk7XG4gICAgaWYgKCFjb250cm9sbGVkQ29sdW1uKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIGNvbHVtbktleTogY29udHJvbGxlZENvbHVtbi5rZXksXG4gICAgICAgIG9yZGVyOiAoX2EgPSBjb250cm9sbGVkQ29sdW1uLnNvcnRPcmRlcikgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogbnVsbCxcbiAgICB9O1xufTtcbmNvbnN0IGdldEluaXRpYWxGaWx0ZXJzID0gKGNvbHVtbnMpID0+IHtcbiAgICB2YXIgX2E7XG4gICAgY29uc3QgbGVhdmVzID0gZmxhdHRlbkNvbHVtbnMoY29sdW1ucyk7XG4gICAgY29uc3Qgc3RhdGUgPSB7fTtcbiAgICBmb3IgKGNvbnN0IGNvbCBvZiBsZWF2ZXMpIHtcbiAgICAgICAgaWYgKGNvbC5rZXkgPT0gbnVsbClcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBjb25zdCBpbml0aWFsID0gKF9hID0gY29sLmRlZmF1bHRGaWx0ZXJlZFZhbHVlKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBjb2wuZmlsdGVyZWRWYWx1ZTtcbiAgICAgICAgaWYgKGluaXRpYWwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgc3RhdGVbU3RyaW5nKGNvbC5rZXkpXSA9IGluaXRpYWwgIT09IG51bGwgJiYgaW5pdGlhbCAhPT0gdm9pZCAwID8gaW5pdGlhbCA6IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHN0YXRlO1xufTtcbmNvbnN0IGdldENvbnRyb2xsZWRGaWx0ZXJzID0gKGNvbHVtbnMpID0+IHtcbiAgICBjb25zdCBsZWF2ZXMgPSBmbGF0dGVuQ29sdW1ucyhjb2x1bW5zKTtcbiAgICBsZXQgaGFzQ29udHJvbGxlZCA9IGZhbHNlO1xuICAgIGNvbnN0IHN0YXRlID0ge307XG4gICAgZm9yIChjb25zdCBjb2wgb2YgbGVhdmVzKSB7XG4gICAgICAgIGlmIChjb2wua2V5ID09IG51bGwpXG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgaWYgKGNvbC5maWx0ZXJlZFZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGhhc0NvbnRyb2xsZWQgPSB0cnVlO1xuICAgICAgICAgICAgc3RhdGVbU3RyaW5nKGNvbC5rZXkpXSA9IGNvbC5maWx0ZXJlZFZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBoYXNDb250cm9sbGVkID8gc3RhdGUgOiB1bmRlZmluZWQ7XG59O1xuLyoqXG4gKiBSZXR1cm5zIGEgdmFsdWUgd2hvc2UgcmVmZXJlbmNlIGlzIHByZXNlcnZlZCBhY3Jvc3MgcmVuZGVycyBhcyBsb25nIGFzIHRoZVxuICogc2hhbGxvdyBjb250ZW50cyBhcmUgdW5jaGFuZ2VkIChwZXIgYGVxdWFsYCkuIFVzZWQgdG8gc3RhYmlsaXNlIHRoZSBkZXJpdmVkXG4gKiBjb250cm9sbGVkIGNhbmRpZGF0ZXMgZmVkIHRvIGB1c2VDb250cm9sbGVkU3RhdGVgIOKAlCB0aGV5IHdvdWxkIG90aGVyd2lzZSBiZVxuICogZnJlc2ggb2JqZWN0cyBldmVyeSByZW5kZXIgYW5kIHRocmFzaCB0aGUgaG9vaydzIGludGVybmFsIGB1c2VMYXlvdXRFZmZlY3RgLlxuICovXG5mdW5jdGlvbiB1c2VTdGFibGVSZWYodmFsdWUsIGVxdWFsKSB7XG4gICAgY29uc3QgcmVmID0gdXNlUmVmKHZhbHVlKTtcbiAgICBpZiAoIWVxdWFsKHJlZi5jdXJyZW50LCB2YWx1ZSkpIHtcbiAgICAgICAgcmVmLmN1cnJlbnQgPSB2YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHJlZi5jdXJyZW50O1xufVxuZnVuY3Rpb24gc29ydGVyRXF1YWwoYSwgYikge1xuICAgIGlmIChhID09PSBiKVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICBpZiAoIWEgfHwgIWIpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gYS5jb2x1bW5LZXkgPT09IGIuY29sdW1uS2V5ICYmIGEub3JkZXIgPT09IGIub3JkZXI7XG59XG5mdW5jdGlvbiBmaWx0ZXJWYWx1ZUVxdWFsKGEsIGIpIHtcbiAgICBpZiAoYSA9PT0gYilcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgaWYgKCFhIHx8ICFiKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgaWYgKGEubGVuZ3RoICE9PSBiLmxlbmd0aClcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoYVtpXSAhPT0gYltpXSlcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG5mdW5jdGlvbiBmaWx0ZXJzRXF1YWwoYSwgYikge1xuICAgIGlmIChhID09PSBiKVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICBpZiAoIWEgfHwgIWIpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCBrZXlzQSA9IE9iamVjdC5rZXlzKGEpO1xuICAgIGNvbnN0IGtleXNCID0gT2JqZWN0LmtleXMoYik7XG4gICAgaWYgKGtleXNBLmxlbmd0aCAhPT0ga2V5c0IubGVuZ3RoKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgZm9yIChjb25zdCBrZXkgb2Yga2V5c0EpIHtcbiAgICAgICAgaWYgKCFmaWx0ZXJWYWx1ZUVxdWFsKGFba2V5XSwgYltrZXldKSlcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG5leHBvcnQgY29uc3QgdXNlVGFibGVEYXRhUGlwZWxpbmUgPSAoeyBjb2x1bW5zLCBkYXRhU291cmNlLCBwYWdpbmF0aW9uLCBvbkNoYW5nZSwgfSkgPT4ge1xuICAgIHZhciBfYSwgX2IsIF9jLCBfZDtcbiAgICAvLyBTb3J0ZXIgLyBmaWx0ZXJzIGFyZSBcImRlcml2ZWQgY29udHJvbGxlZFwiIOKAlCB0aGUgY29udHJvbGxlZCB2YWx1ZSBpcyBidWlsdFxuICAgIC8vIGJ5IHNjYW5uaW5nIGNvbHVtbiBwcm9wcyAoYHNvcnRPcmRlcmAgLyBgZmlsdGVyZWRWYWx1ZWApLCBzbyBgZ2V0Q29udHJvbGxlZCpgXG4gICAgLy8gcmV0dXJucyBhIGZyZXNoIG9iamVjdCBldmVyeSByZW5kZXIgZXZlbiB3aGVuIHRoZSB1bmRlcmx5aW5nIGlucHV0cyBhcmVcbiAgICAvLyB1bmNoYW5nZWQuIFdpdGhvdXQgc3RhYmlsaXNhdGlvbiwgYHVzZUNvbnRyb2xsZWRTdGF0ZWAncyBpbnRlcm5hbFxuICAgIC8vIGB1c2VMYXlvdXRFZmZlY3QoW3ZhbHVlXSlgIHdvdWxkIHJlLXN5bmMgb24gZXZlcnkgcmVuZGVyIOKGkiBpbmZpbml0ZSBsb29wLlxuICAgIC8vIFBpbiB0aGUgcmVmZXJlbmNlIHZpYSBhIHNoYWxsb3ctZXF1YWwgcmVmLlxuICAgIGNvbnN0IGNvbnRyb2xsZWRTb3J0ZXIgPSB1c2VTdGFibGVSZWYoZ2V0Q29udHJvbGxlZFNvcnRlcihjb2x1bW5zKSwgc29ydGVyRXF1YWwpO1xuICAgIGNvbnN0IGNvbnRyb2xsZWRGaWx0ZXJzID0gdXNlU3RhYmxlUmVmKGdldENvbnRyb2xsZWRGaWx0ZXJzKGNvbHVtbnMpLCBmaWx0ZXJzRXF1YWwpO1xuICAgIGNvbnN0IFtzb3J0ZXIsIHNldFNvcnRlcl0gPSB1c2VDb250cm9sbGVkU3RhdGUoZ2V0SW5pdGlhbFNvcnRlcihjb2x1bW5zKSwgY29udHJvbGxlZFNvcnRlcik7XG4gICAgY29uc3QgW2ZpbHRlcnMsIHNldEZpbHRlcnNdID0gdXNlQ29udHJvbGxlZFN0YXRlKGdldEluaXRpYWxGaWx0ZXJzKGNvbHVtbnMpLCBjb250cm9sbGVkRmlsdGVycyk7XG4gICAgY29uc3QgW2N1cnJlbnQsIHNldEN1cnJlbnRdID0gdXNlQ29udHJvbGxlZFN0YXRlKHBhZ2luYXRpb24gPT09IGZhbHNlID8gMSA6ICgoX2IgPSAoX2EgPSBwYWdpbmF0aW9uID09PSBudWxsIHx8IHBhZ2luYXRpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IHBhZ2luYXRpb24uZGVmYXVsdEN1cnJlbnQpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IHBhZ2luYXRpb24gPT09IG51bGwgfHwgcGFnaW5hdGlvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogcGFnaW5hdGlvbi5jdXJyZW50KSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAxKSwgcGFnaW5hdGlvbiA9PT0gZmFsc2UgPyB1bmRlZmluZWQgOiBwYWdpbmF0aW9uID09PSBudWxsIHx8IHBhZ2luYXRpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IHBhZ2luYXRpb24uY3VycmVudCk7XG4gICAgY29uc3QgW3BhZ2VTaXplLCBzZXRQYWdlU2l6ZV0gPSB1c2VDb250cm9sbGVkU3RhdGUocGFnaW5hdGlvbiA9PT0gZmFsc2UgPyAxMCA6ICgoX2QgPSAoX2MgPSBwYWdpbmF0aW9uID09PSBudWxsIHx8IHBhZ2luYXRpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IHBhZ2luYXRpb24uZGVmYXVsdFBhZ2VTaXplKSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiBwYWdpbmF0aW9uID09PSBudWxsIHx8IHBhZ2luYXRpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IHBhZ2luYXRpb24ucGFnZVNpemUpICE9PSBudWxsICYmIF9kICE9PSB2b2lkIDAgPyBfZCA6IDEwKSwgcGFnaW5hdGlvbiA9PT0gZmFsc2UgPyB1bmRlZmluZWQgOiBwYWdpbmF0aW9uID09PSBudWxsIHx8IHBhZ2luYXRpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IHBhZ2luYXRpb24ucGFnZVNpemUpO1xuICAgIGNvbnN0IG1lcmdlZFBhZ2luYXRpb24gPSBwYWdpbmF0aW9uID09PSBmYWxzZVxuICAgICAgICA/IGZhbHNlXG4gICAgICAgIDogeyBjdXJyZW50LCBwYWdlU2l6ZSB9O1xuICAgIGNvbnN0IHNvcnRlclN0YXRlcyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICAvLyBTdGFydCB3aXRoIHRoZSBwcmltYXJ5IHVzZXItdG9nZ2xlZCBzb3J0ZXJcbiAgICAgICAgY29uc3QgcHJpbWFyeSA9IHNvcnRlci5jb2x1bW5LZXkgIT0gbnVsbCAmJiBzb3J0ZXIub3JkZXJcbiAgICAgICAgICAgID8gW3sgY29sdW1uS2V5OiBzb3J0ZXIuY29sdW1uS2V5LCBvcmRlcjogc29ydGVyLm9yZGVyIH1dXG4gICAgICAgICAgICA6IFtdO1xuICAgICAgICAvLyBDb2xsZWN0IGFueSBvdGhlciBjb2x1bW5zIHRoYXQgaGF2ZSBhIGNvbnRyb2xsZWQgc29ydE9yZGVyIChmb3IgbXVsdGktc29ydClcbiAgICAgICAgY29uc3QgbGVhZkNvbHVtbnMgPSBmbGF0dGVuQ29sdW1ucyhjb2x1bW5zKTtcbiAgICAgICAgY29uc3QgYWRkaXRpb25hbCA9IGxlYWZDb2x1bW5zXG4gICAgICAgICAgICAuZmlsdGVyKChjb2wpID0+IGNvbC5rZXkgIT0gbnVsbCAmJiBjb2wuc29ydE9yZGVyICYmIGNvbC5rZXkgIT09IHNvcnRlci5jb2x1bW5LZXkpXG4gICAgICAgICAgICAubWFwKChjb2wpID0+ICh7IGNvbHVtbktleTogY29sLmtleSwgb3JkZXI6IGNvbC5zb3J0T3JkZXIgfSkpO1xuICAgICAgICByZXR1cm4gWy4uLnByaW1hcnksIC4uLmFkZGl0aW9uYWxdO1xuICAgIH0sIFtzb3J0ZXIsIGNvbHVtbnNdKTtcbiAgICBjb25zdCByZXN1bHQgPSB1c2VNZW1vKCgpID0+IGFwcGx5VGFibGVQaXBlbGluZSh7XG4gICAgICAgIGNvbHVtbnMsXG4gICAgICAgIGRhdGFTb3VyY2UsXG4gICAgICAgIHNvcnRlcixcbiAgICAgICAgZmlsdGVycyxcbiAgICAgICAgcGFnaW5hdGlvbjogbWVyZ2VkUGFnaW5hdGlvbixcbiAgICB9KSwgW2NvbHVtbnMsIGRhdGFTb3VyY2UsIHNvcnRlciwgZmlsdGVycywgbWVyZ2VkUGFnaW5hdGlvbl0pO1xuICAgIGNvbnN0IGVtaXRDaGFuZ2UgPSB1c2VNZW1vaXplZEZuKChuZXh0RGF0YVNvdXJjZSwgYWN0aW9uLCBuZXh0U3RhdGUpID0+IHtcbiAgICAgICAgb25DaGFuZ2UgPT09IG51bGwgfHwgb25DaGFuZ2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQ2hhbmdlKHtcbiAgICAgICAgICAgIGN1cnJlbnREYXRhU291cmNlOiBuZXh0RGF0YVNvdXJjZSxcbiAgICAgICAgICAgIGFjdGlvbixcbiAgICAgICAgICAgIHNvcnRlcjogbmV4dFN0YXRlLnNvcnRlcixcbiAgICAgICAgICAgIGZpbHRlcnM6IG5leHRTdGF0ZS5maWx0ZXJzLFxuICAgICAgICAgICAgcGFnaW5hdGlvbjogbmV4dFN0YXRlLnBhZ2luYXRpb24sXG4gICAgICAgIH0pO1xuICAgIH0pO1xuICAgIC8vIHVzZU1lbW9pemVkRm46IHN0YWJsZSByZWYsIGFsd2F5cyBjYWxscyBsYXRlc3QgY2xvc3VyZSDigJQgbm8gc3RhbGUgZGVwcyByaXNrXG4gICAgY29uc3Qgd3JhcHBlZFNldFNvcnRlciA9IHVzZU1lbW9pemVkRm4oKHVwZGF0ZXIpID0+IHtcbiAgICAgICAgY29uc3QgbmV4dFNvcnRlciA9IHR5cGVvZiB1cGRhdGVyID09PSAnZnVuY3Rpb24nID8gdXBkYXRlcihzb3J0ZXIpIDogdXBkYXRlcjtcbiAgICAgICAgc2V0U29ydGVyKG5leHRTb3J0ZXIpO1xuICAgICAgICAvLyBSZXNldCBwYWdpbmF0aW9uIHRvIHBhZ2UgMSB3aGVuIHNvcnRpbmcgY2hhbmdlc1xuICAgICAgICBpZiAobWVyZ2VkUGFnaW5hdGlvbiAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHNldEN1cnJlbnQoMSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9uQ2hhbmdlKSB7XG4gICAgICAgICAgICBjb25zdCByZXNldFBhZ2luYXRpb24gPSBtZXJnZWRQYWdpbmF0aW9uID09PSBmYWxzZVxuICAgICAgICAgICAgICAgID8gZmFsc2VcbiAgICAgICAgICAgICAgICA6IHsgY3VycmVudDogMSwgcGFnZVNpemUgfTtcbiAgICAgICAgICAgIGNvbnN0IG5leHRSZXN1bHQgPSBhcHBseVRhYmxlUGlwZWxpbmUoe1xuICAgICAgICAgICAgICAgIGNvbHVtbnMsXG4gICAgICAgICAgICAgICAgZGF0YVNvdXJjZSxcbiAgICAgICAgICAgICAgICBzb3J0ZXI6IG5leHRTb3J0ZXIsXG4gICAgICAgICAgICAgICAgZmlsdGVycyxcbiAgICAgICAgICAgICAgICBwYWdpbmF0aW9uOiByZXNldFBhZ2luYXRpb24sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGVtaXRDaGFuZ2UobmV4dFJlc3VsdC5jdXJyZW50RGF0YVNvdXJjZSwgJ3NvcnQnLCB7XG4gICAgICAgICAgICAgICAgc29ydGVyOiBuZXh0U29ydGVyLFxuICAgICAgICAgICAgICAgIGZpbHRlcnMsXG4gICAgICAgICAgICAgICAgcGFnaW5hdGlvbjogcmVzZXRQYWdpbmF0aW9uLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCB3cmFwcGVkU2V0RmlsdGVycyA9IHVzZU1lbW9pemVkRm4oKHVwZGF0ZXIpID0+IHtcbiAgICAgICAgY29uc3QgbmV4dEZpbHRlcnMgPSB0eXBlb2YgdXBkYXRlciA9PT0gJ2Z1bmN0aW9uJyA/IHVwZGF0ZXIoZmlsdGVycykgOiB1cGRhdGVyO1xuICAgICAgICBzZXRGaWx0ZXJzKG5leHRGaWx0ZXJzKTtcbiAgICAgICAgLy8gUmVzZXQgcGFnaW5hdGlvbiB0byBwYWdlIDEgd2hlbiBmaWx0ZXJzIGNoYW5nZVxuICAgICAgICBpZiAobWVyZ2VkUGFnaW5hdGlvbiAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHNldEN1cnJlbnQoMSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9uQ2hhbmdlKSB7XG4gICAgICAgICAgICBjb25zdCByZXNldFBhZ2luYXRpb24gPSBtZXJnZWRQYWdpbmF0aW9uID09PSBmYWxzZVxuICAgICAgICAgICAgICAgID8gZmFsc2VcbiAgICAgICAgICAgICAgICA6IHsgY3VycmVudDogMSwgcGFnZVNpemUgfTtcbiAgICAgICAgICAgIGNvbnN0IG5leHRSZXN1bHQgPSBhcHBseVRhYmxlUGlwZWxpbmUoe1xuICAgICAgICAgICAgICAgIGNvbHVtbnMsXG4gICAgICAgICAgICAgICAgZGF0YVNvdXJjZSxcbiAgICAgICAgICAgICAgICBzb3J0ZXIsXG4gICAgICAgICAgICAgICAgZmlsdGVyczogbmV4dEZpbHRlcnMsXG4gICAgICAgICAgICAgICAgcGFnaW5hdGlvbjogcmVzZXRQYWdpbmF0aW9uLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBlbWl0Q2hhbmdlKG5leHRSZXN1bHQuY3VycmVudERhdGFTb3VyY2UsICdmaWx0ZXInLCB7XG4gICAgICAgICAgICAgICAgc29ydGVyLFxuICAgICAgICAgICAgICAgIGZpbHRlcnM6IG5leHRGaWx0ZXJzLFxuICAgICAgICAgICAgICAgIHBhZ2luYXRpb246IHJlc2V0UGFnaW5hdGlvbixcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgY29uc3Qgd3JhcHBlZFNldFBhZ2luYXRpb24gPSB1c2VNZW1vaXplZEZuKCh1cGRhdGVyKSA9PiB7XG4gICAgICAgIGlmIChwYWdpbmF0aW9uID09PSBmYWxzZSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgY3VycmVudFZhbHVlID0geyBjdXJyZW50LCBwYWdlU2l6ZSB9O1xuICAgICAgICBjb25zdCBuZXh0VmFsdWUgPSB0eXBlb2YgdXBkYXRlciA9PT0gJ2Z1bmN0aW9uJyA/IHVwZGF0ZXIoY3VycmVudFZhbHVlKSA6IHVwZGF0ZXI7XG4gICAgICAgIHNldEN1cnJlbnQobmV4dFZhbHVlLmN1cnJlbnQpO1xuICAgICAgICBzZXRQYWdlU2l6ZShuZXh0VmFsdWUucGFnZVNpemUpO1xuICAgICAgICBpZiAob25DaGFuZ2UpIHtcbiAgICAgICAgICAgIGNvbnN0IG5leHRSZXN1bHQgPSBhcHBseVRhYmxlUGlwZWxpbmUoe1xuICAgICAgICAgICAgICAgIGNvbHVtbnMsXG4gICAgICAgICAgICAgICAgZGF0YVNvdXJjZSxcbiAgICAgICAgICAgICAgICBzb3J0ZXIsXG4gICAgICAgICAgICAgICAgZmlsdGVycyxcbiAgICAgICAgICAgICAgICBwYWdpbmF0aW9uOiBuZXh0VmFsdWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGVtaXRDaGFuZ2UobmV4dFJlc3VsdC5jdXJyZW50RGF0YVNvdXJjZSwgJ3BhZ2luYXRlJywge1xuICAgICAgICAgICAgICAgIHNvcnRlcixcbiAgICAgICAgICAgICAgICBmaWx0ZXJzLFxuICAgICAgICAgICAgICAgIHBhZ2luYXRpb246IG5leHRWYWx1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgcmVzdWx0KSwgeyBzb3J0ZXIsXG4gICAgICAgIHNvcnRlclN0YXRlcyxcbiAgICAgICAgZmlsdGVycywgcGFnaW5hdGlvbjogbWVyZ2VkUGFnaW5hdGlvbiwgc2V0U29ydGVyOiB3cmFwcGVkU2V0U29ydGVyLCBzZXRGaWx0ZXJzOiB3cmFwcGVkU2V0RmlsdGVycywgc2V0UGFnaW5hdGlvbjogd3JhcHBlZFNldFBhZ2luYXRpb24gfSk7XG59OyJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
421
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvVGFibGUvc3JjL2NvbXBvbmVudHMvVGFibGUvY29yZS91c2VUYWJsZURhdGFQaXBlbGluZS50cyIsImNvbXBvbmVudHMvVGFibGUvY29yZS91c2VUYWJsZURhdGFQaXBlbGluZS5qcyJdLCJuYW1lcyI6WyJ1c2VNZW1vIiwidXNlUmVmIiwidXNlQ29udHJvbGxlZFN0YXRlIiwidXNlTWVtb2l6ZWRGbiIsImZsYXR0ZW5Db2x1bW5zIiwiZ2V0U29ydEZ1bmN0aW9uIiwic29ydGVyIiwiX3R5cGVvZiIsImNvbXBhcmUiLCJnZXRNdWx0aXBsZVByaW9yaXR5IiwiY29sdW1uIiwibXVsdGlwbGUiLCJhcHBseVNvcnRUb0RhdGEiLCJkYXRhIiwiY29sdW1ucyIsInNvcnRlclN0YXRlcyIsImxlbmd0aCIsInNvcnRlZCIsIl90b0NvbnN1bWFibGVBcnJheSIsInJ1bm5pbmdTb3J0ZXJzIiwibWFwIiwic3RhdGUiLCJmaW5kIiwiY29sIiwia2V5IiwiY29sdW1uS2V5IiwiY29tcGFyZUZuIiwicHJpb3JpdHkiLCJvcmRlciIsImZpbHRlciIsIkJvb2xlYW4iLCJzb3J0IiwiYSIsImIiLCJhcCIsImJwIiwicmVjb3JkMSIsInJlY29yZDIiLCJfaXRlcmF0b3IiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsIl9zdGVwIiwicyIsIm4iLCJkb25lIiwiX3N0ZXAkdmFsdWUiLCJ2YWx1ZSIsInJlc3VsdCIsImVyciIsImUiLCJmIiwiYXBwbHlGaWx0ZXJzVG9EYXRhIiwiZmlsdGVycyIsImFjdGl2ZUZpbHRlcnMiLCJzZWxlY3RlZCIsIlN0cmluZyIsIm9uRmlsdGVyIiwicmVjb3JkIiwiZXZlcnkiLCJfcmVmIiwic29tZSIsImFwcGx5VGFibGVQaXBlbGluZSIsIl9yZWYyIiwiZGF0YVNvdXJjZSIsIl9yZWYyJGZpbHRlcnMiLCJwYWdpbmF0aW9uIiwibGVhZkNvbHVtbnMiLCJmaWx0ZXJlZCIsImN1cnJlbnREYXRhU291cmNlIiwidG90YWwiLCJzdGFydCIsImN1cnJlbnQiLCJwYWdlU2l6ZSIsImVuZCIsInNsaWNlIiwiY29sbGVjdFNvcnRlclN0YXRlcyIsImxlYXZlcyIsIl9hIiwic3RhdGVzIiwiX2l0ZXJhdG9yMiIsIl9zdGVwMiIsInNvcnRPcmRlciIsImRlZmF1bHRTb3J0T3JkZXIiLCJwdXNoIiwiZ2V0SW5pdGlhbFNvcnRlciIsImdldENvbnRyb2xsZWRTb3J0ZXIiLCJjb250cm9sbGVkQ29sdW1uIiwidW5kZWZpbmVkIiwiZ2V0SW5pdGlhbEZpbHRlcnMiLCJfaXRlcmF0b3IzIiwiX3N0ZXAzIiwiaW5pdGlhbCIsImRlZmF1bHRGaWx0ZXJlZFZhbHVlIiwiZmlsdGVyZWRWYWx1ZSIsImdldENvbnRyb2xsZWRGaWx0ZXJzIiwiaGFzQ29udHJvbGxlZCIsIl9pdGVyYXRvcjQiLCJfc3RlcDQiLCJ1c2VTdGFibGVSZWYiLCJlcXVhbCIsInJlZiIsInNvcnRlckVxdWFsIiwiZmlsdGVyVmFsdWVFcXVhbCIsImkiLCJmaWx0ZXJzRXF1YWwiLCJrZXlzQSIsIk9iamVjdCIsImtleXMiLCJrZXlzQiIsIl9pIiwiX2tleXNBIiwidXNlVGFibGVEYXRhUGlwZWxpbmUiLCJfcmVmMyIsIm9uQ2hhbmdlIiwiX2IiLCJfYyIsIl9kIiwiY29udHJvbGxlZFNvcnRlciIsImNvbnRyb2xsZWRGaWx0ZXJzIiwiaW5pdGlhbFNvcnRlciIsImluaXRpYWxGaWx0ZXJzIiwiX3VzZUNvbnRyb2xsZWRTdGF0ZSIsIl91c2VDb250cm9sbGVkU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJzZXRTb3J0ZXIiLCJfdXNlQ29udHJvbGxlZFN0YXRlMyIsIl91c2VDb250cm9sbGVkU3RhdGU0Iiwic2V0RmlsdGVycyIsIl91c2VDb250cm9sbGVkU3RhdGU1IiwiZGVmYXVsdEN1cnJlbnQiLCJfdXNlQ29udHJvbGxlZFN0YXRlNiIsInNldEN1cnJlbnQiLCJfdXNlQ29udHJvbGxlZFN0YXRlNyIsImRlZmF1bHRQYWdlU2l6ZSIsIl91c2VDb250cm9sbGVkU3RhdGU4Iiwic2V0UGFnZVNpemUiLCJwYWdpbmF0aW9uRW5hYmxlZCIsIm1lcmdlZFBhZ2luYXRpb24iLCJwcmltYXJ5IiwiYWRkaXRpb25hbCIsImNvbmNhdCIsImVtaXRDaGFuZ2UiLCJuZXh0RGF0YVNvdXJjZSIsImFjdGlvbiIsIm5leHRTdGF0ZSIsIndyYXBwZWRTZXRTb3J0ZXIiLCJ1cGRhdGVyIiwibmV4dFNvcnRlciIsInJlc2V0UGFnaW5hdGlvbiIsIm5leHRSZXN1bHQiLCJ3cmFwcGVkU2V0RmlsdGVycyIsIm5leHRGaWx0ZXJzIiwid3JhcHBlZFNldFBhZ2luYXRpb24iLCJjdXJyZW50VmFsdWUiLCJuZXh0VmFsdWUiLCJhc3NpZ24iLCJzZXRQYWdpbmF0aW9uIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxTQUFTQSxPQUFPLEVBQUVDLE1BQU0sUUFBUSxPQUFPO0FBQ3ZDLE9BQU9DLGtCQUFrQixNQUFNLGtDQUFrQztBQUNqRSxPQUFPQyxhQUFhLE1BQU0sNkJBQTZCO0FBRXZELFNBQVNDLGNBQWMsUUFBUSxjQUFjO0FBb0U3QyxTQUFTQyxlQUFlQSxDQUN0QkMsTUFBZ0MsRUFBQTtFQUVoQyxJQUFJLE9BQU9BLE1BQU0sS0FBSyxVQUFVLEVBQUUsT0FBT0EsTUFBTTtFQUMvQyxJQUFJQSxNQUFNLElBQUlDLE9BQUEsQ0FBT0QsTUFBTSxNQUFLLFFBQVEsSUFBSSxTQUFTLElBQUlBLE1BQU0sRUFBRSxPQUFPQSxNQUFNLENBQUNFLE9BQU87RUFDdEYsT0FBTyxLQUFLO0FBQ2Q7QUFFQSxTQUFTQyxtQkFBbUJBLENBQXdCQyxNQUFzQixFQUFBO0VBQ3hFLElBQUlBLE1BQU0sQ0FBQ0osTUFBTSxJQUFJQyxPQUFBLENBQU9HLE1BQU0sQ0FBQ0osTUFBTSxNQUFLLFFBQVEsSUFBSSxVQUFVLElBQUlJLE1BQU0sQ0FBQ0osTUFBTSxFQUFFO0lBQ3JGLE9BQVFJLE1BQU0sQ0FBQ0osTUFBcUMsQ0FBQ0ssUUFBUTtFQUMvRDtFQUNBLE9BQU8sS0FBSztBQUNkO0FBRUEsU0FBU0MsZUFBZUEsQ0FDdEJD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LE1BQU0sQ0FBQSxFQUFBO0lBQ1R4QyxNQUFNLEVBQU5BLE1BQU07SUFDTlMsWUFBWSxFQUFaQSxZQUFZO0lBQ1pvQyxPQUFPLEVBQVBBLE9BQU87SUFDUGEsVUFBVSxFQUFFd0UsZ0JBQWdCO0lBQzVCYixTQUFTLEVBQUVxQixnQkFBZ0I7SUFDM0JsQixVQUFVLEVBQUV1QixpQkFBaUI7SUFDN0JNLGFBQWEsRUFBRUo7RUFBb0IsQ0FBQSxDQUFBO0FBRXZDLENBQUMiLCJmaWxlIjoiY29tcG9uZW50cy9UYWJsZS9jb3JlL3VzZVRhYmxlRGF0YVBpcGVsaW5lLmpzIiwic291cmNlc0NvbnRlbnQiOltudWxsLCJpbXBvcnQgeyB1c2VNZW1vLCB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdXNlQ29udHJvbGxlZFN0YXRlIGZyb20gJ0AxbW9uZXkvaG9va3MvdXNlQ29udHJvbGxlZFN0YXRlJztcbmltcG9ydCB1c2VNZW1vaXplZEZuIGZyb20gJ0AxbW9uZXkvaG9va3MvdXNlTWVtb2l6ZWRGbic7XG5pbXBvcnQgeyBmbGF0dGVuQ29sdW1ucyB9IGZyb20gJy4vY29sdW1uVXRpbCc7XG5mdW5jdGlvbiBnZXRTb3J0RnVuY3Rpb24oc29ydGVyKSB7XG4gICAgaWYgKHR5cGVvZiBzb3J0ZXIgPT09ICdmdW5jdGlvbicpXG4gICAgICAgIHJldHVybiBzb3J0ZXI7XG4gICAgaWYgKHNvcnRlciAmJiB0eXBlb2Ygc29ydGVyID09PSAnb2JqZWN0JyAmJiAnY29tcGFyZScgaW4gc29ydGVyKVxuICAgICAgICByZXR1cm4gc29ydGVyLmNvbXBhcmU7XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuZnVuY3Rpb24gZ2V0TXVsdGlwbGVQcmlvcml0eShjb2x1bW4pIHtcbiAgICBpZiAoY29sdW1uLnNvcnRlciAmJiB0eXBlb2YgY29sdW1uLnNvcnRlciA9PT0gJ29iamVjdCcgJiYgJ211bHRpcGxlJyBpbiBjb2x1bW4uc29ydGVyKSB7XG4gICAgICAgIHJldHVybiBjb2x1bW4uc29ydGVyLm11bHRpcGxlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59XG5mdW5jdGlvbiBhcHBseVNvcnRUb0RhdGEoZGF0YSwgY29sdW1ucywgc29ydGVyU3RhdGVzKSB7XG4gICAgaWYgKHNvcnRlclN0YXRlcy5sZW5ndGggPT09IDApXG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgIGNvbnN0IHNvcnRlZCA9IFsuLi5kYXRhXTtcbiAgICBjb25zdCBydW5uaW5nU29ydGVycyA9IHNvcnRlclN0YXRlc1xuICAgICAgICAubWFwKChzdGF0ZSkgPT4ge1xuICAgICAgICBjb25zdCBjb2x1bW4gPSBjb2x1bW5zLmZpbmQoKGNvbCkgPT4gY29sLmtleSA9PT0gc3RhdGUuY29sdW1uS2V5KTtcbiAgICAgICAgaWYgKCFjb2x1bW4pXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgY29uc3QgY29tcGFyZUZuID0gZ2V0U29ydEZ1bmN0aW9uKGNvbHVtbi5zb3J0ZXIpO1xuICAgICAgICBpZiAoIWNvbXBhcmVGbilcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICBjb25zdCBwcmlvcml0eSA9IGdldE11bHRpcGxlUHJpb3JpdHkoY29sdW1uKTtcbiAgICAgICAgcmV0dXJuIHsgY29tcGFyZUZuLCBvcmRlcjogc3RhdGUub3JkZXIsIHByaW9yaXR5IH07XG4gICAgfSlcbiAgICAgICAgLmZpbHRlcihCb29sZWFuKTtcbiAgICBpZiAocnVubmluZ1NvcnRlcnMubGVuZ3RoID09PSAwKVxuICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAvLyBIaWdoZXIgcHJpb3JpdHkgbnVtYmVyID0gY29tcGFyZWQgZmlyc3RcbiAgICBydW5uaW5nU29ydGVycy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgIGNvbnN0IGFwID0gdHlwZW9mIGEucHJpb3JpdHkgPT09ICdudW1iZXInID8gYS5wcmlvcml0eSA6IDA7XG4gICAgICAgIGNvbnN0IGJwID0gdHlwZW9mIGIucHJpb3JpdHkgPT09ICdudW1iZXInID8gYi5wcmlvcml0eSA6IDA7XG4gICAgICAgIHJldHVybiBicCAtIGFwO1xuICAgIH0pO1xuICAgIHNvcnRlZC5zb3J0KChyZWNvcmQxLCByZWNvcmQyKSA9PiB7XG4gICAgICAgIGZvciAoY29uc3QgeyBjb21wYXJlRm4sIG9yZGVyIH0gb2YgcnVubmluZ1NvcnRlcnMpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGNvbXBhcmVGbihyZWNvcmQxLCByZWNvcmQyKTtcbiAgICAgICAgICAgIGlmIChyZXN1bHQgIT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb3JkZXIgPT09ICdhc2NlbmQnID8gcmVzdWx0IDogLXJlc3VsdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gMDtcbiAgICB9KTtcbiAgICByZXR1cm4gc29ydGVkO1xufVxuZnVuY3Rpb24gYXBwbHlGaWx0ZXJzVG9EYXRhKGRhdGEsIGNvbHVtbnMsIGZpbHRlcnMpIHtcbiAgICAvLyBSZXNvbHZlIHdoaWNoIGNvbHVtbnMgaGF2ZSBhbiBhY3RpdmUgZmlsdGVyIHNlbGVjdGlvbiBBTkQgYSBwcmVkaWNhdGUuXG4gICAgY29uc3QgYWN0aXZlRmlsdGVycyA9IGNvbHVtbnNcbiAgICAgICAgLm1hcCgoY29sKSA9PiB7XG4gICAgICAgIGlmIChjb2wua2V5ID09IG51bGwpXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSBmaWx0ZXJzW1N0cmluZyhjb2wua2V5KV07XG4gICAgICAgIGlmICghc2VsZWN0ZWQgfHwgc2VsZWN0ZWQubGVuZ3RoID09PSAwKVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIGlmICghY29sLm9uRmlsdGVyKVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIHJldHVybiB7IG9uRmlsdGVyOiBjb2wub25GaWx0ZXIsIHNlbGVjdGVkIH07XG4gICAgfSlcbiAgICAgICAgLmZpbHRlcihCb29sZWFuKTtcbiAgICBpZiAoYWN0aXZlRmlsdGVycy5sZW5ndGggPT09IDApXG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgIHJldHVybiBkYXRhLmZpbHRlcigocmVjb3JkKSA9PiBcbiAgICAvLyBSb3cgcGFzc2VzIG9ubHkgaWYgRVZFUlkgYWN0aXZlIGNvbHVtbiBoYXMgYXQgbGVhc3Qgb25lIG1hdGNoaW5nIHNlbGVjdGVkIHZhbHVlLlxuICAgIGFjdGl2ZUZpbHRlcnMuZXZlcnkoKHsgb25GaWx0ZXIsIHNlbGVjdGVkIH0pID0+IHNlbGVjdGVkLnNvbWUoKHZhbHVlKSA9PiBvbkZpbHRlcih2YWx1ZSwgcmVjb3JkKSkpKTtcbn1cbmV4cG9ydCBjb25zdCBhcHBseVRhYmxlUGlwZWxpbmUgPSAoeyBjb2x1bW5zLCBkYXRhU291cmNlLCBzb3J0ZXIsIGZpbHRlcnMgPSB7fSwgcGFnaW5hdGlvbiwgfSkgPT4ge1xuICAgIGNvbnN0IHNvcnRlclN0YXRlcyA9IHNvcnRlci5jb2x1bW5LZXkgIT0gbnVsbCAmJiBzb3J0ZXIub3JkZXJcbiAgICAgICAgPyBbeyBjb2x1bW5LZXk6IHNvcnRlci5jb2x1bW5LZXksIG9yZGVyOiBzb3J0ZXIub3JkZXIgfV1cbiAgICAgICAgOiBbXTtcbiAgICBjb25zdCBsZWFmQ29sdW1ucyA9IGZsYXR0ZW5Db2x1bW5zKGNvbHVtbnMpO1xuICAgIGNvbnN0IGZpbHRlcmVkID0gYXBwbHlGaWx0ZXJzVG9EYXRhKGRhdGFTb3VyY2UsIGxlYWZDb2x1bW5zLCBmaWx0ZXJzKTtcbiAgICBjb25zdCBzb3J0ZWQgPSBhcHBseVNvcnRUb0RhdGEoZmlsdGVyZWQsIGxlYWZDb2x1bW5zLCBzb3J0ZXJTdGF0ZXMpO1xuICAgIGlmICghcGFnaW5hdGlvbikge1xuICAgICAgICByZXR1cm4geyBjdXJyZW50RGF0YVNvdXJjZTogc29ydGVkLCB0b3RhbDogc29ydGVkLmxlbmd0aCB9O1xuICAgIH1cbiAgICBjb25zdCBzdGFydCA9IChwYWdpbmF0aW9uLmN1cnJlbnQgLSAxKSAqIHBhZ2luYXRpb24ucGFnZVNpemU7XG4gICAgY29uc3QgZW5kID0gc3RhcnQgKyBwYWdpbmF0aW9uLnBhZ2VTaXplO1xuICAgIHJldHVybiB7XG4gICAgICAgIGN1cnJlbnREYXRhU291cmNlOiBzb3J0ZWQuc2xpY2Uoc3RhcnQsIGVuZCksXG4gICAgICAgIHRvdGFsOiBzb3J0ZWQubGVuZ3RoLFxuICAgIH07XG59O1xuZnVuY3Rpb24gY29sbGVjdFNvcnRlclN0YXRlcyhsZWF2ZXMpIHtcbiAgICB2YXIgX2E7XG4gICAgY29uc3Qgc3RhdGVzID0gW107XG4gICAgZm9yIChjb25zdCBjb2wgb2YgbGVhdmVzKSB7XG4gICAgICAgIGNvbnN0IG9yZGVyID0gKF9hID0gY29sLnNvcnRPcmRlcikgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogY29sLmRlZmF1bHRTb3J0T3JkZXI7XG4gICAgICAgIGlmIChjb2wua2V5ICE9IG51bGwgJiYgb3JkZXIpIHtcbiAgICAgICAgICAgIHN0YXRlcy5wdXNoKHsgY29sdW1uS2V5OiBjb2wua2V5LCBvcmRlciB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gc3RhdGVzO1xufVxuY29uc3QgZ2V0SW5pdGlhbFNvcnRlciA9IChsZWF2ZXMpID0+IHtcbiAgICBjb25zdCBzdGF0ZXMgPSBjb2xsZWN0U29ydGVyU3RhdGVzKGxlYXZlcyk7XG4gICAgaWYgKHN0YXRlcy5sZW5ndGggPT09IDApXG4gICAgICAgIHJldHVybiB7fTtcbiAgICByZXR1cm4geyBjb2x1bW5LZXk6IHN0YXRlc1swXS5jb2x1bW5LZXksIG9yZGVyOiBzdGF0ZXNbMF0ub3JkZXIgfTtcbn07XG5jb25zdCBnZXRDb250cm9sbGVkU29ydGVyID0gKGxlYXZlcykgPT4ge1xuICAgIHZhciBfYTtcbiAgICBjb25zdCBjb250cm9sbGVkQ29sdW1uID0gbGVhdmVzLmZpbmQoKGNvbHVtbikgPT4gY29sdW1uLnNvcnRPcmRlciAhPT0gdW5kZWZpbmVkKTtcbiAgICBpZiAoIWNvbnRyb2xsZWRDb2x1bW4pIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgY29sdW1uS2V5OiBjb250cm9sbGVkQ29sdW1uLmtleSxcbiAgICAgICAgb3JkZXI6IChfYSA9IGNvbnRyb2xsZWRDb2x1bW4uc29ydE9yZGVyKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBudWxsLFxuICAgIH07XG59O1xuY29uc3QgZ2V0SW5pdGlhbEZpbHRlcnMgPSAobGVhdmVzKSA9PiB7XG4gICAgdmFyIF9hO1xuICAgIGNvbnN0IHN0YXRlID0ge307XG4gICAgZm9yIChjb25zdCBjb2wgb2YgbGVhdmVzKSB7XG4gICAgICAgIGlmIChjb2wua2V5ID09IG51bGwpXG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgY29uc3QgaW5pdGlhbCA9IChfYSA9IGNvbC5kZWZhdWx0RmlsdGVyZWRWYWx1ZSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogY29sLmZpbHRlcmVkVmFsdWU7XG4gICAgICAgIGlmIChpbml0aWFsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHN0YXRlW1N0cmluZyhjb2wua2V5KV0gPSBpbml0aWFsICE9PSBudWxsICYmIGluaXRpYWwgIT09IHZvaWQgMCA/IGluaXRpYWwgOiBudWxsO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzdGF0ZTtcbn07XG5jb25zdCBnZXRDb250cm9sbGVkRmlsdGVycyA9IChsZWF2ZXMpID0+IHtcbiAgICBsZXQgaGFzQ29udHJvbGxlZCA9IGZhbHNlO1xuICAgIGNvbnN0IHN0YXRlID0ge307XG4gICAgZm9yIChjb25zdCBjb2wgb2YgbGVhdmVzKSB7XG4gICAgICAgIGlmIChjb2wua2V5ID09IG51bGwpXG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgaWYgKGNvbC5maWx0ZXJlZFZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGhhc0NvbnRyb2xsZWQgPSB0cnVlO1xuICAgICAgICAgICAgc3RhdGVbU3RyaW5nKGNvbC5rZXkpXSA9IGNvbC5maWx0ZXJlZFZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBoYXNDb250cm9sbGVkID8gc3RhdGUgOiB1bmRlZmluZWQ7XG59O1xuLyoqXG4gKiBSZXR1cm5zIGEgdmFsdWUgd2hvc2UgcmVmZXJlbmNlIGlzIHByZXNlcnZlZCBhY3Jvc3MgcmVuZGVycyBhcyBsb25nIGFzIHRoZVxuICogc2hhbGxvdyBjb250ZW50cyBhcmUgdW5jaGFuZ2VkIChwZXIgYGVxdWFsYCkuIFVzZWQgdG8gc3RhYmlsaXNlIHRoZSBkZXJpdmVkXG4gKiBjb250cm9sbGVkIGNhbmRpZGF0ZXMgZmVkIHRvIGB1c2VDb250cm9sbGVkU3RhdGVgIOKAlCB0aGV5IHdvdWxkIG90aGVyd2lzZSBiZVxuICogZnJlc2ggb2JqZWN0cyBldmVyeSByZW5kZXIgYW5kIHRocmFzaCB0aGUgaG9vaydzIGludGVybmFsIGB1c2VMYXlvdXRFZmZlY3RgLlxuICovXG5mdW5jdGlvbiB1c2VTdGFibGVSZWYodmFsdWUsIGVxdWFsKSB7XG4gICAgY29uc3QgcmVmID0gdXNlUmVmKHZhbHVlKTtcbiAgICBpZiAoIWVxdWFsKHJlZi5jdXJyZW50LCB2YWx1ZSkpIHtcbiAgICAgICAgcmVmLmN1cnJlbnQgPSB2YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHJlZi5jdXJyZW50O1xufVxuZnVuY3Rpb24gc29ydGVyRXF1YWwoYSwgYikge1xuICAgIGlmIChhID09PSBiKVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICBpZiAoIWEgfHwgIWIpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gYS5jb2x1bW5LZXkgPT09IGIuY29sdW1uS2V5ICYmIGEub3JkZXIgPT09IGIub3JkZXI7XG59XG5mdW5jdGlvbiBmaWx0ZXJWYWx1ZUVxdWFsKGEsIGIpIHtcbiAgICBpZiAoYSA9PT0gYilcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgaWYgKCFhIHx8ICFiKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgaWYgKGEubGVuZ3RoICE9PSBiLmxlbmd0aClcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoYVtpXSAhPT0gYltpXSlcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG5mdW5jdGlvbiBmaWx0ZXJzRXF1YWwoYSwgYikge1xuICAgIGlmIChhID09PSBiKVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICBpZiAoIWEgfHwgIWIpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCBrZXlzQSA9IE9iamVjdC5rZXlzKGEpO1xuICAgIGNvbnN0IGtleXNCID0gT2JqZWN0LmtleXMoYik7XG4gICAgaWYgKGtleXNBLmxlbmd0aCAhPT0ga2V5c0IubGVuZ3RoKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgZm9yIChjb25zdCBrZXkgb2Yga2V5c0EpIHtcbiAgICAgICAgaWYgKCFmaWx0ZXJWYWx1ZUVxdWFsKGFba2V5XSwgYltrZXldKSlcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG5leHBvcnQgY29uc3QgdXNlVGFibGVEYXRhUGlwZWxpbmUgPSAoeyBjb2x1bW5zLCBkYXRhU291cmNlLCBwYWdpbmF0aW9uLCBvbkNoYW5nZSwgfSkgPT4ge1xuICAgIHZhciBfYSwgX2IsIF9jLCBfZDtcbiAgICAvLyBGbGF0dGVuIG9uY2UgcGVyIGBjb2x1bW5zYCBjaGFuZ2UgYW5kIHNoYXJlIHRoZSBsZWFmIGxpc3QgYWNyb3NzIGV2ZXJ5XG4gICAgLy8gZGVyaXZlIHN0ZXAgYmVsb3cg4oCUIHRoZXkgdXNlZCB0byBlYWNoIHJlLWZsYXR0ZW4gb24gZXZlcnkgcmVuZGVyLlxuICAgIGNvbnN0IGxlYXZlcyA9IHVzZU1lbW8oKCkgPT4gZmxhdHRlbkNvbHVtbnMoY29sdW1ucyksIFtjb2x1bW5zXSk7XG4gICAgLy8gU29ydGVyIC8gZmlsdGVycyBhcmUgXCJkZXJpdmVkIGNvbnRyb2xsZWRcIiDigJQgdGhlIGNvbnRyb2xsZWQgdmFsdWUgaXMgYnVpbHRcbiAgICAvLyBieSBzY2FubmluZyBjb2x1bW4gcHJvcHMgKGBzb3J0T3JkZXJgIC8gYGZpbHRlcmVkVmFsdWVgKSwgc28gYGdldENvbnRyb2xsZWQqYFxuICAgIC8vIHJldHVybnMgYSBmcmVzaCBvYmplY3QgZXZlcnkgcmVuZGVyIGV2ZW4gd2hlbiB0aGUgdW5kZXJseWluZyBpbnB1dHMgYXJlXG4gICAgLy8gdW5jaGFuZ2VkLiBXaXRob3V0IHN0YWJpbGlzYXRpb24sIGB1c2VDb250cm9sbGVkU3RhdGVgJ3MgaW50ZXJuYWxcbiAgICAvLyBgdXNlTGF5b3V0RWZmZWN0KFt2YWx1ZV0pYCB3b3VsZCByZS1zeW5jIG9uIGV2ZXJ5IHJlbmRlciDihpIgaW5maW5pdGUgbG9vcC5cbiAgICAvLyBQaW4gdGhlIHJlZmVyZW5jZSB2aWEgYSBzaGFsbG93LWVxdWFsIHJlZi5cbiAgICBjb25zdCBjb250cm9sbGVkU29ydGVyID0gdXNlU3RhYmxlUmVmKGdldENvbnRyb2xsZWRTb3J0ZXIobGVhdmVzKSwgc29ydGVyRXF1YWwpO1xuICAgIGNvbnN0IGNvbnRyb2xsZWRGaWx0ZXJzID0gdXNlU3RhYmxlUmVmKGdldENvbnRyb2xsZWRGaWx0ZXJzKGxlYXZlcyksIGZpbHRlcnNFcXVhbCk7XG4gICAgLy8gSW5pdGlhbCBzb3J0ZXIgLyBmaWx0ZXJzIG9ubHkgbWF0dGVyIG9uIG1vdW50LCBzbyBtZW1vaXNlIHRoZW0gb24gYGxlYXZlc2BcbiAgICAvLyBpbnN0ZWFkIG9mIHJlY29tcHV0aW5nIChhbmQgcmUtZmxhdHRlbmluZykgZXZlcnkgcmVuZGVyLlxuICAgIGNvbnN0IGluaXRpYWxTb3J0ZXIgPSB1c2VNZW1vKCgpID0+IGdldEluaXRpYWxTb3J0ZXIobGVhdmVzKSwgW2xlYXZlc10pO1xuICAgIGNvbnN0IGluaXRpYWxGaWx0ZXJzID0gdXNlTWVtbygoKSA9PiBnZXRJbml0aWFsRmlsdGVycyhsZWF2ZXMpLCBbbGVhdmVzXSk7XG4gICAgY29uc3QgW3NvcnRlciwgc2V0U29ydGVyXSA9IHVzZUNvbnRyb2xsZWRTdGF0ZShpbml0aWFsU29ydGVyLCBjb250cm9sbGVkU29ydGVyKTtcbiAgICBjb25zdCBbZmlsdGVycywgc2V0RmlsdGVyc10gPSB1c2VDb250cm9sbGVkU3RhdGUoaW5pdGlhbEZpbHRlcnMsIGNvbnRyb2xsZWRGaWx0ZXJzKTtcbiAgICBjb25zdCBbY3VycmVudCwgc2V0Q3VycmVudF0gPSB1c2VDb250cm9sbGVkU3RhdGUocGFnaW5hdGlvbiA9PT0gZmFsc2UgPyAxIDogKChfYiA9IChfYSA9IHBhZ2luYXRpb24gPT09IG51bGwgfHwgcGFnaW5hdGlvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogcGFnaW5hdGlvbi5kZWZhdWx0Q3VycmVudCkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogcGFnaW5hdGlvbiA9PT0gbnVsbCB8fCBwYWdpbmF0aW9uID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwYWdpbmF0aW9uLmN1cnJlbnQpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IDEpLCBwYWdpbmF0aW9uID09PSBmYWxzZSA/IHVuZGVmaW5lZCA6IHBhZ2luYXRpb24gPT09IG51bGwgfHwgcGFnaW5hdGlvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogcGFnaW5hdGlvbi5jdXJyZW50KTtcbiAgICBjb25zdCBbcGFnZVNpemUsIHNldFBhZ2VTaXplXSA9IHVzZUNvbnRyb2xsZWRTdGF0ZShwYWdpbmF0aW9uID09PSBmYWxzZSA/IDEwIDogKChfZCA9IChfYyA9IHBhZ2luYXRpb24gPT09IG51bGwgfHwgcGFnaW5hdGlvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogcGFnaW5hdGlvbi5kZWZhdWx0UGFnZVNpemUpICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6IHBhZ2luYXRpb24gPT09IG51bGwgfHwgcGFnaW5hdGlvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogcGFnaW5hdGlvbi5wYWdlU2l6ZSkgIT09IG51bGwgJiYgX2QgIT09IHZvaWQgMCA/IF9kIDogMTApLCBwYWdpbmF0aW9uID09PSBmYWxzZSA/IHVuZGVmaW5lZCA6IHBhZ2luYXRpb24gPT09IG51bGwgfHwgcGFnaW5hdGlvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogcGFnaW5hdGlvbi5wYWdlU2l6ZSk7XG4gICAgLy8gTWVtb2lzZSBvbiBwcmltaXRpdmVzIOKAlCBhIGZyZXNoIGB7IGN1cnJlbnQsIHBhZ2VTaXplIH1gIGxpdGVyYWwgZXZlcnkgcmVuZGVyXG4gICAgLy8gd291bGQgZGVmZWF0IHRoZSBgcmVzdWx0YCBtZW1vIGJlbG93IGFuZCByZS1ydW4gZmlsdGVyICsgc29ydCArIHNsaWNlIG9uXG4gICAgLy8gZXZlcnkgdW5yZWxhdGVkIHJlLXJlbmRlci5cbiAgICBjb25zdCBwYWdpbmF0aW9uRW5hYmxlZCA9IHBhZ2luYXRpb24gIT09IGZhbHNlO1xuICAgIGNvbnN0IG1lcmdlZFBhZ2luYXRpb24gPSB1c2VNZW1vKCgpID0+IChwYWdpbmF0aW9uRW5hYmxlZCA/IHsgY3VycmVudCwgcGFnZVNpemUgfSA6IGZhbHNlKSwgW3BhZ2luYXRpb25FbmFibGVkLCBjdXJyZW50LCBwYWdlU2l6ZV0pO1xuICAgIGNvbnN0IHNvcnRlclN0YXRlcyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICAvLyBTdGFydCB3aXRoIHRoZSBwcmltYXJ5IHVzZXItdG9nZ2xlZCBzb3J0ZXJcbiAgICAgICAgY29uc3QgcHJpbWFyeSA9IHNvcnRlci5jb2x1bW5LZXkgIT0gbnVsbCAmJiBzb3J0ZXIub3JkZXJcbiAgICAgICAgICAgID8gW3sgY29sdW1uS2V5OiBzb3J0ZXIuY29sdW1uS2V5LCBvcmRlcjogc29ydGVyLm9yZGVyIH1dXG4gICAgICAgICAgICA6IFtdO1xuICAgICAgICAvLyBDb2xsZWN0IGFueSBvdGhlciBjb2x1bW5zIHRoYXQgaGF2ZSBhIGNvbnRyb2xsZWQgc29ydE9yZGVyIChmb3IgbXVsdGktc29ydClcbiAgICAgICAgY29uc3QgYWRkaXRpb25hbCA9IGxlYXZlc1xuICAgICAgICAgICAgLmZpbHRlcigoY29sKSA9PiBjb2wua2V5ICE9IG51bGwgJiYgY29sLnNvcnRPcmRlciAmJiBjb2wua2V5ICE9PSBzb3J0ZXIuY29sdW1uS2V5KVxuICAgICAgICAgICAgLm1hcCgoY29sKSA9PiAoeyBjb2x1bW5LZXk6IGNvbC5rZXksIG9yZGVyOiBjb2wuc29ydE9yZGVyIH0pKTtcbiAgICAgICAgcmV0dXJuIFsuLi5wcmltYXJ5LCAuLi5hZGRpdGlvbmFsXTtcbiAgICB9LCBbc29ydGVyLCBsZWF2ZXNdKTtcbiAgICBjb25zdCByZXN1bHQgPSB1c2VNZW1vKCgpID0+IGFwcGx5VGFibGVQaXBlbGluZSh7XG4gICAgICAgIGNvbHVtbnMsXG4gICAgICAgIGRhdGFTb3VyY2UsXG4gICAgICAgIHNvcnRlcixcbiAgICAgICAgZmlsdGVycyxcbiAgICAgICAgcGFnaW5hdGlvbjogbWVyZ2VkUGFnaW5hdGlvbixcbiAgICB9KSwgW2NvbHVtbnMsIGRhdGFTb3VyY2UsIHNvcnRlciwgZmlsdGVycywgbWVyZ2VkUGFnaW5hdGlvbl0pO1xuICAgIGNvbnN0IGVtaXRDaGFuZ2UgPSB1c2VNZW1vaXplZEZuKChuZXh0RGF0YVNvdXJjZSwgYWN0aW9uLCBuZXh0U3RhdGUpID0+IHtcbiAgICAgICAgb25DaGFuZ2UgPT09IG51bGwgfHwgb25DaGFuZ2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQ2hhbmdlKHtcbiAgICAgICAgICAgIGN1cnJlbnREYXRhU291cmNlOiBuZXh0RGF0YVNvdXJjZSxcbiAgICAgICAgICAgIGFjdGlvbixcbiAgICAgICAgICAgIHNvcnRlcjogbmV4dFN0YXRlLnNvcnRlcixcbiAgICAgICAgICAgIGZpbHRlcnM6IG5leHRTdGF0ZS5maWx0ZXJzLFxuICAgICAgICAgICAgcGFnaW5hdGlvbjogbmV4dFN0YXRlLnBhZ2luYXRpb24sXG4gICAgICAgIH0pO1xuICAgIH0pO1xuICAgIC8vIHVzZU1lbW9pemVkRm46IHN0YWJsZSByZWYsIGFsd2F5cyBjYWxscyBsYXRlc3QgY2xvc3VyZSDigJQgbm8gc3RhbGUgZGVwcyByaXNrXG4gICAgY29uc3Qgd3JhcHBlZFNldFNvcnRlciA9IHVzZU1lbW9pemVkRm4oKHVwZGF0ZXIpID0+IHtcbiAgICAgICAgY29uc3QgbmV4dFNvcnRlciA9IHR5cGVvZiB1cGRhdGVyID09PSAnZnVuY3Rpb24nID8gdXBkYXRlcihzb3J0ZXIpIDogdXBkYXRlcjtcbiAgICAgICAgc2V0U29ydGVyKG5leHRTb3J0ZXIpO1xuICAgICAgICAvLyBSZXNldCBwYWdpbmF0aW9uIHRvIHBhZ2UgMSB3aGVuIHNvcnRpbmcgY2hhbmdlc1xuICAgICAgICBpZiAobWVyZ2VkUGFnaW5hdGlvbiAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHNldEN1cnJlbnQoMSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9uQ2hhbmdlKSB7XG4gICAgICAgICAgICBjb25zdCByZXNldFBhZ2luYXRpb24gPSBtZXJnZWRQYWdpbmF0aW9uID09PSBmYWxzZVxuICAgICAgICAgICAgICAgID8gZmFsc2VcbiAgICAgICAgICAgICAgICA6IHsgY3VycmVudDogMSwgcGFnZVNpemUgfTtcbiAgICAgICAgICAgIGNvbnN0IG5leHRSZXN1bHQgPSBhcHBseVRhYmxlUGlwZWxpbmUoe1xuICAgICAgICAgICAgICAgIGNvbHVtbnMsXG4gICAgICAgICAgICAgICAgZGF0YVNvdXJjZSxcbiAgICAgICAgICAgICAgICBzb3J0ZXI6IG5leHRTb3J0ZXIsXG4gICAgICAgICAgICAgICAgZmlsdGVycyxcbiAgICAgICAgICAgICAgICBwYWdpbmF0aW9uOiByZXNldFBhZ2luYXRpb24sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGVtaXRDaGFuZ2UobmV4dFJlc3VsdC5jdXJyZW50RGF0YVNvdXJjZSwgJ3NvcnQnLCB7XG4gICAgICAgICAgICAgICAgc29ydGVyOiBuZXh0U29ydGVyLFxuICAgICAgICAgICAgICAgIGZpbHRlcnMsXG4gICAgICAgICAgICAgICAgcGFnaW5hdGlvbjogcmVzZXRQYWdpbmF0aW9uLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCB3cmFwcGVkU2V0RmlsdGVycyA9IHVzZU1lbW9pemVkRm4oKHVwZGF0ZXIpID0+IHtcbiAgICAgICAgY29uc3QgbmV4dEZpbHRlcnMgPSB0eXBlb2YgdXBkYXRlciA9PT0gJ2Z1bmN0aW9uJyA/IHVwZGF0ZXIoZmlsdGVycykgOiB1cGRhdGVyO1xuICAgICAgICBzZXRGaWx0ZXJzKG5leHRGaWx0ZXJzKTtcbiAgICAgICAgLy8gUmVzZXQgcGFnaW5hdGlvbiB0byBwYWdlIDEgd2hlbiBmaWx0ZXJzIGNoYW5nZVxuICAgICAgICBpZiAobWVyZ2VkUGFnaW5hdGlvbiAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHNldEN1cnJlbnQoMSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9uQ2hhbmdlKSB7XG4gICAgICAgICAgICBjb25zdCByZXNldFBhZ2luYXRpb24gPSBtZXJnZWRQYWdpbmF0aW9uID09PSBmYWxzZVxuICAgICAgICAgICAgICAgID8gZmFsc2VcbiAgICAgICAgICAgICAgICA6IHsgY3VycmVudDogMSwgcGFnZVNpemUgfTtcbiAgICAgICAgICAgIGNvbnN0IG5leHRSZXN1bHQgPSBhcHBseVRhYmxlUGlwZWxpbmUoe1xuICAgICAgICAgICAgICAgIGNvbHVtbnMsXG4gICAgICAgICAgICAgICAgZGF0YVNvdXJjZSxcbiAgICAgICAgICAgICAgICBzb3J0ZXIsXG4gICAgICAgICAgICAgICAgZmlsdGVyczogbmV4dEZpbHRlcnMsXG4gICAgICAgICAgICAgICAgcGFnaW5hdGlvbjogcmVzZXRQYWdpbmF0aW9uLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBlbWl0Q2hhbmdlKG5leHRSZXN1bHQuY3VycmVudERhdGFTb3VyY2UsICdmaWx0ZXInLCB7XG4gICAgICAgICAgICAgICAgc29ydGVyLFxuICAgICAgICAgICAgICAgIGZpbHRlcnM6IG5leHRGaWx0ZXJzLFxuICAgICAgICAgICAgICAgIHBhZ2luYXRpb246IHJlc2V0UGFnaW5hdGlvbixcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgY29uc3Qgd3JhcHBlZFNldFBhZ2luYXRpb24gPSB1c2VNZW1vaXplZEZuKCh1cGRhdGVyKSA9PiB7XG4gICAgICAgIGlmIChwYWdpbmF0aW9uID09PSBmYWxzZSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgY3VycmVudFZhbHVlID0geyBjdXJyZW50LCBwYWdlU2l6ZSB9O1xuICAgICAgICBjb25zdCBuZXh0VmFsdWUgPSB0eXBlb2YgdXBkYXRlciA9PT0gJ2Z1bmN0aW9uJyA/IHVwZGF0ZXIoY3VycmVudFZhbHVlKSA6IHVwZGF0ZXI7XG4gICAgICAgIHNldEN1cnJlbnQobmV4dFZhbHVlLmN1cnJlbnQpO1xuICAgICAgICBzZXRQYWdlU2l6ZShuZXh0VmFsdWUucGFnZVNpemUpO1xuICAgICAgICBpZiAob25DaGFuZ2UpIHtcbiAgICAgICAgICAgIGNvbnN0IG5leHRSZXN1bHQgPSBhcHBseVRhYmxlUGlwZWxpbmUoe1xuICAgICAgICAgICAgICAgIGNvbHVtbnMsXG4gICAgICAgICAgICAgICAgZGF0YVNvdXJjZSxcbiAgICAgICAgICAgICAgICBzb3J0ZXIsXG4gICAgICAgICAgICAgICAgZmlsdGVycyxcbiAgICAgICAgICAgICAgICBwYWdpbmF0aW9uOiBuZXh0VmFsdWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGVtaXRDaGFuZ2UobmV4dFJlc3VsdC5jdXJyZW50RGF0YVNvdXJjZSwgJ3BhZ2luYXRlJywge1xuICAgICAgICAgICAgICAgIHNvcnRlcixcbiAgICAgICAgICAgICAgICBmaWx0ZXJzLFxuICAgICAgICAgICAgICAgIHBhZ2luYXRpb246IG5leHRWYWx1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgcmVzdWx0KSwgeyBzb3J0ZXIsXG4gICAgICAgIHNvcnRlclN0YXRlcyxcbiAgICAgICAgZmlsdGVycywgcGFnaW5hdGlvbjogbWVyZ2VkUGFnaW5hdGlvbiwgc2V0U29ydGVyOiB3cmFwcGVkU2V0U29ydGVyLCBzZXRGaWx0ZXJzOiB3cmFwcGVkU2V0RmlsdGVycywgc2V0UGFnaW5hdGlvbjogd3JhcHBlZFNldFBhZ2luYXRpb24gfSk7XG59OyJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
@@ -1,6 +1,7 @@
1
1
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
2
  import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
3
- import { useControlledState, useMemoizedFn } from '@1money/hooks';
3
+ import useControlledState from '@1money/hooks/useControlledState';
4
+ import useMemoizedFn from '@1money/hooks/useMemoizedFn';
4
5
  export var useTableExpand = function useTableExpand(_ref) {
5
6
  var expandable = _ref.expandable,
6
7
  dataSource = _ref.dataSource,
@@ -60,4 +61,4 @@ export var useTableExpand = function useTableExpand(_ref) {
60
61
  onKernelExpand: onKernelExpand
61
62
  };
62
63
  };
63
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvVGFibGUvc3JjL2NvbXBvbmVudHMvVGFibGUvY29yZS91c2VUYWJsZUV4cGFuZC50cyIsImNvbXBvbmVudHMvVGFibGUvY29yZS91c2VUYWJsZUV4cGFuZC5qcyJdLCJuYW1lcyI6WyJ1c2VDb250cm9sbGVkU3RhdGUiLCJ1c2VNZW1vaXplZEZuIiwidXNlVGFibGVFeHBhbmQiLCJfcmVmIiwiZXhwYW5kYWJsZSIsImRhdGFTb3VyY2UiLCJnZXRSb3dLZXkiLCJjb21wdXRlRGVmYXVsdEtleXMiLCJkZWZhdWx0RXhwYW5kZWRSb3dLZXlzIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiZGVmYXVsdEV4cGFuZEFsbFJvd3MiLCJyb3dFeHBhbmRhYmxlIiwibWFwIiwicmVjb3JkIiwiaW5kZXgiLCJrZXkiLCJmaWx0ZXIiLCJfcmVmMiIsIl9yZWYzIiwiX3VzZUNvbnRyb2xsZWRTdGF0ZSIsImV4cGFuZGVkUm93S2V5cyIsIl91c2VDb250cm9sbGVkU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJtZXJnZWRFeHBhbmRlZFJvd0tleXMiLCJzZXRNZXJnZWRFeHBhbmRlZFJvd0tleXMiLCJ0cmlnZ2VyRXhwYW5kIiwicmVjb3JkS2V5IiwiX2EiLCJfYiIsImV4cGFuZGVkIiwiaW5jbHVkZXMiLCJuZXh0S2V5cyIsImNvbmNhdCIsIm9uRXhwYW5kIiwiY2FsbCIsIm9uRXhwYW5kZWRSb3dzQ2hhbmdlIiwib25LZXJuZWxFeHBhbmQiXSwibWFwcGluZ3MiOiI7O0FBQ0EsU0FBU0Esa0JBQWtCLEVBQUVDLGFBQWEsUUFBUSxlQUFlO0FBR2pFLE9BQU8sSUFBTUMsY0FBYyxHQUFHLFNBQWpCQSxjQUFjQSxDQUFBQyxJQUFBLEVBUXRCO0VBQUEsSUFQSEMsVUFBVSxHQUFBRCxJQUFBLENBQVZDLFVBQVU7SUFDVkMsVUFBVSxHQUFBRixJQUFBLENBQVZFLFVBQVU7SUFDVkMsU0FBUyxHQUFBSCxJQUFBLENBQVRHLFNBQVM7RUFNVDtFQUNBO0VBQ0EsSUFB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LElBQUFQLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBQUEsRUFBQSxDQUFBTSxJQUFBLENBQUE5QixVQUFBLEVBQUcyQixRQUFRLENBQUM7RUFDOUMsQ0FBQyxDQUFDO0VBRUYsT0FBTztJQUNMUixxQkFBcUIsRUFBckJBLHFCQUFxQjtJQUNyQkUsYUFBYSxFQUFiQSxhQUFhO0lBQ2JXLGNBQWMsRUFBZEE7RUNmQSxDRGdCRDtBQUNILENBQUMiLCJmaWxlIjoiY29tcG9uZW50cy9UYWJsZS9jb3JlL3VzZVRhYmxlRXhwYW5kLmpzIiwic291cmNlc0NvbnRlbnQiOltudWxsLCJpbXBvcnQgeyB1c2VDb250cm9sbGVkU3RhdGUsIHVzZU1lbW9pemVkRm4gfSBmcm9tICdAMW1vbmV5L2hvb2tzJztcbmV4cG9ydCBjb25zdCB1c2VUYWJsZUV4cGFuZCA9ICh7IGV4cGFuZGFibGUsIGRhdGFTb3VyY2UsIGdldFJvd0tleSwgfSkgPT4ge1xuICAgIC8vIE1hdGNoIHRhYmxlOiBgZGVmYXVsdEV4cGFuZEFsbFJvd3NgIHNlZWRzIGluaXRpYWwgZXhwYW5zaW9uIHdpdGggZXZlcnlcbiAgICAvLyByb3cgd2hvc2Uga2V5IGlzIGV4cGFuZGFibGUuIGByb3dFeHBhbmRhYmxlYCAoaWYgcHJlc2VudCkgc3RpbGwgZ2F0ZXMgdGhpcy5cbiAgICBjb25zdCBjb21wdXRlRGVmYXVsdEtleXMgPSAoKSA9PiB7XG4gICAgICAgIGlmIChleHBhbmRhYmxlID09PSBudWxsIHx8IGV4cGFuZGFibGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGV4cGFuZGFibGUuZGVmYXVsdEV4cGFuZGVkUm93S2V5cylcbiAgICAgICAgICAgIHJldHVybiBbLi4uZXhwYW5kYWJsZS5kZWZhdWx0RXhwYW5kZWRSb3dLZXlzXTtcbiAgICAgICAgaWYgKCEoZXhwYW5kYWJsZSA9PT0gbnVsbCB8fCBleHBhbmRhYmxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBleHBhbmRhYmxlLmRlZmF1bHRFeHBhbmRBbGxSb3dzKSB8fCAhZGF0YVNvdXJjZSB8fCAhZ2V0Um93S2V5KVxuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICBjb25zdCByb3dFeHBhbmRhYmxlID0gZXhwYW5kYWJsZS5yb3dFeHBhbmRhYmxlO1xuICAgICAgICByZXR1cm4gZGF0YVNvdXJjZVxuICAgICAgICAgICAgLm1hcCgocmVjb3JkLCBpbmRleCkgPT4gKHsgcmVjb3JkLCBrZXk6IGdldFJvd0tleShyZWNvcmQsIGluZGV4KSB9KSlcbiAgICAgICAgICAgIC5maWx0ZXIoKHsgcmVjb3JkIH0pID0+IChyb3dFeHBhbmRhYmxlID8gcm93RXhwYW5kYWJsZShyZWNvcmQpIDogdHJ1ZSkpXG4gICAgICAgICAgICAubWFwKCh7IGtleSB9KSA9PiBrZXkpO1xuICAgIH07XG4gICAgY29uc3QgW21lcmdlZEV4cGFuZGVkUm93S2V5cywgc2V0TWVyZ2VkRXhwYW5kZWRSb3dLZXlzXSA9IHVzZUNvbnRyb2xsZWRTdGF0ZShjb21wdXRlRGVmYXVsdEtleXMoKSwgZXhwYW5kYWJsZSA9PT0gbnVsbCB8fCBleHBhbmRhYmxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBleHBhbmRhYmxlLmV4cGFuZGVkUm93S2V5cyk7XG4gICAgY29uc3QgdHJpZ2dlckV4cGFuZCA9IHVzZU1lbW9pemVkRm4oKHJlY29yZEtleSwgcmVjb3JkKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIC8vIEhvbm9yIGByb3dFeHBhbmRhYmxlYDogcm93cyB0aGUgcHJlZGljYXRlIGRlbmllcyBjYW5ub3QgYmUgdG9nZ2xlZC4gVGhpc1xuICAgICAgICAvLyBhbHNvIGJsb2NrcyBwcm9ncmFtbWF0aWMgY2FsbGVycyAoZS5nLiBleHBhbmRSb3dCeUNsaWNrIG9uIHRoZSBrZXJuZWwpXG4gICAgICAgIC8vIGZyb20gYnlwYXNzaW5nIHRoZSBwcmVkaWNhdGUuXG4gICAgICAgIGlmICgoZXhwYW5kYWJsZSA9PT0gbnVsbCB8fCBleHBhbmRhYmxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBleHBhbmRhYmxlLnJvd0V4cGFuZGFibGUpICYmICFleHBhbmRhYmxlLnJvd0V4cGFuZGFibGUocmVjb3JkKSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgZXhwYW5kZWQgPSBtZXJnZWRFeHBhbmRlZFJvd0tleXMuaW5jbHVkZXMocmVjb3JkS2V5KTtcbiAgICAgICAgY29uc3QgbmV4dEtleXMgPSBleHBhbmRlZFxuICAgICAgICAgICAgPyBtZXJnZWRFeHBhbmRlZFJvd0tleXMuZmlsdGVyKGtleSA9PiBrZXkgIT09IHJlY29yZEtleSlcbiAgICAgICAgICAgIDogWy4uLm1lcmdlZEV4cGFuZGVkUm93S2V5cywgcmVjb3JkS2V5XTtcbiAgICAgICAgc2V0TWVyZ2VkRXhwYW5kZWRSb3dLZXlzKG5leHRLZXlzKTtcbiAgICAgICAgKF9hID0gZXhwYW5kYWJsZSA9PT0gbnVsbCB8fCBleHBhbmRhYmxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBleHBhbmRhYmxlLm9uRXhwYW5kKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2FsbChleHBhbmRhYmxlLCAhZXhwYW5kZWQsIHJlY29yZCk7XG4gICAgICAgIChfYiA9IGV4cGFuZGFibGUgPT09IG51bGwgfHwgZXhwYW5kYWJsZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZXhwYW5kYWJsZS5vbkV4cGFuZGVkUm93c0NoYW5nZSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNhbGwoZXhwYW5kYWJsZSwgbmV4dEtleXMpO1xuICAgIH0pO1xuICAgIC8vIENhbGxlZCBieSB0aGUga2VybmVsJ3Mgb25FeHBhbmQgKGUuZy4gZXhwYW5kUm93QnlDbGljaykg4oCUIHVwZGF0ZXMgc3RhdGVcbiAgICAvLyBhbmQgZGVsZWdhdGVzIHRvIHVzZXIgY2FsbGJhY2tzXG4gICAgY29uc3Qgb25LZXJuZWxFeHBhbmQgPSB1c2VNZW1vaXplZEZuKChleHBhbmRlZCwgcmVjb3JkLCByZWNvcmRLZXkpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgaWYgKChleHBhbmRhYmxlID09PSBudWxsIHx8IGV4cGFuZGFibGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGV4cGFuZGFibGUucm93RXhwYW5kYWJsZSkgJiYgIWV4cGFuZGFibGUucm93RXhwYW5kYWJsZShyZWNvcmQpKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCBuZXh0S2V5cyA9IGV4cGFuZGVkXG4gICAgICAgICAgICA/IFsuLi5tZXJnZWRFeHBhbmRlZFJvd0tleXMsIHJlY29yZEtleV1cbiAgICAgICAgICAgIDogbWVyZ2VkRXhwYW5kZWRSb3dLZXlzLmZpbHRlcihrZXkgPT4ga2V5ICE9PSByZWNvcmRLZXkpO1xuICAgICAgICBzZXRNZXJnZWRFeHBhbmRlZFJvd0tleXMobmV4dEtleXMpO1xuICAgICAgICAoX2EgPSBleHBhbmRhYmxlID09PSBudWxsIHx8IGV4cGFuZGFibGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGV4cGFuZGFibGUub25FeHBhbmQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jYWxsKGV4cGFuZGFibGUsIGV4cGFuZGVkLCByZWNvcmQpO1xuICAgICAgICAoX2IgPSBleHBhbmRhYmxlID09PSBudWxsIHx8IGV4cGFuZGFibGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGV4cGFuZGFibGUub25FeHBhbmRlZFJvd3NDaGFuZ2UpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jYWxsKGV4cGFuZGFibGUsIG5leHRLZXlzKTtcbiAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgICBtZXJnZWRFeHBhbmRlZFJvd0tleXMsXG4gICAgICAgIHRyaWdnZXJFeHBhbmQsXG4gICAgICAgIG9uS2VybmVsRXhwYW5kLFxuICAgIH07XG59OyJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
64
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvVGFibGUvc3JjL2NvbXBvbmVudHMvVGFibGUvY29yZS91c2VUYWJsZUV4cGFuZC50cyIsImNvbXBvbmVudHMvVGFibGUvY29yZS91c2VUYWJsZUV4cGFuZC5qcyJdLCJuYW1lcyI6WyJ1c2VDb250cm9sbGVkU3RhdGUiLCJ1c2VNZW1vaXplZEZuIiwidXNlVGFibGVFeHBhbmQiLCJfcmVmIiwiZXhwYW5kYWJsZSIsImRhdGFTb3VyY2UiLCJnZXRSb3dLZXkiLCJjb21wdXRlRGVmYXVsdEtleXMiLCJkZWZhdWx0RXhwYW5kZWRSb3dLZXlzIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiZGVmYXVsdEV4cGFuZEFsbFJvd3MiLCJyb3dFeHBhbmRhYmxlIiwibWFwIiwicmVjb3JkIiwiaW5kZXgiLCJrZXkiLCJmaWx0ZXIiLCJfcmVmMiIsIl9yZWYzIiwiX3VzZUNvbnRyb2xsZWRTdGF0ZSIsImV4cGFuZGVkUm93S2V5cyIsIl91c2VDb250cm9sbGVkU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJtZXJnZWRFeHBhbmRlZFJvd0tleXMiLCJzZXRNZXJnZWRFeHBhbmRlZFJvd0tleXMiLCJ0cmlnZ2VyRXhwYW5kIiwicmVjb3JkS2V5IiwiX2EiLCJfYiIsImV4cGFuZGVkIiwiaW5jbHVkZXMiLCJuZXh0S2V5cyIsImNvbmNhdCIsIm9uRXhwYW5kIiwiY2FsbCIsIm9uRXhwYW5kZWRSb3dzQ2hhbmdlIiwib25LZXJuZWxFeHBhbmQiXSwibWFwcGluZ3MiOiI7O0FBQ0EsT0FBT0Esa0JBQWtCLE1BQU0sa0NBQWtDO0FBQ2pFLE9BQU9DLGFBQWEsTUFBTSw2QkFBNkI7QUFHdkQsT0FBTyxJQUFNQyxjQUFjLEdBQUcsU0FBakJBLGNBQWNBLENBQUFDLElBQUEsRUFRdEI7RUFBQSxJQVBIQyxVQUFVLEdBQUFELElBQUEsQ0FBVkMsVUFBVTtJQUNWQyxVQUFVLEdBQUFGLElBQUEsQ0FBVkUsVUFBVTtJQUNWQyxTQUFTLEdBQUFILElBQUEsQ0FBVEcsU0FB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RStCLG9CQUFvQixNQUFBLElBQUEsSUFBQVAsRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBLEtBQUEsQ0FBQSxHQUFBQSxFQUFBLENBQUFNLElBQUEsQ0FBQTlCLFVBQUEsRUFBRzJCLFFBQVEsQ0FBQztFQUM5QyxDQUFDLENBQUM7RUFFRixPQUFPO0lBQ0xSLHFCQUFxQixFQUFyQkEscUJBQXFCO0lBQ3JCRSxhQUFhLEVBQWJBLGFBQWE7SUFDYlcsY0FBYyxFQUFkQTtFQ2ZBLENEZ0JEO0FBQ0gsQ0FBQyIsImZpbGUiOiJjb21wb25lbnRzL1RhYmxlL2NvcmUvdXNlVGFibGVFeHBhbmQuanMiLCJzb3VyY2VzQ29udGVudCI6W251bGwsImltcG9ydCB1c2VDb250cm9sbGVkU3RhdGUgZnJvbSAnQDFtb25leS9ob29rcy91c2VDb250cm9sbGVkU3RhdGUnO1xuaW1wb3J0IHVzZU1lbW9pemVkRm4gZnJvbSAnQDFtb25leS9ob29rcy91c2VNZW1vaXplZEZuJztcbmV4cG9ydCBjb25zdCB1c2VUYWJsZUV4cGFuZCA9ICh7IGV4cGFuZGFibGUsIGRhdGFTb3VyY2UsIGdldFJvd0tleSwgfSkgPT4ge1xuICAgIC8vIE1hdGNoIHRhYmxlOiBgZGVmYXVsdEV4cGFuZEFsbFJvd3NgIHNlZWRzIGluaXRpYWwgZXhwYW5zaW9uIHdpdGggZXZlcnlcbiAgICAvLyByb3cgd2hvc2Uga2V5IGlzIGV4cGFuZGFibGUuIGByb3dFeHBhbmRhYmxlYCAoaWYgcHJlc2VudCkgc3RpbGwgZ2F0ZXMgdGhpcy5cbiAgICBjb25zdCBjb21wdXRlRGVmYXVsdEtleXMgPSAoKSA9PiB7XG4gICAgICAgIGlmIChleHBhbmRhYmxlID09PSBudWxsIHx8IGV4cGFuZGFibGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGV4cGFuZGFibGUuZGVmYXVsdEV4cGFuZGVkUm93S2V5cylcbiAgICAgICAgICAgIHJldHVybiBbLi4uZXhwYW5kYWJsZS5kZWZhdWx0RXhwYW5kZWRSb3dLZXlzXTtcbiAgICAgICAgaWYgKCEoZXhwYW5kYWJsZSA9PT0gbnVsbCB8fCBleHBhbmRhYmxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBleHBhbmRhYmxlLmRlZmF1bHRFeHBhbmRBbGxSb3dzKSB8fCAhZGF0YVNvdXJjZSB8fCAhZ2V0Um93S2V5KVxuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICBjb25zdCByb3dFeHBhbmRhYmxlID0gZXhwYW5kYWJsZS5yb3dFeHBhbmRhYmxlO1xuICAgICAgICByZXR1cm4gZGF0YVNvdXJjZVxuICAgICAgICAgICAgLm1hcCgocmVjb3JkLCBpbmRleCkgPT4gKHsgcmVjb3JkLCBrZXk6IGdldFJvd0tleShyZWNvcmQsIGluZGV4KSB9KSlcbiAgICAgICAgICAgIC5maWx0ZXIoKHsgcmVjb3JkIH0pID0+IChyb3dFeHBhbmRhYmxlID8gcm93RXhwYW5kYWJsZShyZWNvcmQpIDogdHJ1ZSkpXG4gICAgICAgICAgICAubWFwKCh7IGtleSB9KSA9PiBrZXkpO1xuICAgIH07XG4gICAgY29uc3QgW21lcmdlZEV4cGFuZGVkUm93S2V5cywgc2V0TWVyZ2VkRXhwYW5kZWRSb3dLZXlzXSA9IHVzZUNvbnRyb2xsZWRTdGF0ZShjb21wdXRlRGVmYXVsdEtleXMoKSwgZXhwYW5kYWJsZSA9PT0gbnVsbCB8fCBleHBhbmRhYmxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBleHBhbmRhYmxlLmV4cGFuZGVkUm93S2V5cyk7XG4gICAgY29uc3QgdHJpZ2dlckV4cGFuZCA9IHVzZU1lbW9pemVkRm4oKHJlY29yZEtleSwgcmVjb3JkKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIC8vIEhvbm9yIGByb3dFeHBhbmRhYmxlYDogcm93cyB0aGUgcHJlZGljYXRlIGRlbmllcyBjYW5ub3QgYmUgdG9nZ2xlZC4gVGhpc1xuICAgICAgICAvLyBhbHNvIGJsb2NrcyBwcm9ncmFtbWF0aWMgY2FsbGVycyAoZS5nLiBleHBhbmRSb3dCeUNsaWNrIG9uIHRoZSBrZXJuZWwpXG4gICAgICAgIC8vIGZyb20gYnlwYXNzaW5nIHRoZSBwcmVkaWNhdGUuXG4gICAgICAgIGlmICgoZXhwYW5kYWJsZSA9PT0gbnVsbCB8fCBleHBhbmRhYmxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBleHBhbmRhYmxlLnJvd0V4cGFuZGFibGUpICYmICFleHBhbmRhYmxlLnJvd0V4cGFuZGFibGUocmVjb3JkKSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgZXhwYW5kZWQgPSBtZXJnZWRFeHBhbmRlZFJvd0tleXMuaW5jbHVkZXMocmVjb3JkS2V5KTtcbiAgICAgICAgY29uc3QgbmV4dEtleXMgPSBleHBhbmRlZFxuICAgICAgICAgICAgPyBtZXJnZWRFeHBhbmRlZFJvd0tleXMuZmlsdGVyKGtleSA9PiBrZXkgIT09IHJlY29yZEtleSlcbiAgICAgICAgICAgIDogWy4uLm1lcmdlZEV4cGFuZGVkUm93S2V5cywgcmVjb3JkS2V5XTtcbiAgICAgICAgc2V0TWVyZ2VkRXhwYW5kZWRSb3dLZXlzKG5leHRLZXlzKTtcbiAgICAgICAgKF9hID0gZXhwYW5kYWJsZSA9PT0gbnVsbCB8fCBleHBhbmRhYmxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBleHBhbmRhYmxlLm9uRXhwYW5kKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2FsbChleHBhbmRhYmxlLCAhZXhwYW5kZWQsIHJlY29yZCk7XG4gICAgICAgIChfYiA9IGV4cGFuZGFibGUgPT09IG51bGwgfHwgZXhwYW5kYWJsZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZXhwYW5kYWJsZS5vbkV4cGFuZGVkUm93c0NoYW5nZSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNhbGwoZXhwYW5kYWJsZSwgbmV4dEtleXMpO1xuICAgIH0pO1xuICAgIC8vIENhbGxlZCBieSB0aGUga2VybmVsJ3Mgb25FeHBhbmQgKGUuZy4gZXhwYW5kUm93QnlDbGljaykg4oCUIHVwZGF0ZXMgc3RhdGVcbiAgICAvLyBhbmQgZGVsZWdhdGVzIHRvIHVzZXIgY2FsbGJhY2tzXG4gICAgY29uc3Qgb25LZXJuZWxFeHBhbmQgPSB1c2VNZW1vaXplZEZuKChleHBhbmRlZCwgcmVjb3JkLCByZWNvcmRLZXkpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgaWYgKChleHBhbmRhYmxlID09PSBudWxsIHx8IGV4cGFuZGFibGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGV4cGFuZGFibGUucm93RXhwYW5kYWJsZSkgJiYgIWV4cGFuZGFibGUucm93RXhwYW5kYWJsZShyZWNvcmQpKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCBuZXh0S2V5cyA9IGV4cGFuZGVkXG4gICAgICAgICAgICA/IFsuLi5tZXJnZWRFeHBhbmRlZFJvd0tleXMsIHJlY29yZEtleV1cbiAgICAgICAgICAgIDogbWVyZ2VkRXhwYW5kZWRSb3dLZXlzLmZpbHRlcihrZXkgPT4ga2V5ICE9PSByZWNvcmRLZXkpO1xuICAgICAgICBzZXRNZXJnZWRFeHBhbmRlZFJvd0tleXMobmV4dEtleXMpO1xuICAgICAgICAoX2EgPSBleHBhbmRhYmxlID09PSBudWxsIHx8IGV4cGFuZGFibGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGV4cGFuZGFibGUub25FeHBhbmQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jYWxsKGV4cGFuZGFibGUsIGV4cGFuZGVkLCByZWNvcmQpO1xuICAgICAgICAoX2IgPSBleHBhbmRhYmxlID09PSBudWxsIHx8IGV4cGFuZGFibGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGV4cGFuZGFibGUub25FeHBhbmRlZFJvd3NDaGFuZ2UpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jYWxsKGV4cGFuZGFibGUsIG5leHRLZXlzKTtcbiAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgICBtZXJnZWRFeHBhbmRlZFJvd0tleXMsXG4gICAgICAgIHRyaWdnZXJFeHBhbmQsXG4gICAgICAgIG9uS2VybmVsRXhwYW5kLFxuICAgIH07XG59OyJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=