@kando-env/kando-ui 1.2.418-alpha.1 → 1.2.418-alpha.11

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.
@@ -24,7 +24,6 @@ var _brightBlueCircle = _interopRequireDefault(require("../../../assets/point_ic
24
24
  var _WWTPIcon = _interopRequireDefault(require("../../../assets/point_icons/WWTP-icon.svg"));
25
25
  var _waterNoBackground = _interopRequireDefault(require("../../../assets/point_icons/water-no-background.svg"));
26
26
  var _whitePoint = _interopRequireDefault(require("../../../assets/white-point.png"));
27
- var _MapUtils = require("../MapUtils");
28
27
  var _PointIcon = require("./PointIcon");
29
28
  var _water_reuse = _interopRequireDefault(require("../../../assets/icons/water_reuse.svg"));
30
29
  var _utils = require("pages/DashboardMap/utils");
@@ -58,31 +57,16 @@ exports.bubbleForWWTP = bubbleForWWTP;
58
57
  var createBubblePoint = function createBubblePoint(markerLocation, point, map, hovered, layerGroup) {
59
58
  var flow_rate_unit = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 'gd_us';
60
59
  var handleClick = arguments.length > 6 ? arguments[6] : undefined;
61
- var subtitle = pointIsFactory(point) ? point.group.sector_name : '';
62
- var type = point.has_device ? point.group.type : 'Groups::default';
63
- var pointCustomIcon = _leaflet.default.marker(markerLocation, {
64
- icon: (0, _PointIcon.getPointIconByType)(type, point.name, subtitle, false, true, false, point.has_sampler),
65
- riseOnHover: true
66
- });
67
- // @ts-ignore
68
- // pointCustomIcon.bindTooltip(buildManholeTootipString(point));
69
- pointCustomIcon['kando_object_id'] = point.id;
70
- pointCustomIcon['kando_object'] = 'Point';
71
- pointCustomIcon['kando_has_device'] = point.has_device;
72
- pointCustomIcon['kando_has_sampler'] = point.has_sampler;
73
- if (hovered) pointCustomIcon['kando_object'] = 'PointHovered';
74
60
  var markerOnMap = layerGroup.getLayers().find(function (layer) {
75
61
  return layer.kando_object_id === point.id;
76
62
  });
77
-
78
- // let pointCustomIcon: L.Marker = markerOnMap
79
- // ? markerOnMap
80
- // : L.marker(markerLocation, {
81
- // icon: getIcon(point, false, subtitle),
82
- // riseOnHover: true,
83
- // });
84
-
85
63
  if (!markerOnMap) {
64
+ var subtitle = pointIsFactory(point) ? point.group.sector_name : '';
65
+ var type = point.has_device ? point.group.type : 'Groups::default';
66
+ var pointCustomIcon = _leaflet.default.marker(markerLocation, {
67
+ icon: (0, _PointIcon.getPointIconByType)(type, point.name, subtitle, false, true, false, point.has_sampler),
68
+ riseOnHover: true
69
+ });
86
70
  pointCustomIcon['kando_object_id'] = point.id;
87
71
  pointCustomIcon['kando_object'] = 'Point';
88
72
  pointCustomIcon['kando_has_device'] = point.has_device;
@@ -94,22 +78,6 @@ var createBubblePoint = function createBubblePoint(markerLocation, point, map, h
94
78
  }
95
79
  handleMarkerEvents(map, point, pointCustomIcon, handleClick);
96
80
  }
97
-
98
- // Consider removing this, it's not functional and notused anywhere
99
- if (point.relatedEventsAmount) {
100
- var _pointCustomIcon = _leaflet.default.marker(markerLocation, {
101
- icon: _leaflet.default.divIcon({
102
- className: "\n ".concat(point.relatedEventsAmount >= 100 ? 'circle-events-amount circle-events-amount--tridigit' : 'circle-events-amount', " \n ").concat(point.relatedEventsAmount > 2 ? 'alert-color' : '', "\n "),
103
- html: "<p>".concat(point.relatedEventsAmount, "</p>"),
104
- iconAnchor: (0, _MapUtils.eventsCountIcon)(map._zoom).iconAnchor
105
- }),
106
- riseOnHover: false,
107
- opacity: hovered ? 1 : 0
108
- });
109
- _pointCustomIcon['kando_object_id'] = point.id;
110
- _pointCustomIcon['kando_object'] = 'IconNumber';
111
- if (hovered) _pointCustomIcon['kando_object'] = 'IconNumberHovered';
112
- }
113
81
  };
114
82
  exports.createBubblePoint = createBubblePoint;
115
83
  var createManholePoint = function createManholePoint(markerLocation, point, map, hovered, layerGroup) {
@@ -131,6 +99,8 @@ var createManholePoint = function createManholePoint(markerLocation, point, map,
131
99
  if (hovered) manholeIcon['kando_object'] = 'PointHovered';
132
100
  layerGroup.addLayer(manholeIcon);
133
101
  };
102
+
103
+ // ***Consider removing this function it is not used for more than two years***
134
104
  exports.createManholePoint = createManholePoint;
135
105
  var matchIconToPoint = function matchIconToPoint(point, event) {
136
106
  switch (point.group.type) {
@@ -512,4 +482,4 @@ var isFactoryType = function isFactoryType(type) {
512
482
  return type === 'Groups::Factory';
513
483
  };
514
484
  exports.isFactoryType = isFactoryType;
515
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbGVhZmxldCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2kxOG4iLCJfYmx1ZUNpcmNsZSIsIl9zYW1wbGluZ0ljb24iLCJfcGlua0NpcmNsZSIsIl9vYnNlcnZhdGlvbkljb24iLCJfcmVkUGluUmVkU2hhZG93IiwiX3doaXRlUGluUmVkU2hhZG93IiwiX3doaXRlUGluQmxhY2tTaGFkb3ciLCJfeWVsbG93Q2lyY2xlIiwiX2ZhY3RvcnlJY29uIiwiX2dyZWVuQ2lyY2xlIiwiX3B1bXBTdGF0aW9uSWNvbiIsIl9waW5XYXRlciIsIl9icmlnaHRCbHVlQ2lyY2xlIiwiX1dXVFBJY29uIiwiX3dhdGVyTm9CYWNrZ3JvdW5kIiwiX3doaXRlUG9pbnQiLCJfTWFwVXRpbHMiLCJfUG9pbnRJY29uIiwiX3dhdGVyX3JldXNlIiwiX3V0aWxzIiwiaXNDb2xsZWN0b3JGb2N1c2VkIiwicG9pbnQiLCJldmVudCIsIl9ldmVudCRvYnNlcnZhdGlvbnMiLCJvYnNlcnZhdGlvbnMiLCJsZW5ndGgiLCJpZCIsInBvaW50X2lkIiwiZXhwb3J0cyIsImJ1aWxkTWFuaG9sZVRvb2x0aXBTdHJpbmciLCJzdHJpbmciLCJjb25jYXQiLCJncm91cCIsIm5hbWUiLCJwb2ludElzRmFjdG9yeSIsInNlY3Rvcl9uYW1lIiwid2F0ZXJfZGlzY2hhcmdlIiwiYnViYmxlRm9yV1dUUCIsImFyZ3MiLCJwb2ludEN1c3RvbUljb24iLCJMIiwibWFya2VyIiwibWFya2VyTG9jYXRpb24iLCJpY29uIiwiZ2V0SWNvbiIsInd3dHBQb2ludCIsInJpc2VPbkhvdmVyIiwiaGFzX2RldmljZSIsImhhc19zYW1wbGVyIiwiY3JlYXRlQnViYmxlUG9pbnQiLCJtYXAiLCJob3ZlcmVkIiwibGF5ZXJHcm91cCIsImZsb3dfcmF0ZV91bml0IiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwiaGFuZGxlQ2xpY2siLCJzdWJ0aXRsZSIsInR5cGUiLCJnZXRQb2ludEljb25CeVR5cGUiLCJtYXJrZXJPbk1hcCIsImdldExheWVycyIsImZpbmQiLCJsYXllciIsImthbmRvX29iamVjdF9pZCIsImFkZExheWVyIiwiYmluZFBvcHVwVG9NYXJrZXIiLCJoYW5kbGVNYXJrZXJFdmVudHMiLCJyZWxhdGVkRXZlbnRzQW1vdW50IiwiZGl2SWNvbiIsImNsYXNzTmFtZSIsImh0bWwiLCJpY29uQW5jaG9yIiwiZXZlbnRzQ291bnRJY29uIiwiX3pvb20iLCJvcGFjaXR5IiwiY3JlYXRlTWFuaG9sZVBvaW50IiwicG9pbnRJY29uIiwiSWNvbiIsImljb25VcmwiLCJ3aGl0ZVBvaW50IiwiaWNvblNpemUiLCJtYW5ob2xlSWNvbiIsIk1hcmtlciIsImJpbmRUb29sdGlwIiwibWF0Y2hJY29uVG9Qb2ludCIsImNvbWJpbmVkRmFjdG9yeUljb24iLCJtYXJrZXJCZWxvbmdzVG9TZWxlY3RlZFNvdXJjZSIsInVuc2hpZnQiLCJzZWxlY3RlZEJhY2tncm91bmQiLCJtYXJrZXJCZWxvbmdzVG9Tb3VyY2UiLCJiZWxvbmdzVG9Tb3VyY2VCYWNrZ3JvdW5kIiwic3RhbmRhcmRCYWNrZ3JvdW5kIiwiY29tYmluZWRQdW1wU3RhdGlvbkljb24iLCJjb21iaW5lZFdXVFBJY29uIiwicmVkUGluUmVkU2hhZG93Iiwid2F0ZXJJY29uTm9CYWNrZ3JvdW5kIiwicG9wdXBBbmNob3IiLCJjb21iaW5lZENvbGxlY3RvcnNJY29uIiwic2Vjb25kYXJ5IiwidGhpcmQiLCJ3aGl0ZVBpbkJsYWNrU2hhZG93IiwieWVsbG93Q2lyY2xlVVJMIiwicGxhbnRJY29uVVJMIiwiZ3JlZW5DaXJjbGVVUkwiLCJwdW1wU3RhdGlvbkljb25VUkwiLCJjb2xsZWN0b3JJY29uIiwiYnJpZ2h0Qmx1ZUNpcmNsZVVSTCIsIldXVFBJY29uVVJMIiwid2hpdGVQaW5SZWRTaGFkb3ciLCJzb3VyY2UiLCJzb3VyY2VzIiwiZmlsdGVyIiwic2VsZWN0ZWRfc291cmNlIiwiY3JlYXRlU2FtcGxpbmdJY29uUG9pbnQiLCJzZWNvbmRhcnlJY29uIiwic2FtcGxpbmdJY29uIiwiYmx1ZUNpcmNsZVVSTCIsInNhbXBsaW5nSWNvblVSTCIsInRoaXJkSWNvbiIsImZvckVhY2giLCJpbmRleCIsImNyZWF0ZU9ic2VydmF0aW9uSWNvblBvaW50Iiwib2JzZXJ2YXRpb25JY29uIiwicGlua0NpcmNsZVVSTCIsIm9ic2VydmF0aW9uSWNvblVSTCIsImNyZWF0ZVNhbXBsaW5nSWNvbnMiLCJzYW1wbGVkUG9pbnRJZHMiLCJzYW1wbGluZ3MiLCJzIiwiaW5jbHVkZXMiLCJwb3B1cENvbnRlbnQiLCJvYnMiLCJHcmFwaEljb24iLCJpMThuIiwidCIsInNldmVyaXR5IiwiY2xpY2tlZCIsImlzV1dUUCIsInN1YnRpdGxlVGV4dCIsInNldEljb24iLCJlbGVtZW50IiwiY2FsY3VsYXRlV2F0ZXJDb25zdW1wdGlvbiIsIndhdGVyQ29uc3VtcHRpb24iLCJyb3VuZF90b19uZWFyZXN0X2siLCJjYWxjdWxhdGVkIiwidG9GaXhlZCIsInJvdW5kVG9OZWFyZXN0VGhvdXNhbmQiLCJwYXJzZUZsb2F0IiwidG9Mb2NhbGVTdHJpbmciLCJNYXRoIiwicm91bmQiLCJudW1iZXIiLCJyb3VuZGVkVGhvdXNhbmRzIiwicm91bmRlZFZhbHVlIiwidHJhbnNsYXRlRmxvd1JhdGUiLCJ0b29sdGlwVmlzaWJsZSIsIm9uIiwiY2xvc2VQb3B1cCIsImlzUG9wdXBPcGVuIiwic2VuZEFuYWx5dGljc0V2ZW50IiwicG9pbnRfbmFtZSIsImNvbnRlbnQiLCJ3YXRlclJldXNlSWNvbiIsImdldEZsb3dSYXRlIiwiYmluZFBvcHVwIiwibWluV2lkdGgiLCJtYXhXaWR0aCIsImNsb3NlQnV0dG9uIiwiZmxvd1JhdGVVbml0IiwiaXNSb3VuZCIsInJlbW92ZUxheWVyR3JvdXAiLCJoYXNMYXllciIsInJlbW92ZUxheWVyIiwiYWRkTGF5ZXJHcm91cCIsInBvaW50SXNXV1RQIiwiaXNGYWN0b3J5VHlwZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9XaWRnZXRzL01hcC9wb2ludHMvUG9pbnRVdGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgR3JhcGhJY29uIGZyb20gJy4uLy4uLy4uL2Fzc2V0cy9saW5lLWNoYXJ0LnN2Zyc7XG5pbXBvcnQgTCwgeyBMYXRMbmdUdXBsZSB9IGZyb20gJ2xlYWZsZXQnO1xuaW1wb3J0IGkxOG4gZnJvbSAnLi4vLi4vLi4vdXRpbGl0aWVzL2kxOG4nO1xuaW1wb3J0IHsgSVBvaW50IH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvcG9pbnRzL21vZGVscy9JUG9pbnQnO1xuaW1wb3J0IGJsdWVDaXJjbGVVUkwgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL2JsdWUtY2lyY2xlLnN2Zyc7XG5pbXBvcnQgc2FtcGxpbmdJY29uVVJMIGZyb20gJy4uLy4uLy4uL2Fzc2V0cy9wb2ludF9pY29ucy9zYW1wbGluZy1pY29uLnN2Zyc7XG5pbXBvcnQgcGlua0NpcmNsZVVSTCBmcm9tICcuLi8uLi8uLi9hc3NldHMvcG9pbnRfaWNvbnMvcGluay1jaXJjbGUuc3ZnJztcbmltcG9ydCBvYnNlcnZhdGlvbkljb25VUkwgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL29ic2VydmF0aW9uLWljb24uc3ZnJztcbmltcG9ydCB7IElFdmVudCB9IGZyb20gJy4uLy4uLy4uL3N0b3JlL2V2ZW50cy9tb2RlbHMvSUV2ZW50JztcbmltcG9ydCByZWRQaW5SZWRTaGFkb3cgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL3JlZC1waW4tcmVkLXNoYWRvdy5wbmcnO1xuaW1wb3J0IHdoaXRlUGluUmVkU2hhZG93IGZyb20gJy4uLy4uLy4uL2Fzc2V0cy9wb2ludF9pY29ucy93aGl0ZS1waW4tcmVkLXNoYWRvdy5wbmcnO1xuaW1wb3J0IHdoaXRlUGluQmxhY2tTaGFkb3cgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL3doaXRlLXBpbi1ibGFjay1zaGFkb3cucG5nJztcbmltcG9ydCB5ZWxsb3dDaXJjbGVVUkwgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL3llbGxvdy1jaXJjbGUuc3ZnJztcbmltcG9ydCBwbGFudEljb25VUkwgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL2ZhY3RvcnktaWNvbi5zdmcnO1xuaW1wb3J0IGdyZWVuQ2lyY2xlVVJMIGZyb20gJy4uLy4uLy4uL2Fzc2V0cy9wb2ludF9pY29ucy9ncmVlbi1jaXJjbGUuc3ZnJztcbmltcG9ydCBwdW1wU3RhdGlvbkljb25VUkwgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL3B1bXAtc3RhdGlvbi1pY29uLnN2Zyc7XG5pbXBvcnQgY29sbGVjdG9ySWNvbiBmcm9tICcuLi8uLi8uLi9hc3NldHMvbWFwL3Bpbi13YXRlci5zdmcnO1xuaW1wb3J0IGJyaWdodEJsdWVDaXJjbGVVUkwgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL2JyaWdodC1ibHVlLWNpcmNsZS5zdmcnO1xuaW1wb3J0IFdXVFBJY29uVVJMIGZyb20gJy4uLy4uLy4uL2Fzc2V0cy9wb2ludF9pY29ucy9XV1RQLWljb24uc3ZnJztcbmltcG9ydCB3YXRlckljb25Ob0JhY2tncm91bmQgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL3dhdGVyLW5vLWJhY2tncm91bmQuc3ZnJztcbmltcG9ydCB3aGl0ZVBvaW50IGZyb20gJy4uLy4uLy4uL2Fzc2V0cy93aGl0ZS1wb2ludC5wbmcnO1xuaW1wb3J0IHsgZXZlbnRzQ291bnRJY29uIH0gZnJvbSAnLi4vTWFwVXRpbHMnO1xuaW1wb3J0IHsgZ2V0UG9pbnRJY29uQnlUeXBlIH0gZnJvbSAnLi9Qb2ludEljb24nO1xuaW1wb3J0IHdhdGVyUmV1c2VJY29uIGZyb20gJy4uLy4uLy4uL2Fzc2V0cy9pY29ucy93YXRlcl9yZXVzZS5zdmcnO1xuaW1wb3J0IHsgc2VuZEFuYWx5dGljc0V2ZW50IH0gZnJvbSAnc3JjL3BhZ2VzL0Rhc2hib2FyZE1hcC91dGlscyc7XG5cbmV4cG9ydCBjb25zdCBpc0NvbGxlY3RvckZvY3VzZWQgPSAocG9pbnQ6IElQb2ludCwgZXZlbnQ6IElFdmVudCkgPT4ge1xuICByZXR1cm4gKFxuICAgIGV2ZW50Py5vYnNlcnZhdGlvbnM/Lmxlbmd0aCA9PT0gMSAmJlxuICAgIHBvaW50LmlkID09PSBldmVudC5vYnNlcnZhdGlvbnNbMF0ucG9pbnRfaWRcbiAgKTtcbn07XG5cbmNvbnN0IGJ1aWxkTWFuaG9sZVRvb2x0aXBTdHJpbmcgPSAocG9pbnQ6IElQb2ludCkgPT4ge1xuICBsZXQgc3RyaW5nID0gYCR7cG9pbnQuZ3JvdXAubmFtZX0gYDtcblxuICBpZiAocG9pbnRJc0ZhY3RvcnkocG9pbnQpKSB7XG4gICAgc3RyaW5nICs9IGA8YnIvPlNlY3RvcjogJHtwb2ludC5ncm91cC5zZWN0b3JfbmFtZX1gO1xuICAgIHN0cmluZyArPSBgPGJyLz5XYXRlciBDb25zdW1wdGlvbjogJHtwb2ludC5ncm91cC53YXRlcl9kaXNjaGFyZ2V9YDtcbiAgfSBlbHNlIHtcbiAgICBzdHJpbmcgPSBgJHtwb2ludC5uYW1lfWA7XG4gIH1cblxuICByZXR1cm4gc3RyaW5nO1xufTtcblxuZXhwb3J0IGNvbnN0IGJ1YmJsZUZvcldXVFAgPSAoYXJncykgPT4ge1xuICBjb25zdCBwb2ludEN1c3RvbUljb246IEwuTWFya2VyID0gTC5tYXJrZXIoYXJncy5tYXJrZXJMb2NhdGlvbiwge1xuICAgIGljb246IGdldEljb24oYXJncy53d3RwUG9pbnQsIGZhbHNlKSxcbiAgICByaXNlT25Ib3ZlcjogdHJ1ZSxcbiAgfSk7XG4gIHBvaW50Q3VzdG9tSWNvblsna2FuZG9fb2JqZWN0X2lkJ10gPSBhcmdzLnd3dHBQb2ludC5pZDtcbiAgcG9pbnRDdXN0b21JY29uWydrYW5kb19vYmplY3QnXSA9ICdQb2ludCc7XG4gIHBvaW50Q3VzdG9tSWNvblsna2FuZG9faGFzX2RldmljZSddID0gYXJncy53d3RwUG9pbnQuaGFzX2RldmljZTtcbiAgcG9pbnRDdXN0b21JY29uWydrYW5kb19oYXNfc2FtcGxlciddID0gYXJncy53d3RwUG9pbnQuaGFzX3NhbXBsZXI7XG5cbiAgcmV0dXJuIHBvaW50Q3VzdG9tSWNvbjtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVCdWJibGVQb2ludCA9IChcbiAgbWFya2VyTG9jYXRpb246IExhdExuZ1R1cGxlLFxuICBwb2ludDogSVBvaW50LFxuICBtYXAsXG4gIGhvdmVyZWQ/LFxuICBsYXllckdyb3VwPyxcbiAgZmxvd19yYXRlX3VuaXQgPSAnZ2RfdXMnLFxuICBoYW5kbGVDbGljaz8sXG4pID0+IHtcbiAgY29uc3Qgc3VidGl0bGUgPSBwb2ludElzRmFjdG9yeShwb2ludCkgPyBwb2ludC5ncm91cC5zZWN0b3JfbmFtZSA6ICcnO1xuICBjb25zdCB0eXBlID0gcG9pbnQuaGFzX2RldmljZSA/IHBvaW50Lmdyb3VwLnR5cGUgOiAnR3JvdXBzOjpkZWZhdWx0JztcbiAgbGV0IHBvaW50Q3VzdG9tSWNvbjogTC5NYXJrZXIgPSBMLm1hcmtlcihtYXJrZXJMb2NhdGlvbiwge1xuICAgIGljb246IGdldFBvaW50SWNvbkJ5VHlwZShcbiAgICAgIHR5cGUsXG4gICAgICBwb2ludC5uYW1lLFxuICAgICAgc3VidGl0bGUsXG4gICAgICBmYWxzZSxcbiAgICAgIHRydWUsXG4gICAgICBmYWxzZSxcbiAgICAgIHBvaW50Lmhhc19zYW1wbGVyLFxuICAgICksXG4gICAgcmlzZU9uSG92ZXI6IHRydWUsXG4gIH0pO1xuICAvLyBAdHMtaWdub3JlXG4gIC8vIHBvaW50Q3VzdG9tSWNvbi5iaW5kVG9vbHRpcChidWlsZE1hbmhvbGVUb290aXBTdHJpbmcocG9pbnQpKTtcbiAgcG9pbnRDdXN0b21JY29uWydrYW5kb19vYmplY3RfaWQnXSA9IHBvaW50LmlkO1xuICBwb2ludEN1c3RvbUljb25bJ2thbmRvX29iamVjdCddID0gJ1BvaW50JztcbiAgcG9pbnRDdXN0b21JY29uWydrYW5kb19oYXNfZGV2aWNlJ10gPSBwb2ludC5oYXNfZGV2aWNlO1xuICBwb2ludEN1c3RvbUljb25bJ2thbmRvX2hhc19zYW1wbGVyJ10gPSBwb2ludC5oYXNfc2FtcGxlcjtcbiAgaWYgKGhvdmVyZWQpIHBvaW50Q3VzdG9tSWNvblsna2FuZG9fb2JqZWN0J10gPSAnUG9pbnRIb3ZlcmVkJztcbiAgY29uc3QgbWFya2VyT25NYXAgPSBsYXllckdyb3VwXG4gICAgLmdldExheWVycygpXG4gICAgLmZpbmQoKGxheWVyKSA9PiBsYXllci5rYW5kb19vYmplY3RfaWQgPT09IHBvaW50LmlkKTtcblxuICAvLyBsZXQgcG9pbnRDdXN0b21JY29uOiBMLk1hcmtlciA9IG1hcmtlck9uTWFwXG4gIC8vICAgPyBtYXJrZXJPbk1hcFxuICAvLyAgIDogTC5tYXJrZXIobWFya2VyTG9jYXRpb24sIHtcbiAgLy8gICAgICAgaWNvbjogZ2V0SWNvbihwb2ludCwgZmFsc2UsIHN1YnRpdGxlKSxcbiAgLy8gICAgICAgcmlzZU9uSG92ZXI6IHRydWUsXG4gIC8vICAgICB9KTtcblxuICBpZiAoIW1hcmtlck9uTWFwKSB7XG4gICAgcG9pbnRDdXN0b21JY29uWydrYW5kb19vYmplY3RfaWQnXSA9IHBvaW50LmlkO1xuICAgIHBvaW50Q3VzdG9tSWNvblsna2FuZG9fb2JqZWN0J10gPSAnUG9pbnQnO1xuICAgIHBvaW50Q3VzdG9tSWNvblsna2FuZG9faGFzX2RldmljZSddID0gcG9pbnQuaGFzX2RldmljZTtcbiAgICBwb2ludEN1c3RvbUljb25bJ2thbmRvX2hhc19zYW1wbGVyJ10gPSBwb2ludC5oYXNfc2FtcGxlcjtcbiAgICBpZiAoaG92ZXJlZCkgcG9pbnRDdXN0b21JY29uWydrYW5kb19vYmplY3QnXSA9ICdQb2ludEhvdmVyZWQnO1xuXG4gICAgbGF5ZXJHcm91cC5hZGRMYXllcihwb2ludEN1c3RvbUljb24pO1xuICAgIGlmIChwb2ludElzRmFjdG9yeShwb2ludCkpIHtcbiAgICAgIGJpbmRQb3B1cFRvTWFya2VyKHBvaW50LCBwb2ludEN1c3RvbUljb24sIGZsb3dfcmF0ZV91bml0KTtcbiAgICB9XG5cbiAgICBoYW5kbGVNYXJrZXJFdmVudHMobWFwLCBwb2ludCwgcG9pbnRDdXN0b21JY29uLCBoYW5kbGVDbGljayk7XG4gIH1cblxuICAvLyBDb25zaWRlciByZW1vdmluZyB0aGlzLCBpdCdzIG5vdCBmdW5jdGlvbmFsIGFuZCBub3R1c2VkIGFueXdoZXJlXG4gIGlmIChwb2ludC5yZWxhdGVkRXZlbnRzQW1vdW50KSB7XG4gICAgbGV0IHBvaW50Q3VzdG9tSWNvbiA9IEwubWFya2VyKG1hcmtlckxvY2F0aW9uLCB7XG4gICAgICBpY29uOiBMLmRpdkljb24oe1xuICAgICAgICBjbGFzc05hbWU6IGBcbiAgICAgICAgICAke1xuICAgICAgICAgICAgcG9pbnQucmVsYXRlZEV2ZW50c0Ftb3VudCA+PSAxMDBcbiAgICAgICAgICAgICAgPyAnY2lyY2xlLWV2ZW50cy1hbW91bnQgY2lyY2xlLWV2ZW50cy1hbW91bnQtLXRyaWRpZ2l0J1xuICAgICAgICAgICAgICA6ICdjaXJjbGUtZXZlbnRzLWFtb3VudCdcbiAgICAgICAgICB9IFxuICAgICAgICAgICR7cG9pbnQucmVsYXRlZEV2ZW50c0Ftb3VudCA+IDIgPyAnYWxlcnQtY29sb3InIDogJyd9XG4gICAgICAgICAgICBgLFxuICAgICAgICBodG1sOiBgPHA+JHtwb2ludC5yZWxhdGVkRXZlbnRzQW1vdW50fTwvcD5gLFxuICAgICAgICBpY29uQW5jaG9yOiBldmVudHNDb3VudEljb24obWFwLl96b29tKS5pY29uQW5jaG9yLFxuICAgICAgfSksXG4gICAgICByaXNlT25Ib3ZlcjogZmFsc2UsXG4gICAgICBvcGFjaXR5OiBob3ZlcmVkID8gMSA6IDAsXG4gICAgfSk7XG5cbiAgICBwb2ludEN1c3RvbUljb25bJ2thbmRvX29iamVjdF9pZCddID0gcG9pbnQuaWQ7XG4gICAgcG9pbnRDdXN0b21JY29uWydrYW5kb19vYmplY3QnXSA9ICdJY29uTnVtYmVyJztcbiAgICBpZiAoaG92ZXJlZCkgcG9pbnRDdXN0b21JY29uWydrYW5kb19vYmplY3QnXSA9ICdJY29uTnVtYmVySG92ZXJlZCc7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVNYW5ob2xlUG9pbnQgPSAoXG4gIG1hcmtlckxvY2F0aW9uOiBMYXRMbmdUdXBsZSxcbiAgcG9pbnQ6IElQb2ludCxcbiAgbWFwLFxuICBob3ZlcmVkPyxcbiAgbGF5ZXJHcm91cD8sXG4pID0+IHtcbiAgbGV0IHBvaW50SWNvbiA9IG5ldyBMLkljb24oe1xuICAgIGljb25Vcmw6IHdoaXRlUG9pbnQsXG4gICAgaWNvblNpemU6IFs5LCA5XSxcbiAgICBpY29uQW5jaG9yOiBbNC41LCA0LjVdLFxuICB9KTtcbiAgbGV0IG1hbmhvbGVJY29uOiBhbnkgPSBuZXcgTC5NYXJrZXIobWFya2VyTG9jYXRpb24sIHtcbiAgICBpY29uOiBwb2ludEljb24sXG4gICAgcmlzZU9uSG92ZXI6IHRydWUsXG4gIH0pO1xuICBtYW5ob2xlSWNvbi5iaW5kVG9vbHRpcChidWlsZE1hbmhvbGVUb29sdGlwU3RyaW5nKHBvaW50KSk7XG4gIG1hbmhvbGVJY29uWydrYW5kb19vYmplY3RfaWQnXSA9IHBvaW50LmlkO1xuICBtYW5ob2xlSWNvblsna2FuZG9fb2JqZWN0J10gPSAnUG9pbnQnO1xuICBtYW5ob2xlSWNvblsna2FuZG9fcG9pbnRfdHlwZSddID0gJ01hbmhvbGUnO1xuICBtYW5ob2xlSWNvblsna2FuZG9faGFzX2RldmljZSddID0gcG9pbnQuaGFzX2RldmljZTtcbiAgbWFuaG9sZUljb25bJ2thbmRvX2hhc19zYW1wbGVyJ10gPSBwb2ludC5oYXNfc2FtcGxlcjtcbiAgaWYgKGhvdmVyZWQpIG1hbmhvbGVJY29uWydrYW5kb19vYmplY3QnXSA9ICdQb2ludEhvdmVyZWQnO1xuICBsYXllckdyb3VwLmFkZExheWVyKG1hbmhvbGVJY29uKTtcbn07XG5cbmV4cG9ydCBjb25zdCBtYXRjaEljb25Ub1BvaW50ID0gKHBvaW50OiBJUG9pbnQsIGV2ZW50OiBJRXZlbnQpID0+IHtcbiAgc3dpdGNoIChwb2ludC5ncm91cC50eXBlKSB7XG4gICAgY2FzZSAnR3JvdXBzOjpGYWN0b3J5JzpcbiAgICAgIGlmIChjb21iaW5lZEZhY3RvcnlJY29uLmxlbmd0aCA9PT0gMikge1xuICAgICAgICBpZiAobWFya2VyQmVsb25nc1RvU2VsZWN0ZWRTb3VyY2UoZXZlbnQsIHBvaW50KSkge1xuICAgICAgICAgIGNvbWJpbmVkRmFjdG9yeUljb24udW5zaGlmdChzZWxlY3RlZEJhY2tncm91bmQoKSk7XG4gICAgICAgIH0gZWxzZSBpZiAobWFya2VyQmVsb25nc1RvU291cmNlKGV2ZW50LCBwb2ludCkpIHtcbiAgICAgICAgICBjb21iaW5lZEZhY3RvcnlJY29uLnVuc2hpZnQoYmVsb25nc1RvU291cmNlQmFja2dyb3VuZCgpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb21iaW5lZEZhY3RvcnlJY29uLnVuc2hpZnQoc3RhbmRhcmRCYWNrZ3JvdW5kKCkpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb21iaW5lZEZhY3RvcnlJY29uO1xuICAgIGNhc2UgJ0dyb3Vwczo6UHVtcFN0YXRpb24nOlxuICAgICAgaWYgKGNvbWJpbmVkUHVtcFN0YXRpb25JY29uLmxlbmd0aCA9PT0gMikge1xuICAgICAgICBpZiAobWFya2VyQmVsb25nc1RvU2VsZWN0ZWRTb3VyY2UoZXZlbnQsIHBvaW50KSkge1xuICAgICAgICAgIGNvbWJpbmVkUHVtcFN0YXRpb25JY29uLnVuc2hpZnQoc2VsZWN0ZWRCYWNrZ3JvdW5kKCkpO1xuICAgICAgICB9IGVsc2UgaWYgKG1hcmtlckJlbG9uZ3NUb1NvdXJjZShldmVudCwgcG9pbnQpKSB7XG4gICAgICAgICAgY29tYmluZWRQdW1wU3RhdGlvbkljb24udW5zaGlmdChiZWxvbmdzVG9Tb3VyY2VCYWNrZ3JvdW5kKCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbWJpbmVkUHVtcFN0YXRpb25JY29uLnVuc2hpZnQoc3RhbmRhcmRCYWNrZ3JvdW5kKCkpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb21iaW5lZFB1bXBTdGF0aW9uSWNvbjtcbiAgICBjYXNlICdHcm91cHM6Oldhc3Rld2F0ZXJUcmVhdG1lbnRQbGFudCc6XG4gICAgICBpZiAoY29tYmluZWRXV1RQSWNvbi5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgaWYgKG1hcmtlckJlbG9uZ3NUb1NlbGVjdGVkU291cmNlKGV2ZW50LCBwb2ludCkpIHtcbiAgICAgICAgICBjb21iaW5lZFdXVFBJY29uLnVuc2hpZnQoc2VsZWN0ZWRCYWNrZ3JvdW5kKCkpO1xuICAgICAgICB9IGVsc2UgaWYgKG1hcmtlckJlbG9uZ3NUb1NvdXJjZShldmVudCwgcG9pbnQpKSB7XG4gICAgICAgICAgY29tYmluZWRXV1RQSWNvbi51bnNoaWZ0KGJlbG9uZ3NUb1NvdXJjZUJhY2tncm91bmQoKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tYmluZWRXV1RQSWNvbi51bnNoaWZ0KHN0YW5kYXJkQmFja2dyb3VuZCgpKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29tYmluZWRXV1RQSWNvbjtcblxuICAgIGNhc2UgJ0dyb3Vwczo6Q29sbGVjdG9ycyc6XG4gICAgICBpZiAoaXNDb2xsZWN0b3JGb2N1c2VkKHBvaW50LCBldmVudCkpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICBMLmljb24oe1xuICAgICAgICAgICAgaWNvblVybDogcmVkUGluUmVkU2hhZG93LFxuICAgICAgICAgICAgaWNvblNpemU6IFswLCAwXSxcbiAgICAgICAgICAgIGljb25BbmNob3I6IFszMCwgNTJdLFxuICAgICAgICAgIH0pLFxuXG4gICAgICAgICAgTC5pY29uKHtcbiAgICAgICAgICAgIGljb25Vcmw6IHdhdGVySWNvbk5vQmFja2dyb3VuZCxcbiAgICAgICAgICAgIGljb25TaXplOiBbMCwgMF0sXG5cbiAgICAgICAgICAgIGljb25BbmNob3I6IFsyMiwgNDRdLFxuICAgICAgICAgICAgcG9wdXBBbmNob3I6IFswLCAtMzBdLFxuICAgICAgICAgIH0pLFxuICAgICAgICBdO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29tYmluZWRDb2xsZWN0b3JzSWNvbjtcblxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gbnVsbDtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHN0YW5kYXJkQmFja2dyb3VuZCA9IChcbiAgc2Vjb25kYXJ5OiBib29sZWFuID0gZmFsc2UsXG4gIHRoaXJkOiBib29sZWFuID0gZmFsc2UsXG4pID0+IHtcbiAgcmV0dXJuIEwuaWNvbih7XG4gICAgaWNvblVybDogd2hpdGVQaW5CbGFja1NoYWRvdyxcbiAgICBpY29uU2l6ZTogc2Vjb25kYXJ5ID8gWzAsIDBdIDogWzAsIDBdLFxuICAgIGljb25BbmNob3I6IHNlY29uZGFyeSAmJiB0aGlyZCA/IFstMiwgMTldIDogc2Vjb25kYXJ5ID8gWy0yLCA0NF0gOiBbMjAsIDQyXSxcbiAgICBwb3B1cEFuY2hvcjogWzAsIC0zMF0sXG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGNvbWJpbmVkRmFjdG9yeUljb24gPSBbXG4gIEwuaWNvbih7XG4gICAgaWNvblVybDogeWVsbG93Q2lyY2xlVVJMLFxuICAgIGljb25TaXplOiBbMCwgMF0sXG4gICAgaWNvbkFuY2hvcjogWzEwLjcsIDMzLjddLFxuICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgfSksXG4gIEwuaWNvbih7XG4gICAgaWNvblVybDogcGxhbnRJY29uVVJMLFxuICAgIGljb25TaXplOiBbMCwgMF0sXG4gICAgaWNvbkFuY2hvcjogWzUsIDMwXSxcbiAgICBwb3B1cEFuY2hvcjogWzAsIC0zMF0sXG4gIH0pLFxuXTtcblxuZXhwb3J0IGNvbnN0IGNvbWJpbmVkUHVtcFN0YXRpb25JY29uID0gW1xuICBMLmljb24oe1xuICAgIGljb25Vcmw6IGdyZWVuQ2lyY2xlVVJMLFxuICAgIGljb25TaXplOiBbMCwgMF0sXG4gICAgaWNvbkFuY2hvcjogWzEwLjcsIDMzLjddLFxuICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgfSksXG4gIEwuaWNvbih7XG4gICAgaWNvblVybDogcHVtcFN0YXRpb25JY29uVVJMLFxuICAgIGljb25TaXplOiBbMCwgMF0sXG4gICAgaWNvbkFuY2hvcjogWzcsIDMyXSxcbiAgICBwb3B1cEFuY2hvcjogWzAsIC0zMF0sXG4gIH0pLFxuXTtcblxuZXhwb3J0IGNvbnN0IGNvbWJpbmVkQ29sbGVjdG9yc0ljb24gPSBbXG4gIEwuaWNvbih7XG4gICAgaWNvblVybDogY29sbGVjdG9ySWNvbixcbiAgICBpY29uU2l6ZTogWzAsIDBdLFxuXG4gICAgaWNvbkFuY2hvcjogWzI1LCA1MF0sXG4gICAgcG9wdXBBbmNob3I6IFswLCAtMzBdLFxuICB9KSxcbl07XG5cbmV4cG9ydCBjb25zdCBjb21iaW5lZFdXVFBJY29uID0gW1xuICBMLmljb24oe1xuICAgIGljb25Vcmw6IGJyaWdodEJsdWVDaXJjbGVVUkwsXG4gICAgaWNvblNpemU6IFswLCAwXSxcbiAgICBpY29uQW5jaG9yOiBbMTAuNywgMzMuN10sXG4gICAgcG9wdXBBbmNob3I6IFswLCAtMzBdLFxuICB9KSxcbiAgTC5pY29uKHtcbiAgICBpY29uVXJsOiBXV1RQSWNvblVSTCxcbiAgICBpY29uU2l6ZTogWzAsIDBdLFxuICAgIGljb25BbmNob3I6IFs4LCAzMV0sXG4gICAgcG9wdXBBbmNob3I6IFswLCAtMzBdLFxuICB9KSxcbl07XG5cbmV4cG9ydCBjb25zdCBzZWxlY3RlZEJhY2tncm91bmQgPSAoKSA9PiB7XG4gIHJldHVybiBMLmljb24oe1xuICAgIGljb25Vcmw6IHJlZFBpblJlZFNoYWRvdyxcbiAgICBpY29uU2l6ZTogWzAsIDBdLFxuICAgIGljb25BbmNob3I6IFszMiwgNTRdLFxuICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgYmVsb25nc1RvU291cmNlQmFja2dyb3VuZCA9ICgpID0+IHtcbiAgcmV0dXJuIEwuaWNvbih7XG4gICAgaWNvblVybDogd2hpdGVQaW5SZWRTaGFkb3csXG4gICAgaWNvblNpemU6IFswLCAwXSxcbiAgICBpY29uQW5jaG9yOiBbMzIsIDU0XSxcbiAgICBwb3B1cEFuY2hvcjogWzAsIC0zMF0sXG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IG1hcmtlckJlbG9uZ3NUb1NlbGVjdGVkU291cmNlID0gKGV2ZW50OiBJRXZlbnQsIHBvaW50OiBJUG9pbnQpID0+IHtcbiAgbGV0IHNvdXJjZTtcblxuICBpZiAoZXZlbnQgIT09IG51bGwgJiYgZXZlbnQgIT09IHVuZGVmaW5lZCkge1xuICAgIHNvdXJjZSA9IGV2ZW50LnNvdXJjZXMuZmlsdGVyKChzb3VyY2UpID0+IHNvdXJjZS5wb2ludF9pZCA9PT0gcG9pbnQuaWQpWzBdO1xuICB9XG5cbiAgcmV0dXJuIGV2ZW50ICE9PSBudWxsICYmIHNvdXJjZSAmJiBldmVudC5zZWxlY3RlZF9zb3VyY2UgPT09IHNvdXJjZS5wb2ludF9pZDtcbn07XG5cbmV4cG9ydCBjb25zdCBtYXJrZXJCZWxvbmdzVG9Tb3VyY2UgPSAoZXZlbnQ6IElFdmVudCwgcG9pbnQ6IElQb2ludCkgPT4ge1xuICBpZiAoZXZlbnQgPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xuICByZXR1cm4gKFxuICAgIGV2ZW50ICE9PSBudWxsICYmXG4gICAgZXZlbnQuc291cmNlcy5maWx0ZXIoKHNvdXJjZSkgPT4gc291cmNlLnBvaW50X2lkID09PSBwb2ludC5pZClbMF1cbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVTYW1wbGluZ0ljb25Qb2ludCA9IChcbiAgbWFya2VyTG9jYXRpb246IExhdExuZ1R1cGxlLFxuICBzZWNvbmRhcnlJY29uOiBib29sZWFuLFxuICBtYXAsXG4gIHBvaW50OiBJUG9pbnQsXG4gIGV2ZW50OiBJRXZlbnQsXG4gIGhvdmVyZWQ/LFxuICBsYXllckdyb3VwPyxcbikgPT4ge1xuICAvLyBpY29uU2l6ZTogW3dpZHRoLCBoZWlnaHRdLFxuICAvLyBJY29uIEFuY2hvcjogWygtcmlnaHQpKCtsZWZ0KSwgKC1kb3duKSgrdXApXVxuICBsZXQgc2FtcGxpbmdJY29uID0gW1xuICAgIEwuaWNvbih7XG4gICAgICBpY29uVXJsOiBibHVlQ2lyY2xlVVJMLFxuICAgICAgaWNvblNpemU6IHNlY29uZGFyeUljb24gPyBbMCwgMF0gOiBbMCwgMF0sXG4gICAgICBpY29uQW5jaG9yOiBzZWNvbmRhcnlJY29uID8gWy03LCAxNV0gOiBbMTAuNywgMzMuN10sXG4gICAgICBwb3B1cEFuY2hvcjogWzAsIC0zMF0sXG4gICAgfSksXG4gICAgTC5pY29uKHtcbiAgICAgIGljb25Vcmw6IHNhbXBsaW5nSWNvblVSTCxcbiAgICAgIGljb25TaXplOiBzZWNvbmRhcnlJY29uID8gWzAsIDBdIDogWzAsIDBdLFxuICAgICAgaWNvbkFuY2hvcjogc2Vjb25kYXJ5SWNvbiA/IFstOCwgMTNdIDogWzUsIDMwXSxcbiAgICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgICB9KSxcbiAgXTtcblxuICBsZXQgdGhpcmRJY29uID0gZmFsc2U7XG4gIGlmIChtYXJrZXJCZWxvbmdzVG9TZWxlY3RlZFNvdXJjZShldmVudCwgcG9pbnQpICYmICFzZWNvbmRhcnlJY29uKSB7XG4gICAgc2FtcGxpbmdJY29uLnVuc2hpZnQoc2VsZWN0ZWRCYWNrZ3JvdW5kKCkpO1xuICB9IGVsc2UgaWYgKG1hcmtlckJlbG9uZ3NUb1NvdXJjZShldmVudCwgcG9pbnQpICYmICFzZWNvbmRhcnlJY29uKSB7XG4gICAgc2FtcGxpbmdJY29uLnVuc2hpZnQoYmVsb25nc1RvU291cmNlQmFja2dyb3VuZCgpKTtcbiAgfSBlbHNlIHtcbiAgICB0aGlyZEljb24gPSB0cnVlO1xuICAgIHNhbXBsaW5nSWNvbi51bnNoaWZ0KHN0YW5kYXJkQmFja2dyb3VuZChzZWNvbmRhcnlJY29uLCB0aGlyZEljb24pKTtcbiAgfVxuXG4gIHNhbXBsaW5nSWNvbi5mb3JFYWNoKChpY29uLCBpbmRleCkgPT4ge1xuICAgIGxldCBwb2ludEN1c3RvbUljb246IGFueSA9IEwubWFya2VyKG1hcmtlckxvY2F0aW9uLCB7XG4gICAgICBpY29uOiBpY29uLFxuICAgICAgcmlzZU9uSG92ZXI6IGZhbHNlLFxuICAgIH0pO1xuICAgIHBvaW50Q3VzdG9tSWNvbi5iaW5kVG9vbHRpcChidWlsZE1hbmhvbGVUb29sdGlwU3RyaW5nKHBvaW50KSk7XG4gICAgcG9pbnRDdXN0b21JY29uWydrYW5kb19pbmRleF9vYmplY3QnXSA9IGluZGV4O1xuICAgIHBvaW50Q3VzdG9tSWNvblsna2FuZG9fZmV3X2xheWVyX2ljb24nXSA9IHRydWU7XG4gICAgcG9pbnRDdXN0b21JY29uWydrYW5kb19zZWNvbmRhcnknXSA9IHRoaXJkSWNvbiA/IGZhbHNlIDogc2Vjb25kYXJ5SWNvbjtcbiAgICBwb2ludEN1c3RvbUljb25bJ2thbmRvX3RoaXJkJ10gPSB0aGlyZEljb247XG4gICAgcG9pbnRDdXN0b21JY29uWydrYW5kb19vYmplY3RfaWQnXSA9IHBvaW50LmlkO1xuICAgIHBvaW50Q3VzdG9tSWNvblsna2FuZG9fb2JqZWN0J10gPSAnU2FtcGxpbmcnO1xuICAgIGlmIChob3ZlcmVkKSBwb2ludEN1c3RvbUljb25bJ2thbmRvX29iamVjdCddID0gJ1NhbXBsaW5nSG92ZXJlZCc7XG4gICAgbGF5ZXJHcm91cC5hZGRMYXllcihwb2ludEN1c3RvbUljb24pO1xuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVPYnNlcnZhdGlvbkljb25Qb2ludCA9IChcbiAgbWFya2VyTG9jYXRpb246IExhdExuZ1R1cGxlLFxuICBzZWNvbmRhcnlJY29uOiBib29sZWFuLFxuICBtYXAsXG4gIHBvaW50OiBJUG9pbnQsXG4gIGV2ZW50OiBJRXZlbnQsXG4gIGhvdmVyZWQ/LFxuICBsYXllckdyb3VwPyxcbikgPT4ge1xuICAvLyBpY29uU2l6ZTogW3dpZHRoLCBoZWlnaHRdLFxuICAvLyBJY29uIEFuY2hvcjogWygtcmlnaHQpKCtsZWZ0KSwgKC1kb3duKSgrdXApXVxuICBsZXQgb2JzZXJ2YXRpb25JY29uID0gW1xuICAgIEwuaWNvbih7XG4gICAgICBpY29uVXJsOiBwaW5rQ2lyY2xlVVJMLFxuICAgICAgaWNvblNpemU6IHNlY29uZGFyeUljb24gPyBbMCwgMF0gOiBbMCwgMF0sXG4gICAgICBpY29uQW5jaG9yOiBzZWNvbmRhcnlJY29uID8gWy03LCA0MF0gOiBbMTAuNywgMzMuN10sXG4gICAgICBwb3B1cEFuY2hvcjogWzAsIC0zMF0sXG4gICAgfSksXG4gICAgTC5pY29uKHtcbiAgICAgIGljb25Vcmw6IG9ic2VydmF0aW9uSWNvblVSTCxcbiAgICAgIGljb25TaXplOiBzZWNvbmRhcnlJY29uID8gWzAsIDBdIDogWzAsIDBdLFxuICAgICAgaWNvbkFuY2hvcjogc2Vjb25kYXJ5SWNvbiA/IFstOCwgMzhdIDogWzUsIDMwXSxcbiAgICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgICB9KSxcbiAgXTtcblxuICBpZiAobWFya2VyQmVsb25nc1RvU2VsZWN0ZWRTb3VyY2UoZXZlbnQsIHBvaW50KSAmJiAhc2Vjb25kYXJ5SWNvbikge1xuICAgIG9ic2VydmF0aW9uSWNvbi51bnNoaWZ0KHNlbGVjdGVkQmFja2dyb3VuZCgpKTtcbiAgfSBlbHNlIGlmIChtYXJrZXJCZWxvbmdzVG9Tb3VyY2UoZXZlbnQsIHBvaW50KSAmJiAhc2Vjb25kYXJ5SWNvbikge1xuICAgIG9ic2VydmF0aW9uSWNvbi51bnNoaWZ0KGJlbG9uZ3NUb1NvdXJjZUJhY2tncm91bmQoKSk7XG4gIH0gZWxzZSB7XG4gICAgb2JzZXJ2YXRpb25JY29uLnVuc2hpZnQoc3RhbmRhcmRCYWNrZ3JvdW5kKHNlY29uZGFyeUljb24pKTtcbiAgfVxuXG4gIG9ic2VydmF0aW9uSWNvbi5mb3JFYWNoKChpY29uLCBpbmRleCkgPT4ge1xuICAgIGxldCBwb2ludEN1c3RvbUljb246IGFueSA9IEwubWFya2VyKG1hcmtlckxvY2F0aW9uLCB7XG4gICAgICBpY29uOiBpY29uLFxuICAgICAgcmlzZU9uSG92ZXI6IGZhbHNlLFxuICAgIH0pO1xuICAgIHBvaW50Q3VzdG9tSWNvbi5iaW5kVG9vbHRpcChidWlsZE1hbmhvbGVUb29sdGlwU3RyaW5nKHBvaW50KSk7XG4gICAgcG9pbnRDdXN0b21JY29uWydrYW5kb19pbmRleF9vYmplY3QnXSA9IGluZGV4O1xuICAgIHBvaW50Q3VzdG9tSWNvblsna2FuZG9fZmV3X2xheWVyX2ljb24nXSA9IHRydWU7XG4gICAgcG9pbnRDdXN0b21JY29uWydrYW5kb19zZWNvbmRhcnknXSA9IHNlY29uZGFyeUljb247XG4gICAgcG9pbnRDdXN0b21JY29uWydrYW5kb190aGlyZCddID0gZmFsc2U7XG4gICAgcG9pbnRDdXN0b21JY29uWydrYW5kb19vYmplY3RfaWQnXSA9IHBvaW50LmlkO1xuICAgIHBvaW50Q3VzdG9tSWNvblsna2FuZG9fb2JqZWN0J10gPSAnT2JzZXJ2YXRpb24nO1xuICAgIGlmIChob3ZlcmVkKSBwb2ludEN1c3RvbUljb25bJ2thbmRvX29iamVjdCddID0gJ09ic2VydmF0aW9uSG92ZXJlZCc7XG4gICAgbGF5ZXJHcm91cC5hZGRMYXllcihwb2ludEN1c3RvbUljb24pO1xuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVTYW1wbGluZ0ljb25zID0gKFxuICBtYXJrZXJMb2NhdGlvbjogTGF0TG5nVHVwbGUsXG4gIGV2ZW50OiBJRXZlbnQsXG4gIHBvaW50OiBJUG9pbnQsXG4gIG1hcCxcbiAgaG92ZXJlZCxcbiAgbGF5ZXJHcm91cD8sXG4pID0+IHtcbiAgbGV0IHNhbXBsZWRQb2ludElkcyA9IGV2ZW50LnNhbXBsaW5ncy5tYXAoKHMpID0+IHMucG9pbnRfaWQpO1xuICBpZiAoXG4gICAgZXZlbnQgIT09IG51bGwgJiZcbiAgICBldmVudC5zYW1wbGluZ3MubGVuZ3RoICE9PSAwICYmXG4gICAgc2FtcGxlZFBvaW50SWRzLmluY2x1ZGVzKHBvaW50LmlkKVxuICApIHtcbiAgICBjcmVhdGVTYW1wbGluZ0ljb25Qb2ludChcbiAgICAgIG1hcmtlckxvY2F0aW9uLFxuICAgICAgbWF0Y2hJY29uVG9Qb2ludChwb2ludCwgZXZlbnQpICE9PSBudWxsLFxuICAgICAgbWFwLFxuICAgICAgcG9pbnQsXG4gICAgICBldmVudCxcbiAgICAgIGhvdmVyZWQsXG4gICAgICBsYXllckdyb3VwLFxuICAgICk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBwb3B1cENvbnRlbnQgPSAob2JzOiBhbnksIHBvaW50OiBJUG9pbnQpID0+IHtcbiAgaWYgKG9icyA9PT0gbnVsbCkge1xuICAgIHJldHVybiBgXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXZlbnQtcG9wdXBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9wdXAtZ3JhcGgtaWNvbiBwb3B1cC1ncmFwaC1pY29uLSR7cG9pbnQuaWR9XCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiJHtHcmFwaEljb259XCIvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3B1cC1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgIDxoNSBjbGFzcz1cInBvcHVwLWNvbnRlbnRfX3NpdGUtbmFtZVwiPjxiPiR7cG9pbnQuZ3JvdXAubmFtZX08L2I+PC9oNT5cbiAgICAgICAgICAgICAgICAgICAgPGhyLz5cbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJzZWN0b3JcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgYDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gYFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV2ZW50LXBvcHVwXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvcHVwLWdyYXBoLWljb24gcG9wdXAtZ3JhcGgtaWNvbi0ke29icy5pZH1cIj5cbiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCIke0dyYXBoSWNvbn1cIi8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvcHVwLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGg1IGNsYXNzPVwicG9wdXAtY29udGVudF9fc2l0ZS1uYW1lXCI+PGI+JHtcbiAgICAgICAgICAgICAgICAgICAgICBwb2ludC5ncm91cC5uYW1lXG4gICAgICAgICAgICAgICAgICAgIH08L2I+PC9oNT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvcHVwLWNvbnRlbnRfX3NldmVyaXR5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInBvcHVwLWNvbnRlbnRfX3NldmVyaXR5LXBcIj4ke2kxOG4udChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYGV2ZW50c19vdmVydmlldy5zZXZlcml0eWAsXG4gICAgICAgICAgICAgICAgICAgICAgICApfTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiJHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BvcHVwLWNvbnRlbnRfX3NldmVyaXR5LS0nICsgb2JzLnNldmVyaXR5XG4gICAgICAgICAgICAgICAgICAgICAgICB9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGIgY2xhc3M9XCJwb3B1cC1jb250ZW50X19zZXZlcml0eS1iXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7aTE4bi50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBldmVudHNfb3ZlcnZpZXcuc2V2ZXJpdGllcy4ke29icy5zZXZlcml0eX1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICA8aHIgY2xhc3M9XCJwb3B1cC1jb250ZW50X19oclwiIC8+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvcHVwLWNvbnRlbnRfX2Rpc2NoYXJnZS10aW1lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwicG9wdXAtY29udGVudF9fc2V2ZXJpdHktcFwiPiR7aTE4bi50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGV2ZW50c19vdmVydmlldy5maXJzdF9zZWVuYCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApfTo8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+PGIgaWQ9XCJmaXJzdC1zZWVuLXBvcHVwXCI+PC9iPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInBvcHVwLWNvbnRlbnRfX3NldmVyaXR5LXBcIj4ke2kxOG4udChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBldmVudHNfb3ZlcnZpZXcubGFzdF9zZWVuYCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApfTo8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+PGIgaWQ9XCJsYXN0LXNlZW4tcG9wdXBcIj48L2I+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIGA7XG4gIH1cbn07XG5cbmNvbnN0IGdldEljb24gPSAocG9pbnQ6IElQb2ludCwgY2xpY2tlZDogYm9vbGVhbiwgc3VidGl0bGU/OiBzdHJpbmcpID0+IHtcbiAgY29uc3QgaXNXV1RQID0gcG9pbnQuZ3JvdXAudHlwZSA9PT0gJ0dyb3Vwczo6V2FzdGV3YXRlclRyZWF0bWVudFBsYW50JztcbiAgY29uc3QgdHlwZSA9XG4gICAgcG9pbnQuaGFzX2RldmljZSB8fCBpc1dXVFAgPyBwb2ludC5ncm91cC50eXBlIDogJ0dyb3Vwczo6ZGVmYXVsdCc7XG4gIGxldCBzdWJ0aXRsZVRleHQgPSBzdWJ0aXRsZSA/IHN1YnRpdGxlIDogcG9pbnQuZ3JvdXAuc2VjdG9yX25hbWU7XG4gIGlmIChpc1dXVFAgJiYgIXBvaW50Lmhhc19kZXZpY2UpIHtcbiAgICBzdWJ0aXRsZVRleHQgKz0gYCAoJHtpMThuLnQoXG4gICAgICAnZGFzaGJvYXJkX3YyLnV0aWxpdHlfZGFzaGJvYXJkLnRvcGJhci5xdWFsaXR5LXN1bW1hcnkudW5tb25pdG9yZWQnLFxuICAgICl9KWA7XG4gIH1cbiAgcmV0dXJuIGdldFBvaW50SWNvbkJ5VHlwZShcbiAgICB0eXBlLFxuICAgIHBvaW50Lm5hbWUsXG4gICAgc3VidGl0bGVUZXh0LFxuICAgIGNsaWNrZWQsXG4gICAgIWNsaWNrZWQsXG4gICAgZmFsc2UsXG4gICAgcG9pbnQuaGFzX3NhbXBsZXIsXG4gICk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2V0SWNvbiA9IChlbGVtZW50LCBjbGlja2VkLCBwb2ludCwgc3VidGl0bGUgPSAnJykgPT4ge1xuICBlbGVtZW50LnNldEljb24oZ2V0SWNvbihwb2ludCwgY2xpY2tlZCwgc3VidGl0bGUpKTtcbn07XG5cbi8vIHJvdW5kIHRvIG5lYXJlc3QgdGhvdXNhbmQgaXMgdXNlZCB3aGVuIHlvdSB3YW50IHRvIHJvdW5kIHRoZSB3YXRlciBjb25zdW1wdGlvbiB0byB0aGUgbmVhcmVzdCB0aG91c2FuZFxuLy8gZm9yIGV4YW1wbGU6IDIzNCw1NjcgLT4gMjM1LDAwMFxuZXhwb3J0IGNvbnN0IGNhbGN1bGF0ZVdhdGVyQ29uc3VtcHRpb24gPSAoXG4gIGZsb3dfcmF0ZV91bml0OiBzdHJpbmcsXG4gIHdhdGVyQ29uc3VtcHRpb246IG51bWJlcixcbiAgcm91bmRfdG9fbmVhcmVzdF9rOiBib29sZWFuID0gZmFsc2UsXG4pID0+IHtcbiAgbGV0IGNhbGN1bGF0ZWQgPSAnMCc7XG5cbiAgaWYgKHdhdGVyQ29uc3VtcHRpb24gPiAwKSB7XG4gICAgc3dpdGNoIChmbG93X3JhdGVfdW5pdCkge1xuICAgICAgY2FzZSAnbTNkJzpcbiAgICAgICAgY2FsY3VsYXRlZCA9IHdhdGVyQ29uc3VtcHRpb24udG9GaXhlZCgyKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdnZF91cyc6XG4gICAgICAgIGNhbGN1bGF0ZWQgPSAod2F0ZXJDb25zdW1wdGlvbiAqIDI2NC4xNzIpLnRvRml4ZWQoMik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZ2RfdWsnOlxuICAgICAgICBjYWxjdWxhdGVkID0gKHdhdGVyQ29uc3VtcHRpb24gKiAyMTkuOTY5KS50b0ZpeGVkKDIpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgaWYgKHJvdW5kX3RvX25lYXJlc3Rfaykge1xuICAgIHJldHVybiByb3VuZFRvTmVhcmVzdFRob3VzYW5kKHBhcnNlRmxvYXQoY2FsY3VsYXRlZCkpLnRvTG9jYWxlU3RyaW5nKCk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIE1hdGgucm91bmQocGFyc2VGbG9hdChjYWxjdWxhdGVkKSkudG9Mb2NhbGVTdHJpbmcoKTtcbiAgfVxufTtcblxuY29uc3Qgcm91bmRUb05lYXJlc3RUaG91c2FuZCA9IChudW1iZXIpID0+IHtcbiAgLy8gaWYoaXNBbHJlYWR5Um91bmRlZChudW1iZXIpKSB7XG4gIC8vICAgcmV0dXJuIG51bWJlcjtcbiAgLy8gfVxuXG4gIGlmIChudW1iZXIgPCAxMDAwKSB7XG4gICAgcmV0dXJuIE1hdGgucm91bmQobnVtYmVyKTtcbiAgfVxuXG4gIGNvbnN0IHJvdW5kZWRUaG91c2FuZHMgPSBNYXRoLnJvdW5kKG51bWJlciAvIDEwMDApO1xuICBjb25zdCByb3VuZGVkVmFsdWUgPSByb3VuZGVkVGhvdXNhbmRzICogMTAwMDtcblxuICByZXR1cm4gcm91bmRlZFZhbHVlO1xufTtcblxuLy8gY29uc3QgaXNBbHJlYWR5Um91bmRlZCA9IChudW1iZXIpID0+IHtcbi8vICAgcmV0dXJuIG51bWJlciA9PT0gTWF0aC5yb3VuZChudW1iZXIpO1xuLy8gfVxuXG5leHBvcnQgY29uc3QgdHJhbnNsYXRlRmxvd1JhdGUgPSAoZmxvd19yYXRlX3VuaXQpID0+IHtcbiAgcmV0dXJuIGkxOG4udChcbiAgICBgZGFzaGJvYXJkX3YyLnByb2ZpbGUuZmxvd19yYXRlX3VuaXRfb3B0aW9ucy4ke1xuICAgICAgZmxvd19yYXRlX3VuaXQuaW5jbHVkZXMoJ2dkJykgPyAnZ2QnIDogZmxvd19yYXRlX3VuaXRcbiAgICB9YCxcbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBoYW5kbGVNYXJrZXJFdmVudHMgPSAoXG4gIG1hcCxcbiAgcG9pbnQsXG4gIHBvaW50Q3VzdG9tSWNvbixcbiAgaGFuZGxlQ2xpY2ssXG4pID0+IHtcbiAgbGV0IHRvb2x0aXBWaXNpYmxlID0gZmFsc2U7XG5cbiAgbWFwLm9uKCd6b29tc3RhcnQnLCBmdW5jdGlvbiAoKSB7XG4gICAgbWFwLmNsb3NlUG9wdXAoKTtcbiAgfSk7XG5cbiAgcG9pbnRDdXN0b21JY29uLm9uKCdwb3B1cGNsb3NlJywgKCkgPT4ge1xuICAgIC8vIHNldEljb24ocG9pbnRDdXN0b21JY29uLCBmYWxzZSwgcG9pbnQpO1xuICAgIHRvb2x0aXBWaXNpYmxlID0gZmFsc2U7XG4gIH0pO1xuXG4gIHBvaW50Q3VzdG9tSWNvbi5vbigncG9wdXBvcGVuJywgKCkgPT4ge1xuICAgIC8vIHNldEljb24ocG9pbnRDdXN0b21JY29uLCB0cnVlLCBwb2ludCk7XG4gICAgdG9vbHRpcFZpc2libGUgPSB0cnVlO1xuICB9KTtcblxuICBwb2ludEN1c3RvbUljb24ub24oJ21vdXNlb3ZlcicsICgpID0+IHtcbiAgICBpZiAodG9vbHRpcFZpc2libGUpIHJldHVybjtcblxuICAgIHNldEljb24ocG9pbnRDdXN0b21JY29uLCB0cnVlLCBwb2ludCk7XG4gICAgdG9vbHRpcFZpc2libGUgPSB0cnVlO1xuICB9KTtcblxuICBwb2ludEN1c3RvbUljb24ub24oJ21vdXNlb3V0JywgKCkgPT4ge1xuICAgIGlmIChwb2ludEN1c3RvbUljb24uaXNQb3B1cE9wZW4oKSkgcmV0dXJuO1xuXG4gICAgc2V0SWNvbihwb2ludEN1c3RvbUljb24sIGZhbHNlLCBwb2ludCk7XG4gICAgdG9vbHRpcFZpc2libGUgPSBmYWxzZTtcbiAgfSk7XG5cbiAgaWYgKHR5cGVvZiBoYW5kbGVDbGljayA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHBvaW50Q3VzdG9tSWNvbi5vbignY2xpY2snLCAoKSA9PiB7XG4gICAgICBoYW5kbGVDbGljayhwb2ludEN1c3RvbUljb24ua2FuZG9fb2JqZWN0X2lkKTtcblxuICAgICAgaWYgKHBvaW50SXNGYWN0b3J5KHBvaW50KSkge1xuICAgICAgICBzZW5kQW5hbHl0aWNzRXZlbnQoJ01hcCBWaWV3IC0gRmFjdG9yeSBjbGlja2VkJywgJ21hcCcsIHtcbiAgICAgICAgICBwb2ludF9pZDogcG9pbnQuaWQsXG4gICAgICAgICAgcG9pbnRfbmFtZTogcG9pbnQubmFtZSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBiaW5kUG9wdXBUb01hcmtlciA9IChwb2ludCwgbGF5ZXJHcm91cCwgZmxvd19yYXRlX3VuaXQpID0+IHtcbiAgbGV0IGNvbnRlbnQgPSBgXG4gICAgPGRpdiBjbGFzcz0nbWFpbi1jb250ZW50Jz5cbiAgICAgICAgPGRpdiBjbGFzcz0nbWFpbi1jb250ZW50X19oZWFkZXInPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1haW4tY29udGVudF9faGVhZGVyX190aXRsZXNcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdtYWluLWNvbnRlbnRfX2hlYWRlcl9fdGl0bGVzX190aXRsZSc+JHtcbiAgICAgICAgICAgICAgICAgIHBvaW50Lm5hbWVcbiAgICAgICAgICAgICAgICB9PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nbWFpbi1jb250ZW50X19oZWFkZXJfX3RpdGxlc19fc3VidGl0bGUnPiR7XG4gICAgICAgICAgICAgICAgICBwb2ludC5ncm91cC5zZWN0b3JfbmFtZVxuICAgICAgICAgICAgICAgIH08L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICBcbiAgICAgICAgPGRpdiBjbGFzcz0nbWFpbi1jb250ZW50X19ib2R5Jz5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9J21haW4tY29udGVudF9fYm9keV9faXRlbSc+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nbWFpbi1jb250ZW50X19ib2R5X19pdGVtX19pY29uJz5cbiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9JyR7d2F0ZXJSZXVzZUljb259JyAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J21haW4tY29udGVudF9fYm9keV9faXRlbV9fdGl0bGVzJz5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J21haW4tY29udGVudF9fYm9keV9faXRlbV9fdGl0bGVzX190aXRsZSc+XG4gICAgICAgICAgICAgICAgICAgICR7Z2V0Rmxvd1JhdGUocG9pbnQuZ3JvdXAud2F0ZXJfZGlzY2hhcmdlLCBmbG93X3JhdGVfdW5pdCl9XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J21haW4tY29udGVudF9fYm9keV9faXRlbV9fdGl0bGVzX19zdWJ0aXRsZSc+JHtpMThuLnQoXG4gICAgICAgICAgICAgICAgICAgICd3YXRlcl9kaXNjaGFyZ2UnLFxuICAgICAgICAgICAgICAgICAgKX08L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICBgO1xuXG4gIGxheWVyR3JvdXAuYmluZFBvcHVwKGNvbnRlbnQsIHtcbiAgICBjbGFzc05hbWU6ICdwb2ludC1tYXJrZXItcG9wdXAnLFxuICAgIG1pbldpZHRoOiAnMjE0cHgnLFxuICAgIG1heFdpZHRoOiAnMjE0cHgnLFxuICAgIGNsb3NlQnV0dG9uOiB0cnVlLFxuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRGbG93UmF0ZSA9IChcbiAgd2F0ZXJDb25zdW1wdGlvbjogbnVtYmVyLFxuICBmbG93UmF0ZVVuaXQ6IHN0cmluZyxcbiAgaXNSb3VuZDogYm9vbGVhbiA9IGZhbHNlLFxuKSA9PiB7XG4gIGlmICh3YXRlckNvbnN1bXB0aW9uID4gMCkge1xuICAgIHJldHVybiAoXG4gICAgICBjYWxjdWxhdGVXYXRlckNvbnN1bXB0aW9uKGZsb3dSYXRlVW5pdCwgd2F0ZXJDb25zdW1wdGlvbiwgaXNSb3VuZCkgK1xuICAgICAgJyAnICtcbiAgICAgIHRyYW5zbGF0ZUZsb3dSYXRlKGZsb3dSYXRlVW5pdClcbiAgICApO1xuICB9XG4gIHJldHVybiBpMThuLnQoJ2V2ZW50c19vdmVydmlldy5zZXZlcml0aWVzLnVua25vd24nKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZW1vdmVMYXllckdyb3VwID0gKG1hcCwgbGF5ZXJHcm91cCkgPT4ge1xuICBpZiAobWFwLmhhc0xheWVyKGxheWVyR3JvdXApKSB7XG4gICAgbWFwLnJlbW92ZUxheWVyKGxheWVyR3JvdXApO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgYWRkTGF5ZXJHcm91cCA9IChtYXAsIGxheWVyR3JvdXApID0+IHtcbiAgaWYgKCFtYXAuaGFzTGF5ZXIobGF5ZXJHcm91cCkpIHtcbiAgICBtYXAuYWRkTGF5ZXIobGF5ZXJHcm91cCk7XG4gIH0gZWxzZSB7XG4gICAgcmVtb3ZlTGF5ZXJHcm91cChtYXAsIGxheWVyR3JvdXApO1xuICAgIGFkZExheWVyR3JvdXAobWFwLCBsYXllckdyb3VwKTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHBvaW50SXNXV1RQID0gKHBvaW50OiBJUG9pbnQpID0+IHtcbiAgcmV0dXJuIHBvaW50Lmdyb3VwLnR5cGUgPT09ICdHcm91cHM6Oldhc3Rld2F0ZXJUcmVhdG1lbnRQbGFudCc7XG59O1xuXG5leHBvcnQgY29uc3QgcG9pbnRJc0ZhY3RvcnkgPSAocG9pbnQ6IElQb2ludCkgPT4ge1xuICByZXR1cm4gaXNGYWN0b3J5VHlwZShwb2ludC5ncm91cC50eXBlKTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc0ZhY3RvcnlUeXBlID0gKHR5cGU6IHN0cmluZykgPT4ge1xuICByZXR1cm4gdHlwZSA9PT0gJ0dyb3Vwczo6RmFjdG9yeSc7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUNBLElBQUFBLFFBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLEtBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUEyQyxJQUFBRSxXQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFBQSxJQUFBRyxhQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUFBQSxJQUFBSSxXQUFBLEdBQUFMLHNCQUFBLENBQUFDLE9BQUE7QUFBQSxJQUFBSyxnQkFBQSxHQUFBTixzQkFBQSxDQUFBQyxPQUFBO0FBTzNDLElBQUFNLGdCQUFBLEdBQUFQLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBTyxrQkFBQSxHQUFBUixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQVEsb0JBQUEsR0FBQVQsc0JBQUEsQ0FBQUMsT0FBQTtBQUF5RixJQUFBUyxhQUFBLEdBQUFWLHNCQUFBLENBQUFDLE9BQUE7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
485
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbGVhZmxldCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2kxOG4iLCJfYmx1ZUNpcmNsZSIsIl9zYW1wbGluZ0ljb24iLCJfcGlua0NpcmNsZSIsIl9vYnNlcnZhdGlvbkljb24iLCJfcmVkUGluUmVkU2hhZG93IiwiX3doaXRlUGluUmVkU2hhZG93IiwiX3doaXRlUGluQmxhY2tTaGFkb3ciLCJfeWVsbG93Q2lyY2xlIiwiX2ZhY3RvcnlJY29uIiwiX2dyZWVuQ2lyY2xlIiwiX3B1bXBTdGF0aW9uSWNvbiIsIl9waW5XYXRlciIsIl9icmlnaHRCbHVlQ2lyY2xlIiwiX1dXVFBJY29uIiwiX3dhdGVyTm9CYWNrZ3JvdW5kIiwiX3doaXRlUG9pbnQiLCJfUG9pbnRJY29uIiwiX3dhdGVyX3JldXNlIiwiX3V0aWxzIiwiaXNDb2xsZWN0b3JGb2N1c2VkIiwicG9pbnQiLCJldmVudCIsIl9ldmVudCRvYnNlcnZhdGlvbnMiLCJvYnNlcnZhdGlvbnMiLCJsZW5ndGgiLCJpZCIsInBvaW50X2lkIiwiZXhwb3J0cyIsImJ1aWxkTWFuaG9sZVRvb2x0aXBTdHJpbmciLCJzdHJpbmciLCJjb25jYXQiLCJncm91cCIsIm5hbWUiLCJwb2ludElzRmFjdG9yeSIsInNlY3Rvcl9uYW1lIiwid2F0ZXJfZGlzY2hhcmdlIiwiYnViYmxlRm9yV1dUUCIsImFyZ3MiLCJwb2ludEN1c3RvbUljb24iLCJMIiwibWFya2VyIiwibWFya2VyTG9jYXRpb24iLCJpY29uIiwiZ2V0SWNvbiIsInd3dHBQb2ludCIsInJpc2VPbkhvdmVyIiwiaGFzX2RldmljZSIsImhhc19zYW1wbGVyIiwiY3JlYXRlQnViYmxlUG9pbnQiLCJtYXAiLCJob3ZlcmVkIiwibGF5ZXJHcm91cCIsImZsb3dfcmF0ZV91bml0IiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwiaGFuZGxlQ2xpY2siLCJtYXJrZXJPbk1hcCIsImdldExheWVycyIsImZpbmQiLCJsYXllciIsImthbmRvX29iamVjdF9pZCIsInN1YnRpdGxlIiwidHlwZSIsImdldFBvaW50SWNvbkJ5VHlwZSIsImFkZExheWVyIiwiYmluZFBvcHVwVG9NYXJrZXIiLCJoYW5kbGVNYXJrZXJFdmVudHMiLCJjcmVhdGVNYW5ob2xlUG9pbnQiLCJwb2ludEljb24iLCJJY29uIiwiaWNvblVybCIsIndoaXRlUG9pbnQiLCJpY29uU2l6ZSIsImljb25BbmNob3IiLCJtYW5ob2xlSWNvbiIsIk1hcmtlciIsImJpbmRUb29sdGlwIiwibWF0Y2hJY29uVG9Qb2ludCIsImNvbWJpbmVkRmFjdG9yeUljb24iLCJtYXJrZXJCZWxvbmdzVG9TZWxlY3RlZFNvdXJjZSIsInVuc2hpZnQiLCJzZWxlY3RlZEJhY2tncm91bmQiLCJtYXJrZXJCZWxvbmdzVG9Tb3VyY2UiLCJiZWxvbmdzVG9Tb3VyY2VCYWNrZ3JvdW5kIiwic3RhbmRhcmRCYWNrZ3JvdW5kIiwiY29tYmluZWRQdW1wU3RhdGlvbkljb24iLCJjb21iaW5lZFdXVFBJY29uIiwicmVkUGluUmVkU2hhZG93Iiwid2F0ZXJJY29uTm9CYWNrZ3JvdW5kIiwicG9wdXBBbmNob3IiLCJjb21iaW5lZENvbGxlY3RvcnNJY29uIiwic2Vjb25kYXJ5IiwidGhpcmQiLCJ3aGl0ZVBpbkJsYWNrU2hhZG93IiwieWVsbG93Q2lyY2xlVVJMIiwicGxhbnRJY29uVVJMIiwiZ3JlZW5DaXJjbGVVUkwiLCJwdW1wU3RhdGlvbkljb25VUkwiLCJjb2xsZWN0b3JJY29uIiwiYnJpZ2h0Qmx1ZUNpcmNsZVVSTCIsIldXVFBJY29uVVJMIiwid2hpdGVQaW5SZWRTaGFkb3ciLCJzb3VyY2UiLCJzb3VyY2VzIiwiZmlsdGVyIiwic2VsZWN0ZWRfc291cmNlIiwiY3JlYXRlU2FtcGxpbmdJY29uUG9pbnQiLCJzZWNvbmRhcnlJY29uIiwic2FtcGxpbmdJY29uIiwiYmx1ZUNpcmNsZVVSTCIsInNhbXBsaW5nSWNvblVSTCIsInRoaXJkSWNvbiIsImZvckVhY2giLCJpbmRleCIsImNyZWF0ZU9ic2VydmF0aW9uSWNvblBvaW50Iiwib2JzZXJ2YXRpb25JY29uIiwicGlua0NpcmNsZVVSTCIsIm9ic2VydmF0aW9uSWNvblVSTCIsImNyZWF0ZVNhbXBsaW5nSWNvbnMiLCJzYW1wbGVkUG9pbnRJZHMiLCJzYW1wbGluZ3MiLCJzIiwiaW5jbHVkZXMiLCJwb3B1cENvbnRlbnQiLCJvYnMiLCJHcmFwaEljb24iLCJpMThuIiwidCIsInNldmVyaXR5IiwiY2xpY2tlZCIsImlzV1dUUCIsInN1YnRpdGxlVGV4dCIsInNldEljb24iLCJlbGVtZW50IiwiY2FsY3VsYXRlV2F0ZXJDb25zdW1wdGlvbiIsIndhdGVyQ29uc3VtcHRpb24iLCJyb3VuZF90b19uZWFyZXN0X2siLCJjYWxjdWxhdGVkIiwidG9GaXhlZCIsInJvdW5kVG9OZWFyZXN0VGhvdXNhbmQiLCJwYXJzZUZsb2F0IiwidG9Mb2NhbGVTdHJpbmciLCJNYXRoIiwicm91bmQiLCJudW1iZXIiLCJyb3VuZGVkVGhvdXNhbmRzIiwicm91bmRlZFZhbHVlIiwidHJhbnNsYXRlRmxvd1JhdGUiLCJ0b29sdGlwVmlzaWJsZSIsIm9uIiwiY2xvc2VQb3B1cCIsImlzUG9wdXBPcGVuIiwic2VuZEFuYWx5dGljc0V2ZW50IiwicG9pbnRfbmFtZSIsImNvbnRlbnQiLCJ3YXRlclJldXNlSWNvbiIsImdldEZsb3dSYXRlIiwiYmluZFBvcHVwIiwiY2xhc3NOYW1lIiwibWluV2lkdGgiLCJtYXhXaWR0aCIsImNsb3NlQnV0dG9uIiwiZmxvd1JhdGVVbml0IiwiaXNSb3VuZCIsInJlbW92ZUxheWVyR3JvdXAiLCJoYXNMYXllciIsInJlbW92ZUxheWVyIiwiYWRkTGF5ZXJHcm91cCIsInBvaW50SXNXV1RQIiwiaXNGYWN0b3J5VHlwZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9XaWRnZXRzL01hcC9wb2ludHMvUG9pbnRVdGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgR3JhcGhJY29uIGZyb20gJy4uLy4uLy4uL2Fzc2V0cy9saW5lLWNoYXJ0LnN2Zyc7XG5pbXBvcnQgTCwgeyBMYXRMbmdUdXBsZSB9IGZyb20gJ2xlYWZsZXQnO1xuaW1wb3J0IGkxOG4gZnJvbSAnLi4vLi4vLi4vdXRpbGl0aWVzL2kxOG4nO1xuaW1wb3J0IHsgSVBvaW50IH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvcG9pbnRzL21vZGVscy9JUG9pbnQnO1xuaW1wb3J0IGJsdWVDaXJjbGVVUkwgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL2JsdWUtY2lyY2xlLnN2Zyc7XG5pbXBvcnQgc2FtcGxpbmdJY29uVVJMIGZyb20gJy4uLy4uLy4uL2Fzc2V0cy9wb2ludF9pY29ucy9zYW1wbGluZy1pY29uLnN2Zyc7XG5pbXBvcnQgcGlua0NpcmNsZVVSTCBmcm9tICcuLi8uLi8uLi9hc3NldHMvcG9pbnRfaWNvbnMvcGluay1jaXJjbGUuc3ZnJztcbmltcG9ydCBvYnNlcnZhdGlvbkljb25VUkwgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL29ic2VydmF0aW9uLWljb24uc3ZnJztcbmltcG9ydCB7IElFdmVudCB9IGZyb20gJy4uLy4uLy4uL3N0b3JlL2V2ZW50cy9tb2RlbHMvSUV2ZW50JztcbmltcG9ydCByZWRQaW5SZWRTaGFkb3cgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL3JlZC1waW4tcmVkLXNoYWRvdy5wbmcnO1xuaW1wb3J0IHdoaXRlUGluUmVkU2hhZG93IGZyb20gJy4uLy4uLy4uL2Fzc2V0cy9wb2ludF9pY29ucy93aGl0ZS1waW4tcmVkLXNoYWRvdy5wbmcnO1xuaW1wb3J0IHdoaXRlUGluQmxhY2tTaGFkb3cgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL3doaXRlLXBpbi1ibGFjay1zaGFkb3cucG5nJztcbmltcG9ydCB5ZWxsb3dDaXJjbGVVUkwgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL3llbGxvdy1jaXJjbGUuc3ZnJztcbmltcG9ydCBwbGFudEljb25VUkwgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL2ZhY3RvcnktaWNvbi5zdmcnO1xuaW1wb3J0IGdyZWVuQ2lyY2xlVVJMIGZyb20gJy4uLy4uLy4uL2Fzc2V0cy9wb2ludF9pY29ucy9ncmVlbi1jaXJjbGUuc3ZnJztcbmltcG9ydCBwdW1wU3RhdGlvbkljb25VUkwgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL3B1bXAtc3RhdGlvbi1pY29uLnN2Zyc7XG5pbXBvcnQgY29sbGVjdG9ySWNvbiBmcm9tICcuLi8uLi8uLi9hc3NldHMvbWFwL3Bpbi13YXRlci5zdmcnO1xuaW1wb3J0IGJyaWdodEJsdWVDaXJjbGVVUkwgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL2JyaWdodC1ibHVlLWNpcmNsZS5zdmcnO1xuaW1wb3J0IFdXVFBJY29uVVJMIGZyb20gJy4uLy4uLy4uL2Fzc2V0cy9wb2ludF9pY29ucy9XV1RQLWljb24uc3ZnJztcbmltcG9ydCB3YXRlckljb25Ob0JhY2tncm91bmQgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL3dhdGVyLW5vLWJhY2tncm91bmQuc3ZnJztcbmltcG9ydCB3aGl0ZVBvaW50IGZyb20gJy4uLy4uLy4uL2Fzc2V0cy93aGl0ZS1wb2ludC5wbmcnO1xuaW1wb3J0IHsgZ2V0UG9pbnRJY29uQnlUeXBlIH0gZnJvbSAnLi9Qb2ludEljb24nO1xuaW1wb3J0IHdhdGVyUmV1c2VJY29uIGZyb20gJy4uLy4uLy4uL2Fzc2V0cy9pY29ucy93YXRlcl9yZXVzZS5zdmcnO1xuaW1wb3J0IHsgc2VuZEFuYWx5dGljc0V2ZW50IH0gZnJvbSAnc3JjL3BhZ2VzL0Rhc2hib2FyZE1hcC91dGlscyc7XG5cbmV4cG9ydCBjb25zdCBpc0NvbGxlY3RvckZvY3VzZWQgPSAocG9pbnQ6IElQb2ludCwgZXZlbnQ6IElFdmVudCkgPT4ge1xuICByZXR1cm4gKFxuICAgIGV2ZW50Py5vYnNlcnZhdGlvbnM/Lmxlbmd0aCA9PT0gMSAmJlxuICAgIHBvaW50LmlkID09PSBldmVudC5vYnNlcnZhdGlvbnNbMF0ucG9pbnRfaWRcbiAgKTtcbn07XG5cbmNvbnN0IGJ1aWxkTWFuaG9sZVRvb2x0aXBTdHJpbmcgPSAocG9pbnQ6IElQb2ludCkgPT4ge1xuICBsZXQgc3RyaW5nID0gYCR7cG9pbnQuZ3JvdXAubmFtZX0gYDtcblxuICBpZiAocG9pbnRJc0ZhY3RvcnkocG9pbnQpKSB7XG4gICAgc3RyaW5nICs9IGA8YnIvPlNlY3RvcjogJHtwb2ludC5ncm91cC5zZWN0b3JfbmFtZX1gO1xuICAgIHN0cmluZyArPSBgPGJyLz5XYXRlciBDb25zdW1wdGlvbjogJHtwb2ludC5ncm91cC53YXRlcl9kaXNjaGFyZ2V9YDtcbiAgfSBlbHNlIHtcbiAgICBzdHJpbmcgPSBgJHtwb2ludC5uYW1lfWA7XG4gIH1cblxuICByZXR1cm4gc3RyaW5nO1xufTtcblxuZXhwb3J0IGNvbnN0IGJ1YmJsZUZvcldXVFAgPSAoYXJncykgPT4ge1xuICBjb25zdCBwb2ludEN1c3RvbUljb246IEwuTWFya2VyID0gTC5tYXJrZXIoYXJncy5tYXJrZXJMb2NhdGlvbiwge1xuICAgIGljb246IGdldEljb24oYXJncy53d3RwUG9pbnQsIGZhbHNlKSxcbiAgICByaXNlT25Ib3ZlcjogdHJ1ZSxcbiAgfSk7XG4gIHBvaW50Q3VzdG9tSWNvblsna2FuZG9fb2JqZWN0X2lkJ10gPSBhcmdzLnd3dHBQb2ludC5pZDtcbiAgcG9pbnRDdXN0b21JY29uWydrYW5kb19vYmplY3QnXSA9ICdQb2ludCc7XG4gIHBvaW50Q3VzdG9tSWNvblsna2FuZG9faGFzX2RldmljZSddID0gYXJncy53d3RwUG9pbnQuaGFzX2RldmljZTtcbiAgcG9pbnRDdXN0b21JY29uWydrYW5kb19oYXNfc2FtcGxlciddID0gYXJncy53d3RwUG9pbnQuaGFzX3NhbXBsZXI7XG5cbiAgcmV0dXJuIHBvaW50Q3VzdG9tSWNvbjtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVCdWJibGVQb2ludCA9IChcbiAgbWFya2VyTG9jYXRpb246IExhdExuZ1R1cGxlLFxuICBwb2ludDogSVBvaW50LFxuICBtYXAsXG4gIGhvdmVyZWQ/LFxuICBsYXllckdyb3VwPyxcbiAgZmxvd19yYXRlX3VuaXQgPSAnZ2RfdXMnLFxuICBoYW5kbGVDbGljaz8sXG4pID0+IHtcbiAgY29uc3QgbWFya2VyT25NYXAgPSBsYXllckdyb3VwXG4gICAgLmdldExheWVycygpXG4gICAgLmZpbmQoKGxheWVyKSA9PiBsYXllci5rYW5kb19vYmplY3RfaWQgPT09IHBvaW50LmlkKTtcblxuICBpZiAoIW1hcmtlck9uTWFwKSB7XG4gICAgY29uc3Qgc3VidGl0bGUgPSBwb2ludElzRmFjdG9yeShwb2ludCkgPyBwb2ludC5ncm91cC5zZWN0b3JfbmFtZSA6ICcnO1xuICAgIGNvbnN0IHR5cGUgPSBwb2ludC5oYXNfZGV2aWNlID8gcG9pbnQuZ3JvdXAudHlwZSA6ICdHcm91cHM6OmRlZmF1bHQnO1xuICAgIGxldCBwb2ludEN1c3RvbUljb246IEwuTWFya2VyID0gTC5tYXJrZXIobWFya2VyTG9jYXRpb24sIHtcbiAgICAgIGljb246IGdldFBvaW50SWNvbkJ5VHlwZShcbiAgICAgICAgdHlwZSxcbiAgICAgICAgcG9pbnQubmFtZSxcbiAgICAgICAgc3VidGl0bGUsXG4gICAgICAgIGZhbHNlLFxuICAgICAgICB0cnVlLFxuICAgICAgICBmYWxzZSxcbiAgICAgICAgcG9pbnQuaGFzX3NhbXBsZXIsXG4gICAgICApLFxuICAgICAgcmlzZU9uSG92ZXI6IHRydWUsXG4gICAgfSk7XG5cbiAgICBwb2ludEN1c3RvbUljb25bJ2thbmRvX29iamVjdF9pZCddID0gcG9pbnQuaWQ7XG4gICAgcG9pbnRDdXN0b21JY29uWydrYW5kb19vYmplY3QnXSA9ICdQb2ludCc7XG4gICAgcG9pbnRDdXN0b21JY29uWydrYW5kb19oYXNfZGV2aWNlJ10gPSBwb2ludC5oYXNfZGV2aWNlO1xuICAgIHBvaW50Q3VzdG9tSWNvblsna2FuZG9faGFzX3NhbXBsZXInXSA9IHBvaW50Lmhhc19zYW1wbGVyO1xuICAgIGlmIChob3ZlcmVkKSBwb2ludEN1c3RvbUljb25bJ2thbmRvX29iamVjdCddID0gJ1BvaW50SG92ZXJlZCc7XG5cbiAgICBsYXllckdyb3VwLmFkZExheWVyKHBvaW50Q3VzdG9tSWNvbik7XG4gICAgaWYgKHBvaW50SXNGYWN0b3J5KHBvaW50KSkge1xuICAgICAgYmluZFBvcHVwVG9NYXJrZXIocG9pbnQsIHBvaW50Q3VzdG9tSWNvbiwgZmxvd19yYXRlX3VuaXQpO1xuICAgIH1cblxuICAgIGhhbmRsZU1hcmtlckV2ZW50cyhtYXAsIHBvaW50LCBwb2ludEN1c3RvbUljb24sIGhhbmRsZUNsaWNrKTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZU1hbmhvbGVQb2ludCA9IChcbiAgbWFya2VyTG9jYXRpb246IExhdExuZ1R1cGxlLFxuICBwb2ludDogSVBvaW50LFxuICBtYXAsXG4gIGhvdmVyZWQ/LFxuICBsYXllckdyb3VwPyxcbikgPT4ge1xuICBsZXQgcG9pbnRJY29uID0gbmV3IEwuSWNvbih7XG4gICAgaWNvblVybDogd2hpdGVQb2ludCxcbiAgICBpY29uU2l6ZTogWzksIDldLFxuICAgIGljb25BbmNob3I6IFs0LjUsIDQuNV0sXG4gIH0pO1xuICBsZXQgbWFuaG9sZUljb246IGFueSA9IG5ldyBMLk1hcmtlcihtYXJrZXJMb2NhdGlvbiwge1xuICAgIGljb246IHBvaW50SWNvbixcbiAgICByaXNlT25Ib3ZlcjogdHJ1ZSxcbiAgfSk7XG4gIG1hbmhvbGVJY29uLmJpbmRUb29sdGlwKGJ1aWxkTWFuaG9sZVRvb2x0aXBTdHJpbmcocG9pbnQpKTtcbiAgbWFuaG9sZUljb25bJ2thbmRvX29iamVjdF9pZCddID0gcG9pbnQuaWQ7XG4gIG1hbmhvbGVJY29uWydrYW5kb19vYmplY3QnXSA9ICdQb2ludCc7XG4gIG1hbmhvbGVJY29uWydrYW5kb19wb2ludF90eXBlJ10gPSAnTWFuaG9sZSc7XG4gIG1hbmhvbGVJY29uWydrYW5kb19oYXNfZGV2aWNlJ10gPSBwb2ludC5oYXNfZGV2aWNlO1xuICBtYW5ob2xlSWNvblsna2FuZG9faGFzX3NhbXBsZXInXSA9IHBvaW50Lmhhc19zYW1wbGVyO1xuICBpZiAoaG92ZXJlZCkgbWFuaG9sZUljb25bJ2thbmRvX29iamVjdCddID0gJ1BvaW50SG92ZXJlZCc7XG4gIGxheWVyR3JvdXAuYWRkTGF5ZXIobWFuaG9sZUljb24pO1xufTtcblxuLy8gKioqQ29uc2lkZXIgcmVtb3ZpbmcgdGhpcyBmdW5jdGlvbiBpdCBpcyBub3QgdXNlZCBmb3IgbW9yZSB0aGFuIHR3byB5ZWFycyoqKlxuZXhwb3J0IGNvbnN0IG1hdGNoSWNvblRvUG9pbnQgPSAocG9pbnQ6IElQb2ludCwgZXZlbnQ6IElFdmVudCkgPT4ge1xuICBzd2l0Y2ggKHBvaW50Lmdyb3VwLnR5cGUpIHtcbiAgICBjYXNlICdHcm91cHM6OkZhY3RvcnknOlxuICAgICAgaWYgKGNvbWJpbmVkRmFjdG9yeUljb24ubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGlmIChtYXJrZXJCZWxvbmdzVG9TZWxlY3RlZFNvdXJjZShldmVudCwgcG9pbnQpKSB7XG4gICAgICAgICAgY29tYmluZWRGYWN0b3J5SWNvbi51bnNoaWZ0KHNlbGVjdGVkQmFja2dyb3VuZCgpKTtcbiAgICAgICAgfSBlbHNlIGlmIChtYXJrZXJCZWxvbmdzVG9Tb3VyY2UoZXZlbnQsIHBvaW50KSkge1xuICAgICAgICAgIGNvbWJpbmVkRmFjdG9yeUljb24udW5zaGlmdChiZWxvbmdzVG9Tb3VyY2VCYWNrZ3JvdW5kKCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbWJpbmVkRmFjdG9yeUljb24udW5zaGlmdChzdGFuZGFyZEJhY2tncm91bmQoKSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbWJpbmVkRmFjdG9yeUljb247XG4gICAgY2FzZSAnR3JvdXBzOjpQdW1wU3RhdGlvbic6XG4gICAgICBpZiAoY29tYmluZWRQdW1wU3RhdGlvbkljb24ubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGlmIChtYXJrZXJCZWxvbmdzVG9TZWxlY3RlZFNvdXJjZShldmVudCwgcG9pbnQpKSB7XG4gICAgICAgICAgY29tYmluZWRQdW1wU3RhdGlvbkljb24udW5zaGlmdChzZWxlY3RlZEJhY2tncm91bmQoKSk7XG4gICAgICAgIH0gZWxzZSBpZiAobWFya2VyQmVsb25nc1RvU291cmNlKGV2ZW50LCBwb2ludCkpIHtcbiAgICAgICAgICBjb21iaW5lZFB1bXBTdGF0aW9uSWNvbi51bnNoaWZ0KGJlbG9uZ3NUb1NvdXJjZUJhY2tncm91bmQoKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tYmluZWRQdW1wU3RhdGlvbkljb24udW5zaGlmdChzdGFuZGFyZEJhY2tncm91bmQoKSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbWJpbmVkUHVtcFN0YXRpb25JY29uO1xuICAgIGNhc2UgJ0dyb3Vwczo6V2FzdGV3YXRlclRyZWF0bWVudFBsYW50JzpcbiAgICAgIGlmIChjb21iaW5lZFdXVFBJY29uLmxlbmd0aCA9PT0gMikge1xuICAgICAgICBpZiAobWFya2VyQmVsb25nc1RvU2VsZWN0ZWRTb3VyY2UoZXZlbnQsIHBvaW50KSkge1xuICAgICAgICAgIGNvbWJpbmVkV1dUUEljb24udW5zaGlmdChzZWxlY3RlZEJhY2tncm91bmQoKSk7XG4gICAgICAgIH0gZWxzZSBpZiAobWFya2VyQmVsb25nc1RvU291cmNlKGV2ZW50LCBwb2ludCkpIHtcbiAgICAgICAgICBjb21iaW5lZFdXVFBJY29uLnVuc2hpZnQoYmVsb25nc1RvU291cmNlQmFja2dyb3VuZCgpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb21iaW5lZFdXVFBJY29uLnVuc2hpZnQoc3RhbmRhcmRCYWNrZ3JvdW5kKCkpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb21iaW5lZFdXVFBJY29uO1xuXG4gICAgY2FzZSAnR3JvdXBzOjpDb2xsZWN0b3JzJzpcbiAgICAgIGlmIChpc0NvbGxlY3RvckZvY3VzZWQocG9pbnQsIGV2ZW50KSkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgIEwuaWNvbih7XG4gICAgICAgICAgICBpY29uVXJsOiByZWRQaW5SZWRTaGFkb3csXG4gICAgICAgICAgICBpY29uU2l6ZTogWzAsIDBdLFxuICAgICAgICAgICAgaWNvbkFuY2hvcjogWzMwLCA1Ml0sXG4gICAgICAgICAgfSksXG5cbiAgICAgICAgICBMLmljb24oe1xuICAgICAgICAgICAgaWNvblVybDogd2F0ZXJJY29uTm9CYWNrZ3JvdW5kLFxuICAgICAgICAgICAgaWNvblNpemU6IFswLCAwXSxcblxuICAgICAgICAgICAgaWNvbkFuY2hvcjogWzIyLCA0NF0sXG4gICAgICAgICAgICBwb3B1cEFuY2hvcjogWzAsIC0zMF0sXG4gICAgICAgICAgfSksXG4gICAgICAgIF07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb21iaW5lZENvbGxlY3RvcnNJY29uO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBudWxsO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3Qgc3RhbmRhcmRCYWNrZ3JvdW5kID0gKFxuICBzZWNvbmRhcnk6IGJvb2xlYW4gPSBmYWxzZSxcbiAgdGhpcmQ6IGJvb2xlYW4gPSBmYWxzZSxcbikgPT4ge1xuICByZXR1cm4gTC5pY29uKHtcbiAgICBpY29uVXJsOiB3aGl0ZVBpbkJsYWNrU2hhZG93LFxuICAgIGljb25TaXplOiBzZWNvbmRhcnkgPyBbMCwgMF0gOiBbMCwgMF0sXG4gICAgaWNvbkFuY2hvcjogc2Vjb25kYXJ5ICYmIHRoaXJkID8gWy0yLCAxOV0gOiBzZWNvbmRhcnkgPyBbLTIsIDQ0XSA6IFsyMCwgNDJdLFxuICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgY29tYmluZWRGYWN0b3J5SWNvbiA9IFtcbiAgTC5pY29uKHtcbiAgICBpY29uVXJsOiB5ZWxsb3dDaXJjbGVVUkwsXG4gICAgaWNvblNpemU6IFswLCAwXSxcbiAgICBpY29uQW5jaG9yOiBbMTAuNywgMzMuN10sXG4gICAgcG9wdXBBbmNob3I6IFswLCAtMzBdLFxuICB9KSxcbiAgTC5pY29uKHtcbiAgICBpY29uVXJsOiBwbGFudEljb25VUkwsXG4gICAgaWNvblNpemU6IFswLCAwXSxcbiAgICBpY29uQW5jaG9yOiBbNSwgMzBdLFxuICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgfSksXG5dO1xuXG5leHBvcnQgY29uc3QgY29tYmluZWRQdW1wU3RhdGlvbkljb24gPSBbXG4gIEwuaWNvbih7XG4gICAgaWNvblVybDogZ3JlZW5DaXJjbGVVUkwsXG4gICAgaWNvblNpemU6IFswLCAwXSxcbiAgICBpY29uQW5jaG9yOiBbMTAuNywgMzMuN10sXG4gICAgcG9wdXBBbmNob3I6IFswLCAtMzBdLFxuICB9KSxcbiAgTC5pY29uKHtcbiAgICBpY29uVXJsOiBwdW1wU3RhdGlvbkljb25VUkwsXG4gICAgaWNvblNpemU6IFswLCAwXSxcbiAgICBpY29uQW5jaG9yOiBbNywgMzJdLFxuICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgfSksXG5dO1xuXG5leHBvcnQgY29uc3QgY29tYmluZWRDb2xsZWN0b3JzSWNvbiA9IFtcbiAgTC5pY29uKHtcbiAgICBpY29uVXJsOiBjb2xsZWN0b3JJY29uLFxuICAgIGljb25TaXplOiBbMCwgMF0sXG5cbiAgICBpY29uQW5jaG9yOiBbMjUsIDUwXSxcbiAgICBwb3B1cEFuY2hvcjogWzAsIC0zMF0sXG4gIH0pLFxuXTtcblxuZXhwb3J0IGNvbnN0IGNvbWJpbmVkV1dUUEljb24gPSBbXG4gIEwuaWNvbih7XG4gICAgaWNvblVybDogYnJpZ2h0Qmx1ZUNpcmNsZVVSTCxcbiAgICBpY29uU2l6ZTogWzAsIDBdLFxuICAgIGljb25BbmNob3I6IFsxMC43LCAzMy43XSxcbiAgICBwb3B1cEFuY2hvcjogWzAsIC0zMF0sXG4gIH0pLFxuICBMLmljb24oe1xuICAgIGljb25Vcmw6IFdXVFBJY29uVVJMLFxuICAgIGljb25TaXplOiBbMCwgMF0sXG4gICAgaWNvbkFuY2hvcjogWzgsIDMxXSxcbiAgICBwb3B1cEFuY2hvcjogWzAsIC0zMF0sXG4gIH0pLFxuXTtcblxuZXhwb3J0IGNvbnN0IHNlbGVjdGVkQmFja2dyb3VuZCA9ICgpID0+IHtcbiAgcmV0dXJuIEwuaWNvbih7XG4gICAgaWNvblVybDogcmVkUGluUmVkU2hhZG93LFxuICAgIGljb25TaXplOiBbMCwgMF0sXG4gICAgaWNvbkFuY2hvcjogWzMyLCA1NF0sXG4gICAgcG9wdXBBbmNob3I6IFswLCAtMzBdLFxuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBiZWxvbmdzVG9Tb3VyY2VCYWNrZ3JvdW5kID0gKCkgPT4ge1xuICByZXR1cm4gTC5pY29uKHtcbiAgICBpY29uVXJsOiB3aGl0ZVBpblJlZFNoYWRvdyxcbiAgICBpY29uU2l6ZTogWzAsIDBdLFxuICAgIGljb25BbmNob3I6IFszMiwgNTRdLFxuICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgbWFya2VyQmVsb25nc1RvU2VsZWN0ZWRTb3VyY2UgPSAoZXZlbnQ6IElFdmVudCwgcG9pbnQ6IElQb2ludCkgPT4ge1xuICBsZXQgc291cmNlO1xuXG4gIGlmIChldmVudCAhPT0gbnVsbCAmJiBldmVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgc291cmNlID0gZXZlbnQuc291cmNlcy5maWx0ZXIoKHNvdXJjZSkgPT4gc291cmNlLnBvaW50X2lkID09PSBwb2ludC5pZClbMF07XG4gIH1cblxuICByZXR1cm4gZXZlbnQgIT09IG51bGwgJiYgc291cmNlICYmIGV2ZW50LnNlbGVjdGVkX3NvdXJjZSA9PT0gc291cmNlLnBvaW50X2lkO1xufTtcblxuZXhwb3J0IGNvbnN0IG1hcmtlckJlbG9uZ3NUb1NvdXJjZSA9IChldmVudDogSUV2ZW50LCBwb2ludDogSVBvaW50KSA9PiB7XG4gIGlmIChldmVudCA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG4gIHJldHVybiAoXG4gICAgZXZlbnQgIT09IG51bGwgJiZcbiAgICBldmVudC5zb3VyY2VzLmZpbHRlcigoc291cmNlKSA9PiBzb3VyY2UucG9pbnRfaWQgPT09IHBvaW50LmlkKVswXVxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVNhbXBsaW5nSWNvblBvaW50ID0gKFxuICBtYXJrZXJMb2NhdGlvbjogTGF0TG5nVHVwbGUsXG4gIHNlY29uZGFyeUljb246IGJvb2xlYW4sXG4gIG1hcCxcbiAgcG9pbnQ6IElQb2ludCxcbiAgZXZlbnQ6IElFdmVudCxcbiAgaG92ZXJlZD8sXG4gIGxheWVyR3JvdXA/LFxuKSA9PiB7XG4gIC8vIGljb25TaXplOiBbd2lkdGgsIGhlaWdodF0sXG4gIC8vIEljb24gQW5jaG9yOiBbKC1yaWdodCkoK2xlZnQpLCAoLWRvd24pKCt1cCldXG4gIGxldCBzYW1wbGluZ0ljb24gPSBbXG4gICAgTC5pY29uKHtcbiAgICAgIGljb25Vcmw6IGJsdWVDaXJjbGVVUkwsXG4gICAgICBpY29uU2l6ZTogc2Vjb25kYXJ5SWNvbiA/IFswLCAwXSA6IFswLCAwXSxcbiAgICAgIGljb25BbmNob3I6IHNlY29uZGFyeUljb24gPyBbLTcsIDE1XSA6IFsxMC43LCAzMy43XSxcbiAgICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgICB9KSxcbiAgICBMLmljb24oe1xuICAgICAgaWNvblVybDogc2FtcGxpbmdJY29uVVJMLFxuICAgICAgaWNvblNpemU6IHNlY29uZGFyeUljb24gPyBbMCwgMF0gOiBbMCwgMF0sXG4gICAgICBpY29uQW5jaG9yOiBzZWNvbmRhcnlJY29uID8gWy04LCAxM10gOiBbNSwgMzBdLFxuICAgICAgcG9wdXBBbmNob3I6IFswLCAtMzBdLFxuICAgIH0pLFxuICBdO1xuXG4gIGxldCB0aGlyZEljb24gPSBmYWxzZTtcbiAgaWYgKG1hcmtlckJlbG9uZ3NUb1NlbGVjdGVkU291cmNlKGV2ZW50LCBwb2ludCkgJiYgIXNlY29uZGFyeUljb24pIHtcbiAgICBzYW1wbGluZ0ljb24udW5zaGlmdChzZWxlY3RlZEJhY2tncm91bmQoKSk7XG4gIH0gZWxzZSBpZiAobWFya2VyQmVsb25nc1RvU291cmNlKGV2ZW50LCBwb2ludCkgJiYgIXNlY29uZGFyeUljb24pIHtcbiAgICBzYW1wbGluZ0ljb24udW5zaGlmdChiZWxvbmdzVG9Tb3VyY2VCYWNrZ3JvdW5kKCkpO1xuICB9IGVsc2Uge1xuICAgIHRoaXJkSWNvbiA9IHRydWU7XG4gICAgc2FtcGxpbmdJY29uLnVuc2hpZnQoc3RhbmRhcmRCYWNrZ3JvdW5kKHNlY29uZGFyeUljb24sIHRoaXJkSWNvbikpO1xuICB9XG5cbiAgc2FtcGxpbmdJY29uLmZvckVhY2goKGljb24sIGluZGV4KSA9PiB7XG4gICAgbGV0IHBvaW50Q3VzdG9tSWNvbjogYW55ID0gTC5tYXJrZXIobWFya2VyTG9jYXRpb24sIHtcbiAgICAgIGljb246IGljb24sXG4gICAgICByaXNlT25Ib3ZlcjogZmFsc2UsXG4gICAgfSk7XG4gICAgcG9pbnRDdXN0b21JY29uLmJpbmRUb29sdGlwKGJ1aWxkTWFuaG9sZVRvb2x0aXBTdHJpbmcocG9pbnQpKTtcbiAgICBwb2ludEN1c3RvbUljb25bJ2thbmRvX2luZGV4X29iamVjdCddID0gaW5kZXg7XG4gICAgcG9pbnRDdXN0b21JY29uWydrYW5kb19mZXdfbGF5ZXJfaWNvbiddID0gdHJ1ZTtcbiAgICBwb2ludEN1c3RvbUljb25bJ2thbmRvX3NlY29uZGFyeSddID0gdGhpcmRJY29uID8gZmFsc2UgOiBzZWNvbmRhcnlJY29uO1xuICAgIHBvaW50Q3VzdG9tSWNvblsna2FuZG9fdGhpcmQnXSA9IHRoaXJkSWNvbjtcbiAgICBwb2ludEN1c3RvbUljb25bJ2thbmRvX29iamVjdF9pZCddID0gcG9pbnQuaWQ7XG4gICAgcG9pbnRDdXN0b21JY29uWydrYW5kb19vYmplY3QnXSA9ICdTYW1wbGluZyc7XG4gICAgaWYgKGhvdmVyZWQpIHBvaW50Q3VzdG9tSWNvblsna2FuZG9fb2JqZWN0J10gPSAnU2FtcGxpbmdIb3ZlcmVkJztcbiAgICBsYXllckdyb3VwLmFkZExheWVyKHBvaW50Q3VzdG9tSWNvbik7XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZU9ic2VydmF0aW9uSWNvblBvaW50ID0gKFxuICBtYXJrZXJMb2NhdGlvbjogTGF0TG5nVHVwbGUsXG4gIHNlY29uZGFyeUljb246IGJvb2xlYW4sXG4gIG1hcCxcbiAgcG9pbnQ6IElQb2ludCxcbiAgZXZlbnQ6IElFdmVudCxcbiAgaG92ZXJlZD8sXG4gIGxheWVyR3JvdXA/LFxuKSA9PiB7XG4gIC8vIGljb25TaXplOiBbd2lkdGgsIGhlaWdodF0sXG4gIC8vIEljb24gQW5jaG9yOiBbKC1yaWdodCkoK2xlZnQpLCAoLWRvd24pKCt1cCldXG4gIGxldCBvYnNlcnZhdGlvbkljb24gPSBbXG4gICAgTC5pY29uKHtcbiAgICAgIGljb25Vcmw6IHBpbmtDaXJjbGVVUkwsXG4gICAgICBpY29uU2l6ZTogc2Vjb25kYXJ5SWNvbiA/IFswLCAwXSA6IFswLCAwXSxcbiAgICAgIGljb25BbmNob3I6IHNlY29uZGFyeUljb24gPyBbLTcsIDQwXSA6IFsxMC43LCAzMy43XSxcbiAgICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgICB9KSxcbiAgICBMLmljb24oe1xuICAgICAgaWNvblVybDogb2JzZXJ2YXRpb25JY29uVVJMLFxuICAgICAgaWNvblNpemU6IHNlY29uZGFyeUljb24gPyBbMCwgMF0gOiBbMCwgMF0sXG4gICAgICBpY29uQW5jaG9yOiBzZWNvbmRhcnlJY29uID8gWy04LCAzOF0gOiBbNSwgMzBdLFxuICAgICAgcG9wdXBBbmNob3I6IFswLCAtMzBdLFxuICAgIH0pLFxuICBdO1xuXG4gIGlmIChtYXJrZXJCZWxvbmdzVG9TZWxlY3RlZFNvdXJjZShldmVudCwgcG9pbnQpICYmICFzZWNvbmRhcnlJY29uKSB7XG4gICAgb2JzZXJ2YXRpb25JY29uLnVuc2hpZnQoc2VsZWN0ZWRCYWNrZ3JvdW5kKCkpO1xuICB9IGVsc2UgaWYgKG1hcmtlckJlbG9uZ3NUb1NvdXJjZShldmVudCwgcG9pbnQpICYmICFzZWNvbmRhcnlJY29uKSB7XG4gICAgb2JzZXJ2YXRpb25JY29uLnVuc2hpZnQoYmVsb25nc1RvU291cmNlQmFja2dyb3VuZCgpKTtcbiAgfSBlbHNlIHtcbiAgICBvYnNlcnZhdGlvbkljb24udW5zaGlmdChzdGFuZGFyZEJhY2tncm91bmQoc2Vjb25kYXJ5SWNvbikpO1xuICB9XG5cbiAgb2JzZXJ2YXRpb25JY29uLmZvckVhY2goKGljb24sIGluZGV4KSA9PiB7XG4gICAgbGV0IHBvaW50Q3VzdG9tSWNvbjogYW55ID0gTC5tYXJrZXIobWFya2VyTG9jYXRpb24sIHtcbiAgICAgIGljb246IGljb24sXG4gICAgICByaXNlT25Ib3ZlcjogZmFsc2UsXG4gICAgfSk7XG4gICAgcG9pbnRDdXN0b21JY29uLmJpbmRUb29sdGlwKGJ1aWxkTWFuaG9sZVRvb2x0aXBTdHJpbmcocG9pbnQpKTtcbiAgICBwb2ludEN1c3RvbUljb25bJ2thbmRvX2luZGV4X29iamVjdCddID0gaW5kZXg7XG4gICAgcG9pbnRDdXN0b21JY29uWydrYW5kb19mZXdfbGF5ZXJfaWNvbiddID0gdHJ1ZTtcbiAgICBwb2ludEN1c3RvbUljb25bJ2thbmRvX3NlY29uZGFyeSddID0gc2Vjb25kYXJ5SWNvbjtcbiAgICBwb2ludEN1c3RvbUljb25bJ2thbmRvX3RoaXJkJ10gPSBmYWxzZTtcbiAgICBwb2ludEN1c3RvbUljb25bJ2thbmRvX29iamVjdF9pZCddID0gcG9pbnQuaWQ7XG4gICAgcG9pbnRDdXN0b21JY29uWydrYW5kb19vYmplY3QnXSA9ICdPYnNlcnZhdGlvbic7XG4gICAgaWYgKGhvdmVyZWQpIHBvaW50Q3VzdG9tSWNvblsna2FuZG9fb2JqZWN0J10gPSAnT2JzZXJ2YXRpb25Ib3ZlcmVkJztcbiAgICBsYXllckdyb3VwLmFkZExheWVyKHBvaW50Q3VzdG9tSWNvbik7XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVNhbXBsaW5nSWNvbnMgPSAoXG4gIG1hcmtlckxvY2F0aW9uOiBMYXRMbmdUdXBsZSxcbiAgZXZlbnQ6IElFdmVudCxcbiAgcG9pbnQ6IElQb2ludCxcbiAgbWFwLFxuICBob3ZlcmVkLFxuICBsYXllckdyb3VwPyxcbikgPT4ge1xuICBsZXQgc2FtcGxlZFBvaW50SWRzID0gZXZlbnQuc2FtcGxpbmdzLm1hcCgocykgPT4gcy5wb2ludF9pZCk7XG4gIGlmIChcbiAgICBldmVudCAhPT0gbnVsbCAmJlxuICAgIGV2ZW50LnNhbXBsaW5ncy5sZW5ndGggIT09IDAgJiZcbiAgICBzYW1wbGVkUG9pbnRJZHMuaW5jbHVkZXMocG9pbnQuaWQpXG4gICkge1xuICAgIGNyZWF0ZVNhbXBsaW5nSWNvblBvaW50KFxuICAgICAgbWFya2VyTG9jYXRpb24sXG4gICAgICBtYXRjaEljb25Ub1BvaW50KHBvaW50LCBldmVudCkgIT09IG51bGwsXG4gICAgICBtYXAsXG4gICAgICBwb2ludCxcbiAgICAgIGV2ZW50LFxuICAgICAgaG92ZXJlZCxcbiAgICAgIGxheWVyR3JvdXAsXG4gICAgKTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHBvcHVwQ29udGVudCA9IChvYnM6IGFueSwgcG9pbnQ6IElQb2ludCkgPT4ge1xuICBpZiAob2JzID09PSBudWxsKSB7XG4gICAgcmV0dXJuIGBcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJldmVudC1wb3B1cFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3B1cC1ncmFwaC1pY29uIHBvcHVwLWdyYXBoLWljb24tJHtwb2ludC5pZH1cIj5cbiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCIke0dyYXBoSWNvbn1cIi8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvcHVwLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGg1IGNsYXNzPVwicG9wdXAtY29udGVudF9fc2l0ZS1uYW1lXCI+PGI+JHtwb2ludC5ncm91cC5uYW1lfTwvYj48L2g1PlxuICAgICAgICAgICAgICAgICAgICA8aHIvPlxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD1cInNlY3RvclwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICBgO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBgXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXZlbnQtcG9wdXBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9wdXAtZ3JhcGgtaWNvbiBwb3B1cC1ncmFwaC1pY29uLSR7b2JzLmlkfVwiPlxuICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cIiR7R3JhcGhJY29ufVwiLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9wdXAtY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICA8aDUgY2xhc3M9XCJwb3B1cC1jb250ZW50X19zaXRlLW5hbWVcIj48Yj4ke1xuICAgICAgICAgICAgICAgICAgICAgIHBvaW50Lmdyb3VwLm5hbWVcbiAgICAgICAgICAgICAgICAgICAgfTwvYj48L2g1PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9wdXAtY29udGVudF9fc2V2ZXJpdHlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwicG9wdXAtY29udGVudF9fc2V2ZXJpdHktcFwiPiR7aTE4bi50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICBgZXZlbnRzX292ZXJ2aWV3LnNldmVyaXR5YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICl9PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCIke1xuICAgICAgICAgICAgICAgICAgICAgICAgICAncG9wdXAtY29udGVudF9fc2V2ZXJpdHktLScgKyBvYnMuc2V2ZXJpdHlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YiBjbGFzcz1cInBvcHVwLWNvbnRlbnRfX3NldmVyaXR5LWJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtpMThuLnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGV2ZW50c19vdmVydmlldy5zZXZlcml0aWVzLiR7b2JzLnNldmVyaXR5fWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9iPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIDxociBjbGFzcz1cInBvcHVwLWNvbnRlbnRfX2hyXCIgLz5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9wdXAtY29udGVudF9fZGlzY2hhcmdlLXRpbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJwb3B1cC1jb250ZW50X19zZXZlcml0eS1wXCI+JHtpMThuLnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgZXZlbnRzX292ZXJ2aWV3LmZpcnN0X3NlZW5gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9OjwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48YiBpZD1cImZpcnN0LXNlZW4tcG9wdXBcIj48L2I+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwicG9wdXAtY29udGVudF9fc2V2ZXJpdHktcFwiPiR7aTE4bi50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGV2ZW50c19vdmVydmlldy5sYXN0X3NlZW5gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9OjwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48YiBpZD1cImxhc3Qtc2Vlbi1wb3B1cFwiPjwvYj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgYDtcbiAgfVxufTtcblxuY29uc3QgZ2V0SWNvbiA9IChwb2ludDogSVBvaW50LCBjbGlja2VkOiBib29sZWFuLCBzdWJ0aXRsZT86IHN0cmluZykgPT4ge1xuICBjb25zdCBpc1dXVFAgPSBwb2ludC5ncm91cC50eXBlID09PSAnR3JvdXBzOjpXYXN0ZXdhdGVyVHJlYXRtZW50UGxhbnQnO1xuICBjb25zdCB0eXBlID1cbiAgICBwb2ludC5oYXNfZGV2aWNlIHx8IGlzV1dUUCA/IHBvaW50Lmdyb3VwLnR5cGUgOiAnR3JvdXBzOjpkZWZhdWx0JztcbiAgbGV0IHN1YnRpdGxlVGV4dCA9IHN1YnRpdGxlID8gc3VidGl0bGUgOiBwb2ludC5ncm91cC5zZWN0b3JfbmFtZTtcbiAgaWYgKGlzV1dUUCAmJiAhcG9pbnQuaGFzX2RldmljZSkge1xuICAgIHN1YnRpdGxlVGV4dCArPSBgICgke2kxOG4udChcbiAgICAgICdkYXNoYm9hcmRfdjIudXRpbGl0eV9kYXNoYm9hcmQudG9wYmFyLnF1YWxpdHktc3VtbWFyeS51bm1vbml0b3JlZCcsXG4gICAgKX0pYDtcbiAgfVxuICByZXR1cm4gZ2V0UG9pbnRJY29uQnlUeXBlKFxuICAgIHR5cGUsXG4gICAgcG9pbnQubmFtZSxcbiAgICBzdWJ0aXRsZVRleHQsXG4gICAgY2xpY2tlZCxcbiAgICAhY2xpY2tlZCxcbiAgICBmYWxzZSxcbiAgICBwb2ludC5oYXNfc2FtcGxlcixcbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBzZXRJY29uID0gKGVsZW1lbnQsIGNsaWNrZWQsIHBvaW50LCBzdWJ0aXRsZSA9ICcnKSA9PiB7XG4gIGVsZW1lbnQuc2V0SWNvbihnZXRJY29uKHBvaW50LCBjbGlja2VkLCBzdWJ0aXRsZSkpO1xufTtcblxuLy8gcm91bmQgdG8gbmVhcmVzdCB0aG91c2FuZCBpcyB1c2VkIHdoZW4geW91IHdhbnQgdG8gcm91bmQgdGhlIHdhdGVyIGNvbnN1bXB0aW9uIHRvIHRoZSBuZWFyZXN0IHRob3VzYW5kXG4vLyBmb3IgZXhhbXBsZTogMjM0LDU2NyAtPiAyMzUsMDAwXG5leHBvcnQgY29uc3QgY2FsY3VsYXRlV2F0ZXJDb25zdW1wdGlvbiA9IChcbiAgZmxvd19yYXRlX3VuaXQ6IHN0cmluZyxcbiAgd2F0ZXJDb25zdW1wdGlvbjogbnVtYmVyLFxuICByb3VuZF90b19uZWFyZXN0X2s6IGJvb2xlYW4gPSBmYWxzZSxcbikgPT4ge1xuICBsZXQgY2FsY3VsYXRlZCA9ICcwJztcblxuICBpZiAod2F0ZXJDb25zdW1wdGlvbiA+IDApIHtcbiAgICBzd2l0Y2ggKGZsb3dfcmF0ZV91bml0KSB7XG4gICAgICBjYXNlICdtM2QnOlxuICAgICAgICBjYWxjdWxhdGVkID0gd2F0ZXJDb25zdW1wdGlvbi50b0ZpeGVkKDIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2dkX3VzJzpcbiAgICAgICAgY2FsY3VsYXRlZCA9ICh3YXRlckNvbnN1bXB0aW9uICogMjY0LjE3MikudG9GaXhlZCgyKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdnZF91ayc6XG4gICAgICAgIGNhbGN1bGF0ZWQgPSAod2F0ZXJDb25zdW1wdGlvbiAqIDIxOS45NjkpLnRvRml4ZWQoMik7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICBpZiAocm91bmRfdG9fbmVhcmVzdF9rKSB7XG4gICAgcmV0dXJuIHJvdW5kVG9OZWFyZXN0VGhvdXNhbmQocGFyc2VGbG9hdChjYWxjdWxhdGVkKSkudG9Mb2NhbGVTdHJpbmcoKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gTWF0aC5yb3VuZChwYXJzZUZsb2F0KGNhbGN1bGF0ZWQpKS50b0xvY2FsZVN0cmluZygpO1xuICB9XG59O1xuXG5jb25zdCByb3VuZFRvTmVhcmVzdFRob3VzYW5kID0gKG51bWJlcikgPT4ge1xuICAvLyBpZihpc0FscmVhZHlSb3VuZGVkKG51bWJlcikpIHtcbiAgLy8gICByZXR1cm4gbnVtYmVyO1xuICAvLyB9XG5cbiAgaWYgKG51bWJlciA8IDEwMDApIHtcbiAgICByZXR1cm4gTWF0aC5yb3VuZChudW1iZXIpO1xuICB9XG5cbiAgY29uc3Qgcm91bmRlZFRob3VzYW5kcyA9IE1hdGgucm91bmQobnVtYmVyIC8gMTAwMCk7XG4gIGNvbnN0IHJvdW5kZWRWYWx1ZSA9IHJvdW5kZWRUaG91c2FuZHMgKiAxMDAwO1xuXG4gIHJldHVybiByb3VuZGVkVmFsdWU7XG59O1xuXG4vLyBjb25zdCBpc0FscmVhZHlSb3VuZGVkID0gKG51bWJlcikgPT4ge1xuLy8gICByZXR1cm4gbnVtYmVyID09PSBNYXRoLnJvdW5kKG51bWJlcik7XG4vLyB9XG5cbmV4cG9ydCBjb25zdCB0cmFuc2xhdGVGbG93UmF0ZSA9IChmbG93X3JhdGVfdW5pdCkgPT4ge1xuICByZXR1cm4gaTE4bi50KFxuICAgIGBkYXNoYm9hcmRfdjIucHJvZmlsZS5mbG93X3JhdGVfdW5pdF9vcHRpb25zLiR7XG4gICAgICBmbG93X3JhdGVfdW5pdC5pbmNsdWRlcygnZ2QnKSA/ICdnZCcgOiBmbG93X3JhdGVfdW5pdFxuICAgIH1gLFxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IGhhbmRsZU1hcmtlckV2ZW50cyA9IChcbiAgbWFwLFxuICBwb2ludCxcbiAgcG9pbnRDdXN0b21JY29uLFxuICBoYW5kbGVDbGljayxcbikgPT4ge1xuICBsZXQgdG9vbHRpcFZpc2libGUgPSBmYWxzZTtcblxuICBtYXAub24oJ3pvb21zdGFydCcsIGZ1bmN0aW9uICgpIHtcbiAgICBtYXAuY2xvc2VQb3B1cCgpO1xuICB9KTtcblxuICBwb2ludEN1c3RvbUljb24ub24oJ3BvcHVwY2xvc2UnLCAoKSA9PiB7XG4gICAgLy8gc2V0SWNvbihwb2ludEN1c3RvbUljb24sIGZhbHNlLCBwb2ludCk7XG4gICAgdG9vbHRpcFZpc2libGUgPSBmYWxzZTtcbiAgfSk7XG5cbiAgcG9pbnRDdXN0b21JY29uLm9uKCdwb3B1cG9wZW4nLCAoKSA9PiB7XG4gICAgLy8gc2V0SWNvbihwb2ludEN1c3RvbUljb24sIHRydWUsIHBvaW50KTtcbiAgICB0b29sdGlwVmlzaWJsZSA9IHRydWU7XG4gIH0pO1xuXG4gIHBvaW50Q3VzdG9tSWNvbi5vbignbW91c2VvdmVyJywgKCkgPT4ge1xuICAgIGlmICh0b29sdGlwVmlzaWJsZSkgcmV0dXJuO1xuXG4gICAgc2V0SWNvbihwb2ludEN1c3RvbUljb24sIHRydWUsIHBvaW50KTtcbiAgICB0b29sdGlwVmlzaWJsZSA9IHRydWU7XG4gIH0pO1xuXG4gIHBvaW50Q3VzdG9tSWNvbi5vbignbW91c2VvdXQnLCAoKSA9PiB7XG4gICAgaWYgKHBvaW50Q3VzdG9tSWNvbi5pc1BvcHVwT3BlbigpKSByZXR1cm47XG5cbiAgICBzZXRJY29uKHBvaW50Q3VzdG9tSWNvbiwgZmFsc2UsIHBvaW50KTtcbiAgICB0b29sdGlwVmlzaWJsZSA9IGZhbHNlO1xuICB9KTtcblxuICBpZiAodHlwZW9mIGhhbmRsZUNsaWNrID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcG9pbnRDdXN0b21JY29uLm9uKCdjbGljaycsICgpID0+IHtcbiAgICAgIGhhbmRsZUNsaWNrKHBvaW50Q3VzdG9tSWNvbi5rYW5kb19vYmplY3RfaWQpO1xuXG4gICAgICBpZiAocG9pbnRJc0ZhY3RvcnkocG9pbnQpKSB7XG4gICAgICAgIHNlbmRBbmFseXRpY3NFdmVudCgnTWFwIFZpZXcgLSBGYWN0b3J5IGNsaWNrZWQnLCAnbWFwJywge1xuICAgICAgICAgIHBvaW50X2lkOiBwb2ludC5pZCxcbiAgICAgICAgICBwb2ludF9uYW1lOiBwb2ludC5uYW1lLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGJpbmRQb3B1cFRvTWFya2VyID0gKHBvaW50LCBsYXllckdyb3VwLCBmbG93X3JhdGVfdW5pdCkgPT4ge1xuICBsZXQgY29udGVudCA9IGBcbiAgICA8ZGl2IGNsYXNzPSdtYWluLWNvbnRlbnQnPlxuICAgICAgICA8ZGl2IGNsYXNzPSdtYWluLWNvbnRlbnRfX2hlYWRlcic+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFpbi1jb250ZW50X19oZWFkZXJfX3RpdGxlc1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J21haW4tY29udGVudF9faGVhZGVyX190aXRsZXNfX3RpdGxlJz4ke1xuICAgICAgICAgICAgICAgICAgcG9pbnQubmFtZVxuICAgICAgICAgICAgICAgIH08L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdtYWluLWNvbnRlbnRfX2hlYWRlcl9fdGl0bGVzX19zdWJ0aXRsZSc+JHtcbiAgICAgICAgICAgICAgICAgIHBvaW50Lmdyb3VwLnNlY3Rvcl9uYW1lXG4gICAgICAgICAgICAgICAgfTwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgIFxuICAgICAgICA8ZGl2IGNsYXNzPSdtYWluLWNvbnRlbnRfX2JvZHknPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz0nbWFpbi1jb250ZW50X19ib2R5X19pdGVtJz5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdtYWluLWNvbnRlbnRfX2JvZHlfX2l0ZW1fX2ljb24nPlxuICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0nJHt3YXRlclJldXNlSWNvbn0nIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nbWFpbi1jb250ZW50X19ib2R5X19pdGVtX190aXRsZXMnPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nbWFpbi1jb250ZW50X19ib2R5X19pdGVtX190aXRsZXNfX3RpdGxlJz5cbiAgICAgICAgICAgICAgICAgICAgJHtnZXRGbG93UmF0ZShwb2ludC5ncm91cC53YXRlcl9kaXNjaGFyZ2UsIGZsb3dfcmF0ZV91bml0KX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nbWFpbi1jb250ZW50X19ib2R5X19pdGVtX190aXRsZXNfX3N1YnRpdGxlJz4ke2kxOG4udChcbiAgICAgICAgICAgICAgICAgICAgJ3dhdGVyX2Rpc2NoYXJnZScsXG4gICAgICAgICAgICAgICAgICApfTwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIGA7XG5cbiAgbGF5ZXJHcm91cC5iaW5kUG9wdXAoY29udGVudCwge1xuICAgIGNsYXNzTmFtZTogJ3BvaW50LW1hcmtlci1wb3B1cCcsXG4gICAgbWluV2lkdGg6ICcyMTRweCcsXG4gICAgbWF4V2lkdGg6ICcyMTRweCcsXG4gICAgY2xvc2VCdXR0b246IHRydWUsXG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEZsb3dSYXRlID0gKFxuICB3YXRlckNvbnN1bXB0aW9uOiBudW1iZXIsXG4gIGZsb3dSYXRlVW5pdDogc3RyaW5nLFxuICBpc1JvdW5kOiBib29sZWFuID0gZmFsc2UsXG4pID0+IHtcbiAgaWYgKHdhdGVyQ29uc3VtcHRpb24gPiAwKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIGNhbGN1bGF0ZVdhdGVyQ29uc3VtcHRpb24oZmxvd1JhdGVVbml0LCB3YXRlckNvbnN1bXB0aW9uLCBpc1JvdW5kKSArXG4gICAgICAnICcgK1xuICAgICAgdHJhbnNsYXRlRmxvd1JhdGUoZmxvd1JhdGVVbml0KVxuICAgICk7XG4gIH1cbiAgcmV0dXJuIGkxOG4udCgnZXZlbnRzX292ZXJ2aWV3LnNldmVyaXRpZXMudW5rbm93bicpO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlbW92ZUxheWVyR3JvdXAgPSAobWFwLCBsYXllckdyb3VwKSA9PiB7XG4gIGlmIChtYXAuaGFzTGF5ZXIobGF5ZXJHcm91cCkpIHtcbiAgICBtYXAucmVtb3ZlTGF5ZXIobGF5ZXJHcm91cCk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBhZGRMYXllckdyb3VwID0gKG1hcCwgbGF5ZXJHcm91cCkgPT4ge1xuICBpZiAoIW1hcC5oYXNMYXllcihsYXllckdyb3VwKSkge1xuICAgIG1hcC5hZGRMYXllcihsYXllckdyb3VwKTtcbiAgfSBlbHNlIHtcbiAgICByZW1vdmVMYXllckdyb3VwKG1hcCwgbGF5ZXJHcm91cCk7XG4gICAgYWRkTGF5ZXJHcm91cChtYXAsIGxheWVyR3JvdXApO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgcG9pbnRJc1dXVFAgPSAocG9pbnQ6IElQb2ludCkgPT4ge1xuICByZXR1cm4gcG9pbnQuZ3JvdXAudHlwZSA9PT0gJ0dyb3Vwczo6V2FzdGV3YXRlclRyZWF0bWVudFBsYW50Jztcbn07XG5cbmV4cG9ydCBjb25zdCBwb2ludElzRmFjdG9yeSA9IChwb2ludDogSVBvaW50KSA9PiB7XG4gIHJldHVybiBpc0ZhY3RvcnlUeXBlKHBvaW50Lmdyb3VwLnR5cGUpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzRmFjdG9yeVR5cGUgPSAodHlwZTogc3RyaW5nKSA9PiB7XG4gIHJldHVybiB0eXBlID09PSAnR3JvdXBzOjpGYWN0b3J5Jztcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQ0EsSUFBQUEsUUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMs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
@@ -14,12 +14,29 @@ var _jquery = _interopRequireDefault(require("jquery"));
14
14
  var _react = _interopRequireWildcard(require("react"));
15
15
  var _highchartsReactOfficial = _interopRequireDefault(require("highcharts-react-official"));
16
16
  var _highstock = _interopRequireDefault(require("highcharts/highstock"));
17
+ var _noDataToDisplay = _interopRequireDefault(require("highcharts/modules/no-data-to-display"));
17
18
  var _ContentLoader = require("../ContentLoader");
18
19
  var _i18n = _interopRequireDefault(require("../../utilities/i18n"));
19
20
  var _styledComponents = _interopRequireDefault(require("styled-components"));
20
21
  var _reactRedux = require("react-redux");
21
22
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
22
23
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof3(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
24
+ // Initialize no-data-to-display module with Highcharts
25
+ (0, _noDataToDisplay.default)(_highstock.default);
26
+
27
+ // Set global options for noData message and style
28
+ _highstock.default.setOptions({
29
+ lang: {
30
+ noData: _i18n.default.t('general.no_data_available')
31
+ },
32
+ noData: {
33
+ style: {
34
+ fontWeight: 'bold',
35
+ fontSize: '14px',
36
+ color: '#666'
37
+ }
38
+ }
39
+ });
23
40
  function addHours(hours) {
24
41
  var hoursAgo = new Date();
25
42
  hoursAgo.setHours(hoursAgo.getHours() + hours);
@@ -229,4 +246,4 @@ var Graph = function Graph(_ref5) {
229
246
  };
230
247
  var _default = Graph;
231
248
  exports.default = _default;
232
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfanF1ZXJ5IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9oaWdoY2hhcnRzUmVhY3RPZmZpY2lhbCIsIl9oaWdoc3RvY2siLCJfQ29udGVudExvYWRlciIsIl9pMThuIiwiX3N0eWxlZENvbXBvbmVudHMiLCJfcmVhY3RSZWR1eCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIm5vZGVJbnRlcm9wIiwiV2Vha01hcCIsImNhY2hlQmFiZWxJbnRlcm9wIiwiY2FjaGVOb2RlSW50ZXJvcCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mMyIsImRlZmF1bHQiLCJjYWNoZSIsImhhcyIsImdldCIsIm5ld09iaiIsImhhc1Byb3BlcnR5RGVzY3JpcHRvciIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwia2V5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiZGVzYyIsInNldCIsImFkZEhvdXJzIiwiaG91cnMiLCJob3Vyc0FnbyIsIkRhdGUiLCJzZXRIb3VycyIsImdldEhvdXJzIiwiZ2V0VGltZSIsIlJlc2V0Wm9vbUJ1dHRvbiIsInN0eWxlZCIsImJ1dHRvbiIsIndpdGhDb25maWciLCJkaXNwbGF5TmFtZSIsImNvbXBvbmVudElkIiwiX3JlZiIsImlzUnRsIiwiX3JlZjIiLCJfcmVmMyIsInRoZW1lIiwiY29sb3JTY2hlbWUiLCJuYXR1cmFsIiwibjMwIiwiX3JlZjQiLCJuMjAiLCJHcmFwaCIsIl9yZWY1IiwicG9pbnRJZCIsInRpdGxlIiwic3RhcnRUaW1lIiwiZW5kVGltZSIsInBsb3RGcm9tIiwicGxvdFRvIiwibm9PYnNlcnZhdGlvbiIsIl9yZWY1JGN1c3RvbUhpZ2hDaGFydCIsImN1c3RvbUhpZ2hDaGFydE9wdGlvbnMiLCJfcmVmNSRkaXNwbGF5UmVzZXRab28iLCJkaXNwbGF5UmVzZXRab29tQnV0dG9uIiwiY2hhcnRDb21wb25lbnQiLCJ1c2VSZWYiLCJfdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsInRleHQiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkyIiwiZ3JhcGhPcHRpb25zIiwic2V0R3JhcGhPcHRpb25zIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJpc0ZldGNoaW5nIiwic2V0SXNGZXRjaGluZyIsIm9iamVjdENsb25lIiwiX29iamVjdFNwcmVhZDIiLCJjcmVkaXRzIiwiZW5hYmxlZCIsInNlcmllcyIsImNoYXJ0Iiwic3BhY2luZ0JvdHRvbSIsInNwYWNpbmdMZWZ0Iiwic3BhY2luZ1JpZ2h0Iiwic3BhY2luZ1RvcCIsImJhY2tncm91bmRDb2xvciIsImhlaWdodCIsInpvb21UeXBlIiwieUF4aXMiLCJ4QXhpcyIsInR5cGUiLCJwbG90QmFuZHMiLCJ0aW1lIiwidGltZXpvbmVPZmZzZXQiLCJjcmVhdGVTZXJpZXMiLCJzRGF0YSIsImRhdGFzZXRzIiwieERhdGFzIiwiX2l0ZXJhdG9yIiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIyIiwiX3N0ZXAiLCJfbG9vcCIsImRhdGFzZXQiLCJ2YWx1ZSIsImRhdGEiLCJtYXAiLCJ2YWwiLCJqIiwicG9pbnRfaWQiLCJ1bml0IiwidG9vbHRpcCIsInBvaW50Rm9ybWF0dGVyIiwiYnVsbGV0IiwiY29uY2F0IiwiY29sb3IiLCJuYW1lIiwieSIsInRvRml4ZWQiLCJzIiwibiIsImRvbmUiLCJlcnIiLCJlIiwiZiIsIml0ZXJhdGVBbmRFdmFsIiwiY29sb3JzIiwia2V5cyIsImkiLCJsZW5ndGgiLCJfdHlwZW9mMiIsInRvU3RyaW5nIiwibWF0Y2giLCJmdW5jdGlvblN0ciIsInN1YnN0cmluZyIsImZ1bmMiLCJGdW5jdGlvbiIsImNyZWF0ZVlBeGlzIiwicmVzdWx0IiwiSGlnaGNoYXJ0cyIsImdldE9wdGlvbnMiLCIkIiwiZWFjaCIsInlBeGlzZXMiLCJpbmRleCIsInB1c2giLCJzaG93RW1wdHkiLCJnZXREYXRhIiwidXJsIiwiZmV0Y2giLCJ0aGVuIiwicmVzcG9uc2UiLCJqc29uIiwicGFyc2VJbnQiLCJ0aW1lem9uZSIsInR6X29mZnNldCIsImZyb20iLCJ0byIsInVzZUVmZmVjdCIsImNsZWFudXAiLCJyZXNldFpvb20iLCJfY2hhcnRDb21wb25lbnQkY3VycmUiLCJjdXJyZW50IiwiX2NoYXJ0Q29tcG9uZW50JGN1cnJlMiIsInNldEV4dHJlbWVzIiwibmF2Q29udGV4dCIsInVzZVNlbGVjdG9yIiwic3RhdGUiLCJuYXZfY29udGV4dF9kYXRhIiwibG9jYWxlIiwiY3JlYXRlRWxlbWVudCIsIlJvd0xvYWRlciIsIndpZHRoIiwiZmdDb2xvciIsImJnQ29sb3IiLCJGcmFnbWVudCIsInJlZiIsImhpZ2hjaGFydHMiLCJvcHRpb25zIiwib25DbGljayIsImkxOG4iLCJ0IiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvR3JhcGgvR3JhcGgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAkIGZyb20gJ2pxdWVyeSc7XG5pbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IEhpZ2hjaGFydHNSZWFjdCBmcm9tICdoaWdoY2hhcnRzLXJlYWN0LW9mZmljaWFsJztcbmltcG9ydCBIaWdoY2hhcnRzIGZyb20gJ2hpZ2hjaGFydHMvaGlnaHN0b2NrJztcbmltcG9ydCB7IFJvd0xvYWRlciB9IGZyb20gJy4uL0NvbnRlbnRMb2FkZXInO1xuaW1wb3J0IGkxOG4gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL2kxOG4nO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQgeyB1c2VTZWxlY3RvciB9IGZyb20gJ3JlYWN0LXJlZHV4JztcbmltcG9ydCB7IGFwcFJlZHVjZXIgfSBmcm9tICcuLi8uLi9zdG9yZS9yb290UmVkdWNlcic7XG5cbnR5cGUgSVByb3BzID0ge1xuICBwb2ludElkOiBudW1iZXIgfCBudWxsO1xuICB0aXRsZT86IHN0cmluZyB8IG51bGw7XG4gIHN0YXJ0VGltZT86IG51bWJlcjtcbiAgZW5kVGltZT86IG51bWJlcjtcbiAgcGxvdEZyb20/OiBudW1iZXI7XG4gIHBsb3RUbz86IG51bWJlcjtcbiAgbm9PYnNlcnZhdGlvbj86IGJvb2xlYW47XG4gIGRpc3BsYXlSZXNldFpvb21CdXR0b24/OiBib29sZWFuO1xuICBjdXN0b21IaWdoQ2hhcnRPcHRpb25zPzogb2JqZWN0O1xufTtcblxuZnVuY3Rpb24gYWRkSG91cnMoaG91cnM6IG51bWJlcikge1xuICBsZXQgaG91cnNBZ28gPSBuZXcgRGF0ZSgpO1xuICBob3Vyc0Fnby5zZXRIb3Vycyhob3Vyc0Fnby5nZXRIb3VycygpICsgaG91cnMpO1xuICByZXR1cm4gaG91cnNBZ28uZ2V0VGltZSgpIC8gMTAwMDtcbn1cbmNvbnN0IFJlc2V0Wm9vbUJ1dHRvbiA9IHN0eWxlZC5idXR0b248eyBpc1J0bDogYm9vbGVhbiB9PmBcbiAgQG1lZGlhIChtYXgtd2lkdGg6IDUwMHB4KSB7XG4gICAgcmlnaHQ6ICR7KHsgaXNSdGwgfSkgPT4gKGlzUnRsID8gJzE1cHgnIDogJ3Vuc2V0Jyl9IWltcG9ydGFudDtcbiAgICBsZWZ0OiAkeyh7IGlzUnRsIH0pID0+IChpc1J0bCA/ICd1bnNldCcgOiAnMTVweCcpfSAhaW1wb3J0YW50O1xuICAgIHRvcDogNnB4ICFpbXBvcnRhbnQ7XG4gIH1cbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDY1cHg7XG4gIHJpZ2h0OiAxNXB4O1xuICBib3JkZXI6IDFweCBzb2xpZCAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9yU2NoZW1lLm5hdHVyYWwubjMwfTtcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xuICBwYWRkaW5nOiAwIDVweDtcblxuICAmOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9yU2NoZW1lLm5hdHVyYWwubjIwfTtcbiAgfVxuYDtcbmNvbnN0IEdyYXBoID0gKHtcbiAgcG9pbnRJZCxcbiAgdGl0bGUsXG4gIHN0YXJ0VGltZSxcbiAgZW5kVGltZSxcbiAgcGxvdEZyb20sXG4gIHBsb3RUbyxcbiAgbm9PYnNlcnZhdGlvbixcbiAgY3VzdG9tSGlnaENoYXJ0T3B0aW9ucyA9IHt9LFxuICBkaXNwbGF5UmVzZXRab29tQnV0dG9uID0gZmFsc2UsXG59OiBJUHJvcHMpID0+IHtcbiAgY29uc3QgY2hhcnRDb21wb25lbnQgPSB1c2VSZWY8YW55PihudWxsKTtcbiAgY29uc3QgW2dyYXBoT3B0aW9ucywgc2V0R3JhcGhPcHRpb25zXSA9IHVzZVN0YXRlKHtcbiAgICB0aXRsZTogeyB0ZXh0OiAnUGxlYXNlIFdhaXQgLi4uJyB9LFxuICB9KTtcbiAgY29uc3QgW2lzRmV0Y2hpbmcsIHNldElzRmV0Y2hpbmddID0gdXNlU3RhdGU8Ym9vbGVhbj4odHJ1ZSk7XG4gIGxldCBvYmplY3RDbG9uZSA9IHtcbiAgICB0aXRsZToge1xuICAgICAgdGV4dDogdGl0bGUsXG4gICAgfSxcbiAgICBjcmVkaXRzOiB7XG4gICAgICBlbmFibGVkOiBmYWxzZSxcbiAgICB9LFxuICAgIHNlcmllczogW10sXG4gICAgY2hhcnQ6IHtcbiAgICAgIHNwYWNpbmdCb3R0b206IDIwLFxuICAgICAgc3BhY2luZ0xlZnQ6IDAsXG4gICAgICBzcGFjaW5nUmlnaHQ6IDAsXG4gICAgICBzcGFjaW5nVG9wOiAyMCxcbiAgICAgIGJhY2tncm91bmRDb2xvcjogJ3JnYmEoMCwwLDAsMCknLFxuICAgICAgaGVpZ2h0OiAyNTAsXG4gICAgICB6b29tVHlwZTogJ3gnLFxuICAgIH0sXG4gICAgeUF4aXM6IFtdLFxuICAgIHhBeGlzOiB7XG4gICAgICB0eXBlOiAnZGF0ZXRpbWUnLFxuICAgICAgcGxvdEJhbmRzOiBbXSxcbiAgICB9LFxuICAgIHRpbWU6IHtcbiAgICAgIHRpbWV6b25lT2Zmc2V0OiAwLFxuICAgIH0sXG4gICAgLi4uY3VzdG9tSGlnaENoYXJ0T3B0aW9ucyxcbiAgfTtcbiAgY29uc3QgY3JlYXRlU2VyaWVzID0gKHNEYXRhOiBhbnkpID0+IHtcbiAgICBsZXQgZGF0YXNldHMgPSBzRGF0YS5kYXRhc2V0cztcbiAgICBsZXQgeERhdGFzID0gc0RhdGEueERhdGFzO1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cykge1xuICAgICAgZGF0YXNldC5kYXRhID0gZGF0YXNldC5kYXRhLm1hcCgodmFsOiBudW1iZXIsIGo6IG51bWJlcikgPT4gW1xuICAgICAgICB4RGF0YXNbZGF0YXNldC5wb2ludF9pZF1bal0sXG4gICAgICAgIHZhbCxcbiAgICAgIF0pO1xuXG4gICAgICBpZiAoZGF0YXNldD8udW5pdCkge1xuICAgICAgICBkYXRhc2V0LnRvb2x0aXAgPSB7XG4gICAgICAgICAgcG9pbnRGb3JtYXR0ZXI6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGNvbnN0IGJ1bGxldCA9IGA8dHNwYW4gc3R5bGU9XCJmaWxsOiR7ZGF0YXNldC5jb2xvcn1cIiB4PVwiOFwiIGR5PVwiMTVcIj7il488L3RzcGFuPiBgO1xuICAgICAgICAgICAgcmV0dXJuIGA8dHNwYW4+JHtidWxsZXR9JHtcbiAgICAgICAgICAgICAgZGF0YXNldC5uYW1lXG4gICAgICAgICAgICB9OjwvdHNwYW4+IDxiPiR7dGhpcy55LnRvRml4ZWQoMil9IMKwJHtkYXRhc2V0LnVuaXR9PC9iPmA7XG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGRhdGFzZXRzO1xuICB9O1xuXG4gIGNvbnN0IGl0ZXJhdGVBbmRFdmFsID0gKGRhdGE6IGFueSwgY29sb3JzOiBhbnkpID0+IHtcbiAgICBpZiAoZGF0YSkge1xuICAgICAgbGV0IGtleXMgPSBPYmplY3Qua2V5cyhkYXRhKTtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgICBsZXQga2V5ID0ga2V5c1tpXSxcbiAgICAgICAgICB2YWx1ZSA9IGRhdGFba2V5XTtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnb2JqZWN0Jykge1xuICAgICAgICAgIGl0ZXJhdGVBbmRFdmFsKHZhbHVlLCBjb2xvcnMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICh2YWx1ZSAmJiB2YWx1ZS50b1N0cmluZygpLm1hdGNoKC9mdW5jdGlvbjo6LykpIHtcbiAgICAgICAgICAgIGxldCBmdW5jdGlvblN0ciA9IHZhbHVlLnN1YnN0cmluZygxMCksXG4gICAgICAgICAgICAgIGZ1bmMgPSBuZXcgRnVuY3Rpb24oZnVuY3Rpb25TdHIpO1xuICAgICAgICAgICAgZGF0YVtrZXldID0gZnVuYygpO1xuICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWUgJiYgdmFsdWUudG9TdHJpbmcoKS5tYXRjaCgvY29sb3JzXFxbKC4qPylcXF0vKSkge1xuICAgICAgICAgICAgZGF0YVtrZXldID0gY29sb3JzW3ZhbHVlLnRvU3RyaW5nKCkubWF0Y2goL2NvbG9yc1xcWyguKj8pXFxdLylbMV1dO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBjb25zdCBjcmVhdGVZQXhpcyA9IChzRGF0YTogYW55KSA9PiB7XG4gICAgdmFyIHJlc3VsdDogYW55W10gPSBbXSxcbiAgICAgIGNvbG9ycyA9IEhpZ2hjaGFydHMuZ2V0T3B0aW9ucygpLmNvbG9ycztcbiAgICBpZiAoc0RhdGEpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgICAgJC5lYWNoKHNEYXRhLnlBeGlzZXMsIGZ1bmN0aW9uIChpbmRleCwgeUF4aXMpIHtcbiAgICAgICAgaXRlcmF0ZUFuZEV2YWwoeUF4aXMsIGNvbG9ycyk7XG4gICAgICAgIHJlc3VsdC5wdXNoKHlBeGlzKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAocmVzdWx0Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmVzdWx0LnB1c2goe1xuICAgICAgICBzaG93RW1wdHk6IGZhbHNlLFxuICAgICAgICB0aXRsZToge1xuICAgICAgICAgIHRleHQ6ICcnLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcblxuICBjb25zdCBnZXREYXRhID0gKCkgPT4ge1xuICAgIHN0YXJ0VGltZSA9IHN0YXJ0VGltZSB8fCBhZGRIb3VycygtMyk7XG4gICAgZW5kVGltZSA9IGVuZFRpbWUgfHwgYWRkSG91cnMoMyk7XG4gICAgbGV0IHVybCA9IGAvY29udHJvbF9yb29tL3BvaW50X2NoYXJ0X2RhdGEuanNvbj9wb2ludF9pZD0ke3BvaW50SWR9YDtcbiAgICB1cmwgKz0gc3RhcnRUaW1lID8gYCZzdGFydD0ke3N0YXJ0VGltZX1gIDogJyc7XG4gICAgdXJsICs9IGVuZFRpbWUgPyBgJnN0b3A9JHtlbmRUaW1lfWAgOiAnJztcbiAgICB1cmwgKz0gbm9PYnNlcnZhdGlvbiA/IGAmbm9fb2JzZXJ2YXRpb249JHtub09ic2VydmF0aW9ufWAgOiAnJztcbiAgICBzZXRJc0ZldGNoaW5nKHRydWUpO1xuICAgIGZldGNoKHVybClcbiAgICAgIC50aGVuKChyZXNwb25zZSkgPT4gcmVzcG9uc2UuanNvbigpKVxuICAgICAgLnRoZW4oKGpzb24pID0+IHtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIG9iamVjdENsb25lLnNlcmllcyA9IGNyZWF0ZVNlcmllcyhqc29uKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIG9iamVjdENsb25lLnlBeGlzID0gY3JlYXRlWUF4aXMoanNvbik7XG4gICAgICAgIG9iamVjdENsb25lLnRpbWUudGltZXpvbmVPZmZzZXQgPVxuICAgICAgICAgIHBhcnNlSW50KGpzb24udGltZXpvbmUudHpfb2Zmc2V0KSAqIDYwO1xuICAgICAgICBpZiAocGxvdEZyb20gJiYgcGxvdFRvKSB7XG4gICAgICAgICAgb2JqZWN0Q2xvbmUueEF4aXMucGxvdEJhbmRzID0gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgICAgICAgY29sb3I6ICdyZ2JhKDIzMCwyMywxNDgsMC4xKScsXG4gICAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICAgICAgICBmcm9tOiBwbG90RnJvbSAqIDEwMDAsXG4gICAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICAgICAgICB0bzogcGxvdFRvICogMTAwMCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXTtcbiAgICAgICAgfVxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHNldEdyYXBoT3B0aW9ucyhvYmplY3RDbG9uZSk7XG4gICAgICAgIHNldElzRmV0Y2hpbmcoZmFsc2UpO1xuICAgICAgfSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBnZXREYXRhKCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIGNsZWFudXAoKSB7fTtcbiAgfSwgW3BvaW50SWRdKTtcbiAgY29uc3QgcmVzZXRab29tID0gKCkgPT4ge1xuICAgIGlmIChjaGFydENvbXBvbmVudC5jdXJyZW50Py5jaGFydCkge1xuICAgICAgY29uc3QgeyB4QXhpcywgeUF4aXMgfSA9IGNoYXJ0Q29tcG9uZW50LmN1cnJlbnQuY2hhcnQ7XG4gICAgICBpZiAoeEF4aXM/Lmxlbmd0aCAmJiB5QXhpcz8ubGVuZ3RoKSB7XG4gICAgICAgIHhBeGlzWzBdLnNldEV4dHJlbWVzKCk7XG4gICAgICAgIHlBeGlzWzBdLnNldEV4dHJlbWVzKCk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuICBjb25zdCBuYXZDb250ZXh0ID0gdXNlU2VsZWN0b3IoXG4gICAgKHN0YXRlOiBSZXR1cm5UeXBlPHR5cGVvZiBhcHBSZWR1Y2VyPikgPT4gc3RhdGUubmF2X2NvbnRleHRfZGF0YS5uYXZDb250ZXh0LFxuICApO1xuICBjb25zdCBpc1J0bDogYm9vbGVhbiA9IG5hdkNvbnRleHQubG9jYWxlID09PSAnaGUnID8gdHJ1ZSA6IGZhbHNlO1xuICByZXR1cm4gaXNGZXRjaGluZyA/IChcbiAgICA8Um93TG9hZGVyIHdpZHRoPVwiMTAwJVwiIGhlaWdodD17MTkwfSBmZ0NvbG9yPVwiI2VlZVwiIGJnQ29sb3I9XCIjZmZmXCIgLz5cbiAgKSA6IChcbiAgICA8PlxuICAgICAgPEhpZ2hjaGFydHNSZWFjdFxuICAgICAgICByZWY9e2NoYXJ0Q29tcG9uZW50fVxuICAgICAgICBoaWdoY2hhcnRzPXtIaWdoY2hhcnRzfVxuICAgICAgICBvcHRpb25zPXtncmFwaE9wdGlvbnN9XG4gICAgICAvPlxuICAgICAge2Rpc3BsYXlSZXNldFpvb21CdXR0b24gJiYgKFxuICAgICAgICA8UmVzZXRab29tQnV0dG9uIG9uQ2xpY2s9e3Jlc2V0Wm9vbX0gaXNSdGw9e2lzUnRsfT5cbiAgICAgICAgICB7aTE4bi50KCdldmVudHNfb3ZlcnZpZXcuZmxvYXRpbmdfZ3JhcGgucmVzZXRfem9vbScpfVxuICAgICAgICA8L1Jlc2V0Wm9vbUJ1dHRvbj5cbiAgICAgICl9XG4gICAgPC8+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBHcmFwaDtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsTUFBQSxHQUFBQyx1QkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsd0JBQUEsR0FBQUosc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFJLFVBQUEsR0FBQUwsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFLLGNBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLEtBQUEsR0FBQVAsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFPLGlCQUFBLEdBQUFSLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBUSxXQUFBLEdBQUFSLE9BQUE7QUFBMEMsU0FBQVMseUJBQUFDLFdBQUEsZUFBQUMsT0FBQSxrQ0FBQUMsaUJBQUEsT0FBQUQs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
249
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfanF1ZXJ5IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9oaWdoY2hhcnRzUmVhY3RPZmZpY2lhbCIsIl9oaWdoc3RvY2siLCJfbm9EYXRhVG9EaXNwbGF5IiwiX0NvbnRlbnRMb2FkZXIiLCJfaTE4biIsIl9zdHlsZWRDb21wb25lbnRzIiwiX3JlYWN0UmVkdXgiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJub2RlSW50ZXJvcCIsIldlYWtNYXAiLCJjYWNoZUJhYmVsSW50ZXJvcCIsImNhY2hlTm9kZUludGVyb3AiLCJvYmoiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZjMiLCJkZWZhdWx0IiwiY2FjaGUiLCJoYXMiLCJnZXQiLCJuZXdPYmoiLCJoYXNQcm9wZXJ0eURlc2NyaXB0b3IiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImRlc2MiLCJzZXQiLCJOb0RhdGFUb0Rpc3BsYXkiLCJIaWdoY2hhcnRzIiwic2V0T3B0aW9ucyIsImxhbmciLCJub0RhdGEiLCJpMThuIiwidCIsInN0eWxlIiwiZm9udFdlaWdodCIsImZvbnRTaXplIiwiY29sb3IiLCJhZGRIb3VycyIsImhvdXJzIiwiaG91cnNBZ28iLCJEYXRlIiwic2V0SG91cnMiLCJnZXRIb3VycyIsImdldFRpbWUiLCJSZXNldFpvb21CdXR0b24iLCJzdHlsZWQiLCJidXR0b24iLCJ3aXRoQ29uZmlnIiwiZGlzcGxheU5hbWUiLCJjb21wb25lbnRJZCIsIl9yZWYiLCJpc1J0bCIsIl9yZWYyIiwiX3JlZjMiLCJ0aGVtZSIsImNvbG9yU2NoZW1lIiwibmF0dXJhbCIsIm4zMCIsIl9yZWY0IiwibjIwIiwiR3JhcGgiLCJfcmVmNSIsInBvaW50SWQiLCJ0aXRsZSIsInN0YXJ0VGltZSIsImVuZFRpbWUiLCJwbG90RnJvbSIsInBsb3RUbyIsIm5vT2JzZXJ2YXRpb24iLCJfcmVmNSRjdXN0b21IaWdoQ2hhcnQiLCJjdXN0b21IaWdoQ2hhcnRPcHRpb25zIiwiX3JlZjUkZGlzcGxheVJlc2V0Wm9vIiwiZGlzcGxheVJlc2V0Wm9vbUJ1dHRvbiIsImNoYXJ0Q29tcG9uZW50IiwidXNlUmVmIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJ0ZXh0IiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5MiIsImdyYXBoT3B0aW9ucyIsInNldEdyYXBoT3B0aW9ucyIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiaXNGZXRjaGluZyIsInNldElzRmV0Y2hpbmciLCJvYmplY3RDbG9uZSIsIl9vYmplY3RTcHJlYWQyIiwiY3JlZGl0cyIsImVuYWJsZWQiLCJzZXJpZXMiLCJjaGFydCIsInNwYWNpbmdCb3R0b20iLCJzcGFjaW5nTGVmdCIsInNwYWNpbmdSaWdodCIsInNwYWNpbmdUb3AiLCJiYWNrZ3JvdW5kQ29sb3IiLCJoZWlnaHQiLCJ6b29tVHlwZSIsInlBeGlzIiwieEF4aXMiLCJ0eXBlIiwicGxvdEJhbmRzIiwidGltZSIsInRpbWV6b25lT2Zmc2V0IiwiY3JlYXRlU2VyaWVzIiwic0RhdGEiLCJkYXRhc2V0cyIsInhEYXRhcyIsIl9pdGVyYXRvciIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyMiIsIl9zdGVwIiwiX2xvb3AiLCJkYXRhc2V0IiwidmFsdWUiLCJkYXRhIiwibWFwIiwidmFsIiwiaiIsInBvaW50X2lkIiwidW5pdCIsInRvb2x0aXAiLCJwb2ludEZvcm1hdHRlciIsImJ1bGxldCIsImNvbmNhdCIsIm5hbWUiLCJ5IiwidG9GaXhlZCIsInMiLCJuIiwiZG9uZSIsImVyciIsImUiLCJmIiwiaXRlcmF0ZUFuZEV2YWwiLCJjb2xvcnMiLCJrZXlzIiwiaSIsImxlbmd0aCIsIl90eXBlb2YyIiwidG9TdHJpbmciLCJtYXRjaCIsImZ1bmN0aW9uU3RyIiwic3Vic3RyaW5nIiwiZnVuYyIsIkZ1bmN0aW9uIiwiY3JlYXRlWUF4aXMiLCJyZXN1bHQiLCJnZXRPcHRpb25zIiwiJCIsImVhY2giLCJ5QXhpc2VzIiwiaW5kZXgiLCJwdXNoIiwic2hvd0VtcHR5IiwiZ2V0RGF0YSIsInVybCIsImZldGNoIiwidGhlbiIsInJlc3BvbnNlIiwianNvbiIsInBhcnNlSW50IiwidGltZXpvbmUiLCJ0el9vZmZzZXQiLCJmcm9tIiwidG8iLCJ1c2VFZmZlY3QiLCJjbGVhbnVwIiwicmVzZXRab29tIiwiX2NoYXJ0Q29tcG9uZW50JGN1cnJlIiwiY3VycmVudCIsIl9jaGFydENvbXBvbmVudCRjdXJyZTIiLCJzZXRFeHRyZW1lcyIsIm5hdkNvbnRleHQiLCJ1c2VTZWxlY3RvciIsInN0YXRlIiwibmF2X2NvbnRleHRfZGF0YSIsImxvY2FsZSIsImNyZWF0ZUVsZW1lbnQiLCJSb3dMb2FkZXIiLCJ3aWR0aCIsImZnQ29sb3IiLCJiZ0NvbG9yIiwiRnJhZ21lbnQiLCJyZWYiLCJoaWdoY2hhcnRzIiwib3B0aW9ucyIsIm9uQ2xpY2siLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9HcmFwaC9HcmFwaC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICQgZnJvbSAnanF1ZXJ5JztcbmltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgSGlnaGNoYXJ0c1JlYWN0IGZyb20gJ2hpZ2hjaGFydHMtcmVhY3Qtb2ZmaWNpYWwnO1xuaW1wb3J0IEhpZ2hjaGFydHMgZnJvbSAnaGlnaGNoYXJ0cy9oaWdoc3RvY2snO1xuaW1wb3J0IE5vRGF0YVRvRGlzcGxheSBmcm9tICdoaWdoY2hhcnRzL21vZHVsZXMvbm8tZGF0YS10by1kaXNwbGF5JztcbmltcG9ydCB7IFJvd0xvYWRlciB9IGZyb20gJy4uL0NvbnRlbnRMb2FkZXInO1xuaW1wb3J0IGkxOG4gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL2kxOG4nO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQgeyB1c2VTZWxlY3RvciB9IGZyb20gJ3JlYWN0LXJlZHV4JztcbmltcG9ydCB7IGFwcFJlZHVjZXIgfSBmcm9tICcuLi8uLi9zdG9yZS9yb290UmVkdWNlcic7XG5cbi8vIEluaXRpYWxpemUgbm8tZGF0YS10by1kaXNwbGF5IG1vZHVsZSB3aXRoIEhpZ2hjaGFydHNcbk5vRGF0YVRvRGlzcGxheShIaWdoY2hhcnRzKTtcblxuLy8gU2V0IGdsb2JhbCBvcHRpb25zIGZvciBub0RhdGEgbWVzc2FnZSBhbmQgc3R5bGVcbkhpZ2hjaGFydHMuc2V0T3B0aW9ucyh7XG4gIGxhbmc6IHtcbiAgICBub0RhdGE6IGkxOG4udCgnZ2VuZXJhbC5ub19kYXRhX2F2YWlsYWJsZScpLFxuICB9LFxuICBub0RhdGE6IHtcbiAgICBzdHlsZToge1xuICAgICAgZm9udFdlaWdodDogJ2JvbGQnLFxuICAgICAgZm9udFNpemU6ICcxNHB4JyxcbiAgICAgIGNvbG9yOiAnIzY2NicsXG4gICAgfSxcbiAgfSxcbn0pO1xuXG50eXBlIElQcm9wcyA9IHtcbiAgcG9pbnRJZDogbnVtYmVyIHwgbnVsbDtcbiAgdGl0bGU/OiBzdHJpbmcgfCBudWxsO1xuICBzdGFydFRpbWU/OiBudW1iZXI7XG4gIGVuZFRpbWU/OiBudW1iZXI7XG4gIHBsb3RGcm9tPzogbnVtYmVyO1xuICBwbG90VG8/OiBudW1iZXI7XG4gIG5vT2JzZXJ2YXRpb24/OiBib29sZWFuO1xuICBkaXNwbGF5UmVzZXRab29tQnV0dG9uPzogYm9vbGVhbjtcbiAgY3VzdG9tSGlnaENoYXJ0T3B0aW9ucz86IG9iamVjdDtcbn07XG5cbmZ1bmN0aW9uIGFkZEhvdXJzKGhvdXJzOiBudW1iZXIpIHtcbiAgbGV0IGhvdXJzQWdvID0gbmV3IERhdGUoKTtcbiAgaG91cnNBZ28uc2V0SG91cnMoaG91cnNBZ28uZ2V0SG91cnMoKSArIGhvdXJzKTtcbiAgcmV0dXJuIGhvdXJzQWdvLmdldFRpbWUoKSAvIDEwMDA7XG59XG5jb25zdCBSZXNldFpvb21CdXR0b24gPSBzdHlsZWQuYnV0dG9uPHsgaXNSdGw6IGJvb2xlYW4gfT5gXG4gIEBtZWRpYSAobWF4LXdpZHRoOiA1MDBweCkge1xuICAgIHJpZ2h0OiAkeyh7IGlzUnRsIH0pID0+IChpc1J0bCA/ICcxNXB4JyA6ICd1bnNldCcpfSFpbXBvcnRhbnQ7XG4gICAgbGVmdDogJHsoeyBpc1J0bCB9KSA9PiAoaXNSdGwgPyAndW5zZXQnIDogJzE1cHgnKX0gIWltcG9ydGFudDtcbiAgICB0b3A6IDZweCAhaW1wb3J0YW50O1xuICB9XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiA2NXB4O1xuICByaWdodDogMTVweDtcbiAgYm9yZGVyOiAxcHggc29saWQgJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvclNjaGVtZS5uYXR1cmFsLm4zMH07XG4gIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgcGFkZGluZzogMCA1cHg7XG5cbiAgJjpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvclNjaGVtZS5uYXR1cmFsLm4yMH07XG4gIH1cbmA7XG5jb25zdCBHcmFwaCA9ICh7XG4gIHBvaW50SWQsXG4gIHRpdGxlLFxuICBzdGFydFRpbWUsXG4gIGVuZFRpbWUsXG4gIHBsb3RGcm9tLFxuICBwbG90VG8sXG4gIG5vT2JzZXJ2YXRpb24sXG4gIGN1c3RvbUhpZ2hDaGFydE9wdGlvbnMgPSB7fSxcbiAgZGlzcGxheVJlc2V0Wm9vbUJ1dHRvbiA9IGZhbHNlLFxufTogSVByb3BzKSA9PiB7XG4gIGNvbnN0IGNoYXJ0Q29tcG9uZW50ID0gdXNlUmVmPGFueT4obnVsbCk7XG4gIGNvbnN0IFtncmFwaE9wdGlvbnMsIHNldEdyYXBoT3B0aW9uc10gPSB1c2VTdGF0ZSh7XG4gICAgdGl0bGU6IHsgdGV4dDogJ1BsZWFzZSBXYWl0IC4uLicgfSxcbiAgfSk7XG4gIGNvbnN0IFtpc0ZldGNoaW5nLCBzZXRJc0ZldGNoaW5nXSA9IHVzZVN0YXRlPGJvb2xlYW4+KHRydWUpO1xuICBsZXQgb2JqZWN0Q2xvbmUgPSB7XG4gICAgdGl0bGU6IHtcbiAgICAgIHRleHQ6IHRpdGxlLFxuICAgIH0sXG4gICAgY3JlZGl0czoge1xuICAgICAgZW5hYmxlZDogZmFsc2UsXG4gICAgfSxcbiAgICBzZXJpZXM6IFtdLFxuICAgIGNoYXJ0OiB7XG4gICAgICBzcGFjaW5nQm90dG9tOiAyMCxcbiAgICAgIHNwYWNpbmdMZWZ0OiAwLFxuICAgICAgc3BhY2luZ1JpZ2h0OiAwLFxuICAgICAgc3BhY2luZ1RvcDogMjAsXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6ICdyZ2JhKDAsMCwwLDApJyxcbiAgICAgIGhlaWdodDogMjUwLFxuICAgICAgem9vbVR5cGU6ICd4JyxcbiAgICB9LFxuICAgIHlBeGlzOiBbXSxcbiAgICB4QXhpczoge1xuICAgICAgdHlwZTogJ2RhdGV0aW1lJyxcbiAgICAgIHBsb3RCYW5kczogW10sXG4gICAgfSxcbiAgICB0aW1lOiB7XG4gICAgICB0aW1lem9uZU9mZnNldDogMCxcbiAgICB9LFxuICAgIC4uLmN1c3RvbUhpZ2hDaGFydE9wdGlvbnMsXG4gIH07XG4gIGNvbnN0IGNyZWF0ZVNlcmllcyA9IChzRGF0YTogYW55KSA9PiB7XG4gICAgbGV0IGRhdGFzZXRzID0gc0RhdGEuZGF0YXNldHM7XG4gICAgbGV0IHhEYXRhcyA9IHNEYXRhLnhEYXRhcztcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMpIHtcbiAgICAgIGRhdGFzZXQuZGF0YSA9IGRhdGFzZXQuZGF0YS5tYXAoKHZhbDogbnVtYmVyLCBqOiBudW1iZXIpID0+IFtcbiAgICAgICAgeERhdGFzW2RhdGFzZXQucG9pbnRfaWRdW2pdLFxuICAgICAgICB2YWwsXG4gICAgICBdKTtcblxuICAgICAgaWYgKGRhdGFzZXQ/LnVuaXQpIHtcbiAgICAgICAgZGF0YXNldC50b29sdGlwID0ge1xuICAgICAgICAgIHBvaW50Rm9ybWF0dGVyOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBjb25zdCBidWxsZXQgPSBgPHRzcGFuIHN0eWxlPVwiZmlsbDoke2RhdGFzZXQuY29sb3J9XCIgeD1cIjhcIiBkeT1cIjE1XCI+4pePPC90c3Bhbj4gYDtcbiAgICAgICAgICAgIHJldHVybiBgPHRzcGFuPiR7YnVsbGV0fSR7XG4gICAgICAgICAgICAgIGRhdGFzZXQubmFtZVxuICAgICAgICAgICAgfTo8L3RzcGFuPiA8Yj4ke3RoaXMueS50b0ZpeGVkKDIpfSDCsCR7ZGF0YXNldC51bml0fTwvYj5gO1xuICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBkYXRhc2V0cztcbiAgfTtcblxuICBjb25zdCBpdGVyYXRlQW5kRXZhbCA9IChkYXRhOiBhbnksIGNvbG9yczogYW55KSA9PiB7XG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIGxldCBrZXlzID0gT2JqZWN0LmtleXMoZGF0YSk7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbGV0IGtleSA9IGtleXNbaV0sXG4gICAgICAgICAgdmFsdWUgPSBkYXRhW2tleV07XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gJ29iamVjdCcpIHtcbiAgICAgICAgICBpdGVyYXRlQW5kRXZhbCh2YWx1ZSwgY29sb3JzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAodmFsdWUgJiYgdmFsdWUudG9TdHJpbmcoKS5tYXRjaCgvZnVuY3Rpb246Oi8pKSB7XG4gICAgICAgICAgICBsZXQgZnVuY3Rpb25TdHIgPSB2YWx1ZS5zdWJzdHJpbmcoMTApLFxuICAgICAgICAgICAgICBmdW5jID0gbmV3IEZ1bmN0aW9uKGZ1bmN0aW9uU3RyKTtcbiAgICAgICAgICAgIGRhdGFba2V5XSA9IGZ1bmMoKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHZhbHVlICYmIHZhbHVlLnRvU3RyaW5nKCkubWF0Y2goL2NvbG9yc1xcWyguKj8pXFxdLykpIHtcbiAgICAgICAgICAgIGRhdGFba2V5XSA9IGNvbG9yc1t2YWx1ZS50b1N0cmluZygpLm1hdGNoKC9jb2xvcnNcXFsoLio/KVxcXS8pWzFdXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgY29uc3QgY3JlYXRlWUF4aXMgPSAoc0RhdGE6IGFueSkgPT4ge1xuICAgIHZhciByZXN1bHQ6IGFueVtdID0gW10sXG4gICAgICBjb2xvcnMgPSBIaWdoY2hhcnRzLmdldE9wdGlvbnMoKS5jb2xvcnM7XG4gICAgaWYgKHNEYXRhKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICAgICQuZWFjaChzRGF0YS55QXhpc2VzLCBmdW5jdGlvbiAoaW5kZXgsIHlBeGlzKSB7XG4gICAgICAgIGl0ZXJhdGVBbmRFdmFsKHlBeGlzLCBjb2xvcnMpO1xuICAgICAgICByZXN1bHQucHVzaCh5QXhpcyk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKHJlc3VsdC5sZW5ndGggPT09IDApIHtcbiAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgc2hvd0VtcHR5OiBmYWxzZSxcbiAgICAgICAgdGl0bGU6IHtcbiAgICAgICAgICB0ZXh0OiAnJyxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG5cbiAgY29uc3QgZ2V0RGF0YSA9ICgpID0+IHtcbiAgICBzdGFydFRpbWUgPSBzdGFydFRpbWUgfHwgYWRkSG91cnMoLTMpO1xuICAgIGVuZFRpbWUgPSBlbmRUaW1lIHx8IGFkZEhvdXJzKDMpO1xuICAgIGxldCB1cmwgPSBgL2NvbnRyb2xfcm9vbS9wb2ludF9jaGFydF9kYXRhLmpzb24/cG9pbnRfaWQ9JHtwb2ludElkfWA7XG4gICAgdXJsICs9IHN0YXJ0VGltZSA/IGAmc3RhcnQ9JHtzdGFydFRpbWV9YCA6ICcnO1xuICAgIHVybCArPSBlbmRUaW1lID8gYCZzdG9wPSR7ZW5kVGltZX1gIDogJyc7XG4gICAgdXJsICs9IG5vT2JzZXJ2YXRpb24gPyBgJm5vX29ic2VydmF0aW9uPSR7bm9PYnNlcnZhdGlvbn1gIDogJyc7XG4gICAgc2V0SXNGZXRjaGluZyh0cnVlKTtcbiAgICBmZXRjaCh1cmwpXG4gICAgICAudGhlbigocmVzcG9uc2UpID0+IHJlc3BvbnNlLmpzb24oKSlcbiAgICAgIC50aGVuKChqc29uKSA9PiB7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBvYmplY3RDbG9uZS5zZXJpZXMgPSBjcmVhdGVTZXJpZXMoanNvbik7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBvYmplY3RDbG9uZS55QXhpcyA9IGNyZWF0ZVlBeGlzKGpzb24pO1xuICAgICAgICBvYmplY3RDbG9uZS50aW1lLnRpbWV6b25lT2Zmc2V0ID1cbiAgICAgICAgICBwYXJzZUludChqc29uLnRpbWV6b25lLnR6X29mZnNldCkgKiA2MDtcbiAgICAgICAgaWYgKHBsb3RGcm9tICYmIHBsb3RUbykge1xuICAgICAgICAgIG9iamVjdENsb25lLnhBeGlzLnBsb3RCYW5kcyA9IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgICAgICAgIGNvbG9yOiAncmdiYSgyMzAsMjMsMTQ4LDAuMSknLFxuICAgICAgICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgICAgICAgZnJvbTogcGxvdEZyb20gKiAxMDAwLFxuICAgICAgICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgICAgICAgdG86IHBsb3RUbyAqIDEwMDAsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF07XG4gICAgICAgIH1cbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBzZXRHcmFwaE9wdGlvbnMob2JqZWN0Q2xvbmUpO1xuICAgICAgICBzZXRJc0ZldGNoaW5nKGZhbHNlKTtcbiAgICAgIH0pO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZ2V0RGF0YSgpO1xuICAgIHJldHVybiBmdW5jdGlvbiBjbGVhbnVwKCkge307XG4gIH0sIFtwb2ludElkXSk7XG4gIGNvbnN0IHJlc2V0Wm9vbSA9ICgpID0+IHtcbiAgICBpZiAoY2hhcnRDb21wb25lbnQuY3VycmVudD8uY2hhcnQpIHtcbiAgICAgIGNvbnN0IHsgeEF4aXMsIHlBeGlzIH0gPSBjaGFydENvbXBvbmVudC5jdXJyZW50LmNoYXJ0O1xuICAgICAgaWYgKHhBeGlzPy5sZW5ndGggJiYgeUF4aXM/Lmxlbmd0aCkge1xuICAgICAgICB4QXhpc1swXS5zZXRFeHRyZW1lcygpO1xuICAgICAgICB5QXhpc1swXS5zZXRFeHRyZW1lcygpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbiAgY29uc3QgbmF2Q29udGV4dCA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZTogUmV0dXJuVHlwZTx0eXBlb2YgYXBwUmVkdWNlcj4pID0+IHN0YXRlLm5hdl9jb250ZXh0X2RhdGEubmF2Q29udGV4dCxcbiAgKTtcbiAgY29uc3QgaXNSdGw6IGJvb2xlYW4gPSBuYXZDb250ZXh0LmxvY2FsZSA9PT0gJ2hlJyA/IHRydWUgOiBmYWxzZTtcbiAgcmV0dXJuIGlzRmV0Y2hpbmcgPyAoXG4gICAgPFJvd0xvYWRlciB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9ezE5MH0gZmdDb2xvcj1cIiNlZWVcIiBiZ0NvbG9yPVwiI2ZmZlwiIC8+XG4gICkgOiAoXG4gICAgPD5cbiAgICAgIDxIaWdoY2hhcnRzUmVhY3RcbiAgICAgICAgcmVmPXtjaGFydENvbXBvbmVudH1cbiAgICAgICAgaGlnaGNoYXJ0cz17SGlnaGNoYXJ0c31cbiAgICAgICAgb3B0aW9ucz17Z3JhcGhPcHRpb25zfVxuICAgICAgLz5cbiAgICAgIHtkaXNwbGF5UmVzZXRab29tQnV0dG9uICYmIChcbiAgICAgICAgPFJlc2V0Wm9vbUJ1dHRvbiBvbkNsaWNrPXtyZXNldFpvb219IGlzUnRsPXtpc1J0bH0+XG4gICAgICAgICAge2kxOG4udCgnZXZlbnRzX292ZXJ2aWV3LmZsb2F0aW5nX2dyYXBoLnJlc2V0X3pvb20nKX1cbiAgICAgICAgPC9SZXNldFpvb21CdXR0b24+XG4gICAgICApfVxuICAgIDwvPlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgR3JhcGg7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFHLHdCQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSSxVQUFBLEdBQUFMLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSyxnQkFBQSxHQUFBTixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQU0sY0FBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sS0FBQSxHQUFBUixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQVEsaUJBQUEsR0FBQVQsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFTLFdBQUEsR0FBQVQsT0FBQTtBQUEwQyxTQUFBVSx5QkFBQUMsV0FBQSxlQUFBQyxPQUFBLGtDQUFBQyxpQkFBQSxPQUFBRCxPQUFBLFFBQUFFLGdCQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEseUJBQUFDLFdBQUEsV0FBQUEsV0FBQSxHQUFBRyxnQkFBQSxHQUFBRCxpQkFBQSxLQUFBRixXQUFBO0FBQUEsU0FBQVQsd0JBQUFhLEdBQUEsRUFBQUosV0FBQSxTQUFBQSxXQUFBLElBQUFJLEdBQUEsSUFBQUEsR0FBQSxDQUFBQyxVQUFBLFdBQUFELEdBQUEsUUFBQUEsR0FBQSxhQUFBRSxRQUFBLENBQUFGLEdBQUEseUJBQUFBLEdBQUEsNEJBQUFHLE9BQUEsRUFBQUgsR0FBQSxVQUFBSSxLQUFBLEdBQUFULHdCQUFBLENBQUFDLFdBQUEsT0FBQVEsS0FBQSxJQUFBQSxLQUFBLENBQUFDLEdBQUEsQ0FBQUwsR0FB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
package/lib/i18n/en.json CHANGED
@@ -4082,7 +4082,8 @@
4082
4082
  "water_consumption": "Water Consumption",
4083
4083
  "diameter": "Diameter",
4084
4084
  "address": "No address found",
4085
- "sector": "Default sector"
4085
+ "sector": "Default sector",
4086
+ "should_install": "Should install"
4086
4087
  }
4087
4088
  }
4088
4089
  }
@@ -1,10 +1,10 @@
1
1
  "use strict";
2
2
 
3
- var packageJsonVersion = "1.2.418-alpha.1";
3
+ var packageJsonVersion = "1.2.418-alpha.11";
4
4
  if (typeof packageJsonVersion === 'string') {
5
5
  // eslint-disable-next-line no-console
6
6
  console.log("%c Kando UI %c v".concat(packageJsonVersion, " "), 'font-size: 15px; background-color: #fff; color: #e20f53;', 'font-weight: bold; font-size: 15px; background-color: #e20f53; color: #fff;', "with NODE_ENV=".concat(process.env.NODE_ENV));
7
7
  } else {
8
8
  console.error('getVersion.js got bad version from package.json, expected string.');
9
9
  }
10
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwYWNrYWdlSnNvblZlcnNpb24iLCJjb25zb2xlIiwibG9nIiwiY29uY2F0IiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwiZXJyb3IiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvbWFjcm9zL2dldFZlcnNpb24uanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHByZXZhbCBmcm9tICdwcmV2YWwubWFjcm8nO1xuXG5jb25zdCBwYWNrYWdlSnNvblZlcnNpb24gPSBwcmV2YWxgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi8uLi9iaW4vZ2V0VmVyc2lvbkZyb21QYWNrYWdlSnNvbi5qcycpYDtcbmlmICh0eXBlb2YgcGFja2FnZUpzb25WZXJzaW9uID09PSAnc3RyaW5nJykge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICBjb25zb2xlLmxvZyhcbiAgICBgJWMgS2FuZG8gVUkgJWMgdiR7cGFja2FnZUpzb25WZXJzaW9ufSBgLFxuICAgICdmb250LXNpemU6IDE1cHg7IGJhY2tncm91bmQtY29sb3I6ICNmZmY7IGNvbG9yOiAjZTIwZjUzOycsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOyBmb250LXNpemU6IDE1cHg7IGJhY2tncm91bmQtY29sb3I6ICNlMjBmNTM7IGNvbG9yOiAjZmZmOycsXG4gICAgYHdpdGggTk9ERV9FTlY9JHtwcm9jZXNzLmVudi5OT0RFX0VOVn1gLFxuICApO1xufSBlbHNlIHtcbiAgY29uc29sZS5lcnJvcihcbiAgICAnZ2V0VmVyc2lvbi5qcyBnb3QgYmFkIHZlcnNpb24gZnJvbSBwYWNrYWdlLmpzb24sIGV4cGVjdGVkIHN0cmluZy4nLFxuICApO1xufVxuIl0sIm1hcHBpbmdzIjoiOztBQUVBLElBQU1BLGtCQUFrQixvQkFBNkU7QUFDckcsSUFBSSxPQUFPQSxrQkFBa0IsS0FBSyxRQUFRLEVBQUU7RUFDMUM7RUFDQUMsT0FBTyxDQUFDQyxHQUFHLG9CQUFBQyxNQUFBLENBQ1VILGtCQUFrQixRQUNyQywwREFBMEQsRUFDMUQsNkVBQTZFLG1CQUFBRyxNQUFBLENBQzVEQyxPQUFPLENBQUNDLEdBQUcsQ0FBQ0MsUUFBUSxDQUN2QyxDQUFDO0FBQ0gsQ0FBQyxNQUFNO0VBQ0xMLE9BQU8sQ0FBQ00sS0FBSyxDQUNYLG1FQUNGLENBQUM7QUFDSCJ9
10
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwYWNrYWdlSnNvblZlcnNpb24iLCJjb25zb2xlIiwibG9nIiwiY29uY2F0IiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwiZXJyb3IiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvbWFjcm9zL2dldFZlcnNpb24uanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHByZXZhbCBmcm9tICdwcmV2YWwubWFjcm8nO1xuXG5jb25zdCBwYWNrYWdlSnNvblZlcnNpb24gPSBwcmV2YWxgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi8uLi9iaW4vZ2V0VmVyc2lvbkZyb21QYWNrYWdlSnNvbi5qcycpYDtcbmlmICh0eXBlb2YgcGFja2FnZUpzb25WZXJzaW9uID09PSAnc3RyaW5nJykge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICBjb25zb2xlLmxvZyhcbiAgICBgJWMgS2FuZG8gVUkgJWMgdiR7cGFja2FnZUpzb25WZXJzaW9ufSBgLFxuICAgICdmb250LXNpemU6IDE1cHg7IGJhY2tncm91bmQtY29sb3I6ICNmZmY7IGNvbG9yOiAjZTIwZjUzOycsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOyBmb250LXNpemU6IDE1cHg7IGJhY2tncm91bmQtY29sb3I6ICNlMjBmNTM7IGNvbG9yOiAjZmZmOycsXG4gICAgYHdpdGggTk9ERV9FTlY9JHtwcm9jZXNzLmVudi5OT0RFX0VOVn1gLFxuICApO1xufSBlbHNlIHtcbiAgY29uc29sZS5lcnJvcihcbiAgICAnZ2V0VmVyc2lvbi5qcyBnb3QgYmFkIHZlcnNpb24gZnJvbSBwYWNrYWdlLmpzb24sIGV4cGVjdGVkIHN0cmluZy4nLFxuICApO1xufVxuIl0sIm1hcHBpbmdzIjoiOztBQUVBLElBQU1BLGtCQUFrQixxQkFBNkU7QUFDckcsSUFBSSxPQUFPQSxrQkFBa0IsS0FBSyxRQUFRLEVBQUU7RUFDMUM7RUFDQUMsT0FBTyxDQUFDQyxHQUFHLG9CQUFBQyxNQUFBLENBQ1VILGtCQUFrQixRQUNyQywwREFBMEQsRUFDMUQsNkVBQTZFLG1CQUFBRyxNQUFBLENBQzVEQyxPQUFPLENBQUNDLEdBQUcsQ0FBQ0MsUUFBUSxDQUN2QyxDQUFDO0FBQ0gsQ0FBQyxNQUFNO0VBQ0xMLE9BQU8sQ0FBQ00sS0FBSyxDQUNYLG1FQUNGLENBQUM7QUFDSCJ9