@1money/react-ui 1.7.6 → 1.7.7

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.
@@ -15,6 +15,7 @@ import classnames from '../../utils/classnames';
15
15
  var MIN_INPUT_WIDTH = 33;
16
16
  export var InputAmount = function InputAmount(props) {
17
17
  var value = props.value,
18
+ maxFractionDigits = props.maxFractionDigits,
18
19
  children = props.children,
19
20
  className = props.className,
20
21
  wrapperCls = props.wrapperCls,
@@ -33,7 +34,7 @@ export var InputAmount = function InputAmount(props) {
33
34
  onChange = props.onChange,
34
35
  _onBlur = props.onBlur,
35
36
  _onFocus = props.onFocus,
36
- rest = __rest(props, ["value", "children", "className", "wrapperCls", "prefixCls", "messageCls", "footnoteCls", "invalid", "placeholder", "prefix", "currency", "suffix", "message", "footnote", "onChange", "onBlur", "onFocus"]);
37
+ rest = __rest(props, ["value", "maxFractionDigits", "children", "className", "wrapperCls", "prefixCls", "messageCls", "footnoteCls", "invalid", "placeholder", "prefix", "currency", "suffix", "message", "footnote", "onChange", "onBlur", "onFocus"]);
37
38
  var classes = classnames(prefixCls);
38
39
  var inputRef = useRef(null);
39
40
  var fakeEleRef = useRef(null);
@@ -41,6 +42,7 @@ export var InputAmount = function InputAmount(props) {
41
42
  var suffixRef = useRef(null);
42
43
  var currencyRef = useRef(null);
43
44
  var containerRef = useRef(null);
45
+ var inputCaretPositionRef = useRef(0);
44
46
  var _useState = useState(null),
45
47
  _useState2 = _slicedToArray(_useState, 2),
46
48
  _value = _useState2[0],
@@ -64,23 +66,60 @@ export var InputAmount = function InputAmount(props) {
64
66
  });
65
67
  }, [_value]);
66
68
  var scrollToEnd = useCallback(function () {
69
+ var sticky = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
67
70
  var _a;
68
71
  var input = inputRef.current;
69
72
  if (!input) return;
70
73
  var len = (_a = input.value) === null || _a === void 0 ? void 0 : _a.length;
71
- input.setSelectionRange(len, len);
72
- input.scrollLeft = input.scrollWidth;
74
+ var position = input.scrollLeft;
75
+ var shouldToEnd = !!position || !sticky;
76
+ var start = shouldToEnd ? len : inputCaretPositionRef.current;
77
+ input.setSelectionRange(start, start);
78
+ input.scrollLeft = shouldToEnd ? input.scrollWidth : position;
73
79
  input.focus();
74
80
  }, []);
