@kando-env/kando-ui 1.2.29 → 1.2.31

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.
Files changed (29) hide show
  1. package/lib/Router.js +30 -30
  2. package/lib/Widgets/EventsRow/EventsRow.js +9 -9
  3. package/lib/i18n/en.json +22 -8
  4. package/lib/i18n/he.json +12 -6
  5. package/lib/macros/getVersion.js +1 -1
  6. package/lib/pages/EventsPage/events/EventsStyle.scss +0 -281
  7. package/lib/pages/EventsPage/events/events_list/EventsList.js +3 -2
  8. package/lib/pages/EventsPage/events/events_list/Filter/Filter.js +5 -3
  9. package/lib/pages/EventsPage/events/events_list/Filter/FilterContainer.js +29 -16
  10. package/lib/pages/EventsPage/events/events_list/Filter/FilterItem.js +13 -1
  11. package/lib/pages/EventsPage/events/events_list/Filter/FilterStyle.scss +289 -0
  12. package/lib/pages/SamplingsPage/FilterStyle.scss +29 -0
  13. package/lib/pages/SamplingsPage/NewSamplingAction.js +2 -2
  14. package/lib/pages/SamplingsPage/SamplingActionDropdown.js +28 -19
  15. package/lib/pages/SamplingsPage/SamplingProperties/SamplingMobileProperties.js +32 -17
  16. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesForm.js +96 -38
  17. package/lib/pages/SamplingsPage/SamplingProperties/bootstrap.overrides.scss +7 -0
  18. package/lib/pages/SamplingsPage/SamplingProperties/samplingPropertiesUtils.js +16 -7
  19. package/lib/pages/SamplingsPage/SamplingsMobileList.js +12 -5
  20. package/lib/pages/SamplingsPage/SamplingsPage.js +18 -14
  21. package/lib/pages/SamplingsPage/SamplingsPageContainer.js +23 -5
  22. package/lib/pages/SamplingsPage/samplingsPageUtils.js +5 -5
  23. package/lib/pages/SamplingsPage/style.module.scss +17 -8
  24. package/lib/ui-kit/ImageUploadButton/ImageUploadButton.js +2 -2
  25. package/lib/ui-kit/KandoTable/KandoTable.js +2 -2
  26. package/lib/ui-kit/MobileInput/MobileInput.js +1 -1
  27. package/lib/utilities/kql.js +2 -2
  28. package/lib/utilities/urls.js +3 -3
  29. package/package.json +1 -1
@@ -33,7 +33,7 @@ var _i18n = _interopRequireDefault(require("utilities/i18n"));
33
33
 
34
34
  var _kql = require("utilities/kql");
35
35
 
36
- require("../../EventsStyle.scss");
36
+ require("./FilterStyle.scss");
37
37
 
38
38
  var _Filter = _interopRequireDefault(require("./Filter"));
39
39
 
