@1money/react-ui 1.14.0 → 1.14.1-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -93,6 +93,7 @@ var InputAmount = exports.InputAmount = function InputAmount(props) {
93
93
  var containerRef = (0, _react.useRef)(null);
94
94
  var inputCaretPositionRef = (0, _react.useRef)(0);
95
95
  var ignoreSelectRef = (0, _react.useRef)(false);
96
+ var onChangeRef = (0, _react.useRef)(onChange);
96
97
  var _useState = (0, _react.useState)(null),
97
98
  _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
98
99
  _value = _useState2[0],
@@ -152,14 +153,13 @@ var InputAmount = exports.InputAmount = function InputAmount(props) {
152
153
  });
153
154
  var originOffset = val.length - ((_a = _value2 === null || _value2 === void 0 ? void 0 : _value2.length) !== null && _a !== void 0 ? _a : 0);
154
155
  var isAdd = originOffset > 0;
155
- var directionOffset = isAdd ? 1 : -1;
156
156
  var ignoreOldPos = isAdd ? val.length - ((_b = _value2 === null || _value2 === void 0 ? void 0 : _value2.length) !== null && _b !== void 0 ? _b : 0) > 1 : false;
157
157
  var position = (_c = currPos !== null && currPos !== void 0 ? currPos : inputRef.current.selectionEnd) !== null && _c !== void 0 ? _c : 0;
158
158
  if (!ignoreOldPos) {
159
159
  var oldPosVal = _formattedValue.slice(0, Math.max(position, 0));
160
160
  position = oldPosVal.split(',').join('').length;
161
161
  }
162
- var posVal = val.slice(0, position + directionOffset);
162
+ var posVal = val.slice(0, position + originOffset);
163
163
  formattedNewVal.split('').reduce(function (acc, _char, ind) {
164
164
  if (_char === ',') return acc;else acc.push(_char);
165
165
  if (acc.join('') === posVal) {
@@ -168,13 +168,11 @@ var InputAmount = exports.InputAmount = function InputAmount(props) {
168
168
  }
169
169
  return acc;
170
170
  }, []);
171
- var formatOffset = formattedNewVal.length - _formattedValue.length;
172
- var isPasteBehavior = !_value2 && originOffset > 1;
173
- inputCaretPositionRef.current = position + offset + (isPasteBehavior ? formatOffset : 0);
171
+ inputCaretPositionRef.current = position + offset;
174
172
  }
175
173
  }, []);
