@projectcor/maia-components 2.34.3-2 → 2.35.1

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 (79) hide show
  1. package/lib/components/atoms/ContextMentionChip/buildChipElement.js +1 -12
  2. package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.js +5 -127
  3. package/lib/components/atoms/ContextMentionItem/ContextMentionItem.js +29 -2
  4. package/lib/components/atoms/ContextMentionItem/ContextMentionItem.styles.js +33 -24
  5. package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.js +19 -2
  6. package/lib/components/atoms/MAIAInput/MAIAInput.js +21 -193
  7. package/lib/components/atoms/MAIAInput/styles.js +43 -40
  8. package/lib/components/atoms/icons/SkillsNavIcon.js +7 -4
  9. package/lib/components/atoms/icons/index.js +1 -5
  10. package/lib/components/molecules/ChatAIContent/ChatAIContent.js +3 -5
  11. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +14 -23
  12. package/lib/components/molecules/ChatAIModal/ChatAIModal.js +20 -59
  13. package/lib/components/molecules/ChatAIModal/ChatAIModal.styles.js +2 -2
  14. package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.js +11 -2
  15. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +5 -10
  16. package/lib/components/molecules/ChatAIModal/layout.js +2 -2
  17. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.js +239 -315
  18. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.styles.js +104 -131
  19. package/lib/components/molecules/ChatFooter/ChatFooter.js +46 -34
  20. package/lib/components/molecules/ChatFooter/styles.js +12 -6
  21. package/lib/components/molecules/ContextMentionInput/ContextMentionInput.js +3 -1
  22. package/lib/components/molecules/Sidebar/Sidebar.js +4 -5
  23. package/lib/components/molecules/Sidebar/Sidebar.layout.styles.js +3 -3
  24. package/lib/components/molecules/UsageBlockedBanner/UsageBlockedBanner.js +26 -0
  25. package/lib/components/molecules/UsageBlockedBanner/UsageBlockedBanner.styles.js +24 -0
  26. package/lib/components/molecules/UsageBlockedBanner/index.js +2 -0
  27. package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.js +1 -8
  28. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.js +182 -369
  29. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.styles.js +66 -126
  30. package/lib/components/organisms/ChatAI/ChatAI.js +6 -1
  31. package/lib/constants/config.js +4 -1
  32. package/lib/constants/formatExtensions.js +7 -8
  33. package/lib/constants/permissions/utils.js +3 -3
  34. package/lib/dev/DevReasoningTimeline.js +8 -50
  35. package/lib/hooks/useChatManager/useChatManager.js +23 -30
  36. package/lib/hooks/useContextMentions.js +56 -96
  37. package/lib/hooks/useEntitySearch.js +278 -92
  38. package/lib/hooks/useMentionAllowedTypes.js +25 -9
  39. package/lib/hooks/useMentionPopover.js +33 -9
  40. package/lib/hooks/useReasoningTrace/reasoningStore.js +8 -39
  41. package/lib/lang/br/index.js +12 -41
  42. package/lib/lang/en/index.js +12 -41
  43. package/lib/lang/es/index.js +13 -42
  44. package/lib/lang/fr/index.js +13 -42
  45. package/lib/services/maia/Skills/createSkill.js +1 -1
  46. package/lib/services/maia/Skills/getSkills.js +40 -70
  47. package/lib/services/maia/Skills/updateSkill.js +1 -1
  48. package/lib/services/maia/Usage/getUsage.js +45 -0
  49. package/lib/services/maia/Usage/index.js +6 -0
  50. package/lib/services/maia/index.js +4 -2
  51. package/lib/services/utils/MaiaApiError.js +34 -0
  52. package/lib/services/utils/fetchCOR.js +106 -57
  53. package/lib/services/utils/index.js +2 -1
  54. package/lib/services/utils/mapChatMessages.js +7 -12
  55. package/lib/store/index.js +2 -1
  56. package/lib/store/sessions/sessionStreamManager.js +67 -53
  57. package/lib/store/useUsageStore.js +108 -0
  58. package/lib/types/Chat.js +1 -1
  59. package/lib/types/reasoning.js +1 -1
  60. package/lib/types/skill.js +1 -1
  61. package/lib/types/usage.js +9 -0
  62. package/lib/utils/contextMentionTriggers.js +5 -2
  63. package/lib/utils/renderContextMentions.js +18 -39
  64. package/package.json +2 -3
  65. package/CHANGELOG.md +0 -691
  66. package/lib/components/atoms/ContextCompactedNotice/ContextCompactedNotice.js +0 -53
  67. package/lib/components/atoms/ContextCompactedNotice/ContextCompactedNotice.spec.js +0 -107
  68. package/lib/components/atoms/ContextCompactedNotice/ContextCompactedNotice.styles.js +0 -8
  69. package/lib/components/atoms/ContextCompactedNotice/index.js +0 -2
  70. package/lib/components/atoms/SkillsDropdown/SkillsDropdown.js +0 -208
  71. package/lib/components/atoms/SkillsDropdown/SkillsDropdown.styles.js +0 -77
  72. package/lib/components/atoms/SkillsDropdown/index.js +0 -2
  73. package/lib/components/atoms/icons/PlusIcon.js +0 -29
  74. package/lib/components/atoms/icons/SkillCreatedByIcon.js +0 -20
  75. package/lib/components/atoms/icons/SkillVisibilityEveryoneIcon.js +0 -23
  76. package/lib/components/atoms/icons/SkillVisibilityOnlyMeIcon.js +0 -23
  77. package/lib/hooks/useSkillsCatalog.js +0 -66
  78. package/lib/types/contextCompaction.js +0 -48
  79. package/lib/types/jest-dom.d.js +0 -2
@@ -6,7 +6,6 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
6
6
  /* eslint-disable react/button-has-type */
7
7
  import { useCallback, useEffect, useRef, useState } from 'react';
8
8
  import { AgentActivityIndicator } from '../components/atoms/AgentActivityIndicator/AgentActivityIndicator';
9
- import { ContextCompactedNotice } from '../components/atoms/ContextCompactedNotice/ContextCompactedNotice';
10
9
  import { MaiaStreamdown } from '../components/atoms/MaiaStreamdown/MaiaStreamdown';
11
10
  import { ReasoningBlock } from '../components/atoms/ReasoningBlock/ReasoningBlock';
12
11
  import { SCTimelineIndicator, SCFinalAnswerBody } from '../components/atoms/ReasoningBlock/ReasoningBlock.styles';
