@projectcor/maia-components 2.30.3-1 → 2.31.1-0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/lib/App.js +4 -2
  3. package/lib/components/atoms/MAIAInput/MAIAInput.js +73 -14
  4. package/lib/components/atoms/ReasoningBlock/ReasoningBlock.js +121 -0
  5. package/lib/components/atoms/ReasoningBlock/ReasoningBlock.styles.js +197 -0
  6. package/lib/components/atoms/ReasoningBlock/ReasoningSteps.js +157 -0
  7. package/lib/components/atoms/ReasoningBlock/ReasoningTimeline.js +123 -0
  8. package/lib/components/atoms/ReasoningBlock/groupParallelSteps.js +115 -0
  9. package/lib/components/atoms/ReasoningBlock/index.js +3 -0
  10. package/lib/components/atoms/ReasoningBlock/reasoningLiveNarration.js +54 -0
  11. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +391 -120
  12. package/lib/components/molecules/ChatAIMessages/newStyles.js +50 -18
  13. package/lib/components/molecules/ChatAIModal/ChatAIModal.js +42 -21
  14. package/lib/components/molecules/MessageFeedback/styles.js +6 -2
  15. package/lib/context/global-context.js +1 -1
  16. package/lib/dev/DevReasoningTimeline.js +235 -0
  17. package/lib/dev/reasoningTraceMock.js +556 -0
  18. package/lib/hooks/useChatManager/useChatManager.js +97 -59
  19. package/lib/hooks/useChatMessages/useChatMessages.js +28 -27
  20. package/lib/hooks/useEvent.js +2 -1
  21. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.interface.js +1 -1
  22. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +4 -3
  23. package/lib/hooks/useProjectSummaryConfig.js +36 -17
  24. package/lib/hooks/useReasoningTrace/index.js +3 -0
  25. package/lib/hooks/useReasoningTrace/reasoningStore.js +142 -0
  26. package/lib/hooks/useReasoningTrace/useReasoningTrace.js +14 -0
  27. package/lib/lang/br/index.js +237 -31
  28. package/lib/lang/en/index.js +237 -31
  29. package/lib/lang/es/index.js +237 -31
  30. package/lib/lang/fr/index.js +237 -31
  31. package/lib/services/maia/Orchestrator/orchestrator.js +9 -7
  32. package/lib/services/utils/mapChatMessages.js +21 -18
  33. package/lib/store/sessions/sessionStreamManager.js +98 -51
  34. package/lib/store/sessions/sessions.types.js +1 -1
  35. package/lib/types/Chat.js +1 -1
  36. package/lib/types/reasoning.js +2 -0
  37. package/lib/utils/autoApproveStorage.js +26 -0
  38. package/lib/utils/hitlAnalytics.js +4 -3
  39. package/lib/utils/reasoningMappers.js +62 -0
  40. package/lib/utils/streamActivityMessages.js +106 -41
  41. package/package.json +1 -1
@@ -1,8 +1,12 @@
1
1
  import styled from 'styled-components';
