contentoh-components-library 21.4.89 → 21.4.90

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.
@@ -9,23 +9,25 @@ Object.defineProperty(exports, "__esModule", {
9
9
  });
10
10
  exports.Phase = void 0;
11
11
 
12
- var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread2"));
12
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
13
13
 
14
14
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/toConsumableArray"));
15
15
 
16
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread2"));
17
+
18
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/asyncToGenerator"));
19
+
16
20
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
17
21
 
18
22
  var _react = _interopRequireWildcard(require("react"));
19
23
 
20
24
  var _styles = require("./styles");
21
25
 
22
- var _Chip = _interopRequireDefault(require("@mui/material/Chip"));
23
-
24
26
  var _material = require("@mui/material");
25
27
 
26
28
  var _Select = _interopRequireDefault(require("@mui/material/Select"));
27
29
 
28
- var _addv = _interopRequireDefault(require("../../../assets/images/Icons/addv2.svg"));
30
+ var _axios = _interopRequireDefault(require("axios"));
29
31
 
30
32
  var _Modal = require("../../organisms/Modal");
31
33
 
@@ -33,12 +35,18 @@ var _TextField = require("@mui/material/TextField");
33
35
 
34
36
  var _GroupSelect = require("../../molecules/GroupSelect");
35
37
 
38
+ var _CustomChip = require("../../atoms/CustomChip");
39
+
40
+ var _CustomSelect = require("../../molecules/CustomSelect");
41
+
36
42
  var _options = _interopRequireDefault(require("../../../assets/images/Icons/options.svg"));
37
43
 
38
- var _DeleteForeverOutlined = _interopRequireDefault(require("@mui/icons-material/DeleteForeverOutlined"));
44
+ var _addv = _interopRequireDefault(require("../../../assets/images/Icons/addv2.svg"));
39
45
 
40
46
  var _jsxRuntime = require("react/jsx-runtime");
41
47
 
