@1money/component-ui 0.0.71 → 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 (103) hide show
  1. package/es/components/ProForm/ProForm.d.ts +10 -2
  2. package/es/components/ProForm/ProForm.js +241 -55
  3. package/es/components/ProForm/ProFormDependency.d.ts +11 -2
  4. package/es/components/ProForm/ProFormDependency.js +29 -133
  5. package/es/components/ProForm/ProFormItem.js +146 -52
  6. package/es/components/ProForm/ProFormList.js +114 -62
  7. package/es/components/ProForm/SchemaForm.d.ts +7 -0
  8. package/es/components/ProForm/SchemaForm.js +103 -0
  9. package/es/components/ProForm/Submitter.js +26 -5
  10. package/es/components/ProForm/context.d.ts +30 -3
  11. package/es/components/ProForm/context.js +69 -10
  12. package/es/components/ProForm/core/constants.d.ts +12 -3
  13. package/es/components/ProForm/core/constants.js +18 -7
  14. package/es/components/ProForm/core/formStore.d.ts +24 -0
  15. package/es/components/ProForm/core/formStore.js +101 -0
  16. package/es/components/ProForm/core/hooks/useForm.d.ts +4 -1
  17. package/es/components/ProForm/core/hooks/useForm.js +336 -212
  18. package/es/components/ProForm/core/hooks/useFormCore.d.ts +5 -1
  19. package/es/components/ProForm/core/hooks/useFormCore.js +151 -93
  20. package/es/components/ProForm/core/interface.d.ts +33 -12
  21. package/es/components/ProForm/core/runRules.d.ts +20 -8
  22. package/es/components/ProForm/core/runRules.js +105 -50
  23. package/es/components/ProForm/core/useFormItem.d.ts +10 -1
  24. package/es/components/ProForm/core/useFormItem.js +141 -56
  25. package/es/components/ProForm/fields/ProFormDatePicker.js +4 -1
  26. package/es/components/ProForm/fields/ProFormFieldSet.js +20 -7
  27. package/es/components/ProForm/fields/createProFormField.js +61 -32
  28. package/es/components/ProForm/hooks/useFieldRequest.d.ts +6 -1
  29. package/es/components/ProForm/hooks/useFieldRequest.js +54 -9
  30. package/es/components/ProForm/hooks/useUrlSync.d.ts +16 -0
  31. package/es/components/ProForm/hooks/useUrlSync.js +170 -0
  32. package/es/components/ProForm/index.d.ts +12 -5
  33. package/es/components/ProForm/index.js +7 -2
  34. package/es/components/ProForm/interface.d.ts +185 -28
  35. package/es/components/ProForm/layouts/DialogForm.d.ts +5 -1
  36. package/es/components/ProForm/layouts/DialogForm.js +18 -7
  37. package/es/components/ProForm/layouts/DrawerForm.d.ts +5 -1
  38. package/es/components/ProForm/layouts/DrawerForm.js +17 -7
  39. package/es/components/ProForm/layouts/QueryFilter.d.ts +5 -2
  40. package/es/components/ProForm/layouts/QueryFilter.js +47 -71
  41. package/es/components/ProForm/layouts/useOverlayForm.d.ts +2 -2
  42. package/es/components/ProForm/layouts/useOverlayForm.js +27 -8
  43. package/es/components/ProForm/style/ProForm.css +4 -4
  44. package/es/components/ProForm/utils.d.ts +12 -1
  45. package/es/components/ProForm/utils.js +101 -28
  46. package/es/components/ProTable/ProTable.js +3 -3
  47. package/es/components/Tooltip/style/Tooltip.css +1 -0
  48. package/es/index.css +1 -1
  49. package/es/index.d.ts +2 -2
  50. package/es/index.js +2 -2
  51. package/lib/components/ProForm/ProForm.d.ts +10 -2
  52. package/lib/components/ProForm/ProForm.js +239 -53
  53. package/lib/components/ProForm/ProFormDependency.d.ts +11 -2
  54. package/lib/components/ProForm/ProFormDependency.js +30 -135
  55. package/lib/components/ProForm/ProFormItem.js +143 -48
  56. package/lib/components/ProForm/ProFormList.js +112 -60
  57. package/lib/components/ProForm/SchemaForm.d.ts +7 -0
  58. package/lib/components/ProForm/SchemaForm.js +110 -0
  59. package/lib/components/ProForm/Submitter.js +26 -5
  60. package/lib/components/ProForm/context.d.ts +30 -3
  61. package/lib/components/ProForm/context.js +69 -10
  62. package/lib/components/ProForm/core/constants.d.ts +12 -3
  63. package/lib/components/ProForm/core/constants.js +19 -8
  64. package/lib/components/ProForm/core/formStore.d.ts +24 -0
  65. package/lib/components/ProForm/core/formStore.js +110 -0
  66. package/lib/components/ProForm/core/hooks/useForm.d.ts +4 -1
  67. package/lib/components/ProForm/core/hooks/useForm.js +336 -212
  68. package/lib/components/ProForm/core/hooks/useFormCore.d.ts +5 -1
  69. package/lib/components/ProForm/core/hooks/useFormCore.js +150 -92
  70. package/lib/components/ProForm/core/interface.d.ts +33 -12
  71. package/lib/components/ProForm/core/runRules.d.ts +20 -8
  72. package/lib/components/ProForm/core/runRules.js +106 -50
  73. package/lib/components/ProForm/core/useFormItem.d.ts +10 -1
  74. package/lib/components/ProForm/core/useFormItem.js +138 -53
  75. package/lib/components/ProForm/fields/ProFormDatePicker.js +4 -1
  76. package/lib/components/ProForm/fields/ProFormFieldSet.js +19 -6
  77. package/lib/components/ProForm/fields/createProFormField.js +61 -32
  78. package/lib/components/ProForm/hooks/useFieldRequest.d.ts +6 -1
  79. package/lib/components/ProForm/hooks/useFieldRequest.js +53 -8
  80. package/lib/components/ProForm/hooks/useUrlSync.d.ts +16 -0
  81. package/lib/components/ProForm/hooks/useUrlSync.js +178 -0
  82. package/lib/components/ProForm/index.d.ts +12 -5
  83. package/lib/components/ProForm/index.js +16 -1
  84. package/lib/components/ProForm/interface.d.ts +185 -28
  85. package/lib/components/ProForm/layouts/DialogForm.d.ts +5 -1
  86. package/lib/components/ProForm/layouts/DialogForm.js +18 -7
  87. package/lib/components/ProForm/layouts/DrawerForm.d.ts +5 -1
  88. package/lib/components/ProForm/layouts/DrawerForm.js +17 -7
  89. package/lib/components/ProForm/layouts/QueryFilter.d.ts +5 -2
  90. package/lib/components/ProForm/layouts/QueryFilter.js +46 -70
  91. package/lib/components/ProForm/layouts/useOverlayForm.d.ts +2 -2
  92. package/lib/components/ProForm/layouts/useOverlayForm.js +30 -8
  93. package/lib/components/ProForm/style/ProForm.css +4 -4
  94. package/lib/components/ProForm/utils.d.ts +12 -1
  95. package/lib/components/ProForm/utils.js +104 -28
  96. package/lib/components/ProTable/ProTable.js +3 -3
  97. package/lib/components/Tooltip/style/Tooltip.css +1 -0
  98. package/lib/index.css +1 -1
  99. package/lib/index.d.ts +2 -2
  100. package/lib/index.js +13 -1
  101. package/package.json +1 -1
  102. package/scripts/mcp-server/examples.generated.json +90 -0
  103. package/scripts/mcp-server/index.generated.json +1866 -212
@@ -1,3 +1,5 @@
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
+ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
1
3
  import _typeof from "@babel/runtime/helpers/esm/typeof";
2
4
  import _regeneratorRuntime from "@babel/runtime/regenerator";
3
5
  var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {
@@ -27,14 +29,32 @@ var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, gene
27
29
  step((generator = generator.apply(thisArg, _arguments || [])).next());
28
30
  });
29
31
  };
30
- import React, { useEffect } from 'react';
32
+ import React, { useEffect, useRef } from 'react';
31
33
  import useEventCallback from '@1money/hooks/useEventCallback';
32
- import { useProFormContext } from '../context';
34
+ import useDebouncedCallback from '@1money/hooks/useDebouncedCallback';
35
+ import { useProFormStable, useProFormStore } from '../context';
36
+ import { useStoreSelector, shallowEqualArrays } from './formStore';
33
37
  import { getNestedValue } from './pathUtils';
34
- import { FORM_COMPONENT_NAMES, TEXT_LIKE_COMPONENT_NAMES } from './constants';
35
- /** Normalise a change-handler argument: unwrap `e.target.value`, else pass the value through. */
38
+ import { filterRulesByTrigger } from './runRules';
39
+ import { FORM_COMPONENT_NAMES, SIZE_AWARE_COMPONENT_NAMES, TEXT_LIKE_COMPONENT_NAMES } from './constants';
40
+ /**
41
+ * Normalise a change-handler argument: unwrap `e.target[valuePropName]` /
42
+ * `e[valuePropName]` (e.g. Checkbox emits `{ checked }`), else `e.target.value`,
43
+ * else pass the value through (e.g. Switch emits the boolean directly).
44
+ */
36
45
  function extractEventValue(e) {
37
- return e && _typeof(e) === 'object' && 'target' in e ? e.target.value : e;
46
+ var valuePropName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'value';
47
+ if (e === null || _typeof(e) !== 'object') return e;
48
+ var event = e;
49
+ if (valuePropName !== 'value' && valuePropName in event) {
50
+ return event[valuePropName];
51
+ }
52
+ if ('target' in event && event.target && _typeof(event.target) === 'object') {
53
+ var target = event.target;
54
+ if (valuePropName in target) return target[valuePropName];
55
+ if ('value' in target) return target.value;
56
+ }
57
+ return e;
38
58
  }
