@projectcor/people-microfront 1.0.2-2 → 1.0.2-20

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 (81) hide show
  1. package/lib/App.js +1 -43
  2. package/lib/App.stories.js +25 -2
  3. package/lib/components/DeleteTeamModal/DeleteTeamModal.js +36 -24
  4. package/lib/components/DeleteTeamModal/DeleteTeamModal.styles.js +18 -6
  5. package/lib/components/DeleteTeamModal/DeleteTeamModal.types.js +1 -1
  6. package/lib/components/DeletedUserIcon/DeletedUserIcon.styles.js +2 -2
  7. package/lib/components/DisabledUserIcon/DisabledUserIcon.styles.js +2 -2
  8. package/lib/components/EmptyStateTeams/EmptyStateTeams.js +2 -2
  9. package/lib/components/EmptyUser/EmptyUser.js +3 -18
  10. package/lib/components/Filters/FilterChip/FilterChip.js +10 -5
  11. package/lib/components/HeaderTeams/HeaderTeams.js +2 -2
  12. package/lib/components/Illustration/EmptyFilter.js +67 -0
  13. package/lib/components/MenuOptions/MenuOptions.js +4 -18
  14. package/lib/components/ModalEditUserPosition/ModalEditUserPosition.js +17 -52
  15. package/lib/components/ModalEditUserPosition/ModalEditUserPosition.styles.js +36 -0
  16. package/lib/components/ModalEditUserPosition/UserEditPositionRow.js +13 -4
  17. package/lib/components/ModalOptionsWithSearch/ModalOptionsWithSearch.js +16 -3
  18. package/lib/components/Pagination/PaginationView.js +132 -0
  19. package/lib/components/Search/Search.js +4 -4
  20. package/lib/components/Table/Row/Row.js +65 -14
  21. package/lib/components/Table/Row/Row.styles.js +25 -9
  22. package/lib/components/Table/TeamRow/AddMemberModal/AddMemberModal.js +65 -0
  23. package/lib/components/Table/TeamRow/AddMemberModal/AddMemberModal.styles.js +38 -0
  24. package/lib/components/Table/TeamRow/AddMemberModal/index.js +2 -0
  25. package/lib/components/Table/TeamRow/AddUsers/AddUsers.js +182 -0
  26. package/lib/components/Table/TeamRow/AddUsers/AddUsers.styles.js +21 -0
  27. package/lib/components/Table/TeamRow/AddUsers/index.js +2 -0
  28. package/lib/components/Table/TeamRow/RemoveMemberModal/RemoveMemberModal.js +65 -0
  29. package/lib/components/Table/TeamRow/RemoveMemberModal/RemoveMemberModal.styles.js +38 -0
  30. package/lib/components/Table/TeamRow/RemoveMemberModal/index.js +2 -0
  31. package/lib/components/Table/TeamRow/TeamRow.js +74 -57
  32. package/lib/components/Table/TeamRow/UsersRow/UsersRow.js +191 -0
  33. package/lib/components/Table/TeamRow/UsersRow/UsersRow.styles.js +40 -0
  34. package/lib/components/Table/TeamRow/UsersRow/index.js +2 -0
  35. package/lib/components/TeamDetailsModal/MembersSelect.js +103 -28
  36. package/lib/components/TeamDetailsModal/TeamDetailsModal.js +73 -74
  37. package/lib/components/TeamDetailsModal/TeamDetailsModal.styles.js +14 -10
  38. package/lib/components/TeamDetailsModal/TeamDetailsModal.types.js +1 -1
  39. package/lib/components/TeamDetailsModal/index.js +1 -1
  40. package/lib/components/UserRow/UserRow.js +17 -8
  41. package/lib/components/UserRow/UserRow.styles.js +2 -2
  42. package/lib/container/Body/BodyContainerViewTeams.js +72 -98
  43. package/lib/container/Filters/FiltersContainer.js +42 -10
  44. package/lib/container/MainView/MainTeamsView.js +33 -0
  45. package/lib/container/MainView/MainUsersView.js +89 -69
  46. package/lib/container/MainView/MainView.js +21 -39
  47. package/lib/container/Pagination/PaginationContainer.js +10 -123
  48. package/lib/container/Pagination/PaginationTeamsContainer.js +32 -0
  49. package/lib/container/RouterComponent/RouterComponent.js +20 -31
  50. package/lib/container/RouterComponent/RouterComponent.styles.js +26 -0
  51. package/lib/container/TableContainer/TableContainer.js +18 -8
  52. package/lib/context/TeamsContext.js +5 -2
  53. package/lib/context/UsersContext.js +71 -22
  54. package/lib/hooks/useAssignUserToTeam.js +78 -0
  55. package/lib/hooks/useCreateTeams.js +67 -0
  56. package/lib/hooks/useDeleteTeam.js +67 -0
  57. package/lib/hooks/useGetTeams.js +8 -4
  58. package/lib/hooks/useGetTotalPositions.js +24 -0
  59. package/lib/hooks/useGetTotalTeams.js +24 -0
  60. package/lib/hooks/useGetUsers.js +23 -8
  61. package/lib/hooks/useGetUsersForFilter.js +1 -2
  62. package/lib/hooks/useResize.js +9 -4
  63. package/lib/hooks/useUnassignUserFromTeam.js +67 -0
  64. package/lib/hooks/useUpdateTeam.js +65 -0
  65. package/lib/lang/i18nextForWeb.js +2 -2
  66. package/lib/lang/translation/br.json +21 -4
  67. package/lib/lang/translation/en.json +58 -41
  68. package/lib/lang/translation/es.json +21 -4
  69. package/lib/lang/translation/fr.json +86 -69
  70. package/lib/mocks/mockedUser.js +7 -1
  71. package/lib/query/assignUserToTeam.js +5 -0
  72. package/lib/query/createTeam.js +5 -0
  73. package/lib/query/deleteTeam.js +5 -0
  74. package/lib/query/getTeams.js +2 -2
  75. package/lib/query/getTotalPositions.js +5 -0
  76. package/lib/query/getTotalTeams.js +5 -0
  77. package/lib/query/getUsers.js +2 -2
  78. package/lib/query/unassignUserFromTeam.js +5 -0
  79. package/lib/query/updateTeam.js +5 -0
  80. package/lib/types/global.d.js +1 -1
  81. package/package.json +2 -2
@@ -1,49 +1,121 @@
1
1
  import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
2
2
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
- import { useState, useMemo } from 'react';
3
+ import { useState, useEffect, useRef, useCallback } from 'react';
4
4
  import { ChevronDown } from '@projectcor/icons/lib/components/ChevronDown';
5
5
  import { CUSelect } from '@projectcor/selector/lib/components/CUSelect';
6
6
  import { SearchComponent } from '../Filters/SearchComponent/SearchComponent';
7
+ import { useGetUsers } from '../../hooks/useGetUsers';
8
+ import { useDebounce } from '../../hooks/useDebounce';
7
9
  import { SCBackdropInputSelect, SCCUItemsList, SCCUSelectItem, SCWrapperSelectIcon, SCMemberItemContent, SCMemberCheckbox, SCMemberSearchWrapper } from './TeamDetailsModal.styles';
