@1money/component-ui 0.0.73 → 0.0.74

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 (83) hide show
  1. package/es/components/ProForm/ProForm.js +201 -48
  2. package/es/components/ProForm/ProFormDependency.d.ts +11 -2
  3. package/es/components/ProForm/ProFormDependency.js +29 -136
  4. package/es/components/ProForm/ProFormItem.js +81 -24
  5. package/es/components/ProForm/ProFormList.js +114 -62
  6. package/es/components/ProForm/Submitter.js +15 -4
  7. package/es/components/ProForm/context.d.ts +11 -3
  8. package/es/components/ProForm/context.js +32 -12
  9. package/es/components/ProForm/core/constants.d.ts +10 -2
  10. package/es/components/ProForm/core/constants.js +17 -3
  11. package/es/components/ProForm/core/formStore.d.ts +24 -0
  12. package/es/components/ProForm/core/formStore.js +101 -0
  13. package/es/components/ProForm/core/hooks/useForm.d.ts +4 -1
  14. package/es/components/ProForm/core/hooks/useForm.js +220 -120
  15. package/es/components/ProForm/core/hooks/useFormCore.d.ts +5 -1
  16. package/es/components/ProForm/core/hooks/useFormCore.js +114 -90
  17. package/es/components/ProForm/core/runRules.d.ts +5 -3
  18. package/es/components/ProForm/core/runRules.js +13 -5
  19. package/es/components/ProForm/core/useFormItem.d.ts +2 -2
  20. package/es/components/ProForm/core/useFormItem.js +46 -23
  21. package/es/components/ProForm/fields/ProFormFieldSet.js +20 -7
  22. package/es/components/ProForm/fields/createProFormField.js +14 -4
  23. package/es/components/ProForm/hooks/useFieldRequest.d.ts +6 -1
  24. package/es/components/ProForm/hooks/useFieldRequest.js +54 -9
  25. package/es/components/ProForm/hooks/useUrlSync.d.ts +16 -0
  26. package/es/components/ProForm/hooks/useUrlSync.js +170 -0
  27. package/es/components/ProForm/index.d.ts +2 -2
  28. package/es/components/ProForm/index.js +1 -1
  29. package/es/components/ProForm/interface.d.ts +105 -23
  30. package/es/components/ProForm/layouts/DialogForm.js +17 -7
  31. package/es/components/ProForm/layouts/DrawerForm.js +16 -7
  32. package/es/components/ProForm/layouts/QueryFilter.js +46 -135
  33. package/es/components/ProForm/layouts/useOverlayForm.d.ts +2 -2
  34. package/es/components/ProForm/layouts/useOverlayForm.js +27 -8
  35. package/es/components/ProForm/style/ProForm.css +0 -6
  36. package/es/components/ProForm/utils.js +32 -8
  37. package/es/components/ProTable/ProTable.js +3 -3
  38. package/es/index.css +1 -1
  39. package/es/index.d.ts +1 -1
  40. package/es/index.js +1 -1
  41. package/lib/components/ProForm/ProForm.js +201 -48
  42. package/lib/components/ProForm/ProFormDependency.d.ts +11 -2
  43. package/lib/components/ProForm/ProFormDependency.js +30 -138
  44. package/lib/components/ProForm/ProFormItem.js +78 -21
  45. package/lib/components/ProForm/ProFormList.js +112 -60
  46. package/lib/components/ProForm/Submitter.js +15 -4
  47. package/lib/components/ProForm/context.d.ts +11 -3
  48. package/lib/components/ProForm/context.js +33 -13
  49. package/lib/components/ProForm/core/constants.d.ts +10 -2
  50. package/lib/components/ProForm/core/constants.js +18 -4
  51. package/lib/components/ProForm/core/formStore.d.ts +24 -0
  52. package/lib/components/ProForm/core/formStore.js +110 -0
  53. package/lib/components/ProForm/core/hooks/useForm.d.ts +4 -1
  54. package/lib/components/ProForm/core/hooks/useForm.js +220 -120
  55. package/lib/components/ProForm/core/hooks/useFormCore.d.ts +5 -1
  56. package/lib/components/ProForm/core/hooks/useFormCore.js +113 -89
  57. package/lib/components/ProForm/core/runRules.d.ts +5 -3
  58. package/lib/components/ProForm/core/runRules.js +13 -5
  59. package/lib/components/ProForm/core/useFormItem.d.ts +2 -2
  60. package/lib/components/ProForm/core/useFormItem.js +44 -21
  61. package/lib/components/ProForm/fields/ProFormFieldSet.js +19 -6
  62. package/lib/components/ProForm/fields/createProFormField.js +14 -4
  63. package/lib/components/ProForm/hooks/useFieldRequest.d.ts +6 -1
  64. package/lib/components/ProForm/hooks/useFieldRequest.js +53 -8
  65. package/lib/components/ProForm/hooks/useUrlSync.d.ts +16 -0
  66. package/lib/components/ProForm/hooks/useUrlSync.js +178 -0
  67. package/lib/components/ProForm/index.d.ts +2 -2
  68. package/lib/components/ProForm/index.js +1 -1
  69. package/lib/components/ProForm/interface.d.ts +105 -23
  70. package/lib/components/ProForm/layouts/DialogForm.js +17 -7
  71. package/lib/components/ProForm/layouts/DrawerForm.js +16 -7
  72. package/lib/components/ProForm/layouts/QueryFilter.js +45 -134
  73. package/lib/components/ProForm/layouts/useOverlayForm.d.ts +2 -2
  74. package/lib/components/ProForm/layouts/useOverlayForm.js +30 -8
  75. package/lib/components/ProForm/style/ProForm.css +0 -6
  76. package/lib/components/ProForm/utils.js +32 -8
  77. package/lib/components/ProTable/ProTable.js +3 -3
  78. package/lib/index.css +1 -1
  79. package/lib/index.d.ts +1 -1
  80. package/lib/index.js +1 -1
  81. package/package.json +1 -1
  82. package/scripts/mcp-server/examples.generated.json +36 -0
  83. package/scripts/mcp-server/index.generated.json +538 -16
@@ -1,14 +1,15 @@
1
1
  import _typeof from "@babel/runtime/helpers/esm/typeof";
2
2
  import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
3
3
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
4
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
4
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
5
5
  import { memo, useEffect, useMemo, useRef } from 'react';
6
6
  import useMemoizedFn from '@1money/hooks/useMemoizedFn';
7
7
  import useSafeState from '@1money/hooks/useSafeState';
8
8
  import { default as classnames } from '../../utils/classnames';
9
9
  import { Button } from '../Button';
10
10
  import { TypographyLabel, TypographyBody } from '../Typography';
11
- import { FormListContext, useFormListContext, useProFormContext } from './context';
11
+ import { FormListContext, useFormListContext, useProFormStable, useProFormStore } from './context';
12
+ import { useStoreSelector } from './core/formStore';
12
13
  import { CSS_PREFIX, DEFAULT_TEXT, PROFORM_LIST_LABEL_SIZE, PROFORM_LIST_LABEL_COLOR } from './constants';
13
14
  import { extractButtonProps, getNestedValue } from './utils';
14
15
  var classes = classnames("".concat(CSS_PREFIX, "-list"));
@@ -16,6 +17,70 @@ var listKeyCounter = 0;
16
17
  var generateKey = function generateKey() {
17
18
  return "list_".concat(++listKeyCounter);
18
19
  };