39
59
  export function useFormItem(options) {
40
60
  var _this = this;
@@ -42,60 +62,134 @@ export function useFormItem(options) {
42
62
  _options$rules = options.rules,
43
63
  rules = _options$rules === void 0 ? [] : _options$rules,
44
64
  required = options.required,
45
- validateStatus = options.validateStatus;
46
- var ctx = useProFormContext();
47
- var values = ctx.values,
48
- errors = ctx.errors,
49
- validating = ctx.validating,
50
- setFieldValue = ctx.setFieldValue,
51
- validateField = ctx.validateField,
52
- validateFieldAsync = ctx.validateFieldAsync,
53
- registerField = ctx.registerField,
54
- unregisterField = ctx.unregisterField,
55
- size = ctx.size,
56
- labelAlign = ctx.labelAlign,
57
- requiredMark = ctx.requiredMark,
58
- validateTrigger = ctx.validateTrigger;
65
+ validateStatus = options.validateStatus,
66
+ _options$valuePropNam = options.valuePropName,
67
+ valuePropName = _options$valuePropNam === void 0 ? 'value' : _options$valuePropNam,
68
+ validateDebounce = options.validateDebounce;
69
+ var _useProFormStable = useProFormStable(),
70
+ setFieldValue = _useProFormStable.setFieldValue,
71
+ validateField = _useProFormStable.validateField,
72
+ validateFieldAsync = _useProFormStable.validateFieldAsync,
73
+ registerField = _useProFormStable.registerField,
74
+ unregisterField = _useProFormStable.unregisterField,
75
+ size = _useProFormStable.size,
76
+ labelAlign = _useProFormStable.labelAlign,
77
+ requiredMark = _useProFormStable.requiredMark,
78
+ validateTrigger = _useProFormStable.validateTrigger,
79
+ formDisabled = _useProFormStable.disabled;
80
+ var store = useProFormStore();
59
81
  var isRequired = Boolean(required || rules.some(function (rule) {
60
82
  return rule.required;
61
83
  }));
62
- var fieldValue = name ? name.includes('.') ? getNestedValue(values, name) : values[name] : undefined;
63
- var fieldError = name ? name.includes('.') ? getNestedValue(errors, name) : errors[name] : undefined;
64
- var fieldValidating = name ? validating[name] || false : false;
65
- var finalStatus = validateStatus || (fieldError ? 'error' : undefined);
66
- var runValidate = useEventCallback(function (value) {
67
- if (name && rules.length > 0) return validateField(name, rules, value);
68
- return true;
84
+ // Per-field store subscription: this item re-renders ONLY when its own
85
+ // value/error/warning/validating slice changes typing in a sibling field
86
+ // produces an equal tuple and the selector short-circuits.
87
+ // Errors/warnings are stored FLAT, keyed by the full (possibly dotted) field
88
+ // name never resolve them as nested paths or dotted names would miss.
89
+ var _useStoreSelector = useStoreSelector(store, function (state) {
90
+ return [name ? name.includes('.') ? getNestedValue(state.values, name) : state.values[name] : undefined, name ? state.errors[name] : undefined, name ? state.warnings[name] : undefined, name ? state.validating[name] || false : false];
91
+ }, shallowEqualArrays),
92
+ _useStoreSelector2 = _slicedToArray(_useStoreSelector, 4),
93
+ fieldValue = _useStoreSelector2[0],
94
+ fieldError = _useStoreSelector2[1],
95
+ fieldWarning = _useStoreSelector2[2],
96
+ fieldValidating = _useStoreSelector2[3];
97
+ var finalStatus = validateStatus || (fieldError ? 'error' : fieldWarning ? 'warning' : undefined);
98
+ // Run only the rules applicable to the given interactive trigger; rules
99
+ // without an explicit validateTrigger follow the form-level setting.
100
+ var runValidate = useEventCallback(function (value, trigger) {
101
+ if (!name || rules.length === 0) return true;
102
+ var applicable = filterRulesByTrigger(rules, trigger, validateTrigger);
103
+ if (applicable.length === 0) return true;
104
+ return validateField(name, applicable, value);
69
105
  });
70
- var runValidateAsync = useEventCallback(function (value) {
106
+ var runValidateAsync = useEventCallback(function (value, trigger) {
71
107
  return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
108
+ var applicable;
72
109
  return _regeneratorRuntime.wrap(function (_context) {
73
110
  while (1) switch (_context.prev = _context.next) {
74
111
  case 0:
75
- if (!(name && rules.length > 0)) {
112
+ if (!(!name || rules.length === 0)) {
76
113
  _context.next = 1;
77
114
  break;
78
115
  }
79
- _context.next = 1;
80
- return validateFieldAsync(name, value, rules);
116
+ return _context.abrupt("return");
81
117
  case 1:
118
+ applicable = filterRulesByTrigger(rules, trigger, validateTrigger);
119
+ if (!(applicable.length === 0)) {
120
+ _context.next = 2;
121
+ break;
122
+ }
123
+ return _context.abrupt("return");
124
+ case 2:
125
+ _context.next = 3;
126
+ return validateFieldAsync(name, value, applicable);
127
+ case 3:
82
128
  case "end":
83
129
  return _context.stop();
84
130
  }
85
131
  }, _callee);
86
132
  }));
87
133
  });
134
+ var _useDebouncedCallback = useDebouncedCallback(function (value) {
135
+ runValidate(value, 'onChange');
136
+ }, validateDebounce),
137
+ debouncedValidate = _useDebouncedCallback.run;
88
138
  var handleChange = useEventCallback(function (value) {
89
139
  if (name) {
90
140
  setFieldValue(name, value);
91
- if (validateTrigger === 'onChange') runValidate(value);
141
+ // touched is set by the user change trigger —
142
+ // programmatic setFieldsValue does not mark fields touched.
143
+ var touched = store.getState().touched;
144
+ if (!touched[name]) {
145
+ store.setState({
146
+ touched: Object.assign(Object.assign({}, touched), _defineProperty({}, name, true))
147
+ });
148
+ }
149
+ if (validateDebounce && validateDebounce > 0) {
150
+ debouncedValidate(value);
151
+ } else {
152
+ runValidate(value, 'onChange');
153
+ }
92
154
  }
93
155
  });
94
156
  var handleBlur = useEventCallback(function () {
95
- if (validateTrigger === 'onBlur') runValidateAsync(fieldValue);
157
+ // Read the LIVE value from the store — a change committed in the same
158
+ // tick (change → immediate blur) must be validated, not the render-time
159
+ // snapshot.
160
+ var currentValue = name ? name.includes('.') ? getNestedValue(store.getState().values, name) : store.getState().values[name] : undefined;
161
+ runValidateAsync(currentValue, 'onBlur');
162
+ });
163
+ // Latest child-provided callbacks, captured at injectField time. The STABLE
164
+ // injected handlers below delegate through this ref instead of being
165
+ // recreated per render — so a memoized field component sees shallow-equal
166
+ // props across renders and can bail out while another field is typing.
167
+ var childCallbacksRef = useRef({});
168
+ var injectedOnChange = useEventCallback(function (e) {
169
+ var _b2;
170
+ var _a, _b;
171
+ handleChange(extractEventValue(e, valuePropName));
172
+ for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
173
+ args[_key - 1] = arguments[_key];
174
+ }
175
+ (_b = (_a = childCallbacksRef.current).onChange) === null || _b === void 0 ? void 0 : (_b2 = _b).call.apply(_b2, [_a, e].concat(args));
96
176
  });
177
+ var injectedOnBlur = useEventCallback(function () {
178
+ var _b3;
179
+ var _a, _b;
180
+ handleBlur();
181
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
182
+ args[_key2] = arguments[_key2];
183
+ }
184
+ (_b = (_a = childCallbacksRef.current).onBlur) === null || _b === void 0 ? void 0 : (_b3 = _b).call.apply(_b3, [_a].concat(args));
185
+ });
186
+ // Keep the registry in sync with the LATEST rules every render (registration
187
+ // is a cheap ref mutation): dynamic rules (e.g. required toggled by another
188
+ // field) must be visible to submit-time validation, not just onChange.
97
189
  useEffect(function () {
98
190
  if (name && registerField) registerField(name, rules);
191
+ });
192
+ useEffect(function () {
99
193
  return function () {
100
194
  if (name && unregisterField) unregisterField(name);
101
195
  };
@@ -105,44 +199,35 @@ export function useFormItem(options) {
105
199
  if (!name || ! /*#__PURE__*/React.isValidElement(child)) return child;
106
200
  var childProps = child.props;
107
201
  var displayName = (_a = child.type) === null || _a === void 0 ? void 0 : _a.displayName;
108
- var isFormComponent = FORM_COMPONENT_NAMES.includes(displayName) || childProps.placeholder !== undefined || childProps.value !== undefined;
202
+ var isFormComponent = FORM_COMPONENT_NAMES.includes(displayName) || childProps.placeholder !== undefined || childProps.value !== undefined || childProps[valuePropName] !== undefined;
109
203
  if (!isFormComponent) return child;
110
204
  var safeValue = fieldValue;
111
205
  if (safeValue === null || safeValue === undefined) {
112
- if (TEXT_LIKE_COMPONENT_NAMES.includes(displayName || '') || childProps.placeholder !== undefined) {
113
- safeValue = '';
114
- } else if (['Checkbox', 'Switch'].includes(displayName || '')) {
206
+ if (valuePropName === 'checked' || ['Checkbox', 'Switch'].includes(displayName || '')) {
115
207
  safeValue = false;
208
+ } else if (TEXT_LIKE_COMPONENT_NAMES.includes(displayName || '') || childProps.placeholder !== undefined) {
209
+ safeValue = '';
116
210
  }
117
211
  } else if (TEXT_LIKE_COMPONENT_NAMES.includes(displayName || '') && typeof safeValue !== 'string' && typeof safeValue !== 'number') {
118
212
  safeValue = '';
119
213
  }
120
- var injectedProps = Object.assign({
121
- value: safeValue,
122
- onChange: function onChange(e) {
123
- handleChange(extractEventValue(e));
124
- if (typeof childProps.onChange === 'function') {
125
- for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
126
- args[_key - 1] = arguments[_key];
127
- }
128
- childProps.onChange.apply(childProps, [e].concat(args));
129
- }
130
- },
131
- onBlur: function onBlur() {
132
- handleBlur();
133
- if (typeof childProps.onBlur === 'function') {
134
- childProps.onBlur.apply(childProps, arguments);
135
- }
136
- },
137
- size: childProps.size || size
138
- }, finalStatus === 'error' && {
214
+ childCallbacksRef.current = {
215
+ onChange: typeof childProps.onChange === 'function' ? childProps.onChange : undefined,
216
+ onBlur: typeof childProps.onBlur === 'function' ? childProps.onBlur : undefined
217
+ };
218
+ var injectedProps = Object.assign(Object.assign(Object.assign(_defineProperty(_defineProperty(_defineProperty({}, valuePropName, safeValue), "onChange", injectedOnChange), "onBlur", injectedOnBlur), finalStatus === 'error' && {
139
219
  status: 'error'
220
+ }), formDisabled && childProps.disabled === undefined && {
221
+ disabled: true
222
+ }), SIZE_AWARE_COMPONENT_NAMES.includes(displayName || '') && childProps.size === undefined && {
223
+ size: size
140
224
  });
141
225
  return /*#__PURE__*/React.cloneElement(child, injectedProps);
142
226
  };
143
227
  return {
144
228
  fieldValue: fieldValue,
145
229
  fieldError: fieldError,
230
+ fieldWarning: fieldWarning,
146
231
  fieldValidating: fieldValidating,
147
232
  validateStatus: finalStatus,
148
233
  isRequired: isRequired,
@@ -152,4 +237,4 @@ export function useFormItem(options) {
152
237
  injectField: injectField
153
238
  };
154
239
  }
155
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9jb3JlL3VzZUZvcm1JdGVtLmpzIiwiY29tcG9uZW50cy9Qcm9Gb3JtL3NyYy9jb21wb25lbnRzL1Byb0Zvcm0vY29yZS91c2VGb3JtSXRlbS50cyJdLCJuYW1lcyI6WyJfX2F3YWl0ZXIiLCJ0aGlzQXJnIiwiX2FyZ3VtZW50cyIsIlAiLCJnZW5lcmF0b3IiLCJhZG9wdCIsInZhbHVlIiwicmVzb2x2ZSIsIlByb21pc2UiLCJyZWplY3QiLCJmdWxmaWxsZWQiLCJzdGVwIiwibmV4dCIsImUiLCJyZWplY3RlZCIsInJlc3VsdCIsImRvbmUiLCJ0aGVuIiwiYXBwbHkiLCJSZWFjdCIsInVzZUVmZmVjdCIsInVzZUV2ZW50Q2FsbGJhY2siLCJ1c2VQcm9Gb3JtQ29udGV4dCIsImdldE5lc3RlZFZhbHVlIiwiRk9STV9DT01QT05FTlRfTkFNRVMiLCJURVhUX0xJS0VfQ09NUE9ORU5UX05BTUVTIiwiZXh0cmFjdEV2ZW50VmFsdWUiLCJfdHlwZW9mIiwidGFyZ2V0IiwidXNlRm9ybUl0ZW0iLCJvcHRpb25zIiwiX3RoaXMiLCJuYW1lIiwiX29wdGlvbnMkcnVsZXMiLCJydWxlcyIsInJlcXVpcmVkIiwidmFsaWRhdGVTdGF0dXMiLCJjdHgiLCJ2YWx1ZXMiLCJlcnJvcnMiLCJ2YWxpZGF0aW5nIiwic2V0RmllbGRWYWx1ZSIsInZhbGlkYXRlRmllbGQiLCJ2YWxpZGF0ZUZpZWxkQXN5bmMiLCJyZWdpc3RlckZpZWxkIiwidW5yZWdpc3RlckZpZWxkIiwic2l6ZSIsImxhYmVsQWxpZ24iLCJyZXF1aXJlZE1hcmsiLCJ2YWxpZGF0ZVRyaWdnZXIiLCJpc1JlcXVpcmVkIiwiQm9vbGVhbiIsInNvbWUiLCJydWxlIiwiZmllbGRWYWx1ZSIsImluY2x1ZGVzIiwidW5kZWZpbmVkIiwiZmllbGRFcnJvciIsImZpZWxkVmFsaWRhdGluZyIsImZpbmFsU3RhdHVzIiwicnVuVmFsaWRhdGUiLCJsZW5ndGgiLCJydW5WYWxpZGF0ZUFzeW5jIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwid3JhcCIsIl9jb250ZXh0IiwicHJldiIsInN0b3AiLCJoYW5kbGVDaGFuZ2UiLCJoYW5kbGVCbHVyIiwiaW5qZWN0RmllbGQiLCJjaGlsZCIsIl9hIiwiaXNWYWxpZEVsZW1lbnQiLCJjaGlsZFByb3BzIiwicHJvcHMiLCJkaXNwbGF5TmFtZSIsInR5cGUiLCJpc0Zvcm1Db21wb25lbnQiLCJwbGFjZWhvbGRlciIsInNhZmVWYWx1ZSIsImluamVjdGVkUHJvcHMiLCJPYmplY3QiLCJhc3NpZ24iLCJvbkNoYW5nZSIsIl9sZW4iLCJhcmd1bWVudHMiLCJhcmdzIiwiQXJyYXkiLCJfa2V5IiwiY29uY2F0Iiwib25CbHVyIiwic3RhdHVzIiwiY2xvbmVFbGVtZW50Il0sIm1hcHBpbmdzIjoiOztBQUFBLElBQUlBLFNBQVMsR0FBSSxJQUFJLElBQUksSUFBSSxDQUFDQSxTQUFTLElBQUssVUFBVUMsT0FBTyxFQUFFQyxVQUFVLEVBQUVDLENBQUMsRUFBRUMsU0FBUyxFQUFFO0VBQ3JGLFNBQVNDLEtBQUtBLENBQUNDLEtBQUssRUFBRTtJQUFFLE9BQU9BLEtBQUssWUFBWUgsQ0FBQyxHQUFHRyxLQUFLLEdBQUcsSUFBSUgsQ0FBQyxDQUFDLFVBQVVJLE9BQU8sRUFBRTtNQUFFQSxPQUFPLENBQUNELEtBQUssQ0FBQztJQUFFLENBQUMsQ0FBQztFQUFFO0VBQzNHLE9BQU8sS0FBS0gsQ0FBQyxLQUFLQSxDQUFDLEdBQUdLLE9BQU8sQ0FBQyxFQUFFLFVBQVVELE9BQU8sRUFBRUUsTUFBTSxFQUFFO0lBQ3ZELFNBQVNDLFNBQVNBLENBQUNKLEtBQUssRUFBRTtNQUFFLElBQUk7UUFBRUssSUFBSSxDQUFDUCxTQUFTLENBQUNRLElBQUksQ0FBQ04sS0FBSyxDQUFDLENBQUM7TUFBRSxDQUFDLENBQUMsT0FBT08sQ0FBQyxFQUFFO1FBQUVKLE1BQU0sQ0FBQ0ksQ0FBQyxDQUFDO01BQUU7SUFBRTtJQUMxRixTQUFTQyxRQUFRQSxDQUFD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QUEsT0FBQUEsSUFBQSxXQUFBSSxJQUFBLE1BQUFBLElBQUEsR0FBQUosSUFBQSxFQUFBSSxJQUFBO1lBQWZGLElBQWUsQ0FBQUUsSUFBQSxRQUFBSCxTQUFBLENBQUFHLElBQUE7VUFBQTtVQUdwQ2YsVUFBVSxDQUFDVSxRQUFzQyxDQUFBcEUsS0FBQSxDQUFqRDBELFVBQVUsR0FBd0MvRCxDQUFDLEVBQUErRSxNQUFBLENBQUtILElBQUksRUFBQztRQUNoRTtNQUNGLENBQUM7TUFDREksTUFBTSxFQUFFLFNBQVJBLE1BQU1BLENBQUEsRUFBeUI7UUFDN0J0QixVQUFVLENBQUEsQ0FBRTtRQUNaLElBQUksT0FBT0ssVUFBVSxDQUFDaUIsTUFBTSxLQUFLLFVBQVUsRUFBRTtVQUMxQ2pCLFVBQVUsQ0FBQ2lCLE1BQW9DLENBQUEzRSxLQUFBLENBQS9DMEQsVUFBVSxFQUFBWSxTQUE2QyxDQUFDO1FBQzNEO01BQ0YsQ0FBQztNQUNEMUMsSUFBSSxFQUFFOEIsVUFBVSxDQUFDOUIsSUFBSSxJQUFJQTtJQUFJLENBQUEsRUFDekJhLFdBQVcsS0FBSyxPQUFPLElBQUk7TUFBRW1DLE1BQU0sRUFBRTtJQUFPLENBQUcsQ0FDcEQ7SUFFRCxvQkFBTzNFLEtBQUssQ0FBQzRFLFlBQVksQ0FBQ3RCLEtBQUssRUFBRVUsYUFBYSxDQUFDO0VBQ2pELENBQUM7RUFFRCxPQUFPO0lBQ0w3QixVQUFVLEVBQVZBLFVBQVU7SUFDVkcsVUFBVSxFQUFWQSxVQUFVO0lBQ1ZDLGVBQWUsRUFBZkEsZUFBZTtJQUNmdEIsY0FBYyxFQUFFdUIsV0FBVztJQUMzQlQsVUFBVSxFQUFWQSxVQUFVO0lBQ1ZKLElBQUksRUFBSkEsSUFBSTtJQUNKQyxVQUFVLEVBQVZBLFVBQVU7SUFDVkMsWUFBWSxFQUFaQSxZQUFZO0lBQ1p3QixXQUFXLEVBQVhBO0VEMUNBLENDMkNEO0FBQ0giLCJmaWxlIjoiY29tcG9uZW50cy9Qcm9Gb3JtL2NvcmUvdXNlRm9ybUl0ZW0uanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbmltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdXNlRXZlbnRDYWxsYmFjayBmcm9tICdAMW1vbmV5L2hvb2tzL3VzZUV2ZW50Q2FsbGJhY2snO1xuaW1wb3J0IHsgdXNlUHJvRm9ybUNvbnRleHQgfSBmcm9tICcuLi9jb250ZXh0JztcbmltcG9ydCB7IGdldE5lc3RlZFZhbHVlIH0gZnJvbSAnLi9wYXRoVXRpbHMnO1xuaW1wb3J0IHsgRk9STV9DT01QT05FTlRfTkFNRVMsIFRFWFRfTElLRV9DT01QT05FTlRfTkFNRVMgfSBmcm9tICcuL2NvbnN0YW50cyc7XG4vKiogTm9ybWFsaXNlIGEgY2hhbmdlLWhhbmRsZXIgYXJndW1lbnQ6IHVud3JhcCBgZS50YXJnZXQudmFsdWVgLCBlbHNlIHBhc3MgdGhlIHZhbHVlIHRocm91Z2guICovXG5mdW5jdGlvbiBleHRyYWN0RXZlbnRWYWx1ZShlKSB7XG4gICAgcmV0dXJuIGUgJiYgdHlwZW9mIGUgPT09ICdvYmplY3QnICYmICd0YXJnZXQnIGluIGVcbiAgICAgICAgPyBlLnRhcmdldC52YWx1ZVxuICAgICAgICA6IGU7XG59XG5leHBvcnQgZnVuY3Rpb24gdXNlRm9ybUl0ZW0ob3B0aW9ucykge1xuICAgIGNvbnN0IHsgbmFtZSwgcnVsZXMgPSBbXSwgcmVxdWlyZWQsIHZhbGlkYXRlU3RhdHVzIH0gPSBvcHRpb25zO1xuICAgIGNvbnN0IGN0eCA9IHVzZVByb0Zvcm1Db250ZXh0KCk7XG4gICAgY29uc3QgeyB2YWx1ZXMsIGVycm9ycywgdmFsaWRhdGluZywgc2V0RmllbGRWYWx1ZSwgdmFsaWRhdGVGaWVsZCwgdmFsaWRhdGVGaWVsZEFzeW5jLCByZWdpc3RlckZpZWxkLCB1bnJlZ2lzdGVyRmllbGQsIHNpemUsIGxhYmVsQWxpZ24sIHJlcXVpcmVkTWFyaywgdmFsaWRhdGVUcmlnZ2VyLCB9ID0gY3R4O1xuICAgIGNvbnN0IGlzUmVxdWlyZWQgPSBCb29sZWFuKHJlcXVpcmVkIHx8IHJ1bGVzLnNvbWUoKHJ1bGUpID0+IHJ1bGUucmVxdWlyZWQpKTtcbiAgICBjb25zdCBmaWVsZFZhbHVlID0gbmFtZVxuICAgICAgICA/IChuYW1lLmluY2x1ZGVzKCcuJykgPyBnZXROZXN0ZWRWYWx1ZSh2YWx1ZXMsIG5hbWUpIDogdmFsdWVzW25hbWVdKVxuICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBmaWVsZEVycm9yID0gbmFtZVxuICAgICAgICA/IChuYW1lLmluY2x1ZGVzKCcuJylcbiAgICAgICAgICAgID8gZ2V0TmVzdGVkVmFsdWUoZXJyb3JzLCBuYW1lKVxuICAgICAgICAgICAgOiBlcnJvcnNbbmFtZV0pXG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IGZpZWxkVmFsaWRhdGluZyA9IG5hbWUgPyAodmFsaWRhdGluZ1tuYW1lXSB8fCBmYWxzZSkgOiBmYWxzZTtcbiAgICBjb25zdCBmaW5hbFN0YXR1cyA9IHZhbGlkYXRlU3RhdHVzIHx8IChmaWVsZEVycm9yID8gJ2Vycm9yJyA6IHVuZGVmaW5lZCk7XG4gICAgY29uc3QgcnVuVmFsaWRhdGUgPSB1c2VFdmVudENhbGxiYWNrKCh2YWx1ZSkgPT4ge1xuICAgICAgICBpZiAobmFtZSAmJiBydWxlcy5sZW5ndGggPiAwKVxuICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlRmllbGQobmFtZSwgcnVsZXMsIHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSk7XG4gICAgY29uc3QgcnVuVmFsaWRhdGVBc3luYyA9IHVzZUV2ZW50Q2FsbGJhY2soKHZhbHVlKSA9PiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGlmIChuYW1lICYmIHJ1bGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHlpZWxkIHZhbGlkYXRlRmllbGRBc3luYyhuYW1lLCB2YWx1ZSwgcnVsZXMpO1xuICAgICAgICB9XG4gICAgfSkpO1xuICAgIGNvbnN0IGhhbmRsZUNoYW5nZSA9IHVzZUV2ZW50Q2FsbGJhY2soKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmIChuYW1lKSB7XG4gICAgICAgICAgICBzZXRGaWVsZFZhbHVlKG5hbWUsIHZhbHVlKTtcbiAgICAgICAgICAgIGlmICh2YWxpZGF0ZVRyaWdnZXIgPT09ICdvbkNoYW5nZScpXG4gICAgICAgICAgICAgICAgcnVuVmFsaWRhdGUodmFsdWUpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlQmx1ciA9IHVzZUV2ZW50Q2FsbGJhY2soKCkgPT4ge1xuICAgICAgICBpZiAodmFsaWRhdGVUcmlnZ2VyID09PSAnb25CbHVyJylcbiAgICAgICAgICAgIHJ1blZhbGlkYXRlQXN5bmMoZmllbGRWYWx1ZSk7XG4gICAgfSk7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKG5hbWUgJiYgcmVnaXN0ZXJGaWVsZClcbiAgICAgICAgICAgIHJlZ2lzdGVyRmllbGQobmFtZSwgcnVsZXMpO1xuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgaWYgKG5hbWUgJiYgdW5yZWdpc3RlckZpZWxkKVxuICAgICAgICAgICAgICAgIHVucmVnaXN0ZXJGaWVsZChuYW1lKTtcbiAgICAgICAgfTtcbiAgICB9LCBbbmFtZV0pO1xuICAgIGNvbnN0IGluamVjdEZpZWxkID0gKGNoaWxkKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgaWYgKCFuYW1lIHx8ICFSZWFjdC5pc1ZhbGlkRWxlbWVudChjaGlsZCkpXG4gICAgICAgICAgICByZXR1cm4gY2hpbGQ7XG4gICAgICAgIGNvbnN0IGNoaWxkUHJvcHMgPSBjaGlsZC5wcm9wcztcbiAgICAgICAgY29uc3QgZGlzcGxheU5hbWUgPSAoX2EgPSBjaGlsZC50eXBlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZGlzcGxheU5hbWU7XG4gICAgICAgIGNvbnN0IGlzRm9ybUNvbXBvbmVudCA9IEZPUk1fQ09NUE9ORU5UX05BTUVTLmluY2x1ZGVzKGRpc3BsYXlOYW1lKSB8fFxuICAgICAgICAgICAgY2hpbGRQcm9wcy5wbGFjZWhvbGRlciAhPT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICBjaGlsZFByb3BzLnZhbHVlICE9PSB1bmRlZmluZWQ7XG4gICAgICAgIGlmICghaXNGb3JtQ29tcG9uZW50KVxuICAgICAgICAgICAgcmV0dXJuIGNoaWxkO1xuICAgICAgICBsZXQgc2FmZVZhbHVlID0gZmllbGRWYWx1ZTtcbiAgICAgICAgaWYgKHNhZmVWYWx1ZSA9PT0gbnVsbCB8fCBzYWZlVmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaWYgKFRFWFRfTElLRV9DT01QT05FTlRfTkFNRVMuaW5jbHVkZXMoZGlzcGxheU5hbWUgfHwgJycpIHx8XG4gICAgICAgICAgICAgICAgY2hpbGRQcm9wcy5wbGFjZWhvbGRlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgc2FmZVZhbHVlID0gJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChbJ0NoZWNrYm94JywgJ1N3aXRjaCddLmluY2x1ZGVzKGRpc3BsYXlOYW1lIHx8ICcnKSkge1xuICAgICAgICAgICAgICAgIHNhZmVWYWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKFRFWFRfTElLRV9DT01QT05FTlRfTkFNRVMuaW5jbHVkZXMoZGlzcGxheU5hbWUgfHwgJycpICYmXG4gICAgICAgICAgICB0eXBlb2Ygc2FmZVZhbHVlICE9PSAnc3RyaW5nJyAmJlxuICAgICAgICAgICAgdHlwZW9mIHNhZmVWYWx1ZSAhPT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgIHNhZmVWYWx1ZSA9ICcnO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGluamVjdGVkUHJvcHMgPSBPYmplY3QuYXNzaWduKHsgdmFsdWU6IHNhZmVWYWx1ZSwgb25DaGFuZ2U6IChlLCAuLi5hcmdzKSA9PiB7XG4gICAgICAgICAgICAgICAgaGFuZGxlQ2hhbmdlKGV4dHJhY3RFdmVudFZhbHVlKGUpKTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGNoaWxkUHJvcHMub25DaGFuZ2UgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRQcm9wcy5vbkNoYW5nZShlLCAuLi5hcmdzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCBvbkJsdXI6ICguLi5hcmdzKSA9PiB7XG4gICAgICAgICAgICAgICAgaGFuZGxlQmx1cigpO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgY2hpbGRQcm9wcy5vbkJsdXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRQcm9wcy5vbkJsdXIoLi4uYXJncyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgc2l6ZTogY2hpbGRQcm9wcy5zaXplIHx8IHNpemUgfSwgKGZpbmFsU3RhdHVzID09PSAnZXJyb3InICYmIHsgc3RhdHVzOiAnZXJyb3InIH0pKTtcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNsb25lRWxlbWVudChjaGlsZCwgaW5qZWN0ZWRQcm9wcyk7XG4gICAgfTtcbiAgICByZXR1cm4ge1xuICAgICAgICBmaWVsZFZhbHVlLFxuICAgICAgICBmaWVsZEVycm9yLFxuICAgICAgICBmaWVsZFZhbGlkYXRpbmcsXG4gICAgICAgIHZhbGlkYXRlU3RhdHVzOiBmaW5hbFN0YXR1cyxcbiAgICAgICAgaXNSZXF1aXJlZCxcbiAgICAgICAgc2l6ZSxcbiAgICAgICAgbGFiZWxBbGlnbixcbiAgICAgICAgcmVxdWlyZWRNYXJrLFxuICAgICAgICBpbmplY3RGaWVsZCxcbiAgICB9O1xufSIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
240
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9jb3JlL3VzZUZvcm1JdGVtLmpzIiwiY29tcG9uZW50cy9Qcm9Gb3JtL3NyYy9jb21wb25lbnRzL1Byb0Zvcm0vY29yZS91c2VGb3JtSXRlbS50cyJdLCJuYW1lcyI6WyJfX2F3YWl0ZXIiLCJ0aGlzQXJnIiwiX2FyZ3VtZW50cyIsIlAiLCJnZW5lcmF0b3IiLCJhZG9wdCIsInZhbHVlIiwicmVzb2x2ZSIsIlByb21pc2UiLCJyZWplY3QiLCJmdWxmaWxsZWQiLCJzdGVwIiwibmV4dCIsImUiLCJyZWplY3RlZCIsInJlc3VsdCIsImRvbmUiLCJ0aGVuIiwiYXBwbHkiLCJSZWFjdCIsInVzZUVmZmVjdCIsInVzZVJlZiIsInVzZUV2ZW50Q2FsbGJhY2siLCJ1c2VEZWJvdW5jZWRDYWxsYmFjayIsInVzZVByb0Zvcm1TdGFibGUiLCJ1c2VQcm9Gb3JtU3RvcmUiLCJ1c2VTdG9yZVNlbGVjdG9yIiwic2hhbGxvd0VxdWFsQXJyYXlzIiwiZ2V0TmVzdGVkVmFsdWUiLCJmaWx0ZXJSdWxlc0J5VHJpZ2dlciIsIkZPUk1fQ09NUE9ORU5UX05BTUVTIiwiU0laRV9BV0FSRV9DT01QT05FTlRfTkFNRVMiLCJURVhUX0xJS0VfQ09NUE9ORU5UX05BTUVTIiwiZXh0cmFjdEV2ZW50VmFsdWUiLCJ2YWx1ZVByb3BOYW1lIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiX3R5cGVvZiIsImV2ZW50IiwidGFyZ2V0IiwidXNlRm9ybUl0ZW0iLCJvcHRpb25zIiwiX3RoaXMiLCJuYW1lIiwiX29wdGlvbnMkcnVsZXMiLCJydWxlcyIsInJlcXVpcmVkIiwidmFsaWRhdGVTdGF0dXMiLCJfb3B0aW9ucyR2YWx1ZVByb3BOYW0iLCJ2YWxpZGF0ZURlYm91bmNlIiwiX3VzZVByb0Zvcm1TdGFibGUiLCJzZXRGaWVsZFZhbHVlIiwidmFsaWRhdGVGaWVsZCIsInZhbGlkYXRlRmllbGRBc3luYyIsInJlZ2lzdGVyRmllbGQiLCJ1bnJlZ2lzdGVyRmllbGQiLCJzaXplIiwibGFiZWxBbGlnbiIsInJlcXVpcmVkTWFyayIsInZhbGlkYXRlVHJpZ2dlciIsImZvcm1EaXNhYmxlZCIsImRpc2FibGVkIiwic3RvcmUiLCJpc1JlcXVpcmVkIiwiQm9vbGVhbiIsInNvbWUiLCJydWxlIiwiX3VzZVN0b3JlU2VsZWN0b3IiLCJzdGF0ZSIsImluY2x1ZGVzIiwidmFsdWVzIiwiZXJyb3JzIiwid2FybmluZ3MiLCJ2YWxpZGF0aW5nIiwiX3VzZVN0b3JlU2VsZWN0b3IyIiwiX3NsaWNlZFRvQXJyYXkiLCJmaWVsZFZhbHVlIiwiZmllbGRFcnJvciIsImZpZWxkV2FybmluZyIsImZpZWxkVmFsaWRhdGluZyIsImZpbmFsU3RhdHVzIiwicnVuVmFsaWRhdGUiLCJ0cmlnZ2VyIiwiYXBwbGljYWJsZSIsInJ1blZhbGlkYXRlQXN5bmMiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwiYWJydXB0Iiwic3RvcCIsIl91c2VEZWJvdW5jZWRDYWxsYmFjayIsImRlYm91bmNlZFZhbGlkYXRlIiwicnVuIiwiaGFuZGxlQ2hhbmdlIiwidG91Y2hlZCIsImdldFN0YXRlIiwic2V0U3RhdGUiLCJPYmplY3QiLCJhc3NpZ24iLCJfZGVmaW5lUHJvcGVydHkiLCJoYW5kbGVCbHVyIiwiY3VycmVudFZhbHVlIiwiY2hpbGRDYWxsYmFja3NSZWYiLCJpbmplY3RlZE9uQ2hhbmdlIiwiX2IyIiwiX2EiLCJfYiIsIl9sZW4iLCJhcmdzIiwiQXJyYXkiLCJfa2V5IiwiY3VycmVudCIsIm9uQ2hhbmdlIiwiY2FsbCIsImNvbmNhdCIsImluamVjdGVkT25CbHVyIiwiX2IzIiwiX2xlbjIiLCJfa2V5MiIsIm9uQmx1ciIsImluamVjdEZpZWxkIiwiY2hpbGQiLCJpc1ZhbGlkRWxlbWVudCIsImNoaWxkUHJvcHMiLCJwcm9wcyIsImRpc3BsYXlOYW1lIiwidHlwZSIsImlzRm9ybUNvbXBvbmVudCIsInBsYWNl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O0lBQ1ZDLFlBQVksRUFBWkEsWUFBWTtJQUNaQyxlQUFlLEVBQWZBLGVBQWU7SUFDZmhDLGNBQWMsRUFBRWlDLFdBQVc7SUFDM0JqQixVQUFVLEVBQVZBLFVBQVU7SUFDVlAsSUFBSSxFQUFKQSxJQUFJO0lBQ0pDLFVBQVUsRUFBVkEsVUFBVTtJQUNWQyxZQUFZLEVBQVpBLFlBQVk7SUFDWmlFLFdBQVcsRUFBWEE7RUQzRUEsQ0M0RUQ7QUFDSCIsImZpbGUiOiJjb21wb25lbnRzL1Byb0Zvcm0vY29yZS91c2VGb3JtSXRlbS5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xuaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHVzZUV2ZW50Q2FsbGJhY2sgZnJvbSAnQDFtb25leS9ob29rcy91c2VFdmVudENhbGxiYWNrJztcbmltcG9ydCB1c2VEZWJvdW5jZWRDYWxsYmFjayBmcm9tICdAMW1vbmV5L2hvb2tzL3VzZURlYm91bmNlZENhbGxiYWNrJztcbmltcG9ydCB7IHVzZVByb0Zvcm1TdGFibGUsIHVzZVByb0Zvcm1TdG9yZSB9IGZyb20gJy4uL2NvbnRleHQnO1xuaW1wb3J0IHsgdXNlU3RvcmVTZWxlY3Rvciwgc2hhbGxvd0VxdWFsQXJyYXlzIH0gZnJvbSAnLi9mb3JtU3RvcmUnO1xuaW1wb3J0IHsgZ2V0TmVzdGVkVmFsdWUgfSBmcm9tICcuL3BhdGhVdGlscyc7XG5pbXBvcnQgeyBmaWx0ZXJSdWxlc0J5VHJpZ2dlciB9IGZyb20gJy4vcnVuUnVsZXMnO1xuaW1wb3J0IHsgRk9STV9DT01QT05FTlRfTkFNRVMsIFNJWkVfQVdBUkVfQ09NUE9ORU5UX05BTUVTLCBURVhUX0xJS0VfQ09NUE9ORU5UX05BTUVTLCB9IGZyb20gJy4vY29uc3RhbnRzJztcbi8qKlxuICogTm9ybWFsaXNlIGEgY2hhbmdlLWhhbmRsZXIgYXJndW1lbnQ6IHVud3JhcCBgZS50YXJnZXRbdmFsdWVQcm9wTmFtZV1gIC9cbiAqIGBlW3ZhbHVlUHJvcE5hbWVdYCAoZS5nLiBDaGVja2JveCBlbWl0cyBgeyBjaGVja2VkIH1gKSwgZWxzZSBgZS50YXJnZXQudmFsdWVgLFxuICogZWxzZSBwYXNzIHRoZSB2YWx1ZSB0aHJvdWdoIChlLmcuIFN3aXRjaCBlbWl0cyB0aGUgYm9vbGVhbiBkaXJlY3RseSkuXG4gKi9cbmZ1bmN0aW9uIGV4dHJhY3RFdmVudFZhbHVlKGUsIHZhbHVlUHJvcE5hbWUgPSAndmFsdWUnKSB7XG4gICAgaWYgKGUgPT09IG51bGwgfHwgdHlwZW9mIGUgIT09ICdvYmplY3QnKVxuICAgICAgICByZXR1cm4gZTtcbiAgICBjb25zdCBldmVudCA9IGU7XG4gICAgaWYgKHZhbHVlUHJvcE5hbWUgIT09ICd2YWx1ZScgJiYgdmFsdWVQcm9wTmFtZSBpbiBldmVudCkge1xuICAgICAgICByZXR1cm4gZXZlbnRbdmFsdWVQcm9wTmFtZV07XG4gICAgfVxuICAgIGlmICgndGFyZ2V0JyBpbiBldmVudCAmJiBldmVudC50YXJnZXQgJiYgdHlwZW9mIGV2ZW50LnRhcmdldCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0O1xuICAgICAgICBpZiAodmFsdWVQcm9wTmFtZSBpbiB0YXJnZXQpXG4gICAgICAgICAgICByZXR1cm4gdGFyZ2V0W3ZhbHVlUHJvcE5hbWVdO1xuICAgICAgICBpZiAoJ3ZhbHVlJyBpbiB0YXJnZXQpXG4gICAgICAgICAgICByZXR1cm4gdGFyZ2V0LnZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gZTtcbn1cbmV4cG9ydCBmdW5jdGlvbiB1c2VGb3JtSXRlbShvcHRpb25zKSB7XG4gICAgY29uc3QgeyBuYW1lLCBydWxlcyA9IFtdLCByZXF1aXJlZCwgdmFsaWRhdGVTdGF0dXMsIHZhbHVlUHJvcE5hbWUgPSAndmFsdWUnLCB2YWxpZGF0ZURlYm91bmNlLCB9ID0gb3B0aW9ucztcbiAgICBjb25zdCB7IHNldEZpZWxkVmFsdWUsIHZhbGlkYXRlRmllbGQsIHZhbGlkYXRlRmllbGRBc3luYywgcmVnaXN0ZXJGaWVsZCwgdW5yZWdpc3RlckZpZWxkLCBzaXplLCBsYWJlbEFsaWduLCByZXF1aXJlZE1hcmssIHZhbGlkYXRlVHJpZ2dlciwgZGlzYWJsZWQ6IGZvcm1EaXNhYmxlZCwgfSA9IHVzZVByb0Zvcm1TdGFibGUoKTtcbiAgICBjb25zdCBzdG9yZSA9IHVzZVByb0Zvcm1TdG9yZSgpO1xuICAgIGNvbnN0IGlzUmVxdWlyZWQgPSBCb29sZWFuKHJlcXVpcmVkIHx8IHJ1bGVzLnNvbWUoKHJ1bGUpID0+IHJ1bGUucmVxdWlyZWQpKTtcbiAgICAvLyBQZXItZmllbGQgc3RvcmUgc3Vic2NyaXB0aW9uOiB0aGlzIGl0ZW0gcmUtcmVuZGVycyBPTkxZIHdoZW4gaXRzIG93blxuICAgIC8vIHZhbHVlL2Vycm9yL3dhcm5pbmcvdmFsaWRhdGluZyBzbGljZSBjaGFuZ2VzIOKAlCB0eXBpbmcgaW4gYSBzaWJsaW5nIGZpZWxkXG4gICAgLy8gcHJvZHVjZXMgYW4gZXF1YWwgdHVwbGUgYW5kIHRoZSBzZWxlY3RvciBzaG9ydC1jaXJjdWl0cy5cbiAgICAvLyBFcnJvcnMvd2FybmluZ3MgYXJlIHN0b3JlZCBGTEFULCBrZXllZCBieSB0aGUgZnVsbCAocG9zc2libHkgZG90dGVkKSBmaWVsZFxuICAgIC8vIG5hbWUg4oCUIG5ldmVyIHJlc29sdmUgdGhlbSBhcyBuZXN0ZWQgcGF0aHMgb3IgZG90dGVkIG5hbWVzIHdvdWxkIG1pc3MuXG4gICAgY29uc3QgW2ZpZWxkVmFsdWUsIGZpZWxkRXJyb3IsIGZpZWxkV2FybmluZywgZmllbGRWYWxpZGF0aW5nXSA9IHVzZVN0b3JlU2VsZWN0b3Ioc3RvcmUsIChzdGF0ZSkgPT4gW1xuICAgICAgICBuYW1lXG4gICAgICAgICAgICA/IChuYW1lLmluY2x1ZGVzKCcuJykgPyBnZXROZXN0ZWRWYWx1ZShzdGF0ZS52YWx1ZXMsIG5hbWUpIDogc3RhdGUudmFsdWVzW25hbWVdKVxuICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgIG5hbWUgPyBzdGF0ZS5lcnJvcnNbbmFtZV0gOiB1bmRlZmluZWQsXG4gICAgICAgIG5hbWUgPyBzdGF0ZS53YXJuaW5nc1tuYW1lXSA6IHVuZGVmaW5lZCxcbiAgICAgICAgbmFtZSA/IChzdGF0ZS52YWxpZGF0aW5nW25hbWVdIHx8IGZhbHNlKSA6IGZhbHNlLFxuICAgIF0sIHNoYWxsb3dFcXVhbEFycmF5cyk7XG4gICAgY29uc3QgZmluYWxTdGF0dXMgPSB2YWxpZGF0ZVN0YXR1cyB8fCAoZmllbGRFcnJvciA/ICdlcnJvcicgOiBmaWVsZFdhcm5pbmcgPyAnd2FybmluZycgOiB1bmRlZmluZWQpO1xuICAgIC8vIFJ1biBvbmx5IHRoZSBydWxlcyBhcHBsaWNhYmxlIHRvIHRoZSBnaXZlbiBpbnRlcmFjdGl2ZSB0cmlnZ2VyOyBydWxlc1xuICAgIC8vIHdpdGhvdXQgYW4gZXhwbGljaXQgdmFsaWRhdGVUcmlnZ2VyIGZvbGxvdyB0aGUgZm9ybS1sZXZlbCBzZXR0aW5nLlxuICAgIGNvbnN0IHJ1blZhbGlkYXRlID0gdXNlRXZlbnRDYWxsYmFjaygodmFsdWUsIHRyaWdnZXIpID0+IHtcbiAgICAgICAgaWYgKCFuYW1lIHx8IHJ1bGVzLmxlbmd0aCA9PT0gMClcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICBjb25zdCBhcHBsaWNhYmxlID0gZmlsdGVyUnVsZXNCeVRyaWdnZXIocnVsZXMsIHRyaWdnZXIsIHZhbGlkYXRlVHJpZ2dlcik7XG4gICAgICAgIGlmIChhcHBsaWNhYmxlLmxlbmd0aCA9PT0gMClcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICByZXR1cm4gdmFsaWRhdGVGaWVsZChuYW1lLCBhcHBsaWNhYmxlLCB2YWx1ZSk7XG4gICAgfSk7XG4gICAgY29uc3QgcnVuVmFsaWRhdGVBc3luYyA9IHVzZUV2ZW50Q2FsbGJhY2soKHZhbHVlLCB0cmlnZ2VyKSA9PiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGlmICghbmFtZSB8fCBydWxlcy5sZW5ndGggPT09IDApXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IGFwcGxpY2FibGUgPSBmaWx0ZXJSdWxlc0J5VHJpZ2dlcihydWxlcywgdHJpZ2dlciwgdmFsaWRhdGVUcmlnZ2VyKTtcbiAgICAgICAgaWYgKGFwcGxpY2FibGUubGVuZ3RoID09PSAwKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB5aWVsZCB2YWxpZGF0ZUZpZWxkQXN5bmMobmFtZSwgdmFsdWUsIGFwcGxpY2FibGUpO1xuICAgIH0pKTtcbiAgICBjb25zdCB7IHJ1bjogZGVib3VuY2VkVmFsaWRhdGUgfSA9IHVzZURlYm91bmNlZENhbGxiYWNrKCh2YWx1ZSkgPT4ge1xuICAgICAgICBydW5WYWxpZGF0ZSh2YWx1ZSwgJ29uQ2hhbmdlJyk7XG4gICAgfSwgdmFsaWRhdGVEZWJvdW5jZSk7XG4gICAgY29uc3QgaGFuZGxlQ2hhbmdlID0gdXNlRXZlbnRDYWxsYmFjaygodmFsdWUpID0+IHtcbiAgICAgICAgaWYgKG5hbWUpIHtcbiAgICAgICAgICAgIHNldEZpZWxkVmFsdWUobmFtZSwgdmFsdWUpO1xuICAgICAgICAgICAgLy8gdG91Y2hlZCBpcyBzZXQgYnkgdGhlIHVzZXIgY2hhbmdlIHRyaWdnZXIg4oCUXG4gICAgICAgICAgICAvLyBwcm9ncmFtbWF0aWMgc2V0RmllbGRzVmFsdWUgZG9lcyBub3QgbWFyayBmaWVsZHMgdG91Y2hlZC5cbiAgICAgICAgICAgIGNvbnN0IHRvdWNoZWQgPSBzdG9yZS5nZXRTdGF0ZSgpLnRvdWNoZWQ7XG4gICAgICAgICAgICBpZiAoIXRvdWNoZWRbbmFtZV0pIHtcbiAgICAgICAgICAgICAgICBzdG9yZS5zZXRTdGF0ZSh7IHRvdWNoZWQ6IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgdG91Y2hlZCksIHsgW25hbWVdOiB0cnVlIH0pIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHZhbGlkYXRlRGVib3VuY2UgJiYgdmFsaWRhdGVEZWJvdW5jZSA+IDApIHtcbiAgICAgICAgICAgICAgICBkZWJvdW5jZWRWYWxpZGF0ZSh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBydW5WYWxpZGF0ZSh2YWx1ZSwgJ29uQ2hhbmdlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVCbHVyID0gdXNlRXZlbnRDYWxsYmFjaygoKSA9PiB7XG4gICAgICAgIC8vIFJlYWQgdGhlIExJVkUgdmFsdWUgZnJvbSB0aGUgc3RvcmUg4oCUIGEgY2hhbmdlIGNvbW1pdHRlZCBpbiB0aGUgc2FtZVxuICAgICAgICAvLyB0aWNrIChjaGFuZ2Ug4oaSIGltbWVkaWF0ZSBibHVyKSBtdXN0IGJlIHZhbGlkYXRlZCwgbm90IHRoZSByZW5kZXItdGltZVxuICAgICAgICAvLyBzbmFwc2hvdC5cbiAgICAgICAgY29uc3QgY3VycmVudFZhbHVlID0gbmFtZVxuICAgICAgICAgICAgPyAobmFtZS5pbmNsdWRlcygnLicpXG4gICAgICAgICAgICAgICAgPyBnZXROZXN0ZWRWYWx1ZShzdG9yZS5nZXRTdGF0ZSgpLnZhbHVlcywgbmFtZSlcbiAgICAgICAgICAgICAgICA6IHN0b3JlLmdldFN0YXRlKCkudmFsdWVzW25hbWVdKVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICAgIHJ1blZhbGlkYXRlQXN5bmMoY3VycmVudFZhbHVlLCAnb25CbHVyJyk7XG4gICAgfSk7XG4gICAgLy8gTGF0ZXN0IGNoaWxkLXByb3ZpZGVkIGNhbGxiYWNrcywgY2FwdHVyZWQgYXQgaW5qZWN0RmllbGQgdGltZS4gVGhlIFNUQUJMRVxuICAgIC8vIGluamVjdGVkIGhhbmRsZXJzIGJlbG93IGRlbGVnYXRlIHRocm91Z2ggdGhpcyByZWYgaW5zdGVhZCBvZiBiZWluZ1xuICAgIC8vIHJlY3JlYXRlZCBwZXIgcmVuZGVyIOKAlCBzbyBhIG1lbW9pemVkIGZpZWxkIGNvbXBvbmVudCBzZWVzIHNoYWxsb3ctZXF1YWxcbiAgICAvLyBwcm9wcyBhY3Jvc3MgcmVuZGVycyBhbmQgY2FuIGJhaWwgb3V0IHdoaWxlIGFub3RoZXIgZmllbGQgaXMgdHlwaW5nLlxuICAgIGNvbnN0IGNoaWxkQ2FsbGJhY2tzUmVmID0gdXNlUmVmKHt9KTtcbiAgICBjb25zdCBpbmplY3RlZE9uQ2hhbmdlID0gdXNlRXZlbnRDYWxsYmFjaygoZSwgLi4uYXJncykgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICBoYW5kbGVDaGFuZ2UoZXh0cmFjdEV2ZW50VmFsdWUoZSwgdmFsdWVQcm9wTmFtZSkpO1xuICAgICAgICAoX2IgPSAoX2EgPSBjaGlsZENhbGxiYWNrc1JlZi5jdXJyZW50KS5vbkNoYW5nZSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNhbGwoX2EsIGUsIC4uLmFyZ3MpO1xuICAgIH0pO1xuICAgIGNvbnN0IGluamVjdGVkT25CbHVyID0gdXNlRXZlbnRDYWxsYmFjaygoLi4uYXJncykgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICBoYW5kbGVCbHVyKCk7XG4gICAgICAgIChfYiA9IChfYSA9IGNoaWxkQ2FsbGJhY2tzUmVmLmN1cnJlbnQpLm9uQmx1cikgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNhbGwoX2EsIC4uLmFyZ3MpO1xuICAgIH0pO1xuICAgIC8vIEtlZXAgdGhlIHJlZ2lzdHJ5IGluIHN5bmMgd2l0aCB0aGUgTEFURVNUIHJ1bGVzIGV2ZXJ5IHJlbmRlciAocmVnaXN0cmF0aW9uXG4gICAgLy8gaXMgYSBjaGVhcCByZWYgbXV0YXRpb24pOiBkeW5hbWljIHJ1bGVzIChlLmcuIHJlcXVpcmVkIHRvZ2dsZWQgYnkgYW5vdGhlclxuICAgIC8vIGZpZWxkKSBtdXN0IGJlIHZpc2libGUgdG8gc3VibWl0LXRpbWUgdmFsaWRhdGlvbiwgbm90IGp1c3Qgb25DaGFuZ2UuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKG5hbWUgJiYgcmVnaXN0ZXJGaWVsZClcbiAgICAgICAgICAgIHJlZ2lzdGVyRmllbGQobmFtZSwgcnVsZXMpO1xuICAgIH0pO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICBpZiAobmFtZSAmJiB1bnJlZ2lzdGVyRmllbGQpXG4gICAgICAgICAgICAgICAgdW5yZWdpc3RlckZpZWxkKG5hbWUpO1xuICAgICAgICB9O1xuICAgIH0sIFtuYW1lXSk7XG4gICAgY29uc3QgaW5qZWN0RmllbGQgPSAoY2hpbGQpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAoIW5hbWUgfHwgIVJlYWN0LmlzVmFsaWRFbGVtZW50KGNoaWxkKSlcbiAgICAgICAgICAgIHJldHVybiBjaGlsZDtcbiAgICAgICAgY29uc3QgY2hpbGRQcm9wcyA9IGNoaWxkLnByb3BzO1xuICAgICAgICBjb25zdCBkaXNwbGF5TmFtZSA9IChfYSA9IGNoaWxkLnR5cGUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5kaXNwbGF5TmFtZTtcbiAgICAgICAgY29uc3QgaXNGb3JtQ29tcG9uZW50ID0gRk9STV9DT01QT05FTlRfTkFNRVMuaW5jbHVkZXMoZGlzcGxheU5hbWUpIHx8XG4gICAgICAgICAgICBjaGlsZFByb3BzLnBsYWNlaG9sZGVyICE9PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgIGNoaWxkUHJvcHMudmFsdWUgIT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgY2hpbGRQcm9wc1t2YWx1ZVByb3BOYW1lXSAhPT0gdW5kZWZpbmVkO1xuICAgICAgICBpZiAoIWlzRm9ybUNvbXBvbmVudClcbiAgICAgICAgICAgIHJldHVybiBjaGlsZDtcbiAgICAgICAgbGV0IHNhZmVWYWx1ZSA9IGZpZWxkVmFsdWU7XG4gICAgICAgIGlmIChzYWZlVmFsdWUgPT09IG51bGwgfHwgc2FmZVZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZVByb3BOYW1lID09PSAnY2hlY2tlZCcgfHwgWydDaGVja2JveCcsICdTd2l0Y2gnXS5pbmNsdWRlcyhkaXNwbGF5TmFtZSB8fCAnJykpIHtcbiAgICAgICAgICAgICAgICBzYWZlVmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKFRFWFRfTElLRV9DT01QT05FTlRfTkFNRVMuaW5jbHVkZXMoZGlzcGxheU5hbWUgfHwgJycpIHx8XG4gICAgICAgICAgICAgICAgY2hpbGRQcm9wcy5wbGFjZWhvbGRlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgc2FmZVZhbHVlID0gJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoVEVYVF9MSUtFX0NPTVBPTkVOVF9OQU1FUy5pbmNsdWRlcyhkaXNwbGF5TmFtZSB8fCAnJykgJiZcbiAgICAgICAgICAgIHR5cGVvZiBzYWZlVmFsdWUgIT09ICdzdHJpbmcnICYmXG4gICAgICAgICAgICB0eXBlb2Ygc2FmZVZhbHVlICE9PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgc2FmZVZhbHVlID0gJyc7XG4gICAgICAgIH1cbiAgICAgICAgY2hpbGRDYWxsYmFja3NSZWYuY3VycmVudCA9IHtcbiAgICAgICAgICAgIG9uQ2hhbmdlOiB0eXBlb2YgY2hpbGRQcm9wcy5vbkNoYW5nZSA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgICAgICAgID8gY2hpbGRQcm9wcy5vbkNoYW5nZVxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgb25CbHVyOiB0eXBlb2YgY2hpbGRQcm9wcy5vbkJsdXIgPT09ICdmdW5jdGlvbidcbiAgICAgICAgICAgICAgICA/IGNoaWxkUHJvcHMub25CbHVyXG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGluamVjdGVkUHJvcHMgPSBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7IFt2YWx1ZVByb3BOYW1lXTogc2FmZVZhbHVlLCBvbkNoYW5nZTogaW5qZWN0ZWRPbkNoYW5nZSwgb25CbHVyOiBpbmplY3RlZE9uQmx1ciB9LCAoZmluYWxTdGF0dXMgPT09ICdlcnJvcicgJiYgeyBzdGF0dXM6ICdlcnJvcicgfSkpLCAoZm9ybURpc2FibGVkICYmIGNoaWxkUHJvcHMuZGlzYWJsZWQgPT09IHVuZGVmaW5lZCAmJiB7IGRpc2FibGVkOiB0cnVlIH0pKSwgKFNJWkVfQVdBUkVfQ09NUE9ORU5UX05BTUVTLmluY2x1ZGVzKGRpc3BsYXlOYW1lIHx8ICcnKSAmJlxuICAgICAgICAgICAgY2hpbGRQcm9wcy5zaXplID09PSB1bmRlZmluZWQgJiYgeyBzaXplIH0pKTtcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNsb25lRWxlbWVudChjaGlsZCwgaW5qZWN0ZWRQcm9wcyk7XG4gICAgfTtcbiAgICByZXR1cm4ge1xuICAgICAgICBmaWVsZFZhbHVlLFxuICAgICAgICBmaWVsZEVycm9yLFxuICAgICAgICBmaWVsZFdhcm5pbmcsXG4gICAgICAgIGZpZWxkVmFsaWRhdGluZyxcbiAgICAgICAgdmFsaWRhdGVTdGF0dXM6IGZpbmFsU3RhdHVzLFxuICAgICAgICBpc1JlcXVpcmVkLFxuICAgICAgICBzaXplLFxuICAgICAgICBsYWJlbEFsaWduLFxuICAgICAgICByZXF1aXJlZE1hcmssXG4gICAgICAgIGluamVjdEZpZWxkLFxuICAgIH07XG59IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
@@ -16,8 +16,11 @@ function renderDateReadonly(value) {
16
16
  }
17
17
  export var ProFormDatePicker = createProFormField({
18
18
  component: Calendar,
19
+ // Registers into the form's valueType registry so dateFormatter formats this
20
+ // field as a date; pass valueType="dateTime" per field for time-of-day output.
21
+ valueType: 'date',
19
22
  renderReadonly: renderDateReadonly
20
23
  });
21
24
  ProFormDatePicker.displayName = 'ProFormDatePicker';
22
25
  export default ProFormDatePicker;
23
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9zcmMvY29tcG9uZW50cy9Qcm9Gb3JtL2ZpZWxkcy9Qcm9Gb3JtRGF0ZVBpY2tlci50c3giLCJjb21wb25lbnRzL1Byb0Zvcm0vZmllbGRzL1Byb0Zvcm1EYXRlUGlja2VyLmpzIl0sIm5hbWVzIjpbIkNhbGVuZGFyIiwiY3JlYXRlUHJvRm9ybUZpZWxkIiwicmVuZGVyRGF0ZVJlYWRvbmx5IiwidmFsdWUiLCJ1bmRlZmluZWQiLCJEYXRlIiwidG9Mb2NhbGVEYXRlU3RyaW5nIiwiQXJyYXkiLCJpc0FycmF5IiwiZmlsdGVyIiwidiIsIm1hcCIsImQiLCJqb2luIiwiU3RyaW5nIiwiUHJvRm9ybURhdGVQaWNrZXIiLCJjb21wb25lbnQiLCJyZW5kZXJSZWFkb25seSIsImRpc3BsYXlOYW1lIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxRQUFRLFFBQVEsZ0JBQWdCO0FBRXpDLFNBQVNDLGtCQUFrQixRQUFRLHNCQUFzQjtBQUV6RCxTQUFTQyxrQkFBa0JBLENBQUNDLEtBQWMsRUFBQTtFQUN4QyxJQUFJQSxLQUFLLEtBQUssSUFBSSxJQUFJQSxLQUFLLEtBQUtDLFNBQVMsRUFBRSxPQUFPLEdBQUc7RUFFckQsSUFBSUQsS0FBSyxZQUFZRSxJQUFJLEVBQUU7SUFDekIsT0FBT0YsS0FBSyxDQUFDRyxrQkFBa0IsQ0FBQSxDQUFFO0VBQ25DO0VBRUEsSUFBSUMsS0FBSyxDQUFDQyxPQUFPLENBQUNMLEtBQUssQ0FBQyxFQUFFO0lBQ3hCLE9BQU9BLEtBQUssQ0FDVE0sTUFBTSxDQUFDLFVBQUNDLENBQUM7TUFBQSxPQUFnQkEsQ0FBQyxZQUFZTCxJQUFJO0lBQUEsRUFBQyxDQUMzQ00sR0FBRyxDQUFDLFVBQUNDLENBQUM7TUFBQSxPQUFLQSxDQUFDLENBQUNOLGtCQUFrQixDQUFBLENBQUU7SUFBQSxFQUFDLENBQ2xDTyxJQUFJLENBQUMsS0FBSyxDQUFDO0VBQ2hCO0VBRUEsT0FBT0MsTUFBTSxDQUFDWCxLQUFLLENBQUM7QUFDdEI7QUFFQSxPQUFPLElBQU1ZLGlCQUFpQixHQUFHZCxrQkFBa0IsQ0FBZ0I7RUFDakVlLFNBQVMsRUFBRWhCLFFBQVE7RUFDbkJpQixjQUFjLEVBQUVmO0FDSmxCLENES0MsQ0FBQztBQUVGYSxpQkFBaUIsQ0FBQ0csV0FBVyxHQUFHLG1CQUFtQjtBQUVuRCxlQUFlSCxpQkFBaUIiLCJmaWxlIjoiY29tcG9uZW50cy9Qcm9Gb3JtL2ZpZWxkcy9Qcm9Gb3JtRGF0ZVBpY2tlci5qcyIsInNvdXJjZXNDb250ZW50IjpbbnVsbCwiaW1wb3J0IHsgQ2FsZW5kYXIgfSBmcm9tICcuLi8uLi9DYWxlbmRhcic7XG5pbXBvcnQgeyBjcmVhdGVQcm9Gb3JtRmllbGQgfSBmcm9tICcuL2NyZWF0ZVByb0Zvcm1GaWVsZCc7XG5mdW5jdGlvbiByZW5kZXJEYXRlUmVhZG9ubHkodmFsdWUpIHtcbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZClcbiAgICAgICAgcmV0dXJuICctJztcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZS50b0xvY2FsZURhdGVTdHJpbmcoKTtcbiAgICB9XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZVxuICAgICAgICAgICAgLmZpbHRlcigodikgPT4gdiBpbnN0YW5jZW9mIERhdGUpXG4gICAgICAgICAgICAubWFwKChkKSA9PiBkLnRvTG9jYWxlRGF0ZVN0cmluZygpKVxuICAgICAgICAgICAgLmpvaW4oJyB+ICcpO1xuICAgIH1cbiAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbn1cbmV4cG9ydCBjb25zdCBQcm9Gb3JtRGF0ZVBpY2tlciA9IGNyZWF0ZVByb0Zvcm1GaWVsZCh7XG4gICAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgICByZW5kZXJSZWFkb25seTogcmVuZGVyRGF0ZVJlYWRvbmx5LFxufSk7XG5Qcm9Gb3JtRGF0ZVBpY2tlci5kaXNwbGF5TmFtZSA9ICdQcm9Gb3JtRGF0ZVBpY2tlcic7XG5leHBvcnQgZGVmYXVsdCBQcm9Gb3JtRGF0ZVBpY2tlcjsiXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
26
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9zcmMvY29tcG9uZW50cy9Qcm9Gb3JtL2ZpZWxkcy9Qcm9Gb3JtRGF0ZVBpY2tlci50c3giLCJjb21wb25lbnRzL1Byb0Zvcm0vZmllbGRzL1Byb0Zvcm1EYXRlUGlja2VyLmpzIl0sIm5hbWVzIjpbIkNhbGVuZGFyIiwiY3JlYXRlUHJvRm9ybUZpZWxkIiwicmVuZGVyRGF0ZVJlYWRvbmx5IiwidmFsdWUiLCJ1bmRlZmluZWQiLCJEYXRlIiwidG9Mb2NhbGVEYXRlU3RyaW5nIiwiQXJyYXkiLCJpc0FycmF5IiwiZmlsdGVyIiwidiIsIm1hcCIsImQiLCJqb2luIiwiU3RyaW5nIiwiUHJvRm9ybURhdGVQaWNrZXIiLCJjb21wb25lbnQiLCJ2YWx1ZVR5cGUiLCJyZW5kZXJSZWFkb25seSIsImRpc3BsYXlOYW1lIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxRQUFRLFFBQVEsZ0JBQWdCO0FBRXpDLFNBQVNDLGtCQUFrQixRQUFRLHNCQUFzQjtBQUV6RCxTQUFTQyxrQkFBa0JBLENBQUNDLEtBQWMsRUFBQTtFQUN4QyxJQUFJQSxLQUFLLEtBQUssSUFBSSxJQUFJQSxLQUFLLEtBQUtDLFNBQVMsRUFBRSxPQUFPLEdBQUc7RUFFckQsSUFBSUQsS0FBSyxZQUFZRSxJQUFJLEVBQUU7SUFDekIsT0FBT0YsS0FBSyxDQUFDRyxrQkFBa0IsQ0FBQSxDQUFFO0VBQ25DO0VBRUEsSUFBSUMsS0FBSyxDQUFDQyxPQUFPLENBQUNMLEtBQUssQ0FBQyxFQUFFO0lBQ3hCLE9BQU9BLEtBQUssQ0FDVE0sTUFBTSxDQUFDLFVBQUNDLENBQUM7TUFBQSxPQUFnQkEsQ0FBQyxZQUFZTCxJQUFJO0lBQUEsRUFBQyxDQUMzQ00sR0FBRyxDQUFDLFVBQUNDLENBQUM7TUFBQSxPQUFLQSxDQUFDLENBQUNOLGtCQUFrQixDQUFBLENBQUU7SUFBQSxFQUFDLENBQ2xDTyxJQUFJLENBQUMsS0FBSyxDQUFDO0VBQ2hCO0VBRUEsT0FBT0MsTUFBTSxDQUFDWCxLQUFLLENBQUM7QUFDdEI7QUFFQSxPQUFPLElBQU1ZLGlCQUFpQixHQUFHZCxrQkFBa0IsQ0FBZ0I7RUFDakVlLFNBQVMsRUFBRWhCLFFBQVE7RUFDbkI7RUFDQTtFQUNBaUIsU0FBUyxFQUFFLE1BQU07RUFDakJDLGNBQWMsRUFBRWhCO0FDSmxCLENES0MsQ0FBQztBQUVGYSxpQkFBaUIsQ0FBQ0ksV0FBVyxHQUFHLG1CQUFtQjtBQUVuRCxlQUFlSixpQkFBaUIiLCJmaWxlIjoiY29tcG9uZW50cy9Qcm9Gb3JtL2ZpZWxkcy9Qcm9Gb3JtRGF0ZVBpY2tlci5qcyIsInNvdXJjZXNDb250ZW50IjpbbnVsbCwiaW1wb3J0IHsgQ2FsZW5kYXIgfSBmcm9tICcuLi8uLi9DYWxlbmRhcic7XG5pbXBvcnQgeyBjcmVhdGVQcm9Gb3JtRmllbGQgfSBmcm9tICcuL2NyZWF0ZVByb0Zvcm1GaWVsZCc7XG5mdW5jdGlvbiByZW5kZXJEYXRlUmVhZG9ubHkodmFsdWUpIHtcbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZClcbiAgICAgICAgcmV0dXJuICctJztcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZS50b0xvY2FsZURhdGVTdHJpbmcoKTtcbiAgICB9XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZVxuICAgICAgICAgICAgLmZpbHRlcigodikgPT4gdiBpbnN0YW5jZW9mIERhdGUpXG4gICAgICAgICAgICAubWFwKChkKSA9PiBkLnRvTG9jYWxlRGF0ZVN0cmluZygpKVxuICAgICAgICAgICAgLmpvaW4oJyB+ICcpO1xuICAgIH1cbiAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbn1cbmV4cG9ydCBjb25zdCBQcm9Gb3JtRGF0ZVBpY2tlciA9IGNyZWF0ZVByb0Zvcm1GaWVsZCh7XG4gICAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgICAvLyBSZWdpc3RlcnMgaW50byB0aGUgZm9ybSdzIHZhbHVlVHlwZSByZWdpc3RyeSBzbyBkYXRlRm9ybWF0dGVyIGZvcm1hdHMgdGhpc1xuICAgIC8vIGZpZWxkIGFzIGEgZGF0ZTsgcGFzcyB2YWx1ZVR5cGU9XCJkYXRlVGltZVwiIHBlciBmaWVsZCBmb3IgdGltZS1vZi1kYXkgb3V0cHV0LlxuICAgIHZhbHVlVHlwZTogJ2RhdGUnLFxuICAgIHJlbmRlclJlYWRvbmx5OiByZW5kZXJEYXRlUmVhZG9ubHksXG59KTtcblByb0Zvcm1EYXRlUGlja2VyLmRpc3BsYXlOYW1lID0gJ1Byb0Zvcm1EYXRlUGlja2VyJztcbmV4cG9ydCBkZWZhdWx0IFByb0Zvcm1EYXRlUGlja2VyOyJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
@@ -3,7 +3,8 @@ import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
3
3
  import { jsx as _jsx } from "react/jsx-runtime";
4
4
  import React, { memo } from 'react';
5
5
  import { ProFormItem } from '../ProFormItem';
6
- import { useProFormContext } from '../context';
6
+ import { useProFormStable, useProFormStore } from '../context';
7
+ import { useStoreSelector } from '../core/formStore';
7
8
  import { default as classnames } from '../../../utils/classnames';
8
9
  import { CSS_PREFIX } from '../constants';
9
10
  var classes = classnames("".concat(CSS_PREFIX, "-fieldset"));
@@ -18,22 +19,34 @@ var ProFormFieldSetBase = function ProFormFieldSetBase(props) {
18
19
  gap = _props$gap === void 0 ? 8 : _props$gap,
19
20
  style = props.style,
20
21
  children = props.children;
21
- var _useProFormContext = useProFormContext(),
22
- values = _useProFormContext.values,
23
- setFieldValue = _useProFormContext.setFieldValue;
24
- var value = name ? Array.isArray(values[name]) ? values[name] : [] : [];
22
+ var _useProFormStable = useProFormStable(),
23
+ setFieldValue = _useProFormStable.setFieldValue,
24
+ formInstance = _useProFormStable.formInstance;
25
+ var store = useProFormStore();
26
+ // Per-field subscription: re-render only when THIS set's array changes.
27
+ var rawValue = useStoreSelector(store, function (state) {
28
+ return name ? state.values[name] : undefined;
29
+ });
30
+ var value = Array.isArray(rawValue) ? rawValue : [];
25
31
  var itemIndex = -1;
26
32
  var list = React.Children.map(children, function (child) {
33
+ var _a;
27
34
  if (! /*#__PURE__*/React.isValidElement(child)) return child;
28
35
  itemIndex += 1;
29
36
  var index = itemIndex;
30
37
  return /*#__PURE__*/React.cloneElement(child, {
31
- value: value[index],
38
+ // '' (not undefined) for empty slots — an input must not switch from
39
+ // uncontrolled to controlled on its first edit.
40
+ value: (_a = value[index]) !== null && _a !== void 0 ? _a : '',
32
41
  onChange: function onChange(val) {
33
42
  if (!name) return;
34
43
  var newValue = _toConsumableArray(value);
35
44
  newValue[index] = val && _typeof(val) === 'object' && 'target' in val ? val.target.value : val;
36
45
  setFieldValue(name, newValue);
46
+ // A slot edit is a user change trigger — mark touched like any field.
47
+ if (!formInstance.isFieldTouched(name)) {
48
+ formInstance.setFieldTouched(name, true);
49
+ }
37
50
  }
38
51
  });
39
52
  });
@@ -62,4 +75,4 @@ var ProFormFieldSetBase = function ProFormFieldSetBase(props) {
62
75
  ProFormFieldSetBase.displayName = 'ProFormFieldSet';
63
76
  export var ProFormFieldSet = /*#__PURE__*/memo(ProFormFieldSetBase);
64
77
  export default ProFormFieldSet;
65
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9maWVsZHMvUHJvRm9ybUZpZWxkU2V0LmpzIiwiY29tcG9uZW50cy9Qcm9Gb3JtL3NyYy9jb21wb25lbnRzL1Byb0Zvcm0vZmllbGRzL1Byb0Zvcm1GaWVsZFNldC50c3giXSwibmFtZXMiOlsianN4IiwiX2pzeCIsIlJlYWN0IiwibWVtbyIsIlByb0Zvcm1JdGVtIiwidXNlUHJvRm9ybUNvbnRleHQiLCJkZWZhdWx0IiwiY2xhc3NuYW1lcyIsIkNTU19QUkVGSVgiLCJjbGFzc2VzIiwiY29uY2F0IiwiUHJvRm9ybUZpZWxkU2V0QmFzZSIsInByb3BzIiwibmFtZSIsImxhYmVsIiwiZGVzY3JpcHRpb24iLCJydWxlcyIsInJlcXVpcmVkIiwiZmVlZGJhY2siLCJfcHJvcHMkZ2FwIiwiZ2FwIiwic3R5bGUiLCJjaGlsZHJlbiIsIl91c2VQcm9Gb3JtQ29udGV4dCIsInZhbHVlcyIsInNldEZpZWxkVmFsdWUiLCJ2YWx1ZSIsIkFycmF5IiwiaXNBcnJheSIsIml0ZW1JbmRleCIsImxpc3QiLCJDaGlsZHJlbiIsIm1hcCIsImNoaWxkIiwiaXNWYWxpZEVsZW1lbnQiLCJpbmRleCIsImNsb25lRWxlbWVudCIsIm9uQ2hhbmdlIiwidmFsIiwibmV3VmFsdWUiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJfdHlwZW9mIiwidGFyZ2V0IiwiY29udGVudCIsImNsYXNzTmFtZSIsIk9iamVjdCIsImFzc2lnbiIsImRpc3BsYXkiLCJhbGlnbkl0ZW1zIiwiZGlzcGxheU5hbWUiLCJQcm9Gb3JtRmllbGRTZXQiXSwibWFwcGluZ3MiOiI7O0FBQUEsU0FBU0EsR0FBRyxJQUFJQyxJQUFJLFFBQVEsbUJBQW1CO0FDQS9DLE9BQU9DLEtBQUssSUFBSUMsSUFBSSxRQUFRLE9BQU87QUFFbkMsU0FBU0MsV0FBVyxRQUFRLGdCQUFnQjtBQUM1QyxTQUFTQyxpQkFBaUIsUUFBUSxZQUFZO0FBQzlDLFNBQVNDLE9BQU8sSUFBSUMsVUFBVSxRQUFRLDJC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LEVBQUVBLFFBQVE7TUFBQUksUUFBQSxFQUNsSHFCO0lBQU8sQ0FBQSxDQUNJO0VBRWxCO0VBRUEsT0FBT0EsT0FBTztBQUNoQixDQUFDO0FBRURoQyxtQkFBbUIsQ0FBQ3NDLFdBQVcsR0FBRyxpQkFBaUI7QUFFbkQsT0FBTyxJQUFNQyxlQUFlLGdCQUFHL0MsSUFBSSxDQUFDUSxtQkFBbUIsQ0FBQztBQUV4RCxlQUFldUMsZUFBZSIsImZpbGUiOiJjb21wb25lbnRzL1Byb0Zvcm0vZmllbGRzL1Byb0Zvcm1GaWVsZFNldC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgUmVhY3QsIHsgbWVtbyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IFByb0Zvcm1JdGVtIH0gZnJvbSAnLi4vUHJvRm9ybUl0ZW0nO1xuaW1wb3J0IHsgdXNlUHJvRm9ybUNvbnRleHQgfSBmcm9tICcuLi9jb250ZXh0JztcbmltcG9ydCB7IGRlZmF1bHQgYXMgY2xhc3NuYW1lcyB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2NsYXNzbmFtZXMnO1xuaW1wb3J0IHsgQ1NTX1BSRUZJWCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5jb25zdCBjbGFzc2VzID0gY2xhc3NuYW1lcyhgJHtDU1NfUFJFRklYfS1maWVsZHNldGApO1xuY29uc3QgUHJvRm9ybUZpZWxkU2V0QmFzZSA9IChwcm9wcykgPT4ge1xuICAgIGNvbnN0IHsgbmFtZSwgbGFiZWwsIGRlc2NyaXB0aW9uLCBydWxlcywgcmVxdWlyZWQsIGZlZWRiYWNrLCBnYXAgPSA4LCBzdHlsZSwgY2hpbGRyZW4sIH0gPSBwcm9wcztcbiAgICBjb25zdCB7IHZhbHVlcywgc2V0RmllbGRWYWx1ZSB9ID0gdXNlUHJvRm9ybUNvbnRleHQoKTtcbiAgICBjb25zdCB2YWx1ZSA9IG5hbWUgPyAoQXJyYXkuaXNBcnJheSh2YWx1ZXNbbmFtZV0pID8gdmFsdWVzW25hbWVdIDogW10pIDogW107XG4gICAgbGV0IGl0ZW1JbmRleCA9IC0xO1xuICAgIGNvbnN0IGxpc3QgPSBSZWFjdC5DaGlsZHJlbi5tYXAoY2hpbGRyZW4sIChjaGlsZCkgPT4ge1xuICAgICAgICBpZiAoIVJlYWN0LmlzVmFsaWRFbGVtZW50KGNoaWxkKSlcbiAgICAgICAgICAgIHJldHVybiBjaGlsZDtcbiAgICAgICAgaXRlbUluZGV4ICs9IDE7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gaXRlbUluZGV4O1xuICAgICAgICByZXR1cm4gUmVhY3QuY2xvbmVFbGVtZW50KGNoaWxkLCB7XG4gICAgICAgICAgICB2YWx1ZTogdmFsdWVbaW5kZXhdLFxuICAgICAgICAgICAgb25DaGFuZ2U6ICh2YWwpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIW5hbWUpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IFsuLi52YWx1ZV07XG4gICAgICAgICAgICAgICAgbmV3VmFsdWVbaW5kZXhdID0gdmFsICYmIHR5cGVvZiB2YWwgPT09ICdvYmplY3QnICYmICd0YXJnZXQnIGluIHZhbFxuICAgICAgICAgICAgICAgICAgICA/IHZhbC50YXJnZXQudmFsdWVcbiAgICAgICAgICAgICAgICAgICAgOiB2YWw7XG4gICAgICAgICAgICAgICAgc2V0RmllbGRWYWx1ZShuYW1lLCBuZXdWYWx1ZSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICB9KTtcbiAgICBjb25zdCBjb250ZW50ID0gKF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoKSwgc3R5bGU6IE9iamVjdC5hc3NpZ24oeyBkaXNwbGF5OiAnZmxleCcsIGdhcCwgYWxpZ25JdGVtczogJ2ZsZXgtc3RhcnQnIH0sIHN0eWxlKSwgY2hpbGRyZW46IGxpc3QgfSkpO1xuICAgIGlmIChuYW1lKSB7XG4gICAgICAgIHJldHVybiAoX2pzeChQcm9Gb3JtSXRlbSwgeyBsYWJlbDogbGFiZWwsIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbiwgbmFtZTogbmFtZSwgcnVsZXM6IHJ1bGVzLCByZXF1aXJlZDogcmVxdWlyZWQsIGZlZWRiYWNrOiBmZWVkYmFjaywgY2hpbGRyZW46IGNvbnRlbnQgfSkpO1xuICAgIH1cbiAgICByZXR1cm4gY29udGVudDtcbn07XG5Qcm9Gb3JtRmllbGRTZXRCYXNlLmRpc3BsYXlOYW1lID0gJ1Byb0Zvcm1GaWVsZFNldCc7XG5leHBvcnQgY29uc3QgUHJvRm9ybUZpZWxkU2V0ID0gbWVtbyhQcm9Gb3JtRmllbGRTZXRCYXNlKTtcbmV4cG9ydCBkZWZhdWx0IFByb0Zvcm1GaWVsZFNldDsiLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
78
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9maWVsZHMvUHJvRm9ybUZpZWxkU2V0LmpzIiwiY29tcG9uZW50cy9Qcm9Gb3JtL3NyYy9jb21wb25lbnRzL1Byb0Zvcm0vZmllbGRzL1Byb0Zvcm1GaWVsZFNldC50c3giXSwibmFtZXMiOlsianN4IiwiX2pzeCIsIlJlYWN0IiwibWVtbyIsIlByb0Zvcm1JdGVtIiwidXNlUHJvRm9ybVN0YWJsZSIsInVzZVByb0Zvcm1TdG9yZSIsInVzZVN0b3JlU2VsZWN0b3IiLCJkZWZhdWx0IiwiY2xhc3NuYW1lcyIsIkNTU19QUkVGSVgiLCJjbGFzc2VzIiwiY29uY2F0IiwiUHJvRm9ybUZpZWxkU2V0QmFzZSIsInByb3BzIiwibmFtZSIsImxhYmVsIiwiZGVzY3JpcHRpb24iLCJydWxlcyIsInJlcXVpcmVkIiwiZmVlZGJhY2siLCJfcHJvcHMkZ2FwIiwiZ2FwIiwic3R5bGUiLCJjaGlsZHJlbiIsIl91c2VQcm9Gb3JtU3RhYmxlIiwic2V0RmllbGRWYWx1ZSIsImZvcm1JbnN0YW5jZSIsInN0b3JlIiwicmF3VmFsdWUiLCJzdGF0ZSIsInZhbHVlcyIsInVuZGVmaW5lZCIsInZhbHVlIiwiQXJyYXkiLCJpc0FycmF5IiwiaXRlbUluZGV4IiwibGlzdCIsIkNoaWxkcmVuIiwibWFwIiwiY2hpbGQiLCJfYSIsImlzVmFsaWRFbGVtZW50IiwiaW5kZXgiLCJjbG9uZUVsZW1lbnQiLCJvbkNoYW5nZSIsInZhbCIsIm5ld1ZhbHVlIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiX3R5cGVvZiIsInRhcmdldCIsImlzRmllbGRUb3VjaGVkIiwic2V0RmllbGRUb3VjaGVkIiwiY29udGVudCIsImNsYXNzTmFtZSIsIk9iamVjdCIsImFzc2lnbiIsImRpc3BsYXkiLCJhbGlnbkl0ZW1zIiwiZGlzcGxheU5hbWUiLCJQcm9Gb3JtRmllbGRTZXQiXSwibWFwcGluZ3MiOiI7O0FBQUEsU0FBU0EsR0FBRyxJQUFJQyxJQUFJLFFBQVEsbUJBQW1CO0FD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QUNwQyxJQUFJLENBQUMsRUFBRTtVQUN0Q1ksWUFBWSxDQUFDeUIsZUFBZSxDQUFDckMsSUFBSSxFQUFFLElBQUksQ0FBQztRQUMxQztNQUNGO0lEYkUsQ0NjSCxDQUFDO0VBQ0osQ0FBQyxDQUFDO0VBRUYsSUFBTXNDLE9BQU8sR0FDWHBELElBQUEsQ0FBQSxLQUFBLEVBQUE7SUFBS3FELFNBQVMsRUFBRTNDLE9BQU8sQ0FBQSxDQUFFO0lBQUVZLEtBQUssRUFBQWdDLE1BQUEsQ0FBQUMsTUFBQSxDQUFBO01BQUlDLE9BQU8sRUFBRSxNQUFNO01BQUVuQyxHQUFHLEVBQUhBLEdBQUc7TUFBRW9DLFVBQVUsRUFBRTtJQUFZLENBQUEsRUFBS25DLEtBQUssQ0FBQTtJQUFBQyxRQUFBLEVBQ3pGYTtFQUFJLENBQUEsQ0FFUjtFQUVELElBQUl0QixJQUFJLEVBQUU7SUFDUixPQUNFZCxJQUFBLENBQUNHLFdBQVcsRUFBQTtNQUFDWSxLQUFLLEVBQUVBLEtBQUs7TUFBRUMsV0FBVyxFQUFFQSxXQUFXO01BQUVGLElBQUksRUFBRUEsSUFBSTtNQUFFRyxLQUFLLEVBQUVBLEtBQUs7TUFBRUMsUUFBUSxFQUFFQSxRQUFRO01BQUVDLFFBQVEsRUFBRUEsUUFBUTtNQUFBSSxRQUFBLEVBQ2xINkI7SUFBTyxDQUFBLENBQ0k7RUFFbEI7RUFFQSxPQUFPQSxPQUFPO0FBQ2hCLENBQUM7QUFFRHhDLG1CQUFtQixDQUFDOEMsV0FBVyxHQUFHLGlCQUFpQjtBQUVuRCxPQUFPLElBQU1DLGVBQWUsZ0JBQUd6RCxJQUFJLENBQUNVLG1CQUFtQixDQUFDO0FBRXhELGVBQWUrQyxlQUFlIiwiZmlsZSI6ImNvbXBvbmVudHMvUHJvRm9ybS9maWVsZHMvUHJvRm9ybUZpZWxkU2V0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCBSZWFjdCwgeyBtZW1vIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgUHJvRm9ybUl0ZW0gfSBmcm9tICcuLi9Qcm9Gb3JtSXRlbSc7XG5pbXBvcnQgeyB1c2VQcm9Gb3JtU3RhYmxlLCB1c2VQcm9Gb3JtU3RvcmUgfSBmcm9tICcuLi9jb250ZXh0JztcbmltcG9ydCB7IHVzZVN0b3JlU2VsZWN0b3IgfSBmcm9tICcuLi9jb3JlL2Zvcm1TdG9yZSc7XG5pbXBvcnQgeyBkZWZhdWx0IGFzIGNsYXNzbmFtZXMgfSBmcm9tICcuLi8uLi8uLi91dGlscy9jbGFzc25hbWVzJztcbmltcG9ydCB7IENTU19QUkVGSVggfSBmcm9tICcuLi9jb25zdGFudHMnO1xuY29uc3QgY2xhc3NlcyA9IGNsYXNzbmFtZXMoYCR7Q1NTX1BSRUZJWH0tZmllbGRzZXRgKTtcbmNvbnN0IFByb0Zvcm1GaWVsZFNldEJhc2UgPSAocHJvcHMpID0+IHtcbiAgICBjb25zdCB7IG5hbWUsIGxhYmVsLCBkZXNjcmlwdGlvbiwgcnVsZXMsIHJlcXVpcmVkLCBmZWVkYmFjaywgZ2FwID0gOCwgc3R5bGUsIGNoaWxkcmVuLCB9ID0gcHJvcHM7XG4gICAgY29uc3QgeyBzZXRGaWVsZFZhbHVlLCBmb3JtSW5zdGFuY2UgfSA9IHVzZVByb0Zvcm1TdGFibGUoKTtcbiAgICBjb25zdCBzdG9yZSA9IHVzZVByb0Zvcm1TdG9yZSgpO1xuICAgIC8vIFBlci1maWVsZCBzdWJzY3JpcHRpb246IHJlLXJlbmRlciBvbmx5IHdoZW4gVEhJUyBzZXQncyBhcnJheSBjaGFuZ2VzLlxuICAgIGNvbnN0IHJhd1ZhbHVlID0gdXNlU3RvcmVTZWxlY3RvcihzdG9yZSwgKHN0YXRlKSA9PiAobmFtZSA/IHN0YXRlLnZhbHVlc1tuYW1lXSA6IHVuZGVmaW5lZCkpO1xuICAgIGNvbnN0IHZhbHVlID0gQXJyYXkuaXNBcnJheShyYXdWYWx1ZSkgPyByYXdWYWx1ZSA6IFtdO1xuICAgIGxldCBpdGVtSW5kZXggPSAtMTtcbiAgICBjb25zdCBsaXN0ID0gUmVhY3QuQ2hpbGRyZW4ubWFwKGNoaWxkcmVuLCAoY2hpbGQpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAoIVJlYWN0LmlzVmFsaWRFbGVtZW50KGNoaWxkKSlcbiAgICAgICAgICAgIHJldHVybiBjaGlsZDtcbiAgICAgICAgaXRlbUluZGV4ICs9IDE7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gaXRlbUluZGV4O1xuICAgICAgICByZXR1cm4gUmVhY3QuY2xvbmVFbGVtZW50KGNoaWxkLCB7XG4gICAgICAgICAgICAvLyAnJyAobm90IHVuZGVmaW5lZCkgZm9yIGVtcHR5IHNsb3RzIOKAlCBhbiBpbnB1dCBtdXN0IG5vdCBzd2l0Y2ggZnJvbVxuICAgICAgICAgICAgLy8gdW5jb250cm9sbGVkIHRvIGNvbnRyb2xsZWQgb24gaXRzIGZpcnN0IGVkaXQuXG4gICAgICAgICAgICB2YWx1ZTogKF9hID0gdmFsdWVbaW5kZXhdKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnJyxcbiAgICAgICAgICAgIG9uQ2hhbmdlOiAodmFsKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFuYW1lKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3VmFsdWUgPSBbLi4udmFsdWVdO1xuICAgICAgICAgICAgICAgIG5ld1ZhbHVlW2luZGV4XSA9IHZhbCAmJiB0eXBlb2YgdmFsID09PSAnb2JqZWN0JyAmJiAndGFyZ2V0JyBpbiB2YWxcbiAgICAgICAgICAgICAgICAgICAgPyB2YWwudGFyZ2V0LnZhbHVlXG4gICAgICAgICAgICAgICAgICAgIDogdmFsO1xuICAgICAgICAgICAgICAgIHNldEZpZWxkVmFsdWUobmFtZSwgbmV3VmFsdWUpO1xuICAgICAgICAgICAgICAgIC8vIEEgc2xvdCBlZGl0IGlzIGEgdXNlciBjaGFuZ2UgdHJpZ2dlciDigJQgbWFyayB0b3VjaGVkIGxpa2UgYW55IGZpZWxkLlxuICAgICAgICAgICAgICAgIGlmICghZm9ybUluc3RhbmNlLmlzRmllbGRUb3VjaGVkKG5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvcm1JbnN0YW5jZS5zZXRGaWVsZFRvdWNoZWQobmFtZSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gICAgY29uc3QgY29udGVudCA9IChfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCksIHN0eWxlOiBPYmplY3QuYXNzaWduKHsgZGlzcGxheTogJ2ZsZXgnLCBnYXAsIGFsaWduSXRlbXM6ICdmbGV4LXN0YXJ0JyB9LCBzdHlsZSksIGNoaWxkcmVuOiBsaXN0IH0pKTtcbiAgICBpZiAobmFtZSkge1xuICAgICAgICByZXR1cm4gKF9qc3goUHJvRm9ybUl0ZW0sIHsgbGFiZWw6IGxhYmVsLCBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb24sIG5hbWU6IG5hbWUsIHJ1bGVzOiBydWxlcywgcmVxdWlyZWQ6IHJlcXVpcmVkLCBmZWVkYmFjazogZmVlZGJhY2ssIGNoaWxkcmVuOiBjb250ZW50IH0pKTtcbiAgICB9XG4gICAgcmV0dXJuIGNvbnRlbnQ7XG59O1xuUHJvRm9ybUZpZWxkU2V0QmFzZS5kaXNwbGF5TmFtZSA9ICdQcm9Gb3JtRmllbGRTZXQnO1xuZXhwb3J0IGNvbnN0IFByb0Zvcm1GaWVsZFNldCA9IG1lbW8oUHJvRm9ybUZpZWxkU2V0QmFzZSk7XG5leHBvcnQgZGVmYXVsdCBQcm9Gb3JtRmllbGRTZXQ7IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9