176
174
  var handleChange = (0, _react.useCallback)(function (e) {
177
- var _a, _b, _c;
175
+ var _a, _b, _c, _d;
178
176
  if (disabled || readOnly) return;
179
177
  var _valueRef$current2 = valueRef.current,
180
178
  value = _valueRef$current2.value,
@@ -199,11 +197,12 @@ var InputAmount = exports.InputAmount = function InputAmount(props) {
199
197
  decimal = _val$split2[1];
200
198
  var maxDecimals = Number(maxFractionDigits);
201
199
  if (decimal != null && decimal.length > maxDecimals) {
200
+ var truncatedDecimals = decimal.slice(0, maxDecimals);
202
201
  var _formattedValue$split = formattedValue.split('.'),
203
202
  _formattedValue$split2 = (0, _slicedToArray2["default"])(_formattedValue$split, 1),
204
203
  oldInt = _formattedValue$split2[0];
205
204
  if (oldInt.split(',').join('') == _int) return;
206
- val = "".concat(_int, ".").concat(decimal.slice(0, maxDecimals));
205
+ val = "".concat(_int, ".").concat(truncatedDecimals);
207
206
  }
208
207
  }
209
208
  if (typeof min === 'number' || typeof min === 'bigint' || typeof max === 'number' || typeof max === 'bigint') {
@@ -227,11 +226,11 @@ var InputAmount = exports.InputAmount = function InputAmount(props) {
227
226
  calcCaretPos(val, hasDecimalPoint ? 2 : 0, Math.max(inputCaretPositionRef.current, 0));
228
227
  ignoreSelectRef.current = true;
229
228
  } else {
230
- e.stopPropagation();
231
229
  e.preventDefault();
230
+ e.stopPropagation();
232
231
  }
233
- onChange === null || onChange === void 0 ? void 0 : onChange(e, val);
234
- }, [onChange, disabled, readOnly]);
232
+ (_d = onChangeRef.current) === null || _d === void 0 ? void 0 : _d.call(onChangeRef, e, val);
233
+ }, [disabled, readOnly]);
235
234
  var handleSelect = (0, _react.useCallback)(function () {
236
235
  var _a;
237
236
  if (ignoreSelectRef.current) {
@@ -256,10 +255,9 @@ var InputAmount = exports.InputAmount = function InputAmount(props) {
256
255
  if (isFocus) scrollToEnd(true);
257
256
  }, [_value, prefix, suffix, currency, isFocus]);
258
257
  (0, _react.useLayoutEffect)(function () {
259
- var _a, _b, _c;
260
- var val = value;
258
+ var _a, _b, _c, _d;
259
+ var val = typeof value === 'undefined' ? _value : value;
261
260
  var hasDecimalPoint = false;
262
- var formattedValue = valueRef.current.formattedValue;
263
261
  var isStandaloneMinus = false;
264
262
  if (typeof val === 'string') {
265
263
  if (val === '') {
@@ -288,11 +286,17 @@ var InputAmount = exports.InputAmount = function InputAmount(props) {
288
286
  decimal = _split2[1];
289
287
  var maxDecimals = Number(maxFractionDigits);
290
288
  if (decimal != null && decimal.length > maxDecimals) {
291
- var _formattedValue$split3 = formattedValue.split('.'),
292
- _formattedValue$split4 = (0, _slicedToArray2["default"])(_formattedValue$split3, 1),
293
- oldInt = _formattedValue$split4[0];
294
- if (oldInt.split(',').join('') == _int2) return;
295
- val = "".concat(_int2, ".").concat(decimal.slice(0, maxDecimals));
289
+ var truncatedDecimals = decimal.slice(0, maxDecimals);
290
+ val = "".concat(_int2, ".").concat(truncatedDecimals);
291
+ if (typeof value === 'undefined') {
292
+ setValue(val);
293
+ } else {
294
+ // @ts-expect-error
295
+ (_a = onChangeRef.current) === null || _a === void 0 ? void 0 : _a.call(onChangeRef, {
296
+ target: inputRef.current
297
+ }, val !== null && val !== void 0 ? val : '');
298
+ }
299
+ return;
296
300
  }
297
301
  }
298
302
  if (typeof val === 'string' || typeof val === 'number' || typeof val === 'bigint') {
@@ -305,7 +309,7 @@ var InputAmount = exports.InputAmount = function InputAmount(props) {
305
309
  val = '-';
306
310
  } else {
307
311
  var strVal = '' + val;
308
- var decimals = (_c = (_b = (_a = strVal.match(/\.(\d+)$/)) === null || _a === void 0 ? void 0 : _a[1]) === null || _b === void 0 ? void 0 : _b.length) !== null && _c !== void 0 ? _c : 0;
312
+ var decimals = (_d = (_c = (_b = strVal.match(/\.(\d+)$/)) === null || _b === void 0 ? void 0 : _b[1]) === null || _c === void 0 ? void 0 : _c.length) !== null && _d !== void 0 ? _d : 0;
309
313
  var bn = (0, _bignumber["default"])(strVal);
310
314
  var normalized = bn.toFixed(decimals);
311
315
  if (negative && strVal.trim().startsWith('-') && bn.isZero()) {
@@ -319,6 +323,7 @@ var InputAmount = exports.InputAmount = function InputAmount(props) {
319
323
  ignoreSelectRef.current = true;
320
324
  }, [value, maxFractionDigits, min, max, negative]);
321
325
  (0, _react.useEffect)(function () {
326
+ onChangeRef.current = onChange;
322
327
  valueRef.current = {
323
328
  value: value,
324
329
  _value: _value,
@@ -328,7 +333,7 @@ var InputAmount = exports.InputAmount = function InputAmount(props) {
328
333
  negative: negative,
329
334
  maxFractionDigits: maxFractionDigits
330
335
  };
331
- }, [_value, value, formattedValue, min, max, negative, maxFractionDigits]);
336
+ }, [_value, value, formattedValue, min, max, negative, maxFractionDigits, onChange]);
332
337
  return (0, _jsxRuntime.jsxs)("div", {
333
338
  className: classes('wrapper', (0, _classnames.joinCls)(wrapperCls, classes(size), invalid && classes('invalid'), success && classes('success'), disabled && classes('disabled'), readOnly && classes('readonly'), _value && classes('filled'))),
334
339
  children: [label ? loading ? (0, _jsxRuntime.jsx)(_skeleton.Skeleton, {
@@ -405,4 +410,4 @@ var InputAmount = exports.InputAmount = function InputAmount(props) {
405
410
  });
406
411
  };
407
412
  var _default = exports["default"] = /*#__PURE__*/(0, _react.memo)(InputAmount);
408
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvSW5wdXRBbW91bnQvSW5wdXRBbW91bnQuanMiLCJjb21wb25lbnRzL3NyYy9jb21wb25lbnRzL0lucHV0QW1vdW50L0lucHV0QW1vdW50LnRzeCJdLCJuYW1lcyI6WyJfanN4UnVudGltZSIsInJlcXVpcmUiLCJfcmVhY3QiLCJfYmlnbnVtYmVyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9yZWFjdE51bWJlckZvcm1hdCIsIl9za2VsZXRvbiIsIl9TcGlubmVyIiwiX2NsYXNzbmFtZXMiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIl9fcmVzdCIsInMiLCJwIiwicHJvdG90eXBlIiwiaW5kZXhPZiIsImdldE93blByb3BlcnR5U3ltYm9scyIsImxlbmd0aCIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwiTUlOX0lOUFVUX1dJRFRIIiwibm9ybWFsaXplTnVtYmVySW5wdXQiLCJ2YWwiLCJyZXBsYWNlIiwiY2FsY1ZhbHVlSW5SYW5nZSIsIm1pbiIsIm1heCIsImlzTmFOIiwiY2FsY1ZhbCIsImJuVmFsIiwiQmlnTnVtYmVyIiwibWluQm4iLCJsdCIsIm1heEJuIiwiZ3QiLCJJbnB1dEFtb3VudCIsImV4cG9ydHMiLCJwcm9wcyIsInZhbHVlIiwiX3Byb3BzJHR5cGUiLCJ0eXBlIiwibWF4RnJhY3Rpb25EaWdpdHMiLCJjaGlsZHJlbiIsIl9wcm9wcyRwbGFjZWhvbGRlciIsInBsYWNlaG9sZGVyIiwiX3Byb3BzJHNpemUiLCJzaXplIiwiZm9vdG5vdGUiLCJmb290bm90ZUNscyIsImNsYXNzTmFtZSIsIndyYXBwZXJDbHMiLCJsYWJlbENscyIsIl9wcm9wcyRwcmVmaXhDbHMiLCJwcmVmaXhDbHMiLCJtZXNzYWdlQ2xzIiwicHJlZml4RWxlQ2xzIiwic3VmZml4RWxlQ2xzIiwiaW52YWxpZCIsIm5lZ2F0aXZlIiwicmVxdWlyZWQiLCJsb2FkaW5nIiwic3VjY2VzcyIsImRpc2FibGVkIiwicmVhZE9ubHkiLCJsYWJlbCIsInByZWZpeCIsInN1ZmZpeCIsImN1cnJlbmN5IiwibWVzc2FnZSIsIm9uQ2hhbmdlIiwib25CbHVyIiwib25Gb2N1cyIsInJlc3QiLCJjbGFzc2VzIiwiY2xhc3NuYW1lcyIsImNvbmNhdCIsImlucHV0UmVmIiwidXNlUmVmIiwiZmFrZUVsZVJlZiIsInByZWZpeFJlZiIsInN1ZmZpeFJlZiIsImN1cnJlbmN5UmVmIiwiY29udGFpbmVyUmVmIiwiaW5wdXRDYXJldFBvc2l0aW9uUmVmIiwiaWdub3JlU2VsZWN0UmVmIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkyIiwiX3ZhbHVlIiwic2V0VmFsdWUiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsIl93aWR0aCIsInNldFdpZHRoIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJpc01heFdpZHRoIiwic2V0SXNNYXhXaWR0aCIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwiaXNGb2N1cyIsInNldElzRm9jdXMiLCJmb3JtYXR0ZWRWYWx1ZSIsInVzZU1lbW8iLCJudW1lcmljRm9ybWF0dGVyIiwidGhvdXNhbmRTZXBhcmF0b3IiLCJhbGxvd05lZ2F0aXZlIiwidmFsdWVSZWYiLCJzY3JvbGxUb0VuZCIsInVzZUNhbGxiYWNrIiwic3RpY2t5IiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwiX2EiLCJpbnB1dCIsImN1cnJlbnQiLCJsZW4iLCJwb3NpdGlvbiIsInNjcm9sbExlZnQiLCJzaG91bGRUb0VuZCIsInN0YXJ0Iiwic2V0U2VsZWN0aW9uUmFuZ2UiLCJzY3JvbGxXaWR0aCIsImZvY3VzIiwiY2FsY0NhcmV0UG9zIiwib2Zmc2V0IiwiY3VyclBvcyIsIl9iIiwiX2MiLCJfdmFsdWVSZWYkY3VycmVudCIsImZvcm1hdHRlZE5ld1ZhbCIsIm9yaWdpbk9mZnNldCIsImlzQWRkIiwiZGlyZWN0aW9uT2Zmc2V0IiwiaWdub3JlT2xkUG9zIiwic2VsZWN0aW9uRW5kIiwib2xkUG9zVmFsIiwic2xpY2UiLCJNYXRoIiwic3BsaXQiLCJqb2luIiwicG9zVmFsIiwicmVkdWNlIiwiYWNjIiwiY2hhciIsImluZCIsInB1c2giLCJmb3JtYXRPZmZzZXQiLCJpc1Bhc3RlQmVoYXZpb3IiLCJoYW5kbGVDaGFuZ2UiLCJfdmFsdWVSZWYkY3VycmVudDIiLCJ0YXJnZXQiLCJoYXNEZWNpbWFsUG9pbnQiLCJlbmRzV2l0aCIsImluY2x1ZGVzIiwiaXNTdGFuZGFsb25lTWludXMiLCJfdmFsJHNwbGl0IiwiX3ZhbCRzcGxpdDIiLCJpbnQiLCJkZWNpbWFsIiwibWF4RGVjaW1hbHMiLCJOdW1iZXIiLCJfZm9ybWF0dGVkVmFsdWUkc3BsaXQiLCJfZm9ybWF0dGVkVmFsdWUkc3BsaXQyIiwib2xkSW50IiwiZGVjaW1hbHMiLCJtYXRjaCIsImJuIiwibm9ybWFsaXplZCIsInRvRml4ZWQiLCJ0cmltIiwic3RhcnRzV2l0aCIsImlzWmVybyIsInN0b3BQcm9wYWdhdGlvbiIsInByZXZlbnREZWZhdWx0IiwiaGFuZGxlU2VsZWN0IiwidXNlTGF5b3V0RWZmZWN0IiwiX2QiLCJfZSIsIl9mIiwiX2ciLCJfaCIsIl9qIiwiX2siLCJjb250YWluZXJXaWR0aCIsIm9mZnNldFdpZHRoIiwicHJlZml4V2lkdGgiLCJzdWZmaXhXaWR0aCIsImN1cnJlbmN5V2lkdGgiLCJmYWtlV2lkdGgiLCJnYXBXaWR0aCIsIm1heFdpZHRoIiwiaXNNYXgiLCJhYnMiLCJ6ZXJvIiwiQmlnSW50IiwiX3NwbGl0IiwiX3NwbGl0MiIsIl9mb3JtYXR0ZWRWYWx1ZSRzcGxpdDMiLCJfZm9ybWF0dGVkVmFsdWUkc3BsaXQ0Iiwic3RyVmFsIiwidXNlRWZmZWN0IiwiX2pzeHMiLCJqb2luQ2xzIiwiX2pzeCIsIlNrZWxldG9uIiwid2lkdGgiLCJoZWlnaHQiLCJyZWYiLCJvbkNsaWNrIiwiSFRNTElucHV0RWxlbWVudCIsImFzc2lnbiIsInN0eWxlIiwib25TZWxlY3QiLCJTcGlubmVyIiwic3Ryb2tlV2lkdGgiLCJfZGVmYXVsdCIsIm1lbW8iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQVdBLElBQUFBLFdBQUEsR0FBQUMsT0FBQTtBQ1hBLElBQUFDLE1BQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLFVBQUEsR0FBQUMsc0JBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFJLGtCQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxTQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxRQUFBLEdBQUFILHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBTyxXQUFBLEdBQUFDLHVCQUFBLENBQUFSLE9BQUE7QUFBd0UsU0FBQVMseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEseUJBQUFDLENBQUEsV0FBQUEsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsS0FBQUYsQ0FBQTtBQUFBLFNBQUFGLHdCQUFBRSxDQUFBLEVBQUFFLENBQUEsU0FBQUEsQ0FBQSxJQUFBRixDQUFBLElBQUFBLENBQUEsQ0FBQUksVUFBQSxTQUFBSixDQUFBLGVBQUFBLENBQUEsZ0JBQUFLLE9BQUEsQ0FBQUwsQ0FBQSwwQkFBQUEsQ0FBQSxzQkFBQUEsQ0FBQSxRQUFBRyxDQUFBLEdBQUFKLHdCQUFBLENBQUFHLENBQUEsT0FBQUMsQ0FBQSxJQUFBQSxDQUFBLENBQUFHLEdBQUEsQ0FBQU4sQ0FBQSxVQUFBRyxDQUFBLENBQUFJLEdBQUEsQ0FBQVAsQ0FBQSxPQUFBUSxDQUFBLEtBQUFDLFNBQUEsVUFBQUMsQ0FBQSxHQUFBQyxNQUFBLENBQUFD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U0FBUyxFQUFFd0IsT0FBTyxDQUFDLE1BQU0sQ0FBQztRQUMxQnlJLE9BQU8sRUFBRSxTQUFUQSxPQUFPQSxDQUFFek4sQ0FBQztVQUFBLE9BQUlBLENBQUMsQ0FBQ3FMLGVBQWUsQ0FBQSxDQUFFO1FBQUE7UUFBQXBJLFFBQUEsRUFFaEM2RDtNQUFjLENBQUEsQ0FDVjtJQUFBLENBQUEsQ0FDSCxFQUVKLENBQUNuQyxPQUFPLElBQUlyQixRQUFRLEtBQUssSUFBQTRKLGdCQUFBLEVBQUEsS0FBQSxFQUFBO01BQUsxSixTQUFTLEVBQUV3QixPQUFPLENBQUMsT0FBTyxDQUFDO01BQUEvQixRQUFBLEVBQUEsQ0FDdEQwQixPQUFPLElBQUksSUFBQXlJLGVBQUEsRUFBQSxLQUFBLEVBQUE7UUFBSzVKLFNBQVMsRUFBRXdCLE9BQU8sQ0FBQyxTQUFTLEVBQUVuQixVQUFVLENBQUM7UUFBQVosUUFBQSxFQUFHMEI7TUFBTyxDQUFBLENBQU8sRUFDMUVyQixRQUFRLElBQUksSUFBQThKLGVBQUEsRUFBQSxLQUFBLEVBQUE7UUFBSzVKLFNBQVMsRUFBRXdCLE9BQU8sQ0FBQyxVQUFVLEVBQUV6QixXQUFXLENBQUM7UUFBQU4sUUFBQSxFQUFHSztNQUFRLENBQUEsQ0FBTztJQUFBLENBQUEsQ0FDM0U7RUFBQSxDQUFBLENBRUo7QUFDUixDQUFDO0FBQUMsSUFBQTBLLFFBQUEsR0FBQXJMLE9BQUEsMkJBRWEsSUFBQXNMLFdBQUksRUFBQ3ZMLFdBQVcsQ0FBQyIsImZpbGUiOiJjb21wb25lbnRzL0lucHV0QW1vdW50L0lucHV0QW1vdW50LmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fcmVzdCA9ICh0aGlzICYmIHRoaXMuX19yZXN0KSB8fCBmdW5jdGlvbiAocywgZSkge1xuICAgIHZhciB0ID0ge307XG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXG4gICAgICAgIHRbcF0gPSBzW3BdO1xuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xuICAgICAgICB9XG4gICAgcmV0dXJuIHQ7XG59O1xuaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IG1lbW8sIHVzZU1lbW8sIHVzZVN0YXRlLCB1c2VDYWxsYmFjaywgdXNlUmVmLCB1c2VFZmZlY3QsIHVzZUxheW91dEVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCB7IG51bWVyaWNGb3JtYXR0ZXIgfSBmcm9tICdyZWFjdC1udW1iZXItZm9ybWF0JztcbmltcG9ydCB7IFNrZWxldG9uIH0gZnJvbSAncHJpbWVyZWFjdC9za2VsZXRvbic7XG5pbXBvcnQgU3Bpbm5lciBmcm9tICcuLi9TcGlubmVyJztcbmltcG9ydCB7IGRlZmF1bHQgYXMgY2xhc3NuYW1lcywgam9pbkNscyB9IGZyb20gJy4uLy4uL3V0aWxzL2NsYXNzbmFtZXMnO1xuY29uc3QgTUlOX0lOUFVUX1dJRFRIID0gMzM7XG5jb25zdCBub3JtYWxpemVOdW1iZXJJbnB1dCA9ICh2YWwpID0+IHZhbFxuICAgIC5yZXBsYWNlKC9bXFx1MzAwMlxcdWZmMGVcXHVmZjYxXS9nLCAnLicpXG4gICAgLnJlcGxhY2UoL1tcXHVGRjBDXS9nLCAnLCcpO1xuY29uc3QgY2FsY1ZhbHVlSW5SYW5nZSA9ICh2YWwsIG1pbiwgbWF4KSA9PiB7XG4gICAgaWYgKHZhbCA9PT0gJycgfHwgdmFsID09PSAnLScgfHwgaXNOYU4oK3ZhbCkpXG4gICAgICAgIHJldHVybiB2YWw7XG4gICAgbGV0IGNhbGNWYWwgPSB2YWw7XG4gICAgY29uc3QgYm5WYWwgPSBCaWdOdW1iZXIodmFsKTtcbiAgICBpZiAodHlwZW9mIG1pbiA9PT0gJ251bWJlcicgfHwgdHlwZW9mIG1pbiA9PT0gJ2JpZ2ludCcpIHtcbiAgICAgICAgY29uc3QgbWluQm4gPSBCaWdOdW1iZXIobWluKTtcbiAgICAgICAgaWYgKGJuVmFsLmx0KG1pbkJuKSkge1xuICAgICAgICAgICAgY2FsY1ZhbCA9ICcnICsgbWluO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmICh0eXBlb2YgbWF4ID09PSAnbnVtYmVyJyB8fCB0eXBlb2YgbWF4ID09PSAnYmlnaW50Jykge1xuICAgICAgICBjb25zdCBtYXhCbiA9IEJpZ051bWJlcihtYXgpO1xuICAgICAgICBpZiAoYm5WYWwuZ3QobWF4Qm4pKSB7XG4gICAgICAgICAgICBjYWxjVmFsID0gJycgKyBtYXg7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNhbGNWYWw7XG59O1xuZXhwb3J0IGNvbnN0IElucHV0QW1vdW50ID0gcHJvcHMgPT4ge1xuICAgIGNvbnN0IHsgdmFsdWUsIHR5cGUgPSAncHJpbWFyeScsIG1heEZyYWN0aW9uRGlnaXRzLCBjaGlsZHJlbiwgcGxhY2Vob2xkZXIgPSAnMCcsIG1pbiwgbWF4LCBcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgc2l6ZSA9ICdsYXJnZScsIGZvb3Rub3RlLCBmb290bm90ZUNscywgY2xhc3NOYW1lLCB3cmFwcGVyQ2xzLCBsYWJlbENscywgcHJlZml4Q2xzID0gJ2lucHV0LWFtb3VudCcsIG1lc3NhZ2VDbHMsIHByZWZpeEVsZUNscywgc3VmZml4RWxlQ2xzLCBpbnZhbGlkLCBuZWdhdGl2ZSwgcmVxdWlyZWQsIGxvYWRpbmcsIHN1Y2Nlc3MsIGRpc2FibGVkLCByZWFkT25seSwgbGFiZWwsIHByZWZpeCwgc3VmZml4LCBjdXJyZW5jeSwgbWVzc2FnZSwgb25DaGFuZ2UsIG9uQmx1ciwgb25Gb2N1cyB9ID0gcHJvcHMsIHJlc3QgPSBfX3Jlc3QocHJvcHMsIFtcInZhbHVlXCIsIFwidHlwZVwiLCBcIm1heEZyYWN0aW9uRGlnaXRzXCIsIFwiY2hpbGRyZW5cIiwgXCJwbGFjZWhvbGRlclwiLCBcIm1pblwiLCBcIm1heFwiLCBcInNpemVcIiwgXCJmb290bm90ZVwiLCBcImZvb3Rub3RlQ2xzXCIsIFwiY2xhc3NOYW1lXCIsIFwid3JhcHBlckNsc1wiLCBcImxhYmVsQ2xzXCIsIFwicHJlZml4Q2xzXCIsIFwibWVzc2FnZUNsc1wiLCBcInByZWZpeEVsZUNsc1wiLCBcInN1ZmZpeEVsZUNsc1wiLCBcImludmFsaWRcIiwgXCJuZWdhdGl2ZVwiLCBcInJlcXVpcmVkXCIsIFwibG9hZGluZ1wiLCBcInN1Y2Nlc3NcIiwgXCJkaXNhYmxlZFwiLCBcInJlYWRPbmx5XCIsIFwibGFiZWxcIiwgXCJwcmVmaXhcIiwgXCJzdWZmaXhcIiwgXCJjdXJyZW5jeVwiLCBcIm1lc3NhZ2VcIiwgXCJvbkNoYW5nZVwiLCBcIm9uQmx1clwiLCBcIm9uRm9jdXNcIl0pO1xuICAgIGNvbnN0IGNsYXNzZXMgPSBjbGFzc25hbWVzKGAke3ByZWZpeENsc30tJHt0eXBlfWApO1xuICAgIGNvbnN0IGlucHV0UmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGZha2VFbGVSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgcHJlZml4UmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IHN1ZmZpeFJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBjdXJyZW5jeVJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBjb250YWluZXJSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgaW5wdXRDYXJldFBvc2l0aW9uUmVmID0gdXNlUmVmKDApO1xuICAgIGNvbnN0IGlnbm9yZVNlbGVjdFJlZiA9IHVzZVJlZihmYWxzZSk7XG4gICAgY29uc3QgW192YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW193aWR0aCwgc2V0V2lkdGhdID0gdXNlU3RhdGUoTUlOX0lOUFVUX1dJRFRIKTtcbiAgICBjb25zdCBbaXNNYXhXaWR0aCwgc2V0SXNNYXhXaWR0aF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW2lzRm9jdXMsIHNldElzRm9jdXNdID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IGZvcm1hdHRlZFZhbHVlID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIHJldHVybiBudW1lcmljRm9ybWF0dGVyKCcnICsgKF92YWx1ZSA9PSBudWxsID8gJycgOiBfdmFsdWUpLCB7XG4gICAgICAgICAgICB0aG91c2FuZFNlcGFyYXRvcjogdHJ1ZSxcbiAgICAgICAgICAgIGFsbG93TmVnYXRpdmU6IG5lZ2F0aXZlLFxuICAgICAgICB9KTtcbiAgICB9LCBbX3ZhbHVlLCBuZWdhdGl2ZV0pO1xuICAgIGNvbnN0IHZhbHVlUmVmID0gdXNlUmVmKHtcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIF92YWx1ZSxcbiAgICAgICAgZm9ybWF0dGVkVmFsdWUsXG4gICAgICAgIG1pbixcbiAgICAgICAgbWF4LFxuICAgICAgICBuZWdhdGl2ZSxcbiAgICAgICAgbWF4RnJhY3Rpb25EaWdpdHMsXG4gICAgfSk7XG4gICAgY29uc3Qgc2Nyb2xsVG9FbmQgPSB1c2VDYWxsYmFjaygoc3RpY2t5ID0gZmFsc2UpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBjb25zdCBpbnB1dCA9IGlucHV0UmVmLmN1cnJlbnQ7XG4gICAgICAgIGlmICghaW5wdXQpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IGxlbiA9IChfYSA9IGlucHV0LnZhbHVlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubGVuZ3RoO1xuICAgICAgICBjb25zdCBwb3NpdGlvbiA9IGlucHV0LnNjcm9sbExlZnQ7XG4gICAgICAgIGNvbnN0IHNob3VsZFRvRW5kID0gIXN0aWNreTtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBzaG91bGRUb0VuZCA/IGxlbiA6IGlucHV0Q2FyZXRQb3NpdGlvblJlZi5jdXJyZW50O1xuICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZShzdGFydCwgc3RhcnQpO1xuICAgICAgICBpbnB1dC5zY3JvbGxMZWZ0ID0gc2hvdWxkVG9FbmQgPyBpbnB1dC5zY3JvbGxXaWR0aCA6IHBvc2l0aW9uO1xuICAgICAgICBpbnB1dC5mb2N1cygpO1xuICAgIH0sIFtdKTtcbiAgICBjb25zdCBjYWxjQ2FyZXRQb3MgPSB1c2VDYWxsYmFjaygodmFsLCBvZmZzZXQgPSAwLCBjdXJyUG9zKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jO1xuICAgICAgICBpZiAoaW5wdXRSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgY29uc3QgeyBfdmFsdWUsIG5lZ2F0aXZlLCBmb3JtYXR0ZWRWYWx1ZSB9ID0gdmFsdWVSZWYuY3VycmVudDtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZE5ld1ZhbCA9IG51bWVyaWNGb3JtYXR0ZXIodmFsLCB7XG4gICAgICAgICAgICAgICAgdGhvdXNhbmRTZXBhcmF0b3I6IHRydWUsXG4gICAgICAgICAgICAgICAgYWxsb3dOZWdhdGl2ZTogbmVnYXRpdmUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbk9mZnNldCA9IHZhbC5sZW5ndGggLSAoKF9hID0gX3ZhbHVlID09PSBudWxsIHx8IF92YWx1ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3ZhbHVlLmxlbmd0aCkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogMCk7XG4gICAgICAgICAgICBjb25zdCBpc0FkZCA9IG9yaWdpbk9mZnNldCA+IDA7XG4gICAgICAgICAgICBjb25zdCBkaXJlY3Rpb25PZmZzZXQgPSBpc0FkZCA/IDEgOiAtMTtcbiAgICAgICAgICAgIGNvbnN0IGlnbm9yZU9sZFBvcyA9IGlzQWRkID8gdmFsLmxlbmd0aCAtICgoX2IgPSBfdmFsdWUgPT09IG51bGwgfHwgX3ZhbHVlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdmFsdWUubGVuZ3RoKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAwKSA+IDEgOiBmYWxzZTtcbiAgICAgICAgICAgIGxldCBwb3NpdGlvbiA9IChfYyA9IGN1cnJQb3MgIT09IG51bGwgJiYgY3VyclBvcyAhPT0gdm9pZCAwID8gY3VyclBvcyA6IGlucHV0UmVmLmN1cnJlbnQuc2VsZWN0aW9uRW5kKSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiAwO1xuICAgICAgICAgICAgaWYgKCFpZ25vcmVPbGRQb3MpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBvbGRQb3NWYWwgPSBmb3JtYXR0ZWRWYWx1ZS5zbGljZSgwLCBNYXRoLm1heChwb3NpdGlvbiwgMCkpO1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uID0gb2xkUG9zVmFsLnNwbGl0KCcsJykuam9pbignJykubGVuZ3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgcG9zVmFsID0gdmFsLnNsaWNlKDAsIChwb3NpdGlvbiArIGRpcmVjdGlvbk9mZnNldCkpO1xuICAgICAgICAgICAgZm9ybWF0dGVkTmV3VmFsLnNwbGl0KCcnKS5yZWR1Y2UoKGFjYywgY2hhciwgaW5kKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGNoYXIgPT09ICcsJylcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGFjYy5wdXNoKGNoYXIpO1xuICAgICAgICAgICAgICAgIGlmIChhY2Muam9pbignJykgPT09IHBvc1ZhbCkge1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IGluZCArIDE7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICB9LCBbXSk7XG4gICAgICAgICAgICBjb25zdCBmb3JtYXRPZmZzZXQgPSBmb3JtYXR0ZWROZXdWYWwubGVuZ3RoIC0gZm9ybWF0dGVkVmFsdWUubGVuZ3RoO1xuICAgICAgICAgICAgY29uc3QgaXNQYXN0ZUJlaGF2aW9yID0gIV92YWx1ZSAmJiBvcmlnaW5PZmZzZXQgPiAxO1xuICAgICAgICAgICAgaW5wdXRDYXJldFBvc2l0aW9uUmVmLmN1cnJlbnQgPSBwb3NpdGlvbiArIG9mZnNldCArIChpc1Bhc3RlQmVoYXZpb3IgPyBmb3JtYXRPZmZzZXQgOiAwKTtcbiAgICAgICAgfVxuICAgIH0sIFtdKTtcbiAgICBjb25zdCBoYW5kbGVDaGFuZ2UgPSB1c2VDYWxsYmFjaygoZSkgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYztcbiAgICAgICAgaWYgKGRpc2FibGVkIHx8IHJlYWRPbmx5KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCB7IHZhbHVlLCBfdmFsdWUsIGZvcm1hdHRlZFZhbHVlLCBtaW4sIG1heCwgbmVnYXRpdmUsIG1heEZyYWN0aW9uRGlnaXRzIH0gPSB2YWx1ZVJlZi5jdXJyZW50O1xuICAgICAgICBsZXQgdmFsID0gZS50YXJnZXQudmFsdWU7XG4gICAgICAgIGlmICh2YWwgIT0gbnVsbClcbiAgICAgICAgICAgIHZhbCA9IG5vcm1hbGl6ZU51bWJlcklucHV0KHZhbCkuc3BsaXQoJywnKS5qb2luKCcnKTtcbiAgICAgICAgY29uc3QgaGFzRGVjaW1hbFBvaW50ID0gISF2YWwgJiYgdmFsLmVuZHNXaXRoKCcuJyk7XG4gICAgICAgIGlmIChoYXNEZWNpbWFsUG9pbnQpXG4gICAgICAgICAgICB2YWwgPSB2YWwuc2xpY2UoMCwgLTEpO1xuICAgICAgICBpZiAoIW5lZ2F0aXZlICYmICh2YWwgPT09IG51bGwgfHwgdmFsID09PSB2b2lkIDAgPyB2b2lkIDAgOiB2YWwuaW5jbHVkZXMoJy0nKSkpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IGlzU3RhbmRhbG9uZU1pbnVzID0gbmVnYXRpdmUgJiYgdmFsID09PSAnLSc7XG4gICAgICAgIGlmICghaXNTdGFuZGFsb25lTWludXMgJiYgaXNOYU4oK3ZhbCkpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmICh2YWwgPT09IF92YWx1ZSAmJiAhaGFzRGVjaW1hbFBvaW50KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAodHlwZW9mIG1heEZyYWN0aW9uRGlnaXRzID09PSAnbnVtYmVyJyB8fCB0eXBlb2YgbWF4RnJhY3Rpb25EaWdpdHMgPT09ICdiaWdpbnQnKSB7XG4gICAgICAgICAgICBjb25zdCBbaW50LCBkZWNpbWFsXSA9IHZhbC5zcGxpdCgnLicpO1xuICAgICAgICAgICAgY29uc3QgbWF4RGVjaW1hbHMgPSBOdW1iZXIobWF4RnJhY3Rpb25EaWdpdHMpO1xuICAgICAgICAgICAgaWYgKGRlY2ltYWwgIT0gbnVsbCAmJiBkZWNpbWFsLmxlbmd0aCA+IG1heERlY2ltYWxzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgW29sZEludCxdID0gZm9ybWF0dGVkVmFsdWUuc3BsaXQoJy4nKTtcbiAgICAgICAgICAgICAgICBpZiAob2xkSW50LnNwbGl0KCcsJykuam9pbignJykgPT0gaW50KVxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgdmFsID0gYCR7aW50fS4ke2RlY2ltYWwuc2xpY2UoMCwgbWF4RGVjaW1hbHMpfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCh0eXBlb2YgbWluID09PSAnbnVtYmVyJyB8fCB0eXBlb2YgbWluID09PSAnYmlnaW50JykgfHwgKHR5cGVvZiBtYXggPT09ICdudW1iZXInIHx8IHR5cGVvZiBtYXggPT09ICdiaWdpbnQnKSkge1xuICAgICAgICAgICAgdmFsID0gY2FsY1ZhbHVlSW5SYW5nZSh2YWwsIG1pbiwgbWF4KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodmFsICE9PSAnJykge1xuICAgICAgICAgICAgaWYgKGlzU3RhbmRhbG9uZU1pbnVzKSB7XG4gICAgICAgICAgICAgICAgdmFsID0gJy0nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGVjaW1hbHMgPSAoX2MgPSAoX2IgPSAoX2EgPSB2YWwubWF0Y2goL1xcLihcXGQrKSQvKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hWzFdKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IubGVuZ3RoKSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiAwO1xuICAgICAgICAgICAgICAgIGNvbnN0IGJuID0gQmlnTnVtYmVyKHZhbCk7XG4gICAgICAgICAgICAgICAgbGV0IG5vcm1hbGl6ZWQgPSBibi50b0ZpeGVkKGRlY2ltYWxzKTtcbiAgICAgICAgICAgICAgICBpZiAobmVnYXRpdmUgJiYgdmFsLnRyaW0oKS5zdGFydHNXaXRoKCctJykgJiYgYm4uaXNaZXJvKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZWQuc3RhcnRzV2l0aCgnLScpID8gbm9ybWFsaXplZCA6IGAtJHtub3JtYWxpemVkfWA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhbCA9IGAke25vcm1hbGl6ZWR9JHtoYXNEZWNpbWFsUG9pbnQgPyAnLicgOiAnJ31gLnRyaW0oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgc2V0VmFsdWUodmFsID09PSAnJyA/IG51bGwgOiB2YWwpO1xuICAgICAgICAgICAgY2FsY0NhcmV0UG9zKHZhbCwgaGFzRGVjaW1hbFBvaW50ID8gMiA6IDAsIE1hdGgubWF4KGlucHV0Q2FyZXRQb3NpdGlvblJlZi5jdXJyZW50LCAwKSk7XG4gICAgICAgICAgICBpZ25vcmVTZWxlY3RSZWYuY3VycmVudCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgICAgIG9uQ2hhbmdlID09PSBudWxsIHx8IG9uQ2hhbmdlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNoYW5nZShlLCB2YWwpO1xuICAgIH0sIFtvbkNoYW5nZSwgZGlzYWJsZWQsIHJlYWRPbmx5XSk7XG4gICAgY29uc3QgaGFuZGxlU2VsZWN0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGlmIChpZ25vcmVTZWxlY3RSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgaWdub3JlU2VsZWN0UmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjdXJyUG9zID0gKF9hID0gaW5wdXRSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnNlbGVjdGlvbkVuZDtcbiAgICAgICAgaWYgKHR5cGVvZiBjdXJyUG9zID09PSAnbnVtYmVyJylcbiAgICAgICAgICAgIGlucHV0Q2FyZXRQb3NpdGlvblJlZi5jdXJyZW50ID0gY3VyclBvcztcbiAgICB9LCBbXSk7XG4gICAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kLCBfZSwgX2YsIF9nLCBfaCwgX2osIF9rO1xuICAgICAgICBjb25zdCBjb250YWluZXJXaWR0aCA9IChfYiA9IChfYSA9IGNvbnRhaW5lclJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Eub2Zmc2V0V2lkdGgpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IE1JTl9JTlBVVF9XSURUSDtcbiAgICAgICAgY29uc3QgcHJlZml4V2lkdGggPSAoX2QgPSAoX2MgPSBwcmVmaXhSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLm9mZnNldFdpZHRoKSAhPT0gbnVsbCAmJiBfZCAhPT0gdm9pZCAwID8gX2QgOiAwO1xuICAgICAgICBjb25zdCBzdWZmaXhXaWR0aCA9IChfZiA9IChfZSA9IHN1ZmZpeFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Uub2Zmc2V0V2lkdGgpICE9PSBudWxsICYmIF9mICE9PSB2b2lkIDAgPyBfZiA6IDA7XG4gICAgICAgIGNvbnN0IGN1cnJlbmN5V2lkdGggPSAoX2ggPSAoX2cgPSBjdXJyZW5jeVJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2cub2Zmc2V0V2lkdGgpICE9PSBudWxsICYmIF9oICE9PSB2b2lkIDAgPyBfaCA6IDA7XG4gICAgICAgIGNvbnN0IGZha2VXaWR0aCA9IChfayA9IChfaiA9IGZha2VFbGVSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2ogPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9qLm9mZnNldFdpZHRoKSAhPT0gbnVsbCAmJiBfayAhPT0gdm9pZCAwID8gX2sgOiAwO1xuICAgICAgICBjb25zdCBnYXBXaWR0aCA9IHByZWZpeFdpZHRoICYmIHN1ZmZpeFdpZHRoICYmIGN1cnJlbmN5V2lkdGhcbiAgICAgICAgICAgID8gMjRcbiAgICAgICAgICAgIDogKHByZWZpeFdpZHRoICYmIHN1ZmZpeFdpZHRoKSB8fCAocHJlZml4V2lkdGggJiYgY3VycmVuY3lXaWR0aCkgfHwgKHN1ZmZpeFdpZHRoICYmIGN1cnJlbmN5V2lkdGgpXG4gICAgICAgICAgICAgICAgPyAxNlxuICAgICAgICAgICAgICAgIDogcHJlZml4V2lkdGggfHwgc3VmZml4V2lkdGggfHwgY3VycmVuY3lXaWR0aFxuICAgICAgICAgICAgICAgICAgICA/IDhcbiAgICAgICAgICAgICAgICAgICAgOiAwO1xuICAgICAgICBjb25zdCBtYXhXaWR0aCA9IGNvbnRhaW5lcldpZHRoIC0gcHJlZml4V2lkdGggLSBzdWZmaXhXaWR0aCAtIGN1cnJlbmN5V2lkdGggLSBnYXBXaWR0aDtcbiAgICAgICAgY29uc3QgaXNNYXggPSBmYWtlV2lkdGggPj0gbWF4V2lkdGg7XG4gICAgICAgIHNldFdpZHRoKE1hdGgubWluKG1heFdpZHRoLCBNYXRoLm1heChmYWtlV2lkdGgsIE1JTl9JTlBVVF9XSURUSCkpKTtcbiAgICAgICAgc2V0SXNNYXhXaWR0aChpc01heCk7XG4gICAgICAgIGlmIChpc0ZvY3VzKVxuICAgICAgICAgICAgc2Nyb2xsVG9FbmQodHJ1ZSk7XG4gICAgfSwgW192YWx1ZSwgcHJlZml4LCBzdWZmaXgsIGN1cnJlbmN5LCBpc0ZvY3VzXSk7XG4gICAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2M7XG4gICAgICAgIGxldCB2YWwgPSB2YWx1ZTtcbiAgICAgICAgbGV0IGhhc0RlY2ltYWxQb2ludCA9IGZhbHNlO1xuICAgICAgICBjb25zdCB7IGZvcm1hdHRlZFZhbHVlIH0gPSB2YWx1ZVJlZi5jdXJyZW50O1xuICAgICAgICBsZXQgaXNTdGFuZGFsb25lTWludXMgPSBmYWxzZTtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBpZiAodmFsID09PSAnJykge1xuICAgICAgICAgICAgICAgIHZhbCA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YWwgPSBub3JtYWxpemVOdW1iZXJJbnB1dCh2YWwpLnNwbGl0KCcsJykuam9pbignJyk7XG4gICAgICAgICAgICAgICAgaGFzRGVjaW1hbFBvaW50ID0gISF2YWwgJiYgdmFsLmVuZHNXaXRoKCcuJyk7XG4gICAgICAgICAgICAgICAgaWYgKGhhc0RlY2ltYWxQb2ludClcbiAgICAgICAgICAgICAgICAgICAgdmFsID0gdmFsLnNsaWNlKDAsIC0xKTtcbiAgICAgICAgICAgICAgICBpZiAoIW5lZ2F0aXZlKVxuICAgICAgICAgICAgICAgICAgICB2YWwgPSB2YWwucmVwbGFjZSgvLS9nLCAnJyk7XG4gICAgICAgICAgICAgICAgaXNTdGFuZGFsb25lTWludXMgPSAhIW5lZ2F0aXZlICYmIHZhbCA9PT0gJy0nO1xuICAgICAgICAgICAgICAgIGlmICghaXNTdGFuZGFsb25lTWludXMgJiYgaXNOYU4oK3ZhbCkpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh2YWwgIT09IG51bGwgJiYgdHlwZW9mIHZhbCAhPT0gJ251bWJlcicgJiYgdHlwZW9mIHZhbCAhPT0gJ2JpZ2ludCcpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmICghbmVnYXRpdmUpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgICAgIHZhbCA9IE1hdGguYWJzKHZhbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICh0eXBlb2YgdmFsID09PSAnYmlnaW50Jykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHplcm8gPSBCaWdJbnQoMCk7XG4gICAgICAgICAgICAgICAgdmFsID0gdmFsIDwgemVybyA/IC12YWwgOiB2YWw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCh0eXBlb2YgdmFsID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdmFsID09PSAnbnVtYmVyJykgJiYgKHR5cGVvZiBtYXhGcmFjdGlvbkRpZ2l0cyA9PT0gJ251bWJlcicgfHwgdHlwZW9mIG1heEZyYWN0aW9uRGlnaXRzID09PSAnYmlnaW50JykpIHtcbiAgICAgICAgICAgIGNvbnN0IFtpbnQsIGRlY2ltYWxdID0gKCcnICsgdmFsKS5zcGxpdCgnLicpO1xuICAgICAgICAgICAgY29uc3QgbWF4RGVjaW1hbHMgPSBOdW1iZXIobWF4RnJhY3Rpb25EaWdpdHMpO1xuICAgICAgICAgICAgaWYgKGRlY2ltYWwgIT0gbnVsbCAmJiBkZWNpbWFsLmxlbmd0aCA+IG1heERlY2ltYWxzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgW29sZEludCxdID0gZm9ybWF0dGVkVmFsdWUuc3BsaXQoJy4nKTtcbiAgICAgICAgICAgICAgICBpZiAob2xkSW50LnNwbGl0KCcsJykuam9pbignJykgPT0gaW50KVxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgdmFsID0gYCR7aW50fS4ke2RlY2ltYWwuc2xpY2UoMCwgbWF4RGVjaW1hbHMpfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB2YWwgPT09ICdudW1iZXInIHx8IHR5cGVvZiB2YWwgPT09ICdiaWdpbnQnKSB7XG4gICAgICAgICAgICB2YWwgPSBjYWxjVmFsdWVJblJhbmdlKCcnICsgdmFsLCBtaW4sIG1heCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbCA9PT0gJycgfHwgdmFsID09IG51bGwpIHtcbiAgICAgICAgICAgIHNldFZhbHVlKG51bGwpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKGlzU3RhbmRhbG9uZU1pbnVzKSB7XG4gICAgICAgICAgICAgICAgdmFsID0gJy0nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RyVmFsID0gJycgKyB2YWw7XG4gICAgICAgICAgICAgICAgY29uc3QgZGVjaW1hbHMgPSAoX2MgPSAoX2IgPSAoX2EgPSBzdHJWYWwubWF0Y2goL1xcLihcXGQrKSQvKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hWzFdKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IubGVuZ3RoKSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiAwO1xuICAgICAgICAgICAgICAgIGNvbnN0IGJuID0gQmlnTnVtYmVyKHN0clZhbCk7XG4gICAgICAgICAgICAgICAgbGV0IG5vcm1hbGl6ZWQgPSBibi50b0ZpeGVkKGRlY2ltYWxzKTtcbiAgICAgICAgICAgICAgICBpZiAobmVnYXRpdmUgJiYgc3RyVmFsLnRyaW0oKS5zdGFydHNXaXRoKCctJykgJiYgYm4uaXNaZXJvKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZWQuc3RhcnRzV2l0aCgnLScpID8gbm9ybWFsaXplZCA6IGAtJHtub3JtYWxpemVkfWA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhbCA9IGAke25vcm1hbGl6ZWR9JHtoYXNEZWNpbWFsUG9pbnQgPyAnLicgOiAnJ31gLnRyaW0oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNldFZhbHVlKHZhbCk7XG4gICAgICAgIH1cbiAgICAgICAgY2FsY0NhcmV0UG9zKHZhbCAhPT0gbnVsbCAmJiB2YWwgIT09IHZvaWQgMCA/IHZhbCA6ICcnLCBoYXNEZWNpbWFsUG9pbnQgPyAyIDogMCwgTWF0aC5tYXgoaW5wdXRDYXJldFBvc2l0aW9uUmVmLmN1cnJlbnQsIDApKTtcbiAgICAgICAgaWdub3JlU2VsZWN0UmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgIH0sIFt2YWx1ZSwgbWF4RnJhY3Rpb25EaWdpdHMsIG1pbiwgbWF4LCBuZWdhdGl2ZV0pO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHZhbHVlUmVmLmN1cnJlbnQgPSB7XG4gICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgIF92YWx1ZSxcbiAgICAgICAgICAgIGZvcm1hdHRlZFZhbHVlLFxuICAgICAgICAgICAgbWluLFxuICAgICAgICAgICAgbWF4LFxuICAgICAgICAgICAgbmVnYXRpdmUsXG4gICAgICAgICAgICBtYXhGcmFjdGlvbkRpZ2l0c1xuICAgICAgICB9O1xuICAgIH0sIFtfdmFsdWUsIHZhbHVlLCBmb3JtYXR0ZWRWYWx1ZSwgbWluLCBtYXgsIG5lZ2F0aXZlLCBtYXhGcmFjdGlvbkRpZ2l0c10pO1xuICAgIHJldHVybiBfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3Nlcygnd3JhcHBlcicsIGpvaW5DbHMod3JhcHBlckNscywgY2xhc3NlcyhzaXplKSwgaW52YWxpZCAmJiBjbGFzc2VzKCdpbnZhbGlkJyksIHN1Y2Nlc3MgJiYgY2xhc3Nlcygnc3VjY2VzcycpLCBkaXNhYmxlZCAmJiBjbGFzc2VzKCdkaXNhYmxlZCcpLCByZWFkT25seSAmJiBjbGFzc2VzKCdyZWFkb25seScpLCBfdmFsdWUgJiYgY2xhc3NlcygnZmlsbGVkJykpKSwgY2hpbGRyZW46IFtsYWJlbFxuICAgICAgICAgICAgICAgID8gbG9hZGluZ1xuICAgICAgICAgICAgICAgICAgICA/IF9qc3goU2tlbGV0b24sIHsgd2lkdGg6ICc3MnB4JywgaGVpZ2h0OiAnMThweCcsIGNsYXNzTmFtZTogY2xhc3NlcygnbGFiZWwtbG9hZGluZycpIH0pXG4gICAgICAgICAgICAgICAgICAgIDogX2pzeChcInNwYW5cIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2xhYmVsJywgam9pbkNscyhyZXF1aXJlZCAmJiBjbGFzc2VzKCdsYWJlbC1yZXF1aXJlZCcpLCBsYWJlbENscykpLCBjaGlsZHJlbjogbGFiZWwgfSlcbiAgICAgICAgICAgICAgICA6IG51bGwsIF9qc3hzKFwiZGl2XCIsIHsgcmVmOiBjb250YWluZXJSZWYsIGNsYXNzTmFtZTogY2xhc3Nlcyh2b2lkIDAsIGpvaW5DbHMoY2xhc3NOYW1lLCBpc0ZvY3VzICYmIGNsYXNzZXMoJ2ZvY3VzJykpKSwgb25DbGljazogKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZS50YXJnZXQgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAoX2EgPSBpbnB1dFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzTWF4V2lkdGgpXG4gICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxUb0VuZCgpO1xuICAgICAgICAgICAgICAgIH0sIGNoaWxkcmVuOiBbcHJlZml4ICYmIF9qc3goXCJzcGFuXCIsIHsgcmVmOiBwcmVmaXhSZWYsIGNsYXNzTmFtZTogY2xhc3NlcygncHJlZml4JywgcHJlZml4RWxlQ2xzKSwgY2hpbGRyZW46IHByZWZpeCB9KSwgX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnZWxlbWVudCcsICghaXNGb2N1cyAmJiBpc01heFdpZHRoKSA/IGNsYXNzZXMoJ2VsZW1lbnQtbWF4JykgOiAnJyksIGNoaWxkcmVuOiBfanN4KFwiaW5wdXRcIiwgT2JqZWN0LmFzc2lnbih7fSwgcmVzdCwgeyByZWY6IGlucHV0UmVmLCB2YWx1ZTogZm9ybWF0dGVkVmFsdWUsIHBsYWNlaG9sZGVyOiBwbGFjZWhvbGRlciwgcmVhZE9ubHk6IHJlYWRPbmx5LCBkaXNhYmxlZDogZGlzYWJsZWQsIHN0eWxlOiB7ICctLWlucHV0LXdpZHRoJzogYCR7X3dpZHRofXB4YCB9LCBvbkNoYW5nZTogaGFuZGxlQ2hhbmdlLCBvblNlbGVjdDogaGFuZGxlU2VsZWN0LCBvbkZvY3VzOiBlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXNGb2N1cyh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Gb2N1cyA9PT0gbnVsbCB8fCBvbkZvY3VzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkZvY3VzKGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIG9uQmx1cjogZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldElzRm9jdXMoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXIgPT09IG51bGwgfHwgb25CbHVyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkJsdXIoZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSB9KSkgfSksIGN1cnJlbmN5ICYmIF9qc3goXCJzcGFuXCIsIHsgcmVmOiBjdXJyZW5jeVJlZiwgY2xhc3NOYW1lOiBjbGFzc2VzKCdjdXJyZW5jeScpLCBjaGlsZHJlbjogY3VycmVuY3kgfSksIGxvYWRpbmcgPyBfanN4KFNwaW5uZXIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdzdWZmaXgtbG9hZGluZycpLCBzdHJva2VXaWR0aDogJzQnIH0pIDogc3VmZml4ID8gX2pzeChcInNwYW5cIiwgeyByZWY6IHN1ZmZpeFJlZiwgY2xhc3NOYW1lOiBjbGFzc2VzKCdzdWZmaXgnLCBzdWZmaXhFbGVDbHMpLCBjaGlsZHJlbjogc3VmZml4IH0pIDogbnVsbCwgX2pzeChcInNwYW5cIiwgeyByZWY6IGZha2VFbGVSZWYsIGNsYXNzTmFtZTogY2xhc3NlcygnZmFrZScpLCBvbkNsaWNrOiBlID0+IGUuc3RvcFByb3BhZ2F0aW9uKCksIGNoaWxkcmVuOiBmb3JtYXR0ZWRWYWx1ZSB9KV0gfSksIChtZXNzYWdlIHx8IGZvb3Rub3RlKSAmJiBfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnZXh0cmEnKSwgY2hpbGRyZW46IFttZXNzYWdlICYmIF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ21lc3NhZ2UnLCBtZXNzYWdlQ2xzKSwgY2hpbGRyZW46IG1lc3NhZ2UgfSksIGZvb3Rub3RlICYmIF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2Zvb3Rub3RlJywgZm9vdG5vdGVDbHMpLCBjaGlsZHJlbjogZm9vdG5vdGUgfSldIH0pXSB9KTtcbn07XG5leHBvcnQgZGVmYXVsdCBtZW1vKElucHV0QW1vdW50KTsiLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
413
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvSW5wdXRBbW91bnQvSW5wdXRBbW91bnQuanMiLCJjb21wb25lbnRzL3NyYy9jb21wb25lbnRzL0lucHV0QW1vdW50L0lucHV0QW1vdW50LnRzeCJdLCJuYW1lcyI6WyJfanN4UnVudGltZSIsInJlcXVpcmUiLCJfcmVhY3QiLCJfYmlnbnVtYmVyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9yZWFjdE51bWJlckZvcm1hdCIsIl9za2VsZXRvbiIsIl9TcGlubmVyIiwiX2NsYXNzbmFtZXMiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIl9fcmVzdCIsInMiLCJwIiwicHJvdG90eXBlIiwiaW5kZXhPZiIsImdldE93blByb3BlcnR5U3ltYm9scyIsImxlbmd0aCIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwiTUlOX0lOUFVUX1dJRFRIIiwibm9ybWFsaXplTnVtYmVySW5wdXQiLCJ2YWwiLCJyZXBsYWNlIiwiY2FsY1ZhbHVlSW5SYW5nZSIsIm1pbiIsIm1heCIsImlzTmFOIiwiY2FsY1ZhbCIsImJuVmFsIiwiQmlnTnVtYmVyIiwibWluQm4iLCJsdCIsIm1heEJuIiwiZ3QiLCJJbnB1dEFtb3VudCIsImV4cG9ydHMiLCJwcm9wcyIsInZhbHVlIiwiX3Byb3BzJHR5cGUiLCJ0eXBlIiwibWF4RnJhY3Rpb25EaWdpdHMiLCJjaGlsZHJlbiIsIl9wcm9wcyRwbGFjZWhvbGRlciIsInBsYWNlaG9sZGVyIiwiX3Byb3BzJHNpemUiLCJzaXplIiwiZm9vdG5vdGUiLCJmb290bm90ZUNscyIsImNsYXNzTmFtZSIsIndyYXBwZXJDbHMiLCJsYWJlbENscyIsIl9wcm9wcyRwcmVmaXhDbHMiLCJwcmVmaXhDbHMiLCJtZXNzYWdlQ2xzIiwicHJlZml4RWxlQ2xzIiwic3VmZml4RWxlQ2xzIiwiaW52YWxpZCIsIm5lZ2F0aXZlIiwicmVxdWlyZWQiLCJsb2FkaW5nIiwic3VjY2VzcyIsImRpc2FibGVkIiwicmVhZE9ubHkiLCJsYWJlbCIsInByZWZpeCIsInN1ZmZpeCIsImN1cnJlbmN5IiwibWVzc2FnZSIsIm9uQ2hhbmdlIiwib25CbHVyIiwib25Gb2N1cyIsInJlc3QiLCJjbGFzc2VzIiwiY2xhc3NuYW1lcyIsImNvbmNhdCIsImlucHV0UmVmIiwidXNlUmVmIiwiZmFrZUVsZVJlZiIsInByZWZpeFJlZiIsInN1ZmZpeFJlZiIsImN1cnJlbmN5UmVmIiwiY29udGFpbmVyUmVmIiwiaW5wdXRDYXJldFBvc2l0aW9uUmVmIiwiaWdub3JlU2VsZWN0UmVmIiwib25DaGFuZ2VSZWYiLCJfdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheTIiLCJfdmFsdWUiLCJzZXRWYWx1ZSIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiX3dpZHRoIiwic2V0V2lkdGgiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImlzTWF4V2lkdGgiLCJzZXRJc01heFdpZHRoIiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJpc0ZvY3VzIiwic2V0SXNGb2N1cyIsImZvcm1hdHRlZFZhbHVlIiwidXNlTWVtbyIsIm51bWVyaWNGb3JtYXR0ZXIiLCJ0aG91c2FuZFNlcGFyYXRvciIsImFsbG93TmVnYXRpdmUiLCJ2YWx1ZVJlZiIsInNjcm9sbFRvRW5kIiwidXNlQ2FsbGJhY2siLCJzdGlja3kiLCJhcmd1bWVudHMiLCJ1bmRlZmluZWQiLCJfYSIsImlucHV0IiwiY3VycmVudCIsImxlbiIsInBvc2l0aW9uIiwic2Nyb2xsTGVmdCIsInNob3VsZFRvRW5kIiwic3RhcnQiLCJzZXRTZWxlY3Rpb25SYW5nZSIsInNjcm9sbFdpZHRoIiwiZm9jdXMiLCJjYWxjQ2FyZXRQb3MiLCJvZmZzZXQiLCJjdXJyUG9zIiwiX2IiLCJfYyIsIl92YWx1ZVJlZiRjdXJyZW50IiwiZm9ybWF0dGVkTmV3VmFsIiwib3JpZ2luT2Zmc2V0IiwiaXNBZGQiLCJpZ25vcmVPbGRQb3MiLCJzZWxlY3Rpb25FbmQiLCJvbGRQb3NWYWwiLCJzbGljZSIsIk1hdGgiLCJzcGxpdCIsImpvaW4iLCJwb3NWYWwiLCJyZWR1Y2UiLCJhY2MiLCJjaGFyIiwiaW5kIiwicHVzaCIsImhhbmRsZUNoYW5nZSIsIl9kIiwiX3ZhbHVlUmVmJGN1cnJlbnQyIiwidGFyZ2V0IiwiaGFzRGVjaW1hbFBvaW50IiwiZW5kc1dpdGgiLCJpbmNsdWRlcyIsImlzU3RhbmRhbG9uZU1pbnVzIiwiX3ZhbCRzcGxpdCIsIl92YWwkc3BsaXQyIiwiaW50IiwiZGVjaW1hbCIsIm1heERlY2ltYWxzIiwiTnVtYmVyIiwidHJ1bmNhdGVkRGVjaW1hbHMiLCJfZm9ybWF0dGVkVmFsdWUkc3BsaXQiLCJfZm9ybWF0dGVkVmFsdWUkc3BsaXQyIiwib2xkSW50IiwiZGVjaW1hbHMiLCJtYXRjaCIsImJuIiwibm9ybWFsaXplZCIsInRvRml4ZWQiLCJ0cmltIiwic3RhcnRzV2l0aCIsImlzWmVybyIsInByZXZlbnREZWZhdWx0Iiwic3RvcFByb3BhZ2F0aW9uIiwiaGFuZGxlU2VsZWN0IiwidXNlTGF5b3V0RWZmZWN0IiwiX2UiLCJfZiIsIl9nIiwiX2giLCJfaiIsIl9rIiwiY29udGFpbmVyV2lkdGgiLCJvZmZzZXRXaWR0aCIsInByZWZpeFdpZHRoIiwic3VmZml4V2lkdGgiLCJjdXJyZW5jeVdpZHRoIiwiZmFrZVdpZHRoIiwiZ2FwV2lkdGgiLCJtYXhXaWR0aCIsImlzTWF4IiwiYWJzIiwiemVybyIsIkJpZ0ludCIsIl9zcGxpdCIsIl9zcGxpdDIiLCJzdHJWYWwiLCJ1c2VFZmZlY3QiLCJfanN4cyIsImpvaW5DbHMiLCJfanN4IiwiU2tlbGV0b24iLCJ3aWR0aCIsImhlaWdodCIsInJlZiIsIm9uQ2xpY2siLCJIVE1MSW5wdXRFbGVtZW50IiwiYXNzaWduIiwic3R5bGUiLCJvblNlbGVjdCIsIlNwaW5uZXIiLCJzdHJva2VXaWR0aCIsIl9kZWZhdWx0IiwibWVtbyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBV0EsSUFBQUEsV0FBQSxHQUFBQyxPQUFBO0FDWEEsSUFBQUMsTUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsVUFBQSxHQUFBQyxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUksa0JBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLFNBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLFFBQUEsR0FBQUgsc0JBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFPLFdBQUEsR0FBQUMsdUJBQUEsQ0FBQVIsT0FBQTtBQUF3RSxTQUFBUyx5QkFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxtQkFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSx5QkFBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxLQUFBRixDQUFBO0FBQUEsU0FBQUYsd0JBQUFFLENBQUEsRUFBQUUsQ0FBQSxTQUFBQSxDQUFBLElBQUFGLENBQUEsSUFBQUEsQ0FBQSxDQUFBSSxVQUFBLFNBQUFKLENBQUEsZUFBQUEsQ0FBQSxnQkFBQUssT0FBQSxDQUFBTCxDQUFBLDBCQUFBQSxDQUFBLHNCQUFBQSxDQUFBLFFBQUFHLENBQUEsR0FBQUosd0JBQUEsQ0FBQUcsQ0FBQSxPQUFBQyxDQUFBLElBQUFBLENBQUEsQ0FBQUcsR0FBQSxDQUFBTixDQUFBLFVBQUFHLENBQUEsQ0FBQUksR0FBQSxDQUFBUCxDQUFBLE9BQUFRLENBQUEsS0FBQUMsU0FBQSxVQUFBQyxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsY0FBQSxJQUFBRCxNQUFBLENBQUFFLHdCQUFBLFdBQUFDLENBQUEsSUFBQWQsQ0FBQSxvQkFBQWMsQ0FBQSxPQUFBQyxjQUFBLENBQUFDLElBQUEsQ0FBQWhCLENBQUEsRUFBQWMsQ0FBQSxTQUFBRyxDQUFBLEdBQUFQLENBQUEsR0FBQUMsTUFBQSxDQUFBRSx3QkFBQSxDQUFBYixDQUFBLEVBQUFjLENBQUEsVUFBQUcsQ0FBQSxLQUFBQSxDQUFBLENBQUFWLEdBQUEsSUFBQVUsQ0FBQSxDQUFBQyxHQUFBLElBQUFQLE1BQUEsQ0FBQUMsY0FBQSxDQUFBSixDQUFBLEVBQUFNLENBQUEsRUFBQUcsQ0FBQSxJQUFBVCxDQUFBLENBQUFNLENBQUEsSUFBQWQsQ0FBQSxDQUFBYyxDQUFBLFlBQUFOLENBQUEsY0FBQVIsQ0FBQSxFQUFBRyxDQUFBLElBQUFBLENBQUEsQ0FBQWUsR0FBQSxDQUFBbEIsQ0FBQSxFQUFBUSxDQUFBLEdBQUFBLENBQUE7QURMeEUsSUFBSVcsTUFBTSxHQUFJLFVBQVEsU0FBS0EsTUFBTSxJQUFLLFVBQVVDLENBQUMsRUFBRXBCLENBQUMsRUFBRTtFQUNsRCxJQUFJRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0VBQ1YsS0FBSyxJQUFJa0IsQ0FBQyxJQUFJRCxDQUFDLEVBQUUsSUFBSVQsTUFBTSxDQUFDVyxTQUFTLENBQUNQLGNBQWMsQ0FBQ0MsSUFBSSxDQUFDSSxDQUFDLEVBQUVDLENBQUMsQ0FBQyxJQUFJckIsQ0FBQyxDQUFDdUIsT0FBTyxDQUFDRixDQUFDLENBQUMsR0FBRyxDQUFDLEVBQy9FbEIsQ0FBQyxDQUFDa0IsQ0FBQyxDQUFDLEdBQUdELENBQUMsQ0FBQ0MsQ0FBQyxDQUFDO0VBQ2YsSUFBSUQsQ0FBQyxJQUFJLElBQUksSUFBSSxPQUFPVCxNQUFNLENBQUNhLHFCQUFxQixLQUFLLFVBQVUsRUFDL0QsS0FBSyxJQUFJUCxDQUFDLEdBQUcsQ0FBQyxFQUFFSSxDQUFDLEdBQUdWLE1BQU0sQ0FBQ2EscUJBQXFCLENBQUNKLENBQUMsQ0FBQyxFQUFFSCxDQUFDLEdBQUdJLENBQUMsQ0FBQ0ksTUFBTSxFQUFFUixDQUFDLEVBQUUsRUFBRTtJQUNwRSxJQUFJakIsQ0FBQyxDQUFDdUIsT0FBTyxDQUFDRixDQUFDLENBQUNKLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJTixNQUFNLENBQUNXLFNBQVMsQ0FBQ0ksb0JBQW9CLENBQUNWLElBQUksQ0FBQ0ksQ0FBQyxFQUFFQyxDQUFDLENBQUNKLENBQUMsQ0FBQyxDQUFDLEVBQzFFZCxDQUFDLENBQUNrQixDQUFDLENBQUNKLENBQUMsQ0FBQyxDQUFDLEdBQUdHLENBQUMsQ0FBQ0MsQ0FBQyxDQUFDSixDQUFDLENBQUMsQ0FBQztFQUN6QjtFQUNKLE9BQU9kLENBQUM7QUFDWixDQUFDO0FDQUQsSUFBTXdCLGVBQWUsR0FBRyxFQUFFO0FBRTFCLElBQU1DLG9CQUFvQixHQUFHLFNBQXZCQSxvQkFBb0JBLENBQUlDLEdBQVc7RUFBQSxPQUN2Q0EsR0FBRyxDQUNBQyxPQUFPLENBQUMsdUJBQXVCLEVBQUUsR0FBRyxDQUFDLENBQ3JDQSxPQUFPLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQztBQUFBO0FBRTlCLElBQU1DLGdCQUFnQixHQUFHLFNBQW5CQSxnQkFBZ0JBLENBQ3BCRixHQUFXLEVBQ1hHLEdBQStCLEVBQy9CQyxHQUErQixFQUM3QjtFQUNGLElBQUlKLEdBQUcsS0FBSyxFQUFFLElBQUlBLEdBQUcsS0FBSyxHQUFHLElBQUlLLEtBQUssQ0FBQyxDQUFDTCxHQUFHLENBQUMsRUFBRSxPQUFPQSxHQUFHO0VBRXhELElBQUlNLE9BQU8sR0FBR04sR0FBRztFQUNqQixJQUFNTyxLQUFLLEdBQUcsSUFBQUMscUJBQVMsRUFBQ1IsR0FBRyxDQUFDO0VBRTVCLElBQUksT0FBT0csR0FBRyxLQUFLLFFBQVEsSUFBSSxPQUFPQSxHQUFHLEtBQUssUUFBUSxFQUFFO0lBQ3RELElBQU1NLEtBQUssR0FBRyxJQUFBRCxxQkFBUyxFQUFDTCxHQUFHLENBQUM7SUFDNUIsSUFBSUksS0FBSyxDQUFDRyxFQUFFLENBQUNELEtBQUssQ0FBQyxFQUFFO01BQ25CSCxPQUFPLEdBQUcsRUFBRSxHQUFHSCxHQUFHO0lBQ3BCO0VBQ0Y7RUFFQSxJQUFJLE9BQU9DLEdBQUcsS0FBSyxRQUFRLElBQUksT0FBT0EsR0FBRyxLQUFLLFFBQVEsRUFBRTtJQUN0RCxJQUFNTyxLQUFLLEdBQUcsSUFBQUgscUJBQVMsRUFBQ0osR0FBRyxDQUFDO0lBQzVCLElBQUlHLEtBQUssQ0FBQ0ssRUFBRSxDQUFDRCxLQUFLLENBQUMsRUFBRTtNQUNuQkwsT0FBTyxHQUFHLEVBQUUsR0FBR0YsR0FBRztJQUNwQjtFQUNGO0VBRUEsT0FBT0UsT0FBTztBQUNoQixDQUFDO0FBRU0sSUFBTU8sV0FBVyxHQUFBQyxPQUFBLENBQUFELFdBQUEsR0FBNEMsU0FBdkRBLFdBQVdBLENBQTRDRSxLQUFLLEVBQUc7RUFDMUUsSUFDRUMsS0FBSyxHQWFIRCxLQUFLLENBYlBDLEtBQUs7SUFBQUMsV0FBQSxHQWFIRixLQUFLLENBWlBHLElBQUk7SUFBSkEsSUFBSSxHQUFBRCxXQUFBLGNBQUcsU0FBUyxHQUFBQSxXQUFBO0lBQ2hCRSxpQkFBaUIsR0FXZkosS0FBSyxDQVhQSSxpQkFBaUI7SUFDakJDLFFBQVEsR0FVTkwsS0FBSyxDQVZQSyxRQUFRO0lBQUFDLGtCQUFBLEdBVU5OLEtBQUssQ0FUUE8sV0FBVztJQUFYQSxXQUFXLEdBQUFELGtCQUFBLGNBQUcsR0FBRyxHQUFBQSxrQkFBQTtJQUNqQmxCLEdBQUcsR0FRRFksS0FBSyxDQVJQWixHQUFHO0lBQUVDLEdBQUcsR0FRTlcsS0FBSyxDQVJGWCxHQUFHO0lBQUFtQixXQUFBLEdBUU5SLEtBQUssQ0FOUFMsSUFBSTtJQUFKQSxJQUFJLEdBQUFELFdBQUEsY0FBRyxPQUFPLEdBQUFBLFdBQUE7SUFBRUUsUUFBUSxHQU10QlYsS0FBSyxDQU5TVSxRQUFRO0lBQUVDLFdBQVcsR0FNbkNYLEtBQUssQ0FObUJXLFdBQVc7SUFDckNDLFNBQVMsR0FLUFosS0FBSyxDQUxQWSxTQUFTO0lBQUVDLFVBQVUsR0FLbkJiLEtBQUssQ0FMSWEsVUFBVTtJQUFFQyxRQUFRLEdBSzdCZCxLQUFLLENBTGdCYyxRQUFRO0lBQUFDLGdCQUFBLEdBSzdCZixLQUFLLENBTDBCZ0IsU0FBUztJQUFUQSxTQUFTLEdBQUFELGdCQUFBLGNBQUcsY0FBYyxHQUFBQSxnQkFBQTtJQUFFRSxVQUFVLEdBS3JFakIsS0FBSyxDQUxzRGlCLFVBQVU7SUFBRUMsWUFBWSxHQUtuRmxCLEtBQUssQ0FMa0VrQixZQUFZO0lBQUVDLFlBQVksR0FLakduQixLQUFLLENBTGdGbUIsWUFBWTtJQUNuR0MsT0FBTyxHQUlMcEIsS0FBSyxDQUpQb0IsT0FBTztJQUFFQyxRQUFRLEdBSWZyQixLQUFLLENBSkVxQixRQUFRO0lBQUVDLFFBQVEsR0FJekJ0QixLQUFLLENBSllzQixRQUFRO0lBQUVDLE9BQU8sR0FJbEN2QixLQUFLLENBSnNCdUIsT0FBTztJQUFFQyxPQUFPLEdBSTNDeEIsS0FBSyxDQUorQndCLE9BQU87SUFBRUMsUUFBUSxHQUlyRHpCLEtBQUssQ0FKd0N5QixRQUFRO0lBQUVDLFFBQVEsR0FJL0QxQixLQUFLLENBSmtEMEIsUUFBUTtJQUNqRUMsS0FBSyxHQUdIM0IsS0FBSyxDQUhQMkIsS0FBSztJQUFFQyxNQUFNLEdBR1g1QixLQUFLLENBSEE0QixNQUFNO0lBQUVDLE1BQU0sR0FHbkI3QixLQUFLLENBSFE2QixNQUFNO0lBQUVDLFFBQVEsR0FHN0I5QixLQUFLLENBSGdCOEIsUUFBUTtJQUFFQyxPQUFPLEdBR3RDL0IsS0FBSyxDQUgwQitCLE9BQU87SUFDeENDLFFBQVEsR0FFTmhDLEtBQUssQ0FGUGdDLFFBQVE7SUFBRUMsT0FBTSxHQUVkakMsS0FBSyxDQUZHaUMsTUFBTTtJQUFFQyxRQUFPLEdBRXZCbEMsS0FBSyxDQUZXa0MsT0FBTztJQUN0QkMsSUFBSSxHQUFBNUQsTUFBQSxDQUNMeUIsS0FBSyxFQWRILENBQUEsT0FBQSxFQUFBLE1BQUEsRUFBQSxtQkFBQSxFQUFBLFVBQUEsRUFBQSxhQUFBLEVBQUEsS0FBQSxFQUFBLEtBQUEsRUFBQSxNQUFBLEVBQUEsVUFBQSxFQUFBLGFBQUEsRUFBQSxXQUFBLEVBQUEsWUFBQSxFQUFBLFVBQUEsRUFBQSxXQUFBLEVBQUEsWUFBQSxFQUFBLGNBQUEsRUFBQSxjQUFBLEVBQUEsU0FBQSxFQUFBLFVBQUEsRUFBQSxVQUFBLEVBQUEsU0FBQSxFQUFBLFNBQUEsRUFBQSxVQUFBLEVBQUEsVUFBQSxFQUFBLE9BQUEsRUFBQSxRQUFBLEVBQUEsUUFBQSxFQUFBLFVBQUEsRUFBQSxTQUFBLEVBQUEsVUFBQSxFQUFBLFFBQUEsRUFBQSxTQUFBLENBY0wsQ0FBUTtFQUNULElBQU1vQyxPQUFPLEdBQUcsSUFBQUMsc0JBQVUsS0FBQUMsTUFBQSxDQUFJdEIsU0FBUyxPQUFBc0IsTUFBQSxDQUFJbkMsSUFBSSxDQUFFLENBQUM7RUFFbEQsSUFBTW9DLFFBQVEsR0FBRyxJQUFBQyxhQUFNLEVBQW1CLElBQUksQ0FBQztFQUMvQyxJQUFNQyxVQUFVLEdBQUcsSUFBQUQsYUFBTSxFQUFrQixJQUFJLENBQUM7RUFDaEQsSUFBTUUsU0FBUyxHQUFHLElBQUFGLGFBQU0sRUFBa0IsSUFBSSxDQUFDO0VBQy9DLElBQU1HLFNBQVMsR0FBRyxJQUFBSCxhQUFNLEVBQWtCLElBQUksQ0FBQztFQUMvQyxJQUFNSSxXQUFXLEdBQUcsSUFBQUosYUFBTSxFQUFrQixJQUFJLENBQUM7RUFDakQsSUFBTUssWUFBWSxHQUFHLElBQUFMLGFBQU0sRUFBaUIsSUFBSSxDQUFDO0VBQ2pELElBQU1NLHFCQUFxQixHQUFHLElBQUFOLGFBQU0sRUFBUyxDQUFDLENBQUM7RUFDL0MsSUFBTU8sZUFBZSxHQUFHLElBQUFQLGFBQU0sRUFBVSxLQUFLLENBQUM7RUFDOUMsSUFBTVEsV0FBVyxHQUFHLElBQUFSLGFBQU0sRUFBQ1IsUUFBUSxDQUFDO0VBRXBDLElBQUFpQixTQUFBLEdBQTJCLElBQUFDLGVBQVEsRUFBZ0IsSUFBSSxDQUFDO0lBQUFDLFVBQUEsT0FBQUMsZUFBQSxhQUFBSCxTQUFBO0lBQWpESSxNQUFNLEdBQUFGLFVBQUE7SUFBRUcsUUFBUSxHQUFBSCxVQUFBO0VBQ3ZCLElBQUFJLFVBQUEsR0FBMkIsSUFBQUwsZUFBUSxFQUFTbkUsZUFBZSxDQUFDO0lBQUF5RSxVQUFBLE9BQUFKLGVBQUEsYUFBQUcsVUFBQTtJQUFyREUsTUFBTSxHQUFBRCxVQUFBO0lBQUVFLFFBQVEsR0FBQUYsVUFBQTtFQUN2QixJQUFBRyxVQUFBLEdBQW9DLElBQUFULGVBQVEsRUFBVSxLQUFLLENBQUM7SUFBQVUsVUFBQSxPQUFBUixlQUFBLGFBQUFPLFVBQUE7SUFBckRFLFVBQVUsR0FBQUQsVUFBQTtJQUFFRSxhQUFhLEdBQUFGLFVBQUE7RUFDaEMsSUFBQUcsVUFBQSxHQUE4QixJQUFBYixlQUFRLEVBQVUsS0FBSyxDQUFDO0lBQUFjLFVBQUEsT0FBQVosZUFBQSxhQUFBVyxVQUFBO0lBQS9DRSxPQUFPLEdBQUFELFVBQUE7SUFBRUUsVUFBVSxHQUFBRixVQUFBO0VBRTFCLElBQU1HLGNBQWMsR0FBRyxJQUFBQyxjQUFPLEVBQUMsWUFBSztJQUNsQyxPQUFPLElBQUFDLG1DQUFnQixFQUFDLEVBQUUsSUFBSWhCLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxHQUFHQSxNQUFNLENBQUMsRUFBRTtNQUMzRGlCLGlCQUFpQixFQUFFLElBQUk7TUFDdkJDLGFBQWEsRUFBRWxEO0lEakJiLENDa0JILENBQUM7RUFDSixDQUFDLEVBQUUsQ0FBQ2dDLE1BQU0sRUFBRWhDLFFBQVEsQ0FBQyxDQUFDO0VBRXRCLElBQU1tRCxRQUFRLEdBQUcsSUFBQWhDLGFBQU0sRUFBQztJQUN0QnZDLEtBQUssRUFBTEEsS0FBSztJQUNMb0QsTUFBTSxFQUFOQSxNQUFNO0lBQ05jLGNBQWMsRUFBZEEsY0FBYztJQUNkL0UsR0FBRyxFQUFIQSxHQUFHO0lBQ0hDLEdBQUcsRUFBSEEsR0FBRztJQUNIZ0MsUUFBUSxFQUFSQSxRQUFRO0lBQ1JqQixpQkFBaUIsRUFBakJBO0VEbEJBLENDbUJELENBQUM7RUFFRixJQUFNcUUsV0FBVyxHQUFHLElBQUFDLGtCQUFXLEVBQUMsWUFBNEI7SUFBQSxJQUEzQkMsTUFBQSxHQUFBQyxTQUFBLENBQUEvRixNQUFBLFFBQUErRixTQUFBLFFBQUFDLFNBQUEsR0FBQUQsU0FBQSxNQUFrQixLQUFLO0lEbkJsRCxJQUFJRSxFQUFFO0lDb0JWLElBQU1DLEtBQUssR0FBR3hDLFFBQVEsQ0FBQ3lDLE9BQU87SUFDOUIsSUFBSSxDQUFDRCxLQUFLLEVBQUU7SUFDWixJQUFNRSxHQUFHLEdBQUcsQ0FBQUgsRUFBQSxHQUFBQyxLQUFLLENBQUM5RSxLQUFLLE1BQUEsSUFBQSxJQUFBNkUsRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBLEtBQUEsQ0FBQSxHQUFBQSxFQUFBLENBQUVqRyxNQUFNO0lBQy9CLElBQU1xRyxRQUFRLEdBQUdILEtBQUssQ0FBQ0ksVUFBVTtJQUNqQyxJQUFNQyxXQUFXLEdBQUcsQ0FBQ1QsTUFBTTtJQUMzQixJQUFNVSxLQUFLLEdBQUdELFdBQVcsR0FBR0gsR0FBRyxHQUFHbkMscUJBQXFCLENBQUNrQyxPQUFPO0lBQy9ERCxLQUFLLENBQUNPLGlCQUFpQixDQUFDRCxLQUFLLEVBQUVBLEtBQUssQ0FBQztJQUNyQ04sS0FBSyxDQUFDSSxVQUFVLEdBQUdDLFdBQVcsR0FBR0wsS0FBSyxDQUFDUSxXQUFXLEdBQUdMLFFBQVE7SUFDN0RILEtBQUssQ0FBQ1MsS0FBSyxDQUFBLENBQUU7RUFDZixDQUFDLEVBQUUsRUFBRSxDQUFDO0VBRU4sSUFBTUMsWUFBWSxHQUFHLElBQUFmLGtCQUFXLEVBQUMsVUFDL0J6RixHQUFXLEVBR1Q7SUFBQSxJQUZGeUcsTUFBTSxHQUFBZCxTQUFBLENBQUEvRixNQUFBLFFBQUErRixTQUFBLFFBQUFDLFNBQUEsR0FBQUQsU0FBQSxNQUFHLENBQUM7SUFBQSxJQUNWZSxPQUFnQixHQUFBZixTQUFBLENBQUEvRixNQUFBLE9BQUErRixTQUFBLE1BQUFDLFNBQUE7SURyQlosSUFBSUMsRUFBRSxFQUFFYyxFQUFFLEVBQUVDLEVBQUU7SUN1QmxCLElBQUl0RCxRQUFRLENBQUN5QyxPQUFPLEVBQUU7TUFDcEIsSUFBQWMsaUJBQUEsR0FBNkN0QixRQUFRLENBQUNRLE9BQU87UUFBckQzQixPQUFNLEdBQUF5QyxpQkFBQSxDQUFOekMsTUFBTTtRQUFFaEMsU0FBUSxHQUFBeUUsaUJBQUEsQ0FBUnpFLFFBQVE7UUFBRThDLGVBQWMsR0FBQTJCLGlCQUFBLENBQWQzQixjQUFjO01BQ3hDLElBQU00QixlQUFlLEdBQUcsSUFBQTFCLG1DQUFnQixFQUFDcEYsR0FBRyxFQUFFO1FBQzVDcUYsaUJBQWlCLEVBQUUsSUFBSTtRQUN2QkMsYUFBYSxFQUFFbEQ7TURyQlgsQ0NzQkwsQ0FBQztNQUVGLElBQU0yRSxZQUFZLEdBQUcvRyxHQUFHLENBQUNKLE1BQU0sSUFBSSxDQUFBaUcsRUFBQSxHQUFBekIsT0FBTSxLQUFBLElBQUEsSUFBTkEsT0FBTSxLQUFBLEtBQUEsQ0FBQSxHQUFBLEtBQUEsQ0FBQSxHQUFOQSxPQUFNLENBQUV4RSxNQUFNLE1BQUEsSUFBQSxJQUFBaUcsRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBQSxFQUFBLEdBQUksQ0FBQyxDQUFDO01BQ3ZELElBQU1tQixLQUFLLEdBQUdELFlBQVksR0FBRyxDQUFDO01BQzlCLElBQU1FLFlBQVksR0FBR0QsS0FBSyxHQUFHaEgsR0FBRyxDQUFDSixNQUFNLElBQUksQ0FBQStHLEVBQUEsR0FBQXZDLE9BQU0sS0FBQSxJQUFBLElBQU5BLE9BQU0sS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBTkEsT0FBTSxDQUFFeEUsTUFBTSxNQUFBLElBQUEsSUFBQStHLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQUEsRUFBQSxHQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLO01BQzNFLElBQUlWLFFBQVEsR0FBRyxDQUFBVyxFQUFBLEdBQUFGLE9BQU8sS0FBQSxJQUFBLElBQVBBLE9BQU8sS0FBQSxLQUFBLENBQUEsR0FBUEEsT0FBTyxHQUFJcEQsUUFBUSxDQUFDeUMsT0FBTyxDQUFDbUIsWUFBWSxNQUFBLElBQUEsSUFBQU4sRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBQSxFQUFBLEdBQUksQ0FBQztNQUM1RCxJQUFJLENBQUNLLFlBQVksRUFBRTtRQUNqQixJQUFNRSxTQUFTLEdBQUdqQyxlQUFjLENBQUNrQyxLQUFLLENBQUMsQ0FBQyxFQUFFQyxJQUFJLENBQUNqSCxHQUFHLENBQUM2RixRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDaEVBLFFBQVEsR0FBR2tCLFNBQVMsQ0FBQ0csS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMzSCxNQUFNO01BQ2pEO01BQ0EsSUFBTTRILE1BQU0sR0FBR3hILEdBQUcsQ0FBQ29ILEtBQUssQ0FBQyxDQUFDLEVBQUduQixRQUFRLEdBQUdjLFlBQWEsQ0FBQztNQUN0REQsZUFBZSxDQUFDUSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUNHLE1BQU0sQ0FBVyxVQUFDQyxHQUFHLEVBQUVDLEtBQUksRUFBRUMsR0FBRyxFQUFJO1FBQzVELElBQUlELEtBQUksS0FBSyxHQUFHLEVBQUUsT0FBT0QsR0FBRyxDQUFDLEtBQ3hCQSxHQUFHLENBQUNHLElBQUksQ0FBQ0YsS0FBSSxDQUFDO1FBQ25CLElBQUlELEdBQUcsQ0FBQ0gsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLQyxNQUFNLEVBQUU7VUFDM0J2QixRQUFRLEdBQUcyQixHQUFHLEdBQUcsQ0FBQztVQUNsQixPQUFPRixHQUFHO1FBQ1o7UUFDQSxPQUFPQSxHQUFHO01BQ1osQ0FBQyxFQUFFLEVBQUUsQ0FBQztNQUNON0QscUJBQXFCLENBQUNrQyxPQUFPLEdBQUdFLFFBQVEsR0FBR1EsTUFBTTtJQUNuRDtFQUNGLENBQUMsRUFBRSxFQUFFLENBQUM7RUFFTixJQUFNcUIsWUFBWSxHQUFHLElBQUFyQyxrQkFBVyxFQUFDLFVBQUN0SCxDQUFnQyxFQUFJO0lEckJoRSxJQUFJMEgsRUFBRSxFQUFFYyxFQUFFLEVBQUVDLEVBQUUsRUFBRW1CLEVBQUU7SUNzQnRCLElBQUl2RixRQUFRLElBQUlDLFFBQVEsRUFBRTtJQUUxQixJQUFBdUYsa0JBQUEsR0FBaUZ6QyxRQUFRLENBQUNRLE9BQU87TUFBekYvRSxLQUFLLEdBQUFnSCxrQkFBQSxDQUFMaEgsS0FBSztNQUFFb0QsTUFBTSxHQUFBNEQsa0JBQUEsQ0FBTjVELE1BQU07TUFBRWMsY0FBYyxHQUFBOEMsa0JBQUEsQ0FBZDlDLGNBQWM7TUFBRS9FLEdBQUcsR0FBQTZILGtCQUFBLENBQUg3SCxHQUFHO01BQUVDLEdBQUcsR0FBQTRILGtCQUFBLENBQUg1SCxHQUFHO01BQUVnQyxRQUFRLEdBQUE0RixrQkFBQSxDQUFSNUYsUUFBUTtNQUFFakIsaUJBQWlCLEdBQUE2RyxrQkFBQSxDQUFqQjdHLGlCQUFpQjtJQUM1RSxJQUFJbkIsR0FBRyxHQUFHN0IsQ0FBQyxDQUFDOEosTUFBTSxDQUFDakgsS0FBSztJQUN4QixJQUFJaEIsR0FBRyxJQUFJLElBQUksRUFBRUEsR0FBRyxHQUFHRCxvQkFBb0IsQ0FBQ0MsR0FBRyxDQUFDLENBQUNzSCxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUNDLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDcEUsSUFBTVcsZUFBZSxHQUFHLENBQUMsQ0FBQ2xJLEdBQUcsSUFBSUEsR0FBRyxDQUFDbUksUUFBUSxDQUFDLEdBQUcsQ0FBQztJQUNsRCxJQUFJRCxlQUFlLEVBQUVsSSxHQUFHLEdBQUdBLEdBQUcsQ0FBQ29ILEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDM0MsSUFBSSxDQUFDaEYsUUFBUSxLQUFJcEMsR0FBRyxLQUFBLElBQUEsSUFBSEEsR0FBRyxLQUFBLEtBQUEsQ0FBQSxHQUFBLEtBQUEsQ0FBQSxHQUFIQSxHQUFHLENBQUVvSSxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUEsRUFBRTtJQUNyQyxJQUFNQyxpQkFBaUIsR0FBR2pHLFFBQVEsSUFBSXBDLEdBQUcsS0FBSyxHQUFHO0lBQ2pELElBQUksQ0FBQ3FJLGlCQUFpQixJQUFJaEksS0FBSyxDQUFDLENBQUNMLEdBQUcsQ0FBQyxFQUFFO0lBQ3ZDLElBQUlBLEdBQUcsS0FBS29FLE1BQU0sSUFBSSxDQUFDOEQsZUFBZSxFQUFFO0lBRXhDLElBQUksT0FBTy9HLGlCQUFpQixLQUFLLFFBQVEsSUFBSSxPQUFPQSxpQkFBaUIsS0FBSyxRQUFRLEVBQUU7TUFDbEYsSUFBQW1ILFVBQUEsR0FBdUJ0SSxHQUFHLENBQUNzSCxLQUFLLENBQUMsR0FBRyxDQUFDO1FBQUFpQixXQUFBLE9BQUFwRSxlQUFBLGFBQUFtRSxVQUFBO1FBQTlCRSxJQUFHLEdBQUFELFdBQUE7UUFBRUUsT0FBTyxHQUFBRixXQUFBO01BQ25CLElBQU1HLFdBQVcsR0FBR0MsTUFBTSxDQUFDeEgsaUJBQWlCLENBQUM7TUFDN0MsSUFBSXNILE9BQU8sSUFBSSxJQUFJLElBQUlBLE9BQU8sQ0FBQzdJLE1BQU0sR0FBRzhJLFdBQVcsRUFBRTtRQUNuRCxJQUFNRSxpQkFBaUIsR0FBR0gsT0FBTyxDQUFDckIsS0FBSyxDQUFDLENBQUMsRUFBRXNCLFdBQVcsQ0FBQztRQUN2RCxJQUFBRyxxQkFBQSxHQUFrQjNELGNBQWMsQ0FBQ29DLEtBQUssQ0FBQyxHQUFHLENBQUM7VUFBQXdCLHNCQUFBLE9BQUEzRSxlQUFBLGFBQUEwRSxxQkFBQTtVQUFwQ0UsTUFBTSxHQUFBRCxzQkFBQTtRQUNiLElBQUlDLE1BQU0sQ0FBQ3pCLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQ0MsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJaUIsSUFBRyxFQUFFO1FBQ3ZDeEksR0FBRyxNQUFBcUQsTUFBQSxDQUFNbUYsSUFBRyxPQUFBbkYsTUFBQSxDQUFJdUYsaUJBQWlCLENBQUU7TUFDckM7SUFDRjtJQUVBLElBQUssT0FBT3pJLEdBQUcsS0FBSyxRQUFRLElBQUksT0FBT0EsR0FBRyxLQUFLLFFBQVEsSUFBTSxPQUFPQyxHQUFHLEtBQUssUUFBUSxJQUFJLE9BQU9BLEdBQUcsS0FBSyxRQUFTLEVBQUU7TUFDaEhKLEdBQUcsR0FBR0UsZ0JBQWdCLENBQUNGLEdBQUcsRUFBRUcsR0FBRyxFQUFFQyxHQUFHLENBQUM7SUFDdkM7SUFFQSxJQUFJSixHQUFHLEtBQUssRUFBRSxFQUFFO01BQ2QsSUFBSXFJLGlCQUFpQixFQUFFO1FBQ3JCckksR0FBRyxHQUFHLEdBQUc7TUFDWCxDQUFDLE1BQU07UUFDTCxJQUFNZ0osUUFBUSxHQUFHLENBQUFwQyxFQUFBLEdBQUEsQ0FBQUQsRUFBQSxHQUFBLENBQUFkLEVBQUEsR0FBQTdGLEdBQUcsQ0FBQ2lKLEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBQSxJQUFBLElBQUFwRCxFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQUFBLEVBQUEsQ0FBRyxDQUFDLENBQUMsTUFBQSxJQUFBLElBQUFjLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBQUEsRUFBQSxDQUFFL0csTUFBTSxNQUFBLElBQUEsSUFBQWdILEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQUEsRUFBQSxHQUFJLENBQUM7UUFDeEQsSUFBTXNDLEVBQUUsR0FBRyxJQUFBMUkscUJBQVMsRUFBQ1IsR0FBRyxDQUFDO1FBQ3pCLElBQUltSixVQUFVLEdBQUdELEVBQUUsQ0FBQ0UsT0FBTyxDQUFDSixRQUFRLENBQUM7UUFDckMsSUFBSTVHLFFBQVEsSUFBSXBDLEdBQUcsQ0FBQ3FKLElBQUksQ0FBQSxDQUFFLENBQUNDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSUosRUFBRSxDQUFDSyxNQUFNLENBQUEsQ0FBRSxFQUFFO1VBQ3pESixVQUFVLEdBQUdBLFVBQVUsQ0FBQ0csVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHSCxVQUFVLE9BQUE5RixNQUFBLENBQU84RixVQUFVLENBQUU7UUFDekU7UUFDQW5KLEdBQUcsR0FBRyxHQUFBcUQsTUFBQSxDQUFHOEYsVUFBVSxFQUFBOUYsTUFBQSxDQUFHNkUsZUFBZSxHQUFHLEdBQUcsR0FBRyxFQUFFLEVBQUdtQixJQUFJLENBQUEsQ0FBRTtNQUMzRDtJQUNGO0lBRUEsSUFBSSxPQUFPckksS0FBSyxLQUFLLFdBQVcsRUFBRTtNQUNoQ3FELFFBQVEsQ0FBQ3JFLEdBQUcsS0FBSyxFQUFFLEdBQUcsSUFBSSxHQUFHQSxHQUFHLENBQUM7TUFDakN3RyxZQUFZLENBQUN4RyxHQUFHLEVBQUVrSSxlQUFlLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRWIsSUFBSSxDQUFDakgsR0FBRyxDQUFDeUQscUJBQXFCLENBQUNrQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7TUFDdEZqQyxlQUFlLENBQUNpQyxPQUFPLEdBQUcsSUFBSTtJQUNoQyxDQUFDLE1BQU07TUFDTDVILENBQUMsQ0FBQ3FMLGNBQWMsQ0FBQSxDQUFFO01BQ2xCckwsQ0FBQyxDQUFDc0wsZUFBZSxDQUFBLENBQUU7SUFDckI7SUFDQSxDQUFBMUIsRUFBQSxHQUFBaEUsV0FBVyxDQUFDZ0MsT0FBTyxNQUFBLElBQUEsSUFBQWdDLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBQUEsRUFBQSxDQUFBNUksSUFBQSxDQUFBNEUsV0FBQSxFQUFHNUYsQ0FBQyxFQUFFNkIsR0FBRyxDQUFDO0VBQy9CLENBQUMsRUFBRSxDQUFDd0MsUUFBUSxFQUFFQyxRQUFRLENBQUMsQ0FBQztFQUV4QixJQUFNaUgsWUFBWSxHQUFHLElBQUFqRSxrQkFBVyxFQUFDLFlBQUs7SURqQmhDLElBQUlJLEVBQUU7SUNrQlYsSUFBSS9CLGVBQWUsQ0FBQ2lDLE9BQU8sRUFBRTtNQUMzQmpDLGVBQWUsQ0FBQ2lDLE9BQU8sR0FBRyxLQUFLO01BQy9CO0lBQ0Y7SUFDQSxJQUFNVyxPQUFPLEdBQUcsQ0FBQWIsRUFBQSxHQUFBdkMsUUFBUSxDQUFDeUMsT0FBTyxNQUFBLElBQUEsSUFBQUYsRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBLEtBQUEsQ0FBQSxHQUFBQSxFQUFBLENBQUVxQixZQUFZO0lBQzlDLElBQUksT0FBT1IsT0FBTyxLQUFLLFFBQVEsRUFBRTdDLHFCQUFxQixDQUFDa0MsT0FBTyxHQUFHVyxPQUFPO0VBQzFFLENBQUMsRUFBRSxFQUFFLENBQUM7RUFFTixJQUFBaUQsc0JBQWUsRUFBQyxZQUFLO0lEaEJmLElBQUk5RCxFQUFFLEVBQUVjLEVBQUUsRUFBRUMsRUFBRSxFQUFFbUIsRUFBRSxFQUFFNkIsRUFBRSxFQUFFQyxFQUFFLEVBQUVDLEVBQUUsRUFBRUMsRUFBRSxFQUFFQyxFQUFFLEVBQUVDLEVBQUU7SUNpQjlDLElBQU1DLGNBQWMsR0FBRyxDQUFBdkQsRUFBQSxHQUFBLENBQUFkLEVBQUEsR0FBQWpDLFlBQVksQ0FBQ21DLE9BQU8sTUFBQSxJQUFBLElBQUFGLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBQUEsRUFBQSxDQUFFc0UsV0FBVyxNQUFBLElBQUEsSUFBQXhELEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQUEsRUFBQSxHQUFJN0csZUFBZTtJQUMzRSxJQUFNc0ssV0FBVyxHQUFHLENBQUFyQyxFQUFBLEdBQUEsQ0FBQW5CLEVBQUEsR0FBQW5ELFNBQVMsQ0FBQ3NDLE9BQU8sTUFBQSxJQUFBLElBQUFhLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBQUEsRUFBQSxDQUFFdUQsV0FBVyxNQUFBLElBQUEsSUFBQXBDLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQUEsRUFBQSxHQUFJLENBQUM7SUFDdkQsSUFBTXNDLFdBQVcsR0FBRyxDQUFBUixFQUFBLEdBQUEsQ0FBQUQsRUFBQSxHQUFBbEcsU0FBUyxDQUFDcUMsT0FBTyxNQUFBLElBQUEsSUFBQTZELEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBQUEsRUFBQSxDQUFFTyxXQUFXLE1BQUEsSUFBQSxJQUFBTixFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUFBLEVBQUEsR0FBSSxDQUFDO0lBQ3ZELElBQU1TLGFBQWEsR0FBRyxDQUFBUCxFQUFBLEdBQUEsQ0FBQUQsRUFBQSxHQUFBbkcsV0FBVyxDQUFDb0MsT0FBTyxNQUFBLElBQUEsSUFBQStELEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBQUEsRUFBQSxDQUFFSyxXQUFXLE1BQUEsSUFBQSxJQUFBSixFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUFBLEVBQUEsR0FBSSxDQUFDO0lBQzNELElBQU1RLFNBQVMsR0FBRyxDQUFBTixFQUFBLEdBQUEsQ0FBQUQsRUFBQSxHQUFBeEcsVUFBVSxDQUFDdUMsT0FBTyxNQUFBLElBQUEsSUFBQWlFLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBQUEsRUFBQSxDQUFFRyxXQUFXLE1BQUEsSUFBQSxJQUFBRixFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUFBLEVBQUEsR0FBSSxDQUFDO0lBQ3RELElBQU1PLFFBQVEsR0FBR0osV0FBVyxJQUFJQyxXQUFXLElBQUlDLGFBQWEsR0FDeEQsRUFBRSxHQUNERixXQUFXLElBQUlDLFdBQVcsSUFBTUQsV0FBVyxJQUFJRSxhQUFjLElBQUtELFdBQVcsSUFBSUMsYUFBYyxHQUM5RixFQUFFLEdBQ0ZGLFdBQVcsSUFBSUMsV0FBVyxJQUFJQyxhQUFhLEdBQ3pDLENBQUMsR0FDRCxDQUFDO0lBRVQsSUFBTUcsUUFBUSxHQUFHUCxjQUFjLEdBQUdFLFdBQVcsR0FBR0MsV0FBVyxHQUFHQyxhQUFhLEdBQUdFLFFBQVE7SUFDdEYsSUFBTUUsS0FBSyxHQUFHSCxTQUFTLElBQUlFLFFBQVE7SUFDbkNoRyxRQUFRLENBQUM0QyxJQUFJLENBQUNsSCxHQUFHLENBQUNzSyxRQUFRLEVBQUVwRCxJQUFJLENBQUNqSCxHQUFHLENBQUNtSyxTQUFTLEVBQUV6SyxlQUFlLENBQUMsQ0FBQyxDQUFDO0lBQ2xFK0UsYUFBYSxDQUFDNkYsS0FBSyxDQUFDO0lBQ3BCLElBQUkxRixPQUFPLEVBQUVRLFdBQVcsQ0FBQyxJQUFJLENBQUM7RUFDaEMsQ0FBQyxFQUFFLENBQUNwQixNQUFNLEVBQUV6QixNQUFNLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxFQUFFbUMsT0FBTyxDQUFDLENBQUM7RUFFL0MsSUFBQTJFLHNCQUFlLEVBQUMsWUFBSztJRGhCZixJQUFJOUQsRUFBRSxFQUFFYyxFQUFFLEVBQUVDLEVBQUUsRUFBRW1CLEVBQUU7SUNpQnRCLElBQUkvSCxHQUFHLEdBQUcsT0FBT2dCLEtBQUssS0FBSyxXQUFXLEdBQUdvRCxNQUFNLEdBQUdwRCxLQUFLO0lBQ3ZELElBQUlrSCxlQUFlLEdBQUcsS0FBSztJQUMzQixJQUFJRyxpQkFBaUIsR0FBRyxLQUFLO0lBQzdCLElBQUksT0FBT3JJLEdBQUcsS0FBSyxRQUFRLEVBQUU7TUFDM0IsSUFBSUEsR0FBRyxLQUFLLEVBQUUsRUFBRTtRQUNkQSxHQUFHLEdBQUcsSUFBSTtNQUNaLENBQUMsTUFBTTtRQUNMQSxHQUFHLEdBQUdELG9CQUFvQixDQUFDQyxHQUFHLENBQUMsQ0FBQ3NILEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQ0MsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNuRFcsZUFBZSxHQUFHLENBQUMsQ0FBQ2xJLEdBQUcsSUFBSUEsR0FBRyxDQUFDbUksUUFBUSxDQUFDLEdBQUcsQ0FBQztRQUM1QyxJQUFJRCxlQUFlLEVBQUVsSSxHQUFHLEdBQUdBLEdBQUcsQ0FBQ29ILEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDaEYsUUFBUSxFQUFFcEMsR0FBRyxHQUFHQSxHQUFHLENBQUNDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQzFDb0ksaUJBQWlCLEdBQUcsQ0FBQyxDQUFDakcsUUFBUSxJQUFJcEMsR0FBRyxLQUFLLEdBQUc7UUFDN0MsSUFBSSxDQUFDcUksaUJBQWlCLElBQUloSSxLQUFLLENBQUMsQ0FBQ0wsR0FBRyxDQUFDLEVBQUU7TUFDekM7SUFDRixDQUFDLE1BQU0sSUFBSUEsR0FBRyxLQUFLLElBQUksSUFBSSxPQUFPQSxHQUFHLEtBQUssUUFBUSxJQUFJLE9BQU9BLEdBQUcsS0FBSyxRQUFRLEVBQUU7SUFFL0UsSUFBSSxDQUFDb0MsUUFBUSxFQUFFO01BQ2IsSUFBSSxPQUFPcEMsR0FBRyxLQUFLLFFBQVEsRUFBRTtRQUMzQkEsR0FBRyxHQUFHcUgsSUFBSSxDQUFDc0QsR0FBRyxDQUFDM0ssR0FBRyxDQUFDO01BQ3JCLENBQUMsTUFBTSxJQUFJLE9BQU9BLEdBQUcsS0FBSyxRQUFRLEVBQUU7UUFDbEMsSUFBTTRLLElBQUksR0FBR0MsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUN0QjdLLEdBQUcsR0FBR0EsR0FBRyxHQUFHNEssSUFBSSxHQUFHLENBQUM1SyxHQUFHLEdBQUdBLEdBQUc7TUFDL0I7SUFDRjtJQUVBLElBQ0UsQ0FBQyxPQUFPQSxHQUFHLEtBQUssUUFBUSxJQUFJLE9BQU9BLEdBQUcsS0FBSyxRQUFRLE1BQ2xELE9BQU9tQixpQkFBaUIsS0FBSyxRQUFRLElBQUksT0FBT0EsaUJBQWlCLEtBQUssUUFBUSxDQUFDLEVBQ2hGO01BQ0EsSUFBQTJKLE1BQUEsR0FBdUIsQ0FBQyxFQUFFLEdBQUc5SyxHQUFHLEVBQUVzSCxLQUFLLENBQUMsR0FBRyxDQUFDO1FBQUF5RCxPQUFBLE9BQUE1RyxlQUFBLGFBQUEyRyxNQUFBO1FBQXJDdEMsS0FBRyxHQUFBdUMsT0FBQTtRQUFFdEMsT0FBTyxHQUFBc0MsT0FBQTtNQUNuQixJQUFNckMsV0FBVyxHQUFHQyxNQUFNLENBQUN4SCxpQkFBaUIsQ0FBQztNQUM3QyxJQUFJc0gsT0FBTyxJQUFJLElBQUksSUFBSUEsT0FBTyxDQUFDN0ksTUFBTSxHQUFHOEksV0FBVyxFQUFFO1FBQ25ELElBQU1FLGlCQUFpQixHQUFHSCxPQUFPLENBQUNyQixLQUFLLENBQUMsQ0FBQyxFQUFFc0IsV0FBVyxDQUFDO1FBQ3ZEMUksR0FBRyxNQUFBcUQsTUFBQSxDQUFNbUYsS0FBRyxPQUFBbkYsTUFBQSxDQUFJdUYsaUJBQWlCLENBQUU7UUFDbkMsSUFBSSxPQUFPNUgsS0FBSyxLQUFLLFdBQVcsRUFBRTtVQUNoQ3FELFFBQVEsQ0FBQ3JFLEdBQUcsQ0FBQztRQUNmLENBQUMsTUFBTTtVQUNMO1VBQ0EsQ0FBQTZGLEVBQUEsR0FBQTlCLFdBQVcsQ0FBQ2dDLE9BQU8sTUFBQSxJQUFBLElBQUFGLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBQUEsRUFBQSxDQUFBMUcsSUFBQSxDQUFBNEUsV0FBQSxFQUFHO1lBQUVrRSxNQUFNLEVBQUUzRSxRQUFRLENBQUN5QztVQUFRLENBQUUsRUFBRS9GLEdBQUcsS0FBQSxJQUFBLElBQUhBLEdBQUcsS0FBQSxLQUFBLENBQUEsR0FBSEEsR0FBRyxHQUFJLEVBQUUsQ0FBQztRQUNqRTtRQUNBO01BQ0Y7SUFDRjtJQUVBLElBQUksT0FBT0EsR0FBRyxLQUFLLFFBQVEsSUFBSSxPQUFPQSxHQUFHLEtBQUssUUFBUSxJQUFJLE9BQU9BLEdBQUcsS0FBSyxRQUFRLEVBQUU7TUFDakZBLEdBQUcsR0FBR0UsZ0JBQWdCLENBQUMsRUFBRSxHQUFHRixHQUFHLEVBQUVHLEdBQUcsRUFBRUMsR0FBRyxDQUFDO0lBQzVDO0lBRUEsSUFBSUosR0FBRyxLQUFLLEVBQUUsSUFBSUEsR0FBRyxJQUFJLElBQUksRUFBRTtNQUM3QnFFLFFBQVEsQ0FBQyxJQUFJLENBQUM7SUFDaEIsQ0FBQyxNQUFNO01BQ0wsSUFBSWdFLGlCQUFpQixFQUFFO1FBQ3JCckksR0FBRyxHQUFHLEdBQUc7TUFDWCxDQUFDLE1BQU07UUFDTCxJQUFNZ0wsTUFBTSxHQUFHLEVBQUUsR0FBR2hMLEdBQUc7UUFDdkIsSUFBTWdKLFFBQVEsR0FBRyxDQUFBakIsRUFBQSxHQUFBLENBQUFuQixFQUFBLEdBQUEsQ0FBQUQsRUFBQSxHQUFBcUUsTUFBTSxDQUFDL0IsS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFBLElBQUEsSUFBQXRDLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBQUEsRUFBQSxDQUFHLENBQUMsQ0FBQyxNQUFBLElBQUEsSUFBQUMsRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBLEtBQUEsQ0FBQSxHQUFBQSxFQUFBLENBQUVoSCxNQUFNLE1BQUEsSUFBQSxJQUFBbUksRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBQSxFQUFBLEdBQUksQ0FBQztRQUMzRCxJQUFNbUIsRUFBRSxHQUFHLElBQUExSSxxQkFBUyxFQUFDd0ssTUFBTSxDQUFDO1FBQzVCLElBQUk3QixVQUFVLEdBQUdELEVBQUUsQ0FBQ0UsT0FBTyxDQUFDSixRQUFRLENBQUM7UUFDckMsSUFBSTVHLFFBQVEsSUFBSTRJLE1BQU0sQ0FBQzNCLElBQUksQ0FBQSxDQUFFLENBQUNDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSUosRUFBRSxDQUFDSyxNQUFNLENBQUEsQ0FBRSxFQUFFO1VBQzVESixVQUFVLEdBQUdBLFVBQVUsQ0FBQ0csVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHSCxVQUFVLE9BQUE5RixNQUFBLENBQU84RixVQUFVLENBQUU7UUFDekU7UUFDQW5KLEdBQUcsR0FBRyxHQUFBcUQsTUFBQSxDQUFHOEYsVUFBVSxFQUFBOUYsTUFBQSxDQUFHNkUsZUFBZSxHQUFHLEdBQUcsR0FBRyxFQUFFLEVBQUdtQixJQUFJLENBQUEsQ0FBRTtNQUMzRDtNQUNBaEYsUUFBUSxDQUFDckUsR0FBRyxDQUFDO0lBQ2Y7SUFDQXdHLFlBQVksQ0FBQ3hHLEdBQUcsS0FBQSxJQUFBLElBQUhBLEdBQUcsS0FBQSxLQUFBLENBQUEsR0FBSEEsR0FBRyxHQUFJLEVBQUUsRUFBRWtJLGVBQWUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFYixJQUFJLENBQUNqSCxHQUFHLENBQUN5RCxxQkFBcUIsQ0FBQ2tDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM1RmpDLGVBQWUsQ0FBQ2lDLE9BQU8sR0FBRyxJQUFJO0VBQ2hDLENBQUMsRUFBRSxDQUFDL0UsS0FBSyxFQUFFRyxpQkFBaUIsRUFBRWhCLEdBQUcsRUFBRUMsR0FBRyxFQUFFZ0MsUUFBUSxDQUFDLENBQUM7RUFFbEQsSUFBQTZJLGdCQUFTLEVBQUMsWUFBSztJQUNibEgsV0FBVyxDQUFDZ0MsT0FBTyxHQUFHaEQsUUFBUTtJQUM5QndDLFFBQVEsQ0FBQ1EsT0FBTyxHQUFHO01BQ2pCL0UsS0FBSyxFQUFMQSxLQUFLO01BQ0xvRCxNQUFNLEVBQU5BLE1BQU07TUFDTmMsY0FBYyxFQUFkQSxjQUFjO01BQ2QvRSxHQUFHLEVBQUhBLEdBQUc7TUFDSEMsR0FBRyxFQUFIQSxHQUFHO01BQ0hnQyxRQUFRLEVBQVJBLFFBQVE7TUFDUmpCLGlCQUFpQixFQUFqQkE7SURaRSxDQ2FIO0VBQ0gsQ0FBQyxFQUFFLENBQUNpRCxNQUFNLEVBQUVwRCxLQUFLLEVBQUVrRSxjQUFjLEVBQUUvRSxHQUFHLEVBQUVDLEdBQUcsRUFBRWdDLFFBQVEsRUFBRWpCLGlCQUFpQixFQUFFNEIsUUFBUSxDQUFDLENBQUM7RUFFcEYsT0FBTyxJQUFBbUksZ0JBQUEsRUFBQSxLQUFBLEVBQUE7SUFDTHZKLFNBQVMsRUFBRXdCLE9BQU8sQ0FBQyxTQUFTLEVBQUUsSUFBQWdJLG1CQUFPLEVBQ25DdkosVUFBVSxFQUNWdUIsT0FBTyxDQUFDM0IsSUFBSSxDQUFDLEVBQ2JXLE9BQU8sSUFBSWdCLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFDN0JaLE9BQU8sSUFBSVksT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUM3QlgsUUFBUSxJQUFJVyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQy9CVixRQUFRLElBQUlVLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFDL0JpQixNQUFNLElBQUlqQixPQUFPLENBQUMsUUFBUSxDQUFDLENBQzVCLENBQUM7SUFBQS9CLFFBQUEsRUFBQSxDQUdBc0IsS0FBSyxHQUNESixPQUFPLEdBQ0wsSUFBQThJLGVBQUEsRUFBQ0Msa0JBQVEsRUFBQTtNQUFDQyxLQUFLLEVBQUMsTUFBTTtNQUFDQyxNQUFNLEVBQUMsTUFBTTtNQUFDNUosU0FBUyxFQUFFd0IsT0FBTyxDQUFDLGVBQWU7SUFBQyxDQUFBLENBQUksR0FDNUUsSUFBQWlJLGVBQUEsRUFBQSxNQUFBLEVBQUE7TUFBTXpKLFNBQVMsRUFBRXdCLE9BQU8sQ0FBQyxPQUFPLEVBQUUsSUFBQWdJLG1CQUFPLEVBQUM5SSxRQUFRLElBQUljLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFdEIsUUFBUSxDQUFDLENBQUM7TUFBQVQsUUFBQSxFQUFHc0I7SUFBSyxDQUFBLENBQVEsR0FDN0csSUFBSSxFQUVWLElBQUF3SSxnQkFBQSxFQUFBLEtBQUEsRUFBQTtNQUNFTSxHQUFHLEVBQUU1SCxZQUFZO01BQ2pCakMsU0FBUyxFQUFFd0IsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUFnSSxtQkFBTyxFQUFDeEosU0FBUyxFQUFFcUQsT0FBTyxJQUFJN0IsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7TUFDM0VzSSxPQUFPLEVBQUUsU0FBVEEsT0FBT0EsQ0FBR3ROLENBQUMsRUFBSTtRRDlCRCxJQUFJMEgsRUFBRTtRQytCbEIsSUFBSTFILENBQUMsQ0FBQzhKLE1BQU0sWUFBWXlELGdCQUFnQixFQUFFO1FBQzFDLENBQUE3RixFQUFBLEdBQUF2QyxRQUFRLENBQUN5QyxPQUFPLE1BQUEsSUFBQSxJQUFBRixFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQUFBLEVBQUEsQ0FBRVUsS0FBSyxDQUFBLENBQUU7UUFDekIsSUFBSTNCLFVBQVUsRUFBRVksV0FBVyxDQUFBLENBQUU7TUFDL0IsQ0FBQztNQUFBcEUsUUFBQSxFQUFBLENBR0N1QixNQUFNLElBQUksSUFBQXlJLGVBQUEsRUFBQSxNQUFBLEVBQUE7UUFDUkksR0FBRyxFQUFFL0gsU0FBUztRQUNkOUIsU0FBUyxFQUFFd0IsT0FBTyxDQUFDLFFBQVEsRUFBRWxCLFlBQVksQ0FBQztRQUFBYixRQUFBLEVBRXpDdUI7TUFBTSxDQUFBLENBQ0YsRUFFVCxJQUFBeUksZUFBQSxFQUFBLEtBQUEsRUFBQTtRQUNFekosU0FBUyxFQUFFd0IsT0FBTyxDQUFDLFNBQVMsRUFBRyxDQUFDNkIsT0FBTyxJQUFJSixVQUFVLEdBQUl6QixPQUFPLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQUEvQixRQUFBLEVBRXJGLElBQUFnSyxlQUFBLEVBQUEsT0FBQSxFQUFBdE0sTUFBQSxDQUFBNk0sTUFBQSxDQUFBLENBQUEsQ0FBQSxFQUNNekksSUFBSSxFQUFBO1VBQ1JzSSxHQUFHLEVBQUVsSSxRQUFRO1VBQ2J0QyxLQUFLLEVBQUVrRSxjQUFjO1VBQ3JCNUQsV0FBVyxFQUFFQSxXQUFXO1VBQ3hCbUIsUUFBUSxFQUFFQSxRQUFRO1VBQ2xCRCxRQUFRLEVBQUVBLFFBQVE7VUFDbEJvSixLQUFLLEVBQUU7WUFBRSxlQUFlLEtBQUF2SSxNQUFBLENBQUttQixNQUFNO1VBQUksQ0FBbUI7VUFDMUR6QixRQUFRLEVBQUUrRSxZQUFZO1VBQ3RCK0QsUUFBUSxFQUFFbkMsWUFBWTtVQUN0QnpHLE9BQU8sRUFBRSxTQUFUQSxPQUFPQSxDQUFFOUUsQ0FBQyxFQUFHO1lBQ1g4RyxVQUFVLENBQUMsSUFBSSxDQUFDO1lBQ2hCaEMsUUFBTyxLQUFBLElBQUEsSUFBUEEsUUFBTyxLQUFBLEtBQUEsQ0FBQSxHQUFBLEtBQUEsQ0FBQSxHQUFQQSxRQUFPLENBQUc5RSxDQUFDLENBQUM7VUFDZCxDQUFDO1VBQ0Q2RSxNQUFNLEVBQUUsU0FBUkEsTUFBTUEsQ0FBRTdFLENBQUMsRUFBRztZQUNWOEcsVUFBVSxDQUFDLEtBQUssQ0FBQztZQUNqQmpDLE9BQU0sS0FBQSxJQUFBLElBQU5BLE9BQU0sS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBTkEsT0FBTSxDQUFHN0UsQ0FBQyxDQUFDO1VBQ2I7UUFBQyxDQUFBLENBQUE7TUFDRCxDQUFBLENBQ0UsRUFFSjBFLFFBQVEsSUFBSSxJQUFBdUksZUFBQSxFQUFBLE1BQUEsRUFBQTtRQUNWSSxHQUFHLEVBQUU3SCxXQUFXO1FBQ2hCaEMsU0FBUyxFQUFFd0IsT0FBTyxDQUFDLFVBQVUsQ0FBQztRQUFBL0IsUUFBQSxFQUU3QnlCO01BQVEsQ0FBQSxDQUNKLEVBRVJQLE9BQU8sR0FBRyxJQUFBOEksZUFBQSxFQUFDVSxtQkFBTyxFQUFBO1FBQUNuSyxTQUFTLEVBQUV3QixPQUFPLENBQUMsZ0JBQWdCLENBQUM7UUFBRTRJLFdBQVcsRUFBQztNQUFHLENBQUEsQ0FBRyxHQUFHbkosTUFBTSxHQUFHLElBQUF3SSxlQUFBLEVBQUEsTUFBQSxFQUFBO1FBQU1JLEdBQUcsRUFBRTlILFNBQVM7UUFBRS9CLFNBQVMsRUFBRXdCLE9BQU8sQ0FBQyxRQUFRLEVBQUVqQixZQUFZLENBQUM7UUFBQWQsUUFBQSxFQUFHd0I7TUFBTSxDQUFBLENBQVEsR0FBRyxJQUFJLEVBQ2hMLElBQUF3SSxlQUFBLEVBQUEsTUFBQSxFQUFBO1FBQ0VJLEdBQUcsRUFBRWhJLFVBQVU7UUFDZjdCLFNBQVMsRUFBRXdCLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFDMUJzSSxPQUFPLEVBQUUsU0FBVEEsT0FBT0EsQ0FBRXROLENBQUM7VUFBQSxPQUFJQSxDQUFDLENBQUNzTCxlQUFlLENBQUEsQ0FBRTtRQUFBO1FBQUFySSxRQUFBLEVBRWhDOEQ7TUFBYyxDQUFBLENBQ1Y7SUFBQSxDQUFBLENBQ0gsRUFFSixDQUFDcEMsT0FBTyxJQUFJckIsUUFBUSxLQUFLLElBQUF5SixnQkFBQSxFQUFBLEtBQUEsRUFBQTtNQUFLdkosU0FBUyxFQUFFd0IsT0FBTyxDQUFDLE9BQU8sQ0FBQztNQUFBL0IsUUFBQSxFQUFBLENBQ3REMEIsT0FBTyxJQUFJLElBQUFzSSxlQUFBLEVBQUEsS0FBQSxFQUFBO1FBQUt6SixTQUFTLEVBQUV3QixPQUFPLENBQUMsU0FBUyxFQUFFbkIsVUFBVSxDQUFDO1FBQUFaLFFBQUEsRUFBRzBCO01BQU8sQ0FBQSxDQUFPLEVBQzFFckIsUUFBUSxJQUFJLElBQUEySixlQUFBLEVBQUEsS0FBQSxFQUFBO1FBQUt6SixTQUFTLEVBQUV3QixPQUFPLENBQUMsVUFBVSxFQUFFekIsV0FBVyxDQUFDO1FBQUFOLFFBQUEsRUFBR0s7TUFBUSxDQUFBLENBQU87SUFBQSxDQUFBLENBQzNFO0VBQUEsQ0FBQSxDQUVKO0FBQ1IsQ0FBQztBQUFDLElBQUF1SyxRQUFBLEdBQUFsTCxPQUFBLDJCQUVhLElBQUFtTCxXQUFJLEVBQUNwTCxXQUFXLENBQUMiLCJmaWxlIjoiY29tcG9uZW50cy9JbnB1dEFtb3VudC9JbnB1dEFtb3VudC5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX3Jlc3QgPSAodGhpcyAmJiB0aGlzLl9fcmVzdCkgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgICB2YXIgdCA9IHt9O1xuICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxuICAgICAgICB0W3BdID0gc1twXTtcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcbiAgICAgICAgfVxuICAgIHJldHVybiB0O1xufTtcbmltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBtZW1vLCB1c2VNZW1vLCB1c2VTdGF0ZSwgdXNlQ2FsbGJhY2ssIHVzZVJlZiwgdXNlRWZmZWN0LCB1c2VMYXlvdXRFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgQmlnTnVtYmVyIGZyb20gJ2JpZ251bWJlci5qcyc7XG5pbXBvcnQgeyBudW1lcmljRm9ybWF0dGVyIH0gZnJvbSAncmVhY3QtbnVtYmVyLWZvcm1hdCc7XG5pbXBvcnQgeyBTa2VsZXRvbiB9IGZyb20gJ3ByaW1lcmVhY3Qvc2tlbGV0b24nO1xuaW1wb3J0IFNwaW5uZXIgZnJvbSAnLi4vU3Bpbm5lcic7XG5pbXBvcnQgeyBkZWZhdWx0IGFzIGNsYXNzbmFtZXMsIGpvaW5DbHMgfSBmcm9tICcuLi8uLi91dGlscy9jbGFzc25hbWVzJztcbmNvbnN0IE1JTl9JTlBVVF9XSURUSCA9IDMzO1xuY29uc3Qgbm9ybWFsaXplTnVtYmVySW5wdXQgPSAodmFsKSA9PiB2YWxcbiAgICAucmVwbGFjZSgvW1xcdTMwMDJcXHVmZjBlXFx1ZmY2MV0vZywgJy4nKVxuICAgIC5yZXBsYWNlKC9bXFx1RkYwQ10vZywgJywnKTtcbmNvbnN0IGNhbGNWYWx1ZUluUmFuZ2UgPSAodmFsLCBtaW4sIG1heCkgPT4ge1xuICAgIGlmICh2YWwgPT09ICcnIHx8IHZhbCA9PT0gJy0nIHx8IGlzTmFOKCt2YWwpKVxuICAgICAgICByZXR1cm4gdmFsO1xuICAgIGxldCBjYWxjVmFsID0gdmFsO1xuICAgIGNvbnN0IGJuVmFsID0gQmlnTnVtYmVyKHZhbCk7XG4gICAgaWYgKHR5cGVvZiBtaW4gPT09ICdudW1iZXInIHx8IHR5cGVvZiBtaW4gPT09ICdiaWdpbnQnKSB7XG4gICAgICAgIGNvbnN0IG1pbkJuID0gQmlnTnVtYmVyKG1pbik7XG4gICAgICAgIGlmIChiblZhbC5sdChtaW5CbikpIHtcbiAgICAgICAgICAgIGNhbGNWYWwgPSAnJyArIG1pbjtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAodHlwZW9mIG1heCA9PT0gJ251bWJlcicgfHwgdHlwZW9mIG1heCA9PT0gJ2JpZ2ludCcpIHtcbiAgICAgICAgY29uc3QgbWF4Qm4gPSBCaWdOdW1iZXIobWF4KTtcbiAgICAgICAgaWYgKGJuVmFsLmd0KG1heEJuKSkge1xuICAgICAgICAgICAgY2FsY1ZhbCA9ICcnICsgbWF4O1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjYWxjVmFsO1xufTtcbmV4cG9ydCBjb25zdCBJbnB1dEFtb3VudCA9IHByb3BzID0+IHtcbiAgICBjb25zdCB7IHZhbHVlLCB0eXBlID0gJ3ByaW1hcnknLCBtYXhGcmFjdGlvbkRpZ2l0cywgY2hpbGRyZW4sIHBsYWNlaG9sZGVyID0gJzAnLCBtaW4sIG1heCwgXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgIHNpemUgPSAnbGFyZ2UnLCBmb290bm90ZSwgZm9vdG5vdGVDbHMsIGNsYXNzTmFtZSwgd3JhcHBlckNscywgbGFiZWxDbHMsIHByZWZpeENscyA9ICdpbnB1dC1hbW91bnQnLCBtZXNzYWdlQ2xzLCBwcmVmaXhFbGVDbHMsIHN1ZmZpeEVsZUNscywgaW52YWxpZCwgbmVnYXRpdmUsIHJlcXVpcmVkLCBsb2FkaW5nLCBzdWNjZXNzLCBkaXNhYmxlZCwgcmVhZE9ubHksIGxhYmVsLCBwcmVmaXgsIHN1ZmZpeCwgY3VycmVuY3ksIG1lc3NhZ2UsIG9uQ2hhbmdlLCBvbkJsdXIsIG9uRm9jdXMgfSA9IHByb3BzLCByZXN0ID0gX19yZXN0KHByb3BzLCBbXCJ2YWx1ZVwiLCBcInR5cGVcIiwgXCJtYXhGcmFjdGlvbkRpZ2l0c1wiLCBcImNoaWxkcmVuXCIsIFwicGxhY2Vob2xkZXJcIiwgXCJtaW5cIiwgXCJtYXhcIiwgXCJzaXplXCIsIFwiZm9vdG5vdGVcIiwgXCJmb290bm90ZUNsc1wiLCBcImNsYXNzTmFtZVwiLCBcIndyYXBwZXJDbHNcIiwgXCJsYWJlbENsc1wiLCBcInByZWZpeENsc1wiLCBcIm1lc3NhZ2VDbHNcIiwgXCJwcmVmaXhFbGVDbHNcIiwgXCJzdWZmaXhFbGVDbHNcIiwgXCJpbnZhbGlkXCIsIFwibmVnYXRpdmVcIiwgXCJyZXF1aXJlZFwiLCBcImxvYWRpbmdcIiwgXCJzdWNjZXNzXCIsIFwiZGlzYWJsZWRcIiwgXCJyZWFkT25seVwiLCBcImxhYmVsXCIsIFwicHJlZml4XCIsIFwic3VmZml4XCIsIFwiY3VycmVuY3lcIiwgXCJtZXNzYWdlXCIsIFwib25DaGFuZ2VcIiwgXCJvbkJsdXJcIiwgXCJvbkZvY3VzXCJdKTtcbiAgICBjb25zdCBjbGFzc2VzID0gY2xhc3NuYW1lcyhgJHtwcmVmaXhDbHN9LSR7dHlwZX1gKTtcbiAgICBjb25zdCBpbnB1dFJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBmYWtlRWxlUmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IHByZWZpeFJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBzdWZmaXhSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgY3VycmVuY3lSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgY29udGFpbmVyUmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGlucHV0Q2FyZXRQb3NpdGlvblJlZiA9IHVzZVJlZigwKTtcbiAgICBjb25zdCBpZ25vcmVTZWxlY3RSZWYgPSB1c2VSZWYoZmFsc2UpO1xuICAgIGNvbnN0IG9uQ2hhbmdlUmVmID0gdXNlUmVmKG9uQ2hhbmdlKTtcbiAgICBjb25zdCBbX3ZhbHVlLCBzZXRWYWx1ZV0gPSB1c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbX3dpZHRoLCBzZXRXaWR0aF0gPSB1c2VTdGF0ZShNSU5fSU5QVVRfV0lEVEgpO1xuICAgIGNvbnN0IFtpc01heFdpZHRoLCBzZXRJc01heFdpZHRoXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbaXNGb2N1cywgc2V0SXNGb2N1c10gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgZm9ybWF0dGVkVmFsdWUgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIG51bWVyaWNGb3JtYXR0ZXIoJycgKyAoX3ZhbHVlID09IG51bGwgPyAnJyA6IF92YWx1ZSksIHtcbiAgICAgICAgICAgIHRob3VzYW5kU2VwYXJhdG9yOiB0cnVlLFxuICAgICAgICAgICAgYWxsb3dOZWdhdGl2ZTogbmVnYXRpdmUsXG4gICAgICAgIH0pO1xuICAgIH0sIFtfdmFsdWUsIG5lZ2F0aXZlXSk7XG4gICAgY29uc3QgdmFsdWVSZWYgPSB1c2VSZWYoe1xuICAgICAgICB2YWx1ZSxcbiAgICAgICAgX3ZhbHVlLFxuICAgICAgICBmb3JtYXR0ZWRWYWx1ZSxcbiAgICAgICAgbWluLFxuICAgICAgICBtYXgsXG4gICAgICAgIG5lZ2F0aXZlLFxuICAgICAgICBtYXhGcmFjdGlvbkRpZ2l0cyxcbiAgICB9KTtcbiAgICBjb25zdCBzY3JvbGxUb0VuZCA9IHVzZUNhbGxiYWNrKChzdGlja3kgPSBmYWxzZSkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gaW5wdXRSZWYuY3VycmVudDtcbiAgICAgICAgaWYgKCFpbnB1dClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgbGVuID0gKF9hID0gaW5wdXQudmFsdWUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5sZW5ndGg7XG4gICAgICAgIGNvbnN0IHBvc2l0aW9uID0gaW5wdXQuc2Nyb2xsTGVmdDtcbiAgICAgICAgY29uc3Qgc2hvdWxkVG9FbmQgPSAhc3RpY2t5O1xuICAgICAgICBjb25zdCBzdGFydCA9IHNob3VsZFRvRW5kID8gbGVuIDogaW5wdXRDYXJldFBvc2l0aW9uUmVmLmN1cnJlbnQ7XG4gICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKHN0YXJ0LCBzdGFydCk7XG4gICAgICAgIGlucHV0LnNjcm9sbExlZnQgPSBzaG91bGRUb0VuZCA/IGlucHV0LnNjcm9sbFdpZHRoIDogcG9zaXRpb247XG4gICAgICAgIGlucHV0LmZvY3VzKCk7XG4gICAgfSwgW10pO1xuICAgIGNvbnN0IGNhbGNDYXJldFBvcyA9IHVzZUNhbGxiYWNrKCh2YWwsIG9mZnNldCA9IDAsIGN1cnJQb3MpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2M7XG4gICAgICAgIGlmIChpbnB1dFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICBjb25zdCB7IF92YWx1ZSwgbmVnYXRpdmUsIGZvcm1hdHRlZFZhbHVlIH0gPSB2YWx1ZVJlZi5jdXJyZW50O1xuICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkTmV3VmFsID0gbnVtZXJpY0Zvcm1hdHRlcih2YWwsIHtcbiAgICAgICAgICAgICAgICB0aG91c2FuZFNlcGFyYXRvcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICBhbGxvd05lZ2F0aXZlOiBuZWdhdGl2ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3Qgb3JpZ2luT2Zmc2V0ID0gdmFsLmxlbmd0aCAtICgoX2EgPSBfdmFsdWUgPT09IG51bGwgfHwgX3ZhbHVlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdmFsdWUubGVuZ3RoKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAwKTtcbiAgICAgICAgICAgIGNvbnN0IGlzQWRkID0gb3JpZ2luT2Zmc2V0ID4gMDtcbiAgICAgICAgICAgIGNvbnN0IGlnbm9yZU9sZFBvcyA9IGlzQWRkID8gdmFsLmxlbmd0aCAtICgoX2IgPSBfdmFsdWUgPT09IG51bGwgfHwgX3ZhbHVlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdmFsdWUubGVuZ3RoKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAwKSA+IDEgOiBmYWxzZTtcbiAgICAgICAgICAgIGxldCBwb3NpdGlvbiA9IChfYyA9IGN1cnJQb3MgIT09IG51bGwgJiYgY3VyclBvcyAhPT0gdm9pZCAwID8gY3VyclBvcyA6IGlucHV0UmVmLmN1cnJlbnQuc2VsZWN0aW9uRW5kKSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiAwO1xuICAgICAgICAgICAgaWYgKCFpZ25vcmVPbGRQb3MpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBvbGRQb3NWYWwgPSBmb3JtYXR0ZWRWYWx1ZS5zbGljZSgwLCBNYXRoLm1heChwb3NpdGlvbiwgMCkpO1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uID0gb2xkUG9zVmFsLnNwbGl0KCcsJykuam9pbignJykubGVuZ3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgcG9zVmFsID0gdmFsLnNsaWNlKDAsIChwb3NpdGlvbiArIG9yaWdpbk9mZnNldCkpO1xuICAgICAgICAgICAgZm9ybWF0dGVkTmV3VmFsLnNwbGl0KCcnKS5yZWR1Y2UoKGFjYywgY2hhciwgaW5kKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGNoYXIgPT09ICcsJylcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGFjYy5wdXNoKGNoYXIpO1xuICAgICAgICAgICAgICAgIGlmIChhY2Muam9pbignJykgPT09IHBvc1ZhbCkge1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IGluZCArIDE7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICB9LCBbXSk7XG4gICAgICAgICAgICBpbnB1dENhcmV0UG9zaXRpb25SZWYuY3VycmVudCA9IHBvc2l0aW9uICsgb2Zmc2V0O1xuICAgICAgICB9XG4gICAgfSwgW10pO1xuICAgIGNvbnN0IGhhbmRsZUNoYW5nZSA9IHVzZUNhbGxiYWNrKChlKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jLCBfZDtcbiAgICAgICAgaWYgKGRpc2FibGVkIHx8IHJlYWRPbmx5KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCB7IHZhbHVlLCBfdmFsdWUsIGZvcm1hdHRlZFZhbHVlLCBtaW4sIG1heCwgbmVnYXRpdmUsIG1heEZyYWN0aW9uRGlnaXRzIH0gPSB2YWx1ZVJlZi5jdXJyZW50O1xuICAgICAgICBsZXQgdmFsID0gZS50YXJnZXQudmFsdWU7XG4gICAgICAgIGlmICh2YWwgIT0gbnVsbClcbiAgICAgICAgICAgIHZhbCA9IG5vcm1hbGl6ZU51bWJlcklucHV0KHZhbCkuc3BsaXQoJywnKS5qb2luKCcnKTtcbiAgICAgICAgY29uc3QgaGFzRGVjaW1hbFBvaW50ID0gISF2YWwgJiYgdmFsLmVuZHNXaXRoKCcuJyk7XG4gICAgICAgIGlmIChoYXNEZWNpbWFsUG9pbnQpXG4gICAgICAgICAgICB2YWwgPSB2YWwuc2xpY2UoMCwgLTEpO1xuICAgICAgICBpZiAoIW5lZ2F0aXZlICYmICh2YWwgPT09IG51bGwgfHwgdmFsID09PSB2b2lkIDAgPyB2b2lkIDAgOiB2YWwuaW5jbHVkZXMoJy0nKSkpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IGlzU3RhbmRhbG9uZU1pbnVzID0gbmVnYXRpdmUgJiYgdmFsID09PSAnLSc7XG4gICAgICAgIGlmICghaXNTdGFuZGFsb25lTWludXMgJiYgaXNOYU4oK3ZhbCkpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmICh2YWwgPT09IF92YWx1ZSAmJiAhaGFzRGVjaW1hbFBvaW50KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAodHlwZW9mIG1heEZyYWN0aW9uRGlnaXRzID09PSAnbnVtYmVyJyB8fCB0eXBlb2YgbWF4RnJhY3Rpb25EaWdpdHMgPT09ICdiaWdpbnQnKSB7XG4gICAgICAgICAgICBjb25zdCBbaW50LCBkZWNpbWFsXSA9IHZhbC5zcGxpdCgnLicpO1xuICAgICAgICAgICAgY29uc3QgbWF4RGVjaW1hbHMgPSBOdW1iZXIobWF4RnJhY3Rpb25EaWdpdHMpO1xuICAgICAgICAgICAgaWYgKGRlY2ltYWwgIT0gbnVsbCAmJiBkZWNpbWFsLmxlbmd0aCA+IG1heERlY2ltYWxzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdHJ1bmNhdGVkRGVjaW1hbHMgPSBkZWNpbWFsLnNsaWNlKDAsIG1heERlY2ltYWxzKTtcbiAgICAgICAgICAgICAgICBjb25zdCBbb2xkSW50LF0gPSBmb3JtYXR0ZWRWYWx1ZS5zcGxpdCgnLicpO1xuICAgICAgICAgICAgICAgIGlmIChvbGRJbnQuc3BsaXQoJywnKS5qb2luKCcnKSA9PSBpbnQpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB2YWwgPSBgJHtpbnR9LiR7dHJ1bmNhdGVkRGVjaW1hbHN9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoKHR5cGVvZiBtaW4gPT09ICdudW1iZXInIHx8IHR5cGVvZiBtaW4gPT09ICdiaWdpbnQnKSB8fCAodHlwZW9mIG1heCA9PT0gJ251bWJlcicgfHwgdHlwZW9mIG1heCA9PT0gJ2JpZ2ludCcpKSB7XG4gICAgICAgICAgICB2YWwgPSBjYWxjVmFsdWVJblJhbmdlKHZhbCwgbWluLCBtYXgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YWwgIT09ICcnKSB7XG4gICAgICAgICAgICBpZiAoaXNTdGFuZGFsb25lTWludXMpIHtcbiAgICAgICAgICAgICAgICB2YWwgPSAnLSc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkZWNpbWFscyA9IChfYyA9IChfYiA9IChfYSA9IHZhbC5tYXRjaCgvXFwuKFxcZCspJC8pKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2FbMV0pID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5sZW5ndGgpICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6IDA7XG4gICAgICAgICAgICAgICAgY29uc3QgYm4gPSBCaWdOdW1iZXIodmFsKTtcbiAgICAgICAgICAgICAgICBsZXQgbm9ybWFsaXplZCA9IGJuLnRvRml4ZWQoZGVjaW1hbHMpO1xuICAgICAgICAgICAgICAgIGlmIChuZWdhdGl2ZSAmJiB2YWwudHJpbSgpLnN0YXJ0c1dpdGgoJy0nKSAmJiBibi5pc1plcm8oKSkge1xuICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkID0gbm9ybWFsaXplZC5zdGFydHNXaXRoKCctJykgPyBub3JtYWxpemVkIDogYC0ke25vcm1hbGl6ZWR9YDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFsID0gYCR7bm9ybWFsaXplZH0ke2hhc0RlY2ltYWxQb2ludCA/ICcuJyA6ICcnfWAudHJpbSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBzZXRWYWx1ZSh2YWwgPT09ICcnID8gbnVsbCA6IHZhbCk7XG4gICAgICAgICAgICBjYWxjQ2FyZXRQb3ModmFsLCBoYXNEZWNpbWFsUG9pbnQgPyAyIDogMCwgTWF0aC5tYXgoaW5wdXRDYXJldFBvc2l0aW9uUmVmLmN1cnJlbnQsIDApKTtcbiAgICAgICAgICAgIGlnbm9yZVNlbGVjdFJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgICAgKF9kID0gb25DaGFuZ2VSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2QgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kLmNhbGwob25DaGFuZ2VSZWYsIGUsIHZhbCk7XG4gICAgfSwgW2Rpc2FibGVkLCByZWFkT25seV0pO1xuICAgIGNvbnN0IGhhbmRsZVNlbGVjdCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAoaWdub3JlU2VsZWN0UmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIGlnbm9yZVNlbGVjdFJlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY3VyclBvcyA9IChfYSA9IGlucHV0UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5zZWxlY3Rpb25FbmQ7XG4gICAgICAgIGlmICh0eXBlb2YgY3VyclBvcyA9PT0gJ251bWJlcicpXG4gICAgICAgICAgICBpbnB1dENhcmV0UG9zaXRpb25SZWYuY3VycmVudCA9IGN1cnJQb3M7XG4gICAgfSwgW10pO1xuICAgIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jLCBfZCwgX2UsIF9mLCBfZywgX2gsIF9qLCBfaztcbiAgICAgICAgY29uc3QgY29udGFpbmVyV2lkdGggPSAoX2IgPSAoX2EgPSBjb250YWluZXJSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLm9mZnNldFdpZHRoKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiBNSU5fSU5QVVRfV0lEVEg7XG4gICAgICAgIGNvbnN0IHByZWZpeFdpZHRoID0gKF9kID0gKF9jID0gcHJlZml4UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy5vZmZzZXRXaWR0aCkgIT09IG51bGwgJiYgX2QgIT09IHZvaWQgMCA/IF9kIDogMDtcbiAgICAgICAgY29uc3Qgc3VmZml4V2lkdGggPSAoX2YgPSAoX2UgPSBzdWZmaXhSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9lLm9mZnNldFdpZHRoKSAhPT0gbnVsbCAmJiBfZiAhPT0gdm9pZCAwID8gX2YgOiAwO1xuICAgICAgICBjb25zdCBjdXJyZW5jeVdpZHRoID0gKF9oID0gKF9nID0gY3VycmVuY3lSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2cgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9nLm9mZnNldFdpZHRoKSAhPT0gbnVsbCAmJiBfaCAhPT0gdm9pZCAwID8gX2ggOiAwO1xuICAgICAgICBjb25zdCBmYWtlV2lkdGggPSAoX2sgPSAoX2ogPSBmYWtlRWxlUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9qID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfai5vZmZzZXRXaWR0aCkgIT09IG51bGwgJiYgX2sgIT09IHZvaWQgMCA/IF9rIDogMDtcbiAgICAgICAgY29uc3QgZ2FwV2lkdGggPSBwcmVmaXhXaWR0aCAmJiBzdWZmaXhXaWR0aCAmJiBjdXJyZW5jeVdpZHRoXG4gICAgICAgICAgICA/IDI0XG4gICAgICAgICAgICA6IChwcmVmaXhXaWR0aCAmJiBzdWZmaXhXaWR0aCkgfHwgKHByZWZpeFdpZHRoICYmIGN1cnJlbmN5V2lkdGgpIHx8IChzdWZmaXhXaWR0aCAmJiBjdXJyZW5jeVdpZHRoKVxuICAgICAgICAgICAgICAgID8gMTZcbiAgICAgICAgICAgICAgICA6IHByZWZpeFdpZHRoIHx8IHN1ZmZpeFdpZHRoIHx8IGN1cnJlbmN5V2lkdGhcbiAgICAgICAgICAgICAgICAgICAgPyA4XG4gICAgICAgICAgICAgICAgICAgIDogMDtcbiAgICAgICAgY29uc3QgbWF4V2lkdGggPSBjb250YWluZXJXaWR0aCAtIHByZWZpeFdpZHRoIC0gc3VmZml4V2lkdGggLSBjdXJyZW5jeVdpZHRoIC0gZ2FwV2lkdGg7XG4gICAgICAgIGNvbnN0IGlzTWF4ID0gZmFrZVdpZHRoID49IG1heFdpZHRoO1xuICAgICAgICBzZXRXaWR0aChNYXRoLm1pbihtYXhXaWR0aCwgTWF0aC5tYXgoZmFrZVdpZHRoLCBNSU5fSU5QVVRfV0lEVEgpKSk7XG4gICAgICAgIHNldElzTWF4V2lkdGgoaXNNYXgpO1xuICAgICAgICBpZiAoaXNGb2N1cylcbiAgICAgICAgICAgIHNjcm9sbFRvRW5kKHRydWUpO1xuICAgIH0sIFtfdmFsdWUsIHByZWZpeCwgc3VmZml4LCBjdXJyZW5jeSwgaXNGb2N1c10pO1xuICAgIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jLCBfZDtcbiAgICAgICAgbGV0IHZhbCA9IHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcgPyBfdmFsdWUgOiB2YWx1ZTtcbiAgICAgICAgbGV0IGhhc0RlY2ltYWxQb2ludCA9IGZhbHNlO1xuICAgICAgICBsZXQgaXNTdGFuZGFsb25lTWludXMgPSBmYWxzZTtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBpZiAodmFsID09PSAnJykge1xuICAgICAgICAgICAgICAgIHZhbCA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YWwgPSBub3JtYWxpemVOdW1iZXJJbnB1dCh2YWwpLnNwbGl0KCcsJykuam9pbignJyk7XG4gICAgICAgICAgICAgICAgaGFzRGVjaW1hbFBvaW50ID0gISF2YWwgJiYgdmFsLmVuZHNXaXRoKCcuJyk7XG4gICAgICAgICAgICAgICAgaWYgKGhhc0RlY2ltYWxQb2ludClcbiAgICAgICAgICAgICAgICAgICAgdmFsID0gdmFsLnNsaWNlKDAsIC0xKTtcbiAgICAgICAgICAgICAgICBpZiAoIW5lZ2F0aXZlKVxuICAgICAgICAgICAgICAgICAgICB2YWwgPSB2YWwucmVwbGFjZSgvLS9nLCAnJyk7XG4gICAgICAgICAgICAgICAgaXNTdGFuZGFsb25lTWludXMgPSAhIW5lZ2F0aXZlICYmIHZhbCA9PT0gJy0nO1xuICAgICAgICAgICAgICAgIGlmICghaXNTdGFuZGFsb25lTWludXMgJiYgaXNOYU4oK3ZhbCkpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh2YWwgIT09IG51bGwgJiYgdHlwZW9mIHZhbCAhPT0gJ251bWJlcicgJiYgdHlwZW9mIHZhbCAhPT0gJ2JpZ2ludCcpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmICghbmVnYXRpdmUpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgICAgIHZhbCA9IE1hdGguYWJzKHZhbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICh0eXBlb2YgdmFsID09PSAnYmlnaW50Jykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHplcm8gPSBCaWdJbnQoMCk7XG4gICAgICAgICAgICAgICAgdmFsID0gdmFsIDwgemVybyA/IC12YWwgOiB2YWw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCh0eXBlb2YgdmFsID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdmFsID09PSAnbnVtYmVyJykgJiZcbiAgICAgICAgICAgICh0eXBlb2YgbWF4RnJhY3Rpb25EaWdpdHMgPT09ICdudW1iZXInIHx8IHR5cGVvZiBtYXhGcmFjdGlvbkRpZ2l0cyA9PT0gJ2JpZ2ludCcpKSB7XG4gICAgICAgICAgICBjb25zdCBbaW50LCBkZWNpbWFsXSA9ICgnJyArIHZhbCkuc3BsaXQoJy4nKTtcbiAgICAgICAgICAgIGNvbnN0IG1heERlY2ltYWxzID0gTnVtYmVyKG1heEZyYWN0aW9uRGlnaXRzKTtcbiAgICAgICAgICAgIGlmIChkZWNpbWFsICE9IG51bGwgJiYgZGVjaW1hbC5sZW5ndGggPiBtYXhEZWNpbWFscykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRydW5jYXRlZERlY2ltYWxzID0gZGVjaW1hbC5zbGljZSgwLCBtYXhEZWNpbWFscyk7XG4gICAgICAgICAgICAgICAgdmFsID0gYCR7aW50fS4ke3RydW5jYXRlZERlY2ltYWxzfWA7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0VmFsdWUodmFsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgKF9hID0gb25DaGFuZ2VSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNhbGwob25DaGFuZ2VSZWYsIHsgdGFyZ2V0OiBpbnB1dFJlZi5jdXJyZW50IH0sIHZhbCAhPT0gbnVsbCAmJiB2YWwgIT09IHZvaWQgMCA/IHZhbCA6ICcnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgdmFsID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdmFsID09PSAnbnVtYmVyJyB8fCB0eXBlb2YgdmFsID09PSAnYmlnaW50Jykge1xuICAgICAgICAgICAgdmFsID0gY2FsY1ZhbHVlSW5SYW5nZSgnJyArIHZhbCwgbWluLCBtYXgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YWwgPT09ICcnIHx8IHZhbCA9PSBudWxsKSB7XG4gICAgICAgICAgICBzZXRWYWx1ZShudWxsKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmIChpc1N0YW5kYWxvbmVNaW51cykge1xuICAgICAgICAgICAgICAgIHZhbCA9ICctJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IHN0clZhbCA9ICcnICsgdmFsO1xuICAgICAgICAgICAgICAgIGNvbnN0IGRlY2ltYWxzID0gKF9kID0gKF9jID0gKF9iID0gc3RyVmFsLm1hdGNoKC9cXC4oXFxkKykkLykpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYlsxXSkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLmxlbmd0aCkgIT09IG51bGwgJiYgX2QgIT09IHZvaWQgMCA/IF9kIDogMDtcbiAgICAgICAgICAgICAgICBjb25zdCBibiA9IEJpZ051bWJlcihzdHJWYWwpO1xuICAgICAgICAgICAgICAgIGxldCBub3JtYWxpemVkID0gYm4udG9GaXhlZChkZWNpbWFscyk7XG4gICAgICAgICAgICAgICAgaWYgKG5lZ2F0aXZlICYmIHN0clZhbC50cmltKCkuc3RhcnRzV2l0aCgnLScpICYmIGJuLmlzWmVybygpKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWQgPSBub3JtYWxpemVkLnN0YXJ0c1dpdGgoJy0nKSA/IG5vcm1hbGl6ZWQgOiBgLSR7bm9ybWFsaXplZH1gO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YWwgPSBgJHtub3JtYWxpemVkfSR7aGFzRGVjaW1hbFBvaW50ID8gJy4nIDogJyd9YC50cmltKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZXRWYWx1ZSh2YWwpO1xuICAgICAgICB9XG4gICAgICAgIGNhbGNDYXJldFBvcyh2YWwgIT09IG51bGwgJiYgdmFsICE9PSB2b2lkIDAgPyB2YWwgOiAnJywgaGFzRGVjaW1hbFBvaW50ID8gMiA6IDAsIE1hdGgubWF4KGlucHV0Q2FyZXRQb3NpdGlvblJlZi5jdXJyZW50LCAwKSk7XG4gICAgICAgIGlnbm9yZVNlbGVjdFJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICB9LCBbdmFsdWUsIG1heEZyYWN0aW9uRGlnaXRzLCBtaW4sIG1heCwgbmVnYXRpdmVdKTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBvbkNoYW5nZVJlZi5jdXJyZW50ID0gb25DaGFuZ2U7XG4gICAgICAgIHZhbHVlUmVmLmN1cnJlbnQgPSB7XG4gICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgIF92YWx1ZSxcbiAgICAgICAgICAgIGZvcm1hdHRlZFZhbHVlLFxuICAgICAgICAgICAgbWluLFxuICAgICAgICAgICAgbWF4LFxuICAgICAgICAgICAgbmVnYXRpdmUsXG4gICAgICAgICAgICBtYXhGcmFjdGlvbkRpZ2l0c1xuICAgICAgICB9O1xuICAgIH0sIFtfdmFsdWUsIHZhbHVlLCBmb3JtYXR0ZWRWYWx1ZSwgbWluLCBtYXgsIG5lZ2F0aXZlLCBtYXhGcmFjdGlvbkRpZ2l0cywgb25DaGFuZ2VdKTtcbiAgICByZXR1cm4gX2pzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ3dyYXBwZXInLCBqb2luQ2xzKHdyYXBwZXJDbHMsIGNsYXNzZXMoc2l6ZSksIGludmFsaWQgJiYgY2xhc3NlcygnaW52YWxpZCcpLCBzdWNjZXNzICYmIGNsYXNzZXMoJ3N1Y2Nlc3MnKSwgZGlzYWJsZWQgJiYgY2xhc3NlcygnZGlzYWJsZWQnKSwgcmVhZE9ubHkgJiYgY2xhc3NlcygncmVhZG9ubHknKSwgX3ZhbHVlICYmIGNsYXNzZXMoJ2ZpbGxlZCcpKSksIGNoaWxkcmVuOiBbbGFiZWxcbiAgICAgICAgICAgICAgICA/IGxvYWRpbmdcbiAgICAgICAgICAgICAgICAgICAgPyBfanN4KFNrZWxldG9uLCB7IHdpZHRoOiAnNzJweCcsIGhlaWdodDogJzE4cHgnLCBjbGFzc05hbWU6IGNsYXNzZXMoJ2xhYmVsLWxvYWRpbmcnKSB9KVxuICAgICAgICAgICAgICAgICAgICA6IF9qc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdsYWJlbCcsIGpvaW5DbHMocmVxdWlyZWQgJiYgY2xhc3NlcygnbGFiZWwtcmVxdWlyZWQnKSwgbGFiZWxDbHMpKSwgY2hpbGRyZW46IGxhYmVsIH0pXG4gICAgICAgICAgICAgICAgOiBudWxsLCBfanN4cyhcImRpdlwiLCB7IHJlZjogY29udGFpbmVyUmVmLCBjbGFzc05hbWU6IGNsYXNzZXModm9pZCAwLCBqb2luQ2xzKGNsYXNzTmFtZSwgaXNGb2N1cyAmJiBjbGFzc2VzKCdmb2N1cycpKSksIG9uQ2xpY2s6IChlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGUudGFyZ2V0IGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudClcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgKF9hID0gaW5wdXRSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc01heFdpZHRoKVxuICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsVG9FbmQoKTtcbiAgICAgICAgICAgICAgICB9LCBjaGlsZHJlbjogW3ByZWZpeCAmJiBfanN4KFwic3BhblwiLCB7IHJlZjogcHJlZml4UmVmLCBjbGFzc05hbWU6IGNsYXNzZXMoJ3ByZWZpeCcsIHByZWZpeEVsZUNscyksIGNoaWxkcmVuOiBwcmVmaXggfSksIF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2VsZW1lbnQnLCAoIWlzRm9jdXMgJiYgaXNNYXhXaWR0aCkgPyBjbGFzc2VzKCdlbGVtZW50LW1heCcpIDogJycpLCBjaGlsZHJlbjogX2pzeChcImlucHV0XCIsIE9iamVjdC5hc3NpZ24oe30sIHJlc3QsIHsgcmVmOiBpbnB1dFJlZiwgdmFsdWU6IGZvcm1hdHRlZFZhbHVlLCBwbGFjZWhvbGRlcjogcGxhY2Vob2xkZXIsIHJlYWRPbmx5OiByZWFkT25seSwgZGlzYWJsZWQ6IGRpc2FibGVkLCBzdHlsZTogeyAnLS1pbnB1dC13aWR0aCc6IGAke193aWR0aH1weGAgfSwgb25DaGFuZ2U6IGhhbmRsZUNoYW5nZSwgb25TZWxlY3Q6IGhhbmRsZVNlbGVjdCwgb25Gb2N1czogZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldElzRm9jdXModHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRm9jdXMgPT09IG51bGwgfHwgb25Gb2N1cyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25Gb2N1cyhlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBvbkJsdXI6IGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJc0ZvY3VzKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyID09PSBudWxsIHx8IG9uQmx1ciA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25CbHVyKGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gfSkpIH0pLCBjdXJyZW5jeSAmJiBfanN4KFwic3BhblwiLCB7IHJlZjogY3VycmVuY3lSZWYsIGNsYXNzTmFtZTogY2xhc3NlcygnY3VycmVuY3knKSwgY2hpbGRyZW46IGN1cnJlbmN5IH0pLCBsb2FkaW5nID8gX2pzeChTcGlubmVyLCB7IGNsYXNzTmFtZTogY2xhc3Nlcygnc3VmZml4LWxvYWRpbmcnKSwgc3Ryb2tlV2lkdGg6ICc0JyB9KSA6IHN1ZmZpeCA/IF9qc3goXCJzcGFuXCIsIHsgcmVmOiBzdWZmaXhSZWYsIGNsYXNzTmFtZTogY2xhc3Nlcygnc3VmZml4Jywgc3VmZml4RWxlQ2xzKSwgY2hpbGRyZW46IHN1ZmZpeCB9KSA6IG51bGwsIF9qc3goXCJzcGFuXCIsIHsgcmVmOiBmYWtlRWxlUmVmLCBjbGFzc05hbWU6IGNsYXNzZXMoJ2Zha2UnKSwgb25DbGljazogZSA9PiBlLnN0b3BQcm9wYWdhdGlvbigpLCBjaGlsZHJlbjogZm9ybWF0dGVkVmFsdWUgfSldIH0pLCAobWVzc2FnZSB8fCBmb290bm90ZSkgJiYgX2pzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2V4dHJhJyksIGNoaWxkcmVuOiBbbWVzc2FnZSAmJiBfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdtZXNzYWdlJywgbWVzc2FnZUNscyksIGNoaWxkcmVuOiBtZXNzYWdlIH0pLCBmb290bm90ZSAmJiBfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdmb290bm90ZScsIGZvb3Rub3RlQ2xzKSwgY2hpbGRyZW46IGZvb3Rub3RlIH0pXSB9KV0gfSk7XG59O1xuZXhwb3J0IGRlZmF1bHQgbWVtbyhJbnB1dEFtb3VudCk7IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9