8
10
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
9
11
  export var MembersSelect = function MembersSelect(_ref) {
10
12
  var value = _ref.value,
11
- membersList = _ref.membersList,
12
13
  onChange = _ref.onChange;
13
14
  var _useState = useState(false),
14
15
  _useState2 = _slicedToArray(_useState, 2),
15
16
  showSelectMembers = _useState2[0],
16
17
  setShowSelectMembers = _useState2[1];
18
+ var _useGetUsers = useGetUsers(),
19
+ handleGetUsers = _useGetUsers.handleGetUsers,
20
+ users = _useGetUsers.users,
21
+ currentPage = _useGetUsers.currentPage,
22
+ totalPages = _useGetUsers.totalPages,
23
+ loading = _useGetUsers.loading;
17
24
  var _useState3 = useState(''),
18
25
  _useState4 = _slicedToArray(_useState3, 2),
19
26
  searchValue = _useState4[0],
20
27
  setSearchValue = _useState4[1];
28
+ var debouncedSearchValue = useDebounce(searchValue, 300);
29
+ var _useState5 = useState([]),
30
+ _useState6 = _slicedToArray(_useState5, 2),
31
+ accumulatedUsers = _useState6[0],
32
+ setAccumulatedUsers = _useState6[1];
33
+ var scrollContainerRef = useRef(null);
34
+ var isLoadingMoreRef = useRef(false);
21
35
  var handleSelectMember = function handleSelectMember(member) {
22
- var memberName = "".concat(member.firstName, " ").concat(member.lastName);
23
- var currentMembers = value ? value.split(' - ') : [];
24
- if (currentMembers.includes(memberName)) {
25
- // Si ya está seleccionado, removerlo
26
- var updatedMembers = currentMembers.filter(function (m) {
27
- return m !== memberName;
28
- });
29
- onChange(updatedMembers.join(' - '));
36
+ var alredySelected = value.some(function (m) {
37
+ return m.id === member.id;
38
+ });
39
+ if (alredySelected) {
40
+ onChange('members', value.filter(function (m) {
41
+ return m.id !== member.id;
42
+ }));
30
43
  } else {
31
- // Si no está seleccionado, agregarlo
32
- var _updatedMembers = [].concat(_toConsumableArray(currentMembers), [memberName]);
33
- onChange(_updatedMembers.join(' - '));
44
+ onChange('members', [].concat(_toConsumableArray(value), [{
45
+ id: member.id,
46
+ name: "".concat(member.firstName, " ").concat(member.lastName)
47
+ }]));
34
48
  }
35
- // No cerrar el selector para permitir selección múltiple
36
49
  };
37
50
  var handleSearch = function handleSearch(e) {
38
51
  setSearchValue(e.target.value);
39
52
  };
40
- var filteredMembers = useMemo(function () {
41
- if (!searchValue) return membersList;
42
- var searchLower = searchValue.toLowerCase();
43
- return membersList.filter(function (member) {
44
- return member.firstName.toLowerCase().includes(searchLower) || member.lastName.toLowerCase().includes(searchLower) || "".concat(member.firstName, " ").concat(member.lastName).toLowerCase().includes(searchLower);
45
- });
46
- }, [membersList, searchValue]);
53
+
54
+ // Resetear usuarios acumulados cuando cambia el search o se abre el selector
55
+ useEffect(function () {
56
+ if (showSelectMembers) {
57
+ setAccumulatedUsers([]);
58
+ isLoadingMoreRef.current = false;
59
+ handleGetUsers({
60
+ page: 1,
61
+ searchInput: debouncedSearchValue
62
+ });
63
+ }
64
+ }, [debouncedSearchValue, showSelectMembers, handleGetUsers]);
65
+
66
+ // Acumular usuarios cuando se reciben nuevos datos
67
+ useEffect(function () {
68
+ if (users.length > 0 && showSelectMembers) {
69
+ if (currentPage === 1) {
70
+ // Si es la primera página, reemplazar
71
+ setAccumulatedUsers(users);
72
+ } else {
73
+ // Si es una página posterior, agregar a los existentes
74
+ setAccumulatedUsers(function (prev) {
75
+ // Evitar duplicados
76
+ var existingIds = new Set(prev.map(function (u) {
77
+ return u.id;
78
+ }));
79
+ var newUsers = users.filter(function (u) {
80
+ return !existingIds.has(u.id);
81
+ });
82
+ return [].concat(_toConsumableArray(prev), _toConsumableArray(newUsers));
83
+ });
84
+ }
85
+ isLoadingMoreRef.current = false;
86
+ }
87
+ }, [users, currentPage, showSelectMembers]);
88
+ var handleScroll = useCallback(function () {
89
+ var container = scrollContainerRef.current;
90
+ if (!container || loading || isLoadingMoreRef.current) return;
91
+ var scrollTop = container.scrollTop,
92
+ scrollHeight = container.scrollHeight,
93
+ clientHeight = container.clientHeight;
94
+ var isNearBottom = scrollTop + clientHeight >= scrollHeight - 10; // 10px de margen
95
+
96
+ if (isNearBottom && currentPage < totalPages) {
97
+ isLoadingMoreRef.current = true;
98
+ handleGetUsers({
99
+ page: currentPage + 1,
100
+ searchInput: debouncedSearchValue
101
+ });
102
+ }
103
+ }, [currentPage, totalPages, loading, handleGetUsers, debouncedSearchValue]);
104
+ useEffect(function () {
105
+ var container = scrollContainerRef.current;
106
+ if (!container || !showSelectMembers) return undefined;
107
+ container.addEventListener('scroll', handleScroll);
108
+ return function () {
109
+ container.removeEventListener('scroll', handleScroll);
110
+ };
111
+ }, [handleScroll, showSelectMembers]);
112
+ var handleClickActionSelect = function handleClickActionSelect() {
113
+ setShowSelectMembers(!showSelectMembers);
114
+ if (!showSelectMembers) {
115
+ setSearchValue('');
116
+ setAccumulatedUsers([]);
117
+ }
118
+ };
47
119
  return /*#__PURE__*/_jsxs(CUSelect, {
48
120
  title: "Agregar miembros *",
49
121
  placeholder: "Seleccionar miembros",
@@ -55,25 +127,28 @@ export var MembersSelect = function MembersSelect(_ref) {
55
127
  color: "#20201F"
56
128
  })
57
129
  }),
58
- value: value,
130
+ value: value.map(function (member) {
131
+ return member.name;
132
+ }).join(' - '),
59
133
  open: showSelectMembers,
60
- handleClickAction: function handleClickAction() {
61
- return setShowSelectMembers(!showSelectMembers);
62
- },
134
+ handleClickAction: handleClickActionSelect,
63
135
  children: [/*#__PURE__*/_jsx(SCBackdropInputSelect, {
64
136
  onClick: function onClick() {
65
137
  return setShowSelectMembers(false);
66
138
  }
67
139
  }), /*#__PURE__*/_jsxs(SCCUItemsList, {
140
+ ref: scrollContainerRef,
68
141
  children: [/*#__PURE__*/_jsx(SCMemberSearchWrapper, {
69
142
  children: /*#__PURE__*/_jsx(SearchComponent, {
70
143
  placeholder: "Buscar miembro",
71
144
  onChange: handleSearch,
72
145
  value: searchValue
73
146
  })
74
- }), filteredMembers.map(function (member) {
147
+ }), accumulatedUsers.map(function (member) {
75
148
  var memberName = "".concat(member.firstName, " ").concat(member.lastName);
76
- var isSelected = (value === null || value === void 0 ? void 0 : value.includes(memberName)) || false;
149
+ var isSelected = (value === null || value === void 0 ? void 0 : value.some(function (m) {
150
+ return m.id === member.id;
151
+ })) || false;
77
152
  return /*#__PURE__*/_jsx(SCCUSelectItem, {
78
153
  onClick: function onClick(e) {
79
154
  e.stopPropagation();
@@ -100,4 +175,4 @@ export var MembersSelect = function MembersSelect(_ref) {
100
175
  })]
101
176
  });
102
177
  };
103
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VTdGF0ZSIsInVzZU1lbW8iLCJDaGV2cm9uRG93biIsIkNVU2VsZWN0IiwiU2VhcmNoQ29tcG9uZW50IiwiU0NCYWNrZHJvcElucHV0U2VsZWN0IiwiU0NDVUl0ZW1zTGlzdCIsIlNDQ1VTZWxlY3RJdGVtIiwiU0NXcmFwcGVyU2VsZWN0SWNvbiIsIlNDTWVtYmVySXRlbUNvbnRlbnQiLCJTQ01lbWJlckNoZWNrYm94IiwiU0NNZW1iZXJTZWFyY2hXcmFwcGVyIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIk1lbWJlcnNTZWxlY3QiLCJfcmVmIiwidmFsdWUiLCJtZW1iZXJzTGlzdCIsIm9uQ2hhbmdlIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5Iiwic2hvd1NlbGVjdE1lbWJlcnMiLCJzZXRTaG93U2VsZWN0TWVtYmVycyIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0Iiwic2VhcmNoVmFsdWUiLCJzZXRTZWFyY2hWYWx1ZSIsImhhbmRsZVNlbGVjdE1lbWJlciIsIm1lbWJlciIsIm1lbWJlck5hbWUiLCJjb25jYXQiLCJmaXJzdE5hbWUiLCJsYXN0TmFtZSIsImN1cnJlbnRNZW1iZXJzIiwic3BsaXQiLCJpbmNsdWRlcyIsInVwZGF0ZWRNZW1iZXJzIiwiZmlsdGVyIiwibSIsImpvaW4iLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJoYW5kbGVTZWFyY2giLCJlIiwidGFyZ2V0IiwiZmlsdGVyZWRNZW1iZXJzIiwic2VhcmNoTG93ZXIiLCJ0b0xvd2VyQ2FzZSIsInRpdGxlIiwicGxhY2Vob2xkZXIiLCJlbmRJY29uIiwiaXNPcGVuIiwiY2hpbGRyZW4iLCJ3aWR0aCIsImhlaWdodCIsImNvbG9yIiwib3BlbiIsImhhbmRsZUNsaWNrQWN0aW9uIiwib25DbGljayIsIm1hcCIsImlzU2VsZWN0ZWQiLCJzdG9wUHJvcGFnYXRpb24iLCJzdHlsZSIsImJhY2tncm91bmRDb2xvciIsInR5cGUiLCJjaGVja2VkIiwicmVhZE9ubHkiLCJpZCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1RlYW1EZXRhaWxzTW9kYWwvTWVtYmVyc1NlbGVjdC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlU3RhdGUsIHVzZU1lbW8sIENoYW5nZUV2ZW50IH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBDaGV2cm9uRG93biB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0NoZXZyb25Eb3duJ1xuaW1wb3J0IHsgQ1VTZWxlY3QgfSBmcm9tICdAcHJvamVjdGNvci9zZWxlY3Rvci9saWIvY29tcG9uZW50cy9DVVNlbGVjdCdcbmltcG9ydCB7IFNlYXJjaENvbXBvbmVudCB9IGZyb20gJy4uL0ZpbHRlcnMvU2VhcmNoQ29tcG9uZW50L1NlYXJjaENvbXBvbmVudCdcbmltcG9ydCB7XG4gIFNDQmFja2Ryb3BJbnB1dFNlbGVjdCxcbiAgU0NDVUl0ZW1zTGlzdCxcbiAgU0NDVVNlbGVjdEl0ZW0sXG4gIFNDV3JhcHBlclNlbGVjdEljb24sXG4gIFNDTWVtYmVySXRlbUNvbnRlbnQsXG4gIFNDTWVtYmVyQ2hlY2tib3gsXG4gIFNDTWVtYmVyU2VhcmNoV3JhcHBlcixcbn0gZnJvbSAnLi9UZWFtRGV0YWlsc01vZGFsLnN0eWxlcydcbmltcG9ydCB7IFRlYW1Vc2VyIH0gZnJvbSAnLi9UZWFtRGV0YWlsc01vZGFsLnR5cGVzJ1xuXG5pbnRlcmZhY2UgTWVtYmVyc1NlbGVjdFByb3BzIHtcbiAgdmFsdWU6IHN0cmluZ1xuICBtZW1iZXJzTGlzdDogVGVhbVVzZXJbXVxuICBvbkNoYW5nZTogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWRcbn1cblxuZXhwb3J0IGNvbnN0IE1lbWJlcnNTZWxlY3QgPSAoeyB2YWx1ZSwgbWVtYmVyc0xpc3QsIG9uQ2hhbmdlIH06IE1lbWJlcnNTZWxlY3RQcm9wcykgPT4ge1xuICBjb25zdCBbc2hvd1NlbGVjdE1lbWJlcnMsIHNldFNob3dTZWxlY3RNZW1iZXJzXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbc2VhcmNoVmFsdWUsIHNldFNlYXJjaFZhbHVlXSA9IHVzZVN0YXRlKCcnKVxuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdE1lbWJlciA9IChtZW1iZXI6IFRlYW1Vc2VyKSA9PiB7XG4gICAgY29uc3QgbWVtYmVyTmFtZSA9IGAke21lbWJlci5maXJzdE5hbWV9ICR7bWVtYmVyLmxhc3ROYW1lfWBcbiAgICBjb25zdCBjdXJyZW50TWVtYmVycyA9IHZhbHVlID8gdmFsdWUuc3BsaXQoJyAtICcpIDogW11cblxuICAgIGlmIChjdXJyZW50TWVtYmVycy5pbmNsdWRlcyhtZW1iZXJOYW1lKSkge1xuICAgICAgLy8gU2kgeWEgZXN0w6Egc2VsZWNjaW9uYWRvLCByZW1vdmVybG9cbiAgICAgIGNvbnN0IHVwZGF0ZWRNZW1iZXJzID0gY3VycmVudE1lbWJlcnMuZmlsdGVyKG0gPT4gbSAhPT0gbWVtYmVyTmFtZSlcbiAgICAgIG9uQ2hhbmdlKHVwZGF0ZWRNZW1iZXJzLmpvaW4oJyAtICcpKVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBTaSBubyBlc3TDoSBzZWxlY2Npb25hZG8sIGFncmVnYXJsb1xuICAgICAgY29uc3QgdXBkYXRlZE1lbWJlcnMgPSBbLi4uY3VycmVudE1lbWJlcnMsIG1lbWJlck5hbWVdXG4gICAgICBvbkNoYW5nZSh1cGRhdGVkTWVtYmVycy5qb2luKCcgLSAnKSlcbiAgICB9XG4gICAgLy8gTm8gY2VycmFyIGVsIHNlbGVjdG9yIHBhcmEgcGVybWl0aXIgc2VsZWNjacOzbiBtw7psdGlwbGVcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVNlYXJjaCA9IChlOiBDaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgIHNldFNlYXJjaFZhbHVlKGUudGFyZ2V0LnZhbHVlKVxuICB9XG5cbiAgY29uc3QgZmlsdGVyZWRNZW1iZXJzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKCFzZWFyY2hWYWx1ZSkgcmV0dXJuIG1lbWJlcnNMaXN0XG4gICAgY29uc3Qgc2VhcmNoTG93ZXIgPSBzZWFyY2hWYWx1ZS50b0xvd2VyQ2FzZSgpXG4gICAgcmV0dXJuIG1lbWJlcnNMaXN0LmZpbHRlcihcbiAgICAgIG1lbWJlciA9PlxuICAgICAgICBtZW1iZXIuZmlyc3ROYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoTG93ZXIpIHx8XG4gICAgICAgIG1lbWJlci5sYXN0TmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaExvd2VyKSB8fFxuICAgICAgICBgJHttZW1iZXIuZmlyc3ROYW1lfSAke21lbWJlci5sYXN0TmFtZX1gLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoTG93ZXIpXG4gICAgKVxuICB9LCBbbWVtYmVyc0xpc3QsIHNlYXJjaFZhbHVlXSlcblxuICByZXR1cm4gKFxuICAgIDxDVVNlbGVjdFxuICAgICAgdGl0bGU9XCJBZ3JlZ2FyIG1pZW1icm9zICpcIlxuICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY2Npb25hciBtaWVtYnJvc1wiXG4gICAgICBlbmRJY29uPXtcbiAgICAgICAgPFNDV3JhcHBlclNlbGVjdEljb24gaXNPcGVuPXtzaG93U2VsZWN0TWVtYmVyc30+XG4gICAgICAgICAgPENoZXZyb25Eb3duIHdpZHRoPVwiMTZweFwiIGhlaWdodD1cIjE2cHhcIiBjb2xvcj1cIiMyMDIwMUZcIiAvPlxuICAgICAgICA8L1NDV3JhcHBlclNlbGVjdEljb24+XG4gICAgICB9XG4gICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICBvcGVuPXtzaG93U2VsZWN0TWVtYmVyc31cbiAgICAgIGhhbmRsZUNsaWNrQWN0aW9uPXsoKSA9PiBzZXRTaG93U2VsZWN0TWVtYmVycyghc2hvd1NlbGVjdE1lbWJlcnMpfVxuICAgID5cbiAgICAgIDxTQ0JhY2tkcm9wSW5wdXRTZWxlY3Qgb25DbGljaz17KCkgPT4gc2V0U2hvd1NlbGVjdE1lbWJlcnMoZmFsc2UpfSAvPlxuICAgICAgPFNDQ1VJdGVtc0xpc3Q+XG4gICAgICAgIDxTQ01lbWJlclNlYXJjaFdyYXBwZXI+XG4gICAgICAgICAgPFNlYXJjaENvbXBvbmVudCBwbGFjZWhvbGRlcj1cIkJ1c2NhciBtaWVtYnJvXCIgb25DaGFuZ2U9e2hhbmRsZVNlYXJjaH0gdmFsdWU9e3NlYXJjaFZhbHVlfSAvPlxuICAgICAgICA8L1NDTWVtYmVyU2VhcmNoV3JhcHBlcj5cbiAgICAgICAge2ZpbHRlcmVkTWVtYmVycy5tYXAobWVtYmVyID0+IHtcbiAgICAgICAgICBjb25zdCBtZW1iZXJOYW1lID0gYCR7bWVtYmVyLmZpcnN0TmFtZX0gJHttZW1iZXIubGFzdE5hbWV9YFxuICAgICAgICAgIGNvbnN0IGlzU2VsZWN0ZWQgPSB2YWx1ZT8uaW5jbHVkZXMobWVtYmVyTmFtZSkgfHwgZmFsc2VcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPFNDQ1VTZWxlY3RJdGVtXG4gICAgICAgICAgICAgIGtleT17bWVtYmVyLmlkfVxuICAgICAgICAgICAgICBvbkNsaWNrPXtlID0+IHtcbiAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgICAgICAgaGFuZGxlU2VsZWN0TWVtYmVyKG1lbWJlcilcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgc3R5bGU9e3sgYmFja2dyb3VuZENvbG9yOiBpc1NlbGVjdGVkID8gJyNlZGZhZmYnIDogJ3RyYW5zcGFyZW50JyB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8U0NNZW1iZXJJdGVtQ29udGVudD5cbiAgICAgICAgICAgICAgICA8c3Bhbj57bWVtYmVyTmFtZX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPFNDTWVtYmVyQ2hlY2tib3hcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICBjaGVja2VkPXtpc1NlbGVjdGVkfVxuICAgICAgICAgICAgICAgICAgcmVhZE9ubHlcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2UgPT4ge1xuICAgICAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZVNlbGVjdE1lbWJlcihtZW1iZXIpXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvU0NNZW1iZXJJdGVtQ29udGVudD5cbiAgICAgICAgICAgIDwvU0NDVVNlbGVjdEl0ZW0+XG4gICAgICAgICAgKVxuICAgICAgICB9KX1cbiAgICAgIDwvU0NDVUl0ZW1zTGlzdD5cbiAgICA8L0NVU2VsZWN0PlxuICApXG59XG4iXSwibWFwcGluZ3MiOiI7O0FBQUEsU0FBU0EsUUFBUSxFQUFFQyxPQUFPLFFBQXFCLE9BQU87QUFDdEQsU0FBU0MsV0FBVyxRQUFRLDhDQUE4QztBQUMxRSxTQUFTQyxRQUFRLFFBQVEsOENBQThDO0FBQ3ZFLFNBQVNDLGVBQWUsUUFBUSw0Q0FBNEM7QUFDNUUsU0FDRUMscUJBQXFCLEVBQ3JCQyxhQUFhLEVBQ2JDLGNBQWMsRUFDZEMsbUJBQW1CLEVBQ25CQyxtQkFBbUIsRUFDbkJDLGdCQUFnQixFQUNoQkMscUJBQXFCLFFBQ2hCLDJCQUEyQjtBQUFBLFNBQUFDLEdBQUEsSUFBQUMsSUFBQSxFQUFBQyxJQUFBLElBQUFDLEtBQUE7QUFTbEMsT0FBTyxJQUFNQyxhQUFhLEdBQUcsU0FBaEJBLGFBQWFBLENBQUFDLElBQUEsRUFBNkQ7RUFBQSxJQUF2REMsS0FBSyxHQUFBRCxJQUFBLENBQUxDLEtBQUs7SUFBRUMsV0FBVyxHQUFBRixJQUFBLENBQVhFLFdBQVc7SUFBRUMsUUFBUSxHQUFBSCxJQUFBLENBQVJHLFFBQVE7RUFDMUQsSUFBQUMsU0FBQSxHQUFrRHJCLFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFBQXNCLFVBQUEsR0FBQUMsY0FBQSxDQUFBRixTQUFBO0lBQTFERyxpQkFBaUIsR0FBQUYsVUFBQTtJQUFFRyxvQkFBb0IsR0FBQUgsVUFBQTtFQUM5QyxJQUFBSSxVQUFBLEdB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b0JBQW9CLENBQUMsS0FBSyxDQUFDO01BQUE7SUFBQyxDQUFFLENBQUMsZUFDckVWLEtBQUEsQ0FBQ1QsYUFBYTtNQUFBZ0QsUUFBQSxnQkFDWnpDLElBQUEsQ0FBQ0YscUJBQXFCO1FBQUEyQyxRQUFBLGVBQ3BCekMsSUFBQSxDQUFDVCxlQUFlO1VBQUMrQyxXQUFXLEVBQUMsZ0JBQWdCO1VBQUMvQixRQUFRLEVBQUV3QixZQUFhO1VBQUMxQixLQUFLLEVBQUVVO1FBQVksQ0FBRTtNQUFDLENBQ3ZFLENBQUMsRUFDdkJtQixlQUFlLENBQUNjLEdBQUcsQ0FBQyxVQUFBOUIsTUFBTSxFQUFJO1FBQzdCLElBQU1DLFVBQVUsTUFBQUMsTUFBQSxDQUFNRixNQUFNLENBQUNHLFNBQVMsT0FBQUQsTUFBQSxDQUFJRixNQUFNLENBQUNJLFFBQVEsQ0FBRTtRQUMzRCxJQUFNMkIsVUFBVSxHQUFHLENBQUE1QyxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRW9CLFFBQVEsQ0FBQ04sVUFBVSxDQUFDLEtBQUksS0FBSztRQUN2RCxvQkFDRW5CLElBQUEsQ0FBQ04sY0FBYztVQUVicUQsT0FBTyxFQUFFLFNBQVRBLE9BQU9BLENBQUVmLENBQUMsRUFBSTtZQUNaQSxDQUFDLENBQUNrQixlQUFlLENBQUMsQ0FBQztZQUNuQmpDLGtCQUFrQixDQUFDQyxNQUFNLENBQUM7VUFDNUIsQ0FBRTtVQUNGaUMsS0FBSyxFQUFFO1lBQUVDLGVBQWUsRUFBRUgsVUFBVSxHQUFHLFNBQVMsR0FBRztVQUFjLENBQUU7VUFBQVIsUUFBQSxlQUVuRXZDLEtBQUEsQ0FBQ04sbUJBQW1CO1lBQUE2QyxRQUFBLGdCQUNsQnpDLElBQUE7Y0FBQXlDLFFBQUEsRUFBT3RCO1lBQVUsQ0FBTyxDQUFDLGVBQ3pCbkIsSUFBQSxDQUFDSCxnQkFBZ0I7Y0FDZndELElBQUksRUFBQyxVQUFVO2NBQ2ZDLE9BQU8sRUFBRUwsVUFBVztjQUNwQk0sUUFBUTtjQUNSUixPQUFPLEVBQUUsU0FBVEEsT0FBT0EsQ0FBRWYsQ0FBQyxFQUFJO2dCQUNaQSxDQUFDLENBQUNrQixlQUFlLENBQUMsQ0FBQztnQkFDbkJqQyxrQkFBa0IsQ0FBQ0MsTUFBTSxDQUFDO2NBQzVCO1lBQUUsQ0FDSCxDQUFDO1VBQUEsQ0FDaUI7UUFBQyxHQWxCakJBLE1BQU0sQ0FBQ3NDLEVBbUJFLENBQUM7TUFFckIsQ0FBQyxDQUFDO0lBQUEsQ0FDVyxDQUFDO0VBQUEsQ0FDUixDQUFDO0FBRWYsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
178
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VTdGF0ZSIsInVzZUVmZmVjdCIsInVzZVJlZiIsInVzZUNhbGxiYWNrIiwiQ2hldnJvbkRvd24iLCJDVVNlbGVjdCIsIlNlYXJjaENvbXBvbmVudCIsInVzZUdldFVzZXJzIiwidXNlRGVib3VuY2UiLCJTQ0JhY2tkcm9wSW5wdXRTZWxlY3QiLCJTQ0NVSXRlbXNMaXN0IiwiU0NDVVNlbGVjdEl0ZW0iLCJTQ1dyYXBwZXJTZWxlY3RJY29uIiwiU0NNZW1iZXJJdGVtQ29udGVudCIsIlNDTWVtYmVyQ2hlY2tib3giLCJTQ01lbWJlclNlYXJjaFdyYXBwZXIiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiTWVtYmVyc1NlbGVjdCIsIl9yZWYiLCJ2YWx1ZSIsIm9uQ2hhbmdlIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5Iiwic2hvd1NlbGVjdE1lbWJlcnMiLCJzZXRTaG93U2VsZWN0TWVtYmVycyIsIl91c2VHZXRVc2VycyIsImhhbmRsZUdldFVzZXJzIiwidXNlcnMiLCJjdXJyZW50UGFnZSIsInRvdGFsUGFnZXMiLCJsb2FkaW5nIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJzZWFyY2hWYWx1ZSIsInNldFNlYXJjaFZhbHVlIiwiZGVib3VuY2VkU2VhcmNoVmFsdWUiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImFjY3VtdWxhdGVkVXNlcnMiLCJzZXRBY2N1bXVsYXRlZFVzZXJzIiwic2Nyb2xsQ29udGFpbmVyUmVmIiwiaXNMb2FkaW5nTW9yZVJlZiIsImhhbmRsZVNlbGVjdE1lbWJlciIsIm1lbWJlciIsImFscmVkeVNlbGVjdGVkIiwic29tZSIsIm0iLCJpZCIsImZpbHRlciIsImNvbmNhdCIsIl90b0NvbnN1bWFibGVBcnJheSIsIm5hbWUiLCJmaXJzdE5hbWUiLCJsYXN0TmFtZSIsImhhbmRsZVNlYXJjaCIsImUiLCJ0YXJnZXQiLCJjdXJyZW50IiwicGFnZSIsInNlYXJjaElucHV0IiwibGVuZ3RoIiwicHJldiIsImV4aXN0aW5nSWRzIiwiU2V0IiwibWFwIiwidSIsIm5ld1VzZXJzIiwiaGFzIiwiaGFuZGxlU2Nyb2xsIiwiY29udGFpbmVyIiwic2Nyb2xsVG9wIiwic2Nyb2xsSGVpZ2h0IiwiY2xpZW50SGVpZ2h0IiwiaXNOZWFyQm90dG9tIiwidW5kZWZpbmVkIiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJoYW5kbGVDbGlja0FjdGlvblNlbGVjdCIsInRpdGxlIiwicGxhY2Vob2xkZXIiLCJlbmRJY29uIiwiaXNPcGVuIiwiY2hpbGRyZW4iLCJ3aWR0aCIsImhlaWdodCIsImNvbG9yIiwiam9pbiIsIm9wZW4iLCJoYW5kbGVDbGlja0FjdGlvbiIsIm9uQ2xpY2siLCJyZWYiLCJtZW1iZXJOYW1lIiwiaXNTZWxlY3RlZCIsInN0b3BQcm9wYWdhdGlvbiIsInN0eWxlIiwiYmFja2dyb3VuZENvbG9yIiwidHlwZSIsImNoZWNrZWQiLCJyZWFkT25seSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1RlYW1EZXRhaWxzTW9kYWwvTWVtYmVyc1NlbGVjdC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlU3RhdGUsIENoYW5nZUV2ZW50LCB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlQ2FsbGJhY2sgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IENoZXZyb25Eb3duIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvQ2hldnJvbkRvd24nXG5pbXBvcnQgeyBDVVNlbGVjdCB9IGZyb20gJ0Bwcm9qZWN0Y29yL3NlbGVjdG9yL2xpYi9jb21wb25lbnRzL0NVU2VsZWN0J1xuaW1wb3J0IHsgU2VhcmNoQ29tcG9uZW50IH0gZnJvbSAnLi4vRmlsdGVycy9TZWFyY2hDb21wb25lbnQvU2VhcmNoQ29tcG9uZW50J1xuaW1wb3J0IHsgdXNlR2V0VXNlcnMgfSBmcm9tICcuLi8uLi9ob29rcy91c2VHZXRVc2VycydcbmltcG9ydCB7IHVzZURlYm91bmNlIH0gZnJvbSAnLi4vLi4vaG9va3MvdXNlRGVib3VuY2UnXG5pbXBvcnQge1xuICBTQ0JhY2tkcm9wSW5wdXRTZWxlY3QsXG4gIFNDQ1VJdGVtc0xpc3QsXG4gIFNDQ1VTZWxlY3RJdGVtLFxuICBTQ1dyYXBwZXJTZWxlY3RJY29uLFxuICBTQ01lbWJlckl0ZW1Db250ZW50LFxuICBTQ01lbWJlckNoZWNrYm94LFxuICBTQ01lbWJlclNlYXJjaFdyYXBwZXIsXG59IGZyb20gJy4vVGVhbURldGFpbHNNb2RhbC5zdHlsZXMnXG5pbXBvcnQgeyBUZWFtVXNlciB9IGZyb20gJy4vVGVhbURldGFpbHNNb2RhbC50eXBlcydcbmltcG9ydCB7IFVzZXIgfSBmcm9tICcuLi8uLi90eXBlcy91c2VyVHlwZSdcblxuZXhwb3J0IGludGVyZmFjZSBNZW1iZXJTZWxlY3Rpb24ge1xuICBpZDogbnVtYmVyXG4gIG5hbWU6IHN0cmluZ1xufVxuXG5pbnRlcmZhY2UgTWVtYmVyc1NlbGVjdFByb3BzIHtcbiAgdmFsdWU6IE1lbWJlclNlbGVjdGlvbltdXG4gIG9uQ2hhbmdlOiAoaW5wdXQ6IHN0cmluZywgdmFsdWU6IE1lbWJlclNlbGVjdGlvbltdKSA9PiB2b2lkXG59XG5cbmV4cG9ydCBjb25zdCBNZW1iZXJzU2VsZWN0ID0gKHsgdmFsdWUsIG9uQ2hhbmdlIH06IE1lbWJlcnNTZWxlY3RQcm9wcykgPT4ge1xuICBjb25zdCBbc2hvd1NlbGVjdE1lbWJlcnMsIHNldFNob3dTZWxlY3RNZW1iZXJzXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCB7IGhhbmRsZUdldFVzZXJzLCB1c2VycywgY3VycmVudFBhZ2UsIHRvdGFsUGFnZXMsIGxvYWRpbmcgfSA9IHVzZUdldFVzZXJzKClcbiAgY29uc3QgW3NlYXJjaFZhbHVlLCBzZXRTZWFyY2hWYWx1ZV0gPSB1c2VTdGF0ZSgnJylcbiAgY29uc3QgZGVib3VuY2VkU2VhcmNoVmFsdWUgPSB1c2VEZWJvdW5jZShzZWFyY2hWYWx1ZSwgMzAwKVxuICBjb25zdCBbYWNjdW11bGF0ZWRVc2Vycywgc2V0QWNjdW11bGF0ZWRVc2Vyc10gPSB1c2VTdGF0ZTxVc2VyW10+KFtdKVxuICBjb25zdCBzY3JvbGxDb250YWluZXJSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IGlzTG9hZGluZ01vcmVSZWYgPSB1c2VSZWYoZmFsc2UpXG5cbiAgY29uc3QgaGFuZGxlU2VsZWN0TWVtYmVyID0gKG1lbWJlcjogVXNlciB8IFRlYW1Vc2VyKSA9PiB7XG4gICAgY29uc3QgYWxyZWR5U2VsZWN0ZWQgPSB2YWx1ZS5zb21lKG0gPT4gbS5pZCA9PT0gbWVtYmVyLmlkKVxuICAgIGlmIChhbHJlZHlTZWxlY3RlZCkge1xuICAgICAgb25DaGFuZ2UoXG4gICAgICAgICdtZW1iZXJzJyxcbiAgICAgICAgdmFsdWUuZmlsdGVyKG0gPT4gbS5pZCAhPT0gbWVtYmVyLmlkKVxuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICBvbkNoYW5nZSgnbWVtYmVycycsIFsuLi52YWx1ZSwgeyBpZDogbWVtYmVyLmlkLCBuYW1lOiBgJHttZW1iZXIuZmlyc3ROYW1lfSAke21lbWJlci5sYXN0TmFtZX1gIH1dKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVNlYXJjaCA9IChlOiBDaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgIHNldFNlYXJjaFZhbHVlKGUudGFyZ2V0LnZhbHVlKVxuICB9XG5cbiAgLy8gUmVzZXRlYXIgdXN1YXJpb3MgYWN1bXVsYWRvcyBjdWFuZG8gY2FtYmlhIGVsIHNlYXJjaCBvIHNlIGFicmUgZWwgc2VsZWN0b3JcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoc2hvd1NlbGVjdE1lbWJlcnMpIHtcbiAgICAgIHNldEFjY3VtdWxhdGVkVXNlcnMoW10pXG4gICAgICBpc0xvYWRpbmdNb3JlUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgaGFuZGxlR2V0VXNlcnMoeyBwYWdlOiAxLCBzZWFyY2hJbnB1dDogZGVib3VuY2VkU2VhcmNoVmFsdWUgfSlcbiAgICB9XG4gIH0sIFtkZWJvdW5jZWRTZWFyY2hWYWx1ZSwgc2hvd1NlbGVjdE1lbWJlcnMsIGhhbmRsZUdldFVzZXJzXSlcblxuICAvLyBBY3VtdWxhciB1c3VhcmlvcyBjdWFuZG8gc2UgcmVjaWJlbiBudWV2b3MgZGF0b3NcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAodXNlcnMubGVuZ3RoID4gMCAmJiBzaG93U2VsZWN0TWVtYmVycykge1xuICAgICAgaWYgKGN1cnJlbnRQYWdlID09PSAxKSB7XG4gICAgICAgIC8vIFNpIGVzIGxhIHByaW1lcmEgcMOhZ2luYSwgcmVlbXBsYXphclxuICAgICAgICBzZXRBY2N1bXVsYXRlZFVzZXJzKHVzZXJzKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gU2kgZXMgdW5hIHDDoWdpbmEgcG9zdGVyaW9yLCBhZ3JlZ2FyIGEgbG9zIGV4aXN0ZW50ZXNcbiAgICAgICAgc2V0QWNjdW11bGF0ZWRVc2VycyhwcmV2ID0+IHtcbiAgICAgICAgICAvLyBFdml0YXIgZHVwbGljYWRvc1xuICAgICAgICAgIGNvbnN0IGV4aXN0aW5nSWRzID0gbmV3IFNldChwcmV2Lm1hcCh1ID0+IHUuaWQpKVxuICAgICAgICAgIGNvbnN0IG5ld1VzZXJzID0gdXNlcnMuZmlsdGVyKHUgPT4gIWV4aXN0aW5nSWRzLmhhcyh1LmlkKSlcbiAgICAgICAgICByZXR1cm4gWy4uLnByZXYsIC4uLm5ld1VzZXJzXVxuICAgICAgICB9KVxuICAgICAgfVxuICAgICAgaXNMb2FkaW5nTW9yZVJlZi5jdXJyZW50ID0gZmFsc2VcbiAgICB9XG4gIH0sIFt1c2VycywgY3VycmVudFBhZ2UsIHNob3dTZWxlY3RNZW1iZXJzXSlcblxuICBjb25zdCBoYW5kbGVTY3JvbGwgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3QgY29udGFpbmVyID0gc2Nyb2xsQ29udGFpbmVyUmVmLmN1cnJlbnRcbiAgICBpZiAoIWNvbnRhaW5lciB8fCBsb2FkaW5nIHx8IGlzTG9hZGluZ01vcmVSZWYuY3VycmVudCkgcmV0dXJuXG5cbiAgICBjb25zdCB7IHNjcm9sbFRvcCwgc2Nyb2xsSGVpZ2h0LCBjbGllbnRIZWlnaHQgfSA9IGNvbnRhaW5lclxuICAgIGNvbnN0IGlzTmVhckJvdHRvbSA9IHNjcm9sbFRvcCArIGNsaWVudEhlaWdodCA+PSBzY3JvbGxIZWlnaHQgLSAxMCAvLyAxMHB4IGRlIG1hcmdlblxuXG4gICAgaWYgKGlzTmVhckJvdHRvbSAmJiBjdXJyZW50UGFnZSA8IHRvdGFsUGFnZXMpIHtcbiAgICAgIGlzTG9hZGluZ01vcmVSZWYuY3VycmVudCA9IHRydWVcbiAgICAgIGhhbmRsZUdldFVzZXJzKHsgcGFnZTogY3VycmVudFBhZ2UgKyAxLCBzZWFyY2hJbnB1dDogZGVib3VuY2VkU2VhcmNoVmFsdWUgfSlcbiAgICB9XG4gIH0sIFtjdXJyZW50UGFnZSwgdG90YWxQYWdlcywgbG9hZGluZywgaGFuZGxlR2V0VXNlcnMsIGRlYm91bmNlZFNlYXJjaFZhbHVlXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IHNjcm9sbENvbnRhaW5lclJlZi5jdXJyZW50XG4gICAgaWYgKCFjb250YWluZXIgfHwgIXNob3dTZWxlY3RNZW1iZXJzKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgICBjb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjb250YWluZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsKVxuICAgIH1cbiAgfSwgW2hhbmRsZVNjcm9sbCwgc2hvd1NlbGVjdE1lbWJlcnNdKVxuXG4gIGNvbnN0IGhhbmRsZUNsaWNrQWN0aW9uU2VsZWN0ID0gKCkgPT4ge1xuICAgIHNldFNob3dTZWxlY3RNZW1iZXJzKCFzaG93U2VsZWN0TWVtYmVycylcbiAgICBpZiAoIXNob3dTZWxlY3RNZW1iZXJzKSB7XG4gICAgICBzZXRTZWFyY2hWYWx1ZSgnJylcbiAgICAgIHNldEFjY3VtdWxhdGVkVXNlcnMoW10pXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8Q1VTZWxlY3RcbiAgICAgIHRpdGxlPVwiQWdyZWdhciBtaWVtYnJvcyAqXCJcbiAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWNjaW9uYXIgbWllbWJyb3NcIlxuICAgICAgZW5kSWNvbj17XG4gICAgICAgIDxTQ1dyYXBwZXJTZWxlY3RJY29uIGlzT3Blbj17c2hvd1NlbGVjdE1lbWJlcnN9PlxuICAgICAgICAgIDxDaGV2cm9uRG93biB3aWR0aD1cIjE2cHhcIiBoZWlnaHQ9XCIxNnB4XCIgY29sb3I9XCIjMjAyMDFGXCIgLz5cbiAgICAgICAgPC9TQ1dyYXBwZXJTZWxlY3RJY29uPlxuICAgICAgfVxuICAgICAgdmFsdWU9e3ZhbHVlLm1hcChtZW1iZXIgPT4gbWVtYmVyLm5hbWUpLmpvaW4oJyAtICcpfVxuICAgICAgb3Blbj17c2hvd1NlbGVjdE1lbWJlcnN9XG4gICAgICBoYW5kbGVDbGlja0FjdGlvbj17aGFuZGxlQ2xpY2tBY3Rpb25TZWxlY3R9XG4gICAgPlxuICAgICAgPFNDQmFja2Ryb3BJbnB1dFNlbGVjdCBvbkNsaWNrPXsoKSA9PiBzZXRTaG93U2VsZWN0TWVtYmVycyhmYWxzZSl9IC8+XG4gICAgICA8U0NDVUl0ZW1zTGlzdCByZWY9e3Njcm9sbENvbnRhaW5lclJlZn0+XG4gICAgICAgIDxTQ01lbWJlclNlYXJjaFdyYXBwZXI+XG4gICAgICAgICAgPFNlYXJjaENvbXBvbmVudCBwbGFjZWhvbGRlcj1cIkJ1c2NhciBtaWVtYnJvXCIgb25DaGFuZ2U9e2hhbmRsZVNlYXJjaH0gdmFsdWU9e3NlYXJjaFZhbHVlfSAvPlxuICAgICAgICA8L1NDTWVtYmVyU2VhcmNoV3JhcHBlcj5cbiAgICAgICAge2FjY3VtdWxhdGVkVXNlcnMubWFwKG1lbWJlciA9PiB7XG4gICAgICAgICAgY29uc3QgbWVtYmVyTmFtZSA9IGAke21lbWJlci5maXJzdE5hbWV9ICR7bWVtYmVyLmxhc3ROYW1lfWBcbiAgICAgICAgICBjb25zdCBpc1NlbGVjdGVkID0gdmFsdWU/LnNvbWUobSA9PiBtLmlkID09PSBtZW1iZXIuaWQpIHx8IGZhbHNlXG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxTQ0NVU2VsZWN0SXRlbVxuICAgICAgICAgICAgICBrZXk9e21lbWJlci5pZH1cbiAgICAgICAgICAgICAgb25DbGljaz17ZSA9PiB7XG4gICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgICAgICAgICAgIGhhbmRsZVNlbGVjdE1lbWJlcihtZW1iZXIpXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIHN0eWxlPXt7IGJhY2tncm91bmRDb2xvcjogaXNTZWxlY3RlZCA/ICcjZWRmYWZmJyA6ICd0cmFuc3BhcmVudCcgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPFNDTWVtYmVySXRlbUNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPHNwYW4+e21lbWJlck5hbWV9PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxTQ01lbWJlckNoZWNrYm94XG4gICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgY2hlY2tlZD17aXNTZWxlY3RlZH1cbiAgICAgICAgICAgICAgICAgIHJlYWRPbmx5XG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXtlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVTZWxlY3RNZW1iZXIobWVtYmVyKVxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L1NDTWVtYmVySXRlbUNvbnRlbnQ+XG4gICAgICAgICAgICA8L1NDQ1VTZWxlY3RJdGVtPlxuICAgICAgICAgIClcbiAgICAgICAgfSl9XG4gICAgICA8L1NDQ1VJdGVtc0xpc3Q+XG4gICAgPC9DVVNlbGVjdD5cbiAgKVxufVxuIl0sIm1hcHBpbmdzIjoiOztBQUFBLFNBQVNBLFFBQVEsRUFBZUMsU0FBUyxFQUFFQyxNQUFNLEVBQUVDLFdBQVcsUUFBUSxPQUFPO0FBQzdFLFNBQVNDLFdBQVcsUUFBUSw4Q0FBOEM7QUFDMUUsU0FBU0MsUUFBUSxRQUFRLDhDQUE4QztBQUN2RSxTQUFTQyxlQUFlLFFBQVEsNENBQTRDO0FBQzVFLFNBQVNDLFdBQVcsUUFBUSx5QkFBeUI7QUFDckQsU0FBU0MsV0FBVyxRQUFRLHlCQUF5QjtBQUNyRCxTQUNFQyxxQkFBcUIsRUFDckJDLGFBQWEsRUFDYkMsY0FBYyxFQUNkQyxtQkFBbUIsRUFDbkJDLG1CQUFtQixFQUNuQkMsZ0JBQWdCLEVBQ2hCQyxxQkFBcUIsUUFDaEIsMkJBQTJCO0FBQUEsU0FBQUMsR0FBQSxJQUFBQyxJQUFBLEVBQUFDLElBQUEsSUFBQUMsS0FBQTtBQWNsQyxPQUFPLElBQU1DLGFBQWEsR0FBRyxTQUFoQkEsYUFBYUEsQ0FBQUMsSUFBQSxFQUFnRDtFQUFBLElBQTFDQyxLQUFLLEdBQUFELElBQUEsQ0FBTEMsS0FBSztJQUFFQyxRQUFRLEdBQUFGLElBQUEsQ0FBUkUsUUFBUTtFQUM3QyxJQUFBQyxTQUFBLEdBQWtEeEIsUUFBUSxDQUFDLEtBQUssQ0FBQztJQUFBeUIsVUFBQSxHQUFBQyxjQUFBLENBQUFGLFNBQUE7SUFBMURHLGlCQUFpQixHQUFBRixVQUFBO0lBQUVHLG9CQUFvQixHQUFBSCxVQUFBO0VBQzlDLElBQUFJLFlBQUEsR0FBb0V0QixXQUFXLENBQUMsQ0FBQztJQUF6RXVCLGNBQWMsR0FBQUQsWUFBQSxDQUFkQyxjQUFjO0lBQUVDLEtBQUssR0FBQUYsWUFBQSxDQUFMRSxLQUFLO0lBQUVDLFdBQVcsR0FBQUgsWUFBQSxDQUFYRyxXQUFXO0lBQUVDLFVBQVUsR0FBQUosWUFBQSxDQUFWSSxVQUFVO0lBQUVDLE9BQU8sR0FBQUwsWUFBQSxD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
@@ -9,10 +9,10 @@ import { Cross } from '@projectcor/icons/lib/components/Cross';
9
9
  import { ChevronDown } from '@projectcor/icons/lib/components/ChevronDown';
10
10
  import { Input } from '@projectcor/input/lib';
11
11
  import { CUSelect } from '@projectcor/selector/lib/components/CUSelect';
12
- import { MembersSelect } from './MembersSelect';
13
- import { SCTDMOverlay, SCTDMContainer, SCTDMHeader, SCTDMTitle, SCTDMCloseButton, SCTDMContent, SCTDMSection, SCTDMSectionLabel, SCTDMSectionValue, SCTDMUsersList, SCTDMWorkspaceTag, SCTDMButtonsContainer, SCBackdropInputSelect, SCCUItemsList, SCCUSelectItem, SCWrapperTextArea, SCTextAreaLabel, SCTextArea, SCWrapperSelectIcon } from './TeamDetailsModal.styles';
12
+ import { SCTDMOverlay, SCTDMContainer, SCTDMHeader, SCTDMTitle, SCTDMCloseButton, SCTDMContent, SCTDMSection, SCTDMSectionLabel, SCTDMSectionValue, SCTDMUsersList, SCTDMWorkspaceTag, SCTDMButtonsContainer, SCBackdropInputSelect, SCCUItemsList, SCCUSelectItem, SCWrapperTextArea, SCTextAreaLabel, SCTextArea, SCTextAreaCounter, SCWrapperSelectIcon } from './TeamDetailsModal.styles';
14
13
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
15
14
  export var TeamDetailsModal = function TeamDetailsModal(_ref) {
15
+ var _formData$workspace;
16
16
  var team = _ref.team,
17
17
  isOpen = _ref.isOpen,
18
18
  onClose = _ref.onClose,
@@ -20,17 +20,15 @@ export var TeamDetailsModal = function TeamDetailsModal(_ref) {
20
20
  onCreate = _ref.onCreate,
21
21
  _ref$mode = _ref.mode,
22
22
  mode = _ref$mode === void 0 ? 'view' : _ref$mode,
23
- workspacesList = _ref.workspacesList,
24
- _ref$membersList = _ref.membersList,
25
- membersList = _ref$membersList === void 0 ? [] : _ref$membersList;
23
+ workspacesList = _ref.workspacesList;
26
24
  var _useState = useState(mode === 'edit' || mode === 'create'),
27
25
  _useState2 = _slicedToArray(_useState, 2),
28
26
  isEditMode = _useState2[0],
29
27
  setIsEditMode = _useState2[1];
30
28
  var _useState3 = useState({
31
29
  name: '',
32
- workspace: '',
33
- members: '',
30
+ workspace: null,
31
+ members: [],
34
32
  description: ''
35
33
  }),
36
34
  _useState4 = _slicedToArray(_useState3, 2),
@@ -42,40 +40,55 @@ export var TeamDetailsModal = function TeamDetailsModal(_ref) {
42
40
  setShowSelectWorkspace = _useState6[1];
43
41
  var _useTranslation = useTranslation('teams'),
44
42
  t = _useTranslation.t;
45
- var isCreateMode = mode === 'create';
46
- var isViewMode = mode === 'view' && !isEditMode;
47
43
  useEffect(function () {
48
- if (team && !isCreateMode) {
44
+ // Si cambia el modo, ajustar isEditMode
45
+ setIsEditMode(mode === 'edit' || mode === 'create');
46
+ }, [mode]);
47
+ useEffect(function () {
48
+ if (!isOpen) {
49
+ // Resetear cuando el modal se cierra
49
50
  setFormData({
50
- name: team.name,
51
- workspace: team.workspace,
52
- members: team.users.map(function (user) {
53
- return "".concat(user.firstName, " ").concat(user.lastName);
54
- }).join(' - '),
55
- description: team.description
51
+ name: '',
52
+ workspace: null,
53
+ members: [],
54
+ description: ''
56
55
  });
57
- } else if (isCreateMode) {
56
+ return;
57
+ }
58
+ if (mode === 'create') {
58
59
  // Resetear formulario para crear
59
60
  setFormData({
60
61
  name: '',
61
- workspace: '',
62
- members: '',
62
+ workspace: null,
63
+ members: [],
63
64
  description: ''
64
65
  });
66
+ } else if (team) {
67
+ // Actualizar formulario cuando hay un equipo (modo view o edit)
68
+ setFormData({
69
+ name: team.name || '',
70
+ workspace: team.workspace ? {
71
+ id: team.workspace.id,
72
+ name: team.workspace.name
73
+ } : null,
74
+ members: team.users.map(function (user) {
75
+ return {
76
+ id: user.id,
77
+ name: "".concat(user.firstName, " ").concat(user.lastName)
78
+ };
79
+ }),
80
+ description: team.description || ''
81
+ });
65
82
  }
66
- }, [team, isCreateMode]);
67
- useEffect(function () {
68
- // Si cambia el modo, ajustar isEditMode
69
- setIsEditMode(mode === 'edit' || mode === 'create');
70
- }, [mode]);
83
+ }, [team, mode, isOpen]);
71
84
  if (!isOpen) return null;
72
- if (isViewMode && !team) return null;
85
+ if (mode === 'view' && !isEditMode && !team) return null;
73
86
  var handleCloseModal = function handleCloseModal() {
74
87
  setIsEditMode(false);
75
88
  setFormData({
76
89
  name: '',
77
- workspace: '',
78
- members: '',
90
+ workspace: null,
91
+ members: [],
79
92
  description: ''
80
93
  });
81
94
  onClose();
@@ -95,31 +108,16 @@ export var TeamDetailsModal = function TeamDetailsModal(_ref) {
95
108
  setIsEditMode(true);
96
109
  };
97
110
  var handleCancelEdit = function handleCancelEdit() {
98
- if (isCreateMode) {
99
- handleCloseModal();
100
- } else {
101
- setIsEditMode(false);
102
- // Restaurar valores originales
103
- if (team) {
104
- setFormData({
105
- name: team.name,
106
- workspace: team.workspace,
107
- members: team.users.map(function (user) {
108
- return "".concat(user.firstName, " ").concat(user.lastName);
109
- }).join(' - '),
110
- description: team.description
111
- });
112
- }
113
- }
111
+ handleCloseModal();
114
112
  };
115
113
  var handleSave = function handleSave() {
116
- if (isCreateMode && onCreate) {
117
- onCreate();
114
+ if (mode === 'create' && onCreate) {
115
+ onCreate(formData);
118
116
  } else if (onEdit) {
119
- onEdit();
117
+ onEdit(formData);
120
118
  }
121
119
  setIsEditMode(false);
122
- if (isCreateMode) {
120
+ if (mode === 'create') {
123
121
  handleCloseModal();
124
122
  }
125
123
  };
@@ -129,10 +127,12 @@ export var TeamDetailsModal = function TeamDetailsModal(_ref) {
129
127
  });
130
128
  };
131
129
  var getModalTitle = function getModalTitle() {
132
- if (isCreateMode) return t('teams.modal.createTitle');
130
+ if (mode === 'create') return t('teams.modal.createTitle');
133
131
  if (isEditMode) return t('teams.modal.editTitle');
134
132
  return (team === null || team === void 0 ? void 0 : team.name) || '';
135
133
  };
134
+ var isFormComplete = window.hasWorkspacesFeature ? formData.name.trim().length > 0 && formData.workspace !== null : formData.name.trim().length > 0;
135
+ var isViewMode = mode === 'view' && !isEditMode;
136
136
  return /*#__PURE__*/_jsx(SCTDMOverlay, {
137
137
  onClick: handleOverlayClick,
138
138
  children: /*#__PURE__*/_jsxs(SCTDMContainer, {
@@ -161,28 +161,28 @@ export var TeamDetailsModal = function TeamDetailsModal(_ref) {
161
161
  children: [/*#__PURE__*/_jsx(SCTDMSectionLabel, {
162
162
  children: t('teams.modal.workspacesLabel')
163
163
  }), /*#__PURE__*/_jsx(SCTDMSectionValue, {
164
- children: /*#__PURE__*/_jsx(SCTDMWorkspaceTag, {
165
- children: team.workspace
166
- })
164
+ children: team.workspace ? /*#__PURE__*/_jsx(SCTDMWorkspaceTag, {
165
+ children: team.workspace.name
166
+ }) : '-'
167
167
  })]
168
168
  }), !window.hasWorkspacesFeature && /*#__PURE__*/_jsxs(SCTDMSection, {
169
169
  children: [/*#__PURE__*/_jsx(SCTDMSectionLabel, {
170
170
  children: t('teams.modal.descriptionLabel')
171
171
  }), /*#__PURE__*/_jsx(SCTDMSectionValue, {
172
- children: team.description
172
+ children: team.description || '-'
173
173
  })]
174
174
  })]
175
175
  }), /*#__PURE__*/_jsxs(SCTDMButtonsContainer, {
176
176
  children: [/*#__PURE__*/_jsx(CUButton, {
177
- variant: "contained",
178
- size: "medium",
179
- onClick: handleEditClick,
180
- children: t('teams.modal.editButton')
181
- }), /*#__PURE__*/_jsx(CUButton, {
182
177
  variant: "text",
183
178
  size: "medium",
184
179
  onClick: handleCloseModal,
185
180
  children: t('teams.cancel')
181
+ }), !window.hasWorkspacesFeature && /*#__PURE__*/_jsx(CUButton, {
182
+ variant: "contained",
183
+ size: "medium",
184
+ onClick: handleEditClick,
185
+ children: t('teams.modal.editButton')
186
186
  })]
187
187
  })]
188
188
  }) : /*#__PURE__*/_jsxs(_Fragment, {
@@ -190,13 +190,16 @@ export var TeamDetailsModal = function TeamDetailsModal(_ref) {
190
190
  children: [/*#__PURE__*/_jsx(SCTDMSection, {
191
191
  children: /*#__PURE__*/_jsx(Input, {
192
192
  labelText: t('teams.modal.nameLabel'),
193
- withCounter: false,
194
- value: formData.name,
193
+ withCounter: true,
194
+ maxLength: 255,
195
+ value: formData.name || (team && mode === 'edit' ? team.name : ''),
195
196
  placeholder: t('teams.modal.namePlaceholder'),
196
197
  handleSetText: function handleSetText(value) {
197
198
  return handleInputChange('name', value);
198
- }
199
- })
199
+ },
200
+ hasError: formData.name.length > 255,
201
+ errorMessage: "El nombre del equipo no puede tener m\xE1s de 255 caracteres"
202
+ }, "team-name-".concat((team === null || team === void 0 ? void 0 : team.id) || 'new', "-").concat(mode, "-").concat(isOpen))
200
203
  }), window.hasWorkspacesFeature && /*#__PURE__*/_jsx(SCTDMSection, {
201
204
  children: /*#__PURE__*/_jsxs(CUSelect, {
202
205
  title: t('teams.modal.workspaceTitle'),
@@ -209,7 +212,7 @@ export var TeamDetailsModal = function TeamDetailsModal(_ref) {
209
212
  color: "#20201F"
210
213
  })
211
214
  }),
212
- value: formData.workspace,
215
+ value: ((_formData$workspace = formData.workspace) === null || _formData$workspace === void 0 ? void 0 : _formData$workspace.name) || '',
213
216
  open: showSelectWorkspace,
214
217
  handleClickAction: function handleClickAction() {
215
218
  return setShowSelectWorkspace(!showSelectWorkspace);
@@ -222,21 +225,13 @@ export var TeamDetailsModal = function TeamDetailsModal(_ref) {
222
225
  children: workspacesList.map(function (workspace) {
223
226
  return /*#__PURE__*/_jsx(SCCUSelectItem, {
224
227
  onClick: function onClick() {
225
- return handleInputChange('workspace', workspace.name);
228
+ return handleInputChange('workspace', workspace);
226
229
  },
227
230
  children: workspace.name
228
231
  }, workspace.id);
229
232
  })
230
233
  })]
231
234
  })
232
- }), /*#__PURE__*/_jsx(SCTDMSection, {
233
- children: /*#__PURE__*/_jsx(MembersSelect, {
234
- value: formData.members,
235
- membersList: membersList.length > 0 ? membersList : (team === null || team === void 0 ? void 0 : team.users) || [],
236
- onChange: function onChange(value) {
237
- return handleInputChange('members', value);
238
- }
239
- })
240
235
  }), !window.hasWorkspacesFeature && /*#__PURE__*/_jsx(SCTDMSection, {
241
236
  children: /*#__PURE__*/_jsxs(SCWrapperTextArea, {
242
237
  children: [/*#__PURE__*/_jsx(SCTextAreaLabel, {
@@ -249,7 +244,10 @@ export var TeamDetailsModal = function TeamDetailsModal(_ref) {
249
244
  },
250
245
  spellCheck: false,
251
246
  placeholder: t('teams.modal.descriptionPlaceholder'),
252
- id: "myTextarea"
247
+ id: "myTextarea",
248
+ maxLength: 255
249
+ }), /*#__PURE__*/_jsxs(SCTextAreaCounter, {
250
+ children: [formData.description.length, " / 255"]
253
251
  })]
254
252
  })
255
253
  })]
@@ -260,17 +258,18 @@ export var TeamDetailsModal = function TeamDetailsModal(_ref) {
260
258
  onClick: handleCancelEdit,
261
259
  children: t('teams.cancel')
262
260
  }), /*#__PURE__*/_jsx(CUButton, {
261
+ disabled: !isFormComplete,
263
262
  variant: "contained",
264
263
  size: "medium",
265
264
  onClick: handleSave,
266
265
  style: {
267
266
  backgroundColor: '#666666'
268
267
  },
269
- children: isCreateMode ? t('teams.createTeam') : t('teams.saveChanges')
268
+ children: mode === 'create' ? t('teams.createTeam') : t('teams.saveChanges')
270
269
  })]
