@projectcor/maia-components 2.11.100-4 → 2.11.100-6

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.
@@ -1,11 +1,28 @@
1
- import React, { memo, useEffect } from 'react';
1
+ import React, { memo, useEffect, useMemo } from 'react';
2
2
  import { AgentActivityIndicator } from '../../atoms/AgentActivityIndicator';
3
- import { buildActivityFromExecutionSegment } from '../../../utils/streamTimeline';
3
+ import { collectRunningStepsFromTimeline } from '../../../utils/streamTimeline';
4
4
  import { getWritingStreamActivity } from '../../../utils/streamActivityMessages';
5
5
  import { useT } from '../../../hooks/useT';
6
6
  import { streamDebugLog } from '../../../utils/streamDebugLog';
7
7
  import { SCStreamExecutionSegment, SCStreamTurnTimeline, SCStreamTurnContentBlock } from './StreamAssistantTurnTimeline.styles';
8
8
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
9
+ var buildBottomTimelineActivity = function buildBottomTimelineActivity(runningSteps, waitingResponse, isWriting, initialActivity, t) {
10
+ if (runningSteps.length > 0) {
11
+ var activeStep = runningSteps[runningSteps.length - 1];
12
+ return {
13
+ phase: 'action',
14
+ message: activeStep.message,
15
+ executionSteps: runningSteps
16
+ };
17
+ }
18
+ if (isWriting) {
19
+ return (initialActivity === null || initialActivity === void 0 ? void 0 : initialActivity.phase) === 'writing' ? initialActivity : getWritingStreamActivity(t);
20
+ }
21
+ if (waitingResponse && initialActivity) {
22
+ return initialActivity;
23
+ }
24
+ return null;
25
+ };
9
26
  export var StreamAssistantTurnTimeline = /*#__PURE__*/memo(function (_ref) {
10
27
  var segments = _ref.segments,
11
28
  initialActivity = _ref.initialActivity,
@@ -14,76 +31,61 @@ export var StreamAssistantTurnTimeline = /*#__PURE__*/memo(function (_ref) {
14
31
  renderContentBlock = _ref.renderContentBlock;
15
32
  var _useT = useT(),
16
33
  t = _useT.t;
34
+ var runningSteps = useMemo(function () {
35
+ return collectRunningStepsFromTimeline(segments);
36
+ }, [segments]);
37
+ var contentSegments = useMemo(function () {
38
+ return segments.filter(function (segment) {
39
+ return segment.type === 'content';
40
+ });
41
+ }, [segments]);
42
+ var bottomActivity = useMemo(function () {
43
+ return buildBottomTimelineActivity(runningSteps, waitingResponse, isWriting, initialActivity, t);
44
+ }, [runningSteps, waitingResponse, isWriting, initialActivity, t]);
17
45
  useEffect(function () {
18
46
  if (!waitingResponse && !isWriting && segments.length === 0) return;
19
- var executionSegments = segments.filter(function (segment) {
20
- return segment.type === 'execution';
21
- });
22
47
  streamDebugLog('streamTimelineUI', 'render', {
23
48
  waitingResponse: waitingResponse,
24
49
  isWriting: isWriting,
25
50
  segmentCount: segments.length,
26
- executionSegmentCount: executionSegments.length,
51
+ contentSegmentCount: contentSegments.length,
52
+ runningStepCount: runningSteps.length,
27
53
  hasInitialActivity: Boolean(initialActivity),
28
54
  initialActivityMessage: initialActivity === null || initialActivity === void 0 ? void 0 : initialActivity.message,
29
- executionSteps: executionSegments.flatMap(function (segment) {
30
- return segment.type === 'execution' ? segment.steps.map(function (step) {
31
- return {
32
- node: step.node,
33
- toolName: step.toolName,
34
- status: step.status,
35
- message: step.message
36
- };
37
- }) : [];
55
+ bottomActivityPhase: bottomActivity === null || bottomActivity === void 0 ? void 0 : bottomActivity.phase,
56
+ runningSteps: runningSteps.map(function (step) {
57
+ return {
58
+ node: step.node,
59
+ toolName: step.toolName,
60
+ status: step.status,
61
+ message: step.message
62
+ };
38
63
  })
39
64
  });
40
- }, [segments, initialActivity, waitingResponse, isWriting]);
65
+ }, [segments, contentSegments.length, initialActivity, waitingResponse, isWriting, runningSteps, bottomActivity === null || bottomActivity === void 0 ? void 0 : bottomActivity.phase]);
41
66
  if (!waitingResponse && !isWriting && segments.length === 0) {
42
67
  return null;
43
68
  }
44
- var contentBlockIndex = 0;
45
- var executionSegments = segments.filter(function (segment) {
46
- return segment.type === 'execution';
47
- });
48
- var hasExecutionSegments = executionSegments.length > 0;
49
- var hasContentSegments = segments.some(function (segment) {
50
- return segment.type === 'content';
51
- });
52
- var preStreamActivity = waitingResponse && segments.length === 0 && initialActivity ? initialActivity : null;
53
- var writingOnlyActivity = isWriting && !hasExecutionSegments && hasContentSegments ? (initialActivity === null || initialActivity === void 0 ? void 0 : initialActivity.phase) === 'writing' ? initialActivity : getWritingStreamActivity(t) : null;
69
+ var hasContent = contentSegments.length > 0;
54
70
  return /*#__PURE__*/_jsxs(SCStreamTurnTimeline, {
55
- children: [preStreamActivity && /*#__PURE__*/_jsx(SCStreamExecutionSegment, {
56
- children: /*#__PURE__*/_jsx(AgentActivityIndicator, {
57
- activity: preStreamActivity
58
- })
59
- }), writingOnlyActivity && /*#__PURE__*/_jsx(SCStreamExecutionSegment, {
60
- children: /*#__PURE__*/_jsx(AgentActivityIndicator, {
61
- activity: writingOnlyActivity
62
- })
63
- }), segments.map(function (segment, index) {
64
- var previousSegment = index > 0 ? segments[index - 1] : undefined;
65
- if (segment.type === 'execution') {
66
- return /*#__PURE__*/_jsx(SCStreamExecutionSegment, {
67
- $afterContent: (previousSegment === null || previousSegment === void 0 ? void 0 : previousSegment.type) === 'content',
68
- children: /*#__PURE__*/_jsx(AgentActivityIndicator, {
69
- activity: buildActivityFromExecutionSegment(segment, t)
70
- })
71
- }, segment.id);
72
- }
73
- var isLastSegment = index === segments.length - 1;
74
- var isStreaming = isLastSegment && isWriting;
75
- var showAssistantHeader = contentBlockIndex === 0;
76
- contentBlockIndex += 1;
71
+ children: [contentSegments.map(function (segment, index) {
72
+ var isLastContent = index === contentSegments.length - 1;
73
+ var showAssistantHeader = index === 0;
77
74
  return /*#__PURE__*/_jsx(SCStreamTurnContentBlock, {
78
75
  children: renderContentBlock({
79
76
  segmentId: segment.id,
80
77
  text: segment.text,
81
- isStreaming: isStreaming,
78
+ isStreaming: isLastContent && isWriting,
82
79
  showAssistantHeader: showAssistantHeader
83
80
  })
84
81
  }, segment.id);
82
+ }), bottomActivity && /*#__PURE__*/_jsx(SCStreamExecutionSegment, {
83
+ $afterContent: hasContent,
84
+ children: /*#__PURE__*/_jsx(AgentActivityIndicator, {
85
+ activity: bottomActivity
86
+ })
85
87
  })]
86
88
  });
87
89
  });
88
90
  StreamAssistantTurnTimeline.displayName = 'StreamAssistantTurnTimeline';
89
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIm1lbW8iLCJ1c2VFZmZlY3QiLCJBZ2VudEFjdGl2aXR5SW5kaWNhdG9yIiwiYnVpbGRBY3Rpdml0eUZyb21FeGVjdXRpb25TZWdtZW50IiwiZ2V0V3JpdGluZ1N0cmVhbUFjdGl2aXR5IiwidXNlVCIsInN0cmVhbURlYnVnTG9nIiwiU0NTdHJlYW1FeGVjdXRpb25TZWdtZW50IiwiU0NTdHJlYW1UdXJuVGltZWxpbmUiLCJTQ1N0cmVhbVR1cm5Db250ZW50QmxvY2siLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiU3RyZWFtQXNzaXN0YW50VHVyblRpbWVsaW5lIiwiX3JlZiIsInNlZ21lbnRzIiwiaW5pdGlhbEFjdGl2aXR5Iiwid2FpdGluZ1Jlc3BvbnNlIiwiaXNXcml0aW5nIiwicmVuZGVyQ29udGVudEJsb2NrIiwiX3VzZVQiLCJ0IiwibGVuZ3RoIiwiZXhlY3V0aW9uU2VnbWVudHMiLCJmaWx0ZXIiLCJzZWdtZW50IiwidHlwZSIsInNlZ21lbnRDb3VudCIsImV4ZWN1dGlvblNlZ21lbnRDb3VudCIsImhhc0luaXRpYWxBY3Rpdml0eSIsIkJvb2xlYW4iLCJpbml0aWFsQWN0aXZpdHlNZXNzYWdlIiwibWVzc2FnZSIsImV4ZWN1dGlvblN0ZXBzIiwiZmxhdE1hcCIsInN0ZXBzIiwibWFwIiwic3RlcCIsIm5vZGUiLCJ0b29sTmFtZSIsInN0YXR1cyIsImNvbnRlbnRCbG9ja0luZGV4IiwiaGFzRXhlY3V0aW9uU2VnbWVudHMiLCJoYXNDb250ZW50U2VnbWVudHMiLCJzb21lIiwicHJlU3RyZWFtQWN0aXZpdHkiLCJ3cml0aW5nT25seUFjdGl2aXR5IiwicGhhc2UiLCJjaGlsZHJlbiIsImFjdGl2aXR5IiwiaW5kZXgiLCJwcmV2aW91c1NlZ21lbnQiLCJ1bmRlZmluZWQiLCIkYWZ0ZXJDb250ZW50IiwiaWQiLCJpc0xhc3RTZWdtZW50IiwiaXNTdHJlYW1pbmciLCJzaG93QXNzaXN0YW50SGVhZGVyIiwic2VnbWVudElkIiwidGV4dCIsImRpc3BsYXlOYW1lIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL1N0cmVhbUFzc2lzdGFudFR1cm5UaW1lbGluZS9TdHJlYW1Bc3Npc3RhbnRUdXJuVGltZWxpbmUudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBtZW1vLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB0eXBlIHsgU3RyZWFtQWN0aXZpdHkgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9zdHJlYW1BY3Rpdml0eSdcbmltcG9ydCB0eXBlIHsgU3RyZWFtVGltZWxpbmVTZWdtZW50IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvc3RyZWFtVGltZWxpbmUnXG5pbXBvcnQgeyBBZ2VudEFjdGl2aXR5SW5kaWNhdG9yIH0gZnJvbSAnLi4vLi4vYXRvbXMvQWdlbnRBY3Rpdml0eUluZGljYXRvcidcbmltcG9ydCB7IGJ1aWxkQWN0aXZpdHlGcm9tRXhlY3V0aW9uU2VnbWVudCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL3N0cmVhbVRpbWVsaW5lJ1xuaW1wb3J0IHsgZ2V0V3JpdGluZ1N0cmVhbUFjdGl2aXR5IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvc3RyZWFtQWN0aXZpdHlNZXNzYWdlcydcbmltcG9ydCB7IHVzZVQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VUJ1xuaW1wb3J0IHsgc3RyZWFtRGVidWdMb2cgfSBmcm9tICcuLi8uLi8uLi91dGlscy9zdHJlYW1EZWJ1Z0xvZydcbmltcG9ydCB7XG4gIFNDU3RyZWFtRXhlY3V0aW9uU2VnbWVudCxcbiAgU0NTdHJlYW1UdXJuVGltZWxpbmUsXG4gIFNDU3RyZWFtVHVybkNvbnRlbnRCbG9jayxcbn0gZnJvbSAnLi9TdHJlYW1Bc3Npc3RhbnRUdXJuVGltZWxpbmUuc3R5bGVzJ1xuXG5leHBvcnQgdHlwZSBTdHJlYW1Bc3Npc3RhbnRUdXJuVGltZWxpbmVQcm9wcyA9IHtcbiAgc2VnbWVudHM6IFN0cmVhbVRpbWVsaW5lU2VnbWVudFtdXG4gIGluaXRpYWxBY3Rpdml0eTogU3RyZWFtQWN0aXZpdHkgfCBudWxsXG4gIHdhaXRpbmdSZXNwb25zZTogYm9vbGVhblxuICBpc1dyaXRpbmc6IGJvb2xlYW5cbiAgcmVuZGVyQ29udGVudEJsb2NrOiAocGFyYW1zOiB7XG4gICAgc2VnbWVudElkOiBzdHJpbmdcbiAgICB0ZXh0OiBzdHJpbmdcbiAgICBpc1N0cmVhbWluZzogYm9vbGVhblxuICAgIHNob3dBc3Npc3RhbnRIZWFkZXI6IGJvb2xlYW5cbiAgfSkgPT4gUmVhY3QuUmVhY3ROb2RlXG59XG5cbmV4cG9ydCBjb25zdCBTdHJlYW1Bc3Npc3RhbnRUdXJuVGltZWxpbmUgPSBtZW1vKFxuICAoeyBzZWdtZW50cywgaW5pdGlhbEFjdGl2aXR5LCB3YWl0aW5nUmVzcG9uc2UsIGlzV3JpdGluZywgcmVuZGVyQ29udGVudEJsb2NrIH06IFN0cmVhbUFzc2lzdGFudFR1cm5UaW1lbGluZVByb3BzKSA9PiB7XG4gICAgY29uc3QgeyB0IH0gPSB1c2VUKClcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAoIXdhaXRpbmdSZXNwb25zZSAmJiAhaXNXcml0aW5nICYmIHNlZ21lbnRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuXG4gICAgICBjb25zdCBleGVjdXRpb25TZWdtZW50cyA9IHNlZ21lbnRzLmZpbHRlcihzZWdtZW50ID0+IHNlZ21lbnQudHlwZSA9PT0gJ2V4ZWN1dGlvbicpXG4gICAgICBzdHJlYW1EZWJ1Z0xvZygnc3RyZWFtVGltZWxpbmVVSScsICdyZW5kZXInLCB7XG4gICAgICAgIHdhaXRpbmdSZXNwb25zZSxcbiAgICAgICAgaXNXcml0aW5nLFxuICAgICAgICBzZWdtZW50Q291bnQ6IHNlZ21lbnRzLmxlbmd0aCxcbiAgICAgICAgZXhlY3V0aW9uU2VnbWVudENvdW50OiBleGVjdXRpb25TZWdtZW50cy5sZW5ndGgsXG4gICAgICAgIGhhc0luaXRpYWxBY3Rpdml0eTogQm9vbGVhbihpbml0aWFsQWN0aXZpdHkpLFxuICAgICAgICBpbml0aWFsQWN0aXZpdHlNZXNzYWdlOiBpbml0aWFsQWN0aXZpdHk/Lm1lc3NhZ2UsXG4gICAgICAgIGV4ZWN1dGlvblN0ZXBzOiBleGVjdXRpb25TZWdtZW50cy5mbGF0TWFwKHNlZ21lbnQgPT5cbiAgICAgICAgICBzZWdtZW50LnR5cGUgPT09ICdleGVjdXRpb24nXG4gICAgICAgICAgICA/IHNlZ21lbnQuc3RlcHMubWFwKHN0ZXAgPT4gKHtcbiAgICAgICAgICAgICAgICBub2RlOiBzdGVwLm5vZGUsXG4gICAgICAgICAgICAgICAgdG9vbE5hbWU6IHN0ZXAudG9vbE5hbWUsXG4gICAgICAgICAgICAgICAgc3RhdHVzOiBzdGVwLnN0YXR1cyxcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBzdGVwLm1lc3NhZ2UsXG4gICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgOiBbXVxuICAgICAgICApLFxuICAgICAgfSlcbiAgICB9LCBbc2VnbWVudHMsIGluaXRpYWxBY3Rpdml0eSwgd2FpdGluZ1Jlc3BvbnNlLCBpc1dyaXRpbmddKVxuXG4gICAgaWYgKCF3YWl0aW5nUmVzcG9uc2UgJiYgIWlzV3JpdGluZyAmJiBzZWdtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuXG4gICAgbGV0IGNvbnRlbnRCbG9ja0luZGV4ID0gMFxuICAgIGNvbnN0IGV4ZWN1dGlvblNlZ21lbnRzID0gc2VnbWVudHMuZmlsdGVyKHNlZ21lbnQgPT4gc2VnbWVudC50eXBlID09PSAnZXhlY3V0aW9uJylcbiAgICBjb25zdCBoYXNFeGVjdXRpb25TZWdtZW50cyA9IGV4ZWN1dGlvblNlZ21lbnRzLmxlbmd0aCA+IDBcbiAgICBjb25zdCBoYXNDb250ZW50U2VnbWVudHMgPSBzZWdtZW50cy5zb21lKHNlZ21lbnQgPT4gc2VnbWVudC50eXBlID09PSAnY29udGVudCcpXG5cbiAgICBjb25zdCBwcmVTdHJlYW1BY3Rpdml0eSA9IHdhaXRpbmdSZXNwb25zZSAmJiBzZWdtZW50cy5sZW5ndGggPT09IDAgJiYgaW5pdGlhbEFjdGl2aXR5ID8gaW5pdGlhbEFjdGl2aXR5IDogbnVsbFxuXG4gICAgY29uc3Qgd3JpdGluZ09ubHlBY3Rpdml0eSA9XG4gICAgICBpc1dyaXRpbmcgJiYgIWhhc0V4ZWN1dGlvblNlZ21lbnRzICYmIGhhc0NvbnRlbnRTZWdtZW50c1xuICAgICAgICA/IGluaXRpYWxBY3Rpdml0eT8ucGhhc2UgPT09ICd3cml0aW5nJ1xuICAgICAgICAgID8gaW5pdGlhbEFjdGl2aXR5XG4gICAgICAgICAgOiBnZXRXcml0aW5nU3RyZWFtQWN0aXZpdHkodClcbiAgICAgICAgOiBudWxsXG5cbiAgICByZXR1cm4gKFxuICAgICAgPFNDU3RyZWFtVHVyblRpbWVsaW5lPlxuICAgICAgICB7cHJlU3RyZWFtQWN0aXZpdHkgJiYgKFxuICAgICAgICAgIDxTQ1N0cmVhbUV4ZWN1dGlvblNlZ21lbnQ+XG4gICAgICAgICAgICA8QWdlbnRBY3Rpdml0eUluZGljYXRvciBhY3Rpdml0eT17cHJlU3RyZWFtQWN0aXZpdHl9IC8+XG4gICAgICAgICAgPC9TQ1N0cmVhbUV4ZWN1dGlvblNlZ21lbnQ+XG4gICAgICAgICl9XG4gICAgICAgIHt3cml0aW5nT25seUFjdGl2aXR5ICYmIChcbiAgICAgICAgICA8U0NTdHJlYW1FeGVjdXRpb25TZWdtZW50PlxuICAgICAgICAgICAgPEFnZW50QWN0aXZpdHlJbmRpY2F0b3IgYWN0aXZpdHk9e3dyaXRpbmdPbmx5QWN0aXZpdHl9IC8+XG4gICAgICAgICAgPC9TQ1N0cmVhbUV4ZWN1dGlvblNlZ21lbnQ+XG4gICAgICAgICl9XG4gICAgICAgIHtzZWdtZW50cy5tYXAoKHNlZ21lbnQsIGluZGV4KSA9PiB7XG4gICAgICAgICAgY29uc3QgcHJldmlvdXNTZWdtZW50ID0gaW5kZXggPiAwID8gc2VnbWVudHNbaW5kZXggLSAxXSA6IHVuZGVmaW5lZFxuXG4gICAgICAgICAgaWYgKHNlZ21lbnQudHlwZSA9PT0gJ2V4ZWN1dGlvbicpIHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIDxTQ1N0cmVhbUV4ZWN1dGlvblNlZ21lbnQga2V5PXtzZWdtZW50LmlkfSAkYWZ0ZXJDb250ZW50PXtwcmV2aW91c1NlZ21lbnQ/LnR5cGUgPT09ICdjb250ZW50J30+XG4gICAgICAgICAgICAgICAgPEFnZW50QWN0aXZpdHlJbmRpY2F0b3IgYWN0aXZpdHk9e2J1aWxkQWN0aXZpdHlGcm9tRXhlY3V0aW9uU2VnbWVudChzZWdtZW50LCB0KX0gLz5cbiAgICAgICAgICAgICAgPC9TQ1N0cmVhbUV4ZWN1dGlvblNlZ21lbnQ+XG4gICAgICAgICAgICApXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgaXNMYXN0U2VnbWVudCA9IGluZGV4ID09PSBzZWdtZW50cy5sZW5ndGggLSAxXG4gICAgICAgICAgY29uc3QgaXNTdHJlYW1pbmcgPSBpc0xhc3RTZWdtZW50ICYmIGlzV3JpdGluZ1xuICAgICAgICAgIGNvbnN0IHNob3dBc3Npc3RhbnRIZWFkZXIgPSBjb250ZW50QmxvY2tJbmRleCA9PT0gMFxuICAgICAgICAgIGNvbnRlbnRCbG9ja0luZGV4ICs9IDFcblxuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8U0NTdHJlYW1UdXJuQ29udGVudEJsb2NrIGtleT17c2VnbWVudC5pZH0+XG4gICAgICAgICAgICAgIHtyZW5kZXJDb250ZW50QmxvY2soe1xuICAgICAgICAgICAgICAgIHNlZ21lbnRJZDogc2VnbWVudC5pZCxcbiAgICAgICAgICAgICAgICB0ZXh0OiBzZWdtZW50LnRleHQsXG4gICAgICAgICAgICAgICAgaXNTdHJlYW1pbmcsXG4gICAgICAgICAgICAgICAgc2hvd0Fzc2lzdGFudEhlYWRlcixcbiAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICA8L1NDU3RyZWFtVHVybkNvbnRlbnRCbG9jaz5cbiAgICAgICAgICApXG4gICAgICAgIH0pfVxuICAgICAgPC9TQ1N0cmVhbVR1cm5UaW1lbGluZT5cbiAgICApXG4gIH1cbilcblxuU3RyZWFtQXNzaXN0YW50VHVyblRpbWVsaW5lLmRpc3BsYXlOYW1lID0gJ1N0cmVhbUFzc2lzdGFudFR1cm5UaW1lbGluZSdcbiJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsS0FBSyxJQUFJQyxJQUFJLEVBQUVDLFNBQVMsUUFBUSxPQUFPO0FBRzlDLFNBQVNDLHNCQUFzQixRQUFRLG9DQUFvQztBQUMzRSxTQUFTQyxpQ0FBaUMsUUFBUSwrQkFBK0I7QUFDakYsU0FBU0Msd0JBQXdCLFFBQVEsdUNBQXVDO0FBQ2hGLFNBQVNDLElBQUksUUFBUSxxQkFBcUI7QUFDMUMsU0FBU0MsY0FBYyxRQUFRLCtCQUErQjtBQUM5RCxTQUNFQyx3QkFBd0IsRUFDeEJDLG9CQUFvQixFQUNwQkMsd0JBQXdCLFFBQ25CLHNDQUFzQztBQUFBLFNBQUFDLEdBQUEsSUFBQUMsSUFBQSxFQUFBQyxJQUFBLElBQUFDLEtBQUE7QUFlN0MsT0FBTyxJQUFNQywyQkFBMkIsZ0JBQUdkLElBQUksQ0FDN0MsVUFBQWUsSUFBQSxFQUFxSDtFQUFBLElBQWxIQyxRQUFRLEdBQUFELElBQUEsQ0FBUkMsUUFBUTtJQUFFQyxlQUFlLEdBQUFGLElBQUEsQ0FBZkUsZUFBZTtJQUFFQyxlQUFlLEdBQUFILElBQUEsQ0FBZkcsZUFBZTtJQUFFQyxTQUFTLEdBQUFKLElBQUEsQ0FBVEksU0FBUztJQUFFQyxrQkFBa0IsR0FBQUwsSUFBQSxDQUFsQkssa0JBQWtCO0VBQzFFLElBQUFDLEtBQUEsR0FBY2hCLElBQUksQ0FBQyxDQUFDO0lBQVppQixDQUFDLEdBQUFELEtBQUEsQ0FBREMsQ0FBQztFQUVUckIsU0FBUyxDQUFDLFlBQU07SUFDZCxJQUFJLENBQUNpQixlQUFlLElBQUksQ0FBQ0MsU0FBUyxJQUFJSCxRQUFRLENBQUNPLE1BQU0sS0FBSyxDQUFDLEVBQUU7SUFDN0QsSUFBTUMsaUJBQWlCLEdBQUdSLFFBQVEsQ0FBQ1MsTUFBTSxDQUFDLFVBQUFDLE9BQU87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
91
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIm1lbW8iLCJ1c2VFZmZlY3QiLCJ1c2VNZW1vIiwiQWdlbnRBY3Rpdml0eUluZGljYXRvciIsImNvbGxlY3RSdW5uaW5nU3RlcHNGcm9tVGltZWxpbmUiLCJnZXRXcml0aW5nU3RyZWFtQWN0aXZpdHkiLCJ1c2VUIiwic3RyZWFtRGVidWdMb2ciLCJTQ1N0cmVhbUV4ZWN1dGlvblNlZ21lbnQiLCJTQ1N0cmVhbVR1cm5UaW1lbGluZSIsIlNDU3RyZWFtVHVybkNvbnRlbnRCbG9jayIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJidWlsZEJvdHRvbVRpbWVsaW5lQWN0aXZpdHkiLCJydW5uaW5nU3RlcHMiLCJ3YWl0aW5nUmVzcG9uc2UiLCJpc1dyaXRpbmciLCJpbml0aWFsQWN0aXZpdHkiLCJ0IiwibGVuZ3RoIiwiYWN0aXZlU3RlcCIsInBoYXNlIiwibWVzc2FnZSIsImV4ZWN1dGlvblN0ZXBzIiwiU3RyZWFtQXNzaXN0YW50VHVyblRpbWVsaW5lIiwiX3JlZiIsInNlZ21lbnRzIiwicmVuZGVyQ29udGVudEJsb2NrIiwiX3VzZVQiLCJjb250ZW50U2VnbWVudHMiLCJmaWx0ZXIiLCJzZWdtZW50IiwidHlwZSIsImJvdHRvbUFjdGl2aXR5Iiwic2VnbWVudENvdW50IiwiY29udGVudFNlZ21lbnRDb3VudCIsInJ1bm5pbmdTdGVwQ291bnQiLCJoYXNJbml0aWFsQWN0aXZpdHkiLCJCb29sZWFuIiwiaW5pdGlhbEFjdGl2aXR5TWVzc2FnZSIsImJvdHRvbUFjdGl2aXR5UGhhc2UiLCJtYXAiLCJzdGVwIiwibm9kZSIsInRvb2xOYW1lIiwic3RhdHVzIiwiaGFzQ29udGVudCIsImNoaWxkcmVuIiwiaW5kZXgiLCJpc0xhc3RDb250ZW50Iiwic2hvd0Fzc2lzdGFudEhlYWRlciIsInNlZ21lbnRJZCIsImlkIiwidGV4dCIsImlzU3RyZWFtaW5nIiwiJGFmdGVyQ29udGVudCIsImFjdGl2aXR5IiwiZGlzcGxheU5hbWUiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvU3RyZWFtQXNzaXN0YW50VHVyblRpbWVsaW5lL1N0cmVhbUFzc2lzdGFudFR1cm5UaW1lbGluZS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IG1lbW8sIHVzZUVmZmVjdCwgdXNlTWVtbyB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHR5cGUgeyBTdHJlYW1BY3Rpdml0eSB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL3N0cmVhbUFjdGl2aXR5J1xuaW1wb3J0IHR5cGUgeyBTdHJlYW1UaW1lbGluZVNlZ21lbnQgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9zdHJlYW1UaW1lbGluZSdcbmltcG9ydCB7IEFnZW50QWN0aXZpdHlJbmRpY2F0b3IgfSBmcm9tICcuLi8uLi9hdG9tcy9BZ2VudEFjdGl2aXR5SW5kaWNhdG9yJ1xuaW1wb3J0IHsgY29sbGVjdFJ1bm5pbmdTdGVwc0Zyb21UaW1lbGluZSB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL3N0cmVhbVRpbWVsaW5lJ1xuaW1wb3J0IHsgZ2V0V3JpdGluZ1N0cmVhbUFjdGl2aXR5IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvc3RyZWFtQWN0aXZpdHlNZXNzYWdlcydcbmltcG9ydCB7IHVzZVQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VUJ1xuaW1wb3J0IHsgc3RyZWFtRGVidWdMb2cgfSBmcm9tICcuLi8uLi8uLi91dGlscy9zdHJlYW1EZWJ1Z0xvZydcbmltcG9ydCB7XG4gIFNDU3RyZWFtRXhlY3V0aW9uU2VnbWVudCxcbiAgU0NTdHJlYW1UdXJuVGltZWxpbmUsXG4gIFNDU3RyZWFtVHVybkNvbnRlbnRCbG9jayxcbn0gZnJvbSAnLi9TdHJlYW1Bc3Npc3RhbnRUdXJuVGltZWxpbmUuc3R5bGVzJ1xuXG5leHBvcnQgdHlwZSBTdHJlYW1Bc3Npc3RhbnRUdXJuVGltZWxpbmVQcm9wcyA9IHtcbiAgc2VnbWVudHM6IFN0cmVhbVRpbWVsaW5lU2VnbWVudFtdXG4gIGluaXRpYWxBY3Rpdml0eTogU3RyZWFtQWN0aXZpdHkgfCBudWxsXG4gIHdhaXRpbmdSZXNwb25zZTogYm9vbGVhblxuICBpc1dyaXRpbmc6IGJvb2xlYW5cbiAgcmVuZGVyQ29udGVudEJsb2NrOiAocGFyYW1zOiB7XG4gICAgc2VnbWVudElkOiBzdHJpbmdcbiAgICB0ZXh0OiBzdHJpbmdcbiAgICBpc1N0cmVhbWluZzogYm9vbGVhblxuICAgIHNob3dBc3Npc3RhbnRIZWFkZXI6IGJvb2xlYW5cbiAgfSkgPT4gUmVhY3QuUmVhY3ROb2RlXG59XG5cbmNvbnN0IGJ1aWxkQm90dG9tVGltZWxpbmVBY3Rpdml0eSA9IChcbiAgcnVubmluZ1N0ZXBzOiBSZXR1cm5UeXBlPHR5cGVvZiBjb2xsZWN0UnVubmluZ1N0ZXBzRnJvbVRpbWVsaW5lPixcbiAgd2FpdGluZ1Jlc3BvbnNlOiBib29sZWFuLFxuICBpc1dyaXRpbmc6IGJvb2xlYW4sXG4gIGluaXRpYWxBY3Rpdml0eTogU3RyZWFtQWN0aXZpdHkgfCBudWxsLFxuICB0OiBSZXR1cm5UeXBlPHR5cGVvZiB1c2VUPlsndCddXG4pOiBTdHJlYW1BY3Rpdml0eSB8IG51bGwgPT4ge1xuICBpZiAocnVubmluZ1N0ZXBzLmxlbmd0aCA+IDApIHtcbiAgICBjb25zdCBhY3RpdmVTdGVwID0gcnVubmluZ1N0ZXBzW3J1bm5pbmdTdGVwcy5sZW5ndGggLSAxXVxuICAgIHJldHVybiB7XG4gICAgICBwaGFzZTogJ2FjdGlvbicsXG4gICAgICBtZXNzYWdlOiBhY3RpdmVTdGVwLm1lc3NhZ2UsXG4gICAgICBleGVjdXRpb25TdGVwczogcnVubmluZ1N0ZXBzLFxuICAgIH1cbiAgfVxuXG4gIGlmIChpc1dyaXRpbmcpIHtcbiAgICByZXR1cm4gaW5pdGlhbEFjdGl2aXR5Py5waGFzZSA9PT0gJ3dyaXRpbmcnID8gaW5pdGlhbEFjdGl2aXR5IDogZ2V0V3JpdGluZ1N0cmVhbUFjdGl2aXR5KHQpXG4gIH1cblxuICBpZiAod2FpdGluZ1Jlc3BvbnNlICYmIGluaXRpYWxBY3Rpdml0eSkge1xuICAgIHJldHVybiBpbml0aWFsQWN0aXZpdHlcbiAgfVxuXG4gIHJldHVybiBudWxsXG59XG5cbmV4cG9ydCBjb25zdCBTdHJlYW1Bc3Npc3RhbnRUdXJuVGltZWxpbmUgPSBtZW1vKFxuICAoeyBzZWdtZW50cywgaW5pdGlhbEFjdGl2aXR5LCB3YWl0aW5nUmVzcG9uc2UsIGlzV3JpdGluZywgcmVuZGVyQ29udGVudEJsb2NrIH06IFN0cmVhbUFzc2lzdGFudFR1cm5UaW1lbGluZVByb3BzKSA9PiB7XG4gICAgY29uc3QgeyB0IH0gPSB1c2VUKClcblxuICAgIGNvbnN0IHJ1bm5pbmdTdGVwcyA9IHVzZU1lbW8oKCkgPT4gY29sbGVjdFJ1bm5pbmdTdGVwc0Zyb21UaW1lbGluZShzZWdtZW50cyksIFtzZWdtZW50c10pXG4gICAgY29uc3QgY29udGVudFNlZ21lbnRzID0gdXNlTWVtbygoKSA9PiBzZWdtZW50cy5maWx0ZXIoc2VnbWVudCA9PiBzZWdtZW50LnR5cGUgPT09ICdjb250ZW50JyksIFtzZWdtZW50c10pXG4gICAgY29uc3QgYm90dG9tQWN0aXZpdHkgPSB1c2VNZW1vKFxuICAgICAgKCkgPT4gYnVpbGRCb3R0b21UaW1lbGluZUFjdGl2aXR5KHJ1bm5pbmdTdGVwcywgd2FpdGluZ1Jlc3BvbnNlLCBpc1dyaXRpbmcsIGluaXRpYWxBY3Rpdml0eSwgdCksXG4gICAgICBbcnVubmluZ1N0ZXBzLCB3YWl0aW5nUmVzcG9uc2UsIGlzV3JpdGluZywgaW5pdGlhbEFjdGl2aXR5LCB0XVxuICAgIClcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAoIXdhaXRpbmdSZXNwb25zZSAmJiAhaXNXcml0aW5nICYmIHNlZ21lbnRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuXG4gICAgICBzdHJlYW1EZWJ1Z0xvZygnc3RyZWFtVGltZWxpbmVVSScsICdyZW5kZXInLCB7XG4gICAgICAgIHdhaXRpbmdSZXNwb25zZSxcbiAgICAgICAgaXNXcml0aW5nLFxuICAgICAgICBzZWdtZW50Q291bnQ6IHNlZ21lbnRzLmxlbmd0aCxcbiAgICAgICAgY29udGVudFNlZ21lbnRDb3VudDogY29udGVudFNlZ21lbnRzLmxlbmd0aCxcbiAgICAgICAgcnVubmluZ1N0ZXBDb3VudDogcnVubmluZ1N0ZXBzLmxlbmd0aCxcbiAgICAgICAgaGFzSW5pdGlhbEFjdGl2aXR5OiBCb29sZWFuKGluaXRpYWxBY3Rpdml0eSksXG4gICAgICAgIGluaXRpYWxBY3Rpdml0eU1lc3NhZ2U6IGluaXRpYWxBY3Rpdml0eT8ubWVzc2FnZSxcbiAgICAgICAgYm90dG9tQWN0aXZpdHlQaGFzZTogYm90dG9tQWN0aXZpdHk/LnBoYXNlLFxuICAgICAgICBydW5uaW5nU3RlcHM6IHJ1bm5pbmdTdGVwcy5tYXAoc3RlcCA9PiAoe1xuICAgICAgICAgIG5vZGU6IHN0ZXAubm9kZSxcbiAgICAgICAgICB0b29sTmFtZTogc3RlcC50b29sTmFtZSxcbiAgICAgICAgICBzdGF0dXM6IHN0ZXAuc3RhdHVzLFxuICAgICAgICAgIG1lc3NhZ2U6IHN0ZXAubWVzc2FnZSxcbiAgICAgICAgfSkpLFxuICAgICAgfSlcbiAgICB9LCBbXG4gICAgICBzZWdtZW50cyxcbiAgICAgIGNvbnRlbnRTZWdtZW50cy5sZW5ndGgsXG4gICAgICBpbml0aWFsQWN0aXZpdHksXG4gICAgICB3YWl0aW5nUmVzcG9uc2UsXG4gICAgICBpc1dyaXRpbmcsXG4gICAgICBydW5uaW5nU3RlcHMsXG4gICAgICBib3R0b21BY3Rpdml0eT8ucGhhc2UsXG4gICAgXSlcblxuICAgIGlmICghd2FpdGluZ1Jlc3BvbnNlICYmICFpc1dyaXRpbmcgJiYgc2VnbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cblxuICAgIGNvbnN0IGhhc0NvbnRlbnQgPSBjb250ZW50U2VnbWVudHMubGVuZ3RoID4gMFxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxTQ1N0cmVhbVR1cm5UaW1lbGluZT5cbiAgICAgICAge2NvbnRlbnRTZWdtZW50cy5tYXAoKHNlZ21lbnQsIGluZGV4KSA9PiB7XG4gICAgICAgICAgY29uc3QgaXNMYXN0Q29udGVudCA9IGluZGV4ID09PSBjb250ZW50U2VnbWVudHMubGVuZ3RoIC0gMVxuICAgICAgICAgIGNvbnN0IHNob3dBc3Npc3RhbnRIZWFkZXIgPSBpbmRleCA9PT0gMFxuXG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxTQ1N0cmVhbVR1cm5Db250ZW50QmxvY2sga2V5PXtzZWdtZW50LmlkfT5cbiAgICAgICAgICAgICAge3JlbmRlckNvbnRlbnRCbG9jayh7XG4gICAgICAgICAgICAgICAgc2VnbWVudElkOiBzZWdtZW50LmlkLFxuICAgICAgICAgICAgICAgIHRleHQ6IHNlZ21lbnQudGV4dCxcbiAgICAgICAgICAgICAgICBpc1N0cmVhbWluZzogaXNMYXN0Q29udGVudCAmJiBpc1dyaXRpbmcsXG4gICAgICAgICAgICAgICAgc2hvd0Fzc2lzdGFudEhlYWRlcixcbiAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICA8L1NDU3RyZWFtVHVybkNvbnRlbnRCbG9jaz5cbiAgICAgICAgICApXG4gICAgICAgIH0pfVxuICAgICAgICB7Ym90dG9tQWN0aXZpdHkgJiYgKFxuICAgICAgICAgIDxTQ1N0cmVhbUV4ZWN1dGlvblNlZ21lbnQgJGFmdGVyQ29udGVudD17aGFzQ29udGVudH0+XG4gICAgICAgICAgICA8QWdlbnRBY3Rpdml0eUluZGljYXRvciBhY3Rpdml0eT17Ym90dG9tQWN0aXZpdHl9IC8+XG4gICAgICAgICAgPC9TQ1N0cmVhbUV4ZWN1dGlvblNlZ21lbnQ+XG4gICAgICAgICl9XG4gICAgICA8L1NDU3RyZWFtVHVyblRpbWVsaW5lPlxuICAgIClcbiAgfVxuKVxuXG5TdHJlYW1Bc3Npc3RhbnRUdXJuVGltZWxpbmUuZGlzcGxheU5hbWUgPSAnU3RyZWFtQXNzaXN0YW50VHVyblRpbWVsaW5lJ1xuIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxLQUFLLElB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