@1money/component-ui 0.0.73 → 0.0.75

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 (91) hide show
  1. package/es/components/Dialog/Dialog.js +7 -39
  2. package/es/components/Dialog/constants.d.ts +0 -3
  3. package/es/components/Dialog/constants.js +1 -4
  4. package/es/components/Dialog/style/Dialog.css +0 -21
  5. package/es/components/ProForm/ProForm.js +201 -48
  6. package/es/components/ProForm/ProFormDependency.d.ts +11 -2
  7. package/es/components/ProForm/ProFormDependency.js +29 -136
  8. package/es/components/ProForm/ProFormItem.js +81 -24
  9. package/es/components/ProForm/ProFormList.js +114 -62
  10. package/es/components/ProForm/Submitter.js +15 -4
  11. package/es/components/ProForm/context.d.ts +11 -3
  12. package/es/components/ProForm/context.js +32 -12
  13. package/es/components/ProForm/core/constants.d.ts +10 -2
  14. package/es/components/ProForm/core/constants.js +17 -3
  15. package/es/components/ProForm/core/formStore.d.ts +24 -0
  16. package/es/components/ProForm/core/formStore.js +101 -0
  17. package/es/components/ProForm/core/hooks/useForm.d.ts +4 -1
  18. package/es/components/ProForm/core/hooks/useForm.js +220 -120
  19. package/es/components/ProForm/core/hooks/useFormCore.d.ts +5 -1
  20. package/es/components/ProForm/core/hooks/useFormCore.js +114 -90
  21. package/es/components/ProForm/core/runRules.d.ts +5 -3
  22. package/es/components/ProForm/core/runRules.js +13 -5
  23. package/es/components/ProForm/core/useFormItem.d.ts +2 -2
  24. package/es/components/ProForm/core/useFormItem.js +46 -23
  25. package/es/components/ProForm/fields/ProFormFieldSet.js +20 -7
  26. package/es/components/ProForm/fields/createProFormField.js +14 -4
  27. package/es/components/ProForm/hooks/useFieldRequest.d.ts +6 -1
  28. package/es/components/ProForm/hooks/useFieldRequest.js +54 -9
  29. package/es/components/ProForm/hooks/useUrlSync.d.ts +16 -0
  30. package/es/components/ProForm/hooks/useUrlSync.js +170 -0
  31. package/es/components/ProForm/index.d.ts +2 -2
  32. package/es/components/ProForm/index.js +1 -1
  33. package/es/components/ProForm/interface.d.ts +105 -23
  34. package/es/components/ProForm/layouts/DialogForm.js +17 -7
  35. package/es/components/ProForm/layouts/DrawerForm.js +16 -7
  36. package/es/components/ProForm/layouts/QueryFilter.js +46 -135
  37. package/es/components/ProForm/layouts/useOverlayForm.d.ts +2 -2
  38. package/es/components/ProForm/layouts/useOverlayForm.js +27 -8
  39. package/es/components/ProForm/style/ProForm.css +0 -7
  40. package/es/components/ProForm/utils.js +32 -8
  41. package/es/components/ProTable/ProTable.js +3 -3
  42. package/es/index.css +1 -1
  43. package/es/index.d.ts +1 -1
  44. package/es/index.js +1 -1
  45. package/lib/components/Dialog/Dialog.js +6 -38
  46. package/lib/components/Dialog/constants.d.ts +0 -3
  47. package/lib/components/Dialog/constants.js +1 -4
  48. package/lib/components/Dialog/style/Dialog.css +0 -21
  49. package/lib/components/ProForm/ProForm.js +201 -48
  50. package/lib/components/ProForm/ProFormDependency.d.ts +11 -2
  51. package/lib/components/ProForm/ProFormDependency.js +30 -138
  52. package/lib/components/ProForm/ProFormItem.js +78 -21
  53. package/lib/components/ProForm/ProFormList.js +112 -60
  54. package/lib/components/ProForm/Submitter.js +15 -4
  55. package/lib/components/ProForm/context.d.ts +11 -3
  56. package/lib/components/ProForm/context.js +33 -13
  57. package/lib/components/ProForm/core/constants.d.ts +10 -2
  58. package/lib/components/ProForm/core/constants.js +18 -4
  59. package/lib/components/ProForm/core/formStore.d.ts +24 -0
  60. package/lib/components/ProForm/core/formStore.js +110 -0
  61. package/lib/components/ProForm/core/hooks/useForm.d.ts +4 -1
  62. package/lib/components/ProForm/core/hooks/useForm.js +220 -120
  63. package/lib/components/ProForm/core/hooks/useFormCore.d.ts +5 -1
  64. package/lib/components/ProForm/core/hooks/useFormCore.js +113 -89
  65. package/lib/components/ProForm/core/runRules.d.ts +5 -3
  66. package/lib/components/ProForm/core/runRules.js +13 -5
  67. package/lib/components/ProForm/core/useFormItem.d.ts +2 -2
  68. package/lib/components/ProForm/core/useFormItem.js +44 -21
  69. package/lib/components/ProForm/fields/ProFormFieldSet.js +19 -6
  70. package/lib/components/ProForm/fields/createProFormField.js +14 -4
  71. package/lib/components/ProForm/hooks/useFieldRequest.d.ts +6 -1
  72. package/lib/components/ProForm/hooks/useFieldRequest.js +53 -8
  73. package/lib/components/ProForm/hooks/useUrlSync.d.ts +16 -0
  74. package/lib/components/ProForm/hooks/useUrlSync.js +178 -0
  75. package/lib/components/ProForm/index.d.ts +2 -2
  76. package/lib/components/ProForm/index.js +1 -1
  77. package/lib/components/ProForm/interface.d.ts +105 -23
  78. package/lib/components/ProForm/layouts/DialogForm.js +17 -7
  79. package/lib/components/ProForm/layouts/DrawerForm.js +16 -7
  80. package/lib/components/ProForm/layouts/QueryFilter.js +45 -134
  81. package/lib/components/ProForm/layouts/useOverlayForm.d.ts +2 -2
  82. package/lib/components/ProForm/layouts/useOverlayForm.js +30 -8
  83. package/lib/components/ProForm/style/ProForm.css +0 -7
  84. package/lib/components/ProForm/utils.js +32 -8
  85. package/lib/components/ProTable/ProTable.js +3 -3
  86. package/lib/index.css +1 -1
  87. package/lib/index.d.ts +1 -1
  88. package/lib/index.js +1 -1
  89. package/package.json +1 -1
  90. package/scripts/mcp-server/examples.generated.json +36 -0
  91. package/scripts/mcp-server/index.generated.json +538 -16
@@ -1,3 +1,7 @@
1
+ import type { FormStore } from '../formStore';
1
2
  import type { UseFormCoreConfig, UseFormCoreReturn } from '../interface';
2
- export declare const useFormCore: (config?: UseFormCoreConfig) => UseFormCoreReturn;
3
+ export declare const useFormCore: (config?: UseFormCoreConfig) => UseFormCoreReturn & {
4
+ store: FormStore;
5
+ getInitialValues: () => Record<string, unknown>;
6
+ };
3
7
  export default useFormCore;
@@ -1,10 +1,10 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
- import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
3
- import { useState, useMemo, useRef } from 'react';
2
+ import { useMemo, useRef } from 'react';
4
3
  import useEventCallback from '@1money/hooks/useEventCallback';
5
4
  import useMemoizedFn from '@1money/hooks/useMemoizedFn';
6
5
  import { resolveValue, setNestedValue } from '../pathUtils';
7
6
  import { runRulesSync } from '../runRules';
