@agilemotion/oui-react-js 2.0.12 → 2.0.14

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.
@@ -14,6 +14,7 @@ var _Section = _interopRequireDefault(require("./form/Section"));
14
14
  var _Toolbar = _interopRequireDefault(require("./Toolbar"));
15
15
  var _ApplicationManager = _interopRequireDefault(require("../ApplicationManager"));
16
16
  var _Layout = require("./layout/Layout");
17
+ var _Icon = _interopRequireDefault(require("./Icon"));
17
18
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
18
19
  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); }
19
20
  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; }
@@ -196,24 +197,34 @@ const TabPanel = /*#__PURE__*/_react.default.memo(props => {
196
197
  minWidth: 120
197
198
  }
198
199
  }
199
- }, visibleTabPages.map((page, index) => /*#__PURE__*/_react.default.createElement(_Tab.default, _extends({
200
- key: index,
201
- label: page.attributes['label'],
202
- wrapped: true // allow multi-line label
203
- }, a11yProps(index), {
204
- sx: {
205
- maxWidth: 240,
206
- height: '100%',
207
- // constrain so wrapping can occur
208
- whiteSpace: 'normal',
209
- // allow wrap
210
- wordBreak: 'break-word',
211
- // break long words
212
- textTransform: 'uppercase',
213
- // keep original casing
214
- color: _ApplicationManager.default.isFormMarkersEnabled() && errors !== null && errors[page.id] === true ? '#ed5249' : undefined
215
- }
216
- }))))), /*#__PURE__*/_react.default.createElement("div", {
200
+ }, visibleTabPages.map((page, index) => {
201
+ // Optional per-tab icon: `attributes.icon` is the
202
+ // Icon component's id (e.g. "WORK", "VIEW"). When
203
+ // present, render to the left of the label.
204
+ const iconId = page.attributes['icon'];
205
+ return /*#__PURE__*/_react.default.createElement(_Tab.default, _extends({
206
+ key: index,
207
+ label: page.attributes['label'],
208
+ icon: iconId ? /*#__PURE__*/_react.default.createElement(_Icon.default, {
209
+ id: iconId
210
+ }) : undefined,
211
+ iconPosition: iconId ? 'start' : undefined,
212
+ wrapped: true // allow multi-line label
213
+ }, a11yProps(index), {
214
+ sx: {
215
+ maxWidth: 240,
216
+ height: '100%',
217
+ // constrain so wrapping can occur
218
+ whiteSpace: 'normal',
219
+ // allow wrap
220
+ wordBreak: 'break-word',
221
+ // break long words
222
+ textTransform: 'uppercase',
223
+ // keep original casing
224
+ color: _ApplicationManager.default.isFormMarkersEnabled() && errors !== null && errors[page.id] === true ? '#ed5249' : undefined
225
+ }
226
+ }));
227
+ }))), /*#__PURE__*/_react.default.createElement("div", {
217
228
  style: _Utils.default.mergeStyles({
218
229
  width: '100%',
219
230
  height: 'calc(100% - 64px)'
@@ -234,4 +245,4 @@ const TabPanel = /*#__PURE__*/_react.default.memo(props => {
234
245
  })));
235
246
  });
236
247
  var _default = exports.default = TabPanel;