75
81
  var handleChange = useCallback(function (e) {
82
+ var _a, _b, _c, _d, _e;
76
83
  var val = e.target.value;
77
84
  if (val != null) val = val.split(',').join('');
78
85
  var hasDecimalPoint = val.lastIndexOf('.') === val.length - 1;
79
86
  if (hasDecimalPoint) val = val.slice(0, -1);
80
87
  if (isNaN(+val)) return;
81
- setValue(val === '' ? null : "".concat(BigNumber(val).toFixed()).concat(hasDecimalPoint ? '.' : '').trim());
88
+ if (val === _value && !hasDecimalPoint) return;
89
+ if (typeof maxFractionDigits === 'number' || typeof maxFractionDigits === 'bigint') {
90
+ var _val$split = val.split('.'),
91
+ _val$split2 = _slicedToArray(_val$split, 2),
92
+ decimal = _val$split2[1];
93
+ if (decimal != null && decimal.length > Number(maxFractionDigits)) return;
94
+ }
95
+ if (inputRef.current) {
96
+ var formattedNewVal = numericFormatter(val, {
97
+ thousandSeparator: true,
98
+ allowNegative: true
99
+ });
100
+ var isAdd = val.length > ((_a = _value === null || _value === void 0 ? void 0 : _value.length) !== null && _a !== void 0 ? _a : 0);
101
+ var position = (_b = inputRef.current.selectionStart) !== null && _b !== void 0 ? _b : 0;
102
+ var oldPosVal = formattedValue.slice(0, position - (isAdd ? 1 : -1));
103
+ position = oldPosVal.split(',').join('').length + (isAdd ? 1 : -1);
104
+ var posVal = val.slice(0, position);
105
+ formattedNewVal.split('').reduce(function (acc, _char, ind) {
106
+ if (_char === ',') return acc;else acc.push(_char);
107
+ if (acc.join('') === posVal) {
108
+ position = ind + 1;
109
+ return acc;
110
+ }
111
+ return acc;
112
+ }, []);
113
+ inputCaretPositionRef.current = position + (hasDecimalPoint ? 2 : 0);
114
+ }
115
+ if (val === '') {
116
+ setValue(null);
117
+ } else {
118
+ 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;
119
+ setValue("".concat(BigNumber(val).toFixed(decimals)).concat(hasDecimalPoint ? '.' : '').trim());
120
+ }
82
121
  onChange === null || onChange === void 0 ? void 0 : onChange(e);
83
- }, [onChange]);
122
+ }, [onChange, _value, formattedValue, maxFractionDigits]);
84
123
  useEffect(function () {
85
124
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
86
125
  var containerWidth = (_b = (_a = containerRef.current) === null || _a === void 0 ? void 0 : _a.offsetWidth) !== null && _b !== void 0 ? _b : MIN_INPUT_WIDTH;
@@ -91,9 +130,9 @@ export var InputAmount = function InputAmount(props) {
91
130
  var gapWidth = prefixWidth && suffixWidth && currencyWidth ? 24 : prefixWidth && suffixWidth || prefixWidth && currencyWidth || suffixWidth && currencyWidth ? 16 : prefixWidth || suffixWidth || currencyWidth ? 8 : 0;
92
131
  var maxWidth = containerWidth - prefixWidth - suffixWidth - currencyWidth - gapWidth;
93
132
  var isMax = fakeWidth >= maxWidth;
94
- if (isMax) scrollToEnd();
95
133
  setWidth(Math.min(maxWidth, Math.max(fakeWidth, MIN_INPUT_WIDTH)));
96
134
  setIsMaxWidth(isMax);
135
+ scrollToEnd(true);
97
136
  }, [_value]);
98
137
  useEffect(function () {
99
138
  var val = value;
@@ -171,4 +210,4 @@ export var InputAmount = function InputAmount(props) {
171
210
  });
172
211
  };
173
212
  export default /*#__PURE__*/memo(InputAmount);
174
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvSW5wdXRBbW91bnQvSW5wdXRBbW91bnQuanMiLCJjb21wb25lbnRzL3NyYy9jb21wb25lbnRzL0lucHV0QW1vdW50L0lucHV0QW1vdW50LnRzeCJdLCJuYW1lcyI6WyJfX3Jlc3QiLCJzIiwiZSIsInQiLCJwIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaW5kZXhPZiIsImdldE93blByb3BlcnR5U3ltYm9scyIsImkiLCJsZW5ndGgiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJtZW1vIiwidXNlTWVtbyIsInVzZVN0YXRlIiwidXNlQ2FsbGJhY2siLCJ1c2VSZWYiLCJ1c2VFZmZlY3QiLCJCaWdOdW1iZXIiLCJudW1lcmljRm9ybWF0dGVyIiwiY2xhc3NuYW1lcyIsIk1JTl9JTlBVVF9XSURUSCIsIklucHV0QW1vdW50IiwicHJvcHMiLCJ2YWx1ZSIsImNoaWxkcmVuIiwiY2xhc3NOYW1lIiwid3JhcHBlckNscyIsIl9wcm9wcyRwcmVmaXhDbHMiLCJwcmVmaXhDbHMiLCJtZXNzYWdlQ2xzIiwiZm9vdG5vdGVDbHMiLCJpbnZhbGlkIiwiX3Byb3BzJHBsYWNlaG9sZGVyIiwicGxhY2Vob2xkZXIiLCJwcmVmaXgiLCJjdXJyZW5jeSIsInN1ZmZpeCIsIm1lc3NhZ2UiLCJmb290bm90ZSIsIm9uQ2hhbmdlIiwib25CbHVyIiwib25Gb2N1cyIsInJlc3QiLCJjbGFzc2VzIiwiaW5wdXRSZWYiLCJmYWtlRWxlUmVmIiwicHJlZml4UmVmIiwic3VmZml4UmVmIiwiY3VycmVuY3lSZWYiLCJjb250YWluZXJSZWYiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJfdmFsdWUiLCJzZXRWYWx1ZSIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiX3dpZHRoIiwic2V0V2lkdGgiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImlzTWF4V2lkdGgiLCJzZXRJc01heFdpZHRoIiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJpc0ZvY3VzIiwic2V0SXNGb2N1cyIsImZvcm1hdHRlZFZhbHVlIiwidGhvdXNhbmRTZXBhcmF0b3IiLCJhbGxvd05lZ2F0aXZlIiwic2Nyb2xsVG9FbmQiLCJfYSIsImlucHV0IiwiY3VycmVudCIsImxlbiIsInNldFNlbGVjdGlvblJhbmdlIiwic2Nyb2xsTGVmdCIsInNjcm9sbFdpZHRoIiwiZm9jdXMiLCJoYW5kbGVDaGFuZ2UiLCJ2YWwiLCJ0YXJnZXQiLCJzcGxpdCIsImpvaW4iLCJoYXNEZWNpbWFsUG9pbnQiLCJsYXN0SW5kZXhPZiIsInNsaWNlIiwiaXNOYU4iLCJjb25jYXQiLCJ0b0ZpeGVkIiwidHJpbSIsIl9iIiwiX2MiLCJfZCIsIl9lIiwiX2YiLCJfZyIsIl9oIiwiX2oiLCJfayIsImNvbnRhaW5lcldpZHRoIiwib2Zmc2V0V2lkdGgiLCJwcmVmaXhXaWR0aCIsInN1ZmZpeFdpZHRoIiwiY3VycmVuY3lXaWR0aCIsImZha2VXaWR0aCIsImdhcFdpZHRoIiwibWF4V2lkdGgiLCJpc01heCIsIk1hdGgiLCJtaW4iLCJtYXgiLCJ0b1N0cmluZyIsInVuZGVmaW5lZCIsInJlZiIsIm9uQ2xpY2siLCJIVE1MSW5wdXRFbGVtZW50IiwiYXNzaWduIiwic3R5bGUiLCJzdG9wUHJvcGFnYXRpb24iXSwibWFwcGluZ3MiOiI7QUFBQSxJQUFJQSxNQUFNLEdBQUksSUFBSSxJQUFJLElBQUksQ0FBQ0EsTUFBTSxJQUFLLFVBQVVDLENBQUMsRUFBRUMsQ0FBQyxFQUFFO0VBQ2xELElBQUlDLENBQUMsR0FBRyxDQUFDLENBQUM7RUFDVixLQUFLLElBQUlDLENBQUMsSUFBSUgsQ0FBQyxFQUFFLElBQUlJLE1BQU0sQ0FBQ0MsU0FBUyxDQUFDQyxjQUFjLENBQUNDLElBQUksQ0FBQ1AsQ0FBQyxFQUFFRyxDQUFDLENBQUMsSUFBSUYsQ0FBQyxDQUFDTyxPQUFPLENBQUNMLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFDL0VELENBQUMsQ0FBQ0MsQ0FBQyxDQUFDLEdBQUdILENBQUMsQ0FBQ0csQ0FBQyxDQUFDO0VBQ2YsSUFBSUgsQ0FBQyxJQUFJLElBQUksSUFBSSxPQUFPSSxNQUFNLENBQUNLLHFCQUFxQixLQUFLLFVBQVUsRUFDL0QsS0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBQyxFQUFFUCxDQUFDLEdBQUdDLE1BQU0sQ0FBQ0sscUJBQXFCLENBQUNULENBQUMsQ0FBQyxFQUFFVSxDQUFDLEdBQUdQLENBQUMsQ0FBQ1EsTUFBTSxFQUFFRCxDQUFDLEVBQUUsRUFBRTtJQUNwRSxJQUFJVCxDQUFDLENBQUNPLE9BQU8sQ0FBQ0wsQ0FBQyxDQUFDTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSU4sTUFBTSxDQUFDQyxTQUFTLENBQUNPLG9CQUFvQixDQUFDTCxJQUFJLENBQUNQLENBQUMsRUFBRUcsQ0FBQyxDQUFDTyxDQUFDLENBQUMsQ0FBQyxFQUMxRVIsQ0FBQyxDQUFDQyxDQUFDLENBQUNPLENBQUMsQ0FBQyxDQUFDLEdBQUdWLENBQUMsQ0FBQ0csQ0FBQyxDQUFDTyxDQUFDLENBQUMsQ0FBQztFQUN6QjtFQUNKLE9BQU9SLENBQUM7QUFDWixDQUFDO0FBQ0QsU0FBU1csR0FBRyxJQUFJQyxJQUFJLEVBQUVDLElBQUksSUFBSUMsS0FBSyxRQUFRLG1CQUFtQjtBQ1g5RCxTQUFTQyxJQUFJLEVBQUVDLE9BQU8sRUFBRUMsUUFBUSxFQUFFQyxXQUFXLEVBQUVDLE1BQU0sRUFBRUMsU0FBUyxRQUFRLE9BQU87QUFDL0UsT0FBT0MsU0FBUyxNQUFNLGNBQWM7QUFDcEMsU0FBU0MsZ0JBQWdCLFFBQVEscUJBQXFCO0FBQ3RELE9BQU9DLFVBQVUsTUFBTSx3QkFBd0I7QUFLL0MsSUFBTUMsZUFBZSxHQUFHLEVBQUU7QUFFMUIsT0FBTyxJQUFNQyxXQUFXLEdBQTRDLFNBQXZEQSxXQUFXQSxDQUE0Q0MsS0FBSyxFQUFHO0VBQzFFLElBQ0VDLEtBQUssR0FrQkhELEtBQUssQ0FsQlBDLEtBQUs7SUFDTEMsUUFBUSxHQWlCTkYsS0FBSyxDQWpCUEUsUUFBUTtJQUNSQyxTQUFTLEdBZ0JQSCxLQUFLLENBaEJQRyxTQUFTO0lBQ1RDLFVBQVUsR0FlUkosS0FBSyxDQWZQSSxVQUFVO0lBQUFDLGdCQUFBLEdBZVJMLEtBQUssQ0FkUE0sU0FBUztJQUFUQSxTQUFTLEdBQUFELGdCQUFBLGNBQUcsY0FBYyxHQUFBQSxnQkFBQTtJQUMxQkUsVUFBVSxHQWFSUCxLQUFLLENBYlBPLFVBQVU7SUFDVkMsV0FBVyxHQVlUUixLQUFLLENBWlBRLFdBQVc7SUFDWEMsT0FBTyxHQVdMVCxLQUFLLENBWFBTLE9BQU87SUFBQUMsa0JBQUEsR0FXTFYsS0FBSyxDQVZQVyxXQUFXO0lBQVhBLFdBQVcsR0FBQUQsa0JBQUEsY0FBRyxHQUFHLEdBQUFBLGtCQUFBO0lBQ2pCRSxNQUFNLEdBU0paLEtBQUssQ0FUUFksTUFBTTtJQUNOQyxRQUFRLEdBUU5iLEtBQUssQ0FSUGEsUUFBUTtJQUNSQyxNQUFNLEdBT0pkLEtBQUssQ0FQUGMsTUFBTTtJQUNOQyxPQUFPLEdBTUxmLEtBQUssQ0FOUGUsT0FBTztJQUNQQyxRQUFRLEdBS05oQixLQUFLLENBTFBnQixRQUFRO0lBQ1JDLFFBQVEsR0FJTmpCLEtBQUssQ0FKUGlCLFFBQVE7SUFDUkMsT0FBTSxHQUdKbEIsS0FBSyxDQUhQa0IsTUFBTTtJQUNOQyxRQUFPLEdBRUxuQixLQUFLLENBRlBtQixPQUFPO0lBQ0pDLElBQUksR0FBQWpELE1BQUEsQ0FDTDZCLEtBQUssRUFuQkgsQ0FBQSxPQUFBLEVBQUEsVUFBQSxFQUFBLFdBQUEsRUFBQSxZQUFBLEVBQUEsV0FBQSxFQUFBLFlBQUEsRUFBQSxhQUFBLEVBQUEsU0FBQSxFQUFBLGFBQUEsRUFBQSxRQUFBLEVBQUEsVUFBQSxFQUFBLFFBQUEsRUFBQSxTQUFBLEVBQUEsVUFBQSxFQUFBLFVBQUEsRUFBQSxRQUFBLEVBQUEsU0FBQSxDQW1CTCxDQUFRO0VBQ1QsSUFBTXFCLE9BQU8sR0FBR3hCLFVBQVUsQ0FBQ1MsU0FBUyxDQUFDO0VBRXJDLElBQU1nQixRQUFRLEdBQUc3QixNQUFNLENBQW1CLElBQUksQ0FBQztFQUMvQyxJQUFNOEIsVUFBVSxHQUFHOUIsTUFBTSxDQUFrQixJQUFJLENBQUM7RUFDaEQsSUFBTStCLFNBQVMsR0FBRy9CLE1BQU0sQ0FBa0IsSUFBSSxDQUFDO0VBQy9DLElBQU1nQyxTQUFTLEdBQUdoQyxNQUFNLENBQWtCLElBQUksQ0FBQztFQUMvQyxJQUFNaUMsV0FBVyxHQUFHakMsTUFBTSxDQUFrQixJQUFJLENBQUM7RUFDakQsSUFBTWtDLFlBQVksR0FBR2xDLE1BQU0sQ0FBaUIsSUFBSSxDQUFDO0VBRWpELElBQUFtQyxTQUFBLEdBQTJCckMsUUFBUSxDQUFnQixJQUFJLENBQUM7SUFBQXNDLFVBQUEsR0FBQUMsY0FBQSxDQUFBRixTQUFBO0lBQWpERyxNQUFNLEdBQUFGLFVBQUE7SUFBRUcsUUFBUSxHQUFBSCxVQUFBO0VBQ3ZCLElBQUFJLFVBQUEsR0FBMkIxQyxRQUFRLENBQVNPLGVBQWUsQ0FBQztJQUFBb0MsVUFBQSxHQUFBSixjQUFBLENBQUFHLFVBQUE7SUFBckRFLE1BQU0sR0FBQUQsVUFBQTtJQUFFRSxRQUFRLEdBQUFGLFVBQUE7RUFDdkIsSUFBQUcsVUFBQSxHQUFvQzlDLFFBQVEsQ0FBVSxLQUFLLENBQUM7SUFBQStDLFVBQUEsR0FBQVIsY0FBQSxDQUFBTyxVQUFBO0lBQXJERSxVQUFVLEdBQUFELFVBQUE7SUFBRUUsYUFBYSxHQUFBRixVQUFBO0VBQ2hDLElBQUFHLFVBQUEsR0FBOEJsRCxRQUFRLENBQVUsS0FBSyxDQUFDO0lBQUFtRCxVQUFBLEdBQUFaLGNBQUEsQ0FBQVcsVUFBQTtJQUEvQ0UsT0FBTyxHQUFBRCxVQUFBO0lBQUVFLFVBQVUsR0FBQUYsVUFBQTtFQUUxQixJQUFNRyxjQUFjLEdBQUd2RCxPQUFPLENBQUMsWUFBSztJQUNsQyxPQUFPTSxnQkFBZ0IsQ0FBQyxFQUFFLElBQUltQyxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsR0FBR0EsTUFBTSxDQUFDLEVBQUU7TUFDM0RlLGlCQUFpQixFQUFFLElBQUk7TUFDdkJDLGFBQWEsRUFBRTtJRGRiLENDZUgsQ0FBQztFQUNKLENBQUMsRUFBRSxDQUFDaEIsTUFBTSxDQUFDLENBQUM7RUFFWixJQUFNaUIsV0FBVyxHQUFHeEQsV0FBVyxDQUFDLFlBQUs7SURmL0IsSUFBSXlELEVBQUU7SUNnQlYsSUFBTUMsS0FBSyxHQUFHNUIsUUFBUSxDQUFDNkIsT0FBTztJQUM5QixJQUFJLENBQUNELEtBQUssRUFBRTtJQUNaLElBQU1FLEdBQUcsR0FBRyxDQUFBSCxFQUFBLEdBQUFDLEtBQUssQ0FBQ2pELEtBQUssTUFBQSxJQUFBLElBQUFnRCxFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQUFBLEVBQUEsQ0FBRWxFLE1BQU07SUFDL0JtRSxLQUFLLENBQUNHLGlCQUFpQixDQUFDRCxHQUFHLEVBQUVBLEdBQUcsQ0FBQztJQUNqQ0YsS0FBSyxDQUFDSSxVQUFVLEdBQUdKLEtBQUssQ0FBQ0ssV0FBVztJQUNwQ0wsS0FBSyxDQUFDTSxLQUFLLENBQUEsQ0FBRTtFQUNmLENBQUMsRUFBRSxFQUFFLENBQUM7RUFFTixJQUFNQyxZQUFZLEdBQUdqRSxXQUFXLENBQUMsVUFBQ25CLENBQWdDLEVBQUk7SUFDcEUsSUFBSXFGLEdBQUcsR0FBR3JGLENBQUMsQ0FBQ3NGLE1BQU0sQ0FBQzFELEtBQUs7SUFDeEIsSUFBSXlELEdBQUcsSUFBSSxJQUFJLEVBQUVBLEdBQUcsR0FBR0EsR0FBRyxDQUFDRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUNDLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDOUMsSUFBTUMsZUFBZSxHQUFHSixHQUFHLENBQUNLLFdBQVcsQ0FBQyxHQUFHLENBQUMsS0FBS0wsR0FBRyxDQUFDM0UsTUFBTSxHQUFHLENBQUM7SUFDL0QsSUFBSStFLGVBQWUsRUFBRUosR0FBRyxHQUFHQSxHQUFHLENBQUNNLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDM0MsSUFBSUMsS0FBSyxDQUFDLENBQUNQLEdBQUcsQ0FBQyxFQUFFO0lBQ2pCMUIsUUFBUSxDQUFDMEIsR0FBRyxLQUFLLEVBQUUsR0FBRyxJQUFJLEdBQUcsR0FBQVEsTUFBQSxDQUFHdkUsU0FBUyxDQUFDK0QsR0FBRyxDQUFDLENBQUNTLE9BQU8sQ0FBQSxDQUFFLEVBQUFELE1BQUEsQ0FBR0osZUFBZSxHQUFHLEdBQUcsR0FBRyxFQUFFLEVBQUdNLElBQUksQ0FBQSxDQUFFLENBQUM7SUFDL0ZuRCxRQUFRLEtBQUEsSUFBQSxJQUFSQSxRQUFRLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQVJBLFFBQVEsQ0FBRzVDLENBQUMsQ0FBQztFQUNmLENBQUMsRUFBRSxDQUFDNEMsUUFBUSxDQUFDLENBQUM7RUFFZHZCLFNBQVMsQ0FBQyxZQUFLO0lEWlQsSUFBSXVELEVBQUUsRUFBRW9CLEVBQUUsRUFBRUMsRUFBRSxFQUFFQyxFQUFFLEVBQUVDLEVBQUUsRUFBRUMsRUFBRSxFQUFFQyxFQUFFLEVBQUVDLEVBQUUsRUFBRUMsRUFBRSxFQUFFQyxFQUFFO0lDYTlDLElBQU1DLGNBQWMsR0FBRyxDQUFBVCxFQUFBLEdBQUEsQ0FBQXBCLEVBQUEsR0FBQXRCLFlBQVksQ0FBQ3dCLE9BQU8sTUFBQSxJQUFBLElBQUFGLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBQUEsRUFBQSxDQUFFOEIsV0FBVyxNQUFBLElBQUEsSUFBQVYsRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBQSxFQUFBLEdBQUl2RSxlQUFlO0lBQzNFLElBQU1rRixXQUFXLEdBQUcsQ0FBQVQsRUFBQSxHQUFBLENBQUFELEVBQUEsR0FBQTlDLFNBQVMsQ0FBQzJCLE9BQU8sTUFBQSxJQUFBLElBQUFtQixFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQUFBLEVBQUEsQ0FBRVMsV0FBVyxNQUFBLElBQUEsSUFBQVIsRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBQSxFQUFBLEdBQUksQ0FBQztJQUN2RCxJQUFNVSxXQUFXLEdBQUcsQ0FBQVIsRUFBQSxHQUFBLENBQUFELEVBQUEsR0FBQS9DLFNBQVMsQ0FBQzBCLE9BQU8sTUFBQSxJQUFBLElBQUFxQixFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQUFBLEVBQUEsQ0FBRU8sV0FBVyxNQUFBLElBQUEsSUFBQU4sRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBQSxFQUFBLEdBQUksQ0FBQztJQUN2RCxJQUFNUyxhQUFhLEdBQUcsQ0FBQVAsRUFBQSxHQUFBLENBQUFELEVBQUEsR0FBQWhELFdBQVcsQ0FBQ3lCLE9BQU8sTUFBQSxJQUFBLElBQUF1QixFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQUFBLEVBQUEsQ0FBRUssV0FBVyxNQUFBLElBQUEsSUFBQUosRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBQSxFQUFBLEdBQUksQ0FBQztJQUMzRCxJQUFNUSxTQUFTLEdBQUcsQ0FBQU4sRUFBQSxHQUFBLENBQUFELEVBQUEsR0FBQXJELFVBQVUsQ0FBQzRCLE9BQU8sTUFBQSxJQUFBLElBQUF5QixFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQUFBLEVBQUEsQ0FBRUcsV0FBVyxNQUFBLElBQUEsSUFBQUYsRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBQSxFQUFBLEdBQUksQ0FBQztJQUN0RCxJQUFNTyxRQUFRLEdBQUdKLFdBQVcsSUFBSUMsV0FBVyxJQUFJQyxhQUFhLEdBQ3hELEVBQUUsR0FDREYsV0FBVyxJQUFJQyxXQUFXLElBQU1ELFdBQVcsSUFBSUUsYUFBYyxJQUFLRCxXQUFXLElBQUlDLGFBQWMsR0FDOUYsRUFBRSxHQUNGRixXQUFXLElBQUlDLFdBQVcsSUFBSUMsYUFBYSxHQUN6QyxDQUFDLEdBQ0QsQ0FBQztJQUVULElBQU1HLFFBQVEsR0FBR1AsY0FBYyxHQUFHRSxXQUFXLEdBQUdDLFdBQVcsR0FBR0MsYUFBYSxHQUFHRSxRQUFRO0lBQ3RGLElBQU1FLEtBQUssR0FBR0gsU0FBUyxJQUFJRSxRQUFRO0lBQ25DLElBQUlDLEtBQUssRUFBRXRDLFdBQVcsQ0FBQSxDQUFFO0lBQ3hCWixRQUFRLENBQUNtRCxJQUFJLENBQUNDLEdBQUcsQ0FBQ0gsUUFBUSxFQUFFRSxJQUFJLENBQUNFLEdBQUcsQ0FBQ04sU0FBUyxFQUFFckYsZUFBZSxDQUFDLENBQUMsQ0FBQztJQUNsRTBDLGFBQWEsQ0FBQzhDLEtBQUssQ0FBQztFQUN0QixDQUFDLEVBQUUsQ0FBQ3ZELE1BQU0sQ0FBQyxDQUFDO0VBRVpyQyxTQUFTLENBQUMsWUFBSztJQUNiLElBQUlnRSxHQUFHLEdBQUd6RCxLQUFLO0lBQ2YsSUFBSSxPQUFPeUQsR0FBRyxLQUFLLFFBQVEsRUFBRTtNQUMzQkEsR0FBRyxHQUFHQSxHQUFHLENBQUNFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQ0MsSUFBSSxDQUFDLEVBQUUsQ0FBQztNQUM3QixJQUFNQyxlQUFlLEdBQUdKLEdBQUcsQ0FBQ0ssV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLTCxHQUFHLENBQUMzRSxNQUFNLEdBQUcsQ0FBQztNQUMvRCxJQUFJK0UsZUFBZSxFQUFFSixHQUFHLEdBQUdBLEdBQUcsQ0FBQ00sS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztNQUMzQyxJQUFJQyxLQUFLLENBQUMsQ0FBQ1AsR0FBRyxDQUFDLEVBQUU7SUFDbkIsQ0FBQyxNQUFNLElBQUlBLEdBQUcsS0FBSyxJQUFJLElBQUksT0FBT0EsR0FBRyxLQUFLLFFBQVEsSUFBSSxPQUFPQSxHQUFHLEtBQUssUUFBUSxFQUFFO0lBRS9FMUIsUUFBUSxDQUFDMEIsR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcvRCxTQUFTLENBQUMrRCxHQUFHLENBQUMsQ0FBQ2dDLFFBQVEsQ0FBQSxDQUFFLENBQUM7RUFDMUQsQ0FBQyxFQUFFLENBQUN6RixLQUFLLENBQUMsQ0FBQztFQUVYLE9BQU9iLEtBQUEsQ0FBQSxLQUFBLEVBQUE7SUFDTGUsU0FBUyxFQUFFa0IsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDakIsVUFBVSxFQUFFSyxPQUFPLEdBQUdZLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBR3NFLFNBQVMsQ0FBQyxDQUFDOUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDTyxJQUFJLENBQUEsQ0FBRSxDQUFDO0lBQUFsRSxRQUFBLEVBQUEsQ0FFdEdkLEtBQUEsQ0FBQSxLQUFBLEVBQUE7TUFDRXdHLEdBQUcsRUFBRWpFLFlBQVk7TUFDakJ4QixTQUFTLEVBQUVrQixPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQ2xCLFNBQVMsRUFBRXdDLE9BQU8sR0FBR3RCLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQ3dDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQ08sSUFBSSxDQUFBLENBQUUsQ0FBQztNQUN6RnlCLE9BQU8sRUFBRSxTQUFUQSxPQUFPQSxDQUFHeEgsQ0FBQyxFQUFJO1FEaEJELElBQUk0RSxFQUFFO1FDaUJsQixJQUFJNUUsQ0FBQyxDQUFDc0YsTUFBTSxZQUFZbUMsZ0JBQWdCLEVBQUU7UUFDMUMsQ0FBQTdDLEVBQUEsR0FBQTNCLFFBQVEsQ0FBQzZCLE9BQU8sTUFBQSxJQUFBLElBQUFGLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBQUEsRUFBQSxDQUFFTyxLQUFLLENBQUEsQ0FBRTtRQUN6QixJQUFJakIsVUFBVSxFQUFFUyxXQUFXLENBQUEsQ0FBRTtNQUMvQixDQUFDO01BQUE5QyxRQUFBLEVBQUEsQ0FHQ1UsTUFBTSxJQUFJMUIsSUFBQSxDQUFBLE1BQUEsRUFBQTtRQUNSMEcsR0FBRyxFQUFFcEUsU0FBUztRQUNkckIsU0FBUyxFQUFFa0IsT0FBTyxDQUFDLFFBQVEsQ0FBQztRQUFBbkIsUUFBQSxFQUUzQlU7TUFBTSxDQUFBLENBQ0YsRUFFVDFCLElBQUEsQ0FBQSxLQUFBLEVBQUE7UUFDRWlCLFNBQVMsRUFBRWtCLE9BQU8sQ0FBQyxTQUFTLEVBQUcsQ0FBQ3NCLE9BQU8sSUFBSUosVUFBVSxHQUFJbEIsT0FBTyxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUFBbkIsUUFBQSxFQUVyRmhCLElBQUEsQ0FBQSxPQUFBLEVBQUFWLE1BQUEsQ0FBQXVILE1BQUEsQ0FBQSxDQUFBLENBQUEsRUFDTTNFLElBQUksRUFBQTtVQUNSd0UsR0FBRyxFQUFFdEUsUUFBUTtVQUNickIsS0FBSyxFQUFFNEMsY0FBYztVQUNyQmxDLFdBQVcsRUFBRUEsV0FBVztVQUN4QnFGLEtBQUssRUFBRTtZQUFFLGVBQWUsS0FBQTlCLE1BQUEsQ0FBSy9CLE1BQU07VUFBSSxDQUFtQjtVQUMxRGxCLFFBQVEsRUFBRXdDLFlBQVk7VUFDdEJ0QyxPQUFPLEVBQUUsU0FBVEEsT0FBT0EsQ0FBRTlDLENBQUMsRUFBRztZQUNYdUUsVUFBVSxDQUFDLElBQUksQ0FBQztZQUNoQnpCLFFBQU8sS0FBQSxJQUFBLElBQVBBLFFBQU8sS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBUEEsUUFBTyxDQUFHOUMsQ0FBQyxDQUFDO1VBQ2QsQ0FBQztVQUNENkMsTUFBTSxFQUFFLFNBQVJBLE1BQU1BLENBQUU3QyxDQUFDLEVBQUc7WUFDVnVFLFVBQVUsQ0FBQyxLQUFLLENBQUM7WUFDakIxQixPQUFNLEtBQUEsSUFBQSxJQUFOQSxPQUFNLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQU5BLE9BQU0sQ0FBRzdDLENBQUMsQ0FBQztVQUNiO1FBQUMsQ0FBQSxDQUFBO01BQ0QsQ0FBQSxDQUNFLEVBRUp3QyxRQUFRLElBQUkzQixJQUFBLENBQUEsTUFBQSxFQUFBO1FBQ1YwRyxHQUFHLEVBQUVsRSxXQUFXO1FBQ2hCdkIsU0FBUyxFQUFFa0IsT0FBTyxDQUFDLFVBQVUsQ0FBQztRQUFBbkIsUUFBQSxFQUU3Qlc7TUFBUSxDQUFBLENBQ0osRUFFUkMsTUFBTSxJQUFJNUIsSUFBQSxDQUFBLE1BQUEsRUFBQTtRQUFNMEcsR0FBRyxFQUFFbkUsU0FBUztRQUFFdEIsU0FBUyxFQUFFa0IsT0FBTyxDQUFDLFFBQVEsQ0FBQztRQUFBbkIsUUFBQSxFQUFHWTtNQUFNLENBQUEsQ0FBUSxFQUM5RTVCLElBQUEsQ0FBQSxNQUFBLEVBQUE7UUFDRTBHLEdBQUcsRUFBRXJFLFVBQVU7UUFDZnBCLFNBQVMsRUFBRWtCLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFDMUJ3RSxPQUFPLEVBQUUsU0FBVEEsT0FBT0EsQ0FBRXhILENBQUM7VUFBQSxPQUFJQSxDQUFDLENBQUM0SCxlQUFlLENBQUEsQ0FBRTtRQUFBO1FBQUEvRixRQUFBLEVBRy9CTixnQkFBZ0IsQ0FBQyxFQUFFLElBQUltQyxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsR0FBR0EsTUFBTSxDQUFDLEVBQUU7VUFDcERlLGlCQUFpQixFQUFFLElBQUk7VUFDdkJDLGFBQWEsRUFBRTtRRHBESCxDQ3FEYjtNQUFDLENBQUEsQ0FFQztJQUFBLENBQUEsQ0FDSCxFQUVKLENBQUNoQyxPQUFPLElBQUlDLFFBQVEsS0FBSzVCLEtBQUEsQ0FBQSxLQUFBLEVBQUE7TUFBS2UsU0FBUyxFQUFFa0IsT0FBTyxDQUFDLE9BQU8sQ0FBQztNQUFBbkIsUUFBQSxFQUFBLENBQ3REYSxPQUFPLElBQUk3QixJQUFBLENBQUEsS0FBQSxFQUFBO1FBQUtpQixTQUFTLEVBQUVrQixPQUFPLENBQUMsU0FBUyxFQUFFZCxVQUFVLENBQUM7UUFBQUwsUUFBQSxFQUFHYTtNQUFPLENBQUEsQ0FBTyxFQUMxRUMsUUFBUSxJQUFJOUIsSUFBQSxDQUFBLEtBQUEsRUFBQTtRQUFLaUIsU0FBUyxFQUFFa0IsT0FBTyxDQUFDLFVBQVUsRUFBRWIsV0FBVyxDQUFDO1FBQUFOLFFBQUEsRUFBR2M7TUFBUSxDQUFBLENBQU87SUFBQSxDQUFBLENBQzNFO0VBQUEsQ0FBQSxDQUVKO0FBQ1IsQ0FBQztBQUVELDRCQUFlM0IsSUFBSSxDQUFDVSxXQUFXLENBQUMiLCJmaWxlIjoiY29tcG9uZW50cy9JbnB1dEFtb3VudC9JbnB1dEFtb3VudC5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX3Jlc3QgPSAodGhpcyAmJiB0aGlzLl9fcmVzdCkgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgICB2YXIgdCA9IHt9O1xuICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxuICAgICAgICB0W3BdID0gc1twXTtcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcbiAgICAgICAgfVxuICAgIHJldHVybiB0O1xufTtcbmltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBtZW1vLCB1c2VNZW1vLCB1c2VTdGF0ZSwgdXNlQ2FsbGJhY2ssIHVzZVJlZiwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuaW1wb3J0IHsgbnVtZXJpY0Zvcm1hdHRlciB9IGZyb20gJ3JlYWN0LW51bWJlci1mb3JtYXQnO1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnLi4vLi4vdXRpbHMvY2xhc3NuYW1lcyc7XG5jb25zdCBNSU5fSU5QVVRfV0lEVEggPSAzMztcbmV4cG9ydCBjb25zdCBJbnB1dEFtb3VudCA9IHByb3BzID0+IHtcbiAgICBjb25zdCB7IHZhbHVlLCBjaGlsZHJlbiwgY2xhc3NOYW1lLCB3cmFwcGVyQ2xzLCBwcmVmaXhDbHMgPSAnaW5wdXQtYW1vdW50JywgbWVzc2FnZUNscywgZm9vdG5vdGVDbHMsIGludmFsaWQsIHBsYWNlaG9sZGVyID0gJzAnLCBwcmVmaXgsIGN1cnJlbmN5LCBzdWZmaXgsIG1lc3NhZ2UsIGZvb3Rub3RlLCBvbkNoYW5nZSwgb25CbHVyLCBvbkZvY3VzIH0gPSBwcm9wcywgcmVzdCA9IF9fcmVzdChwcm9wcywgW1widmFsdWVcIiwgXCJjaGlsZHJlblwiLCBcImNsYXNzTmFtZVwiLCBcIndyYXBwZXJDbHNcIiwgXCJwcmVmaXhDbHNcIiwgXCJtZXNzYWdlQ2xzXCIsIFwiZm9vdG5vdGVDbHNcIiwgXCJpbnZhbGlkXCIsIFwicGxhY2Vob2xkZXJcIiwgXCJwcmVmaXhcIiwgXCJjdXJyZW5jeVwiLCBcInN1ZmZpeFwiLCBcIm1lc3NhZ2VcIiwgXCJmb290bm90ZVwiLCBcIm9uQ2hhbmdlXCIsIFwib25CbHVyXCIsIFwib25Gb2N1c1wiXSk7XG4gICAgY29uc3QgY2xhc3NlcyA9IGNsYXNzbmFtZXMocHJlZml4Q2xzKTtcbiAgICBjb25zdCBpbnB1dFJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBmYWtlRWxlUmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IHByZWZpeFJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBzdWZmaXhSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgY3VycmVuY3lSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgY29udGFpbmVyUmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IFtfdmFsdWUsIHNldFZhbHVlXSA9IHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFtfd2lkdGgsIHNldFdpZHRoXSA9IHVzZVN0YXRlKE1JTl9JTlBVVF9XSURUSCk7XG4gICAgY29uc3QgW2lzTWF4V2lkdGgsIHNldElzTWF4V2lkdGhdID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFtpc0ZvY3VzLCBzZXRJc0ZvY3VzXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBmb3JtYXR0ZWRWYWx1ZSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICByZXR1cm4gbnVtZXJpY0Zvcm1hdHRlcignJyArIChfdmFsdWUgPT0gbnVsbCA/ICcnIDogX3ZhbHVlKSwge1xuICAgICAgICAgICAgdGhvdXNhbmRTZXBhcmF0b3I6IHRydWUsXG4gICAgICAgICAgICBhbGxvd05lZ2F0aXZlOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICB9LCBbX3ZhbHVlXSk7XG4gICAgY29uc3Qgc2Nyb2xsVG9FbmQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgY29uc3QgaW5wdXQgPSBpbnB1dFJlZi5jdXJyZW50O1xuICAgICAgICBpZiAoIWlucHV0KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCBsZW4gPSAoX2EgPSBpbnB1dC52YWx1ZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmxlbmd0aDtcbiAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UobGVuLCBsZW4pO1xuICAgICAgICBpbnB1dC5zY3JvbGxMZWZ0ID0gaW5wdXQuc2Nyb2xsV2lkdGg7XG4gICAgICAgIGlucHV0LmZvY3VzKCk7XG4gICAgfSwgW10pO1xuICAgIGNvbnN0IGhhbmRsZUNoYW5nZSA9IHVzZUNhbGxiYWNrKChlKSA9PiB7XG4gICAgICAgIGxldCB2YWwgPSBlLnRhcmdldC52YWx1ZTtcbiAgICAgICAgaWYgKHZhbCAhPSBudWxsKVxuICAgICAgICAgICAgdmFsID0gdmFsLnNwbGl0KCcsJykuam9pbignJyk7XG4gICAgICAgIGNvbnN0IGhhc0RlY2ltYWxQb2ludCA9IHZhbC5sYXN0SW5kZXhPZignLicpID09PSB2YWwubGVuZ3RoIC0gMTtcbiAgICAgICAgaWYgKGhhc0RlY2ltYWxQb2ludClcbiAgICAgICAgICAgIHZhbCA9IHZhbC5zbGljZSgwLCAtMSk7XG4gICAgICAgIGlmIChpc05hTigrdmFsKSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgc2V0VmFsdWUodmFsID09PSAnJyA/IG51bGwgOiBgJHtCaWdOdW1iZXIodmFsKS50b0ZpeGVkKCl9JHtoYXNEZWNpbWFsUG9pbnQgPyAnLicgOiAnJ31gLnRyaW0oKSk7XG4gICAgICAgIG9uQ2hhbmdlID09PSBudWxsIHx8IG9uQ2hhbmdlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNoYW5nZShlKTtcbiAgICB9LCBbb25DaGFuZ2VdKTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2QsIF9lLCBfZiwgX2csIF9oLCBfaiwgX2s7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lcldpZHRoID0gKF9iID0gKF9hID0gY29udGFpbmVyUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5vZmZzZXRXaWR0aCkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogTUlOX0lOUFVUX1dJRFRIO1xuICAgICAgICBjb25zdCBwcmVmaXhXaWR0aCA9IChfZCA9IChfYyA9IHByZWZpeFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Mub2Zmc2V0V2lkdGgpICE9PSBudWxsICYmIF9kICE9PSB2b2lkIDAgPyBfZCA6IDA7XG4gICAgICAgIGNvbnN0IHN1ZmZpeFdpZHRoID0gKF9mID0gKF9lID0gc3VmZml4UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9lID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZS5vZmZzZXRXaWR0aCkgIT09IG51bGwgJiYgX2YgIT09IHZvaWQgMCA/IF9mIDogMDtcbiAgICAgICAgY29uc3QgY3VycmVuY3lXaWR0aCA9IChfaCA9IChfZyA9IGN1cnJlbmN5UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9nID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZy5vZmZzZXRXaWR0aCkgIT09IG51bGwgJiYgX2ggIT09IHZvaWQgMCA/IF9oIDogMDtcbiAgICAgICAgY29uc3QgZmFrZVdpZHRoID0gKF9rID0gKF9qID0gZmFrZUVsZVJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfaiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2oub2Zmc2V0V2lkdGgpICE9PSBudWxsICYmIF9rICE9PSB2b2lkIDAgPyBfayA6IDA7XG4gICAgICAgIGNvbnN0IGdhcFdpZHRoID0gcHJlZml4V2lkdGggJiYgc3VmZml4V2lkdGggJiYgY3VycmVuY3lXaWR0aFxuICAgICAgICAgICAgPyAyNFxuICAgICAgICAgICAgOiAocHJlZml4V2lkdGggJiYgc3VmZml4V2lkdGgpIHx8IChwcmVmaXhXaWR0aCAmJiBjdXJyZW5jeVdpZHRoKSB8fCAoc3VmZml4V2lkdGggJiYgY3VycmVuY3lXaWR0aClcbiAgICAgICAgICAgICAgICA/IDE2XG4gICAgICAgICAgICAgICAgOiBwcmVmaXhXaWR0aCB8fCBzdWZmaXhXaWR0aCB8fCBjdXJyZW5jeVdpZHRoXG4gICAgICAgICAgICAgICAgICAgID8gOFxuICAgICAgICAgICAgICAgICAgICA6IDA7XG4gICAgICAgIGNvbnN0IG1heFdpZHRoID0gY29udGFpbmVyV2lkdGggLSBwcmVmaXhXaWR0aCAtIHN1ZmZpeFdpZHRoIC0gY3VycmVuY3lXaWR0aCAtIGdhcFdpZHRoO1xuICAgICAgICBjb25zdCBpc01heCA9IGZha2VXaWR0aCA+PSBtYXhXaWR0aDtcbiAgICAgICAgaWYgKGlzTWF4KVxuICAgICAgICAgICAgc2Nyb2xsVG9FbmQoKTtcbiAgICAgICAgc2V0V2lkdGgoTWF0aC5taW4obWF4V2lkdGgsIE1hdGgubWF4KGZha2VXaWR0aCwgTUlOX0lOUFVUX1dJRFRIKSkpO1xuICAgICAgICBzZXRJc01heFdpZHRoKGlzTWF4KTtcbiAgICB9LCBbX3ZhbHVlXSk7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgbGV0IHZhbCA9IHZhbHVlO1xuICAgICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHZhbCA9IHZhbC5zcGxpdCgnLCcpLmpvaW4oJycpO1xuICAgICAgICAgICAgY29uc3QgaGFzRGVjaW1hbFBvaW50ID0gdmFsLmxhc3RJbmRleE9mKCcuJykgPT09IHZhbC5sZW5ndGggLSAxO1xuICAgICAgICAgICAgaWYgKGhhc0RlY2ltYWxQb2ludClcbiAgICAgICAgICAgICAgICB2YWwgPSB2YWwuc2xpY2UoMCwgLTEpO1xuICAgICAgICAgICAgaWYgKGlzTmFOKCt2YWwpKVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh2YWwgIT09IG51bGwgJiYgdHlwZW9mIHZhbCAhPT0gJ251bWJlcicgJiYgdHlwZW9mIHZhbCAhPT0gJ2JpZ2ludCcpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHNldFZhbHVlKHZhbCA9PSBudWxsID8gbnVsbCA6IEJpZ051bWJlcih2YWwpLnRvU3RyaW5nKCkpO1xuICAgIH0sIFt2YWx1ZV0pO1xuICAgIHJldHVybiBfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3Nlcygnd3JhcHBlcicsIFt3cmFwcGVyQ2xzLCBpbnZhbGlkID8gY2xhc3NlcygnaW52YWxpZCcpIDogdW5kZWZpbmVkXS5qb2luKCcgJykudHJpbSgpKSwgY2hpbGRyZW46IFtfanN4cyhcImRpdlwiLCB7IHJlZjogY29udGFpbmVyUmVmLCBjbGFzc05hbWU6IGNsYXNzZXModm9pZCAwLCBbY2xhc3NOYW1lLCBpc0ZvY3VzID8gY2xhc3NlcygnZm9jdXMnKSA6ICcnXS5qb2luKCcgJykudHJpbSgpKSwgb25DbGljazogKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZS50YXJnZXQgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAoX2EgPSBpbnB1dFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzTWF4V2lkdGgpXG4gICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxUb0VuZCgpO1xuICAgICAgICAgICAgICAgIH0sIGNoaWxkcmVuOiBbcHJlZml4ICYmIF9qc3goXCJzcGFuXCIsIHsgcmVmOiBwcmVmaXhSZWYsIGNsYXNzTmFtZTogY2xhc3NlcygncHJlZml4JyksIGNoaWxkcmVuOiBwcmVmaXggfSksIF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2VsZW1lbnQnLCAoIWlzRm9jdXMgJiYgaXNNYXhXaWR0aCkgPyBjbGFzc2VzKCdlbGVtZW50LW1heCcpIDogJycpLCBjaGlsZHJlbjogX2pzeChcImlucHV0XCIsIE9iamVjdC5hc3NpZ24oe30sIHJlc3QsIHsgcmVmOiBpbnB1dFJlZiwgdmFsdWU6IGZvcm1hdHRlZFZhbHVlLCBwbGFjZWhvbGRlcjogcGxhY2Vob2xkZXIsIHN0eWxlOiB7ICctLWlucHV0LXdpZHRoJzogYCR7X3dpZHRofXB4YCB9LCBvbkNoYW5nZTogaGFuZGxlQ2hhbmdlLCBvbkZvY3VzOiBlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXNGb2N1cyh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Gb2N1cyA9PT0gbnVsbCB8fCBvbkZvY3VzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkZvY3VzKGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIG9uQmx1cjogZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldElzRm9jdXMoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXIgPT09IG51bGwgfHwgb25CbHVyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkJsdXIoZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSB9KSkgfSksIGN1cnJlbmN5ICYmIF9qc3goXCJzcGFuXCIsIHsgcmVmOiBjdXJyZW5jeVJlZiwgY2xhc3NOYW1lOiBjbGFzc2VzKCdjdXJyZW5jeScpLCBjaGlsZHJlbjogY3VycmVuY3kgfSksIHN1ZmZpeCAmJiBfanN4KFwic3BhblwiLCB7IHJlZjogc3VmZml4UmVmLCBjbGFzc05hbWU6IGNsYXNzZXMoJ3N1ZmZpeCcpLCBjaGlsZHJlbjogc3VmZml4IH0pLCBfanN4KFwic3BhblwiLCB7IHJlZjogZmFrZUVsZVJlZiwgY2xhc3NOYW1lOiBjbGFzc2VzKCdmYWtlJyksIG9uQ2xpY2s6IGUgPT4gZS5zdG9wUHJvcGFnYXRpb24oKSwgY2hpbGRyZW46IG51bWVyaWNGb3JtYXR0ZXIoJycgKyAoX3ZhbHVlID09IG51bGwgPyAnJyA6IF92YWx1ZSksIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aG91c2FuZFNlcGFyYXRvcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd05lZ2F0aXZlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgfSldIH0pLCAobWVzc2FnZSB8fCBmb290bm90ZSkgJiYgX2pzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2V4dHJhJyksIGNoaWxkcmVuOiBbbWVzc2FnZSAmJiBfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdtZXNzYWdlJywgbWVzc2FnZUNscyksIGNoaWxkcmVuOiBtZXNzYWdlIH0pLCBmb290bm90ZSAmJiBfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdmb290bm90ZScsIGZvb3Rub3RlQ2xzKSwgY2hpbGRyZW46IGZvb3Rub3RlIH0pXSB9KV0gfSk7XG59O1xuZXhwb3J0IGRlZmF1bHQgbWVtbyhJbnB1dEFtb3VudCk7IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
213
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvSW5wdXRBbW91bnQvSW5wdXRBbW91bnQuanMiLCJjb21wb25lbnRzL3NyYy9jb21wb25lbnRzL0lucHV0QW1vdW50L0lucHV0QW1vdW50LnRzeCJdLCJuYW1lcyI6WyJfX3Jlc3QiLCJzIiwiZSIsInQiLCJwIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaW5kZXhPZiIsImdldE93blByb3BlcnR5U3ltYm9scyIsImkiLCJsZW5ndGgiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJtZW1vIiwidXNlTWVtbyIsInVzZVN0YXRlIiwidXNlQ2FsbGJhY2siLCJ1c2VSZWYiLCJ1c2VFZmZlY3QiLCJCaWdOdW1iZXIiLCJudW1lcmljRm9ybWF0dGVyIiwiY2xhc3NuYW1lcyIsIk1JTl9JTlBVVF9XSURUSCIsIklucHV0QW1vdW50IiwicHJvcHMiLCJ2YWx1ZSIsIm1heEZyYWN0aW9uRGlnaXRzIiwiY2hpbGRyZW4iLCJjbGFzc05hbWUiLCJ3cmFwcGVyQ2xzIiwiX3Byb3BzJHByZWZpeENscyIsInByZWZpeENscyIsIm1lc3NhZ2VDbHMiLCJmb290bm90ZUNscyIsImludmFsaWQiLCJfcHJvcHMkcGxhY2Vob2xkZXIiLCJwbGFjZWhvbGRlciIsInByZWZpeCIsImN1cnJlbmN5Iiwic3VmZml4IiwibWVzc2FnZSIsImZvb3Rub3RlIiwib25DaGFuZ2UiLCJvbkJsdXIiLCJvbkZvY3VzIiwicmVzdCIsImNsYXNzZXMiLCJpbnB1dFJlZiIsImZha2VFbGVSZWYiLCJwcmVmaXhSZWYiLCJzdWZmaXhSZWYiLCJjdXJyZW5jeVJlZiIsImNvbnRhaW5lclJlZiIsImlucHV0Q2FyZXRQb3NpdGlvblJlZiIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsIl92YWx1ZSIsInNldFZhbHVlIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJfd2lkdGgiLCJzZXRXaWR0aCIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2IiwiaXNNYXhXaWR0aCIsInNldElzTWF4V2lkdGgiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsImlzRm9jdXMiLCJzZXRJc0ZvY3VzIiwiZm9ybWF0dGVkVmFsdWUiLCJ0aG91c2FuZFNlcGFyYXRvciIsImFsbG93TmVnYXRpdmUiLCJzY3JvbGxUb0VuZCIsInN0aWNreSIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsIl9hIiwiaW5wdXQiLCJjdXJyZW50IiwibGVuIiwicG9zaXRpb24iLCJzY3JvbGxMZWZ0Iiwic2hvdWxkVG9FbmQiLCJzdGFydCIsInNldFNlbGVjdGlvblJhbmdlIiwic2Nyb2xsV2lkdGgiLCJmb2N1cyIsImhhbmRsZUNoYW5nZSIsIl9iIiwiX2MiLCJfZCIsIl9lIiwidmFsIiwidGFyZ2V0Iiwic3BsaXQiLCJqb2luIiwiaGFzRGVjaW1hbFBvaW50IiwibGFzdEluZGV4T2YiLCJzbGljZSIsImlzTmFOIiwiX3ZhbCRzcGxpdCIsIl92YWwkc3BsaXQyIiwiZGVjaW1hbCIsIk51bWJlciIsImZvcm1hdHRlZE5ld1ZhbCIsImlzQWRkIiwic2VsZWN0aW9uU3RhcnQiLCJvbGRQb3NWYWwiLCJwb3NWYWwiLCJyZWR1Y2UiLCJhY2MiLCJjaGFyIiwiaW5kIiwicHVzaCIsImRlY2ltYWxzIiwibWF0Y2giLCJjb25jYXQiLCJ0b0ZpeGVkIiwidHJpbSIsIl9mIiwiX2ciLCJfaCIsIl9qIiwiX2siLCJjb250YWluZXJXaWR0aCIsIm9mZnNldFdpZHRoIiwicHJlZml4V2lkdGgiLCJzdWZmaXhXaWR0aCIsImN1cnJlbmN5V2lkdGgiLCJmYWtlV2lkdGgiLCJnYXBXaWR0aCIsIm1heFdpZHRoIiwiaXNNYXgiLCJNYXRoIiwibWluIiwibWF4IiwidG9TdHJpbmciLCJyZWYiLCJvbkNsaWNrIiwiSFRNTElucHV0RWxlbWVudCIsImFzc2lnbiIsInN0eWxlIiwic3RvcFByb3BhZ2F0aW9uIl0sIm1hcHBpbmdzIjoiO0FBQUEsSUFBSUEsTUFBTSxHQUFJLElBQUksSUFBSSxJQUFJLENBQUNBLE1BQU0sSUFBSyxVQUFVQyxDQUFDLEVBQUVDLENBQUMsRUFBRTtFQUNsRCxJQUFJQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0VBQ1YsS0FBSyxJQUFJQyxDQUFDLElBQUlILENBQUMsRUFBRSxJQUFJSSxNQUFNLENBQUNDLFNBQVMsQ0FBQ0MsY0FBYyxDQUFDQyxJQUFJLENBQUNQLENBQUMsRUFBRUcsQ0FBQyxDQUFDLElBQUlGLENBQUMsQ0FBQ08sT0FBTyxDQUFDTCxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQy9FRCxDQUFDLENBQUNDLENBQUMsQ0FBQyxHQUFHSCxDQUFDLENBQUNHLENBQUMsQ0FBQztFQUNmLElBQUlILENBQUMsSUFBSSxJQUFJLElBQUksT0FBT0ksTUFBTSxDQUFDSyxxQkFBcUIsS0FBSyxVQUFVLEVBQy9ELEtBQUssSUFBSUMsQ0FBQyxHQUFHLENBQUMsRUFBRVAsQ0FBQyxHQUFHQyxNQUFNLENBQUNLLHFCQUFxQixDQUFDVCxDQUFDLENBQUMsRUFBRVUsQ0FBQyxHQUFHUCxDQUFDLENBQUNRLE1BQU0sRUFBRUQsQ0FBQyxFQUFFLEVBQUU7SUFDcEUsSUFBSVQsQ0FBQyxDQUFDTyxPQUFPLENBQUNMLENBQUMsQ0FBQ08sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUlOLE1BQU0sQ0FBQ0MsU0FBUyxDQUFDTyxvQkFBb0IsQ0FBQ0wsSUFBSSxDQUFDUCxDQUFDLEVBQUVHLENBQUMsQ0FBQ08sQ0FBQyxDQUFDLENBQUMsRUFDMUVSLENBQUMsQ0FBQ0MsQ0FBQyxDQUFDTyxDQUFDLENBQUMsQ0FBQyxHQUFHVixDQUFDLENBQUNHLENBQUMsQ0FBQ08sQ0FBQyxDQUFDLENBQUM7RUFDekI7RUFDSixPQUFPUixDQUFDO0FBQ1osQ0FBQztBQUNELFNBQVNXLEdBQUcsSUFBSUMsSUFBSSxFQUFFQyxJQUFJLElBQUlDLEtBQUssUUFBUSxtQkFBbUI7QUNYOUQsU0FBU0MsSUFBSSxFQUFFQyxPQUFPLEVBQUVDLFFBQVEsRUFBRUMsV0FBVyxFQUFFQyxNQUFNLEVBQUVDLFNBQVMsUUFBUSxPQUFPO0FBQy9FLE9BQU9DLFNBQVMsTUFBTSxjQUFjO0FBQ3BDLFNBQVNDLGdCQUFnQixRQUFRLHFCQUFxQjtBQUN0RCxPQUFPQyxVQUFVLE1BQU0sd0JBQXdCO0FBSy9DLElBQU1DLGVBQWUsR0FBRyxFQUFFO0FBRTFCLE9BQU8sSUFBTUMsV0FBVyxHQUE0QyxTQUF2REEsV0FBV0EsQ0FBNENDLEtBQUssRUFBRztFQUMxRSxJQUNFQyxLQUFLLEdBbUJIRCxLQUFLLENBbkJQQyxLQUFLO0lBQ0xDLGlCQUFpQixHQWtCZkYsS0FBSyxDQWxCUEUsaUJBQWlCO0lBQ2pCQyxRQUFRLEdBaUJOSCxLQUFLLENBakJQRyxRQUFRO0lBQ1JDLFNBQVMsR0FnQlBKLEtBQUssQ0FoQlBJLFNBQVM7SUFDVEMsVUFBVSxHQWVSTCxLQUFLLENBZlBLLFVBQVU7SUFBQUMsZ0JBQUEsR0FlUk4sS0FBSyxDQWRQTyxTQUFTO0lBQVRBLFNBQVMsR0FBQUQsZ0JBQUEsY0FBRyxjQUFjLEdBQUFBLGdCQUFBO0lBQzFCRSxVQUFVLEdBYVJSLEtBQUssQ0FiUFEsVUFBVTtJQUNWQyxXQUFXLEdBWVRULEtBQUssQ0FaUFMsV0FBVztJQUNYQyxPQUFPLEdBV0xWLEtBQUssQ0FYUFUsT0FBTztJQUFBQyxrQkFBQSxHQVdMWCxLQUFLLENBVlBZLFdBQVc7SUFBWEEsV0FBVyxHQUFBRCxrQkFBQSxjQUFHLEdBQUcsR0FBQUEsa0JBQUE7SUFDakJFLE1BQU0sR0FTSmIsS0FBSyxDQVRQYSxNQUFNO0lBQ05DLFFBQVEsR0FRTmQsS0FBSyxDQVJQYyxRQUFRO0lBQ1JDLE1BQU0sR0FPSmYsS0FBSyxDQVBQZSxNQUFNO0lBQ05DLE9BQU8sR0FNTGhCLEtBQUssQ0FOUGdCLE9BQU87SUFDUEMsUUFBUSxHQUtOakIsS0FBSyxDQUxQaUIsUUFBUTtJQUNSQyxRQUFRLEdBSU5sQixLQUFLLENBSlBrQixRQUFRO0lBQ1JDLE9BQU0sR0FHSm5CLEtBQUssQ0FIUG1CLE1BQU07SUFDTkMsUUFBTyxHQUVMcEIsS0FBSyxDQUZQb0IsT0FBTztJQUNKQyxJQUFJLEdBQUFsRCxNQUFBLENBQ0w2QixLQUFLLEVBcEJILENBQUEsT0FBQSxFQUFBLG1CQUFBLEVBQUEsVUFBQSxFQUFBLFdBQUEsRUFBQSxZQUFBLEVBQUEsV0FBQSxFQUFBLFlBQUEsRUFBQSxhQUFBLEVBQUEsU0FBQSxFQUFBLGFBQUEsRUFBQSxRQUFBLEVBQUEsVUFBQSxFQUFBLFFBQUEsRUFBQSxTQUFBLEVBQUEsVUFBQSxFQUFBLFVBQUEsRUFBQSxRQUFBLEVBQUEsU0FBQSxDQW9CTCxDQUFRO0VBQ1QsSUFBTXNCLE9BQU8sR0FBR3pCLFVBQVUsQ0FBQ1UsU0FBUyxDQUFDO0VBRXJDLElBQU1nQixRQUFRLEdBQUc5QixNQUFNLENBQW1CLElBQUksQ0FBQztFQUMvQyxJQUFNK0IsVUFBVSxHQUFHL0IsTUFBTSxDQUFrQixJQUFJLENBQUM7RUFDaEQsSUFBTWdDLFNBQVMsR0FBR2hDLE1BQU0sQ0FBa0IsSUFBSSxDQUFDO0VBQy9DLElBQU1pQyxTQUFTLEdBQUdqQyxNQUFNLENBQWtCLElBQUksQ0FBQztFQUMvQyxJQUFNa0MsV0FBVyxHQUFHbEMsTUFBTSxDQUFrQixJQUFJLENBQUM7RUFDakQsSUFBTW1DLFlBQVksR0FBR25DLE1BQU0sQ0FBaUIsSUFBSSxDQUFDO0VBQ2pELElBQU1vQyxxQkFBcUIsR0FBR3BDLE1BQU0sQ0FBUyxDQUFDLENBQUM7RUFFL0MsSUFBQXFDLFNBQUEsR0FBMkJ2QyxRQUFRLENBQWdCLElBQUksQ0FBQztJQUFBd0MsVUFBQSxHQUFBQyxjQUFBLENBQUFGLFNBQUE7SUFBakRHLE1BQU0sR0FBQUYsVUFBQTtJQUFFRyxRQUFRLEdBQUFILFVBQUE7RUFDdkIsSUFBQUksVUFBQSxHQUEyQjVDLFFBQVEsQ0FBU08sZUFBZSxDQUFDO0lBQUFzQyxVQUFBLEdBQUFKLGNBQUEsQ0FBQUcsVUFBQTtJQUFyREUsTUFBTSxHQUFBRCxVQUFBO0lBQUVFLFFBQVEsR0FBQUYsVUFBQTtFQUN2QixJQUFBRyxVQUFBLEdBQW9DaEQsUUFBUSxDQUFVLEtBQUssQ0FBQztJQUFBaUQsVUFBQSxHQUFBUixjQUFBLENBQUFPLFVBQUE7SUFBckRFLFVBQVUsR0FBQUQsVUFBQTtJQUFFRSxhQUFhLEdBQUFGLFVBQUE7RUFDaEMsSUFBQUcsVUFBQSxHQUE4QnBELFFBQVEsQ0FBVSxLQUFLLENBQUM7SUFBQXFELFVBQUEsR0FBQVosY0FBQSxDQUFBVyxVQUFBO0lBQS9DRSxPQUFPLEdBQUFELFVBQUE7SUFBRUUsVUFBVSxHQUFBRixVQUFBO0VBRTFCLElBQU1HLGNBQWMsR0FBR3pELE9BQU8sQ0FBQyxZQUFLO0lBQ2xDLE9BQU9NLGdCQUFnQixDQUFDLEVBQUUsSUFBSXFDLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxHQUFHQSxNQUFNLENBQUMsRUFBRTtNQUMzRGUsaUJBQWlCLEVBQUUsSUFBSTtNQUN2QkMsYUFBYSxFQUFFO0lEZmIsQ0NnQkgsQ0FBQztFQUNKLENBQUMsRUFBRSxDQUFDaEIsTUFBTSxDQUFDLENBQUM7RUFFWixJQUFNaUIsV0FBVyxHQUFHMUQsV0FBVyxDQUFDLFlBQTRCO0lBQUEsSUFBM0IyRCxNQUFBLEdBQUFDLFNBQUEsQ0FBQXJFLE1BQUEsUUFBQXFFLFNBQUEsUUFBQUMsU0FBQSxHQUFBRCxTQUFBLE1BQWtCLEtBQUs7SURoQmxELElBQUlFLEVBQUU7SUNpQlYsSUFBTUMsS0FBSyxHQUFHaEMsUUFBUSxDQUFDaUMsT0FBTztJQUM5QixJQUFJLENBQUNELEtBQUssRUFBRTtJQUNaLElBQU1FLEdBQUcsR0FBRyxDQUFBSCxFQUFBLEdBQUFDLEtBQUssQ0FBQ3RELEtBQUssTUFBQSxJQUFBLElBQUFxRCxFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQUFBLEVBQUEsQ0FBRXZFLE1BQU07SUFDL0IsSUFBTTJFLFFBQVEsR0FBR0gsS0FBSyxDQUFDSSxVQUFVO0lBQ2pDLElBQU1DLFdBQVcsR0FBRyxDQUFDLENBQUNGLFFBQVEsSUFBSSxDQUFDUCxNQUFNO0lBQ3pDLElBQU1VLEtBQUssR0FBR0QsV0FBVyxHQUFHSCxHQUFHLEdBQUc1QixxQkFBcUIsQ0FBQzJCLE9BQU87SUFDL0RELEtBQUssQ0FBQ08saUJBQWlCLENBQUNELEtBQUssRUFBRUEsS0FBSyxDQUFDO0lBQ3JDTixLQUFLLENBQUNJLFVBQVUsR0FBR0MsV0FBVyxHQUFHTCxLQUFLLENBQUNRLFdBQVcsR0FBR0wsUUFBUTtJQUM3REgsS0FBSyxDQUFDUyxLQUFLLENBQUEsQ0FBRTtFQUNmLENBQUMsRUFBRSxFQUFFLENBQUM7RUFFTixJQUFNQyxZQUFZLEdBQUd6RSxXQUFXLENBQUMsVUFBQ25CLENBQWdDLEVBQUk7SURmaEUsSUFBSWlGLEVBQUUsRUFBRVksRUFBRSxFQUFFQyxFQUFFLEVBQUVDLEVBQUUsRUFBRUMsRUFBRTtJQ2dCMUIsSUFBSUMsR0FBRyxHQUFHakcsQ0FBQyxDQUFDa0csTUFBTSxDQUFDdEUsS0FBSztJQUN4QixJQUFJcUUsR0FBRyxJQUFJLElBQUksRUFBRUEsR0FBRyxHQUFHQSxHQUFHLENBQUNFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQ0MsSUFBSSxDQUFDLEVBQUUsQ0FBQztJQUM5QyxJQUFNQyxlQUFlLEdBQUdKLEdBQUcsQ0FBQ0ssV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLTCxHQUFHLENBQUN2RixNQUFNLEdBQUcsQ0FBQztJQUMvRCxJQUFJMkYsZUFBZSxFQUFFSixHQUFHLEdBQUdBLEdBQUcsQ0FBQ00sS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMzQyxJQUFJQyxLQUFLLENBQUMsQ0FBQ1AsR0FBRyxDQUFDLEVBQUU7SUFDakIsSUFBSUEsR0FBRyxLQUFLckMsTUFBTSxJQUFJLENBQUN5QyxlQUFlLEVBQUU7SUFDeEMsSUFBSSxPQUFPeEUsaUJBQWlCLEtBQUssUUFBUSxJQUFJLE9BQU9BLGlCQUFpQixLQUFLLFFBQVEsRUFBRTtNQUNsRixJQUFBNEUsVUFBQSxHQUFvQlIsR0FBRyxDQUFDRSxLQUFLLENBQUMsR0FBRyxDQUFDO1FBQUFPLFdBQUEsR0FBQS9DLGNBQUEsQ0FBQThDLFVBQUE7UUFBekJFLE9BQU8sR0FBQUQsV0FBQTtNQUNoQixJQUFJQyxPQUFPLElBQUksSUFBSSxJQUFJQSxPQUFPLENBQUNqRyxNQUFNLEdBQUdrRyxNQUFNLENBQUMvRSxpQkFBaUIsQ0FBQyxFQUFFO0lBQ3JFO0lBQ0EsSUFBSXFCLFFBQVEsQ0FBQ2lDLE9BQU8sRUFBRTtNQUNwQixJQUFNMEIsZUFBZSxHQUFHdEYsZ0JBQWdCLENBQUMwRSxHQUFHLEVBQUU7UUFDNUN0QixpQkFBaUIsRUFBRSxJQUFJO1FBQ3ZCQyxhQUFhLEVBQUU7TURUWCxDQ1VMLENBQUM7TUFFRixJQUFNa0MsS0FBSyxHQUFHYixHQUFHLENBQUN2RixNQUFNLElBQUksQ0FBQXVFLEVBQUEsR0FBQXJCLE1BQU0sS0FBQSxJQUFBLElBQU5BLE1BQU0sS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBTkEsTUFBTSxDQUFFbEQsTUFBTSxNQUFBLElBQUEsSUFBQXVFLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQUEsRUFBQSxHQUFJLENBQUMsQ0FBQztNQUNoRCxJQUFJSSxRQUFRLEdBQUcsQ0FBQVEsRUFBQSxHQUFBM0MsUUFBUSxDQUFDaUMsT0FBTyxDQUFDNEIsY0FBYyxNQUFBLElBQUEsSUFBQWxCLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQUEsRUFBQSxHQUFJLENBQUM7TUFDbkQsSUFBTW1CLFNBQVMsR0FBR3RDLGNBQWMsQ0FBQzZCLEtBQUssQ0FBQyxDQUFDLEVBQUdsQixRQUFRLElBQUl5QixLQUFLLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFFLENBQUM7TUFDeEV6QixRQUFRLEdBQUcyQixTQUFTLENBQUNiLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQ0MsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDMUYsTUFBTSxJQUFJb0csS0FBSyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztNQUNsRSxJQUFNRyxNQUFNLEdBQUdoQixHQUFHLENBQUNNLEtBQUssQ0FBQyxDQUFDLEVBQUVsQixRQUFRLENBQUM7TUFDckN3QixlQUFlLENBQUNWLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQ2UsTUFBTSxDQUFXLFVBQUNDLEdBQUcsRUFBRUMsS0FBSSxFQUFFQyxHQUFHLEVBQUk7UUFDNUQsSUFBSUQsS0FBSSxLQUFLLEdBQUcsRUFBRSxPQUFPRCxHQUFHLENBQUMsS0FDeEJBLEdBQUcsQ0FBQ0csSUFBSSxDQUFDRixLQUFJLENBQUM7UUFDbkIsSUFBSUQsR0FBRyxDQUFDZixJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUthLE1BQU0sRUFBRTtVQUMzQjVCLFFBQVEsR0FBR2dDLEdBQUcsR0FBRyxDQUFDO1VBQ2xCLE9BQU9GLEdBQUc7UUFDWjtRQUNBLE9BQU9BLEdBQUc7TUFDWixDQUFDLEVBQUUsRUFBRSxDQUFDO01BQ04zRCxxQkFBcUIsQ0FBQzJCLE9BQU8sR0FBR0UsUUFBUSxJQUFJZ0IsZUFBZSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEU7SUFFQSxJQUFJSixHQUFHLEtBQUssRUFBRSxFQUFFO01BQ2RwQyxRQUFRLENBQUMsSUFBSSxDQUFDO0lBQ2hCLENBQUMsTUFBTTtNQUNMLElBQU0wRCxRQUFRLEdBQUcsQ0FBQXZCLEVBQUEsR0FBQSxDQUFBRCxFQUFBLEdBQUEsQ0FBQUQsRUFBQSxHQUFBRyxHQUFHLENBQUN1QixLQUFLLENBQUMsVUFBVSxDQUFDLE1BQUEsSUFBQSxJQUFBMUIsRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBLEtBQUEsQ0FBQSxHQUFBQSxFQUFBLENBQUcsQ0FBQyxDQUFDLE1BQUEsSUFBQSxJQUFBQyxFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQUFBLEVBQUEsQ0FBRXJGLE1BQU0sTUFBQSxJQUFBLElBQUFzRixFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUFBLEVBQUEsR0FBSSxDQUFDO01BQ3hEbkMsUUFBUSxDQUFDLEdBQUE0RCxNQUFBLENBQUduRyxTQUFTLENBQUMyRSxHQUFHLENBQUMsQ0FBQ3lCLE9BQU8sQ0FBQ0gsUUFBUSxDQUFDLEVBQUFFLE1BQUEsQ0FBR3BCLGVBQWUsR0FBRyxHQUFHLEdBQUcsRUFBRSxFQUFHc0IsSUFBSSxDQUFBLENBQUUsQ0FBQztJQUNyRjtJQUNBOUUsUUFBUSxLQUFBLElBQUEsSUFBUkEsUUFBUSxLQUFBLEtBQUEsQ0FBQSxHQUFBLEtBQUEsQ0FBQSxHQUFSQSxRQUFRLENBQUc3QyxDQUFDLENBQUM7RUFDZixDQUFDLEVBQUUsQ0FBQzZDLFFBQVEsRUFBRWUsTUFBTSxFQUFFYyxjQUFjLEVBQUU3QyxpQkFBaUIsQ0FBQyxDQUFDO0VBRXpEUixTQUFTLENBQUMsWUFBSztJRFRULElBQUk0RCxFQUFFLEVBQUVZLEVBQUUsRUFBRUMsRUFBRSxFQUFFQyxFQUFFLEVBQUVDLEVBQUUsRUFBRTRCLEVBQUUsRUFBRUMsRUFBRSxFQUFFQyxFQUFFLEVBQUVDLEVBQUUsRUFBRUMsRUFBRTtJQ1U5QyxJQUFNQyxjQUFjLEdBQUcsQ0FBQXBDLEVBQUEsR0FBQSxDQUFBWixFQUFBLEdBQUExQixZQUFZLENBQUM0QixPQUFPLE1BQUEsSUFBQSxJQUFBRixFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQUFBLEVBQUEsQ0FBRWlELFdBQVcsTUFBQSxJQUFBLElBQUFyQyxFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUFBLEVBQUEsR0FBSXBFLGVBQWU7SUFDM0UsSUFBTTBHLFdBQVcsR0FBRyxDQUFBcEMsRUFBQSxHQUFBLENBQUFELEVBQUEsR0FBQTFDLFNBQVMsQ0FBQytCLE9BQU8sTUFBQSxJQUFBLElBQUFXLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBQUEsRUFBQSxDQUFFb0MsV0FBVyxNQUFBLElBQUEsSUFBQW5DLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQUEsRUFBQSxHQUFJLENBQUM7SUFDdkQsSUFBTXFDLFdBQVcsR0FBRyxDQUFBUixFQUFBLEdBQUEsQ0FBQTVCLEVBQUEsR0FBQTNDLFNBQVMsQ0FBQzhCLE9BQU8sTUFBQSxJQUFBLElBQUFhLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBQUEsRUFBQSxDQUFFa0MsV0FBVyxNQUFBLElBQUEsSUFBQU4sRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBQSxFQUFBLEdBQUksQ0FBQztJQUN2RCxJQUFNUyxhQUFhLEdBQUcsQ0FBQVAsRUFBQSxHQUFBLENBQUFELEVBQUEsR0FBQXZFLFdBQVcsQ0FBQzZCLE9BQU8sTUFBQSxJQUFBLElBQUEwQyxFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQUFBLEVBQUEsQ0FBRUssV0FBVyxNQUFBLElBQUEsSUFBQUosRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBQSxFQUFBLEdBQUksQ0FBQztJQUMzRCxJQUFNUSxTQUFTLEdBQUcsQ0FBQU4sRUFBQSxHQUFBLENBQUFELEVBQUEsR0FBQTVFLFVBQVUsQ0FBQ2dDLE9BQU8sTUFBQSxJQUFBLElBQUE0QyxFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQUFBLEVBQUEsQ0FBRUcsV0FBVyxNQUFBLElBQUEsSUFBQUYsRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBQSxFQUFBLEdBQUksQ0FBQztJQUN0RCxJQUFNTyxRQUFRLEdBQUdKLFdBQVcsSUFBSUMsV0FBVyxJQUFJQyxhQUFhLEdBQ3hELEVBQUUsR0FDREYsV0FBVyxJQUFJQyxXQUFXLElBQU1ELFdBQVcsSUFBSUUsYUFBYyxJQUFLRCxXQUFXLElBQUlDLGFBQWMsR0FDOUYsRUFBRSxHQUNGRixXQUFXLElBQUlDLFdBQVcsSUFBSUMsYUFBYSxHQUN6QyxDQUFDLEdBQ0QsQ0FBQztJQUVULElBQU1HLFFBQVEsR0FBR1AsY0FBYyxHQUFHRSxXQUFXLEdBQUdDLFdBQVcsR0FBR0MsYUFBYSxHQUFHRSxRQUFRO0lBQ3RGLElBQU1FLEtBQUssR0FBR0gsU0FBUyxJQUFJRSxRQUFRO0lBQ25DdkUsUUFBUSxDQUFDeUUsSUFBSSxDQUFDQyxHQUFHLENBQUNILFFBQVEsRUFBRUUsSUFBSSxDQUFDRSxHQUFHLENBQUNOLFNBQVMsRUFBRTdHLGVBQWUsQ0FBQyxDQUFDLENBQUM7SUFDbEU0QyxhQUFhLENBQUNvRSxLQUFLLENBQUM7SUFDcEI1RCxXQUFXLENBQUMsSUFBSSxDQUFDO0VBQ25CLENBQUMsRUFBRSxDQUFDakIsTUFBTSxDQUFDLENBQUM7RUFFWnZDLFNBQVMsQ0FBQyxZQUFLO0lBQ2IsSUFBSTRFLEdBQUcsR0FBR3JFLEtBQUs7SUFDZixJQUFJLE9BQU9xRSxHQUFHLEtBQUssUUFBUSxFQUFFO01BQzNCQSxHQUFHLEdBQUdBLEdBQUcsQ0FBQ0UsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDQyxJQUFJLENBQUMsRUFBRSxDQUFDO01BQzdCLElBQU1DLGVBQWUsR0FBR0osR0FBRyxDQUFDSyxXQUFXLENBQUMsR0FBRyxDQUFDLEtBQUtMLEdBQUcsQ0FBQ3ZGLE1BQU0sR0FBRyxDQUFDO01BQy9ELElBQUkyRixlQUFlLEVBQUVKLEdBQUcsR0FBR0EsR0FBRyxDQUFDTSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO01BQzNDLElBQUlDLEtBQUssQ0FBQyxDQUFDUCxHQUFHLENBQUMsRUFBRTtJQUNuQixDQUFDLE1BQU0sSUFBSUEsR0FBRyxLQUFLLElBQUksSUFBSSxPQUFPQSxHQUFHLEtBQUssUUFBUSxJQUFJLE9BQU9BLEdBQUcsS0FBSyxRQUFRLEVBQUU7SUFFL0VwQyxRQUFRLENBQUNvQyxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksR0FBRzNFLFNBQVMsQ0FBQzJFLEdBQUcsQ0FBQyxDQUFDNEMsUUFBUSxDQUFBLENBQUUsQ0FBQztFQUMxRCxDQUFDLEVBQUUsQ0FBQ2pILEtBQUssQ0FBQyxDQUFDO0VBRVgsT0FBT2IsS0FBQSxDQUFBLEtBQUEsRUFBQTtJQUNMZ0IsU0FBUyxFQUFFa0IsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDakIsVUFBVSxFQUFFSyxPQUFPLEdBQUdZLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRytCLFNBQVMsQ0FBQyxDQUFDb0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDdUIsSUFBSSxDQUFBLENBQUUsQ0FBQztJQUFBN0YsUUFBQSxFQUFBLENBRXRHZixLQUFBLENBQUEsS0FBQSxFQUFBO01BQ0UrSCxHQUFHLEVBQUV2RixZQUFZO01BQ2pCeEIsU0FBUyxFQUFFa0IsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUNsQixTQUFTLEVBQUV5QyxPQUFPLEdBQUd2QixPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUNtRCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUN1QixJQUFJLENBQUEsQ0FBRSxDQUFDO01BQ3pGb0IsT0FBTyxFQUFFLFNBQVRBLE9BQU9BLENBQUcvSSxDQUFDLEVBQUk7UURkRCxJQUFJaUYsRUFBRTtRQ2VsQixJQUFJakYsQ0FBQyxDQUFDa0csTUFBTSxZQUFZOEMsZ0JBQWdCLEVBQUU7UUFDMUMsQ0FBQS9ELEVBQUEsR0FBQS9CLFFBQVEsQ0FBQ2lDLE9BQU8sTUFBQSxJQUFBLElBQUFGLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBQUEsRUFBQSxDQUFFVSxLQUFLLENBQUEsQ0FBRTtRQUN6QixJQUFJdkIsVUFBVSxFQUFFUyxXQUFXLENBQUEsQ0FBRTtNQUMvQixDQUFDO01BQUEvQyxRQUFBLEVBQUEsQ0FHQ1UsTUFBTSxJQUFJM0IsSUFBQSxDQUFBLE1BQUEsRUFBQTtRQUNSaUksR0FBRyxFQUFFMUYsU0FBUztRQUNkckIsU0FBUyxFQUFFa0IsT0FBTyxDQUFDLFFBQVEsQ0FBQztRQUFBbkIsUUFBQSxFQUUzQlU7TUFBTSxDQUFBLENBQ0YsRUFFVDNCLElBQUEsQ0FBQSxLQUFBLEVBQUE7UUFDRWtCLFNBQVMsRUFBRWtCLE9BQU8sQ0FBQyxTQUFTLEVBQUcsQ0FBQ3VCLE9BQU8sSUFBSUosVUFBVSxHQUFJbkIsT0FBTyxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUFBbkIsUUFBQSxFQUVyRmpCLElBQUEsQ0FBQSxPQUFBLEVBQUFWLE1BQUEsQ0FBQThJLE1BQUEsQ0FBQSxDQUFBLENBQUEsRUFDTWpHLElBQUksRUFBQTtVQUNSOEYsR0FBRyxFQUFFNUYsUUFBUTtVQUNidEIsS0FBSyxFQUFFOEMsY0FBYztVQUNyQm5DLFdBQVcsRUFBRUEsV0FBVztVQUN4QjJHLEtBQUssRUFBRTtZQUFFLGVBQWUsS0FBQXpCLE1BQUEsQ0FBS3pELE1BQU07VUFBSSxDQUFtQjtVQUMxRG5CLFFBQVEsRUFBRStDLFlBQVk7VUFDdEI3QyxPQUFPLEVBQUUsU0FBVEEsT0FBT0EsQ0FBRS9DLENBQUMsRUFBRztZQUNYeUUsVUFBVSxDQUFDLElBQUksQ0FBQztZQUNoQjFCLFFBQU8sS0FBQSxJQUFBLElBQVBBLFFBQU8sS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBUEEsUUFBTyxDQUFHL0MsQ0FBQyxDQUFDO1VBQ2QsQ0FBQztVQUNEOEMsTUFBTSxFQUFFLFNBQVJBLE1BQU1BLENBQUU5QyxDQUFDLEVBQUc7WUFDVnlFLFVBQVUsQ0FBQyxLQUFLLENBQUM7WUFDakIzQixPQUFNLEtBQUEsSUFBQSxJQUFOQSxPQUFNLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQU5BLE9BQU0sQ0FBRzlDLENBQUMsQ0FBQztVQUNiO1FBQUMsQ0FBQSxDQUFBO01BQ0QsQ0FBQSxDQUNFLEVBRUp5QyxRQUFRLElBQUk1QixJQUFBLENBQUEsTUFBQSxFQUFBO1FBQ1ZpSSxHQUFHLEVBQUV4RixXQUFXO1FBQ2hCdkIsU0FBUyxFQUFFa0IsT0FBTyxDQUFDLFVBQVUsQ0FBQztRQUFBbkIsUUFBQSxFQUU3Qlc7TUFBUSxDQUFBLENBQ0osRUFFUkMsTUFBTSxJQUFJN0IsSUFBQSxDQUFBLE1BQUEsRUFBQTtRQUFNaUksR0FBRyxFQUFFekYsU0FBUztRQUFFdEIsU0FBUyxFQUFFa0IsT0FBTyxDQUFDLFFBQVEsQ0FBQztRQUFBbkIsUUFBQSxFQUFHWTtNQUFNLENBQUEsQ0FBUSxFQUM5RTdCLElBQUEsQ0FBQSxNQUFBLEVBQUE7UUFDRWlJLEdBQUcsRUFBRTNGLFVBQVU7UUFDZnBCLFNBQVMsRUFBRWtCLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFDMUI4RixPQUFPLEVBQUUsU0FBVEEsT0FBT0EsQ0FBRS9JLENBQUM7VUFBQSxPQUFJQSxDQUFDLENBQUNtSixlQUFlLENBQUEsQ0FBRTtRQUFBO1FBQUFySCxRQUFBLEVBRy9CUCxnQkFBZ0IsQ0FBQyxFQUFFLElBQUlxQyxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsR0FBR0EsTUFBTSxDQUFDLEVBQUU7VUFDcERlLGlCQUFpQixFQUFFLElBQUk7VUFDdkJDLGFBQWEsRUFBRTtRRGxESCxDQ21EYjtNQUFDLENBQUEsQ0FFQztJQUFBLENBQUEsQ0FDSCxFQUVKLENBQUNqQyxPQUFPLElBQUlDLFFBQVEsS0FBSzdCLEtBQUEsQ0FBQSxLQUFBLEVBQUE7TUFBS2dCLFNBQVMsRUFBRWtCLE9BQU8sQ0FBQyxPQUFPLENBQUM7TUFBQW5CLFFBQUEsRUFBQSxDQUN0RGEsT0FBTyxJQUFJOUIsSUFBQSxDQUFBLEtBQUEsRUFBQTtRQUFLa0IsU0FBUyxFQUFFa0IsT0FBTyxDQUFDLFNBQVMsRUFBRWQsVUFBVSxDQUFDO1FBQUFMLFFBQUEsRUFBR2E7TUFBTyxDQUFBLENBQU8sRUFDMUVDLFFBQVEsSUFBSS9CLElBQUEsQ0FBQSxLQUFBLEVBQUE7UUFBS2tCLFNBQVMsRUFBRWtCLE9BQU8sQ0FBQyxVQUFVLEVBQUViLFdBQVcsQ0FBQztRQUFBTixRQUFBLEVBQUdjO01BQVEsQ0FBQSxDQUFPO0lBQUEsQ0FBQSxDQUMzRTtFQUFBLENBQUEsQ0FFSjtBQUNSLENBQUM7QUFFRCw0QkFBZTVCLElBQUksQ0FBQ1UsV0FBVyxDQUFDIiwiZmlsZSI6ImNvbXBvbmVudHMvSW5wdXRBbW91bnQvSW5wdXRBbW91bnQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19yZXN0ID0gKHRoaXMgJiYgdGhpcy5fX3Jlc3QpIHx8IGZ1bmN0aW9uIChzLCBlKSB7XG4gICAgdmFyIHQgPSB7fTtcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcbiAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXG4gICAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XG4gICAgICAgIH1cbiAgICByZXR1cm4gdDtcbn07XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgbWVtbywgdXNlTWVtbywgdXNlU3RhdGUsIHVzZUNhbGxiYWNrLCB1c2VSZWYsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCB7IG51bWVyaWNGb3JtYXR0ZXIgfSBmcm9tICdyZWFjdC1udW1iZXItZm9ybWF0JztcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJy4uLy4uL3V0aWxzL2NsYXNzbmFtZXMnO1xuY29uc3QgTUlOX0lOUFVUX1dJRFRIID0gMzM7XG5leHBvcnQgY29uc3QgSW5wdXRBbW91bnQgPSBwcm9wcyA9PiB7XG4gICAgY29uc3QgeyB2YWx1ZSwgbWF4RnJhY3Rpb25EaWdpdHMsIGNoaWxkcmVuLCBjbGFzc05hbWUsIHdyYXBwZXJDbHMsIHByZWZpeENscyA9ICdpbnB1dC1hbW91bnQnLCBtZXNzYWdlQ2xzLCBmb290bm90ZUNscywgaW52YWxpZCwgcGxhY2Vob2xkZXIgPSAnMCcsIHByZWZpeCwgY3VycmVuY3ksIHN1ZmZpeCwgbWVzc2FnZSwgZm9vdG5vdGUsIG9uQ2hhbmdlLCBvbkJsdXIsIG9uRm9jdXMgfSA9IHByb3BzLCByZXN0ID0gX19yZXN0KHByb3BzLCBbXCJ2YWx1ZVwiLCBcIm1heEZyYWN0aW9uRGlnaXRzXCIsIFwiY2hpbGRyZW5cIiwgXCJjbGFzc05hbWVcIiwgXCJ3cmFwcGVyQ2xzXCIsIFwicHJlZml4Q2xzXCIsIFwibWVzc2FnZUNsc1wiLCBcImZvb3Rub3RlQ2xzXCIsIFwiaW52YWxpZFwiLCBcInBsYWNlaG9sZGVyXCIsIFwicHJlZml4XCIsIFwiY3VycmVuY3lcIiwgXCJzdWZmaXhcIiwgXCJtZXNzYWdlXCIsIFwiZm9vdG5vdGVcIiwgXCJvbkNoYW5nZVwiLCBcIm9uQmx1clwiLCBcIm9uRm9jdXNcIl0pO1xuICAgIGNvbnN0IGNsYXNzZXMgPSBjbGFzc25hbWVzKHByZWZpeENscyk7XG4gICAgY29uc3QgaW5wdXRSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgZmFrZUVsZVJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBwcmVmaXhSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3Qgc3VmZml4UmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGN1cnJlbmN5UmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGNvbnRhaW5lclJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBpbnB1dENhcmV0UG9zaXRpb25SZWYgPSB1c2VSZWYoMCk7XG4gICAgY29uc3QgW192YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW193aWR0aCwgc2V0V2lkdGhdID0gdXNlU3RhdGUoTUlOX0lOUFVUX1dJRFRIKTtcbiAgICBjb25zdCBbaXNNYXhXaWR0aCwgc2V0SXNNYXhXaWR0aF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW2lzRm9jdXMsIHNldElzRm9jdXNdID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IGZvcm1hdHRlZFZhbHVlID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIHJldHVybiBudW1lcmljRm9ybWF0dGVyKCcnICsgKF92YWx1ZSA9PSBudWxsID8gJycgOiBfdmFsdWUpLCB7XG4gICAgICAgICAgICB0aG91c2FuZFNlcGFyYXRvcjogdHJ1ZSxcbiAgICAgICAgICAgIGFsbG93TmVnYXRpdmU6IHRydWUsXG4gICAgICAgIH0pO1xuICAgIH0sIFtfdmFsdWVdKTtcbiAgICBjb25zdCBzY3JvbGxUb0VuZCA9IHVzZUNhbGxiYWNrKChzdGlja3kgPSBmYWxzZSkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gaW5wdXRSZWYuY3VycmVudDtcbiAgICAgICAgaWYgKCFpbnB1dClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgbGVuID0gKF9hID0gaW5wdXQudmFsdWUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5sZW5ndGg7XG4gICAgICAgIGNvbnN0IHBvc2l0aW9uID0gaW5wdXQuc2Nyb2xsTGVmdDtcbiAgICAgICAgY29uc3Qgc2hvdWxkVG9FbmQgPSAhIXBvc2l0aW9uIHx8ICFzdGlja3k7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gc2hvdWxkVG9FbmQgPyBsZW4gOiBpbnB1dENhcmV0UG9zaXRpb25SZWYuY3VycmVudDtcbiAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2Uoc3RhcnQsIHN0YXJ0KTtcbiAgICAgICAgaW5wdXQuc2Nyb2xsTGVmdCA9IHNob3VsZFRvRW5kID8gaW5wdXQuc2Nyb2xsV2lkdGggOiBwb3NpdGlvbjtcbiAgICAgICAgaW5wdXQuZm9jdXMoKTtcbiAgICB9LCBbXSk7XG4gICAgY29uc3QgaGFuZGxlQ2hhbmdlID0gdXNlQ2FsbGJhY2soKGUpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kLCBfZTtcbiAgICAgICAgbGV0IHZhbCA9IGUudGFyZ2V0LnZhbHVlO1xuICAgICAgICBpZiAodmFsICE9IG51bGwpXG4gICAgICAgICAgICB2YWwgPSB2YWwuc3BsaXQoJywnKS5qb2luKCcnKTtcbiAgICAgICAgY29uc3QgaGFzRGVjaW1hbFBvaW50ID0gdmFsLmxhc3RJbmRleE9mKCcuJykgPT09IHZhbC5sZW5ndGggLSAxO1xuICAgICAgICBpZiAoaGFzRGVjaW1hbFBvaW50KVxuICAgICAgICAgICAgdmFsID0gdmFsLnNsaWNlKDAsIC0xKTtcbiAgICAgICAgaWYgKGlzTmFOKCt2YWwpKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAodmFsID09PSBfdmFsdWUgJiYgIWhhc0RlY2ltYWxQb2ludClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaWYgKHR5cGVvZiBtYXhGcmFjdGlvbkRpZ2l0cyA9PT0gJ251bWJlcicgfHwgdHlwZW9mIG1heEZyYWN0aW9uRGlnaXRzID09PSAnYmlnaW50Jykge1xuICAgICAgICAgICAgY29uc3QgWywgZGVjaW1hbF0gPSB2YWwuc3BsaXQoJy4nKTtcbiAgICAgICAgICAgIGlmIChkZWNpbWFsICE9IG51bGwgJiYgZGVjaW1hbC5sZW5ndGggPiBOdW1iZXIobWF4RnJhY3Rpb25EaWdpdHMpKVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaW5wdXRSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkTmV3VmFsID0gbnVtZXJpY0Zvcm1hdHRlcih2YWwsIHtcbiAgICAgICAgICAgICAgICB0aG91c2FuZFNlcGFyYXRvcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICBhbGxvd05lZ2F0aXZlOiB0cnVlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCBpc0FkZCA9IHZhbC5sZW5ndGggPiAoKF9hID0gX3ZhbHVlID09PSBudWxsIHx8IF92YWx1ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3ZhbHVlLmxlbmd0aCkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogMCk7XG4gICAgICAgICAgICBsZXQgcG9zaXRpb24gPSAoX2IgPSBpbnB1dFJlZi5jdXJyZW50LnNlbGVjdGlvblN0YXJ0KSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAwO1xuICAgICAgICAgICAgY29uc3Qgb2xkUG9zVmFsID0gZm9ybWF0dGVkVmFsdWUuc2xpY2UoMCwgKHBvc2l0aW9uIC0gKGlzQWRkID8gMSA6IC0xKSkpO1xuICAgICAgICAgICAgcG9zaXRpb24gPSBvbGRQb3NWYWwuc3BsaXQoJywnKS5qb2luKCcnKS5sZW5ndGggKyAoaXNBZGQgPyAxIDogLTEpO1xuICAgICAgICAgICAgY29uc3QgcG9zVmFsID0gdmFsLnNsaWNlKDAsIHBvc2l0aW9uKTtcbiAgICAgICAgICAgIGZvcm1hdHRlZE5ld1ZhbC5zcGxpdCgnJykucmVkdWNlKChhY2MsIGNoYXIsIGluZCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChjaGFyID09PSAnLCcpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBhY2MucHVzaChjaGFyKTtcbiAgICAgICAgICAgICAgICBpZiAoYWNjLmpvaW4oJycpID09PSBwb3NWYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb24gPSBpbmQgKyAxO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICAgICAgaW5wdXRDYXJldFBvc2l0aW9uUmVmLmN1cnJlbnQgPSBwb3NpdGlvbiArIChoYXNEZWNpbWFsUG9pbnQgPyAyIDogMCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbCA9PT0gJycpIHtcbiAgICAgICAgICAgIHNldFZhbHVlKG51bGwpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgZGVjaW1hbHMgPSAoX2UgPSAoX2QgPSAoX2MgPSB2YWwubWF0Y2goL1xcLihcXGQrKSQvKSkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jWzFdKSA9PT0gbnVsbCB8fCBfZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2QubGVuZ3RoKSAhPT0gbnVsbCAmJiBfZSAhPT0gdm9pZCAwID8gX2UgOiAwO1xuICAgICAgICAgICAgc2V0VmFsdWUoYCR7QmlnTnVtYmVyKHZhbCkudG9GaXhlZChkZWNpbWFscyl9JHtoYXNEZWNpbWFsUG9pbnQgPyAnLicgOiAnJ31gLnRyaW0oKSk7XG4gICAgICAgIH1cbiAgICAgICAgb25DaGFuZ2UgPT09IG51bGwgfHwgb25DaGFuZ2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQ2hhbmdlKGUpO1xuICAgIH0sIFtvbkNoYW5nZSwgX3ZhbHVlLCBmb3JtYXR0ZWRWYWx1ZSwgbWF4RnJhY3Rpb25EaWdpdHNdKTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2QsIF9lLCBfZiwgX2csIF9oLCBfaiwgX2s7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lcldpZHRoID0gKF9iID0gKF9hID0gY29udGFpbmVyUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5vZmZzZXRXaWR0aCkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogTUlOX0lOUFVUX1dJRFRIO1xuICAgICAgICBjb25zdCBwcmVmaXhXaWR0aCA9IChfZCA9IChfYyA9IHByZWZpeFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Mub2Zmc2V0V2lkdGgpICE9PSBudWxsICYmIF9kICE9PSB2b2lkIDAgPyBfZCA6IDA7XG4gICAgICAgIGNvbnN0IHN1ZmZpeFdpZHRoID0gKF9mID0gKF9lID0gc3VmZml4UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9lID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZS5vZmZzZXRXaWR0aCkgIT09IG51bGwgJiYgX2YgIT09IHZvaWQgMCA/IF9mIDogMDtcbiAgICAgICAgY29uc3QgY3VycmVuY3lXaWR0aCA9IChfaCA9IChfZyA9IGN1cnJlbmN5UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9nID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZy5vZmZzZXRXaWR0aCkgIT09IG51bGwgJiYgX2ggIT09IHZvaWQgMCA/IF9oIDogMDtcbiAgICAgICAgY29uc3QgZmFrZVdpZHRoID0gKF9rID0gKF9qID0gZmFrZUVsZVJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfaiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2oub2Zmc2V0V2lkdGgpICE9PSBudWxsICYmIF9rICE9PSB2b2lkIDAgPyBfayA6IDA7XG4gICAgICAgIGNvbnN0IGdhcFdpZHRoID0gcHJlZml4V2lkdGggJiYgc3VmZml4V2lkdGggJiYgY3VycmVuY3lXaWR0aFxuICAgICAgICAgICAgPyAyNFxuICAgICAgICAgICAgOiAocHJlZml4V2lkdGggJiYgc3VmZml4V2lkdGgpIHx8IChwcmVmaXhXaWR0aCAmJiBjdXJyZW5jeVdpZHRoKSB8fCAoc3VmZml4V2lkdGggJiYgY3VycmVuY3lXaWR0aClcbiAgICAgICAgICAgICAgICA/IDE2XG4gICAgICAgICAgICAgICAgOiBwcmVmaXhXaWR0aCB8fCBzdWZmaXhXaWR0aCB8fCBjdXJyZW5jeVdpZHRoXG4gICAgICAgICAgICAgICAgICAgID8gOFxuICAgICAgICAgICAgICAgICAgICA6IDA7XG4gICAgICAgIGNvbnN0IG1heFdpZHRoID0gY29udGFpbmVyV2lkdGggLSBwcmVmaXhXaWR0aCAtIHN1ZmZpeFdpZHRoIC0gY3VycmVuY3lXaWR0aCAtIGdhcFdpZHRoO1xuICAgICAgICBjb25zdCBpc01heCA9IGZha2VXaWR0aCA+PSBtYXhXaWR0aDtcbiAgICAgICAgc2V0V2lkdGgoTWF0aC5taW4obWF4V2lkdGgsIE1hdGgubWF4KGZha2VXaWR0aCwgTUlOX0lOUFVUX1dJRFRIKSkpO1xuICAgICAgICBzZXRJc01heFdpZHRoKGlzTWF4KTtcbiAgICAgICAgc2Nyb2xsVG9FbmQodHJ1ZSk7XG4gICAgfSwgW192YWx1ZV0pO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGxldCB2YWwgPSB2YWx1ZTtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICB2YWwgPSB2YWwuc3BsaXQoJywnKS5qb2luKCcnKTtcbiAgICAgICAgICAgIGNvbnN0IGhhc0RlY2ltYWxQb2ludCA9IHZhbC5sYXN0SW5kZXhPZignLicpID09PSB2YWwubGVuZ3RoIC0gMTtcbiAgICAgICAgICAgIGlmIChoYXNEZWNpbWFsUG9pbnQpXG4gICAgICAgICAgICAgICAgdmFsID0gdmFsLnNsaWNlKDAsIC0xKTtcbiAgICAgICAgICAgIGlmIChpc05hTigrdmFsKSlcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodmFsICE9PSBudWxsICYmIHR5cGVvZiB2YWwgIT09ICdudW1iZXInICYmIHR5cGVvZiB2YWwgIT09ICdiaWdpbnQnKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBzZXRWYWx1ZSh2YWwgPT0gbnVsbCA/IG51bGwgOiBCaWdOdW1iZXIodmFsKS50b1N0cmluZygpKTtcbiAgICB9LCBbdmFsdWVdKTtcbiAgICByZXR1cm4gX2pzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ3dyYXBwZXInLCBbd3JhcHBlckNscywgaW52YWxpZCA/IGNsYXNzZXMoJ2ludmFsaWQnKSA6IHVuZGVmaW5lZF0uam9pbignICcpLnRyaW0oKSksIGNoaWxkcmVuOiBbX2pzeHMoXCJkaXZcIiwgeyByZWY6IGNvbnRhaW5lclJlZiwgY2xhc3NOYW1lOiBjbGFzc2VzKHZvaWQgMCwgW2NsYXNzTmFtZSwgaXNGb2N1cyA/IGNsYXNzZXMoJ2ZvY3VzJykgOiAnJ10uam9pbignICcpLnRyaW0oKSksIG9uQ2xpY2s6IChlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGUudGFyZ2V0IGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudClcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgKF9hID0gaW5wdXRSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc01heFdpZHRoKVxuICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsVG9FbmQoKTtcbiAgICAgICAgICAgICAgICB9LCBjaGlsZHJlbjogW3ByZWZpeCAmJiBfanN4KFwic3BhblwiLCB7IHJlZjogcHJlZml4UmVmLCBjbGFzc05hbWU6IGNsYXNzZXMoJ3ByZWZpeCcpLCBjaGlsZHJlbjogcHJlZml4IH0pLCBfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdlbGVtZW50JywgKCFpc0ZvY3VzICYmIGlzTWF4V2lkdGgpID8gY2xhc3NlcygnZWxlbWVudC1tYXgnKSA6ICcnKSwgY2hpbGRyZW46IF9qc3goXCJpbnB1dFwiLCBPYmplY3QuYXNzaWduKHt9LCByZXN0LCB7IHJlZjogaW5wdXRSZWYsIHZhbHVlOiBmb3JtYXR0ZWRWYWx1ZSwgcGxhY2Vob2xkZXI6IHBsYWNlaG9sZGVyLCBzdHlsZTogeyAnLS1pbnB1dC13aWR0aCc6IGAke193aWR0aH1weGAgfSwgb25DaGFuZ2U6IGhhbmRsZUNoYW5nZSwgb25Gb2N1czogZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldElzRm9jdXModHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRm9jdXMgPT09IG51bGwgfHwgb25Gb2N1cyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25Gb2N1cyhlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBvbkJsdXI6IGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJc0ZvY3VzKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyID09PSBudWxsIHx8IG9uQmx1ciA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25CbHVyKGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gfSkpIH0pLCBjdXJyZW5jeSAmJiBfanN4KFwic3BhblwiLCB7IHJlZjogY3VycmVuY3lSZWYsIGNsYXNzTmFtZTogY2xhc3NlcygnY3VycmVuY3knKSwgY2hpbGRyZW46IGN1cnJlbmN5IH0pLCBzdWZmaXggJiYgX2pzeChcInNwYW5cIiwgeyByZWY6IHN1ZmZpeFJlZiwgY2xhc3NOYW1lOiBjbGFzc2VzKCdzdWZmaXgnKSwgY2hpbGRyZW46IHN1ZmZpeCB9KSwgX2pzeChcInNwYW5cIiwgeyByZWY6IGZha2VFbGVSZWYsIGNsYXNzTmFtZTogY2xhc3NlcygnZmFrZScpLCBvbkNsaWNrOiBlID0+IGUuc3RvcFByb3BhZ2F0aW9uKCksIGNoaWxkcmVuOiBudW1lcmljRm9ybWF0dGVyKCcnICsgKF92YWx1ZSA9PSBudWxsID8gJycgOiBfdmFsdWUpLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhvdXNhbmRTZXBhcmF0b3I6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dOZWdhdGl2ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIH0pXSB9KSwgKG1lc3NhZ2UgfHwgZm9vdG5vdGUpICYmIF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdleHRyYScpLCBjaGlsZHJlbjogW21lc3NhZ2UgJiYgX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnbWVzc2FnZScsIG1lc3NhZ2VDbHMpLCBjaGlsZHJlbjogbWVzc2FnZSB9KSwgZm9vdG5vdGUgJiYgX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnZm9vdG5vdGUnLCBmb290bm90ZUNscyksIGNoaWxkcmVuOiBmb290bm90ZSB9KV0gfSldIH0pO1xufTtcbmV4cG9ydCBkZWZhdWx0IG1lbW8oSW5wdXRBbW91bnQpOyIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
@@ -2,6 +2,7 @@ import type { RefObject, ReactNode, MouseEvent, ChangeEvent, KeyboardEvent, Focu
2
2
  export interface InputAmountProps {
3
3
  ref?: RefObject<HTMLInputElement | null>;
4
4
  value?: string | number | bigint | null;
5
+ maxFractionDigits?: number | bigint;
5
6
  placeholder?: string;
6
7
  className?: string;
7
8
  prefixCls?: string;
@@ -22,6 +22,7 @@ var __rest = void 0 && (void 0).__rest || function (s, e) {
22
22
  var MIN_INPUT_WIDTH = 33;
23
23
  var InputAmount = exports.InputAmount = function InputAmount(props) {
24
24
  var value = props.value,
25
+ maxFractionDigits = props.maxFractionDigits,
25
26
  children = props.children,
26
27
  className = props.className,
27
28
  wrapperCls = props.wrapperCls,
@@ -40,7 +41,7 @@ var InputAmount = exports.InputAmount = function InputAmount(props) {
40
41
  onChange = props.onChange,
41
42
  _onBlur = props.onBlur,
42
43
  _onFocus = props.onFocus,
43
- rest = __rest(props, ["value", "children", "className", "wrapperCls", "prefixCls", "messageCls", "footnoteCls", "invalid", "placeholder", "prefix", "currency", "suffix", "message", "footnote", "onChange", "onBlur", "onFocus"]);
44
+ rest = __rest(props, ["value", "maxFractionDigits", "children", "className", "wrapperCls", "prefixCls", "messageCls", "footnoteCls", "invalid", "placeholder", "prefix", "currency", "suffix", "message", "footnote", "onChange", "onBlur", "onFocus"]);
44
45
  var classes = (0, _classnames["default"])(prefixCls);
45
46
  var inputRef = (0, _react.useRef)(null);
46
47
  var fakeEleRef = (0, _react.useRef)(null);
@@ -48,6 +49,7 @@ var InputAmount = exports.InputAmount = function InputAmount(props) {
48
49
  var suffixRef = (0, _react.useRef)(null);
49
50
  var currencyRef = (0, _react.useRef)(null);
50
51
  var containerRef = (0, _react.useRef)(null);
52
+ var inputCaretPositionRef = (0, _react.useRef)(0);
51
53
  var _useState = (0, _react.useState)(null),
52
54
  _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
53
55
  _value = _useState2[0],
@@ -71,23 +73,60 @@ var InputAmount = exports.InputAmount = function InputAmount(props) {
71
73
  });
72
74
  }, [_value]);
73
75
  var scrollToEnd = (0, _react.useCallback)(function () {
76
+ var sticky = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
74
77
  var _a;
75
78
  var input = inputRef.current;
76
79
  if (!input) return;
77
80
  var len = (_a = input.value) === null || _a === void 0 ? void 0 : _a.length;
78
- input.setSelectionRange(len, len);
79
- input.scrollLeft = input.scrollWidth;
81
+ var position = input.scrollLeft;
82
+ var shouldToEnd = !!position || !sticky;
83
+ var start = shouldToEnd ? len : inputCaretPositionRef.current;
84
+ input.setSelectionRange(start, start);
85
+ input.scrollLeft = shouldToEnd ? input.scrollWidth : position;
80
86
  input.focus();
81
87
  }, []);
82
88
  var handleChange = (0, _react.useCallback)(function (e) {
89
+ var _a, _b, _c, _d, _e;
83
90
  var val = e.target.value;
84
91
  if (val != null) val = val.split(',').join('');
85
92
  var hasDecimalPoint = val.lastIndexOf('.') === val.length - 1;
86
93
  if (hasDecimalPoint) val = val.slice(0, -1);
87
94
  if (isNaN(+val)) return;
88
- setValue(val === '' ? null : "".concat((0, _bignumber["default"])(val).toFixed()).concat(hasDecimalPoint ? '.' : '').trim());
95
+ if (val === _value && !hasDecimalPoint) return;
96
+ if (typeof maxFractionDigits === 'number' || typeof maxFractionDigits === 'bigint') {
97
+ var _val$split = val.split('.'),
98
+ _val$split2 = (0, _slicedToArray2["default"])(_val$split, 2),
99
+ decimal = _val$split2[1];
100
+ if (decimal != null && decimal.length > Number(maxFractionDigits)) return;
101
+ }
102
+ if (inputRef.current) {
103
+ var formattedNewVal = (0, _reactNumberFormat.numericFormatter)(val, {
104
+ thousandSeparator: true,
105
+ allowNegative: true
106
+ });
107
+ var isAdd = val.length > ((_a = _value === null || _value === void 0 ? void 0 : _value.length) !== null && _a !== void 0 ? _a : 0);
108
+ var position = (_b = inputRef.current.selectionStart) !== null && _b !== void 0 ? _b : 0;
109
+ var oldPosVal = formattedValue.slice(0, position - (isAdd ? 1 : -1));
110
+ position = oldPosVal.split(',').join('').length + (isAdd ? 1 : -1);
111
+ var posVal = val.slice(0, position);
112
+ formattedNewVal.split('').reduce(function (acc, _char, ind) {
113
+ if (_char === ',') return acc;else acc.push(_char);
114
+ if (acc.join('') === posVal) {
115
+ position = ind + 1;
116
+ return acc;
117
+ }
118
+ return acc;
119
+ }, []);
120
+ inputCaretPositionRef.current = position + (hasDecimalPoint ? 2 : 0);
121
+ }
122
+ if (val === '') {
123
+ setValue(null);
124
+ } else {
125
+ 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;
126
+ setValue("".concat((0, _bignumber["default"])(val).toFixed(decimals)).concat(hasDecimalPoint ? '.' : '').trim());
127
+ }
89
128
  onChange === null || onChange === void 0 ? void 0 : onChange(e);
90
- }, [onChange]);
129
+ }, [onChange, _value, formattedValue, maxFractionDigits]);
91
130
  (0, _react.useEffect)(function () {
92
131
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
93
132
  var containerWidth = (_b = (_a = containerRef.current) === null || _a === void 0 ? void 0 : _a.offsetWidth) !== null && _b !== void 0 ? _b : MIN_INPUT_WIDTH;
@@ -98,9 +137,9 @@ var InputAmount = exports.InputAmount = function InputAmount(props) {
98
137
  var gapWidth = prefixWidth && suffixWidth && currencyWidth ? 24 : prefixWidth && suffixWidth || prefixWidth && currencyWidth || suffixWidth && currencyWidth ? 16 : prefixWidth || suffixWidth || currencyWidth ? 8 : 0;
99
138
  var maxWidth = containerWidth - prefixWidth - suffixWidth - currencyWidth - gapWidth;
100
139
  var isMax = fakeWidth >= maxWidth;
101
- if (isMax) scrollToEnd();
102
140
  setWidth(Math.min(maxWidth, Math.max(fakeWidth, MIN_INPUT_WIDTH)));
103
141
  setIsMaxWidth(isMax);
142
+ scrollToEnd(true);
104
143
  }, [_value]);
105
144
  (0, _react.useEffect)(function () {
106
145
  var val = value;
@@ -178,4 +217,4 @@ var InputAmount = exports.InputAmount = function InputAmount(props) {
178
217
  });
179
218
  };
180
219
  var _default = exports["default"] = /*#__PURE__*/(0, _react.memo)(InputAmount);
181
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvSW5wdXRBbW91bnQvSW5wdXRBbW91bnQuanMiLCJjb21wb25lbnRzL3NyYy9jb21wb25lbnRzL0lucHV0QW1vdW50L0lucHV0QW1vdW50LnRzeCJdLCJuYW1lcyI6WyJfanN4UnVudGltZSIsInJlcXVpcmUiLCJfcmVhY3QiLCJfYmlnbnVtYmVyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9yZWFjdE51bWJlckZvcm1hdCIsIl9jbGFzc25hbWVzIiwiX19yZXN0IiwicyIsImUiLCJ0IiwicCIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImluZGV4T2YiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJpIiwibGVuZ3RoIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJNSU5fSU5QVVRfV0lEVEgiLCJJbnB1dEFtb3VudCIsImV4cG9ydHMiLCJwcm9wcyIsInZhbHVlIiwiY2hpbGRyZW4iLCJjbGFzc05hbWUiLCJ3cmFwcGVyQ2xzIiwiX3Byb3BzJHByZWZpeENscyIsInByZWZpeENscyIsIm1lc3NhZ2VDbHMiLCJmb290bm90ZUNscyIsImludmFsaWQiLCJfcHJvcHMkcGxhY2Vob2xkZXIiLCJwbGFjZWhvbGRlciIsInByZWZpeCIsImN1cnJlbmN5Iiwic3VmZml4IiwibWVzc2FnZSIsImZvb3Rub3RlIiwib25DaGFuZ2UiLCJvbkJsdXIiLCJvbkZvY3VzIiwicmVzdCIsImNsYXNzZXMiLCJjbGFzc25hbWVzIiwiaW5wdXRSZWYiLCJ1c2VSZWYiLCJmYWtlRWxlUmVmIiwicHJlZml4UmVmIiwic3VmZml4UmVmIiwiY3VycmVuY3lSZWYiLCJjb250YWluZXJSZWYiLCJfdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheTIiLCJfdmFsdWUiLCJzZXRWYWx1ZSIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiX3dpZHRoIiwic2V0V2lkdGgiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImlzTWF4V2lkdGgiLCJzZXRJc01heFdpZHRoIiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJpc0ZvY3VzIiwic2V0SXNGb2N1cyIsImZvcm1hdHRlZFZhbHVlIiwidXNlTWVtbyIsIm51bWVyaWNGb3JtYXR0ZXIiLCJ0aG91c2FuZFNlcGFyYXRvciIsImFsbG93TmVnYXRpdmUiLCJzY3JvbGxUb0VuZCIsInVzZUNhbGxiYWNrIiwiX2EiLCJpbnB1dCIsImN1cnJlbnQiLCJsZW4iLCJzZXRTZWxlY3Rpb25SYW5nZSIsInNjcm9sbExlZnQiLCJzY3JvbGxXaWR0aCIsImZvY3VzIiwiaGFuZGxlQ2hhbmdlIiwidmFsIiwidGFyZ2V0Iiwic3BsaXQiLCJqb2luIiwiaGFzRGVjaW1hbFBvaW50IiwibGFzdEluZGV4T2YiLCJzbGljZSIsImlzTmFOIiwiY29uY2F0IiwiQmlnTnVtYmVyIiwidG9GaXhlZCIsInRyaW0iLCJ1c2VFZmZlY3QiLCJfYiIsIl9jIiwiX2QiLCJfZSIsIl9mIiwiX2ciLCJfaCIsIl9qIiwiX2siLCJjb250YWluZXJXaWR0aCIsIm9mZnNldFdpZHRoIiwicHJlZml4V2lkdGgiLCJzdWZmaXhXaWR0aCIsImN1cnJlbmN5V2lkdGgiLCJmYWtlV2lkdGgiLCJnYXBXaWR0aCIsIm1heFdpZHRoIiwiaXNNYXgiLCJNYXRoIiwibWluIiwibWF4IiwidG9TdHJpbmciLCJfanN4cyIsInVuZGVmaW5lZCIsInJlZiIsIm9uQ2xpY2siLCJIVE1MSW5wdXRFbGVtZW50IiwiX2pzeCIsImFzc2lnbiIsInN0eWxlIiwic3RvcFByb3BhZ2F0aW9uIiwiX2RlZmF1bHQiLCJtZW1vIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQVdBLElBQUFBLFdBQUEsR0FBQUMsT0FBQTtBQ1hBLElBQUFDLE1BQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLFVBQUEsR0FBQUMsc0JBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFJLGtCQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxXQUFBLEdBQUFG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Q0FBQSxDQUMzRTtFQUFBLENBQUEsQ0FFSjtBQUNSLENBQUM7QUFBQyxJQUFBNEYsUUFBQSxHQUFBN0csT0FBQSwyQkFFYSxJQUFBOEcsV0FBSSxFQUFDL0csV0FBVyxDQUFDIiwiZmlsZSI6ImNvbXBvbmVudHMvSW5wdXRBbW91bnQvSW5wdXRBbW91bnQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19yZXN0ID0gKHRoaXMgJiYgdGhpcy5fX3Jlc3QpIHx8IGZ1bmN0aW9uIChzLCBlKSB7XG4gICAgdmFyIHQgPSB7fTtcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcbiAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXG4gICAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XG4gICAgICAgIH1cbiAgICByZXR1cm4gdDtcbn07XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgbWVtbywgdXNlTWVtbywgdXNlU3RhdGUsIHVzZUNhbGxiYWNrLCB1c2VSZWYsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCB7IG51bWVyaWNGb3JtYXR0ZXIgfSBmcm9tICdyZWFjdC1udW1iZXItZm9ybWF0JztcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJy4uLy4uL3V0aWxzL2NsYXNzbmFtZXMnO1xuY29uc3QgTUlOX0lOUFVUX1dJRFRIID0gMzM7XG5leHBvcnQgY29uc3QgSW5wdXRBbW91bnQgPSBwcm9wcyA9PiB7XG4gICAgY29uc3QgeyB2YWx1ZSwgY2hpbGRyZW4sIGNsYXNzTmFtZSwgd3JhcHBlckNscywgcHJlZml4Q2xzID0gJ2lucHV0LWFtb3VudCcsIG1lc3NhZ2VDbHMsIGZvb3Rub3RlQ2xzLCBpbnZhbGlkLCBwbGFjZWhvbGRlciA9ICcwJywgcHJlZml4LCBjdXJyZW5jeSwgc3VmZml4LCBtZXNzYWdlLCBmb290bm90ZSwgb25DaGFuZ2UsIG9uQmx1ciwgb25Gb2N1cyB9ID0gcHJvcHMsIHJlc3QgPSBfX3Jlc3QocHJvcHMsIFtcInZhbHVlXCIsIFwiY2hpbGRyZW5cIiwgXCJjbGFzc05hbWVcIiwgXCJ3cmFwcGVyQ2xzXCIsIFwicHJlZml4Q2xzXCIsIFwibWVzc2FnZUNsc1wiLCBcImZvb3Rub3RlQ2xzXCIsIFwiaW52YWxpZFwiLCBcInBsYWNlaG9sZGVyXCIsIFwicHJlZml4XCIsIFwiY3VycmVuY3lcIiwgXCJzdWZmaXhcIiwgXCJtZXNzYWdlXCIsIFwiZm9vdG5vdGVcIiwgXCJvbkNoYW5nZVwiLCBcIm9uQmx1clwiLCBcIm9uRm9jdXNcIl0pO1xuICAgIGNvbnN0IGNsYXNzZXMgPSBjbGFzc25hbWVzKHByZWZpeENscyk7XG4gICAgY29uc3QgaW5wdXRSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgZmFrZUVsZVJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBwcmVmaXhSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3Qgc3VmZml4UmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGN1cnJlbmN5UmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGNvbnRhaW5lclJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBbX3ZhbHVlLCBzZXRWYWx1ZV0gPSB1c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbX3dpZHRoLCBzZXRXaWR0aF0gPSB1c2VTdGF0ZShNSU5fSU5QVVRfV0lEVEgpO1xuICAgIGNvbnN0IFtpc01heFdpZHRoLCBzZXRJc01heFdpZHRoXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbaXNGb2N1cywgc2V0SXNGb2N1c10gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgZm9ybWF0dGVkVmFsdWUgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIG51bWVyaWNGb3JtYXR0ZXIoJycgKyAoX3ZhbHVlID09IG51bGwgPyAnJyA6IF92YWx1ZSksIHtcbiAgICAgICAgICAgIHRob3VzYW5kU2VwYXJhdG9yOiB0cnVlLFxuICAgICAgICAgICAgYWxsb3dOZWdhdGl2ZTogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgfSwgW192YWx1ZV0pO1xuICAgIGNvbnN0IHNjcm9sbFRvRW5kID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gaW5wdXRSZWYuY3VycmVudDtcbiAgICAgICAgaWYgKCFpbnB1dClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgbGVuID0gKF9hID0gaW5wdXQudmFsdWUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5sZW5ndGg7XG4gICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKGxlbiwgbGVuKTtcbiAgICAgICAgaW5wdXQuc2Nyb2xsTGVmdCA9IGlucHV0LnNjcm9sbFdpZHRoO1xuICAgICAgICBpbnB1dC5mb2N1cygpO1xuICAgIH0sIFtdKTtcbiAgICBjb25zdCBoYW5kbGVDaGFuZ2UgPSB1c2VDYWxsYmFjaygoZSkgPT4ge1xuICAgICAgICBsZXQgdmFsID0gZS50YXJnZXQudmFsdWU7XG4gICAgICAgIGlmICh2YWwgIT0gbnVsbClcbiAgICAgICAgICAgIHZhbCA9IHZhbC5zcGxpdCgnLCcpLmpvaW4oJycpO1xuICAgICAgICBjb25zdCBoYXNEZWNpbWFsUG9pbnQgPSB2YWwubGFzdEluZGV4T2YoJy4nKSA9PT0gdmFsLmxlbmd0aCAtIDE7XG4gICAgICAgIGlmIChoYXNEZWNpbWFsUG9pbnQpXG4gICAgICAgICAgICB2YWwgPSB2YWwuc2xpY2UoMCwgLTEpO1xuICAgICAgICBpZiAoaXNOYU4oK3ZhbCkpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHNldFZhbHVlKHZhbCA9PT0gJycgPyBudWxsIDogYCR7QmlnTnVtYmVyKHZhbCkudG9GaXhlZCgpfSR7aGFzRGVjaW1hbFBvaW50ID8gJy4nIDogJyd9YC50cmltKCkpO1xuICAgICAgICBvbkNoYW5nZSA9PT0gbnVsbCB8fCBvbkNoYW5nZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25DaGFuZ2UoZSk7XG4gICAgfSwgW29uQ2hhbmdlXSk7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kLCBfZSwgX2YsIF9nLCBfaCwgX2osIF9rO1xuICAgICAgICBjb25zdCBjb250YWluZXJXaWR0aCA9IChfYiA9IChfYSA9IGNvbnRhaW5lclJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Eub2Zmc2V0V2lkdGgpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IE1JTl9JTlBVVF9XSURUSDtcbiAgICAgICAgY29uc3QgcHJlZml4V2lkdGggPSAoX2QgPSAoX2MgPSBwcmVmaXhSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLm9mZnNldFdpZHRoKSAhPT0gbnVsbCAmJiBfZCAhPT0gdm9pZCAwID8gX2QgOiAwO1xuICAgICAgICBjb25zdCBzdWZmaXhXaWR0aCA9IChfZiA9IChfZSA9IHN1ZmZpeFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Uub2Zmc2V0V2lkdGgpICE9PSBudWxsICYmIF9mICE9PSB2b2lkIDAgPyBfZiA6IDA7XG4gICAgICAgIGNvbnN0IGN1cnJlbmN5V2lkdGggPSAoX2ggPSAoX2cgPSBjdXJyZW5jeVJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2cub2Zmc2V0V2lkdGgpICE9PSBudWxsICYmIF9oICE9PSB2b2lkIDAgPyBfaCA6IDA7XG4gICAgICAgIGNvbnN0IGZha2VXaWR0aCA9IChfayA9IChfaiA9IGZha2VFbGVSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2ogPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9qLm9mZnNldFdpZHRoKSAhPT0gbnVsbCAmJiBfayAhPT0gdm9pZCAwID8gX2sgOiAwO1xuICAgICAgICBjb25zdCBnYXBXaWR0aCA9IHByZWZpeFdpZHRoICYmIHN1ZmZpeFdpZHRoICYmIGN1cnJlbmN5V2lkdGhcbiAgICAgICAgICAgID8gMjRcbiAgICAgICAgICAgIDogKHByZWZpeFdpZHRoICYmIHN1ZmZpeFdpZHRoKSB8fCAocHJlZml4V2lkdGggJiYgY3VycmVuY3lXaWR0aCkgfHwgKHN1ZmZpeFdpZHRoICYmIGN1cnJlbmN5V2lkdGgpXG4gICAgICAgICAgICAgICAgPyAxNlxuICAgICAgICAgICAgICAgIDogcHJlZml4V2lkdGggfHwgc3VmZml4V2lkdGggfHwgY3VycmVuY3lXaWR0aFxuICAgICAgICAgICAgICAgICAgICA/IDhcbiAgICAgICAgICAgICAgICAgICAgOiAwO1xuICAgICAgICBjb25zdCBtYXhXaWR0aCA9IGNvbnRhaW5lcldpZHRoIC0gcHJlZml4V2lkdGggLSBzdWZmaXhXaWR0aCAtIGN1cnJlbmN5V2lkdGggLSBnYXBXaWR0aDtcbiAgICAgICAgY29uc3QgaXNNYXggPSBmYWtlV2lkdGggPj0gbWF4V2lkdGg7XG4gICAgICAgIGlmIChpc01heClcbiAgICAgICAgICAgIHNjcm9sbFRvRW5kKCk7XG4gICAgICAgIHNldFdpZHRoKE1hdGgubWluKG1heFdpZHRoLCBNYXRoLm1heChmYWtlV2lkdGgsIE1JTl9JTlBVVF9XSURUSCkpKTtcbiAgICAgICAgc2V0SXNNYXhXaWR0aChpc01heCk7XG4gICAgfSwgW192YWx1ZV0pO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGxldCB2YWwgPSB2YWx1ZTtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICB2YWwgPSB2YWwuc3BsaXQoJywnKS5qb2luKCcnKTtcbiAgICAgICAgICAgIGNvbnN0IGhhc0RlY2ltYWxQb2ludCA9IHZhbC5sYXN0SW5kZXhPZignLicpID09PSB2YWwubGVuZ3RoIC0gMTtcbiAgICAgICAgICAgIGlmIChoYXNEZWNpbWFsUG9pbnQpXG4gICAgICAgICAgICAgICAgdmFsID0gdmFsLnNsaWNlKDAsIC0xKTtcbiAgICAgICAgICAgIGlmIChpc05hTigrdmFsKSlcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodmFsICE9PSBudWxsICYmIHR5cGVvZiB2YWwgIT09ICdudW1iZXInICYmIHR5cGVvZiB2YWwgIT09ICdiaWdpbnQnKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBzZXRWYWx1ZSh2YWwgPT0gbnVsbCA/IG51bGwgOiBCaWdOdW1iZXIodmFsKS50b1N0cmluZygpKTtcbiAgICB9LCBbdmFsdWVdKTtcbiAgICByZXR1cm4gX2pzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ3dyYXBwZXInLCBbd3JhcHBlckNscywgaW52YWxpZCA/IGNsYXNzZXMoJ2ludmFsaWQnKSA6IHVuZGVmaW5lZF0uam9pbignICcpLnRyaW0oKSksIGNoaWxkcmVuOiBbX2pzeHMoXCJkaXZcIiwgeyByZWY6IGNvbnRhaW5lclJlZiwgY2xhc3NOYW1lOiBjbGFzc2VzKHZvaWQgMCwgW2NsYXNzTmFtZSwgaXNGb2N1cyA/IGNsYXNzZXMoJ2ZvY3VzJykgOiAnJ10uam9pbignICcpLnRyaW0oKSksIG9uQ2xpY2s6IChlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGUudGFyZ2V0IGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudClcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgKF9hID0gaW5wdXRSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc01heFdpZHRoKVxuICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsVG9FbmQoKTtcbiAgICAgICAgICAgICAgICB9LCBjaGlsZHJlbjogW3ByZWZpeCAmJiBfanN4KFwic3BhblwiLCB7IHJlZjogcHJlZml4UmVmLCBjbGFzc05hbWU6IGNsYXNzZXMoJ3ByZWZpeCcpLCBjaGlsZHJlbjogcHJlZml4IH0pLCBfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdlbGVtZW50JywgKCFpc0ZvY3VzICYmIGlzTWF4V2lkdGgpID8gY2xhc3NlcygnZWxlbWVudC1tYXgnKSA6ICcnKSwgY2hpbGRyZW46IF9qc3goXCJpbnB1dFwiLCBPYmplY3QuYXNzaWduKHt9LCByZXN0LCB7IHJlZjogaW5wdXRSZWYsIHZhbHVlOiBmb3JtYXR0ZWRWYWx1ZSwgcGxhY2Vob2xkZXI6IHBsYWNlaG9sZGVyLCBzdHlsZTogeyAnLS1pbnB1dC13aWR0aCc6IGAke193aWR0aH1weGAgfSwgb25DaGFuZ2U6IGhhbmRsZUNoYW5nZSwgb25Gb2N1czogZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldElzRm9jdXModHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRm9jdXMgPT09IG51bGwgfHwgb25Gb2N1cyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25Gb2N1cyhlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBvbkJsdXI6IGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJc0ZvY3VzKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyID09PSBudWxsIHx8IG9uQmx1ciA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25CbHVyKGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gfSkpIH0pLCBjdXJyZW5jeSAmJiBfanN4KFwic3BhblwiLCB7IHJlZjogY3VycmVuY3lSZWYsIGNsYXNzTmFtZTogY2xhc3NlcygnY3VycmVuY3knKSwgY2hpbGRyZW46IGN1cnJlbmN5IH0pLCBzdWZmaXggJiYgX2pzeChcInNwYW5cIiwgeyByZWY6IHN1ZmZpeFJlZiwgY2xhc3NOYW1lOiBjbGFzc2VzKCdzdWZmaXgnKSwgY2hpbGRyZW46IHN1ZmZpeCB9KSwgX2pzeChcInNwYW5cIiwgeyByZWY6IGZha2VFbGVSZWYsIGNsYXNzTmFtZTogY2xhc3NlcygnZmFrZScpLCBvbkNsaWNrOiBlID0+IGUuc3RvcFByb3BhZ2F0aW9uKCksIGNoaWxkcmVuOiBudW1lcmljRm9ybWF0dGVyKCcnICsgKF92YWx1ZSA9PSBudWxsID8gJycgOiBfdmFsdWUpLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhvdXNhbmRTZXBhcmF0b3I6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dOZWdhdGl2ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIH0pXSB9KSwgKG1lc3NhZ2UgfHwgZm9vdG5vdGUpICYmIF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdleHRyYScpLCBjaGlsZHJlbjogW21lc3NhZ2UgJiYgX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnbWVzc2FnZScsIG1lc3NhZ2VDbHMpLCBjaGlsZHJlbjogbWVzc2FnZSB9KSwgZm9vdG5vdGUgJiYgX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnZm9vdG5vdGUnLCBmb290bm90ZUNscyksIGNoaWxkcmVuOiBmb290bm90ZSB9KV0gfSldIH0pO1xufTtcbmV4cG9ydCBkZWZhdWx0IG1lbW8oSW5wdXRBbW91bnQpOyIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
220
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvSW5wdXRBbW91bnQvSW5wdXRBbW91bnQuanMiLCJjb21wb25lbnRzL3NyYy9jb21wb25lbnRzL0lucHV0QW1vdW50L0lucHV0QW1vdW50LnRzeCJdLCJuYW1lcyI6WyJfanN4UnVudGltZSIsInJlcXVpcmUiLCJfcmVhY3QiLCJfYmlnbnVtYmVyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9yZWFjdE51bWJlckZvcm1hdCIsIl9jbGFzc25hbWVzIiwiX19yZXN0IiwicyIsImUiLCJ0IiwicCIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImluZGV4T2YiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJpIiwibGVuZ3RoIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJNSU5fSU5QVVRfV0lEVEgiLCJJbnB1dEFtb3VudCIsImV4cG9ydHMiLCJwcm9wcyIsInZhbHVlIiwibWF4RnJhY3Rpb25EaWdpdHMiLCJjaGlsZHJlbiIsImNsYXNzTmFtZSIsIndyYXBwZXJDbHMiLCJfcHJvcHMkcHJlZml4Q2xzIiwicHJlZml4Q2xzIiwibWVzc2FnZUNscyIsImZvb3Rub3RlQ2xzIiwiaW52YWxpZCIsIl9wcm9wcyRwbGFjZWhvbGRlciIsInBsYWNlaG9sZGVyIiwicHJlZml4IiwiY3VycmVuY3kiLCJzdWZmaXgiLCJtZXNzYWdlIiwiZm9vdG5vdGUiLCJvbkNoYW5nZSIsIm9uQmx1ciIsIm9uRm9jdXMiLCJyZXN0IiwiY2xhc3NlcyIsImNsYXNzbmFtZXMiLCJpbnB1dFJlZiIsInVzZVJlZiIsImZha2VFbGVSZWYiLCJwcmVmaXhSZWYiLCJzdWZmaXhSZWYiLCJjdXJyZW5jeVJlZiIsImNvbnRhaW5lclJlZiIsImlucHV0Q2FyZXRQb3NpdGlvblJlZiIsIl91c2VTdGF0ZSIsInVzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5MiIsIl92YWx1ZSIsInNldFZhbHVlIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJfd2lkdGgiLCJzZXRXaWR0aCIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2IiwiaXNNYXhXaWR0aCIsInNldElzTWF4V2lkdGgiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsImlzRm9jdXMiLCJzZXRJc0ZvY3VzIiwiZm9ybWF0dGVkVmFsdWUiLCJ1c2VNZW1vIiwibnVtZXJpY0Zvcm1hdHRlciIsInRob3VzYW5kU2VwYXJhdG9yIiwiYWxsb3dOZWdhdGl2ZSIsInNjcm9sbFRvRW5kIiwidXNlQ2FsbGJhY2siLCJzdGlja3kiLCJhcmd1bWVudHMiLCJ1bmRlZmluZWQiLCJfYSIsImlucHV0IiwiY3VycmVudCIsImxlbiIsInBvc2l0aW9uIiwic2Nyb2xsTGVmdCIsInNob3VsZFRvRW5kIiwic3RhcnQiLCJzZXRTZWxlY3Rpb25SYW5nZSIsInNjcm9sbFdpZHRoIiwiZm9jdXMiLCJoYW5kbGVDaGFuZ2UiLCJfYiIsIl9jIiwiX2QiLCJfZSIsInZhbCIsInRhcmdldCIsInNwbGl0Iiwiam9pbiIsImhhc0RlY2ltYWxQb2ludCIsImxhc3RJbmRleE9mIiwic2xpY2UiLCJpc05hTiIsIl92YWwkc3BsaXQiLCJfdmFsJHNwbGl0MiIsImRlY2ltYWwiLCJOdW1iZXIiLCJmb3JtYXR0ZWROZXdWYWwiLCJpc0FkZCIsInNlbGVjdGlvblN0YXJ0Iiwib2xkUG9zVmFsIiwicG9zVmFsIiwicmVkdWNlIiwiYWNjIiwiY2hhciIsImluZCIsInB1c2giLCJkZWNpbWFscyIsIm1hdGNoIiwiY29uY2F0IiwiQmlnTnVtYmVyIiwidG9GaXhlZCIsInRyaW0iLCJ1c2VFZmZlY3QiLCJfZiIsIl9nIiwiX2giLCJfaiIsIl9rIiwiY29udGFpbmVyV2lkdGgiLCJvZmZzZXRXaWR0aCIsInByZWZpeFdpZHRoIiwic3VmZml4V2lkdGgiLCJjdXJyZW5jeVdpZHRoIiwiZmFrZVdpZHRoIiwiZ2FwV2lkdGgiLCJtYXhXaWR0aCIsImlzTWF4IiwiTWF0aCIsIm1pbiIsIm1heCIsInRvU3RyaW5nIiwiX2pzeHMiLCJyZWYiLCJvbkNsaWNrIiwiSFRNTElucHV0RWxlbWVudCIsIl9qc3giLCJhc3NpZ24iLCJzdHlsZSIsInN0b3BQcm9wYWdhdGlvbiIsIl9kZWZhdWx0IiwibWVtbyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFXQSxJQUFBQSxXQUFBLEdBQUFDLE9BQUE7QUNYQSxJQUFBQyxNQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxVQUFBLEdBQUFDLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBSSxrQkFBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssV0FBQSxHQUFBRixzQkFBQSxDQUFBSCxPQUFBO0FESEEsSUFBSU0sTUFBTSxHQUFJLFVBQVEsU0FBS0EsTUFBTSxJQUFLLFVBQVVDLENBQUMsRUFBRUMsQ0FBQyxFQUFFO0VBQ2xELElBQUlDLENBQUMsR0FBRyxDQUFDLENBQUM7RUFDVixLQUFLLElBQUlDLENBQUMsSUFBSUgsQ0FBQyxFQUFFLElBQUlJLE1BQU0sQ0FBQ0MsU0FBUyxDQUFDQyxjQUFjLENBQUNDLElBQUksQ0FBQ1AsQ0FBQyxFQUFFRyxDQUFDLENBQUMsSUFBSUYsQ0FBQyxDQUFDTyxPQUFPLENBQUNMLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFDL0VELENBQUMsQ0FBQ0MsQ0FBQyxDQUFDLEdBQUdILENBQUMsQ0FBQ0csQ0FBQyxDQUFDO0VBQ2YsSUFBSUgsQ0FBQyxJQUFJLElBQUksSUFBSSxPQUFPSSxNQUFNLENBQUNLLHFCQUFxQixLQUFLLFVBQVUsRUFDL0QsS0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBQyxFQUFFUCxDQUFDLEdBQUdDLE1BQU0sQ0FBQ0sscUJBQXFCLENBQUNULENBQUMsQ0FBQyxFQUFFVSxDQUFDLEdBQUdQLENBQUMsQ0FBQ1EsTUFBTSxFQUFFRCxDQUFDLEVBQUUsRUFBRTtJQUNwRSxJQUFJVCxDQUFDLENBQUNPLE9BQU8sQ0FBQ0wsQ0FBQyxDQUFDTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSU4sTUFBTSxDQUFDQyxTQUFTLENBQUNPLG9CQUFvQixD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RWEsSUFBQXFJLFdBQUksRUFBQ3RJLFdBQVcsQ0FBQyIsImZpbGUiOiJjb21wb25lbnRzL0lucHV0QW1vdW50L0lucHV0QW1vdW50LmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fcmVzdCA9ICh0aGlzICYmIHRoaXMuX19yZXN0KSB8fCBmdW5jdGlvbiAocywgZSkge1xuICAgIHZhciB0ID0ge307XG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXG4gICAgICAgIHRbcF0gPSBzW3BdO1xuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xuICAgICAgICB9XG4gICAgcmV0dXJuIHQ7XG59O1xuaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IG1lbW8sIHVzZU1lbW8sIHVzZVN0YXRlLCB1c2VDYWxsYmFjaywgdXNlUmVmLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgQmlnTnVtYmVyIGZyb20gJ2JpZ251bWJlci5qcyc7XG5pbXBvcnQgeyBudW1lcmljRm9ybWF0dGVyIH0gZnJvbSAncmVhY3QtbnVtYmVyLWZvcm1hdCc7XG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tICcuLi8uLi91dGlscy9jbGFzc25hbWVzJztcbmNvbnN0IE1JTl9JTlBVVF9XSURUSCA9IDMzO1xuZXhwb3J0IGNvbnN0IElucHV0QW1vdW50ID0gcHJvcHMgPT4ge1xuICAgIGNvbnN0IHsgdmFsdWUsIG1heEZyYWN0aW9uRGlnaXRzLCBjaGlsZHJlbiwgY2xhc3NOYW1lLCB3cmFwcGVyQ2xzLCBwcmVmaXhDbHMgPSAnaW5wdXQtYW1vdW50JywgbWVzc2FnZUNscywgZm9vdG5vdGVDbHMsIGludmFsaWQsIHBsYWNlaG9sZGVyID0gJzAnLCBwcmVmaXgsIGN1cnJlbmN5LCBzdWZmaXgsIG1lc3NhZ2UsIGZvb3Rub3RlLCBvbkNoYW5nZSwgb25CbHVyLCBvbkZvY3VzIH0gPSBwcm9wcywgcmVzdCA9IF9fcmVzdChwcm9wcywgW1widmFsdWVcIiwgXCJtYXhGcmFjdGlvbkRpZ2l0c1wiLCBcImNoaWxkcmVuXCIsIFwiY2xhc3NOYW1lXCIsIFwid3JhcHBlckNsc1wiLCBcInByZWZpeENsc1wiLCBcIm1lc3NhZ2VDbHNcIiwgXCJmb290bm90ZUNsc1wiLCBcImludmFsaWRcIiwgXCJwbGFjZWhvbGRlclwiLCBcInByZWZpeFwiLCBcImN1cnJlbmN5XCIsIFwic3VmZml4XCIsIFwibWVzc2FnZVwiLCBcImZvb3Rub3RlXCIsIFwib25DaGFuZ2VcIiwgXCJvbkJsdXJcIiwgXCJvbkZvY3VzXCJdKTtcbiAgICBjb25zdCBjbGFzc2VzID0gY2xhc3NuYW1lcyhwcmVmaXhDbHMpO1xuICAgIGNvbnN0IGlucHV0UmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGZha2VFbGVSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgcHJlZml4UmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IHN1ZmZpeFJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBjdXJyZW5jeVJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBjb250YWluZXJSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgaW5wdXRDYXJldFBvc2l0aW9uUmVmID0gdXNlUmVmKDApO1xuICAgIGNvbnN0IFtfdmFsdWUsIHNldFZhbHVlXSA9IHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFtfd2lkdGgsIHNldFdpZHRoXSA9IHVzZVN0YXRlKE1JTl9JTlBVVF9XSURUSCk7XG4gICAgY29uc3QgW2lzTWF4V2lkdGgsIHNldElzTWF4V2lkdGhdID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFtpc0ZvY3VzLCBzZXRJc0ZvY3VzXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBmb3JtYXR0ZWRWYWx1ZSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICByZXR1cm4gbnVtZXJpY0Zvcm1hdHRlcignJyArIChfdmFsdWUgPT0gbnVsbCA/ICcnIDogX3ZhbHVlKSwge1xuICAgICAgICAgICAgdGhvdXNhbmRTZXBhcmF0b3I6IHRydWUsXG4gICAgICAgICAgICBhbGxvd05lZ2F0aXZlOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICB9LCBbX3ZhbHVlXSk7XG4gICAgY29uc3Qgc2Nyb2xsVG9FbmQgPSB1c2VDYWxsYmFjaygoc3RpY2t5ID0gZmFsc2UpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBjb25zdCBpbnB1dCA9IGlucHV0UmVmLmN1cnJlbnQ7XG4gICAgICAgIGlmICghaW5wdXQpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IGxlbiA9IChfYSA9IGlucHV0LnZhbHVlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubGVuZ3RoO1xuICAgICAgICBjb25zdCBwb3NpdGlvbiA9IGlucHV0LnNjcm9sbExlZnQ7XG4gICAgICAgIGNvbnN0IHNob3VsZFRvRW5kID0gISFwb3NpdGlvbiB8fCAhc3RpY2t5O1xuICAgICAgICBjb25zdCBzdGFydCA9IHNob3VsZFRvRW5kID8gbGVuIDogaW5wdXRDYXJldFBvc2l0aW9uUmVmLmN1cnJlbnQ7XG4gICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKHN0YXJ0LCBzdGFydCk7XG4gICAgICAgIGlucHV0LnNjcm9sbExlZnQgPSBzaG91bGRUb0VuZCA/IGlucHV0LnNjcm9sbFdpZHRoIDogcG9zaXRpb247XG4gICAgICAgIGlucHV0LmZvY3VzKCk7XG4gICAgfSwgW10pO1xuICAgIGNvbnN0IGhhbmRsZUNoYW5nZSA9IHVzZUNhbGxiYWNrKChlKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jLCBfZCwgX2U7XG4gICAgICAgIGxldCB2YWwgPSBlLnRhcmdldC52YWx1ZTtcbiAgICAgICAgaWYgKHZhbCAhPSBudWxsKVxuICAgICAgICAgICAgdmFsID0gdmFsLnNwbGl0KCcsJykuam9pbignJyk7XG4gICAgICAgIGNvbnN0IGhhc0RlY2ltYWxQb2ludCA9IHZhbC5sYXN0SW5kZXhPZignLicpID09PSB2YWwubGVuZ3RoIC0gMTtcbiAgICAgICAgaWYgKGhhc0RlY2ltYWxQb2ludClcbiAgICAgICAgICAgIHZhbCA9IHZhbC5zbGljZSgwLCAtMSk7XG4gICAgICAgIGlmIChpc05hTigrdmFsKSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaWYgKHZhbCA9PT0gX3ZhbHVlICYmICFoYXNEZWNpbWFsUG9pbnQpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmICh0eXBlb2YgbWF4RnJhY3Rpb25EaWdpdHMgPT09ICdudW1iZXInIHx8IHR5cGVvZiBtYXhGcmFjdGlvbkRpZ2l0cyA9PT0gJ2JpZ2ludCcpIHtcbiAgICAgICAgICAgIGNvbnN0IFssIGRlY2ltYWxdID0gdmFsLnNwbGl0KCcuJyk7XG4gICAgICAgICAgICBpZiAoZGVjaW1hbCAhPSBudWxsICYmIGRlY2ltYWwubGVuZ3RoID4gTnVtYmVyKG1heEZyYWN0aW9uRGlnaXRzKSlcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlucHV0UmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZE5ld1ZhbCA9IG51bWVyaWNGb3JtYXR0ZXIodmFsLCB7XG4gICAgICAgICAgICAgICAgdGhvdXNhbmRTZXBhcmF0b3I6IHRydWUsXG4gICAgICAgICAgICAgICAgYWxsb3dOZWdhdGl2ZTogdHJ1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3QgaXNBZGQgPSB2YWwubGVuZ3RoID4gKChfYSA9IF92YWx1ZSA9PT0gbnVsbCB8fCBfdmFsdWUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF92YWx1ZS5sZW5ndGgpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IDApO1xuICAgICAgICAgICAgbGV0IHBvc2l0aW9uID0gKF9iID0gaW5wdXRSZWYuY3VycmVudC5zZWxlY3Rpb25TdGFydCkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogMDtcbiAgICAgICAgICAgIGNvbnN0IG9sZFBvc1ZhbCA9IGZvcm1hdHRlZFZhbHVlLnNsaWNlKDAsIChwb3NpdGlvbiAtIChpc0FkZCA/IDEgOiAtMSkpKTtcbiAgICAgICAgICAgIHBvc2l0aW9uID0gb2xkUG9zVmFsLnNwbGl0KCcsJykuam9pbignJykubGVuZ3RoICsgKGlzQWRkID8gMSA6IC0xKTtcbiAgICAgICAgICAgIGNvbnN0IHBvc1ZhbCA9IHZhbC5zbGljZSgwLCBwb3NpdGlvbik7XG4gICAgICAgICAgICBmb3JtYXR0ZWROZXdWYWwuc3BsaXQoJycpLnJlZHVjZSgoYWNjLCBjaGFyLCBpbmQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoY2hhciA9PT0gJywnKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgYWNjLnB1c2goY2hhcik7XG4gICAgICAgICAgICAgICAgaWYgKGFjYy5qb2luKCcnKSA9PT0gcG9zVmFsKSB7XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uID0gaW5kICsgMTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICAgIH0sIFtdKTtcbiAgICAgICAgICAgIGlucHV0Q2FyZXRQb3NpdGlvblJlZi5jdXJyZW50ID0gcG9zaXRpb24gKyAoaGFzRGVjaW1hbFBvaW50ID8gMiA6IDApO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YWwgPT09ICcnKSB7XG4gICAgICAgICAgICBzZXRWYWx1ZShudWxsKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGRlY2ltYWxzID0gKF9lID0gKF9kID0gKF9jID0gdmFsLm1hdGNoKC9cXC4oXFxkKykkLykpID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfY1sxXSkgPT09IG51bGwgfHwgX2QgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kLmxlbmd0aCkgIT09IG51bGwgJiYgX2UgIT09IHZvaWQgMCA/IF9lIDogMDtcbiAgICAgICAgICAgIHNldFZhbHVlKGAke0JpZ051bWJlcih2YWwpLnRvRml4ZWQoZGVjaW1hbHMpfSR7aGFzRGVjaW1hbFBvaW50ID8gJy4nIDogJyd9YC50cmltKCkpO1xuICAgICAgICB9XG4gICAgICAgIG9uQ2hhbmdlID09PSBudWxsIHx8IG9uQ2hhbmdlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNoYW5nZShlKTtcbiAgICB9LCBbb25DaGFuZ2UsIF92YWx1ZSwgZm9ybWF0dGVkVmFsdWUsIG1heEZyYWN0aW9uRGlnaXRzXSk7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kLCBfZSwgX2YsIF9nLCBfaCwgX2osIF9rO1xuICAgICAgICBjb25zdCBjb250YWluZXJXaWR0aCA9IChfYiA9IChfYSA9IGNvbnRhaW5lclJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Eub2Zmc2V0V2lkdGgpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IE1JTl9JTlBVVF9XSURUSDtcbiAgICAgICAgY29uc3QgcHJlZml4V2lkdGggPSAoX2QgPSAoX2MgPSBwcmVmaXhSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLm9mZnNldFdpZHRoKSAhPT0gbnVsbCAmJiBfZCAhPT0gdm9pZCAwID8gX2QgOiAwO1xuICAgICAgICBjb25zdCBzdWZmaXhXaWR0aCA9IChfZiA9IChfZSA9IHN1ZmZpeFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Uub2Zmc2V0V2lkdGgpICE9PSBudWxsICYmIF9mICE9PSB2b2lkIDAgPyBfZiA6IDA7XG4gICAgICAgIGNvbnN0IGN1cnJlbmN5V2lkdGggPSAoX2ggPSAoX2cgPSBjdXJyZW5jeVJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2cub2Zmc2V0V2lkdGgpICE9PSBudWxsICYmIF9oICE9PSB2b2lkIDAgPyBfaCA6IDA7XG4gICAgICAgIGNvbnN0IGZha2VXaWR0aCA9IChfayA9IChfaiA9IGZha2VFbGVSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2ogPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9qLm9mZnNldFdpZHRoKSAhPT0gbnVsbCAmJiBfayAhPT0gdm9pZCAwID8gX2sgOiAwO1xuICAgICAgICBjb25zdCBnYXBXaWR0aCA9IHByZWZpeFdpZHRoICYmIHN1ZmZpeFdpZHRoICYmIGN1cnJlbmN5V2lkdGhcbiAgICAgICAgICAgID8gMjRcbiAgICAgICAgICAgIDogKHByZWZpeFdpZHRoICYmIHN1ZmZpeFdpZHRoKSB8fCAocHJlZml4V2lkdGggJiYgY3VycmVuY3lXaWR0aCkgfHwgKHN1ZmZpeFdpZHRoICYmIGN1cnJlbmN5V2lkdGgpXG4gICAgICAgICAgICAgICAgPyAxNlxuICAgICAgICAgICAgICAgIDogcHJlZml4V2lkdGggfHwgc3VmZml4V2lkdGggfHwgY3VycmVuY3lXaWR0aFxuICAgICAgICAgICAgICAgICAgICA/IDhcbiAgICAgICAgICAgICAgICAgICAgOiAwO1xuICAgICAgICBjb25zdCBtYXhXaWR0aCA9IGNvbnRhaW5lcldpZHRoIC0gcHJlZml4V2lkdGggLSBzdWZmaXhXaWR0aCAtIGN1cnJlbmN5V2lkdGggLSBnYXBXaWR0aDtcbiAgICAgICAgY29uc3QgaXNNYXggPSBmYWtlV2lkdGggPj0gbWF4V2lkdGg7XG4gICAgICAgIHNldFdpZHRoKE1hdGgubWluKG1heFdpZHRoLCBNYXRoLm1heChmYWtlV2lkdGgsIE1JTl9JTlBVVF9XSURUSCkpKTtcbiAgICAgICAgc2V0SXNNYXhXaWR0aChpc01heCk7XG4gICAgICAgIHNjcm9sbFRvRW5kKHRydWUpO1xuICAgIH0sIFtfdmFsdWVdKTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBsZXQgdmFsID0gdmFsdWU7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgdmFsID0gdmFsLnNwbGl0KCcsJykuam9pbignJyk7XG4gICAgICAgICAgICBjb25zdCBoYXNEZWNpbWFsUG9pbnQgPSB2YWwubGFzdEluZGV4T2YoJy4nKSA9PT0gdmFsLmxlbmd0aCAtIDE7XG4gICAgICAgICAgICBpZiAoaGFzRGVjaW1hbFBvaW50KVxuICAgICAgICAgICAgICAgIHZhbCA9IHZhbC5zbGljZSgwLCAtMSk7XG4gICAgICAgICAgICBpZiAoaXNOYU4oK3ZhbCkpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHZhbCAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsICE9PSAnbnVtYmVyJyAmJiB0eXBlb2YgdmFsICE9PSAnYmlnaW50JylcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgc2V0VmFsdWUodmFsID09IG51bGwgPyBudWxsIDogQmlnTnVtYmVyKHZhbCkudG9TdHJpbmcoKSk7XG4gICAgfSwgW3ZhbHVlXSk7XG4gICAgcmV0dXJuIF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCd3cmFwcGVyJywgW3dyYXBwZXJDbHMsIGludmFsaWQgPyBjbGFzc2VzKCdpbnZhbGlkJykgOiB1bmRlZmluZWRdLmpvaW4oJyAnKS50cmltKCkpLCBjaGlsZHJlbjogW19qc3hzKFwiZGl2XCIsIHsgcmVmOiBjb250YWluZXJSZWYsIGNsYXNzTmFtZTogY2xhc3Nlcyh2b2lkIDAsIFtjbGFzc05hbWUsIGlzRm9jdXMgPyBjbGFzc2VzKCdmb2N1cycpIDogJyddLmpvaW4oJyAnKS50cmltKCkpLCBvbkNsaWNrOiAoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlLnRhcmdldCBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIChfYSA9IGlucHV0UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5mb2N1cygpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNNYXhXaWR0aClcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbFRvRW5kKCk7XG4gICAgICAgICAgICAgICAgfSwgY2hpbGRyZW46IFtwcmVmaXggJiYgX2pzeChcInNwYW5cIiwgeyByZWY6IHByZWZpeFJlZiwgY2xhc3NOYW1lOiBjbGFzc2VzKCdwcmVmaXgnKSwgY2hpbGRyZW46IHByZWZpeCB9KSwgX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnZWxlbWVudCcsICghaXNGb2N1cyAmJiBpc01heFdpZHRoKSA/IGNsYXNzZXMoJ2VsZW1lbnQtbWF4JykgOiAnJyksIGNoaWxkcmVuOiBfanN4KFwiaW5wdXRcIiwgT2JqZWN0LmFzc2lnbih7fSwgcmVzdCwgeyByZWY6IGlucHV0UmVmLCB2YWx1ZTogZm9ybWF0dGVkVmFsdWUsIHBsYWNlaG9sZGVyOiBwbGFjZWhvbGRlciwgc3R5bGU6IHsgJy0taW5wdXQtd2lkdGgnOiBgJHtfd2lkdGh9cHhgIH0sIG9uQ2hhbmdlOiBoYW5kbGVDaGFuZ2UsIG9uRm9jdXM6IGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJc0ZvY3VzKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkZvY3VzID09PSBudWxsIHx8IG9uRm9jdXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uRm9jdXMoZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgb25CbHVyOiBlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXNGb2N1cyhmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1ciA9PT0gbnVsbCB8fCBvbkJsdXIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQmx1cihlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IH0pKSB9KSwgY3VycmVuY3kgJiYgX2pzeChcInNwYW5cIiwgeyByZWY6IGN1cnJlbmN5UmVmLCBjbGFzc05hbWU6IGNsYXNzZXMoJ2N1cnJlbmN5JyksIGNoaWxkcmVuOiBjdXJyZW5jeSB9KSwgc3VmZml4ICYmIF9qc3goXCJzcGFuXCIsIHsgcmVmOiBzdWZmaXhSZWYsIGNsYXNzTmFtZTogY2xhc3Nlcygnc3VmZml4JyksIGNoaWxkcmVuOiBzdWZmaXggfSksIF9qc3goXCJzcGFuXCIsIHsgcmVmOiBmYWtlRWxlUmVmLCBjbGFzc05hbWU6IGNsYXNzZXMoJ2Zha2UnKSwgb25DbGljazogZSA9PiBlLnN0b3BQcm9wYWdhdGlvbigpLCBjaGlsZHJlbjogbnVtZXJpY0Zvcm1hdHRlcignJyArIChfdmFsdWUgPT0gbnVsbCA/ICcnIDogX3ZhbHVlKSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRob3VzYW5kU2VwYXJhdG9yOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93TmVnYXRpdmU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSB9KV0gfSksIChtZXNzYWdlIHx8IGZvb3Rub3RlKSAmJiBfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnZXh0cmEnKSwgY2hpbGRyZW46IFttZXNzYWdlICYmIF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ21lc3NhZ2UnLCBtZXNzYWdlQ2xzKSwgY2hpbGRyZW46IG1lc3NhZ2UgfSksIGZvb3Rub3RlICYmIF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2Zvb3Rub3RlJywgZm9vdG5vdGVDbHMpLCBjaGlsZHJlbjogZm9vdG5vdGUgfSldIH0pXSB9KTtcbn07XG5leHBvcnQgZGVmYXVsdCBtZW1vKElucHV0QW1vdW50KTsiLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
@@ -2,6 +2,7 @@ import type { RefObject, ReactNode, MouseEvent, ChangeEvent, KeyboardEvent, Focu
2
2
  export interface InputAmountProps {
3
3
  ref?: RefObject<HTMLInputElement | null>;
4
4
  value?: string | number | bigint | null;
5
+ maxFractionDigits?: number | bigint;
5
6
  placeholder?: string;
6
7
  className?: string;
7
8
  prefixCls?: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@1money/react-ui",
3
- "version": "1.7.6",
3
+ "version": "1.7.7",
4
4
  "description": "React Components based on primereact for 1money front-end projects",
5
5
  "main": "lib/index.js",
6
6
  "module": "es/index.js",