@@ -41,18 +40,14 @@ export function DevReasoningTimeline() {
41
40
  _useState8 = _slicedToArray(_useState7, 2),
42
41
  showThinking = _useState8[0],
43
42
  setShowThinking = _useState8[1];
44
- var _useState9 = useState(false),
43
+ var _useState9 = useState(4),
45
44
  _useState0 = _slicedToArray(_useState9, 2),
46
- simulateCompaction = _useState0[0],
47
- setSimulateCompaction = _useState0[1];
48
- var _useState1 = useState(4),
45
+ speed = _useState0[0],
46
+ setSpeed = _useState0[1];
47
+ var _useState1 = useState(0),
49
48
  _useState10 = _slicedToArray(_useState1, 2),
50
- speed = _useState10[0],
51
- setSpeed = _useState10[1];
52
- var _useState11 = useState(0),
53
- _useState12 = _slicedToArray(_useState11, 2),
54
- runId = _useState12[0],
55
- setRunId = _useState12[1];
49
+ runId = _useState10[0],
50
+ setRunId = _useState10[1];
56
51
  var timeoutsRef = useRef([]);
57
52
  var clearTimers = useCallback(function () {
58
53
  timeoutsRef.current.forEach(function (id) {
@@ -80,23 +75,6 @@ export function DevReasoningTimeline() {
80
75
  var schedule = function schedule(at, fn) {
81
76
  timeoutsRef.current.push(window.setTimeout(fn, at / speed));
82
77
  };
83
-
84
- // `event: context_compacted` a mitad del turno, como cuando el historial
85
- // ya no entra y el backend tiene que recortar antes de invocar al modelo.
86
- if (simulateCompaction) {
87
- schedule(4000, function () {
88
- return reasoningStore.setCompaction(MESSAGE_ID, {
89
- strategies: ['cap_tool_results', 'prune_images', 'summarize'],
90
- summarized: true,
91
- images_pruned: 3,
92
- turns_dropped: 0,
93
- tool_results_cleared: 7,
94
- tokens_before: 243011,
95
- tokens_after: 131884,
96
- agent: 'orchestrator:dev'
97
- });
98
- });
99
- }
100
78
  MOCK_EVENTS.forEach(function (event) {
101
79
  if (event.kind === 'thinking') {
102
80
  schedule(event.at, function () {
@@ -154,14 +132,12 @@ export function DevReasoningTimeline() {
154
132
  }
155
133
  });
156
134
  });
157
- }, [clearTimers, simulateCompaction, speed, t]);
135
+ }, [clearTimers, speed, t]);
158
136
  useEffect(function () {
159
137
  return clearTimers;
160
138
  }, [clearTimers]);
161
139
  var _useReasoningTrace = useReasoningTrace(isDone ? '' : MESSAGE_ID),
162
140
  steps = _useReasoningTrace.steps;
163
- var _useReasoningTrace2 = useReasoningTrace(MESSAGE_ID),
164
- compaction = _useReasoningTrace2.compaction;
165
141
  var streamNarrationInTimeline = shouldStreamNarrationInTimeline(steps, activity, body, MESSAGE_ID);
166
142
  return /*#__PURE__*/_jsxs("div", {
167
143
  style: {
@@ -219,22 +195,6 @@ export function DevReasoningTimeline() {
219
195
  return setShowThinking(e.target.checked);
220
196
  }
221
197
  }), "Mostrar thinking (window.reasoningThinking)"]
222
- }), /*#__PURE__*/_jsxs("label", {
223
- htmlFor: "dev-compaction",
224
- style: {
225
- display: 'flex',
226
- gap: 6,
227
- alignItems: 'center',
228
- fontSize: 13
229
- },
230
- children: [/*#__PURE__*/_jsx("input", {
231
- id: "dev-compaction",
232
- type: "checkbox",
233
- checked: simulateCompaction,
234
- onChange: function onChange(e) {
235
- return setSimulateCompaction(e.target.checked);
236
- }
237
- }), "Simular context_compacted"]
238
198
  })]