7
+ import { createFormStore } from '../formStore';
8
8
  export var useFormCore = function useFormCore() {
9
9
  var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
10
10
  var _config$initialValues = config.initialValues,
@@ -14,7 +14,7 @@ export var useFormCore = function useFormCore() {
14
14
  onValuesChange = config.onValuesChange,
15
15
  onReset = config.onReset,
16
16
  _config$size = config.size,
17
- size = _config$size === void 0 ? 'middle' : _config$size,
17
+ size = _config$size === void 0 ? 'large' : _config$size,
18
18
  _config$labelAlign = config.labelAlign,
19
19
  labelAlign = _config$labelAlign === void 0 ? 'left' : _config$labelAlign,
20
20
  _config$disabled = config.disabled,
@@ -25,70 +25,80 @@ export var useFormCore = function useFormCore() {
25
25
  requiredMark = _config$requiredMark === void 0 ? true : _config$requiredMark,
26
26
  _config$validateTrigg = config.validateTrigger,
27
27
  validateTrigger = _config$validateTrigg === void 0 ? 'onChange' : _config$validateTrigg;
28
- var _useState = useState(initialValues),
29
- _useState2 = _slicedToArray(_useState, 2),
30
- values = _useState2[0],
31
- setValues = _useState2[1];
32
- var _useState3 = useState({}),
33
- _useState4 = _slicedToArray(_useState3, 2),
34
- errors = _useState4[0],
35
- setErrors = _useState4[1];
36
- var _useState5 = useState({}),
37
- _useState6 = _slicedToArray(_useState5, 2),
38
- warnings = _useState6[0],
39
- setWarnings = _useState6[1];
40
- var _useState7 = useState({}),
41
- _useState8 = _slicedToArray(_useState7, 2),
42
- touched = _useState8[0],
43
- setTouched = _useState8[1];
28
+ // initialValues is MOUNT-ONLY (the documented contract): freeze the first
29
+ // render's value so resetFields always restores the mount-time defaults,
30
+ // even when the consumer re-renders with a different (e.g. controlled)
31
+ // initialValues object.
32
+ var initialValuesRef = useRef(null);
33
+ if (initialValuesRef.current === null) {
34
+ initialValuesRef.current = initialValues;
35
+ }
36
+ var mountInitialValues = initialValuesRef.current;
37
+ // All volatile form state lives in an external store, NOT React state — a
38
+ // keystroke must never re-render the component that owns the form. Fields
39
+ // and watchers subscribe with per-field selectors (useStoreSelector); every
40
+ // mutator below reads the LATEST state via store.getState(), which also
41
+ // keeps multiple writes in the same tick visible to each other.
42
+ var storeRef = useRef(null);
43
+ if (storeRef.current === null) {
44
+ storeRef.current = createFormStore(mountInitialValues);
45
+ }
46
+ var store = storeRef.current;
44
47
  // Live rule registry — ONE stable object mutated in place. Registration must
45
48
  // not trigger renders, and submit-time validation must always read the latest
46
49
  // rules (they can change between renders, e.g. a conditional `required`).
47
50
  var fieldRulesRef = useRef({});
48
- // Imperative mirror of `values`. Computing the next values OUTSIDE the
49
- // setState updater keeps the updater pure (StrictMode replays updaters,
50
- // which double-fired onValuesChange) and lets multiple set calls in the
51
- // same tick see each other's writes.
52
- var valuesRef = useRef(values);
53
51
  var commitValues = useMemoizedFn(function (newValues) {
54
- valuesRef.current = newValues;
55
- setValues(newValues);
52
+ store.setState({
53
+ values: newValues
54
+ });
56
55
  });
57
56
  var setFieldValue = useMemoizedFn(function (name, value) {
58
- var prev = valuesRef.current;
57
+ var prev = store.getState().values;
59
58
  var newValues = name.includes('.') ? setNestedValue(prev, name, value) : Object.assign(Object.assign({}, prev), _defineProperty({}, name, value));
60
59
  commitValues(newValues);
61
60
  onValuesChange === null || onValuesChange === void 0 ? void 0 : onValuesChange(_defineProperty({}, name, value), newValues);
62
61
  if (value !== '' && value !== null && value !== undefined) {
63
- setErrors(function (prev) {
64
- if (!prev[name]) return prev;
65
- var newErrors = Object.assign({}, prev);
62
+ var errors = store.getState().errors;
63
+ if (errors[name]) {
64
+ var newErrors = Object.assign({}, errors);
66
65
  delete newErrors[name];
67
- return newErrors;
68
- });
66
+ store.setState({
67
+ errors: newErrors
68
+ });
69
+ }
69
70
  }
70
71
  });
71
72
  var setFieldError = useMemoizedFn(function (name, error) {
72
- setErrors(function (prev) {
73
- if (error === null) {
74
- if (!prev[name]) return prev;
75
- var newErrors = Object.assign({}, prev);
76
- delete newErrors[name];
77
- return newErrors;
78
- }
79
- return Object.assign(Object.assign({}, prev), _defineProperty({}, name, error));
73
+ var errors = store.getState().errors;
74
+ if (error === null) {
75
+ if (!errors[name]) return;
76
+ var newErrors = Object.assign({}, errors);
77
+ delete newErrors[name];
78
+ store.setState({
79
+ errors: newErrors
80
+ });
81
+ return;
82
+ }
83
+ if (errors[name] === error) return;
84
+ store.setState({
85
+ errors: Object.assign(Object.assign({}, errors), _defineProperty({}, name, error))
80
86
  });
81
87
  });
82
88
  var setFieldWarning = useMemoizedFn(function (name, warning) {
83
- setWarnings(function (prev) {
84
- if (warning === null) {
85
- if (!prev[name]) return prev;
86
- var newWarnings = Object.assign({}, prev);
87
- delete newWarnings[name];
88
- return newWarnings;
89
- }
90
- if (prev[name] === warning) return prev;
91
- return Object.assign(Object.assign({}, prev), _defineProperty({}, name, warning));
89
+ var warnings = store.getState().warnings;
90
+ if (warning === null) {
91
+ if (!warnings[name]) return;
92
+ var newWarnings = Object.assign({}, warnings);
93
+ delete newWarnings[name];
94
+ store.setState({
95
+ warnings: newWarnings
96
+ });
97
+ return;
98
+ }
99
+ if (warnings[name] === warning) return;
100
+ store.setState({
101
+ warnings: Object.assign(Object.assign({}, warnings), _defineProperty({}, name, warning))
92
102
  });
93
103
  });
94
104
  var registerField = useMemoizedFn(function (name, rules) {
@@ -103,8 +113,9 @@ export var useFormCore = function useFormCore() {
103
113
  var validateField = useMemoizedFn(function (name) {
104
114
  var rules = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
105
115
  var providedValue = arguments.length > 2 ? arguments[2] : undefined;
106
- var value = providedValue !== undefined ? providedValue : resolveValue(valuesRef.current, name);
107
- var _runRulesSync = runRulesSync(name, value, valuesRef.current, rules),
116
+ var currentValues = store.getState().values;
117
+ var value = providedValue !== undefined ? providedValue : resolveValue(currentValues, name);
118
+ var _runRulesSync = runRulesSync(name, value, currentValues, rules),
108
119
  error = _runRulesSync.error,
109
120
  warning = _runRulesSync.warning;
110
121
  setFieldWarning(name, warning);
@@ -112,7 +123,7 @@ export var useFormCore = function useFormCore() {
112
123
  setFieldError(name, error);
113
124
  return false;
114
125
  }
115
- if (errors[name]) {
126
+ if (store.getState().errors[name]) {
116
127
  setFieldError(name, null);
117
128
  }
118
129
  return true;
@@ -129,7 +140,7 @@ export var useFormCore = function useFormCore() {
129
140
  return isValid;
130
141
  });
131
142
  var handleSubmitInternal = useMemoizedFn(function () {
132
- var currentValues = valuesRef.current;
143
+ var currentValues = store.getState().values;
133
144
  var currentRules = fieldRulesRef.current;
134
145
  var hasErrors = false;
135
146
  var newErrors = {};
@@ -147,8 +158,10 @@ export var useFormCore = function useFormCore() {
147
158
  newWarnings[fieldName] = warning;
148
159
  }
149
160
  });
150
- setErrors(newErrors);
151
- setWarnings(newWarnings);
161
+ store.setState({
162
+ errors: newErrors,
163
+ warnings: newWarnings
164
+ });
152
165
  if (!hasErrors) {
153
166
  onFinish === null || onFinish === void 0 ? void 0 : onFinish(currentValues);
154
167
  return {
@@ -170,25 +183,31 @@ export var useFormCore = function useFormCore() {
170
183
  e === null || e === void 0 ? void 0 : e.preventDefault();
171
184
  return handleSubmitInternal();
172
185
  });
186
+ // Pure state API: the imperative resetFields()
187
+ // never fires onReset. The callback belongs to the reset ACTION layer
188
+ // (submitter button / native reset event), which fires it exactly once.
173
189
  var resetFields = useMemoizedFn(function () {
174
- commitValues(initialValues);
175
- setErrors({});
176
- setWarnings({});
177
- setTouched({});
178
- onReset === null || onReset === void 0 ? void 0 : onReset();
190
+ store.setState({
191
+ values: mountInitialValues,
192
+ errors: {},
193
+ warnings: {},
194
+ touched: {},
195
+ validating: {}
196
+ });
179
197
  });
180
198
  var handleReset = useEventCallback(function (e) {
181
199
  e === null || e === void 0 ? void 0 : e.preventDefault();
182
200
  resetFields();
201
+ onReset === null || onReset === void 0 ? void 0 : onReset();
183
202
  });
184
203
  var getFieldValue = useMemoizedFn(function (name) {
185
- return resolveValue(valuesRef.current, name);
204
+ return resolveValue(store.getState().values, name);
186
205
  });
187
206
  var getFieldsValue = useMemoizedFn(function () {
188
- return valuesRef.current;
207
+ return store.getState().values;
189
208
  });
190
209
  var setFieldsValue = useMemoizedFn(function (newValues) {
191
- var updatedValues = Object.assign(Object.assign({}, valuesRef.current), newValues);
210
+ var updatedValues = Object.assign(Object.assign({}, store.getState().values), newValues);
192
211
  commitValues(updatedValues);
193
212
  onValuesChange === null || onValuesChange === void 0 ? void 0 : onValuesChange(newValues, updatedValues);
194
213
  });
@@ -203,32 +222,33 @@ export var useFormCore = function useFormCore() {
203
222
  validateFields: validateFields
204
223
  };
205
224
  }, [handleSubmitInternal, resetFields, getFieldValue, getFieldsValue, setFieldsValue, setFieldValue, validateFields]);
206
- var coreContextShape = useMemo(function () {
207
- return {
208
- values: values,
209
- errors: errors,
210
- warnings: warnings,
211
- touched: touched,
212
- formInstance: formInstance,
213
- setFieldValue: setFieldValue,
214
- setFieldError: setFieldError,
215
- setFieldWarning: setFieldWarning,
216
- validateField: validateField,
217
- registerField: registerField,
218
- unregisterField: unregisterField,
219
- size: size,
220
- labelAlign: labelAlign,
221
- disabled: disabled,
222
- colon: colon,
223
- requiredMark: requiredMark,
224
- validateTrigger: validateTrigger
225
- };
226
- }, [values, errors, warnings, touched, formInstance, setFieldValue, setFieldError, setFieldWarning, validateField, registerField, unregisterField, size, labelAlign, disabled, colon, requiredMark, validateTrigger]);
225
+ // Render-time snapshot kept for the UseFormCoreReturn contract. Reactive
226
+ // consumers must go through the store, never through these fields.
227
+ var state = store.getState();
228
+ var coreContextShape = {
229
+ values: state.values,
230
+ errors: state.errors,
231
+ warnings: state.warnings,
232
+ touched: state.touched,
233
+ formInstance: formInstance,
234
+ setFieldValue: setFieldValue,
235
+ setFieldError: setFieldError,
236
+ setFieldWarning: setFieldWarning,
237
+ validateField: validateField,
238
+ registerField: registerField,
239
+ unregisterField: unregisterField,
240
+ size: size,
241
+ labelAlign: labelAlign,
242
+ disabled: disabled,
243
+ colon: colon,
244
+ requiredMark: requiredMark,
245
+ validateTrigger: validateTrigger
246
+ };
227
247
  return {
228
- values: values,
229
- errors: errors,
230
- warnings: warnings,
231
- touched: touched,
248
+ values: state.values,
249
+ errors: state.errors,
250
+ warnings: state.warnings,
251
+ touched: state.touched,
232
252
  // Live registry — stable identity, mutated in place by register/unregister.
233
253
  fieldRules: fieldRulesRef.current,
234
254
  getFieldRules: getFieldRules,
@@ -246,8 +266,12 @@ export var useFormCore = function useFormCore() {
246
266
  handleReset: handleReset,
247
267
  resetFields: resetFields,
248
268
  formInstance: formInstance,
249
- coreContextShape: coreContextShape
269
+ coreContextShape: coreContextShape,
270
+ store: store,
271
+ getInitialValues: function getInitialValues() {
272
+ return mountInitialValues;
273
+ }
250
274
  };
251
275
  };
252
276
  export default useFormCore;
253
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9jb3JlL3NyYy9jb21wb25lbnRzL1Byb0Zvcm0vY29yZS9ob29rcy91c2VGb3JtQ29yZS50cyIsImNvbXBvbmVudHMvUHJvRm9ybS9jb3JlL2hvb2tzL3VzZUZvcm1Db3JlLmpzIl0sIm5hbWVzIjpbInVzZVN0YXRlIiwidXNlTWVtbyIsInVzZVJlZiIsInVzZUV2ZW50Q2FsbGJhY2siLCJ1c2VNZW1vaXplZEZuIiwicmVzb2x2ZVZhbHVlIiwic2V0TmVzdGVkVmFsdWUiLCJydW5SdWxlc1N5bmMiLCJ1c2VGb3JtQ29yZSIsImNvbmZpZyIsImFyZ3VtZW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsIl9jb25maWckaW5pdGlhbFZhbHVlcyIsImluaXRpYWxWYWx1ZXMiLCJvbkZpbmlzaCIsIm9uRmluaXNoRmFpbGVkIiwib25WYWx1ZXNDaGFuZ2UiLCJvblJlc2V0IiwiX2NvbmZpZyRzaXplIiwic2l6ZSIsIl9jb25maWckbGFiZWxBbGlnbiIsImxhYmVsQWxpZ24iLCJfY29uZmlnJGRpc2FibGVkIiwiZGlzYWJsZWQiLCJfY29uZmlnJGNvbG9uIiwiY29sb24iLCJfY29uZmlnJHJlcXVpcmVkTWFyayIsInJlcXVpcmVkTWFyayIsIl9jb25maWckdmFsaWRhdGVUcmlnZyIsInZhbGlkYXRlVHJpZ2dlciIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsInZhbHVlcyIsInNldFZhbHVlcyIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiZXJyb3JzIiwic2V0RXJyb3JzIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJ3YXJuaW5ncyIsInNldFdhcm5pbmdzIiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJ0b3VjaGVkIiwic2V0VG91Y2hlZCIsImZpZWxkUnVsZXNSZWYiLCJ2YWx1ZXNSZWYiLCJjb21taXRWYWx1ZXMiLCJuZXdWYWx1ZXMiLCJjdXJyZW50Iiwic2V0RmllbGRWYWx1ZSIsIm5hbWUiLCJ2YWx1ZSIsInByZXYiLCJpbmNsdWRlcyIsIk9iamVjdCIsImFzc2lnbiIsIl9kZWZpbmVQcm9wZXJ0eSIsIm5ld0Vycm9ycyIsInNldEZpZWxkRXJyb3IiLCJlcnJvciIsInNldEZpZWxkV2FybmluZyIsIndhcm5pbmciLCJuZXdXYXJuaW5ncyIsInJlZ2lzdGVyRmllbGQiLCJydWxlcyIsImdldEZpZWxkUnVsZXMiLCJ1bnJlZ2lzdGVyRmllbGQiLCJ2YWxpZGF0ZUZpZWxkIiwicHJvdmlkZWRWYWx1ZSIsIl9ydW5SdWxlc1N5bmMiLCJ2YWxpZGF0ZUZpZWxkcyIsImZpZWxkc1J1bGVzVG9WYWxpZGF0ZSIsImlzVmFsaWQiLCJrZXlzIiwiZm9yRWFjaCIsImhhbmRsZVN1Ym1pdEludGVybmFsIiwiY3VycmVudFZhbHVlcyIsImN1cnJlbnRSdWxlcyIsImhhc0Vycm9ycyIsImZpZWxkTmFtZSIsIl9ydW5SdWxlc1N5bmMyIiwic3VjY2VzcyIsImhhbmRsZVN1Ym1pdCIsImUiLCJwcmV2ZW50RGVmYXVsdCIsInJlc2V0RmllbGRzIiwiaGFuZGxlUmVzZXQiLCJnZXRGaWVsZFZhbHVlIiwiZ2V0RmllbGRzVmFsdWUiLCJzZXRGaWVsZHNWYWx1ZSIsInVwZGF0ZWRWYWx1ZXMiLCJmb3JtSW5zdGFuY2UiLCJzdWJtaXQiLCJjb3JlQ29udGV4dFNoYXBlIiwiZmllbGRSdWxlcyJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxTQUFTQSxRQUFRLEVBQUVDLE9BQU8sRUFBRUMsTUFBTSxRQUFRLE9BQU87QUFFakQsT0FBT0MsZ0JBQWdCLE1BQU0sZ0NBQWdDO0FBQzdELE9BQU9DLGFBQWEsTUFBTSw2QkFBNkI7QUFDdkQsU0FBU0MsWUFBWSxFQUFFQyxjQUFjLFFBQVEsY0FBYztBQUMzRCxTQUFTQyxZQUFZLFFBQVEsYUFBYTtBQVExQyxPQUFPLElBQU1DLFdBQVcsR0FBRyxTQUFkQSxXQUFXQSxDQUFBLEVBQXlEO0VBQUEsSUFBckRDLE1BQUEsR0FBQUMsU0FBQSxDQUFBQyxNQUFBLFFBQUFELFNBQUEs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QUNoQixDQUNGO0VBRUQsT0FBTztJQUNMSSxNQUFNLEVBQU5BLE1BQU07SUFDTkksTUFBTSxFQUFOQSxNQUFNO0lBQ05JLFFBQVEsRUFBUkEsUUFBUTtJQUNSSSxPQUFPLEVBQVBBLE9BQU87SUFDUDtJQUNBb0QsVUFBVSxFQUFFbEQsYUFBYSxDQUFDSSxPQUFPO0lBQ2pDaUIsYUFBYSxFQUFiQSxhQUFhO0lBQ2JoQixhQUFhLEVBQWJBLGFBQWE7SUFDYlMsYUFBYSxFQUFiQSxhQUFhO0lBQ2JFLGVBQWUsRUFBZkEsZUFBZTtJQUNmNkIsY0FBYyxFQUFkQSxjQUFjO0lBQ2RGLGFBQWEsRUFBYkEsYUFBYTtJQUNiQyxjQUFjLEVBQWRBLGNBQWM7SUFDZHJCLGFBQWEsRUFBYkEsYUFBYTtJQUNiRyxjQUFjLEVBQWRBLGNBQWM7SUFDZFAsYUFBYSxFQUFiQSxhQUFhO0lBQ2JHLGVBQWUsRUFBZkEsZUFBZTtJQUNmZ0IsWUFBWSxFQUFaQSxZQUFZO0lBQ1pJLFdBQVcsRUFBWEEsV0FBVztJQUNYRCxXQUFXLEVBQVhBLFdBQVc7SUFDWE0sWUFBWSxFQUFaQSxZQUFZO0lBQ1pFLGdCQUFnQixFQUFoQkE7RUN2REEsQ0R3REQ7QUFDSCxDQUFDO0FBRUQsZUFBZXpGLFdBQVciLCJmaWxlIjoiY29tcG9uZW50cy9Qcm9Gb3JtL2NvcmUvaG9va3MvdXNlRm9ybUNvcmUuanMiLCJzb3VyY2VzQ29udGVudCI6W251bGwsImltcG9ydCB7IHVzZVN0YXRlLCB1c2VNZW1vLCB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdXNlRXZlbnRDYWxsYmFjayBmcm9tICdAMW1vbmV5L2hvb2tzL3VzZUV2ZW50Q2FsbGJhY2snO1xuaW1wb3J0IHVzZU1lbW9pemVkRm4gZnJvbSAnQDFtb25leS9ob29rcy91c2VNZW1vaXplZEZuJztcbmltcG9ydCB7IHJlc29sdmVWYWx1ZSwgc2V0TmVzdGVkVmFsdWUgfSBmcm9tICcuLi9wYXRoVXRpbHMnO1xuaW1wb3J0IHsgcnVuUnVsZXNTeW5jIH0gZnJvbSAnLi4vcnVuUnVsZXMnO1xuZXhwb3J0IGNvbnN0IHVzZUZvcm1Db3JlID0gKGNvbmZpZyA9IHt9KSA9PiB7XG4gICAgY29uc3QgeyBpbml0aWFsVmFsdWVzID0ge30sIG9uRmluaXNoLCBvbkZpbmlzaEZhaWxlZCwgb25WYWx1ZXNDaGFuZ2UsIG9uUmVzZXQsIHNpemUgPSAnbWlkZGxlJywgbGFiZWxBbGlnbiA9ICdsZWZ0JywgZGlzYWJsZWQgPSBmYWxzZSwgY29sb24gPSB0cnVlLCByZXF1aXJlZE1hcmsgPSB0cnVlLCB2YWxpZGF0ZVRyaWdnZXIgPSAnb25DaGFuZ2UnLCB9ID0gY29uZmlnO1xuICAgIGNvbnN0IFt2YWx1ZXMsIHNldFZhbHVlc10gPSB1c2VTdGF0ZShpbml0aWFsVmFsdWVzKTtcbiAgICBjb25zdCBbZXJyb3JzLCBzZXRFcnJvcnNdID0gdXNlU3RhdGUoe30pO1xuICAgIGNvbnN0IFt3YXJuaW5ncywgc2V0V2FybmluZ3NdID0gdXNlU3RhdGUoe30pO1xuICAgIGNvbnN0IFt0b3VjaGVkLCBzZXRUb3VjaGVkXSA9IHVzZVN0YXRlKHt9KTtcbiAgICAvLyBMaXZlIHJ1bGUgcmVnaXN0cnkg4oCUIE9ORSBzdGFibGUgb2JqZWN0IG11dGF0ZWQgaW4gcGxhY2UuIFJlZ2lzdHJhdGlvbiBtdXN0XG4gICAgLy8gbm90IHRyaWdnZXIgcmVuZGVycywgYW5kIHN1Ym1pdC10aW1lIHZhbGlkYXRpb24gbXVzdCBhbHdheXMgcmVhZCB0aGUgbGF0ZXN0XG4gICAgLy8gcnVsZXMgKHRoZXkgY2FuIGNoYW5nZSBiZXR3ZWVuIHJlbmRlcnMsIGUuZy4gYSBjb25kaXRpb25hbCBgcmVxdWlyZWRgKS5cbiAgICBjb25zdCBmaWVsZFJ1bGVzUmVmID0gdXNlUmVmKHt9KTtcbiAgICAvLyBJbXBlcmF0aXZlIG1pcnJvciBvZiBgdmFsdWVzYC4gQ29tcHV0aW5nIHRoZSBuZXh0IHZhbHVlcyBPVVRTSURFIHRoZVxuICAgIC8vIHNldFN0YXRlIHVwZGF0ZXIga2VlcHMgdGhlIHVwZGF0ZXIgcHVyZSAoU3RyaWN0TW9kZSByZXBsYXlzIHVwZGF0ZXJzLFxuICAgIC8vIHdoaWNoIGRvdWJsZS1maXJlZCBvblZhbHVlc0NoYW5nZSkgYW5kIGxldHMgbXVsdGlwbGUgc2V0IGNhbGxzIGluIHRoZVxuICAgIC8vIHNhbWUgdGljayBzZWUgZWFjaCBvdGhlcidzIHdyaXRlcy5cbiAgICBjb25zdCB2YWx1ZXNSZWYgPSB1c2VSZWYodmFsdWVzKTtcbiAgICBjb25zdCBjb21taXRWYWx1ZXMgPSB1c2VNZW1vaXplZEZuKChuZXdWYWx1ZXMpID0+IHtcbiAgICAgICAgdmFsdWVzUmVmLmN1cnJlbnQgPSBuZXdWYWx1ZXM7XG4gICAgICAgIHNldFZhbHVlcyhuZXdWYWx1ZXMpO1xuICAgIH0pO1xuICAgIGNvbnN0IHNldEZpZWxkVmFsdWUgPSB1c2VNZW1vaXplZEZuKChuYW1lLCB2YWx1ZSkgPT4ge1xuICAgICAgICBjb25zdCBwcmV2ID0gdmFsdWVzUmVmLmN1cnJlbnQ7XG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlcyA9IG5hbWUuaW5jbHVkZXMoJy4nKVxuICAgICAgICAgICAgPyBzZXROZXN0ZWRWYWx1ZShwcmV2LCBuYW1lLCB2YWx1ZSlcbiAgICAgICAgICAgIDogT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBwcmV2KSwgeyBbbmFtZV06IHZhbHVlIH0pO1xuICAgICAgICBjb21taXRWYWx1ZXMobmV3VmFsdWVzKTtcbiAgICAgICAgb25WYWx1ZXNDaGFuZ2UgPT09IG51bGwgfHwgb25WYWx1ZXNDaGFuZ2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uVmFsdWVzQ2hhbmdlKHsgW25hbWVdOiB2YWx1ZSB9LCBuZXdWYWx1ZXMpO1xuICAgICAgICBpZiAodmFsdWUgIT09ICcnICYmIHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHNldEVycm9ycygocHJldikgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghcHJldltuYW1lXSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByZXY7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3RXJyb3JzID0gT2JqZWN0LmFzc2lnbih7fSwgcHJldik7XG4gICAgICAgICAgICAgICAgZGVsZXRlIG5ld0Vycm9yc1tuYW1lXTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3RXJyb3JzO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBzZXRGaWVsZEVycm9yID0gdXNlTWVtb2l6ZWRGbigobmFtZSwgZXJyb3IpID0+IHtcbiAgICAgICAgc2V0RXJyb3JzKChwcmV2KSA9PiB7XG4gICAgICAgICAgICBpZiAoZXJyb3IgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXByZXZbbmFtZV0pXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwcmV2O1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0Vycm9ycyA9IE9iamVjdC5hc3NpZ24oe30sIHByZXYpO1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBuZXdFcnJvcnNbbmFtZV07XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ld0Vycm9ycztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHByZXYpLCB7IFtuYW1lXTogZXJyb3IgfSk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICAgIGNvbnN0IHNldEZpZWxkV2FybmluZyA9IHVzZU1lbW9pemVkRm4oKG5hbWUsIHdhcm5pbmcpID0+IHtcbiAgICAgICAgc2V0V2FybmluZ3MoKHByZXYpID0+IHtcbiAgICAgICAgICAgIGlmICh3YXJuaW5nID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFwcmV2W25hbWVdKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJldjtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdXYXJuaW5ncyA9IE9iamVjdC5hc3NpZ24oe30sIHByZXYpO1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBuZXdXYXJuaW5nc1tuYW1lXTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3V2FybmluZ3M7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocHJldltuYW1lXSA9PT0gd2FybmluZylcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJldjtcbiAgICAgICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHByZXYpLCB7IFtuYW1lXTogd2FybmluZyB9KTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gICAgY29uc3QgcmVnaXN0ZXJGaWVsZCA9IHVzZU1lbW9pemVkRm4oKG5hbWUsIHJ1bGVzKSA9PiB7XG4gICAgICAgIGZpZWxkUnVsZXNSZWYuY3VycmVudFtuYW1lXSA9IHJ1bGVzO1xuICAgIH0pO1xuICAgIGNvbnN0IGdldEZpZWxkUnVsZXMgPSB1c2VNZW1vaXplZEZuKChuYW1lKSA9PiB7XG4gICAgICAgIHJldHVybiBmaWVsZFJ1bGVzUmVmLmN1cnJlbnRbbmFtZV07XG4gICAgfSk7XG4gICAgY29uc3QgdW5yZWdpc3RlckZpZWxkID0gdXNlTWVtb2l6ZWRGbigobmFtZSkgPT4ge1xuICAgICAgICBkZWxldGUgZmllbGRSdWxlc1JlZi5jdXJyZW50W25hbWVdO1xuICAgIH0pO1xuICAgIGNvbnN0IHZhbGlkYXRlRmllbGQgPSB1c2VNZW1vaXplZEZuKChuYW1lLCBydWxlcyA9IFtdLCBwcm92aWRlZFZhbHVlKSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gcHJvdmlkZWRWYWx1ZSAhPT0gdW5kZWZpbmVkID8gcHJvdmlkZWRWYWx1ZSA6IHJlc29sdmVWYWx1ZSh2YWx1ZXNSZWYuY3VycmVudCwgbmFtZSk7XG4gICAgICAgIGNvbnN0IHsgZXJyb3IsIHdhcm5pbmcgfSA9IHJ1blJ1bGVzU3luYyhuYW1lLCB2YWx1ZSwgdmFsdWVzUmVmLmN1cnJlbnQsIHJ1bGVzKTtcbiAgICAgICAgc2V0RmllbGRXYXJuaW5nKG5hbWUsIHdhcm5pbmcpO1xuICAgICAgICBpZiAoZXJyb3IgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHNldEZpZWxkRXJyb3IobmFtZSwgZXJyb3IpO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlcnJvcnNbbmFtZV0pIHtcbiAgICAgICAgICAgIHNldEZpZWxkRXJyb3IobmFtZSwgbnVsbCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSk7XG4gICAgY29uc3QgdmFsaWRhdGVGaWVsZHMgPSB1c2VNZW1vaXplZEZuKChmaWVsZHNSdWxlc1RvVmFsaWRhdGUgPSBmaWVsZFJ1bGVzUmVmLmN1cnJlbnQpID0+IHtcbiAgICAgICAgbGV0IGlzVmFsaWQgPSB0cnVlO1xuICAgICAgICBPYmplY3Qua2V5cyhmaWVsZHNSdWxlc1RvVmFsaWRhdGUpLmZvckVhY2goKG5hbWUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVzID0gZmllbGRzUnVsZXNUb1ZhbGlkYXRlW25hbWVdO1xuICAgICAgICAgICAgaWYgKCF2YWxpZGF0ZUZpZWxkKG5hbWUsIHJ1bGVzKSkge1xuICAgICAgICAgICAgICAgIGlzVmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBpc1ZhbGlkO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVN1Ym1pdEludGVybmFsID0gdXNlTWVtb2l6ZWRGbigoKSA9PiB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZXMgPSB2YWx1ZXNSZWYuY3VycmVudDtcbiAgICAgICAgY29uc3QgY3VycmVudFJ1bGVzID0gZmllbGRSdWxlc1JlZi5jdXJyZW50O1xuICAgICAgICBsZXQgaGFzRXJyb3JzID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IG5ld0Vycm9ycyA9IHt9O1xuICAgICAgICBjb25zdCBuZXdXYXJuaW5ncyA9IHt9O1xuICAgICAgICBPYmplY3Qua2V5cyhjdXJyZW50UnVsZXMpLmZvckVhY2goKGZpZWxkTmFtZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSByZXNvbHZlVmFsdWUoY3VycmVudFZhbHVlcywgZmllbGROYW1lKTtcbiAgICAgICAgICAgIGNvbnN0IHsgZXJyb3IsIHdhcm5pbmcgfSA9IHJ1blJ1bGVzU3luYyhmaWVsZE5hbWUsIHZhbHVlLCBjdXJyZW50VmFsdWVzLCBjdXJyZW50UnVsZXNbZmllbGROYW1lXSk7XG4gICAgICAgICAgICBpZiAoZXJyb3IgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBuZXdFcnJvcnNbZmllbGROYW1lXSA9IGVycm9yO1xuICAgICAgICAgICAgICAgIGhhc0Vycm9ycyA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAod2FybmluZyAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIG5ld1dhcm5pbmdzW2ZpZWxkTmFtZV0gPSB3YXJuaW5nO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgc2V0RXJyb3JzKG5ld0Vycm9ycyk7XG4gICAgICAgIHNldFdhcm5pbmdzKG5ld1dhcm5pbmdzKTtcbiAgICAgICAgaWYgKCFoYXNFcnJvcnMpIHtcbiAgICAgICAgICAgIG9uRmluaXNoID09PSBudWxsIHx8IG9uRmluaXNoID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkZpbmlzaChjdXJyZW50VmFsdWVzKTtcbiAgICAgICAgICAgIHJldHVybiB7IHN1Y2Nlc3M6IHRydWUsIHZhbHVlczogY3VycmVudFZhbHVlcyB9O1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgb25GaW5pc2hGYWlsZWQgPT09IG51bGwgfHwgb25GaW5pc2hGYWlsZWQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uRmluaXNoRmFpbGVkKHsgdmFsdWVzOiBjdXJyZW50VmFsdWVzLCBlcnJvcnM6IG5ld0Vycm9ycyB9KTtcbiAgICAgICAgICAgIHJldHVybiB7IHN1Y2Nlc3M6IGZhbHNlLCBlcnJvcnM6IG5ld0Vycm9ycyB9O1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlU3VibWl0ID0gdXNlRXZlbnRDYWxsYmFjaygoZSkgPT4ge1xuICAgICAgICBlID09PSBudWxsIHx8IGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgcmV0dXJuIGhhbmRsZVN1Ym1pdEludGVybmFsKCk7XG4gICAgfSk7XG4gICAgY29uc3QgcmVzZXRGaWVsZHMgPSB1c2VNZW1vaXplZEZuKCgpID0+IHtcbiAgICAgICAgY29tbWl0VmFsdWVzKGluaXRpYWxWYWx1ZXMpO1xuICAgICAgICBzZXRFcnJvcnMoe30pO1xuICAgICAgICBzZXRXYXJuaW5ncyh7fSk7XG4gICAgICAgIHNldFRvdWNoZWQoe30pO1xuICAgICAgICBvblJlc2V0ID09PSBudWxsIHx8IG9uUmVzZXQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uUmVzZXQoKTtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVSZXNldCA9IHVzZUV2ZW50Q2FsbGJhY2soKGUpID0+IHtcbiAgICAgICAgZSA9PT0gbnVsbCB8fCBlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHJlc2V0RmllbGRzKCk7XG4gICAgfSk7XG4gICAgY29uc3QgZ2V0RmllbGRWYWx1ZSA9IHVzZU1lbW9pemVkRm4oKG5hbWUpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc29sdmVWYWx1ZSh2YWx1ZXNSZWYuY3VycmVudCwgbmFtZSk7XG4gICAgfSk7XG4gICAgY29uc3QgZ2V0RmllbGRzVmFsdWUgPSB1c2VNZW1vaXplZEZuKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHZhbHVlc1JlZi5jdXJyZW50O1xuICAgIH0pO1xuICAgIGNvbnN0IHNldEZpZWxkc1ZhbHVlID0gdXNlTWVtb2l6ZWRGbigobmV3VmFsdWVzKSA9PiB7XG4gICAgICAgIGNvbnN0IHVwZGF0ZWRWYWx1ZXMgPSBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHZhbHVlc1JlZi5jdXJyZW50KSwgbmV3VmFsdWVzKTtcbiAgICAgICAgY29tbWl0VmFsdWVzKHVwZGF0ZWRWYWx1ZXMpO1xuICAgICAgICBvblZhbHVlc0NoYW5nZSA9PT0gbnVsbCB8fCBvblZhbHVlc0NoYW5nZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25WYWx1ZXNDaGFuZ2UobmV3VmFsdWVzLCB1cGRhdGVkVmFsdWVzKTtcbiAgICB9KTtcbiAgICBjb25zdCBmb3JtSW5zdGFuY2UgPSB1c2VNZW1vKCgpID0+ICh7XG4gICAgICAgIHN1Ym1pdDogaGFuZGxlU3VibWl0SW50ZXJuYWwsXG4gICAgICAgIHJlc2V0RmllbGRzLFxuICAgICAgICBnZXRGaWVsZFZhbHVlLFxuICAgICAgICBnZXRGaWVsZHNWYWx1ZSxcbiAgICAgICAgc2V0RmllbGRzVmFsdWUsXG4gICAgICAgIHNldEZpZWxkVmFsdWUsXG4gICAgICAgIHZhbGlkYXRlRmllbGRzLFxuICAgIH0pLCBbXG4gICAgICAgIGhhbmRsZVN1Ym1pdEludGVybmFsLFxuICAgICAgICByZXNldEZpZWxkcyxcbiAgICAgICAgZ2V0RmllbGRWYWx1ZSxcbiAgICAgICAgZ2V0RmllbGRzVmFsdWUsXG4gICAgICAgIHNldEZpZWxkc1ZhbHVlLFxuICAgICAgICBzZXRGaWVsZFZhbHVlLFxuICAgICAgICB2YWxpZGF0ZUZpZWxkcyxcbiAgICBdKTtcbiAgICBjb25zdCBjb3JlQ29udGV4dFNoYXBlID0gdXNlTWVtbygoKSA9PiAoe1xuICAgICAgICB2YWx1ZXMsXG4gICAgICAgIGVycm9ycyxcbiAgICAgICAgd2FybmluZ3MsXG4gICAgICAgIHRvdWNoZWQsXG4gICAgICAgIGZvcm1JbnN0YW5jZSxcbiAgICAgICAgc2V0RmllbGRWYWx1ZSxcbiAgICAgICAgc2V0RmllbGRFcnJvcixcbiAgICAgICAgc2V0RmllbGRXYXJuaW5nLFxuICAgICAgICB2YWxpZGF0ZUZpZWxkLFxuICAgICAgICByZWdpc3RlckZpZWxkLFxuICAgICAgICB1bnJlZ2lzdGVyRmllbGQsXG4gICAgICAgIHNpemUsXG4gICAgICAgIGxhYmVsQWxpZ24sXG4gICAgICAgIGRpc2FibGVkLFxuICAgICAgICBjb2xvbixcbiAgICAgICAgcmVxdWlyZWRNYXJrLFxuICAgICAgICB2YWxpZGF0ZVRyaWdnZXIsXG4gICAgfSksIFtcbiAgICAgICAgdmFsdWVzLFxuICAgICAgICBlcnJvcnMsXG4gICAgICAgIHdhcm5pbmdzLFxuICAgICAgICB0b3VjaGVkLFxuICAgICAgICBmb3JtSW5zdGFuY2UsXG4gICAgICAgIHNldEZpZWxkVmFsdWUsXG4gICAgICAgIHNldEZpZWxkRXJyb3IsXG4gICAgICAgIHNldEZpZWxkV2FybmluZyxcbiAgICAgICAgdmFsaWRhdGVGaWVsZCxcbiAgICAgICAgcmVnaXN0ZXJGaWVsZCxcbiAgICAgICAgdW5yZWdpc3RlckZpZWxkLFxuICAgICAgICBzaXplLFxuICAgICAgICBsYWJlbEFsaWduLFxuICAgICAgICBkaXNhYmxlZCxcbiAgICAgICAgY29sb24sXG4gICAgICAgIHJlcXVpcmVkTWFyayxcbiAgICAgICAgdmFsaWRhdGVUcmlnZ2VyLFxuICAgIF0pO1xuICAgIHJldHVybiB7XG4gICAgICAgIHZhbHVlcyxcbiAgICAgICAgZXJyb3JzLFxuICAgICAgICB3YXJuaW5ncyxcbiAgICAgICAgdG91Y2hlZCxcbiAgICAgICAgLy8gTGl2ZSByZWdpc3RyeSDigJQgc3RhYmxlIGlkZW50aXR5LCBtdXRhdGVkIGluIHBsYWNlIGJ5IHJlZ2lzdGVyL3VucmVnaXN0ZXIuXG4gICAgICAgIGZpZWxkUnVsZXM6IGZpZWxkUnVsZXNSZWYuY3VycmVudCxcbiAgICAgICAgZ2V0RmllbGRSdWxlcyxcbiAgICAgICAgc2V0RmllbGRWYWx1ZSxcbiAgICAgICAgc2V0RmllbGRFcnJvcixcbiAgICAgICAgc2V0RmllbGRXYXJuaW5nLFxuICAgICAgICBzZXRGaWVsZHNWYWx1ZSxcbiAgICAgICAgZ2V0RmllbGRWYWx1ZSxcbiAgICAgICAgZ2V0RmllbGRzVmFsdWUsXG4gICAgICAgIHZhbGlkYXRlRmllbGQsXG4gICAgICAgIHZhbGlkYXRlRmllbGRzLFxuICAgICAgICByZWdpc3RlckZpZWxkLFxuICAgICAgICB1bnJlZ2lzdGVyRmllbGQsXG4gICAgICAgIGhhbmRsZVN1Ym1pdCxcbiAgICAgICAgaGFuZGxlUmVzZXQsXG4gICAgICAgIHJlc2V0RmllbGRzLFxuICAgICAgICBmb3JtSW5zdGFuY2UsXG4gICAgICAgIGNvcmVDb250ZXh0U2hhcGUsXG4gICAgfTtcbn07XG5leHBvcnQgZGVmYXVsdCB1c2VGb3JtQ29yZTsiXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
277
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9jb3JlL3NyYy9jb21wb25lbnRzL1Byb0Zvcm0vY29yZS9ob29rcy91c2VGb3JtQ29yZS50cyIsImNvbXBvbmVudHMvUHJvRm9ybS9jb3JlL2hvb2tzL3VzZUZvcm1Db3JlLmpzIl0sIm5hbWVzIjpbInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VFdmVudENhbGxiYWNrIiwidXNlTWVtb2l6ZWRGbiIsInJlc29sdmVWYWx1ZSIsInNldE5lc3RlZFZhbHVlIiwicnVuUnVsZXNTeW5jIiwiY3JlYXRlRm9ybVN0b3JlIiwidXNlRm9ybUNvcmUiLCJjb25maWciLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJfY29uZmlnJGluaXRpYWxWYWx1ZXMiLCJpbml0aWFsVmFsdWVzIiwib25GaW5pc2giLCJvbkZpbmlzaEZhaWxlZCIsIm9uVmFsdWVzQ2hhbmdlIiwib25SZXNldCIsIl9jb25maWckc2l6ZSIsInNpemUiLCJfY29uZmlnJGxhYmVsQWxpZ24iLCJsYWJlbEFsaWduIiwiX2NvbmZpZyRkaXNhYmxlZCIsImRpc2FibGVkIiwiX2NvbmZpZyRjb2xvbiIsImNvbG9uIiwiX2NvbmZpZyRyZXF1aXJlZE1hcmsiLCJyZXF1aXJlZE1hcmsiLCJfY29uZmlnJHZhbGlkYXRlVHJpZ2ciLCJ2YWxpZGF0ZVRyaWdnZXIiLCJpbml0aWFsVmFsdWVzUmVmIiwiY3VycmVudCIsIm1vdW50SW5pdGlhbFZhbHVlcyIsInN0b3JlUmVmIiwic3RvcmUiLCJmaWVsZFJ1bGVzUmVmIiwiY29tbWl0VmFsdWVzIiwibmV3VmFsdWVzIiwic2V0U3RhdGUiLCJ2YWx1ZXMiLCJzZXRGaWVsZFZhbHVlIiwibmFtZSIsInZhbHVlIiwicHJldiIsImdldFN0YXRlIiwiaW5jbHVkZXMiLCJPYmplY3QiLCJhc3NpZ24iLCJfZGVmaW5lUHJvcGVydHkiLCJlcnJvcnMiLCJuZXdFcnJvcnMiLCJzZXRGaWVsZEVycm9yIiwiZXJyb3IiLCJzZXRGaWVsZFdhcm5pbmciLCJ3YXJuaW5nIiwid2FybmluZ3MiLCJuZXdXYXJuaW5ncyIsInJlZ2lzdGVyRmllbGQiLCJydWxlcyIsImdldEZpZWxkUnVsZXMiLCJ1bnJlZ2lzdGVyRmllbGQiLCJ2YWxpZGF0ZUZpZWxkIiwicHJvdmlkZWRWYWx1ZSIsImN1cnJlbnRWYWx1ZXMiLCJfcnVuUnVsZXNTeW5jIiwidmFsaWRhdGVGaWVsZHMiLCJmaWVsZHNSdWxlc1RvVmFsaWRhdGUiLCJpc1ZhbGlkIiwia2V5cyIsImZvckVhY2giLCJoYW5kbGVTdWJtaXRJbnRlcm5hbCIsImN1cnJlbnRSdWxlcyIsImhhc0Vycm9ycyIsImZpZWxkTmFtZSIsIl9ydW5SdWxlc1N5bmMyIiwic3VjY2VzcyIsImhhbmRsZVN1Ym1pdCIsImUiLCJwcmV2ZW50RGVmYXVsdCIsInJlc2V0RmllbGRzIiwidG91Y2hlZCIsInZhbGlkYXRpbmciLCJoYW5kbGVSZXNldCIsImdldEZpZWxkVmFsdWUiLCJnZXRGaWVsZHNWYWx1ZSIsInNldEZpZWxkc1ZhbHVlIiwidXBkYXRlZFZhbHVlcyIsImZvcm1JbnN0YW5jZSIsInN1Ym1pdCIsInN0YXRlIiwiY29yZUNvbnRleHRTaGFwZSIsImZpZWxkUnVsZXMiLCJnZXRJbml0aWFsVmFsdWVzIl0sIm1hcHBpbmdzIjoiO0FBQUEsU0FBU0EsT0FBTyxFQUFFQyxNQUFNLFFBQVEsT0FBTztBQUV2QyxPQUFPQyxnQkFBZ0IsTUFBTSxnQ0FBZ0M7QUFDN0QsT0FBT0MsYUFBYSxNQUFNLDZCQUE2QjtBQUN2RCxTQUFTQyxZQUFZLEVBQUVDLGNBQWMsUUFBUSxjQUFjO0FBQzNELFNBQVNDLFlBQVksUUFBUSxhQUFhO0FBQzFDLFNBQVNDLGVBQWUsUUFBUSxjQUFjO0FBUzlDLE9BQU8sSUFBTUMsV0FBVyxHQUFHLFNBQWRBLFdBQVdBLENBQUEsRUFFdUU7RUFBQSxJQUQ3RkMsTUFBQSxHQUFBQyxTQUFBLENBQUFDLE1BQUEsUUFBQUQsU0FBQSxRQUFBRSxTQUFBLEdBQUFGLFNBQUEsTUFBNEIsQ0FBQSxDQUFFO0VB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dHMvUHJvRm9ybS9jb3JlL2hvb2tzL3VzZUZvcm1Db3JlLmpzIiwic291cmNlc0NvbnRlbnQiOltudWxsLCJpbXBvcnQgeyB1c2VNZW1vLCB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdXNlRXZlbnRDYWxsYmFjayBmcm9tICdAMW1vbmV5L2hvb2tzL3VzZUV2ZW50Q2FsbGJhY2snO1xuaW1wb3J0IHVzZU1lbW9pemVkRm4gZnJvbSAnQDFtb25leS9ob29rcy91c2VNZW1vaXplZEZuJztcbmltcG9ydCB7IHJlc29sdmVWYWx1ZSwgc2V0TmVzdGVkVmFsdWUgfSBmcm9tICcuLi9wYXRoVXRpbHMnO1xuaW1wb3J0IHsgcnVuUnVsZXNTeW5jIH0gZnJvbSAnLi4vcnVuUnVsZXMnO1xuaW1wb3J0IHsgY3JlYXRlRm9ybVN0b3JlIH0gZnJvbSAnLi4vZm9ybVN0b3JlJztcbmV4cG9ydCBjb25zdCB1c2VGb3JtQ29yZSA9IChjb25maWcgPSB7fSkgPT4ge1xuICAgIGNvbnN0IHsgaW5pdGlhbFZhbHVlcyA9IHt9LCBvbkZpbmlzaCwgb25GaW5pc2hGYWlsZWQsIG9uVmFsdWVzQ2hhbmdlLCBvblJlc2V0LCBzaXplID0gJ2xhcmdlJywgbGFiZWxBbGlnbiA9ICdsZWZ0JywgZGlzYWJsZWQgPSBmYWxzZSwgY29sb24gPSB0cnVlLCByZXF1aXJlZE1hcmsgPSB0cnVlLCB2YWxpZGF0ZVRyaWdnZXIgPSAnb25DaGFuZ2UnLCB9ID0gY29uZmlnO1xuICAgIC8vIGluaXRpYWxWYWx1ZXMgaXMgTU9VTlQtT05MWSAodGhlIGRvY3VtZW50ZWQgY29udHJhY3QpOiBmcmVlemUgdGhlIGZpcnN0XG4gICAgLy8gcmVuZGVyJ3MgdmFsdWUgc28gcmVzZXRGaWVsZHMgYWx3YXlzIHJlc3RvcmVzIHRoZSBtb3VudC10aW1lIGRlZmF1bHRzLFxuICAgIC8vIGV2ZW4gd2hlbiB0aGUgY29uc3VtZXIgcmUtcmVuZGVycyB3aXRoIGEgZGlmZmVyZW50IChlLmcuIGNvbnRyb2xsZWQpXG4gICAgLy8gaW5pdGlhbFZhbHVlcyBvYmplY3QuXG4gICAgY29uc3QgaW5pdGlhbFZhbHVlc1JlZiA9IHVzZVJlZihudWxsKTtcbiAgICBpZiAoaW5pdGlhbFZhbHVlc1JlZi5jdXJyZW50ID09PSBudWxsKSB7XG4gICAgICAgIGluaXRpYWxWYWx1ZXNSZWYuY3VycmVudCA9IGluaXRpYWxWYWx1ZXM7XG4gICAgfVxuICAgIGNvbnN0IG1vdW50SW5pdGlhbFZhbHVlcyA9IGluaXRpYWxWYWx1ZXNSZWYuY3VycmVudDtcbiAgICAvLyBBbGwgdm9sYXRpbGUgZm9ybSBzdGF0ZSBsaXZlcyBpbiBhbiBleHRlcm5hbCBzdG9yZSwgTk9UIFJlYWN0IHN0YXRlIOKAlCBhXG4gICAgLy8ga2V5c3Ryb2tlIG11c3QgbmV2ZXIgcmUtcmVuZGVyIHRoZSBjb21wb25lbnQgdGhhdCBvd25zIHRoZSBmb3JtLiBGaWVsZHNcbiAgICAvLyBhbmQgd2F0Y2hlcnMgc3Vic2NyaWJlIHdpdGggcGVyLWZpZWxkIHNlbGVjdG9ycyAodXNlU3RvcmVTZWxlY3Rvcik7IGV2ZXJ5XG4gICAgLy8gbXV0YXRvciBiZWxvdyByZWFkcyB0aGUgTEFURVNUIHN0YXRlIHZpYSBzdG9yZS5nZXRTdGF0ZSgpLCB3aGljaCBhbHNvXG4gICAgLy8ga2VlcHMgbXVsdGlwbGUgd3JpdGVzIGluIHRoZSBzYW1lIHRpY2sgdmlzaWJsZSB0byBlYWNoIG90aGVyLlxuICAgIGNvbnN0IHN0b3JlUmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGlmIChzdG9yZVJlZi5jdXJyZW50ID09PSBudWxsKSB7XG4gICAgICAgIHN0b3JlUmVmLmN1cnJlbnQgPSBjcmVhdGVGb3JtU3RvcmUobW91bnRJbml0aWFsVmFsdWVzKTtcbiAgICB9XG4gICAgY29uc3Qgc3RvcmUgPSBzdG9yZVJlZi5jdXJyZW50O1xuICAgIC8vIExpdmUgcnVsZSByZWdpc3RyeSDigJQgT05FIHN0YWJsZSBvYmplY3QgbXV0YXRlZCBpbiBwbGFjZS4gUmVnaXN0cmF0aW9uIG11c3RcbiAgICAvLyBub3QgdHJpZ2dlciByZW5kZXJzLCBhbmQgc3VibWl0LXRpbWUgdmFsaWRhdGlvbiBtdXN0IGFsd2F5cyByZWFkIHRoZSBsYXRlc3RcbiAgICAvLyBydWxlcyAodGhleSBjYW4gY2hhbmdlIGJldHdlZW4gcmVuZGVycywgZS5nLiBhIGNvbmRpdGlvbmFsIGByZXF1aXJlZGApLlxuICAgIGNvbnN0IGZpZWxkUnVsZXNSZWYgPSB1c2VSZWYoe30pO1xuICAgIGNvbnN0IGNvbW1pdFZhbHVlcyA9IHVzZU1lbW9pemVkRm4oKG5ld1ZhbHVlcykgPT4ge1xuICAgICAgICBzdG9yZS5zZXRTdGF0ZSh7IHZhbHVlczogbmV3VmFsdWVzIH0pO1xuICAgIH0pO1xuICAgIGNvbnN0IHNldEZpZWxkVmFsdWUgPSB1c2VNZW1vaXplZEZuKChuYW1lLCB2YWx1ZSkgPT4ge1xuICAgICAgICBjb25zdCBwcmV2ID0gc3RvcmUuZ2V0U3RhdGUoKS52YWx1ZXM7XG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlcyA9IG5hbWUuaW5jbHVkZXMoJy4nKVxuICAgICAgICAgICAgPyBzZXROZXN0ZWRWYWx1ZShwcmV2LCBuYW1lLCB2YWx1ZSlcbiAgICAgICAgICAgIDogT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBwcmV2KSwgeyBbbmFtZV06IHZhbHVlIH0pO1xuICAgICAgICBjb21taXRWYWx1ZXMobmV3VmFsdWVzKTtcbiAgICAgICAgb25WYWx1ZXNDaGFuZ2UgPT09IG51bGwgfHwgb25WYWx1ZXNDaGFuZ2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uVmFsdWVzQ2hhbmdlKHsgW25hbWVdOiB2YWx1ZSB9LCBuZXdWYWx1ZXMpO1xuICAgICAgICBpZiAodmFsdWUgIT09ICcnICYmIHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGVycm9ycyA9IHN0b3JlLmdldFN0YXRlKCkuZXJyb3JzO1xuICAgICAgICAgICAgaWYgKGVycm9yc1tuYW1lXSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0Vycm9ycyA9IE9iamVjdC5hc3NpZ24oe30sIGVycm9ycyk7XG4gICAgICAgICAgICAgICAgZGVsZXRlIG5ld0Vycm9yc1tuYW1lXTtcbiAgICAgICAgICAgICAgICBzdG9yZS5zZXRTdGF0ZSh7IGVycm9yczogbmV3RXJyb3JzIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG4gICAgY29uc3Qgc2V0RmllbGRFcnJvciA9IHVzZU1lbW9pemVkRm4oKG5hbWUsIGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnN0IGVycm9ycyA9IHN0b3JlLmdldFN0YXRlKCkuZXJyb3JzO1xuICAgICAgICBpZiAoZXJyb3IgPT09IG51bGwpIHtcbiAgICAgICAgICAgIGlmICghZXJyb3JzW25hbWVdKVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIGNvbnN0IG5ld0Vycm9ycyA9IE9iamVjdC5hc3NpZ24oe30sIGVycm9ycyk7XG4gICAgICAgICAgICBkZWxldGUgbmV3RXJyb3JzW25hbWVdO1xuICAgICAgICAgICAgc3RvcmUuc2V0U3RhdGUoeyBlcnJvcnM6IG5ld0Vycm9ycyB9KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXJyb3JzW25hbWVdID09PSBlcnJvcilcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgc3RvcmUuc2V0U3RhdGUoeyBlcnJvcnM6IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgZXJyb3JzKSwgeyBbbmFtZV06IGVycm9yIH0pIH0pO1xuICAgIH0pO1xuICAgIGNvbnN0IHNldEZpZWxkV2FybmluZyA9IHVzZU1lbW9pemVkRm4oKG5hbWUsIHdhcm5pbmcpID0+IHtcbiAgICAgICAgY29uc3Qgd2FybmluZ3MgPSBzdG9yZS5nZXRTdGF0ZSgpLndhcm5pbmdzO1xuICAgICAgICBpZiAod2FybmluZyA9PT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKCF3YXJuaW5nc1tuYW1lXSlcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICBjb25zdCBuZXdXYXJuaW5ncyA9IE9iamVjdC5hc3NpZ24oe30sIHdhcm5pbmdzKTtcbiAgICAgICAgICAgIGRlbGV0ZSBuZXdXYXJuaW5nc1tuYW1lXTtcbiAgICAgICAgICAgIHN0b3JlLnNldFN0YXRlKHsgd2FybmluZ3M6IG5ld1dhcm5pbmdzIH0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh3YXJuaW5nc1tuYW1lXSA9PT0gd2FybmluZylcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgc3RvcmUuc2V0U3RhdGUoeyB3YXJuaW5nczogT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCB3YXJuaW5ncyksIHsgW25hbWVdOiB3YXJuaW5nIH0pIH0pO1xuICAgIH0pO1xuICAgIGNvbnN0IHJlZ2lzdGVyRmllbGQgPSB1c2VNZW1vaXplZEZuKChuYW1lLCBydWxlcykgPT4ge1xuICAgICAgICBmaWVsZFJ1bGVzUmVmLmN1cnJlbnRbbmFtZV0gPSBydWxlcztcbiAgICB9KTtcbiAgICBjb25zdCBnZXRGaWVsZFJ1bGVzID0gdXNlTWVtb2l6ZWRGbigobmFtZSkgPT4ge1xuICAgICAgICByZXR1cm4gZmllbGRSdWxlc1JlZi5jdXJyZW50W25hbWVdO1xuICAgIH0pO1xuICAgIGNvbnN0IHVucmVnaXN0ZXJGaWVsZCA9IHVzZU1lbW9pemVkRm4oKG5hbWUpID0+IHtcbiAgICAgICAgZGVsZXRlIGZpZWxkUnVsZXNSZWYuY3VycmVudFtuYW1lXTtcbiAgICB9KTtcbiAgICBjb25zdCB2YWxpZGF0ZUZpZWxkID0gdXNlTWVtb2l6ZWRGbigobmFtZSwgcnVsZXMgPSBbXSwgcHJvdmlkZWRWYWx1ZSkgPT4ge1xuICAgICAgICBjb25zdCBjdXJyZW50VmFsdWVzID0gc3RvcmUuZ2V0U3RhdGUoKS52YWx1ZXM7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gcHJvdmlkZWRWYWx1ZSAhPT0gdW5kZWZpbmVkID8gcHJvdmlkZWRWYWx1ZSA6IHJlc29sdmVWYWx1ZShjdXJyZW50VmFsdWVzLCBuYW1lKTtcbiAgICAgICAgY29uc3QgeyBlcnJvciwgd2FybmluZyB9ID0gcnVuUnVsZXNTeW5jKG5hbWUsIHZhbHVlLCBjdXJyZW50VmFsdWVzLCBydWxlcyk7XG4gICAgICAgIHNldEZpZWxkV2FybmluZyhuYW1lLCB3YXJuaW5nKTtcbiAgICAgICAgaWYgKGVycm9yICE9PSBudWxsKSB7XG4gICAgICAgICAgICBzZXRGaWVsZEVycm9yKG5hbWUsIGVycm9yKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RvcmUuZ2V0U3RhdGUoKS5lcnJvcnNbbmFtZV0pIHtcbiAgICAgICAgICAgIHNldEZpZWxkRXJyb3IobmFtZSwgbnVsbCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSk7XG4gICAgY29uc3QgdmFsaWRhdGVGaWVsZHMgPSB1c2VNZW1vaXplZEZuKChmaWVsZHNSdWxlc1RvVmFsaWRhdGUgPSBmaWVsZFJ1bGVzUmVmLmN1cnJlbnQpID0+IHtcbiAgICAgICAgbGV0IGlzVmFsaWQgPSB0cnVlO1xuICAgICAgICBPYmplY3Qua2V5cyhmaWVsZHNSdWxlc1RvVmFsaWRhdGUpLmZvckVhY2goKG5hbWUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVzID0gZmllbGRzUnVsZXNUb1ZhbGlkYXRlW25hbWVdO1xuICAgICAgICAgICAgaWYgKCF2YWxpZGF0ZUZpZWxkKG5hbWUsIHJ1bGVzKSkge1xuICAgICAgICAgICAgICAgIGlzVmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBpc1ZhbGlkO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVN1Ym1pdEludGVybmFsID0gdXNlTWVtb2l6ZWRGbigoKSA9PiB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZXMgPSBzdG9yZS5nZXRTdGF0ZSgpLnZhbHVlcztcbiAgICAgICAgY29uc3QgY3VycmVudFJ1bGVzID0gZmllbGRSdWxlc1JlZi5jdXJyZW50O1xuICAgICAgICBsZXQgaGFzRXJyb3JzID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IG5ld0Vycm9ycyA9IHt9O1xuICAgICAgICBjb25zdCBuZXdXYXJuaW5ncyA9IHt9O1xuICAgICAgICBPYmplY3Qua2V5cyhjdXJyZW50UnVsZXMpLmZvckVhY2goKGZpZWxkTmFtZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSByZXNvbHZlVmFsdWUoY3VycmVudFZhbHVlcywgZmllbGROYW1lKTtcbiAgICAgICAgICAgIGNvbnN0IHsgZXJyb3IsIHdhcm5pbmcgfSA9IHJ1blJ1bGVzU3luYyhmaWVsZE5hbWUsIHZhbHVlLCBjdXJyZW50VmFsdWVzLCBjdXJyZW50UnVsZXNbZmllbGROYW1lXSk7XG4gICAgICAgICAgICBpZiAoZXJyb3IgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBuZXdFcnJvcnNbZmllbGROYW1lXSA9IGVycm9yO1xuICAgICAgICAgICAgICAgIGhhc0Vycm9ycyA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAod2FybmluZyAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIG5ld1dhcm5pbmdzW2ZpZWxkTmFtZV0gPSB3YXJuaW5nO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgc3RvcmUuc2V0U3RhdGUoeyBlcnJvcnM6IG5ld0Vycm9ycywgd2FybmluZ3M6IG5ld1dhcm5pbmdzIH0pO1xuICAgICAgICBpZiAoIWhhc0Vycm9ycykge1xuICAgICAgICAgICAgb25GaW5pc2ggPT09IG51bGwgfHwgb25GaW5pc2ggPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uRmluaXNoKGN1cnJlbnRWYWx1ZXMpO1xuICAgICAgICAgICAgcmV0dXJuIHsgc3VjY2VzczogdHJ1ZSwgdmFsdWVzOiBjdXJyZW50VmFsdWVzIH07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBvbkZpbmlzaEZhaWxlZCA9PT0gbnVsbCB8fCBvbkZpbmlzaEZhaWxlZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25GaW5pc2hGYWlsZWQoeyB2YWx1ZXM6IGN1cnJlbnRWYWx1ZXMsIGVycm9yczogbmV3RXJyb3JzIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHsgc3VjY2VzczogZmFsc2UsIGVycm9yczogbmV3RXJyb3JzIH07XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVTdWJtaXQgPSB1c2VFdmVudENhbGxiYWNrKChlKSA9PiB7XG4gICAgICAgIGUgPT09IG51bGwgfHwgZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICByZXR1cm4gaGFuZGxlU3VibWl0SW50ZXJuYWwoKTtcbiAgICB9KTtcbiAgICAvLyBQdXJlIHN0YXRlIEFQSTogdGhlIGltcGVyYXRpdmUgcmVzZXRGaWVsZHMoKVxuICAgIC8vIG5ldmVyIGZpcmVzIG9uUmVzZXQuIFRoZSBjYWxsYmFjayBiZWxvbmdzIHRvIHRoZSByZXNldCBBQ1RJT04gbGF5ZXJcbiAgICAvLyAoc3VibWl0dGVyIGJ1dHRvbiAvIG5hdGl2ZSByZXNldCBldmVudCksIHdoaWNoIGZpcmVzIGl0IGV4YWN0bHkgb25jZS5cbiAgICBjb25zdCByZXNldEZpZWxkcyA9IHVzZU1lbW9pemVkRm4oKCkgPT4ge1xuICAgICAgICBzdG9yZS5zZXRTdGF0ZSh7XG4gICAgICAgICAgICB2YWx1ZXM6IG1vdW50SW5pdGlhbFZhbHVlcyxcbiAgICAgICAgICAgIGVycm9yczoge30sXG4gICAgICAgICAgICB3YXJuaW5nczoge30sXG4gICAgICAgICAgICB0b3VjaGVkOiB7fSxcbiAgICAgICAgICAgIHZhbGlkYXRpbmc6IHt9LFxuICAgICAgICB9KTtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVSZXNldCA9IHVzZUV2ZW50Q2FsbGJhY2soKGUpID0+IHtcbiAgICAgICAgZSA9PT0gbnVsbCB8fCBlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHJlc2V0RmllbGRzKCk7XG4gICAgICAgIG9uUmVzZXQgPT09IG51bGwgfHwgb25SZXNldCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25SZXNldCgpO1xuICAgIH0pO1xuICAgIGNvbnN0IGdldEZpZWxkVmFsdWUgPSB1c2VNZW1vaXplZEZuKChuYW1lKSA9PiB7XG4gICAgICAgIHJldHVybiByZXNvbHZlVmFsdWUoc3RvcmUuZ2V0U3RhdGUoKS52YWx1ZXMsIG5hbWUpO1xuICAgIH0pO1xuICAgIGNvbnN0IGdldEZpZWxkc1ZhbHVlID0gdXNlTWVtb2l6ZWRGbigoKSA9PiB7XG4gICAgICAgIHJldHVybiBzdG9yZS5nZXRTdGF0ZSgpLnZhbHVlcztcbiAgICB9KTtcbiAgICBjb25zdCBzZXRGaWVsZHNWYWx1ZSA9IHVzZU1lbW9pemVkRm4oKG5ld1ZhbHVlcykgPT4ge1xuICAgICAgICBjb25zdCB1cGRhdGVkVmFsdWVzID0gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBzdG9yZS5nZXRTdGF0ZSgpLnZhbHVlcyksIG5ld1ZhbHVlcyk7XG4gICAgICAgIGNvbW1pdFZhbHVlcyh1cGRhdGVkVmFsdWVzKTtcbiAgICAgICAgb25WYWx1ZXNDaGFuZ2UgPT09IG51bGwgfHwgb25WYWx1ZXNDaGFuZ2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uVmFsdWVzQ2hhbmdlKG5ld1ZhbHVlcywgdXBkYXRlZFZhbHVlcyk7XG4gICAgfSk7XG4gICAgY29uc3QgZm9ybUluc3RhbmNlID0gdXNlTWVtbygoKSA9PiAoe1xuICAgICAgICBzdWJtaXQ6IGhhbmRsZVN1Ym1pdEludGVybmFsLFxuICAgICAgICByZXNldEZpZWxkcyxcbiAgICAgICAgZ2V0RmllbGRWYWx1ZSxcbiAgICAgICAgZ2V0RmllbGRzVmFsdWUsXG4gICAgICAgIHNldEZpZWxkc1ZhbHVlLFxuICAgICAgICBzZXRGaWVsZFZhbHVlLFxuICAgICAgICB2YWxpZGF0ZUZpZWxkcyxcbiAgICB9KSwgW1xuICAgICAgICBoYW5kbGVTdWJtaXRJbnRlcm5hbCxcbiAgICAgICAgcmVzZXRGaWVsZHMsXG4gICAgICAgIGdldEZpZWxkVmFsdWUsXG4gICAgICAgIGdldEZpZWxkc1ZhbHVlLFxuICAgICAgICBzZXRGaWVsZHNWYWx1ZSxcbiAgICAgICAgc2V0RmllbGRWYWx1ZSxcbiAgICAgICAgdmFsaWRhdGVGaWVsZHMsXG4gICAgXSk7XG4gICAgLy8gUmVuZGVyLXRpbWUgc25hcHNob3Qg4oCUIGtlcHQgZm9yIHRoZSBVc2VGb3JtQ29yZVJldHVybiBjb250cmFjdC4gUmVhY3RpdmVcbiAgICAvLyBjb25zdW1lcnMgbXVzdCBnbyB0aHJvdWdoIHRoZSBzdG9yZSwgbmV2ZXIgdGhyb3VnaCB0aGVzZSBmaWVsZHMuXG4gICAgY29uc3Qgc3RhdGUgPSBzdG9yZS5nZXRTdGF0ZSgpO1xuICAgIGNvbnN0IGNvcmVDb250ZXh0U2hhcGUgPSB7XG4gICAgICAgIHZhbHVlczogc3RhdGUudmFsdWVzLFxuICAgICAgICBlcnJvcnM6IHN0YXRlLmVycm9ycyxcbiAgICAgICAgd2FybmluZ3M6IHN0YXRlLndhcm5pbmdzLFxuICAgICAgICB0b3VjaGVkOiBzdGF0ZS50b3VjaGVkLFxuICAgICAgICBmb3JtSW5zdGFuY2UsXG4gICAgICAgIHNldEZpZWxkVmFsdWUsXG4gICAgICAgIHNldEZpZWxkRXJyb3IsXG4gICAgICAgIHNldEZpZWxkV2FybmluZyxcbiAgICAgICAgdmFsaWRhdGVGaWVsZCxcbiAgICAgICAgcmVnaXN0ZXJGaWVsZCxcbiAgICAgICAgdW5yZWdpc3RlckZpZWxkLFxuICAgICAgICBzaXplLFxuICAgICAgICBsYWJlbEFsaWduLFxuICAgICAgICBkaXNhYmxlZCxcbiAgICAgICAgY29sb24sXG4gICAgICAgIHJlcXVpcmVkTWFyayxcbiAgICAgICAgdmFsaWRhdGVUcmlnZ2VyLFxuICAgIH07XG4gICAgcmV0dXJuIHtcbiAgICAgICAgdmFsdWVzOiBzdGF0ZS52YWx1ZXMsXG4gICAgICAgIGVycm9yczogc3RhdGUuZXJyb3JzLFxuICAgICAgICB3YXJuaW5nczogc3RhdGUud2FybmluZ3MsXG4gICAgICAgIHRvdWNoZWQ6IHN0YXRlLnRvdWNoZWQsXG4gICAgICAgIC8vIExpdmUgcmVnaXN0cnkg4oCUIHN0YWJsZSBpZGVudGl0eSwgbXV0YXRlZCBpbiBwbGFjZSBieSByZWdpc3Rlci91bnJlZ2lzdGVyLlxuICAgICAgICBmaWVsZFJ1bGVzOiBmaWVsZFJ1bGVzUmVmLmN1cnJlbnQsXG4gICAgICAgIGdldEZpZWxkUnVsZXMsXG4gICAgICAgIHNldEZpZWxkVmFsdWUsXG4gICAgICAgIHNldEZpZWxkRXJyb3IsXG4gICAgICAgIHNldEZpZWxkV2FybmluZyxcbiAgICAgICAgc2V0RmllbGRzVmFsdWUsXG4gICAgICAgIGdldEZpZWxkVmFsdWUsXG4gICAgICAgIGdldEZpZWxkc1ZhbHVlLFxuICAgICAgICB2YWxpZGF0ZUZpZWxkLFxuICAgICAgICB2YWxpZGF0ZUZpZWxkcyxcbiAgICAgICAgcmVnaXN0ZXJGaWVsZCxcbiAgICAgICAgdW5yZWdpc3RlckZpZWxkLFxuICAgICAgICBoYW5kbGVTdWJtaXQsXG4gICAgICAgIGhhbmRsZVJlc2V0LFxuICAgICAgICByZXNldEZpZWxkcyxcbiAgICAgICAgZm9ybUluc3RhbmNlLFxuICAgICAgICBjb3JlQ29udGV4dFNoYXBlLFxuICAgICAgICBzdG9yZSxcbiAgICAgICAgZ2V0SW5pdGlhbFZhbHVlczogKCkgPT4gbW91bnRJbml0aWFsVmFsdWVzLFxuICAgIH07XG59O1xuZXhwb3J0IGRlZmF1bHQgdXNlRm9ybUNvcmU7Il0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
@@ -11,9 +11,11 @@ export interface RuleRunResult {
11
11
  */
12
12
  export declare function filterRulesByTrigger(rules: Rule[], trigger: ValidateTrigger, formTrigger: ValidateTrigger): Rule[];
13
13
  /**
14
- * Synchronous rule run. Custom validators are invoked but NOT awaited — a
15
- * promise-returning validator is treated as failing (matches the legacy sync
16
- * `validateField` behaviour).
14
+ * Synchronous rule run. A Promise-returning validator CANNOT be evaluated
15
+ * here it is deferred (treated as passing for this run; its rejection is
16
+ * swallowed) and left to the async runs (blur/submit), which always await it.
17
+ * Failing it instead would mis-report "Validation failed" on every keystroke
18
+ * for perfectly valid input.
17
19
  */
18
20
  export declare function runRulesSync(name: string, value: unknown, values: Record<string, unknown>, rules: Rule[]): RuleRunResult;
19
21
  /**
@@ -1,3 +1,4 @@
1
+ import _typeof from "@babel/runtime/helpers/esm/typeof";
1
2
  import _regeneratorRuntime from "@babel/runtime/regenerator";
2
3
  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; } } }; }
3
4
  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; } }
@@ -29,6 +30,9 @@ var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, gene
29
30
  step((generator = generator.apply(thisArg, _arguments || [])).next());
30
31
  });
31
32
  };
33
+ function isThenable(value) {
34
+ return value !== null && _typeof(value) === 'object' && typeof value.then === 'function';
35
+ }
32
36
  /** Empty for `required`: undefined / null / '' / empty array. */
33
37
  function isEmptyValue(value) {
34
38
  return value === undefined || value === null || value === '' || Array.isArray(value) && value.length === 0;
@@ -105,9 +109,11 @@ function checkBuiltinRules(rule, value, name) {
105
109
  return null;
106
110
  }
107
111
  /**
108
- * Synchronous rule run. Custom validators are invoked but NOT awaited — a
109
- * promise-returning validator is treated as failing (matches the legacy sync
110
- * `validateField` behaviour).
112
+ * Synchronous rule run. A Promise-returning validator CANNOT be evaluated
113
+ * here it is deferred (treated as passing for this run; its rejection is
114
+ * swallowed) and left to the async runs (blur/submit), which always await it.
115
+ * Failing it instead would mis-report "Validation failed" on every keystroke
116
+ * for perfectly valid input.
111
117
  */
112
118
  export function runRulesSync(name, value, values, rules) {
113
119
  var warning = null;
@@ -120,7 +126,9 @@ export function runRulesSync(name, value, values, rules) {
120
126
  if (failure === null && typeof rule.validator === 'function') {
121
127
  try {
122
128
  var result = rule.validator(value, values);
123
- if (result !== true) {
129
+ if (isThenable(result)) {
130
+ result.then(undefined, function () {});
131
+ } else if (result !== true) {
124
132
  failure = typeof result === 'string' ? result : 'Validation failed';
125
133
  }
126
134
  } catch (err) {
@@ -230,4 +238,4 @@ export function runRulesAsync(name, value, values, rules) {
230
238
  }, _callee, null, [[1, 10, 11, 12], [3, 5]]);
231
239
  }));
232
240
  }
233
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9jb3JlL3J1blJ1bGVzLmpzIiwiY29tcG9uZW50cy9Qcm9Gb3JtL3NyYy9jb21wb25lbnRzL1Byb0Zvcm0vY29yZS9ydW5SdWxlcy50cyJdLCJuYW1lcyI6WyJfX2F3YWl0ZXIiLCJ0aGlzQXJnIiwiX2FyZ3VtZW50cyIsIlAiLCJnZW5lcmF0b3IiLCJhZG9wdCIsInZhbHVlIiwicmVzb2x2ZSIsIlByb21pc2UiLCJyZWplY3QiLCJmdWxmaWxsZWQiLCJzdGVwIiwibmV4dCIsImUiLCJyZWplY3RlZCIsInJlc3VsdCIsImRvbmUiLCJ0aGVuIiwiYXBwbHkiLCJpc0VtcHR5VmFsdWUiLCJ1bmRlZmluZWQiLCJBcnJheSIsImlzQXJyYXkiLCJsZW5ndGgiLCJmaWx0ZXJSdWxlc0J5VHJpZ2dlciIsInJ1bGVzIiwidHJpZ2dlciIsImZvcm1UcmlnZ2VyIiwiZmlsdGVyIiwicnVsZSIsInJ1bGVUcmlnZ2VyIiwidmFsaWRhdGVUcmlnZ2VyIiwiaW5jbHVkZXMiLCJjaGVja0J1aWx0aW5SdWxlcyIsIm5hbWUiLCJyZXF1aXJlZCIsIm1lc3NhZ2UiLCJjb25jYXQiLCJtaW4iLCJtYXgiLCJtZWFzdXJlZCIsInVuaXQiLCJOdW1iZXIiLCJpc05hTiIsInBhdHRlcm4iLCJ0ZXN0Iiwiam9pbiIsInR5cGUiLCJlbWFpbFBhdHRlcm4iLCJTdHJpbmciLCJVUkwiLCJfYSIsInJ1blJ1bGVzU3luYyIsInZhbHVlcyIsIndhcm5pbmciLCJfaXRlcmF0b3IiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsIl9zdGVwIiwicyIsIm4iLCJmYWlsdXJlIiwidmFsaWRhdG9yIiwiZXJyIiwiRXJyb3IiLCJ3YXJuaW5nT25seSIsImVycm9yIiwiZiIsInJ1blJ1bGVzQXN5bmMiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJfaXRlcmF0b3IyIiwiX3N0ZXAyIiwiX3QiLCJfdDIiLCJ3cmFwIiwiX2NvbnRleHQiLCJw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QUEsS0FDZGlCLElBQUksQ0FBQ21DLFdBQVc7WUFBQVksUUFBQSxDQUFBaEUsSUFBQTtZQUFBO1VBQUE7VUFDbEIwQyxPQUFPLEdBQUdBLE9BQU8sS0FBQSxJQUFBLElBQVBBLE9BQU8sS0FBQSxLQUFBLENBQUEsR0FBUEEsT0FBTyxHQUFJTSxPQUFPO1VBQUNnQixRQUFBLENBQUFoRSxJQUFBO1VBQUE7UUFBQTtVQUFBLE9BQUFnRSxRQUFBLENBQUFHLE1BQUEsV0FFdEI7WUFBRWQsS0FBSyxFQUFFTCxPQUFPO1lBQUVOLE9BQU8sRUFBUEE7VUFBTyxDQUFFO1FBQUE7VUFBQXNCLFFBQUEsQ0FBQWhFLElBQUE7VUFBQTtRQUFBO1VBQUFnRSxRQUFBLENBQUFoRSxJQUFBO1VBQUE7UUFBQTtVQUFBZ0UsUUFBQSxDQUFBQyxJQUFBO1VBQUFILEdBQUEsR0FBQUUsUUFBQTtVQUFBTCxVQUFBLENBQUExRCxDQUFBLENBQUE2RCxHQUFBO1FBQUE7VUFBQUUsUUFBQSxDQUFBQyxJQUFBO1VBQUFOLFVBQUEsQ0FBQUwsQ0FBQTtVQUFBLE9BQUFVLFFBQUEsQ0FBQUksTUFBQTtRQUFBO1VBQUEsT0FBQUosUUFBQSxDQUFBRyxNQUFBLFdBSWpDO1lBQUVkLEtBQUssRUFBRSxJQUFJO1lBQUVYLE9BQU8sRUFBUEE7VUFBTyxDQUFFO1FBQUE7UUFBQTtVQUFBLE9BQUFzQixRQUFBLENBQUFLLElBQUE7TUFBQTtJQUFBLEdBQUFYLE9BQUE7RUFBQSxDQUNoQyxFQUFBO0FEaENEIiwiZmlsZSI6ImNvbXBvbmVudHMvUHJvRm9ybS9jb3JlL3J1blJ1bGVzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG4vKiogRW1wdHkgZm9yIGByZXF1aXJlZGA6IHVuZGVmaW5lZCAvIG51bGwgLyAnJyAvIGVtcHR5IGFycmF5LiAqL1xuZnVuY3Rpb24gaXNFbXB0eVZhbHVlKHZhbHVlKSB7XG4gICAgcmV0dXJuICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgIHZhbHVlID09PSBudWxsIHx8XG4gICAgICAgIHZhbHVlID09PSAnJyB8fFxuICAgICAgICAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID09PSAwKSk7XG59XG4vKipcbiAqIEZpbHRlciBydWxlcyBhcHBsaWNhYmxlIHRvIGFuIGludGVyYWN0aXZlIHRyaWdnZXIuIEEgcnVsZSBXSVRIT1VUIGFuXG4gKiBleHBsaWNpdCBgdmFsaWRhdGVUcmlnZ2VyYCBmb2xsb3dzIHRoZSBmb3JtLWxldmVsIHRyaWdnZXI7IGEgcnVsZSBXSVRIIG9uZVxuICogcnVucyBvbiBleGFjdGx5IHRob3NlIHRyaWdnZXIocyksIHJlZ2FyZGxlc3Mgb2YgdGhlIGZvcm0tbGV2ZWwgc2V0dGluZy5cbiAqIFN1Ym1pdC10aW1lIHZhbGlkYXRpb24gYnlwYXNzZXMgdGhpcyBmaWx0ZXIgYW5kIHJ1bnMgZXZlcnkgcnVsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlclJ1bGVzQnlUcmlnZ2VyKHJ1bGVzLCB0cmlnZ2VyLCBmb3JtVHJpZ2dlcikge1xuICAgIHJldHVybiBydWxlcy5maWx0ZXIoKHJ1bGUpID0+IHtcbiAgICAgICAgY29uc3QgcnVsZVRyaWdnZXIgPSBydWxlLnZhbGlkYXRlVHJpZ2dlcjtcbiAgICAgICAgaWYgKCFydWxlVHJpZ2dlcilcbiAgICAgICAgICAgIHJldHVybiBmb3JtVHJpZ2dlciA9PT0gdHJpZ2dlcjtcbiAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkocnVsZVRyaWdnZXIpXG4gICAgICAgICAgICA/IHJ1bGVUcmlnZ2VyLmluY2x1ZGVzKHRyaWdnZXIpXG4gICAgICAgICAgICA6IHJ1bGVUcmlnZ2VyID09PSB0cmlnZ2VyO1xuICAgIH0pO1xufVxuLyoqXG4gKiBFdmFsdWF0ZSBldmVyeSBidWlsdC1pbiAobm9uLWB2YWxpZGF0b3JgKSBydWxlIGtpbmQgZm9yIGEgc2luZ2xlIHJ1bGUuXG4gKiBSZXR1cm5zIHRoZSBlcnJvciBtZXNzYWdlIGZvciB0aGUgZmlyc3QgZmFpbGluZyBjaGVjaywgb3IgbnVsbC5cbiAqL1xuZnVuY3Rpb24gY2hlY2tCdWlsdGluUnVsZXMocnVsZSwgdmFsdWUsIG5hbWUpIHtcbiAgICBpZiAocnVsZS5yZXF1aXJlZCAmJiBpc0VtcHR5VmFsdWUodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBydWxlLm1lc3NhZ2UgfHwgYCR7bmFtZX0gaXMgcmVxdWlyZWRgO1xuICAgIH1cbiAgICAvLyBtaW4vbWF4OiBzdHJpbmcg4oaSIGxlbmd0aCwgYXJyYXkg4oaSIGl0ZW0gY291bnQsIG51bWJlciDihpIgbnVtZXJpYyB2YWx1ZVxuICAgIGlmIChydWxlLm1pbiAhPT0gdW5kZWZpbmVkIHx8IHJ1bGUubWF4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbGV0IG1lYXN1cmVkID0gbnVsbDtcbiAgICAgICAgbGV0IHVuaXQgPSAnJztcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIG1lYXN1cmVkID0gdmFsdWUubGVuZ3RoO1xuICAgICAgICAgICAgdW5pdCA9ICcgY2hhcmFjdGVycyc7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIG1lYXN1cmVkID0gdmFsdWUubGVuZ3RoO1xuICAgICAgICAgICAgdW5pdCA9ICcgaXRlbXMnO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgJiYgIU51bWJlci5pc05hTih2YWx1ZSkpIHtcbiAgICAgICAgICAgIG1lYXN1cmVkID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1lYXN1cmVkICE9PSBudWxsKSB7XG4gICAgICAgICAgICBpZiAocnVsZS5taW4gIT09IHVuZGVmaW5lZCAmJiBtZWFzdXJlZCA8IHJ1bGUubWluKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJ1bGUubWVzc2FnZSB8fCBgJHtuYW1lfSBtdXN0IGJlIGF0IGxlYXN0ICR7cnVsZS5taW59JHt1bml0fWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocnVsZS5tYXggIT09IHVuZGVmaW5lZCAmJiBtZWFzdXJlZCA+IHJ1bGUubWF4KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJ1bGUubWVzc2FnZSB8fCBgJHtuYW1lfSBtdXN0IGJlIG5vIG1vcmUgdGhhbiAke3J1bGUubWF4fSR7dW5pdH1gO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChydWxlLnBhdHRlcm4gJiYgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiAhcnVsZS5wYXR0ZXJuLnRlc3QodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBydWxlLm1lc3NhZ2UgfHwgYCR7bmFtZX0gZm9ybWF0IGlzIGludmFsaWRgO1xuICAgIH1cbiAgICBpZiAocnVsZS5lbnVtICYmIEFycmF5LmlzQXJyYXkocnVsZS5lbnVtKSAmJiB2YWx1ZSkge1xuICAgICAgICBpZiAoIXJ1bGUuZW51bS5pbmNsdWRlcyh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBydWxlLm1lc3NhZ2UgfHwgYCR7bmFtZX0gbXVzdCBiZSBvbmUgb2YgJHtydWxlLmVudW0uam9pbignLCAnKX1gO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChydWxlLnR5cGUgPT09ICdudW1iZXInICYmIHZhbHVlICE9PSB1bmRlZmluZWQgJiYgdmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09ICcnKSB7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdudW1iZXInIHx8IGlzTmFOKHZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHJ1bGUubWVzc2FnZSB8fCBgJHtuYW1lfSBtdXN0IGJlIGEgbnVtYmVyYDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAocnVsZS50eXBlID09PSAnZW1haWwnICYmIHZhbHVlKSB7XG4gICAgICAgIGNvbnN0IGVtYWlsUGF0dGVybiA9IC9eW15cXHNAXStAW15cXHNAXStcXC5bXlxcc0BdKyQvO1xuICAgICAgICBpZiAoIWVtYWlsUGF0dGVybi50ZXN0KFN0cmluZyh2YWx1ZSkpKSB7XG4gICAgICAgICAgICByZXR1cm4gcnVsZS5tZXNzYWdlIHx8IGAke25hbWV9IG11c3QgYmUgYSB2YWxpZCBlbWFpbGA7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHJ1bGUudHlwZSA9PT0gJ3VybCcgJiYgdmFsdWUpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIG5ldyBVUkwoU3RyaW5nKHZhbHVlKSk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKF9hKSB7XG4gICAgICAgICAgICByZXR1cm4gcnVsZS5tZXNzYWdlIHx8IGAke25hbWV9IG11c3QgYmUgYSB2YWxpZCBVUkxgO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufVxuLyoqXG4gKiBTeW5jaHJvbm91cyBydWxlIHJ1bi4gQ3VzdG9tIHZhbGlkYXRvcnMgYXJlIGludm9rZWQgYnV0IE5PVCBhd2FpdGVkIOKAlCBhXG4gKiBwcm9taXNlLXJldHVybmluZyB2YWxpZGF0b3IgaXMgdHJlYXRlZCBhcyBmYWlsaW5nIChtYXRjaGVzIHRoZSBsZWdhY3kgc3luY1xuICogYHZhbGlkYXRlRmllbGRgIGJlaGF2aW91cikuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBydW5SdWxlc1N5bmMobmFtZSwgdmFsdWUsIHZhbHVlcywgcnVsZXMpIHtcbiAgICBsZXQgd2FybmluZyA9IG51bGw7XG4gICAgZm9yIChjb25zdCBydWxlIG9mIHJ1bGVzKSB7XG4gICAgICAgIGxldCBmYWlsdXJlID0gY2hlY2tCdWlsdGluUnVsZXMocnVsZSwgdmFsdWUsIG5hbWUpO1xuICAgICAgICBpZiAoZmFpbHVyZSA9PT0gbnVsbCAmJiB0eXBlb2YgcnVsZS52YWxpZGF0b3IgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gcnVsZS52YWxpZGF0b3IodmFsdWUsIHZhbHVlcyk7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCAhPT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICBmYWlsdXJlID0gdHlwZW9mIHJlc3VsdCA9PT0gJ3N0cmluZycgPyByZXN1bHQgOiAnVmFsaWRhdGlvbiBmYWlsZWQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICBmYWlsdXJlID0gZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6ICdWYWxpZGF0aW9uIGVycm9yJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoZmFpbHVyZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKHJ1bGUud2FybmluZ09ubHkpIHtcbiAgICAgICAgICAgICAgICB3YXJuaW5nID0gd2FybmluZyAhPT0gbnVsbCAmJiB3YXJuaW5nICE9PSB2b2lkIDAgPyB3YXJuaW5nIDogZmFpbHVyZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IGVycm9yOiBmYWlsdXJlLCB3YXJuaW5nIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHsgZXJyb3I6IG51bGwsIHdhcm5pbmcgfTtcbn1cbi8qKlxuICogQXN5bmNocm9ub3VzIHJ1bGUgcnVuLiBDdXN0b20gdmFsaWRhdG9ycyBhcmUgYXdhaXRlZCAoc3luYyBvciBhc3luYykuIEFcbiAqIHZhbGlkYXRvciByZXR1cm5pbmcgYHVuZGVmaW5lZGAgaXMgdHJlYXRlZCBhcyBwYXNzaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcnVuUnVsZXNBc3luYyhuYW1lLCB2YWx1ZSwgdmFsdWVzLCBydWxlcykge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGxldCB3YXJuaW5nID0gbnVsbDtcbiAgICAgICAgZm9yIChjb25zdCBydWxlIG9mIHJ1bGVzKSB7XG4gICAgICAgICAgICBsZXQgZmFpbHVyZSA9IGNoZWNrQnVpbHRpblJ1bGVzKHJ1bGUsIHZhbHVlLCBuYW1lKTtcbiAgICAgICAgICAgIGlmIChmYWlsdXJlID09PSBudWxsICYmIHR5cGVvZiBydWxlLnZhbGlkYXRvciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHlpZWxkIFByb21pc2UucmVzb2x2ZShydWxlLnZhbGlkYXRvcih2YWx1ZSwgdmFsdWVzKSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgIT09IHRydWUgJiYgcmVzdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZhaWx1cmUgPSB0eXBlb2YgcmVzdWx0ID09PSAnc3RyaW5nJyA/IHJlc3VsdCA6ICdWYWxpZGF0aW9uIGZhaWxlZCc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICBmYWlsdXJlID0gZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6ICdWYWxpZGF0aW9uIGVycm9yJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZmFpbHVyZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGlmIChydWxlLndhcm5pbmdPbmx5KSB7XG4gICAgICAgICAgICAgICAgICAgIHdhcm5pbmcgPSB3YXJuaW5nICE9PSBudWxsICYmIHdhcm5pbmcgIT09IHZvaWQgMCA/IHdhcm5pbmcgOiBmYWlsdXJlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgZXJyb3I6IGZhaWx1cmUsIHdhcm5pbmcgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgZXJyb3I6IG51bGwsIHdhcm5pbmcgfTtcbiAgICB9KTtcbn0iLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
241
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9jb3JlL3J1blJ1bGVzLmpzIiwiY29tcG9uZW50cy9Qcm9Gb3JtL3NyYy9jb21wb25lbnRzL1Byb0Zvcm0vY29yZS9ydW5SdWxlcy50cyJdLCJuYW1lcyI6WyJfX2F3YWl0ZXIiLCJ0aGlzQXJnIiwiX2FyZ3VtZW50cyIsIlAiLCJnZW5lcmF0b3IiLCJhZG9wdCIsInZhbHVlIiwicmVzb2x2ZSIsIlByb21pc2UiLCJyZWplY3QiLCJmdWxmaWxsZWQiLCJzdGVwIiwibmV4dCIsImUiLCJyZWplY3RlZCIsInJlc3VsdCIsImRvbmUiLCJ0aGVuIiwiYXBwbHkiLCJpc1RoZW5hYmxlIiwiX3R5cGVvZiIsImlzRW1wdHlWYWx1ZSIsInVuZGVmaW5lZCIsIkFycmF5IiwiaXNBcnJheSIsImxlbmd0aCIsImZpbHRlclJ1bGVzQnlUcmlnZ2VyIiwicnVsZXMiLCJ0cmlnZ2VyIiwiZm9ybVRyaWdnZXIiLCJmaWx0ZXIiLCJydWxlIiwicnVsZVRyaWdnZXIiLCJ2YWxpZGF0ZVRyaWdnZXIiLCJpbmNsdWRlcyIsImNoZWNrQnVpbHRpblJ1bGVzIiwibmFtZSIsInJlcXVpcmVkIiwibWVzc2FnZSIsImNvbmNhdCIsIm1pbiIsIm1heCIsIm1lYXN1cmVkIiwidW5pdCIsIk51bWJlciIsImlzTmFOIiwicGF0dGVybiIsInRlc3QiLCJqb2luIiwidHlwZSIsImVtYWlsUGF0dGVybiIsIlN0cmluZyIsIlVSTCIsIl9hIiwicnVuUnVsZXNTeW5jIiwidmFsdWVzIiwid2FybmluZyIsIl9pdGVyYXRvciIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiX3N0ZXAiLCJzIiwibiIsImZhaWx1cmUiLCJ2YWxpZGF0b3IiLCJlcnIiLCJFcnJvciIsIndhcm5pbmdPbmx5IiwiZXJyb3IiLCJmIiwicnVuUnVsZXNBc3luYyIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsIl9pdGVyYXRvcjIiLCJfc3RlcDIiLCJfdCIsIl90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O0lBQUEsR0FBQVgsT0FBQTtFQUFBLENBQ2hDLEVBQUE7QURsQ0QiLCJmaWxlIjoiY29tcG9uZW50cy9Qcm9Gb3JtL2NvcmUvcnVuUnVsZXMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbmZ1bmN0aW9uIGlzVGhlbmFibGUodmFsdWUpIHtcbiAgICByZXR1cm4gKHZhbHVlICE9PSBudWxsICYmXG4gICAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgdHlwZW9mIHZhbHVlLnRoZW4gPT09ICdmdW5jdGlvbicpO1xufVxuLyoqIEVtcHR5IGZvciBgcmVxdWlyZWRgOiB1bmRlZmluZWQgLyBudWxsIC8gJycgLyBlbXB0eSBhcnJheS4gKi9cbmZ1bmN0aW9uIGlzRW1wdHlWYWx1ZSh2YWx1ZSkge1xuICAgIHJldHVybiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICB2YWx1ZSA9PT0gbnVsbCB8fFxuICAgICAgICB2YWx1ZSA9PT0gJycgfHxcbiAgICAgICAgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA9PT0gMCkpO1xufVxuLyoqXG4gKiBGaWx0ZXIgcnVsZXMgYXBwbGljYWJsZSB0byBhbiBpbnRlcmFjdGl2ZSB0cmlnZ2VyLiBBIHJ1bGUgV0lUSE9VVCBhblxuICogZXhwbGljaXQgYHZhbGlkYXRlVHJpZ2dlcmAgZm9sbG93cyB0aGUgZm9ybS1sZXZlbCB0cmlnZ2VyOyBhIHJ1bGUgV0lUSCBvbmVcbiAqIHJ1bnMgb24gZXhhY3RseSB0aG9zZSB0cmlnZ2VyKHMpLCByZWdhcmRsZXNzIG9mIHRoZSBmb3JtLWxldmVsIHNldHRpbmcuXG4gKiBTdWJtaXQtdGltZSB2YWxpZGF0aW9uIGJ5cGFzc2VzIHRoaXMgZmlsdGVyIGFuZCBydW5zIGV2ZXJ5IHJ1bGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJSdWxlc0J5VHJpZ2dlcihydWxlcywgdHJpZ2dlciwgZm9ybVRyaWdnZXIpIHtcbiAgICByZXR1cm4gcnVsZXMuZmlsdGVyKChydWxlKSA9PiB7XG4gICAgICAgIGNvbnN0IHJ1bGVUcmlnZ2VyID0gcnVsZS52YWxpZGF0ZVRyaWdnZXI7XG4gICAgICAgIGlmICghcnVsZVRyaWdnZXIpXG4gICAgICAgICAgICByZXR1cm4gZm9ybVRyaWdnZXIgPT09IHRyaWdnZXI7XG4gICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHJ1bGVUcmlnZ2VyKVxuICAgICAgICAgICAgPyBydWxlVHJpZ2dlci5pbmNsdWRlcyh0cmlnZ2VyKVxuICAgICAgICAgICAgOiBydWxlVHJpZ2dlciA9PT0gdHJpZ2dlcjtcbiAgICB9KTtcbn1cbi8qKlxuICogRXZhbHVhdGUgZXZlcnkgYnVpbHQtaW4gKG5vbi1gdmFsaWRhdG9yYCkgcnVsZSBraW5kIGZvciBhIHNpbmdsZSBydWxlLlxuICogUmV0dXJucyB0aGUgZXJyb3IgbWVzc2FnZSBmb3IgdGhlIGZpcnN0IGZhaWxpbmcgY2hlY2ssIG9yIG51bGwuXG4gKi9cbmZ1bmN0aW9uIGNoZWNrQnVpbHRpblJ1bGVzKHJ1bGUsIHZhbHVlLCBuYW1lKSB7XG4gICAgaWYgKHJ1bGUucmVxdWlyZWQgJiYgaXNFbXB0eVZhbHVlKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gcnVsZS5tZXNzYWdlIHx8IGAke25hbWV9IGlzIHJlcXVpcmVkYDtcbiAgICB9XG4gICAgLy8gbWluL21heDogc3RyaW5nIOKGkiBsZW5ndGgsIGFycmF5IOKGkiBpdGVtIGNvdW50LCBudW1iZXIg4oaSIG51bWVyaWMgdmFsdWVcbiAgICBpZiAocnVsZS5taW4gIT09IHVuZGVmaW5lZCB8fCBydWxlLm1heCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGxldCBtZWFzdXJlZCA9IG51bGw7XG4gICAgICAgIGxldCB1bml0ID0gJyc7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBtZWFzdXJlZCA9IHZhbHVlLmxlbmd0aDtcbiAgICAgICAgICAgIHVuaXQgPSAnIGNoYXJhY3RlcnMnO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICBtZWFzdXJlZCA9IHZhbHVlLmxlbmd0aDtcbiAgICAgICAgICAgIHVuaXQgPSAnIGl0ZW1zJztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInICYmICFOdW1iZXIuaXNOYU4odmFsdWUpKSB7XG4gICAgICAgICAgICBtZWFzdXJlZCA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtZWFzdXJlZCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKHJ1bGUubWluICE9PSB1bmRlZmluZWQgJiYgbWVhc3VyZWQgPCBydWxlLm1pbikge1xuICAgICAgICAgICAgICAgIHJldHVybiBydWxlLm1lc3NhZ2UgfHwgYCR7bmFtZX0gbXVzdCBiZSBhdCBsZWFzdCAke3J1bGUubWlufSR7dW5pdH1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHJ1bGUubWF4ICE9PSB1bmRlZmluZWQgJiYgbWVhc3VyZWQgPiBydWxlLm1heCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBydWxlLm1lc3NhZ2UgfHwgYCR7bmFtZX0gbXVzdCBiZSBubyBtb3JlIHRoYW4gJHtydWxlLm1heH0ke3VuaXR9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAocnVsZS5wYXR0ZXJuICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgIXJ1bGUucGF0dGVybi50ZXN0KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gcnVsZS5tZXNzYWdlIHx8IGAke25hbWV9IGZvcm1hdCBpcyBpbnZhbGlkYDtcbiAgICB9XG4gICAgaWYgKHJ1bGUuZW51bSAmJiBBcnJheS5pc0FycmF5KHJ1bGUuZW51bSkgJiYgdmFsdWUpIHtcbiAgICAgICAgaWYgKCFydWxlLmVudW0uaW5jbHVkZXModmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gcnVsZS5tZXNzYWdlIHx8IGAke25hbWV9IG11c3QgYmUgb25lIG9mICR7cnVsZS5lbnVtLmpvaW4oJywgJyl9YDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAocnVsZS50eXBlID09PSAnbnVtYmVyJyAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSAnJykge1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnbnVtYmVyJyB8fCBpc05hTih2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBydWxlLm1lc3NhZ2UgfHwgYCR7bmFtZX0gbXVzdCBiZSBhIG51bWJlcmA7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHJ1bGUudHlwZSA9PT0gJ2VtYWlsJyAmJiB2YWx1ZSkge1xuICAgICAgICBjb25zdCBlbWFpbFBhdHRlcm4gPSAvXlteXFxzQF0rQFteXFxzQF0rXFwuW15cXHNAXSskLztcbiAgICAgICAgaWYgKCFlbWFpbFBhdHRlcm4udGVzdChTdHJpbmcodmFsdWUpKSkge1xuICAgICAgICAgICAgcmV0dXJuIHJ1bGUubWVzc2FnZSB8fCBgJHtuYW1lfSBtdXN0IGJlIGEgdmFsaWQgZW1haWxgO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChydWxlLnR5cGUgPT09ICd1cmwnICYmIHZhbHVlKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBuZXcgVVJMKFN0cmluZyh2YWx1ZSkpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChfYSkge1xuICAgICAgICAgICAgcmV0dXJuIHJ1bGUubWVzc2FnZSB8fCBgJHtuYW1lfSBtdXN0IGJlIGEgdmFsaWQgVVJMYDtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn1cbi8qKlxuICogU3luY2hyb25vdXMgcnVsZSBydW4uIEEgUHJvbWlzZS1yZXR1cm5pbmcgdmFsaWRhdG9yIENBTk5PVCBiZSBldmFsdWF0ZWRcbiAqIGhlcmUg4oCUIGl0IGlzIGRlZmVycmVkICh0cmVhdGVkIGFzIHBhc3NpbmcgZm9yIHRoaXMgcnVuOyBpdHMgcmVqZWN0aW9uIGlzXG4gKiBzd2FsbG93ZWQpIGFuZCBsZWZ0IHRvIHRoZSBhc3luYyBydW5zIChibHVyL3N1Ym1pdCksIHdoaWNoIGFsd2F5cyBhd2FpdCBpdC5cbiAqIEZhaWxpbmcgaXQgaW5zdGVhZCB3b3VsZCBtaXMtcmVwb3J0IFwiVmFsaWRhdGlvbiBmYWlsZWRcIiBvbiBldmVyeSBrZXlzdHJva2VcbiAqIGZvciBwZXJmZWN0bHkgdmFsaWQgaW5wdXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBydW5SdWxlc1N5bmMobmFtZSwgdmFsdWUsIHZhbHVlcywgcnVsZXMpIHtcbiAgICBsZXQgd2FybmluZyA9IG51bGw7XG4gICAgZm9yIChjb25zdCBydWxlIG9mIHJ1bGVzKSB7XG4gICAgICAgIGxldCBmYWlsdXJlID0gY2hlY2tCdWlsdGluUnVsZXMocnVsZSwgdmFsdWUsIG5hbWUpO1xuICAgICAgICBpZiAoZmFpbHVyZSA9PT0gbnVsbCAmJiB0eXBlb2YgcnVsZS52YWxpZGF0b3IgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gcnVsZS52YWxpZGF0b3IodmFsdWUsIHZhbHVlcyk7XG4gICAgICAgICAgICAgICAgaWYgKGlzVGhlbmFibGUocmVzdWx0KSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQudGhlbih1bmRlZmluZWQsICgpID0+IHsgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJlc3VsdCAhPT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICBmYWlsdXJlID0gdHlwZW9mIHJlc3VsdCA9PT0gJ3N0cmluZycgPyByZXN1bHQgOiAnVmFsaWRhdGlvbiBmYWlsZWQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICBmYWlsdXJlID0gZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6ICdWYWxpZGF0aW9uIGVycm9yJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoZmFpbHVyZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKHJ1bGUud2FybmluZ09ubHkpIHtcbiAgICAgICAgICAgICAgICB3YXJuaW5nID0gd2FybmluZyAhPT0gbnVsbCAmJiB3YXJuaW5nICE9PSB2b2lkIDAgPyB3YXJuaW5nIDogZmFpbHVyZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IGVycm9yOiBmYWlsdXJlLCB3YXJuaW5nIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHsgZXJyb3I6IG51bGwsIHdhcm5pbmcgfTtcbn1cbi8qKlxuICogQXN5bmNocm9ub3VzIHJ1bGUgcnVuLiBDdXN0b20gdmFsaWRhdG9ycyBhcmUgYXdhaXRlZCAoc3luYyBvciBhc3luYykuIEFcbiAqIHZhbGlkYXRvciByZXR1cm5pbmcgYHVuZGVmaW5lZGAgaXMgdHJlYXRlZCBhcyBwYXNzaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcnVuUnVsZXNBc3luYyhuYW1lLCB2YWx1ZSwgdmFsdWVzLCBydWxlcykge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGxldCB3YXJuaW5nID0gbnVsbDtcbiAgICAgICAgZm9yIChjb25zdCBydWxlIG9mIHJ1bGVzKSB7XG4gICAgICAgICAgICBsZXQgZmFpbHVyZSA9IGNoZWNrQnVpbHRpblJ1bGVzKHJ1bGUsIHZhbHVlLCBuYW1lKTtcbiAgICAgICAgICAgIGlmIChmYWlsdXJlID09PSBudWxsICYmIHR5cGVvZiBydWxlLnZhbGlkYXRvciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHlpZWxkIFByb21pc2UucmVzb2x2ZShydWxlLnZhbGlkYXRvcih2YWx1ZSwgdmFsdWVzKSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgIT09IHRydWUgJiYgcmVzdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZhaWx1cmUgPSB0eXBlb2YgcmVzdWx0ID09PSAnc3RyaW5nJyA/IHJlc3VsdCA6ICdWYWxpZGF0aW9uIGZhaWxlZCc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICBmYWlsdXJlID0gZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6ICdWYWxpZGF0aW9uIGVycm9yJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZmFpbHVyZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGlmIChydWxlLndhcm5pbmdPbmx5KSB7XG4gICAgICAgICAgICAgICAgICAgIHdhcm5pbmcgPSB3YXJuaW5nICE9PSBudWxsICYmIHdhcm5pbmcgIT09IHZvaWQgMCA/IHdhcm5pbmcgOiBmYWlsdXJlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgZXJyb3I6IGZhaWx1cmUsIHdhcm5pbmcgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgZXJyb3I6IG51bGwsIHdhcm5pbmcgfTtcbiAgICB9KTtcbn0iLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
@@ -22,8 +22,8 @@ export interface UseFormItemReturn {
22
22
  requiredMark: boolean;
23
23
  /**
24
24
  * Clone a form-component child injecting value/onChange/onBlur/status.
25
- * Form `size` is intentionally NOT injected it only controls item spacing;
26
- * control sizes are set per-field. Non-form children pass through unchanged.
25
+ * Form `size` cascades into size-aware controls as a default an explicit
26
+ * field-level `size` wins. Non-form children pass through unchanged.
27
27
  */
28
28
  injectField: (child: ReactNode) => ReactNode;
29
29
  }