237
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9VdGlscyIsIl9BcHBCYXIiLCJfVGFiIiwiX1RhYnMiLCJfVGFiUGFnZSIsIl9TZWN0aW9uIiwiX1Rvb2xiYXIiLCJfQXBwbGljYXRpb25NYW5hZ2VyIiwiX0xheW91dCIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIl9leHRlbmRzIiwiT2JqZWN0IiwiYXNzaWduIiwiYmluZCIsIm4iLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJ0IiwiciIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImFwcGx5Iiwib3duS2V5cyIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJfb2JqZWN0U3ByZWFkIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJfdG9Qcm9wZXJ0eUtleSIsInZhbHVlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJpIiwiX3RvUHJpbWl0aXZlIiwiU3ltYm9sIiwidG9QcmltaXRpdmUiLCJUeXBlRXJyb3IiLCJTdHJpbmciLCJOdW1iZXIiLCJhMTF5UHJvcHMiLCJpbmRleCIsImlkIiwiY29uY2F0IiwiVGFiUGFuZWwiLCJSZWFjdCIsIm1lbW8iLCJwcm9wcyIsIl9wcm9wcyRjb25maWciLCJfcHJvcHMkY29uZmlnMiIsIl9wcm9wcyRjb25maWczIiwiX3Byb3BzJGNvbmZpZzQiLCJ0YWJWYWx1ZSIsInNldFRhYlZhbHVlIiwidXNlU3RhdGUiLCJlcnJvcnMiLCJzZXRFcnJvcnMiLCJ2aXNpYmxlVGFiUGFnZXMiLCJzZXRWaXNpYmxlVGFiUGFnZXMiLCJsb2FkZWQiLCJ1c2VSZWYiLCJjb21wb25lbnRIYW5kbGVzIiwiaGFuZGxlVGFiQ2hhbmdlIiwiZXZlbnQiLCJuZXdWYWx1ZSIsImNyZWF0ZUNvbXBvbmVudEhhbmRsZSIsImNvbXBvbmVudCIsIlV0aWxzIiwiaXNOdWxsIiwiaGFuZGxlIiwidXNlRWZmZWN0IiwiYXBpIiwic2V0dXBWaXNpYmxlUGFnZXMiLCJjb25maWciLCJ0YWJQYWdlcyIsImFsbFZpc2libGVUYWJQYWdlcyIsInBhZ2UiLCJwYXJzZWRDb25maWciLCJwYXJzZUNvbmZpZyIsInZpZXdJZCIsInZpc2libGUiLCJldmFsdWF0ZUJvb2xlYW5FeHByZXNzaW9uIiwic2V0dXAiLCJmb3JtIiwic2V0Q29udGFpbmVyRXJyb3JIYW5kbGVyIiwiY29udGFpbmVyRXJyb3JzIiwic2hvdWxkUmVmcmVzaCIsInByb3BlcnRpZXMiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwicHJvcGVydHkiLCJhcHBsaWNhdGlvbk1hbmFnZXIiLCJpc0Zvcm1NYXJrZXJzRW5hYmxlZCIsIkpTT04iLCJwYXJzZSIsInN0cmluZ2lmeSIsImN1cnJlbnQiLCJyZW5kZXJUYWJQYWdlQ29tcG9uZW50IiwidGFiSWQiLCJ0eXBlIiwiY3JlYXRlRWxlbWVudCIsImtleUhhbmRsZXIiLCJrZXkiLCJwYXJlbnRJZCIsInZhbHVlcyIsIkxheW91dCIsInJlbmRlclBhZ2UiLCJwYWdlSW5kZXgiLCJjbGFzc05hbWUiLCJjb21wb25lbnRzIiwibWFwIiwiZ2V0Q2hpbGRyZW4iLCJjaGlsZHJlbiIsIl9jb21wb25lbnRIYW5kbGUkYXBpIiwiY29tcG9uZW50SGFuZGxlIiwiY2hpbGQiLCJzZXRQYWdlSGFzRXJyb3IiLCJwYWdlSWQiLCJoYXNFcnJvciIsImNsZWFyRXJyb3JzIiwicmVmcmVzaCIsInJlZHJhdyIsInN0eWxlIiwid2lkdGgiLCJhdHRyaWJ1dGVzIiwiaGVpZ2h0IiwicG9zaXRpb24iLCJjb2xvciIsImJhY2tncm91bmQiLCJib3hTaGFkb3ciLCJib3JkZXJCb3R0b20iLCJvbkNoYW5nZSIsInZhcmlhbnQiLCJzY3JvbGxCdXR0b25zIiwiYWxsb3dTY3JvbGxCdXR0b25zTW9iaWxlIiwidGV4dENvbG9yIiwiaW5kaWNhdG9yQ29sb3IiLCJzeCIsIm1pbldpZHRoIiwibGFiZWwiLCJ3cmFwcGVkIiwibWF4V2lkdGgiLCJ3aGl0ZVNwYWNlIiwid29yZEJyZWFrIiwidGV4dFRyYW5zZm9ybSIsInVuZGVmaW5lZCIsIm1lcmdlU3R5bGVzIiwiX3BhZ2UkYXR0cmlidXRlcyIsIl9wYWdlJGF0dHJpYnV0ZXMyIiwiZGlzcGxheSIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9UYWJQYW5lbC5qc3giXSwic291cmNlc0NvbnRlbnQiOlsi77u/aW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBVdGlscyBmcm9tICcuLi9VdGlscyc7XG5pbXBvcnQgQXBwQmFyIGZyb20gJ0BtdWkvbWF0ZXJpYWwvQXBwQmFyJztcbmltcG9ydCBUYWIgZnJvbSAnQG11aS9tYXRlcmlhbC9UYWInO1xuaW1wb3J0IFRhYnMgZnJvbSAnQG11aS9tYXRlcmlhbC9UYWJzJztcbmltcG9ydCBUYWJQYWdlIGZyb20gJy4vVGFiUGFnZSc7XG5pbXBvcnQgRm9ybVNlY3Rpb24gZnJvbSAnLi9mb3JtL1NlY3Rpb24nO1xuaW1wb3J0IFRvb2xiYXIgZnJvbSAnLi9Ub29sYmFyJztcbmltcG9ydCBhcHBsaWNhdGlvbk1hbmFnZXIgZnJvbSAnLi4vQXBwbGljYXRpb25NYW5hZ2VyJztcbmltcG9ydCB7TGF5b3V0fSBmcm9tICcuL2xheW91dC9MYXlvdXQnO1xuXG5mdW5jdGlvbiBhMTF5UHJvcHMoaW5kZXgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBpZDogYHNpbXBsZS10YWItJHtpbmRleH1gLFxuICAgICAgICAnYXJpYS1jb250cm9scyc6IGBzaW1wbGUtdGFicGFuZWwtJHtpbmRleH1gLFxuICAgIH07XG59XG5cbmNvbnN0IFRhYlBhbmVsID0gUmVhY3QubWVtbygocHJvcHMpID0+IHtcbiAgICBjb25zdCBbdGFiVmFsdWUsIHNldFRhYlZhbHVlXSA9IFJlYWN0LnVzZVN0YXRlKDApO1xuICAgIGNvbnN0IFtlcnJvcnMsIHNldEVycm9yc10gPSBSZWFjdC51c2VTdGF0ZSh7fSk7XG4gICAgY29uc3QgW3Zpc2libGVUYWJQYWdlcywgc2V0VmlzaWJsZVRhYlBhZ2VzXSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IGxvYWRlZCA9IFJlYWN0LnVzZVJlZihmYWxzZSk7XG4gICAgY29uc3QgW2NvbXBvbmVudEhhbmRsZXNdID0gUmVhY3QudXNlU3RhdGUoe30pO1xuXG4gICAgY29uc3QgaGFuZGxlVGFiQ2hhbmdlID0gKGV2ZW50LCBuZXdWYWx1ZSkgPT4ge1xuICAgICAgICBzZXRUYWJWYWx1ZShuZXdWYWx1ZSk7XG4gICAgfTtcblxuICAgIGNvbnN0IGNyZWF0ZUNvbXBvbmVudEhhbmRsZSA9IChjb21wb25lbnQpID0+IHtcbiAgICAgICAgaWYgKFV0aWxzLmlzTnVsbChjb21wb25lbnRIYW5kbGVzW2NvbXBvbmVudC5pZF0pKSB7XG4gICAgICAgICAgICBsZXQgaGFuZGxlID0ge307XG4gICAgICAgICAgICBjb21wb25lbnRIYW5kbGVzW2NvbXBvbmVudC5pZF0gPSBoYW5kbGU7XG4gICAgICAgICAgICByZXR1cm4gaGFuZGxlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbXBvbmVudEhhbmRsZXNbY29tcG9uZW50LmlkXTtcbiAgICB9O1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgcHJvcHMuaGFuZGxlLmFwaSA9IGFwaSgpO1xuICAgIH0pO1xuXG4gICAgZnVuY3Rpb24gc2V0dXBWaXNpYmxlUGFnZXMoKSB7XG4gICAgICAgIGlmIChwcm9wcy5jb25maWcudGFiUGFnZXMpIHtcbiAgICAgICAgICAgIGxldCBhbGxWaXNpYmxlVGFiUGFnZXMgPSBbXTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgcGFnZSBvZiBwcm9wcy5jb25maWcudGFiUGFnZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKHBhZ2UuaWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhZ2UuaWQgPSBpbmRleCArICctdGFiLXBhZ2UnO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGxldCBwYXJzZWRDb25maWcgPSBVdGlscy5wYXJzZUNvbmZpZyhwYWdlLCBwcm9wcy52aWV3SWQpO1xuICAgICAgICAgICAgICAgIGxldCB2aXNpYmxlID0gVXRpbHMuaXNOdWxsKHBhcnNlZENvbmZpZy52aXNpYmxlKSB8fCBVdGlscy5ldmFsdWF0ZUJvb2xlYW5FeHByZXNzaW9uKHBhcnNlZENvbmZpZy52aXNpYmxlLCBwYWdlLmlkKTtcbiAgICAgICAgICAgICAgICBpZiAodmlzaWJsZSkge1xuICAgICAgICAgICAgICAgICAgICBhbGxWaXNpYmxlVGFiUGFnZXMucHVzaChwYWdlKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc2V0VmlzaWJsZVRhYlBhZ2VzKGFsbFZpc2libGVUYWJQYWdlcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzZXR1cCgpIHtcbiAgICAgICAgaWYgKCFVdGlscy5pc051bGwocHJvcHMuZm9ybSkpIHtcbiAgICAgICAgICAgIHByb3BzLmZvcm0oKVxuICAgICAgICAgICAgICAgIC5zZXRDb250YWluZXJFcnJvckhhbmRsZXIoKGNvbnRhaW5lckVycm9ycykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsZXQgc2hvdWxkUmVmcmVzaCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBsZXQgcHJvcGVydGllcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGNvbnRhaW5lckVycm9ycyk7XG5cbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3JzW3Byb3BlcnR5XSAhPT0gY29udGFpbmVyRXJyb3JzW3Byb3BlcnR5XSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZFJlZnJlc2ggPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGFwcGxpY2F0aW9uTWFuYWdlci5pc0Zvcm1NYXJrZXJzRW5hYmxlZCgpICYmIHNob3VsZFJlZnJlc2gpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldEVycm9ycyhKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGNvbnRhaW5lckVycm9ycykpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy9zZXR1cFZpc2libGVQYWdlcygpO1xuICAgICAgICBsb2FkZWQuY3VycmVudCA9IHRydWU7XG4gICAgfVxuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgc2V0dXAoKTtcbiAgICB9LCBbXSk7XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZighdmlzaWJsZVRhYlBhZ2VzKSB7XG4gICAgICAgICAgICBzZXR1cFZpc2libGVQYWdlcygpXG4gICAgICAgIH1cbiAgICB9LCBbdmlzaWJsZVRhYlBhZ2VzXSk7XG5cbiAgICBmdW5jdGlvbiByZW5kZXJUYWJQYWdlQ29tcG9uZW50KGNvbXBvbmVudCwgdGFiSWQsIGluZGV4KSB7XG4gICAgICAgIGlmIChVdGlscy5pc051bGwoY29tcG9uZW50LmlkKSkge1xuICAgICAgICAgICAgY29tcG9uZW50LmlkID0gaW5kZXggKyAnLXRhYi1jb250ZW50JztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb21wb25lbnQudHlwZSA9PT0gJ2Zvcm1TZWN0aW9uJyA/XG4gICAgICAgICAgICA8Rm9ybVNlY3Rpb24ga2V5SGFuZGxlcj17cHJvcHMua2V5SGFuZGxlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2NvbXBvbmVudC5pZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWc9e2NvbXBvbmVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGU9e2NyZWF0ZUNvbXBvbmVudEhhbmRsZShjb21wb25lbnQpfVxuICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm09e3Byb3BzLmZvcm19XG4gICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50SWQ9e3RhYklkfVxuICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdJZD17cHJvcHMudmlld0lkfVxuICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz17cHJvcHMudmFsdWVzfVxuICAgICAgICAgICAgLz4gOlxuICAgICAgICAgICAgY29tcG9uZW50LnR5cGUgPT09ICd0b29sYmFyJyA/XG4gICAgICAgICAgICAgICAgPFRvb2xiYXIgY29uZmlnPXtjb21wb25lbnR9IGhhbmRsZT17Y3JlYXRlQ29tcG9uZW50SGFuZGxlKGNvbXBvbmVudCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtjb21wb25lbnQuaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgdmlld0lkPXtwcm9wcy52aWV3SWR9Lz4gOlxuICAgICAgICAgICAgICAgIGNvbXBvbmVudC50eXBlID09PSAnbGF5b3V0JyA/XG4gICAgICAgICAgICAgICAgICAgIDxMYXlvdXQgY29uZmlnPXtjb21wb25lbnR9IGhhbmRsZT17Y3JlYXRlQ29tcG9uZW50SGFuZGxlKGNvbXBvbmVudCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtjb21wb25lbnQuaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0lkPXtwcm9wcy52aWV3SWR9Lz4gOlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PnsnVW5zdXBwb3J0ZWQgY29tcG9uZW50IHR5cGUgJyArIGNvbXBvbmVudC50eXBlfTwvZGl2PjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZW5kZXJQYWdlKHBhZ2UsIHBhZ2VJbmRleCkge1xuICAgICAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9eyd0YWItcGFnZS1jb250YWluZXInfT5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwYWdlLmNvbXBvbmVudHMubWFwKChjb21wb25lbnQsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZW5kZXJUYWJQYWdlQ29tcG9uZW50KGNvbXBvbmVudCwgcGFnZS5pZCwgcGFnZUluZGV4ICsgaW5kZXgpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PjtcbiAgICB9XG5cbiAgICBjb25zdCBhcGkgPSAoKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBnZXQgaWQoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHByb3BzLmNvbmZpZy5pZDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRDaGlsZHJlbjogKCkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBjaGlsZHJlbiA9IFtdO1xuXG4gICAgICAgICAgICAgICAgbGV0IHByb3BlcnRpZXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhjb21wb25lbnRIYW5kbGVzKTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHByb3BlcnR5IG9mIHByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNvbXBvbmVudEhhbmRsZSA9IGNvbXBvbmVudEhhbmRsZXNbcHJvcGVydHldO1xuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbi5wdXNoKGNvbXBvbmVudEhhbmRsZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKGNvbXBvbmVudEhhbmRsZS5hcGk/LmdldENoaWxkcmVuKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBjb21wb25lbnRIYW5kbGUuYXBpLmdldENoaWxkcmVuKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbi5wdXNoKGNoaWxkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZHJlbjtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXQgdmFsdWUodmFsdWUpIHtcbiAgICAgICAgICAgICAgICBzZXRUYWJWYWx1ZSh2YWx1ZSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0IHZhbHVlKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0YWJWYWx1ZTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXRQYWdlSGFzRXJyb3I6IChwYWdlSWQsIGhhc0Vycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgc2V0RXJyb3JzKHsuLi5lcnJvcnMsIFtwYWdlSWRdOiBoYXNFcnJvcn0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNsZWFyRXJyb3JzOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgc2V0RXJyb3JzKHt9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZWZyZXNoOiAoKSA9PiB7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVkcmF3OiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gRm9yY2UgcmUtcmVuZGVyXG4gICAgICAgICAgICAgICAgc2V0VmlzaWJsZVRhYlBhZ2VzKG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH07XG5cbiAgICByZXR1cm4gKFxuICAgICAgICAhVXRpbHMuaXNOdWxsKHZpc2libGVUYWJQYWdlcykgJiZcbiAgICAgICAgPGRpdiBzdHlsZT17e1xuICAgICAgICAgICAgd2lkdGg6IHByb3BzLmNvbmZpZz8uYXR0cmlidXRlcz8uc3R5bGU/LndpZHRoID8gcHJvcHMuY29uZmlnPy5hdHRyaWJ1dGVzPy5zdHlsZT8ud2lkdGggOiAnMTAwJScsXG4gICAgICAgICAgICBoZWlnaHQ6IHByb3BzLmNvbmZpZz8uYXR0cmlidXRlcz8uc3R5bGU/LmhlaWdodCA/IHByb3BzLmNvbmZpZz8uYXR0cmlidXRlcz8uc3R5bGU/LmhlaWdodCA6ICcxMDAlJ1xuICAgICAgICB9fT5cbiAgICAgICAgICAgIDxBcHBCYXIgcG9zaXRpb249XCJzdGF0aWNcIiBjb2xvcj1cImRlZmF1bHRcIlxuICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJveFNoYWRvdzogJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyQm90dG9tOiAnMXB4IHNvbGlkICNlMWUxZTEnXG4gICAgICAgICAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICAgIDxUYWJzXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXt0YWJWYWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZVRhYkNoYW5nZX1cbiAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cInNjcm9sbGFibGVcIiAgICAgICAgICAgICAgICAvLyBlbmFibGVzIGhvcml6b250YWwgc2Nyb2xsXG4gICAgICAgICAgICAgICAgICAgIHNjcm9sbEJ1dHRvbnM9XCJhdXRvXCIgICAgICAgICAgICAgICAgLy8gc2hvd3MgYXJyb3dzIHdoZW4gbmVlZGVkXG4gICAgICAgICAgICAgICAgICAgIGFsbG93U2Nyb2xsQnV0dG9uc01vYmlsZSAgICAgICAgICAgIC8vIHNob3cgYXJyb3dzIG9uIG1vYmlsZSB0b29cbiAgICAgICAgICAgICAgICAgICAgdGV4dENvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgIGluZGljYXRvckNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0YWJzXCJcbiAgICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9wdGlvbmFsOiByZWR1Y2UgZGVmYXVsdCBtaW4gd2lkdGggc28gbW9yZSB0YWJzIGZpdFxuICAgICAgICAgICAgICAgICAgICAgICAgJyYgLk11aVRhYi1yb290Jzoge21pbldpZHRoOiAxMjB9LFxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3Zpc2libGVUYWJQYWdlcy5tYXAoKHBhZ2UsIGluZGV4KSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRhYlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17cGFnZS5hdHRyaWJ1dGVzWydsYWJlbCddfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cmFwcGVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbGxvdyBtdWx0aS1saW5lIGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsuLi5hMTF5UHJvcHMoaW5kZXgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4V2lkdGg6IDI0MCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogJzEwMCUnLCAgICAgICAgICAgICAgICAgLy8gY29uc3RyYWluIHNvIHdyYXBwaW5nIGNhbiBvY2N1clxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpdGVTcGFjZTogJ25vcm1hbCcsICAgICAgICAgICAgIC8vIGFsbG93IHdyYXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmRCcmVhazogJ2JyZWFrLXdvcmQnLCAgICAgICAgICAvLyBicmVhayBsb25nIHdvcmRzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0VHJhbnNmb3JtOiAndXBwZXJjYXNlJywgICAgICAgICAgICAvLyBrZWVwIG9yaWdpbmFsIGNhc2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25NYW5hZ2VyLmlzRm9ybU1hcmtlcnNFbmFibGVkKCkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMgIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnNbcGFnZS5pZF0gPT09IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnI2VkNTI0OSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgIDwvVGFicz5cbiAgICAgICAgICAgIDwvQXBwQmFyPlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e1V0aWxzLm1lcmdlU3R5bGVzKHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnY2FsYygxMDAlIC0gNjRweCknXG4gICAgICAgICAgICAgICAgfSwgcHJvcHMuY29uZmlnKX0+XG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGVUYWJQYWdlcy5tYXAoKHBhZ2UsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxkaXYga2V5PXtpbmRleH0gc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBwYWdlPy5hdHRyaWJ1dGVzPy5zdHlsZT8uaGVpZ2h0ID8gcGFnZT8uYXR0cmlidXRlcz8uc3R5bGU/LmhlaWdodCA6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogdGFiVmFsdWUgPT09IGluZGV4ID8gbnVsbCA6ICdub25lJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VGFiUGFnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3RhYlZhbHVlfSBpbmRleD17aW5kZXh9IGNvbmZpZz17cGFnZX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cmVuZGVyUGFnZShwYWdlLCBpbmRleCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVGFiUGFnZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj47XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICk7XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgVGFiUGFuZWw7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFD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
248
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9VdGlscyIsIl9BcHBCYXIiLCJfVGFiIiwiX1RhYnMiLCJfVGFiUGFnZSIsIl9TZWN0aW9uIiwiX1Rvb2xiYXIiLCJfQXBwbGljYXRpb25NYW5hZ2VyIiwiX0xheW91dCIsIl9JY29uIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiX2V4dGVuZHMiLCJPYmplY3QiLCJhc3NpZ24iLCJiaW5kIiwibiIsImFyZ3VtZW50cyIsImxlbmd0aCIsInQiLCJyIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiYXBwbHkiLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsIl9vYmplY3RTcHJlYWQiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIl90b1Byb3BlcnR5S2V5IiwidmFsdWUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsImkiLCJfdG9QcmltaXRpdmUiLCJTeW1ib2wiLCJ0b1ByaW1pdGl2ZSIsIlR5cGVFcnJvciIsIlN0cmluZyIsIk51bWJlciIsImExMXlQcm9wcyIsImluZGV4IiwiaWQiLCJjb25jYXQiLCJUYWJQYW5lbCIsIlJlYWN0IiwibWVtbyIsInByb3BzIiwiX3Byb3BzJGNvbmZpZyIsIl9wcm9wcyRjb25maWcyIiwiX3Byb3BzJGNvbmZpZzMiLCJfcHJvcHMkY29uZmlnNCIsInRhYlZhbHVlIiwic2V0VGFiVmFsdWUiLCJ1c2VTdGF0ZSIsImVycm9ycyIsInNldEVycm9ycyIsInZpc2libGVUYWJQYWdlcyIsInNldFZpc2libGVUYWJQYWdlcyIsImxvYWRlZCIsInVzZVJlZiIsImNvbXBvbmVudEhhbmRsZXMiLCJoYW5kbGVUYWJDaGFuZ2UiLCJldmVudCIsIm5ld1ZhbHVlIiwiY3JlYXRlQ29tcG9uZW50SGFuZGxlIiwiY29tcG9uZW50IiwiVXRpbHMiLCJpc051bGwiLCJoYW5kbGUiLCJ1c2VFZmZlY3QiLCJhcGkiLCJzZXR1cFZpc2libGVQYWdlcyIsImNvbmZpZyIsInRhYlBhZ2VzIiwiYWxsVmlzaWJsZVRhYlBhZ2VzIiwicGFnZSIsInBhcnNlZENvbmZpZyIsInBhcnNlQ29uZmlnIiwidmlld0lkIiwidmlzaWJsZSIsImV2YWx1YXRlQm9vbGVhbkV4cHJlc3Npb24iLCJzZXR1cCIsImZvcm0iLCJzZXRDb250YWluZXJFcnJvckhhbmRsZXIiLCJjb250YWluZXJFcnJvcnMiLCJzaG91bGRSZWZyZXNoIiwicHJvcGVydGllcyIsImdldE93blByb3BlcnR5TmFtZXMiLCJwcm9wZXJ0eSIsImFwcGxpY2F0aW9uTWFuYWdlciIsImlzRm9ybU1hcmtlcnNFbmFibGVkIiwiSlNPTiIsInBhcnNlIiwic3RyaW5naWZ5IiwiY3VycmVudCIsInJlbmRlclRhYlBhZ2VDb21wb25lbnQiLCJ0YWJJZCIsInR5cGUiLCJjcmVhdGVFbGVtZW50Iiwia2V5SGFuZGxlciIsImtleSIsInBhcmVudElkIiwidmFsdWVzIiwiTGF5b3V0IiwicmVuZGVyUGFnZSIsInBhZ2VJbmRleCIsImNsYXNzTmFtZSIsImNvbXBvbmVudHMiLCJtYXAiLCJnZXRDaGlsZHJlbiIsImNoaWxkcmVuIiwiX2NvbXBvbmVudEhhbmRsZSRhcGkiLCJjb21wb25lbnRIYW5kbGUiLCJjaGlsZCIsInNldFBhZ2VIYXNFcnJvciIsInBhZ2VJZCIsImhhc0Vycm9yIiwiY2xlYXJFcnJvcnMiLCJyZWZyZXNoIiwicmVkcmF3Iiwic3R5bGUiLCJ3aWR0aCIsImF0dHJpYnV0ZXMiLCJoZWlnaHQiLCJwb3NpdGlvbiIsImNvbG9yIiwiYmFja2dyb3VuZCIsImJveFNoYWRvdyIsImJvcmRlckJvdHRvbSIsIm9uQ2hhbmdlIiwidmFyaWFudCIsInNjcm9sbEJ1dHRvbnMiLCJhbGxvd1Njcm9sbEJ1dHRvbnNNb2JpbGUiLCJ0ZXh0Q29sb3IiLCJpbmRpY2F0b3JDb2xvciIsInN4IiwibWluV2lkdGgiLCJpY29uSWQiLCJsYWJlbCIsImljb24iLCJ1bmRlZmluZWQiLCJpY29uUG9zaXRpb24iLCJ3cmFwcGVkIiwibWF4V2lkdGgiLCJ3aGl0ZVNwYWNlIiwid29yZEJyZWFrIiwidGV4dFRyYW5zZm9ybSIsIm1lcmdlU3R5bGVzIiwiX3BhZ2UkYXR0cmlidXRlcyIsIl9wYWdlJGF0dHJpYnV0ZXMyIiwiZGlzcGxheSIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9UYWJQYW5lbC5qc3giXSwic291cmNlc0NvbnRlbnQiOlsi77u/aW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBVdGlscyBmcm9tICcuLi9VdGlscyc7XG5pbXBvcnQgQXBwQmFyIGZyb20gJ0BtdWkvbWF0ZXJpYWwvQXBwQmFyJztcbmltcG9ydCBUYWIgZnJvbSAnQG11aS9tYXRlcmlhbC9UYWInO1xuaW1wb3J0IFRhYnMgZnJvbSAnQG11aS9tYXRlcmlhbC9UYWJzJztcbmltcG9ydCBUYWJQYWdlIGZyb20gJy4vVGFiUGFnZSc7XG5pbXBvcnQgRm9ybVNlY3Rpb24gZnJvbSAnLi9mb3JtL1NlY3Rpb24nO1xuaW1wb3J0IFRvb2xiYXIgZnJvbSAnLi9Ub29sYmFyJztcbmltcG9ydCBhcHBsaWNhdGlvbk1hbmFnZXIgZnJvbSAnLi4vQXBwbGljYXRpb25NYW5hZ2VyJztcbmltcG9ydCB7TGF5b3V0fSBmcm9tICcuL2xheW91dC9MYXlvdXQnO1xuaW1wb3J0IEljb24gZnJvbSAnLi9JY29uJztcblxuZnVuY3Rpb24gYTExeVByb3BzKGluZGV4KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IGBzaW1wbGUtdGFiLSR7aW5kZXh9YCxcbiAgICAgICAgJ2FyaWEtY29udHJvbHMnOiBgc2ltcGxlLXRhYnBhbmVsLSR7aW5kZXh9YCxcbiAgICB9O1xufVxuXG5jb25zdCBUYWJQYW5lbCA9IFJlYWN0Lm1lbW8oKHByb3BzKSA9PiB7XG4gICAgY29uc3QgW3RhYlZhbHVlLCBzZXRUYWJWYWx1ZV0gPSBSZWFjdC51c2VTdGF0ZSgwKTtcbiAgICBjb25zdCBbZXJyb3JzLCBzZXRFcnJvcnNdID0gUmVhY3QudXNlU3RhdGUoe30pO1xuICAgIGNvbnN0IFt2aXNpYmxlVGFiUGFnZXMsIHNldFZpc2libGVUYWJQYWdlc10gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBsb2FkZWQgPSBSZWFjdC51c2VSZWYoZmFsc2UpO1xuICAgIGNvbnN0IFtjb21wb25lbnRIYW5kbGVzXSA9IFJlYWN0LnVzZVN0YXRlKHt9KTtcblxuICAgIGNvbnN0IGhhbmRsZVRhYkNoYW5nZSA9IChldmVudCwgbmV3VmFsdWUpID0+IHtcbiAgICAgICAgc2V0VGFiVmFsdWUobmV3VmFsdWUpO1xuICAgIH07XG5cbiAgICBjb25zdCBjcmVhdGVDb21wb25lbnRIYW5kbGUgPSAoY29tcG9uZW50KSA9PiB7XG4gICAgICAgIGlmIChVdGlscy5pc051bGwoY29tcG9uZW50SGFuZGxlc1tjb21wb25lbnQuaWRdKSkge1xuICAgICAgICAgICAgbGV0IGhhbmRsZSA9IHt9O1xuICAgICAgICAgICAgY29tcG9uZW50SGFuZGxlc1tjb21wb25lbnQuaWRdID0gaGFuZGxlO1xuICAgICAgICAgICAgcmV0dXJuIGhhbmRsZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb21wb25lbnRIYW5kbGVzW2NvbXBvbmVudC5pZF07XG4gICAgfTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHByb3BzLmhhbmRsZS5hcGkgPSBhcGkoKTtcbiAgICB9KTtcblxuICAgIGZ1bmN0aW9uIHNldHVwVmlzaWJsZVBhZ2VzKCkge1xuICAgICAgICBpZiAocHJvcHMuY29uZmlnLnRhYlBhZ2VzKSB7XG4gICAgICAgICAgICBsZXQgYWxsVmlzaWJsZVRhYlBhZ2VzID0gW107XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHBhZ2Ugb2YgcHJvcHMuY29uZmlnLnRhYlBhZ2VzKSB7XG4gICAgICAgICAgICAgICAgaWYgKFV0aWxzLmlzTnVsbChwYWdlLmlkKSkge1xuICAgICAgICAgICAgICAgICAgICBwYWdlLmlkID0gaW5kZXggKyAnLXRhYi1wYWdlJztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBsZXQgcGFyc2VkQ29uZmlnID0gVXRpbHMucGFyc2VDb25maWcocGFnZSwgcHJvcHMudmlld0lkKTtcbiAgICAgICAgICAgICAgICBsZXQgdmlzaWJsZSA9IFV0aWxzLmlzTnVsbChwYXJzZWRDb25maWcudmlzaWJsZSkgfHwgVXRpbHMuZXZhbHVhdGVCb29sZWFuRXhwcmVzc2lvbihwYXJzZWRDb25maWcudmlzaWJsZSwgcGFnZS5pZCk7XG4gICAgICAgICAgICAgICAgaWYgKHZpc2libGUpIHtcbiAgICAgICAgICAgICAgICAgICAgYWxsVmlzaWJsZVRhYlBhZ2VzLnB1c2gocGFnZSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHNldFZpc2libGVUYWJQYWdlcyhhbGxWaXNpYmxlVGFiUGFnZXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2V0dXAoKSB7XG4gICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHByb3BzLmZvcm0pKSB7XG4gICAgICAgICAgICBwcm9wcy5mb3JtKClcbiAgICAgICAgICAgICAgICAuc2V0Q29udGFpbmVyRXJyb3JIYW5kbGVyKChjb250YWluZXJFcnJvcnMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHNob3VsZFJlZnJlc2ggPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHByb3BlcnRpZXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhjb250YWluZXJFcnJvcnMpO1xuXG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcHJvcGVydHkgb2YgcHJvcGVydGllcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yc1twcm9wZXJ0eV0gIT09IGNvbnRhaW5lckVycm9yc1twcm9wZXJ0eV0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRSZWZyZXNoID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChhcHBsaWNhdGlvbk1hbmFnZXIuaXNGb3JtTWFya2Vyc0VuYWJsZWQoKSAmJiBzaG91bGRSZWZyZXNoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRFcnJvcnMoSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShjb250YWluZXJFcnJvcnMpKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vc2V0dXBWaXNpYmxlUGFnZXMoKTtcbiAgICAgICAgbG9hZGVkLmN1cnJlbnQgPSB0cnVlO1xuICAgIH1cblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHNldHVwKCk7XG4gICAgfSwgW10pO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYoIXZpc2libGVUYWJQYWdlcykge1xuICAgICAgICAgICAgc2V0dXBWaXNpYmxlUGFnZXMoKVxuICAgICAgICB9XG4gICAgfSwgW3Zpc2libGVUYWJQYWdlc10pO1xuXG4gICAgZnVuY3Rpb24gcmVuZGVyVGFiUGFnZUNvbXBvbmVudChjb21wb25lbnQsIHRhYklkLCBpbmRleCkge1xuICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKGNvbXBvbmVudC5pZCkpIHtcbiAgICAgICAgICAgIGNvbXBvbmVudC5pZCA9IGluZGV4ICsgJy10YWItY29udGVudCc7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29tcG9uZW50LnR5cGUgPT09ICdmb3JtU2VjdGlvbicgP1xuICAgICAgICAgICAgPEZvcm1TZWN0aW9uIGtleUhhbmRsZXI9e3Byb3BzLmtleUhhbmRsZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtjb21wb25lbnQuaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnPXtjb21wb25lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlPXtjcmVhdGVDb21wb25lbnRIYW5kbGUoY29tcG9uZW50KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtPXtwcm9wcy5mb3JtfVxuICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudElkPXt0YWJJZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3SWQ9e3Byb3BzLnZpZXdJZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9e3Byb3BzLnZhbHVlc31cbiAgICAgICAgICAgIC8+IDpcbiAgICAgICAgICAgIGNvbXBvbmVudC50eXBlID09PSAndG9vbGJhcicgP1xuICAgICAgICAgICAgICAgIDxUb29sYmFyIGNvbmZpZz17Y29tcG9uZW50fSBoYW5kbGU9e2NyZWF0ZUNvbXBvbmVudEhhbmRsZShjb21wb25lbnQpfVxuICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17Y29tcG9uZW50LmlkfVxuICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdJZD17cHJvcHMudmlld0lkfS8+IDpcbiAgICAgICAgICAgICAgICBjb21wb25lbnQudHlwZSA9PT0gJ2xheW91dCcgP1xuICAgICAgICAgICAgICAgICAgICA8TGF5b3V0IGNvbmZpZz17Y29tcG9uZW50fSBoYW5kbGU9e2NyZWF0ZUNvbXBvbmVudEhhbmRsZShjb21wb25lbnQpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17Y29tcG9uZW50LmlkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdJZD17cHJvcHMudmlld0lkfS8+IDpcbiAgICAgICAgICAgICAgICAgICAgPGRpdj57J1Vuc3VwcG9ydGVkIGNvbXBvbmVudCB0eXBlICcgKyBjb21wb25lbnQudHlwZX08L2Rpdj47XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVuZGVyUGFnZShwYWdlLCBwYWdlSW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPXsndGFiLXBhZ2UtY29udGFpbmVyJ30+XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGFnZS5jb21wb25lbnRzLm1hcCgoY29tcG9uZW50LCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVuZGVyVGFiUGFnZUNvbXBvbmVudChjb21wb25lbnQsIHBhZ2UuaWQsIHBhZ2VJbmRleCArIGluZGV4KTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj47XG4gICAgfVxuXG4gICAgY29uc3QgYXBpID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZ2V0IGlkKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwcm9wcy5jb25maWcuaWQ7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0Q2hpbGRyZW46ICgpID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgY2hpbGRyZW4gPSBbXTtcblxuICAgICAgICAgICAgICAgIGxldCBwcm9wZXJ0aWVzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoY29tcG9uZW50SGFuZGxlcyk7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBjb21wb25lbnRIYW5kbGUgPSBjb21wb25lbnRIYW5kbGVzW3Byb3BlcnR5XTtcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4ucHVzaChjb21wb25lbnRIYW5kbGUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChjb21wb25lbnRIYW5kbGUuYXBpPy5nZXRDaGlsZHJlbikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgY29tcG9uZW50SGFuZGxlLmFwaS5nZXRDaGlsZHJlbigpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4ucHVzaChjaGlsZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gY2hpbGRyZW47XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0IHZhbHVlKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgc2V0VGFiVmFsdWUodmFsdWUpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldCB2YWx1ZSgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGFiVmFsdWU7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0UGFnZUhhc0Vycm9yOiAocGFnZUlkLCBoYXNFcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgIHNldEVycm9ycyh7Li4uZXJyb3JzLCBbcGFnZUlkXTogaGFzRXJyb3J9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjbGVhckVycm9yczogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHNldEVycm9ycyh7fSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVmcmVzaDogKCkgPT4ge1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlZHJhdzogKCkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIEZvcmNlIHJlLXJlbmRlclxuICAgICAgICAgICAgICAgIHNldFZpc2libGVUYWJQYWdlcyhudWxsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgIVV0aWxzLmlzTnVsbCh2aXNpYmxlVGFiUGFnZXMpICYmXG4gICAgICAgIDxkaXYgc3R5bGU9e3tcbiAgICAgICAgICAgIHdpZHRoOiBwcm9wcy5jb25maWc/LmF0dHJpYnV0ZXM/LnN0eWxlPy53aWR0aCA/IHByb3BzLmNvbmZpZz8uYXR0cmlidXRlcz8uc3R5bGU/LndpZHRoIDogJzEwMCUnLFxuICAgICAgICAgICAgaGVpZ2h0OiBwcm9wcy5jb25maWc/LmF0dHJpYnV0ZXM/LnN0eWxlPy5oZWlnaHQgPyBwcm9wcy5jb25maWc/LmF0dHJpYnV0ZXM/LnN0eWxlPy5oZWlnaHQgOiAnMTAwJSdcbiAgICAgICAgfX0+XG4gICAgICAgICAgICA8QXBwQmFyIHBvc2l0aW9uPVwic3RhdGljXCIgY29sb3I9XCJkZWZhdWx0XCJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBib3hTaGFkb3c6ICdub25lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlckJvdHRvbTogJzFweCBzb2xpZCAjZTFlMWUxJ1xuICAgICAgICAgICAgICAgICAgICB9fT5cbiAgICAgICAgICAgICAgICA8VGFic1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZT17dGFiVmFsdWV9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVUYWJDaGFuZ2V9XG4gICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJzY3JvbGxhYmxlXCIgICAgICAgICAgICAgICAgLy8gZW5hYmxlcyBob3Jpem9udGFsIHNjcm9sbFxuICAgICAgICAgICAgICAgICAgICBzY3JvbGxCdXR0b25zPVwiYXV0b1wiICAgICAgICAgICAgICAgIC8vIHNob3dzIGFycm93cyB3aGVuIG5lZWRlZFxuICAgICAgICAgICAgICAgICAgICBhbGxvd1Njcm9sbEJ1dHRvbnNNb2JpbGUgICAgICAgICAgICAvLyBzaG93IGFycm93cyBvbiBtb2JpbGUgdG9vXG4gICAgICAgICAgICAgICAgICAgIHRleHRDb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICBpbmRpY2F0b3JDb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwidGFic1wiXG4gICAgICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBvcHRpb25hbDogcmVkdWNlIGRlZmF1bHQgbWluIHdpZHRoIHNvIG1vcmUgdGFicyBmaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICcmIC5NdWlUYWItcm9vdCc6IHttaW5XaWR0aDogMTIwfSxcbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt2aXNpYmxlVGFiUGFnZXMubWFwKChwYWdlLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gT3B0aW9uYWwgcGVyLXRhYiBpY29uOiBgYXR0cmlidXRlcy5pY29uYCBpcyB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEljb24gY29tcG9uZW50J3MgaWQgKGUuZy4gXCJXT1JLXCIsIFwiVklFV1wiKS4gV2hlblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gcHJlc2VudCwgcmVuZGVyIHRvIHRoZSBsZWZ0IG9mIHRoZSBsYWJlbC5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGljb25JZCA9IHBhZ2UuYXR0cmlidXRlc1snaWNvbiddO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VGFiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXtwYWdlLmF0dHJpYnV0ZXNbJ2xhYmVsJ119XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb249e2ljb25JZCA/IDxJY29uIGlkPXtpY29uSWR9Lz4gOiB1bmRlZmluZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb25Qb3NpdGlvbj17aWNvbklkID8gJ3N0YXJ0JyA6IHVuZGVmaW5lZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JhcHBlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWxsb3cgbXVsdGktbGluZSBsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Li4uYTExeVByb3BzKGluZGV4KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heFdpZHRoOiAyNDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICcxMDAlJywgICAgICAgICAgICAgICAgIC8vIGNvbnN0cmFpbiBzbyB3cmFwcGluZyBjYW4gb2NjdXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaXRlU3BhY2U6ICdub3JtYWwnLCAgICAgICAgICAgICAvLyBhbGxvdyB3cmFwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JkQnJlYWs6ICdicmVhay13b3JkJywgICAgICAgICAgLy8gYnJlYWsgbG9uZyB3b3Jkc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dFRyYW5zZm9ybTogJ3VwcGVyY2FzZScsICAgICAgICAgICAgLy8ga2VlcCBvcmlnaW5hbCBjYXNpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5pc0Zvcm1NYXJrZXJzRW5hYmxlZCgpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzICE9PSBudWxsICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzW3BhZ2UuaWRdID09PSB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJyNlZDUyNDknXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICA8L1RhYnM+XG4gICAgICAgICAgICA8L0FwcEJhcj5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXtVdGlscy5tZXJnZVN0eWxlcyh7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogJ2NhbGMoMTAwJSAtIDY0cHgpJ1xuICAgICAgICAgICAgICAgIH0sIHByb3BzLmNvbmZpZyl9PlxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlVGFiUGFnZXMubWFwKChwYWdlLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8ZGl2IGtleT17aW5kZXh9IHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogcGFnZT8uYXR0cmlidXRlcz8uc3R5bGU/LmhlaWdodCA/IHBhZ2U/LmF0dHJpYnV0ZXM/LnN0eWxlPy5oZWlnaHQgOiAnMTAwJScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IHRhYlZhbHVlID09PSBpbmRleCA/IG51bGwgOiAnbm9uZSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRhYlBhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXt0YWJWYWx1ZX0gaW5kZXg9e2luZGV4fSBjb25maWc9e3BhZ2V9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3JlbmRlclBhZ2UocGFnZSwgaW5kZXgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1RhYlBhZ2U+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+O1xuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICApO1xufSk7XG5cbmV4cG9ydCBkZWZhdWx0IFRhYlBhbmVsO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQyxJQUFBQSxNQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDRCxJQUFBQyxNQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRSxPQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRyxJQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSSxLQUFBLEdBQUFMLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSyxRQUFBLEdBQUFOLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBTSxRQUFBLEdBQUFQLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBTyxRQUFBLEdBQUFSLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBUSxtQkFBQSxH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
@@ -7,6 +7,7 @@ exports.default = void 0;
7
7
  var _react = _interopRequireDefault(require("react"));