239
199
  }), /*#__PURE__*/_jsxs("p", {
240
200
  style: {
@@ -260,8 +220,6 @@ export function DevReasoningTimeline() {
260
220
  showThinking: showThinking,
261
221
  streamActivity: activity,
262
222
  streamingText: body
263
- }), /*#__PURE__*/_jsx(ContextCompactedNotice, {
264
- compaction: compaction
265
223
  }), !streamNarrationInTimeline && !!body && /*#__PURE__*/_jsx(SCFinalAnswerBody, {
266
224
  children: /*#__PURE__*/_jsx(MaiaStreamdown, {
267
225
  variant: "chat",
@@ -276,4 +234,4 @@ export function DevReasoningTimeline() {
276
234
  })]
277
235
  });
278
236
  }
279
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZVJlZiIsInVzZVN0YXRlIiwiQWdlbnRBY3Rpdml0eUluZGljYXRvciIsIkNvbnRleHRDb21wYWN0ZWROb3RpY2UiLCJNYWlhU3RyZWFtZG93biIsIlJlYXNvbmluZ0Jsb2NrIiwiU0NUaW1lbGluZUluZGljYXRvciIsIlNDRmluYWxBbnN3ZXJCb2R5IiwiUmVhc29uaW5nVGltZWxpbmUiLCJzaG91bGRTdHJlYW1OYXJyYXRpb25JblRpbWVsaW5lIiwicmVhc29uaW5nU3RvcmUiLCJ1c2VSZWFzb25pbmdUcmFjZSIsInVzZVQiLCJyZXNvbHZlVG9vbEFjdGlvbkxhYmVsIiwiZ2V0V3JpdGluZ1N0cmVhbUFjdGl2aXR5IiwiTU9DS19FVkVOVFMiLCJNT0NLX1NVTU1BUlkiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiTUVTU0FHRV9JRCIsIlNQRUVEUyIsIkJPRFlfQ0hVTktTIiwiRGV2UmVhc29uaW5nVGltZWxpbmUiLCJfdXNlVCIsInQiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJhY3Rpdml0eSIsInNldEFjdGl2aXR5IiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJib2R5Iiwic2V0Qm9keSIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2IiwiaXNEb25lIiwic2V0SXNEb25lIiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJzaG93VGhpbmtpbmciLCJzZXRTaG93VGhpbmtpbmciLCJfdXNlU3RhdGU5IiwiX3VzZVN0YXRlMCIsInNpbXVsYXRlQ29tcGFjdGlvbiIsInNldFNpbXVsYXRlQ29tcGFjdGlvbiIsIl91c2VTdGF0ZTEiLCJfdXNlU3RhdGUxMCIsInNwZWVkIiwic2V0U3BlZWQiLCJfdXNlU3RhdGUxMSIsIl91c2VTdGF0ZTEyIiwicnVuSWQiLCJzZXRSdW5JZCIsInRpbWVvdXRzUmVmIiwiY2xlYXJUaW1lcnMiLCJjdXJyZW50IiwiZm9yRWFjaCIsImlkIiwid2luZG93IiwiY2xlYXJUaW1lb3V0IiwicnVuIiwiY2xlYXIiLCJzdGFydCIsInBoYXNlIiwibWVzc2FnZSIsImVtaXR0ZWQiLCJNYXAiLCJzY2hlZHVsZSIsImF0IiwiZm4iLCJwdXNoIiwic2V0VGltZW91dCIsInNldENvbXBhY3Rpb24iLCJzdHJhdGVnaWVzIiwic3VtbWFyaXplZCIsImltYWdlc19wcnVuZWQiLCJ0dXJuc19kcm9wcGVkIiwidG9vbF9yZXN1bHRzX2NsZWFyZWQiLCJ0b2tlbnNfYmVmb3JlIiwidG9rZW5zX2FmdGVyIiwiYWdlbnQiLCJldmVudCIsImtpbmQiLCJhcHBlbmRUaGlua2luZyIsImkiLCJ0ZXh0Iiwic2l6ZSIsIk1hdGgiLCJjZWlsIiwibGVuZ3RoIiwiX2xvb3AiLCJzbGljZSIsImNodW5rIiwiZmluaXNoIiwidiIsInN0ZXBzIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwidmFsdWVzIiwic3VtbWFyeSIsInBheWxvYWQiLCJzZXQiLCJfb2JqZWN0U3ByZWFkIiwiZ2V0IiwiYXBwbHlTdGVwIiwidHlwZSIsIm1hcmtBbnN3ZXJSZXNldCIsInN0YXR1cyIsInRvb2wiLCJsYWJlbCIsIl91c2VSZWFzb25pbmdUcmFjZSIsIl91c2VSZWFzb25pbmdUcmFjZTIiLCJjb21wYWN0aW9uIiwic3RyZWFtTmFycmF0aW9uSW5UaW1lbGluZSIsInN0eWxlIiwicGFkZGluZyIsImRpc3BsYXkiLCJmbGV4RGlyZWN0aW9uIiwiZ2FwIiwiZm9udEZhbWlseSIsImNoaWxkcmVuIiwiYWxpZ25JdGVtcyIsImZsZXhXcmFwIiwib25DbGljayIsImZvbnRTaXplIiwibWFwIiwib3B0aW9uIiwiZm9udFdlaWdodCIsImh0bWxGb3IiLCJjaGVja2VkIiwib25DaGFuZ2UiLCJlIiwidGFyZ2V0IiwibWFyZ2luIiwiY29sb3IiLCJtYXhXaWR0aCIsIm1lc3NhZ2VJZCIsImNvbmNhdCIsInN0cmVhbUFjdGl2aXR5Iiwic3RyZWFtaW5nVGV4dCIsInZhcmlhbnQiLCJjb21wYWN0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Rldi9EZXZSZWFzb25pbmdUaW1lbGluZS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgcmVhY3QvYnV0dG9uLWhhcy10eXBlICovXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5cbmltcG9ydCB7IEFnZW50QWN0aXZpdHlJbmRpY2F0b3IgfSBmcm9tICcuLi9jb21wb25lbnRzL2F0b21zL0FnZW50QWN0aXZpdHlJbmRpY2F0b3IvQWdlbnRBY3Rpdml0eUluZGljYXRvcidcbmltcG9ydCB7IENvbnRleHRDb21wYWN0ZWROb3RpY2UgfSBmcm9tICcuLi9jb21wb25lbnRzL2F0b21zL0NvbnRleHRDb21wYWN0ZWROb3RpY2UvQ29udGV4dENvbXBhY3RlZE5vdGljZSdcbmltcG9ydCB7IE1haWFTdHJlYW1kb3duIH0gZnJvbSAnLi4vY29tcG9uZW50cy9hdG9tcy9NYWlhU3RyZWFtZG93bi9NYWlhU3RyZWFtZG93bidcbmltcG9ydCB7IFJlYXNvbmluZ0Jsb2NrIH0gZnJvbSAnLi4vY29tcG9uZW50cy9hdG9tcy9SZWFzb25pbmdCbG9jay9SZWFzb25pbmdCbG9jaydcbmltcG9ydCB7IFNDVGltZWxpbmVJbmRpY2F0b3IsIFNDRmluYWxBbnN3ZXJCb2R5IH0gZnJvbSAnLi4vY29tcG9uZW50cy9hdG9tcy9SZWFzb25pbmdCbG9jay9SZWFzb25pbmdCbG9jay5zdHlsZXMnXG5pbXBvcnQgeyBSZWFzb25pbmdUaW1lbGluZSB9IGZyb20gJy4uL2NvbXBvbmVudHMvYXRvbXMvUmVhc29uaW5nQmxvY2svUmVhc29uaW5nVGltZWxpbmUnXG5pbXBvcnQgeyBzaG91bGRTdHJlYW1OYXJyYXRpb25JblRpbWVsaW5lIH0gZnJvbSAnLi4vY29tcG9uZW50cy9hdG9tcy9SZWFzb25pbmdCbG9jay9yZWFzb25pbmdMaXZlTmFycmF0aW9uJ1xuaW1wb3J0IHsgcmVhc29uaW5nU3RvcmUgfSBmcm9tICcuLi9ob29rcy91c2VSZWFzb25pbmdUcmFjZS9yZWFzb25pbmdTdG9yZSdcbmltcG9ydCB7IHVzZVJlYXNvbmluZ1RyYWNlIH0gZnJvbSAnLi4vaG9va3MvdXNlUmVhc29uaW5nVHJhY2UnXG5pbXBvcnQgeyB1c2VUIH0gZnJvbSAnLi4vaG9va3MvdXNlVCdcbmltcG9ydCB7IHJlc29sdmVUb29sQWN0aW9uTGFiZWwsIGdldFdyaXRpbmdTdHJlYW1BY3Rpdml0eSB9IGZyb20gJy4uL3V0aWxzL3N0cmVhbUFjdGl2aXR5TWVzc2FnZXMnXG5pbXBvcnQgdHlwZSB7IFJlYXNvbmluZ1N0ZXBQYXlsb2FkIH0gZnJvbSAnLi4vdHlwZXMvcmVhc29uaW5nJ1xuaW1wb3J0IHR5cGUgeyBTdHJlYW1BY3Rpdml0eSB9IGZyb20gJy4uL3R5cGVzL3N0cmVhbUFjdGl2aXR5J1xuaW1wb3J0IHsgTU9DS19FVkVOVFMsIE1PQ0tfU1VNTUFSWSB9IGZyb20gJy4vcmVhc29uaW5nVHJhY2VNb2NrJ1xuXG5jb25zdCBNRVNTQUdFX0lEID0gJ2Fuc3dlci1kZXYtcmVhc29uaW5nLXN0cmVhbWluZydcbmNvbnN0IFNQRUVEUyA9IFsxLCAyLCA0LCA4XSBhcyBjb25zdFxuLyoqIENodW5rcyBlbiBsb3MgcXVlIHNlIHBhcnRlIGVsIHRleHRvIGRlIGNhZGEgdHVybm8gcGFyYSBzaW11bGFyIGxvcyB0b2tlbnMuICovXG5jb25zdCBCT0RZX0NIVU5LUyA9IDRcblxuZXhwb3J0IGZ1bmN0aW9uIERldlJlYXNvbmluZ1RpbWVsaW5lKCkge1xuICBjb25zdCB7IHQgfSA9IHVzZVQoKVxuICBjb25zdCBbYWN0aXZpdHksIHNldEFjdGl2aXR5XSA9IHVzZVN0YXRlPFN0cmVhbUFjdGl2aXR5IHwgbnVsbD4obnVsbClcbiAgY29uc3QgW2JvZHksIHNldEJvZHldID0gdXNlU3RhdGUoJycpXG4gIGNvbnN0IFtpc0RvbmUsIHNldElzRG9uZV0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW3Nob3dUaGlua2luZywgc2V0U2hvd1RoaW5raW5nXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbc2ltdWxhdGVDb21wYWN0aW9uLCBzZXRTaW11bGF0ZUNvbXBhY3Rpb25dID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtzcGVlZCwgc2V0U3BlZWRdID0gdXNlU3RhdGU8KHR5cGVvZiBTUEVFRFMpW251bWJlcl0+KDQpXG4gIGNvbnN0IFtydW5JZCwgc2V0UnVuSWRdID0gdXNlU3RhdGUoMClcbiAgY29uc3QgdGltZW91dHNSZWYgPSB1c2VSZWY8bnVtYmVyW10+KFtdKVxuXG4gIGNvbnN0IGNsZWFyVGltZXJzID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHRpbWVvdXRzUmVmLmN1cnJlbnQuZm9yRWFjaChpZCA9PiB3aW5kb3cuY2xlYXJUaW1lb3V0KGlkKSlcbiAgICB0aW1lb3V0c1JlZi5jdXJyZW50ID0gW11cbiAgfSwgW10pXG5cbiAgY29uc3QgcnVuID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNsZWFyVGltZXJzKClcbiAgICByZWFzb25pbmdTdG9yZS5jbGVhcigpXG4gICAgcmVhc29uaW5nU3RvcmUuc3RhcnQoTUVTU0FHRV9JRClcbiAgICBzZXRBY3Rpdml0eSh7IHBoYXNlOiAndGhpbmtpbmcnLCBtZXNzYWdlOiB0KCdjaGF0LmFjdGl2aXR5LnRoaW5raW5nLmFuYWx5emluZycpIH0pXG4gICAgc2V0Qm9keSgnJylcbiAgICBzZXRJc0RvbmUoZmFsc2UpXG4gICAgc2V0UnVuSWQoY3VycmVudCA9PiBjdXJyZW50ICsgMSlcblxuICAgIC8vIExhIHRyYXphIGF1dG9yaXRhdGl2YSBkZWwgYGNvbXBsZXRlYCBzZSBhcm1hIGNvbiBsb3MgbWlzbW9zIHN0ZXBzIHF1ZSBzZVxuICAgIC8vIGZ1ZXJvbiBlbWl0aWVuZG8sIHBhcmEgbm8gZHVwbGljYXIgZWwgcGF5bG9hZCBlbiBlbCBtb2NrLlxuICAgIGNvbnN0IGVtaXR0ZWQgPSBuZXcgTWFwPG51bWJlciwgUmVhc29uaW5nU3RlcFBheWxvYWQ+KClcbiAgICBjb25zdCBzY2hlZHVsZSA9IChhdDogbnVtYmVyLCBmbjogKCkgPT4gdm9pZCkgPT4ge1xuICAgICAgdGltZW91dHNSZWYuY3VycmVudC5wdXNoKHdpbmRvdy5zZXRUaW1lb3V0KGZuLCBhdCAvIHNwZWVkKSlcbiAgICB9XG5cbiAgICAvLyBgZXZlbnQ6IGNvbnRleHRfY29tcGFjdGVkYCBhIG1pdGFkIGRlbCB0dXJubywgY29tbyBjdWFuZG8gZWwgaGlzdG9yaWFsXG4gICAgLy8geWEgbm8gZW50cmEgeSBlbCBiYWNrZW5kIHRpZW5lIHF1ZSByZWNvcnRhciBhbnRlcyBkZSBpbnZvY2FyIGFsIG1vZGVsby5cbiAgICBpZiAoc2ltdWxhdGVDb21wYWN0aW9uKSB7XG4gICAgICBzY2hlZHVsZSg0MDAwLCAoKSA9PlxuICAgICAgICByZWFzb25pbmdTdG9yZS5zZXRDb21wYWN0aW9uKE1FU1NBR0VfSUQsIHtcbiAgICAgICAgICBzdHJhdGVnaWVzOiBbJ2NhcF90b29sX3Jlc3VsdHMnLCAncHJ1bmVfaW1hZ2VzJywgJ3N1bW1hcml6ZSddLFxuICAgICAgICAgIHN1bW1hcml6ZWQ6IHRydWUsXG4gICAgICAgICAgaW1hZ2VzX3BydW5lZDogMyxcbiAgICAgICAgICB0dXJuc19kcm9wcGVkOiAwLFxuICAgICAgICAgIHRvb2xfcmVzdWx0c19jbGVhcmVkOiA3LFxuICAgICAgICAgIHRva2Vuc19iZWZvcmU6IDI0MzAxMSxcbiAgICAgICAgICB0b2tlbnNfYWZ0ZXI6IDEzMTg4NCxcbiAgICAgICAgICBhZ2VudDogJ29yY2hlc3RyYXRvcjpkZXYnLFxuICAgICAgICB9KVxuICAgICAgKVxuICAgIH1cblxuICAgIE1PQ0tfRVZFTlRTLmZvckVhY2goZXZlbnQgPT4ge1xuICAgICAgaWYgKGV2ZW50LmtpbmQgPT09ICd0aGlua2luZycpIHtcbiAgICAgICAgc2NoZWR1bGUoZXZlbnQuYXQsICgpID0+IHJlYXNvbmluZ1N0b3JlLmFwcGVuZFRoaW5raW5nKE1FU1NBR0VfSUQsIGV2ZW50LmksIGV2ZW50LnRleHQpKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgaWYgKGV2ZW50LmtpbmQgPT09ICdib2R5Jykge1xuICAgICAgICBzY2hlZHVsZShldmVudC5hdCwgKCkgPT4gc2V0QWN0aXZpdHkoZ2V0V3JpdGluZ1N0cmVhbUFjdGl2aXR5KHQpKSlcbiAgICAgICAgLy8gVG9rZW5zOiBlbCB0ZXh0byBlbnRyYSBkZSBhIHBlZGF6b3MsIGNvbW8gZWwgc3RyZWFtIHJlYWwuXG4gICAgICAgIGNvbnN0IHNpemUgPSBNYXRoLmNlaWwoZXZlbnQudGV4dC5sZW5ndGggLyBCT0RZX0NIVU5LUylcbiAgICAgICAgZm9yIChsZXQgY2h1bmsgPSAwOyBjaHVuayA8IEJPRFlfQ0hVTktTOyBjaHVuayArPSAxKSB7XG4gICAgICAgICAgY29uc3Qgc2xpY2UgPSBldmVudC50ZXh0LnNsaWNlKDAsIHNpemUgKiAoY2h1bmsgKyAxKSlcbiAgICAgICAgICBzY2hlZHVsZShldmVudC5hdCArIGNodW5rICogMjIwLCAoKSA9PiBzZXRCb2R5KHNsaWNlKSlcbiAgICAgICAgfVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgaWYgKGV2ZW50LmtpbmQgPT09ICdjb21wbGV0ZScpIHtcbiAgICAgICAgc2NoZWR1bGUoZXZlbnQuYXQsICgpID0+IHtcbiAgICAgICAgICByZWFzb25pbmdTdG9yZS5maW5pc2goTUVTU0FHRV9JRCwgeyB2OiAxLCBzdGVwczogWy4uLmVtaXR0ZWQudmFsdWVzKCldLCBzdW1tYXJ5OiBNT0NLX1NVTU1BUlkgfSlcbiAgICAgICAgICBzZXRBY3Rpdml0eShudWxsKVxuICAgICAgICAgIHNldElzRG9uZSh0cnVlKVxuICAgICAgICB9KVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgc2NoZWR1bGUoZXZlbnQuYXQsICgpID0+IHtcbiAgICAgICAgY29uc3QgeyBwYXlsb2FkIH0gPSBldmVudFxuICAgICAgICBlbWl0dGVkLnNldChwYXlsb2FkLmksIHsgLi4uZW1pdHRlZC5nZXQocGF5bG9hZC5pKSwgLi4ucGF5bG9hZCB9KVxuXG4gICAgICAgIC8vIElndWFsIHF1ZSBhbnN3ZXJfcmVzZXQgKyByZWFzb25pbmdfc3RlcDogY29tbWl0ZWFyIGZpbGEgeSBsaW1waWFyIGJvZHkuXG4gICAgICAgIHJlYXNvbmluZ1N0b3JlLmFwcGx5U3RlcChNRVNTQUdFX0lELCBwYXlsb2FkKVxuICAgICAgICBpZiAocGF5bG9hZC50eXBlID09PSAnbmFycmF0aW9uJykge1xuICAgICAgICAgIHNldEJvZHkoJycpXG4gICAgICAgICAgcmVhc29uaW5nU3RvcmUubWFya0Fuc3dlclJlc2V0KE1FU1NBR0VfSUQpXG4gICAgICAgIH1cblxuICAgICAgICAvLyBFbCBtYW5hZ2VyIHNhY2EgZWwgbGFiZWwgZGUgYWN0aXZpZGFkIGRlIGxhIHRvb2wgcXVlIGFycmFuY2EgYSBjb3JyZXIuXG4gICAgICAgIGlmIChwYXlsb2FkLnN0YXR1cyA9PT0gJ3J1bm5pbmcnICYmIHBheWxvYWQudHlwZSA9PT0gJ3Rvb2wnICYmIHBheWxvYWQudG9vbCkge1xuICAgICAgICAgIGNvbnN0IGxhYmVsID0gcmVzb2x2ZVRvb2xBY3Rpb25MYWJlbChwYXlsb2FkLnRvb2wsIHQsICdwcmVzZW50JylcbiAgICAgICAgICBpZiAobGFiZWwpIHNldEFjdGl2aXR5KHsgcGhhc2U6ICdhY3Rpb24nLCBtZXNzYWdlOiBsYWJlbCB9KVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH0pXG4gIH0sIFtjbGVhclRpbWVycywgc2ltdWxhdGVDb21wYWN0aW9uLCBzcGVlZCwgdF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IGNsZWFyVGltZXJzLCBbY2xlYXJUaW1lcnNdKVxuXG4gIGNvbnN0IHsgc3RlcHMgfSA9IHVzZVJlYXNvbmluZ1RyYWNlKGlzRG9uZSA/ICcnIDogTUVTU0FHRV9JRClcbiAgY29uc3QgeyBjb21wYWN0aW9uIH0gPSB1c2VSZWFzb25pbmdUcmFjZShNRVNTQUdFX0lEKVxuICBjb25zdCBzdHJlYW1OYXJyYXRpb25JblRpbWVsaW5lID0gc2hvdWxkU3RyZWFtTmFycmF0aW9uSW5UaW1lbGluZShzdGVwcywgYWN0aXZpdHksIGJvZHksIE1FU1NBR0VfSUQpXG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBzdHlsZT17eyBwYWRkaW5nOiAyNCwgZGlzcGxheTogJ2ZsZXgnLCBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgZ2FwOiAyMCwgZm9udEZhbWlseTogJ1dvcmsgU2Fucywgc2Fucy1zZXJpZicgfX1cbiAgICA+XG4gICAgICA8ZGl2IHN0eWxlPXt7IGRpc3BsYXk6ICdmbGV4JywgZ2FwOiAxNiwgYWxpZ25JdGVtczogJ2NlbnRlcicsIGZsZXhXcmFwOiAnd3JhcCcgfX0+XG4gICAgICAgIDxidXR0b24gb25DbGljaz17cnVufSBzdHlsZT17eyBwYWRkaW5nOiAnNnB4IDE0cHgnIH19PlxuICAgICAgICAgIFJlcHJvZHVjaXIgdHVybm9cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxzcGFuIHN0eWxlPXt7IGRpc3BsYXk6ICdmbGV4JywgZ2FwOiA0LCBhbGlnbkl0ZW1zOiAnY2VudGVyJywgZm9udFNpemU6IDEzIH19PlxuICAgICAgICAgIFZlbG9jaWRhZDpcbiAgICAgICAgICB7U1BFRURTLm1hcChvcHRpb24gPT4gKFxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBrZXk9e29wdGlvbn1cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0U3BlZWQob3B0aW9uKX1cbiAgICAgICAgICAgICAgc3R5bGU9e3sgcGFkZGluZzogJzJweCA4cHgnLCBmb250V2VpZ2h0OiBzcGVlZCA9PT0gb3B0aW9uID8gNzAwIDogNDAwIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtvcHRpb259eFxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPGxhYmVsIGh0bWxGb3I9XCJkZXYtc2hvdy10aGlua2luZ1wiIHN0eWxlPXt7IGRpc3BsYXk6ICdmbGV4JywgZ2FwOiA2LCBhbGlnbkl0ZW1zOiAnY2VudGVyJywgZm9udFNpemU6IDEzIH19PlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgaWQ9XCJkZXYtc2hvdy10aGlua2luZ1wiXG4gICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgY2hlY2tlZD17c2hvd1RoaW5raW5nfVxuICAgICAgICAgICAgb25DaGFuZ2U9e2UgPT4gc2V0U2hvd1RoaW5raW5nKGUudGFyZ2V0LmNoZWNrZWQpfVxuICAgICAgICAgIC8+XG4gICAgICAgICAgTW9zdHJhciB0aGlua2luZyAod2luZG93LnJlYXNvbmluZ1RoaW5raW5nKVxuICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8bGFiZWwgaHRtbEZvcj1cImRldi1jb21wYWN0aW9uXCIgc3R5bGU9e3sgZGlzcGxheTogJ2ZsZXgnLCBnYXA6IDYsIGFsaWduSXRlbXM6ICdjZW50ZXInLCBmb250U2l6ZTogMTMgfX0+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBpZD1cImRldi1jb21wYWN0aW9uXCJcbiAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICBjaGVja2VkPXtzaW11bGF0ZUNvbXBhY3Rpb259XG4gICAgICAgICAgICBvbkNoYW5nZT17ZSA9PiBzZXRTaW11bGF0ZUNvbXBhY3Rpb24oZS50YXJnZXQuY2hlY2tlZCl9XG4gICAgICAgICAgLz5cbiAgICAgICAgICBTaW11bGFyIGNvbnRleHRfY29tcGFjdGVkXG4gICAgICAgIDwvbGFiZWw+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPHAgc3R5bGU9e3sgbWFyZ2luOiAwLCBmb250U2l6ZTogMTIsIGNvbG9yOiAnIzgwODA4MCcsIG1heFdpZHRoOiA2NDAgfX0+XG4gICAgICAgIFJlcGxheSBkZSB1biB0dXJubyByZWFsIGRlIDk0czogMzAgcGFzb3MsIDE4IHRvb2xzLCBkb3MgaGFuZG9mZnMgYW5pZGFkb3MgeSByw6FmYWdhcyBkZSB0b29scyBlbiBwYXJhbGVsby4gRWxcbiAgICAgICAgY3VlcnBvIGRlbCBtZW5zYWplIHNlIGxpbXBpYSBjb24gY2FkYSBuYXJyYWNpw7NuLCBpZ3VhbCBxdWUgZWwgPGNvZGU+YW5zd2VyX3Jlc2V0PC9jb2RlPiBkZWwgYmFja2VuZC5cbiAgICAgIDwvcD5cblxuICAgICAgPGRpdiBzdHlsZT17eyBtYXhXaWR0aDogNjQwLCBkaXNwbGF5OiAnZmxleCcsIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBnYXA6IDggfX0+XG4gICAgICAgIHtpc0RvbmUgPyAoXG4gICAgICAgICAgPFJlYXNvbmluZ0Jsb2NrIGtleT17YGJsb2NrLSR7cnVuSWR9YH0gbWVzc2FnZUlkPXtNRVNTQUdFX0lEfSAvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxSZWFzb25pbmdUaW1lbGluZVxuICAgICAgICAgICAgbWVzc2FnZUlkPXtNRVNTQUdFX0lEfVxuICAgICAgICAgICAgc2hvd1RoaW5raW5nPXtzaG93VGhpbmtpbmd9XG4gICAgICAgICAgICBzdHJlYW1BY3Rpdml0eT17YWN0aXZpdHl9XG4gICAgICAgICAgICBzdHJlYW1pbmdUZXh0PXtib2R5fVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICAgIDxDb250ZXh0Q29tcGFjdGVkTm90aWNlIGNvbXBhY3Rpb249e2NvbXBhY3Rpb259IC8+XG4gICAgICAgIHshc3RyZWFtTmFycmF0aW9uSW5UaW1lbGluZSAmJiAhIWJvZHkgJiYgKFxuICAgICAgICAgIDxTQ0ZpbmFsQW5zd2VyQm9keT5cbiAgICAgICAgICAgIDxNYWlhU3RyZWFtZG93biB2YXJpYW50PVwiY2hhdFwiPntib2R5fTwvTWFpYVN0cmVhbWRvd24+XG4gICAgICAgICAgPC9TQ0ZpbmFsQW5zd2VyQm9keT5cbiAgICAgICAgKX1cbiAgICAgICAge2FjdGl2aXR5ICYmIChcbiAgICAgICAgICA8U0NUaW1lbGluZUluZGljYXRvcj5cbiAgICAgICAgICAgIDxBZ2VudEFjdGl2aXR5SW5kaWNhdG9yIGFjdGl2aXR5PXthY3Rpdml0eX0gY29tcGFjdCAvPlxuICAgICAgICAgIDwvU0NUaW1lbGluZUluZGljYXRvcj5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7QUFDQSxTQUFTQSxXQUFXLEVBQUVDLFNBQVMsRUFBRUMsTUFBTSxFQUFFQyxRQUFRLFFBQVEsT0FBTztBQUVoRSxTQUFTQyxzQkFBc0IsUUFBUSxtRUFBbUU7QUFDMUcsU0FBU0Msc0JBQXNCLFFBQVEsbUVBQW1FO0FBQzFHLFNBQVNDLGNBQWMsUUFBUSxtREFBbUQ7QUFDbEYsU0FBU0MsY0FBYyxRQUFRLG1EQUFtRDtBQUNsRixTQUFTQyxtQkFBbUIsRUFBRUMsaUJBQWlCLFFBQVEsMERBQTBEO0FBQ2pILFNBQVNDLGlCQUFpQixRQUFRLHNEQUFzRDtBQUN4RixTQUFTQywrQkFBK0IsUUFBUSwyREFBMkQ7QUFDM0csU0FBU0MsY0FBYyxRQUFRLDJDQUEyQztBQUMxRSxTQUFTQyxpQkFBaUIsUUFBUSw0QkFBNEI7QUFDOUQsU0FBU0MsSUFBSSxRQUFRLGVBQWU7QUFDcEMsU0FBU0Msc0JBQXNCLEVBQUVDLHdCQUF3QixRQUFRLGlDQUFpQztBQUdsRyxTQUFTQyxXQUFXLEVBQUVDLFlBQVksUUFBUSxzQkFBc0I7QUFBQSxTQUFBQyxHQUFBLElBQUFDLElBQUEsRUFBQUMsSUFBQSxJQUFBQyxLQUFBO0FBRWhFLElBQU1DLFVBQVUsR0FBRyxnQ0FBZ0M7QUFDbkQsSUFBTUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFVO0FBQ3BDO0FBQ0EsSUFBTUMsV0FBVyxHQUFHLENBQUM7QUFFckIsT0FBTyxTQUFTQyxvQkFBb0JBLENBQUEsRUFBRztFQUNyQyxJQUFBQyxLQUFBLEdBQWNiLElBQUksQ0FBQyxDQUFDO0lBQVpjLENBQUMsR0FBQUQsS0FB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
237
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZVJlZiIsInVzZVN0YXRlIiwiQWdlbnRBY3Rpdml0eUluZGljYXRvciIsIk1haWFTdHJlYW1kb3duIiwiUmVhc29uaW5nQmxvY2siLCJTQ1RpbWVsaW5lSW5kaWNhdG9yIiwiU0NGaW5hbEFuc3dlckJvZHkiLCJSZWFzb25pbmdUaW1lbGluZSIsInNob3VsZFN0cmVhbU5hcnJhdGlvbkluVGltZWxpbmUiLCJyZWFzb25pbmdTdG9yZSIsInVzZVJlYXNvbmluZ1RyYWNlIiwidXNlVCIsInJlc29sdmVUb29sQWN0aW9uTGFiZWwiLCJnZXRXcml0aW5nU3RyZWFtQWN0aXZpdHkiLCJNT0NLX0VWRU5UUyIsIk1PQ0tfU1VNTUFSWSIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJNRVNTQUdFX0lEIiwiU1BFRURTIiwiQk9EWV9DSFVOS1MiLCJEZXZSZWFzb25pbmdUaW1lbGluZSIsIl91c2VUIiwidCIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsImFjdGl2aXR5Iiwic2V0QWN0aXZpdHkiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImJvZHkiLCJzZXRCb2R5IiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJpc0RvbmUiLCJzZXRJc0RvbmUiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsInNob3dUaGlua2luZyIsInNldFNob3dUaGlua2luZyIsIl91c2VTdGF0ZTkiLCJfdXNlU3RhdGUwIiwic3BlZWQiLCJzZXRTcGVlZCIsIl91c2VTdGF0ZTEiLCJfdXNlU3RhdGUxMCIsInJ1bklkIiwic2V0UnVuSWQiLCJ0aW1lb3V0c1JlZiIsImNsZWFyVGltZXJzIiwiY3VycmVudCIsImZvckVhY2giLCJpZCIsIndpbmRvdyIsImNsZWFyVGltZW91dCIsInJ1biIsImNsZWFyIiwic3RhcnQiLCJwaGFzZSIsIm1lc3NhZ2UiLCJlbWl0dGVkIiwiTWFwIiwic2NoZWR1bGUiLCJhdCIsImZuIiwicHVzaCIsInNldFRpbWVvdXQiLCJldmVudCIsImtpbmQiLCJhcHBlbmRUaGlua2luZyIsImkiLCJ0ZXh0Iiwic2l6ZSIsIk1hdGgiLCJjZWlsIiwibGVuZ3RoIiwiX2xvb3AiLCJzbGljZSIsImNodW5rIiwiZmluaXNoIiwidiIsInN0ZXBzIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwidmFsdWVzIiwic3VtbWFyeSIsInBheWxvYWQiLCJzZXQiLCJfb2JqZWN0U3ByZWFkIiwiZ2V0IiwiYXBwbHlTdGVwIiwidHlwZSIsIm1hcmtBbnN3ZXJSZXNldCIsInN0YXR1cyIsInRvb2wiLCJsYWJlbCIsIl91c2VSZWFzb25pbmdUcmFjZSIsInN0cmVhbU5hcnJhdGlvbkluVGltZWxpbmUiLCJzdHlsZSIsInBhZGRpbmciLCJkaXNwbGF5IiwiZmxleERpcmVjdGlvbiIsImdhcCIsImZvbnRGYW1pbHkiLCJjaGlsZHJlbiIsImFsaWduSXRlbXMiLCJmbGV4V3JhcCIsIm9uQ2xpY2siLCJmb250U2l6ZSIsIm1hcCIsIm9wdGlvbiIsImZvbnRXZWlnaHQiLCJodG1sRm9yIiwiY2hlY2tlZCIsIm9uQ2hhbmdlIiwiZSIsInRhcmdldCIsIm1hcmdpbiIsImNvbG9yIiwibWF4V2lkdGgiLCJtZXNzYWdlSWQiLCJjb25jYXQiLCJzdHJlYW1BY3Rpdml0eSIsInN0cmVhbWluZ1RleHQiLCJ2YXJpYW50IiwiY29tcGFjdCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kZXYvRGV2UmVhc29uaW5nVGltZWxpbmUudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L2J1dHRvbi1oYXMtdHlwZSAqL1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuXG5pbXBvcnQgeyBBZ2VudEFjdGl2aXR5SW5kaWNhdG9yIH0gZnJvbSAnLi4vY29tcG9uZW50cy9hdG9tcy9BZ2VudEFjdGl2aXR5SW5kaWNhdG9yL0FnZW50QWN0aXZpdHlJbmRpY2F0b3InXG5pbXBvcnQgeyBNYWlhU3RyZWFtZG93biB9IGZyb20gJy4uL2NvbXBvbmVudHMvYXRvbXMvTWFpYVN0cmVhbWRvd24vTWFpYVN0cmVhbWRvd24nXG5pbXBvcnQgeyBSZWFzb25pbmdCbG9jayB9IGZyb20gJy4uL2NvbXBvbmVudHMvYXRvbXMvUmVhc29uaW5nQmxvY2svUmVhc29uaW5nQmxvY2snXG5pbXBvcnQgeyBTQ1RpbWVsaW5lSW5kaWNhdG9yLCBTQ0ZpbmFsQW5zd2VyQm9keSB9IGZyb20gJy4uL2NvbXBvbmVudHMvYXRvbXMvUmVhc29uaW5nQmxvY2svUmVhc29uaW5nQmxvY2suc3R5bGVzJ1xuaW1wb3J0IHsgUmVhc29uaW5nVGltZWxpbmUgfSBmcm9tICcuLi9jb21wb25lbnRzL2F0b21zL1JlYXNvbmluZ0Jsb2NrL1JlYXNvbmluZ1RpbWVsaW5lJ1xuaW1wb3J0IHsgc2hvdWxkU3RyZWFtTmFycmF0aW9uSW5UaW1lbGluZSB9IGZyb20gJy4uL2NvbXBvbmVudHMvYXRvbXMvUmVhc29uaW5nQmxvY2svcmVhc29uaW5nTGl2ZU5hcnJhdGlvbidcbmltcG9ydCB7IHJlYXNvbmluZ1N0b3JlIH0gZnJvbSAnLi4vaG9va3MvdXNlUmVhc29uaW5nVHJhY2UvcmVhc29uaW5nU3RvcmUnXG5pbXBvcnQgeyB1c2VSZWFzb25pbmdUcmFjZSB9IGZyb20gJy4uL2hvb2tzL3VzZVJlYXNvbmluZ1RyYWNlJ1xuaW1wb3J0IHsgdXNlVCB9IGZyb20gJy4uL2hvb2tzL3VzZVQnXG5pbXBvcnQgeyByZXNvbHZlVG9vbEFjdGlvbkxhYmVsLCBnZXRXcml0aW5nU3RyZWFtQWN0aXZpdHkgfSBmcm9tICcuLi91dGlscy9zdHJlYW1BY3Rpdml0eU1lc3NhZ2VzJ1xuaW1wb3J0IHR5cGUgeyBSZWFzb25pbmdTdGVwUGF5bG9hZCB9IGZyb20gJy4uL3R5cGVzL3JlYXNvbmluZydcbmltcG9ydCB0eXBlIHsgU3RyZWFtQWN0aXZpdHkgfSBmcm9tICcuLi90eXBlcy9zdHJlYW1BY3Rpdml0eSdcbmltcG9ydCB7IE1PQ0tfRVZFTlRTLCBNT0NLX1NVTU1BUlkgfSBmcm9tICcuL3JlYXNvbmluZ1RyYWNlTW9jaydcblxuY29uc3QgTUVTU0FHRV9JRCA9ICdhbnN3ZXItZGV2LXJlYXNvbmluZy1zdHJlYW1pbmcnXG5jb25zdCBTUEVFRFMgPSBbMSwgMiwgNCwgOF0gYXMgY29uc3Rcbi8qKiBDaHVua3MgZW4gbG9zIHF1ZSBzZSBwYXJ0ZSBlbCB0ZXh0byBkZSBjYWRhIHR1cm5vIHBhcmEgc2ltdWxhciBsb3MgdG9rZW5zLiAqL1xuY29uc3QgQk9EWV9DSFVOS1MgPSA0XG5cbmV4cG9ydCBmdW5jdGlvbiBEZXZSZWFzb25pbmdUaW1lbGluZSgpIHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUKClcbiAgY29uc3QgW2FjdGl2aXR5LCBzZXRBY3Rpdml0eV0gPSB1c2VTdGF0ZTxTdHJlYW1BY3Rpdml0eSB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtib2R5LCBzZXRCb2R5XSA9IHVzZVN0YXRlKCcnKVxuICBjb25zdCBbaXNEb25lLCBzZXRJc0RvbmVdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtzaG93VGhpbmtpbmcsIHNldFNob3dUaGlua2luZ10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW3NwZWVkLCBzZXRTcGVlZF0gPSB1c2VTdGF0ZTwodHlwZW9mIFNQRUVEUylbbnVtYmVyXT4oNClcbiAgY29uc3QgW3J1bklkLCBzZXRSdW5JZF0gPSB1c2VTdGF0ZSgwKVxuICBjb25zdCB0aW1lb3V0c1JlZiA9IHVzZVJlZjxudW1iZXJbXT4oW10pXG5cbiAgY29uc3QgY2xlYXJUaW1lcnMgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgdGltZW91dHNSZWYuY3VycmVudC5mb3JFYWNoKGlkID0+IHdpbmRvdy5jbGVhclRpbWVvdXQoaWQpKVxuICAgIHRpbWVvdXRzUmVmLmN1cnJlbnQgPSBbXVxuICB9LCBbXSlcblxuICBjb25zdCBydW4gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY2xlYXJUaW1lcnMoKVxuICAgIHJlYXNvbmluZ1N0b3JlLmNsZWFyKClcbiAgICByZWFzb25pbmdTdG9yZS5zdGFydChNRVNTQUdFX0lEKVxuICAgIHNldEFjdGl2aXR5KHsgcGhhc2U6ICd0aGlua2luZycsIG1lc3NhZ2U6IHQoJ2NoYXQuYWN0aXZpdHkudGhpbmtpbmcuYW5hbHl6aW5nJykgfSlcbiAgICBzZXRCb2R5KCcnKVxuICAgIHNldElzRG9uZShmYWxzZSlcbiAgICBzZXRSdW5JZChjdXJyZW50ID0+IGN1cnJlbnQgKyAxKVxuXG4gICAgLy8gTGEgdHJhemEgYXV0b3JpdGF0aXZhIGRlbCBgY29tcGxldGVgIHNlIGFybWEgY29uIGxvcyBtaXNtb3Mgc3RlcHMgcXVlIHNlXG4gICAgLy8gZnVlcm9uIGVtaXRpZW5kbywgcGFyYSBubyBkdXBsaWNhciBlbCBwYXlsb2FkIGVuIGVsIG1vY2suXG4gICAgY29uc3QgZW1pdHRlZCA9IG5ldyBNYXA8bnVtYmVyLCBSZWFzb25pbmdTdGVwUGF5bG9hZD4oKVxuICAgIGNvbnN0IHNjaGVkdWxlID0gKGF0OiBudW1iZXIsIGZuOiAoKSA9PiB2b2lkKSA9PiB7XG4gICAgICB0aW1lb3V0c1JlZi5jdXJyZW50LnB1c2god2luZG93LnNldFRpbWVvdXQoZm4sIGF0IC8gc3BlZWQpKVxuICAgIH1cblxuICAgIE1PQ0tfRVZFTlRTLmZvckVhY2goZXZlbnQgPT4ge1xuICAgICAgaWYgKGV2ZW50LmtpbmQgPT09ICd0aGlua2luZycpIHtcbiAgICAgICAgc2NoZWR1bGUoZXZlbnQuYXQsICgpID0+IHJlYXNvbmluZ1N0b3JlLmFwcGVuZFRoaW5raW5nKE1FU1NBR0VfSUQsIGV2ZW50LmksIGV2ZW50LnRleHQpKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgaWYgKGV2ZW50LmtpbmQgPT09ICdib2R5Jykge1xuICAgICAgICBzY2hlZHVsZShldmVudC5hdCwgKCkgPT4gc2V0QWN0aXZpdHkoZ2V0V3JpdGluZ1N0cmVhbUFjdGl2aXR5KHQpKSlcbiAgICAgICAgLy8gVG9rZW5zOiBlbCB0ZXh0byBlbnRyYSBkZSBhIHBlZGF6b3MsIGNvbW8gZWwgc3RyZWFtIHJlYWwuXG4gICAgICAgIGNvbnN0IHNpemUgPSBNYXRoLmNlaWwoZXZlbnQudGV4dC5sZW5ndGggLyBCT0RZX0NIVU5LUylcbiAgICAgICAgZm9yIChsZXQgY2h1bmsgPSAwOyBjaHVuayA8IEJPRFlfQ0hVTktTOyBjaHVuayArPSAxKSB7XG4gICAgICAgICAgY29uc3Qgc2xpY2UgPSBldmVudC50ZXh0LnNsaWNlKDAsIHNpemUgKiAoY2h1bmsgKyAxKSlcbiAgICAgICAgICBzY2hlZHVsZShldmVudC5hdCArIGNodW5rICogMjIwLCAoKSA9PiBzZXRCb2R5KHNsaWNlKSlcbiAgICAgICAgfVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgaWYgKGV2ZW50LmtpbmQgPT09ICdjb21wbGV0ZScpIHtcbiAgICAgICAgc2NoZWR1bGUoZXZlbnQuYXQsICgpID0+IHtcbiAgICAgICAgICByZWFzb25pbmdTdG9yZS5maW5pc2goTUVTU0FHRV9JRCwgeyB2OiAxLCBzdGVwczogWy4uLmVtaXR0ZWQudmFsdWVzKCldLCBzdW1tYXJ5OiBNT0NLX1NVTU1BUlkgfSlcbiAgICAgICAgICBzZXRBY3Rpdml0eShudWxsKVxuICAgICAgICAgIHNldElzRG9uZSh0cnVlKVxuICAgICAgICB9KVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgc2NoZWR1bGUoZXZlbnQuYXQsICgpID0+IHtcbiAgICAgICAgY29uc3QgeyBwYXlsb2FkIH0gPSBldmVudFxuICAgICAgICBlbWl0dGVkLnNldChwYXlsb2FkLmksIHsgLi4uZW1pdHRlZC5nZXQocGF5bG9hZC5pKSwgLi4ucGF5bG9hZCB9KVxuXG4gICAgICAgIC8vIElndWFsIHF1ZSBhbnN3ZXJfcmVzZXQgKyByZWFzb25pbmdfc3RlcDogY29tbWl0ZWFyIGZpbGEgeSBsaW1waWFyIGJvZHkuXG4gICAgICAgIHJlYXNvbmluZ1N0b3JlLmFwcGx5U3RlcChNRVNTQUdFX0lELCBwYXlsb2FkKVxuICAgICAgICBpZiAocGF5bG9hZC50eXBlID09PSAnbmFycmF0aW9uJykge1xuICAgICAgICAgIHNldEJvZHkoJycpXG4gICAgICAgICAgcmVhc29uaW5nU3RvcmUubWFya0Fuc3dlclJlc2V0KE1FU1NBR0VfSUQpXG4gICAgICAgIH1cblxuICAgICAgICAvLyBFbCBtYW5hZ2VyIHNhY2EgZWwgbGFiZWwgZGUgYWN0aXZpZGFkIGRlIGxhIHRvb2wgcXVlIGFycmFuY2EgYSBjb3JyZXIuXG4gICAgICAgIGlmIChwYXlsb2FkLnN0YXR1cyA9PT0gJ3J1bm5pbmcnICYmIHBheWxvYWQudHlwZSA9PT0gJ3Rvb2wnICYmIHBheWxvYWQudG9vbCkge1xuICAgICAgICAgIGNvbnN0IGxhYmVsID0gcmVzb2x2ZVRvb2xBY3Rpb25MYWJlbChwYXlsb2FkLnRvb2wsIHQsICdwcmVzZW50JylcbiAgICAgICAgICBpZiAobGFiZWwpIHNldEFjdGl2aXR5KHsgcGhhc2U6ICdhY3Rpb24nLCBtZXNzYWdlOiBsYWJlbCB9KVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH0pXG4gIH0sIFtjbGVhclRpbWVycywgc3BlZWQsIHRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiBjbGVhclRpbWVycywgW2NsZWFyVGltZXJzXSlcblxuICBjb25zdCB7IHN0ZXBzIH0gPSB1c2VSZWFzb25pbmdUcmFjZShpc0RvbmUgPyAnJyA6IE1FU1NBR0VfSUQpXG4gIGNvbnN0IHN0cmVhbU5hcnJhdGlvbkluVGltZWxpbmUgPSBzaG91bGRTdHJlYW1OYXJyYXRpb25JblRpbWVsaW5lKHN0ZXBzLCBhY3Rpdml0eSwgYm9keSwgTUVTU0FHRV9JRClcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHN0eWxlPXt7IHBhZGRpbmc6IDI0LCBkaXNwbGF5OiAnZmxleCcsIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBnYXA6IDIwLCBmb250RmFtaWx5OiAnV29yayBTYW5zLCBzYW5zLXNlcmlmJyB9fVxuICAgID5cbiAgICAgIDxkaXYgc3R5bGU9e3sgZGlzcGxheTogJ2ZsZXgnLCBnYXA6IDE2LCBhbGlnbkl0ZW1zOiAnY2VudGVyJywgZmxleFdyYXA6ICd3cmFwJyB9fT5cbiAgICAgICAgPGJ1dHRvbiBvbkNsaWNrPXtydW59IHN0eWxlPXt7IHBhZGRpbmc6ICc2cHggMTRweCcgfX0+XG4gICAgICAgICAgUmVwcm9kdWNpciB0dXJub1xuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPHNwYW4gc3R5bGU9e3sgZGlzcGxheTogJ2ZsZXgnLCBnYXA6IDQsIGFsaWduSXRlbXM6ICdjZW50ZXInLCBmb250U2l6ZTogMTMgfX0+XG4gICAgICAgICAgVmVsb2NpZGFkOlxuICAgICAgICAgIHtTUEVFRFMubWFwKG9wdGlvbiA9PiAoXG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGtleT17b3B0aW9ufVxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRTcGVlZChvcHRpb24pfVxuICAgICAgICAgICAgICBzdHlsZT17eyBwYWRkaW5nOiAnMnB4IDhweCcsIGZvbnRXZWlnaHQ6IHNwZWVkID09PSBvcHRpb24gPyA3MDAgOiA0MDAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge29wdGlvbn14XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8bGFiZWwgaHRtbEZvcj1cImRldi1zaG93LXRoaW5raW5nXCIgc3R5bGU9e3sgZGlzcGxheTogJ2ZsZXgnLCBnYXA6IDYsIGFsaWduSXRlbXM6ICdjZW50ZXInLCBmb250U2l6ZTogMTMgfX0+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBpZD1cImRldi1zaG93LXRoaW5raW5nXCJcbiAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICBjaGVja2VkPXtzaG93VGhpbmtpbmd9XG4gICAgICAgICAgICBvbkNoYW5nZT17ZSA9PiBzZXRTaG93VGhpbmtpbmcoZS50YXJnZXQuY2hlY2tlZCl9XG4gICAgICAgICAgLz5cbiAgICAgICAgICBNb3N0cmFyIHRoaW5raW5nICh3aW5kb3cucmVhc29uaW5nVGhpbmtpbmcpXG4gICAgICAgIDwvbGFiZWw+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPHAgc3R5bGU9e3sgbWFyZ2luOiAwLCBmb250U2l6ZTogMTIsIGNvbG9yOiAnIzgwODA4MCcsIG1heFdpZHRoOiA2NDAgfX0+XG4gICAgICAgIFJlcGxheSBkZSB1biB0dXJubyByZWFsIGRlIDk0czogMzAgcGFzb3MsIDE4IHRvb2xzLCBkb3MgaGFuZG9mZnMgYW5pZGFkb3MgeSByw6FmYWdhcyBkZSB0b29scyBlbiBwYXJhbGVsby4gRWxcbiAgICAgICAgY3VlcnBvIGRlbCBtZW5zYWplIHNlIGxpbXBpYSBjb24gY2FkYSBuYXJyYWNpw7NuLCBpZ3VhbCBxdWUgZWwgPGNvZGU+YW5zd2VyX3Jlc2V0PC9jb2RlPiBkZWwgYmFja2VuZC5cbiAgICAgIDwvcD5cblxuICAgICAgPGRpdiBzdHlsZT17eyBtYXhXaWR0aDogNjQwLCBkaXNwbGF5OiAnZmxleCcsIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBnYXA6IDggfX0+XG4gICAgICAgIHtpc0RvbmUgPyAoXG4gICAgICAgICAgPFJlYXNvbmluZ0Jsb2NrIGtleT17YGJsb2NrLSR7cnVuSWR9YH0gbWVzc2FnZUlkPXtNRVNTQUdFX0lEfSAvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxSZWFzb25pbmdUaW1lbGluZVxuICAgICAgICAgICAgbWVzc2FnZUlkPXtNRVNTQUdFX0lEfVxuICAgICAgICAgICAgc2hvd1RoaW5raW5nPXtzaG93VGhpbmtpbmd9XG4gICAgICAgICAgICBzdHJlYW1BY3Rpdml0eT17YWN0aXZpdHl9XG4gICAgICAgICAgICBzdHJlYW1pbmdUZXh0PXtib2R5fVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICAgIHshc3RyZWFtTmFycmF0aW9uSW5UaW1lbGluZSAmJiAhIWJvZHkgJiYgKFxuICAgICAgICAgIDxTQ0ZpbmFsQW5zd2VyQm9keT5cbiAgICAgICAgICAgIDxNYWlhU3RyZWFtZG93biB2YXJpYW50PVwiY2hhdFwiPntib2R5fTwvTWFpYVN0cmVhbWRvd24+XG4gICAgICAgICAgPC9TQ0ZpbmFsQW5zd2VyQm9keT5cbiAgICAgICAgKX1cbiAgICAgICAge2FjdGl2aXR5ICYmIChcbiAgICAgICAgICA8U0NUaW1lbGluZUluZGljYXRvcj5cbiAgICAgICAgICAgIDxBZ2VudEFjdGl2aXR5SW5kaWNhdG9yIGFjdGl2aXR5PXthY3Rpdml0eX0gY29tcGFjdCAvPlxuICAgICAgICAgIDwvU0NUaW1lbGluZUluZGljYXRvcj5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7QUFDQSxTQUFTQSxXQUFXLEVBQUVDLFNBQVMsRUFBRUMsTUFBTSxFQUFFQyxRQUFRLFFBQVEsT0FBTztBQUVoRSxTQUFTQyxzQkFBc0IsUUFBUSxtRUFBbUU7QUFDMUcsU0FBU0MsY0FBYyxRQUFRLG1EQUFtRDtBQUNsRixTQUFTQyxjQUFjLFFBQVEsbURBQW1EO0FBQ2xGLFNBQVNDLG1CQUFtQixFQUFFQyxpQkFBaUIsUUFBUSwwREFBMEQ7QUFDakgsU0FBU0MsaUJBQWlCLFFBQVEsc0RBQXNEO0FBQ3hGLFNBQVNDLCtCQUErQixRQUFRLDJEQUEyRDtBQUMzRyxTQUFTQyxjQUFjLFFBQVEsMkNBQTJDO0FBQzFFLFNBQVNDLGlCQUFpQixRQUFRLDRCQUE0QjtBQUM5RCxTQUFTQyxJQUFJLFFBQVEsZUFBZTtBQUNwQyxTQUFTQyxzQkFBc0IsRUFBRUMsd0JBQXdCLFFBQVEsaUNBQWlDO0FBR2xHLFNBQVNDLFdBQVcsRUFBRUMsWUFBWSxRQUFRLHNCQUFzQjtBQUFBLFNBQUFDLEdBQUEsSUFBQUMsSUFBQSxFQUFBQyxJQUFBLElBQUFDLEtBQUE7QUFFaEUsSUFBTUMsVUFBVSxH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