20
+ // Stable empty result for the no-value case — a fresh [] per selector run
21
+ // would never compare equal and loop the subscription.
22
+ var EMPTY_LIST = [];
23
+ // Row-level memo boundary: setNestedValue clones ONLY the edited row, so
24
+ // untouched rows keep their record identity and bail out here while a
25
+ // sibling row is being edited.
26
+ var ListRowActionsBase = function ListRowActionsBase(_ref) {
27
+ var index = _ref.index,
28
+ record = _ref.record,
29
+ canAdd = _ref.canAdd,
30
+ canRemove = _ref.canRemove,
31
+ copyIconProps = _ref.copyIconProps,
32
+ deleteIconProps = _ref.deleteIconProps,
33
+ action = _ref.action,
34
+ actionRender = _ref.actionRender,
35
+ itemRender = _ref.itemRender,
36
+ onCopy = _ref.onCopy,
37
+ onRemove = _ref.onRemove;
38
+ var copyBtnProps = extractButtonProps(copyIconProps);
39
+ var deleteBtnProps = extractButtonProps(deleteIconProps);
40
+ var defaultDom = {
41
+ copy: copyIconProps !== false ? _jsx(Button, Object.assign({
42
+ type: "button",
43
+ color: "secondary",
44
+ size: "small"
45
+ }, copyBtnProps.rest, {
46
+ onClick: function onClick() {
47
+ return onCopy(index);
48
+ },
49
+ disabled: !canAdd || copyBtnProps.disabled,
50
+ children: DEFAULT_TEXT.copy
51
+ }), "copy-".concat(index)) : null,
52
+ "delete": deleteIconProps !== false ? _jsx(Button, Object.assign({
53
+ type: "button",
54
+ color: "secondary",
55
+ size: "small"
56
+ }, deleteBtnProps.rest, {
57
+ onClick: function onClick() {
58
+ return onRemove(index);
59
+ },
60
+ disabled: !canRemove || deleteBtnProps.disabled,
61
+ children: DEFAULT_TEXT["delete"]
62
+ }), "delete-".concat(index)) : null
63
+ };
64
+ var renderedActions = actionRender ? actionRender({
65
+ index: index,
66
+ record: record
67
+ }, action, defaultDom) : [defaultDom.copy, defaultDom["delete"]].filter(Boolean);
68
+ var rowNode = _jsx("div", {
69
+ className: classes('row-actions'),
70
+ children: renderedActions
71
+ });
72
+ if (itemRender) {
73
+ return _jsx(_Fragment, {
74
+ children: itemRender({
75
+ listDom: rowNode,
76
+ action: action
77
+ })
78
+ });
79
+ }
80
+ return rowNode;
81
+ };
82
+ ListRowActionsBase.displayName = 'ProFormListRowActions';
83
+ var ListRowActions = /*#__PURE__*/memo(ListRowActionsBase);
19
84
  var ProFormListBase = function ProFormListBase(props) {
20
85
  var _a, _b;
21
86
  var rawName = props.name,
@@ -37,19 +102,21 @@ var ProFormListBase = function ProFormListBase(props) {
37
102
  // ── Nested list: prepend parent list name ──
38
103
  var parentCtx = useFormListContext();
39
104
  var fullName = parentCtx.listName ? "".concat(parentCtx.listName, ".").concat(rawName) : rawName;
40
- var _useProFormContext = useProFormContext(),
41
- values = _useProFormContext.values,
42
- setFieldValue = _useProFormContext.setFieldValue;
105
+ var _useProFormStable = useProFormStable(),
106
+ setFieldValue = _useProFormStable.setFieldValue;
107
+ var store = useProFormStore();
43
108
  var initialApplied = useRef(false);
44
109
  var keysRef = useRef([]);
45
110
  var _useSafeState = useSafeState(null),
46
111
  _useSafeState2 = _slicedToArray(_useSafeState, 2),
47
112
  listError = _useSafeState2[0],
48
113
  setListError = _useSafeState2[1];
49
- var list = useMemo(function () {
50
- var raw = fullName.includes('.') ? getNestedValue(values, fullName) : values[fullName];
51
- return Array.isArray(raw) ? raw : [];
52
- }, [values, fullName]);
114
+ // Subscribe ONLY to this list's own value: typing elsewhere in the form
115
+ // leaves the array identity untouched and this component does not render.
116
+ var list = useStoreSelector(store, function (state) {
117
+ var raw = fullName.includes('.') ? getNestedValue(state.values, fullName) : state.values[fullName];
118
+ return Array.isArray(raw) ? raw : EMPTY_LIST;
119
+ });
53
120
  // Sync keys with list length
54
121
  while (keysRef.current.length < list.length) {
55
122
  keysRef.current.push(generateKey());
@@ -144,62 +211,47 @@ var ProFormListBase = function ProFormListBase(props) {
144
211
  getList: getList
145
212
  };
146
213
  }, [add, removeAt, move, copy, getList]);
214
+ // Per-key cache keeps each row's field object identity stable across list
215
+ // commits (e.g. typing in a sibling row), so memoized row content sees
216
+ // shallow-equal props and bails out.
217
+ var fieldObjCache = useRef(new Map());
147
218
  var mappedFields = useMemo(function () {
148
- return list.map(function (_item, index) {
149
- return {
150
- name: "".concat(fullName, ".").concat(index),
151
- key: keysRef.current[index] || "fallback_".concat(index)
219
+ var nextCache = new Map();
220
+ var fields = list.map(function (_item, index) {
221
+ var key = keysRef.current[index] || "fallback_".concat(index);
222
+ var fieldName = "".concat(fullName, ".").concat(index);
223
+ var cached = fieldObjCache.current.get(key);
224
+ var field = cached && cached.name === fieldName ? cached : {
225
+ name: fieldName,
226
+ key: key
152
227
  };
228
+ nextCache.set(key, field);
229
+ return field;
153
230
  });
231
+ fieldObjCache.current = nextCache;
232
+ return fields;
154
233
  }, [list, fullName]);
155
- // Render children
156
- var listDom = typeof children === 'function' ? children(mappedFields, action) : children;
157
- // Action buttons per row
158
- var actionRows = useMemo(function () {
159
- return list.map(function (record, index) {
160
- var copyBtnProps = extractButtonProps(copyIconProps);
161
- var deleteBtnProps = extractButtonProps(deleteIconProps);
162
- var defaultDom = {
163
- copy: copyIconProps !== false ? _jsx(Button, Object.assign({
164
- type: "button",
165
- color: "secondary",
166
- size: "small"
167
- }, copyBtnProps.rest, {
168
- onClick: function onClick() {
169
- return copy(index);
170
- },
171
- disabled: !canAdd || copyBtnProps.disabled,
172
- children: DEFAULT_TEXT.copy
173
- }), "copy-".concat(index)) : null,
174
- "delete": deleteIconProps !== false ? _jsx(Button, Object.assign({
175
- type: "button",
176
- color: "secondary",
177
- size: "small"
178
- }, deleteBtnProps.rest, {
179
- onClick: function onClick() {
180
- return removeAt(index);
181
- },
182
- disabled: !canRemove || deleteBtnProps.disabled,
183
- children: DEFAULT_TEXT["delete"]
184
- }), "delete-".concat(index)) : null
185
- };
186
- var renderedActions = actionRender ? actionRender({
187
- index: index,
188
- record: record
189
- }, action, defaultDom) : [defaultDom.copy, defaultDom["delete"]].filter(Boolean);
190
- var rowNode = _jsx("div", {
191
- className: classes('row-actions'),
192
- children: renderedActions
193
- }, keysRef.current[index] || index);
194
- if (itemRender) {
195
- return itemRender({
196
- listDom: rowNode,
197
- action: action
198
- });
199
- }
200
- return rowNode;
201
- });
202
- }, [list, copyIconProps, deleteIconProps, canAdd, canRemove, copy, removeAt, action, actionRender, itemRender]);
234
+ // Memoized so the row factory is re-invoked only when the list itself (or
235
+ // the consumer-provided children) changes never for unrelated commits.
236
+ var listDom = useMemo(function () {
237
+ return typeof children === 'function' ? children(mappedFields, action) : children;
238
+ }, [children, mappedFields, action]);
239
+ // Action buttons per row — ListRowActions is the memo boundary
240
+ var actionRows = list.map(function (record, index) {
241
+ return _jsx(ListRowActions, {
242
+ index: index,
243
+ record: record,
244
+ canAdd: canAdd,
245
+ canRemove: canRemove,
246
+ copyIconProps: copyIconProps,
247
+ deleteIconProps: deleteIconProps,
248
+ action: action,
249
+ actionRender: actionRender,
250
+ itemRender: itemRender,
251
+ onCopy: copy,
252
+ onRemove: removeAt
253
+ }, keysRef.current[index] || index);
254
+ });
203
255
  // Creator button
204
256
  var hasCreator = creatorButtonProps !== false;
205
257
  var creatorConfig = hasCreator && _typeof(creatorButtonProps) === 'object' ? creatorButtonProps : {};
@@ -250,4 +302,4 @@ var ProFormListBase = function ProFormListBase(props) {
250
302
  ProFormListBase.displayName = 'ProFormList';
251
303
  export var ProFormList = /*#__PURE__*/memo(ProFormListBase);
252
304
  export default ProFormList;
253
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtTGlzdC5qcyIsImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtTGlzdC50c3giXSwibmFtZXMiOlsianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIm1lbW8iLCJ1c2VFZmZlY3QiLCJ1c2VNZW1vIiwidXNlUmVmIiwidXNlTWVtb2l6ZWRGbiIsInVzZVNhZmVTdGF0ZSIsImRlZmF1bHQiLCJjbGFzc25hbWVzIiwiQnV0dG9uIiwiVHlwb2dyYXBoeUxhYmVsIiwiVHlwb2dyYXBoeUJvZHkiLCJGb3JtTGlzdENvbnRleHQiLCJ1c2VGb3JtTGlzdENvbnRleHQiLCJ1c2VQcm9Gb3JtQ29udGV4dCIsIkNTU19QUkVGSVgiLCJERUZBVUxUX1RFWFQiLCJQUk9GT1JNX0xJU1RfTEFCRUxfU0laRSIsIlBST0ZPUk1fTElTVF9MQUJFTF9DT0xPUiIsImV4dHJhY3RCdXR0b25Qcm9wcyIsImdldE5lc3RlZFZhbHVlIiwiY2xhc3NlcyIsImNvbmNhdCIsImxpc3RLZXlDb3VudGVyIiwiZ2VuZXJhdGVLZXkiLCJQcm9Gb3JtTGlzdEJhc2UiLCJwcm9wcyIsIl9hIiwiX2IiLCJyYXdOYW1lIiwibmFtZSIsImxhYmVsIiwibWluIiwibWF4IiwicmVxdWlyZWQiLCJfcHJvcHMkcmVxdWlyZWRNZXNzYWciLCJyZXF1aXJlZE1lc3NhZ2UiLCJpbml0aWFsVmFsdWUiLCJjb3B5SWNvblByb3BzIiwiZGVsZXRlSWNvblByb3BzIiwiY3JlYXRvckJ1dHRvblByb3BzIiwiaXRlbVJlbmRlciIsImFjdGlvblJlbmRlciIsImNoaWxkcmVuIiwib25BZnRlckFkZCIsIm9uQWZ0ZXJSZW1vdmUiLCJwYXJlbnRDdHgiLCJmdWxsTmFtZSIsImxpc3ROYW1lIiwiX3VzZVByb0Zvcm1Db250ZXh0IiwidmFsdWVzIiwic2V0RmllbGRWYWx1ZSIsImluaXRpYWxBcHBsaWVkIiwia2V5c1JlZiIsIl91c2VTYWZlU3RhdGUiLCJfdXNlU2FmZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwibGlzdEVycm9yIiwic2V0TGlzdEVycm9yIiwibGlzdCIsInJhdyIsImluY2x1ZGVzIiwiQXJyYXkiLCJpc0FycmF5IiwiY3VycmVudCIsImxlbmd0aCIsInB1c2giLCJzbGljZSIsIl90b0NvbnN1bWFibGVBcnJheSIsIm1hcCIsImNhbkFkZCIsImNhblJlbW92ZSIsInZhbGlkYXRlTGlzdCIsImFkZCIsImRlZmF1bHRWYWx1ZSIsImluZGV4IiwidmFsdWUiLCJuZXdMaXN0IiwibmV3S2V5cyIsImluc2VydEluZGV4Iiwic3BsaWNlIiwicmVtb3ZlQXQiLCJjb3B5IiwiT2JqZWN0IiwiYXNzaWduIiwibW92ZSIsImZyb20iLCJ0byIsIl9uZXdMaXN0JHNwbGljZSIsIl9uZXdMaXN0JHNwbGljZTIiLCJtb3ZlZEl0ZW0iLCJfbmV3S2V5cyRzcGxpY2UiLCJfbmV3S2V5cyRzcGxpY2UyIiwibW92ZWRLZXkiLCJnZXRMaXN0IiwiYWN0aW9uIiwicmVtb3ZlIiwibWFwcGVkRmllbGRzIiwiX2l0ZW0iLCJrZXkiLCJsaXN0RG9tIiwiYWN0aW9uUm93cyIsInJlY29yZCIsImNvcHlCdG5Qcm9wcyIsImRlbGV0ZUJ0blByb3BzIiwiZGVmYXVsdERvbSIsInR5cGUiLCJjb2xvciIsInNpemUiLCJyZXN0Iiwib25DbGljayIsImRpc2FibGVkIiwicmVuZGVyZWRBY3Rpb25zIiwiZmlsdGVyIiwiQm9vbGVhbiIsInJvd05vZGUiLCJjbGFzc05hbWUiLCJoYXNDcmVhdG9yIiwiY3JlYXRvckNvbmZpZyIsIl90eXBlb2YiLCJjcmVhdG9yUG9zaXRpb24iLCJwb3NpdGlvbiIsImNyZWF0b3JUZXh0IiwidGV4dCIsImNyZWF0b3JCdXR0b24iLCJmb3JtTGlzdENvbnRleHRWYWx1ZSIsIlByb3ZpZGVyIiwiYXMiLCJkaXNwbGF5TmFtZSIsIlByb0Zvcm1MaXN0Il0sIm1hcHBpbmdzIjoiOzs7QUFBQSxTQUFTQSxHQUFHLElBQUlDLElBQUksRUFBRUMsSUFB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LCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgbWVtbywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdXNlTWVtb2l6ZWRGbiBmcm9tICdAMW1vbmV5L2hvb2tzL3VzZU1lbW9pemVkRm4nO1xuaW1wb3J0IHVzZVNhZmVTdGF0ZSBmcm9tICdAMW1vbmV5L2hvb2tzL3VzZVNhZmVTdGF0ZSc7XG5pbXBvcnQgeyBkZWZhdWx0IGFzIGNsYXNzbmFtZXMgfSBmcm9tICcuLi8uLi91dGlscy9jbGFzc25hbWVzJztcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gJy4uL0J1dHRvbic7XG5pbXBvcnQgeyBUeXBvZ3JhcGh5TGFiZWwsIFR5cG9ncmFwaHlCb2R5IH0gZnJvbSAnLi4vVHlwb2dyYXBoeSc7XG5pbXBvcnQgeyBGb3JtTGlzdENvbnRleHQsIHVzZUZvcm1MaXN0Q29udGV4dCwgdXNlUHJvRm9ybUNvbnRleHQgfSBmcm9tICcuL2NvbnRleHQnO1xuaW1wb3J0IHsgQ1NTX1BSRUZJWCwgREVGQVVMVF9URVhULCBQUk9GT1JNX0xJU1RfTEFCRUxfU0laRSwgUFJPRk9STV9MSVNUX0xBQkVMX0NPTE9SIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgZXh0cmFjdEJ1dHRvblByb3BzLCBnZXROZXN0ZWRWYWx1ZSB9IGZyb20gJy4vdXRpbHMnO1xuY29uc3QgY2xhc3NlcyA9IGNsYXNzbmFtZXMoYCR7Q1NTX1BSRUZJWH0tbGlzdGApO1xubGV0IGxpc3RLZXlDb3VudGVyID0gMDtcbmNvbnN0IGdlbmVyYXRlS2V5ID0gKCkgPT4gYGxpc3RfJHsrK2xpc3RLZXlDb3VudGVyfWA7XG5jb25zdCBQcm9Gb3JtTGlzdEJhc2UgPSAocHJvcHMpID0+IHtcbiAgICB2YXIgX2EsIF9iO1xuICAgIGNvbnN0IHsgbmFtZTogcmF3TmFtZSwgbGFiZWwsIG1pbiwgbWF4LCByZXF1aXJlZCwgcmVxdWlyZWRNZXNzYWdlID0gJ1RoaXMgbGlzdCBjYW5ub3QgYmUgZW1wdHknLCBpbml0aWFsVmFsdWUsIGNvcHlJY29uUHJvcHMsIGRlbGV0ZUljb25Qcm9wcywgY3JlYXRvckJ1dHRvblByb3BzLCBpdGVtUmVuZGVyLCBhY3Rpb25SZW5kZXIsIGNoaWxkcmVuLCBvbkFmdGVyQWRkLCBvbkFmdGVyUmVtb3ZlLCB9ID0gcHJvcHM7XG4gICAgLy8g4pSA4pSAIE5lc3RlZCBsaXN0OiBwcmVwZW5kIHBhcmVudCBsaXN0IG5hbWUg4pSA4pSAXG4gICAgY29uc3QgcGFyZW50Q3R4ID0gdXNlRm9ybUxpc3RDb250ZXh0KCk7XG4gICAgY29uc3QgZnVsbE5hbWUgPSBwYXJlbnRDdHgubGlzdE5hbWUgPyBgJHtwYXJlbnRDdHgubGlzdE5hbWV9LiR7cmF3TmFtZX1gIDogcmF3TmFtZTtcbiAgICBjb25zdCB7IHZhbHVlcywgc2V0RmllbGRWYWx1ZSB9ID0gdXNlUHJvRm9ybUNvbnRleHQoKTtcbiAgICBjb25zdCBpbml0aWFsQXBwbGllZCA9IHVzZVJlZihmYWxzZSk7XG4gICAgY29uc3Qga2V5c1JlZiA9IHVzZVJlZihbXSk7XG4gICAgY29uc3QgW2xpc3RFcnJvciwgc2V0TGlzdEVycm9yXSA9IHVzZVNhZmVTdGF0ZShudWxsKTtcbiAgICBjb25zdCBsaXN0ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIGNvbnN0IHJhdyA9IGZ1bGxOYW1lLmluY2x1ZGVzKCcuJylcbiAgICAgICAgICAgID8gZ2V0TmVzdGVkVmFsdWUodmFsdWVzLCBmdWxsTmFtZSlcbiAgICAgICAgICAgIDogdmFsdWVzW2Z1bGxOYW1lXTtcbiAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkocmF3KSA/IHJhdyA6IFtdO1xuICAgIH0sIFt2YWx1ZXMsIGZ1bGxOYW1lXSk7XG4gICAgLy8gU3luYyBrZXlzIHdpdGggbGlzdCBsZW5ndGhcbiAgICB3aGlsZSAoa2V5c1JlZi5jdXJyZW50Lmxlbmd0aCA8IGxpc3QubGVuZ3RoKSB7XG4gICAgICAgIGtleXNSZWYuY3VycmVudC5wdXNoKGdlbmVyYXRlS2V5KCkpO1xuICAgIH1cbiAgICBpZiAoa2V5c1JlZi5jdXJyZW50Lmxlbmd0aCA+IGxpc3QubGVuZ3RoKSB7XG4gICAgICAgIGtleXNSZWYuY3VycmVudCA9IGtleXNSZWYuY3VycmVudC5zbGljZSgwLCBsaXN0Lmxlbmd0aCk7XG4gICAgfVxuICAgIC8vIEFwcGx5IGluaXRpYWwgdmFsdWUgb25jZVxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChpbml0aWFsQXBwbGllZC5jdXJyZW50KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAobGlzdC5sZW5ndGggIT09IDApXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShpbml0aWFsVmFsdWUpIHx8IGluaXRpYWxWYWx1ZS5sZW5ndGggPT09IDApXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGluaXRpYWxBcHBsaWVkLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICBzZXRGaWVsZFZhbHVlKGZ1bGxOYW1lLCBbLi4uaW5pdGlhbFZhbHVlXSk7XG4gICAgICAgIGtleXNSZWYuY3VycmVudCA9IGluaXRpYWxWYWx1ZS5tYXAoKCkgPT4gZ2VuZXJhdGVLZXkoKSk7XG4gICAgfSwgW2xpc3QubGVuZ3RoLCBpbml0aWFsVmFsdWUsIGZ1bGxOYW1lLCBzZXRGaWVsZFZhbHVlXSk7XG4gICAgLy8gQ2xlYXIgZXJyb3Igd2hlbiBsaXN0IGJlY29tZXMgbm9uLWVtcHR5XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKHJlcXVpcmVkICYmIGxpc3QubGVuZ3RoID4gMCAmJiBsaXN0RXJyb3IpIHtcbiAgICAgICAgICAgIHNldExpc3RFcnJvcihudWxsKTtcbiAgICAgICAgfVxuICAgIH0sIFtsaXN0Lmxlbmd0aCwgcmVxdWlyZWQsIGxpc3RFcnJvciwgc2V0TGlzdEVycm9yXSk7XG4gICAgY29uc3QgY2FuQWRkID0gbWF4ID09IG51bGwgfHwgbGlzdC5sZW5ndGggPCBtYXg7XG4gICAgY29uc3QgY2FuUmVtb3ZlID0gbWluID09IG51bGwgfHwgbGlzdC5sZW5ndGggPiBtaW47XG4gICAgY29uc3QgdmFsaWRhdGVMaXN0ID0gdXNlTWVtb2l6ZWRGbigoKSA9PiB7XG4gICAgICAgIGlmICghcmVxdWlyZWQpXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgaWYgKGxpc3QubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBzZXRMaXN0RXJyb3IocmVxdWlyZWRNZXNzYWdlKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBzZXRMaXN0RXJyb3IobnVsbCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH0pO1xuICAgIGNvbnN0IGFkZCA9IHVzZU1lbW9pemVkRm4oKGRlZmF1bHRWYWx1ZSwgaW5kZXgpID0+IHtcbiAgICAgICAgaWYgKCFjYW5BZGQpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZGVmYXVsdFZhbHVlICE9PSBudWxsICYmIGRlZmF1bHRWYWx1ZSAhPT0gdm9pZCAwID8gZGVmYXVsdFZhbHVlIDoge307XG4gICAgICAgIGNvbnN0IG5ld0xpc3QgPSBbLi4ubGlzdF07XG4gICAgICAgIGNvbnN0IG5ld0tleXMgPSBbLi4ua2V5c1JlZi5jdXJyZW50XTtcbiAgICAgICAgY29uc3QgaW5zZXJ0SW5kZXggPSB0eXBlb2YgaW5kZXggPT09ICdudW1iZXInID8gaW5kZXggOiBuZXdMaXN0Lmxlbmd0aDtcbiAgICAgICAgbmV3TGlzdC5zcGxpY2UoaW5zZXJ0SW5kZXgsIDAsIHZhbHVlKTtcbiAgICAgICAgbmV3S2V5cy5zcGxpY2UoaW5zZXJ0SW5kZXgsIDAsIGdlbmVyYXRlS2V5KCkpO1xuICAgICAgICBrZXlzUmVmLmN1cnJlbnQgPSBuZXdLZXlzO1xuICAgICAgICBzZXRGaWVsZFZhbHVlKGZ1bGxOYW1lLCBuZXdMaXN0KTtcbiAgICAgICAgb25BZnRlckFkZCA9PT0gbnVsbCB8fCBvbkFmdGVyQWRkID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkFmdGVyQWRkKHZhbHVlLCBpbnNlcnRJbmRleCk7XG4gICAgfSk7XG4gICAgY29uc3QgcmVtb3ZlQXQgPSB1c2VNZW1vaXplZEZuKChpbmRleCkgPT4ge1xuICAgICAgICBpZiAoIWNhblJlbW92ZSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgbmV3TGlzdCA9IFsuLi5saXN0XTtcbiAgICAgICAgY29uc3QgbmV3S2V5cyA9IFsuLi5rZXlzUmVmLmN1cnJlbnRdO1xuICAgICAgICBuZXdMaXN0LnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgIG5ld0tleXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAga2V5c1JlZi5jdXJyZW50ID0gbmV3S2V5cztcbiAgICAgICAgc2V0RmllbGRWYWx1ZShmdWxsTmFtZSwgbmV3TGlzdCk7XG4gICAgICAgIG9uQWZ0ZXJSZW1vdmUgPT09IG51bGwgfHwgb25BZnRlclJlbW92ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25BZnRlclJlbW92ZShpbmRleCk7XG4gICAgICAgIC8vIFZhbGlkYXRlIGFmdGVyIHJlbW92ZVxuICAgICAgICBpZiAocmVxdWlyZWQgJiYgbmV3TGlzdC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHNldExpc3RFcnJvcihyZXF1aXJlZE1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgY29weSA9IHVzZU1lbW9pemVkRm4oKGluZGV4KSA9PiB7XG4gICAgICAgIGlmICghY2FuQWRkKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGxpc3RbaW5kZXhdID8gT2JqZWN0LmFzc2lnbih7fSwgbGlzdFtpbmRleF0pIDoge307XG4gICAgICAgIGFkZCh2YWx1ZSwgaW5kZXggKyAxKTtcbiAgICB9KTtcbiAgICBjb25zdCBtb3ZlID0gdXNlTWVtb2l6ZWRGbigoZnJvbSwgdG8pID0+IHtcbiAgICAgICAgaWYgKGZyb20gPT09IHRvKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAoZnJvbSA8IDAgfHwgZnJvbSA+PSBsaXN0Lmxlbmd0aCB8fCB0byA8IDAgfHwgdG8gPj0gbGlzdC5sZW5ndGgpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IG5ld0xpc3QgPSBbLi4ubGlzdF07XG4gICAgICAgIGNvbnN0IG5ld0tleXMgPSBbLi4ua2V5c1JlZi5jdXJyZW50XTtcbiAgICAgICAgY29uc3QgW21vdmVkSXRlbV0gPSBuZXdMaXN0LnNwbGljZShmcm9tLCAxKTtcbiAgICAgICAgY29uc3QgW21vdmVkS2V5XSA9IG5ld0tleXMuc3BsaWNlKGZyb20sIDEpO1xuICAgICAgICBuZXdMaXN0LnNwbGljZSh0bywgMCwgbW92ZWRJdGVtKTtcbiAgICAgICAgbmV3S2V5cy5zcGxpY2UodG8sIDAsIG1vdmVkS2V5KTtcbiAgICAgICAga2V5c1JlZi5jdXJyZW50ID0gbmV3S2V5cztcbiAgICAgICAgc2V0RmllbGRWYWx1ZShmdWxsTmFtZSwgbmV3TGlzdCk7XG4gICAgfSk7XG4gICAgY29uc3QgZ2V0TGlzdCA9IHVzZU1lbW9pemVkRm4oKCkgPT4gbGlzdCk7XG4gICAgY29uc3QgYWN0aW9uID0gdXNlTWVtbygoKSA9PiAoeyBhZGQsIHJlbW92ZTogcmVtb3ZlQXQsIG1vdmUsIGNvcHksIGdldExpc3QgfSksIFthZGQsIHJlbW92ZUF0LCBtb3ZlLCBjb3B5LCBnZXRMaXN0XSk7XG4gICAgY29uc3QgbWFwcGVkRmllbGRzID0gdXNlTWVtbygoKSA9PiBsaXN0Lm1hcCgoX2l0ZW0sIGluZGV4KSA9PiAoe1xuICAgICAgICBuYW1lOiBgJHtmdWxsTmFtZX0uJHtpbmRleH1gLFxuICAgICAgICBrZXk6IGtleXNSZWYuY3VycmVudFtpbmRleF0gfHwgYGZhbGxiYWNrXyR7aW5kZXh9YCxcbiAgICB9KSksIFtsaXN0LCBmdWxsTmFtZV0pO1xuICAgIC8vIFJlbmRlciBjaGlsZHJlblxuICAgIGNvbnN0IGxpc3REb20gPSB0eXBlb2YgY2hpbGRyZW4gPT09ICdmdW5jdGlvbidcbiAgICAgICAgPyBjaGlsZHJlbihtYXBwZWRGaWVsZHMsIGFjdGlvbilcbiAgICAgICAgOiBjaGlsZHJlbjtcbiAgICAvLyBBY3Rpb24gYnV0dG9ucyBwZXIgcm93XG4gICAgY29uc3QgYWN0aW9uUm93cyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICByZXR1cm4gbGlzdC5tYXAoKHJlY29yZCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvcHlCdG5Qcm9wcyA9IGV4dHJhY3RCdXR0b25Qcm9wcyhjb3B5SWNvblByb3BzKTtcbiAgICAgICAgICAgIGNvbnN0IGRlbGV0ZUJ0blByb3BzID0gZXh0cmFjdEJ1dHRvblByb3BzKGRlbGV0ZUljb25Qcm9wcyk7XG4gICAgICAgICAgICBjb25zdCBkZWZhdWx0RG9tID0ge1xuICAgICAgICAgICAgICAgIGNvcHk6IGNvcHlJY29uUHJvcHMgIT09IGZhbHNlID8gKF9qc3goQnV0dG9uLCBPYmplY3QuYXNzaWduKHsgdHlwZTogXCJidXR0b25cIiwgY29sb3I6IFwic2Vjb25kYXJ5XCIsIHNpemU6IFwic21hbGxcIiB9LCBjb3B5QnRuUHJvcHMucmVzdCwgeyBvbkNsaWNrOiAoKSA9PiBjb3B5KGluZGV4KSwgZGlzYWJsZWQ6ICFjYW5BZGQgfHwgY29weUJ0blByb3BzLmRpc2FibGVkLCBjaGlsZHJlbjogREVGQVVMVF9URVhULmNvcHkgfSksIGBjb3B5LSR7aW5kZXh9YCkpIDogbnVsbCxcbiAgICAgICAgICAgICAgICBkZWxldGU6IGRlbGV0ZUljb25Qcm9wcyAhPT0gZmFsc2UgPyAoX2pzeChCdXR0b24sIE9iamVjdC5hc3NpZ24oeyB0eXBlOiBcImJ1dHRvblwiLCBjb2xvcjogXCJzZWNvbmRhcnlcIiwgc2l6ZTogXCJzbWFsbFwiIH0sIGRlbGV0ZUJ0blByb3BzLnJlc3QsIHsgb25DbGljazogKCkgPT4gcmVtb3ZlQXQoaW5kZXgpLCBkaXNhYmxlZDogIWNhblJlbW92ZSB8fCBkZWxldGVCdG5Qcm9wcy5kaXNhYmxlZCwgY2hpbGRyZW46IERFRkFVTFRfVEVYVC5kZWxldGUgfSksIGBkZWxldGUtJHtpbmRleH1gKSkgOiBudWxsLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNvbnN0IHJlbmRlcmVkQWN0aW9ucyA9IGFjdGlvblJlbmRlclxuICAgICAgICAgICAgICAgID8gYWN0aW9uUmVuZGVyKHsgaW5kZXgsIHJlY29yZCB9LCBhY3Rpb24sIGRlZmF1bHREb20pXG4gICAgICAgICAgICAgICAgOiBbZGVmYXVsdERvbS5jb3B5LCBkZWZhdWx0RG9tLmRlbGV0ZV0uZmlsdGVyKEJvb2xlYW4pO1xuICAgICAgICAgICAgY29uc3Qgcm93Tm9kZSA9IChfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdyb3ctYWN0aW9ucycpLCBjaGlsZHJlbjogcmVuZGVyZWRBY3Rpb25zIH0sIGtleXNSZWYuY3VycmVudFtpbmRleF0gfHwgaW5kZXgpKTtcbiAgICAgICAgICAgIGlmIChpdGVtUmVuZGVyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW1SZW5kZXIoeyBsaXN0RG9tOiByb3dOb2RlLCBhY3Rpb24gfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcm93Tm9kZTtcbiAgICAgICAgfSk7XG4gICAgfSwgW2xpc3QsIGNvcHlJY29uUHJvcHMsIGRlbGV0ZUljb25Qcm9wcywgY2FuQWRkLCBjYW5SZW1vdmUsIGNvcHksIHJlbW92ZUF0LCBhY3Rpb24sIGFjdGlvblJlbmRlciwgaXRlbVJlbmRlcl0pO1xuICAgIC8vIENyZWF0b3IgYnV0dG9uXG4gICAgY29uc3QgaGFzQ3JlYXRvciA9IGNyZWF0b3JCdXR0b25Qcm9wcyAhPT0gZmFsc2U7XG4gICAgY29uc3QgY3JlYXRvckNvbmZpZyA9IGhhc0NyZWF0b3IgJiYgdHlwZW9mIGNyZWF0b3JCdXR0b25Qcm9wcyA9PT0gJ29iamVjdCcgPyBjcmVhdG9yQnV0dG9uUHJvcHMgOiB7fTtcbiAgICBjb25zdCBjcmVhdG9yUG9zaXRpb24gPSAoX2EgPSBjcmVhdG9yQ29uZmlnID09PSBudWxsIHx8IGNyZWF0b3JDb25maWcgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNyZWF0b3JDb25maWcucG9zaXRpb24pICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICdib3R0b20nO1xuICAgIGNvbnN0IGNyZWF0b3JUZXh0ID0gKF9iID0gY3JlYXRvckNvbmZpZyA9PT0gbnVsbCB8fCBjcmVhdG9yQ29uZmlnID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjcmVhdG9yQ29uZmlnLnRleHQpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IERFRkFVTFRfVEVYVC5hZGQ7XG4gICAgY29uc3QgY3JlYXRvckJ1dHRvbiA9IGhhc0NyZWF0b3IgPyAoX2pzeChCdXR0b24sIHsgdHlwZTogXCJidXR0b25cIiwgY29sb3I6IFwic2Vjb25kYXJ5XCIsIG9uQ2xpY2s6ICgpID0+IHtcbiAgICAgICAgICAgIGlmIChjcmVhdG9yUG9zaXRpb24gPT09ICd0b3AnKSB7XG4gICAgICAgICAgICAgICAgYWRkKHt9LCAwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGFkZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCBkaXNhYmxlZDogIWNhbkFkZCwgY2hpbGRyZW46IGNyZWF0b3JUZXh0IH0pKSA6IG51bGw7XG4gICAgY29uc3QgZm9ybUxpc3RDb250ZXh0VmFsdWUgPSB1c2VNZW1vKCgpID0+ICh7IGxpc3ROYW1lOiBmdWxsTmFtZSB9KSwgW2Z1bGxOYW1lXSk7XG4gICAgcmV0dXJuIChfanN4KEZvcm1MaXN0Q29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogZm9ybUxpc3RDb250ZXh0VmFsdWUsIGNoaWxkcmVuOiBfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygpLCBjaGlsZHJlbjogW2xhYmVsICYmIF9qc3goVHlwb2dyYXBoeUxhYmVsLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnbGFiZWwnKSwgc2l6ZTogUFJPRk9STV9MSVNUX0xBQkVMX1NJWkUsIGNvbG9yOiBQUk9GT1JNX0xJU1RfTEFCRUxfQ09MT1IsIGNoaWxkcmVuOiBsYWJlbCB9KSwgY3JlYXRvclBvc2l0aW9uID09PSAndG9wJyAmJiBjcmVhdG9yQnV0dG9uLCBfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdjb250ZW50JyksIGNoaWxkcmVuOiBsaXN0RG9tIH0pLCBfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdhY3Rpb25zJyksIGNoaWxkcmVuOiBhY3Rpb25Sb3dzIH0pLCBjcmVhdG9yUG9zaXRpb24gPT09ICdib3R0b20nICYmIGNyZWF0b3JCdXR0b24sIGxpc3RFcnJvciAmJiBfanN4KFR5cG9ncmFwaHlCb2R5LCB7IGFzOiBcImRpdlwiLCBzaXplOiBcInNtXCIsIGNvbG9yOiBcImRhbmdlclwiLCBjaGlsZHJlbjogbGlzdEVycm9yIH0pXSB9KSB9KSk7XG59O1xuUHJvRm9ybUxpc3RCYXNlLmRpc3BsYXlOYW1lID0gJ1Byb0Zvcm1MaXN0JztcbmV4cG9ydCBjb25zdCBQcm9Gb3JtTGlzdCA9IG1lbW8oUHJvRm9ybUxpc3RCYXNlKTtcbmV4cG9ydCBkZWZhdWx0IFByb0Zvcm1MaXN0OyIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
305
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtTGlzdC5qcyIsImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtTGlzdC50c3giXSwibmFtZXMiOlsianN4IiwiX2pzeCIsIkZyYWdtZW50IiwiX0ZyYWdtZW50IiwianN4cyIsIl9qc3hzIiwibWVtbyIsInVzZUVmZmVjdCIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VNZW1vaXplZEZuIiwidXNlU2FmZVN0YXRlIiwiZGVmYXVsdCIsImNsYXNzbmFtZXMiLCJCdXR0b24iLCJUeXBvZ3JhcGh5TGFiZWwiLCJUeXBvZ3JhcGh5Qm9keSIsIkZvcm1MaXN0Q29udGV4dCIsInVzZUZvcm1MaXN0Q29udGV4dCIsInVzZVByb0Zvcm1TdGFibGUiLCJ1c2VQcm9Gb3JtU3RvcmUiLCJ1c2VTdG9yZVNlbGVjdG9yIiwiQ1NTX1BSRUZJWCIsIkRFRkFVTFRfVEVYVCIsIlBST0ZPUk1fTElTVF9MQUJFTF9TSVpFIiwiUFJPRk9STV9MSVNUX0xBQkVMX0NPTE9SIiwiZXh0cmFjdEJ1dHRvblByb3BzIiwiZ2V0TmVzdGVkVmFsdWUiLCJjbGFzc2VzIiwiY29uY2F0IiwibGlzdEtleUNvdW50ZXIiLCJnZW5lcmF0ZUtleSIsIkVNUFRZX0xJU1QiLCJMaXN0Um93QWN0aW9uc0Jhc2UiLCJfcmVmIiwiaW5kZXgiLCJyZWNvcmQiLCJjYW5BZGQiLCJjYW5SZW1vdmUiLCJjb3B5SWNvblByb3BzIiwiZGVsZXRlSWNvblByb3BzIiwiYWN0aW9uIiwiYWN0aW9uUmVuZGVyIiwiaXRlbVJlbmRlciIsIm9uQ29weSIsIm9uUmVtb3ZlIiwiY29weUJ0blByb3BzIiwiZGVsZXRlQnRuUHJvcHMiLCJkZWZhdWx0RG9tIiwiY29weSIsIk9iamVjdCIsImFzc2lnbiIsInR5cGUiLCJjb2xvciIsInNpemUiLCJyZXN0Iiwib25DbGljayIsImRpc2FibGVkIiwiY2hpbGRyZW4iLCJyZW5kZXJlZEFjdGlvbnMiLCJmaWx0ZXIiLCJCb29sZWFuIiwicm93Tm9kZSIsImNsYXNzTmFtZSIsImxpc3REb20iLCJkaXNwbGF5TmFtZSIsIkxpc3RSb3dBY3Rpb25zIiwiUHJvRm9ybUxpc3RCYXNlIiwicHJvcHMiLCJfYSIsIl9iIiwicmF3TmFtZSIsIm5hbWUiLCJsYWJlbCIsIm1pbiIsIm1heCIsInJlcXVpcmVkIiwiX3Byb3BzJHJlcXVpcmVkTWVzc2FnIiwicmVxdWlyZWRNZXNzYWdlIiwiaW5pdGlhbFZhbHVlIiwiY3JlYXRvckJ1dHRvblByb3BzIiwib25BZnRlckFkZCIsIm9uQWZ0ZXJSZW1vdmUiLCJwYXJlbnRDdHgiLCJmdWxsTmFtZSIsImxpc3ROYW1lIiwiX3VzZVByb0Zvcm1TdGFibGUiLCJzZXRGaWVsZFZhbHVlIiwic3RvcmUiLCJpbml0aWFsQXBwbGllZCIsImtleXNSZWYiLCJfdXNlU2FmZVN0YXRlIiwiX3VzZVNhZmVTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsImxpc3RFcnJvciIsInNldExpc3RFcnJvciIsImxpc3QiLCJzdGF0ZSIsInJhdyIsImluY2x1ZGVzIiwidmFsdWVzIiwiQXJyYXkiLCJpc0FycmF5IiwiY3VycmVudCIsImxlbmd0aCIsInB1c2giLCJzbGljZSIsIl90b0NvbnN1bWFibGVBcnJheSIsIm1hcCIsInZhbGlkYXRlTGlzdCIsImFkZCIsImRlZmF1bHRWYWx1ZSIsInZhbHVlIiwibmV3TGlzdCIsIm5ld0tleXMiLCJpbnNlcnRJbmRleCIsInNwbGljZSIsInJlbW92ZUF0IiwibW92ZSIsImZyb20iLCJ0byIsIl9uZXdMaXN0JHNwbGljZSIsIl9uZXdMaXN0JHNwbGljZTIiLCJtb3ZlZEl0ZW0iLCJfbmV3S2V5cyRzcGxpY2UiLCJfbmV3S2V5cyRzcGxpY2UyIiwibW92ZWRLZXkiLCJnZXRMaXN0IiwicmVtb3ZlIiwiZmllbGRPYmpDYWNoZSIsIk1hcCIsIm1hcHBlZEZpZWxkcyIsIm5leHRDYWNoZSIsImZpZWxkcyIsIl9pdGVtIiwia2V5IiwiZmllbGROYW1lIiwiY2FjaGVkIiwiZ2V0IiwiZmllbGQiLCJzZXQiLCJhY3Rpb25Sb3dzIiwiaGFzQ3JlYXRvciIsImNyZWF0b3JDb25maWciLCJfdHlwZW9mIiwiY3JlYXRvclBvc2l0aW9uIiwicG9zaXRpb24iLCJjcmVhdG9yVGV4dCIsInRleHQiLCJjcmVhdG9yQnV0dG9uIiwiZm9ybUxpc3RDb250ZXh0VmFsdWUiLCJQcm92aWRlciIsImFzIiwiUHJvRm9ybUxpc3QiXSwibWFwcGluZ3MiOiI7OztBQUFBLFNBQVNBLEdBQUcsSUFBSUMsSUFBSSxFQUFFQyxRQUFRLElBQUlDLFNBQVMsRUFBRUMsSUFBSSxJQUFJQyxLQUFLLFFBQVEsbUJBQW1CO0FDQXJGLFNBQVNDLElBQUksRUFBRUMsU0FBUyxFQUFFQyxPQUFPLEVBQUVDLE1BQU0sUUFBUSxPQUFPO0FBRXhELE9BQU9DLGFBQWEsTUFBTSw2QkFBNkI7QUFDdkQsT0FBT0MsWUFBWSxNQUFNLDRCQUE0QjtBQUNyRCxTQUFTQyxPQUFPLElBQUlDLFVBQVUsUUFBUSx3QkFBd0I7QUFDOUQsU0FBU0MsTUFBTSxRQUFRLFdBQVc7QUFDbEMsU0FBU0MsZUFBZSxFQUFFQyxjQUFjLFFBQVEsZUFBZTtBQUMvRCxTQUFTQyxlQUFlLEVBQUVDLGtCQUFrQixFQUFFQyxnQkFBZ0IsRUFBRUMsZUFBZSxRQUFRLFdBQVc7QUFDbEcsU0FBU0MsZ0JBQWdCLFFBQVEsa0JBQWtCO0FBQ25ELFNBQVNDLFVBQVUsRUFBRUMsWUFBWSxFQUFFQyx1QkFBdUIsRUFBRUMsd0JBQXdCLFFBQVEsYUFBYTtBQUN6RyxTQUFTQyxrQkFBa0IsRUFBRUMsY0FBYyxRQUFRLFNBQVM7QUFHNUQsSUFBTUMsT0FBTyxHQUFHZixVQUFVLElBQUFnQixNQUFBLENBQUlQLFVBQVUsVUFBTyxDQUFDO0FBRWhELElBQUlRLGNBQWMsR0FBRyxDQUFDO0FBQ3RCLElBQU1DLFdBQVcsR0FBRyxTQUFkQSxXQUFXQSxDQUFBO0VBQUEsZUFBQUYsTUFBQSxDQUF5QixFQUFFQyxjQUFjO0FBQUEsQ0FBRTtBQUU1RDtBQUNBO0FBQ0EsSUFBTUUsVUFB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QUNjLGVBQWUsRUFBQTtRQUFDZ0QsU0FBUyxFQUFFbkMsT0FBTyxDQUFDLE9BQU8sQ0FBQztRQUFFMEIsSUFBSSxFQUFFOUIsdUJBQXVCO1FBQUU2QixLQUFLLEVBQUU1Qix3QkFBd0I7UUFBQWlDLFFBQUEsRUFBR2U7TUFBSyxDQUFBLENBQW1CLEVBQ2hKd0UsZUFBZSxLQUFLLEtBQUssSUFBSUksYUFBYSxFQUMzQ3BKLElBQUEsQ0FBQSxLQUFBLEVBQUE7UUFBSzhELFNBQVMsRUFBRW5DLE9BQU8sQ0FBQyxTQUFTLENBQUM7UUFBQThCLFFBQUEsRUFBR007TUFBTyxDQUFBLENBQU8sRUFDbkQvRCxJQUFBLENBQUEsS0FBQSxFQUFBO1FBQUs4RCxTQUFTLEVBQUVuQyxPQUFPLENBQUMsU0FBUyxDQUFDO1FBQUE4QixRQUFBLEVBQUdtRjtNQUFVLENBQUEsQ0FBTyxFQUNyREksZUFBZSxLQUFLLFFBQVEsSUFBSUksYUFBYSxFQUM3Q3ZELFNBQVMsSUFBSTdGLElBQUEsQ0FBQ2UsY0FBYyxFQUFBO1FBQUN3SSxFQUFFLEVBQUMsS0FBSztRQUFDbEcsSUFBSSxFQUFDLElBQUk7UUFBQ0QsS0FBSyxFQUFDLFFBQVE7UUFBQUssUUFBQSxFQUFFb0M7TUFBUyxDQUFBLENBQWtCO0lBQUEsQ0FBQTtFQUN4RixDQUFBLENBQ21CO0FBRS9CLENBQUM7QUFFRDNCLGVBQWUsQ0FBQ0YsV0FBVyxHQUFHLGFBQWE7QUFFM0MsT0FBTyxJQUFNd0YsV0FBVyxnQkFBR25KLElBQUksQ0FBQzZELGVBQWUsQ0FBQztBQUVoRCxlQUFlc0YsV0FBVyIsImZpbGUiOiJjb21wb25lbnRzL1Byb0Zvcm0vUHJvRm9ybUxpc3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqc3ggYXMgX2pzeCwgRnJhZ21lbnQgYXMgX0ZyYWdtZW50LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBtZW1vLCB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VNZW1vaXplZEZuIGZyb20gJ0AxbW9uZXkvaG9va3MvdXNlTWVtb2l6ZWRGbic7XG5pbXBvcnQgdXNlU2FmZVN0YXRlIGZyb20gJ0AxbW9uZXkvaG9va3MvdXNlU2FmZVN0YXRlJztcbmltcG9ydCB7IGRlZmF1bHQgYXMgY2xhc3NuYW1lcyB9IGZyb20gJy4uLy4uL3V0aWxzL2NsYXNzbmFtZXMnO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSAnLi4vQnV0dG9uJztcbmltcG9ydCB7IFR5cG9ncmFwaHlMYWJlbCwgVHlwb2dyYXBoeUJvZHkgfSBmcm9tICcuLi9UeXBvZ3JhcGh5JztcbmltcG9ydCB7IEZvcm1MaXN0Q29udGV4dCwgdXNlRm9ybUxpc3RDb250ZXh0LCB1c2VQcm9Gb3JtU3RhYmxlLCB1c2VQcm9Gb3JtU3RvcmUgfSBmcm9tICcuL2NvbnRleHQnO1xuaW1wb3J0IHsgdXNlU3RvcmVTZWxlY3RvciB9IGZyb20gJy4vY29yZS9mb3JtU3RvcmUnO1xuaW1wb3J0IHsgQ1NTX1BSRUZJWCwgREVGQVVMVF9URVhULCBQUk9GT1JNX0xJU1RfTEFCRUxfU0laRSwgUFJPRk9STV9MSVNUX0xBQkVMX0NPTE9SIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgZXh0cmFjdEJ1dHRvblByb3BzLCBnZXROZXN0ZWRWYWx1ZSB9IGZyb20gJy4vdXRpbHMnO1xuY29uc3QgY2xhc3NlcyA9IGNsYXNzbmFtZXMoYCR7Q1NTX1BSRUZJWH0tbGlzdGApO1xubGV0IGxpc3RLZXlDb3VudGVyID0gMDtcbmNvbnN0IGdlbmVyYXRlS2V5ID0gKCkgPT4gYGxpc3RfJHsrK2xpc3RLZXlDb3VudGVyfWA7XG4vLyBTdGFibGUgZW1wdHkgcmVzdWx0IGZvciB0aGUgbm8tdmFsdWUgY2FzZSDigJQgYSBmcmVzaCBbXSBwZXIgc2VsZWN0b3IgcnVuXG4vLyB3b3VsZCBuZXZlciBjb21wYXJlIGVxdWFsIGFuZCBsb29wIHRoZSBzdWJzY3JpcHRpb24uXG5jb25zdCBFTVBUWV9MSVNUID0gW107XG4vLyBSb3ctbGV2ZWwgbWVtbyBib3VuZGFyeTogc2V0TmVzdGVkVmFsdWUgY2xvbmVzIE9OTFkgdGhlIGVkaXRlZCByb3csIHNvXG4vLyB1bnRvdWNoZWQgcm93cyBrZWVwIHRoZWlyIHJlY29yZCBpZGVudGl0eSBhbmQgYmFpbCBvdXQgaGVyZSB3aGlsZSBhXG4vLyBzaWJsaW5nIHJvdyBpcyBiZWluZyBlZGl0ZWQuXG5jb25zdCBMaXN0Um93QWN0aW9uc0Jhc2UgPSAoeyBpbmRleCwgcmVjb3JkLCBjYW5BZGQsIGNhblJlbW92ZSwgY29weUljb25Qcm9wcywgZGVsZXRlSWNvblByb3BzLCBhY3Rpb24sIGFjdGlvblJlbmRlciwgaXRlbVJlbmRlciwgb25Db3B5LCBvblJlbW92ZSwgfSkgPT4ge1xuICAgIGNvbnN0IGNvcHlCdG5Qcm9wcyA9IGV4dHJhY3RCdXR0b25Qcm9wcyhjb3B5SWNvblByb3BzKTtcbiAgICBjb25zdCBkZWxldGVCdG5Qcm9wcyA9IGV4dHJhY3RCdXR0b25Qcm9wcyhkZWxldGVJY29uUHJvcHMpO1xuICAgIGNvbnN0IGRlZmF1bHREb20gPSB7XG4gICAgICAgIGNvcHk6IGNvcHlJY29uUHJvcHMgIT09IGZhbHNlID8gKF9qc3goQnV0dG9uLCBPYmplY3QuYXNzaWduKHsgdHlwZTogXCJidXR0b25cIiwgY29sb3I6IFwic2Vjb25kYXJ5XCIsIHNpemU6IFwic21hbGxcIiB9LCBjb3B5QnRuUHJvcHMucmVzdCwgeyBvbkNsaWNrOiAoKSA9PiBvbkNvcHkoaW5kZXgpLCBkaXNhYmxlZDogIWNhbkFkZCB8fCBjb3B5QnRuUHJvcHMuZGlzYWJsZWQsIGNoaWxkcmVuOiBERUZBVUxUX1RFWFQuY29weSB9KSwgYGNvcHktJHtpbmRleH1gKSkgOiBudWxsLFxuICAgICAgICBkZWxldGU6IGRlbGV0ZUljb25Qcm9wcyAhPT0gZmFsc2UgPyAoX2pzeChCdXR0b24sIE9iamVjdC5hc3NpZ24oeyB0eXBlOiBcImJ1dHRvblwiLCBjb2xvcjogXCJzZWNvbmRhcnlcIiwgc2l6ZTogXCJzbWFsbFwiIH0sIGRlbGV0ZUJ0blByb3BzLnJlc3QsIHsgb25DbGljazogKCkgPT4gb25SZW1vdmUoaW5kZXgpLCBkaXNhYmxlZDogIWNhblJlbW92ZSB8fCBkZWxldGVCdG5Qcm9wcy5kaXNhYmxlZCwgY2hpbGRyZW46IERFRkFVTFRfVEVYVC5kZWxldGUgfSksIGBkZWxldGUtJHtpbmRleH1gKSkgOiBudWxsLFxuICAgIH07XG4gICAgY29uc3QgcmVuZGVyZWRBY3Rpb25zID0gYWN0aW9uUmVuZGVyXG4gICAgICAgID8gYWN0aW9uUmVuZGVyKHsgaW5kZXgsIHJlY29yZCB9LCBhY3Rpb24sIGRlZmF1bHREb20pXG4gICAgICAgIDogW2RlZmF1bHREb20uY29weSwgZGVmYXVsdERvbS5kZWxldGVdLmZpbHRlcihCb29sZWFuKTtcbiAgICBjb25zdCByb3dOb2RlID0gKF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ3Jvdy1hY3Rpb25zJyksIGNoaWxkcmVuOiByZW5kZXJlZEFjdGlvbnMgfSkpO1xuICAgIGlmIChpdGVtUmVuZGVyKSB7XG4gICAgICAgIHJldHVybiBfanN4KF9GcmFnbWVudCwgeyBjaGlsZHJlbjogaXRlbVJlbmRlcih7IGxpc3REb206IHJvd05vZGUsIGFjdGlvbiB9KSB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHJvd05vZGU7XG59O1xuTGlzdFJvd0FjdGlvbnNCYXNlLmRpc3BsYXlOYW1lID0gJ1Byb0Zvcm1MaXN0Um93QWN0aW9ucyc7XG5jb25zdCBMaXN0Um93QWN0aW9ucyA9IG1lbW8oTGlzdFJvd0FjdGlvbnNCYXNlKTtcbmNvbnN0IFByb0Zvcm1MaXN0QmFzZSA9IChwcm9wcykgPT4ge1xuICAgIHZhciBfYSwgX2I7XG4gICAgY29uc3QgeyBuYW1lOiByYXdOYW1lLCBsYWJlbCwgbWluLCBtYXgsIHJlcXVpcmVkLCByZXF1aXJlZE1lc3NhZ2UgPSAnVGhpcyBsaXN0IGNhbm5vdCBiZSBlbXB0eScsIGluaXRpYWxWYWx1ZSwgY29weUljb25Qcm9wcywgZGVsZXRlSWNvblByb3BzLCBjcmVhdG9yQnV0dG9uUHJvcHMsIGl0ZW1SZW5kZXIsIGFjdGlvblJlbmRlciwgY2hpbGRyZW4sIG9uQWZ0ZXJBZGQsIG9uQWZ0ZXJSZW1vdmUsIH0gPSBwcm9wcztcbiAgICAvLyDilIDilIAgTmVzdGVkIGxpc3Q6IHByZXBlbmQgcGFyZW50IGxpc3QgbmFtZSDilIDilIBcbiAgICBjb25zdCBwYXJlbnRDdHggPSB1c2VGb3JtTGlzdENvbnRleHQoKTtcbiAgICBjb25zdCBmdWxsTmFtZSA9IHBhcmVudEN0eC5saXN0TmFtZSA/IGAke3BhcmVudEN0eC5saXN0TmFtZX0uJHtyYXdOYW1lfWAgOiByYXdOYW1lO1xuICAgIGNvbnN0IHsgc2V0RmllbGRWYWx1ZSB9ID0gdXNlUHJvRm9ybVN0YWJsZSgpO1xuICAgIGNvbnN0IHN0b3JlID0gdXNlUHJvRm9ybVN0b3JlKCk7XG4gICAgY29uc3QgaW5pdGlhbEFwcGxpZWQgPSB1c2VSZWYoZmFsc2UpO1xuICAgIGNvbnN0IGtleXNSZWYgPSB1c2VSZWYoW10pO1xuICAgIGNvbnN0IFtsaXN0RXJyb3IsIHNldExpc3RFcnJvcl0gPSB1c2VTYWZlU3RhdGUobnVsbCk7XG4gICAgLy8gU3Vic2NyaWJlIE9OTFkgdG8gdGhpcyBsaXN0J3Mgb3duIHZhbHVlOiB0eXBpbmcgZWxzZXdoZXJlIGluIHRoZSBmb3JtXG4gICAgLy8gbGVhdmVzIHRoZSBhcnJheSBpZGVudGl0eSB1bnRvdWNoZWQgYW5kIHRoaXMgY29tcG9uZW50IGRvZXMgbm90IHJlbmRlci5cbiAgICBjb25zdCBsaXN0ID0gdXNlU3RvcmVTZWxlY3RvcihzdG9yZSwgKHN0YXRlKSA9PiB7XG4gICAgICAgIGNvbnN0IHJhdyA9IGZ1bGxOYW1lLmluY2x1ZGVzKCcuJylcbiAgICAgICAgICAgID8gZ2V0TmVzdGVkVmFsdWUoc3RhdGUudmFsdWVzLCBmdWxsTmFtZSlcbiAgICAgICAgICAgIDogc3RhdGUudmFsdWVzW2Z1bGxOYW1lXTtcbiAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkocmF3KSA/IHJhdyA6IEVNUFRZX0xJU1Q7XG4gICAgfSk7XG4gICAgLy8gU3luYyBrZXlzIHdpdGggbGlzdCBsZW5ndGhcbiAgICB3aGlsZSAoa2V5c1JlZi5jdXJyZW50Lmxlbmd0aCA8IGxpc3QubGVuZ3RoKSB7XG4gICAgICAgIGtleXNSZWYuY3VycmVudC5wdXNoKGdlbmVyYXRlS2V5KCkpO1xuICAgIH1cbiAgICBpZiAoa2V5c1JlZi5jdXJyZW50Lmxlbmd0aCA+IGxpc3QubGVuZ3RoKSB7XG4gICAgICAgIGtleXNSZWYuY3VycmVudCA9IGtleXNSZWYuY3VycmVudC5zbGljZSgwLCBsaXN0Lmxlbmd0aCk7XG4gICAgfVxuICAgIC8vIEFwcGx5IGluaXRpYWwgdmFsdWUgb25jZVxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChpbml0aWFsQXBwbGllZC5jdXJyZW50KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAobGlzdC5sZW5ndGggIT09IDApXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShpbml0aWFsVmFsdWUpIHx8IGluaXRpYWxWYWx1ZS5sZW5ndGggPT09IDApXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGluaXRpYWxBcHBsaWVkLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICBzZXRGaWVsZFZhbHVlKGZ1bGxOYW1lLCBbLi4uaW5pdGlhbFZhbHVlXSk7XG4gICAgICAgIGtleXNSZWYuY3VycmVudCA9IGluaXRpYWxWYWx1ZS5tYXAoKCkgPT4gZ2VuZXJhdGVLZXkoKSk7XG4gICAgfSwgW2xpc3QubGVuZ3RoLCBpbml0aWFsVmFsdWUsIGZ1bGxOYW1lLCBzZXRGaWVsZFZhbHVlXSk7XG4gICAgLy8gQ2xlYXIgZXJyb3Igd2hlbiBsaXN0IGJlY29tZXMgbm9uLWVtcHR5XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKHJlcXVpcmVkICYmIGxpc3QubGVuZ3RoID4gMCAmJiBsaXN0RXJyb3IpIHtcbiAgICAgICAgICAgIHNldExpc3RFcnJvcihudWxsKTtcbiAgICAgICAgfVxuICAgIH0sIFtsaXN0Lmxlbmd0aCwgcmVxdWlyZWQsIGxpc3RFcnJvciwgc2V0TGlzdEVycm9yXSk7XG4gICAgY29uc3QgY2FuQWRkID0gbWF4ID09IG51bGwgfHwgbGlzdC5sZW5ndGggPCBtYXg7XG4gICAgY29uc3QgY2FuUmVtb3ZlID0gbWluID09IG51bGwgfHwgbGlzdC5sZW5ndGggPiBtaW47XG4gICAgY29uc3QgdmFsaWRhdGVMaXN0ID0gdXNlTWVtb2l6ZWRGbigoKSA9PiB7XG4gICAgICAgIGlmICghcmVxdWlyZWQpXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgaWYgKGxpc3QubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBzZXRMaXN0RXJyb3IocmVxdWlyZWRNZXNzYWdlKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBzZXRMaXN0RXJyb3IobnVsbCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH0pO1xuICAgIGNvbnN0IGFkZCA9IHVzZU1lbW9pemVkRm4oKGRlZmF1bHRWYWx1ZSwgaW5kZXgpID0+IHtcbiAgICAgICAgaWYgKCFjYW5BZGQpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZGVmYXVsdFZhbHVlICE9PSBudWxsICYmIGRlZmF1bHRWYWx1ZSAhPT0gdm9pZCAwID8gZGVmYXVsdFZhbHVlIDoge307XG4gICAgICAgIGNvbnN0IG5ld0xpc3QgPSBbLi4ubGlzdF07XG4gICAgICAgIGNvbnN0IG5ld0tleXMgPSBbLi4ua2V5c1JlZi5jdXJyZW50XTtcbiAgICAgICAgY29uc3QgaW5zZXJ0SW5kZXggPSB0eXBlb2YgaW5kZXggPT09ICdudW1iZXInID8gaW5kZXggOiBuZXdMaXN0Lmxlbmd0aDtcbiAgICAgICAgbmV3TGlzdC5zcGxpY2UoaW5zZXJ0SW5kZXgsIDAsIHZhbHVlKTtcbiAgICAgICAgbmV3S2V5cy5zcGxpY2UoaW5zZXJ0SW5kZXgsIDAsIGdlbmVyYXRlS2V5KCkpO1xuICAgICAgICBrZXlzUmVmLmN1cnJlbnQgPSBuZXdLZXlzO1xuICAgICAgICBzZXRGaWVsZFZhbHVlKGZ1bGxOYW1lLCBuZXdMaXN0KTtcbiAgICAgICAgb25BZnRlckFkZCA9PT0gbnVsbCB8fCBvbkFmdGVyQWRkID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkFmdGVyQWRkKHZhbHVlLCBpbnNlcnRJbmRleCk7XG4gICAgfSk7XG4gICAgY29uc3QgcmVtb3ZlQXQgPSB1c2VNZW1vaXplZEZuKChpbmRleCkgPT4ge1xuICAgICAgICBpZiAoIWNhblJlbW92ZSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgbmV3TGlzdCA9IFsuLi5saXN0XTtcbiAgICAgICAgY29uc3QgbmV3S2V5cyA9IFsuLi5rZXlzUmVmLmN1cnJlbnRdO1xuICAgICAgICBuZXdMaXN0LnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgIG5ld0tleXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAga2V5c1JlZi5jdXJyZW50ID0gbmV3S2V5cztcbiAgICAgICAgc2V0RmllbGRWYWx1ZShmdWxsTmFtZSwgbmV3TGlzdCk7XG4gICAgICAgIG9uQWZ0ZXJSZW1vdmUgPT09IG51bGwgfHwgb25BZnRlclJlbW92ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25BZnRlclJlbW92ZShpbmRleCk7XG4gICAgICAgIC8vIFZhbGlkYXRlIGFmdGVyIHJlbW92ZVxuICAgICAgICBpZiAocmVxdWlyZWQgJiYgbmV3TGlzdC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHNldExpc3RFcnJvcihyZXF1aXJlZE1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgY29weSA9IHVzZU1lbW9pemVkRm4oKGluZGV4KSA9PiB7XG4gICAgICAgIGlmICghY2FuQWRkKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGxpc3RbaW5kZXhdID8gT2JqZWN0LmFzc2lnbih7fSwgbGlzdFtpbmRleF0pIDoge307XG4gICAgICAgIGFkZCh2YWx1ZSwgaW5kZXggKyAxKTtcbiAgICB9KTtcbiAgICBjb25zdCBtb3ZlID0gdXNlTWVtb2l6ZWRGbigoZnJvbSwgdG8pID0+IHtcbiAgICAgICAgaWYgKGZyb20gPT09IHRvKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAoZnJvbSA8IDAgfHwgZnJvbSA+PSBsaXN0Lmxlbmd0aCB8fCB0byA8IDAgfHwgdG8gPj0gbGlzdC5sZW5ndGgpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IG5ld0xpc3QgPSBbLi4ubGlzdF07XG4gICAgICAgIGNvbnN0IG5ld0tleXMgPSBbLi4ua2V5c1JlZi5jdXJyZW50XTtcbiAgICAgICAgY29uc3QgW21vdmVkSXRlbV0gPSBuZXdMaXN0LnNwbGljZShmcm9tLCAxKTtcbiAgICAgICAgY29uc3QgW21vdmVkS2V5XSA9IG5ld0tleXMuc3BsaWNlKGZyb20sIDEpO1xuICAgICAgICBuZXdMaXN0LnNwbGljZSh0bywgMCwgbW92ZWRJdGVtKTtcbiAgICAgICAgbmV3S2V5cy5zcGxpY2UodG8sIDAsIG1vdmVkS2V5KTtcbiAgICAgICAga2V5c1JlZi5jdXJyZW50ID0gbmV3S2V5cztcbiAgICAgICAgc2V0RmllbGRWYWx1ZShmdWxsTmFtZSwgbmV3TGlzdCk7XG4gICAgfSk7XG4gICAgY29uc3QgZ2V0TGlzdCA9IHVzZU1lbW9pemVkRm4oKCkgPT4gbGlzdCk7XG4gICAgY29uc3QgYWN0aW9uID0gdXNlTWVtbygoKSA9PiAoeyBhZGQsIHJlbW92ZTogcmVtb3ZlQXQsIG1vdmUsIGNvcHksIGdldExpc3QgfSksIFthZGQsIHJlbW92ZUF0LCBtb3ZlLCBjb3B5LCBnZXRMaXN0XSk7XG4gICAgLy8gUGVyLWtleSBjYWNoZSBrZWVwcyBlYWNoIHJvdydzIGZpZWxkIG9iamVjdCBpZGVudGl0eSBzdGFibGUgYWNyb3NzIGxpc3RcbiAgICAvLyBjb21taXRzIChlLmcuIHR5cGluZyBpbiBhIHNpYmxpbmcgcm93KSwgc28gbWVtb2l6ZWQgcm93IGNvbnRlbnQgc2Vlc1xuICAgIC8vIHNoYWxsb3ctZXF1YWwgcHJvcHMgYW5kIGJhaWxzIG91dC5cbiAgICBjb25zdCBmaWVsZE9iakNhY2hlID0gdXNlUmVmKG5ldyBNYXAoKSk7XG4gICAgY29uc3QgbWFwcGVkRmllbGRzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIGNvbnN0IG5leHRDYWNoZSA9IG5ldyBNYXAoKTtcbiAgICAgICAgY29uc3QgZmllbGRzID0gbGlzdC5tYXAoKF9pdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qga2V5ID0ga2V5c1JlZi5jdXJyZW50W2luZGV4XSB8fCBgZmFsbGJhY2tfJHtpbmRleH1gO1xuICAgICAgICAgICAgY29uc3QgZmllbGROYW1lID0gYCR7ZnVsbE5hbWV9LiR7aW5kZXh9YDtcbiAgICAgICAgICAgIGNvbnN0IGNhY2hlZCA9IGZpZWxkT2JqQ2FjaGUuY3VycmVudC5nZXQoa2V5KTtcbiAgICAgICAgICAgIGNvbnN0IGZpZWxkID0gY2FjaGVkICYmIGNhY2hlZC5uYW1lID09PSBmaWVsZE5hbWUgPyBjYWNoZWQgOiB7IG5hbWU6IGZpZWxkTmFtZSwga2V5IH07XG4gICAgICAgICAgICBuZXh0Q2FjaGUuc2V0KGtleSwgZmllbGQpO1xuICAgICAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgICAgICB9KTtcbiAgICAgICAgZmllbGRPYmpDYWNoZS5jdXJyZW50ID0gbmV4dENhY2hlO1xuICAgICAgICByZXR1cm4gZmllbGRzO1xuICAgIH0sIFtsaXN0LCBmdWxsTmFtZV0pO1xuICAgIC8vIE1lbW9pemVkIHNvIHRoZSByb3cgZmFjdG9yeSBpcyByZS1pbnZva2VkIG9ubHkgd2hlbiB0aGUgbGlzdCBpdHNlbGYgKG9yXG4gICAgLy8gdGhlIGNvbnN1bWVyLXByb3ZpZGVkIGNoaWxkcmVuKSBjaGFuZ2VzIOKAlCBuZXZlciBmb3IgdW5yZWxhdGVkIGNvbW1pdHMuXG4gICAgY29uc3QgbGlzdERvbSA9IHVzZU1lbW8oKCkgPT4gKHR5cGVvZiBjaGlsZHJlbiA9PT0gJ2Z1bmN0aW9uJyA/IGNoaWxkcmVuKG1hcHBlZEZpZWxkcywgYWN0aW9uKSA6IGNoaWxkcmVuKSwgW2NoaWxkcmVuLCBtYXBwZWRGaWVsZHMsIGFjdGlvbl0pO1xuICAgIC8vIEFjdGlvbiBidXR0b25zIHBlciByb3cg4oCUIExpc3RSb3dBY3Rpb25zIGlzIHRoZSBtZW1vIGJvdW5kYXJ5XG4gICAgY29uc3QgYWN0aW9uUm93cyA9IGxpc3QubWFwKChyZWNvcmQsIGluZGV4KSA9PiAoX2pzeChMaXN0Um93QWN0aW9ucywgeyBpbmRleDogaW5kZXgsIHJlY29yZDogcmVjb3JkLCBjYW5BZGQ6IGNhbkFkZCwgY2FuUmVtb3ZlOiBjYW5SZW1vdmUsIGNvcHlJY29uUHJvcHM6IGNvcHlJY29uUHJvcHMsIGRlbGV0ZUljb25Qcm9wczogZGVsZXRlSWNvblByb3BzLCBhY3Rpb246IGFjdGlvbiwgYWN0aW9uUmVuZGVyOiBhY3Rpb25SZW5kZXIsIGl0ZW1SZW5kZXI6IGl0ZW1SZW5kZXIsIG9uQ29weTogY29weSwgb25SZW1vdmU6IHJlbW92ZUF0IH0sIGtleXNSZWYuY3VycmVudFtpbmRleF0gfHwgaW5kZXgpKSk7XG4gICAgLy8gQ3JlYXRvciBidXR0b25cbiAgICBjb25zdCBoYXNDcmVhdG9yID0gY3JlYXRvckJ1dHRvblByb3BzICE9PSBmYWxzZTtcbiAgICBjb25zdCBjcmVhdG9yQ29uZmlnID0gaGFzQ3JlYXRvciAmJiB0eXBlb2YgY3JlYXRvckJ1dHRvblByb3BzID09PSAnb2JqZWN0JyA/IGNyZWF0b3JCdXR0b25Qcm9wcyA6IHt9O1xuICAgIGNvbnN0IGNyZWF0b3JQb3NpdGlvbiA9IChfYSA9IGNyZWF0b3JDb25maWcgPT09IG51bGwgfHwgY3JlYXRvckNvbmZpZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogY3JlYXRvckNvbmZpZy5wb3NpdGlvbikgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJ2JvdHRvbSc7XG4gICAgY29uc3QgY3JlYXRvclRleHQgPSAoX2IgPSBjcmVhdG9yQ29uZmlnID09PSBudWxsIHx8IGNyZWF0b3JDb25maWcgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNyZWF0b3JDb25maWcudGV4dCkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogREVGQVVMVF9URVhULmFkZDtcbiAgICBjb25zdCBjcmVhdG9yQnV0dG9uID0gaGFzQ3JlYXRvciA/IChfanN4KEJ1dHRvbiwgeyB0eXBlOiBcImJ1dHRvblwiLCBjb2xvcjogXCJzZWNvbmRhcnlcIiwgb25DbGljazogKCkgPT4ge1xuICAgICAgICAgICAgaWYgKGNyZWF0b3JQb3NpdGlvbiA9PT0gJ3RvcCcpIHtcbiAgICAgICAgICAgICAgICBhZGQoe30sIDApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgYWRkKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIGRpc2FibGVkOiAhY2FuQWRkLCBjaGlsZHJlbjogY3JlYXRvclRleHQgfSkpIDogbnVsbDtcbiAgICBjb25zdCBmb3JtTGlzdENvbnRleHRWYWx1ZSA9IHVzZU1lbW8oKCkgPT4gKHsgbGlzdE5hbWU6IGZ1bGxOYW1lIH0pLCBbZnVsbE5hbWVdKTtcbiAgICByZXR1cm4gKF9qc3goRm9ybUxpc3RDb250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiBmb3JtTGlzdENvbnRleHRWYWx1ZSwgY2hpbGRyZW46IF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCksIGNoaWxkcmVuOiBbbGFiZWwgJiYgX2pzeChUeXBvZ3JhcGh5TGFiZWwsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdsYWJlbCcpLCBzaXplOiBQUk9GT1JNX0xJU1RfTEFCRUxfU0laRSwgY29sb3I6IFBST0ZPUk1fTElTVF9MQUJFTF9DT0xPUiwgY2hpbGRyZW46IGxhYmVsIH0pLCBjcmVhdG9yUG9zaXRpb24gPT09ICd0b3AnICYmIGNyZWF0b3JCdXR0b24sIF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2NvbnRlbnQnKSwgY2hpbGRyZW46IGxpc3REb20gfSksIF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2FjdGlvbnMnKSwgY2hpbGRyZW46IGFjdGlvblJvd3MgfSksIGNyZWF0b3JQb3NpdGlvbiA9PT0gJ2JvdHRvbScgJiYgY3JlYXRvckJ1dHRvbiwgbGlzdEVycm9yICYmIF9qc3goVHlwb2dyYXBoeUJvZHksIHsgYXM6IFwiZGl2XCIsIHNpemU6IFwic21cIiwgY29sb3I6IFwiZGFuZ2VyXCIsIGNoaWxkcmVuOiBsaXN0RXJyb3IgfSldIH0pIH0pKTtcbn07XG5Qcm9Gb3JtTGlzdEJhc2UuZGlzcGxheU5hbWUgPSAnUHJvRm9ybUxpc3QnO1xuZXhwb3J0IGNvbnN0IFByb0Zvcm1MaXN0ID0gbWVtbyhQcm9Gb3JtTGlzdEJhc2UpO1xuZXhwb3J0IGRlZmF1bHQgUHJvRm9ybUxpc3Q7IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
@@ -62,9 +62,20 @@ var SubmitterBase = function SubmitterBase(props) {
62
62
  }, _callee);
63
63
  }));
64
64
  });
