@1money/react-ui 1.14.0-alpha.0 → 1.14.0-alpha.2
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.
- package/es/components/InputAmount/InputAmount.js +56 -7
- package/es/components/InputAmount/interface.d.ts +3 -0
- package/es/index.css +1 -1
- package/lib/components/InputAmount/InputAmount.js +56 -7
- package/lib/components/InputAmount/interface.d.ts +3 -0
- package/lib/index.css +1 -1
- package/package.json +1 -1
|
@@ -18,6 +18,33 @@ var MIN_INPUT_WIDTH = 33;
|
|
|
18
18
|
var normalizeNumberInput = function normalizeNumberInput(val) {
|
|
19
19
|
return val.replace(/[\u3002\uff0e\uff61]/g, '.').replace(/[\uFF0C]/g, ',');
|
|
20
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
|
+
};
|
|
21
48
|
export var InputAmount = function InputAmount(props) {
|
|
22
49
|
var value = props.value,
|
|
23
50
|
_props$type = props.type,
|
|
@@ -26,6 +53,8 @@ export var InputAmount = function InputAmount(props) {
|
|
|
26
53
|
children = props.children,
|
|
27
54
|
_props$placeholder = props.placeholder,
|
|
28
55
|
placeholder = _props$placeholder === void 0 ? '0' : _props$placeholder,
|
|
56
|
+
min = props.min,
|
|
57
|
+
max = props.max,
|
|
29
58
|
_props$size = props.size,
|
|
30
59
|
size = _props$size === void 0 ? 'large' : _props$size,
|
|
31
60
|
footnote = props.footnote,
|
|
@@ -51,7 +80,7 @@ export var InputAmount = function InputAmount(props) {
|
|
|
51
80
|
onChange = props.onChange,
|
|
52
81
|
_onBlur = props.onBlur,
|
|
53
82
|
_onFocus = props.onFocus,
|
|
54
|
-
rest = __rest(props, ["value", "type", "maxFractionDigits", "children", "placeholder", "size", "footnote", "footnoteCls", "className", "wrapperCls", "labelCls", "prefixCls", "messageCls", "invalid", "negative", "required", "loading", "success", "disabled", "readOnly", "label", "prefix", "suffix", "currency", "message", "onChange", "onBlur", "onFocus"]);
|
|
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"]);
|
|
55
84
|
var classes = classnames("".concat(prefixCls, "-").concat(type));
|
|
56
85
|
var inputRef = useRef(null);
|
|
57
86
|
var fakeEleRef = useRef(null);
|
|
@@ -60,6 +89,9 @@ export var InputAmount = function InputAmount(props) {
|
|
|
60
89
|
var currencyRef = useRef(null);
|
|
61
90
|
var containerRef = useRef(null);
|
|
62
91
|
var inputCaretPositionRef = useRef(0);
|
|
92
|
+
var prevValueRef = useRef(null);
|
|
93
|
+
var prevFocusRef = useRef(false);
|
|
94
|
+
var pendingCaretSyncRef = useRef(false);
|
|
63
95
|
var _useState = useState(null),
|
|
64
96
|
_useState2 = _slicedToArray(_useState, 2),
|
|
65
97
|
_value = _useState2[0],
|
|
@@ -97,6 +129,7 @@ export var InputAmount = function InputAmount(props) {
|
|
|
97
129
|
}, []);
|
|
98
130
|
var handleChange = useCallback(function (e) {
|
|
99
131
|
var _a, _b, _c, _d, _e, _f;
|
|
132
|
+
if (disabled || readOnly) return;
|
|
100
133
|
var val = e.target.value;
|
|
101
134
|
var truncatedFraction = false;
|
|
102
135
|
if (val != null) val = normalizeNumberInput(val).split(',').join('');
|
|
@@ -116,6 +149,12 @@ export var InputAmount = function InputAmount(props) {
|
|
|
116
149
|
truncatedFraction = true;
|
|
117
150
|
}
|
|
118
151
|
}
|
|
152
|
+
var clampedByRange = false;
|
|
153
|
+
if (typeof min === 'number' || typeof min === 'bigint' || typeof max === 'number' || typeof max === 'bigint') {
|
|
154
|
+
var res = clampValueInRange(val, min, max);
|
|
155
|
+
val = res.val;
|
|
156
|
+
clampedByRange = res.clamped;
|
|
157
|
+
}
|
|
119
158
|
if (inputRef.current) {
|
|
120
159
|
var selectionStart = (_a = inputRef.current.selectionStart) !== null && _a !== void 0 ? _a : 0;
|
|
121
160
|
var currentSlice = (_c = (_b = e.target.value) === null || _b === void 0 ? void 0 : _b.slice(0, selectionStart)) !== null && _c !== void 0 ? _c : '';
|
|
@@ -139,7 +178,8 @@ export var InputAmount = function InputAmount(props) {
|
|
|
139
178
|
if (hasDecimalPoint && !truncatedFraction && targetRawPos === val.length) {
|
|
140
179
|
caretPos = Math.min(formattedNewVal.length + 1, caretPos + 1);
|
|
141
180
|
}
|
|
142
|
-
inputCaretPositionRef.current = truncatedFraction ? formattedNewVal.length : caretPos;
|
|
181
|
+
inputCaretPositionRef.current = truncatedFraction ? formattedNewVal.length : clampedByRange ? formattedNewVal.length : caretPos;
|
|
182
|
+
pendingCaretSyncRef.current = true;
|
|
143
183
|
}
|
|
144
184
|
if (typeof value === 'undefined') {
|
|
145
185
|
if (val === '') {
|
|
@@ -157,7 +197,7 @@ export var InputAmount = function InputAmount(props) {
|
|
|
157
197
|
}
|
|
158
198
|
}
|
|
159
199
|
onChange === null || onChange === void 0 ? void 0 : onChange(e);
|
|
160
|
-
}, [onChange, _value, value, formattedValue, maxFractionDigits, negative]);
|
|
200
|
+
}, [onChange, _value, value, formattedValue, maxFractionDigits, min, max, negative, disabled, readOnly]);
|
|
161
201
|
useEffect(function () {
|
|
162
202
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
163
203
|
var containerWidth = (_b = (_a = containerRef.current) === null || _a === void 0 ? void 0 : _a.offsetWidth) !== null && _b !== void 0 ? _b : MIN_INPUT_WIDTH;
|
|
@@ -170,8 +210,13 @@ export var InputAmount = function InputAmount(props) {
|
|
|
170
210
|
var isMax = fakeWidth >= maxWidth;
|
|
171
211
|
setWidth(Math.min(maxWidth, Math.max(fakeWidth, MIN_INPUT_WIDTH)));
|
|
172
212
|
setIsMaxWidth(isMax);
|
|
173
|
-
if (isFocus
|
|
174
|
-
|
|
213
|
+
if (isFocus && (_value !== prevValueRef.current || !prevFocusRef.current) && pendingCaretSyncRef.current) {
|
|
214
|
+
scrollToEnd(true);
|
|
215
|
+
pendingCaretSyncRef.current = false;
|
|
216
|
+
}
|
|
217
|
+
prevValueRef.current = _value;
|
|
218
|
+
prevFocusRef.current = isFocus;
|
|
219
|
+
}, [_value, prefix, suffix, currency, isFocus, scrollToEnd]);
|
|
175
220
|
useEffect(function () {
|
|
176
221
|
// clear negative sign if not allowed
|
|
177
222
|
if (negative) return;
|
|
@@ -219,6 +264,10 @@ export var InputAmount = function InputAmount(props) {
|
|
|
219
264
|
val = _int2 + '.' + decimal.slice(0, Number(maxFractionDigits));
|
|
220
265
|
}
|
|
221
266
|
}
|
|
267
|
+
if (typeof val === 'string' || typeof val === 'number' || typeof val === 'bigint') {
|
|
268
|
+
var res = clampValueInRange('' + val, min, max);
|
|
269
|
+
val = res.val;
|
|
270
|
+
}
|
|
222
271
|
if (val === '' || val == null) {
|
|
223
272
|
setValue(null);
|
|
224
273
|
} else {
|
|
@@ -231,7 +280,7 @@ export var InputAmount = function InputAmount(props) {
|
|
|
231
280
|
}
|
|
232
281
|
setValue("".concat(normalized).concat(hasDecimalPoint ? '.' : '').trim());
|
|
233
282
|
}
|
|
234
|
-
}, [value, maxFractionDigits, negative]);
|
|
283
|
+
}, [value, maxFractionDigits, min, max, negative]);
|
|
235
284
|
return _jsxs("div", {
|
|
236
285
|
className: classes('wrapper', joinCls(wrapperCls, invalid && classes('invalid'), success && classes('success'), disabled && classes('disabled'), readOnly && classes('readonly'), _value && classes('filled'))),
|
|
237
286
|
children: [label ? loading ? _jsx(Skeleton, {
|
|
@@ -310,4 +359,4 @@ export var InputAmount = function InputAmount(props) {
|
|
|
310
359
|
});
|
|
311
360
|
};
|
|
312
361
|
export default /*#__PURE__*/memo(InputAmount);
|
|
313
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvSW5wdXRBbW91bnQvSW5wdXRBbW91bnQuanMiLCJjb21wb25lbnRzL3NyYy9jb21wb25lbnRzL0lucHV0QW1vdW50L0lucHV0QW1vdW50LnRzeCJdLCJuYW1lcyI6WyJfX3Jlc3QiLCJzIiwiZSIsInQiLCJwIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaW5kZXhPZiIsImdldE93blByb3BlcnR5U3ltYm9scyIsImkiLCJsZW5ndGgiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJtZW1vIiwidXNlTWVtbyIsInVzZVN0YXRlIiwidXNlQ2FsbGJhY2siLCJ1c2VSZWYiLCJ1c2VFZmZlY3QiLCJCaWdOdW1iZXIiLCJudW1lcmljRm9ybWF0dGVyIiwiU2tlbGV0b24iLCJTcGlubmVyIiwiZGVmYXVsdCIsImNsYXNzbmFtZXMiLCJqb2luQ2xzIiwiTUlOX0lOUFVUX1dJRFRIIiwibm9ybWFsaXplTnVtYmVySW5wdXQiLCJ2YWwiLCJyZXBsYWNlIiwiSW5wdXRBbW91bnQiLCJwcm9wcyIsInZhbHVlIiwiX3Byb3BzJHR5cGUiLCJ0eXBlIiwibWF4RnJhY3Rpb25EaWdpdHMiLCJjaGlsZHJlbiIsIl9wcm9wcyRwbGFjZWhvbGRlciIsInBsYWNlaG9sZGVyIiwiX3Byb3BzJHNpemUiLCJzaXplIiwiZm9vdG5vdGUiLCJmb290bm90ZUNscyIsImNsYXNzTmFtZSIsIndyYXBwZXJDbHMiLCJsYWJlbENscyIsIl9wcm9wcyRwcmVmaXhDbHMiLCJwcmVmaXhDbHMiLCJtZXNzYWdlQ2xzIiwiaW52YWxpZCIsIm5lZ2F0aXZlIiwicmVxdWlyZWQiLCJsb2FkaW5nIiwic3VjY2VzcyIsImRpc2FibGVkIiwicmVhZE9ubHkiLCJsYWJlbCIsInByZWZpeCIsInN1ZmZpeCIsImN1cnJlbmN5IiwibWVzc2FnZSIsIm9uQ2hhbmdlIiwib25CbHVyIiwib25Gb2N1cyIsInJlc3QiLCJjbGFzc2VzIiwiY29uY2F0IiwiaW5wdXRSZWYiLCJmYWtlRWxlUmVmIiwicHJlZml4UmVmIiwic3VmZml4UmVmIiwiY3VycmVuY3lSZWYiLCJjb250YWluZXJSZWYiLCJpbnB1dENhcmV0UG9zaXRpb25SZWYiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJfdmFsdWUiLCJzZXRWYWx1ZSIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiX3dpZHRoIiwic2V0V2lkdGgiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImlzTWF4V2lkdGgiLCJzZXRJc01heFdpZHRoIiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJpc0ZvY3VzIiwic2V0SXNGb2N1cyIsImZvcm1hdHRlZFZhbHVlIiwidGhvdXNhbmRTZXBhcmF0b3IiLCJhbGxvd05lZ2F0aXZlIiwic2Nyb2xsVG9FbmQiLCJzdGlja3kiLCJhcmd1bWVudHMiLCJ1bmRlZmluZWQiLCJfYSIsImlucHV0IiwiY3VycmVudCIsImxlbiIsInBvc2l0aW9uIiwic2Nyb2xsTGVmdCIsInNob3VsZFRvRW5kIiwic3RhcnQiLCJzZXRTZWxlY3Rpb25SYW5nZSIsInNjcm9sbFdpZHRoIiwiZm9jdXMiLCJoYW5kbGVDaGFuZ2UiLCJfYiIsIl9jIiwiX2QiLCJfZSIsIl9mIiwidGFyZ2V0IiwidHJ1bmNhdGVkRnJhY3Rpb24iLCJzcGxpdCIsImpvaW4iLCJoYXNEZWNpbWFsUG9pbnQiLCJlbmRzV2l0aCIsInNsaWNlIiwiaW5jbHVkZXMiLCJpc1N0YW5kYWxvbmVNaW51cyIsImlzTmFOIiwiX3ZhbCRzcGxpdCIsIl92YWwkc3BsaXQyIiwiaW50IiwiZGVjaW1hbCIsIk51bWJlciIsInNlbGVjdGlvblN0YXJ0IiwiY3VycmVudFNsaWNlIiwiY2FyZXRSYXdMZW5ndGgiLCJmb3JtYXR0ZWROZXdWYWwiLCJ0YXJnZXRSYXdQb3MiLCJNYXRoIiwibWluIiwiY2FyZXRQb3MiLCJzZWVuIiwiZGVjaW1hbHMiLCJtYXRjaCIsImJuIiwibm9ybWFsaXplZCIsInRvRml4ZWQiLCJ0cmltIiwic3RhcnRzV2l0aCIsImlzWmVybyIsIl9nIiwiX2giLCJfaiIsIl9rIiwiY29udGFpbmVyV2lkdGgiLCJvZmZzZXRXaWR0aCIsInByZWZpeFdpZHRoIiwic3VmZml4V2lkdGgiLCJjdXJyZW5jeVdpZHRoIiwiZmFrZVdpZHRoIiwiZ2FwV2lkdGgiLCJtYXhXaWR0aCIsImlzTWF4IiwibWF4IiwiYWJzIiwiemVybyIsIkJpZ0ludCIsIl9zcGxpdCIsIl9zcGxpdDIiLCJzdHJWYWwiLCJ3aWR0aCIsImhlaWdodCIsInJlZiIsIm9uQ2xpY2siLCJIVE1MSW5wdXRFbGVtZW50IiwiYXNzaWduIiwic3R5bGUiLCJzdHJva2VXaWR0aCIsInN0b3BQcm9wYWdhdGlvbiJdLCJtYXBwaW5ncyI6IjtBQUFBLElBQUlBLE1BQU0sR0FBSSxJQUFJLElBQUksSUFBSSxDQUFDQSxNQUFNLElBQUssVUFBVUMsQ0FBQyxFQUFFQyxDQUFDLEVBQUU7RUFDbEQsSUFBSUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztFQUNWLEtBQUssSUFBSUMsQ0FBQyxJQUFJSCxDQUFDLEVBQUUsSUFBSUksTUFBTSxDQUFDQyxTQUFTLENBQUNDLGNBQWMsQ0FBQ0MsSUFBSSxDQUFDUCxDQUFDLEVBQUVHLENBQUMsQ0FBQyxJQUFJRixDQUFDLENBQUNPLE9BQU8sQ0FBQ0wsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUMvRUQsQ0FBQyxDQUFDQyxDQUFDLENBQUMsR0FBR0gsQ0FBQyxDQUFDRyxDQUFDLENBQUM7RUFDZixJQUFJSCxDQUFDLElBQUksSUFBSSxJQUFJLE9BQU9JLE1BQU0sQ0FBQ0sscUJBQXFCLEtBQUssVUFBVSxFQUMvRCxLQUFLLElBQUlDLENBQUMsR0FBRyxDQUFDLEVBQUVQLENBQUMsR0FBR0MsTUFBTSxDQUFDSyxxQkFBcUIsQ0FBQ1QsQ0FBQyxDQUFDLEVBQUVVLENBQUMsR0FBR1AsQ0FBQyxDQUFDUSxNQUFNLEVBQUVELENBQUMsRUFBRSxFQUFFO0lBQ3BFLElBQUlULENB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QUE7UUFBS2lDLFNBQVMsRUFBRXNCLE9BQU8sQ0FBQyxTQUFTLEVBQUVqQixVQUFVLENBQUM7UUFBQVosUUFBQSxFQUFHd0I7TUFBTyxDQUFBLENBQU8sRUFDMUVuQixRQUFRLElBQUkvQixJQUFBLENBQUEsS0FBQSxFQUFBO1FBQUtpQyxTQUFTLEVBQUVzQixPQUFPLENBQUMsVUFBVSxFQUFFdkIsV0FBVyxDQUFDO1FBQUFOLFFBQUEsRUFBR0s7TUFBUSxDQUFBLENBQU87SUFBQSxDQUFBLENBQzNFO0VBQUEsQ0FBQSxDQUVKO0FBQ1IsQ0FBQztBQUVELDRCQUFlNUIsSUFBSSxDQUFDaUIsV0FBVyxDQUFDIiwiZmlsZSI6ImNvbXBvbmVudHMvSW5wdXRBbW91bnQvSW5wdXRBbW91bnQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19yZXN0ID0gKHRoaXMgJiYgdGhpcy5fX3Jlc3QpIHx8IGZ1bmN0aW9uIChzLCBlKSB7XG4gICAgdmFyIHQgPSB7fTtcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcbiAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXG4gICAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XG4gICAgICAgIH1cbiAgICByZXR1cm4gdDtcbn07XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgbWVtbywgdXNlTWVtbywgdXNlU3RhdGUsIHVzZUNhbGxiYWNrLCB1c2VSZWYsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCB7IG51bWVyaWNGb3JtYXR0ZXIgfSBmcm9tICdyZWFjdC1udW1iZXItZm9ybWF0JztcbmltcG9ydCB7IFNrZWxldG9uIH0gZnJvbSAncHJpbWVyZWFjdC9za2VsZXRvbic7XG5pbXBvcnQgU3Bpbm5lciBmcm9tICcuLi9TcGlubmVyJztcbmltcG9ydCB7IGRlZmF1bHQgYXMgY2xhc3NuYW1lcywgam9pbkNscyB9IGZyb20gJy4uLy4uL3V0aWxzL2NsYXNzbmFtZXMnO1xuY29uc3QgTUlOX0lOUFVUX1dJRFRIID0gMzM7XG5jb25zdCBub3JtYWxpemVOdW1iZXJJbnB1dCA9ICh2YWwpID0+IHZhbFxuICAgIC5yZXBsYWNlKC9bXFx1MzAwMlxcdWZmMGVcXHVmZjYxXS9nLCAnLicpXG4gICAgLnJlcGxhY2UoL1tcXHVGRjBDXS9nLCAnLCcpO1xuZXhwb3J0IGNvbnN0IElucHV0QW1vdW50ID0gcHJvcHMgPT4ge1xuICAgIGNvbnN0IHsgdmFsdWUsIHR5cGUgPSAncHJpbWFyeScsIG1heEZyYWN0aW9uRGlnaXRzLCBjaGlsZHJlbiwgcGxhY2Vob2xkZXIgPSAnMCcsIFxuICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICBzaXplID0gJ2xhcmdlJywgZm9vdG5vdGUsIGZvb3Rub3RlQ2xzLCBjbGFzc05hbWUsIHdyYXBwZXJDbHMsIGxhYmVsQ2xzLCBwcmVmaXhDbHMgPSAnaW5wdXQtYW1vdW50JywgbWVzc2FnZUNscywgaW52YWxpZCwgbmVnYXRpdmUsIHJlcXVpcmVkLCBsb2FkaW5nLCBzdWNjZXNzLCBkaXNhYmxlZCwgcmVhZE9ubHksIGxhYmVsLCBwcmVmaXgsIHN1ZmZpeCwgY3VycmVuY3ksIG1lc3NhZ2UsIG9uQ2hhbmdlLCBvbkJsdXIsIG9uRm9jdXMgfSA9IHByb3BzLCByZXN0ID0gX19yZXN0KHByb3BzLCBbXCJ2YWx1ZVwiLCBcInR5cGVcIiwgXCJtYXhGcmFjdGlvbkRpZ2l0c1wiLCBcImNoaWxkcmVuXCIsIFwicGxhY2Vob2xkZXJcIiwgXCJzaXplXCIsIFwiZm9vdG5vdGVcIiwgXCJmb290bm90ZUNsc1wiLCBcImNsYXNzTmFtZVwiLCBcIndyYXBwZXJDbHNcIiwgXCJsYWJlbENsc1wiLCBcInByZWZpeENsc1wiLCBcIm1lc3NhZ2VDbHNcIiwgXCJpbnZhbGlkXCIsIFwibmVnYXRpdmVcIiwgXCJyZXF1aXJlZFwiLCBcImxvYWRpbmdcIiwgXCJzdWNjZXNzXCIsIFwiZGlzYWJsZWRcIiwgXCJyZWFkT25seVwiLCBcImxhYmVsXCIsIFwicHJlZml4XCIsIFwic3VmZml4XCIsIFwiY3VycmVuY3lcIiwgXCJtZXNzYWdlXCIsIFwib25DaGFuZ2VcIiwgXCJvbkJsdXJcIiwgXCJvbkZvY3VzXCJdKTtcbiAgICBjb25zdCBjbGFzc2VzID0gY2xhc3NuYW1lcyhgJHtwcmVmaXhDbHN9LSR7dHlwZX1gKTtcbiAgICBjb25zdCBpbnB1dFJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBmYWtlRWxlUmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IHByZWZpeFJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBzdWZmaXhSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgY3VycmVuY3lSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgY29udGFpbmVyUmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGlucHV0Q2FyZXRQb3NpdGlvblJlZiA9IHVzZVJlZigwKTtcbiAgICBjb25zdCBbX3ZhbHVlLCBzZXRWYWx1ZV0gPSB1c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbX3dpZHRoLCBzZXRXaWR0aF0gPSB1c2VTdGF0ZShNSU5fSU5QVVRfV0lEVEgpO1xuICAgIGNvbnN0IFtpc01heFdpZHRoLCBzZXRJc01heFdpZHRoXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbaXNGb2N1cywgc2V0SXNGb2N1c10gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgZm9ybWF0dGVkVmFsdWUgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIG51bWVyaWNGb3JtYXR0ZXIoJycgKyAoX3ZhbHVlID09IG51bGwgPyAnJyA6IF92YWx1ZSksIHtcbiAgICAgICAgICAgIHRob3VzYW5kU2VwYXJhdG9yOiB0cnVlLFxuICAgICAgICAgICAgYWxsb3dOZWdhdGl2ZTogbmVnYXRpdmUsXG4gICAgICAgIH0pO1xuICAgIH0sIFtfdmFsdWUsIG5lZ2F0aXZlXSk7XG4gICAgY29uc3Qgc2Nyb2xsVG9FbmQgPSB1c2VDYWxsYmFjaygoc3RpY2t5ID0gZmFsc2UpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBjb25zdCBpbnB1dCA9IGlucHV0UmVmLmN1cnJlbnQ7XG4gICAgICAgIGlmICghaW5wdXQpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IGxlbiA9IChfYSA9IGlucHV0LnZhbHVlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubGVuZ3RoO1xuICAgICAgICBjb25zdCBwb3NpdGlvbiA9IGlucHV0LnNjcm9sbExlZnQ7XG4gICAgICAgIGNvbnN0IHNob3VsZFRvRW5kID0gIXN0aWNreTtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBzaG91bGRUb0VuZCA/IGxlbiA6IGlucHV0Q2FyZXRQb3NpdGlvblJlZi5jdXJyZW50O1xuICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZShzdGFydCwgc3RhcnQpO1xuICAgICAgICBpbnB1dC5zY3JvbGxMZWZ0ID0gc2hvdWxkVG9FbmQgPyBpbnB1dC5zY3JvbGxXaWR0aCA6IHBvc2l0aW9uO1xuICAgICAgICBpbnB1dC5mb2N1cygpO1xuICAgIH0sIFtdKTtcbiAgICBjb25zdCBoYW5kbGVDaGFuZ2UgPSB1c2VDYWxsYmFjaygoZSkgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2QsIF9lLCBfZjtcbiAgICAgICAgbGV0IHZhbCA9IGUudGFyZ2V0LnZhbHVlO1xuICAgICAgICBsZXQgdHJ1bmNhdGVkRnJhY3Rpb24gPSBmYWxzZTtcbiAgICAgICAgaWYgKHZhbCAhPSBudWxsKVxuICAgICAgICAgICAgdmFsID0gbm9ybWFsaXplTnVtYmVySW5wdXQodmFsKS5zcGxpdCgnLCcpLmpvaW4oJycpO1xuICAgICAgICBjb25zdCBoYXNEZWNpbWFsUG9pbnQgPSAhIXZhbCAmJiB2YWwuZW5kc1dpdGgoJy4nKTtcbiAgICAgICAgaWYgKGhhc0RlY2ltYWxQb2ludClcbiAgICAgICAgICAgIHZhbCA9IHZhbC5zbGljZSgwLCAtMSk7XG4gICAgICAgIGlmICghbmVnYXRpdmUgJiYgKHZhbCA9PT0gbnVsbCB8fCB2YWwgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHZhbC5pbmNsdWRlcygnLScpKSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgaXNTdGFuZGFsb25lTWludXMgPSBuZWdhdGl2ZSAmJiB2YWwgPT09ICctJztcbiAgICAgICAgaWYgKCFpc1N0YW5kYWxvbmVNaW51cyAmJiBpc05hTigrdmFsKSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaWYgKHZhbCA9PT0gX3ZhbHVlICYmICFoYXNEZWNpbWFsUG9pbnQpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmICh0eXBlb2YgbWF4RnJhY3Rpb25EaWdpdHMgPT09ICdudW1iZXInIHx8IHR5cGVvZiBtYXhGcmFjdGlvbkRpZ2l0cyA9PT0gJ2JpZ2ludCcpIHtcbiAgICAgICAgICAgIGNvbnN0IFtpbnQsIGRlY2ltYWxdID0gdmFsLnNwbGl0KCcuJyk7XG4gICAgICAgICAgICBpZiAoZGVjaW1hbCAhPSBudWxsICYmIGRlY2ltYWwubGVuZ3RoID4gTnVtYmVyKG1heEZyYWN0aW9uRGlnaXRzKSkge1xuICAgICAgICAgICAgICAgIHZhbCA9IGAke2ludH0uJHtkZWNpbWFsLnNsaWNlKDAsIE51bWJlcihtYXhGcmFjdGlvbkRpZ2l0cykpfWA7XG4gICAgICAgICAgICAgICAgdHJ1bmNhdGVkRnJhY3Rpb24gPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChpbnB1dFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICBjb25zdCBzZWxlY3Rpb25TdGFydCA9IChfYSA9IGlucHV0UmVmLmN1cnJlbnQuc2VsZWN0aW9uU3RhcnQpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IDA7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50U2xpY2UgPSAoX2MgPSAoX2IgPSBlLnRhcmdldC52YWx1ZSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLnNsaWNlKDAsIHNlbGVjdGlvblN0YXJ0KSkgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDogJyc7XG4gICAgICAgICAgICBjb25zdCBjYXJldFJhd0xlbmd0aCA9IG5vcm1hbGl6ZU51bWJlcklucHV0KGN1cnJlbnRTbGljZSkuc3BsaXQoJywnKS5qb2luKCcnKS5sZW5ndGg7XG4gICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWROZXdWYWwgPSBudW1lcmljRm9ybWF0dGVyKHZhbCwge1xuICAgICAgICAgICAgICAgIHRob3VzYW5kU2VwYXJhdG9yOiB0cnVlLFxuICAgICAgICAgICAgICAgIGFsbG93TmVnYXRpdmU6IG5lZ2F0aXZlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCB0YXJnZXRSYXdQb3MgPSBNYXRoLm1pbihjYXJldFJhd0xlbmd0aCwgdmFsLmxlbmd0aCk7XG4gICAgICAgICAgICBsZXQgY2FyZXRQb3MgPSBmb3JtYXR0ZWROZXdWYWwubGVuZ3RoO1xuICAgICAgICAgICAgbGV0IHNlZW4gPSAwO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmb3JtYXR0ZWROZXdWYWwubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoZm9ybWF0dGVkTmV3VmFsW2ldID09PSAnLCcpXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIHNlZW4gKz0gMTtcbiAgICAgICAgICAgICAgICBpZiAoc2VlbiA9PT0gdGFyZ2V0UmF3UG9zKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhcmV0UG9zID0gaSArIDE7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0YXJnZXRSYXdQb3MgPT09IDApXG4gICAgICAgICAgICAgICAgY2FyZXRQb3MgPSAwO1xuICAgICAgICAgICAgaWYgKGhhc0RlY2ltYWxQb2ludCAmJiAhdHJ1bmNhdGVkRnJhY3Rpb24gJiYgdGFyZ2V0UmF3UG9zID09PSB2YWwubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgY2FyZXRQb3MgPSBNYXRoLm1pbihmb3JtYXR0ZWROZXdWYWwubGVuZ3RoICsgMSwgY2FyZXRQb3MgKyAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlucHV0Q2FyZXRQb3NpdGlvblJlZi5jdXJyZW50ID0gdHJ1bmNhdGVkRnJhY3Rpb25cbiAgICAgICAgICAgICAgICA/IGZvcm1hdHRlZE5ld1ZhbC5sZW5ndGhcbiAgICAgICAgICAgICAgICA6IGNhcmV0UG9zO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBpZiAodmFsID09PSAnJykge1xuICAgICAgICAgICAgICAgIHNldFZhbHVlKG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoaXNTdGFuZGFsb25lTWludXMpIHtcbiAgICAgICAgICAgICAgICBzZXRWYWx1ZSgnLScpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGVjaW1hbHMgPSAoX2YgPSAoX2UgPSAoX2QgPSB2YWwubWF0Y2goL1xcLihcXGQrKSQvKSkgPT09IG51bGwgfHwgX2QgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kWzFdKSA9PT0gbnVsbCB8fCBfZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2UubGVuZ3RoKSAhPT0gbnVsbCAmJiBfZiAhPT0gdm9pZCAwID8gX2YgOiAwO1xuICAgICAgICAgICAgICAgIGNvbnN0IGJuID0gQmlnTnVtYmVyKHZhbCk7XG4gICAgICAgICAgICAgICAgbGV0IG5vcm1hbGl6ZWQgPSBibi50b0ZpeGVkKGRlY2ltYWxzKTtcbiAgICAgICAgICAgICAgICBpZiAobmVnYXRpdmUgJiYgdmFsLnRyaW0oKS5zdGFydHNXaXRoKCctJykgJiYgYm4uaXNaZXJvKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZWQuc3RhcnRzV2l0aCgnLScpID8gbm9ybWFsaXplZCA6IGAtJHtub3JtYWxpemVkfWA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNldFZhbHVlKGAke25vcm1hbGl6ZWR9JHtoYXNEZWNpbWFsUG9pbnQgPyAnLicgOiAnJ31gLnRyaW0oKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgb25DaGFuZ2UgPT09IG51bGwgfHwgb25DaGFuZ2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQ2hhbmdlKGUpO1xuICAgIH0sIFtvbkNoYW5nZSwgX3ZhbHVlLCB2YWx1ZSwgZm9ybWF0dGVkVmFsdWUsIG1heEZyYWN0aW9uRGlnaXRzLCBuZWdhdGl2ZV0pO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jLCBfZCwgX2UsIF9mLCBfZywgX2gsIF9qLCBfaztcbiAgICAgICAgY29uc3QgY29udGFpbmVyV2lkdGggPSAoX2IgPSAoX2EgPSBjb250YWluZXJSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLm9mZnNldFdpZHRoKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiBNSU5fSU5QVVRfV0lEVEg7XG4gICAgICAgIGNvbnN0IHByZWZpeFdpZHRoID0gKF9kID0gKF9jID0gcHJlZml4UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy5vZmZzZXRXaWR0aCkgIT09IG51bGwgJiYgX2QgIT09IHZvaWQgMCA/IF9kIDogMDtcbiAgICAgICAgY29uc3Qgc3VmZml4V2lkdGggPSAoX2YgPSAoX2UgPSBzdWZmaXhSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9lLm9mZnNldFdpZHRoKSAhPT0gbnVsbCAmJiBfZiAhPT0gdm9pZCAwID8gX2YgOiAwO1xuICAgICAgICBjb25zdCBjdXJyZW5jeVdpZHRoID0gKF9oID0gKF9nID0gY3VycmVuY3lSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2cgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9nLm9mZnNldFdpZHRoKSAhPT0gbnVsbCAmJiBfaCAhPT0gdm9pZCAwID8gX2ggOiAwO1xuICAgICAgICBjb25zdCBmYWtlV2lkdGggPSAoX2sgPSAoX2ogPSBmYWtlRWxlUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9qID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfai5vZmZzZXRXaWR0aCkgIT09IG51bGwgJiYgX2sgIT09IHZvaWQgMCA/IF9rIDogMDtcbiAgICAgICAgY29uc3QgZ2FwV2lkdGggPSBwcmVmaXhXaWR0aCAmJiBzdWZmaXhXaWR0aCAmJiBjdXJyZW5jeVdpZHRoXG4gICAgICAgICAgICA/IDI0XG4gICAgICAgICAgICA6IChwcmVmaXhXaWR0aCAmJiBzdWZmaXhXaWR0aCkgfHwgKHByZWZpeFdpZHRoICYmIGN1cnJlbmN5V2lkdGgpIHx8IChzdWZmaXhXaWR0aCAmJiBjdXJyZW5jeVdpZHRoKVxuICAgICAgICAgICAgICAgID8gMTZcbiAgICAgICAgICAgICAgICA6IHByZWZpeFdpZHRoIHx8IHN1ZmZpeFdpZHRoIHx8IGN1cnJlbmN5V2lkdGhcbiAgICAgICAgICAgICAgICAgICAgPyA4XG4gICAgICAgICAgICAgICAgICAgIDogMDtcbiAgICAgICAgY29uc3QgbWF4V2lkdGggPSBjb250YWluZXJXaWR0aCAtIHByZWZpeFdpZHRoIC0gc3VmZml4V2lkdGggLSBjdXJyZW5jeVdpZHRoIC0gZ2FwV2lkdGg7XG4gICAgICAgIGNvbnN0IGlzTWF4ID0gZmFrZVdpZHRoID49IG1heFdpZHRoO1xuICAgICAgICBzZXRXaWR0aChNYXRoLm1pbihtYXhXaWR0aCwgTWF0aC5tYXgoZmFrZVdpZHRoLCBNSU5fSU5QVVRfV0lEVEgpKSk7XG4gICAgICAgIHNldElzTWF4V2lkdGgoaXNNYXgpO1xuICAgICAgICBpZiAoaXNGb2N1cylcbiAgICAgICAgICAgIHNjcm9sbFRvRW5kKHRydWUpO1xuICAgIH0sIFtfdmFsdWUsIHByZWZpeCwgc3VmZml4LCBjdXJyZW5jeSwgaXNGb2N1c10pO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIC8vIGNsZWFyIG5lZ2F0aXZlIHNpZ24gaWYgbm90IGFsbG93ZWRcbiAgICAgICAgaWYgKG5lZ2F0aXZlKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAndW5kZWZpbmVkJylcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaWYgKF92YWx1ZSA9PSBudWxsKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAoX3ZhbHVlID09PSAnLScpIHtcbiAgICAgICAgICAgIHNldFZhbHVlKG51bGwpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChfdmFsdWUuc3RhcnRzV2l0aCgnLScpKVxuICAgICAgICAgICAgc2V0VmFsdWUoX3ZhbHVlLnNsaWNlKDEpKTtcbiAgICB9LCBbbmVnYXRpdmUsIHZhbHVlLCBfdmFsdWVdKTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYztcbiAgICAgICAgbGV0IHZhbCA9IHZhbHVlO1xuICAgICAgICBsZXQgaGFzRGVjaW1hbFBvaW50ID0gZmFsc2U7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgaWYgKHZhbCA9PT0gJycpIHtcbiAgICAgICAgICAgICAgICB2YWwgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdmFsID0gbm9ybWFsaXplTnVtYmVySW5wdXQodmFsKS5zcGxpdCgnLCcpLmpvaW4oJycpO1xuICAgICAgICAgICAgICAgIGhhc0RlY2ltYWxQb2ludCA9ICEhdmFsICYmIHZhbC5lbmRzV2l0aCgnLicpO1xuICAgICAgICAgICAgICAgIGlmIChoYXNEZWNpbWFsUG9pbnQpXG4gICAgICAgICAgICAgICAgICAgIHZhbCA9IHZhbC5zbGljZSgwLCAtMSk7XG4gICAgICAgICAgICAgICAgaWYgKCFuZWdhdGl2ZSlcbiAgICAgICAgICAgICAgICAgICAgdmFsID0gdmFsLnJlcGxhY2UoLy0vZywgJycpO1xuICAgICAgICAgICAgICAgIGlmIChuZWdhdGl2ZSAmJiB2YWwgPT09ICctJykge1xuICAgICAgICAgICAgICAgICAgICBzZXRWYWx1ZSgnLScpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChpc05hTigrdmFsKSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHZhbCAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsICE9PSAnbnVtYmVyJyAmJiB0eXBlb2YgdmFsICE9PSAnYmlnaW50JylcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaWYgKCFuZWdhdGl2ZSkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgICAgdmFsID0gTWF0aC5hYnModmFsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZiB2YWwgPT09ICdiaWdpbnQnKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgemVybyA9IEJpZ0ludCgwKTtcbiAgICAgICAgICAgICAgICB2YWwgPSB2YWwgPCB6ZXJvID8gLXZhbCA6IHZhbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSAmJiAodHlwZW9mIG1heEZyYWN0aW9uRGlnaXRzID09PSAnbnVtYmVyJyB8fCB0eXBlb2YgbWF4RnJhY3Rpb25EaWdpdHMgPT09ICdiaWdpbnQnKSkge1xuICAgICAgICAgICAgY29uc3QgW2ludCwgZGVjaW1hbF0gPSAoJycgKyB2YWwpLnNwbGl0KCcuJyk7XG4gICAgICAgICAgICBpZiAoZGVjaW1hbCAhPSBudWxsICYmIGRlY2ltYWwubGVuZ3RoID4gTnVtYmVyKG1heEZyYWN0aW9uRGlnaXRzKSkge1xuICAgICAgICAgICAgICAgIHZhbCA9IGludCArICcuJyArIGRlY2ltYWwuc2xpY2UoMCwgTnVtYmVyKG1heEZyYWN0aW9uRGlnaXRzKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbCA9PT0gJycgfHwgdmFsID09IG51bGwpIHtcbiAgICAgICAgICAgIHNldFZhbHVlKG51bGwpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc3Qgc3RyVmFsID0gJycgKyB2YWw7XG4gICAgICAgICAgICBjb25zdCBkZWNpbWFscyA9IChfYyA9IChfYiA9IChfYSA9IHN0clZhbC5tYXRjaCgvXFwuKFxcZCspJC8pKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2FbMV0pID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5sZW5ndGgpICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6IDA7XG4gICAgICAgICAgICBjb25zdCBibiA9IEJpZ051bWJlcihzdHJWYWwpO1xuICAgICAgICAgICAgbGV0IG5vcm1hbGl6ZWQgPSBibi50b0ZpeGVkKGRlY2ltYWxzKTtcbiAgICAgICAgICAgIGlmIChuZWdhdGl2ZSAmJiBzdHJWYWwudHJpbSgpLnN0YXJ0c1dpdGgoJy0nKSAmJiBibi5pc1plcm8oKSkge1xuICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWQgPSBub3JtYWxpemVkLnN0YXJ0c1dpdGgoJy0nKSA/IG5vcm1hbGl6ZWQgOiBgLSR7bm9ybWFsaXplZH1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2V0VmFsdWUoYCR7bm9ybWFsaXplZH0ke2hhc0RlY2ltYWxQb2ludCA/ICcuJyA6ICcnfWAudHJpbSgpKTtcbiAgICAgICAgfVxuICAgIH0sIFt2YWx1ZSwgbWF4RnJhY3Rpb25EaWdpdHMsIG5lZ2F0aXZlXSk7XG4gICAgcmV0dXJuIF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCd3cmFwcGVyJywgam9pbkNscyh3cmFwcGVyQ2xzLCBpbnZhbGlkICYmIGNsYXNzZXMoJ2ludmFsaWQnKSwgc3VjY2VzcyAmJiBjbGFzc2VzKCdzdWNjZXNzJyksIGRpc2FibGVkICYmIGNsYXNzZXMoJ2Rpc2FibGVkJyksIHJlYWRPbmx5ICYmIGNsYXNzZXMoJ3JlYWRvbmx5JyksIF92YWx1ZSAmJiBjbGFzc2VzKCdmaWxsZWQnKSkpLCBjaGlsZHJlbjogW2xhYmVsXG4gICAgICAgICAgICAgICAgPyBsb2FkaW5nXG4gICAgICAgICAgICAgICAgICAgID8gX2pzeChTa2VsZXRvbiwgeyB3aWR0aDogJzcycHgnLCBoZWlnaHQ6ICcxOHB4JywgY2xhc3NOYW1lOiBjbGFzc2VzKCdsYWJlbC1sb2FkaW5nJykgfSlcbiAgICAgICAgICAgICAgICAgICAgOiBfanN4KFwic3BhblwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnbGFiZWwnLCBqb2luQ2xzKHJlcXVpcmVkICYmIGNsYXNzZXMoJ2xhYmVsLXJlcXVpcmVkJyksIGxhYmVsQ2xzKSksIGNoaWxkcmVuOiBsYWJlbCB9KVxuICAgICAgICAgICAgICAgIDogbnVsbCwgX2pzeHMoXCJkaXZcIiwgeyByZWY6IGNvbnRhaW5lclJlZiwgY2xhc3NOYW1lOiBjbGFzc2VzKHZvaWQgMCwgam9pbkNscyhjbGFzc05hbWUsIGlzRm9jdXMgJiYgY2xhc3NlcygnZm9jdXMnKSkpLCBvbkNsaWNrOiAoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlLnRhcmdldCBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIChfYSA9IGlucHV0UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5mb2N1cygpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNNYXhXaWR0aClcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbFRvRW5kKCk7XG4gICAgICAgICAgICAgICAgfSwgY2hpbGRyZW46IFtwcmVmaXggJiYgX2pzeChcInNwYW5cIiwgeyByZWY6IHByZWZpeFJlZiwgY2xhc3NOYW1lOiBjbGFzc2VzKCdwcmVmaXgnKSwgY2hpbGRyZW46IHByZWZpeCB9KSwgX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnZWxlbWVudCcsICghaXNGb2N1cyAmJiBpc01heFdpZHRoKSA/IGNsYXNzZXMoJ2VsZW1lbnQtbWF4JykgOiAnJyksIGNoaWxkcmVuOiBfanN4KFwiaW5wdXRcIiwgT2JqZWN0LmFzc2lnbih7fSwgcmVzdCwgeyByZWY6IGlucHV0UmVmLCB2YWx1ZTogZm9ybWF0dGVkVmFsdWUsIHBsYWNlaG9sZGVyOiBwbGFjZWhvbGRlciwgcmVhZE9ubHk6IHJlYWRPbmx5LCBkaXNhYmxlZDogZGlzYWJsZWQsIHN0eWxlOiB7ICctLWlucHV0LXdpZHRoJzogYCR7X3dpZHRofXB4YCB9LCBvbkNoYW5nZTogaGFuZGxlQ2hhbmdlLCBvbkZvY3VzOiBlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXNGb2N1cyh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Gb2N1cyA9PT0gbnVsbCB8fCBvbkZvY3VzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkZvY3VzKGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIG9uQmx1cjogZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldElzRm9jdXMoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXIgPT09IG51bGwgfHwgb25CbHVyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkJsdXIoZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSB9KSkgfSksIGN1cnJlbmN5ICYmIF9qc3goXCJzcGFuXCIsIHsgcmVmOiBjdXJyZW5jeVJlZiwgY2xhc3NOYW1lOiBjbGFzc2VzKCdjdXJyZW5jeScpLCBjaGlsZHJlbjogY3VycmVuY3kgfSksIGxvYWRpbmcgPyBfanN4KFNwaW5uZXIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdzdWZmaXgtbG9hZGluZycpLCBzdHJva2VXaWR0aDogJzQnIH0pIDogc3VmZml4ID8gX2pzeChcInNwYW5cIiwgeyByZWY6IHN1ZmZpeFJlZiwgY2xhc3NOYW1lOiBjbGFzc2VzKCdzdWZmaXgnKSwgY2hpbGRyZW46IHN1ZmZpeCB9KSA6IG51bGwsIF9qc3goXCJzcGFuXCIsIHsgcmVmOiBmYWtlRWxlUmVmLCBjbGFzc05hbWU6IGNsYXNzZXMoJ2Zha2UnKSwgb25DbGljazogZSA9PiBlLnN0b3BQcm9wYWdhdGlvbigpLCBjaGlsZHJlbjogbnVtZXJpY0Zvcm1hdHRlcignJyArIChfdmFsdWUgPT0gbnVsbCA/ICcnIDogX3ZhbHVlKSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRob3VzYW5kU2VwYXJhdG9yOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93TmVnYXRpdmU6IG5lZ2F0aXZlLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgfSldIH0pLCAobWVzc2FnZSB8fCBmb290bm90ZSkgJiYgX2pzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2V4dHJhJyksIGNoaWxkcmVuOiBbbWVzc2FnZSAmJiBfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdtZXNzYWdlJywgbWVzc2FnZUNscyksIGNoaWxkcmVuOiBtZXNzYWdlIH0pLCBmb290bm90ZSAmJiBfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdmb290bm90ZScsIGZvb3Rub3RlQ2xzKSwgY2hpbGRyZW46IGZvb3Rub3RlIH0pXSB9KV0gfSk7XG59O1xuZXhwb3J0IGRlZmF1bHQgbWVtbyhJbnB1dEFtb3VudCk7IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
|
|
362
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvSW5wdXRBbW91bnQvSW5wdXRBbW91bnQuanMiLCJjb21wb25lbnRzL3NyYy9jb21wb25lbnRzL0lucHV0QW1vdW50L0lucHV0QW1vdW50LnRzeCJdLCJuYW1lcyI6WyJfX3Jlc3QiLCJzIiwiZSIsInQiLCJwIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaW5kZXhPZiIsImdldE93blByb3BlcnR5U3ltYm9scyIsImkiLCJsZW5ndGgiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJtZW1vIiwidXNlTWVtbyIsInVzZVN0YXRlIiwidXNlQ2FsbGJhY2siLCJ1c2VSZWYiLCJ1c2VFZmZlY3QiLCJCaWdOdW1iZXIiLCJudW1lcmljRm9ybWF0dGVyIiwiU2tlbGV0b24iLCJTcGlubmVyIiwiZGVmYXVsdCIsImNsYXNzbmFtZXMiLCJqb2luQ2xzIiwiTUlOX0lOUFVUX1dJRFRIIiwibm9ybWFsaXplTnVtYmVySW5wdXQiLCJ2YWwiLCJyZXBsYWNlIiwiY2xhbXBWYWx1ZUluUmFuZ2UiLCJtaW4iLCJtYXgiLCJpc05hTiIsImNsYW1wZWQiLCJjbGFtcGVkVmFsIiwiYm5WYWwiLCJtaW5CbiIsImx0IiwibWF4Qm4iLCJndCIsIklucHV0QW1vdW50IiwicHJvcHMiLCJ2YWx1ZSIsIl9wcm9wcyR0eXBlIiwidHlwZSIsIm1heEZyYWN0aW9uRGlnaXRzIiwiY2hpbGRyZW4iLCJfcHJvcHMkcGxhY2Vob2xkZXIiLCJwbGFjZWhvbGRlciIsIl9wcm9wcyRzaXplIiwic2l6ZSIsImZvb3Rub3RlIiwiZm9vdG5vdGVDbHMiLCJjbGFzc05hbWUiLCJ3cmFwcGVyQ2xzIiwibGFiZWxDbHMiLCJfcHJvcHMkcHJlZml4Q2xzIiwicHJlZml4Q2xzIiwibWVzc2FnZUNscyIsImludmFsaWQiLCJuZWdhdGl2ZSIsInJlcXVpcmVkIiwibG9hZGluZyIsInN1Y2Nlc3MiLCJkaXNhYmxlZCIsInJlYWRPbmx5IiwibGFiZWwiLCJwcmVmaXgiLCJzdWZmaXgiLCJjdXJyZW5jeSIsIm1lc3NhZ2UiLCJvbkNoYW5nZSIsIm9uQmx1ciIsIm9uRm9jdXMiLCJyZXN0IiwiY2xhc3NlcyIsImNvbmNhdCIsImlucHV0UmVmIiwiZmFrZUVsZVJlZiIsInByZWZpeFJlZiIsInN1ZmZpeFJlZiIsImN1cnJlbmN5UmVmIiwiY29udGFpbmVyUmVmIiwiaW5wdXRDYXJldFBvc2l0aW9uUmVmIiwicHJldlZhbHVlUmVmIiwicHJldkZvY3VzUmVmIiwicGVuZGluZ0NhcmV0U3luY1JlZiIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsIl92YWx1ZSIsInNldFZhbHVlIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJfd2lkdGgiLCJzZXRXaWR0aCIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2IiwiaXNNYXhXaWR0aCIsInNldElzTWF4V2lkdGgiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsImlzRm9jdXMiLCJzZXRJc0ZvY3VzIiwiZm9ybWF0dGVkVmFsdWUiLCJ0aG91c2FuZFNlcGFyYXRvciIsImFsbG93TmVnYXRpdmUiLCJzY3JvbGxUb0VuZCIsInN0aWNreSIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsIl9hIiwiaW5wdXQiLCJjdXJyZW50IiwibGVuIiwicG9zaXRpb24iLCJzY3JvbGxMZWZ0Iiwic2hvdWxkVG9FbmQiLCJzdGFydCIsInNldFNlbGVjdGlvblJhbmdlIiwic2Nyb2xsV2lkdGgiLCJmb2N1cyIsImhhbmRsZUNoYW5nZSIsIl9iIiwiX2MiLCJfZCIsIl9lIiwiX2YiLCJ0YXJnZXQiLCJ0cnVuY2F0ZWRGcmFjdGlvbiIsInNwbGl0Iiwiam9pbiIsImhhc0RlY2ltYWxQb2ludCIsImVuZHNXaXRoIiwic2xpY2UiLCJpbmNsdWRlcyIsImlzU3RhbmRhbG9uZU1pbnVzIiwiX3ZhbCRzcGxpdCIsIl92YWwkc3BsaXQyIiwiaW50IiwiZGVjaW1hbCIsIk51bWJlciIsImNsYW1wZWRCeVJhbmdlIiwicmVzIiwic2VsZWN0aW9uU3RhcnQiLCJjdXJyZW50U2xpY2UiLCJjYXJldFJhd0xlbmd0aCIsImZvcm1hdHRlZE5ld1ZhbCIsInRhcmdldFJhd1BvcyIsIk1hdGgiLCJjYXJldFBvcyIsInNlZW4iLCJkZWNpbWFscyIsIm1hdGNoIiwiYm4iLCJub3JtYWxpemVkIiwidG9GaXhlZCIsInRyaW0iLCJzdGFydHNXaXRoIiwiaXNaZXJvIiwiX2ciLCJfaCIsIl9qIiwiX2siLCJjb250YWluZXJXaWR0aCIsIm9mZnNldFdpZHRoIiwicHJlZml4V2lkdGgiLCJzdWZmaXhXaWR0aCIsImN1cnJlbmN5V2lkdGgiLCJmYWtlV2lkdGgiLCJnYXBXaWR0aCIsIm1heFdpZHRoIiwiaXNNYXgiLCJhYnMiLCJ6ZXJvIiwiQmlnSW50IiwiX3NwbGl0IiwiX3NwbGl0MiIsInN0clZhbCIsIndpZHRoIiwiaGVpZ2h0IiwicmVmIiwib25DbGljayIsIkhUTUxJbnB1dEVsZW1lbnQiLCJhc3NpZ24iLCJzdHlsZSIsInN0cm9rZVdpZHRoIiwic3RvcFByb3BhZ2F0aW9uIl0sIm1hcHBpbmdzIjoiO0FBQUEsSUFBSUEsTUFBTSxHQUFJLElBQUksSUFBSSxJQUFJLENBQUNBLE1BQU0sSUFBSyxVQUFVQyxDQUFDLEVBQUVDLENBQUMsRUFBRTtFQUNsRCxJQUFJQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0VBQ1YsS0FBSyxJQUFJQyxDQUFDLElBQUlILENBQUMsRUFBRSxJQUFJSSxNQUFNLENBQUNDLFNBQVMsQ0FBQ0MsY0FBYyxDQUFDQyxJQUFJLENBQUNQLENBQUMsRUFBRUcsQ0FBQyxDQUFDLElBQUlGLENBQUMsQ0FBQ08sT0FBTyxDQUFDTCxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQy9FRCxDQUFDLENBQUNDLENBQUMsQ0FBQyxHQUFHSCxDQUFDLENBQUNHLENBQUMsQ0FBQztFQUNmLElBQUlILENBQUMsSUFBSSxJQUFJLElBQUksT0FBT0ksTUFBTSxDQUFDSyxxQkFBcUIsS0FBSyxVQUFV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QUU7UUFBQTtRQUFBN0ksUUFBQSxFQUcvQjNCLGdCQUFnQixDQUFDLEVBQUUsSUFBSXVFLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxHQUFHQSxNQUFNLENBQUMsRUFBRTtVQUNwRGUsaUJBQWlCLEVBQUUsSUFBSTtVQUN2QkMsYUFBYSxFQUFFOUM7UURsRUgsQ0NtRWI7TUFBQyxDQUFBLENBRUM7SUFBQSxDQUFBLENBQ0gsRUFFSixDQUFDVSxPQUFPLElBQUluQixRQUFRLEtBQUt4QyxLQUFBLENBQUEsS0FBQSxFQUFBO01BQUswQyxTQUFTLEVBQUVzQixPQUFPLENBQUMsT0FBTyxDQUFDO01BQUE3QixRQUFBLEVBQUEsQ0FDdER3QixPQUFPLElBQUk3RCxJQUFBLENBQUEsS0FBQSxFQUFBO1FBQUs0QyxTQUFTLEVBQUVzQixPQUFPLENBQUMsU0FBUyxFQUFFakIsVUFBVSxDQUFDO1FBQUFaLFFBQUEsRUFBR3dCO01BQU8sQ0FBQSxDQUFPLEVBQzFFbkIsUUFBUSxJQUFJMUMsSUFBQSxDQUFBLEtBQUEsRUFBQTtRQUFLNEMsU0FBUyxFQUFFc0IsT0FBTyxDQUFDLFVBQVUsRUFBRXZCLFdBQVcsQ0FBQztRQUFBTixRQUFBLEVBQUdLO01BQVEsQ0FBQSxDQUFPO0lBQUEsQ0FBQSxDQUMzRTtFQUFBLENBQUEsQ0FFSjtBQUNSLENBQUM7QUFFRCw0QkFBZXZDLElBQUksQ0FBQzRCLFdBQVcsQ0FBQyIsImZpbGUiOiJjb21wb25lbnRzL0lucHV0QW1vdW50L0lucHV0QW1vdW50LmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fcmVzdCA9ICh0aGlzICYmIHRoaXMuX19yZXN0KSB8fCBmdW5jdGlvbiAocywgZSkge1xuICAgIHZhciB0ID0ge307XG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXG4gICAgICAgIHRbcF0gPSBzW3BdO1xuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xuICAgICAgICB9XG4gICAgcmV0dXJuIHQ7XG59O1xuaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IG1lbW8sIHVzZU1lbW8sIHVzZVN0YXRlLCB1c2VDYWxsYmFjaywgdXNlUmVmLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgQmlnTnVtYmVyIGZyb20gJ2JpZ251bWJlci5qcyc7XG5pbXBvcnQgeyBudW1lcmljRm9ybWF0dGVyIH0gZnJvbSAncmVhY3QtbnVtYmVyLWZvcm1hdCc7XG5pbXBvcnQgeyBTa2VsZXRvbiB9IGZyb20gJ3ByaW1lcmVhY3Qvc2tlbGV0b24nO1xuaW1wb3J0IFNwaW5uZXIgZnJvbSAnLi4vU3Bpbm5lcic7XG5pbXBvcnQgeyBkZWZhdWx0IGFzIGNsYXNzbmFtZXMsIGpvaW5DbHMgfSBmcm9tICcuLi8uLi91dGlscy9jbGFzc25hbWVzJztcbmNvbnN0IE1JTl9JTlBVVF9XSURUSCA9IDMzO1xuY29uc3Qgbm9ybWFsaXplTnVtYmVySW5wdXQgPSAodmFsKSA9PiB2YWxcbiAgICAucmVwbGFjZSgvW1xcdTMwMDJcXHVmZjBlXFx1ZmY2MV0vZywgJy4nKVxuICAgIC5yZXBsYWNlKC9bXFx1RkYwQ10vZywgJywnKTtcbmNvbnN0IGNsYW1wVmFsdWVJblJhbmdlID0gKHZhbCwgbWluLCBtYXgpID0+IHtcbiAgICBpZiAodmFsID09PSAnJyB8fCB2YWwgPT09ICctJyB8fCBpc05hTigrdmFsKSlcbiAgICAgICAgcmV0dXJuIHsgdmFsLCBjbGFtcGVkOiBmYWxzZSB9O1xuICAgIGxldCBjbGFtcGVkVmFsID0gdmFsO1xuICAgIGxldCBjbGFtcGVkID0gZmFsc2U7XG4gICAgY29uc3QgYm5WYWwgPSBCaWdOdW1iZXIodmFsKTtcbiAgICBpZiAodHlwZW9mIG1pbiA9PT0gJ251bWJlcicgfHwgdHlwZW9mIG1pbiA9PT0gJ2JpZ2ludCcpIHtcbiAgICAgICAgY29uc3QgbWluQm4gPSBCaWdOdW1iZXIobWluKTtcbiAgICAgICAgaWYgKGJuVmFsLmx0KG1pbkJuKSkge1xuICAgICAgICAgICAgY2xhbXBlZFZhbCA9ICcnICsgbWluO1xuICAgICAgICAgICAgY2xhbXBlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHR5cGVvZiBtYXggPT09ICdudW1iZXInIHx8IHR5cGVvZiBtYXggPT09ICdiaWdpbnQnKSB7XG4gICAgICAgIGNvbnN0IG1heEJuID0gQmlnTnVtYmVyKG1heCk7XG4gICAgICAgIGlmIChiblZhbC5ndChtYXhCbikpIHtcbiAgICAgICAgICAgIGNsYW1wZWRWYWwgPSAnJyArIG1heDtcbiAgICAgICAgICAgIGNsYW1wZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7IHZhbDogY2xhbXBlZFZhbCwgY2xhbXBlZCB9O1xufTtcbmV4cG9ydCBjb25zdCBJbnB1dEFtb3VudCA9IHByb3BzID0+IHtcbiAgICBjb25zdCB7IHZhbHVlLCB0eXBlID0gJ3ByaW1hcnknLCBtYXhGcmFjdGlvbkRpZ2l0cywgY2hpbGRyZW4sIHBsYWNlaG9sZGVyID0gJzAnLCBtaW4sIG1heCwgXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgIHNpemUgPSAnbGFyZ2UnLCBmb290bm90ZSwgZm9vdG5vdGVDbHMsIGNsYXNzTmFtZSwgd3JhcHBlckNscywgbGFiZWxDbHMsIHByZWZpeENscyA9ICdpbnB1dC1hbW91bnQnLCBtZXNzYWdlQ2xzLCBpbnZhbGlkLCBuZWdhdGl2ZSwgcmVxdWlyZWQsIGxvYWRpbmcsIHN1Y2Nlc3MsIGRpc2FibGVkLCByZWFkT25seSwgbGFiZWwsIHByZWZpeCwgc3VmZml4LCBjdXJyZW5jeSwgbWVzc2FnZSwgb25DaGFuZ2UsIG9uQmx1ciwgb25Gb2N1cyB9ID0gcHJvcHMsIHJlc3QgPSBfX3Jlc3QocHJvcHMsIFtcInZhbHVlXCIsIFwidHlwZVwiLCBcIm1heEZyYWN0aW9uRGlnaXRzXCIsIFwiY2hpbGRyZW5cIiwgXCJwbGFjZWhvbGRlclwiLCBcIm1pblwiLCBcIm1heFwiLCBcInNpemVcIiwgXCJmb290bm90ZVwiLCBcImZvb3Rub3RlQ2xzXCIsIFwiY2xhc3NOYW1lXCIsIFwid3JhcHBlckNsc1wiLCBcImxhYmVsQ2xzXCIsIFwicHJlZml4Q2xzXCIsIFwibWVzc2FnZUNsc1wiLCBcImludmFsaWRcIiwgXCJuZWdhdGl2ZVwiLCBcInJlcXVpcmVkXCIsIFwibG9hZGluZ1wiLCBcInN1Y2Nlc3NcIiwgXCJkaXNhYmxlZFwiLCBcInJlYWRPbmx5XCIsIFwibGFiZWxcIiwgXCJwcmVmaXhcIiwgXCJzdWZmaXhcIiwgXCJjdXJyZW5jeVwiLCBcIm1lc3NhZ2VcIiwgXCJvbkNoYW5nZVwiLCBcIm9uQmx1clwiLCBcIm9uRm9jdXNcIl0pO1xuICAgIGNvbnN0IGNsYXNzZXMgPSBjbGFzc25hbWVzKGAke3ByZWZpeENsc30tJHt0eXBlfWApO1xuICAgIGNvbnN0IGlucHV0UmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGZha2VFbGVSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgcHJlZml4UmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IHN1ZmZpeFJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBjdXJyZW5jeVJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBjb250YWluZXJSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgaW5wdXRDYXJldFBvc2l0aW9uUmVmID0gdXNlUmVmKDApO1xuICAgIGNvbnN0IHByZXZWYWx1ZVJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBwcmV2Rm9jdXNSZWYgPSB1c2VSZWYoZmFsc2UpO1xuICAgIGNvbnN0IHBlbmRpbmdDYXJldFN5bmNSZWYgPSB1c2VSZWYoZmFsc2UpO1xuICAgIGNvbnN0IFtfdmFsdWUsIHNldFZhbHVlXSA9IHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFtfd2lkdGgsIHNldFdpZHRoXSA9IHVzZVN0YXRlKE1JTl9JTlBVVF9XSURUSCk7XG4gICAgY29uc3QgW2lzTWF4V2lkdGgsIHNldElzTWF4V2lkdGhdID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFtpc0ZvY3VzLCBzZXRJc0ZvY3VzXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBmb3JtYXR0ZWRWYWx1ZSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICByZXR1cm4gbnVtZXJpY0Zvcm1hdHRlcignJyArIChfdmFsdWUgPT0gbnVsbCA/ICcnIDogX3ZhbHVlKSwge1xuICAgICAgICAgICAgdGhvdXNhbmRTZXBhcmF0b3I6IHRydWUsXG4gICAgICAgICAgICBhbGxvd05lZ2F0aXZlOiBuZWdhdGl2ZSxcbiAgICAgICAgfSk7XG4gICAgfSwgW192YWx1ZSwgbmVnYXRpdmVdKTtcbiAgICBjb25zdCBzY3JvbGxUb0VuZCA9IHVzZUNhbGxiYWNrKChzdGlja3kgPSBmYWxzZSkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gaW5wdXRSZWYuY3VycmVudDtcbiAgICAgICAgaWYgKCFpbnB1dClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgbGVuID0gKF9hID0gaW5wdXQudmFsdWUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5sZW5ndGg7XG4gICAgICAgIGNvbnN0IHBvc2l0aW9uID0gaW5wdXQuc2Nyb2xsTGVmdDtcbiAgICAgICAgY29uc3Qgc2hvdWxkVG9FbmQgPSAhc3RpY2t5O1xuICAgICAgICBjb25zdCBzdGFydCA9IHNob3VsZFRvRW5kID8gbGVuIDogaW5wdXRDYXJldFBvc2l0aW9uUmVmLmN1cnJlbnQ7XG4gICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKHN0YXJ0LCBzdGFydCk7XG4gICAgICAgIGlucHV0LnNjcm9sbExlZnQgPSBzaG91bGRUb0VuZCA/IGlucHV0LnNjcm9sbFdpZHRoIDogcG9zaXRpb247XG4gICAgICAgIGlucHV0LmZvY3VzKCk7XG4gICAgfSwgW10pO1xuICAgIGNvbnN0IGhhbmRsZUNoYW5nZSA9IHVzZUNhbGxiYWNrKChlKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jLCBfZCwgX2UsIF9mO1xuICAgICAgICBpZiAoZGlzYWJsZWQgfHwgcmVhZE9ubHkpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGxldCB2YWwgPSBlLnRhcmdldC52YWx1ZTtcbiAgICAgICAgbGV0IHRydW5jYXRlZEZyYWN0aW9uID0gZmFsc2U7XG4gICAgICAgIGlmICh2YWwgIT0gbnVsbClcbiAgICAgICAgICAgIHZhbCA9IG5vcm1hbGl6ZU51bWJlcklucHV0KHZhbCkuc3BsaXQoJywnKS5qb2luKCcnKTtcbiAgICAgICAgY29uc3QgaGFzRGVjaW1hbFBvaW50ID0gISF2YWwgJiYgdmFsLmVuZHNXaXRoKCcuJyk7XG4gICAgICAgIGlmIChoYXNEZWNpbWFsUG9pbnQpXG4gICAgICAgICAgICB2YWwgPSB2YWwuc2xpY2UoMCwgLTEpO1xuICAgICAgICBpZiAoIW5lZ2F0aXZlICYmICh2YWwgPT09IG51bGwgfHwgdmFsID09PSB2b2lkIDAgPyB2b2lkIDAgOiB2YWwuaW5jbHVkZXMoJy0nKSkpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IGlzU3RhbmRhbG9uZU1pbnVzID0gbmVnYXRpdmUgJiYgdmFsID09PSAnLSc7XG4gICAgICAgIGlmICghaXNTdGFuZGFsb25lTWludXMgJiYgaXNOYU4oK3ZhbCkpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmICh2YWwgPT09IF92YWx1ZSAmJiAhaGFzRGVjaW1hbFBvaW50KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAodHlwZW9mIG1heEZyYWN0aW9uRGlnaXRzID09PSAnbnVtYmVyJyB8fCB0eXBlb2YgbWF4RnJhY3Rpb25EaWdpdHMgPT09ICdiaWdpbnQnKSB7XG4gICAgICAgICAgICBjb25zdCBbaW50LCBkZWNpbWFsXSA9IHZhbC5zcGxpdCgnLicpO1xuICAgICAgICAgICAgaWYgKGRlY2ltYWwgIT0gbnVsbCAmJiBkZWNpbWFsLmxlbmd0aCA+IE51bWJlcihtYXhGcmFjdGlvbkRpZ2l0cykpIHtcbiAgICAgICAgICAgICAgICB2YWwgPSBgJHtpbnR9LiR7ZGVjaW1hbC5zbGljZSgwLCBOdW1iZXIobWF4RnJhY3Rpb25EaWdpdHMpKX1gO1xuICAgICAgICAgICAgICAgIHRydW5jYXRlZEZyYWN0aW9uID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBsZXQgY2xhbXBlZEJ5UmFuZ2UgPSBmYWxzZTtcbiAgICAgICAgaWYgKCh0eXBlb2YgbWluID09PSAnbnVtYmVyJyB8fCB0eXBlb2YgbWluID09PSAnYmlnaW50JykgfHwgKHR5cGVvZiBtYXggPT09ICdudW1iZXInIHx8IHR5cGVvZiBtYXggPT09ICdiaWdpbnQnKSkge1xuICAgICAgICAgICAgY29uc3QgcmVzID0gY2xhbXBWYWx1ZUluUmFuZ2UodmFsLCBtaW4sIG1heCk7XG4gICAgICAgICAgICB2YWwgPSByZXMudmFsO1xuICAgICAgICAgICAgY2xhbXBlZEJ5UmFuZ2UgPSByZXMuY2xhbXBlZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaW5wdXRSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0aW9uU3RhcnQgPSAoX2EgPSBpbnB1dFJlZi5jdXJyZW50LnNlbGVjdGlvblN0YXJ0KSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAwO1xuICAgICAgICAgICAgY29uc3QgY3VycmVudFNsaWNlID0gKF9jID0gKF9iID0gZS50YXJnZXQudmFsdWUpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5zbGljZSgwLCBzZWxlY3Rpb25TdGFydCkpICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6ICcnO1xuICAgICAgICAgICAgY29uc3QgY2FyZXRSYXdMZW5ndGggPSBub3JtYWxpemVOdW1iZXJJbnB1dChjdXJyZW50U2xpY2UpLnNwbGl0KCcsJykuam9pbignJykubGVuZ3RoO1xuICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkTmV3VmFsID0gbnVtZXJpY0Zvcm1hdHRlcih2YWwsIHtcbiAgICAgICAgICAgICAgICB0aG91c2FuZFNlcGFyYXRvcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICBhbGxvd05lZ2F0aXZlOiBuZWdhdGl2ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0UmF3UG9zID0gTWF0aC5taW4oY2FyZXRSYXdMZW5ndGgsIHZhbC5sZW5ndGgpO1xuICAgICAgICAgICAgbGV0IGNhcmV0UG9zID0gZm9ybWF0dGVkTmV3VmFsLmxlbmd0aDtcbiAgICAgICAgICAgIGxldCBzZWVuID0gMDtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZm9ybWF0dGVkTmV3VmFsLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGZvcm1hdHRlZE5ld1ZhbFtpXSA9PT0gJywnKVxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBzZWVuICs9IDE7XG4gICAgICAgICAgICAgICAgaWYgKHNlZW4gPT09IHRhcmdldFJhd1Bvcykge1xuICAgICAgICAgICAgICAgICAgICBjYXJldFBvcyA9IGkgKyAxO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGFyZ2V0UmF3UG9zID09PSAwKVxuICAgICAgICAgICAgICAgIGNhcmV0UG9zID0gMDtcbiAgICAgICAgICAgIGlmIChoYXNEZWNpbWFsUG9pbnQgJiYgIXRydW5jYXRlZEZyYWN0aW9uICYmIHRhcmdldFJhd1BvcyA9PT0gdmFsLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGNhcmV0UG9zID0gTWF0aC5taW4oZm9ybWF0dGVkTmV3VmFsLmxlbmd0aCArIDEsIGNhcmV0UG9zICsgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpbnB1dENhcmV0UG9zaXRpb25SZWYuY3VycmVudCA9IHRydW5jYXRlZEZyYWN0aW9uXG4gICAgICAgICAgICAgICAgPyBmb3JtYXR0ZWROZXdWYWwubGVuZ3RoXG4gICAgICAgICAgICAgICAgOiBjbGFtcGVkQnlSYW5nZVxuICAgICAgICAgICAgICAgICAgICA/IGZvcm1hdHRlZE5ld1ZhbC5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgOiBjYXJldFBvcztcbiAgICAgICAgICAgIHBlbmRpbmdDYXJldFN5bmNSZWYuY3VycmVudCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIGlmICh2YWwgPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgc2V0VmFsdWUobnVsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChpc1N0YW5kYWxvbmVNaW51cykge1xuICAgICAgICAgICAgICAgIHNldFZhbHVlKCctJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkZWNpbWFscyA9IChfZiA9IChfZSA9IChfZCA9IHZhbC5tYXRjaCgvXFwuKFxcZCspJC8pKSA9PT0gbnVsbCB8fCBfZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2RbMV0pID09PSBudWxsIHx8IF9lID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZS5sZW5ndGgpICE9PSBudWxsICYmIF9mICE9PSB2b2lkIDAgPyBfZiA6IDA7XG4gICAgICAgICAgICAgICAgY29uc3QgYm4gPSBCaWdOdW1iZXIodmFsKTtcbiAgICAgICAgICAgICAgICBsZXQgbm9ybWFsaXplZCA9IGJuLnRvRml4ZWQoZGVjaW1hbHMpO1xuICAgICAgICAgICAgICAgIGlmIChuZWdhdGl2ZSAmJiB2YWwudHJpbSgpLnN0YXJ0c1dpdGgoJy0nKSAmJiBibi5pc1plcm8oKSkge1xuICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkID0gbm9ybWFsaXplZC5zdGFydHNXaXRoKCctJykgPyBub3JtYWxpemVkIDogYC0ke25vcm1hbGl6ZWR9YDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc2V0VmFsdWUoYCR7bm9ybWFsaXplZH0ke2hhc0RlY2ltYWxQb2ludCA/ICcuJyA6ICcnfWAudHJpbSgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBvbkNoYW5nZSA9PT0gbnVsbCB8fCBvbkNoYW5nZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25DaGFuZ2UoZSk7XG4gICAgfSwgW29uQ2hhbmdlLCBfdmFsdWUsIHZhbHVlLCBmb3JtYXR0ZWRWYWx1ZSwgbWF4RnJhY3Rpb25EaWdpdHMsIG1pbiwgbWF4LCBuZWdhdGl2ZSwgZGlzYWJsZWQsIHJlYWRPbmx5XSk7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kLCBfZSwgX2YsIF9nLCBfaCwgX2osIF9rO1xuICAgICAgICBjb25zdCBjb250YWluZXJXaWR0aCA9IChfYiA9IChfYSA9IGNvbnRhaW5lclJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Eub2Zmc2V0V2lkdGgpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IE1JTl9JTlBVVF9XSURUSDtcbiAgICAgICAgY29uc3QgcHJlZml4V2lkdGggPSAoX2QgPSAoX2MgPSBwcmVmaXhSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLm9mZnNldFdpZHRoKSAhPT0gbnVsbCAmJiBfZCAhPT0gdm9pZCAwID8gX2QgOiAwO1xuICAgICAgICBjb25zdCBzdWZmaXhXaWR0aCA9IChfZiA9IChfZSA9IHN1ZmZpeFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Uub2Zmc2V0V2lkdGgpICE9PSBudWxsICYmIF9mICE9PSB2b2lkIDAgPyBfZiA6IDA7XG4gICAgICAgIGNvbnN0IGN1cnJlbmN5V2lkdGggPSAoX2ggPSAoX2cgPSBjdXJyZW5jeVJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2cub2Zmc2V0V2lkdGgpICE9PSBudWxsICYmIF9oICE9PSB2b2lkIDAgPyBfaCA6IDA7XG4gICAgICAgIGNvbnN0IGZha2VXaWR0aCA9IChfayA9IChfaiA9IGZha2VFbGVSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2ogPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9qLm9mZnNldFdpZHRoKSAhPT0gbnVsbCAmJiBfayAhPT0gdm9pZCAwID8gX2sgOiAwO1xuICAgICAgICBjb25zdCBnYXBXaWR0aCA9IHByZWZpeFdpZHRoICYmIHN1ZmZpeFdpZHRoICYmIGN1cnJlbmN5V2lkdGhcbiAgICAgICAgICAgID8gMjRcbiAgICAgICAgICAgIDogKHByZWZpeFdpZHRoICYmIHN1ZmZpeFdpZHRoKSB8fCAocHJlZml4V2lkdGggJiYgY3VycmVuY3lXaWR0aCkgfHwgKHN1ZmZpeFdpZHRoICYmIGN1cnJlbmN5V2lkdGgpXG4gICAgICAgICAgICAgICAgPyAxNlxuICAgICAgICAgICAgICAgIDogcHJlZml4V2lkdGggfHwgc3VmZml4V2lkdGggfHwgY3VycmVuY3lXaWR0aFxuICAgICAgICAgICAgICAgICAgICA/IDhcbiAgICAgICAgICAgICAgICAgICAgOiAwO1xuICAgICAgICBjb25zdCBtYXhXaWR0aCA9IGNvbnRhaW5lcldpZHRoIC0gcHJlZml4V2lkdGggLSBzdWZmaXhXaWR0aCAtIGN1cnJlbmN5V2lkdGggLSBnYXBXaWR0aDtcbiAgICAgICAgY29uc3QgaXNNYXggPSBmYWtlV2lkdGggPj0gbWF4V2lkdGg7XG4gICAgICAgIHNldFdpZHRoKE1hdGgubWluKG1heFdpZHRoLCBNYXRoLm1heChmYWtlV2lkdGgsIE1JTl9JTlBVVF9XSURUSCkpKTtcbiAgICAgICAgc2V0SXNNYXhXaWR0aChpc01heCk7XG4gICAgICAgIGlmIChpc0ZvY3VzICYmXG4gICAgICAgICAgICAoX3ZhbHVlICE9PSBwcmV2VmFsdWVSZWYuY3VycmVudCB8fCAhcHJldkZvY3VzUmVmLmN1cnJlbnQpICYmXG4gICAgICAgICAgICBwZW5kaW5nQ2FyZXRTeW5jUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIHNjcm9sbFRvRW5kKHRydWUpO1xuICAgICAgICAgICAgcGVuZGluZ0NhcmV0U3luY1JlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcHJldlZhbHVlUmVmLmN1cnJlbnQgPSBfdmFsdWU7XG4gICAgICAgIHByZXZGb2N1c1JlZi5jdXJyZW50ID0gaXNGb2N1cztcbiAgICB9LCBbX3ZhbHVlLCBwcmVmaXgsIHN1ZmZpeCwgY3VycmVuY3ksIGlzRm9jdXMsIHNjcm9sbFRvRW5kXSk7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgLy8gY2xlYXIgbmVnYXRpdmUgc2lnbiBpZiBub3QgYWxsb3dlZFxuICAgICAgICBpZiAobmVnYXRpdmUpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICd1bmRlZmluZWQnKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAoX3ZhbHVlID09IG51bGwpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmIChfdmFsdWUgPT09ICctJykge1xuICAgICAgICAgICAgc2V0VmFsdWUobnVsbCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKF92YWx1ZS5zdGFydHNXaXRoKCctJykpXG4gICAgICAgICAgICBzZXRWYWx1ZShfdmFsdWUuc2xpY2UoMSkpO1xuICAgIH0sIFtuZWdhdGl2ZSwgdmFsdWUsIF92YWx1ZV0pO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jO1xuICAgICAgICBsZXQgdmFsID0gdmFsdWU7XG4gICAgICAgIGxldCBoYXNEZWNpbWFsUG9pbnQgPSBmYWxzZTtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBpZiAodmFsID09PSAnJykge1xuICAgICAgICAgICAgICAgIHZhbCA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YWwgPSBub3JtYWxpemVOdW1iZXJJbnB1dCh2YWwpLnNwbGl0KCcsJykuam9pbignJyk7XG4gICAgICAgICAgICAgICAgaGFzRGVjaW1hbFBvaW50ID0gISF2YWwgJiYgdmFsLmVuZHNXaXRoKCcuJyk7XG4gICAgICAgICAgICAgICAgaWYgKGhhc0RlY2ltYWxQb2ludClcbiAgICAgICAgICAgICAgICAgICAgdmFsID0gdmFsLnNsaWNlKDAsIC0xKTtcbiAgICAgICAgICAgICAgICBpZiAoIW5lZ2F0aXZlKVxuICAgICAgICAgICAgICAgICAgICB2YWwgPSB2YWwucmVwbGFjZSgvLS9nLCAnJyk7XG4gICAgICAgICAgICAgICAgaWYgKG5lZ2F0aXZlICYmIHZhbCA9PT0gJy0nKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFZhbHVlKCctJyk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGlzTmFOKCt2YWwpKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodmFsICE9PSBudWxsICYmIHR5cGVvZiB2YWwgIT09ICdudW1iZXInICYmIHR5cGVvZiB2YWwgIT09ICdiaWdpbnQnKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAoIW5lZ2F0aXZlKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgICB2YWwgPSBNYXRoLmFicyh2YWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodHlwZW9mIHZhbCA9PT0gJ2JpZ2ludCcpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB6ZXJvID0gQmlnSW50KDApO1xuICAgICAgICAgICAgICAgIHZhbCA9IHZhbCA8IHplcm8gPyAtdmFsIDogdmFsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICgodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHZhbCA9PT0gJ251bWJlcicpICYmICh0eXBlb2YgbWF4RnJhY3Rpb25EaWdpdHMgPT09ICdudW1iZXInIHx8IHR5cGVvZiBtYXhGcmFjdGlvbkRpZ2l0cyA9PT0gJ2JpZ2ludCcpKSB7XG4gICAgICAgICAgICBjb25zdCBbaW50LCBkZWNpbWFsXSA9ICgnJyArIHZhbCkuc3BsaXQoJy4nKTtcbiAgICAgICAgICAgIGlmIChkZWNpbWFsICE9IG51bGwgJiYgZGVjaW1hbC5sZW5ndGggPiBOdW1iZXIobWF4RnJhY3Rpb25EaWdpdHMpKSB7XG4gICAgICAgICAgICAgICAgdmFsID0gaW50ICsgJy4nICsgZGVjaW1hbC5zbGljZSgwLCBOdW1iZXIobWF4RnJhY3Rpb25EaWdpdHMpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHZhbCA9PT0gJ251bWJlcicgfHwgdHlwZW9mIHZhbCA9PT0gJ2JpZ2ludCcpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IGNsYW1wVmFsdWVJblJhbmdlKCcnICsgdmFsLCBtaW4sIG1heCk7XG4gICAgICAgICAgICB2YWwgPSByZXMudmFsO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YWwgPT09ICcnIHx8IHZhbCA9PSBudWxsKSB7XG4gICAgICAgICAgICBzZXRWYWx1ZShudWxsKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHN0clZhbCA9ICcnICsgdmFsO1xuICAgICAgICAgICAgY29uc3QgZGVjaW1hbHMgPSAoX2MgPSAoX2IgPSAoX2EgPSBzdHJWYWwubWF0Y2goL1xcLihcXGQrKSQvKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hWzFdKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IubGVuZ3RoKSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiAwO1xuICAgICAgICAgICAgY29uc3QgYm4gPSBCaWdOdW1iZXIoc3RyVmFsKTtcbiAgICAgICAgICAgIGxldCBub3JtYWxpemVkID0gYm4udG9GaXhlZChkZWNpbWFscyk7XG4gICAgICAgICAgICBpZiAobmVnYXRpdmUgJiYgc3RyVmFsLnRyaW0oKS5zdGFydHNXaXRoKCctJykgJiYgYm4uaXNaZXJvKCkpIHtcbiAgICAgICAgICAgICAgICBub3JtYWxpemVkID0gbm9ybWFsaXplZC5zdGFydHNXaXRoKCctJykgPyBub3JtYWxpemVkIDogYC0ke25vcm1hbGl6ZWR9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNldFZhbHVlKGAke25vcm1hbGl6ZWR9JHtoYXNEZWNpbWFsUG9pbnQgPyAnLicgOiAnJ31gLnRyaW0oKSk7XG4gICAgICAgIH1cbiAgICB9LCBbdmFsdWUsIG1heEZyYWN0aW9uRGlnaXRzLCBtaW4sIG1heCwgbmVnYXRpdmVdKTtcbiAgICByZXR1cm4gX2pzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ3dyYXBwZXInLCBqb2luQ2xzKHdyYXBwZXJDbHMsIGludmFsaWQgJiYgY2xhc3NlcygnaW52YWxpZCcpLCBzdWNjZXNzICYmIGNsYXNzZXMoJ3N1Y2Nlc3MnKSwgZGlzYWJsZWQgJiYgY2xhc3NlcygnZGlzYWJsZWQnKSwgcmVhZE9ubHkgJiYgY2xhc3NlcygncmVhZG9ubHknKSwgX3ZhbHVlICYmIGNsYXNzZXMoJ2ZpbGxlZCcpKSksIGNoaWxkcmVuOiBbbGFiZWxcbiAgICAgICAgICAgICAgICA/IGxvYWRpbmdcbiAgICAgICAgICAgICAgICAgICAgPyBfanN4KFNrZWxldG9uLCB7IHdpZHRoOiAnNzJweCcsIGhlaWdodDogJzE4cHgnLCBjbGFzc05hbWU6IGNsYXNzZXMoJ2xhYmVsLWxvYWRpbmcnKSB9KVxuICAgICAgICAgICAgICAgICAgICA6IF9qc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdsYWJlbCcsIGpvaW5DbHMocmVxdWlyZWQgJiYgY2xhc3NlcygnbGFiZWwtcmVxdWlyZWQnKSwgbGFiZWxDbHMpKSwgY2hpbGRyZW46IGxhYmVsIH0pXG4gICAgICAgICAgICAgICAgOiBudWxsLCBfanN4cyhcImRpdlwiLCB7IHJlZjogY29udGFpbmVyUmVmLCBjbGFzc05hbWU6IGNsYXNzZXModm9pZCAwLCBqb2luQ2xzKGNsYXNzTmFtZSwgaXNGb2N1cyAmJiBjbGFzc2VzKCdmb2N1cycpKSksIG9uQ2xpY2s6IChlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGUudGFyZ2V0IGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudClcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgKF9hID0gaW5wdXRSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc01heFdpZHRoKVxuICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsVG9FbmQoKTtcbiAgICAgICAgICAgICAgICB9LCBjaGlsZHJlbjogW3ByZWZpeCAmJiBfanN4KFwic3BhblwiLCB7IHJlZjogcHJlZml4UmVmLCBjbGFzc05hbWU6IGNsYXNzZXMoJ3ByZWZpeCcpLCBjaGlsZHJlbjogcHJlZml4IH0pLCBfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdlbGVtZW50JywgKCFpc0ZvY3VzICYmIGlzTWF4V2lkdGgpID8gY2xhc3NlcygnZWxlbWVudC1tYXgnKSA6ICcnKSwgY2hpbGRyZW46IF9qc3goXCJpbnB1dFwiLCBPYmplY3QuYXNzaWduKHt9LCByZXN0LCB7IHJlZjogaW5wdXRSZWYsIHZhbHVlOiBmb3JtYXR0ZWRWYWx1ZSwgcGxhY2Vob2xkZXI6IHBsYWNlaG9sZGVyLCByZWFkT25seTogcmVhZE9ubHksIGRpc2FibGVkOiBkaXNhYmxlZCwgc3R5bGU6IHsgJy0taW5wdXQtd2lkdGgnOiBgJHtfd2lkdGh9cHhgIH0sIG9uQ2hhbmdlOiBoYW5kbGVDaGFuZ2UsIG9uRm9jdXM6IGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJc0ZvY3VzKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkZvY3VzID09PSBudWxsIHx8IG9uRm9jdXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uRm9jdXMoZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgb25CbHVyOiBlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXNGb2N1cyhmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1ciA9PT0gbnVsbCB8fCBvbkJsdXIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQmx1cihlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IH0pKSB9KSwgY3VycmVuY3kgJiYgX2pzeChcInNwYW5cIiwgeyByZWY6IGN1cnJlbmN5UmVmLCBjbGFzc05hbWU6IGNsYXNzZXMoJ2N1cnJlbmN5JyksIGNoaWxkcmVuOiBjdXJyZW5jeSB9KSwgbG9hZGluZyA/IF9qc3goU3Bpbm5lciwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ3N1ZmZpeC1sb2FkaW5nJyksIHN0cm9rZVdpZHRoOiAnNCcgfSkgOiBzdWZmaXggPyBfanN4KFwic3BhblwiLCB7IHJlZjogc3VmZml4UmVmLCBjbGFzc05hbWU6IGNsYXNzZXMoJ3N1ZmZpeCcpLCBjaGlsZHJlbjogc3VmZml4IH0pIDogbnVsbCwgX2pzeChcInNwYW5cIiwgeyByZWY6IGZha2VFbGVSZWYsIGNsYXNzTmFtZTogY2xhc3NlcygnZmFrZScpLCBvbkNsaWNrOiBlID0+IGUuc3RvcFByb3BhZ2F0aW9uKCksIGNoaWxkcmVuOiBudW1lcmljRm9ybWF0dGVyKCcnICsgKF92YWx1ZSA9PSBudWxsID8gJycgOiBfdmFsdWUpLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhvdXNhbmRTZXBhcmF0b3I6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dOZWdhdGl2ZTogbmVnYXRpdmUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSB9KV0gfSksIChtZXNzYWdlIHx8IGZvb3Rub3RlKSAmJiBfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnZXh0cmEnKSwgY2hpbGRyZW46IFttZXNzYWdlICYmIF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ21lc3NhZ2UnLCBtZXNzYWdlQ2xzKSwgY2hpbGRyZW46IG1lc3NhZ2UgfSksIGZvb3Rub3RlICYmIF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2Zvb3Rub3RlJywgZm9vdG5vdGVDbHMpLCBjaGlsZHJlbjogZm9vdG5vdGUgfSldIH0pXSB9KTtcbn07XG5leHBvcnQgZGVmYXVsdCBtZW1vKElucHV0QW1vdW50KTsiLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
|
|
@@ -2,6 +2,9 @@ import type { RefObject, ReactNode, MouseEvent, ChangeEvent, KeyboardEvent, Focu
|
|
|
2
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;
|