271
270
  })]
272
271
  })]
273
272
  })
274
273
  });
275
274
  };
276
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZVN0YXRlIiwidXNlRWZmZWN0IiwidXNlVHJhbnNsYXRpb24iLCJDVUJ1dHRvbiIsIkNyb3NzIiwiQ2hldnJvbkRvd24iLCJJbnB1dCIsIkNVU2VsZWN0IiwiTWVtYmVyc1NlbGVjdCIsIlNDVERNT3ZlcmxheSIsIlNDVERNQ29udGFpbmVyIiwiU0NURE1IZWFkZXIiLCJTQ1RETVRpdGxlIiwiU0NURE1DbG9zZUJ1dHRvbiIsIlNDVERNQ29udGVudCIsIlNDVERNU2VjdGlvbiIsIlNDVERNU2VjdGlvbkxhYmVsIiwiU0NURE1TZWN0aW9uVmFsdWUiLCJTQ1RETVVzZXJzTGlzdCIsIlNDVERNV29ya3NwYWNlVGFnIiwiU0NURE1CdXR0b25zQ29udGFpbmVyIiwiU0NCYWNrZHJvcElucHV0U2VsZWN0IiwiU0NDVUl0ZW1zTGlzdCIsIlNDQ1VTZWxlY3RJdGVtIiwiU0NXcmFwcGVyVGV4dEFyZWEiLCJTQ1RleHRBcmVhTGFiZWwiLCJTQ1RleHRBcmVhIiwiU0NXcmFwcGVyU2VsZWN0SWNvbiIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJGcmFnbWVudCIsIl9GcmFnbWVudCIsIlRlYW1EZXRhaWxzTW9kYWwiLCJfcmVmIiwidGVhbSIsImlzT3BlbiIsIm9uQ2xvc2UiLCJvbkVkaXQiLCJvbkNyZWF0ZSIsIl9yZWYkbW9kZSIsIm1vZGUiLCJ3b3Jrc3BhY2VzTGlzdCIsIl9yZWYkbWVtYmVyc0xpc3QiLCJtZW1iZXJzTGlzdCIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsImlzRWRpdE1vZGUiLCJzZXRJc0VkaXRNb2RlIiwiX3VzZVN0YXRlMyIsIm5hbWUiLCJ3b3Jrc3BhY2UiLCJtZW1iZXJzIiwiZGVzY3JpcHRpb24iLCJfdXNlU3RhdGU0IiwiZm9ybURhdGEiLCJzZXRGb3JtRGF0YSIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2Iiwic2hvd1NlbGVjdFdvcmtzcGFjZSIsInNldFNob3dTZWxlY3RXb3Jrc3BhY2UiLCJfdXNlVHJhbnNsYXRpb24iLCJ0IiwiaXNDcmVhdGVNb2RlIiwiaXNWaWV3TW9kZSIsInVzZXJzIiwibWFwIiwidXNlciIsImNvbmNhdCIsImZpcnN0TmFtZSIsImxhc3ROYW1lIiwiam9pbiIsImhhbmRsZUNsb3NlTW9kYWwiLCJoYW5kbGVPdmVybGF5Q2xpY2siLCJlIiwidGFyZ2V0IiwiY3VycmVudFRhcmdldCIsImZvcm1hdFVzZXJzIiwiaGFuZGxlRWRpdENsaWNrIiwiaGFuZGxlQ2FuY2VsRWRpdCIsImhhbmRsZVNhdmUiLCJoYW5kbGVJbnB1dENoYW5nZSIsImZpZWxkIiwidmFsdWUiLCJwcmV2IiwiX29iamVjdFNwcmVhZCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE1vZGFsVGl0bGUiLCJvbkNsaWNrIiwiY2hpbGRyZW4iLCJ3aWR0aCIsImhlaWdodCIsImNvbG9yIiwid2luZG93IiwiaGFzV29ya3NwYWNlc0ZlYXR1cmUiLCJ2YXJpYW50Iiwic2l6ZSIsImxhYmVsVGV4dCIsIndpdGhDb3VudGVyIiwicGxhY2Vob2xkZXIiLCJoYW5kbGVTZXRUZXh0IiwidGl0bGUiLCJlbmRJY29uIiwib3BlbiIsImhhbmRsZUNsaWNrQWN0aW9uIiwiaWQiLCJsZW5ndGgiLCJvbkNoYW5nZSIsImh0bWxGb3IiLCJzcGVsbENoZWNrIiwic3R5bGUiLCJiYWNrZ3JvdW5kQ29sb3IiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9UZWFtRGV0YWlsc01vZGFsL1RlYW1EZXRhaWxzTW9kYWwudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnXG5pbXBvcnQgeyBDVUJ1dHRvbiB9IGZyb20gJ0Bwcm9qZWN0Y29yL2J1dHRvbi9saWIvY29tcG9uZW50cy9DVUJ1dHRvbidcbmltcG9ydCB7IENyb3NzIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvQ3Jvc3MnXG5pbXBvcnQgeyBDaGV2cm9uRG93biB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0NoZXZyb25Eb3duJ1xuaW1wb3J0IHsgSW5wdXQgfSBmcm9tICdAcHJvamVjdGNvci9pbnB1dC9saWInXG5pbXBvcnQgeyBDVVNlbGVjdCB9IGZyb20gJ0Bwcm9qZWN0Y29yL3NlbGVjdG9yL2xpYi9jb21wb25lbnRzL0NVU2VsZWN0J1xuaW1wb3J0IHsgVGVhbURldGFpbHNNb2RhbFByb3BzIH0gZnJvbSAnLi9UZWFtRGV0YWlsc01vZGFsLnR5cGVzJ1xuaW1wb3J0IHsgTWVtYmVyc1NlbGVjdCB9IGZyb20gJy4vTWVtYmVyc1NlbGVjdCdcbmltcG9ydCB7XG4gIFNDVERNT3ZlcmxheSxcbiAgU0NURE1Db250YWluZXIsXG4gIFNDVERNSGVhZGVyLFxuICBTQ1RETVRpdGxlLFxuICBTQ1RETUNsb3NlQnV0dG9uLFxuICBTQ1RETUNvbnRlbnQsXG4gIFNDVERNU2VjdGlvbixcbiAgU0NURE1TZWN0aW9uTGFiZWwsXG4gIFNDVERNU2VjdGlvblZhbHVlLFxuICBTQ1RETVVzZXJzTGlzdCxcbiAgU0NURE1Xb3Jrc3BhY2VUYWcsXG4gIFNDVERNQnV0dG9uc0NvbnRhaW5lcixcbiAgU0NCYWNrZHJvcElucHV0U2VsZWN0LFxuICBTQ0NVSXRlbXNMaXN0LFxuICBTQ0NVU2VsZWN0SXRlbSxcbiAgU0NXcmFwcGVyVGV4dEFyZWEsXG4gIFNDVGV4dEFyZWFMYWJlbCxcbiAgU0NUZXh0QXJlYSxcbiAgU0NXcmFwcGVyU2VsZWN0SWNvbixcbn0gZnJvbSAnLi9UZWFtRGV0YWlsc01vZGFsLnN0eWxlcydcblxuZXhwb3J0IGNvbnN0IFRlYW1EZXRhaWxzTW9kYWwgPSAoe1xuICB0ZWFtLFxuICBpc09wZW4sXG4gIG9uQ2xvc2UsXG4gIG9uRWRpdCxcbiAgb25DcmVhdGUsXG4gIG1vZGUgPSAndmlldycsXG4gIHdvcmtzcGFjZXNMaXN0LFxuICBtZW1iZXJzTGlzdCA9IFtdLFxufTogVGVhbURldGFpbHNNb2RhbFByb3BzKSA9PiB7XG4gIGNvbnN0IFtpc0VkaXRNb2RlLCBzZXRJc0VkaXRNb2RlXSA9IHVzZVN0YXRlKG1vZGUgPT09ICdlZGl0JyB8fCBtb2RlID09PSAnY3JlYXRlJylcbiAgY29uc3QgW2Zvcm1EYXRhLCBzZXRGb3JtRGF0YV0gPSB1c2VTdGF0ZSh7XG4gICAgbmFtZTogJycsXG4gICAgd29ya3NwYWNlOiAnJyxcbiAgICBtZW1iZXJzOiAnJyxcbiAgICBkZXNjcmlwdGlvbjogJycsXG4gIH0pXG4gIGNvbnN0IFtzaG93U2VsZWN0V29ya3NwYWNlLCBzZXRTaG93U2VsZWN0V29ya3NwYWNlXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCd0ZWFtcycpXG5cbiAgY29uc3QgaXNDcmVhdGVNb2RlID0gbW9kZSA9PT0gJ2NyZWF0ZSdcbiAgY29uc3QgaXNWaWV3TW9kZSA9IG1vZGUgPT09ICd2aWV3JyAmJiAhaXNFZGl0TW9kZVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHRlYW0gJiYgIWlzQ3JlYXRlTW9kZSkge1xuICAgICAgc2V0Rm9ybURhdGEoe1xuICAgICAgICBuYW1lOiB0ZWFtLm5hbWUsXG4gICAgICAgIHdvcmtzcGFjZTogdGVhbS53b3Jrc3BhY2UsXG4gICAgICAgIG1lbWJlcnM6IHRlYW0udXNlcnMubWFwKHVzZXIgPT4gYCR7dXNlci5maXJzdE5hbWV9ICR7dXNlci5sYXN0TmFtZX1gKS5qb2luKCcgLSAnKSxcbiAgICAgICAgZGVzY3JpcHRpb246IHRlYW0uZGVzY3JpcHRpb24sXG4gICAgICB9KVxuICAgIH0gZWxzZSBpZiAoaXNDcmVhdGVNb2RlKSB7XG4gICAgICAvLyBSZXNldGVhciBmb3JtdWxhcmlvIHBhcmEgY3JlYXJcbiAgICAgIHNldEZvcm1EYXRhKHtcbiAgICAgICAgbmFtZTogJycsXG4gICAgICAgIHdvcmtzcGFjZTogJycsXG4gICAgICAgIG1lbWJlcnM6ICcnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJycsXG4gICAgICB9KVxuICAgIH1cbiAgfSwgW3RlYW0sIGlzQ3JlYXRlTW9kZV0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyBTaSBjYW1iaWEgZWwgbW9kbywgYWp1c3RhciBpc0VkaXRNb2RlXG4gICAgc2V0SXNFZGl0TW9kZShtb2RlID09PSAnZWRpdCcgfHwgbW9kZSA9PT0gJ2NyZWF0ZScpXG4gIH0sIFttb2RlXSlcblxuICBpZiAoIWlzT3BlbikgcmV0dXJuIG51bGxcbiAgaWYgKGlzVmlld01vZGUgJiYgIXRlYW0pIHJldHVybiBudWxsXG5cbiAgY29uc3QgaGFuZGxlQ2xvc2VNb2RhbCA9ICgpID0+IHtcbiAgICBzZXRJc0VkaXRNb2RlKGZhbHNlKVxuICAgIHNldEZvcm1EYXRhKHtcbiAgICAgIG5hbWU6ICcnLFxuICAgICAgd29ya3NwYWNlOiAnJyxcbiAgICAgIG1lbWJlcnM6ICcnLFxuICAgICAgZGVzY3JpcHRpb246ICcnLFxuICAgIH0pXG4gICAgb25DbG9zZSgpXG4gIH1cblxuICBjb25zdCBoYW5kbGVPdmVybGF5Q2xpY2sgPSAoZTogUmVhY3QuTW91c2VFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICBpZiAoZS50YXJnZXQgPT09IGUuY3VycmVudFRhcmdldCAmJiAhaXNFZGl0TW9kZSkge1xuICAgICAgaGFuZGxlQ2xvc2VNb2RhbCgpXG4gICAgfVxuICB9XG5cbiAgY29uc3QgZm9ybWF0VXNlcnMgPSAoKSA9PiB7XG4gICAgaWYgKCF0ZWFtKSByZXR1cm4gJydcbiAgICByZXR1cm4gdGVhbS51c2Vycy5tYXAodXNlciA9PiBgJHt1c2VyLmZpcnN0TmFtZX0gJHt1c2VyLmxhc3ROYW1lfWApLmpvaW4oJyAtICcpXG4gIH1cblxuICBjb25zdCBoYW5kbGVFZGl0Q2xpY2sgPSAoKSA9PiB7XG4gICAgc2V0SXNFZGl0TW9kZSh0cnVlKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlQ2FuY2VsRWRpdCA9ICgpID0+IHtcbiAgICBpZiAoaXNDcmVhdGVNb2RlKSB7XG4gICAgICBoYW5kbGVDbG9zZU1vZGFsKClcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0SXNFZGl0TW9kZShmYWxzZSlcbiAgICAgIC8vIFJlc3RhdXJhciB2YWxvcmVzIG9yaWdpbmFsZXNcbiAgICAgIGlmICh0ZWFtKSB7XG4gICAgICAgIHNldEZvcm1EYXRhKHtcbiAgICAgICAgICBuYW1lOiB0ZWFtLm5hbWUsXG4gICAgICAgICAgd29ya3NwYWNlOiB0ZWFtLndvcmtzcGFjZSxcbiAgICAgICAgICBtZW1iZXJzOiB0ZWFtLnVzZXJzLm1hcCh1c2VyID0+IGAke3VzZXIuZmlyc3ROYW1lfSAke3VzZXIubGFzdE5hbWV9YCkuam9pbignIC0gJyksXG4gICAgICAgICAgZGVzY3JpcHRpb246IHRlYW0uZGVzY3JpcHRpb24sXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlU2F2ZSA9ICgpID0+IHtcbiAgICBpZiAoaXNDcmVhdGVNb2RlICYmIG9uQ3JlYXRlKSB7XG4gICAgICBvbkNyZWF0ZSgpXG4gICAgfSBlbHNlIGlmIChvbkVkaXQpIHtcbiAgICAgIG9uRWRpdCgpXG4gICAgfVxuICAgIHNldElzRWRpdE1vZGUoZmFsc2UpXG4gICAgaWYgKGlzQ3JlYXRlTW9kZSkge1xuICAgICAgaGFuZGxlQ2xvc2VNb2RhbCgpXG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlSW5wdXRDaGFuZ2UgPSAoZmllbGQ6IHN0cmluZywgdmFsdWU6IHN0cmluZykgPT4ge1xuICAgIHNldEZvcm1EYXRhKHByZXYgPT4gKHtcbiAgICAgIC4uLnByZXYsXG4gICAgICBbZmllbGRdOiB2YWx1ZSxcbiAgICB9KSlcbiAgfVxuXG4gIGNvbnN0IGdldE1vZGFsVGl0bGUgPSAoKSA9PiB7XG4gICAgaWYgKGlzQ3JlYXRlTW9kZSkgcmV0dXJuIHQoJ3RlYW1zLm1vZGFsLmNyZWF0ZVRpdGxlJylcbiAgICBpZiAoaXNFZGl0TW9kZSkgcmV0dXJuIHQoJ3RlYW1zLm1vZGFsLmVkaXRUaXRsZScpXG4gICAgcmV0dXJuIHRlYW0/Lm5hbWUgfHwgJydcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFNDVERNT3ZlcmxheSBvbkNsaWNrPXtoYW5kbGVPdmVybGF5Q2xpY2t9PlxuICAgICAgPFNDVERNQ29udGFpbmVyPlxuICAgICAgICA8U0NURE1IZWFkZXI+XG4gICAgICAgICAgPFNDVERNVGl0bGU+e2dldE1vZGFsVGl0bGUoKX08L1NDVERNVGl0bGU+XG4gICAgICAgICAgPFNDVERNQ2xvc2VCdXR0b24gb25DbGljaz17aGFuZGxlQ2xvc2VNb2RhbH0+XG4gICAgICAgICAgICA8Q3Jvc3Mgd2lkdGg9ezIwfSBoZWlnaHQ9ezIwfSBjb2xvcj1cIiNBNEFEQjVcIiAvPlxuICAgICAgICAgIDwvU0NURE1DbG9zZUJ1dHRvbj5cbiAgICAgICAgPC9TQ1RETUhlYWRlcj5cblxuICAgICAgICB7aXNWaWV3TW9kZSAmJiB0ZWFtID8gKFxuICAgICAgICAgIDw+XG4gICAgICAgICAgICA8U0NURE1Db250ZW50PlxuICAgICAgICAgICAgICA8U0NURE1TZWN0aW9uPlxuICAgICAgICAgICAgICAgIDxTQ1RETVNlY3Rpb25MYWJlbD57dCgndGVhbXMubW9kYWwudXNlcnNMYWJlbCcpfTwvU0NURE1TZWN0aW9uTGFiZWw+XG4gICAgICAgICAgICAgICAgPFNDVERNU2VjdGlvblZhbHVlPlxuICAgICAgICAgICAgICAgICAgPFNDVERNVXNlcnNMaXN0Pntmb3JtYXRVc2VycygpfTwvU0NURE1Vc2Vyc0xpc3Q+XG4gICAgICAgICAgICAgICAgPC9TQ1RETVNlY3Rpb25WYWx1ZT5cbiAgICAgICAgICAgICAgPC9TQ1RETVNlY3Rpb24+XG5cbiAgICAgICAgICAgICAge3dpbmRvdy5oYXNXb3Jrc3BhY2VzRmVhdHVyZSAmJiAoXG4gICAgICAgICAgICAgICAgPFNDVERNU2VjdGlvbj5cbiAgICAgICAgICAgICAgICAgIDxTQ1RETVNlY3Rpb25MYWJlbD57dCgndGVhbXMubW9kYWwud29ya3NwYWNlc0xhYmVsJyl9PC9TQ1RETVNlY3Rpb25MYWJlbD5cbiAgICAgICAgICAgICAgICAgIDxTQ1RETVNlY3Rpb25WYWx1ZT5cbiAgICAgICAgICAgICAgICAgICAgPFNDVERNV29ya3NwYWNlVGFnPnt0ZWFtLndvcmtzcGFjZX08L1NDVERNV29ya3NwYWNlVGFnPlxuICAgICAgICAgICAgICAgICAgPC9TQ1RETVNlY3Rpb25WYWx1ZT5cbiAgICAgICAgICAgICAgICA8L1NDVERNU2VjdGlvbj5cbiAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICB7IXdpbmRvdy5oYXNXb3Jrc3BhY2VzRmVhdHVyZSAmJiAoXG4gICAgICAgICAgICAgICAgPFNDVERNU2VjdGlvbj5cbiAgICAgICAgICAgICAgICAgIDxTQ1RETVNlY3Rpb25MYWJlbD57dCgndGVhbXMubW9kYWwuZGVzY3JpcHRpb25MYWJlbCcpfTwvU0NURE1TZWN0aW9uTGFiZWw+XG4gICAgICAgICAgICAgICAgICA8U0NURE1TZWN0aW9uVmFsdWU+e3RlYW0uZGVzY3JpcHRpb259PC9TQ1RETVNlY3Rpb25WYWx1ZT5cbiAgICAgICAgICAgICAgICA8L1NDVERNU2VjdGlvbj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvU0NURE1Db250ZW50PlxuXG4gICAgICAgICAgICA8U0NURE1CdXR0b25zQ29udGFpbmVyPlxuICAgICAgICAgICAgICA8Q1VCdXR0b24gdmFyaWFudD1cImNvbnRhaW5lZFwiIHNpemU9XCJtZWRpdW1cIiBvbkNsaWNrPXtoYW5kbGVFZGl0Q2xpY2t9PlxuICAgICAgICAgICAgICAgIHt0KCd0ZWFtcy5tb2RhbC5lZGl0QnV0dG9uJyl9XG4gICAgICAgICAgICAgIDwvQ1VCdXR0b24+XG4gICAgICAgICAgICAgIDxDVUJ1dHRvbiB2YXJpYW50PVwidGV4dFwiIHNpemU9XCJtZWRpdW1cIiBvbkNsaWNrPXtoYW5kbGVDbG9zZU1vZGFsfT5cbiAgICAgICAgICAgICAgICB7dCgndGVhbXMuY2FuY2VsJyl9XG4gICAgICAgICAgICAgIDwvQ1VCdXR0b24+XG4gICAgICAgICAgICA8L1NDVERNQnV0dG9uc0NvbnRhaW5lcj5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPFNDVERNQ29udGVudD5cbiAgICAgICAgICAgICAgPFNDVERNU2VjdGlvbj5cbiAgICAgICAgICAgICAgICA8SW5wdXRcbiAgICAgICAgICAgICAgICAgIGxhYmVsVGV4dD17dCgndGVhbXMubW9kYWwubmFtZUxhYmVsJyl9XG4gICAgICAgICAgICAgICAgICB3aXRoQ291bnRlcj17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICB2YWx1ZT17Zm9ybURhdGEubmFtZX1cbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXt0KCd0ZWFtcy5tb2RhbC5uYW1lUGxhY2Vob2xkZXInKX1cbiAgICAgICAgICAgICAgICAgIGhhbmRsZVNldFRleHQ9e3ZhbHVlID0+IGhhbmRsZUlucHV0Q2hhbmdlKCduYW1lJywgdmFsdWUpfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvU0NURE1TZWN0aW9uPlxuXG4gICAgICAgICAgICAgIHt3aW5kb3cuaGFzV29ya3NwYWNlc0ZlYXR1cmUgJiYgKFxuICAgICAgICAgICAgICAgIDxTQ1RETVNlY3Rpb24+XG4gICAgICAgICAgICAgICAgICA8Q1VTZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9e3QoJ3RlYW1zLm1vZGFsLndvcmtzcGFjZVRpdGxlJyl9XG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXt0KCd0ZWFtcy5tb2RhbC53b3Jrc3BhY2VQbGFjZWhvbGRlcicpfVxuICAgICAgICAgICAgICAgICAgICBlbmRJY29uPXtcbiAgICAgICAgICAgICAgICAgICAgICA8U0NXcmFwcGVyU2VsZWN0SWNvbiBpc09wZW49e3Nob3dTZWxlY3RXb3Jrc3BhY2V9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPENoZXZyb25Eb3duIHdpZHRoPVwiMTZweFwiIGhlaWdodD1cIjE2cHhcIiBjb2xvcj1cIiMyMDIwMUZcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvU0NXcmFwcGVyU2VsZWN0SWNvbj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT17Zm9ybURhdGEud29ya3NwYWNlfVxuICAgICAgICAgICAgICAgICAgICBvcGVuPXtzaG93U2VsZWN0V29ya3NwYWNlfVxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVDbGlja0FjdGlvbj17KCkgPT4gc2V0U2hvd1NlbGVjdFdvcmtzcGFjZSghc2hvd1NlbGVjdFdvcmtzcGFjZSl9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxTQ0JhY2tkcm9wSW5wdXRTZWxlY3Qgb25DbGljaz17KCkgPT4gc2V0U2hvd1NlbGVjdFdvcmtzcGFjZShmYWxzZSl9IC8+XG4gICAgICAgICAgICAgICAgICAgIDxTQ0NVSXRlbXNMaXN0PlxuICAgICAgICAgICAgICAgICAgICAgIHt3b3Jrc3BhY2VzTGlzdC5tYXAod29ya3NwYWNlID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxTQ0NVU2VsZWN0SXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e3dvcmtzcGFjZS5pZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlSW5wdXRDaGFuZ2UoJ3dvcmtzcGFjZScsIHdvcmtzcGFjZS5uYW1lKX1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3dvcmtzcGFjZS5uYW1lfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9TQ0NVU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgPC9TQ0NVSXRlbXNMaXN0PlxuICAgICAgICAgICAgICAgICAgPC9DVVNlbGVjdD5cbiAgICAgICAgICAgICAgICA8L1NDVERNU2VjdGlvbj5cbiAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICA8U0NURE1TZWN0aW9uPlxuICAgICAgICAgICAgICAgIDxNZW1iZXJzU2VsZWN0XG4gICAgICAgICAgICAgICAgICB2YWx1ZT17Zm9ybURhdGEubWVtYmVyc31cbiAgICAgICAgICAgICAgICAgIG1lbWJlcnNMaXN0PXttZW1iZXJzTGlzdC5sZW5ndGggPiAwID8gbWVtYmVyc0xpc3QgOiB0ZWFtPy51c2VycyB8fCBbXX1cbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXt2YWx1ZSA9PiBoYW5kbGVJbnB1dENoYW5nZSgnbWVtYmVycycsIHZhbHVlKX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L1NDVERNU2VjdGlvbj5cblxuICAgICAgICAgICAgICB7IXdpbmRvdy5oYXNXb3Jrc3BhY2VzRmVhdHVyZSAmJiAoXG4gICAgICAgICAgICAgICAgPFNDVERNU2VjdGlvbj5cbiAgICAgICAgICAgICAgICAgIDxTQ1dyYXBwZXJUZXh0QXJlYT5cbiAgICAgICAgICAgICAgICAgICAgPFNDVGV4dEFyZWFMYWJlbCBodG1sRm9yPVwibXlUZXh0YXJlYVwiPnt0KCd0ZWFtcy5tb2RhbC5kZXNjcmlwdGlvbkxhYmVsJyl9PC9TQ1RleHRBcmVhTGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxTQ1RleHRBcmVhXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2Zvcm1EYXRhLmRlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtlID0+IGhhbmRsZUlucHV0Q2hhbmdlKCdkZXNjcmlwdGlvbicsIGUudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICAgICAgICAgICAgICBzcGVsbENoZWNrPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17dCgndGVhbXMubW9kYWwuZGVzY3JpcHRpb25QbGFjZWhvbGRlcicpfVxuICAgICAgICAgICAgICAgICAgICAgIGlkPVwibXlUZXh0YXJlYVwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8L1NDV3JhcHBlclRleHRBcmVhPlxuICAgICAgICAgICAgICAgIDwvU0NURE1TZWN0aW9uPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9TQ1RETUNvbnRlbnQ+XG5cbiAgICAgICAgICAgIDxTQ1RETUJ1dHRvbnNDb250YWluZXI+XG4gICAgICAgICAgICAgIDxDVUJ1dHRvbiB2YXJpYW50PVwidGV4dFwiIHNpemU9XCJtZWRpdW1cIiBvbkNsaWNrPXtoYW5kbGVDYW5jZWxFZGl0fT5cbiAgICAgICAgICAgICAgICB7dCgndGVhbXMuY2FuY2VsJyl9XG4gICAgICAgICAgICAgIDwvQ1VCdXR0b24+XG4gICAgICAgICAgICAgIDxDVUJ1dHRvbiB2YXJpYW50PVwiY29udGFpbmVkXCIgc2l6ZT1cIm1lZGl1bVwiIG9uQ2xpY2s9e2hhbmRsZVNhdmV9IHN0eWxlPXt7IGJhY2tncm91bmRDb2xvcjogJyM2NjY2NjYnIH19PlxuICAgICAgICAgICAgICAgIHtpc0NyZWF0ZU1vZGUgPyB0KCd0ZWFtcy5jcmVhdGVUZWFtJykgOiB0KCd0ZWFtcy5zYXZlQ2hhbmdlcycpfVxuICAgICAgICAgICAgICA8L0NVQnV0dG9uPlxuICAgICAgICAgICAgPC9TQ1RETUJ1dHRvbnNDb250YWluZXI+XG4gICAgICAgICAgPC8+XG4gICAgICAgICl9XG4gICAgICA8L1NDVERNQ29udGFpbmVyPlxuICAgIDwvU0NURE1PdmVybGF5PlxuICApXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPQSxLQUFLLElBQUlDLFFBQVEsRUFBRUMsU0FBUyxRQUFRLE9BQU87QUFDbEQsU0FBU0MsY0FBYyxRQUFRLGVBQWU7QUFDOUMsU0FBU0MsUUFBUSxRQUFRLDRDQUE0QztBQUNyRSxTQUFTQyxLQUFLLFFBQVEsd0NBQXdDO0FBQzlELFNBQVNDLFdBQVcsUUFBUSw4Q0FBOEM7QUFDMUUsU0FBU0MsS0FBSyxRQUFRLHVCQUF1QjtBQUM3QyxTQUFTQyxRQUFRLFFBQVEsOENBQThDO0FBRXZFLFNBQVNDLGFBQWEsUUFBUSxpQkFBaUI7QUFDL0MsU0FDRUMsWUFBWSxFQUNaQyxjQUFjLEVBQ2RDLFdBQVcsRUFDWEMsVUFBVSxFQUNWQyxnQkFBZ0IsRUFDaEJDLFlBQVksRUFDWkMsWUFBWSxFQUNaQyxpQkFBaUIsRUFDakJDLGlCQUFpQixFQUNqQkMsY0FBYyxFQUNkQyxpQkFBaUIsRUFDakJDLHFCQUFxQixFQUNyQkMscUJBQXFCLEVBQ3JCQyxhQUFhLEVBQ2JDLGNBQWMsRUFDZEMsaUJBQWlCLEVBQ2pCQyxlQUFlLEVBQ2ZDLFVBQVUsRUFDVkMsbUJBQW1CLFFBQ2QsMkJBQTJCO0FBQUEsU0FBQUMsR0FBQSxJQUFBQyxJQUFBLEVBQUFDLElBQUEsSUFBQUMsS0FBQSxFQUFBQyxRQUFBLElBQUFDLFNBQUE7QUFFbEMsT0FBTyxJQUFNQyxnQkFBZ0IsR0FBRyxTQUFuQkEsZ0JBQWdCQSxDQUFBQyxJQUFBLEVBU0E7RUFBQSxJQVIzQkMsSUFBSSxHQUFBRCxJQUFBLENBQUpDLElBQUk7SUFDSkMsTUFBTSxHQUFBRixJQUFBLENBQU5FLE1BQU07SUFDTkMsT0FBTyxHQUFBSCxJQUFBLENBQVBHLE9BQU87SUFDUEMsTUFBTSxHQUFBSixJQUFBLENBQU5JLE1BQU07SUFDTkMsUUFBUSxHQUFBTCxJQUFBLENBQVJLLFFBQVE7SUFBQUMsU0FBQSxHQUFBTixJQUFBLENBQ1JPLElBQUk7SUFBSkEsSUFBSSxHQUFBRCxTQUFBLGNBQUcsTUFBTSxHQUFBQSxTQUFBO0lBQ2JFLGNBQWMsR0FBQVIsSUFBQSxDQUFkUSxjQUFjO0lBQUFDLGdCQUFBLEdBQUFULElBQUEsQ0FDZFUsV0FBVztJQUFYQSxXQUFXLEdBQUFELGdCQUFBLGNBQUcsRUFBRSxHQUFBQSxnQkFBQTtFQUVoQixJQUFBRSxTQUFBLEdBQW9DOUMsUUFBUSxDQUFDMEMsSUFBSSxLQUFLLE1BQU0sSUFBSUEsSUFBSSxLQUFLLFFBQVEsQ0FBQztJQUFBSyxVQUFBLEdBQUFDLGNBQUEsQ0FBQUYsU0FBQTtJQUEzRUcsVUFBVSxHQUFBRixVQUFBO0lBQUVHLGFBQWEsR0FBQUgsVUFBQTtFQUNoQyxJQUFBSSxVQUFBLEdBQWdDbkQsUUFBUSxDQUFDO01BQ3ZDb0QsSUFBSSxFQUFFLEVBQUU7TUFDUkMsU0FBUyxFQUFFLEVBQUU7TUFDYkMsT0FBTyxFQUFFLEVBQUU7TUFDWEMsV0FBVyxFQUFFO0lBQ2YsQ0FBQyxDQUFDO0lBQUFDLFVBQUEsR0FBQVIsY0FBQSxDQUFBRyxVQUFBO0lBTEtNLFFBQVEsR0FBQUQsVUFBQTtJQUFFRSxXQUFXLEdBQUFGLFVBQUE7RUFNNUIsSUFBQUcsVUFBQSxHQUFzRDNELFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFBQTRELFVBQUEsR0FBQVosY0FBQSxDQUFBVyxVQUFBO0lBQTlERSxtQkFBbUIsR0FBQUQsVUFBQTtJQUFFRSxzQkFBc0IsR0FBQUYsVUFBQTtFQUNsRCxJQUFBRyxlQUFBLEdBQWM3RCxjQUFjLENBQUMsT0FBTyxDQUFDO0lBQTdCOEQsQ0FBQyxHQUFBRCxlQUFBLENBQURDLENBQUM7RUFFVCxJQUFNQyxZQUFZLEdBQUd2QixJQUFJLEtBQUssUUFBUTtFQUN0QyxJQUFNd0IsVUFBVSxHQUFHeEIsSUFBSSxLQUFLLE1BQU0sSUFBSSxDQUFDTyxVQUFVO0VBRWpEaEQsU0FBUyxDQUFDLFlBQU07SUFDZCxJQUFJbUMsSUFBSSxJQUFJLENBQUM2QixZQUFZLEVBQUU7TUFDekJQLFdBQVcsQ0FBQztRQUNWTixJQUFJLEVBQUVoQixJQUFJLENBQUNnQixJQUFJO1FBQ2ZDLFNBQVMsRUFBRWpCLElBQUksQ0FBQ2lCLFNBQVM7UUFDekJDLE9BQU8sRUFBRWxCLElBQUksQ0FBQytCLEtBQUssQ0FBQ0MsR0FBRyxDQUFDLFVBQUFDLElBQUk7VUFBQSxVQUFBQyxNQUFBLENBQU9ELElBQUksQ0FBQ0UsU0FBUyxPQUFBRCxNQUFBLENBQUlELElBQUksQ0FBQ0csUUFBUTtRQUFBLENBQUUsQ0FBQyxDQUFDQyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ2pGbEIsV0FBVyxFQUFFbkIsSUFBSSxDQUFDbUI7TUFDcEIsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxNQUFNLElBQUlVLFlBQVksRUFBRTtNQUN2QjtNQUNBUCxXQUFXLENBQUM7UUFDVk4sSUFBSSxFQUFFLEVBQUU7UUFDUkMsU0FBUyxFQUFFLEVBQUU7UUFDYkMsT0FBTyxFQUFFLEVBQUU7UUFDWEMsV0FBVyxFQUFFO01BQ2YsQ0FBQyxDQUFDO0lBQ0o7RUFDRixDQUFDLEVBQUUsQ0FBQ25CLElBQUksRUFBRTZCLFlBQVksQ0FBQyxDQUFDO0VBRXhCaEUsU0FBUyxDQUFDLFlBQU07SUFDZDtJQUNBaUQsYUFBYSxDQUFDUixJQUFJLEtBQUssTUFBTSxJQUFJQSxJQUFJLEtBQUssUUFBUSxDQUFDO0VBQ3JELENBQUMsRUFBRSxDQUFDQSxJQUFJLENBQUMsQ0FBQztFQUVWLElBQUksQ0FBQ0wsTUFBTSxFQUFFLE9BQU8sSUFBSTtFQUN4QixJQUFJNkIsVUFBVSxJQUFJLENBQUM5QixJQUFJLEVBQUUsT0FBTyxJQUFJO0VBRXBDLElBQU1zQyxnQkFBZ0IsR0FBRyxTQUFuQkEsZ0JBQWdCQSxDQUFBLEVBQVM7SUFDN0J4QixhQUFhLENBQUMsS0FBSyxDQUFDO0lBQ3BCUSxXQUFXLENBQUM7TUFDVk4sSUFBSSxFQUFFLEVBQUU7TUFDUkMsU0FBUyxFQUFFLEVBQUU7TUFDYkMsT0FBTyxFQUFFLEVBQUU7TUFDWEMsV0FBVyxFQUFFO0lBQ2YsQ0FBQyxDQUFDO0lBQ0ZqQixPQUFPLENBQUMsQ0FBQztFQUNYLENBQUM7RUFFRCxJQUFNcUMsa0JBQWtCLEdBQUcsU0FBckJBLGtCQUFrQkEsQ0FBSUMsQ0FBbUMsRUFBSztJQUNsRSxJQUFJQSxDQUFDLENBQUNDLE1BQU0sS0FBS0QsQ0FBQyxDQUFDRSxhQUFhLElBQUksQ0FBQzdCLFVBQVUsRUFBRTtNQUMvQ3lCLGdCQUFnQixDQUFDLENBQUM7SUFDcEI7RUFDRixDQUFDO0VBRUQsSUFBTUssV0FBVyxHQUFHLFNBQWRBLFdBQVdBLENBQUEsRUFBUztJQUN4QixJQUFJLENBQUMzQyxJQUFJLEVBQUUsT0FBTyxFQUFFO0lBQ3BCLE9BQU9BLElBQUksQ0FBQytCLEtBQUssQ0FBQ0MsR0FBRyxDQUFDLFVBQUFDLElBQUk7TUFBQSxVQUFBQyxNQUFBLENBQU9ELElBQUksQ0FBQ0UsU0FBUyxPQUFBRCxNQUFBLENBQUlELElBQUksQ0FBQ0csUUFBUTtJQUFBLENBQUUsQ0FBQyxDQUFDQyxJQUFJLENBQUMsS0FBSyxDQUFDO0VBQ2pGLENBQUM7RUFFRCxJQUFNTyxlQUFlLEdBQUcsU0FBbEJBLGVBQWVBLENBQUEsRUFBUztJQUM1QjlCLGFBQWEsQ0FBQyxJQUFJLENBQUM7RUFDckIsQ0FBQztFQUVELElBQU0rQixnQkFBZ0IsR0FBRyxTQUFuQkEsZ0JBQWdCQSxDQUFBLEVBQVM7SUFDN0IsSUFBSWhCLFlBQVksRUFBRTtNQUNoQlMsZ0JBQWdCLENBQUMsQ0FBQztJQUNwQixDQUFDLE1BQU07TUFDTHhCLGFBQWEsQ0FBQyxLQUFLLENBQUM7TUFDcEI7TUFDQSxJQUFJZCxJQUFJLEVBQUU7UUFDUnNCLFdBQVcsQ0FBQztVQUNWTixJQUFJLEVBQUVoQixJQUFJLENBQUNnQixJQUFJO1VBQ2ZDLFNBQVMsRUFBRWpCLElBQUksQ0FBQ2lCLFNBQVM7VUFDekJDLE9BQU8sRUFBRWxCLElBQUksQ0FBQytCLEtBQUssQ0FBQ0MsR0FBRyxDQUFDLFVBQUFDLElBQUk7WUFBQSxVQUFBQyxNQUFBLENBQU9ELElBQUksQ0FBQ0UsU0FBUyxPQUFBRCxNQUFBLENBQUlELElBQUksQ0FBQ0csUUFBUTtVQUFBLENBQUUsQ0FBQyxDQUFDQyxJQUFJLENBQUMsS0FBSyxDQUFDO1VBQ2pGbEIsV0FBVyxFQUFFbkIsSUFBSSxDQUFDbUI7UUFDcEIsQ0FBQyxDQUFDO01BQ0o7SUFDRjtFQUNGLENBQUM7RUFFRCxJQUFNMkIsVUFBVSxHQUFHLFNBQWJBLFVBQVVBLENBQUEsRUFBUztJQUN2QixJQUFJakIsWUFBWSxJQUFJekIsUUFBUSxFQUFFO01BQzVCQSxRQUFRLENBQUMsQ0FBQztJQUNaLENBQUMsTUFBTSxJQUFJRCxNQUFNLEVBQUU7TUFDakJBLE1BQU0sQ0FBQyxDQUFDO0lBQ1Y7SUFDQVcsYUFBYSxDQUFDLEtBQUssQ0FBQztJQUNwQixJQUFJZSxZQUFZLEVBQUU7TUFDaEJTLGdCQUFnQixDQUFDLENBQUM7SUFDcEI7RUFDRixDQUFDO0VBRUQsSUFBTVMsaUJBQWlCLEdBQUcsU0FBcEJBLGlCQUFpQkEsQ0FBSUMsS0FBYSxFQUFFQyxLQUFhLEVBQUs7SUFDMUQzQixXQUFXLENBQUMsVUFBQTRCLElBQUk7TUFBQSxPQUFBQyxhQUFBLENBQUFBLGFBQUEsS0FDWEQsSUFBSSxPQUFBRSxlQUFBLEtBQ05KLEtBQUssRUFBR0MsS0FBSztJQUFBLENBQ2QsQ0FBQztFQUNMLENBQUM7RUFFRCxJQUFNSSxhQUFhLEdBQUcsU0FBaEJBLGFBQWFBLENBQUEsRUFBUztJQUMxQixJQUFJeEIsWUFBWSxFQUFFLE9BQU9ELENBQUMsQ0FBQyx5QkFBeUIsQ0FBQztJQUNyRCxJQUFJZixVQUFVLEVBQUUsT0FBT2UsQ0FBQyxDQUFDLHVCQUF1QixDQUFDO0lBQ2pELE9BQU8sQ0FBQTVCLElBQUksYUFBSkEsSUFBSSx1QkFBSkEsSUFBSSxDQUFFZ0IsSUFBSSxLQUFJLEVBQUU7RUFDekIsQ0FBQztFQUVELG9CQUNFdkIsSUFBQSxDQUFDcEIsWUFBWTtJQUFDaUYsT0FBTyxFQUFFZixrQkFBbUI7SUFBQWdCLFFBQUEsZUFDeEM1RCxLQUFBLENBQUNyQixjQUFjO01BQUFpRixRQUFBLGdCQUNiNUQsS0FBQSxDQUFDcEIsV0FBVztRQUFBZ0YsUUFBQSxnQkFDVjlELElBQUEsQ0FBQ2pCLFVBQVU7VUFBQStFLFFBQUEsRUFBRUYsYUFBYSxDQUFDO1FBQUMsQ0FBYSxDQUFDLGVBQzFDNUQsSUFBQSxDQUFDaEIsZ0JBQWdCO1VBQUM2RSxPQUFPLEVBQUVoQixnQkFBaUI7VUFBQWlCLFFBQUEsZUFDMUM5RCxJQUFBLENBQUN6QixLQUFLO1lBQUN3RixLQUFLLEVBQUUsRUFBRztZQUFDQyxNQUFNLEVBQUUsRUFBRztZQUFDQyxLQUFLLEVBQUM7VUFBUyxDQUFFO1FBQUMsQ0FDaEMsQ0FBQztNQUFBLENBQ1IsQ0FBQyxFQUViNUIsVUFBVSxJQUFJOUIsSUFBSSxnQkFDakJMLEtBQUEsQ0FBQUUsU0FBQTtRQUFBMEQsUUFBQSxnQkFDRTVELEtBQUEsQ0FBQ2pCLFlBQVk7VUFBQTZFLFFBQUEsZ0JBQ1g1RCxLQUFBLENBQUNoQixZQUFZO1lBQUE0RSxRQUFBLGdCQUNYOUQsSUFBQSxDQUFDYixpQkFBaUI7Y0FBQTJFLFFBQUEsRUFBRTNCLENBQUMsQ0FBQyx3QkFBd0I7WUFBQyxDQUFvQixDQUFDLGVBQ3BFbkMsSUFBQSxDQUFDWixpQkFBaUI7Y0FBQTBFLFFBQUEsZUFDaEI5RCxJQUFBLENBQUNYLGNBQWM7Z0JBQUF5RSxRQUFBLEVBQUVaLFdBQVcsQ0FBQztjQUFDLENBQWlCO1lBQUMsQ0FDL0IsQ0FBQztVQUFBLENBQ1IsQ0FBQyxFQUVkZ0IsTUFBTSxDQUFDQyxvQkFBb0IsaUJBQzFCakUsS0FBQSxDQUFDaEIsWUFBWTtZQUFBNEUsUUFBQSxnQkFDWDlELElBQUEsQ0FBQ2IsaUJBQWlCO2NBQUEyRSxRQUFBLEVBQUUzQixDQUFDLENBQUMsNkJBQTZCO1lBQUMsQ0FBb0IsQ0FBQyxlQUN6RW5DLElBQUEsQ0FBQ1osaUJBQWlCO2NBQUEwRSxRQUFBLGVBQ2hCOUQsSUFBQSxDQUFDVixpQkFBaUI7Z0JBQUF3RSxRQUFBLEVBQUV2RCxJQUFJLENBQUNpQjtjQUFTLENBQW9CO1lBQUMsQ0FDdEMsQ0FBQztVQUFBLENBQ1IsQ0FDZixFQUVBLENBQUMwQyxNQUFNLENBQUNDLG9CQUFvQixpQkFDM0JqRSxLQUFBLENBQUNoQixZQUFZO1lBQUE0RSxRQUFBLGdCQUNYOUQsSUFBQSxDQUFDYixpQkFBaUI7Y0FBQTJFLFFBQUEsRUFBRTNCLENBQUMsQ0FBQyw4QkFBOEI7WUFBQyxDQUFvQixDQUFDLGVBQzFFbkMsSUFBQSxDQUFDWixpQkFBaUI7Y0FBQTBFLFFBQUEsRUFBRXZELElBQUksQ0FBQ21CO1lBQVcsQ0FBb0IsQ0FBQztVQUFBLENBQzdDLENBQ2Y7UUFBQSxDQUNXLENBQUMsZUFFZnhCLEtBQUEsQ0FBQ1gscUJBQXFCO1VBQUF1RSxRQUFBLGdCQUNwQjlELElBQUEsQ0FBQzFCLFFBQVE7WUFBQzhGLE9BQU8sRUFBQyxXQUFXO1lBQUNDLElBQUksRUFBQyxRQUFRO1lBQUNSLE9BQU8sRUFBRVYsZUFBZ0I7WUFBQVcsUUFBQSxFQUNsRTNCLENBQUMsQ0FBQyx3QkFBd0I7VUFBQyxDQUNwQixDQUFDLGVBQ1huQyxJQUFBLENBQUMxQixRQUFRO1lBQUM4RixPQUFPLEVBQUMsTUFBTTtZQUFDQyxJQUFJLEVBQUMsUUFBUTtZQUFDUixPQUFPLEVBQUVoQixnQkFBaUI7WUFBQWlCLFFBQUEsRUFDOUQzQixDQUFDLENBQUMsY0FBYztVQUFDLENBQ1YsQ0FBQztRQUFBLENBQ1UsQ0FBQztNQUFBLENBQ3hCLENBQUMsZ0JBRUhqQyxLQUFBLENBQUFFLFNBQUE7UUFBQTBELFFBQUEsZ0JBQ0U1RCxLQUFBLENBQUNqQixZQUFZO1VBQUE2RSxRQUFBLGdCQUNYOUQsSUFBQSxDQUFDZCxZQUFZO1lBQUE0RSxRQUFBLGVBQ1g5RCxJQUFBLENBQUN2QixLQUFLO2NBQ0o2RixTQUFTLEVBQUVuQyxDQUFDLENBQUMsdUJBQXVCLENBQUU7Y0FDdENvQyxXQUFXLEVBQUUsS0FBTTtjQUNuQmYsS0FBSyxFQUFFNUIsUUFBUSxDQUFDTCxJQUFLO2NBQ3JCaUQsV0FBVyxFQUFFckMsQ0FBQyxDQUFDLDZCQUE2QixDQUFFO2NBQzlDc0MsYUFBYSxFQUFFLFNBQWZBLGFBQWFBLENBQUVqQixLQUFLO2dCQUFBLE9BQUlGLGlCQUFpQixDQUFDLE1BQU0sRUFBRUUsS0FBSyxDQUFDO2NBQUE7WUFBQyxDQUMxRDtVQUFDLENBQ1UsQ0FBQyxFQUVkVSxNQUFNLENBQUNDLG9CQUFvQixpQkFDMUJuRSxJQUFBLENBQUNkLFlBQVk7WUFBQTRFLFFBQUEsZUFDWDVELEtBQUEsQ0FBQ3hCLFFBQVE7Y0FDUGdHLEtBQUssRUFBRXZDLENBQUMsQ0FBQyw0QkFBNEIsQ0FBRTtjQUN2Q3FDLFdBQVcsRUFBRXJDLENBQUMsQ0FBQyxrQ0FBa0MsQ0FBRTtjQUNuRHdDLE9BQU8sZUFDTDNFLElBQUEsQ0FBQ0YsbUJBQW1CO2dCQUFDVSxNQUFNLEVBQUV3QixtQkFBb0I7Z0JBQUE4QixRQUFBLGVBQy9DOUQsSUFBQSxDQUFDeEIsV0FBVztrQkFBQ3VGLEtBQUssRUFBQyxNQUFNO2tCQUFDQyxNQUFNLEVBQUMsTUFBTTtrQkFBQ0MsS0FBSyxFQUFDO2dCQUFTLENBQUU7Y0FBQyxDQUN2QyxDQUN0QjtjQUNEVCxLQUFLLEVBQUU1QixRQUFRLENBQUNKLFNBQVU7Y0FDMUJvRCxJQUFJLEVBQUU1QyxtQkFBb0I7Y0FDMUI2QyxpQkFBaUIsRUFBRSxTQUFuQkEsaUJBQWlCQSxDQUFBO2dCQUFBLE9BQVE1QyxzQkFBc0IsQ0FBQyxDQUFDRCxtQkFBbUIsQ0FBQztjQUFBLENBQUM7Y0FBQThCLFFBQUEsZ0JBRXRFOUQsSUFBQSxDQUFDUixxQkFBcUI7Z0JBQUNxRSxPQUFPLEVBQUUsU0FBVEEsT0FBT0EsQ0FBQTtrQkFBQSxPQUFRNUIsc0JBQXNCLENBQUMsS0FBSyxDQUFDO2dCQUFBO2NBQUMsQ0FBRSxDQUFDLGVBQ3ZFakMsSUFBQSxDQUFDUCxhQUFhO2dCQUFBcUUsUUFBQSxFQUNYaEQsY0FBYyxDQUFDeUIsR0FBRyxDQUFDLFVBQUFmLFNBQVM7a0JBQUEsb0JBQzNCeEIsSUFBQSxDQUFDTixjQUFjO29CQUVibUUsT0FBTyxFQUFFLFNBQVRBLE9BQU9BLENBQUE7c0JBQUEsT0FBUVAsaUJBQWlCLENBQUMsV0FBVyxFQUFFOUIsU0FBUyxDQUFDRCxJQUFJLENBQUM7b0JBQUEsQ0FBQztvQkFBQXVDLFFBQUEsRUFFN0R0QyxTQUFTLENBQUNEO2tCQUFJLEdBSFZDLFNBQVMsQ0FBQ3NELEVBSUQsQ0FBQztnQkFBQSxDQUNsQjtjQUFDLENBQ1csQ0FBQztZQUFBLENBQ1I7VUFBQyxDQUNDLENBQ2YsZUFFRDlFLElBQUEsQ0FBQ2QsWUFBWTtZQUFBNEUsUUFBQSxlQUNYOUQsSUFBQSxDQUFDckIsYUFBYTtjQUNaNkUsS0FBSyxFQUFFNUIsUUFBUSxDQUFDSCxPQUFRO2NBQ3hCVCxXQUFXLEVBQUVBLFdBQVcsQ0FBQytELE1BQU0sR0FBRyxDQUFDLEdBQUcvRCxXQUFXLEdBQUcsQ0FBQVQsSUFBSSxhQUFKQSxJQUFJLHVCQUFKQSxJQUFJLENBQUUrQixLQUFLLEtBQUksRUFBRztjQUN0RTBDLFFBQVEsRUFBRSxTQUFWQSxRQUFRQSxDQUFFeEIsS0FBSztnQkFBQSxPQUFJRixpQkFBaUIsQ0FBQyxTQUFTLEVBQUVFLEtBQUssQ0FBQztjQUFBO1lBQUMsQ0FDeEQ7VUFBQyxDQUNVLENBQUMsRUFFZCxDQUFDVSxNQUFNLENBQUNDLG9CQUFvQixpQkFDM0JuRSxJQUFBLENBQUNkLFlBQVk7WUFBQTRFLFFBQUEsZUFDWDVELEtBQUEsQ0FBQ1AsaUJBQWlCO2NBQUFtRSxRQUFBLGdCQUNoQjlELElBQUEsQ0FBQ0osZUFBZTtnQkFBQ3FGLE9BQU8sRUFBQyxZQUFZO2dCQUFBbkIsUUFBQSxFQUFFM0IsQ0FBQyxDQUFDLDhCQUE4QjtjQUFDLENBQWtCLENBQUMsZUFDM0ZuQyxJQUFBLENBQUNILFVBQVU7Z0JBQ1QyRCxLQUFLLEVBQUU1QixRQUFRLENBQUNGLFdBQVk7Z0JBQzVCc0QsUUFBUSxFQUFFLFNBQVZBLFFBQVFBLENBQUVqQyxDQUFDO2tCQUFBLE9BQUlPLGlCQUFpQixDQUFDLGFBQWEsRUFBRVAsQ0FBQyxDQUFDQyxNQUFNLENBQUNRLEtBQUssQ0FBQztnQkFBQSxDQUFDO2dCQUNoRTBCLFVBQVUsRUFBRSxLQUFNO2dCQUNsQlYsV0FBVyxFQUFFckMsQ0FBQyxDQUFDLG9DQUFvQyxDQUFFO2dCQUNyRDJDLEVBQUUsRUFBQztjQUFZLENBQ2hCLENBQUM7WUFBQSxDQUNlO1VBQUMsQ0FDUixDQUNmO1FBQUEsQ0FDVyxDQUFDLGVBRWY1RSxLQUFBLENBQUNYLHFCQUFxQjtVQUFBdUUsUUFBQSxnQkFDcEI5RCxJQUFBLENBQUMxQixRQUFRO1lBQUM4RixPQUFPLEVBQUMsTUFBTTtZQUFDQyxJQUFJLEVBQUMsUUFBUTtZQUFDUixPQUFPLEVBQUVULGdCQUFpQjtZQUFBVSxRQUFBLEVBQzlEM0IsQ0FBQyxDQUFDLGNBQWM7VUFBQyxDQUNWLENBQUMsZUFDWG5DLElBQUEsQ0FBQzFCLFFBQVE7WUFBQzhGLE9BQU8sRUFBQyxXQUFXO1lBQUNDLElBQUksRUFBQyxRQUFRO1lBQUNSLE9BQU8sRUFBRVIsVUFBVztZQUFDOEIsS0FBSyxFQUFFO2NBQUVDLGVBQWUsRUFBRTtZQUFVLENBQUU7WUFBQXRCLFFBQUEsRUFDcEcxQixZQUFZLEdBQUdELENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHQSxDQUFDLENBQUMsbUJBQW1CO1VBQUMsQ0FDdEQsQ0FBQztRQUFBLENBQ1UsQ0FBQztNQUFBLENBQ3hCLENBQ0g7SUFBQSxDQUNhO0VBQUMsQ0FDTCxDQUFDO0FBRW5CLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
275
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZVN0YXRlIiwidXNlRWZmZWN0IiwidXNlVHJhbnNsYXRpb24iLCJDVUJ1dHRvbiIsIkNyb3NzIiwiQ2hldnJvbkRvd24iLCJJbnB1dCIsIkNVU2VsZWN0IiwiU0NURE1PdmVybGF5IiwiU0NURE1Db250YWluZXIiLCJTQ1RETUhlYWRlciIsIlNDVERNVGl0bGUiLCJTQ1RETUNsb3NlQnV0dG9uIiwiU0NURE1Db250ZW50IiwiU0NURE1TZWN0aW9uIiwiU0NURE1TZWN0aW9uTGFiZWwiLCJTQ1RETVNlY3Rpb25WYWx1ZSIsIlNDVERNVXNlcnNMaXN0IiwiU0NURE1Xb3Jrc3BhY2VUYWciLCJTQ1RETUJ1dHRvbnNDb250YWluZXIiLCJTQ0JhY2tkcm9wSW5wdXRTZWxlY3QiLCJTQ0NVSXRlbXNMaXN0IiwiU0NDVVNlbGVjdEl0ZW0iLCJTQ1dyYXBwZXJUZXh0QXJlYSIsIlNDVGV4dEFyZWFMYWJlbCIsIlNDVGV4dEFyZWEiLCJTQ1RleHRBcmVhQ291bnRlciIsIlNDV3JhcHBlclNlbGVjdEljb24iLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiRnJhZ21lbnQiLCJfRnJhZ21lbnQiLCJUZWFtRGV0YWlsc01vZGFsIiwiX3JlZiIsIl9mb3JtRGF0YSR3b3Jrc3BhY2UiLCJ0ZWFtIiwiaXNPcGVuIiwib25DbG9zZSIsIm9uRWRpdCIsIm9uQ3JlYXRlIiwiX3JlZiRtb2RlIiwibW9kZSIsIndvcmtzcGFjZXNMaXN0IiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwiaXNFZGl0TW9kZSIsInNldElzRWRpdE1vZGUiLCJfdXNlU3RhdGUzIiwibmFtZSIsIndvcmtzcGFjZSIsIm1lbWJlcnMiLCJkZXNjcmlwdGlvbiIsIl91c2VTdGF0ZTQiLCJmb3JtRGF0YSIsInNldEZvcm1EYXRhIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJzaG93U2VsZWN0V29ya3NwYWNlIiwic2V0U2hvd1NlbGVjdFdvcmtzcGFjZSIsIl91c2VUcmFuc2xhdGlvbiIsInQiLCJpZCIsInVzZXJzIiwibWFwIiwidXNlciIsImNvbmNhdCIsImZpcnN0TmFtZSIsImxhc3ROYW1lIiwiaGFuZGxlQ2xvc2VNb2RhbCIsImhhbmRsZU92ZXJsYXlDbGljayIsImUiLCJ0YXJnZXQiLCJjdXJyZW50VGFyZ2V0IiwiZm9ybWF0VXNlcnMiLCJqb2luIiwiaGFuZGxlRWRpdENsaWNrIiwiaGFuZGxlQ2FuY2VsRWRpdCIsImhhbmRsZVNhdmUiLCJoYW5kbGVJbnB1dENoYW5nZSIsImZpZWxkIiwidmFsdWUiLCJwcmV2IiwiX29iamVjdFNwcmVhZCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE1vZGFsVGl0bGUiLCJpc0Zvcm1Db21wbGV0ZSIsIndpbmRvdyIsImhhc1dvcmtzcGFjZXNGZWF0dXJlIiwidHJpbSIsImxlbmd0aCIsImlzVmlld01vZGUiLCJvbkNsaWNrIiwiY2hpbGRyZW4iLCJ3aWR0aCIsImhlaWdodCIsImNvbG9yIiwidmFyaWFudCIsInNpemUiLCJsYWJlbFRleHQiLCJ3aXRoQ291bnRlciIsIm1heExlbmd0aCIsInBsYWNlaG9sZGVyIiwiaGFuZGxlU2V0VGV4dCIsImhhc0Vycm9yIiwiZXJyb3JNZXNzYWdlIiwidGl0bGUiLCJlbmRJY29uIiwib3BlbiIsImhhbmRsZUNsaWNrQWN0aW9uIiwiaHRtbEZvciIsIm9uQ2hhbmdlIiwic3BlbGxDaGVjayIsImRpc2FibGVkIiwic3R5bGUiLCJiYWNrZ3JvdW5kQ29sb3IiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9UZWFtRGV0YWlsc01vZGFsL1RlYW1EZXRhaWxzTW9kYWwudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnXG5pbXBvcnQgeyBDVUJ1dHRvbiB9IGZyb20gJ0Bwcm9qZWN0Y29yL2J1dHRvbi9saWIvY29tcG9uZW50cy9DVUJ1dHRvbidcbmltcG9ydCB7IENyb3NzIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvQ3Jvc3MnXG5pbXBvcnQgeyBDaGV2cm9uRG93biB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0NoZXZyb25Eb3duJ1xuaW1wb3J0IHsgSW5wdXQgfSBmcm9tICdAcHJvamVjdGNvci9pbnB1dC9saWInXG5pbXBvcnQgeyBDVVNlbGVjdCB9IGZyb20gJ0Bwcm9qZWN0Y29yL3NlbGVjdG9yL2xpYi9jb21wb25lbnRzL0NVU2VsZWN0J1xuaW1wb3J0IHsgVGVhbURldGFpbHNNb2RhbFByb3BzLCBGb3JtRGF0YSwgV29ya3NwYWNlIH0gZnJvbSAnLi9UZWFtRGV0YWlsc01vZGFsLnR5cGVzJ1xuaW1wb3J0IHsgTWVtYmVyU2VsZWN0aW9uIH0gZnJvbSAnLi9NZW1iZXJzU2VsZWN0J1xuaW1wb3J0IHtcbiAgU0NURE1PdmVybGF5LFxuICBTQ1RETUNvbnRhaW5lcixcbiAgU0NURE1IZWFkZXIsXG4gIFNDVERNVGl0bGUsXG4gIFNDVERNQ2xvc2VCdXR0b24sXG4gIFNDVERNQ29udGVudCxcbiAgU0NURE1TZWN0aW9uLFxuICBTQ1RETVNlY3Rpb25MYWJlbCxcbiAgU0NURE1TZWN0aW9uVmFsdWUsXG4gIFNDVERNVXNlcnNMaXN0LFxuICBTQ1RETVdvcmtzcGFjZVRhZyxcbiAgU0NURE1CdXR0b25zQ29udGFpbmVyLFxuICBTQ0JhY2tkcm9wSW5wdXRTZWxlY3QsXG4gIFNDQ1VJdGVtc0xpc3QsXG4gIFNDQ1VTZWxlY3RJdGVtLFxuICBTQ1dyYXBwZXJUZXh0QXJlYSxcbiAgU0NUZXh0QXJlYUxhYmVsLFxuICBTQ1RleHRBcmVhLFxuICBTQ1RleHRBcmVhQ291bnRlcixcbiAgU0NXcmFwcGVyU2VsZWN0SWNvbixcbn0gZnJvbSAnLi9UZWFtRGV0YWlsc01vZGFsLnN0eWxlcydcblxuZXhwb3J0IGNvbnN0IFRlYW1EZXRhaWxzTW9kYWwgPSAoe1xuICB0ZWFtLFxuICBpc09wZW4sXG4gIG9uQ2xvc2UsXG4gIG9uRWRpdCxcbiAgb25DcmVhdGUsXG4gIG1vZGUgPSAndmlldycsXG4gIHdvcmtzcGFjZXNMaXN0LFxufTogVGVhbURldGFpbHNNb2RhbFByb3BzKSA9PiB7XG4gIGNvbnN0IFtpc0VkaXRNb2RlLCBzZXRJc0VkaXRNb2RlXSA9IHVzZVN0YXRlKG1vZGUgPT09ICdlZGl0JyB8fCBtb2RlID09PSAnY3JlYXRlJylcbiAgY29uc3QgW2Zvcm1EYXRhLCBzZXRGb3JtRGF0YV0gPSB1c2VTdGF0ZTxGb3JtRGF0YT4oe1xuICAgIG5hbWU6ICcnLFxuICAgIHdvcmtzcGFjZTogbnVsbCxcbiAgICBtZW1iZXJzOiBbXSxcbiAgICBkZXNjcmlwdGlvbjogJycsXG4gIH0pXG4gIGNvbnN0IFtzaG93U2VsZWN0V29ya3NwYWNlLCBzZXRTaG93U2VsZWN0V29ya3NwYWNlXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCd0ZWFtcycpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyBTaSBjYW1iaWEgZWwgbW9kbywgYWp1c3RhciBpc0VkaXRNb2RlXG4gICAgc2V0SXNFZGl0TW9kZShtb2RlID09PSAnZWRpdCcgfHwgbW9kZSA9PT0gJ2NyZWF0ZScpXG4gIH0sIFttb2RlXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNPcGVuKSB7XG4gICAgICAvLyBSZXNldGVhciBjdWFuZG8gZWwgbW9kYWwgc2UgY2llcnJhXG4gICAgICBzZXRGb3JtRGF0YSh7XG4gICAgICAgIG5hbWU6ICcnLFxuICAgICAgICB3b3Jrc3BhY2U6IG51bGwsXG4gICAgICAgIG1lbWJlcnM6IFtdLFxuICAgICAgICBkZXNjcmlwdGlvbjogJycsXG4gICAgICB9KVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKG1vZGUgPT09ICdjcmVhdGUnKSB7XG4gICAgICAvLyBSZXNldGVhciBmb3JtdWxhcmlvIHBhcmEgY3JlYXJcbiAgICAgIHNldEZvcm1EYXRhKHtcbiAgICAgICAgbmFtZTogJycsXG4gICAgICAgIHdvcmtzcGFjZTogbnVsbCxcbiAgICAgICAgbWVtYmVyczogW10sXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnJyxcbiAgICAgIH0pXG4gICAgfSBlbHNlIGlmICh0ZWFtKSB7XG4gICAgICAvLyBBY3R1YWxpemFyIGZvcm11bGFyaW8gY3VhbmRvIGhheSB1biBlcXVpcG8gKG1vZG8gdmlldyBvIGVkaXQpXG4gICAgICBzZXRGb3JtRGF0YSh7XG4gICAgICAgIG5hbWU6IHRlYW0ubmFtZSB8fCAnJyxcbiAgICAgICAgd29ya3NwYWNlOiB0ZWFtLndvcmtzcGFjZSA/IHsgaWQ6IHRlYW0ud29ya3NwYWNlLmlkLCBuYW1lOiB0ZWFtLndvcmtzcGFjZS5uYW1lIH0gOiBudWxsLFxuICAgICAgICBtZW1iZXJzOiB0ZWFtLnVzZXJzLm1hcCh1c2VyID0+ICh7IGlkOiB1c2VyLmlkLCBuYW1lOiBgJHt1c2VyLmZpcnN0TmFtZX0gJHt1c2VyLmxhc3ROYW1lfWAgfSkpLFxuICAgICAgICBkZXNjcmlwdGlvbjogdGVhbS5kZXNjcmlwdGlvbiB8fCAnJyxcbiAgICAgIH0pXG4gICAgfVxuICB9LCBbdGVhbSwgbW9kZSwgaXNPcGVuXSlcblxuICBpZiAoIWlzT3BlbikgcmV0dXJuIG51bGxcbiAgaWYgKG1vZGUgPT09ICd2aWV3JyAmJiAhaXNFZGl0TW9kZSAmJiAhdGVhbSkgcmV0dXJuIG51bGxcblxuICBjb25zdCBoYW5kbGVDbG9zZU1vZGFsID0gKCkgPT4ge1xuICAgIHNldElzRWRpdE1vZGUoZmFsc2UpXG4gICAgc2V0Rm9ybURhdGEoe1xuICAgICAgbmFtZTogJycsXG4gICAgICB3b3Jrc3BhY2U6IG51bGwsXG4gICAgICBtZW1iZXJzOiBbXSxcbiAgICAgIGRlc2NyaXB0aW9uOiAnJyxcbiAgICB9KVxuICAgIG9uQ2xvc2UoKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlT3ZlcmxheUNsaWNrID0gKGU6IFJlYWN0Lk1vdXNlRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgaWYgKGUudGFyZ2V0ID09PSBlLmN1cnJlbnRUYXJnZXQgJiYgIWlzRWRpdE1vZGUpIHtcbiAgICAgIGhhbmRsZUNsb3NlTW9kYWwoKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGZvcm1hdFVzZXJzID0gKCkgPT4ge1xuICAgIGlmICghdGVhbSkgcmV0dXJuICcnXG4gICAgcmV0dXJuIHRlYW0udXNlcnMubWFwKHVzZXIgPT4gYCR7dXNlci5maXJzdE5hbWV9ICR7dXNlci5sYXN0TmFtZX1gKS5qb2luKCcgLSAnKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlRWRpdENsaWNrID0gKCkgPT4ge1xuICAgIHNldElzRWRpdE1vZGUodHJ1ZSlcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUNhbmNlbEVkaXQgPSAoKSA9PiB7XG4gICAgaGFuZGxlQ2xvc2VNb2RhbCgpXG4gIH1cblxuICBjb25zdCBoYW5kbGVTYXZlID0gKCkgPT4ge1xuICAgIGlmIChtb2RlID09PSAnY3JlYXRlJyAmJiBvbkNyZWF0ZSkge1xuICAgICAgb25DcmVhdGUoZm9ybURhdGEpXG4gICAgfSBlbHNlIGlmIChvbkVkaXQpIHtcbiAgICAgIG9uRWRpdChmb3JtRGF0YSlcbiAgICB9XG4gICAgc2V0SXNFZGl0TW9kZShmYWxzZSlcbiAgICBpZiAobW9kZSA9PT0gJ2NyZWF0ZScpIHtcbiAgICAgIGhhbmRsZUNsb3NlTW9kYWwoKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUlucHV0Q2hhbmdlID0gKGZpZWxkOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfCBXb3Jrc3BhY2UgfCBudWxsIHwgTWVtYmVyU2VsZWN0aW9uW10pID0+IHtcbiAgICBzZXRGb3JtRGF0YShwcmV2ID0+ICh7XG4gICAgICAuLi5wcmV2LFxuICAgICAgW2ZpZWxkXTogdmFsdWUsXG4gICAgfSkpXG4gIH1cblxuICBjb25zdCBnZXRNb2RhbFRpdGxlID0gKCkgPT4ge1xuICAgIGlmIChtb2RlID09PSAnY3JlYXRlJykgcmV0dXJuIHQoJ3RlYW1zLm1vZGFsLmNyZWF0ZVRpdGxlJylcbiAgICBpZiAoaXNFZGl0TW9kZSkgcmV0dXJuIHQoJ3RlYW1zLm1vZGFsLmVkaXRUaXRsZScpXG4gICAgcmV0dXJuIHRlYW0/Lm5hbWUgfHwgJydcbiAgfVxuXG4gIGNvbnN0IGlzRm9ybUNvbXBsZXRlID0gd2luZG93Lmhhc1dvcmtzcGFjZXNGZWF0dXJlXG4gICAgPyBmb3JtRGF0YS5uYW1lLnRyaW0oKS5sZW5ndGggPiAwICYmIGZvcm1EYXRhLndvcmtzcGFjZSAhPT0gbnVsbFxuICAgIDogZm9ybURhdGEubmFtZS50cmltKCkubGVuZ3RoID4gMFxuXG4gIGNvbnN0IGlzVmlld01vZGUgPSBtb2RlID09PSAndmlldycgJiYgIWlzRWRpdE1vZGVcblxuICByZXR1cm4gKFxuICAgIDxTQ1RETU92ZXJsYXkgb25DbGljaz17aGFuZGxlT3ZlcmxheUNsaWNrfT5cbiAgICAgIDxTQ1RETUNvbnRhaW5lcj5cbiAgICAgICAgPFNDVERNSGVhZGVyPlxuICAgICAgICAgIDxTQ1RETVRpdGxlPntnZXRNb2RhbFRpdGxlKCl9PC9TQ1RETVRpdGxlPlxuICAgICAgICAgIDxTQ1RETUNsb3NlQnV0dG9uIG9uQ2xpY2s9e2hhbmRsZUNsb3NlTW9kYWx9PlxuICAgICAgICAgICAgPENyb3NzIHdpZHRoPXsyMH0gaGVpZ2h0PXsyMH0gY29sb3I9XCIjQTRBREI1XCIgLz5cbiAgICAgICAgICA8L1NDVERNQ2xvc2VCdXR0b24+XG4gICAgICAgIDwvU0NURE1IZWFkZXI+XG5cbiAgICAgICAge2lzVmlld01vZGUgJiYgdGVhbSA/IChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPFNDVERNQ29udGVudD5cbiAgICAgICAgICAgICAgPFNDVERNU2VjdGlvbj5cbiAgICAgICAgICAgICAgICA8U0NURE1TZWN0aW9uTGFiZWw+e3QoJ3RlYW1zLm1vZGFsLnVzZXJzTGFiZWwnKX08L1NDVERNU2VjdGlvbkxhYmVsPlxuICAgICAgICAgICAgICAgIDxTQ1RETVNlY3Rpb25WYWx1ZT5cbiAgICAgICAgICAgICAgICAgIDxTQ1RETVVzZXJzTGlzdD57Zm9ybWF0VXNlcnMoKX08L1NDVERNVXNlcnNMaXN0PlxuICAgICAgICAgICAgICAgIDwvU0NURE1TZWN0aW9uVmFsdWU+XG4gICAgICAgICAgICAgIDwvU0NURE1TZWN0aW9uPlxuXG4gICAgICAgICAgICAgIHt3aW5kb3cuaGFzV29ya3NwYWNlc0ZlYXR1cmUgJiYgKFxuICAgICAgICAgICAgICAgIDxTQ1RETVNlY3Rpb24+XG4gICAgICAgICAgICAgICAgICA8U0NURE1TZWN0aW9uTGFiZWw+e3QoJ3RlYW1zLm1vZGFsLndvcmtzcGFjZXNMYWJlbCcpfTwvU0NURE1TZWN0aW9uTGFiZWw+XG4gICAgICAgICAgICAgICAgICA8U0NURE1TZWN0aW9uVmFsdWU+XG4gICAgICAgICAgICAgICAgICAgIHt0ZWFtLndvcmtzcGFjZSA/IDxTQ1RETVdvcmtzcGFjZVRhZz57dGVhbS53b3Jrc3BhY2UubmFtZX08L1NDVERNV29ya3NwYWNlVGFnPiA6ICctJ31cbiAgICAgICAgICAgICAgICAgIDwvU0NURE1TZWN0aW9uVmFsdWU+XG4gICAgICAgICAgICAgICAgPC9TQ1RETVNlY3Rpb24+XG4gICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgICAgeyF3aW5kb3cuaGFzV29ya3NwYWNlc0ZlYXR1cmUgJiYgKFxuICAgICAgICAgICAgICAgIDxTQ1RETVNlY3Rpb24+XG4gICAgICAgICAgICAgICAgICA8U0NURE1TZWN0aW9uTGFiZWw+e3QoJ3RlYW1zLm1vZGFsLmRlc2NyaXB0aW9uTGFiZWwnKX08L1NDVERNU2VjdGlvbkxhYmVsPlxuICAgICAgICAgICAgICAgICAgPFNDVERNU2VjdGlvblZhbHVlPnt0ZWFtLmRlc2NyaXB0aW9uIHx8ICctJ308L1NDVERNU2VjdGlvblZhbHVlPlxuICAgICAgICAgICAgICAgIDwvU0NURE1TZWN0aW9uPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9TQ1RETUNvbnRlbnQ+XG5cbiAgICAgICAgICAgIDxTQ1RETUJ1dHRvbnNDb250YWluZXI+XG4gICAgICAgICAgICAgIDxDVUJ1dHRvbiB2YXJpYW50PVwidGV4dFwiIHNpemU9XCJtZWRpdW1cIiBvbkNsaWNrPXtoYW5kbGVDbG9zZU1vZGFsfT5cbiAgICAgICAgICAgICAgICB7dCgndGVhbXMuY2FuY2VsJyl9XG4gICAgICAgICAgICAgIDwvQ1VCdXR0b24+XG4gICAgICAgICAgICAgIHshd2luZG93Lmhhc1dvcmtzcGFjZXNGZWF0dXJlICYmIChcbiAgICAgICAgICAgICAgICA8Q1VCdXR0b24gdmFyaWFudD1cImNvbnRhaW5lZFwiIHNpemU9XCJtZWRpdW1cIiBvbkNsaWNrPXtoYW5kbGVFZGl0Q2xpY2t9PlxuICAgICAgICAgICAgICAgICAge3QoJ3RlYW1zLm1vZGFsLmVkaXRCdXR0b24nKX1cbiAgICAgICAgICAgICAgICA8L0NVQnV0dG9uPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9TQ1RETUJ1dHRvbnNDb250YWluZXI+XG4gICAgICAgICAgPC8+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIDxTQ1RETUNvbnRlbnQ+XG4gICAgICAgICAgICAgIDxTQ1RETVNlY3Rpb24+XG4gICAgICAgICAgICAgICAgPElucHV0XG4gICAgICAgICAgICAgICAgICBrZXk9e2B0ZWFtLW5hbWUtJHt0ZWFtPy5pZCB8fCAnbmV3J30tJHttb2RlfS0ke2lzT3Blbn1gfVxuICAgICAgICAgICAgICAgICAgbGFiZWxUZXh0PXt0KCd0ZWFtcy5tb2RhbC5uYW1lTGFiZWwnKX1cbiAgICAgICAgICAgICAgICAgIHdpdGhDb3VudGVyXG4gICAgICAgICAgICAgICAgICBtYXhMZW5ndGg9ezI1NX1cbiAgICAgICAgICAgICAgICAgIHZhbHVlPXtmb3JtRGF0YS5uYW1lIHx8ICh0ZWFtICYmIG1vZGUgPT09ICdlZGl0JyA/IHRlYW0ubmFtZSA6ICcnKX1cbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXt0KCd0ZWFtcy5tb2RhbC5uYW1lUGxhY2Vob2xkZXInKX1cbiAgICAgICAgICAgICAgICAgIGhhbmRsZVNldFRleHQ9e3ZhbHVlID0+IGhhbmRsZUlucHV0Q2hhbmdlKCduYW1lJywgdmFsdWUpfVxuICAgICAgICAgICAgICAgICAgaGFzRXJyb3I9e2Zvcm1EYXRhLm5hbWUubGVuZ3RoID4gMjU1fVxuICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlPVwiRWwgbm9tYnJlIGRlbCBlcXVpcG8gbm8gcHVlZGUgdGVuZXIgbcOhcyBkZSAyNTUgY2FyYWN0ZXJlc1wiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9TQ1RETVNlY3Rpb24+XG5cbiAgICAgICAgICAgICAgey8qIHttb2RlID09PSAnY3JlYXRlJyAmJiAoXG4gICAgICAgICAgICAgICAgPFNDVERNU2VjdGlvbj5cbiAgICAgICAgICAgICAgICAgIDxNZW1iZXJzU2VsZWN0IHZhbHVlPXtmb3JtRGF0YS5tZW1iZXJzfSBvbkNoYW5nZT17aGFuZGxlSW5wdXRDaGFuZ2V9IC8+XG4gICAgICAgICAgICAgICAgPC9TQ1RETVNlY3Rpb24+XG4gICAgICAgICAgICAgICl9ICovfVxuXG4gICAgICAgICAgICAgIHt3aW5kb3cuaGFzV29ya3NwYWNlc0ZlYXR1cmUgJiYgKFxuICAgICAgICAgICAgICAgIDxTQ1RETVNlY3Rpb24+XG4gICAgICAgICAgICAgICAgICA8Q1VTZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9e3QoJ3RlYW1zLm1vZGFsLndvcmtzcGFjZVRpdGxlJyl9XG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXt0KCd0ZWFtcy5tb2RhbC53b3Jrc3BhY2VQbGFjZWhvbGRlcicpfVxuICAgICAgICAgICAgICAgICAgICBlbmRJY29uPXtcbiAgICAgICAgICAgICAgICAgICAgICA8U0NXcmFwcGVyU2VsZWN0SWNvbiBpc09wZW49e3Nob3dTZWxlY3RXb3Jrc3BhY2V9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPENoZXZyb25Eb3duIHdpZHRoPVwiMTZweFwiIGhlaWdodD1cIjE2cHhcIiBjb2xvcj1cIiMyMDIwMUZcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvU0NXcmFwcGVyU2VsZWN0SWNvbj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT17Zm9ybURhdGEud29ya3NwYWNlPy5uYW1lIHx8ICcnfVxuICAgICAgICAgICAgICAgICAgICBvcGVuPXtzaG93U2VsZWN0V29ya3NwYWNlfVxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVDbGlja0FjdGlvbj17KCkgPT4gc2V0U2hvd1NlbGVjdFdvcmtzcGFjZSghc2hvd1NlbGVjdFdvcmtzcGFjZSl9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxTQ0JhY2tkcm9wSW5wdXRTZWxlY3Qgb25DbGljaz17KCkgPT4gc2V0U2hvd1NlbGVjdFdvcmtzcGFjZShmYWxzZSl9IC8+XG4gICAgICAgICAgICAgICAgICAgIDxTQ0NVSXRlbXNMaXN0PlxuICAgICAgICAgICAgICAgICAgICAgIHt3b3Jrc3BhY2VzTGlzdC5tYXAod29ya3NwYWNlID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxTQ0NVU2VsZWN0SXRlbSBrZXk9e3dvcmtzcGFjZS5pZH0gb25DbGljaz17KCkgPT4gaGFuZGxlSW5wdXRDaGFuZ2UoJ3dvcmtzcGFjZScsIHdvcmtzcGFjZSl9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7d29ya3NwYWNlLm5hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1NDQ1VTZWxlY3RJdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgICA8L1NDQ1VJdGVtc0xpc3Q+XG4gICAgICAgICAgICAgICAgICA8L0NVU2VsZWN0PlxuICAgICAgICAgICAgICAgIDwvU0NURE1TZWN0aW9uPlxuICAgICAgICAgICAgICApfVxuXG4gICAgICAgICAgICAgIHshd2luZG93Lmhhc1dvcmtzcGFjZXNGZWF0dXJlICYmIChcbiAgICAgICAgICAgICAgICA8U0NURE1TZWN0aW9uPlxuICAgICAgICAgICAgICAgICAgPFNDV3JhcHBlclRleHRBcmVhPlxuICAgICAgICAgICAgICAgICAgICA8U0NUZXh0QXJlYUxhYmVsIGh0bWxGb3I9XCJteVRleHRhcmVhXCI+e3QoJ3RlYW1zLm1vZGFsLmRlc2NyaXB0aW9uTGFiZWwnKX08L1NDVGV4dEFyZWFMYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPFNDVGV4dEFyZWFcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17Zm9ybURhdGEuZGVzY3JpcHRpb259XG4gICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e2UgPT4gaGFuZGxlSW5wdXRDaGFuZ2UoJ2Rlc2NyaXB0aW9uJywgZS50YXJnZXQudmFsdWUpfVxuICAgICAgICAgICAgICAgICAgICAgIHNwZWxsQ2hlY2s9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXt0KCd0ZWFtcy5tb2RhbC5kZXNjcmlwdGlvblBsYWNlaG9sZGVyJyl9XG4gICAgICAgICAgICAgICAgICAgICAgaWQ9XCJteVRleHRhcmVhXCJcbiAgICAgICAgICAgICAgICAgICAgICBtYXhMZW5ndGg9ezI1NX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPFNDVGV4dEFyZWFDb3VudGVyPntmb3JtRGF0YS5kZXNjcmlwdGlvbi5sZW5ndGh9IC8gMjU1PC9TQ1RleHRBcmVhQ291bnRlcj5cbiAgICAgICAgICAgICAgICAgIDwvU0NXcmFwcGVyVGV4dEFyZWE+XG4gICAgICAgICAgICAgICAgPC9TQ1RETVNlY3Rpb24+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L1NDVERNQ29udGVudD5cblxuICAgICAgICAgICAgPFNDVERNQnV0dG9uc0NvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPENVQnV0dG9uIHZhcmlhbnQ9XCJ0ZXh0XCIgc2l6ZT1cIm1lZGl1bVwiIG9uQ2xpY2s9e2hhbmRsZUNhbmNlbEVkaXR9PlxuICAgICAgICAgICAgICAgIHt0KCd0ZWFtcy5jYW5jZWwnKX1cbiAgICAgICAgICAgICAgPC9DVUJ1dHRvbj5cbiAgICAgICAgICAgICAgPENVQnV0dG9uXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ9eyFpc0Zvcm1Db21wbGV0ZX1cbiAgICAgICAgICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgICAgICAgICBzaXplPVwibWVkaXVtXCJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVTYXZlfVxuICAgICAgICAgICAgICAgIHN0eWxlPXt7IGJhY2tncm91bmRDb2xvcjogJyM2NjY2NjYnIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7bW9kZSA9PT0gJ2NyZWF0ZScgPyB0KCd0ZWFtcy5jcmVhdGVUZWFtJykgOiB0KCd0ZWFtcy5zYXZlQ2hhbmdlcycpfVxuICAgICAgICAgICAgICA8L0NVQnV0dG9uPlxuICAgICAgICAgICAgPC9TQ1RETUJ1dHRvbnNDb250YWluZXI+XG4gICAgICAgICAgPC8+XG4gICAgICAgICl9XG4gICAgICA8L1NDVERNQ29udGFpbmVyPlxuICAgIDwvU0NURE1PdmVybGF5PlxuICApXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPQSxLQUFLLElBQUlDLFFBQVEsRUFBRUMsU0FBUyxRQUFRLE9BQU87QUFDbEQsU0FBU0MsY0FBYyxRQUFRLGVBQWU7QUFDOUMsU0FBU0MsUUFBUSxRQUFRLDRDQUE0QztBQUNyRSxTQUFTQyxLQUFLLFFBQVEsd0NBQXdDO0FBQzlELFNBQVNDLFdBQVcsUUFBUSw4Q0FBOEM7QUFDMUUsU0FBU0MsS0FBSyxRQUFRLHVCQUF1QjtBQUM3QyxTQUFTQyxR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