65
+ // Reset the values FIRST, then fire the callback chain,
66
+ // so onReset observes the already-reset state. resetFields() itself is a
67
+ // pure state API and fires no callbacks.
65
68
  var handleReset = useMemoizedFn(function () {
66
- onReset === null || onReset === void 0 ? void 0 : onReset();
67
69
  form.resetFields();
70
+ onReset === null || onReset === void 0 ? void 0 : onReset();
71
+ });
72
+ // Button onClick chains the consumer's resetButtonProps.onClick (mirroring
73
+ // handleSubmitClick). Overlay close does NOT depend on this — it rides the
74
+ // form-level onReset channel in DialogForm/DrawerForm.
75
+ var handleResetClick = useMemoizedFn(function (e) {
76
+ var _a;
77
+ handleReset();
78
+ (_a = resetButtonProps === null || resetButtonProps === void 0 ? void 0 : resetButtonProps.onClick) === null || _a === void 0 ? void 0 : _a.call(resetButtonProps, e);
68
79
  });
69
80
  // The default submit button keeps type="submit" so the actual submission
70
81
  // flows through the <form> onSubmit handler exactly once — this click
@@ -80,10 +91,10 @@ var SubmitterBase = function SubmitterBase(props) {
80
91
  type: "button",
81
92
  color: "secondary"
82
93
  }, resetButtonProps, {
83
- onClick: handleReset,
94
+ onClick: handleResetClick,
84
95
  children: resetText
85
96
  }), "reset");