@@ -58,7 +58,10 @@ var FilterContainer = function FilterContainer(props) {
58
58
  var global_data = props.global_data,
59
59
  nav_context_data = props.nav_context_data,
60
60
  points_data = props.points_data,
61
- filterPopupOpen = props.filterPopupOpen;
61
+ filterPopupOpen = props.filterPopupOpen,
62
+ applyLogic = props.applyLogic,
63
+ _props$fetchType = props.fetchType,
64
+ fetchType = _props$fetchType === void 0 ? 'EventFilters' : _props$fetchType;
62
65
  var dispatch = (0, _reactRedux.useDispatch)();
63
66
  var nameInput = (0, _react.useRef)(null);
64
67
  var filterContent = (0, _react.useRef)(null);
@@ -165,7 +168,7 @@ var FilterContainer = function FilterContainer(props) {
165
168
  };
166
169
 
167
170
  var getData = function getData() {
168
- fetch("/event_filters.json?water_authority_id=".concat(global_data.waterAuthorityId, "&valuesFromKQL=").concat(getKQLFromURL())).then(function (response) {
171
+ fetch("/ui_filters.json?water_authority_id=".concat(global_data.waterAuthorityId, "&filter_type=").concat(fetchType, "&valuesFromKQL=").concat(getKQLFromURL())).then(function (response) {
169
172
  return response.json();
170
173
  }).then(function (json) {
171
174
  getPointsToFilters(json.available_filter_items, json.filters);
@@ -197,7 +200,8 @@ var FilterContainer = function FilterContainer(props) {
197
200
  return f.id === filter.id;
198
201
  }));
199
202
  var preparedParams = {
200
- event_filter: {
203
+ filter_type: fetchType,
204
+ ui_filter: {
201
205
  name: filter.name,
202
206
  is_active: filter.is_active,
203
207
  filter_items: JSON.stringify(filter.filter_items)
@@ -209,9 +213,9 @@ var FilterContainer = function FilterContainer(props) {
209
213
  setActiveFilterCopy(filter);
210
214
 
211
215
  if (Math.sign(filter.id) > 0) {
212
- fetchEventFilters(preparedParams, 'PUT', "/event_filters/".concat(filter.id, "?water_authority_id=").concat(global_data.waterAuthorityId), filter);
216
+ fetchEventFilters(preparedParams, 'PUT', "/ui_filters/".concat(filter.id, "?water_authority_id=").concat(global_data.waterAuthorityId), filter);
213
217
  } else {
214
- fetchEventFilters(preparedParams, 'POST', "/event_filters?water_authority_id=".concat(global_data.waterAuthorityId), filter);
218
+ fetchEventFilters(preparedParams, 'POST', "/ui_filters?water_authority_id=".concat(global_data.waterAuthorityId), filter);
215
219
  }
216
220
  };
217
221
 
@@ -230,7 +234,7 @@ var FilterContainer = function FilterContainer(props) {
230
234
 
231
235
  var deleteFilter = function deleteFilter(filter) {
232
236
  if (csrf !== null && filter.id !== -1) {
233
- fetch("/event_filters/".concat(filter.id, "?water_authority_id=").concat(global_data.waterAuthorityId), {
237
+ fetch("/ui_filters/".concat(filter.id, "?water_authority_id=").concat(global_data.waterAuthorityId, "&filter_type=").concat(fetchType), {
234
238
  method: 'DELETE',
235
239
  headers: {
236
240
  'X-CSRF-Token': csrf
@@ -269,20 +273,24 @@ var FilterContainer = function FilterContainer(props) {
269
273
  };
270
274
 
271
275
  var activateFilter = function activateFilter(filter) {
272
- fetchEventFilters({}, 'PUT', "/event_filters/activate/".concat(filter.id, "?water_authority_id=").concat(global_data.waterAuthorityId), filter);
276
+ fetchEventFilters({}, 'PUT', "/ui_filters/activate/".concat(filter.id, "?water_authority_id=").concat(global_data.waterAuthorityId, "&filter_type=").concat(fetchType), filter);
273
277
  };
274
278
 
275
279
  var applyFilter = function applyFilter() {
276
280
  var filter = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : activeFilterCopy;
277
281
  var value = 'severity';
278
282
 
279
- if (getKQLValuesFromURL() !== null) {
280
- if (getKQLValuesFromURL().includes('ORDER_BY') && getKQLValuesFromURL().includes('newest')) {
281
- value = 'newest';
282
- } else if (getKQLValuesFromURL().includes('ORDER_BY') && getKQLValuesFromURL().includes('oldest')) {
283
- value = 'oldest';
284
- } else if (getKQLValuesFromURL().includes('ORDER_BY') && getKQLValuesFromURL().includes('severity')) {
285
- value = 'severity';
283
+ if (nav_context_data.navContext.name === 'samplings-list') {
284
+ value = 'newest';
285
+ } else {
286
+ if (getKQLValuesFromURL() !== null) {
287
+ if (getKQLValuesFromURL().includes('ORDER_BY') && getKQLValuesFromURL().includes('newest')) {
288
+ value = 'newest';
289
+ } else if (getKQLValuesFromURL().includes('ORDER_BY') && getKQLValuesFromURL().includes('oldest')) {
290
+ value = 'oldest';
291
+ } else if (getKQLValuesFromURL().includes('ORDER_BY') && getKQLValuesFromURL().includes('severity')) {
292
+ value = 'severity';
293
+ }
286
294
  }
287
295
  }
288
296
 
@@ -290,6 +298,11 @@ var FilterContainer = function FilterContainer(props) {
290
298
  history.push("/".concat(nav_context_data.navContext.name, "/index?water_authority_id=").concat(global_data.waterAuthorityId, "&locale=").concat(nav_context_data.navContext.locale, "&eventId=").concat(getEventIdFromURL(), "&valuesFromKQL=").concat((0, _kql.buildKQLQuery)(filter, value)));
291
299
  }
292
300
 
301
+ if (nav_context_data.navContext.name === 'samplings-list') {
302
+ history.push("/".concat(nav_context_data.navContext.name, "/index?water_authority_id=").concat(global_data.waterAuthorityId, "&locale=").concat(nav_context_data.navContext.locale, "&valuesFromKQL=").concat((0, _kql.buildKQLQuery)(filter, value)));
303
+ if (applyLogic !== undefined) applyLogic((0, _kql.buildKQLQuery)(filter, value));
304
+ }
305
+
293
306
  dispatch((0, _actions.setEventFilterParam)((0, _kql.buildKQLQuery)(filter, value)));
294
307
  dispatch((0, _actions.setActiveFilterGlobally)(filter));
295
308
  };
@@ -389,4 +402,4 @@ var connector = (0, _reactRedux.connect)(mapStateToProps);
389
402
  var _default = connector(FilterContainer);
390
403
 
391
404
  exports.default = _default;
392
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9wYWdlcy9FdmVudHNQYWdlL2V2ZW50cy9ldmVudHNfbGlzdC9GaWx0ZXIvRmlsdGVyQ29udGFpbmVyLnRzeCJdLCJuYW1lcyI6WyJtYXBTdGF0ZVRvUHJvcHMiLCJzdGF0ZSIsImdsb2JhbF9kYXRhIiwibmF2X2NvbnRleHRfZGF0YSIsInBvaW50c19kYXRhIiwiRmlsdGVyQ29udGFpbmVyIiwicHJvcHMiLCJmaWx0ZXJQb3B1cE9wZW4iLCJkaXNwYXRjaCIsIm5hbWVJbnB1dCIsImZpbHRlckNvbnRlbnQiLCJmaWx0ZXJzIiwic2V0RmlsdGVycyIsImF2YWlsYWJsZUZpbHRlckl0ZW1zIiwic2V0QXZhaWxhYmxlRmlsdGVySXRlbXMiLCJyZW5kZXJlZCIsInNldFJlbmRlcmVkIiwidW5kZWZpbmVkIiwiYWN0aXZlRmlsdGVyIiwic2V0QWN0aXZlRmlsdGVyIiwiYWN0aXZlRmlsdGVyQ29weSIsInNldEFjdGl2ZUZpbHRlckNvcHkiLCJjc3JmIiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwiZ2V0QXR0cmlidXRlIiwidXNlUXVlcnkiLCJVUkxTZWFyY2hQYXJhbXMiLCJzZWFyY2giLCJoaXN0b3J5IiwicXVlcnkiLCJnZXRLUUxGcm9tVVJMIiwiZ2V0IiwiZ2V0UG9pbnRzVG9GaWx0ZXJzIiwiaW50ZXJlc3RQb2ludEZpbHRlckl0ZW0iLCJmaW5kIiwiZiIsInR5cGUiLCJmaWx0ZXJlZFBvaW50c0RhdGEiLCJpdGVtcyIsImZpbHRlciIsInBvaW50IiwicGFydF9vZl9vYnNlcnZhdGlvbiIsIm1hcCIsImlkIiwibmFtZSIsImdyb3VwIiwib3B0aW9ucyIsImZvckVhY2giLCJmaWx0ZXJJdGVtIiwiZmlsdGVyX2l0ZW1zIiwiZmkiLCJhdmFpbGFibGVfb3B0aW9ucyIsImZldGNoRXZlbnRGaWx0ZXJzIiwicHJlcGFyZWRQYXJhbXMiLCJtZXRob2QiLCJ1cmwiLCJmZXRjaCIsImhlYWRlcnMiLCJBY2NlcHQiLCJib2R5IiwiSlNPTiIsInN0cmluZ2lmeSIsInRoZW4iLCJyZXNwb25zZSIsImpzb24iLCJkYXRhIiwiYXZhaWxhYmxlX2ZpbHRlcl9pdGVtcyIsInNhdmVkIiwiZGVlcENsb25lIiwicGFyc2UiLCJnZXREYXRhIiwid2F0ZXJBdXRob3JpdHlJZCIsImpzb25TaGFsbG93Q29weSIsIk9iamVjdCIsImFzc2lnbiIsImFjdGl2ZSIsImRpc3BsYXllZF9maWx0ZXIiLCJhY3RpdmF0ZUZpbHRlciIsImFwcGx5RmlsdGVyIiwiaGFuZGxlRmlsdGVyQ2hhbmdlIiwiY3VycmVudCIsImNsaWNrIiwic2F2ZUFjdGl2ZUZpbHRlciIsImNsb25lZEZpbHRlcnMiLCJmaWx0ZXJUb01vZGlmeUluZGV4IiwiaW5kZXhPZiIsImV2ZW50X2ZpbHRlciIsImlzX2FjdGl2ZSIsIk1hdGgiLCJzaWduIiwiY3JlYXRlRmlsdGVyIiwibmV3RmlsdGVyIiwiZGVsZXRlRmlsdGVyIiwibGVuZ3RoIiwiZ2V0RXZlbnRJZEZyb21VUkwiLCJnZXRLUUxWYWx1ZXNGcm9tVVJMIiwidmFsdWUiLCJpbmNsdWRlcyIsIm5hdkNvbnRleHQiLCJwdXNoIiwibG9jYWxlIiwiaGFuZGxlQ3JlYXRpb25DbGljayIsImV2ZW50RmlsdGVyUGFyYW0iLCJpMThuIiwidCIsInBhcnNlU2VsZWN0ZWRJdGVtcyIsImNvbm5lY3RvciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7OztBQU1BOztBQUtBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7QUFDQSxTQUFTQSxlQUFULENBQXlCQyxLQUF6QixFQUEyQztBQUN6QyxNQUFRQyxXQUFSLEdBQXVERCxLQUF2RCxDQUFRQyxXQUFSO0FBQUEsTUFBcUJDLGdCQUFyQixHQUF1REYsS0FBdkQsQ0FBcUJFLGdCQUFyQjtBQUFBLE1BQXVDQyxXQUF2QyxHQUF1REgsS0FBdkQsQ0FBdUNHLFdBQXZDO0FBRUEsU0FBTztBQUNMRixJQUFBQSxXQUFX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QSxXQUFXLEVBQUVELGNBQUtDLENBQUwsQ0FDWCwrQ0FEVyxDQURmO0FBSUUsa0JBQVcsa0JBSmI7QUFLRSx3QkFBaUIsY0FMbkI7QUFNRSxJQUFBLEdBQUcsRUFBRWhHLFNBTlA7QUFPRSxJQUFBLFNBQVMsRUFBRTtBQVBiLElBREYsZUFVRSx3Q0FWRixlQVdFLDZCQUFDLHNCQUFEO0FBQ0UsSUFBQSxPQUFPLEVBQUUsbUJBQU07QUFDYjZGLE1BQUFBLG1CQUFtQjtBQUNwQixLQUhIO0FBSUUsSUFBQSxPQUFPLEVBQUM7QUFKVixLQU1HRSxjQUFLQyxDQUFMLENBQU8seUJBQVAsQ0FOSCxDQVhGLENBREYsQ0FMRixDQVRGLENBWEYsQ0ExQkYsQ0FMRixDQURGLGVBcUZFO0FBQUssSUFBQSxTQUFTLEVBQUU7QUFBaEIsa0JBQ0UsNkJBQUMsZUFBRDtBQUNFLElBQUEsbUJBQW1CLEVBQUVwRixtQkFEdkI7QUFFRSxJQUFBLGdCQUFnQixFQUFFRCxnQkFGcEI7QUFHRSxJQUFBLG9CQUFvQixFQUFFUCxvQkFIeEI7QUFJRSxJQUFBLGtCQUFrQixFQUFFNkYsdUJBSnRCO0FBS0UsSUFBQSxXQUFXLEVBQUUzQjtBQUxmLElBREYsQ0FyRkYsQ0FOSixDQURGO0FBeUdELENBeFlEOztBQTBZQSxJQUFNNEIsU0FBUyxHQUFHLHlCQUFRM0csZUFBUixDQUFsQjs7ZUFDZTJHLFNBQVMsQ0FBQ3RHLGVBQUQsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBCdXR0b24sIEZvcm1Db250cm9sIH0gZnJvbSAncmVhY3QtYm9vdHN0cmFwJztcbmltcG9ydCBEcm9wZG93biBmcm9tICdyZWFjdC1ib290c3RyYXAvRHJvcGRvd24nO1xuaW1wb3J0IHsgY29ubmVjdCwgQ29ubmVjdGVkUHJvcHMsIHVzZURpc3BhdGNoIH0gZnJvbSAncmVhY3QtcmVkdXgnO1xuaW1wb3J0IHsgdXNlSGlzdG9yeSwgdXNlTG9jYXRpb24gfSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJztcbmltcG9ydCB7IFJlYWN0Q29tcG9uZW50IGFzIFNhdmVJY29uIH0gZnJvbSAnc3JjL2Fzc2V0cy9pY29ucy9kaXNrZXR0ZS5zdmcnO1xuaW1wb3J0IHsgUmVhY3RDb21wb25lbnQgYXMgTGlzdEljb24gfSBmcm9tICdzcmMvYXNzZXRzL2ljb25zL2xpc3Quc3ZnJztcbmltcG9ydCB7IElBcHBTdGF0ZSB9IGZyb20gJ3NyYy9tb2RlbHMvSUFwcFN0YXRlJztcbmltcG9ydCB7IElGaWx0ZXIgfSBmcm9tICdzcmMvc3RvcmUvZmlsdGVycy9JRmlsdGVyJztcbmltcG9ydCB7IElGaWx0ZXJJdGVtIH0gZnJvbSAnc3JjL3N0b3JlL2ZpbHRlcnMvSUZpbHRlckl0ZW0nO1xuaW1wb3J0IHtcbiAgc2V0QWN0aXZlRmlsdGVyR2xvYmFsbHksXG4gIHNldEV2ZW50RmlsdGVyUGFyYW0sXG59IGZyb20gJ3NyYy9zdG9yZS9nbG9iYWwvYWN0aW9ucyc7XG5pbXBvcnQgeyBJUG9pbnQgfSBmcm9tICdzcmMvc3RvcmUvcG9pbnRzL21vZGVscy9JUG9pbnQnO1xuaW1wb3J0IGkxOG4gZnJvbSAnc3JjL3V0aWxpdGllcy9pMThuJztcbmltcG9ydCB7IGJ1aWxkS1FMUXVlcnksIHBhcnNlU2VsZWN0ZWRJdGVtcyB9IGZyb20gJ3NyYy91dGlsaXRpZXMva3FsJztcbmltcG9ydCAnLi4vLi4vRXZlbnRzU3R5bGUuc2Nzcyc7XG5pbXBvcnQgRmlsdGVyIGZyb20gJy4vRmlsdGVyJztcbmltcG9ydCBGaWx0ZXJzRHJvcERvd24gZnJvbSAnLi9GaWx0ZXJzRHJvcERvd24nO1xuZnVuY3Rpb24gbWFwU3RhdGVUb1Byb3BzKHN0YXRlOiBJQXBwU3RhdGUpIHtcbiAgY29uc3QgeyBnbG9iYWxfZGF0YSwgbmF2X2NvbnRleHRfZGF0YSwgcG9pbnRzX2RhdGEgfSA9IHN0YXRlO1xuXG4gIHJldHVybiB7XG4gICAgZ2xvYmFsX2RhdGEsXG4gICAgbmF2X2NvbnRleHRfZGF0YSxcbiAgICBwb2ludHNfZGF0YSxcbiAgfTtcbn1cblxudHlwZSBJUHJvcHMgPSBDb25uZWN0ZWRQcm9wczx0eXBlb2YgY29ubmVjdG9yPiAmIHtcbiAgZmlsdGVyUG9wdXBPcGVuOiBib29sZWFuO1xufTtcblxuY29uc3QgRmlsdGVyQ29udGFpbmVyOiBSZWFjdC5GQzxJUHJvcHM+ID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IHsgZ2xvYmFsX2RhdGEsIG5hdl9jb250ZXh0X2RhdGEsIHBvaW50c19kYXRhLCBmaWx0ZXJQb3B1cE9wZW4gfSA9IHByb3BzO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IG5hbWVJbnB1dCA9IHVzZVJlZjxIVE1MSW5wdXRFbGVtZW50PihudWxsKTtcbiAgY29uc3QgZmlsdGVyQ29udGVudCA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IFtmaWx0ZXJzLCBzZXRGaWx0ZXJzXSA9IHVzZVN0YXRlPGFueT4oW10pO1xuICBjb25zdCBbYXZhaWxhYmxlRmlsdGVySXRlbXMsIHNldEF2YWlsYWJsZUZpbHRlckl0ZW1zXSA9IHVzZVN0YXRlKFtdKTtcbiAgY29uc3QgW3JlbmRlcmVkLCBzZXRSZW5kZXJlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIC8vZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIGNvbnN0IFthY3RpdmVGaWx0ZXIsIHNldEFjdGl2ZUZpbHRlcl0gPSB1c2VTdGF0ZTxhbnk+KHVuZGVmaW5lZCk7XG4gIGNvbnN0IFthY3RpdmVGaWx0ZXJDb3B5LCBzZXRBY3RpdmVGaWx0ZXJDb3B5XSA9IHVzZVN0YXRlPGFueT4odW5kZWZpbmVkKTtcbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCBjc3JmID0gZG9jdW1lbnRcbiAgICAucXVlcnlTZWxlY3RvcihcIm1ldGFbbmFtZT0nY3NyZi10b2tlbiddXCIpXG4gICAgLmdldEF0dHJpYnV0ZSgnY29udGVudCcpO1xuICBjb25zdCB1c2VRdWVyeSA9ICgpID0+IHtcbiAgICByZXR1cm4gbmV3IFVSTFNlYXJjaFBhcmFtcyh1c2VMb2NhdGlvbigpLnNlYXJjaCk7XG4gIH07XG4gIGNvbnN0IGhpc3RvcnkgPSB1c2VIaXN0b3J5KCk7XG4gIGNvbnN0IHF1ZXJ5ID0gdXNlUXVlcnkoKTtcbiAgY29uc3QgZ2V0S1FMRnJvbVVSTCA9ICgpID0+IHtcbiAgICByZXR1cm4gcXVlcnkuZ2V0KCd2YWx1ZXNGcm9tS1FMJyk7XG4gIH07XG5cbiAgY29uc3QgZ2V0UG9pbnRzVG9GaWx0ZXJzID0gKGF2YWlsYWJsZUZpbHRlckl0ZW1zOiBhbnksIGZpbHRlcnM6IGFueSkgPT4ge1xuICAgIGxldCBpbnRlcmVzdFBvaW50RmlsdGVySXRlbSA9IGF2YWlsYWJsZUZpbHRlckl0ZW1zLmZpbmQoXG4gICAgICAoZjogSUZpbHRlckl0ZW0pID0+IGYudHlwZSA9PT0gJ0ludGVyZXN0UG9pbnRGaWx0ZXJJdGVtJyxcbiAgICApO1xuICAgIGxldCBmaWx0ZXJlZFBvaW50c0RhdGEgPSBwb2ludHNfZGF0YS5pdGVtc1xuICAgICAgLmZpbHRlcigocG9pbnQ6IElQb2ludCkgPT4gcG9pbnQucGFydF9vZl9vYnNlcnZhdGlvbiA9PT0gdHJ1ZSlcbiAgICAgIC5tYXAoKHBvaW50OiBJUG9pbnQpID0+IHtcbiAgICAgICAgcmV0dXJuIHsgaWQ6IHBvaW50LmlkLCBuYW1lOiBwb2ludC5ncm91cC5uYW1lIH07XG4gICAgICB9KTtcblxuICAgIGlmIChpbnRlcmVzdFBvaW50RmlsdGVySXRlbSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpbnRlcmVzdFBvaW50RmlsdGVySXRlbS5vcHRpb25zID0gZmlsdGVyZWRQb2ludHNEYXRhO1xuICAgIH1cblxuICAgIGZpbHRlcnMuZm9yRWFjaCgoZjogSUZpbHRlcikgPT4ge1xuICAgICAgbGV0IGZpbHRlckl0ZW0gPSBmLmZpbHRlcl9pdGVtcy5maW5kKFxuICAgICAgICAoZmk6IElGaWx0ZXJJdGVtKSA9PiBmaS50eXBlID09PSAnSW50ZXJlc3RQb2ludEZpbHRlckl0ZW0nLFxuICAgICAgKTtcblxuICAgICAgaWYgKGZpbHRlckl0ZW0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBmaWx0ZXJJdGVtLmF2YWlsYWJsZV9vcHRpb25zID0gZmlsdGVyZWRQb2ludHNEYXRhO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgc2V0RmlsdGVycyhmaWx0ZXJzKTtcbiAgfTtcblxuICBjb25zdCBmZXRjaEV2ZW50RmlsdGVycyA9IChcbiAgICBwcmVwYXJlZFBhcmFtczogYW55LFxuICAgIG1ldGhvZDogc3RyaW5nLFxuICAgIHVybDogc3RyaW5nLFxuICAgIGZpbHRlcjogYW55ID0gbnVsbCxcbiAgKSA9PiB7XG4gICAgaWYgKGNzcmYgIT09IG51bGwpIHtcbiAgICAgIGZldGNoKHVybCwge1xuICAgICAgICBtZXRob2Q6IG1ldGhvZCxcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgICAgJ1gtQ1NSRi1Ub2tlbic6IGNzcmYsXG4gICAgICAgICAgQWNjZXB0OiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgIH0sXG4gICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHByZXBhcmVkUGFyYW1zKSxcbiAgICAgIH0pXG4gICAgICAgIC50aGVuKChyZXNwb25zZSkgPT4gcmVzcG9uc2UuanNvbigpKVxuICAgICAgICAudGhlbigoZGF0YSkgPT4ge1xuICAgICAgICAgIGdldFBvaW50c1RvRmlsdGVycyhkYXRhLmF2YWlsYWJsZV9maWx0ZXJfaXRlbXMsIGRhdGEuZmlsdGVycyk7XG5cbiAgICAgICAgICBpZiAoZmlsdGVyICE9PSBudWxsKSB7XG4gICAgICAgICAgICBsZXQgc2F2ZWQgPSBkYXRhLmZpbHRlcnMuZmluZChcbiAgICAgICAgICAgICAgKGY6IElGaWx0ZXIpID0+IGYubmFtZSA9PT0gZmlsdGVyLm5hbWUsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgc2V0QWN0aXZlRmlsdGVyKHNhdmVkKTtcbiAgICAgICAgICAgIHNldEFjdGl2ZUZpbHRlckNvcHkoc2F2ZWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGRlZXBDbG9uZSA9IChkYXRhOiBhbnkpID0+IHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShkYXRhKSk7XG4gIH07XG5cbiAgY29uc3QgZ2V0RGF0YSA9ICgpID0+IHtcbiAgICBmZXRjaChcbiAgICAgIGAvZXZlbnRfZmlsdGVycy5qc29uP3dhdGVyX2F1dGhvcml0eV9pZD0ke1xuICAgICAgICBnbG9iYWxfZGF0YS53YXRlckF1dGhvcml0eUlkXG4gICAgICB9JnZhbHVlc0Zyb21LUUw9JHtnZXRLUUxGcm9tVVJMKCl9YCxcbiAgICApXG4gICAgICAudGhlbigocmVzcG9uc2UpID0+IHJlc3BvbnNlLmpzb24oKSlcbiAgICAgIC50aGVuKChqc29uKSA9PiB7XG4gICAgICAgIGdldFBvaW50c1RvRmlsdGVycyhqc29uLmF2YWlsYWJsZV9maWx0ZXJfaXRlbXMsIGpzb24uZmlsdGVycyk7XG5cbiAgICAgICAgbGV0IGpzb25TaGFsbG93Q29weSA9IE9iamVjdC5hc3NpZ24oe30sIGpzb24pO1xuICAgICAgICBqc29uU2hhbGxvd0NvcHkuZmlsdGVycyA9IGRlZXBDbG9uZShqc29uU2hhbGxvd0NvcHkuZmlsdGVycyk7XG4gICAgICAgIGxldCBhY3RpdmUgPSBqc29uU2hhbGxvd0NvcHkuZGlzcGxheWVkX2ZpbHRlcjtcblxuICAgICAgICBpZiAoYWN0aXZlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBhY3RpdmF0ZUZpbHRlcihqc29uU2hhbGxvd0NvcHkuZmlsdGVyc1swXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2V0QXZhaWxhYmxlRmlsdGVySXRlbXMoanNvblNoYWxsb3dDb3B5LmF2YWlsYWJsZV9maWx0ZXJfaXRlbXMpO1xuICAgICAgICAgIHNldEFjdGl2ZUZpbHRlcihhY3RpdmUpO1xuICAgICAgICAgIHNldEFjdGl2ZUZpbHRlckNvcHkoYWN0aXZlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGFwcGx5RmlsdGVyKGFjdGl2ZSk7XG4gICAgICB9KTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGaWx0ZXJDaGFuZ2UgPSAoZmlsdGVyOiBJRmlsdGVyKSA9PiB7XG4gICAgc2V0QWN0aXZlRmlsdGVyKGRlZXBDbG9uZShmaWx0ZXIpKTtcbiAgICBzZXRBY3RpdmVGaWx0ZXJDb3B5KGRlZXBDbG9uZShmaWx0ZXIpKTtcbiAgICBmaWx0ZXJDb250ZW50LmN1cnJlbnQhLmNsaWNrKCk7XG4gIH07XG5cbiAgY29uc3Qgc2F2ZUFjdGl2ZUZpbHRlciA9IChcbiAgICBmaWx0ZXI6XG4gICAgICB8IElGaWx0ZXJcbiAgICAgIHwge1xuICAgICAgICAgIGlkOiBudW1iZXI7XG4gICAgICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgICAgIGZpbHRlcl9pdGVtczogSUZpbHRlckl0ZW1bXTtcbiAgICAgICAgICBpc19hY3RpdmU6IGJvb2xlYW47XG4gICAgICAgIH0sXG4gICkgPT4ge1xuICAgIGxldCBjbG9uZWRGaWx0ZXJzID0gZGVlcENsb25lKGZpbHRlcnMpO1xuICAgIGxldCBmaWx0ZXJUb01vZGlmeUluZGV4ID0gY2xvbmVkRmlsdGVycy5pbmRleE9mKFxuICAgICAgY2xvbmVkRmlsdGVycy5maW5kKChmOiBhbnkpID0+IGYuaWQgPT09IGZpbHRlci5pZCksXG4gICAgKTtcbiAgICBsZXQgcHJlcGFyZWRQYXJhbXMgPSB7XG4gICAgICBldmVudF9maWx0ZXI6IHtcbiAgICAgICAgbmFtZTogZmlsdGVyLm5hbWUsXG4gICAgICAgIGlzX2FjdGl2ZTogZmlsdGVyLmlzX2FjdGl2ZSxcbiAgICAgICAgZmlsdGVyX2l0ZW1zOiBKU09OLnN0cmluZ2lmeShmaWx0ZXIuZmlsdGVyX2l0ZW1zKSxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIGNsb25lZEZpbHRlcnNbZmlsdGVyVG9Nb2RpZnlJbmRleF0gPSBmaWx0ZXI7XG4gICAgc2V0RmlsdGVycyhjbG9uZWRGaWx0ZXJzKTtcbiAgICBzZXRBY3RpdmVGaWx0ZXIoZmlsdGVyKTtcbiAgICBzZXRBY3RpdmVGaWx0ZXJDb3B5KGZpbHRlcik7XG5cbiAgICBpZiAoTWF0aC5zaWduKGZpbHRlci5pZCkgPiAwKSB7XG4gICAgICBmZXRjaEV2ZW50RmlsdGVycyhcbiAgICAgICAgcHJlcGFyZWRQYXJhbXMsXG4gICAgICAgICdQVVQnLFxuICAgICAgICBgL2V2ZW50X2ZpbHRlcnMvJHtmaWx0ZXIuaWR9P3dhdGVyX2F1dGhvcml0eV9pZD0ke2dsb2JhbF9kYXRhLndhdGVyQXV0aG9yaXR5SWR9YCxcbiAgICAgICAgZmlsdGVyLFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZmV0Y2hFdmVudEZpbHRlcnMoXG4gICAgICAgIHByZXBhcmVkUGFyYW1zLFxuICAgICAgICAnUE9TVCcsXG4gICAgICAgIGAvZXZlbnRfZmlsdGVycz93YXRlcl9hdXRob3JpdHlfaWQ9JHtnbG9iYWxfZGF0YS53YXRlckF1dGhvcml0eUlkfWAsXG4gICAgICAgIGZpbHRlcixcbiAgICAgICk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGNyZWF0ZUZpbHRlciA9IChmaWx0ZXI6IElGaWx0ZXIsIG5hbWU6IHN0cmluZykgPT4ge1xuICAgIGxldCBuZXdGaWx0ZXIgPSB7XG4gICAgICBpZDogLTEsXG4gICAgICBuYW1lOiBuYW1lLFxuICAgICAgZmlsdGVyX2l0ZW1zOiBmaWx0ZXIuZmlsdGVyX2l0ZW1zLFxuICAgICAgaXNfYWN0aXZlOiBmYWxzZSxcbiAgICB9O1xuXG4gICAgc2V0RmlsdGVycyhbLi4uZmlsdGVycywgbmV3RmlsdGVyXSk7XG4gICAgc2V0QWN0aXZlRmlsdGVyQ29weShuZXdGaWx0ZXIpO1xuICAgIHNldEFjdGl2ZUZpbHRlcihuZXdGaWx0ZXIpO1xuICAgIHNhdmVBY3RpdmVGaWx0ZXIobmV3RmlsdGVyKTtcbiAgfTtcblxuICBjb25zdCBkZWxldGVGaWx0ZXIgPSAoZmlsdGVyOiBJRmlsdGVyKSA9PiB7XG4gICAgaWYgKGNzcmYgIT09IG51bGwgJiYgZmlsdGVyLmlkICE9PSAtMSkge1xuICAgICAgZmV0Y2goXG4gICAgICAgIGAvZXZlbnRfZmlsdGVycy8ke2ZpbHRlci5pZH0/d2F0ZXJfYXV0aG9yaXR5X2lkPSR7Z2xvYmFsX2RhdGEud2F0ZXJBdXRob3JpdHlJZH1gLFxuICAgICAgICB7XG4gICAgICAgICAgbWV0aG9kOiAnREVMRVRFJyxcbiAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAnWC1DU1JGLVRva2VuJzogY3NyZixcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgKVxuICAgICAgICAudGhlbigocmVzcG9uc2UpID0+IHJlc3BvbnNlLmpzb24oKSlcbiAgICAgICAgLnRoZW4oKGRhdGEpID0+IHtcbiAgICAgICAgICBsZXQgYWN0aXZlID0gZGF0YS5maWx0ZXJzLmZpbmQoXG4gICAgICAgICAgICAoZmlsdGVyOiBJRmlsdGVyKSA9PiBmaWx0ZXIuaXNfYWN0aXZlID09PSB0cnVlLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBpZiAoYWN0aXZlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHNldEZpbHRlcnMoZGF0YS5maWx0ZXJzKTtcbiAgICAgICAgICAgIHNldEFjdGl2ZUZpbHRlcihhY3RpdmUpO1xuICAgICAgICAgICAgc2V0QWN0aXZlRmlsdGVyQ29weShhY3RpdmUpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoZGF0YS5maWx0ZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICBnZXREYXRhKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBkYXRhLmZpbHRlcnNbMF0uaXNfYWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgc2V0QWN0aXZlRmlsdGVyKGRhdGEuZmlsdGVyc1swXSk7XG4gICAgICAgICAgICAgIHNldEFjdGl2ZUZpbHRlckNvcHkoZGF0YS5maWx0ZXJzWzBdKTtcbiAgICAgICAgICAgICAgc2V0RmlsdGVycyhkYXRhLmZpbHRlcnMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGdldEV2ZW50SWRGcm9tVVJMID0gKCkgPT4ge1xuICAgIHJldHVybiBxdWVyeS5nZXQoJ2V2ZW50SWQnKTtcbiAgfTtcblxuICBjb25zdCBnZXRLUUxWYWx1ZXNGcm9tVVJMID0gKCkgPT4ge1xuICAgIHJldHVybiBxdWVyeS5nZXQoJ3ZhbHVlc0Zyb21LUUwnKTtcbiAgfTtcblxuICBjb25zdCBhY3RpdmF0ZUZpbHRlciA9IChmaWx0ZXI6IElGaWx0ZXIpID0+IHtcbiAgICBmZXRjaEV2ZW50RmlsdGVycyhcbiAgICAgIHt9LFxuICAgICAgJ1BVVCcsXG4gICAgICBgL2V2ZW50X2ZpbHRlcnMvYWN0aXZhdGUvJHtmaWx0ZXIuaWR9P3dhdGVyX2F1dGhvcml0eV9pZD0ke2dsb2JhbF9kYXRhLndhdGVyQXV0aG9yaXR5SWR9YCxcbiAgICAgIGZpbHRlcixcbiAgICApO1xuICB9O1xuXG4gIGNvbnN0IGFwcGx5RmlsdGVyID0gKGZpbHRlciA9IGFjdGl2ZUZpbHRlckNvcHkpID0+IHtcbiAgICBsZXQgdmFsdWUgPSAnc2V2ZXJpdHknO1xuXG4gICAgaWYgKGdldEtRTFZhbHVlc0Zyb21VUkwoKSAhPT0gbnVsbCkge1xuICAgICAgaWYgKFxuICAgICAgICBnZXRLUUxWYWx1ZXNGcm9tVVJMKCkhLmluY2x1ZGVzKCdPUkRFUl9CWScpICYmXG4gICAgICAgIGdldEtRTFZhbHVlc0Zyb21VUkwoKSEuaW5jbHVkZXMoJ25ld2VzdCcpXG4gICAgICApIHtcbiAgICAgICAgdmFsdWUgPSAnbmV3ZXN0JztcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIGdldEtRTFZhbHVlc0Zyb21VUkwoKSEuaW5jbHVkZXMoJ09SREVSX0JZJykgJiZcbiAgICAgICAgZ2V0S1FMVmFsdWVzRnJvbVVSTCgpIS5pbmNsdWRlcygnb2xkZXN0JylcbiAgICAgICkge1xuICAgICAgICB2YWx1ZSA9ICdvbGRlc3QnO1xuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgZ2V0S1FMVmFsdWVzRnJvbVVSTCgpIS5pbmNsdWRlcygnT1JERVJfQlknKSAmJlxuICAgICAgICBnZXRLUUxWYWx1ZXNGcm9tVVJMKCkhLmluY2x1ZGVzKCdzZXZlcml0eScpXG4gICAgICApIHtcbiAgICAgICAgdmFsdWUgPSAnc2V2ZXJpdHknO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChuYXZfY29udGV4dF9kYXRhLm5hdkNvbnRleHQubmFtZSA9PT0gJ2V2ZW50c192aWV3Jykge1xuICAgICAgaGlzdG9yeS5wdXNoKFxuICAgICAgICBgLyR7bmF2X2NvbnRleHRfZGF0YS5uYXZDb250ZXh0Lm5hbWV9L2luZGV4P3dhdGVyX2F1dGhvcml0eV9pZD0ke1xuICAgICAgICAgIGdsb2JhbF9kYXRhLndhdGVyQXV0aG9yaXR5SWRcbiAgICAgICAgfSZsb2NhbGU9JHtcbiAgICAgICAgICBuYXZfY29udGV4dF9kYXRhLm5hdkNvbnRleHQubG9jYWxlXG4gICAgICAgIH0mZXZlbnRJZD0ke2dldEV2ZW50SWRGcm9tVVJMKCl9JnZhbHVlc0Zyb21LUUw9JHtidWlsZEtRTFF1ZXJ5KFxuICAgICAgICAgIGZpbHRlcixcbiAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgKX1gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBkaXNwYXRjaChzZXRFdmVudEZpbHRlclBhcmFtKGJ1aWxkS1FMUXVlcnkoZmlsdGVyLCB2YWx1ZSkpKTtcbiAgICBkaXNwYXRjaChzZXRBY3RpdmVGaWx0ZXJHbG9iYWxseShmaWx0ZXIpKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVDcmVhdGlvbkNsaWNrID0gKCkgPT4ge1xuICAgIGNyZWF0ZUZpbHRlcihhY3RpdmVGaWx0ZXJDb3B5LCBuYW1lSW5wdXQuY3VycmVudCEudmFsdWUpO1xuICAgIG5hbWVJbnB1dC5jdXJyZW50IS52YWx1ZSA9ICcnO1xuICAgIGZpbHRlckNvbnRlbnQuY3VycmVudCEuY2xpY2soKTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghcmVuZGVyZWQpIHtcbiAgICAgIHNldFJlbmRlcmVkKHRydWUpO1xuICAgICAgZ2V0RGF0YSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoZ2xvYmFsX2RhdGEuZXZlbnRGaWx0ZXJQYXJhbSA9PT0gJycgJiYgZmlsdGVycy5sZW5ndGggIT09IDApIHtcbiAgICAgICAgbGV0IGZpbHRlciA9IGZpbHRlcnMuZmluZCgoZmlsdGVyOiBJRmlsdGVyKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGZpbHRlci5pc19hY3RpdmU7XG4gICAgICAgIH0pO1xuICAgICAgICBzZXRBY3RpdmVGaWx0ZXJDb3B5KGZpbHRlcik7XG4gICAgICB9XG4gICAgfVxuICB9LCBbZ2xvYmFsX2RhdGEuZXZlbnRGaWx0ZXJQYXJhbSwgZ2xvYmFsX2RhdGEud2F0ZXJBdXRob3JpdHlJZF0pO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgY2xhc3NOYW1lPXtgZmlsdGVyLWNvbnRhaW5lciAke1xuICAgICAgICBmaWx0ZXJQb3B1cE9wZW4gPyAnJyA6ICdmaWx0ZXItY29udGFpbmVyLS1oaWRkZW4nXG4gICAgICB9YH1cbiAgICA+XG4gICAgICB7YWN0aXZlRmlsdGVyQ29weSAhPT0gdW5kZWZpbmVkICYmIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9eydmaWx0ZXItY29udGFpbmVyX19jb250ZW50J30gcmVmPXtmaWx0ZXJDb250ZW50fT5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2ZpbHRlci1jb250YWluZXJfX2NvbnRlbnRfX2hlYWRlcid9PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eyd0aXRsZSd9PlxuICAgICAgICAgICAgICA8aDQ+e2kxOG4udCgnZXZlbnRzX292ZXJ2aWV3LmZpbHRlci5maWx0ZXInKX08L2g0PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnYWN0aW9ucyd9PlxuICAgICAgICAgICAgICA8RHJvcGRvd24gY2xhc3NOYW1lPXsnYWN0aW9uJ30+XG4gICAgICAgICAgICAgICAgPERyb3Bkb3duLlRvZ2dsZSB2YXJpYW50PVwic3VjY2Vzc1wiIGlkPVwiZHJvcGRvd24tYmFzaWNcIj5cbiAgICAgICAgICAgICAgICAgIDxMaXN0SWNvblxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJwcmVzZXQtaWNvblwiXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjE0cHhcIlxuICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjE0cHhcIlxuICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzFkMWQxZFwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAge2FjdGl2ZUZpbHRlckNvcHkubmFtZX17JyAnfVxuICAgICAgICAgICAgICAgICAge2FjdGl2ZUZpbHRlckNvcHkuaWQgPT09IC0xID8gKFxuICAgICAgICAgICAgICAgICAgICA8Yj4gKHtpMThuLnQoJ2V2ZW50c19vdmVydmlldy5maWx0ZXIudW5zYXZlZCcpfSkgPC9iPlxuICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgJydcbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9Ecm9wZG93bi5Ub2dnbGU+XG5cbiAgICAgICAgICAgICAgICA8RmlsdGVyc0Ryb3BEb3duXG4gICAgICAgICAgICAgICAgICBmaWx0ZXJzPXtmaWx0ZXJzfVxuICAgICAgICAgICAgICAgICAgaGFuZGxlRmlsdGVyQ2hhbmdlPXtoYW5kbGVGaWx0ZXJDaGFuZ2V9XG4gICAgICAgICAgICAgICAgICBhY3RpdmVGaWx0ZXJDb3B5PXthY3RpdmVGaWx0ZXJDb3B5fVxuICAgICAgICAgICAgICAgICAgYWN0aXZhdGVGaWx0ZXI9e2FjdGl2YXRlRmlsdGVyfVxuICAgICAgICAgICAgICAgICAgZGVsZXRlRmlsdGVyPXtkZWxldGVGaWx0ZXJ9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9Ecm9wZG93bj5cblxuICAgICAgICAgICAgICA8RHJvcGRvd24gY2xhc3NOYW1lPXsnYWN0aW9uJ30+XG4gICAgICAgICAgICAgICAgPERyb3Bkb3duLlRvZ2dsZSB2YXJpYW50PVwic3VjY2Vzc1wiIGlkPVwiZHJvcGRvd24tYmFzaWNcIj5cbiAgICAgICAgICAgICAgICAgIDxTYXZlSWNvblxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJzYXZlLWljb25cIlxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxM3B4XCJcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxM3B4XCJcbiAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiMxZDFkMWRcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPntpMThuLnQoJ2V2ZW50c19vdmVydmlldy5maWx0ZXIuc2F2ZS5sYWJlbCcpfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duLlRvZ2dsZT5cblxuICAgICAgICAgICAgICAgIDxEcm9wZG93bi5NZW51PlxuICAgICAgICAgICAgICAgICAgPERyb3Bkb3duLkl0ZW1cbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2FjdGl2ZUZpbHRlckNvcHkuaWQgPT09IC0xID8gdHJ1ZSA6IGZhbHNlfVxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgc2F2ZUFjdGl2ZUZpbHRlcihhY3RpdmVGaWx0ZXJDb3B5KTtcbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge2kxOG4udCgnZXZlbnRzX292ZXJ2aWV3LmZpbHRlci5zYXZlLmV4aXN0aW5nJyl9XG4gICAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duLkl0ZW0+XG4gICAgICAgICAgICAgICAgICA8RHJvcGRvd24gY2xhc3NOYW1lPXsnYWN0aW9uIGFjdGlvbi0tc2F2ZSd9PlxuICAgICAgICAgICAgICAgICAgICA8RHJvcGRvd24uVG9nZ2xlIHZhcmlhbnQ9XCJzdWNjZXNzXCIgaWQ9XCJkcm9wZG93bi1iYXNpY1wiPlxuICAgICAgICAgICAgICAgICAgICAgIHtpMThuLnQoJ2V2ZW50c19vdmVydmlldy5maWx0ZXIuc2F2ZS5uZXcnKX1cbiAgICAgICAgICAgICAgICAgICAgPC9Ecm9wZG93bi5Ub2dnbGU+XG5cbiAgICAgICAgICAgICAgICAgICAgPERyb3Bkb3duLk1lbnU+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eyduZXctZmlsdGVyLXBvcHVwJ30+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybUNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e2kxOG4udChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXZlbnRzX292ZXJ2aWV3LmZpbHRlci5zYXZlLmZpZWxkX3BsYWNlaG9sZGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIk5hbWUgdGhpcyBmaWx0ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWRlc2NyaWJlZGJ5PVwiYmFzaWMtYWRkb24yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmPXtuYW1lSW5wdXR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9Gb2N1cz17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUNyZWF0aW9uQ2xpY2soKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cInN1Y2Nlc3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7aTE4bi50KCdkZXZpY2VfaGVhbHRoX3N0YXR1cy5vaycpfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvRHJvcGRvd24uTWVudT5cbiAgICAgICAgICAgICAgICAgIDwvRHJvcGRvd24+XG4gICAgICAgICAgICAgICAgPC9Ecm9wZG93bi5NZW51PlxuICAgICAgICAgICAgICA8L0Ryb3Bkb3duPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2ZpbHRlci1jb250YWluZXJfX2NvbnRlbnRfX2JvZHknfT5cbiAgICAgICAgICAgIDxGaWx0ZXJcbiAgICAgICAgICAgICAgc2V0QWN0aXZlRmlsdGVyQ29weT17c2V0QWN0aXZlRmlsdGVyQ29weX1cbiAgICAgICAgICAgICAgYWN0aXZlRmlsdGVyQ29weT17YWN0aXZlRmlsdGVyQ29weX1cbiAgICAgICAgICAgICAgYXZhaWxhYmxlRmlsdGVySXRlbXM9e2F2YWlsYWJsZUZpbHRlckl0ZW1zfVxuICAgICAgICAgICAgICBwYXJzZVNlbGVjdGVkSXRlbXM9e3BhcnNlU2VsZWN0ZWRJdGVtc31cbiAgICAgICAgICAgICAgYXBwbHlGaWx0ZXI9e2FwcGx5RmlsdGVyfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuY29uc3QgY29ubmVjdG9yID0gY29ubmVjdChtYXBTdGF0ZVRvUHJvcHMpO1xuZXhwb3J0IGRlZmF1bHQgY29ubmVjdG9yKEZpbHRlckNvbnRhaW5lcik7XG4iXX0=
405
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9wYWdlcy9FdmVudHNQYWdlL2V2ZW50cy9ldmVudHNfbGlzdC9GaWx0ZXIvRmlsdGVyQ29udGFpbmVyLnRzeCJdLCJuYW1lcyI6WyJtYXBTdGF0ZVRvUHJvcHMiLCJzdGF0ZSIsImdsb2JhbF9kYXRhIiwibmF2X2NvbnRleHRfZGF0YSIsInBvaW50c19kYXRhIiwiRmlsdGVyQ29udGFpbmVyIiwicHJvcHMiLCJmaWx0ZXJQb3B1cE9wZW4iLCJhcHBseUxvZ2ljIiwiZmV0Y2hUeXBlIiwiZGlzcGF0Y2giLCJuYW1lSW5wdXQiLCJmaWx0ZXJDb250ZW50IiwiZmlsdGVycyIsInNldEZpbHRlcnMiLCJhdmFpbGFibGVGaWx0ZXJJdGVtcyIsInNldEF2YWlsYWJsZUZpbHRlckl0ZW1zIiwicmVuZGVyZWQiLCJzZXRSZW5kZXJlZCIsInVuZGVmaW5lZCIsImFjdGl2ZUZpbHRlciIsInNldEFjdGl2ZUZpbHRlciIsImFjdGl2ZUZpbHRlckNvcHkiLCJzZXRBY3RpdmVGaWx0ZXJDb3B5IiwiY3NyZiIsImRvY3VtZW50IiwicXVlcnlTZWxlY3RvciIsImdldEF0dHJpYnV0ZSIsInVzZVF1ZXJ5IiwiVVJMU2VhcmNoUGFyYW1zIiwic2VhcmNoIiwiaGlzdG9yeSIsInF1ZXJ5IiwiZ2V0S1FMRnJvbVVSTCIsImdldCIsImdldFBvaW50c1RvRmlsdGVycyIsImludGVyZXN0UG9pbnRGaWx0ZXJJdGVtIiwiZmluZCIsImYiLCJ0eXBlIiwiZmlsdGVyZWRQb2ludHNEYXRhIiwiaXRlbXMiLCJmaWx0ZXIiLCJwb2ludCIsInBhcnRfb2Zfb2JzZXJ2YXRpb24iLCJtYXAiLCJpZCIsIm5hbWUiLCJncm91cCIsIm9wdGlvbnMiLCJmb3JFYWNoIiwiZmlsdGVySXRlbSIsImZpbHRlcl9pdGVtcyIsImZpIiwiYXZhaWxhYmxlX29wdGlvbnMiLCJmZXRjaEV2ZW50RmlsdGVycyIsInByZXBhcmVkUGFyYW1zIiwibWV0aG9kIiwidXJsIiwiZmV0Y2giLCJoZWFkZXJzIiwiQWNjZXB0IiwiYm9keSIsIkpTT04iLCJzdHJpbmdpZnkiLCJ0aGVuIiwicmVzcG9uc2UiLCJqc29uIiwiZGF0YSIsImF2YWlsYWJsZV9maWx0ZXJfaXRlbXMiLCJzYXZlZCIsImRlZXBDbG9uZSIsInBhcnNlIiwiZ2V0RGF0YSIsIndhdGVyQXV0aG9yaXR5SWQiLCJqc29uU2hhbGxvd0NvcHkiLCJPYmplY3QiLCJhc3NpZ24iLCJhY3RpdmUiLCJkaXNwbGF5ZWRfZmlsdGVyIiwiYWN0aXZhdGVGaWx0ZXIiLCJhcHBseUZpbHRlciIsImhhbmRsZUZpbHRlckNoYW5nZSIsImN1cnJlbnQiLCJjbGljayIsInNhdmVBY3RpdmVGaWx0ZXIiLCJjbG9uZWRGaWx0ZXJzIiwiZmlsdGVyVG9Nb2RpZnlJbmRleCIsImluZGV4T2YiLCJmaWx0ZXJfdHlwZSIsInVpX2ZpbHRlciIsImlzX2FjdGl2ZSIsIk1hdGgiLCJzaWduIiwiY3JlYXRlRmlsdGVyIiwibmV3RmlsdGVyIiwiZGVsZXRlRmlsdGVyIiwibGVuZ3RoIiwiZ2V0RXZlbnRJZEZyb21VUkwiLCJnZXRLUUxWYWx1ZXNGcm9tVVJMIiwidmFsdWUiLCJuYXZDb250ZXh0IiwiaW5jbHVkZXMiLCJwdXNoIiwibG9jYWxlIiwiaGFuZGxlQ3JlYXRpb25DbGljayIsImV2ZW50RmlsdGVyUGFyYW0iLCJpMThuIiwidCIsInBhcnNlU2VsZWN0ZWRJdGVtcyIsImNvbm5lY3RvciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7OztBQU1BOztBQUtBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7QUFDQSxTQUFTQSxlQUFULENBQXlCQyxLQUF6QixFQUEyQztBQUN6QyxNQUFRQyxXQUFSLEdBQXVERCxLQUF2RCxDQUFRQyxXQUFSO0FBQUEsTUFBcUJDLGdCQUFyQixHQUF1REYsS0FBdkQsQ0FBcUJFLGdCQUFyQjtBQUFBLE1BQXVDQyxXQUF2QyxHQUF1REgsS0FBdkQsQ0FB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eUJBQVAsQ0FOSCxDQVhGLENBREYsQ0FMRixDQVRGLENBWEYsQ0ExQkYsQ0FMRixDQURGLGVBcUZFO0FBQUssSUFBQSxTQUFTLEVBQUU7QUFBaEIsa0JBQ0UsNkJBQUMsZUFBRDtBQUNFLElBQUEsbUJBQW1CLEVBQUVyRixtQkFEdkI7QUFFRSxJQUFBLGdCQUFnQixFQUFFRCxnQkFGcEI7QUFHRSxJQUFBLG9CQUFvQixFQUFFUCxvQkFIeEI7QUFJRSxJQUFBLGtCQUFrQixFQUFFOEYsdUJBSnRCO0FBS0UsSUFBQSxXQUFXLEVBQUU1QjtBQUxmLElBREYsQ0FyRkYsQ0FOSixDQURGO0FBeUdELENBaGFEOztBQWthQSxJQUFNNkIsU0FBUyxHQUFHLHlCQUFROUcsZUFBUixDQUFsQjs7ZUFDZThHLFNBQVMsQ0FBQ3pHLGVBQUQsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBCdXR0b24sIEZvcm1Db250cm9sIH0gZnJvbSAncmVhY3QtYm9vdHN0cmFwJztcbmltcG9ydCBEcm9wZG93biBmcm9tICdyZWFjdC1ib290c3RyYXAvRHJvcGRvd24nO1xuaW1wb3J0IHsgY29ubmVjdCwgQ29ubmVjdGVkUHJvcHMsIHVzZURpc3BhdGNoIH0gZnJvbSAncmVhY3QtcmVkdXgnO1xuaW1wb3J0IHsgdXNlSGlzdG9yeSwgdXNlTG9jYXRpb24gfSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJztcbmltcG9ydCB7IFJlYWN0Q29tcG9uZW50IGFzIFNhdmVJY29uIH0gZnJvbSAnc3JjL2Fzc2V0cy9pY29ucy9kaXNrZXR0ZS5zdmcnO1xuaW1wb3J0IHsgUmVhY3RDb21wb25lbnQgYXMgTGlzdEljb24gfSBmcm9tICdzcmMvYXNzZXRzL2ljb25zL2xpc3Quc3ZnJztcbmltcG9ydCB7IElBcHBTdGF0ZSB9IGZyb20gJ3NyYy9tb2RlbHMvSUFwcFN0YXRlJztcbmltcG9ydCB7IElGaWx0ZXIgfSBmcm9tICdzcmMvc3RvcmUvZmlsdGVycy9JRmlsdGVyJztcbmltcG9ydCB7IElGaWx0ZXJJdGVtIH0gZnJvbSAnc3JjL3N0b3JlL2ZpbHRlcnMvSUZpbHRlckl0ZW0nO1xuaW1wb3J0IHtcbiAgc2V0QWN0aXZlRmlsdGVyR2xvYmFsbHksXG4gIHNldEV2ZW50RmlsdGVyUGFyYW0sXG59IGZyb20gJ3NyYy9zdG9yZS9nbG9iYWwvYWN0aW9ucyc7XG5pbXBvcnQgeyBJUG9pbnQgfSBmcm9tICdzcmMvc3RvcmUvcG9pbnRzL21vZGVscy9JUG9pbnQnO1xuaW1wb3J0IGkxOG4gZnJvbSAnc3JjL3V0aWxpdGllcy9pMThuJztcbmltcG9ydCB7IGJ1aWxkS1FMUXVlcnksIHBhcnNlU2VsZWN0ZWRJdGVtcyB9IGZyb20gJ3NyYy91dGlsaXRpZXMva3FsJztcbmltcG9ydCAnLi9GaWx0ZXJTdHlsZS5zY3NzJztcbmltcG9ydCBGaWx0ZXIgZnJvbSAnLi9GaWx0ZXInO1xuaW1wb3J0IEZpbHRlcnNEcm9wRG93biBmcm9tICcuL0ZpbHRlcnNEcm9wRG93bic7XG5mdW5jdGlvbiBtYXBTdGF0ZVRvUHJvcHMoc3RhdGU6IElBcHBTdGF0ZSkge1xuICBjb25zdCB7IGdsb2JhbF9kYXRhLCBuYXZfY29udGV4dF9kYXRhLCBwb2ludHNfZGF0YSB9ID0gc3RhdGU7XG5cbiAgcmV0dXJuIHtcbiAgICBnbG9iYWxfZGF0YSxcbiAgICBuYXZfY29udGV4dF9kYXRhLFxuICAgIHBvaW50c19kYXRhLFxuICB9O1xufVxuXG50eXBlIElQcm9wcyA9IENvbm5lY3RlZFByb3BzPHR5cGVvZiBjb25uZWN0b3I+ICYge1xuICBmaWx0ZXJQb3B1cE9wZW46IGJvb2xlYW47XG4gIGZldGNoVHlwZTogc3RyaW5nO1xuICBhcHBseUxvZ2ljPzogKHZhbHVlczogc3RyaW5nKSA9PiB2b2lkO1xufTtcblxuY29uc3QgRmlsdGVyQ29udGFpbmVyOiBSZWFjdC5GQzxJUHJvcHM+ID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBnbG9iYWxfZGF0YSxcbiAgICBuYXZfY29udGV4dF9kYXRhLFxuICAgIHBvaW50c19kYXRhLFxuICAgIGZpbHRlclBvcHVwT3BlbixcbiAgICBhcHBseUxvZ2ljLFxuICAgIGZldGNoVHlwZSA9ICdFdmVudEZpbHRlcnMnLFxuICB9ID0gcHJvcHM7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgbmFtZUlucHV0ID0gdXNlUmVmPEhUTUxJbnB1dEVsZW1lbnQ+KG51bGwpO1xuICBjb25zdCBmaWx0ZXJDb250ZW50ID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcbiAgY29uc3QgW2ZpbHRlcnMsIHNldEZpbHRlcnNdID0gdXNlU3RhdGU8YW55PihbXSk7XG4gIGNvbnN0IFthdmFpbGFibGVGaWx0ZXJJdGVtcywgc2V0QXZhaWxhYmxlRmlsdGVySXRlbXNdID0gdXNlU3RhdGUoW10pO1xuICBjb25zdCBbcmVuZGVyZWQsIHNldFJlbmRlcmVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgLy9lc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgY29uc3QgW2FjdGl2ZUZpbHRlciwgc2V0QWN0aXZlRmlsdGVyXSA9IHVzZVN0YXRlPGFueT4odW5kZWZpbmVkKTtcbiAgY29uc3QgW2FjdGl2ZUZpbHRlckNvcHksIHNldEFjdGl2ZUZpbHRlckNvcHldID0gdXNlU3RhdGU8YW55Pih1bmRlZmluZWQpO1xuICAvLyBAdHMtaWdub3JlXG4gIGNvbnN0IGNzcmYgPSBkb2N1bWVudFxuICAgIC5xdWVyeVNlbGVjdG9yKFwibWV0YVtuYW1lPSdjc3JmLXRva2VuJ11cIilcbiAgICAuZ2V0QXR0cmlidXRlKCdjb250ZW50Jyk7XG4gIGNvbnN0IHVzZVF1ZXJ5ID0gKCkgPT4ge1xuICAgIHJldHVybiBuZXcgVVJMU2VhcmNoUGFyYW1zKHVzZUxvY2F0aW9uKCkuc2VhcmNoKTtcbiAgfTtcbiAgY29uc3QgaGlzdG9yeSA9IHVzZUhpc3RvcnkoKTtcbiAgY29uc3QgcXVlcnkgPSB1c2VRdWVyeSgpO1xuICBjb25zdCBnZXRLUUxGcm9tVVJMID0gKCkgPT4ge1xuICAgIHJldHVybiBxdWVyeS5nZXQoJ3ZhbHVlc0Zyb21LUUwnKTtcbiAgfTtcblxuICBjb25zdCBnZXRQb2ludHNUb0ZpbHRlcnMgPSAoYXZhaWxhYmxlRmlsdGVySXRlbXM6IGFueSwgZmlsdGVyczogYW55KSA9PiB7XG4gICAgbGV0IGludGVyZXN0UG9pbnRGaWx0ZXJJdGVtID0gYXZhaWxhYmxlRmlsdGVySXRlbXMuZmluZChcbiAgICAgIChmOiBJRmlsdGVySXRlbSkgPT4gZi50eXBlID09PSAnSW50ZXJlc3RQb2ludEZpbHRlckl0ZW0nLFxuICAgICk7XG4gICAgbGV0IGZpbHRlcmVkUG9pbnRzRGF0YSA9IHBvaW50c19kYXRhLml0ZW1zXG4gICAgICAuZmlsdGVyKChwb2ludDogSVBvaW50KSA9PiBwb2ludC5wYXJ0X29mX29ic2VydmF0aW9uID09PSB0cnVlKVxuICAgICAgLm1hcCgocG9pbnQ6IElQb2ludCkgPT4ge1xuICAgICAgICByZXR1cm4geyBpZDogcG9pbnQuaWQsIG5hbWU6IHBvaW50Lmdyb3VwLm5hbWUgfTtcbiAgICAgIH0pO1xuXG4gICAgaWYgKGludGVyZXN0UG9pbnRGaWx0ZXJJdGVtICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGludGVyZXN0UG9pbnRGaWx0ZXJJdGVtLm9wdGlvbnMgPSBmaWx0ZXJlZFBvaW50c0RhdGE7XG4gICAgfVxuXG4gICAgZmlsdGVycy5mb3JFYWNoKChmOiBJRmlsdGVyKSA9PiB7XG4gICAgICBsZXQgZmlsdGVySXRlbSA9IGYuZmlsdGVyX2l0ZW1zLmZpbmQoXG4gICAgICAgIChmaTogSUZpbHRlckl0ZW0pID0+IGZpLnR5cGUgPT09ICdJbnRlcmVzdFBvaW50RmlsdGVySXRlbScsXG4gICAgICApO1xuXG4gICAgICBpZiAoZmlsdGVySXRlbSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGZpbHRlckl0ZW0uYXZhaWxhYmxlX29wdGlvbnMgPSBmaWx0ZXJlZFBvaW50c0RhdGE7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBzZXRGaWx0ZXJzKGZpbHRlcnMpO1xuICB9O1xuXG4gIGNvbnN0IGZldGNoRXZlbnRGaWx0ZXJzID0gKFxuICAgIHByZXBhcmVkUGFyYW1zOiBhbnksXG4gICAgbWV0aG9kOiBzdHJpbmcsXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgZmlsdGVyOiBhbnkgPSBudWxsLFxuICApID0+IHtcbiAgICBpZiAoY3NyZiAhPT0gbnVsbCkge1xuICAgICAgZmV0Y2godXJsLCB7XG4gICAgICAgIG1ldGhvZDogbWV0aG9kLFxuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgICAnWC1DU1JGLVRva2VuJzogY3NyZixcbiAgICAgICAgICBBY2NlcHQ6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgfSxcbiAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkocHJlcGFyZWRQYXJhbXMpLFxuICAgICAgfSlcbiAgICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiByZXNwb25zZS5qc29uKCkpXG4gICAgICAgIC50aGVuKChkYXRhKSA9PiB7XG4gICAgICAgICAgZ2V0UG9pbnRzVG9GaWx0ZXJzKGRhdGEuYXZhaWxhYmxlX2ZpbHRlcl9pdGVtcywgZGF0YS5maWx0ZXJzKTtcblxuICAgICAgICAgIGlmIChmaWx0ZXIgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGxldCBzYXZlZCA9IGRhdGEuZmlsdGVycy5maW5kKFxuICAgICAgICAgICAgICAoZjogSUZpbHRlcikgPT4gZi5uYW1lID09PSBmaWx0ZXIubmFtZSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBzZXRBY3RpdmVGaWx0ZXIoc2F2ZWQpO1xuICAgICAgICAgICAgc2V0QWN0aXZlRmlsdGVyQ29weShzYXZlZCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgZGVlcENsb25lID0gKGRhdGE6IGFueSkgPT4ge1xuICAgIHJldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcbiAgfTtcblxuICBjb25zdCBnZXREYXRhID0gKCkgPT4ge1xuICAgIGZldGNoKFxuICAgICAgYC91aV9maWx0ZXJzLmpzb24/d2F0ZXJfYXV0aG9yaXR5X2lkPSR7XG4gICAgICAgIGdsb2JhbF9kYXRhLndhdGVyQXV0aG9yaXR5SWRcbiAgICAgIH0mZmlsdGVyX3R5cGU9JHtmZXRjaFR5cGV9JnZhbHVlc0Zyb21LUUw9JHtnZXRLUUxGcm9tVVJMKCl9YCxcbiAgICApXG4gICAgICAudGhlbigocmVzcG9uc2UpID0+IHJlc3BvbnNlLmpzb24oKSlcbiAgICAgIC50aGVuKChqc29uKSA9PiB7XG4gICAgICAgIGdldFBvaW50c1RvRmlsdGVycyhqc29uLmF2YWlsYWJsZV9maWx0ZXJfaXRlbXMsIGpzb24uZmlsdGVycyk7XG5cbiAgICAgICAgbGV0IGpzb25TaGFsbG93Q29weSA9IE9iamVjdC5hc3NpZ24oe30sIGpzb24pO1xuICAgICAgICBqc29uU2hhbGxvd0NvcHkuZmlsdGVycyA9IGRlZXBDbG9uZShqc29uU2hhbGxvd0NvcHkuZmlsdGVycyk7XG4gICAgICAgIGxldCBhY3RpdmUgPSBqc29uU2hhbGxvd0NvcHkuZGlzcGxheWVkX2ZpbHRlcjtcblxuICAgICAgICBpZiAoYWN0aXZlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBhY3RpdmF0ZUZpbHRlcihqc29uU2hhbGxvd0NvcHkuZmlsdGVyc1swXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2V0QXZhaWxhYmxlRmlsdGVySXRlbXMoanNvblNoYWxsb3dDb3B5LmF2YWlsYWJsZV9maWx0ZXJfaXRlbXMpO1xuICAgICAgICAgIHNldEFjdGl2ZUZpbHRlcihhY3RpdmUpO1xuICAgICAgICAgIHNldEFjdGl2ZUZpbHRlckNvcHkoYWN0aXZlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGFwcGx5RmlsdGVyKGFjdGl2ZSk7XG4gICAgICB9KTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGaWx0ZXJDaGFuZ2UgPSAoZmlsdGVyOiBJRmlsdGVyKSA9PiB7XG4gICAgc2V0QWN0aXZlRmlsdGVyKGRlZXBDbG9uZShmaWx0ZXIpKTtcbiAgICBzZXRBY3RpdmVGaWx0ZXJDb3B5KGRlZXBDbG9uZShmaWx0ZXIpKTtcbiAgICBmaWx0ZXJDb250ZW50LmN1cnJlbnQhLmNsaWNrKCk7XG4gIH07XG5cbiAgY29uc3Qgc2F2ZUFjdGl2ZUZpbHRlciA9IChcbiAgICBmaWx0ZXI6XG4gICAgICB8IElGaWx0ZXJcbiAgICAgIHwge1xuICAgICAgICAgIGlkOiBudW1iZXI7XG4gICAgICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgICAgIGZpbHRlcl9pdGVtczogSUZpbHRlckl0ZW1bXTtcbiAgICAgICAgICBpc19hY3RpdmU6IGJvb2xlYW47XG4gICAgICAgIH0sXG4gICkgPT4ge1xuICAgIGxldCBjbG9uZWRGaWx0ZXJzID0gZGVlcENsb25lKGZpbHRlcnMpO1xuICAgIGxldCBmaWx0ZXJUb01vZGlmeUluZGV4ID0gY2xvbmVkRmlsdGVycy5pbmRleE9mKFxuICAgICAgY2xvbmVkRmlsdGVycy5maW5kKChmOiBhbnkpID0+IGYuaWQgPT09IGZpbHRlci5pZCksXG4gICAgKTtcbiAgICBsZXQgcHJlcGFyZWRQYXJhbXMgPSB7XG4gICAgICBmaWx0ZXJfdHlwZTogZmV0Y2hUeXBlLFxuICAgICAgdWlfZmlsdGVyOiB7XG4gICAgICAgIG5hbWU6IGZpbHRlci5uYW1lLFxuICAgICAgICBpc19hY3RpdmU6IGZpbHRlci5pc19hY3RpdmUsXG4gICAgICAgIGZpbHRlcl9pdGVtczogSlNPTi5zdHJpbmdpZnkoZmlsdGVyLmZpbHRlcl9pdGVtcyksXG4gICAgICB9LFxuICAgIH07XG5cbiAgICBjbG9uZWRGaWx0ZXJzW2ZpbHRlclRvTW9kaWZ5SW5kZXhdID0gZmlsdGVyO1xuICAgIHNldEZpbHRlcnMoY2xvbmVkRmlsdGVycyk7XG4gICAgc2V0QWN0aXZlRmlsdGVyKGZpbHRlcik7XG4gICAgc2V0QWN0aXZlRmlsdGVyQ29weShmaWx0ZXIpO1xuXG4gICAgaWYgKE1hdGguc2lnbihmaWx0ZXIuaWQpID4gMCkge1xuICAgICAgZmV0Y2hFdmVudEZpbHRlcnMoXG4gICAgICAgIHByZXBhcmVkUGFyYW1zLFxuICAgICAgICAnUFVUJyxcbiAgICAgICAgYC91aV9maWx0ZXJzLyR7ZmlsdGVyLmlkfT93YXRlcl9hdXRob3JpdHlfaWQ9JHtnbG9iYWxfZGF0YS53YXRlckF1dGhvcml0eUlkfWAsXG4gICAgICAgIGZpbHRlcixcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZldGNoRXZlbnRGaWx0ZXJzKFxuICAgICAgICBwcmVwYXJlZFBhcmFtcyxcbiAgICAgICAgJ1BPU1QnLFxuICAgICAgICBgL3VpX2ZpbHRlcnM/d2F0ZXJfYXV0aG9yaXR5X2lkPSR7Z2xvYmFsX2RhdGEud2F0ZXJBdXRob3JpdHlJZH1gLFxuICAgICAgICBmaWx0ZXIsXG4gICAgICApO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBjcmVhdGVGaWx0ZXIgPSAoZmlsdGVyOiBJRmlsdGVyLCBuYW1lOiBzdHJpbmcpID0+IHtcbiAgICBsZXQgbmV3RmlsdGVyID0ge1xuICAgICAgaWQ6IC0xLFxuICAgICAgbmFtZTogbmFtZSxcbiAgICAgIGZpbHRlcl9pdGVtczogZmlsdGVyLmZpbHRlcl9pdGVtcyxcbiAgICAgIGlzX2FjdGl2ZTogZmFsc2UsXG4gICAgfTtcblxuICAgIHNldEZpbHRlcnMoWy4uLmZpbHRlcnMsIG5ld0ZpbHRlcl0pO1xuICAgIHNldEFjdGl2ZUZpbHRlckNvcHkobmV3RmlsdGVyKTtcbiAgICBzZXRBY3RpdmVGaWx0ZXIobmV3RmlsdGVyKTtcbiAgICBzYXZlQWN0aXZlRmlsdGVyKG5ld0ZpbHRlcik7XG4gIH07XG5cbiAgY29uc3QgZGVsZXRlRmlsdGVyID0gKGZpbHRlcjogSUZpbHRlcikgPT4ge1xuICAgIGlmIChjc3JmICE9PSBudWxsICYmIGZpbHRlci5pZCAhPT0gLTEpIHtcbiAgICAgIGZldGNoKFxuICAgICAgICBgL3VpX2ZpbHRlcnMvJHtmaWx0ZXIuaWR9P3dhdGVyX2F1dGhvcml0eV9pZD0ke2dsb2JhbF9kYXRhLndhdGVyQXV0aG9yaXR5SWR9JmZpbHRlcl90eXBlPSR7ZmV0Y2hUeXBlfWAsXG4gICAgICAgIHtcbiAgICAgICAgICBtZXRob2Q6ICdERUxFVEUnLFxuICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICdYLUNTUkYtVG9rZW4nOiBjc3JmLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICApXG4gICAgICAgIC50aGVuKChyZXNwb25zZSkgPT4gcmVzcG9uc2UuanNvbigpKVxuICAgICAgICAudGhlbigoZGF0YSkgPT4ge1xuICAgICAgICAgIGxldCBhY3RpdmUgPSBkYXRhLmZpbHRlcnMuZmluZChcbiAgICAgICAgICAgIChmaWx0ZXI6IElGaWx0ZXIpID0+IGZpbHRlci5pc19hY3RpdmUgPT09IHRydWUsXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGlmIChhY3RpdmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgc2V0RmlsdGVycyhkYXRhLmZpbHRlcnMpO1xuICAgICAgICAgICAgc2V0QWN0aXZlRmlsdGVyKGFjdGl2ZSk7XG4gICAgICAgICAgICBzZXRBY3RpdmVGaWx0ZXJDb3B5KGFjdGl2ZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChkYXRhLmZpbHRlcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgIGdldERhdGEoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGRhdGEuZmlsdGVyc1swXS5pc19hY3RpdmUgPSB0cnVlO1xuICAgICAgICAgICAgICBzZXRBY3RpdmVGaWx0ZXIoZGF0YS5maWx0ZXJzWzBdKTtcbiAgICAgICAgICAgICAgc2V0QWN0aXZlRmlsdGVyQ29weShkYXRhLmZpbHRlcnNbMF0pO1xuICAgICAgICAgICAgICBzZXRGaWx0ZXJzKGRhdGEuZmlsdGVycyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgZ2V0RXZlbnRJZEZyb21VUkwgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHF1ZXJ5LmdldCgnZXZlbnRJZCcpO1xuICB9O1xuXG4gIGNvbnN0IGdldEtRTFZhbHVlc0Zyb21VUkwgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHF1ZXJ5LmdldCgndmFsdWVzRnJvbUtRTCcpO1xuICB9O1xuXG4gIGNvbnN0IGFjdGl2YXRlRmlsdGVyID0gKGZpbHRlcjogSUZpbHRlcikgPT4ge1xuICAgIGZldGNoRXZlbnRGaWx0ZXJzKFxuICAgICAge30sXG4gICAgICAnUFVUJyxcbiAgICAgIGAvdWlfZmlsdGVycy9hY3RpdmF0ZS8ke2ZpbHRlci5pZH0/d2F0ZXJfYXV0aG9yaXR5X2lkPSR7Z2xvYmFsX2RhdGEud2F0ZXJBdXRob3JpdHlJZH0mZmlsdGVyX3R5cGU9JHtmZXRjaFR5cGV9YCxcbiAgICAgIGZpbHRlcixcbiAgICApO1xuICB9O1xuXG4gIGNvbnN0IGFwcGx5RmlsdGVyID0gKGZpbHRlciA9IGFjdGl2ZUZpbHRlckNvcHkpID0+IHtcbiAgICBsZXQgdmFsdWUgPSAnc2V2ZXJpdHknO1xuXG4gICAgaWYgKG5hdl9jb250ZXh0X2RhdGEubmF2Q29udGV4dC5uYW1lID09PSAnc2FtcGxpbmdzLWxpc3QnKSB7XG4gICAgICB2YWx1ZSA9ICduZXdlc3QnO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoZ2V0S1FMVmFsdWVzRnJvbVVSTCgpICE9PSBudWxsKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBnZXRLUUxWYWx1ZXNGcm9tVVJMKCkhLmluY2x1ZGVzKCdPUkRFUl9CWScpICYmXG4gICAgICAgICAgZ2V0S1FMVmFsdWVzRnJvbVVSTCgpIS5pbmNsdWRlcygnbmV3ZXN0JylcbiAgICAgICAgKSB7XG4gICAgICAgICAgdmFsdWUgPSAnbmV3ZXN0JztcbiAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICBnZXRLUUxWYWx1ZXNGcm9tVVJMKCkhLmluY2x1ZGVzKCdPUkRFUl9CWScpICYmXG4gICAgICAgICAgZ2V0S1FMVmFsdWVzRnJvbVVSTCgpIS5pbmNsdWRlcygnb2xkZXN0JylcbiAgICAgICAgKSB7XG4gICAgICAgICAgdmFsdWUgPSAnb2xkZXN0JztcbiAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICBnZXRLUUxWYWx1ZXNGcm9tVVJMKCkhLmluY2x1ZGVzKCdPUkRFUl9CWScpICYmXG4gICAgICAgICAgZ2V0S1FMVmFsdWVzRnJvbVVSTCgpIS5pbmNsdWRlcygnc2V2ZXJpdHknKVxuICAgICAgICApIHtcbiAgICAgICAgICB2YWx1ZSA9ICdzZXZlcml0eSc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobmF2X2NvbnRleHRfZGF0YS5uYXZDb250ZXh0Lm5hbWUgPT09ICdldmVudHNfdmlldycpIHtcbiAgICAgIGhpc3RvcnkucHVzaChcbiAgICAgICAgYC8ke25hdl9jb250ZXh0X2RhdGEubmF2Q29udGV4dC5uYW1lfS9pbmRleD93YXRlcl9hdXRob3JpdHlfaWQ9JHtcbiAgICAgICAgICBnbG9iYWxfZGF0YS53YXRlckF1dGhvcml0eUlkXG4gICAgICAgIH0mbG9jYWxlPSR7XG4gICAgICAgICAgbmF2X2NvbnRleHRfZGF0YS5uYXZDb250ZXh0LmxvY2FsZVxuICAgICAgICB9JmV2ZW50SWQ9JHtnZXRFdmVudElkRnJvbVVSTCgpfSZ2YWx1ZXNGcm9tS1FMPSR7YnVpbGRLUUxRdWVyeShcbiAgICAgICAgICBmaWx0ZXIsXG4gICAgICAgICAgdmFsdWUsXG4gICAgICAgICl9YCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKG5hdl9jb250ZXh0X2RhdGEubmF2Q29udGV4dC5uYW1lID09PSAnc2FtcGxpbmdzLWxpc3QnKSB7XG4gICAgICBoaXN0b3J5LnB1c2goXG4gICAgICAgIGAvJHtuYXZfY29udGV4dF9kYXRhLm5hdkNvbnRleHQubmFtZX0vaW5kZXg/d2F0ZXJfYXV0aG9yaXR5X2lkPSR7XG4gICAgICAgICAgZ2xvYmFsX2RhdGEud2F0ZXJBdXRob3JpdHlJZFxuICAgICAgICB9JmxvY2FsZT0ke1xuICAgICAgICAgIG5hdl9jb250ZXh0X2RhdGEubmF2Q29udGV4dC5sb2NhbGVcbiAgICAgICAgfSZ2YWx1ZXNGcm9tS1FMPSR7YnVpbGRLUUxRdWVyeShmaWx0ZXIsIHZhbHVlKX1gLFxuICAgICAgKTtcblxuICAgICAgaWYgKGFwcGx5TG9naWMgIT09IHVuZGVmaW5lZCkgYXBwbHlMb2dpYyhidWlsZEtRTFF1ZXJ5KGZpbHRlciwgdmFsdWUpKTtcbiAgICB9XG5cbiAgICBkaXNwYXRjaChzZXRFdmVudEZpbHRlclBhcmFtKGJ1aWxkS1FMUXVlcnkoZmlsdGVyLCB2YWx1ZSkpKTtcbiAgICBkaXNwYXRjaChzZXRBY3RpdmVGaWx0ZXJHbG9iYWxseShmaWx0ZXIpKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVDcmVhdGlvbkNsaWNrID0gKCkgPT4ge1xuICAgIGNyZWF0ZUZpbHRlcihhY3RpdmVGaWx0ZXJDb3B5LCBuYW1lSW5wdXQuY3VycmVudCEudmFsdWUpO1xuICAgIG5hbWVJbnB1dC5jdXJyZW50IS52YWx1ZSA9ICcnO1xuICAgIGZpbHRlckNvbnRlbnQuY3VycmVudCEuY2xpY2soKTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghcmVuZGVyZWQpIHtcbiAgICAgIHNldFJlbmRlcmVkKHRydWUpO1xuICAgICAgZ2V0RGF0YSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoZ2xvYmFsX2RhdGEuZXZlbnRGaWx0ZXJQYXJhbSA9PT0gJycgJiYgZmlsdGVycy5sZW5ndGggIT09IDApIHtcbiAgICAgICAgbGV0IGZpbHRlciA9IGZpbHRlcnMuZmluZCgoZmlsdGVyOiBJRmlsdGVyKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGZpbHRlci5pc19hY3RpdmU7XG4gICAgICAgIH0pO1xuICAgICAgICBzZXRBY3RpdmVGaWx0ZXJDb3B5KGZpbHRlcik7XG4gICAgICB9XG4gICAgfVxuICB9LCBbZ2xvYmFsX2RhdGEuZXZlbnRGaWx0ZXJQYXJhbSwgZ2xvYmFsX2RhdGEud2F0ZXJBdXRob3JpdHlJZF0pO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgY2xhc3NOYW1lPXtgZmlsdGVyLWNvbnRhaW5lciAke1xuICAgICAgICBmaWx0ZXJQb3B1cE9wZW4gPyAnJyA6ICdmaWx0ZXItY29udGFpbmVyLS1oaWRkZW4nXG4gICAgICB9YH1cbiAgICA+XG4gICAgICB7YWN0aXZlRmlsdGVyQ29weSAhPT0gdW5kZWZpbmVkICYmIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9eydmaWx0ZXItY29udGFpbmVyX19jb250ZW50J30gcmVmPXtmaWx0ZXJDb250ZW50fT5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2ZpbHRlci1jb250YWluZXJfX2NvbnRlbnRfX2hlYWRlcid9PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eyd0aXRsZSd9PlxuICAgICAgICAgICAgICA8aDQ+e2kxOG4udCgnZXZlbnRzX292ZXJ2aWV3LmZpbHRlci5maWx0ZXInKX08L2g0PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnYWN0aW9ucyd9PlxuICAgICAgICAgICAgICA8RHJvcGRvd24gY2xhc3NOYW1lPXsnYWN0aW9uJ30+XG4gICAgICAgICAgICAgICAgPERyb3Bkb3duLlRvZ2dsZSB2YXJpYW50PVwic3VjY2Vzc1wiIGlkPVwiZHJvcGRvd24tYmFzaWNcIj5cbiAgICAgICAgICAgICAgICAgIDxMaXN0SWNvblxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJwcmVzZXQtaWNvblwiXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjE0cHhcIlxuICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjE0cHhcIlxuICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzFkMWQxZFwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAge2FjdGl2ZUZpbHRlckNvcHkubmFtZX17JyAnfVxuICAgICAgICAgICAgICAgICAge2FjdGl2ZUZpbHRlckNvcHkuaWQgPT09IC0xID8gKFxuICAgICAgICAgICAgICAgICAgICA8Yj4gKHtpMThuLnQoJ2V2ZW50c19vdmVydmlldy5maWx0ZXIudW5zYXZlZCcpfSkgPC9iPlxuICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgJydcbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9Ecm9wZG93bi5Ub2dnbGU+XG5cbiAgICAgICAgICAgICAgICA8RmlsdGVyc0Ryb3BEb3duXG4gICAgICAgICAgICAgICAgICBmaWx0ZXJzPXtmaWx0ZXJzfVxuICAgICAgICAgICAgICAgICAgaGFuZGxlRmlsdGVyQ2hhbmdlPXtoYW5kbGVGaWx0ZXJDaGFuZ2V9XG4gICAgICAgICAgICAgICAgICBhY3RpdmVGaWx0ZXJDb3B5PXthY3RpdmVGaWx0ZXJDb3B5fVxuICAgICAgICAgICAgICAgICAgYWN0aXZhdGVGaWx0ZXI9e2FjdGl2YXRlRmlsdGVyfVxuICAgICAgICAgICAgICAgICAgZGVsZXRlRmlsdGVyPXtkZWxldGVGaWx0ZXJ9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9Ecm9wZG93bj5cblxuICAgICAgICAgICAgICA8RHJvcGRvd24gY2xhc3NOYW1lPXsnYWN0aW9uJ30+XG4gICAgICAgICAgICAgICAgPERyb3Bkb3duLlRvZ2dsZSB2YXJpYW50PVwic3VjY2Vzc1wiIGlkPVwiZHJvcGRvd24tYmFzaWNcIj5cbiAgICAgICAgICAgICAgICAgIDxTYXZlSWNvblxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJzYXZlLWljb25cIlxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxM3B4XCJcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxM3B4XCJcbiAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiMxZDFkMWRcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPntpMThuLnQoJ2V2ZW50c19vdmVydmlldy5maWx0ZXIuc2F2ZS5sYWJlbCcpfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duLlRvZ2dsZT5cblxuICAgICAgICAgICAgICAgIDxEcm9wZG93bi5NZW51PlxuICAgICAgICAgICAgICAgICAgPERyb3Bkb3duLkl0ZW1cbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2FjdGl2ZUZpbHRlckNvcHkuaWQgPT09IC0xID8gdHJ1ZSA6IGZhbHNlfVxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgc2F2ZUFjdGl2ZUZpbHRlcihhY3RpdmVGaWx0ZXJDb3B5KTtcbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge2kxOG4udCgnZXZlbnRzX292ZXJ2aWV3LmZpbHRlci5zYXZlLmV4aXN0aW5nJyl9XG4gICAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duLkl0ZW0+XG4gICAgICAgICAgICAgICAgICA8RHJvcGRvd24gY2xhc3NOYW1lPXsnYWN0aW9uIGFjdGlvbi0tc2F2ZSd9PlxuICAgICAgICAgICAgICAgICAgICA8RHJvcGRvd24uVG9nZ2xlIHZhcmlhbnQ9XCJzdWNjZXNzXCIgaWQ9XCJkcm9wZG93bi1iYXNpY1wiPlxuICAgICAgICAgICAgICAgICAgICAgIHtpMThuLnQoJ2V2ZW50c19vdmVydmlldy5maWx0ZXIuc2F2ZS5uZXcnKX1cbiAgICAgICAgICAgICAgICAgICAgPC9Ecm9wZG93bi5Ub2dnbGU+XG5cbiAgICAgICAgICAgICAgICAgICAgPERyb3Bkb3duLk1lbnU+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eyduZXctZmlsdGVyLXBvcHVwJ30+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybUNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e2kxOG4udChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXZlbnRzX292ZXJ2aWV3LmZpbHRlci5zYXZlLmZpZWxkX3BsYWNlaG9sZGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIk5hbWUgdGhpcyBmaWx0ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWRlc2NyaWJlZGJ5PVwiYmFzaWMtYWRkb24yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmPXtuYW1lSW5wdXR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9Gb2N1cz17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUNyZWF0aW9uQ2xpY2soKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cInN1Y2Nlc3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7aTE4bi50KCdkZXZpY2VfaGVhbHRoX3N0YXR1cy5vaycpfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvRHJvcGRvd24uTWVudT5cbiAgICAgICAgICAgICAgICAgIDwvRHJvcGRvd24+XG4gICAgICAgICAgICAgICAgPC9Ecm9wZG93bi5NZW51PlxuICAgICAgICAgICAgICA8L0Ryb3Bkb3duPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2ZpbHRlci1jb250YWluZXJfX2NvbnRlbnRfX2JvZHknfT5cbiAgICAgICAgICAgIDxGaWx0ZXJcbiAgICAgICAgICAgICAgc2V0QWN0aXZlRmlsdGVyQ29weT17c2V0QWN0aXZlRmlsdGVyQ29weX1cbiAgICAgICAgICAgICAgYWN0aXZlRmlsdGVyQ29weT17YWN0aXZlRmlsdGVyQ29weX1cbiAgICAgICAgICAgICAgYXZhaWxhYmxlRmlsdGVySXRlbXM9e2F2YWlsYWJsZUZpbHRlckl0ZW1zfVxuICAgICAgICAgICAgICBwYXJzZVNlbGVjdGVkSXRlbXM9e3BhcnNlU2VsZWN0ZWRJdGVtc31cbiAgICAgICAgICAgICAgYXBwbHlGaWx0ZXI9e2FwcGx5RmlsdGVyfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuY29uc3QgY29ubmVjdG9yID0gY29ubmVjdChtYXBTdGF0ZVRvUHJvcHMpO1xuZXhwb3J0IGRlZmF1bHQgY29ubmVjdG9yKEZpbHRlckNvbnRhaW5lcik7XG4iXX0=
@@ -135,6 +135,18 @@ var FilterItem = function FilterItem(props) {
135
135
 
136
136
  case 'SamplingFilterItem':
137
137
  return _i18n.default.t("events_overview.filter.samplings_options.".concat(option));
138
+
139
+ case 'LabFilterItem':
140
+ return displayNameForObjectTypedOptions(filterItem, option, forOuterDisplay);
141
+
142
+ case 'SamplingStatusFilterItem':
143
+ return _i18n.default.t("events_overview.filter.samplings_status.".concat(option));
144
+
145
+ case 'SamplingIdFilterItem':
146
+ return displayNameForObjectTypedOptions(filterItem, option, forOuterDisplay);
147
+
148
+ case 'SiteFilterItem':
149
+ return displayNameForObjectTypedOptions(filterItem, option, forOuterDisplay);
138
150
  }
139
151
  };
140
152
 
@@ -214,4 +226,4 @@ var FilterItem = function FilterItem(props) {
214
226
 
215
227
  var _default = FilterItem;
216
228
  exports.default = _default;
217
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9wYWdlcy9FdmVudHNQYWdlL2V2ZW50cy9ldmVudHNfbGlzdC9GaWx0ZXIvRmlsdGVySXRlbS50c3giXSwibmFtZXMiOlsiRmlsdGVySXRlbSIsInByb3BzIiwiZmlsdGVyX2l0ZW0iLCJwYXJzZVNlbGVjdGVkSXRlbXMiLCJhY3RpdmVGaWx0ZXJDb3B5Iiwic2V0QWN0aXZlRmlsdGVyQ29weSIsImF2YWlsYWJsZUZpbHRlckl0ZW1zIiwic2hvd0ZpbHRlckl0ZW1PcHRpb25zUG9wdXAiLCJzZXRTaG93RmlsdGVySXRlbU9wdGlvbnNQb3B1cCIsImhhbmRsZUZpbHRlckl0ZW1DbGljayIsImZpbHRlckl0ZW0iLCJzaG93IiwiZmlsdGVySXRlbUlkIiwiaWQiLCJyZW1vdmVGaWx0ZXJJdGVtIiwidW5kZWZpbmVkIiwiaW5kZXgiLCJmaWx0ZXJfaXRlbXMiLCJpbmRleE9mIiwiZmluZCIsIml0ZW0iLCJzcGxpY2UiLCJhY3RpdmVGaWx0ZXJEdXBsaWNhdGUiLCJPYmplY3QiLCJhc3NpZ24iLCJoYW5kbGVDaGFuZ2UiLCJzZWxlY3RlZCIsImFjdGl2ZUZpbHRlciIsInNlbGVjdGVkT3B0aW9ucyIsImxlbmd0aCIsImZvckVhY2giLCJzZWxlY3Rpb24iLCJwdXNoIiwib3JpZ2luYWwiLCJzZWxlY3RlZF9vcHRpb25zIiwiaGFuZGxlU2luZ2xlU2VsZWN0aW9uIiwiY3VycmVudFRhcmdldCIsImN1c3RvbVZhbHVlIiwic2VsZWN0ZWRWYWx1ZSIsImNoaWxkcmVuIiwidmFsdWUiLCJzdHJpcERhbWFnZVR5cGUiLCJzdHJpbmciLCJ0b0xvd2VyQ2FzZSIsInJlcGxhY2UiLCJjYW1lbFRvU25ha2VDYXNlIiwic3RyIiwic2xpY2UiLCJsZXR0ZXIiLCJkaXNwbGF5TmFtZUZvck9iamVjdFR5cGVkT3B0aW9ucyIsIm9wdGlvbiIsImZvck91dGVyRGlzcGxheSIsImF2YWlsYWJsZV9vcHRpb25zIiwiZiIsIm5hbWUiLCJ0cmFuc2xhdGVGaWx0ZXJJdGVtT3B0aW9uTGFiZWwiLCJ0eXBlIiwiaTE4biIsInQiLCJ0cmFuc2xhdGVGaWx0ZXJJdGVtVHlwZSIsImZpbHRlckl0ZW1UeXBlIiwiZ2V0U2VsZWN0aW9ucyIsInNlbGVjdGlvbnMiLCJtYXAiLCJtYXRjaEZpbHRlckl0ZW0iLCJhdmFpbGFibGVGaWx0ZXJJdGVtIiwib3B0aW9ucyIsImZhVGltZXMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBR0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7OztBQWtCQSxJQUFNQSxVQUE0QixHQUFHLFNBQS9CQSxVQUErQixDQUFDQyxLQUFELEVBQVc7QUFDOUMsTUFDRUMsV0FERixHQVFJRCxLQVJKLENBQ0VDLFdBREY7QUFBQSxNQUVFQyxrQkFGRixHQVFJRixLQVJKLENBRUVFLGtCQUZGO0FBQUEsTUFHRUMsZ0JBSEYsR0FRSUgsS0FSSixDQUdFRyxnQkFIRjtBQUFBLE1BSUVDLG1CQUpGLEdBUUlKLEtBUkosQ0FJRUksbUJBSkY7QUFBQSxNQUtFQyxvQkFMRixHQVFJTCxLQVJKLENBS0VLLG9CQUxGO0FBQUEsTUFNRUMsMEJBTkYsR0FRSU4sS0FSSixDQU1FTSwwQkFORjtBQUFBLE1BT0VDLDZCQVBGLEdBUUlQLEtBUkosQ0FPRU8sNkJBUEY7O0FBU0EsTUFBTUMscUJBQXFCLEdBQUcsU0FBeEJBLHFCQUF3QixDQUFDQyxVQUFELEVBQXFCO0FBQ2pELFFBQ0UsQ0FBQ0gsMEJBQTBCLENBQUNJLElBQTVCLElBQ0FKLDBCQUEwQixDQUFDSyxZQUEzQixLQUE0Q0YsVUFBVSxDQUFDRyxFQUZ6RCxFQUdFO0FBQ0FMLE1BQUFBLDZCQUE2QixDQUFDO0FBQzVCSSxRQUFBQSxZQUFZLEVBQUVGLFVBQVUsQ0FBQ0csRUFERztBQUU1QkYsUUFBQUEsSUFBSSxFQUFFO0FBRnNCLE9BQUQsQ0FBN0I7QUFJRDtBQUNGLEdBVkQ7O0FBWUEsTUFBTUcsZ0JBQWdCLEdBQUcsU0FBbkJBLGdCQUFtQixDQUFDSixVQUFELEVBQTZC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Q0FBYixDQUErQzZELEdBQS9DLENBQ0MsVUFBQ2hDLFNBQUQsRUFBNEI7QUFDMUIsV0FBT0EsU0FBUDtBQUNELEdBSEYsQ0FESCxDQUxGLENBREYsZUFlRTtBQUFHLElBQUEsT0FBTyxFQUFFO0FBQUEsYUFBTWpCLGdCQUFnQixDQUFDWixXQUFELENBQXRCO0FBQUE7QUFBWixrQkFDRSw2QkFBQyxpQ0FBRDtBQUFpQixJQUFBLElBQUksRUFBRWlFO0FBQXZCLElBREYsQ0FmRixFQWtCRzVELDBCQUEwQixDQUFDSyxZQUEzQixLQUE0Q1YsV0FBVyxDQUFDVyxFQUF4RCxJQUNDTiwwQkFERCxpQkFFRyw2QkFBQyx3QkFBRDtBQUNFLElBQUEsa0JBQWtCLEVBQUVKLGtCQUR0QjtBQUVFLElBQUEsVUFBVSxFQUFFRCxXQUZkO0FBR0UsSUFBQSxnQkFBZ0IsRUFBRUUsZ0JBSHBCO0FBSUUsSUFBQSw2QkFBNkIsRUFBRUksNkJBSmpDO0FBS0UsSUFBQSwwQkFBMEIsRUFBRUQsMEJBTDlCO0FBTUUsSUFBQSxxQkFBcUIsRUFBRTRCLHFCQU56QjtBQU9FLElBQUEsOEJBQThCLEVBQUVvQiw4QkFQbEM7QUFRRSxJQUFBLFlBQVksRUFBRTlCO0FBUmhCLElBcEJOLENBREY7QUFrQ0QsQ0FsT0Q7O2VBb09lekIsVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZhVGltZXMgfSBmcm9tICdAZm9ydGF3ZXNvbWUvZnJlZS1zb2xpZC1zdmctaWNvbnMnO1xuaW1wb3J0IHsgRm9udEF3ZXNvbWVJY29uIH0gZnJvbSAnQGZvcnRhd2Vzb21lL3JlYWN0LWZvbnRhd2Vzb21lJztcbmltcG9ydCBSZWFjdCwgeyBGb3JtRXZlbnQsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IElGaWx0ZXIgfSBmcm9tICdzcmMvc3RvcmUvZmlsdGVycy9JRmlsdGVyJztcbmltcG9ydCB7IElGaWx0ZXJJdGVtIH0gZnJvbSAnc3JjL3N0b3JlL2ZpbHRlcnMvSUZpbHRlckl0ZW0nO1xuaW1wb3J0IGkxOG4gZnJvbSAnc3JjL3V0aWxpdGllcy9pMThuJztcbmltcG9ydCAnLi4vLi4vRXZlbnRzU3R5bGUuc2Nzcyc7XG5pbXBvcnQgT3B0aW9uc0Ryb3BEb3duIGZyb20gJy4vT3B0aW9uc0Ryb3BEb3duJztcbmltcG9ydCB7IGZvcm1hdFRpbWVTZWxlY3Rpb24gfSBmcm9tICdzcmMvY29tcG9uZW50cy9UaW1lUmFuZ2VTZWxlY3Rvci9UaW1lUmFuZ2VIZWxwZXInO1xuXG50eXBlIElQcm9wcyA9IHtcbiAgZmlsdGVyX2l0ZW06IElGaWx0ZXJJdGVtO1xuICBwYXJzZVNlbGVjdGVkSXRlbXM6IEZ1bmN0aW9uO1xuICBhY3RpdmVGaWx0ZXJDb3B5OiBhbnk7XG4gIHNldEFjdGl2ZUZpbHRlckNvcHk6IFJlYWN0LkRpc3BhdGNoPGFueT47XG4gIGF2YWlsYWJsZUZpbHRlckl0ZW1zOiBhbnk7XG4gIHNob3dGaWx0ZXJJdGVtT3B0aW9uc1BvcHVwOiBhbnk7XG4gIHNldFNob3dGaWx0ZXJJdGVtT3B0aW9uc1BvcHVwOiBhbnk7XG59O1xuXG50eXBlIElDdXN0b21WYWx1ZSA9IHtcbiAgY3VzdG9tVmFsdWU6IHN0cmluZztcbn07XG5cbnR5cGUgSVNlbGVjdGlvbkV2ZW50ID0gSUN1c3RvbVZhbHVlIHwgRm9ybUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+O1xuXG5jb25zdCBGaWx0ZXJJdGVtOiBSZWFjdC5GQzxJUHJvcHM+ID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBmaWx0ZXJfaXRlbSxcbiAgICBwYXJzZVNlbGVjdGVkSXRlbXMsXG4gICAgYWN0aXZlRmlsdGVyQ29weSxcbiAgICBzZXRBY3RpdmVGaWx0ZXJDb3B5LFxuICAgIGF2YWlsYWJsZUZpbHRlckl0ZW1zLFxuICAgIHNob3dGaWx0ZXJJdGVtT3B0aW9uc1BvcHVwLFxuICAgIHNldFNob3dGaWx0ZXJJdGVtT3B0aW9uc1BvcHVwLFxuICB9ID0gcHJvcHM7XG4gIGNvbnN0IGhhbmRsZUZpbHRlckl0ZW1DbGljayA9IChmaWx0ZXJJdGVtOiBhbnkpID0+IHtcbiAgICBpZiAoXG4gICAgICAhc2hvd0ZpbHRlckl0ZW1PcHRpb25zUG9wdXAuc2hvdyAmJlxuICAgICAgc2hvd0ZpbHRlckl0ZW1PcHRpb25zUG9wdXAuZmlsdGVySXRlbUlkICE9PSBmaWx0ZXJJdGVtLmlkXG4gICAgKSB7XG4gICAgICBzZXRTaG93RmlsdGVySXRlbU9wdGlvbnNQb3B1cCh7XG4gICAgICAgIGZpbHRlckl0ZW1JZDogZmlsdGVySXRlbS5pZCxcbiAgICAgICAgc2hvdzogdHJ1ZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCByZW1vdmVGaWx0ZXJJdGVtID0gKGZpbHRlckl0ZW06IElGaWx0ZXJJdGVtKSA9PiB7XG4gICAgaWYgKGFjdGl2ZUZpbHRlckNvcHkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgbGV0IGluZGV4ID0gYWN0aXZlRmlsdGVyQ29weS5maWx0ZXJfaXRlbXMuaW5kZXhPZihcbiAgICAgICAgYWN0aXZlRmlsdGVyQ29weS5maWx0ZXJfaXRlbXMuZmluZChcbiAgICAgICAgICAoaXRlbTogSUZpbHRlckl0ZW0pID0+IGl0ZW0uaWQgPT09IGZpbHRlckl0ZW0uaWQsXG4gICAgICAgICksXG4gICAgICApO1xuICAgICAgYWN0aXZlRmlsdGVyQ29weS5maWx0ZXJfaXRlbXMuc3BsaWNlKGluZGV4LCAxKTtcblxuICAgICAgbGV0IGFjdGl2ZUZpbHRlckR1cGxpY2F0ZSA9IE9iamVjdC5hc3NpZ24oe30sIGFjdGl2ZUZpbHRlckNvcHkpO1xuICAgICAgc2V0QWN0aXZlRmlsdGVyQ29weShhY3RpdmVGaWx0ZXJEdXBsaWNhdGUpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYW5kbGVDaGFuZ2UgPSAoXG4gICAgc2VsZWN0ZWQ6IGFueSxcbiAgICBmaWx0ZXJJdGVtOiBJRmlsdGVySXRlbSxcbiAgICBhY3RpdmVGaWx0ZXI6IElGaWx0ZXIsXG4gICkgPT4ge1xuICAgIGxldCBzZWxlY3RlZE9wdGlvbnM6IGFueVtdID0gW107XG5cbiAgICBpZiAoc2VsZWN0ZWQubGVuZ3RoICE9PSAwKSB7XG4gICAgICBzZWxlY3RlZC5mb3JFYWNoKChzZWxlY3Rpb246IGFueSkgPT4ge1xuICAgICAgICBzZWxlY3RlZE9wdGlvbnMucHVzaChzZWxlY3Rpb24ub3JpZ2luYWwpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgZmlsdGVySXRlbS5zZWxlY3RlZF9vcHRpb25zID0gc2VsZWN0ZWRPcHRpb25zO1xuICAgIGxldCBhY3RpdmVGaWx0ZXJDb3B5ID0gT2JqZWN0LmFzc2lnbih7fSwgYWN0aXZlRmlsdGVyKTtcbiAgICBzZXRBY3RpdmVGaWx0ZXJDb3B5KGFjdGl2ZUZpbHRlckNvcHkpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVNpbmdsZVNlbGVjdGlvbiA9IChcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgeyBjdXJyZW50VGFyZ2V0ID0gJycsIGN1c3RvbVZhbHVlID0gJycgfTogSVNlbGVjdGlvbkV2ZW50LFxuICAgIGZpbHRlckl0ZW06IElGaWx0ZXJJdGVtLFxuICAgIGFjdGl2ZUZpbHRlcjogSUZpbHRlcixcbiAgKSA9PiB7XG4gICAgbGV0IHNlbGVjdGVkT3B0aW9uczogYW55W10gPSBbXTtcbiAgICBjb25zdCBzZWxlY3RlZFZhbHVlID0gY3VzdG9tVmFsdWUgfHwgY3VycmVudFRhcmdldC5jaGlsZHJlblswXS52YWx1ZTtcbiAgICBzZWxlY3RlZE9wdGlvbnMucHVzaChzZWxlY3RlZFZhbHVlKTtcbiAgICBmaWx0ZXJJdGVtLnNlbGVjdGVkX29wdGlvbnMgPSBzZWxlY3RlZE9wdGlvbnM7XG5cbiAgICBsZXQgYWN0aXZlRmlsdGVyQ29weSA9IE9iamVjdC5hc3NpZ24oe30sIGFjdGl2ZUZpbHRlcik7XG4gICAgc2V0QWN0aXZlRmlsdGVyQ29weShhY3RpdmVGaWx0ZXJDb3B5KTtcbiAgfTtcblxuICBjb25zdCBzdHJpcERhbWFnZVR5cGUgPSAoc3RyaW5nOiBzdHJpbmcpID0+IHtcbiAgICByZXR1cm4gc3RyaW5nLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvWycgJy8mXS9nLCAnLScpO1xuICB9O1xuXG4gIGNvbnN0IGNhbWVsVG9TbmFrZUNhc2UgPSAoc3RyOiBzdHJpbmcpID0+XG4gICAgc3RyWzBdLnRvTG93ZXJDYXNlKCkgK1xuICAgIHN0clxuICAgICAgLnNsaWNlKDEsIHN0ci5sZW5ndGgpXG4gICAgICAucmVwbGFjZSgvW0EtWl0vZywgKGxldHRlcikgPT4gYF8ke2xldHRlci50b0xvd2VyQ2FzZSgpfWApO1xuICBjb25zdCBkaXNwbGF5TmFtZUZvck9iamVjdFR5cGVkT3B0aW9ucyA9IChcbiAgICBmaWx0ZXJJdGVtOiBJRmlsdGVySXRlbSxcbiAgICBvcHRpb246IGFueSxcbiAgICBmb3JPdXRlckRpc3BsYXk6IGJvb2xlYW4sXG4gICkgPT4ge1xuICAgIGxldCBpdGVtO1xuICAgIGlmIChmb3JPdXRlckRpc3BsYXkgJiYgZmlsdGVySXRlbS5hdmFpbGFibGVfb3B0aW9ucyAhPT0gbnVsbCkge1xuICAgICAgaXRlbSA9IGZpbHRlckl0ZW0uYXZhaWxhYmxlX29wdGlvbnMuZmluZCgoZikgPT4gZi5pZCA9PT0gb3B0aW9uKTtcbiAgICAgIGl0ZW0gIT09IHVuZGVmaW5lZCAmJiAoaXRlbSA9IGl0ZW0ubmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGl0ZW0gPSBvcHRpb247XG4gICAgfVxuXG4gICAgcmV0dXJuIGl0ZW07XG4gIH07XG4gIGNvbnN0IHRyYW5zbGF0ZUZpbHRlckl0ZW1PcHRpb25MYWJlbCA9IChcbiAgICBmaWx0ZXJJdGVtOiBJRmlsdGVySXRlbSxcbiAgICBvcHRpb246IHN0cmluZyxcbiAgICBmb3JPdXRlckRpc3BsYXkgPSBmYWxzZSxcbiAgKSA9PiB7XG4gICAgc3dpdGNoIChmaWx0ZXJJdGVtLnR5cGUpIHtcbiAgICAgIGNhc2UgJ0ludGVyZXN0UG9pbnRGaWx0ZXJJdGVtJzpcbiAgICAgICAgcmV0dXJuIGRpc3BsYXlOYW1lRm9yT2JqZWN0VHlwZWRPcHRpb25zKFxuICAgICAgICAgIGZpbHRlckl0ZW0sXG4gICAgICAgICAgb3B0aW9uLFxuICAgICAgICAgIGZvck91dGVyRGlzcGxheSxcbiAgICAgICAgKTtcbiAgICAgIGNhc2UgJ0FyZWFGaWx0ZXJJdGVtJzpcbiAgICAgICAgcmV0dXJuIGRpc3BsYXlOYW1lRm9yT2JqZWN0VHlwZWRPcHRpb25zKFxuICAgICAgICAgIGZpbHRlckl0ZW0sXG4gICAgICAgICAgb3B0aW9uLFxuICAgICAgICAgIGZvck91dGVyRGlzcGxheSxcbiAgICAgICAgKTtcbiAgICAgIGNhc2UgJ1NlY3RvckZpbHRlckl0ZW0nOlxuICAgICAgICByZXR1cm4gZGlzcGxheU5hbWVGb3JPYmplY3RUeXBlZE9wdGlvbnMoXG4gICAgICAgICAgZmlsdGVySXRlbSxcbiAgICAgICAgICBvcHRpb24sXG4gICAgICAgICAgZm9yT3V0ZXJEaXNwbGF5LFxuICAgICAgICApO1xuICAgICAgY2FzZSAnU2V2ZXJpdHlGaWx0ZXJJdGVtJzpcbiAgICAgICAgcmV0dXJuIGkxOG4udChgZXZlbnRzX292ZXJ2aWV3LnNldmVyaXRpZXMuJHtvcHRpb259YCk7XG4gICAgICBjYXNlICdEYW1hZ2VUeXBlRmlsdGVySXRlbSc6XG4gICAgICAgIHJldHVybiBpMThuLnQoXG4gICAgICAgICAgYGV2ZW50c19vdmVydmlldy5kYW1hZ2VfdHlwZXMuJHtzdHJpcERhbWFnZVR5cGUob3B0aW9uKX1gLFxuICAgICAgICApO1xuICAgICAgY2FzZSAnVGltZUZpbHRlckl0ZW0nOlxuICAgICAgICByZXR1cm4gZm9ybWF0VGltZVNlbGVjdGlvbihvcHRpb24pO1xuICAgICAgY2FzZSAnU3RhdHVzRmlsdGVySXRlbSc6XG4gICAgICAgIHJldHVybiBpMThuLnQoYGV2ZW50c19vdmVydmlldy5maWx0ZXIuc3RhdHVzLiR7b3B0aW9ufWApO1xuICAgICAgY2FzZSAnU2FtcGxpbmdGaWx0ZXJJdGVtJzpcbiAgICAgICAgcmV0dXJuIGkxOG4udChgZXZlbnRzX292ZXJ2aWV3LmZpbHRlci5zYW1wbGluZ3Nfb3B0aW9ucy4ke29wdGlvbn1gKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgdHJhbnNsYXRlRmlsdGVySXRlbVR5cGUgPSAoZmlsdGVySXRlbVR5cGU6IHN0cmluZykgPT4ge1xuICAgIHJldHVybiBpMThuLnQoXG4gICAgICBgZXZlbnRzX292ZXJ2aWV3LmZpbHRlci5maWx0ZXJfdHlwZXMuJHtjYW1lbFRvU25ha2VDYXNlKGZpbHRlckl0ZW1UeXBlKX1gLFxuICAgICk7XG4gIH07XG5cbiAgY29uc3QgZ2V0U2VsZWN0aW9ucyA9IChzZWxlY3RlZF9vcHRpb25zOiBhbnkpID0+IHtcbiAgICBsZXQgc2VsZWN0aW9uczogYW55W10gPSBbXTtcbiAgICBpZiAoc2VsZWN0ZWRfb3B0aW9ucy5sZW5ndGggPiAxKSB7XG4gICAgICBwYXJzZVNlbGVjdGVkSXRlbXMoZmlsdGVyX2l0ZW0pXG4gICAgICAgIC5zbGljZSgwLCAxKVxuICAgICAgICAubWFwKChzZWxlY3Rpb246IHN0cmluZykgPT5cbiAgICAgICAgICBzZWxlY3Rpb25zLnB1c2goXG4gICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXsnZmlsdGVyX2l0ZW1fX2NvbnRlbnRfX3NlbGVjdGlvbnNfX3NlbGVjdGlvbid9XG4gICAgICAgICAgICAgIGtleT17c2VsZWN0aW9ufVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dHJhbnNsYXRlRmlsdGVySXRlbU9wdGlvbkxhYmVsKGZpbHRlcl9pdGVtLCBzZWxlY3Rpb24sIHRydWUpfVxuICAgICAgICAgICAgPC9saT4sXG4gICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICAgIHNlbGVjdGlvbnMucHVzaChcbiAgICAgICAgPHNwYW4ga2V5PXsnTU9SRSd9PntgICgke3NlbGVjdGVkX29wdGlvbnMubGVuZ3RofSlgfTwvc3Bhbj4sXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXJzZVNlbGVjdGVkSXRlbXMoZmlsdGVyX2l0ZW0pLm1hcCgoc2VsZWN0aW9uOiBzdHJpbmcpID0+XG4gICAgICAgIHNlbGVjdGlvbnMucHVzaChcbiAgICAgICAgICA8bGlcbiAgICAgICAgICAgIGNsYXNzTmFtZT17J2ZpbHRlcl9pdGVtX19jb250ZW50X19zZWxlY3Rpb25zX19zZWxlY3Rpb24nfVxuICAgICAgICAgICAga2V5PXtzZWxlY3Rpb259XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3RyYW5zbGF0ZUZpbHRlckl0ZW1PcHRpb25MYWJlbChmaWx0ZXJfaXRlbSwgc2VsZWN0aW9uLCB0cnVlKX1cbiAgICAgICAgICA8L2xpPixcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNlbGVjdGlvbnM7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoZmlsdGVyX2l0ZW0uc2VsZWN0ZWRfb3B0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgIHNldFNob3dGaWx0ZXJJdGVtT3B0aW9uc1BvcHVwKHtcbiAgICAgICAgZmlsdGVySXRlbUlkOiBmaWx0ZXJfaXRlbS5pZCxcbiAgICAgICAgc2hvdzogdHJ1ZSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChmaWx0ZXJfaXRlbS5hdmFpbGFibGVfb3B0aW9ucyA9PT0gbnVsbCkge1xuICAgICAgbGV0IG1hdGNoRmlsdGVySXRlbSA9IGF2YWlsYWJsZUZpbHRlckl0ZW1zLmZpbmQoXG4gICAgICAgIChhdmFpbGFibGVGaWx0ZXJJdGVtOiBhbnkpID0+XG4gICAgICAgICAgYXZhaWxhYmxlRmlsdGVySXRlbS50eXBlID09PSBmaWx0ZXJfaXRlbS50eXBlLFxuICAgICAgKTtcblxuICAgICAgaWYgKG1hdGNoRmlsdGVySXRlbSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGZpbHRlcl9pdGVtLmF2YWlsYWJsZV9vcHRpb25zID0gbWF0Y2hGaWx0ZXJJdGVtLm9wdGlvbnM7XG4gICAgICB9XG4gICAgfVxuICB9LCBbZmlsdGVyX2l0ZW1dKTtcblxuICByZXR1cm4gKFxuICAgIDxSZWFjdC5GcmFnbWVudD5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPXsnZmlsdGVyX2l0ZW1fX2NvbnRlbnQnfVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVGaWx0ZXJJdGVtQ2xpY2soZmlsdGVyX2l0ZW0pfVxuICAgICAgPlxuICAgICAgICA8c3Bhbj57dHJhbnNsYXRlRmlsdGVySXRlbVR5cGUoZmlsdGVyX2l0ZW0udHlwZSl9PC9zcGFuPlxuICAgICAgICA8dWwgY2xhc3NOYW1lPXsnZmlsdGVyX2l0ZW1fX2NvbnRlbnRfX3NlbGVjdGlvbnMnfT5cbiAgICAgICAgICB7Z2V0U2VsZWN0aW9ucyhwYXJzZVNlbGVjdGVkSXRlbXMoZmlsdGVyX2l0ZW0pKS5tYXAoXG4gICAgICAgICAgICAoc2VsZWN0aW9uOiBIVE1MRWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gc2VsZWN0aW9uO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICApfVxuICAgICAgICA8L3VsPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxhIG9uQ2xpY2s9eygpID0+IHJlbW92ZUZpbHRlckl0ZW0oZmlsdGVyX2l0ZW0pfT5cbiAgICAgICAgPEZvbnRBd2Vzb21lSWNvbiBpY29uPXtmYVRpbWVzfSAvPlxuICAgICAgPC9hPlxuICAgICAge3Nob3dGaWx0ZXJJdGVtT3B0aW9uc1BvcHVwLmZpbHRlckl0ZW1JZCA9PT0gZmlsdGVyX2l0ZW0uaWQgJiZcbiAgICAgICAgc2hvd0ZpbHRlckl0ZW1PcHRpb25zUG9wdXAgJiYgKFxuICAgICAgICAgIDxPcHRpb25zRHJvcERvd25cbiAgICAgICAgICAgIHBhcnNlU2VsZWN0ZWRJdGVtcz17cGFyc2VTZWxlY3RlZEl0ZW1zfVxuICAgICAgICAgICAgZmlsdGVySXRlbT17ZmlsdGVyX2l0ZW19XG4gICAgICAgICAgICBhY3RpdmVGaWx0ZXJDb3B5PXthY3RpdmVGaWx0ZXJDb3B5fVxuICAgICAgICAgICAgc2V0U2hvd0ZpbHRlckl0ZW1PcHRpb25zUG9wdXA9e3NldFNob3dGaWx0ZXJJdGVtT3B0aW9uc1BvcHVwfVxuICAgICAgICAgICAgc2hvd0ZpbHRlckl0ZW1PcHRpb25zUG9wdXA9e3Nob3dGaWx0ZXJJdGVtT3B0aW9uc1BvcHVwfVxuICAgICAgICAgICAgaGFuZGxlU2luZ2xlU2VsZWN0aW9uPXtoYW5kbGVTaW5nbGVTZWxlY3Rpb259XG4gICAgICAgICAgICB0cmFuc2xhdGVGaWx0ZXJJdGVtT3B0aW9uTGFiZWw9e3RyYW5zbGF0ZUZpbHRlckl0ZW1PcHRpb25MYWJlbH1cbiAgICAgICAgICAgIGhhbmRsZUNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgPC9SZWFjdC5GcmFnbWVudD5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEZpbHRlckl0ZW07XG4iXX0=
229
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9wYWdlcy9FdmVudHNQYWdlL2V2ZW50cy9ldmVudHNfbGlzdC9GaWx0ZXIvRmlsdGVySXRlbS50c3giXSwibmFtZXMiOlsiRmlsdGVySXRlbSIsInByb3BzIiwiZmlsdGVyX2l0ZW0iLCJwYXJzZVNlbGVjdGVkSXRlbXMiLCJhY3RpdmVGaWx0ZXJDb3B5Iiwic2V0QWN0aXZlRmlsdGVyQ29weSIsImF2YWlsYWJsZUZpbHRlckl0ZW1zIiwic2hvd0ZpbHRlckl0ZW1PcHRpb25zUG9wdXAiLCJzZXRTaG93RmlsdGVySXRlbU9wdGlvbnNQb3B1cCIsImhhbmRsZUZpbHRlckl0ZW1DbGljayIsImZpbHRlckl0ZW0iLCJzaG93IiwiZmlsdGVySXRlbUlkIiwiaWQiLCJyZW1vdmVGaWx0ZXJJdGVtIiwidW5kZWZpbmVkIiwiaW5kZXgiLCJmaWx0ZXJfaXRlbXMiLCJpbmRleE9mIiwiZmluZCIsIml0ZW0iLCJzcGxpY2UiLCJhY3RpdmVGaWx0ZXJEdXBsaWNhdGUiLCJPYmplY3QiLCJhc3NpZ24iLCJoYW5kbGVDaGFuZ2UiLCJzZWxlY3RlZCIsImFjdGl2ZUZpbHRlciIsInNlbGVjdGVkT3B0aW9ucyIsImxlbmd0aCIsImZvckVhY2giLCJzZWxlY3Rpb24iLCJwdXNoIiwib3JpZ2luYWwiLCJzZWxlY3RlZF9vcHRpb25zIiwiaGFuZGxlU2luZ2xlU2VsZWN0aW9uIiwiY3VycmVudFRhcmdldCIsImN1c3RvbVZhbHVlIiwic2VsZWN0ZWRWYWx1ZSIsImNoaWxkcmVuIiwidmFsdWUiLCJzdHJpcERhbWFnZVR5cGUiLCJzdHJpbmciLCJ0b0xvd2VyQ2FzZSIsInJlcGxhY2UiLCJjYW1lbFRvU25ha2VDYXNlIiwic3RyIiwic2xpY2UiLCJsZXR0ZXIiLCJkaXNwbGF5TmFtZUZvck9iamVjdFR5cGVkT3B0aW9ucyIsIm9wdGlvbiIsImZvck91dGVyRGlzcGxheSIsImF2YWlsYWJsZV9vcHRpb25zIiwiZiIsIm5hbWUiLCJ0cmFuc2xhdGVGaWx0ZXJJdGVtT3B0aW9uTGFiZWwiLCJ0eXBlIiwiaTE4biIsInQiLCJ0cmFuc2xhdGVGaWx0ZXJJdGVtVHlwZSIsImZpbHRlckl0ZW1UeXBlIiwiZ2V0U2VsZWN0aW9ucyIsInNlbGVjdGlvbnMiLCJtYXAiLCJtYXRjaEZpbHRlckl0ZW0iLCJhdmFpbGFibGVGaWx0ZXJJdGVtIiwib3B0aW9ucyIsImZhVGltZXMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBR0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7OztBQWtCQSxJQUFNQSxVQUE0QixHQUFHLFNBQS9CQSxVQUErQixDQUFDQyxLQUFELEVBQVc7QUFDOUMsTUFDRUMsV0FERixHQVFJRCxLQVJKLENBQ0VDLFdBREY7QUFBQSxNQUVFQyxrQkFGRixHQVFJRixLQVJKLENBRUVFLGtCQUZGO0FBQUEsTUFHRUMsZ0JBSEYsR0FRSUgsS0FSSixDQUdFRyxnQkFIRjtBQUFBLE1BSUVDLG1CQUpGLEdBUUlKLEtBUkosQ0FJRUksbUJBSkY7QUFBQSxNQUtFQyxvQkFMRixHQVFJTCxLQVJKLENBS0VLLG9CQUxGO0FBQUEsTUFNRUMsMEJBTkYsR0FRSU4sS0FSSixDQU1FTSwwQkFORjtBQUFBLE1BT0VDLDZCQVBGLEdBUUlQLEtBUkosQ0FPRU8sNkJBUEY7O0FBU0EsTUFBTUMscUJBQXFCLEdBQUcsU0FBeEJBLHFCQUF3QixDQUFDQyxVQUFELEVBQXFCO0FBQ2pELFFBQ0UsQ0FBQ0gsMEJBQTBCLENBQUNJLElBQTVCLElBQ0FKLDBCQUEwQixDQUFDSyxZQUEzQixLQUE0Q0YsVUFBVSxDQUFDRyxFQUZ6RCxFQUdFO0FBQ0FMLE1BQUFBLDZCQUE2QixDQUFDO0FBQzVCSSxRQUFBQSxZQUFZLEVBQUVGLFVBQVUsQ0FBQ0csRUFERztBQUU1QkYsUUFBQUEsSUFBSSxFQUFFO0FBRnNCLE9BQUQsQ0FBN0I7QUFJRDtBQUNGLEdBVkQ7O0FBWUEsTUFBTUcsZ0JBQWdCLEdBQUcsU0FBbkJBLGdCQUFtQixDQUFDSixVQUFELEVBQTZC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ZXMgfSBmcm9tICdAZm9ydGF3ZXNvbWUvZnJlZS1zb2xpZC1zdmctaWNvbnMnO1xuaW1wb3J0IHsgRm9udEF3ZXNvbWVJY29uIH0gZnJvbSAnQGZvcnRhd2Vzb21lL3JlYWN0LWZvbnRhd2Vzb21lJztcbmltcG9ydCBSZWFjdCwgeyBGb3JtRXZlbnQsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IElGaWx0ZXIgfSBmcm9tICdzcmMvc3RvcmUvZmlsdGVycy9JRmlsdGVyJztcbmltcG9ydCB7IElGaWx0ZXJJdGVtIH0gZnJvbSAnc3JjL3N0b3JlL2ZpbHRlcnMvSUZpbHRlckl0ZW0nO1xuaW1wb3J0IGkxOG4gZnJvbSAnc3JjL3V0aWxpdGllcy9pMThuJztcbmltcG9ydCAnLi4vLi4vRXZlbnRzU3R5bGUuc2Nzcyc7XG5pbXBvcnQgT3B0aW9uc0Ryb3BEb3duIGZyb20gJy4vT3B0aW9uc0Ryb3BEb3duJztcbmltcG9ydCB7IGZvcm1hdFRpbWVTZWxlY3Rpb24gfSBmcm9tICdzcmMvY29tcG9uZW50cy9UaW1lUmFuZ2VTZWxlY3Rvci9UaW1lUmFuZ2VIZWxwZXInO1xuXG50eXBlIElQcm9wcyA9IHtcbiAgZmlsdGVyX2l0ZW06IElGaWx0ZXJJdGVtO1xuICBwYXJzZVNlbGVjdGVkSXRlbXM6IEZ1bmN0aW9uO1xuICBhY3RpdmVGaWx0ZXJDb3B5OiBhbnk7XG4gIHNldEFjdGl2ZUZpbHRlckNvcHk6IFJlYWN0LkRpc3BhdGNoPGFueT47XG4gIGF2YWlsYWJsZUZpbHRlckl0ZW1zOiBhbnk7XG4gIHNob3dGaWx0ZXJJdGVtT3B0aW9uc1BvcHVwOiBhbnk7XG4gIHNldFNob3dGaWx0ZXJJdGVtT3B0aW9uc1BvcHVwOiBhbnk7XG59O1xuXG50eXBlIElDdXN0b21WYWx1ZSA9IHtcbiAgY3VzdG9tVmFsdWU6IHN0cmluZztcbn07XG5cbnR5cGUgSVNlbGVjdGlvbkV2ZW50ID0gSUN1c3RvbVZhbHVlIHwgRm9ybUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+O1xuXG5jb25zdCBGaWx0ZXJJdGVtOiBSZWFjdC5GQzxJUHJvcHM+ID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBmaWx0ZXJfaXRlbSxcbiAgICBwYXJzZVNlbGVjdGVkSXRlbXMsXG4gICAgYWN0aXZlRmlsdGVyQ29weSxcbiAgICBzZXRBY3RpdmVGaWx0ZXJDb3B5LFxuICAgIGF2YWlsYWJsZUZpbHRlckl0ZW1zLFxuICAgIHNob3dGaWx0ZXJJdGVtT3B0aW9uc1BvcHVwLFxuICAgIHNldFNob3dGaWx0ZXJJdGVtT3B0aW9uc1BvcHVwLFxuICB9ID0gcHJvcHM7XG4gIGNvbnN0IGhhbmRsZUZpbHRlckl0ZW1DbGljayA9IChmaWx0ZXJJdGVtOiBhbnkpID0+IHtcbiAgICBpZiAoXG4gICAgICAhc2hvd0ZpbHRlckl0ZW1PcHRpb25zUG9wdXAuc2hvdyAmJlxuICAgICAgc2hvd0ZpbHRlckl0ZW1PcHRpb25zUG9wdXAuZmlsdGVySXRlbUlkICE9PSBmaWx0ZXJJdGVtLmlkXG4gICAgKSB7XG4gICAgICBzZXRTaG93RmlsdGVySXRlbU9wdGlvbnNQb3B1cCh7XG4gICAgICAgIGZpbHRlckl0ZW1JZDogZmlsdGVySXRlbS5pZCxcbiAgICAgICAgc2hvdzogdHJ1ZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCByZW1vdmVGaWx0ZXJJdGVtID0gKGZpbHRlckl0ZW06IElGaWx0ZXJJdGVtKSA9PiB7XG4gICAgaWYgKGFjdGl2ZUZpbHRlckNvcHkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgbGV0IGluZGV4ID0gYWN0aXZlRmlsdGVyQ29weS5maWx0ZXJfaXRlbXMuaW5kZXhPZihcbiAgICAgICAgYWN0aXZlRmlsdGVyQ29weS5maWx0ZXJfaXRlbXMuZmluZChcbiAgICAgICAgICAoaXRlbTogSUZpbHRlckl0ZW0pID0+IGl0ZW0uaWQgPT09IGZpbHRlckl0ZW0uaWQsXG4gICAgICAgICksXG4gICAgICApO1xuICAgICAgYWN0aXZlRmlsdGVyQ29weS5maWx0ZXJfaXRlbXMuc3BsaWNlKGluZGV4LCAxKTtcblxuICAgICAgbGV0IGFjdGl2ZUZpbHRlckR1cGxpY2F0ZSA9IE9iamVjdC5hc3NpZ24oe30sIGFjdGl2ZUZpbHRlckNvcHkpO1xuICAgICAgc2V0QWN0aXZlRmlsdGVyQ29weShhY3RpdmVGaWx0ZXJEdXBsaWNhdGUpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYW5kbGVDaGFuZ2UgPSAoXG4gICAgc2VsZWN0ZWQ6IGFueSxcbiAgICBmaWx0ZXJJdGVtOiBJRmlsdGVySXRlbSxcbiAgICBhY3RpdmVGaWx0ZXI6IElGaWx0ZXIsXG4gICkgPT4ge1xuICAgIGxldCBzZWxlY3RlZE9wdGlvbnM6IGFueVtdID0gW107XG5cbiAgICBpZiAoc2VsZWN0ZWQubGVuZ3RoICE9PSAwKSB7XG4gICAgICBzZWxlY3RlZC5mb3JFYWNoKChzZWxlY3Rpb246IGFueSkgPT4ge1xuICAgICAgICBzZWxlY3RlZE9wdGlvbnMucHVzaChzZWxlY3Rpb24ub3JpZ2luYWwpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgZmlsdGVySXRlbS5zZWxlY3RlZF9vcHRpb25zID0gc2VsZWN0ZWRPcHRpb25zO1xuICAgIGxldCBhY3RpdmVGaWx0ZXJDb3B5ID0gT2JqZWN0LmFzc2lnbih7fSwgYWN0aXZlRmlsdGVyKTtcbiAgICBzZXRBY3RpdmVGaWx0ZXJDb3B5KGFjdGl2ZUZpbHRlckNvcHkpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVNpbmdsZVNlbGVjdGlvbiA9IChcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgeyBjdXJyZW50VGFyZ2V0ID0gJycsIGN1c3RvbVZhbHVlID0gJycgfTogSVNlbGVjdGlvbkV2ZW50LFxuICAgIGZpbHRlckl0ZW06IElGaWx0ZXJJdGVtLFxuICAgIGFjdGl2ZUZpbHRlcjogSUZpbHRlcixcbiAgKSA9PiB7XG4gICAgbGV0IHNlbGVjdGVkT3B0aW9uczogYW55W10gPSBbXTtcbiAgICBjb25zdCBzZWxlY3RlZFZhbHVlID0gY3VzdG9tVmFsdWUgfHwgY3VycmVudFRhcmdldC5jaGlsZHJlblswXS52YWx1ZTtcbiAgICBzZWxlY3RlZE9wdGlvbnMucHVzaChzZWxlY3RlZFZhbHVlKTtcbiAgICBmaWx0ZXJJdGVtLnNlbGVjdGVkX29wdGlvbnMgPSBzZWxlY3RlZE9wdGlvbnM7XG5cbiAgICBsZXQgYWN0aXZlRmlsdGVyQ29weSA9IE9iamVjdC5hc3NpZ24oe30sIGFjdGl2ZUZpbHRlcik7XG4gICAgc2V0QWN0aXZlRmlsdGVyQ29weShhY3RpdmVGaWx0ZXJDb3B5KTtcbiAgfTtcblxuICBjb25zdCBzdHJpcERhbWFnZVR5cGUgPSAoc3RyaW5nOiBzdHJpbmcpID0+IHtcbiAgICByZXR1cm4gc3RyaW5nLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvWycgJy8mXS9nLCAnLScpO1xuICB9O1xuXG4gIGNvbnN0IGNhbWVsVG9TbmFrZUNhc2UgPSAoc3RyOiBzdHJpbmcpID0+XG4gICAgc3RyWzBdLnRvTG93ZXJDYXNlKCkgK1xuICAgIHN0clxuICAgICAgLnNsaWNlKDEsIHN0ci5sZW5ndGgpXG4gICAgICAucmVwbGFjZSgvW0EtWl0vZywgKGxldHRlcikgPT4gYF8ke2xldHRlci50b0xvd2VyQ2FzZSgpfWApO1xuICBjb25zdCBkaXNwbGF5TmFtZUZvck9iamVjdFR5cGVkT3B0aW9ucyA9IChcbiAgICBmaWx0ZXJJdGVtOiBJRmlsdGVySXRlbSxcbiAgICBvcHRpb246IGFueSxcbiAgICBmb3JPdXRlckRpc3BsYXk6IGJvb2xlYW4sXG4gICkgPT4ge1xuICAgIGxldCBpdGVtO1xuICAgIGlmIChmb3JPdXRlckRpc3BsYXkgJiYgZmlsdGVySXRlbS5hdmFpbGFibGVfb3B0aW9ucyAhPT0gbnVsbCkge1xuICAgICAgaXRlbSA9IGZpbHRlckl0ZW0uYXZhaWxhYmxlX29wdGlvbnMuZmluZCgoZikgPT4gZi5pZCA9PT0gb3B0aW9uKTtcbiAgICAgIGl0ZW0gIT09IHVuZGVmaW5lZCAmJiAoaXRlbSA9IGl0ZW0ubmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGl0ZW0gPSBvcHRpb247XG4gICAgfVxuXG4gICAgcmV0dXJuIGl0ZW07XG4gIH07XG4gIGNvbnN0IHRyYW5zbGF0ZUZpbHRlckl0ZW1PcHRpb25MYWJlbCA9IChcbiAgICBmaWx0ZXJJdGVtOiBJRmlsdGVySXRlbSxcbiAgICBvcHRpb246IHN0cmluZyxcbiAgICBmb3JPdXRlckRpc3BsYXkgPSBmYWxzZSxcbiAgKSA9PiB7XG4gICAgc3dpdGNoIChmaWx0ZXJJdGVtLnR5cGUpIHtcbiAgICAgIGNhc2UgJ0ludGVyZXN0UG9pbnRGaWx0ZXJJdGVtJzpcbiAgICAgICAgcmV0dXJuIGRpc3BsYXlOYW1lRm9yT2JqZWN0VHlwZWRPcHRpb25zKFxuICAgICAgICAgIGZpbHRlckl0ZW0sXG4gICAgICAgICAgb3B0aW9uLFxuICAgICAgICAgIGZvck91dGVyRGlzcGxheSxcbiAgICAgICAgKTtcbiAgICAgIGNhc2UgJ0FyZWFGaWx0ZXJJdGVtJzpcbiAgICAgICAgcmV0dXJuIGRpc3BsYXlOYW1lRm9yT2JqZWN0VHlwZWRPcHRpb25zKFxuICAgICAgICAgIGZpbHRlckl0ZW0sXG4gICAgICAgICAgb3B0aW9uLFxuICAgICAgICAgIGZvck91dGVyRGlzcGxheSxcbiAgICAgICAgKTtcbiAgICAgIGNhc2UgJ1NlY3RvckZpbHRlckl0ZW0nOlxuICAgICAgICByZXR1cm4gZGlzcGxheU5hbWVGb3JPYmplY3RUeXBlZE9wdGlvbnMoXG4gICAgICAgICAgZmlsdGVySXRlbSxcbiAgICAgICAgICBvcHRpb24sXG4gICAgICAgICAgZm9yT3V0ZXJEaXNwbGF5LFxuICAgICAgICApO1xuICAgICAgY2FzZSAnU2V2ZXJpdHlGaWx0ZXJJdGVtJzpcbiAgICAgICAgcmV0dXJuIGkxOG4udChgZXZlbnRzX292ZXJ2aWV3LnNldmVyaXRpZXMuJHtvcHRpb259YCk7XG4gICAgICBjYXNlICdEYW1hZ2VUeXBlRmlsdGVySXRlbSc6XG4gICAgICAgIHJldHVybiBpMThuLnQoXG4gICAgICAgICAgYGV2ZW50c19vdmVydmlldy5kYW1hZ2VfdHlwZXMuJHtzdHJpcERhbWFnZVR5cGUob3B0aW9uKX1gLFxuICAgICAgICApO1xuICAgICAgY2FzZSAnVGltZUZpbHRlckl0ZW0nOlxuICAgICAgICByZXR1cm4gZm9ybWF0VGltZVNlbGVjdGlvbihvcHRpb24pO1xuICAgICAgY2FzZSAnU3RhdHVzRmlsdGVySXRlbSc6XG4gICAgICAgIHJldHVybiBpMThuLnQoYGV2ZW50c19vdmVydmlldy5maWx0ZXIuc3RhdHVzLiR7b3B0aW9ufWApO1xuICAgICAgY2FzZSAnU2FtcGxpbmdGaWx0ZXJJdGVtJzpcbiAgICAgICAgcmV0dXJuIGkxOG4udChgZXZlbnRzX292ZXJ2aWV3LmZpbHRlci5zYW1wbGluZ3Nfb3B0aW9ucy4ke29wdGlvbn1gKTtcbiAgICAgIGNhc2UgJ0xhYkZpbHRlckl0ZW0nOlxuICAgICAgICByZXR1cm4gZGlzcGxheU5hbWVGb3JPYmplY3RUeXBlZE9wdGlvbnMoXG4gICAgICAgICAgZmlsdGVySXRlbSxcbiAgICAgICAgICBvcHRpb24sXG4gICAgICAgICAgZm9yT3V0ZXJEaXNwbGF5LFxuICAgICAgICApO1xuICAgICAgY2FzZSAnU2FtcGxpbmdTdGF0dXNGaWx0ZXJJdGVtJzpcbiAgICAgICAgcmV0dXJuIGkxOG4udChgZXZlbnRzX292ZXJ2aWV3LmZpbHRlci5zYW1wbGluZ3Nfc3RhdHVzLiR7b3B0aW9ufWApO1xuICAgICAgY2FzZSAnU2FtcGxpbmdJZEZpbHRlckl0ZW0nOlxuICAgICAgICByZXR1cm4gZGlzcGxheU5hbWVGb3JPYmplY3RUeXBlZE9wdGlvbnMoXG4gICAgICAgICAgZmlsdGVySXRlbSxcbiAgICAgICAgICBvcHRpb24sXG4gICAgICAgICAgZm9yT3V0ZXJEaXNwbGF5LFxuICAgICAgICApO1xuICAgICAgY2FzZSAnU2l0ZUZpbHRlckl0ZW0nOlxuICAgICAgICByZXR1cm4gZGlzcGxheU5hbWVGb3JPYmplY3RUeXBlZE9wdGlvbnMoXG4gICAgICAgICAgZmlsdGVySXRlbSxcbiAgICAgICAgICBvcHRpb24sXG4gICAgICAgICAgZm9yT3V0ZXJEaXNwbGF5LFxuICAgICAgICApO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCB0cmFuc2xhdGVGaWx0ZXJJdGVtVHlwZSA9IChmaWx0ZXJJdGVtVHlwZTogc3RyaW5nKSA9PiB7XG4gICAgcmV0dXJuIGkxOG4udChcbiAgICAgIGBldmVudHNfb3ZlcnZpZXcuZmlsdGVyLmZpbHRlcl90eXBlcy4ke2NhbWVsVG9TbmFrZUNhc2UoZmlsdGVySXRlbVR5cGUpfWAsXG4gICAgKTtcbiAgfTtcblxuICBjb25zdCBnZXRTZWxlY3Rpb25zID0gKHNlbGVjdGVkX29wdGlvbnM6IGFueSkgPT4ge1xuICAgIGxldCBzZWxlY3Rpb25zOiBhbnlbXSA9IFtdO1xuICAgIGlmIChzZWxlY3RlZF9vcHRpb25zLmxlbmd0aCA+IDEpIHtcbiAgICAgIHBhcnNlU2VsZWN0ZWRJdGVtcyhmaWx0ZXJfaXRlbSlcbiAgICAgICAgLnNsaWNlKDAsIDEpXG4gICAgICAgIC5tYXAoKHNlbGVjdGlvbjogc3RyaW5nKSA9PlxuICAgICAgICAgIHNlbGVjdGlvbnMucHVzaChcbiAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICBjbGFzc05hbWU9eydmaWx0ZXJfaXRlbV9fY29udGVudF9fc2VsZWN0aW9uc19fc2VsZWN0aW9uJ31cbiAgICAgICAgICAgICAga2V5PXtzZWxlY3Rpb259XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0cmFuc2xhdGVGaWx0ZXJJdGVtT3B0aW9uTGFiZWwoZmlsdGVyX2l0ZW0sIHNlbGVjdGlvbiwgdHJ1ZSl9XG4gICAgICAgICAgICA8L2xpPixcbiAgICAgICAgICApLFxuICAgICAgICApO1xuICAgICAgc2VsZWN0aW9ucy5wdXNoKFxuICAgICAgICA8c3BhbiBrZXk9eydNT1JFJ30+e2AgKCR7c2VsZWN0ZWRfb3B0aW9ucy5sZW5ndGh9KWB9PC9zcGFuPixcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhcnNlU2VsZWN0ZWRJdGVtcyhmaWx0ZXJfaXRlbSkubWFwKChzZWxlY3Rpb246IHN0cmluZykgPT5cbiAgICAgICAgc2VsZWN0aW9ucy5wdXNoKFxuICAgICAgICAgIDxsaVxuICAgICAgICAgICAgY2xhc3NOYW1lPXsnZmlsdGVyX2l0ZW1fX2NvbnRlbnRfX3NlbGVjdGlvbnNfX3NlbGVjdGlvbid9XG4gICAgICAgICAgICBrZXk9e3NlbGVjdGlvbn1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dHJhbnNsYXRlRmlsdGVySXRlbU9wdGlvbkxhYmVsKGZpbHRlcl9pdGVtLCBzZWxlY3Rpb24sIHRydWUpfVxuICAgICAgICAgIDwvbGk+LFxuICAgICAgICApLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2VsZWN0aW9ucztcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChmaWx0ZXJfaXRlbS5zZWxlY3RlZF9vcHRpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgc2V0U2hvd0ZpbHRlckl0ZW1PcHRpb25zUG9wdXAoe1xuICAgICAgICBmaWx0ZXJJdGVtSWQ6IGZpbHRlcl9pdGVtLmlkLFxuICAgICAgICBzaG93OiB0cnVlLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGZpbHRlcl9pdGVtLmF2YWlsYWJsZV9vcHRpb25zID09PSBudWxsKSB7XG4gICAgICBsZXQgbWF0Y2hGaWx0ZXJJdGVtID0gYXZhaWxhYmxlRmlsdGVySXRlbXMuZmluZChcbiAgICAgICAgKGF2YWlsYWJsZUZpbHRlckl0ZW06IGFueSkgPT5cbiAgICAgICAgICBhdmFpbGFibGVGaWx0ZXJJdGVtLnR5cGUgPT09IGZpbHRlcl9pdGVtLnR5cGUsXG4gICAgICApO1xuXG4gICAgICBpZiAobWF0Y2hGaWx0ZXJJdGVtICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZmlsdGVyX2l0ZW0uYXZhaWxhYmxlX29wdGlvbnMgPSBtYXRjaEZpbHRlckl0ZW0ub3B0aW9ucztcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtmaWx0ZXJfaXRlbV0pO1xuXG4gIHJldHVybiAoXG4gICAgPFJlYWN0LkZyYWdtZW50PlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzc05hbWU9eydmaWx0ZXJfaXRlbV9fY29udGVudCd9XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZUZpbHRlckl0ZW1DbGljayhmaWx0ZXJfaXRlbSl9XG4gICAgICA+XG4gICAgICAgIDxzcGFuPnt0cmFuc2xhdGVGaWx0ZXJJdGVtVHlwZShmaWx0ZXJfaXRlbS50eXBlKX08L3NwYW4+XG4gICAgICAgIDx1bCBjbGFzc05hbWU9eydmaWx0ZXJfaXRlbV9fY29udGVudF9fc2VsZWN0aW9ucyd9PlxuICAgICAgICAgIHtnZXRTZWxlY3Rpb25zKHBhcnNlU2VsZWN0ZWRJdGVtcyhmaWx0ZXJfaXRlbSkpLm1hcChcbiAgICAgICAgICAgIChzZWxlY3Rpb246IEhUTUxFbGVtZW50KSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiBzZWxlY3Rpb247XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICl9XG4gICAgICAgIDwvdWw+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGEgb25DbGljaz17KCkgPT4gcmVtb3ZlRmlsdGVySXRlbShmaWx0ZXJfaXRlbSl9PlxuICAgICAgICA8Rm9udEF3ZXNvbWVJY29uIGljb249e2ZhVGltZXN9IC8+XG4gICAgICA8L2E+XG4gICAgICB7c2hvd0ZpbHRlckl0ZW1PcHRpb25zUG9wdXAuZmlsdGVySXRlbUlkID09PSBmaWx0ZXJfaXRlbS5pZCAmJlxuICAgICAgICBzaG93RmlsdGVySXRlbU9wdGlvbnNQb3B1cCAmJiAoXG4gICAgICAgICAgPE9wdGlvbnNEcm9wRG93blxuICAgICAgICAgICAgcGFyc2VTZWxlY3RlZEl0ZW1zPXtwYXJzZVNlbGVjdGVkSXRlbXN9XG4gICAgICAgICAgICBmaWx0ZXJJdGVtPXtmaWx0ZXJfaXRlbX1cbiAgICAgICAgICAgIGFjdGl2ZUZpbHRlckNvcHk9e2FjdGl2ZUZpbHRlckNvcHl9XG4gICAgICAgICAgICBzZXRTaG93RmlsdGVySXRlbU9wdGlvbnNQb3B1cD17c2V0U2hvd0ZpbHRlckl0ZW1PcHRpb25zUG9wdXB9XG4gICAgICAgICAgICBzaG93RmlsdGVySXRlbU9wdGlvbnNQb3B1cD17c2hvd0ZpbHRlckl0ZW1PcHRpb25zUG9wdXB9XG4gICAgICAgICAgICBoYW5kbGVTaW5nbGVTZWxlY3Rpb249e2hhbmRsZVNpbmdsZVNlbGVjdGlvbn1cbiAgICAgICAgICAgIHRyYW5zbGF0ZUZpbHRlckl0ZW1PcHRpb25MYWJlbD17dHJhbnNsYXRlRmlsdGVySXRlbU9wdGlvbkxhYmVsfVxuICAgICAgICAgICAgaGFuZGxlQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICA8L1JlYWN0LkZyYWdtZW50PlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgRmlsdGVySXRlbTtcbiJdfQ==