8
8
  var _Utils = _interopRequireDefault(require("../Utils"));
9
9
  var _Error = _interopRequireDefault(require("@mui/icons-material/Error"));
10
+ var _Chip = _interopRequireDefault(require("@mui/material/Chip"));
10
11
  var _Tooltip = _interopRequireDefault(require("./Tooltip"));
11
12
  var _Form = _interopRequireDefault(require("./form/Form"));
12
13
  var _DynamicJS = _interopRequireDefault(require("../DynamicJS"));
@@ -167,6 +168,42 @@ const TableCellContent = /*#__PURE__*/_react.default.memo(props => {
167
168
  displayValue = contentValue ? "Yes" : "No";
168
169
  } else if (contentType === 'MULTI_FILE_UPLOAD') {
169
170
  displayValue = contentValue.map(file => file.name).join(", ");
171
+ } else if (Array.isArray(contentValue)) {
172
+ // MULTI_LOOKUP cells render each item as an inline Chip so the
173
+ // non-edit row looks identical to the edit-mode field (which
174
+ // also renders Chips). The container wraps so rows grow only
175
+ // when there are many items, instead of being clipped.
176
+ const chipItems = contentValue.map(item => {
177
+ var _ref, _item$id;
178
+ return {
179
+ id: item && ((_ref = (_item$id = item.id) !== null && _item$id !== void 0 ? _item$id : item.username) !== null && _ref !== void 0 ? _ref : item.dataRecordDescription),
180
+ label: item && (item.__oui_label || item.dataRecordDescription || item.fullName || item.username || '')
181
+ };
182
+ }).filter(c => c.label);
183
+ if (chipItems.length === 0) {
184
+ return '';
185
+ }
186
+ return /*#__PURE__*/_react.default.createElement("div", {
187
+ style: {
188
+ display: 'flex',
189
+ flexWrap: 'wrap',
190
+ gap: '4px',
191
+ padding: '2px 0',
192
+ alignItems: 'center'
193
+ }
194
+ }, chipItems.map(c => /*#__PURE__*/_react.default.createElement(_Chip.default, {
195
+ key: c.id,
196
+ label: c.label,
197
+ size: "small",
198
+ variant: "outlined",
199
+ sx: {
200
+ maxWidth: '100%',
201
+ '& .MuiChip-label': {
202
+ overflow: 'hidden',
203
+ textOverflow: 'ellipsis'
204
+ }
205
+ }
206
+ })));
170
207
  } else {
171
208
  if (typeof contentValue === 'object') {
172
209
  // TODO : First check if the editor has a display template. If it does, use it to get the display value
@@ -269,4 +306,4 @@ const TableCellContent = /*#__PURE__*/_react.default.memo(props => {
269
306
  return (!props.editor || props.editor && editor) && render();
270
307
  });
271
308
  var _default = exports.default = TableCellContent;
272
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9VdGlscyIsIl9FcnJvciIsIl9Ub29sdGlwIiwiX0Zvcm0iLCJfRHluYW1pY0pTIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0Iiwib3duS2V5cyIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiX3RvUHJvcGVydHlLZXkiLCJ2YWx1ZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiaSIsIl90b1ByaW1pdGl2ZSIsIlN5bWJvbCIsInRvUHJpbWl0aXZlIiwiY2FsbCIsIlR5cGVFcnJvciIsIlN0cmluZyIsIk51bWJlciIsIlRhYmxlQ2VsbENvbnRlbnQiLCJSZWFjdCIsIm1lbW8iLCJwcm9wcyIsImNvbnRlbnRUeXBlIiwidXNlU3RhdGUiLCJyZWZyZXNoZXIiLCJzZXRSZWZyZXNoZXIiLCJlZGl0b3IiLCJzZXRFZGl0b3IiLCJlZGl0b3JWYWx1ZSIsInVzZVJlZiIsImVzY2FwZVJlZ2V4IiwicyIsInJlcGxhY2UiLCJlZGl0aW5nUmVmIiwiZm9ybWF0dGVyIiwiSW50bCIsIk51bWJlckZvcm1hdCIsInN0eWxlIiwiY3VycmVuY3kiLCJtaW5pbXVtRnJhY3Rpb25EaWdpdHMiLCJtYXhpbXVtRnJhY3Rpb25EaWdpdHMiLCJ2YWxpZGF0ZSIsInZhbGlkYXRvciIsIlV0aWxzIiwiaXNOdWxsIiwicmVxdWlyZWQiLCJudWxsYWJsZSIsIm51bGxhYmxlRXhwcmVzc2lvbiIsImNvbmNhdCIsInJvdyIsImluZGV4IiwiZXZhbHVhdGVCb29sZWFuRXhwcmVzc2lvbiIsImRhdGFCaW5kaW5nIiwiZm9ybVZhbHVlIiwiaWQiLCJ2YWxpZGF0aW9uIiwidmFsaWRhdGVGaWVsZCIsInZhbGlkIiwiZXJyb3IiLCJjb2x1bW4iLCJtZXNzYWdlIiwidXBkYXRlRXJyb3JzIiwib25Sb3dFcnJvciIsInZhbHVlQ2hhbmdlSGFuZGxlciIsImN1cnJlbnQiLCJ1c2VFZmZlY3QiLCJyZWFkTmVzdGVkUHJvcGVydHkiLCJhdHRyaWJ1dGVzIiwiY29udGFpbmVyU3R5bGUiLCJtaW5XaWR0aCIsIndpZHRoIiwicm93SWQiLCJmb3JtYXREYXRlIiwiY29udGVudFZhbHVlIiwiZGF0ZSIsIkRhdGUiLCJmb3JtYXR0ZWQiLCJnZXREYXRlIiwicGFkU3RhcnQiLCJnZXRNb250aCIsImdldEZ1bGxZZWFyIiwiYnVpbGRTZWFyY2hUZXJtcyIsInBhcmFtZXRlcnMiLCJzZXQiLCJTZXQiLCJwIiwidGVybSIsInNwbGl0IiwidHJpbSIsImFkZCIsInRvTG93ZXJDYXNlIiwiQXJyYXkiLCJmcm9tIiwiaGlnaGxpZ2h0VG9rZW5zIiwidGVybXMiLCJwYXR0ZXJuIiwibWFwIiwiam9pbiIsInNwbGl0UmVnZXgiLCJSZWdFeHAiLCJleGFjdFJlZ2V4IiwicGFydHMiLCJwYXJ0IiwiaXNNYXRjaCIsInRlc3QiLCJjcmVhdGVFbGVtZW50Iiwia2V5IiwiYmFja2dyb3VuZENvbG9yIiwiY29sb3IiLCJib3JkZXJSYWRpdXMiLCJmb250V2VpZ2h0IiwiYm94U2hhZG93IiwiZ2V0U3RhdGljRGlzcGxheVZhbHVlIiwiZGlzcGxheVZhbHVlIiwidG9rZW5zIiwicGFyZW50IiwiY29sdW1uQ29uZmlnIiwiY2VsbEZvcm1hdCIsImNlbGxGb3JtYXR0ZXIiLCJkeW5hbWljSlMiLCJleGVjdXRlU2NyaXB0RnVuY3Rpb24iLCJmb3JtYXQiLCJNYXRoIiwicm91bmQiLCJFUFNJTE9OIiwidG9Mb2NhbGVUaW1lU3RyaW5nIiwiZmlsZSIsIm5hbWUiLCJkYXRhUmVjb3JkRGVzY3JpcHRpb24iLCJjcml0ZXJpYSIsImRvUmVuZGVyIiwic2VsZWN0ZWQiLCJmb3JtQ29uZmlnIiwidHlwZSIsInNlY3Rpb25zIiwiY29tcG9uZW50cyIsImZpZWxkcyIsImNvbmZpZyIsImhhbmRsZSIsInZhbHVlcyIsInZpZXdJZCIsInJlbmRlciIsImhhc0Vycm9yIiwiY2xhc3NOYW1lIiwid3JhcCIsImJvcmRlciIsInRpdGxlIiwidGV4dEFsaWduIiwibWF4V2lkdGgiLCJhcGkiLCJ2YWwiLCJyZWZyZXNoIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL1RhYmxlQ2VsbENvbnRlbnQuanN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgVXRpbHMgZnJvbSAnLi4vVXRpbHMnO1xuaW1wb3J0IEVycm9ySWNvbiBmcm9tICdAbXVpL2ljb25zLW1hdGVyaWFsL0Vycm9yJztcbmltcG9ydCBDdXN0b21Ub29sdGlwIGZyb20gJy4vVG9vbHRpcCc7XG5pbXBvcnQgRm9ybSBmcm9tIFwiLi9mb3JtL0Zvcm1cIjtcbmltcG9ydCBkeW5hbWljSlMgZnJvbSBcIi4uL0R5bmFtaWNKU1wiO1xuXG5jb25zdCBUYWJsZUNlbGxDb250ZW50ID0gUmVhY3QubWVtbygocHJvcHMpID0+IHtcbiAgICBjb25zdCBbY29udGVudFR5cGVdID0gUmVhY3QudXNlU3RhdGUocHJvcHMuY29udGVudFR5cGUpO1xuICAgIGNvbnN0IFtyZWZyZXNoZXIsIHNldFJlZnJlc2hlcl0gPSBSZWFjdC51c2VTdGF0ZSh0cnVlKTtcbiAgICBjb25zdCBbZWRpdG9yLCBzZXRFZGl0b3JdID0gUmVhY3QudXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgZWRpdG9yVmFsdWUgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gICAgY29uc3QgZXNjYXBlUmVnZXggPSAocykgPT4gcy5yZXBsYWNlKC9bLiorP14ke30oKXxbXFxdXFxcXF0vZywgJ1xcXFwkJicpO1xuICAgIGNvbnN0IGVkaXRpbmdSZWYgPSBSZWFjdC51c2VSZWYoZmFsc2UpO1xuXG4gICAgY29uc3QgZm9ybWF0dGVyID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KFwiZW4tWkFcIiwge1xuICAgICAgICBzdHlsZTogXCJjdXJyZW5jeVwiLFxuICAgICAgICBjdXJyZW5jeTogXCJaQVJcIixcbiAgICAgICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyLFxuICAgICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDIsXG4gICAgfSk7XG5cbiAgICBjb25zdCB2YWxpZGF0ZSA9ICh2YWx1ZSkgPT4ge1xuICAgICAgICBpZiAocHJvcHMuZWRpdG9yKSB7XG4gICAgICAgICAgICBsZXQgdmFsaWRhdG9yID0gcHJvcHMudmFsaWRhdG9yO1xuICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwodmFsaWRhdG9yKSkge1xuICAgICAgICAgICAgICAgIGxldCByZXF1aXJlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHZhbGlkYXRvci5udWxsYWJsZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG51bGxhYmxlRXhwcmVzc2lvbiA9IHZhbGlkYXRvci5udWxsYWJsZS5yZXBsYWNlKC9cXFsjaV0vZywgYFske3Byb3BzLnJvdy5pbmRleH1dYCk7XG4gICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkID0gIVV0aWxzLmV2YWx1YXRlQm9vbGVhbkV4cHJlc3Npb24obnVsbGFibGVFeHByZXNzaW9uLCBwcm9wcy5kYXRhQmluZGluZyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgbGV0IGZvcm1WYWx1ZSA9IHt9O1xuICAgICAgICAgICAgICAgIGZvcm1WYWx1ZVtwcm9wcy5lZGl0b3IuZGF0YUJpbmRpbmcgfHwgcHJvcHMuZWRpdG9yLmlkXSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGxldCB2YWxpZGF0aW9uID0gVXRpbHMudmFsaWRhdGVGaWVsZChwcm9wcy5kYXRhQmluZGluZyxcbiAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQsIGZvcm1WYWx1ZSwgdmFsdWUsIHZhbGlkYXRvcik7XG4gICAgICAgICAgICAgICAgaWYgKCF2YWxpZGF0aW9uLnZhbGlkKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciA9IHt9O1xuICAgICAgICAgICAgICAgICAgICBlcnJvci5jb2x1bW4gPSBwcm9wcy5kYXRhQmluZGluZztcbiAgICAgICAgICAgICAgICAgICAgZXJyb3IubWVzc2FnZSA9IHZhbGlkYXRpb24ubWVzc2FnZTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIHVwZGF0ZUVycm9ycyhlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgIHByb3BzLm9uUm93RXJyb3IocHJvcHMuZGF0YUJpbmRpbmcsIGVycm9yLCBwcm9wcy5kYXRhQmluZGluZyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwcm9wcy5vblJvd0Vycm9yKHByb3BzLmRhdGFCaW5kaW5nLCBudWxsLCBwcm9wcy5kYXRhQmluZGluZyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZUNoYW5nZUhhbmRsZXIgPSAodmFsdWUpID0+IHtcbiAgICAgICAgZWRpdGluZ1JlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgICAgdXBkYXRlRXJyb3JzKHZhbGlkYXRlKHZhbHVlKSk7XG4gICAgICAgIHByb3BzLnZhbHVlQ2hhbmdlSGFuZGxlcihwcm9wcy5yb3cuaWQsIHByb3BzLmRhdGFCaW5kaW5nLCB2YWx1ZSk7XG4gICAgfTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmICghZWRpdGluZ1JlZi5jdXJyZW50ICYmIHByb3BzLmVkaXRvciAmJiBwcm9wcy5yb3cpIHtcbiAgICAgICAgICAgIGVkaXRvclZhbHVlLmN1cnJlbnQgPSBVdGlscy5yZWFkTmVzdGVkUHJvcGVydHkocHJvcHMucm93LCBwcm9wcy5kYXRhQmluZGluZyk7XG4gICAgICAgIH1cbiAgICB9LCBbcHJvcHMucm93LCBwcm9wcy5lZGl0b3JdKTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHByb3BzLmVkaXRvcikpIHtcbiAgICAgICAgICAgIGxldCBlID0gey4uLnByb3BzLmVkaXRvciwgaWQ6IHByb3BzLmVkaXRvci5pZC5yZXBsYWNlKCcuJywgJ18nKX07XG4gICAgICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKGUuYXR0cmlidXRlcykpIHtcbiAgICAgICAgICAgICAgICBlLmF0dHJpYnV0ZXMgPSB7fTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKFV0aWxzLmlzTnVsbChlLmF0dHJpYnV0ZXMuc3R5bGUpKSB7XG4gICAgICAgICAgICAgICAgZS5hdHRyaWJ1dGVzLnN0eWxlID0ge307XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChVdGlscy5pc051bGwoZS5hdHRyaWJ1dGVzLmNvbnRhaW5lclN0eWxlKSkge1xuICAgICAgICAgICAgICAgIGUuYXR0cmlidXRlcy5jb250YWluZXJTdHlsZSA9IHt9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBlLmF0dHJpYnV0ZXMuc3R5bGUubWluV2lkdGggPSBlLmF0dHJpYnV0ZXMuc3R5bGUubWluV2lkdGggPyBlLmF0dHJpYnV0ZXMuc3R5bGUubWluV2lkdGggOiAwO1xuICAgICAgICAgICAgZS5hdHRyaWJ1dGVzLnN0eWxlLndpZHRoID0gZS5hdHRyaWJ1dGVzLnN0eWxlLndpZHRoID8gZS5hdHRyaWJ1dGVzLnN0eWxlLndpZHRoIDogJ2NhbGMoMTAwJSAtIDhweCknO1xuICAgICAgICAgICAgZS5hdHRyaWJ1dGVzLmNvbnRhaW5lclN0eWxlLm1pbldpZHRoID0gZS5hdHRyaWJ1dGVzLmNvbnRhaW5lclN0eWxlLm1pbldpZHRoID8gZS5hdHRyaWJ1dGVzLmNvbnRhaW5lclN0eWxlLm1pbldpZHRoIDogMDtcbiAgICAgICAgICAgIGUucm93SWQgPSBwcm9wcy5yb3cuaWQ7XG5cbiAgICAgICAgICAgIHNldEVkaXRvcihlKTtcbiAgICAgICAgICAgIC8vIFRoaXMgZm9yY2VzIHRoZSBlZGl0YWJsZSBncmlkIHRvIHZhbGlkYXRlIGl0cyBpbml0aWFsIHZhbHVlXG4gICAgICAgICAgICBsZXQgdmFsdWUgPSBVdGlscy5yZWFkTmVzdGVkUHJvcGVydHkocHJvcHMucm93LCBwcm9wcy5kYXRhQmluZGluZyk7XG4gICAgICAgICAgICB2YWx1ZUNoYW5nZUhhbmRsZXIoVXRpbHMuaXNOdWxsKHZhbHVlKSA/IG51bGwgOiB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9LCBbcHJvcHMuZWRpdG9yXSk7XG5cbiAgICBjb25zdCBmb3JtYXREYXRlID0gKGNvbnRlbnRWYWx1ZSkgPT4ge1xuICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoY29udGVudFZhbHVlKTtcblxuICAgICAgICBjb25zdCBmb3JtYXR0ZWQgPSBgJHtTdHJpbmcoZGF0ZS5nZXREYXRlKCkpLnBhZFN0YXJ0KDIsICcwJyl9L2AgK1xuICAgICAgICAgICAgYCR7U3RyaW5nKGRhdGUuZ2V0TW9udGgoKSArIDEpLnBhZFN0YXJ0KDIsICcwJyl9L2AgK1xuICAgICAgICAgICAgYCR7ZGF0ZS5nZXRGdWxsWWVhcigpfWA7XG5cbiAgICAgICAgcmV0dXJuIGZvcm1hdHRlZDtcbiAgICB9XG5cbi8vIEJ1aWxkIGZsYXQsIGRlZHVwZWQgbGlzdCBvZiBzZWFyY2ggdGVybXMgZnJvbSBjcml0ZXJpYS5wYXJhbWV0ZXJzXG4gICAgY29uc3QgYnVpbGRTZWFyY2hUZXJtcyA9IChwYXJhbWV0ZXJzKSA9PiB7XG4gICAgICAgIGNvbnN0IHNldCA9IG5ldyBTZXQoKTtcbiAgICAgICAgZm9yIChjb25zdCBwIG9mIHBhcmFtZXRlcnMgfHwgW10pIHtcbiAgICAgICAgICAgIGlmIChwPy52YWx1ZSAmJiB0eXBlb2YgcC52YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHRlcm0gb2YgcC52YWx1ZS5zcGxpdCgvXFxzKy8pKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHQgPSB0ZXJtLnRyaW0oKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHQpIHNldC5hZGQodC50b0xvd2VyQ2FzZSgpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20oc2V0KTsgLy8gbG93ZXJjYXNlIHRlcm1zXG4gICAgfTtcblxuICAgIGNvbnN0IGhpZ2hsaWdodFRva2VucyA9ICh2YWx1ZSwgdGVybXMpID0+IHtcbiAgICAgICAgaWYgKCF2YWx1ZSB8fCAhdGVybXM/Lmxlbmd0aCkgcmV0dXJuIHZhbHVlO1xuXG4gICAgICAgIC8vIENvbWJpbmUgdGVybXMgaW50byBhIHNpbmdsZSBjYXB0dXJpbmcgZ3JvdXAgZm9yIHNwbGl0XG4gICAgICAgIGNvbnN0IHBhdHRlcm4gPSBgKCR7dGVybXMubWFwKHQgPT4gZXNjYXBlUmVnZXgodCkpLmpvaW4oJ3wnKX0pYDtcbiAgICAgICAgY29uc3Qgc3BsaXRSZWdleCA9IG5ldyBSZWdFeHAocGF0dGVybiwgJ2dpJyk7XG4gICAgICAgIGNvbnN0IGV4YWN0UmVnZXggPSBuZXcgUmVnRXhwKGBeKD86JHtwYXR0ZXJufSkkYCwgJ2knKTsgLy8gdG8gdGVzdCBwYXJ0c1xuXG4gICAgICAgIGNvbnN0IHBhcnRzID0gdmFsdWUuc3BsaXQoc3BsaXRSZWdleCk7XG5cbiAgICAgICAgcmV0dXJuIHBhcnRzLm1hcCgocGFydCwgaSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaXNNYXRjaCA9IGV4YWN0UmVnZXgudGVzdChwYXJ0KTtcbiAgICAgICAgICAgIHJldHVybiBpc01hdGNoID8gKFxuICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgIGtleT17aX1cbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJyNmZmViM2InLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICcjMDAwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogJzRweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBmb250V2VpZ2h0OiAnYm9sZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBib3hTaGFkb3c6ICcwIDAgM3B4IHJnYmEoMCwwLDAsMC4zKSdcbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgIHtwYXJ0fVxuICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICA8c3BhbiBrZXk9e2l9PntwYXJ0fTwvc3Bhbj5cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBjb25zdCBnZXRTdGF0aWNEaXNwbGF5VmFsdWUgPSAoKSA9PiB7XG4gICAgICAgIGxldCBkaXNwbGF5VmFsdWU7XG4gICAgICAgIGxldCBjb250ZW50VmFsdWU7XG4gICAgICAgIGxldCB0b2tlbnMgPSBwcm9wcy5kYXRhQmluZGluZy5zcGxpdCgnLicpO1xuXG4gICAgICAgIGlmICh0b2tlbnMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICBjb250ZW50VmFsdWUgPSBVdGlscy5yZWFkTmVzdGVkUHJvcGVydHkocHJvcHMucm93LCBwcm9wcy5kYXRhQmluZGluZyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgcGFyZW50ID0gcHJvcHMucm93O1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0b2tlbnMubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgcGFyZW50ID0gcGFyZW50W3Rva2Vuc1tpXV07XG4gICAgICAgICAgICAgICAgaWYgKCFwYXJlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocGFyZW50KSB7XG4gICAgICAgICAgICAgICAgY29udGVudFZhbHVlID0gcGFyZW50W3Rva2Vuc1t0b2tlbnMubGVuZ3RoIC0gMV1dO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHByb3BzLmNvbHVtbkNvbmZpZy5jZWxsRm9ybWF0ID09PSAnQ1VSUkVOQ1knIHx8IHByb3BzLmNvbHVtbkNvbmZpZy5jZWxsRm9ybWF0ID09PSAnTlVNQkVSJykge1xuICAgICAgICAgICAgcmV0dXJuIHByb3BzLmNlbGxGb3JtYXR0ZXIgPyBkeW5hbWljSlMuZXhlY3V0ZVNjcmlwdEZ1bmN0aW9uKHByb3BzLmNlbGxGb3JtYXR0ZXIsIGNvbnRlbnRWYWx1ZSlcbiAgICAgICAgICAgICAgICA6IFV0aWxzLmlzTnVsbChjb250ZW50VmFsdWUpID8gJycgOiBwcm9wcy5jb2x1bW5Db25maWcuY2VsbEZvcm1hdCA9PT0gJ0NVUlJFTkNZJyA/XG4gICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlci5mb3JtYXQoTWF0aC5yb3VuZCgoY29udGVudFZhbHVlICsgTnVtYmVyLkVQU0lMT04pICogMTAwKSAvIDEwMCkgOiBNYXRoLnJvdW5kKChjb250ZW50VmFsdWUgKyBOdW1iZXIuRVBTSUxPTikgKiAxMDApIC8gMTAwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKFV0aWxzLmlzTnVsbChjb250ZW50VmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheVZhbHVlID0gJyc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNvbnRlbnRUeXBlID09PSAnREFURScpIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5VmFsdWUgPSBmb3JtYXREYXRlKGNvbnRlbnRWYWx1ZSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNvbnRlbnRUeXBlID09PSAnVElNRScpIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5VmFsdWUgPSBuZXcgRGF0ZShjb250ZW50VmFsdWUpLnRvTG9jYWxlVGltZVN0cmluZygpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChjb250ZW50VHlwZSA9PT0gJ0NIRUNLQk9YJykge1xuICAgICAgICAgICAgICAgIGRpc3BsYXlWYWx1ZSA9IGNvbnRlbnRWYWx1ZSA/IFwiWWVzXCIgOiBcIk5vXCI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNvbnRlbnRUeXBlID09PSAnTVVMVElfRklMRV9VUExPQUQnKSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheVZhbHVlID0gY29udGVudFZhbHVlLm1hcChmaWxlID0+IGZpbGUubmFtZSkuam9pbihcIiwgXCIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGNvbnRlbnRWYWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gVE9ETyA6IEZpcnN0IGNoZWNrIGlmIHRoZSBlZGl0b3IgaGFzIGEgZGlzcGxheSB0ZW1wbGF0ZS4gSWYgaXQgZG9lcywgdXNlIGl0IHRvIGdldCB0aGUgZGlzcGxheSB2YWx1ZVxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5VmFsdWUgPSBjb250ZW50VmFsdWUuZGF0YVJlY29yZERlc2NyaXB0aW9uO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwcm9wcy5jcml0ZXJpYSAmJiBwcm9wcy5jcml0ZXJpYS5wYXJhbWV0ZXJzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0ZXJtcyA9IGJ1aWxkU2VhcmNoVGVybXMocHJvcHMuY3JpdGVyaWEucGFyYW1ldGVycyk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaGlnaGxpZ2h0VG9rZW5zKGNvbnRlbnRWYWx1ZSwgdGVybXMpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnRWYWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHByb3BzLmNlbGxGb3JtYXR0ZXIpIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5VmFsdWUgPSBkeW5hbWljSlMuZXhlY3V0ZVNjcmlwdEZ1bmN0aW9uKHByb3BzLmNlbGxGb3JtYXR0ZXIsIGNvbnRlbnRWYWx1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBkaXNwbGF5VmFsdWU7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgZG9SZW5kZXIgPSAoKSA9PiB7XG4gICAgICAgIGlmICghcHJvcHMuc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBnZXRTdGF0aWNEaXNwbGF5VmFsdWUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHByb3BzLmVkaXRvcikpIHtcbiAgICAgICAgICAgICAgICAvL3Byb3BzLmZvcm1WYWx1ZXNbcHJvcHMuZWRpdG9yLmlkXSA9IHByb3BzLnJvd1twcm9wcy5kYXRhQmluZGluZ107XG5cbiAgICAgICAgICAgICAgICBsZXQgZm9ybVZhbHVlID0ge307XG4gICAgICAgICAgICAgICAgZm9ybVZhbHVlW3Byb3BzLmVkaXRvci5kYXRhQmluZGluZyB8fCBwcm9wcy5lZGl0b3IuaWRdID0gZWRpdG9yVmFsdWUuY3VycmVudDtcbiAgICAgICAgICAgICAgICBsZXQgZm9ybUNvbmZpZyA9IHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJmb3JtXCIsXG4gICAgICAgICAgICAgICAgICAgIGlkOiBwcm9wcy5lZGl0b3IuaWQgKyBcIl9mb3JtXCIsXG4gICAgICAgICAgICAgICAgICAgIHNlY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJmb3JtU2VjdGlvblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudHM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJmaWVsZFNldFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwid2lkdGhcIjogXCIxMDAlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibWluV2lkdGhcIjogXCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWRpdG9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIDxGb3JtIGNvbmZpZz17Zm9ybUNvbmZpZ30gaGFuZGxlPXtwcm9wcy5oYW5kbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz17Zm9ybVZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZUNoYW5nZUhhbmRsZXI9eyh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWRpdG9yVmFsdWUuY3VycmVudCA9IHZhbHVlID8gdmFsdWVbZWRpdG9yLmRhdGFCaW5kaW5nIHx8IGVkaXRvci5pZF0gOiBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVDaGFuZ2VIYW5kbGVyKGVkaXRvclZhbHVlLmN1cnJlbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdJZD17cHJvcHMudmlld0lkfS8+O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZ2V0U3RhdGljRGlzcGxheVZhbHVlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgcmVuZGVyID0gKCkgPT4ge1xuICAgICAgICBsZXQgdmFsdWUgPSBVdGlscy5yZWFkTmVzdGVkUHJvcGVydHkocHJvcHMucm93LCBwcm9wcy5kYXRhQmluZGluZyk7XG4gICAgICAgIGxldCBlcnJvciA9IHZhbGlkYXRlKHZhbHVlKTtcbiAgICAgICAgdXBkYXRlRXJyb3JzKGVycm9yKTtcblxuICAgICAgICBsZXQgaGFzRXJyb3IgPSAhVXRpbHMuaXNOdWxsKGVycm9yKTtcbiAgICAgICAgcmV0dXJuIDx0YWJsZSBjbGFzc05hbWU9e3Byb3BzLndyYXAgPyAndGFibGVDZWxsQ29udGVudENvbnRhaW5lcicgOiAndGFibGVDZWxsQ29udGVudENvbnRhaW5lck5vV3JhcCd9IGJvcmRlcj1cIjBcIj5cbiAgICAgICAgICAgIDx0Ym9keT5cbiAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICB7aGFzRXJyb3IgP1xuICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9e3t3aWR0aDogJzhweCd9fT48Q3VzdG9tVG9vbHRpcCB0aXRsZT17ZXJyb3IubWVzc2FnZX0gdHlwZT17J0VSUk9SJ30+PEVycm9ySWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tjb2xvcjogJyNmNDQzMzYnfX0vPjwvQ3VzdG9tVG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD4gOiBudWxsfVxuICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT17cHJvcHMuY29sdW1uQ29uZmlnLmNlbGxGb3JtYXQgPT09ICdNT05FWScgfHwgcHJvcHMuY29sdW1uQ29uZmlnLmNlbGxGb3JtYXQgPT09ICdOVU1CRVInXG4gICAgICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEFsaWduOiAncmlnaHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4V2lkdGg6IDBcbiAgICAgICAgICAgICAgICAgICAgfSA6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHRBbGlnbjogJ2xlZnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4V2lkdGg6IDBcbiAgICAgICAgICAgICAgICAgICAgfX0+e2RvUmVuZGVyKCl9PC90ZD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICA8L3RhYmxlPjtcbiAgICB9O1xuXG4gICAgY29uc3QgYXBpID0ge1xuICAgICAgICBzZXQgdmFsdWUodmFsKSB7XG4gICAgICAgIH0sXG4gICAgICAgIHJlZnJlc2g6ICgpID0+IHtcbiAgICAgICAgICAgIHNldFJlZnJlc2hlcighcmVmcmVzaGVyKTtcbiAgICAgICAgICAgIGlmIChVdGlscy5pc051bGwocHJvcHMuZWRpdG9yKSkge1xuICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IFV0aWxzLnJlYWROZXN0ZWRQcm9wZXJ0eShwcm9wcy5yb3csIHByb3BzLmRhdGFCaW5kaW5nKTtcbiAgICAgICAgICAgICAgICB2YWx1ZUNoYW5nZUhhbmRsZXIodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcblxuICAgIHJldHVybiAoIXByb3BzLmVkaXRvciB8fCAocHJvcHMuZWRpdG9yICYmIGVkaXRvcikpICYmIHJlbmRlcigpO1xufSk7XG5cbmV4cG9ydCBkZWZhdWx0IFRhYmxlQ2VsbENvbnRlbnQ7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE1BQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLE1BQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLFFBQUEsR0FBQUosc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFJLEtBQUEsR0FBQUwsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFLLFVBQUEsR0FBQU4sc0JBQUEsQ0FBQUMsT0FBQTtBQUFxQyxTQUFBRCx1QkFBQU8sQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQUFBLFNBQUFHLFFBQUFILENBQUEsRUFBQUksQ0FBQSxRQUFBQyxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsSUFBQSxDQUFBUCxDQUFBLE9BQUFNLE1BQUEsQ0FBQUUscUJBQUEsUUFBQUMsQ0FBQSxHQUFBSCxNQUFBLENBQUFFLHFCQUFBLENBQUFSLENBQUEsR0FBQUksQ0FBQSxLQUFBSyxDQUFBLEdBQUFBLENBQUEsQ0FBQUMsTUFBQSxXQUFBTixDQUFBLFdBQUFFLE1BQUEsQ0FBQUssd0JBQUEsQ0FBQVgsQ0FBQSxFQUFBSSxDQUFBLEVBQUFR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
309
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9VdGlscyIsIl9FcnJvciIsIl9DaGlwIiwiX1Rvb2x0aXAiLCJfRm9ybSIsIl9EeW5hbWljSlMiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJvd25LZXlzIiwiciIsInQiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJfdG9Qcm9wZXJ0eUtleSIsInZhbHVlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJpIiwiX3RvUHJpbWl0aXZlIiwiU3ltYm9sIiwidG9QcmltaXRpdmUiLCJjYWxsIiwiVHlwZUVycm9yIiwiU3RyaW5nIiwiTnVtYmVyIiwiVGFibGVDZWxsQ29udGVudCIsIlJlYWN0IiwibWVtbyIsInByb3BzIiwiY29udGVudFR5cGUiLCJ1c2VTdGF0ZSIsInJlZnJlc2hlciIsInNldFJlZnJlc2hlciIsImVkaXRvciIsInNldEVkaXRvciIsImVkaXRvclZhbHVlIiwidXNlUmVmIiwiZXNjYXBlUmVnZXgiLCJzIiwicmVwbGFjZSIsImVkaXRpbmdSZWYiLCJmb3JtYXR0ZXIiLCJJbnRsIiwiTnVtYmVyRm9ybWF0Iiwic3R5bGUiLCJjdXJyZW5jeSIsIm1pbmltdW1GcmFjdGlvbkRpZ2l0cyIsIm1heGltdW1GcmFjdGlvbkRpZ2l0cyIsInZhbGlkYXRlIiwidmFsaWRhdG9yIiwiVXRpbHMiLCJpc051bGwiLCJyZXF1aXJlZCIsIm51bGxhYmxlIiwibnVsbGFibGVFeHByZXNzaW9uIiwiY29uY2F0Iiwicm93IiwiaW5kZXgiLCJldmFsdWF0ZUJvb2xlYW5FeHByZXNzaW9uIiwiZGF0YUJpbmRpbmciLCJmb3JtVmFsdWUiLCJpZCIsInZhbGlkYXRpb24iLCJ2YWxpZGF0ZUZpZWxkIiwidmFsaWQiLCJlcnJvciIsImNvbHVtbiIsIm1lc3NhZ2UiLCJ1cGRhdGVFcnJvcnMiLCJvblJvd0Vycm9yIiwidmFsdWVDaGFuZ2VIYW5kbGVyIiwiY3VycmVudCIsInVzZUVmZmVjdCIsInJlYWROZXN0ZWRQcm9wZXJ0eSIsImF0dHJpYnV0ZXMiLCJjb250YWluZXJTdHlsZSIsIm1pbldpZHRoIiwid2lkdGgiLCJyb3dJZCIsImZvcm1hdERhdGUiLCJjb250ZW50VmFsdWUiLCJkYXRlIiwiRGF0ZSIsImZvcm1hdHRlZCIsImdldERhdGUiLCJwYWRTdGFydCIsImdldE1vbnRoIiwiZ2V0RnVsbFllYXIiLCJidWlsZFNlYXJjaFRlcm1zIiwicGFyYW1ldGVycyIsInNldCIsIlNldCIsInAiLCJ0ZXJtIiwic3BsaXQiLCJ0cmltIiwiYWRkIiwidG9Mb3dlckNhc2UiLCJBcnJheSIsImZyb20iLCJoaWdobGlnaHRUb2tlbnMiLCJ0ZXJtcyIsInBhdHRlcm4iLCJtYXAiLCJqb2luIiwic3BsaXRSZWdleCIsIlJlZ0V4cCIsImV4YWN0UmVnZXgiLCJwYXJ0cyIsInBhcnQiLCJpc01hdGNoIiwidGVzdCIsImNyZWF0ZUVsZW1lbnQiLCJrZXkiLCJiYWNrZ3JvdW5kQ29sb3IiLCJjb2xvciIsImJvcmRlclJhZGl1cyIsImZvbnRXZWlnaHQiLCJib3hTaGFkb3ciLCJnZXRTdGF0aWNEaXNwbGF5VmFsdWUiLCJkaXNwbGF5VmFsdWUiLCJ0b2tlbnMiLCJwYXJlbnQiLCJjb2x1bW5Db25maWciLCJjZWxsRm9ybWF0IiwiY2VsbEZvcm1hdHRlciIsImR5bmFtaWNKUyIsImV4ZWN1dGVTY3JpcHRGdW5jdGlvbiIsImZvcm1hdCIsIk1hdGgiLCJyb3VuZCIsIkVQU0lMT04iLCJ0b0xvY2FsZVRpbWVTdHJpbmciLCJmaWxlIiwibmFtZSIsImlzQXJyYXkiLCJjaGlwSXRlbXMiLCJpdGVtIiwiX3JlZiIsIl9pdGVtJGlkIiwidXNlcm5hbWUiLCJkYXRhUmVjb3JkRGVzY3JpcHRpb24iLCJsYWJlbCIsIl9fb3VpX2xhYmVsIiwiZnVsbE5hbWUiLCJjIiwiZGlzcGxheSIsImZsZXhXcmFwIiwiZ2FwIiwicGFkZGluZyIsImFsaWduSXRlbXMiLCJzaXplIiwidmFyaWFudCIsInN4IiwibWF4V2lkdGgiLCJvdmVyZmxvdyIsInRleHRPdmVyZmxvdyIsImNyaXRlcmlhIiwiZG9SZW5kZXIiLCJzZWxlY3RlZCIsImZvcm1Db25maWciLCJ0eXBlIiwic2VjdGlvbnMiLCJjb21wb25lbnRzIiwiZmllbGRzIiwiY29uZmlnIiwiaGFuZGxlIiwidmFsdWVzIiwidmlld0lkIiwicmVuZGVyIiwiaGFzRXJyb3IiLCJjbGFzc05hbWUiLCJ3cmFwIiwiYm9yZGVyIiwidGl0bGUiLCJ0ZXh0QWxpZ24iLCJhcGkiLCJ2YWwiLCJyZWZyZXNoIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL1RhYmxlQ2VsbENvbnRlbnQuanN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgVXRpbHMgZnJvbSAnLi4vVXRpbHMnO1xuaW1wb3J0IEVycm9ySWNvbiBmcm9tICdAbXVpL2ljb25zLW1hdGVyaWFsL0Vycm9yJztcbmltcG9ydCBDaGlwIGZyb20gJ0BtdWkvbWF0ZXJpYWwvQ2hpcCc7XG5pbXBvcnQgQ3VzdG9tVG9vbHRpcCBmcm9tICcuL1Rvb2x0aXAnO1xuaW1wb3J0IEZvcm0gZnJvbSBcIi4vZm9ybS9Gb3JtXCI7XG5pbXBvcnQgZHluYW1pY0pTIGZyb20gXCIuLi9EeW5hbWljSlNcIjtcblxuY29uc3QgVGFibGVDZWxsQ29udGVudCA9IFJlYWN0Lm1lbW8oKHByb3BzKSA9PiB7XG4gICAgY29uc3QgW2NvbnRlbnRUeXBlXSA9IFJlYWN0LnVzZVN0YXRlKHByb3BzLmNvbnRlbnRUeXBlKTtcbiAgICBjb25zdCBbcmVmcmVzaGVyLCBzZXRSZWZyZXNoZXJdID0gUmVhY3QudXNlU3RhdGUodHJ1ZSk7XG4gICAgY29uc3QgW2VkaXRvciwgc2V0RWRpdG9yXSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IGVkaXRvclZhbHVlID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGVzY2FwZVJlZ2V4ID0gKHMpID0+IHMucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xcXVxcXFxdL2csICdcXFxcJCYnKTtcbiAgICBjb25zdCBlZGl0aW5nUmVmID0gUmVhY3QudXNlUmVmKGZhbHNlKTtcblxuICAgIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBJbnRsLk51bWJlckZvcm1hdChcImVuLVpBXCIsIHtcbiAgICAgICAgc3R5bGU6IFwiY3VycmVuY3lcIixcbiAgICAgICAgY3VycmVuY3k6IFwiWkFSXCIsXG4gICAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMixcbiAgICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyLFxuICAgIH0pO1xuXG4gICAgY29uc3QgdmFsaWRhdGUgPSAodmFsdWUpID0+IHtcbiAgICAgICAgaWYgKHByb3BzLmVkaXRvcikge1xuICAgICAgICAgICAgbGV0IHZhbGlkYXRvciA9IHByb3BzLnZhbGlkYXRvcjtcbiAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHZhbGlkYXRvcikpIHtcbiAgICAgICAgICAgICAgICBsZXQgcmVxdWlyZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbCh2YWxpZGF0b3IubnVsbGFibGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBudWxsYWJsZUV4cHJlc3Npb24gPSB2YWxpZGF0b3IubnVsbGFibGUucmVwbGFjZSgvXFxbI2ldL2csIGBbJHtwcm9wcy5yb3cuaW5kZXh9XWApO1xuICAgICAgICAgICAgICAgICAgICByZXF1aXJlZCA9ICFVdGlscy5ldmFsdWF0ZUJvb2xlYW5FeHByZXNzaW9uKG51bGxhYmxlRXhwcmVzc2lvbiwgcHJvcHMuZGF0YUJpbmRpbmcpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGxldCBmb3JtVmFsdWUgPSB7fTtcbiAgICAgICAgICAgICAgICBmb3JtVmFsdWVbcHJvcHMuZWRpdG9yLmRhdGFCaW5kaW5nIHx8IHByb3BzLmVkaXRvci5pZF0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBsZXQgdmFsaWRhdGlvbiA9IFV0aWxzLnZhbGlkYXRlRmllbGQocHJvcHMuZGF0YUJpbmRpbmcsXG4gICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkLCBmb3JtVmFsdWUsIHZhbHVlLCB2YWxpZGF0b3IpO1xuICAgICAgICAgICAgICAgIGlmICghdmFsaWRhdGlvbi52YWxpZCkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IgPSB7fTtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3IuY29sdW1uID0gcHJvcHMuZGF0YUJpbmRpbmc7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yLm1lc3NhZ2UgPSB2YWxpZGF0aW9uLm1lc3NhZ2U7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiB1cGRhdGVFcnJvcnMoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICBwcm9wcy5vblJvd0Vycm9yKHByb3BzLmRhdGFCaW5kaW5nLCBlcnJvciwgcHJvcHMuZGF0YUJpbmRpbmcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcHJvcHMub25Sb3dFcnJvcihwcm9wcy5kYXRhQmluZGluZywgbnVsbCwgcHJvcHMuZGF0YUJpbmRpbmcpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWVDaGFuZ2VIYW5kbGVyID0gKHZhbHVlKSA9PiB7XG4gICAgICAgIGVkaXRpbmdSZWYuY3VycmVudCA9IHRydWU7XG4gICAgICAgIHVwZGF0ZUVycm9ycyh2YWxpZGF0ZSh2YWx1ZSkpO1xuICAgICAgICBwcm9wcy52YWx1ZUNoYW5nZUhhbmRsZXIocHJvcHMucm93LmlkLCBwcm9wcy5kYXRhQmluZGluZywgdmFsdWUpO1xuICAgIH07XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoIWVkaXRpbmdSZWYuY3VycmVudCAmJiBwcm9wcy5lZGl0b3IgJiYgcHJvcHMucm93KSB7XG4gICAgICAgICAgICBlZGl0b3JWYWx1ZS5jdXJyZW50ID0gVXRpbHMucmVhZE5lc3RlZFByb3BlcnR5KHByb3BzLnJvdywgcHJvcHMuZGF0YUJpbmRpbmcpO1xuICAgICAgICB9XG4gICAgfSwgW3Byb3BzLnJvdywgcHJvcHMuZWRpdG9yXSk7XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChwcm9wcy5lZGl0b3IpKSB7XG4gICAgICAgICAgICBsZXQgZSA9IHsuLi5wcm9wcy5lZGl0b3IsIGlkOiBwcm9wcy5lZGl0b3IuaWQucmVwbGFjZSgnLicsICdfJyl9O1xuICAgICAgICAgICAgaWYgKFV0aWxzLmlzTnVsbChlLmF0dHJpYnV0ZXMpKSB7XG4gICAgICAgICAgICAgICAgZS5hdHRyaWJ1dGVzID0ge307XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChVdGlscy5pc051bGwoZS5hdHRyaWJ1dGVzLnN0eWxlKSkge1xuICAgICAgICAgICAgICAgIGUuYXR0cmlidXRlcy5zdHlsZSA9IHt9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKGUuYXR0cmlidXRlcy5jb250YWluZXJTdHlsZSkpIHtcbiAgICAgICAgICAgICAgICBlLmF0dHJpYnV0ZXMuY29udGFpbmVyU3R5bGUgPSB7fTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZS5hdHRyaWJ1dGVzLnN0eWxlLm1pbldpZHRoID0gZS5hdHRyaWJ1dGVzLnN0eWxlLm1pbldpZHRoID8gZS5hdHRyaWJ1dGVzLnN0eWxlLm1pbldpZHRoIDogMDtcbiAgICAgICAgICAgIGUuYXR0cmlidXRlcy5zdHlsZS53aWR0aCA9IGUuYXR0cmlidXRlcy5zdHlsZS53aWR0aCA/IGUuYXR0cmlidXRlcy5zdHlsZS53aWR0aCA6ICdjYWxjKDEwMCUgLSA4cHgpJztcbiAgICAgICAgICAgIGUuYXR0cmlidXRlcy5jb250YWluZXJTdHlsZS5taW5XaWR0aCA9IGUuYXR0cmlidXRlcy5jb250YWluZXJTdHlsZS5taW5XaWR0aCA/IGUuYXR0cmlidXRlcy5jb250YWluZXJTdHlsZS5taW5XaWR0aCA6IDA7XG4gICAgICAgICAgICBlLnJvd0lkID0gcHJvcHMucm93LmlkO1xuXG4gICAgICAgICAgICBzZXRFZGl0b3IoZSk7XG4gICAgICAgICAgICAvLyBUaGlzIGZvcmNlcyB0aGUgZWRpdGFibGUgZ3JpZCB0byB2YWxpZGF0ZSBpdHMgaW5pdGlhbCB2YWx1ZVxuICAgICAgICAgICAgbGV0IHZhbHVlID0gVXRpbHMucmVhZE5lc3RlZFByb3BlcnR5KHByb3BzLnJvdywgcHJvcHMuZGF0YUJpbmRpbmcpO1xuICAgICAgICAgICAgdmFsdWVDaGFuZ2VIYW5kbGVyKFV0aWxzLmlzTnVsbCh2YWx1ZSkgPyBudWxsIDogdmFsdWUpO1xuICAgICAgICB9XG4gICAgfSwgW3Byb3BzLmVkaXRvcl0pO1xuXG4gICAgY29uc3QgZm9ybWF0RGF0ZSA9IChjb250ZW50VmFsdWUpID0+IHtcbiAgICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKGNvbnRlbnRWYWx1ZSk7XG5cbiAgICAgICAgY29uc3QgZm9ybWF0dGVkID0gYCR7U3RyaW5nKGRhdGUuZ2V0RGF0ZSgpKS5wYWRTdGFydCgyLCAnMCcpfS9gICtcbiAgICAgICAgICAgIGAke1N0cmluZyhkYXRlLmdldE1vbnRoKCkgKyAxKS5wYWRTdGFydCgyLCAnMCcpfS9gICtcbiAgICAgICAgICAgIGAke2RhdGUuZ2V0RnVsbFllYXIoKX1gO1xuXG4gICAgICAgIHJldHVybiBmb3JtYXR0ZWQ7XG4gICAgfVxuXG4vLyBCdWlsZCBmbGF0LCBkZWR1cGVkIGxpc3Qgb2Ygc2VhcmNoIHRlcm1zIGZyb20gY3JpdGVyaWEucGFyYW1ldGVyc1xuICAgIGNvbnN0IGJ1aWxkU2VhcmNoVGVybXMgPSAocGFyYW1ldGVycykgPT4ge1xuICAgICAgICBjb25zdCBzZXQgPSBuZXcgU2V0KCk7XG4gICAgICAgIGZvciAoY29uc3QgcCBvZiBwYXJhbWV0ZXJzIHx8IFtdKSB7XG4gICAgICAgICAgICBpZiAocD8udmFsdWUgJiYgdHlwZW9mIHAudmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCB0ZXJtIG9mIHAudmFsdWUuc3BsaXQoL1xccysvKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gdGVybS50cmltKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0KSBzZXQuYWRkKHQudG9Mb3dlckNhc2UoKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKHNldCk7IC8vIGxvd2VyY2FzZSB0ZXJtc1xuICAgIH07XG5cbiAgICBjb25zdCBoaWdobGlnaHRUb2tlbnMgPSAodmFsdWUsIHRlcm1zKSA9PiB7XG4gICAgICAgIGlmICghdmFsdWUgfHwgIXRlcm1zPy5sZW5ndGgpIHJldHVybiB2YWx1ZTtcblxuICAgICAgICAvLyBDb21iaW5lIHRlcm1zIGludG8gYSBzaW5nbGUgY2FwdHVyaW5nIGdyb3VwIGZvciBzcGxpdFxuICAgICAgICBjb25zdCBwYXR0ZXJuID0gYCgke3Rlcm1zLm1hcCh0ID0+IGVzY2FwZVJlZ2V4KHQpKS5qb2luKCd8Jyl9KWA7XG4gICAgICAgIGNvbnN0IHNwbGl0UmVnZXggPSBuZXcgUmVnRXhwKHBhdHRlcm4sICdnaScpO1xuICAgICAgICBjb25zdCBleGFjdFJlZ2V4ID0gbmV3IFJlZ0V4cChgXig/OiR7cGF0dGVybn0pJGAsICdpJyk7IC8vIHRvIHRlc3QgcGFydHNcblxuICAgICAgICBjb25zdCBwYXJ0cyA9IHZhbHVlLnNwbGl0KHNwbGl0UmVnZXgpO1xuXG4gICAgICAgIHJldHVybiBwYXJ0cy5tYXAoKHBhcnQsIGkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGlzTWF0Y2ggPSBleGFjdFJlZ2V4LnRlc3QocGFydCk7XG4gICAgICAgICAgICByZXR1cm4gaXNNYXRjaCA/IChcbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICBrZXk9e2l9XG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjZmZlYjNiJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnIzAwMCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6ICc0cHgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9udFdlaWdodDogJ2JvbGQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYm94U2hhZG93OiAnMCAwIDNweCByZ2JhKDAsMCwwLDAuMyknXG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICB7cGFydH1cbiAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPHNwYW4ga2V5PXtpfT57cGFydH08L3NwYW4+XG4gICAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgY29uc3QgZ2V0U3RhdGljRGlzcGxheVZhbHVlID0gKCkgPT4ge1xuICAgICAgICBsZXQgZGlzcGxheVZhbHVlO1xuICAgICAgICBsZXQgY29udGVudFZhbHVlO1xuICAgICAgICBsZXQgdG9rZW5zID0gcHJvcHMuZGF0YUJpbmRpbmcuc3BsaXQoJy4nKTtcblxuICAgICAgICBpZiAodG9rZW5zLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgY29udGVudFZhbHVlID0gVXRpbHMucmVhZE5lc3RlZFByb3BlcnR5KHByb3BzLnJvdywgcHJvcHMuZGF0YUJpbmRpbmcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGV0IHBhcmVudCA9IHByb3BzLnJvdztcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdG9rZW5zLmxlbmd0aCAtIDE7IGkrKykge1xuICAgICAgICAgICAgICAgIHBhcmVudCA9IHBhcmVudFt0b2tlbnNbaV1dO1xuICAgICAgICAgICAgICAgIGlmICghcGFyZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHBhcmVudCkge1xuICAgICAgICAgICAgICAgIGNvbnRlbnRWYWx1ZSA9IHBhcmVudFt0b2tlbnNbdG9rZW5zLmxlbmd0aCAtIDFdXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwcm9wcy5jb2x1bW5Db25maWcuY2VsbEZvcm1hdCA9PT0gJ0NVUlJFTkNZJyB8fCBwcm9wcy5jb2x1bW5Db25maWcuY2VsbEZvcm1hdCA9PT0gJ05VTUJFUicpIHtcbiAgICAgICAgICAgIHJldHVybiBwcm9wcy5jZWxsRm9ybWF0dGVyID8gZHluYW1pY0pTLmV4ZWN1dGVTY3JpcHRGdW5jdGlvbihwcm9wcy5jZWxsRm9ybWF0dGVyLCBjb250ZW50VmFsdWUpXG4gICAgICAgICAgICAgICAgOiBVdGlscy5pc051bGwoY29udGVudFZhbHVlKSA/ICcnIDogcHJvcHMuY29sdW1uQ29uZmlnLmNlbGxGb3JtYXQgPT09ICdDVVJSRU5DWScgP1xuICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZXIuZm9ybWF0KE1hdGgucm91bmQoKGNvbnRlbnRWYWx1ZSArIE51bWJlci5FUFNJTE9OKSAqIDEwMCkgLyAxMDApIDogTWF0aC5yb3VuZCgoY29udGVudFZhbHVlICsgTnVtYmVyLkVQU0lMT04pICogMTAwKSAvIDEwMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChVdGlscy5pc051bGwoY29udGVudFZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGRpc3BsYXlWYWx1ZSA9ICcnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChjb250ZW50VHlwZSA9PT0gJ0RBVEUnKSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheVZhbHVlID0gZm9ybWF0RGF0ZShjb250ZW50VmFsdWUpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChjb250ZW50VHlwZSA9PT0gJ1RJTUUnKSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheVZhbHVlID0gbmV3IERhdGUoY29udGVudFZhbHVlKS50b0xvY2FsZVRpbWVTdHJpbmcoKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY29udGVudFR5cGUgPT09ICdDSEVDS0JPWCcpIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5VmFsdWUgPSBjb250ZW50VmFsdWUgPyBcIlllc1wiIDogXCJOb1wiO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChjb250ZW50VHlwZSA9PT0gJ01VTFRJX0ZJTEVfVVBMT0FEJykge1xuICAgICAgICAgICAgICAgIGRpc3BsYXlWYWx1ZSA9IGNvbnRlbnRWYWx1ZS5tYXAoZmlsZSA9PiBmaWxlLm5hbWUpLmpvaW4oXCIsIFwiKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShjb250ZW50VmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgLy8gTVVMVElfTE9PS1VQIGNlbGxzIHJlbmRlciBlYWNoIGl0ZW0gYXMgYW4gaW5saW5lIENoaXAgc28gdGhlXG4gICAgICAgICAgICAgICAgLy8gbm9uLWVkaXQgcm93IGxvb2tzIGlkZW50aWNhbCB0byB0aGUgZWRpdC1tb2RlIGZpZWxkICh3aGljaFxuICAgICAgICAgICAgICAgIC8vIGFsc28gcmVuZGVycyBDaGlwcykuIFRoZSBjb250YWluZXIgd3JhcHMgc28gcm93cyBncm93IG9ubHlcbiAgICAgICAgICAgICAgICAvLyB3aGVuIHRoZXJlIGFyZSBtYW55IGl0ZW1zLCBpbnN0ZWFkIG9mIGJlaW5nIGNsaXBwZWQuXG4gICAgICAgICAgICAgICAgY29uc3QgY2hpcEl0ZW1zID0gY29udGVudFZhbHVlXG4gICAgICAgICAgICAgICAgICAgIC5tYXAoaXRlbSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGl0ZW0gJiYgKGl0ZW0uaWQgPz8gaXRlbS51c2VybmFtZSA/PyBpdGVtLmRhdGFSZWNvcmREZXNjcmlwdGlvbiksXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogaXRlbSAmJiAoaXRlbS5fX291aV9sYWJlbCB8fCBpdGVtLmRhdGFSZWNvcmREZXNjcmlwdGlvbiB8fCBpdGVtLmZ1bGxOYW1lIHx8IGl0ZW0udXNlcm5hbWUgfHwgJycpXG4gICAgICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKGMgPT4gYy5sYWJlbCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoY2hpcEl0ZW1zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmxleFdyYXA6ICd3cmFwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGdhcDogJzRweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAnMnB4IDAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcidcbiAgICAgICAgICAgICAgICAgICAgfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICB7Y2hpcEl0ZW1zLm1hcCgoYykgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDaGlwIGtleT17Yy5pZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17Yy5sYWJlbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4V2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyYgLk11aUNoaXAtbGFiZWwnOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0T3ZlcmZsb3c6ICdlbGxpcHNpcydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGNvbnRlbnRWYWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gVE9ETyA6IEZpcnN0IGNoZWNrIGlmIHRoZSBlZGl0b3IgaGFzIGEgZGlzcGxheSB0ZW1wbGF0ZS4gSWYgaXQgZG9lcywgdXNlIGl0IHRvIGdldCB0aGUgZGlzcGxheSB2YWx1ZVxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5VmFsdWUgPSBjb250ZW50VmFsdWUuZGF0YVJlY29yZERlc2NyaXB0aW9uO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwcm9wcy5jcml0ZXJpYSAmJiBwcm9wcy5jcml0ZXJpYS5wYXJhbWV0ZXJzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0ZXJtcyA9IGJ1aWxkU2VhcmNoVGVybXMocHJvcHMuY3JpdGVyaWEucGFyYW1ldGVycyk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaGlnaGxpZ2h0VG9rZW5zKGNvbnRlbnRWYWx1ZSwgdGVybXMpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnRWYWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHByb3BzLmNlbGxGb3JtYXR0ZXIpIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5VmFsdWUgPSBkeW5hbWljSlMuZXhlY3V0ZVNjcmlwdEZ1bmN0aW9uKHByb3BzLmNlbGxGb3JtYXR0ZXIsIGNvbnRlbnRWYWx1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBkaXNwbGF5VmFsdWU7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgZG9SZW5kZXIgPSAoKSA9PiB7XG4gICAgICAgIGlmICghcHJvcHMuc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBnZXRTdGF0aWNEaXNwbGF5VmFsdWUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHByb3BzLmVkaXRvcikpIHtcbiAgICAgICAgICAgICAgICAvL3Byb3BzLmZvcm1WYWx1ZXNbcHJvcHMuZWRpdG9yLmlkXSA9IHByb3BzLnJvd1twcm9wcy5kYXRhQmluZGluZ107XG5cbiAgICAgICAgICAgICAgICBsZXQgZm9ybVZhbHVlID0ge307XG4gICAgICAgICAgICAgICAgZm9ybVZhbHVlW3Byb3BzLmVkaXRvci5kYXRhQmluZGluZyB8fCBwcm9wcy5lZGl0b3IuaWRdID0gZWRpdG9yVmFsdWUuY3VycmVudDtcbiAgICAgICAgICAgICAgICBsZXQgZm9ybUNvbmZpZyA9IHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJmb3JtXCIsXG4gICAgICAgICAgICAgICAgICAgIGlkOiBwcm9wcy5lZGl0b3IuaWQgKyBcIl9mb3JtXCIsXG4gICAgICAgICAgICAgICAgICAgIHNlY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJmb3JtU2VjdGlvblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudHM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJmaWVsZFNldFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwid2lkdGhcIjogXCIxMDAlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibWluV2lkdGhcIjogXCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWRpdG9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIDxGb3JtIGNvbmZpZz17Zm9ybUNvbmZpZ30gaGFuZGxlPXtwcm9wcy5oYW5kbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz17Zm9ybVZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZUNoYW5nZUhhbmRsZXI9eyh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWRpdG9yVmFsdWUuY3VycmVudCA9IHZhbHVlID8gdmFsdWVbZWRpdG9yLmRhdGFCaW5kaW5nIHx8IGVkaXRvci5pZF0gOiBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVDaGFuZ2VIYW5kbGVyKGVkaXRvclZhbHVlLmN1cnJlbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdJZD17cHJvcHMudmlld0lkfS8+O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZ2V0U3RhdGljRGlzcGxheVZhbHVlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgcmVuZGVyID0gKCkgPT4ge1xuICAgICAgICBsZXQgdmFsdWUgPSBVdGlscy5yZWFkTmVzdGVkUHJvcGVydHkocHJvcHMucm93LCBwcm9wcy5kYXRhQmluZGluZyk7XG4gICAgICAgIGxldCBlcnJvciA9IHZhbGlkYXRlKHZhbHVlKTtcbiAgICAgICAgdXBkYXRlRXJyb3JzKGVycm9yKTtcblxuICAgICAgICBsZXQgaGFzRXJyb3IgPSAhVXRpbHMuaXNOdWxsKGVycm9yKTtcbiAgICAgICAgcmV0dXJuIDx0YWJsZSBjbGFzc05hbWU9e3Byb3BzLndyYXAgPyAndGFibGVDZWxsQ29udGVudENvbnRhaW5lcicgOiAndGFibGVDZWxsQ29udGVudENvbnRhaW5lck5vV3JhcCd9IGJvcmRlcj1cIjBcIj5cbiAgICAgICAgICAgIDx0Ym9keT5cbiAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICB7aGFzRXJyb3IgP1xuICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9e3t3aWR0aDogJzhweCd9fT48Q3VzdG9tVG9vbHRpcCB0aXRsZT17ZXJyb3IubWVzc2FnZX0gdHlwZT17J0VSUk9SJ30+PEVycm9ySWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tjb2xvcjogJyNmNDQzMzYnfX0vPjwvQ3VzdG9tVG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD4gOiBudWxsfVxuICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT17cHJvcHMuY29sdW1uQ29uZmlnLmNlbGxGb3JtYXQgPT09ICdNT05FWScgfHwgcHJvcHMuY29sdW1uQ29uZmlnLmNlbGxGb3JtYXQgPT09ICdOVU1CRVInXG4gICAgICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEFsaWduOiAncmlnaHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4V2lkdGg6IDBcbiAgICAgICAgICAgICAgICAgICAgfSA6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHRBbGlnbjogJ2xlZnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4V2lkdGg6IDBcbiAgICAgICAgICAgICAgICAgICAgfX0+e2RvUmVuZGVyKCl9PC90ZD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICA8L3RhYmxlPjtcbiAgICB9O1xuXG4gICAgY29uc3QgYXBpID0ge1xuICAgICAgICBzZXQgdmFsdWUodmFsKSB7XG4gICAgICAgIH0sXG4gICAgICAgIHJlZnJlc2g6ICgpID0+IHtcbiAgICAgICAgICAgIHNldFJlZnJlc2hlcighcmVmcmVzaGVyKTtcbiAgICAgICAgICAgIGlmIChVdGlscy5pc051bGwocHJvcHMuZWRpdG9yKSkge1xuICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IFV0aWxzLnJlYWROZXN0ZWRQcm9wZXJ0eShwcm9wcy5yb3csIHByb3BzLmRhdGFCaW5kaW5nKTtcbiAgICAgICAgICAgICAgICB2YWx1ZUNoYW5nZUhhbmRsZXIodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcblxuICAgIHJldHVybiAoIXByb3BzLmVkaXRvciB8fCAocHJvcHMuZWRpdG9yICYmIGVkaXRvcikpICYmIHJlbmRlcigpO1xufSk7XG5cbmV4cG9ydCBkZWZhdWx0IFRhYmxlQ2VsbENvbnRlbnQ7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE1BQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLE1BQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLEtBQUEsR0FBQUosc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFJLFFBQUEsR0FBQUwsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFLLEtBQUEsR0FBQU4sc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFNLFVBQUEsR0FBQVAsc0JBQUEsQ0FBQUMsT0FBQTtBQUFxQyxTQUFBRCx1QkFB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
@@ -0,0 +1,151 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _Utils = _interopRequireDefault(require("../Utils"));
9
+ var _Observable = _interopRequireDefault(require("../event/Observable"));
10
+ var _Event = _interopRequireDefault(require("../event/Event"));
11
+ var _EventType = _interopRequireDefault(require("../event/EventType"));
12
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
+ /**
14
+ * CDUI-wrapped Cloudflare Turnstile widget. Drops the widget into a
15
+ * layout the same way any other CDUI component does and exposes the
16
+ * resolved challenge token through {@code handle.api.value}, so view
17
+ * authors can reference it from other components / service calls via
18
+ * {@code @#{turnstile}.value} when wiring up an httpParameterType.
19
+ *
20
+ * <p>Loads Cloudflare's vendor script lazily on first mount. The script
21
+ * defines {@code window.turnstile} which exposes {@code render()} —
22
+ * we render explicitly (not auto-render via class="cf-turnstile") so
23
+ * the React lifecycle can issue a {@code reset} when the parent view
24
+ * re-mounts.
25
+ *
26
+ * <p>Site key is sourced from {@code REACT_APP_TURNSTILE_SITE_KEY} at
27
+ * build time (matches the project's existing REACT_APP_* convention),
28
+ * NOT from CDUI JSON — view authors shouldn't have to know the key.
29
+ * For dev, hostname {@code localhost} is explicitly supported by
30
+ * Cloudflare so the same env var can be used unchanged.
31
+ */
32
+ const TURNSTILE_SCRIPT_URL = 'https://challenges.cloudflare.com/turnstile/v0/api.js?render=explicit';
33
+
34
+ // Cloudflare Turnstile's "site key" is intentionally public (it's the
35
+ // publishable identifier, analogous to Stripe's publishable key) and
36
+ // is hostname-bound on the Cloudflare side, so leaking it can't be
37
+ // used against other domains. Even so, sourcing it from an env var
38
+ // keeps dev/staging/prod swappable without a code change — same shape
39
+ // the codebase already uses for REACT_APP_DOCS_API_HOST etc. Set
40
+ // REACT_APP_TURNSTILE_SITE_KEY per environment.
41
+ const SITE_KEY = process.env.REACT_APP_TURNSTILE_SITE_KEY;
42
+ let scriptLoadPromise = null;
43
+ const loadTurnstileScript = () => {
44
+ if (scriptLoadPromise) {
45
+ return scriptLoadPromise;
46
+ }
47
+ if (typeof window !== 'undefined' && window.turnstile) {
48
+ scriptLoadPromise = Promise.resolve();
49
+ return scriptLoadPromise;
50
+ }
51
+ scriptLoadPromise = new Promise((resolve, reject) => {
52
+ const script = document.createElement('script');
53
+ script.src = TURNSTILE_SCRIPT_URL;
54
+ script.async = true;
55
+ script.defer = true;
56
+ script.onload = () => resolve();
57
+ script.onerror = e => {
58
+ scriptLoadPromise = null; // allow retry next mount
59
+ reject(e);
60
+ };
61
+ document.head.appendChild(script);
62
+ });
63
+ return scriptLoadPromise;
64
+ };
65
+ const Turnstile = /*#__PURE__*/_react.default.memo(props => {
66
+ const containerRef = _react.default.useRef(null);
67
+ const widgetIdRef = _react.default.useRef(null);
68
+ const [token, setToken] = _react.default.useState(null);
69
+ _react.default.useEffect(() => {
70
+ props.handle.api = api();
71
+ });
72
+ _react.default.useEffect(() => {
73
+ const parsedConfig = _Utils.default.parseConfig(props.config, props.viewId);
74
+ _Observable.default.addSubscriptions(parsedConfig.eventHandlingConfig, props.handle, props.viewId);
75
+ _Observable.default.addSystemSubscriptions(props.viewId, parsedConfig);
76
+ if (!SITE_KEY) {
77
+ console.error('Turnstile: REACT_APP_TURNSTILE_SITE_KEY env var is not set — the widget will not render');
78
+ return;
79
+ }
80
+ let cancelled = false;
81
+ loadTurnstileScript().then(() => {
82
+ if (cancelled || !containerRef.current || !window.turnstile) {
83
+ return;
84
+ }
85
+ widgetIdRef.current = window.turnstile.render(containerRef.current, {
86
+ sitekey: SITE_KEY,
87
+ callback: newToken => {
88
+ setToken(newToken);
89
+ const event = new _Event.default(props.handle, props.viewId, newToken);
90
+ _Observable.default.fireEvent(_EventType.default.VALUE_CHANGE, event);
91
+ },
92
+ 'error-callback': () => {
93
+ setToken(null);
94
+ },
95
+ 'expired-callback': () => {
96
+ setToken(null);
97
+ }
98
+ });
99
+ }).catch(e => console.error('Turnstile: failed to load vendor script', e));
100
+
101
+ // Fire COMPONENT_LOAD so any view-level eventHandlingConfig keyed
102
+ // on the turnstile component's load can hook in (mirrors the
103
+ // pattern used by HtmlPanel / other CDUI components).
104
+ const loadEvent = new _Event.default(props.handle, props.viewId, null);
105
+ _Observable.default.fireEvent(_EventType.default.COMPONENT_LOAD, loadEvent);
106
+ return () => {
107
+ cancelled = true;
108
+ if (widgetIdRef.current && window.turnstile) {
109
+ try {
110
+ window.turnstile.remove(widgetIdRef.current);
111
+ } catch (e) {
112
+ // turnstile.remove throws if the widget id is unknown
113
+ // (e.g. script unloaded mid-cleanup) — safe to ignore.
114
+ }
115
+ widgetIdRef.current = null;
116
+ }
117
+ _Observable.default.clearComponentEventListeners(props.handle);
118
+ };
119
+ }, []);
120
+ const api = () => ({
121
+ get id() {
122
+ return props.config.id;
123
+ },
124
+ // The challenge token the backend siteverifies against. Null
125
+ // before the widget resolves; CDUI service-call wiring should
126
+ // guard with `nullable: false` so submit can't fire pre-solve.
127
+ get value() {
128
+ return token;
129
+ },
130
+ getChildren: () => [],
131
+ // Allows callers to manually reset the widget after a backend
132
+ // rejection — e.g. a 403 from siteverify. Token is consumed per
133
+ // call; resetting re-issues a fresh one.
134
+ reset: () => {
135
+ if (widgetIdRef.current && window.turnstile) {
136
+ window.turnstile.reset(widgetIdRef.current);
137
+ setToken(null);
138
+ }
139
+ },
140
+ refresh: () => {}
141
+ });
142
+ return /*#__PURE__*/_react.default.createElement("div", {
143
+ style: _Utils.default.mergeStyles({
144
+ margin: '8px 0'
145
+ }, props.config)
146
+ }, /*#__PURE__*/_react.default.createElement("div", {
147
+ ref: containerRef
148
+ }));
149
+ });
150
+ var _default = exports.default = Turnstile;
151
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9VdGlscyIsIl9PYnNlcnZhYmxlIiwiX0V2ZW50IiwiX0V2ZW50VHlwZSIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIlRVUk5TVElMRV9TQ1JJUFRfVVJMIiwiU0lURV9LRVkiLCJwcm9jZXNzIiwiZW52IiwiUkVBQ1RfQVBQX1RVUk5TVElMRV9TSVRFX0tFWSIsInNjcmlwdExvYWRQcm9taXNlIiwibG9hZFR1cm5zdGlsZVNjcmlwdCIsIndpbmRvdyIsInR1cm5zdGlsZSIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0Iiwic2NyaXB0IiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50Iiwic3JjIiwiYXN5bmMiLCJkZWZlciIsIm9ubG9hZCIsIm9uZXJyb3IiLCJoZWFkIiwiYXBwZW5kQ2hpbGQiLCJUdXJuc3RpbGUiLCJSZWFjdCIsIm1lbW8iLCJwcm9wcyIsImNvbnRhaW5lclJlZiIsInVzZVJlZiIsIndpZGdldElkUmVmIiwidG9rZW4iLCJzZXRUb2tlbiIsInVzZVN0YXRlIiwidXNlRWZmZWN0IiwiaGFuZGxlIiwiYXBpIiwicGFyc2VkQ29uZmlnIiwiVXRpbHMiLCJwYXJzZUNvbmZpZyIsImNvbmZpZyIsInZpZXdJZCIsImV2ZW50TWFuYWdlciIsImFkZFN1YnNjcmlwdGlvbnMiLCJldmVudEhhbmRsaW5nQ29uZmlnIiwiYWRkU3lzdGVtU3Vic2NyaXB0aW9ucyIsImNvbnNvbGUiLCJlcnJvciIsImNhbmNlbGxlZCIsInRoZW4iLCJjdXJyZW50IiwicmVuZGVyIiwic2l0ZWtleSIsImNhbGxiYWNrIiwibmV3VG9rZW4iLCJldmVudCIsIkV2ZW50IiwiZmlyZUV2ZW50IiwiRXZlbnRUeXBlIiwiVkFMVUVfQ0hBTkdFIiwiZXJyb3ItY2FsbGJhY2siLCJleHBpcmVkLWNhbGxiYWNrIiwiY2F0Y2giLCJsb2FkRXZlbnQiLCJDT01QT05FTlRfTE9BRCIsInJlbW92ZSIsImNsZWFyQ29tcG9uZW50RXZlbnRMaXN0ZW5lcnMiLCJpZCIsInZhbHVlIiwiZ2V0Q2hpbGRyZW4iLCJyZXNldCIsInJlZnJlc2giLCJzdHlsZSIsIm1lcmdlU3R5bGVzIiwibWFyZ2luIiwicmVmIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL1R1cm5zdGlsZS5qc3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBVdGlscyBmcm9tICcuLi9VdGlscyc7XG5pbXBvcnQgZXZlbnRNYW5hZ2VyIGZyb20gJy4uL2V2ZW50L09ic2VydmFibGUnO1xuaW1wb3J0IEV2ZW50IGZyb20gJy4uL2V2ZW50L0V2ZW50JztcbmltcG9ydCBFdmVudFR5cGUgZnJvbSAnLi4vZXZlbnQvRXZlbnRUeXBlJztcblxuLyoqXG4gKiBDRFVJLXdyYXBwZWQgQ2xvdWRmbGFyZSBUdXJuc3RpbGUgd2lkZ2V0LiBEcm9wcyB0aGUgd2lkZ2V0IGludG8gYVxuICogbGF5b3V0IHRoZSBzYW1lIHdheSBhbnkgb3RoZXIgQ0RVSSBjb21wb25lbnQgZG9lcyBhbmQgZXhwb3NlcyB0aGVcbiAqIHJlc29sdmVkIGNoYWxsZW5nZSB0b2tlbiB0aHJvdWdoIHtAY29kZSBoYW5kbGUuYXBpLnZhbHVlfSwgc28gdmlld1xuICogYXV0aG9ycyBjYW4gcmVmZXJlbmNlIGl0IGZyb20gb3RoZXIgY29tcG9uZW50cyAvIHNlcnZpY2UgY2FsbHMgdmlhXG4gKiB7QGNvZGUgQCN7dHVybnN0aWxlfS52YWx1ZX0gd2hlbiB3aXJpbmcgdXAgYW4gaHR0cFBhcmFtZXRlclR5cGUuXG4gKlxuICogPHA+TG9hZHMgQ2xvdWRmbGFyZSdzIHZlbmRvciBzY3JpcHQgbGF6aWx5IG9uIGZpcnN0IG1vdW50LiBUaGUgc2NyaXB0XG4gKiBkZWZpbmVzIHtAY29kZSB3aW5kb3cudHVybnN0aWxlfSB3aGljaCBleHBvc2VzIHtAY29kZSByZW5kZXIoKX0g4oCUXG4gKiB3ZSByZW5kZXIgZXhwbGljaXRseSAobm90IGF1dG8tcmVuZGVyIHZpYSBjbGFzcz1cImNmLXR1cm5zdGlsZVwiKSBzb1xuICogdGhlIFJlYWN0IGxpZmVjeWNsZSBjYW4gaXNzdWUgYSB7QGNvZGUgcmVzZXR9IHdoZW4gdGhlIHBhcmVudCB2aWV3XG4gKiByZS1tb3VudHMuXG4gKlxuICogPHA+U2l0ZSBrZXkgaXMgc291cmNlZCBmcm9tIHtAY29kZSBSRUFDVF9BUFBfVFVSTlNUSUxFX1NJVEVfS0VZfSBhdFxuICogYnVpbGQgdGltZSAobWF0Y2hlcyB0aGUgcHJvamVjdCdzIGV4aXN0aW5nIFJFQUNUX0FQUF8qIGNvbnZlbnRpb24pLFxuICogTk9UIGZyb20gQ0RVSSBKU09OIOKAlCB2aWV3IGF1dGhvcnMgc2hvdWxkbid0IGhhdmUgdG8ga25vdyB0aGUga2V5LlxuICogRm9yIGRldiwgaG9zdG5hbWUge0Bjb2RlIGxvY2FsaG9zdH0gaXMgZXhwbGljaXRseSBzdXBwb3J0ZWQgYnlcbiAqIENsb3VkZmxhcmUgc28gdGhlIHNhbWUgZW52IHZhciBjYW4gYmUgdXNlZCB1bmNoYW5nZWQuXG4gKi9cbmNvbnN0IFRVUk5TVElMRV9TQ1JJUFRfVVJMID0gJ2h0dHBzOi8vY2hhbGxlbmdlcy5jbG91ZGZsYXJlLmNvbS90dXJuc3RpbGUvdjAvYXBpLmpzP3JlbmRlcj1leHBsaWNpdCc7XG5cbi8vIENsb3VkZmxhcmUgVHVybnN0aWxlJ3MgXCJzaXRlIGtleVwiIGlzIGludGVudGlvbmFsbHkgcHVibGljIChpdCdzIHRoZVxuLy8gcHVibGlzaGFibGUgaWRlbnRpZmllciwgYW5hbG9nb3VzIHRvIFN0cmlwZSdzIHB1Ymxpc2hhYmxlIGtleSkgYW5kXG4vLyBpcyBob3N0bmFtZS1ib3VuZCBvbiB0aGUgQ2xvdWRmbGFyZSBzaWRlLCBzbyBsZWFraW5nIGl0IGNhbid0IGJlXG4vLyB1c2VkIGFnYWluc3Qgb3RoZXIgZG9tYWlucy4gRXZlbiBzbywgc291cmNpbmcgaXQgZnJvbSBhbiBlbnYgdmFyXG4vLyBrZWVwcyBkZXYvc3RhZ2luZy9wcm9kIHN3YXBwYWJsZSB3aXRob3V0IGEgY29kZSBjaGFuZ2Ug4oCUIHNhbWUgc2hhcGVcbi8vIHRoZSBjb2RlYmFzZSBhbHJlYWR5IHVzZXMgZm9yIFJFQUNUX0FQUF9ET0NTX0FQSV9IT1NUIGV0Yy4gU2V0XG4vLyBSRUFDVF9BUFBfVFVSTlNUSUxFX1NJVEVfS0VZIHBlciBlbnZpcm9ubWVudC5cbmNvbnN0IFNJVEVfS0VZID0gcHJvY2Vzcy5lbnYuUkVBQ1RfQVBQX1RVUk5TVElMRV9TSVRFX0tFWTtcblxubGV0IHNjcmlwdExvYWRQcm9taXNlID0gbnVsbDtcbmNvbnN0IGxvYWRUdXJuc3RpbGVTY3JpcHQgPSAoKSA9PiB7XG4gICAgaWYgKHNjcmlwdExvYWRQcm9taXNlKSB7XG4gICAgICAgIHJldHVybiBzY3JpcHRMb2FkUHJvbWlzZTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy50dXJuc3RpbGUpIHtcbiAgICAgICAgc2NyaXB0TG9hZFByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgcmV0dXJuIHNjcmlwdExvYWRQcm9taXNlO1xuICAgIH1cbiAgICBzY3JpcHRMb2FkUHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgY29uc3Qgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XG4gICAgICAgIHNjcmlwdC5zcmMgPSBUVVJOU1RJTEVfU0NSSVBUX1VSTDtcbiAgICAgICAgc2NyaXB0LmFzeW5jID0gdHJ1ZTtcbiAgICAgICAgc2NyaXB0LmRlZmVyID0gdHJ1ZTtcbiAgICAgICAgc2NyaXB0Lm9ubG9hZCA9ICgpID0+IHJlc29sdmUoKTtcbiAgICAgICAgc2NyaXB0Lm9uZXJyb3IgPSAoZSkgPT4ge1xuICAgICAgICAgICAgc2NyaXB0TG9hZFByb21pc2UgPSBudWxsOyAvLyBhbGxvdyByZXRyeSBuZXh0IG1vdW50XG4gICAgICAgICAgICByZWplY3QoZSk7XG4gICAgICAgIH07XG4gICAgICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc2NyaXB0KTtcbiAgICB9KTtcbiAgICByZXR1cm4gc2NyaXB0TG9hZFByb21pc2U7XG59O1xuXG5jb25zdCBUdXJuc3RpbGUgPSBSZWFjdC5tZW1vKChwcm9wcykgPT4ge1xuICAgIGNvbnN0IGNvbnRhaW5lclJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgICBjb25zdCB3aWRnZXRJZFJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgICBjb25zdCBbdG9rZW4sIHNldFRva2VuXSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgcHJvcHMuaGFuZGxlLmFwaSA9IGFwaSgpO1xuICAgIH0pO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgY29uc3QgcGFyc2VkQ29uZmlnID0gVXRpbHMucGFyc2VDb25maWcocHJvcHMuY29uZmlnLCBwcm9wcy52aWV3SWQpO1xuICAgICAgICBldmVudE1hbmFnZXIuYWRkU3Vic2NyaXB0aW9ucyhwYXJzZWRDb25maWcuZXZlbnRIYW5kbGluZ0NvbmZpZywgcHJvcHMuaGFuZGxlLCBwcm9wcy52aWV3SWQpO1xuICAgICAgICBldmVudE1hbmFnZXIuYWRkU3lzdGVtU3Vic2NyaXB0aW9ucyhwcm9wcy52aWV3SWQsIHBhcnNlZENvbmZpZyk7XG5cbiAgICAgICAgaWYgKCFTSVRFX0tFWSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignVHVybnN0aWxlOiBSRUFDVF9BUFBfVFVSTlNUSUxFX1NJVEVfS0VZIGVudiB2YXIgaXMgbm90IHNldCDigJQgdGhlIHdpZGdldCB3aWxsIG5vdCByZW5kZXInKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBjYW5jZWxsZWQgPSBmYWxzZTtcbiAgICAgICAgbG9hZFR1cm5zdGlsZVNjcmlwdCgpXG4gICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGNhbmNlbGxlZCB8fCAhY29udGFpbmVyUmVmLmN1cnJlbnQgfHwgIXdpbmRvdy50dXJuc3RpbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB3aWRnZXRJZFJlZi5jdXJyZW50ID0gd2luZG93LnR1cm5zdGlsZS5yZW5kZXIoY29udGFpbmVyUmVmLmN1cnJlbnQsIHtcbiAgICAgICAgICAgICAgICAgICAgc2l0ZWtleTogU0lURV9LRVksXG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrOiAobmV3VG9rZW4pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFRva2VuKG5ld1Rva2VuKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGV2ZW50ID0gbmV3IEV2ZW50KHByb3BzLmhhbmRsZSwgcHJvcHMudmlld0lkLCBuZXdUb2tlbik7XG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudE1hbmFnZXIuZmlyZUV2ZW50KEV2ZW50VHlwZS5WQUxVRV9DSEFOR0UsIGV2ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgJ2Vycm9yLWNhbGxiYWNrJzogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0VG9rZW4obnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICdleHBpcmVkLWNhbGxiYWNrJzogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0VG9rZW4obnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmNhdGNoKChlKSA9PiBjb25zb2xlLmVycm9yKCdUdXJuc3RpbGU6IGZhaWxlZCB0byBsb2FkIHZlbmRvciBzY3JpcHQnLCBlKSk7XG5cbiAgICAgICAgLy8gRmlyZSBDT01QT05FTlRfTE9BRCBzbyBhbnkgdmlldy1sZXZlbCBldmVudEhhbmRsaW5nQ29uZmlnIGtleWVkXG4gICAgICAgIC8vIG9uIHRoZSB0dXJuc3RpbGUgY29tcG9uZW50J3MgbG9hZCBjYW4gaG9vayBpbiAobWlycm9ycyB0aGVcbiAgICAgICAgLy8gcGF0dGVybiB1c2VkIGJ5IEh0bWxQYW5lbCAvIG90aGVyIENEVUkgY29tcG9uZW50cykuXG4gICAgICAgIGNvbnN0IGxvYWRFdmVudCA9IG5ldyBFdmVudChwcm9wcy5oYW5kbGUsIHByb3BzLnZpZXdJZCwgbnVsbCk7XG4gICAgICAgIGV2ZW50TWFuYWdlci5maXJlRXZlbnQoRXZlbnRUeXBlLkNPTVBPTkVOVF9MT0FELCBsb2FkRXZlbnQpO1xuXG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICBjYW5jZWxsZWQgPSB0cnVlO1xuICAgICAgICAgICAgaWYgKHdpZGdldElkUmVmLmN1cnJlbnQgJiYgd2luZG93LnR1cm5zdGlsZSkge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy50dXJuc3RpbGUucmVtb3ZlKHdpZGdldElkUmVmLmN1cnJlbnQpO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gdHVybnN0aWxlLnJlbW92ZSB0aHJvd3MgaWYgdGhlIHdpZGdldCBpZCBpcyB1bmtub3duXG4gICAgICAgICAgICAgICAgICAgIC8vIChlLmcuIHNjcmlwdCB1bmxvYWRlZCBtaWQtY2xlYW51cCkg4oCUIHNhZmUgdG8gaWdub3JlLlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB3aWRnZXRJZFJlZi5jdXJyZW50ID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGV2ZW50TWFuYWdlci5jbGVhckNvbXBvbmVudEV2ZW50TGlzdGVuZXJzKHByb3BzLmhhbmRsZSk7XG4gICAgICAgIH07XG4gICAgfSwgW10pO1xuXG4gICAgY29uc3QgYXBpID0gKCkgPT4gKHtcbiAgICAgICAgZ2V0IGlkKCkge1xuICAgICAgICAgICAgcmV0dXJuIHByb3BzLmNvbmZpZy5pZDtcbiAgICAgICAgfSxcbiAgICAgICAgLy8gVGhlIGNoYWxsZW5nZSB0b2tlbiB0aGUgYmFja2VuZCBzaXRldmVyaWZpZXMgYWdhaW5zdC4gTnVsbFxuICAgICAgICAvLyBiZWZvcmUgdGhlIHdpZGdldCByZXNvbHZlczsgQ0RVSSBzZXJ2aWNlLWNhbGwgd2lyaW5nIHNob3VsZFxuICAgICAgICAvLyBndWFyZCB3aXRoIGBudWxsYWJsZTogZmFsc2VgIHNvIHN1Ym1pdCBjYW4ndCBmaXJlIHByZS1zb2x2ZS5cbiAgICAgICAgZ2V0IHZhbHVlKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRva2VuO1xuICAgICAgICB9LFxuICAgICAgICBnZXRDaGlsZHJlbjogKCkgPT4gW10sXG4gICAgICAgIC8vIEFsbG93cyBjYWxsZXJzIHRvIG1hbnVhbGx5IHJlc2V0IHRoZSB3aWRnZXQgYWZ0ZXIgYSBiYWNrZW5kXG4gICAgICAgIC8vIHJlamVjdGlvbiDigJQgZS5nLiBhIDQwMyBmcm9tIHNpdGV2ZXJpZnkuIFRva2VuIGlzIGNvbnN1bWVkIHBlclxuICAgICAgICAvLyBjYWxsOyByZXNldHRpbmcgcmUtaXNzdWVzIGEgZnJlc2ggb25lLlxuICAgICAgICByZXNldDogKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHdpZGdldElkUmVmLmN1cnJlbnQgJiYgd2luZG93LnR1cm5zdGlsZSkge1xuICAgICAgICAgICAgICAgIHdpbmRvdy50dXJuc3RpbGUucmVzZXQod2lkZ2V0SWRSZWYuY3VycmVudCk7XG4gICAgICAgICAgICAgICAgc2V0VG9rZW4obnVsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHJlZnJlc2g6ICgpID0+IHt9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPGRpdiBzdHlsZT17VXRpbHMubWVyZ2VTdHlsZXMoe21hcmdpbjogJzhweCAwJ30sIHByb3BzLmNvbmZpZyl9PlxuICAgICAgICAgICAgPGRpdiByZWY9e2NvbnRhaW5lclJlZn0vPlxuICAgICAgICA8L2Rpdj5cbiAgICApO1xufSk7XG5cbmV4cG9ydCBkZWZhdWx0IFR1cm5zdGlsZTsiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE1BQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLFdBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLE1BQUEsR0FBQUosc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFJLFVBQUEsR0FBQUwsc0JBQUEsQ0FBQUMsT0FBQTtBQUEyQyxTQUFBRCx1QkFBQU0sQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQUUzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU1HLG9CQUFvQixHQUFHLHVFQUF1RTs7QUFFcEc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNQyxRQUFRLEdBQUdDLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDQyw0QkFBNEI7QUFFekQsSUFBSUMsaUJBQWlCLEdBQUcsSUFBSTtBQUM1QixNQUFNQyxtQkFBbUIsR0FBR0EsQ0FBQSxLQUFNO0VBQzlCLElBQUlELGlCQUFpQixFQUFFO0lBQ25CLE9BQU9BLGlCQUFpQjtFQUM1QjtFQUNBLElBQUksT0FBT0UsTUFBTSxLQUFLLFdBQVcsSUFBSUEsTUFBTSxDQUFDQyxTQUFTLEVBQUU7SUFDbkRI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