@1money/react-ui 1.13.10 → 1.14.0-alpha.1

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.
@@ -11,35 +11,77 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
11
11
  import { memo, useMemo, useState, useCallback, useRef, useEffect } from 'react';
12
12
  import BigNumber from 'bignumber.js';
13
13
  import { numericFormatter } from 'react-number-format';
14
+ import { Skeleton } from 'primereact/skeleton';
15
+ import Spinner from '../Spinner';
14
16
  import { default as classnames, joinCls } from '../../utils/classnames';
15
17
  var MIN_INPUT_WIDTH = 33;
16
18
  var normalizeNumberInput = function normalizeNumberInput(val) {
17
19
  return val.replace(/[\u3002\uff0e\uff61]/g, '.').replace(/[\uFF0C]/g, ',');
18
20
  };
21
+ var clampValueInRange = function clampValueInRange(val, min, max) {
22
+ if (val === '' || val === '-' || isNaN(+val)) return {
23
+ val: val,
24
+ clamped: false
25
+ };
26
+ var clampedVal = val;
27
+ var clamped = false;
28
+ var bnVal = BigNumber(val);
29
+ if (typeof min === 'number' || typeof min === 'bigint') {
30
+ var minBn = BigNumber(min);
31
+ if (bnVal.lt(minBn)) {
32
+ clampedVal = '' + min;
33
+ clamped = true;
34
+ }
35
+ }
36
+ if (typeof max === 'number' || typeof max === 'bigint') {
37
+ var maxBn = BigNumber(max);
38
+ if (bnVal.gt(maxBn)) {
39
+ clampedVal = '' + max;
40
+ clamped = true;
41
+ }
42
+ }
43
+ return {
44
+ val: clampedVal,
45
+ clamped: clamped
46
+ };
47
+ };
19
48
  export var InputAmount = function InputAmount(props) {
20
49
  var value = props.value,
50
+ _props$type = props.type,
51
+ type = _props$type === void 0 ? 'primary' : _props$type,
21
52
  maxFractionDigits = props.maxFractionDigits,
22
53
  children = props.children,
54
+ _props$placeholder = props.placeholder,
55
+ placeholder = _props$placeholder === void 0 ? '0' : _props$placeholder,
56
+ min = props.min,
57
+ max = props.max,
58
+ _props$size = props.size,
59
+ size = _props$size === void 0 ? 'large' : _props$size,
60
+ footnote = props.footnote,
61
+ footnoteCls = props.footnoteCls,
23
62
  className = props.className,
24
63
  wrapperCls = props.wrapperCls,
64
+ labelCls = props.labelCls,
25
65
  _props$prefixCls = props.prefixCls,
26
66
  prefixCls = _props$prefixCls === void 0 ? 'input-amount' : _props$prefixCls,
27
67
  messageCls = props.messageCls,
28
- footnoteCls = props.footnoteCls,
29
68
  invalid = props.invalid,
30
- _props$placeholder = props.placeholder,
31
- placeholder = _props$placeholder === void 0 ? '0' : _props$placeholder,
32
69
  negative = props.negative,
70
+ required = props.required,
71
+ loading = props.loading,
72
+ success = props.success,
73
+ disabled = props.disabled,
74
+ readOnly = props.readOnly,
75
+ label = props.label,
33
76
  prefix = props.prefix,
34
- currency = props.currency,
35
77
  suffix = props.suffix,
78
+ currency = props.currency,
36
79
  message = props.message,
37
- footnote = props.footnote,
38
80
  onChange = props.onChange,
39
81
  _onBlur = props.onBlur,
40
82
  _onFocus = props.onFocus,
41
- rest = __rest(props, ["value", "maxFractionDigits", "children", "className", "wrapperCls", "prefixCls", "messageCls", "footnoteCls", "invalid", "placeholder", "negative", "prefix", "currency", "suffix", "message", "footnote", "onChange", "onBlur", "onFocus"]);
42
- var classes = classnames(prefixCls);
83
+ rest = __rest(props, ["value", "type", "maxFractionDigits", "children", "placeholder", "min", "max", "size", "footnote", "footnoteCls", "className", "wrapperCls", "labelCls", "prefixCls", "messageCls", "invalid", "negative", "required", "loading", "success", "disabled", "readOnly", "label", "prefix", "suffix", "currency", "message", "onChange", "onBlur", "onFocus"]);
84
+ var classes = classnames("".concat(prefixCls, "-").concat(type));
43
85
  var inputRef = useRef(null);
44
86
  var fakeEleRef = useRef(null);
45
87
  var prefixRef = useRef(null);
@@ -47,6 +89,8 @@ export var InputAmount = function InputAmount(props) {
47
89
  var currencyRef = useRef(null);
48
90
  var containerRef = useRef(null);
49
91
  var inputCaretPositionRef = useRef(0);
92
+ var prevValueRef = useRef(null);
93
+ var prevFocusRef = useRef(false);
50
94
  var _useState = useState(null),
51
95
  _useState2 = _slicedToArray(_useState, 2),
52
96
  _value = _useState2[0],
@@ -83,8 +127,10 @@ export var InputAmount = function InputAmount(props) {
83
127
  input.focus();
84
128
  }, []);
85
129
  var handleChange = useCallback(function (e) {
86
- var _a, _b, _c, _d, _e;
130
+ var _a, _b, _c, _d, _e, _f;
131
+ if (disabled || readOnly) return;
87
132
  var val = e.target.value;
133
+ var truncatedFraction = false;
88
134
  if (val != null) val = normalizeNumberInput(val).split(',').join('');
89
135
  var hasDecimalPoint = !!val && val.endsWith('.');
90
136
  if (hasDecimalPoint) val = val.slice(0, -1);
@@ -95,28 +141,43 @@ export var InputAmount = function InputAmount(props) {
95
141
  if (typeof maxFractionDigits === 'number' || typeof maxFractionDigits === 'bigint') {
96
142
  var _val$split = val.split('.'),
97
143
  _val$split2 = _slicedToArray(_val$split, 2),
144
+ _int = _val$split2[0],
98
145
  decimal = _val$split2[1];
99
- if (decimal != null && decimal.length > Number(maxFractionDigits)) return;
146
+ if (decimal != null && decimal.length > Number(maxFractionDigits)) {
147
+ val = "".concat(_int, ".").concat(decimal.slice(0, Number(maxFractionDigits)));
148
+ truncatedFraction = true;
149
+ }
150
+ }
151
+ var clampedByRange = false;
152
+ if (typeof min === 'number' || typeof min === 'bigint' || typeof max === 'number' || typeof max === 'bigint') {
153
+ var res = clampValueInRange(val, min, max);
154
+ val = res.val;
155
+ clampedByRange = res.clamped;
100
156
  }
101
157
  if (inputRef.current) {
158
+ var selectionStart = (_a = inputRef.current.selectionStart) !== null && _a !== void 0 ? _a : 0;
159
+ var currentSlice = (_c = (_b = e.target.value) === null || _b === void 0 ? void 0 : _b.slice(0, selectionStart)) !== null && _c !== void 0 ? _c : '';
160
+ var caretRawLength = normalizeNumberInput(currentSlice).split(',').join('').length;
102
161
  var formattedNewVal = numericFormatter(val, {
103
162
  thousandSeparator: true,
104
163
  allowNegative: negative
105
164
  });
106
- var isAdd = val.length > ((_a = _value === null || _value === void 0 ? void 0 : _value.length) !== null && _a !== void 0 ? _a : 0);
107
- var position = (_b = inputRef.current.selectionStart) !== null && _b !== void 0 ? _b : 0;
108
- var oldPosVal = formattedValue.slice(0, position - (isAdd ? 1 : -1));
109
- position = oldPosVal.split(',').join('').length + (isAdd ? 1 : -1);
110
- var posVal = val.slice(0, position);
111
- formattedNewVal.split('').reduce(function (acc, _char, ind) {
112
- if (_char === ',') return acc;else acc.push(_char);
113
- if (acc.join('') === posVal) {
114
- position = ind + 1;
115
- return acc;
165
+ var targetRawPos = Math.min(caretRawLength, val.length);
166
+ var caretPos = formattedNewVal.length;
167
+ var seen = 0;
168
+ for (var i = 0; i < formattedNewVal.length; i++) {
169
+ if (formattedNewVal[i] === ',') continue;
170
+ seen += 1;
171
+ if (seen === targetRawPos) {
172
+ caretPos = i + 1;
173
+ break;
116
174
  }
117
- return acc;
118
- }, []);
119
- inputCaretPositionRef.current = position + (hasDecimalPoint ? 2 : 0);
175
+ }
176
+ if (targetRawPos === 0) caretPos = 0;
177
+ if (hasDecimalPoint && !truncatedFraction && targetRawPos === val.length) {
178
+ caretPos = Math.min(formattedNewVal.length + 1, caretPos + 1);
179
+ }
180
+ inputCaretPositionRef.current = truncatedFraction ? formattedNewVal.length : clampedByRange ? formattedNewVal.length : caretPos;
120
181
  }
121
182
  if (typeof value === 'undefined') {
122
183
  if (val === '') {
@@ -124,7 +185,7 @@ export var InputAmount = function InputAmount(props) {
124
185
  } else if (isStandaloneMinus) {
125
186
  setValue('-');
126
187
  } else {
127
- var decimals = (_e = (_d = (_c = val.match(/\.(\d+)$/)) === null || _c === void 0 ? void 0 : _c[1]) === null || _d === void 0 ? void 0 : _d.length) !== null && _e !== void 0 ? _e : 0;
188
+ var decimals = (_f = (_e = (_d = val.match(/\.(\d+)$/)) === null || _d === void 0 ? void 0 : _d[1]) === null || _e === void 0 ? void 0 : _e.length) !== null && _f !== void 0 ? _f : 0;
128
189
  var bn = BigNumber(val);
129
190
  var normalized = bn.toFixed(decimals);
130
191
  if (negative && val.trim().startsWith('-') && bn.isZero()) {
@@ -134,7 +195,7 @@ export var InputAmount = function InputAmount(props) {
134
195
  }
135
196
  }
136
197
  onChange === null || onChange === void 0 ? void 0 : onChange(e);
137
- }, [onChange, _value, value, formattedValue, maxFractionDigits, negative]);
198
+ }, [onChange, _value, value, formattedValue, maxFractionDigits, min, max, negative, disabled, readOnly]);
138
199
  useEffect(function () {
139
200
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
140
201
  var containerWidth = (_b = (_a = containerRef.current) === null || _a === void 0 ? void 0 : _a.offsetWidth) !== null && _b !== void 0 ? _b : MIN_INPUT_WIDTH;
@@ -147,8 +208,12 @@ export var InputAmount = function InputAmount(props) {
147
208
  var isMax = fakeWidth >= maxWidth;
148
209
  setWidth(Math.min(maxWidth, Math.max(fakeWidth, MIN_INPUT_WIDTH)));
149
210
  setIsMaxWidth(isMax);
150
- if (isFocus) scrollToEnd(true);
151
- }, [_value, prefix, suffix, currency, isFocus]);
211
+ if (isFocus && (_value !== prevValueRef.current || !prevFocusRef.current)) {
212
+ scrollToEnd(true);
213
+ }
214
+ prevValueRef.current = _value;
215
+ prevFocusRef.current = isFocus;
216
+ }, [_value, prefix, suffix, currency, isFocus, scrollToEnd]);
152
217
  useEffect(function () {
153
218
  // clear negative sign if not allowed
154
219
  if (negative) return;
@@ -190,12 +255,16 @@ export var InputAmount = function InputAmount(props) {
190
255
  if ((typeof val === 'string' || typeof val === 'number') && (typeof maxFractionDigits === 'number' || typeof maxFractionDigits === 'bigint')) {
191
256
  var _split = ('' + val).split('.'),
192
257
  _split2 = _slicedToArray(_split, 2),
193
- _int = _split2[0],
258
+ _int2 = _split2[0],
194
259
  decimal = _split2[1];
195
260
  if (decimal != null && decimal.length > Number(maxFractionDigits)) {
196
- val = _int + '.' + decimal.slice(0, Number(maxFractionDigits));
261
+ val = _int2 + '.' + decimal.slice(0, Number(maxFractionDigits));
197
262
  }
198
263
  }
264
+ if (typeof val === 'string' || typeof val === 'number' || typeof val === 'bigint') {
265
+ var res = clampValueInRange('' + val, min, max);
266
+ val = res.val;
267
+ }
199
268
  if (val === '' || val == null) {
200
269
  setValue(null);
201
270
  } else {
@@ -208,10 +277,17 @@ export var InputAmount = function InputAmount(props) {
208
277
  }
209
278
  setValue("".concat(normalized).concat(hasDecimalPoint ? '.' : '').trim());
210
279
  }
211
- }, [value, maxFractionDigits, negative]);
280
+ }, [value, maxFractionDigits, min, max, negative]);
212
281
  return _jsxs("div", {
213
- className: classes('wrapper', joinCls(wrapperCls, invalid && classes('invalid'))),
214
- children: [_jsxs("div", {
282
+ className: classes('wrapper', joinCls(wrapperCls, invalid && classes('invalid'), success && classes('success'), disabled && classes('disabled'), readOnly && classes('readonly'), _value && classes('filled'))),
283
+ children: [label ? loading ? _jsx(Skeleton, {
284
+ width: '72px',
285
+ height: '18px',
286
+ className: classes('label-loading')
287
+ }) : _jsx("span", {
288
+ className: classes('label', joinCls(required && classes('label-required'), labelCls)),
289
+ children: label
290
+ }) : null, _jsxs("div", {
215
291
  ref: containerRef,
216
292
  className: classes(void 0, joinCls(className, isFocus && classes('focus'))),
217
293
  onClick: function onClick(e) {
@@ -230,6 +306,8 @@ export var InputAmount = function InputAmount(props) {
230
306
  ref: inputRef,
231
307
  value: formattedValue,
232
308
  placeholder: placeholder,
309
+ readOnly: readOnly,
310
+ disabled: disabled,
233
311
  style: {
234
312
  '--input-width': "".concat(_width, "px")
235
313
  },
@@ -247,11 +325,14 @@ export var InputAmount = function InputAmount(props) {
247
325
  ref: currencyRef,
248
326
  className: classes('currency'),
249
327
  children: currency
250
- }), suffix && _jsx("span", {
328
+ }), loading ? _jsx(Spinner, {
329
+ className: classes('suffix-loading'),
330
+ strokeWidth: '4'
331
+ }) : suffix ? _jsx("span", {
251
332
  ref: suffixRef,
252
333
  className: classes('suffix'),
253
334
  children: suffix
254
- }), _jsx("span", {
335
+ }) : null, _jsx("span", {
255
336
  ref: fakeEleRef,
256
337
  className: classes('fake'),
257
338
  onClick: function onClick(e) {
@@ -275,4 +356,4 @@ export var InputAmount = function InputAmount(props) {
275
356
  });
276
357
  };
277
358
  export default /*#__PURE__*/memo(InputAmount);
278
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvSW5wdXRBbW91bnQvSW5wdXRBbW91bnQuanMiLCJjb21wb25lbnRzL3NyYy9jb21wb25lbnRzL0lucHV0QW1vdW50L0lucHV0QW1vdW50LnRzeCJdLCJuYW1lcyI6WyJfX3Jlc3QiLCJzIiwiZSIsInQiLCJwIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaW5kZXhPZiIsImdldE93blByb3BlcnR5U3ltYm9scyIsImkiLCJsZW5ndGgiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJtZW1vIiwidXNlTWVtbyIsInVzZVN0YXRlIiwidXNlQ2FsbGJhY2siLCJ1c2VSZWYiLCJ1c2VFZmZlY3QiLCJCaWdOdW1iZXIiLCJudW1lcmljRm9ybWF0dGVyIiwiZGVmYXVsdCIsImNsYXNzbmFtZXMiLCJqb2luQ2xzIiwiTUlOX0lOUFVUX1dJRFRIIiwibm9ybWFsaXplTnVtYmVySW5wdXQiLCJ2YWwiLCJyZXBsYWNlIiwiSW5wdXRBbW91bnQiLCJwcm9wcyIsInZhbHVlIiwibWF4RnJhY3Rpb25EaWdpdHMiLCJjaGlsZHJlbiIsImNsYXNzTmFtZSIsIndyYXBwZXJDbHMiLCJfcHJvcHMkcHJlZml4Q2xzIiwicHJlZml4Q2xzIiwibWVzc2FnZUNscyIsImZvb3Rub3RlQ2xzIiwiaW52YWxpZCIsIl9wcm9wcyRwbGFjZWhvbGRlciIsInBsYWNlaG9sZGVyIiwibmVnYXRpdmUiLCJwcmVmaXgiLCJjdXJyZW5jeSIsInN1ZmZpeCIsIm1lc3NhZ2UiLCJmb290bm90ZSIsIm9uQ2hhbmdlIiwib25CbHVyIiwib25Gb2N1cyIsInJlc3QiLCJjbGFzc2VzIiwiaW5wdXRSZWYiLCJmYWtlRWxlUmVmIiwicHJlZml4UmVmIiwic3VmZml4UmVmIiwiY3VycmVuY3lSZWYiLCJjb250YWluZXJSZWYiLCJpbnB1dENhcmV0UG9zaXRpb25SZWYiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJfdmFsdWUiLCJzZXRWYWx1ZSIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiX3dpZHRoIiwic2V0V2lkdGgiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImlzTWF4V2lkdGgiLCJzZXRJc01heFdpZHRoIiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJpc0ZvY3VzIiwic2V0SXNGb2N1cyIsImZvcm1hdHRlZFZhbHVlIiwidGhvdXNhbmRTZXBhcmF0b3IiLCJhbGxvd05lZ2F0aXZlIiwic2Nyb2xsVG9FbmQiLCJzdGlja3kiLCJhcmd1bWVudHMiLCJ1bmRlZmluZWQiLCJfYSIsImlucHV0IiwiY3VycmVudCIsImxlbiIsInBvc2l0aW9uIiwic2Nyb2xsTGVmdCIsInNob3VsZFRvRW5kIiwic3RhcnQiLCJzZXRTZWxlY3Rpb25SYW5nZSIsInNjcm9sbFdpZHRoIiwiZm9jdXMiLCJoYW5kbGVDaGFuZ2UiLCJfYiIsIl9jIiwiX2QiLCJfZSIsInRhcmdldCIsInNwbGl0Iiwiam9pbiIsImhhc0RlY2ltYWxQb2ludCIsImVuZHNXaXRoIiwic2xpY2UiLCJpbmNsdWRlcyIsImlzU3RhbmRhbG9uZU1pbnVzIiwiaXNOYU4iLCJfdmFsJHNwbGl0IiwiX3ZhbCRzcGxpdDIiLCJkZWNpbWFsIiwiTnVtYmVyIiwiZm9ybWF0dGVkTmV3VmFsIiwiaXNBZGQiLCJzZWxlY3Rpb25TdGFydCIsIm9sZFBvc1ZhbCIsInBvc1ZhbCIsInJlZHVjZSIsImFjYyIsImNoYXIiLCJpbmQiLCJwdXNoIiwiZGVjaW1hbHMiLCJtYXRjaCIsImJuIiwibm9ybWFsaXplZCIsInRvRml4ZWQiLCJ0cmltIiwic3RhcnRzV2l0aCIsImlzWmVybyIsImNvbmNhdCIsIl9mIiwiX2ciLCJfaCIsIl9qIiwiX2siLCJjb250YWluZXJXaWR0aCIsIm9mZnNldFdpZHRoIiwicHJlZml4V2lkdGgiLCJzdWZmaXhXaWR0aCIsImN1cnJlbmN5V2lkdGgiLCJmYWtlV2lkdGgiLCJnYXBXaWR0aCIsIm1heFdpZHRoIiwiaXNNYXgiLCJNYXRoIiwibWluIiwibWF4IiwiYWJzIiwiemVybyIsIkJpZ0ludCIsIl9zcGxpdCIsIl9zcGxpdDIiLCJpbnQiLCJzdHJWYWwiLCJyZWYiLCJvbkNsaWNrIiwiSFRNTElucHV0RWxlbWVudCIsImFzc2lnbiIsInN0eWxlIiwic3RvcFByb3BhZ2F0aW9uIl0sIm1hcHBpbmdzIjoiO0FBQUEsSUFBSUEsTUFBTSxHQUFJLElBQUksSUFBSSxJQUFJLENBQUNBLE1BQU0sSUFBSyxVQUFVQyxDQUFDLEVBQUVDLENBQUMsRUFBRTtFQUNsRCxJQUFJQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0VBQ1YsS0FBSyxJQUFJQyxDQUFDLElBQUlILENBQUMsRUFBRSxJQUFJSSxNQUFNLENBQUNDLFNBQVMsQ0FBQ0MsY0FBYyxDQUFDQyxJQUFJLENBQUNQLENBQUMsRUFBRUcsQ0FBQyxDQUFDLElBQUlGLENBQUMsQ0FBQ08sT0FBTyxDQUFDTCxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQy9FRCxDQUFDLENBQUNDLENBQUMsQ0FBQyxHQUFHSCxDQUFDLENBQUNHLENBQUMsQ0FBQztFQUNmLElBQUlILENBQUMsSUFBSSxJQUFJLElBQUksT0FBT0ksTUFBTSxDQUFDSyxxQkFBcUIsS0FBSyxVQUFVLEVBQy9ELEtBQUssSUFBSUMsQ0FBQyxHQUFHLENBQUMsRUFBRVAsQ0FBQyxHQUFHQyxNQUFNLENBQUNLLHFCQUFxQixDQUFDVCxDQUFDLENBQUMsRUFBRVUsQ0FBQyxHQUFHUCxDQUFDLENBQUNRLE1BQU0sRUFBRUQsQ0FBQyxFQUFFLEVBQUU7SUFDcEUsSUFBSVQsQ0FBQyxDQUFDTyxPQUFPLENBQUNMLENBQUMsQ0FBQ08sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUlOLE1BQU0sQ0FBQ0MsU0FBUyxDQUFDTyxvQkFBb0IsQ0FBQ0wsSUFBSSxDQUFDUCxDQUFDLEVBQUVHLENBQUMsQ0FBQ08sQ0FBQyxDQUFDLENBQUMsRUFDMUVSLENBQUMsQ0FBQ0MsQ0FBQyxDQUFDTyxDQUFDLENBQUMsQ0FB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QTtRQUFLdUIsU0FBUyxFQUFFbUIsT0FBTyxDQUFDLFNBQVMsRUFBRWYsVUFBVSxDQUFDO1FBQUFMLFFBQUEsRUFBR2M7TUFBTyxDQUFBLENBQU8sRUFDMUVDLFFBQVEsSUFBSXJDLElBQUEsQ0FBQSxLQUFBLEVBQUE7UUFBS3VCLFNBQVMsRUFBRW1CLE9BQU8sQ0FBQyxVQUFVLEVBQUVkLFdBQVcsQ0FBQztRQUFBTixRQUFBLEVBQUdlO01BQVEsQ0FBQSxDQUFPO0lBQUEsQ0FBQSxDQUMzRTtFQUFBLENBQUEsQ0FFSjtBQUNSLENBQUM7QUFFRCw0QkFBZWxDLElBQUksQ0FBQ2UsV0FBVyxDQUFDIiwiZmlsZSI6ImNvbXBvbmVudHMvSW5wdXRBbW91bnQvSW5wdXRBbW91bnQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19yZXN0ID0gKHRoaXMgJiYgdGhpcy5fX3Jlc3QpIHx8IGZ1bmN0aW9uIChzLCBlKSB7XG4gICAgdmFyIHQgPSB7fTtcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcbiAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXG4gICAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XG4gICAgICAgIH1cbiAgICByZXR1cm4gdDtcbn07XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgbWVtbywgdXNlTWVtbywgdXNlU3RhdGUsIHVzZUNhbGxiYWNrLCB1c2VSZWYsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCB7IG51bWVyaWNGb3JtYXR0ZXIgfSBmcm9tICdyZWFjdC1udW1iZXItZm9ybWF0JztcbmltcG9ydCB7IGRlZmF1bHQgYXMgY2xhc3NuYW1lcywgam9pbkNscyB9IGZyb20gJy4uLy4uL3V0aWxzL2NsYXNzbmFtZXMnO1xuY29uc3QgTUlOX0lOUFVUX1dJRFRIID0gMzM7XG5jb25zdCBub3JtYWxpemVOdW1iZXJJbnB1dCA9ICh2YWwpID0+IHZhbFxuICAgIC5yZXBsYWNlKC9bXFx1MzAwMlxcdWZmMGVcXHVmZjYxXS9nLCAnLicpXG4gICAgLnJlcGxhY2UoL1tcXHVGRjBDXS9nLCAnLCcpO1xuZXhwb3J0IGNvbnN0IElucHV0QW1vdW50ID0gcHJvcHMgPT4ge1xuICAgIGNvbnN0IHsgdmFsdWUsIG1heEZyYWN0aW9uRGlnaXRzLCBjaGlsZHJlbiwgY2xhc3NOYW1lLCB3cmFwcGVyQ2xzLCBwcmVmaXhDbHMgPSAnaW5wdXQtYW1vdW50JywgbWVzc2FnZUNscywgZm9vdG5vdGVDbHMsIGludmFsaWQsIHBsYWNlaG9sZGVyID0gJzAnLCBuZWdhdGl2ZSwgcHJlZml4LCBjdXJyZW5jeSwgc3VmZml4LCBtZXNzYWdlLCBmb290bm90ZSwgb25DaGFuZ2UsIG9uQmx1ciwgb25Gb2N1cyB9ID0gcHJvcHMsIHJlc3QgPSBfX3Jlc3QocHJvcHMsIFtcInZhbHVlXCIsIFwibWF4RnJhY3Rpb25EaWdpdHNcIiwgXCJjaGlsZHJlblwiLCBcImNsYXNzTmFtZVwiLCBcIndyYXBwZXJDbHNcIiwgXCJwcmVmaXhDbHNcIiwgXCJtZXNzYWdlQ2xzXCIsIFwiZm9vdG5vdGVDbHNcIiwgXCJpbnZhbGlkXCIsIFwicGxhY2Vob2xkZXJcIiwgXCJuZWdhdGl2ZVwiLCBcInByZWZpeFwiLCBcImN1cnJlbmN5XCIsIFwic3VmZml4XCIsIFwibWVzc2FnZVwiLCBcImZvb3Rub3RlXCIsIFwib25DaGFuZ2VcIiwgXCJvbkJsdXJcIiwgXCJvbkZvY3VzXCJdKTtcbiAgICBjb25zdCBjbGFzc2VzID0gY2xhc3NuYW1lcyhwcmVmaXhDbHMpO1xuICAgIGNvbnN0IGlucHV0UmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGZha2VFbGVSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgcHJlZml4UmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IHN1ZmZpeFJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBjdXJyZW5jeVJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBjb250YWluZXJSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgaW5wdXRDYXJldFBvc2l0aW9uUmVmID0gdXNlUmVmKDApO1xuICAgIGNvbnN0IFtfdmFsdWUsIHNldFZhbHVlXSA9IHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFtfd2lkdGgsIHNldFdpZHRoXSA9IHVzZVN0YXRlKE1JTl9JTlBVVF9XSURUSCk7XG4gICAgY29uc3QgW2lzTWF4V2lkdGgsIHNldElzTWF4V2lkdGhdID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFtpc0ZvY3VzLCBzZXRJc0ZvY3VzXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBmb3JtYXR0ZWRWYWx1ZSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICByZXR1cm4gbnVtZXJpY0Zvcm1hdHRlcignJyArIChfdmFsdWUgPT0gbnVsbCA/ICcnIDogX3ZhbHVlKSwge1xuICAgICAgICAgICAgdGhvdXNhbmRTZXBhcmF0b3I6IHRydWUsXG4gICAgICAgICAgICBhbGxvd05lZ2F0aXZlOiBuZWdhdGl2ZSxcbiAgICAgICAgfSk7XG4gICAgfSwgW192YWx1ZSwgbmVnYXRpdmVdKTtcbiAgICBjb25zdCBzY3JvbGxUb0VuZCA9IHVzZUNhbGxiYWNrKChzdGlja3kgPSBmYWxzZSkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gaW5wdXRSZWYuY3VycmVudDtcbiAgICAgICAgaWYgKCFpbnB1dClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgbGVuID0gKF9hID0gaW5wdXQudmFsdWUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5sZW5ndGg7XG4gICAgICAgIGNvbnN0IHBvc2l0aW9uID0gaW5wdXQuc2Nyb2xsTGVmdDtcbiAgICAgICAgY29uc3Qgc2hvdWxkVG9FbmQgPSAhc3RpY2t5O1xuICAgICAgICBjb25zdCBzdGFydCA9IHNob3VsZFRvRW5kID8gbGVuIDogaW5wdXRDYXJldFBvc2l0aW9uUmVmLmN1cnJlbnQ7XG4gICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKHN0YXJ0LCBzdGFydCk7XG4gICAgICAgIGlucHV0LnNjcm9sbExlZnQgPSBzaG91bGRUb0VuZCA/IGlucHV0LnNjcm9sbFdpZHRoIDogcG9zaXRpb247XG4gICAgICAgIGlucHV0LmZvY3VzKCk7XG4gICAgfSwgW10pO1xuICAgIGNvbnN0IGhhbmRsZUNoYW5nZSA9IHVzZUNhbGxiYWNrKChlKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jLCBfZCwgX2U7XG4gICAgICAgIGxldCB2YWwgPSBlLnRhcmdldC52YWx1ZTtcbiAgICAgICAgaWYgKHZhbCAhPSBudWxsKVxuICAgICAgICAgICAgdmFsID0gbm9ybWFsaXplTnVtYmVySW5wdXQodmFsKS5zcGxpdCgnLCcpLmpvaW4oJycpO1xuICAgICAgICBjb25zdCBoYXNEZWNpbWFsUG9pbnQgPSAhIXZhbCAmJiB2YWwuZW5kc1dpdGgoJy4nKTtcbiAgICAgICAgaWYgKGhhc0RlY2ltYWxQb2ludClcbiAgICAgICAgICAgIHZhbCA9IHZhbC5zbGljZSgwLCAtMSk7XG4gICAgICAgIGlmICghbmVnYXRpdmUgJiYgKHZhbCA9PT0gbnVsbCB8fCB2YWwgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHZhbC5pbmNsdWRlcygnLScpKSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgaXNTdGFuZGFsb25lTWludXMgPSBuZWdhdGl2ZSAmJiB2YWwgPT09ICctJztcbiAgICAgICAgaWYgKCFpc1N0YW5kYWxvbmVNaW51cyAmJiBpc05hTigrdmFsKSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaWYgKHZhbCA9PT0gX3ZhbHVlICYmICFoYXNEZWNpbWFsUG9pbnQpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmICh0eXBlb2YgbWF4RnJhY3Rpb25EaWdpdHMgPT09ICdudW1iZXInIHx8IHR5cGVvZiBtYXhGcmFjdGlvbkRpZ2l0cyA9PT0gJ2JpZ2ludCcpIHtcbiAgICAgICAgICAgIGNvbnN0IFssIGRlY2ltYWxdID0gdmFsLnNwbGl0KCcuJyk7XG4gICAgICAgICAgICBpZiAoZGVjaW1hbCAhPSBudWxsICYmIGRlY2ltYWwubGVuZ3RoID4gTnVtYmVyKG1heEZyYWN0aW9uRGlnaXRzKSlcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlucHV0UmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZE5ld1ZhbCA9IG51bWVyaWNGb3JtYXR0ZXIodmFsLCB7XG4gICAgICAgICAgICAgICAgdGhvdXNhbmRTZXBhcmF0b3I6IHRydWUsXG4gICAgICAgICAgICAgICAgYWxsb3dOZWdhdGl2ZTogbmVnYXRpdmUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IGlzQWRkID0gdmFsLmxlbmd0aCA+ICgoX2EgPSBfdmFsdWUgPT09IG51bGwgfHwgX3ZhbHVlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdmFsdWUubGVuZ3RoKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAwKTtcbiAgICAgICAgICAgIGxldCBwb3NpdGlvbiA9IChfYiA9IGlucHV0UmVmLmN1cnJlbnQuc2VsZWN0aW9uU3RhcnQpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IDA7XG4gICAgICAgICAgICBjb25zdCBvbGRQb3NWYWwgPSBmb3JtYXR0ZWRWYWx1ZS5zbGljZSgwLCAocG9zaXRpb24gLSAoaXNBZGQgPyAxIDogLTEpKSk7XG4gICAgICAgICAgICBwb3NpdGlvbiA9IG9sZFBvc1ZhbC5zcGxpdCgnLCcpLmpvaW4oJycpLmxlbmd0aCArIChpc0FkZCA/IDEgOiAtMSk7XG4gICAgICAgICAgICBjb25zdCBwb3NWYWwgPSB2YWwuc2xpY2UoMCwgcG9zaXRpb24pO1xuICAgICAgICAgICAgZm9ybWF0dGVkTmV3VmFsLnNwbGl0KCcnKS5yZWR1Y2UoKGFjYywgY2hhciwgaW5kKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGNoYXIgPT09ICcsJylcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGFjYy5wdXNoKGNoYXIpO1xuICAgICAgICAgICAgICAgIGlmIChhY2Muam9pbignJykgPT09IHBvc1ZhbCkge1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IGluZCArIDE7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICB9LCBbXSk7XG4gICAgICAgICAgICBpbnB1dENhcmV0UG9zaXRpb25SZWYuY3VycmVudCA9IHBvc2l0aW9uICsgKGhhc0RlY2ltYWxQb2ludCA/IDIgOiAwKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgaWYgKHZhbCA9PT0gJycpIHtcbiAgICAgICAgICAgICAgICBzZXRWYWx1ZShudWxsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGlzU3RhbmRhbG9uZU1pbnVzKSB7XG4gICAgICAgICAgICAgICAgc2V0VmFsdWUoJy0nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRlY2ltYWxzID0gKF9lID0gKF9kID0gKF9jID0gdmFsLm1hdGNoKC9cXC4oXFxkKykkLykpID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfY1sxXSkgPT09IG51bGwgfHwgX2QgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kLmxlbmd0aCkgIT09IG51bGwgJiYgX2UgIT09IHZvaWQgMCA/IF9lIDogMDtcbiAgICAgICAgICAgICAgICBjb25zdCBibiA9IEJpZ051bWJlcih2YWwpO1xuICAgICAgICAgICAgICAgIGxldCBub3JtYWxpemVkID0gYm4udG9GaXhlZChkZWNpbWFscyk7XG4gICAgICAgICAgICAgICAgaWYgKG5lZ2F0aXZlICYmIHZhbC50cmltKCkuc3RhcnRzV2l0aCgnLScpICYmIGJuLmlzWmVybygpKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWQgPSBub3JtYWxpemVkLnN0YXJ0c1dpdGgoJy0nKSA/IG5vcm1hbGl6ZWQgOiBgLSR7bm9ybWFsaXplZH1gO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzZXRWYWx1ZShgJHtub3JtYWxpemVkfSR7aGFzRGVjaW1hbFBvaW50ID8gJy4nIDogJyd9YC50cmltKCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIG9uQ2hhbmdlID09PSBudWxsIHx8IG9uQ2hhbmdlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNoYW5nZShlKTtcbiAgICB9LCBbb25DaGFuZ2UsIF92YWx1ZSwgdmFsdWUsIGZvcm1hdHRlZFZhbHVlLCBtYXhGcmFjdGlvbkRpZ2l0cywgbmVnYXRpdmVdKTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2QsIF9lLCBfZiwgX2csIF9oLCBfaiwgX2s7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lcldpZHRoID0gKF9iID0gKF9hID0gY29udGFpbmVyUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5vZmZzZXRXaWR0aCkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogTUlOX0lOUFVUX1dJRFRIO1xuICAgICAgICBjb25zdCBwcmVmaXhXaWR0aCA9IChfZCA9IChfYyA9IHByZWZpeFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Mub2Zmc2V0V2lkdGgpICE9PSBudWxsICYmIF9kICE9PSB2b2lkIDAgPyBfZCA6IDA7XG4gICAgICAgIGNvbnN0IHN1ZmZpeFdpZHRoID0gKF9mID0gKF9lID0gc3VmZml4UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9lID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZS5vZmZzZXRXaWR0aCkgIT09IG51bGwgJiYgX2YgIT09IHZvaWQgMCA/IF9mIDogMDtcbiAgICAgICAgY29uc3QgY3VycmVuY3lXaWR0aCA9IChfaCA9IChfZyA9IGN1cnJlbmN5UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9nID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZy5vZmZzZXRXaWR0aCkgIT09IG51bGwgJiYgX2ggIT09IHZvaWQgMCA/IF9oIDogMDtcbiAgICAgICAgY29uc3QgZmFrZVdpZHRoID0gKF9rID0gKF9qID0gZmFrZUVsZVJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfaiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2oub2Zmc2V0V2lkdGgpICE9PSBudWxsICYmIF9rICE9PSB2b2lkIDAgPyBfayA6IDA7XG4gICAgICAgIGNvbnN0IGdhcFdpZHRoID0gcHJlZml4V2lkdGggJiYgc3VmZml4V2lkdGggJiYgY3VycmVuY3lXaWR0aFxuICAgICAgICAgICAgPyAyNFxuICAgICAgICAgICAgOiAocHJlZml4V2lkdGggJiYgc3VmZml4V2lkdGgpIHx8IChwcmVmaXhXaWR0aCAmJiBjdXJyZW5jeVdpZHRoKSB8fCAoc3VmZml4V2lkdGggJiYgY3VycmVuY3lXaWR0aClcbiAgICAgICAgICAgICAgICA/IDE2XG4gICAgICAgICAgICAgICAgOiBwcmVmaXhXaWR0aCB8fCBzdWZmaXhXaWR0aCB8fCBjdXJyZW5jeVdpZHRoXG4gICAgICAgICAgICAgICAgICAgID8gOFxuICAgICAgICAgICAgICAgICAgICA6IDA7XG4gICAgICAgIGNvbnN0IG1heFdpZHRoID0gY29udGFpbmVyV2lkdGggLSBwcmVmaXhXaWR0aCAtIHN1ZmZpeFdpZHRoIC0gY3VycmVuY3lXaWR0aCAtIGdhcFdpZHRoO1xuICAgICAgICBjb25zdCBpc01heCA9IGZha2VXaWR0aCA+PSBtYXhXaWR0aDtcbiAgICAgICAgc2V0V2lkdGgoTWF0aC5taW4obWF4V2lkdGgsIE1hdGgubWF4KGZha2VXaWR0aCwgTUlOX0lOUFVUX1dJRFRIKSkpO1xuICAgICAgICBzZXRJc01heFdpZHRoKGlzTWF4KTtcbiAgICAgICAgaWYgKGlzRm9jdXMpXG4gICAgICAgICAgICBzY3JvbGxUb0VuZCh0cnVlKTtcbiAgICB9LCBbX3ZhbHVlLCBwcmVmaXgsIHN1ZmZpeCwgY3VycmVuY3ksIGlzRm9jdXNdKTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICAvLyBjbGVhciBuZWdhdGl2ZSBzaWduIGlmIG5vdCBhbGxvd2VkXG4gICAgICAgIGlmIChuZWdhdGl2ZSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3VuZGVmaW5lZCcpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmIChfdmFsdWUgPT0gbnVsbClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaWYgKF92YWx1ZSA9PT0gJy0nKSB7XG4gICAgICAgICAgICBzZXRWYWx1ZShudWxsKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoX3ZhbHVlLnN0YXJ0c1dpdGgoJy0nKSlcbiAgICAgICAgICAgIHNldFZhbHVlKF92YWx1ZS5zbGljZSgxKSk7XG4gICAgfSwgW25lZ2F0aXZlLCB2YWx1ZSwgX3ZhbHVlXSk7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2M7XG4gICAgICAgIGxldCB2YWwgPSB2YWx1ZTtcbiAgICAgICAgbGV0IGhhc0RlY2ltYWxQb2ludCA9IGZhbHNlO1xuICAgICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGlmICh2YWwgPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgdmFsID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHZhbCA9IG5vcm1hbGl6ZU51bWJlcklucHV0KHZhbCkuc3BsaXQoJywnKS5qb2luKCcnKTtcbiAgICAgICAgICAgICAgICBoYXNEZWNpbWFsUG9pbnQgPSAhIXZhbCAmJiB2YWwuZW5kc1dpdGgoJy4nKTtcbiAgICAgICAgICAgICAgICBpZiAoaGFzRGVjaW1hbFBvaW50KVxuICAgICAgICAgICAgICAgICAgICB2YWwgPSB2YWwuc2xpY2UoMCwgLTEpO1xuICAgICAgICAgICAgICAgIGlmICghbmVnYXRpdmUpXG4gICAgICAgICAgICAgICAgICAgIHZhbCA9IHZhbC5yZXBsYWNlKC8tL2csICcnKTtcbiAgICAgICAgICAgICAgICBpZiAobmVnYXRpdmUgJiYgdmFsID09PSAnLScpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0VmFsdWUoJy0nKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaXNOYU4oK3ZhbCkpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh2YWwgIT09IG51bGwgJiYgdHlwZW9mIHZhbCAhPT0gJ251bWJlcicgJiYgdHlwZW9mIHZhbCAhPT0gJ2JpZ2ludCcpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmICghbmVnYXRpdmUpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgICAgIHZhbCA9IE1hdGguYWJzKHZhbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICh0eXBlb2YgdmFsID09PSAnYmlnaW50Jykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHplcm8gPSBCaWdJbnQoMCk7XG4gICAgICAgICAgICAgICAgdmFsID0gdmFsIDwgemVybyA/IC12YWwgOiB2YWw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCh0eXBlb2YgdmFsID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdmFsID09PSAnbnVtYmVyJykgJiYgKHR5cGVvZiBtYXhGcmFjdGlvbkRpZ2l0cyA9PT0gJ251bWJlcicgfHwgdHlwZW9mIG1heEZyYWN0aW9uRGlnaXRzID09PSAnYmlnaW50JykpIHtcbiAgICAgICAgICAgIGNvbnN0IFtpbnQsIGRlY2ltYWxdID0gKCcnICsgdmFsKS5zcGxpdCgnLicpO1xuICAgICAgICAgICAgaWYgKGRlY2ltYWwgIT0gbnVsbCAmJiBkZWNpbWFsLmxlbmd0aCA+IE51bWJlcihtYXhGcmFjdGlvbkRpZ2l0cykpIHtcbiAgICAgICAgICAgICAgICB2YWwgPSBpbnQgKyAnLicgKyBkZWNpbWFsLnNsaWNlKDAsIE51bWJlcihtYXhGcmFjdGlvbkRpZ2l0cykpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh2YWwgPT09ICcnIHx8IHZhbCA9PSBudWxsKSB7XG4gICAgICAgICAgICBzZXRWYWx1ZShudWxsKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHN0clZhbCA9ICcnICsgdmFsO1xuICAgICAgICAgICAgY29uc3QgZGVjaW1hbHMgPSAoX2MgPSAoX2IgPSAoX2EgPSBzdHJWYWwubWF0Y2goL1xcLihcXGQrKSQvKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hWzFdKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IubGVuZ3RoKSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiAwO1xuICAgICAgICAgICAgY29uc3QgYm4gPSBCaWdOdW1iZXIoc3RyVmFsKTtcbiAgICAgICAgICAgIGxldCBub3JtYWxpemVkID0gYm4udG9GaXhlZChkZWNpbWFscyk7XG4gICAgICAgICAgICBpZiAobmVnYXRpdmUgJiYgc3RyVmFsLnRyaW0oKS5zdGFydHNXaXRoKCctJykgJiYgYm4uaXNaZXJvKCkpIHtcbiAgICAgICAgICAgICAgICBub3JtYWxpemVkID0gbm9ybWFsaXplZC5zdGFydHNXaXRoKCctJykgPyBub3JtYWxpemVkIDogYC0ke25vcm1hbGl6ZWR9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNldFZhbHVlKGAke25vcm1hbGl6ZWR9JHtoYXNEZWNpbWFsUG9pbnQgPyAnLicgOiAnJ31gLnRyaW0oKSk7XG4gICAgICAgIH1cbiAgICB9LCBbdmFsdWUsIG1heEZyYWN0aW9uRGlnaXRzLCBuZWdhdGl2ZV0pO1xuICAgIHJldHVybiBfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3Nlcygnd3JhcHBlcicsIGpvaW5DbHMod3JhcHBlckNscywgaW52YWxpZCAmJiBjbGFzc2VzKCdpbnZhbGlkJykpKSwgY2hpbGRyZW46IFtfanN4cyhcImRpdlwiLCB7IHJlZjogY29udGFpbmVyUmVmLCBjbGFzc05hbWU6IGNsYXNzZXModm9pZCAwLCBqb2luQ2xzKGNsYXNzTmFtZSwgaXNGb2N1cyAmJiBjbGFzc2VzKCdmb2N1cycpKSksIG9uQ2xpY2s6IChlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGUudGFyZ2V0IGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudClcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgKF9hID0gaW5wdXRSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc01heFdpZHRoKVxuICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsVG9FbmQoKTtcbiAgICAgICAgICAgICAgICB9LCBjaGlsZHJlbjogW3ByZWZpeCAmJiBfanN4KFwic3BhblwiLCB7IHJlZjogcHJlZml4UmVmLCBjbGFzc05hbWU6IGNsYXNzZXMoJ3ByZWZpeCcpLCBjaGlsZHJlbjogcHJlZml4IH0pLCBfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdlbGVtZW50JywgKCFpc0ZvY3VzICYmIGlzTWF4V2lkdGgpID8gY2xhc3NlcygnZWxlbWVudC1tYXgnKSA6ICcnKSwgY2hpbGRyZW46IF9qc3goXCJpbnB1dFwiLCBPYmplY3QuYXNzaWduKHt9LCByZXN0LCB7IHJlZjogaW5wdXRSZWYsIHZhbHVlOiBmb3JtYXR0ZWRWYWx1ZSwgcGxhY2Vob2xkZXI6IHBsYWNlaG9sZGVyLCBzdHlsZTogeyAnLS1pbnB1dC13aWR0aCc6IGAke193aWR0aH1weGAgfSwgb25DaGFuZ2U6IGhhbmRsZUNoYW5nZSwgb25Gb2N1czogZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldElzRm9jdXModHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRm9jdXMgPT09IG51bGwgfHwgb25Gb2N1cyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25Gb2N1cyhlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBvbkJsdXI6IGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJc0ZvY3VzKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyID09PSBudWxsIHx8IG9uQmx1ciA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25CbHVyKGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gfSkpIH0pLCBjdXJyZW5jeSAmJiBfanN4KFwic3BhblwiLCB7IHJlZjogY3VycmVuY3lSZWYsIGNsYXNzTmFtZTogY2xhc3NlcygnY3VycmVuY3knKSwgY2hpbGRyZW46IGN1cnJlbmN5IH0pLCBzdWZmaXggJiYgX2pzeChcInNwYW5cIiwgeyByZWY6IHN1ZmZpeFJlZiwgY2xhc3NOYW1lOiBjbGFzc2VzKCdzdWZmaXgnKSwgY2hpbGRyZW46IHN1ZmZpeCB9KSwgX2pzeChcInNwYW5cIiwgeyByZWY6IGZha2VFbGVSZWYsIGNsYXNzTmFtZTogY2xhc3NlcygnZmFrZScpLCBvbkNsaWNrOiBlID0+IGUuc3RvcFByb3BhZ2F0aW9uKCksIGNoaWxkcmVuOiBudW1lcmljRm9ybWF0dGVyKCcnICsgKF92YWx1ZSA9PSBudWxsID8gJycgOiBfdmFsdWUpLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhvdXNhbmRTZXBhcmF0b3I6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dOZWdhdGl2ZTogbmVnYXRpdmUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSB9KV0gfSksIChtZXNzYWdlIHx8IGZvb3Rub3RlKSAmJiBfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnZXh0cmEnKSwgY2hpbGRyZW46IFttZXNzYWdlICYmIF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ21lc3NhZ2UnLCBtZXNzYWdlQ2xzKSwgY2hpbGRyZW46IG1lc3NhZ2UgfSksIGZvb3Rub3RlICYmIF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2Zvb3Rub3RlJywgZm9vdG5vdGVDbHMpLCBjaGlsZHJlbjogZm9vdG5vdGUgfSldIH0pXSB9KTtcbn07XG5leHBvcnQgZGVmYXVsdCBtZW1vKElucHV0QW1vdW50KTsiLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
359
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvSW5wdXRBbW91bnQvSW5wdXRBbW91bnQuanMiLCJjb21wb25lbnRzL3NyYy9jb21wb25lbnRzL0lucHV0QW1vdW50L0lucHV0QW1vdW50LnRzeCJdLCJuYW1lcyI6WyJfX3Jlc3QiLCJzIiwiZSIsInQiLCJwIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaW5kZXhPZiIsImdldE93blByb3BlcnR5U3ltYm9scyIsImkiLCJsZW5ndGgiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJtZW1vIiwidXNlTWVtbyIsInVzZVN0YXRlIiwidXNlQ2FsbGJhY2siLCJ1c2VSZWYiLCJ1c2VFZmZlY3QiLCJCaWdOdW1iZXIiLCJudW1lcmljRm9ybWF0dGVyIiwiU2tlbGV0b24iLCJTcGlubmVyIiwiZGVmYXVsdCIsImNsYXNzbmFtZXMiLCJqb2luQ2xzIiwiTUlOX0lOUFVUX1dJRFRIIiwibm9ybWFsaXplTnVtYmVySW5wdXQiLCJ2YWwiLCJyZXBsYWNlIiwiY2xhbXBWYWx1ZUluUmFuZ2UiLCJtaW4iLCJtYXgiLCJpc05hTiIsImNsYW1wZWQiLCJjbGFtcGVkVmFsIiwiYm5WYWwiLCJtaW5CbiIsImx0IiwibWF4Qm4iLCJndCIsIklucHV0QW1vdW50IiwicHJvcHMiLCJ2YWx1ZSIsIl9wcm9wcyR0eXBlIiwidHlwZSIsIm1heEZyYWN0aW9uRGlnaXRzIiwiY2hpbGRyZW4iLCJfcHJvcHMkcGxhY2Vob2xkZXIiLCJwbGFjZWhvbGRlciIsIl9wcm9wcyRzaXplIiwic2l6ZSIsImZvb3Rub3RlIiwiZm9vdG5vdGVDbHMiLCJjbGFzc05hbWUiLCJ3cmFwcGVyQ2xzIiwibGFiZWxDbHMiLCJfcHJvcHMkcHJlZml4Q2xzIiwicHJlZml4Q2xzIiwibWVzc2FnZUNscyIsImludmFsaWQiLCJuZWdhdGl2ZSIsInJlcXVpcmVkIiwibG9hZGluZyIsInN1Y2Nlc3MiLCJkaXNhYmxlZCIsInJlYWRPbmx5IiwibGFiZWwiLCJwcmVmaXgiLCJzdWZmaXgiLCJjdXJyZW5jeSIsIm1lc3NhZ2UiLCJvbkNoYW5nZSIsIm9uQmx1ciIsIm9uRm9jdXMiLCJyZXN0IiwiY2xhc3NlcyIsImNvbmNhdCIsImlucHV0UmVmIiwiZmFrZUVsZVJlZiIsInByZWZpeFJlZiIsInN1ZmZpeFJlZiIsImN1cnJlbmN5UmVmIiwiY29udGFpbmVyUmVmIiwiaW5wdXRDYXJldFBvc2l0aW9uUmVmIiwicHJldlZhbHVlUmVmIiwicHJldkZvY3VzUmVmIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwiX3ZhbHVlIiwic2V0VmFsdWUiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsIl93aWR0aCIsInNldFdpZHRoIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJpc01heFdpZHRoIiwic2V0SXNNYXhXaWR0aCIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwiaXNGb2N1cyIsInNldElzRm9jdXMiLCJmb3JtYXR0ZWRWYWx1ZSIsInRob3VzYW5kU2VwYXJhdG9yIiwiYWxsb3dOZWdhdGl2ZSIsInNjcm9sbFRvRW5kIiwic3RpY2t5IiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwiX2EiLCJpbnB1dCIsImN1cnJlbnQiLCJsZW4iLCJwb3NpdGlvbiIsInNjcm9sbExlZnQiLCJzaG91bGRUb0VuZCIsInN0YXJ0Iiwic2V0U2VsZWN0aW9uUmFuZ2UiLCJzY3JvbGxXaWR0aCIsImZvY3VzIiwiaGFuZGxlQ2hhbmdlIiwiX2IiLCJfYyIsIl9kIiwiX2UiLCJfZiIsInRhcmdldCIsInRydW5jYXRlZEZyYWN0aW9uIiwic3BsaXQiLCJqb2luIiwiaGFzRGVjaW1hbFBvaW50IiwiZW5kc1dpdGgiLCJzbGljZSIsImluY2x1ZGVzIiwiaXNTdGFuZGFsb25lTWludXMiLCJfdmFsJHNwbGl0IiwiX3ZhbCRzcGxpdDIiLCJpbnQiLCJkZWNpbWFsIiwiTnVtYmVyIiwiY2xhbXBlZEJ5UmFuZ2UiLCJyZXMiLCJzZWxlY3Rpb25TdGFydCIsImN1cnJlbnRTbGljZSIsImNhcmV0UmF3TGVuZ3RoIiwiZm9ybWF0dGVkTmV3VmFsIiwidGFyZ2V0UmF3UG9zIiwiTWF0aCIsImNhcmV0UG9zIiwic2VlbiIsImRlY2ltYWxzIiwibWF0Y2giLCJibiIsIm5vcm1hbGl6ZWQiLCJ0b0ZpeGVkIiwidHJpbSIsInN0YXJ0c1dpdGgiLCJpc1plcm8iLCJfZyIsIl9oIiwiX2oiLCJfayIsImNvbnRhaW5lcldpZHRoIiwib2Zmc2V0V2lkdGgiLCJwcmVmaXhXaWR0aCIsInN1ZmZpeFdpZHRoIiwiY3VycmVuY3lXaWR0aCIsImZha2VXaWR0aCIsImdhcFdpZHRoIiwibWF4V2lkdGgiLCJpc01heCIsImFicyIsInplcm8iLCJCaWdJbnQiLCJfc3BsaXQiLCJfc3BsaXQyIiwic3RyVmFsIiwid2lkdGgiLCJoZWlnaHQiLCJyZWYiLCJvbkNsaWNrIiwiSFRNTElucHV0RWxlbWVudCIsImFzc2lnbiIsInN0eWxlIiwic3Ryb2tlV2lkdGgiLCJzdG9wUHJvcGFnYXRpb24iXSwibWFwcGluZ3MiOiI7QUFBQSxJQUFJQSxNQUFNLEdBQUksSUFBSSxJQUFJLElBQUksQ0FBQ0EsTUFBTSxJQUFLLFVBQVVDLENBQUMsRUFBRUMsQ0FBQyxFQUFFO0VBQ2xELElBQUlDLENBQUMsR0FBRyxDQUFDLENBQUM7RUFDVixLQUFLLElBQUlDLENBQUMsSUFBSUgsQ0FBQyxFQUFFLElBQUlJLE1BQU0sQ0FBQ0MsU0FBUyxDQUFDQyxjQUFjLENBQUNDLElBQUksQ0FBQ1AsQ0FBQyxFQUFFRyxDQUFDLENBQUMsSUFBSUYsQ0FBQyxDQUFDTyxPQUFPLENBQUNMLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFDL0VELENBQUMsQ0FBQ0MsQ0FBQyxDQUFDLEdBQUdILENBQUMsQ0FBQ0csQ0FBQyxDQUFDO0VBQ2YsSUFBSUgsQ0FBQyxJQUFJLElBQUksSUFBSSxPQUFPSSxNQUFNLENBQUNLLHFCQUFxQixLQUFLLFVBQVUsRUFDL0QsS0FBSyxJQUFJQyxDQUFD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QSxDQUFBLENBQ0gsRUFFSixDQUFDVSxPQUFPLElBQUluQixRQUFRLEtBQUt4QyxLQUFBLENBQUEsS0FBQSxFQUFBO01BQUswQyxTQUFTLEVBQUVzQixPQUFPLENBQUMsT0FBTyxDQUFDO01BQUE3QixRQUFBLEVBQUEsQ0FDdER3QixPQUFPLElBQUk3RCxJQUFBLENBQUEsS0FBQSxFQUFBO1FBQUs0QyxTQUFTLEVBQUVzQixPQUFPLENBQUMsU0FBUyxFQUFFakIsVUFBVSxDQUFDO1FBQUFaLFFBQUEsRUFBR3dCO01BQU8sQ0FBQSxDQUFPLEVBQzFFbkIsUUFBUSxJQUFJMUMsSUFBQSxDQUFBLEtBQUEsRUFBQTtRQUFLNEMsU0FBUyxFQUFFc0IsT0FBTyxDQUFDLFVBQVUsRUFBRXZCLFdBQVcsQ0FBQztRQUFBTixRQUFBLEVBQUdLO01BQVEsQ0FBQSxDQUFPO0lBQUEsQ0FBQSxDQUMzRTtFQUFBLENBQUEsQ0FFSjtBQUNSLENBQUM7QUFFRCw0QkFBZXZDLElBQUksQ0FBQzRCLFdBQVcsQ0FBQyIsImZpbGUiOiJjb21wb25lbnRzL0lucHV0QW1vdW50L0lucHV0QW1vdW50LmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fcmVzdCA9ICh0aGlzICYmIHRoaXMuX19yZXN0KSB8fCBmdW5jdGlvbiAocywgZSkge1xuICAgIHZhciB0ID0ge307XG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXG4gICAgICAgIHRbcF0gPSBzW3BdO1xuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xuICAgICAgICB9XG4gICAgcmV0dXJuIHQ7XG59O1xuaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IG1lbW8sIHVzZU1lbW8sIHVzZVN0YXRlLCB1c2VDYWxsYmFjaywgdXNlUmVmLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgQmlnTnVtYmVyIGZyb20gJ2JpZ251bWJlci5qcyc7XG5pbXBvcnQgeyBudW1lcmljRm9ybWF0dGVyIH0gZnJvbSAncmVhY3QtbnVtYmVyLWZvcm1hdCc7XG5pbXBvcnQgeyBTa2VsZXRvbiB9IGZyb20gJ3ByaW1lcmVhY3Qvc2tlbGV0b24nO1xuaW1wb3J0IFNwaW5uZXIgZnJvbSAnLi4vU3Bpbm5lcic7XG5pbXBvcnQgeyBkZWZhdWx0IGFzIGNsYXNzbmFtZXMsIGpvaW5DbHMgfSBmcm9tICcuLi8uLi91dGlscy9jbGFzc25hbWVzJztcbmNvbnN0IE1JTl9JTlBVVF9XSURUSCA9IDMzO1xuY29uc3Qgbm9ybWFsaXplTnVtYmVySW5wdXQgPSAodmFsKSA9PiB2YWxcbiAgICAucmVwbGFjZSgvW1xcdTMwMDJcXHVmZjBlXFx1ZmY2MV0vZywgJy4nKVxuICAgIC5yZXBsYWNlKC9bXFx1RkYwQ10vZywgJywnKTtcbmNvbnN0IGNsYW1wVmFsdWVJblJhbmdlID0gKHZhbCwgbWluLCBtYXgpID0+IHtcbiAgICBpZiAodmFsID09PSAnJyB8fCB2YWwgPT09ICctJyB8fCBpc05hTigrdmFsKSlcbiAgICAgICAgcmV0dXJuIHsgdmFsLCBjbGFtcGVkOiBmYWxzZSB9O1xuICAgIGxldCBjbGFtcGVkVmFsID0gdmFsO1xuICAgIGxldCBjbGFtcGVkID0gZmFsc2U7XG4gICAgY29uc3QgYm5WYWwgPSBCaWdOdW1iZXIodmFsKTtcbiAgICBpZiAodHlwZW9mIG1pbiA9PT0gJ251bWJlcicgfHwgdHlwZW9mIG1pbiA9PT0gJ2JpZ2ludCcpIHtcbiAgICAgICAgY29uc3QgbWluQm4gPSBCaWdOdW1iZXIobWluKTtcbiAgICAgICAgaWYgKGJuVmFsLmx0KG1pbkJuKSkge1xuICAgICAgICAgICAgY2xhbXBlZFZhbCA9ICcnICsgbWluO1xuICAgICAgICAgICAgY2xhbXBlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHR5cGVvZiBtYXggPT09ICdudW1iZXInIHx8IHR5cGVvZiBtYXggPT09ICdiaWdpbnQnKSB7XG4gICAgICAgIGNvbnN0IG1heEJuID0gQmlnTnVtYmVyKG1heCk7XG4gICAgICAgIGlmIChiblZhbC5ndChtYXhCbikpIHtcbiAgICAgICAgICAgIGNsYW1wZWRWYWwgPSAnJyArIG1heDtcbiAgICAgICAgICAgIGNsYW1wZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7IHZhbDogY2xhbXBlZFZhbCwgY2xhbXBlZCB9O1xufTtcbmV4cG9ydCBjb25zdCBJbnB1dEFtb3VudCA9IHByb3BzID0+IHtcbiAgICBjb25zdCB7IHZhbHVlLCB0eXBlID0gJ3ByaW1hcnknLCBtYXhGcmFjdGlvbkRpZ2l0cywgY2hpbGRyZW4sIHBsYWNlaG9sZGVyID0gJzAnLCBtaW4sIG1heCwgXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgIHNpemUgPSAnbGFyZ2UnLCBmb290bm90ZSwgZm9vdG5vdGVDbHMsIGNsYXNzTmFtZSwgd3JhcHBlckNscywgbGFiZWxDbHMsIHByZWZpeENscyA9ICdpbnB1dC1hbW91bnQnLCBtZXNzYWdlQ2xzLCBpbnZhbGlkLCBuZWdhdGl2ZSwgcmVxdWlyZWQsIGxvYWRpbmcsIHN1Y2Nlc3MsIGRpc2FibGVkLCByZWFkT25seSwgbGFiZWwsIHByZWZpeCwgc3VmZml4LCBjdXJyZW5jeSwgbWVzc2FnZSwgb25DaGFuZ2UsIG9uQmx1ciwgb25Gb2N1cyB9ID0gcHJvcHMsIHJlc3QgPSBfX3Jlc3QocHJvcHMsIFtcInZhbHVlXCIsIFwidHlwZVwiLCBcIm1heEZyYWN0aW9uRGlnaXRzXCIsIFwiY2hpbGRyZW5cIiwgXCJwbGFjZWhvbGRlclwiLCBcIm1pblwiLCBcIm1heFwiLCBcInNpemVcIiwgXCJmb290bm90ZVwiLCBcImZvb3Rub3RlQ2xzXCIsIFwiY2xhc3NOYW1lXCIsIFwid3JhcHBlckNsc1wiLCBcImxhYmVsQ2xzXCIsIFwicHJlZml4Q2xzXCIsIFwibWVzc2FnZUNsc1wiLCBcImludmFsaWRcIiwgXCJuZWdhdGl2ZVwiLCBcInJlcXVpcmVkXCIsIFwibG9hZGluZ1wiLCBcInN1Y2Nlc3NcIiwgXCJkaXNhYmxlZFwiLCBcInJlYWRPbmx5XCIsIFwibGFiZWxcIiwgXCJwcmVmaXhcIiwgXCJzdWZmaXhcIiwgXCJjdXJyZW5jeVwiLCBcIm1lc3NhZ2VcIiwgXCJvbkNoYW5nZVwiLCBcIm9uQmx1clwiLCBcIm9uRm9jdXNcIl0pO1xuICAgIGNvbnN0IGNsYXNzZXMgPSBjbGFzc25hbWVzKGAke3ByZWZpeENsc30tJHt0eXBlfWApO1xuICAgIGNvbnN0IGlucHV0UmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGZha2VFbGVSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgcHJlZml4UmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IHN1ZmZpeFJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBjdXJyZW5jeVJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBjb250YWluZXJSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgaW5wdXRDYXJldFBvc2l0aW9uUmVmID0gdXNlUmVmKDApO1xuICAgIGNvbnN0IHByZXZWYWx1ZVJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBwcmV2Rm9jdXNSZWYgPSB1c2VSZWYoZmFsc2UpO1xuICAgIGNvbnN0IFtfdmFsdWUsIHNldFZhbHVlXSA9IHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFtfd2lkdGgsIHNldFdpZHRoXSA9IHVzZVN0YXRlKE1JTl9JTlBVVF9XSURUSCk7XG4gICAgY29uc3QgW2lzTWF4V2lkdGgsIHNldElzTWF4V2lkdGhdID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFtpc0ZvY3VzLCBzZXRJc0ZvY3VzXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBmb3JtYXR0ZWRWYWx1ZSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICByZXR1cm4gbnVtZXJpY0Zvcm1hdHRlcignJyArIChfdmFsdWUgPT0gbnVsbCA/ICcnIDogX3ZhbHVlKSwge1xuICAgICAgICAgICAgdGhvdXNhbmRTZXBhcmF0b3I6IHRydWUsXG4gICAgICAgICAgICBhbGxvd05lZ2F0aXZlOiBuZWdhdGl2ZSxcbiAgICAgICAgfSk7XG4gICAgfSwgW192YWx1ZSwgbmVnYXRpdmVdKTtcbiAgICBjb25zdCBzY3JvbGxUb0VuZCA9IHVzZUNhbGxiYWNrKChzdGlja3kgPSBmYWxzZSkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gaW5wdXRSZWYuY3VycmVudDtcbiAgICAgICAgaWYgKCFpbnB1dClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgbGVuID0gKF9hID0gaW5wdXQudmFsdWUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5sZW5ndGg7XG4gICAgICAgIGNvbnN0IHBvc2l0aW9uID0gaW5wdXQuc2Nyb2xsTGVmdDtcbiAgICAgICAgY29uc3Qgc2hvdWxkVG9FbmQgPSAhc3RpY2t5O1xuICAgICAgICBjb25zdCBzdGFydCA9IHNob3VsZFRvRW5kID8gbGVuIDogaW5wdXRDYXJldFBvc2l0aW9uUmVmLmN1cnJlbnQ7XG4gICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKHN0YXJ0LCBzdGFydCk7XG4gICAgICAgIGlucHV0LnNjcm9sbExlZnQgPSBzaG91bGRUb0VuZCA/IGlucHV0LnNjcm9sbFdpZHRoIDogcG9zaXRpb247XG4gICAgICAgIGlucHV0LmZvY3VzKCk7XG4gICAgfSwgW10pO1xuICAgIGNvbnN0IGhhbmRsZUNoYW5nZSA9IHVzZUNhbGxiYWNrKChlKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jLCBfZCwgX2UsIF9mO1xuICAgICAgICBpZiAoZGlzYWJsZWQgfHwgcmVhZE9ubHkpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGxldCB2YWwgPSBlLnRhcmdldC52YWx1ZTtcbiAgICAgICAgbGV0IHRydW5jYXRlZEZyYWN0aW9uID0gZmFsc2U7XG4gICAgICAgIGlmICh2YWwgIT0gbnVsbClcbiAgICAgICAgICAgIHZhbCA9IG5vcm1hbGl6ZU51bWJlcklucHV0KHZhbCkuc3BsaXQoJywnKS5qb2luKCcnKTtcbiAgICAgICAgY29uc3QgaGFzRGVjaW1hbFBvaW50ID0gISF2YWwgJiYgdmFsLmVuZHNXaXRoKCcuJyk7XG4gICAgICAgIGlmIChoYXNEZWNpbWFsUG9pbnQpXG4gICAgICAgICAgICB2YWwgPSB2YWwuc2xpY2UoMCwgLTEpO1xuICAgICAgICBpZiAoIW5lZ2F0aXZlICYmICh2YWwgPT09IG51bGwgfHwgdmFsID09PSB2b2lkIDAgPyB2b2lkIDAgOiB2YWwuaW5jbHVkZXMoJy0nKSkpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IGlzU3RhbmRhbG9uZU1pbnVzID0gbmVnYXRpdmUgJiYgdmFsID09PSAnLSc7XG4gICAgICAgIGlmICghaXNTdGFuZGFsb25lTWludXMgJiYgaXNOYU4oK3ZhbCkpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmICh2YWwgPT09IF92YWx1ZSAmJiAhaGFzRGVjaW1hbFBvaW50KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAodHlwZW9mIG1heEZyYWN0aW9uRGlnaXRzID09PSAnbnVtYmVyJyB8fCB0eXBlb2YgbWF4RnJhY3Rpb25EaWdpdHMgPT09ICdiaWdpbnQnKSB7XG4gICAgICAgICAgICBjb25zdCBbaW50LCBkZWNpbWFsXSA9IHZhbC5zcGxpdCgnLicpO1xuICAgICAgICAgICAgaWYgKGRlY2ltYWwgIT0gbnVsbCAmJiBkZWNpbWFsLmxlbmd0aCA+IE51bWJlcihtYXhGcmFjdGlvbkRpZ2l0cykpIHtcbiAgICAgICAgICAgICAgICB2YWwgPSBgJHtpbnR9LiR7ZGVjaW1hbC5zbGljZSgwLCBOdW1iZXIobWF4RnJhY3Rpb25EaWdpdHMpKX1gO1xuICAgICAgICAgICAgICAgIHRydW5jYXRlZEZyYWN0aW9uID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBsZXQgY2xhbXBlZEJ5UmFuZ2UgPSBmYWxzZTtcbiAgICAgICAgaWYgKCh0eXBlb2YgbWluID09PSAnbnVtYmVyJyB8fCB0eXBlb2YgbWluID09PSAnYmlnaW50JykgfHwgKHR5cGVvZiBtYXggPT09ICdudW1iZXInIHx8IHR5cGVvZiBtYXggPT09ICdiaWdpbnQnKSkge1xuICAgICAgICAgICAgY29uc3QgcmVzID0gY2xhbXBWYWx1ZUluUmFuZ2UodmFsLCBtaW4sIG1heCk7XG4gICAgICAgICAgICB2YWwgPSByZXMudmFsO1xuICAgICAgICAgICAgY2xhbXBlZEJ5UmFuZ2UgPSByZXMuY2xhbXBlZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaW5wdXRSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0aW9uU3RhcnQgPSAoX2EgPSBpbnB1dFJlZi5jdXJyZW50LnNlbGVjdGlvblN0YXJ0KSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAwO1xuICAgICAgICAgICAgY29uc3QgY3VycmVudFNsaWNlID0gKF9jID0gKF9iID0gZS50YXJnZXQudmFsdWUpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5zbGljZSgwLCBzZWxlY3Rpb25TdGFydCkpICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6ICcnO1xuICAgICAgICAgICAgY29uc3QgY2FyZXRSYXdMZW5ndGggPSBub3JtYWxpemVOdW1iZXJJbnB1dChjdXJyZW50U2xpY2UpLnNwbGl0KCcsJykuam9pbignJykubGVuZ3RoO1xuICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkTmV3VmFsID0gbnVtZXJpY0Zvcm1hdHRlcih2YWwsIHtcbiAgICAgICAgICAgICAgICB0aG91c2FuZFNlcGFyYXRvcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICBhbGxvd05lZ2F0aXZlOiBuZWdhdGl2ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0UmF3UG9zID0gTWF0aC5taW4oY2FyZXRSYXdMZW5ndGgsIHZhbC5sZW5ndGgpO1xuICAgICAgICAgICAgbGV0IGNhcmV0UG9zID0gZm9ybWF0dGVkTmV3VmFsLmxlbmd0aDtcbiAgICAgICAgICAgIGxldCBzZWVuID0gMDtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZm9ybWF0dGVkTmV3VmFsLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGZvcm1hdHRlZE5ld1ZhbFtpXSA9PT0gJywnKVxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBzZWVuICs9IDE7XG4gICAgICAgICAgICAgICAgaWYgKHNlZW4gPT09IHRhcmdldFJhd1Bvcykge1xuICAgICAgICAgICAgICAgICAgICBjYXJldFBvcyA9IGkgKyAxO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGFyZ2V0UmF3UG9zID09PSAwKVxuICAgICAgICAgICAgICAgIGNhcmV0UG9zID0gMDtcbiAgICAgICAgICAgIGlmIChoYXNEZWNpbWFsUG9pbnQgJiYgIXRydW5jYXRlZEZyYWN0aW9uICYmIHRhcmdldFJhd1BvcyA9PT0gdmFsLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGNhcmV0UG9zID0gTWF0aC5taW4oZm9ybWF0dGVkTmV3VmFsLmxlbmd0aCArIDEsIGNhcmV0UG9zICsgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpbnB1dENhcmV0UG9zaXRpb25SZWYuY3VycmVudCA9IHRydW5jYXRlZEZyYWN0aW9uXG4gICAgICAgICAgICAgICAgPyBmb3JtYXR0ZWROZXdWYWwubGVuZ3RoXG4gICAgICAgICAgICAgICAgOiBjbGFtcGVkQnlSYW5nZVxuICAgICAgICAgICAgICAgICAgICA/IGZvcm1hdHRlZE5ld1ZhbC5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgOiBjYXJldFBvcztcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgaWYgKHZhbCA9PT0gJycpIHtcbiAgICAgICAgICAgICAgICBzZXRWYWx1ZShudWxsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGlzU3RhbmRhbG9uZU1pbnVzKSB7XG4gICAgICAgICAgICAgICAgc2V0VmFsdWUoJy0nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRlY2ltYWxzID0gKF9mID0gKF9lID0gKF9kID0gdmFsLm1hdGNoKC9cXC4oXFxkKykkLykpID09PSBudWxsIHx8IF9kID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZFsxXSkgPT09IG51bGwgfHwgX2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9lLmxlbmd0aCkgIT09IG51bGwgJiYgX2YgIT09IHZvaWQgMCA/IF9mIDogMDtcbiAgICAgICAgICAgICAgICBjb25zdCBibiA9IEJpZ051bWJlcih2YWwpO1xuICAgICAgICAgICAgICAgIGxldCBub3JtYWxpemVkID0gYm4udG9GaXhlZChkZWNpbWFscyk7XG4gICAgICAgICAgICAgICAgaWYgKG5lZ2F0aXZlICYmIHZhbC50cmltKCkuc3RhcnRzV2l0aCgnLScpICYmIGJuLmlzWmVybygpKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWQgPSBub3JtYWxpemVkLnN0YXJ0c1dpdGgoJy0nKSA/IG5vcm1hbGl6ZWQgOiBgLSR7bm9ybWFsaXplZH1gO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzZXRWYWx1ZShgJHtub3JtYWxpemVkfSR7aGFzRGVjaW1hbFBvaW50ID8gJy4nIDogJyd9YC50cmltKCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIG9uQ2hhbmdlID09PSBudWxsIHx8IG9uQ2hhbmdlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNoYW5nZShlKTtcbiAgICB9LCBbb25DaGFuZ2UsIF92YWx1ZSwgdmFsdWUsIGZvcm1hdHRlZFZhbHVlLCBtYXhGcmFjdGlvbkRpZ2l0cywgbWluLCBtYXgsIG5lZ2F0aXZlLCBkaXNhYmxlZCwgcmVhZE9ubHldKTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2QsIF9lLCBfZiwgX2csIF9oLCBfaiwgX2s7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lcldpZHRoID0gKF9iID0gKF9hID0gY29udGFpbmVyUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5vZmZzZXRXaWR0aCkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogTUlOX0lOUFVUX1dJRFRIO1xuICAgICAgICBjb25zdCBwcmVmaXhXaWR0aCA9IChfZCA9IChfYyA9IHByZWZpeFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Mub2Zmc2V0V2lkdGgpICE9PSBudWxsICYmIF9kICE9PSB2b2lkIDAgPyBfZCA6IDA7XG4gICAgICAgIGNvbnN0IHN1ZmZpeFdpZHRoID0gKF9mID0gKF9lID0gc3VmZml4UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9lID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZS5vZmZzZXRXaWR0aCkgIT09IG51bGwgJiYgX2YgIT09IHZvaWQgMCA/IF9mIDogMDtcbiAgICAgICAgY29uc3QgY3VycmVuY3lXaWR0aCA9IChfaCA9IChfZyA9IGN1cnJlbmN5UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9nID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZy5vZmZzZXRXaWR0aCkgIT09IG51bGwgJiYgX2ggIT09IHZvaWQgMCA/IF9oIDogMDtcbiAgICAgICAgY29uc3QgZmFrZVdpZHRoID0gKF9rID0gKF9qID0gZmFrZUVsZVJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfaiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2oub2Zmc2V0V2lkdGgpICE9PSBudWxsICYmIF9rICE9PSB2b2lkIDAgPyBfayA6IDA7XG4gICAgICAgIGNvbnN0IGdhcFdpZHRoID0gcHJlZml4V2lkdGggJiYgc3VmZml4V2lkdGggJiYgY3VycmVuY3lXaWR0aFxuICAgICAgICAgICAgPyAyNFxuICAgICAgICAgICAgOiAocHJlZml4V2lkdGggJiYgc3VmZml4V2lkdGgpIHx8IChwcmVmaXhXaWR0aCAmJiBjdXJyZW5jeVdpZHRoKSB8fCAoc3VmZml4V2lkdGggJiYgY3VycmVuY3lXaWR0aClcbiAgICAgICAgICAgICAgICA/IDE2XG4gICAgICAgICAgICAgICAgOiBwcmVmaXhXaWR0aCB8fCBzdWZmaXhXaWR0aCB8fCBjdXJyZW5jeVdpZHRoXG4gICAgICAgICAgICAgICAgICAgID8gOFxuICAgICAgICAgICAgICAgICAgICA6IDA7XG4gICAgICAgIGNvbnN0IG1heFdpZHRoID0gY29udGFpbmVyV2lkdGggLSBwcmVmaXhXaWR0aCAtIHN1ZmZpeFdpZHRoIC0gY3VycmVuY3lXaWR0aCAtIGdhcFdpZHRoO1xuICAgICAgICBjb25zdCBpc01heCA9IGZha2VXaWR0aCA+PSBtYXhXaWR0aDtcbiAgICAgICAgc2V0V2lkdGgoTWF0aC5taW4obWF4V2lkdGgsIE1hdGgubWF4KGZha2VXaWR0aCwgTUlOX0lOUFVUX1dJRFRIKSkpO1xuICAgICAgICBzZXRJc01heFdpZHRoKGlzTWF4KTtcbiAgICAgICAgaWYgKGlzRm9jdXMgJiYgKF92YWx1ZSAhPT0gcHJldlZhbHVlUmVmLmN1cnJlbnQgfHwgIXByZXZGb2N1c1JlZi5jdXJyZW50KSkge1xuICAgICAgICAgICAgc2Nyb2xsVG9FbmQodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcHJldlZhbHVlUmVmLmN1cnJlbnQgPSBfdmFsdWU7XG4gICAgICAgIHByZXZGb2N1c1JlZi5jdXJyZW50ID0gaXNGb2N1cztcbiAgICB9LCBbX3ZhbHVlLCBwcmVmaXgsIHN1ZmZpeCwgY3VycmVuY3ksIGlzRm9jdXMsIHNjcm9sbFRvRW5kXSk7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgLy8gY2xlYXIgbmVnYXRpdmUgc2lnbiBpZiBub3QgYWxsb3dlZFxuICAgICAgICBpZiAobmVnYXRpdmUpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICd1bmRlZmluZWQnKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAoX3ZhbHVlID09IG51bGwpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmIChfdmFsdWUgPT09ICctJykge1xuICAgICAgICAgICAgc2V0VmFsdWUobnVsbCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKF92YWx1ZS5zdGFydHNXaXRoKCctJykpXG4gICAgICAgICAgICBzZXRWYWx1ZShfdmFsdWUuc2xpY2UoMSkpO1xuICAgIH0sIFtuZWdhdGl2ZSwgdmFsdWUsIF92YWx1ZV0pO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jO1xuICAgICAgICBsZXQgdmFsID0gdmFsdWU7XG4gICAgICAgIGxldCBoYXNEZWNpbWFsUG9pbnQgPSBmYWxzZTtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBpZiAodmFsID09PSAnJykge1xuICAgICAgICAgICAgICAgIHZhbCA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YWwgPSBub3JtYWxpemVOdW1iZXJJbnB1dCh2YWwpLnNwbGl0KCcsJykuam9pbignJyk7XG4gICAgICAgICAgICAgICAgaGFzRGVjaW1hbFBvaW50ID0gISF2YWwgJiYgdmFsLmVuZHNXaXRoKCcuJyk7XG4gICAgICAgICAgICAgICAgaWYgKGhhc0RlY2ltYWxQb2ludClcbiAgICAgICAgICAgICAgICAgICAgdmFsID0gdmFsLnNsaWNlKDAsIC0xKTtcbiAgICAgICAgICAgICAgICBpZiAoIW5lZ2F0aXZlKVxuICAgICAgICAgICAgICAgICAgICB2YWwgPSB2YWwucmVwbGFjZSgvLS9nLCAnJyk7XG4gICAgICAgICAgICAgICAgaWYgKG5lZ2F0aXZlICYmIHZhbCA9PT0gJy0nKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFZhbHVlKCctJyk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGlzTmFOKCt2YWwpKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodmFsICE9PSBudWxsICYmIHR5cGVvZiB2YWwgIT09ICdudW1iZXInICYmIHR5cGVvZiB2YWwgIT09ICdiaWdpbnQnKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAoIW5lZ2F0aXZlKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgICB2YWwgPSBNYXRoLmFicyh2YWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodHlwZW9mIHZhbCA9PT0gJ2JpZ2ludCcpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB6ZXJvID0gQmlnSW50KDApO1xuICAgICAgICAgICAgICAgIHZhbCA9IHZhbCA8IHplcm8gPyAtdmFsIDogdmFsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICgodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHZhbCA9PT0gJ251bWJlcicpICYmICh0eXBlb2YgbWF4RnJhY3Rpb25EaWdpdHMgPT09ICdudW1iZXInIHx8IHR5cGVvZiBtYXhGcmFjdGlvbkRpZ2l0cyA9PT0gJ2JpZ2ludCcpKSB7XG4gICAgICAgICAgICBjb25zdCBbaW50LCBkZWNpbWFsXSA9ICgnJyArIHZhbCkuc3BsaXQoJy4nKTtcbiAgICAgICAgICAgIGlmIChkZWNpbWFsICE9IG51bGwgJiYgZGVjaW1hbC5sZW5ndGggPiBOdW1iZXIobWF4RnJhY3Rpb25EaWdpdHMpKSB7XG4gICAgICAgICAgICAgICAgdmFsID0gaW50ICsgJy4nICsgZGVjaW1hbC5zbGljZSgwLCBOdW1iZXIobWF4RnJhY3Rpb25EaWdpdHMpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHZhbCA9PT0gJ251bWJlcicgfHwgdHlwZW9mIHZhbCA9PT0gJ2JpZ2ludCcpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IGNsYW1wVmFsdWVJblJhbmdlKCcnICsgdmFsLCBtaW4sIG1heCk7XG4gICAgICAgICAgICB2YWwgPSByZXMudmFsO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YWwgPT09ICcnIHx8IHZhbCA9PSBudWxsKSB7XG4gICAgICAgICAgICBzZXRWYWx1ZShudWxsKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHN0clZhbCA9ICcnICsgdmFsO1xuICAgICAgICAgICAgY29uc3QgZGVjaW1hbHMgPSAoX2MgPSAoX2IgPSAoX2EgPSBzdHJWYWwubWF0Y2goL1xcLihcXGQrKSQvKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hWzFdKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IubGVuZ3RoKSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiAwO1xuICAgICAgICAgICAgY29uc3QgYm4gPSBCaWdOdW1iZXIoc3RyVmFsKTtcbiAgICAgICAgICAgIGxldCBub3JtYWxpemVkID0gYm4udG9GaXhlZChkZWNpbWFscyk7XG4gICAgICAgICAgICBpZiAobmVnYXRpdmUgJiYgc3RyVmFsLnRyaW0oKS5zdGFydHNXaXRoKCctJykgJiYgYm4uaXNaZXJvKCkpIHtcbiAgICAgICAgICAgICAgICBub3JtYWxpemVkID0gbm9ybWFsaXplZC5zdGFydHNXaXRoKCctJykgPyBub3JtYWxpemVkIDogYC0ke25vcm1hbGl6ZWR9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNldFZhbHVlKGAke25vcm1hbGl6ZWR9JHtoYXNEZWNpbWFsUG9pbnQgPyAnLicgOiAnJ31gLnRyaW0oKSk7XG4gICAgICAgIH1cbiAgICB9LCBbdmFsdWUsIG1heEZyYWN0aW9uRGlnaXRzLCBtaW4sIG1heCwgbmVnYXRpdmVdKTtcbiAgICByZXR1cm4gX2pzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ3dyYXBwZXInLCBqb2luQ2xzKHdyYXBwZXJDbHMsIGludmFsaWQgJiYgY2xhc3NlcygnaW52YWxpZCcpLCBzdWNjZXNzICYmIGNsYXNzZXMoJ3N1Y2Nlc3MnKSwgZGlzYWJsZWQgJiYgY2xhc3NlcygnZGlzYWJsZWQnKSwgcmVhZE9ubHkgJiYgY2xhc3NlcygncmVhZG9ubHknKSwgX3ZhbHVlICYmIGNsYXNzZXMoJ2ZpbGxlZCcpKSksIGNoaWxkcmVuOiBbbGFiZWxcbiAgICAgICAgICAgICAgICA/IGxvYWRpbmdcbiAgICAgICAgICAgICAgICAgICAgPyBfanN4KFNrZWxldG9uLCB7IHdpZHRoOiAnNzJweCcsIGhlaWdodDogJzE4cHgnLCBjbGFzc05hbWU6IGNsYXNzZXMoJ2xhYmVsLWxvYWRpbmcnKSB9KVxuICAgICAgICAgICAgICAgICAgICA6IF9qc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdsYWJlbCcsIGpvaW5DbHMocmVxdWlyZWQgJiYgY2xhc3NlcygnbGFiZWwtcmVxdWlyZWQnKSwgbGFiZWxDbHMpKSwgY2hpbGRyZW46IGxhYmVsIH0pXG4gICAgICAgICAgICAgICAgOiBudWxsLCBfanN4cyhcImRpdlwiLCB7IHJlZjogY29udGFpbmVyUmVmLCBjbGFzc05hbWU6IGNsYXNzZXModm9pZCAwLCBqb2luQ2xzKGNsYXNzTmFtZSwgaXNGb2N1cyAmJiBjbGFzc2VzKCdmb2N1cycpKSksIG9uQ2xpY2s6IChlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGUudGFyZ2V0IGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudClcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgKF9hID0gaW5wdXRSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc01heFdpZHRoKVxuICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsVG9FbmQoKTtcbiAgICAgICAgICAgICAgICB9LCBjaGlsZHJlbjogW3ByZWZpeCAmJiBfanN4KFwic3BhblwiLCB7IHJlZjogcHJlZml4UmVmLCBjbGFzc05hbWU6IGNsYXNzZXMoJ3ByZWZpeCcpLCBjaGlsZHJlbjogcHJlZml4IH0pLCBfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdlbGVtZW50JywgKCFpc0ZvY3VzICYmIGlzTWF4V2lkdGgpID8gY2xhc3NlcygnZWxlbWVudC1tYXgnKSA6ICcnKSwgY2hpbGRyZW46IF9qc3goXCJpbnB1dFwiLCBPYmplY3QuYXNzaWduKHt9LCByZXN0LCB7IHJlZjogaW5wdXRSZWYsIHZhbHVlOiBmb3JtYXR0ZWRWYWx1ZSwgcGxhY2Vob2xkZXI6IHBsYWNlaG9sZGVyLCByZWFkT25seTogcmVhZE9ubHksIGRpc2FibGVkOiBkaXNhYmxlZCwgc3R5bGU6IHsgJy0taW5wdXQtd2lkdGgnOiBgJHtfd2lkdGh9cHhgIH0sIG9uQ2hhbmdlOiBoYW5kbGVDaGFuZ2UsIG9uRm9jdXM6IGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJc0ZvY3VzKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkZvY3VzID09PSBudWxsIHx8IG9uRm9jdXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uRm9jdXMoZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgb25CbHVyOiBlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXNGb2N1cyhmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1ciA9PT0gbnVsbCB8fCBvbkJsdXIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQmx1cihlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IH0pKSB9KSwgY3VycmVuY3kgJiYgX2pzeChcInNwYW5cIiwgeyByZWY6IGN1cnJlbmN5UmVmLCBjbGFzc05hbWU6IGNsYXNzZXMoJ2N1cnJlbmN5JyksIGNoaWxkcmVuOiBjdXJyZW5jeSB9KSwgbG9hZGluZyA/IF9qc3goU3Bpbm5lciwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ3N1ZmZpeC1sb2FkaW5nJyksIHN0cm9rZVdpZHRoOiAnNCcgfSkgOiBzdWZmaXggPyBfanN4KFwic3BhblwiLCB7IHJlZjogc3VmZml4UmVmLCBjbGFzc05hbWU6IGNsYXNzZXMoJ3N1ZmZpeCcpLCBjaGlsZHJlbjogc3VmZml4IH0pIDogbnVsbCwgX2pzeChcInNwYW5cIiwgeyByZWY6IGZha2VFbGVSZWYsIGNsYXNzTmFtZTogY2xhc3NlcygnZmFrZScpLCBvbkNsaWNrOiBlID0+IGUuc3RvcFByb3BhZ2F0aW9uKCksIGNoaWxkcmVuOiBudW1lcmljRm9ybWF0dGVyKCcnICsgKF92YWx1ZSA9PSBudWxsID8gJycgOiBfdmFsdWUpLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhvdXNhbmRTZXBhcmF0b3I6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dOZWdhdGl2ZTogbmVnYXRpdmUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSB9KV0gfSksIChtZXNzYWdlIHx8IGZvb3Rub3RlKSAmJiBfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnZXh0cmEnKSwgY2hpbGRyZW46IFttZXNzYWdlICYmIF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ21lc3NhZ2UnLCBtZXNzYWdlQ2xzKSwgY2hpbGRyZW46IG1lc3NhZ2UgfSksIGZvb3Rub3RlICYmIF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2Zvb3Rub3RlJywgZm9vdG5vdGVDbHMpLCBjaGlsZHJlbjogZm9vdG5vdGUgfSldIH0pXSB9KTtcbn07XG5leHBvcnQgZGVmYXVsdCBtZW1vKElucHV0QW1vdW50KTsiLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
@@ -1,21 +1,29 @@
1
1
  import type { RefObject, ReactNode, MouseEvent, ChangeEvent, KeyboardEvent, FocusEvent } from 'react';
2
- export interface InputAmountProps {
2
+ export interface InputAmountBaseProps {
3
3
  ref?: RefObject<HTMLInputElement | null>;
4
4
  value?: string | number | bigint | null;
5
+ name?: string;
6
+ min?: number | bigint;
7
+ max?: number | bigint;
5
8
  maxFractionDigits?: number | bigint;
6
9
  placeholder?: string;
7
10
  className?: string;
8
11
  prefixCls?: string;
9
12
  wrapperCls?: string;
13
+ labelCls?: string;
10
14
  messageCls?: string;
11
- footnoteCls?: string;
12
15
  invalid?: boolean;
13
16
  negative?: boolean;
17
+ required?: boolean;
18
+ loading?: boolean;
19
+ success?: boolean;
20
+ disabled?: boolean;
21
+ readOnly?: boolean;
22
+ label?: ReactNode;
14
23
  prefix?: ReactNode;
15
24
  currency?: ReactNode;
16
25
  suffix?: ReactNode;
17
26
  message?: ReactNode;
18
- footnote?: ReactNode;
19
27
  onClick?: (e: MouseEvent<HTMLInputElement>) => void;
20
28
  onChange?: (e: ChangeEvent<HTMLInputElement>) => void;
21
29
  onKeyDown?: (e: KeyboardEvent<HTMLInputElement>) => void;
@@ -23,3 +31,13 @@ export interface InputAmountProps {
23
31
  onFocus?: (e: FocusEvent<HTMLInputElement>) => void;
24
32
  onBlur?: (e: FocusEvent<HTMLInputElement>) => void;
25
33
  }
34
+ export interface InputAmountPrimaryProps extends InputAmountBaseProps {
35
+ type?: 'primary';
36
+ footnote?: ReactNode;
37
+ footnoteCls?: string;
38
+ }
39
+ export interface InputAmountNormalProps extends InputAmountBaseProps {
40
+ type: 'normal';
41
+ size?: 'small' | 'large';
42
+ }
43
+ export type InputAmountProps = InputAmountPrimaryProps | InputAmountNormalProps;
@@ -1,2 +1,3 @@
1
- import './InputAmount.css';
2
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvSW5wdXRBbW91bnQvc3JjL2NvbXBvbmVudHMvSW5wdXRBbW91bnQvc3R5bGUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxvQkFBb0IiLCJmaWxlIjoiY29tcG9uZW50cy9JbnB1dEFtb3VudC9zdHlsZS9jc3MuanMiLCJzb3VyY2VzQ29udGVudCI6W251bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
1
+ import './normal.css';
2
+ import './primary.css';
3
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvSW5wdXRBbW91bnQvc3JjL2NvbXBvbmVudHMvSW5wdXRBbW91bnQvc3R5bGUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxlQUFlO0FBQ3RCLE9BQU8sZ0JBQWdCIiwiZmlsZSI6ImNvbXBvbmVudHMvSW5wdXRBbW91bnQvc3R5bGUvY3NzLmpzIiwic291cmNlc0NvbnRlbnQiOltudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
@@ -1 +1,2 @@
1
- import './InputAmount.scss';
1
+ import './normal.scss';
2
+ import './primary.scss';
@@ -1,2 +1,3 @@
1
- import './InputAmount.scss';
2
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvSW5wdXRBbW91bnQvc3JjL2NvbXBvbmVudHMvSW5wdXRBbW91bnQvc3R5bGUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxvQkFBb0IiLCJmaWxlIjoiY29tcG9uZW50cy9JbnB1dEFtb3VudC9zdHlsZS9pbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
1
+ import './normal.scss';
2
+ import './primary.scss';
3
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvSW5wdXRBbW91bnQvc3JjL2NvbXBvbmVudHMvSW5wdXRBbW91bnQvc3R5bGUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxlQUFlO0FBQ3RCLE9BQU8sZ0JBQWdCIiwiZmlsZSI6ImNvbXBvbmVudHMvSW5wdXRBbW91bnQvc3R5bGUvaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6W251bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
@@ -0,0 +1 @@
1
+ .om-react-ui-input-amount-normal-wrapper{display:inline-flex;flex-direction:column;width:100%}.om-react-ui-input-amount-normal{display:inline-flex;gap:8px;align-items:center;justify-content:start;width:100%;height:56px;padding:12px 16px;padding-bottom:16px;background-color:#f8f8f8;border:1px solid #d1d2d2;border-radius:12px;cursor:text}.om-react-ui-input-amount-normal:hover{border-color:#073387}.om-react-ui-input-amount-normal-focus{border-color:#073387;border-width:2px}.om-react-ui-input-amount-normal-element{width:100%}.om-react-ui-input-amount-normal-element input{width:100%;height:52px;padding:0;color:#131313;font-weight:400;font-size:16px;font-family:inherit;font-style:normal;line-height:22px;background-color:inherit;border:none;border-radius:0;outline:none;transition:none}.om-react-ui-input-amount-normal-element input::placeholder{color:#9fa3a3;font-weight:400}.om-react-ui-input-amount-normal-fake{position:absolute;top:0;left:-9999px;z-index:-1;display:inline-block;white-space:pre;visibility:hidden;opacity:0;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:none;inset-block-start:0;inset-inline-start:0}.om-react-ui-input-amount-normal-label{display:inline-block;margin-bottom:8px;font-weight:600;font-size:16px;font-style:normal;line-height:18px;word-wrap:break-word;word-break:break-all}.om-react-ui-input-amount-normal-label-required:after{margin-left:4px;color:#ae0000;font-size:16px;font-style:normal;line-height:120%;content:"*"}.om-react-ui-input-amount-normal-label-loading{margin-bottom:8px}.om-react-ui-input-amount-normal-currency,.om-react-ui-input-amount-normal-prefix,.om-react-ui-input-amount-normal-suffix{display:inline-flex;flex-grow:0;flex-shrink:0;align-items:center}.om-react-ui-input-amount-normal-suffix{margin-left:auto}.om-react-ui-input-amount-normal-suffix-loading{display:inline-block;width:16px;height:16px;margin:0 8px 0 auto}.om-react-ui-input-amount-normal-suffix-loading svg circle{stroke:#9fa3a3!important}.om-react-ui-input-amount-normal-message{display:flex;gap:4px;align-items:center;justify-content:flex-start;margin-top:4px;color:#646465;font-weight:400;font-size:12px;font-style:normal;line-height:17px;word-wrap:break-word;word-break:keep-all}.om-react-ui-input-amount-normal-message-success{color:#1f5800}.om-react-ui-input-amount-normal-message-error{color:#ae0000}.om-react-ui-input-amount-normal-footnote{margin-top:4px;text-align:left}.om-react-ui-input-amount-normal-readonly .om-react-ui-input-amount-normal{border-color:#d1d2d2;border-width:1px}.om-react-ui-input-amount-normal-readonly .om-react-ui-input-amount-normal-element input{cursor:default}.om-react-ui-input-amount-normal-disabled .om-react-ui-input-amount-normal{background-color:#e3e4e4;border-color:#e3e4e4;border-width:1px;cursor:not-allowed}.om-react-ui-input-amount-normal-disabled .om-react-ui-input-amount-normal-element input{opacity:1}.om-react-ui-input-amount-normal-disabled.om-react-ui-input-amount-normal-filled .om-react-ui-input-amount-normal{background-color:#f0f0f0;border-color:#f0f0f0;cursor:text}.om-react-ui-input-amount-normal-disabled.om-react-ui-input-amount-normal-filled .om-react-ui-input-amount-normal-element input{cursor:text;-webkit-user-select:text;-moz-user-select:text;user-select:text;pointer-events:auto}.om-react-ui-input-amount-normal-success .om-react-ui-input-amount-normal{border-color:#1f5800;border-width:1px}.om-react-ui-input-amount-normal-success .om-react-ui-input-amount-normal-element,.om-react-ui-input-amount-normal-success .om-react-ui-input-amount-normal-element input,.om-react-ui-input-amount-normal-success .om-react-ui-input-amount-normal-message,.om-react-ui-input-amount-normal-success .om-react-ui-input-amount-normal-prefix{color:#1f5800}.om-react-ui-input-amount-normal-invalid .om-react-ui-input-amount-normal{border-color:#ae0000;border-width:1px}.om-react-ui-input-amount-normal-invalid .om-react-ui-input-amount-normal-element,.om-react-ui-input-amount-normal-invalid .om-react-ui-input-amount-normal-element input,.om-react-ui-input-amount-normal-invalid .om-react-ui-input-amount-normal-message,.om-react-ui-input-amount-normal-invalid .om-react-ui-input-amount-normal-prefix{color:#ae0000}