2
+ import { cascadeFadeIn } from '../../../styles/cascade';
3
+
4
+ /* Más lento que `cascadeItem`: son pocos iconos y la entrada se tiene que notar. */
5
+ var FEEDBACK_STEP_MS = 90;
2
6
  export var StyledMessageFeedback = styled.div.withConfig({
3
7
  displayName: "styles__StyledMessageFeedback",
4
8
  componentId: "sc-6zkt8a-0"
5
- })(["display:flex;gap:8px;grid-area:message-feedback;align-items:center;"]);
9
+ })(["display:flex;gap:8px;grid-area:message-feedback;align-items:center;> *{animation:", " 0.6s ease-out both;}> *:nth-child(2){animation-delay:", "ms;}> *:nth-child(3){animation-delay:", "ms;}> *:nth-child(4){animation-delay:", "ms;}"], cascadeFadeIn, FEEDBACK_STEP_MS, FEEDBACK_STEP_MS * 2, FEEDBACK_STEP_MS * 3);
6
10
  export var SCMFWrapperSources = styled.div.withConfig({
7
11
  displayName: "styles__SCMFWrapperSources",
8
12
  componentId: "sc-6zkt8a-1"
@@ -11,4 +15,4 @@ export var SCMFSourcesSpan = styled.span.withConfig({
11
15
  displayName: "styles__SCMFSourcesSpan",
12
16
  componentId: "sc-6zkt8a-2"
13
17
  })(["font-size:14px;line-height:140%;color:#666666;"]);
14
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzdHlsZWQiLCJTdHlsZWRNZXNzYWdlRmVlZGJhY2siLCJkaXYiLCJ3aXRoQ29uZmlnIiwiZGlzcGxheU5hbWUiLCJjb21wb25lbnRJZCIsIlNDTUZXcmFwcGVyU291cmNlcyIsIlNDTUZTb3VyY2VzU3BhbiIsInNwYW4iXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvTWVzc2FnZUZlZWRiYWNrL3N0eWxlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJ1xuXG5leHBvcnQgY29uc3QgU3R5bGVkTWVzc2FnZUZlZWRiYWNrID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgZ2FwOiA4cHg7XG4gIGdyaWQtYXJlYTogbWVzc2FnZS1mZWVkYmFjaztcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbmBcblxuZXhwb3J0IGNvbnN0IFNDTUZXcmFwcGVyU291cmNlcyA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogOHB4O1xuICBib3JkZXItcmFkaXVzOiA1MDBweDtcbiAgcGFkZGluZzogMHB4IDEycHg7XG4gIGhlaWdodDogMzJweDtcbiAgYm9yZGVyOiAxcHggc29saWQgI2Q5ZDlkOTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICAmOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDIyNSwgMjQ0LCAyNTUsIDEpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMTg2LCAyMzAsIDI1MywgMSk7XG4gICAgY29sb3I6IHJnYmEoMCwgMTM2LCAyMDQsIDEpICFpbXBvcnRhbnQ7XG4gICAgW2lkKj0nR2xvYmVJY29uJ10ge1xuICAgICAgJiBwYXRoIHtcbiAgICAgICAgZmlsbDogcmdiYSgwLCAxMzYsIDIwNCwgMSkgIWltcG9ydGFudDtcbiAgICAgIH1cbiAgICB9XG4gICAgJiBzcGFuIHtcbiAgICAgIGNvbG9yOiByZ2JhKDAsIDEzNiwgMjA0LCAxKSAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxuYFxuXG5leHBvcnQgY29uc3QgU0NNRlNvdXJjZXNTcGFuID0gc3R5bGVkLnNwYW5gXG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgbGluZS1oZWlnaHQ6IDE0MCU7XG4gIGNvbG9yOiAjNjY2NjY2O1xuYFxuIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxNQUFNLE1BQU0sbUJBQW1CO0FBRXRDLE9BQU8sSUFBTUMscUJBQXFCLEdBQUdELE1BQU0sQ0FBQ0UsR0FBRyxDQUFBQyxVQUFBO0VBQUFDLFdBQUE7RUFBQUMsV0FBQTtBQUFBLDJFQUs5QztBQUVELE9BQU8sSUFBTUMsa0JBQWtCLEdBQUdOLE1BQU0sQ0FBQ0UsR0FBRyxDQUFBQyxVQUFBO0VBQUFDLFdBQUE7RUFBQUMsV0FBQTtBQUFBLHVXQXNCM0M7QUFFRCxPQUFPLElBQU1FLGVBQWUsR0FBR1AsTUFBTSxDQUFDUSxJQUFJLENBQUFMLFVBQUE7RUFBQUMsV0FBQTtFQUFBQyxXQUFBO0FBQUEsc0RBSXpDIiwiaWdub3JlTGlzdCI6W119
18
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzdHlsZWQiLCJjYXNjYWRlRmFkZUluIiwiRkVFREJBQ0tfU1RFUF9NUyIsIlN0eWxlZE1lc3NhZ2VGZWVkYmFjayIsImRpdiIsIndpdGhDb25maWciLCJkaXNwbGF5TmFtZSIsImNvbXBvbmVudElkIiwiU0NNRldyYXBwZXJTb3VyY2VzIiwiU0NNRlNvdXJjZXNTcGFuIiwic3BhbiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vbGVjdWxlcy9NZXNzYWdlRmVlZGJhY2svc3R5bGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnXG5cbmltcG9ydCB7IGNhc2NhZGVGYWRlSW4gfSBmcm9tICcuLi8uLi8uLi9zdHlsZXMvY2FzY2FkZSdcblxuLyogTcOhcyBsZW50byBxdWUgYGNhc2NhZGVJdGVtYDogc29uIHBvY29zIGljb25vcyB5IGxhIGVudHJhZGEgc2UgdGllbmUgcXVlIG5vdGFyLiAqL1xuY29uc3QgRkVFREJBQ0tfU1RFUF9NUyA9IDkwXG5cbmV4cG9ydCBjb25zdCBTdHlsZWRNZXNzYWdlRmVlZGJhY2sgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBnYXA6IDhweDtcbiAgZ3JpZC1hcmVhOiBtZXNzYWdlLWZlZWRiYWNrO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuXG4gIC8qIExvcyBoaWpvcyBzb24gZGUgdGlwb3MgZGlzdGludG9zIChjb3BpYXIsIHB1bGdhcmVzLCBmdWVudGVzKTogbGEgY2FzY2FkYSB2YVxuICAgICBwb3IgcG9zaWNpw7NuIHkgbm8gcG9yIHByb3AsIHBhcmEgbm8gdGVuZXIgcXVlIHRvY2FyIGNhZGEgw6F0b21vLiAqL1xuICA+ICoge1xuICAgIGFuaW1hdGlvbjogJHtjYXNjYWRlRmFkZUlufSAwLjZzIGVhc2Utb3V0IGJvdGg7XG4gIH1cblxuICA+ICo6bnRoLWNoaWxkKDIpIHtcbiAgICBhbmltYXRpb24tZGVsYXk6ICR7RkVFREJBQ0tfU1RFUF9NU31tcztcbiAgfVxuXG4gID4gKjpudGgtY2hpbGQoMykge1xuICAgIGFuaW1hdGlvbi1kZWxheTogJHtGRUVEQkFDS19TVEVQX01TICogMn1tcztcbiAgfVxuXG4gID4gKjpudGgtY2hpbGQoNCkge1xuICAgIGFuaW1hdGlvbi1kZWxheTogJHtGRUVEQkFDS19TVEVQX01TICogM31tcztcbiAgfVxuYFxuXG5leHBvcnQgY29uc3QgU0NNRldyYXBwZXJTb3VyY2VzID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiA4cHg7XG4gIGJvcmRlci1yYWRpdXM6IDUwMHB4O1xuICBwYWRkaW5nOiAwcHggMTJweDtcbiAgaGVpZ2h0OiAzMnB4O1xuICBib3JkZXI6IDFweCBzb2xpZCAjZDlkOWQ5O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjI1LCAyNDQsIDI1NSwgMSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgxODYsIDIzMCwgMjUzLCAxKTtcbiAgICBjb2xvcjogcmdiYSgwLCAxMzYsIDIwNCwgMSkgIWltcG9ydGFudDtcbiAgICBbaWQqPSdHbG9iZUljb24nXSB7XG4gICAgICAmIHBhdGgge1xuICAgICAgICBmaWxsOiByZ2JhKDAsIDEzNiwgMjA0LCAxKSAhaW1wb3J0YW50O1xuICAgICAgfVxuICAgIH1cbiAgICAmIHNwYW4ge1xuICAgICAgY29sb3I6IHJnYmEoMCwgMTM2LCAyMDQsIDEpICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG5gXG5cbmV4cG9ydCBjb25zdCBTQ01GU291cmNlc1NwYW4gPSBzdHlsZWQuc3BhbmBcbiAgZm9udC1zaXplOiAxNHB4O1xuICBsaW5lLWhlaWdodDogMTQwJTtcbiAgY29sb3I6ICM2NjY2NjY7XG5gXG4iXSwibWFwcGluZ3MiOiJBQUFBLE9BQU9BLE1BQU0sTUFBTSxtQkFBbUI7QUFFdEMsU0FBU0MsYUFBYSxRQUFRLHlCQUF5Qjs7QUFFdkQ7QUFDQSxJQUFNQyxnQkFBZ0IsR0FBRyxFQUFFO0FBRTNCLE9BQU8sSUFBTUMscUJBQXFCLEdBQUdILE1BQU0sQ0FBQ0ksR0FBRyxDQUFBQyxVQUFBO0VBQUFDLFdBQUE7RUFBQUMsV0FBQTtBQUFBLDhPQVM5Qk4sYUFBYSxFQUlQQyxnQkFBZ0IsRUFJaEJBLGdCQUFnQixHQUFHLENBQUMsRUFJcEJBLGdCQUFnQixHQUFHLENBQUMsQ0FFMUM7QUFFRCxPQUFPLElBQU1NLGtCQUFrQixHQUFHUixNQUFNLENBQUNJLEdBQUcsQ0FBQUMsVUFBQTtFQUFBQyxXQUFBO0VBQUFDLFdBQUE7QUFBQSx1V0FzQjNDO0FBRUQsT0FBTyxJQUFNRSxlQUFlLEdBQUdULE1BQU0sQ0FBQ1UsSUFBSSxDQUFBTCxVQUFBO0VBQUFDLFdBQUE7RUFBQUMsV0FBQTtBQUFBLHNEQUl6QyIsImlnbm9yZUxpc3QiOltdfQ==
@@ -36,4 +36,4 @@ export var useGlobalContext = function useGlobalContext() {
36
36
  }
37
37
  return context;
38
38
  };
39
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjcmVhdGVDb250ZXh0IiwidXNlQ29udGV4dCIsIkRFRkFVTFRfQUdFTlQiLCJpZCIsIm5hbWUiLCJjcmVhdGVkX2J5IiwiaXNfZGVsZXRlZCIsImNvbXBhbnlfaWQiLCJlbW9qaSIsImludHJvZHVjdGlvbiIsInR5cGUiLCJrbm93bGVkZ2UiLCJpc19pbnRlcm5hbCIsIkdsb2JhbENvbnRleHQiLCJ1c2VHbG9iYWxDb250ZXh0IiwiY29udGV4dCIsIkVycm9yIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRleHQvZ2xvYmFsLWNvbnRleHQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlQ29udGV4dCwgTXV0YWJsZVJlZk9iamVjdCwgdXNlQ29udGV4dCB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgUHJvamVjdCB9IGZyb20gJy4uL3R5cGVzL1Byb2plY3QnXG5pbXBvcnQgeyBDbGllbnQgfSBmcm9tICcuLi90eXBlcy9DbGllbnQnXG5pbXBvcnQgeyBUYXNrIH0gZnJvbSAnLi4vdHlwZXMvVGFzaydcbmltcG9ydCB7IENvbmZpZ1NldHRpbmdJdGVtIH0gZnJvbSAnLi4vY29uc3RhbnRzL3Blcm1pc3Npb25zL3R5cGVzJ1xuaW1wb3J0IHsgQWdlbnQgfSBmcm9tICcuLi90eXBlcy9hZ2VudCdcblxuY29uc3QgREVGQVVMVF9BR0VOVDogQWdlbnQgPSB7XG4gIGlkOiAnMScsXG4gIG5hbWU6ICdBZ2VudGUgUE0nLFxuICBjcmVhdGVkX2J5OiB7IG5hbWU6ICcxNzQ1NCcsIGlzX2RlbGV0ZWQ6IGZhbHNlIH0sXG4gIGNvbXBhbnlfaWQ6ICcyMzM2JyxcbiAgZW1vamk6ICfwn5OKJyxcbiAgaW50cm9kdWN0aW9uOiBudWxsLFxuICB0eXBlOiAncG0nLFxuICBrbm93bGVkZ2U6IFtdLFxuICBpc19pbnRlcm5hbDogZmFsc2UsXG59XG5cbmV4cG9ydCB7IERFRkFVTFRfQUdFTlQgfVxuXG5leHBvcnQgdHlwZSBDaGlwc1Byb2plY3QgPSB7XG4gIHByb2plY3ROYW1lOiBzdHJpbmdcbiAgY2xpZW50TmFtZTogc3RyaW5nXG4gIHByb2plY3RJZDogc3RyaW5nXG59XG5cbi8qKlxuICogUGluIGRlIGNvbnRleHRvIHBlcnNpc3RlbnRlLCBkZXJpdmFkbyBkZSBgcHJvamVjdGAvYGNsaWVudGAvYHRhc2tgL2BjaGlwc1Byb2plY3RgIChSRkMgwqcxMi4yKS5cbiAqIE1vbm8tY29udGV4dG8gaG95IChsYSBlbnRpZGFkIG3DoXMgZXNwZWPDrWZpY2EgYWN0aXZhKTsgZWwgc2NvcGUgaGFjaWEgYXJyaWJhIHZpYWphIGVuIGBwYXJlbnRzYC5cbiAqIExvcyBjb25zdW1pZG9yZXMgZGViZXLDrWFuIGxlZXIgYHBpbm5lZENvbnRleHRgIGVuIHZleiBkZSBsb3MgY2FtcG9zIHN1ZWx0b3MsIHBhcmEgcXVlIGVsIHNhbHRvXG4gKiBmdXR1cm8gYSBtdWx0aS1jb250ZXh0byAoYHBpbnM6IFBpbm5lZENvbnRleHRbXWApIHNlYSBhZGl0aXZvLlxuICovXG5leHBvcnQgdHlwZSBQaW5uZWRDb250ZXh0ID0ge1xuICB0eXBlOiAnY2xpZW50JyB8ICdwcm9qZWN0JyB8ICd0YXNrJ1xuICBpZDogc3RyaW5nIHwgbnVtYmVyXG4gIG5hbWU6IHN0cmluZ1xuICBwYXJlbnRzPzogeyBjbGllbnRJZD86IHN0cmluZyB8IG51bWJlcjsgcHJvamVjdElkPzogc3RyaW5nIHwgbnVtYmVyIH1cbn1cblxuZXhwb3J0IHR5cGUgU2VjdGlvbiA9ICdwcm9qZWN0JyB8ICdoZWFkZXInIHwgJ2NsaWVudCcgfCAndGFzaycgfCAncGxhbm5lcidcblxuLyoqIEVsZW1lbnRvIGRlbCBob3N0IChDT1Igd2ViKSBxdWUgZWwgcGlsbCBtaW5pbWl6YWRvIGRlYmUgZXNxdWl2YXIuICovXG5leHBvcnQgdHlwZSBNaW5pbWl6ZWRQaWxsQXZvaWRBbmNob3IgPSB7XG4gIHNlbGVjdG9yOiBzdHJpbmdcbiAgZ2FwUHg/OiBudW1iZXJcbn1cblxudHlwZSBCYXNlR2xvYmFsQ29udGV4dFR5cGUgPSB7XG4gIHNlY3Rpb246IFNlY3Rpb25cbiAgYWdlbnQ6IEFnZW50IHwgbnVsbFxuICBzZWxlY3RBZ2VudDogKGFnZW50OiBBZ2VudCkgPT4gdm9pZFxuICBjbGVhckFnZW50OiAoKSA9PiB2b2lkXG4gIHByb2plY3Q6IFByb2plY3QgfCBudWxsXG4gIHNldFByb2plY3Q6IChwcm9qZWN0OiBQcm9qZWN0IHwgbnVsbCkgPT4gdm9pZFxuICBjbGllbnQ6IENsaWVudCB8IG51bGxcbiAgc2V0Q2xpZW50OiAoY2xpZW50OiBDbGllbnQgfCBudWxsKSA9PiB2b2lkXG4gIHRhc2s6IFRhc2sgfCBudWxsXG4gIHNldFRhc2s6ICh0YXNrOiBUYXNrIHwgbnVsbCkgPT4gdm9pZFxuICBpc1dlYlNlYXJjaEFjdGl2ZTogYm9vbGVhblxuICB0b2dnbGVXZWJTZWFyY2g6ICgpID0+IHZvaWRcbiAgaXNEZWVwU2VhcmNoQWN0aXZlOiBib29sZWFuXG4gIHRvZ2dsZURlZXBTZWFyY2g6ICgpID0+IHZvaWRcbiAgaGFzTXVsdGlBZ2VudHM/OiBib29sZWFuXG4gIGNoaXBzUHJvamVjdD86IENoaXBzUHJvamVjdCB8IG51bGxcbiAgc2V0Q2hpcHNQcm9qZWN0OiAoY2hpcHNQcm9qZWN0OiBDaGlwc1Byb2plY3QgfCBudWxsKSA9PiB2b2lkXG4gIC8qKiBQaW4gZGUgY29udGV4dG8gZGVyaXZhZG8gKGFycmF5LXJlYWR5LCBSRkMgwqcxMi4xKS4gTW9ubyBob3k7IG51bGwgZW4gbW9kbyBnbG9iYWwuICovXG4gIHBpbm5lZENvbnRleHQ/OiBQaW5uZWRDb250ZXh0IHwgbnVsbFxuICAvKiogQW5jaG9ycyBkZWwgaG9zdCBwYXJhIHBvc2ljaW9uYXIgZWwgcGlsbCBtaW5pbWl6YWRvIHNpbiBzb2xhcGFyc2UgKGVqLiBcIisgQWdyZWdhciB0YXJlYVwiKS4gKi9cbiAgbWluaW1pemVkUGlsbEF2b2lkQW5jaG9ycz86IE1pbmltaXplZFBpbGxBdm9pZEFuY2hvcltdXG59XG5cbi8qKiBGQVEgaW55ZWN0YWRhIHBvciBlbCBob3N0IChlai4gYmFubmVyIGRlIHByb3llY3RvIGVuIENPUikgcGFyYSBhYnJpciBlbCBjaGF0IGNvbiBlbCBtaXNtbyBjcml0ZXJpbyBxdWUgdW4gY2xpYyBlbiBGQVEgZW4gaG9tZS5cbiAqIGBmYXFJZGAgZXMgb3BjaW9uYWw6IGN1YW5kbyBubyBleGlzdGUgKGVqLiBtZW5zYWplIGRlIGRlc3bDrW9zIGRlbCBiYW5uZXIpLCBlbCBjaGF0IGVudsOtYSBzb2xvIGVsIHRleHRvIHNpbiBoZWFkZXIgWC1GYXEtSWQuXG4gKiBgY29udGV4dERhdGFgIGVzIG9wY2lvbmFsOiBwYXlsb2FkIGRlbCBiYW5uZXIgKGRlc3bDrW8vbcOpdHJpY2FzKSBxdWUgdmlhamEgZW4gZWwgaGVhZGVyIGBYLUNvbnRleHQtRGF0YWAgZGVsIG9yY2hlc3RyYXRvciAoSlNPTiBlbiBiYXNlNjQpLiAqL1xuZXhwb3J0IHR5cGUgQmFubmVyRW50cnlGYXEgPSB7XG4gIGZhcUlkPzogc3RyaW5nXG4gIGZhcVRpdGxlOiBzdHJpbmdcbiAgY29udGV4dERhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxufVxuXG5leHBvcnQgdHlwZSBQcm9qZWN0U3VtbWFyeUNvbnRleHRUeXBlID0gQmFzZUdsb2JhbENvbnRleHRUeXBlICYge1xuICBjb25maWd1cmVTZXR0aW5nc0l0ZW1zOiBNdXRhYmxlUmVmT2JqZWN0PENvbmZpZ1NldHRpbmdJdGVtW10+XG4gIHJlc3RvcmVDb25maWd1cmVTZXR0aW5nczogKCkgPT4gdm9pZFxuICBlbnRpdHlWYWx1ZXM6IHtcbiAgICBwcm9qZWN0SWQ6IHN0cmluZyB8IG51bGxcbiAgICBjbGllbnRJZDogc3RyaW5nIHwgbnVsbFxuICB9XG4gIHNldEVudGl0eVZhbHVlczogKGVudGl0eTogeyBwcm9qZWN0SWQ6IHN0cmluZyB8IG51bGw7IGNsaWVudElkOiBzdHJpbmcgfCBudWxsIH0pID0+IHZvaWRcbiAgLyoqIFNpIHZpZW5lIGRlZmluaWRhLCBlbCBtb2RhbCBkaXNwYXJhIHVuYSB2ZXogYHN0YXJ0Q2hhdChmYXFUaXRsZSwgW10sIGZhcUlkKWAgYWwgZXN0YXIgbGlzdG9zIGFnZW50ZSArIGVudGlkYWQgKi9cbiAgYmFubmVyRW50cnlGYXE/OiBCYW5uZXJFbnRyeUZhcSB8IG51bGxcbiAgaW5pdGlhbERyYWZ0Pzogc3RyaW5nIHwgbnVsbFxuICAvKipcbiAgICogT25lLXNob3Q6IHRydWUgYWZ0ZXIgZW1haWwgZGVlcC1saW5rIGRyYWZ0IGlzIGFwcGxpZWQgdG8gdGhlIGNvbXBvc2VyLlxuICAgKiBDb25zdW1lZCBvbiBmaXJzdCBBSV9DSEFUX1NFTkQgKGBzb3VyY2U6ICdkZWVwX2xpbmsnYCk7IGNsZWFyZWQgb24gY2hhdCBzZXNzaW9uIGNoYW5nZSAvIGNsb3NlLlxuICAgKi9cbiAgZGVlcExpbmtTZW5kUGVuZGluZ1JlZj86IE11dGFibGVSZWZPYmplY3Q8Ym9vbGVhbj5cbn1cblxudHlwZSBBbGxvd2VkR2xvYmFsQ29udGV4dFR5cGUgPSBQcm9qZWN0U3VtbWFyeUNvbnRleHRUeXBlXG5cbmV4cG9ydCB0eXBlIEdsb2JhbENvbnRleHRUeXBlPFQgZXh0ZW5kcyBBbGxvd2VkR2xvYmFsQ29udGV4dFR5cGUgPSBBbGxvd2VkR2xvYmFsQ29udGV4dFR5cGU+ID0gVCB8IG51bGxcblxuZXhwb3J0IGNvbnN0IEdsb2JhbENvbnRleHQgPSBjcmVhdGVDb250ZXh0PEdsb2JhbENvbnRleHRUeXBlPihudWxsKVxuXG5leHBvcnQgY29uc3QgdXNlR2xvYmFsQ29udGV4dCA9IDxUIGV4dGVuZHMgQmFzZUdsb2JhbENvbnRleHRUeXBlID0gQWxsb3dlZEdsb2JhbENvbnRleHRUeXBlPigpID0+IHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoR2xvYmFsQ29udGV4dClcblxuICBpZiAoIWNvbnRleHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3VzZUdsb2JhbENvbnRleHQgbXVzdCBiZSB1c2VkIHdpdGhpbiBhIEdsb2JhbENvbnRleHRQcm92aWRlcicpXG4gIH1cblxuICByZXR1cm4gY29udGV4dCBhcyB1bmtub3duIGFzIFRcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsYUFBYSxFQUFvQkMsVUFBVSxRQUFRLE9BQU87QUFPbkUsSUFBTUMsYUFBb0IsR0FBRztFQUMzQkMsRUFBRSxFQUFFLEdBQUc7RUFDUEMsSUFBSSxFQUFFLFdBQVc7RUFDakJDLFVBQVUsRUFBRTtJQUFFRCxJQUFJLEVBQUUsT0FBTztJQUFFRSxVQUFVLEVBQUU7RUFBTSxDQUFDO0VBQ2hEQyxVQUFVLEVBQUUsTUFBTTtFQUNsQkMsS0FBSyxFQUFFLElBQUk7RUFDWEMsWUFBWSxFQUFFLElBQUk7RUFDbEJDLElBQUksRUFBRSxJQUFJO0VBQ1ZDLFNBQVMsRUFBRSxFQUFFO0VBQ2JDLFdBQVcsRUFBRTtBQUNmLENBQUM7QUFFRCxTQUFTVixhQUFhOztBQVF0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBVUE7O0FBOEJBO0FBQ0E7QUFDQTs7QUE2QkEsT0FBTyxJQUFNVyxhQUFhLGdCQUFHYixhQUFhLENBQW9CLElBQUksQ0FBQztBQUVuRSxPQUFPLElBQU1jLGdCQUFnQixHQUFHLFNBQW5CQSxnQkFBZ0JBLENBQUEsRUFBcUU7RUFDaEcsSUFBTUMsT0FBTyxHQUFHZCxVQUFVLENBQUNZLGFBQWEsQ0FBQztFQUV6QyxJQUFJLENBQUNFLE9BQU8sRUFBRTtJQUNaLE1BQU0sSUFBSUMsS0FBSyxDQUFDLDhEQUE4RCxDQUFDO0VBQ2pGO0VBRUEsT0FBT0QsT0FBTztBQUNoQixDQUFDIiwiaWdub3JlTGlzdCI6W119
39
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjcmVhdGVDb250ZXh0IiwidXNlQ29udGV4dCIsIkRFRkFVTFRfQUdFTlQiLCJpZCIsIm5hbWUiLCJjcmVhdGVkX2J5IiwiaXNfZGVsZXRlZCIsImNvbXBhbnlfaWQiLCJlbW9qaSIsImludHJvZHVjdGlvbiIsInR5cGUiLCJrbm93bGVkZ2UiLCJpc19pbnRlcm5hbCIsIkdsb2JhbENvbnRleHQiLCJ1c2VHbG9iYWxDb250ZXh0IiwiY29udGV4dCIsIkVycm9yIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRleHQvZ2xvYmFsLWNvbnRleHQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlQ29udGV4dCwgTXV0YWJsZVJlZk9iamVjdCwgdXNlQ29udGV4dCB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgUHJvamVjdCB9IGZyb20gJy4uL3R5cGVzL1Byb2plY3QnXG5pbXBvcnQgeyBDbGllbnQgfSBmcm9tICcuLi90eXBlcy9DbGllbnQnXG5pbXBvcnQgeyBUYXNrIH0gZnJvbSAnLi4vdHlwZXMvVGFzaydcbmltcG9ydCB7IENvbmZpZ1NldHRpbmdJdGVtIH0gZnJvbSAnLi4vY29uc3RhbnRzL3Blcm1pc3Npb25zL3R5cGVzJ1xuaW1wb3J0IHsgQWdlbnQgfSBmcm9tICcuLi90eXBlcy9hZ2VudCdcblxuY29uc3QgREVGQVVMVF9BR0VOVDogQWdlbnQgPSB7XG4gIGlkOiAnMScsXG4gIG5hbWU6ICdBZ2VudGUgUE0nLFxuICBjcmVhdGVkX2J5OiB7IG5hbWU6ICcxNzQ1NCcsIGlzX2RlbGV0ZWQ6IGZhbHNlIH0sXG4gIGNvbXBhbnlfaWQ6ICcyMzM2JyxcbiAgZW1vamk6ICfwn5OKJyxcbiAgaW50cm9kdWN0aW9uOiBudWxsLFxuICB0eXBlOiAncG0nLFxuICBrbm93bGVkZ2U6IFtdLFxuICBpc19pbnRlcm5hbDogZmFsc2UsXG59XG5cbmV4cG9ydCB7IERFRkFVTFRfQUdFTlQgfVxuXG5leHBvcnQgdHlwZSBDaGlwc1Byb2plY3QgPSB7XG4gIHByb2plY3ROYW1lOiBzdHJpbmdcbiAgY2xpZW50TmFtZTogc3RyaW5nXG4gIHByb2plY3RJZDogc3RyaW5nXG59XG5cbi8qKlxuICogUGluIGRlIGNvbnRleHRvIHBlcnNpc3RlbnRlLCBkZXJpdmFkbyBkZSBgcHJvamVjdGAvYGNsaWVudGAvYHRhc2tgL2BjaGlwc1Byb2plY3RgIChSRkMgwqcxMi4yKS5cbiAqIE1vbm8tY29udGV4dG8gaG95IChsYSBlbnRpZGFkIG3DoXMgZXNwZWPDrWZpY2EgYWN0aXZhKTsgZWwgc2NvcGUgaGFjaWEgYXJyaWJhIHZpYWphIGVuIGBwYXJlbnRzYC5cbiAqIExvcyBjb25zdW1pZG9yZXMgZGViZXLDrWFuIGxlZXIgYHBpbm5lZENvbnRleHRgIGVuIHZleiBkZSBsb3MgY2FtcG9zIHN1ZWx0b3MsIHBhcmEgcXVlIGVsIHNhbHRvXG4gKiBmdXR1cm8gYSBtdWx0aS1jb250ZXh0byAoYHBpbnM6IFBpbm5lZENvbnRleHRbXWApIHNlYSBhZGl0aXZvLlxuICovXG5leHBvcnQgdHlwZSBQaW5uZWRDb250ZXh0ID0ge1xuICB0eXBlOiAnY2xpZW50JyB8ICdwcm9qZWN0JyB8ICd0YXNrJ1xuICBpZDogc3RyaW5nIHwgbnVtYmVyXG4gIG5hbWU6IHN0cmluZ1xuICBwYXJlbnRzPzogeyBjbGllbnRJZD86IHN0cmluZyB8IG51bWJlcjsgcHJvamVjdElkPzogc3RyaW5nIHwgbnVtYmVyIH1cbn1cblxuZXhwb3J0IHR5cGUgU2VjdGlvbiA9ICdwcm9qZWN0JyB8ICdoZWFkZXInIHwgJ2NsaWVudCcgfCAndGFzaycgfCAncGxhbm5lcidcblxuLyoqIEVsZW1lbnRvIGRlbCBob3N0IChDT1Igd2ViKSBxdWUgZWwgcGlsbCBtaW5pbWl6YWRvIGRlYmUgZXNxdWl2YXIuICovXG5leHBvcnQgdHlwZSBNaW5pbWl6ZWRQaWxsQXZvaWRBbmNob3IgPSB7XG4gIHNlbGVjdG9yOiBzdHJpbmdcbiAgZ2FwUHg/OiBudW1iZXJcbn1cblxudHlwZSBCYXNlR2xvYmFsQ29udGV4dFR5cGUgPSB7XG4gIHNlY3Rpb246IFNlY3Rpb25cbiAgYWdlbnQ6IEFnZW50IHwgbnVsbFxuICBzZWxlY3RBZ2VudDogKGFnZW50OiBBZ2VudCkgPT4gdm9pZFxuICBjbGVhckFnZW50OiAoKSA9PiB2b2lkXG4gIHByb2plY3Q6IFByb2plY3QgfCBudWxsXG4gIHNldFByb2plY3Q6IChwcm9qZWN0OiBQcm9qZWN0IHwgbnVsbCkgPT4gdm9pZFxuICBjbGllbnQ6IENsaWVudCB8IG51bGxcbiAgc2V0Q2xpZW50OiAoY2xpZW50OiBDbGllbnQgfCBudWxsKSA9PiB2b2lkXG4gIHRhc2s6IFRhc2sgfCBudWxsXG4gIHNldFRhc2s6ICh0YXNrOiBUYXNrIHwgbnVsbCkgPT4gdm9pZFxuICBpc1dlYlNlYXJjaEFjdGl2ZTogYm9vbGVhblxuICB0b2dnbGVXZWJTZWFyY2g6ICgpID0+IHZvaWRcbiAgaXNEZWVwU2VhcmNoQWN0aXZlOiBib29sZWFuXG4gIHRvZ2dsZURlZXBTZWFyY2g6ICgpID0+IHZvaWRcbiAgaXNBdXRvQXBwcm92ZUFjdGl2ZT86IGJvb2xlYW5cbiAgdG9nZ2xlQXV0b0FwcHJvdmU/OiAoKSA9PiB2b2lkXG4gIGhhc011bHRpQWdlbnRzPzogYm9vbGVhblxuICBjaGlwc1Byb2plY3Q/OiBDaGlwc1Byb2plY3QgfCBudWxsXG4gIHNldENoaXBzUHJvamVjdDogKGNoaXBzUHJvamVjdDogQ2hpcHNQcm9qZWN0IHwgbnVsbCkgPT4gdm9pZFxuICAvKiogUGluIGRlIGNvbnRleHRvIGRlcml2YWRvIChhcnJheS1yZWFkeSwgUkZDIMKnMTIuMSkuIE1vbm8gaG95OyBudWxsIGVuIG1vZG8gZ2xvYmFsLiAqL1xuICBwaW5uZWRDb250ZXh0PzogUGlubmVkQ29udGV4dCB8IG51bGxcbiAgLyoqIEFuY2hvcnMgZGVsIGhvc3QgcGFyYSBwb3NpY2lvbmFyIGVsIHBpbGwgbWluaW1pemFkbyBzaW4gc29sYXBhcnNlIChlai4gXCIrIEFncmVnYXIgdGFyZWFcIikuICovXG4gIG1pbmltaXplZFBpbGxBdm9pZEFuY2hvcnM/OiBNaW5pbWl6ZWRQaWxsQXZvaWRBbmNob3JbXVxufVxuXG4vKiogRkFRIGlueWVjdGFkYSBwb3IgZWwgaG9zdCAoZWouIGJhbm5lciBkZSBwcm95ZWN0byBlbiBDT1IpIHBhcmEgYWJyaXIgZWwgY2hhdCBjb24gZWwgbWlzbW8gY3JpdGVyaW8gcXVlIHVuIGNsaWMgZW4gRkFRIGVuIGhvbWUuXG4gKiBgZmFxSWRgIGVzIG9wY2lvbmFsOiBjdWFuZG8gbm8gZXhpc3RlIChlai4gbWVuc2FqZSBkZSBkZXN2w61vcyBkZWwgYmFubmVyKSwgZWwgY2hhdCBlbnbDrWEgc29sbyBlbCB0ZXh0byBzaW4gaGVhZGVyIFgtRmFxLUlkLlxuICogYGNvbnRleHREYXRhYCBlcyBvcGNpb25hbDogcGF5bG9hZCBkZWwgYmFubmVyIChkZXN2w61vL23DqXRyaWNhcykgcXVlIHZpYWphIGVuIGVsIGhlYWRlciBgWC1Db250ZXh0LURhdGFgIGRlbCBvcmNoZXN0cmF0b3IgKEpTT04gZW4gYmFzZTY0KS4gKi9cbmV4cG9ydCB0eXBlIEJhbm5lckVudHJ5RmFxID0ge1xuICBmYXFJZD86IHN0cmluZ1xuICBmYXFUaXRsZTogc3RyaW5nXG4gIGNvbnRleHREYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbn1cblxuZXhwb3J0IHR5cGUgUHJvamVjdFN1bW1hcnlDb250ZXh0VHlwZSA9IEJhc2VHbG9iYWxDb250ZXh0VHlwZSAmIHtcbiAgY29uZmlndXJlU2V0dGluZ3NJdGVtczogTXV0YWJsZVJlZk9iamVjdDxDb25maWdTZXR0aW5nSXRlbVtdPlxuICByZXN0b3JlQ29uZmlndXJlU2V0dGluZ3M6ICgpID0+IHZvaWRcbiAgZW50aXR5VmFsdWVzOiB7XG4gICAgcHJvamVjdElkOiBzdHJpbmcgfCBudWxsXG4gICAgY2xpZW50SWQ6IHN0cmluZyB8IG51bGxcbiAgfVxuICBzZXRFbnRpdHlWYWx1ZXM6IChlbnRpdHk6IHsgcHJvamVjdElkOiBzdHJpbmcgfCBudWxsOyBjbGllbnRJZDogc3RyaW5nIHwgbnVsbCB9KSA9PiB2b2lkXG4gIC8qKiBTaSB2aWVuZSBkZWZpbmlkYSwgZWwgbW9kYWwgZGlzcGFyYSB1bmEgdmV6IGBzdGFydENoYXQoZmFxVGl0bGUsIFtdLCBmYXFJZClgIGFsIGVzdGFyIGxpc3RvcyBhZ2VudGUgKyBlbnRpZGFkICovXG4gIGJhbm5lckVudHJ5RmFxPzogQmFubmVyRW50cnlGYXEgfCBudWxsXG4gIGluaXRpYWxEcmFmdD86IHN0cmluZyB8IG51bGxcbiAgLyoqXG4gICAqIE9uZS1zaG90OiB0cnVlIGFmdGVyIGVtYWlsIGRlZXAtbGluayBkcmFmdCBpcyBhcHBsaWVkIHRvIHRoZSBjb21wb3Nlci5cbiAgICogQ29uc3VtZWQgb24gZmlyc3QgQUlfQ0hBVF9TRU5EIChgc291cmNlOiAnZGVlcF9saW5rJ2ApOyBjbGVhcmVkIG9uIGNoYXQgc2Vzc2lvbiBjaGFuZ2UgLyBjbG9zZS5cbiAgICovXG4gIGRlZXBMaW5rU2VuZFBlbmRpbmdSZWY/OiBNdXRhYmxlUmVmT2JqZWN0PGJvb2xlYW4+XG59XG5cbnR5cGUgQWxsb3dlZEdsb2JhbENvbnRleHRUeXBlID0gUHJvamVjdFN1bW1hcnlDb250ZXh0VHlwZVxuXG5leHBvcnQgdHlwZSBHbG9iYWxDb250ZXh0VHlwZTxUIGV4dGVuZHMgQWxsb3dlZEdsb2JhbENvbnRleHRUeXBlID0gQWxsb3dlZEdsb2JhbENvbnRleHRUeXBlPiA9IFQgfCBudWxsXG5cbmV4cG9ydCBjb25zdCBHbG9iYWxDb250ZXh0ID0gY3JlYXRlQ29udGV4dDxHbG9iYWxDb250ZXh0VHlwZT4obnVsbClcblxuZXhwb3J0IGNvbnN0IHVzZUdsb2JhbENvbnRleHQgPSA8VCBleHRlbmRzIEJhc2VHbG9iYWxDb250ZXh0VHlwZSA9IEFsbG93ZWRHbG9iYWxDb250ZXh0VHlwZT4oKSA9PiB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KEdsb2JhbENvbnRleHQpXG5cbiAgaWYgKCFjb250ZXh0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCd1c2VHbG9iYWxDb250ZXh0IG11c3QgYmUgdXNlZCB3aXRoaW4gYSBHbG9iYWxDb250ZXh0UHJvdmlkZXInKVxuICB9XG5cbiAgcmV0dXJuIGNvbnRleHQgYXMgdW5rbm93biBhcyBUXG59XG4iXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLGFBQWEsRUFBb0JDLFVBQVUsUUFBUSxPQUFPO0FBT25FLElBQU1DLGFBQW9CLEdBQUc7RUFDM0JDLEVBQUUsRUFBRSxHQUFHO0VBQ1BDLElBQUksRUFBRSxXQUFXO0VBQ2pCQyxVQUFVLEVBQUU7SUFBRUQsSUFBSSxFQUFFLE9BQU87SUFBRUUsVUFBVSxFQUFFO0VBQU0sQ0FBQztFQUNoREMsVUFBVSxFQUFFLE1BQU07RUFDbEJDLEtBQUssRUFBRSxJQUFJO0VBQ1hDLFlBQVksRUFBRSxJQUFJO0VBQ2xCQyxJQUFJLEVBQUUsSUFBSTtFQUNWQyxTQUFTLEVBQUUsRUFBRTtFQUNiQyxXQUFXLEVBQUU7QUFDZixDQUFDO0FBRUQsU0FBU1YsYUFBYTs7QUFRdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQVVBOztBQWdDQTtBQUNBO0FBQ0E7O0FBNkJBLE9BQU8sSUFBTVcsYUFBYSxnQkFBR2IsYUFBYSxDQUFvQixJQUFJLENBQUM7QUFFbkUsT0FBTyxJQUFNYyxnQkFBZ0IsR0FBRyxTQUFuQkEsZ0JBQWdCQSxDQUFBLEVBQXFFO0VBQ2hHLElBQU1DLE9BQU8sR0FBR2QsVUFBVSxDQUFDWSxhQUFhLENBQUM7RUFFekMsSUFBSSxDQUFDRSxPQUFPLEVBQUU7SUFDWixNQUFNLElBQUlDLEtBQUssQ0FBQyw4REFBOEQsQ0FBQztFQUNqRjtFQUVBLE9BQU9ELE9BQU87QUFDaEIsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
@@ -0,0 +1,235 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+ import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
3
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
4
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
5
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
6
+ /* eslint-disable react/button-has-type */
7
+ import { useCallback, useEffect, useRef, useState } from 'react';
8
+ import { AgentActivityIndicator } from '../components/atoms/AgentActivityIndicator/AgentActivityIndicator';
9
+ import { MaiaStreamdown } from '../components/atoms/MaiaStreamdown/MaiaStreamdown';
10
+ import { ReasoningBlock } from '../components/atoms/ReasoningBlock/ReasoningBlock';
11
+ import { SCTimelineIndicator, SCFinalAnswerBody } from '../components/atoms/ReasoningBlock/ReasoningBlock.styles';
12
+ import { ReasoningTimeline } from '../components/atoms/ReasoningBlock/ReasoningTimeline';
13
+ import { shouldStreamNarrationInTimeline } from '../components/atoms/ReasoningBlock/reasoningLiveNarration';
14
+ import { reasoningStore } from '../hooks/useReasoningTrace/reasoningStore';
15
+ import { useReasoningTrace } from '../hooks/useReasoningTrace';
16
+ import { useT } from '../hooks/useT';
17
+ import { resolveToolActionLabel, getWritingStreamActivity } from '../utils/streamActivityMessages';
18
+ import { MOCK_EVENTS, MOCK_SUMMARY } from './reasoningTraceMock';
19
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
20
+ var MESSAGE_ID = 'answer-dev-reasoning-streaming';
21
+ var SPEEDS = [1, 2, 4, 8];
22
+ /** Chunks en los que se parte el texto de cada turno para simular los tokens. */
23
+ var BODY_CHUNKS = 4;
24
+ export function DevReasoningTimeline() {
25
+ var _useT = useT(),
26
+ t = _useT.t;
27
+ var _useState = useState(null),
28
+ _useState2 = _slicedToArray(_useState, 2),
29
+ activity = _useState2[0],
30
+ setActivity = _useState2[1];
31
+ var _useState3 = useState(''),
32
+ _useState4 = _slicedToArray(_useState3, 2),
33
+ body = _useState4[0],
34
+ setBody = _useState4[1];
35
+ var _useState5 = useState(false),
36
+ _useState6 = _slicedToArray(_useState5, 2),
37
+ isDone = _useState6[0],
38
+ setIsDone = _useState6[1];
39
+ var _useState7 = useState(false),
40
+ _useState8 = _slicedToArray(_useState7, 2),
41
+ showThinking = _useState8[0],
42
+ setShowThinking = _useState8[1];
43
+ var _useState9 = useState(4),
44
+ _useState0 = _slicedToArray(_useState9, 2),
45
+ speed = _useState0[0],
46
+ setSpeed = _useState0[1];
47
+ var _useState1 = useState(0),
48
+ _useState10 = _slicedToArray(_useState1, 2),
49
+ runId = _useState10[0],
50
+ setRunId = _useState10[1];
51
+ var timeoutsRef = useRef([]);
52
+ var clearTimers = useCallback(function () {
53
+ timeoutsRef.current.forEach(function (id) {
54
+ return window.clearTimeout(id);
55
+ });
56
+ timeoutsRef.current = [];
57
+ }, []);
58
+ var run = useCallback(function () {
59
+ clearTimers();
60
+ reasoningStore.clear();
61
+ reasoningStore.start(MESSAGE_ID);
62
+ setActivity({
63
+ phase: 'thinking',
64
+ message: t('chat.activity.thinking.analyzing')
65
+ });
66
+ setBody('');
67
+ setIsDone(false);
68
+ setRunId(function (current) {
69
+ return current + 1;
70
+ });
71
+
72
+ // La traza autoritativa del `complete` se arma con los mismos steps que se
73
+ // fueron emitiendo, para no duplicar el payload en el mock.
74
+ var emitted = new Map();
75
+ var schedule = function schedule(at, fn) {
76
+ timeoutsRef.current.push(window.setTimeout(fn, at / speed));
77
+ };
78
+ MOCK_EVENTS.forEach(function (event) {
79
+ if (event.kind === 'thinking') {
80
+ schedule(event.at, function () {
81
+ return reasoningStore.appendThinking(MESSAGE_ID, event.i, event.text);
82
+ });
83
+ return;
84
+ }
85
+ if (event.kind === 'body') {
86
+ schedule(event.at, function () {
87
+ return setActivity(getWritingStreamActivity(t));
88
+ });
89
+ // Tokens: el texto entra de a pedazos, como el stream real.
90
+ var size = Math.ceil(event.text.length / BODY_CHUNKS);
91
+ var _loop = function _loop() {
92
+ var slice = event.text.slice(0, size * (chunk + 1));
93
+ schedule(event.at + chunk * 220, function () {
94
+ return setBody(slice);
95
+ });
96
+ };
97
+ for (var chunk = 0; chunk < BODY_CHUNKS; chunk += 1) {
98
+ _loop();
99
+ }
100
+ return;
101
+ }
102
+ if (event.kind === 'complete') {
103
+ schedule(event.at, function () {
104
+ reasoningStore.finish(MESSAGE_ID, {
105
+ v: 1,
106
+ steps: _toConsumableArray(emitted.values()),
107
+ summary: MOCK_SUMMARY
108
+ });
109
+ setActivity(null);
110
+ setIsDone(true);
111
+ });
112
+ return;
113
+ }
114
+ schedule(event.at, function () {
115
+ var payload = event.payload;
116
+ emitted.set(payload.i, _objectSpread(_objectSpread({}, emitted.get(payload.i)), payload));
117
+
118
+ // Igual que answer_reset + reasoning_step: limpiar el body antes de
119
+ // commitear la fila para no renderizar 1 frame en el slot del cuerpo.
120
+ if (payload.type === 'narration') setBody('');
121
+ reasoningStore.applyStep(MESSAGE_ID, payload);
122
+
123
+ // El manager saca el label de actividad de la tool que arranca a correr.
124
+ if (payload.status === 'running' && payload.type === 'tool' && payload.tool) {
125
+ var label = resolveToolActionLabel(payload.tool, t, 'present');
126
+ if (label) setActivity({
127
+ phase: 'action',
128
+ message: label
129
+ });
130
+ }
131
+ });
132
+ });
133
+ }, [clearTimers, speed, t]);
134
+ useEffect(function () {
135
+ return clearTimers;
136
+ }, [clearTimers]);
137
+ var _useReasoningTrace = useReasoningTrace(isDone ? '' : MESSAGE_ID),
138
+ steps = _useReasoningTrace.steps;
139
+ var streamNarrationInTimeline = shouldStreamNarrationInTimeline(steps, activity, body);
140
+ return /*#__PURE__*/_jsxs("div", {
141
+ style: {
142
+ padding: 24,
143
+ display: 'flex',
144
+ flexDirection: 'column',
145
+ gap: 20,
146
+ fontFamily: 'Work Sans, sans-serif'
147
+ },
148
+ children: [/*#__PURE__*/_jsxs("div", {
149
+ style: {
150
+ display: 'flex',
151
+ gap: 16,
152
+ alignItems: 'center',
153
+ flexWrap: 'wrap'
154
+ },
155
+ children: [/*#__PURE__*/_jsx("button", {
156
+ onClick: run,
157
+ style: {
158
+ padding: '6px 14px'
159
+ },
160
+ children: "Reproducir turno"
161
+ }), /*#__PURE__*/_jsxs("span", {
162
+ style: {
163
+ display: 'flex',
164
+ gap: 4,
165
+ alignItems: 'center',
166
+ fontSize: 13
167
+ },
168
+ children: ["Velocidad:", SPEEDS.map(function (option) {
169
+ return /*#__PURE__*/_jsxs("button", {
170
+ onClick: function onClick() {
171
+ return setSpeed(option);
172
+ },
173
+ style: {
174
+ padding: '2px 8px',
175
+ fontWeight: speed === option ? 700 : 400
176
+ },
177
+ children: [option, "x"]
178
+ }, option);
179
+ })]
180
+ }), /*#__PURE__*/_jsxs("label", {
181
+ htmlFor: "dev-show-thinking",
182
+ style: {
183
+ display: 'flex',
184
+ gap: 6,
185
+ alignItems: 'center',
186
+ fontSize: 13
187
+ },
188
+ children: [/*#__PURE__*/_jsx("input", {
189
+ id: "dev-show-thinking",
190
+ type: "checkbox",
191
+ checked: showThinking,
192
+ onChange: function onChange(e) {
193
+ return setShowThinking(e.target.checked);
194
+ }
195
+ }), "Mostrar thinking (window.reasoningThinking)"]
196
+ })]
197
+ }), /*#__PURE__*/_jsxs("p", {
198
+ style: {
199
+ margin: 0,
200
+ fontSize: 12,
201
+ color: '#808080',
202
+ maxWidth: 640
203
+ },
204
+ children: ["Replay de un turno real de 94s: 30 pasos, 18 tools, dos handoffs anidados y r\xE1fagas de tools en paralelo. El cuerpo del mensaje se limpia con cada narraci\xF3n, igual que el ", /*#__PURE__*/_jsx("code", {
205
+ children: "answer_reset"
206
+ }), " del backend."]
207
+ }), /*#__PURE__*/_jsxs("div", {
208
+ style: {
209
+ maxWidth: 640,
210
+ display: 'flex',
211
+ flexDirection: 'column',
212
+ gap: 8
213
+ },
214
+ children: [isDone ? /*#__PURE__*/_jsx(ReasoningBlock, {
215
+ messageId: MESSAGE_ID
216
+ }, "block-".concat(runId)) : /*#__PURE__*/_jsx(ReasoningTimeline, {
217
+ messageId: MESSAGE_ID,
218
+ showThinking: showThinking,
219
+ streamActivity: activity,
220
+ streamingText: body
221
+ }), !streamNarrationInTimeline && !!body && /*#__PURE__*/_jsx(SCFinalAnswerBody, {
222
+ children: /*#__PURE__*/_jsx(MaiaStreamdown, {
223
+ variant: "chat",
224
+ children: body
225
+ })
226
+ }), activity && /*#__PURE__*/_jsx(SCTimelineIndicator, {
227
+ children: /*#__PURE__*/_jsx(AgentActivityIndicator, {
228
+ activity: activity,
229
+ compact: true
230
+ })
231
+ })]
232
+ })]
233
+ });
234
+ }
235
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZVJlZiIsInVzZVN0YXRlIiwiQWdlbnRBY3Rpdml0eUluZGljYXRvciIsIk1haWFTdHJlYW1kb3duIiwiUmVhc29uaW5nQmxvY2siLCJTQ1RpbWVsaW5lSW5kaWNhdG9yIiwiU0NGaW5hbEFuc3dlckJvZHkiLCJSZWFzb25pbmdUaW1lbGluZSIsInNob3VsZFN0cmVhbU5hcnJhdGlvbkluVGltZWxpbmUiLCJyZWFzb25pbmdTdG9yZSIsInVzZVJlYXNvbmluZ1RyYWNlIiwidXNlVCIsInJlc29sdmVUb29sQWN0aW9uTGFiZWwiLCJnZXRXcml0aW5nU3RyZWFtQWN0aXZpdHkiLCJNT0NLX0VWRU5UUyIsIk1PQ0tfU1VNTUFSWSIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJNRVNTQUdFX0lEIiwiU1BFRURTIiwiQk9EWV9DSFVOS1MiLCJEZXZSZWFzb25pbmdUaW1lbGluZSIsIl91c2VUIiwidCIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsImFjdGl2aXR5Iiwic2V0QWN0aXZpdHkiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImJvZHkiLCJzZXRCb2R5IiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJpc0RvbmUiLCJzZXRJc0RvbmUiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsInNob3dUaGlua2luZyIsInNldFNob3dUaGlua2luZyIsIl91c2VTdGF0ZTkiLCJfdXNlU3RhdGUwIiwic3BlZWQiLCJzZXRTcGVlZCIsIl91c2VTdGF0ZTEiLCJfdXNlU3RhdGUxMCIsInJ1bklkIiwic2V0UnVuSWQiLCJ0aW1lb3V0c1JlZiIsImNsZWFyVGltZXJzIiwiY3VycmVudCIsImZvckVhY2giLCJpZCIsIndpbmRvdyIsImNsZWFyVGltZW91dCIsInJ1biIsImNsZWFyIiwic3RhcnQiLCJwaGFzZSIsIm1lc3NhZ2UiLCJlbWl0dGVkIiwiTWFwIiwic2NoZWR1bGUiLCJhdCIsImZuIiwicHVzaCIsInNldFRpbWVvdXQiLCJldmVudCIsImtpbmQiLCJhcHBlbmRUaGlua2luZyIsImkiLCJ0ZXh0Iiwic2l6ZSIsIk1hdGgiLCJjZWlsIiwibGVuZ3RoIiwiX2xvb3AiLCJzbGljZSIsImNodW5rIiwiZmluaXNoIiwidiIsInN0ZXBzIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwidmFsdWVzIiwic3VtbWFyeSIsInBheWxvYWQiLCJzZXQiLCJfb2JqZWN0U3ByZWFkIiwiZ2V0IiwidHlwZSIsImFwcGx5U3RlcCIsInN0YXR1cyIsInRvb2wiLCJsYWJlbCIsIl91c2VSZWFzb25pbmdUcmFjZSIsInN0cmVhbU5hcnJhdGlvbkluVGltZWxpbmUiLCJzdHlsZSIsInBhZGRpbmciLCJkaXNwbGF5IiwiZmxleERpcmVjdGlvbiIsImdhcCIsImZvbnRGYW1pbHkiLCJjaGlsZHJlbiIsImFsaWduSXRlbXMiLCJmbGV4V3JhcCIsIm9uQ2xpY2siLCJmb250U2l6ZSIsIm1hcCIsIm9wdGlvbiIsImZvbnRXZWlnaHQiLCJodG1sRm9yIiwiY2hlY2tlZCIsIm9uQ2hhbmdlIiwiZSIsInRhcmdldCIsIm1hcmdpbiIsImNvbG9yIiwibWF4V2lkdGgiLCJtZXNzYWdlSWQiLCJjb25jYXQiLCJzdHJlYW1BY3Rpdml0eSIsInN0cmVhbWluZ1RleHQiLCJ2YXJpYW50IiwiY29tcGFjdCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kZXYvRGV2UmVhc29uaW5nVGltZWxpbmUudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L2J1dHRvbi1oYXMtdHlwZSAqL1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuXG5pbXBvcnQgeyBBZ2VudEFjdGl2aXR5SW5kaWNhdG9yIH0gZnJvbSAnLi4vY29tcG9uZW50cy9hdG9tcy9BZ2VudEFjdGl2aXR5SW5kaWNhdG9yL0FnZW50QWN0aXZpdHlJbmRpY2F0b3InXG5pbXBvcnQgeyBNYWlhU3RyZWFtZG93biB9IGZyb20gJy4uL2NvbXBvbmVudHMvYXRvbXMvTWFpYVN0cmVhbWRvd24vTWFpYVN0cmVhbWRvd24nXG5pbXBvcnQgeyBSZWFzb25pbmdCbG9jayB9IGZyb20gJy4uL2NvbXBvbmVudHMvYXRvbXMvUmVhc29uaW5nQmxvY2svUmVhc29uaW5nQmxvY2snXG5pbXBvcnQgeyBTQ1RpbWVsaW5lSW5kaWNhdG9yLCBTQ0ZpbmFsQW5zd2VyQm9keSB9IGZyb20gJy4uL2NvbXBvbmVudHMvYXRvbXMvUmVhc29uaW5nQmxvY2svUmVhc29uaW5nQmxvY2suc3R5bGVzJ1xuaW1wb3J0IHsgUmVhc29uaW5nVGltZWxpbmUgfSBmcm9tICcuLi9jb21wb25lbnRzL2F0b21zL1JlYXNvbmluZ0Jsb2NrL1JlYXNvbmluZ1RpbWVsaW5lJ1xuaW1wb3J0IHsgc2hvdWxkU3RyZWFtTmFycmF0aW9uSW5UaW1lbGluZSB9IGZyb20gJy4uL2NvbXBvbmVudHMvYXRvbXMvUmVhc29uaW5nQmxvY2svcmVhc29uaW5nTGl2ZU5hcnJhdGlvbidcbmltcG9ydCB7IHJlYXNvbmluZ1N0b3JlIH0gZnJvbSAnLi4vaG9va3MvdXNlUmVhc29uaW5nVHJhY2UvcmVhc29uaW5nU3RvcmUnXG5pbXBvcnQgeyB1c2VSZWFzb25pbmdUcmFjZSB9IGZyb20gJy4uL2hvb2tzL3VzZVJlYXNvbmluZ1RyYWNlJ1xuaW1wb3J0IHsgdXNlVCB9IGZyb20gJy4uL2hvb2tzL3VzZVQnXG5pbXBvcnQgeyByZXNvbHZlVG9vbEFjdGlvbkxhYmVsLCBnZXRXcml0aW5nU3RyZWFtQWN0aXZpdHkgfSBmcm9tICcuLi91dGlscy9zdHJlYW1BY3Rpdml0eU1lc3NhZ2VzJ1xuaW1wb3J0IHR5cGUgeyBSZWFzb25pbmdTdGVwUGF5bG9hZCB9IGZyb20gJy4uL3R5cGVzL3JlYXNvbmluZydcbmltcG9ydCB0eXBlIHsgU3RyZWFtQWN0aXZpdHkgfSBmcm9tICcuLi90eXBlcy9zdHJlYW1BY3Rpdml0eSdcbmltcG9ydCB7IE1PQ0tfRVZFTlRTLCBNT0NLX1NVTU1BUlkgfSBmcm9tICcuL3JlYXNvbmluZ1RyYWNlTW9jaydcblxuY29uc3QgTUVTU0FHRV9JRCA9ICdhbnN3ZXItZGV2LXJlYXNvbmluZy1zdHJlYW1pbmcnXG5jb25zdCBTUEVFRFMgPSBbMSwgMiwgNCwgOF0gYXMgY29uc3Rcbi8qKiBDaHVua3MgZW4gbG9zIHF1ZSBzZSBwYXJ0ZSBlbCB0ZXh0byBkZSBjYWRhIHR1cm5vIHBhcmEgc2ltdWxhciBsb3MgdG9rZW5zLiAqL1xuY29uc3QgQk9EWV9DSFVOS1MgPSA0XG5cbmV4cG9ydCBmdW5jdGlvbiBEZXZSZWFzb25pbmdUaW1lbGluZSgpIHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUKClcbiAgY29uc3QgW2FjdGl2aXR5LCBzZXRBY3Rpdml0eV0gPSB1c2VTdGF0ZTxTdHJlYW1BY3Rpdml0eSB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtib2R5LCBzZXRCb2R5XSA9IHVzZVN0YXRlKCcnKVxuICBjb25zdCBbaXNEb25lLCBzZXRJc0RvbmVdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtzaG93VGhpbmtpbmcsIHNldFNob3dUaGlua2luZ10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW3NwZWVkLCBzZXRTcGVlZF0gPSB1c2VTdGF0ZTwodHlwZW9mIFNQRUVEUylbbnVtYmVyXT4oNClcbiAgY29uc3QgW3J1bklkLCBzZXRSdW5JZF0gPSB1c2VTdGF0ZSgwKVxuICBjb25zdCB0aW1lb3V0c1JlZiA9IHVzZVJlZjxudW1iZXJbXT4oW10pXG5cbiAgY29uc3QgY2xlYXJUaW1lcnMgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgdGltZW91dHNSZWYuY3VycmVudC5mb3JFYWNoKGlkID0+IHdpbmRvdy5jbGVhclRpbWVvdXQoaWQpKVxuICAgIHRpbWVvdXRzUmVmLmN1cnJlbnQgPSBbXVxuICB9LCBbXSlcblxuICBjb25zdCBydW4gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY2xlYXJUaW1lcnMoKVxuICAgIHJlYXNvbmluZ1N0b3JlLmNsZWFyKClcbiAgICByZWFzb25pbmdTdG9yZS5zdGFydChNRVNTQUdFX0lEKVxuICAgIHNldEFjdGl2aXR5KHsgcGhhc2U6ICd0aGlua2luZycsIG1lc3NhZ2U6IHQoJ2NoYXQuYWN0aXZpdHkudGhpbmtpbmcuYW5hbHl6aW5nJykgfSlcbiAgICBzZXRCb2R5KCcnKVxuICAgIHNldElzRG9uZShmYWxzZSlcbiAgICBzZXRSdW5JZChjdXJyZW50ID0+IGN1cnJlbnQgKyAxKVxuXG4gICAgLy8gTGEgdHJhemEgYXV0b3JpdGF0aXZhIGRlbCBgY29tcGxldGVgIHNlIGFybWEgY29uIGxvcyBtaXNtb3Mgc3RlcHMgcXVlIHNlXG4gICAgLy8gZnVlcm9uIGVtaXRpZW5kbywgcGFyYSBubyBkdXBsaWNhciBlbCBwYXlsb2FkIGVuIGVsIG1vY2suXG4gICAgY29uc3QgZW1pdHRlZCA9IG5ldyBNYXA8bnVtYmVyLCBSZWFzb25pbmdTdGVwUGF5bG9hZD4oKVxuICAgIGNvbnN0IHNjaGVkdWxlID0gKGF0OiBudW1iZXIsIGZuOiAoKSA9PiB2b2lkKSA9PiB7XG4gICAgICB0aW1lb3V0c1JlZi5jdXJyZW50LnB1c2god2luZG93LnNldFRpbWVvdXQoZm4sIGF0IC8gc3BlZWQpKVxuICAgIH1cblxuICAgIE1PQ0tfRVZFTlRTLmZvckVhY2goZXZlbnQgPT4ge1xuICAgICAgaWYgKGV2ZW50LmtpbmQgPT09ICd0aGlua2luZycpIHtcbiAgICAgICAgc2NoZWR1bGUoZXZlbnQuYXQsICgpID0+IHJlYXNvbmluZ1N0b3JlLmFwcGVuZFRoaW5raW5nKE1FU1NBR0VfSUQsIGV2ZW50LmksIGV2ZW50LnRleHQpKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgaWYgKGV2ZW50LmtpbmQgPT09ICdib2R5Jykge1xuICAgICAgICBzY2hlZHVsZShldmVudC5hdCwgKCkgPT4gc2V0QWN0aXZpdHkoZ2V0V3JpdGluZ1N0cmVhbUFjdGl2aXR5KHQpKSlcbiAgICAgICAgLy8gVG9rZW5zOiBlbCB0ZXh0byBlbnRyYSBkZSBhIHBlZGF6b3MsIGNvbW8gZWwgc3RyZWFtIHJlYWwuXG4gICAgICAgIGNvbnN0IHNpemUgPSBNYXRoLmNlaWwoZXZlbnQudGV4dC5sZW5ndGggLyBCT0RZX0NIVU5LUylcbiAgICAgICAgZm9yIChsZXQgY2h1bmsgPSAwOyBjaHVuayA8IEJPRFlfQ0hVTktTOyBjaHVuayArPSAxKSB7XG4gICAgICAgICAgY29uc3Qgc2xpY2UgPSBldmVudC50ZXh0LnNsaWNlKDAsIHNpemUgKiAoY2h1bmsgKyAxKSlcbiAgICAgICAgICBzY2hlZHVsZShldmVudC5hdCArIGNodW5rICogMjIwLCAoKSA9PiBzZXRCb2R5KHNsaWNlKSlcbiAgICAgICAgfVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgaWYgKGV2ZW50LmtpbmQgPT09ICdjb21wbGV0ZScpIHtcbiAgICAgICAgc2NoZWR1bGUoZXZlbnQuYXQsICgpID0+IHtcbiAgICAgICAgICByZWFzb25pbmdTdG9yZS5maW5pc2goTUVTU0FHRV9JRCwgeyB2OiAxLCBzdGVwczogWy4uLmVtaXR0ZWQudmFsdWVzKCldLCBzdW1tYXJ5OiBNT0NLX1NVTU1BUlkgfSlcbiAgICAgICAgICBzZXRBY3Rpdml0eShudWxsKVxuICAgICAgICAgIHNldElzRG9uZSh0cnVlKVxuICAgICAgICB9KVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgc2NoZWR1bGUoZXZlbnQuYXQsICgpID0+IHtcbiAgICAgICAgY29uc3QgeyBwYXlsb2FkIH0gPSBldmVudFxuICAgICAgICBlbWl0dGVkLnNldChwYXlsb2FkLmksIHsgLi4uZW1pdHRlZC5nZXQocGF5bG9hZC5pKSwgLi4ucGF5bG9hZCB9KVxuXG4gICAgICAgIC8vIElndWFsIHF1ZSBhbnN3ZXJfcmVzZXQgKyByZWFzb25pbmdfc3RlcDogbGltcGlhciBlbCBib2R5IGFudGVzIGRlXG4gICAgICAgIC8vIGNvbW1pdGVhciBsYSBmaWxhIHBhcmEgbm8gcmVuZGVyaXphciAxIGZyYW1lIGVuIGVsIHNsb3QgZGVsIGN1ZXJwby5cbiAgICAgICAgaWYgKHBheWxvYWQudHlwZSA9PT0gJ25hcnJhdGlvbicpIHNldEJvZHkoJycpXG5cbiAgICAgICAgcmVhc29uaW5nU3RvcmUuYXBwbHlTdGVwKE1FU1NBR0VfSUQsIHBheWxvYWQpXG5cbiAgICAgICAgLy8gRWwgbWFuYWdlciBzYWNhIGVsIGxhYmVsIGRlIGFjdGl2aWRhZCBkZSBsYSB0b29sIHF1ZSBhcnJhbmNhIGEgY29ycmVyLlxuICAgICAgICBpZiAocGF5bG9hZC5zdGF0dXMgPT09ICdydW5uaW5nJyAmJiBwYXlsb2FkLnR5cGUgPT09ICd0b29sJyAmJiBwYXlsb2FkLnRvb2wpIHtcbiAgICAgICAgICBjb25zdCBsYWJlbCA9IHJlc29sdmVUb29sQWN0aW9uTGFiZWwocGF5bG9hZC50b29sLCB0LCAncHJlc2VudCcpXG4gICAgICAgICAgaWYgKGxhYmVsKSBzZXRBY3Rpdml0eSh7IHBoYXNlOiAnYWN0aW9uJywgbWVzc2FnZTogbGFiZWwgfSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9KVxuICB9LCBbY2xlYXJUaW1lcnMsIHNwZWVkLCB0XSlcblxuICB1c2VFZmZlY3QoKCkgPT4gY2xlYXJUaW1lcnMsIFtjbGVhclRpbWVyc10pXG5cbiAgY29uc3QgeyBzdGVwcyB9ID0gdXNlUmVhc29uaW5nVHJhY2UoaXNEb25lID8gJycgOiBNRVNTQUdFX0lEKVxuICBjb25zdCBzdHJlYW1OYXJyYXRpb25JblRpbWVsaW5lID0gc2hvdWxkU3RyZWFtTmFycmF0aW9uSW5UaW1lbGluZShzdGVwcywgYWN0aXZpdHksIGJvZHkpXG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBzdHlsZT17eyBwYWRkaW5nOiAyNCwgZGlzcGxheTogJ2ZsZXgnLCBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgZ2FwOiAyMCwgZm9udEZhbWlseTogJ1dvcmsgU2Fucywgc2Fucy1zZXJpZicgfX1cbiAgICA+XG4gICAgICA8ZGl2IHN0eWxlPXt7IGRpc3BsYXk6ICdmbGV4JywgZ2FwOiAxNiwgYWxpZ25JdGVtczogJ2NlbnRlcicsIGZsZXhXcmFwOiAnd3JhcCcgfX0+XG4gICAgICAgIDxidXR0b24gb25DbGljaz17cnVufSBzdHlsZT17eyBwYWRkaW5nOiAnNnB4IDE0cHgnIH19PlxuICAgICAgICAgIFJlcHJvZHVjaXIgdHVybm9cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxzcGFuIHN0eWxlPXt7IGRpc3BsYXk6ICdmbGV4JywgZ2FwOiA0LCBhbGlnbkl0ZW1zOiAnY2VudGVyJywgZm9udFNpemU6IDEzIH19PlxuICAgICAgICAgIFZlbG9jaWRhZDpcbiAgICAgICAgICB7U1BFRURTLm1hcChvcHRpb24gPT4gKFxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBrZXk9e29wdGlvbn1cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0U3BlZWQob3B0aW9uKX1cbiAgICAgICAgICAgICAgc3R5bGU9e3sgcGFkZGluZzogJzJweCA4cHgnLCBmb250V2VpZ2h0OiBzcGVlZCA9PT0gb3B0aW9uID8gNzAwIDogNDAwIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtvcHRpb259eFxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPGxhYmVsIGh0bWxGb3I9XCJkZXYtc2hvdy10aGlua2luZ1wiIHN0eWxlPXt7IGRpc3BsYXk6ICdmbGV4JywgZ2FwOiA2LCBhbGlnbkl0ZW1zOiAnY2VudGVyJywgZm9udFNpemU6IDEzIH19PlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgaWQ9XCJkZXYtc2hvdy10aGlua2luZ1wiXG4gICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgY2hlY2tlZD17c2hvd1RoaW5raW5nfVxuICAgICAgICAgICAgb25DaGFuZ2U9e2UgPT4gc2V0U2hvd1RoaW5raW5nKGUudGFyZ2V0LmNoZWNrZWQpfVxuICAgICAgICAgIC8+XG4gICAgICAgICAgTW9zdHJhciB0aGlua2luZyAod2luZG93LnJlYXNvbmluZ1RoaW5raW5nKVxuICAgICAgICA8L2xhYmVsPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxwIHN0eWxlPXt7IG1hcmdpbjogMCwgZm9udFNpemU6IDEyLCBjb2xvcjogJyM4MDgwODAnLCBtYXhXaWR0aDogNjQwIH19PlxuICAgICAgICBSZXBsYXkgZGUgdW4gdHVybm8gcmVhbCBkZSA5NHM6IDMwIHBhc29zLCAxOCB0b29scywgZG9zIGhhbmRvZmZzIGFuaWRhZG9zIHkgcsOhZmFnYXMgZGUgdG9vbHMgZW4gcGFyYWxlbG8uIEVsXG4gICAgICAgIGN1ZXJwbyBkZWwgbWVuc2FqZSBzZSBsaW1waWEgY29uIGNhZGEgbmFycmFjacOzbiwgaWd1YWwgcXVlIGVsIDxjb2RlPmFuc3dlcl9yZXNldDwvY29kZT4gZGVsIGJhY2tlbmQuXG4gICAgICA8L3A+XG5cbiAgICAgIDxkaXYgc3R5bGU9e3sgbWF4V2lkdGg6IDY0MCwgZGlzcGxheTogJ2ZsZXgnLCBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgZ2FwOiA4IH19PlxuICAgICAgICB7aXNEb25lID8gKFxuICAgICAgICAgIDxSZWFzb25pbmdCbG9jayBrZXk9e2BibG9jay0ke3J1bklkfWB9IG1lc3NhZ2VJZD17TUVTU0FHRV9JRH0gLz5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8UmVhc29uaW5nVGltZWxpbmVcbiAgICAgICAgICAgIG1lc3NhZ2VJZD17TUVTU0FHRV9JRH1cbiAgICAgICAgICAgIHNob3dUaGlua2luZz17c2hvd1RoaW5raW5nfVxuICAgICAgICAgICAgc3RyZWFtQWN0aXZpdHk9e2FjdGl2aXR5fVxuICAgICAgICAgICAgc3RyZWFtaW5nVGV4dD17Ym9keX1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgICB7IXN0cmVhbU5hcnJhdGlvbkluVGltZWxpbmUgJiYgISFib2R5ICYmIChcbiAgICAgICAgICA8U0NGaW5hbEFuc3dlckJvZHk+XG4gICAgICAgICAgICA8TWFpYVN0cmVhbWRvd24gdmFyaWFudD1cImNoYXRcIj57Ym9keX08L01haWFTdHJlYW1kb3duPlxuICAgICAgICAgIDwvU0NGaW5hbEFuc3dlckJvZHk+XG4gICAgICAgICl9XG4gICAgICAgIHthY3Rpdml0eSAmJiAoXG4gICAgICAgICAgPFNDVGltZWxpbmVJbmRpY2F0b3I+XG4gICAgICAgICAgICA8QWdlbnRBY3Rpdml0eUluZGljYXRvciBhY3Rpdml0eT17YWN0aXZpdHl9IGNvbXBhY3QgLz5cbiAgICAgICAgICA8L1NDVGltZWxpbmVJbmRpY2F0b3I+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBO0FBQ0EsU0FBU0EsV0FBVyxFQUFFQyxTQUFTLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxRQUFRLE9BQU87QUFFaEUsU0FBU0Msc0JBQXNCLFFBQVEsbUVBQW1FO0FBQzFHLFNBQVNDLGNBQWMsUUFBUSxtREFBbUQ7QUFDbEYsU0FBU0MsY0FBYyxRQUFRLG1EQUFtRDtBQUNsRixTQUFTQyxtQkFBbUIsRUFBRUMsaUJBQWlCLFFBQVEsMERBQTBEO0FBQ2pILFNBQVNDLGlCQUFpQixRQUFRLHNEQUFzRDtBQUN4RixTQUFTQywrQkFBK0IsUUFBUSwyREFBMkQ7QUFDM0csU0FBU0MsY0FBYyxRQUFRLDJDQUEyQztBQUMxRSxTQUFTQyxpQkFBaUIsUUFBUSw0QkFBNEI7QUFDOUQsU0FBU0MsSUFBSSxRQUFRLGVBQWU7QUFDcEMsU0FBU0Msc0JBQXNCLEVBQUVDLHdCQUF3QixRQUFRLGlDQUFpQztBQUdsRyxTQUFTQyxXQUFXLEVBQUVDLFlBQVksUUFBUSxzQkFBc0I7QUFBQSxTQUFBQyxHQUFBLElBQUFDLElBQUEsRUFBQUMsSUFBQSxJQUFBQyxLQUFBO0FBRWhFLElBQU1DLFVBQVUsR0FBRyxnQ0FBZ0M7QUFDbkQsSUFBTUMsTUFBTSxHQUFH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