48
+ //Componentes
49
+ //svg
42
50
  var Phase = function Phase(_ref) {
43
51
  var id = _ref.id,
44
52
  phases = _ref.phases,
@@ -46,7 +54,10 @@ var Phase = function Phase(_ref) {
46
54
  nextPhase = _ref.nextPhase,
47
55
  groups = _ref.groups,
48
56
  onDeletePhase = _ref.onDeletePhase,
49
- draggable = _ref.draggable;
57
+ onDragStart = _ref.onDragStart,
58
+ onDragOver = _ref.onDragOver,
59
+ onDragEnd = _ref.onDragEnd,
60
+ token = _ref.token;
50
61
 
51
62
  var _useState = (0, _react.useState)(""),
52
63
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
@@ -68,155 +79,259 @@ var Phase = function Phase(_ref) {
68
79
  showCustomSelect = _useState8[0],
69
80
  setShowCustomSelect = _useState8[1];
70
81
 
71
- var _useState9 = (0, _react.useState)({
82
+ var _React$useState = _react.default.useState(null),
83
+ _React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),
84
+ anchorEl = _React$useState2[0],
85
+ setAnchorEl = _React$useState2[1];
86
+
87
+ var _useState9 = (0, _react.useState)(""),
88
+ _useState10 = (0, _slicedToArray2.default)(_useState9, 2),
89
+ nextPhaseState = _useState10[0],
90
+ setNextPhaseState = _useState10[1];
91
+
92
+ var open = Boolean(anchorEl);
93
+
94
+ var _useState11 = (0, _react.useState)({
72
95
  show: false,
73
96
  title: "Actualización completa",
74
97
  message: "",
75
98
  icon: "success"
76
99
  }),
77
- _useState10 = (0, _slicedToArray2.default)(_useState9, 2),
78
- modalData = _useState10[0],
79
- setModalData = _useState10[1];
100
+ _useState12 = (0, _slicedToArray2.default)(_useState11, 2),
101
+ modalData = _useState12[0],
102
+ setModalData = _useState12[1];
80
103
 
81
104
  var idPhase = id + 1;
82
105
 
83
- var _useState11 = (0, _react.useState)(null),
84
- _useState12 = (0, _slicedToArray2.default)(_useState11, 2),
85
- draggedItem = _useState12[0],
86
- setDraggedItem = _useState12[1];
87
-
88
106
  var _useState13 = (0, _react.useState)([]),
89
107
  _useState14 = (0, _slicedToArray2.default)(_useState13, 2),
90
108
  tempItems = _useState14[0],
91
109
  setTempItems = _useState14[1];
92
110
 
93
- var onAdd = function onAdd() {
94
- if (selectedValue && !groupsSelected.includes(selectedValue)) {
95
- setGroupsSelected(function (prevGroups) {
96
- return [].concat((0, _toConsumableArray2.default)(prevGroups), [selectedValue]);
97
- });
98
- setChips(function (prevChips) {
99
- return [].concat((0, _toConsumableArray2.default)(prevChips), [selectedValue]);
100
- });
101
- setSelectedValue("");
111
+ (0, _react.useEffect)(function () {
112
+ var activeGroups = groups.filter(function (group) {
113
+ return group.groupActive === 1;
114
+ });
115
+ var initialChips = activeGroups.map(function (group) {
116
+ return {
117
+ id: group.groupId,
118
+ label: group.groupName
119
+ };
120
+ });
121
+ setChips(initialChips);
122
+ }, [groups]);
123
+ (0, _react.useEffect)(function () {
124
+ var nextPhaseObject = phases.find(function (phase) {
125
+ return phase.phaseId === nextPhase;
126
+ });
127
+
128
+ if (nextPhaseObject) {
129
+ setNextPhaseState(nextPhaseObject.phaseName);
130
+ } else {
131
+ console.log("Aún no se asigna siguiente fase");
102
132
  }
103
- };
133
+ }, [nextPhase, phases]);
134
+
135
+ var onAdd = /*#__PURE__*/function () {
136
+ var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(idPhase) {
137
+ var updatedGroups;
138
+ return _regenerator.default.wrap(function _callee$(_context) {
139
+ while (1) {
140
+ switch (_context.prev = _context.next) {
141
+ case 0:
142
+ if (!(selectedValue && !groupsSelected.includes(selectedValue))) {
143
+ _context.next = 9;
144
+ break;
145
+ }
104
146
 
105
- var handleDeletePhase = function handleDeletePhase() {
106
- onDeletePhase(idPhase);
107
- };
147
+ updatedGroups = groups.map(function (group) {
148
+ return group.groupName === selectedValue ? (0, _objectSpread2.default)((0, _objectSpread2.default)({}, group), {}, {
149
+ groupActive: 1
150
+ }) : group;
151
+ });
152
+ setGroups(updatedGroups); // Actualizar el estado de chips y groupsSelected
153
+
154
+ setChips(function (prevChips) {
155
+ return [].concat((0, _toConsumableArray2.default)(prevChips), [{
156
+ id: idPhase,
157
+ label: selectedValue
158
+ }]);
159
+ });
160
+ setGroupsSelected(function (prevGroups) {
161
+ return [].concat((0, _toConsumableArray2.default)(prevGroups), [selectedValue]);
162
+ });
163
+ setSelectedValue("");
164
+ console.log("update", updatedGroups);
165
+ _context.next = 9;
166
+ return addGroup(idPhase, updatedGroups);
167
+
168
+ case 9:
169
+ case "end":
170
+ return _context.stop();
171
+ }
172
+ }
173
+ }, _callee);
174
+ }));
175
+
176
+ return function onAdd(_x) {
177
+ return _ref2.apply(this, arguments);
178
+ };
179
+ }();
180
+
181
+ var addGroup = /*#__PURE__*/function () {
182
+ var _ref3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(phaseId, groups) {
183
+ var response;
184
+ return _regenerator.default.wrap(function _callee2$(_context2) {
185
+ while (1) {
186
+ switch (_context2.prev = _context2.next) {
187
+ case 0:
188
+ _context2.prev = 0;
189
+ console.log("fase y grupos", {
190
+ phaseId: phaseId,
191
+ groups: groups
192
+ });
193
+ _context2.next = 4;
194
+ return _axios.default.post("".concat(process.env.REACT_APP_PHASES_ENDPOINT, "/update"), {
195
+ retailerGroupsIds: {
196
+ groups: groups
197
+ },
198
+ phaseId: phaseId
199
+ }, {
200
+ headers: {
201
+ Authorization: token
202
+ }
203
+ });
204
+
205
+ case 4:
206
+ response = _context2.sent;
207
+ console.log("grupo eliminado correctamente");
208
+ _context2.next = 11;
209
+ break;
210
+
211
+ case 8:
212
+ _context2.prev = 8;
213
+ _context2.t0 = _context2["catch"](0);
214
+ console.error("Error al eliminar grupo de fase:", _context2.t0);
215
+
216
+ case 11:
217
+ case "end":
218
+ return _context2.stop();
219
+ }
220
+ }
221
+ }, _callee2, null, [[0, 8]]);
222
+ }));
223
+
224
+ return function addGroup(_x2, _x3) {
225
+ return _ref3.apply(this, arguments);
226
+ };
227
+ }();
108
228
 
109
229
  var handleGroupSelect = function handleGroupSelect(selectedGroup) {
110
- setGroupsSelected(function (prevGroups) {
111
- return [].concat((0, _toConsumableArray2.default)(prevGroups), [selectedGroup]);
112
- });
230
+ if (!chips.find(function (chip) {
231
+ return chip.label === selectedGroup;
232
+ })) {
233
+ setChips(function (prevChips) {
234
+ return [].concat((0, _toConsumableArray2.default)(prevChips), [{
235
+ id: prevChips.length,
236
+ label: selectedGroup
237
+ }]);
238
+ });
239
+ }
240
+
241
+ console.log("Se agrego el grupo", selectedGroup);
113
242
  setSelectedValue(selectedGroup);
114
243
  };
115
244
 
116
- var handleChipDelete = function handleChipDelete(chipToRemove) {
245
+ var handleChipDelete = function handleChipDelete(phaseId, chipToRemove) {
117
246
  setGroupsSelected(function (prevGroups) {
118
247
  return prevGroups.filter(function (chip) {
119
- return chip !== chipToRemove;
248
+ return chip.id !== chipToRemove.id;
120
249
  });
121
250
  });
251
+ console.log("Se elimino el grupo", chipToRemove.id);
122
252
  setChips(function (prevChips) {
123
253
  return prevChips.filter(function (chip) {
124
- return chip !== chipToRemove;
254
+ return chip.id !== chipToRemove.id;
125
255
  });
126
256
  });
257
+ deleteGroup(phaseId, chipToRemove.id);
127
258
  };
128
259
 
129
- var _React$useState = _react.default.useState(null),
130
- _React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),
131
- anchorEl = _React$useState2[0],
132
- setAnchorEl = _React$useState2[1];
133
-
134
- var open = Boolean(anchorEl);
135
-
136
- var handleClick = function handleClick(event) {
137
- setAnchorEl(event.currentTarget);
138
- };
260
+ var deleteGroup = /*#__PURE__*/function () {
261
+ var _ref4 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(phaseId, groupId) {
262
+ var response;
263
+ return _regenerator.default.wrap(function _callee3$(_context3) {
264
+ while (1) {
265
+ switch (_context3.prev = _context3.next) {
266
+ case 0:
267
+ _context3.prev = 0;
268
+ console.log("grupo de fase", {
269
+ phaseId: phaseId,
270
+ groupId: groupId
271
+ });
272
+ _context3.next = 4;
273
+ return _axios.default.post("".concat(process.env.REACT_APP_PHASES_ENDPOINT, "/delete"), {
274
+ deleteGroupOfPhase: {
275
+ phaseId: phaseId,
276
+ groupId: groupId
277
+ }
278
+ }, {
279
+ headers: {
280
+ Authorization: token // Authorization: sessionStorage.getItem("jwt"),
139
281
 
140
- var handleClose = function handleClose() {
141
- setAnchorEl(null);
142
- };
282
+ }
283
+ });
143
284
 
144
- var HoverableChip = function HoverableChip(_ref2) {
145
- var label = _ref2.label,
146
- onDelete = _ref2.onDelete;
285
+ case 4:
286
+ response = _context3.sent;
287
+ console.log("grupo eliminado correctamente");
288
+ _context3.next = 11;
289
+ break;
147
290
 
148
- var _useState15 = (0, _react.useState)(false),
149
- _useState16 = (0, _slicedToArray2.default)(_useState15, 2),
150
- isHovered = _useState16[0],
151
- setIsHovered = _useState16[1];
291
+ case 8:
292
+ _context3.prev = 8;
293
+ _context3.t0 = _context3["catch"](0);
294
+ console.error("Error al eliminar grupo de fase:", _context3.t0);
152
295
 
153
- var handleMouseEnter = function handleMouseEnter() {
154
- setIsHovered(true);
155
- };
296
+ case 11:
297
+ case "end":
298
+ return _context3.stop();
299
+ }
300
+ }
301
+ }, _callee3, null, [[0, 8]]);
302
+ }));
156
303
 
157
- var handleMouseLeave = function handleMouseLeave() {
158
- setIsHovered(false);
304
+ return function deleteGroup(_x4, _x5) {
305
+ return _ref4.apply(this, arguments);
159
306
  };
307
+ }();
160
308
 
161
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Chip.default, {
162
- label: label,
163
- onDelete: onDelete,
164
- onMouseEnter: handleMouseEnter,
165
- onMouseLeave: handleMouseLeave,
166
- deleteIcon: /*#__PURE__*/(0, _jsxRuntime.jsx)(_DeleteForeverOutlined.default, {}),
167
- style: {
168
- borderRadius: "5px",
169
- background: "transparent",
170
- border: "1px solid ".concat(isHovered ? "#B64545" : "#F0F0F0"),
171
- color: "".concat(isHovered ? "#B64545" : "#707070")
172
- }
173
- });
174
- };
175
-
176
- var onDragStartHandler = function onDragStartHandler(e) {
177
- e.dataTransfer.effectAllowed = "move";
178
- e.dataTransfer.setData("text/html", e.target.parentNode);
179
- e.dataTransfer.setDragImage(e.target.parentNode, 20, 20);
180
- setDraggedItem(id);
181
- onDragStart(e, id);
182
- };
183
-
184
- var onDragOverHandler = function onDragOverHandler(index) {
185
- if (!draggedItem || draggedItem === id) {
186
- return;
187
- }
188
-
189
- onDragOver(id);
190
- setDraggedItem(null);
309
+ var handleClick = function handleClick(event) {
310
+ setAnchorEl(event.currentTarget);
191
311
  };
192
312
 
193
- var onDragEndHandler = function onDragEndHandler() {
194
- onDragEnd();
195
- setDraggedItem(null);
313
+ var handleClose = function handleClose() {
314
+ setAnchorEl(null);
196
315
  };
197
316
 
198
317
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_styles.Container, {
199
- onDragStart: onDragStartHandler,
200
- onDragOver: onDragOverHandler,
201
- onDragEnd: onDragEndHandler,
202
- draggable: draggable,
318
+ onDragStart: onDragStart,
319
+ onDragOver: onDragOver,
320
+ onDragEnd: onDragEnd,
321
+ draggable: true,
203
322
  children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
204
323
  className: "header-phase",
205
324
  children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("h2", {
206
325
  children: ["Fase ", idPhase, " - ", phaseName]
207
326
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
208
327
  className: "text-button-container",
209
- children: idPhase === 1 ? /*#__PURE__*/(0, _jsxRuntime.jsx)("p", {
210
- className: "text-phase",
211
- children: "Al rechazar en esta fase enviar a proveedor"
212
- }) : /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
328
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
213
329
  className: "phase-sel",
214
330
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("p", {
215
331
  className: "text-phase",
216
332
  children: "Siguiente Fase "
217
333
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Select.default, {
218
- width: "100px",
219
- value: selectedValue !== "" ? selectedValue : nextPhase,
334
+ value: selectedValue !== "" ? selectedValue : nextPhaseState,
220
335
  placeholder: "Fase",
221
336
  onChange: function onChange(e) {
222
337
  var selectedPhase = phases.find(function (phase) {
@@ -225,11 +340,11 @@ var Phase = function Phase(_ref) {
225
340
  setSelectedValue(selectedPhase.nextPhaseIfApproved);
226
341
  },
227
342
  sx: {
228
- width: "auto",
229
343
  minWidth: "100px",
230
344
  height: "24px",
231
345
  background: "#F7F7FC",
232
- borderRadius: "5px"
346
+ borderRadius: "5px",
347
+ fontSize: "12px"
233
348
  },
234
349
  MenuProps: {
235
350
  PaperProps: {
@@ -242,8 +357,9 @@ var Phase = function Phase(_ref) {
242
357
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.MenuItem, {
243
358
  value: phase.phaseName,
244
359
  sx: {
245
- fontSize: "10px",
246
- color: "#262626"
360
+ fontSize: "12px",
361
+ color: "#262626",
362
+ minHeight: "auto"
247
363
  },
248
364
  children: phase.phaseName
249
365
  }, phase.phaseId);
@@ -253,7 +369,9 @@ var Phase = function Phase(_ref) {
253
369
  "aria-controls": open ? "basic-menu" : undefined,
254
370
  "aria-haspopup": "true",
255
371
  "aria-expanded": open ? "true" : undefined,
256
- onClick: handleClick,
372
+ onClick: function onClick(e) {
373
+ return handleClick(e);
374
+ },
257
375
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)("img", {
258
376
  src: _options.default,
259
377
  alt: ""
@@ -266,45 +384,36 @@ var Phase = function Phase(_ref) {
266
384
  MenuListProps: {
267
385
  "aria-labelledby": "basic-button"
268
386
  },
387
+ sx: {
388
+ ul: {
389
+ paddingTop: "0px",
390
+ paddingBottom: "0px"
391
+ }
392
+ },
269
393
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.MenuItem, {
270
394
  onClick: function onClick() {
271
395
  return onDeletePhase(id);
272
396
  },
397
+ sx: {
398
+ fontSize: "12px",
399
+ color: "#262626",
400
+ minHeight: "auto"
401
+ },
273
402
  children: "Eliminar Fase"
274
403
  })
275
404
  })]
276
405
  })
277
406
  })]
278
- }, idPhase), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
407
+ }, idPhase), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
279
408
  className: "attributes-container",
280
- children: [groups.filter(function (group) {
281
- return group.groupActive === 1;
282
- }).map(function (group, index) {
283
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(HoverableChip, {
284
- label: group.groupName,
409
+ children: chips.map(function (chip) {
410
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_CustomChip.CustomChip, {
411
+ label: chip.label,
285
412
  onDelete: function onDelete() {
286
- return handleChipDelete(group);
413
+ return handleChipDelete(idPhase, chip);
287
414
  }
288
- }, index);
289
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_GroupSelect.GroupSelect, {
290
- options: groups.filter(function (group) {
291
- return group.groupActive === 0;
292
- }).map(function (group, index) {
293
- return {
294
- id: index,
295
- name: group.groupName
296
- };
297
- }),
298
- showSearchBar: true,
299
- icon: _addv.default,
300
- placeHolder: "Buscar grupo",
301
- customSelectId: "category-select-" + groups.id,
302
- defaultOption: "Todos los grupos",
303
- parameterArray: groupsSelected,
304
- setParameterArray: setGroupsSelected,
305
- onSelect: handleGroupSelect,
306
- onClickItem: onAdd
307
- })]
415
+ }, chip.id);
416
+ })
308
417
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Modal.Modal, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, modalData), {}, {
309
418
  onClickBtnDefault: function onClickBtnDefault() {
310
419
  return setModalData(function (prev) {
@@ -26,28 +26,5 @@ var Template = function Template(args) {
26
26
  var DragAndDropPhasesDefault = Template.bind({});
27
27
  exports.DragAndDropPhasesDefault = DragAndDropPhasesDefault;
28
28
  DragAndDropPhasesDefault.args = {
29
- items: [{
30
- grupos: ["Impuestos", "Legal"]
31
- }, {
32
- grupos: ["Legal", "Jefe comercial"]
33
- }, {
34
- grupos: ["Finanzas", "Datos maestros"]
35
- }],
36
- grupos: [{
37
- id: 1,
38
- name: "Impuestos"
39
- }, {
40
- id: 2,
41
- name: "Legal"
42
- }, {
43
- id: 3,
44
- name: "Jefe comercial"
45
- }, {
46
- id: 4,
47
- name: "Finanzas"
48
- }, {
49
- id: 5,
50
- name: "Datos maestros"
51
- }],
52
29
  token: "eyJraWQiOiJkQWJkZCtlclwvTlwveVRQUWNvUlVyOCtrNUd2M1hMM2N1MWUzQ09zWExVRnc9IiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiIwZjQyNDdkZi1mMDJmLTRjYjgtOTA5YS1lNjI2NDlkMzQ3ODIiLCJjb2duaXRvOmdyb3VwcyI6WyJ1c3VhcmlvX2NvbnRlbnRvaCJdLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiaXNzIjoiaHR0cHM6XC9cL2NvZ25pdG8taWRwLnVzLWVhc3QtMS5hbWF6b25hd3MuY29tXC91cy1lYXN0LTFfWE1aUWRxa0dqIiwicGhvbmVfbnVtYmVyX3ZlcmlmaWVkIjpmYWxzZSwiY29nbml0bzp1c2VybmFtZSI6IjBmNDI0N2RmLWYwMmYtNGNiOC05MDlhLWU2MjY0OWQzNDc4MiIsImNvZ25pdG86cm9sZXMiOlsiYXJuOmF3czppYW06Ojg5ODY3MDIzMjgwNzpyb2xlXC9jb250ZW50b2gtZGV2LXVzLWVhc3QtMS1sYW1iZGFSb2xlIl0sImF1ZCI6IjVhYzh0cGdzNmdic3ExM2ZydnJwaWVlcDQwIiwiZXZlbnRfaWQiOiIzMTJjMzkzOC0yODFlLTRjZTMtOGQwMC1lNDJmMDJhMjliNDkiLCJ0b2tlbl91c2UiOiJpZCIsImF1dGhfdGltZSI6MTcwMTgwNDA2MywibmFtZSI6IlByb3ZlZWRvciBVbm8gUmFkaW9zaGFjayIsInBob25lX251bWJlciI6Iis1MjEyMzQ1Njc4OTgiLCJleHAiOjE3MDE4MDc2NjIsImlhdCI6MTcwMTgwNDA2MywiZW1haWwiOiJwcm92ZWVkb3JyYWRpb3NoYWNrdW5vQGFsbGZyZWVtYWlsLm5ldCJ9.TlytxDFcBq6dMXaDGqIQ2Dr3P81JQgIJ2k8DgfVKvHmmJAyfj5hZcdaWPBCW_qXT_93HtXje2fmQuyTJeN4pL_AXkEEQJsi6Ye-8ipteb616OFLLm8AkMV7NmxyYn59yfY9bPoWmanTjicONFNtL_SOACebXUI4c1uZtFmMWMvAR29l_89uj3e5J-ZrS1PQn36Eid66LYtV7lBsKAn3JJeftDiXx750AHERXjoXdzHwjJttm4jmMZ4LJPk8efuvZWdPhcgXJ-4CuvWNbjxCmFiDkxSjFK_qLix73HtoCLWee-FJElqxW2ZjTflOiRZknmt2M-7kQj4FzhgEK3n6jyg"
53
30
  };