@pie-lib/config-ui 11.30.3-next.2 → 11.30.4-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (145) hide show
  1. package/CHANGELOG.md +7 -78
  2. package/lib/__tests__/alert-dialog.test.js +262 -0
  3. package/lib/__tests__/checkbox.test.js +227 -0
  4. package/lib/__tests__/choice-utils.test.js +14 -0
  5. package/lib/__tests__/form-section.test.js +252 -0
  6. package/lib/__tests__/help.test.js +270 -0
  7. package/lib/__tests__/input.test.js +268 -0
  8. package/lib/__tests__/langs.test.js +541 -0
  9. package/lib/__tests__/number-text-field-custom.test.js +362 -0
  10. package/lib/__tests__/number-text-field.test.js +421 -0
  11. package/lib/__tests__/radio-with-label.test.js +233 -0
  12. package/lib/__tests__/settings-panel.test.js +184 -0
  13. package/lib/__tests__/settings.test.js +653 -0
  14. package/lib/__tests__/tabs.test.js +211 -0
  15. package/lib/__tests__/two-choice.test.js +124 -0
  16. package/lib/__tests__/with-stateful-model.test.js +221 -0
  17. package/lib/alert-dialog.js +36 -43
  18. package/lib/alert-dialog.js.map +1 -1
  19. package/lib/checkbox.js +57 -72
  20. package/lib/checkbox.js.map +1 -1
  21. package/lib/choice-configuration/__tests__/feedback-menu.test.js +287 -0
  22. package/lib/choice-configuration/__tests__/index.test.js +253 -0
  23. package/lib/choice-configuration/feedback-menu.js +30 -65
  24. package/lib/choice-configuration/feedback-menu.js.map +1 -1
  25. package/lib/choice-configuration/index.js +203 -263
  26. package/lib/choice-configuration/index.js.map +1 -1
  27. package/lib/choice-utils.js +7 -19
  28. package/lib/choice-utils.js.map +1 -1
  29. package/lib/feedback-config/__tests__/feedback-config.test.js +201 -0
  30. package/lib/feedback-config/__tests__/feedback-selector.test.js +177 -0
  31. package/lib/feedback-config/feedback-selector.js +80 -116
  32. package/lib/feedback-config/feedback-selector.js.map +1 -1
  33. package/lib/feedback-config/group.js +27 -41
  34. package/lib/feedback-config/group.js.map +1 -1
  35. package/lib/feedback-config/index.js +48 -91
  36. package/lib/feedback-config/index.js.map +1 -1
  37. package/lib/form-section.js +32 -34
  38. package/lib/form-section.js.map +1 -1
  39. package/lib/help.js +40 -81
  40. package/lib/help.js.map +1 -1
  41. package/lib/index.js +2 -32
  42. package/lib/index.js.map +1 -1
  43. package/lib/input.js +22 -55
  44. package/lib/input.js.map +1 -1
  45. package/lib/inputs.js +62 -96
  46. package/lib/inputs.js.map +1 -1
  47. package/lib/langs.js +59 -102
  48. package/lib/langs.js.map +1 -1
  49. package/lib/layout/__tests__/config.layout.test.js +70 -0
  50. package/lib/layout/__tests__/layout-content.test.js +6 -0
  51. package/lib/layout/config-layout.js +41 -71
  52. package/lib/layout/config-layout.js.map +1 -1
  53. package/lib/layout/index.js +1 -4
  54. package/lib/layout/index.js.map +1 -1
  55. package/lib/layout/layout-contents.js +73 -104
  56. package/lib/layout/layout-contents.js.map +1 -1
  57. package/lib/layout/settings-box.js +28 -57
  58. package/lib/layout/settings-box.js.map +1 -1
  59. package/lib/mui-box/index.js +42 -58
  60. package/lib/mui-box/index.js.map +1 -1
  61. package/lib/number-text-field-custom.js +80 -162
  62. package/lib/number-text-field-custom.js.map +1 -1
  63. package/lib/number-text-field.js +81 -115
  64. package/lib/number-text-field.js.map +1 -1
  65. package/lib/radio-with-label.js +31 -32
  66. package/lib/radio-with-label.js.map +1 -1
  67. package/lib/settings/display-size.js +17 -33
  68. package/lib/settings/display-size.js.map +1 -1
  69. package/lib/settings/index.js +15 -48
  70. package/lib/settings/index.js.map +1 -1
  71. package/lib/settings/panel.js +160 -230
  72. package/lib/settings/panel.js.map +1 -1
  73. package/lib/settings/settings-radio-label.js +29 -31
  74. package/lib/settings/settings-radio-label.js.map +1 -1
  75. package/lib/settings/toggle.js +36 -47
  76. package/lib/settings/toggle.js.map +1 -1
  77. package/lib/tabs/index.js +23 -58
  78. package/lib/tabs/index.js.map +1 -1
  79. package/lib/tags-input/__tests__/index.test.js +183 -0
  80. package/lib/tags-input/index.js +51 -100
  81. package/lib/tags-input/index.js.map +1 -1
  82. package/lib/two-choice.js +47 -91
  83. package/lib/two-choice.js.map +1 -1
  84. package/lib/with-stateful-model.js +9 -32
  85. package/lib/with-stateful-model.js.map +1 -1
  86. package/package.json +12 -20
  87. package/src/__tests__/alert-dialog.test.jsx +283 -0
  88. package/src/__tests__/checkbox.test.jsx +249 -0
  89. package/src/__tests__/form-section.test.jsx +334 -0
  90. package/src/__tests__/help.test.jsx +184 -0
  91. package/src/__tests__/input.test.jsx +192 -0
  92. package/src/__tests__/langs.test.jsx +435 -15
  93. package/src/__tests__/number-text-field-custom.test.jsx +438 -0
  94. package/src/__tests__/number-text-field.test.jsx +295 -102
  95. package/src/__tests__/radio-with-label.test.jsx +259 -0
  96. package/src/__tests__/settings-panel.test.js +66 -83
  97. package/src/__tests__/settings.test.jsx +515 -0
  98. package/src/__tests__/tabs.test.jsx +193 -0
  99. package/src/__tests__/two-choice.test.js +104 -18
  100. package/src/__tests__/with-stateful-model.test.jsx +145 -0
  101. package/src/alert-dialog.jsx +21 -19
  102. package/src/checkbox.jsx +42 -46
  103. package/src/choice-configuration/__tests__/feedback-menu.test.jsx +157 -4
  104. package/src/choice-configuration/__tests__/index.test.jsx +198 -56
  105. package/src/choice-configuration/feedback-menu.jsx +6 -6
  106. package/src/choice-configuration/index.jsx +201 -196
  107. package/src/feedback-config/__tests__/feedback-config.test.jsx +130 -60
  108. package/src/feedback-config/__tests__/feedback-selector.test.jsx +87 -40
  109. package/src/feedback-config/feedback-selector.jsx +52 -53
  110. package/src/feedback-config/group.jsx +21 -22
  111. package/src/feedback-config/index.jsx +27 -29
  112. package/src/form-section.jsx +26 -18
  113. package/src/help.jsx +20 -28
  114. package/src/input.jsx +1 -1
  115. package/src/inputs.jsx +34 -50
  116. package/src/langs.jsx +41 -46
  117. package/src/layout/__tests__/config.layout.test.jsx +55 -38
  118. package/src/layout/config-layout.jsx +38 -32
  119. package/src/layout/layout-contents.jsx +38 -39
  120. package/src/layout/settings-box.jsx +16 -19
  121. package/src/mui-box/index.jsx +35 -43
  122. package/src/number-text-field-custom.jsx +30 -36
  123. package/src/number-text-field.jsx +45 -29
  124. package/src/radio-with-label.jsx +25 -13
  125. package/src/settings/display-size.jsx +12 -11
  126. package/src/settings/panel.jsx +97 -91
  127. package/src/settings/settings-radio-label.jsx +25 -13
  128. package/src/settings/toggle.jsx +30 -29
  129. package/src/tabs/index.jsx +8 -8
  130. package/src/tags-input/__tests__/index.test.jsx +88 -37
  131. package/src/tags-input/index.jsx +35 -38
  132. package/src/two-choice.jsx +15 -19
  133. package/esm/index.css +0 -847
  134. package/esm/index.js +0 -213950
  135. package/esm/index.js.map +0 -1
  136. package/esm/package.json +0 -3
  137. package/src/__tests__/__snapshots__/langs.test.jsx.snap +0 -32
  138. package/src/__tests__/__snapshots__/settings-panel.test.js.snap +0 -115
  139. package/src/__tests__/__snapshots__/two-choice.test.js.snap +0 -171
  140. package/src/choice-configuration/__tests__/__snapshots__/feedback-menu.test.jsx.snap +0 -51
  141. package/src/choice-configuration/__tests__/__snapshots__/index.test.jsx.snap +0 -519
  142. package/src/feedback-config/__tests__/__snapshots__/feedback-config.test.jsx.snap +0 -27
  143. package/src/feedback-config/__tests__/__snapshots__/feedback-selector.test.jsx.snap +0 -38
  144. package/src/layout/__tests__/__snapshots__/config.layout.test.jsx.snap +0 -59
  145. package/src/tags-input/__tests__/__snapshots__/index.test.jsx.snap +0 -170
