@agilemotion/oui-react-js 2.0.22 → 2.0.23

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.
@@ -492,7 +492,7 @@ const FieldSet = /*#__PURE__*/_react.default.memo(props => {
492
492
  function render(fieldSet) {
493
493
  return _Utils.default.isNull(fieldSet.fields) || fieldSet.fields.length === 0 ? /*#__PURE__*/_react.default.createElement("div", null, " Error: A fieldSet must have fields") : /*#__PURE__*/_react.default.createElement("div", null, fieldGrid.rows.map((row, i) => {
494
494
  return /*#__PURE__*/_react.default.createElement("div", {
495
- className: "row",
495
+ className: "row fielset-row",
496
496
  key: i,
497
497
  style: {
498
498
  marginLeft: '0',
@@ -512,14 +512,25 @@ const FieldSet = /*#__PURE__*/_react.default.memo(props => {
512
512
  colspan = colspanVal;
513
513
  }
514
514
  }
515
- width = colspan / fieldGrid.maxColPerRow * 100;
515
+
516
+ // The row is a flex container with an
517
+ // 8px column-gap (see fieldset.css). Each
518
+ // item subtracts its share of the gaps so
519
+ // `colspan` columns + the gaps between
520
+ // them still sum to the row width — and
521
+ // wrapped items align flush (gap adds no
522
+ // leading space at the start of a line).
523
+ const COL_GAP = 8;
524
+ const maxCol = fieldGrid.maxColPerRow;
525
+ width = colspan / maxCol * 100;
526
+ const gapOffset = (maxCol - colspan) * COL_GAP / maxCol;
516
527
  let containerStyle = {
517
528
  paddingLeft: '0',
518
529
  paddingRight: '0',
519
530
  marginLeft: '0',
520
531
  marginRight: '0',
521
532
  minWidth: '320px',
522
- width: width + '%'
533
+ width: "calc(".concat(width, "% - ").concat(gapOffset, "px)")
523
534
  };
524
535
  field.index = index;
525
536
  let style = (_field$attributes = field.attributes) !== null && _field$attributes !== void 0 && _field$attributes.containerStyle ? _Utils.default.mergeObjects((_field$attributes2 = field.attributes) === null || _field$attributes2 === void 0 ? void 0 : _field$attributes2.containerStyle, containerStyle) : containerStyle;
@@ -535,11 +546,13 @@ const FieldSet = /*#__PURE__*/_react.default.memo(props => {
535
546
  className: 'fieldSetWrapper',
536
547
  style: _Utils.default.mergeStyles({
537
548
  display: visible ? 'block' : 'none',
538
- margin: '0'
549
+ margin: '0',
550
+ minWidth: '320px',
551
+ padding: '4px'
539
552
  }, props.config)
540
553
  }, !_Utils.default.isNull(props.config.attributes) && !_Utils.default.isNull(props.config.attributes['label']) ? /*#__PURE__*/_react.default.createElement("div", {
541
554
  className: 'fieldSetTitle'
542
555
  }, props.config.attributes['label']) : null, !_Utils.default.isNull(fieldGrid) ? render(props.config) : null);
543
556
  });
544
557
  var _default = exports.default = FieldSet;
545
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9VdGlscyIsIl9PYnNlcnZhYmxlIiwiX1RleHRGaWVsZCIsIl9DdXJyZW5jeUZpZWxkIiwiX0FkZHJlc3NTZWFyY2giLCJfTG9va3VwRmllbGQiLCJfTXVsdGlMb29rdXBGaWVsZCIsIl9TZWxlY3RJdGVtIiwiX0RhdGVQaWNrZXIiLCJfVGltZVBpY2tlciIsIl9DaGVja2JveCIsIl9MYWJlbEZpZWxkIiwiX1VwbG9hZEZpZWxkIiwiX1RyYW5zZmVyTGlzdCIsIl9HcmlkRmllbGQiLCJfSW1hZ2VFZGl0b3IiLCJfUmFkaW9Hcm91cCIsIl9FdmVudCIsIl9FdmVudFR5cGUiLCJfUmVzdFNlcnZpY2UiLCJfU2lnbmF0dXJlVGVtcGxhdGVEZXNpZ25lckZpZWxkIiwiX0FwcGxpY2F0aW9uTWFuYWdlciIsIl9CdXR0b24iLCJfSHRtbFBhbmVsIiwiX0F1dG9Db21wbGV0ZSIsIl9NdWx0aUZpbGVVcGxvYWRGaWVsZCIsIl9JY29uIiwiX1N3aXRjaCIsIl9JY29uRmllbGQiLCJfRG9jdW1lbnRUZW1wbGF0ZURlc2lnbmVyIiwiX0R5bmFtaWNKUyIsIl9MYXlvdXQiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJGaWVsZFNldCIsIlJlYWN0IiwibWVtbyIsInByb3BzIiwiZmllbGRHcmlkIiwidXNlU3RhdGUiLCJVdGlscyIsImdldEZpZWxkR3JpZCIsImNvbmZpZyIsImF0dHJpYnV0ZXMiLCJmaWVsZHMiLCJjb21wb25lbnRIYW5kbGVzIiwidmlzaWJsZSIsInNldFZpc2libGUiLCJjcmVhdGVDb21wb25lbnRIYW5kbGUiLCJmaWVsZCIsImlzTnVsbCIsImlkIiwiaGFuZGxlIiwidXNlRWZmZWN0IiwiYXBpIiwidXNlTGF5b3V0RWZmZWN0IiwicmVmcmVzaCIsInBhcnNlZENvbmZpZyIsInBhcnNlQ29uZmlnIiwidmlld0lkIiwiZXZlbnRNYW5hZ2VyIiwiYWRkU3Vic2NyaXB0aW9ucyIsImV2ZW50SGFuZGxpbmdDb25maWciLCJhZGRTeXN0ZW1TdWJzY3JpcHRpb25zIiwiZGlzYWJsZWQiLCJ1cGRhdGVDb21wb25lbnREaXNhYmxlZFN0YXRlIiwiZmlyZUNoYW5nZUV2ZW50IiwiZXZlbnQiLCJFdmVudCIsImZpcmVFdmVudCIsIkV2ZW50VHlwZSIsIlZBTFVFX0NIQU5HRSIsInByb3BlcnRpZXMiLCJPYmplY3QiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwicHJvcGVydHkiLCJjb21wb25lbnRIYW5kbGUiLCJyZWZyZXNoQ29tcG9uZW50cyIsInJlbmRlckNvbXBvbmVudCIsImNvbXBvbmVudCIsImZpZWxkVHlwZSIsImNvbnNvbGUiLCJlcnJvciIsImlzRGlzYWJsZWQiLCJldmFsdWF0ZUJvb2xlYW5FeHByZXNzaW9uIiwiY3JlYXRlRWxlbWVudCIsImtleUhhbmRsZXIiLCJmb3JtIiwicGFyZW50SWQiLCJ2YWx1ZUNoYW5nZUhhbmRsZXIiLCJ2YWx1ZXMiLCJ0eXBlIiwibXVsdGlsaW5lIiwic3R5bGUiLCJMYXlvdXQiLCJmaWVsZERhdGFCaW5kaW5ncyIsImZpZWxkTmFtZXMiLCJwdXNoIiwiZGF0YUJpbmRpbmciLCJjbGVhciIsImNvbXBvbmVudFJlZiIsInZhbHVlIiwiZ2V0Q2hpbGRyZW4iLCJjaGlsZHJlbiIsIm1vZGVsIiwiZm9ybVZhbHVlIiwibG9hZERhdGEiLCJhY3Rpb25Db25maWciLCJhY3Rpb25FdmVudCIsInNlcnZpY2UiLCJkYXRhU2VydmljZSIsImNvbXBvbmVudFZhbHVlIiwiaXNFdmVudERhdGEiLCJ0b1N0cmluZyIsInN0YXJ0c1dpdGgiLCJpc0VwcmVzc2lvbiIsImFwcGxpY2F0aW9uTWFuYWdlciIsImlzRXhwcmVzc2lvbiIsInZhbCIsInJlc29sdmVFeHByZXNzaW9uVmFsdWUiLCJkYXRhIiwiYmluZERhdGEiLCJEQVRBX0FSUklWRUQiLCJtZXRob2QiLCJpbnZva2VScGMiLCJpbnZva2VSZXN0IiwicmVmIiwiY3VycmVudCIsInRoZW4iLCJyZXN1bHQiLCJjYXRjaCIsInB1Ymxpc2hFcnJvck1lc3NhZ2UiLCJyZW5kZXIiLCJmaWVsZFNldCIsImxlbmd0aCIsInJvd3MiLCJtYXAiLCJyb3ciLCJpIiwiY2xhc3NOYW1lIiwia2V5IiwibWFyZ2luTGVmdCIsIm1hcmdpblJpZ2h0IiwiaW5kZXgiLCJfZmllbGQkYXR0cmlidXRlcyIsIl9maWVsZCRhdHRyaWJ1dGVzMiIsImNvbHNwYW4iLCJ3aWR0aCIsImNvbHNwYW5WYWwiLCJnZXRGaWVsZENvbHNwYW4iLCJtYXhDb2xQZXJSb3ciLCJjb250YWluZXJTdHlsZSIsInBhZGRpbmdMZWZ0IiwicGFkZGluZ1JpZ2h0IiwibWluV2lkdGgiLCJtZXJnZU9iamVjdHMiLCJtZXJnZVN0eWxlcyIsImRpc3BsYXkiLCJtYXJnaW4iLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9GaWVsZFNldC5qc3giXSwic291cmNlc0NvbnRlbnQiOlsi77u/aW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBVdGlscyBmcm9tICcuLi8uLi9VdGlscyc7XG5pbXBvcnQgZXZlbnRNYW5hZ2VyIGZyb20gJy4uLy4uL2V2ZW50L09ic2VydmFibGUnO1xuaW1wb3J0IFRleHRGaWVsZCBmcm9tICcuL1RleHRGaWVsZCc7XG5pbXBvcnQgQ3VycmVuY3lGaWVsZCBmcm9tICcuL0N1cnJlbmN5RmllbGQnO1xuaW1wb3J0IEFkZHJlc3NTZWFyY2ggZnJvbSAnLi9BZGRyZXNzU2VhcmNoJztcbmltcG9ydCBMb29rdXBGaWVsZCBmcm9tICcuL0xvb2t1cEZpZWxkJztcbmltcG9ydCBNdWx0aUxvb2t1cEZpZWxkIGZyb20gJy4vTXVsdGlMb29rdXBGaWVsZCc7XG5pbXBvcnQgU2VsZWN0SXRlbSBmcm9tICcuL1NlbGVjdEl0ZW0nO1xuaW1wb3J0IERhdGVQaWNrZXIgZnJvbSAnLi9EYXRlUGlja2VyJztcbmltcG9ydCBUaW1lUGlja2VyIGZyb20gJy4vVGltZVBpY2tlcic7XG5pbXBvcnQgQ2hlY2tib3ggZnJvbSAnLi9DaGVja2JveCc7XG5pbXBvcnQgTGFiZWxGaWVsZCBmcm9tICcuL0xhYmVsRmllbGQnO1xuaW1wb3J0IFVwbG9hZEZpZWxkIGZyb20gJy4vVXBsb2FkRmllbGQnO1xuaW1wb3J0IFRyYW5zZmVyTGlzdCBmcm9tICcuL1RyYW5zZmVyTGlzdCc7XG5pbXBvcnQgR3JpZEZpZWxkIGZyb20gJy4vR3JpZEZpZWxkJztcbmltcG9ydCBJbWFnZUVkaXRvciBmcm9tICcuL0ltYWdlRWRpdG9yJztcbmltcG9ydCBSYWRpb0dyb3VwIGZyb20gJy4vUmFkaW9Hcm91cCc7XG5pbXBvcnQgRXZlbnQgZnJvbSAnLi4vLi4vZXZlbnQvRXZlbnQnO1xuaW1wb3J0IEV2ZW50VHlwZSBmcm9tICcuLi8uLi9ldmVudC9FdmVudFR5cGUnO1xuaW1wb3J0IHtpbnZva2VSZXN0LCBpbnZva2VScGN9IGZyb20gJy4uLy4uL1Jlc3RTZXJ2aWNlJztcbmltcG9ydCBTaWduYXR1cmVUZW1wbGF0ZURlc2lnbmVyRmllbGQgZnJvbSAnLi9TaWduYXR1cmVUZW1wbGF0ZURlc2lnbmVyRmllbGQnO1xuaW1wb3J0IGFwcGxpY2F0aW9uTWFuYWdlciBmcm9tICcuLi8uLi9BcHBsaWNhdGlvbk1hbmFnZXInO1xuaW1wb3J0ICcuL2ZpZWxkc2V0LmNzcyc7XG5pbXBvcnQgQnV0dG9uIGZyb20gJy4uL0J1dHRvbic7XG5pbXBvcnQgSHRtbFBhbmVsIGZyb20gJy4uL0h0bWxQYW5lbCc7XG5pbXBvcnQgQXV0b0NvbXBsZXRlIGZyb20gJy4vQXV0b0NvbXBsZXRlJztcbmltcG9ydCBNdWx0aUZpbGVVcGxvYWRGaWVsZCBmcm9tICcuL011bHRpRmlsZVVwbG9hZEZpZWxkJztcbmltcG9ydCBJY29uIGZyb20gJy4uL0ljb24nO1xuaW1wb3J0IFN3aXRjaCBmcm9tICcuL1N3aXRjaCc7XG5pbXBvcnQgSWNvbkZpZWxkIGZyb20gJy4vSWNvbkZpZWxkJztcbmltcG9ydCBEb2N1bWVudFRlbXBsYXRlRGVzaWduZXIgZnJvbSBcIi4uL0RvY3VtZW50VGVtcGxhdGVEZXNpZ25lclwiO1xuaW1wb3J0IGR5bmFtaWNKUyBmcm9tIFwiLi4vLi4vRHluYW1pY0pTXCI7XG5pbXBvcnQge0xheW91dH0gZnJvbSBcIi4uL2xheW91dC9MYXlvdXRcIjtcblxuY29uc3QgRmllbGRTZXQgPSBSZWFjdC5tZW1vKChwcm9wcykgPT4ge1xuICAgIGNvbnN0IFtmaWVsZEdyaWRdID0gUmVhY3QudXNlU3RhdGUoVXRpbHMuZ2V0RmllbGRHcmlkKHByb3BzLmNvbmZpZy5hdHRyaWJ1dGVzLCBwcm9wcy5jb25maWcuZmllbGRzKSk7XG4gICAgY29uc3QgW2NvbXBvbmVudEhhbmRsZXNdID0gUmVhY3QudXNlU3RhdGUoe30pO1xuICAgIGNvbnN0IFt2aXNpYmxlLCBzZXRWaXNpYmxlXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcblxuICAgIGNvbnN0IGNyZWF0ZUNvbXBvbmVudEhhbmRsZSA9IChmaWVsZCkgPT4ge1xuICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKGNvbXBvbmVudEhhbmRsZXNbZmllbGQuaWRdKSkge1xuICAgICAgICAgICAgbGV0IGhhbmRsZSA9IHt9O1xuICAgICAgICAgICAgY29tcG9uZW50SGFuZGxlc1tmaWVsZC5pZF0gPSBoYW5kbGU7XG4gICAgICAgICAgICByZXR1cm4gaGFuZGxlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbXBvbmVudEhhbmRsZXNbZmllbGQuaWRdO1xuICAgIH07XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICAgIHByb3BzLmhhbmRsZS5hcGkgPSBhcGkoKTtcbiAgICAgICAgfSk7XG5cbiAgICBSZWFjdC51c2VMYXlvdXRFZmZlY3QoXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICAgIHByb3BzLmhhbmRsZS5hcGkgPSBhcGkoKTtcbiAgICAgICAgfSwgW10pO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICBwcm9wcy5oYW5kbGUuYXBpID0gYXBpKCk7XG4gICAgICAgICAgICBwcm9wcy5oYW5kbGUuYXBpLnJlZnJlc2goKTtcbiAgICAgICAgICAgIGxldCBwYXJzZWRDb25maWcgPSBVdGlscy5wYXJzZUNvbmZpZyhwcm9wcy5jb25maWcsIHByb3BzLnZpZXdJZCk7XG4gICAgICAgICAgICBldmVudE1hbmFnZXIuYWRkU3Vic2NyaXB0aW9ucyhwYXJzZWRDb25maWcuZXZlbnRIYW5kbGluZ0NvbmZpZywgcHJvcHMuaGFuZGxlLCBwcm9wcy52aWV3SWQpO1xuICAgICAgICAgICAgZXZlbnRNYW5hZ2VyLmFkZFN5c3RlbVN1YnNjcmlwdGlvbnMocHJvcHMudmlld0lkLCBwYXJzZWRDb25maWcpO1xuICAgICAgICB9LCBbXSk7XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHByb3BzLmRpc2FibGVkKSkge1xuICAgICAgICAgICAgICAgIHVwZGF0ZUNvbXBvbmVudERpc2FibGVkU3RhdGUocHJvcHMuZGlzYWJsZWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCBbcHJvcHMuZGlzYWJsZWRdKTtcblxuICAgIGZ1bmN0aW9uIGZpcmVDaGFuZ2VFdmVudCgpIHtcbiAgICAgICAgbGV0IGV2ZW50ID0gbmV3IEV2ZW50KHByb3BzLmhhbmRsZSwgcHJvcHMudmlld0lkKTtcbiAgICAgICAgZXZlbnRNYW5hZ2VyLmZpcmVFdmVudChFdmVudFR5cGUuVkFMVUVfQ0hBTkdFLCBldmVudCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdXBkYXRlQ29tcG9uZW50RGlzYWJsZWRTdGF0ZShkaXNhYmxlZCkge1xuICAgICAgICBsZXQgcHJvcGVydGllcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGNvbXBvbmVudEhhbmRsZXMpO1xuICAgICAgICBmb3IgKGNvbnN0IHByb3BlcnR5IG9mIHByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgIGxldCBjb21wb25lbnRIYW5kbGUgPSBjb21wb25lbnRIYW5kbGVzW3Byb3BlcnR5XTtcbiAgICAgICAgICAgIGNvbXBvbmVudEhhbmRsZS5hcGkuZGlzYWJsZWQgPSBkaXNhYmxlZDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlZnJlc2hDb21wb25lbnRzKCkge1xuICAgICAgICBsZXQgcHJvcGVydGllcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGNvbXBvbmVudEhhbmRsZXMpO1xuICAgICAgICBmb3IgKGNvbnN0IHByb3BlcnR5IG9mIHByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgIGxldCBjb21wb25lbnRIYW5kbGUgPSBjb21wb25lbnRIYW5kbGVzW3Byb3BlcnR5XTtcbiAgICAgICAgICAgIGlmKGNvbXBvbmVudEhhbmRsZS5hcGkpIHtcbiAgICAgICAgICAgICAgICBjb21wb25lbnRIYW5kbGUuYXBpLnJlZnJlc2goKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlbmRlckNvbXBvbmVudChjb21wb25lbnQpIHtcbiAgICAgICAgaWYgKCFjb21wb25lbnQuZmllbGRUeXBlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFUlJPUiBSRU5ESU5HIENPTVBPTkVOVCA6ICcgKyBjb21wb25lbnQuaWQgKyAnIC0gTk8gRklFTEQgVFlQRSBTUEVDSUZJRUQnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBpc0Rpc2FibGVkID0gZmFsc2U7XG4gICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHByb3BzLmNvbmZpZykgJiYgIVV0aWxzLmlzTnVsbChwcm9wcy5jb25maWcuZGlzYWJsZWQpKSB7XG4gICAgICAgICAgICBpc0Rpc2FibGVkID0gVXRpbHMuZXZhbHVhdGVCb29sZWFuRXhwcmVzc2lvbihwcm9wcy5jb25maWcuZGlzYWJsZWQsIHByb3BzLmNvbmZpZy5pZCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNEaXNhYmxlZCkge1xuICAgICAgICAgICAgaWYgKFV0aWxzLmlzTnVsbChjb21wb25lbnQuZGlzYWJsZWQpKSB7XG4gICAgICAgICAgICAgICAgY29tcG9uZW50LmRpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHN3aXRjaCAoY29tcG9uZW50LmZpZWxkVHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnTE9PS1VQJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gPExvb2t1cEZpZWxkIGtleUhhbmRsZXI9e3Byb3BzLmtleUhhbmRsZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWc9e2NvbXBvbmVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm09e3Byb3BzLmZvcm19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRJZD17cHJvcHMucGFyZW50SWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGU9e2NyZWF0ZUNvbXBvbmVudEhhbmRsZShjb21wb25lbnQpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVDaGFuZ2VIYW5kbGVyPXsoKSA9PiBmaXJlQ2hhbmdlRXZlbnQoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz17cHJvcHMudmFsdWVzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0lkPXtwcm9wcy52aWV3SWR9XG4gICAgICAgICAgICAgICAgLz47XG4gICAgICAgICAgICBjYXNlICdNVUxUSV9MT09LVVAnOlxuICAgICAgICAgICAgICAgIHJldHVybiA8TXVsdGlMb29rdXBGaWVsZCBrZXlIYW5kbGVyPXtwcm9wcy5rZXlIYW5kbGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWc9e2NvbXBvbmVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybT17cHJvcHMuZm9ybX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50SWQ9e3Byb3BzLnBhcmVudElkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGU9e2NyZWF0ZUNvbXBvbmVudEhhbmRsZShjb21wb25lbnQpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZUNoYW5nZUhhbmRsZXI9eygpID0+IGZpcmVDaGFuZ2VFdmVudCgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9e3Byb3BzLnZhbHVlc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0lkPXtwcm9wcy52aWV3SWR9XG4gICAgICAgICAgICAgICAgLz47XG4gICAgICAgICAgICBjYXNlICdURVhUX0ZJRUxEJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gPFRleHRGaWVsZCBrZXlIYW5kbGVyPXtwcm9wcy5rZXlIYW5kbGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZz17Y29tcG9uZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlQ2hhbmdlSGFuZGxlcj17KCkgPT4gZmlyZUNoYW5nZUV2ZW50KCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybT17cHJvcHMuZm9ybX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRJZD17cHJvcHMucGFyZW50SWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlPXtjcmVhdGVDb21wb25lbnRIYW5kbGUoY29tcG9uZW50KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9e3Byb3BzLnZhbHVlc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3SWQ9e3Byb3BzLnZpZXdJZH1cbiAgICAgICAgICAgICAgICAvPjtcbiAgICAgICAgICAgIGNhc2UgJ0NVUlJFTkNZJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gPEN1cnJlbmN5RmllbGQga2V5SGFuZGxlcj17cHJvcHMua2V5SGFuZGxlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnPXtjb21wb25lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlQ2hhbmdlSGFuZGxlcj17KCkgPT4gZmlyZUNoYW5nZUV2ZW50KCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm09e3Byb3BzLmZvcm19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudElkPXtwcm9wcy5wYXJlbnRJZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlPXtjcmVhdGVDb21wb25lbnRIYW5kbGUoY29tcG9uZW50KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPXtwcm9wcy52YWx1ZXN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdJZD17cHJvcHMudmlld0lkfVxuICAgICAgICAgICAgICAgIC8+O1xuICAgICAgICAgICAgY2FzZSAnUEFTU1dPUkQnOlxuICAgICAgICAgICAgICAgIHJldHVybiA8VGV4dEZpZWxkIGtleUhhbmRsZXI9e3Byb3BzLmtleUhhbmRsZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnPXtjb21wb25lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVDaGFuZ2VIYW5kbGVyPXsoKSA9PiBmaXJlQ2hhbmdlRXZlbnQoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtPXtwcm9wcy5mb3JtfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9eydwYXNzd29yZCd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50SWQ9e3Byb3BzLnBhcmVudElkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZT17Y3JlYXRlQ29tcG9uZW50SGFuZGxlKGNvbXBvbmVudCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPXtwcm9wcy52YWx1ZXN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0lkPXtwcm9wcy52aWV3SWR9XG4gICAgICAgICAgICAgICAgLz47XG4gICAgICAgICAgICBjYXNlICdURVhUX0FSRUEnOlxuICAgICAgICAgICAgICAgIHJldHVybiA8VGV4dEZpZWxkIGtleUhhbmRsZXI9e3Byb3BzLmtleUhhbmRsZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnPXtjb21wb25lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlsaW5lPXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlQ2hhbmdlSGFuZGxlcj17KCkgPT4gZmlyZUNoYW5nZUV2ZW50KCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybT17cHJvcHMuZm9ybX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRJZD17cHJvcHMucGFyZW50SWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlPXtjcmVhdGVDb21wb25lbnRIYW5kbGUoY29tcG9uZW50KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9e3Byb3BzLnZhbHVlc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3SWQ9e3Byb3BzLnZpZXdJZH1cbiAgICAgICAgICAgICAgICAvPjtcbiAgICAgICAgICAgIGNhc2UgJ0FERFJFU1NfU0VBUkNIJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gPEFkZHJlc3NTZWFyY2gga2V5SGFuZGxlcj17cHJvcHMua2V5SGFuZGxlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnPXtjb21wb25lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpbGluZT17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVDaGFuZ2VIYW5kbGVyPXsoKSA9PiBmaXJlQ2hhbmdlRXZlbnQoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybT17cHJvcHMuZm9ybX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50SWQ9e3Byb3BzLnBhcmVudElkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGU9e2NyZWF0ZUNvbXBvbmVudEhhbmRsZShjb21wb25lbnQpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9e3Byb3BzLnZhbHVlc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0lkPXtwcm9wcy52aWV3SWR9XG4gICAgICAgICAgICAgICAgLz47XG4gICAgICAgICAgICBjYXNlICdTRUxFQ1QnOlxuICAgICAgICAgICAgICAgIHJldHVybiA8U2VsZWN0SXRlbSBrZXlIYW5kbGVyPXtwcm9wcy5rZXlIYW5kbGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWc9e2NvbXBvbmVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybT17cHJvcHMuZm9ybX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50SWQ9e3Byb3BzLnBhcmVudElkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGU9e2NyZWF0ZUNvbXBvbmVudEhhbmRsZShjb21wb25lbnQpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZUNoYW5nZUhhbmRsZXI9eygpID0+IGZpcmVDaGFuZ2VFdmVudCgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9e3Byb3BzLnZhbHVlc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0lkPXtwcm9wcy52aWV3SWR9XG4gICAgICAgICAgICAgICAgLz47XG4gICAgICAgICAgICBjYXNlICdEQVRFJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gPERhdGVQaWNrZXIga2V5SGFuZGxlcj17cHJvcHMua2V5SGFuZGxlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnPXtjb21wb25lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm09e3Byb3BzLmZvcm19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudElkPXtwcm9wcy5wYXJlbnRJZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlPXtjcmVhdGVDb21wb25lbnRIYW5kbGUoY29tcG9uZW50KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVDaGFuZ2VIYW5kbGVyPXsoKSA9PiBmaXJlQ2hhbmdlRXZlbnQoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPXtwcm9wcy52YWx1ZXN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdJZD17cHJvcHMudmlld0lkfVxuICAgICAgICAgICAgICAgIC8+O1xuICAgICAgICAgICAgY2FzZSAnQVVUT19DT01QTEVURSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIDxBdXRvQ29tcGxldGUga2V5SGFuZGxlcj17cHJvcHMua2V5SGFuZGxlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWc9e2NvbXBvbmVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtPXtwcm9wcy5mb3JtfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudElkPXtwcm9wcy5wYXJlbnRJZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGU9e2NyZWF0ZUNvbXBvbmVudEhhbmRsZShjb21wb25lbnQpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlQ2hhbmdlSGFuZGxlcj17KCkgPT4gZmlyZUNoYW5nZUV2ZW50KCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPXtwcm9wcy52YWx1ZXN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0lkPXtwcm9wcy52aWV3SWR9XG4gICAgICAgICAgICAgICAgLz47XG4gICAgICAgICAgICBjYXNlICdDSEVDS0JPWCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIDxDaGVja2JveCBrZXlIYW5kbGVyPXtwcm9wcy5rZXlIYW5kbGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnPXtjb21wb25lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtPXtwcm9wcy5mb3JtfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50SWQ9e3Byb3BzLnBhcmVudElkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlPXtjcmVhdGVDb21wb25lbnRIYW5kbGUoY29tcG9uZW50KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlQ2hhbmdlSGFuZGxlcj17KCkgPT4gZmlyZUNoYW5nZUV2ZW50KCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9e3Byb3BzLnZhbHVlc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdJZD17cHJvcHMudmlld0lkfVxuICAgICAgICAgICAgICAgIC8+O1xuICAgICAgICAgICAgY2FzZSAnU1dJVENIJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gPFN3aXRjaCBrZXlIYW5kbGVyPXtwcm9wcy5rZXlIYW5kbGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZz17Y29tcG9uZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm09e3Byb3BzLmZvcm19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50SWQ9e3Byb3BzLnBhcmVudElkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZT17Y3JlYXRlQ29tcG9uZW50SGFuZGxlKGNvbXBvbmVudCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVDaGFuZ2VIYW5kbGVyPXsoKSA9PiBmaXJlQ2hhbmdlRXZlbnQoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9e3Byb3BzLnZhbHVlc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3SWQ9e3Byb3BzLnZpZXdJZH1cbiAgICAgICAgICAgICAgICAvPjtcbiAgICAgICAgICAgIGNhc2UgJ0xBQkVMJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gPExhYmVsRmllbGQga2V5SGFuZGxlcj17cHJvcHMua2V5SGFuZGxlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnPXtjb21wb25lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm09e3Byb3BzLmZvcm19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudElkPXtwcm9wcy5wYXJlbnRJZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlPXtjcmVhdGVDb21wb25lbnRIYW5kbGUoY29tcG9uZW50KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVDaGFuZ2VIYW5kbGVyPXsoKSA9PiBmaXJlQ2hhbmdlRXZlbnQoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPXtwcm9wcy52YWx1ZXN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdJZD17cHJvcHMudmlld0lkfVxuICAgICAgICAgICAgICAgIC8+O1xuICAgICAgICAgICAgY2FzZSAnRklMRV9VUExPQUQnOlxuICAgICAgICAgICAgICAgIHJldHVybiA8VXBsb2FkRmllbGQga2V5SGFuZGxlcj17cHJvcHMua2V5SGFuZGxlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZz17Y29tcG9uZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybT17cHJvcHMuZm9ybX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudElkPXtwcm9wcy5wYXJlbnRJZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZT17Y3JlYXRlQ29tcG9uZW50SGFuZGxlKGNvbXBvbmVudCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZUNoYW5nZUhhbmRsZXI9eygpID0+IGZpcmVDaGFuZ2VFdmVudCgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPXtwcm9wcy52YWx1ZXN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3SWQ9e3Byb3BzLnZpZXdJZH1cbiAgICAgICAgICAgICAgICAvPjtcbiAgICAgICAgICAgIGNhc2UgJ0lNQUdFX1VQTE9BRCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIDxVcGxvYWRGaWVsZCBrZXlIYW5kbGVyPXtwcm9wcy5rZXlIYW5kbGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnPXtjb21wb25lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtPXtwcm9wcy5mb3JtfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50SWQ9e3Byb3BzLnBhcmVudElkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlPXtjcmVhdGVDb21wb25lbnRIYW5kbGUoY29tcG9uZW50KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXsnSU1BR0UnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVDaGFuZ2VIYW5kbGVyPXsoKSA9PiBmaXJlQ2hhbmdlRXZlbnQoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz17cHJvcHMudmFsdWVzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0lkPXtwcm9wcy52aWV3SWR9XG4gICAgICAgICAgICAgICAgLz47XG4gICAgICAgICAgICBjYXNlICdNVUxUSV9GSUxFX1VQTE9BRCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIDxNdWx0aUZpbGVVcGxvYWRGaWVsZFxuICAgICAgICAgICAgICAgICAgICBrZXlIYW5kbGVyPXtwcm9wcy5rZXlIYW5kbGVyfVxuICAgICAgICAgICAgICAgICAgICBjb25maWc9e2NvbXBvbmVudH1cbiAgICAgICAgICAgICAgICAgICAgZm9ybT17cHJvcHMuZm9ybX1cbiAgICAgICAgICAgICAgICAgICAgcGFyZW50SWQ9e3Byb3BzLnBhcmVudElkfVxuICAgICAgICAgICAgICAgICAgICBoYW5kbGU9e2NyZWF0ZUNvbXBvbmVudEhhbmRsZShjb21wb25lbnQpfVxuICAgICAgICAgICAgICAgICAgICB2YWx1ZUNoYW5nZUhhbmRsZXI9eygpID0+IGZpcmVDaGFuZ2VFdmVudCgpfVxuICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9e3Byb3BzLnZhbHVlc31cbiAgICAgICAgICAgICAgICAgICAgdmlld0lkPXtwcm9wcy52aWV3SWR9XG4gICAgICAgICAgICAgICAgLz47XG4gICAgICAgICAgICBjYXNlICdUUkFOU0ZFUl9MSVNUJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gPFRyYW5zZmVyTGlzdCBrZXlIYW5kbGVyPXtwcm9wcy5rZXlIYW5kbGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZz17Y29tcG9uZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm09e3Byb3BzLmZvcm19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50SWQ9e3Byb3BzLnBhcmVudElkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZT17Y3JlYXRlQ29tcG9uZW50SGFuZGxlKGNvbXBvbmVudCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVDaGFuZ2VIYW5kbGVyPXsoKSA9PiBmaXJlQ2hhbmdlRXZlbnQoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9e3Byb3BzLnZhbHVlc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3SWQ9e3Byb3BzLnZpZXdJZH1cbiAgICAgICAgICAgICAgICAvPjtcbiAgICAgICAgICAgIGNhc2UgJ0dSSUQnOlxuICAgICAgICAgICAgICAgIHJldHVybiA8R3JpZEZpZWxkIGtleUhhbmRsZXI9e3Byb3BzLmtleUhhbmRsZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnPXtjb21wb25lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybT17cHJvcHMuZm9ybX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRJZD17cHJvcHMucGFyZW50SWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlPXtjcmVhdGVDb21wb25lbnRIYW5kbGUoY29tcG9uZW50KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZUNoYW5nZUhhbmRsZXI9eygpID0+IGZpcmVDaGFuZ2VFdmVudCgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz17cHJvcHMudmFsdWVzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdJZD17cHJvcHMudmlld0lkfVxuICAgICAgICAgICAgICAgIC8+O1xuICAgICAgICAgICAgY2FzZSAnVElNRSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIDxUaW1lUGlja2VyXG4gICAgICAgICAgICAgICAgICAgIGtleUhhbmRsZXI9e3Byb3BzLmtleUhhbmRsZXJ9XG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZz17Y29tcG9uZW50fVxuICAgICAgICAgICAgICAgICAgICBmb3JtPXtwcm9wcy5mb3JtfVxuICAgICAgICAgICAgICAgICAgICBwYXJlbnRJZD17cHJvcHMucGFyZW50SWR9XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZT17Y3JlYXRlQ29tcG9uZW50SGFuZGxlKGNvbXBvbmVudCl9XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlQ2hhbmdlSGFuZGxlcj17KCkgPT4gZmlyZUNoYW5nZUV2ZW50KCl9XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlcz17cHJvcHMudmFsdWVzfVxuICAgICAgICAgICAgICAgICAgICB2aWV3SWQ9e3Byb3BzLnZpZXdJZH1cbiAgICAgICAgICAgICAgICAvPjtcbiAgICAgICAgICAgIGNhc2UgJ0lNQUdFX0VESVRPUic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIDxJbWFnZUVkaXRvclxuICAgICAgICAgICAgICAgICAgICBrZXlIYW5kbGVyPXtwcm9wcy5rZXlIYW5kbGVyfVxuICAgICAgICAgICAgICAgICAgICBjb25maWc9e2NvbXBvbmVudH1cbiAgICAgICAgICAgICAgICAgICAgZm9ybT17cHJvcHMuZm9ybX1cbiAgICAgICAgICAgICAgICAgICAgcGFyZW50SWQ9e3Byb3BzLnBhcmVudElkfVxuICAgICAgICAgICAgICAgICAgICBoYW5kbGU9e2NyZWF0ZUNvbXBvbmVudEhhbmRsZShjb21wb25lbnQpfVxuICAgICAgICAgICAgICAgICAgICB2YWx1ZUNoYW5nZUhhbmRsZXI9eygpID0+IGZpcmVDaGFuZ2VFdmVudCgpfVxuICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9e3Byb3BzLnZhbHVlc31cbiAgICAgICAgICAgICAgICAgICAgdmlld0lkPXtwcm9wcy52aWV3SWR9XG4gICAgICAgICAgICAgICAgLz47XG4gICAgICAgICAgICBjYXNlICdSQURJT19HUk9VUCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIDxSYWRpb0dyb3VwXG4gICAgICAgICAgICAgICAgICAgIGtleUhhbmRsZXI9e3Byb3BzLmtleUhhbmRsZXJ9XG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZz17Y29tcG9uZW50fVxuICAgICAgICAgICAgICAgICAgICBmb3JtPXtwcm9wcy5mb3JtfVxuICAgICAgICAgICAgICAgICAgICBwYXJlbnRJZD17cHJvcHMucGFyZW50SWR9XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZT17Y3JlYXRlQ29tcG9uZW50SGFuZGxlKGNvbXBvbmVudCl9XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlQ2hhbmdlSGFuZGxlcj17KCkgPT4gZmlyZUNoYW5nZUV2ZW50KCl9XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlcz17cHJvcHMudmFsdWVzfVxuICAgICAgICAgICAgICAgICAgICB2aWV3SWQ9e3Byb3BzLnZpZXdJZH1cbiAgICAgICAgICAgICAgICAvPjtcbiAgICAgICAgICAgIGNhc2UgJ0JVVFRPTic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgY29uZmlnPXtjb21wb25lbnR9XG4gICAgICAgICAgICAgICAgICAgIGZvcm09e3Byb3BzLmZvcm19XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZT17Y3JlYXRlQ29tcG9uZW50SGFuZGxlKGNvbXBvbmVudCl9XG4gICAgICAgICAgICAgICAgICAgIHZpZXdJZD17cHJvcHMudmlld0lkfVxuICAgICAgICAgICAgICAgIC8+O1xuICAgICAgICAgICAgY2FzZSAnSFRNTF9QQU5FTCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIDxIdG1sUGFuZWxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlnPXtjb21wb25lbnR9XG4gICAgICAgICAgICAgICAgICAgIGZvcm09e3Byb3BzLmZvcm19XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZT17Y3JlYXRlQ29tcG9uZW50SGFuZGxlKGNvbXBvbmVudCl9XG4gICAgICAgICAgICAgICAgICAgIHZpZXdJZD17cHJvcHMudmlld0lkfVxuICAgICAgICAgICAgICAgIC8+O1xuICAgICAgICAgICAgY2FzZSAnTEFZT1VUJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gPExheW91dFxuICAgICAgICAgICAgICAgICAgICBjb25maWc9e2NvbXBvbmVudH1cbiAgICAgICAgICAgICAgICAgICAgZm9ybT17cHJvcHMuZm9ybX1cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlPXtjcmVhdGVDb21wb25lbnRIYW5kbGUoY29tcG9uZW50KX1cbiAgICAgICAgICAgICAgICAgICAgdmlld0lkPXtwcm9wcy52aWV3SWR9XG4gICAgICAgICAgICAgICAgLz47XG4gICAgICAgICAgICBjYXNlICdJQ09OJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gPEljb25GaWVsZFxuICAgICAgICAgICAgICAgICAgICBrZXlIYW5kbGVyPXtwcm9wcy5rZXlIYW5kbGVyfVxuICAgICAgICAgICAgICAgICAgICBjb25maWc9e2NvbXBvbmVudH1cbiAgICAgICAgICAgICAgICAgICAgZm9ybT17cHJvcHMuZm9ybX1cbiAgICAgICAgICAgICAgICAgICAgcGFyZW50SWQ9e3Byb3BzLnBhcmVudElkfVxuICAgICAgICAgICAgICAgICAgICBoYW5kbGU9e2NyZWF0ZUNvbXBvbmVudEhhbmRsZShjb21wb25lbnQpfVxuICAgICAgICAgICAgICAgICAgICB2YWx1ZUNoYW5nZUhhbmRsZXI9eygpID0+IGZpcmVDaGFuZ2VFdmVudCgpfVxuICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9e3Byb3BzLnZhbHVlc31cbiAgICAgICAgICAgICAgICAgICAgdmlld0lkPXtwcm9wcy52aWV3SWR9XG4gICAgICAgICAgICAgICAgLz47XG4gICAgICAgICAgICBjYXNlICdTSUdOQVRVUkVfVEVNUExBVEVfREVTSUdORVInOlxuICAgICAgICAgICAgICAgIHJldHVybiA8U2lnbmF0dXJlVGVtcGxhdGVEZXNpZ25lckZpZWxkXG4gICAgICAgICAgICAgICAgICAgIGtleUhhbmRsZXI9e3Byb3BzLmtleUhhbmRsZXJ9XG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZz17Y29tcG9uZW50fVxuICAgICAgICAgICAgICAgICAgICBmb3JtPXtwcm9wcy5mb3JtfVxuICAgICAgICAgICAgICAgICAgICBwYXJlbnRJZD17cHJvcHMucGFyZW50SWR9XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZT17Y3JlYXRlQ29tcG9uZW50SGFuZGxlKGNvbXBvbmVudCl9XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlQ2hhbmdlSGFuZGxlcj17KCkgPT4gZmlyZUNoYW5nZUV2ZW50KCl9XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlcz17cHJvcHMudmFsdWVzfVxuICAgICAgICAgICAgICAgICAgICB2aWV3SWQ9e3Byb3BzLnZpZXdJZH1cbiAgICAgICAgICAgICAgICAvPjtcbiAgICAgICAgICAgIGNhc2UgJ0RPQ1VNRU5UX1RFTVBMQVRFX0RFU0lHTkVSJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gPERvY3VtZW50VGVtcGxhdGVEZXNpZ25lclxuICAgICAgICAgICAgICAgICAgICBrZXlIYW5kbGVyPXtwcm9wcy5rZXlIYW5kbGVyfVxuICAgICAgICAgICAgICAgICAgICBjb25maWc9e2NvbXBvbmVudH1cbiAgICAgICAgICAgICAgICAgICAgZm9ybT17cHJvcHMuZm9ybX1cbiAgICAgICAgICAgICAgICAgICAgcGFyZW50SWQ9e3Byb3BzLnBhcmVudElkfVxuICAgICAgICAgICAgICAgICAgICBoYW5kbGU9e2NyZWF0ZUNvbXBvbmVudEhhbmRsZShjb21wb25lbnQpfVxuICAgICAgICAgICAgICAgICAgICB2YWx1ZUNoYW5nZUhhbmRsZXI9eygpID0+IGZpcmVDaGFuZ2VFdmVudCgpfVxuICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9e3Byb3BzLnZhbHVlc31cbiAgICAgICAgICAgICAgICAgICAgdmlld0lkPXtwcm9wcy52aWV3SWR9XG4gICAgICAgICAgICAgICAgLz47XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiA8ZGl2PnsnVW5zdXBwb3J0ZWQgZmllbGRzZXQgY29tcG9uZW50IHR5cGUgJyArIGNvbXBvbmVudC5maWVsZFR5cGUgKyAnIC0gJyArIGNvbXBvbmVudC5pZH08L2Rpdj47XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBhcGkgPSAoKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBnZXQgaWQoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHByb3BzLmNvbmZpZy5pZDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXQgZmllbGREYXRhQmluZGluZ3MoKSB7XG4gICAgICAgICAgICAgICAgbGV0IGZpZWxkTmFtZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIHByb3BzLmNvbmZpZy5maWVsZHMpIHtcbiAgICAgICAgICAgICAgICAgICAgZmllbGROYW1lcy5wdXNoKCFVdGlscy5pc051bGwoZmllbGQuZGF0YUJpbmRpbmcpID8gZmllbGQuZGF0YUJpbmRpbmcgOiBmaWVsZC5pZCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZpZWxkTmFtZXM7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0IGRpc2FibGVkKGRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgdXBkYXRlQ29tcG9uZW50RGlzYWJsZWRTdGF0ZShkaXNhYmxlZCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY2xlYXIoKSB7XG4gICAgICAgICAgICAgICAgbGV0IHByb3BlcnRpZXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhjb21wb25lbnRIYW5kbGVzKTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHByb3BlcnR5IG9mIHByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNvbXBvbmVudFJlZiA9IGNvbXBvbmVudEhhbmRsZXNbcHJvcGVydHldO1xuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuYXBpLnZhbHVlID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0Q2hpbGRyZW46ICgpID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICBsZXQgcHJvcGVydGllcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGNvbXBvbmVudEhhbmRsZXMpO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcHJvcGVydHkgb2YgcHJvcGVydGllcykge1xuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbi5wdXNoKGNvbXBvbmVudEhhbmRsZXNbcHJvcGVydHldKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gY2hpbGRyZW47XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0IG1vZGVsKG1vZGVsKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBmaWVsZCBvZiBwcm9wcy5jb25maWcuZmllbGRzKSB7XG4gICAgICAgICAgICAgICAgICAgIHByb3BzLmZvcm0oKS5tb2RlbFtmaWVsZC5pZF0gPSBtb2RlbFtmaWVsZC5pZF07XG5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGNvbXBvbmVudFJlZiA9IGNvbXBvbmVudEhhbmRsZXNbZmllbGQuaWRdO1xuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuYXBpLnZhbHVlID0gbW9kZWxbZmllbGQuaWRdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXQgdmFsdWUoKSB7XG4gICAgICAgICAgICAgICAgbGV0IHZhbHVlID0ge307XG4gICAgICAgICAgICAgICAgbGV0IGZvcm1WYWx1ZSA9IHByb3BzLmZvcm0oKS52YWx1ZTtcblxuICAgICAgICAgICAgICAgIGlmIChmb3JtVmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBmaWVsZCBvZiBwcm9wcy5jb25maWcuZmllbGRzKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlW2ZpZWxkLmlkXSA9IGZvcm1WYWx1ZVtmaWVsZC5pZF07XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxvYWREYXRhOiAoYWN0aW9uQ29uZmlnLCBhY3Rpb25FdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBzZXJ2aWNlID0gIVV0aWxzLmlzTnVsbChhY3Rpb25Db25maWcuZGF0YVNlcnZpY2UpID8gYWN0aW9uQ29uZmlnLmRhdGFTZXJ2aWNlIDpcbiAgICAgICAgICAgICAgICAgICAgIVV0aWxzLmlzTnVsbChwcm9wcy5jb25maWcpID8gcHJvcHMuY29uZmlnLmRhdGFTZXJ2aWNlIDogbnVsbDtcbiAgICAgICAgICAgICAgICBsZXQgY29tcG9uZW50VmFsdWUgPSAhVXRpbHMuaXNOdWxsKHByb3BzLmNvbmZpZy52YWx1ZSkgPyBwcm9wcy5jb25maWcudmFsdWUgOlxuICAgICAgICAgICAgICAgICAgICBhY3Rpb25Db25maWcudmFsdWU7XG5cbiAgICAgICAgICAgICAgICBpZiAoY29tcG9uZW50VmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGlzRXZlbnREYXRhID0gY29tcG9uZW50VmFsdWUudG9TdHJpbmcoKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnN0YXJ0c1dpdGgoJyRldmVudC5kYXRhJyk7XG4gICAgICAgICAgICAgICAgICAgIGxldCBpc0VwcmVzc2lvbiA9IGFwcGxpY2F0aW9uTWFuYWdlci5pc0V4cHJlc3Npb24oY29tcG9uZW50VmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICBsZXQgdmFsID0gaXNFdmVudERhdGEgfHwgaXNFcHJlc3Npb24gPyBhcHBsaWNhdGlvbk1hbmFnZXIucmVzb2x2ZUV4cHJlc3Npb25WYWx1ZShjb21wb25lbnRWYWx1ZSwgYWN0aW9uRXZlbnQgPyBhY3Rpb25FdmVudC5kYXRhIDogbnVsbCkgOiBjb21wb25lbnRWYWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgcHJvcHMuZm9ybSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAuYmluZERhdGEodmFsKTtcblxuICAgICAgICAgICAgICAgICAgICBsZXQgZXZlbnQgPSBuZXcgRXZlbnQocHJvcHMuaGFuZGxlLCBwcm9wcy52aWV3SWQsIHZhbCk7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50TWFuYWdlci5maXJlRXZlbnQoRXZlbnRUeXBlLkRBVEFfQVJSSVZFRCwgZXZlbnQpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHNlcnZpY2UpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbWV0aG9kID0gc2VydmljZS50eXBlID09PSAncnBjJyA/IGludm9rZVJwYyA6IGludm9rZVJlc3Q7XG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Qoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2U6IHNlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50OiByZWYuY3VycmVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3SWQ6IHByb3BzLnZpZXdJZFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRhdGEgPSBzZXJ2aWNlLnR5cGUgPT09ICdycGMnID8gcmVzdWx0LmRhdGEgOiByZXN1bHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuZm9ybSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYmluZERhdGEoZGF0YSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGV2ZW50ID0gbmV3IEV2ZW50KHByb3BzLmhhbmRsZSwgcHJvcHMudmlld0lkLCBkYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRNYW5hZ2VyLmZpcmVFdmVudChFdmVudFR5cGUuREFUQV9BUlJJVkVELCBldmVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSkuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5jb25zb2xlLmVycm9yKGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFV0aWxzLnB1Ymxpc2hFcnJvck1lc3NhZ2UoZSwgcHJvcHMudmlld0lkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlZnJlc2goKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwocHJvcHMuY29uZmlnKSAmJiAhVXRpbHMuaXNOdWxsKHByb3BzLmNvbmZpZy52aXNpYmxlKSkge1xuICAgICAgICAgICAgICAgICAgICBzZXRWaXNpYmxlKFV0aWxzLmV2YWx1YXRlQm9vbGVhbkV4cHJlc3Npb24ocHJvcHMuY29uZmlnLnZpc2libGUsIHByb3BzLmNvbmZpZy5pZCkpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFZpc2libGUodHJ1ZSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwocHJvcHMuY29uZmlnKSAmJiAhVXRpbHMuaXNOdWxsKHByb3BzLmNvbmZpZy5kaXNhYmxlZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlQ29tcG9uZW50RGlzYWJsZWRTdGF0ZShVdGlscy5ldmFsdWF0ZUJvb2xlYW5FeHByZXNzaW9uKHByb3BzLmNvbmZpZy5kaXNhYmxlZCwgcHJvcHMuY29uZmlnLmlkKSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmVmcmVzaENvbXBvbmVudHMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gcmVuZGVyKGZpZWxkU2V0KSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAoVXRpbHMuaXNOdWxsKGZpZWxkU2V0LmZpZWxkcykgfHwgZmllbGRTZXQuZmllbGRzLmxlbmd0aCA9PT0gMCkgP1xuICAgICAgICAgICAgICAgIDxkaXY+IEVycm9yOiBBIGZpZWxkU2V0IG11c3QgaGF2ZSBmaWVsZHM8L2Rpdj5cbiAgICAgICAgICAgICAgICA6XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRHcmlkLnJvd3MubWFwKChyb3csIGkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJyb3dcIiBrZXk9e2l9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luTGVmdDogJzAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5SaWdodDogJzAnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdy5maWVsZHMubWFwKChmaWVsZCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY29sc3BhbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgd2lkdGg7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKGZpZWxkLmF0dHJpYnV0ZXMpIHx8IFV0aWxzLmlzTnVsbChmaWVsZC5hdHRyaWJ1dGVzLmNvbHNwYW4pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHNwYW4gPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjb2xzcGFuVmFsID0gVXRpbHMuZ2V0RmllbGRDb2xzcGFuKGZpZWxkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbHNwYW5WYWwgPiBmaWVsZEdyaWQubWF4Q29sUGVyUm93KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xzcGFuID0gZmllbGRHcmlkLm1heENvbFBlclJvdztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHNwYW4gPSBjb2xzcGFuVmFsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGggPSBjb2xzcGFuIC8gZmllbGRHcmlkLm1heENvbFBlclJvdyAqIDEwMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY29udGFpbmVyU3R5bGUgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdMZWZ0OiAnMCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdSaWdodDogJzAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5MZWZ0OiAnMCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpblJpZ2h0OiAnMCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbldpZHRoOiAnMzIwcHgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogd2lkdGggKyAnJSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQuaW5kZXggPSBpbmRleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgc3R5bGUgPSBmaWVsZC5hdHRyaWJ1dGVzPy5jb250YWluZXJTdHlsZSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFV0aWxzLm1lcmdlT2JqZWN0cyhmaWVsZC5hdHRyaWJ1dGVzPy5jb250YWluZXJTdHlsZSwgY29udGFpbmVyU3R5bGUpIDogY29udGFpbmVyU3R5bGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxkaXYga2V5PXsoaSArIDEpICogaW5kZXh9IGNsYXNzTmFtZT1cImNvbC0qLSogb3VpLWZvcm0taXRlbS1jb250YWluZXJcIiBzdHlsZT17c3R5bGV9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJDb21wb25lbnQoZmllbGQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+O1xuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT17J2ZpZWxkU2V0V3JhcHBlcid9IHN0eWxlPXtVdGlscy5tZXJnZVN0eWxlcyhcbiAgICAgICAge1xuICAgICAgICAgICAgZGlzcGxheTogdmlzaWJsZSA/ICdibG9jaycgOiAnbm9uZScsXG4gICAgICAgICAgICBtYXJnaW46ICcwJ1xuICAgICAgICB9LCBwcm9wcy5jb25maWcpfT5cbiAgICAgICAge1xuICAgICAgICAgICAgIVV0aWxzLmlzTnVsbChwcm9wcy5jb25maWcuYXR0cmlidXRlcykgJiYgIVV0aWxzLmlzTnVsbChwcm9wcy5jb25maWcuYXR0cmlidXRlc1snbGFiZWwnXSkgP1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnZmllbGRTZXRUaXRsZSd9PlxuICAgICAgICAgICAgICAgICAgICB7cHJvcHMuY29uZmlnLmF0dHJpYnV0ZXNbJ2xhYmVsJ119XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgOlxuICAgICAgICAgICAgICAgIG51bGxcbiAgICAgICAgfVxuICAgICAgICB7XG4gICAgICAgICAgICAhVXRpbHMuaXNOdWxsKGZpZWxkR3JpZCkgP1xuICAgICAgICAgICAgICAgIHJlbmRlcihwcm9wcy5jb25maWcpXG4gICAgICAgICAgICAgICAgOlxuICAgICAgICAgICAgICAgIG51bGxcbiAgICAgICAgfVxuICAgIDwvZGl2Pjtcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBGaWVsZFNldDtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUMsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0QsSUFBQUMsTUFBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsV0FBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUcsVUFBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUksY0FBQSxHQUFBTCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUssY0FBQSxHQUFBTixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQU0sWUFBQSxHQUFBUCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQU8saUJBQUEsR0FBQVIsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFRLFdBQUEsR0FBQVQsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFTLFdBQUEsR0FBQVYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFVLFdBQUEsR0FBQVgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFXLFNBQUEsR0FBQVosc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFZLFdBQUEsR0FBQWIsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFhLFlBQUEsR0FBQWQsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFjLGFBQUEsR0FBQWYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFlLFVBQUEsR0FBQWhCLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBZ0IsWUFBQSxHQUFBakIsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFpQixXQUFBLEdBQUFsQixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQWtCLE1BQUEsR0FBQW5CLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBbUIsVUFBQSxHQUFBcEIsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFvQixZQUFBLEdBQUFwQixPQUFBO0FBQ0EsSUFBQXFCLCtCQUFBLEdBQUF0QixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQXNCLG1CQUFBLEdBQUF2QixzQkFBQSxDQUFBQyxPQUFBO0FBQ0FBLE9BQUE7QUFDQSxJQUFBdUIsT0FBQSxHQUFBeEIsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUF3QixVQUFBLEdBQUF6QixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQXlCLGFBQUEsR0FBQTFCLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBMEIscUJBQUEsR0FBQTNCLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBMkIsS0FBQSxHQUFBNUIsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUE0QixPQUFBLEdBQUE3QixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQTZCLFVBQUEsR0FBQTlCLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBOEIseUJBQUEsR0FBQS9CLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBK0IsVUFBQSxHQUFBaEMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFnQyxPQUFBLEdBQUFoQyxPQUFBO0FBQXdDLFNBQUFELHVCQUFBa0MsQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQUV4QyxNQUFNRyxRQUFRLGdCQUFHQyxjQUFLLENBQUNDLElBQUksQ0FBRUMsS0FBSyxJQUFLO0VBQ25DLE1BQU0sQ0FBQ0MsU0FBUyxDQUFDLEdBQUdILGNBQUssQ0FBQ0ksUUFBUSxDQUFDQyxjQUFLLENBQUNDLFlBQVksQ0FBQ0osS0FBSyxDQUFDSyxNQUFNLENBQUNDLFVBQVUsRUFBRU4sS0FBSyxDQUFDSyxNQUFNLENBQUNFLE1BQU0sQ0FBQyxDQUFDO0VBQ3BHLE1BQU0sQ0FBQ0MsZ0JBQWdCLENBQUMsR0FBR1YsY0FBSyxDQUFDSSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7RUFDN0MsTUFBTSxDQUFDTyxPQUFPLEVBQUVDLFVBQVUsQ0FBQyxHQUFHWixjQUFLLENBQUNJLFFBQVEsQ0FBQyxLQUFLLENBQUM7RUFFbkQsTUFBTVMscUJBQXFCLEdBQUlDLEtBQUssSUFBSztJQUNyQyxJQUFJVCxjQUFLLENBQUNVLE1BQU0sQ0FBQ0wsZ0JBQWdCLENBQUNJLEtBQUssQ0FBQ0UsRUFBRSxDQUFDLENBQUMsRUFBRTtNQUMxQyxJQUFJQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO01BQ2ZQLGdCQUFnQixDQUFDSSxLQUFLLENBQUNFLEVBQUUsQ0FBQyxHQUFHQyxNQUFNO01BQ25DLE9BQU9BLE1BQU07SUFDakI7SUFFQSxPQUFPUCxnQkFBZ0IsQ0FBQ0ksS0FBSyxDQUFDRSxFQUFFLENBQUM7RUFDckMsQ0FBQztFQUVEaEIsY0FBSyxDQUFDa0IsU0FBUyxDQUNYLE1BQU07SUFDRmhCLEtBQUssQ0FBQ2UsTUFBTSxDQUFDRSxHQUFHLEdBQUdBLEdBQUcsQ0FBQyxDQUFDO0VBQzVCLENBQUMsQ0FBQztFQUVObkIsY0FBSyxDQUFDb0IsZUFBZSxDQUNqQixNQUFNO0lBQ0ZsQixLQUFLLENBQUNlLE1BQU0sQ0FBQ0UsR0FBRyxHQUFHQSxHQUFHLENBQUMsQ0FBQztFQUM1QixDQUFDLEVBQUUsRUFBRSxDQUFDO0VBRVZuQixjQUFLLENBQUNrQixTQUFTLENBQ1gsTUFBTTtJQUNGaEIsS0FBSyxDQUFDZSxNQUFNLENBQUNFLEdBQUcsR0FBR0EsR0FBRyxDQUFDLENBQUM7SUFDeEJqQixLQUFLLENBQUNlLE1BQU0sQ0FBQ0UsR0FBRyxDQUFDRSxPQUFPLENBQUMsQ0FBQztJQUMxQixJQUFJQyxZQUFZLEdBQUdqQixjQUFLLENBQUNrQixXQUFXLENBQUNyQixLQUFLLENBQUNLLE1BQU0sRUFBRUwsS0FBSyxDQUFDc0IsTUFBTSxDQUFDO0lBQ2hFQyxtQkFBWSxDQUFDQyxnQkFBZ0IsQ0FBQ0osWUFBWSxDQUFDSyxtQkFBbUIsRUFBRXpCLEtBQUssQ0FBQ2UsTUFBTSxFQUFFZixLQUFLLENBQUNzQixNQUFNLENBQUM7SUFDM0ZDLG1CQUFZLENBQUNHLHNCQUFzQixDQUFDMUIsS0FBSyxDQUFDc0IsTUFBTSxFQUFFRixZQUFZLENBQUM7RUFDbkUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztFQUVWdEIsY0FBSyxDQUFDa0IsU0FBUyxDQUNYLE1BQU07SUFDRixJQUFJLENBQUNiLGNBQUssQ0FBQ1UsTUFBTSxDQUFDYixLQUFLLENBQUMyQixRQUFRLENBQUMsRUFBRTtNQUMvQkMsNEJBQTRCLENBQUM1QixLQUFLLENBQUMyQixRQUFRLENBQUM7SUFDaEQ7RUFDSixDQUFDLEVBQUUsQ0FBQzNCLEtBQUssQ0FBQzJCLFFBQVEsQ0FBQyxDQUFDO0VBRXhCLFNBQVNFLGVBQWVBLENBQUEsRUFBRztJQUN2QixJQUFJQyxLQUFLLEdBQUcsSUFBSUMsY0FBSyxDQUFDL0IsS0FBSyxDQUFDZSxNQUFNLEVBQUVmLEtBQUssQ0FBQ3NCLE1BQU0sQ0FBQztJQUNqREMsbUJBQVksQ0FBQ1MsU0FBUyxDQUFDQyxrQkFBUyxDQUFDQyxZQUFZLEVBQUVKLEtBQUssQ0FBQztFQUN6RDtFQUVBLFNBQVNGLDRCQUE0QkEsQ0FBQ0QsUUFBUSxFQUFFO0lBQzVDLElBQUlRLFVBQVUsR0FBR0MsTUFBTSxDQUFDQyxtQkFBbUIsQ0FBQzdCLGdCQUFnQixDQUFDO0lBQzdELEtBQUssTUFBTThCLFFBQVEsSUFBSUgsVUFBVSxFQUFFO01BQy9CLElBQUlJLGVBQWUsR0FBRy9CLGdCQUFnQixDQUFDOEIsUUFBUSxDQUFDO01BQ2hEQyxlQUFlLENBQUN0QixHQUFHLENBQUNVLFFBQVEsR0FBR0EsUUFBUTtJQUMzQztFQUNKO0VBRUEsU0FBU2EsaUJBQWlCQSxDQUFBLEVBQUc7SUFDekIsSUFBSUwsVUFBVSxHQUFHQyxNQUFNLENBQUNDLG1CQUFtQixDQUFDN0IsZ0JBQWdCLENBQUM7SUFDN0QsS0FBSyxNQUFNOEIsUUFBUSxJQUFJSCxVQUFVLEVBQUU7TUFDL0IsSUFBSUksZUFBZSxHQUFHL0IsZ0JBQWdCLENBQUM4QixRQUFRLENBQUM7TUFDaEQsSUFBR0MsZUFBZSxDQUFDdEIsR0FBRyxFQUFFO1FBQ3BCc0IsZUFBZSxDQUFDdEIsR0FBRyxDQUFDRSxPQUFPLENBQUMsQ0FBQztNQUNqQztJQUNKO0VBQ0o7RUFFQSxTQUFTc0IsZUFBZUEsQ0FBQ0MsU0FBUyxFQUFFO0lBQ2hDLElBQUksQ0FBQ0EsU0FBUyxDQUFDQyxTQUFTLEVBQUU7TUFDdEJDLE9BQU8sQ0FBQ0MsS0FBSyxDQUFDLDRCQUE0QixHQUFHSCxTQUFTLENBQUM1QixFQUFFLEdBQUcsNEJBQTRCLENBQUM7SUFDN0Y7SUFFQSxJQUFJZ0MsVUFBVSxHQUFHLEtBQUs7SUFDdEIsSUFBSSxDQUFDM0MsY0FBSyxDQUFDVSxNQUFNLENBQUNiLEtBQUssQ0FBQ0ssTUFBTSxDQUFDLElBQUksQ0FBQ0YsY0FBSyxDQUFDVSxNQUFNLENBQUNiLEtBQUssQ0FBQ0ssTUFBTSxDQUFDc0IsUUFBUSxDQUFDLEVBQUU7TUFDckVtQixVQUFVLEdBQUczQyxjQUFLLENBQUM0Qyx5QkFBeUIsQ0FBQy9DLEtBQUssQ0FBQ0ssTUFBTSxDQUFDc0IsUUFBUSxFQUFFM0IsS0FBSyxDQUFDSyxNQUFNLENBQUNTLEVBQUUsQ0FBQztJQUN4RjtJQUVBLElBQUlnQyxVQUFVLEVBQUU7TUFDWixJQUFJM0MsY0FBSyxDQUFDVSxNQUFNLENBQUM2QixTQUFTLENBQUNmLFFBQVEsQ0FBQyxFQUFFO1FBQ2xDZSxTQUFTLENBQUNmLFFBQVEsR0FBRyxJQUFJO01BQzdCO0lBQ0o7SUFFQSxRQUFRZSxTQUFTLENBQUNDLFNBQVM7TUFDdkIsS0FBSyxRQUFRO1FBQ1Qsb0JBQU9wRixNQUFBLENBQUFxQyxPQUFBLENBQUFvRCxhQUFBLENBQUNqRixZQUFBLENBQUE2QixPQUFXO1VBQUNxRCxVQUFVLEVBQUVqRCxLQUFLLENBQUNpRCxVQUFXO1VBQzdCNUMsTUFBTSxFQUFFcUMsU0FBVTtVQUNsQlEsSUFBSSxFQUFFbEQsS0FBSyxDQUFDa0QsSUFBSztVQUNqQkMsUUFBUSxFQUFFbkQsS0FBSyxDQUFDbUQsUUFBUztVQUN6QnBDLE1BQU0sRUFBRUoscUJBQXFCLENBQUMrQixTQUFTLENBQUU7VUFDekNVLGtCQUFrQixFQUFFQSxDQUFBLEtBQU12QixlQUFlLENBQUMsQ0FBRTtVQUM1Q3dCLE1BQU0sRUFBRXJELEtBQUssQ0FBQ3FELE1BQU87VUFDckIvQixNQUFNLEVBQUV0QixLQUFLLENBQUNzQjtRQUFPLENBQ3hDLENBQUM7TUFDTixLQUFLLGNBQWM7UUFDZixvQkFBTy9ELE1BQUEsQ0FBQXFDLE9BQUEsQ0FBQW9ELGFBQUEsQ0FBQ2hGLGlCQUFBLENBQUE0QixPQUFnQjtVQUFDcUQsVUFBVSxFQUFFakQsS0FBSyxDQUFDaUQsVUFBVztVQUM3QjVDLE1BQU0sRUFBRXFDLFNBQVU7VUFDbEJRLElBQUksRUFBRWxELEtBQUssQ0FBQ2tELElBQUs7VUFDakJDLFFBQVEsRUFBRW5ELEtBQUssQ0FBQ21ELFFBQVM7VUFDekJwQyxNQUFNLEVBQUVKLHFCQUFxQixDQUFDK0IsU0FBUyxDQUFFO1VBQ3pDVSxrQkFBa0IsRUFBRUEsQ0FBQSxLQUFNdkIsZUFBZSxDQUFDLENBQUU7VUFDNUN3QixNQUFNLEVBQUVyRCxLQUFLLENBQUNxRCxNQUFPO1VBQ3JCL0IsTUFBTSxFQUFFdEIsS0FBSyxDQUFDc0I7UUFBTyxDQUM3QyxDQUFDO01BQ04sS0FBSyxZQUFZO1FBQ2Isb0JBQU8vRCxNQUFBLENBQUFxQyxPQUFBLENBQUFvRCxhQUFBLENBQUNwRixVQUFBLENBQUFnQyxPQUFTO1VBQUNxRCxVQUFVLEVBQUVqRCxLQUFLLENBQUNpRCxVQUFXO1VBQzdCNUMsTUFBTSxFQUFFcUMsU0FBVTtVQUNsQlUsa0JBQWtCLEVBQUVBLENBQUEsS0FBTXZCLGVBQWUsQ0FBQyxDQUFFO1VBQzVDcUIsSUFBSSxFQUFFbEQsS0FBSyxDQUFDa0QsSUFBSztVQUNqQkMsUUFBUSxFQUFFbkQsS0FBSyxDQUFDbUQsUUFBUztVQUN6QnBDLE1BQU0sRUFBRUoscUJBQXFCLENBQUMrQixTQUFTLENBQUU7VUFDekNXLE1BQU0sRUFBRXJELEtBQUssQ0FBQ3FELE1BQU87VUFDckIvQixNQUFNLEVBQUV0QixLQUFLLENBQUNzQjtRQUFPLENBQ3RDLENBQUM7TUFDTixLQUFLLFVBQVU7UUFDWCxvQkFBTy9ELE1BQUEsQ0FBQXFDLE9BQUEsQ0FBQW9ELGFBQUEsQ0FBQ25GLGNBQUEsQ0FBQStCLE9BQWE7VUFBQ3FELFVBQVUsRUFBRWpELEtBQUssQ0FBQ2lELFVBQVc7VUFDN0I1QyxNQUFNLEVBQUVxQyxTQUFVO1VBQ2xCVSxrQkFBa0IsRUFBRUEsQ0FBQSxLQUFNdkIsZUFBZSxDQUFDLENBQUU7VUFDNUNxQixJQUFJLEVBQUVsRCxLQUFLLENBQUNrRCxJQUFLO1VBQ2pCQyxRQUFRLEVBQUVuRCxLQUFLLENBQUNtRCxRQUFTO1VBQ3pCcEMsTUFBTSxFQUFFSixxQkFBcUIsQ0FBQytCLFNBQVMsQ0FBRTtVQUN6Q1csTUFBTSxFQUFFckQsS0FBSyxDQUFDcUQsTUFBTztVQUNyQi9CLE1BQU0sRUFBRXRCLEtBQUssQ0FBQ3NCO1FBQU8sQ0FDMUMsQ0FBQztNQUNOLEtBQUssVUFBVTtRQUNYLG9CQUFPL0QsTUFBQSxDQUFBcUMsT0FBQSxDQUFBb0QsYUFBQSxDQUFDcEYsVUFBQSxDQUFBZ0MsT0FBUztVQUFDcUQsVUFBVSxFQUFFakQsS0FBSyxDQUFDaUQsVUFBVztVQUM3QjVDLE1BQU0sRUFBRXFDLFNBQVU7VUFDbEJVLGtCQUFrQixFQUFFQSxDQUFBLEtBQU12QixlQUFlLENBQUMsQ0FBRTtVQUM1Q3FCLElBQUksRUFBRWxELEtBQUssQ0FBQ2tELElBQUs7VUFDakJJLElBQUksRUFBRSxVQUFXO1VBQ2pCSCxRQUFRLEVBQUVuRCxLQUFLLENBQUNtRCxRQUFTO1VBQ3pCcEMsTUFBTSxFQUFFSixxQkFBcUIsQ0FBQytCLFNBQVMsQ0FBRTtVQUN6Q1csTUFBTSxFQUFFckQsS0FBSyxDQUFDcUQsTUFBTztVQUNyQi9CLE1BQU0sRUFBRXRCLEtBQUssQ0FBQ3NCO1FBQU8sQ0FDdEMsQ0FBQztNQUNOLEtBQUssV0FBVztRQUNaLG9CQUFPL0QsTUFBQSxDQUFBcUMsT0FBQSxDQUFBb0QsYUFBQSxDQUFDcEYsVUFBQSxDQUFBZ0MsT0FBUztVQUFDcUQsVUFBVSxFQUFFakQsS0FBSyxDQUFDaUQsVUFBVztVQUM3QjVDLE1BQU0sRUFBRXFDLFNBQVU7VUFDbEJhLFNBQVMsRUFBRSxJQUFLO1VBQ2hCSCxrQkFBa0IsRUFBRUEsQ0FBQSxLQUFNdkIsZUFBZSxDQUFDLENBQUU7VUFDNUNxQixJQUFJLEVBQUVsRCxLQUFLLENBQUNrRCxJQUFLO1VBQ2pCQyxRQUFRLEVBQUVuRCxLQUFLLENBQUNtRCxRQUFTO1VBQ3pCcEMsTUFBTSxFQUFFSixxQkFBcUIsQ0FBQytCLFNBQVMsQ0FBRTtVQUN6Q1csTUFBTSxFQUFFckQsS0FBSyxDQUFDcUQsTUFBTztVQUNyQi9CLE1BQU0sRUFBRXRCLEtBQUssQ0FBQ3NCO1FBQU8sQ0FDdEMsQ0FBQztNQUNOLEtBQUssZ0JBQWdCO1FBQ2pCLG9CQUFPL0QsTUFBQSxDQUFBcUMsT0FBQSxDQUFBb0QsYUFBQSxDQUFDbEYsY0FBQSxDQUFBOEIsT0FBYTtVQUFDcUQsVUFBVSxFQUFFakQsS0FBSyxDQUFDaUQsVUFBVztVQUM3QjVDLE1BQU0sRUFBRXFDLFNBQVU7VUFDbEJhLFNBQVMsRUFBRSxJQUFLO1VBQ2hCSCxrQkFBa0IsRUFBRUEsQ0FBQSxLQUFNdkIsZUFBZSxDQUFDLENBQUU7VUFDNUNxQixJQUFJLEVBQUVsRCxLQUFLLENBQUNrRCxJQUFLO1VBQ2pCQyxRQUFRLEVBQUVuRCxLQUFLLENBQUNtRCxRQUFTO1VBQ3pCcEMsTUFBTSxFQUFFSixxQkFBcUIsQ0FBQytCLFNBQVMsQ0FBRTtVQUN6Q1csTUFBTSxFQUFFckQsS0FBSyxDQUFDcUQsTUFBTztVQUNyQi9CLE1BQU0sRUFBRXRCLEtBQUssQ0FBQ3NCO1FBQU8sQ0FDMUMsQ0FBQztNQUNOLEtBQUssUUFBUTtRQUNULG9CQUFPL0QsTUFBQSxDQUFBcUMsT0FBQSxDQUFBb0QsYUFBQSxDQUFDL0UsV0FBQSxDQUFBMkIsT0FBVTtVQUFDcUQsVUFBVSxFQUFFakQsS0FBSyxDQUFDaUQsVUFBVztVQUM3QjVDLE1BQU0sRUFBRXFDLFNBQVU7VUFDbEJRLElBQUksRUFBRWxELEtBQUssQ0FBQ2tELElBQUs7VUFDakJDLFFBQVEsRUFBRW5ELEtBQUssQ0FBQ21ELFFBQVM7VUFDekJwQyxNQUFNLEVBQUVKLHFCQUFxQixDQUFDK0IsU0FBUyxDQUFFO1VBQ3pDVSxrQkFBa0IsRUFBRUEsQ0FBQSxLQUFNdkIsZUFBZSxDQUFDLENBQUU7VUFDNUN3QixNQUFNLEVBQUVyRCxLQUFLLENBQUNxRCxNQUFPO1VBQ3JCL0IsTUFBTSxFQUFFdEIsS0FBSyxDQUFDc0I7UUFBTyxDQUN2QyxDQUFDO01BQ04sS0FBSyxNQUFNO1FBQ1Asb0JBQU8vRCxNQUFBLENBQUFxQyxPQUFBLENBQUFvRCxhQUFBLENBQUM5RSxXQUFBLENBQUEwQixPQUFVO1VBQUNxRCxVQUFVLEVBQUVqRCxLQUFLLENBQUNpRCxVQUFXO1VBQzdCNUMsTUFBTSxFQUFFcUMsU0FBVTtVQUNsQlEsSUFBSSxFQUFFbEQsS0FBSyxDQUFDa0QsSUFBSztVQUNqQkMsUUFBUSxFQUFFbkQsS0FBSyxDQUFDbUQsUUFBUztVQUN6QnBDLE1BQU0sRUFBRUoscUJBQXFCLENBQUMrQixTQUFTLENBQUU7VUFDekNVLGtCQUFrQixFQUFFQSxDQUFBLEtBQU12QixlQUFlLENBQUMsQ0FBRTtVQUM1Q3dCLE1BQU0sRUFBRXJELEtBQUssQ0FBQ3FELE1BQU87VUFDckIvQixNQUFNLEVBQUV0QixLQUFLLENBQUNzQjtRQUFPLENBQ3ZDLENBQUM7TUFDTixLQUFLLGVBQWU7UUFDaEIsb0JBQU8vRCxNQUFBLENBQUFxQyxPQUFBLENBQUFvRCxhQUFBLENBQUM5RCxhQUFBLENBQUFVLE9BQVk7VUFBQ3FELFVBQVUsRUFBRWpELEtBQUssQ0FBQ2lELFVBQVc7VUFDN0I1QyxNQUFNLEVBQUVxQyxTQUFVO1VBQ2xCUSxJQUFJLEVBQUVsRCxLQUFLLENBQUNrRCxJQUFLO1VBQ2pCQyxRQUFRLEVBQUVuRCxLQUFLLENBQUNtRCxRQUFTO1VBQ3pCcEMsTUFBTSxFQUFFSixxQkFBcUIsQ0FBQytCLFNBQVMsQ0FBRTtVQUN6Q1Usa0JBQWtCLEVBQUVBLENBQUEsS0FBTXZCLGVBQWUsQ0FBQyxDQUFFO1VBQzVDd0IsTUFBTSxFQUFFckQsS0FBSyxDQUFDcUQsTUFBTztVQUNyQi9CLE1BQU0sRUFBRXRCLEtBQUssQ0FBQ3NCO1FBQU8sQ0FDekMsQ0FBQztNQUNOLEtBQUssVUFBVTtRQUNYLG9CQUFPL0QsTUFBQSxDQUFBcUMsT0FBQSxDQUFBb0QsYUFBQSxDQUFDNUUsU0FBQSxDQUFBd0IsT0FBUTtVQUFDcUQsVUFBVSxFQUFFakQsS0FBSyxDQUFDaUQsVUFBVztVQUM3QjVDLE1BQU0sRUFBRXFDLFNBQVU7VUFDbEJRLElBQUksRUFBRWxELEtBQUssQ0FBQ2tELElBQUs7VUFDakJDLFFBQVEsRUFBRW5ELEtBQUssQ0FBQ21ELFFBQVM7VUFDekJwQyxNQUFNLEVBQUVKLHFCQUFxQixDQUFDK0IsU0FBUyxDQUFFO1VBQ3pDVSxrQkFBa0IsRUFBRUEsQ0FBQSxLQUFNdkIsZUFBZSxDQUFDLENBQUU7VUFDNUN3QixNQUFNLEVBQUVyRCxLQUFLLENBQUNxRCxNQUFPO1VBQ3JCL0IsTUFBTSxFQUFFdEIsS0FBSyxDQUFDc0I7UUFBTyxDQUNyQyxDQUFDO01BQ04sS0FBSyxRQUFRO1FBQ1Qsb0JBQU8vRCxNQUFBLENBQUFxQyxPQUFBLENBQUFvRCxhQUFBLENBQUMzRCxPQUFBLENBQUFPLE9BQU07VUFBQ3FELFVBQVUsRUFBRWpELEtBQUssQ0FBQ2lELFVBQVc7VUFDN0I1QyxNQUFNLEVBQUVxQyxTQUFVO1VBQ2xCUSxJQUFJLEVBQUVsRCxLQUFLLENBQUNrRCxJQUFLO1VBQ2pCQyxRQUFRLEVBQUVuRCxLQUFLLENBQUNtRCxRQUFTO1VBQ3pCcEMsTUFBTSxFQUFFSixxQkFBcUIsQ0FBQytCLFNBQVMsQ0FBRTtVQUN6Q1Usa0JBQWtCLEVBQUVBLENBQUEsS0FBTXZCLGVBQWUsQ0FBQyxDQUFFO1VBQzVDd0IsTUFBTSxFQUFFckQsS0FBSyxDQUFDcUQsTUFBTztVQUNyQi9CLE1BQU0sRUFBRXRCLEtBQUssQ0FBQ3NCO1FBQU8sQ0FDbkMsQ0FBQztNQUNOLEtBQUssT0FBTztRQUNSLG9CQUFPL0QsTUFBQSxDQUFBcUMsT0FBQSxDQUFBb0QsYUFBQSxDQUFDM0UsV0FBQSxDQUFBdUIsT0FBVTtVQUFDcUQsVUFBVSxFQUFFakQsS0FBSyxDQUFDaUQsVUFBVztVQUM3QjVDLE1BQU0sRUFBRXFDLFNBQVU7VUFDbEJRLElBQUksRUFBRWxELEtBQUssQ0FBQ2tELElBQUs7VUFDakJDLFFBQVEsRUFBRW5ELEtBQUssQ0FBQ21ELFFBQVM7VUFDekJwQyxNQUFNLEVBQUVKLHFCQUFxQixDQUFDK0IsU0FBUyxDQUFFO1VBQ3pDVSxrQkFBa0IsRUFBRUEsQ0FBQSxLQUFNdkIsZUFBZSxDQUFDLENBQUU7VUFDNUN3QixNQUFNLEVBQUVyRCxLQUFLLENBQUNxRCxNQUFPO1VBQ3JCL0IsTUFBTSxFQUFFdEIsS0FBSyxDQUFDc0I7UUFBTyxDQUN2QyxDQUFDO01BQ04sS0FBSyxhQUFhO1FBQ2Qsb0JBQU8vRCxNQUFBLENBQUFxQyxPQUFBLENBQUFvRCxhQUFBLENBQUMxRSxZQUFBLENBQUFzQixPQUFXO1VBQUNxRCxVQUFVLEVBQUVqRCxLQUFLLENBQUNpRCxVQUFXO1VBQzdCNUMsTUFBTSxFQUFFcUMsU0FBVTtVQUNsQlEsSUFBSSxFQUFFbEQsS0FBSyxDQUFDa0QsSUFBSztVQUNqQkMsUUFBUSxFQUFFbkQsS0FBSyxDQUFDbUQsUUFBUztVQUN6QnBDLE1BQU0sRUFBRUoscUJBQXFCLENBQUMrQixTQUFTLENBQUU7VUFDekNVLGtCQUFrQixFQUFFQSxDQUFBLEtBQU12QixlQUFlLENBQUMsQ0FBRTtVQUM1Q3dCLE1BQU0sRUFBRXJELEtBQUssQ0FBQ3FELE1BQU87VUFDckIvQixNQUFNLEVBQUV0QixLQUFLLENBQUNzQjtRQUFPLENBQ3hDLENBQUM7TUFDTixLQUFLLGNBQWM7UUFDZixvQkFBTy9ELE1BQUEsQ0FBQXFDLE9BQUEsQ0FBQW9ELGFBQUEsQ0FBQzFFLFlBQUEsQ0FBQXNCLE9BQVc7VUFBQ3FELFVBQVUsRUFBRWpELEtBQUssQ0FBQ2lELFVBQVc7VUFDN0I1QyxNQUFNLEVBQUVxQyxTQUFVO1VBQ2xCUSxJQUFJLEVBQUVsRCxLQUFLLENBQUNrRCxJQUFLO1VBQ2pCQyxRQUFRLEVBQUVuRCxLQUFLLENBQUNtRCxRQUFTO1VBQ3pCcEMsTUFBTSxFQUFFSixxQkFBcUIsQ0FBQytCLFNBQVMsQ0FBRTtVQUN6Q2MsS0FBSyxFQUFFLE9BQVE7VUFDZkosa0JBQWtCLEVBQUVBLENBQUEsS0FBTXZCLGVBQWUsQ0FBQyxDQUFFO1VBQzVDd0IsTUFBTSxFQUFFckQsS0FBSyxDQUFDcUQsTUFBTztVQUNyQi9CLE1BQU0sRUFBRXRCLEtBQUssQ0FBQ3NCO1FBQU8sQ0FDeEMsQ0FBQztNQUNOLEtBQUssbUJBQW1CO1FBQ3BCLG9CQUFPL0QsTUFBQSxDQUFBcUMsT0FBQSxDQUFBb0QsYUFBQSxDQUFDN0QscUJBQUEsQ0FBQVMsT0FBb0I7VUFDeEJxRCxVQUFVLEVBQUVqRCxLQUFLLENBQUNpRCxVQUFXO1VBQzdCNUMsTUFBTSxFQUFFcUMsU0FBVTtVQUNsQlEsSUFBSSxFQUFFbEQsS0FBSyxDQUFDa0QsSUFBSztVQUNqQkMsUUFBUSxFQUFFbkQsS0FBSyxDQUFDbUQsUUFBUztVQUN6QnBDLE1BQU0sRUFBRUoscUJBQXFCLENBQUMrQixTQUFTLENBQUU7VUFDekNVLGtCQUFrQixFQUFFQSxDQUFBLEtBQU12QixlQUFlLENBQUMsQ0FBRTtVQUM1Q3dCLE1BQU0sRUFBRXJELEtBQUssQ0FBQ3FELE1BQU87VUFDckIvQixNQUFNLEVBQUV0QixLQUFLLENBQUNzQjtRQUFPLENBQ3hCLENBQUM7TUFDTixLQUFLLGVBQWU7UUFDaEIsb0JBQU8vRCxNQUFBLENBQUFxQyxPQUFBLENBQUFvRCxhQUFBLENBQUN6RSxhQUFBLENBQUFxQixPQUFZO1VBQUNxRCxVQUFVLEVBQUVqRCxLQUFLLENBQUNpRCxVQUFXO1VBQzdCNUMsTUFBTSxFQUFFcUMsU0FBVTtVQUNsQlEsSUFBSSxFQUFFbEQsS0FBSyxDQUFDa0QsSUFBSztVQUNqQkMsUUFBUSxFQUFFbkQsS0FBSyxDQUFDbUQsUUFBUztVQUN6QnBDLE1BQU0sRUFBRUoscUJBQXFCLENBQUMrQixTQUFTLENBQUU7VUFDekNVLGtCQUFrQixFQUFFQSxDQUFBLEtBQU12QixlQUFlLENBQUMsQ0FBRTtVQUM1Q3dCLE1BQU0sRUFBRXJELEtBQUssQ0FBQ3FELE1BQU87VUFDckIvQixNQUFNLEVBQUV0QixLQUFLLENBQUNzQjtRQUFPLENBQ3pDLENBQUM7TUFDTixLQUFLLE1BQU07UUFDUCxvQkFBTy9ELE1BQUEsQ0FBQXFDLE9BQUEsQ0FBQW9ELGFBQUEsQ0FBQ3hFLFVBQUEsQ0FBQW9CLE9BQVM7VUFBQ3FELFVBQVUsRUFBRWpELEtBQUssQ0FBQ2lELFVBQVc7VUFDN0I1QyxNQUFNLEVBQUVxQyxTQUFVO1VBQ2xCUSxJQUFJLEVBQUVsRCxLQUFLLENBQUNrRCxJQUFLO1VBQ2pCQyxRQUFRLEVBQUVuRCxLQUFLLENBQUNtRCxRQUFTO1VBQ3pCcEMsTUFBTSxFQUFFSixxQkFBcUIsQ0FBQytCLFNBQVMsQ0FBRTtVQUN6Q1Usa0JBQWtCLEVBQUVBLENBQUEsS0FBTXZCLGVBQWUsQ0FBQyxDQUFFO1VBQzVDd0IsTUFBTSxFQUFFckQsS0FBSyxDQUFDcUQsTUFBTztVQUNyQi9CLE1BQU0sRUFBRXRCLEtBQUssQ0FBQ3NCO1FBQU8sQ0FDdEMsQ0FBQztNQUNOLEtBQUssTUFBTTtRQUNQLG9CQUFPL0QsTUFBQSxDQUFBcUMsT0FBQSxDQUFBb0QsYUFBQSxDQUFDN0UsV0FBQSxDQUFBeUIsT0FBVTtVQUNkcUQsVUFBVSxFQUFFakQsS0FBSyxDQUFDaUQsVUFBVztVQUM3QjVDLE1BQU0sRUFBRXFDLFNBQVU7VUFDbEJRLElBQUksRUFBRWxELEtBQUssQ0FBQ2tELElBQUs7VUFDakJDLFFBQVEsRUFBRW5ELEtBQUssQ0FBQ21ELFFBQVM7VUFDekJwQyxNQUFNLEVBQUVKLHFCQUFxQixDQUFDK0IsU0FBUyxDQUFFO1VBQ3pDVSxrQkFBa0IsRUFBRUEsQ0FBQSxLQUFNdkIsZUFBZSxDQUFDLENBQUU7VUFDNUN3QixNQUFNLEVBQUVyRCxLQUFLLENBQUNxRCxNQUFPO1VBQ3JCL0IsTUFBTSxFQUFFdEIsS0FBSyxDQUFDc0I7UUFBTyxDQUN4QixDQUFDO01BQ04sS0FBSyxjQUFjO1FBQ2Ysb0JBQU8vRCxNQUFBLENBQUFxQyxPQUFBLENBQUFvRCxhQUFBLENBQUN2RSxZQUFBLENBQUFtQixPQUFXO1VBQ2ZxRCxVQUFVLEVBQUVqRCxLQUFLLENBQUNpRCxVQUFXO1VBQzdCNUMsTUFBTSxFQUFFcUMsU0FBVTtVQUNsQlEsSUFBSSxFQUFFbEQsS0FBSyxDQUFDa0QsSUFBSztVQUNqQkMsUUFBUSxFQUFFbkQsS0FBSyxDQUFDbUQsUUFBUztVQUN6QnBDLE1BQU0sRUFBRUoscUJBQXFCLENBQUMrQixTQUFTLENBQUU7VUFDekNVLGtCQUFrQixFQUFFQSxDQUFBLEtBQU12QixlQUFlLENBQUMsQ0FBRTtVQUM1Q3dCLE1BQU0sRUFBRXJELEtBQUssQ0FBQ3FELE1BQU87VUFDckIvQixNQUFNLEVBQUV0QixLQUFLLENBQUNzQjtRQUFPLENBQ3hCLENBQUM7TUFDTixLQUFLLGFBQWE7UUFDZCxvQkFBTy9ELE1BQUEsQ0FBQXFDLE9BQUEsQ0FBQW9ELGFBQUEsQ0FBQ3RFLFdBQUEsQ0FBQWtCLE9BQVU7VUFDZHFELFVBQVUsRUFBRWpELEtBQUssQ0FBQ2lELFVBQVc7VUFDN0I1QyxNQUFNLEVBQUVxQyxTQUFVO1VBQ2xCUSxJQUFJLEVBQUVsRCxLQUFLLENBQUNrRCxJQUFLO1VBQ2pCQyxRQUFRLEVBQUVuRCxLQUFLLENBQUNtRCxRQUFTO1VBQ3pCcEMsTUFBTSxFQUFFSixxQkFBcUIsQ0FBQytCLFNBQVMsQ0FBRTtVQUN6Q1Usa0JBQWtCLEVBQUVBLENBQUEsS0FBTXZCLGVBQWUsQ0FBQyxDQUFFO1VBQzVDd0IsTUFBTSxFQUFFckQsS0FBSyxDQUFDcUQsTUFBTztVQUNyQi9CLE1BQU0sRUFBRXRCLEtBQUssQ0FBQ3NCO1FBQU8sQ0FDeEIsQ0FBQztNQUNOLEtBQUssUUFBUTtRQUNULG9CQUFPL0QsTUFBQSxDQUFBcUMsT0FBQSxDQUFBb0QsYUFBQSxDQUFDaEUsT0FBQSxDQUFBWSxPQUFNO1VBQ1ZTLE1BQU0sRUFBRXFDLFNBQVU7VUFDbEJRLElBQUksRUFBRWxELEtBQUssQ0FBQ2tELElBQUs7VUFDakJuQyxNQUFNLEVBQUVKLHFCQUFxQixDQUFDK0IsU0FBUyxDQUFFO1VBQ3pDcEIsTUFBTSxFQUFFdEIsS0FBSyxDQUFDc0I7UUFBTyxDQUN4QixDQUFDO01BQ04sS0FBSyxZQUFZO1FBQ2Isb0JBQU8vRCxNQUFBLENBQUFxQyxPQUFBLENBQUFvRCxhQUFBLENBQUMvRCxVQUFBLENBQUFXLE9BQVM7VUFDYlMsTUFBTSxFQUFFcUMsU0FBVTtVQUNsQlEsSUFBSSxFQUFFbEQsS0FBSyxDQUFDa0QsSUFBSztVQUNqQm5DLE1BQU0sRUFBRUoscUJBQXFCLENBQUMrQixTQUFTLENBQUU7VUFDekNwQixNQUFNLEVBQUV0QixLQUFLLENBQUNzQjtRQUFPLENBQ3hCLENBQUM7TUFDTixLQUFLLFFBQVE7UUFDVCxvQkFBTy9ELE1BQUEsQ0FBQXFDLE9BQUEsQ0FBQW9ELGFBQUEsQ0FBQ3ZELE9BQUEsQ0FBQWdFLE1BQU07VUFDVnBELE1BQU0sRUFBRXFDLFNBQVU7VUFDbEJRLElBQUksRUFBRWxELEtBQUssQ0FBQ2tELElBQUs7VUFDakJuQyxNQUFNLEVBQUVKLHFCQUFxQixDQUFDK0IsU0FBUyxDQUFFO1VBQ3pDcEIsTUFBTSxFQUFFdEIsS0FBSyxDQUFDc0I7UUFBTyxDQUN4QixDQUFDO01BQ04sS0FBSyxNQUFNO1FBQ1Asb0JBQU8vRCxNQUFBLENBQUFxQyxPQUFBLENBQUFvRCxhQUFBLENBQUMxRCxVQUFBLENBQUFNLE9BQVM7VUFDYnFELFVBQVUsRUFBRWpELEtBQUssQ0FBQ2lELFVBQVc7VUFDN0I1QyxNQUFNLEVBQUVxQyxTQUFVO1VBQ2xCUSxJQUFJLEVBQUVsRCxLQUFLLENBQUNrRCxJQUFLO1VBQ2pCQyxRQUFRLEVBQUVuRCxLQUFLLENBQUNtRCxRQUFTO1VBQ3pCcEMsTUFBTSxFQUFFSixxQkFBcUIsQ0FBQytCLFNBQVMsQ0FBRTtVQUN6Q1Usa0JBQWtCLEVBQUVBLENBQUEsS0FBTXZCLGVBQWUsQ0FBQyxDQUFFO1VBQzVDd0IsTUFBTSxFQUFFckQsS0FBSyxDQUFDcUQsTUFBTztVQUNyQi9CLE1BQU0sRUFBRXRCLEtBQUssQ0FBQ3NCO1FBQU8sQ0FDeEIsQ0FBQztNQUNOLEtBQUssNkJBQTZCO1FBQzlCLG9CQUFPL0QsTUFBQSxDQUFBcUMsT0FBQSxDQUFBb0QsYUFBQSxDQUFDbEUsK0JBQUEsQ0FBQWMsT0FBOEI7VUFDbENxRCxVQUFVLEVBQUVqRCxLQUFLLENBQUNpRCxVQUFXO1VBQzdCNUMsTUFBTSxFQUFFcUMsU0FBVTtVQUNsQlEsSUFBSSxFQUFFbEQsS0FBSyxDQUFDa0QsSUFBSztVQUNqQkMsUUFBUSxFQUFFbkQsS0FBSyxDQUFDbUQsUUFBUztVQUN6QnBDLE1BQU0sRUFBRUoscUJBQXFCLENBQUMrQixTQUFTLENBQUU7VUFDekNVLGtCQUFrQixFQUFFQSxDQUFBLEtBQU12QixlQUFlLENBQUMsQ0FBRTtVQUM1Q3dCLE1BQU0sRUFBRXJELEtBQUssQ0FBQ3FELE1BQU87VUFDckIvQixNQUFNLEVBQUV0QixLQUFLLENBQUNzQjtRQUFPLENBQ3hCLENBQUM7TUFDTixLQUFLLDRCQUE0QjtRQUM3QixvQkFBTy9ELE1BQUEsQ0FBQXFDLE9BQUEsQ0FBQW9ELGFBQUEsQ0FBQ3pELHlCQUFBLENBQUFLLE9BQXdCO1VBQzVCcUQsVUFBVSxFQUFFakQsS0FBSyxDQUFDaUQsVUFBVztVQUM3QjVDLE1BQU0sRUFBRXFDLFNBQVU7VUFDbEJRLElBQUksRUFBRWxELEtBQUssQ0FBQ2tELElBQUs7VUFDakJDLFFBQVEsRUFBRW5ELEtBQUssQ0FBQ21ELFFBQVM7VUFDekJwQyxNQUFNLEVBQUVKLHFCQUFxQixDQUFDK0IsU0FBUyxDQUFFO1VBQ3pDVSxrQkFBa0IsRUFBRUEsQ0FBQSxLQUFNdkIsZUFBZSxDQUFDLENBQUU7VUFDNUN3QixNQUFNLEVBQUVyRCxLQUFLLENBQUNxRCxNQUFPO1VBQ3JCL0IsTUFBTSxFQUFFdEIsS0FBSyxDQUFDc0I7UUFBTyxDQUN4QixDQUFDO01BQ047UUFDSSxvQkFBTy9ELE1BQUEsQ0FBQXFDLE9BQUEsQ0FBQW9ELGFBQUEsY0FBTSxzQ0FBc0MsR0FBR04sU0FBUyxDQUFDQyxTQUFTLEdBQUcsS0FBSyxHQUFHRCxTQUFTLENBQUM1QixFQUFRLENBQUM7SUFDL0c7RUFDSjtFQUVBLE1BQU1HLEdBQUcsR0FBR0EsQ0FBQSxLQUFNO0lBQ2QsT0FBTztNQUNILElBQUlILEVBQUVBLENBQUEsRUFBRztRQUNMLE9BQU9kLEtBQUssQ0FBQ0ssTUFBTSxDQUFDUyxFQUFFO01BQzFCLENBQUM7TUFDRCxJQUFJNEMsaUJBQWlCQSxDQUFBLEVBQUc7UUFDcEIsSUFBSUMsVUFBVSxHQUFHLEVBQUU7UUFDbkIsS0FBSyxNQUFNL0MsS0FBSyxJQUFJWixLQUFLLENBQUNLLE1BQU0sQ0FBQ0UsTUFBTSxFQUFFO1VBQ3JDb0QsVUFBVSxDQUFDQyxJQUFJLENBQUMsQ0FBQ3pELGNBQUssQ0FBQ1UsTUFBTSxDQUFDRCxLQUFLLENBQUNpRCxXQUFXLENBQUMsR0FBR2pELEtBQUssQ0FBQ2lELFdBQVcsR0FBR2pELEtBQUssQ0FBQ0UsRUFBRSxDQUFDO1FBQ3BGO1FBRUEsT0FBTzZDLFVBQVU7TUFDckIsQ0FBQztNQUNELElBQUloQyxRQUFRQSxDQUFDQSxRQUFRLEVBQUU7UUFDbkJDLDRCQUE0QixDQUFDRCxRQUFRLENBQUM7TUFDMUMsQ0FBQztNQUNEbUMsS0FBS0EsQ0FBQSxFQUFHO1FBQ0osSUFBSTNCLFVBQVUsR0FBR0MsTUFBTSxDQUFDQyxtQkFBbUIsQ0FBQzdCLGdCQUFnQixDQUFDO1FBQzdELEtBQUssTUFBTThCLFFBQVEsSUFBSUgsVUFBVSxFQUFFO1VBQy9CLElBQUk0QixZQUFZLEdBQUd2RCxnQkFBZ0IsQ0FBQzhCLFFBQVEsQ0FBQztVQUM3Q3lCLFlBQVksQ0FBQzlDLEdBQUcsQ0FBQytDLEtBQUssR0FBRyxJQUFJO1FBQ2pDO01BQ0osQ0FBQztNQUNEQyxXQUFXLEVBQUVBLENBQUEsS0FBTTtRQUNmLElBQUlDLFFBQVEsR0FBRyxFQUFFO1FBQ2pCLElBQUkvQixVQUFVLEdBQUdDLE1BQU0sQ0FBQ0MsbUJBQW1CLENBQUM3QixnQkFBZ0IsQ0FBQztRQUM3RCxLQUFLLE1BQU04QixRQUFRLElBQUlILFVBQVUsRUFBRTtVQUMvQitCLFFBQVEsQ0FBQ04sSUFBSSxDQUFDcEQsZ0JBQWdCLENBQUM4QixRQUFRLENBQUMsQ0FBQztRQUM3QztRQUVBLE9BQU80QixRQUFRO01BQ25CLENBQUM7TUFDRCxJQUFJQyxLQUFLQSxDQUFDQSxLQUFLLEVBQUU7UUFDYixLQUFLLE1BQU12RCxLQUFLLElBQUlaLEtBQUssQ0FBQ0ssTUFBTSxDQUFDRSxNQUFNLEVBQUU7VUFDckNQLEtBQUssQ0FBQ2tELElBQUksQ0FBQyxDQUFDLENBQUNpQixLQUFLLENBQUN2RCxLQUFLLENBQUNFLEVBQUUsQ0FBQyxHQUFHcUQsS0FBSyxDQUFDdkQsS0FBSyxDQUFDRSxFQUFFLENBQUM7VUFFOUMsSUFBSWlELFlBQVksR0FBR3ZELGdCQUFnQixDQUFDSSxLQUFLLENBQUNFLEVBQUUsQ0FBQztVQUM3Q2lELFlBQVksQ0FBQzlDLEdBQUcsQ0FBQytDLEtBQUssR0FBR0csS0FBSyxDQUFDdkQsS0FBSyxDQUFDRSxFQUFFLENBQUM7UUFDNUM7TUFDSixDQUFDO01BQ0QsSUFBSWtELEtBQUtBLENBQUEsRUFBRztRQUNSLElBQUlBLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDZCxJQUFJSSxTQUFTLEdBQUdwRSxLQUFLLENBQUNrRCxJQUFJLENBQUMsQ0FBQyxDQUFDYyxLQUFLO1FBRWxDLElBQUlJLFNBQVMsS0FBSyxJQUFJLEVBQUU7VUFDcEIsT0FBTyxJQUFJO1FBQ2Y7UUFFQSxLQUFLLE1BQU14RCxLQUFLLElBQUlaLEtBQUssQ0FBQ0ssTUFBTSxDQUFDRSxNQUFNLEVBQUU7VUFDckN5RCxLQUFLLENBQUNwRCxLQUFLLENBQUNFLEVBQUUsQ0FBQyxHQUFHc0QsU0FBUyxDQUFDeEQsS0FBSyxDQUFDRSxFQUFFLENBQUM7UUFDekM7UUFFQSxPQUFPa0QsS0FBSztNQUNoQixDQUFDO01BQ0RLLFFBQVEsRUFBRUEsQ0FBQ0MsWUFBWSxFQUFFQyxXQUFXLEtBQUs7UUFDckMsSUFBSUMsT0FBTyxHQUFHLENBQUNyRSxjQUFLLENBQUNVLE1BQU0sQ0FBQ3lELFlBQVksQ0FBQ0csV0FBVyxDQUFDLEdBQUdILFlBQVksQ0FBQ0csV0FBVyxHQUM1RSxDQUFDdEUsY0FBSyxDQUFDVSxNQUFNLENBQUNiLEtBQUssQ0FBQ0ssTUFBTSxDQUFDLEdBQUdMLEtBQUssQ0FBQ0ssTUFBTSxDQUFDb0UsV0FBVyxHQUFHLElBQUk7UUFDakUsSUFBSUMsY0FBYyxHQUFHLENBQUN2RSxjQUFLLENBQUNVLE1BQU0sQ0FBQ2IsS0FBSyxDQUFDSyxNQUFNLENBQUMyRCxLQUFLLENBQUMsR0FBR2hFLEtBQUssQ0FBQ0ssTUFBTSxDQUFDMkQsS0FBSyxHQUN2RU0sWUFBWSxDQUFDTixLQUFLO1FBRXRCLElBQUlVLGNBQWMsRUFBRTtVQUNoQixJQUFJQyxXQUFXLEdBQUdELGNBQWMsQ0FBQ0UsUUFBUSxDQUFDLENBQUMsQ0FDdENDLFVBQVUsQ0FBQyxhQUFhLENBQUM7VUFDOUIsSUFBSUMsV0FBVyxHQUFHQywyQkFBa0IsQ0FBQ0MsWUFBWSxDQUFDTixjQUFjLENBQUM7VUFDakUsSUFBSU8sR0FBRyxHQUFHTixXQUFXLElBQUlHLFdBQVcsR0FBR0MsMkJBQWtCLENBQUNHLHNCQUFzQixDQUFDUixjQUFjLEVBQUVILFdBQVcsR0FBR0EsV0FBVyxDQUFDWSxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUdULGNBQWM7VUFDeEoxRSxLQUFLLENBQUNrRCxJQUFJLENBQUMsQ0FBQyxDQUNQa0MsUUFBUSxDQUFDSCxHQUFHLENBQUM7VUFFbEIsSUFBSW5ELEtBQUssR0FBRyxJQUFJQyxjQUFLLENBQUMvQixLQUFLLENBQUNlLE1BQU0sRUFBRWYsS0FBSyxDQUFDc0IsTUFBTSxFQUFFMkQsR0FBRyxDQUFDO1VBQ3REMUQsbUJBQVksQ0FBQ1MsU0FBUyxDQUFDQyxrQkFBUyxDQUFDb0QsWUFBWSxFQUFFdkQsS0FBSyxDQUFDO1FBQ3pELENBQUMsTUFBTTtVQUNILElBQUksQ0FBQzNCLGNBQUssQ0FBQ1UsTUFBTSxDQUFDMkQsT0FBTyxDQUFDLEVBQUU7WUFDeEIsSUFBSWMsTUFBTSxHQUFHZCxPQUFPLENBQUNsQixJQUFJLEtBQUssS0FBSyxHQUFHaUMsc0JBQVMsR0FBR0MsdUJBQVU7WUFDNURGLE1BQU0sQ0FBQztjQUNIZCxPQUFPLEVBQUVBLE9BQU87Y0FDaEI5QixTQUFTLEVBQUUrQyxHQUFHLENBQUNDLE9BQU87Y0FDdEJwRSxNQUFNLEVBQUV0QixLQUFLLENBQUNzQjtZQUNsQixDQUFDLENBQUMsQ0FBQ3FFLElBQUksQ0FBRUMsTUFBTSxJQUFLO2NBQ2hCLElBQUlULElBQUksR0FBR1gsT0FBTyxDQUFDbEIsSUFBSSxLQUFLLEtBQUssR0FBR3NDLE1BQU0sQ0FBQ1QsSUFBSSxHQUFHUyxNQUFNO2NBQ3hELElBQUlULElBQUksRUFBRTtnQkFDTm5GLEtBQUssQ0FBQ2tELElBQUksQ0FBQyxDQUFDLENBQ1BrQyxRQUFRLENBQUNELElBQUksQ0FBQztnQkFFbkIsSUFBSXJELEtBQUssR0FBRyxJQUFJQyxjQUFLLENBQUMvQixLQUFLLENBQUNlLE1BQU0sRUFBRWYsS0FBSyxDQUFDc0IsTUFBTSxFQUFFNkQsSUFBSSxDQUFDO2dCQUN2RDVELG1CQUFZLENBQUNTLFNBQVMsQ0FBQ0Msa0JBQVMsQ0FBQ29ELFlBQVksRUFBRXZELEtBQUssQ0FBQztjQUN6RDtZQUNKLENBQUMsQ0FBQyxDQUFDK0QsS0FBSyxDQUFFbkcsQ0FBQyxJQUFLO2NBQ1pNLEtBQUssQ0FBQzRDLE9BQU8sQ0FBQ0MsS0FBSyxDQUFDbkQsQ0FBQyxDQUFDO2NBQ3RCUyxjQUFLLENBQUMyRixtQkFBbUIsQ0FBQ3BHLENBQUMsRUFBRU0sS0FBSyxDQUFDc0IsTUFBTSxDQUFDO1lBQzlDLENBQUMsQ0FBQztZQUVGLE9BQU8sSUFBSTtVQUNmO1FBQ0o7TUFDSixDQUFDO01BQ0RILE9BQU9BLENBQUEsRUFBRztRQUNOLElBQUksQ0FBQ2hCLGNBQUssQ0FBQ1UsTUFBTSxDQUFDYixLQUFLLENBQUNLLE1BQU0sQ0FBQyxJQUFJLENBQUNGLGNBQUssQ0FBQ1UsTUFBTSxDQUFDYixLQUFLLENBQUNLLE1BQU0sQ0FBQ0ksT0FBTyxDQUFDLEVBQUU7VUFDcEVDLFVBQVUsQ0FBQ1AsY0FBSyxDQUFDNEMseUJBQXlCLENBQUMvQyxLQUFLLENBQUNLLE1BQU0sQ0FBQ0ksT0FBTyxFQUFFVCxLQUFLLENBQUNLLE1BQU0sQ0FBQ1MsRUFBRSxDQUFDLENBQUM7UUFDdEYsQ0FBQyxNQUFNO1VBQ0hKLFVBQVUsQ0FBQyxJQUFJLENBQUM7UUFDcEI7UUFFQSxJQUFJLENBQUNQLGNBQUssQ0FBQ1UsTUFBTSxDQUFDYixLQUFLLENBQUNLLE1BQU0sQ0FBQyxJQUFJLENBQUNGLGNBQUssQ0FBQ1UsTUFBTSxDQUFDYixLQUFLLENBQUNLLE1BQU0sQ0FBQ3NCLFFBQVEsQ0FBQyxFQUFFO1VBQ3JFQyw0QkFBNEIsQ0FBQ3pCLGNBQUssQ0FBQzRDLHlCQUF5QixDQUFDL0MsS0FBSyxDQUFDSyxNQUFNLENBQUNzQixRQUFRLEVBQUUzQixLQUFLLENBQUNLLE1BQU0sQ0FBQ1MsRUFBRSxDQUFDLENBQUM7UUFDekc7UUFFQTBCLGlCQUFpQixDQUFDLENBQUM7TUFDdkI7SUFDSixDQUFDO0VBQ0wsQ0FBQztFQUVELFNBQVN1RCxNQUFNQSxDQUFDQyxRQUFRLEVBQUU7SUFDdEIsT0FDSzdGLGNBQUssQ0FBQ1UsTUFBTSxDQUFDbUYsUUFBUSxDQUFDekYsTUFBTSxDQUFDLElBQUl5RixRQUFRLENBQUN6RixNQUFNLENBQUMwRixNQUFNLEtBQUssQ0FBQyxnQkFDMUQxSSxNQUFBLENBQUFxQyxPQUFBLENBQUFvRCxhQUFBLGNBQUsscUNBQXdDLENBQUMsZ0JBRTlDekYsTUFBQSxDQUFBcUMsT0FBQSxDQUFBb0QsYUFBQSxjQUVRL0MsU0FBUyxDQUFDaUcsSUFBSSxDQUFDQyxHQUFHLENBQUMsQ0FBQ0MsR0FBRyxFQUFFQyxDQUFDLEtBQUs7TUFDM0Isb0JBQU85SSxNQUFBLENBQUFxQyxPQUFBLENBQUFvRCxhQUFBO1FBQUtzRCxTQUFTLEVBQUMsS0FBSztRQUFDQyxHQUFHLEVBQUVGLENBQUU7UUFDdkI3QyxLQUFLLEVBQUU7VUFDSGdELFVBQVUsRUFBRSxHQUFHO1VBQ2ZDLFdBQVcsRUFBRTtRQUNqQjtNQUFFLEdBRU5MLEdBQUcsQ0FBQzdGLE1BQU0sQ0FBQzRGLEdBQUcsQ0FBQyxDQUFDdkYsS0FBSyxFQUFFOEYsS0FBSyxLQUFLO1FBQUEsSUFBQUMsaUJBQUEsRUFBQUMsa0JBQUE7UUFDN0IsSUFBSUMsT0FBTztRQUNYLElBQUlDLEtBQUs7UUFFVCxJQUFJM0csY0FBSyxDQUFDVSxNQUFNLENBQUNELEtBQUssQ0FBQ04sVUFBVSxDQUFDLElBQUlILGNBQUssQ0FBQ1UsTUFBTSxDQUFDRCxLQUFLLENBQUNOLFVBQVUsQ0FBQ3VHLE9BQU8sQ0FBQyxFQUFFO1VBQzFFQSxPQUFPLEdBQUcsQ0FBQztRQUNmLENBQUMsTUFBTTtVQUNILElBQUlFLFVBQVUsR0FBRzVHLGNBQUssQ0FBQzZHLGVBQWUsQ0FBQ3BHLEtBQUssQ0FBQztVQUM3QyxJQUFJbUcsVUFBVSxHQUFHOUcsU0FBUyxDQUFDZ0gsWUFBWSxFQUFFO1lBQ3JDSixPQUFPLEdBQUc1RyxTQUFTLENBQUNnSCxZQUFZO1VBQ3BDLENBQUMsTUFBTTtZQUNISixPQUFPLEdBQUdFLFVBQVU7VUFDeEI7UUFDSjtRQUVBRCxLQUFLLEdBQUdELE9BQU8sR0FBRzVHLFNBQVMsQ0FBQ2dILFlBQVksR0FBRyxHQUFHO1FBQzlDLElBQUlDLGNBQWMsR0FBRztVQUNqQkMsV0FBVyxFQUFFLEdBQUc7VUFDaEJDLFlBQVksRUFBRSxHQUFHO1VBQ2pCWixVQUFVLEVBQUUsR0FBRztVQUNmQyxXQUFXLEVBQUUsR0FBRztVQUNoQlksUUFBUSxFQUFFLE9BQU87VUFDakJQLEtBQUssRUFBRUEsS0FBSyxHQUFHO1FBQ25CLENBQUM7UUFFRGxHLEtBQUssQ0FBQzhGLEtBQUssR0FBR0EsS0FBSztRQUNuQixJQUFJbEQsS0FBSyxHQUFHLENBQUFtRCxpQkFBQSxHQUFBL0YsS0FBSyxDQUFDTixVQUFVLGNBQUFxRyxpQkFBQSxlQUFoQkEsaUJBQUEsQ0FBa0JPLGNBQWMsR0FDeEMvRyxjQUFLLENBQUNtSCxZQUFZLEVBQUFWLGtCQUFBLEdBQUNoRyxLQUFLLENBQUNOLFVBQVUsY0FBQXNHLGtCQUFBLHVCQUFoQkEsa0JBQUEsQ0FBa0JNLGNBQWMsRUFBRUEsY0FBYyxDQUFDLEdBQUdBLGNBQWM7UUFDekYsb0JBQU8zSixNQUFBLENBQUFxQyxPQUFBLENBQUFvRCxhQUFBO1VBQUt1RCxHQUFHLEVBQUUsQ0FBQ0YsQ0FBQyxHQUFHLENBQUMsSUFBSUssS0FBTTtVQUFDSixTQUFTLEVBQUMsaUNBQWlDO1VBQUM5QyxLQUFLLEVBQUVBO1FBQU0sR0FFbkZmLGVBQWUsQ0FBQzdCLEtBQUssQ0FFeEIsQ0FBQztNQUNWLENBQUMsQ0FFSixDQUFDO0lBQ1YsQ0FBQyxDQUVKLENBQUM7RUFFbEI7RUFFQSxvQkFBT3JELE1BQUEsQ0FBQXFDLE9BQUEsQ0FBQW9ELGFBQUE7SUFBS3NELFNBQVMsRUFBRSxpQkFBa0I7SUFBQzlDLEtBQUssRUFBRXJELGNBQUssQ0FBQ29ILFdBQVcsQ0FDOUQ7TUFDSUMsT0FBTyxFQUFFL0csT0FBTyxHQUFHLE9BQU8sR0FBRyxNQUFNO01BQ25DZ0gsTUFBTSxFQUFFO0lBQ1osQ0FBQyxFQUFFekgsS0FBSyxDQUFDSyxNQUFNO0VBQUUsR0FFYixDQUFDRixjQUFLLENBQUNVLE1BQU0sQ0FBQ2IsS0FBSyxDQUFDSyxNQUFNLENBQUNDLFVBQVUsQ0FBQyxJQUFJLENBQUNILGNBQUssQ0FBQ1UsTUFBTSxDQUFDYixLQUFLLENBQUNLLE1BQU0sQ0FBQ0MsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLGdCQUNyRi9DLE1BQUEsQ0FBQXFDLE9BQUEsQ0FBQW9ELGFBQUE7SUFBS3NELFNBQVMsRUFBRTtFQUFnQixHQUMzQnRHLEtBQUssQ0FBQ0ssTUFBTSxDQUFDQyxVQUFVLENBQUMsT0FBTyxDQUMvQixDQUFDLEdBRU4sSUFBSSxFQUdSLENBQUNILGNBQUssQ0FBQ1UsTUFBTSxDQUFDWixTQUFTLENBQUMsR0FDcEI4RixNQUFNLENBQUMvRixLQUFLLENBQUNLLE1BQU0sQ0FBQyxHQUVwQixJQUVQLENBQUM7QUFDVixDQUFDLENBQUM7QUFBQyxJQUFBcUgsUUFBQSxHQUFBQyxPQUFBLENBQUEvSCxPQUFBLEdBRVlDLFFBQVEiLCJpZ25vcmVMaXN0IjpbXX0=
558
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9VdGlscyIsIl9PYnNlcnZhYmxlIiwiX1RleHRGaWVsZCIsIl9DdXJyZW5jeUZpZWxkIiwiX0FkZHJlc3NTZWFyY2giLCJfTG9va3VwRmllbGQiLCJfTXVsdGlMb29rdXBGaWVsZCIsIl9TZWxlY3RJdGVtIiwiX0RhdGVQaWNrZXIiLCJfVGltZVBpY2tlciIsIl9DaGVja2JveCIsIl9MYWJlbEZpZWxkIiwiX1VwbG9hZEZpZWxkIiwiX1RyYW5zZmVyTGlzdCIsIl9HcmlkRmllbGQiLCJfSW1hZ2VFZGl0b3IiLCJfUmFkaW9Hcm91cCIsIl9FdmVudCIsIl9FdmVudFR5cGUiLCJfUmVzdFNlcnZpY2UiLCJfU2lnbmF0dXJlVGVtcGxhdGVEZXNpZ25lckZpZWxkIiwiX0FwcGxpY2F0aW9uTWFuYWdlciIsIl9CdXR0b24iLCJfSHRtbFBhbmVsIiwiX0F1dG9Db21wbGV0ZSIsIl9NdWx0aUZpbGVVcGxvYWRGaWVsZCIsIl9JY29uIiwiX1N3aXRjaCIsIl9JY29uRmllbGQiLCJfRG9jdW1lbnRUZW1wbGF0ZURlc2lnbmVyIiwiX0R5bmFtaWNKUyIsIl9MYXlvdXQiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJGaWVsZFNldCIsIlJlYWN0IiwibWVtbyIsInByb3BzIiwiZmllbGRHcmlkIiwidXNlU3RhdGUiLCJVdGlscyIsImdldEZpZWxkR3JpZCIsImNvbmZpZyIsImF0dHJpYnV0ZXMiLCJmaWVsZHMiLCJjb21wb25lbnRIYW5kbGVzIiwidmlzaWJsZSIsInNldFZpc2libGUiLCJjcmVhdGVDb21wb25lbnRIYW5kbGUiLCJmaWVsZCIsImlzTnVsbCIsImlkIiwiaGFuZGxlIiwidXNlRWZmZWN0IiwiYXBpIiwidXNlTGF5b3V0RWZmZWN0IiwicmVmcmVzaCIsInBhcnNlZENvbmZpZyIsInBhcnNlQ29uZmlnIiwidmlld0lkIiwiZXZlbnRNYW5hZ2VyIiwiYWRkU3Vic2NyaXB0aW9ucyIsImV2ZW50SGFuZGxpbmdDb25maWciLCJhZGRTeXN0ZW1TdWJzY3JpcHRpb25zIiwiZGlzYWJsZWQiLCJ1cGRhdGVDb21wb25lbnREaXNhYmxlZFN0YXRlIiwiZmlyZUNoYW5nZUV2ZW50IiwiZXZlbnQiLCJFdmVudCIsImZpcmVFdmVudCIsIkV2ZW50VHlwZSIsIlZBTFVFX0NIQU5HRSIsInByb3BlcnRpZXMiLCJPYmplY3QiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwicHJvcGVydHkiLCJjb21wb25lbnRIYW5kbGUiLCJyZWZyZXNoQ29tcG9uZW50cyIsInJlbmRlckNvbXBvbmVudCIsImNvbXBvbmVudCIsImZpZWxkVHlwZSIsImNvbnNvbGUiLCJlcnJvciIsImlzRGlzYWJsZWQiLCJldmFsdWF0ZUJvb2xlYW5FeHByZXNzaW9uIiwiY3JlYXRlRWxlbWVudCIsImtleUhhbmRsZXIiLCJmb3JtIiwicGFyZW50SWQiLCJ2YWx1ZUNoYW5nZUhhbmRsZXIiLCJ2YWx1ZXMiLCJ0eXBlIiwibXVsdGlsaW5lIiwic3R5bGUiLCJMYXlvdXQiLCJmaWVsZERhdGFCaW5kaW5ncyIsImZpZWxkTmFtZXMiLCJwdXNoIiwiZGF0YUJpbmRpbmciLCJjbGVhciIsImNvbXBvbmVudFJlZiIsInZhbHVlIiwiZ2V0Q2hpbGRyZW4iLCJjaGlsZHJlbiIsIm1vZGVsIiwiZm9ybVZhbHVlIiwibG9hZERhdGEiLCJhY3Rpb25Db25maWciLCJhY3Rpb25FdmVudCIsInNlcnZpY2UiLCJkYXRhU2VydmljZSIsImNvbXBvbmVudFZhbHVlIiwiaXNFdmVudERhdGEiLCJ0b1N0cmluZyIsInN0YXJ0c1dpdGgiLCJpc0VwcmVzc2lvbiIsImFwcGxpY2F0aW9uTWFuYWdlciIsImlzRXhwcmVzc2lvbiIsInZhbCIsInJlc29sdmVFeHByZXNzaW9uVmFsdWUiLCJkYXRhIiwiYmluZERhdGEiLCJEQVRBX0FSUklWRUQiLCJtZXRob2QiLCJpbnZva2VScGMiLCJpbnZva2VSZXN0IiwicmVmIiwiY3VycmVudCIsInRoZW4iLCJyZXN1bHQiLCJjYXRjaCIsInB1Ymxpc2hFcnJvck1lc3NhZ2UiLCJyZW5kZXIiLCJmaWVsZFNldCIsImxlbmd0aCIsInJvd3MiLCJtYXAiLCJyb3ciLCJpIiwiY2xhc3NOYW1lIiwia2V5IiwibWFyZ2luTGVmdCIsIm1hcmdpblJpZ2h0IiwiaW5kZXgiLCJfZmllbGQkYXR0cmlidXRlcyIsIl9maWVsZCRhdHRyaWJ1dGVzMiIsImNvbHNwYW4iLCJ3aWR0aCIsImNvbHNwYW5WYWwiLCJnZXRGaWVsZENvbHNwYW4iLCJtYXhDb2xQZXJSb3ciLCJDT0xfR0FQIiwibWF4Q29sIiwiZ2FwT2Zmc2V0IiwiY29udGFpbmVyU3R5bGUiLCJwYWRkaW5nTGVmdCIsInBhZGRpbmdSaWdodCIsIm1pbldpZHRoIiwiY29uY2F0IiwibWVyZ2VPYmplY3RzIiwibWVyZ2VTdHlsZXMiLCJkaXNwbGF5IiwibWFyZ2luIiwicGFkZGluZyIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL0ZpZWxkU2V0LmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyLvu79pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFV0aWxzIGZyb20gJy4uLy4uL1V0aWxzJztcbmltcG9ydCBldmVudE1hbmFnZXIgZnJvbSAnLi4vLi4vZXZlbnQvT2JzZXJ2YWJsZSc7XG5pbXBvcnQgVGV4dEZpZWxkIGZyb20gJy4vVGV4dEZpZWxkJztcbmltcG9ydCBDdXJyZW5jeUZpZWxkIGZyb20gJy4vQ3VycmVuY3lGaWVsZCc7XG5pbXBvcnQgQWRkcmVzc1NlYXJjaCBmcm9tICcuL0FkZHJlc3NTZWFyY2gnO1xuaW1wb3J0IExvb2t1cEZpZWxkIGZyb20gJy4vTG9va3VwRmllbGQnO1xuaW1wb3J0IE11bHRpTG9va3VwRmllbGQgZnJvbSAnLi9NdWx0aUxvb2t1cEZpZWxkJztcbmltcG9ydCBTZWxlY3RJdGVtIGZyb20gJy4vU2VsZWN0SXRlbSc7XG5pbXBvcnQgRGF0ZVBpY2tlciBmcm9tICcuL0RhdGVQaWNrZXInO1xuaW1wb3J0IFRpbWVQaWNrZXIgZnJvbSAnLi9UaW1lUGlja2VyJztcbmltcG9ydCBDaGVja2JveCBmcm9tICcuL0NoZWNrYm94JztcbmltcG9ydCBMYWJlbEZpZWxkIGZyb20gJy4vTGFiZWxGaWVsZCc7XG5pbXBvcnQgVXBsb2FkRmllbGQgZnJvbSAnLi9VcGxvYWRGaWVsZCc7XG5pbXBvcnQgVHJhbnNmZXJMaXN0IGZyb20gJy4vVHJhbnNmZXJMaXN0JztcbmltcG9ydCBHcmlkRmllbGQgZnJvbSAnLi9HcmlkRmllbGQnO1xuaW1wb3J0IEltYWdlRWRpdG9yIGZyb20gJy4vSW1hZ2VFZGl0b3InO1xuaW1wb3J0IFJhZGlvR3JvdXAgZnJvbSAnLi9SYWRpb0dyb3VwJztcbmltcG9ydCBFdmVudCBmcm9tICcuLi8uLi9ldmVudC9FdmVudCc7XG5pbXBvcnQgRXZlbnRUeXBlIGZyb20gJy4uLy4uL2V2ZW50L0V2ZW50VHlwZSc7XG5pbXBvcnQge2ludm9rZVJlc3QsIGludm9rZVJwY30gZnJvbSAnLi4vLi4vUmVzdFNlcnZpY2UnO1xuaW1wb3J0IFNpZ25hdHVyZVRlbXBsYXRlRGVzaWduZXJGaWVsZCBmcm9tICcuL1NpZ25hdHVyZVRlbXBsYXRlRGVzaWduZXJGaWVsZCc7XG5pbXBvcnQgYXBwbGljYXRpb25NYW5hZ2VyIGZyb20gJy4uLy4uL0FwcGxpY2F0aW9uTWFuYWdlcic7XG5pbXBvcnQgJy4vZmllbGRzZXQuY3NzJztcbmltcG9ydCBCdXR0b24gZnJvbSAnLi4vQnV0dG9uJztcbmltcG9ydCBIdG1sUGFuZWwgZnJvbSAnLi4vSHRtbFBhbmVsJztcbmltcG9ydCBBdXRvQ29tcGxldGUgZnJvbSAnLi9BdXRvQ29tcGxldGUnO1xuaW1wb3J0IE11bHRpRmlsZVVwbG9hZEZpZWxkIGZyb20gJy4vTXVsdGlGaWxlVXBsb2FkRmllbGQnO1xuaW1wb3J0IEljb24gZnJvbSAnLi4vSWNvbic7XG5pbXBvcnQgU3dpdGNoIGZyb20gJy4vU3dpdGNoJztcbmltcG9ydCBJY29uRmllbGQgZnJvbSAnLi9JY29uRmllbGQnO1xuaW1wb3J0IERvY3VtZW50VGVtcGxhdGVEZXNpZ25lciBmcm9tIFwiLi4vRG9jdW1lbnRUZW1wbGF0ZURlc2lnbmVyXCI7XG5pbXBvcnQgZHluYW1pY0pTIGZyb20gXCIuLi8uLi9EeW5hbWljSlNcIjtcbmltcG9ydCB7TGF5b3V0fSBmcm9tIFwiLi4vbGF5b3V0L0xheW91dFwiO1xuXG5jb25zdCBGaWVsZFNldCA9IFJlYWN0Lm1lbW8oKHByb3BzKSA9PiB7XG4gICAgY29uc3QgW2ZpZWxkR3JpZF0gPSBSZWFjdC51c2VTdGF0ZShVdGlscy5nZXRGaWVsZEdyaWQocHJvcHMuY29uZmlnLmF0dHJpYnV0ZXMsIHByb3BzLmNvbmZpZy5maWVsZHMpKTtcbiAgICBjb25zdCBbY29tcG9uZW50SGFuZGxlc10gPSBSZWFjdC51c2VTdGF0ZSh7fSk7XG4gICAgY29uc3QgW3Zpc2libGUsIHNldFZpc2libGVdID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xuXG4gICAgY29uc3QgY3JlYXRlQ29tcG9uZW50SGFuZGxlID0gKGZpZWxkKSA9PiB7XG4gICAgICAgIGlmIChVdGlscy5pc051bGwoY29tcG9uZW50SGFuZGxlc1tmaWVsZC5pZF0pKSB7XG4gICAgICAgICAgICBsZXQgaGFuZGxlID0ge307XG4gICAgICAgICAgICBjb21wb25lbnRIYW5kbGVzW2ZpZWxkLmlkXSA9IGhhbmRsZTtcbiAgICAgICAgICAgIHJldHVybiBoYW5kbGU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29tcG9uZW50SGFuZGxlc1tmaWVsZC5pZF07XG4gICAgfTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdChcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgcHJvcHMuaGFuZGxlLmFwaSA9IGFwaSgpO1xuICAgICAgICB9KTtcblxuICAgIFJlYWN0LnVzZUxheW91dEVmZmVjdChcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgcHJvcHMuaGFuZGxlLmFwaSA9IGFwaSgpO1xuICAgICAgICB9LCBbXSk7XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICAgIHByb3BzLmhhbmRsZS5hcGkgPSBhcGkoKTtcbiAgICAgICAgICAgIHByb3BzLmhhbmRsZS5hcGkucmVmcmVzaCgpO1xuICAgICAgICAgICAgbGV0IHBhcnNlZENvbmZpZyA9IFV0aWxzLnBhcnNlQ29uZmlnKHByb3BzLmNvbmZpZywgcHJvcHMudmlld0lkKTtcbiAgICAgICAgICAgIGV2ZW50TWFuYWdlci5hZGRTdWJzY3JpcHRpb25zKHBhcnNlZENvbmZpZy5ldmVudEhhbmRsaW5nQ29uZmlnLCBwcm9wcy5oYW5kbGUsIHByb3BzLnZpZXdJZCk7XG4gICAgICAgICAgICBldmVudE1hbmFnZXIuYWRkU3lzdGVtU3Vic2NyaXB0aW9ucyhwcm9wcy52aWV3SWQsIHBhcnNlZENvbmZpZyk7XG4gICAgICAgIH0sIFtdKTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdChcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwocHJvcHMuZGlzYWJsZWQpKSB7XG4gICAgICAgICAgICAgICAgdXBkYXRlQ29tcG9uZW50RGlzYWJsZWRTdGF0ZShwcm9wcy5kaXNhYmxlZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIFtwcm9wcy5kaXNhYmxlZF0pO1xuXG4gICAgZnVuY3Rpb24gZmlyZUNoYW5nZUV2ZW50KCkge1xuICAgICAgICBsZXQgZXZlbnQgPSBuZXcgRXZlbnQocHJvcHMuaGFuZGxlLCBwcm9wcy52aWV3SWQpO1xuICAgICAgICBldmVudE1hbmFnZXIuZmlyZUV2ZW50KEV2ZW50VHlwZS5WQUxVRV9DSEFOR0UsIGV2ZW50KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB1cGRhdGVDb21wb25lbnREaXNhYmxlZFN0YXRlKGRpc2FibGVkKSB7XG4gICAgICAgIGxldCBwcm9wZXJ0aWVzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoY29tcG9uZW50SGFuZGxlcyk7XG4gICAgICAgIGZvciAoY29uc3QgcHJvcGVydHkgb2YgcHJvcGVydGllcykge1xuICAgICAgICAgICAgbGV0IGNvbXBvbmVudEhhbmRsZSA9IGNvbXBvbmVudEhhbmRsZXNbcHJvcGVydHldO1xuICAgICAgICAgICAgY29tcG9uZW50SGFuZGxlLmFwaS5kaXNhYmxlZCA9IGRpc2FibGVkO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVmcmVzaENvbXBvbmVudHMoKSB7XG4gICAgICAgIGxldCBwcm9wZXJ0aWVzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoY29tcG9uZW50SGFuZGxlcyk7XG4gICAgICAgIGZvciAoY29uc3QgcHJvcGVydHkgb2YgcHJvcGVydGllcykge1xuICAgICAgICAgICAgbGV0IGNvbXBvbmVudEhhbmRsZSA9IGNvbXBvbmVudEhhbmRsZXNbcHJvcGVydHldO1xuICAgICAgICAgICAgaWYoY29tcG9uZW50SGFuZGxlLmFwaSkge1xuICAgICAgICAgICAgICAgIGNvbXBvbmVudEhhbmRsZS5hcGkucmVmcmVzaCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVuZGVyQ29tcG9uZW50KGNvbXBvbmVudCkge1xuICAgICAgICBpZiAoIWNvbXBvbmVudC5maWVsZFR5cGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0VSUk9SIFJFTkRJTkcgQ09NUE9ORU5UIDogJyArIGNvbXBvbmVudC5pZCArICcgLSBOTyBGSUVMRCBUWVBFIFNQRUNJRklFRCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGlzRGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgaWYgKCFVdGlscy5pc051bGwocHJvcHMuY29uZmlnKSAmJiAhVXRpbHMuaXNOdWxsKHByb3BzLmNvbmZpZy5kaXNhYmxlZCkpIHtcbiAgICAgICAgICAgIGlzRGlzYWJsZWQgPSBVdGlscy5ldmFsdWF0ZUJvb2xlYW5FeHByZXNzaW9uKHByb3BzLmNvbmZpZy5kaXNhYmxlZCwgcHJvcHMuY29uZmlnLmlkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc0Rpc2FibGVkKSB7XG4gICAgICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKGNvbXBvbmVudC5kaXNhYmxlZCkpIHtcbiAgICAgICAgICAgICAgICBjb21wb25lbnQuZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgc3dpdGNoIChjb21wb25lbnQuZmllbGRUeXBlKSB7XG4gICAgICAgICAgICBjYXNlICdMT09LVVAnOlxuICAgICAgICAgICAgICAgIHJldHVybiA8TG9va3VwRmllbGQga2V5SGFuZGxlcj17cHJvcHMua2V5SGFuZGxlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZz17Y29tcG9uZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybT17cHJvcHMuZm9ybX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudElkPXtwcm9wcy5wYXJlbnRJZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZT17Y3JlYXRlQ29tcG9uZW50SGFuZGxlKGNvbXBvbmVudCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZUNoYW5nZUhhbmRsZXI9eygpID0+IGZpcmVDaGFuZ2VFdmVudCgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPXtwcm9wcy52YWx1ZXN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3SWQ9e3Byb3BzLnZpZXdJZH1cbiAgICAgICAgICAgICAgICAvPjtcbiAgICAgICAgICAgIGNhc2UgJ01VTFRJX0xPT0tVUCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIDxNdWx0aUxvb2t1cEZpZWxkIGtleUhhbmRsZXI9e3Byb3BzLmtleUhhbmRsZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZz17Y29tcG9uZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtPXtwcm9wcy5mb3JtfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRJZD17cHJvcHMucGFyZW50SWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZT17Y3JlYXRlQ29tcG9uZW50SGFuZGxlKGNvbXBvbmVudCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlQ2hhbmdlSGFuZGxlcj17KCkgPT4gZmlyZUNoYW5nZUV2ZW50KCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz17cHJvcHMudmFsdWVzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3SWQ9e3Byb3BzLnZpZXdJZH1cbiAgICAgICAgICAgICAgICAvPjtcbiAgICAgICAgICAgIGNhc2UgJ1RFWFRfRklFTEQnOlxuICAgICAgICAgICAgICAgIHJldHVybiA8VGV4dEZpZWxkIGtleUhhbmRsZXI9e3Byb3BzLmtleUhhbmRsZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnPXtjb21wb25lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVDaGFuZ2VIYW5kbGVyPXsoKSA9PiBmaXJlQ2hhbmdlRXZlbnQoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtPXtwcm9wcy5mb3JtfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudElkPXtwcm9wcy5wYXJlbnRJZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGU9e2NyZWF0ZUNvbXBvbmVudEhhbmRsZShjb21wb25lbnQpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz17cHJvcHMudmFsdWVzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdJZD17cHJvcHMudmlld0lkfVxuICAgICAgICAgICAgICAgIC8+O1xuICAgICAgICAgICAgY2FzZSAnQ1VSUkVOQ1knOlxuICAgICAgICAgICAgICAgIHJldHVybiA8Q3VycmVuY3lGaWVsZCBrZXlIYW5kbGVyPXtwcm9wcy5rZXlIYW5kbGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWc9e2NvbXBvbmVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVDaGFuZ2VIYW5kbGVyPXsoKSA9PiBmaXJlQ2hhbmdlRXZlbnQoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybT17cHJvcHMuZm9ybX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50SWQ9e3Byb3BzLnBhcmVudElkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGU9e2NyZWF0ZUNvbXBvbmVudEhhbmRsZShjb21wb25lbnQpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9e3Byb3BzLnZhbHVlc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0lkPXtwcm9wcy52aWV3SWR9XG4gICAgICAgICAgICAgICAgLz47XG4gICAgICAgICAgICBjYXNlICdQQVNTV09SRCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIDxUZXh0RmllbGQga2V5SGFuZGxlcj17cHJvcHMua2V5SGFuZGxlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWc9e2NvbXBvbmVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZUNoYW5nZUhhbmRsZXI9eygpID0+IGZpcmVDaGFuZ2VFdmVudCgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm09e3Byb3BzLmZvcm19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT17J3Bhc3N3b3JkJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRJZD17cHJvcHMucGFyZW50SWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlPXtjcmVhdGVDb21wb25lbnRIYW5kbGUoY29tcG9uZW50KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9e3Byb3BzLnZhbHVlc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3SWQ9e3Byb3BzLnZpZXdJZH1cbiAgICAgICAgICAgICAgICAvPjtcbiAgICAgICAgICAgIGNhc2UgJ1RFWFRfQVJFQSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIDxUZXh0RmllbGQga2V5SGFuZGxlcj17cHJvcHMua2V5SGFuZGxlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWc9e2NvbXBvbmVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aWxpbmU9e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVDaGFuZ2VIYW5kbGVyPXsoKSA9PiBmaXJlQ2hhbmdlRXZlbnQoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtPXtwcm9wcy5mb3JtfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudElkPXtwcm9wcy5wYXJlbnRJZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGU9e2NyZWF0ZUNvbXBvbmVudEhhbmRsZShjb21wb25lbnQpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz17cHJvcHMudmFsdWVzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdJZD17cHJvcHMudmlld0lkfVxuICAgICAgICAgICAgICAgIC8+O1xuICAgICAgICAgICAgY2FzZSAnQUREUkVTU19TRUFSQ0gnOlxuICAgICAgICAgICAgICAgIHJldHVybiA8QWRkcmVzc1NlYXJjaCBrZXlIYW5kbGVyPXtwcm9wcy5rZXlIYW5kbGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWc9e2NvbXBvbmVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlsaW5lPXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZUNoYW5nZUhhbmRsZXI9eygpID0+IGZpcmVDaGFuZ2VFdmVudCgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtPXtwcm9wcy5mb3JtfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRJZD17cHJvcHMucGFyZW50SWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZT17Y3JlYXRlQ29tcG9uZW50SGFuZGxlKGNvbXBvbmVudCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz17cHJvcHMudmFsdWVzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3SWQ9e3Byb3BzLnZpZXdJZH1cbiAgICAgICAgICAgICAgICAvPjtcbiAgICAgICAgICAgIGNhc2UgJ1NFTEVDVCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIDxTZWxlY3RJdGVtIGtleUhhbmRsZXI9e3Byb3BzLmtleUhhbmRsZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZz17Y29tcG9uZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtPXtwcm9wcy5mb3JtfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRJZD17cHJvcHMucGFyZW50SWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZT17Y3JlYXRlQ29tcG9uZW50SGFuZGxlKGNvbXBvbmVudCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlQ2hhbmdlSGFuZGxlcj17KCkgPT4gZmlyZUNoYW5nZUV2ZW50KCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz17cHJvcHMudmFsdWVzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3SWQ9e3Byb3BzLnZpZXdJZH1cbiAgICAgICAgICAgICAgICAvPjtcbiAgICAgICAgICAgIGNhc2UgJ0RBVEUnOlxuICAgICAgICAgICAgICAgIHJldHVybiA8RGF0ZVBpY2tlciBrZXlIYW5kbGVyPXtwcm9wcy5rZXlIYW5kbGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWc9e2NvbXBvbmVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybT17cHJvcHMuZm9ybX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50SWQ9e3Byb3BzLnBhcmVudElkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGU9e2NyZWF0ZUNvbXBvbmVudEhhbmRsZShjb21wb25lbnQpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZUNoYW5nZUhhbmRsZXI9eygpID0+IGZpcmVDaGFuZ2VFdmVudCgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9e3Byb3BzLnZhbHVlc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0lkPXtwcm9wcy52aWV3SWR9XG4gICAgICAgICAgICAgICAgLz47XG4gICAgICAgICAgICBjYXNlICdBVVRPX0NPTVBMRVRFJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gPEF1dG9Db21wbGV0ZSBrZXlIYW5kbGVyPXtwcm9wcy5rZXlIYW5kbGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZz17Y29tcG9uZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm09e3Byb3BzLmZvcm19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50SWQ9e3Byb3BzLnBhcmVudElkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZT17Y3JlYXRlQ29tcG9uZW50SGFuZGxlKGNvbXBvbmVudCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVDaGFuZ2VIYW5kbGVyPXsoKSA9PiBmaXJlQ2hhbmdlRXZlbnQoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9e3Byb3BzLnZhbHVlc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3SWQ9e3Byb3BzLnZpZXdJZH1cbiAgICAgICAgICAgICAgICAvPjtcbiAgICAgICAgICAgIGNhc2UgJ0NIRUNLQk9YJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gPENoZWNrYm94IGtleUhhbmRsZXI9e3Byb3BzLmtleUhhbmRsZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWc9e2NvbXBvbmVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm09e3Byb3BzLmZvcm19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRJZD17cHJvcHMucGFyZW50SWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGU9e2NyZWF0ZUNvbXBvbmVudEhhbmRsZShjb21wb25lbnQpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVDaGFuZ2VIYW5kbGVyPXsoKSA9PiBmaXJlQ2hhbmdlRXZlbnQoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz17cHJvcHMudmFsdWVzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0lkPXtwcm9wcy52aWV3SWR9XG4gICAgICAgICAgICAgICAgLz47XG4gICAgICAgICAgICBjYXNlICdTV0lUQ0gnOlxuICAgICAgICAgICAgICAgIHJldHVybiA8U3dpdGNoIGtleUhhbmRsZXI9e3Byb3BzLmtleUhhbmRsZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnPXtjb21wb25lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybT17cHJvcHMuZm9ybX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRJZD17cHJvcHMucGFyZW50SWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlPXtjcmVhdGVDb21wb25lbnRIYW5kbGUoY29tcG9uZW50KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZUNoYW5nZUhhbmRsZXI9eygpID0+IGZpcmVDaGFuZ2VFdmVudCgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz17cHJvcHMudmFsdWVzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdJZD17cHJvcHMudmlld0lkfVxuICAgICAgICAgICAgICAgIC8+O1xuICAgICAgICAgICAgY2FzZSAnTEFCRUwnOlxuICAgICAgICAgICAgICAgIHJldHVybiA8TGFiZWxGaWVsZCBrZXlIYW5kbGVyPXtwcm9wcy5rZXlIYW5kbGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWc9e2NvbXBvbmVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybT17cHJvcHMuZm9ybX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50SWQ9e3Byb3BzLnBhcmVudElkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGU9e2NyZWF0ZUNvbXBvbmVudEhhbmRsZShjb21wb25lbnQpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZUNoYW5nZUhhbmRsZXI9eygpID0+IGZpcmVDaGFuZ2VFdmVudCgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9e3Byb3BzLnZhbHVlc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0lkPXtwcm9wcy52aWV3SWR9XG4gICAgICAgICAgICAgICAgLz47XG4gICAgICAgICAgICBjYXNlICdGSUxFX1VQTE9BRCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIDxVcGxvYWRGaWVsZCBrZXlIYW5kbGVyPXtwcm9wcy5rZXlIYW5kbGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnPXtjb21wb25lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtPXtwcm9wcy5mb3JtfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50SWQ9e3Byb3BzLnBhcmVudElkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlPXtjcmVhdGVDb21wb25lbnRIYW5kbGUoY29tcG9uZW50KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlQ2hhbmdlSGFuZGxlcj17KCkgPT4gZmlyZUNoYW5nZUV2ZW50KCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9e3Byb3BzLnZhbHVlc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdJZD17cHJvcHMudmlld0lkfVxuICAgICAgICAgICAgICAgIC8+O1xuICAgICAgICAgICAgY2FzZSAnSU1BR0VfVVBMT0FEJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gPFVwbG9hZEZpZWxkIGtleUhhbmRsZXI9e3Byb3BzLmtleUhhbmRsZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWc9e2NvbXBvbmVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm09e3Byb3BzLmZvcm19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRJZD17cHJvcHMucGFyZW50SWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGU9e2NyZWF0ZUNvbXBvbmVudEhhbmRsZShjb21wb25lbnQpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9eydJTUFHRSd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZUNoYW5nZUhhbmRsZXI9eygpID0+IGZpcmVDaGFuZ2VFdmVudCgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPXtwcm9wcy52YWx1ZXN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3SWQ9e3Byb3BzLnZpZXdJZH1cbiAgICAgICAgICAgICAgICAvPjtcbiAgICAgICAgICAgIGNhc2UgJ01VTFRJX0ZJTEVfVVBMT0FEJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gPE11bHRpRmlsZVVwbG9hZEZpZWxkXG4gICAgICAgICAgICAgICAgICAgIGtleUhhbmRsZXI9e3Byb3BzLmtleUhhbmRsZXJ9XG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZz17Y29tcG9uZW50fVxuICAgICAgICAgICAgICAgICAgICBmb3JtPXtwcm9wcy5mb3JtfVxuICAgICAgICAgICAgICAgICAgICBwYXJlbnRJZD17cHJvcHMucGFyZW50SWR9XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZT17Y3JlYXRlQ29tcG9uZW50SGFuZGxlKGNvbXBvbmVudCl9XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlQ2hhbmdlSGFuZGxlcj17KCkgPT4gZmlyZUNoYW5nZUV2ZW50KCl9XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlcz17cHJvcHMudmFsdWVzfVxuICAgICAgICAgICAgICAgICAgICB2aWV3SWQ9e3Byb3BzLnZpZXdJZH1cbiAgICAgICAgICAgICAgICAvPjtcbiAgICAgICAgICAgIGNhc2UgJ1RSQU5TRkVSX0xJU1QnOlxuICAgICAgICAgICAgICAgIHJldHVybiA8VHJhbnNmZXJMaXN0IGtleUhhbmRsZXI9e3Byb3BzLmtleUhhbmRsZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnPXtjb21wb25lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybT17cHJvcHMuZm9ybX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRJZD17cHJvcHMucGFyZW50SWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlPXtjcmVhdGVDb21wb25lbnRIYW5kbGUoY29tcG9uZW50KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZUNoYW5nZUhhbmRsZXI9eygpID0+IGZpcmVDaGFuZ2VFdmVudCgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz17cHJvcHMudmFsdWVzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdJZD17cHJvcHMudmlld0lkfVxuICAgICAgICAgICAgICAgIC8+O1xuICAgICAgICAgICAgY2FzZSAnR1JJRCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIDxHcmlkRmllbGQga2V5SGFuZGxlcj17cHJvcHMua2V5SGFuZGxlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWc9e2NvbXBvbmVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtPXtwcm9wcy5mb3JtfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudElkPXtwcm9wcy5wYXJlbnRJZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGU9e2NyZWF0ZUNvbXBvbmVudEhhbmRsZShjb21wb25lbnQpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlQ2hhbmdlSGFuZGxlcj17KCkgPT4gZmlyZUNoYW5nZUV2ZW50KCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPXtwcm9wcy52YWx1ZXN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0lkPXtwcm9wcy52aWV3SWR9XG4gICAgICAgICAgICAgICAgLz47XG4gICAgICAgICAgICBjYXNlICdUSU1FJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gPFRpbWVQaWNrZXJcbiAgICAgICAgICAgICAgICAgICAga2V5SGFuZGxlcj17cHJvcHMua2V5SGFuZGxlcn1cbiAgICAgICAgICAgICAgICAgICAgY29uZmlnPXtjb21wb25lbnR9XG4gICAgICAgICAgICAgICAgICAgIGZvcm09e3Byb3BzLmZvcm19XG4gICAgICAgICAgICAgICAgICAgIHBhcmVudElkPXtwcm9wcy5wYXJlbnRJZH1cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlPXtjcmVhdGVDb21wb25lbnRIYW5kbGUoY29tcG9uZW50KX1cbiAgICAgICAgICAgICAgICAgICAgdmFsdWVDaGFuZ2VIYW5kbGVyPXsoKSA9PiBmaXJlQ2hhbmdlRXZlbnQoKX1cbiAgICAgICAgICAgICAgICAgICAgdmFsdWVzPXtwcm9wcy52YWx1ZXN9XG4gICAgICAgICAgICAgICAgICAgIHZpZXdJZD17cHJvcHMudmlld0lkfVxuICAgICAgICAgICAgICAgIC8+O1xuICAgICAgICAgICAgY2FzZSAnSU1BR0VfRURJVE9SJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gPEltYWdlRWRpdG9yXG4gICAgICAgICAgICAgICAgICAgIGtleUhhbmRsZXI9e3Byb3BzLmtleUhhbmRsZXJ9XG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZz17Y29tcG9uZW50fVxuICAgICAgICAgICAgICAgICAgICBmb3JtPXtwcm9wcy5mb3JtfVxuICAgICAgICAgICAgICAgICAgICBwYXJlbnRJZD17cHJvcHMucGFyZW50SWR9XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZT17Y3JlYXRlQ29tcG9uZW50SGFuZGxlKGNvbXBvbmVudCl9XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlQ2hhbmdlSGFuZGxlcj17KCkgPT4gZmlyZUNoYW5nZUV2ZW50KCl9XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlcz17cHJvcHMudmFsdWVzfVxuICAgICAgICAgICAgICAgICAgICB2aWV3SWQ9e3Byb3BzLnZpZXdJZH1cbiAgICAgICAgICAgICAgICAvPjtcbiAgICAgICAgICAgIGNhc2UgJ1JBRElPX0dST1VQJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gPFJhZGlvR3JvdXBcbiAgICAgICAgICAgICAgICAgICAga2V5SGFuZGxlcj17cHJvcHMua2V5SGFuZGxlcn1cbiAgICAgICAgICAgICAgICAgICAgY29uZmlnPXtjb21wb25lbnR9XG4gICAgICAgICAgICAgICAgICAgIGZvcm09e3Byb3BzLmZvcm19XG4gICAgICAgICAgICAgICAgICAgIHBhcmVudElkPXtwcm9wcy5wYXJlbnRJZH1cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlPXtjcmVhdGVDb21wb25lbnRIYW5kbGUoY29tcG9uZW50KX1cbiAgICAgICAgICAgICAgICAgICAgdmFsdWVDaGFuZ2VIYW5kbGVyPXsoKSA9PiBmaXJlQ2hhbmdlRXZlbnQoKX1cbiAgICAgICAgICAgICAgICAgICAgdmFsdWVzPXtwcm9wcy52YWx1ZXN9XG4gICAgICAgICAgICAgICAgICAgIHZpZXdJZD17cHJvcHMudmlld0lkfVxuICAgICAgICAgICAgICAgIC8+O1xuICAgICAgICAgICAgY2FzZSAnQlVUVE9OJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gPEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBjb25maWc9e2NvbXBvbmVudH1cbiAgICAgICAgICAgICAgICAgICAgZm9ybT17cHJvcHMuZm9ybX1cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlPXtjcmVhdGVDb21wb25lbnRIYW5kbGUoY29tcG9uZW50KX1cbiAgICAgICAgICAgICAgICAgICAgdmlld0lkPXtwcm9wcy52aWV3SWR9XG4gICAgICAgICAgICAgICAgLz47XG4gICAgICAgICAgICBjYXNlICdIVE1MX1BBTkVMJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gPEh0bWxQYW5lbFxuICAgICAgICAgICAgICAgICAgICBjb25maWc9e2NvbXBvbmVudH1cbiAgICAgICAgICAgICAgICAgICAgZm9ybT17cHJvcHMuZm9ybX1cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlPXtjcmVhdGVDb21wb25lbnRIYW5kbGUoY29tcG9uZW50KX1cbiAgICAgICAgICAgICAgICAgICAgdmlld0lkPXtwcm9wcy52aWV3SWR9XG4gICAgICAgICAgICAgICAgLz47XG4gICAgICAgICAgICBjYXNlICdMQVlPVVQnOlxuICAgICAgICAgICAgICAgIHJldHVybiA8TGF5b3V0XG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZz17Y29tcG9uZW50fVxuICAgICAgICAgICAgICAgICAgICBmb3JtPXtwcm9wcy5mb3JtfVxuICAgICAgICAgICAgICAgICAgICBoYW5kbGU9e2NyZWF0ZUNvbXBvbmVudEhhbmRsZShjb21wb25lbnQpfVxuICAgICAgICAgICAgICAgICAgICB2aWV3SWQ9e3Byb3BzLnZpZXdJZH1cbiAgICAgICAgICAgICAgICAvPjtcbiAgICAgICAgICAgIGNhc2UgJ0lDT04nOlxuICAgICAgICAgICAgICAgIHJldHVybiA8SWNvbkZpZWxkXG4gICAgICAgICAgICAgICAgICAgIGtleUhhbmRsZXI9e3Byb3BzLmtleUhhbmRsZXJ9XG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZz17Y29tcG9uZW50fVxuICAgICAgICAgICAgICAgICAgICBmb3JtPXtwcm9wcy5mb3JtfVxuICAgICAgICAgICAgICAgICAgICBwYXJlbnRJZD17cHJvcHMucGFyZW50SWR9XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZT17Y3JlYXRlQ29tcG9uZW50SGFuZGxlKGNvbXBvbmVudCl9XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlQ2hhbmdlSGFuZGxlcj17KCkgPT4gZmlyZUNoYW5nZUV2ZW50KCl9XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlcz17cHJvcHMudmFsdWVzfVxuICAgICAgICAgICAgICAgICAgICB2aWV3SWQ9e3Byb3BzLnZpZXdJZH1cbiAgICAgICAgICAgICAgICAvPjtcbiAgICAgICAgICAgIGNhc2UgJ1NJR05BVFVSRV9URU1QTEFURV9ERVNJR05FUic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIDxTaWduYXR1cmVUZW1wbGF0ZURlc2lnbmVyRmllbGRcbiAgICAgICAgICAgICAgICAgICAga2V5SGFuZGxlcj17cHJvcHMua2V5SGFuZGxlcn1cbiAgICAgICAgICAgICAgICAgICAgY29uZmlnPXtjb21wb25lbnR9XG4gICAgICAgICAgICAgICAgICAgIGZvcm09e3Byb3BzLmZvcm19XG4gICAgICAgICAgICAgICAgICAgIHBhcmVudElkPXtwcm9wcy5wYXJlbnRJZH1cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlPXtjcmVhdGVDb21wb25lbnRIYW5kbGUoY29tcG9uZW50KX1cbiAgICAgICAgICAgICAgICAgICAgdmFsdWVDaGFuZ2VIYW5kbGVyPXsoKSA9PiBmaXJlQ2hhbmdlRXZlbnQoKX1cbiAgICAgICAgICAgICAgICAgICAgdmFsdWVzPXtwcm9wcy52YWx1ZXN9XG4gICAgICAgICAgICAgICAgICAgIHZpZXdJZD17cHJvcHMudmlld0lkfVxuICAgICAgICAgICAgICAgIC8+O1xuICAgICAgICAgICAgY2FzZSAnRE9DVU1FTlRfVEVNUExBVEVfREVTSUdORVInOlxuICAgICAgICAgICAgICAgIHJldHVybiA8RG9jdW1lbnRUZW1wbGF0ZURlc2lnbmVyXG4gICAgICAgICAgICAgICAgICAgIGtleUhhbmRsZXI9e3Byb3BzLmtleUhhbmRsZXJ9XG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZz17Y29tcG9uZW50fVxuICAgICAgICAgICAgICAgICAgICBmb3JtPXtwcm9wcy5mb3JtfVxuICAgICAgICAgICAgICAgICAgICBwYXJlbnRJZD17cHJvcHMucGFyZW50SWR9XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZT17Y3JlYXRlQ29tcG9uZW50SGFuZGxlKGNvbXBvbmVudCl9XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlQ2hhbmdlSGFuZGxlcj17KCkgPT4gZmlyZUNoYW5nZUV2ZW50KCl9XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlcz17cHJvcHMudmFsdWVzfVxuICAgICAgICAgICAgICAgICAgICB2aWV3SWQ9e3Byb3BzLnZpZXdJZH1cbiAgICAgICAgICAgICAgICAvPjtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIDxkaXY+eydVbnN1cHBvcnRlZCBmaWVsZHNldCBjb21wb25lbnQgdHlwZSAnICsgY29tcG9uZW50LmZpZWxkVHlwZSArICcgLSAnICsgY29tcG9uZW50LmlkfTwvZGl2PjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGFwaSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGdldCBpZCgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJvcHMuY29uZmlnLmlkO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldCBmaWVsZERhdGFCaW5kaW5ncygpIHtcbiAgICAgICAgICAgICAgICBsZXQgZmllbGROYW1lcyA9IFtdO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZmllbGQgb2YgcHJvcHMuY29uZmlnLmZpZWxkcykge1xuICAgICAgICAgICAgICAgICAgICBmaWVsZE5hbWVzLnB1c2goIVV0aWxzLmlzTnVsbChmaWVsZC5kYXRhQmluZGluZykgPyBmaWVsZC5kYXRhQmluZGluZyA6IGZpZWxkLmlkKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gZmllbGROYW1lcztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXQgZGlzYWJsZWQoZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICB1cGRhdGVDb21wb25lbnREaXNhYmxlZFN0YXRlKGRpc2FibGVkKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjbGVhcigpIHtcbiAgICAgICAgICAgICAgICBsZXQgcHJvcGVydGllcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGNvbXBvbmVudEhhbmRsZXMpO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcHJvcGVydHkgb2YgcHJvcGVydGllcykge1xuICAgICAgICAgICAgICAgICAgICBsZXQgY29tcG9uZW50UmVmID0gY29tcG9uZW50SGFuZGxlc1twcm9wZXJ0eV07XG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5hcGkudmFsdWUgPSBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRDaGlsZHJlbjogKCkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgIGxldCBwcm9wZXJ0aWVzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoY29tcG9uZW50SGFuZGxlcyk7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuLnB1c2goY29tcG9uZW50SGFuZGxlc1twcm9wZXJ0eV0pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZHJlbjtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXQgbW9kZWwobW9kZWwpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIHByb3BzLmNvbmZpZy5maWVsZHMpIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvcHMuZm9ybSgpLm1vZGVsW2ZpZWxkLmlkXSA9IG1vZGVsW2ZpZWxkLmlkXTtcblxuICAgICAgICAgICAgICAgICAgICBsZXQgY29tcG9uZW50UmVmID0gY29tcG9uZW50SGFuZGxlc1tmaWVsZC5pZF07XG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5hcGkudmFsdWUgPSBtb2RlbFtmaWVsZC5pZF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldCB2YWx1ZSgpIHtcbiAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSB7fTtcbiAgICAgICAgICAgICAgICBsZXQgZm9ybVZhbHVlID0gcHJvcHMuZm9ybSgpLnZhbHVlO1xuXG4gICAgICAgICAgICAgICAgaWYgKGZvcm1WYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIHByb3BzLmNvbmZpZy5maWVsZHMpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVbZmllbGQuaWRdID0gZm9ybVZhbHVlW2ZpZWxkLmlkXTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbG9hZERhdGE6IChhY3Rpb25Db25maWcsIGFjdGlvbkV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IHNlcnZpY2UgPSAhVXRpbHMuaXNOdWxsKGFjdGlvbkNvbmZpZy5kYXRhU2VydmljZSkgPyBhY3Rpb25Db25maWcuZGF0YVNlcnZpY2UgOlxuICAgICAgICAgICAgICAgICAgICAhVXRpbHMuaXNOdWxsKHByb3BzLmNvbmZpZykgPyBwcm9wcy5jb25maWcuZGF0YVNlcnZpY2UgOiBudWxsO1xuICAgICAgICAgICAgICAgIGxldCBjb21wb25lbnRWYWx1ZSA9ICFVdGlscy5pc051bGwocHJvcHMuY29uZmlnLnZhbHVlKSA/IHByb3BzLmNvbmZpZy52YWx1ZSA6XG4gICAgICAgICAgICAgICAgICAgIGFjdGlvbkNvbmZpZy52YWx1ZTtcblxuICAgICAgICAgICAgICAgIGlmIChjb21wb25lbnRWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgaXNFdmVudERhdGEgPSBjb21wb25lbnRWYWx1ZS50b1N0cmluZygpXG4gICAgICAgICAgICAgICAgICAgICAgICAuc3RhcnRzV2l0aCgnJGV2ZW50LmRhdGEnKTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGlzRXByZXNzaW9uID0gYXBwbGljYXRpb25NYW5hZ2VyLmlzRXhwcmVzc2lvbihjb21wb25lbnRWYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGxldCB2YWwgPSBpc0V2ZW50RGF0YSB8fCBpc0VwcmVzc2lvbiA/IGFwcGxpY2F0aW9uTWFuYWdlci5yZXNvbHZlRXhwcmVzc2lvblZhbHVlKGNvbXBvbmVudFZhbHVlLCBhY3Rpb25FdmVudCA/IGFjdGlvbkV2ZW50LmRhdGEgOiBudWxsKSA6IGNvbXBvbmVudFZhbHVlO1xuICAgICAgICAgICAgICAgICAgICBwcm9wcy5mb3JtKClcbiAgICAgICAgICAgICAgICAgICAgICAgIC5iaW5kRGF0YSh2YWwpO1xuXG4gICAgICAgICAgICAgICAgICAgIGxldCBldmVudCA9IG5ldyBFdmVudChwcm9wcy5oYW5kbGUsIHByb3BzLnZpZXdJZCwgdmFsKTtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnRNYW5hZ2VyLmZpcmVFdmVudChFdmVudFR5cGUuREFUQV9BUlJJVkVELCBldmVudCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwoc2VydmljZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtZXRob2QgPSBzZXJ2aWNlLnR5cGUgPT09ICdycGMnID8gaW52b2tlUnBjIDogaW52b2tlUmVzdDtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZTogc2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ6IHJlZi5jdXJyZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdJZDogcHJvcHMudmlld0lkXG4gICAgICAgICAgICAgICAgICAgICAgICB9KS50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZGF0YSA9IHNlcnZpY2UudHlwZSA9PT0gJ3JwYycgPyByZXN1bHQuZGF0YSA6IHJlc3VsdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5mb3JtKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5iaW5kRGF0YShkYXRhKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZXZlbnQgPSBuZXcgRXZlbnQocHJvcHMuaGFuZGxlLCBwcm9wcy52aWV3SWQsIGRhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudE1hbmFnZXIuZmlyZUV2ZW50KEV2ZW50VHlwZS5EQVRBX0FSUklWRUQsIGV2ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KS5jYXRjaCgoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLmNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVXRpbHMucHVibGlzaEVycm9yTWVzc2FnZShlLCBwcm9wcy52aWV3SWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVmcmVzaCgpIHtcbiAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChwcm9wcy5jb25maWcpICYmICFVdGlscy5pc051bGwocHJvcHMuY29uZmlnLnZpc2libGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFZpc2libGUoVXRpbHMuZXZhbHVhdGVCb29sZWFuRXhwcmVzc2lvbihwcm9wcy5jb25maWcudmlzaWJsZSwgcHJvcHMuY29uZmlnLmlkKSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0VmlzaWJsZSh0cnVlKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChwcm9wcy5jb25maWcpICYmICFVdGlscy5pc051bGwocHJvcHMuY29uZmlnLmRpc2FibGVkKSkge1xuICAgICAgICAgICAgICAgICAgICB1cGRhdGVDb21wb25lbnREaXNhYmxlZFN0YXRlKFV0aWxzLmV2YWx1YXRlQm9vbGVhbkV4cHJlc3Npb24ocHJvcHMuY29uZmlnLmRpc2FibGVkLCBwcm9wcy5jb25maWcuaWQpKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZWZyZXNoQ29tcG9uZW50cygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiByZW5kZXIoZmllbGRTZXQpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIChVdGlscy5pc051bGwoZmllbGRTZXQuZmllbGRzKSB8fCBmaWVsZFNldC5maWVsZHMubGVuZ3RoID09PSAwKSA/XG4gICAgICAgICAgICAgICAgPGRpdj4gRXJyb3I6IEEgZmllbGRTZXQgbXVzdCBoYXZlIGZpZWxkczwvZGl2PlxuICAgICAgICAgICAgICAgIDpcbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZEdyaWQucm93cy5tYXAoKHJvdywgaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT1cInJvdyBmaWVsc2V0LXJvd1wiIGtleT17aX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5MZWZ0OiAnMCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpblJpZ2h0OiAnMCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93LmZpZWxkcy5tYXAoKGZpZWxkLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjb2xzcGFuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB3aWR0aDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChVdGlscy5pc051bGwoZmllbGQuYXR0cmlidXRlcykgfHwgVXRpbHMuaXNOdWxsKGZpZWxkLmF0dHJpYnV0ZXMuY29sc3BhbikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sc3BhbiA9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbHNwYW5WYWwgPSBVdGlscy5nZXRGaWVsZENvbHNwYW4oZmllbGQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29sc3BhblZhbCA+IGZpZWxkR3JpZC5tYXhDb2xQZXJSb3cpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHNwYW4gPSBmaWVsZEdyaWQubWF4Q29sUGVyUm93O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sc3BhbiA9IGNvbHNwYW5WYWw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgcm93IGlzIGEgZmxleCBjb250YWluZXIgd2l0aCBhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDhweCBjb2x1bW4tZ2FwIChzZWUgZmllbGRzZXQuY3NzKS4gRWFjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGl0ZW0gc3VidHJhY3RzIGl0cyBzaGFyZSBvZiB0aGUgZ2FwcyBzb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGBjb2xzcGFuYCBjb2x1bW5zICsgdGhlIGdhcHMgYmV0d2VlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZW0gc3RpbGwgc3VtIHRvIHRoZSByb3cgd2lkdGgg4oCUIGFuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdyYXBwZWQgaXRlbXMgYWxpZ24gZmx1c2ggKGdhcCBhZGRzIG5vXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGVhZGluZyBzcGFjZSBhdCB0aGUgc3RhcnQgb2YgYSBsaW5lKS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDT0xfR0FQID0gODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXhDb2wgPSBmaWVsZEdyaWQubWF4Q29sUGVyUm93O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoID0gY29sc3BhbiAvIG1heENvbCAqIDEwMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnYXBPZmZzZXQgPSAobWF4Q29sIC0gY29sc3BhbikgKiBDT0xfR0FQIC8gbWF4Q29sO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjb250YWluZXJTdHlsZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0xlZnQ6ICcwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ1JpZ2h0OiAnMCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbkxlZnQ6ICcwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luUmlnaHQ6ICcwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluV2lkdGg6ICczMjBweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBgY2FsYygke3dpZHRofSUgLSAke2dhcE9mZnNldH1weClgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLmluZGV4ID0gaW5kZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHN0eWxlID0gZmllbGQuYXR0cmlidXRlcz8uY29udGFpbmVyU3R5bGUgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVdGlscy5tZXJnZU9iamVjdHMoZmllbGQuYXR0cmlidXRlcz8uY29udGFpbmVyU3R5bGUsIGNvbnRhaW5lclN0eWxlKSA6IGNvbnRhaW5lclN0eWxlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8ZGl2IGtleT17KGkgKyAxKSAqIGluZGV4fSBjbGFzc05hbWU9XCJjb2wtKi0qIG91aS1mb3JtLWl0ZW0tY29udGFpbmVyXCIgc3R5bGU9e3N0eWxlfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyQ29tcG9uZW50KGZpZWxkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9eydmaWVsZFNldFdyYXBwZXInfSBzdHlsZT17VXRpbHMubWVyZ2VTdHlsZXMoXG4gICAgICAgIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IHZpc2libGUgPyAnYmxvY2snIDogJ25vbmUnLFxuICAgICAgICAgICAgbWFyZ2luOiAnMCcsXG4gICAgICAgICAgICBtaW5XaWR0aDogJzMyMHB4JyxcbiAgICAgICAgICAgIHBhZGRpbmc6ICc0cHgnXG4gICAgICAgIH0sIHByb3BzLmNvbmZpZyl9PlxuICAgICAgICB7XG4gICAgICAgICAgICAhVXRpbHMuaXNOdWxsKHByb3BzLmNvbmZpZy5hdHRyaWJ1dGVzKSAmJiAhVXRpbHMuaXNOdWxsKHByb3BzLmNvbmZpZy5hdHRyaWJ1dGVzWydsYWJlbCddKSA/XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydmaWVsZFNldFRpdGxlJ30+XG4gICAgICAgICAgICAgICAgICAgIHtwcm9wcy5jb25maWcuYXR0cmlidXRlc1snbGFiZWwnXX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA6XG4gICAgICAgICAgICAgICAgbnVsbFxuICAgICAgICB9XG4gICAgICAgIHtcbiAgICAgICAgICAgICFVdGlscy5pc051bGwoZmllbGRHcmlkKSA/XG4gICAgICAgICAgICAgICAgcmVuZGVyKHByb3BzLmNvbmZpZylcbiAgICAgICAgICAgICAgICA6XG4gICAgICAgICAgICAgICAgbnVsbFxuICAgICAgICB9XG4gICAgPC9kaXY+O1xufSk7XG5cbmV4cG9ydCBkZWZhdWx0IEZpZWxkU2V0O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQyxJQUFBQSxNQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDRCxJQUFBQyxNQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRSxXQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRyxVQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSSxjQUFBLEdBQUFMLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSyxjQUFBLEdBQUFOLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBTSxZQUFBLEdBQUFQLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBTyxpQkFBQSxHQUFBUixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQVEsV0FBQSxHQUFBVCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQVMsV0FBQSxHQUFBVixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQVUsV0FBQSxHQUFBWCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQVcsU0FBQSxHQUFBWixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQVksV0FBQSxHQUFBYixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFB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
@@ -1,6 +1,16 @@
1
1
  .fieldSetWrapper {
2
2
  }
3
3
 
4
+ /* Inter-field spacing via flex `gap` on the row. Unlike a per-child margin/
5
+ padding, gap only inserts space *between* items on the same line — a field
6
+ that wraps to a new line sits flush at the start, so columns stay aligned.
7
+ (Field widths in FieldSet subtract their share of this gap so the columns
8
+ still sum to the row width.) */
9
+ .fielset-row {
10
+ column-gap: 8px;
11
+ row-gap: 4px;
12
+ }
13
+
4
14
  @media only screen and (max-width: 600px) {
5
15
  .fieldSetWrapper {
6
16
  min-width: 100% !important;
@@ -15,6 +15,10 @@ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r
15
15
  const ViewContainer = props => {
16
16
  const counter = (0, _react.useRef)(0);
17
17
  const params = (0, _reactRouterDom.useParams)();
18
+ // Every navigate() push gets a fresh location.key (even to the same path),
19
+ // so keying the dashboard on it forces PortalDashboard to remount — and its
20
+ // cards to re-fetch — when the Home button / Dashboard menu re-navigates.
21
+ const location = (0, _reactRouterDom.useLocation)();
18
22
  _react.default.useEffect(() => {}, []);
19
23
  const getKey = () => {
20
24
  if (counter.current === 100) {
@@ -25,7 +29,9 @@ const ViewContainer = props => {
25
29
  const renderView = () => {
26
30
  let viewId = params.id;
27
31
  let view = _ApplicationManager.default.getView(viewId);
28
- let element = viewId === 'dashboard' ? props.dashboard : !_Utils.default.isNull(view) && !_Utils.default.isNull(view.config) ? /*#__PURE__*/_react.default.createElement(_View.View, {
32
+ let element = viewId === 'dashboard' ? _Utils.default.isNull(props.dashboard) ? props.dashboard : /*#__PURE__*/_react.default.cloneElement(props.dashboard, {
33
+ key: 'dashboard-' + location.key
34
+ }) : !_Utils.default.isNull(view) && !_Utils.default.isNull(view.config) ? /*#__PURE__*/_react.default.createElement(_View.View, {
29
35
  key: view.config.id + "-" + getKey(),
30
36
  config: view.config,
31
37
  parameters: view.parameters,
@@ -36,4 +42,4 @@ const ViewContainer = props => {
36
42
  return renderView();
37
43
  };
38
44
  var _default = exports.default = ViewContainer;
39
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfQXBwbGljYXRpb25NYW5hZ2VyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9VdGlscyIsIl9WaWV3IiwiX3JlYWN0Um91dGVyRG9tIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwidCIsIldlYWtNYXAiLCJyIiwibiIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsImhhcyIsImdldCIsInNldCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiVmlld0NvbnRhaW5lciIsInByb3BzIiwiY291bnRlciIsInVzZVJlZiIsInBhcmFtcyIsInVzZVBhcmFtcyIsIlJlYWN0IiwidXNlRWZmZWN0IiwiZ2V0S2V5IiwiY3VycmVudCIsInJlbmRlclZpZXciLCJ2aWV3SWQiLCJpZCIsInZpZXciLCJhcHBsaWNhdGlvbk1hbmFnZXIiLCJnZXRWaWV3IiwiZWxlbWVudCIsImRhc2hib2FyZCIsIlV0aWxzIiwiaXNOdWxsIiwiY29uZmlnIiwiY3JlYXRlRWxlbWVudCIsIlZpZXciLCJrZXkiLCJwYXJhbWV0ZXJzIiwiaGFuZGxlIiwiRnJhZ21lbnQiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbGF5b3V0L1ZpZXdDb250YWluZXIuanN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwge3VzZVJlZn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0ICcuL1ZpZXdDb250YWluZXIuY3NzJztcbmltcG9ydCBhcHBsaWNhdGlvbk1hbmFnZXIgZnJvbSAnLi4vLi4vQXBwbGljYXRpb25NYW5hZ2VyJztcbmltcG9ydCBVdGlscyBmcm9tICcuLi8uLi9VdGlscyc7XG5pbXBvcnQgeyBWaWV3IH0gZnJvbSAnLi9WaWV3JztcbmltcG9ydCB7IHVzZVBhcmFtcyB9IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nO1xuXG5jb25zdCBWaWV3Q29udGFpbmVyID0gKHByb3BzKSA9PiB7XG5cbiAgICBjb25zdCBjb3VudGVyID0gdXNlUmVmKDApO1xuICAgIGNvbnN0IHBhcmFtcyA9IHVzZVBhcmFtcygpO1xuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgfSwgW10pO1xuXG4gICAgY29uc3QgZ2V0S2V5ID0gKCkgPT4ge1xuICAgICAgICBpZihjb3VudGVyLmN1cnJlbnQgPT09IDEwMCkge1xuICAgICAgICAgICAgY291bnRlci5jdXJyZW50ID0gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiArK2NvdW50ZXIuY3VycmVudDtcbiAgICB9XG5cbiAgICBjb25zdCByZW5kZXJWaWV3ID0gKCkgPT4ge1xuICAgICAgICBsZXQgdmlld0lkID0gcGFyYW1zLmlkO1xuICAgICAgICBsZXQgdmlldyA9IGFwcGxpY2F0aW9uTWFuYWdlci5nZXRWaWV3KHZpZXdJZCk7XG4gICAgICAgIGxldCBlbGVtZW50ID0gdmlld0lkID09PSAnZGFzaGJvYXJkJyA/IHByb3BzLmRhc2hib2FyZFxuICAgICAgICAgICAgOiAoIVV0aWxzLmlzTnVsbCh2aWV3KSAmJiAhVXRpbHMuaXNOdWxsKHZpZXcuY29uZmlnKVxuICAgICAgICAgICAgICAgID8gPFZpZXcga2V5PXt2aWV3LmNvbmZpZy5pZCArIFwiLVwiICsgZ2V0S2V5KCl9IGNvbmZpZz17dmlldy5jb25maWd9IHBhcmFtZXRlcnM9e3ZpZXcucGFyYW1ldGVyc31cbiAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZT17dmlldy5oYW5kbGV9Lz4gOiBudWxsKTtcbiAgICAgICAgcmV0dXJuIDw+XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZWxlbWVudFxuICAgICAgICAgICAgfVxuICAgICAgICA8Lz47XG4gICAgfTtcblxuICAgIHJldHVybiByZW5kZXJWaWV3KCk7XG59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
45
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfQXBwbGljYXRpb25NYW5hZ2VyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9VdGlscyIsIl9WaWV3IiwiX3JlYWN0Um91dGVyRG9tIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwidCIsIldlYWtNYXAiLCJyIiwibiIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsImhhcyIsImdldCIsInNldCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiVmlld0NvbnRhaW5lciIsInByb3BzIiwiY291bnRlciIsInVzZVJlZiIsInBhcmFtcyIsInVzZVBhcmFtcyIsImxvY2F0aW9uIiwidXNlTG9jYXRpb24iLCJSZWFjdCIsInVzZUVmZmVjdCIsImdldEtleSIsImN1cnJlbnQiLCJyZW5kZXJWaWV3Iiwidmlld0lkIiwiaWQiLCJ2aWV3IiwiYXBwbGljYXRpb25NYW5hZ2VyIiwiZ2V0VmlldyIsImVsZW1lbnQiLCJVdGlscyIsImlzTnVsbCIsImRhc2hib2FyZCIsImNsb25lRWxlbWVudCIsImtleSIsImNvbmZpZyIsImNyZWF0ZUVsZW1lbnQiLCJWaWV3IiwicGFyYW1ldGVycyIsImhhbmRsZSIsIkZyYWdtZW50IiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2xheW91dC9WaWV3Q29udGFpbmVyLmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHt1c2VSZWZ9IGZyb20gJ3JlYWN0JztcbmltcG9ydCAnLi9WaWV3Q29udGFpbmVyLmNzcyc7XG5pbXBvcnQgYXBwbGljYXRpb25NYW5hZ2VyIGZyb20gJy4uLy4uL0FwcGxpY2F0aW9uTWFuYWdlcic7XG5pbXBvcnQgVXRpbHMgZnJvbSAnLi4vLi4vVXRpbHMnO1xuaW1wb3J0IHsgVmlldyB9IGZyb20gJy4vVmlldyc7XG5pbXBvcnQgeyB1c2VQYXJhbXMsIHVzZUxvY2F0aW9uIH0gZnJvbSAncmVhY3Qtcm91dGVyLWRvbSc7XG5cbmNvbnN0IFZpZXdDb250YWluZXIgPSAocHJvcHMpID0+IHtcblxuICAgIGNvbnN0IGNvdW50ZXIgPSB1c2VSZWYoMCk7XG4gICAgY29uc3QgcGFyYW1zID0gdXNlUGFyYW1zKCk7XG4gICAgLy8gRXZlcnkgbmF2aWdhdGUoKSBwdXNoIGdldHMgYSBmcmVzaCBsb2NhdGlvbi5rZXkgKGV2ZW4gdG8gdGhlIHNhbWUgcGF0aCksXG4gICAgLy8gc28ga2V5aW5nIHRoZSBkYXNoYm9hcmQgb24gaXQgZm9yY2VzIFBvcnRhbERhc2hib2FyZCB0byByZW1vdW50IOKAlCBhbmQgaXRzXG4gICAgLy8gY2FyZHMgdG8gcmUtZmV0Y2gg4oCUIHdoZW4gdGhlIEhvbWUgYnV0dG9uIC8gRGFzaGJvYXJkIG1lbnUgcmUtbmF2aWdhdGVzLlxuICAgIGNvbnN0IGxvY2F0aW9uID0gdXNlTG9jYXRpb24oKTtcbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIH0sIFtdKTtcblxuICAgIGNvbnN0IGdldEtleSA9ICgpID0+IHtcbiAgICAgICAgaWYoY291bnRlci5jdXJyZW50ID09PSAxMDApIHtcbiAgICAgICAgICAgIGNvdW50ZXIuY3VycmVudCA9IDA7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gKytjb3VudGVyLmN1cnJlbnQ7XG4gICAgfVxuXG4gICAgY29uc3QgcmVuZGVyVmlldyA9ICgpID0+IHtcbiAgICAgICAgbGV0IHZpZXdJZCA9IHBhcmFtcy5pZDtcbiAgICAgICAgbGV0IHZpZXcgPSBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0Vmlldyh2aWV3SWQpO1xuICAgICAgICBsZXQgZWxlbWVudCA9IHZpZXdJZCA9PT0gJ2Rhc2hib2FyZCdcbiAgICAgICAgICAgID8gKFV0aWxzLmlzTnVsbChwcm9wcy5kYXNoYm9hcmQpXG4gICAgICAgICAgICAgICAgPyBwcm9wcy5kYXNoYm9hcmRcbiAgICAgICAgICAgICAgICA6IFJlYWN0LmNsb25lRWxlbWVudChwcm9wcy5kYXNoYm9hcmQsIHtrZXk6ICdkYXNoYm9hcmQtJyArIGxvY2F0aW9uLmtleX0pKVxuICAgICAgICAgICAgOiAoIVV0aWxzLmlzTnVsbCh2aWV3KSAmJiAhVXRpbHMuaXNOdWxsKHZpZXcuY29uZmlnKVxuICAgICAgICAgICAgICAgID8gPFZpZXcga2V5PXt2aWV3LmNvbmZpZy5pZCArIFwiLVwiICsgZ2V0S2V5KCl9IGNvbmZpZz17dmlldy5jb25maWd9IHBhcmFtZXRlcnM9e3ZpZXcucGFyYW1ldGVyc31cbiAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZT17dmlldy5oYW5kbGV9Lz4gOiBudWxsKTtcbiAgICAgICAgcmV0dXJuIDw+XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZWxlbWVudFxuICAgICAgICAgICAgfVxuICAgICAgICA8Lz47XG4gICAgfTtcblxuICAgIHJldHVybiByZW5kZXJWaWV3KCk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBWaWV3Q29udGFpbmVyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQUEsT0FBQTtBQUNBLElBQUFDLG1CQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxNQUFBLEdBQUFELHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBSSxLQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxlQUFBLEdBQUFMLE9BQUE7QUFBMEQsU0FBQUUsdUJBQUFJLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxLQUFBRSxPQUFBLEVBQUFGLENBQUE7QUFBQSxTQUFBUCx3QkFBQU8sQ0FBQSxFQUFBRyxDQUFBLDZCQUFBQyxPQUFBLE1BQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQVgsdUJBQUEsWUFBQUEsQ0FBQU8sQ0FBQSxFQUFBRyxDQUFBLFNBQUFBLENBQUEsSUFBQUgsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsU0FBQUQsQ0FBQSxNQUFBTyxDQUFBLEVBQUFDLENBQUEsRUFBQUMsQ0FBQSxLQUFBQyxTQUFBLFFBQUFSLE9BQUEsRUFBQUYsQ0FBQSxpQkFBQUEsQ0FBQSx1QkFBQUEsQ0FBQSx5QkFBQUEsQ0FBQSxTQUFBUyxDQUFBLE1BQUFGLENBQUEsR0FBQUosQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsUUFBQUUsQ0FBQSxDQUFBSSxHQUFBLENBQUFYLENBQUEsVUFBQU8sQ0FBQSxDQUFBSyxHQUFBLENBQUFaLENBQUEsR0FBQU8sQ0FBQSxDQUFBTSxHQUFBLENBQUFiLENBQUEsRUFBQVMsQ0FBQSxnQkFBQU4sQ0FBQSxJQUFBSCxDQUFBLGdCQUFBRyxDQUFBLE9BQUFXLGNBQUEsQ0FBQUMsSUFBQSxDQUFBZixDQUFBLEVBQUFHLENBQUEsT0FBQUssQ0FBQSxJQUFBRCxDQUFBLEdBQUFTLE1BQUEsQ0FBQUMsY0FBQSxLQUFBRCxNQUFBLENBQUFFLHdCQUFBLENBQUFsQixDQUFBLEVBQUFHLENBQUEsT0FBQUssQ0FBQSxDQUFBSSxHQUFBLElBQUFKLENBQUEsQ0FBQUssR0FBQSxJQUFBTixDQUFBLENBQUFFLENBQUEsRUFBQU4sQ0FBQSxFQUFBSyxDQUFBLElBQUFDLENBQUEsQ0FBQU4sQ0FBQSxJQUFBSCxDQUFBLENBQUFHLENBQUEsV0FBQU0sQ0FBQSxLQUFBVCxDQUFBLEVBQUFHLENBQUE7QUFFMUQsTUFBTWdCLGFBQWEsR0FBSUMsS0FBSyxJQUFLO0VBRTdCLE1BQU1DLE9BQU8sR0FBRyxJQUFBQyxhQUFNLEVBQUMsQ0FBQyxDQUFDO0VBQ3pCLE1BQU1DLE1BQU0sR0FBRyxJQUFBQyx5QkFBUyxFQUFDLENBQUM7RUFDMUI7RUFDQTtFQUNBO0VBQ0EsTUFBTUMsUUFBUSxHQUFHLElBQUFDLDJCQUFXLEVBQUMsQ0FBQztFQUM5QkMsY0FBSyxDQUFDQyxTQUFTLENBQUMsTUFBTSxDQUN0QixDQUFDLEVBQUUsRUFBRSxDQUFDO0VBRU4sTUFBTUMsTUFBTSxHQUFHQSxDQUFBLEtBQU07SUFDakIsSUFBR1IsT0FBTyxDQUFDUyxPQUFPLEtBQUssR0FBRyxFQUFFO01BQ3hCVCxPQUFPLENBQUNTLE9BQU8sR0FBRyxDQUFDO0lBQ3ZCO0lBRUEsT0FBTyxFQUFFVCxPQUFPLENBQUNTLE9BQU87RUFDNUIsQ0FBQztFQUVELE1BQU1DLFVBQVUsR0FBR0EsQ0FBQSxLQUFNO0lBQ3JCLElBQUlDLE1BQU0sR0FBR1QsTUFBTSxDQUFDVSxFQUFFO0lBQ3RCLElBQUlDLElBQUksR0FBR0MsMkJBQWtCLENBQUNDLE9BQU8sQ0FBQ0osTUFBTSxDQUFDO0lBQzdDLElBQUlLLE9BQU8sR0FBR0wsTUFBTSxLQUFLLFdBQVcsR0FDN0JNLGNBQUssQ0FBQ0MsTUFBTSxDQUFDbkIsS0FBSyxDQUFDb0IsU0FBUyxDQUFDLEdBQzFCcEIsS0FBSyxDQUFDb0IsU0FBUyxnQkFDZmIsY0FBSyxDQUFDYyxZQUFZLENBQUNyQixLQUFLLENBQUNvQixTQUFTLEVBQUU7TUFBQ0UsR0FBRyxFQUFFLFlBQVksR0FBR2pCLFFBQVEsQ0FBQ2lCO0lBQUcsQ0FBQyxDQUFDLEdBQzFFLENBQUNKLGNBQUssQ0FBQ0MsTUFBTSxDQUFDTCxJQUFJLENBQUMsSUFBSSxDQUFDSSxjQUFLLENBQUNDLE1BQU0sQ0FBQ0wsSUFBSSxDQUFDUyxNQUFNLENBQUMsZ0JBQzlDbkQsTUFBQSxDQUFBVSxPQUFBLENBQUEwQyxhQUFBLENBQUM5QyxLQUFBLENBQUErQyxJQUFJO01BQUNILEdBQUcsRUFBRVIsSUFBSSxDQUFDUyxNQUFNLENBQUNWLEVBQUUsR0FBRyxHQUFHLEdBQUdKLE1BQU0sQ0FBQyxDQUFFO01BQUNjLE1BQU0sRUFBRVQsSUFBSSxDQUFDUyxNQUFPO01BQUNHLFVBQVUsRUFBRVosSUFBSSxDQUFDWSxVQUFXO01BQ3ZGQyxNQUFNLEVBQUViLElBQUksQ0FBQ2E7SUFBTyxDQUFDLENBQUMsR0FBRyxJQUFLO0lBQzlDLG9CQUFPdkQsTUFBQSxDQUFBVSxPQUFBLENBQUEwQyxhQUFBLENBQUFwRCxNQUFBLENBQUFVLE9BQUEsQ0FBQThDLFFBQUEsUUFFQ1gsT0FFTixDQUFDO0VBQ1AsQ0FBQztFQUVELE9BQU9OLFVBQVUsQ0FBQyxDQUFDO0FBQ3ZCLENBQUM7QUFBQyxJQUFBa0IsUUFBQSxHQUFBQyxPQUFBLENBQUFoRCxPQUFBLEdBRWFpQixhQUFhIiwiaWdub3JlTGlzdCI6W119
@@ -41,7 +41,9 @@ class RouteActionHandler {
41
41
  if ('@#{history.back}' === path || '$history.back' === path) {
42
42
  let historyElement = _ApplicationManager.default.getPreviousHistoryElement(isWindow ? 'window' : 'main');
43
43
  if (historyElement === null) {
44
- console.error('Invalid path. Cannot go back in history');
44
+ console.warn('Cannot go back in history. No history element found in stack. Loading dashboard');
45
+ _ApplicationManager.default.closeAllViews(true);
46
+ _ApplicationManager.default.navigate('/view/dashboard');
45
47
  return;
46
48
  }
47
49
  path = historyElement.path;
@@ -167,4 +169,4 @@ class RouteActionHandler {
167
169
  const instance = new RouteActionHandler();
168
170
  Object.freeze(instance);
169
171
  var _default = exports.default = instance;
170
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9SZXN0VXRpbHMiLCJfQXBwbGljYXRpb25NYW5hZ2VyIiwiX1V0aWxzIiwiX0R5bmFtaWNKUyIsIl9PYnNlcnZhYmxlIiwiX0V2ZW50VHlwZSIsIl9FdmVudCIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImxvY2F0aW9uIiwid2luZG93IiwicHJvdG9jb2wiLCJob3N0bmFtZSIsIlJvdXRlQWN0aW9uSGFuZGxlciIsImNvbnN0cnVjdG9yIiwiaW5zdGFuY2UiLCJleGVjdXRlIiwiYWN0aW9uQ29uZmlnIiwiZXZlbnQiLCJjb21wb25lbnQiLCJjdXJyZW50Vmlld0lkIiwiYXBwbGljYXRpb25NYW5hZ2VyIiwiZW5hYmxlRm9ybU1hcmtlcnMiLCJmb3J3YXJkIiwicGF0aCIsImlzSGlzdG9yeSIsImlzUGFyZW50IiwiVXRpbHMiLCJpc051bGwiLCJwYXJlbnQiLCJldmFsdWF0ZUJvb2xlYW5FeHByZXNzaW9uIiwiaWQiLCJpc1BvcHVwIiwicG9wVXAiLCJpc1dpbmRvdyIsInBhdGhFdmFsdWF0b3IiLCJkeW5hbWljSlMiLCJleGVjdXRlU2NyaXB0T2JqZWN0Iiwic291cmNlIiwiaXNFeHByZXNzaW9uIiwicmVzb2x2ZUV4cHJlc3Npb25WYWx1ZSIsImRhdGEiLCJoaXN0b3J5RWxlbWVudCIsImdldFByZXZpb3VzSGlzdG9yeUVsZW1lbnQiLCJjb25zb2xlIiwiZXJyb3IiLCJwYXJhbWV0ZXJWYWx1ZXMiLCJwYXJhbWV0ZXJzIiwiaSIsImxlbmd0aCIsInBhcmFtZXRlciIsInBhcmFtZXRlclZhbHVlIiwicmVzb2x2ZVBhcmFtZXRlclZhbHVlIiwidmFsaWRhdG9yIiwibnVsbGFibGUiLCJuYW1lIiwiSlNPTiIsInN0cmluZ2lmeSIsInBhcmFtIiwidmFsdWUiLCJpbnN0YW5jZVR5cGUiLCJwdXNoIiwiY3VycmVudEdyYXBoIiwiZ2V0Q3VycmVudEdyYXBoIiwibmF2aWdhdGUiLCJjb25maWciLCJyZW1vdmVMb2FkZWRHcmFwaCIsImlzUHVibGljVmlldyIsInN0YXJ0c1dpdGgiLCJ2aWV3RW5kcG9pbnQiLCJ1cmwiLCJnZXRDb250ZXh0Um9vdCIsImdldFVJQ29uZmlnUGF0aCIsInNlbmRSZXF1ZXN0IiwidHlwZSIsImN1cnJlbnRWaWV3IiwiZ2V0VG9wVmlldyIsInZpZXciLCJkZWZhdWx0TW9kZWwiLCJ1cGRhdGVNb2RlbCIsImdyYXBoSWQiLCJoYW5kbGUiLCJhcGkiLCJtb2RlbCIsImdldENoaWxkIiwidmFsdWVzIiwic2V0TW9kZWxWYWx1ZSIsImtleSIsImdldE1vZGVsVmFsdWUiLCJsb2FkZWQiLCJhZGRWaWV3IiwibSIsIm1hdGNoIiwib3BlbldpbmRvd1ZpZXciLCJvcGVuUG9wdXBWaWV3IiwibG9hZEdyYXBoIiwiT2JqZWN0IiwiZnJlZXplIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9ldmVudC9Sb3V0ZUFjdGlvbkhhbmRsZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7c2VuZFJlcXVlc3R9IGZyb20gJy4uL1Jlc3RVdGlscyc7XG5pbXBvcnQgYXBwbGljYXRpb25NYW5hZ2VyIGZyb20gJy4uL0FwcGxpY2F0aW9uTWFuYWdlcic7XG5pbXBvcnQgVXRpbHMgZnJvbSAnLi4vVXRpbHMnO1xuaW1wb3J0IGR5bmFtaWNKUyBmcm9tICcuLi9EeW5hbWljSlMnO1xuaW1wb3J0IGV2ZW50TWFuYWdlciBmcm9tICcuLi9ldmVudC9PYnNlcnZhYmxlJztcbmltcG9ydCBFdmVudFR5cGUgZnJvbSAnLi9FdmVudFR5cGUnO1xuaW1wb3J0IEV2ZW50IGZyb20gJy4vRXZlbnQnO1xuXG5jb25zdCBsb2NhdGlvbiA9IHdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbCArICcvLycgKyB3aW5kb3cubG9jYXRpb24uaG9zdG5hbWU7XG5cbmNsYXNzIFJvdXRlQWN0aW9uSGFuZGxlciB7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgaWYgKCFSb3V0ZUFjdGlvbkhhbmRsZXIuaW5zdGFuY2UpIHtcbiAgICAgICAgICAgIFJvdXRlQWN0aW9uSGFuZGxlci5pbnN0YW5jZSA9IHRoaXM7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gUm91dGVBY3Rpb25IYW5kbGVyLmluc3RhbmNlO1xuICAgIH1cblxuICAgIGV4ZWN1dGUoYWN0aW9uQ29uZmlnLCBldmVudCwgY29tcG9uZW50LCBjdXJyZW50Vmlld0lkKSB7XG5cbiAgICAgICAgLy8gVE9ETyA6IEltcGxlbWVudCB0aGlzIGZ1bGwgVVJMXG4gICAgICAgIC8vU3RyaW5nIHVybCA9IHdlYlVybCArIFwiP3ZlcnNpb249MS4wXCIgKyAodmlld1BhdGggIT0gbnVsbCA/IFwiJmlkPVwiICsgVVJMLmVuY29kZVF1ZXJ5U3RyaW5nKHZpZXdQYXRoKSA6IFwiXCIpXG4gICAgICAgIC8vICAgICsgKHZpZXdQYXRoUmVxdWVzdER0byAhPSBudWxsID8gXCImc2VydmljZVJlcXVlc3Q9XCIgKyBVUkwuZW5jb2RlUXVlcnlTdHJpbmcocmVxdWVzdER0b1dyaXRlci53cml0ZSh2aWV3UGF0aFJlcXVlc3REdG8pKSA6IFwiXCIpXG4gICAgICAgIC8vICAgICsgKHBvcnRhbEN1cnJlbnRPcmcgIT0gbnVsbCA/IFwiJnByb2ZpbGU9XCIgKyBwb3J0YWxDdXJyZW50T3JnIDogXCJcIik7XG5cbiAgICAgICAgYXBwbGljYXRpb25NYW5hZ2VyLmVuYWJsZUZvcm1NYXJrZXJzKGZhbHNlKTtcblxuICAgICAgICBsZXQgZm9yd2FyZCA9IHRydWU7XG4gICAgICAgIGxldCBwYXRoID0gbnVsbDtcbiAgICAgICAgbGV0IGlzSGlzdG9yeSA9IGZhbHNlO1xuICAgICAgICBsZXQgaXNQYXJlbnQgPSBVdGlscy5pc051bGwoYWN0aW9uQ29uZmlnLnBhcmVudCkgPyBmYWxzZSA6XG4gICAgICAgICAgICBVdGlscy5ldmFsdWF0ZUJvb2xlYW5FeHByZXNzaW9uKGFjdGlvbkNvbmZpZy5wYXJlbnQsIGNvbXBvbmVudD8uaWQsIGZhbHNlKTtcbiAgICAgICAgbGV0IGlzUG9wdXAgPSBVdGlscy5pc051bGwoYWN0aW9uQ29uZmlnLnBvcFVwKSA/IGZhbHNlIDogYWN0aW9uQ29uZmlnLnBvcFVwO1xuICAgICAgICBsZXQgaXNXaW5kb3cgPSBVdGlscy5pc051bGwoYWN0aW9uQ29uZmlnLndpbmRvdykgPyBmYWxzZSA6IGFjdGlvbkNvbmZpZy53aW5kb3c7XG5cbiAgICAgICAgaWYgKCFVdGlscy5pc051bGwoYWN0aW9uQ29uZmlnLnBhdGhFdmFsdWF0b3IpKSB7XG4gICAgICAgICAgICBwYXRoID0gZHluYW1pY0pTLmV4ZWN1dGVTY3JpcHRPYmplY3QoY3VycmVudFZpZXdJZCArICdWaWV3RXZhbHVhdG9yXycgKyBldmVudD8uc291cmNlLmlkLFxuICAgICAgICAgICAgICAgIGFjdGlvbkNvbmZpZy5wYXRoRXZhbHVhdG9yKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBhdGggPSBhY3Rpb25Db25maWcucGF0aCAhPT0gJ0Aje2hpc3RvcnkuYmFja30nICYmIGFwcGxpY2F0aW9uTWFuYWdlci5pc0V4cHJlc3Npb24oYWN0aW9uQ29uZmlnLnBhdGgpID9cbiAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIucmVzb2x2ZUV4cHJlc3Npb25WYWx1ZShhY3Rpb25Db25maWcucGF0aCwgZXZlbnQ/LmRhdGEpIDogYWN0aW9uQ29uZmlnLnBhdGg7XG5cbiAgICAgICAgICAgIGlmICgnQCN7aGlzdG9yeS5iYWNrfScgPT09IHBhdGggfHwgJyRoaXN0b3J5LmJhY2snID09PSBwYXRoKSB7XG4gICAgICAgICAgICAgICAgbGV0IGhpc3RvcnlFbGVtZW50ID0gYXBwbGljYXRpb25NYW5hZ2VyLmdldFByZXZpb3VzSGlzdG9yeUVsZW1lbnQoaXNXaW5kb3cgPyAnd2luZG93JyA6ICdtYWluJyk7XG4gICAgICAgICAgICAgICAgaWYgKGhpc3RvcnlFbGVtZW50ID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0ludmFsaWQgcGF0aC4gQ2Fubm90IGdvIGJhY2sgaW4gaGlzdG9yeScpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcGF0aCA9IGhpc3RvcnlFbGVtZW50LnBhdGg7XG4gICAgICAgICAgICAgICAgaXNIaXN0b3J5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBpc1BhcmVudCA9IGhpc3RvcnlFbGVtZW50LnBhcmVudDtcbiAgICAgICAgICAgICAgICBmb3J3YXJkID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgcGFyYW1ldGVyVmFsdWVzID0gW107XG4gICAgICAgIGlmICghVXRpbHMuaXNOdWxsKGFjdGlvbkNvbmZpZy5wYXJhbWV0ZXJzKSkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhY3Rpb25Db25maWcucGFyYW1ldGVycy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGxldCBwYXJhbWV0ZXIgPSBhY3Rpb25Db25maWcucGFyYW1ldGVyc1tpXTtcbiAgICAgICAgICAgICAgICBsZXQgcGFyYW1ldGVyVmFsdWUgPSBhcHBsaWNhdGlvbk1hbmFnZXIucmVzb2x2ZVBhcmFtZXRlclZhbHVlKHBhcmFtZXRlciwgZXZlbnQ/LmRhdGEpO1xuICAgICAgICAgICAgICAgIGxldCB2YWxpZGF0b3IgPSBwYXJhbWV0ZXIudmFsaWRhdG9yO1xuXG4gICAgICAgICAgICAgICAgaWYgKFV0aWxzLmlzTnVsbChwYXJhbWV0ZXJWYWx1ZSkgJiYgIVV0aWxzLmlzTnVsbCh2YWxpZGF0b3IpICYmXG4gICAgICAgICAgICAgICAgICAgIFV0aWxzLmV2YWx1YXRlQm9vbGVhbkV4cHJlc3Npb24odmFsaWRhdG9yLm51bGxhYmxlLCBwYXJhbWV0ZXIubmFtZSkgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1JvdXRpbmcgdG8gcGF0aCAnICsgcGF0aCArICcsIGZhaWxlZC4gQSBudWxsIHZhbHVlIGZvciBhIE5PTi1OVUxMQUJMRSBwYXJhbWV0ZXIgd2FzIGZvdW5kIC0gJyArIEpTT04uc3RyaW5naWZ5KHBhcmFtZXRlcikpO1xuICAgICAgICAgICAgICAgICAgICAvLyBUT0RPIDogRGlzcGxheSB0aGUgY29uZmlndXJlZCBlcnJvciBtZXNzYWdlIGF0IHRoZSBjb3JyZWN0IGVycm9yIHBhbmVsXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBsZXQgcGFyYW0gPSB7fTtcbiAgICAgICAgICAgICAgICBwYXJhbS5uYW1lID0gcGFyYW1ldGVyLm5hbWU7XG4gICAgICAgICAgICAgICAgcGFyYW0udmFsdWUgPSBVdGlscy5pc051bGwocGFyYW1ldGVyVmFsdWUpID8gbnVsbCA6XG4gICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlclZhbHVlLmluc3RhbmNlVHlwZSA9PT0gJ1R5cGVkVmFsdWUnID8gcGFyYW1ldGVyVmFsdWUudmFsdWUgOiBwYXJhbWV0ZXJWYWx1ZTtcblxuICAgICAgICAgICAgICAgIHBhcmFtZXRlclZhbHVlcy5wdXNoKHBhcmFtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBjdXJyZW50R3JhcGggPSBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0Q3VycmVudEdyYXBoKGlzV2luZG93ID8gJ3dpbmRvdycgOiAnbWFpbicpO1xuICAgICAgICBpZiAoJ0Aje2hvbWV9JyA9PT0gcGF0aCkge1xuICAgICAgICAgICAgYXBwbGljYXRpb25NYW5hZ2VyLm5hdmlnYXRlKCcvdmlldy91bmxvYWQnKTtcbiAgICAgICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5uYXZpZ2F0ZSgnL3ZpZXcvZGFzaGJvYXJkJylcbiAgICAgICAgfSBlbHNlIGlmIChpc0hpc3RvcnkgJiYgY3VycmVudEdyYXBoKSB7XG4gICAgICAgICAgICBpZiAoKGlzV2luZG93ICYmIGN1cnJlbnRHcmFwaC5jb25maWcuaXNXaW5kb3cpIHx8ICghaXNXaW5kb3cgJiYgIWN1cnJlbnRHcmFwaC5jb25maWcuaXNXaW5kb3cpKSB7XG4gICAgICAgICAgICAgICAgYXBwbGljYXRpb25NYW5hZ2VyLnJlbW92ZUxvYWRlZEdyYXBoKChpc1dpbmRvdyAmJiBjdXJyZW50R3JhcGguY29uZmlnLmlzV2luZG93KSA/ICd3aW5kb3cnIDogJ21haW4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIFByZS1hdXRoIGZsb3dzIChyZWdpc3RyYXRpb24gd2l6YXJkKSBsaXZlIHVuZGVyXG4gICAgICAgICAgICAvLyAvcG9ydGFsL3ZpZXdzL3JlZ2lzdHJhdGlvbi8qIGFuZCBtdXN0IGJlIGZldGNoZWQgdmlhIHRoZVxuICAgICAgICAgICAgLy8gcHVibGljIENEVUkgZW5kcG9pbnQgQU5EIHdpdGggbm8gQXV0aG9yaXphdGlvbiBoZWFkZXIuXG4gICAgICAgICAgICAvLyBTcHJpbmcgU2VjdXJpdHkncyBiZWFyZXItYXV0aCBmaWx0ZXIgdmFsaWRhdGVzICphbnkqXG4gICAgICAgICAgICAvLyBhdHRhY2hlZCB0b2tlbiAoZXZlbiBvbiBwZXJtaXRBbGwoKSBlbmRwb2ludHMpIOKAlCBzbyBhblxuICAgICAgICAgICAgLy8gZW1wdHkvc3RhbGUgdG9rZW4gZnJvbSBhbiB1bmF1dGhlbnRpY2F0ZWQgc2Vzc2lvbiByZXR1cm5zXG4gICAgICAgICAgICAvLyA0MDEgZnJvbSB0aGUgcHVibGljIGVuZHBvaW50LiBTa2lwcGluZyB0aGUgYXV0aCBoZWFkZXJcbiAgICAgICAgICAgIC8vIGhlcmUgbWlycm9ycyB0aGUgYm9vdHN0cmFwJ3Mgc2VuZFJlcXVlc3QoLi4uLCBzZWN1cmU9ZmFsc2UpLlxuICAgICAgICAgICAgY29uc3QgaXNQdWJsaWNWaWV3ID0gcGF0aCAmJiBwYXRoLnN0YXJ0c1dpdGgoJy9wb3J0YWwvdmlld3MvcmVnaXN0cmF0aW9uLycpO1xuICAgICAgICAgICAgY29uc3Qgdmlld0VuZHBvaW50ID0gaXNQdWJsaWNWaWV3ID8gJy92aWV3L3B1YmxpYy9nZXQnIDogJy92aWV3L2dldCc7XG4gICAgICAgICAgICBsZXQgdXJsID0gbG9jYXRpb24gKyBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0Q29udGV4dFJvb3QoKSArIGFwcGxpY2F0aW9uTWFuYWdlci5nZXRVSUNvbmZpZ1BhdGgoKSArIHZpZXdFbmRwb2ludCArICc/dmVyc2lvbj0xLjAmaWQ9JyArIHBhdGg7XG4gICAgICAgICAgICBzZW5kUmVxdWVzdCh1cmwsXG4gICAgICAgICAgICAgICAgKGRhdGEpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gc2VuZFJlcXVlc3QgYXV0by1kZWNvZGVzIHRoZSB7X2NkdWlfen0gd2lyZSB3cmFwIGZvclxuICAgICAgICAgICAgICAgICAgICAvLyAvdWkvYXBpL3YqLyBVUkxzIOKAlCBkYXRhIGhlcmUgaXMgdGhlIHJhdyBDRFVJIGFzc2V0LlxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNQYXJlbnQgJiYgY3VycmVudEdyYXBoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGlzV2luZG93ICYmIGN1cnJlbnRHcmFwaC5jb25maWcuaXNXaW5kb3cpIHx8ICghaXNXaW5kb3cgJiYgIWN1cnJlbnRHcmFwaC5jb25maWcuaXNXaW5kb3cpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25NYW5hZ2VyLnJlbW92ZUxvYWRlZEdyYXBoKChpc1dpbmRvdyAmJiBjdXJyZW50R3JhcGguY29uZmlnLmlzV2luZG93KSA/ICd3aW5kb3cnIDogJ21haW4nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLnR5cGUgPT09ICd2aWV3Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGN1cnJlbnRWaWV3ID0gYXBwbGljYXRpb25NYW5hZ2VyLmdldFRvcFZpZXcoaXNXaW5kb3cgPyAnd2luZG93JyA6ICdtYWluJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdmlldyA9IHt9O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRlZmF1bHRNb2RlbCA9IHt9O1xuICAgICAgICAgICAgICAgICAgICAgICAgVXRpbHMudXBkYXRlTW9kZWwocGFyYW1ldGVyVmFsdWVzLCBkZWZhdWx0TW9kZWwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmlldy5jb25maWcgPSBkYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmlldy5wYXJhbWV0ZXJzID0gcGFyYW1ldGVyVmFsdWVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmlldy5wYXJlbnQgPSBpc1BhcmVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpZXcuZ3JhcGhJZCA9IGFjdGlvbkNvbmZpZy5ncmFwaElkO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmlldy5oYW5kbGUgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBpOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldCBpZCgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhLmlkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXQgbW9kZWwoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGVmYXVsdE1vZGVsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRDaGlsZDogKGlkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlTW9kZWw6ICh2YWx1ZXMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFV0aWxzLnVwZGF0ZU1vZGVsKHZhbHVlcywgZGVmYXVsdE1vZGVsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TW9kZWxWYWx1ZTogKGtleSwgdmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGVmYXVsdE1vZGVsLmtleSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRNb2RlbFZhbHVlOiAoa2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0TW9kZWxba2V5XTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGVkOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIuYWRkVmlldyh2aWV3LCBwYXRoLCBmb3J3YXJkLCBhY3Rpb25Db25maWcucG9wVXAgPyAncG9wdXAnIDogaXNXaW5kb3cgPyAnd2luZG93JyA6ICdtYWluJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBOb25lLWV4aXN0aW5nIHJvdXRlIHRvIGVuc3VyZSB0aGF0IHRoZSBjdXJyZW50IHZpZXcgdW5sb2Fkc1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFV0aWxzLmlzTnVsbChhY3Rpb25Db25maWcucG9wVXApIHx8IGFjdGlvbkNvbmZpZy5wb3BVcCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXaW5kb3dzIGRvIG5vdCBnbyB0byB0aGUgT3V0bGV0IGluIHRoZSB2aWV3cG9ydC4gVGhleSBnZXQgcmVuZGVyZWQgaW50byB0aGUgd2luZG93IHZpZXdwb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1dpbmRvdykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2FwcGxpY2F0aW9uTWFuYWdlci5uYXZpZ2F0ZSgnL3ZpZXcvdW5sb2FkJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlZ2lzdHJhdGlvbiB3aXphcmQgbm9kZXMgbXVzdCBzdGF5IGluc2lkZSB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXItcG9ydGFsIHJvdXRlIHRyZWUg4oCUIG5hdmlnYXRpbmcgdG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gL3ZpZXcvPGlkPiBtb3VudHMgdGhlIGF1dGhlbnRpY2F0ZWQgYXBwIHNoZWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChJbnRlcmFjdGlvblBvcnRhbEFwcEhvbWUpIHdoaWNoIGZpcmVzIHVzZXItZmluZCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNldHVwL2RlZmF1bHQgYW5kIGJyZWFrcyB0aGUgcHJlLWF1dGggVVguIEtlZXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHBhdGggdW5kZXIgL3JlZ2lzdGVyLzx0eXBlPi88aWQ+IGluc3RlYWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1B1YmxpY1ZpZXcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG0gPSBwYXRoLm1hdGNoKC9eXFwvcG9ydGFsXFwvdmlld3NcXC9yZWdpc3RyYXRpb25cXC8oW14vXSspXFwvLyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0eXBlID0gKG0gJiYgbVsxXSkgfHwgJ3ZlbmRvcic7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIubmF2aWdhdGUoJy9yZWdpc3Rlci8nICsgdHlwZSArICcvJyArIGRhdGEuaWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25NYW5hZ2VyLm5hdmlnYXRlKCcvdmlldy8nICsgZGF0YS5pZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIub3BlbldpbmRvd1ZpZXcodmlldyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIub3BlblBvcHVwVmlldyh2aWV3KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChkYXRhLnR5cGUgPT09ICdncmFwaCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuaXNXaW5kb3cgPSBpc1dpbmRvdztcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5sb2FkR3JhcGgoaXNQYXJlbnQsIGRhdGEsIHBhcmFtZXRlclZhbHVlcywgKGlzUG9wdXAgPyAncG9wdXAnIDogaXNXaW5kb3cgPyAnd2luZG93JyA6ICdtYWluJykpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwgKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgICAgICAgICB9LCAhaXNQdWJsaWNWaWV3LCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmNvbnN0IGluc3RhbmNlID0gbmV3IFJvdXRlQWN0aW9uSGFuZGxlcigpO1xuT2JqZWN0LmZyZWV6ZShpbnN0YW5jZSk7XG5cbmV4cG9ydCBkZWZhdWx0IGluc3RhbmNlO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxVQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxtQkFBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUcsTUFBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUksVUFBQSxHQUFBTCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUssV0FBQSxHQUFBTixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQU0sVUFBQSxHQUFBUCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQU8sTUFBQSxHQUFBUixzQkFBQSxDQUFBQyxPQUFBO0FBQTRCLFNBQUFELHVCQUFBUyxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsS0FBQUUsT0FBQSxFQUFBRixDQUFBO0FBRTVCLE1BQU1HLFFBQVEsR0FBR0MsTUFBTSxDQUFDRCxRQUFR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
172
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9SZXN0VXRpbHMiLCJfQXBwbGljYXRpb25NYW5hZ2VyIiwiX1V0aWxzIiwiX0R5bmFtaWNKUyIsIl9PYnNlcnZhYmxlIiwiX0V2ZW50VHlwZSIsIl9FdmVudCIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImxvY2F0aW9uIiwid2luZG93IiwicHJvdG9jb2wiLCJob3N0bmFtZSIsIlJvdXRlQWN0aW9uSGFuZGxlciIsImNvbnN0cnVjdG9yIiwiaW5zdGFuY2UiLCJleGVjdXRlIiwiYWN0aW9uQ29uZmlnIiwiZXZlbnQiLCJjb21wb25lbnQiLCJjdXJyZW50Vmlld0lkIiwiYXBwbGljYXRpb25NYW5hZ2VyIiwiZW5hYmxlRm9ybU1hcmtlcnMiLCJmb3J3YXJkIiwicGF0aCIsImlzSGlzdG9yeSIsImlzUGFyZW50IiwiVXRpbHMiLCJpc051bGwiLCJwYXJlbnQiLCJldmFsdWF0ZUJvb2xlYW5FeHByZXNzaW9uIiwiaWQiLCJpc1BvcHVwIiwicG9wVXAiLCJpc1dpbmRvdyIsInBhdGhFdmFsdWF0b3IiLCJkeW5hbWljSlMiLCJleGVjdXRlU2NyaXB0T2JqZWN0Iiwic291cmNlIiwiaXNFeHByZXNzaW9uIiwicmVzb2x2ZUV4cHJlc3Npb25WYWx1ZSIsImRhdGEiLCJoaXN0b3J5RWxlbWVudCIsImdldFByZXZpb3VzSGlzdG9yeUVsZW1lbnQiLCJjb25zb2xlIiwid2FybiIsImNsb3NlQWxsVmlld3MiLCJuYXZpZ2F0ZSIsInBhcmFtZXRlclZhbHVlcyIsInBhcmFtZXRlcnMiLCJpIiwibGVuZ3RoIiwicGFyYW1ldGVyIiwicGFyYW1ldGVyVmFsdWUiLCJyZXNvbHZlUGFyYW1ldGVyVmFsdWUiLCJ2YWxpZGF0b3IiLCJudWxsYWJsZSIsIm5hbWUiLCJlcnJvciIsIkpTT04iLCJzdHJpbmdpZnkiLCJwYXJhbSIsInZhbHVlIiwiaW5zdGFuY2VUeXBlIiwicHVzaCIsImN1cnJlbnRHcmFwaCIsImdldEN1cnJlbnRHcmFwaCIsImNvbmZpZyIsInJlbW92ZUxvYWRlZEdyYXBoIiwiaXNQdWJsaWNWaWV3Iiwic3RhcnRzV2l0aCIsInZpZXdFbmRwb2ludCIsInVybCIsImdldENvbnRleHRSb290IiwiZ2V0VUlDb25maWdQYXRoIiwic2VuZFJlcXVlc3QiLCJ0eXBlIiwiY3VycmVudFZpZXciLCJnZXRUb3BWaWV3IiwidmlldyIsImRlZmF1bHRNb2RlbCIsInVwZGF0ZU1vZGVsIiwiZ3JhcGhJZCIsImhhbmRsZSIsImFwaSIsIm1vZGVsIiwiZ2V0Q2hpbGQiLCJ2YWx1ZXMiLCJzZXRNb2RlbFZhbHVlIiwia2V5IiwiZ2V0TW9kZWxWYWx1ZSIsImxvYWRlZCIsImFkZFZpZXciLCJtIiwibWF0Y2giLCJvcGVuV2luZG93VmlldyIsIm9wZW5Qb3B1cFZpZXciLCJsb2FkR3JhcGgiLCJPYmplY3QiLCJmcmVlemUiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2V2ZW50L1JvdXRlQWN0aW9uSGFuZGxlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtzZW5kUmVxdWVzdH0gZnJvbSAnLi4vUmVzdFV0aWxzJztcbmltcG9ydCBhcHBsaWNhdGlvbk1hbmFnZXIgZnJvbSAnLi4vQXBwbGljYXRpb25NYW5hZ2VyJztcbmltcG9ydCBVdGlscyBmcm9tICcuLi9VdGlscyc7XG5pbXBvcnQgZHluYW1pY0pTIGZyb20gJy4uL0R5bmFtaWNKUyc7XG5pbXBvcnQgZXZlbnRNYW5hZ2VyIGZyb20gJy4uL2V2ZW50L09ic2VydmFibGUnO1xuaW1wb3J0IEV2ZW50VHlwZSBmcm9tICcuL0V2ZW50VHlwZSc7XG5pbXBvcnQgRXZlbnQgZnJvbSAnLi9FdmVudCc7XG5cbmNvbnN0IGxvY2F0aW9uID0gd2luZG93LmxvY2F0aW9uLnByb3RvY29sICsgJy8vJyArIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZTtcblxuY2xhc3MgUm91dGVBY3Rpb25IYW5kbGVyIHtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBpZiAoIVJvdXRlQWN0aW9uSGFuZGxlci5pbnN0YW5jZSkge1xuICAgICAgICAgICAgUm91dGVBY3Rpb25IYW5kbGVyLmluc3RhbmNlID0gdGhpcztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBSb3V0ZUFjdGlvbkhhbmRsZXIuaW5zdGFuY2U7XG4gICAgfVxuXG4gICAgZXhlY3V0ZShhY3Rpb25Db25maWcsIGV2ZW50LCBjb21wb25lbnQsIGN1cnJlbnRWaWV3SWQpIHtcblxuICAgICAgICAvLyBUT0RPIDogSW1wbGVtZW50IHRoaXMgZnVsbCBVUkxcbiAgICAgICAgLy9TdHJpbmcgdXJsID0gd2ViVXJsICsgXCI/dmVyc2lvbj0xLjBcIiArICh2aWV3UGF0aCAhPSBudWxsID8gXCImaWQ9XCIgKyBVUkwuZW5jb2RlUXVlcnlTdHJpbmcodmlld1BhdGgpIDogXCJcIilcbiAgICAgICAgLy8gICAgKyAodmlld1BhdGhSZXF1ZXN0RHRvICE9IG51bGwgPyBcIiZzZXJ2aWNlUmVxdWVzdD1cIiArIFVSTC5lbmNvZGVRdWVyeVN0cmluZyhyZXF1ZXN0RHRvV3JpdGVyLndyaXRlKHZpZXdQYXRoUmVxdWVzdER0bykpIDogXCJcIilcbiAgICAgICAgLy8gICAgKyAocG9ydGFsQ3VycmVudE9yZyAhPSBudWxsID8gXCImcHJvZmlsZT1cIiArIHBvcnRhbEN1cnJlbnRPcmcgOiBcIlwiKTtcblxuICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIuZW5hYmxlRm9ybU1hcmtlcnMoZmFsc2UpO1xuXG4gICAgICAgIGxldCBmb3J3YXJkID0gdHJ1ZTtcbiAgICAgICAgbGV0IHBhdGggPSBudWxsO1xuICAgICAgICBsZXQgaXNIaXN0b3J5ID0gZmFsc2U7XG4gICAgICAgIGxldCBpc1BhcmVudCA9IFV0aWxzLmlzTnVsbChhY3Rpb25Db25maWcucGFyZW50KSA/IGZhbHNlIDpcbiAgICAgICAgICAgIFV0aWxzLmV2YWx1YXRlQm9vbGVhbkV4cHJlc3Npb24oYWN0aW9uQ29uZmlnLnBhcmVudCwgY29tcG9uZW50Py5pZCwgZmFsc2UpO1xuICAgICAgICBsZXQgaXNQb3B1cCA9IFV0aWxzLmlzTnVsbChhY3Rpb25Db25maWcucG9wVXApID8gZmFsc2UgOiBhY3Rpb25Db25maWcucG9wVXA7XG4gICAgICAgIGxldCBpc1dpbmRvdyA9IFV0aWxzLmlzTnVsbChhY3Rpb25Db25maWcud2luZG93KSA/IGZhbHNlIDogYWN0aW9uQ29uZmlnLndpbmRvdztcblxuICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChhY3Rpb25Db25maWcucGF0aEV2YWx1YXRvcikpIHtcbiAgICAgICAgICAgIHBhdGggPSBkeW5hbWljSlMuZXhlY3V0ZVNjcmlwdE9iamVjdChjdXJyZW50Vmlld0lkICsgJ1ZpZXdFdmFsdWF0b3JfJyArIGV2ZW50Py5zb3VyY2UuaWQsXG4gICAgICAgICAgICAgICAgYWN0aW9uQ29uZmlnLnBhdGhFdmFsdWF0b3IpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGF0aCA9IGFjdGlvbkNvbmZpZy5wYXRoICE9PSAnQCN7aGlzdG9yeS5iYWNrfScgJiYgYXBwbGljYXRpb25NYW5hZ2VyLmlzRXhwcmVzc2lvbihhY3Rpb25Db25maWcucGF0aCkgP1xuICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5yZXNvbHZlRXhwcmVzc2lvblZhbHVlKGFjdGlvbkNvbmZpZy5wYXRoLCBldmVudD8uZGF0YSkgOiBhY3Rpb25Db25maWcucGF0aDtcblxuICAgICAgICAgICAgaWYgKCdAI3toaXN0b3J5LmJhY2t9JyA9PT0gcGF0aCB8fCAnJGhpc3RvcnkuYmFjaycgPT09IHBhdGgpIHtcbiAgICAgICAgICAgICAgICBsZXQgaGlzdG9yeUVsZW1lbnQgPSBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0UHJldmlvdXNIaXN0b3J5RWxlbWVudChpc1dpbmRvdyA/ICd3aW5kb3cnIDogJ21haW4nKTtcbiAgICAgICAgICAgICAgICBpZiAoaGlzdG9yeUVsZW1lbnQgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdDYW5ub3QgZ28gYmFjayBpbiBoaXN0b3J5LiBObyBoaXN0b3J5IGVsZW1lbnQgZm91bmQgaW4gc3RhY2suIExvYWRpbmcgZGFzaGJvYXJkJyk7XG4gICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5jbG9zZUFsbFZpZXdzKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIubmF2aWdhdGUoJy92aWV3L2Rhc2hib2FyZCcpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcGF0aCA9IGhpc3RvcnlFbGVtZW50LnBhdGg7XG4gICAgICAgICAgICAgICAgaXNIaXN0b3J5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBpc1BhcmVudCA9IGhpc3RvcnlFbGVtZW50LnBhcmVudDtcbiAgICAgICAgICAgICAgICBmb3J3YXJkID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgcGFyYW1ldGVyVmFsdWVzID0gW107XG4gICAgICAgIGlmICghVXRpbHMuaXNOdWxsKGFjdGlvbkNvbmZpZy5wYXJhbWV0ZXJzKSkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhY3Rpb25Db25maWcucGFyYW1ldGVycy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGxldCBwYXJhbWV0ZXIgPSBhY3Rpb25Db25maWcucGFyYW1ldGVyc1tpXTtcbiAgICAgICAgICAgICAgICBsZXQgcGFyYW1ldGVyVmFsdWUgPSBhcHBsaWNhdGlvbk1hbmFnZXIucmVzb2x2ZVBhcmFtZXRlclZhbHVlKHBhcmFtZXRlciwgZXZlbnQ/LmRhdGEpO1xuICAgICAgICAgICAgICAgIGxldCB2YWxpZGF0b3IgPSBwYXJhbWV0ZXIudmFsaWRhdG9yO1xuXG4gICAgICAgICAgICAgICAgaWYgKFV0aWxzLmlzTnVsbChwYXJhbWV0ZXJWYWx1ZSkgJiYgIVV0aWxzLmlzTnVsbCh2YWxpZGF0b3IpICYmXG4gICAgICAgICAgICAgICAgICAgIFV0aWxzLmV2YWx1YXRlQm9vbGVhbkV4cHJlc3Npb24odmFsaWRhdG9yLm51bGxhYmxlLCBwYXJhbWV0ZXIubmFtZSkgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1JvdXRpbmcgdG8gcGF0aCAnICsgcGF0aCArICcsIGZhaWxlZC4gQSBudWxsIHZhbHVlIGZvciBhIE5PTi1OVUxMQUJMRSBwYXJhbWV0ZXIgd2FzIGZvdW5kIC0gJyArIEpTT04uc3RyaW5naWZ5KHBhcmFtZXRlcikpO1xuICAgICAgICAgICAgICAgICAgICAvLyBUT0RPIDogRGlzcGxheSB0aGUgY29uZmlndXJlZCBlcnJvciBtZXNzYWdlIGF0IHRoZSBjb3JyZWN0IGVycm9yIHBhbmVsXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBsZXQgcGFyYW0gPSB7fTtcbiAgICAgICAgICAgICAgICBwYXJhbS5uYW1lID0gcGFyYW1ldGVyLm5hbWU7XG4gICAgICAgICAgICAgICAgcGFyYW0udmFsdWUgPSBVdGlscy5pc051bGwocGFyYW1ldGVyVmFsdWUpID8gbnVsbCA6XG4gICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlclZhbHVlLmluc3RhbmNlVHlwZSA9PT0gJ1R5cGVkVmFsdWUnID8gcGFyYW1ldGVyVmFsdWUudmFsdWUgOiBwYXJhbWV0ZXJWYWx1ZTtcblxuICAgICAgICAgICAgICAgIHBhcmFtZXRlclZhbHVlcy5wdXNoKHBhcmFtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBjdXJyZW50R3JhcGggPSBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0Q3VycmVudEdyYXBoKGlzV2luZG93ID8gJ3dpbmRvdycgOiAnbWFpbicpO1xuICAgICAgICBpZiAoJ0Aje2hvbWV9JyA9PT0gcGF0aCkge1xuICAgICAgICAgICAgYXBwbGljYXRpb25NYW5hZ2VyLm5hdmlnYXRlKCcvdmlldy91bmxvYWQnKTtcbiAgICAgICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5uYXZpZ2F0ZSgnL3ZpZXcvZGFzaGJvYXJkJylcbiAgICAgICAgfSBlbHNlIGlmIChpc0hpc3RvcnkgJiYgY3VycmVudEdyYXBoKSB7XG4gICAgICAgICAgICBpZiAoKGlzV2luZG93ICYmIGN1cnJlbnRHcmFwaC5jb25maWcuaXNXaW5kb3cpIHx8ICghaXNXaW5kb3cgJiYgIWN1cnJlbnRHcmFwaC5jb25maWcuaXNXaW5kb3cpKSB7XG4gICAgICAgICAgICAgICAgYXBwbGljYXRpb25NYW5hZ2VyLnJlbW92ZUxvYWRlZEdyYXBoKChpc1dpbmRvdyAmJiBjdXJyZW50R3JhcGguY29uZmlnLmlzV2luZG93KSA/ICd3aW5kb3cnIDogJ21haW4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIFByZS1hdXRoIGZsb3dzIChyZWdpc3RyYXRpb24gd2l6YXJkKSBsaXZlIHVuZGVyXG4gICAgICAgICAgICAvLyAvcG9ydGFsL3ZpZXdzL3JlZ2lzdHJhdGlvbi8qIGFuZCBtdXN0IGJlIGZldGNoZWQgdmlhIHRoZVxuICAgICAgICAgICAgLy8gcHVibGljIENEVUkgZW5kcG9pbnQgQU5EIHdpdGggbm8gQXV0aG9yaXphdGlvbiBoZWFkZXIuXG4gICAgICAgICAgICAvLyBTcHJpbmcgU2VjdXJpdHkncyBiZWFyZXItYXV0aCBmaWx0ZXIgdmFsaWRhdGVzICphbnkqXG4gICAgICAgICAgICAvLyBhdHRhY2hlZCB0b2tlbiAoZXZlbiBvbiBwZXJtaXRBbGwoKSBlbmRwb2ludHMpIOKAlCBzbyBhblxuICAgICAgICAgICAgLy8gZW1wdHkvc3RhbGUgdG9rZW4gZnJvbSBhbiB1bmF1dGhlbnRpY2F0ZWQgc2Vzc2lvbiByZXR1cm5zXG4gICAgICAgICAgICAvLyA0MDEgZnJvbSB0aGUgcHVibGljIGVuZHBvaW50LiBTa2lwcGluZyB0aGUgYXV0aCBoZWFkZXJcbiAgICAgICAgICAgIC8vIGhlcmUgbWlycm9ycyB0aGUgYm9vdHN0cmFwJ3Mgc2VuZFJlcXVlc3QoLi4uLCBzZWN1cmU9ZmFsc2UpLlxuICAgICAgICAgICAgY29uc3QgaXNQdWJsaWNWaWV3ID0gcGF0aCAmJiBwYXRoLnN0YXJ0c1dpdGgoJy9wb3J0YWwvdmlld3MvcmVnaXN0cmF0aW9uLycpO1xuICAgICAgICAgICAgY29uc3Qgdmlld0VuZHBvaW50ID0gaXNQdWJsaWNWaWV3ID8gJy92aWV3L3B1YmxpYy9nZXQnIDogJy92aWV3L2dldCc7XG4gICAgICAgICAgICBsZXQgdXJsID0gbG9jYXRpb24gKyBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0Q29udGV4dFJvb3QoKSArIGFwcGxpY2F0aW9uTWFuYWdlci5nZXRVSUNvbmZpZ1BhdGgoKSArIHZpZXdFbmRwb2ludCArICc/dmVyc2lvbj0xLjAmaWQ9JyArIHBhdGg7XG4gICAgICAgICAgICBzZW5kUmVxdWVzdCh1cmwsXG4gICAgICAgICAgICAgICAgKGRhdGEpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gc2VuZFJlcXVlc3QgYXV0by1kZWNvZGVzIHRoZSB7X2NkdWlfen0gd2lyZSB3cmFwIGZvclxuICAgICAgICAgICAgICAgICAgICAvLyAvdWkvYXBpL3YqLyBVUkxzIOKAlCBkYXRhIGhlcmUgaXMgdGhlIHJhdyBDRFVJIGFzc2V0LlxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNQYXJlbnQgJiYgY3VycmVudEdyYXBoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGlzV2luZG93ICYmIGN1cnJlbnRHcmFwaC5jb25maWcuaXNXaW5kb3cpIHx8ICghaXNXaW5kb3cgJiYgIWN1cnJlbnRHcmFwaC5jb25maWcuaXNXaW5kb3cpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25NYW5hZ2VyLnJlbW92ZUxvYWRlZEdyYXBoKChpc1dpbmRvdyAmJiBjdXJyZW50R3JhcGguY29uZmlnLmlzV2luZG93KSA/ICd3aW5kb3cnIDogJ21haW4nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLnR5cGUgPT09ICd2aWV3Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGN1cnJlbnRWaWV3ID0gYXBwbGljYXRpb25NYW5hZ2VyLmdldFRvcFZpZXcoaXNXaW5kb3cgPyAnd2luZG93JyA6ICdtYWluJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdmlldyA9IHt9O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRlZmF1bHRNb2RlbCA9IHt9O1xuICAgICAgICAgICAgICAgICAgICAgICAgVXRpbHMudXBkYXRlTW9kZWwocGFyYW1ldGVyVmFsdWVzLCBkZWZhdWx0TW9kZWwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmlldy5jb25maWcgPSBkYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmlldy5wYXJhbWV0ZXJzID0gcGFyYW1ldGVyVmFsdWVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmlldy5wYXJlbnQgPSBpc1BhcmVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpZXcuZ3JhcGhJZCA9IGFjdGlvbkNvbmZpZy5ncmFwaElkO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmlldy5oYW5kbGUgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBpOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldCBpZCgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhLmlkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXQgbW9kZWwoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGVmYXVsdE1vZGVsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRDaGlsZDogKGlkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlTW9kZWw6ICh2YWx1ZXMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFV0aWxzLnVwZGF0ZU1vZGVsKHZhbHVlcywgZGVmYXVsdE1vZGVsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TW9kZWxWYWx1ZTogKGtleSwgdmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGVmYXVsdE1vZGVsLmtleSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRNb2RlbFZhbHVlOiAoa2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0TW9kZWxba2V5XTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGVkOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIuYWRkVmlldyh2aWV3LCBwYXRoLCBmb3J3YXJkLCBhY3Rpb25Db25maWcucG9wVXAgPyAncG9wdXAnIDogaXNXaW5kb3cgPyAnd2luZG93JyA6ICdtYWluJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBOb25lLWV4aXN0aW5nIHJvdXRlIHRvIGVuc3VyZSB0aGF0IHRoZSBjdXJyZW50IHZpZXcgdW5sb2Fkc1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFV0aWxzLmlzTnVsbChhY3Rpb25Db25maWcucG9wVXApIHx8IGFjdGlvbkNvbmZpZy5wb3BVcCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXaW5kb3dzIGRvIG5vdCBnbyB0byB0aGUgT3V0bGV0IGluIHRoZSB2aWV3cG9ydC4gVGhleSBnZXQgcmVuZGVyZWQgaW50byB0aGUgd2luZG93IHZpZXdwb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1dpbmRvdykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2FwcGxpY2F0aW9uTWFuYWdlci5uYXZpZ2F0ZSgnL3ZpZXcvdW5sb2FkJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlZ2lzdHJhdGlvbiB3aXphcmQgbm9kZXMgbXVzdCBzdGF5IGluc2lkZSB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXItcG9ydGFsIHJvdXRlIHRyZWUg4oCUIG5hdmlnYXRpbmcgdG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gL3ZpZXcvPGlkPiBtb3VudHMgdGhlIGF1dGhlbnRpY2F0ZWQgYXBwIHNoZWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChJbnRlcmFjdGlvblBvcnRhbEFwcEhvbWUpIHdoaWNoIGZpcmVzIHVzZXItZmluZCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNldHVwL2RlZmF1bHQgYW5kIGJyZWFrcyB0aGUgcHJlLWF1dGggVVguIEtlZXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHBhdGggdW5kZXIgL3JlZ2lzdGVyLzx0eXBlPi88aWQ+IGluc3RlYWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1B1YmxpY1ZpZXcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG0gPSBwYXRoLm1hdGNoKC9eXFwvcG9ydGFsXFwvdmlld3NcXC9yZWdpc3RyYXRpb25cXC8oW14vXSspXFwvLyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0eXBlID0gKG0gJiYgbVsxXSkgfHwgJ3ZlbmRvcic7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIubmF2aWdhdGUoJy9yZWdpc3Rlci8nICsgdHlwZSArICcvJyArIGRhdGEuaWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25NYW5hZ2VyLm5hdmlnYXRlKCcvdmlldy8nICsgZGF0YS5pZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIub3BlbldpbmRvd1ZpZXcodmlldyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIub3BlblBvcHVwVmlldyh2aWV3KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChkYXRhLnR5cGUgPT09ICdncmFwaCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuaXNXaW5kb3cgPSBpc1dpbmRvdztcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5sb2FkR3JhcGgoaXNQYXJlbnQsIGRhdGEsIHBhcmFtZXRlclZhbHVlcywgKGlzUG9wdXAgPyAncG9wdXAnIDogaXNXaW5kb3cgPyAnd2luZG93JyA6ICdtYWluJykpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwgKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgICAgICAgICB9LCAhaXNQdWJsaWNWaWV3LCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmNvbnN0IGluc3RhbmNlID0gbmV3IFJvdXRlQWN0aW9uSGFuZGxlcigpO1xuT2JqZWN0LmZyZWV6ZShpbnN0YW5jZSk7XG5cbmV4cG9ydCBkZWZhdWx0IGluc3RhbmNlO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxVQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxtQkFBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUcsTUFBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUksVUFBQSxHQUFBTCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUssV0FBQSxHQUFBTixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQU0sVUFB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