86
- }, [resetText, resetButtonProps, handleReset]);
97
+ }, [resetText, resetButtonProps, handleResetClick]);
87
98
  var submitButton = useMemo(function () {
88
99
  return _jsx(Button, Object.assign({
89
100
  type: "submit",
@@ -113,4 +124,4 @@ var SubmitterBase = function SubmitterBase(props) {
113
124
  SubmitterBase.displayName = 'Submitter';
114
125
  export var Submitter = /*#__PURE__*/memo(SubmitterBase);
115
126
  export default Submitter;
116
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9TdWJtaXR0ZXIuanMiLCJjb21wb25lbnRzL3NyYy9jb21wb25lbnRzL1Byb0Zvcm0vU3VibWl0dGVyLnRzeCJdLCJuYW1lcyI6WyJfX2F3YWl0ZXIiLCJ0aGlzQXJnIiwiX2FyZ3VtZW50cyIsIlAiLCJnZW5lcmF0b3IiLCJhZG9wdCIsInZhbHVlIiwicmVzb2x2ZSIsIlByb21pc2UiLCJyZWplY3QiLCJmdWxmaWxsZWQiLCJzdGVwIiwibmV4dCIsImUiLCJyZWplY3RlZCIsInJlc3VsdCIsImRvbmUiLCJ0aGVuIiwiYXBwbHkiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwibWVtbyIsInVzZU1lbW8iLCJ1c2VNZW1vaXplZEZuIiwiZGVmYXVsdCIsImNsYXNzbmFtZXMiLCJ1c2VGb3JtSW5zdGFuY2UiLCJCdXR0b24iLCJDU1NfUFJFRklYIiwiREVGQVVMVF9URVhUIiwiY2xhc3NlcyIsImNvbmNhdCIsIlN1Ym1pdHRlckJhc2UiLCJwcm9wcyIsIl9wcm9wcyRzdWJtaXRUZXh0Iiwic3VibWl0VGV4dCIsInN1Ym1pdCIsIl9wcm9wcyRyZXNldFRleHQiLCJyZXNldFRleHQiLCJyZXNldCIsInJlbmRlciIsIm9uU3VibWl0Iiwib25SZXNldCIsInN1Ym1pdEJ1dHRvblByb3BzIiwicmVzZXRCdXR0b25Qcm9wcyIsIl9wcm9wcyRsb2FkaW5nIiwibG9hZGluZyIsImZvcm0iLCJoYW5kbGVTdWJtaXQiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2Iiwic3VibWl0Rm9ybSIsInN0b3AiLCJoYW5kbGVSZXNldCIsInJlc2V0RmllbGRzIiwiaGFuZGxlU3VibWl0Q2xpY2siLCJfYSIsIm9uQ2xpY2siLCJjYWxsIiwicmVzZXRCdXR0b24iLCJPYmplY3QiLCJhc3NpZ24iLCJ0eXBlIiwiY29sb3IiLCJjaGlsZHJlbiIsInN1Ym1pdEJ1dHRvbiIsImRvbSIs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RSxJQUFJN0IsTUFBTSxFQUFFO0lBQ1YsT0FDRXRCLElBQUEsQ0FBQSxLQUFBLEVBQUE7TUFBS3FELFNBQVMsRUFBRXpDLE9BQU8sQ0FBQSxDQUFFO01BQUFzQyxRQUFBLEVBQ3RCNUIsTUFBTSxDQUFDO1FBQUVPLElBQUksRUFBSkEsSUFBSTtRQUFFWCxNQUFNLEVBQUVZLFlBQVk7UUFBRVQsS0FBSyxFQUFFa0I7TUFBVyxDQUFFLEVBQUVhLEdBQUc7SUFBQyxDQUFBLENBQzVEO0VBRVY7RUFFQSxPQUNFbEQsS0FBQSxDQUFBLEtBQUEsRUFBQTtJQUFLbUQsU0FBUyxFQUFFekMsT0FBTyxDQUFBLENBQUU7SUFBQXNDLFFBQUEsRUFBQSxDQUN0QkwsV0FBVyxFQUNYTSxZQUFZO0VBQUEsQ0FBQSxDQUNUO0FBRVYsQ0FBQztBQUVEckMsYUFBYSxDQUFDd0MsV0FBVyxHQUFHLFdBQVc7QUFFdkMsT0FBTyxJQUFNQyxTQUFTLGdCQUFHcEQsSUFBSSxDQUFDVyxhQUFhLENBQUM7QUFFNUMsZUFBZXlDLFNBQVMiLCJmaWxlIjoiY29tcG9uZW50cy9Qcm9Gb3JtL1N1Ym1pdHRlci5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xuaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IG1lbW8sIHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdXNlTWVtb2l6ZWRGbiBmcm9tICdAMW1vbmV5L2hvb2tzL3VzZU1lbW9pemVkRm4nO1xuaW1wb3J0IHsgZGVmYXVsdCBhcyBjbGFzc25hbWVzIH0gZnJvbSAnLi4vLi4vdXRpbHMvY2xhc3NuYW1lcyc7XG5pbXBvcnQgeyB1c2VGb3JtSW5zdGFuY2UgfSBmcm9tICcuL2NvbnRleHQnO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSAnLi4vQnV0dG9uJztcbmltcG9ydCB7IENTU19QUkVGSVgsIERFRkFVTFRfVEVYVCB9IGZyb20gJy4vY29uc3RhbnRzJztcbmNvbnN0IGNsYXNzZXMgPSBjbGFzc25hbWVzKGAke0NTU19QUkVGSVh9LXN1Ym1pdHRlcmApO1xuY29uc3QgU3VibWl0dGVyQmFzZSA9IChwcm9wcykgPT4ge1xuICAgIGNvbnN0IHsgc3VibWl0VGV4dCA9IERFRkFVTFRfVEVYVC5zdWJtaXQsIHJlc2V0VGV4dCA9IERFRkFVTFRfVEVYVC5yZXNldCwgcmVuZGVyLCBvblN1Ym1pdCwgb25SZXNldCwgc3VibWl0QnV0dG9uUHJvcHMsIHJlc2V0QnV0dG9uUHJvcHMsIGxvYWRpbmcgPSBmYWxzZSwgfSA9IHByb3BzO1xuICAgIGNvbnN0IGZvcm0gPSB1c2VGb3JtSW5zdGFuY2UoKTtcbiAgICBjb25zdCBoYW5kbGVTdWJtaXQgPSB1c2VNZW1vaXplZEZuKCgpID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBvblN1Ym1pdCA9PT0gbnVsbCB8fCBvblN1Ym1pdCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25TdWJtaXQoKTtcbiAgICAgICAgeWllbGQgZm9ybS5zdWJtaXRGb3JtKCk7XG4gICAgfSkpO1xuICAgIGNvbnN0IGhhbmRsZVJlc2V0ID0gdXNlTWVtb2l6ZWRGbigoKSA9PiB7XG4gICAgICAgIG9uUmVzZXQgPT09IG51bGwgfHwgb25SZXNldCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25SZXNldCgpO1xuICAgICAgICBmb3JtLnJlc2V0RmllbGRzKCk7XG4gICAgfSk7XG4gICAgLy8gVGhlIGRlZmF1bHQgc3VibWl0IGJ1dHRvbiBrZWVwcyB0eXBlPVwic3VibWl0XCIgc28gdGhlIGFjdHVhbCBzdWJtaXNzaW9uXG4gICAgLy8gZmxvd3MgdGhyb3VnaCB0aGUgPGZvcm0+IG9uU3VibWl0IGhhbmRsZXIgZXhhY3RseSBvbmNlIOKAlCB0aGlzIGNsaWNrXG4gICAgLy8gaGFuZGxlciBvbmx5IGZpcmVzIHRoZSB1c2VyJ3Mgb25TdWJtaXQgY2FsbGJhY2sgKHBsdXMgYW55IG9uQ2xpY2sgdGhleVxuICAgIC8vIHBhc3NlZCB2aWEgc3VibWl0QnV0dG9uUHJvcHMpLlxuICAgIGNvbnN0IGhhbmRsZVN1Ym1pdENsaWNrID0gdXNlTWVtb2l6ZWRGbigoZSkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIG9uU3VibWl0ID09PSBudWxsIHx8IG9uU3VibWl0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvblN1Ym1pdCgpO1xuICAgICAgICAoX2EgPSBzdWJtaXRCdXR0b25Qcm9wcyA9PT0gbnVsbCB8fCBzdWJtaXRCdXR0b25Qcm9wcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3VibWl0QnV0dG9uUHJvcHMub25DbGljaykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNhbGwoc3VibWl0QnV0dG9uUHJvcHMsIGUpO1xuICAgIH0pO1xuICAgIGNvbnN0IHJlc2V0QnV0dG9uID0gdXNlTWVtbygoKSA9PiAoX2pzeChCdXR0b24sIE9iamVjdC5hc3NpZ24oeyB0eXBlOiBcImJ1dHRvblwiLCBjb2xvcjogXCJzZWNvbmRhcnlcIiB9LCByZXNldEJ1dHRvblByb3BzLCB7IG9uQ2xpY2s6IGhhbmRsZVJlc2V0LCBjaGlsZHJlbjogcmVzZXRUZXh0IH0pLCBcInJlc2V0XCIpKSwgW3Jlc2V0VGV4dCwgcmVzZXRCdXR0b25Qcm9wcywgaGFuZGxlUmVzZXRdKTtcbiAgICBjb25zdCBzdWJtaXRCdXR0b24gPSB1c2VNZW1vKCgpID0+IChfanN4KEJ1dHRvbiwgT2JqZWN0LmFzc2lnbih7IHR5cGU6IFwic3VibWl0XCIsIGNvbG9yOiBcInByaW1hcnlcIiwgbG9hZGluZzogbG9hZGluZyB9LCBzdWJtaXRCdXR0b25Qcm9wcywgeyBvbkNsaWNrOiBoYW5kbGVTdWJtaXRDbGljaywgY2hpbGRyZW46IHN1Ym1pdFRleHQgfSksIFwic3VibWl0XCIpKSwgW3N1Ym1pdFRleHQsIHN1Ym1pdEJ1dHRvblByb3BzLCBsb2FkaW5nLCBoYW5kbGVTdWJtaXRDbGlja10pO1xuICAgIGNvbnN0IGRvbSA9IFtyZXNldEJ1dHRvbiwgc3VibWl0QnV0dG9uXTtcbiAgICBpZiAocmVuZGVyKSB7XG4gICAgICAgIHJldHVybiAoX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygpLCBjaGlsZHJlbjogcmVuZGVyKHsgZm9ybSwgc3VibWl0OiBoYW5kbGVTdWJtaXQsIHJlc2V0OiBoYW5kbGVSZXNldCB9LCBkb20pIH0pKTtcbiAgICB9XG4gICAgcmV0dXJuIChfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygpLCBjaGlsZHJlbjogW3Jlc2V0QnV0dG9uLCBzdWJtaXRCdXR0b25dIH0pKTtcbn07XG5TdWJtaXR0ZXJCYXNlLmRpc3BsYXlOYW1lID0gJ1N1Ym1pdHRlcic7XG5leHBvcnQgY29uc3QgU3VibWl0dGVyID0gbWVtbyhTdWJtaXR0ZXJCYXNlKTtcbmV4cG9ydCBkZWZhdWx0IFN1Ym1pdHRlcjsiLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
127
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9TdWJtaXR0ZXIuanMiLCJjb21wb25lbnRzL3NyYy9jb21wb25lbnRzL1Byb0Zvcm0vU3VibWl0dGVyLnRzeCJdLCJuYW1lcyI6WyJfX2F3YWl0ZXIiLCJ0aGlzQXJnIiwiX2FyZ3VtZW50cyIsIlAiLCJnZW5lcmF0b3IiLCJhZG9wdCIsInZhbHVlIiwicmVzb2x2ZSIsIlByb21pc2UiLCJyZWplY3QiLCJmdWxmaWxsZWQiLCJzdGVwIiwibmV4dCIsImUiLCJyZWplY3RlZCIsInJlc3VsdCIsImRvbmUiLCJ0aGVuIiwiYXBwbHkiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwibWVtbyIsInVzZU1lbW8iLCJ1c2VNZW1vaXplZEZuIiwiZGVmYXVsdCIsImNsYXNzbmFtZXMiLCJ1c2VGb3JtSW5zdGFuY2UiLCJCdXR0b24iLCJDU1NfUFJFRklYIiwiREVGQVVMVF9URVhUIiwiY2xhc3NlcyIsImNvbmNhdCIsIlN1Ym1pdHRlckJhc2UiLCJwcm9wcyIsIl9wcm9wcyRzdWJtaXRUZXh0Iiwic3VibWl0VGV4dCIsInN1Ym1pdCIsIl9wcm9wcyRyZXNldFRleHQiLCJyZXNldFRleHQiLCJyZXNldCIsInJlbmRlciIsIm9uU3VibWl0Iiwib25SZXNldCIsInN1Ym1pdEJ1dHRvblByb3BzIiwicmVzZXRCdXR0b25Qcm9wcyIsIl9wcm9wcyRsb2FkaW5nIiwibG9hZGluZyIsImZvcm0iLCJoYW5kbGVTdWJtaXQiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2Iiwic3VibWl0Rm9ybSIsInN0b3AiLCJoYW5kbGVSZXNldCIsInJlc2V0RmllbGRzIiwiaGFuZGxlUmVzZXRDbGljayIsIl9hIiwib25DbGljayIsImNhbGwiLCJoYW5kbGVTdWJtaXRDbGljayIsInJlc2V0QnV0dG9uIiwiT2JqZWN0IiwiYXNzaWduIiwidHlwZSIsImNvbG9yIiwiY2hpbGRyZW4iLCJz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aXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgbWVtbywgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VNZW1vaXplZEZuIGZyb20gJ0AxbW9uZXkvaG9va3MvdXNlTWVtb2l6ZWRGbic7XG5pbXBvcnQgeyBkZWZhdWx0IGFzIGNsYXNzbmFtZXMgfSBmcm9tICcuLi8uLi91dGlscy9jbGFzc25hbWVzJztcbmltcG9ydCB7IHVzZUZvcm1JbnN0YW5jZSB9IGZyb20gJy4vY29udGV4dCc7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tICcuLi9CdXR0b24nO1xuaW1wb3J0IHsgQ1NTX1BSRUZJWCwgREVGQVVMVF9URVhUIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuY29uc3QgY2xhc3NlcyA9IGNsYXNzbmFtZXMoYCR7Q1NTX1BSRUZJWH0tc3VibWl0dGVyYCk7XG5jb25zdCBTdWJtaXR0ZXJCYXNlID0gKHByb3BzKSA9PiB7XG4gICAgY29uc3QgeyBzdWJtaXRUZXh0ID0gREVGQVVMVF9URVhULnN1Ym1pdCwgcmVzZXRUZXh0ID0gREVGQVVMVF9URVhULnJlc2V0LCByZW5kZXIsIG9uU3VibWl0LCBvblJlc2V0LCBzdWJtaXRCdXR0b25Qcm9wcywgcmVzZXRCdXR0b25Qcm9wcywgbG9hZGluZyA9IGZhbHNlLCB9ID0gcHJvcHM7XG4gICAgY29uc3QgZm9ybSA9IHVzZUZvcm1JbnN0YW5jZSgpO1xuICAgIGNvbnN0IGhhbmRsZVN1Ym1pdCA9IHVzZU1lbW9pemVkRm4oKCkgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIG9uU3VibWl0ID09PSBudWxsIHx8IG9uU3VibWl0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvblN1Ym1pdCgpO1xuICAgICAgICB5aWVsZCBmb3JtLnN1Ym1pdEZvcm0oKTtcbiAgICB9KSk7XG4gICAgLy8gUmVzZXQgdGhlIHZhbHVlcyBGSVJTVCwgdGhlbiBmaXJlIHRoZSBjYWxsYmFjayBjaGFpbixcbiAgICAvLyBzbyBvblJlc2V0IG9ic2VydmVzIHRoZSBhbHJlYWR5LXJlc2V0IHN0YXRlLiByZXNldEZpZWxkcygpIGl0c2VsZiBpcyBhXG4gICAgLy8gcHVyZSBzdGF0ZSBBUEkgYW5kIGZpcmVzIG5vIGNhbGxiYWNrcy5cbiAgICBjb25zdCBoYW5kbGVSZXNldCA9IHVzZU1lbW9pemVkRm4oKCkgPT4ge1xuICAgICAgICBmb3JtLnJlc2V0RmllbGRzKCk7XG4gICAgICAgIG9uUmVzZXQgPT09IG51bGwgfHwgb25SZXNldCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25SZXNldCgpO1xuICAgIH0pO1xuICAgIC8vIEJ1dHRvbiBvbkNsaWNrIGNoYWlucyB0aGUgY29uc3VtZXIncyByZXNldEJ1dHRvblByb3BzLm9uQ2xpY2sgKG1pcnJvcmluZ1xuICAgIC8vIGhhbmRsZVN1Ym1pdENsaWNrKS4gT3ZlcmxheSBjbG9zZSBkb2VzIE5PVCBkZXBlbmQgb24gdGhpcyDigJQgaXQgcmlkZXMgdGhlXG4gICAgLy8gZm9ybS1sZXZlbCBvblJlc2V0IGNoYW5uZWwgaW4gRGlhbG9nRm9ybS9EcmF3ZXJGb3JtLlxuICAgIGNvbnN0IGhhbmRsZVJlc2V0Q2xpY2sgPSB1c2VNZW1vaXplZEZuKChlKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgaGFuZGxlUmVzZXQoKTtcbiAgICAgICAgKF9hID0gcmVzZXRCdXR0b25Qcm9wcyA9PT0gbnVsbCB8fCByZXNldEJ1dHRvblByb3BzID09PSB2b2lkIDAgPyB2b2lkIDAgOiByZXNldEJ1dHRvblByb3BzLm9uQ2xpY2spID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jYWxsKHJlc2V0QnV0dG9uUHJvcHMsIGUpO1xuICAgIH0pO1xuICAgIC8vIFRoZSBkZWZhdWx0IHN1Ym1pdCBidXR0b24ga2VlcHMgdHlwZT1cInN1Ym1pdFwiIHNvIHRoZSBhY3R1YWwgc3VibWlzc2lvblxuICAgIC8vIGZsb3dzIHRocm91Z2ggdGhlIDxmb3JtPiBvblN1Ym1pdCBoYW5kbGVyIGV4YWN0bHkgb25jZSDigJQgdGhpcyBjbGlja1xuICAgIC8vIGhhbmRsZXIgb25seSBmaXJlcyB0aGUgdXNlcidzIG9uU3VibWl0IGNhbGxiYWNrIChwbHVzIGFueSBvbkNsaWNrIHRoZXlcbiAgICAvLyBwYXNzZWQgdmlhIHN1Ym1pdEJ1dHRvblByb3BzKS5cbiAgICBjb25zdCBoYW5kbGVTdWJtaXRDbGljayA9IHVzZU1lbW9pemVkRm4oKGUpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBvblN1Ym1pdCA9PT0gbnVsbCB8fCBvblN1Ym1pdCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25TdWJtaXQoKTtcbiAgICAgICAgKF9hID0gc3VibWl0QnV0dG9uUHJvcHMgPT09IG51bGwgfHwgc3VibWl0QnV0dG9uUHJvcHMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHN1Ym1pdEJ1dHRvblByb3BzLm9uQ2xpY2spID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jYWxsKHN1Ym1pdEJ1dHRvblByb3BzLCBlKTtcbiAgICB9KTtcbiAgICBjb25zdCByZXNldEJ1dHRvbiA9IHVzZU1lbW8oKCkgPT4gKF9qc3goQnV0dG9uLCBPYmplY3QuYXNzaWduKHsgdHlwZTogXCJidXR0b25cIiwgY29sb3I6IFwic2Vjb25kYXJ5XCIgfSwgcmVzZXRCdXR0b25Qcm9wcywgeyBvbkNsaWNrOiBoYW5kbGVSZXNldENsaWNrLCBjaGlsZHJlbjogcmVzZXRUZXh0IH0pLCBcInJlc2V0XCIpKSwgW3Jlc2V0VGV4dCwgcmVzZXRCdXR0b25Qcm9wcywgaGFuZGxlUmVzZXRDbGlja10pO1xuICAgIGNvbnN0IHN1Ym1pdEJ1dHRvbiA9IHVzZU1lbW8oKCkgPT4gKF9qc3goQnV0dG9uLCBPYmplY3QuYXNzaWduKHsgdHlwZTogXCJzdWJtaXRcIiwgY29sb3I6IFwicHJpbWFyeVwiLCBsb2FkaW5nOiBsb2FkaW5nIH0sIHN1Ym1pdEJ1dHRvblByb3BzLCB7IG9uQ2xpY2s6IGhhbmRsZVN1Ym1pdENsaWNrLCBjaGlsZHJlbjogc3VibWl0VGV4dCB9KSwgXCJzdWJtaXRcIikpLCBbc3VibWl0VGV4dCwgc3VibWl0QnV0dG9uUHJvcHMsIGxvYWRpbmcsIGhhbmRsZVN1Ym1pdENsaWNrXSk7XG4gICAgY29uc3QgZG9tID0gW3Jlc2V0QnV0dG9uLCBzdWJtaXRCdXR0b25dO1xuICAgIGlmIChyZW5kZXIpIHtcbiAgICAgICAgcmV0dXJuIChfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCksIGNoaWxkcmVuOiByZW5kZXIoeyBmb3JtLCBzdWJtaXQ6IGhhbmRsZVN1Ym1pdCwgcmVzZXQ6IGhhbmRsZVJlc2V0IH0sIGRvbSkgfSkpO1xuICAgIH1cbiAgICByZXR1cm4gKF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCksIGNoaWxkcmVuOiBbcmVzZXRCdXR0b24sIHN1Ym1pdEJ1dHRvbl0gfSkpO1xufTtcblN1Ym1pdHRlckJhc2UuZGlzcGxheU5hbWUgPSAnU3VibWl0dGVyJztcbmV4cG9ydCBjb25zdCBTdWJtaXR0ZXIgPSBtZW1vKFN1Ym1pdHRlckJhc2UpO1xuZXhwb3J0IGRlZmF1bHQgU3VibWl0dGVyOyIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
@@ -1,8 +1,15 @@
1
+ import type { FormStore } from './core/formStore';
1
2
  import type { ProFormContextValue, ProFormStableContextValue, ProFormStateContextValue, FormListContextValue, ProFormFormInstance } from './interface';
2
3
  export declare const ProFormStableContext: import("react").Context<ProFormStableContextValue | null>;
3
- export declare const ProFormStateContext: import("react").Context<ProFormStateContextValue | null>;
4
+ export declare const ProFormStateContext: import("react").Context<FormStore | null>;
4
5
  /** Read ONLY the stable slice (config + dispatchers) — no per-keystroke re-renders. */
5
6
  export declare const useProFormStable: () => ProFormStableContextValue;
7
+ /**
8
+ * Internal: the raw form store (identity-stable — reading it never causes
9
+ * re-renders by itself). Pair with `useStoreSelector` for fine-grained,
10
+ * per-field subscriptions. Throws when used outside `<ProForm>`.
11
+ */
12
+ export declare const useProFormStore: () => FormStore;
6
13
  /** Read ONLY the volatile slice (values/errors/…) — re-renders on every change. */
7
14
  export declare const useProFormState: () => ProFormStateContextValue;
8
15
  /**
@@ -24,8 +31,9 @@ export interface UseFormWatch {
24
31
  (): Record<string, unknown>;
25
32
  }
26
33
  /**
27
- * Watch a single field or the whole values object. Re-renders whenever form
28
- * values change. Lighter alternative to the `ProForm.Dependency` render-prop.
34
+ * Watch a single field or the whole values object. Re-renders whenever the
35
+ * WATCHED value changes (unrelated fields no longer cause re-renders).
36
+ * Lighter alternative to the `ProForm.Dependency` render-prop.
29
37
  */
30
38
  export declare const useFormWatch: UseFormWatch;
31
39
  export declare const FormListContext: import("react").Context<FormListContextValue>;
@@ -1,11 +1,14 @@
1
1
  import { createContext, useContext, useMemo } from 'react';
2
2
  import { resolveValue } from './core/pathUtils';
3
+ import { useStoreSelector } from './core/formStore';
3
4
  // ---------------------------------------------------------------------------
4
5
  // The ProForm context is SPLIT in two so that consumers which only need
5
6
  // configuration / dispatchers (Submitter, field factories) do not re-render
6
7
  // on every keystroke:
7
8
  // - StableContext: config + identity-stable dispatchers and form instance.
8
- // - StateContext: volatile values/errors/warnings/touched/validating.
9
+ // - StateContext: holds the IDENTITY-STABLE form store, never a snapshot —
10
+ // per-keystroke updates reach subscribers through store subscriptions
11
+ // (useStoreSelector with per-field selectors), not context propagation.
9
12
  // ---------------------------------------------------------------------------
10
13
  export var ProFormStableContext = /*#__PURE__*/createContext(null);
11
14
  ProFormStableContext.displayName = 'ProFormStableContext';
@@ -20,13 +23,28 @@ export var useProFormStable = function useProFormStable() {
20
23
  }
21
24
  return ctx;
22
25
  };
23
- /** Read ONLY the volatile slice (values/errors/…) — re-renders on every change. */
24
- export var useProFormState = function useProFormState() {
25
- var ctx = useContext(ProFormStateContext);
26
- if (!ctx) {
26
+ /**
27
+ * Internal: the raw form store (identity-stable — reading it never causes
28
+ * re-renders by itself). Pair with `useStoreSelector` for fine-grained,
29
+ * per-field subscriptions. Throws when used outside `<ProForm>`.
30
+ */
31
+ export var useProFormStore = function useProFormStore() {
32
+ var store = useContext(ProFormStateContext);
33
+ if (!store) {
27
34
  throw new Error(OUTSIDE_FORM_ERROR);
28
35
  }
29
- return ctx;
36
+ return store;
37
+ };
38
+ var selectStateSnapshot = function selectStateSnapshot(state) {
39
+ return state;
40
+ };
41
+ /** Read ONLY the volatile slice (values/errors/…) — re-renders on every change. */
42
+ export var useProFormState = function useProFormState() {
43
+ var store = useProFormStore();
44
+ // Subscribe to every commit (the snapshot identity changes per commit) —
45
+ // that broad granularity is this hook's documented contract; fine-grained
46
+ // consumers use useStoreSelector with a narrower selector instead.
47
+ return useStoreSelector(store, selectStateSnapshot);
30
48
  };
31
49
  /**
32
50
  * Read the unified ProForm context (merged form core + ProForm semantics).
@@ -49,13 +67,15 @@ export var useFormInstance = function useFormInstance() {
49
67
  return useProFormStable().formInstance;
50
68
  };
51
69
  /**
52
- * Watch a single field or the whole values object. Re-renders whenever form
53
- * values change. Lighter alternative to the `ProForm.Dependency` render-prop.
70
+ * Watch a single field or the whole values object. Re-renders whenever the
71
+ * WATCHED value changes (unrelated fields no longer cause re-renders).
72
+ * Lighter alternative to the `ProForm.Dependency` render-prop.
54
73
  */
55
74
  export var useFormWatch = function useFormWatch(name) {
56
- var _useProFormState = useProFormState(),
57
- values = _useProFormState.values;
58
- return name === undefined ? values : resolveValue(values, name);
75
+ var store = useProFormStore();
76
+ return useStoreSelector(store, function (state) {
77
+ return name === undefined ? state.values : resolveValue(state.values, name);
78
+ });
59
79
  };
60
80
  // ---------------------------------------------------------------------------
61
81
  // FormListContext — provides list scope info to ProFormDependency
@@ -65,4 +85,4 @@ FormListContext.displayName = 'FormListContext';
65
85
  export var useFormListContext = function useFormListContext() {
66
86
  return useContext(FormListContext);
67
87
  };
68
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvUHJvRm9ybS9jb250ZXh0LnRzIiwiY29tcG9uZW50cy9Qcm9Gb3JtL2NvbnRleHQuanMiXSwibmFtZXMiOlsiY3JlYXRlQ29udGV4dCIsInVzZUNvbnRleHQiLCJ1c2VNZW1vIiwicmVzb2x2ZVZhbHVlIiwiUHJvRm9ybVN0YWJsZUNvbnRleHQiLCJkaXNwbGF5TmFtZSIsIlByb0Zvcm1TdGF0ZUNvbnRleHQiLCJPVVRTSURFX0ZPUk1fRVJST1IiLCJ1c2VQcm9Gb3JtU3RhYmxlIiwiY3R4IiwiRXJyb3IiLCJ1c2VQcm9Gb3JtU3RhdGUiLCJ1c2VQcm9Gb3JtQ29udGV4dCIsInN0YWJsZSIsInN0YXRlIiwiT2JqZWN0IiwiYXNzaWduIiwidXNlRm9ybUluc3RhbmNlIiwiZm9ybUluc3RhbmNlIiwidXNlRm9ybVdhdGNoIiwibmFtZSIsIl91c2VQcm9Gb3JtU3RhdGUiLCJ2YWx1ZXMiLCJ1bmRlZmluZWQiLCJGb3JtTGlzdENvbnRleHQiLCJ1c2VGb3JtTGlzdENvbnRleHQiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLGFBQWEsRUFBRUMsVUFBVSxFQUFFQyxPQUFPLFFBQVEsT0FBTztBQUMxRCxTQUFTQyxZQUFZLFFBQVEsa0JBQWtCO0FBUy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxJQUFNQyxvQkFBb0IsZ0JBQUdKLGFBQWEsQ0FBbUMsSUFBSSxDQUFDO0FBQ3pGSSxvQkFBb0IsQ0FBQ0MsV0FBVyxHQUFHLHNCQUFzQjtBQUV6RCxPQUFPLElBQU1DLG1CQUFtQixnQkFBR04sYUFBYSxDQUFrQyxJQUFJLENBQUM7QUFDdkZNLG1CQUFtQixDQUFDRCxXQUFXLEdBQUcscUJBQXFCO0FBRXZELElBQU1FLGtCQUFrQixHQUFHLDZEQUE2RDtBQUV4RjtBQUNBLE9BQU8sSUFBTUMsZ0JBQWdCLEdBQUcsU0FBbkJBLGdCQUFnQkEsQ0FBQSxFQUFtQztFQUM5RCxJQUFNQyxHQUFHLEdBQUdSLFVBQVUsQ0FBQ0csb0JBQW9CLENBQUM7RUFDNUMsSUFBSSxDQUFDSyxHQUFHLEVBQUU7SUFDUixNQUFNLElBQUlDLEtBQUssQ0FBQ0gsa0JBQWtCLENBQUM7RUFDckM7RUFDQSxPQUFPRSxHQUFHO0FBQ1osQ0FBQztBQUVEO0FBQ0EsT0FBTyxJQUFNRSxlQUFlLEdBQUcsU0FBbEJBLGVBQWVBLENBQUEsRUFBa0M7RUFDNUQsSUFBTUYsR0FBRyxHQUFHUixVQUFVLENBQUNLLG1CQUFtQixDQUFDO0VBQzNDLElBQUksQ0FBQ0csR0FBRyxFQUFFO0lBQ1IsTUFBTSxJQUFJQyxLQUFLLENBQUNILGtCQUFrQixDQUFDO0VBQ3JDO0VBQ0EsT0FBT0UsR0FBRztBQUNaLENBQUM7QUFFRDtBQ1pBO0FBQ0E7QUFDQTtBQUNBO0FEY0EsT0FBTyxJQUFNRyxpQkFBaUIsR0FBRyxTQUFwQkEsaUJBQWlCQSxDQUFBLEVBQTZCO0VBQ3pELElBQU1DLE1BQU0sR0FBR0wsZ0JBQWdCLENBQUEsQ0FBRTtFQUNqQyxJQUFNTSxLQUFLLEdBQUdILGVBQWUsQ0FBQSxDQUFFO0VBQy9CLE9BQU9ULE9BQU8sQ0FBQztJQUFBLE9BQU1hLE1BQUEsQ0FBQUMsTUFBQSxDQUFBRCxNQUFBLENBQUFDLE1BQUEsQ0FBQSxDQUFBLENBQUEsRUFBTUgsTUFBTSxDQUFBLEVBQUtDLEtBQUssQ0FBQTtFQUFBLENBQUcsRUFBRSxDQUFDRCxNQUFNLEVBQUVDLEtBQUssQ0FBQyxDQUFDO0FBQ2xFLENBQUM7QUFFRDtBQ2JBO0FBQ0E7QUFDQTtBQUNBO0FEZUEsT0FBTyxJQUFNRyxlQUFlLEdBQUcsU0FBbEJBLGVBQWVBLENBQUEsRUFBdUU7RUFDakcsT0FBT1QsZ0JBQWdCLENBQUEsQ0FBRSxDQUFDVSxZQUEyQztBQUN2RSxDQUFDO0FBU0Q7QUNyQkE7QUFDQTtBQUNBO0FEdUJBLE9BQU8sSUFBTUMsWUFBWSxHQUFrQixTQUE5QkEsWUFBWUEsQ0FBbUJDLElBQWEsRUFBSTtFQUMzRCxJQUFBQyxnQkFBQSxHQUFtQlYsZUFBZSxDQUFBLENBQUU7SUFBNUJXLE1BQU0sR0FBQUQsZ0JBQUEsQ0FBTkMsTUFBTTtFQUNkLE9BQU9GLElBQUksS0FBS0csU0FBUyxHQUFHRCxNQUFNLEdBQUduQixZQUFZLENBQUNtQixNQUFNLEVBQUVGLElBQUksQ0FBQztBQUNqRSxDQUFrQjtBQUVsQjtBQUNBO0FBQ0E7QUFDQSxPQUFPLElBQU1JLGVBQWUsZ0JBQUd4QixhQUFhLENBQXVCLENBQUEsQ0FBRSxDQUFDO0FBRXRFd0IsZUFBZSxDQUFDbkIsV0FBVyxHQUFHLGlCQUFpQjtBQUUvQyxPQUFPLElBQU1vQixrQkFBa0IsR0FBRyxTQUFyQkEsa0JBQWtCQSxDQUFBO0VBQUEsT0FBK0J4QixVQUFVLENBQUN1QixlQUFlLENBQUM7QUFBQSIsImZpbGUiOiJjb21wb25lbnRzL1Byb0Zvcm0vY29udGV4dC5qcyIsInNvdXJjZXNDb250ZW50IjpbbnVsbCwiaW1wb3J0IHsgY3JlYXRlQ29udGV4dCwgdXNlQ29udGV4dCwgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHJlc29sdmVWYWx1ZSB9IGZyb20gJy4vY29yZS9wYXRoVXRpbHMnO1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBUaGUgUHJvRm9ybSBjb250ZXh0IGlzIFNQTElUIGluIHR3byBzbyB0aGF0IGNvbnN1bWVycyB3aGljaCBvbmx5IG5lZWRcbi8vIGNvbmZpZ3VyYXRpb24gLyBkaXNwYXRjaGVycyAoU3VibWl0dGVyLCBmaWVsZCBmYWN0b3JpZXMpIGRvIG5vdCByZS1yZW5kZXJcbi8vIG9uIGV2ZXJ5IGtleXN0cm9rZTpcbi8vIC0gU3RhYmxlQ29udGV4dDogY29uZmlnICsgaWRlbnRpdHktc3RhYmxlIGRpc3BhdGNoZXJzIGFuZCBmb3JtIGluc3RhbmNlLlxuLy8gLSBTdGF0ZUNvbnRleHQ6IHZvbGF0aWxlIHZhbHVlcy9lcnJvcnMvd2FybmluZ3MvdG91Y2hlZC92YWxpZGF0aW5nLlxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5leHBvcnQgY29uc3QgUHJvRm9ybVN0YWJsZUNvbnRleHQgPSBjcmVhdGVDb250ZXh0KG51bGwpO1xuUHJvRm9ybVN0YWJsZUNvbnRleHQuZGlzcGxheU5hbWUgPSAnUHJvRm9ybVN0YWJsZUNvbnRleHQnO1xuZXhwb3J0IGNvbnN0IFByb0Zvcm1TdGF0ZUNvbnRleHQgPSBjcmVhdGVDb250ZXh0KG51bGwpO1xuUHJvRm9ybVN0YXRlQ29udGV4dC5kaXNwbGF5TmFtZSA9ICdQcm9Gb3JtU3RhdGVDb250ZXh0JztcbmNvbnN0IE9VVFNJREVfRk9STV9FUlJPUiA9ICd1c2VQcm9Gb3JtQ29udGV4dCBtdXN0IGJlIHVzZWQgd2l0aGluIGEgPFByb0Zvcm0+IGNvbXBvbmVudCc7XG4vKiogUmVhZCBPTkxZIHRoZSBzdGFibGUgc2xpY2UgKGNvbmZpZyArIGRpc3BhdGNoZXJzKSDigJQgbm8gcGVyLWtleXN0cm9rZSByZS1yZW5kZXJzLiAqL1xuZXhwb3J0IGNvbnN0IHVzZVByb0Zvcm1TdGFibGUgPSAoKSA9PiB7XG4gICAgY29uc3QgY3R4ID0gdXNlQ29udGV4dChQcm9Gb3JtU3RhYmxlQ29udGV4dCk7XG4gICAgaWYgKCFjdHgpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKE9VVFNJREVfRk9STV9FUlJPUik7XG4gICAgfVxuICAgIHJldHVybiBjdHg7XG59O1xuLyoqIFJlYWQgT05MWSB0aGUgdm9sYXRpbGUgc2xpY2UgKHZhbHVlcy9lcnJvcnMv4oCmKSDigJQgcmUtcmVuZGVycyBvbiBldmVyeSBjaGFuZ2UuICovXG5leHBvcnQgY29uc3QgdXNlUHJvRm9ybVN0YXRlID0gKCkgPT4ge1xuICAgIGNvbnN0IGN0eCA9IHVzZUNvbnRleHQoUHJvRm9ybVN0YXRlQ29udGV4dCk7XG4gICAgaWYgKCFjdHgpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKE9VVFNJREVfRk9STV9FUlJPUik7XG4gICAgfVxuICAgIHJldHVybiBjdHg7XG59O1xuLyoqXG4gKiBSZWFkIHRoZSB1bmlmaWVkIFByb0Zvcm0gY29udGV4dCAobWVyZ2VkIGZvcm0gY29yZSArIFByb0Zvcm0gc2VtYW50aWNzKS5cbiAqIFN1YnNjcmliZXMgdG8gQk9USCBzbGljZXMg4oCUIHJlLXJlbmRlcnMgd2hlbmV2ZXIgZm9ybSB2YWx1ZXMgY2hhbmdlLlxuICogVGhyb3dzIHdoZW4gdXNlZCBvdXRzaWRlIGA8UHJvRm9ybT5gLlxuICovXG5leHBvcnQgY29uc3QgdXNlUHJvRm9ybUNvbnRleHQgPSAoKSA9PiB7XG4gICAgY29uc3Qgc3RhYmxlID0gdXNlUHJvRm9ybVN0YWJsZSgpO1xuICAgIGNvbnN0IHN0YXRlID0gdXNlUHJvRm9ybVN0YXRlKCk7XG4gICAgcmV0dXJuIHVzZU1lbW8oKCkgPT4gKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgc3RhYmxlKSwgc3RhdGUpKSwgW3N0YWJsZSwgc3RhdGVdKTtcbn07XG4vKipcbiAqIFJlYWQgdGhlIFByb0Zvcm0gZm9ybSBpbnN0YW5jZSAoc3VwZXJzZXQgb2YgRm9ybUNvcmVJbnN0YW5jZSB3aXRoIGZvcm1hdCBoZWxwZXJzKS5cbiAqIFN1YnNjcmliZXMgb25seSB0byB0aGUgc3RhYmxlIHNsaWNlIOKAlCBkb2VzIE5PVCByZS1yZW5kZXIgcGVyIGtleXN0cm9rZS5cbiAqIFBhc3MgYSBgVmFsdWVzYCB0eXBlIGFyZ3VtZW50IHRvIGdldCBhIHR5cGVkIGluc3RhbmNlLlxuICovXG5leHBvcnQgY29uc3QgdXNlRm9ybUluc3RhbmNlID0gKCkgPT4ge1xuICAgIHJldHVybiB1c2VQcm9Gb3JtU3RhYmxlKCkuZm9ybUluc3RhbmNlO1xufTtcbi8qKlxuICogV2F0Y2ggYSBzaW5nbGUgZmllbGQgb3IgdGhlIHdob2xlIHZhbHVlcyBvYmplY3QuIFJlLXJlbmRlcnMgd2hlbmV2ZXIgZm9ybVxuICogdmFsdWVzIGNoYW5nZS4gTGlnaHRlciBhbHRlcm5hdGl2ZSB0byB0aGUgYFByb0Zvcm0uRGVwZW5kZW5jeWAgcmVuZGVyLXByb3AuXG4gKi9cbmV4cG9ydCBjb25zdCB1c2VGb3JtV2F0Y2ggPSAoKG5hbWUpID0+IHtcbiAgICBjb25zdCB7IHZhbHVlcyB9ID0gdXNlUHJvRm9ybVN0YXRlKCk7XG4gICAgcmV0dXJuIG5hbWUgPT09IHVuZGVmaW5lZCA/IHZhbHVlcyA6IHJlc29sdmVWYWx1ZSh2YWx1ZXMsIG5hbWUpO1xufSk7XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEZvcm1MaXN0Q29udGV4dCDigJQgcHJvdmlkZXMgbGlzdCBzY29wZSBpbmZvIHRvIFByb0Zvcm1EZXBlbmRlbmN5XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmV4cG9ydCBjb25zdCBGb3JtTGlzdENvbnRleHQgPSBjcmVhdGVDb250ZXh0KHt9KTtcbkZvcm1MaXN0Q29udGV4dC5kaXNwbGF5TmFtZSA9ICdGb3JtTGlzdENvbnRleHQnO1xuZXhwb3J0IGNvbnN0IHVzZUZvcm1MaXN0Q29udGV4dCA9ICgpID0+IHVzZUNvbnRleHQoRm9ybUxpc3RDb250ZXh0KTsiXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
88
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvUHJvRm9ybS9jb250ZXh0LnRzIiwiY29tcG9uZW50cy9Qcm9Gb3JtL2NvbnRleHQuanMiXSwibmFtZXMiOlsiY3JlYXRlQ29udGV4dCIsInVzZUNvbnRleHQiLCJ1c2VNZW1vIiwicmVzb2x2ZVZhbHVlIiwidXNlU3RvcmVTZWxlY3RvciIsIlByb0Zvcm1TdGFibGVDb250ZXh0IiwiZGlzcGxheU5hbWUiLCJQcm9Gb3JtU3RhdGVDb250ZXh0IiwiT1VUU0lERV9GT1JNX0VSUk9SIiwidXNlUHJvRm9ybVN0YWJsZSIsImN0eCIsIkVycm9yIiwidXNlUHJvRm9ybVN0b3JlIiwic3RvcmUiLCJzZWxlY3RTdGF0ZVNuYXBzaG90Iiwic3RhdGUiLCJ1c2VQcm9Gb3JtU3RhdGUiLCJ1c2VQcm9Gb3JtQ29udGV4dCIsInN0YWJsZSIsIk9iamVjdCIsImFzc2lnbiIsInVzZUZvcm1JbnN0YW5jZSIsImZvcm1JbnN0YW5jZSIsInVzZUZvcm1XYXRjaCIsIm5hbWUiLCJ1bmRlZmluZWQiLCJ2YWx1ZXMiLCJGb3JtTGlzdENvbnRleHQiLCJ1c2VGb3JtTGlzdENvbnRleHQiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLGFBQWEsRUFBRUMsVUFBVSxFQUFFQyxPQUFPLFFBQVEsT0FBTztBQUMxRCxTQUFTQyxZQUFZLFFBQVEsa0JBQWtCO0FBQy9DLFNBQVNDLGdCQUFnQixRQUFRLGtCQUFrQjtBQVVuRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLElBQU1DLG9CQUFvQixnQkFBR0wsYUFBYSxDQUFtQyxJQUFJLENBQUM7QUFDekZLLG9CQUFvQixDQUFDQyxXQUFXLEdBQUcsc0JBQXNCO0FBRXpELE9BQU8sSUFBTUMsbUJBQW1CLGdCQUFHUCxhQUFhLENBQW1CLElBQUksQ0FBQztBQUN4RU8sbUJBQW1CLENBQUNELFdBQVcsR0FBRyxxQkFBcUI7QUFFdkQsSUFBTUUsa0JBQWtCLEdBQUcsNkRBQTZEO0FBRXhGO0FBQ0EsT0FBTyxJQUFNQyxnQkFBZ0IsR0FBRyxTQUFuQkEsZ0JBQWdCQSxDQUFBLEVBQW1DO0VBQzlELElBQU1DLEdBQUcsR0FBR1QsVUFBVSxDQUFDSSxvQkFBb0IsQ0FBQztFQUM1QyxJQUFJLENBQUNLLEdBQUcsRUFBRTtJQUNSLE1BQU0sSUFBSUMsS0FBSyxDQUFDSCxrQkFBa0IsQ0FBQztFQUNyQztFQUNBLE9BQU9FLEdBQUc7QUFDWixDQUFDO0FBRUQ7QUNaQTtBQUNBO0FBQ0E7QUFDQTtBRGNBLE9BQU8sSUFBTUUsZUFBZSxHQUFHLFNBQWxCQSxlQUFlQSxDQUFBLEVBQW1CO0VBQzdDLElBQU1DLEtBQUssR0FBR1osVUFBVSxDQUFDTSxtQkFBbUIsQ0FBQztFQUM3QyxJQUFJLENBQUNNLEtBQUssRUFBRTtJQUNWLE1BQU0sSUFBSUYsS0FBSyxDQUFDSCxrQkFBa0IsQ0FBQztFQUNyQztFQUNBLE9BQU9LLEtBQUs7QUFDZCxDQUFDO0FBRUQsSUFBTUMsbUJBQW1CLEdBQUcsU0FBdEJBLG1CQUFtQkEsQ0FBSUMsS0FBcUI7RUFBQSxPQUErQkEsS0FBSztBQUFBO0FBRXRGO0FBQ0EsT0FBTyxJQUFNQyxlQUFlLEdBQUcsU0FBbEJBLGVBQWVBLENBQUEsRUFBa0M7RUFDNUQsSUFBTUgsS0FBSyxHQUFHRCxlQUFlLENBQUEsQ0FBRTtFQUMvQjtFQUNBO0VBQ0E7RUFDQSxPQUFPUixnQkFBZ0IsQ0FBQ1MsS0FBSyxFQUFFQyxtQkFBbUIsQ0FBQztBQUNyRCxDQUFDO0FBRUQ7QUNmQTtBQUNBO0FBQ0E7QUFDQTtBRGlCQSxPQUFPLElBQU1HLGlCQUFpQixHQUFHLFNBQXBCQSxpQkFBaUJBLENBQUEsRUFBNkI7RUFDekQsSUFBTUMsTUFBTSxHQUFHVCxnQkFBZ0IsQ0FBQSxDQUFFO0VBQ2pDLElBQU1NLEtBQUssR0FBR0MsZUFBZSxDQUFBLENBQUU7RUFDL0IsT0FBT2QsT0FBTyxDQUFDO0lBQUEsT0FBTWlCLE1BQUEsQ0FBQUMsTUFBQSxDQUFBRCxNQUFBLENBQUFDLE1BQUEsQ0FBQSxDQUFBLENBQUEsRUFBTUYsTUFBTSxDQUFBLEVBQUtILEtBQUssQ0FBQTtFQUFBLENBQUcsRUFBRSxDQUFDRyxNQUFNLEVBQUVILEtBQUssQ0FBQyxDQUFDO0FBQ2xFLENBQUM7QUFFRDtBQ2hCQTtBQUNBO0FBQ0E7QUFDQTtBRGtCQSxPQUFPLElBQU1NLGVBQWUsR0FBRyxTQUFsQkEsZUFBZUEsQ0FBQSxFQUF1RTtFQUNqRyxPQUFPWixnQkFBZ0IsQ0FBQSxDQUFFLENBQUNhLFlBQTJDO0FBQ3ZFLENBQUM7QUFTRDtBQ3hCQTtBQUNBO0FBQ0E7QUFDQTtBRDBCQSxPQUFPLElBQU1DLFlBQVksR0FBa0IsU0FBOUJBLFlBQVlBLENBQW1CQyxJQUFhLEVBQUk7RUFDM0QsSUFBTVgsS0FBSyxHQUFHRCxlQUFlLENBQUEsQ0FBRTtFQUMvQixPQUFPUixnQkFBZ0IsQ0FBQ1MsS0FBSyxFQUFFLFVBQUNFLEtBQUs7SUFBQSxPQUNuQ1MsSUFBSSxLQUFLQyxTQUFTLEdBQUdWLEtBQUssQ0FBQ1csTUFBTSxHQUFHdkIsWUFBWSxDQUFDWSxLQUFLLENBQUNXLE1BQU0sRUFBRUYsSUFBSSxDQUFDO0VBQUEsRUFDckU7QUFDSCxDQUFrQjtBQUVsQjtBQUNBO0FBQ0E7QUFDQSxPQUFPLElBQU1HLGVBQWUsZ0JBQUczQixhQUFhLENBQXVCLENBQUEsQ0FBRSxDQUFDO0FBRXRFMkIsZUFBZSxDQUFDckIsV0FBVyxHQUFHLGlCQUFpQjtBQUUvQyxPQUFPLElBQU1zQixrQkFBa0IsR0FBRyxTQUFyQkEsa0JBQWtCQSxDQUFBO0VBQUEsT0FBK0IzQixVQUFVLENBQUMwQixlQUFlLENBQUM7QUFBQSIsImZpbGUiOiJjb21wb25lbnRzL1Byb0Zvcm0vY29udGV4dC5qcyIsInNvdXJjZXNDb250ZW50IjpbbnVsbCwiaW1wb3J0IHsgY3JlYXRlQ29udGV4dCwgdXNlQ29udGV4dCwgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHJlc29sdmVWYWx1ZSB9IGZyb20gJy4vY29yZS9wYXRoVXRpbHMnO1xuaW1wb3J0IHsgdXNlU3RvcmVTZWxlY3RvciB9IGZyb20gJy4vY29yZS9mb3JtU3RvcmUnO1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBUaGUgUHJvRm9ybSBjb250ZXh0IGlzIFNQTElUIGluIHR3byBzbyB0aGF0IGNvbnN1bWVycyB3aGljaCBvbmx5IG5lZWRcbi8vIGNvbmZpZ3VyYXRpb24gLyBkaXNwYXRjaGVycyAoU3VibWl0dGVyLCBmaWVsZCBmYWN0b3JpZXMpIGRvIG5vdCByZS1yZW5kZXJcbi8vIG9uIGV2ZXJ5IGtleXN0cm9rZTpcbi8vIC0gU3RhYmxlQ29udGV4dDogY29uZmlnICsgaWRlbnRpdHktc3RhYmxlIGRpc3BhdGNoZXJzIGFuZCBmb3JtIGluc3RhbmNlLlxuLy8gLSBTdGF0ZUNvbnRleHQ6IGhvbGRzIHRoZSBJREVOVElUWS1TVEFCTEUgZm9ybSBzdG9yZSwgbmV2ZXIgYSBzbmFwc2hvdCDigJRcbi8vICAgcGVyLWtleXN0cm9rZSB1cGRhdGVzIHJlYWNoIHN1YnNjcmliZXJzIHRocm91Z2ggc3RvcmUgc3Vic2NyaXB0aW9uc1xuLy8gICAodXNlU3RvcmVTZWxlY3RvciB3aXRoIHBlci1maWVsZCBzZWxlY3RvcnMpLCBub3QgY29udGV4dCBwcm9wYWdhdGlvbi5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZXhwb3J0IGNvbnN0IFByb0Zvcm1TdGFibGVDb250ZXh0ID0gY3JlYXRlQ29udGV4dChudWxsKTtcblByb0Zvcm1TdGFibGVDb250ZXh0LmRpc3BsYXlOYW1lID0gJ1Byb0Zvcm1TdGFibGVDb250ZXh0JztcbmV4cG9ydCBjb25zdCBQcm9Gb3JtU3RhdGVDb250ZXh0ID0gY3JlYXRlQ29udGV4dChudWxsKTtcblByb0Zvcm1TdGF0ZUNvbnRleHQuZGlzcGxheU5hbWUgPSAnUHJvRm9ybVN0YXRlQ29udGV4dCc7XG5jb25zdCBPVVRTSURFX0ZPUk1fRVJST1IgPSAndXNlUHJvRm9ybUNvbnRleHQgbXVzdCBiZSB1c2VkIHdpdGhpbiBhIDxQcm9Gb3JtPiBjb21wb25lbnQnO1xuLyoqIFJlYWQgT05MWSB0aGUgc3RhYmxlIHNsaWNlIChjb25maWcgKyBkaXNwYXRjaGVycykg4oCUIG5vIHBlci1rZXlzdHJva2UgcmUtcmVuZGVycy4gKi9cbmV4cG9ydCBjb25zdCB1c2VQcm9Gb3JtU3RhYmxlID0gKCkgPT4ge1xuICAgIGNvbnN0IGN0eCA9IHVzZUNvbnRleHQoUHJvRm9ybVN0YWJsZUNvbnRleHQpO1xuICAgIGlmICghY3R4KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihPVVRTSURFX0ZPUk1fRVJST1IpO1xuICAgIH1cbiAgICByZXR1cm4gY3R4O1xufTtcbi8qKlxuICogSW50ZXJuYWw6IHRoZSByYXcgZm9ybSBzdG9yZSAoaWRlbnRpdHktc3RhYmxlIOKAlCByZWFkaW5nIGl0IG5ldmVyIGNhdXNlc1xuICogcmUtcmVuZGVycyBieSBpdHNlbGYpLiBQYWlyIHdpdGggYHVzZVN0b3JlU2VsZWN0b3JgIGZvciBmaW5lLWdyYWluZWQsXG4gKiBwZXItZmllbGQgc3Vic2NyaXB0aW9ucy4gVGhyb3dzIHdoZW4gdXNlZCBvdXRzaWRlIGA8UHJvRm9ybT5gLlxuICovXG5leHBvcnQgY29uc3QgdXNlUHJvRm9ybVN0b3JlID0gKCkgPT4ge1xuICAgIGNvbnN0IHN0b3JlID0gdXNlQ29udGV4dChQcm9Gb3JtU3RhdGVDb250ZXh0KTtcbiAgICBpZiAoIXN0b3JlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihPVVRTSURFX0ZPUk1fRVJST1IpO1xuICAgIH1cbiAgICByZXR1cm4gc3RvcmU7XG59O1xuY29uc3Qgc2VsZWN0U3RhdGVTbmFwc2hvdCA9IChzdGF0ZSkgPT4gc3RhdGU7XG4vKiogUmVhZCBPTkxZIHRoZSB2b2xhdGlsZSBzbGljZSAodmFsdWVzL2Vycm9ycy/igKYpIOKAlCByZS1yZW5kZXJzIG9uIGV2ZXJ5IGNoYW5nZS4gKi9cbmV4cG9ydCBjb25zdCB1c2VQcm9Gb3JtU3RhdGUgPSAoKSA9PiB7XG4gICAgY29uc3Qgc3RvcmUgPSB1c2VQcm9Gb3JtU3RvcmUoKTtcbiAgICAvLyBTdWJzY3JpYmUgdG8gZXZlcnkgY29tbWl0ICh0aGUgc25hcHNob3QgaWRlbnRpdHkgY2hhbmdlcyBwZXIgY29tbWl0KSDigJRcbiAgICAvLyB0aGF0IGJyb2FkIGdyYW51bGFyaXR5IGlzIHRoaXMgaG9vaydzIGRvY3VtZW50ZWQgY29udHJhY3Q7IGZpbmUtZ3JhaW5lZFxuICAgIC8vIGNvbnN1bWVycyB1c2UgdXNlU3RvcmVTZWxlY3RvciB3aXRoIGEgbmFycm93ZXIgc2VsZWN0b3IgaW5zdGVhZC5cbiAgICByZXR1cm4gdXNlU3RvcmVTZWxlY3RvcihzdG9yZSwgc2VsZWN0U3RhdGVTbmFwc2hvdCk7XG59O1xuLyoqXG4gKiBSZWFkIHRoZSB1bmlmaWVkIFByb0Zvcm0gY29udGV4dCAobWVyZ2VkIGZvcm0gY29yZSArIFByb0Zvcm0gc2VtYW50aWNzKS5cbiAqIFN1YnNjcmliZXMgdG8gQk9USCBzbGljZXMg4oCUIHJlLXJlbmRlcnMgd2hlbmV2ZXIgZm9ybSB2YWx1ZXMgY2hhbmdlLlxuICogVGhyb3dzIHdoZW4gdXNlZCBvdXRzaWRlIGA8UHJvRm9ybT5gLlxuICovXG5leHBvcnQgY29uc3QgdXNlUHJvRm9ybUNvbnRleHQgPSAoKSA9PiB7XG4gICAgY29uc3Qgc3RhYmxlID0gdXNlUHJvRm9ybVN0YWJsZSgpO1xuICAgIGNvbnN0IHN0YXRlID0gdXNlUHJvRm9ybVN0YXRlKCk7XG4gICAgcmV0dXJuIHVzZU1lbW8oKCkgPT4gKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgc3RhYmxlKSwgc3RhdGUpKSwgW3N0YWJsZSwgc3RhdGVdKTtcbn07XG4vKipcbiAqIFJlYWQgdGhlIFByb0Zvcm0gZm9ybSBpbnN0YW5jZSAoc3VwZXJzZXQgb2YgRm9ybUNvcmVJbnN0YW5jZSB3aXRoIGZvcm1hdCBoZWxwZXJzKS5cbiAqIFN1YnNjcmliZXMgb25seSB0byB0aGUgc3RhYmxlIHNsaWNlIOKAlCBkb2VzIE5PVCByZS1yZW5kZXIgcGVyIGtleXN0cm9rZS5cbiAqIFBhc3MgYSBgVmFsdWVzYCB0eXBlIGFyZ3VtZW50IHRvIGdldCBhIHR5cGVkIGluc3RhbmNlLlxuICovXG5leHBvcnQgY29uc3QgdXNlRm9ybUluc3RhbmNlID0gKCkgPT4ge1xuICAgIHJldHVybiB1c2VQcm9Gb3JtU3RhYmxlKCkuZm9ybUluc3RhbmNlO1xufTtcbi8qKlxuICogV2F0Y2ggYSBzaW5nbGUgZmllbGQgb3IgdGhlIHdob2xlIHZhbHVlcyBvYmplY3QuIFJlLXJlbmRlcnMgd2hlbmV2ZXIgdGhlXG4gKiBXQVRDSEVEIHZhbHVlIGNoYW5nZXMgKHVucmVsYXRlZCBmaWVsZHMgbm8gbG9uZ2VyIGNhdXNlIHJlLXJlbmRlcnMpLlxuICogTGlnaHRlciBhbHRlcm5hdGl2ZSB0byB0aGUgYFByb0Zvcm0uRGVwZW5kZW5jeWAgcmVuZGVyLXByb3AuXG4gKi9cbmV4cG9ydCBjb25zdCB1c2VGb3JtV2F0Y2ggPSAoKG5hbWUpID0+IHtcbiAgICBjb25zdCBzdG9yZSA9IHVzZVByb0Zvcm1TdG9yZSgpO1xuICAgIHJldHVybiB1c2VTdG9yZVNlbGVjdG9yKHN0b3JlLCAoc3RhdGUpID0+IG5hbWUgPT09IHVuZGVmaW5lZCA/IHN0YXRlLnZhbHVlcyA6IHJlc29sdmVWYWx1ZShzdGF0ZS52YWx1ZXMsIG5hbWUpKTtcbn0pO1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBGb3JtTGlzdENvbnRleHQg4oCUIHByb3ZpZGVzIGxpc3Qgc2NvcGUgaW5mbyB0byBQcm9Gb3JtRGVwZW5kZW5jeVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5leHBvcnQgY29uc3QgRm9ybUxpc3RDb250ZXh0ID0gY3JlYXRlQ29udGV4dCh7fSk7XG5Gb3JtTGlzdENvbnRleHQuZGlzcGxheU5hbWUgPSAnRm9ybUxpc3RDb250ZXh0JztcbmV4cG9ydCBjb25zdCB1c2VGb3JtTGlzdENvbnRleHQgPSAoKSA9PiB1c2VDb250ZXh0KEZvcm1MaXN0Q29udGV4dCk7Il0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
@@ -1,5 +1,5 @@
1
1
  import type { TypographyBodySize, TypographyColor, TypographyLabelSize } from "../../Typography";
2
- export declare const FORM_SIZES: readonly ["large", "middle", "small"];
2
+ export declare const FORM_SIZES: readonly ["large", "small"];
3
3
  export declare const FORM_LAYOUTS: readonly ["vertical"];
4
4
  export declare const LABEL_ALIGNS: readonly ["left", "right"];
5
5
  export declare const VALIDATE_STATUSES: readonly ["success", "warning", "error", "validating"];
@@ -9,7 +9,7 @@ export type FormLayout = (typeof FORM_LAYOUTS)[number];
9
9
  export type LabelAlign = (typeof LABEL_ALIGNS)[number];
10
10
  export type ValidateStatus = (typeof VALIDATE_STATUSES)[number];
11
11
  export type ValidateTrigger = (typeof VALIDATE_TRIGGERS)[number];
12
- export declare const FORM_LABEL_SIZE: TypographyLabelSize;
12
+ export declare const FORM_LABEL_SIZES: Record<FormSize, TypographyLabelSize>;
13
13
  export declare const FORM_LABEL_COLOR: TypographyColor;
14
14
  export declare const FORM_ERROR_SIZE: TypographyBodySize;
15
15
  export declare const FORM_ERROR_COLOR: TypographyColor;
@@ -20,6 +20,14 @@ export declare const FORM_DESCRIPTION_COLOR: TypographyColor;
20
20
  export declare const FORM_FEEDBACK_SIZE: TypographyBodySize;
21
21
  export declare const FORM_FEEDBACK_COLOR: TypographyColor;
22
22
  export declare const FORM_COMPONENT_NAMES: readonly ["Input", "InputNumber", "InputPassword", "InputTextArea", "InputSearch", "InputOTP", "InputTrade", "InputAmount", "InputMask", "Select", "BaseSelect", "DatePicker", "TimePicker", "Calendar", "Checkbox", "CheckboxGroup", "Radio", "RadioGroup", "Switch", "Slider", "TextArea"];
23
+ /**
24
+ * Form controls that declare a `size` prop accepting `'large' | 'small'`.
25
+ * `injectField` cascades the form-level `size` into these as a DEFAULT — an
26
+ * explicit field-level `size` (own prop or via `fieldProps`) wins. Controls
27
+ * without a size prop (Checkbox, Switch, Slider, …) must stay off this list:
28
+ * an unknown `size` prop could leak onto the DOM element.
29
+ */
30
+ export declare const SIZE_AWARE_COMPONENT_NAMES: readonly string[];
23
31
  /**
24
32
  * Text-like form controls whose empty value must default to '' (a controlled
25
33
  * string input) rather than undefined. Used by `injectField` to pick a safe