@@ -1,72 +1,39 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports["default"] = exports.Panel = void 0;
9
-
10
8
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
-
12
9
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
-
14
10
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
15
-
16
- var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
17
-
18
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
19
-
20
11
  var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
21
-
22
12
  var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
23
-
13
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
24
14
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
25
-
26
15
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
27
-
28
16
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
29
-
30
17
  var _react = _interopRequireDefault(require("react"));
31
-
32
18
  var _propTypes = _interopRequireDefault(require("prop-types"));
33
-
34
- var _styles = require("@material-ui/core/styles");
35
-
36
19
  var _get2 = _interopRequireDefault(require("lodash/get"));
37
-
38
20
  var _set = _interopRequireDefault(require("lodash/set"));
39
-
40
- var _Select = _interopRequireDefault(require("@material-ui/core/Select"));
41
-
42
- var _Input = _interopRequireDefault(require("@material-ui/core/Input"));
43
-
44
- var _MenuItem = _interopRequireDefault(require("@material-ui/core/MenuItem"));
45
-
21
+ var _styles = require("@mui/material/styles");
22
+ var _Select = _interopRequireDefault(require("@mui/material/Select"));
23
+ var _Input = _interopRequireDefault(require("@mui/material/Input"));
24
+ var _MenuItem = _interopRequireDefault(require("@mui/material/MenuItem"));
25
+ var _Typography = _interopRequireDefault(require("@mui/material/Typography"));
46
26
  var _debug = _interopRequireDefault(require("debug"));
47
-
48
27
  var _toggle = _interopRequireDefault(require("./toggle"));
49
-
50
28
  var _twoChoice = require("../two-choice");
51
-
52
29
  var _settingsRadioLabel = _interopRequireDefault(require("./settings-radio-label"));
53
-
54
30
  var _numberTextField = _interopRequireDefault(require("../number-text-field"));
55
-
56
31
  var _checkbox = _interopRequireDefault(require("../checkbox"));
57
-
58
- var _Typography = _interopRequireDefault(require("@material-ui/core/Typography"));
59
-
60
32
  var _excluded = ["isConfigProperty"];
61
-
62
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
63
-
64
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
65
-
66
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
67
-
68
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
69
-
33
+ function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); }
34
+ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
35
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
36
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
70
37
  var log = (0, _debug["default"])('pie-lib:config-ui:settings:panel');
