@agilemotion/oui-react-js 2.0.26 → 2.0.27

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.
@@ -34,6 +34,7 @@ var _CursorOverlay = _interopRequireDefault(require("../interaction/CursorOverla
34
34
  var _reactHtmlRenderer = _interopRequireDefault(require("react-html-renderer"));
35
35
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
36
36
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
37
+ function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
37
38
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
38
39
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
39
40
  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
@@ -134,7 +135,7 @@ const useStyles = (0, _styles.makeStyles)(theme => ({
134
135
  }
135
136
  }));
136
137
  const DataGrid = exports.DataGrid = /*#__PURE__*/_react.default.memo(props => {
137
- var _config$attributes, _props$config2, _props$config$attribu, _props$config$attribu2, _props$config$attribu3;
138
+ var _config$attributes, _props$config3, _props$config$attribu, _props$config$attribu2, _props$config$attribu3;
138
139
  const classes = useStyles();
139
140
  const [order, setOrder] = _react.default.useState('desc');
140
141
  const [config] = _react.default.useState(_Utils.default.parseConfig(props.config, props.viewId));
@@ -898,17 +899,29 @@ const DataGrid = exports.DataGrid = /*#__PURE__*/_react.default.memo(props => {
898
899
  // TableCellContent.jsx.
899
900
  _Utils.default.readNestedProperty(row, !_Utils.default.isNull(column.dataBinding) ? column.dataBinding : column.id), /*#__PURE__*/_react.default.createElement("br", null)) : null));
900
901
  }
901
- function renderTile(row, key) {
902
+ function renderTile(row, key, colsInRow) {
902
903
  const isItemSelected = isSelected(row.id);
903
- return /*#__PURE__*/_react.default.createElement(_Grid.default, {
904
- item: true,
905
- xs: true,
906
- style: _Utils.default.mergeObjects(props.config.tileStyle, {
907
- height: '200px',
908
- minWidth: '200px'
909
- }),
904
+ // When itemsPerRow is configured, size each tile to an exact fraction of the row (1 / colsInRow)
905
+ // so the last, partial row distributes its items evenly across the full width. Otherwise fall
906
+ // back to the auto-flow `xs` layout (equal width, wraps at minWidth).
907
+ const fixedWidth = colsInRow > 0;
908
+ const widthStyle = fixedWidth ? {
909
+ flexBasis: "".concat(100 / colsInRow, "%"),
910
+ maxWidth: "".concat(100 / colsInRow, "%"),
911
+ flexGrow: 0
912
+ } : {
913
+ minWidth: '200px'
914
+ };
915
+ return /*#__PURE__*/_react.default.createElement(_Grid.default, _extends({
916
+ item: true
917
+ }, fixedWidth ? {} : {
918
+ xs: true
919
+ }, {
920
+ style: _Utils.default.mergeObjects(props.config.tileStyle, _objectSpread({
921
+ height: '200px'
922
+ }, widthStyle)),
910
923
  key: key
911
- }, /*#__PURE__*/_react.default.createElement(_Button.default, {
924
+ }), /*#__PURE__*/_react.default.createElement(_Button.default, {
912
925
  variant: "outlined",
913
926
  color: "secondary",
914
927
  style: {
@@ -921,6 +934,7 @@ const DataGrid = exports.DataGrid = /*#__PURE__*/_react.default.memo(props => {
921
934
  }, getTileLabel(row)));
922
935
  }
923
936
  function renderTiles() {
937
+ var _props$config2;
924
938
  if (!rows || rows.length === 0) {
925
939
  var _props$config;
926
940
  // Tile grid has no native empty-row affordance like the table
@@ -943,11 +957,22 @@ const DataGrid = exports.DataGrid = /*#__PURE__*/_react.default.memo(props => {
943
957
  }
944
958
  }, message);
945
959
  }
960
+
961
+ // itemsPerRow (CDUI config): render N tiles per row and distribute the last, partial row evenly
962
+ // across the full width — e.g. itemsPerRow=3 over 10 items -> 3-3-3-1 (last tile spans the row);
963
+ // over 11 -> 3-3-3-2 (last two split the row). Unset/0 keeps the auto-flow layout.
964
+ const itemsPerRow = Number((_props$config2 = props.config) === null || _props$config2 === void 0 ? void 0 : _props$config2.itemsPerRow) || 0;
965
+ let lastRowStart = -1;
966
+ let lastRowCount = 0;
967
+ if (itemsPerRow > 0) {
968
+ const remainder = rows.length % itemsPerRow;
969
+ lastRowCount = remainder === 0 ? itemsPerRow : remainder;
970
+ lastRowStart = rows.length - lastRowCount;
971
+ }
946
972
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, rows.map((row, index) => {
947
- const isItemSelected = isSelected(row.id);
948
- const labelId = "enhanced-table-checkbox-".concat(index);
949
973
  row.index = index;
950
- return renderTile(row, index);
974
+ const colsInRow = itemsPerRow > 0 ? index >= lastRowStart ? lastRowCount : itemsPerRow : 0;
975
+ return renderTile(row, index, colsInRow);
951
976
  }));
952
977
  }
953
978
  function createColumnLayoutHandle(column, index) {
@@ -1037,7 +1062,7 @@ const DataGrid = exports.DataGrid = /*#__PURE__*/_react.default.memo(props => {
1037
1062
  fontSize: '0.875rem',
1038
1063
  fontStyle: 'italic'
1039
1064
  }
1040
- }, ((_props$config2 = props.config) === null || _props$config2 === void 0 ? void 0 : _props$config2.emptyMessage) || 'No items to show') :
1065
+ }, ((_props$config3 = props.config) === null || _props$config3 === void 0 ? void 0 : _props$config3.emptyMessage) || 'No items to show') :
1041
1066
  /*#__PURE__*/
1042
1067
  // spacing={2} = 16px gap between tile cards (MUI 1 unit = 8px).
1043
1068
  _react.default.createElement(_Grid.default, {
@@ -1164,9 +1189,10 @@ const DataGrid = exports.DataGrid = /*#__PURE__*/_react.default.memo(props => {
1164
1189
  },
1165
1190
  align: "left",
1166
1191
  className: !props.disabled && isItemSelected && !_Utils.default.isNull(column.editor) ? 'editCell' : null,
1167
- key: index + "_" + column.id,
1192
+ key: index + "_" + column.id + '_' + row.id,
1168
1193
  onClick: event => handleCellClick(event, row.id, column)
1169
1194
  }, /*#__PURE__*/_react.default.createElement(_TableCellContent.default, {
1195
+ key: "tcc_" + index + "_" + column.id + '_' + row.id,
1170
1196
  wrap: wrap,
1171
1197
  onRowError: rowErrorHandler,
1172
1198
  handle: createCellEditorHandle(column),
@@ -1203,4 +1229,4 @@ const DataGrid = exports.DataGrid = /*#__PURE__*/_react.default.memo(props => {
1203
1229
  onRowsPerPageChange: handleChangeRowsPerPage
1204
1230
  })) : null) : null);
1205
1231
  });
1206
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9zdHlsZXMiLCJfcmVhY3RTdXBlclJlc3BvbnNpdmVUYWJsZSIsIl9DaGVja2JveCIsIl9VdGlscyIsIl9SZXN0U2VydmljZSIsIl9EYXRhR3JpZEZpbHRlciIsIl9EYXRhR3JpZEhlYWRpbmciLCJfVGFibGVDZWxsQ29udGVudCIsIl9UYWJsZVBhZ2luYXRpb24iLCJfY29sb3JzIiwiX0V2ZW50IiwiX09ic2VydmFibGUiLCJfRXZlbnRUeXBlIiwiX0dyaWQiLCJfQnV0dG9uIiwiJCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX0FsZXJ0IiwiX0FwcGxpY2F0aW9uTWFuYWdlciIsIl9MYXlvdXQiLCJfRHluYW1pY0pTIiwiX1N3aXRjaCIsIl9Gb3JtQ29udHJvbExhYmVsIiwiX0dyYWJDb250ZXh0IiwiX0N1cnNvck92ZXJsYXkiLCJfcmVhY3RIdG1sUmVuZGVyZXIiLCJlIiwidCIsIldlYWtNYXAiLCJyIiwibiIsIl9fZXNNb2R1bGUiLCJvIiwiaSIsImYiLCJfX3Byb3RvX18iLCJkZWZhdWx0IiwiaGFzIiwiZ2V0Iiwic2V0IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiX3RvUHJvcGVydHlLZXkiLCJ2YWx1ZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiX3RvUHJpbWl0aXZlIiwiU3ltYm9sIiwidG9QcmltaXRpdmUiLCJUeXBlRXJyb3IiLCJTdHJpbmciLCJOdW1iZXIiLCJIYW5kbGViYXJzIiwicmVnaXN0ZXJIZWxwZXIiLCJlcSIsInYxIiwidjIiLCJuZSIsImx0IiwiZ3QiLCJsdGUiLCJndGUiLCJhbmQiLCJBcnJheSIsInByb3RvdHlwZSIsImV2ZXJ5IiwiQm9vbGVhbiIsIm9yIiwic2xpY2UiLCJzb21lIiwiTVVMVElfU0VMRUNUX0NIRUNLQk9YX0NPTF9XSURUSCIsImV4cG9ydHMiLCJldmFsdWF0ZVRhYmxlQ2VsbFdpZHRoIiwibXVsdGlTZWxlY3QiLCJjb2x1bW4iLCJjb2x1bW5Db3VudCIsIndpZHRoIiwiYXBwbGljYXRpb25NYW5hZ2VyIiwiaXNFeHByZXNzaW9uIiwiYXR0cmlidXRlcyIsImR5bmFtaWNKUyIsImV4ZWN1dGVTY3JpcHQiLCJjb25jYXQiLCJpZCIsIlV0aWxzIiwiaXNOdWxsIiwiZGVzYyIsImEiLCJiIiwib3JkZXJCeSIsInN0YWJsZVNvcnQiLCJhcnJheSIsImNtcCIsInN0YWJpbGl6ZWRUaGlzIiwibWFwIiwiZWwiLCJpbmRleCIsInNvcnQiLCJvcmRlciIsImdldFNvcnRpbmciLCJ1c2VTdHlsZXMiLCJtYWtlU3R5bGVzIiwidGhlbWUiLCJyb290IiwicGFwZXIiLCJoZWlnaHQiLCJwb3NpdGlvbiIsInpJbmRleCIsInNjcm9sbFBhZGRpbmciLCJwYWRkaW5nIiwibm9TY3JvbGxQYWRkaW5nIiwidGFibGVCb2R5IiwiZGlzcGxheSIsIm92ZXJmbG93WSIsInRhYmxlU2VsZWN0ZWQiLCJiYWNrZ3JvdW5kQ29sb3IiLCJncmV5MzAwIiwiYmFja2dyb3VuZCIsInRhYmxlUm93IiwidGFibGVXcmFwcGVyIiwidGFibGUiLCJ2aXN1YWxseUhpZGRlbiIsImJvcmRlciIsImNsaXAiLCJtYXJnaW4iLCJ0b3AiLCJEYXRhR3JpZCIsIlJlYWN0IiwibWVtbyIsInByb3BzIiwiX2NvbmZpZyRhdHRyaWJ1dGVzIiwiX3Byb3BzJGNvbmZpZzIiLCJfcHJvcHMkY29uZmlnJGF0dHJpYnUiLCJfcHJvcHMkY29uZmlnJGF0dHJpYnUyIiwiX3Byb3BzJGNvbmZpZyRhdHRyaWJ1MyIsImNsYXNzZXMiLCJzZXRPcmRlciIsInVzZVN0YXRlIiwiY29uZmlnIiwicGFyc2VDb25maWciLCJ2aWV3SWQiLCJzZXRPcmRlckJ5Iiwic2VsZWN0ZWQiLCJzZXRTZWxlY3RlZCIsInRvdGFsTnVtYmVyT2ZSb3dzIiwic2V0VG90YWxOdW1iZXJPZlJvd3MiLCJjcml0ZXJpYSIsInBhZ2UiLCJzZXRQYWdlIiwicm93cyIsInNldFJvd3MiLCJkZWxldGVkUm93cyIsInNldERlbGV0ZWRSb3dzIiwiZWRpdGFibGUiLCJzZXRFZGl0YWJsZSIsInNjcm9sbFdpZHRoIiwic2V0U2Nyb2xsV2lkdGgiLCJyb3dzUGVyUGFnZU9wdGlvbnMiLCJyb3dzUGVyUGFnZUxvYWRpbmciLCJzZXRSb3dzUGVyUGFnZUxvYWRpbmciLCJyb3dzUGVyUGFnZSIsInNldFJvd3NQZXJQYWdlIiwicGFnZVNpemUiLCJoaWdobGlnaHRSb3dTZWxlY3Rpb24iLCJ1c2VSZWYiLCJkaXNhYmxlUm93U2VsZWN0aW9uIiwiY2VsbHMiLCJoZWFkaW5nSGFuZGxlIiwiZmlsdGVySGFuZGxlIiwiY29sdW1uTGF5b3V0SGFuZGxlcyIsImVkaXRvckhhbmRsZXMiLCJyb3dFcnJvck1hcCIsInZpc2libGUiLCJzZXRWaXNpYmxlIiwid3JhcCIsInNldFdyYXAiLCJyb3dDb3VudCIsInJvd3NSZWYiLCJub3RlS2V5IiwiY29sdW1uV2lkdGhzIiwiZHJhZ1NwZWMiLCJyb3dHcmFiU3BlYyIsInJvdyIsInJvd3NHcmFiYmFibGUiLCJlbmFibGVkIiwiYXBpIiwicGFyYW1ldGVycyIsImlzRmlsdGVyYWJsZSIsImdldFBhcmFtZXRlcnMiLCJzZWxlY3Rpb24iLCJzZWxlY3RlZFJvd3MiLCJqIiwiY29sdW1uRGF0YUJpbmRpbmdzIiwiY29sdW1uTmFtZXMiLCJjb2x1bW5zIiwiZGF0YUJpbmRpbmciLCJnZXRDaGlsZHJlbiIsImNoaWxkcmVuIiwiY2hpbGQiLCJwcm9wZXJ0aWVzIiwiZ2V0T3duUHJvcGVydHlOYW1lcyIsInByb3BlcnR5IiwiY29sdW1uTGF5b3V0SGFuZGxlIiwibW9yZUNoaWxkcmVuIiwiZWRpdG9ySGFuZGxlIiwibG9hZERhdGEiLCJhY3Rpb25Db25maWciLCJldmVudCIsInNlYXJjaCIsImRlbGV0ZVNlbGVjdGVkUm93cyIsIm5ld1Jvd3MiLCJpc1NlbGVjdGVkIiwiZ2V0U2VsZWN0ZWRSb3dzIiwic3BsaWNlIiwibmV3Um93Iiwib25TZWxlY3Rpb25DaGFuZ2UiLCJ1cGRhdGVTY3JvbGxCYXJQYWRkaW5nIiwiY3VycmVudCIsInZhbHVlQ2hhbmdlQ2FsbGJhY2siLCJjbGVhciIsIkV2ZW50IiwiaGFuZGxlIiwiZXZlbnRNYW5hZ2VyIiwiZmlyZUV2ZW50IiwiRXZlbnRUeXBlIiwiU0VMRUNUSU9OX0NIQU5HRSIsImRlbGV0ZVJvd3MiLCJyb3dJZHMiLCJpZFNldCIsIlNldCIsInJlbWFpbmluZyIsInNlbGVjdCIsImFkZFJvd3MiLCJvYnNlcnZlUm93IiwibmV3U2VsZWN0aW9uIiwibnVtYmVyT2ZQYWdlcyIsInJlZnJlc2giLCJwYXJzZWRDb25maWciLCJldmFsdWF0ZUJvb2xlYW5FeHByZXNzaW9uIiwiZm9ybUFwaSIsImhhbmRsZVJvd0dyYWJUb2dnbGUiLCJpc1Jvd0dyYWJiYWJsZSIsIkdyYWJDb250ZXh0IiwiaXNBY3RpdmUiLCJncmFiIiwicm93SW5kZXgiLCJjb21wb25lbnRJZCIsIkN1cnNvck92ZXJsYXkiLCJzaG93IiwiUk9XX0dSQUJfU1RBUlQiLCJ0Ym9keSIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJvZmZzZXRXaWR0aCIsImNsaWVudFdpZHRoIiwid2luZG93Iiwib25yZXNpemUiLCJoYW5kbGVSZXF1ZXN0U29ydCIsImlzRGVzYyIsImhhbmRsZVNlbGVjdEFsbENsaWNrIiwidGFyZ2V0IiwiY2hlY2tlZCIsIm5ld1NlbGVjdGVkcyIsIm5hbWUiLCJlbmFibGVGb3JtTWFya2VycyIsImRvSGFuZGxlQ2xpY2siLCJleGlzdGluZ0luZGV4IiwiaW5kZXhPZiIsIm5ld1NlbGVjdGVkIiwiZmlyZVNlbGVjdGlvbkV2ZW50IiwiZ3JpZFR5cGUiLCJpc1Jvd0RyYWdEaXNhYmxlZCIsImRpc2FibGVkV2hlbiIsImV4ZWN1dGVTY3JpcHRPYmplY3QiLCJzZXRDdXJzb3IiLCJjdXJzb3IiLCJib2R5Iiwic3R5bGUiLCJoYW5kbGVSb3dNb3VzZUVudGVyIiwiaGFuZGxlUm93TW91c2VMZWF2ZSIsImhhbmRsZUNsaWNrIiwiY2xvc2VzdCIsInN0b3BQcm9wYWdhdGlvbiIsIm9uQ2VsbFNlbGVjdGlvbkNoYW5nZSIsImhhbmRsZUNlbGxDbGljayIsImZpZWxkVHlwZSIsImhhbmRsZUNoYW5nZVBhZ2UiLCJuZXdQYWdlIiwiY3VycmVudFBhZ2UiLCJoYW5kbGVDaGFuZ2VSb3dzUGVyUGFnZSIsInByb2Nlc3NEYXRhIiwiZGF0YSIsImNvbmYiLCJ0b3RhbE51bWJlck9mUmVjb3JkcyIsInJlY29yZHMiLCJ1cGRhdGVSb3dDbGFzc2VzIiwidGFibGVSb3dzIiwidW5kZWZpbmVkIiwic2VydmljZSIsImRhdGFTZXJ2aWNlIiwic2VydmljZVR5cGUiLCJ0eXBlIiwibWV0aG9kIiwiaW52b2tlUnBjIiwiaW52b2tlUmVzdCIsImNvbXBvbmVudCIsInRoZW4iLCJyZXN1bHQiLCJjYXRjaCIsImNvbnNvbGUiLCJlcnJvciIsImVycm9yVHlwZSIsInB1Ymxpc2hFcnJvck1lc3NhZ2UiLCJFcnJvciIsInJlc29sdmVQYXJhbWV0ZXJDb25maWdWYWx1ZSIsInVzZUVmZmVjdCIsInVzZUxheW91dEVmZmVjdCIsImV2ZW50SGFuZGxpbmdDb25maWciLCJzdWJzY3JpcHRpb25zIiwiYWRkU3Vic2NyaXB0aW9ucyIsImFkZFN5c3RlbVN1YnNjcmlwdGlvbnMiLCJpc0VkaXRhYmxlIiwidmlzaWJsZUNvbHVtbkNvdW50IiwiaGlkZGVuIiwiZ2V0Q29tcG9uZW50QXR0cmlidXRlIiwic2VsZWN0aW9uTW9kZSIsImVkaXRvciIsImRlZmF1bHRFZGl0b3IiLCJkYXRhUXVlcnlOYW1lIiwiaGFzTG9hZEV2ZW50IiwibG9hZFN1YnNjcmlwdGlvbnMiLCJzdWJzY3JpcHRpb24iLCJldmVudFR5cGUiLCJsb2FkU3Vic2NyaXB0aW9uIiwiYWN0aW9ucyIsImFjdGlvbiIsImFjdGlvblR5cGUiLCJhdXRvTG9hZERhdGEiLCJDT01QT05FTlRfTE9BRCIsImFkZFJvd0ZvY3VzTGlzdGVuZXIiLCJmb2N1c291dCIsInNlbGVjdGVkRWxlbWVudCIsInJvd0F0dHJpYnV0ZXMiLCJjbGFzc0V2YWx1YXRvciIsImNsYXNzTmFtZSIsInVwZGF0ZVJvd1JlYWRPbmx5U3RhdHVzIiwicmVhZE9ubHlFdmFsdWF0b3IiLCJyZWFkT25seSIsInVwZGF0ZUNvbHVtblJlYWRPbmx5U3RhdHVzIiwiY29sdW1uUmVhZE9ubHkiLCJwcm9jZXNzU3lzdGVtR2VuZXJhdGVkU3Vic2NyaXB0aW9ucyIsIkRBVEFfQVJSSVZFRCIsIm9uUm93c0xvYWRlZCIsImF1dG9TZWxlY3QiLCJ0aWxlQXV0b1NlbGVjdCIsImZpcnN0Um93SWQiLCJmaXJzdFJvd0xpc3QiLCJzZWxlY3Rpb25FdmVudCIsIlJPV19ERUxFVEVEIiwicm93VmFsdWVzIiwiZWRpdG9yQ2hhbmdlSGFuZGxlciIsInJvd0lkIiwiZmllbGQiLCJ1cGRhdGVOZXN0ZWRQcm9wZXJ0eSIsImNyZWF0ZUNlbGwiLCJjb2x1bW5OYW1lIiwiY2VsbEhhbmRsZSIsInJvd0NlbGxzIiwiY2VsbHNFbnRyeSIsInJlZnJlc2hDZWxsIiwiY2VsbCIsInJlbW92ZUFsbFJvd0Vycm9yc0J5Q29sdW1uIiwicm93RXJyb3JzIiwicm93RXJyb3JIYW5kbGVyIiwiZmluZCIsInJvd0Vycm9yIiwiaXNSb3dFcnJvcnNFbXB0eSIsImtleSIsInZhbHVlUm93cyIsInZhbHVlQ2hhbmdlSGFuZGxlciIsInRpbGVUZW1wbGF0ZUNhY2hlUmVmIiwiZm4iLCJnZXRUaWxlTGFiZWwiLCJ0aWxlRGlzcGxheVRlbXBsYXRlIiwiY29tcGlsZSIsImh0bWwiLCJjcmVhdGVFbGVtZW50IiwiY291bnRlciIsInJlYWROZXN0ZWRQcm9wZXJ0eSIsInJlbmRlclRpbGUiLCJpc0l0ZW1TZWxlY3RlZCIsIml0ZW0iLCJ4cyIsIm1lcmdlT2JqZWN0cyIsInRpbGVTdHlsZSIsIm1pbldpZHRoIiwidmFyaWFudCIsImNvbG9yIiwib25DbGljayIsInJlbmRlclRpbGVzIiwiX3Byb3BzJGNvbmZpZyIsIm1lc3NhZ2UiLCJlbXB0eU1lc3NhZ2UiLCJhbGlnbkl0ZW1zIiwianVzdGlmeUNvbnRlbnQiLCJtaW5IZWlnaHQiLCJmb250U2l6ZSIsImZvbnRTdHlsZSIsIkZyYWdtZW50IiwibGFiZWxJZCIsImNyZWF0ZUNvbHVtbkxheW91dEhhbmRsZSIsImNyZWF0ZUNlbGxFZGl0b3JIYW5kbGUiLCJoYXNCb3JkZXIiLCJtZXJnZVN0eWxlcyIsImJvcmRlclJhZGl1cyIsImZsZXhEaXJlY3Rpb24iLCJub3RlcyIsIm5vdGUiLCJtYXJnaW5Cb3R0b20iLCJtZXNzYWdlVHlwZSIsImluY2x1ZGVzIiwiZmxleCIsImJveFNpemluZyIsImZpbHRlcldyYXBwZXJDbGFzcyIsIm9uRmlsdGVyU3VibWl0Iiwib25SZXF1ZXN0U29ydCIsImNvbnRhaW5lciIsInNwYWNpbmciLCJib3JkZXJCb3R0b20iLCJjb250cm9sIiwib25DaGFuZ2UiLCJzeCIsImxhYmVsIiwiVGFibGUiLCJjZWxsU3BhY2luZyIsIm51bVNlbGVjdGVkIiwib25TZWxlY3RBbGxDbGljayIsInJlc2l6ZUhhbmRsZXIiLCJUYm9keSIsIm1heEhlaWdodCIsImJvZHlNYXhIZWlnaHQiLCJkZWZhdWx0Um93U3R5bGUiLCJmbGV4V3JhcCIsIlRyIiwib25Nb3VzZUVudGVyIiwib25Nb3VzZUxlYXZlIiwib25Eb3VibGVDbGljayIsIm9uUm93RG91YmxlQ2xpY2siLCJyb2xlIiwidGFiSW5kZXgiLCJUZCIsImlucHV0UHJvcHMiLCJfcm93JGNvbHVtblJlYWRPbmx5IiwiX2NvbHVtbiRlZGl0b3IiLCJsYXlvdXQiLCJhbGlnbiIsImRpc2FibGVkIiwiZm9ybSIsIkxheW91dCIsIkpTT04iLCJwYXJzZSIsInN0cmluZ2lmeSIsImNvbCIsInBhcmVudCIsIm9uUm93RXJyb3IiLCJyZWZDYWxsYmFjayIsInZhbGlkYXRvciIsImNvbHVtbkNvbmZpZyIsImNvbnRlbnRUeXBlIiwiY2VsbEZvcm1hdHRlciIsInBhZ2luYXRpb24iLCJwYWduYXRpb24iLCJjb3VudCIsImJhY2tJY29uQnV0dG9uUHJvcHMiLCJuZXh0SWNvbkJ1dHRvblByb3BzIiwib25QYWdlQ2hhbmdlIiwib25Sb3dzUGVyUGFnZUNoYW5nZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9EYXRhR3JpZC5qc3giXSwic291cmNlc0NvbnRlbnQiOlsi77u/aW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7bWFrZVN0eWxlc30gZnJvbSAnQG11aS9zdHlsZXMnO1xuaW1wb3J0IHtUYWJsZSwgVGJvZHksIFRkLCBUcn0gZnJvbSAncmVhY3Qtc3VwZXItcmVzcG9uc2l2ZS10YWJsZSc7XG5pbXBvcnQgJ3JlYWN0LXN1cGVyLXJlc3BvbnNpdmUtdGFibGUvZGlzdC9TdXBlclJlc3BvbnNpdmVUYWJsZVN0eWxlLmNzcyc7XG5pbXBvcnQgQ2hlY2tib3ggZnJvbSAnQG11aS9tYXRlcmlhbC9DaGVja2JveCc7XG5pbXBvcnQgVXRpbHMgZnJvbSAnLi4vVXRpbHMnO1xuaW1wb3J0ICcuL0RhdGFHcmlkLmNzcyc7XG5pbXBvcnQge2ludm9rZVJlc3QsIGludm9rZVJwY30gZnJvbSAnLi4vUmVzdFNlcnZpY2UnO1xuaW1wb3J0IERhdGFHcmlkRmlsdGVyIGZyb20gJy4vRGF0YUdyaWRGaWx0ZXInO1xuaW1wb3J0IERhdGFHcmlkSGVhZGluZyBmcm9tICcuL0RhdGFHcmlkSGVhZGluZyc7XG5pbXBvcnQgVGFibGVDZWxsQ29udGVudCBmcm9tICcuL1RhYmxlQ2VsbENvbnRlbnQnO1xuaW1wb3J0IFRhYmxlUGFnaW5hdGlvbiBmcm9tICdAbXVpL21hdGVyaWFsL1RhYmxlUGFnaW5hdGlvbic7XG5pbXBvcnQge2dyZXkzMDB9IGZyb20gJ21hdGVyaWFsLXVpL3N0eWxlcy9jb2xvcnMnO1xuaW1wb3J0IEV2ZW50IGZyb20gJy4uL2V2ZW50L0V2ZW50JztcbmltcG9ydCBldmVudE1hbmFnZXIgZnJvbSAnLi4vZXZlbnQvT2JzZXJ2YWJsZSc7XG5pbXBvcnQgRXZlbnRUeXBlIGZyb20gJy4uL2V2ZW50L0V2ZW50VHlwZSc7XG5pbXBvcnQgR3JpZCBmcm9tICdAbXVpL21hdGVyaWFsL0dyaWQnO1xuaW1wb3J0IEJ1dHRvbiBmcm9tICdAbXVpL21hdGVyaWFsL0J1dHRvbic7XG5pbXBvcnQgKiBhcyAkIGZyb20gJ2pxdWVyeSc7XG5pbXBvcnQgQWxlcnQgZnJvbSAncmVhY3QtYm9vdHN0cmFwL0FsZXJ0JztcbmltcG9ydCBhcHBsaWNhdGlvbk1hbmFnZXIgZnJvbSAnLi4vQXBwbGljYXRpb25NYW5hZ2VyJztcbmltcG9ydCB7TGF5b3V0fSBmcm9tICcuL2xheW91dC9MYXlvdXQnO1xuaW1wb3J0IGR5bmFtaWNKUyBmcm9tIFwiLi4vRHluYW1pY0pTXCI7XG5pbXBvcnQgU3dpdGNoIGZyb20gJ0BtdWkvbWF0ZXJpYWwvU3dpdGNoJztcbmltcG9ydCBGb3JtQ29udHJvbExhYmVsIGZyb20gJ0BtdWkvbWF0ZXJpYWwvRm9ybUNvbnRyb2xMYWJlbCc7XG5pbXBvcnQgR3JhYkNvbnRleHQgZnJvbSAnLi4vaW50ZXJhY3Rpb24vR3JhYkNvbnRleHQnO1xuaW1wb3J0IEN1cnNvck92ZXJsYXkgZnJvbSBcIi4uL2ludGVyYWN0aW9uL0N1cnNvck92ZXJsYXlcIjtcbmltcG9ydCBIVE1MUmVuZGVyZXIgZnJvbSAncmVhY3QtaHRtbC1yZW5kZXJlcic7XG5cbmNvbnN0IEhhbmRsZWJhcnMgPSByZXF1aXJlKCdoYW5kbGViYXJzJyk7XG5cbi8vIFJlZ2lzdGVyIHRoZSBzYW1lIGNvbnZlbmllbmNlIGhlbHBlcnMgSHRtbFBhbmVsIGV4cG9zZXMgc28gYVxuLy8gdGlsZURpc3BsYXlUZW1wbGF0ZSBoYXMgYWNjZXNzIHRvIHt7I2lmIChlcSAuLi4pfX0gLyB7eyNpZiAoZ3QgLi4uKX19IGV0Yy5cbi8vIElkZW1wb3RlbnQgb24gbXVsdGlwbGUgaW1wb3J0cyDigJQgSGFuZGxlYmFycy5yZWdpc3RlckhlbHBlciBqdXN0IG92ZXJ3cml0ZXMuXG5IYW5kbGViYXJzLnJlZ2lzdGVySGVscGVyKHtcbiAgICBlcTogKHYxLCB2MikgPT4gdjEgPT09IHYyLFxuICAgIG5lOiAodjEsIHYyKSA9PiB2MSAhPT0gdjIsXG4gICAgbHQ6ICh2MSwgdjIpID0+IHYxIDwgdjIsXG4gICAgZ3Q6ICh2MSwgdjIpID0+IHYxID4gdjIsXG4gICAgbHRlOiAodjEsIHYyKSA9PiB2MSA8PSB2MixcbiAgICBndGU6ICh2MSwgdjIpID0+IHYxID49IHYyLFxuICAgIGFuZCgpIHsgcmV0dXJuIEFycmF5LnByb3RvdHlwZS5ldmVyeS5jYWxsKGFyZ3VtZW50cywgQm9vbGVhbik7IH0sXG4gICAgb3IoKSB7IHJldHVybiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDAsIC0xKS5zb21lKEJvb2xlYW4pOyB9XG59KTtcblxuZXhwb3J0IGNvbnN0IE1VTFRJX1NFTEVDVF9DSEVDS0JPWF9DT0xfV0lEVEggPSA2NDtcblxuZnVuY3Rpb24gZXZhbHVhdGVUYWJsZUNlbGxXaWR0aChtdWx0aVNlbGVjdCwgY29sdW1uLCBjb2x1bW5Db3VudCkge1xuXG4gICAgbGV0IHdpZHRoID0gYXBwbGljYXRpb25NYW5hZ2VyLmlzRXhwcmVzc2lvbihjb2x1bW4uYXR0cmlidXRlc1snd2lkdGgnXSkgP1xuICAgICAgICBkeW5hbWljSlMuZXhlY3V0ZVNjcmlwdChgcG9wdXBUaXRsZV8ke2NvbHVtbi5pZH1gLGNvbHVtbi5hdHRyaWJ1dGVzWyd3aWR0aCddLCBjb2x1bW4pIDogY29sdW1uLmF0dHJpYnV0ZXNbJ3dpZHRoJ107XG5cbiAgICByZXR1cm4gbXVsdGlTZWxlY3QgPT09IHRydWUgP1xuICAgICAgICAnY2FsYygnICsgKCFVdGlscy5pc051bGwod2lkdGgpID8gd2lkdGggOlxuICAgICAgICAgICAgKDEwMCAvIGNvbHVtbkNvdW50KSArICclJykgKyAnIC0gJyArIChNVUxUSV9TRUxFQ1RfQ0hFQ0tCT1hfQ09MX1dJRFRIIC8gY29sdW1uQ291bnQpICsgJ3B4KSdcbiAgICAgICAgOlxuICAgICAgICAodHlwZW9mIHdpZHRoICE9PSAndW5kZWZpbmVkJyA/IHdpZHRoIDogKDEwMCAvIGNvbHVtbkNvdW50KSArICclJyk7XG59XG5cbmZ1bmN0aW9uIGRlc2MoYSwgYiwgb3JkZXJCeSkge1xuICAgIGlmIChiW29yZGVyQnldIDwgYVtvcmRlckJ5XSkge1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgfVxuICAgIGlmIChiW29yZGVyQnldID4gYVtvcmRlckJ5XSkge1xuICAgICAgICByZXR1cm4gMTtcbiAgICB9XG4gICAgcmV0dXJuIDA7XG59XG5cbmZ1bmN0aW9uIHN0YWJsZVNvcnQoYXJyYXksIGNtcCkge1xuICAgIGNvbnN0IHN0YWJpbGl6ZWRUaGlzID0gYXJyYXkubWFwKChlbCwgaW5kZXgpID0+IFtlbCwgaW5kZXhdKTtcbiAgICBzdGFiaWxpemVkVGhpcy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgIGNvbnN0IG9yZGVyID0gY21wKGFbMF0sIGJbMF0pO1xuICAgICAgICBpZiAob3JkZXIgIT09IDApIHJldHVybiBvcmRlcjtcbiAgICAgICAgcmV0dXJuIGFbMV0gLSBiWzFdO1xuICAgIH0pO1xuICAgIHJldHVybiBzdGFiaWxpemVkVGhpcy5tYXAoZWwgPT4gZWxbMF0pO1xufVxuXG5mdW5jdGlvbiBnZXRTb3J0aW5nKG9yZGVyLCBvcmRlckJ5KSB7XG4gICAgcmV0dXJuIG9yZGVyID09PSAnZGVzYycgPyAoYSwgYikgPT4gZGVzYyhhLCBiLCBvcmRlckJ5KSA6IChhLCBiKSA9PiAtZGVzYyhhLCBiLCBvcmRlckJ5KTtcbn1cblxuY29uc3QgdXNlU3R5bGVzID0gbWFrZVN0eWxlcyh0aGVtZSA9PiAoe1xuICAgIHJvb3Q6IHtcbiAgICAgICAgd2lkdGg6ICcxMDAlJ1xuICAgIH0sXG4gICAgcGFwZXI6IHtcbiAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICB6SW5kZXg6ICcwJyxcbiAgICB9LFxuICAgIHNjcm9sbFBhZGRpbmc6IHtcbiAgICAgICAgcGFkZGluZzogJzhweCAhaW1wb3J0YW50J1xuICAgIH0sXG4gICAgbm9TY3JvbGxQYWRkaW5nOiB7XG4gICAgICAgIHBhZGRpbmc6ICcwICFpbXBvcnRhbnQnLFxuICAgICAgICB3aWR0aDogJzFweCAhaW1wb3J0YW50J1xuICAgIH0sXG4gICAgdGFibGVCb2R5OiB7XG4gICAgICAgIGRpc3BsYXk6ICdibG9jaycsXG4gICAgICAgIG92ZXJmbG93WTogJ2F1dG8nXG4gICAgfSxcbiAgICB0YWJsZVNlbGVjdGVkOiB7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogZ3JleTMwMCxcbiAgICAgICAgJyY6aG92ZXInOiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAnI2YxZjFmMSdcbiAgICAgICAgfVxuICAgIH0sXG4gICAgdGFibGVSb3c6IHtcbiAgICAgICAgJyY6aG92ZXInOiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAnI2YxZjFmMSdcbiAgICAgICAgfVxuICAgIH0sXG4gICAgdGFibGVXcmFwcGVyOiB7XG4gICAgICAgIGhlaWdodDogJzEwMCUnXG4gICAgfSxcbiAgICB0YWJsZToge1xuICAgICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICB9LFxuICAgIHZpc3VhbGx5SGlkZGVuOiB7XG4gICAgICAgIGJvcmRlcjogMCxcbiAgICAgICAgY2xpcDogJ3JlY3QoMCAwIDAgMCknLFxuICAgICAgICBoZWlnaHQ6IDEsXG4gICAgICAgIG1hcmdpbjogLTEsXG4gICAgICAgIHBhZGRpbmc6IDAsXG4gICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICB0b3A6IDIwLFxuICAgICAgICB3aWR0aDogMSxcbiAgICB9XG59KSk7XG5cbmV4cG9ydCBjb25zdCBEYXRhR3JpZCA9IFJlYWN0Lm1lbW8oKHByb3BzKSA9PiB7XG4gICAgY29uc3QgY2xhc3NlcyA9IHVzZVN0eWxlcygpO1xuICAgIGNvbnN0IFtvcmRlciwgc2V0T3JkZXJdID0gUmVhY3QudXNlU3RhdGUoJ2Rlc2MnKTtcbiAgICBjb25zdCBbY29uZmlnXSA9IFJlYWN0LnVzZVN0YXRlKFV0aWxzLnBhcnNlQ29uZmlnKHByb3BzLmNvbmZpZywgcHJvcHMudmlld0lkKSk7XG4gICAgY29uc3QgW29yZGVyQnksIHNldE9yZGVyQnldID0gUmVhY3QudXNlU3RhdGUoJ2lkJyk7XG4gICAgY29uc3QgW3NlbGVjdGVkLCBzZXRTZWxlY3RlZF0gPSBSZWFjdC51c2VTdGF0ZShbXSk7XG4gICAgY29uc3QgW3RvdGFsTnVtYmVyT2ZSb3dzLCBzZXRUb3RhbE51bWJlck9mUm93c10gPSBSZWFjdC51c2VTdGF0ZSgwKTtcbiAgICBjb25zdCBbY3JpdGVyaWFdID0gUmVhY3QudXNlU3RhdGUoe30pO1xuICAgIGNvbnN0IFtwYWdlLCBzZXRQYWdlXSA9IFJlYWN0LnVzZVN0YXRlKDApO1xuICAgIGNvbnN0IFtyb3dzLCBzZXRSb3dzXSA9IFJlYWN0LnVzZVN0YXRlKFtdKTtcbiAgICBjb25zdCBbZGVsZXRlZFJvd3MsIHNldERlbGV0ZWRSb3dzXSA9IFJlYWN0LnVzZVN0YXRlKFtdKTtcbiAgICBjb25zdCBbZWRpdGFibGUsIHNldEVkaXRhYmxlXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbc2Nyb2xsV2lkdGgsIHNldFNjcm9sbFdpZHRoXSA9IFJlYWN0LnVzZVN0YXRlKDApO1xuICAgIGNvbnN0IFtyb3dzUGVyUGFnZU9wdGlvbnNdID0gUmVhY3QudXNlU3RhdGUoWzE1LCAzMCwgNDUsIDYwLCA3NSwgMTUwLCAzMDBdKTtcbiAgICBjb25zdCBbcm93c1BlclBhZ2VMb2FkaW5nLCBzZXRSb3dzUGVyUGFnZUxvYWRpbmddID0gUmVhY3QudXNlU3RhdGUodHJ1ZSk7XG4gICAgY29uc3QgW3Jvd3NQZXJQYWdlLCBzZXRSb3dzUGVyUGFnZV0gPSBSZWFjdC51c2VTdGF0ZShwcm9wcy5jb25maWcucGFnZVNpemUpO1xuICAgIGNvbnN0IGhpZ2hsaWdodFJvd1NlbGVjdGlvbiA9IFJlYWN0LnVzZVJlZighVXRpbHMuaXNOdWxsKHByb3BzLmNvbmZpZy5oaWdobGlnaHRSb3dTZWxlY3Rpb24pXG4gICAgICAgID8gcHJvcHMuY29uZmlnLmhpZ2hsaWdodFJvd1NlbGVjdGlvbiA6ICFVdGlscy5pc051bGwocHJvcHMuY29uZmlnLmRpc2FibGVSb3dTZWxlY3Rpb24pID8gIXByb3BzLmNvbmZpZy5kaXNhYmxlUm93U2VsZWN0aW9uIDogdHJ1ZSk7XG4gICAgY29uc3QgW2NlbGxzXSA9IFJlYWN0LnVzZVN0YXRlKFtdKTtcbiAgICBjb25zdCBbaGVhZGluZ0hhbmRsZV0gPSBSZWFjdC51c2VTdGF0ZSh7fSk7XG4gICAgY29uc3QgW2ZpbHRlckhhbmRsZV0gPSBSZWFjdC51c2VTdGF0ZSh7fSk7XG4gICAgY29uc3QgW2NvbHVtbkxheW91dEhhbmRsZXNdID0gUmVhY3QudXNlU3RhdGUoe30pO1xuICAgIGNvbnN0IFtlZGl0b3JIYW5kbGVzXSA9IFJlYWN0LnVzZVN0YXRlKHt9KTtcbiAgICBjb25zdCBbcm93RXJyb3JNYXBdID0gUmVhY3QudXNlU3RhdGUoe30pO1xuICAgIGNvbnN0IFt2aXNpYmxlLCBzZXRWaXNpYmxlXSA9IFJlYWN0LnVzZVN0YXRlKHRydWUpO1xuICAgIGNvbnN0IFt3cmFwLCBzZXRXcmFwXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCByb3dDb3VudCA9IFJlYWN0LnVzZVJlZigtMSk7XG4gICAgY29uc3Qgcm93c1JlZiA9IFJlYWN0LnVzZVJlZihbXSk7XG4gICAgbGV0IG5vdGVLZXkgPSAwO1xuICAgIGNvbnN0IGNvbHVtbldpZHRocyA9IFJlYWN0LnVzZVJlZih7fSk7XG5cbiAgICBjb25zdCBkcmFnU3BlYyA9IGNvbmZpZy5hdHRyaWJ1dGVzPy5kcmFnU3BlYyB8fCB7fTtcbiAgICBjb25zdCByb3dHcmFiU3BlYyA9IGRyYWdTcGVjLnJvdyB8fCB7fTtcbiAgICBjb25zdCByb3dzR3JhYmJhYmxlID0gcm93R3JhYlNwZWMuZW5hYmxlZCA9PT0gdHJ1ZTtcblxuICAgIGNvbnN0IGFwaSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGdldCBpZCgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJvcHMuY29uZmlnLmlkO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldCBjcml0ZXJpYSgpIHtcbiAgICAgICAgICAgICAgICBjcml0ZXJpYS5wYXJhbWV0ZXJzID0gaXNGaWx0ZXJhYmxlKCkgPyBmaWx0ZXJIYW5kbGUuYXBpLmdldFBhcmFtZXRlcnMoKSA6IFtdO1xuICAgICAgICAgICAgICAgIGNyaXRlcmlhLnBhZ2VTaXplID0gcm93c1BlclBhZ2U7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gY3JpdGVyaWE7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0IHNlbGVjdGlvbigpIHtcbiAgICAgICAgICAgICAgICBsZXQgc2VsZWN0ZWRSb3dzID0gW107XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZWxlY3RlZC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHJvd3MubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZFtpXSA9PT0gcm93c1tqXS5pZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkUm93cy5wdXNoKHJvd3Nbal0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGVjdGVkUm93cztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXQgY29sdW1uRGF0YUJpbmRpbmdzKCkge1xuICAgICAgICAgICAgICAgIGxldCBjb2x1bW5OYW1lcyA9IFtdO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmlnLmNvbHVtbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNvbHVtbiA9IGNvbmZpZy5jb2x1bW5zW2ldO1xuICAgICAgICAgICAgICAgICAgICBjb2x1bW5OYW1lcy5wdXNoKCFVdGlscy5pc051bGwoY29sdW1uLmRhdGFCaW5kaW5nKSA/IGNvbHVtbi5kYXRhQmluZGluZyA6IGNvbHVtbi5pZCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbHVtbk5hbWVzO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldENoaWxkcmVuOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwoaGVhZGluZ0hhbmRsZS5hcGkpKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgaGVhZGluZ0hhbmRsZS5hcGkuZ2V0Q2hpbGRyZW4oKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4ucHVzaChjaGlsZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChmaWx0ZXJIYW5kbGUuYXBpKSkge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIGZpbHRlckhhbmRsZS5hcGkuZ2V0Q2hpbGRyZW4oKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4ucHVzaChjaGlsZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBsZXQgcHJvcGVydGllcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGNvbHVtbkxheW91dEhhbmRsZXMpO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcHJvcGVydHkgb2YgcHJvcGVydGllcykge1xuICAgICAgICAgICAgICAgICAgICBsZXQgY29sdW1uTGF5b3V0SGFuZGxlID0gY29sdW1uTGF5b3V0SGFuZGxlc1twcm9wZXJ0eV07XG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuLnB1c2goY29sdW1uTGF5b3V0SGFuZGxlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwoY29sdW1uTGF5b3V0SGFuZGxlLmFwaSkgJiYgIVV0aWxzLmlzTnVsbChjb2x1bW5MYXlvdXRIYW5kbGUuYXBpLmdldENoaWxkcmVuKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1vcmVDaGlsZHJlbiA9IGNvbHVtbkxheW91dEhhbmRsZS5hcGkuZ2V0Q2hpbGRyZW4oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKG1vcmVDaGlsZHJlbikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIG1vcmVDaGlsZHJlbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbi5wdXNoKGNoaWxkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZWRpdG9ySGFuZGxlcyk7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBlZGl0b3JIYW5kbGUgPSBlZGl0b3JIYW5kbGVzW3Byb3BlcnR5XTtcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4ucHVzaChlZGl0b3JIYW5kbGUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChlZGl0b3JIYW5kbGUuYXBpKSAmJiAhVXRpbHMuaXNOdWxsKGVkaXRvckhhbmRsZS5hcGkuZ2V0Q2hpbGRyZW4pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbW9yZUNoaWxkcmVuID0gZWRpdG9ySGFuZGxlLmFwaS5nZXRDaGlsZHJlbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwobW9yZUNoaWxkcmVuKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgbW9yZUNoaWxkcmVuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuLnB1c2goY2hpbGQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZHJlbjtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsb2FkRGF0YTogKGFjdGlvbkNvbmZpZywgZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBzZWFyY2goYWN0aW9uQ29uZmlnLCBldmVudCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZGVsZXRlU2VsZWN0ZWRSb3dzOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gVE9ETyA6IGRpc3Bvc2UgZnJvbSBvYnNlcnZlclxuICAgICAgICAgICAgICAgIGxldCBuZXdSb3dzID0gcm93cy5maWx0ZXIoKHJvdykgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gIWlzU2VsZWN0ZWQocm93LmlkKTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIHNldERlbGV0ZWRSb3dzKGdldFNlbGVjdGVkUm93cyhzZWxlY3RlZCkpO1xuICAgICAgICAgICAgICAgIHJvd3Muc3BsaWNlKDAsIHJvd3MubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IG5ld1JvdyBvZiBuZXdSb3dzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJvd3MucHVzaChuZXdSb3cpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkKFtdKTtcblxuICAgICAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHByb3BzLm9uU2VsZWN0aW9uQ2hhbmdlKSkge1xuICAgICAgICAgICAgICAgICAgICBwcm9wcy5vblNlbGVjdGlvbkNoYW5nZShbXSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdXBkYXRlU2Nyb2xsQmFyUGFkZGluZygpO1xuICAgICAgICAgICAgICAgIHJvd0NvdW50LmN1cnJlbnQgPSByb3dzLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAvLyBTeW5jIHRoZSByZWYgdGhhdCBiYWNrcyB0aGUgYGdldCByb3dzYCBnZXR0ZXIg4oCUIG90aGVyd2lzZVxuICAgICAgICAgICAgICAgIC8vIGFwaS5yb3dzIHJldHVybnMgd2hhdGV2ZXIgcm93c1JlZiB3YXMgYXQgbGFzdCBzeW5jIChvZnRlblxuICAgICAgICAgICAgICAgIC8vIGVtcHR5IGFmdGVyIGEgcHJldmlvdXMgY2xlYXIoKSksIGV2ZW4gdGhvdWdoIHRoZSBsb2NhbFxuICAgICAgICAgICAgICAgIC8vIGByb3dzYCBhcnJheSBoYXMgYmVlbiBtdXRhdGVkLiBjbGVhcigpIGRvZXMgdGhpczsgZGF0YSBsb2FkXG4gICAgICAgICAgICAgICAgLy8gZG9lcyB0aGlzOyBhZGRSb3dzL2RlbGV0ZVNlbGVjdGVkUm93cyBkaWRuJ3Qg4oCUIGxlYWRpbmcgdG9cbiAgICAgICAgICAgICAgICAvLyBUcmFuc2Zlckxpc3QncyB0cmFuc2Zlci1hbGwtYmFjayBmYWlsaW5nIGJlY2F1c2UgYXBpLnJvd3NcbiAgICAgICAgICAgICAgICAvLyBzaG93ZWQgZW1wdHkgcmlnaHQgYWZ0ZXIgYSB0cmFuc2Zlci1hbGwtb3V0LlxuICAgICAgICAgICAgICAgIHJvd3NSZWYuY3VycmVudCA9IHJvd3M7XG4gICAgICAgICAgICAgICAgdmFsdWVDaGFuZ2VDYWxsYmFjayhyb3dzKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiByb3dzO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNsZWFyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gVE9ETyA6IGRpc3Bvc2UgZnJvbSBvYnNlcnZlclxuICAgICAgICAgICAgICAgIHJvd3NSZWYuY3VycmVudCA9IFtdO1xuICAgICAgICAgICAgICAgIHNldFJvd3MoW10pO1xuXG4gICAgICAgICAgICAgICAgbGV0IGV2ZW50ID0gbmV3IEV2ZW50KHByb3BzLmhhbmRsZSwgcHJvcHMudmlld0lkLCBnZXRTZWxlY3RlZFJvd3MoW10pKTtcbiAgICAgICAgICAgICAgICBldmVudE1hbmFnZXIuZmlyZUV2ZW50KEV2ZW50VHlwZS5TRUxFQ1RJT05fQ0hBTkdFLCBldmVudCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgLy8gU3VyZ2ljYWwgZGVsZXRlIGJ5IHJvdyBpZHMg4oCUIGRvZXMgTk9UIHRvdWNoIHRoZSBzZWxlY3Rpb24gc3RhdGUuXG4gICAgICAgICAgICAvLyBDb3VudGVycGFydCB0byBkZWxldGVTZWxlY3RlZFJvd3MgZm9yIGNhc2VzIChUcmFuc2Zlckxpc3QgZG91YmxlLVxuICAgICAgICAgICAgLy8gY2xpY2spIHdoZXJlIHRoZSBjYWxsZXIgd2FudHMgdG8gcmVtb3ZlIHNwZWNpZmljIHJvd3Mgd2l0aG91dFxuICAgICAgICAgICAgLy8gaGlqYWNraW5nIHRoZSB1c2VyJ3MgY3VycmVudCBncmlkIHNlbGVjdGlvbi5cbiAgICAgICAgICAgIGRlbGV0ZVJvd3M6IChyb3dJZHMpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXJvd0lkcyB8fCByb3dJZHMubGVuZ3RoID09PSAwKSByZXR1cm4gcm93cztcbiAgICAgICAgICAgICAgICBjb25zdCBpZFNldCA9IG5ldyBTZXQocm93SWRzKTtcbiAgICAgICAgICAgICAgICBjb25zdCByZW1haW5pbmcgPSByb3dzLmZpbHRlcigocm93KSA9PiAhaWRTZXQuaGFzKHJvdy5pZCkpO1xuICAgICAgICAgICAgICAgIHJvd3Muc3BsaWNlKDAsIHJvd3MubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHJvdyBvZiByZW1haW5pbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgcm93cy5wdXNoKHJvdyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHVwZGF0ZVNjcm9sbEJhclBhZGRpbmcoKTtcbiAgICAgICAgICAgICAgICByb3dDb3VudC5jdXJyZW50ID0gcm93cy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgcm93c1JlZi5jdXJyZW50ID0gcm93cztcbiAgICAgICAgICAgICAgICB2YWx1ZUNoYW5nZUNhbGxiYWNrKHJvd3MpO1xuICAgICAgICAgICAgICAgIHJldHVybiByb3dzO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNlbGVjdDogKHJvd3MpID0+IHtcbiAgICAgICAgICAgICAgc2V0U2VsZWN0ZWQocm93cyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYWRkUm93czogKG5ld1Jvd3MpID0+IHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IG5ld1JvdyBvZiBuZXdSb3dzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJvd3MucHVzaChvYnNlcnZlUm93KG5ld1JvdykpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGxldCBuZXdTZWxlY3Rpb24gPSBbXTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IG5ld1JvdyBvZiBuZXdSb3dzKSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld1NlbGVjdGlvbi5wdXNoKG5ld1Jvdy5pZCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKFV0aWxzLmlzTnVsbChwcm9wcy5jb25maWcuZGlzYWJsZVJvd1NlbGVjdGlvbikgfHwgcHJvcHMuY29uZmlnLmRpc2FibGVSb3dTZWxlY3Rpb24gPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkKG5ld1NlbGVjdGlvbik7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwocHJvcHMub25TZWxlY3Rpb25DaGFuZ2UpKSB7XG4gICAgICAgICAgICAgICAgICAgIHByb3BzLm9uU2VsZWN0aW9uQ2hhbmdlKG5ld1Jvd3MpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHVwZGF0ZVNjcm9sbEJhclBhZGRpbmcoKTtcbiAgICAgICAgICAgICAgICByb3dDb3VudC5jdXJyZW50ID0gcm93cy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgLy8gU2VlIGRlbGV0ZVNlbGVjdGVkUm93cyBmb3IgdGhlIHJhdGlvbmFsZSDigJQga2VlcCByb3dzUmVmIGluXG4gICAgICAgICAgICAgICAgLy8gc3luYyB3aXRoIHRoZSBtdXRhdGVkIGxvY2FsIHJvd3MgYXJyYXkgc28gdGhlIGBnZXQgcm93c2BcbiAgICAgICAgICAgICAgICAvLyBnZXR0ZXIgcmV0dXJucyBjdXJyZW50IGRhdGEgYWZ0ZXIgYWRkUm93cy5cbiAgICAgICAgICAgICAgICByb3dzUmVmLmN1cnJlbnQgPSByb3dzO1xuICAgICAgICAgICAgICAgIHZhbHVlQ2hhbmdlQ2FsbGJhY2socm93cyk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gcm93cztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXQgbnVtYmVyT2ZQYWdlcygpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdG90YWxOdW1iZXJPZlJvd3MgLyByb3dzUGVyUGFnZTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXQgcm93cygpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcm93c1JlZi5jdXJyZW50O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNlYXJjaDogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHNlYXJjaCgpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlZnJlc2goKSB7XG4gICAgICAgICAgICAgICAgaWYgKGZpbHRlckhhbmRsZSAmJiBmaWx0ZXJIYW5kbGUuYXBpKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbHRlckhhbmRsZS5hcGkucmVmcmVzaCgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGxldCBwYXJzZWRDb25maWcgPSBVdGlscy5wYXJzZUNvbmZpZyhwcm9wcy5jb25maWcsIHByb3BzLnZpZXdJZCk7XG4gICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwocGFyc2VkQ29uZmlnLnZpc2libGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFZpc2libGUoVXRpbHMuZXZhbHVhdGVCb29sZWFuRXhwcmVzc2lvbihwYXJzZWRDb25maWcudmlzaWJsZSwgcGFyc2VkQ29uZmlnLmlkKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldCB2aXNpYmxlKHZpc2libGUpIHtcbiAgICAgICAgICAgICAgICBzZXRWaXNpYmxlKHZpc2libGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH07XG5cbiAgICBjb25zdCBmb3JtQXBpID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZ2V0IGlkKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwcm9wcy5jb25maWcuaWQgKyBcIl9lZGl0X2Zvcm1cIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gaGFuZGxlUm93R3JhYlRvZ2dsZShyb3csIGluZGV4KSB7XG4gICAgICAgIGlmICghaXNSb3dHcmFiYmFibGUocm93KSkgcmV0dXJuO1xuICAgICAgICBpZiAoR3JhYkNvbnRleHQuaXNBY3RpdmUoKSkgcmV0dXJuO1xuXG4gICAgICAgIEdyYWJDb250ZXh0LmdyYWIocHJvcHMuaGFuZGxlLCB7XG4gICAgICAgICAgICByb3csXG4gICAgICAgICAgICByb3dJbmRleDogaW5kZXgsXG4gICAgICAgICAgICBjb21wb25lbnRJZDogcHJvcHMuY29uZmlnLmlkLFxuICAgICAgICAgICAgdmlld0lkOiBwcm9wcy52aWV3SWRcbiAgICAgICAgfSk7XG5cbiAgICAgICAgQ3Vyc29yT3ZlcmxheS5zaG93KCk7XG5cbiAgICAgICAgZXZlbnRNYW5hZ2VyLmZpcmVFdmVudChcbiAgICAgICAgICAgIEV2ZW50VHlwZS5ST1dfR1JBQl9TVEFSVCxcbiAgICAgICAgICAgIG5ldyBFdmVudChwcm9wcy5oYW5kbGUsIHByb3BzLnZpZXdJZCwgcm93KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHVwZGF0ZVNjcm9sbEJhclBhZGRpbmcoKSB7XG4gICAgICAgIHZhciB0Ym9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtYWluVGFibGVCb2R5Jyk7XG4gICAgICAgIGlmICh0Ym9keSAhPT0gbnVsbCAmJiB0eXBlb2YgdGJvZHkgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBzZXRTY3JvbGxXaWR0aCh0Ym9keS5vZmZzZXRXaWR0aCAtIHRib2R5LmNsaWVudFdpZHRoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHdpbmRvdy5vbnJlc2l6ZSA9IGZ1bmN0aW9uIG9ucmVzaXplKCkge1xuICAgICAgICB1cGRhdGVTY3JvbGxCYXJQYWRkaW5nKCk7XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZVJlcXVlc3RTb3J0ID0gKGV2ZW50LCBwcm9wZXJ0eSkgPT4ge1xuICAgICAgICBjb25zdCBpc0Rlc2MgPSBvcmRlckJ5ID09PSBwcm9wZXJ0eSAmJiBvcmRlciA9PT0gJ2Rlc2MnO1xuICAgICAgICBzZXRPcmRlcihpc0Rlc2MgPyAnYXNjJyA6ICdkZXNjJyk7XG4gICAgICAgIHNldE9yZGVyQnkocHJvcGVydHkpO1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiBoYW5kbGVTZWxlY3RBbGxDbGljayhldmVudCkge1xuICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKHByb3BzLmNvbmZpZy5kaXNhYmxlUm93U2VsZWN0aW9uKSB8fCBwcm9wcy5jb25maWcuZGlzYWJsZVJvd1NlbGVjdGlvbiA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIGlmIChldmVudC50YXJnZXQuY2hlY2tlZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld1NlbGVjdGVkcyA9IHJvd3MubWFwKG4gPT4gbi5uYW1lKTtcbiAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZChuZXdTZWxlY3RlZHMpO1xuICAgICAgICAgICAgICAgIHByb3BzLm9uU2VsZWN0aW9uQ2hhbmdlKG5ld1NlbGVjdGVkcyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkKFtdKTtcbiAgICAgICAgICAgICAgICBwcm9wcy5vblNlbGVjdGlvbkNoYW5nZShbXSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5lbmFibGVGb3JtTWFya2Vycyh0cnVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFNlbGVjdGVkUm93cyhzZWxlY3RlZCkge1xuICAgICAgICBsZXQgc2VsZWN0ZWRSb3dzID0gW107XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcm93cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbGV0IHJvdyA9IHJvd3NbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHNlbGVjdGVkLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJvdy5pZCA9PT0gc2VsZWN0ZWRbal0pIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRSb3dzLnB1c2gocm93KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc2VsZWN0ZWRSb3dzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRvSGFuZGxlQ2xpY2soZXZlbnQsIGlkKSB7XG4gICAgICAgIGlmIChVdGlscy5pc051bGwocHJvcHMuY29uZmlnLmRpc2FibGVSb3dTZWxlY3Rpb24pIHx8IHByb3BzLmNvbmZpZy5kaXNhYmxlUm93U2VsZWN0aW9uID09PSBmYWxzZSkge1xuICAgICAgICAgICAgYXBwbGljYXRpb25NYW5hZ2VyLmVuYWJsZUZvcm1NYXJrZXJzKHRydWUpO1xuXG4gICAgICAgICAgICBjb25zdCBleGlzdGluZ0luZGV4ID0gc2VsZWN0ZWQuaW5kZXhPZihpZCk7XG4gICAgICAgICAgICBsZXQgbmV3U2VsZWN0ZWQ7XG5cbiAgICAgICAgICAgIGlmIChwcm9wcy5tdWx0aVNlbGVjdCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIC8vIFRvZ2dsZSBiZWhhdmlvdXI6IGNsaWNraW5nIGFuIGFscmVhZHktc2VsZWN0ZWQgcm93IHJlbW92ZXNcbiAgICAgICAgICAgICAgICAvLyBpdDsgb3RoZXJ3aXNlIGFkZCBpdCB0byB0aGUgc2VsZWN0aW9uLiBXaXRob3V0IHRoaXMsIHRoZVxuICAgICAgICAgICAgICAgIC8vIG11bHRpLXNlbGVjdCBwaWNrZXIgKGUuZy4gTXVsdGlMb29rdXBGaWVsZCkgbGVhdmVzIHVzZXJzXG4gICAgICAgICAgICAgICAgLy8gdW5hYmxlIHRvIGJhY2sgb3V0IGEgcm93IHRoZXkgdGlja2VkIGJ5IGFjY2lkZW50LlxuICAgICAgICAgICAgICAgIGlmIChleGlzdGluZ0luZGV4ID49IDApIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3U2VsZWN0ZWQgPSBbLi4uc2VsZWN0ZWQuc2xpY2UoMCwgZXhpc3RpbmdJbmRleCksIC4uLnNlbGVjdGVkLnNsaWNlKGV4aXN0aW5nSW5kZXggKyAxKV07XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3U2VsZWN0ZWQgPSBbLi4uc2VsZWN0ZWQsIGlkXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIFNpbmdsZS1zZWxlY3Q6IG5vLW9wIG9uIHJlLWNsaWNrIChwcmVzZXJ2ZWQgZnJvbSBwcmlvclxuICAgICAgICAgICAgICAgIC8vIGJlaGF2aW91ciDigJQgc2luZ2xlLXJvdyBncmlkcyByZWx5IG9uIHRoaXMgdG8gYXZvaWRcbiAgICAgICAgICAgICAgICAvLyBhY2NpZGVudGFsIGRlc2VsZWN0IGR1cmluZyBjZWxsIGVkaXRzKS5cbiAgICAgICAgICAgICAgICBpZiAoZXhpc3RpbmdJbmRleCA+PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbmV3U2VsZWN0ZWQgPSBbaWRdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgc2VsZWN0ZWRSb3dzID0gZ2V0U2VsZWN0ZWRSb3dzKG5ld1NlbGVjdGVkKTtcblxuICAgICAgICAgICAgc2V0U2VsZWN0ZWQobmV3U2VsZWN0ZWQpO1xuICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwocHJvcHMub25TZWxlY3Rpb25DaGFuZ2UpKSB7XG4gICAgICAgICAgICAgICAgcHJvcHMub25TZWxlY3Rpb25DaGFuZ2Uoc2VsZWN0ZWRSb3dzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGZpcmVTZWxlY3Rpb25FdmVudCgpIHtcbiAgICAgICAgaWYgKHNlbGVjdGVkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKGNvbmZpZykgJiYgKCFVdGlscy5pc051bGwoaGVhZGluZ0hhbmRsZSkgfHwgY29uZmlnLmdyaWRUeXBlID09PSAnVElMRScpKSB7XG4gICAgICAgICAgICAgICAgbGV0IGV2ZW50ID0gbmV3IEV2ZW50KHByb3BzLmhhbmRsZSwgcHJvcHMudmlld0lkLCBnZXRTZWxlY3RlZFJvd3Moc2VsZWN0ZWQpKTtcbiAgICAgICAgICAgICAgICBldmVudE1hbmFnZXIuZmlyZUV2ZW50KEV2ZW50VHlwZS5TRUxFQ1RJT05fQ0hBTkdFLCBldmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1Jvd0dyYWJiYWJsZShyb3cpIHtcbiAgICAgICAgcmV0dXJuIHJvd3NHcmFiYmFibGUgJiYgIWlzUm93RHJhZ0Rpc2FibGVkKHJvdyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNSb3dEcmFnRGlzYWJsZWQocm93KSB7XG4gICAgICAgIGlmICghZHJhZ1NwZWMuZGlzYWJsZWRXaGVuKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZHluYW1pY0pTLmV4ZWN1dGVTY3JpcHRPYmplY3QoXG4gICAgICAgICAgICAnUk9XLScgKyByb3cuaWQgKyAnLWRyYWctZGlzYWJsZWQnLFxuICAgICAgICAgICAgZHJhZ1NwZWMuZGlzYWJsZWRXaGVuLFxuICAgICAgICAgICAgcHJvcHMuY29uZmlnLmlkLFxuICAgICAgICAgICAge3Jvdzogcm93fSxcbiAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2V0Q3Vyc29yKGN1cnNvcikge1xuICAgICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLmN1cnNvciA9IGN1cnNvciB8fCAnZGVmYXVsdCc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaGFuZGxlUm93TW91c2VFbnRlcihyb3cpIHtcbiAgICAgICAgaWYgKCFpc1Jvd0dyYWJiYWJsZShyb3cpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBPbmx5IHNob3cgZ3JhYiBjdXJzb3IgaWYgbm90IGFscmVhZHkgaG9sZGluZyBzb21ldGhpbmdcbiAgICAgICAgaWYgKCFHcmFiQ29udGV4dC5pc0FjdGl2ZSgpKSB7XG4gICAgICAgICAgICBzZXRDdXJzb3Iocm93R3JhYlNwZWMuY3Vyc29yIHx8ICdncmFiJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBoYW5kbGVSb3dNb3VzZUxlYXZlKCkge1xuICAgICAgICBzZXRDdXJzb3IoJ2RlZmF1bHQnKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBoYW5kbGVDbGljayhldmVudCwgcm93LCBpbmRleCkge1xuICAgICAgICBpZiAoZXZlbnQudGFyZ2V0LmNsb3Nlc3QoJy5lZGl0Q2VsbCcpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgaWYgKHJvd3NHcmFiYmFibGUgJiYgIWlzUm93RHJhZ0Rpc2FibGVkKHJvdykpIHtcbiAgICAgICAgICAgIGhhbmRsZVJvd0dyYWJUb2dnbGUocm93LCBpbmRleCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChwcm9wcy5vbkNlbGxTZWxlY3Rpb25DaGFuZ2UpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBkb0hhbmRsZUNsaWNrKGV2ZW50LCByb3cuaWQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGhhbmRsZUNlbGxDbGljayhldmVudCwgaWQsIGNvbHVtbikge1xuICAgICAgICBpZiAoY29sdW1uLmZpZWxkVHlwZSAhPT0gJ2RvY3VtZW50Jykge1xuICAgICAgICAgICAgLy8gVE9ETyA6IEV2YWx1YXRlIGlmIHRoaXMgY2FsbCBpcyBuZWNlc3NhcnlcbiAgICAgICAgICAgIGRvSGFuZGxlQ2xpY2soZXZlbnQsIGlkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHByb3BzLm9uQ2VsbFNlbGVjdGlvbkNoYW5nZSkpIHtcbiAgICAgICAgICAgIHByb3BzLm9uQ2VsbFNlbGVjdGlvbkNoYW5nZShpZCwgY29sdW1uKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGhhbmRsZUNoYW5nZVBhZ2UoZXZlbnQsIG5ld1BhZ2UpIHtcbiAgICAgICAgY3JpdGVyaWEuY3VycmVudFBhZ2UgPSBuZXdQYWdlICsgMTtcbiAgICAgICAgc2V0UGFnZShuZXdQYWdlKTtcbiAgICAgICAgc2VhcmNoKCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaGFuZGxlQ2hhbmdlUm93c1BlclBhZ2UoZXZlbnQpIHtcbiAgICAgICAgc2V0Um93c1BlclBhZ2Uocm93c1BlclBhZ2UgPT4gZXZlbnQudGFyZ2V0LnZhbHVlKTtcbiAgICAgICAgc2V0UGFnZSgwKTtcbiAgICB9XG5cbiAgICBjb25zdCBvYnNlcnZlUm93ID0gKHJvdykgPT4ge1xuICAgICAgICAvKmxldCBvYnNlcnZhYmxlUm93ID0gb2JzZXJ2YWJsZShyb3cpO1xuICAgICAgICBvYnNlcnZlKFxuICAgICAgICAgICAgb2JzZXJ2YWJsZVJvdyxcbiAgICAgICAgICAgIGNoYW5nZSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IG5ld1ZhbHVlID0gY2hhbmdlLm5ld1ZhbHVlO1xuICAgICAgICAgICAgICAgIGxldCBvbGRWYWx1ZSA9IGNoYW5nZS5vbGRWYWx1ZTtcblxuICAgICAgICAgICAgICAgIGlmIChuZXdWYWx1ZSAhPT0gb2xkVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaENlbGwocm93LmlkLCBjaGFuZ2UubmFtZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiBvYnNlcnZhYmxlUm93OyovXG5cbiAgICAgICAgcmV0dXJuIHJvdztcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gcHJvY2Vzc0RhdGEoZGF0YSwgY29uZikge1xuICAgICAgICBzZXRUb3RhbE51bWJlck9mUm93cyhkYXRhLnRvdGFsTnVtYmVyT2ZSZWNvcmRzID8gZGF0YS50b3RhbE51bWJlck9mUmVjb3JkcyA6IGRhdGEucmVjb3Jkcy5sZW5ndGgpO1xuXG4gICAgICAgIHJvd3NSZWYuY3VycmVudCA9IGRhdGEucmVjb3JkcztcbiAgICAgICAgdXBkYXRlUm93Q2xhc3NlcyhkYXRhLnJlY29yZHMpO1xuICAgICAgICBsZXQgdGFibGVSb3dzID0gW107XG4gICAgICAgIGxldCByZWNvcmRzID0gZGF0YS5yZWNvcmRzO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlY29yZHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHRhYmxlUm93cy5wdXNoKG9ic2VydmVSb3cocmVjb3Jkc1tpXSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgc2V0Um93cyh0YWJsZVJvd3MpO1xuICAgIH1cblxuICAgIGNvbnN0IHNlYXJjaCA9IChhY3Rpb25Db25maWcgPSBudWxsLCBldmVudCkgPT4ge1xuICAgICAgICBsZXQgY29uZiA9IGNvbmZpZztcbiAgICAgICAgaWYgKFV0aWxzLmlzTnVsbChjb25mKSkge1xuICAgICAgICAgICAgY29uZiA9IFV0aWxzLnBhcnNlQ29uZmlnKHByb3BzLmNvbmZpZywgcHJvcHMudmlld0lkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBzZXJ2aWNlID0gIVV0aWxzLmlzTnVsbChjb25mLmRhdGFTZXJ2aWNlKSA/IGNvbmYuZGF0YVNlcnZpY2UgOiAhVXRpbHMuaXNOdWxsKGFjdGlvbkNvbmZpZykgPyBhY3Rpb25Db25maWcuZGF0YVNlcnZpY2UgOiBudWxsO1xuICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChzZXJ2aWNlKSkge1xuICAgICAgICAgICAgbGV0IHNlcnZpY2VUeXBlID0gc2VydmljZS50eXBlO1xuICAgICAgICAgICAgaWYgKCFzZXJ2aWNlVHlwZSkge1xuICAgICAgICAgICAgICAgIHNlcnZpY2VUeXBlID0gJ3JwYyc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChzZXJ2aWNlVHlwZSA9PT0gJ3JwYycgfHwgc2VydmljZVR5cGUgPT09ICdyZXN0Jykge1xuICAgICAgICAgICAgICAgIGxldCBtZXRob2QgPSBzZXJ2aWNlVHlwZSA9PT0gJ3JwYycgPyBpbnZva2VScGMgOiBpbnZva2VSZXN0O1xuICAgICAgICAgICAgICAgIG1ldGhvZCh7XG4gICAgICAgICAgICAgICAgICAgIHNlcnZpY2U6IHNlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudDogcHJvcHMuaGFuZGxlLFxuICAgICAgICAgICAgICAgICAgICB2aWV3SWQ6IHByb3BzLnZpZXdJZCxcbiAgICAgICAgICAgICAgICAgICAgZXZlbnRcbiAgICAgICAgICAgICAgICB9KS50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc0RhdGEocmVzdWx0LCBjb25mKTtcbiAgICAgICAgICAgICAgICB9KS5jYXRjaCgoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICAgICAgICAgICAgICBpZihlLmVycm9yVHlwZSAhPT0gJ0lOVkFMSURfUEFSQU1FVEVSJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgVXRpbHMucHVibGlzaEVycm9yTWVzc2FnZShlLCBwcm9wcy52aWV3SWQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIHNlcnZpY2UgdHlwZSA6ICcgKyBzZXJ2aWNlVHlwZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoYWN0aW9uQ29uZmlnICYmIGFjdGlvbkNvbmZpZy52YWx1ZSkge1xuICAgICAgICAgICAgICAgIGxldCBkYXRhID0gYXBwbGljYXRpb25NYW5hZ2VyLnJlc29sdmVQYXJhbWV0ZXJDb25maWdWYWx1ZShhY3Rpb25Db25maWcudmFsdWUpO1xuICAgICAgICAgICAgICAgIHByb2Nlc3NEYXRhKGRhdGEsIGNvbmYpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGNyaXRlcmlhLmN1cnJlbnRQYWdlID0gMTtcbiAgICAgICAgaWYgKCFyb3dzUGVyUGFnZUxvYWRpbmcpIHtcbiAgICAgICAgICAgIHNldFJvd3NQZXJQYWdlTG9hZGluZyhmYWxzZSk7XG4gICAgICAgICAgICBzZWFyY2goKTtcbiAgICAgICAgfVxuICAgIH0sIFtyb3dzUGVyUGFnZV0pO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgcHJvcHMuaGFuZGxlLmFwaSA9IGFwaSgpO1xuICAgIH0pO1xuXG4gICAgUmVhY3QudXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICAgICAgcHJvcHMuaGFuZGxlLmFwaSA9IGFwaSgpO1xuICAgIH0sIFtdKTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGxldCBldmVudEhhbmRsaW5nQ29uZmlnID0gVXRpbHMuaXNOdWxsKGNvbmZpZy5ldmVudEhhbmRsaW5nQ29uZmlnKSA/IHt9IDogY29uZmlnLmV2ZW50SGFuZGxpbmdDb25maWc7XG4gICAgICAgIGV2ZW50SGFuZGxpbmdDb25maWcuc3Vic2NyaXB0aW9ucyA9IFV0aWxzLmlzTnVsbChldmVudEhhbmRsaW5nQ29uZmlnLnN1YnNjcmlwdGlvbnMpID8gW10gOiBldmVudEhhbmRsaW5nQ29uZmlnLnN1YnNjcmlwdGlvbnM7XG5cbiAgICAgICAgZXZlbnRNYW5hZ2VyLmFkZFN1YnNjcmlwdGlvbnMoZXZlbnRIYW5kbGluZ0NvbmZpZywgcHJvcHMuaGFuZGxlLCBwcm9wcy52aWV3SWQpO1xuICAgICAgICBldmVudE1hbmFnZXIuYWRkU3lzdGVtU3Vic2NyaXB0aW9ucyhwcm9wcy52aWV3SWQsIGNvbmZpZyk7XG4gICAgICAgIGxldCBpc0VkaXRhYmxlID0gZmFsc2U7XG4gICAgICAgIGxldCB2aXNpYmxlQ29sdW1uQ291bnQgPSAwO1xuXG4gICAgICAgIGZvciAoY29uc3QgY29sdW1uIG9mIGNvbmZpZy5jb2x1bW5zKSB7XG4gICAgICAgICAgICBsZXQgaGlkZGVuID0gVXRpbHMuZ2V0Q29tcG9uZW50QXR0cmlidXRlKGNvbHVtbiwgJ2hpZGRlbicsIGZhbHNlKTtcbiAgICAgICAgICAgIGlmICghVXRpbHMuZXZhbHVhdGVCb29sZWFuRXhwcmVzc2lvbihoaWRkZW4sIHByb3BzLmNvbmZpZy5pZCkpIHtcbiAgICAgICAgICAgICAgICB2aXNpYmxlQ29sdW1uQ291bnQrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmlnLmNvbHVtbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBjb2x1bW4gPSBjb25maWcuY29sdW1uc1tpXTtcblxuICAgICAgICAgICAgaWYgKCFpc0VkaXRhYmxlICYmIGNvbHVtbi5hdHRyaWJ1dGVzWydlZGl0YWJsZSddID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgaXNFZGl0YWJsZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgc2V0RWRpdGFibGUodHJ1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmKCFjb2x1bW4uYXR0cmlidXRlcykge1xuICAgICAgICAgICAgICAgIGNvbHVtbi5hdHRyaWJ1dGVzID0ge307XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbHVtbi5hdHRyaWJ1dGVzLndpZHRoID0gZXZhbHVhdGVUYWJsZUNlbGxXaWR0aChwcm9wcy5zZWxlY3Rpb25Nb2RlID09PSAnTVVMVElQTEUnLCBjb2x1bW4sIHZpc2libGVDb2x1bW5Db3VudCk7XG4gICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChjb2x1bW4uYXR0cmlidXRlcykgJiYgY29sdW1uLmF0dHJpYnV0ZXNbJ2VkaXRhYmxlJ10gPT09IHRydWUgJiYgVXRpbHMuaXNOdWxsKGNvbHVtbi5lZGl0b3IpKSB7XG4gICAgICAgICAgICAgICAgbGV0IGRlZmF1bHRFZGl0b3IgPSB7fTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0RWRpdG9yLmZpZWxkVHlwZSA9ICdURVhUX0ZJRUxEJztcbiAgICAgICAgICAgICAgICBkZWZhdWx0RWRpdG9yLmlkID0gY29sdW1uLmlkICsgJ0VkaXRvcic7XG5cbiAgICAgICAgICAgICAgICBjb2x1bW4uZWRpdG9yID0gZGVmYXVsdEVkaXRvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNyaXRlcmlhLmN1cnJlbnRQYWdlID0gMTtcbiAgICAgICAgY3JpdGVyaWEuZGF0YVF1ZXJ5TmFtZSA9IGNvbmZpZy5kYXRhUXVlcnlOYW1lO1xuXG4gICAgICAgIGxldCBoYXNMb2FkRXZlbnQ7XG4gICAgICAgIGxldCBsb2FkU3Vic2NyaXB0aW9ucyA9IGV2ZW50SGFuZGxpbmdDb25maWcuc3Vic2NyaXB0aW9ucy5maWx0ZXIoKHN1YnNjcmlwdGlvbikgPT4gc3Vic2NyaXB0aW9uLmV2ZW50VHlwZSA9PT0gJ0NPTVBPTkVOVF9MT0FEJyk7XG4gICAgICAgIGZvciAoY29uc3QgbG9hZFN1YnNjcmlwdGlvbiBvZiBsb2FkU3Vic2NyaXB0aW9ucykge1xuICAgICAgICAgICAgaWYgKGxvYWRTdWJzY3JpcHRpb24uYWN0aW9ucy5maWx0ZXIoKGFjdGlvbikgPT4gYWN0aW9uLmFjdGlvblR5cGUgPT09ICdsb2FkRGF0YScpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBoYXNMb2FkRXZlbnQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGF1dG9Mb2FkRGF0YSA9IFV0aWxzLmdldENvbXBvbmVudEF0dHJpYnV0ZShjb25maWcsICdhdXRvTG9hZERhdGEnLCBudWxsKTtcbiAgICAgICAgaWYgKCFoYXNMb2FkRXZlbnQgJiYgKGF1dG9Mb2FkRGF0YSA9PT0gbnVsbCB8fCBhdXRvTG9hZERhdGEgPT09IHRydWUpKSB7XG4gICAgICAgICAgICBzZWFyY2goKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBldmVudCA9IG5ldyBFdmVudChwcm9wcy5oYW5kbGUsIHByb3BzLnZpZXdJZCwgbnVsbCk7XG4gICAgICAgIGV2ZW50TWFuYWdlci5maXJlRXZlbnQoRXZlbnRUeXBlLkNPTVBPTkVOVF9MT0FELCBldmVudCk7XG4gICAgfSwgW10pO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKCFVdGlscy5pc051bGwocHJvcHMuZGF0YSkpIHtcbiAgICAgICAgICAgIGxldCBjb25mID0gY29uZmlnO1xuICAgICAgICAgICAgaWYgKFV0aWxzLmlzTnVsbChjb25mKSkge1xuICAgICAgICAgICAgICAgIGNvbmYgPSBVdGlscy5wYXJzZUNvbmZpZyhwcm9wcy5jb25maWcsIHByb3BzLnZpZXdJZCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHByb2Nlc3NEYXRhKHByb3BzLmRhdGEsIGNvbmYpO1xuICAgICAgICB9XG4gICAgfSwgW3Byb3BzLmRhdGFdKTtcblxuICAgIGZ1bmN0aW9uIGFkZFJvd0ZvY3VzTGlzdGVuZXIocm93KSB7XG4gICAgICAgICQoJyNST1ctJyArIHJvdy5pZClcbiAgICAgICAgICAgIC5mb2N1c291dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgbGV0IG5ld1NlbGVjdGVkID0gW107XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBzZWxlY3RlZEVsZW1lbnQgb2Ygc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkRWxlbWVudCAhPT0gcm93LmlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdTZWxlY3RlZC5wdXNoKHNlbGVjdGVkRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKHByb3BzLmNvbmZpZy5kaXNhYmxlUm93U2VsZWN0aW9uKSB8fCBwcm9wcy5jb25maWcuZGlzYWJsZVJvd1NlbGVjdGlvbiA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0U2VsZWN0ZWQobmV3U2VsZWN0ZWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IHVwZGF0ZVJvd0NsYXNzZXMgPSAobmV3Um93cykgPT4ge1xuICAgICAgICBpZiAobmV3Um93cykge1xuICAgICAgICAgICAgaWYgKHByb3BzLmNvbmZpZy5yb3dBdHRyaWJ1dGVzICYmIHByb3BzLmNvbmZpZy5yb3dBdHRyaWJ1dGVzLmNsYXNzRXZhbHVhdG9yKSB7XG4gICAgICAgICAgICAgICAgbGV0IGluZGV4ID0gMDtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHJvdyBvZiBuZXdSb3dzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJvdy5jbGFzc05hbWUgPSBkeW5hbWljSlMuZXhlY3V0ZVNjcmlwdE9iamVjdCgnUk9XLScgKyByb3cuaWQgKyAnY2xhc3NFdmFsdWF0b3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuY29uZmlnLnJvd0F0dHJpYnV0ZXMuY2xhc3NFdmFsdWF0b3IsIHByb3BzLmNvbmZpZy5pZCwge2luZGV4fSwgbnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIGluZGV4Kys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgdXBkYXRlUm93UmVhZE9ubHlTdGF0dXMgPSAobmV3Um93cykgPT4ge1xuICAgICAgICBpZiAobmV3Um93cykge1xuICAgICAgICAgICAgaWYgKHByb3BzLmNvbmZpZy5yb3dBdHRyaWJ1dGVzICYmIHByb3BzLmNvbmZpZy5yb3dBdHRyaWJ1dGVzLnJlYWRPbmx5RXZhbHVhdG9yKSB7XG4gICAgICAgICAgICAgICAgbGV0IGluZGV4ID0gMDtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHJvdyBvZiBuZXdSb3dzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJvdy5yZWFkT25seSA9IGR5bmFtaWNKUy5leGVjdXRlU2NyaXB0T2JqZWN0KCdST1ctJyArIHJvdy5pZCArICdyZWFkT25seUV2YWx1YXRvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5jb25maWcucm93QXR0cmlidXRlcy5yZWFkT25seUV2YWx1YXRvciwgcHJvcHMuY29uZmlnLmlkLCB7aW5kZXh9LCBudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgaW5kZXgrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCB1cGRhdGVDb2x1bW5SZWFkT25seVN0YXR1cyA9IChjb2x1bW4sIG5ld1Jvd3MpID0+IHtcbiAgICAgICAgaWYgKGNvbHVtbi5hdHRyaWJ1dGVzICYmIGNvbHVtbi5hdHRyaWJ1dGVzLnJlYWRPbmx5RXZhbHVhdG9yKSB7XG4gICAgICAgICAgICBsZXQgaW5kZXggPSAwO1xuICAgICAgICAgICAgZm9yIChjb25zdCByb3cgb2YgbmV3Um93cykge1xuICAgICAgICAgICAgICAgIGlmICghcm93LmNvbHVtblJlYWRPbmx5KSB7XG4gICAgICAgICAgICAgICAgICAgIHJvdy5jb2x1bW5SZWFkT25seSA9IHt9O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJvdy5jb2x1bW5SZWFkT25seVtjb2x1bW4uaWRdID0gZHluYW1pY0pTLmV4ZWN1dGVTY3JpcHRPYmplY3QoJ0NPTC0nICsgcm93LmlkICsgJy0nICsgY29sdW1uLmlkICsgJy1yZWFkT25seUV2YWx1YXRvcicsXG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbi5hdHRyaWJ1dGVzLnJlYWRPbmx5RXZhbHVhdG9yLCBwcm9wcy5jb25maWcuaWQsIHtpbmRleH0sIG51bGwpO1xuICAgICAgICAgICAgICAgIGluZGV4Kys7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICB1cGRhdGVTY3JvbGxCYXJQYWRkaW5nKCk7XG4gICAgICAgIGV2ZW50TWFuYWdlci5wcm9jZXNzU3lzdGVtR2VuZXJhdGVkU3Vic2NyaXB0aW9ucyhwcm9wcy5jb25maWcuaWQpO1xuICAgICAgICByb3dDb3VudC5jdXJyZW50ID0gcm93cy5sZW5ndGg7XG5cbiAgICAgICAgbGV0IGV2ZW50ID0gbmV3IEV2ZW50KHByb3BzLmhhbmRsZSwgcHJvcHMudmlld0lkLCByb3dzKTtcbiAgICAgICAgZXZlbnRNYW5hZ2VyLmZpcmVFdmVudChFdmVudFR5cGUuREFUQV9BUlJJVkVELCBldmVudCk7XG5cbiAgICAgICAgLy8gUGxhaW4gUmVhY3QtcHJvcCBjYWxsYmFjayBmb3IgY29uc3VtZXJzIHRoYXQgd2FudCB0byByZWFjdCB0byBhXG4gICAgICAgIC8vIGRhdGEgbG9hZCB3aXRob3V0IGdvaW5nIHRocm91Z2ggdGhlIGV2ZW50TWFuYWdlciBzdWJzY3JpcHRpb25cbiAgICAgICAgLy8gZGFuY2UuIFJlY2VpdmVzIHRoZSBmcmVzaGx5LXJlbmRlcmVkIHJvd3MgYXJyYXkuIFVzZWQgYnlcbiAgICAgICAgLy8gTXVsdGlMb29rdXBGaWVsZCB0byBwcmUtc2VsZWN0IHJvd3MgdGhhdCBhcmUgYWxyZWFkeSBpbiB0aGVcbiAgICAgICAgLy8gZmllbGQncyB2YWx1ZSwgc28gdGhlIG9wZXJhdG9yIGNhbiBzZWUgd2hpY2ggcmVzdWx0cyB0aGV5IGhhdmVcbiAgICAgICAgLy8gYWxyZWFkeSBhZGRlZC5cbiAgICAgICAgaWYgKCFVdGlscy5pc051bGwocHJvcHMub25Sb3dzTG9hZGVkKSkge1xuICAgICAgICAgICAgcHJvcHMub25Sb3dzTG9hZGVkKHJvd3MpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGlsZSBncmlkcyBhdXRvLXNlbGVjdCB0aGUgZmlyc3Qgcm93IGFmdGVyIGEgbG9hZCB3aGVuIG5vXG4gICAgICAgIC8vIHNlbGVjdGlvbiBpcyBpbiBwbGFjZSB5ZXQsIHNvIHRoZSBjb25zdW1lciB2aWV3IGFsd2F5cyBoYXMgYVxuICAgICAgICAvLyBjdXJyZW50bHktc2VsZWN0ZWQgaXRlbSB0byByZW5kZXIgZGV0YWlscyBmb3IuXG4gICAgICAgIC8vXG4gICAgICAgIC8vIENvbmZpZ3VyYWJsZSBwZXItaW5zdGFuY2UgdmlhIGB0aWxlQXV0b1NlbGVjdGAuIERlZmF1bHRzIHRvXG4gICAgICAgIC8vIHRydWUgKGV4aXN0aW5nIGJlaGF2aW91cikuIFZpZXdzIGxpa2UgdGhlIHJlZ2lzdHJhdGlvblxuICAgICAgICAvLyBwcmltYXJ5LWNvbnRhY3QgcGlja2VyIHNldCBpdCB0byBmYWxzZSBiZWNhdXNlIGF1dG8tc2VsZWN0aW5nXG4gICAgICAgIC8vIHdvdWxkIGNyZWF0ZSBhIG1pc2xlYWRpbmcgZGVmYXVsdCDigJQgdGhlIHVzZXIgbXVzdCBhY3RpdmVseVxuICAgICAgICAvLyBjaG9vc2UuIFRoZSBEQVRBX0FSUklWRUQtZHJpdmVuIHJlYmluZCBvbiBiYWNrLW5hdiAoc2VlXG4gICAgICAgIC8vIHByaW1hcnktY29udGFjdC5qc29uKSBzdGlsbCB3b3JrcyBiZWNhdXNlIGl0IHNldHMgdGhlXG4gICAgICAgIC8vIHNlbGVjdGlvbiBleHBsaWNpdGx5IHZpYSBhcGkuc2VsZWN0KCkuXG4gICAgICAgIC8vXG4gICAgICAgIC8vIEZpcmluZyBTRUxFQ1RJT05fQ0hBTkdFIGlubGluZSAobm90IHZpYSBmaXJlU2VsZWN0aW9uRXZlbnQsXG4gICAgICAgIC8vIHdoaWNoIHdvdWxkIHJlYWQgdGhlIHN0aWxsLXN0YWxlIGBzZWxlY3RlZGAgc3RhdGUgb24gdGhpc1xuICAgICAgICAvLyB0aWNrKSBzbyB0aGUgZG93bnN0cmVhbSBzdWJzY3JpYmVyIHdha2VzIHVwIG9uIHRoZSBzYW1lIHRpY2tcbiAgICAgICAgLy8gYXMgdGhlIGRhdGEgYXJyaXZhbC5cbiAgICAgICAgY29uc3QgYXV0b1NlbGVjdCA9IFV0aWxzLmlzTnVsbChjb25maWc/LnRpbGVBdXRvU2VsZWN0KSA/IHRydWUgOiBjb25maWcudGlsZUF1dG9TZWxlY3QgPT09IHRydWU7XG4gICAgICAgIGlmIChhdXRvU2VsZWN0ICYmIGNvbmZpZz8uZ3JpZFR5cGUgPT09ICdUSUxFJyAmJiByb3dzLmxlbmd0aCA+IDAgJiYgc2VsZWN0ZWQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBjb25zdCBmaXJzdFJvd0lkID0gcm93c1swXS5pZDtcbiAgICAgICAgICAgIGNvbnN0IGZpcnN0Um93TGlzdCA9IFtmaXJzdFJvd0lkXTtcbiAgICAgICAgICAgIHNldFNlbGVjdGVkKGZpcnN0Um93TGlzdCk7XG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZFJvd3MgPSBnZXRTZWxlY3RlZFJvd3MoZmlyc3RSb3dMaXN0KTtcbiAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHByb3BzLm9uU2VsZWN0aW9uQ2hhbmdlKSkge1xuICAgICAgICAgICAgICAgIHByb3BzLm9uU2VsZWN0aW9uQ2hhbmdlKHNlbGVjdGVkUm93cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgc2VsZWN0aW9uRXZlbnQgPSBuZXcgRXZlbnQocHJvcHMuaGFuZGxlLCBwcm9wcy52aWV3SWQsIHNlbGVjdGVkUm93cyk7XG4gICAgICAgICAgICBldmVudE1hbmFnZXIuZmlyZUV2ZW50KEV2ZW50VHlwZS5TRUxFQ1RJT05fQ0hBTkdFLCBzZWxlY3Rpb25FdmVudCk7XG4gICAgICAgIH1cbiAgICB9LCBbcm93c10pO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKCFVdGlscy5pc051bGwoZGVsZXRlZFJvd3MpICYmIGRlbGV0ZWRSb3dzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGxldCBldmVudCA9IG5ldyBFdmVudChwcm9wcy5oYW5kbGUsIHByb3BzLnZpZXdJZCwgZGVsZXRlZFJvd3MpO1xuICAgICAgICAgICAgZXZlbnRNYW5hZ2VyLmZpcmVFdmVudChFdmVudFR5cGUuUk9XX0RFTEVURUQsIGV2ZW50KTtcbiAgICAgICAgICAgIHNldERlbGV0ZWRSb3dzKG51bGwpO1xuICAgICAgICB9XG5cbiAgICAgICAgcm93Q291bnQuY3VycmVudCA9IHJvd3MubGVuZ3RoO1xuICAgIH0sIFtkZWxldGVkUm93c10pO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKCFVdGlscy5pc051bGwocHJvcHMucm93cykpIHtcbiAgICAgICAgICAgIGxldCByb3dWYWx1ZXMgPSBbXTtcblxuICAgICAgICAgICAgcm93c1JlZi5jdXJyZW50ID0gcHJvcHMucm93cztcbiAgICAgICAgICAgIHVwZGF0ZVJvd0NsYXNzZXMocHJvcHMucm93cyk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHJvdyBvZiBwcm9wcy5yb3dzKSB7XG4gICAgICAgICAgICAgICAgcm93VmFsdWVzLnB1c2gob2JzZXJ2ZVJvdyhyb3cpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdXBkYXRlUm93UmVhZE9ubHlTdGF0dXMocHJvcHMucm93cyk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBjb25maWcuY29sdW1ucykge1xuICAgICAgICAgICAgICAgIHVwZGF0ZUNvbHVtblJlYWRPbmx5U3RhdHVzKGNvbHVtbiwgcHJvcHMucm93cyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJvd3NSZWYuY3VycmVudCA9IHJvd1ZhbHVlcztcbiAgICAgICAgICAgIHNldFNlbGVjdGVkKFtdKTtcbiAgICAgICAgICAgIHNldFJvd3Mocm93VmFsdWVzKTtcbiAgICAgICAgfVxuICAgIH0sIFtwcm9wcy5yb3dzXSk7XG5cblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHVwZGF0ZVJvd1JlYWRPbmx5U3RhdHVzKHJvd3MpO1xuICAgICAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBjb25maWcuY29sdW1ucykge1xuICAgICAgICAgICAgdXBkYXRlQ29sdW1uUmVhZE9ubHlTdGF0dXMoY29sdW1uLCByb3dzKTtcbiAgICAgICAgfVxuICAgIH0sIFtyb3dzXSk7XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBmaXJlU2VsZWN0aW9uRXZlbnQoKTtcbiAgICB9LCBbc2VsZWN0ZWRdKTtcblxuICAgIGNvbnN0IGlzU2VsZWN0ZWQgPSBpZCA9PiBzZWxlY3RlZC5pbmRleE9mKGlkKSAhPT0gLTE7XG4gICAgY29uc3QgZWRpdG9yQ2hhbmdlSGFuZGxlciA9IChyb3dJZCwgZmllbGQsIHZhbHVlKSA9PiB7XG4gICAgICAgIGZvciAoY29uc3Qgcm93IG9mIHJvd3MpIHtcbiAgICAgICAgICAgIGlmIChyb3cuaWQgPT09IHJvd0lkKSB7XG4gICAgICAgICAgICAgICAgVXRpbHMudXBkYXRlTmVzdGVkUHJvcGVydHkocm93LCBmaWVsZCwgdmFsdWUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdmFsdWVDaGFuZ2VDYWxsYmFjayhyb3dzKTtcbiAgICB9O1xuXG4gICAgY29uc3QgaXNGaWx0ZXJhYmxlID0gKCkgPT4ge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByb3BzLmNvbmZpZy5jb2x1bW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgY29sdW1uID0gcHJvcHMuY29uZmlnLmNvbHVtbnNbaV07XG4gICAgICAgICAgICBpZiAoY29sdW1uLmF0dHJpYnV0ZXNbJ2ZpbHRlcmFibGUnXSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG5cbiAgICBjb25zdCBjcmVhdGVDZWxsID0gKHJvdywgY29sdW1uTmFtZSwgY2VsbEhhbmRsZSkgPT4ge1xuICAgICAgICBsZXQgcm93Q2VsbHMgPSBudWxsO1xuICAgICAgICBmb3IgKGNvbnN0IGNlbGxzRW50cnkgb2YgY2VsbHMpIHtcbiAgICAgICAgICAgIGlmIChjZWxsc0VudHJ5LnJvd0lkID09PSByb3cuaWQpIHtcbiAgICAgICAgICAgICAgICByb3dDZWxscyA9IGNlbGxzRW50cnk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKHJvd0NlbGxzKSB8fCByb3dDZWxscy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJvd0NlbGxzID0ge307XG4gICAgICAgICAgICByb3dDZWxscy5yb3dJZCA9IHJvdy5pZDtcbiAgICAgICAgICAgIGNlbGxzLnB1c2gocm93Q2VsbHMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcm93Q2VsbHNbY29sdW1uTmFtZV0gPSBjZWxsSGFuZGxlO1xuICAgIH07XG5cbiAgICBjb25zdCByZWZyZXNoQ2VsbCA9IChyb3dJZCwgY29sdW1uTmFtZSkgPT4ge1xuICAgICAgICBsZXQgcm93Q2VsbHMgPSBudWxsO1xuICAgICAgICBmb3IgKGNvbnN0IGNlbGwgb2YgY2VsbHMpIHtcbiAgICAgICAgICAgIGlmIChjZWxsLnJvd0lkID09PSByb3dJZCkge1xuICAgICAgICAgICAgICAgIHJvd0NlbGxzID0gY2VsbDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHJvd0NlbGxzKSkge1xuICAgICAgICAgICAgbGV0IGNlbGwgPSByb3dDZWxsc1tjb2x1bW5OYW1lXTtcblxuICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwoY2VsbCkpIHtcbiAgICAgICAgICAgICAgICBjZWxsLmFwaS5yZWZyZXNoKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgcmVtb3ZlQWxsUm93RXJyb3JzQnlDb2x1bW4gPSAoY29sdW1uTmFtZSwgcm93RXJyb3JzKSA9PiB7XG4gICAgICAgIGlmIChyb3dFcnJvcnMpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSByb3dFcnJvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgICAgICBpZiAocm93RXJyb3JzW2ldLmNvbHVtbiA9PT0gY29sdW1uTmFtZSkge1xuICAgICAgICAgICAgICAgICAgICByb3dFcnJvcnMuc3BsaWNlKGksIDEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHJvd0Vycm9ySGFuZGxlciA9IChyb3dJZCwgZXJyb3IsIGNvbHVtbikgPT4ge1xuICAgICAgICBpZiAoT2JqZWN0LmtleXMocm93RXJyb3JNYXApLmxlbmd0aCA9PT0gMCB8fCAhcm93RXJyb3JNYXBbcm93SWRdKSB7XG4gICAgICAgICAgICByb3dFcnJvck1hcFtyb3dJZF0gPSBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChlcnJvciAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKCFyb3dFcnJvck1hcFtyb3dJZF0uZmluZChyb3dFcnJvciA9PiByb3dFcnJvci5jb2x1bW4gPT09IGNvbHVtbikpIHtcbiAgICAgICAgICAgICAgICByb3dFcnJvck1hcFtyb3dJZF0ucHVzaChlcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZW1vdmVBbGxSb3dFcnJvcnNCeUNvbHVtbihjb2x1bW4sIHJvd0Vycm9yTWFwW3Jvd0lkXSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBpc1Jvd0Vycm9yc0VtcHR5ID0gKCkgPT4ge1xuICAgICAgICBpZiAoT2JqZWN0LmtleXMocm93RXJyb3JNYXApLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhyb3dFcnJvck1hcCkpIHtcbiAgICAgICAgICAgIGlmIChyb3dFcnJvck1hcFtrZXldLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZUNoYW5nZUNhbGxiYWNrID0gKHZhbHVlUm93cykgPT4ge1xuICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChwcm9wcy52YWx1ZUNoYW5nZUhhbmRsZXIpKSB7XG4gICAgICAgICAgICBwcm9wcy52YWx1ZUNoYW5nZUhhbmRsZXIodmFsdWVSb3dzLCAhaXNSb3dFcnJvcnNFbXB0eSgpKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICAvLyBDYWNoZSB0aGUgY29tcGlsZWQgSGFuZGxlYmFycyB0ZW1wbGF0ZSBhY3Jvc3MgdGlsZSByZW5kZXJzIHNvIGEgNzUtcm93XG4gICAgLy8gZ3JpZCBkb2Vzbid0IHJlY29tcGlsZSB0aGUgc2FtZSBzdHJpbmcgNzUgdGltZXMgcGVyIHJlbmRlciBwYXNzLiBLZXllZFxuICAgIC8vIGJ5IHRoZSByYXcgdGVtcGxhdGUgc3RyaW5nIHNvIGEgY29uZmlnIHN3YXAgcmVidWlsZHMgYXV0b21hdGljYWxseS5cbiAgICBjb25zdCB0aWxlVGVtcGxhdGVDYWNoZVJlZiA9IFJlYWN0LnVzZVJlZih7a2V5OiBudWxsLCBmbjogbnVsbH0pO1xuXG4gICAgZnVuY3Rpb24gZ2V0VGlsZUxhYmVsKHJvdykge1xuICAgICAgICAvLyBXaGVuIHRpbGVEaXNwbGF5VGVtcGxhdGUgaXMgc2V0LCByZW5kZXIgcmljaCBIVE1MIOKAlCB0aGUgY29sdW1uXG4gICAgICAgIC8vIGxpc3QgYmVjb21lcyBhIG5vLW9wIGZvciB0aGUgdGlsZSBib2R5IChjb2x1bW5zIHN0aWxsIGRyaXZlIHRhYmxlXG4gICAgICAgIC8vIG1vZGUgKyB0aGUgY29sdW1uLWNvbmZpZyBtZXRhZGF0YTsgdGhleSdyZSBub3QgZHVwbGljYXRlZCBhc1xuICAgICAgICAvLyB0ZXh0KS4gT3RoZXJ3aXNlIHdlIGZhbGwgdGhyb3VnaCB0byB0aGUgY29sdW1uIGl0ZXJhdGlvbiwgd2hpY2hcbiAgICAgICAgLy8gaXMgdGhlIGxlZ2FjeSBkZWZhdWx0LiBNaXJyb3JzIEh0bWxQYW5lbDogSGFuZGxlYmFycyBjb21waWxlLFxuICAgICAgICAvLyBhcHBseSBhZ2FpbnN0IHRoZSByb3csIHJlbmRlciB2aWEgSFRNTFJlbmRlcmVyLiBTdXBwb3J0cyBuZXN0ZWRcbiAgICAgICAgLy8gcGF0aHMgKHt7cGVyc29uLm5hbWVzfX0pIGFuZCB0aGUgc3RhbmRhcmQgaGVscGVyIHNldFxuICAgICAgICAvLyAoZXEgLyBuZSAvIGx0IC8gZ3QgLyBsdGUgLyBndGUgLyBhbmQgLyBvcikgcmVnaXN0ZXJlZCBhYm92ZS5cbiAgICAgICAgY29uc3QgdGlsZURpc3BsYXlUZW1wbGF0ZSA9IGNvbmZpZy50aWxlRGlzcGxheVRlbXBsYXRlO1xuICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbCh0aWxlRGlzcGxheVRlbXBsYXRlKSkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAodGlsZVRlbXBsYXRlQ2FjaGVSZWYuY3VycmVudC5rZXkgIT09IHRpbGVEaXNwbGF5VGVtcGxhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGlsZVRlbXBsYXRlQ2FjaGVSZWYuY3VycmVudCA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogdGlsZURpc3BsYXlUZW1wbGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZuOiBIYW5kbGViYXJzLmNvbXBpbGUodGlsZURpc3BsYXlUZW1wbGF0ZSlcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgaHRtbCA9IHRpbGVUZW1wbGF0ZUNhY2hlUmVmLmN1cnJlbnQuZm4ocm93KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gPEhUTUxSZW5kZXJlciBodG1sPXtodG1sfS8+O1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIC8vIERvbid0IGJsYW5rIHRoZSB3aG9sZSBncmlkIGJlY2F1c2Ugb25lIHRpbGUncyB0ZW1wbGF0ZVxuICAgICAgICAgICAgICAgIC8vIHJlZmVyZW5jZWQgYSBtaXNzaW5nIG5lc3RlZCBrZXk7IGxvZyArIGZhbGwgdGhyb3VnaCB0b1xuICAgICAgICAgICAgICAgIC8vIHRoZSBsZWdhY3kgcmVuZGVyZXIgc28gdGhlIHVzZXIgc2VlcyAqc29tZXRoaW5nKi5cbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdbRGF0YUdyaWRdIHRpbGVEaXNwbGF5VGVtcGxhdGUgcmVuZGVyIGZhaWxlZCBmb3Igcm93Jywgcm93LCBlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBjb3VudGVyID0gMDtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgIHtjb25maWcuY29sdW1ucy5tYXAoY29sdW1uID0+IChcbiAgICAgICAgICAgICAgICAgICAgIWNvbHVtbi5hdHRyaWJ1dGVzLmhpZGRlbiA/XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBrZXk9e2NvdW50ZXIrK30+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlYWROZXN0ZWRQcm9wZXJ0eSBoYW5kbGVzIGRvdHRlZCBpZHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxpa2UgXCJwZXJzb24ubmFtZXNcIiDigJQgZGlyZWN0IHJvd1tpZF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJyYWNrZXQgYWNjZXNzIG9ubHkgd29ya2VkIGZvciBmbGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmaWVsZHMgYW5kIHNpbGVudGx5IHJlbmRlcmVkIGJsYW5rXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIHRoZSB2YWx1ZSBsaXZlZCB1bmRlciBhIHN1Yi1vYmplY3QuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBNaXJyb3JzIHRoZSBTVEFOREFSRC1tb2RlIHJlc29sdXRpb24gaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRhYmxlQ2VsbENvbnRlbnQuanN4LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXRpbHMucmVhZE5lc3RlZFByb3BlcnR5KHJvdywgIVV0aWxzLmlzTnVsbChjb2x1bW4uZGF0YUJpbmRpbmcpID8gY29sdW1uLmRhdGFCaW5kaW5nIDogY29sdW1uLmlkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+IDpcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bGwpKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZW5kZXJUaWxlKHJvdywga2V5KSB7XG4gICAgICAgIGNvbnN0IGlzSXRlbVNlbGVjdGVkID0gaXNTZWxlY3RlZChyb3cuaWQpO1xuICAgICAgICByZXR1cm4gKDxHcmlkIGl0ZW0geHMgc3R5bGU9e1V0aWxzLm1lcmdlT2JqZWN0cyhwcm9wcy5jb25maWcudGlsZVN0eWxlLCB7XG4gICAgICAgICAgICBoZWlnaHQ6ICcyMDBweCcsXG4gICAgICAgICAgICBtaW5XaWR0aDogJzIwMHB4J1xuICAgICAgICB9KX0ga2V5PXtrZXl9PlxuICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwib3V0bGluZWRcIiBjb2xvcj17XCJzZWNvbmRhcnlcIn1cbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcjogaXNJdGVtU2VsZWN0ZWQgPyAnMXB4IHNvbGlkIDFweCBzb2xpZCAjZjJhOTAwJyA6ICcxcHggc29saWQgI2UyZTJlMicsXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiBpc0l0ZW1TZWxlY3RlZCA/ICcjZmZmOGUxJyA6ICcjZmFmYWZhJyxcbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17ZXZlbnQgPT4gZG9IYW5kbGVDbGljayhldmVudCwgcm93LmlkKX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGdldFRpbGVMYWJlbChyb3cpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIDwvR3JpZD4pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlbmRlclRpbGVzKCkge1xuICAgICAgICBpZiAoIXJvd3MgfHwgcm93cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIC8vIFRpbGUgZ3JpZCBoYXMgbm8gbmF0aXZlIGVtcHR5LXJvdyBhZmZvcmRhbmNlIGxpa2UgdGhlIHRhYmxlXG4gICAgICAgICAgICAvLyBwYXRoIChgb3VpVGFibGUtZW1wdHlgIENTUyksIHNvIHBhaW50IHRoZSBtZXNzYWdlIGlubGluZS5cbiAgICAgICAgICAgIC8vIENhbGxlciBjYW4gb3ZlcnJpZGUgdmlhIGBjb25maWcuZW1wdHlNZXNzYWdlYCBmb3Igdmlldy1cbiAgICAgICAgICAgIC8vIHNwZWNpZmljIGNvcHkgKFwiTm8gcHJvY3VyZW1lbnRzIHlldFwiLCBldGMpLlxuICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IHByb3BzLmNvbmZpZz8uZW1wdHlNZXNzYWdlIHx8ICdObyBpdGVtcyB0byBzaG93JztcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPEdyaWQgaXRlbSB4cz17MTJ9IHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICAgICAgICAgICAgICAgIG1pbkhlaWdodDogJzEyMHB4JyxcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICcjOWU5ZTllJyxcbiAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6ICcwLjg3NXJlbScsXG4gICAgICAgICAgICAgICAgICAgIGZvbnRTdHlsZTogJ2l0YWxpYycsXG4gICAgICAgICAgICAgICAgfX0+XG4gICAgICAgICAgICAgICAgICAgIHttZXNzYWdlfVxuICAgICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPFJlYWN0LkZyYWdtZW50PlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcm93cy5tYXAoKHJvdywgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzSXRlbVNlbGVjdGVkID0gaXNTZWxlY3RlZChyb3cuaWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGFiZWxJZCA9IGBlbmhhbmNlZC10YWJsZS1jaGVja2JveC0ke2luZGV4fWA7XG4gICAgICAgICAgICAgICAgICAgICAgICByb3cuaW5kZXggPSBpbmRleDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJUaWxlKHJvdywgaW5kZXgpXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgIDwvUmVhY3QuRnJhZ21lbnQ+XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3JlYXRlQ29sdW1uTGF5b3V0SGFuZGxlKGNvbHVtbiwgaW5kZXgpIHtcbiAgICAgICAgaWYgKFV0aWxzLmlzTnVsbChjb2x1bW5MYXlvdXRIYW5kbGVzW2NvbHVtbi5pZCArIGluZGV4XSkpIHtcbiAgICAgICAgICAgIGxldCBoYW5kbGUgPSB7fTtcbiAgICAgICAgICAgIGNvbHVtbkxheW91dEhhbmRsZXNbY29sdW1uLmlkICsgaW5kZXhdID0gaGFuZGxlO1xuICAgICAgICAgICAgcmV0dXJuIGhhbmRsZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb2x1bW5MYXlvdXRIYW5kbGVzW2NvbHVtbi5pZCArIGluZGV4XTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVDZWxsRWRpdG9ySGFuZGxlKGNvbHVtbikge1xuICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKGVkaXRvckhhbmRsZXNbY29sdW1uLmlkICsgXCJfZWRpdG9yXCJdKSkge1xuICAgICAgICAgICAgbGV0IGhhbmRsZSA9IHt9O1xuICAgICAgICAgICAgZWRpdG9ySGFuZGxlc1tjb2x1bW4uaWQgKyBcIl9lZGl0b3JcIl0gPSBoYW5kbGU7XG4gICAgICAgICAgICByZXR1cm4gaGFuZGxlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGVkaXRvckhhbmRsZXNbY29sdW1uLmlkICsgXCJfZWRpdG9yXCJdO1xuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICAgIHZpc2libGUgJiZcbiAgICAgICAgPGRpdiBpZD17cHJvcHMuY29uZmlnLmlkfSBjbGFzc05hbWU9e1V0aWxzLmdldENvbXBvbmVudEF0dHJpYnV0ZShwcm9wcy5jb25maWcsICdjbGFzc05hbWUnLCBudWxsKX0gc3R5bGU9eyhVdGlscy5pc051bGwocHJvcHMuaGFzQm9yZGVyKSB8fCBwcm9wcy5oYXNCb3JkZXIgPT09IHRydWUpID9cbiAgICAgICAgICAgIFV0aWxzLm1lcmdlU3R5bGVzKHtcbiAgICAgICAgICAgICAgICBtYXJnaW46ICcwJyxcbiAgICAgICAgICAgICAgICBib3JkZXI6ICcxcHggc29saWQgI2UyZTJlMicsXG4gICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiAnNHB4JyxcbiAgICAgICAgICAgICAgICAvLyBUSUxFIGdyaWRzIGZpbGwgdGhlaXIgc2xvdCB2aWEgZmxleCBzbyBhIDEwMCUtaGVpZ2h0IGdyaWQgY2FuXG4gICAgICAgICAgICAgICAgLy8gY2VudHJlIGl0cyBlbXB0eSBtZXNzYWdlIChwZXJjZW50YWdlIGhlaWdodHMgZG9uJ3QgcmVzb2x2ZSBvZmZcbiAgICAgICAgICAgICAgICAvLyBhIG1pbi1oZWlnaHQtb25seSBhbmNlc3RvcikuXG4gICAgICAgICAgICAgICAgLi4uKHByb3BzLmNvbmZpZy5ncmlkVHlwZSA9PT0gJ1RJTEUnID8ge2Rpc3BsYXk6ICdmbGV4JywgZmxleERpcmVjdGlvbjogJ2NvbHVtbid9IDoge30pXG4gICAgICAgICAgICB9LCBwcm9wcy5jb25maWcpIDogVXRpbHMubWVyZ2VTdHlsZXMoe1xuICAgICAgICAgICAgICAgIC4uLihwcm9wcy5jb25maWcuZ3JpZFR5cGUgPT09ICdUSUxFJyA/IHtkaXNwbGF5OiAnZmxleCcsIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nfSA6IHt9KVxuICAgICAgICAgICAgfSwgcHJvcHMuY29uZmlnKX0+XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgIVV0aWxzLmlzTnVsbChwcm9wcy5jb25maWcubm90ZXMpID9cbiAgICAgICAgICAgICAgICAgICAgcHJvcHMuY29uZmlnLm5vdGVzLm1hcCgobm90ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxkaXYga2V5PXtub3RlS2V5Kyt9IHN0eWxlPXt7cGFkZGluZzogJzhweCd9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QWxlcnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3ttYXJnaW5Cb3R0b206ICcwJ319XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9e25vdGUubWVzc2FnZVR5cGUgPT09ICdXQVJOJyA/ICd3YXJuaW5nJyA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3RlLm1lc3NhZ2VUeXBlID09PSAnSU5GTycgPyAnJyA6ICdkYW5nZXInfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93PXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9e3tjb2xvcjogJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMC44KSd9fT57bm90ZS5tZXNzYWdlfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FsZXJ0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+O1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICByb3dzUGVyUGFnZU9wdGlvbnMuaW5jbHVkZXMocHJvcHMuY29uZmlnLnBhZ2VTaXplKSA/XG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZy5ncmlkVHlwZSA9PT0gJ1RJTEUnID9cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3twYWRkaW5nOiAnMTZweCcsIGZsZXg6ICcxIDEgYXV0bycsIG1pbkhlaWdodDogMCwgYm94U2l6aW5nOiAnYm9yZGVyLWJveCcsIGRpc3BsYXk6ICdmbGV4JywgZmxleERpcmVjdGlvbjogJ2NvbHVtbid9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0ZpbHRlcmFibGUoKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERhdGFHcmlkRmlsdGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZT17ZmlsdGVySGFuZGxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWc9e3Byb3BzLmNvbmZpZ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0lkPXtwcm9wcy52aWV3SWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcldyYXBwZXJDbGFzcz17cHJvcHMuZmlsdGVyV3JhcHBlckNsYXNzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxXaWR0aD17c2Nyb2xsV2lkdGh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRmlsdGVyU3VibWl0PXtzZWFyY2h9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uUmVxdWVzdFNvcnQ9e2hhbmRsZVJlcXVlc3RTb3J0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc2VzLnJvb3R9IHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXg6ICcxIDEgYXV0bycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbkhlaWdodDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogKCFyb3dzIHx8IHJvd3MubGVuZ3RoID09PSAwKSA/ICdmbGV4JyA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsaWduSXRlbXM6ICghcm93cyB8fCByb3dzLmxlbmd0aCA9PT0gMCkgPyAnY2VudGVyJyA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAoIXJvd3MgfHwgcm93cy5sZW5ndGggPT09IDApID8gJ2NlbnRlcicgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICghcm93cyB8fCByb3dzLmxlbmd0aCA9PT0gMCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZpbGwgdGhlIChub3cgZnVsbC1oZWlnaHQpIGdyaWQgYW5kIGNlbnRyZSB0aGUgZW1wdHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtZXNzYWdlIHZlcnRpY2FsbHkgaW5zdGVhZCBvZiBwaW5uaW5nIGl0IHRvIHRoZSB0b3AuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJyM5ZTllOWUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogJzAuODc1cmVtJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFN0eWxlOiAnaXRhbGljJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cHJvcHMuY29uZmlnPy5lbXB0eU1lc3NhZ2UgfHwgJ05vIGl0ZW1zIHRvIHNob3cnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzcGFjaW5nPXsyfSA9IDE2cHggZ2FwIGJldHdlZW4gdGlsZSBjYXJkcyAoTVVJIDEgdW5pdCA9IDhweCkuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEdyaWQgY29udGFpbmVyIHNwYWNpbmc9ezJ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8R3JpZCBjb250YWluZXIgaXRlbSB4cz17MTJ9IHNwYWNpbmc9ezJ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlclRpbGVzKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA6XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogJzRweCA4cHggMCA4cHgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJCb3R0b206ICcxcHggc29saWQgI2UyZTJlMicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3dpdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3dyYXB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0V3JhcChlLnRhcmdldC5jaGVja2VkKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3g9e3sgJyYgLk11aUZvcm1Db250cm9sTGFiZWwtbGFiZWwnOiB7IGZvbnRTaXplOiAnMC43NXJlbScgfSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9XCJXcmFwIHRhYmxlIHRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSB7YHJlc3BvbnNpdmUtdGFibGVgfSBzdHlsZT17e2hlaWdodDogcHJvcHMuaGVpZ2h0fX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUYWJsZSBjbGFzc05hbWU9e2AkeydvdWlUYWJsZScgKyAocm93cy5sZW5ndGggPT09IDAgPyAnIG91aVRhYmxlLWVtcHR5JyA6ICcnKX1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VsbFNwYWNpbmc9XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWxsZWRieT1cInRhYmxlVGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3t3aWR0aDogJzEwMCUnfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkIGNsYXNzTmFtZT17J2ZpbHRlckhlYWQnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7d2lkdGg6ICdjYWxjKDEwMCUgLSAnICsgcHJvcHMuc2Nyb2xsV2lkdGggKyAncHgpJ319PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRmlsdGVyYWJsZSgpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERhdGFHcmlkRmlsdGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGU9e2ZpbHRlckhhbmRsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZz17Y29uZmlnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0lkPXtwcm9wcy52aWV3SWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJXcmFwcGVyQ2xhc3M9e3Byb3BzLmZpbHRlcldyYXBwZXJDbGFzc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbFdpZHRoPXtzY3JvbGxXaWR0aH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRmlsdGVyU3VibWl0PXtzZWFyY2h9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblJlcXVlc3RTb3J0PXtoYW5kbGVSZXF1ZXN0U29ydH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RGF0YUdyaWRIZWFkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlPXtoZWFkaW5nSGFuZGxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZz17Y29uZmlnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bVNlbGVjdGVkPXtzZWxlY3RlZC5sZW5ndGh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsV2lkdGg9e3Njcm9sbFdpZHRofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU2VsZWN0QWxsQ2xpY2s9e2hhbmRsZVNlbGVjdEFsbENsaWNrfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uUmVxdWVzdFNvcnQ9e2hhbmRsZVJlcXVlc3RTb3J0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd0NvdW50PXt0b3RhbE51bWJlck9mUm93c31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNpemVIYW5kbGVyPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFJvd3MoWy4uLnJvd3NdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VGJvZHkgY2xhc3NOYW1lPXtjbGFzc2VzLnRhYmxlQm9keX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e21heEhlaWdodDogVXRpbHMuaXNOdWxsKHByb3BzLmJvZHlNYXhIZWlnaHQpID8gcHJvcHMuYm9keU1heEhlaWdodCA6ICc0MnZoJ319XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJtYWluVGFibGVCb2R5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Jvd3MubWFwKChyb3csIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzSXRlbVNlbGVjdGVkID0gaXNTZWxlY3RlZChyb3cuaWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsYWJlbElkID0gYGVuaGFuY2VkLXRhYmxlLWNoZWNrYm94LSR7aW5kZXh9YDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZGVmYXVsdFJvd1N0eWxlID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleFdyYXA6ICd3cmFwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuY29uZmlnLnJvd0F0dHJpYnV0ZXMgJiYgcHJvcHMuY29uZmlnLnJvd0F0dHJpYnV0ZXMuc3R5bGUgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXRpbHMubWVyZ2VPYmplY3RzKHByb3BzLmNvbmZpZy5yb3dBdHRyaWJ1dGVzLnN0eWxlLCBkZWZhdWx0Um93U3R5bGUpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRSb3dTdHlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbk1vdXNlRW50ZXI9eygpID0+IGhhbmRsZVJvd01vdXNlRW50ZXIocm93KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbk1vdXNlTGVhdmU9e2hhbmRsZVJvd01vdXNlTGVhdmV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17ZXZlbnQgPT4gaGFuZGxlQ2xpY2soZXZlbnQsIHJvdywgaW5kZXgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRG91YmxlQ2xpY2s9e2V2ZW50ID0+IHByb3BzLm9uUm93RG91YmxlQ2xpY2sgJiYgcHJvcHMub25Sb3dEb3VibGVDbGljayhyb3csIGV2ZW50KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtY2hlY2tlZD17aXNJdGVtU2VsZWN0ZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9eydST1ctJyArIHJvdy5pZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZD17aXNJdGVtU2VsZWN0ZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXsnb3VpLXRhYmxlLXJvdyAnICsgKChoaWdobGlnaHRSb3dTZWxlY3Rpb24uY3VycmVudCA/IGlzSXRlbVNlbGVjdGVkID8gY2xhc3Nlcy50YWJsZVNlbGVjdGVkIDogY2xhc3Nlcy50YWJsZVJvdyA6ICcnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIChyb3cuY2xhc3NOYW1lID8gKCcgJyArIHJvdy5jbGFzc05hbWUpIDogJycpKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5zZWxlY3Rpb25Nb2RlID09PSAnTVVMVElQTEUnID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUZCBwYWRkaW5nPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPXtNVUxUSV9TRUxFQ1RfQ0hFQ0tCT1hfQ09MX1dJRFRIICsgJ3B4J31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9eydzZWxlY3RDZWxsJ30+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e2lzSXRlbVNlbGVjdGVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dFByb3BzPXt7J2FyaWEtbGFiZWxsZWRieSc6IGxhYmVsSWR9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1RkPiA6IG51bGxcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y29uZmlnLmNvbHVtbnMubWFwKGNvbHVtbiA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFV0aWxzLmV2YWx1YXRlQm9vbGVhbkV4cHJlc3Npb24oY29sdW1uLmF0dHJpYnV0ZXNbJ2hpZGRlbiddLCBwcm9wcy5jb25maWcuaWQpID09PSB0cnVlID8gbnVsbCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4ubGF5b3V0ID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogY29sdW1uLmF0dHJpYnV0ZXMud2lkdGggPyBjb2x1bW4uYXR0cmlidXRlcy53aWR0aCA6ICgxMDAgLyBjb25maWcuY29sdW1ucy5sZW5ndGgpICsgJyUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnMTAwJSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxpZ249XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXshcHJvcHMuZGlzYWJsZWQgJiYgaXNJdGVtU2VsZWN0ZWQgJiYgIVV0aWxzLmlzTnVsbChwcm9wcy5mb3JtKSAmJiAhVXRpbHMuaXNOdWxsKGNvbHVtbi5lZGl0b3IpID8gJ2VkaXRDZWxsJyA6IG51bGx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17aW5kZXggKyBcIl9cIiArIGNvbHVtbi5pZH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMYXlvdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZT17Y3JlYXRlQ29sdW1uTGF5b3V0SGFuZGxlKGNvbHVtbiwgaW5kZXgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtpbmRleCArIFwiX1wiICsgY29sdW1uLmlkICsgXCJfbGF5b3V0XCJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZVJvdz17cm93cy5maW5kKChyKSA9PiByLmlkID09PSByb3cuaWQpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93SW5kZXg9e2luZGV4fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnPXtKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHByb3BzLmNvbmZpZy5jb2x1bW5zLmZpbmQoKGNvbCkgPT4gY29sLmlkID09PSBjb2x1bW4uaWQpLmxheW91dCkpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0lkPXtwcm9wcy52aWV3SWR9IHBhcmVudD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9UZD4gOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGNvbHVtbi5hdHRyaWJ1dGVzLndpZHRoID8gY29sdW1uLmF0dHJpYnV0ZXMud2lkdGggOiAoMTAwIC8gY29uZmlnLmNvbHVtbnMubGVuZ3RoKSArICclJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogJzEwMCUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsaWduPVwibGVmdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17IXByb3BzLmRpc2FibGVkICYmIGlzSXRlbVNlbGVjdGVkICYmICFVdGlscy5pc051bGwoY29sdW1uLmVkaXRvcikgPyAnZWRpdENlbGwnIDogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtpbmRleCArIFwiX1wiICsgY29sdW1uLmlkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtldmVudCA9PiBoYW5kbGVDZWxsQ2xpY2soZXZlbnQsIHJvdy5pZCwgY29sdW1uKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUYWJsZUNlbGxDb250ZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cmFwPXt3cmFwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Sb3dFcnJvcj17cm93RXJyb3JIYW5kbGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlPXtjcmVhdGVDZWxsRWRpdG9ySGFuZGxlKGNvbHVtbil9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3SWQ9e3Byb3BzLnZpZXdJZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRvcj17IXByb3BzLmRpc2FibGVkICYmICFyb3cucmVhZE9ubHkgJiYgIXJvdy5jb2x1bW5SZWFkT25seT8uW2NvbHVtbj8uaWRdID8gY29sdW1uLmVkaXRvciA6IG51bGx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZDYWxsYmFjaz17Y3JlYXRlQ2VsbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkPXtpc0l0ZW1TZWxlY3RlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcj17Y29sdW1uLnZhbGlkYXRvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlQ2hhbmdlSGFuZGxlcj17ZWRpdG9yQ2hhbmdlSGFuZGxlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbkNvbmZpZz17Y29sdW1ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUJpbmRpbmc9eyFVdGlscy5pc051bGwoY29sdW1uLmRhdGFCaW5kaW5nKSA/IGNvbHVtbi5kYXRhQmluZGluZyA6IGNvbHVtbi5pZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdz17cm93fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudFR5cGU9e2NvbHVtbi5maWVsZFR5cGUgfHwgY29sdW1uLmVkaXRvcj8uZmllbGRUeXBlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VsbEZvcm1hdHRlcj17Y29sdW1uLmNlbGxGb3JtYXR0ZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcml0ZXJpYT17Y3JpdGVyaWF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9UZD5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Ucj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVGJvZHk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVGFibGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVXRpbHMuaXNOdWxsKHByb3BzLmNvbmZpZy5hdHRyaWJ1dGVzPy5wYWdpbmF0aW9uKSAmJiAoVXRpbHMuaXNOdWxsKHByb3BzLnBhZ2luYXRpb24pIHx8IHByb3BzLnBhZ2luYXRpb24gPT09IHRydWUpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAocHJvcHMuY29uZmlnLmF0dHJpYnV0ZXM/LnBhZ2luYXRpb24gJiYgcHJvcHMuY29uZmlnLmF0dHJpYnV0ZXM/LnBhZ25hdGlvbiA9PT0gdHJ1ZSkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwYWdpbmF0aW9uLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUYWJsZVBhZ2luYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtcImdyaWQtdGFibGUtcGFnaW5hdGlvblwifVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dzUGVyUGFnZU9wdGlvbnM9e3Jvd3NQZXJQYWdlT3B0aW9uc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50PVwiZGl2XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQ9e3RvdGFsTnVtYmVyT2ZSb3dzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dzUGVyUGFnZT17cm93c1BlclBhZ2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2U9e3BhZ2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tJY29uQnV0dG9uUHJvcHM9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhcmlhLWxhYmVsJzogJ3ByZXZpb3VzIHBhZ2UnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0SWNvbkJ1dHRvblByb3BzPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXJpYS1sYWJlbCc6ICduZXh0IHBhZ2UnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblBhZ2VDaGFuZ2U9e2hhbmRsZUNoYW5nZVBhZ2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uUm93c1BlclBhZ2VDaGFuZ2U9e2hhbmRsZUNoYW5nZVJvd3NQZXJQYWdlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgOlxuICAgICAgICAgICAgICAgICAgICBudWxsXG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICk7XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUMsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0QsSUFBQUMsT0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsMEJBQUEsR0FBQUYsT0FBQTtBQUNBQSxPQUFBO0FBQ0EsSUFBQUcsU0FBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUksTUFBQSxHQUFBTCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0FBLE9BQUE7QUFDQSxJQUFBSyxZQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxlQUFBLEdBQUFQLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBTyxnQkFBQSxHQUFBUixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQVEsaUJBQUEsR0FBQVQsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFTLGdCQUFBLEdBQUFWLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBVSxPQUFBLEdBQUFWLE9BQUE7QUFDQSxJQUFB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
1232
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9zdHlsZXMiLCJfcmVhY3RTdXBlclJlc3BvbnNpdmVUYWJsZSIsIl9DaGVja2JveCIsIl9VdGlscyIsIl9SZXN0U2VydmljZSIsIl9EYXRhR3JpZEZpbHRlciIsIl9EYXRhR3JpZEhlYWRpbmciLCJfVGFibGVDZWxsQ29udGVudCIsIl9UYWJsZVBhZ2luYXRpb24iLCJfY29sb3JzIiwiX0V2ZW50IiwiX09ic2VydmFibGUiLCJfRXZlbnRUeXBlIiwiX0dyaWQiLCJfQnV0dG9uIiwiJCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX0FsZXJ0IiwiX0FwcGxpY2F0aW9uTWFuYWdlciIsIl9MYXlvdXQiLCJfRHluYW1pY0pTIiwiX1N3aXRjaCIsIl9Gb3JtQ29udHJvbExhYmVsIiwiX0dyYWJDb250ZXh0IiwiX0N1cnNvck92ZXJsYXkiLCJfcmVhY3RIdG1sUmVuZGVyZXIiLCJlIiwidCIsIldlYWtNYXAiLCJyIiwibiIsIl9fZXNNb2R1bGUiLCJvIiwiaSIsImYiLCJfX3Byb3RvX18iLCJkZWZhdWx0IiwiaGFzIiwiZ2V0Iiwic2V0IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJfZXh0ZW5kcyIsImFzc2lnbiIsImJpbmQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJhcHBseSIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZW51bWVyYWJsZSIsInB1c2giLCJfb2JqZWN0U3ByZWFkIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiX3RvUHJvcGVydHlLZXkiLCJ2YWx1ZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiX3RvUHJpbWl0aXZlIiwiU3ltYm9sIiwidG9QcmltaXRpdmUiLCJUeXBlRXJyb3IiLCJTdHJpbmciLCJOdW1iZXIiLCJIYW5kbGViYXJzIiwicmVnaXN0ZXJIZWxwZXIiLCJlcSIsInYxIiwidjIiLCJuZSIsImx0IiwiZ3QiLCJsdGUiLCJndGUiLCJhbmQiLCJBcnJheSIsInByb3RvdHlwZSIsImV2ZXJ5IiwiQm9vbGVhbiIsIm9yIiwic2xpY2UiLCJzb21lIiwiTVVMVElfU0VMRUNUX0NIRUNLQk9YX0NPTF9XSURUSCIsImV4cG9ydHMiLCJldmFsdWF0ZVRhYmxlQ2VsbFdpZHRoIiwibXVsdGlTZWxlY3QiLCJjb2x1bW4iLCJjb2x1bW5Db3VudCIsIndpZHRoIiwiYXBwbGljYXRpb25NYW5hZ2VyIiwiaXNFeHByZXNzaW9uIiwiYXR0cmlidXRlcyIsImR5bmFtaWNKUyIsImV4ZWN1dGVTY3JpcHQiLCJjb25jYXQiLCJpZCIsIlV0aWxzIiwiaXNOdWxsIiwiZGVzYyIsImEiLCJiIiwib3JkZXJCeSIsInN0YWJsZVNvcnQiLCJhcnJheSIsImNtcCIsInN0YWJpbGl6ZWRUaGlzIiwibWFwIiwiZWwiLCJpbmRleCIsInNvcnQiLCJvcmRlciIsImdldFNvcnRpbmciLCJ1c2VTdHlsZXMiLCJtYWtlU3R5bGVzIiwidGhlbWUiLCJyb290IiwicGFwZXIiLCJoZWlnaHQiLCJwb3NpdGlvbiIsInpJbmRleCIsInNjcm9sbFBhZGRpbmciLCJwYWRkaW5nIiwibm9TY3JvbGxQYWRkaW5nIiwidGFibGVCb2R5IiwiZGlzcGxheSIsIm92ZXJmbG93WSIsInRhYmxlU2VsZWN0ZWQiLCJiYWNrZ3JvdW5kQ29sb3IiLCJncmV5MzAwIiwiYmFja2dyb3VuZCIsInRhYmxlUm93IiwidGFibGVXcmFwcGVyIiwidGFibGUiLCJ2aXN1YWxseUhpZGRlbiIsImJvcmRlciIsImNsaXAiLCJtYXJnaW4iLCJ0b3AiLCJEYXRhR3JpZCIsIlJlYWN0IiwibWVtbyIsInByb3BzIiwiX2NvbmZpZyRhdHRyaWJ1dGVzIiwiX3Byb3BzJGNvbmZpZzMiLCJfcHJvcHMkY29uZmlnJGF0dHJpYnUiLCJfcHJvcHMkY29uZmlnJGF0dHJpYnUyIiwiX3Byb3BzJGNvbmZpZyRhdHRyaWJ1MyIsImNsYXNzZXMiLCJzZXRPcmRlciIsInVzZVN0YXRlIiwiY29uZmlnIiwicGFyc2VDb25maWciLCJ2aWV3SWQiLCJzZXRPcmRlckJ5Iiwic2VsZWN0ZWQiLCJzZXRTZWxlY3RlZCIsInRvdGFsTnVtYmVyT2ZSb3dzIiwic2V0VG90YWxOdW1iZXJPZlJvd3MiLCJjcml0ZXJpYSIsInBhZ2UiLCJzZXRQYWdlIiwicm93cyIsInNldFJvd3MiLCJkZWxldGVkUm93cyIsInNldERlbGV0ZWRSb3dzIiwiZWRpdGFibGUiLCJzZXRFZGl0YWJsZSIsInNjcm9sbFdpZHRoIiwic2V0U2Nyb2xsV2lkdGgiLCJyb3dzUGVyUGFnZU9wdGlvbnMiLCJyb3dzUGVyUGFnZUxvYWRpbmciLCJzZXRSb3dzUGVyUGFnZUxvYWRpbmciLCJyb3dzUGVyUGFnZSIsInNldFJvd3NQZXJQYWdlIiwicGFnZVNpemUiLCJoaWdobGlnaHRSb3dTZWxlY3Rpb24iLCJ1c2VSZWYiLCJkaXNhYmxlUm93U2VsZWN0aW9uIiwiY2VsbHMiLCJoZWFkaW5nSGFuZGxlIiwiZmlsdGVySGFuZGxlIiwiY29sdW1uTGF5b3V0SGFuZGxlcyIsImVkaXRvckhhbmRsZXMiLCJyb3dFcnJvck1hcCIsInZpc2libGUiLCJzZXRWaXNpYmxlIiwid3JhcCIsInNldFdyYXAiLCJyb3dDb3VudCIsInJvd3NSZWYiLCJub3RlS2V5IiwiY29sdW1uV2lkdGhzIiwiZHJhZ1NwZWMiLCJyb3dHcmFiU3BlYyIsInJvdyIsInJvd3NHcmFiYmFibGUiLCJlbmFibGVkIiwiYXBpIiwicGFyYW1ldGVycyIsImlzRmlsdGVyYWJsZSIsImdldFBhcmFtZXRlcnMiLCJzZWxlY3Rpb24iLCJzZWxlY3RlZFJvd3MiLCJqIiwiY29sdW1uRGF0YUJpbmRpbmdzIiwiY29sdW1uTmFtZXMiLCJjb2x1bW5zIiwiZGF0YUJpbmRpbmciLCJnZXRDaGlsZHJlbiIsImNoaWxkcmVuIiwiY2hpbGQiLCJwcm9wZXJ0aWVzIiwiZ2V0T3duUHJvcGVydHlOYW1lcyIsInByb3BlcnR5IiwiY29sdW1uTGF5b3V0SGFuZGxlIiwibW9yZUNoaWxkcmVuIiwiZWRpdG9ySGFuZGxlIiwibG9hZERhdGEiLCJhY3Rpb25Db25maWciLCJldmVudCIsInNlYXJjaCIsImRlbGV0ZVNlbGVjdGVkUm93cyIsIm5ld1Jvd3MiLCJpc1NlbGVjdGVkIiwiZ2V0U2VsZWN0ZWRSb3dzIiwic3BsaWNlIiwibmV3Um93Iiwib25TZWxlY3Rpb25DaGFuZ2UiLCJ1cGRhdGVTY3JvbGxCYXJQYWRkaW5nIiwiY3VycmVudCIsInZhbHVlQ2hhbmdlQ2FsbGJhY2siLCJjbGVhciIsIkV2ZW50IiwiaGFuZGxlIiwiZXZlbnRNYW5hZ2VyIiwiZmlyZUV2ZW50IiwiRXZlbnRUeXBlIiwiU0VMRUNUSU9OX0NIQU5HRSIsImRlbGV0ZVJvd3MiLCJyb3dJZHMiLCJpZFNldCIsIlNldCIsInJlbWFpbmluZyIsInNlbGVjdCIsImFkZFJvd3MiLCJvYnNlcnZlUm93IiwibmV3U2VsZWN0aW9uIiwibnVtYmVyT2ZQYWdlcyIsInJlZnJlc2giLCJwYXJzZWRDb25maWciLCJldmFsdWF0ZUJvb2xlYW5FeHByZXNzaW9uIiwiZm9ybUFwaSIsImhhbmRsZVJvd0dyYWJUb2dnbGUiLCJpc1Jvd0dyYWJiYWJsZSIsIkdyYWJDb250ZXh0IiwiaXNBY3RpdmUiLCJncmFiIiwicm93SW5kZXgiLCJjb21wb25lbnRJZCIsIkN1cnNvck92ZXJsYXkiLCJzaG93IiwiUk9XX0dSQUJfU1RBUlQiLCJ0Ym9keSIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJvZmZzZXRXaWR0aCIsImNsaWVudFdpZHRoIiwid2luZG93Iiwib25yZXNpemUiLCJoYW5kbGVSZXF1ZXN0U29ydCIsImlzRGVzYyIsImhhbmRsZVNlbGVjdEFsbENsaWNrIiwidGFyZ2V0IiwiY2hlY2tlZCIsIm5ld1NlbGVjdGVkcyIsIm5hbWUiLCJlbmFibGVGb3JtTWFya2VycyIsImRvSGFuZGxlQ2xpY2siLCJleGlzdGluZ0luZGV4IiwiaW5kZXhPZiIsIm5ld1NlbGVjdGVkIiwiZmlyZVNlbGVjdGlvbkV2ZW50IiwiZ3JpZFR5cGUiLCJpc1Jvd0RyYWdEaXNhYmxlZCIsImRpc2FibGVkV2hlbiIsImV4ZWN1dGVTY3JpcHRPYmplY3QiLCJzZXRDdXJzb3IiLCJjdXJzb3IiLCJib2R5Iiwic3R5bGUiLCJoYW5kbGVSb3dNb3VzZUVudGVyIiwiaGFuZGxlUm93TW91c2VMZWF2ZSIsImhhbmRsZUNsaWNrIiwiY2xvc2VzdCIsInN0b3BQcm9wYWdhdGlvbiIsIm9uQ2VsbFNlbGVjdGlvbkNoYW5nZSIsImhhbmRsZUNlbGxDbGljayIsImZpZWxkVHlwZSIsImhhbmRsZUNoYW5nZVBhZ2UiLCJuZXdQYWdlIiwiY3VycmVudFBhZ2UiLCJoYW5kbGVDaGFuZ2VSb3dzUGVyUGFnZSIsInByb2Nlc3NEYXRhIiwiZGF0YSIsImNvbmYiLCJ0b3RhbE51bWJlck9mUmVjb3JkcyIsInJlY29yZHMiLCJ1cGRhdGVSb3dDbGFzc2VzIiwidGFibGVSb3dzIiwidW5kZWZpbmVkIiwic2VydmljZSIsImRhdGFTZXJ2aWNlIiwic2VydmljZVR5cGUiLCJ0eXBlIiwibWV0aG9kIiwiaW52b2tlUnBjIiwiaW52b2tlUmVzdCIsImNvbXBvbmVudCIsInRoZW4iLCJyZXN1bHQiLCJjYXRjaCIsImNvbnNvbGUiLCJlcnJvciIsImVycm9yVHlwZSIsInB1Ymxpc2hFcnJvck1lc3NhZ2UiLCJFcnJvciIsInJlc29sdmVQYXJhbWV0ZXJDb25maWdWYWx1ZSIsInVzZUVmZmVjdCIsInVzZUxheW91dEVmZmVjdCIsImV2ZW50SGFuZGxpbmdDb25maWciLCJzdWJzY3JpcHRpb25zIiwiYWRkU3Vic2NyaXB0aW9ucyIsImFkZFN5c3RlbVN1YnNjcmlwdGlvbnMiLCJpc0VkaXRhYmxlIiwidmlzaWJsZUNvbHVtbkNvdW50IiwiaGlkZGVuIiwiZ2V0Q29tcG9uZW50QXR0cmlidXRlIiwic2VsZWN0aW9uTW9kZSIsImVkaXRvciIsImRlZmF1bHRFZGl0b3IiLCJkYXRhUXVlcnlOYW1lIiwiaGFzTG9hZEV2ZW50IiwibG9hZFN1YnNjcmlwdGlvbnMiLCJzdWJzY3JpcHRpb24iLCJldmVudFR5cGUiLCJsb2FkU3Vic2NyaXB0aW9uIiwiYWN0aW9ucyIsImFjdGlvbiIsImFjdGlvblR5cGUiLCJhdXRvTG9hZERhdGEiLCJDT01QT05FTlRfTE9BRCIsImFkZFJvd0ZvY3VzTGlzdGVuZXIiLCJmb2N1c291dCIsInNlbGVjdGVkRWxlbWVudCIsInJvd0F0dHJpYnV0ZXMiLCJjbGFzc0V2YWx1YXRvciIsImNsYXNzTmFtZSIsInVwZGF0ZVJvd1JlYWRPbmx5U3RhdHVzIiwicmVhZE9ubHlFdmFsdWF0b3IiLCJyZWFkT25seSIsInVwZGF0ZUNvbHVtblJlYWRPbmx5U3RhdHVzIiwiY29sdW1uUmVhZE9ubHkiLCJwcm9jZXNzU3lzdGVtR2VuZXJhdGVkU3Vic2NyaXB0aW9ucyIsIkRBVEFfQVJSSVZFRCIsIm9uUm93c0xvYWRlZCIsImF1dG9TZWxlY3QiLCJ0aWxlQXV0b1NlbGVjdCIsImZpcnN0Um93SWQiLCJmaXJzdFJvd0xpc3QiLCJzZWxlY3Rpb25FdmVudCIsIlJPV19ERUxFVEVEIiwicm93VmFsdWVzIiwiZWRpdG9yQ2hhbmdlSGFuZGxlciIsInJvd0lkIiwiZmllbGQiLCJ1cGRhdGVOZXN0ZWRQcm9wZXJ0eSIsImNyZWF0ZUNlbGwiLCJjb2x1bW5OYW1lIiwiY2VsbEhhbmRsZSIsInJvd0NlbGxzIiwiY2VsbHNFbnRyeSIsInJlZnJlc2hDZWxsIiwiY2VsbCIsInJlbW92ZUFsbFJvd0Vycm9yc0J5Q29sdW1uIiwicm93RXJyb3JzIiwicm93RXJyb3JIYW5kbGVyIiwiZmluZCIsInJvd0Vycm9yIiwiaXNSb3dFcnJvcnNFbXB0eSIsImtleSIsInZhbHVlUm93cyIsInZhbHVlQ2hhbmdlSGFuZGxlciIsInRpbGVUZW1wbGF0ZUNhY2hlUmVmIiwiZm4iLCJnZXRUaWxlTGFiZWwiLCJ0aWxlRGlzcGxheVRlbXBsYXRlIiwiY29tcGlsZSIsImh0bWwiLCJjcmVhdGVFbGVtZW50IiwiY291bnRlciIsInJlYWROZXN0ZWRQcm9wZXJ0eSIsInJlbmRlclRpbGUiLCJjb2xzSW5Sb3ciLCJpc0l0ZW1TZWxlY3RlZCIsImZpeGVkV2lkdGgiLCJ3aWR0aFN0eWxlIiwiZmxleEJhc2lzIiwibWF4V2lkdGgiLCJmbGV4R3JvdyIsIm1pbldpZHRoIiwiaXRlbSIsInhzIiwibWVyZ2VPYmplY3RzIiwidGlsZVN0eWxlIiwidmFyaWFudCIsImNvbG9yIiwib25DbGljayIsInJlbmRlclRpbGVzIiwiX3Byb3BzJGNvbmZpZzIiLCJfcHJvcHMkY29uZmlnIiwibWVzc2FnZSIsImVtcHR5TWVzc2FnZSIsImFsaWduSXRlbXMiLCJqdXN0aWZ5Q29udGVudCIsIm1pbkhlaWdodCIsImZvbnRTaXplIiwiZm9udFN0eWxlIiwiaXRlbXNQZXJSb3ciLCJsYXN0Um93U3RhcnQiLCJsYXN0Um93Q291bnQiLCJyZW1haW5kZXIiLCJGcmFnbWVudCIsImNyZWF0ZUNvbHVtbkxheW91dEhhbmRsZSIsImNyZWF0ZUNlbGxFZGl0b3JIYW5kbGUiLCJoYXNCb3JkZXIiLCJtZXJnZVN0eWxlcyIsImJvcmRlclJhZGl1cyIsImZsZXhEaXJlY3Rpb24iLCJub3RlcyIsIm5vdGUiLCJtYXJnaW5Cb3R0b20iLCJtZXNzYWdlVHlwZSIsImluY2x1ZGVzIiwiZmxleCIsImJveFNpemluZyIsImZpbHRlcldyYXBwZXJDbGFzcyIsIm9uRmlsdGVyU3VibWl0Iiwib25SZXF1ZXN0U29ydCIsImNvbnRhaW5lciIsInNwYWNpbmciLCJib3JkZXJCb3R0b20iLCJjb250cm9sIiwib25DaGFuZ2UiLCJzeCIsImxhYmVsIiwiVGFibGUiLCJjZWxsU3BhY2luZyIsIm51bVNlbGVjdGVkIiwib25TZWxlY3RBbGxDbGljayIsInJlc2l6ZUhhbmRsZXIiLCJUYm9keSIsIm1heEhlaWdodCIsImJvZHlNYXhIZWlnaHQiLCJsYWJlbElkIiwiZGVmYXVsdFJvd1N0eWxlIiwiZmxleFdyYXAiLCJUciIsIm9uTW91c2VFbnRlciIsIm9uTW91c2VMZWF2ZSIsIm9uRG91YmxlQ2xpY2siLCJvblJvd0RvdWJsZUNsaWNrIiwicm9sZSIsInRhYkluZGV4IiwiVGQiLCJpbnB1dFByb3BzIiwiX3JvdyRjb2x1bW5SZWFkT25seSIsIl9jb2x1bW4kZWRpdG9yIiwibGF5b3V0IiwiYWxpZ24iLCJkaXNhYmxlZCIsImZvcm0iLCJMYXlvdXQiLCJKU09OIiwicGFyc2UiLCJzdHJpbmdpZnkiLCJjb2wiLCJwYXJlbnQiLCJvblJvd0Vycm9yIiwicmVmQ2FsbGJhY2siLCJ2YWxpZGF0b3IiLCJjb2x1bW5Db25maWciLCJjb250ZW50VHlwZSIsImNlbGxGb3JtYXR0ZXIiLCJwYWdpbmF0aW9uIiwicGFnbmF0aW9uIiwiY291bnQiLCJiYWNrSWNvbkJ1dHRvblByb3BzIiwibmV4dEljb25CdXR0b25Qcm9wcyIsIm9uUGFnZUNoYW5nZSIsIm9uUm93c1BlclBhZ2VDaGFuZ2UiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvRGF0YUdyaWQuanN4Il0sInNvdXJjZXNDb250ZW50IjpbIu+7v2ltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQge21ha2VTdHlsZXN9IGZyb20gJ0BtdWkvc3R5bGVzJztcbmltcG9ydCB7VGFibGUsIFRib2R5LCBUZCwgVHJ9IGZyb20gJ3JlYWN0LXN1cGVyLXJlc3BvbnNpdmUtdGFibGUnO1xuaW1wb3J0ICdyZWFjdC1zdXBlci1yZXNwb25zaXZlLXRhYmxlL2Rpc3QvU3VwZXJSZXNwb25zaXZlVGFibGVTdHlsZS5jc3MnO1xuaW1wb3J0IENoZWNrYm94IGZyb20gJ0BtdWkvbWF0ZXJpYWwvQ2hlY2tib3gnO1xuaW1wb3J0IFV0aWxzIGZyb20gJy4uL1V0aWxzJztcbmltcG9ydCAnLi9EYXRhR3JpZC5jc3MnO1xuaW1wb3J0IHtpbnZva2VSZXN0LCBpbnZva2VScGN9IGZyb20gJy4uL1Jlc3RTZXJ2aWNlJztcbmltcG9ydCBEYXRhR3JpZEZpbHRlciBmcm9tICcuL0RhdGFHcmlkRmlsdGVyJztcbmltcG9ydCBEYXRhR3JpZEhlYWRpbmcgZnJvbSAnLi9EYXRhR3JpZEhlYWRpbmcnO1xuaW1wb3J0IFRhYmxlQ2VsbENvbnRlbnQgZnJvbSAnLi9UYWJsZUNlbGxDb250ZW50JztcbmltcG9ydCBUYWJsZVBhZ2luYXRpb24gZnJvbSAnQG11aS9tYXRlcmlhbC9UYWJsZVBhZ2luYXRpb24nO1xuaW1wb3J0IHtncmV5MzAwfSBmcm9tICdtYXRlcmlhbC11aS9zdHlsZXMvY29sb3JzJztcbmltcG9ydCBFdmVudCBmcm9tICcuLi9ldmVudC9FdmVudCc7XG5pbXBvcnQgZXZlbnRNYW5hZ2VyIGZyb20gJy4uL2V2ZW50L09ic2VydmFibGUnO1xuaW1wb3J0IEV2ZW50VHlwZSBmcm9tICcuLi9ldmVudC9FdmVudFR5cGUnO1xuaW1wb3J0IEdyaWQgZnJvbSAnQG11aS9tYXRlcmlhbC9HcmlkJztcbmltcG9ydCBCdXR0b24gZnJvbSAnQG11aS9tYXRlcmlhbC9CdXR0b24nO1xuaW1wb3J0ICogYXMgJCBmcm9tICdqcXVlcnknO1xuaW1wb3J0IEFsZXJ0IGZyb20gJ3JlYWN0LWJvb3RzdHJhcC9BbGVydCc7XG5pbXBvcnQgYXBwbGljYXRpb25NYW5hZ2VyIGZyb20gJy4uL0FwcGxpY2F0aW9uTWFuYWdlcic7XG5pbXBvcnQge0xheW91dH0gZnJvbSAnLi9sYXlvdXQvTGF5b3V0JztcbmltcG9ydCBkeW5hbWljSlMgZnJvbSBcIi4uL0R5bmFtaWNKU1wiO1xuaW1wb3J0IFN3aXRjaCBmcm9tICdAbXVpL21hdGVyaWFsL1N3aXRjaCc7XG5pbXBvcnQgRm9ybUNvbnRyb2xMYWJlbCBmcm9tICdAbXVpL21hdGVyaWFsL0Zvcm1Db250cm9sTGFiZWwnO1xuaW1wb3J0IEdyYWJDb250ZXh0IGZyb20gJy4uL2ludGVyYWN0aW9uL0dyYWJDb250ZXh0JztcbmltcG9ydCBDdXJzb3JPdmVybGF5IGZyb20gXCIuLi9pbnRlcmFjdGlvbi9DdXJzb3JPdmVybGF5XCI7XG5pbXBvcnQgSFRNTFJlbmRlcmVyIGZyb20gJ3JlYWN0LWh0bWwtcmVuZGVyZXInO1xuXG5jb25zdCBIYW5kbGViYXJzID0gcmVxdWlyZSgnaGFuZGxlYmFycycpO1xuXG4vLyBSZWdpc3RlciB0aGUgc2FtZSBjb252ZW5pZW5jZSBoZWxwZXJzIEh0bWxQYW5lbCBleHBvc2VzIHNvIGFcbi8vIHRpbGVEaXNwbGF5VGVtcGxhdGUgaGFzIGFjY2VzcyB0byB7eyNpZiAoZXEgLi4uKX19IC8ge3sjaWYgKGd0IC4uLil9fSBldGMuXG4vLyBJZGVtcG90ZW50IG9uIG11bHRpcGxlIGltcG9ydHMg4oCUIEhhbmRsZWJhcnMucmVnaXN0ZXJIZWxwZXIganVzdCBvdmVyd3JpdGVzLlxuSGFuZGxlYmFycy5yZWdpc3RlckhlbHBlcih7XG4gICAgZXE6ICh2MSwgdjIpID0+IHYxID09PSB2MixcbiAgICBuZTogKHYxLCB2MikgPT4gdjEgIT09IHYyLFxuICAgIGx0OiAodjEsIHYyKSA9PiB2MSA8IHYyLFxuICAgIGd0OiAodjEsIHYyKSA9PiB2MSA+IHYyLFxuICAgIGx0ZTogKHYxLCB2MikgPT4gdjEgPD0gdjIsXG4gICAgZ3RlOiAodjEsIHYyKSA9PiB2MSA+PSB2MixcbiAgICBhbmQoKSB7IHJldHVybiBBcnJheS5wcm90b3R5cGUuZXZlcnkuY2FsbChhcmd1bWVudHMsIEJvb2xlYW4pOyB9LFxuICAgIG9yKCkgeyByZXR1cm4gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwLCAtMSkuc29tZShCb29sZWFuKTsgfVxufSk7XG5cbmV4cG9ydCBjb25zdCBNVUxUSV9TRUxFQ1RfQ0hFQ0tCT1hfQ09MX1dJRFRIID0gNjQ7XG5cbmZ1bmN0aW9uIGV2YWx1YXRlVGFibGVDZWxsV2lkdGgobXVsdGlTZWxlY3QsIGNvbHVtbiwgY29sdW1uQ291bnQpIHtcblxuICAgIGxldCB3aWR0aCA9IGFwcGxpY2F0aW9uTWFuYWdlci5pc0V4cHJlc3Npb24oY29sdW1uLmF0dHJpYnV0ZXNbJ3dpZHRoJ10pID9cbiAgICAgICAgZHluYW1pY0pTLmV4ZWN1dGVTY3JpcHQoYHBvcHVwVGl0bGVfJHtjb2x1bW4uaWR9YCxjb2x1bW4uYXR0cmlidXRlc1snd2lkdGgnXSwgY29sdW1uKSA6IGNvbHVtbi5hdHRyaWJ1dGVzWyd3aWR0aCddO1xuXG4gICAgcmV0dXJuIG11bHRpU2VsZWN0ID09PSB0cnVlID9cbiAgICAgICAgJ2NhbGMoJyArICghVXRpbHMuaXNOdWxsKHdpZHRoKSA/IHdpZHRoIDpcbiAgICAgICAgICAgICgxMDAgLyBjb2x1bW5Db3VudCkgKyAnJScpICsgJyAtICcgKyAoTVVMVElfU0VMRUNUX0NIRUNLQk9YX0NPTF9XSURUSCAvIGNvbHVtbkNvdW50KSArICdweCknXG4gICAgICAgIDpcbiAgICAgICAgKHR5cGVvZiB3aWR0aCAhPT0gJ3VuZGVmaW5lZCcgPyB3aWR0aCA6ICgxMDAgLyBjb2x1bW5Db3VudCkgKyAnJScpO1xufVxuXG5mdW5jdGlvbiBkZXNjKGEsIGIsIG9yZGVyQnkpIHtcbiAgICBpZiAoYltvcmRlckJ5XSA8IGFbb3JkZXJCeV0pIHtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgIH1cbiAgICBpZiAoYltvcmRlckJ5XSA+IGFbb3JkZXJCeV0pIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICAgIHJldHVybiAwO1xufVxuXG5mdW5jdGlvbiBzdGFibGVTb3J0KGFycmF5LCBjbXApIHtcbiAgICBjb25zdCBzdGFiaWxpemVkVGhpcyA9IGFycmF5Lm1hcCgoZWwsIGluZGV4KSA9PiBbZWwsIGluZGV4XSk7XG4gICAgc3RhYmlsaXplZFRoaXMuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICBjb25zdCBvcmRlciA9IGNtcChhWzBdLCBiWzBdKTtcbiAgICAgICAgaWYgKG9yZGVyICE9PSAwKSByZXR1cm4gb3JkZXI7XG4gICAgICAgIHJldHVybiBhWzFdIC0gYlsxXTtcbiAgICB9KTtcbiAgICByZXR1cm4gc3RhYmlsaXplZFRoaXMubWFwKGVsID0+IGVsWzBdKTtcbn1cblxuZnVuY3Rpb24gZ2V0U29ydGluZyhvcmRlciwgb3JkZXJCeSkge1xuICAgIHJldHVybiBvcmRlciA9PT0gJ2Rlc2MnID8gKGEsIGIpID0+IGRlc2MoYSwgYiwgb3JkZXJCeSkgOiAoYSwgYikgPT4gLWRlc2MoYSwgYiwgb3JkZXJCeSk7XG59XG5cbmNvbnN0IHVzZVN0eWxlcyA9IG1ha2VTdHlsZXModGhlbWUgPT4gKHtcbiAgICByb290OiB7XG4gICAgICAgIHdpZHRoOiAnMTAwJSdcbiAgICB9LFxuICAgIHBhcGVyOiB7XG4gICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICAgICAgekluZGV4OiAnMCcsXG4gICAgfSxcbiAgICBzY3JvbGxQYWRkaW5nOiB7XG4gICAgICAgIHBhZGRpbmc6ICc4cHggIWltcG9ydGFudCdcbiAgICB9LFxuICAgIG5vU2Nyb2xsUGFkZGluZzoge1xuICAgICAgICBwYWRkaW5nOiAnMCAhaW1wb3J0YW50JyxcbiAgICAgICAgd2lkdGg6ICcxcHggIWltcG9ydGFudCdcbiAgICB9LFxuICAgIHRhYmxlQm9keToge1xuICAgICAgICBkaXNwbGF5OiAnYmxvY2snLFxuICAgICAgICBvdmVyZmxvd1k6ICdhdXRvJ1xuICAgIH0sXG4gICAgdGFibGVTZWxlY3RlZDoge1xuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGdyZXkzMDAsXG4gICAgICAgICcmOmhvdmVyJzoge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogJyNmMWYxZjEnXG4gICAgICAgIH1cbiAgICB9LFxuICAgIHRhYmxlUm93OiB7XG4gICAgICAgICcmOmhvdmVyJzoge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogJyNmMWYxZjEnXG4gICAgICAgIH1cbiAgICB9LFxuICAgIHRhYmxlV3JhcHBlcjoge1xuICAgICAgICBoZWlnaHQ6ICcxMDAlJ1xuICAgIH0sXG4gICAgdGFibGU6IHtcbiAgICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgfSxcbiAgICB2aXN1YWxseUhpZGRlbjoge1xuICAgICAgICBib3JkZXI6IDAsXG4gICAgICAgIGNsaXA6ICdyZWN0KDAgMCAwIDApJyxcbiAgICAgICAgaGVpZ2h0OiAxLFxuICAgICAgICBtYXJnaW46IC0xLFxuICAgICAgICBwYWRkaW5nOiAwLFxuICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgdG9wOiAyMCxcbiAgICAgICAgd2lkdGg6IDEsXG4gICAgfVxufSkpO1xuXG5leHBvcnQgY29uc3QgRGF0YUdyaWQgPSBSZWFjdC5tZW1vKChwcm9wcykgPT4ge1xuICAgIGNvbnN0IGNsYXNzZXMgPSB1c2VTdHlsZXMoKTtcbiAgICBjb25zdCBbb3JkZXIsIHNldE9yZGVyXSA9IFJlYWN0LnVzZVN0YXRlKCdkZXNjJyk7XG4gICAgY29uc3QgW2NvbmZpZ10gPSBSZWFjdC51c2VTdGF0ZShVdGlscy5wYXJzZUNvbmZpZyhwcm9wcy5jb25maWcsIHByb3BzLnZpZXdJZCkpO1xuICAgIGNvbnN0IFtvcmRlckJ5LCBzZXRPcmRlckJ5XSA9IFJlYWN0LnVzZVN0YXRlKCdpZCcpO1xuICAgIGNvbnN0IFtzZWxlY3RlZCwgc2V0U2VsZWN0ZWRdID0gUmVhY3QudXNlU3RhdGUoW10pO1xuICAgIGNvbnN0IFt0b3RhbE51bWJlck9mUm93cywgc2V0VG90YWxOdW1iZXJPZlJvd3NdID0gUmVhY3QudXNlU3RhdGUoMCk7XG4gICAgY29uc3QgW2NyaXRlcmlhXSA9IFJlYWN0LnVzZVN0YXRlKHt9KTtcbiAgICBjb25zdCBbcGFnZSwgc2V0UGFnZV0gPSBSZWFjdC51c2VTdGF0ZSgwKTtcbiAgICBjb25zdCBbcm93cywgc2V0Um93c10gPSBSZWFjdC51c2VTdGF0ZShbXSk7XG4gICAgY29uc3QgW2RlbGV0ZWRSb3dzLCBzZXREZWxldGVkUm93c10gPSBSZWFjdC51c2VTdGF0ZShbXSk7XG4gICAgY29uc3QgW2VkaXRhYmxlLCBzZXRFZGl0YWJsZV0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW3Njcm9sbFdpZHRoLCBzZXRTY3JvbGxXaWR0aF0gPSBSZWFjdC51c2VTdGF0ZSgwKTtcbiAgICBjb25zdCBbcm93c1BlclBhZ2VPcHRpb25zXSA9IFJlYWN0LnVzZVN0YXRlKFsxNSwgMzAsIDQ1LCA2MCwgNzUsIDE1MCwgMzAwXSk7XG4gICAgY29uc3QgW3Jvd3NQZXJQYWdlTG9hZGluZywgc2V0Um93c1BlclBhZ2VMb2FkaW5nXSA9IFJlYWN0LnVzZVN0YXRlKHRydWUpO1xuICAgIGNvbnN0IFtyb3dzUGVyUGFnZSwgc2V0Um93c1BlclBhZ2VdID0gUmVhY3QudXNlU3RhdGUocHJvcHMuY29uZmlnLnBhZ2VTaXplKTtcbiAgICBjb25zdCBoaWdobGlnaHRSb3dTZWxlY3Rpb24gPSBSZWFjdC51c2VSZWYoIVV0aWxzLmlzTnVsbChwcm9wcy5jb25maWcuaGlnaGxpZ2h0Um93U2VsZWN0aW9uKVxuICAgICAgICA/IHByb3BzLmNvbmZpZy5oaWdobGlnaHRSb3dTZWxlY3Rpb24gOiAhVXRpbHMuaXNOdWxsKHByb3BzLmNvbmZpZy5kaXNhYmxlUm93U2VsZWN0aW9uKSA/ICFwcm9wcy5jb25maWcuZGlzYWJsZVJvd1NlbGVjdGlvbiA6IHRydWUpO1xuICAgIGNvbnN0IFtjZWxsc10gPSBSZWFjdC51c2VTdGF0ZShbXSk7XG4gICAgY29uc3QgW2hlYWRpbmdIYW5kbGVdID0gUmVhY3QudXNlU3RhdGUoe30pO1xuICAgIGNvbnN0IFtmaWx0ZXJIYW5kbGVdID0gUmVhY3QudXNlU3RhdGUoe30pO1xuICAgIGNvbnN0IFtjb2x1bW5MYXlvdXRIYW5kbGVzXSA9IFJlYWN0LnVzZVN0YXRlKHt9KTtcbiAgICBjb25zdCBbZWRpdG9ySGFuZGxlc10gPSBSZWFjdC51c2VTdGF0ZSh7fSk7XG4gICAgY29uc3QgW3Jvd0Vycm9yTWFwXSA9IFJlYWN0LnVzZVN0YXRlKHt9KTtcbiAgICBjb25zdCBbdmlzaWJsZSwgc2V0VmlzaWJsZV0gPSBSZWFjdC51c2VTdGF0ZSh0cnVlKTtcbiAgICBjb25zdCBbd3JhcCwgc2V0V3JhcF0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3Qgcm93Q291bnQgPSBSZWFjdC51c2VSZWYoLTEpO1xuICAgIGNvbnN0IHJvd3NSZWYgPSBSZWFjdC51c2VSZWYoW10pO1xuICAgIGxldCBub3RlS2V5ID0gMDtcbiAgICBjb25zdCBjb2x1bW5XaWR0aHMgPSBSZWFjdC51c2VSZWYoe30pO1xuXG4gICAgY29uc3QgZHJhZ1NwZWMgPSBjb25maWcuYXR0cmlidXRlcz8uZHJhZ1NwZWMgfHwge307XG4gICAgY29uc3Qgcm93R3JhYlNwZWMgPSBkcmFnU3BlYy5yb3cgfHwge307XG4gICAgY29uc3Qgcm93c0dyYWJiYWJsZSA9IHJvd0dyYWJTcGVjLmVuYWJsZWQgPT09IHRydWU7XG5cbiAgICBjb25zdCBhcGkgPSAoKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBnZXQgaWQoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHByb3BzLmNvbmZpZy5pZDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXQgY3JpdGVyaWEoKSB7XG4gICAgICAgICAgICAgICAgY3JpdGVyaWEucGFyYW1ldGVycyA9IGlzRmlsdGVyYWJsZSgpID8gZmlsdGVySGFuZGxlLmFwaS5nZXRQYXJhbWV0ZXJzKCkgOiBbXTtcbiAgICAgICAgICAgICAgICBjcml0ZXJpYS5wYWdlU2l6ZSA9IHJvd3NQZXJQYWdlO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNyaXRlcmlhO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldCBzZWxlY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgbGV0IHNlbGVjdGVkUm93cyA9IFtdO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2VsZWN0ZWQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCByb3dzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRbaV0gPT09IHJvd3Nbal0uaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFJvd3MucHVzaChyb3dzW2pdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBzZWxlY3RlZFJvd3M7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0IGNvbHVtbkRhdGFCaW5kaW5ncygpIHtcbiAgICAgICAgICAgICAgICBsZXQgY29sdW1uTmFtZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbmZpZy5jb2x1bW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBjb2x1bW4gPSBjb25maWcuY29sdW1uc1tpXTtcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uTmFtZXMucHVzaCghVXRpbHMuaXNOdWxsKGNvbHVtbi5kYXRhQmluZGluZykgPyBjb2x1bW4uZGF0YUJpbmRpbmcgOiBjb2x1bW4uaWQpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBjb2x1bW5OYW1lcztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRDaGlsZHJlbjogKCkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKGhlYWRpbmdIYW5kbGUuYXBpKSkge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIGhlYWRpbmdIYW5kbGUuYXBpLmdldENoaWxkcmVuKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuLnB1c2goY2hpbGQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwoZmlsdGVySGFuZGxlLmFwaSkpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBmaWx0ZXJIYW5kbGUuYXBpLmdldENoaWxkcmVuKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuLnB1c2goY2hpbGQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgbGV0IHByb3BlcnRpZXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhjb2x1bW5MYXlvdXRIYW5kbGVzKTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHByb3BlcnR5IG9mIHByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNvbHVtbkxheW91dEhhbmRsZSA9IGNvbHVtbkxheW91dEhhbmRsZXNbcHJvcGVydHldO1xuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbi5wdXNoKGNvbHVtbkxheW91dEhhbmRsZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKGNvbHVtbkxheW91dEhhbmRsZS5hcGkpICYmICFVdGlscy5pc051bGwoY29sdW1uTGF5b3V0SGFuZGxlLmFwaS5nZXRDaGlsZHJlbikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtb3JlQ2hpbGRyZW4gPSBjb2x1bW5MYXlvdXRIYW5kbGUuYXBpLmdldENoaWxkcmVuKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChtb3JlQ2hpbGRyZW4pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBtb3JlQ2hpbGRyZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4ucHVzaChjaGlsZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcHJvcGVydGllcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGVkaXRvckhhbmRsZXMpO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcHJvcGVydHkgb2YgcHJvcGVydGllcykge1xuICAgICAgICAgICAgICAgICAgICBsZXQgZWRpdG9ySGFuZGxlID0gZWRpdG9ySGFuZGxlc1twcm9wZXJ0eV07XG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuLnB1c2goZWRpdG9ySGFuZGxlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwoZWRpdG9ySGFuZGxlLmFwaSkgJiYgIVV0aWxzLmlzTnVsbChlZGl0b3JIYW5kbGUuYXBpLmdldENoaWxkcmVuKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1vcmVDaGlsZHJlbiA9IGVkaXRvckhhbmRsZS5hcGkuZ2V0Q2hpbGRyZW4oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKG1vcmVDaGlsZHJlbikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIG1vcmVDaGlsZHJlbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbi5wdXNoKGNoaWxkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gY2hpbGRyZW47XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbG9hZERhdGE6IChhY3Rpb25Db25maWcsIGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgc2VhcmNoKGFjdGlvbkNvbmZpZywgZXZlbnQpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGRlbGV0ZVNlbGVjdGVkUm93czogKCkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIFRPRE8gOiBkaXNwb3NlIGZyb20gb2JzZXJ2ZXJcbiAgICAgICAgICAgICAgICBsZXQgbmV3Um93cyA9IHJvd3MuZmlsdGVyKChyb3cpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICFpc1NlbGVjdGVkKHJvdy5pZCk7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBzZXREZWxldGVkUm93cyhnZXRTZWxlY3RlZFJvd3Moc2VsZWN0ZWQpKTtcbiAgICAgICAgICAgICAgICByb3dzLnNwbGljZSgwLCByb3dzLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBuZXdSb3cgb2YgbmV3Um93cykge1xuICAgICAgICAgICAgICAgICAgICByb3dzLnB1c2gobmV3Um93KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZChbXSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChwcm9wcy5vblNlbGVjdGlvbkNoYW5nZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvcHMub25TZWxlY3Rpb25DaGFuZ2UoW10pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHVwZGF0ZVNjcm9sbEJhclBhZGRpbmcoKTtcbiAgICAgICAgICAgICAgICByb3dDb3VudC5jdXJyZW50ID0gcm93cy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgLy8gU3luYyB0aGUgcmVmIHRoYXQgYmFja3MgdGhlIGBnZXQgcm93c2AgZ2V0dGVyIOKAlCBvdGhlcndpc2VcbiAgICAgICAgICAgICAgICAvLyBhcGkucm93cyByZXR1cm5zIHdoYXRldmVyIHJvd3NSZWYgd2FzIGF0IGxhc3Qgc3luYyAob2Z0ZW5cbiAgICAgICAgICAgICAgICAvLyBlbXB0eSBhZnRlciBhIHByZXZpb3VzIGNsZWFyKCkpLCBldmVuIHRob3VnaCB0aGUgbG9jYWxcbiAgICAgICAgICAgICAgICAvLyBgcm93c2AgYXJyYXkgaGFzIGJlZW4gbXV0YXRlZC4gY2xlYXIoKSBkb2VzIHRoaXM7IGRhdGEgbG9hZFxuICAgICAgICAgICAgICAgIC8vIGRvZXMgdGhpczsgYWRkUm93cy9kZWxldGVTZWxlY3RlZFJvd3MgZGlkbid0IOKAlCBsZWFkaW5nIHRvXG4gICAgICAgICAgICAgICAgLy8gVHJhbnNmZXJMaXN0J3MgdHJhbnNmZXItYWxsLWJhY2sgZmFpbGluZyBiZWNhdXNlIGFwaS5yb3dzXG4gICAgICAgICAgICAgICAgLy8gc2hvd2VkIGVtcHR5IHJpZ2h0IGFmdGVyIGEgdHJhbnNmZXItYWxsLW91dC5cbiAgICAgICAgICAgICAgICByb3dzUmVmLmN1cnJlbnQgPSByb3dzO1xuICAgICAgICAgICAgICAgIHZhbHVlQ2hhbmdlQ2FsbGJhY2socm93cyk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gcm93cztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjbGVhcjogKCkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIFRPRE8gOiBkaXNwb3NlIGZyb20gb2JzZXJ2ZXJcbiAgICAgICAgICAgICAgICByb3dzUmVmLmN1cnJlbnQgPSBbXTtcbiAgICAgICAgICAgICAgICBzZXRSb3dzKFtdKTtcblxuICAgICAgICAgICAgICAgIGxldCBldmVudCA9IG5ldyBFdmVudChwcm9wcy5oYW5kbGUsIHByb3BzLnZpZXdJZCwgZ2V0U2VsZWN0ZWRSb3dzKFtdKSk7XG4gICAgICAgICAgICAgICAgZXZlbnRNYW5hZ2VyLmZpcmVFdmVudChFdmVudFR5cGUuU0VMRUNUSU9OX0NIQU5HRSwgZXZlbnQpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIC8vIFN1cmdpY2FsIGRlbGV0ZSBieSByb3cgaWRzIOKAlCBkb2VzIE5PVCB0b3VjaCB0aGUgc2VsZWN0aW9uIHN0YXRlLlxuICAgICAgICAgICAgLy8gQ291bnRlcnBhcnQgdG8gZGVsZXRlU2VsZWN0ZWRSb3dzIGZvciBjYXNlcyAoVHJhbnNmZXJMaXN0IGRvdWJsZS1cbiAgICAgICAgICAgIC8vIGNsaWNrKSB3aGVyZSB0aGUgY2FsbGVyIHdhbnRzIHRvIHJlbW92ZSBzcGVjaWZpYyByb3dzIHdpdGhvdXRcbiAgICAgICAgICAgIC8vIGhpamFja2luZyB0aGUgdXNlcidzIGN1cnJlbnQgZ3JpZCBzZWxlY3Rpb24uXG4gICAgICAgICAgICBkZWxldGVSb3dzOiAocm93SWRzKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFyb3dJZHMgfHwgcm93SWRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHJvd3M7XG4gICAgICAgICAgICAgICAgY29uc3QgaWRTZXQgPSBuZXcgU2V0KHJvd0lkcyk7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVtYWluaW5nID0gcm93cy5maWx0ZXIoKHJvdykgPT4gIWlkU2V0Lmhhcyhyb3cuaWQpKTtcbiAgICAgICAgICAgICAgICByb3dzLnNwbGljZSgwLCByb3dzLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCByb3cgb2YgcmVtYWluaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIHJvd3MucHVzaChyb3cpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB1cGRhdGVTY3JvbGxCYXJQYWRkaW5nKCk7XG4gICAgICAgICAgICAgICAgcm93Q291bnQuY3VycmVudCA9IHJvd3MubGVuZ3RoO1xuICAgICAgICAgICAgICAgIHJvd3NSZWYuY3VycmVudCA9IHJvd3M7XG4gICAgICAgICAgICAgICAgdmFsdWVDaGFuZ2VDYWxsYmFjayhyb3dzKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcm93cztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZWxlY3Q6IChyb3dzKSA9PiB7XG4gICAgICAgICAgICAgIHNldFNlbGVjdGVkKHJvd3MpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFkZFJvd3M6IChuZXdSb3dzKSA9PiB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBuZXdSb3cgb2YgbmV3Um93cykge1xuICAgICAgICAgICAgICAgICAgICByb3dzLnB1c2gob2JzZXJ2ZVJvdyhuZXdSb3cpKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBsZXQgbmV3U2VsZWN0aW9uID0gW107XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBuZXdSb3cgb2YgbmV3Um93cykge1xuICAgICAgICAgICAgICAgICAgICBuZXdTZWxlY3Rpb24ucHVzaChuZXdSb3cuaWQpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChVdGlscy5pc051bGwocHJvcHMuY29uZmlnLmRpc2FibGVSb3dTZWxlY3Rpb24pIHx8IHByb3BzLmNvbmZpZy5kaXNhYmxlUm93U2VsZWN0aW9uID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZChuZXdTZWxlY3Rpb24pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHByb3BzLm9uU2VsZWN0aW9uQ2hhbmdlKSkge1xuICAgICAgICAgICAgICAgICAgICBwcm9wcy5vblNlbGVjdGlvbkNoYW5nZShuZXdSb3dzKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB1cGRhdGVTY3JvbGxCYXJQYWRkaW5nKCk7XG4gICAgICAgICAgICAgICAgcm93Q291bnQuY3VycmVudCA9IHJvd3MubGVuZ3RoO1xuICAgICAgICAgICAgICAgIC8vIFNlZSBkZWxldGVTZWxlY3RlZFJvd3MgZm9yIHRoZSByYXRpb25hbGUg4oCUIGtlZXAgcm93c1JlZiBpblxuICAgICAgICAgICAgICAgIC8vIHN5bmMgd2l0aCB0aGUgbXV0YXRlZCBsb2NhbCByb3dzIGFycmF5IHNvIHRoZSBgZ2V0IHJvd3NgXG4gICAgICAgICAgICAgICAgLy8gZ2V0dGVyIHJldHVybnMgY3VycmVudCBkYXRhIGFmdGVyIGFkZFJvd3MuXG4gICAgICAgICAgICAgICAgcm93c1JlZi5jdXJyZW50ID0gcm93cztcbiAgICAgICAgICAgICAgICB2YWx1ZUNoYW5nZUNhbGxiYWNrKHJvd3MpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJvd3M7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0IG51bWJlck9mUGFnZXMoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRvdGFsTnVtYmVyT2ZSb3dzIC8gcm93c1BlclBhZ2U7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0IHJvd3MoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJvd3NSZWYuY3VycmVudDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZWFyY2g6ICgpID0+IHtcbiAgICAgICAgICAgICAgICBzZWFyY2goKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZWZyZXNoKCkge1xuICAgICAgICAgICAgICAgIGlmIChmaWx0ZXJIYW5kbGUgJiYgZmlsdGVySGFuZGxlLmFwaSkge1xuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJIYW5kbGUuYXBpLnJlZnJlc2goKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBsZXQgcGFyc2VkQ29uZmlnID0gVXRpbHMucGFyc2VDb25maWcocHJvcHMuY29uZmlnLCBwcm9wcy52aWV3SWQpO1xuICAgICAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHBhcnNlZENvbmZpZy52aXNpYmxlKSkge1xuICAgICAgICAgICAgICAgICAgICBzZXRWaXNpYmxlKFV0aWxzLmV2YWx1YXRlQm9vbGVhbkV4cHJlc3Npb24ocGFyc2VkQ29uZmlnLnZpc2libGUsIHBhcnNlZENvbmZpZy5pZCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXQgdmlzaWJsZSh2aXNpYmxlKSB7XG4gICAgICAgICAgICAgICAgc2V0VmlzaWJsZSh2aXNpYmxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9O1xuXG4gICAgY29uc3QgZm9ybUFwaSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGdldCBpZCgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJvcHMuY29uZmlnLmlkICsgXCJfZWRpdF9mb3JtXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGhhbmRsZVJvd0dyYWJUb2dnbGUocm93LCBpbmRleCkge1xuICAgICAgICBpZiAoIWlzUm93R3JhYmJhYmxlKHJvdykpIHJldHVybjtcbiAgICAgICAgaWYgKEdyYWJDb250ZXh0LmlzQWN0aXZlKCkpIHJldHVybjtcblxuICAgICAgICBHcmFiQ29udGV4dC5ncmFiKHByb3BzLmhhbmRsZSwge1xuICAgICAgICAgICAgcm93LFxuICAgICAgICAgICAgcm93SW5kZXg6IGluZGV4LFxuICAgICAgICAgICAgY29tcG9uZW50SWQ6IHByb3BzLmNvbmZpZy5pZCxcbiAgICAgICAgICAgIHZpZXdJZDogcHJvcHMudmlld0lkXG4gICAgICAgIH0pO1xuXG4gICAgICAgIEN1cnNvck92ZXJsYXkuc2hvdygpO1xuXG4gICAgICAgIGV2ZW50TWFuYWdlci5maXJlRXZlbnQoXG4gICAgICAgICAgICBFdmVudFR5cGUuUk9XX0dSQUJfU1RBUlQsXG4gICAgICAgICAgICBuZXcgRXZlbnQocHJvcHMuaGFuZGxlLCBwcm9wcy52aWV3SWQsIHJvdylcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB1cGRhdGVTY3JvbGxCYXJQYWRkaW5nKCkge1xuICAgICAgICB2YXIgdGJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWFpblRhYmxlQm9keScpO1xuICAgICAgICBpZiAodGJvZHkgIT09IG51bGwgJiYgdHlwZW9mIHRib2R5ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgc2V0U2Nyb2xsV2lkdGgodGJvZHkub2Zmc2V0V2lkdGggLSB0Ym9keS5jbGllbnRXaWR0aCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB3aW5kb3cub25yZXNpemUgPSBmdW5jdGlvbiBvbnJlc2l6ZSgpIHtcbiAgICAgICAgdXBkYXRlU2Nyb2xsQmFyUGFkZGluZygpO1xuICAgIH07XG5cbiAgICBjb25zdCBoYW5kbGVSZXF1ZXN0U29ydCA9IChldmVudCwgcHJvcGVydHkpID0+IHtcbiAgICAgICAgY29uc3QgaXNEZXNjID0gb3JkZXJCeSA9PT0gcHJvcGVydHkgJiYgb3JkZXIgPT09ICdkZXNjJztcbiAgICAgICAgc2V0T3JkZXIoaXNEZXNjID8gJ2FzYycgOiAnZGVzYycpO1xuICAgICAgICBzZXRPcmRlckJ5KHByb3BlcnR5KTtcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gaGFuZGxlU2VsZWN0QWxsQ2xpY2soZXZlbnQpIHtcbiAgICAgICAgaWYgKFV0aWxzLmlzTnVsbChwcm9wcy5jb25maWcuZGlzYWJsZVJvd1NlbGVjdGlvbikgfHwgcHJvcHMuY29uZmlnLmRpc2FibGVSb3dTZWxlY3Rpb24gPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBpZiAoZXZlbnQudGFyZ2V0LmNoZWNrZWQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdTZWxlY3RlZHMgPSByb3dzLm1hcChuID0+IG4ubmFtZSk7XG4gICAgICAgICAgICAgICAgc2V0U2VsZWN0ZWQobmV3U2VsZWN0ZWRzKTtcbiAgICAgICAgICAgICAgICBwcm9wcy5vblNlbGVjdGlvbkNoYW5nZShuZXdTZWxlY3RlZHMpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZChbXSk7XG4gICAgICAgICAgICAgICAgcHJvcHMub25TZWxlY3Rpb25DaGFuZ2UoW10pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIuZW5hYmxlRm9ybU1hcmtlcnModHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRTZWxlY3RlZFJvd3Moc2VsZWN0ZWQpIHtcbiAgICAgICAgbGV0IHNlbGVjdGVkUm93cyA9IFtdO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJvd3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCByb3cgPSByb3dzW2ldO1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBzZWxlY3RlZC5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgIGlmIChyb3cuaWQgPT09IHNlbGVjdGVkW2pdKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkUm93cy5wdXNoKHJvdyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHNlbGVjdGVkUm93cztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkb0hhbmRsZUNsaWNrKGV2ZW50LCBpZCkge1xuICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKHByb3BzLmNvbmZpZy5kaXNhYmxlUm93U2VsZWN0aW9uKSB8fCBwcm9wcy5jb25maWcuZGlzYWJsZVJvd1NlbGVjdGlvbiA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5lbmFibGVGb3JtTWFya2Vycyh0cnVlKTtcblxuICAgICAgICAgICAgY29uc3QgZXhpc3RpbmdJbmRleCA9IHNlbGVjdGVkLmluZGV4T2YoaWQpO1xuICAgICAgICAgICAgbGV0IG5ld1NlbGVjdGVkO1xuXG4gICAgICAgICAgICBpZiAocHJvcHMubXVsdGlTZWxlY3QgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAvLyBUb2dnbGUgYmVoYXZpb3VyOiBjbGlja2luZyBhbiBhbHJlYWR5LXNlbGVjdGVkIHJvdyByZW1vdmVzXG4gICAgICAgICAgICAgICAgLy8gaXQ7IG90aGVyd2lzZSBhZGQgaXQgdG8gdGhlIHNlbGVjdGlvbi4gV2l0aG91dCB0aGlzLCB0aGVcbiAgICAgICAgICAgICAgICAvLyBtdWx0aS1zZWxlY3QgcGlja2VyIChlLmcuIE11bHRpTG9va3VwRmllbGQpIGxlYXZlcyB1c2Vyc1xuICAgICAgICAgICAgICAgIC8vIHVuYWJsZSB0byBiYWNrIG91dCBhIHJvdyB0aGV5IHRpY2tlZCBieSBhY2NpZGVudC5cbiAgICAgICAgICAgICAgICBpZiAoZXhpc3RpbmdJbmRleCA+PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld1NlbGVjdGVkID0gWy4uLnNlbGVjdGVkLnNsaWNlKDAsIGV4aXN0aW5nSW5kZXgpLCAuLi5zZWxlY3RlZC5zbGljZShleGlzdGluZ0luZGV4ICsgMSldO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld1NlbGVjdGVkID0gWy4uLnNlbGVjdGVkLCBpZF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBTaW5nbGUtc2VsZWN0OiBuby1vcCBvbiByZS1jbGljayAocHJlc2VydmVkIGZyb20gcHJpb3JcbiAgICAgICAgICAgICAgICAvLyBiZWhhdmlvdXIg4oCUIHNpbmdsZS1yb3cgZ3JpZHMgcmVseSBvbiB0aGlzIHRvIGF2b2lkXG4gICAgICAgICAgICAgICAgLy8gYWNjaWRlbnRhbCBkZXNlbGVjdCBkdXJpbmcgY2VsbCBlZGl0cykuXG4gICAgICAgICAgICAgICAgaWYgKGV4aXN0aW5nSW5kZXggPj0gMCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG5ld1NlbGVjdGVkID0gW2lkXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IHNlbGVjdGVkUm93cyA9IGdldFNlbGVjdGVkUm93cyhuZXdTZWxlY3RlZCk7XG5cbiAgICAgICAgICAgIHNldFNlbGVjdGVkKG5ld1NlbGVjdGVkKTtcbiAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHByb3BzLm9uU2VsZWN0aW9uQ2hhbmdlKSkge1xuICAgICAgICAgICAgICAgIHByb3BzLm9uU2VsZWN0aW9uQ2hhbmdlKHNlbGVjdGVkUm93cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBmaXJlU2VsZWN0aW9uRXZlbnQoKSB7XG4gICAgICAgIGlmIChzZWxlY3RlZC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChjb25maWcpICYmICghVXRpbHMuaXNOdWxsKGhlYWRpbmdIYW5kbGUpIHx8IGNvbmZpZy5ncmlkVHlwZSA9PT0gJ1RJTEUnKSkge1xuICAgICAgICAgICAgICAgIGxldCBldmVudCA9IG5ldyBFdmVudChwcm9wcy5oYW5kbGUsIHByb3BzLnZpZXdJZCwgZ2V0U2VsZWN0ZWRSb3dzKHNlbGVjdGVkKSk7XG4gICAgICAgICAgICAgICAgZXZlbnRNYW5hZ2VyLmZpcmVFdmVudChFdmVudFR5cGUuU0VMRUNUSU9OX0NIQU5HRSwgZXZlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNSb3dHcmFiYmFibGUocm93KSB7XG4gICAgICAgIHJldHVybiByb3dzR3JhYmJhYmxlICYmICFpc1Jvd0RyYWdEaXNhYmxlZChyb3cpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzUm93RHJhZ0Rpc2FibGVkKHJvdykge1xuICAgICAgICBpZiAoIWRyYWdTcGVjLmRpc2FibGVkV2hlbikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGR5bmFtaWNKUy5leGVjdXRlU2NyaXB0T2JqZWN0KFxuICAgICAgICAgICAgJ1JPVy0nICsgcm93LmlkICsgJy1kcmFnLWRpc2FibGVkJyxcbiAgICAgICAgICAgIGRyYWdTcGVjLmRpc2FibGVkV2hlbixcbiAgICAgICAgICAgIHByb3BzLmNvbmZpZy5pZCxcbiAgICAgICAgICAgIHtyb3c6IHJvd30sXG4gICAgICAgICAgICBmYWxzZVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNldEN1cnNvcihjdXJzb3IpIHtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5jdXJzb3IgPSBjdXJzb3IgfHwgJ2RlZmF1bHQnO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGhhbmRsZVJvd01vdXNlRW50ZXIocm93KSB7XG4gICAgICAgIGlmICghaXNSb3dHcmFiYmFibGUocm93KSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gT25seSBzaG93IGdyYWIgY3Vyc29yIGlmIG5vdCBhbHJlYWR5IGhvbGRpbmcgc29tZXRoaW5nXG4gICAgICAgIGlmICghR3JhYkNvbnRleHQuaXNBY3RpdmUoKSkge1xuICAgICAgICAgICAgc2V0Q3Vyc29yKHJvd0dyYWJTcGVjLmN1cnNvciB8fCAnZ3JhYicpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaGFuZGxlUm93TW91c2VMZWF2ZSgpIHtcbiAgICAgICAgc2V0Q3Vyc29yKCdkZWZhdWx0Jyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaGFuZGxlQ2xpY2soZXZlbnQsIHJvdywgaW5kZXgpIHtcbiAgICAgICAgaWYgKGV2ZW50LnRhcmdldC5jbG9zZXN0KCcuZWRpdENlbGwnKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGlmIChyb3dzR3JhYmJhYmxlICYmICFpc1Jvd0RyYWdEaXNhYmxlZChyb3cpKSB7XG4gICAgICAgICAgICBoYW5kbGVSb3dHcmFiVG9nZ2xlKHJvdywgaW5kZXgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFVdGlscy5pc051bGwocHJvcHMub25DZWxsU2VsZWN0aW9uQ2hhbmdlKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZG9IYW5kbGVDbGljayhldmVudCwgcm93LmlkKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBoYW5kbGVDZWxsQ2xpY2soZXZlbnQsIGlkLCBjb2x1bW4pIHtcbiAgICAgICAgaWYgKGNvbHVtbi5maWVsZFR5cGUgIT09ICdkb2N1bWVudCcpIHtcbiAgICAgICAgICAgIC8vIFRPRE8gOiBFdmFsdWF0ZSBpZiB0aGlzIGNhbGwgaXMgbmVjZXNzYXJ5XG4gICAgICAgICAgICBkb0hhbmRsZUNsaWNrKGV2ZW50LCBpZCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChwcm9wcy5vbkNlbGxTZWxlY3Rpb25DaGFuZ2UpKSB7XG4gICAgICAgICAgICBwcm9wcy5vbkNlbGxTZWxlY3Rpb25DaGFuZ2UoaWQsIGNvbHVtbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBoYW5kbGVDaGFuZ2VQYWdlKGV2ZW50LCBuZXdQYWdlKSB7XG4gICAgICAgIGNyaXRlcmlhLmN1cnJlbnRQYWdlID0gbmV3UGFnZSArIDE7XG4gICAgICAgIHNldFBhZ2UobmV3UGFnZSk7XG4gICAgICAgIHNlYXJjaCgpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGhhbmRsZUNoYW5nZVJvd3NQZXJQYWdlKGV2ZW50KSB7XG4gICAgICAgIHNldFJvd3NQZXJQYWdlKHJvd3NQZXJQYWdlID0+IGV2ZW50LnRhcmdldC52YWx1ZSk7XG4gICAgICAgIHNldFBhZ2UoMCk7XG4gICAgfVxuXG4gICAgY29uc3Qgb2JzZXJ2ZVJvdyA9IChyb3cpID0+IHtcbiAgICAgICAgLypsZXQgb2JzZXJ2YWJsZVJvdyA9IG9ic2VydmFibGUocm93KTtcbiAgICAgICAgb2JzZXJ2ZShcbiAgICAgICAgICAgIG9ic2VydmFibGVSb3csXG4gICAgICAgICAgICBjaGFuZ2UgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBuZXdWYWx1ZSA9IGNoYW5nZS5uZXdWYWx1ZTtcbiAgICAgICAgICAgICAgICBsZXQgb2xkVmFsdWUgPSBjaGFuZ2Uub2xkVmFsdWU7XG5cbiAgICAgICAgICAgICAgICBpZiAobmV3VmFsdWUgIT09IG9sZFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hDZWxsKHJvdy5pZCwgY2hhbmdlLm5hbWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gb2JzZXJ2YWJsZVJvdzsqL1xuXG4gICAgICAgIHJldHVybiByb3c7XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIHByb2Nlc3NEYXRhKGRhdGEsIGNvbmYpIHtcbiAgICAgICAgc2V0VG90YWxOdW1iZXJPZlJvd3MoZGF0YS50b3RhbE51bWJlck9mUmVjb3JkcyA/IGRhdGEudG90YWxOdW1iZXJPZlJlY29yZHMgOiBkYXRhLnJlY29yZHMubGVuZ3RoKTtcblxuICAgICAgICByb3dzUmVmLmN1cnJlbnQgPSBkYXRhLnJlY29yZHM7XG4gICAgICAgIHVwZGF0ZVJvd0NsYXNzZXMoZGF0YS5yZWNvcmRzKTtcbiAgICAgICAgbGV0IHRhYmxlUm93cyA9IFtdO1xuICAgICAgICBsZXQgcmVjb3JkcyA9IGRhdGEucmVjb3JkcztcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZWNvcmRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB0YWJsZVJvd3MucHVzaChvYnNlcnZlUm93KHJlY29yZHNbaV0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNldFJvd3ModGFibGVSb3dzKTtcbiAgICB9XG5cbiAgICBjb25zdCBzZWFyY2ggPSAoYWN0aW9uQ29uZmlnID0gbnVsbCwgZXZlbnQpID0+IHtcbiAgICAgICAgbGV0IGNvbmYgPSBjb25maWc7XG4gICAgICAgIGlmIChVdGlscy5pc051bGwoY29uZikpIHtcbiAgICAgICAgICAgIGNvbmYgPSBVdGlscy5wYXJzZUNvbmZpZyhwcm9wcy5jb25maWcsIHByb3BzLnZpZXdJZCk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgc2VydmljZSA9ICFVdGlscy5pc051bGwoY29uZi5kYXRhU2VydmljZSkgPyBjb25mLmRhdGFTZXJ2aWNlIDogIVV0aWxzLmlzTnVsbChhY3Rpb25Db25maWcpID8gYWN0aW9uQ29uZmlnLmRhdGFTZXJ2aWNlIDogbnVsbDtcbiAgICAgICAgaWYgKCFVdGlscy5pc051bGwoc2VydmljZSkpIHtcbiAgICAgICAgICAgIGxldCBzZXJ2aWNlVHlwZSA9IHNlcnZpY2UudHlwZTtcbiAgICAgICAgICAgIGlmICghc2VydmljZVR5cGUpIHtcbiAgICAgICAgICAgICAgICBzZXJ2aWNlVHlwZSA9ICdycGMnO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoc2VydmljZVR5cGUgPT09ICdycGMnIHx8IHNlcnZpY2VUeXBlID09PSAncmVzdCcpIHtcbiAgICAgICAgICAgICAgICBsZXQgbWV0aG9kID0gc2VydmljZVR5cGUgPT09ICdycGMnID8gaW52b2tlUnBjIDogaW52b2tlUmVzdDtcbiAgICAgICAgICAgICAgICBtZXRob2Qoe1xuICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlOiBzZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ6IHByb3BzLmhhbmRsZSxcbiAgICAgICAgICAgICAgICAgICAgdmlld0lkOiBwcm9wcy52aWV3SWQsXG4gICAgICAgICAgICAgICAgICAgIGV2ZW50XG4gICAgICAgICAgICAgICAgfSkudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHByb2Nlc3NEYXRhKHJlc3VsdCwgY29uZik7XG4gICAgICAgICAgICAgICAgfSkuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYoZS5lcnJvclR5cGUgIT09ICdJTlZBTElEX1BBUkFNRVRFUicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFV0aWxzLnB1Ymxpc2hFcnJvck1lc3NhZ2UoZSwgcHJvcHMudmlld0lkKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBzZXJ2aWNlIHR5cGUgOiAnICsgc2VydmljZVR5cGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGFjdGlvbkNvbmZpZyAmJiBhY3Rpb25Db25maWcudmFsdWUpIHtcbiAgICAgICAgICAgICAgICBsZXQgZGF0YSA9IGFwcGxpY2F0aW9uTWFuYWdlci5yZXNvbHZlUGFyYW1ldGVyQ29uZmlnVmFsdWUoYWN0aW9uQ29uZmlnLnZhbHVlKTtcbiAgICAgICAgICAgICAgICBwcm9jZXNzRGF0YShkYXRhLCBjb25mKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBjcml0ZXJpYS5jdXJyZW50UGFnZSA9IDE7XG4gICAgICAgIGlmICghcm93c1BlclBhZ2VMb2FkaW5nKSB7XG4gICAgICAgICAgICBzZXRSb3dzUGVyUGFnZUxvYWRpbmcoZmFsc2UpO1xuICAgICAgICAgICAgc2VhcmNoKCk7XG4gICAgICAgIH1cbiAgICB9LCBbcm93c1BlclBhZ2VdKTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHByb3BzLmhhbmRsZS5hcGkgPSBhcGkoKTtcbiAgICB9KTtcblxuICAgIFJlYWN0LnVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHByb3BzLmhhbmRsZS5hcGkgPSBhcGkoKTtcbiAgICB9LCBbXSk7XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBsZXQgZXZlbnRIYW5kbGluZ0NvbmZpZyA9IFV0aWxzLmlzTnVsbChjb25maWcuZXZlbnRIYW5kbGluZ0NvbmZpZykgPyB7fSA6IGNvbmZpZy5ldmVudEhhbmRsaW5nQ29uZmlnO1xuICAgICAgICBldmVudEhhbmRsaW5nQ29uZmlnLnN1YnNjcmlwdGlvbnMgPSBVdGlscy5pc051bGwoZXZlbnRIYW5kbGluZ0NvbmZpZy5zdWJzY3JpcHRpb25zKSA/IFtdIDogZXZlbnRIYW5kbGluZ0NvbmZpZy5zdWJzY3JpcHRpb25zO1xuXG4gICAgICAgIGV2ZW50TWFuYWdlci5hZGRTdWJzY3JpcHRpb25zKGV2ZW50SGFuZGxpbmdDb25maWcsIHByb3BzLmhhbmRsZSwgcHJvcHMudmlld0lkKTtcbiAgICAgICAgZXZlbnRNYW5hZ2VyLmFkZFN5c3RlbVN1YnNjcmlwdGlvbnMocHJvcHMudmlld0lkLCBjb25maWcpO1xuICAgICAgICBsZXQgaXNFZGl0YWJsZSA9IGZhbHNlO1xuICAgICAgICBsZXQgdmlzaWJsZUNvbHVtbkNvdW50ID0gMDtcblxuICAgICAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBjb25maWcuY29sdW1ucykge1xuICAgICAgICAgICAgbGV0IGhpZGRlbiA9IFV0aWxzLmdldENvbXBvbmVudEF0dHJpYnV0ZShjb2x1bW4sICdoaWRkZW4nLCBmYWxzZSk7XG4gICAgICAgICAgICBpZiAoIVV0aWxzLmV2YWx1YXRlQm9vbGVhbkV4cHJlc3Npb24oaGlkZGVuLCBwcm9wcy5jb25maWcuaWQpKSB7XG4gICAgICAgICAgICAgICAgdmlzaWJsZUNvbHVtbkNvdW50Kys7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbmZpZy5jb2x1bW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgY29sdW1uID0gY29uZmlnLmNvbHVtbnNbaV07XG5cbiAgICAgICAgICAgIGlmICghaXNFZGl0YWJsZSAmJiBjb2x1bW4uYXR0cmlidXRlc1snZWRpdGFibGUnXSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIGlzRWRpdGFibGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHNldEVkaXRhYmxlKHRydWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZighY29sdW1uLmF0dHJpYnV0ZXMpIHtcbiAgICAgICAgICAgICAgICBjb2x1bW4uYXR0cmlidXRlcyA9IHt9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb2x1bW4uYXR0cmlidXRlcy53aWR0aCA9IGV2YWx1YXRlVGFibGVDZWxsV2lkdGgocHJvcHMuc2VsZWN0aW9uTW9kZSA9PT0gJ01VTFRJUExFJywgY29sdW1uLCB2aXNpYmxlQ29sdW1uQ291bnQpO1xuICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwoY29sdW1uLmF0dHJpYnV0ZXMpICYmIGNvbHVtbi5hdHRyaWJ1dGVzWydlZGl0YWJsZSddID09PSB0cnVlICYmIFV0aWxzLmlzTnVsbChjb2x1bW4uZWRpdG9yKSkge1xuICAgICAgICAgICAgICAgIGxldCBkZWZhdWx0RWRpdG9yID0ge307XG4gICAgICAgICAgICAgICAgZGVmYXVsdEVkaXRvci5maWVsZFR5cGUgPSAnVEVYVF9GSUVMRCc7XG4gICAgICAgICAgICAgICAgZGVmYXVsdEVkaXRvci5pZCA9IGNvbHVtbi5pZCArICdFZGl0b3InO1xuXG4gICAgICAgICAgICAgICAgY29sdW1uLmVkaXRvciA9IGRlZmF1bHRFZGl0b3I7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjcml0ZXJpYS5jdXJyZW50UGFnZSA9IDE7XG4gICAgICAgIGNyaXRlcmlhLmRhdGFRdWVyeU5hbWUgPSBjb25maWcuZGF0YVF1ZXJ5TmFtZTtcblxuICAgICAgICBsZXQgaGFzTG9hZEV2ZW50O1xuICAgICAgICBsZXQgbG9hZFN1YnNjcmlwdGlvbnMgPSBldmVudEhhbmRsaW5nQ29uZmlnLnN1YnNjcmlwdGlvbnMuZmlsdGVyKChzdWJzY3JpcHRpb24pID0+IHN1YnNjcmlwdGlvbi5ldmVudFR5cGUgPT09ICdDT01QT05FTlRfTE9BRCcpO1xuICAgICAgICBmb3IgKGNvbnN0IGxvYWRTdWJzY3JpcHRpb24gb2YgbG9hZFN1YnNjcmlwdGlvbnMpIHtcbiAgICAgICAgICAgIGlmIChsb2FkU3Vic2NyaXB0aW9uLmFjdGlvbnMuZmlsdGVyKChhY3Rpb24pID0+IGFjdGlvbi5hY3Rpb25UeXBlID09PSAnbG9hZERhdGEnKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgaGFzTG9hZEV2ZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBhdXRvTG9hZERhdGEgPSBVdGlscy5nZXRDb21wb25lbnRBdHRyaWJ1dGUoY29uZmlnLCAnYXV0b0xvYWREYXRhJywgbnVsbCk7XG4gICAgICAgIGlmICghaGFzTG9hZEV2ZW50ICYmIChhdXRvTG9hZERhdGEgPT09IG51bGwgfHwgYXV0b0xvYWREYXRhID09PSB0cnVlKSkge1xuICAgICAgICAgICAgc2VhcmNoKCk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgZXZlbnQgPSBuZXcgRXZlbnQocHJvcHMuaGFuZGxlLCBwcm9wcy52aWV3SWQsIG51bGwpO1xuICAgICAgICBldmVudE1hbmFnZXIuZmlyZUV2ZW50KEV2ZW50VHlwZS5DT01QT05FTlRfTE9BRCwgZXZlbnQpO1xuICAgIH0sIFtdKTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHByb3BzLmRhdGEpKSB7XG4gICAgICAgICAgICBsZXQgY29uZiA9IGNvbmZpZztcbiAgICAgICAgICAgIGlmIChVdGlscy5pc051bGwoY29uZikpIHtcbiAgICAgICAgICAgICAgICBjb25mID0gVXRpbHMucGFyc2VDb25maWcocHJvcHMuY29uZmlnLCBwcm9wcy52aWV3SWQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBwcm9jZXNzRGF0YShwcm9wcy5kYXRhLCBjb25mKTtcbiAgICAgICAgfVxuICAgIH0sIFtwcm9wcy5kYXRhXSk7XG5cbiAgICBmdW5jdGlvbiBhZGRSb3dGb2N1c0xpc3RlbmVyKHJvdykge1xuICAgICAgICAkKCcjUk9XLScgKyByb3cuaWQpXG4gICAgICAgICAgICAuZm9jdXNvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGxldCBuZXdTZWxlY3RlZCA9IFtdO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qgc2VsZWN0ZWRFbGVtZW50IG9mIHNlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZEVsZW1lbnQgIT09IHJvdy5pZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV3U2VsZWN0ZWQucHVzaChzZWxlY3RlZEVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKFV0aWxzLmlzTnVsbChwcm9wcy5jb25maWcuZGlzYWJsZVJvd1NlbGVjdGlvbikgfHwgcHJvcHMuY29uZmlnLmRpc2FibGVSb3dTZWxlY3Rpb24gPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkKG5ld1NlbGVjdGVkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCB1cGRhdGVSb3dDbGFzc2VzID0gKG5ld1Jvd3MpID0+IHtcbiAgICAgICAgaWYgKG5ld1Jvd3MpIHtcbiAgICAgICAgICAgIGlmIChwcm9wcy5jb25maWcucm93QXR0cmlidXRlcyAmJiBwcm9wcy5jb25maWcucm93QXR0cmlidXRlcy5jbGFzc0V2YWx1YXRvcikge1xuICAgICAgICAgICAgICAgIGxldCBpbmRleCA9IDA7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCByb3cgb2YgbmV3Um93cykge1xuICAgICAgICAgICAgICAgICAgICByb3cuY2xhc3NOYW1lID0gZHluYW1pY0pTLmV4ZWN1dGVTY3JpcHRPYmplY3QoJ1JPVy0nICsgcm93LmlkICsgJ2NsYXNzRXZhbHVhdG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLmNvbmZpZy5yb3dBdHRyaWJ1dGVzLmNsYXNzRXZhbHVhdG9yLCBwcm9wcy5jb25maWcuaWQsIHtpbmRleH0sIG51bGwpO1xuICAgICAgICAgICAgICAgICAgICBpbmRleCsrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHVwZGF0ZVJvd1JlYWRPbmx5U3RhdHVzID0gKG5ld1Jvd3MpID0+IHtcbiAgICAgICAgaWYgKG5ld1Jvd3MpIHtcbiAgICAgICAgICAgIGlmIChwcm9wcy5jb25maWcucm93QXR0cmlidXRlcyAmJiBwcm9wcy5jb25maWcucm93QXR0cmlidXRlcy5yZWFkT25seUV2YWx1YXRvcikge1xuICAgICAgICAgICAgICAgIGxldCBpbmRleCA9IDA7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCByb3cgb2YgbmV3Um93cykge1xuICAgICAgICAgICAgICAgICAgICByb3cucmVhZE9ubHkgPSBkeW5hbWljSlMuZXhlY3V0ZVNjcmlwdE9iamVjdCgnUk9XLScgKyByb3cuaWQgKyAncmVhZE9ubHlFdmFsdWF0b3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuY29uZmlnLnJvd0F0dHJpYnV0ZXMucmVhZE9ubHlFdmFsdWF0b3IsIHByb3BzLmNvbmZpZy5pZCwge2luZGV4fSwgbnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIGluZGV4Kys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgdXBkYXRlQ29sdW1uUmVhZE9ubHlTdGF0dXMgPSAoY29sdW1uLCBuZXdSb3dzKSA9PiB7XG4gICAgICAgIGlmIChjb2x1bW4uYXR0cmlidXRlcyAmJiBjb2x1bW4uYXR0cmlidXRlcy5yZWFkT25seUV2YWx1YXRvcikge1xuICAgICAgICAgICAgbGV0IGluZGV4ID0gMDtcbiAgICAgICAgICAgIGZvciAoY29uc3Qgcm93IG9mIG5ld1Jvd3MpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXJvdy5jb2x1bW5SZWFkT25seSkge1xuICAgICAgICAgICAgICAgICAgICByb3cuY29sdW1uUmVhZE9ubHkgPSB7fTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByb3cuY29sdW1uUmVhZE9ubHlbY29sdW1uLmlkXSA9IGR5bmFtaWNKUy5leGVjdXRlU2NyaXB0T2JqZWN0KCdDT0wtJyArIHJvdy5pZCArICctJyArIGNvbHVtbi5pZCArICctcmVhZE9ubHlFdmFsdWF0b3InLFxuICAgICAgICAgICAgICAgICAgICBjb2x1bW4uYXR0cmlidXRlcy5yZWFkT25seUV2YWx1YXRvciwgcHJvcHMuY29uZmlnLmlkLCB7aW5kZXh9LCBudWxsKTtcbiAgICAgICAgICAgICAgICBpbmRleCsrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgdXBkYXRlU2Nyb2xsQmFyUGFkZGluZygpO1xuICAgICAgICBldmVudE1hbmFnZXIucHJvY2Vzc1N5c3RlbUdlbmVyYXRlZFN1YnNjcmlwdGlvbnMocHJvcHMuY29uZmlnLmlkKTtcbiAgICAgICAgcm93Q291bnQuY3VycmVudCA9IHJvd3MubGVuZ3RoO1xuXG4gICAgICAgIGxldCBldmVudCA9IG5ldyBFdmVudChwcm9wcy5oYW5kbGUsIHByb3BzLnZpZXdJZCwgcm93cyk7XG4gICAgICAgIGV2ZW50TWFuYWdlci5maXJlRXZlbnQoRXZlbnRUeXBlLkRBVEFfQVJSSVZFRCwgZXZlbnQpO1xuXG4gICAgICAgIC8vIFBsYWluIFJlYWN0LXByb3AgY2FsbGJhY2sgZm9yIGNvbnN1bWVycyB0aGF0IHdhbnQgdG8gcmVhY3QgdG8gYVxuICAgICAgICAvLyBkYXRhIGxvYWQgd2l0aG91dCBnb2luZyB0aHJvdWdoIHRoZSBldmVudE1hbmFnZXIgc3Vic2NyaXB0aW9uXG4gICAgICAgIC8vIGRhbmNlLiBSZWNlaXZlcyB0aGUgZnJlc2hseS1yZW5kZXJlZCByb3dzIGFycmF5LiBVc2VkIGJ5XG4gICAgICAgIC8vIE11bHRpTG9va3VwRmllbGQgdG8gcHJlLXNlbGVjdCByb3dzIHRoYXQgYXJlIGFscmVhZHkgaW4gdGhlXG4gICAgICAgIC8vIGZpZWxkJ3MgdmFsdWUsIHNvIHRoZSBvcGVyYXRvciBjYW4gc2VlIHdoaWNoIHJlc3VsdHMgdGhleSBoYXZlXG4gICAgICAgIC8vIGFscmVhZHkgYWRkZWQuXG4gICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHByb3BzLm9uUm93c0xvYWRlZCkpIHtcbiAgICAgICAgICAgIHByb3BzLm9uUm93c0xvYWRlZChyb3dzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRpbGUgZ3JpZHMgYXV0by1zZWxlY3QgdGhlIGZpcnN0IHJvdyBhZnRlciBhIGxvYWQgd2hlbiBub1xuICAgICAgICAvLyBzZWxlY3Rpb24gaXMgaW4gcGxhY2UgeWV0LCBzbyB0aGUgY29uc3VtZXIgdmlldyBhbHdheXMgaGFzIGFcbiAgICAgICAgLy8gY3VycmVudGx5LXNlbGVjdGVkIGl0ZW0gdG8gcmVuZGVyIGRldGFpbHMgZm9yLlxuICAgICAgICAvL1xuICAgICAgICAvLyBDb25maWd1cmFibGUgcGVyLWluc3RhbmNlIHZpYSBgdGlsZUF1dG9TZWxlY3RgLiBEZWZhdWx0cyB0b1xuICAgICAgICAvLyB0cnVlIChleGlzdGluZyBiZWhhdmlvdXIpLiBWaWV3cyBsaWtlIHRoZSByZWdpc3RyYXRpb25cbiAgICAgICAgLy8gcHJpbWFyeS1jb250YWN0IHBpY2tlciBzZXQgaXQgdG8gZmFsc2UgYmVjYXVzZSBhdXRvLXNlbGVjdGluZ1xuICAgICAgICAvLyB3b3VsZCBjcmVhdGUgYSBtaXNsZWFkaW5nIGRlZmF1bHQg4oCUIHRoZSB1c2VyIG11c3QgYWN0aXZlbHlcbiAgICAgICAgLy8gY2hvb3NlLiBUaGUgREFUQV9BUlJJVkVELWRyaXZlbiByZWJpbmQgb24gYmFjay1uYXYgKHNlZVxuICAgICAgICAvLyBwcmltYXJ5LWNvbnRhY3QuanNvbikgc3RpbGwgd29ya3MgYmVjYXVzZSBpdCBzZXRzIHRoZVxuICAgICAgICAvLyBzZWxlY3Rpb24gZXhwbGljaXRseSB2aWEgYXBpLnNlbGVjdCgpLlxuICAgICAgICAvL1xuICAgICAgICAvLyBGaXJpbmcgU0VMRUNUSU9OX0NIQU5HRSBpbmxpbmUgKG5vdCB2aWEgZmlyZVNlbGVjdGlvbkV2ZW50LFxuICAgICAgICAvLyB3aGljaCB3b3VsZCByZWFkIHRoZSBzdGlsbC1zdGFsZSBgc2VsZWN0ZWRgIHN0YXRlIG9uIHRoaXNcbiAgICAgICAgLy8gdGljaykgc28gdGhlIGRvd25zdHJlYW0gc3Vic2NyaWJlciB3YWtlcyB1cCBvbiB0aGUgc2FtZSB0aWNrXG4gICAgICAgIC8vIGFzIHRoZSBkYXRhIGFycml2YWwuXG4gICAgICAgIGNvbnN0IGF1dG9TZWxlY3QgPSBVdGlscy5pc051bGwoY29uZmlnPy50aWxlQXV0b1NlbGVjdCkgPyB0cnVlIDogY29uZmlnLnRpbGVBdXRvU2VsZWN0ID09PSB0cnVlO1xuICAgICAgICBpZiAoYXV0b1NlbGVjdCAmJiBjb25maWc/LmdyaWRUeXBlID09PSAnVElMRScgJiYgcm93cy5sZW5ndGggPiAwICYmIHNlbGVjdGVkLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgY29uc3QgZmlyc3RSb3dJZCA9IHJvd3NbMF0uaWQ7XG4gICAgICAgICAgICBjb25zdCBmaXJzdFJvd0xpc3QgPSBbZmlyc3RSb3dJZF07XG4gICAgICAgICAgICBzZXRTZWxlY3RlZChmaXJzdFJvd0xpc3QpO1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRSb3dzID0gZ2V0U2VsZWN0ZWRSb3dzKGZpcnN0Um93TGlzdCk7XG4gICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChwcm9wcy5vblNlbGVjdGlvbkNoYW5nZSkpIHtcbiAgICAgICAgICAgICAgICBwcm9wcy5vblNlbGVjdGlvbkNoYW5nZShzZWxlY3RlZFJvd3MpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IHNlbGVjdGlvbkV2ZW50ID0gbmV3IEV2ZW50KHByb3BzLmhhbmRsZSwgcHJvcHMudmlld0lkLCBzZWxlY3RlZFJvd3MpO1xuICAgICAgICAgICAgZXZlbnRNYW5hZ2VyLmZpcmVFdmVudChFdmVudFR5cGUuU0VMRUNUSU9OX0NIQU5HRSwgc2VsZWN0aW9uRXZlbnQpO1xuICAgICAgICB9XG4gICAgfSwgW3Jvd3NdKTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmICghVXRpbHMuaXNOdWxsKGRlbGV0ZWRSb3dzKSAmJiBkZWxldGVkUm93cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBsZXQgZXZlbnQgPSBuZXcgRXZlbnQocHJvcHMuaGFuZGxlLCBwcm9wcy52aWV3SWQsIGRlbGV0ZWRSb3dzKTtcbiAgICAgICAgICAgIGV2ZW50TWFuYWdlci5maXJlRXZlbnQoRXZlbnRUeXBlLlJPV19ERUxFVEVELCBldmVudCk7XG4gICAgICAgICAgICBzZXREZWxldGVkUm93cyhudWxsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJvd0NvdW50LmN1cnJlbnQgPSByb3dzLmxlbmd0aDtcbiAgICB9LCBbZGVsZXRlZFJvd3NdKTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHByb3BzLnJvd3MpKSB7XG4gICAgICAgICAgICBsZXQgcm93VmFsdWVzID0gW107XG5cbiAgICAgICAgICAgIHJvd3NSZWYuY3VycmVudCA9IHByb3BzLnJvd3M7XG4gICAgICAgICAgICB1cGRhdGVSb3dDbGFzc2VzKHByb3BzLnJvd3MpO1xuICAgICAgICAgICAgZm9yIChjb25zdCByb3cgb2YgcHJvcHMucm93cykge1xuICAgICAgICAgICAgICAgIHJvd1ZhbHVlcy5wdXNoKG9ic2VydmVSb3cocm93KSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHVwZGF0ZVJvd1JlYWRPbmx5U3RhdHVzKHByb3BzLnJvd3MpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBjb2x1bW4gb2YgY29uZmlnLmNvbHVtbnMpIHtcbiAgICAgICAgICAgICAgICB1cGRhdGVDb2x1bW5SZWFkT25seVN0YXR1cyhjb2x1bW4sIHByb3BzLnJvd3MpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByb3dzUmVmLmN1cnJlbnQgPSByb3dWYWx1ZXM7XG4gICAgICAgICAgICBzZXRTZWxlY3RlZChbXSk7XG4gICAgICAgICAgICBzZXRSb3dzKHJvd1ZhbHVlcyk7XG4gICAgICAgIH1cbiAgICB9LCBbcHJvcHMucm93c10pO1xuXG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICB1cGRhdGVSb3dSZWFkT25seVN0YXR1cyhyb3dzKTtcbiAgICAgICAgZm9yIChjb25zdCBjb2x1bW4gb2YgY29uZmlnLmNvbHVtbnMpIHtcbiAgICAgICAgICAgIHVwZGF0ZUNvbHVtblJlYWRPbmx5U3RhdHVzKGNvbHVtbiwgcm93cyk7XG4gICAgICAgIH1cbiAgICB9LCBbcm93c10pO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgZmlyZVNlbGVjdGlvbkV2ZW50KCk7XG4gICAgfSwgW3NlbGVjdGVkXSk7XG5cbiAgICBjb25zdCBpc1NlbGVjdGVkID0gaWQgPT4gc2VsZWN0ZWQuaW5kZXhPZihpZCkgIT09IC0xO1xuICAgIGNvbnN0IGVkaXRvckNoYW5nZUhhbmRsZXIgPSAocm93SWQsIGZpZWxkLCB2YWx1ZSkgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IHJvdyBvZiByb3dzKSB7XG4gICAgICAgICAgICBpZiAocm93LmlkID09PSByb3dJZCkge1xuICAgICAgICAgICAgICAgIFV0aWxzLnVwZGF0ZU5lc3RlZFByb3BlcnR5KHJvdywgZmllbGQsIHZhbHVlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHZhbHVlQ2hhbmdlQ2FsbGJhY2socm93cyk7XG4gICAgfTtcblxuICAgIGNvbnN0IGlzRmlsdGVyYWJsZSA9ICgpID0+IHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcm9wcy5jb25maWcuY29sdW1ucy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbGV0IGNvbHVtbiA9IHByb3BzLmNvbmZpZy5jb2x1bW5zW2ldO1xuICAgICAgICAgICAgaWYgKGNvbHVtbi5hdHRyaWJ1dGVzWydmaWx0ZXJhYmxlJ10gPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuXG4gICAgY29uc3QgY3JlYXRlQ2VsbCA9IChyb3csIGNvbHVtbk5hbWUsIGNlbGxIYW5kbGUpID0+IHtcbiAgICAgICAgbGV0IHJvd0NlbGxzID0gbnVsbDtcbiAgICAgICAgZm9yIChjb25zdCBjZWxsc0VudHJ5IG9mIGNlbGxzKSB7XG4gICAgICAgICAgICBpZiAoY2VsbHNFbnRyeS5yb3dJZCA9PT0gcm93LmlkKSB7XG4gICAgICAgICAgICAgICAgcm93Q2VsbHMgPSBjZWxsc0VudHJ5O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFV0aWxzLmlzTnVsbChyb3dDZWxscykgfHwgcm93Q2VsbHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByb3dDZWxscyA9IHt9O1xuICAgICAgICAgICAgcm93Q2VsbHMucm93SWQgPSByb3cuaWQ7XG4gICAgICAgICAgICBjZWxscy5wdXNoKHJvd0NlbGxzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJvd0NlbGxzW2NvbHVtbk5hbWVdID0gY2VsbEhhbmRsZTtcbiAgICB9O1xuXG4gICAgY29uc3QgcmVmcmVzaENlbGwgPSAocm93SWQsIGNvbHVtbk5hbWUpID0+IHtcbiAgICAgICAgbGV0IHJvd0NlbGxzID0gbnVsbDtcbiAgICAgICAgZm9yIChjb25zdCBjZWxsIG9mIGNlbGxzKSB7XG4gICAgICAgICAgICBpZiAoY2VsbC5yb3dJZCA9PT0gcm93SWQpIHtcbiAgICAgICAgICAgICAgICByb3dDZWxscyA9IGNlbGw7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChyb3dDZWxscykpIHtcbiAgICAgICAgICAgIGxldCBjZWxsID0gcm93Q2VsbHNbY29sdW1uTmFtZV07XG5cbiAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKGNlbGwpKSB7XG4gICAgICAgICAgICAgICAgY2VsbC5hcGkucmVmcmVzaCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IHJlbW92ZUFsbFJvd0Vycm9yc0J5Q29sdW1uID0gKGNvbHVtbk5hbWUsIHJvd0Vycm9ycykgPT4ge1xuICAgICAgICBpZiAocm93RXJyb3JzKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gcm93RXJyb3JzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJvd0Vycm9yc1tpXS5jb2x1bW4gPT09IGNvbHVtbk5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgcm93RXJyb3JzLnNwbGljZShpLCAxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCByb3dFcnJvckhhbmRsZXIgPSAocm93SWQsIGVycm9yLCBjb2x1bW4pID0+IHtcbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKHJvd0Vycm9yTWFwKS5sZW5ndGggPT09IDAgfHwgIXJvd0Vycm9yTWFwW3Jvd0lkXSkge1xuICAgICAgICAgICAgcm93RXJyb3JNYXBbcm93SWRdID0gW107XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXJyb3IgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGlmICghcm93RXJyb3JNYXBbcm93SWRdLmZpbmQocm93RXJyb3IgPT4gcm93RXJyb3IuY29sdW1uID09PSBjb2x1bW4pKSB7XG4gICAgICAgICAgICAgICAgcm93RXJyb3JNYXBbcm93SWRdLnB1c2goZXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVtb3ZlQWxsUm93RXJyb3JzQnlDb2x1bW4oY29sdW1uLCByb3dFcnJvck1hcFtyb3dJZF0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgaXNSb3dFcnJvcnNFbXB0eSA9ICgpID0+IHtcbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKHJvd0Vycm9yTWFwKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMocm93RXJyb3JNYXApKSB7XG4gICAgICAgICAgICBpZiAocm93RXJyb3JNYXBba2V5XS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWVDaGFuZ2VDYWxsYmFjayA9ICh2YWx1ZVJvd3MpID0+IHtcbiAgICAgICAgaWYgKCFVdGlscy5pc051bGwocHJvcHMudmFsdWVDaGFuZ2VIYW5kbGVyKSkge1xuICAgICAgICAgICAgcHJvcHMudmFsdWVDaGFuZ2VIYW5kbGVyKHZhbHVlUm93cywgIWlzUm93RXJyb3JzRW1wdHkoKSk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgLy8gQ2FjaGUgdGhlIGNvbXBpbGVkIEhhbmRsZWJhcnMgdGVtcGxhdGUgYWNyb3NzIHRpbGUgcmVuZGVycyBzbyBhIDc1LXJvd1xuICAgIC8vIGdyaWQgZG9lc24ndCByZWNvbXBpbGUgdGhlIHNhbWUgc3RyaW5nIDc1IHRpbWVzIHBlciByZW5kZXIgcGFzcy4gS2V5ZWRcbiAgICAvLyBieSB0aGUgcmF3IHRlbXBsYXRlIHN0cmluZyBzbyBhIGNvbmZpZyBzd2FwIHJlYnVpbGRzIGF1dG9tYXRpY2FsbHkuXG4gICAgY29uc3QgdGlsZVRlbXBsYXRlQ2FjaGVSZWYgPSBSZWFjdC51c2VSZWYoe2tleTogbnVsbCwgZm46IG51bGx9KTtcblxuICAgIGZ1bmN0aW9uIGdldFRpbGVMYWJlbChyb3cpIHtcbiAgICAgICAgLy8gV2hlbiB0aWxlRGlzcGxheVRlbXBsYXRlIGlzIHNldCwgcmVuZGVyIHJpY2ggSFRNTCDigJQgdGhlIGNvbHVtblxuICAgICAgICAvLyBsaXN0IGJlY29tZXMgYSBuby1vcCBmb3IgdGhlIHRpbGUgYm9keSAoY29sdW1ucyBzdGlsbCBkcml2ZSB0YWJsZVxuICAgICAgICAvLyBtb2RlICsgdGhlIGNvbHVtbi1jb25maWcgbWV0YWRhdGE7IHRoZXkncmUgbm90IGR1cGxpY2F0ZWQgYXNcbiAgICAgICAgLy8gdGV4dCkuIE90aGVyd2lzZSB3ZSBmYWxsIHRocm91Z2ggdG8gdGhlIGNvbHVtbiBpdGVyYXRpb24sIHdoaWNoXG4gICAgICAgIC8vIGlzIHRoZSBsZWdhY3kgZGVmYXVsdC4gTWlycm9ycyBIdG1sUGFuZWw6IEhhbmRsZWJhcnMgY29tcGlsZSxcbiAgICAgICAgLy8gYXBwbHkgYWdhaW5zdCB0aGUgcm93LCByZW5kZXIgdmlhIEhUTUxSZW5kZXJlci4gU3VwcG9ydHMgbmVzdGVkXG4gICAgICAgIC8vIHBhdGhzICh7e3BlcnNvbi5uYW1lc319KSBhbmQgdGhlIHN0YW5kYXJkIGhlbHBlciBzZXRcbiAgICAgICAgLy8gKGVxIC8gbmUgLyBsdCAvIGd0IC8gbHRlIC8gZ3RlIC8gYW5kIC8gb3IpIHJlZ2lzdGVyZWQgYWJvdmUuXG4gICAgICAgIGNvbnN0IHRpbGVEaXNwbGF5VGVtcGxhdGUgPSBjb25maWcudGlsZURpc3BsYXlUZW1wbGF0ZTtcbiAgICAgICAgaWYgKCFVdGlscy5pc051bGwodGlsZURpc3BsYXlUZW1wbGF0ZSkpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgaWYgKHRpbGVUZW1wbGF0ZUNhY2hlUmVmLmN1cnJlbnQua2V5ICE9PSB0aWxlRGlzcGxheVRlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRpbGVUZW1wbGF0ZUNhY2hlUmVmLmN1cnJlbnQgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IHRpbGVEaXNwbGF5VGVtcGxhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBmbjogSGFuZGxlYmFycy5jb21waWxlKHRpbGVEaXNwbGF5VGVtcGxhdGUpXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGh0bWwgPSB0aWxlVGVtcGxhdGVDYWNoZVJlZi5jdXJyZW50LmZuKHJvdyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDxIVE1MUmVuZGVyZXIgaHRtbD17aHRtbH0vPjtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAvLyBEb24ndCBibGFuayB0aGUgd2hvbGUgZ3JpZCBiZWNhdXNlIG9uZSB0aWxlJ3MgdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAvLyByZWZlcmVuY2VkIGEgbWlzc2luZyBuZXN0ZWQga2V5OyBsb2cgKyBmYWxsIHRocm91Z2ggdG9cbiAgICAgICAgICAgICAgICAvLyB0aGUgbGVnYWN5IHJlbmRlcmVyIHNvIHRoZSB1c2VyIHNlZXMgKnNvbWV0aGluZyouXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignW0RhdGFHcmlkXSB0aWxlRGlzcGxheVRlbXBsYXRlIHJlbmRlciBmYWlsZWQgZm9yIHJvdycsIHJvdywgZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgY291bnRlciA9IDA7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICB7Y29uZmlnLmNvbHVtbnMubWFwKGNvbHVtbiA9PiAoXG4gICAgICAgICAgICAgICAgICAgICFjb2x1bW4uYXR0cmlidXRlcy5oaWRkZW4gP1xuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4ga2V5PXtjb3VudGVyKyt9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWFkTmVzdGVkUHJvcGVydHkgaGFuZGxlcyBkb3R0ZWQgaWRzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsaWtlIFwicGVyc29uLm5hbWVzXCIg4oCUIGRpcmVjdCByb3dbaWRdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBicmFja2V0IGFjY2VzcyBvbmx5IHdvcmtlZCBmb3IgZmxhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZmllbGRzIGFuZCBzaWxlbnRseSByZW5kZXJlZCBibGFua1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hlbiB0aGUgdmFsdWUgbGl2ZWQgdW5kZXIgYSBzdWItb2JqZWN0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTWlycm9ycyB0aGUgU1RBTkRBUkQtbW9kZSByZXNvbHV0aW9uIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUYWJsZUNlbGxDb250ZW50LmpzeC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFV0aWxzLnJlYWROZXN0ZWRQcm9wZXJ0eShyb3csICFVdGlscy5pc051bGwoY29sdW1uLmRhdGFCaW5kaW5nKSA/IGNvbHVtbi5kYXRhQmluZGluZyA6IGNvbHVtbi5pZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxici8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPiA6XG4gICAgICAgICAgICAgICAgICAgICAgICBudWxsKSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVuZGVyVGlsZShyb3csIGtleSwgY29sc0luUm93KSB7XG4gICAgICAgIGNvbnN0IGlzSXRlbVNlbGVjdGVkID0gaXNTZWxlY3RlZChyb3cuaWQpO1xuICAgICAgICAvLyBXaGVuIGl0ZW1zUGVyUm93IGlzIGNvbmZpZ3VyZWQsIHNpemUgZWFjaCB0aWxlIHRvIGFuIGV4YWN0IGZyYWN0aW9uIG9mIHRoZSByb3cgKDEgLyBjb2xzSW5Sb3cpXG4gICAgICAgIC8vIHNvIHRoZSBsYXN0LCBwYXJ0aWFsIHJvdyBkaXN0cmlidXRlcyBpdHMgaXRlbXMgZXZlbmx5IGFjcm9zcyB0aGUgZnVsbCB3aWR0aC4gT3RoZXJ3aXNlIGZhbGxcbiAgICAgICAgLy8gYmFjayB0byB0aGUgYXV0by1mbG93IGB4c2AgbGF5b3V0IChlcXVhbCB3aWR0aCwgd3JhcHMgYXQgbWluV2lkdGgpLlxuICAgICAgICBjb25zdCBmaXhlZFdpZHRoID0gY29sc0luUm93ID4gMDtcbiAgICAgICAgY29uc3Qgd2lkdGhTdHlsZSA9IGZpeGVkV2lkdGhcbiAgICAgICAgICAgID8ge2ZsZXhCYXNpczogYCR7MTAwIC8gY29sc0luUm93fSVgLCBtYXhXaWR0aDogYCR7MTAwIC8gY29sc0luUm93fSVgLCBmbGV4R3JvdzogMH1cbiAgICAgICAgICAgIDoge21pbldpZHRoOiAnMjAwcHgnfTtcbiAgICAgICAgcmV0dXJuICg8R3JpZCBpdGVtIHsuLi4oZml4ZWRXaWR0aCA/IHt9IDoge3hzOiB0cnVlfSl9IHN0eWxlPXtVdGlscy5tZXJnZU9iamVjdHMocHJvcHMuY29uZmlnLnRpbGVTdHlsZSwge1xuICAgICAgICAgICAgaGVpZ2h0OiAnMjAwcHgnLFxuICAgICAgICAgICAgLi4ud2lkdGhTdHlsZVxuICAgICAgICB9KX0ga2V5PXtrZXl9PlxuICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwib3V0bGluZWRcIiBjb2xvcj17XCJzZWNvbmRhcnlcIn1cbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcjogaXNJdGVtU2VsZWN0ZWQgPyAnMXB4IHNvbGlkIDFweCBzb2xpZCAjZjJhOTAwJyA6ICcxcHggc29saWQgI2UyZTJlMicsXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiBpc0l0ZW1TZWxlY3RlZCA/ICcjZmZmOGUxJyA6ICcjZmFmYWZhJyxcbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17ZXZlbnQgPT4gZG9IYW5kbGVDbGljayhldmVudCwgcm93LmlkKX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGdldFRpbGVMYWJlbChyb3cpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIDwvR3JpZD4pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlbmRlclRpbGVzKCkge1xuICAgICAgICBpZiAoIXJvd3MgfHwgcm93cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIC8vIFRpbGUgZ3JpZCBoYXMgbm8gbmF0aXZlIGVtcHR5LXJvdyBhZmZvcmRhbmNlIGxpa2UgdGhlIHRhYmxlXG4gICAgICAgICAgICAvLyBwYXRoIChgb3VpVGFibGUtZW1wdHlgIENTUyksIHNvIHBhaW50IHRoZSBtZXNzYWdlIGlubGluZS5cbiAgICAgICAgICAgIC8vIENhbGxlciBjYW4gb3ZlcnJpZGUgdmlhIGBjb25maWcuZW1wdHlNZXNzYWdlYCBmb3Igdmlldy1cbiAgICAgICAgICAgIC8vIHNwZWNpZmljIGNvcHkgKFwiTm8gcHJvY3VyZW1lbnRzIHlldFwiLCBldGMpLlxuICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IHByb3BzLmNvbmZpZz8uZW1wdHlNZXNzYWdlIHx8ICdObyBpdGVtcyB0byBzaG93JztcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPEdyaWQgaXRlbSB4cz17MTJ9IHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICAgICAgICAgICAgICAgIG1pbkhlaWdodDogJzEyMHB4JyxcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICcjOWU5ZTllJyxcbiAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6ICcwLjg3NXJlbScsXG4gICAgICAgICAgICAgICAgICAgIGZvbnRTdHlsZTogJ2l0YWxpYycsXG4gICAgICAgICAgICAgICAgfX0+XG4gICAgICAgICAgICAgICAgICAgIHttZXNzYWdlfVxuICAgICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBpdGVtc1BlclJvdyAoQ0RVSSBjb25maWcpOiByZW5kZXIgTiB0aWxlcyBwZXIgcm93IGFuZCBkaXN0cmlidXRlIHRoZSBsYXN0LCBwYXJ0aWFsIHJvdyBldmVubHlcbiAgICAgICAgLy8gYWNyb3NzIHRoZSBmdWxsIHdpZHRoIOKAlCBlLmcuIGl0ZW1zUGVyUm93PTMgb3ZlciAxMCBpdGVtcyAtPiAzLTMtMy0xIChsYXN0IHRpbGUgc3BhbnMgdGhlIHJvdyk7XG4gICAgICAgIC8vIG92ZXIgMTEgLT4gMy0zLTMtMiAobGFzdCB0d28gc3BsaXQgdGhlIHJvdykuIFVuc2V0LzAga2VlcHMgdGhlIGF1dG8tZmxvdyBsYXlvdXQuXG4gICAgICAgIGNvbnN0IGl0ZW1zUGVyUm93ID0gTnVtYmVyKHByb3BzLmNvbmZpZz8uaXRlbXNQZXJSb3cpIHx8IDA7XG4gICAgICAgIGxldCBsYXN0Um93U3RhcnQgPSAtMTtcbiAgICAgICAgbGV0IGxhc3RSb3dDb3VudCA9IDA7XG4gICAgICAgIGlmIChpdGVtc1BlclJvdyA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IHJlbWFpbmRlciA9IHJvd3MubGVuZ3RoICUgaXRlbXNQZXJSb3c7XG4gICAgICAgICAgICBsYXN0Um93Q291bnQgPSByZW1haW5kZXIgPT09IDAgPyBpdGVtc1BlclJvdyA6IHJlbWFpbmRlcjtcbiAgICAgICAgICAgIGxhc3RSb3dTdGFydCA9IHJvd3MubGVuZ3RoIC0gbGFzdFJvd0NvdW50O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxSZWFjdC5GcmFnbWVudD5cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHJvd3MubWFwKChyb3csIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByb3cuaW5kZXggPSBpbmRleDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbHNJblJvdyA9IGl0ZW1zUGVyUm93ID4gMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gKGluZGV4ID49IGxhc3RSb3dTdGFydCA/IGxhc3RSb3dDb3VudCA6IGl0ZW1zUGVyUm93KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZW5kZXJUaWxlKHJvdywgaW5kZXgsIGNvbHNJblJvdyk7XG4gICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgPC9SZWFjdC5GcmFnbWVudD5cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVDb2x1bW5MYXlvdXRIYW5kbGUoY29sdW1uLCBpbmRleCkge1xuICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKGNvbHVtbkxheW91dEhhbmRsZXNbY29sdW1uLmlkICsgaW5kZXhdKSkge1xuICAgICAgICAgICAgbGV0IGhhbmRsZSA9IHt9O1xuICAgICAgICAgICAgY29sdW1uTGF5b3V0SGFuZGxlc1tjb2x1bW4uaWQgKyBpbmRleF0gPSBoYW5kbGU7XG4gICAgICAgICAgICByZXR1cm4gaGFuZGxlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbHVtbkxheW91dEhhbmRsZXNbY29sdW1uLmlkICsgaW5kZXhdO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNyZWF0ZUNlbGxFZGl0b3JIYW5kbGUoY29sdW1uKSB7XG4gICAgICAgIGlmIChVdGlscy5pc051bGwoZWRpdG9ySGFuZGxlc1tjb2x1bW4uaWQgKyBcIl9lZGl0b3JcIl0pKSB7XG4gICAgICAgICAgICBsZXQgaGFuZGxlID0ge307XG4gICAgICAgICAgICBlZGl0b3JIYW5kbGVzW2NvbHVtbi5pZCArIFwiX2VkaXRvclwiXSA9IGhhbmRsZTtcbiAgICAgICAgICAgIHJldHVybiBoYW5kbGU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZWRpdG9ySGFuZGxlc1tjb2x1bW4uaWQgKyBcIl9lZGl0b3JcIl07XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgICAgdmlzaWJsZSAmJlxuICAgICAgICA8ZGl2IGlkPXtwcm9wcy5jb25maWcuaWR9IGNsYXNzTmFtZT17VXRpbHMuZ2V0Q29tcG9uZW50QXR0cmlidXRlKHByb3BzLmNvbmZpZywgJ2NsYXNzTmFtZScsIG51bGwpfSBzdHlsZT17KFV0aWxzLmlzTnVsbChwcm9wcy5oYXNCb3JkZXIpIHx8IHByb3BzLmhhc0JvcmRlciA9PT0gdHJ1ZSkgP1xuICAgICAgICAgICAgVXRpbHMubWVyZ2VTdHlsZXMoe1xuICAgICAgICAgICAgICAgIG1hcmdpbjogJzAnLFxuICAgICAgICAgICAgICAgIGJvcmRlcjogJzFweCBzb2xpZCAjZTJlMmUyJyxcbiAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6ICc0cHgnLFxuICAgICAgICAgICAgICAgIC8vIFRJTEUgZ3JpZHMgZmlsbCB0aGVpciBzbG90IHZpYSBmbGV4IHNvIGEgMTAwJS1oZWlnaHQgZ3JpZCBjYW5cbiAgICAgICAgICAgICAgICAvLyBjZW50cmUgaXRzIGVtcHR5IG1lc3NhZ2UgKHBlcmNlbnRhZ2UgaGVpZ2h0cyBkb24ndCByZXNvbHZlIG9mZlxuICAgICAgICAgICAgICAgIC8vIGEgbWluLWhlaWdodC1vbmx5IGFuY2VzdG9yKS5cbiAgICAgICAgICAgICAgICAuLi4ocHJvcHMuY29uZmlnLmdyaWRUeXBlID09PSAnVElMRScgPyB7ZGlzcGxheTogJ2ZsZXgnLCBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJ30gOiB7fSlcbiAgICAgICAgICAgIH0sIHByb3BzLmNvbmZpZykgOiBVdGlscy5tZXJnZVN0eWxlcyh7XG4gICAgICAgICAgICAgICAgLi4uKHByb3BzLmNvbmZpZy5ncmlkVHlwZSA9PT0gJ1RJTEUnID8ge2Rpc3BsYXk6ICdmbGV4JywgZmxleERpcmVjdGlvbjogJ2NvbHVtbid9IDoge30pXG4gICAgICAgICAgICB9LCBwcm9wcy5jb25maWcpfT5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAhVXRpbHMuaXNOdWxsKHByb3BzLmNvbmZpZy5ub3RlcykgP1xuICAgICAgICAgICAgICAgICAgICBwcm9wcy5jb25maWcubm90ZXMubWFwKChub3RlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPGRpdiBrZXk9e25vdGVLZXkrK30gc3R5bGU9e3twYWRkaW5nOiAnOHB4J319PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBbGVydFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e21hcmdpbkJvdHRvbTogJzAnfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD17bm90ZS5tZXNzYWdlVHlwZSA9PT0gJ1dBUk4nID8gJ3dhcm5pbmcnIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdGUubWVzc2FnZVR5cGUgPT09ICdJTkZPJyA/ICcnIDogJ2Rhbmdlcid9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3c9e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT17e2NvbG9yOiAncmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpJ319Pntub3RlLm1lc3NhZ2V9PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQWxlcnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj47XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHJvd3NQZXJQYWdlT3B0aW9ucy5pbmNsdWRlcyhwcm9wcy5jb25maWcucGFnZVNpemUpID9cbiAgICAgICAgICAgICAgICAgICAgY29uZmlnLmdyaWRUeXBlID09PSAnVElMRScgP1xuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17e3BhZGRpbmc6ICcxNnB4JywgZmxleDogJzEgMSBhdXRvJywgbWluSGVpZ2h0OiAwLCBib3hTaXppbmc6ICdib3JkZXItYm94JywgZGlzcGxheTogJ2ZsZXgnLCBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJ319PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRmlsdGVyYWJsZSgpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RGF0YUdyaWRGaWx0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlPXtmaWx0ZXJIYW5kbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZz17cHJvcHMuY29uZmlnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3SWQ9e3Byb3BzLnZpZXdJZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyV3JhcHBlckNsYXNzPXtwcm9wcy5maWx0ZXJXcmFwcGVyQ2xhc3N9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbFdpZHRoPXtzY3JvbGxXaWR0aH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25GaWx0ZXJTdWJtaXQ9e3NlYXJjaH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25SZXF1ZXN0U29ydD17aGFuZGxlUmVxdWVzdFNvcnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzZXMucm9vdH0gc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleDogJzEgMSBhdXRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluSGVpZ2h0OiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiAoIXJvd3MgfHwgcm93cy5sZW5ndGggPT09IDApID8gJ2ZsZXgnIDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxpZ25JdGVtczogKCFyb3dzIHx8IHJvd3MubGVuZ3RoID09PSAwKSA/ICdjZW50ZXInIDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICghcm93cyB8fCByb3dzLmxlbmd0aCA9PT0gMCkgPyAnY2VudGVyJyA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCFyb3dzIHx8IHJvd3MubGVuZ3RoID09PSAwKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRmlsbCB0aGUgKG5vdyBmdWxsLWhlaWdodCkgZ3JpZCBhbmQgY2VudHJlIHRoZSBlbXB0eVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1lc3NhZ2UgdmVydGljYWxseSBpbnN0ZWFkIG9mIHBpbm5pbmcgaXQgdG8gdGhlIHRvcC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnIzllOWU5ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiAnMC44NzVyZW0nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U3R5bGU6ICdpdGFsaWMnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtwcm9wcy5jb25maWc/LmVtcHR5TWVzc2FnZSB8fCAnTm8gaXRlbXMgdG8gc2hvdyd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNwYWNpbmc9ezJ9ID0gMTZweCBnYXAgYmV0d2VlbiB0aWxlIGNhcmRzIChNVUkgMSB1bml0ID0gOHB4KS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8R3JpZCBjb250YWluZXIgc3BhY2luZz17Mn0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxHcmlkIGNvbnRhaW5lciBpdGVtIHhzPXsxMn0gc3BhY2luZz17Mn0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyVGlsZXMoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDpcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAnNHB4IDhweCAwIDhweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlckJvdHRvbTogJzFweCBzb2xpZCAjZTJlMmUyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTd2l0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17d3JhcH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZXRXcmFwKGUudGFyZ2V0LmNoZWNrZWQpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeD17eyAnJiAuTXVpRm9ybUNvbnRyb2xMYWJlbC1sYWJlbCc6IHsgZm9udFNpemU6ICcwLjc1cmVtJyB9IH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD1cIldyYXAgdGFibGUgdGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9IHtgcmVzcG9uc2l2ZS10YWJsZWB9IHN0eWxlPXt7aGVpZ2h0OiBwcm9wcy5oZWlnaHR9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRhYmxlIGNsYXNzTmFtZT17YCR7J291aVRhYmxlJyArIChyb3dzLmxlbmd0aCA9PT0gMCA/ICcgb3VpVGFibGUtZW1wdHknIDogJycpfWB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZWxsU3BhY2luZz1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PVwidGFibGVUaXRsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e3dpZHRoOiAnMTAwJSd9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQgY2xhc3NOYW1lPXsnZmlsdGVySGVhZCd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3t3aWR0aDogJ2NhbGMoMTAwJSAtICcgKyBwcm9wcy5zY3JvbGxXaWR0aCArICdweCknfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNGaWx0ZXJhYmxlKCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RGF0YUdyaWRGaWx0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZT17ZmlsdGVySGFuZGxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnPXtjb25maWd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3SWQ9e3Byb3BzLnZpZXdJZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcldyYXBwZXJDbGFzcz17cHJvcHMuZmlsdGVyV3JhcHBlckNsYXNzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsV2lkdGg9e3Njcm9sbFdpZHRofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25GaWx0ZXJTdWJtaXQ9e3NlYXJjaH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uUmVxdWVzdFNvcnQ9e2hhbmRsZVJlcXVlc3RTb3J0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxEYXRhR3JpZEhlYWRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGU9e2hlYWRpbmdIYW5kbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnPXtjb25maWd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtU2VsZWN0ZWQ9e3NlbGVjdGVkLmxlbmd0aH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxXaWR0aD17c2Nyb2xsV2lkdGh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25TZWxlY3RBbGxDbGljaz17aGFuZGxlU2VsZWN0QWxsQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25SZXF1ZXN0U29ydD17aGFuZGxlUmVxdWVzdFNvcnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93Q291bnQ9e3RvdGFsTnVtYmVyT2ZSb3dzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2l6ZUhhbmRsZXI9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Um93cyhbLi4ucm93c10pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aGVhZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUYm9keSBjbGFzc05hbWU9e2NsYXNzZXMudGFibGVCb2R5fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7bWF4SGVpZ2h0OiBVdGlscy5pc051bGwocHJvcHMuYm9keU1heEhlaWdodCkgPyBwcm9wcy5ib2R5TWF4SGVpZ2h0IDogJzQydmgnfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cIm1haW5UYWJsZUJvZHlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cm93cy5tYXAoKHJvdywgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNJdGVtU2VsZWN0ZWQgPSBpc1NlbGVjdGVkKHJvdy5pZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhYmVsSWQgPSBgZW5oYW5jZWQtdGFibGUtY2hlY2tib3gtJHtpbmRleH1gO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkZWZhdWx0Um93U3R5bGUgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4V3JhcDogJ3dyYXAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5jb25maWcucm93QXR0cmlidXRlcyAmJiBwcm9wcy5jb25maWcucm93QXR0cmlidXRlcy5zdHlsZSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVdGlscy5tZXJnZU9iamVjdHMocHJvcHMuY29uZmlnLnJvd0F0dHJpYnV0ZXMuc3R5bGUsIGRlZmF1bHRSb3dTdHlsZSkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdFJvd1N0eWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTW91c2VFbnRlcj17KCkgPT4gaGFuZGxlUm93TW91c2VFbnRlcihyb3cpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTW91c2VMZWF2ZT17aGFuZGxlUm93TW91c2VMZWF2ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtldmVudCA9PiBoYW5kbGVDbGljayhldmVudCwgcm93LCBpbmRleCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Eb3VibGVDbGljaz17ZXZlbnQgPT4gcHJvcHMub25Sb3dEb3VibGVDbGljayAmJiBwcm9wcy5vblJvd0RvdWJsZUNsaWNrKHJvdywgZXZlbnQpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1jaGVja2VkPXtpc0l0ZW1TZWxlY3RlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD17J1JPVy0nICsgcm93LmlkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkPXtpc0l0ZW1TZWxlY3RlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9eydvdWktdGFibGUtcm93ICcgKyAoKGhpZ2hsaWdodFJvd1NlbGVjdGlvbi5jdXJyZW50ID8gaXNJdGVtU2VsZWN0ZWQgPyBjbGFzc2VzLnRhYmxlU2VsZWN0ZWQgOiBjbGFzc2VzLnRhYmxlUm93IDogJycpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgKHJvdy5jbGFzc05hbWUgPyAoJyAnICsgcm93LmNsYXNzTmFtZSkgOiAnJykpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLnNlbGVjdGlvbk1vZGUgPT09ICdNVUxUSVBMRScgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRkIHBhZGRpbmc9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9e01VTFRJX1NFTEVDVF9DSEVDS0JPWF9DT0xfV0lEVEggKyAncHgnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17J3NlbGVjdENlbGwnfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17aXNJdGVtU2VsZWN0ZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0UHJvcHM9e3snYXJpYS1sYWJlbGxlZGJ5JzogbGFiZWxJZH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVGQ+IDogbnVsbFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjb25maWcuY29sdW1ucy5tYXAoY29sdW1uID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXRpbHMuZXZhbHVhdGVCb29sZWFuRXhwcmVzc2lvbihjb2x1bW4uYXR0cmlidXRlc1snaGlkZGVuJ10sIHByb3BzLmNvbmZpZy5pZCkgPT09IHRydWUgPyBudWxsIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbi5sYXlvdXQgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBjb2x1bW4uYXR0cmlidXRlcy53aWR0aCA/IGNvbHVtbi5hdHRyaWJ1dGVzLndpZHRoIDogKDEwMCAvIGNvbmZpZy5jb2x1bW5zLmxlbmd0aCkgKyAnJScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICcxMDAlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGlnbj1cImxlZnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9eyFwcm9wcy5kaXNhYmxlZCAmJiBpc0l0ZW1TZWxlY3RlZCAmJiAhVXRpbHMuaXNOdWxsKHByb3BzLmZvcm0pICYmICFVdGlscy5pc051bGwoY29sdW1uLmVkaXRvcikgPyAnZWRpdENlbGwnIDogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtpbmRleCArIFwiX1wiICsgY29sdW1uLmlkfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPExheW91dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlPXtjcmVhdGVDb2x1bW5MYXlvdXRIYW5kbGUoY29sdW1uLCBpbmRleCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2luZGV4ICsgXCJfXCIgKyBjb2x1bW4uaWQgKyBcIl9sYXlvdXRcIn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlUm93PXtyb3dzLmZpbmQoKHIpID0+IHIuaWQgPT09IHJvdy5pZCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dJbmRleD17aW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWc9e0pTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocHJvcHMuY29uZmlnLmNvbHVtbnMuZmluZCgoY29sKSA9PiBjb2wuaWQgPT09IGNvbHVtbi5pZCkubGF5b3V0KSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3SWQ9e3Byb3BzLnZpZXdJZH0gcGFyZW50PXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1RkPiA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogY29sdW1uLmF0dHJpYnV0ZXMud2lkdGggPyBjb2x1bW4uYXR0cmlidXRlcy53aWR0aCA6ICgxMDAgLyBjb25maWcuY29sdW1ucy5sZW5ndGgpICsgJyUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnMTAwJSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxpZ249XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXshcHJvcHMuZGlzYWJsZWQgJiYgaXNJdGVtU2VsZWN0ZWQgJiYgIVV0aWxzLmlzTnVsbChjb2x1bW4uZWRpdG9yKSA/ICdlZGl0Q2VsbCcgOiBudWxsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2luZGV4ICsgXCJfXCIgKyBjb2x1bW4uaWQgKyAnXycgKyByb3cuaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2V2ZW50ID0+IGhhbmRsZUNlbGxDbGljayhldmVudCwgcm93LmlkLCBjb2x1bW4pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRhYmxlQ2VsbENvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17XCJ0Y2NfXCIgKyBpbmRleCArIFwiX1wiICsgY29sdW1uLmlkICsgJ18nICsgcm93LmlkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JhcD17d3JhcH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uUm93RXJyb3I9e3Jvd0Vycm9ySGFuZGxlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZT17Y3JlYXRlQ2VsbEVkaXRvckhhbmRsZShjb2x1bW4pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0lkPXtwcm9wcy52aWV3SWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZGl0b3I9eyFwcm9wcy5kaXNhYmxlZCAmJiAhcm93LnJlYWRPbmx5ICYmICFyb3cuY29sdW1uUmVhZE9ubHk/Lltjb2x1bW4/LmlkXSA/IGNvbHVtbi5lZGl0b3IgOiBudWxsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmQ2FsbGJhY2s9e2NyZWF0ZUNlbGx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZD17aXNJdGVtU2VsZWN0ZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3I9e2NvbHVtbi52YWxpZGF0b3J9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZUNoYW5nZUhhbmRsZXI9e2VkaXRvckNoYW5nZUhhbmRsZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5Db25maWc9e2NvbHVtbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFCaW5kaW5nPXshVXRpbHMuaXNOdWxsKGNvbHVtbi5kYXRhQmluZGluZykgPyBjb2x1bW4uZGF0YUJpbmRpbmcgOiBjb2x1bW4uaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3c9e3Jvd31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRUeXBlPXtjb2x1bW4uZmllbGRUeXBlIHx8IGNvbHVtbi5lZGl0b3I/LmZpZWxkVHlwZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbGxGb3JtYXR0ZXI9e2NvbHVtbi5jZWxsRm9ybWF0dGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JpdGVyaWE9e2NyaXRlcmlhfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVGQ+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVHI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1Rib2R5PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1RhYmxlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFV0aWxzLmlzTnVsbChwcm9wcy5jb25maWcuYXR0cmlidXRlcz8ucGFnaW5hdGlvbikgJiYgKFV0aWxzLmlzTnVsbChwcm9wcy5wYWdpbmF0aW9uKSB8fCBwcm9wcy5wYWdpbmF0aW9uID09PSB0cnVlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKHByb3BzLmNvbmZpZy5hdHRyaWJ1dGVzPy5wYWdpbmF0aW9uICYmIHByb3BzLmNvbmZpZy5hdHRyaWJ1dGVzPy5wYWduYXRpb24gPT09IHRydWUpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicGFnaW5hdGlvbi1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VGFibGVQYWdpbmF0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17XCJncmlkLXRhYmxlLXBhZ2luYXRpb25cIn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93c1BlclBhZ2VPcHRpb25zPXtyb3dzUGVyUGFnZU9wdGlvbnN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudD1cImRpdlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50PXt0b3RhbE51bWJlck9mUm93c31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93c1BlclBhZ2U9e3Jvd3NQZXJQYWdlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlPXtwYWdlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrSWNvbkJ1dHRvblByb3BzPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXJpYS1sYWJlbCc6ICdwcmV2aW91cyBwYWdlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dEljb25CdXR0b25Qcm9wcz17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FyaWEtbGFiZWwnOiAnbmV4dCBwYWdlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25QYWdlQ2hhbmdlPXtoYW5kbGVDaGFuZ2VQYWdlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblJvd3NQZXJQYWdlQ2hhbmdlPXtoYW5kbGVDaGFuZ2VSb3dzUGVyUGFnZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDpcbiAgICAgICAgICAgICAgICAgICAgbnVsbFxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICApO1xufSk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFDLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNELElBQUFDLE9BQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLDBCQUFBLEdBQUFGLE9BQUE7QUFDQUEsT0FBQTtBQUNBLElBQUFHLFNBQUEsR0FBQUosc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFJLE1BQUEsR0FBQUwsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBQSxPQUFBO0FBQ0EsSUFBQUssWUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sZUFBQSxHQUFBUCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQU8sZ0JBQUEsR0FBQVIsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFRLGlCQUFBLEdBQUFULHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBUyxnQkFBQSxHQUFBVixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQVUsT0FBQSxHQUFBVixPQUFBO0FBQ0EsSUFBQVcsTUFBQSxHQUFBWixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQVksV0FBQSxHQUFBYixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQWEsVUFBQSxHQUFBZCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQWMsS0FBQSxHQUFBZixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQWUsT0FBQSxHQUFBaEIsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFnQixDQUFBLEdBQUFDLHVCQUFBLENBQUFqQixPQUFBO0FBQ0EsSUFBQWtCLE1BQUEsR0FBQW5CLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBbUIsbUJB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