@pstdio/ui 0.25.0 → 0.35.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.
- package/README.md +8 -1
- package/dist/EquationComponent-DDd5UoIP.js +65 -0
- package/dist/EquationComponent-DDd5UoIP.js.map +1 -0
- package/dist/MermaidComponent-DGDnQ6pb.js +90 -0
- package/dist/MermaidComponent-DGDnQ6pb.js.map +1 -0
- package/dist/browser-storage-C_ipoNwP.js +37 -0
- package/dist/browser-storage-C_ipoNwP.js.map +1 -0
- package/dist/chat-ui.d.ts +688 -2
- package/dist/chat-ui.js +3272 -2763
- package/dist/chat-ui.js.map +1 -1
- package/dist/data-table-stats-row-DNJG8tLZ.js +415 -0
- package/dist/data-table-stats-row-DNJG8tLZ.js.map +1 -0
- package/dist/data-table.d.ts +143 -2
- package/dist/data-table.js +1216 -1188
- package/dist/data-table.js.map +1 -1
- package/dist/diff-bubble-DZsarmSG.js +61 -0
- package/dist/diff-bubble-DZsarmSG.js.map +1 -0
- package/dist/diff-drawer-45rpk3aq.js +776 -0
- package/dist/diff-drawer-45rpk3aq.js.map +1 -0
- package/dist/diff-editor-CGpeyoCE.js +124 -0
- package/dist/diff-editor-CGpeyoCE.js.map +1 -0
- package/dist/diff-size-Dydn_Uw5.js +61 -0
- package/dist/diff-size-Dydn_Uw5.js.map +1 -0
- package/dist/diff-viewer-hGkaF_zW.js +558 -0
- package/dist/diff-viewer-hGkaF_zW.js.map +1 -0
- package/dist/diff.d.ts +128 -2
- package/dist/diff.js +163 -1300
- package/dist/diff.js.map +1 -1
- package/dist/empty-state-3mVV_pV-.js +38 -0
- package/dist/empty-state-3mVV_pV-.js.map +1 -0
- package/dist/file-change-badge-0QFNv82B.js +64 -0
- package/dist/file-change-badge-0QFNv82B.js.map +1 -0
- package/dist/index-BfFLdci8.d.ts +189 -0
- package/dist/index-Dd6e8lU_.d.ts +61 -0
- package/dist/index-DlmvvQ6x.d.ts +143 -0
- package/dist/index.d.ts +1508 -41
- package/dist/index.js +3167 -3173
- package/dist/index.js.map +1 -1
- package/dist/kanban-renderer.d.ts +337 -2
- package/dist/kanban-renderer.js +1413 -1084
- package/dist/kanban-renderer.js.map +1 -1
- package/dist/list-row-De9R2zKU.js +1008 -0
- package/dist/list-row-De9R2zKU.js.map +1 -0
- package/dist/mermaid-renderer-DImi0fDp.js +553 -0
- package/dist/mermaid-renderer-DImi0fDp.js.map +1 -0
- package/dist/mermaid.d.ts +12 -2
- package/dist/mermaid.js +2 -5
- package/dist/monaco-browser-CLRPSE4-.js +14 -0
- package/dist/monaco-browser-CLRPSE4-.js.map +1 -0
- package/dist/param-editor-IJzw1cA2.js +225 -0
- package/dist/param-editor-IJzw1cA2.js.map +1 -0
- package/dist/param-editor-field-DscIjv8s.js +2368 -0
- package/dist/param-editor-field-DscIjv8s.js.map +1 -0
- package/dist/param-editor.d.ts +407 -0
- package/dist/param-editor.js +3 -0
- package/dist/prism-pSHJejZx.js +646 -0
- package/dist/prism-pSHJejZx.js.map +1 -0
- package/dist/radio-CiFrDN6O.js +54 -0
- package/dist/radio-CiFrDN6O.js.map +1 -0
- package/dist/resource-badge-95WPVlZf.d.ts +76 -0
- package/dist/rich-text-DtQpHBlX.js +7018 -0
- package/dist/rich-text-DtQpHBlX.js.map +1 -0
- package/dist/rich-text.d.ts +3 -2
- package/dist/rich-text.js +2 -265
- package/dist/rolldown-runtime-Dy4uBu1J.js +11 -0
- package/dist/scroll-area-Cr1lNXAr.js +100 -0
- package/dist/scroll-area-Cr1lNXAr.js.map +1 -0
- package/dist/slider-hwHYe98I.js +423 -0
- package/dist/slider-hwHYe98I.js.map +1 -0
- package/dist/style.css +2 -1
- package/dist/terminal.d.ts +203 -2
- package/dist/terminal.js +324 -357
- package/dist/terminal.js.map +1 -1
- package/dist/theme-kSkOHzbV.js +2852 -0
- package/dist/theme-kSkOHzbV.js.map +1 -0
- package/dist/theme-preference-pzfuK5cH.js +101 -0
- package/dist/theme-preference-pzfuK5cH.js.map +1 -0
- package/dist/theme.d.ts +3 -2
- package/dist/theme.js +2 -15
- package/dist/tree-list-BUfDQz3v.js +1449 -0
- package/dist/tree-list-BUfDQz3v.js.map +1 -0
- package/dist/types-yjKBk07w.d.ts +161 -0
- package/dist/workspace-badge-9g78pXHS.js +245 -0
- package/dist/workspace-badge-9g78pXHS.js.map +1 -0
- package/dist/workspace-badge-CkJ_jTQw.d.ts +75 -0
- package/dist-monaco/assets/codicon-ngg6Pgfi.ttf +0 -0
- package/dist-monaco/assets/css.worker-DFdt6_zu.js +89 -0
- package/dist-monaco/assets/editor.worker-O-CH8JUO.js +26 -0
- package/dist-monaco/assets/html.worker-JUzsMP-j.js +502 -0
- package/dist-monaco/assets/json.worker-B4dEhy0e.js +58 -0
- package/dist-monaco/assets/ts.worker-CmEKzkmF.js +67734 -0
- package/dist-monaco/monaco.css +1 -0
- package/dist-monaco/monaco.js +1201 -0
- package/package.json +30 -12
- package/dist/EquationComponent-DeDYHvqY.js +0 -62
- package/dist/EquationComponent-DeDYHvqY.js.map +0 -1
- package/dist/MermaidComponent-BVdDqDRU.js +0 -60
- package/dist/MermaidComponent-BVdDqDRU.js.map +0 -1
- package/dist/browser-storage-DPtOQJx0.js +0 -127
- package/dist/browser-storage-DPtOQJx0.js.map +0 -1
- package/dist/components/activity/activity-avatar.d.ts +0 -9
- package/dist/components/activity/activity-comment.d.ts +0 -27
- package/dist/components/activity/activity-composer.d.ts +0 -18
- package/dist/components/activity/activity-event.d.ts +0 -12
- package/dist/components/activity/activity-root.d.ts +0 -15
- package/dist/components/activity/activity-timeline.d.ts +0 -6
- package/dist/components/activity/activity.types.d.ts +0 -5
- package/dist/components/activity/index.d.ts +0 -27
- package/dist/components/activity/resource-activity-feed.d.ts +0 -58
- package/dist/components/chat-ui/components/ai-conversation.d.ts +0 -603
- package/dist/components/chat-ui/components/ai-message.d.ts +0 -91
- package/dist/components/chat-ui/components/ai-response.d.ts +0 -5
- package/dist/components/chat-ui/components/approval-prompt.d.ts +0 -8
- package/dist/components/chat-ui/components/attachment-list.d.ts +0 -23
- package/dist/components/chat-ui/components/auto-scroll.d.ts +0 -37
- package/dist/components/chat-ui/components/chat-input-actions.d.ts +0 -13
- package/dist/components/chat-ui/components/chat-input-attachments.d.ts +0 -12
- package/dist/components/chat-ui/components/chat-input-question-prompt.d.ts +0 -36
- package/dist/components/chat-ui/components/chat-input.d.ts +0 -31
- package/dist/components/chat-ui/components/chat-message-animation.d.ts +0 -22
- package/dist/components/chat-ui/components/chat-message-list-items.d.ts +0 -17
- package/dist/components/chat-ui/components/chat-message-list.d.ts +0 -12
- package/dist/components/chat-ui/components/chat-panel-sticky-user-message.d.ts +0 -13
- package/dist/components/chat-ui/components/chat-panel.d.ts +0 -45
- package/dist/components/chat-ui/components/chat-skeleton.d.ts +0 -1
- package/dist/components/chat-ui/components/composer-constants.d.ts +0 -1
- package/dist/components/chat-ui/components/conversation-browse.d.ts +0 -22
- package/dist/components/chat-ui/components/message-action-panel.d.ts +0 -10
- package/dist/components/chat-ui/components/message-parts-renderer.d.ts +0 -13
- package/dist/components/chat-ui/components/message-types.d.ts +0 -116
- package/dist/components/chat-ui/components/model-swap-separator.d.ts +0 -5
- package/dist/components/chat-ui/components/queued-follow-up-list-state.d.ts +0 -4
- package/dist/components/chat-ui/components/queued-follow-up-list.d.ts +0 -11
- package/dist/components/chat-ui/components/send-button.d.ts +0 -7
- package/dist/components/chat-ui/components/timeline-title.d.ts +0 -6
- package/dist/components/chat-ui/components/timeline-tool-blocks.d.ts +0 -14
- package/dist/components/chat-ui/components/timeline.d.ts +0 -113
- package/dist/components/chat-ui/components/tool-invocation-timeline.d.ts +0 -8
- package/dist/components/chat-ui/components/working-indicator.d.ts +0 -9
- package/dist/components/chat-ui/components/workspace-hub.d.ts +0 -19
- package/dist/components/chat-ui/index.d.ts +0 -19
- package/dist/components/chat-ui/mocks/library/index.d.ts +0 -10
- package/dist/components/chat-ui/performance/chat-mount-metrics.d.ts +0 -37
- package/dist/components/chat-ui/performance/chat-panel.perf.d.ts +0 -18
- package/dist/components/chat-ui/performance/chat-performance-fixtures.d.ts +0 -28
- package/dist/components/chat-ui/performance/chat-performance-panel.d.ts +0 -23
- package/dist/components/chat-ui/performance/chat-performance-story-utils.d.ts +0 -30
- package/dist/components/chat-ui/tool-rendering/apply-patch-renderer.d.ts +0 -2
- package/dist/components/chat-ui/tool-rendering/build-timeline.d.ts +0 -13
- package/dist/components/chat-ui/tool-rendering/default-renderers.d.ts +0 -13
- package/dist/components/chat-ui/tool-rendering/edit-renderer.d.ts +0 -2
- package/dist/components/chat-ui/tool-rendering/index.d.ts +0 -3
- package/dist/components/chat-ui/tool-rendering/question-prompt.d.ts +0 -9
- package/dist/components/chat-ui/tool-rendering/question-renderer.d.ts +0 -10
- package/dist/components/chat-ui/tool-rendering/shared.d.ts +0 -53
- package/dist/components/chat-ui/tool-rendering/standard-renderers.d.ts +0 -7
- package/dist/components/chat-ui/tool-rendering/todowrite-renderer.d.ts +0 -10
- package/dist/components/chat-ui/tool-rendering/types.d.ts +0 -12
- package/dist/components/chat-ui/utils/diff.d.ts +0 -21
- package/dist/components/chat-ui/utils/editor-state.d.ts +0 -1
- package/dist/components/chat-ui/utils/get-icon.d.ts +0 -36
- package/dist/components/chat-ui/utils/tool-name.d.ts +0 -2
- package/dist/components/command-palette/index.d.ts +0 -4
- package/dist/components/command-palette/palette-filter.d.ts +0 -23
- package/dist/components/command-palette/palette-list.d.ts +0 -11
- package/dist/components/command-palette/palette-shortcut.d.ts +0 -12
- package/dist/components/command-palette/palette.d.ts +0 -48
- package/dist/components/data-table/build-columns.d.ts +0 -16
- package/dist/components/data-table/categorical-color-cell.d.ts +0 -8
- package/dist/components/data-table/color-cell-style.d.ts +0 -13
- package/dist/components/data-table/color-scale-cell.d.ts +0 -7
- package/dist/components/data-table/data-table-column-menu.d.ts +0 -17
- package/dist/components/data-table/data-table-header.d.ts +0 -12
- package/dist/components/data-table/data-table-row-display.d.ts +0 -11
- package/dist/components/data-table/data-table-skeleton.d.ts +0 -13
- package/dist/components/data-table/data-table-stat-chart.d.ts +0 -21
- package/dist/components/data-table/data-table-state.d.ts +0 -27
- package/dist/components/data-table/data-table-stats-row.d.ts +0 -11
- package/dist/components/data-table/data-table-stats.d.ts +0 -19
- package/dist/components/data-table/data-table-table-parts.d.ts +0 -22
- package/dist/components/data-table/data-table.d.ts +0 -2
- package/dist/components/data-table/data-table.story-descriptions.d.ts +0 -6
- package/dist/components/data-table/data-table.story-fixtures.d.ts +0 -6
- package/dist/components/data-table/edit-mode-data-table-body.d.ts +0 -30
- package/dist/components/data-table/edit-mode-data-table-cell.d.ts +0 -16
- package/dist/components/data-table/edit-mode-data-table-editors.d.ts +0 -19
- package/dist/components/data-table/edit-mode-data-table-header.d.ts +0 -24
- package/dist/components/data-table/edit-mode-data-table-selection.d.ts +0 -12
- package/dist/components/data-table/edit-mode-data-table.d.ts +0 -2
- package/dist/components/data-table/edit-mode-story.d.ts +0 -5
- package/dist/components/data-table/friendly-json-display.d.ts +0 -31
- package/dist/components/data-table/helpers.d.ts +0 -10
- package/dist/components/data-table/index.d.ts +0 -7
- package/dist/components/data-table/json-cell.d.ts +0 -6
- package/dist/components/data-table/pagination-footer.d.ts +0 -11
- package/dist/components/data-table/selection-toolbar.d.ts +0 -11
- package/dist/components/data-table/types.d.ts +0 -117
- package/dist/components/diff-viewer/build-changed-files-tree.d.ts +0 -4
- package/dist/components/diff-viewer/code-editor.d.ts +0 -43
- package/dist/components/diff-viewer/diff-bubble.d.ts +0 -14
- package/dist/components/diff-viewer/diff-card-body.d.ts +0 -60
- package/dist/components/diff-viewer/diff-card-content.d.ts +0 -23
- package/dist/components/diff-viewer/diff-card-load-state.d.ts +0 -9
- package/dist/components/diff-viewer/diff-card.d.ts +0 -46
- package/dist/components/diff-viewer/diff-drawer-empty-state.d.ts +0 -1
- package/dist/components/diff-viewer/diff-drawer-height.d.ts +0 -10
- package/dist/components/diff-viewer/diff-drawer-scroll.d.ts +0 -28
- package/dist/components/diff-viewer/diff-drawer.d.ts +0 -29
- package/dist/components/diff-viewer/diff-editor.d.ts +0 -20
- package/dist/components/diff-viewer/diff-size.d.ts +0 -16
- package/dist/components/diff-viewer/diff-view-adapter.d.ts +0 -27
- package/dist/components/diff-viewer/diff-viewer-options-menu.d.ts +0 -16
- package/dist/components/diff-viewer/diff-viewer.d.ts +0 -14
- package/dist/components/diff-viewer/diff-viewer.store.d.ts +0 -21
- package/dist/components/diff-viewer/file-change-badge.d.ts +0 -3
- package/dist/components/diff-viewer/file-list-panel.d.ts +0 -18
- package/dist/components/diff-viewer/index.d.ts +0 -9
- package/dist/components/diff-viewer/monaco-browser.d.ts +0 -1
- package/dist/components/diff-viewer/types.d.ts +0 -13
- package/dist/components/diff-viewer/use-selected-diff-scroll.d.ts +0 -23
- package/dist/components/file-browser/column-file-browser.d.ts +0 -20
- package/dist/components/internal/performance-panel.d.ts +0 -40
- package/dist/components/internal/style-guide.d.ts +0 -14
- package/dist/components/internal/token-editor-controls.d.ts +0 -8
- package/dist/components/internal/token-editor-data.d.ts +0 -40
- package/dist/components/internal/token-editor-state.d.ts +0 -22
- package/dist/components/kanban-renderer/collection-badge.d.ts +0 -7
- package/dist/components/kanban-renderer/display-menu.d.ts +0 -16
- package/dist/components/kanban-renderer/filter-menu.d.ts +0 -12
- package/dist/components/kanban-renderer/index.d.ts +0 -19
- package/dist/components/kanban-renderer/kanban-renderer-attribute-badge.d.ts +0 -7
- package/dist/components/kanban-renderer/kanban-renderer-badge-helpers.d.ts +0 -46
- package/dist/components/kanban-renderer/kanban-renderer-board-column-header.d.ts +0 -8
- package/dist/components/kanban-renderer/kanban-renderer-board-group-section.d.ts +0 -17
- package/dist/components/kanban-renderer/kanban-renderer-board-move.d.ts +0 -21
- package/dist/components/kanban-renderer/kanban-renderer-board.d.ts +0 -49
- package/dist/components/kanban-renderer/kanban-renderer-card.d.ts +0 -17
- package/dist/components/kanban-renderer/kanban-renderer-content.d.ts +0 -27
- package/dist/components/kanban-renderer/kanban-renderer-create-dialog.d.ts +0 -12
- package/dist/components/kanban-renderer/kanban-renderer-create-field.d.ts +0 -10
- package/dist/components/kanban-renderer/kanban-renderer-enum-helpers.d.ts +0 -10
- package/dist/components/kanban-renderer/kanban-renderer-grouping.d.ts +0 -23
- package/dist/components/kanban-renderer/kanban-renderer-helpers.d.ts +0 -58
- package/dist/components/kanban-renderer/kanban-renderer-list-items.d.ts +0 -25
- package/dist/components/kanban-renderer/kanban-renderer-list.d.ts +0 -43
- package/dist/components/kanban-renderer/kanban-renderer-story-fixtures.d.ts +0 -14
- package/dist/components/kanban-renderer/kanban-renderer-toolbar.d.ts +0 -15
- package/dist/components/kanban-renderer/kanban-renderer-view-bar.d.ts +0 -14
- package/dist/components/kanban-renderer/kanban-renderer-views.d.ts +0 -12
- package/dist/components/kanban-renderer/kanban-renderer.d.ts +0 -43
- package/dist/components/kanban-renderer/types.d.ts +0 -159
- package/dist/components/kanban-renderer/use-kanban-renderer-store.d.ts +0 -78
- package/dist/components/kanban-renderer/use-resolved-attributes.d.ts +0 -14
- package/dist/components/layout/header.d.ts +0 -7
- package/dist/components/layout/horizontal-menu-stack.d.ts +0 -6
- package/dist/components/layout/index.d.ts +0 -8
- package/dist/components/layout/item-section.d.ts +0 -11
- package/dist/components/layout/panel-header.constants.d.ts +0 -3
- package/dist/components/layout/resizable-split-layout.d.ts +0 -22
- package/dist/components/layout/resizable-split-layout.geometry.d.ts +0 -56
- package/dist/components/layout/resizable-split-layout.handle.d.ts +0 -25
- package/dist/components/layout/resizable-split-layout.panels.d.ts +0 -29
- package/dist/components/layout/resizable-split-layout.root-size.d.ts +0 -3
- package/dist/components/list-row/list-row-actions.d.ts +0 -11
- package/dist/components/list-row/list-row-chrome.d.ts +0 -11
- package/dist/components/list-row/list-row-content.d.ts +0 -17
- package/dist/components/list-row/list-row-menu.d.ts +0 -12
- package/dist/components/list-row/list-row-root-props.d.ts +0 -34
- package/dist/components/list-row/list-row.d.ts +0 -2
- package/dist/components/list-row/list-row.types.d.ts +0 -109
- package/dist/components/list-row/searchable-action-menu.d.ts +0 -6
- package/dist/components/mermaid-renderer/download-png.d.ts +0 -7
- package/dist/components/mermaid-renderer/index.d.ts +0 -2
- package/dist/components/mermaid-renderer/mermaid-error-state.d.ts +0 -6
- package/dist/components/mermaid-renderer/mermaid-fixtures.d.ts +0 -9
- package/dist/components/mermaid-renderer/mermaid-fullscreen.d.ts +0 -10
- package/dist/components/mermaid-renderer/mermaid-renderer.d.ts +0 -8
- package/dist/components/mermaid-renderer/mermaid-svg-view.d.ts +0 -12
- package/dist/components/mermaid-renderer/mermaid-toolbar.d.ts +0 -12
- package/dist/components/mermaid-renderer/mermaid-zoom.d.ts +0 -6
- package/dist/components/mermaid-renderer/svg-data-url.d.ts +0 -6
- package/dist/components/mermaid-renderer/use-mermaid-render.d.ts +0 -5
- package/dist/components/notification-center/index.d.ts +0 -2
- package/dist/components/notification-center/notification-center.d.ts +0 -2
- package/dist/components/notification-center/notification-center.types.d.ts +0 -37
- package/dist/components/overlays/attached-menu.d.ts +0 -6
- package/dist/components/overlays/attached-panel.d.ts +0 -9
- package/dist/components/overlays/attachment-chip.d.ts +0 -13
- package/dist/components/overlays/bubble-button.d.ts +0 -10
- package/dist/components/overlays/bubble-panel.d.ts +0 -18
- package/dist/components/overlays/delete-confirmation-modal.d.ts +0 -13
- package/dist/components/overlays/dialog-accept-shortcut.d.ts +0 -12
- package/dist/components/overlays/index.d.ts +0 -17
- package/dist/components/overlays/repo-picker-dialog.d.ts +0 -25
- package/dist/components/overlays/resource-context-menu.d.ts +0 -35
- package/dist/components/overlays/search-modal-content.d.ts +0 -20
- package/dist/components/overlays/searchable-menu-input.d.ts +0 -9
- package/dist/components/overlays/searchable-menu.d.ts +0 -65
- package/dist/components/param-editor/index.d.ts +0 -31
- package/dist/components/param-editor/inputs/action-input.d.ts +0 -14
- package/dist/components/param-editor/inputs/anchor-grid-input.d.ts +0 -12
- package/dist/components/param-editor/inputs/anchor-grid.d.ts +0 -4
- package/dist/components/param-editor/inputs/boolean-input.d.ts +0 -13
- package/dist/components/param-editor/inputs/color-input.d.ts +0 -14
- package/dist/components/param-editor/inputs/date-input.d.ts +0 -16
- package/dist/components/param-editor/inputs/file-upload-input.d.ts +0 -15
- package/dist/components/param-editor/inputs/file-upload-value.d.ts +0 -7
- package/dist/components/param-editor/inputs/horizontal-text-input.d.ts +0 -13
- package/dist/components/param-editor/inputs/markdown-input.d.ts +0 -13
- package/dist/components/param-editor/inputs/number-input.d.ts +0 -18
- package/dist/components/param-editor/inputs/numeric-value.d.ts +0 -6
- package/dist/components/param-editor/inputs/range-input.d.ts +0 -18
- package/dist/components/param-editor/inputs/range-value.d.ts +0 -5
- package/dist/components/param-editor/inputs/resource-input-chips.d.ts +0 -15
- package/dist/components/param-editor/inputs/resource-input.d.ts +0 -20
- package/dist/components/param-editor/inputs/segmented-input.d.ts +0 -15
- package/dist/components/param-editor/inputs/selection-input.d.ts +0 -27
- package/dist/components/param-editor/inputs/selection-menu.d.ts +0 -39
- package/dist/components/param-editor/inputs/slider-marks.d.ts +0 -5
- package/dist/components/param-editor/inputs/text-input.d.ts +0 -14
- package/dist/components/param-editor/inputs/vector-input.d.ts +0 -17
- package/dist/components/param-editor/inputs/vector-value.d.ts +0 -7
- package/dist/components/param-editor/param-editor-advanced-field.d.ts +0 -14
- package/dist/components/param-editor/param-editor-control-fixtures.d.ts +0 -24
- package/dist/components/param-editor/param-editor-control-item.d.ts +0 -15
- package/dist/components/param-editor/param-editor-control-list.d.ts +0 -5
- package/dist/components/param-editor/param-editor-field-label.d.ts +0 -1
- package/dist/components/param-editor/param-editor-field.d.ts +0 -13
- package/dist/components/param-editor/param-editor-horizontal.d.ts +0 -11
- package/dist/components/param-editor/param-editor-inline-group.d.ts +0 -5
- package/dist/components/param-editor/param-editor-label.d.ts +0 -7
- package/dist/components/param-editor/param-editor-presentation.d.ts +0 -3
- package/dist/components/param-editor/param-editor-read-only-field.d.ts +0 -9
- package/dist/components/param-editor/param-editor-read-only-value.d.ts +0 -8
- package/dist/components/param-editor/param-editor-row.d.ts +0 -17
- package/dist/components/param-editor/param-editor-section.d.ts +0 -17
- package/dist/components/param-editor/param-editor.d.ts +0 -12
- package/dist/components/param-editor/param-editor.types.d.ts +0 -31
- package/dist/components/param-editor/resolve-param-value.d.ts +0 -2
- package/dist/components/primitives/alert.d.ts +0 -9
- package/dist/components/primitives/breadcrumb.d.ts +0 -20
- package/dist/components/primitives/checkbox.d.ts +0 -8
- package/dist/components/primitives/chip.d.ts +0 -4
- package/dist/components/primitives/content-placeholder.d.ts +0 -6
- package/dist/components/primitives/empty-state.d.ts +0 -12
- package/dist/components/primitives/error-boundary.d.ts +0 -26
- package/dist/components/primitives/glyph-icon.d.ts +0 -16
- package/dist/components/primitives/icon-color-picker.d.ts +0 -15
- package/dist/components/primitives/icon-options.d.ts +0 -301
- package/dist/components/primitives/index.d.ts +0 -39
- package/dist/components/primitives/info-card.d.ts +0 -12
- package/dist/components/primitives/integration-card.d.ts +0 -12
- package/dist/components/primitives/number-input.d.ts +0 -6
- package/dist/components/primitives/radio.d.ts +0 -8
- package/dist/components/primitives/resource-badge.d.ts +0 -64
- package/dist/components/primitives/scroll-area.d.ts +0 -17
- package/dist/components/primitives/segmented-control.d.ts +0 -20
- package/dist/components/primitives/session-indicator.d.ts +0 -15
- package/dist/components/primitives/simple-card.d.ts +0 -5
- package/dist/components/primitives/slider.d.ts +0 -5
- package/dist/components/primitives/switch.d.ts +0 -15
- package/dist/components/primitives/tag-swatch.d.ts +0 -10
- package/dist/components/primitives/toaster.d.ts +0 -3
- package/dist/components/primitives/tooltip.d.ts +0 -11
- package/dist/components/primitives/workspace-badge.d.ts +0 -23
- package/dist/components/rich-text/collaborative-markdown-editor/awareness-cursors.d.ts +0 -5
- package/dist/components/rich-text/collaborative-markdown-editor/collaborative-markdown-editor.d.ts +0 -9
- package/dist/components/rich-text/index.d.ts +0 -17
- package/dist/components/rich-text/lazy-markdown-editor.d.ts +0 -2
- package/dist/components/rich-text/markdown-editor/markdown-editor.d.ts +0 -17
- package/dist/components/rich-text/markdown-editor/markdown-table.story-fixture.d.ts +0 -3
- package/dist/components/rich-text/markdown-editor/plugins/MarkdownSectionNavigationPlugin.d.ts +0 -8
- package/dist/components/rich-text/markdown-editor/plugins/MarkdownSlashCommandPlugin.d.ts +0 -1
- package/dist/components/rich-text/markdown-editor/plugins/ReferenceLinkPlugin/ReferenceLinkNode.d.ts +0 -21
- package/dist/components/rich-text/markdown-editor/plugins/ReferenceLinkPlugin/ReferenceLinkTransformer.d.ts +0 -2
- package/dist/components/rich-text/markdown-editor/plugins/ReferenceLinkPlugin/index.d.ts +0 -2
- package/dist/components/rich-text/markdown-editor/plugins/markdown-history-plugin.d.ts +0 -1
- package/dist/components/rich-text/markdown-editor/plugins/markdown-section-navigation.d.ts +0 -20
- package/dist/components/rich-text/prompt-input/commands.d.ts +0 -2
- package/dist/components/rich-text/prompt-input/events.d.ts +0 -2
- package/dist/components/rich-text/prompt-input/plugins/CommentPlugin/CommentPlugin.d.ts +0 -1
- package/dist/components/rich-text/prompt-input/plugins/CommentPlugin/hooks/useCommentCommands.d.ts +0 -3
- package/dist/components/rich-text/prompt-input/plugins/CommentPlugin/hooks/useCommentSchema.d.ts +0 -1
- package/dist/components/rich-text/prompt-input/plugins/CommentPlugin/nodes/CommentNode/CommentNode.d.ts +0 -16
- package/dist/components/rich-text/prompt-input/plugins/ImperativeAPIPlugin.d.ts +0 -7
- package/dist/components/rich-text/prompt-input/plugins/KeyboardShortcutPlugin.d.ts +0 -4
- package/dist/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/ReferenceMenuOption.d.ts +0 -12
- package/dist/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/ReferenceMenuPlugin.d.ts +0 -11
- package/dist/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/components/ReferenceMenu/ReferenceMenu.d.ts +0 -9
- package/dist/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/components/ReferenceMenu/ReferenceMenuItem.d.ts +0 -12
- package/dist/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/constants.d.ts +0 -2
- package/dist/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/hooks/useContextLookup.d.ts +0 -14
- package/dist/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/utils/checkForTriggers.d.ts +0 -9
- package/dist/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/utils/getSortedMenuOptions.d.ts +0 -2
- package/dist/components/rich-text/prompt-input/plugins/ReferencePlugin/ReferencePlugin.d.ts +0 -7
- package/dist/components/rich-text/prompt-input/plugins/ReferencePlugin/nodes/ReferenceNode/ReferenceNode.d.ts +0 -25
- package/dist/components/rich-text/prompt-input/plugins/keyboard-shortcuts.d.ts +0 -9
- package/dist/components/rich-text/prompt-input/prompt-input.d.ts +0 -25
- package/dist/components/rich-text/prompt-input/theme/prompt-input-theme.d.ts +0 -3
- package/dist/components/rich-text/prompt-input/utils.d.ts +0 -22
- package/dist/components/rich-text/rich-message/plugins/ReferenceLinkPlugin/ReferenceLinkNode.d.ts +0 -21
- package/dist/components/rich-text/rich-message/plugins/ReferenceLinkPlugin/ReferenceLinkTransformer.d.ts +0 -2
- package/dist/components/rich-text/rich-message/plugins/ReferenceLinkPlugin/index.d.ts +0 -2
- package/dist/components/rich-text/rich-message/rich-message.d.ts +0 -10
- package/dist/components/rich-text/shared/components/content-editable.d.ts +0 -9
- package/dist/components/rich-text/shared/components/default-rich-text-components.d.ts +0 -3
- package/dist/components/rich-text/shared/editor-config.d.ts +0 -5
- package/dist/components/rich-text/shared/lexical-code.d.ts +0 -2
- package/dist/components/rich-text/shared/markdown-ast.d.ts +0 -7
- package/dist/components/rich-text/shared/markdown-codec.d.ts +0 -3
- package/dist/components/rich-text/shared/markdown-export.d.ts +0 -2
- package/dist/components/rich-text/shared/markdown-import.d.ts +0 -2
- package/dist/components/rich-text/shared/markdown-inline.d.ts +0 -5
- package/dist/components/rich-text/shared/markdown-source-document.d.ts +0 -7
- package/dist/components/rich-text/shared/markdown-source-links.d.ts +0 -11
- package/dist/components/rich-text/shared/markdown-source-map.d.ts +0 -10
- package/dist/components/rich-text/shared/markdown-table.d.ts +0 -41
- package/dist/components/rich-text/shared/markdown-url-context.d.ts +0 -9
- package/dist/components/rich-text/shared/markdown-url.d.ts +0 -3
- package/dist/components/rich-text/shared/nodes/DataTableNode.d.ts +0 -24
- package/dist/components/rich-text/shared/nodes/MarkdownImageNode.d.ts +0 -35
- package/dist/components/rich-text/shared/nodes/MarkdownLinkNode.d.ts +0 -18
- package/dist/components/rich-text/shared/nodes/RawHtmlNode.d.ts +0 -31
- package/dist/components/rich-text/shared/plugins/CodePlugin/CodeBlockActionsPlugin.d.ts +0 -4
- package/dist/components/rich-text/shared/plugins/CodePlugin/CodeBlockPlugin.d.ts +0 -3
- package/dist/components/rich-text/shared/plugins/CodePlugin/CodeHighlightingPlugin.d.ts +0 -1
- package/dist/components/rich-text/shared/plugins/EquationPlugin/EquationComponent.d.ts +0 -6
- package/dist/components/rich-text/shared/plugins/EquationPlugin/EquationNode.d.ts +0 -26
- package/dist/components/rich-text/shared/plugins/EquationPlugin/EquationPlugin.d.ts +0 -4
- package/dist/components/rich-text/shared/plugins/EquationPlugin/KatexRenderer.d.ts +0 -4
- package/dist/components/rich-text/shared/plugins/FloatingTextFormatToolbarPlugin/FloatingTextFormatToolbarPlugin.d.ts +0 -4
- package/dist/components/rich-text/shared/plugins/FloatingTextFormatToolbarPlugin/floating-toolbar-buttons.d.ts +0 -18
- package/dist/components/rich-text/shared/plugins/FloatingTextFormatToolbarPlugin/index.d.ts +0 -1
- package/dist/components/rich-text/shared/plugins/FloatingTextFormatToolbarPlugin/resolve-block-type.d.ts +0 -17
- package/dist/components/rich-text/shared/plugins/FloatingTextFormatToolbarPlugin/should-show-floating-toolbar.d.ts +0 -11
- package/dist/components/rich-text/shared/plugins/HorizontalRulePlugin/HorizontalRuleNode.d.ts +0 -13
- package/dist/components/rich-text/shared/plugins/HorizontalRulePlugin/horizontalRule.d.ts +0 -2
- package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/LinkEditorPlugin.d.ts +0 -4
- package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/LinkPlugin.d.ts +0 -1
- package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/commands.d.ts +0 -2
- package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/index.d.ts +0 -3
- package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/link-editor-content.d.ts +0 -18
- package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/utils/getSelectedNode.d.ts +0 -2
- package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/utils/link-edit-state.d.ts +0 -1
- package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/utils/selection-link-url.d.ts +0 -2
- package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/utils/setFloatingElemPos.d.ts +0 -1
- package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/utils/url.d.ts +0 -2
- package/dist/components/rich-text/shared/plugins/MermaidPlugin/MermaidComponent.d.ts +0 -6
- package/dist/components/rich-text/shared/plugins/MermaidPlugin/MermaidNode.d.ts +0 -23
- package/dist/components/rich-text/shared/plugins/StateUpdatePlugin.d.ts +0 -6
- package/dist/components/rich-text/shared/plugins/ToggleEditablePlugin.d.ts +0 -3
- package/dist/components/rich-text/shared/plugins/TreeViewPlugin/TreeViewPlugin.d.ts +0 -1
- package/dist/components/rich-text/shared/prism-global.d.ts +0 -2
- package/dist/components/rich-text/shared/transformers/markdown-transformers-test-utils.d.ts +0 -3
- package/dist/components/rich-text/shared/transformers/markdown-transformers.d.ts +0 -16
- package/dist/components/rich-text/shared/types/rich-text-components.d.ts +0 -15
- package/dist/components/rich-text/theme/rich-text-theme.d.ts +0 -3
- package/dist/components/rich-text/types.d.ts +0 -8
- package/dist/components/rich-text/utils/inferResourceType.d.ts +0 -1
- package/dist/components/rich-text/utils/markdown.d.ts +0 -5
- package/dist/components/rich-text/utils/mediaType.d.ts +0 -1
- package/dist/components/sidenav/sidenav-footer.d.ts +0 -6
- package/dist/components/sidenav/sidenav-header.d.ts +0 -6
- package/dist/components/sidenav/sidenav.d.ts +0 -2
- package/dist/components/sidenav/sidenav.store.d.ts +0 -49
- package/dist/components/sidenav/sidenav.types.d.ts +0 -31
- package/dist/components/tab-strip/tab-visibility-filter.d.ts +0 -22
- package/dist/components/tab-strip/tab-visibility.store.d.ts +0 -41
- package/dist/components/tab-strip/window-tabs.d.ts +0 -15
- package/dist/components/tab-strip/window-title-bar.d.ts +0 -6
- package/dist/components/tag-editor/index.d.ts +0 -8
- package/dist/components/tag-editor/tag-editor-heading.d.ts +0 -11
- package/dist/components/tag-editor/tag-editor-row.d.ts +0 -20
- package/dist/components/tag-editor/tag-editor-save-bar.d.ts +0 -13
- package/dist/components/tag-editor/tag-editor.d.ts +0 -2
- package/dist/components/tag-editor/tag-editor.types.d.ts +0 -57
- package/dist/components/tag-editor/tag-settings-panel.d.ts +0 -30
- package/dist/components/terminal/bind-session.d.ts +0 -33
- package/dist/components/terminal/index.d.ts +0 -6
- package/dist/components/terminal/scripted-bridge.d.ts +0 -35
- package/dist/components/terminal/terminal-contract.d.ts +0 -22
- package/dist/components/terminal/terminal-theme.d.ts +0 -12
- package/dist/components/terminal/terminal.d.ts +0 -56
- package/dist/components/terminal/types.d.ts +0 -35
- package/dist/components/terminal/use-terminal-session.d.ts +0 -21
- package/dist/components/tree-list/tree-list-background.d.ts +0 -8
- package/dist/components/tree-list/tree-list-drag-provider.d.ts +0 -13
- package/dist/components/tree-list/tree-list-drag.d.ts +0 -7
- package/dist/components/tree-list/tree-list-inline-creation-story.d.ts +0 -3
- package/dist/components/tree-list/tree-list-inline-input.d.ts +0 -9
- package/dist/components/tree-list/tree-list-model.d.ts +0 -58
- package/dist/components/tree-list/tree-list-move-surface.d.ts +0 -7
- package/dist/components/tree-list/tree-list-node-row.d.ts +0 -21
- package/dist/components/tree-list/tree-list-order-filter.d.ts +0 -2
- package/dist/components/tree-list/tree-list-order.store.d.ts +0 -45
- package/dist/components/tree-list/tree-list-reorder.d.ts +0 -24
- package/dist/components/tree-list/tree-list-section-header.d.ts +0 -14
- package/dist/components/tree-list/tree-list-sortable.d.ts +0 -24
- package/dist/components/tree-list/tree-list-visibility-filter.d.ts +0 -24
- package/dist/components/tree-list/tree-list-visibility.store.d.ts +0 -45
- package/dist/components/tree-list/tree-list.d.ts +0 -41
- package/dist/components/tree-list/tree-list.types.d.ts +0 -63
- package/dist/components/tree-list/use-tree-list-keyboard-navigation.d.ts +0 -15
- package/dist/diff-bubble-DvUPRnfB.js +0 -183
- package/dist/diff-bubble-DvUPRnfB.js.map +0 -1
- package/dist/edit-mode-data-table-B8UpWb7i.js +0 -846
- package/dist/edit-mode-data-table-B8UpWb7i.js.map +0 -1
- package/dist/empty-state-Bo4HVrgr.js +0 -34
- package/dist/empty-state-Bo4HVrgr.js.map +0 -1
- package/dist/foundations/gallery/gallery-frame.d.ts +0 -21
- package/dist/foundations/gallery/sections/badges-section.d.ts +0 -1
- package/dist/foundations/gallery/sections/buttons-section.d.ts +0 -1
- package/dist/foundations/gallery/sections/composite-chat-section.d.ts +0 -1
- package/dist/foundations/gallery/sections/composites-section.d.ts +0 -1
- package/dist/foundations/gallery/sections/feedback-section.d.ts +0 -1
- package/dist/foundations/gallery/sections/input-authoring-card.d.ts +0 -1
- package/dist/foundations/gallery/sections/inputs-section.d.ts +0 -1
- package/dist/foundations/gallery/sections/layout-section.d.ts +0 -1
- package/dist/foundations/gallery/sections/navigation-identity-section.d.ts +0 -1
- package/dist/foundations/gallery/sections/overlays-section.d.ts +0 -1
- package/dist/foundations/gallery/sections/panels-section.d.ts +0 -1
- package/dist/foundations/gallery/sections/param-editor-composite-card.d.ts +0 -1
- package/dist/foundations/gallery/sections/settings-composite-cards.d.ts +0 -1
- package/dist/kanban-renderer-toolbar-DzY6THJY.js +0 -1374
- package/dist/kanban-renderer-toolbar-DzY6THJY.js.map +0 -1
- package/dist/lazy-markdown-editor-ClZPZuaU.js +0 -235
- package/dist/lazy-markdown-editor-ClZPZuaU.js.map +0 -1
- package/dist/list-row-BDoV_iMV.js +0 -815
- package/dist/list-row-BDoV_iMV.js.map +0 -1
- package/dist/markdown-editor-CAVqJ9yR.js +0 -1019
- package/dist/markdown-editor-CAVqJ9yR.js.map +0 -1
- package/dist/markdown-gNucAjnF.js +0 -1643
- package/dist/markdown-gNucAjnF.js.map +0 -1
- package/dist/mermaid-renderer-CVnuKs-A.js +0 -425
- package/dist/mermaid-renderer-CVnuKs-A.js.map +0 -1
- package/dist/mermaid.js.map +0 -1
- package/dist/monaco-browser-l82HnffN.js +0 -22
- package/dist/monaco-browser-l82HnffN.js.map +0 -1
- package/dist/param-editor-CTx3mDxQ.js +0 -161
- package/dist/param-editor-CTx3mDxQ.js.map +0 -1
- package/dist/param-editor-field-DteDEyeU.js +0 -2810
- package/dist/param-editor-field-DteDEyeU.js.map +0 -1
- package/dist/prompt-input-DNpRL5tI.js +0 -564
- package/dist/prompt-input-DNpRL5tI.js.map +0 -1
- package/dist/radio-cLMEBBZk.js +0 -76
- package/dist/radio-cLMEBBZk.js.map +0 -1
- package/dist/rich-message-CuPiKxKX.js +0 -78
- package/dist/rich-message-CuPiKxKX.js.map +0 -1
- package/dist/rich-text.js.map +0 -1
- package/dist/test-utils/local-storage.d.ts +0 -1
- package/dist/theme/custom/index.d.ts +0 -2
- package/dist/theme/custom/vscode-theme.d.ts +0 -32
- package/dist/theme/global.d.ts +0 -62
- package/dist/theme/index.d.ts +0 -3
- package/dist/theme/primitives/colors.d.ts +0 -1081
- package/dist/theme/primitives/fonts.d.ts +0 -84
- package/dist/theme/primitives/sizes.d.ts +0 -207
- package/dist/theme/recipes/activity-comment.d.ts +0 -36
- package/dist/theme/recipes/alert.d.ts +0 -1
- package/dist/theme/recipes/badge.d.ts +0 -58
- package/dist/theme/recipes/button.d.ts +0 -188
- package/dist/theme/recipes/color-picker.d.ts +0 -18
- package/dist/theme/recipes/dialog.d.ts +0 -1
- package/dist/theme/recipes/divider.d.ts +0 -1
- package/dist/theme/recipes/drawer.d.ts +0 -1
- package/dist/theme/recipes/editable.d.ts +0 -46
- package/dist/theme/recipes/form.d.ts +0 -1
- package/dist/theme/recipes/input.d.ts +0 -94
- package/dist/theme/recipes/kbd.d.ts +0 -41
- package/dist/theme/recipes/menu.d.ts +0 -1
- package/dist/theme/recipes/number-input.d.ts +0 -98
- package/dist/theme/recipes/popover.d.ts +0 -16
- package/dist/theme/recipes/progress-circle.d.ts +0 -28
- package/dist/theme/recipes/resizable-split-layout.d.ts +0 -106
- package/dist/theme/recipes/segmented-control.d.ts +0 -22
- package/dist/theme/recipes/skeleton.d.ts +0 -1
- package/dist/theme/recipes/switch.d.ts +0 -18
- package/dist/theme/recipes/tabs.d.ts +0 -80
- package/dist/theme/recipes/textarea.d.ts +0 -62
- package/dist/theme/recipes/timeline.d.ts +0 -74
- package/dist/theme/recipes/tooltip.d.ts +0 -1
- package/dist/theme/recipes/window-title-bar.d.ts +0 -19
- package/dist/theme/shadowless-default-config.d.ts +0 -2
- package/dist/theme/theme.d.ts +0 -2
- package/dist/theme/tokens/borders.d.ts +0 -17
- package/dist/theme/tokens/colors-background.d.ts +0 -260
- package/dist/theme/tokens/colors-visualization.d.ts +0 -162
- package/dist/theme/tokens/colors.d.ts +0 -878
- package/dist/theme/tokens/layer-styles.d.ts +0 -1
- package/dist/theme/tokens/text.d.ts +0 -1
- package/dist/theme-Dc7hVvMC.js +0 -3990
- package/dist/theme-Dc7hVvMC.js.map +0 -1
- package/dist/theme-preference-Bpobguh4.js +0 -114
- package/dist/theme-preference-Bpobguh4.js.map +0 -1
- package/dist/theme.js.map +0 -1
- package/dist/tree-list-CZvcg3_6.js +0 -1348
- package/dist/tree-list-CZvcg3_6.js.map +0 -1
- package/dist/utils/apply-file-icon-theme-preference.d.ts +0 -35
- package/dist/utils/apply-theme-preference.d.ts +0 -22
- package/dist/utils/browser-storage.d.ts +0 -7
- package/dist/utils/file-icon-theme-preference.d.ts +0 -15
- package/dist/utils/get-file-type-icon.d.ts +0 -2
- package/dist/utils/prism.d.ts +0 -1
- package/dist/utils/resolve-file-icon-element.d.ts +0 -8
- package/dist/utils/theme-preference.d.ts +0 -20
- package/dist/workspace-badge-BR_GgsAG.js +0 -175
- package/dist/workspace-badge-BR_GgsAG.js.map +0 -1
package/dist/diff.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diff.js","sources":["../src/components/diff-viewer/code-editor.tsx","../../pstdio-file-types/src/index.ts","../src/components/diff-viewer/diff-size.ts","../src/components/diff-viewer/diff-card-body.tsx","../src/components/diff-viewer/diff-card-load-state.tsx","../src/components/diff-viewer/diff-card-content.tsx","../src/components/diff-viewer/diff-card.tsx","../src/components/diff-viewer/diff-drawer-empty-state.tsx","../src/components/diff-viewer/diff-drawer-height.ts","../src/components/diff-viewer/diff-drawer-scroll.ts","../src/components/diff-viewer/use-selected-diff-scroll.ts","../src/components/diff-viewer/diff-drawer.tsx","../src/components/diff-viewer/build-changed-files-tree.ts","../src/components/diff-viewer/diff-viewer.store.ts","../src/components/diff-viewer/diff-viewer-options-menu.tsx","../src/components/diff-viewer/file-change-badge.tsx","../src/components/diff-viewer/file-list-panel.tsx","../src/components/diff-viewer/diff-viewer.tsx"],"sourcesContent":["import { DiffEditor, Editor } from \"@monaco-editor/react\";\nimport type * as Monaco from \"monaco-editor\";\nimport { lazy, Suspense, useEffect, useRef } from \"react\";\nimport type { MonacoThemeData } from \"../../theme\";\nimport { useThemePreference } from \"../../utils/theme-preference\";\n\nexport const createCodeEditorPreloader = (initialize: () => Promise<unknown>) => {\n let initialization: Promise<unknown> | undefined;\n\n return () => {\n initialization ??= initialize();\n return initialization;\n };\n};\n\nexport const preloadCodeEditor = createCodeEditorPreloader(() =>\n import(\"./monaco-browser\").then((module) => module.initializeMonaco()),\n);\n\nconst MonacoEditor = lazy(async () => {\n await preloadCodeEditor();\n return { default: Editor };\n});\n\nconst MonacoDiffEditor = lazy(async () => {\n await preloadCodeEditor();\n return { default: DiffEditor };\n});\n\nexport const customTheme = {\n base: \"vs-dark\" as const,\n inherit: true,\n rules: [],\n colors: {\n \"editor.background\": \"#0a0d15\",\n \"editor.foreground\": \"#f5f5f5\",\n \"editor.lineHighlightBackground\": \"#22252C\",\n \"editorCursor.foreground\": \"#A7A7A7\",\n \"editorWhitespace.foreground\": \"#3B3B3B\",\n \"editorIndentGuide.background\": \"#404040\",\n \"editorIndentGuide.activeBackground\": \"#707070\",\n },\n} satisfies MonacoThemeData;\n\nconst isMonacoTheme = (value: unknown): value is MonacoThemeData =>\n typeof value === \"object\" && value !== null && \"base\" in value && \"colors\" in value;\n\ntype MonacoApi = {\n editor: {\n defineTheme: (name: string, data: MonacoThemeData) => void;\n setTheme: (name: string) => void;\n };\n};\n\nconst EDITOR_THEME_NAME = \"ps-theme\";\n\nconst useEditorTheme = () => {\n const { themePreference, themePreferences } = useThemePreference();\n const preference = themePreferences.find((theme) => theme.id === themePreference);\n return isMonacoTheme(preference?.monacoTheme) ? preference.monacoTheme : customTheme;\n};\n\nconst useApplyEditorTheme = (editorTheme: MonacoThemeData) => {\n const monacoRef = useRef<MonacoApi | null>(null);\n\n useEffect(() => {\n const monaco = monacoRef.current;\n if (!monaco) return;\n\n monaco.editor.defineTheme(EDITOR_THEME_NAME, editorTheme);\n monaco.editor.setTheme(EDITOR_THEME_NAME);\n }, [editorTheme]);\n\n return (monaco: MonacoApi) => {\n monacoRef.current = monaco;\n monaco.editor.defineTheme(EDITOR_THEME_NAME, editorTheme);\n monaco.editor.setTheme(EDITOR_THEME_NAME);\n };\n};\n\nexport const configureCodeEditor = (\n editor: {\n addCommand: (key: number, handler: () => Promise<void>) => unknown;\n getAction: (id: string) => Pick<Monaco.editor.IEditorAction, \"run\"> | null;\n },\n monaco: { KeyMod: Pick<typeof Monaco.KeyMod, \"CtrlCmd\">; KeyCode: Pick<typeof Monaco.KeyCode, \"KeyS\"> },\n) => {\n editor.addCommand(monaco.KeyMod.CtrlCmd | monaco.KeyCode.KeyS, async () => {\n await editor.getAction(\"editor.action.formatDocument\")?.run();\n });\n};\n\ninterface CodeEditorProps {\n language: string;\n defaultCode?: string;\n code?: string;\n isEditable: boolean;\n showLineNumbers?: boolean;\n onChange?: (code: string) => void;\n disableScroll?: boolean;\n}\n\nexport const CodeEditor = (props: CodeEditorProps) => {\n const { defaultCode, code, showLineNumbers, isEditable, language = \"javascript\", onChange, disableScroll } = props;\n const editorTheme = useEditorTheme();\n const applyEditorTheme = useApplyEditorTheme(editorTheme);\n\n const options = {\n tabSize: 2,\n minimap: {\n enabled: false,\n },\n fontSize: 12,\n readOnly: !isEditable,\n lineNumbers: showLineNumbers ? \"on\" : \"off\",\n ...(disableScroll\n ? {\n scrollbar: {\n vertical: \"hidden\" as const,\n horizontal: \"hidden\" as const,\n useShadows: false,\n alwaysConsumeMouseWheel: false,\n },\n scrollBeyondLastLine: false,\n mouseWheelScrollSensitivity: 0,\n overviewRulerLanes: 0,\n }\n : {}),\n } as const;\n\n return (\n <Suspense fallback={null}>\n <MonacoEditor\n width=\"100%\"\n height=\"100%\"\n language={language}\n defaultValue={defaultCode}\n value={code}\n theme={EDITOR_THEME_NAME}\n options={options}\n onChange={(value) => {\n onChange?.(value || \"\");\n }}\n beforeMount={(monaco) => {\n applyEditorTheme(monaco);\n }}\n onMount={(editor, monaco) => {\n applyEditorTheme(monaco);\n configureCodeEditor(editor, monaco);\n }}\n />\n </Suspense>\n );\n};\n\ninterface CodeDiffEditorProps {\n language: string;\n original: string;\n modified: string;\n showLineNumbers?: boolean;\n disableScroll?: boolean;\n}\n\nexport const CodeDiffEditor = (props: CodeDiffEditorProps) => {\n const { original, modified, showLineNumbers, language = \"javascript\", disableScroll } = props;\n const editorTheme = useEditorTheme();\n const applyEditorTheme = useApplyEditorTheme(editorTheme);\n\n const options = {\n tabSize: 2,\n minimap: {\n enabled: false,\n },\n fontSize: 12,\n readOnly: true,\n originalEditable: false,\n renderSideBySide: true,\n useInlineViewWhenSpaceIsTooSmall: true,\n lineNumbers: showLineNumbers ? \"on\" : \"off\",\n ...(disableScroll\n ? {\n scrollbar: {\n vertical: \"hidden\" as const,\n horizontal: \"hidden\" as const,\n useShadows: false,\n alwaysConsumeMouseWheel: false,\n },\n scrollBeyondLastLine: false,\n mouseWheelScrollSensitivity: 0,\n overviewRulerLanes: 0,\n }\n : {}),\n } as const;\n\n return (\n <Suspense fallback={null}>\n <MonacoDiffEditor\n width=\"100%\"\n height=\"100%\"\n language={language}\n original={original}\n modified={modified}\n theme={EDITOR_THEME_NAME}\n options={options}\n beforeMount={(monaco) => {\n applyEditorTheme(monaco);\n }}\n onMount={(_, monaco) => {\n applyEditorTheme(monaco);\n }}\n />\n </Suspense>\n );\n};\n","export const imagePreviewMimeTypes = {\n avif: \"image/avif\",\n bmp: \"image/bmp\",\n gif: \"image/gif\",\n heic: \"image/heic\",\n ico: \"image/x-icon\",\n jpeg: \"image/jpeg\",\n jpg: \"image/jpeg\",\n png: \"image/png\",\n tif: \"image/tiff\",\n tiff: \"image/tiff\",\n webp: \"image/webp\",\n} as const;\n\nexport const imagePreviewExtensions = Object.keys(imagePreviewMimeTypes);\n\nexport const getFileExtension = (filePath: string) => {\n const fileName = filePath.split(/[\\\\/]/).pop() ?? filePath;\n const extension = fileName.split(\".\").pop();\n return extension ? extension.toLowerCase() : \"\";\n};\n\nexport const getImagePreviewMimeType = (filePath: string) => {\n const extension = getFileExtension(filePath);\n return imagePreviewMimeTypes[extension as keyof typeof imagePreviewMimeTypes] ?? null;\n};\n\nexport const isImagePreviewPath = (filePath: string) => getImagePreviewMimeType(filePath) !== null;\n","import { getFileExtension, imagePreviewExtensions, isImagePreviewPath } from \"pstdio-file-types\";\n\nexport const LARGE_DIFF_LINE_THRESHOLD = 1000;\n\nconst generatedDiffFileNames = new Set([\"bun.lock\", \"bun.lockb\", \"package-lock.json\", \"pnpm-lock.yaml\", \"yarn.lock\"]);\n\n// Extensions whose byte content cannot be meaningfully shown as a unified diff.\n// SVG is intentionally excluded — it is text-based XML and benefits from a line diff.\nconst binaryDiffExtensions = new Set([\n ...imagePreviewExtensions,\n \"pdf\",\n \"zip\",\n \"tar\",\n \"gz\",\n \"tgz\",\n \"rar\",\n \"7z\",\n \"exe\",\n \"dll\",\n \"so\",\n \"dylib\",\n \"wasm\",\n \"class\",\n \"jar\",\n \"mp3\",\n \"mp4\",\n \"mov\",\n \"ogg\",\n \"wav\",\n \"webm\",\n \"flac\",\n \"ttf\",\n \"otf\",\n \"woff\",\n \"woff2\",\n \"eot\",\n]);\n\nexport const getDiffLineCount = (input: {\n additions?: number;\n deletions?: number;\n oldContent?: string;\n newContent?: string;\n}) => {\n return (input.additions ?? 0) + (input.deletions ?? 0);\n};\n\nexport const isLargeDiffContent = (input: {\n additions?: number;\n deletions?: number;\n oldContent?: string;\n newContent?: string;\n}) => {\n return getDiffLineCount(input) > LARGE_DIFF_LINE_THRESHOLD;\n};\n\nexport const isGeneratedDiffPath = (path: string) => {\n const fileName = path.split(/[\\\\/]/).pop() ?? path;\n\n return generatedDiffFileNames.has(fileName) || fileName.endsWith(\".min.js\") || fileName.endsWith(\".generated.ts\");\n};\n\nexport const isBinaryDiffPath = (path: string) => {\n const ext = getFileExtension(path);\n return ext.length > 0 && binaryDiffExtensions.has(ext);\n};\n\nexport const isImageDiffPath = isImagePreviewPath;\n","import { Box, Button, Grid, Image, Text } from \"@chakra-ui/react\";\nimport { EmptyState } from \"@/components/primitives/empty-state\";\nimport type { Diff } from \"./diff-card\";\nimport { DiffEditor } from \"./diff-editor\";\nimport { getDiffLineCount, isBinaryDiffPath, isImageDiffPath } from \"./diff-size\";\nimport { type BuiltDiffViewData, buildDiffViewData } from \"./diff-view-adapter\";\nimport type { DiffViewMode } from \"./types\";\n\ninterface DiffCardBodyProps {\n diff: Diff;\n filePath: string;\n oldContent: string;\n newContent: string;\n isLargeDiff: boolean;\n hasOptedIntoLargeDiff: boolean;\n onShowFullDiff?: () => void;\n diffViewMode?: DiffViewMode;\n}\n\ninterface DiffCardBodyModelInput extends DiffCardBodyProps {\n buildViewData?: typeof buildDiffViewData;\n}\n\nexport const createDiffCardBodyModel = (input: DiffCardBodyModelInput) => {\n const {\n diff,\n filePath,\n oldContent,\n newContent,\n isLargeDiff,\n hasOptedIntoLargeDiff,\n onShowFullDiff,\n diffViewMode = \"unified\",\n buildViewData,\n } = input;\n\n if (isBinaryDiffPath(filePath)) {\n const oldImageSrc = getImagePreviewSource(oldContent);\n const newImageSrc = getImagePreviewSource(newContent);\n if (isImageDiffPath(filePath) && (oldImageSrc || newImageSrc)) {\n return {\n kind: \"image\" as const,\n filePath,\n oldSrc: oldImageSrc,\n newSrc: newImageSrc,\n };\n }\n\n return {\n kind: \"binary\" as const,\n filePath,\n isImage: isImageDiffPath(filePath),\n };\n }\n\n if (isLargeDiff && !hasOptedIntoLargeDiff) {\n return {\n kind: \"placeholder\" as const,\n filePath,\n renderedLineCount: getDiffLineCount(diff),\n onShowFullDiff,\n };\n }\n\n const diffViewData = (buildViewData ?? buildDiffViewData)({\n original: oldContent,\n modified: newContent,\n oldPath: diff.oldPath,\n newPath: diff.newPath,\n });\n return {\n kind: \"editor\" as const,\n diffViewData,\n sideBySide: diffViewMode === \"split\",\n };\n};\n\nconst getImagePreviewSource = (content: string) => (content.startsWith(\"data:image/\") ? content : \"\");\n\nexport const DiffCardBody = (props: DiffCardBodyProps) => {\n const {\n diff,\n filePath,\n oldContent,\n newContent,\n isLargeDiff,\n hasOptedIntoLargeDiff,\n onShowFullDiff,\n diffViewMode = \"unified\",\n } = props;\n const model = createDiffCardBodyModel({\n diff,\n filePath,\n oldContent,\n newContent,\n isLargeDiff,\n hasOptedIntoLargeDiff,\n onShowFullDiff,\n diffViewMode,\n });\n\n return (\n <Box bg=\"bg\" borderBottomRadius=\"xs\" overflow=\"hidden\">\n {model.kind === \"editor\" ? (\n <DiffEditor\n original={oldContent}\n modified={newContent}\n oldPath={diff.oldPath}\n newPath={diff.newPath}\n sideBySide={model.sideBySide}\n data={model.diffViewData}\n />\n ) : model.kind === \"image\" ? (\n <ImageDiffPreview oldSrc={model.oldSrc} newSrc={model.newSrc} />\n ) : model.kind === \"binary\" ? (\n <BinaryDiffPlaceholder isImage={model.isImage} />\n ) : (\n <LargeDiffPlaceholder\n filePath={model.filePath}\n renderedLineCount={model.renderedLineCount}\n onShowFullDiff={model.onShowFullDiff}\n />\n )}\n </Box>\n );\n};\n\ninterface ImageDiffPreviewProps {\n oldSrc: string;\n newSrc: string;\n}\n\nconst ImageDiffPreview = (props: ImageDiffPreviewProps) => {\n const { oldSrc, newSrc } = props;\n\n return (\n <Grid\n templateColumns={{ base: \"1fr\", md: \"1fr 1fr\" }}\n gap=\"sm\"\n p=\"sm\"\n borderTop=\"1px solid\"\n borderColor=\"border.subtle\"\n bg=\"bg\"\n >\n <ImageDiffPanel label=\"Old\" src={oldSrc} fallback=\"No old image\" />\n <ImageDiffPanel label=\"New\" src={newSrc} fallback=\"No new image\" />\n </Grid>\n );\n};\n\ninterface ImageDiffPanelProps {\n label: string;\n src: string;\n fallback: string;\n}\n\nconst ImageDiffPanel = (props: ImageDiffPanelProps) => {\n const { label, src, fallback } = props;\n\n return (\n <Box border=\"1px solid\" borderColor=\"border.subtle\" borderRadius=\"xs\" overflow=\"hidden\" bg=\"bg.subtle\" minW=\"0\">\n <Text\n px=\"xs\"\n py=\"2xs\"\n textStyle=\"label/S/medium\"\n color=\"fg.muted\"\n borderBottom=\"1px solid\"\n borderColor=\"border.subtle\"\n >\n {label}\n </Text>\n <Box display=\"grid\" placeItems=\"center\" minH=\"180px\" p=\"sm\">\n {src ? (\n <Image src={src} alt={`${label} image diff`} maxH=\"260px\" maxW=\"100%\" objectFit=\"contain\" />\n ) : (\n <Text color=\"fg.muted\" textStyle=\"body/S/regular\">\n {fallback}\n </Text>\n )}\n </Box>\n </Box>\n );\n};\n\ninterface LargeDiffPlaceholderProps {\n filePath: string;\n renderedLineCount: number;\n onShowFullDiff?: () => void;\n}\n\nconst LargeDiffPlaceholder = (props: LargeDiffPlaceholderProps) => {\n const { filePath, onShowFullDiff } = props;\n\n return (\n <Box p=\"md\" borderTop=\"1px solid\" borderColor=\"border.subtle\" bg=\"bg\">\n <EmptyState title=\"Large diffs are hidden by default\" paddingY=\"sm\">\n {onShowFullDiff ? (\n <Button size=\"xs\" variant=\"outline\" aria-label={`Render full diff for ${filePath}`} onClick={onShowFullDiff}>\n Show full diff\n </Button>\n ) : null}\n </EmptyState>\n </Box>\n );\n};\n\ninterface BinaryDiffPlaceholderProps {\n isImage: boolean;\n}\n\nconst BinaryDiffPlaceholder = (props: BinaryDiffPlaceholderProps) => {\n const { isImage } = props;\n const title = isImage ? \"Image diffs are not shown\" : \"Binary diffs are not shown\";\n\n return (\n <Box p=\"md\" borderTop=\"1px solid\" borderColor=\"border.subtle\" bg=\"bg\">\n <EmptyState title={title} paddingY=\"sm\" />\n </Box>\n );\n};\n\nexport type TestDiffViewData = BuiltDiffViewData;\n","import { Box, Button, Skeleton, Stack } from \"@chakra-ui/react\";\nimport { EmptyState } from \"@/components/primitives/empty-state\";\n\ninterface DeferredDiffLoadProps {\n title: string;\n actionLabel?: string;\n isLoadingDiff: boolean;\n onAction?: () => void;\n}\n\nexport const DeferredDiffLoad = (props: DeferredDiffLoadProps) => {\n const { title, actionLabel, isLoadingDiff, onAction } = props;\n\n return (\n <Box bg=\"bg\" p=\"md\" borderTop=\"1px solid\" borderColor=\"border.subtle\">\n <EmptyState title={title} paddingY=\"sm\">\n {actionLabel ? (\n <Button size=\"xs\" variant=\"outline\" loading={isLoadingDiff} onClick={onAction}>\n {actionLabel}\n </Button>\n ) : null}\n </EmptyState>\n </Box>\n );\n};\n\nconst loadingDiffContentRows = [\"first\", \"second\", \"third\"] as const;\n\nexport const LoadingDiffContent = () => (\n <Stack\n h=\"280px\"\n bg=\"bg\"\n borderTop=\"1px solid\"\n borderColor=\"border.subtle\"\n p=\"xs\"\n gap=\"2xs\"\n role=\"status\"\n aria-busy=\"true\"\n aria-label=\"Loading diff\"\n >\n {loadingDiffContentRows.map((row) => (\n <Skeleton key={row} h=\"20px\" w=\"full\" borderRadius=\"xs\" />\n ))}\n </Stack>\n);\n","import type { Diff } from \"./diff-card\";\nimport { DiffCardBody } from \"./diff-card-body\";\nimport { DeferredDiffLoad, LoadingDiffContent } from \"./diff-card-load-state\";\nimport type { DiffViewMode } from \"./types\";\n\ninterface DiffCardContentProps {\n diff: Diff;\n filePath: string;\n oldContent: string;\n newContent: string;\n isExpanded: boolean;\n isLargeDiff: boolean;\n isGeneratedDiff: boolean;\n isBinaryDiff: boolean;\n hasDiffContent: boolean;\n canLoadDiff: boolean;\n shouldAutoLoadDiff: boolean;\n loadError: boolean;\n isLoadingDiff: boolean;\n onLoadDiff: () => Promise<void>;\n hasOptedIntoLargeDiff: boolean;\n onShowFullDiff?: () => void;\n diffViewMode?: DiffViewMode;\n}\n\ninterface DeferredDiffLoadStateInput {\n isLargeDiff: boolean;\n isGeneratedDiff: boolean;\n loadError: boolean;\n canLoadDiff: boolean;\n onLoadDiff: () => Promise<void>;\n onShowFullDiff?: () => void;\n}\n\nconst buildDeferredDiffLoadState = (input: DeferredDiffLoadStateInput) => {\n const { isLargeDiff, isGeneratedDiff, loadError, canLoadDiff, onLoadDiff, onShowFullDiff } = input;\n let title = \"Diff content is not loaded yet.\";\n let actionLabel = canLoadDiff ? \"Load diff\" : undefined;\n let onAction: (() => void) | undefined = canLoadDiff ? () => void onLoadDiff() : undefined;\n\n if (isLargeDiff) {\n title = \"Large diffs are hidden by default\";\n actionLabel = canLoadDiff ? \"Show full diff\" : undefined;\n onAction = () => {\n onShowFullDiff?.();\n void onLoadDiff();\n };\n }\n\n if (isGeneratedDiff) {\n title = \"Generated diffs are hidden by default\";\n actionLabel = canLoadDiff ? \"Load diff\" : undefined;\n onAction = canLoadDiff ? () => void onLoadDiff() : undefined;\n }\n\n if (loadError) {\n title = \"Diff failed to load. Try again.\";\n actionLabel = canLoadDiff ? \"Load diff\" : undefined;\n onAction = canLoadDiff ? () => void onLoadDiff() : undefined;\n }\n\n return { title, actionLabel, onAction };\n};\n\nexport const DiffCardContent = (props: DiffCardContentProps) => {\n const {\n diff,\n filePath,\n oldContent,\n newContent,\n isExpanded,\n isLargeDiff,\n isGeneratedDiff,\n isBinaryDiff,\n hasDiffContent,\n canLoadDiff,\n shouldAutoLoadDiff,\n loadError,\n isLoadingDiff,\n onLoadDiff,\n hasOptedIntoLargeDiff,\n onShowFullDiff,\n diffViewMode = \"unified\",\n } = props;\n\n if (!isExpanded) return null;\n\n if (isBinaryDiff) {\n return (\n <DiffCardBody\n diff={diff}\n filePath={filePath}\n oldContent={oldContent}\n newContent={newContent}\n isLargeDiff={false}\n hasOptedIntoLargeDiff={hasOptedIntoLargeDiff}\n onShowFullDiff={onShowFullDiff}\n diffViewMode={diffViewMode}\n />\n );\n }\n\n if (!hasDiffContent && !shouldAutoLoadDiff) {\n const { title, actionLabel, onAction } = buildDeferredDiffLoadState({\n isLargeDiff,\n isGeneratedDiff,\n loadError,\n canLoadDiff,\n onLoadDiff,\n onShowFullDiff,\n });\n\n return (\n <DeferredDiffLoad title={title} actionLabel={actionLabel} isLoadingDiff={isLoadingDiff} onAction={onAction} />\n );\n }\n\n if (shouldAutoLoadDiff) {\n return <LoadingDiffContent />;\n }\n\n return (\n <DiffCardBody\n diff={diff}\n filePath={filePath}\n oldContent={oldContent}\n newContent={newContent}\n isLargeDiff={isLargeDiff}\n hasOptedIntoLargeDiff={hasOptedIntoLargeDiff}\n onShowFullDiff={onShowFullDiff}\n diffViewMode={diffViewMode}\n />\n );\n};\n","import { Box, Grid, IconButton, Text } from \"@chakra-ui/react\";\nimport { Check, ChevronDown, ChevronRight, Copy } from \"lucide-react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { Tooltip } from \"@/components/primitives/tooltip\";\nimport { DiffBubble } from \"./diff-bubble\";\nimport { DiffCardContent } from \"./diff-card-content\";\nimport { isBinaryDiffPath, isGeneratedDiffPath, isImageDiffPath, isLargeDiffContent } from \"./diff-size\";\nimport type { DiffViewMode } from \"./types\";\n\nexport interface Diff {\n change: \"added\" | \"deleted\" | \"modified\" | \"renamed\" | \"copied\" | \"permissionChange\";\n oldPath?: string;\n newPath?: string;\n oldContent?: string;\n newContent?: string;\n additions?: number;\n deletions?: number;\n}\n\ninterface DiffCardProps {\n diff: Diff;\n isSelected?: boolean;\n isExpanded?: boolean;\n onToggleExpanded?: () => void;\n onSelect?: () => void;\n onLoadDiff?: (path: string) => Promise<void>;\n hasOptedIntoLargeDiff?: boolean;\n onShowFullDiff?: () => void;\n diffViewMode?: DiffViewMode;\n}\n\ninterface DiffCardHeaderProps {\n diff: Diff;\n isExpanded?: boolean;\n onToggleExpanded?: () => void;\n}\n\nexport const shouldAutoLoadDiffContent = (input: {\n isExpanded: boolean;\n isSelected: boolean;\n hasDiffContent: boolean;\n isLargeDiff: boolean;\n isGeneratedDiff: boolean;\n isBinaryDiff: boolean;\n requestedPath: string | null;\n filePath: string;\n}) => {\n const {\n isExpanded,\n isSelected,\n hasDiffContent,\n isLargeDiff,\n isGeneratedDiff,\n isBinaryDiff,\n requestedPath,\n filePath,\n } = input;\n\n return (\n isExpanded &&\n isSelected &&\n !hasDiffContent &&\n !isLargeDiff &&\n !isGeneratedDiff &&\n !isBinaryDiff &&\n requestedPath !== filePath\n );\n};\n\nexport const resolveRequestedDiffPath = (input: {\n requestedPath: string | null;\n filePath: string;\n hasDiffContent: boolean;\n}) => {\n const { requestedPath, filePath, hasDiffContent } = input;\n\n if (requestedPath === filePath && hasDiffContent) {\n return null;\n }\n\n return requestedPath;\n};\n\nexport const shouldShowDiffStats = (filePath: string) => !isImageDiffPath(filePath);\n\nexport const resolveDiffFilePath = (diff: Diff) => diff.newPath || diff.oldPath || \"unknown\";\n\nconst useDiffContentLoader = (input: {\n filePath: string;\n isExpanded: boolean;\n isSelected: boolean;\n hasDiffContent: boolean;\n isLargeDiff: boolean;\n isGeneratedDiff: boolean;\n isBinaryDiff: boolean;\n onLoadDiff?: (path: string) => Promise<void>;\n}) => {\n const { filePath, isExpanded, isSelected, hasDiffContent, isLargeDiff, isGeneratedDiff, isBinaryDiff, onLoadDiff } =\n input;\n const [isLoadingDiff, setLoadingDiff] = useState(false);\n const [requestedPath, setRequestedPath] = useState<string | null>(null);\n const [loadError, setLoadError] = useState(false);\n\n const loadDiff = async () => {\n if (!onLoadDiff || isLoadingDiff) return;\n\n setRequestedPath(filePath);\n setLoadError(false);\n setLoadingDiff(true);\n try {\n await onLoadDiff(filePath);\n } catch {\n setRequestedPath(null);\n setLoadError(true);\n } finally {\n setLoadingDiff(false);\n }\n };\n\n const shouldAutoLoadDiff = shouldAutoLoadDiffContent({\n isExpanded,\n isSelected,\n hasDiffContent,\n isLargeDiff,\n isGeneratedDiff,\n isBinaryDiff,\n requestedPath,\n filePath,\n });\n\n useEffect(() => {\n setRequestedPath((current) => resolveRequestedDiffPath({ requestedPath: current, filePath, hasDiffContent }));\n }, [filePath, hasDiffContent]);\n\n useEffect(() => {\n if (!onLoadDiff || !shouldAutoLoadDiff || loadError) {\n return;\n }\n\n void loadDiff();\n });\n\n return {\n isLoadingDiff,\n loadError,\n shouldAutoLoadDiff: Boolean(onLoadDiff) && shouldAutoLoadDiff && !loadError,\n loadDiff,\n };\n};\n\nexport const DiffCard = (props: DiffCardProps) => {\n const {\n diff,\n isSelected = false,\n isExpanded = true,\n onToggleExpanded,\n onSelect,\n onLoadDiff,\n hasOptedIntoLargeDiff = false,\n onShowFullDiff,\n diffViewMode = \"unified\",\n } = props;\n\n const filePath = resolveDiffFilePath(diff);\n const oldContent = diff.oldContent || \"\";\n const newContent = diff.newContent || \"\";\n const isLargeDiff = isLargeDiffContent(diff);\n const isGeneratedDiff = isGeneratedDiffPath(filePath);\n const isBinaryDiff = isBinaryDiffPath(filePath);\n const blocksDiffContentLoad = isBinaryDiff && !isImageDiffPath(filePath);\n const hasDiffContent = diff.oldContent !== undefined || diff.newContent !== undefined;\n const { isLoadingDiff, loadError, shouldAutoLoadDiff, loadDiff } = useDiffContentLoader({\n filePath,\n isExpanded,\n isSelected,\n hasDiffContent,\n isLargeDiff: isLargeDiff && !hasOptedIntoLargeDiff,\n isGeneratedDiff,\n isBinaryDiff: blocksDiffContentLoad,\n onLoadDiff,\n });\n\n return (\n <Box\n data-testid=\"diff-card\"\n border=\"1px solid\"\n borderColor={isSelected ? \"border.accent\" : \"border.subtle\"}\n borderRadius=\"xs\"\n overflow=\"visible\"\n bg=\"bg\"\n width=\"100%\"\n maxW=\"100%\"\n transition=\"border-color 0.14s ease\"\n _hover={{ borderColor: \"border.accent\" }}\n onClick={onSelect}\n >\n <DiffCardHeader diff={diff} isExpanded={isExpanded} onToggleExpanded={onToggleExpanded} />\n\n <DiffCardContent\n diff={diff}\n filePath={filePath}\n oldContent={oldContent}\n newContent={newContent}\n isExpanded={isExpanded}\n isLargeDiff={isLargeDiff}\n isGeneratedDiff={isGeneratedDiff}\n isBinaryDiff={blocksDiffContentLoad}\n hasDiffContent={hasDiffContent}\n canLoadDiff={Boolean(onLoadDiff)}\n shouldAutoLoadDiff={shouldAutoLoadDiff}\n loadError={loadError}\n isLoadingDiff={isLoadingDiff}\n onLoadDiff={loadDiff}\n hasOptedIntoLargeDiff={hasOptedIntoLargeDiff}\n onShowFullDiff={onShowFullDiff}\n diffViewMode={diffViewMode}\n />\n </Box>\n );\n};\n\nexport const DiffCardHeader = (props: DiffCardHeaderProps) => {\n const { diff, isExpanded = true, onToggleExpanded } = props;\n const filePath = resolveDiffFilePath(diff);\n const additions = diff.additions ?? 0;\n const deletions = diff.deletions ?? 0;\n const showStats = shouldShowDiffStats(filePath);\n const [isCopied, setIsCopied] = useState(false);\n const copyResetTimeoutRef = useRef<number | null>(null);\n\n useEffect(() => {\n return () => {\n if (copyResetTimeoutRef.current !== null) {\n window.clearTimeout(copyResetTimeoutRef.current);\n }\n };\n }, []);\n\n const copyFilePath = async () => {\n try {\n await navigator.clipboard.writeText(filePath);\n setIsCopied(true);\n if (copyResetTimeoutRef.current !== null) {\n window.clearTimeout(copyResetTimeoutRef.current);\n }\n copyResetTimeoutRef.current = window.setTimeout(() => setIsCopied(false), 1200);\n } catch {\n setIsCopied(false);\n }\n };\n\n return (\n <Grid\n data-testid=\"diff-card-header\"\n templateColumns=\"auto minmax(0, 1fr) auto\"\n px=\"xs\"\n py=\"2xs\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n borderBottom={isExpanded ? \"1px solid\" : \"none\"}\n borderColor=\"border.subtle\"\n borderTopRadius=\"xs\"\n borderBottomRadius={isExpanded ? \"0\" : \"xs\"}\n position=\"sticky\"\n top=\"0\"\n zIndex=\"1\"\n bg=\"bg\"\n cursor=\"pointer\"\n transition=\"background 0.14s ease\"\n _hover={{ bg: \"bg\" }}\n onClick={() => onToggleExpanded?.()}\n gap=\"sm\"\n >\n <IconButton\n aria-label={isExpanded ? \"Collapse\" : \"Expand\"}\n variant=\"ghost\"\n size=\"2xs\"\n onClick={(event) => {\n event.stopPropagation();\n onToggleExpanded?.();\n }}\n flexShrink={0}\n >\n {isExpanded ? <ChevronDown size={16} /> : <ChevronRight size={16} />}\n </IconButton>\n\n <Grid templateColumns=\"minmax(0, max-content) auto\" alignItems=\"center\" justifyContent=\"start\" gap=\"2xs\" minW={0}>\n <Box minW={0} overflow=\"hidden\" textOverflow=\"ellipsis\" whiteSpace=\"nowrap\" title={filePath}>\n {diff.change === \"renamed\" ? (\n <Text as=\"span\" textStyle=\"sm\">\n <Text as=\"span\" color=\"fg.muted\" textDecoration=\"line-through\" mr=\"xs\">\n {diff.oldPath}\n </Text>\n <Box as=\"span\" display=\"inline-flex\" alignItems=\"center\" verticalAlign=\"middle\" mr=\"xs\">\n <ChevronRight size={12} />\n </Box>\n {diff.newPath}\n </Text>\n ) : diff.change === \"deleted\" ? (\n <Text as=\"span\" color=\"fg.muted\" textDecoration=\"line-through\" textStyle=\"sm\">\n {filePath}\n </Text>\n ) : (\n <Text as=\"span\" textStyle=\"sm\">\n {filePath}\n </Text>\n )}\n </Box>\n\n <Box\n opacity={isCopied ? \"1\" : \"0\"}\n pointerEvents={isCopied ? \"auto\" : \"none\"}\n transition=\"opacity 120ms ease\"\n css={{\n \"[data-testid='diff-card-header']:hover &, [data-testid='diff-card-header']:focus-within &\": {\n opacity: 1,\n pointerEvents: \"auto\",\n },\n }}\n >\n <Tooltip content={isCopied ? \"Copied\" : \"Copy file path\"}>\n <IconButton\n aria-label={isCopied ? \"Copied\" : \"Copy file path\"}\n variant=\"ghost\"\n size=\"2xs\"\n onClick={(event) => {\n event.stopPropagation();\n void copyFilePath();\n }}\n flexShrink={0}\n >\n {isCopied ? <Check size={12} /> : <Copy size={12} />}\n </IconButton>\n </Tooltip>\n </Box>\n </Grid>\n\n {showStats ? (\n <Box flexShrink={0}>\n <DiffBubble variant=\"ghost\" additions={additions} deletions={deletions} />\n </Box>\n ) : null}\n </Grid>\n );\n};\n","import { Stack } from \"@chakra-ui/react\";\nimport { EmptyState } from \"@/components/primitives/empty-state\";\nimport { ScrollArea } from \"@/components/primitives/scroll-area\";\n\nexport const DiffDrawerEmptyState = () => (\n <Stack h=\"full\" minH=\"0\" gap=\"0\" bg=\"bg\">\n <ScrollArea flex=\"1\" minH=\"0\" contentProps={{ p: \"xs\", spaceY: \"xs\" }}>\n <EmptyState title=\"No changes detected\" description=\"Make some changes to see the diff here.\" paddingY=\"sm\" />\n </ScrollArea>\n </Stack>\n);\n","import type { Diff } from \"./diff-card\";\nimport { isBinaryDiffPath, isImageDiffPath, isLargeDiffContent } from \"./diff-size\";\nimport { buildDiffViewData } from \"./diff-view-adapter\";\nimport type { DiffViewMode } from \"./types\";\n\nconst CARD_HEADER_HEIGHT = 34;\nconst CARD_BODY_LINE_HEIGHT = 18;\nconst HUNK_ROW_HEIGHT = 28;\nconst COLLAPSED_CARD_HEIGHT = 34;\nconst DEFERRED_BODY_HEIGHT = 88;\nconst IMAGE_BODY_HEIGHT = 338;\nconst ITEM_GAP_HEIGHT = 8;\n\ninterface EstimateDiffCardHeightInput {\n diff: Diff;\n isCollapsed: boolean;\n hasOptedIntoLargeDiff?: boolean;\n diffViewMode?: DiffViewMode;\n}\n\nconst deferredCardHeight = () => CARD_HEADER_HEIGHT + DEFERRED_BODY_HEIGHT + ITEM_GAP_HEIGHT;\n\n// Mirrors the branches DiffCardContent renders, so the virtualizer's estimate matches the DOM\n// before measureElement gets a chance to refine it.\nexport const estimateDiffCardHeight = (input: EstimateDiffCardHeightInput) => {\n const { diff, isCollapsed, hasOptedIntoLargeDiff = false, diffViewMode = \"unified\" } = input;\n\n if (isCollapsed) return COLLAPSED_CARD_HEIGHT + ITEM_GAP_HEIGHT;\n\n const hasDiffContent = diff.oldContent !== undefined || diff.newContent !== undefined;\n const filePath = diff.newPath ?? diff.oldPath ?? \"\";\n if (isImageDiffPath(filePath) && (diff.oldContent || diff.newContent)) {\n return CARD_HEADER_HEIGHT + IMAGE_BODY_HEIGHT + ITEM_GAP_HEIGHT;\n }\n if (isBinaryDiffPath(filePath)) return deferredCardHeight();\n if (!hasDiffContent) return deferredCardHeight();\n if (isLargeDiffContent(diff) && !hasOptedIntoLargeDiff) return deferredCardHeight();\n\n const { unifiedContentRows, splitContentRows, hunkRows } = buildDiffViewData({\n original: diff.oldContent ?? \"\",\n modified: diff.newContent ?? \"\",\n oldPath: diff.oldPath,\n newPath: diff.newPath,\n });\n const contentRows = diffViewMode === \"split\" ? splitContentRows : unifiedContentRows;\n if (contentRows === 0 && hunkRows === 0) return deferredCardHeight();\n\n const bodyHeight = contentRows * CARD_BODY_LINE_HEIGHT + hunkRows * HUNK_ROW_HEIGHT;\n return CARD_HEADER_HEIGHT + bodyHeight + ITEM_GAP_HEIGHT;\n};\n","import type { Diff } from \"./diff-card\";\n\ninterface SelectedExpansionCommand {\n action: string;\n id: number;\n path?: string;\n direction?: \"up\" | \"down\";\n}\n\ninterface ResolveSelectedScrollStateInput {\n diffs: Diff[];\n selectedDiffPath: string | null;\n collapsedPaths: Set<string>;\n expansionCommand: SelectedExpansionCommand | null;\n completedScrollCommandId: number | null;\n}\n\nconst getDiffPath = (diff: Diff) => diff.newPath ?? diff.oldPath ?? \"unknown\";\nconst PINNED_DIFF_LOOKBEHIND_COUNT = 24;\n\nexport const resolveSelectedScrollState = (input: ResolveSelectedScrollStateInput) => {\n const { diffs, selectedDiffPath, collapsedPaths, expansionCommand, completedScrollCommandId } = input;\n let selectedScrollPath = selectedDiffPath;\n let selectedScrollSourceKey = selectedDiffPath ? `selected:${selectedDiffPath}` : null;\n const selectedScrollCommandId = expansionCommand?.action === \"expand-selected\" ? expansionCommand.id : null;\n const hasCompletedSelectedScroll =\n selectedScrollCommandId !== null && completedScrollCommandId === selectedScrollCommandId;\n\n if (expansionCommand?.action === \"expand-selected\" && expansionCommand.path) {\n selectedScrollPath = expansionCommand.path;\n selectedScrollSourceKey = `command:${expansionCommand.id}:${expansionCommand.path}`;\n }\n\n let selectedScrollKey = selectedScrollSourceKey;\n if (selectedScrollPath && selectedScrollSourceKey) {\n const selectedScrollExpansionState = collapsedPaths.has(selectedScrollPath) ? \"collapsed\" : \"expanded\";\n selectedScrollKey = `${selectedScrollSourceKey}:${selectedScrollExpansionState}`;\n }\n\n const selectedScrollIndex = selectedScrollPath\n ? diffs.findIndex((diff) => getDiffPath(diff) === selectedScrollPath)\n : -1;\n const shouldPinSelectedScrollIndex =\n selectedScrollIndex >= 0 &&\n expansionCommand?.action === \"expand-selected\" &&\n expansionCommand.direction === \"up\" &&\n !hasCompletedSelectedScroll;\n\n return {\n selectedScrollPath,\n selectedScrollKey,\n selectedScrollCommandId,\n selectedScrollIndex,\n shouldPinSelectedScrollIndex,\n hasCompletedSelectedScroll,\n };\n};\n\nexport const includePinnedDiffIndexes = (input: {\n indexes: number[];\n selectedScrollIndex: number;\n shouldPinSelectedScrollIndex: boolean;\n}) => {\n const { indexes, selectedScrollIndex, shouldPinSelectedScrollIndex } = input;\n if (!shouldPinSelectedScrollIndex || indexes.includes(selectedScrollIndex)) return indexes;\n\n const pinnedStartIndex = Math.max(0, selectedScrollIndex - PINNED_DIFF_LOOKBEHIND_COUNT);\n const pinnedIndexes = Array.from(\n { length: selectedScrollIndex - pinnedStartIndex + 1 },\n (_, index) => pinnedStartIndex + index,\n );\n\n return Array.from(new Set([...indexes, ...pinnedIndexes])).sort((a, b) => a - b);\n};\n","import type { Virtualizer } from \"@tanstack/react-virtual\";\nimport { useLayoutEffect, useState } from \"react\";\nimport type { Diff } from \"./diff-card\";\nimport type { DiffExpansionCommand } from \"./diff-drawer\";\nimport { resolveSelectedScrollState } from \"./diff-drawer-scroll\";\n\ninterface UseSelectedDiffScrollInput {\n diffs: Diff[];\n selectedDiffPath: string | null;\n collapsedPaths: Set<string>;\n expansionCommand: DiffExpansionCommand | null;\n scrollRef: { current: HTMLDivElement | null };\n virtualizerRef: { current: Virtualizer<HTMLDivElement, Element> | null };\n suppressScrollAdjustRef: { current: boolean };\n}\n\n// Re-align for a few frames so the target settles as it and its neighbours measure, then latch the\n// command as done. Capped so a diff that never settles can't spin the animation loop.\nconst SETTLE_FRAME_COUNT = 3;\nconst MAX_ALIGNMENT_FRAMES = 12;\n\nconst getDiffPath = (diff: Diff) => diff.newPath ?? diff.oldPath ?? \"unknown\";\n\nexport const useSelectedDiffScroll = (input: UseSelectedDiffScrollInput) => {\n const {\n diffs,\n selectedDiffPath,\n collapsedPaths,\n expansionCommand,\n scrollRef,\n virtualizerRef,\n suppressScrollAdjustRef,\n } = input;\n const [completedScrollCommandId, setCompletedScrollCommandId] = useState<number | null>(null);\n const {\n selectedScrollPath,\n selectedScrollKey,\n selectedScrollCommandId,\n selectedScrollIndex,\n shouldPinSelectedScrollIndex,\n hasCompletedSelectedScroll,\n } = resolveSelectedScrollState({\n diffs,\n selectedDiffPath,\n collapsedPaths,\n expansionCommand,\n completedScrollCommandId,\n });\n\n useLayoutEffect(() => {\n if (!selectedScrollPath || !selectedScrollKey) return;\n if (hasCompletedSelectedScroll) return;\n // Selecting a collapsed diff expands it first (a sibling layout effect updates collapsedPaths and\n // re-runs this one). Wait for that: scrolling to a card that is about to grow lands on a stale\n // offset and snaps once it expands. Once expanded, its measured offset is stable.\n if (collapsedPaths.has(selectedScrollPath)) return;\n\n const index = diffs.findIndex((diff) => getDiffPath(diff) === selectedScrollPath);\n if (index < 0) return;\n\n const virtualizer = virtualizerRef.current;\n const scrollElement = scrollRef.current;\n if (!virtualizer || !scrollElement) return;\n\n const frameIds: number[] = [];\n let cancelledByUserScroll = false;\n // Drive the scroll from the virtualizer's measured card heights (not per-diff estimates) and hold\n // its keep-in-place adjustments off while we do, so a mid-list target lands where it actually is\n // instead of overshooting and snapping back — the \"wild jump\" when opening files further down.\n suppressScrollAdjustRef.current = true;\n const stopAligning = () => {\n suppressScrollAdjustRef.current = false;\n };\n const cancelSelectedScroll = () => {\n cancelledByUserScroll = true;\n stopAligning();\n if (selectedScrollCommandId !== null) {\n setCompletedScrollCommandId(selectedScrollCommandId);\n }\n };\n\n let alignmentFrames = 0;\n const alignSelectedDiff = () => {\n if (cancelledByUserScroll) return;\n virtualizer.scrollToIndex(index, { align: \"start\" });\n alignmentFrames += 1;\n if (alignmentFrames >= SETTLE_FRAME_COUNT && selectedScrollCommandId !== null) {\n stopAligning();\n setCompletedScrollCommandId(selectedScrollCommandId);\n return;\n }\n if (alignmentFrames < MAX_ALIGNMENT_FRAMES) {\n frameIds.push(requestAnimationFrame(alignSelectedDiff));\n return;\n }\n stopAligning();\n };\n\n scrollElement.addEventListener(\"wheel\", cancelSelectedScroll, { passive: true });\n scrollElement.addEventListener(\"touchmove\", cancelSelectedScroll, { passive: true });\n alignSelectedDiff();\n\n return () => {\n stopAligning();\n scrollElement.removeEventListener(\"wheel\", cancelSelectedScroll);\n scrollElement.removeEventListener(\"touchmove\", cancelSelectedScroll);\n for (const frameId of frameIds) {\n cancelAnimationFrame(frameId);\n }\n };\n }, [\n selectedScrollKey,\n selectedScrollPath,\n selectedScrollCommandId,\n hasCompletedSelectedScroll,\n diffs,\n collapsedPaths,\n scrollRef,\n virtualizerRef,\n suppressScrollAdjustRef,\n ]);\n\n return { selectedScrollIndex, shouldPinSelectedScrollIndex };\n};\n","import { Box, Stack } from \"@chakra-ui/react\";\nimport { defaultRangeExtractor, useVirtualizer, type Virtualizer } from \"@tanstack/react-virtual\";\nimport { useEffect, useLayoutEffect, useRef, useState } from \"react\";\nimport { ScrollArea } from \"@/components/primitives/scroll-area\";\nimport { type Diff, DiffCard } from \"./diff-card\";\nimport { DiffDrawerEmptyState } from \"./diff-drawer-empty-state\";\nimport { estimateDiffCardHeight } from \"./diff-drawer-height\";\nimport { includePinnedDiffIndexes } from \"./diff-drawer-scroll\";\nimport type { DiffViewMode } from \"./types\";\nimport { useSelectedDiffScroll } from \"./use-selected-diff-scroll\";\n\ninterface DiffDrawerProps {\n diffs: Diff[];\n selectedDiffPath?: string | null;\n onLoadDiff?: (path: string) => Promise<void>;\n onSelectDiffPath?: (path: string) => void;\n onExpansionStateChange?: (state: DiffDrawerExpansionState) => void;\n expansionCommand?: DiffExpansionCommand | null;\n diffViewMode?: DiffViewMode;\n}\n\nexport interface DiffExpansionCommand {\n action: \"expand\" | \"collapse\" | \"expand-selected\";\n id: number;\n path?: string;\n direction?: \"up\" | \"down\";\n}\n\nexport interface DiffDrawerExpansionState {\n allExpanded: boolean;\n allCollapsed: boolean;\n}\n\nexport { estimateDiffCardHeight } from \"./diff-drawer-height\";\nexport type { Diff };\n\nconst getDiffPath = (diff: Diff) => diff.newPath ?? diff.oldPath ?? \"unknown\";\n\nconst INITIAL_EXPANDED_DIFF_COUNT = 10;\nconst INITIAL_COLLAPSED_LINE_THRESHOLD = 100;\n\nexport const buildInitialCollapsedPaths = (diffs: Diff[]) => {\n if (diffs.length <= INITIAL_EXPANDED_DIFF_COUNT) return new Set<string>();\n\n return new Set(\n diffs\n .filter((diff, index) => {\n const lineCount = (diff.additions ?? 0) + (diff.deletions ?? 0);\n return index >= INITIAL_EXPANDED_DIFF_COUNT || lineCount > INITIAL_COLLAPSED_LINE_THRESHOLD;\n })\n .map((diff) => getDiffPath(diff)),\n );\n};\n\nexport const buildAllCollapsedPaths = (diffs: Diff[]) => new Set(diffs.map((diff) => getDiffPath(diff)));\n\nexport const toggleCollapsedPath = (collapsedPaths: Set<string>, path: string) => {\n const next = new Set(collapsedPaths);\n if (next.has(path)) {\n next.delete(path);\n } else {\n next.add(path);\n }\n return next;\n};\n\nexport const resolveCollapsedPathsForSelectedDiff = (\n diffs: Diff[],\n collapsedPaths: Set<string>,\n selectedDiffPath: string | null,\n) => {\n if (!selectedDiffPath) return collapsedPaths;\n if (!collapsedPaths.has(selectedDiffPath)) return collapsedPaths;\n if (!diffs.some((diff) => getDiffPath(diff) === selectedDiffPath)) return collapsedPaths;\n\n const next = new Set(collapsedPaths);\n next.delete(selectedDiffPath);\n return next;\n};\n\n// Expand the newly navigated-to diff and re-collapse the one the previous tree navigation expanded.\n// Clicking through the tree otherwise leaves a growing wall of expanded diffs; their measured heights\n// drift ever further from the scroll estimates, which is what makes the panel overshoot and jump.\n// Manual chevron toggles don't flow through here, so diffs the user opens by hand stay open.\nexport const resolveCollapsedPathsForNavigation = (\n diffs: Diff[],\n collapsedPaths: Set<string>,\n selectedDiffPath: string,\n previousNavigatedPath: string | null,\n) => {\n const expanded = resolveCollapsedPathsForSelectedDiff(diffs, collapsedPaths, selectedDiffPath);\n if (\n !previousNavigatedPath ||\n previousNavigatedPath === selectedDiffPath ||\n expanded.has(previousNavigatedPath) ||\n !diffs.some((diff) => getDiffPath(diff) === previousNavigatedPath)\n ) {\n return expanded;\n }\n\n const next = expanded === collapsedPaths ? new Set(collapsedPaths) : expanded;\n next.add(previousNavigatedPath);\n return next;\n};\n\nexport function DiffDrawer(props: DiffDrawerProps) {\n const {\n diffs,\n selectedDiffPath = null,\n onLoadDiff,\n onSelectDiffPath,\n onExpansionStateChange,\n expansionCommand = null,\n diffViewMode = \"unified\",\n } = props;\n const scrollRef = useRef<HTMLDivElement>(null);\n const reportedExpansionStateRef = useRef<DiffDrawerExpansionState | null>(null);\n // Populated after the virtualizer is created below so the scroll hook (which runs first) can drive\n // it from a layout effect. `suppressScrollAdjustRef` lets the hook freeze the virtualizer's\n // keep-in-place adjustments while it aligns the selected diff, so re-measuring off-screen cards\n // can't shove the scroll around mid-align.\n const virtualizerRef = useRef<Virtualizer<HTMLDivElement, Element> | null>(null);\n const suppressScrollAdjustRef = useRef(false);\n const lastNavigatedPathRef = useRef<string | null>(null);\n const [collapsedPaths, setCollapsedPaths] = useState<Set<string>>(() => buildInitialCollapsedPaths(diffs));\n const [largeDiffOptInPaths, setLargeDiffOptInPaths] = useState<Set<string>>(() => new Set());\n const { selectedScrollIndex, shouldPinSelectedScrollIndex } = useSelectedDiffScroll({\n diffs,\n selectedDiffPath,\n collapsedPaths,\n expansionCommand,\n scrollRef,\n virtualizerRef,\n suppressScrollAdjustRef,\n });\n\n const virtualizer = useVirtualizer({\n count: diffs.length,\n getScrollElement: () => scrollRef.current,\n estimateSize: (index) => {\n const diff = diffs[index];\n const path = getDiffPath(diff);\n return estimateDiffCardHeight({\n diff,\n isCollapsed: collapsedPaths.has(path),\n hasOptedIntoLargeDiff: largeDiffOptInPaths.has(path),\n diffViewMode,\n });\n },\n getItemKey: (index) => getDiffPath(diffs[index]),\n overscan: 3,\n rangeExtractor: (range) => {\n const indexes = defaultRangeExtractor(range);\n return includePinnedDiffIndexes({ indexes, selectedScrollIndex, shouldPinSelectedScrollIndex });\n },\n });\n virtualizer.shouldAdjustScrollPositionOnItemSizeChange = (_item, _delta, instance) =>\n !instance.isScrolling && !suppressScrollAdjustRef.current;\n virtualizerRef.current = virtualizer;\n\n useLayoutEffect(() => {\n if (!selectedDiffPath) return;\n\n setCollapsedPaths((prev) => resolveCollapsedPathsForSelectedDiff(diffs, prev, selectedDiffPath));\n }, [diffs, selectedDiffPath]);\n\n useLayoutEffect(() => {\n if (!expansionCommand) return;\n\n if (expansionCommand.action === \"expand-selected\") {\n const navigatedPath = expansionCommand.path;\n if (navigatedPath) {\n const previousNavigatedPath = lastNavigatedPathRef.current;\n lastNavigatedPathRef.current = navigatedPath;\n setCollapsedPaths((prev) =>\n resolveCollapsedPathsForNavigation(diffs, prev, navigatedPath, previousNavigatedPath),\n );\n }\n return;\n }\n\n // Expand/collapse all is an explicit user choice; don't let it re-collapse on the next navigation.\n lastNavigatedPathRef.current = null;\n setCollapsedPaths(expansionCommand.action === \"collapse\" ? buildAllCollapsedPaths(diffs) : new Set());\n }, [diffs, expansionCommand]);\n\n useEffect(() => {\n const expansionState = {\n allExpanded: collapsedPaths.size === 0,\n allCollapsed: diffs.length > 0 && diffs.every((diff) => collapsedPaths.has(getDiffPath(diff))),\n };\n const reportedExpansionState = reportedExpansionStateRef.current;\n if (\n reportedExpansionState?.allExpanded === expansionState.allExpanded &&\n reportedExpansionState.allCollapsed === expansionState.allCollapsed\n ) {\n return;\n }\n\n reportedExpansionStateRef.current = expansionState;\n onExpansionStateChange?.(expansionState);\n }, [collapsedPaths, diffs, onExpansionStateChange]);\n\n if (diffs.length === 0) return <DiffDrawerEmptyState />;\n\n const toggleExpanded = (path: string) => {\n setCollapsedPaths((prev) => toggleCollapsedPath(prev, path));\n };\n\n const showFullDiff = (path: string) => {\n setLargeDiffOptInPaths((prev) => {\n const next = new Set(prev);\n next.add(path);\n return next;\n });\n };\n\n const virtualItems = virtualizer.getVirtualItems();\n\n return (\n <Stack h=\"full\" minH=\"0\" gap=\"0\" bg=\"bg\">\n <Box position=\"relative\" flex=\"1\" minH=\"0\" bg=\"bg\">\n <ScrollArea\n position=\"absolute\"\n inset=\"0\"\n viewportRef={scrollRef}\n viewportProps={{ style: { overflowAnchor: \"none\" } }}\n contentProps={{ p: \"xs\" }}\n >\n <Box position=\"relative\" width=\"100%\" style={{ height: virtualizer.getTotalSize() }}>\n {virtualItems.map((virtualItem) => {\n const diff = diffs[virtualItem.index];\n const path = getDiffPath(diff);\n\n return (\n <Box\n key={virtualItem.key}\n data-index={virtualItem.index}\n ref={virtualizer.measureElement}\n position=\"absolute\"\n left=\"0\"\n width=\"100%\"\n pb=\"xs\"\n style={{ top: `${virtualItem.start}px` }}\n >\n <DiffCard\n key={path}\n diff={diff}\n isSelected={selectedDiffPath === path}\n isExpanded={!collapsedPaths.has(path)}\n onToggleExpanded={() => toggleExpanded(path)}\n onSelect={() => onSelectDiffPath?.(path)}\n onLoadDiff={onLoadDiff}\n hasOptedIntoLargeDiff={largeDiffOptInPaths.has(path)}\n onShowFullDiff={() => showFullDiff(path)}\n diffViewMode={diffViewMode}\n />\n </Box>\n );\n })}\n </Box>\n </ScrollArea>\n </Box>\n </Stack>\n );\n}\n","import type { ChangedFilesViewMode, ChangedFileTreeNode } from \"./types\";\n\nconst normalizeChangedFilePath = (path: string) =>\n path\n .split(\"/\")\n .map((segment) => segment.trim())\n .filter(Boolean)\n .join(\"/\");\n\nconst sortNodes = (nodes: ChangedFileTreeNode[]) => {\n nodes.sort((left, right) => {\n if (left.type !== right.type) return left.type === \"folder\" ? -1 : 1;\n return left.name.localeCompare(right.name);\n });\n\n nodes.forEach((node) => {\n if (node.children) sortNodes(node.children);\n });\n\n return nodes;\n};\n\nconst dedupePaths = (paths: string[]) => Array.from(new Set(paths.map(normalizeChangedFilePath).filter(Boolean)));\n\nconst buildFlatTree = (paths: string[]) =>\n dedupePaths(paths)\n .map((path) => ({ id: `file:${path}`, name: path, type: \"file\" }) satisfies ChangedFileTreeNode)\n .sort((left, right) => left.name.localeCompare(right.name));\n\nexport const buildChangedFilesTree = (paths: string[], mode: ChangedFilesViewMode): ChangedFileTreeNode[] => {\n if (mode === \"flat\") return buildFlatTree(paths);\n\n const treeById = new Map<string, ChangedFileTreeNode>();\n const rootNodes: ChangedFileTreeNode[] = [];\n\n dedupePaths(paths).forEach((path) => {\n const segments = path.split(\"/\");\n let parentPath = \"\";\n let parentNode: ChangedFileTreeNode | null = null;\n\n segments.forEach((segment, index) => {\n const currentPath = parentPath ? `${parentPath}/${segment}` : segment;\n const isFile = index === segments.length - 1;\n const nodeId = `${isFile ? \"file\" : \"folder\"}:${currentPath}`;\n const existingNode = treeById.get(nodeId);\n\n if (existingNode) {\n parentNode = existingNode;\n parentPath = currentPath;\n return;\n }\n\n const nextNode: ChangedFileTreeNode = {\n id: nodeId,\n name: segment,\n type: isFile ? \"file\" : \"folder\",\n ...(isFile ? {} : { children: [] }),\n };\n\n treeById.set(nodeId, nextNode);\n\n if (!parentNode) rootNodes.push(nextNode);\n else parentNode.children?.push(nextNode);\n\n parentNode = nextNode;\n parentPath = currentPath;\n });\n });\n\n return sortNodes(rootNodes);\n};\n\nexport const collectExpandedFolderIds = (nodes: ChangedFileTreeNode[]) => {\n const folderIds: string[] = [];\n\n const visit = (items: ChangedFileTreeNode[]) => {\n items.forEach((item) => {\n if (item.type !== \"folder\") return;\n folderIds.push(item.id);\n visit(item.children ?? []);\n });\n };\n\n visit(nodes);\n return folderIds;\n};\n\nconst collectNestedFileOrder = (nodes: ChangedFileTreeNode[]) => {\n const orderedPaths: string[] = [];\n\n const visit = (treeNodes: ChangedFileTreeNode[]) => {\n treeNodes.forEach((node) => {\n if (node.type === \"file\") {\n orderedPaths.push(node.id.replace(/^file:/, \"\"));\n return;\n }\n\n visit(node.children ?? []);\n });\n };\n\n visit(nodes);\n return orderedPaths;\n};\n\nexport const sortPathsByViewMode = (paths: string[], mode: ChangedFilesViewMode) => {\n if (mode === \"flat\") return [...paths].sort((left, right) => left.localeCompare(right));\n return collectNestedFileOrder(buildChangedFilesTree(paths, \"nested\"));\n};\n","import { create } from \"zustand\";\nimport type { ChangedFilesViewMode, DiffViewMode } from \"./types\";\n\ninterface DiffViewerState {\n isTreePanelOpen: boolean;\n viewMode: ChangedFilesViewMode;\n diffViewMode: DiffViewMode;\n searchQuery: string;\n selectedPath: string | null;\n expandedFolderIds: Set<string>;\n setTreePanelOpen: (open: boolean) => void;\n toggleTreePanel: () => void;\n setViewMode: (viewMode: ChangedFilesViewMode) => void;\n setDiffViewMode: (diffViewMode: DiffViewMode) => void;\n setSearchQuery: (searchQuery: string) => void;\n setSelectedPath: (selectedPath: string | null) => void;\n setExpandedFolderIds: (folderIds: string[]) => void;\n toggleFolder: (folderId: string) => void;\n expandAll: (folderIds: string[]) => void;\n collapseAll: () => void;\n}\n\nexport const useDiffViewerStore = create<DiffViewerState>((set) => ({\n isTreePanelOpen: true,\n viewMode: \"nested\",\n diffViewMode: \"unified\",\n searchQuery: \"\",\n selectedPath: null,\n expandedFolderIds: new Set(),\n setTreePanelOpen: (isTreePanelOpen) => set({ isTreePanelOpen }),\n toggleTreePanel: () => set((state) => ({ isTreePanelOpen: !state.isTreePanelOpen })),\n setViewMode: (viewMode) => set({ viewMode }),\n setDiffViewMode: (diffViewMode) => set({ diffViewMode }),\n setSearchQuery: (searchQuery) => set({ searchQuery }),\n setSelectedPath: (selectedPath) => set({ selectedPath }),\n setExpandedFolderIds: (folderIds) => set({ expandedFolderIds: new Set(folderIds) }),\n toggleFolder: (folderId) =>\n set((state) => {\n const expandedFolderIds = new Set(state.expandedFolderIds);\n if (expandedFolderIds.has(folderId)) expandedFolderIds.delete(folderId);\n else expandedFolderIds.add(folderId);\n return { expandedFolderIds };\n }),\n expandAll: (folderIds) => set({ expandedFolderIds: new Set(folderIds) }),\n collapseAll: () => set({ expandedFolderIds: new Set() }),\n}));\n","import { Box, IconButton, Menu } from \"@chakra-ui/react\";\nimport {\n Check,\n ChevronsDownUp,\n ChevronsUpDown,\n List,\n ListTree,\n PanelLeftClose,\n PanelLeftOpen,\n Rows2,\n Settings2,\n SquareSplitHorizontal,\n} from \"lucide-react\";\nimport type { ReactNode } from \"react\";\nimport { ListRow } from \"../list-row/list-row\";\nimport type { ChangedFilesViewMode, DiffViewMode } from \"./types\";\n\ninterface DiffViewerOptionsMenuProps {\n isTreePanelOpen: boolean;\n hasFilePaths: boolean;\n viewMode: ChangedFilesViewMode;\n diffViewMode: DiffViewMode;\n isExpandAllDisabled: boolean;\n isCollapseAllDisabled: boolean;\n onToggleTreePanel: () => void;\n onViewModeChange: (viewMode: ChangedFilesViewMode) => void;\n onDiffViewModeChange: (diffViewMode: DiffViewMode) => void;\n onExpandAll: () => void;\n onCollapseAll: () => void;\n}\n\ninterface DiffViewerMenuItemProps {\n id: string;\n label: string;\n icon: ReactNode;\n selected?: boolean;\n disabled?: boolean;\n onActivate: () => void;\n}\n\nconst SelectionIndicator = (props: { selected: boolean }) => (\n <Box w=\"14px\" flexShrink={0} display=\"flex\" justifyContent=\"center\">\n {props.selected ? <Check size={14} /> : null}\n </Box>\n);\n\nconst DiffViewerMenuItem = (props: DiffViewerMenuItemProps) => {\n const { id, label, icon, selected, disabled, onActivate } = props;\n\n return (\n <Menu.Item value={id} disabled={disabled} asChild>\n <ListRow\n asChild\n role={selected === undefined ? undefined : \"menuitemradio\"}\n aria-checked={selected}\n variant=\"full-width\"\n id={id}\n icon={icon}\n label={label}\n disabled={disabled}\n isSelected={selected}\n endContent={selected === undefined ? undefined : <SelectionIndicator selected={selected} />}\n onActivate={onActivate}\n />\n </Menu.Item>\n );\n};\n\nexport const DiffViewerOptionsMenu = (props: DiffViewerOptionsMenuProps) => {\n const {\n isTreePanelOpen,\n hasFilePaths,\n viewMode,\n diffViewMode,\n isExpandAllDisabled,\n isCollapseAllDisabled,\n onToggleTreePanel,\n onViewModeChange,\n onDiffViewModeChange,\n onExpandAll,\n onCollapseAll,\n } = props;\n\n return (\n <Menu.Root>\n <Menu.Trigger asChild>\n <IconButton aria-label=\"Diff view options\" variant=\"ghost\" size=\"sm\">\n <Settings2 size={14} />\n </IconButton>\n </Menu.Trigger>\n <Menu.Positioner>\n <Menu.Content minW=\"190px\" bg=\"bg\" p=\"0\" gap=\"0\">\n <DiffViewerMenuItem\n id=\"toggle-file-tree\"\n icon={isTreePanelOpen ? <PanelLeftClose size={14} /> : <PanelLeftOpen size={14} />}\n label={isTreePanelOpen ? \"Hide file tree\" : \"Show file tree\"}\n onActivate={onToggleTreePanel}\n />\n <Menu.Separator />\n {hasFilePaths ? (\n <>\n <DiffViewerMenuItem\n id=\"nested\"\n icon={<ListTree size={14} />}\n label=\"Nested\"\n selected={viewMode === \"nested\"}\n onActivate={() => onViewModeChange(\"nested\")}\n />\n <DiffViewerMenuItem\n id=\"flat\"\n icon={<List size={14} />}\n label=\"Flat\"\n selected={viewMode === \"flat\"}\n onActivate={() => onViewModeChange(\"flat\")}\n />\n <Menu.Separator />\n </>\n ) : null}\n <DiffViewerMenuItem\n id=\"unified\"\n icon={<Rows2 size={14} />}\n label=\"Unified\"\n selected={diffViewMode === \"unified\"}\n onActivate={() => onDiffViewModeChange(\"unified\")}\n />\n <DiffViewerMenuItem\n id=\"split\"\n icon={<SquareSplitHorizontal size={14} />}\n label=\"Split\"\n selected={diffViewMode === \"split\"}\n onActivate={() => onDiffViewModeChange(\"split\")}\n />\n <Menu.Separator />\n <DiffViewerMenuItem\n id=\"expand-all\"\n icon={<ChevronsUpDown size={14} />}\n label=\"Expand all\"\n disabled={isExpandAllDisabled}\n onActivate={onExpandAll}\n />\n <DiffViewerMenuItem\n id=\"collapse-all\"\n icon={<ChevronsDownUp size={14} />}\n label=\"Collapse all\"\n disabled={isCollapseAllDisabled}\n onActivate={onCollapseAll}\n />\n </Menu.Content>\n </Menu.Positioner>\n </Menu.Root>\n );\n};\n","import { Badge } from \"@chakra-ui/react\";\n\nconst changeLabels: Record<string, string> = {\n added: \"A\",\n copied: \"C\",\n deleted: \"D\",\n modified: \"M\",\n permissionChange: \"M\",\n renamed: \"R\",\n};\n\nconst changeColors: Record<string, string> = {\n added: \"green\",\n copied: \"purple\",\n deleted: \"red\",\n modified: \"blue\",\n permissionChange: \"yellow\",\n renamed: \"orange\",\n};\n\nconst changeSemanticStyles: Record<string, { color: string; backgroundColor: string }> = {\n added: { color: \"fg.success\", backgroundColor: \"bg.success\" },\n deleted: { color: \"fg.error\", backgroundColor: \"bg.error\" },\n};\n\nexport const FileChangeBadge = (props: { change: string }) => {\n const { change } = props;\n const colorProps = changeSemanticStyles[change] ?? { colorPalette: changeColors[change] ?? \"gray\" };\n\n return (\n <Badge size=\"xs\" variant=\"subtle\" flexShrink={0} {...colorProps}>\n {changeLabels[change] ?? change}\n </Badge>\n );\n};\n","import { Box, Icon, Input, InputGroup, Stack, Text } from \"@chakra-ui/react\";\nimport { FileText, Search } from \"lucide-react\";\nimport { useRef } from \"react\";\nimport { Header } from \"@/components/layout/header\";\nimport { EmptyState } from \"@/components/primitives/empty-state\";\nimport { ScrollArea } from \"@/components/primitives/scroll-area\";\nimport { TreeList } from \"../tree-list/tree-list\";\nimport type { TreeListNode } from \"../tree-list/tree-list.types\";\nimport { buildChangedFilesTree } from \"./build-changed-files-tree\";\nimport { FileChangeBadge } from \"./file-change-badge\";\nimport type { ChangedFilesViewMode, ChangedFileTreeNode, FileIconInfo } from \"./types\";\n\ninterface FileListPanelProps {\n paths: string[];\n selectedPath: string | null;\n viewMode: ChangedFilesViewMode;\n searchQuery: string;\n expandedFolderIds: Set<string>;\n onSelectPath: (path: string) => void;\n onSearchQueryChange: (value: string) => void;\n onToggleFolder: (id: string) => void;\n resolveFileIcon?: (path: string, options?: { isFolder?: boolean; isExpanded?: boolean }) => FileIconInfo | undefined;\n changeByPath?: Map<string, string>;\n}\n\nconst getFilePathParts = (filePath: string) => {\n const lastSlashIndex = filePath.lastIndexOf(\"/\");\n if (lastSlashIndex < 0) return { fileName: filePath, dirPath: \"\" };\n return { fileName: filePath.slice(lastSlashIndex + 1), dirPath: filePath.slice(0, lastSlashIndex) };\n};\n\nconst renderFileLabel = (node: ChangedFileTreeNode, viewMode: ChangedFilesViewMode, filePath: string) => {\n const { fileName, dirPath } = getFilePathParts(filePath);\n if (viewMode !== \"flat\" || !dirPath) return node.name;\n\n return (\n <Text textStyle=\"label/S/regular\" truncate>\n <Text as=\"span\" color=\"fg.default\">\n {fileName}\n </Text>{\" \"}\n <Text as=\"span\" color=\"fg.muted\">\n {dirPath}\n </Text>\n </Text>\n );\n};\n\nconst toTreeListNodes = (input: {\n nodes: ChangedFileTreeNode[];\n viewMode: ChangedFilesViewMode;\n onSelectPath: (path: string) => void;\n resolveFileIcon?: (path: string, options?: { isFolder?: boolean; isExpanded?: boolean }) => FileIconInfo | undefined;\n changeByPath?: Map<string, string>;\n}): TreeListNode[] => {\n const { nodes, viewMode, onSelectPath, resolveFileIcon, changeByPath } = input;\n\n return nodes.map((node) => {\n if (node.type === \"folder\") {\n return {\n id: node.id,\n label: node.name,\n isContainer: true,\n children: toTreeListNodes({\n nodes: node.children ?? [],\n viewMode,\n onSelectPath,\n resolveFileIcon,\n changeByPath,\n }),\n };\n }\n\n const filePath = node.id.replace(/^file:/, \"\");\n const fileIcon = resolveFileIcon?.(filePath) ?? { icon: <Icon as={FileText} boxSize=\"16px\" />, color: \"fg.subtle\" };\n const change = changeByPath?.get(filePath);\n return {\n id: node.id,\n label: renderFileLabel(node, viewMode, filePath),\n icon: fileIcon.icon,\n iconColor: fileIcon.color,\n endContent: change ? <FileChangeBadge change={change} /> : undefined,\n onActivate: () => onSelectPath(filePath),\n };\n });\n};\n\nexport const FileListPanel = (props: FileListPanelProps) => {\n const {\n paths,\n selectedPath,\n viewMode,\n searchQuery,\n expandedFolderIds,\n onSelectPath,\n onSearchQueryChange,\n onToggleFolder,\n resolveFileIcon,\n changeByPath,\n } = props;\n const scrollRef = useRef<HTMLDivElement>(null);\n const fileTree = buildChangedFilesTree(paths, viewMode);\n const treeNodes = toTreeListNodes({ nodes: fileTree, viewMode, onSelectPath, resolveFileIcon, changeByPath });\n const emptyTitle = searchQuery.trim() ? \"No matching files\" : \"No changed files\";\n\n return (\n <Stack h=\"full\" minH=\"0\" minW=\"0\" w=\"full\" gap=\"0\" overflow=\"hidden\" bg=\"bg\">\n <Header flexShrink={0} borderBottomWidth=\"1px\" borderColor=\"border.subtle\" bg=\"bg\">\n <InputGroup startElement={<Search size={14} />}>\n <Input\n size=\"sm\"\n variant=\"borderless\"\n aria-label=\"Search files\"\n placeholder=\"Search files\"\n value={searchQuery}\n onChange={(event) => onSearchQueryChange(event.target.value)}\n />\n </InputGroup>\n </Header>\n <ScrollArea\n flex=\"1\"\n minH=\"0\"\n minW=\"0\"\n bg=\"bg\"\n viewportRef={scrollRef}\n viewportProps={{ style: { overflowX: \"hidden\" } }}\n >\n {paths.length > 0 ? (\n <TreeList\n sections={[{ id: \"files\", nodes: treeNodes }]}\n expandedNodeIds={[...expandedFolderIds]}\n activeNodeId={selectedPath ? `file:${selectedPath}` : null}\n rowVariant=\"tree\"\n onToggleNode={onToggleFolder}\n virtualize\n scrollRef={scrollRef}\n />\n ) : (\n <Box px=\"xs\" py=\"xs\">\n <EmptyState title={emptyTitle} size=\"sm\" textAlign=\"left\" alignItems=\"flex-start\" />\n </Box>\n )}\n </ScrollArea>\n </Stack>\n );\n};\n","import { Box, Flex, HStack, Skeleton, Stack, Text } from \"@chakra-ui/react\";\nimport { useEffect, useState } from \"react\";\nimport { Header } from \"@/components/layout/header\";\nimport { ResizableSplitLayout } from \"@/components/layout/resizable-split-layout\";\nimport { EmptyState } from \"@/components/primitives/empty-state\";\nimport { buildChangedFilesTree, collectExpandedFolderIds, sortPathsByViewMode } from \"./build-changed-files-tree\";\nimport { DiffBubble } from \"./diff-bubble\";\nimport type { Diff } from \"./diff-card\";\nimport { DiffDrawer, type DiffDrawerExpansionState, type DiffExpansionCommand } from \"./diff-drawer\";\nimport { useDiffViewerStore } from \"./diff-viewer.store\";\nimport { DiffViewerOptionsMenu } from \"./diff-viewer-options-menu\";\nimport { FileListPanel } from \"./file-list-panel\";\nimport type { ChangedFilesViewMode, FileIconInfo } from \"./types\";\n\nexport interface DiffViewerProps {\n diffs: Diff[];\n changedFilePaths?: string[];\n defaultSelectedPath?: string | null;\n loading?: boolean;\n onLoadDiff?: (path: string) => Promise<void>;\n resolveFileIcon?: (path: string, options?: { isFolder?: boolean; isExpanded?: boolean }) => FileIconInfo | undefined;\n}\n\nconst getDiffPath = (diff: Diff) => diff.newPath ?? diff.oldPath ?? \"unknown\";\nconst buildChangeByPath = (diffs: Diff[]) => new Map(diffs.map((diff) => [getDiffPath(diff), diff.change]));\nconst sumDiffStats = (diffs: Diff[]) =>\n diffs.reduce(\n (total, diff) => ({\n additions: total.additions + (diff.additions ?? 0),\n deletions: total.deletions + (diff.deletions ?? 0),\n }),\n { additions: 0, deletions: 0 },\n );\n\nconst buildFilteredDiffs = (input: {\n diffs: Diff[];\n normalizedSearchQuery: string;\n viewMode: ChangedFilesViewMode;\n}) => {\n const { diffs, normalizedSearchQuery, viewMode } = input;\n const matchingDiffs = normalizedSearchQuery\n ? diffs.filter((diff) => getDiffPath(diff).toLowerCase().includes(normalizedSearchQuery))\n : diffs;\n const orderedPaths = sortPathsByViewMode(matchingDiffs.map(getDiffPath), viewMode);\n const orderByPath = new Map(orderedPaths.map((path, index) => [path, index]));\n\n return [...matchingDiffs].sort((left, right) => {\n const leftOrder = orderByPath.get(getDiffPath(left)) ?? Number.MAX_SAFE_INTEGER;\n const rightOrder = orderByPath.get(getDiffPath(right)) ?? Number.MAX_SAFE_INTEGER;\n return leftOrder - rightOrder;\n });\n};\n\nconst resolveSelectedPath = (preferredPaths: string[], fallbackPaths: string[]) =>\n preferredPaths[0] ?? fallbackPaths[0] ?? null;\n\nconst loadingDiffItems = [\"first\", \"second\", \"third\"] as const;\n\nconst DiffViewerLoading = () => (\n <Stack flex=\"1\" minH=\"0\" bg=\"bg\" p=\"xs\" gap=\"xs\" role=\"status\" aria-busy=\"true\" aria-label=\"Loading diff panel\">\n {loadingDiffItems.map((item) => (\n <Skeleton key={item} h=\"72px\" w=\"full\" flexShrink=\"0\" borderRadius=\"xs\" />\n ))}\n </Stack>\n);\n\nexport const DiffViewer = (props: DiffViewerProps) => {\n const { diffs, changedFilePaths, defaultSelectedPath = null, loading = false, onLoadDiff, resolveFileIcon } = props;\n const [diffExpansionCommand, setDiffExpansionCommand] = useState<DiffExpansionCommand | null>(null);\n const [diffExpansionState, setDiffExpansionState] = useState<DiffDrawerExpansionState>({\n allExpanded: false,\n allCollapsed: false,\n });\n const {\n isTreePanelOpen,\n viewMode,\n diffViewMode,\n searchQuery,\n selectedPath,\n expandedFolderIds,\n setTreePanelOpen,\n setViewMode,\n setDiffViewMode,\n setSearchQuery,\n setSelectedPath,\n setExpandedFolderIds,\n toggleFolder,\n expandAll,\n collapseAll,\n } = useDiffViewerStore();\n\n const diffPaths = diffs.map(getDiffPath);\n const filePaths = changedFilePaths ?? diffPaths;\n const normalizedSearchQuery = searchQuery.trim().toLowerCase();\n const filteredFilePaths = normalizedSearchQuery\n ? filePaths.filter((path) => path.toLowerCase().includes(normalizedSearchQuery))\n : filePaths;\n const filteredDiffs = buildFilteredDiffs({ diffs, normalizedSearchQuery, viewMode });\n const changeByPath = buildChangeByPath(diffs);\n const filteredDiffPaths = filteredDiffs.map(getDiffPath);\n const fileTree = buildChangedFilesTree(filteredFilePaths, viewMode);\n const folderIds = viewMode === \"nested\" ? collectExpandedFolderIds(fileTree) : [];\n const filteredFilePathKey = filteredFilePaths.join(\"\\0\");\n const filteredDiffPathKey = filteredDiffPaths.join(\"\\0\");\n const resolvedSelectedPath =\n selectedPath ?? defaultSelectedPath ?? resolveSelectedPath(filteredDiffPaths, filteredFilePaths);\n const hasDiffs = filteredDiffs.length > 0;\n const emptyDiffTitle = normalizedSearchQuery ? \"No matching changes\" : \"No changes\";\n const showDiffEmptyState = !loading && !hasDiffs;\n const totalDiff = sumDiffStats(filteredDiffs);\n const hasExpandableItems = folderIds.length > 0 || filteredDiffs.length > 0;\n const allFilesExpanded = folderIds.every((folderId) => expandedFolderIds.has(folderId));\n const allFilesCollapsed = folderIds.every((folderId) => !expandedFolderIds.has(folderId));\n const allDiffsExpanded = filteredDiffs.length === 0 || diffExpansionState.allExpanded;\n const allDiffsCollapsed = filteredDiffs.length === 0 || diffExpansionState.allCollapsed;\n const isExpandAllDisabled = !hasExpandableItems || (allFilesExpanded && allDiffsExpanded);\n const isCollapseAllDisabled = !hasExpandableItems || (allFilesCollapsed && allDiffsCollapsed);\n\n useEffect(() => {\n const filePaths = filteredFilePathKey ? filteredFilePathKey.split(\"\\0\") : [];\n const tree = buildChangedFilesTree(filePaths, viewMode);\n setExpandedFolderIds(viewMode === \"nested\" ? collectExpandedFolderIds(tree) : []);\n }, [filteredFilePathKey, setExpandedFolderIds, viewMode]);\n\n useEffect(() => {\n const diffPaths = filteredDiffPathKey ? filteredDiffPathKey.split(\"\\0\") : [];\n const filePaths = filteredFilePathKey ? filteredFilePathKey.split(\"\\0\") : [];\n if (resolvedSelectedPath && diffPaths.includes(resolvedSelectedPath)) return;\n setSelectedPath(resolveSelectedPath(diffPaths, filePaths));\n }, [filteredDiffPathKey, filteredFilePathKey, resolvedSelectedPath, setSelectedPath]);\n\n const expandAllFilesAndDiffs = () => {\n expandAll(folderIds);\n setDiffExpansionCommand((current) => ({ action: \"expand\", id: (current?.id ?? 0) + 1 }));\n };\n\n const collapseAllFilesAndDiffs = () => {\n collapseAll();\n setDiffExpansionCommand((current) => ({ action: \"collapse\", id: (current?.id ?? 0) + 1 }));\n };\n\n const selectChangedFilePath = (path: string) => {\n const currentIndex = resolvedSelectedPath ? filteredDiffPaths.indexOf(resolvedSelectedPath) : -1;\n const nextIndex = filteredDiffPaths.indexOf(path);\n const direction = currentIndex >= 0 && nextIndex >= 0 && nextIndex < currentIndex ? \"up\" : \"down\";\n\n setSelectedPath(path);\n setDiffExpansionCommand((current) => ({ action: \"expand-selected\", direction, id: (current?.id ?? 0) + 1, path }));\n };\n\n const diffPanel = (\n <Stack h=\"full\" minH=\"0\" minW=\"0\" flex=\"1\" bg=\"bg\" gap=\"0\">\n <Header variant=\"main\" borderBottomWidth=\"1px\" borderColor=\"border.subtle\" bg=\"bg\" justifyContent=\"space-between\">\n <HStack gap=\"xs\" minW=\"0\">\n <DiffViewerOptionsMenu\n isTreePanelOpen={isTreePanelOpen}\n hasFilePaths={filePaths.length > 0}\n viewMode={viewMode}\n diffViewMode={diffViewMode}\n isExpandAllDisabled={isExpandAllDisabled}\n isCollapseAllDisabled={isCollapseAllDisabled}\n onToggleTreePanel={() => setTreePanelOpen(!isTreePanelOpen)}\n onViewModeChange={setViewMode}\n onDiffViewModeChange={setDiffViewMode}\n onExpandAll={expandAllFilesAndDiffs}\n onCollapseAll={collapseAllFilesAndDiffs}\n />\n {showDiffEmptyState ? (\n <Text textStyle=\"label/S/regular\" color=\"fg.muted\" truncate>\n {emptyDiffTitle}\n </Text>\n ) : null}\n </HStack>\n <DiffBubble variant=\"ghost\" size=\"small\" additions={totalDiff.additions} deletions={totalDiff.deletions} />\n </Header>\n {loading ? (\n <DiffViewerLoading />\n ) : hasDiffs ? (\n <Box flex=\"1\" minH=\"0\">\n <DiffDrawer\n diffs={filteredDiffs}\n selectedDiffPath={resolvedSelectedPath}\n onLoadDiff={onLoadDiff}\n onSelectDiffPath={setSelectedPath}\n onExpansionStateChange={setDiffExpansionState}\n expansionCommand={diffExpansionCommand}\n diffViewMode={diffViewMode}\n />\n </Box>\n ) : (\n <Box flex=\"1\" minH=\"0\" px=\"md\" py=\"lg\" display=\"flex\" alignItems=\"center\" justifyContent=\"center\" bg=\"bg\">\n <EmptyState title={emptyDiffTitle} />\n </Box>\n )}\n </Stack>\n );\n\n return (\n <Flex flex=\"1\" minH=\"0\" minW=\"0\" bg=\"bg\" gap=\"0\" data-testid=\"diff-viewer\">\n <ResizableSplitLayout\n flex=\"1\"\n minH=\"0\"\n minW=\"0\"\n resizablePanel={\n <FileListPanel\n paths={filteredFilePaths}\n selectedPath={resolvedSelectedPath}\n viewMode={viewMode}\n searchQuery={searchQuery}\n expandedFolderIds={expandedFolderIds}\n onSelectPath={selectChangedFilePath}\n onSearchQueryChange={setSearchQuery}\n onToggleFolder={toggleFolder}\n resolveFileIcon={resolveFileIcon}\n changeByPath={changeByPath}\n />\n }\n contentPanel={diffPanel}\n collapsed={!isTreePanelOpen}\n defaultSizePx={288}\n minSizePx={224}\n contentMinSizePx={320}\n resizeLabel=\"Resize file list panel\"\n separator=\"line\"\n onCollapsedChange={(collapsed) => setTreePanelOpen(!collapsed)}\n />\n </Flex>\n );\n};\n"],"names":["createCodeEditorPreloader","initialize","initialization","preloadCodeEditor","then","module","initializeMonaco","MonacoEditor","lazy","default","Editor","MonacoDiffEditor","DiffEditor","customTheme","base","inherit","rules","colors","isMonacoTheme","value","EDITOR_THEME_NAME","useEditorTheme","$","_c","themePreference","themePreferences","useThemePreference","t0","t1","theme","id","preference","find","monacoTheme","useApplyEditorTheme","editorTheme","monacoRef","useRef","monaco","current","editor","defineTheme","setTheme","useEffect","t2","monaco_0","configureCodeEditor","addCommand","KeyMod","CtrlCmd","KeyCode","KeyS","getAction","run","CodeEditor","props","defaultCode","code","showLineNumbers","isEditable","language","onChange","disableScroll","undefined","applyEditorTheme","Symbol","for","enabled","t3","t4","scrollbar","vertical","horizontal","useShadows","alwaysConsumeMouseWheel","scrollBeyondLastLine","mouseWheelScrollSensitivity","overviewRulerLanes","t5","tabSize","minimap","fontSize","readOnly","lineNumbers","options","t6","t7","t8","t9","jsx","Suspense","CodeDiffEditor","original","modified","originalEditable","renderSideBySide","useInlineViewWhenSpaceIsTooSmall","_","imagePreviewMimeTypes","avif","bmp","gif","heic","ico","jpeg","jpg","png","tif","tiff","webp","imagePreviewExtensions","Object","keys","getFileExtension","filePath","extension","split","pop","toLowerCase","getImagePreviewMimeType","isImagePreviewPath","LARGE_DIFF_LINE_THRESHOLD","generatedDiffFileNames","Set","binaryDiffExtensions","getDiffLineCount","input","additions","deletions","isLargeDiffContent","isGeneratedDiffPath","path","fileName","has","endsWith","isBinaryDiffPath","ext","length","isImageDiffPath","createDiffCardBodyModel","diff","oldContent","newContent","isLargeDiff","hasOptedIntoLargeDiff","onShowFullDiff","diffViewMode","buildViewData","oldImageSrc","getImagePreviewSource","newImageSrc","kind","oldSrc","newSrc","isImage","renderedLineCount","diffViewData","buildDiffViewData","oldPath","newPath","sideBySide","content","startsWith","DiffCardBody","model","Box","ImageDiffPreview","BinaryDiffPlaceholder","LargeDiffPlaceholder","md","ImageDiffPanel","Grid","label","src","fallback","Text","Image","jsxs","Button","EmptyState","title","DeferredDiffLoad","actionLabel","isLoadingDiff","onAction","loadingDiffContentRows","LoadingDiffContent","Stack","map","_temp","row","Skeleton","buildDeferredDiffLoadState","isGeneratedDiff","loadError","canLoadDiff","onLoadDiff","DiffCardContent","isExpanded","isBinaryDiff","hasDiffContent","shouldAutoLoadDiff","shouldAutoLoadDiffContent","isSelected","requestedPath","resolveRequestedDiffPath","shouldShowDiffStats","resolveDiffFilePath","useDiffContentLoader","setLoadingDiff","useState","setRequestedPath","setLoadError","loadDiff","Boolean","DiffCard","onToggleExpanded","onSelect","blocksDiffContentLoad","borderColor","DiffCardHeader","t10","t11","t12","showStats","isCopied","setIsCopied","copyResetTimeoutRef","window","clearTimeout","navigator","clipboard","writeText","setTimeout","copyFilePath","bg","event","stopPropagation","ChevronDown","ChevronRight","IconButton","t13","change","t14","t15","t16","t17","opacity","pointerEvents","t18","t19","t20","event_0","t21","Check","Copy","t22","t23","Tooltip","t24","t25","t26","DiffBubble","t27","DiffDrawerEmptyState","ScrollArea","p","spaceY","CARD_HEADER_HEIGHT","CARD_BODY_LINE_HEIGHT","HUNK_ROW_HEIGHT","COLLAPSED_CARD_HEIGHT","DEFERRED_BODY_HEIGHT","IMAGE_BODY_HEIGHT","ITEM_GAP_HEIGHT","deferredCardHeight","estimateDiffCardHeight","isCollapsed","unifiedContentRows","splitContentRows","hunkRows","contentRows","bodyHeight","getDiffPath","PINNED_DIFF_LOOKBEHIND_COUNT","resolveSelectedScrollState","diffs","selectedDiffPath","collapsedPaths","expansionCommand","completedScrollCommandId","selectedScrollPath","selectedScrollSourceKey","selectedScrollCommandId","action","hasCompletedSelectedScroll","selectedScrollKey","selectedScrollExpansionState","selectedScrollIndex","findIndex","shouldPinSelectedScrollIndex","direction","includePinnedDiffIndexes","indexes","includes","pinnedStartIndex","Math","max","pinnedIndexes","Array","from","index","sort","a","b","SETTLE_FRAME_COUNT","MAX_ALIGNMENT_FRAMES","useSelectedDiffScroll","scrollRef","virtualizerRef","suppressScrollAdjustRef","setCompletedScrollCommandId","virtualizer","scrollElement","frameIds","cancelledByUserScroll","stopAligning","cancelSelectedScroll","alignmentFrames","alignSelectedDiff","scrollToIndex","align","push","requestAnimationFrame","addEventListener","passive","removeEventListener","frameId","cancelAnimationFrame","useLayoutEffect","INITIAL_EXPANDED_DIFF_COUNT","INITIAL_COLLAPSED_LINE_THRESHOLD","buildInitialCollapsedPaths","filter","lineCount","buildAllCollapsedPaths","toggleCollapsedPath","next","delete","add","resolveCollapsedPathsForSelectedDiff","some","resolveCollapsedPathsForNavigation","previousNavigatedPath","expanded","DiffDrawer","onSelectDiffPath","onExpansionStateChange","reportedExpansionStateRef","lastNavigatedPathRef","setCollapsedPaths","largeDiffOptInPaths","setLargeDiffOptInPaths","useVirtualizer","count","getScrollElement","estimateSize","getItemKey","overscan","rangeExtractor","range","defaultRangeExtractor","shouldAdjustScrollPositionOnItemSizeChange","_item","_delta","instance","isScrolling","prev","navigatedPath","expansionState","allExpanded","size","allCollapsed","every","reportedExpansionState","toggleExpanded","showFullDiff","virtualItems","getVirtualItems","style","overflowAnchor","height","getTotalSize","virtualItem","measureElement","top","start","key","normalizeChangedFilePath","segment","trim","join","sortNodes","nodes","left","right","type","name","localeCompare","forEach","node","children","dedupePaths","paths","buildFlatTree","buildChangedFilesTree","mode","treeById","Map","rootNodes","segments","parentPath","parentNode","currentPath","isFile","nodeId","existingNode","get","nextNode","set","collectExpandedFolderIds","folderIds","visit","items","item","collectNestedFileOrder","orderedPaths","treeNodes","replace","sortPathsByViewMode","useDiffViewerStore","create","isTreePanelOpen","viewMode","searchQuery","selectedPath","expandedFolderIds","setTreePanelOpen","toggleTreePanel","state","setViewMode","setDiffViewMode","setSearchQuery","setSelectedPath","setExpandedFolderIds","toggleFolder","folderId","expandAll","collapseAll","SelectionIndicator","selected","DiffViewerMenuItem","icon","disabled","onActivate","ListRow","DiffViewerOptionsMenu","hasFilePaths","isExpandAllDisabled","isCollapseAllDisabled","onToggleTreePanel","onViewModeChange","onDiffViewModeChange","onExpandAll","onCollapseAll","Menu","Settings2","PanelLeftClose","PanelLeftOpen","Fragment","ListTree","List","Rows2","SquareSplitHorizontal","ChevronsUpDown","ChevronsDownUp","changeLabels","added","copied","deleted","permissionChange","renamed","changeColors","changeSemanticStyles","color","backgroundColor","FileChangeBadge","colorPalette","colorProps","Badge","getFilePathParts","lastSlashIndex","lastIndexOf","dirPath","slice","renderFileLabel","toTreeListNodes","onSelectPath","resolveFileIcon","changeByPath","isContainer","fileIcon","Icon","FileText","iconColor","endContent","FileListPanel","onSearchQueryChange","onToggleFolder","fileTree","emptyTitle","Search","target","Header","InputGroup","Input","overflowX","TreeList","buildChangeByPath","sumDiffStats","reduce","total","buildFilteredDiffs","normalizedSearchQuery","matchingDiffs","orderByPath","leftOrder","Number","MAX_SAFE_INTEGER","rightOrder","resolveSelectedPath","preferredPaths","fallbackPaths","loadingDiffItems","DiffViewerLoading","DiffViewer","changedFilePaths","defaultSelectedPath","loading","diffExpansionCommand","setDiffExpansionCommand","diffExpansionState","setDiffExpansionState","allFilesExpanded","emptyDiffTitle","filePaths","filteredDiffPathKey","filteredDiffPaths","filteredDiffs","filteredFilePathKey","filteredFilePaths","hasDiffs","hasExpandableItems","resolvedSelectedPath","showDiffEmptyState","totalDiff","diffPaths","folderId_0","allFilesCollapsed","allDiffsExpanded","allDiffsCollapsed","filePaths_0","tree","diffPaths_0","filePaths_1","_temp2","expandAllFilesAndDiffs","_temp3","collapseAllFilesAndDiffs","path_0","currentIndex","indexOf","nextIndex","current_1","selectChangedFilePath","HStack","diffPanel","collapsed","Flex","ResizableSplitLayout","current_0"],"mappings":";;;;;;;;;;;;;;AAMO,MAAMA,KAA4BA,CAACC,MAAuC;AAC/E,MAAIC;AAEJ,SAAO,OACLA,MAAmBD,EAAAA,GACZC;AAEX,GAEaC,KAAoBH,GAA0B,MACzD,OAAO,8BAAkB,EAAEI,KAAMC,CAAAA,MAAWA,EAAOC,kBAAkB,CACvE,GAEMC,KAAeC,GAAK,aACxB,MAAML,GAAAA,GACC;AAAA,EAAEM,SAASC;AAAAA,EACnB,GAEKC,KAAmBH,GAAK,aAC5B,MAAML,GAAAA,GACC;AAAA,EAAEM,SAASG;AAAAA,EACnB,GAEYC,KAAc;AAAA,EACzBC,MAAM;AAAA,EACNC,SAAS;AAAA,EACTC,OAAO,CAAA;AAAA,EACPC,QAAQ;AAAA,IACN,qBAAqB;AAAA,IACrB,qBAAqB;AAAA,IACrB,kCAAkC;AAAA,IAClC,2BAA2B;AAAA,IAC3B,+BAA+B;AAAA,IAC/B,gCAAgC;AAAA,IAChC,sCAAsC;AAAA,EAAA;AAE1C,GAEMC,KAAgBA,CAACC,MACrB,OAAOA,KAAU,YAAYA,MAAU,QAAQ,UAAUA,KAAS,YAAYA,GAS1EC,KAAoB,YAEpBC,KAAiBA,MAAA;AAAA,QAAAC,IAAAC,EAAA,CAAA,GACrB;AAAA,IAAAC,iBAAAA;AAAAA,IAAAC,kBAAAA;AAAAA,EAAAA,IAA8CC,GAAAA;AAAqB,MAAAC;AAAA,MAAAL,EAAA,CAAA,MAAAE,KAAAF,SAAAG,GAAA;AAAA,QAAAG;AAAA,IAAAN,SAAAE,KAC1BI,IAAAC,CAAAA,MAAWA,EAAKC,OAAQN,GAAeF,OAAAE,GAAAF,OAAAM,KAAAA,IAAAN,EAAA,CAAA;AAAhF,UAAAS,IAAmBN,EAAgBO,KAAMJ,CAAuC;AACzED,IAAAA,IAAAT,GAAca,GAAUE,WAAoD,IAAnCF,EAAUE,cAAnDpB,IAA6ES,OAAAE,GAAAF,OAAAG,GAAAH,OAAAK;AAAAA,EAAA;AAAAA,IAAAA,IAAAL,EAAA,CAAA;AAAA,SAA7EK;AAA6E,GAGhFO,KAAsBC,CAAAA,MAAA;AAAA,QAAAb,IAAAC,EAAA,CAAA,GAC1Ba,IAAkBC,EAAyB,IAAI;AAAE,MAAAV,GAAAC;AAAA,EAAAN,SAAAa,KAEvCR,IAAAA,MAAA;AACR,UAAAW,IAAeF,EAASG;AACxB,IAAKD,MAELA,EAAME,OAAOC,YAAarB,IAAmBe,CAAW,GACxDG,EAAME,OAAOE,SAAUtB,EAAiB;AAAA,EAAC,GACxCQ,IAAA,CAACO,CAAW,GAACb,OAAAa,GAAAb,OAAAK,GAAAL,OAAAM,MAAAD,IAAAL,EAAA,CAAA,GAAAM,IAAAN,EAAA,CAAA,IANhBqB,GAAUhB,GAMPC,CAAa;AAAC,MAAAgB;AAAA,SAAAtB,SAAAa,KAEVS,IAAAC,CAAAA,MAAA;AACLT,IAAAA,EAASG,UAAWD,GACpBA,EAAME,OAAOC,YAAarB,IAAmBe,CAAW,GACxDG,EAAME,OAAOE,SAAUtB,EAAiB;AAAA,EAAC,GAC1CE,OAAAa,GAAAb,OAAAsB,KAAAA,IAAAtB,EAAA,CAAA,GAJMsB;AAIN,GAGUE,KAAsBA,CACjCN,GAIAF,MACG;AACHE,EAAAA,EAAOO,WAAWT,EAAOU,OAAOC,UAAUX,EAAOY,QAAQC,MAAM,YAAY;AACzE,UAAMX,EAAOY,UAAU,8BAA8B,GAAGC,IAAAA;AAAAA,EAC1D,CAAC;AACH,GAYaC,KAAaC,CAAAA,MAAA;AAAA,QAAAjC,IAAAC,EAAA,EAAA,GACxB;AAAA,IAAAiC,aAAAA;AAAAA,IAAAC,MAAAA;AAAAA,IAAAC,iBAAAA;AAAAA,IAAAC,YAAAA;AAAAA,IAAAC,UAAAjC;AAAAA,IAAAkC,UAAAA;AAAAA,IAAAC,eAAAA;AAAAA,EAAAA,IAA6GP,GAArDK,IAAAjC,MAAAoC,SAAA,eAAApC,GACxDQ,IAAoBd,GAAAA,GACpB2C,IAAyB9B,GAAoBC,CAAW;AAAE,MAAAP;AAAA,EAAAN,EAAA,CAAA,MAAA2C,uBAAAC,IAAA,2BAAA,KAI/CtC,IAAA;AAAA,IAAAuC,SACE;AAAA,EAAA,GACV7C,OAAAM,KAAAA,IAAAN,EAAA,CAAA;AAES,QAAAsB,KAACe,GACES,IAAAV,IAAA,OAAA;AAA8B,MAAAW;AAAA,EAAA/C,SAAAwC,KACvCO,IAAAP,IAAA;AAAA,IAAAQ,WAEa;AAAA,MAAAC,UACC;AAAA,MAAiBC,YACf;AAAA,MAAiBC,YACjB;AAAA,MAAKC,yBACQ;AAAA,IAAA;AAAA,IAC1BC,sBACqB;AAAA,IAAKC,6BACE;AAAA,IAACC,oBACV;AAAA,EAAA,IAVtB,CAAA,GAYEvD,OAAAwC,GAAAxC,OAAA+C,KAAAA,IAAA/C,EAAA,CAAA;AAAA,MAAAwD;AAAA,EAAAxD,EAAA,CAAA,MAAAsB,KAAAtB,SAAA8C,KAAA9C,EAAA,CAAA,MAAA+C,KApBQS,IAAA;AAAA,IAAAC,SACL;AAAA,IAACC,SACDpD;AAAAA,IAERqD,UACS;AAAA,IAAEC,UACFtC;AAAAA,IAAWuC,aACRf;AAAAA,IAA8B,GACvCC;AAAAA,EAAAA,GAaL/C,OAAAsB,GAAAtB,OAAA8C,GAAA9C,OAAA+C,GAAA/C,OAAAwD,KAAAA,IAAAxD,EAAA,CAAA;AArBD,QAAA8D,IAAgBN;AAqBL,MAAAO;AAAA,EAAA/D,SAAAuC,KAYKwB,IAAAlE,CAAAA,MAAA;AACR0C,IAAAA,IAAW1C,KAAA,EAAW;AAAA,EAAC,GACxBG,OAAAuC,GAAAvC,OAAA+D,KAAAA,IAAA/D,EAAA,CAAA;AAAA,MAAAgE,GAAAC;AAAA,EAAAjE,SAAA0C,KACYsB,IAAAhD,CAAAA,MAAA;AACX0B,IAAAA,EAAiB1B,CAAM;AAAA,EAAC,GAEjBiD,IAAAA,CAAA/C,GAAAK,MAAA;AACPmB,IAAAA,EAAiB1B,CAAM,GACvBQ,GAAoBN,GAAQF,CAAM;AAAA,EAAC,GACpChB,OAAA0C,GAAA1C,QAAAgE,GAAAhE,QAAAiE,MAAAD,IAAAhE,EAAA,EAAA,GAAAiE,IAAAjE,EAAA,EAAA;AAAA,MAAAkE;AAAA,SAAAlE,EAAA,EAAA,MAAAmC,KAAAnC,EAAA,EAAA,MAAAkC,KAAAlC,EAAA,EAAA,MAAAsC,KAAAtC,UAAA8D,KAAA9D,EAAA,EAAA,MAAA+D,KAAA/D,EAAA,EAAA,MAAAgE,KAAAhE,EAAA,EAAA,MAAAiE,KAlBLC,IAAA,gBAAAC,EAACC,IAAA,EAAmB,UAAA,MAClB,UAAA,gBAAAD,EAAClF,MACO,OAAA,QACC,QAAA,QACGqD,UAAAA,GACIJ,cAAAA,GACPC,OAAAA,GACArC,OAAAA,IACEgE,SAAAA,GACC,UAAAC,GAGG,aAAAC,GAGJ,SAAAC,EAAAA,CAGR,EAAA,CAEL,GAAWjE,QAAAmC,GAAAnC,QAAAkC,GAAAlC,QAAAsC,GAAAtC,QAAA8D,GAAA9D,QAAA+D,GAAA/D,QAAAgE,GAAAhE,QAAAiE,GAAAjE,QAAAkE,KAAAA,IAAAlE,EAAA,EAAA,GApBXkE;AAoBW,GAYFG,KAAiBpC,CAAAA,MAAA;AAAA,QAAAjC,IAAAC,EAAA,EAAA,GAC5B;AAAA,IAAAqE,UAAAA;AAAAA,IAAAC,UAAAA;AAAAA,IAAAnC,iBAAAA;AAAAA,IAAAE,UAAAjC;AAAAA,IAAAmC,eAAAA;AAAAA,EAAAA,IAAwFP,GAA3CK,IAAAjC,MAAAoC,SAAA,eAAApC,GAC7CQ,IAAoBd,GAAAA,GACpB2C,IAAyB9B,GAAoBC,CAAW;AAAE,MAAAP;AAAA,EAAAN,EAAA,CAAA,MAAA2C,uBAAAC,IAAA,2BAAA,KAI/CtC,IAAA;AAAA,IAAAuC,SACE;AAAA,EAAA,GACV7C,OAAAM,KAAAA,IAAAN,EAAA,CAAA;AAMY,QAAAsB,IAAAc,IAAA,OAAA;AAA8B,MAAAU;AAAA,EAAA9C,SAAAwC,KACvCM,IAAAN,IAAA;AAAA,IAAAQ,WAEa;AAAA,MAAAC,UACC;AAAA,MAAiBC,YACf;AAAA,MAAiBC,YACjB;AAAA,MAAKC,yBACQ;AAAA,IAAA;AAAA,IAC1BC,sBACqB;AAAA,IAAKC,6BACE;AAAA,IAACC,oBACV;AAAA,EAAA,IAVtB,CAAA,GAYEvD,OAAAwC,GAAAxC,OAAA8C,KAAAA,IAAA9C,EAAA,CAAA;AAAA,MAAA+C;AAAA,EAAA/C,EAAA,CAAA,MAAAsB,KAAAtB,SAAA8C,KAvBQC,IAAA;AAAA,IAAAU,SACL;AAAA,IAACC,SACDpD;AAAAA,IAERqD,UACS;AAAA,IAAEC,UACF;AAAA,IAAIY,kBACI;AAAA,IAAKC,kBACL;AAAA,IAAIC,kCACY;AAAA,IAAIb,aACzBvC;AAAAA,IAA8B,GACvCwB;AAAAA,EAAAA,GAaL9C,OAAAsB,GAAAtB,OAAA8C,GAAA9C,OAAA+C,KAAAA,IAAA/C,EAAA,CAAA;AAxBD,QAAA8D,IAAgBf;AAwBL,MAAAS,GAAAO;AAAA,EAAA/D,SAAA0C,KAYQc,IAAAxC,CAAAA,MAAA;AACX0B,IAAAA,EAAiB1B,CAAM;AAAA,EAAC,GAEjB+C,IAAAA,CAAAY,GAAApD,MAAA;AACPmB,IAAAA,EAAiB1B,CAAM;AAAA,EAAC,GACzBhB,OAAA0C,GAAA1C,OAAAwD,GAAAxD,OAAA+D,MAAAP,IAAAxD,EAAA,CAAA,GAAA+D,IAAA/D,EAAA,CAAA;AAAA,MAAAgE;AAAA,SAAAhE,SAAAsC,KAAAtC,EAAA,EAAA,MAAAuE,KAAAvE,EAAA,EAAA,MAAA8D,KAAA9D,EAAA,EAAA,MAAAsE,KAAAtE,UAAAwD,KAAAxD,EAAA,EAAA,MAAA+D,KAdLC,IAAA,gBAAAG,EAACC,MAAmB,UAAA,MAClB,4BAAC/E,IAAA,EACO,OAAA,QACC,QAAA,QACGiD,UAAAA,GACAgC,UAAAA,GACAC,UAAAA,GACHzE,OAAAA,IACEgE,SAAAA,GACI,aAAAN,GAGJ,SAAAO,GAER,EAAA,CAEL,GAAW/D,OAAAsC,GAAAtC,QAAAuE,GAAAvE,QAAA8D,GAAA9D,QAAAsE,GAAAtE,QAAAwD,GAAAxD,QAAA+D,GAAA/D,QAAAgE,KAAAA,IAAAhE,EAAA,EAAA,GAhBXgE;AAgBW,GCnNFY,KAAwB;AAAA,EACnCC,MAAM;AAAA,EACNC,KAAK;AAAA,EACLC,KAAK;AAAA,EACLC,MAAM;AAAA,EACNC,KAAK;AAAA,EACLC,MAAM;AAAA,EACNC,KAAK;AAAA,EACLC,KAAK;AAAA,EACLC,KAAK;AAAA,EACLC,MAAM;AAAA,EACNC,MAAM;AACR,GAEaC,KAAyBC,OAAOC,KAAKd,EAAqB,GAE1De,KAAmBA,CAACC,MAAqB;AAEpD,QAAMC,KADWD,EAASE,MAAM,OAAO,EAAEC,SAASH,GACvBE,MAAM,GAAG,EAAEC,IAAAA;AACtC,SAAOF,IAAYA,EAAUG,YAAAA,IAAgB;AAC/C,GAEaC,KAA0BA,CAACL,MAAqB;AAC3D,QAAMC,IAAYF,GAAiBC,CAAQ;AAC3C,SAAOhB,GAAsBiB,CAA+C,KAAK;AACnF,GAEaK,KAAqBA,CAACN,MAAqBK,GAAwBL,CAAQ,MAAM,MCzBjFO,KAA4B,KAEnCC,yBAA6BC,IAAI,CAAC,YAAY,aAAa,qBAAqB,kBAAkB,WAAW,CAAC,GAI9GC,KAAuB,oBAAID,IAAI,CACnC,GAAGb,IACH,OACA,OACA,OACA,MACA,OACA,OACA,MACA,OACA,OACA,MACA,SACA,QACA,SACA,OACA,OACA,OACA,OACA,OACA,OACA,QACA,QACA,OACA,OACA,QACA,SACA,KAAK,CACN,GAEYe,KAAmBA,CAACC,OAMvBA,EAAMC,aAAa,MAAMD,EAAME,aAAa,IAGzCC,KAAqBA,CAACH,MAM1BD,GAAiBC,CAAK,IAAIL,IAGtBS,KAAsBA,CAACC,MAAiB;AACnD,QAAMC,IAAWD,EAAKf,MAAM,OAAO,EAAEC,SAASc;AAE9C,SAAOT,GAAuBW,IAAID,CAAQ,KAAKA,EAASE,SAAS,SAAS,KAAKF,EAASE,SAAS,eAAe;AAClH,GAEaC,KAAmBA,CAACJ,MAAiB;AAChD,QAAMK,IAAMvB,GAAiBkB,CAAI;AACjC,SAAOK,EAAIC,SAAS,KAAKb,GAAqBS,IAAIG,CAAG;AACvD,GAEaE,KAAkBlB,IC5ClBmB,KAA0BA,CAACb,MAAkC;AACxE,QAAM;AAAA,IACJc,MAAAA;AAAAA,IACA1B,UAAAA;AAAAA,IACA2B,YAAAA;AAAAA,IACAC,YAAAA;AAAAA,IACAC,aAAAA;AAAAA,IACAC,uBAAAA;AAAAA,IACAC,gBAAAA;AAAAA,IACAC,cAAAA,IAAe;AAAA,IACfC,eAAAA;AAAAA,EAAAA,IACErB;AAEJ,MAAIS,GAAiBrB,CAAQ,GAAG;AAC9B,UAAMkC,IAAcC,GAAsBR,CAAU,GAC9CS,IAAcD,GAAsBP,CAAU;AACpD,WAAIJ,GAAgBxB,CAAQ,MAAMkC,KAAeE,KACxC;AAAA,MACLC,MAAM;AAAA,MACNrC,UAAAA;AAAAA,MACAsC,QAAQJ;AAAAA,MACRK,QAAQH;AAAAA,IAAAA,IAIL;AAAA,MACLC,MAAM;AAAA,MACNrC,UAAAA;AAAAA,MACAwC,SAAShB,GAAgBxB,CAAQ;AAAA,IAAA;AAAA,EAErC;AAEA,SAAI6B,KAAe,CAACC,IACX;AAAA,IACLO,MAAM;AAAA,IACNrC,UAAAA;AAAAA,IACAyC,mBAAmB9B,GAAiBe,CAAI;AAAA,IACxCK,gBAAAA;AAAAA,EAAAA,IAUG;AAAA,IACLM,MAAM;AAAA,IACNK,eARoBT,KAAiBU,IAAmB;AAAA,MACxDjE,UAAUiD;AAAAA,MACVhD,UAAUiD;AAAAA,MACVgB,SAASlB,EAAKkB;AAAAA,MACdC,SAASnB,EAAKmB;AAAAA,IAAAA,CACf;AAAA,IAICC,YAAYd,MAAiB;AAAA,EAAA;AAEjC,GAEMG,KAAwBA,CAACY,MAAqBA,EAAQC,WAAW,aAAa,IAAID,IAAU,IAErFE,KAAe5G,CAAAA,MAAA;AAAA,QAAAjC,IAAAC,EAAA,EAAA,GAC1B;AAAA,IAAAqH,MAAAA;AAAAA,IAAA1B,UAAAA;AAAAA,IAAA2B,YAAAA;AAAAA,IAAAC,YAAAA;AAAAA,IAAAC,aAAAA;AAAAA,IAAAC,uBAAAA;AAAAA,IAAAC,gBAAAA;AAAAA,IAAAC,cAAAvH;AAAAA,EAAAA,IASI4B,GADF2F,IAAAvH,MAAAoC,SAAA,YAAApC;AAAwB,MAAAC;AAAA,EAAAN,EAAA,CAAA,MAAAsH,KAAAtH,EAAA,CAAA,MAAA4H,KAAA5H,EAAA,CAAA,MAAA4F,KAAA5F,EAAA,CAAA,MAAA0H,KAAA1H,EAAA,CAAA,MAAAyH,KAAAzH,EAAA,CAAA,MAAAwH,KAAAxH,EAAA,CAAA,MAAAuH,KAAAvH,SAAA2H,KAEZrH,IAAA+G,GAAwB;AAAA,IAAAC,MAAAA;AAAAA,IAAA1B,UAAAA;AAAAA,IAAA2B,YAAAA;AAAAA,IAAAC,YAAAA;AAAAA,IAAAC,aAAAA;AAAAA,IAAAC,uBAAAA;AAAAA,IAAAC,gBAAAA;AAAAA,IAAAC,cAAAA;AAAAA,EAAAA,CASrC,GAAC5H,OAAAsH,GAAAtH,OAAA4H,GAAA5H,OAAA4F,GAAA5F,OAAA0H,GAAA1H,OAAAyH,GAAAzH,OAAAwH,GAAAxH,OAAAuH,GAAAvH,OAAA2H,GAAA3H,OAAAM,KAAAA,IAAAN,EAAA,CAAA;AATF,QAAA8I,IAAcxI;AASX,MAAAgB;AAAA,SAAAtB,EAAA,CAAA,MAAAsH,KAAAtH,EAAA,EAAA,MAAA8I,EAAAR,gBAAAtI,EAAA,EAAA,MAAA8I,EAAAlD,YAAA5F,EAAA,EAAA,MAAA8I,EAAAV,WAAApI,EAAA,EAAA,MAAA8I,EAAAb,QAAAjI,UAAA8I,EAAAX,UAAAnI,EAAA,EAAA,MAAA8I,EAAAZ,UAAAlI,EAAA,EAAA,MAAA8I,EAAAnB,kBAAA3H,EAAA,EAAA,MAAA8I,EAAAT,qBAAArI,EAAA,EAAA,MAAA8I,EAAAJ,cAAA1I,EAAA,EAAA,MAAAwH,KAAAxH,UAAAuH,KAGDjG,IAAA,gBAAA6C,EAAC4E,GAAA,EAAO,IAAA,MAAwB,oBAAA,MAAc,UAAA,UAC3CD,UAAAA,EAAKb,SAAU,WACd,gBAAA9D,EAAC7E,IAAA,EACWiI,UAAAA,GACAC,UAAAA,GACD,SAAAF,EAAIkB,SACJ,SAAAlB,EAAImB,SACD,YAAAK,EAAKJ,YACX,MAAAI,EAAKR,cAAa,IAExBQ,EAAKb,SAAU,UACjB,gBAAA9D,EAAC6E,IAAA,EAAyB,QAAAF,EAAKZ,QAAiB,QAAAY,EAAKX,OAAAA,CAAO,IAC1DW,EAAKb,SAAU,WACjB,gBAAA9D,EAAC8E,IAAA,EAA+B,SAAAH,EAAKV,QAAAA,CAAQ,IAE7C,gBAAAjE,EAAC+E,IAAA,EACW,UAAAJ,EAAKlD,UACI,mBAAAkD,EAAKT,mBACR,gBAAAS,EAAKnB,gBAAe,GAG1C,GAAM3H,OAAAsH,GAAAtH,EAAA,EAAA,IAAA8I,EAAAR,cAAAtI,EAAA,EAAA,IAAA8I,EAAAlD,UAAA5F,EAAA,EAAA,IAAA8I,EAAAV,SAAApI,EAAA,EAAA,IAAA8I,EAAAb,MAAAjI,EAAA,EAAA,IAAA8I,EAAAX,QAAAnI,EAAA,EAAA,IAAA8I,EAAAZ,QAAAlI,EAAA,EAAA,IAAA8I,EAAAnB,gBAAA3H,EAAA,EAAA,IAAA8I,EAAAT,mBAAArI,EAAA,EAAA,IAAA8I,EAAAJ,YAAA1I,QAAAwH,GAAAxH,QAAAuH,GAAAvH,QAAAsB,KAAAA,IAAAtB,EAAA,EAAA,GArBNsB;AAqBM,GASJ0H,KAAmB/G,CAAAA,MAAA;AAAA,QAAAjC,IAAAC,EAAA,CAAA,GACvB;AAAA,IAAAiI,QAAAA;AAAAA,IAAAC,QAAAA;AAAAA,EAAAA,IAA2BlG;AAAM,MAAA5B;AAAA,EAAAL,EAAA,CAAA,MAAA2C,uBAAAC,IAAA,2BAAA,KAIZvC,IAAA;AAAA,IAAAb,MAAQ;AAAA,IAAK2J,IAAM;AAAA,EAAA,GAAWnJ,OAAAK,KAAAA,IAAAL,EAAA,CAAA;AAAA,MAAAM;AAAA,EAAAN,SAAAkI,KAO/C5H,sBAAC8I,IAAA,EAAqB,OAAA,OAAWlB,QAAiB,UAAA,gBAAc,GAAGlI,OAAAkI,GAAAlI,OAAAM,KAAAA,IAAAN,EAAA,CAAA;AAAA,MAAAsB;AAAA,EAAAtB,SAAAmI,KACnE7G,sBAAC8H,IAAA,EAAqB,OAAA,OAAWjB,QAAiB,UAAA,gBAAc,GAAGnI,OAAAmI,GAAAnI,OAAAsB,KAAAA,IAAAtB,EAAA,CAAA;AAAA,MAAA8C;AAAA,SAAA9C,EAAA,CAAA,MAAAM,KAAAN,SAAAsB,KATrEwB,sBAACuG,IAAA,EACkB,iBAAAhJ,GACb,KAAA,MACF,GAAA,MACQ,WAAA,aACE,aAAA,iBACT,IAAA,MAEHC,UAAAA;AAAAA,IAAAA;AAAAA,IACAgB;AAAAA,EAAAA,GACF,GAAOtB,OAAAM,GAAAN,OAAAsB,GAAAtB,OAAA8C,KAAAA,IAAA9C,EAAA,CAAA,GAVP8C;AAUO,GAULsG,KAAiBnH,CAAAA,MAAA;AAAA,QAAAjC,IAAAC,EAAA,CAAA,GACrB;AAAA,IAAAqJ,OAAAA;AAAAA,IAAAC,KAAAA;AAAAA,IAAAC,UAAAA;AAAAA,EAAAA,IAAiCvH;AAAM,MAAA5B;AAAA,EAAAL,SAAAsJ,KAInCjJ,IAAA,gBAAA8D,EAACsF,GAAA,EACI,IAAA,MACA,IAAA,OACO,WAAA,kBACJ,OAAA,YACO,cAAA,aACD,aAAA,iBAEXH,UAAAA,GACH,GAAOtJ,OAAAsJ,GAAAtJ,OAAAK,KAAAA,IAAAL,EAAA,CAAA;AAAA,MAAAM;AAAA,EAAAN,EAAA,CAAA,MAAAwJ,KAAAxJ,SAAAsJ,KAAAtJ,EAAA,CAAA,MAAAuJ,KACPjJ,IAAA,gBAAA6D,EAAC4E,GAAA,EAAY,SAAA,QAAkB,YAAA,UAAc,MAAA,SAAU,GAAA,MACpDQ,UAAAA,IACC,gBAAApF,EAACuF,IAAA,EAAWH,KAAAA,GAAU,KAAA,GAAGD,CAAK,eAAoB,MAAA,SAAa,MAAA,QAAiB,WAAA,UAAA,CAAS,IAEzF,gBAAAnF,EAACsF,GAAA,EAAW,OAAA,YAAqB,WAAA,kBAC9BD,aACH,GAEJ,GAAMxJ,OAAAwJ,GAAAxJ,OAAAsJ,GAAAtJ,OAAAuJ,GAAAvJ,OAAAM,KAAAA,IAAAN,EAAA,CAAA;AAAA,MAAAsB;AAAA,SAAAtB,EAAA,CAAA,MAAAK,KAAAL,SAAAM,KAnBRgB,IAAA,gBAAAqI,EAACZ,GAAA,EAAW,QAAA,aAAwB,aAAA,iBAA6B,cAAA,MAAc,UAAA,UAAY,IAAA,aAAiB,MAAA,KAC1G1I,UAAAA;AAAAA,IAAAA;AAAAA,IAUAC;AAAAA,EAAAA,GASF,GAAMN,OAAAK,GAAAL,OAAAM,GAAAN,OAAAsB,KAAAA,IAAAtB,EAAA,CAAA,GApBNsB;AAoBM,GAUJ4H,KAAuBjH,CAAAA,MAAA;AAAA,QAAAjC,IAAAC,EAAA,CAAA,GAC3B;AAAA,IAAA2F,UAAAA;AAAAA,IAAA+B,gBAAAA;AAAAA,EAAAA,IAAqC1F;AAAM,MAAA5B;AAAA,EAAAL,EAAA,CAAA,MAAA4F,KAAA5F,SAAA2H,KAKpCtH,IAAAsH,IACC,gBAAAxD,EAACyF,IAAA,EAAY,MAAA,MAAa,SAAA,WAAsB,cAAA,wBAAwBhE,CAAQ,IAAa+B,SAAAA,GAAgB,4BAE7G,IAHD,MAIO3H,OAAA4F,GAAA5F,OAAA2H,GAAA3H,OAAAK,KAAAA,IAAAL,EAAA,CAAA;AAAA,MAAAM;AAAA,SAAAN,SAAAK,KANZC,sBAACyI,GAAA,EAAM,GAAA,MAAe,WAAA,aAAwB,aAAA,iBAAmB,IAAA,MAC/D,4BAACc,IAAA,EAAiB,OAAA,qCAA6C,UAAA,MAC5DxJ,aAKH,GACF,GAAML,OAAAK,GAAAL,OAAAM,KAAAA,IAAAN,EAAA,CAAA,GARNM;AAQM,GAQJ2I,KAAwBhH,CAAAA,MAAA;AAAA,QAAAjC,IAAAC,EAAA,CAAA,GAC5B;AAAA,IAAAmI,SAAAA;AAAAA,EAAAA,IAAoBnG,GACpB6H,IAAc1B,IAAA,8BAAA;AAAqE,MAAA/H;AAAA,SAAAL,SAAA8J,KAGjFzJ,IAAA,gBAAA8D,EAAC4E,GAAA,EAAM,GAAA,MAAe,WAAA,aAAwB,aAAA,iBAAmB,IAAA,MAC/D,UAAA,gBAAA5E,EAAC0F,IAAA,EAAkBC,OAAAA,GAAgB,UAAA,MAAI,GACzC,GAAM9J,OAAA8J,GAAA9J,OAAAK,KAAAA,IAAAL,EAAA,CAAA,GAFNK;AAEM,GC/MG0J,KAAmB9H,CAAAA,MAAA;AAAA,QAAAjC,IAAAC,EAAA,CAAA,GAC9B;AAAA,IAAA6J,OAAAA;AAAAA,IAAAE,aAAAA;AAAAA,IAAAC,eAAAA;AAAAA,IAAAC,UAAAA;AAAAA,EAAAA,IAAwDjI;AAAM,MAAA5B;AAAA,EAAAL,EAAA,CAAA,MAAAgK,KAAAhK,SAAAiK,KAAAjK,EAAA,CAAA,MAAAkK,KAKvD7J,IAAA2J,IACC,gBAAA7F,EAACyF,IAAA,EAAY,MAAA,MAAa,SAAA,WAAmBK,SAAAA,GAAwBC,SAAAA,GAClEF,UAAAA,EAAAA,CACH,IAHD,MAIOhK,OAAAgK,GAAAhK,OAAAiK,GAAAjK,OAAAkK,GAAAlK,OAAAK,KAAAA,IAAAL,EAAA,CAAA;AAAA,MAAAM;AAAA,SAAAN,EAAA,CAAA,MAAAK,KAAAL,SAAA8J,KANZxJ,sBAACyI,GAAA,EAAO,IAAA,MAAO,GAAA,MAAe,WAAA,aAAwB,aAAA,iBACpD,4BAACc,IAAA,EAAkBC,OAAAA,GAAgB,UAAA,MAChCzJ,aAKH,GACF,GAAML,OAAAK,GAAAL,OAAA8J,GAAA9J,OAAAM,KAAAA,IAAAN,EAAA,CAAA,GARNM;AAQM,GAIJ6J,KAAyB,CAAC,SAAS,UAAU,OAAO,GAE7CC,KAAqBA,MAAA;AAAA,QAAApK,IAAAC,EAAA,CAAA;AAAA,MAAAI;AAAA,SAAAL,EAAA,CAAA,MAAA2C,uBAAAC,IAAA,2BAAA,KAChCvC,IAAA,gBAAA8D,EAACkG,MACG,GAAA,SACC,IAAA,MACO,WAAA,aACE,aAAA,iBACV,GAAA,MACE,KAAA,OACC,MAAA,UACK,aAAA,QACC,cAAA,gBAEVF,UAAAA,GAAsBG,IAAKC,EAE3B,EAAA,CACH,GAAQvK,OAAAK,KAAAA,IAAAL,EAAA,CAAA,GAdRK;AAcQ;AAfwB,SAAAkK,GAAAC,GAAA;AAAA,SAa5B,gBAAArG,EAACsG,MAAqB,GAAA,QAAS,GAAA,QAAoB,cAAA,QAApCD,CAAwC;AAAG;ACPhE,MAAME,KAA6BA,CAAClE,MAAsC;AACxE,QAAM;AAAA,IAAEiB,aAAAA;AAAAA,IAAakD,iBAAAA;AAAAA,IAAiBC,WAAAA;AAAAA,IAAWC,aAAAA;AAAAA,IAAaC,YAAAA;AAAAA,IAAYnD,gBAAAA;AAAAA,EAAAA,IAAmBnB;AAC7F,MAAIsD,IAAQ,mCACRE,IAAca,IAAc,cAAcpI,QAC1CyH,IAAqCW,IAAc;AAAM,IAAKC;MAAerI;AAEjF,SAAIgF,MACFqC,IAAQ,qCACRE,IAAca,IAAc,mBAAmBpI,QAC/CyH,IAAWA,MAAM;AACfvC,IAAAA,IAAAA,GACKmD,EAAAA;AAAAA,EACP,IAGEH,MACFb,IAAQ,yCACRE,IAAca,IAAc,cAAcpI,QAC1CyH,IAAWW,IAAc;AAAM,IAAKC,EAAAA;AAAAA,MAAerI,SAGjDmI,MACFd,IAAQ,mCACRE,IAAca,IAAc,cAAcpI,QAC1CyH,IAAWW,IAAc;AAAM,IAAKC,EAAAA;AAAAA,MAAerI,SAG9C;AAAA,IAAEqH,OAAAA;AAAAA,IAAOE,aAAAA;AAAAA,IAAaE,UAAAA;AAAAA,EAAAA;AAC/B,GAEaa,KAAkB9I,CAAAA,MAAA;AAAA,QAAAjC,IAAAC,EAAA,EAAA,GAC7B;AAAA,IAAAqH,MAAAA;AAAAA,IAAA1B,UAAAA;AAAAA,IAAA2B,YAAAA;AAAAA,IAAAC,YAAAA;AAAAA,IAAAwD,YAAAA;AAAAA,IAAAvD,aAAAA;AAAAA,IAAAkD,iBAAAA;AAAAA,IAAAM,cAAAA;AAAAA,IAAAC,gBAAAA;AAAAA,IAAAL,aAAAA;AAAAA,IAAAM,oBAAAA;AAAAA,IAAAP,WAAAA;AAAAA,IAAAX,eAAAA;AAAAA,IAAAa,YAAAA;AAAAA,IAAApD,uBAAAA;AAAAA,IAAAC,gBAAAA;AAAAA,IAAAC,cAAAvH;AAAAA,EAAAA,IAkBI4B,GADF2F,IAAAvH,MAAAoC,SAAA,YAAApC;AAGF,MAAI,CAAC2K;AAAU,WAAS;AAExB,MAAIC,GAAY;AAAA,QAAA3K;AAAA,WAAAN,EAAA,CAAA,MAAAsH,KAAAtH,EAAA,CAAA,MAAA4H,KAAA5H,EAAA,CAAA,MAAA4F,KAAA5F,SAAA0H,KAAA1H,EAAA,CAAA,MAAAwH,KAAAxH,EAAA,CAAA,MAAAuH,KAAAvH,EAAA,CAAA,MAAA2H,KAEZrH,sBAACuI,IAAA,EACOvB,MAAAA,GACI1B,UAAAA,GACE2B,YAAAA,GACAC,YAAAA,GACC,aAAA,IACUE,uBAAAA,GACPC,gBAAAA,GACFC,cAAAA,EAAAA,CAAY,GAC1B5H,OAAAsH,GAAAtH,OAAA4H,GAAA5H,OAAA4F,GAAA5F,OAAA0H,GAAA1H,OAAAwH,GAAAxH,OAAAuH,GAAAvH,OAAA2H,GAAA3H,OAAAM,KAAAA,IAAAN,EAAA,CAAA,GATFM;AAAAA,EASE;AAIN,MAAI,CAAC4K,KAAD,CAAoBC,GAAkB;AAAA,QAAA7K;AAAA,IAAAN,SAAA6K,KAAA7K,EAAA,CAAA,MAAA2K,KAAA3K,EAAA,EAAA,MAAAyH,KAAAzH,EAAA,EAAA,MAAA4K,KAAA5K,UAAA8K,KAAA9K,EAAA,EAAA,MAAA2H,KACCrH,IAAAoK,GAA2B;AAAA,MAAAjD,aAAAA;AAAAA,MAAAkD,iBAAAA;AAAAA,MAAAC,WAAAA;AAAAA,MAAAC,aAAAA;AAAAA,MAAAC,YAAAA;AAAAA,MAAAnD,gBAAAA;AAAAA,IAAAA,CAOnE,GAAC3H,OAAA6K,GAAA7K,OAAA2K,GAAA3K,QAAAyH,GAAAzH,QAAA4K,GAAA5K,QAAA8K,GAAA9K,QAAA2H,GAAA3H,QAAAM,KAAAA,IAAAN,EAAA,EAAA;AAPF,UAAA;AAAA,MAAA8J,OAAAA;AAAAA,MAAAE,aAAAA;AAAAA,MAAAE,UAAAA;AAAAA,IAAAA,IAAyC5J;AAOtC,QAAAgB;AAAA,WAAAtB,EAAA,EAAA,MAAAgK,KAAAhK,EAAA,EAAA,MAAAiK,KAAAjK,EAAA,EAAA,MAAAkK,KAAAlK,UAAA8J,KAGDxI,IAAA,gBAAA6C,EAAC4F,IAAA,EAAwBD,OAAAA,GAAoBE,aAAAA,GAA4BC,eAAAA,GAAyBC,UAAAA,GAAQ,GAAIlK,QAAAgK,GAAAhK,QAAAiK,GAAAjK,QAAAkK,GAAAlK,QAAA8J,GAAA9J,QAAAsB,KAAAA,IAAAtB,EAAA,EAAA,GAA9GsB;AAAAA,EAA8G;AAIlH,MAAI6J,GAAkB;AAAA,QAAA7K;AAAA,WAAAN,EAAA,EAAA,MAAA2C,uBAAAC,IAAA,2BAAA,KACbtC,sBAAC8J,IAAA,EAAkB,GAAGpK,QAAAM,KAAAA,IAAAN,EAAA,EAAA,GAAtBM;AAAAA,EAAsB;AAC9B,MAAAA;AAAA,SAAAN,EAAA,EAAA,MAAAsH,KAAAtH,EAAA,EAAA,MAAA4H,KAAA5H,EAAA,EAAA,MAAA4F,KAAA5F,EAAA,EAAA,MAAA0H,KAAA1H,EAAA,EAAA,MAAAyH,KAAAzH,EAAA,EAAA,MAAAwH,KAAAxH,EAAA,EAAA,MAAAuH,KAAAvH,UAAA2H,KAGCrH,sBAACuI,MACOvB,MAAAA,GACI1B,UAAAA,GACE2B,YAAAA,GACAC,YAAAA,GACCC,aAAAA,GACUC,uBAAAA,GACPC,gBAAAA,GACFC,cAAAA,EAAAA,CAAY,GAC1B5H,QAAAsH,GAAAtH,QAAA4H,GAAA5H,QAAA4F,GAAA5F,QAAA0H,GAAA1H,QAAAyH,GAAAzH,QAAAwH,GAAAxH,QAAAuH,GAAAvH,QAAA2H,GAAA3H,QAAAM,KAAAA,IAAAN,EAAA,EAAA,GATFM;AASE,GC9FO8K,KAA4BA,CAAC5E,MASpC;AACJ,QAAM;AAAA,IACJwE,YAAAA;AAAAA,IACAK,YAAAA;AAAAA,IACAH,gBAAAA;AAAAA,IACAzD,aAAAA;AAAAA,IACAkD,iBAAAA;AAAAA,IACAM,cAAAA;AAAAA,IACAK,eAAAA;AAAAA,IACA1F,UAAAA;AAAAA,EAAAA,IACEY;AAEJ,SACEwE,KACAK,KACA,CAACH,KACD,CAACzD,KACD,CAACkD,KACD,CAACM,KACDK,MAAkB1F;AAEtB,GAEa2F,KAA2BA,CAAC/E,MAInC;AACJ,QAAM;AAAA,IAAE8E,eAAAA;AAAAA,IAAe1F,UAAAA;AAAAA,IAAUsF,gBAAAA;AAAAA,EAAAA,IAAmB1E;AAEpD,SAAI8E,MAAkB1F,KAAYsF,IACzB,OAGFI;AACT,GAEaE,KAAsBA,CAAC5F,MAAqB,CAACwB,GAAgBxB,CAAQ,GAErE6F,KAAsBA,CAACnE,MAAeA,EAAKmB,WAAWnB,EAAKkB,WAAW,WAE7EkD,KAAuBA,CAAClF,MASxB;AACJ,QAAM;AAAA,IAAEZ,UAAAA;AAAAA,IAAUoF,YAAAA;AAAAA,IAAYK,YAAAA;AAAAA,IAAYH,gBAAAA;AAAAA,IAAgBzD,aAAAA;AAAAA,IAAakD,iBAAAA;AAAAA,IAAiBM,cAAAA;AAAAA,IAAcH,YAAAA;AAAAA,EAAAA,IACpGtE,GACI,CAACyD,GAAe0B,CAAc,IAAIC,EAAS,EAAK,GAChD,CAACN,GAAeO,CAAgB,IAAID,EAAwB,IAAI,GAChE,CAAChB,GAAWkB,CAAY,IAAIF,EAAS,EAAK,GAE1CG,IAAW,YAAY;AAC3B,QAAI,GAACjB,KAAcb,IAEnB4B;AAAAA,MAAAA,EAAiBjG,CAAQ,GACzBkG,EAAa,EAAK,GAClBH,EAAe,EAAI;AACnB,UAAI;AACF,cAAMb,EAAWlF,CAAQ;AAAA,MAC3B,QAAQ;AACNiG,QAAAA,EAAiB,IAAI,GACrBC,EAAa,EAAI;AAAA,MACnB,UAAA;AACEH,QAAAA,EAAe,EAAK;AAAA,MACtB;AAAA;AAAA,EACF,GAEMR,IAAqBC,GAA0B;AAAA,IACnDJ,YAAAA;AAAAA,IACAK,YAAAA;AAAAA,IACAH,gBAAAA;AAAAA,IACAzD,aAAAA;AAAAA,IACAkD,iBAAAA;AAAAA,IACAM,cAAAA;AAAAA,IACAK,eAAAA;AAAAA,IACA1F,UAAAA;AAAAA,EAAAA,CACD;AAEDvE,SAAAA,GAAU,MAAM;AACdwK,IAAAA,EAAkB5K,OAAYsK,GAAyB;AAAA,MAAED,eAAerK;AAAAA,MAAS2E,UAAAA;AAAAA,MAAUsF,gBAAAA;AAAAA,IAAAA,CAAgB,CAAC;AAAA,EAC9G,GAAG,CAACtF,GAAUsF,CAAc,CAAC,GAE7B7J,GAAU,MAAM;AACd,IAAI,CAACyJ,KAAc,CAACK,KAAsBP,KAIrCmB,EAAAA;AAAAA,EACP,CAAC,GAEM;AAAA,IACL9B,eAAAA;AAAAA,IACAW,WAAAA;AAAAA,IACAO,oBAAoBa,EAAQlB,KAAeK,KAAsB,CAACP;AAAAA,IAClEmB,UAAAA;AAAAA,EAAAA;AAEJ,GAEaE,KAAWhK,CAAAA,MAAA;AAAA,QAAAjC,IAAAC,EAAA,EAAA,GACtB;AAAA,IAAAqH,MAAAA;AAAAA,IAAA+D,YAAAhL;AAAAA,IAAA2K,YAAA1K;AAAAA,IAAA4L,kBAAAA;AAAAA,IAAAC,UAAAA;AAAAA,IAAArB,YAAAA;AAAAA,IAAApD,uBAAApG;AAAAA,IAAAqG,gBAAAA;AAAAA,IAAAC,cAAA9E;AAAAA,EAAAA,IAUIb,GARFoJ,IAAAhL,MAAAoC,SAAA,KAAApC,GACA2K,IAAA1K,MAAAmC,SAAA,KAAAnC,GAIAoH,IAAApG,MAAAmB,SAAA,KAAAnB,GAEAsG,IAAA9E,MAAAL,SAAA,YAAAK;AAAwB,MAAA8C,GAAA+E,GAAAlD,GAAAD,GAAAD,GAAAxE;AAAA,EAAA/C,SAAAsH,KAG1B1B,IAAiB6F,GAAoBnE,CAAI,GACzCC,IAAmBD,EAAIC,cAAJ,IACnBC,IAAmBF,EAAIE,cAAJ,IACnBC,IAAoBd,GAAmBW,CAAI,GAC3CqD,IAAwB/D,GAAoBhB,CAAQ,GAEtB7C,IADTkE,GAAiBrB,CAAQ,KAChB,CAAiBwB,GAAgBxB,CAAQ,GAAC5F,OAAAsH,GAAAtH,OAAA4F,GAAA5F,OAAA2K,GAAA3K,OAAAyH,GAAAzH,OAAAwH,GAAAxH,OAAAuH,GAAAvH,OAAA+C,MAAA6C,IAAA5F,EAAA,CAAA,GAAA2K,IAAA3K,EAAA,CAAA,GAAAyH,IAAAzH,EAAA,CAAA,GAAAwH,IAAAxH,EAAA,CAAA,GAAAuH,IAAAvH,EAAA,CAAA,GAAA+C,IAAA/C,EAAA,CAAA;AAAxE,QAAAoM,IAA8BrJ,GAC9BmI,IAAuB5D,EAAIC,eAAgB9E,UAAa6E,EAAIE,eAAgB/E,QAM7De,IAAAiE,KAAA,CAAgBC;AAAqB,MAAA3D;AAAA,EAAA/D,EAAA,CAAA,MAAAoM,KAAApM,EAAA,CAAA,MAAA4F,KAAA5F,EAAA,CAAA,MAAAkL,KAAAlL,EAAA,EAAA,MAAAgL,KAAAhL,EAAA,EAAA,MAAA2K,KAAA3K,EAAA,EAAA,MAAAqL,KAAArL,EAAA,EAAA,MAAA8K,KAAA9K,UAAAwD,KALoCO,IAAA;AAAA,IAAA6B,UAAAA;AAAAA,IAAAoF,YAAAA;AAAAA,IAAAK,YAAAA;AAAAA,IAAAH,gBAAAA;AAAAA,IAAAzD,aAKzEjE;AAAAA,IAAqCmH,iBAAAA;AAAAA,IAAAM,cAEpCmB;AAAAA,IAAqBtB,YAAAA;AAAAA,EAAAA,GAEpC9K,OAAAoM,GAAApM,OAAA4F,GAAA5F,OAAAkL,GAAAlL,QAAAgL,GAAAhL,QAAA2K,GAAA3K,QAAAqL,GAAArL,QAAA8K,GAAA9K,QAAAwD,GAAAxD,QAAA+D,KAAAA,IAAA/D,EAAA,EAAA;AATD,QAAA;AAAA,IAAAiK,eAAAA;AAAAA,IAAAW,WAAAA;AAAAA,IAAAO,oBAAAA;AAAAA,IAAAY,UAAAA;AAAAA,EAAAA,IAAmEL,GAAqB3H,CASvF,GAMgBC,IAAAqH,IAAA,kBAAA;AAA8C,MAAApH;AAAA,EAAAjE,EAAA,EAAA,MAAA2C,uBAAAC,IAAA,2BAAA,KAOnDqB,IAAA;AAAA,IAAAoI,aAAe;AAAA,EAAA,GAAiBrM,QAAAiE,KAAAA,IAAAjE,EAAA,EAAA;AAAA,MAAAkE;AAAA,EAAAlE,EAAA,EAAA,MAAAsH,KAAAtH,UAAAgL,KAAAhL,EAAA,EAAA,MAAAkM,KAGxChI,sBAACoI,IAAA,EAAqBhF,MAAAA,GAAkB0D,YAAAA,GAA8BkB,kBAAAA,GAAgB,GAAIlM,QAAAsH,GAAAtH,QAAAgL,GAAAhL,QAAAkM,GAAAlM,QAAAkE,KAAAA,IAAAlE,EAAA,EAAA;AAY3E,QAAAuM,IAAAP,EAAQlB;AAAW,MAAA0B;AAAA,EAAAxM,EAAA,EAAA,MAAAoM,KAAApM,EAAA,EAAA,MAAAsH,KAAAtH,EAAA,EAAA,MAAA4H,KAAA5H,EAAA,EAAA,MAAA4F,KAAA5F,EAAA,EAAA,MAAAkL,KAAAlL,UAAA0H,KAAA1H,EAAA,EAAA,MAAAgL,KAAAhL,EAAA,EAAA,MAAA2K,KAAA3K,EAAA,EAAA,MAAAyH,KAAAzH,EAAA,EAAA,MAAAiK,KAAAjK,EAAA,EAAA,MAAA+L,KAAA/L,EAAA,EAAA,MAAA4K,KAAA5K,EAAA,EAAA,MAAAwH,KAAAxH,EAAA,EAAA,MAAAuH,KAAAvH,EAAA,EAAA,MAAA2H,KAAA3H,EAAA,EAAA,MAAAmL,KAAAnL,UAAAuM,KAVlCC,sBAACzB,MACOzD,MAAAA,GACI1B,UAAAA,GACE2B,YAAAA,GACAC,YAAAA,GACAwD,YAAAA,GACCvD,aAAAA,GACIkD,iBAAAA,GACHyB,cAAAA,GACElB,gBAAAA,GACH,aAAAqB,GACOpB,oBAAAA,GACTP,WAAAA,GACIX,eAAAA,GACH8B,YAAAA,GACWrE,uBAAAA,GACPC,gBAAAA,GACFC,cAAAA,EAAAA,CAAY,GAC1B5H,QAAAoM,GAAApM,QAAAsH,GAAAtH,QAAA4H,GAAA5H,QAAA4F,GAAA5F,QAAAkL,GAAAlL,QAAA0H,GAAA1H,QAAAgL,GAAAhL,QAAA2K,GAAA3K,QAAAyH,GAAAzH,QAAAiK,GAAAjK,QAAA+L,GAAA/L,QAAA4K,GAAA5K,QAAAwH,GAAAxH,QAAAuH,GAAAvH,QAAA2H,GAAA3H,QAAAmL,GAAAnL,QAAAuM,GAAAvM,QAAAwM,KAAAA,IAAAxM,EAAA,EAAA;AAAA,MAAAyM;AAAA,SAAAzM,EAAA,EAAA,MAAAmM,KAAAnM,EAAA,EAAA,MAAAwM,KAAAxM,EAAA,EAAA,MAAAgE,KAAAhE,UAAAkE,KAjCJuI,IAAA,gBAAA9C,EAACZ,KACa,eAAA,aACL,QAAA,aACM,aAAA/E,GACA,cAAA,MACJ,UAAA,WACN,IAAA,MACG,OAAA,QACD,MAAA,QACM,YAAA,2BACH,QAAAC,GACCkI,SAAAA,GAETjI,UAAAA;AAAAA,IAAAA;AAAAA,IAEAsI;AAAAA,EAAAA,GAmBF,GAAMxM,QAAAmM,GAAAnM,QAAAwM,GAAAxM,QAAAgE,GAAAhE,QAAAkE,GAAAlE,QAAAyM,KAAAA,IAAAzM,EAAA,EAAA,GAlCNyM;AAkCM,GAIGH,KAAiBrK,CAAAA,MAAA;AAAA,QAAAjC,IAAAC,EAAA,EAAA,GAC5B;AAAA,IAAAqH,MAAAA;AAAAA,IAAA0D,YAAA3K;AAAAA,IAAA6L,kBAAAA;AAAAA,EAAAA,IAAsDjK,GAAxC+I,IAAA3K,MAAAoC,SAAA,KAAApC;AAAiB,MAAAoG,GAAAC,GAAAd,GAAAtF;AAAA,EAAAN,SAAAsH,KAC/B1B,IAAiB6F,GAAoBnE,CAAI,GACzCb,IAAkBa,EAAIb,aAAJ,GAClBC,IAAkBY,EAAIZ,aAAJ,GACApG,IAAAkL,GAAoB5F,CAAQ,GAAC5F,OAAAsH,GAAAtH,OAAAyG,GAAAzG,OAAA0G,GAAA1G,OAAA4F,GAAA5F,OAAAM,MAAAmG,IAAAzG,EAAA,CAAA,GAAA0G,IAAA1G,EAAA,CAAA,GAAA4F,IAAA5F,EAAA,CAAA,GAAAM,IAAAN,EAAA,CAAA;AAA/C,QAAA0M,IAAkBpM,GAClB,CAAAqM,GAAAC,CAAA,IAAgChB,EAAS,EAAK,GAC9CiB,IAA4B9L,EAAsB,IAAI;AAAE,MAAAO,GAAAwB;AAAA,EAAA9C,EAAA,CAAA,MAAA2C,uBAAAC,IAAA,2BAAA,KAE9CtB,IAAAA,MACD,MAAA;AACL,IAAIuL,EAAmB5L,YAAa,QAClC6L,OAAMC,aAAcF,EAAmB5L,OAAQ;AAAA,EAChD,GAEF6B,IAAA,CAAA,GAAE9C,OAAAsB,GAAAtB,OAAA8C,MAAAxB,IAAAtB,EAAA,CAAA,GAAA8C,IAAA9C,EAAA,CAAA,IANLqB,GAAUC,GAMPwB,CAAE;AAAC,MAAAC;AAAA,EAAA/C,SAAA4F,KAEe7C,gBAAA;AACnB,QAAA;AACE,YAAMiK,UAASC,UAAUC,UAAWtH,CAAQ,GAC5CgH,EAAY,EAAI,GACZC,EAAmB5L,YAAa,QAClC6L,OAAMC,aAAcF,EAAmB5L,OAAQ,GAEjD4L,EAAmB5L,UAAW6L,OAAMK,WAAY,MAAMP,EAAY,EAAK,GAAG,IAAI;AAAA,IAAnD,QAAA;AAE3BA,MAAAA,EAAY,EAAK;AAAA,IAAC;AAAA,EACnB,GACF5M,OAAA4F,GAAA5F,OAAA+C,KAAAA,IAAA/C,EAAA,CAAA;AAXD,QAAAoN,IAAqBrK,GAqBHS,IAAAwH,IAAA,cAAA,QAGMjH,IAAAiH,IAAA,MAAA;AAAuB,MAAAhH;AAAA,EAAAhE,EAAA,CAAA,MAAA2C,uBAAAC,IAAA,2BAAA,KAOnCoB,IAAA;AAAA,IAAAqJ,IAAM;AAAA,EAAA,GAAMrN,OAAAgE,KAAAA,IAAAhE,EAAA,CAAA;AAAA,MAAAiE;AAAA,EAAAjE,UAAAkM,KACXjI,IAAAA,MAAMiI,IAAAA,GAAoBlM,QAAAkM,GAAAlM,QAAAiE,KAAAA,IAAAjE,EAAA,EAAA;AAIrB,QAAAkE,IAAA8G,IAAA,aAAA;AAAkC,MAAAuB;AAAA,EAAAvM,UAAAkM,KAGrCK,IAAAe,CAAAA,MAAA;AACPA,IAAAA,EAAKC,gBAAAA,GACLrB,IAAAA;AAAAA,EAAoB,GACrBlM,QAAAkM,GAAAlM,QAAAuM,KAAAA,IAAAvM,EAAA,EAAA;AAAA,MAAAwM;AAAA,EAAAxM,UAAAgL,KAGAwB,IAAAxB,sBAAcwC,IAAA,EAAkB,MAAA,IAAE,IAAO,gBAAArJ,EAACsJ,IAAA,EAAmB,MAAA,GAAA,CAAE,GAAIzN,QAAAgL,GAAAhL,QAAAwM,KAAAA,IAAAxM,EAAA,EAAA;AAAA,MAAAyM;AAAA,EAAAzM,EAAA,EAAA,MAAAuM,KAAAvM,UAAAwM,KAAAxM,EAAA,EAAA,MAAAkE,KAVtEuI,IAAA,gBAAAtI,EAACuJ,IAAA,EACa,cAAAxJ,GACJ,SAAA,SACH,MAAA,OACI,SAAAqI,GAIG,YAAA,GAEXC,UAAAA,GACH,GAAaxM,QAAAuM,GAAAvM,QAAAwM,GAAAxM,QAAAkE,GAAAlE,QAAAyM,KAAAA,IAAAzM,EAAA,EAAA;AAAA,MAAA2N;AAAA,EAAA3N,UAAAsH,EAAAsG,UAAA5N,UAAAsH,EAAAmB,WAAAzI,UAAAsH,EAAAkB,WAAAxI,UAAA4F,KAIR+H,IAAArG,EAAIsG,WAAY,YACf,gBAAAjE,EAACF,KAAQ,IAAA,QAAiB,WAAA,MACxB,UAAA;AAAA,IAAA,gBAAAtF,EAACsF,GAAA,EAAQ,IAAA,QAAa,OAAA,YAA0B,gBAAA,gBAAkB,IAAA,MAC/DnC,UAAAA,EAAIkB,QAAAA,CACP;AAAA,sBACCO,GAAA,EAAO,IAAA,QAAe,SAAA,eAAyB,YAAA,UAAuB,eAAA,UAAY,IAAA,MACjF,UAAA,gBAAA5E,EAACsJ,IAAA,EAAmB,MAAA,IAAE,GACxB;AAAA,IACCnG,EAAImB;AAAAA,EAAAA,EAAAA,CACP,IACEnB,EAAIsG,WAAY,8BACjBnE,GAAA,EAAQ,IAAA,QAAa,OAAA,YAA0B,gBAAA,gBAAyB,WAAA,MACtE7D,aACH,IAEA,gBAAAzB,EAACsF,KAAQ,IAAA,QAAiB,WAAA,MACvB7D,UAAAA,EAAAA,CACH,GACD5F,EAAA,EAAA,IAAAsH,EAAAsG,QAAA5N,EAAA,EAAA,IAAAsH,EAAAmB,SAAAzI,EAAA,EAAA,IAAAsH,EAAAkB,SAAAxI,QAAA4F,GAAA5F,QAAA2N,KAAAA,IAAA3N,EAAA,EAAA;AAAA,MAAA6N;AAAA,EAAA7N,EAAA,EAAA,MAAA4F,KAAA5F,UAAA2N,KAnBHE,IAAA,gBAAA1J,EAAC4E,GAAA,EAAU,MAAA,GAAY,UAAA,UAAsB,cAAA,YAAsB,YAAA,UAAgBnD,OAAAA,GAChF+H,UAAAA,GAmBH,GAAM3N,QAAA4F,GAAA5F,QAAA2N,GAAA3N,QAAA6N,KAAAA,IAAA7N,EAAA,EAAA;AAGK,QAAA8N,IAAAnB,IAAA,MAAA,KACMoB,IAAApB,IAAA,SAAA;AAA0B,MAAAqB;AAAA,EAAAhO,EAAA,EAAA,MAAA2C,uBAAAC,IAAA,2BAAA,KAEpCoL,IAAA;AAAA,IAAA,6FAC0F;AAAA,MAAAC,SAClF;AAAA,MAACC,eACK;AAAA,IAAA;AAAA,EACjB,GACDlO,QAAAgO,KAAAA,IAAAhO,EAAA,EAAA;AAEiB,QAAAmO,IAAAxB,IAAA,WAAA,kBAEFyB,IAAAzB,IAAA,WAAA;AAAsC,MAAA0B;AAAA,EAAArO,UAAAoN,KAGzCiB,IAAAC,CAAAA,MAAA;AACPhB,IAAAA,EAAKC,gBAAAA,GACAH,EAAAA;AAAAA,EAAc,GACpBpN,QAAAoN,GAAApN,QAAAqO,KAAAA,IAAArO,EAAA,EAAA;AAAA,MAAAuO;AAAA,EAAAvO,UAAA2M,KAGA4B,IAAA5B,sBAAY6B,IAAA,EAAY,MAAA,IAAE,IAAO,gBAAArK,EAACsK,IAAA,EAAW,MAAA,GAAA,CAAE,GAAIzO,QAAA2M,GAAA3M,QAAAuO,KAAAA,IAAAvO,EAAA,EAAA;AAAA,MAAA0O;AAAA,EAAA1O,EAAA,EAAA,MAAAoO,KAAApO,UAAAqO,KAAArO,EAAA,EAAA,MAAAuO,KAVtDG,IAAA,gBAAAvK,EAACuJ,IAAA,EACa,cAAAU,GACJ,SAAA,SACH,MAAA,OACI,SAAAC,GAIG,YAAA,GAEXE,UAAAA,GACH,GAAavO,QAAAoO,GAAApO,QAAAqO,GAAArO,QAAAuO,GAAAvO,QAAA0O,KAAAA,IAAA1O,EAAA,EAAA;AAAA,MAAA2O;AAAA,EAAA3O,EAAA,EAAA,MAAAmO,KAAAnO,UAAA0O,KAZfC,IAAA,gBAAAxK,EAACyK,IAAA,EAAiB,SAAAT,GAChBO,UAAAA,GAYF,GAAU1O,QAAAmO,GAAAnO,QAAA0O,GAAA1O,QAAA2O,KAAAA,IAAA3O,EAAA,EAAA;AAAA,MAAA6O;AAAA,EAAA7O,EAAA,EAAA,MAAA8N,KAAA9N,UAAA+N,KAAA/N,EAAA,EAAA,MAAA2O,KAxBZE,IAAA,gBAAA1K,EAAC4E,GAAA,EACU,SAAA+E,GACM,eAAAC,GACJ,YAAA,sBACN,KAAAC,GAOLW,UAAAA,EAAAA,CAcF,GAAM3O,QAAA8N,GAAA9N,QAAA+N,GAAA/N,QAAA2O,GAAA3O,QAAA6O,KAAAA,IAAA7O,EAAA,EAAA;AAAA,MAAA8O;AAAA,EAAA9O,EAAA,EAAA,MAAA6N,KAAA7N,UAAA6O,KAhDRC,IAAA,gBAAAnF,EAACN,IAAA,EAAqB,iBAAA,+BAAyC,YAAA,UAAwB,gBAAA,SAAY,KAAA,OAAY,SAC7GwE,UAAAA;AAAAA,IAAAA;AAAAA,IAsBAgB;AAAAA,EAAAA,GA0BF,GAAO7O,QAAA6N,GAAA7N,QAAA6O,GAAA7O,QAAA8O,KAAAA,IAAA9O,EAAA,EAAA;AAAA,MAAA+O;AAAA,EAAA/O,EAAA,EAAA,MAAAyG,KAAAzG,UAAA0G,KAAA1G,EAAA,EAAA,MAAA0M,KAENqC,IAAArC,IACC,gBAAAvI,EAAC4E,GAAA,EAAgB,YAAA,GACf,UAAA,gBAAA5E,EAAC6K,IAAA,EAAmB,SAAA,SAAmBvI,WAAAA,GAAsBC,WAAAA,EAAAA,CAAS,EAAA,CACxE,IAHD,MAIO1G,QAAAyG,GAAAzG,QAAA0G,GAAA1G,QAAA0M,GAAA1M,QAAA+O,KAAAA,IAAA/O,EAAA,EAAA;AAAA,MAAAiP;AAAA,SAAAjP,UAAAyM,KAAAzM,EAAA,EAAA,MAAA8O,KAAA9O,EAAA,EAAA,MAAA+O,KAAA/O,EAAA,EAAA,MAAAwD,KAAAxD,UAAA+D,KAAA/D,EAAA,EAAA,MAAAiE,KAzFVgL,sBAAC5F,IAAA,EACa,eAAA,oBACI,iBAAA,4BACb,IAAA,MACA,IAAA,OACQ,YAAA,UACI,gBAAA,iBACD,cAAA7F,GACF,aAAA,iBACI,iBAAA,MACI,oBAAAO,GACX,UAAA,UACL,KAAA,KACG,QAAA,KACJ,IAAA,MACI,QAAA,WACI,YAAA,yBACH,QAAAC,GACC,SAAAC,GACL,KAAA,MAEJwI,UAAAA;AAAAA,IAAAA;AAAAA,IAaAqC;AAAAA,IAmDCC;AAAAA,EAAAA,GAKH,GAAO/O,QAAAyM,GAAAzM,QAAA8O,GAAA9O,QAAA+O,GAAA/O,QAAAwD,GAAAxD,QAAA+D,GAAA/D,QAAAiE,GAAAjE,QAAAiP,KAAAA,IAAAjP,EAAA,EAAA,GA1FPiP;AA0FO,GClVEC,KAAuBA,MAAA;AAAA,QAAAlP,IAAAC,EAAA,CAAA;AAAA,MAAAI;AAAA,SAAAL,EAAA,CAAA,MAAA2C,uBAAAC,IAAA,2BAAA,KAClCvC,sBAACgK,IAAA,EAAQ,GAAA,QAAY,MAAA,KAAQ,KAAA,KAAO,IAAA,MAClC,4BAAC8E,IAAA,EAAgB,MAAA,KAAS,MAAA,KAAkB,cAAA;AAAA,IAAAC,GAAK;AAAA,IAAIC,QAAU;AAAA,EAAA,GAC7D,UAAA,gBAAAlL,EAAC0F,IAAA,EAAiB,OAAA,uBAAkC,aAAA,2CAAmD,UAAA,MAAI,EAAA,CAC7G,EAAA,CACF,GAAQ7J,OAAAK,KAAAA,IAAAL,EAAA,CAAA,GAJRK;AAIQ,GCJJiP,KAAqB,IACrBC,KAAwB,IACxBC,KAAkB,IAClBC,KAAwB,IACxBC,KAAuB,IACvBC,KAAoB,KACpBC,KAAkB,GASlBC,KAAqBA,MAAMP,KAAqBI,KAAuBE,IAIhEE,KAAyBA,CAACtJ,MAAuC;AAC5E,QAAM;AAAA,IAAEc,MAAAA;AAAAA,IAAMyI,aAAAA;AAAAA,IAAarI,uBAAAA,IAAwB;AAAA,IAAOE,cAAAA,IAAe;AAAA,EAAA,IAAcpB;AAEvF,MAAIuJ,UAAoBN,KAAwBG;AAEhD,QAAM1E,IAAiB5D,EAAKC,eAAe9E,UAAa6E,EAAKE,eAAe/E,QACtEmD,IAAW0B,EAAKmB,WAAWnB,EAAKkB,WAAW;AACjD,MAAIpB,GAAgBxB,CAAQ,MAAM0B,EAAKC,cAAcD,EAAKE;AACxD,WAAO8H,KAAqBK,KAAoBC;AAIlD,MAFI3I,GAAiBrB,CAAQ,KACzB,CAACsF,KACDvE,GAAmBW,CAAI,KAAK,CAACI,UAA8BmI,GAAAA;AAE/D,QAAM;AAAA,IAAEG,oBAAAA;AAAAA,IAAoBC,kBAAAA;AAAAA,IAAkBC,UAAAA;AAAAA,EAAAA,IAAa3H,GAAkB;AAAA,IAC3EjE,UAAUgD,EAAKC,cAAc;AAAA,IAC7BhD,UAAU+C,EAAKE,cAAc;AAAA,IAC7BgB,SAASlB,EAAKkB;AAAAA,IACdC,SAASnB,EAAKmB;AAAAA,EAAAA,CACf,GACK0H,IAAcvI,MAAiB,UAAUqI,IAAmBD;AAClE,MAAIG,MAAgB,KAAKD,MAAa,UAAUL,GAAAA;AAEhD,QAAMO,IAAaD,IAAcZ,KAAwBW,IAAWV;AACpE,SAAOF,KAAqBc,IAAaR;AAC3C,GChCMS,KAAcA,CAAC/I,MAAeA,EAAKmB,WAAWnB,EAAKkB,WAAW,WAC9D8H,KAA+B,IAExBC,KAA6BA,CAAC/J,MAA2C;AACpF,QAAM;AAAA,IAAEgK,OAAAA;AAAAA,IAAOC,kBAAAA;AAAAA,IAAkBC,gBAAAA;AAAAA,IAAgBC,kBAAAA;AAAAA,IAAkBC,0BAAAA;AAAAA,EAAAA,IAA6BpK;AAChG,MAAIqK,IAAqBJ,GACrBK,IAA0BL,IAAmB,YAAYA,CAAgB,KAAK;AAClF,QAAMM,IAA0BJ,GAAkBK,WAAW,oBAAoBL,EAAiBnQ,KAAK,MACjGyQ,IACJF,MAA4B,QAAQH,MAA6BG;AAEnE,EAAIJ,GAAkBK,WAAW,qBAAqBL,EAAiB9J,SACrEgK,IAAqBF,EAAiB9J,MACtCiK,IAA0B,WAAWH,EAAiBnQ,EAAE,IAAImQ,EAAiB9J,IAAI;AAGnF,MAAIqK,IAAoBJ;AACxB,MAAID,KAAsBC,GAAyB;AACjD,UAAMK,IAA+BT,EAAe3J,IAAI8J,CAAkB,IAAI,cAAc;AAC5FK,IAAAA,IAAoB,GAAGJ,CAAuB,IAAIK,CAA4B;AAAA,EAChF;AAEA,QAAMC,IAAsBP,IACxBL,EAAMa,UAAW/J,OAAS+I,GAAY/I,CAAI,MAAMuJ,CAAkB,IAClE,IACES,IACJF,KAAuB,KACvBT,GAAkBK,WAAW,qBAC7BL,EAAiBY,cAAc,QAC/B,CAACN;AAEH,SAAO;AAAA,IACLJ,oBAAAA;AAAAA,IACAK,mBAAAA;AAAAA,IACAH,yBAAAA;AAAAA,IACAK,qBAAAA;AAAAA,IACAE,8BAAAA;AAAAA,IACAL,4BAAAA;AAAAA,EAAAA;AAEJ,GAEaO,KAA2BA,CAAChL,MAInC;AACJ,QAAM;AAAA,IAAEiL,SAAAA;AAAAA,IAASL,qBAAAA;AAAAA,IAAqBE,8BAAAA;AAAAA,EAAAA,IAAiC9K;AACvE,MAAI,CAAC8K,KAAgCG,EAAQC,SAASN,CAAmB,EAAG,QAAOK;AAEnF,QAAME,IAAmBC,KAAKC,IAAI,GAAGT,IAAsBd,EAA4B,GACjFwB,IAAgBC,MAAMC,KAC1B;AAAA,IAAE7K,QAAQiK,IAAsBO,IAAmB;AAAA,EAAA,GACnD,CAAChN,GAAGsN,MAAUN,IAAmBM,CACnC;AAEA,SAAOF,MAAMC,KAAK,oBAAI3L,IAAI,CAAC,GAAGoL,GAAS,GAAGK,CAAa,CAAC,CAAC,EAAEI,KAAK,CAACC,GAAGC,MAAMD,IAAIC,CAAC;AACjF,GCvDMC,KAAqB,GACrBC,KAAuB,IAEvBjC,KAAcA,CAAC/I,MAAeA,EAAKmB,WAAWnB,EAAKkB,WAAW,WAEvD+J,KAAwB/L,CAAAA,MAAA;AAAA,QAAAxG,IAAAC,EAAA,EAAA,GACnC;AAAA,IAAAuQ,OAAAA;AAAAA,IAAAC,kBAAAA;AAAAA,IAAAC,gBAAAA;AAAAA,IAAAC,kBAAAA;AAAAA,IAAA6B,WAAAA;AAAAA,IAAAC,gBAAAA;AAAAA,IAAAC,yBAAAA;AAAAA,EAAAA,IAQIlM,GACJ,CAAAoK,GAAA+B,CAAA,IAAgE/G,EAAwB,IAAI;AAAE,MAAAvL;AAAA,EAAAL,EAAA,CAAA,MAAA0Q,KAAA1Q,EAAA,CAAA,MAAA4Q,KAAA5Q,EAAA,CAAA,MAAAwQ,KAAAxQ,EAAA,CAAA,MAAA2Q,KAAA3Q,SAAAyQ,KAQ1FpQ,IAAAkQ,GAA2B;AAAA,IAAAC,OAAAA;AAAAA,IAAAC,kBAAAA;AAAAA,IAAAC,gBAAAA;AAAAA,IAAAC,kBAAAA;AAAAA,IAAAC,0BAAAA;AAAAA,EAAAA,CAM9B,GAAC5Q,OAAA0Q,GAAA1Q,OAAA4Q,GAAA5Q,OAAAwQ,GAAAxQ,OAAA2Q,GAAA3Q,OAAAyQ,GAAAzQ,OAAAK,KAAAA,IAAAL,EAAA,CAAA;AAbF,QAAA;AAAA,IAAA6Q,oBAAAA;AAAAA,IAAAK,mBAAAA;AAAAA,IAAAH,yBAAAA;AAAAA,IAAAK,qBAAAA;AAAAA,IAAAE,8BAAAA;AAAAA,IAAAL,4BAAAA;AAAAA,EAAAA,IAOI5Q;AAMD,MAAAC,GAAAgB;AAAA,EAAAtB,EAAA,CAAA,MAAA0Q,KAAA1Q,EAAA,CAAA,MAAAwQ,KAAAxQ,SAAAiR,KAAAjR,EAAA,CAAA,MAAAwS,KAAAxS,EAAA,EAAA,MAAA+Q,KAAA/Q,EAAA,EAAA,MAAAkR,KAAAlR,EAAA,EAAA,MAAA6Q,KAAA7Q,EAAA,EAAA,MAAA0S,KAAA1S,UAAAyS,KAEanS,IAAAA,MAAA;AAMd,QALI,CAACuQ,KAAD,CAAwBK,KACxBD,KAIAP,EAAc3J,IAAK8J,CAAkB;AAAC;AAE1C,UAAAoB,IAAczB,EAAKa,UAAW/J,OAAU+I,GAAY/I,CAAI,MAAMuJ,CAAkB;AAChF,QAAIoB,IAAQ;AAAC;AAEb,UAAAW,IAAoBH,EAAcxR,SAClC4R,IAAsBL,EAASvR;AAC/B,QAAI,CAAC2R,KAAD,CAAiBC;AAAa;AAElC,UAAAC,IAA2B,CAAA;AAC3B,QAAAC,IAA4B;AAI5BL,IAAAA,EAAuBzR,UAAW;AAClC,UAAA+R,IAAqBA,MAAA;AACnBN,MAAAA,EAAuBzR,UAAW;AAAA,IAAH,GAEjCgS,IAA6BA,MAAA;AAC3BF,MAAAA,IAAwBA,IACxBC,EAAAA,GACIjC,MAA4B,QAC9B4B,EAA4B5B,CAAuB;AAAA,IACpD;AAGH,QAAAmC,IAAsB;AACtB,UAAAC,IAA0BA,MAAA;AACxB,UAAIJ,CAAAA,GAGJ;AAAA,YAFAH,EAAWQ,cAAenB,GAAO;AAAA,UAAAoB,OAAS;AAAA,QAAA,CAAS,GACnDH,IAAAA,IAAmB,GACfA,KAAmBb,MAAsBtB,MAA4B,MAAI;AAC3EiC,UAAAA,EAAAA,GACAL,EAA4B5B,CAAuB;AAAC;AAAA,QAAA;AAGtD,YAAImC,IAAkBZ,IAAoB;AACxCQ,UAAAA,EAAQQ,KAAMC,sBAAsBJ,CAAiB,CAAC;AAAC;AAAA,QAAA;AAGzDH,QAAAA,EAAAA;AAAAA;AAAAA,IAAc;AAGhBH,WAAAA,EAAaW,iBAAkB,SAASP,GAAsB;AAAA,MAAAQ,SAAW;AAAA,IAAA,CAAM,GAC/EZ,EAAaW,iBAAkB,aAAaP,GAAsB;AAAA,MAAAQ,SAAW;AAAA,IAAA,CAAM,GACnFN,EAAAA,GAEO,MAAA;AACLH,MAAAA,EAAAA,GACAH,EAAaa,oBAAqB,SAAST,CAAoB,GAC/DJ,EAAaa,oBAAqB,aAAaT,CAAoB;AACnE,iBAAKU,KAAiBb;AACpBc,6BAAqBD,CAAO;AAAA,IAC7B;AAAA,EACF,GACArS,KACD4P,GACAL,GACAE,GACAE,GACAT,GACAE,GACA8B,GACAC,GACAC,CAAuB,GACxB1S,OAAA0Q,GAAA1Q,OAAAwQ,GAAAxQ,OAAAiR,GAAAjR,OAAAwS,GAAAxS,QAAA+Q,GAAA/Q,QAAAkR,GAAAlR,QAAA6Q,GAAA7Q,QAAA0S,GAAA1S,QAAAyS,GAAAzS,QAAAM,GAAAN,QAAAsB,MAAAhB,IAAAN,EAAA,EAAA,GAAAsB,IAAAtB,EAAA,EAAA,IAvED6T,GAAgBvT,GA6DbgB,CAUF;AAAC,MAAAwB;AAAA,SAAA9C,EAAA,EAAA,MAAAoR,KAAApR,UAAAsR,KAEKxO,IAAA;AAAA,IAAAsO,qBAAAA;AAAAA,IAAAE,8BAAAA;AAAAA,EAAAA,GAAqDtR,QAAAoR,GAAApR,QAAAsR,GAAAtR,QAAA8C,KAAAA,IAAA9C,EAAA,EAAA,GAArD8C;AAAqD,GCtFxDuN,KAAcA,CAAC/I,MAAeA,EAAKmB,WAAWnB,EAAKkB,WAAW,WAE9DsL,KAA8B,IAC9BC,KAAmC,KAE5BC,KAA6BA,CAACxD,MACrCA,EAAMrJ,UAAU2M,yBAAwCzN,IAAAA,IAErD,IAAIA,IACTmK,EACGyD,OAAO,CAAC3M,GAAM2K,MAAU;AACvB,QAAMiC,KAAa5M,EAAKb,aAAa,MAAMa,EAAKZ,aAAa;AAC7D,SAAOuL,KAAS6B,MAA+BI,IAAYH;AAC7D,CAAC,EACAzJ,IAAKhD,OAAS+I,GAAY/I,CAAI,CAAC,CACpC,GAGW6M,KAAyBA,CAAC3D,MAAkB,IAAInK,IAAImK,EAAMlG,IAAKhD,CAAAA,MAAS+I,GAAY/I,CAAI,CAAC,CAAC,GAE1F8M,KAAsBA,CAAC1D,GAA6B7J,MAAiB;AAChF,QAAMwN,IAAO,IAAIhO,IAAIqK,CAAc;AACnC,SAAI2D,EAAKtN,IAAIF,CAAI,IACfwN,EAAKC,OAAOzN,CAAI,IAEhBwN,EAAKE,IAAI1N,CAAI,GAERwN;AACT,GAEaG,KAAuCA,CAClDhE,GACAE,GACAD,MACG;AAGH,MAFI,CAACA,KACD,CAACC,EAAe3J,IAAI0J,CAAgB,KACpC,CAACD,EAAMiE,KAAMnN,CAAAA,MAAS+I,GAAY/I,CAAI,MAAMmJ,CAAgB,EAAG,QAAOC;AAE1E,QAAM2D,IAAO,IAAIhO,IAAIqK,CAAc;AACnC2D,SAAAA,EAAKC,OAAO7D,CAAgB,GACrB4D;AACT,GAMaK,KAAqCA,CAChDlE,GACAE,GACAD,GACAkE,MACG;AACH,QAAMC,IAAWJ,GAAqChE,GAAOE,GAAgBD,CAAgB;AAC7F,MACE,CAACkE,KACDA,MAA0BlE,KAC1BmE,EAAS7N,IAAI4N,CAAqB,KAClC,CAACnE,EAAMiE,KAAMnN,CAAAA,MAAS+I,GAAY/I,CAAI,MAAMqN,CAAqB;AAEjE,WAAOC;AAGT,QAAMP,IAAOO,MAAalE,IAAiB,IAAIrK,IAAIqK,CAAc,IAAIkE;AACrEP,SAAAA,EAAKE,IAAII,CAAqB,GACvBN;AACT;AAEO,SAASQ,GAAW5S,GAAwB;AACjD,QAAM;AAAA,IACJuO,OAAAA;AAAAA,IACAC,kBAAAA,IAAmB;AAAA,IACnB3F,YAAAA;AAAAA,IACAgK,kBAAAA;AAAAA,IACAC,wBAAAA;AAAAA,IACApE,kBAAAA,IAAmB;AAAA,IACnB/I,cAAAA,IAAe;AAAA,EAAA,IACb3F,GACEuQ,IAAYzR,EAAuB,IAAI,GACvCiU,IAA4BjU,EAAwC,IAAI,GAKxE0R,IAAiB1R,EAAoD,IAAI,GACzE2R,IAA0B3R,EAAO,EAAK,GACtCkU,IAAuBlU,EAAsB,IAAI,GACjD,CAAC2P,GAAgBwE,CAAiB,IAAItJ,EAAsB,MAAMoI,GAA2BxD,CAAK,CAAC,GACnG,CAAC2E,GAAqBC,CAAsB,IAAIxJ,EAAsB,MAAM,oBAAIvF,KAAK,GACrF;AAAA,IAAE+K,qBAAAA;AAAAA,IAAqBE,8BAAAA;AAAAA,EAAAA,IAAiCiB,GAAsB;AAAA,IAClF/B,OAAAA;AAAAA,IACAC,kBAAAA;AAAAA,IACAC,gBAAAA;AAAAA,IACAC,kBAAAA;AAAAA,IACA6B,WAAAA;AAAAA,IACAC,gBAAAA;AAAAA,IACAC,yBAAAA;AAAAA,EAAAA,CACD,GAEKE,IAAcyC,GAAe;AAAA,IACjCC,OAAO9E,EAAMrJ;AAAAA,IACboO,kBAAkBA,MAAM/C,EAAUvR;AAAAA,IAClCuU,cAAevD,CAAAA,MAAU;AACvB,YAAM3K,IAAOkJ,EAAMyB,CAAK,GAClBpL,IAAOwJ,GAAY/I,CAAI;AAC7B,aAAOwI,GAAuB;AAAA,QAC5BxI,MAAAA;AAAAA,QACAyI,aAAaW,EAAe3J,IAAIF,CAAI;AAAA,QACpCa,uBAAuByN,EAAoBpO,IAAIF,CAAI;AAAA,QACnDe,cAAAA;AAAAA,MAAAA,CACD;AAAA,IACH;AAAA,IACA6N,YAAaxD,CAAAA,MAAU5B,GAAYG,EAAMyB,CAAK,CAAC;AAAA,IAC/CyD,UAAU;AAAA,IACVC,gBAAiBC,CAAAA,MAAU;AACzB,YAAMnE,IAAUoE,GAAsBD,CAAK;AAC3C,aAAOpE,GAAyB;AAAA,QAAEC,SAAAA;AAAAA,QAASL,qBAAAA;AAAAA,QAAqBE,8BAAAA;AAAAA,MAAAA,CAA8B;AAAA,IAChG;AAAA,EAAA,CACD;AAgDD,MA/CAsB,EAAYkD,6CAA6C,CAACC,GAAOC,GAAQC,MACvE,CAACA,EAASC,eAAe,CAACxD,EAAwBzR,SACpDwR,EAAexR,UAAU2R,GAEzBiB,GAAgB,MAAM;AACpB,IAAKpD,KAELyE,EAAmBiB,CAAAA,MAAS3B,GAAqChE,GAAO2F,GAAM1F,CAAgB,CAAC;AAAA,EACjG,GAAG,CAACD,GAAOC,CAAgB,CAAC,GAE5BoD,GAAgB,MAAM;AACpB,QAAKlD,GAEL;AAAA,UAAIA,EAAiBK,WAAW,mBAAmB;AACjD,cAAMoF,IAAgBzF,EAAiB9J;AACvC,YAAIuP,GAAe;AACjB,gBAAMzB,IAAwBM,EAAqBhU;AACnDgU,UAAAA,EAAqBhU,UAAUmV,GAC/BlB,EAAmBiB,OACjBzB,GAAmClE,GAAO2F,GAAMC,GAAezB,CAAqB,CACtF;AAAA,QACF;AACA;AAAA,MACF;AAGAM,MAAAA,EAAqBhU,UAAU,MAC/BiU,EAAkBvE,EAAiBK,WAAW,aAAamD,GAAuB3D,CAAK,IAAI,oBAAInK,KAAK;AAAA;AAAA,EACtG,GAAG,CAACmK,GAAOG,CAAgB,CAAC,GAE5BtP,GAAU,MAAM;AACd,UAAMgV,IAAiB;AAAA,MACrBC,aAAa5F,EAAe6F,SAAS;AAAA,MACrCC,cAAchG,EAAMrJ,SAAS,KAAKqJ,EAAMiG,MAAOnP,CAAAA,MAASoJ,EAAe3J,IAAIsJ,GAAY/I,CAAI,CAAC,CAAC;AAAA,IAAA,GAEzFoP,IAAyB1B,EAA0B/T;AACzD,IACEyV,GAAwBJ,gBAAgBD,EAAeC,eACvDI,EAAuBF,iBAAiBH,EAAeG,iBAKzDxB,EAA0B/T,UAAUoV,GACpCtB,IAAyBsB,CAAc;AAAA,EACzC,GAAG,CAAC3F,GAAgBF,GAAOuE,CAAsB,CAAC,GAE9CvE,EAAMrJ,WAAW,EAAG,0BAAQ+H,IAAA,EAAoB;AAEpD,QAAMyH,IAAiBA,CAAC9P,MAAiB;AACvCqO,IAAAA,EAAmBiB,CAAAA,MAAS/B,GAAoB+B,GAAMtP,CAAI,CAAC;AAAA,EAC7D,GAEM+P,IAAeA,CAAC/P,MAAiB;AACrCuO,IAAAA,EAAwBe,CAAAA,MAAS;AAC/B,YAAM9B,IAAO,IAAIhO,IAAI8P,CAAI;AACzB9B,aAAAA,EAAKE,IAAI1N,CAAI,GACNwN;AAAAA,IACT,CAAC;AAAA,EACH,GAEMwC,IAAejE,EAAYkE,gBAAAA;AAEjC,SACE,gBAAA3S,EAACkG,IAAA,EAAM,GAAE,QAAO,MAAK,KAAI,KAAI,KAAI,IAAG,MAClC,UAAA,gBAAAlG,EAAC4E,GAAA,EAAI,UAAS,YAAW,MAAK,KAAI,MAAK,KAAI,IAAG,MAC5C,UAAA,gBAAA5E,EAACgL,IAAA,EACC,UAAS,YACT,OAAM,KACN,aAAaqD,GACb,eAAe;AAAA,IAAEuE,OAAO;AAAA,MAAEC,gBAAgB;AAAA,IAAA;AAAA,EAAO,GACjD,cAAc;AAAA,IAAE5H,GAAG;AAAA,EAAA,GAEnB,UAAA,gBAAAjL,EAAC4E,GAAA,EAAI,UAAS,YAAW,OAAM,QAAO,OAAO;AAAA,IAAEkO,QAAQrE,EAAYsE,aAAAA;AAAAA,EAAa,GAC7EL,UAAAA,EAAavM,IAAK6M,CAAAA,MAAgB;AACjC,UAAM7P,IAAOkJ,EAAM2G,EAAYlF,KAAK,GAC9BpL,IAAOwJ,GAAY/I,CAAI;AAE7B,6BACGyB,GAAA,EAEC,cAAYoO,EAAYlF,OACxB,KAAKW,EAAYwE,gBACjB,UAAS,YACT,MAAK,KACL,OAAM,QACN,IAAG,MACH,OAAO;AAAA,MAAEC,KAAK,GAAGF,EAAYG,KAAK;AAAA,IAAA,GAElC,UAAA,gBAAAnT,EAAC8H,IAAA,EAEC,MAAM3E,GACN,YAAYmJ,MAAqB5J,GACjC,YAAY,CAAC6J,EAAe3J,IAAIF,CAAI,GACpC,kBAAkB,MAAM8P,EAAe9P,CAAI,GAC3C,UAAU,MAAMiO,IAAmBjO,CAAI,GACvC,YAAAiE,GACA,uBAAuBqK,EAAoBpO,IAAIF,CAAI,GACnD,gBAAgB,MAAM+P,EAAa/P,CAAI,GACvC,cAAAe,KATKf,CASsB,EAAA,GAnBxBsQ,EAAYI,GAqBnB;AAAA,EAEJ,CAAC,EAAA,CACH,GACF,EAAA,CACF,EAAA,CACF;AAEJ;ACvQA,MAAMC,KAA2BA,CAAC3Q,MAChCA,EACGf,MAAM,GAAG,EACTwE,IAAKmN,CAAAA,MAAYA,EAAQC,MAAM,EAC/BzD,OAAOjI,OAAO,EACd2L,KAAK,GAAG,GAEPC,KAAYA,CAACC,OACjBA,EAAM3F,KAAK,CAAC4F,GAAMC,MACZD,EAAKE,SAASD,EAAMC,OAAaF,EAAKE,SAAS,WAAW,KAAK,IAC5DF,EAAKG,KAAKC,cAAcH,EAAME,IAAI,CAC1C,GAEDJ,EAAMM,QAASC,CAAAA,MAAS;AACtB,EAAIA,EAAKC,YAAUT,GAAUQ,EAAKC,QAAQ;AAC5C,CAAC,GAEMR,IAGHS,KAAcA,CAACC,MAAoBxG,MAAMC,KAAK,IAAI3L,IAAIkS,EAAMjO,IAAIkN,EAAwB,EAAEvD,OAAOjI,OAAO,CAAC,CAAC,GAE1GwM,KAAgBA,CAACD,MACrBD,GAAYC,CAAK,EACdjO,IAAKzD,CAAAA,OAAU;AAAA,EAAErG,IAAI,QAAQqG,CAAI;AAAA,EAAIoR,MAAMpR;AAAAA,EAAMmR,MAAM;AAAO,EAAgC,EAC9F9F,KAAK,CAAC4F,GAAMC,MAAUD,EAAKG,KAAKC,cAAcH,EAAME,IAAI,CAAC,GAEjDQ,KAAwBA,CAACF,GAAiBG,MAAsD;AAC3G,MAAIA,MAAS,OAAQ,QAAOF,GAAcD,CAAK;AAE/C,QAAMI,wBAAeC,IAAAA,GACfC,IAAmC,CAAA;AAEzCP,SAAAA,GAAYC,CAAK,EAAEJ,QAAStR,CAAAA,MAAS;AACnC,UAAMiS,IAAWjS,EAAKf,MAAM,GAAG;AAC/B,QAAIiT,IAAa,IACbC,IAAyC;AAE7CF,IAAAA,EAASX,QAAQ,CAACV,GAASxF,MAAU;AACnC,YAAMgH,IAAcF,IAAa,GAAGA,CAAU,IAAItB,CAAO,KAAKA,GACxDyB,IAASjH,MAAU6G,EAAS3R,SAAS,GACrCgS,IAAS,GAAGD,IAAS,SAAS,QAAQ,IAAID,CAAW,IACrDG,IAAeT,EAASU,IAAIF,CAAM;AAExC,UAAIC,GAAc;AAChBJ,QAAAA,IAAaI,GACbL,IAAaE;AACb;AAAA,MACF;AAEA,YAAMK,IAAgC;AAAA,QACpC9Y,IAAI2Y;AAAAA,QACJlB,MAAMR;AAAAA,QACNO,MAAMkB,IAAS,SAAS;AAAA,QACxB,GAAIA,IAAS,CAAA,IAAK;AAAA,UAAEb,UAAU,CAAA;AAAA,QAAA;AAAA,MAAG;AAGnCM,MAAAA,EAASY,IAAIJ,GAAQG,CAAQ,GAExBN,IACAA,EAAWX,UAAU/E,KAAKgG,CAAQ,IADtBT,EAAUvF,KAAKgG,CAAQ,GAGxCN,IAAaM,GACbP,IAAaE;AAAAA,IACf,CAAC;AAAA,EACH,CAAC,GAEMrB,GAAUiB,CAAS;AAC5B,GAEaW,KAA2BA,CAAC3B,MAAiC;AACxE,QAAM4B,IAAsB,CAAA,GAEtBC,IAAQA,CAACC,MAAiC;AAC9CA,IAAAA,EAAMxB,QAASyB,CAAAA,MAAS;AACtB,MAAIA,EAAK5B,SAAS,aAClByB,EAAUnG,KAAKsG,EAAKpZ,EAAE,GACtBkZ,EAAME,EAAKvB,YAAY,EAAE;AAAA,IAC3B,CAAC;AAAA,EACH;AAEAqB,SAAAA,EAAM7B,CAAK,GACJ4B;AACT,GAEMI,KAAyBA,CAAChC,MAAiC;AAC/D,QAAMiC,IAAyB,CAAA,GAEzBJ,IAAQA,CAACK,MAAqC;AAClDA,IAAAA,EAAU5B,QAASC,CAAAA,MAAS;AAC1B,UAAIA,EAAKJ,SAAS,QAAQ;AACxB8B,QAAAA,EAAaxG,KAAK8E,EAAK5X,GAAGwZ,QAAQ,UAAU,EAAE,CAAC;AAC/C;AAAA,MACF;AAEAN,MAAAA,EAAMtB,EAAKC,YAAY,EAAE;AAAA,IAC3B,CAAC;AAAA,EACH;AAEAqB,SAAAA,EAAM7B,CAAK,GACJiC;AACT,GAEaG,KAAsBA,CAAC1B,GAAiBG,MAC/CA,MAAS,SAAe,CAAC,GAAGH,CAAK,EAAErG,KAAK,CAAC4F,GAAMC,MAAUD,EAAKI,cAAcH,CAAK,CAAC,IAC/E8B,GAAuBpB,GAAsBF,GAAO,QAAQ,CAAC,GCrFzD2B,KAAqBC,GAAyBZ,CAAAA,OAAS;AAAA,EAClEa,iBAAiB;AAAA,EACjBC,UAAU;AAAA,EACVzS,cAAc;AAAA,EACd0S,aAAa;AAAA,EACbC,cAAc;AAAA,EACdC,uCAAuBnU,IAAAA;AAAAA,EACvBoU,kBAAmBL,OAAoBb,EAAI;AAAA,IAAEa,iBAAAA;AAAAA,EAAAA,CAAiB;AAAA,EAC9DM,iBAAiBA,MAAMnB,EAAKoB,CAAAA,OAAW;AAAA,IAAEP,iBAAiB,CAACO,EAAMP;AAAAA,EAAAA,EAAkB;AAAA,EACnFQ,aAAcP,OAAad,EAAI;AAAA,IAAEc,UAAAA;AAAAA,EAAAA,CAAU;AAAA,EAC3CQ,iBAAkBjT,OAAiB2R,EAAI;AAAA,IAAE3R,cAAAA;AAAAA,EAAAA,CAAc;AAAA,EACvDkT,gBAAiBR,OAAgBf,EAAI;AAAA,IAAEe,aAAAA;AAAAA,EAAAA,CAAa;AAAA,EACpDS,iBAAkBR,OAAiBhB,EAAI;AAAA,IAAEgB,cAAAA;AAAAA,EAAAA,CAAc;AAAA,EACvDS,sBAAuBvB,OAAcF,EAAI;AAAA,IAAEiB,mBAAmB,IAAInU,IAAIoT,CAAS;AAAA,EAAA,CAAG;AAAA,EAClFwB,cAAeC,CAAAA,MACb3B,EAAKoB,CAAAA,MAAU;AACb,UAAMH,IAAoB,IAAInU,IAAIsU,EAAMH,iBAAiB;AACzD,WAAIA,EAAkBzT,IAAImU,CAAQ,IAAGV,EAAkBlG,OAAO4G,CAAQ,IACjEV,EAAkBjG,IAAI2G,CAAQ,GAC5B;AAAA,MAAEV,mBAAAA;AAAAA,IAAAA;AAAAA,EACX,CAAC;AAAA,EACHW,WAAY1B,OAAcF,EAAI;AAAA,IAAEiB,mBAAmB,IAAInU,IAAIoT,CAAS;AAAA,EAAA,CAAG;AAAA,EACvE2B,aAAaA,MAAM7B,EAAI;AAAA,IAAEiB,uCAAuBnU,IAAAA;AAAAA,EAAI,CAAG;AACzD,EAAE,GCLIgV,KAAqBpZ,CAAAA,MAAA;AAAA,QAAAjC,IAAAC,EAAA,CAAA;AAAA,MAAAI;AAAA,EAAAL,EAAA,CAAA,MAAAiC,EAAAqZ,YAEtBjb,IAAA4B,EAAKqZ,WAAY,gBAAAnX,EAACqK,IAAA,EAAY,MAAA,IAAE,IAAhC,MAA2CxO,EAAA,CAAA,IAAAiC,EAAAqZ,UAAAtb,OAAAK,KAAAA,IAAAL,EAAA,CAAA;AAAA,MAAAM;AAAA,SAAAN,SAAAK,KAD9CC,IAAA,gBAAA6D,EAAC4E,GAAA,EAAM,GAAA,QAAmB,YAAA,GAAW,SAAA,QAAsB,gBAAA,UACxD1I,UAAAA,EAAAA,CACH,GAAML,OAAAK,GAAAL,OAAAM,KAAAA,IAAAN,EAAA,CAAA,GAFNM;AAEM,GAGFib,KAAqBtZ,CAAAA,MAAA;AAAA,QAAAjC,IAAAC,EAAA,EAAA,GACzB;AAAA,IAAAO,IAAAA;AAAAA,IAAA8I,OAAAA;AAAAA,IAAAkS,MAAAA;AAAAA,IAAAF,UAAAA;AAAAA,IAAAG,UAAAA;AAAAA,IAAAC,YAAAA;AAAAA,EAAAA,IAA4DzZ,GAMhD5B,IAAAib,MAAa7Y,SAAbA,SAAA;AAAoD,MAAAnC;AAAA,EAAAN,SAAAsb,KAQ9Chb,IAAAgb,MAAa7Y,SAAbA,SAAqC,gBAAA0B,EAACkX,MAA6BC,UAAAA,GAAQ,GAAItb,OAAAsb,GAAAtb,OAAAM,KAAAA,IAAAN,EAAA,CAAA;AAAA,MAAAsB;AAAA,EAAAtB,EAAA,CAAA,MAAAyb,KAAAzb,EAAA,CAAA,MAAAwb,KAAAxb,EAAA,CAAA,MAAAQ,KAAAR,EAAA,CAAA,MAAAsJ,KAAAtJ,EAAA,CAAA,MAAA0b,KAAA1b,EAAA,CAAA,MAAAsb,KAAAtb,EAAA,CAAA,MAAAK,KAAAL,SAAAM,KAV7FgB,sBAACqa,IAAA,EACC,SAAA,IACM,MAAAtb,GACQib,gBAAAA,GACN,SAAA,cACJ9a,IAAAA,GACEgb,MAAAA,GACClS,OAAAA,GACGmS,UAAAA,GACEH,YAAAA,GACA,YAAAhb,GACAob,YAAAA,GAAU,GACtB1b,OAAAyb,GAAAzb,OAAAwb,GAAAxb,OAAAQ,GAAAR,OAAAsJ,GAAAtJ,OAAA0b,GAAA1b,OAAAsb,GAAAtb,OAAAK,GAAAL,OAAAM,GAAAN,QAAAsB,KAAAA,IAAAtB,EAAA,EAAA;AAAA,MAAA8C;AAAA,SAAA9C,EAAA,EAAA,MAAAyb,KAAAzb,UAAAQ,KAAAR,EAAA,EAAA,MAAAsB,KAbJwB,gCAAkBtC,UAAcib,UAAAA,GAAU,SAAA,IACxCna,UAAAA,EAAAA,CAaF,GAAYtB,QAAAyb,GAAAzb,QAAAQ,GAAAR,QAAAsB,GAAAtB,QAAA8C,KAAAA,IAAA9C,EAAA,EAAA,GAdZ8C;AAcY,GAIH8Y,KAAwB3Z,CAAAA,MAAA;AAAA,QAAAjC,IAAAC,EAAA,EAAA,GACnC;AAAA,IAAAma,iBAAAA;AAAAA,IAAAyB,cAAAA;AAAAA,IAAAxB,UAAAA;AAAAA,IAAAzS,cAAAA;AAAAA,IAAAkU,qBAAAA;AAAAA,IAAAC,uBAAAA;AAAAA,IAAAC,mBAAAA;AAAAA,IAAAC,kBAAAA;AAAAA,IAAAC,sBAAAA;AAAAA,IAAAC,aAAAA;AAAAA,IAAAC,eAAAA;AAAAA,EAAAA,IAYIna;AAAM,MAAA5B;AAAA,EAAAL,EAAA,CAAA,MAAA2C,uBAAAC,IAAA,2BAAA,KAINvC,sBAAAgc,EAAA,SAAA,EAAc,SAAA,IACZ,4BAAC3O,IAAA,EAAsB,cAAA,qBAA4B,SAAA,SAAa,MAAA,MAC9D,UAAA,gBAAAvJ,EAACmY,MAAgB,MAAA,IAAE,GACrB,EAAA,CACF,GAAetc,OAAAK,KAAAA,IAAAL,EAAA,CAAA;AAAA,MAAAM;AAAA,EAAAN,SAAAoa,KAKH9Z,IAAA8Z,sBAAmBmC,IAAA,EAAqB,MAAA,IAAE,IAAO,gBAAApY,EAACqY,IAAA,EAAoB,MAAA,GAAA,CAAE,GAAIxc,OAAAoa,GAAApa,OAAAM,KAAAA,IAAAN,EAAA,CAAA;AAC3E,QAAAsB,IAAA8Y,IAAA,mBAAA;AAAqD,MAAAtX;AAAA,EAAA9C,EAAA,CAAA,MAAAgc,KAAAhc,SAAAM,KAAAN,EAAA,CAAA,MAAAsB,KAH9DwB,IAAA,gBAAAqB,EAACoX,MACI,IAAA,oBACG,MAAAjb,GACC,OAAAgB,GACK0a,YAAAA,EAAAA,CAAiB,GAC7Bhc,OAAAgc,GAAAhc,OAAAM,GAAAN,OAAAsB,GAAAtB,OAAA8C,KAAAA,IAAA9C,EAAA,CAAA;AAAA,MAAA+C;AAAA,EAAA/C,EAAA,CAAA,MAAA2C,uBAAAC,IAAA,2BAAA,KACFG,IAAA,gBAAAoB,EAAAkY,EAAA,WAAA,CAAA,CAAA,GAAkBrc,OAAA+C,KAAAA,IAAA/C,EAAA,CAAA;AAAA,MAAAwD;AAAA,EAAAxD,EAAA,CAAA,MAAA6b,KAAA7b,SAAAic,KAAAjc,EAAA,EAAA,MAAAqa,KACjB7W,IAAAqY,IAAA,gBAAAlS,EAAA8S,IAAA,EAEG,UAAA;AAAA,IAAA,gBAAAtY,EAACoX,MACI,IAAA,UACG,MAAA,gBAAApX,EAACuY,IAAA,EAAe,MAAA,GAAA,CAAE,GAClB,OAAA,UACI,UAAArC,MAAa,UACX,YAAA,MAAM4B,EAAiB,QAAQ,GAAC;AAAA,sBAE7CV,IAAA,EACI,IAAA,QACG,MAAA,gBAAApX,EAACwY,MAAW,MAAA,GAAA,CAAE,GACd,OAAA,QACI,UAAAtC,MAAa,QACX,YAAA,MAAM4B,EAAiB,MAAM;IAE3C,gBAAA9X,EAAAkY,EAAA,WAAA,CAAA,CAAA;AAAA,EAAA,EAAA,CAAkB,IAhBrB,MAkBOrc,OAAA6b,GAAA7b,OAAAic,GAAAjc,QAAAqa,GAAAra,QAAAwD,KAAAA,IAAAxD,EAAA,EAAA;AAAA,MAAA+D;AAAA,EAAA/D,EAAA,EAAA,MAAA2C,uBAAAC,IAAA,2BAAA,KAGAmB,sBAAC6Y,IAAA,EAAY,MAAA,GAAA,CAAE,GAAI5c,QAAA+D,KAAAA,IAAA/D,EAAA,EAAA;AAEf,QAAAgE,IAAA4D,MAAiB;AAAS,MAAA3D;AAAA,EAAAjE,UAAAkc,KACxBjY,IAAAA,MAAMiY,EAAqB,SAAS,GAAClc,QAAAkc,GAAAlc,QAAAiE,KAAAA,IAAAjE,EAAA,EAAA;AAAA,MAAAkE;AAAA,EAAAlE,EAAA,EAAA,MAAAgE,KAAAhE,UAAAiE,KALnDC,IAAA,gBAAAC,EAACoX,IAAA,EACI,IAAA,WACG,MAAAxX,GACA,OAAA,WACI,UAAAC,GACE,YAAAC,EAAAA,CAAqC,GACjDjE,QAAAgE,GAAAhE,QAAAiE,GAAAjE,QAAAkE,KAAAA,IAAAlE,EAAA,EAAA;AAAA,MAAAuM;AAAA,EAAAvM,EAAA,EAAA,MAAA2C,uBAAAC,IAAA,2BAAA,KAGM2J,sBAACsQ,IAAA,EAA4B,MAAA,GAAA,CAAE,GAAI7c,QAAAuM,KAAAA,IAAAvM,EAAA,EAAA;AAE/B,QAAAwM,IAAA5E,MAAiB;AAAO,MAAA6E;AAAA,EAAAzM,UAAAkc,KACtBzP,IAAAA,MAAMyP,EAAqB,OAAO,GAAClc,QAAAkc,GAAAlc,QAAAyM,KAAAA,IAAAzM,EAAA,EAAA;AAAA,MAAA2N;AAAA,EAAA3N,EAAA,EAAA,MAAAwM,KAAAxM,UAAAyM,KALjDkB,IAAA,gBAAAxJ,EAACoX,IAAA,EACI,IAAA,SACG,MAAAhP,GACA,OAAA,SACI,UAAAC,GACE,YAAAC,EAAAA,CAAmC,GAC/CzM,QAAAwM,GAAAxM,QAAAyM,GAAAzM,QAAA2N,KAAAA,IAAA3N,EAAA,EAAA;AAAA,MAAA6N;AAAA,EAAA7N,EAAA,EAAA,MAAA2C,uBAAAC,IAAA,2BAAA,KACFiL,IAAA,gBAAA1J,EAAAkY,EAAA,WAAA,CAAA,CAAA,GAAkBrc,QAAA6N,KAAAA,IAAA7N,EAAA,EAAA;AAAA,MAAA8N;AAAA,EAAA9N,EAAA,EAAA,MAAA2C,uBAAAC,IAAA,2BAAA,KAGVkL,sBAACgP,IAAA,EAAqB,MAAA,GAAA,CAAE,GAAI9c,QAAA8N,KAAAA,IAAA9N,EAAA,EAAA;AAAA,MAAA+N;AAAA,EAAA/N,EAAA,EAAA,MAAA8b,KAAA9b,UAAAmc,KAFpCpO,IAAA,gBAAA5J,EAACoX,IAAA,EACI,IAAA,cACG,MAAAzN,GACA,OAAA,cACIgO,UAAAA,GACEK,YAAAA,EAAAA,CAAW,GACvBnc,QAAA8b,GAAA9b,QAAAmc,GAAAnc,QAAA+N,KAAAA,IAAA/N,EAAA,EAAA;AAAA,MAAAgO;AAAA,EAAAhO,EAAA,EAAA,MAAA2C,uBAAAC,IAAA,2BAAA,KAGMoL,sBAAC+O,IAAA,EAAqB,MAAA,GAAA,CAAE,GAAI/c,QAAAgO,KAAAA,IAAAhO,EAAA,EAAA;AAAA,MAAAmO;AAAA,EAAAnO,EAAA,EAAA,MAAA+b,KAAA/b,UAAAoc,KAFpCjO,IAAA,gBAAAhK,EAACoX,IAAA,EACI,IAAA,gBACG,MAAAvN,GACA,OAAA,gBACI+N,UAAAA,GACEK,YAAAA,EAAAA,CAAa,GACzBpc,QAAA+b,GAAA/b,QAAAoc,GAAApc,QAAAmO,KAAAA,IAAAnO,EAAA,EAAA;AAAA,MAAAoO;AAAA,SAAApO,UAAA2N,KAAA3N,EAAA,EAAA,MAAA+N,KAAA/N,EAAA,EAAA,MAAAmO,KAAAnO,EAAA,EAAA,MAAA8C,KAAA9C,UAAAwD,KAAAxD,EAAA,EAAA,MAAAkE,KA9DRkK,IAAA,gBAAAzE,EAAA0S,EAAA,MAAA,EACEhc,UAAAA;AAAAA,IAAAA;AAAAA,IAKA,gBAAA8D,kBACE,4BAAAkY,EAAA,SAAA,EAAmB,MAAA,SAAW,IAAA,MAAO,GAAA,KAAQ,KAAA,KAC3CvZ,UAAAA;AAAAA,MAAAA;AAAAA,MAMAC;AAAAA,MACCS;AAAAA,MAmBDU;AAAAA,MAOAyJ;AAAAA,MAOAE;AAAAA,MACAE;AAAAA,MAOAI;AAAAA,IAAAA,EAAAA,CAOF,EAAA,CACF;AAAA,EAAA,GACF,GAAYnO,QAAA2N,GAAA3N,QAAA+N,GAAA/N,QAAAmO,GAAAnO,QAAA8C,GAAA9C,QAAAwD,GAAAxD,QAAAkE,GAAAlE,QAAAoO,KAAAA,IAAApO,EAAA,EAAA,GAjEZoO;AAiEY,GCnJV4O,KAAuC;AAAA,EAC3CC,OAAO;AAAA,EACPC,QAAQ;AAAA,EACRC,SAAS;AAAA,EACT5Y,UAAU;AAAA,EACV6Y,kBAAkB;AAAA,EAClBC,SAAS;AACX,GAEMC,KAAuC;AAAA,EAC3CL,OAAO;AAAA,EACPC,QAAQ;AAAA,EACRC,SAAS;AAAA,EACT5Y,UAAU;AAAA,EACV6Y,kBAAkB;AAAA,EAClBC,SAAS;AACX,GAEME,KAAmF;AAAA,EACvFN,OAAO;AAAA,IAAEO,OAAO;AAAA,IAAcC,iBAAiB;AAAA,EAAA;AAAA,EAC/CN,SAAS;AAAA,IAAEK,OAAO;AAAA,IAAYC,iBAAiB;AAAA,EAAA;AACjD,GAEaC,KAAkBzb,CAAAA,MAAA;AAAA,QAAAjC,IAAAC,EAAA,CAAA,GAC7B;AAAA,IAAA2N,QAAAA;AAAAA,EAAAA,IAAmB3L;AAAM,MAAA5B;AAAA,EAAAL,SAAA4N,KACNvN,IAAAkd,GAAqB3P,CAAM,KAA3B;AAAA,IAAA+P,cAAgDL,GAAa1P,CAAM,KAAnB;AAAA,EAAA,GAAgC5N,OAAA4N,GAAA5N,OAAAK,KAAAA,IAAAL,EAAA,CAAA;AAAnG,QAAA4d,IAAmBvd,GAIdC,IAAA0c,GAAapP,CAAM,KAAnBA;AAA8B,MAAAtM;AAAA,SAAAtB,EAAA,CAAA,MAAA4d,KAAA5d,SAAAM,KADjCgB,IAAA,gBAAA6C,EAAC0Z,IAAA,EAAW,MAAA,MAAa,SAAA,UAAqB,YAAA,MAAOD,GAClDtd,UAAAA,EAAAA,CACH,GAAQN,OAAA4d,GAAA5d,OAAAM,GAAAN,OAAAsB,KAAAA,IAAAtB,EAAA,CAAA,GAFRsB;AAEQ,GCPNwc,KAAmBA,CAAClY,MAAqB;AAC7C,QAAMmY,IAAiBnY,EAASoY,YAAY,GAAG;AAC/C,SAAID,IAAiB,IAAU;AAAA,IAAEjX,UAAUlB;AAAAA,IAAUqY,SAAS;AAAA,EAAA,IACvD;AAAA,IAAEnX,UAAUlB,EAASsY,MAAMH,IAAiB,CAAC;AAAA,IAAGE,SAASrY,EAASsY,MAAM,GAAGH,CAAc;AAAA,EAAA;AAClG,GAEMI,KAAkBA,CAAC/F,GAA2BiC,GAAgCzU,MAAqB;AACvG,QAAM;AAAA,IAAEkB,UAAAA;AAAAA,IAAUmX,SAAAA;AAAAA,EAAAA,IAAYH,GAAiBlY,CAAQ;AACvD,SAAIyU,MAAa,UAAU,CAAC4D,IAAgB7F,EAAKH,OAG/C,gBAAAtO,EAACF,GAAA,EAAK,WAAU,mBAAkB,UAAQ,IACxC,UAAA;AAAA,IAAA,gBAAAtF,EAACsF,GAAA,EAAK,IAAG,QAAO,OAAM,cACnB3C,UAAAA,GACH;AAAA,IAAQ;AAAA,sBACP2C,GAAA,EAAK,IAAG,QAAO,OAAM,YACnBwU,UAAAA,EAAAA,CACH;AAAA,EAAA,GACF;AAEJ,GAEMG,KAAkBA,CAAC5X,MAMH;AACpB,QAAM;AAAA,IAAEqR,OAAAA;AAAAA,IAAOwC,UAAAA;AAAAA,IAAUgE,cAAAA;AAAAA,IAAcC,iBAAAA;AAAAA,IAAiBC,cAAAA;AAAAA,EAAAA,IAAiB/X;AAEzE,SAAOqR,EAAMvN,IAAK8N,CAAAA,MAAS;AACzB,QAAIA,EAAKJ,SAAS;AAChB,aAAO;AAAA,QACLxX,IAAI4X,EAAK5X;AAAAA,QACT8I,OAAO8O,EAAKH;AAAAA,QACZuG,aAAa;AAAA,QACbnG,UAAU+F,GAAgB;AAAA,UACxBvG,OAAOO,EAAKC,YAAY,CAAA;AAAA,UACxBgC,UAAAA;AAAAA,UACAgE,cAAAA;AAAAA,UACAC,iBAAAA;AAAAA,UACAC,cAAAA;AAAAA,QAAAA,CACD;AAAA,MAAA;AAIL,UAAM3Y,IAAWwS,EAAK5X,GAAGwZ,QAAQ,UAAU,EAAE,GACvCyE,IAAWH,IAAkB1Y,CAAQ,KAAK;AAAA,MAAE4V,MAAM,gBAAArX,EAACua,IAAA,EAAK,IAAIC,IAAU,SAAQ,QAAM;AAAA,MAAKnB,OAAO;AAAA,IAAA,GAChG5P,IAAS2Q,GAAclF,IAAIzT,CAAQ;AACzC,WAAO;AAAA,MACLpF,IAAI4X,EAAK5X;AAAAA,MACT8I,OAAO6U,GAAgB/F,GAAMiC,GAAUzU,CAAQ;AAAA,MAC/C4V,MAAMiD,EAASjD;AAAAA,MACfoD,WAAWH,EAASjB;AAAAA,MACpBqB,YAAYjR,IAAS,gBAAAzJ,EAACuZ,IAAA,EAAgB,QAAA9P,GAAe,IAAMnL;AAAAA,MAC3DiZ,YAAYA,MAAM2C,EAAazY,CAAQ;AAAA,IAAA;AAAA,EAE3C,CAAC;AACH,GAEakZ,KAAgB7c,CAAAA,MAAA;AAAA,QAAAjC,IAAAC,EAAA,EAAA,GAC3B;AAAA,IAAAsY,OAAAA;AAAAA,IAAAgC,cAAAA;AAAAA,IAAAF,UAAAA;AAAAA,IAAAC,aAAAA;AAAAA,IAAAE,mBAAAA;AAAAA,IAAA6D,cAAAA;AAAAA,IAAAU,qBAAAA;AAAAA,IAAAC,gBAAAA;AAAAA,IAAAV,iBAAAA;AAAAA,IAAAC,cAAAA;AAAAA,EAAAA,IAWItc,GACJuQ,IAAkBzR,EAAuB,IAAI;AAAE,MAAAV;AAAA,MAAAL,EAAA,CAAA,MAAAue,KAAAve,EAAA,CAAA,MAAAqe,KAAAre,EAAA,CAAA,MAAAuY,KAAAvY,EAAA,CAAA,MAAAse,KAAAte,SAAAqa,GAAA;AAC/C,UAAA4E,IAAiBxG,GAAsBF,GAAO8B,CAAQ;AACpCha,IAAAA,IAAA+d,GAAgB;AAAA,MAAAvG,OAASoH;AAAAA,MAAQ5E,UAAAA;AAAAA,MAAAgE,cAAAA;AAAAA,MAAAC,iBAAAA;AAAAA,MAAAC,cAAAA;AAAAA,IAAAA,CAAyD,GAACve,OAAAue,GAAAve,OAAAqe,GAAAre,OAAAuY,GAAAvY,OAAAse,GAAAte,OAAAqa,GAAAra,OAAAK;AAAAA,EAAA;AAAAA,IAAAA,IAAAL,EAAA,CAAA;AAA7G,QAAA+Z,IAAkB1Z,GAClB6e,IAAmB5E,EAAW5C,KAAAA,IAAX,sBAAA;AAA8D,MAAApX;AAAA,EAAAN,EAAA,CAAA,MAAA2C,uBAAAC,IAAA,2BAAA,KAKjDtC,sBAAC6e,IAAA,EAAa,MAAA,GAAA,CAAE,GAAInf,OAAAM,KAAAA,IAAAN,EAAA,CAAA;AAAA,MAAAsB;AAAA,EAAAtB,SAAA+e,KAOhCzd,IAAAgM,CAAAA,MAAWyR,EAAoBzR,EAAK8R,OAAOvf,KAAM,GAACG,OAAA+e,GAAA/e,OAAAsB,KAAAA,IAAAtB,EAAA,CAAA;AAAA,MAAA8C;AAAA,EAAA9C,EAAA,CAAA,MAAAsa,KAAAta,UAAAsB,KARlEwB,IAAA,gBAAAqB,EAACkb,IAAA,EAAmB,YAAA,GAAqB,mBAAA,OAAkB,aAAA,iBAAmB,IAAA,MAC5E,UAAA,gBAAAlb,EAACmb,IAAA,EAAyB,cAAAhf,GACxB,UAAA,gBAAA6D,EAACob,IAAA,EACM,MAAA,MACG,SAAA,cACG,cAAA,gBACC,aAAA,gBACLjF,OAAAA,GACG,UAAAhZ,EAAAA,CAAkD,GAEhE,GACF,GAAStB,OAAAsa,GAAAta,QAAAsB,GAAAtB,QAAA8C,KAAAA,IAAA9C,EAAA,EAAA;AAAA,MAAA+C;AAAA,EAAA/C,EAAA,EAAA,MAAA2C,uBAAAC,IAAA,2BAAA,KAOQG,IAAA;AAAA,IAAAgU,OAAS;AAAA,MAAAyI,WAAa;AAAA,IAAA;AAAA,EAAS,GAAGxf,QAAA+C,KAAAA,IAAA/C,EAAA,EAAA;AAAA,MAAAwD;AAAA,EAAAxD,EAAA,EAAA,MAAAkf,KAAAlf,UAAAwa,KAAAxa,EAAA,EAAA,MAAAgf,KAAAhf,EAAA,EAAA,MAAAuY,EAAApR,UAAAnH,UAAAua,KAAAva,EAAA,EAAA,MAAA+Z,KANnDvW,sBAAC2L,MACM,MAAA,KACA,MAAA,KACA,MAAA,KACF,IAAA,MACUqD,aAAAA,GACE,eAAAzP,GAEdwV,UAAAA,EAAKpR,SAAU,IACd,gBAAAhD,EAACsb,IAAA,EACW,UAAA,CAAC;AAAA,IAAAjf,IAAM;AAAA,IAAOqX,OAASkC;AAAAA,EAAAA,CAAW,GAC3B,iBAAA,CAAA,GAAIS,CAAiB,GACxB,cAAAD,IAAA,QAAuBA,CAAY,KAAnC,MACH,YAAA,QACGyE,cAAAA,GACd,YAAA,IACWxM,WAAAA,EAAAA,CAAS,sBAGrBzJ,GAAA,EAAO,IAAA,MAAQ,IAAA,MACd,UAAA,gBAAA5E,EAAC0F,IAAA,EAAkBqV,OAAAA,GAAiB,MAAA,MAAe,WAAA,QAAkB,YAAA,aAAA,IACvE,GAEJ,GAAalf,QAAAkf,GAAAlf,QAAAwa,GAAAxa,QAAAgf,GAAAhf,EAAA,EAAA,IAAAuY,EAAApR,QAAAnH,QAAAua,GAAAva,QAAA+Z,GAAA/Z,QAAAwD,KAAAA,IAAAxD,EAAA,EAAA;AAAA,MAAA+D;AAAA,SAAA/D,EAAA,EAAA,MAAA8C,KAAA9C,UAAAwD,KApCfO,sBAACsG,IAAA,EAAQ,GAAA,QAAY,MAAA,KAAS,MAAA,KAAM,GAAA,QAAW,KAAA,KAAa,UAAA,UAAY,IAAA,MACtEvH,UAAAA;AAAAA,IAAAA;AAAAA,IAYAU;AAAAA,EAAAA,GAwBF,GAAQxD,QAAA8C,GAAA9C,QAAAwD,GAAAxD,QAAA+D,KAAAA,IAAA/D,EAAA,EAAA,GArCR+D;AAqCQ,GCvHNsM,KAAcA,CAAC/I,MAAeA,EAAKmB,WAAWnB,EAAKkB,WAAW,WAC9DkX,KAAoBA,CAAClP,MAAkB,IAAIoI,IAAIpI,EAAMlG,IAAKhD,CAAAA,MAAS,CAAC+I,GAAY/I,CAAI,GAAGA,EAAKsG,MAAM,CAAC,CAAC,GACpG+R,KAAeA,CAACnP,MACpBA,EAAMoP,OACJ,CAACC,GAAOvY,OAAU;AAAA,EAChBb,WAAWoZ,EAAMpZ,aAAaa,EAAKb,aAAa;AAAA,EAChDC,WAAWmZ,EAAMnZ,aAAaY,EAAKZ,aAAa;AAClD,IACA;AAAA,EAAED,WAAW;AAAA,EAAGC,WAAW;AAAE,CAC/B,GAEIoZ,KAAqBA,CAACtZ,MAItB;AACJ,QAAM;AAAA,IAAEgK,OAAAA;AAAAA,IAAOuP,uBAAAA;AAAAA,IAAuB1F,UAAAA;AAAAA,EAAAA,IAAa7T,GAC7CwZ,IAAgBD,IAClBvP,EAAMyD,OAAQ3M,CAAAA,MAAS+I,GAAY/I,CAAI,EAAEtB,YAAAA,EAAc0L,SAASqO,CAAqB,CAAC,IACtFvP,GACEsJ,IAAeG,GAAoB+F,EAAc1V,IAAI+F,EAAW,GAAGgK,CAAQ,GAC3E4F,IAAc,IAAIrH,IAAIkB,EAAaxP,IAAI,CAACzD,GAAMoL,MAAU,CAACpL,GAAMoL,CAAK,CAAC,CAAC;AAE5E,SAAO,CAAC,GAAG+N,CAAa,EAAE9N,KAAK,CAAC4F,GAAMC,MAAU;AAC9C,UAAMmI,IAAYD,EAAY5G,IAAIhJ,GAAYyH,CAAI,CAAC,KAAKqI,OAAOC,kBACzDC,IAAaJ,EAAY5G,IAAIhJ,GAAY0H,CAAK,CAAC,KAAKoI,OAAOC;AACjE,WAAOF,IAAYG;AAAAA,EACrB,CAAC;AACH,GAEMC,KAAsBA,CAACC,GAA0BC,MACrDD,EAAe,CAAC,KAAKC,EAAc,CAAC,KAAK,MAErCC,KAAmB,CAAC,SAAS,UAAU,OAAO,GAE9CC,KAAoBA,MAAA;AAAA,QAAA1gB,IAAAC,EAAA,CAAA;AAAA,MAAAI;AAAA,SAAAL,EAAA,CAAA,MAAA2C,uBAAAC,IAAA,2BAAA,KACxBvC,IAAA,gBAAA8D,EAACkG,MAAW,MAAA,KAAS,MAAA,KAAO,IAAA,MAAO,GAAA,MAAS,KAAA,MAAU,MAAA,UAAmB,aAAA,QAAkB,cAAA,sBACxFoW,UAAAA,GAAgBnW,IAAKC,EAErB,EAAA,CACH,GAAQvK,OAAAK,KAAAA,IAAAL,EAAA,CAAA,GAJRK;AAIQ,GAGGsgB,KAAa1e,CAAAA,MAAA;AAAA,QAAAjC,IAAAC,EAAA,GAAA,GACxB;AAAA,IAAAuQ,OAAAA;AAAAA,IAAAoQ,kBAAAA;AAAAA,IAAAC,qBAAAxgB;AAAAA,IAAAygB,SAAAxgB;AAAAA,IAAAwK,YAAAA;AAAAA,IAAAwT,iBAAAA;AAAAA,EAAAA,IAA8Grc,GAA7E4e,IAAAxgB,MAAAoC,SAAA,OAAApC,GAA4BygB,IAAAxgB,MAAAmC,SAAA,KAAAnC,GAC7D,CAAAygB,GAAAC,CAAA,IAAwDpV,EAAsC,IAAI;AAAE,MAAAtK;AAAA,EAAAtB,EAAA,CAAA,MAAA2C,uBAAAC,IAAA,2BAAA,KACbtB,IAAA;AAAA,IAAAgV,aACxE;AAAA,IAAKE,cACJ;AAAA,EAAA,GACfxW,OAAAsB,KAAAA,IAAAtB,EAAA,CAAA;AAHD,QAAA,CAAAihB,GAAAC,CAAA,IAAoDtV,EAAmCtK,CAGtF,GACD;AAAA,IAAA8Y,iBAAAA;AAAAA,IAAAC,UAAAA;AAAAA,IAAAzS,cAAAA;AAAAA,IAAA0S,aAAAA;AAAAA,IAAAC,cAAAA;AAAAA,IAAAC,mBAAAA;AAAAA,IAAAC,kBAAAA;AAAAA,IAAAG,aAAAA;AAAAA,IAAAC,iBAAAA;AAAAA,IAAAC,gBAAAA;AAAAA,IAAAC,iBAAAA;AAAAA,IAAAC,sBAAAA;AAAAA,IAAAC,cAAAA;AAAAA,IAAAE,WAAAA;AAAAA,IAAAC,aAAAA;AAAAA,EAAAA,IAgBIlB,GAAAA;AAAqB,MAAAiH,GAAA5C,GAAA6C,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAjI,GAAAkI,GAAAC,GAAAC,GAAAC,IAAAhf,IAAAif;AAAA,MAAA/hB,EAAA,CAAA,MAAA4gB,KAAA5gB,EAAA,CAAA,MAAA6gB,KAAA7gB,EAAA,CAAA,MAAAwQ,KAAAxQ,EAAA,CAAA,MAAAwa,KAAAxa,EAAA,CAAA,MAAA8gB,KAAA9gB,EAAA,CAAA,MAAAsa,KAAAta,EAAA,CAAA,MAAAua,KAAAva,SAAAqa,GAAA;AAEzB,UAAA2H,IAAkBxR,EAAKlG,IAAK+F,EAAW;AACvCgR,IAAAA,IAAkBT,KAAAoB;AAClB,UAAAjC,IAA8BzF,EAAW5C,KAAAA,EAAO1R,YAAAA;AAChD0b,IAAAA,IAA0B3B,IACtBsB,EAASpN,OAAQpN,CAAAA,OAAUA,GAAIb,cAAc0L,SAAUqO,CAAqB,CACpE,IAFcsB,GAG1BG,IAAsB1B,GAAmB;AAAA,MAAAtP,OAAAA;AAAAA,MAAAuP,uBAAAA;AAAAA,MAAA1F,UAAAA;AAAAA,IAAAA,CAA0C;AAAE,QAAAtX;AAAA,IAAA/C,UAAAwQ,KAChEzN,KAAA2c,GAAkBlP,CAAK,GAACxQ,QAAAwQ,GAAAxQ,QAAA+C,MAAAA,KAAA/C,EAAA,EAAA,GAA7Cue,IAAqBxb,IACrBwe,IAA0BC,EAAalX,IAAK+F,EAAW;AACvD,UAAA4O,KAAiBxG,GAAsBiJ,GAAmBrH,CAAQ;AAClEZ,IAAAA,IAAkBY,MAAa,WAAWb,GAAyByF,EAAa,IAA9D,CAAA,GAClBwC,IAA4BC,EAAiB/J,KAAM,IAAI,GACvD2J,IAA4BC,EAAiB5J,KAAM,IAAI,GACvDkK,IACEtH,KAAAsG,KAAuCP,GAAoBiB,GAAmBG,CAAiB,GACjGC,IAAiBH,EAAara,SAAU,GACxCia,IAAuBrB,IAAA,wBAAA,cACvB+B,KAA2B,CAAChB,KAAD,CAAaa,GACxCI,IAAkBpC,GAAa6B,CAAa,GAC5CI,IAA2BnI,EAAStS,SAAU,KAAKqa,EAAara,SAAU;AAAE,QAAA3D;AAAA,IAAAxD,UAAAwa,KACnChX,KAAA0X,CAAAA,OAAcV,EAAiBzT,IAAKmU,EAAQ,GAAClb,QAAAwa,GAAAxa,QAAAwD,MAAAA,KAAAxD,EAAA,EAAA,GAAtFmhB,IAAyB1H,EAAShD,MAAOjT,EAA6C;AAAE,QAAAO;AAAA,IAAA/D,UAAAwa,KAC9CzW,KAAAke,CAAAA,OAAc,CAACzH,EAAiBzT,IAAKmU,EAAQ,GAAClb,QAAAwa,GAAAxa,QAAA+D,MAAAA,KAAA/D,EAAA,EAAA,GAA9D8C,KAAA2W,EAAShD,MAAO1S,EAA8C,GAAC/D,OAAA4gB,GAAA5gB,OAAA6gB,GAAA7gB,OAAAwQ,GAAAxQ,OAAAwa,GAAAxa,OAAA8gB,GAAA9gB,OAAAsa,GAAAta,OAAAua,GAAAva,OAAAqa,GAAAra,OAAAmhB,GAAAnhB,QAAAue,GAAAve,QAAAohB,GAAAphB,QAAAqhB,GAAArhB,QAAAshB,GAAAthB,QAAAuhB,GAAAvhB,QAAAwhB,GAAAxhB,QAAAyhB,GAAAzhB,QAAA0hB,GAAA1hB,QAAAyZ,GAAAzZ,QAAA2hB,GAAA3hB,QAAA4hB,GAAA5hB,QAAA6hB,GAAA7hB,QAAA8hB,IAAA9hB,QAAA8C,IAAA9C,QAAA+hB;AAAAA,EAAA;AAAAZ,IAAAA,IAAAnhB,EAAA,CAAA,GAAAue,IAAAve,EAAA,EAAA,GAAAohB,IAAAphB,EAAA,EAAA,GAAAqhB,IAAArhB,EAAA,EAAA,GAAAshB,IAAAthB,EAAA,EAAA,GAAAuhB,IAAAvhB,EAAA,EAAA,GAAAwhB,IAAAxhB,EAAA,EAAA,GAAAyhB,IAAAzhB,EAAA,EAAA,GAAA0hB,IAAA1hB,EAAA,EAAA,GAAAyZ,IAAAzZ,EAAA,EAAA,GAAA2hB,IAAA3hB,EAAA,EAAA,GAAA4hB,IAAA5hB,EAAA,EAAA,GAAA6hB,IAAA7hB,EAAA,EAAA,GAAA8hB,KAAA9hB,EAAA,EAAA,GAAA8C,KAAA9C,EAAA,EAAA,GAAA+hB,IAAA/hB,EAAA,EAAA;AAAzF,QAAAkiB,KAA0Bpf,IAC1Bqf,KAAyBX,EAAara,WAAY,KAAK8Z,EAAkB3K,aACzE8L,KAA0BZ,EAAara,WAAY,KAAK8Z,EAAkBzK,cAC1EsF,KAA4B,CAAC8F,KAAuBT,KAAAgB,IACpDpG,KAA8B,CAAC6F,KAAuBM,MAAAE;AAAwC,MAAArf,IAAAS;AAAA,EAAAxD,EAAA,EAAA,MAAAyhB,KAAAzhB,UAAAgb,KAAAhb,EAAA,EAAA,MAAAqa,KAEpFtX,KAAAA,MAAA;AACR,UAAAsf,IAAkBZ,IAAsBA,EAAmB3b,MAAO,IAAS,IAAzD,CAAA,GAClBwc,IAAa7J,GAAsB4I,GAAWhH,CAAQ;AACtDW,IAAAA,EAAqBX,MAAa,WAAWb,GAAyB8I,CAAS,IAA1D,CAAA,CAA2D;AAAA,EAAC,GAChF9e,MAACie,GAAqBzG,GAAsBX,CAAQ,GAACra,QAAAyhB,GAAAzhB,QAAAgb,GAAAhb,QAAAqa,GAAAra,QAAA+C,IAAA/C,QAAAwD,OAAAT,KAAA/C,EAAA,EAAA,GAAAwD,KAAAxD,EAAA,EAAA,IAJxDqB,GAAU0B,IAIPS,EAAqD;AAAC,MAAAO,IAAAC;AAAA,EAAAhE,EAAA,EAAA,MAAAshB,KAAAthB,EAAA,EAAA,MAAAyhB,KAAAzhB,EAAA,EAAA,MAAA6hB,KAAA7hB,UAAA+a,KAE/ChX,KAAAA,MAAA;AACR,UAAAwe,IAAkBjB,IAAsBA,EAAmBxb,MAAO,IAAS,IAAzD,CAAA,GAClB0c,IAAkBf,IAAsBA,EAAmB3b,MAAO,IAAS,IAAzD,CAAA;AAClB,IAAI+b,KAAwBG,EAAStQ,SAAUmQ,CAAoB,KACnE9G,EAAgBuF,GAAoB0B,GAAWX,CAAS,CAAC;AAAA,EAAC,GACzDrd,KAAA,CAACsd,GAAqBG,GAAqBI,GAAsB9G,CAAe,GAAC/a,QAAAshB,GAAAthB,QAAAyhB,GAAAzhB,QAAA6hB,GAAA7hB,QAAA+a,GAAA/a,QAAA+D,IAAA/D,QAAAgE,OAAAD,KAAA/D,EAAA,EAAA,GAAAgE,KAAAhE,EAAA,EAAA,IALpFqB,GAAU0C,IAKPC,EAAiF;AAAC,MAAAC;AAAA,EAAAjE,EAAA,EAAA,MAAAmb,KAAAnb,UAAAyZ,KAEtDxV,KAAAA,MAAA;AAC7BkX,IAAAA,EAAU1B,CAAS,GACnBuH,EAAwByB,EAA+D;AAAA,EAAC,GACzFziB,QAAAmb,GAAAnb,QAAAyZ,GAAAzZ,QAAAiE,MAAAA,KAAAjE,EAAA,EAAA;AAHD,QAAA0iB,KAA+Bze;AAG7B,MAAAC;AAAA,EAAAlE,UAAAob,KAE+BlX,KAAAA,MAAA;AAC/BkX,IAAAA,EAAAA,GACA4F,EAAwB2B,EAAiE;AAAA,EAAC,GAC3F3iB,QAAAob,GAAApb,QAAAkE,MAAAA,KAAAlE,EAAA,EAAA;AAHD,QAAA4iB,KAAiC1e;AAG/B,MAAAqI;AAAA,EAAAvM,EAAA,EAAA,MAAAuhB,KAAAvhB,UAAA6hB,KAAA7hB,EAAA,EAAA,MAAA+a,KAE4BxO,KAAAsW,CAAAA,MAAA;AAC5B,UAAAC,IAAqBjB,IAAuBN,EAAiBwB,QAASlB,CAAyB,IAA1E,IACrBmB,KAAkBzB,EAAiBwB,QAASlc,CAAI,GAChD0K,KAAkBuR,KAAgB,KAAKE,MAAa,KAAKA,KAAYF,IAAnD,OAAA;AAElB/H,IAAAA,EAAgBlU,CAAI,GACpBma,EAAwBiC,CAAAA,QAAc;AAAA,MAAAjS,QAAU;AAAA,MAAiBO,WAAAA;AAAAA,MAAA/Q,KAAkBS,IAAOT,MAAP,KAAoB;AAAA,MAACqG,MAAEA;AAAAA,IAAAA,EAAO;AAAA,EAAC,GACnH7G,QAAAuhB,GAAAvhB,QAAA6hB,GAAA7hB,QAAA+a,GAAA/a,QAAAuM,MAAAA,KAAAvM,EAAA,EAAA;AAPD,QAAAkjB,KAA8B3W,IAeNC,KAAA6U,EAASla,SAAU;AAAC,MAAAsF;AAAA,EAAAzM,EAAA,EAAA,MAAAoa,KAAApa,UAAAya,KAKfhO,KAAAA,MAAMgO,EAAiB,CAACL,CAAe,GAACpa,QAAAoa,GAAApa,QAAAya,GAAAza,QAAAyM,MAAAA,KAAAzM,EAAA,EAAA;AAAA,MAAA2N;AAAA,EAAA3N,EAAA,EAAA,MAAA4iB,MAAA5iB,EAAA,EAAA,MAAA4H,KAAA5H,UAAA0iB,MAAA1iB,EAAA,EAAA,MAAA+b,MAAA/b,EAAA,EAAA,MAAA8b,MAAA9b,EAAA,EAAA,MAAAoa,KAAApa,EAAA,EAAA,MAAA6a,KAAA7a,UAAA4a,KAAA5a,EAAA,EAAA,MAAAwM,MAAAxM,EAAA,EAAA,MAAAyM,MAAAzM,UAAAqa,KAP7D1M,uBAACiO,IAAA,EACkBxB,iBAAAA,GACH,cAAA5N,IACJ6N,UAAAA,GACIzS,cAAAA,GACOkU,qBAAAA,IACEC,uBAAAA,IACJ,mBAAAtP,IACDmO,kBAAAA,GACIC,sBAAAA,GACT6H,aAAAA,IACEE,eAAAA,IAAwB,GACvC5iB,QAAA4iB,IAAA5iB,QAAA4H,GAAA5H,QAAA0iB,IAAA1iB,QAAA+b,IAAA/b,QAAA8b,IAAA9b,QAAAoa,GAAApa,QAAA6a,GAAA7a,QAAA4a,GAAA5a,QAAAwM,IAAAxM,QAAAyM,IAAAzM,QAAAqa,GAAAra,QAAA2N,MAAAA,KAAA3N,EAAA,EAAA;AAAA,MAAA6N;AAAA,EAAA7N,EAAA,EAAA,MAAAohB,KAAAphB,UAAA8hB,MACDjU,KAAAiU,KACC,gBAAA3d,EAACsF,GAAA,EAAe,WAAA,mBAAwB,OAAA,YAAW,UAAA,IAChD2X,UAAAA,EAAAA,CACH,IAHD,MAIOphB,QAAAohB,GAAAphB,QAAA8hB,IAAA9hB,QAAA6N,MAAAA,KAAA7N,EAAA,EAAA;AAAA,MAAA8N;AAAA,EAAA9N,EAAA,EAAA,MAAA2N,MAAA3N,UAAA6N,MAlBVC,uBAACqV,IAAA,EAAW,KAAA,MAAU,MAAA,KACpBxV,UAAAA;AAAAA,IAAAA;AAAAA,IAaCE;AAAAA,EAAAA,GAKH,GAAS7N,QAAA2N,IAAA3N,QAAA6N,IAAA7N,QAAA8N,MAAAA,KAAA9N,EAAA,EAAA;AAAA,MAAA+N;AAAA,EAAA/N,EAAA,EAAA,MAAA+hB,EAAAtb,aAAAzG,EAAA,EAAA,MAAA+hB,EAAArb,aACTqH,KAAA,gBAAA5J,EAAC6K,IAAA,EAAmB,SAAA,SAAa,MAAA,SAAmB,WAAA+S,EAAStb,WAAuB,WAAAsb,EAASrb,UAAAA,CAAU,GAAI1G,EAAA,EAAA,IAAA+hB,EAAAtb,WAAAzG,EAAA,EAAA,IAAA+hB,EAAArb,WAAA1G,QAAA+N,MAAAA,KAAA/N,EAAA,EAAA;AAAA,MAAAgO;AAAA,EAAAhO,EAAA,EAAA,MAAA8N,MAAA9N,UAAA+N,MArB7GC,KAAA,gBAAArE,EAAC0V,IAAA,EAAe,SAAA,QAAyB,mBAAA,OAAkB,aAAA,iBAAmB,IAAA,MAAoB,gBAAA,iBAChGvR,UAAAA;AAAAA,IAAAA;AAAAA,IAoBAC;AAAAA,EAAAA,GACF,GAAS/N,QAAA8N,IAAA9N,QAAA+N,IAAA/N,QAAAgO,MAAAA,KAAAhO,EAAA,EAAA;AAAA,MAAAmO;AAAA,EAAAnO,EAAA,EAAA,MAAA+gB,KAAA/gB,EAAA,EAAA,MAAA4H,KAAA5H,UAAAohB,KAAAphB,EAAA,EAAA,MAAAwhB,KAAAxhB,EAAA,EAAA,MAAA2hB,KAAA3hB,EAAA,EAAA,MAAA8gB,KAAA9gB,EAAA,EAAA,MAAA8K,KAAA9K,EAAA,EAAA,MAAA6hB,KAAA7hB,UAAA+a,KACR5M,KAAA2S,sBACEJ,IAAA,CAAA,CAAiB,IAChBiB,IACF,gBAAAxd,EAAC4E,GAAA,EAAS,MAAA,KAAS,MAAA,KACjB,4BAAC8L,IAAA,EACQ2M,UACWK,kBAAAA,GACN/W,YAAAA,GACMiQ,kBAAAA,GACMmG,wBAAAA,GACNH,kBAAAA,GACJnZ,cAAAA,GAAY,EAAA,CAE9B,sBAECmB,GAAA,EAAS,MAAA,KAAS,MAAA,KAAO,IAAA,MAAQ,IAAA,MAAa,SAAA,QAAkB,YAAA,UAAwB,gBAAA,UAAY,IAAA,MACnG,UAAA,gBAAA5E,EAAC0F,IAAA,EAAkBuX,UAAc,EAAA,CACnC,GACDphB,QAAA+gB,GAAA/gB,QAAA4H,GAAA5H,QAAAohB,GAAAphB,QAAAwhB,GAAAxhB,QAAA2hB,GAAA3hB,QAAA8gB,GAAA9gB,QAAA8K,GAAA9K,QAAA6hB,GAAA7hB,QAAA+a,GAAA/a,QAAAmO,MAAAA,KAAAnO,EAAA,EAAA;AAAA,MAAAoO;AAAA,EAAApO,EAAA,EAAA,MAAAgO,MAAAhO,UAAAmO,MA1CHC,KAAA,gBAAAzE,EAACU,IAAA,EAAQ,GAAA,QAAY,MAAA,KAAS,MAAA,KAAS,MAAA,KAAO,IAAA,MAAS,KAAA,KACrD2D,UAAAA;AAAAA,IAAAA;AAAAA,IAuBCG;AAAAA,EAAAA,GAmBH,GAAQnO,QAAAgO,IAAAhO,QAAAmO,IAAAnO,QAAAoO,MAAAA,KAAApO,EAAA,EAAA;AA5CV,QAAAojB,KACEhV;AA4CA,MAAAC;AAAA,EAAArO,EAAA,EAAA,MAAAue,KAAAve,UAAAwa,KAAAxa,EAAA,EAAA,MAAA0hB,KAAA1hB,UAAAse,KAAAte,EAAA,EAAA,MAAA6hB,KAAA7hB,UAAAsa,KAAAta,EAAA,EAAA,MAAAkjB,MAAAljB,EAAA,EAAA,MAAA8a,KAAA9a,EAAA,EAAA,MAAAib,KAAAjb,WAAAqa,KASMhM,uBAACyQ,IAAA,EACQ4C,UACOG,cAAAA,GACJxH,UAAAA,GACGC,aAAAA,GACME,mBAAAA,GACL0I,cAAAA,IACOpI,qBAAAA,GACLG,mBACCqD,iBAAAA,GACHC,cAAAA,GAAY,GAC1Bve,QAAAue,GAAAve,QAAAwa,GAAAxa,QAAA0hB,GAAA1hB,QAAAse,GAAAte,QAAA6hB,GAAA7hB,QAAAsa,GAAAta,QAAAkjB,IAAAljB,QAAA8a,GAAA9a,QAAAib,GAAAjb,SAAAqa,GAAAra,SAAAqO,MAAAA,KAAArO,EAAA,GAAA;AAGO,QAAAuO,MAAC6L;AAAe,MAAA1L;AAAA,EAAA1O,WAAAya,KAMR/L,KAAA2U,CAAAA,MAAe5I,EAAiB,CAAC4I,CAAS,GAACrjB,SAAAya,GAAAza,SAAA0O,MAAAA,KAAA1O,EAAA,GAAA;AAAA,MAAA2O;AAAA,SAAA3O,EAAA,GAAA,MAAAojB,MAAApjB,EAAA,GAAA,MAAAqO,MAAArO,EAAA,GAAA,MAAAuO,MAAAvO,WAAA0O,MA1BlEC,uBAAC2U,IAAA,EAAU,MAAA,KAAS,MAAA,KAAS,MAAA,KAAO,IAAA,MAAS,KAAA,KAAgB,eAAA,eAC3D,4BAACC,IAAA,EACM,MAAA,KACA,MAAA,KACA,MAAA,KAEH,gBAAAlV,IAaY+U,kBACH,WAAA7U,IACI,eAAA,KACJ,WAAA,KACO,uBACN,aAAA,0BACF,WAAA,QACS,mBAAAG,IAA2C,GAElE,GAAO1O,SAAAojB,IAAApjB,SAAAqO,IAAArO,SAAAuO,IAAAvO,SAAA0O,IAAA1O,SAAA2O,MAAAA,KAAA3O,EAAA,GAAA,GA5BP2O;AA4BO;AAxKe,SAAApE,GAAAqP,GAAA;AAAA,SAGpB,gBAAAzV,EAACsG,IAAA,EAAsB,GAAA,QAAS,GAAA,QAAkB,YAAA,KAAiB,cAAA,KAAA,GAApDmP,CAAwD;AAAG;AAKtD,SAAA6I,GAAAxhB,GAAA;AAAA,SAmEgB;AAAA,IAAA+P,QAAU;AAAA,IAAQxQ,KAAOS,GAAOT,MAAP,KAAoB;AAAA,EAAA;AAAG;AAnEhE,SAAAmiB,GAAAa,GAAA;AAAA,SAwEgB;AAAA,IAAAxS,QAAU;AAAA,IAAUxQ,KAAOS,GAAOT,MAAP,KAAoB;AAAA,EAAA;AAAG;"}
|
|
1
|
+
{"version":3,"file":"diff.js","names":["DiffEditor","Editor","Monaco","lazy","Suspense","useEffect","useId","useRef","MonacoThemeData","useThemePreference","createCodeEditorPreloader","initialize","Promise","initialization","preloadCodeEditor","then","module","initializeMonaco","MonacoEditor","default","MonacoDiffEditor","customTheme","base","const","inherit","rules","colors","isMonacoTheme","value","MonacoApi","editor","defineTheme","name","data","setTheme","EDITOR_THEME_NAME","useEditorTheme","$","_c","themePreference","themePreferences","t0","t1","theme","id","preference","find","monacoTheme","useApplyEditorTheme","editorTheme","monacoRef","monaco","current","t2","monaco_0","configureCodeEditor","addCommand","key","handler","getAction","Pick","IEditorAction","KeyMod","KeyCode","CtrlCmd","KeyS","run","CodeEditorProps","language","fileName","defaultCode","code","isEditable","showLineNumbers","onChange","disableScroll","CodeEditor","props","undefined","editorId","modelPath","encodeURIComponent","applyEditorTheme","Symbol","for","enabled","t3","t4","scrollbar","vertical","horizontal","useShadows","alwaysConsumeMouseWheel","scrollBeyondLastLine","mouseWheelScrollSensitivity","overviewRulerLanes","t5","tabSize","fixedOverflowWidgets","minimap","fontSize","readOnly","lineNumbers","options","t6","t7","t8","t9","CodeDiffEditorProps","original","modified","CodeDiffEditor","originalEditable","renderSideBySide","useInlineViewWhenSpaceIsTooSmall","_","_c","lazy","Suspense","DiffDrawerProps","DiffViewerProps","Drawer","then","module","default","DiffDrawer","Viewer","DiffViewer","props","$","_c","t0","_c","useThemePreference","isGeneratedDiffPath","LARGE_DIFF_LINE_THRESHOLD","useDiffViewerStore","FileChangeBadge","preloadCodeEditor","initialization","initialize","module","MonacoEditor","lazy","Editor","MonacoDiffEditor","DiffEditor","customTheme","isMonacoTheme","value","EDITOR_THEME_NAME","useEditorTheme","$","c","t0","themePreference","themePreferences","t1","theme","preference","useApplyEditorTheme","monacoRef","useRef","editorTheme","monaco","useEffect","t2","monaco_0","configureCodeEditor","editor","CodeEditor","props","language","editorId","useId","modelPath","fileName","applyEditorTheme","isEditable","t3","showLineNumbers","t4","disableScroll","t5","options","t6","onChange","t7","t8","t9","code","defaultCode","Suspense","CodeDiffEditor","modified","original","Drawer","Viewer","DiffDrawer","DiffViewer","DiffBubble","isBinaryDiffPath"],"sources":["../src/components/diff-viewer/code-editor.tsx","../src/components/diff-viewer/lazy-diff.tsx"],"sourcesContent":["import { DiffEditor, Editor } from \"@monaco-editor/react\";\nimport type * as Monaco from \"monaco-editor\";\nimport { lazy, Suspense, useEffect, useId, useRef } from \"react\";\nimport type { MonacoThemeData } from \"../../theme\";\nimport { useThemePreference } from \"../../utils/theme-preference\";\n\nexport const createCodeEditorPreloader = (initialize: () => Promise<unknown>) => {\n let initialization: Promise<unknown> | undefined;\n\n return () => {\n initialization ??= initialize();\n return initialization;\n };\n};\n\nexport const preloadCodeEditor = createCodeEditorPreloader(() =>\n import(\"./monaco-browser\").then((module) => module.initializeMonaco()),\n);\n\nconst MonacoEditor = lazy(async () => {\n await preloadCodeEditor();\n return { default: Editor };\n});\n\nconst MonacoDiffEditor = lazy(async () => {\n await preloadCodeEditor();\n return { default: DiffEditor };\n});\n\nexport const customTheme = {\n base: \"vs-dark\" as const,\n inherit: true,\n rules: [],\n colors: {\n \"editor.background\": \"#0a0d15\",\n \"editor.foreground\": \"#f5f5f5\",\n \"editor.lineHighlightBackground\": \"#22252C\",\n \"editorCursor.foreground\": \"#A7A7A7\",\n \"editorWhitespace.foreground\": \"#3B3B3B\",\n \"editorIndentGuide.background\": \"#404040\",\n \"editorIndentGuide.activeBackground\": \"#707070\",\n },\n} satisfies MonacoThemeData;\n\nconst isMonacoTheme = (value: unknown): value is MonacoThemeData =>\n typeof value === \"object\" && value !== null && \"base\" in value && \"colors\" in value;\n\ntype MonacoApi = {\n editor: {\n defineTheme: (name: string, data: MonacoThemeData) => void;\n setTheme: (name: string) => void;\n };\n};\n\nconst EDITOR_THEME_NAME = \"ps-theme\";\n\nconst useEditorTheme = () => {\n const { themePreference, themePreferences } = useThemePreference();\n const preference = themePreferences.find((theme) => theme.id === themePreference);\n return isMonacoTheme(preference?.monacoTheme) ? preference.monacoTheme : customTheme;\n};\n\nconst useApplyEditorTheme = (editorTheme: MonacoThemeData) => {\n const monacoRef = useRef<MonacoApi | null>(null);\n\n useEffect(() => {\n const monaco = monacoRef.current;\n if (!monaco) return;\n\n monaco.editor.defineTheme(EDITOR_THEME_NAME, editorTheme);\n monaco.editor.setTheme(EDITOR_THEME_NAME);\n }, [editorTheme]);\n\n return (monaco: MonacoApi) => {\n monacoRef.current = monaco;\n monaco.editor.defineTheme(EDITOR_THEME_NAME, editorTheme);\n monaco.editor.setTheme(EDITOR_THEME_NAME);\n };\n};\n\nexport const configureCodeEditor = (\n editor: {\n addCommand: (key: number, handler: () => Promise<void>) => unknown;\n getAction: (id: string) => Pick<Monaco.editor.IEditorAction, \"run\"> | null;\n },\n monaco: { KeyMod: Pick<typeof Monaco.KeyMod, \"CtrlCmd\">; KeyCode: Pick<typeof Monaco.KeyCode, \"KeyS\"> },\n) => {\n editor.addCommand(monaco.KeyMod.CtrlCmd | monaco.KeyCode.KeyS, async () => {\n await editor.getAction(\"editor.action.formatDocument\")?.run();\n });\n};\n\ninterface CodeEditorProps {\n language: string;\n /** File name, including its extension, used to parse the editor model. */\n fileName?: string;\n defaultCode?: string;\n code?: string;\n isEditable: boolean;\n showLineNumbers?: boolean;\n onChange?: (code: string) => void;\n disableScroll?: boolean;\n}\n\nexport const CodeEditor = (props: CodeEditorProps) => {\n const {\n defaultCode,\n code,\n showLineNumbers,\n isEditable,\n language = \"javascript\",\n fileName,\n onChange,\n disableScroll,\n } = props;\n const editorId = useId();\n // Preserve the extension for JSX parsing while keeping each editor's model independent.\n const modelPath = fileName\n ? `inmemory://editor/${encodeURIComponent(editorId)}/${encodeURIComponent(fileName)}`\n : undefined;\n const editorTheme = useEditorTheme();\n const applyEditorTheme = useApplyEditorTheme(editorTheme);\n\n const options = {\n tabSize: 2,\n fixedOverflowWidgets: true,\n minimap: {\n enabled: false,\n },\n fontSize: 12,\n readOnly: !isEditable,\n lineNumbers: showLineNumbers ? \"on\" : \"off\",\n ...(disableScroll\n ? {\n scrollbar: {\n vertical: \"hidden\" as const,\n horizontal: \"hidden\" as const,\n useShadows: false,\n alwaysConsumeMouseWheel: false,\n },\n scrollBeyondLastLine: false,\n mouseWheelScrollSensitivity: 0,\n overviewRulerLanes: 0,\n }\n : {}),\n } as const;\n\n return (\n <Suspense fallback={null}>\n <MonacoEditor\n width=\"100%\"\n height=\"100%\"\n language={language}\n path={modelPath}\n defaultValue={defaultCode}\n value={code}\n theme={EDITOR_THEME_NAME}\n options={options}\n onChange={(value) => {\n onChange?.(value || \"\");\n }}\n beforeMount={(monaco) => {\n applyEditorTheme(monaco);\n }}\n onMount={(editor, monaco) => {\n applyEditorTheme(monaco);\n configureCodeEditor(editor, monaco);\n }}\n />\n </Suspense>\n );\n};\n\ninterface CodeDiffEditorProps {\n language: string;\n original: string;\n modified: string;\n showLineNumbers?: boolean;\n disableScroll?: boolean;\n}\n\nexport const CodeDiffEditor = (props: CodeDiffEditorProps) => {\n const { original, modified, showLineNumbers, language = \"javascript\", disableScroll } = props;\n const editorTheme = useEditorTheme();\n const applyEditorTheme = useApplyEditorTheme(editorTheme);\n\n const options = {\n tabSize: 2,\n minimap: {\n enabled: false,\n },\n fontSize: 12,\n readOnly: true,\n originalEditable: false,\n renderSideBySide: true,\n useInlineViewWhenSpaceIsTooSmall: true,\n lineNumbers: showLineNumbers ? \"on\" : \"off\",\n ...(disableScroll\n ? {\n scrollbar: {\n vertical: \"hidden\" as const,\n horizontal: \"hidden\" as const,\n useShadows: false,\n alwaysConsumeMouseWheel: false,\n },\n scrollBeyondLastLine: false,\n mouseWheelScrollSensitivity: 0,\n overviewRulerLanes: 0,\n }\n : {}),\n } as const;\n\n return (\n <Suspense fallback={null}>\n <MonacoDiffEditor\n width=\"100%\"\n height=\"100%\"\n language={language}\n original={original}\n modified={modified}\n theme={EDITOR_THEME_NAME}\n options={options}\n beforeMount={(monaco) => {\n applyEditorTheme(monaco);\n }}\n onMount={(_, monaco) => {\n applyEditorTheme(monaco);\n }}\n />\n </Suspense>\n );\n};\n","import { lazy, Suspense } from \"react\";\nimport type { DiffDrawerProps } from \"./diff-drawer\";\nimport type { DiffViewerProps } from \"./diff-viewer\";\n\nconst Drawer = lazy(() => import(\"./diff-drawer\").then((module) => ({ default: module.DiffDrawer })));\nconst Viewer = lazy(() => import(\"./diff-viewer\").then((module) => ({ default: module.DiffViewer })));\n\n// Diff parsing loads its syntax languages. Keep it out of the initial workbench module graph.\nexport const DiffDrawer = (props: DiffDrawerProps) => (\n <Suspense fallback={null}>\n <Drawer {...props} />\n </Suspense>\n);\n\nexport const DiffViewer = (props: DiffViewerProps) => (\n <Suspense fallback={null}>\n <Viewer {...props} />\n </Suspense>\n);\n"],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { EmptyState as e, VStack as t } from "@chakra-ui/react";
|
|
2
|
+
import { c as n } from "react/compiler-runtime";
|
|
3
|
+
import { jsx as r, jsxs as i } from "react/jsx-runtime";
|
|
4
|
+
import * as a from "react";
|
|
5
|
+
//#region src/components/primitives/empty-state.tsx
|
|
6
|
+
var o = a.forwardRef(function(a, o) {
|
|
7
|
+
let s = n(19), c, l, u, d, f;
|
|
8
|
+
s[0] === a ? (c = s[1], l = s[2], u = s[3], d = s[4], f = s[5]) : ({title: f, description: l, icon: u, children: c, ...d} = a, s[0] = a, s[1] = c, s[2] = l, s[3] = u, s[4] = d, s[5] = f);
|
|
9
|
+
let p;
|
|
10
|
+
s[6] === u ? p = s[7] : (p = u && /* @__PURE__ */ r(e.Indicator, { children: u }), s[6] = u, s[7] = p);
|
|
11
|
+
let m;
|
|
12
|
+
s[8] !== l || s[9] !== f ? (m = l ? /* @__PURE__ */ i(t, {
|
|
13
|
+
textAlign: "center",
|
|
14
|
+
children: [/* @__PURE__ */ r(e.Title, {
|
|
15
|
+
fontWeight: "normal",
|
|
16
|
+
children: f
|
|
17
|
+
}), /* @__PURE__ */ r(e.Description, { children: l })]
|
|
18
|
+
}) : /* @__PURE__ */ r(e.Title, {
|
|
19
|
+
fontWeight: "normal",
|
|
20
|
+
children: f
|
|
21
|
+
}), s[8] = l, s[9] = f, s[10] = m) : m = s[10];
|
|
22
|
+
let h;
|
|
23
|
+
s[11] !== c || s[12] !== p || s[13] !== m ? (h = /* @__PURE__ */ i(e.Content, { children: [
|
|
24
|
+
p,
|
|
25
|
+
m,
|
|
26
|
+
c
|
|
27
|
+
] }), s[11] = c, s[12] = p, s[13] = m, s[14] = h) : h = s[14];
|
|
28
|
+
let g;
|
|
29
|
+
return s[15] !== o || s[16] !== d || s[17] !== h ? (g = /* @__PURE__ */ r(e.Root, {
|
|
30
|
+
ref: o,
|
|
31
|
+
...d,
|
|
32
|
+
children: h
|
|
33
|
+
}), s[15] = o, s[16] = d, s[17] = h, s[18] = g) : g = s[18], g;
|
|
34
|
+
});
|
|
35
|
+
//#endregion
|
|
36
|
+
export { o as t };
|
|
37
|
+
|
|
38
|
+
//# sourceMappingURL=empty-state-3mVV_pV-.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"empty-state-3mVV_pV-.js","names":["EmptyState","ChakraEmptyState","VStack","React","EmptyStateProps","RootProps","title","description","icon","ReactNode","forwardRef","HTMLDivElement","props","ref","$","_c","children","rest","t0","t1","t2","t3","EmptyState","_c","ChakraEmptyState","React","EmptyState$1","$","c","children","description","icon","rest","title","props","t0","EmptyState","t1","VStack","t2","t3","ref"],"sources":["../src/components/primitives/empty-state.tsx"],"sourcesContent":["import { EmptyState as ChakraEmptyState, VStack } from \"@chakra-ui/react\";\nimport * as React from \"react\";\n\n/** Centered empty-state message with optional icon, description, and follow-up actions. */\nexport interface EmptyStateProps extends ChakraEmptyState.RootProps {\n /** Primary empty-state message. */\n title: string;\n /** Supporting explanation shown below the title. */\n description?: string;\n /** Decorative or semantic icon shown above the message. */\n icon?: React.ReactNode;\n}\n\nexport const EmptyState = React.forwardRef<HTMLDivElement, EmptyStateProps>(function EmptyState(props, ref) {\n const { title, description, icon, children, ...rest } = props;\n return (\n <ChakraEmptyState.Root ref={ref} {...rest}>\n <ChakraEmptyState.Content>\n {icon && <ChakraEmptyState.Indicator>{icon}</ChakraEmptyState.Indicator>}\n {description ? (\n <VStack textAlign=\"center\">\n <ChakraEmptyState.Title fontWeight=\"normal\">{title}</ChakraEmptyState.Title>\n <ChakraEmptyState.Description>{description}</ChakraEmptyState.Description>\n </VStack>\n ) : (\n <ChakraEmptyState.Title fontWeight=\"normal\">{title}</ChakraEmptyState.Title>\n )}\n {children}\n </ChakraEmptyState.Content>\n </ChakraEmptyState.Root>\n );\n});\n"],"mappings":";;;;;AAaA,IAAaA,IAAaG,EAAMO,WAA4C,SAAAE,GAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAAAC,GAAAT,GAAAC,GAAAS,GAAAX;CAAA,AAAAQ,EAAA,OAAAF,KACZI,IAAAF,EAAA,IAAAP,IAAAO,EAAA,IAAAN,IAAAM,EAAA,IAAAG,IAAAH,EAAA,IAAAR,IAAAQ,EAAA,OAA9D,iDAAA,GAAAG,KAAwDL,GAAME,EAAA,KAAAF,GAAAE,EAAA,KAAAE,GAAAF,EAAA,KAAAP,GAAAO,EAAA,KAAAN,GAAAM,EAAA,KAAAG,GAAAH,EAAA,KAAAR;CAAA,IAAAY;CAAA,AAAAJ,EAAA,OAAAN,IAIgBU,IAAAJ,EAAA,MAAvEI,IAAAV,KAAQ,kBAAAgB,EAAA,WAAA,EAAA,UAA6BhB,EAAK,CAAA,GAA6BM,EAAA,KAAAN,GAAAM,EAAA,KAAAI;CAAA,IAAAC;CAAA,AAAAL,EAAA,OAAAP,KAAAO,EAAA,OAAAR,KACvEa,IAAAZ,IACC,kBAAC+B,GAAD;EAAkB,WAAA;EAAlB,UAAA,CACE,kBAAAd,EAAA,OAAA;GAAmC,YAAA;GAAUlB,UAAAA;EAAM,CAAA,GACnD,kBAAAkB,EAAA,aAAA,EAAA,UAA+BjB,EAAY,CAAA,CAFtC;CAKP,CAAA,IAAA,kBAAAiB,EAAA,OAAA;EAAmC,YAAA;EAAUlB,UAAAA;CAAM,CAAA,GACpDQ,EAAA,KAAAP,GAAAO,EAAA,KAAAR,GAAAQ,EAAA,MAAAK,KAAAA,IAAAL,EAAA;CAAA,IAAAM;CAAA,AAAAN,EAAA,QAAAE,KAAAF,EAAA,QAAAI,KAAAJ,EAAA,QAAAK,KATHC,IAAA,kBAAAI,EAAA,SAAA,EAAA,UAAA;EACGN;EACAC;EAQAH;CACH,EAAA,CAAA,GAA2BF,EAAA,MAAAE,GAAAF,EAAA,MAAAI,GAAAJ,EAAA,MAAAK,GAAAL,EAAA,MAAAM,KAAAA,IAAAN,EAAA;CAAA,IAAAO;CACL,OADKP,EAAA,QAAAD,KAAAC,EAAA,QAAAG,KAAAH,EAAA,QAAAM,KAZ7BC,IAAA,kBAAAG,EAAA,MAAA;EAA4BX;EAAG,GAAMI;EACnCG,UAAAA;CAYF,CAAA,GAAwBN,EAAA,MAAAD,GAAAC,EAAA,MAAAG,GAAAH,EAAA,MAAAM,GAAAN,EAAA,MAAAO,KAAAA,IAAAP,EAAA,KAbxBO;AAawB,CAE3B"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { Badge as e } from "@chakra-ui/react";
|
|
2
|
+
import { c as t } from "react/compiler-runtime";
|
|
3
|
+
import { jsx as n } from "react/jsx-runtime";
|
|
4
|
+
import { create as r } from "zustand";
|
|
5
|
+
//#region src/components/diff-viewer/diff-viewer.store.ts
|
|
6
|
+
var i = r((e) => ({
|
|
7
|
+
isTreePanelOpen: !0,
|
|
8
|
+
viewMode: "nested",
|
|
9
|
+
diffViewMode: "unified",
|
|
10
|
+
searchQuery: "",
|
|
11
|
+
selectedPath: null,
|
|
12
|
+
expandedFolderIds: /* @__PURE__ */ new Set(),
|
|
13
|
+
setTreePanelOpen: (t) => e({ isTreePanelOpen: t }),
|
|
14
|
+
toggleTreePanel: () => e((e) => ({ isTreePanelOpen: !e.isTreePanelOpen })),
|
|
15
|
+
setViewMode: (t) => e({ viewMode: t }),
|
|
16
|
+
setDiffViewMode: (t) => e({ diffViewMode: t }),
|
|
17
|
+
setSearchQuery: (t) => e({ searchQuery: t }),
|
|
18
|
+
setSelectedPath: (t) => e({ selectedPath: t }),
|
|
19
|
+
setExpandedFolderIds: (t) => e({ expandedFolderIds: new Set(t) }),
|
|
20
|
+
toggleFolder: (t) => e((e) => {
|
|
21
|
+
let n = new Set(e.expandedFolderIds);
|
|
22
|
+
return n.has(t) ? n.delete(t) : n.add(t), { expandedFolderIds: n };
|
|
23
|
+
}),
|
|
24
|
+
expandAll: (t) => e({ expandedFolderIds: new Set(t) }),
|
|
25
|
+
collapseAll: () => e({ expandedFolderIds: /* @__PURE__ */ new Set() })
|
|
26
|
+
})), a = {
|
|
27
|
+
added: "A",
|
|
28
|
+
copied: "C",
|
|
29
|
+
deleted: "D",
|
|
30
|
+
modified: "M",
|
|
31
|
+
permissionChange: "M",
|
|
32
|
+
renamed: "R"
|
|
33
|
+
}, o = {
|
|
34
|
+
added: "green",
|
|
35
|
+
copied: "purple",
|
|
36
|
+
deleted: "red",
|
|
37
|
+
modified: "blue",
|
|
38
|
+
permissionChange: "yellow",
|
|
39
|
+
renamed: "orange"
|
|
40
|
+
}, s = {
|
|
41
|
+
added: {
|
|
42
|
+
color: "fg.success",
|
|
43
|
+
backgroundColor: "bg.success"
|
|
44
|
+
},
|
|
45
|
+
deleted: {
|
|
46
|
+
color: "fg.error",
|
|
47
|
+
backgroundColor: "bg.error"
|
|
48
|
+
}
|
|
49
|
+
}, c = (r) => {
|
|
50
|
+
let i = t(5), { change: c } = r, l;
|
|
51
|
+
i[0] === c ? l = i[1] : (l = s[c] ?? { colorPalette: o[c] ?? "gray" }, i[0] = c, i[1] = l);
|
|
52
|
+
let u = l, d = a[c] ?? c, f;
|
|
53
|
+
return i[2] !== u || i[3] !== d ? (f = /* @__PURE__ */ n(e, {
|
|
54
|
+
size: "xs",
|
|
55
|
+
variant: "subtle",
|
|
56
|
+
flexShrink: 0,
|
|
57
|
+
...u,
|
|
58
|
+
children: d
|
|
59
|
+
}), i[2] = u, i[3] = d, i[4] = f) : f = i[4], f;
|
|
60
|
+
};
|
|
61
|
+
//#endregion
|
|
62
|
+
export { i as n, c as t };
|
|
63
|
+
|
|
64
|
+
//# sourceMappingURL=file-change-badge-0QFNv82B.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-change-badge-0QFNv82B.js","names":["create","ChangedFilesViewMode","DiffViewMode","DiffViewerState","isTreePanelOpen","viewMode","diffViewMode","searchQuery","selectedPath","expandedFolderIds","Set","setTreePanelOpen","open","toggleTreePanel","setViewMode","setDiffViewMode","setSearchQuery","setSelectedPath","setExpandedFolderIds","folderIds","toggleFolder","folderId","expandAll","collapseAll","useDiffViewerStore","set","state","has","delete","add","Badge","changeLabels","Record","added","copied","deleted","modified","permissionChange","renamed","changeColors","changeSemanticStyles","color","backgroundColor","FileChangeBadge","props","$","_c","change","t0","colorPalette","colorProps","t1","t2","_c","useDiffViewerStore","create","set","state","folderIds","expandedFolderIds","folderId","changeLabels","changeColors","changeSemanticStyles","FileChangeBadge","$","c","props","t0","change","colorProps","t1","t2","Badge"],"sources":["../src/components/diff-viewer/diff-viewer.store.ts","../src/components/diff-viewer/file-change-badge.tsx"],"sourcesContent":["import { create } from \"zustand\";\nimport type { ChangedFilesViewMode, DiffViewMode } from \"./types\";\n\ninterface DiffViewerState {\n isTreePanelOpen: boolean;\n viewMode: ChangedFilesViewMode;\n diffViewMode: DiffViewMode;\n searchQuery: string;\n selectedPath: string | null;\n expandedFolderIds: Set<string>;\n setTreePanelOpen: (open: boolean) => void;\n toggleTreePanel: () => void;\n setViewMode: (viewMode: ChangedFilesViewMode) => void;\n setDiffViewMode: (diffViewMode: DiffViewMode) => void;\n setSearchQuery: (searchQuery: string) => void;\n setSelectedPath: (selectedPath: string | null) => void;\n setExpandedFolderIds: (folderIds: string[]) => void;\n toggleFolder: (folderId: string) => void;\n expandAll: (folderIds: string[]) => void;\n collapseAll: () => void;\n}\n\nexport const useDiffViewerStore = create<DiffViewerState>((set) => ({\n isTreePanelOpen: true,\n viewMode: \"nested\",\n diffViewMode: \"unified\",\n searchQuery: \"\",\n selectedPath: null,\n expandedFolderIds: new Set(),\n setTreePanelOpen: (isTreePanelOpen) => set({ isTreePanelOpen }),\n toggleTreePanel: () => set((state) => ({ isTreePanelOpen: !state.isTreePanelOpen })),\n setViewMode: (viewMode) => set({ viewMode }),\n setDiffViewMode: (diffViewMode) => set({ diffViewMode }),\n setSearchQuery: (searchQuery) => set({ searchQuery }),\n setSelectedPath: (selectedPath) => set({ selectedPath }),\n setExpandedFolderIds: (folderIds) => set({ expandedFolderIds: new Set(folderIds) }),\n toggleFolder: (folderId) =>\n set((state) => {\n const expandedFolderIds = new Set(state.expandedFolderIds);\n if (expandedFolderIds.has(folderId)) expandedFolderIds.delete(folderId);\n else expandedFolderIds.add(folderId);\n return { expandedFolderIds };\n }),\n expandAll: (folderIds) => set({ expandedFolderIds: new Set(folderIds) }),\n collapseAll: () => set({ expandedFolderIds: new Set() }),\n}));\n","import { Badge } from \"@chakra-ui/react\";\n\nconst changeLabels: Record<string, string> = {\n added: \"A\",\n copied: \"C\",\n deleted: \"D\",\n modified: \"M\",\n permissionChange: \"M\",\n renamed: \"R\",\n};\n\nconst changeColors: Record<string, string> = {\n added: \"green\",\n copied: \"purple\",\n deleted: \"red\",\n modified: \"blue\",\n permissionChange: \"yellow\",\n renamed: \"orange\",\n};\n\nconst changeSemanticStyles: Record<string, { color: string; backgroundColor: string }> = {\n added: { color: \"fg.success\", backgroundColor: \"bg.success\" },\n deleted: { color: \"fg.error\", backgroundColor: \"bg.error\" },\n};\n\nexport const FileChangeBadge = (props: { change: string }) => {\n const { change } = props;\n const colorProps = changeSemanticStyles[change] ?? { colorPalette: changeColors[change] ?? \"gray\" };\n\n return (\n <Badge size=\"xs\" variant=\"subtle\" flexShrink={0} {...colorProps}>\n {changeLabels[change] ?? change}\n </Badge>\n );\n};\n"],"mappings":";;;;;AAsBA,IAAawB,IAAqBxB,GAAyByB,OAAS;CAClErB,iBAAiB;CACjBC,UAAU;CACVC,cAAc;CACdC,aAAa;CACbC,cAAc;CACdC,mCAAmB,IAAIC,IAAI;CAC3BC,mBAAmBP,MAAoBqB,EAAI,EAAErB,mBAAgB,CAAC;CAC9DS,uBAAuBY,GAAKC,OAAW,EAAEtB,iBAAiB,CAACsB,EAAMtB,gBAAgB,EAAE;CACnFU,cAAcT,MAAaoB,EAAI,EAAEpB,YAAS,CAAC;CAC3CU,kBAAkBT,MAAiBmB,EAAI,EAAEnB,gBAAa,CAAC;CACvDU,iBAAiBT,MAAgBkB,EAAI,EAAElB,eAAY,CAAC;CACpDU,kBAAkBT,MAAiBiB,EAAI,EAAEjB,gBAAa,CAAC;CACvDU,uBAAuBC,MAAcM,EAAI,EAAEhB,mBAAmB,IAAIC,IAAIS,CAAS,EAAE,CAAC;CAClFC,eAAeC,MACbI,GAAKC,MAAU;EACb,IAAMjB,IAAoB,IAAIC,IAAIgB,EAAMjB,iBAAiB;EAGzD,OAFIA,EAAkBkB,IAAIN,CAAQ,IAAGZ,EAAkBmB,OAAOP,CAAQ,IACjEZ,EAAkBoB,IAAIR,CAAQ,GAC5B,EAAEZ,qBAAkB;CAC7B,CAAC;CACHa,YAAYH,MAAcM,EAAI,EAAEhB,mBAAmB,IAAIC,IAAIS,CAAS,EAAE,CAAC;CACvEI,mBAAmBE,EAAI,EAAEhB,mCAAmB,IAAIC,IAAI,EAAE,CAAC;AACzD,EAAE,GC3CIqB,IAAuC;CAC3CE,OAAO;CACPC,QAAQ;CACRC,SAAS;CACTC,UAAU;CACVC,kBAAkB;CAClBC,SAAS;AACX,GAEMC,IAAuC;CAC3CN,OAAO;CACPC,QAAQ;CACRC,SAAS;CACTC,UAAU;CACVC,kBAAkB;CAClBC,SAAS;AACX,GAEME,IAAmF;CACvFP,OAAO;EAAEQ,OAAO;EAAcC,iBAAiB;CAAa;CAC5DP,SAAS;EAAEM,OAAO;EAAYC,iBAAiB;CAAW;AAC5D,GAEaC,KAAkBC,MAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAC7B,EAAAC,cAAmBH,GAAMI;CAAA,AAAAH,EAAA,OAAAE,IAC0EC,IAAAH,EAAA,MAAhFG,IAAAR,EAAqBO,MAArB,EAAAE,cAAgDV,EAAaQ,MAAb,OAA+B,GAACF,EAAA,KAAAE,GAAAF,EAAA,KAAAG;CAAnG,IAAAE,IAAmBF,GAIdG,IAAApB,EAAagB,MAAbA,GAA8BK;CACzB,OADyBP,EAAA,OAAAK,KAAAL,EAAA,OAAAM,KADjCC,IAAA,kBAACqB,GAAD;EAAY,MAAA;EAAa,SAAA;EAAqB,YAAA;EAAC,GAAMvB;EAClDC,UAAAA;CADG,CAAA,GAEEN,EAAA,KAAAK,GAAAL,EAAA,KAAAM,GAAAN,EAAA,KAAAO,KAAAA,IAAAP,EAAA,IAFRO;AAEQ"}
|