71
38
  var labelValue = {
72
39
  label: _propTypes["default"].string,
@@ -77,11 +44,10 @@ var baseTypes = {
77
44
  value: _propTypes["default"].string,
78
45
  onChange: _propTypes["default"].func
79
46
  };
80
-
81
47
  var CheckboxChoice = function CheckboxChoice(_ref) {
82
48
  var label = _ref.label,
83
- value = _ref.value,
84
- _onChange = _ref.onChange;
49
+ value = _ref.value,
50
+ _onChange = _ref.onChange;
85
51
  return /*#__PURE__*/_react["default"].createElement(_checkbox["default"], {
86
52
  checked: value,
87
53
  label: label,
@@ -90,21 +56,34 @@ var CheckboxChoice = function CheckboxChoice(_ref) {
90
56
  }
91
57
  });
92
58
  };
93
-
94
59
  CheckboxChoice.propTypes = {
95
60
  label: _propTypes["default"].string,
96
61
  value: _propTypes["default"].bool,
97
62
  onChange: _propTypes["default"].func
98
63
  };
99
-
100
- var Radio = function Radio(_ref2) {
101
- var classes = _ref2.classes,
102
- label = _ref2.label,
103
- value = _ref2.value,
104
- onChange = _ref2.onChange,
105
- choices = _ref2.choices;
106
- return /*#__PURE__*/_react["default"].createElement(_twoChoice.NChoice, {
107
- className: classes.radioSettings,
64
+ var StyledNChoice = (0, _styles.styled)(_twoChoice.NChoice)(function (_ref2) {
65
+ var theme = _ref2.theme;
66
+ return {
67
+ marginTop: theme.spacing(0.5),
68
+ paddingBottom: theme.spacing(0.5),
69
+ width: '100%',
70
+ '& > label': {
71
+ color: 'rgba(0, 0, 0, 0.89)',
72
+ transform: 'translate(0, 10px) scale(1)',
73
+ fontSize: '18px',
74
+ marginTop: theme.spacing(2.5)
75
+ },
76
+ '& > div': {
77
+ marginTop: theme.spacing(2.5)
78
+ }
79
+ };
80
+ });
81
+ var Radio = function Radio(_ref3) {
82
+ var label = _ref3.label,
83
+ value = _ref3.value,
84
+ onChange = _ref3.onChange,
85
+ choices = _ref3.choices;
86
+ return /*#__PURE__*/_react["default"].createElement(StyledNChoice, {
108
87
  direction: "horizontal",
109
88
  customLabel: _settingsRadioLabel["default"],
110
89
  value: value,
@@ -113,121 +92,100 @@ var Radio = function Radio(_ref2) {
113
92
  onChange: onChange
114
93
  });
115
94
  };
116
-
117
95
  Radio.propTypes = _objectSpread(_objectSpread({}, baseTypes), {}, {
118
96
  choices: _propTypes["default"].arrayOf(_propTypes["default"].shape(labelValue))
119
97
  });
120
- var StyledRadio = (0, _styles.withStyles)(function (theme) {
98
+ var StyledRadio = Radio;
99
+ var StyledLabel = (0, _styles.styled)('p')(function (_ref4) {
100
+ var theme = _ref4.theme;
121
101
  return {
122
- radioSettings: {
123
- marginTop: theme.spacing.unit / 2,
124
- paddingBottom: theme.spacing.unit / 2,
125
- width: '100%',
126
- '& > label': {
127
- color: 'rgba(0, 0, 0, 0.89)',
128
- transform: 'translate(0, 10px) scale(1)',
129
- fontSize: '14px'
130
- },
131
- '& > div': {
132
- marginTop: theme.spacing.unit * 2.5
133
- }
134
- },
135
- label: {
136
- display: 'none'
137
- }
102
+ margin: 0,
103
+ fontSize: theme.typography.fontSize
138
104
  };
139
- })(Radio);
140
- var Dropdown = (0, _styles.withStyles)(function (theme) {
105
+ });
106
+ var StyledSelect = (0, _styles.styled)(_Select["default"])(function (_ref5) {
107
+ var theme = _ref5.theme;
141
108
  return {
142
- label: {
143
- margin: 0,
144
- fontSize: theme.typography.fontSize
145
- },
146
- wrapper: {
147
- marginTop: theme.spacing.unit / 2,
148
- border: '2px solid lightgrey',
149
- borderRadius: '4px',
150
- padding: "0 ".concat(theme.spacing.unit, "px")
151
- }
109
+ marginTop: theme.spacing(0.5),
110
+ border: '2px solid lightgrey',
111
+ padding: "0 ".concat(theme.spacing(1)),
112
+ borderRadius: '4px'
152
113
  };
153
- })(function (_ref3) {
154
- var classes = _ref3.classes,
155
- label = _ref3.label,
156
- value = _ref3.value,
157
- _onChange2 = _ref3.onChange,
158
- _ref3$choices = _ref3.choices,
159
- choices = _ref3$choices === void 0 ? [] : _ref3$choices;
160
-
114
+ });
115
+ var Dropdown = function Dropdown(_ref6) {
116
+ var label = _ref6.label,
117
+ value = _ref6.value,
118
+ _onChange2 = _ref6.onChange,
119
+ _ref6$choices = _ref6.choices,
120
+ choices = _ref6$choices === void 0 ? [] : _ref6$choices;
161
121
  var getItemLabel = function getItemLabel(l) {
162
122
  return typeof l === 'string' ? l : l.label;
163
123
  };
164
-
165
124
  var getItemValue = function getItemValue(l) {
166
125
  return typeof l === 'string' ? l : l.value;
167
126
  };
168
-
169
- return /*#__PURE__*/_react["default"].createElement("div", null, label && /*#__PURE__*/_react["default"].createElement("p", {
170
- className: classes.label
171
- }, label), /*#__PURE__*/_react["default"].createElement(_Select["default"], {
172
- className: classes.wrapper,
127
+ return /*#__PURE__*/_react["default"].createElement("div", null, label && /*#__PURE__*/_react["default"].createElement(StyledLabel, null, label), /*#__PURE__*/_react["default"].createElement(StyledSelect, {
173
128
  value: value || choices && choices[0],
174
- onChange: function onChange(_ref4) {
175
- var target = _ref4.target;
129
+ onChange: function onChange(_ref7) {
130
+ var target = _ref7.target;
176
131
  return _onChange2(target.value);
177
132
  },
178
133
  input: /*#__PURE__*/_react["default"].createElement(_Input["default"], {
179
134
  id: "dropdown-".concat(label)
180
135
  }),
181
- disableUnderline: true
136
+ disableUnderline: true,
137
+ MenuProps: {
138
+ transitionDuration: {
139
+ enter: 225,
140
+ exit: 195
141
+ }
142
+ }
182
143
  }, choices.map(function (l, index) {
183
144
  return /*#__PURE__*/_react["default"].createElement(_MenuItem["default"], {
184
145
  key: index,
185
146
  value: getItemValue(l)
186
147
  }, getItemLabel(l));
187
148
  })));
188
- });
149
+ };
189
150
  Dropdown.propTypes = _objectSpread(_objectSpread({}, baseTypes), {}, {
190
151
  choices: _propTypes["default"].arrayOf(_propTypes["default"].string)
191
152
  });
192
- var TextField = (0, _styles.withStyles)(function (theme) {
153
+ var StyledTypography = (0, _styles.styled)(_Typography["default"])(function (_ref8) {
154
+ var theme = _ref8.theme;
193
155
  return {
194
- field: {
195
- marginRight: theme.spacing.unit * 3,
196
- marginTop: theme.spacing.unit
197
- }
156
+ marginRight: theme.spacing(3),
157
+ marginTop: theme.spacing(1)
198
158
  };
199
- })(function (_ref5) {
200
- var classes = _ref5.classes,
201
- label = _ref5.label;
202
- return /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
203
- className: classes.field
204
- }, label);
205
159
  });
206
- var NumberField = (0, _styles.withStyles)(function (theme) {
160
+ var TextField = function TextField(_ref9) {
161
+ var label = _ref9.label;
162
+ return /*#__PURE__*/_react["default"].createElement(StyledTypography, null, label);
163
+ };
164
+ var StyledNumberTextField = (0, _styles.styled)(_numberTextField["default"])(function (_ref0) {
165
+ var theme = _ref0.theme;
207
166
  return {
208
- field: {
209
- width: '35%',
210
- marginRight: theme.spacing.unit * 3,
211
- marginTop: theme.spacing.unit
212
- },
213
- wrapper: {
214
- marginTop: theme.spacing.unit / 2,
167
+ width: '35%',
168
+ marginRight: theme.spacing(3),
169
+ marginTop: theme.spacing(1),
170
+ '& .MuiInputBase-root': {
171
+ marginTop: theme.spacing(0.5),
215
172
  border: '2px solid lightgrey',
216
173
  borderRadius: '4px',
217
- padding: "0 ".concat(theme.spacing.unit, "px")
174
+ padding: "0 ".concat(theme.spacing(1)),
175
+ backgroundColor: 'transparent'
218
176
  }
219
177
  };
220
- })(function (_ref6) {
221
- var classes = _ref6.classes,
222
- label = _ref6.label,
223
- value = _ref6.value,
224
- _ref6$onChange = _ref6.onChange,
225
- _onChange3 = _ref6$onChange === void 0 ? function () {} : _ref6$onChange,
226
- suffix = _ref6.suffix,
227
- min = _ref6.min,
228
- max = _ref6.max;
229
-
230
- return /*#__PURE__*/_react["default"].createElement(_numberTextField["default"], {
178
+ });
179
+ var NumberField = function NumberField(_ref1) {
180
+ var label = _ref1.label,
181
+ value = _ref1.value,
182
+ _ref1$onChange = _ref1.onChange,
183
+ _onChange3 = _ref1$onChange === void 0 ? function () {} : _ref1$onChange,
184
+ suffix = _ref1.suffix,
185
+ min = _ref1.min,
186
+ max = _ref1.max;
187
+ return /*#__PURE__*/_react["default"].createElement(StyledNumberTextField, {
188
+ variant: 'standard',
231
189
  label: label || 'Label',
232
190
  value: value,
233
191
  max: max,
@@ -236,27 +194,22 @@ var NumberField = (0, _styles.withStyles)(function (theme) {
236
194
  return _onChange3(value);
237
195
  },
238
196
  suffix: suffix,
239
- className: classes.field,
240
197
  showErrorWhenOutsideRange: true,
241
- inputClassName: classes.wrapper,
242
- disableUnderline: true,
243
- classes: classes
198
+ disableUnderline: true
244
199
  });
245
- });
200
+ };
246
201
  NumberField.propTypes = _objectSpread(_objectSpread({}, baseTypes), {}, {
247
- classes: _propTypes["default"].object,
248
202
  suffix: _propTypes["default"].string,
249
203
  min: _propTypes["default"].number,
250
204
  max: _propTypes["default"].number,
251
205
  value: _propTypes["default"].number
252
206
  });
253
207
  TextField.propTypes = _objectSpread({}, baseTypes);
254
-
255
- var ToggleWrapper = function ToggleWrapper(_ref7) {
256
- var disabled = _ref7.disabled,
257
- label = _ref7.label,
258
- value = _ref7.value,
259
- onChange = _ref7.onChange;
208
+ var ToggleWrapper = function ToggleWrapper(_ref10) {
209
+ var disabled = _ref10.disabled,
210
+ label = _ref10.label,
211
+ value = _ref10.value,
212
+ onChange = _ref10.onChange;
260
213
  return /*#__PURE__*/_react["default"].createElement(_toggle["default"], {
261
214
  label: label,
262
215
  checked: !!value,
@@ -264,7 +217,6 @@ var ToggleWrapper = function ToggleWrapper(_ref7) {
264
217
  toggle: onChange
265
218
  });
266
219
  };
267
-
268
220
  ToggleWrapper.propTypes = _objectSpread(_objectSpread({}, baseTypes), {}, {
269
221
  value: _propTypes["default"].bool
270
222
  });
@@ -276,47 +228,49 @@ var tagMap = {
276
228
  checkbox: CheckboxChoice,
277
229
  textField: TextField
278
230
  };
279
- var Group = (0, _styles.withStyles)(function (theme) {
231
+ var StyledGroup = (0, _styles.styled)('div')(function (_ref11) {
232
+ var theme = _ref11.theme;
280
233
  return {
281
- group: {
282
- margin: "0 0 ".concat(theme.spacing.unit * 2, "px 0")
283
- },
284
- groupHeader: {
285
- color: '#495B8F',
286
- fontSize: theme.typography.fontSize + 2,
287
- fontWeight: 600,
288
- marginBottom: theme.spacing.unit
289
- },
290
- numberFields: {
291
- fontSize: theme.typography.fontSize,
292
- marginBottom: 0
293
- }
234
+ margin: "0 0 ".concat(theme.spacing(2), " 0")
294
235
  };
295
- })(function (props) {
296
- var classes = props.classes,
297
- model = props.model,
298
- label = props.label,
299
- group = props.group,
300
- configuration = props.configuration,
301
- _onChange4 = props.onChange;
236
+ });
237
+ var StyledGroupHeader = (0, _styles.styled)('div')(function (_ref12) {
238
+ var theme = _ref12.theme;
239
+ return {
240
+ color: '#495B8F',
241
+ fontSize: theme.typography.fontSize + 2,
242
+ fontWeight: 600,
243
+ marginBottom: theme.spacing(1)
244
+ };
245
+ });
246
+ var StyledNumberFields = (0, _styles.styled)('p')(function (_ref13) {
247
+ var theme = _ref13.theme;
248
+ return {
249
+ fontSize: theme.typography.fontSize,
250
+ marginBottom: 0
251
+ };
252
+ });
253
+ var Group = function Group(props) {
254
+ var model = props.model,
255
+ label = props.label,
256
+ group = props.group,
257
+ configuration = props.configuration,
258
+ _onChange4 = props.onChange;
259
+
302
260
  /**
303
261
  * @param group - the group of settings
304
262
  * @param key - the key(or path) to be used to set or get from model or configuration
305
263
  * @param innerKey - the key(or path) to be used to get from the group (used only for numberField type)
306
264
  * @returns tag that corresponds to element type */
307
-
308
265
  var getTag = function getTag(group, key, innerKey) {
309
266
  var _get = (0, _get2["default"])(group, innerKey || key),
310
- isConfigProperty = _get.isConfigProperty,
311
- properties = (0, _objectWithoutProperties2["default"])(_get, _excluded);
312
-
267
+ isConfigProperty = _get.isConfigProperty,
268
+ properties = (0, _objectWithoutProperties2["default"])(_get, _excluded);
313
269
  var value = isConfigProperty ? (0, _get2["default"])(configuration, key) : (0, _get2["default"])(model, key);
314
-
315
270
  var tagProps = _objectSpread(_objectSpread({}, properties), {}, {
316
271
  key: key,
317
272
  value: value
318
273
  });
319
-
320
274
  var Tag = tagMap[tagProps.type];
321
275
  return /*#__PURE__*/_react["default"].createElement(Tag, (0, _extends2["default"])({
322
276
  key: key
@@ -326,76 +280,60 @@ var Group = (0, _styles.withStyles)(function (theme) {
326
280
  }
327
281
  }));
328
282
  };
329
-
330
283
  var content = function content(group, key) {
331
284
  var currentGroup = group[key];
332
-
333
285
  if (!currentGroup) {
334
286
  return null;
335
287
  }
336
-
337
288
  var type = currentGroup.type,
338
- label = currentGroup.label,
339
- fields = currentGroup.fields,
340
- choices = currentGroup.choices;
341
-
289
+ label = currentGroup.label,
290
+ fields = currentGroup.fields,
291
+ choices = currentGroup.choices;
342
292
  if (type === 'numberFields') {
343
293
  return /*#__PURE__*/_react["default"].createElement("div", {
344
294
  key: "numberField-".concat(label)
345
- }, /*#__PURE__*/_react["default"].createElement("p", {
346
- className: classes.numberFields
347
- }, label), Object.keys(fields).map(function (fieldKey) {
295
+ }, /*#__PURE__*/_react["default"].createElement(StyledNumberFields, null, label), Object.keys(fields).map(function (fieldKey) {
348
296
  return getTag(group, "".concat(key, ".").concat(fieldKey), "".concat(key, ".fields.").concat(fieldKey));
349
297
  }));
350
298
  }
351
-
352
299
  if (type === 'checkboxes') {
353
300
  return /*#__PURE__*/_react["default"].createElement("div", {
354
301
  key: "checkbox-".concat(label)
355
302
  }, /*#__PURE__*/_react["default"].createElement("p", null, label), Object.keys(choices).map(function (choiceKey) {
356
303
  return getTag(group, "".concat(key, ".").concat(choiceKey), "".concat(key, ".choices.").concat(choiceKey));
357
304
  }));
358
- } // if type is toggle, radio, dropdown, numberField or numberText
359
-
305
+ }
360
306
 
307
+ // if type is toggle, radio, dropdown, numberField or numberText
361
308
  return getTag(group, key);
362
309
  };
363
-
364
- return /*#__PURE__*/_react["default"].createElement("div", {
365
- className: classes.group
366
- }, /*#__PURE__*/_react["default"].createElement("div", {
367
- className: classes.groupHeader
368
- }, label), Object.keys(group).map(function (key) {
310
+ return /*#__PURE__*/_react["default"].createElement(StyledGroup, null, /*#__PURE__*/_react["default"].createElement(StyledGroupHeader, null, label), Object.keys(group).map(function (key) {
369
311
  return content(group, key);
370
312
  }));
371
- });
372
-
373
- var Panel = /*#__PURE__*/function (_React$Component) {
374
- (0, _inherits2["default"])(Panel, _React$Component);
375
-
376
- var _super = _createSuper(Panel);
377
-
313
+ };
314
+ Group.propTypes = {
315
+ model: _propTypes["default"].object,
316
+ label: _propTypes["default"].string,
317
+ group: _propTypes["default"].object,
318
+ configuration: _propTypes["default"].object,
319
+ onChange: _propTypes["default"].func
320
+ };
321
+ var Panel = exports.Panel = /*#__PURE__*/function (_React$Component) {
378
322
  function Panel() {
379
323
  var _this;
380
-
381
324
  (0, _classCallCheck2["default"])(this, Panel);
382
-
383
325
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
384
326
  args[_key] = arguments[_key];
385
327
  }
386
-
387
- _this = _super.call.apply(_super, [this].concat(args));
388
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "change", function (key, value) {
328
+ _this = _callSuper(this, Panel, [].concat(args));
329
+ (0, _defineProperty2["default"])(_this, "change", function (key, value) {
389
330
  var isConfigProperty = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
390
331
  log('[changeModel]', key, value);
391
332
  var _this$props = _this.props,
392
- onChangeModel = _this$props.onChangeModel,
393
- onChangeConfiguration = _this$props.onChangeConfiguration;
394
-
333
+ onChangeModel = _this$props.onChangeModel,
334
+ onChangeConfiguration = _this$props.onChangeConfiguration;
395
335
  var model = _objectSpread({}, _this.props.model);
396
-
397
336
  var configuration = _objectSpread({}, _this.props.configuration);
398
-
399
337
  if (isConfigProperty) {
400
338
  (0, _set["default"])(configuration, key, value);
401
339
  onChangeConfiguration(configuration, key);
@@ -406,26 +344,23 @@ var Panel = /*#__PURE__*/function (_React$Component) {
406
344
  });
407
345
  return _this;
408
346
  }
409
-
410
- (0, _createClass2["default"])(Panel, [{
347
+ (0, _inherits2["default"])(Panel, _React$Component);
348
+ return (0, _createClass2["default"])(Panel, [{
411
349
  key: "render",
412
350
  value: function render() {
413
351
  var _this2 = this;
414
-
415
352
  var _this$props2 = this.props,
416
- groups = _this$props2.groups,
417
- model = _this$props2.model,
418
- configuration = _this$props2.configuration,
419
- modal = _this$props2.modal;
353
+ groups = _this$props2.groups,
354
+ model = _this$props2.model,
355
+ configuration = _this$props2.configuration,
356
+ modal = _this$props2.modal;
420
357
  log('render:', model);
421
358
  var renderedGroups = Object.keys(groups || {}).map(function (group) {
422
- var showGroup = Object.entries(groups[group]).some(function (_ref8) {
423
- var _ref9 = (0, _slicedToArray2["default"])(_ref8, 2),
424
- propVal = _ref9[1];
425
-
359
+ var showGroup = Object.entries(groups[group]).some(function (_ref14) {
360
+ var _ref15 = (0, _slicedToArray2["default"])(_ref14, 2),
361
+ propVal = _ref15[1];
426
362
  return !!propVal;
427
363
  });
428
-
429
364
  if (showGroup) {
430
365
  return /*#__PURE__*/_react["default"].createElement(Group, {
431
366
  label: group,
@@ -436,16 +371,12 @@ var Panel = /*#__PURE__*/function (_React$Component) {
436
371
  onChange: _this2.change
437
372
  });
438
373
  }
439
-
440
374
  return null;
441
375
  });
442
376
  return /*#__PURE__*/_react["default"].createElement("div", null, renderedGroups, modal);
443
377
  }
444
378
  }]);
445
- return Panel;
446
379
  }(_react["default"].Component);
447
-
448
- exports.Panel = Panel;
449
380
  (0, _defineProperty2["default"])(Panel, "propTypes", {
450
381
  model: _propTypes["default"].object,
451
382
  configuration: _propTypes["default"].object,
@@ -458,6 +389,5 @@ exports.Panel = Panel;
458
389
  onChangeModel: function onChangeModel() {},
459
390
  onChangeConfiguration: function onChangeConfiguration() {}
460
391
  });
461
- var _default = Panel;
462
- exports["default"] = _default;
463
- //# sourceMappingURL=panel.js.map
392
+ var _default = exports["default"] = Panel;
393
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9wcm9wVHlwZXMiLCJfZ2V0MiIsIl9zZXQiLCJfc3R5bGVzIiwiX1NlbGVjdCIsIl9JbnB1dCIsIl9NZW51SXRlbSIsIl9UeXBvZ3JhcGh5IiwiX2RlYnVnIiwiX3RvZ2dsZSIsIl90d29DaG9pY2UiLCJfc2V0dGluZ3NSYWRpb0xhYmVsIiwiX251bWJlclRleHRGaWVsZCIsIl9jaGVja2JveCIsIl9leGNsdWRlZCIsIl9jYWxsU3VwZXIiLCJ0IiwibyIsImUiLCJfZ2V0UHJvdG90eXBlT2YyIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4yIiwiX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJjb25zdHJ1Y3RvciIsImFwcGx5IiwiQm9vbGVhbiIsInByb3RvdHlwZSIsInZhbHVlT2YiLCJjYWxsIiwib3duS2V5cyIsInIiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwibG9nIiwiZGVidWciLCJsYWJlbFZhbHVlIiwibGFiZWwiLCJQcm9wVHlwZXMiLCJzdHJpbmciLCJ2YWx1ZSIsImJhc2VUeXBlcyIsIm9uQ2hhbmdlIiwiZnVuYyIsIkNoZWNrYm94Q2hvaWNlIiwiX3JlZiIsImNyZWF0ZUVsZW1lbnQiLCJjaGVja2VkIiwiZXZlbnQiLCJ0YXJnZXQiLCJwcm9wVHlwZXMiLCJib29sIiwiU3R5bGVkTkNob2ljZSIsInN0eWxlZCIsIk5DaG9pY2UiLCJfcmVmMiIsInRoZW1lIiwibWFyZ2luVG9wIiwic3BhY2luZyIsInBhZGRpbmdCb3R0b20iLCJ3aWR0aCIsImNvbG9yIiwidHJhbnNmb3JtIiwiZm9udFNpemUiLCJSYWRpbyIsIl9yZWYzIiwiY2hvaWNlcyIsImRpcmVjdGlvbiIsImN1c3RvbUxhYmVsIiwiU2V0dGluZ3NSYWRpb0xhYmVsIiwiaGVhZGVyIiwib3B0cyIsImFycmF5T2YiLCJzaGFwZSIsIlN0eWxlZFJhZGlvIiwiU3R5bGVkTGFiZWwiLCJfcmVmNCIsIm1hcmdpbiIsInR5cG9ncmFwaHkiLCJTdHlsZWRTZWxlY3QiLCJTZWxlY3QiLCJfcmVmNSIsImJvcmRlciIsInBhZGRpbmciLCJjb25jYXQiLCJib3JkZXJSYWRpdXMiLCJEcm9wZG93biIsIl9yZWY2IiwiX3JlZjYkY2hvaWNlcyIsImdldEl0ZW1MYWJlbCIsImwiLCJnZXRJdGVtVmFsdWUiLCJfcmVmNyIsImlucHV0IiwiaWQiLCJkaXNhYmxlVW5kZXJsaW5lIiwiTWVudVByb3BzIiwidHJhbnNpdGlvbkR1cmF0aW9uIiwiZW50ZXIiLCJleGl0IiwibWFwIiwiaW5kZXgiLCJrZXkiLCJTdHlsZWRUeXBvZ3JhcGh5IiwiVHlwb2dyYXBoeSIsIl9yZWY4IiwibWFyZ2luUmlnaHQiLCJUZXh0RmllbGQiLCJfcmVmOSIsIlN0eWxlZE51bWJlclRleHRGaWVsZCIsIk51bWJlclRleHRGaWVsZCIsIl9yZWYwIiwiYmFja2dyb3VuZENvbG9yIiwiTnVtYmVyRmllbGQiLCJfcmVmMSIsIl9yZWYxJG9uQ2hhbmdlIiwic3VmZml4IiwibWluIiwibWF4IiwidmFyaWFudCIsImV2Iiwic2hvd0Vycm9yV2hlbk91dHNpZGVSYW5nZSIsIm51bWJlciIsIlRvZ2dsZVdyYXBwZXIiLCJfcmVmMTAiLCJkaXNhYmxlZCIsInRvZ2dsZSIsInRhZ01hcCIsInJhZGlvIiwiZHJvcGRvd24iLCJudW1iZXJGaWVsZCIsImNoZWNrYm94IiwidGV4dEZpZWxkIiwiU3R5bGVkR3JvdXAiLCJfcmVmMTEiLCJTdHlsZWRHcm91cEhlYWRlciIsIl9yZWYxMiIsImZvbnRXZWlnaHQiLCJtYXJnaW5Cb3R0b20iLCJTdHlsZWROdW1iZXJGaWVsZHMiLCJfcmVmMTMiLCJHcm91cCIsInByb3BzIiwibW9kZWwiLCJncm91cCIsImNvbmZpZ3VyYXRpb24iLCJnZXRUYWciLCJpbm5lcktleSIsIl9nZXQiLCJnZXQiLCJpc0NvbmZpZ1Byb3BlcnR5IiwicHJvcGVydGllcyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllczIiLCJ0YWdQcm9wcyIsIlRhZyIsInR5cGUiLCJfZXh0ZW5kczIiLCJ2IiwiY29udGVudCIsImN1cnJlbnRHcm91cCIsImZpZWxkcyIsImZpZWxkS2V5IiwiY2hvaWNlS2V5Iiwib2JqZWN0IiwiUGFuZWwiLCJleHBvcnRzIiwiX1JlYWN0JENvbXBvbmVudCIsIl90aGlzIiwiX2NsYXNzQ2FsbENoZWNrMiIsIl9sZW4iLCJhcmdzIiwiQXJyYXkiLCJfa2V5IiwidW5kZWZpbmVkIiwiX3RoaXMkcHJvcHMiLCJvbkNoYW5nZU1vZGVsIiwib25DaGFuZ2VDb25maWd1cmF0aW9uIiwic2V0IiwiX2luaGVyaXRzMiIsIl9jcmVhdGVDbGFzczIiLCJyZW5kZXIiLCJfdGhpczIiLCJfdGhpcyRwcm9wczIiLCJncm91cHMiLCJtb2RhbCIsInJlbmRlcmVkR3JvdXBzIiwic2hvd0dyb3VwIiwiZW50cmllcyIsInNvbWUiLCJfcmVmMTQiLCJfcmVmMTUiLCJfc2xpY2VkVG9BcnJheTIiLCJwcm9wVmFsIiwiY2hhbmdlIiwiUmVhY3QiLCJDb21wb25lbnQiLCJfZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXR0aW5ncy9wYW5lbC5qc3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgZ2V0IGZyb20gJ2xvZGFzaC9nZXQnO1xuaW1wb3J0IHNldCBmcm9tICdsb2Rhc2gvc2V0JztcbmltcG9ydCB7IHN0eWxlZCB9IGZyb20gJ0BtdWkvbWF0ZXJpYWwvc3R5bGVzJztcbmltcG9ydCBTZWxlY3QgZnJvbSAnQG11aS9tYXRlcmlhbC9TZWxlY3QnO1xuaW1wb3J0IElucHV0IGZyb20gJ0BtdWkvbWF0ZXJpYWwvSW5wdXQnO1xuaW1wb3J0IE1lbnVJdGVtIGZyb20gJ0BtdWkvbWF0ZXJpYWwvTWVudUl0ZW0nO1xuaW1wb3J0IFR5cG9ncmFwaHkgZnJvbSAnQG11aS9tYXRlcmlhbC9UeXBvZ3JhcGh5JztcbmltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5cbmltcG9ydCBUb2dnbGUgZnJvbSAnLi90b2dnbGUnO1xuaW1wb3J0IHsgTkNob2ljZSB9IGZyb20gJy4uL3R3by1jaG9pY2UnO1xuaW1wb3J0IFNldHRpbmdzUmFkaW9MYWJlbCBmcm9tICcuL3NldHRpbmdzLXJhZGlvLWxhYmVsJztcbmltcG9ydCBOdW1iZXJUZXh0RmllbGQgZnJvbSAnLi4vbnVtYmVyLXRleHQtZmllbGQnO1xuaW1wb3J0IENoZWNrYm94IGZyb20gJy4uL2NoZWNrYm94JztcblxuY29uc3QgbG9nID0gZGVidWcoJ3BpZS1saWI6Y29uZmlnLXVpOnNldHRpbmdzOnBhbmVsJyk7XG5cbmNvbnN0IGxhYmVsVmFsdWUgPSB7XG4gIGxhYmVsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICB2YWx1ZTogUHJvcFR5cGVzLnN0cmluZyxcbn07XG5cbmNvbnN0IGJhc2VUeXBlcyA9IHtcbiAgbGFiZWw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHZhbHVlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmMsXG59O1xuXG5jb25zdCBDaGVja2JveENob2ljZSA9ICh7IGxhYmVsLCB2YWx1ZSwgb25DaGFuZ2UgfSkgPT4ge1xuICByZXR1cm4gKFxuICAgIDxDaGVja2JveFxuICAgICAgY2hlY2tlZD17dmFsdWV9XG4gICAgICBsYWJlbD17bGFiZWx9XG4gICAgICBvbkNoYW5nZT17KGV2ZW50KSA9PiB7XG4gICAgICAgIG9uQ2hhbmdlKGV2ZW50LnRhcmdldC5jaGVja2VkKTtcbiAgICAgIH19XG4gICAgLz5cbiAgKTtcbn07XG5cbkNoZWNrYm94Q2hvaWNlLnByb3BUeXBlcyA9IHtcbiAgbGFiZWw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHZhbHVlOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxufTtcblxuY29uc3QgU3R5bGVkTkNob2ljZSA9IHN0eWxlZChOQ2hvaWNlKSgoeyB0aGVtZSB9KSA9PiAoe1xuICBtYXJnaW5Ub3A6IHRoZW1lLnNwYWNpbmcoMC41KSxcbiAgcGFkZGluZ0JvdHRvbTogdGhlbWUuc3BhY2luZygwLjUpLFxuICB3aWR0aDogJzEwMCUnLFxuICAnJiA+IGxhYmVsJzoge1xuICAgIGNvbG9yOiAncmdiYSgwLCAwLCAwLCAwLjg5KScsXG4gICAgdHJhbnNmb3JtOiAndHJhbnNsYXRlKDAsIDEwcHgpIHNjYWxlKDEpJyxcbiAgICBmb250U2l6ZTogJzE4cHgnLFxuICAgIG1hcmdpblRvcDogdGhlbWUuc3BhY2luZygyLjUpLFxuICB9LFxuICAnJiA+IGRpdic6IHtcbiAgICBtYXJnaW5Ub3A6IHRoZW1lLnNwYWNpbmcoMi41KSxcbiAgfSxcbn0pKTtcblxuY29uc3QgUmFkaW8gPSAoeyBsYWJlbCwgdmFsdWUsIG9uQ2hhbmdlLCBjaG9pY2VzIH0pID0+IHtcbiAgcmV0dXJuIChcbiAgICA8U3R5bGVkTkNob2ljZVxuICAgICAgZGlyZWN0aW9uPVwiaG9yaXpvbnRhbFwiXG4gICAgICBjdXN0b21MYWJlbD17U2V0dGluZ3NSYWRpb0xhYmVsfVxuICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgaGVhZGVyPXtsYWJlbH1cbiAgICAgIG9wdHM9e2Nob2ljZXN9XG4gICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgLz5cbiAgKTtcbn07XG5cblJhZGlvLnByb3BUeXBlcyA9IHsgLi4uYmFzZVR5cGVzLCBjaG9pY2VzOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuc2hhcGUobGFiZWxWYWx1ZSkpIH07XG5cbmNvbnN0IFN0eWxlZFJhZGlvID0gUmFkaW87XG5cbmNvbnN0IFN0eWxlZExhYmVsID0gc3R5bGVkKCdwJykoKHsgdGhlbWUgfSkgPT4gKHtcbiAgbWFyZ2luOiAwLFxuICBmb250U2l6ZTogdGhlbWUudHlwb2dyYXBoeS5mb250U2l6ZSxcbn0pKTtcblxuY29uc3QgU3R5bGVkU2VsZWN0ID0gc3R5bGVkKFNlbGVjdCkoKHsgdGhlbWUgfSkgPT4gKHtcbiAgbWFyZ2luVG9wOiB0aGVtZS5zcGFjaW5nKDAuNSksXG4gIGJvcmRlcjogJzJweCBzb2xpZCBsaWdodGdyZXknLFxuICBwYWRkaW5nOiBgMCAke3RoZW1lLnNwYWNpbmcoMSl9YCxcbiAgYm9yZGVyUmFkaXVzOiAnNHB4Jyxcbn0pKTtcblxuY29uc3QgRHJvcGRvd24gPSAoeyBsYWJlbCwgdmFsdWUsIG9uQ2hhbmdlLCBjaG9pY2VzID0gW10gfSkgPT4ge1xuICBjb25zdCBnZXRJdGVtTGFiZWwgPSAobCkgPT4gKHR5cGVvZiBsID09PSAnc3RyaW5nJyA/IGwgOiBsLmxhYmVsKTtcbiAgY29uc3QgZ2V0SXRlbVZhbHVlID0gKGwpID0+ICh0eXBlb2YgbCA9PT0gJ3N0cmluZycgPyBsIDogbC52YWx1ZSk7XG4gIHJldHVybiAoXG4gICAgPGRpdj5cbiAgICAgIHtsYWJlbCAmJiA8U3R5bGVkTGFiZWw+e2xhYmVsfTwvU3R5bGVkTGFiZWw+fVxuICAgICAgPFN0eWxlZFNlbGVjdFxuICAgICAgICB2YWx1ZT17dmFsdWUgfHwgKGNob2ljZXMgJiYgY2hvaWNlc1swXSl9XG4gICAgICAgIG9uQ2hhbmdlPXsoeyB0YXJnZXQgfSkgPT4gb25DaGFuZ2UodGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgaW5wdXQ9ezxJbnB1dCBpZD17YGRyb3Bkb3duLSR7bGFiZWx9YH0gLz59XG4gICAgICAgIGRpc2FibGVVbmRlcmxpbmVcbiAgICAgICAgTWVudVByb3BzPXt7IHRyYW5zaXRpb25EdXJhdGlvbjogeyBlbnRlcjogMjI1LCBleGl0OiAxOTUgfSB9fVxuICAgICAgPlxuICAgICAgICB7Y2hvaWNlcy5tYXAoKGwsIGluZGV4KSA9PiAoXG4gICAgICAgICAgPE1lbnVJdGVtIGtleT17aW5kZXh9IHZhbHVlPXtnZXRJdGVtVmFsdWUobCl9PlxuICAgICAgICAgICAge2dldEl0ZW1MYWJlbChsKX1cbiAgICAgICAgICA8L01lbnVJdGVtPlxuICAgICAgICApKX1cbiAgICAgIDwvU3R5bGVkU2VsZWN0PlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuRHJvcGRvd24ucHJvcFR5cGVzID0geyAuLi5iYXNlVHlwZXMsIGNob2ljZXM6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5zdHJpbmcpIH07XG5cbmNvbnN0IFN0eWxlZFR5cG9ncmFwaHkgPSBzdHlsZWQoVHlwb2dyYXBoeSkoKHsgdGhlbWUgfSkgPT4gKHtcbiAgbWFyZ2luUmlnaHQ6IHRoZW1lLnNwYWNpbmcoMyksXG4gIG1hcmdpblRvcDogdGhlbWUuc3BhY2luZygxKSxcbn0pKTtcblxuY29uc3QgVGV4dEZpZWxkID0gKHsgbGFiZWwgfSkgPT4ge1xuICByZXR1cm4gPFN0eWxlZFR5cG9ncmFwaHk+e2xhYmVsfTwvU3R5bGVkVHlwb2dyYXBoeT47XG59O1xuXG5jb25zdCBTdHlsZWROdW1iZXJUZXh0RmllbGQgPSBzdHlsZWQoTnVtYmVyVGV4dEZpZWxkKSgoeyB0aGVtZSB9KSA9PiAoe1xuICB3aWR0aDogJzM1JScsXG4gIG1hcmdpblJpZ2h0OiB0aGVtZS5zcGFjaW5nKDMpLFxuICBtYXJnaW5Ub3A6IHRoZW1lLnNwYWNpbmcoMSksXG4gICcmIC5NdWlJbnB1dEJhc2Utcm9vdCc6IHtcbiAgICBtYXJnaW5Ub3A6IHRoZW1lLnNwYWNpbmcoMC41KSxcbiAgICBib3JkZXI6ICcycHggc29saWQgbGlnaHRncmV5JyxcbiAgICBib3JkZXJSYWRpdXM6ICc0cHgnLFxuICAgIHBhZGRpbmc6IGAwICR7dGhlbWUuc3BhY2luZygxKX1gLFxuICAgIGJhY2tncm91bmRDb2xvcjogJ3RyYW5zcGFyZW50JyxcbiAgfSxcbn0pKTtcblxuY29uc3QgTnVtYmVyRmllbGQgPSAoeyBsYWJlbCwgdmFsdWUsIG9uQ2hhbmdlID0gKCkgPT4geyB9LCBzdWZmaXgsIG1pbiwgbWF4IH0pID0+IHtcbiAgcmV0dXJuIChcbiAgICA8U3R5bGVkTnVtYmVyVGV4dEZpZWxkXG4gICAgICB2YXJpYW50PXsnc3RhbmRhcmQnfVxuICAgICAgbGFiZWw9e2xhYmVsIHx8ICdMYWJlbCd9XG4gICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICBtYXg9e21heH1cbiAgICAgIG1pbj17bWlufVxuICAgICAgb25DaGFuZ2U9eyhldiwgdmFsdWUpID0+IG9uQ2hhbmdlKHZhbHVlKX1cbiAgICAgIHN1ZmZpeD17c3VmZml4fVxuICAgICAgc2hvd0Vycm9yV2hlbk91dHNpZGVSYW5nZVxuICAgICAgZGlzYWJsZVVuZGVybGluZVxuICAgIC8+XG4gICk7XG59O1xuXG5OdW1iZXJGaWVsZC5wcm9wVHlwZXMgPSB7XG4gIC4uLmJhc2VUeXBlcyxcbiAgc3VmZml4OiBQcm9wVHlwZXMuc3RyaW5nLFxuICBtaW46IFByb3BUeXBlcy5udW1iZXIsXG4gIG1heDogUHJvcFR5cGVzLm51bWJlcixcbiAgdmFsdWU6IFByb3BUeXBlcy5udW1iZXIsXG59O1xuXG5UZXh0RmllbGQucHJvcFR5cGVzID0ge1xuICAuLi5iYXNlVHlwZXMsXG59O1xuXG5jb25zdCBUb2dnbGVXcmFwcGVyID0gKHsgZGlzYWJsZWQsIGxhYmVsLCB2YWx1ZSwgb25DaGFuZ2UgfSkgPT4gKFxuICA8VG9nZ2xlIGxhYmVsPXtsYWJlbH0gY2hlY2tlZD17ISF2YWx1ZX0gZGlzYWJsZWQ9eyEhZGlzYWJsZWR9IHRvZ2dsZT17b25DaGFuZ2V9IC8+XG4pO1xuXG5Ub2dnbGVXcmFwcGVyLnByb3BUeXBlcyA9IHsgLi4uYmFzZVR5cGVzLCB2YWx1ZTogUHJvcFR5cGVzLmJvb2wgfTtcblxuY29uc3QgdGFnTWFwID0ge1xuICB0b2dnbGU6IFRvZ2dsZVdyYXBwZXIsXG4gIHJhZGlvOiBTdHlsZWRSYWRpbyxcbiAgZHJvcGRvd246IERyb3Bkb3duLFxuICBudW1iZXJGaWVsZDogTnVtYmVyRmllbGQsXG4gIGNoZWNrYm94OiBDaGVja2JveENob2ljZSxcbiAgdGV4dEZpZWxkOiBUZXh0RmllbGQsXG59O1xuXG5jb25zdCBTdHlsZWRHcm91cCA9IHN0eWxlZCgnZGl2JykoKHsgdGhlbWUgfSkgPT4gKHtcbiAgbWFyZ2luOiBgMCAwICR7dGhlbWUuc3BhY2luZygyKX0gMGAsXG59KSk7XG5cbmNvbnN0IFN0eWxlZEdyb3VwSGVhZGVyID0gc3R5bGVkKCdkaXYnKSgoeyB0aGVtZSB9KSA9PiAoe1xuICBjb2xvcjogJyM0OTVCOEYnLFxuICBmb250U2l6ZTogdGhlbWUudHlwb2dyYXBoeS5mb250U2l6ZSArIDIsXG4gIGZvbnRXZWlnaHQ6IDYwMCxcbiAgbWFyZ2luQm90dG9tOiB0aGVtZS5zcGFjaW5nKDEpLFxufSkpO1xuXG5jb25zdCBTdHlsZWROdW1iZXJGaWVsZHMgPSBzdHlsZWQoJ3AnKSgoeyB0aGVtZSB9KSA9PiAoe1xuICBmb250U2l6ZTogdGhlbWUudHlwb2dyYXBoeS5mb250U2l6ZSxcbiAgbWFyZ2luQm90dG9tOiAwLFxufSkpO1xuXG5jb25zdCBHcm91cCA9IChwcm9wcykgPT4ge1xuICBjb25zdCB7IG1vZGVsLCBsYWJlbCwgZ3JvdXAsIGNvbmZpZ3VyYXRpb24sIG9uQ2hhbmdlIH0gPSBwcm9wcztcblxuICAvKipcbiAgICogQHBhcmFtIGdyb3VwIC0gdGhlIGdyb3VwIG9mIHNldHRpbmdzXG4gICAqIEBwYXJhbSBrZXkgLSB0aGUga2V5KG9yIHBhdGgpIHRvIGJlIHVzZWQgdG8gc2V0IG9yIGdldCBmcm9tIG1vZGVsIG9yIGNvbmZpZ3VyYXRpb25cbiAgICogQHBhcmFtIGlubmVyS2V5IC0gdGhlIGtleShvciBwYXRoKSB0byBiZSB1c2VkIHRvIGdldCBmcm9tIHRoZSBncm91cCAodXNlZCBvbmx5IGZvciBudW1iZXJGaWVsZCB0eXBlKVxuICAgKiBAcmV0dXJucyB0YWcgdGhhdCBjb3JyZXNwb25kcyB0byBlbGVtZW50IHR5cGUgKi9cbiAgY29uc3QgZ2V0VGFnID0gKGdyb3VwLCBrZXksIGlubmVyS2V5KSA9PiB7XG4gICAgY29uc3QgeyBpc0NvbmZpZ1Byb3BlcnR5LCAuLi5wcm9wZXJ0aWVzIH0gPSBnZXQoZ3JvdXAsIGlubmVyS2V5IHx8IGtleSk7XG4gICAgY29uc3QgdmFsdWUgPSBpc0NvbmZpZ1Byb3BlcnR5ID8gZ2V0KGNvbmZpZ3VyYXRpb24sIGtleSkgOiBnZXQobW9kZWwsIGtleSk7XG4gICAgY29uc3QgdGFnUHJvcHMgPSB7IC4uLnByb3BlcnRpZXMsIGtleSwgdmFsdWUgfTtcbiAgICBjb25zdCBUYWcgPSB0YWdNYXBbdGFnUHJvcHMudHlwZV07XG5cbiAgICByZXR1cm4gPFRhZyBrZXk9e2tleX0gey4uLnRhZ1Byb3BzfSBvbkNoYW5nZT17KHYpID0+IG9uQ2hhbmdlKGtleSwgdiwgaXNDb25maWdQcm9wZXJ0eSl9IC8+O1xuICB9O1xuXG4gIGNvbnN0IGNvbnRlbnQgPSAoZ3JvdXAsIGtleSkgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRHcm91cCA9IGdyb3VwW2tleV07XG5cbiAgICBpZiAoIWN1cnJlbnRHcm91cCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgeyB0eXBlLCBsYWJlbCwgZmllbGRzLCBjaG9pY2VzIH0gPSBjdXJyZW50R3JvdXA7XG5cbiAgICBpZiAodHlwZSA9PT0gJ251bWJlckZpZWxkcycpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxkaXYga2V5PXtgbnVtYmVyRmllbGQtJHtsYWJlbH1gfT5cbiAgICAgICAgICA8U3R5bGVkTnVtYmVyRmllbGRzPntsYWJlbH08L1N0eWxlZE51bWJlckZpZWxkcz5cbiAgICAgICAgICB7T2JqZWN0LmtleXMoZmllbGRzKS5tYXAoKGZpZWxkS2V5KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gZ2V0VGFnKGdyb3VwLCBgJHtrZXl9LiR7ZmllbGRLZXl9YCwgYCR7a2V5fS5maWVsZHMuJHtmaWVsZEtleX1gKTtcbiAgICAgICAgICB9KX1cbiAgICAgICAgPC9kaXY+XG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICh0eXBlID09PSAnY2hlY2tib3hlcycpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxkaXYga2V5PXtgY2hlY2tib3gtJHtsYWJlbH1gfT5cbiAgICAgICAgICA8cD57bGFiZWx9PC9wPlxuICAgICAgICAgIHtPYmplY3Qua2V5cyhjaG9pY2VzKS5tYXAoKGNob2ljZUtleSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGdldFRhZyhncm91cCwgYCR7a2V5fS4ke2Nob2ljZUtleX1gLCBgJHtrZXl9LmNob2ljZXMuJHtjaG9pY2VLZXl9YCk7XG4gICAgICAgICAgfSl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBpZiB0eXBlIGlzIHRvZ2dsZSwgcmFkaW8sIGRyb3Bkb3duLCBudW1iZXJGaWVsZCBvciBudW1iZXJUZXh0XG4gICAgcmV0dXJuIGdldFRhZyhncm91cCwga2V5KTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxTdHlsZWRHcm91cD5cbiAgICAgIDxTdHlsZWRHcm91cEhlYWRlcj57bGFiZWx9PC9TdHlsZWRHcm91cEhlYWRlcj5cblxuICAgICAge09iamVjdC5rZXlzKGdyb3VwKS5tYXAoKGtleSkgPT4ge1xuICAgICAgICByZXR1cm4gY29udGVudChncm91cCwga2V5KTtcbiAgICAgIH0pfVxuICAgIDwvU3R5bGVkR3JvdXA+XG4gICk7XG59O1xuXG5Hcm91cC5wcm9wVHlwZXMgPSB7XG4gIG1vZGVsOiBQcm9wVHlwZXMub2JqZWN0LFxuICBsYWJlbDogUHJvcFR5cGVzLnN0cmluZyxcbiAgZ3JvdXA6IFByb3BUeXBlcy5vYmplY3QsXG4gIGNvbmZpZ3VyYXRpb246IFByb3BUeXBlcy5vYmplY3QsXG4gIG9uQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYyxcbn07XG5cbmV4cG9ydCBjbGFzcyBQYW5lbCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgbW9kZWw6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgY29uZmlndXJhdGlvbjogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBncm91cHM6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgb25DaGFuZ2VNb2RlbDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgb25DaGFuZ2VDb25maWd1cmF0aW9uOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBtb2RhbDogUHJvcFR5cGVzLm9iamVjdCxcbiAgfTtcblxuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgIG9uQ2hhbmdlTW9kZWw6ICgpID0+IHsgfSxcbiAgICBvbkNoYW5nZUNvbmZpZ3VyYXRpb246ICgpID0+IHsgfSxcbiAgfTtcblxuICBjaGFuZ2UgPSAoa2V5LCB2YWx1ZSwgaXNDb25maWdQcm9wZXJ0eSA9IGZhbHNlKSA9PiB7XG4gICAgbG9nKCdbY2hhbmdlTW9kZWxdJywga2V5LCB2YWx1ZSk7XG5cbiAgICBjb25zdCB7IG9uQ2hhbmdlTW9kZWwsIG9uQ2hhbmdlQ29uZmlndXJhdGlvbiB9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCBtb2RlbCA9IHsgLi4udGhpcy5wcm9wcy5tb2RlbCB9O1xuICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSB7IC4uLnRoaXMucHJvcHMuY29uZmlndXJhdGlvbiB9O1xuXG4gICAgaWYgKGlzQ29uZmlnUHJvcGVydHkpIHtcbiAgICAgIHNldChjb25maWd1cmF0aW9uLCBrZXksIHZhbHVlKTtcbiAgICAgIG9uQ2hhbmdlQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uLCBrZXkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXQobW9kZWwsIGtleSwgdmFsdWUpO1xuICAgICAgb25DaGFuZ2VNb2RlbChtb2RlbCwga2V5KTtcbiAgICB9XG4gIH07XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHsgZ3JvdXBzLCBtb2RlbCwgY29uZmlndXJhdGlvbiwgbW9kYWwgfSA9IHRoaXMucHJvcHM7XG5cbiAgICBsb2coJ3JlbmRlcjonLCBtb2RlbCk7XG5cbiAgICBjb25zdCByZW5kZXJlZEdyb3VwcyA9IE9iamVjdC5rZXlzKGdyb3VwcyB8fCB7fSkubWFwKChncm91cCkgPT4ge1xuICAgICAgY29uc3Qgc2hvd0dyb3VwID0gT2JqZWN0LmVudHJpZXMoZ3JvdXBzW2dyb3VwXSkuc29tZSgoWywgcHJvcFZhbF0pID0+ICEhcHJvcFZhbCk7XG5cbiAgICAgIGlmIChzaG93R3JvdXApIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8R3JvdXBcbiAgICAgICAgICAgIGxhYmVsPXtncm91cH1cbiAgICAgICAgICAgIGtleT17Z3JvdXB9XG4gICAgICAgICAgICBtb2RlbD17bW9kZWx9XG4gICAgICAgICAgICBjb25maWd1cmF0aW9uPXtjb25maWd1cmF0aW9ufVxuICAgICAgICAgICAgZ3JvdXA9e2dyb3Vwc1tncm91cF19XG4gICAgICAgICAgICBvbkNoYW5nZT17dGhpcy5jaGFuZ2V9XG4gICAgICAgICAgLz5cbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdj5cbiAgICAgICAge3JlbmRlcmVkR3JvdXBzfVxuICAgICAgICB7bW9kYWx9XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFBhbmVsO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsVUFBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsS0FBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUcsSUFBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUksT0FBQSxHQUFBSixP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QUksQ0FBQyxDQUFDLENBQUMsQ0FBQ25GLEdBQUcsQ0FBQyxVQUFDNEMsS0FBSyxFQUFLO1FBQzlELElBQU0wQyxTQUFTLEdBQUd2SyxNQUFNLENBQUN3SyxPQUFPLENBQUNKLE1BQU0sQ0FBQ3ZDLEtBQUssQ0FBQyxDQUFDLENBQUM0QyxJQUFJLENBQUMsVUFBQUMsTUFBQTtVQUFBLElBQUFDLE1BQUEsT0FBQUMsZUFBQSxhQUFBRixNQUFBO1lBQUlHLE9BQU8sR0FBQUYsTUFBQTtVQUFBLE9BQU0sQ0FBQyxDQUFDRSxPQUFPO1FBQUEsRUFBQztRQUVoRixJQUFJTixTQUFTLEVBQUU7VUFDYixvQkFDRTFNLE1BQUEsWUFBQThELGFBQUEsQ0FBQytGLEtBQUs7WUFDSnhHLEtBQUssRUFBRTJHLEtBQU07WUFDYjFDLEdBQUcsRUFBRTBDLEtBQU07WUFDWEQsS0FBSyxFQUFFQSxLQUFNO1lBQ2JFLGFBQWEsRUFBRUEsYUFBYztZQUM3QkQsS0FBSyxFQUFFdUMsTUFBTSxDQUFDdkMsS0FBSyxDQUFFO1lBQ3JCdEcsUUFBUSxFQUFFMkksTUFBSSxDQUFDWTtVQUFPLENBQ3ZCLENBQUM7UUFFTjtRQUVBLE9BQU8sSUFBSTtNQUNiLENBQUMsQ0FBQztNQUVGLG9CQUNFak4sTUFBQSxZQUFBOEQsYUFBQSxjQUNHMkksY0FBYyxFQUNkRCxLQUNFLENBQUM7SUFFVjtFQUFDO0FBQUEsRUE3RHdCVSxpQkFBSyxDQUFDQyxTQUFTO0FBQUEsSUFBQXJLLGdCQUFBLGFBQTdCc0ksS0FBSyxlQUNHO0VBQ2pCckIsS0FBSyxFQUFFekcscUJBQVMsQ0FBQzZILE1BQU07RUFDdkJsQixhQUFhLEVBQUUzRyxxQkFBUyxDQUFDNkgsTUFBTTtFQUMvQm9CLE1BQU0sRUFBRWpKLHFCQUFTLENBQUM2SCxNQUFNO0VBQ3hCWSxhQUFhLEVBQUV6SSxxQkFBUyxDQUFDSyxJQUFJO0VBQzdCcUkscUJBQXFCLEVBQUUxSSxxQkFBUyxDQUFDSyxJQUFJO0VBQ3JDNkksS0FBSyxFQUFFbEoscUJBQVMsQ0FBQzZIO0FBQ25CLENBQUM7QUFBQSxJQUFBckksZ0JBQUEsYUFSVXNJLEtBQUssa0JBVU07RUFDcEJXLGFBQWEsRUFBRSxTQUFmQSxhQUFhQSxDQUFBLEVBQVEsQ0FBRSxDQUFDO0VBQ3hCQyxxQkFBcUIsRUFBRSxTQUF2QkEscUJBQXFCQSxDQUFBLEVBQVEsQ0FBRTtBQUNqQyxDQUFDO0FBQUEsSUFBQW9CLFFBQUEsR0FBQS9CLE9BQUEsY0FtRFlELEtBQUsiLCJpZ25vcmVMaXN0IjpbXX0=